merge-update from trunk
[cdmlib.git] / cdmlib-model / src / main / java / eu / etaxonomy / cdm / strategy / cache / reference / JournalDefaultCacheStrategy.java
index 473d3d25a6fa467587acde6b295b46588b0d1bf9..106a8f1a46e96faf91de6335bf1909162b188874 100644 (file)
@@ -11,20 +11,34 @@ package eu.etaxonomy.cdm.strategy.cache.reference;
 \r
 import java.util.UUID;\r
 \r
+import org.apache.commons.lang.StringUtils;\r
 import org.apache.log4j.Logger;\r
 \r
-import eu.etaxonomy.cdm.model.common.IdentifiableEntity;\r
-import eu.etaxonomy.cdm.model.reference.Journal;\r
+import eu.etaxonomy.cdm.common.CdmUtils;\r
+import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.strategy.StrategyBase;\r
 \r
 /**\r
  * @author a.mueller\r
  * @created 29.06.2008\r
- * @version 1.0\r
  */\r
-public class JournalDefaultCacheStrategy<T extends Journal> extends StrategyBase implements IReferenceBaseCacheStrategy {\r
-       private static Logger logger = Logger.getLogger(JournalDefaultCacheStrategy.class);\r
+public class JournalDefaultCacheStrategy extends StrategyBase implements IReferenceBaseCacheStrategy {\r
+       private static final long serialVersionUID = 8495999505123620960L;\r
 \r
+\r
+       @SuppressWarnings("unused")\r
+       private static final Logger logger = Logger.getLogger(JournalDefaultCacheStrategy.class);\r
+\r
+       \r
+       protected String beforeYear = ". ";\r
+       protected String afterYear = "";\r
+       protected String afterAuthor = ", ";\r
+\r
+//     private String blank = " ";\r
+//     private String comma = ",";\r
+//     private String dot =".";\r
+       \r
        final static UUID uuid = UUID.fromString("c84846cd-c862-462e-81b8-53cf4100ed32");\r
        \r
        /* (non-Javadoc)\r
@@ -51,11 +65,65 @@ public class JournalDefaultCacheStrategy<T extends Journal> extends StrategyBase
                super();\r
        }\r
        \r
-       /* (non-Javadoc)\r
-        * @see eu.etaxonomy.cdm.strategy.cache.common.IIdentifiableEntityCacheStrategy#getTitleCache(eu.etaxonomy.cdm.model.common.IdentifiableEntity)\r
-        */\r
-       public String getTitleCache(IdentifiableEntity object) {\r
-               logger.warn("getTitleCache not yet implemented for JournalDefaultCacheStrategy");\r
-               return null;\r
+\r
+       @Override\r
+       public String getTitleCache(Reference journal) {\r
+               return getTitleCache(journal, false);\r
+               \r
+\r
        }\r
+       \r
+\r
+       @Override\r
+       public String getAbbrevTitleCache(Reference journal) {\r
+               return getTitleCache(journal, true);\r
+       }\r
+       \r
+       \r
+       private String getTitleCache(Reference journal, boolean isAbbrev){\r
+               if (journal == null){\r
+                       return null;\r
+               }\r
+\r
+               String title = CdmUtils.getPreferredNonEmptyString(journal.getTitle(), journal.getAbbrevTitle(), isAbbrev, true);\r
+               \r
+               String result = title;\r
+               \r
+//             //delete .\r
+//             while (result.endsWith(".")){\r
+//                     result = result.substring(0, result.length()-1);\r
+//             }\r
+               \r
+//             result = addYear(result, journal);\r
+               \r
+               \r
+               TeamOrPersonBase<?> team = journal.getAuthorship();\r
+               if (team != null){\r
+                       String author = CdmUtils.getPreferredNonEmptyString(team.getTitleCache(), team.getNomenclaturalTitle(), isAbbrev, true);\r
+                       if (StringUtils.isNotBlank(author)){\r
+                               result = author + afterAuthor + result;\r
+                       }\r
+               }\r
+               return result;\r
+       }\r
+\r
+       \r
+       public String getCitation(Reference referenceBase) {\r
+               StringBuilder stringBuilder = new StringBuilder();\r
+               \r
+               TeamOrPersonBase<?> team = referenceBase.getAuthorship();\r
+               if (team != null &&  ! (team.getTitleCache() == null) && ! team.getTitleCache().trim().equals("")){\r
+                       //String author = CdmUtils.Nz(team == null? "" : team.getTitleCache());\r
+                       stringBuilder.append(team.getTitleCache() + afterAuthor);\r
+               }\r
+               \r
+               String year = CdmUtils.Nz(referenceBase.getYear());\r
+               if (!"".equals(year)){\r
+                       stringBuilder.append(beforeYear + year);\r
+               }\r
+               \r
+               return stringBuilder.toString();\r
+       }\r
+\r
+\r
 }\r