package com.iambookmaster.client.beans; import java.io.Serializable; import java.util.ArrayList; import java.util.HashMap; import com.iambookmaster.client.common.JSONBuilder; import com.iambookmaster.client.common.JSONParser; import com.iambookmaster.client.exceptions.JSONException; import com.iambookmaster.client.locale.AppConstants; import com.iambookmaster.client.model.Model; public class ObjectBean implements Serializable{ private static final long serialVersionUID = 1L; private static final String JSON_ID = "id"; private static final String JSON_NAME = "name"; private static final String JSON_COMMENTS = "a"; private static final String JSON_DESCRIPTION = "b"; private static final String JSON_KEY = "c"; private static final String JSON_UNCOUNTABLE = "d"; private static final String JSON_ICON = "e"; private String id; private String name; private String misuse; private String masterComments; private int key; private boolean uncountable; private Picture icon; public int getKey() { return key; } public void setKey(int key) { this.key = key; } public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name==null ? "":name; } public void setName(String name) { this.name = name; } public boolean isUncountable() { return uncountable; } public void setUncountable(boolean uncountable) { this.uncountable = uncountable; } public void toJSON(JSONBuilder builder,int export) { builder.newRow(); builder.field(JSON_ID, id); builder.field(JSON_NAME, name); if (getDescription().length()>0) { builder.field(JSON_DESCRIPTION, getDescription()); } if (icon != null) { builder.field(JSON_ICON, icon.getId()); } if (export==Model.EXPORT_ALL) { if (getMasterComments().length()>0) { builder.field(JSON_COMMENTS, getMasterComments()); } if (key != 0) { builder.field(JSON_KEY, key); } if (uncountable) { builder.field(JSON_UNCOUNTABLE, 1); } } } public static ArrayList<ObjectBean> fromJSArray(Object object,JSONParser parser, HashMap<String, Picture> imagesMap) throws JSONException { int l = parser.length(object); ArrayList<ObjectBean> list = new ArrayList<ObjectBean>(); for (int i = 0; i < l; i++) { Object row = parser.getRow(object, i); list.add(fromJS(row,parser,imagesMap)); } return list; } public static ObjectBean fromJS(Object obj,JSONParser parser, HashMap<String, Picture> imagesMap)throws JSONException { ObjectBean object = new ObjectBean(); object.id = parser.propertyString(obj, JSON_ID); object.name = parser.propertyNoCheckString(obj, JSON_NAME); object.masterComments = parser.propertyNoCheckString(obj, JSON_COMMENTS); object.misuse = parser.propertyNoCheckString(obj, JSON_DESCRIPTION); object.key = parser.propertyNoCheckInt(obj, JSON_KEY); object.uncountable = parser.propertyNoCheckInt(obj, JSON_UNCOUNTABLE)==1; String id = parser.propertyNoCheckString(obj, JSON_ICON); if (id != null) { object.icon = imagesMap.get(id); if (object.icon==null) { throw new JSONException("Image "+id+" does not exist"); } } return object; } public String getDescription() { return misuse==null ? "":misuse; } public void setDescription(String description) { misuseMessages = null; this.misuse = description; } public String getMasterComments() { return masterComments==null ? "":masterComments; } public void setMasterComments(String comments) { this.masterComments = comments; } private transient String[] misuseMessages; private transient int misuseMessageCounter; public String getNextMissusedMessage(AppConstants appConstants) { if (misuseMessages != null) { //already initialized if (misuseMessageCounter>=misuseMessages.length) { misuseMessageCounter = 0; } int i = misuseMessageCounter; while (true) { if (misuseMessages[i].trim().length()!=0) { misuseMessageCounter = i + 1; return misuseMessages[i]; } i++; if (i>=misuseMessages.length) { i = 0; } if (i==misuseMessageCounter) { return appConstants.getDefaumtMissuseMessage(); } } } if (misuse==null || misuse.length()==0) { return appConstants.getDefaumtMissuseMessage(); } //has messages misuseMessages = misuse.split("\n"); return getNextMissusedMessage(appConstants); } public Picture getIcon() { return icon; } public void setIcon(Picture icon) { this.icon = icon; } }