#1085 and #1086 (Adapted DefaultTaxonCacheStrategy and changed referenceBase table...
authorAndreas Müller <a.mueller@bgbm.org>
Mon, 21 Sep 2009 13:16:57 +0000 (13:16 +0000)
committerAndreas Müller <a.mueller@bgbm.org>
Mon, 21 Sep 2009 13:16:57 +0000 (13:16 +0000)
.gitattributes
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/ReferencedEntityBase.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/ReferenceBase.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/strategy/cache/taxon/TaxonBaseDefaultCacheStrategy.java
cdmlib-model/src/test/java/eu/etaxonomy/cdm/strategy/cache/reference/CdDvdDefaultCacheStrategyTest.java
cdmlib-model/src/test/java/eu/etaxonomy/cdm/strategy/cache/taxon/TaxonBaseDefaultCacheStrategyTest.java [new file with mode: 0644]

index 7d38e955965412e0cd719d8443c926cec8d49822..f66eefff526ab0fceba40774c8c4a8e223cacf28 100644 (file)
@@ -1680,6 +1680,7 @@ cdmlib-model/src/test/java/eu/etaxonomy/cdm/strategy/cache/name/BotanicNameCache
 cdmlib-model/src/test/java/eu/etaxonomy/cdm/strategy/cache/name/NonViralNameDefaultCacheStrategyTest.java -text
 cdmlib-model/src/test/java/eu/etaxonomy/cdm/strategy/cache/name/ZoologicalNameCacheStrategyTest.java -text
 cdmlib-model/src/test/java/eu/etaxonomy/cdm/strategy/cache/reference/CdDvdDefaultCacheStrategyTest.java -text
+cdmlib-model/src/test/java/eu/etaxonomy/cdm/strategy/cache/taxon/TaxonBaseDefaultCacheStrategyTest.java -text
 cdmlib-model/src/test/java/eu/etaxonomy/cdm/strategy/match/DefaultMatchStrategyTest.java -text
 cdmlib-model/src/test/java/eu/etaxonomy/cdm/strategy/merge/DefaultMergeStrategyTest.java -text
 cdmlib-model/src/test/java/eu/etaxonomy/cdm/strategy/parser/NonViralNameParserImplTest.java -text
index bf3809f33e0213bc07998229939f568ca19de2be..cf02c286d96defd57ba6d40b374f824070b5f4bc 100644 (file)
@@ -63,7 +63,6 @@ public abstract class ReferencedEntityBase extends AnnotatableEntity implements
 
        public ReferencedEntityBase() {
                super();
-               // TODO Auto-generated constructor stub
        }
 
 
index 8425a41354aef918010e13165e5a98c25f82f09a..42098112975aeb7ab53b7ddb26527608ed8c20b8 100644 (file)
@@ -73,7 +73,7 @@ import eu.etaxonomy.cdm.strategy.parser.ParserProblem;
  * @created 08-Nov-2007 13:06:47
  */
 @XmlAccessorType(XmlAccessType.FIELD)
