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 { protected static Logger logger; public static final String PreFix = "pkg_"; private String id; private String name; private String hostName; private String remark; private MapList items; private PackageItemMeta masterMeta; private DataObject masterDataObject; private HostLimit hostLimit; static { logger = LogManager.getLogger(DataPackageMeta.class); } public DataPackageMeta() { items = new MapList(); } public DataPackageMeta(DataObject dataObject) { //1. package meta id = PreFix + ID.newValue(); name = dataObject.getDataName(); remark = "系统自动创建"; items = new MapList(); //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(); //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 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 getHostItemLimits(String typeCode, boolean includeReadOnly) { if (hostLimit == null) { return null; } return hostLimit.itemLimits(typeCode, includeReadOnly); } }