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
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
--- /dev/null
+/**\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
--- /dev/null
+/**\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