(no commit message)
[cdmlib.git] / cdmlib-model / src / main / java / eu / etaxonomy / cdm / strategy / cache / reference / GenericDefaultCacheStrategy.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.reference.Article;
17 import eu.etaxonomy.cdm.model.reference.Book;
18 import eu.etaxonomy.cdm.model.reference.Generic;
19 import eu.etaxonomy.cdm.model.reference.INomenclaturalReference;
20 import eu.etaxonomy.cdm.strategy.StrategyBase;
21
22 public class GenericDefaultCacheStrategy <T extends Generic> extends NomRefDefaultCacheStrategyBase<T> implements INomenclaturalReferenceCacheStrategy<T> {
23 private static final Logger logger = Logger.getLogger(GenericDefaultCacheStrategy.class);
24
25
26 private String prefixEdition = "ed.";
27 private String prefixSeries = "ser.";
28 private String prefixVolume = "vol.";
29 private String blank = " ";
30 private String comma = ",";
31 private String dot =".";
32
33 final static UUID uuid = UUID.fromString("95cceb30-6b16-4dc3-8243-c15e746565bc");
34
35 /* (non-Javadoc)
36 * @see eu.etaxonomy.cdm.strategy.StrategyBase#getUuid()
37 */
38 @Override
39 protected UUID getUuid() {
40 return uuid;
41 }
42
43
44 /**
45 * Factory method
46 * @return
47 */
48 public static GenericDefaultCacheStrategy NewInstance(){
49 return new GenericDefaultCacheStrategy();
50 }
51
52 /**
53 * Constructor
54 */
55 private GenericDefaultCacheStrategy(){
56 super();
57 }
58
59 protected String getNomRefTitleWithoutYearAndAuthor(T genericReference){
60 if (genericReference == null){
61 return null;
62 }
63 //TODO
64 String titelAbbrev = CdmUtils.Nz(genericReference.getTitle());
65 //String edition = CdmUtils.Nz(genericReference.getEdition());
66 //TODO
67 String series = CdmUtils.Nz(genericReference.getSeries()); //nomenclaturalReference.getSeries();
68 String volume = CdmUtils.Nz(genericReference.getVolume());
69
70 String nomRefCache = "";
71 boolean lastCharIsDouble;
72 Integer len;
73 String lastChar ="";
74 String character =".";
75 len = titelAbbrev.length();
76 if (len > 0){lastChar = titelAbbrev.substring(len-1, len);}
77 //lastCharIsDouble = f_core_CompareStrings(RIGHT(@TitelAbbrev,1),character);
78 lastCharIsDouble = titelAbbrev.equals(character);
79
80 // if(lastCharIsDouble && edition.length() == 0 && series.length() == 0 && volume.length() == 0 && refYear.length() > 0 ){
81 // titelAbbrev = titelAbbrev.substring(1, len-1); // SUBSTRING(@TitelAbbrev,1,@LEN-1)
82 // }
83
84
85 boolean needsComma = false;
86 //titelAbbrev
87 String titelAbbrevPart = "";
88 if (!"".equals(titelAbbrev)){
89 nomRefCache = titelAbbrev + blank;
90 }
91
92 // //edition
93 // String editionPart = "";
94 // if (!"".equals(edition)){
95 // editionPart = edition;
96 // if (isNumeric(edition)){
97 // editionPart = prefixEdition + blank + editionPart;
98 // }
99 // needsComma = true;
100 // }
101 // nomRefCache += editionPart;
102
103 //inSeries
104 String seriesPart = "";
105 if (!"".equals(series)){
106 seriesPart = series;
107 if (isNumeric(series)){
108 seriesPart = prefixSeries + blank + seriesPart;
109 }
110 if (needsComma){
111 seriesPart = comma + seriesPart;
112 }
113 needsComma = true;
114 }
115 nomRefCache += seriesPart;
116
117
118 //volume Part
119 String volumePart = "";
120 if (!"".equals(volume)){
121 volumePart = volume;
122 if (needsComma){
123 volumePart = comma + blank + volumePart;
124 }
125 //needsComma = false;
126 }
127 nomRefCache += volumePart;
128
129 //delete .
130 while (nomRefCache.endsWith(".")){
131 nomRefCache = nomRefCache.substring(0, nomRefCache.length()-1);
132 }
133
134
135
136
137
138 // --Edition and series are null or numeric
139
140 // if (isNumeric(edition) ){
141 // if (titelAbbrev.length() > 0 && edition.length() > 0 && series.length() > 0 && isNumeric(series) && volume.length() > 0 && refYear.length() > 0 ){
142 // nomRefCache = titelAbbrev + blank + prefixEdition + blank + edition + comma + blank + prefixSeries + blank + series + comma + blank + volume + dot + blank + refYear + dot;
143 // }
144 // }
145
146
147 // IF (len(@Authorteam) = 0 AND len(@TitelAbbrev) > 0 AND len(@Edition) > 0 AND isnumeric(@Edition)=1 AND len(@Series) > 0 AND isnumeric(@Series)=1 AND len(@Volume) > 0 AND len(@RefYear) = 0) SET @NomRefCache = @TitelAbbrev + @blank + @prefixEdition + @blank + @Edition + @comma + @blank + @prefixSeries + @blank + @Series + @comma + @blank + @Volume + @dot
148 // IF (len(@Authorteam) = 0 AND len(@TitelAbbrev) > 0 AND len(@Edition) > 0 AND isnumeric(@Edition)=1 AND len(@Series) > 0 AND isnumeric(@Series)=1 AND len(@Volume) = 0 AND len(@RefYear) > 0) SET @NomRefCache = @TitelAbbrev + @blank + @prefixEdition + @blank + @Edition + @comma + @blank + @prefixSeries + @blank + @Series + @comma + @blank + @Refyear + @dot
149 // IF (len(@Authorteam) = 0 AND len(@TitelAbbrev) > 0 AND len(@Edition) > 0 AND isnumeric(@Edition)=1 AND len(@Series) > 0 AND isnumeric(@Series)=1 AND len(@Volume) = 0 AND len(@RefYear) = 0) SET @NomRefCache = @TitelAbbrev + @blank + @prefixEdition + @blank + @Edition + @comma + @blank + @prefixSeries + @blank + @Series + @dot
150 // IF (len(@Authorteam) = 0 AND len(@TitelAbbrev) > 0 AND len(@Edition) > 0 AND isnumeric(@Edition)=1 AND len(@Series) = 0 AND len(@Volume) > 0 AND len(@RefYear) = 0) SET @NomRefCache = @TitelAbbrev + @blank + @prefixEdition+ @blank + @Edition + @comma + @blank + @Volume + @dot
151 // IF (len(@Authorteam) = 0 AND len(@TitelAbbrev) > 0 AND len(@Edition) > 0 AND isnumeric(@Edition)=1 AND len(@Series) = 0 AND len(@Volume) = 0 AND len(@RefYear) = 0) SET @NomRefCache = @TitelAbbrev + @blank + @prefixEdition + @blank + @Edition + @dot
152 // IF (len(@Authorteam) = 0 AND len(@TitelAbbrev) > 0 AND len(@Edition) = 0 AND len(@Series) > 0 AND isnumeric(@Series)=1 AND len(@Volume) > 0 AND len(@RefYear) = 0) SET @NomRefCache = @TitelAbbrev + @blank + @prefixSeries + @blank + @Series + @comma + @blank + @Volume + @dot
153 // IF (len(@Authorteam) = 0 AND len(@TitelAbbrev) > 0 AND len(@Edition) = 0 AND len(@Series) > 0 AND isnumeric(@Series)=1 AND len(@Volume) = 0 AND len(@RefYear) = 0) SET @NomRefCache = @TitelAbbrev + @blank + @prefixSeries + @blank + @Series + @dot
154 // IF (len(@Authorteam) = 0 AND len(@TitelAbbrev) > 0 AND len(@Edition) = 0 AND len(@Series) = 0 AND len(@Volume) > 0 AND len(@RefYear) = 0) SET @NomRefCache = @TitelAbbrev + @blank + @Volume + @dot
155 // IF (len(@Authorteam) = 0 AND len(@TitelAbbrev) > 0 AND len(@Edition) = 0 AND len(@Series) = 0 AND len(@Volume) = 0 AND len(@RefYear) = 0) SET @NomRefCache = @TitelAbbrev + @dot
156 // IF (len(@Authorteam) = 0 AND len(@TitelAbbrev) = 0 AND len(@Edition) > 0 AND isnumeric(@Edition)=1 AND len(@Series) > 0 AND isnumeric(@Series)=1 AND len(@Volume) > 0 AND len(@RefYear) = 0) SET @NomRefCache = @prefixEdition + @blank + @Edition + @comma + @blank + @prefixSeries + @blank + @Series + @comma + @blank + @Volume + @dot
157 // IF (len(@Authorteam) = 0 AND len(@TitelAbbrev) = 0 AND len(@Edition) > 0 AND isnumeric(@Edition)=1 AND len(@Series) > 0 AND isnumeric(@Series)=1 AND len(@Volume) = 0 AND len(@RefYear) = 0) SET @NomRefCache = @prefixEdition + @blank + @Edition + @comma + @blank + @prefixSeries + @blank + @Series + @dot
158 // IF (len(@Authorteam) = 0 AND len(@TitelAbbrev) = 0 AND len(@Edition) > 0 AND isnumeric(@Edition)=1 AND len(@Series) = 0 AND len(@Volume) > 0 AND len(@RefYear) = 0) SET @NomRefCache = @prefixEdition + @blank + @Edition + @comma + @blank + @Volume + @dot
159 // IF (len(@Authorteam) = 0 AND len(@TitelAbbrev) = 0 AND len(@Edition) > 0 AND isnumeric(@Edition)=1 AND len(@Series) = 0 AND len(@Volume) = 0 AND len(@RefYear) = 0) SET @NomRefCache = @prefixEdition + @blank + @Edition + @dot
160 // IF (len(@Authorteam) = 0 AND len(@TitelAbbrev) = 0 AND len(@Edition) = 0 AND len(@Series) > 0 AND isnumeric(@Series)=1 AND len(@Volume) > 0 AND len(@RefYear) = 0) SET @NomRefCache = @prefixSeries + @blank + @Series + @comma + @blank + @Volume + @dot
161 // IF (len(@Authorteam) = 0 AND len(@TitelAbbrev) = 0 AND len(@Edition) = 0 AND len(@Series) > 0 AND isnumeric(@Series)=1 AND len(@Volume) = 0 AND len(@RefYear) = 0) SET @NomRefCache = @prefixSeries + @blank + @Series + @dot
162 // IF (len(@Authorteam) = 0 AND len(@TitelAbbrev) = 0 AND len(@Edition) = 0 AND len(@Series) = 0 AND len(@Volume) > 0 AND len(@RefYear) = 0) SET @NomRefCache = @Volume + @dot
163 // IF (len(@Authorteam) = 0 AND len(@TitelAbbrev) = 0 AND len(@Edition) = 0 AND len(@Series) = 0 AND len(@Volume) = 0 AND len(@RefYear) > 0) SET @NomRefCache = @Refyear + @dot
164 // IF (len(@Authorteam) = 0 AND len(@TitelAbbrev) = 0 AND len(@Edition) = 0 AND len(@Series) = 0 AND len(@Volume) = 0 AND len(@RefYear) = 0) SET @NomRefCache = NULL
165 //
166 //
167 //
168 //
169 //
170 //
171 // --Edition and/or Series is not numeric
172 //
173 // IF (len(@Authorteam) = 0 AND len(@TitelAbbrev) > 0 AND len(@Edition) > 0 AND isnumeric(@Edition)=0 AND len(@Series) > 0 AND isnumeric(@Series)=0 AND len(@Volume) > 0 AND len(@RefYear) = 0) SET @NomRefCache = @TitelAbbrev + @blank + @Edition + @comma + @blank + @Series + @comma + @blank + @Volume + @dot
174 // IF (len(@Authorteam) = 0 AND len(@TitelAbbrev) > 0 AND len(@Edition) > 0 AND isnumeric(@Edition)=0 AND len(@Series) > 0 AND isnumeric(@Series)=0 AND len(@Volume) = 0 AND len(@RefYear) > 0) SET @NomRefCache = @TitelAbbrev + @blank + @Edition + @comma + @blank + @Series + @comma + @blank + @Refyear + @dot
175 // IF (len(@Authorteam) = 0 AND len(@TitelAbbrev) > 0 AND len(@Edition) > 0 AND isnumeric(@Edition)=0 AND len(@Series) > 0 AND isnumeric(@Series)=0 AND len(@Volume) = 0 AND len(@RefYear) = 0) SET @NomRefCache = @TitelAbbrev + @blank + @Edition + @comma + @blank + @Series + @dot
176 // IF (len(@Authorteam) = 0 AND len(@TitelAbbrev) > 0 AND len(@Edition) > 0 AND isnumeric(@Edition)=0 AND len(@Series) = 0 AND len(@Volume) > 0 AND len(@RefYear) = 0) SET @NomRefCache = @TitelAbbrev + @blank + @Edition + @comma + @blank + @Volume + @dot
177 // IF (len(@Authorteam) = 0 AND len(@TitelAbbrev) > 0 AND len(@Edition) > 0 AND isnumeric(@Edition)=0 AND len(@Series) = 0 AND len(@Volume) = 0 AND len(@RefYear) = 0) SET @NomRefCache = @TitelAbbrev + @blank + @Edition + @dot
178 // IF (len(@Authorteam) = 0 AND len(@TitelAbbrev) > 0 AND len(@Edition) = 0 AND len(@Series) > 0 AND isnumeric(@Series)=0 AND len(@Volume) > 0 AND len(@RefYear) = 0) SET @NomRefCache = @TitelAbbrev + @blank + @Series + @comma + @blank + @Volume + @dot
179 //
180 // IF (len(@Authorteam) = 0 AND len(@TitelAbbrev) > 0 AND len(@Edition) = 0 AND len(@Series) > 0 AND isnumeric(@Series)=0 AND len(@Volume) = 0 AND len(@RefYear) = 0) SET @NomRefCache = @TitelAbbrev + @blank + @Series + @dot
181 // IF (len(@Authorteam) = 0 AND len(@TitelAbbrev) = 0 AND len(@Edition) > 0 AND isnumeric(@Edition)=0 AND len(@Series) > 0 AND isnumeric(@Series)=0 AND len(@Volume) > 0 AND len(@RefYear) = 0) SET @NomRefCache = @Edition + @comma + @blank + @Series + @comma + @blank + @Volume + @dot
182 // IF (len(@Authorteam) = 0 AND len(@TitelAbbrev) = 0 AND len(@Edition) > 0 AND isnumeric(@Edition)=0 AND len(@Series) > 0 AND isnumeric(@Series)=0 AND len(@Volume) = 0 AND len(@RefYear) = 0) SET @NomRefCache = @Edition + @comma + @blank + @Series + @dot
183 // IF (len(@Authorteam) = 0 AND len(@TitelAbbrev) = 0 AND len(@Edition) > 0 AND isnumeric(@Edition)=0 AND len(@Series) = 0 AND len(@Volume) > 0 AND len(@RefYear) = 0) SET @NomRefCache = @Edition + @comma + @blank + @Volume + @dot
184 // IF (len(@Authorteam) = 0 AND len(@TitelAbbrev) = 0 AND len(@Edition) > 0 AND isnumeric(@Edition)=0 AND len(@Series) = 0 AND len(@Volume) = 0 AND len(@RefYear) = 0) SET @NomRefCache = @Edition + @dot
185 // IF (len(@Authorteam) = 0 AND len(@TitelAbbrev) = 0 AND len(@Edition) = 0 AND len(@Series) > 0 AND isnumeric(@Series)=0 AND len(@Volume) > 0 AND len(@RefYear) = 0) SET @NomRefCache = @Series + @comma + @blank + @Volume + @dot
186 // IF (len(@Authorteam) = 0 AND len(@TitelAbbrev) = 0 AND len(@Edition) = 0 AND len(@Series) > 0 AND isnumeric(@Series)=0 AND len(@Volume) = 0 AND len(@RefYear) = 0) SET @NomRefCache = @Series + @dot
187 //
188 //
189 //
190 //
191 // --Edition is numeric and series is not numeric
192 // IF (len(@Authorteam) = 0 AND len(@TitelAbbrev) > 0 AND len(@Edition) > 0 AND isnumeric(@Edition)=1 AND len(@Series) > 0 AND isnumeric(@Series)=0 AND len(@Volume) > 0 AND len(@RefYear) = 0) SET @NomRefCache = @TitelAbbrev + @blank + @prefixEdition + @blank + @Edition + @comma + @blank + @Series + @comma + @blank + @Volume + @dot
193 // IF (len(@Authorteam) = 0 AND len(@TitelAbbrev) > 0 AND len(@Edition) > 0 AND isnumeric(@Edition)=1 AND len(@Series) > 0 AND isnumeric(@Series)=0 AND len(@Volume) = 0 AND len(@RefYear) > 0) SET @NomRefCache = @TitelAbbrev + @blank + @prefixEdition + @blank + @Edition + @comma + @blank + @Series + @comma + @blank + @Refyear + @dot
194 // IF (len(@Authorteam) = 0 AND len(@TitelAbbrev) = 0 AND len(@Edition) > 0 AND isnumeric(@Edition)=1 AND len(@Series) > 0 AND isnumeric(@Series)=0 AND len(@Volume) > 0 AND len(@RefYear) = 0) SET @NomRefCache = @prefixEdition + @blank + @Edition + @comma + @blank + @Series + @comma + @blank + @Volume + @dot
195 // IF (len(@Authorteam) = 0 AND len(@TitelAbbrev) = 0 AND len(@Edition) > 0 AND isnumeric(@Edition)=1 AND len(@Series) > 0 AND isnumeric(@Series)=0 AND len(@Volume) = 0 AND len(@RefYear) = 0) SET @NomRefCache = @prefixEdition + @blank + @Edition+ @comma + @blank + @Series + @dot
196 //
197 //
198 //
199 // --Series is numeric and editon is not numeric
200 // IF (len(@Authorteam) = 0 AND len(@TitelAbbrev) > 0 AND len(@Edition) > 0 AND isnumeric(@Edition)=0 AND len(@Series) > 0 AND isnumeric(@Series)=1 AND len(@Volume) > 0 AND len(@RefYear) = 0) SET @NomRefCache = @TitelAbbrev + @blank + @Edition + @comma + @blank + @prefixSeries + @blank + @Series + @comma + @blank + @Volume + @dot
201 // IF (len(@Authorteam) = 0 AND len(@TitelAbbrev) > 0 AND len(@Edition) > 0 AND isnumeric(@Edition)=0 AND len(@Series) > 0 AND isnumeric(@Series)=1 AND len(@Volume) = 0 AND len(@RefYear) > 0) SET @NomRefCache = @TitelAbbrev + @blank + @Edition + @comma + @blank + @prefixSeries + @blank + @Series + @comma + @blank + @Refyear + @dot
202 // IF (len(@Authorteam) = 0 AND len(@TitelAbbrev) = 0 AND len(@Edition) > 0 AND isnumeric(@Edition)=0 AND len(@Series) > 0 AND isnumeric(@Series)=1 AND len(@Volume) > 0 AND len(@RefYear) = 0) SET @NomRefCache = @Edition + @comma + @blank + @prefixSeries + @blank + @Series + @comma + @blank + @Volume + @dot
203 // IF (len(@Authorteam) = 0 AND len(@TitelAbbrev) = 0 AND len(@Edition) > 0 AND isnumeric(@Edition)=0 AND len(@Series) > 0 AND isnumeric(@Series)=1 AND len(@Volume) = 0 AND len(@RefYear) = 0) SET @NomRefCache = @Edition+ @comma + @blank + @prefixSeries + @blank + @Series + @dot
204 //
205 // --Changes (Marc Geoffroy)
206 //
207 // IF (len(@Authorteam) = 0 AND len(@TitelAbbrev) = 0) SET @NomRefCache = NULL
208 //
209 //
210 // Return @NomRefCache
211
212 return nomRefCache;
213 }
214
215 private boolean isNumeric(String string){
216 if (string == null){
217 return false;
218 }
219 try {
220 Double.valueOf(string);
221 return true;
222 } catch (NumberFormatException e) {
223 return false;
224 }
225
226 }
227
228
229
230 }