e92d6f034b5260b733f044109b648959f5a46b97
[cdmlib.git] / cdmlib-model / src / main / java / eu / etaxonomy / cdm / strategy / cache / reference / ReferenceBaseDefaultCacheStrategy.java
1 /**
2 * Copyright (C) 2007 EDIT
3 * European Distributed Institute of Taxonomy
4 * http://www.e-taxonomy.eu
5 *
6 * The contents of this file are subject to the Mozilla Public License Version 1.1
7 * See LICENSE.TXT at the top of this package for the full license terms.
8 */
9 package eu.etaxonomy.cdm.strategy.cache.reference;
10
11 import java.util.UUID;
12
13 import org.apache.log4j.Logger;
14
15 import eu.etaxonomy.cdm.common.CdmUtils;
16 import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;
17 import eu.etaxonomy.cdm.model.reference.ReferenceBase;
18 import eu.etaxonomy.cdm.strategy.StrategyBase;
19 /**
20 * @author a.mueller
21 * @version 1.0
22 * @created 08-Aug-2008 22:06:45
23 */
24 public class ReferenceBaseDefaultCacheStrategy<T extends ReferenceBase> extends StrategyBase implements IReferenceBaseCacheStrategy<T> {
25 private static final Logger logger = Logger.getLogger(ReferenceBaseDefaultCacheStrategy.class);
26
27 /**
28 * Constructor
29 */
30 public ReferenceBaseDefaultCacheStrategy(){
31 super();
32 }
33 public static ReferenceBaseDefaultCacheStrategy NewInstance(){
34 return new ReferenceBaseDefaultCacheStrategy();
35 }
36
37
38
39 protected String beforeYear = ". ";
40 protected String afterYear = "";
41 protected String afterAuthor = ", ";
42
43 private String blank = " ";
44 private String comma = ",";
45 private String dot =".";
46
47 final static UUID uuid = UUID.fromString("763fe4a0-c79f-4f14-9693-631680225ec3");
48
49
50
51 /* (non-Javadoc)
52 * @see eu.etaxonomy.cdm.strategy.cache.reference.INomenclaturalReferenceCacheStrategy#getTitleCache(eu.etaxonomy.cdm.model.reference.INomenclaturalReference)
53 */
54 public String getTitleCache(T strictReferenceBase) {
55 String result = "";
56 if (strictReferenceBase == null){
57 return null;
58 }
59 String titel = CdmUtils.Nz(strictReferenceBase.getTitle()).trim();
60 //titelAbbrev
61 String titelAbbrevPart = "";
62 if (!"".equals(titel)){
63 result = titel + blank;
64 }
65 //delete .
66 while (result.endsWith(".")){
67 result = result.substring(0, result.length()-1);
68 }
69
70 result = addYear(result, strictReferenceBase);
71 TeamOrPersonBase team = strictReferenceBase.getAuthorTeam();
72 String author = CdmUtils.Nz(team == null ? "" : team.getTitleCache());
73 if (CdmUtils.isNotEmpty(author)){
74 result = author + afterAuthor + result;
75 }
76 return result;
77 }
78
79
80
81 protected String addYear(String string, T ref){
82 String result;
83 if (string == null){
84 return null;
85 }
86 String year = CdmUtils.Nz(ref.getYear());
87 if ("".equals(year)){
88 result = string + afterYear;
89 }else{
90 result = string + beforeYear + year + afterYear;
91 }
92 return result;
93 }
94
95 public String getCitation(T referenceBase) {
96 StringBuilder stringBuilder = new StringBuilder();
97
98 TeamOrPersonBase<?> team = referenceBase.getAuthorTeam();
99 if (team != null && ! (team.getTitleCache() == null) && ! team.getTitleCache().trim().equals("")){
100 //String author = CdmUtils.Nz(team == null? "" : team.getTitleCache());
101 stringBuilder.append(team.getTitleCache() + afterAuthor);
102 }
103
104 String year = CdmUtils.Nz(referenceBase.getYear());
105 if (!"".equals(year)){
106 stringBuilder.append(beforeYear + year);
107 }
108
109 return stringBuilder.toString();
110 }
111
112
113
114 @Override
115 protected UUID getUuid() {
116 return UUID.fromString("919dbf70-33e7-11de-b418-0800200c9a66");
117 }
118
119
120 /**
121 *
122 * @param referenceTitleCache
123 * @param authorTitleCache
124 * @return
125 */
126 public static String putAuthorToEndOfString(String referenceTitleCache, String authorTitleCache) {
127 if(authorTitleCache != null){
128 referenceTitleCache = referenceTitleCache.replace(authorTitleCache + ", ", "");
129 referenceTitleCache += " - " + authorTitleCache;
130 }
131 return referenceTitleCache;
132 }
133 }