package foundation.dao;
|
|
import java.util.Iterator;
|
import java.util.Set;
|
|
import org.apache.logging.log4j.LogManager;
|
import org.apache.logging.log4j.Logger;
|
|
import foundation.data.entity.Entity;
|
import foundation.data.object.DataObject;
|
import foundation.util.ID;
|
import foundation.util.MapList;
|
import foundation.util.Util;
|
|
public class DataPackageMeta implements Iterable<PackageItemMeta> {
|
|
protected static Logger logger;
|
public static final String PreFix = "pkg_";
|
private String id;
|
private String name;
|
private String hostName;
|
private String remark;
|
private MapList<String, PackageItemMeta> items;
|
private PackageItemMeta masterMeta;
|
private DataObject masterDataObject;
|
private HostLimit hostLimit;
|
|
static {
|
logger = LogManager.getLogger(DataPackageMeta.class);
|
}
|
|
public DataPackageMeta() {
|
items = new MapList<String, PackageItemMeta>();
|
}
|
|
public DataPackageMeta(DataObject dataObject) {
|
//1. package meta
|
id = PreFix + ID.newValue();
|
name = dataObject.getDataName();
|
remark = "系统自动创建";
|
items = new MapList<String, PackageItemMeta>();
|
|
//2. package master detail meta
|
PackageItemMeta itemMeta = new PackageItemMeta(dataObject);
|
itemMeta.setType(PackageItemType.Master);
|
loadOneDetail(itemMeta);
|
}
|
|
public DataPackageMeta(PackageItemMeta itemMeta) {
|
//1. package meta
|
id = PreFix + ID.newValue();
|
name = itemMeta.getName();
|
remark = "系统自动创建";
|
items = new MapList<String, PackageItemMeta>();
|
|
//2. package master detail meta
|
loadOneDetail(itemMeta);
|
|
//3.
|
masterMeta = itemMeta;
|
masterDataObject = itemMeta.getDataObject();
|
}
|
|
public static DataPackageMeta getInstance(String dataName) {
|
DataPackageMetaContainer container = DataPackageMetaContainer.getInstance();
|
return container.get(dataName);
|
}
|
|
public void load(Entity entity) throws ClassNotFoundException {
|
id = entity.getString("id");
|
name = entity.getString("name");
|
hostName = entity.getString("host_name");
|
remark = entity.getString("remark");
|
|
if (Util.isEmpty(id)) {
|
id = name;
|
}
|
}
|
|
public void loadOneDetail(PackageItemMeta itemMeta) {
|
//1. add to items
|
String key = itemMeta.getName();
|
items.add(key, itemMeta);
|
|
//2. set master data object
|
PackageItemType type = itemMeta.getType();
|
|
if (PackageItemType.Master == type) {
|
masterMeta = itemMeta;
|
masterDataObject = itemMeta.getDataObject();
|
}
|
}
|
|
@Override
|
public Iterator<PackageItemMeta> iterator() {
|
return items.iterator();
|
}
|
|
public PackageItemMeta getItem(String name) {
|
return items.get(name);
|
}
|
|
public String getId() {
|
return id;
|
}
|
|
public String getName() {
|
return name;
|
}
|
|
public String getRemark() {
|
return remark;
|
}
|
|
public DataObject getMasterDataObject() {
|
return masterDataObject;
|
}
|
|
public PackageItemMeta getMasterMeta() {
|
return masterMeta;
|
}
|
|
public String getHostName() {
|
return hostName;
|
}
|
|
public int getItemCount() {
|
return items.size();
|
}
|
|
public void setHostLimit(HostLimit hostLimit) {
|
this.hostLimit = hostLimit;
|
}
|
|
public HostLimit getHostLimit() {
|
return hostLimit;
|
}
|
|
public boolean containsHostItemLimits() {
|
return hostLimit != null;
|
}
|
|
public Set<String> getHostItemLimits(String typeCode, boolean includeReadOnly) {
|
if (hostLimit == null) {
|
return null;
|
}
|
|
return hostLimit.itemLimits(typeCode, includeReadOnly);
|
}
|
|
}
|