package foundation.data.object;
|
|
import foundation.data.loader.DataObjectLoader;
|
import foundation.server.Container;
|
import foundation.util.Util;
|
|
public class DataObjectContainer extends Container<DataObject> {
|
|
private static DataObjectContainer instance;
|
|
|
private DataObjectContainer() {
|
|
}
|
|
public synchronized static DataObjectContainer getInstance() {
|
if (instance == null) {
|
instance = new DataObjectContainer();
|
}
|
|
return instance;
|
}
|
|
public DataObject get(String name, boolean force) {
|
if (name == null) {
|
return null;
|
}
|
|
DataObject result = super.get(name);
|
|
if (result != null || !force) {
|
return result;
|
}
|
|
return createOne(name);
|
}
|
|
@Override
|
public DataObject get(String name) {
|
if (name == null) {
|
return null;
|
}
|
|
DataObject result = super.get(name);
|
|
if (result != null) {
|
return result;
|
}
|
|
return createOne(name);
|
}
|
|
public DataObject refresh(String dataName) throws Exception {
|
if (name == null) {
|
return null;
|
}
|
|
DataObject result = DataObjectLoader.loadOneDataObject(dataName);
|
|
if (result == null) {
|
result = createOne(dataName);
|
}
|
|
synchronized (this) {
|
add(dataName, result);
|
}
|
|
return result;
|
}
|
|
public synchronized DataObject createOne(String name) {
|
if (Util.isEmpty(name)) {
|
return null;
|
}
|
|
synchronized (this) {
|
DataObject result = null;
|
|
try {
|
result = super.get(name);
|
|
if (result == null) {
|
result = DataObjectCreator.createDataObject(name);
|
this.add(name, result);
|
}
|
}
|
catch (Exception e) {
|
}
|
|
return result;
|
}
|
}
|
|
}
|