package foundation.dictionary; import java.util.Iterator; import foundation.data.entity.IDictionary; import foundation.data.entity.IDictionaryBucket; import foundation.json.IJSONProvider; import foundation.json.IJSONWriter; import foundation.util.MapList; public class DictionaryBucket extends IDictionaryBucket implements Iterable, IJSONProvider { private static DictionaryBucket instance; private MapList items; private Dictionary cached; private DictionaryBucket() { items = new MapList(); } public static DictionaryBucket getInstance() { return instance; } public static DictionaryBucket newInstance() { return new DictionaryBucket(); } public void activate() { instance = this; IDictionaryBucket.registerActive(this); } @Override public IDictionary getDictionary(String id) { IDictionary dictionary = items.get(id); return dictionary; } public Dictionary getCachedOne(String id) { if (id == null) { return null; } if (cached != null && id.equals(cached.getId())) { return cached; } cached = (Dictionary)getDictionary(id); return cached; } public void loadOne(IDictionary dictionary) { items.add(dictionary.getId(), dictionary); } @Override public void writeJSON(IJSONWriter writer) { writer.beginArray(); for (IDictionary dictionary: items) { writer.beginObject(); dictionary.writeJSONBody(writer); writer.endObject(); } writer.endArray(); } @Override public Iterator iterator() { return items.iterator(); } }