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<IDictionary>, IJSONProvider {
|
|
private static DictionaryBucket instance;
|
private MapList<String, IDictionary> items;
|
private Dictionary cached;
|
|
private DictionaryBucket() {
|
items = new MapList<String, IDictionary>();
|
}
|
|
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<IDictionary> iterator() {
|
return items.iterator();
|
}
|
}
|