diff --git a/modevo-script/src/main/java/giis/modevo/migration/script/ColumnValue.java b/modevo-script/src/main/java/giis/modevo/migration/script/ColumnValue.java index 2df2a03..cc4bf44 100644 --- a/modevo-script/src/main/java/giis/modevo/migration/script/ColumnValue.java +++ b/modevo-script/src/main/java/giis/modevo/migration/script/ColumnValue.java @@ -6,7 +6,6 @@ @Getter @Setter public class ColumnValue { private Column column; - private Select selectOrigin; private String[] key; private String value; //String generic type, actual type in DB could be different private String variableName; diff --git a/modevo-script/src/main/java/giis/modevo/migration/script/Insert.java b/modevo-script/src/main/java/giis/modevo/migration/script/Insert.java index 08b8b4d..368c74c 100644 --- a/modevo-script/src/main/java/giis/modevo/migration/script/Insert.java +++ b/modevo-script/src/main/java/giis/modevo/migration/script/Insert.java @@ -36,7 +36,7 @@ public Insert(Table table, For insideFor) { public ColumnValue addColumnValue(Column columnSelect, Select s, String[] key, Column target) { ColumnValue cv = new ColumnValue (); cv.setColumn(target); - cv.setSelectOrigin(s); + s.getValuesExtracted().add(cv); cv.setKey(key); cv.setColumnSelectOrigin(columnSelect); this.getColumnValue().add(cv); diff --git a/modevo-script/src/main/java/giis/modevo/migration/script/Script.java b/modevo-script/src/main/java/giis/modevo/migration/script/Script.java index 5c86f6e..e749be9 100644 --- a/modevo-script/src/main/java/giis/modevo/migration/script/Script.java +++ b/modevo-script/src/main/java/giis/modevo/migration/script/Script.java @@ -34,7 +34,6 @@ public class Script { private List fors; private List forsHigherLevel; //These are the For loops that are not inside other For loops private List inserts; - private ScriptText scriptText; private boolean executable; private List forsSplit; public Script () { @@ -44,7 +43,6 @@ public Script () { inserts = new ArrayList<>(); forsSplit = new ArrayList<>(); setForsHigherLevel(new ArrayList<>()); - scriptText = new ScriptText(); } public boolean isExecutable() { return executable; @@ -78,6 +76,9 @@ else if (mt.migrationSplitColumn(se)) { return scripts; } + /** + * Creates the script needed when a column is splitted in two or more columns. + */ private Script migrationSplitColumn(Schema schema, SchemaEvolution se, MigrationTable mt) { log.info("Split Column Script. Target table: %s", mt.getName()); Script script = new Script (); @@ -93,7 +94,6 @@ private Script migrationSplitColumn(Schema schema, SchemaEvolution se, Migration forSplit.getSelectsFor().add(s); s.setTable(t); Column copyOldColumnObject = new Column (oldColumnObject); - s.getSearch().add(copyOldColumnObject); s.setSplitColumn(copyOldColumnObject); s.setCriteriaOperator(critSplit.getOperator()); @@ -103,9 +103,8 @@ private Script migrationSplitColumn(Schema schema, SchemaEvolution se, Migration for (Column c: t.getKey()) { ColumnValue cv=insert.addColumnValue (c, s, null, c); Column copyTarget = new Column (c); - cv.getSelectOrigin().getSearch().add(copyTarget); + s.getSearch().add(copyTarget); cv.setColumn(copyTarget); - } script.getForsSplit().add(forSplit); script.addForSelectInsert(forSplit, s, insert); @@ -322,4 +321,12 @@ public boolean inList(Column c, List columnValues) { } return false; } + public Select findSelect(ColumnValue cv) { + for (Select s: selects) { + if (s.getValuesExtracted().contains(cv)) { + return s; + } + } + return null; + } } diff --git a/modevo-script/src/main/java/giis/modevo/migration/script/ScriptText.java b/modevo-script/src/main/java/giis/modevo/migration/script/ScriptText.java index 831e4f0..97f90df 100644 --- a/modevo-script/src/main/java/giis/modevo/migration/script/ScriptText.java +++ b/modevo-script/src/main/java/giis/modevo/migration/script/ScriptText.java @@ -59,11 +59,11 @@ private void writeSyntaxInsert(StringBuilder sb, Script s) { } ColumnValue cv = i.getColumnValue().get(j); initializeVariableName (cv); - String nameColumn = cv.getColumn().getName(); - String nameVariable=cv.getSelectOrigin().findNameVariable (cv.getColumn().getNameAttribute(), cv.getColumn().getNameEntity()); + Select selectOrigin = s.findSelect (cv); + String nameVariable=selectOrigin.findNameVariable (cv.getColumn().getNameAttribute(), cv.getColumn().getNameEntity()); if (nameVariable == null) { - Column columnOrigin = cv.getSelectOrigin().getSplitColumn(); + Column columnOrigin = selectOrigin.getSplitColumn(); nameVariable=columnOrigin.getVariableName(); } namesColumns.append(nameColumn); diff --git a/modevo-script/src/main/java/giis/modevo/migration/script/Select.java b/modevo-script/src/main/java/giis/modevo/migration/script/Select.java index 049c5e6..c3c36e4 100644 --- a/modevo-script/src/main/java/giis/modevo/migration/script/Select.java +++ b/modevo-script/src/main/java/giis/modevo/migration/script/Select.java @@ -21,11 +21,13 @@ public class Select { private String criteriaOperator; private String criteriaValue; private Column splitColumn; + private List valuesExtracted; public Select () { where = new ArrayList<>(); search = new ArrayList<>(); whereValue = new ArrayList<>(); + valuesExtracted = new ArrayList<>(); } public Select(Table table, Column c) { diff --git a/modevo-transform/src/main/java/giis/modevo/model/datamigration/DataMigration.java b/modevo-transform/src/main/java/giis/modevo/model/datamigration/DataMigration.java index 97165ce..bcedcb9 100644 --- a/modevo-transform/src/main/java/giis/modevo/model/datamigration/DataMigration.java +++ b/modevo-transform/src/main/java/giis/modevo/model/datamigration/DataMigration.java @@ -81,7 +81,6 @@ private MigrationColumn storeInfoMigrationColumn(Node nodeColumn, SchemaEvolutio if (!elementMigCol.getAttribute("Description").isEmpty()) { return null; } - c.setTable(migrationTable); NodeList toFrom = nodeColumn.getChildNodes(); // Right now it's only for one from table and one to table ColFrom colfrom = new ColFrom(); diff --git a/modevo-transform/src/main/java/giis/modevo/model/datamigration/MigrationColumn.java b/modevo-transform/src/main/java/giis/modevo/model/datamigration/MigrationColumn.java index cfb6214..ed9fc52 100644 --- a/modevo-transform/src/main/java/giis/modevo/model/datamigration/MigrationColumn.java +++ b/modevo-transform/src/main/java/giis/modevo/model/datamigration/MigrationColumn.java @@ -14,7 +14,6 @@ public class MigrationColumn { private String name; private ColTo colTo; // Contains the required information to migrate data to a column private ColFrom colFrom; // Contains the required information to migrate data from a column - private MigrationTable table; private String description; //when it is not possible to proceed with the migration public MigrationColumn() { diff --git a/modevo-transform/src/main/java/giis/modevo/model/schema/Column.java b/modevo-transform/src/main/java/giis/modevo/model/schema/Column.java index b912301..f169da8 100644 --- a/modevo-transform/src/main/java/giis/modevo/model/schema/Column.java +++ b/modevo-transform/src/main/java/giis/modevo/model/schema/Column.java @@ -19,21 +19,21 @@ public class Column { private boolean ck; private String dataType; private String nameEntity; - private Table table; private String variableName; - + private String nameTable; public Column() { super(); } - public Column(String name, String nameAttribute, boolean pk, boolean ck, String nameEntity, Table table) { + public Column(String name, String nameAttribute, boolean pk, boolean ck, String nameEntity, String nameTable) { super(); this.name = name; this.pk = pk; this.ck = ck; this.setNameAttribute(nameAttribute); this.nameEntity = nameEntity; - this.table = table; + this.nameTable = nameTable; + } public Column(Column c) { @@ -42,19 +42,18 @@ public Column(Column c) { this.pk = c.pk; this.ck = c.ck; this.setNameAttribute(c.nameAttribute); - this.table = c.table; this.dataType = c.dataType; this.nameEntity = c.nameEntity; this.variableName = c.variableName; - + this.nameTable = c.nameTable; } - public Column(String nameTable) { - this.name = nameTable; + public Column(String name) { + this.name = name; } public boolean equalsValues (Column c) { - return c.getName().equals(this.getName()) && c.getTable().equals(this.getTable()) && c.getNameAttribute().equals(this.getNameAttribute()) && c.getNameEntity().equals(this.getNameEntity()); + return c.getName().equals(this.getName()) && c.getNameTable().equals(this.getNameTable()) && c.getNameAttribute().equals(this.getNameAttribute()) && c.getNameEntity().equals(this.getNameEntity()); } } diff --git a/modevo-transform/src/main/java/giis/modevo/model/schema/Schema.java b/modevo-transform/src/main/java/giis/modevo/model/schema/Schema.java index 76fea2a..751764c 100644 --- a/modevo-transform/src/main/java/giis/modevo/model/schema/Schema.java +++ b/modevo-transform/src/main/java/giis/modevo/model/schema/Schema.java @@ -89,7 +89,7 @@ private Column readColumn(Node nodeColumn, Table table) { String nameEntity = element.getAttribute("nameEntity"); boolean pk = pkString.equalsIgnoreCase("True"); boolean ck = ckString.equalsIgnoreCase("True"); - return new Column(column, attribute, pk, ck, nameEntity, table); + return new Column(column, attribute, pk, ck, nameEntity, table.getName()); } /** diff --git a/modevo-transform/src/main/java/giis/modevo/model/schema/Table.java b/modevo-transform/src/main/java/giis/modevo/model/schema/Table.java index 0022a38..91eecd4 100644 --- a/modevo-transform/src/main/java/giis/modevo/model/schema/Table.java +++ b/modevo-transform/src/main/java/giis/modevo/model/schema/Table.java @@ -28,7 +28,7 @@ public Table(String name, List columns) { this.setName(name); this.columns = columns; for (Column c: columns) { - c.setTable(this); + c.setNameTable(name); } } diff --git a/modevo-transform/src/main/java/giis/modevo/model/schemaevolution/SchemaChange.java b/modevo-transform/src/main/java/giis/modevo/model/schemaevolution/SchemaChange.java index b1ad6b4..70fc81c 100644 --- a/modevo-transform/src/main/java/giis/modevo/model/schemaevolution/SchemaChange.java +++ b/modevo-transform/src/main/java/giis/modevo/model/schemaevolution/SchemaChange.java @@ -90,7 +90,7 @@ protected Column columnFromModelToObject(Element column, Table t) { String nameEntity = column.getAttribute("nameEntity"); columnObject.setNameAttribute(nameAttribute); columnObject.setNameEntity(nameEntity); - columnObject.setTable(t); + columnObject.setNameTable(t.getName()); return columnObject; } diff --git a/modevo-transform/src/main/java/giis/modevo/model/schemaevolution/SplitColumn.java b/modevo-transform/src/main/java/giis/modevo/model/schemaevolution/SplitColumn.java index 424d847..e4755f9 100644 --- a/modevo-transform/src/main/java/giis/modevo/model/schemaevolution/SplitColumn.java +++ b/modevo-transform/src/main/java/giis/modevo/model/schemaevolution/SplitColumn.java @@ -53,7 +53,6 @@ protected void storeInfo(SchemaEvolution se, NodeList list, Node node) { String criteria = elementSplit.getAttribute ("criteria"); String[] columnsArray = idColumns.split(" "); String[] criteriaArray = criteria.split(" "); - for (String c : columnsArray) { Element column = getElementById(list, c); if (column == null) { @@ -67,7 +66,6 @@ protected void storeInfo(SchemaEvolution se, NodeList list, Node node) { if (criteriaElement == null) { throw new DocumentException(messageIdMissing(c)); } - Element column = getElementById(list, criteriaElement.getAttribute("column")); if (column == null) { throw new DocumentException(messageIdMissing(c));