DataArrayJsonImpl.java
package eu.javaexperience.datareprez.jsonImpl;
import java.util.Iterator;
import org.json.JSONArray;
import org.json.JSONObject;
import eu.javaexperience.datareprez.abstractImpl.DataArrayAbstractImpl;
import eu.javaexperience.datareprez.abstractImpl.DataProtocol;
import eu.javaexperience.datareprez.convertFrom.DataReprezType;
import eu.javaexperience.text.Format;
public class DataArrayJsonImpl extends DataArrayAbstractImpl
{
final JSONArray arr;
public DataArrayJsonImpl(JSONArray arr)
{
this.arr = arr;
}
public DataArrayJsonImpl()
{
arr = new JSONArray();
}
@Override
public Object getImpl()
{
return arr;
}
@Override
public Iterator<Object> iterator()
{
return arr.iterator();
}
@Override
public DataReprezType getDataReprezType()
{
return DataReprezType.ARRAY;
}
@Override
public byte[] toBlob()
{
return arr.toString().getBytes();
}
@Override
public String toString()
{
return "DataArrayJsonImpl: "+arr;
}
public Class getCommonsClass()
{
return JSONObject.class;
}
@Override
public int size()
{
return arr.length();
}
@Override
protected <T> void setSubjectValue(int index, Class<T> cls, T value)
{
if(null == value && cls == null)
{
arr.remove(index);
}
else
{
Object in = DataCommonJsonImpl.wrapObjectToStore(value, cls);
if(null != in && byte[].class == cls)
{
in = Format.base64Encode((byte[]) in);
}
arr.put(index, null == in?JSONObject.NULL:in);
}
}
@Override
protected <T> T getValueAs(int index, Class<T> cls)
{
Object o = null;
if(index < arr.length())
{
o = arr.get(index);
}
return DataCommonJsonImpl.castToType(o, cls);
}
@Override
protected DataProtocol getProtocolHandler()
{
return DataCommonJsonImpl.PROTOCOL;
}
}