package com.akjava.gwt.lib.client.json;
import com.akjava.gwt.lib.client.LogUtils;
import com.google.gwt.core.client.JavaScriptObject;
import com.google.gwt.core.client.JsArray;
import com.google.gwt.core.client.JsArrayBoolean;
import com.google.gwt.core.client.JsArrayNumber;
import com.google.gwt.json.client.JSONArray;
import com.google.gwt.json.client.JSONBoolean;
import com.google.gwt.json.client.JSONNumber;
import com.google.gwt.json.client.JSONObject;
import com.google.gwt.json.client.JSONString;
public class JSONObjectWrapper{
private JSONObject jsonObject;
public JSONObject jsonObject(){
return jsonObject;
}
public JSONObjectWrapper(JSONObject object) {
super();
this.jsonObject = object;
}
public void setArrayBoolean(String key,JsArrayBoolean value){
jsonObject.put(key, new JSONArray(value));
}
public JsArrayBoolean getArrayBoolean(String key){
if(!jsonObject.containsKey(key)){
return null;
}
JSONArray value=jsonObject.get(key).isArray();
if(value==null){
LogUtils.log("not array");
return null;
}
return value.getJavaScriptObject().cast();
}
public void setArrayNumber(String key,JsArrayNumber value){
jsonObject.put(key, new JSONArray(value));
}
public void setArray(String key,@SuppressWarnings("rawtypes") JsArray value){
jsonObject.put(key, new JSONArray(value));
}
public void setObject(String key,JSONObject value){
jsonObject.put(key, value);
}
public void setInt(String key,int value){
jsonObject.put(key, new JSONNumber(value));
}
public void setDouble(String key,double value){
jsonObject.put(key, new JSONNumber(value));
}
public void setBoolean(String key,boolean value){
jsonObject.put(key, JSONBoolean.getInstance(value));
}
public void setString(String key,String value){
jsonObject.put(key, new JSONString(value));
}
public JSONObjectWrapper getObject(String key){
if(!jsonObject.containsKey(key)){
return null;
}
JSONObject value=jsonObject.get(key).isObject();
if(value==null){
LogUtils.log("not object");
return null;
}
return new JSONObjectWrapper(value);
}
public JsArray<JavaScriptObject> getArray(String key){
if(!jsonObject.containsKey(key)){
return null;
}
JSONArray value=jsonObject.get(key).isArray();
if(value==null){
LogUtils.log("not array");
return null;
}
return value.getJavaScriptObject().cast();
}
public JsArrayNumber getArrayNumber(String key){
if(!jsonObject.containsKey(key)){
return null;
}
JSONArray value=jsonObject.get(key).isArray();
if(value==null){
LogUtils.log("not array");
return null;
}
return value.getJavaScriptObject().cast();
}
public double getDouble(String key,Double defaultValue){
if(!jsonObject.containsKey(key)){
return defaultValue;
}
JSONNumber value=jsonObject.get(key).isNumber();
if(value==null){
LogUtils.log("not number");
return defaultValue;
}
return value.doubleValue();
}
public int getInt(String key,Integer defaultValue){
if(!jsonObject.containsKey(key)){
return defaultValue;
}
JSONNumber value=jsonObject.get(key).isNumber();
if(value==null){
LogUtils.log("not number");
return defaultValue;
}
return (int)value.doubleValue();
}
public String getString(String key,String defaultValue){
if(!jsonObject.containsKey(key)){
return defaultValue;
}
JSONString value=jsonObject.get(key).isString();
if(value==null){
LogUtils.log("not string");
return defaultValue;
}
return value.stringValue();
}
public boolean getBoolean(String key,Boolean defaultValue){
if(!jsonObject.containsKey(key)){
return defaultValue;
}
JSONBoolean number=jsonObject.get(key).isBoolean();
if(number==null){
LogUtils.log("not boolean");
return defaultValue;
}
return number.booleanValue();
}
}