(no commit message)
authorm.doering <m.doering@localhost>
Tue, 27 Nov 2007 17:14:41 +0000 (17:14 +0000)
committerm.doering <m.doering@localhost>
Tue, 27 Nov 2007 17:14:41 +0000 (17:14 +0000)
24 files changed:
.gitattributes
cdmlibrary/src/main/java/eu/etaxonomy/cdm/api/service/INameService.java
cdmlibrary/src/main/java/eu/etaxonomy/cdm/api/service/NameServiceImpl.java
cdmlibrary/src/main/java/eu/etaxonomy/cdm/aspectj/PropertyChangeAspect.aj
cdmlibrary/src/main/java/eu/etaxonomy/cdm/model/common/CdmBase.java
cdmlibrary/src/main/java/eu/etaxonomy/cdm/model/common/DefinedTermBase.java
cdmlibrary/src/main/java/eu/etaxonomy/cdm/model/common/Enumeration.java
cdmlibrary/src/main/java/eu/etaxonomy/cdm/model/common/VersionableEntity.java
cdmlibrary/src/main/java/eu/etaxonomy/cdm/persistence/dao/DaoBase.java
cdmlibrary/src/main/java/eu/etaxonomy/cdm/persistence/dao/EnumerationDaoHibernateImpl.java
cdmlibrary/src/main/java/eu/etaxonomy/cdm/persistence/dao/IDao.java
cdmlibrary/src/main/java/eu/etaxonomy/cdm/persistence/dao/IEnumerationDAO.java
cdmlibrary/src/main/java/eu/etaxonomy/cdm/persistence/dao/NoDefinedTermClassException.java [new file with mode: 0644]
cdmlibrary/src/main/java/eu/etaxonomy/cdm/strategy/BotanicNameCacheStrategy.java
cdmlibrary/src/main/java/eu/etaxonomy/cdm/strategy/INameCacheStrategy.java
cdmlibrary/src/main/java/eu/etaxonomy/cdm/strategy/ZooNameCacheStrategy.java
cdmlibrary/src/main/resources/terms/ConceptRelationshipType.csv [new file with mode: 0644]
cdmlibrary/src/main/resources/terms/HybridRelationshipType.csv [new file with mode: 0644]
cdmlibrary/src/main/resources/terms/NameRelationshipType.csv [new file with mode: 0644]
cdmlibrary/src/main/resources/terms/NomenclaturalStatusType.csv [new file with mode: 0644]
cdmlibrary/src/main/resources/terms/Rank.csv [new file with mode: 0644]
cdmlibrary/src/main/resources/terms/SynonymRelationshipType.csv [new file with mode: 0644]
cdmlibrary/src/main/resources/terms/TypeDesignationStatus.csv [new file with mode: 0644]
cdmlibrary/src/test/java/eu/etaxonomy/cdm/persistence/dao/EnumerationDaoHibernateImplTest.java

index 6114257df339f9dad22d3b37f282c999474d08d6..a8b215c37fc6e99ff9a497f70d4329307ad755ce 100644 (file)
@@ -234,6 +234,7 @@ cdmlibrary/src/main/java/eu/etaxonomy/cdm/persistence/dao/IDao.java -text
 cdmlibrary/src/main/java/eu/etaxonomy/cdm/persistence/dao/IEnumerationDAO.java -text
 cdmlibrary/src/main/java/eu/etaxonomy/cdm/persistence/dao/ITaxonDao.java -text
 cdmlibrary/src/main/java/eu/etaxonomy/cdm/persistence/dao/ITaxonNameDao.java -text
+cdmlibrary/src/main/java/eu/etaxonomy/cdm/persistence/dao/NoDefinedTermClassException.java -text
 cdmlibrary/src/main/java/eu/etaxonomy/cdm/persistence/dao/TaxonDaoHibernateImpl.java -text
 cdmlibrary/src/main/java/eu/etaxonomy/cdm/persistence/dao/TaxonNameDaoHibernateImpl.java -text
 cdmlibrary/src/main/java/eu/etaxonomy/cdm/strategy/BotanicNameCacheStrategy.java -text
@@ -245,6 +246,13 @@ cdmlibrary/src/main/resources/applicationContext.xml -text
 cdmlibrary/src/main/resources/cdm.datasource.xml -text
 cdmlibrary/src/main/resources/log4j.properties -text
 cdmlibrary/src/main/resources/sessionfactory.xml -text