-@XmlType(name = "ReferenceBase", propOrder = {
+@XmlType(name = "Reference", propOrder = {
        "uri",
        "nomenclaturallyRelevant",
     "authorTeam",
@@ -99,7 +99,8 @@ import eu.etaxonomy.cdm.strategy.parser.ParserProblem;
 @Entity
 @Inheritance(strategy=InheritanceType.SINGLE_TABLE)
 @Audited
-@Table(appliesTo="ReferenceBase", indexes = { @org.hibernate.annotations.Index(name = "ReferenceBaseTitleCacheIndex", columnNames = { "titleCache" }) })
+@javax.persistence.Table(name="Reference")
+@Table(appliesTo="Reference", indexes = { @org.hibernate.annotations.Index(name = "ReferenceTitleCacheIndex", columnNames = { "titleCache" }) })
 public abstract class ReferenceBase<S extends IReferenceBaseCacheStrategy> extends IdentifiableMediaEntity<S> implements IParsable, IMergable, IMatchable {
        private static final long serialVersionUID = -2034764545042691295L;
        private static final Logger logger = Logger.getLogger(ReferenceBase.class);
index cdc54e6830d9874fec84082d439844aba7cb5ba6..690aae39bcec6b5829ed22ceb76b2b74393c91f4 100644 (file)
@@ -2,6 +2,10 @@ package eu.etaxonomy.cdm.strategy.cache.taxon;
 \r
 import java.util.UUID;\r
 \r
+import eu.etaxonomy.cdm.common.CdmUtils;\r
+import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;\r
+import eu.etaxonomy.cdm.model.name.NonViralName;\r
+import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
 import eu.etaxonomy.cdm.model.taxon.TaxonBase;\r
 import eu.etaxonomy.cdm.strategy.StrategyBase;\r
 import eu.etaxonomy.cdm.strategy.cache.common.IIdentifiableEntityCacheStrategy;\r
@@ -19,7 +23,9 @@ public class TaxonBaseDefaultCacheStrategy<T extends TaxonBase> extends Strategy
        public String getTitleCache(T taxonBase) {\r
                String title;\r
                if (taxonBase.getName() != null && taxonBase.getName().getTitleCache() != null){\r
-                       title = taxonBase.getName().getTitleCache() + " sec. ";\r
+                       String namePart = getNamePart(taxonBase);\r
+                       \r
+                       title = namePart + " sec. ";\r
                        if (taxonBase.getSec() != null){\r
                                title += taxonBase.getSec().getTitleCache();\r
                        }else{\r
@@ -31,4 +37,21 @@ public class TaxonBaseDefaultCacheStrategy<T extends TaxonBase> extends Strategy
                return title;\r
        }\r
 \r
+       /**\r
+        * @param name\r
+        */\r
+       private String getNamePart(TaxonBase taxonBase) {\r
+               TaxonNameBase nameBase = taxonBase.getName();\r
+               String result = nameBase.getTitleCache();\r
+               //use name cache instead of title cache if required\r
+               if (taxonBase.isUseNameCache() && nameBase.isInstanceOf(NonViralName.class)){\r
+                       NonViralName nvn = HibernateProxyHelper.deproxy(nameBase, NonViralName.class);\r
+                       result = nvn.getNameCache();\r
+               }\r
+               if (CdmUtils.isNotEmpty(taxonBase.getAppendedPhrase())){\r
+                       result = result.trim() + " " +  taxonBase.getAppendedPhrase().trim(); \r
+               }\r
+               return result;\r
+       }\r
+\r
 }\r
index ae46bb279913634c56f845a9b87cb1772668c859..e150711398bdda5b370220df6c17f6b28e249470 100644 (file)
@@ -1,10 +1,10 @@
 \r
 package eu.etaxonomy.cdm.strategy.cache.reference;\r
 \r
-import static org.junit.Assert.*;\r
+import static org.junit.Assert.assertEquals;\r
+import static org.junit.Assert.assertNotNull;\r
 \r
 import org.apache.log4j.Logger;\r
-import org.hibernate.search.store.DirectoryProviderHelper;\r
 import org.junit.After;\r
 import org.junit.AfterClass;\r
 import org.junit.Before;\r
@@ -13,7 +13,6 @@ import org.junit.Test;
 \r
 import eu.etaxonomy.cdm.model.common.TimePeriod;\r
 import eu.etaxonomy.cdm.model.reference.CdDvd;\r
-import eu.etaxonomy.cdm.strategy.cache.reference.CdDvdDefaultCacheStrategy;\r
 \r
 public class CdDvdDefaultCacheStrategyTest {\r
        @SuppressWarnings("unused")\r
@@ -41,7 +40,6 @@ public class CdDvdDefaultCacheStrategyTest {
                cdDvd.setTitle(title);\r
                publisher = "An ugly publisher";\r
                place = "A beutiful place"; \r
-               //cdDvd.addPublisher(publisher, place);\r
                publicationDate = TimePeriod.NewInstance(1999, 2001);\r
                cdDvd.setDatePublished(publicationDate);\r
                this.instance = CdDvdDefaultCacheStrategy.NewInstance();\r
diff --git a/cdmlib-model/src/test/java/eu/etaxonomy/cdm/strategy/cache/taxon/TaxonBaseDefaultCacheStrategyTest.java b/cdmlib-model/src/test/java/eu/etaxonomy/cdm/strategy/cache/taxon/TaxonBaseDefaultCacheStrategyTest.java
new file mode 100644 (file)
index 0000000..eedc947
--- /dev/null
@@ -0,0 +1,102 @@
+// $Id$\r
+/**\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.strategy.cache.taxon;\r
+\r
+import static org.junit.Assert.assertEquals;\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.agent.Person;\r
+import eu.etaxonomy.cdm.model.name.BotanicalName;\r
+import eu.etaxonomy.cdm.model.name.Rank;\r
+import eu.etaxonomy.cdm.model.reference.Book;\r
+import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.taxon.Taxon;\r
+import eu.etaxonomy.cdm.model.taxon.TaxonBase;\r
+\r
+/**\r
+ * @author a.mueller\r
+ * @created 21.09.2009\r
+ * @version 1.0\r
+ */\r
+public class TaxonBaseDefaultCacheStrategyTest {\r
+       @SuppressWarnings("unused")\r
+       private static final Logger logger = Logger.getLogger(TaxonBaseDefaultCacheStrategyTest.class);\r
+\r
+       private String expectedNameTitleCache = "Abies alba (L.) Mill.";\r
+       private String expectedNameCache = "Abies alba";\r
+       BotanicalName name;\r
+       ReferenceBase sec;\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
+               name = BotanicalName.NewInstance(Rank.SPECIES());\r
+               name.setGenusOrUninomial("Abies");\r
+               name.setSpecificEpithet("alba");\r
+               Person combinationAuthor = Person.NewInstance();\r
+               combinationAuthor.setNomenclaturalTitle("Mill.");\r
+               Person basionymAuthor = Person.NewInstance();\r
+               basionymAuthor.setNomenclaturalTitle("L.");\r
+               \r
+               name.setCombinationAuthorTeam(combinationAuthor);\r
+               name.setBasionymAuthorTeam(basionymAuthor);\r
+               assertEquals("Namecache should be Abies alba", expectedNameCache, name.getNameCache());\r
+               assertEquals("Titlecache should be Abies alba (Mill.) L.", expectedNameTitleCache, name.getTitleCache());\r
+               sec = Book.NewInstance();\r
+               sec.setTitle("Sp.Pl.");\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.strategy.cache.taxon.TaxonBaseDefaultCacheStrategy#getTitleCache(eu.etaxonomy.cdm.model.taxon.TaxonBase)}.\r
+        */\r
+       @Test\r
+       public void testGetTitleCache() {\r
+               TaxonBase taxonBase = Taxon.NewInstance(name, sec);\r
+               assertEquals("Taxon titlecache is wrong", expectedNameTitleCache + " sec. Sp.Pl.", taxonBase.getTitleCache());\r
+               String appendedPhrase = "aff. 'schippii'";\r
+               taxonBase.setAppendedPhrase(appendedPhrase);\r
+               assertEquals("Taxon titlecache is wrong", expectedNameTitleCache + " aff. 'schippii' sec. Sp.Pl.", taxonBase.getTitleCache());\r
+               taxonBase.setUseNameCache(true);\r
+               assertEquals("Taxon titlecache is wrong", expectedNameCache + " aff. 'schippii' sec. Sp.Pl.", taxonBase.getTitleCache());\r
+\r
+       }\r
+}\r