Created interfaces for cdm base classes. Started integrating progress monitor funtion...
authorn.hoffmann <n.hoffmann@localhost>
Thu, 16 Sep 2010 14:01:02 +0000 (14:01 +0000)
committern.hoffmann <n.hoffmann@localhost>
Thu, 16 Sep 2010 14:01:02 +0000 (14:01 +0000)
17 files changed:
.gitattributes
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/common/CdmApplicationAwareDefaultImport.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/common/CdmIoBase.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/common/ICdmIO.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/common/IImportConfigurator.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/common/IIoConfigurator.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/common/IoConfiguratorBase.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/specimen/abcd206/in/Abcd206Import.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/AnnotatableEntity.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/IAnnotatableEntity.java [new file with mode: 0644]
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/IVersionableEntity.java [new file with mode: 0644]
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/VersionableEntity.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/description/CategoricalData.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/description/DescriptionElementBase.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/description/IModifiable.java [new file with mode: 0644]
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/description/StateData.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/description/StatisticalMeasurementValue.java

index 24aac9e1f5a3af5662cd91f975d175cbfb2bc2a1..203068751dcf7d4069804c0ae68b74e8999229b3 100644 (file)
@@ -1758,6 +1758,7 @@ cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/ExtensionType.java -tex
 cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/Figure.java -text
 cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/GrantedAuthorityImpl.java -text
 cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/Group.java -text
+cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/IAnnotatableEntity.java -text svneol=unset#text/plain
 cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/ICdmBase.java -text
 cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/IDefinedTerm.java -text
 cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/IEvent.java -text
@@ -1769,6 +1770,7 @@ cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/IParsable.java -text
 cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/IReferencedEntity.java -text
 cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/IRelated.java -text
 cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/ISourceable.java -text
+cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/IVersionableEntity.java -text svneol=unset#text/plain
 cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/IdentifiableEntity.java -text
 cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/IdentifiableSource.java -text
 cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/LSID.java -text
@@ -1819,6 +1821,7 @@ cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/description/Feature.java -text
 cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/description/FeatureNode.java -text
 cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/description/FeatureTree.java -text
 cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/description/IIdentificationKey.java -text
+cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/description/IModifiable.java -text svneol=unset#text/plain
 cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/description/IndividualsAssociation.java -text
 cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/description/MeasurementUnit.java -text
 cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/description/MediaKey.java -text
index 925127f8486d0c0ef308e444a480774e9cf16e27..22b6f46cd1f1cf241f5aea7f83d2d947085bc4c5 100644 (file)
@@ -144,9 +144,8 @@ public class CdmApplicationAwareDefaultImport<T extends IImportConfigurator> imp
                }\r
                                \r
                ReferenceBase sourceReference = config.getSourceReference();\r
-               String message = "Start import from Source '"+ config.getSourceNameString() + "' to destination '" + config.getDestinationNameString() + "'";\r
-               logger.info(message);\r
-               config.updateProgress(message);\r
+               logger.info("Start import from Source '"+ config.getSourceNameString() + "' to destination '" + config.getDestinationNameString() + "'");\r
+               \r
                \r
                ImportStateBase state = config.getNewState();\r
                state.initialize(config);\r
@@ -190,11 +189,9 @@ public class CdmApplicationAwareDefaultImport<T extends IImportConfigurator> imp
 //                     \r
 //             }\r
                \r
-               message = "End import from source '" + config.getSourceNameString() \r
-                                                               + "' to destination '" + config.getDestinationNameString() + "'"+\r
-                                                               (result? "(successful)":"(with errors)");\r
-               logger.info(message) ;\r
-               config.updateProgress(message);\r
+               logger.info("End import from source '" + config.getSourceNameString() \r
+                               + "' to destination '" + config.getDestinationNameString() + "'"+\r
+                               (result? "(successful)":"(with errors)")) ;\r
                return result;\r
        }\r
        \r
index 92d92462ec934ac1168b976db94851c3ac75f12e..a8d4be1a93dc1230f2a92675b5eb3b4e9f53e216 100644 (file)
@@ -21,6 +21,7 @@ import org.springframework.transaction.TransactionStatus;
 import org.springframework.transaction.support.DefaultTransactionDefinition;\r
 \r
 import eu.etaxonomy.cdm.api.application.CdmApplicationDefaultConfiguration;\r
