(no commit message)
authorAndreas Müller <a.mueller@bgbm.org>
Wed, 11 Jun 2008 16:39:17 +0000 (16:39 +0000)
committerAndreas Müller <a.mueller@bgbm.org>
Wed, 11 Jun 2008 16:39:17 +0000 (16:39 +0000)
.gitattributes
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/TimePeriod.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/name/HomotypicalGroup.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/StrictReferenceBase.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/taxon/TaxonComparator.java [new file with mode: 0644]
cdmlib-model/src/test/java/eu/etaxonomy/cdm/model/taxon/TaxonComparatorTest.java [new file with mode: 0644]

index 4e3978a0283f7c3f08b293d9ed6ce45807443528..67d1c4e68308ec2017edb3970cef15b71de60db9 100644 (file)
@@ -226,6 +226,7 @@ cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/taxon/SynonymRelationship.java
 cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/taxon/SynonymRelationshipType.java -text
 cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/taxon/Taxon.java -text
 cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/taxon/TaxonBase.java -text
+cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/taxon/TaxonComparator.java -text
 cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/taxon/TaxonRelationship.java -text
 cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/taxon/TaxonRelationshipType.java -text
 cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/taxon/package.html -text
@@ -301,6 +302,7 @@ cdmlib-model/src/test/java/eu/etaxonomy/cdm/model/name/NonViralNameTest.java -te
 cdmlib-model/src/test/java/eu/etaxonomy/cdm/model/name/RankTest.java -text
 cdmlib-model/src/test/java/eu/etaxonomy/cdm/model/name/TaxonNameBaseTest.java -text
 cdmlib-model/src/test/java/eu/etaxonomy/cdm/model/taxon/TaxonBaseTest.java -text
+cdmlib-model/src/test/java/eu/etaxonomy/cdm/model/taxon/TaxonComparatorTest.java -text
 cdmlib-model/src/test/java/eu/etaxonomy/cdm/model/taxon/TaxonTest.java -text
 cdmlib-model/src/test/java/eu/etaxonomy/cdm/strategy/cache/BotanicNameCacheStrategyTest.java -text
 cdmlib-model/src/test/java/eu/etaxonomy/cdm/strategy/cache/ZoologicalNameCacheStrategyTest.java -text
index e082adec8b2f8be464e60f66035fd63a5dd70eb4..8f201c25e52a5ffda4de8ce982d7c07c37c7f95d 100644 (file)
@@ -14,6 +14,7 @@ import java.util.Calendar;
 import javax.persistence.Embeddable;
 import javax.persistence.Temporal;
 import javax.persistence.TemporalType;
+import javax.persistence.Transient;
 
 import org.apache.log4j.Logger;
 
@@ -87,4 +88,20 @@ public class TimePeriod {
                this.end = end;
        }
        
+       @Transient
+       public String getYear(){
+               String result = "";
+               if (start != null){
+                       result += String.valueOf(this.start.get(Calendar.YEAR));
+                       if (end != null){
+                               result += "-" + String.valueOf(this.end.get(Calendar.YEAR));
+                       }
+               }else{
+                       if (end != null){
+                               result += String.valueOf(this.end.get(Calendar.YEAR));
+                       }
+               }
+               return result;
+       }
+       
 }
\ No newline at end of file
index a9ba39168d1e6170c5ab16d141a8cbe425f49c28..10cbdc5d3d08d022ccae68395902b27bfcb1a6e4 100644 (file)
@@ -10,6 +10,8 @@
 package eu.etaxonomy.cdm.model.name;
 
 import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
@@ -27,6 +29,7 @@ import eu.etaxonomy.cdm.model.common.AnnotatableEntity;
 import eu.etaxonomy.cdm.model.occurrence.Specimen;
 import eu.etaxonomy.cdm.model.reference.ReferenceBase;
 import eu.etaxonomy.cdm.model.taxon.Synonym;
+import eu.etaxonomy.cdm.model.taxon.TaxonComparator;
 import eu.etaxonomy.cdm.strategy.cache.INameCacheStrategy;
 
 
@@ -127,7 +130,8 @@ public class HomotypicalGroup extends AnnotatableEntity {
                                }
                        }
                }
-               // TODO: sort result list according to date first published, see nomenclatural reference
+               //TODO test
+               //Collections.sort(result, new TaxonComparator());
                return result;
        }
 }