+cdmlibrary/src/main/resources/terms/ConceptRelationshipType.csv -text
+cdmlibrary/src/main/resources/terms/HybridRelationshipType.csv -text
+cdmlibrary/src/main/resources/terms/NameRelationshipType.csv -text
+cdmlibrary/src/main/resources/terms/NomenclaturalStatusType.csv -text
+cdmlibrary/src/main/resources/terms/Rank.csv -text
+cdmlibrary/src/main/resources/terms/SynonymRelationshipType.csv -text
+cdmlibrary/src/main/resources/terms/TypeDesignationStatus.csv -text
 cdmlibrary/src/site/site.xml -text
 cdmlibrary/src/test/java/eu/etaxonomy/cdm/aspectj/PropertyChangeTest.java -text
 cdmlibrary/src/test/java/eu/etaxonomy/cdm/database/DatabaseEnumTest.java -text
index f285630fe76c1507848ec15aed8124626231d93b..d61ec04db2f7c59cbdc4fe66e02bf18ecfa07592 100644 (file)
@@ -2,6 +2,7 @@ package eu.etaxonomy.cdm.api.service;
 \r
 import java.util.List;\r
 \r
+import eu.etaxonomy.cdm.model.common.Enumeration;\r
 import eu.etaxonomy.cdm.model.name.*;\r
 \r
 \r
@@ -15,4 +16,5 @@ public interface INameService extends IIdentifiableEntityService<TaxonNameBase>
 \r
        public abstract List<TaxonNameBase> getNamesByName(String name);\r
 \r
+       public abstract Enumeration getRankEnumeration();\r
 }
\ No newline at end of file
index 97beb01e37130f8f02597c8f86597f0aadf96203..1565035f2ec10440eb5208b90fb844397398df74 100644 (file)
@@ -6,6 +6,7 @@ import org.springframework.context.ApplicationContext;
 import org.springframework.stereotype.Repository;\r
 import org.springframework.stereotype.Service;\r
 \r
+import eu.etaxonomy.cdm.model.common.Enumeration;\r
 import eu.etaxonomy.cdm.model.common.VersionableEntity;\r
 import eu.etaxonomy.cdm.model.name.*;\r
 import eu.etaxonomy.cdm.persistence.dao.IAgentDao;\r
@@ -44,4 +45,10 @@ public class NameServiceImpl extends ServiceBase<TaxonNameBase> implements IName
                return dao.list(limit, start);\r
        }\r
 \r
+\r
+       public Enumeration getRankEnumeration() {\r
+               // TODO Auto-generated method stub\r
+               return null;\r
+       }\r
+\r
 }\r