+import eu.etaxonomy.cdm.common.IProgressMonitor;\r
 import eu.etaxonomy.cdm.model.common.CdmBase;\r
 \r
 /**\r
@@ -44,7 +45,7 @@ public abstract class CdmIoBase<STATE extends IoStateBase> extends CdmApplicatio
                        logger.warn("No invoke for " + ioName + " (ignored)");\r
                        return true;\r
                }else{\r
-                       state.getConfig().updateProgress("Invoking " + ioName);\r
+                       updateProgress(state, "Invoking " + ioName);\r
                        return doInvoke(state);\r
                }\r
        }\r
@@ -172,6 +173,17 @@ public abstract class CdmIoBase<STATE extends IoStateBase> extends CdmApplicatio
                }\r
        }\r
 \r
+       @Override\r
+       public void updateProgress(STATE state, String message) {\r
+               updateProgress(state, message, 1);\r
+       };\r
        \r
-\r
+       @Override\r
+       public void updateProgress(STATE state, String message, int worked) {\r
+               if(state.getConfig().getProgressMonitor() != null){\r
+                       IProgressMonitor monitor = state.getConfig().getProgressMonitor();\r
+                       monitor.worked(worked);\r
+                       monitor.subTask(message);\r
+               }\r
+       }\r
 }\r
index 36bf311f1b922e61b185c055eb254921c1f1f270..86d0d66646202f54f64202e69193f6c78662eb8a 100644 (file)
@@ -38,6 +38,8 @@ public interface ICdmIO<STATE extends IoStateBase> {
        \r
 //     public boolean invoke(IoState<T> state);\r
        \r
+       public void updateProgress(STATE state, String message);\r
        \r
+       public void updateProgress(STATE state, String message, int worked);\r
        \r
 }
\ No newline at end of file
index 9d1320058e3ddf9bc668682b54b0be99724108cf..3438e37f64602fc6d67ccc4d2b0fb62868ef51d5 100644 (file)
@@ -11,7 +11,6 @@ package eu.etaxonomy.cdm.io.common;
 \r
 import java.util.UUID;\r
 \r
-import eu.etaxonomy.cdm.common.IProgressMonitor;\r
 import eu.etaxonomy.cdm.database.DbSchemaValidation;\r
 import eu.etaxonomy.cdm.database.ICdmDataSource;\r
 import eu.etaxonomy.cdm.io.common.mapping.IInputTransformer;\r
index 7cff221e628e69c6f7d0da6fe61d07a933112438..b2a7ecb041cb6b5819a2284589cbc8299017fe7c 100644 (file)
@@ -73,10 +73,5 @@ public interface IIoConfigurator {
         * @return\r
         */\r
        public IProgressMonitor getProgressMonitor();\r
-       \r
-       /**\r
-        * \r
-        * @param message\r
-        */\r
-       public void updateProgress(String message);\r
+\r
 }\r
index 194eb7691ec6183cd971968e44435a38a20f3f9a..6c826f7b35a13107112d18a221535e9d75702b8f 100644 (file)
@@ -252,12 +252,4 @@ public abstract class IoConfiguratorBase implements IIoConfigurator{
        public IProgressMonitor getProgressMonitor(){\r
                return this.progressMonitor;\r
        }\r
-       \r
-       @Override\r
-       public void updateProgress(String message) {\r
-               if(progressMonitor != null){\r
-                       progressMonitor.worked(1);\r
-                       progressMonitor.subTask(message);\r
-               }\r
-       }\r
 }\r
