package com.kolakcc.loljclient.model; import java.util.ArrayList; import java.util.Date; import com.gvaneyck.rtmp.encoding.TypedObject; import com.kolakcc.loljclient.view.DebugView; public class ModelFromTO { TypedObject internalTypedObject; ArrayList<String> usedKeys; protected ModelFromTO() {} public ModelFromTO(TypedObject ito) { if (ito == null) { System.out.printf("This internal typed object is null! %s %n",this.getClass().getName()); } internalTypedObject = ito; usedKeys = new ArrayList<String>(); } protected void checkFields() { if (internalTypedObject != null) { for (String key : internalTypedObject.keySet()) { if (!usedKeys.contains(key)) { System.out.printf("%s: Field %s = %s of type %s is not mapped! %n", getClass().getName(), key, internalTypedObject.get(key), internalTypedObject.type); } } } } protected boolean containsKey(String key) { return internalTypedObject.keySet().contains(key); } protected void checkAndAddKey(String key) { if (internalTypedObject != null) if (!containsKey(key)) { System.out.printf("%s: Field %s of type %s does not exist! %n %s", getClass().getName(), key, internalTypedObject.type, internalTypedObject); } usedKeys.add(key); } protected Integer getInt(String key) { checkAndAddKey(key); return internalTypedObject.getInt(key); } protected Double getDouble(String key) { checkAndAddKey(key); return internalTypedObject.getDouble(key); } protected Date getDate(String key) { checkAndAddKey(key); return internalTypedObject.getDate(key); } protected boolean getBool(String key) { checkAndAddKey(key); return internalTypedObject.getBool(key); } protected String getString(String key) { checkAndAddKey(key); return internalTypedObject.getString(key); } protected TypedObject[] getArray(String key) { checkAndAddKey(key); Object[] array = internalTypedObject.getArray(key); TypedObject[] ret = new TypedObject[array.length]; for (int i = 0; i < array.length; i++) { ret[i] = (TypedObject) array[i]; } return ret; } protected TypedObject getTO(String key) { checkAndAddKey(key); return internalTypedObject.getTO(key); } protected Object getObject(String key) { checkAndAddKey(key); return internalTypedObject.get(key); } protected Object getProbablyNull(String key) { checkAndAddKey(key); Object ret = internalTypedObject.get(key); if (ret != null) { System.out.printf("Field %s was expected to be null, is actually %s (%s) %n", key, ret, internalTypedObject.type); } return ret; } public TypedObject getiTO() { return internalTypedObject; } public void debug() { DebugView.addObject(this); } }