latest changes to Schema updater and handling of blank abbrevLabels
authorAndreas Müller <a.mueller@bgbm.org>
Fri, 9 Aug 2013 15:41:05 +0000 (15:41 +0000)
committerAndreas Müller <a.mueller@bgbm.org>
Fri, 9 Aug 2013 15:41:05 +0000 (15:41 +0000)
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/DefinedTermBase.java
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/v31_33/SchemaUpdater_31_33.java

index e625baacc2c930699cdb2c1919eb91a37608c468..3137e2ffc5f2ab5c52f5165273342ea48ecd1e76 100644 (file)
@@ -37,6 +37,7 @@ import javax.xml.bind.annotation.XmlTransient;
 import javax.xml.bind.annotation.XmlType;
 
 import org.apache.log4j.Logger;
+import org.codehaus.plexus.util.StringUtils;
 import org.hibernate.annotations.Cascade;
 import org.hibernate.annotations.CascadeType;
 import org.hibernate.envers.Audited;
@@ -364,7 +365,7 @@ public abstract class DefinedTermBase<T extends DefinedTermBase> extends TermBas
         String label = csvLine.get(2).trim();
         String description = csvLine.get(3);
         String abbreviatedLabel = csvLine.get(4);
-        if (abbrevAsId ){
+        if (abbrevAsId && StringUtils.isNotBlank(abbreviatedLabel)){
                newInstance.setIdInVocabulary(abbreviatedLabel);  //new in 3.3
         }
         newInstance.addRepresentation(Representation.NewInstance(description, label, abbreviatedLabel, lang) );
index b97b9e8489735839e2ecb074c07e10efc53a63f0..ae1757884aa0216ab81edeed1defd2e906baf2b6 100644 (file)
@@ -62,7 +62,7 @@ import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType;
 
 /**
  * @author a.mueller
- * @created Oct 11, 2011
+ * @created Jun 06, 2013
  */
 public class SchemaUpdater_31_33 extends SchemaUpdaterBase {
 
@@ -125,7 +125,7 @@ public class SchemaUpdater_31_33 extends SchemaUpdaterBase {
                //create and update elevenation max, remove error column
                updateElevationMax(stepList);
                
-               //create taxon node tree index
+               //create TaxonNode tree index
                stepName = "Create taxon node tree index";
                tableName = "TaxonNode";
                columnName = "treeIndex";
@@ -133,17 +133,18 @@ public class SchemaUpdater_31_33 extends SchemaUpdaterBase {
                step = ColumnAdder.NewStringInstance(stepName, tableName, columnName, 255, INCLUDE_AUDIT);
                stepList.add(step);
                
-               //TODO update tree index
+               //FIXME update tree index
                
-               //create original source type column
+               //create TaxonNode sort index column
                stepName = "Create taxon node sort index column";
                tableName = "TaxonNode";
                columnName = "sortIndex";
                step = ColumnAdder.NewIntegerInstance(stepName, tableName, columnName, INCLUDE_AUDIT, false, null);
                stepList.add(step);
                
-               //TODO implement sorted behaviour in model first !!
-               //TODO update sortindex (similar updater exists already for FeatureNode#sortIndex in schema update 25_30 
+               //FIXME implement sorted behaviour in model first !!
+               //FIXME update sortindex (similar updater exists already for FeatureNode#sortIndex in schema update 25_30 
+                               //      but     had a bad performance
                
                //create feature node tree index
                stepName = "Create feature node tree index";
@@ -153,7 +154,7 @@ public class SchemaUpdater_31_33 extends SchemaUpdaterBase {
                step = ColumnAdder.NewStringInstance(stepName, tableName, columnName, 255, INCLUDE_AUDIT);
                stepList.add(step);
                                
-               //TODO update tree index for feature node
+               //FIXME update tree index for feature node
                
                //update introduced: adventitious (casual) label
                //#3540
@@ -317,10 +318,21 @@ public class SchemaUpdater_31_33 extends SchemaUpdaterBase {
                step = ColumnAdder.NewIntegerInstance(stepName, tableName, columnName, INCLUDE_AUDIT,  true, relatedTable); 
                stepList.add(step);
 
-               //TODO remove citation_id and citationmicroreference columns from Media table #2541
-               //first check if columns are always empty
+               //remove citation_id and citationmicroreference columns from Media table #2541
+               //FIXME first check if columns are always empty
+               stepName = "Remove citation column from Media";
+               tableName = "Media";
+               columnName = "citation_id";
+               step = ColumnRemover.NewInstance(stepName, tableName, columnName, INCLUDE_AUDIT);
+               stepList.add(step);
+               
+               stepName = "Remove citation microreference column from Media";
+               tableName = "Media";
+               columnName = "citationMicroReference";
+               step = ColumnRemover.NewInstance(stepName, tableName, columnName, INCLUDE_AUDIT);
+               stepList.add(step);
                
-               //TODO update length of all title caches and full title cache in names
+               //FIXME update length of all title caches and full title cache in names
                //https://dev.e-taxonomy.eu/trac/ticket/1592
                
                //rename FK column states_id -> stateData_id in DescriptionElementBase_StateData(+AUD)  #2923
@@ -331,10 +343,6 @@ public class SchemaUpdater_31_33 extends SchemaUpdaterBase {
                step = ColumnNameChanger.NewIntegerInstance(stepName, tableName, oldColumnName, newColumnName, INCLUDE_AUDIT);
                stepList.add(step);
                
-               
-               //TODO add sortIndex column to TaxonNode and fill with values (compare with FeatureNode filling, however, this
-//             had a bad performance
-               
                //specimen descriptions #3571
                //add column DescriptionBase.Specimen_ID  #3571
                stepName = "Add specimen_id column to DescriptionBase";
@@ -345,7 +353,7 @@ public class SchemaUpdater_31_33 extends SchemaUpdaterBase {
                step = ColumnAdder.NewIntegerInstance(stepName, tableName, columnName, INCLUDE_AUDIT, notNull, referencedTable);
                stepList.add(step);
                
-               //TODO update DescriptionBase.Specimen_ID data  #3571
+               //FIXME update DescriptionBase.Specimen_ID data  #3571
 
                //remove tables DescriptionBase_SpecimenOrObservationBase(_AUD)  #3571
                stepName = "Remove table DescriptionBase_SpecimenOrObservationBase";
@@ -385,10 +393,8 @@ public class SchemaUpdater_31_33 extends SchemaUpdaterBase {
                step = TableDroper.NewInstance(stepName, tableName, INCLUDE_AUDIT);
                stepList.add(step);
                
-               //TODO (read first #3360) add columns GeneticAccessionNumber(String) to Sequence 
-
-               //TODO update molecular data #3360
-               
+               //remove old sequence columns  
+               removeOldSequenceColumns(stepList);
                
                //add MediaSpecimen column #3614
                stepName = "Add mediaSpecimen column to SpecimenOrObservationBase";
@@ -409,7 +415,7 @@ public class SchemaUpdater_31_33 extends SchemaUpdaterBase {
                addTimeperiodToDescriptionElement(stepList);
 
 
-               //TODO add Marker vocabulary and terms #3591 => TermUpdater
+               //TODO add DnaMarker vocabulary and terms #3591 => TermUpdater
                
                //SpecimenOrObservationBase_Media #3597
                stepName = "Remove table SpecimenOrObservationBase_Media";
@@ -580,6 +586,53 @@ public class SchemaUpdater_31_33 extends SchemaUpdaterBase {
        }
 
 
+       private void removeOldSequenceColumns(List<ISchemaUpdaterStep> stepList) {
+               //TODO also remove Identifiable attributes ??
+               
+               //remove citationmicroreference
+               String stepName = "Remove citationmicroreference column";
+               String tableName = "Sequence";
+               String columnName = "citationMicroReference";
+               ISchemaUpdaterStep step = ColumnRemover.NewInstance(stepName, tableName, columnName, INCLUDE_AUDIT);
+               stepList.add(step);
+               
+               //remove datesequenced
+               stepName = "Remove datesequenced column";
+               columnName = "datesequenced";
+               step = ColumnRemover.NewInstance(stepName, tableName, columnName, INCLUDE_AUDIT);
+               stepList.add(step);
+               
+               //remove length
+               stepName = "Remove length column";
+               columnName = "length";
+               step = ColumnRemover.NewInstance(stepName, tableName, columnName, INCLUDE_AUDIT);
+               stepList.add(step);
+               
+               //remove sequence
+               stepName = "Remove sequence column";
+               columnName = "sequence";
+               step = ColumnRemover.NewInstance(stepName, tableName, columnName, INCLUDE_AUDIT);
+               stepList.add(step);             
+
+               //remove locus_id
+               stepName = "Remove locus_id column";
+               columnName = "locus_id";
+               step = ColumnRemover.NewInstance(stepName, tableName, columnName, INCLUDE_AUDIT);
+               stepList.add(step);
+               
+               //remove publishedin_id
+               stepName = "Remove publishedin_id column";
+               columnName = "publishedin_id";
+               step = ColumnRemover.NewInstance(stepName, tableName, columnName, INCLUDE_AUDIT);
+               stepList.add(step);     
+               
+               //remove barcode
+               stepName = "Remove barcode column";
+               columnName = "barcode";
+               step = ColumnRemover.NewInstance(stepName, tableName, columnName, INCLUDE_AUDIT);
+               stepList.add(step);     
+       }
+
        private void updateIdInVocabulary(List<ISchemaUpdaterStep> stepList) {
 
                String queryVocUuid = " UPDATE DefinedTermBase dtb INNER JOIN TermVocabulary voc ON voc.id = dtb.vocabulary_id" +