(no commit message)
authorAndreas Müller <a.mueller@bgbm.org>
Wed, 28 May 2008 22:17:27 +0000 (22:17 +0000)
committerAndreas Müller <a.mueller@bgbm.org>
Wed, 28 May 2008 22:17:27 +0000 (22:17 +0000)
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/CdmBase.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/name/TaxonNameBase.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/taxon/Synonym.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/taxon/Taxon.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/taxon/TaxonBase.java
cdmlib-model/src/main/resources/terms/NomenclaturalCode.csv
cdmlib-model/src/test/java/eu/etaxonomy/cdm/model/taxon/TaxonBaseTest.java

index 0e2f3e388e0a932e291b9b565566b34d08cc6f35..32dc45a66c5d5e961fe59ab608d421ac1cd38a38 100644 (file)
@@ -22,7 +22,7 @@ import org.hibernate.annotations.Cascade;
 import org.hibernate.annotations.CascadeType;
 
 import eu.etaxonomy.cdm.model.agent.Person;
-import eu.etaxonomy.cdm.model.name.TaxonNameBase;
+
 
 
 
@@ -247,7 +247,7 @@ public abstract class CdmBase implements Serializable, ICdmBase{
                return this.getClass().getSimpleName()+"#"+this.getId()+"<"+this.getUuid()+">";
        }
        
