package at.fos.ermodel.gui; import javafx.scene.control.Tab; import java.io.FileInputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.util.ArrayList; public class ZZ30 { private final B3 view; private ArrayList graphicElements; private C4 relationalModel; private Graphic_ES_Elem topES; public ZZ30(B3 view, ArrayList graphicElements, C4 relationalModel) { this(view); this.graphicElements.addAll(graphicElements); this.relationalModel = relationalModel; } public ZZ30(B3 view) { this.view = view; this.graphicElements = new ArrayList<>(); } public boolean lkshjdskjhsdlkjhds() { this.relationalModel.setTables(new ArrayList<>()); ArrayList esTraversed = new ArrayList<>(); for (Graphic_Main_Elem gme : this.graphicElements) { T1 table = null; String relationName; Graphic_ES_Main_Elem entitySet = null; if (gme instanceof Graphic_ES_Main_Elem) { entitySet = (Graphic_ES_Main_Elem) gme; if (entitySet.getCreateRelation()) { relationName = entitySet.getRelationName(); if (entitySet.getRelationPraefix().length() > 0) relationName = entitySet.getRelationPraefix() + entitySet.getRelationName(); table = new T1(relationName, entitySet.getRelationPraefix(), gme.sdfsdfsdfd(), entitySet.getCreateInserts(), entitySet.getNumberRowsToInsert()); ArrayList keyAttributes = getKeyAttributes(gme); if (keyAttributes.size() > 1) { this.view.verticalBox.getChildren().clear(); this.view.generateRelationalModelCB.setSelected(false); return false; } ArrayList weakkeyAttributes = getWeakKeyAttributes(gme); if (!(gme instanceof Graphic_ES_Weak_Elem) && !(gme instanceof Graphic_ES_Assoc_Elem) && weakkeyAttributes.size() == 1) { this.view.verticalBox.getChildren().clear(); this.view.generateRelationalModelCB.setSelected(false); return false; } if (weakkeyAttributes.size() > 0 && keyAttributes.size() > 0) { this.view.verticalBox.getChildren().clear(); this.view.generateRelationalModelCB.setSelected(false); return false; } ArrayList attributes = getAttributes(gme); addColumnsToTable(table, attributes); } } if (table != null) { boolean tableAdded = false; while (!tableAdded) { if (this.relationalModel.addTable(table)) { entitySet.setRelationName(entitySet.getRelationName() + "_1"); relationName = entitySet.getRelationPraefix() + entitySet.getRelationName(); table.setTablename(relationName); continue; } tableAdded = true; } } } ArrayList topESets = new ArrayList<>(); for (Graphic_Main_Elem gme : this.graphicElements) { if (gme instanceof Graphic_RS_ISA_Elem grsisae) { this.topES = null; try { this.topES = getTopES(grsisae); if (!esTraversed.contains(this.topES.sdfsdfsdfd())) { esTraversed.add(this.topES.sdfsdfsdfd()); topESets.add(this.topES); } } catch (StackOverflowError ignored) { } } } for (Graphic_ES_Elem gme : topESets) { traverseThroughISA(gme); } for (Graphic_Main_Elem gme : this.graphicElements) { T1 table = null; String relationName; Graphic_RS_Main_Elem relationshipType = null; if (gme instanceof Graphic_RS_Main_Elem) { relationshipType = (Graphic_RS_Main_Elem) gme; if (relationshipType.getCreateRelation()) { relationName = relationshipType.getRelationName(); if (relationshipType.getRelationPraefix().length() > 0) relationName = relationshipType.getRelationPraefix() + relationshipType.getRelationName(); table = new T1(relationName, relationshipType.getRelationPraefix(), gme.sdfsdfsdfd(), relationshipType.getCreateInserts(), relationshipType.getNumberRowsToInsert()); ArrayList attributes = getAttributes(gme); addColumnsToTable(table, attributes); } } if (table != null) { boolean tableAdded = false; while (!tableAdded) { if (this.relationalModel.addTable(table)) { relationshipType.setRelationName(relationshipType.getRelationName() + "_1"); relationName = relationshipType.getRelationPraefix() + relationshipType.getRelationName(); table.setTablename(relationName); continue; } tableAdded = true; } } } for (Graphic_Main_Elem gme : this.graphicElements) { T1 table = null; String relationName; Graphic_ATTR_Multi_Elem mvAttribute = null; if (gme instanceof Graphic_ATTR_Multi_Elem) { mvAttribute = (Graphic_ATTR_Multi_Elem) gme; relationName = mvAttribute.getMVRelationName(); if (mvAttribute.getMVRelationNamePraefix().length() > 0) relationName = mvAttribute.getMVRelationNamePraefix() + mvAttribute.getMVRelationName(); table = new T1(relationName, mvAttribute.getMVRelationNamePraefix(), gme.sdfsdfsdfd(), false, 0L); C3 column = new C3(mvAttribute.getMVRelationNamePraefix() + mvAttribute.getColumnName() + (( mvAttribute.getColumnPostfix() != null && mvAttribute.getColumnPostfix().length() > 0) ? mvAttribute.getColumnPostfix() : ""), mvAttribute.getDatatype(), true, false, false, false, mvAttribute.getAutoincrementStartAt(), null, table.getReferstoGraphicalElement(), null, null, null); table.addColumn(column); Graphic_ES_Main_Elem gesme = getESGivenNumber(gme.sdfsdfsdfd()); T1 tableForgemse = this.relationalModel.getTableGivenNumber(gesme.sdfsdfsdfd()); ArrayList keyColumns = this.relationalModel.getKeyColumnsGivenRelation(gesme.sdfsdfsdfd()); for (C3 refcolumn : keyColumns) { column = new C3(mvAttribute.getMVRelationNamePraefix() + refcolumn.getColumnName(), refcolumn.getDatatype(), false, false, false, false, refcolumn.getAutoincrementStartAt(), new T2(tableForgemse.getTablename(), refcolumn.getColumnName()), gme.sdfsdfsdfd(), null, null, null); table.addColumn(column); } } if (table != null) { boolean tableAdded = false; while (!tableAdded) { if (this.relationalModel.addTable(table)) { mvAttribute.setMVRelationName(mvAttribute.getMVRelationName() + "_1"); relationName = mvAttribute.getMVRelationNamePraefix() + mvAttribute.getMVRelationName(); table.setTablename(relationName); continue; } tableAdded = true; } } } for (Graphic_Main_Elem gme : this.graphicElements) { if (gme instanceof Graphic_ES_Assoc_Elem grsem) { ArrayList gesme = getConnectedESToAssociativeESGivenElemNumber(grsem.sdfsdfsdfd()); boolean partPrimary = true; ArrayList keys = getKeyAttributes(grsem); if (keys.size() > 0) partPrimary = false; keys = getWeakKeyAttributes(grsem); if (!partPrimary && keys.size() > 0) { this.view.verticalBox.getChildren().clear(); this.view.generateRelationalModelCB.setSelected(false); return false; } for (Graphic_ES_Main_Elem gesme_conn : gesme) { T1 tableES = this.relationalModel.getTableGivenNumber(gesme_conn.sdfsdfsdfd()); ArrayList keyColumns = this.relationalModel.getKeyColumnsGivenRelation(gesme_conn.sdfsdfsdfd()); T1 tableRS = this.relationalModel.getTableGivenNumber(grsem.sdfsdfsdfd()); for (C3 refcolumn : keyColumns) { boolean colExists = tableRS.columnExist(tableRS.getTablenamePraefix() + refcolumn.getColumnName()); C3 column = new C3(tableRS.getTablenamePraefix() + refcolumn.getColumnName() + (colExists ? "_1" : ""), refcolumn.getDatatype(), partPrimary, false, false, false, refcolumn.getAutoincrementStartAt(), new T2(tableES.getTablename(), refcolumn.getColumnName()), tableRS.getReferstoGraphicalElement(), null, null, null); tableRS.addColumn(column); } } } } ArrayList doneWeakElements = new ArrayList<>(); for (Graphic_Main_Elem gme : this.graphicElements) { if (gme instanceof Graphic_RS_Main_Elem grsem) { if (grsem instanceof Graphic_RS_Identifying_Elem grsie) { ArrayList connectedES = getConnectedESToRelationshipGivenElemNumber(grsie.sdfsdfsdfd()); if (connectedES.size() != 2) { this.view.verticalBox.getChildren().clear(); this.view.generateRelationalModelCB.setSelected(false); return false; } Graphic_ES_Main_Elem gw_es = null; Graphic_ES_Main_Elem ges = null; if (connectedES.get(0) instanceof Graphic_ES_Weak_Elem && connectedES.get(1) instanceof Graphic_ES_Weak_Elem) { continue; } if (connectedES.get(0) instanceof Graphic_ES_Weak_Elem && connectedES.get(1) instanceof Graphic_ES_Elem) { gw_es = connectedES.get(0); ges = connectedES.get(1); } if (connectedES.get(1) instanceof Graphic_ES_Weak_Elem && connectedES.get(0) instanceof Graphic_ES_Elem) { gw_es = connectedES.get(1); ges = connectedES.get(0); } if (connectedES.get(0) instanceof Graphic_ES_Weak_Elem && connectedES.get(1) instanceof Graphic_ES_Assoc_Elem) { gw_es = connectedES.get(0); ges = connectedES.get(1); } if (connectedES.get(1) instanceof Graphic_ES_Weak_Elem && connectedES.get(0) instanceof Graphic_ES_Assoc_Elem) { gw_es = connectedES.get(1); ges = connectedES.get(0); } doneWeakElements.add(gw_es); boolean partPrimary = true; ArrayList keys = getKeyAttributes(gw_es); if (keys.size() > 0) partPrimary = false; keys = getWeakKeyAttributes(gw_es); if (!partPrimary && keys.size() > 0) { this.view.verticalBox.getChildren().clear(); this.view.generateRelationalModelCB.setSelected(false); return false; } assert ges != null; T1 tableForges = this.relationalModel.getTableGivenNumber(ges.sdfsdfsdfd()); ArrayList keyColumns = this.relationalModel.getKeyColumnsGivenRelation(ges.sdfsdfsdfd()); T1 tableForgwes = this.relationalModel.getTableGivenNumber(gw_es.sdfsdfsdfd()); for (C3 refcolumn : keyColumns) { C3 column = new C3(tableForgwes.getTablenamePraefix() + refcolumn.getColumnName(), refcolumn.getDatatype(), partPrimary, !partPrimary, false, false, refcolumn.getAutoincrementStartAt(), new T2(tableForges.getTablename(), refcolumn.getColumnName()), tableForgwes.getReferstoGraphicalElement(), null, null, null); tableForgwes.addColumn(column); } } } } int countNotTransformedWeakES = 0; for (Graphic_Main_Elem gme : this.graphicElements) { if (gme instanceof Graphic_RS_Main_Elem grsem) { if (grsem instanceof Graphic_RS_Identifying_Elem grsie) { ArrayList connectedES = getConnectedESToRelationshipGivenElemNumber(grsie.sdfsdfsdfd()); if (connectedES.size() != 2) { this.view.verticalBox.getChildren().clear(); this.view.generateRelationalModelCB.setSelected(false); return false; } if (connectedES.get(0) instanceof Graphic_ES_Weak_Elem && connectedES.get(1) instanceof Graphic_ES_Weak_Elem) { countNotTransformedWeakES++; } } } } while (countNotTransformedWeakES > 0) { for (Graphic_Main_Elem gme : this.graphicElements) { if (gme instanceof Graphic_RS_Main_Elem grsem) { if (grsem instanceof Graphic_RS_Identifying_Elem grsie) { ArrayList connectedES = getConnectedESToRelationshipGivenElemNumber(grsie.sdfsdfsdfd()); if (connectedES.size() != 2) { this.view.verticalBox.getChildren().clear(); this.view.generateRelationalModelCB.setSelected(false); return false; } Graphic_ES_Weak_Elem gw_es = null; Graphic_ES_Weak_Elem ges = null; if (connectedES.get(0) instanceof Graphic_ES_Weak_Elem && connectedES.get(1) instanceof Graphic_ES_Weak_Elem) { if (doneWeakElements.contains(connectedES.get(0))) { ges = (Graphic_ES_Weak_Elem) connectedES.get(0); gw_es = (Graphic_ES_Weak_Elem) connectedES.get(1); } else if (doneWeakElements.contains(connectedES.get(1))) { gw_es = (Graphic_ES_Weak_Elem) connectedES.get(0); ges = (Graphic_ES_Weak_Elem) connectedES.get(1); } countNotTransformedWeakES--; doneWeakElements.add(gw_es); boolean partPrimary = true; ArrayList keys = getKeyAttributes(gw_es); if (keys.size() > 0) partPrimary = false; keys = getWeakKeyAttributes(gw_es); if (!partPrimary && keys.size() > 0) { this.view.verticalBox.getChildren().clear(); this.view.generateRelationalModelCB.setSelected(false); return false; } assert ges != null; T1 tableForges = this.relationalModel.getTableGivenNumber(ges.sdfsdfsdfd()); ArrayList keyColumns = this.relationalModel.getKeyColumnsGivenRelation(ges.sdfsdfsdfd()); T1 tableForgwes = this.relationalModel.getTableGivenNumber(gw_es.sdfsdfsdfd()); for (C3 refcolumn : keyColumns) { C3 column = new C3(tableForgwes.getTablenamePraefix() + refcolumn.getColumnName(), refcolumn.getDatatype(), partPrimary, !partPrimary, false, false, refcolumn.getAutoincrementStartAt(), new T2(tableForges.getTablename(), refcolumn.getColumnName()), tableForgwes.getReferstoGraphicalElement(), null, null, null); tableForgwes.addColumn(column); } } } } } } for (Graphic_Main_Elem gme : this.graphicElements) { if (gme instanceof Graphic_RS_Main_Elem grsem) { if (grsem instanceof Graphic_RS_Elem) { ArrayList gesme = getConnectedESToRelationshipGivenElemNumber(grsem.sdfsdfsdfd()); if (gesme.size() < 2) { this.view.verticalBox.getChildren().clear(); this.view.generateRelationalModelCB.setSelected(false); return false; } if (gesme.size() == 2) { String[] minMax0; String[] minMax1; String max0; String max1; String min0; String min1; if (gesme.get(0).equals(gesme.get(1))) { String[] minMaxRecursive = getMinMaxForGivenESRSIfRecursive(grsem.sdfsdfsdfd(), gesme.get(0).sdfsdfsdfd()); min0 = minMaxRecursive[0]; max0 = minMaxRecursive[1]; min1 = minMaxRecursive[2]; max1 = minMaxRecursive[3]; } else { minMax0 = getMinMaxForGivenESRS(grsem.sdfsdfsdfd(), gesme.get(0).sdfsdfsdfd()); minMax1 = getMinMaxForGivenESRS(grsem.sdfsdfsdfd(), gesme.get(1).sdfsdfsdfd()); max0 = minMax0[1]; max1 = minMax1[1]; min0 = minMax0[0]; min1 = minMax1[0]; } boolean manyToMany = !max0.equals("1") && !max1.equals("1"); boolean oneToMany = (max0.equals("1") && !max1.equals("1")) || ( !max0.equals("1") && max1.equals("1")); boolean oneToOne = max0.equals("1") && max1.equals("1"); if (oneToOne) { boolean keyCorrect = true; ArrayList keys = getKeyAttributes(grsem); if (keys.size() > 0) keyCorrect = false; if (keyCorrect) { keys = getWeakKeyAttributes(grsem); if (keys.size() > 0) keyCorrect = false; } if (!keyCorrect) { this.view.verticalBox.getChildren().clear(); this.view.generateRelationalModelCB.setSelected(false); return false; } Graphic_ES_Main_Elem es_min_1_side; Graphic_ES_Main_Elem es_min_0_side; boolean bothSides_min_1 = false; if (min0.equals("1") && min1.equals("0")) { es_min_1_side = gesme.get(0); es_min_0_side = gesme.get(1); } else if (min1.equals("1") && min0.equals("0")) { es_min_1_side = gesme.get(1); es_min_0_side = gesme.get(0); } else if (min1.equals("1") && min0.equals("1")) { es_min_1_side = gesme.get(1); es_min_0_side = gesme.get(0); bothSides_min_1 = true; } else { es_min_1_side = gesme.get(0); es_min_0_side = gesme.get(1); } T1 tableRS = this.relationalModel.getTableGivenNumber(grsem.sdfsdfsdfd()); T1 tableES = this.relationalModel.getTableGivenNumber(es_min_0_side.sdfsdfsdfd()); ArrayList keyColumns = this.relationalModel.getKeyColumnsGivenRelation(es_min_0_side.sdfsdfsdfd()); T1 table_1_side = this.relationalModel.getTableGivenNumber(es_min_1_side.sdfsdfsdfd()); for (C3 refcolumn : keyColumns) { C3 column = new C3(table_1_side.getTablenamePraefix() + ( (tableRS.getTablename().length() > 0) ? (tableRS.getTablename() + "_") : "") + refcolumn.getColumnName(), refcolumn.getDatatype(), false, true, true, false, refcolumn.getAutoincrementStartAt(), new T2(tableES.getTablename(), refcolumn.getColumnName()), table_1_side.getReferstoGraphicalElement(), null, null, null); table_1_side.addColumn(column); } if (bothSides_min_1) { T1 tableES_1 = this.relationalModel.getTableGivenNumber(es_min_1_side.sdfsdfsdfd()); ArrayList keyColumns_1 = this.relationalModel.getKeyColumnsGivenRelation(es_min_1_side.sdfsdfsdfd()); T1 table_0_side = this.relationalModel.getTableGivenNumber(es_min_0_side.sdfsdfsdfd()); for (C3 refcolumn : keyColumns_1) { C3 column = new C3(table_0_side.getTablenamePraefix() + ( (tableRS.getTablename().length() > 0) ? (tableRS.getTablename() + "_") : "") + refcolumn.getColumnName(), refcolumn.getDatatype(), false, true, true, false, refcolumn.getAutoincrementStartAt(), new T2(tableES_1.getTablename(), refcolumn.getColumnName()), table_0_side.getReferstoGraphicalElement(), null, null, null); table_0_side.addColumn(column); } } this.relationalModel.removeTable(tableRS); } if (oneToMany) { boolean keyCorrect = true; ArrayList keys = getKeyAttributes(grsem); if (keys.size() > 0) keyCorrect = false; if (keyCorrect) { keys = getWeakKeyAttributes(grsem); if (keys.size() > 0) keyCorrect = false; } if (!keyCorrect) { this.view.verticalBox.getChildren().clear(); this.view.generateRelationalModelCB.setSelected(false); return false; } T1 tableRS = this.relationalModel.getTableGivenNumber(grsem.sdfsdfsdfd()); Graphic_ES_Main_Elem es_n_side; Graphic_ES_Main_Elem es_1_side; if (max0.equals("1")) { es_n_side = gesme.get(1); es_1_side = gesme.get(0); } else { es_n_side = gesme.get(0); es_1_side = gesme.get(1); } T1 tableES = this.relationalModel.getTableGivenNumber(es_n_side.sdfsdfsdfd()); ArrayList keyColumns = this.relationalModel.getKeyColumnsGivenRelation(es_n_side.sdfsdfsdfd()); T1 table_1_side = this.relationalModel.getTableGivenNumber(es_1_side.sdfsdfsdfd()); for (C3 refcolumn : keyColumns) { C3 column = new C3(table_1_side.getTablenamePraefix() + (( tableRS != null && tableRS.getTablename().length() > 0) ? (tableRS.getTablename() + "_") : "") + refcolumn.getColumnName(), refcolumn.getDatatype(), false, true, false, false, refcolumn.getAutoincrementStartAt(), new T2(tableES.getTablename(), refcolumn.getColumnName()), table_1_side.getReferstoGraphicalElement(), null, null, null); table_1_side.addColumn(column); } this.relationalModel.removeTable(tableRS); } if (manyToMany) { boolean partPrimary = true; ArrayList keys = getKeyAttributes(grsem); if (keys.size() > 0) partPrimary = false; keys = getWeakKeyAttributes(grsem); if (!partPrimary && keys.size() > 0) { this.view.verticalBox.getChildren().clear(); this.view.generateRelationalModelCB.setSelected(false); return false; } boolean recursiveRelationship = (gesme.get(0).sdfsdfsdfd() == gesme.get(1).sdfsdfsdfd()); T1 tableES = this.relationalModel.getTableGivenNumber(gesme.get(0).sdfsdfsdfd()); ArrayList keyColumns = this.relationalModel.getKeyColumnsGivenRelation(gesme.get(0).sdfsdfsdfd()); T1 tableRS = this.relationalModel.getTableGivenNumber(grsem.sdfsdfsdfd()); for (C3 refcolumn : keyColumns) { C3 column = new C3(tableRS.getTablenamePraefix() + refcolumn.getColumnName() + (recursiveRelationship ? "_1" : ""), refcolumn.getDatatype(), partPrimary, !partPrimary, false, false, refcolumn.getAutoincrementStartAt(), new T2(tableES.getTablename(), refcolumn.getColumnName()), tableRS.getReferstoGraphicalElement(), null, null, null); tableRS.addColumn(column); } tableES = this.relationalModel.getTableGivenNumber(gesme.get(1).sdfsdfsdfd()); keyColumns = this.relationalModel.getKeyColumnsGivenRelation(gesme.get(1).sdfsdfsdfd()); tableRS = this.relationalModel.getTableGivenNumber(grsem.sdfsdfsdfd()); for (C3 refcolumn : keyColumns) { C3 column = new C3(tableRS.getTablenamePraefix() + refcolumn.getColumnName() + (recursiveRelationship ? "_2" : ""), refcolumn.getDatatype(), partPrimary, !partPrimary, false, false, refcolumn.getAutoincrementStartAt(), new T2(tableES.getTablename(), refcolumn.getColumnName()), tableRS.getReferstoGraphicalElement(), null, null, null); tableRS.addColumn(column); } } } if (gesme.size() > 2) { boolean partPrimary = true; ArrayList keys = getKeyAttributes(grsem); if (keys.size() > 0) partPrimary = false; keys = getWeakKeyAttributes(grsem); if (!partPrimary && keys.size() > 0) { this.view.verticalBox.getChildren().clear(); this.view.generateRelationalModelCB.setSelected(false); return false; } for (Graphic_ES_Main_Elem gesme_conn : gesme) { T1 tableES = this.relationalModel.getTableGivenNumber(gesme_conn.sdfsdfsdfd()); ArrayList keyColumns = this.relationalModel.getKeyColumnsGivenRelation(gesme_conn.sdfsdfsdfd()); T1 tableRS = this.relationalModel.getTableGivenNumber(grsem.sdfsdfsdfd()); String[] minMax = getMinMaxForGivenESRS(grsem.sdfsdfsdfd(), gesme_conn.sdfsdfsdfd()); for (C3 refcolumn : keyColumns) { boolean colExists = tableRS.columnExist(tableRS.getTablenamePraefix() + refcolumn.getColumnName()); C3 column = new C3(tableRS.getTablenamePraefix() + refcolumn.getColumnName() + (colExists ? "_1" : ""), refcolumn.getDatatype(), partPrimary, !partPrimary, minMax[1].equals("1"), false, refcolumn.getAutoincrementStartAt(), new T2(tableES.getTablename(), refcolumn.getColumnName()), tableRS.getReferstoGraphicalElement(), null, null, null); tableRS.addColumn(column); } } } } } } this.relationalModel.sortByTableName(); return true; } private ArrayList getAttributes(Graphic_Main_Elem gme) { ArrayList attributes = new ArrayList<>(); for (Graphic_Main_Elem gmLooking : this.graphicElements) { if (gmLooking instanceof Graphic_LINE_Elem) { if (((Graphic_LINE_Elem) gmLooking).getConnectedWithEnd().sdfsdfsdfd() == gme.sdfsdfsdfd() && ( (Graphic_LINE_Elem) gmLooking).getConnectedWithStart() instanceof Graphic_ATTR_Elem gae) { if (gae.getCreateColumn()) { attributes.add(gae); } else { attributes.addAll(getAttributes(gae)); } } if (((Graphic_LINE_Elem) gmLooking).getConnectedWithStart().sdfsdfsdfd() == gme.sdfsdfsdfd() && ( (Graphic_LINE_Elem) gmLooking).getConnectedWithEnd() instanceof Graphic_ATTR_Elem gae) { if (gae.getCreateColumn()) { attributes.add(gae); continue; } attributes.addAll(getAttributes(gae)); } } } return attributes; } private void addColumnsToTable(T1 table, ArrayList attributes) { for (Graphic_Main_Elem gme : attributes) { Graphic_ATTR_Elem gae = (Graphic_ATTR_Elem) gme; C3 column = new C3(table.getTablenamePraefix() + gae.getColumnName() + (( gae.getColumnPostfix() != null && gae.getColumnPostfix().length() > 0) ? gae.getColumnPostfix() : ""), gae.getDatatype(), gae.isKey(), gae.isNullable(), gae.isUnique(), gae.isAutoincrement(), gae.getAutoincrementStartAt(), null, table.getReferstoGraphicalElement(), gae.getDataGenerationType(), gae.getPar1(), gae.getPar2()); table.addColumn(column); } } private Graphic_ES_Elem getTopES(Graphic_RS_ISA_Elem grsisae) { for (Graphic_Main_Elem gme : this.graphicElements) { if (gme instanceof Graphic_LINE_RSISAG_ES_Elem) { if (((Graphic_LINE_RSISAG_ES_Elem) gme).getConnectedWithStart().sdfsdfsdfd() == grsisae.sdfsdfsdfd()) { this.topES = (Graphic_ES_Elem) ((Graphic_LINE_RSISAG_ES_Elem) gme).getConnectedWithEnd(); } if (((Graphic_LINE_RSISAG_ES_Elem) gme).getConnectedWithEnd().sdfsdfsdfd() == grsisae.sdfsdfsdfd()) { this.topES = (Graphic_ES_Elem) ((Graphic_LINE_RSISAG_ES_Elem) gme).getConnectedWithStart(); } } } for (Graphic_Main_Elem gme : this.graphicElements) { if (gme instanceof Graphic_LINE_RSISAS_ES_Elem) { if (((Graphic_LINE_RSISAS_ES_Elem) gme).getConnectedWithStart().sdfsdfsdfd() == this.topES.sdfsdfsdfd()) { getTopES((Graphic_RS_ISA_Elem) ((Graphic_LINE_RSISAS_ES_Elem) gme).getConnectedWithEnd()); } if (((Graphic_LINE_RSISAS_ES_Elem) gme).getConnectedWithEnd().sdfsdfsdfd() == this.topES.sdfsdfsdfd()) { getTopES((Graphic_RS_ISA_Elem) ((Graphic_LINE_RSISAS_ES_Elem) gme).getConnectedWithStart()); } } } return this.topES; } private void traverseThroughISA(Graphic_ES_Elem topES) { Graphic_RS_ISA_Elem topESConnectedWithISA = getISAOfTop(topES); if (topESConnectedWithISA == null) return; ArrayList specializationsOfTopES; specializationsOfTopES = getSpecializationsOfTopES(topESConnectedWithISA); if (specializationsOfTopES.size() == 0) { return; } for (Graphic_ES_Elem specialization : specializationsOfTopES) { boolean partPrimary = true; ArrayList keys = getKeyAttributes(specialization); if (keys.size() > 0) partPrimary = false; ArrayList weakKeys = getWeakKeyAttributes(specialization); if (weakKeys.size() == 1) { return; } if (weakKeys.size() > 1) partPrimary = false; T1 tableES = this.relationalModel.getTableGivenNumber(topES.sdfsdfsdfd()); ArrayList keyColumns = this.relationalModel.getKeyColumnsGivenRelation(topES.sdfsdfsdfd()); T1 tableRS = this.relationalModel.getTableGivenNumber(specialization.sdfsdfsdfd()); for (C3 refcolumn : keyColumns) { Graphic_ATTR_Elem gattre = getAttrElemGivenColumnName(tableRS.getTablenamePraefix() + refcolumn.getColumnName()); C3 column = new C3(tableRS.getTablenamePraefix() + refcolumn.getColumnName(), refcolumn.getDatatype(), partPrimary, false, !partPrimary, false, refcolumn.getAutoincrementStartAt(), new T2(tableES.getTablename(), refcolumn.getColumnName()), tableRS.getReferstoGraphicalElement(), gattre.getDataGenerationType(), gattre.getPar1(), gattre.getPar2()); tableRS.addColumn(column); } traverseThroughISA(specialization); } } public Graphic_ES_Main_Elem getESGivenNumber(long elementNr) { for (Graphic_Main_Elem gme : this.graphicElements) { if (gme instanceof Graphic_LINE_Attr_ES_Elem glaese) { if (glaese.getConnectedWithEnd().sdfsdfsdfd() == elementNr) return (Graphic_ES_Main_Elem) glaese.getConnectedWithStart(); if (glaese.getConnectedWithStart().sdfsdfsdfd() == elementNr) return (Graphic_ES_Main_Elem) glaese.getConnectedWithEnd(); } } return null; } private ArrayList getConnectedESToRelationshipGivenElemNumber(long elementNr) { ArrayList connections = new ArrayList<>(); for (Graphic_Main_Elem gme : this.graphicElements) { if (gme instanceof Graphic_LINE_Attr_Attr_Elem || gme instanceof Graphic_LINE_Attr_ES_Elem || gme instanceof Graphic_LINE_Attr_RS_Elem) continue; if (gme instanceof Graphic_LINE_Elem gle) { if (gle.getConnectedWithEnd().sdfsdfsdfd() == elementNr) connections.add((Graphic_ES_Main_Elem) gle.getConnectedWithStart()); if (gle.getConnectedWithStart().sdfsdfsdfd() == elementNr) connections.add((Graphic_ES_Main_Elem) gle.getConnectedWithEnd()); } } return connections; } private ArrayList getWeakKeyAttributes(Graphic_Main_Elem gme) { ArrayList attributes = new ArrayList<>(); for (Graphic_Main_Elem gmLooking : this.graphicElements) { if (gmLooking instanceof Graphic_LINE_Elem) { if (((Graphic_LINE_Elem) gmLooking).getConnectedWithEnd().sdfsdfsdfd() == gme.sdfsdfsdfd() && ( (Graphic_LINE_Elem) gmLooking).getConnectedWithStart() instanceof Graphic_ATTR_Weak_Key_Elem) { Graphic_ATTR_Elem gae = (Graphic_ATTR_Elem) ((Graphic_LINE_Elem) gmLooking).getConnectedWithStart(); if (gae.getCreateColumn()) attributes.add(gae); } if (((Graphic_LINE_Elem) gmLooking).getConnectedWithStart().sdfsdfsdfd() == gme.sdfsdfsdfd() && ( (Graphic_LINE_Elem) gmLooking).getConnectedWithEnd() instanceof Graphic_ATTR_Weak_Key_Elem) { Graphic_ATTR_Elem gae = (Graphic_ATTR_Elem) ((Graphic_LINE_Elem) gmLooking).getConnectedWithEnd(); if (gae.getCreateColumn()) attributes.add(gae); } } } return attributes; } private ArrayList getKeyAttributes(Graphic_Main_Elem gme) { ArrayList attributes = new ArrayList<>(); for (Graphic_Main_Elem gmLooking : this.graphicElements) { if (gmLooking instanceof Graphic_LINE_Elem) { if (((Graphic_LINE_Elem) gmLooking).getConnectedWithEnd().sdfsdfsdfd() == gme.sdfsdfsdfd() && ( (Graphic_LINE_Elem) gmLooking).getConnectedWithStart() instanceof Graphic_ATTR_Key_Elem) { Graphic_ATTR_Elem gae = (Graphic_ATTR_Elem) ((Graphic_LINE_Elem) gmLooking).getConnectedWithStart(); if (gae.getCreateColumn()) attributes.add(gae); } if (((Graphic_LINE_Elem) gmLooking).getConnectedWithStart().sdfsdfsdfd() == gme.sdfsdfsdfd() && ( (Graphic_LINE_Elem) gmLooking).getConnectedWithEnd() instanceof Graphic_ATTR_Key_Elem) { Graphic_ATTR_Elem gae = (Graphic_ATTR_Elem) ((Graphic_LINE_Elem) gmLooking).getConnectedWithEnd(); if (gae.getCreateColumn()) attributes.add(gae); } } } return attributes; } private ArrayList getConnectedESToAssociativeESGivenElemNumber(long elementNr) { ArrayList connections = new ArrayList<>(); for (Graphic_Main_Elem gme : this.graphicElements) { if (gme instanceof Graphic_LINE_Attr_Attr_Elem || gme instanceof Graphic_LINE_Attr_ES_Elem || gme instanceof Graphic_LINE_Attr_RS_Elem) continue; if (gme instanceof Graphic_LINE_Elem gle) { if (gle.getConnectedWithEnd().sdfsdfsdfd() == elementNr && gle.getConnectedWithStart() instanceof Graphic_ES_Main_Elem) { connections.add((Graphic_ES_Main_Elem) gle.getConnectedWithStart()); } if (gle.getConnectedWithStart().sdfsdfsdfd() == elementNr && gle.getConnectedWithEnd() instanceof Graphic_ES_Main_Elem) { connections.add((Graphic_ES_Main_Elem) gle.getConnectedWithEnd()); } } } return connections; } private String[] getMinMaxForGivenESRSIfRecursive(long rs, long es) { String[] minMax = new String[100]; int counter = 0; for (Graphic_Main_Elem gme : this.graphicElements) { if (gme instanceof Graphic_LINE_RS_ES_Elem glrsese) { if ((glrsese.getConnectedWithEnd().sdfsdfsdfd() == rs && glrsese.getConnectedWithStart().sdfsdfsdfd() == es) || ( glrsese.getConnectedWithStart().sdfsdfsdfd() == rs && glrsese.getConnectedWithEnd().sdfsdfsdfd() == es)) { minMax[counter++] = glrsese.getMinimum(); minMax[counter++] = glrsese.getMaximum(); } } } return minMax; } private String[] getMinMaxForGivenESRS(long rs, long es) { String[] minMax = null; for (Graphic_Main_Elem gme : this.graphicElements) { if (gme instanceof Graphic_LINE_RS_ES_Elem glrsese) { if ((glrsese.getConnectedWithEnd().sdfsdfsdfd() == rs && glrsese.getConnectedWithStart().sdfsdfsdfd() == es) || ( glrsese.getConnectedWithStart().sdfsdfsdfd() == rs && glrsese.getConnectedWithEnd().sdfsdfsdfd() == es)) { minMax = new String[2]; minMax[0] = glrsese.getMinimum(); minMax[1] = glrsese.getMaximum(); } } } return minMax; } private Graphic_RS_ISA_Elem getISAOfTop(Graphic_ES_Elem topES) { for (Graphic_Main_Elem gme : this.graphicElements) { if (gme instanceof Graphic_LINE_RSISAG_ES_Elem) { if (((Graphic_LINE_RSISAG_ES_Elem) gme).getConnectedWithEnd().sdfsdfsdfd() == topES.sdfsdfsdfd()) { return (Graphic_RS_ISA_Elem) ((Graphic_LINE_RSISAG_ES_Elem) gme).getConnectedWithStart(); } if (((Graphic_LINE_RSISAG_ES_Elem) gme).getConnectedWithStart().sdfsdfsdfd() == topES.sdfsdfsdfd()) { return (Graphic_RS_ISA_Elem) ((Graphic_LINE_RSISAG_ES_Elem) gme).getConnectedWithEnd(); } } } return null; } private ArrayList getSpecializationsOfTopES(Graphic_RS_ISA_Elem topESISA) { ArrayList connectedES = new ArrayList<>(); for (Graphic_Main_Elem gme : this.graphicElements) { if (gme instanceof Graphic_LINE_RSISAS_ES_Elem connectionToSpecialization) { if (connectionToSpecialization.getConnectedWithEnd().sdfsdfsdfd() == topESISA.sdfsdfsdfd()) { connectedES.add((Graphic_ES_Elem) connectionToSpecialization.getConnectedWithStart()); } if (connectionToSpecialization.getConnectedWithStart().sdfsdfsdfd() == topESISA.sdfsdfsdfd()) { connectedES.add((Graphic_ES_Elem) connectionToSpecialization.getConnectedWithEnd()); } } } return connectedES; } private Graphic_ATTR_Elem getAttrElemGivenColumnName(String columnName) { Graphic_ATTR_Elem gattre = null; for (Graphic_Main_Elem gme : this.graphicElements) { if (gme instanceof Graphic_ATTR_Elem) { gattre = (Graphic_ATTR_Elem) gme; if (gattre.getColumnName().equals(columnName)) return gattre; } } return gattre; } public C4 getRelationalModel() { return this.relationalModel; } public boolean mergeAllModelsInPanes() throws IOException, ClassNotFoundException { ArrayList graphicElements = new ArrayList<>(); for (Tab tab : this.view.tabPane.getTabs()) { U1 currentTab = (U1) tab; A3 canvas = currentTab.canvas; if (canvas.sddsfsfsdf45645645().size() == 0 || canvas.getSaveFile() == null) continue; ObjectInputStream ro = new ObjectInputStream(new FileInputStream(canvas.getSaveFile())); @SuppressWarnings("unchecked") ArrayList readModel = (ArrayList) ro.readObject(); for (Graphic_Main_Elem gme : readModel) { if (gme instanceof Graphic_ES_Main_Elem) { boolean elementExists = false; for (Graphic_Main_Elem gmemergeto : graphicElements) { if (gmemergeto instanceof Graphic_ES_Main_Elem && gmemergeto.sdfsdfsd32234243().equals(gme.sdfsdfsd32234243())) { elementExists = true; for (Graphic_Main_Elem line : readModel) { if (line instanceof Graphic_LINE_Elem) { if (((Graphic_LINE_Elem) line).getConnectedWithEnd() == gme) { ((Graphic_LINE_Elem) line).setConnectedWithEnd((Graphic_Figure_Elem) gmemergeto); double[] getxy = ((Graphic_ES_Main_Elem) gmemergeto).getXYForGivenPoint(((Graphic_LINE_Elem) line).getLineConnectedWithPointAtEnd()); ((Graphic_LINE_Elem) line).setxEnd(getxy[0]); ((Graphic_LINE_Elem) line).setyEnd(getxy[1]); } if (((Graphic_LINE_Elem) line).getConnectedWithStart() == gme) { ((Graphic_LINE_Elem) line).setConnectedWithStart((Graphic_Figure_Elem) gmemergeto); double[] getxy = ((Graphic_ES_Main_Elem) gmemergeto).getXYForGivenPoint(((Graphic_LINE_Elem) line).getLineConnectedWithPointAtStart()); line.setxPos(getxy[0]); line.setyPos(getxy[1]); } } } } } if (!elementExists) graphicElements.add(gme); continue; } graphicElements.add(gme); } ro.close(); } long elementId = 1L; for (Graphic_Main_Elem gme : graphicElements) { gme.dsdasadsasd32423432(elementId++); } this.graphicElements = graphicElements; return graphicElements.size() > 0; } public ArrayList getGraphicElements() { return this.graphicElements; } }