* @created 08-Nov-2007 13:06:47
*/
@XmlAccessorType(XmlAccessType.FIELD)
-@XmlType(name = "ReferenceBase", propOrder = {
+@XmlType(name = "Reference", propOrder = {
"uri",
"nomenclaturallyRelevant",
"authorTeam",
@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);
\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
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
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
\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
\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
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
--- /dev/null
+// $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