index d6ea2ecb422f87ee67717580ba178a37c07b1fa9..49ebe0b7e1ab404c2b0f7c63ea52d4ffdf6fad0b 100644 (file)
@@ -59,7 +59,11 @@ public abstract class StrictReferenceBase extends ReferenceBase{
         */
        @Transient
        public String getYear(){
-               return getDatePublished().toString();
+               if (this.getDatePublished() == null){
+                       return null;
+               }else{
+                       return getDatePublished().getYear();
+               }
        }
        
 
diff --git a/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/taxon/TaxonComparator.java b/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/taxon/TaxonComparator.java
new file mode 100644 (file)
index 0000000..1f30466
--- /dev/null
@@ -0,0 +1,76 @@
+/**\r
+* Copyright (C) 2007 EDIT\r
+* European Distributed Institute of Taxonomy \r
+* http://www.e-taxonomy.eu\r
+* \r
+* The contents of this file are subject to the Mozilla Public License Version 1.1\r
+* See LICENSE.TXT at the top of this package for the full license terms.\r
+*/\r
+\r
+package eu.etaxonomy.cdm.model.taxon;\r
+\r
+import java.util.Comparator;\r
+\r
+import org.apache.log4j.Logger;\r
+\r
+import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
+import eu.etaxonomy.cdm.model.name.ZoologicalName;\r
+import eu.etaxonomy.cdm.model.reference.INomenclaturalReference;\r
+\r
+/**\r
+ * @author a.mueller\r
+ * @created 11.06.2008\r
+ * @version 1.0\r
+ */\r
+public class TaxonComparator implements Comparator<TaxonBase> {\r
+       private static final Logger logger = Logger.getLogger(TaxonComparator.class);\r
+\r
+       /* (non-Javadoc)\r
+        * @see java.util.Comparator#compare(java.lang.Object, java.lang.Object)\r
+        */\r
+       public int compare(TaxonBase taxonBase1, TaxonBase taxonBase2) {\r
+               String date1 = getDate(taxonBase1);;\r
+               String date2 = getDate(taxonBase2);\r
+               if (date1 == null && date2 == null){\r
+                       return 0;\r
+               }else if (date1 == null){\r
+                       return 1;\r
+               }else if (date2 == null){\r
+                       return -1;\r
+               }\r
+               return date1.compareTo(date2);\r
+       }\r
+       \r
+       \r
+       \r
+       private String getDate(TaxonBase taxonBase){\r
+               String result = null;\r
+               if (taxonBase == null){\r
+                       result = null;\r
+               }else{\r
+                       TaxonNameBase name = taxonBase.getName();\r
+                       if (name == null){\r
+                               result = null;\r
+                       }else{\r
+                               if (name instanceof ZoologicalName){\r
+                                       \r
+                                       result = String.valueOf(((ZoologicalName)name).getPublicationYear());\r
+                               }else{\r
+                                       INomenclaturalReference ref = name.getNomenclaturalReference();\r
+                                       if (ref == null){\r
+                                               result = null;\r
+                                       }else{\r
+                                               result = ref.getYear();\r
+                                       }\r
+                               }\r
+                       }\r
+               }\r
+               if (result != null){\r
+                       result = result.trim();\r
+               }\r
+               if ("".equals(result)){\r
+                       result = null;\r
+               }\r
+               return result;\r
+       }\r
+}\r
diff --git a/cdmlib-model/src/test/java/eu/etaxonomy/cdm/model/taxon/TaxonComparatorTest.java b/cdmlib-model/src/test/java/eu/etaxonomy/cdm/model/taxon/TaxonComparatorTest.java
new file mode 100644 (file)
index 0000000..6a8b371
--- /dev/null
@@ -0,0 +1,125 @@
+/**\r
+* Copyright (C) 2007 EDIT\r
+* European Distributed Institute of Taxonomy \r
+* http://www.e-taxonomy.eu\r
+* \r
+* The contents of this file are subject to the Mozilla Public License Version 1.1\r
+* See LICENSE.TXT at the top of this package for the full license terms.\r
+*/\r
+\r
+package eu.etaxonomy.cdm.model.taxon;\r
+\r
+import static org.junit.Assert.*;\r
+\r
+import java.util.ArrayList;\r
+import java.util.Calendar;\r
+import java.util.Collections;\r
+import java.util.List;\r
+\r
+import org.apache.log4j.Logger;\r
+import org.junit.After;\r
+import org.junit.AfterClass;\r
+import org.junit.Before;\r
+import org.junit.BeforeClass;\r
+import org.junit.Test;\r
+\r
+import eu.etaxonomy.cdm.model.common.TimePeriod;\r
+import eu.etaxonomy.cdm.model.name.BotanicalName;\r
+import eu.etaxonomy.cdm.model.name.ZoologicalName;\r
+import eu.etaxonomy.cdm.model.reference.Book;\r
+import eu.etaxonomy.cdm.model.reference.INomenclaturalReference;\r
+import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+\r
+/**\r
+ * @author a.mueller\r
+ * @created 11.06.2008\r
+ * @version 1.0\r
+ */\r
+public class TaxonComparatorTest {\r
+       private static Logger logger = Logger.getLogger(TaxonComparatorTest.class);\r
+\r
+       /**\r
+        * @throws java.lang.Exception\r
+        */\r
+       @BeforeClass\r
+       public static void setUpBeforeClass() throws Exception {\r
+       }\r
+\r
+       /**\r
+        * @throws java.lang.Exception\r
+        */\r
+       @AfterClass\r
+       public static void tearDownAfterClass() throws Exception {\r
+       }\r
+\r
+       /**\r
+        * @throws java.lang.Exception\r
+        */\r
+       @Before\r
+       public void setUp() throws Exception {\r
+       }\r
+\r
+       /**\r
+        * @throws java.lang.Exception\r
+        */\r
+       @After\r
+       public void tearDown() throws Exception {\r
+       }\r
+\r
+/******************** TESTS *****************************************************/\r
+       \r
+       /**\r
+        * Test method for {@link eu.etaxonomy.cdm.model.taxon.TaxonComparator#compare(eu.etaxonomy.cdm.model.taxon.TaxonBase, eu.etaxonomy.cdm.model.taxon.TaxonBase)}.\r
+        */\r
+       @Test\r
+       public void testCompare() {\r
+               ReferenceBase sec = Book.NewInstance();\r
+               \r
+               Book ref1 = Book.NewInstance(); \r
+               Book ref2 = Book.NewInstance(); \r
+               Book ref3 = Book.NewInstance(); \r
+               Calendar cal1 = Calendar.getInstance();\r
+               Calendar cal2 = Calendar.getInstance();\r
+               Calendar cal3 = Calendar.getInstance();\r
+               cal1.set(1945, 3, 2);\r
+               cal2.set(1856, 3, 2);\r
+               cal3.set(1943, 3, 2);\r
+               \r
+               ref1.setDatePublished(TimePeriod.NewInstance(cal1));\r
+//             ref2.setDatePublished(TimePeriod.NewInstance(cal2));\r
+               ref3.setDatePublished(TimePeriod.NewInstance(cal3));\r
+               \r
+               BotanicalName botName1 =  BotanicalName.NewInstance(null);\r
+               BotanicalName botName2 =  BotanicalName.NewInstance(null);\r
+               BotanicalName botName3 =  BotanicalName.NewInstance(null);\r
+               ZoologicalName zooName1 = ZoologicalName.NewInstance(null);\r
+               \r
+               botName1.setNomenclaturalReference(ref1);\r
+               botName2.setNomenclaturalReference(ref2);\r
+               botName3.setNomenclaturalReference(ref3);\r
+               zooName1.setPublicationYear(1823);\r
+               \r
+               List<TaxonBase> list = new ArrayList<TaxonBase>();\r
+               \r
+               Taxon taxon1 = Taxon.NewInstance(botName1, sec);\r
+               Taxon taxon2 = Taxon.NewInstance(botName2, sec);\r
+               Taxon taxon3 = Taxon.NewInstance(botName3, sec);\r
+               Taxon zooTaxon4 = Taxon.NewInstance(zooName1, sec);\r
+               \r
+               taxon1.setId(1);\r
+               taxon2.setId(2);\r
+               taxon3.setId(3);\r
+               zooTaxon4.setId(4);\r
+               \r
+               \r
+               list.add(taxon3);\r
+               list.add(taxon2);\r
+               list.add(taxon1);\r
+               list.add(zooTaxon4);\r
+               Collections.sort(list, new TaxonComparator());\r
+               \r
+               for (TaxonBase taxon : list){\r
+                       System.out.println(taxon.getId());\r
+               }\r
+       }\r
+}\r