Merge remote-tracking branch 'origin/cdm-4.7' into feature/cdm-4.7
authorAndreas Müller <a.mueller@bgbm.org>
Thu, 4 May 2017 06:30:48 +0000 (08:30 +0200)
committerAndreas Müller <a.mueller@bgbm.org>
Thu, 4 May 2017 06:30:48 +0000 (08:30 +0200)
14 files changed:
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/TermBase.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/description/WorkingSet.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/molecular/AmplificationResult.java
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/ClassBaseTypeUpdater.java
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/ColumnAdder.java
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/IndexAdder.java
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/MnTableCreator.java
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/SchemaUpdaterBase.java
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/TableCreator.java
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/v25_30/SchemaUpdater_25_30.java
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/v31_33/SchemaUpdater_31_33.java
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/v40_41/SchemaUpdater_40_41.java
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/v41_47/SchemaUpdater_41_47.java
cdmlib-services/src/test/java/eu/etaxonomy/cdm/test/function/TestModelUpdate.java

index 6ad3a2b668cd23994e7876cbc9f35ad74a018fff..ae953b9399ea8c59bc2c587581414c39f7f5fd21 100644 (file)
@@ -54,7 +54,7 @@ import eu.etaxonomy.cdm.strategy.cache.common.TermDefaultCacheStrategy;
 })
 @MappedSuperclass
 @Audited