-       protected void useSetMethod(Method method, Object object){
+       protected void invokeSetMethod(Method method, Object object){
                try {
                        method.invoke(object, this);
                } catch (Exception e) {
index 323cbb26fcd373f887677be44fda58de87338f05..9cfa20a92e36fd6441b60b56563af3326523e32d 100644 (file)
@@ -606,7 +606,7 @@ public abstract class TaxonNameBase<T extends TaxonNameBase> extends Identifiabl
        public void addTaxonBase(TaxonBase taxonBase){
                taxonBases.add(taxonBase);
                initMethods();
-               useSetMethod(methodTaxonBaseSetName, taxonBase);
+               invokeSetMethod(methodTaxonBaseSetName, taxonBase);
        }
 
        private void initMethods(){
index 708f3344c8ea654a28a54b97c97e8c1fd027253f..ec30a662e4a4b285e037e630960ca8d316fd2ff9 100644 (file)
@@ -34,9 +34,7 @@ public class Synonym extends TaxonBase implements IRelated<SynonymRelationship>{
 
 
        public static Synonym NewInstance(TaxonNameBase taxonName, ReferenceBase sec){
-               Synonym result = new Synonym();
-               result.setTaxonName(taxonName);
-               result.setSec(sec);
+               Synonym result = new Synonym(taxonName, sec);
                return result;
        }
        
@@ -44,7 +42,10 @@ public class Synonym extends TaxonBase implements IRelated<SynonymRelationship>{
        public Synonym(){
        }
        
-
+       public Synonym(TaxonNameBase taxonNameBase, ReferenceBase sec){
+               super(taxonNameBase, sec);
+       }
+       
        @OneToMany(mappedBy="relatedFrom", fetch=FetchType.EAGER)
        @Cascade({CascadeType.SAVE_UPDATE, CascadeType.DELETE})
        public Set<SynonymRelationship> getSynonymRelations() {
index 3274f36cc2dc2d7ac15870dd26015a1a28b2e0d6..9cb5813b03797464c278ce335d35fbd02ca27003 100644 (file)
@@ -46,7 +46,7 @@ public class Taxon extends TaxonBase implements Iterable<Taxon>, IRelated<Relati
        // shortcut to the taxonomicIncluded (parent) taxon. Managed by the taxonRelations setter
        private Taxon taxonomicParentCache;
 
-       static Method methodDescriptionSetTaxon;
+       private static Method methodDescriptionSetTaxon;
        
        
 
@@ -57,16 +57,19 @@ public class Taxon extends TaxonBase implements Iterable<Taxon>, IRelated<Relati
         * @return
         */
        public static Taxon NewInstance(TaxonNameBase taxonNameBase, ReferenceBase sec){
-               Taxon result = new Taxon();
-               result.setTaxonName(taxonNameBase);
-               result.setSec(sec);
+               Taxon result = new Taxon(taxonNameBase, sec);
                return result;
        }
        
        //TODO should be private, but still produces Spring init errors
+       @Deprecated
        public Taxon(){
        }
        
+       public Taxon(TaxonNameBase taxonNameBase, ReferenceBase sec){
+               super(taxonNameBase, sec);
+       }
+       
 
        @OneToMany(mappedBy="taxon", fetch= FetchType.EAGER)
        @Cascade({CascadeType.SAVE_UPDATE})
index 330b1f3e870d10f9c76652dd5149377d474eda71..b63579e464723f80475e301cb88ae333290ba75f 100644 (file)
@@ -9,7 +9,6 @@
 
 package eu.etaxonomy.cdm.model.taxon;
 
-
 import eu.etaxonomy.cdm.model.name.HomotypicalGroup;
 import eu.etaxonomy.cdm.model.name.TaxonNameBase;
 import eu.etaxonomy.cdm.model.reference.ReferenceBase;
@@ -18,11 +17,8 @@ import eu.etaxonomy.cdm.model.common.IdentifiableEntity;
 import org.apache.log4j.Logger;
 import org.hibernate.annotations.Cascade;
 import org.hibernate.annotations.CascadeType;
-import org.hibernate.collection.PersistentSet;
-
 
-import java.lang.reflect.Field;
-import java.util.*;
+import java.lang.reflect.Method;
 
 import javax.persistence.*;
 
@@ -36,13 +32,32 @@ import javax.persistence.*;
 public abstract class TaxonBase extends IdentifiableEntity {
        static Logger logger = Logger.getLogger(TaxonBase.class);
        
-       //TODO make static for performance reasons
-       private static Field taxonBaseField;
+       private static Method methodTaxonNameAddTaxonBase;
+       
+       private static void initMethods()  { 
+               if (methodTaxonNameAddTaxonBase == null){
+                       try {
+                               methodTaxonNameAddTaxonBase = TaxonNameBase.class.getDeclaredMethod("addTaxonBase", TaxonBase.class);
+                               methodTaxonNameAddTaxonBase.setAccessible(true);
+                       } catch (Exception e) {
+                               e.printStackTrace();
+                               //TODO handle exception
+                       }
+               }
+       }
        
        protected TaxonBase(){
                super();
        }
        
+       protected TaxonBase(TaxonNameBase taxonNameBase, ReferenceBase sec){
+               super();
+               if (taxonNameBase != null){
+                       initMethods(); 
+                       this.invokeSetMethod(methodTaxonNameAddTaxonBase, taxonNameBase);  
+               }
+               this.setSec(sec);
+       }
        
        //The assignment to the Taxon or to the Synonym class is not definitive
        private boolean isDoubtful;
@@ -77,19 +92,6 @@ public abstract class TaxonBase extends IdentifiableEntity {
                this.name = newName;
        }
        
-       @Transient
-       public TaxonNameBase getTaxonName(){
-               return this.name;
-       }
-       public void setTaxonName(TaxonNameBase newName){
-               if (newName != null){
-                       newName.addTaxonBase(this);
-               }else{
-                       //FIXME implement
-                       //this.name.removeTaxonBase(this);
-               }
-       }
-       
        @Transient
        public HomotypicalGroup getHomotypicGroup(){
                if (this.getName() == null){
index 7e04f426d5df2445b793945ef025732cbde7ab70..50966c9c18be339204e4355f330f4c577d380a87 100644 (file)
@@ -1,4 +1,4 @@
-"fa032b1a-1ad2-4fb0-a1d9-3016399a80fa",,"NomenclaturalCodeTerm","NomenclaturalCodeTerm",\r
+"fa032b1a-1ad2-4fb0-a1d9-3016399a80fa",,"NomenclaturalCode","NomenclaturalCode",\r
 "ff4b0979-7abf-4b40-95c0-8b8b1e8a4d5e",,"Bacteriological","Bacteriological",\r
 "540fc02a-8a8e-4813-89d2-581dad4dd482",,"ICBN","ICBN",\r
 "65a432b5-92b1-4c9a-8090-2a185e423d2e",,"ICNCP","ICNCP",\r
index 226c0675d41fd5d27448c4245b5d9a7ef6080038..d7f45524bfbbe7a945071a8b04dd2b29d78bea6a 100644 (file)
@@ -60,7 +60,7 @@ public class TaxonBaseTest extends EntityTestBase {
         */\r
        @Before\r
        public void setUp() throws Exception {\r
-               sec=new Book();\r
+               sec= Book.NewInstance();\r
                sec.setTitleCache("Schoenes saftiges Allg�u");\r
                name1 = ZoologicalName.NewInstance(Rank.SPECIES(),"Panthera","onca",null,null,null,"p.1467", null);\r
                HomotypicalGroup homotypicalGroup = HomotypicalGroup.NewInstance();\r
@@ -88,19 +88,19 @@ public class TaxonBaseTest extends EntityTestBase {
                assertEquals(name1.getTitleCache(), taxon1.getName().getTitleCache());\r
                assertNull(freeT.getName());\r
        }\r
-\r
-       /**\r
-        * Test method for {@link eu.etaxonomy.cdm.model.taxon.TaxonBase#setName(eu.etaxonomy.cdm.model.name.TaxonNameBase)}.\r
-        */\r
-       @Test\r
-       public final void testSetName() {\r
-               assertNull(freeT.getName());\r
-               freeT.setTaxonName(name2);\r
-               assertNotNull(freeT.getName());\r
-               assertSame(freeT.getName(), name2);\r
-               assertTrue(name1.getTaxa().contains(taxon1));\r
-               assertTrue(name2.getSynonyms().contains(synonym1));\r
-       }\r
+//\r
+//     /**\r
+//      * Test method for {@link eu.etaxonomy.cdm.model.taxon.TaxonBase#setName(eu.etaxonomy.cdm.model.name.TaxonNameBase)}.\r
+//      */\r
+//     @Test\r
+//     public final void testSetName() {\r
+//             assertNull(freeT.getName());\r
+//             freeT.setName(name2);\r
+//             assertNotNull(freeT.getName());\r
+//             assertSame(freeT.getName(), name2);\r
+//             assertTrue(name1.getTaxa().contains(taxon1));\r
+//             assertTrue(name2.getSynonyms().contains(synonym1));\r
+//     }\r
 \r
        /**\r
         * Test method for {@link eu.etaxonomy.cdm.model.taxon.TaxonBase#isDoubtful()}.\r
@@ -150,11 +150,8 @@ public class TaxonBaseTest extends EntityTestBase {
        public final void testIsSaveable() {\r
                assertFalse(freeT.isSaveable());\r
                assertTrue(taxon1.isSaveable());\r
-               freeT.setTaxonName(name1);\r
                assertFalse(freeT.isSaveable());\r
                freeT.setSec(sec);\r
-               assertTrue(freeT.isSaveable());\r
-               freeT.setTaxonName(null);\r
                assertFalse(freeT.isSaveable());\r
        }\r
 \r