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