package net.sf.minuteProject.configuration.bean; import java.util.ArrayList; import java.util.Enumeration; import java.util.Hashtable; import java.util.Iterator; import java.util.List; import net.sf.minuteProject.configuration.bean.enrichment.group.Group; import net.sf.minuteProject.configuration.bean.model.data.Column; import net.sf.minuteProject.configuration.bean.model.data.Database; import net.sf.minuteProject.configuration.bean.model.data.Table; import net.sf.minuteProject.configuration.bean.model.data.View; import net.sf.minuteProject.utils.ColumnUtils; import net.sf.minuteProject.utils.CommonUtils; import net.sf.minuteProject.utils.DBTemplateUtils; import net.sf.minuteProject.utils.ModelUtils; import net.sf.minuteProject.utils.TableUtils; @SuppressWarnings("serial") public class BusinessPackage extends BusinessPackageAdapter { protected BusinessModel businessModel; protected List<Package> packages, packageViews, packageTransferEntities; private List<Table> tables, entities, transferEntities; private List<View> views; private List packageServices; private List services; void setPackageServices(Model model, Database database) { setPackages(model, database, getPackageServices(), database.getViews()); // packageServices = new ArrayList(); // Hashtable<String, Package> ht = new Hashtable(); // View[] views = database.getViews(); // for (int i = 0; i < views.length; i++) { // View view = views[i]; // view.setDatabase(database); // store (ht, model, view); // } // Enumeration enumeration = ht.elements(); // while (enumeration.hasMoreElements()) { // packageServices.add(enumeration.nextElement()); // } } private List<Package> getPackageServices() { if (packageServices==null) packageServices=new ArrayList(); return packageServices; } public List<View> getServices() { return getViews(); } void setPackageViews(Model model, Database database) { setPackages(model, database, getPackageViews(), database.getViews()); // packageViews = new ArrayList<Package>(); // Hashtable<String, Package> ht = new Hashtable(); // View[] views = database.getViews(); // for (int i = 0; i < views.length; i++) { // View view = views[i]; // view.setDatabase(database); // store (ht, model, view); // } // Enumeration<Package> enumeration = ht.elements(); // while (enumeration.hasMoreElements()) { // packageViews.add(enumeration.nextElement()); // } } void setPackages(Model model, Database database, List<Package> packs, Table[] t) { Hashtable<String, Package> ht = new Hashtable<String, Package>(); for (int i = 0; i < t.length; i++) { Table table = t[i]; table.setDatabase(database); store (ht, model, table); } Enumeration<Package> enumeration = ht.elements(); while (enumeration.hasMoreElements()) { packs.add(enumeration.nextElement()); } } public List<View> getViews() { if (views == null || views.isEmpty()) { views = new ArrayList<View>(); for (Iterator<Package> iter = getPackageViews().iterator(); iter.hasNext();) { for (Iterator<View> iter2 = ((Package) iter.next()).getListOfViews().iterator(); iter2.hasNext();) { views.add(iter2.next()); } } } return views; } void setPackages(Model model, Database database) { setPackages(model, database, getPackages(), database.getTables()); // Hashtable<String, Package> ht = new Hashtable<String, Package>(); // Table[] tables = database.getTables(); // for (int i = 0; i < tables.length; i++) { // Table table = tables[i]; // table.setDatabase(database); // store (ht, model, table); // } // Enumeration<Package> enumeration = ht.elements(); // while (enumeration.hasMoreElements()) { // getPackages().add(enumeration.nextElement()); // } } private void store (Hashtable<String, Package> ht, Model model, Table table) { if (ModelUtils.isToGenerate(businessModel, table)) { String packageName = CommonUtils.getBusinessPackageName(model, table); Package pack = (Package) ht.get(packageName); if (pack == null) { pack = new Package(); pack.setBusinessPackage(this); pack.setName(packageName); } if (table.getType().equals(Table.TABLE)) pack.addTable(table); if (table.getType().equals(Table.VIEW)) pack.addView((View)table); ht.put(packageName, pack); } } public void addTransferEntity (Model model, Table table) { getTransferEntities().add(table); String packageName = CommonUtils.getBusinessPackageName(model, table); boolean isTableAddedToPackage = false; for (Package pack : getPackageTransferEntities()) { if (pack.getName().equals(packageName)) { fillTableIntoPackage (table, pack, packageName); isTableAddedToPackage = true; } } if (isTableAddedToPackage==false) { Package pack = new Package(); fillTableIntoPackage (table, pack, packageName); getPackageTransferEntities().add(pack); } } private void fillTableIntoPackage(Table table, Package pack, String packageName) { table.setPackage(pack); pack.setName(packageName); pack.addTable(table); pack.setBusinessPackage(this); } public List<Table> getTables() { if (tables == null) { tables = new ArrayList<Table>(); for (Package pack : getPackages()) { for (Table table : pack.getListOfTables()) { tables.add(table); } } } return tables; } public List<Table> getEntities() { if (entities==null) { entities = new ArrayList<Table>(); entities.addAll(getTables()); entities.addAll(getViews()); } return entities; } public List<Table> refreshEntities() { List <Table> entities = new ArrayList<Table>(); entities.addAll(getTables()); entities.addAll(getViews()); return entities; } public void resetEntities () { entities=null; } public Table[] getEntitiesArray() { List<Table> tables = getEntities(); return (Table[]) tables.toArray(new Table[tables.size()]); } public List<Table> getTransferEntities() { if (transferEntities==null) transferEntities = new ArrayList<Table>(); return transferEntities; } public void addTransferEntity(Table transferEntity) { getTransferEntities().add(transferEntity); } public List<Package> getPackages() { if (packages == null) packages = new ArrayList<Package>(); return packages; } public List<Package> getPackageViews() { if (packageViews == null) packageViews = new ArrayList<Package>(); return packageViews; } public String getDefaultPackage() { if (defaultPackage==null) { Model model = businessModel.getModel(); if (model.isUsingDefaultName()) return "defaultpackage"; return businessModel.getModel().getName(); } return defaultPackage; } public List<Package> getPackageTransferEntities() { if (packageTransferEntities==null) packageTransferEntities = new ArrayList<Package>(); return packageTransferEntities; } public BusinessModel getBusinessModel() { return businessModel; } public void setBusinessModel(BusinessModel businessModel) { this.businessModel = businessModel; } }