-public abstract class TermBase extends IdentifiableEntity<IIdentifiableEntityCacheStrategy >{
+public abstract class TermBase extends IdentifiableEntity<IIdentifiableEntityCacheStrategy<TermBase> >{
     private static final long serialVersionUID = 1471561531632115822L;
     @SuppressWarnings("unused")
     private static final Logger logger = Logger.getLogger(TermBase.class);
index 2df4640b9b2e460158ef52105ef017bbc6f00237..f8853f143b6f42ecdbaf84a612998d14f2e63e3e 100644 (file)
@@ -57,12 +57,15 @@ import eu.etaxonomy.cdm.model.taxon.TaxonNode;
 @XmlType(name = "WorkingSet", propOrder = {
     "representations",
     "descriptiveSystem",
-    "descriptions"
+    "descriptions",
+    "taxonSubtreeFilter",
+    "geoFilter",
+    "minRank",
+    "maxRank"
 })
 @XmlRootElement(name = "WorkingSet")
 @Entity
 @Audited
-
 public class WorkingSet extends AnnotatableEntity {
        private static final long serialVersionUID = 3256448866757415686L;
        private static final Logger logger = Logger.getLogger(WorkingSet.class);
index 25091c790e8a645d7f52cd83d733fc7c9cd712cd..4d1d69a39c30971ad8afdee60f72c481af1023ba 100644 (file)
@@ -117,7 +117,7 @@ public class AmplificationResult extends AnnotatableEntity implements Cloneable{
     @XmlSchemaType(name = "IDREF")
     @OneToMany(mappedBy="amplificationResult" , fetch = FetchType.LAZY)
     @Cascade({CascadeType.SAVE_UPDATE,CascadeType.MERGE})
-       private Set<SingleRead> singleReads = new HashSet<SingleRead>();
+       private Set<SingleRead> singleReads = new HashSet<>();
 
     @XmlElement(name = "Cloning")
     @XmlIDREF
index b2c7bd4e490f25157c70dbbe96fde9bbfc33b96c..297a265d9be950b45360976e10fbb77845179261 100644 (file)
@@ -22,16 +22,14 @@ import eu.etaxonomy.cdm.database.ICdmDataSource;
  * @date 2015-03-20\r
  * @author a.mueller\r
  */\r
-public class ClassBaseTypeUpdater extends AuditedSchemaUpdaterStepBase<ClassBaseTypeUpdater> implements ISchemaUpdaterStep {\r
+public class ClassBaseTypeUpdater extends AuditedSchemaUpdaterStepBase<ClassBaseTypeUpdater> {\r
        @SuppressWarnings("unused")\r
        private static final Logger logger = Logger.getLogger(TableCreator.class);\r
 \r
-       private static final boolean SORT_INDEX = true;\r
-\r
        private final boolean includeIdentifiableEntity;\r
        private final boolean includeAnnotatableEntity;\r
-       protected List<ISchemaUpdaterStep> mnTablesStepList = new ArrayList<ISchemaUpdaterStep>();\r
-       protected List<ISchemaUpdaterStep> columnAdderStepList = new ArrayList<ISchemaUpdaterStep>();\r
+       protected List<ISchemaUpdaterStep> mnTablesStepList = new ArrayList<>();\r
+       protected List<ISchemaUpdaterStep> columnAdderStepList = new ArrayList<>();\r
 \r
 \r
        public static final ClassBaseTypeUpdater NewVersionableToAnnotatableInstance(String stepName, String tableName, boolean includeAudTable){\r
@@ -122,8 +120,7 @@ public class ClassBaseTypeUpdater extends AuditedSchemaUpdaterStepBase<ClassBase
 \r
        @Override\r
        public List<ISchemaUpdaterStep> getInnerSteps() {\r
-               List<ISchemaUpdaterStep> result = new ArrayList<ISchemaUpdaterStep>\r
-                                       ( mnTablesStepList);\r
+               List<ISchemaUpdaterStep> result = new ArrayList<>( mnTablesStepList);\r
                result.addAll(columnAdderStepList);\r
                return result;\r
        }\r
index 48f7782cf50f63e5ee552eedcb3277aa64eb1fd9..2a0ef028ad37f23702f40d4de2f0f2ff8c1a35ac 100644 (file)
@@ -21,14 +21,13 @@ import eu.etaxonomy.cdm.database.ICdmDataSource;
  * @date 16.09.2010\r
  *\r
  */\r
-public class ColumnAdder extends AuditedSchemaUpdaterStepBase<ColumnAdder> implements ISchemaUpdaterStep {\r
+public class ColumnAdder extends AuditedSchemaUpdaterStepBase<ColumnAdder> {\r
        private static final Logger logger = Logger.getLogger(ColumnAdder.class);\r
 \r
        private final String newColumnName;\r
        private final String columnType;\r
        private final Object defaultValue;\r
        private boolean isNotNull;\r
-\r
        private final String referencedTable;\r
 \r
        /**\r
@@ -202,9 +201,7 @@ public class ColumnAdder extends AuditedSchemaUpdaterStepBase<ColumnAdder> imple
                return referencedTable;\r
        }\r
 \r
-\r
        public String getNewColumnName() {\r
                return newColumnName;\r
        }\r
-\r
 }\r
index f87249a10f0f46428851dabff192cd1d16ff6c3a..490e6f12381f699764bfcda2d8b8015f4f34ff2c 100644 (file)
@@ -26,7 +26,7 @@ import eu.etaxonomy.cdm.database.update.v33_34.UsernameConstraintUpdater;
  * @date 16.09.2010
  *
  */
-public class IndexAdder extends SchemaUpdaterStepBase<IndexAdder> implements ISchemaUpdaterStep {
+public class IndexAdder extends SchemaUpdaterStepBase<IndexAdder> {
        private static final Logger logger = Logger.getLogger(IndexAdder.class);
 
        private String tableName;
@@ -35,16 +35,23 @@ public class IndexAdder extends SchemaUpdaterStepBase<IndexAdder> implements ISc
 
        private Integer length;
 
-       public static final IndexAdder NewInstance(String stepName, String tableName, String columnName, Integer length){
-               return new IndexAdder(stepName, tableName, columnName, length);
+// ********************** FACTORY ****************************************/
+
+       public static final IndexAdder NewStringInstance(String stepName, String tableName, String columnName, Integer length){
+               return new IndexAdder(stepName, tableName, columnName, length == null ? 255 : length);
        }
 
+    public static final IndexAdder NewIntegerInstance(String stepName, String tableName, String columnName){
+        return new IndexAdder(stepName, tableName, columnName, null);
+    }
+
+// **************************** CONSTRUCTOR *********************************/
 
        protected IndexAdder(String stepName, String tableName, String columnName, Integer length) {
                super(stepName);
                this.tableName = tableName;
                this.columnName = columnName;
-               this.length = length == null ? 255 :length;
+               this.length = length;
        }
 
 
@@ -64,7 +71,7 @@ public class IndexAdder extends SchemaUpdaterStepBase<IndexAdder> implements ISc
                        datasource.executeUpdate(updateQuery);
                        return true;
                } catch (Exception e) {
-                       logger.warn("Unique index for username could not be created");
+                       logger.warn("Unique index for " + columnName + " could not be created");
                        return false;
                }
        }
@@ -75,7 +82,7 @@ public class IndexAdder extends SchemaUpdaterStepBase<IndexAdder> implements ISc
                        String updateQuery;
                        if (type.equals(DatabaseTypeEnum.MySQL)){
                                //Maybe MySQL also works with the below syntax. Did not check yet.
-                               updateQuery = "ALTER TABLE @@"+ tableName + "@@ ADD INDEX " + constraintName + " ("+columnName+"("+length+"));";
+                               updateQuery = "ALTER TABLE @@"+ tableName + "@@ ADD INDEX " + constraintName + " ("+columnName+ makeLength()+");";
                        }else if (type.equals(DatabaseTypeEnum.H2) || type.equals(DatabaseTypeEnum.PostgreSQL) || type.equals(DatabaseTypeEnum.SqlServer2005)){
                                updateQuery = "CREATE INDEX " + constraintName + " ON "+tableName+"(" + columnName + ")";
                        }else{
@@ -86,7 +93,19 @@ public class IndexAdder extends SchemaUpdaterStepBase<IndexAdder> implements ISc
                        return updateQuery;
        }
 
-       private boolean removeExistingConstraint(ICdmDataSource datasource, CaseType caseType) {
+       /**
+     * @param length2
+     * @return
+     */
+    private String makeLength() {
+        if (length != null){
+            return "(" + length + ")";
+        }else{
+            return "";
+        }
+    }
+
+    private boolean removeExistingConstraint(ICdmDataSource datasource, CaseType caseType) {
                try {
                        DatabaseTypeEnum type = datasource.getDatabaseType();
                        String indexName = "_UniqueKey";
index eccee035ff44668209ca10ddb269b50e3bc4a5ee..65cfb8f5a8f5bac70e01236c3342c0dc3c6f88df 100644 (file)
@@ -6,8 +6,7 @@ package eu.etaxonomy.cdm.database.update;
 import java.util.ArrayList;\r
 import java.util.Arrays;\r
 import java.util.List;\r
-\r
-import org.apache.commons.lang.StringUtils;\r
+import java.util.Map;\r
 \r
 /**\r
  * Creates an MN table\r
@@ -18,44 +17,83 @@ public class MnTableCreator extends TableCreator {
 \r
        private String firstTableName;\r
        private String firstTableAlias;\r
+    private String firstColumnName;\r
        private String secondTableName;\r
        private String secondTableAlias;\r
-       //is a sort index column needed.\r
-       private boolean hasSortIndex;\r
-       //is the key of the MN table including the FK to the second table?\r
-       private boolean secondTableInKey;\r
-\r
-       public static MnTableCreator NewMnInstance(String stepName, String firstTableName, String secondTableName, boolean includeAudTable){\r
-               MnTableCreator result = new MnTableCreator(stepName, firstTableName, null, secondTableName, null, new String[]{}, new String[]{}, null, null, includeAudTable, false, true, false, false, false);\r
+    private String secondColumnName;\r
+       //is the MN table used for a list, if yes, a sortIndex column is needed\r
+    //and the and the sortindex column needs to be in the key instead of second table column.\r
+       private boolean isList;\r
+       private boolean is1toM;\r
+\r
+       public static MnTableCreator NewMnInstance(String stepName, String firstTableName, String secondTableName, boolean includeAudTable, boolean isList, boolean is1toM){\r
+               MnTableCreator result = new MnTableCreator(stepName, firstTableName, null, null, secondTableName, null, null, new String[]{}, new String[]{}, null, null, includeAudTable, isList, is1toM, false, false, false);\r
                return result;\r
        }\r
 \r
-       public static MnTableCreator NewMnInstance(String stepName, String firstTableName, String firstTableAlias, String secondTableName, String secondTableAlias, boolean includeAudTable, boolean hasSortIndex, boolean secondTableInKey){\r
-               MnTableCreator result = new MnTableCreator(stepName, firstTableName, firstTableAlias, secondTableName, secondTableAlias, new String[]{}, new String[]{}, null, null, includeAudTable, hasSortIndex, secondTableInKey, false, false, false);\r
+       /**\r
+        *\r
+        * @param stepName The step name\r
+        * @param firstTableName The name of the first table\r
+        * @param firstTableAlias The alias for the first table as used in the MN table name\r
+        * @param secondTableName The name of the second table\r
+        * @param secondTableAlias The alias for the second table as used in the MN table name\r
+        * @param attributeName The name of the attribute pointing to the second table (this is used for the column name for the\r
+        * column pointing to the second table)\r
+        * @param includeAudTable <code>true</code> if also the Audit (_AUD) table should be created\r
+        * @param hasSortIndex by default <code>false</code> but true for {@link Map maps} (or maybe user defined MN-tables)\r
+        * @param secondTableInKey should the column that links to the second table also be in the key? This is by default\r
+        * <code>true</code> but for {@link List lists} should be <code>false</code>.\r
+        * @return\r
+        */\r
+       public static MnTableCreator NewMnInstance(String stepName, String firstTableName, String firstTableAlias, String secondTableName, String secondTableAlias, String attributeName,\r
+               boolean includeAudTable, boolean isList, boolean is1toM){\r
+               MnTableCreator result = new MnTableCreator(stepName, firstTableName, firstTableAlias, null, secondTableName, secondTableAlias, attributeName,\r
+                       new String[]{}, new String[]{}, null, null,\r
+                       includeAudTable, isList, is1toM, false, false, false);\r
                return result;\r
        }\r
 \r
+// ****************************** CONSTRUCTOR *********************************/\r
 \r
-       protected MnTableCreator(String stepName, String firstTableName, String firstTableAlias, String secondTableName, String secondTableAlias, String[] columnNames, String[] columnTypes,\r
-                       List<Object> defaultValues, List<Boolean> isNull, boolean includeAudTable, boolean hasSortIndex, boolean secondTableInKey, boolean includeCdmBaseAttributes,boolean includeAnnotatableEntity, boolean includeIdentifiableEntity) {\r
-               super(stepName, firstTableName + "_" + secondTableName, Arrays.asList(columnNames), Arrays.asList(columnTypes), defaultValues, isNull,  new ArrayList<String>(), includeAudTable, includeCdmBaseAttributes, includeAnnotatableEntity, includeIdentifiableEntity, false);\r
+       protected MnTableCreator(String stepName, String firstTableName, String firstTableAlias, String firstColumnName, String secondTableName, String secondTableAlias, String secondColumnName,\r
+               String[] columnNames, String[] columnTypes, List<Object> defaultValues, List<Boolean> isNull,\r
+               boolean includeAudTable, boolean isList, boolean is1toM,\r
+               boolean includeCdmBaseAttributes, boolean includeAnnotatableEntity, boolean includeIdentifiableEntity) {\r
+               super(stepName, makeAlias(firstTableName, firstTableAlias) + "_" + makeAlias(secondTableName, secondTableAlias),\r
+                       Arrays.asList(columnNames), Arrays.asList(columnTypes), defaultValues,\r
+                       isNull, new ArrayList<>(), includeAudTable,\r
+                       includeCdmBaseAttributes, includeAnnotatableEntity, includeIdentifiableEntity, false);\r
                this.firstTableName = firstTableName;\r
                this.secondTableName = secondTableName;\r
-               this.firstTableAlias = (firstTableAlias != null )? firstTableAlias : firstTableName ;\r
-               this.secondTableAlias = (secondTableAlias !=  null)? secondTableAlias : secondTableName ;\r
-               this.hasSortIndex = hasSortIndex;\r
-               this.secondTableInKey = secondTableInKey;\r
+               this.firstTableAlias = makeAlias(firstTableName, firstTableAlias) ;\r
+               this.secondTableAlias = makeAlias(secondTableName, secondTableAlias) ;\r
+               this.firstColumnName = (firstColumnName !=  null) ? firstColumnName : this.firstTableAlias;\r
+        this.secondColumnName = (secondColumnName !=  null) ? secondColumnName : this.secondTableAlias;\r
+        this.isList = isList;\r
+        this.is1toM = is1toM;\r
                addMyColumns();\r
        }\r
 \r
+    /**\r
+     * @param secondTableName\r
+     * @param secondTableAlias\r
+     * @return\r
+     */\r
+    private static String makeAlias(String tableName, String alias) {\r
+        return (alias !=  null) ? alias : tableName;\r
+    }\r
+\r
 \r
        protected void addMyColumns(){\r
-               this.columnAdders.add(ColumnAdder.NewIntegerInstance(stepName, tableName, getFirstIdColumn(), false, true, this.firstTableName));\r
-               this.columnAdders.add(ColumnAdder.NewIntegerInstance(stepName, tableName, getSecondIdColumn(), false, true, this.secondTableName));\r
-               if (this.hasSortIndex){\r
+           ColumnAdder firstColAdder = ColumnAdder.NewIntegerInstance(stepName, tableName, getFirstIdColumn(), false, true, this.firstTableName);\r
+               this.columnAdders.add(firstColAdder);\r
+               ColumnAdder secondColAdder = ColumnAdder.NewIntegerInstance(stepName, tableName, getSecondIdColumn(), false, true, this.secondTableName);\r
+//             secondColAdder.addIndex(tableName+"_"+getSecondIdColumn(), null);\r
+               this.columnAdders.add(secondColAdder);\r
+               if (this.isList){\r
                        this.columnAdders.add(ColumnAdder.NewIntegerInstance(stepName, tableName, "sortIndex", false, true, null));\r
                }\r
-\r
        }\r
 \r
        @Override\r
@@ -63,19 +101,18 @@ public class MnTableCreator extends TableCreator {
                String result = "";\r
                if (! isAudit){\r
                        result = getFirstIdColumn() + ",";\r
-                       result += secondTableInKey ? getSecondIdColumn() + "," : "";\r
-                       result += hasSortIndex ? "sortIndex," : "";\r
+                       result += (isList ? "sortIndex" : getSecondIdColumn());\r
                }else{\r
                        result = "REV, " + primaryKey(false);\r
-                       result += (!secondTableInKey) ? ","+getSecondIdColumn() + "," : "";\r
+                       //for AUDIT also the second table column is in PK\r
+                       result += (isList) ? ","+getSecondIdColumn() : "";\r
                }\r
-               result = StringUtils.chomp(result.trim(), ",");\r
                return result;\r
        }\r
 \r
        @Override\r
     protected String unique(boolean isAudit){\r
-               if (! isAudit){\r
+               if (! isAudit && is1toM){\r
                        return getSecondIdColumn();\r
                }else{\r
                        return null;\r
@@ -83,13 +120,13 @@ public class MnTableCreator extends TableCreator {
        }\r
 \r
        private String getFirstIdColumn(){\r
-               return this.firstTableAlias + "_id";\r
+               return this.firstColumnName + "_id";\r
        }\r
 \r
        private String getSecondIdColumn(){\r
-               String result = this.secondTableAlias.toLowerCase();\r
+               String result = this.secondColumnName.toLowerCase();\r
 \r
-               if (this.secondTableAlias.equalsIgnoreCase(this.secondTableName) ){\r
+               if (this.secondColumnName.equalsIgnoreCase(this.secondTableName) ){\r
                        if (! result.endsWith("s")){\r
                                result += "s";\r
                        }\r
index 449ea2a998209ff1e683f7829b1353c157591098..cf94d95759a5b6536ec750162889ddae17a91a8d 100644 (file)
@@ -27,9 +27,13 @@ public abstract class SchemaUpdaterBase extends UpdaterBase<ISchemaUpdaterStep,
        @SuppressWarnings("unused")\r
        private static final Logger logger = Logger.getLogger(SchemaUpdaterBase.class);\r
 \r
-       public static boolean INCLUDE_AUDIT = true;\r
-       protected static boolean INCLUDE_CDM_BASE = true;\r
-       protected static boolean NOT_NULL = true;\r
+       public static final boolean INCLUDE_AUDIT = true;\r
+       protected static final boolean INCLUDE_CDM_BASE = true;\r
+       protected static final boolean NOT_NULL = true;\r
+       protected static final boolean IS_LIST = true;\r
+       protected static final boolean IS_1_TO_M = true;\r
+       protected static final boolean IS_M_TO_M = false;\r
+\r
 \r
 //     private List<ISchemaUpdaterStep> list;\r
 \r
index a9b22c84e68ce93a86932c04231cabbffb65f378..cd6be5d50d44af5f1d323f540ec655efd410feda 100644 (file)
@@ -8,7 +8,6 @@
 */\r
 package eu.etaxonomy.cdm.database.update;\r
 \r
-import java.sql.SQLException;\r
 import java.util.ArrayList;\r
 import java.util.Arrays;\r
 import java.util.List;\r
@@ -29,7 +28,10 @@ import eu.etaxonomy.cdm.database.ICdmDataSource;
 public class TableCreator extends AuditedSchemaUpdaterStepBase<TableCreator> {\r
        private static final Logger logger = Logger.getLogger(TableCreator.class);\r
 \r
-       private static final boolean SORT_INDEX = true;\r
+       private static final boolean IS_LIST = true;\r
+       private static final boolean IS_1_TO_M = true;\r
+       private static final boolean IS_M_TO_M = false;\r
+\r
 \r
        private final List<String> columnNames;\r
        private final List<String> columnTypes;\r
@@ -41,15 +43,14 @@ public class TableCreator extends AuditedSchemaUpdaterStepBase<TableCreator> {
        private final boolean includeAnnotatableEntity;\r
        private boolean includeEventBase;\r
        private final boolean excludeVersionableAttributes;\r
-       protected List<ColumnAdder> columnAdders = new ArrayList<ColumnAdder>();\r
-       protected List<ISchemaUpdaterStep> mnTablesStepList = new ArrayList<ISchemaUpdaterStep>();\r
+       protected List<ColumnAdder> columnAdders = new ArrayList<>();\r
+       protected List<ISchemaUpdaterStep> mnTablesStepList = new ArrayList<>();\r
        private String primaryKeyParams;\r
        private String primaryKeyParams_AUD;\r
        private String uniqueParams;\r
        private String uniqueParams_AUD;\r
 \r
 \r
-//     public static final TableCreator NewInstance(String stepName, String tableName, List<String> columnNames, List<String> columnTypes, List<Object> defaultValues, List<Boolean> isNull, boolean includeAudTable){\r
        public static final TableCreator NewInstance(String stepName, String tableName, List<String> columnNames, List<String> columnTypes, boolean includeAudTable, boolean includeCdmBaseAttributes){\r
                return new TableCreator(stepName, tableName, columnNames, columnTypes, null, null, null, includeAudTable, includeCdmBaseAttributes, false, false, false);\r
        }\r
@@ -158,15 +159,14 @@ public class TableCreator extends AuditedSchemaUpdaterStepBase<TableCreator> {
                        //annotations\r
                        stepName= "Add @tableName annotations";\r
                        stepName = stepName.replace("@tableName", tableName);\r
-                       tableCreator = MnTableCreator.NewMnInstance(stepName, tableName, "Annotation", SchemaUpdaterBase.INCLUDE_AUDIT);\r
+                       tableCreator = MnTableCreator.NewMnInstance(stepName, tableName, "Annotation", SchemaUpdaterBase.INCLUDE_AUDIT, !IS_LIST, IS_1_TO_M);\r
                        mnTablesStepList.add(tableCreator);\r
 \r
                        //marker\r
                        stepName= "Add @tableName marker";\r
                        stepName = stepName.replace("@tableName", tableName);\r
-                       tableCreator = MnTableCreator.NewMnInstance(stepName, tableName, "Marker", SchemaUpdaterBase.INCLUDE_AUDIT);\r
+                       tableCreator = MnTableCreator.NewMnInstance(stepName, tableName, "Marker", SchemaUpdaterBase.INCLUDE_AUDIT, !IS_LIST, IS_1_TO_M);\r
                        mnTablesStepList.add(tableCreator);\r
-\r
                }\r
 \r
                if (includeIdentifiable){\r
@@ -174,33 +174,31 @@ public class TableCreator extends AuditedSchemaUpdaterStepBase<TableCreator> {
                        //credits\r
                        stepName= "Add @tableName credits";\r
                        stepName = stepName.replace("@tableName", tableName);\r
-                       tableCreator = MnTableCreator.NewMnInstance(stepName, tableName, null, "Credit", null, SchemaUpdaterBase.INCLUDE_AUDIT, SORT_INDEX, false);\r
+                       tableCreator = MnTableCreator.NewMnInstance(stepName, tableName, null, "Credit", null, null, SchemaUpdaterBase.INCLUDE_AUDIT, IS_LIST, IS_1_TO_M);\r
                        mnTablesStepList.add(tableCreator);\r
 \r
-\r
                        //identifier\r
                        stepName= "Add @tableName identifiers";\r
                        stepName = stepName.replace("@tableName", tableName);\r
-                       tableCreator = MnTableCreator.NewMnInstance(stepName, tableName, null, "Identifier", null, SchemaUpdaterBase.INCLUDE_AUDIT, SORT_INDEX, false);\r
+                       tableCreator = MnTableCreator.NewMnInstance(stepName, tableName, null, "Identifier", null, null, SchemaUpdaterBase.INCLUDE_AUDIT, IS_LIST, IS_1_TO_M);\r
                        mnTablesStepList.add(tableCreator);\r
 \r
-\r
                        //extensions\r
                        stepName= "Add @tableName extensions";\r
                        stepName = stepName.replace("@tableName", tableName);\r
-                       tableCreator = MnTableCreator.NewMnInstance(stepName, tableName, "Extension", SchemaUpdaterBase.INCLUDE_AUDIT);\r
+                       tableCreator = MnTableCreator.NewMnInstance(stepName, tableName, "Extension", SchemaUpdaterBase.INCLUDE_AUDIT, !IS_LIST, IS_1_TO_M);\r
                        mnTablesStepList.add(tableCreator);\r
 \r
                        //OriginalSourceBase\r
                        stepName= "Add @tableName sources";\r
                        stepName = stepName.replace("@tableName", tableName);\r
-                       tableCreator = MnTableCreator.NewMnInstance(stepName, tableName, null, "OriginalSourceBase", "sources", SchemaUpdaterBase.INCLUDE_AUDIT, false, true);\r
+                       tableCreator = MnTableCreator.NewMnInstance(stepName, tableName, null, "OriginalSourceBase", null, "sources", SchemaUpdaterBase.INCLUDE_AUDIT, ! IS_LIST, IS_1_TO_M);\r
                        mnTablesStepList.add(tableCreator);\r
 \r
                        //Rights\r
                        stepName= "Add @tableName rights";\r
                        stepName = stepName.replace("@tableName", tableName);\r
-                       tableCreator = MnTableCreator.NewMnInstance(stepName, tableName, "Rights", SchemaUpdaterBase.INCLUDE_AUDIT);\r
+                       tableCreator = MnTableCreator.NewMnInstance(stepName, tableName, "Rights", SchemaUpdaterBase.INCLUDE_AUDIT, !IS_LIST, IS_M_TO_M);\r
                        mnTablesStepList.add(tableCreator);\r
                }\r
        }\r
@@ -282,27 +280,31 @@ public class TableCreator extends AuditedSchemaUpdaterStepBase<TableCreator> {
        }\r
 \r
 \r
-       private boolean createForeignKeys(String tableName, boolean isAudit, ICdmDataSource datasource, IProgressMonitor monitor, CaseType caseType) throws SQLException {\r
+       private boolean createForeignKeys(String tableName, boolean isAudit, ICdmDataSource datasource, IProgressMonitor monitor, CaseType caseType) {\r
                boolean result = true;\r
                if (includeCdmBaseAttributes){\r
-                       if (! this.excludeVersionableAttributes){\r
+                       //updatedBy\r
+                   if (! this.excludeVersionableAttributes){\r
                                String attribute = "updatedby";\r
                                String referencedTable = "UserAccount";\r
                                result &= makeForeignKey(tableName, datasource, monitor, attribute, referencedTable, caseType);\r
                        }\r
 \r
+                   //createdBy\r
                        String attribute = "createdby";\r
                        String referencedTable = "UserAccount";\r
                        result &= makeForeignKey(tableName, datasource, monitor, attribute, referencedTable, caseType);\r
 \r
                }\r
                if (isAudit){\r
+                   //REV\r
                        String attribute = "REV";\r
                        String referencedTable = "AuditEvent";\r
                        result &= makeForeignKey(tableName, datasource, monitor, attribute, referencedTable, caseType);\r
                }\r
                if (this.includeEventBase){\r
-                       String attribute = "actor_id";\r
+                       //actor\r
+                   String attribute = "actor_id";\r
                        String referencedTable = "AgentBase";\r
                        result &= makeForeignKey(tableName, datasource, monitor, attribute, referencedTable, caseType);\r
                }\r
@@ -314,26 +316,30 @@ public class TableCreator extends AuditedSchemaUpdaterStepBase<TableCreator> {
                return result;\r
        }\r
 \r
-       public static boolean makeForeignKey(String tableName, ICdmDataSource datasource, IProgressMonitor monitor, String attribute, String referencedTable, CaseType caseType) throws SQLException {\r
+\r
+    public static boolean makeForeignKey(String tableName, ICdmDataSource datasource, IProgressMonitor monitor, String attribute, String referencedTable, CaseType caseType) {\r
                boolean result = true;\r
 \r
                referencedTable = caseType.transformTo(referencedTable);\r
 \r
+        String idSuffix = "_id";\r
+        if (isRevAttribute(attribute) || attribute.endsWith(idSuffix)){\r
+            idSuffix = "";\r
+        }\r
+        String columnName =  attribute + idSuffix;\r
+\r
                if (supportsForeignKeys(datasource, monitor, tableName, referencedTable)){\r
                        String index = "FK@tableName_@attribute";\r
                        index = index.replace("@tableName", tableName);\r
                        index = index.replace("@attribute", attribute);\r
 \r
-                       String idSuffix = "_id";\r
-                       if (isRevAttribute(attribute) || attribute.endsWith(idSuffix)){\r
-                               idSuffix = "";\r
-                       }\r
+\r
                        //OLD - don't remember why we used ADD INDEX here\r
 //                     String updateQuery = "ALTER TABLE @tableName ADD INDEX @index (@attribute), ADD FOREIGN KEY (@attribute) REFERENCES @referencedTable (@id)";\r
                        String updateQuery = "ALTER TABLE @tableName ADD @constraintName FOREIGN KEY (@attribute) REFERENCES @referencedTable (@id)";\r
                        updateQuery = updateQuery.replace("@tableName", tableName);\r
 //                     updateQuery = updateQuery.replace("@index", index);\r
-                       updateQuery = updateQuery.replace("@attribute", attribute + idSuffix);\r
+                       updateQuery = updateQuery.replace("@attribute", columnName);\r
                        updateQuery = updateQuery.replace("@referencedTable", referencedTable);\r
                        if (datasource.getDatabaseType().equals(DatabaseTypeEnum.MySQL)){\r
                                updateQuery = updateQuery.replace("@constraintName", "CONSTRAINT " + index);\r
@@ -357,9 +363,18 @@ public class TableCreator extends AuditedSchemaUpdaterStepBase<TableCreator> {
                        }\r
                        return result;\r
                }else{\r
-                       return true;\r
+                   //create only index\r
+                       IndexAdder indexAdder = IndexAdder.NewIntegerInstance("Add index instead of Foreign Key", tableName, columnName);\r
+                       try {\r
+                indexAdder.invoke(datasource, monitor, caseType);\r
+            } catch (Exception e) {\r
+                String message = "Problem when creating index instead of Foreign Key for " + tableName +"." + columnName +": " + e.getMessage();\r
+                monitor.warning(message);\r
+                logger.warn(message, e);\r
+                return true;   //we do not interrupt update if only index generation did not work\r
+            }\r
+                   return result;\r
                }\r
-\r
        }\r
 \r
        /**\r
@@ -401,10 +416,7 @@ public class TableCreator extends AuditedSchemaUpdaterStepBase<TableCreator> {
                                monitor.warning(message);\r
                                return true;  //default\r
                        }\r
-\r
                }\r
-\r
-\r
        }\r
 \r
        private static boolean isRevAttribute(String attribute) {\r
index 75fa2ca2d302f4d631b675503ea97db90451368a..d4b53c663bc43d25a6057aad3e8188295228b887 100644 (file)
@@ -1,8 +1,8 @@
 /**
 * Copyright (C) 2007 EDIT
-* European Distributed Institute of Taxonomy 
+* European Distributed Institute of Taxonomy
 * http://www.e-taxonomy.eu
-* 
+*
 * The contents of this file are subject to the Mozilla Public License Version 1.1
 * See LICENSE.TXT at the top of this package for the full license terms.
 */
@@ -41,13 +41,13 @@ public class SchemaUpdater_25_30 extends SchemaUpdaterBase {
        private static final Logger logger = Logger.getLogger(SchemaUpdater_25_30.class);
        private static final String startSchemaVersion = "2.5.0.0.201009211255";
        private static final String endSchemaVersion = "3.0.0.0.201011090000";
-       
+
 // ********************** FACTORY METHOD *******************************************
-       
+
        public static SchemaUpdater_25_30 NewInstance(){
                return new SchemaUpdater_25_30();
        }
-       
+
        /**
         * @param startSchemaVersion
         * @param endSchemaVersion
@@ -55,52 +55,52 @@ public class SchemaUpdater_25_30 extends SchemaUpdaterBase {
        protected SchemaUpdater_25_30() {
                super(startSchemaVersion, endSchemaVersion);
        }
-       
+
        /* (non-Javadoc)
         * @see eu.etaxonomy.cdm.database.update.SchemaUpdaterBase#getUpdaterList()
         */
        @Override
        protected List<ISchemaUpdaterStep> getUpdaterList() {
-               
+
                List<ISchemaUpdaterStep> stepList = new ArrayList<ISchemaUpdaterStep>();
                String stepName;
-               
+
                //add feature tree attribute to feature node table
                stepName = "Add feature tree addtribue to feature node";
                //TODO defaultValue & not null
                ColumnAdder featureTreeColAdder = ColumnAdder.NewIntegerInstance(stepName, "FeatureNode", "FeatureTree_id", INCLUDE_AUDIT, false, "FeatureTree");
                stepList.add(featureTreeColAdder);
-               
+
                //compute feature tree column
                stepName = "Update feature node tree column";
                FeatureNodeTreeColumnUpdater fntcu = FeatureNodeTreeColumnUpdater.NewInstance(stepName, INCLUDE_AUDIT);
                stepList.add(fntcu);
-               
+
                //Key statement
                stepName = "Create KeyStatement tables";
                TableCreator tableCreator = TableCreator.NewInstance(stepName, "KeyStatement", new String[]{}, new String[]{}, new String[]{}, INCLUDE_AUDIT, INCLUDE_CDM_BASE);
                stepList.add(tableCreator);
-               
+
                //KeyStatement_LanguageString
                stepName = "Create KeyStatement label";
                tableCreator = MapTableCreator.NewMapTableInstance(stepName,  "KeyStatement", null,  "LanguageString", "label", "DefinedTermBase", SchemaUpdaterBase.INCLUDE_AUDIT);
                stepList.add(tableCreator);
 
-               
+
                //PolytomousKey
                stepName = "Create PolytomousKey tables";
                tableCreator = TableCreator.NewIdentifiableInstance(stepName, "PolytomousKey", new String[]{"root_id"}, new String[]{"int"}, new String[]{"PolytomousKeyNode"}, INCLUDE_AUDIT);
                stepList.add(tableCreator);
-               
+
                //create table PolytomousKeyNode_PolytomousKeyNode_AUD (REV integer not null, parent_id integer not null, id integer not null, sortIndex integer not null, revtype tinyint, primary key (REV, parent_id, id, sortIndex)) ENGINE=MYISAM DEFAULT CHARSET=utf8
                tableCreator = TableCreator.NewInstance(stepName, "PolytomousKeyNode_PolytomousKeyNode_AUD", new String[]{"REV", "parent_id", "id", "sortIndex", "revtype"}, new String[]{"int","int","int","int","tinyint"}, new String[]{null, "PolytomousKeyNode", null, null, null},! INCLUDE_AUDIT, ! INCLUDE_CDM_BASE);
                tableCreator.setPrimaryKeyParams("REV, parent_id, id, sortIndex", null);
                tableCreator.setUniqueParams(null, null);
                stepList.add(tableCreator);
-               
+
                //covered taxa
                stepName= "Add polytomous key covered taxa";
-               tableCreator = MnTableCreator.NewMnInstance(stepName, "PolytomousKey", null, "TaxonBase", "coveredtaxa", SchemaUpdaterBase.INCLUDE_AUDIT, false, true);
+               tableCreator = MnTableCreator.NewMnInstance(stepName, "PolytomousKey", null, "TaxonBase", null, "coveredtaxa", SchemaUpdaterBase.INCLUDE_AUDIT, false, false);
                stepList.add(tableCreator);
 
                //Polytomous key node
@@ -112,12 +112,12 @@ public class SchemaUpdater_25_30 extends SchemaUpdaterBase {
                stepName = "Create PolytomousKeyNode modifying text";
                tableCreator = MapTableCreator.NewMapTableInstance(stepName,  "PolytomousKeyNode", null,  "LanguageString", "modifyingtext", "DefinedTermBase", SchemaUpdaterBase.INCLUDE_AUDIT);
                stepList.add(tableCreator);
-               
+
                //rename named area featureTree_id
                stepName = "Rename polytomouskey_namedarea.featureTree_id -> polytomouskey_id";
                ColumnNameChanger colChanger = ColumnNameChanger.NewIntegerInstance(stepName, "PolytomousKey_NamedArea", "FeatureTree_id", "PolytomousKey_id", INCLUDE_AUDIT);
                stepList.add(colChanger);
-               
+
                //rename polytomouskey_scope featureTree_id
                stepName = "Rename polytomouskey_scope.featureTree_id -> polytomouskey_id";
                colChanger = ColumnNameChanger.NewIntegerInstance(stepName, "PolytomousKey_Scope", "FeatureTree_id", "PolytomousKey_id", INCLUDE_AUDIT);
@@ -127,12 +127,12 @@ public class SchemaUpdater_25_30 extends SchemaUpdaterBase {
                stepName = "Move polytomous key data from feature tree to polytomous key";
                PolytomousKeyDataMover dataMover = PolytomousKeyDataMover.NewInstance(stepName, INCLUDE_AUDIT);
                stepList.add(dataMover);
-               
+
                //remove DTYPE from feature node
                stepName = "Remove feature tree DTYPE column";
                ColumnRemover colRemover = ColumnRemover.NewInstance(stepName, "FeatureTree", "DTYPE", INCLUDE_AUDIT);
                stepList.add(colRemover);
-               
+
                //remove feature node taxon column
                stepName = "Remove feature node taxon column";
                colRemover = ColumnRemover.NewInstance(stepName, "FeatureNode", "taxon_id", INCLUDE_AUDIT);
@@ -142,34 +142,34 @@ public class SchemaUpdater_25_30 extends SchemaUpdaterBase {
                stepName = "Remove FeatureNode_Representation MN";
                TableDroper tableDropper = TableDroper.NewInstance(stepName, "FeatureNode_Representation", INCLUDE_AUDIT);
                stepList.add(tableDropper);
-               
-               
+
+
                //add exsiccatum
                stepName = "Add exsiccatum to specimen";
                ColumnAdder exsiccatumAdder = ColumnAdder.NewStringInstance(stepName, "SpecimenOrObservationBase", "exsiccatum", INCLUDE_AUDIT);
                stepList.add(exsiccatumAdder);
-               
+
                //add primary collector
                stepName = "Add primary collector to field unit";
                ColumnAdder primaryCollectorAdder = ColumnAdder.NewIntegerInstance(stepName, "SpecimenOrObservationBase", "primaryCollector_id", INCLUDE_AUDIT, false, "AgentBase");
                stepList.add(primaryCollectorAdder);
 
-               
+
                //taxonomic tree -> classification
                stepName = "Rename taxonomic tree to classification";
                TableNameChanger tableNameChanger = TableNameChanger.NewInstance(stepName, "TaxonomicTree", "Classification", INCLUDE_AUDIT);
                stepList.add(tableNameChanger);
-               
+
                //TaxonomicTree_Annotation -> classification_Annotation
                stepName = "Rename TaxonomicTree_Annotation to Classification_Annotation";
                tableNameChanger = TableNameChanger.NewInstance(stepName, "TaxonomicTree_Annotation", "Classification_Annotation", INCLUDE_AUDIT);
                stepList.add(tableNameChanger);
-               
+
                stepName = "Rename taxonomicTree_id column in Classification_Annotation";
                ColumnNameChanger columnNameChanger = ColumnNameChanger.NewIntegerInstance(stepName, "Classification_Annotation", "taxonomicTree_id", "classification_id", INCLUDE_AUDIT);
                stepList.add(columnNameChanger);
-               
-               
+
+
                //TaxonomicTree_Credit -> classification_Credit
                stepName = "Rename TaxonomicTree_Credit to Classification_Credit";
                tableNameChanger = TableNameChanger.NewInstance(stepName, "TaxonomicTree_Credit", "Classification_Credit", INCLUDE_AUDIT);
@@ -178,8 +178,8 @@ public class SchemaUpdater_25_30 extends SchemaUpdaterBase {
                stepName = "Rename taxonomicTree_id column in Classification_Credit";
                columnNameChanger = ColumnNameChanger.NewIntegerInstance(stepName, "Classification_Credit", "taxonomicTree_id", "classification_id", INCLUDE_AUDIT);
                stepList.add(columnNameChanger);
-               
-               
+
+
                //TaxonomicTree_Extension -> classification_Extension
                stepName = "Rename TaxonomicTree_Extension to Classification_Extension";
                tableNameChanger = TableNameChanger.NewInstance(stepName, "TaxonomicTree_Extension", "Classification_Extension", INCLUDE_AUDIT);
@@ -189,7 +189,7 @@ public class SchemaUpdater_25_30 extends SchemaUpdaterBase {
                columnNameChanger = ColumnNameChanger.NewIntegerInstance(stepName, "Classification_Extension", "taxonomicTree_id", "classification_id", INCLUDE_AUDIT);
                stepList.add(columnNameChanger);
 
-               
+
                //TaxonomicTree_Marker -> classification_Marker
                stepName = "Rename TaxonomicTree_Marker to Classification_Marker";
                tableNameChanger = TableNameChanger.NewInstance(stepName, "TaxonomicTree_Marker", "Classification_Marker", INCLUDE_AUDIT);
@@ -199,7 +199,7 @@ public class SchemaUpdater_25_30 extends SchemaUpdaterBase {
                columnNameChanger = ColumnNameChanger.NewIntegerInstance(stepName, "Classification_Marker", "taxonomicTree_id", "classification_id", INCLUDE_AUDIT);
                stepList.add(columnNameChanger);
 
-               
+
                //TaxonomicTree_OriginalSourceBase -> classification_OriginalSourceBase
                stepName = "Rename TaxonomicTree_OriginalSourceBase to Classification_OriginalSourceBase";
                tableNameChanger = TableNameChanger.NewInstance(stepName, "TaxonomicTree_OriginalSourceBase", "Classification_OriginalSourceBase", INCLUDE_AUDIT);
@@ -209,7 +209,7 @@ public class SchemaUpdater_25_30 extends SchemaUpdaterBase {
                columnNameChanger = ColumnNameChanger.NewIntegerInstance(stepName, "Classification_OriginalSourceBase", "taxonomicTree_id", "classification_id", INCLUDE_AUDIT);
                stepList.add(columnNameChanger);
 
-               
+
                //TaxonomicTree_Rights -> classification_Rights
                stepName = "Rename TaxonomicTree_Rights to Classification_Rights";
                tableNameChanger = TableNameChanger.NewInstance(stepName, "TaxonomicTree_Rights", "Classification_Rights", INCLUDE_AUDIT);
@@ -219,7 +219,7 @@ public class SchemaUpdater_25_30 extends SchemaUpdaterBase {
                columnNameChanger = ColumnNameChanger.NewIntegerInstance(stepName, "Classification_Rights", "taxonomicTree_id", "classification_id", INCLUDE_AUDIT);
                stepList.add(columnNameChanger);
 
-               
+
                //TaxonomicTree_TaxonNode -> classification_TaxonNode
                stepName = "Rename TaxonomicTree_TaxonNode to Classification_TaxonNode";
                tableNameChanger = TableNameChanger.NewInstance(stepName, "TaxonomicTree_TaxonNode", "Classification_TaxonNode", INCLUDE_AUDIT);
@@ -243,7 +243,7 @@ public class SchemaUpdater_25_30 extends SchemaUpdaterBase {
                stepName = "Rename description column in SpecimenOrObservationBase_LanguageString";
                columnNameChanger = ColumnNameChanger.NewIntegerInstance(stepName, "SpecimenOrObservationBase_LanguageString", "description_mapkey_id", "definition_mapkey_id", INCLUDE_AUDIT);
                stepList.add(columnNameChanger);
-               
+
                //Rename derivationevent_id column in SpecimenOrObservationBase
                stepName = "Rename derivationevent_id column in SpecimenOrObservationBase";
                columnNameChanger = ColumnNameChanger.NewIntegerInstance(stepName, "SpecimenOrObservationBase", "derivationevent_id", "derivedfrom_id", INCLUDE_AUDIT);
@@ -289,7 +289,7 @@ public class SchemaUpdater_25_30 extends SchemaUpdaterBase {
                stepName = "Rename taxon_fk column in MediaKey_Taxon";
                columnNameChanger = ColumnNameChanger.NewIntegerInstance(stepName, "MediaKey_Taxon", "taxon_fk", "taxon_id", INCLUDE_AUDIT);
                stepList.add(columnNameChanger);
-               
+
 
                //Rename multiAccessKey_fk column in MultiAccessKey_Taxon
                stepName = "Rename multiAccessKey_fk column in MultiAccessKey_Taxon";
@@ -300,12 +300,12 @@ public class SchemaUpdater_25_30 extends SchemaUpdaterBase {
                stepName = "Rename taxon_fk column in MultiAccessKey_Taxon";
                columnNameChanger = ColumnNameChanger.NewIntegerInstance(stepName, "MultiAccessKey_Taxon", "taxon_fk", "taxon_id", INCLUDE_AUDIT);
                stepList.add(columnNameChanger);
-               
+
                //add the table hibernate_sequences
                stepName = "Add the table hibernate_sequences to store the table specific sequences in";
                SequenceTableCreator step = SequenceTableCreator.NewInstance(stepName);
                stepList.add(step);
-               
+
                return stepList;
        }
 
index e07c067103cfe9d31cdee214777fade4a569737d..e63f4698a6f7e4e1ed3366e9356de977c6a27cc2 100644 (file)
@@ -487,7 +487,7 @@ public class SchemaUpdater_31_33 extends SchemaUpdaterBase {
                                !INCLUDE_AUDIT, false);
                stepPref.setPrimaryKeyParams("key_subject, key_predicate", null);
                stepList.add(stepPref);
-               
+
                // update RightsTerm to RightsType #1306
                stepName = "Update RightsTerm -> RightsType";
                String updateSql = "UPDATE @@DefinedTermBase@@ SET DTYPE = 'RightsType'  WHERE DTYPE = 'RightsTerm'";
@@ -686,8 +686,8 @@ public class SchemaUpdater_31_33 extends SchemaUpdaterBase {
                String firstTable = "Amplification";
                String secondTable = "SingleRead";
                step = MnTableCreator
-                               .NewMnInstance(stepName, firstTable, null, secondTable, null,
-                                               SchemaUpdaterBase.INCLUDE_AUDIT, false, true);
+                               .NewMnInstance(stepName, firstTable, null, secondTable, null, null,
+                                               SchemaUpdaterBase.INCLUDE_AUDIT, !IS_LIST, IS_1_TO_M);
                stepList.add(step);
 
                // sequence - single reads #3360
@@ -695,8 +695,8 @@ public class SchemaUpdater_31_33 extends SchemaUpdaterBase {
                firstTable = "Sequence";
                secondTable = "SingleRead";
                step = MnTableCreator
-                               .NewMnInstance(stepName, firstTable, null, secondTable, null,
-                                               SchemaUpdaterBase.INCLUDE_AUDIT, false, true);
+                               .NewMnInstance(stepName, firstTable, null, secondTable, null, null,
+                                               SchemaUpdaterBase.INCLUDE_AUDIT, !IS_LIST, IS_1_TO_M);
                stepList.add(step);
 
                // sequence - barcode #3360
index d7dd7c9163b0f14dc62e4af6433efdadcd3a359f..5804cdcb79eea106314857f807495cb8df305ef9 100644 (file)
@@ -276,7 +276,7 @@ public class SchemaUpdater_40_41 extends SchemaUpdaterBase {
         stepName = "Add identityCache index";
         tableName = "SpecimenOrObservationBase";
         newColumnName = "identityCache";
-        step = IndexAdder.NewInstance(stepName, tableName, newColumnName, null);
+        step = IndexAdder.NewStringInstance(stepName, tableName, newColumnName, null);
         stepList.add(step);
 
         stepName = "Add protectedIdentityCache";
index 129046b3eae2602058cbdae57b3a1df0df08d3eb..daaba773c007ae5194e6a64f034ed68f44c6e5dd 100644 (file)
@@ -53,9 +53,7 @@ public class SchemaUpdater_41_47 extends SchemaUpdaterBase {
                String stepName;
                String tableName;
                ISchemaUpdaterStep step;
-               String query;
                String newColumnName;
-               String oldColumnName;
 
                List<ISchemaUpdaterStep> stepList = new ArrayList<>();
 
@@ -80,21 +78,21 @@ public class SchemaUpdater_41_47 extends SchemaUpdaterBase {
         //subtree filter
         stepName= "Add geo filter MN table to WorkingSet";
         String firstTableName = "WorkingSet";
-        String secondTableName = "NamedArea";
-        String secondTableAlias = "geoFilter";
-        boolean hasSortIndex = false;
-        boolean secondTableInKey = true;
-        step = MnTableCreator.NewMnInstance(stepName, firstTableName, null, secondTableName, secondTableAlias, INCLUDE_AUDIT, hasSortIndex, secondTableInKey);
+        String secondTableAlias = "NamedArea";
+        String secondTableName = "DefinedTermBase";
+        String attributeName = "geoFilter";
+        boolean isList = ! IS_LIST;
+        step = MnTableCreator.NewMnInstance(stepName, firstTableName, null, secondTableName, secondTableAlias, attributeName, INCLUDE_AUDIT, isList, IS_M_TO_M);
         stepList.add(step);
 
         //subtree filter
         stepName= "Add subtree filter MN table to WorkingSet";
         firstTableName = "WorkingSet";
         secondTableName = "TaxonNode";
-        secondTableAlias = "taxonSubtreeFilter";
-        hasSortIndex = false;
-        secondTableInKey = true;
-        step = MnTableCreator.NewMnInstance(stepName, firstTableName, null, secondTableName, secondTableAlias, INCLUDE_AUDIT, hasSortIndex, secondTableInKey);
+        secondTableAlias = null;
+        attributeName = "taxonSubtreeFilter";
+        isList = ! IS_LIST;
+        step = MnTableCreator.NewMnInstance(stepName, firstTableName, null, secondTableName, secondTableAlias, attributeName, INCLUDE_AUDIT, isList, IS_M_TO_M);
         stepList.add(step);
 
         //#6258
@@ -113,20 +111,18 @@ public class SchemaUpdater_41_47 extends SchemaUpdaterBase {
         stepName= "Add blockedBy_id to Registration";
         firstTableName = "Registration";
         secondTableName = "Registration";
-        secondTableAlias = "blockedBy";
-        hasSortIndex = false;
-        secondTableInKey = true;
-        step = MnTableCreator.NewMnInstance(stepName, firstTableName, null, secondTableName, secondTableAlias, INCLUDE_AUDIT, hasSortIndex, secondTableInKey);
+        attributeName = "blockedBy";
+        isList = ! IS_LIST;
+        step = MnTableCreator.NewMnInstance(stepName, firstTableName, null, secondTableName, null, attributeName, INCLUDE_AUDIT, isList, IS_M_TO_M);
         stepList.add(step);
 
         //add type designations
         stepName= "Add type designations to Registration";
         firstTableName = "Registration";
         secondTableName = "TypeDesignationBase";
-        secondTableAlias = "typeDesignations";
-        hasSortIndex = false;
-        secondTableInKey = true;
-        step = MnTableCreator.NewMnInstance(stepName, firstTableName, null, secondTableName, secondTableAlias, INCLUDE_AUDIT, hasSortIndex, secondTableInKey);
+        attributeName = "typeDesignations";
+        isList = false;
+        step = MnTableCreator.NewMnInstance(stepName, firstTableName, null, secondTableName, null, attributeName, INCLUDE_AUDIT, isList, IS_M_TO_M);
         stepList.add(step);
 
         //#5258
@@ -137,6 +133,15 @@ public class SchemaUpdater_41_47 extends SchemaUpdaterBase {
         step = ColumnAdder.NewDateTimeInstance(stepName, tableName, newColumnName, INCLUDE_AUDIT, !NOT_NULL);
         stepList.add(step);
 
+        //#6535 update termtype for CdmMetaData (int => string)
+
+        //ModelUpdateResult
+
+        //Remove termupdater and allow update only from version 4.0
+
+
+
+
         return stepList;
     }
 
index 65ab76497b6da71a74833f9d9267e5ed35352f57..bb0d33d8accf0fc33b1863e983305afd90c64033 100644 (file)
@@ -34,7 +34,7 @@ public class TestModelUpdate {
 
 
        private void testSelectedDb(){
-               DbSchemaValidation schema = DbSchemaValidation.CREATE;
+               DbSchemaValidation schema = DbSchemaValidation.VALIDATE;
 
                DatabaseTypeEnum dbType = DatabaseTypeEnum.MySQL;