package okj.easy.core.utils;
import java.util.ArrayList;
import java.util.Iterator;
import okj.easy.core.Screen;
import org.ege.utils.OnRecycleListener;
import com.badlogic.gdx.utils.ObjectMap;
/**
*
* @FileName: Bridge.java
* @CreateOn: Sep 15, 2012 - 11:15:15 AM
* @Author: TrungNT
*/
public class Bridge {
static OnRecycleListener<Bridge> listener = null;
// -------------------------------------------------------------
private String mName;
private ObjectMap<String, Object> mMap;
// -------------------------------------------------------------
/*-------------------------------------------------------------*/
Bridge (Class<?> firstClass, Class<?> secondClass) {
mName = firstClass.getName() + secondClass.getName();
mMap = new ObjectMap<String, Object>();
}
Bridge (String name) {
mName = name;
mMap = new ObjectMap<String, Object>();
}
Bridge set (String name) {
this.mName = name;
return this;
}
Bridge set (Class c1, Class c2) {
mName = c1.getName() + c2.getName();
return this;
}
public static void registerRecyleListener (OnRecycleListener<Bridge> listeners) {
if (listener != null)
return;
listener = listeners;
}
public static void unregisterRecycleListener () {
listener = null;
}
/*-------------------------------------------------------------*/
public int size () {
return this.mMap.size;
}
public String getName () {
return mName;
}
public boolean isEmpty () {
return mMap.size == 0 ? true : false;
}
public boolean containsKey (String key) {
return mMap.containsKey(key);
}
public boolean equals (Bridge obj) {
return obj.mName.equals(mName);
}
public boolean equals (Class<?> firstClass, Class<?> secondClass) {
return mName.equals(firstClass.getName() + secondClass.getName());
}
public boolean equals (String name) {
return mName.equals(name);
}
/*-------------------------------------------------------------*/
public ObjectMap<String, Object> getMap () {
return this.mMap;
}
public Iterator<String> keySet () {
return this.mMap.keys();
}
public Iterator<Object> valueSet () {
return this.mMap.values();
}
/*-------------------------------------------------------------*/
public void putAll (ObjectMap<String, Object> map) {
this.mMap.putAll(map);
}
public void putAll (Bridge bridge) {
this.mMap.putAll(bridge.getMap());
}
public void putBoolean (String key, boolean value) {
mMap.put(key, value);
}
public void putChar (String key, char value) {
mMap.put(key, value);
}
public void putShort (String key, short value) {
mMap.put(key, value);
}
public void putInt (String key, int value) {
mMap.put(key, value);
}
public void putLong (String key, long value) {
mMap.put(key, value);
}
public void putFloat (String key, float value) {
mMap.put(key, value);
}
public void putDouble (String key, double value) {
mMap.put(key, value);
}
public void putString (String key, String value) {
mMap.put(key, value);
}
public void putByte (String key, byte value) {
mMap.put(key, value);
}
public void putCharSequence (String key, CharSequence value) {
mMap.put(key, value);
}
public void putNextScreen (String key, Screen nextScreen) {
mMap.put(key, nextScreen);
}
public <K, V> void putMap (String key, ObjectMap<K, V> value) {
mMap.put(key, value);
}
/**
* You should more carefull about data type when use this method, I prefer
* to use : (int)1, 1.0f,1L ...
*
* @param key
* string key of object
* @param value
* your object
*/
public void put (String key, Object value) {
mMap.put(key, value);
}
/*-------------------------------------------------------------*/
/**
* Returns the value associated with the given key, or null if no mapping of
* the desired type exists for the given key or a null value is explicitly
* associated with the key.
*
* @param key
* a String, or null
* @return an ArrayList<String> value, or null
*/
public ArrayList<Integer> getIntegerArrayList (String key) {
Object o = mMap.get(key);
if (o == null) {
return null;
}
try {
return (ArrayList<Integer>) o;
} catch (ClassCastException e) {
return null;
}
}
/**
* Returns the value associated with the given key, or null if no mapping of
* the desired type exists for the given key or a null value is explicitly
* associated with the key.
*
* @param key
* a String, or null
* @return an ArrayList<String> value, or null
*/
public ArrayList<String> getStringArrayList (String key) {
Object o = mMap.get(key);
if (o == null) {
return null;
}
try {
return (ArrayList<String>) o;
} catch (ClassCastException e) {
return null;
}
}
/**
* Returns the value associated with the given key, or null if no mapping of
* the desired type exists for the given key or a null value is explicitly
* associated with the key.
*
* @param key
* a String, or null
* @return a boolean[] value, or null
*/
public boolean[] getBooleanArray (String key) {
Object o = mMap.get(key);
if (o == null) {
return null;
}
try {
return (boolean[]) o;
} catch (ClassCastException e) {
return null;
}
}
/**
* Returns the value associated with the given key, or null if no mapping of
* the desired type exists for the given key or a null value is explicitly
* associated with the key.
*
* @param key
* a String, or null
* @return a byte[] value, or null
*/
public byte[] getByteArray (String key) {
Object o = mMap.get(key);
if (o == null) {
return null;
}
try {
return (byte[]) o;
} catch (ClassCastException e) {
return null;
}
}
/**
* Returns the value associated with the given key, or null if no mapping of
* the desired type exists for the given key or a null value is explicitly
* associated with the key.
*
* @param key
* a String, or null
* @return a short[] value, or null
*/
public short[] getShortArray (String key) {
Object o = mMap.get(key);
if (o == null) {
return null;
}
try {
return (short[]) o;
} catch (ClassCastException e) {
return null;
}
}
/**
* Returns the value associated with the given key, or null if no mapping of
* the desired type exists for the given key or a null value is explicitly
* associated with the key.
*
* @param key
* a String, or null
* @return a char[] value, or null
*/
public char[] getCharArray (String key) {
Object o = mMap.get(key);
if (o == null) {
return null;
}
try {
return (char[]) o;
} catch (ClassCastException e) {
return null;
}
}
/**
* Returns the value associated with the given key, or null if no mapping of
* the desired type exists for the given key or a null value is explicitly
* associated with the key.
*
* @param key
* a String, or null
* @return an int[] value, or null
*/
public int[] getIntArray (String key) {
Object o = mMap.get(key);
if (o == null) {
return null;
}
try {
return (int[]) o;
} catch (ClassCastException e) {
return null;
}
}
/**
* Returns the value associated with the given key, or null if no mapping of
* the desired type exists for the given key or a null value is explicitly
* associated with the key.
*
* @param key
* a String, or null
* @return a long[] value, or null
*/
public long[] getLongArray (String key) {
Object o = mMap.get(key);
if (o == null) {
return null;
}
try {
return (long[]) o;
} catch (ClassCastException e) {
return null;
}
}
/**
* Returns the value associated with the given key, or null if no mapping of
* the desired type exists for the given key or a null value is explicitly
* associated with the key.
*
* @param key
* a String, or null
* @return a float[] value, or null
*/
public float[] getFloatArray (String key) {
Object o = mMap.get(key);
if (o == null) {
return null;
}
try {
return (float[]) o;
} catch (ClassCastException e) {
return null;
}
}
/**
* Returns the value associated with the given key, or null if no mapping of
* the desired type exists for the given key or a null value is explicitly
* associated with the key.
*
* @param key
* a String, or null
* @return a double[] value, or null
*/
public double[] getDoubleArray (String key) {
Object o = mMap.get(key);
if (o == null) {
return null;
}
try {
return (double[]) o;
} catch (ClassCastException e) {
return null;
}
}
/**
* Returns the value associated with the given key, or null if no mapping of
* the desired type exists for the given key or a null value is explicitly
* associated with the key.
*
* @param key
* a String, or null
* @return a String[] value, or null
*/
public String[] getStringArray (String key) {
Object o = mMap.get(key);
if (o == null) {
return null;
}
try {
return (String[]) o;
} catch (ClassCastException e) {
return null;
}
}
/**
* Returns the value associated with the given key, or null if no mapping of
* the desired type exists for the given key or a null value is explicitly
* associated with the key.
*
* @param key
* a String, or null
* @return a ObjectMap value, or null
*/
public <K, V> ObjectMap<K, V> getObjectMap (String key) {
Object o = mMap.get(key);
if (o == null)
return null;
try {
return (ObjectMap<K, V>) o;
} catch (ClassCastException e) {
return null;
}
}
/**
* Returns the value associated with the given key, or false if no mapping
* of the desired type exists for the given key.
*
* @param key
* a String
* @return a boolean value
*/
public boolean getBoolean (String key) {
return getBoolean(key, false);
}
/**
* Returns the value associated with the given key, or defaultValue if no
* mapping of the desired type exists for the given key.
*
* @param key
* a String
* @return a boolean value
*/
public boolean getBoolean (String key, boolean defaultValue) {
Object o = mMap.get(key);
if (o == null) {
return defaultValue;
}
try {
return (Boolean) o;
} catch (ClassCastException e) {
return defaultValue;
}
}
/**
* Returns the value associated with the given key, or (byte) 0 if no
* mapping of the desired type exists for the given key.
*
* @param key
* a String
* @return a byte value
*/
public byte getByte (String key) {
return getByte(key, (byte) 0);
}
/**
* Returns the value associated with the given key, or defaultValue if no
* mapping of the desired type exists for the given key.
*
* @param key
* a String
* @return a byte value
*/
public Byte getByte (String key, byte defaultValue) {
Object o = mMap.get(key);
if (o == null) {
return defaultValue;
}
try {
return (Byte) o;
} catch (ClassCastException e) {
return defaultValue;
}
}
/**
* Returns the value associated with the given key, or false if no mapping
* of the desired type exists for the given key.
*
* @param key
* a String
* @return a char value
*/
public char getChar (String key) {
return getChar(key, (char) 0);
}
/**
* Returns the value associated with the given key, or (char) 0 if no
* mapping of the desired type exists for the given key.
*
* @param key
* a String
* @return a char value
*/
public char getChar (String key, char defaultValue) {
Object o = mMap.get(key);
if (o == null) {
return defaultValue;
}
try {
return (Character) o;
} catch (ClassCastException e) {
return defaultValue;
}
}
/**
* Returns the value associated with the given key, or (short) 0 if no
* mapping of the desired type exists for the given key.
*
* @param key
* a String
* @return a short value
*/
public short getShort (String key) {
return getShort(key, (short) 0);
}
/**
* Returns the value associated with the given key, or defaultValue if no
* mapping of the desired type exists for the given key.
*
* @param key
* a String
* @return a short value
*/
public short getShort (String key, short defaultValue) {
Object o = mMap.get(key);
if (o == null) {
return defaultValue;
}
try {
return (Short) o;
} catch (ClassCastException e) {
return defaultValue;
}
}
/**
* Returns the value associated with the given key, or 0 if no mapping of
* the desired type exists for the given key.
*
* @param key
* a String
* @return an int value
*/
public int getInt (String key) {
return getInt(key, 0);
}
/**
* Returns the value associated with the given key, or defaultValue if no
* mapping of the desired type exists for the given key.
*
* @param key
* a String
* @return an int value
*/
public int getInt (String key, int defaultValue) {
Object o = mMap.get(key);
if (o == null) {
return defaultValue;
}
try {
return (Integer) o;
} catch (ClassCastException e) {
return defaultValue;
}
}
/**
* Returns the value associated with the given key, or 0L if no mapping of
* the desired type exists for the given key.
*
* @param key
* a String
* @return a long value
*/
public long getLong (String key) {
return getLong(key, 0L);
}
/**
* Returns the value associated with the given key, or defaultValue if no
* mapping of the desired type exists for the given key.
*
* @param key
* a String
* @return a long value
*/
public long getLong (String key, long defaultValue) {
Object o = mMap.get(key);
if (o == null) {
return defaultValue;
}
try {
return (Long) o;
} catch (ClassCastException e) {
return defaultValue;
}
}
/**
* Returns the value associated with the given key, or 0.0f if no mapping of
* the desired type exists for the given key.
*
* @param key
* a String
* @return a float value
*/
public float getFloat (String key) {
return getFloat(key, 0.0f);
}
/**
* Returns the value associated with the given key, or defaultValue if no
* mapping of the desired type exists for the given key.
*
* @param key
* a String
* @return a float value
*/
public float getFloat (String key, float defaultValue) {
Object o = mMap.get(key);
if (o == null) {
return defaultValue;
}
try {
return (Float) o;
} catch (ClassCastException e) {
return defaultValue;
}
}
/**
* Returns the value associated with the given key, or 0.0 if no mapping of
* the desired type exists for the given key.
*
* @param key
* a String
* @return a double value
*/
public double getDouble (String key) {
return getDouble(key, 0.0);
}
/**
* Returns the value associated with the given key, or defaultValue if no
* mapping of the desired type exists for the given key.
*
* @param key
* a String
* @return a double value
*/
public double getDouble (String key, double defaultValue) {
Object o = mMap.get(key);
if (o == null) {
return defaultValue;
}
try {
return (Double) o;
} catch (ClassCastException e) {
return defaultValue;
}
}
/**
* Returns the value associated with the given key, or null if no mapping of
* the desired type exists for the given key or a null value is explicitly
* associated with the key.
*
* @param key
* a String, or null
* @return a String value, or null
*/
public String getString (String key) {
Object o = mMap.get(key);
if (o == null) {
return null;
}
try {
return (String) o;
} catch (ClassCastException e) {
return null;
}
}
/**
* Returns the value associated with the given key, or null if no mapping of
* the desired type exists for the given key or a null value is explicitly
* associated with the key.
*
* @param key
* a String, or null
* @return a CharSequence value, or null
*/
public CharSequence getCharSequence (String key) {
Object o = mMap.get(key);
if (o == null) {
return null;
}
try {
return (CharSequence) o;
} catch (ClassCastException e) {
return null;
}
}
/**
* This method will return Object and you should carefull when cast it to
* class
*
* @param key
* @return
*/
public Object get (String key) {
return mMap.get(key);
}
public void clear () {
mMap.clear();
listener.RecycleObject(this);
}
}