package foundation.data.loader; import foundation.dao.Filter; import foundation.data.entity.Entity; import foundation.data.entity.EntitySet; import foundation.data.getter.EntitySetGetter; import foundation.data.meta.template.PropertyTemplateBucket; import foundation.data.object.DataJoin; import foundation.data.object.DataJoins; import foundation.data.object.DataObject; import foundation.data.object.DataObjectContainer; import foundation.persist.NamedSQL; import foundation.persist.SQLRunner; import foundation.server.Initializer; public class DataObjectLoader extends Initializer { @Override public void startUp() throws Exception { // SQLRunner.formatOracleTables(); //1. load data object loadDataObject(); //2. load data object joins loadDataObjectJoins(); //3. build data object buildDataObjects(); //4.load data property template loadDataPropertyTemplate(); } private void loadDataPropertyTemplate() throws Exception { PropertyTemplateBucket templateBucket = PropertyTemplateBucket.getInstance(); templateBucket.loadTemplateAndIndex(); } @Override public void shutDown() throws Exception { } private void loadDataObject() throws Exception { DataObjectContainer objectContainer = DataObjectContainer.getInstance(); NamedSQL namedSQL = NamedSQL.getInstance("getDataObjectList"); EntitySet objectSet = SQLRunner.getEntitySet(namedSQL, new EntitySetGetter(null, null)); for (Entity entity: objectSet) { DataObject dataObject = new DataObject(); dataObject.load(entity); objectContainer.add(dataObject.getDataName(), dataObject); } } private void loadDataObjectJoins() throws Exception { NamedSQL namedSQL = NamedSQL.getInstance("getDataObjectJoinList"); EntitySet entitySet = namedSQL.getEntitySet(); for (Entity entity: entitySet) { DataJoin dataJoin = new DataJoin(); dataJoin.load(entity); if (!dataJoin.isActive()) { continue; } DataObject dataObject = DataObject.getInstance(dataJoin.getDataName()); if (dataObject == null) { continue; } dataObject.loadOneDataJoin(dataJoin); } } private void buildDataObjects() throws Exception { DataObjectContainer container = DataObjectContainer.getInstance(); for (DataObject dataObject: container) { dataObject.build(); } } public static DataObject loadOneDataObject(String name) throws Exception { DataObject dataObject = DataObject.getInstance("sys_data_object"); Filter filter = new Filter("table_name", name); Entity entity = dataObject.getTableEntity(filter); if (entity == null) { return null; } dataObject = new DataObject(); dataObject.load(entity); return dataObject; } public static DataJoins loadOneDataObjectDataJoins(String name) throws Exception { DataObject dataObject = DataObject.getInstance("sys_data_object_join"); Filter filter = new Filter("dataname", name); EntitySet entitySet = dataObject.getTableEntitySet(filter); if (entitySet == null || entitySet.isEmpty()) { return null; } DataJoins dataJoins = new DataJoins(); for (Entity entity: entitySet) { DataJoin dataJoin = new DataJoin(); dataJoin.load(entity); dataJoins.loadOne(dataJoin); } return dataJoins; } }