index 9613d9edf7a4e98fc06b349b75b3d358367f6d72..cc0dad899526284f7829b6085cfc09dee64eaeca 100644 (file)
@@ -92,20 +92,19 @@ public class Abcd206Import extends SpecimenIoBase<Abcd206ImportConfigurator, Abc
        public boolean doInvoke(Abcd206ImportState state){
                logger.info("INVOKE Specimen Import from ABCD2.06 XML File");
                boolean result = true;
-               Abcd206ImportConfigurator config = state.getConfig();
                //AbcdIO test = new AbcdIO();
-               String sourceName = config.getSource();
+               String sourceName = state.getConfig().getSource();
                NodeList unitsList = getUnitsNodeList(sourceName);
                if (unitsList != null){
                        String message = "nb units to insert: "+unitsList.getLength();
                        logger.info(message);
-                       config.updateProgress(message);
+                       updateProgress(state, message);
                        
                        Abcd206DataHolder dataHolder = new Abcd206DataHolder();
                        
                        for (int i=0 ; i<unitsList.getLength() ; i++){
                                this.setUnitPropertiesXML((Element)unitsList.item(i), dataHolder);
-                               result &= this.handleSingleUnit(config, dataHolder);
+                               result &= this.handleSingleUnit(state, dataHolder);
                                
                                //compare the ABCD elements added in to the CDM and the unhandled ABCD elements
                                compareABCDtoCDM(sourceName, dataHolder.knownABCDelements, dataHolder);
@@ -123,12 +122,14 @@ public class Abcd206Import extends SpecimenIoBase<Abcd206ImportConfigurator, Abc
        /*
         * Store the unit with its Gathering informations in the CDM
         */
-       private boolean handleSingleUnit(Abcd206ImportConfigurator config, Abcd206DataHolder dataHolder){
+       private boolean handleSingleUnit(Abcd206ImportState state, Abcd206DataHolder dataHolder){
                boolean result = true;
 
+               Abcd206ImportConfigurator config = state.getConfig();
+               
                TransactionStatus tx = startTransaction();
                try {
-                       config.updateProgress("Importing data for unit: " + dataHolder.unitID);
+                       updateProgress(state, "Importing data for unit: " + dataHolder.unitID);
                        
 //                     ReferenceBase sec = Database.NewInstance();
 //                     sec.setTitleCache("XML DATA");
index b6091a8b116a020a692db67bdb1341e3bff92e67..108aee82177f679306da7dad28cf9914f9998ae4 100644 (file)
@@ -40,7 +40,7 @@ import eu.etaxonomy.cdm.strategy.merge.MergeMode;
     "annotations"
 })
 @MappedSuperclass
-public abstract class AnnotatableEntity extends VersionableEntity {
+public abstract class AnnotatableEntity extends VersionableEntity implements IAnnotatableEntity {
        private static final long serialVersionUID = 9151211842542443102L;
        @SuppressWarnings("unused")
        private static final Logger logger = Logger.getLogger(AnnotatableEntity.class);
diff --git a/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/IAnnotatableEntity.java b/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/IAnnotatableEntity.java
new file mode 100644 (file)
index 0000000..d90589c
--- /dev/null
@@ -0,0 +1,39 @@
+// $Id$
+/**
+* Copyright (C) 2007 EDIT
+* 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.
+*/
+
+package eu.etaxonomy.cdm.model.common;
+
+import java.util.Set;
+
+/**
+ * @author n.hoffmann
+ * @created Sep 15, 2010
+ * @version 1.0
+ */
+public interface IAnnotatableEntity extends IVersionableEntity {
+
+       public Set<Annotation> getAnnotations();
+       
+       
+       public void addAnnotation(Annotation annotation);
+       
+       
+       public void removeAnnotation(Annotation annotation);
+       
+       
+       public Set<Marker> getMarkers();
+       
+       
+       public void addMarker(Marker marker);
+       
+       
+       public void removeMarker(Marker marker);
+       
+}
diff --git a/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/IVersionableEntity.java b/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/IVersionableEntity.java
new file mode 100644 (file)
index 0000000..e9b64fa
--- /dev/null
@@ -0,0 +1,42 @@
+// $Id$
+/**
+* Copyright (C) 2007 EDIT
+* 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.
+*/
+
+package eu.etaxonomy.cdm.model.common;
+
+import org.joda.time.DateTime;
+
+/**
+ * @author n.hoffmann
+ * @created Sep 15, 2010
+ * @version 1.0
+ */
+public interface IVersionableEntity extends ICdmBase {
+
+       public User getUpdatedBy();
+
+       /**
+        * 
+        * @param updatedBy    updatedBy
+        */
+       public void setUpdatedBy(User updatedBy);
+
+       /**
+        * 
+        * @return
+        */
+       public DateTime getUpdated();
+
+       /**
+        * 
+        * @param updated    updated
+        */
+       public void setUpdated(DateTime updated);
+       
+}
index 97ab52fa4205ab56dcad62fe86650490bf745a34..e3708cd1ea895e77e2a8d53fbdd731b2e382b1c8 100644 (file)
@@ -54,7 +54,7 @@ import eu.etaxonomy.cdm.strategy.match.MatchMode;
 })
 @XmlJavaTypeAdapter(value=DateTimeAdapter.class,type=DateTime.class)
 @MappedSuperclass
-public abstract class VersionableEntity extends CdmBase {
+public abstract class VersionableEntity extends CdmBase implements IVersionableEntity{
        private static final long serialVersionUID = 1409299200302758513L;
        @SuppressWarnings("unused")
        private static final Logger logger = Logger.getLogger(VersionableEntity.class);
index ee3e2fa18ce3f6a7582b409f3959c0dedafd4f89..d5cfb6a0d93b40c4bca23180e6c5a1bb6024050e 100644 (file)
@@ -125,7 +125,7 @@ public class CategoricalData extends DescriptionElementBase {
         * @see                 #getStates()
         * @see                 #addState(State)
         */
-       public void removeState(State state){
+       public void removeState(StateData state){
                this.states.remove(state);
        }
 
index 0c1eb7e8531ca2dceda22d1f13b029f9b01c556b..af3e9e30d5917f039ababcab87dbc229a8904d1a 100644 (file)
@@ -52,7 +52,9 @@ import eu.etaxonomy.cdm.model.common.MultilanguageText;
 import eu.etaxonomy.cdm.model.common.TermVocabulary;
 import eu.etaxonomy.cdm.model.media.Media;
 import eu.etaxonomy.cdm.model.name.TaxonNameBase;
+import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
 import eu.etaxonomy.cdm.model.reference.ReferenceBase;
+import eu.etaxonomy.cdm.model.taxon.Taxon;
 import eu.etaxonomy.cdm.strategy.merge.Merge;
 import eu.etaxonomy.cdm.strategy.merge.MergeMode;
 
@@ -86,7 +88,7 @@ import eu.etaxonomy.cdm.strategy.merge.MergeMode;
 @Entity
 @Audited
 @Inheritance(strategy=InheritanceType.SINGLE_TABLE)
-public abstract class DescriptionElementBase extends AnnotatableEntity implements ISourceable<DescriptionElementSource> {
+public abstract class DescriptionElementBase extends AnnotatableEntity implements ISourceable<DescriptionElementSource>, IModifiable {
        private static final long serialVersionUID = 5000910777835755905L;
        @SuppressWarnings("unused")
        private static final Logger logger = Logger.getLogger(DescriptionElementBase.class);
diff --git a/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/description/IModifiable.java b/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/description/IModifiable.java
new file mode 100644 (file)
index 0000000..b3b9030
--- /dev/null
@@ -0,0 +1,52 @@
+// $Id$
+/**
+* Copyright (C) 2007 EDIT
+* 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.
+*/
+
+package eu.etaxonomy.cdm.model.description;
+
+import java.util.Map;
+import java.util.Set;
+
+import eu.etaxonomy.cdm.model.common.IVersionableEntity;
+import eu.etaxonomy.cdm.model.common.Language;
+import eu.etaxonomy.cdm.model.common.LanguageString;
+import eu.etaxonomy.cdm.model.common.MultilanguageText;
+import eu.etaxonomy.cdm.model.common.TermVocabulary;
+
+/**
+ * @author n.hoffmann
+ * @created Sep 15, 2010
+ * @version 1.0
+ */
+public interface IModifiable extends IVersionableEntity {
+
+       /** 
+        * Returns the set of {@link Modifier modifiers} used to qualify the validity
+        * of <i>this</i> state data. This is only metainformation.
+        */
+       public Set<Modifier> getModifiers();
+       
+       /**
+        * Adds a {@link Modifier modifier} to the set of {@link #getModifiers() modifiers}
+        * used to qualify the validity of <i>this</i> state data.
+        * 
+        * @param modifier      the modifier to be added to <i>this</i> state data
+        * @see                         #getModifiers()
+        */
+       public void addModifier(Modifier modifier);
+       /** 
+        * Removes one element from the set of {@link #getModifiers() modifiers}
+        * used to qualify the validity of <i>this</i> state data.
+        *
+        * @param  modifier     the modifier which should be removed
+        * @see                 #getModifiers()
+        * @see                 #addModifier(Modifier)
+        */
+       public void removeModifier(Modifier modifier);
+}
index 3da7056b098a13e43c80f4907fddc48ada36af83..7cbfca9002b5df21ed4e008df92c4104fd963535 100644 (file)
@@ -17,8 +17,8 @@ import java.util.Set;
 \r
 import javax.persistence.Entity;\r
 import javax.persistence.FetchType;\r
-import javax.persistence.ManyToOne;\r
 import javax.persistence.ManyToMany;\r
+import javax.persistence.ManyToOne;\r
 import javax.persistence.OneToMany;\r
 import javax.validation.constraints.NotNull;\r
 import javax.xml.bind.annotation.XmlAccessType;\r
@@ -65,7 +65,7 @@ import eu.etaxonomy.cdm.model.common.VersionableEntity;
 @XmlRootElement(name = "StateData")\r
 @Entity\r
 @Audited\r
-public class StateData extends VersionableEntity {\r
+public class StateData extends VersionableEntity implements IModifiable{\r
        private static final long serialVersionUID = -4380314126624505415L;\r
        @SuppressWarnings("unused")\r
        private static final Logger logger = Logger.getLogger(StateData.class);\r
@@ -173,8 +173,8 @@ public class StateData extends VersionableEntity {
         * @see                         #getModifyingText()\r
         * @see                         #addModifyingText(LanguageString)\r
         */\r
-       public void addModifyingText(String text, Language language){\r
-               this.modifyingText.put(language, LanguageString.NewInstance(text, language));\r
+       public LanguageString addModifyingText(String text, Language language){\r
+               return this.modifyingText.put(language, LanguageString.NewInstance(text, language));\r
        }\r
        /**\r
         * Adds a translated {@link LanguageString text in a particular language}\r
@@ -186,8 +186,8 @@ public class StateData extends VersionableEntity {
         * @see                 #getModifyingText()\r
         * @see                 #addModifyingText(String, Language)\r
         */\r
-       public void addModifyingText(LanguageString text){\r
-               this.modifyingText.put(text.getLanguage(),text);\r
+       public LanguageString addModifyingText(LanguageString text){\r
+               return this.modifyingText.put(text.getLanguage(),text);\r
        }\r
        /** \r
         * Removes from the {@link MultilanguageText multilanguage text} used to qualify the validity\r
@@ -198,8 +198,8 @@ public class StateData extends VersionableEntity {
         *                              has been formulated\r
         * @see         #getModifyingText()\r
         */\r
-       public void removeModifyingText(Language lang){\r
-               this.modifyingText.remove(lang);\r
+       public LanguageString removeModifyingText(Language lang){\r
+               return this.modifyingText.remove(lang);\r
        }\r
 \r
 }
\ No newline at end of file
index 43bc8a890da1ba47664314e3e44b0ba243f776e2..99ca0e08895b0363894d703c262357ad0bb455e3 100644 (file)
@@ -53,7 +53,7 @@ import eu.etaxonomy.cdm.model.common.VersionableEntity;
 @Entity\r
 @Indexed(index = "eu.etaxonomy.cdm.model.description.DescriptionElementBase")\r
 @Audited\r
-public class StatisticalMeasurementValue extends VersionableEntity {\r
+public class StatisticalMeasurementValue extends VersionableEntity implements IModifiable{\r
        private static final long serialVersionUID = -3576311887760351982L;\r
        @SuppressWarnings("unused")\r
        private static final Logger logger = Logger.getLogger(StatisticalMeasurementValue.class);\r