package foundation.dao;
|
|
import foundation.data.entity.Entity;
|
import foundation.data.loader.DataPackageMetaLoader;
|
import foundation.data.object.DataObject;
|
import foundation.data.object.DataObjectContainer;
|
import foundation.server.Container;
|
import foundation.util.Util;
|
|
public class DataPackageMetaContainer extends Container<DataPackageMeta> {
|
|
private static DataPackageMetaContainer instance;
|
|
|
private DataPackageMetaContainer() {
|
|
}
|
|
public synchronized static DataPackageMetaContainer getInstance() {
|
if (instance == null) {
|
instance = new DataPackageMetaContainer();
|
}
|
|
return instance;
|
}
|
|
@Override
|
public DataPackageMeta get(String name) {
|
DataPackageMeta result = super.get(name);
|
|
if (result == null) {
|
DataObject dataObject = DataObject.getInstance(name);
|
|
if (dataObject == null) {
|
return null;
|
}
|
|
//如果有dataObject,但是没有定义DataPackage,那么创建默认的DataPackageMeta
|
try {
|
synchronized (this) {
|
result = new DataPackageMeta(dataObject);
|
add(name, result);
|
}
|
}
|
catch (Exception e) {
|
e.printStackTrace();
|
}
|
}
|
|
return result;
|
}
|
|
public synchronized DataPackageMeta refresh(String dataName) throws Exception {
|
//1. 加载新的 data package 定义
|
DataPackageMeta result = DataPackageMetaLoader.loadOneDataPackage(dataName);
|
|
//2. 将新的 data package 放到 container中
|
add(result.getName(), result);
|
|
//3. 返回结果
|
return result;
|
}
|
|
public void createByName(String name) throws Exception {
|
if (Util.isEmpty(name)) {
|
return;
|
}
|
DataObject packageDataObject = DataObject.getInstance("sys_data_package");
|
Entity packageEntity = packageDataObject.createTableEntity(true);
|
String packageId = DataPackageMeta.PreFix + name;
|
packageEntity.set("id", packageId);
|
packageEntity.set("name", name);
|
packageEntity.set("remark", name);
|
|
DataObject packageDetailDataObject = DataObject.getInstance("sys_data_package_detail");
|
Entity packageDetailEntity = packageDetailDataObject.createTableEmptyEntity();
|
packageDetailEntity.set("id", name);
|
packageDetailEntity.set("parent_id", packageId);
|
packageDetailEntity.set("name", name);
|
packageDetailEntity.set("data_object", name);
|
packageDetailEntity.set("type_code", "Master");
|
|
packageDataObject.saveEntity(packageEntity);
|
packageDetailDataObject.saveEntity(packageDetailEntity);
|
|
DataObjectContainer.getInstance().createOne(name);
|
|
//2
|
DataPackageMeta packageMeta = new DataPackageMeta();
|
packageMeta.load(packageEntity);
|
PackageItemMeta itemMeta = new PackageItemMeta();
|
itemMeta.load(packageDetailEntity);
|
itemMeta.setDataObject();
|
|
packageMeta.loadOneDetail(itemMeta);
|
|
DataPackageMetaContainer.getInstance().add(packageMeta.getName(), packageMeta);
|
}
|
|
}
|