package foundation.data.object; import foundation.data.loader.DataObjectLoader; import foundation.server.Container; import foundation.util.Util; public class DataObjectContainer extends Container { 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; } } }