index 40c5030348a8b4f4783725605cbd40adfac0da9c..8215402a07544b8be528d6aaf37d378ac97b9a88 100644 (file)
@@ -29,28 +29,32 @@ public aspect PropertyChangeAspect {
                //logger.setLevel(Level.DEBUG);
                // get property that is set by setter method
                Field property = getFieldOfSetter( thisJoinPointStaticPart.getSignature() );
-               property.setAccessible(true);
-               String propertyName = property.getName();
-               //logger.debug("execSetter: The property is ["+propertyName+"]");
-               try {
-                       // use property attribute directly, not through get method.
-                       // get method might modify things, like setting a UUID when called for the first time.
-                       // Also get methods for booleans start with "is" or "has"
-                       Object oldValue = property.get(cb);
-                       proceed( cb );
-                       cb.firePropertyChange( propertyName, oldValue, property.get(cb));
-               } catch (NoSuchMethodException e) {
-                       e.printStackTrace();
-                       proceed( cb );
-               }catch (IllegalArgumentException e) {
-                       e.printStackTrace();
-                       proceed( cb );
-               }catch (IllegalAccessException e) {
-                       e.printStackTrace();
-                       proceed( cb );
-               } catch (InvocationTargetException e) {
-                       e.printStackTrace();
+               if (property==null){
                        proceed( cb );
+               }else{                  
+                       property.setAccessible(true);
+                       String propertyName = property.getName();
+                       //logger.debug("execSetter: The property is ["+propertyName+"]");
+                       try {
+                               // use property attribute directly, not through get method.
+                               // get method might modify things, like setting a UUID when called for the first time.
+                               // Also get methods for booleans start with "is" or "has"
+                               Object oldValue = property.get(cb);
+                               proceed( cb );
+                               cb.firePropertyChange( propertyName, oldValue, property.get(cb));
+                       } catch (NoSuchMethodException e) {
+                               e.printStackTrace();
+                               proceed( cb );
+                       }catch (IllegalArgumentException e) {
+                               e.printStackTrace();
+                               proceed( cb );
+                       }catch (IllegalAccessException e) {
+                               e.printStackTrace();
+                               proceed( cb );
+                       } catch (InvocationTargetException e) {
+                               e.printStackTrace();
+                               proceed( cb );
+                       }
                }
        }
 
@@ -58,6 +62,7 @@ public aspect PropertyChangeAspect {
                /**
                 * @param signature
                 * Return the Field object that belongs to the signature of a setter method
+                * If no matching attribute can be found return null instead of throwing an NoSuchFieldException
                 * Removes first 3 characters of method name to find property name
                 */
                private Field getFieldOfSetter( Signature signature ){
@@ -73,7 +78,8 @@ public aspect PropertyChangeAspect {
                                        propertyName = "is"+propertyName.substring(0, 1).toUpperCase()+ propertyName.substring(1);
                                        field = signature.getDeclaringType().getDeclaredField( propertyName );
                                }catch( NoSuchFieldException nsfe ){
-                                       nsfe.printStackTrace();
+                                       // cant find any matching attribute. catch error and return null
+                                       return null;
                                }
                        }
                        return field;
index 1ad291351e15aeeba5cbb52e20d84fd784493337..ab9d0809c0cf38926b3fb5a19558a295c1be04f0 100644 (file)
@@ -4,26 +4,41 @@ import java.beans.PropertyChangeListener;
 import java.beans.PropertyChangeSupport;
 import java.beans.PropertyChangeEvent;
 import java.io.Serializable;
+import java.util.Calendar;
+import java.util.UUID;
 
 import javax.persistence.Entity;
 import javax.persistence.GeneratedValue;
 import javax.persistence.Id;
 import javax.persistence.Inheritance;
 import javax.persistence.InheritanceType;
+import javax.persistence.ManyToOne;
 import javax.persistence.MappedSuperclass;
 import javax.persistence.Table;
+import javax.persistence.Temporal;
+import javax.persistence.TemporalType;
 import javax.persistence.Transient;
 
+import org.hibernate.annotations.Cascade;
+import org.hibernate.annotations.CascadeType;
+
+import eu.etaxonomy.cdm.model.agent.Person;
+
 
 @MappedSuperclass
 public abstract class CdmBase implements Serializable{
-       
-       public CdmBase() {
-               // TODO Auto-generated constructor stub
-       }
        private PropertyChangeSupport support = new PropertyChangeSupport(this);
        private int id;
+       private String uuid;
+       private Calendar created;
+       private Person createdBy;
+
+       public CdmBase() {
+               this.uuid = UUID.randomUUID().toString();
+               this.created = Calendar.getInstance();
+       }
 
+       
        public void addPropertyChangeListener(PropertyChangeListener listener) {
                support.addPropertyChangeListener(listener);
        }
@@ -69,13 +84,47 @@ public abstract class CdmBase implements Serializable{
        public int getId() {
                return this.id;
        }
-
-       /**
-        * 
-        * @param id    id
-        */
        public void setId(int id) {
                this.id = id;
        }
 
+       
+       public String getUuid() {
+               return this.uuid;
+       }
+       protected void setUuid(String uuid) {
+               this.uuid = uuid;
+       }
+
+       
+       @Temporal(TemporalType.TIMESTAMP)
+       public Calendar getCreated() {
+               return this.created;
+       }
+       public void setCreated(Calendar created) {
+               this.created = created;
+       }
+
+
+       @ManyToOne
+       @Cascade( { CascadeType.SAVE_UPDATE })
+       public Person getCreatedBy() {
+               return this.createdBy;
+       }
+       public void setCreatedBy(Person createdBy) {
+               this.createdBy = createdBy;
+       }
+
+       
+       @Override
+       // equals if UUID and created timestamp are the same!
+       public boolean equals(Object obj) {
+               if (CdmBase.class.isAssignableFrom(obj.getClass())){
+                       CdmBase cdmObj = (CdmBase)obj;
+                       if (cdmObj.getUuid().equals(this.getUuid()) && cdmObj.getCreated().equals(this.getCreated())){
+                               return true;
+                       }
+               }
+               return false;
+       }
 }
index 4a65beaf40d75a5d3266a1b839ae324e134d4e0a..b9b0f65ae76934d538de1e1571a372585326ee61 100644 (file)
@@ -175,4 +175,17 @@ public abstract class DefinedTermBase extends VersionableEntity{
                return this.getRepresentation(lang).getLabel();
        }
 
+
+       @Override
+       // equals if UUIDs are the same, no matter where/when created!
+       public boolean equals(Object obj) {
+               if (DefinedTermBase.class.isAssignableFrom(obj.getClass())){
+                       DefinedTermBase dtb = (DefinedTermBase)obj;
+                       if (dtb.getUuid().equals(this.getUuid())){
+                               return true;
+                       }
+               }
+               return false;
+       }
+       
 }
\ No newline at end of file
index d1ca4867ff9af04a2dc1446b9d9e518ab86231b5..8267ebd74d4b3d0bddf4de0b0e6acedbd423d357 100644 (file)
@@ -65,7 +65,22 @@ public class Enumeration extends DefinedTermBase {
        public void removeTerm(EnumeratedTermBase term) {
                term.setEnumeration(null);
        }
-       
+
+       public List<EnumeratedTermBase> getPrecedingTerms(EnumeratedTermBase etb) {
+               return terms.subList(0, terms.indexOf(etb));
+       }
+       public List<EnumeratedTermBase> getSucceedingTerms(EnumeratedTermBase etb) {
+               return terms.subList(terms.indexOf(etb), terms.size());
+       }
+       public EnumeratedTermBase getPreviousTerm(EnumeratedTermBase etb) {
+               int idx = terms.indexOf(etb)-1;
+               return terms.get(idx);
+       }
+       public EnumeratedTermBase getNextTerm(EnumeratedTermBase etb) {
+               int idx = terms.indexOf(etb)+1;
+               return terms.get(idx);
+       }
+
        
        public String getEnumerationUri() {
                return enumerationUri;
@@ -73,15 +88,4 @@ public class Enumeration extends DefinedTermBase {
        public void setEnumerationUri(String enumerationUri) {
                this.enumerationUri = enumerationUri;
        }
-
-       /**
-        * add new terms from a vocabulary to which uri points.
-        * 
-        * @param uri    uri
-        */
-       public void loadTerms(String uri){
-
-       }
-
-       
 }
\ No newline at end of file
index 6632ad7d8b6f9b1d02c750c57de9fc52adbefd31..a2e6e3b391c81f05603e7b39e063780b97aab9b4 100644 (file)
@@ -27,38 +27,32 @@ import javax.persistence.*;
 @MappedSuperclass
 public abstract class VersionableEntity<T extends VersionableEntity> extends CdmBase {
        static Logger logger = Logger.getLogger(VersionableEntity.class);
-       //the globally unique identifier
-       private String uuid;
-       private Calendar created;
-       private Person createdBy;
        //time of last update for this object
        private Calendar updated;
        private Person updatedBy;
-       private T nextVersion;
-       private T previousVersion;
+       private CdmBase nextVersion;
+       private CdmBase previousVersion;
 
        public VersionableEntity() {
                super();
-               this.uuid = UUID.randomUUID().toString();
-               this.created = Calendar.getInstance();
        }
 
        
        //@OneToOne(mappedBy="previousVersion")
        @Transient
-       public T getNextVersion(){
+       public CdmBase getNextVersion(){
                return this.nextVersion;
        }
-       public void setNextVersion(T nextVersion){
+       public void setNextVersion(CdmBase nextVersion){
                this.nextVersion = nextVersion;
        }
 
        //@OneToOne
        @Transient
-       public T getPreviousVersion(){
+       public CdmBase getPreviousVersion(){
                return this.previousVersion;
        }
-       public void setPreviousVersion(T previousVersion){
+       public void setPreviousVersion(CdmBase previousVersion){
                this.previousVersion = previousVersion;
        }
 
@@ -77,43 +71,6 @@ public abstract class VersionableEntity<T extends VersionableEntity> extends Cdm
                this.updatedBy = updatedBy;
        }
 
-       @ManyToOne
-       @Cascade({CascadeType.SAVE_UPDATE})
-       public Person getCreatedBy(){
-               return this.createdBy;
-       }
-
-       /**
-        * 
-        * @param createdBy    createdBy
-        */
-       public void setCreatedBy(Person createdBy){
-               this.createdBy = createdBy;
-       }
-
-       public String getUuid(){
-               return this.uuid;
-       }
-       /**
-        * 
-        * @param uuid    uuid
-        */
-       protected void setUuid(String uuid){
-               this.uuid = uuid;
-       }
-
-       @Temporal(TemporalType.TIMESTAMP)
-       public Calendar getCreated(){
-               return this.created;
-       }
-       /**
-        * 
-        * @param created    created
-        */
-       public void setCreated(Calendar created){
-               this.created = created;
-       }
-
        @Temporal(TemporalType.TIMESTAMP)
        public Calendar getUpdated(){
                return this.updated;
index a9a00535d755091cabac9956b2893763a19c5275..bac20da10d6821beef0a5025b9cc96a3c3961648 100644 (file)
@@ -17,14 +17,13 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.dao.DataAccessException;\r
 \r
 import eu.etaxonomy.cdm.model.common.CdmBase;\r
-import eu.etaxonomy.cdm.model.common.VersionableEntity;\r
 \r
 \r
 /**\r
  * @author a.mueller\r
  *\r
  */\r
-public abstract class DaoBase<T extends VersionableEntity> implements IDao<T> {\r
+public abstract class DaoBase<T extends CdmBase> implements IDao<T> {\r
 \r
        static Logger logger = Logger.getLogger(DaoBase.class);\r
 \r
index 43408f33ab7e8b78d45004f328d45089b9b31965..1eb84bea0bb0be69048b86c1d1e956521c75ef9e 100644 (file)
@@ -1,5 +1,9 @@
 package eu.etaxonomy.cdm.persistence.dao;
 
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileReader;
+import java.io.IOException;
 import java.io.Serializable;
 import java.util.List;
 
@@ -7,6 +11,10 @@ import org.apache.log4j.Logger;
 import org.springframework.dao.DataAccessException;
 import org.springframework.stereotype.Repository;
 
+import au.com.bytecode.opencsv.CSVReader;
+
+import eu.etaxonomy.cdm.common.CdmUtils;
+import eu.etaxonomy.cdm.model.common.DefinedTermBase;
 import eu.etaxonomy.cdm.model.common.Enumeration;
 
 
@@ -25,4 +33,29 @@ public class EnumerationDaoHibernateImpl extends DaoBase<Enumeration> implements
                return null;
        }
 
+       // load a list of defined terms from a simple text file
+       // if isEnumeration is true an Enumeration for the ordered term list will be returned
+       public Enumeration loadTerms(Class termClass, String filename, boolean isEnumeration) throws NoDefinedTermClassException, FileNotFoundException {
+               if (DefinedTermBase.class.isAssignableFrom(termClass)){
+                       File termFile = new File(CdmUtils.getResourceDir().getAbsoluteFile()+File.separator+"terms"+File.separator+filename);
+                        CSVReader reader = new CSVReader(new FileReader(termFile));
+                           String [] nextLine;
+                           try {
+                                       while ((nextLine = reader.readNext()) != null) {
+                                           // nextLine[] is an array of values from the line
+                                               for (String col : nextLine){
+                                                   System.out.print(">"+col.toString()+"< ");
+                                               }
+                                           System.out.println();
+                                       }
+                               } catch (IOException e) {
+                                       // TODO Auto-generated catch block
+                                       e.printStackTrace();
+                               }
+               }else{
+                       throw new NoDefinedTermClassException(termClass.getSimpleName()); 
+               }
+               return null;
+       }
+
 }
index 3d198db60edba01ce3a86c9971d3d53a2a256530..956d25aa9e033ecb308db0f3ff2ec2297b2565a8 100644 (file)
@@ -20,7 +20,6 @@ import org.springframework.orm.hibernate3.HibernateTemplate;
 
 import eu.etaxonomy.cdm.model.common.CdmBase;
 import eu.etaxonomy.cdm.model.common.Enumeration;
-import eu.etaxonomy.cdm.model.common.VersionableEntity;
 
 /**
  * an data access interface that all data access classes implement
@@ -28,7 +27,7 @@ import eu.etaxonomy.cdm.model.common.VersionableEntity;
  * @version 1.0
  * @created 02-Nov-2007 19:36:10
  */
-public interface IDao<T extends VersionableEntity> {
+public interface IDao<T extends CdmBase> {
        public String saveOrUpdate(T transientObject) throws DataAccessException;
        
        /* (non-Javadoc)
index 54f25dd253e8f9550cfab70533d1bbd533a1ddd0..588e67bf11c7816332b306695c8e3edfc94c1a54 100644 (file)
@@ -1,9 +1,11 @@
 package eu.etaxonomy.cdm.persistence.dao;
 
+import java.io.FileNotFoundException;
 import java.util.List;
 
 import eu.etaxonomy.cdm.model.common.Enumeration;
 
 public interface IEnumerationDAO extends IDao<Enumeration> {
 
+       public Enumeration loadTerms(Class termClass, String filename, boolean isEnumeration) throws NoDefinedTermClassException, FileNotFoundException;
 }
\ No newline at end of file
diff --git a/cdmlibrary/src/main/java/eu/etaxonomy/cdm/persistence/dao/NoDefinedTermClassException.java b/cdmlibrary/src/main/java/eu/etaxonomy/cdm/persistence/dao/NoDefinedTermClassException.java
new file mode 100644 (file)
index 0000000..c1212bb
--- /dev/null
@@ -0,0 +1,24 @@
+package eu.etaxonomy.cdm.persistence.dao;
+
+public class NoDefinedTermClassException extends Exception {
+
+       public NoDefinedTermClassException() {
+               // TODO Auto-generated constructor stub
+       }
+
+       public NoDefinedTermClassException(String arg0) {
+               super(arg0);
+               // TODO Auto-generated constructor stub
+       }
+
+       public NoDefinedTermClassException(Throwable arg0) {
+               super(arg0);
+               // TODO Auto-generated constructor stub
+       }
+
+       public NoDefinedTermClassException(String arg0, Throwable arg1) {
+               super(arg0, arg1);
+               // TODO Auto-generated constructor stub
+       }
+
+}
index 1e427300814449314dee9f5a268d9b85bbabb849..5a0dad2dd587c69eb892f00ab05bc911c76354e2 100644 (file)
@@ -5,7 +5,7 @@ package eu.etaxonomy.cdm.strategy;
 \r
 import eu.etaxonomy.cdm.model.agent.Agent;\r
 import eu.etaxonomy.cdm.model.agent.Team;\r
-import eu.etaxonomy.cdm.model.common.VersionableEntity;\r
+import eu.etaxonomy.cdm.model.common.CdmBase;\r
 import eu.etaxonomy.cdm.model.name.NonViralName;\r
 \r
 /**\r
@@ -19,7 +19,7 @@ public class BotanicNameCacheStrategy extends StrategyBase implements
         * @see eu.etaxonomy.cdm.strategy.INameCacheStrategy#getFullNameCache()\r
         */\r
        // PROTOTYPE implementation\r
-       public String getNameCache(VersionableEntity object) {\r
+       public String getNameCache(CdmBase object) {\r
                String result;\r
                NonViralName tn = (NonViralName)object;\r
                if (tn.getUninomial() != null){\r
@@ -36,7 +36,7 @@ public class BotanicNameCacheStrategy extends StrategyBase implements
         * @see eu.etaxonomy.cdm.strategy.INameCacheStrategy#getNameCache()\r
         */\r
        // PROTOTYPE implementation\r
-       public String getFullNameCache(VersionableEntity object) {\r
+       public String getFullNameCache(CdmBase object) {\r
                String result;\r
                NonViralName tn = (NonViralName)object;\r
                result = getNameCache(object);\r
index a16a080453ff982937e293ef1b570f41c220d374..c48002157cf859c500e58f0d845b6c9c2b433ead 100644 (file)
@@ -3,7 +3,7 @@
  */\r
 package eu.etaxonomy.cdm.strategy;\r
 \r
-import eu.etaxonomy.cdm.model.common.VersionableEntity;\r
+import eu.etaxonomy.cdm.model.common.CdmBase;\r
 \r
 /**\r
  * @author a.mueller\r
@@ -12,9 +12,9 @@ import eu.etaxonomy.cdm.model.common.VersionableEntity;
 public interface INameCacheStrategy extends IStrategy {\r
        \r
        //returns the composed name string without author or year\r
-       public String getNameCache(VersionableEntity object);\r
+       public String getNameCache(CdmBase object);\r
        \r
        //returns the composed name string with author and/or year\r
-       public String getFullNameCache(VersionableEntity object);\r
+       public String getFullNameCache(CdmBase object);\r
        \r
 }\r
index f8197edd5f64427d6652775abad5250e39ba7ecf..9b1000ab8378f36c74719631daa1628ae68d6605 100644 (file)
@@ -2,7 +2,7 @@ package eu.etaxonomy.cdm.strategy;
 \r
 import eu.etaxonomy.cdm.model.agent.Agent;\r
 import eu.etaxonomy.cdm.model.agent.Team;\r
-import eu.etaxonomy.cdm.model.common.VersionableEntity;\r
+import eu.etaxonomy.cdm.model.common.CdmBase;\r
 import eu.etaxonomy.cdm.model.name.NonViralName;\r
 \r
 public class ZooNameCacheStrategy extends StrategyBase implements\r
@@ -12,7 +12,7 @@ public class ZooNameCacheStrategy extends StrategyBase implements
         * @see eu.etaxonomy.cdm.strategy.INameCacheStrategy#getFullNameCache()\r
         */\r
        // PROTOTYPE dummy implementation\r
-       public String getNameCache(VersionableEntity object) {\r
+       public String getNameCache(CdmBase object) {\r
                String result;\r
                NonViralName tn = (NonViralName)object;\r
                if (tn.getUninomial() != null){\r
@@ -29,7 +29,7 @@ public class ZooNameCacheStrategy extends StrategyBase implements
         * @see eu.etaxonomy.cdm.strategy.INameCacheStrategy#getNameCache()\r
         */\r
        // PROTOTYPE dummy implementation\r
-       public String getFullNameCache(VersionableEntity object) {\r
+       public String getFullNameCache(CdmBase object) {\r
                String result;\r
                NonViralName tn = (NonViralName)object;\r
                result = getNameCache(object);\r
diff --git a/cdmlibrary/src/main/resources/terms/ConceptRelationshipType.csv b/cdmlibrary/src/main/resources/terms/ConceptRelationshipType.csv
new file mode 100644 (file)
index 0000000..39346d7
--- /dev/null
@@ -0,0 +1,28 @@
+UUID   Term    Inverseterm     Symetric        Transitive
+       Taxonomically Included in       Taxonomically Includes          *
+       Misapplied Name for     Has Misapplied Name             
+       Invalid Designation for Has Invalid Designation         
+       Contradiction           *       
+       Congruent to            *       
+       Includes        Included in             *
+       Congruent to or Includes        Congruent to or Included in             *
+       Included in or Includes         *       
+       Congruent to or Included in or Includes         *       
+       Overlaps                *       
+       Congruent to or Overlaps                *       
+       Includes or Overlaps    Included in or Overlaps         
+       Congruent to or Includes or Overlaps    Congruent to or Included in or Overlaps         
+       Included in or Includes or Overlaps             *       
+       Does Not Exclude                *       
+       Excludes                *       
+       Congruent to or Excludes                *       
+       Includes or Excludes    Included in or Excludes         
+       Congruent to or Includes or Excludes    Congruent to or Included in or Excludes         
+       Included in or Includes or Excludes             *       
+       Does Not Overlap                *       
+       Overlaps or Excludes            *       
+       Congruent to or Overlaps or Excludes            *       
+       Includes or Overlaps or Excludes        Included in or Overlaps or Excludes             
+       Not Included in Does Not Include                
+       Not Congruent to                *       
+       All Relationships               *       
diff --git a/cdmlibrary/src/main/resources/terms/HybridRelationshipType.csv b/cdmlibrary/src/main/resources/terms/HybridRelationshipType.csv
new file mode 100644 (file)
index 0000000..d1b303c
--- /dev/null
@@ -0,0 +1,5 @@
+Uuid   Term    Inverseterm     Symetric        Transitive
+       First Parent    Child           
+       Second Parent   Child           
+       Female Parent   Child           
+       Male Parent     Child
\ No newline at end of file
diff --git a/cdmlibrary/src/main/resources/terms/NameRelationshipType.csv b/cdmlibrary/src/main/resources/terms/NameRelationshipType.csv
new file mode 100644 (file)
index 0000000..03dba25
--- /dev/null
@@ -0,0 +1,16 @@
+Uuid   Term    Inverseterm     Symetric        Transitive
+       Orthographic Variant            *       *
+       Later Homonym   Ealier Homonym          *
+       Treated As Later Homonym        Treated As Earlier Homonym              
+       Alternative Name                *       *
+       Basionym        New Combination         
+       Replaced Synonym        New Name                
+       Conserved Against       Rejected in Favour              
+       Validated by Name       Validating Name         
+       Later Validated by Name Later Validating Name           
+
+Hybridrelationshiptype                         
+       First Parent    Child           
+       Second Parent   Child           
+       Female Parent   Child           
+       Male Parent     Child
\ No newline at end of file
diff --git a/cdmlibrary/src/main/resources/terms/NomenclaturalStatusType.csv b/cdmlibrary/src/main/resources/terms/NomenclaturalStatusType.csv
new file mode 100644 (file)
index 0000000..8323213
--- /dev/null
@@ -0,0 +1,22 @@
+Uuid   Term
+       Ambiguous
+       Doubtful
+       Confusum
+       Illegitimate
+       Superfluous
+       Rejected
+       Utique Rejected
+       Conserved Prop
+       Orthography Conserved Prop
+       Legitimate
+       Alternative
+       Novum
+       Utique Rejected Prop
+       Orthography Conserved
+       Rejected Prop
+       Conserved
+       Sanctioned
+       Invalid
+       Nudum
+       Combination Invalid
+       Provisional
\ No newline at end of file
diff --git a/cdmlibrary/src/main/resources/terms/Rank.csv b/cdmlibrary/src/main/resources/terms/Rank.csv
new file mode 100644 (file)
index 0000000..a17dcb7
--- /dev/null
@@ -0,0 +1,62 @@
+Uuid   Term
+       Empire
+       Domain
+       Super Kingdom
+       Kingdom
+       Subkingdom
+       Infrakingdom
+       Superphylum
+       Phylum
+       Subphylum
+       Infraphylum
+       Superdivision
+       Division
+       Subdivision
+       Infradivision
+       Superclass
+       Class
+       Subclass
+       Infraclass
+       Superorder
+       Order
+       Suborder
+       Infraorder
+       Superfamily
+       Family
+       Subfamily
+       Infrafamily
+       Supertribe
+       Tribe
+       Subtribe
+       Infratribe
+       Suprageneric Taxon
+       Genus
+       Subgenus
+       Infragenus
+       Section
+       Subsection
+       Series
+       Subseries
+       Species Aggregate
+       Infrageneric Taxon
+       Species
+       Subspecific Aggregate
+       Subspecies
+       Infraspecies
+       Variety
+       Bio Variety
+       Patho Variety
+       Subvariety
+       Subsubvariety
+       Convar
+       Form
+       Special Form
+       Subform
+       Subsubform
+       Infraspecific Taxon
+       Candidate
+       Denomination Class
+       Grex
+       Graft Chimaera
+       Cultivar Group
+       Cultivar
\ No newline at end of file
diff --git a/cdmlibrary/src/main/resources/terms/SynonymRelationshipType.csv b/cdmlibrary/src/main/resources/terms/SynonymRelationshipType.csv
new file mode 100644 (file)
index 0000000..a4a6095
--- /dev/null
@@ -0,0 +1,6 @@
+UUID   Term
+       Synonym of
+       Pro Parte Synonym of
+       Partial Synonym of
+       Homotypic Synonym of
+       Heterotypic Synonym Of
\ No newline at end of file
diff --git a/cdmlibrary/src/main/resources/terms/TypeDesignationStatus.csv b/cdmlibrary/src/main/resources/terms/TypeDesignationStatus.csv
new file mode 100644 (file)
index 0000000..de7260e
--- /dev/null
@@ -0,0 +1,17 @@
+UUID   Term
+       Holotype
+       Lectotype
+       Neotype
+       Epitype
+       Isolectotype
+       Isoneotype
+       Isotype
+       Paraneotype
+       Paratype
+       Second Step Lectotype
+       Second Step Neotype
+       Syntype
+       Paralectotype
+       Isoepitype
+       Iconotype
+       Phototype
\ No newline at end of file
index 4119ae5bb052261b5dae6e6e45e9b5c7b4f601d6..21ad36c2155729ff5243e2fd68e933599bd168d9 100644 (file)
@@ -4,6 +4,7 @@ package eu.etaxonomy.cdm.persistence.dao;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
 
+import java.io.FileNotFoundException;
 import java.util.List;
 
 import org.apache.log4j.Logger;
@@ -14,6 +15,7 @@ import org.springframework.test.context.ContextConfiguration;
 
 import eu.etaxonomy.cdm.model.common.Enumeration;
 import eu.etaxonomy.cdm.model.common.Keyword;
+import eu.etaxonomy.cdm.model.name.Rank;
 import eu.etaxonomy.cdm.test.unit.CdmUnitTestBase;
 
 
@@ -43,11 +45,6 @@ public class EnumerationDaoHibernateImplTest extends CdmUnitTestBase{
                dao.saveOrUpdate(this.enumeration);             
        }
 
-       @Test
-       public void testFindById() {
-               // fail("Not yet implemented");
-       }
-
        @Test
        public void testFindString() {
                List<Enumeration> myEnum = dao.find("biodomain");
@@ -55,8 +52,16 @@ public class EnumerationDaoHibernateImplTest extends CdmUnitTestBase{
        }
 
        @Test
-       public void testExists() {
-               // fail("Not yet implemented");
+       public void loadTerms() {
+               try {
+                       dao.loadTerms(Rank.class, "Rank.csv", true);
+               } catch (FileNotFoundException e) {
+                       // TODO Auto-generated catch block
+                       e.printStackTrace();
+               } catch (NoDefinedTermClassException e) {
+                       // TODO Auto-generated catch block
+                       e.printStackTrace();
+               }
        }
 
        @Test