merge-update from trunk
[cdmlib.git] / cdmlib-model / src / main / java / eu / etaxonomy / cdm / strategy / cache / reference / JournalDefaultCacheStrategy.java
index c6a57654548c21916b847a041b80254ee43bee9f..106a8f1a46e96faf91de6335bf1909162b188874 100644 (file)
@@ -11,19 +11,22 @@ 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.common.CdmUtils;\r
 import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;\r
-import eu.etaxonomy.cdm.model.reference.Journal;\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<T> {\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
@@ -32,9 +35,9 @@ public class JournalDefaultCacheStrategy<T extends Journal> extends StrategyBase
        protected String afterYear = "";\r
        protected String afterAuthor = ", ";\r
 \r
-       private String blank = " ";\r
-       private String comma = ",";\r
-       private String dot =".";\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
@@ -52,7 +55,7 @@ public class JournalDefaultCacheStrategy<T extends Journal> extends StrategyBase
         * @return\r
         */\r
        public static JournalDefaultCacheStrategy NewInstance(){\r
-               return new JournalDefaultCacheStrategy<Journal>();\r
+               return new JournalDefaultCacheStrategy();\r
        }\r
        \r
        /**\r
@@ -62,18 +65,29 @@ 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(T journal) {\r
-               String result = "";\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
-               String title = CdmUtils.Nz(journal.getTitle()).trim();\r
-               if (!"".equals(title) ){\r
-                       result += title;\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
@@ -81,11 +95,35 @@ public class JournalDefaultCacheStrategy<T extends Journal> extends StrategyBase
 //             }\r
                \r
 //             result = addYear(result, journal);\r
-               TeamOrPersonBase<?> team = journal.getAuthorTeam();\r
-               String author = (team == null ? "" : CdmUtils.Nz(team.getTitleCache()));\r
-               if (! author.equals("")){\r
-                       result = author + afterAuthor + result;\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