package foundation.server;
|
|
import java.util.HashMap;
|
import java.util.Iterator;
|
import java.util.Map;
|
|
import org.apache.logging.log4j.LogManager;
|
import org.apache.logging.log4j.Logger;
|
|
public class Container<T> implements Iterable<T> {
|
|
protected static Logger logger;
|
protected String name;
|
protected Map<String, T> items;
|
protected T cached;
|
protected String cachedKey;
|
protected boolean dirty;
|
|
static {
|
logger = LogManager.getLogger(Container.class);
|
}
|
|
public Container(){
|
name = this.getClass().getSimpleName();
|
items = new HashMap<String, T>();
|
}
|
|
public void add(String name, T item) throws Exception {
|
if (name != null) {
|
items.put(name.toLowerCase(), item);
|
}
|
}
|
|
public T get(String name) {
|
if (name != null) {
|
return items.get(name.toLowerCase());
|
}
|
else {
|
return null;
|
}
|
}
|
|
public T getCached(String key) {
|
if (key.equals(cachedKey)) {
|
return cached;
|
}
|
|
cached = get(key);
|
cachedKey = key;
|
|
return cached;
|
}
|
|
public Iterator<T> iterator() {
|
return new ContainerIterator<T>(this);
|
}
|
|
public String getName() {
|
return name;
|
}
|
|
public void setName(String name) {
|
this.name = name;
|
}
|
|
public boolean contains(String name) {
|
if (name == null) {
|
return false;
|
}
|
|
name = name.toLowerCase();
|
return items.containsKey(name);
|
}
|
|
public Map<String, T> getItemMap() {
|
return items;
|
}
|
|
public boolean isDirty() {
|
return dirty;
|
}
|
|
public void setDirty(boolean dirty) {
|
this.dirty = dirty;
|
}
|
|
public void clear() {
|
items.clear();
|
}
|
}
|