Revision 87d7d6ff
Added by Andreas Müller over 7 years ago
cdmlib-model/src/main/java/eu/etaxonomy/cdm/strategy/cache/reference/NewDefaultReferenceCacheStrategy.java | ||
---|---|---|
22 | 22 |
import eu.etaxonomy.cdm.model.reference.Reference; |
23 | 23 |
import eu.etaxonomy.cdm.model.reference.ReferenceType; |
24 | 24 |
import eu.etaxonomy.cdm.strategy.StrategyBase; |
25 |
import eu.etaxonomy.cdm.strategy.cache.reference.old.InRefDefaultCacheStrategyBase; |
|
26 |
import eu.etaxonomy.cdm.strategy.cache.reference.old.NomRefDefaultCacheStrategyBase; |
|
27 |
import eu.etaxonomy.cdm.strategy.cache.reference.old.ReferenceDefaultCacheStrategy; |
|
28 | 25 |
|
29 | 26 |
/** |
30 | 27 |
* #5833 |
cdmlib-model/src/main/java/eu/etaxonomy/cdm/strategy/cache/reference/old/ArticleDefaultCacheStrategy.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.old; |
|
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.IJournal; |
|
18 |
import eu.etaxonomy.cdm.model.reference.Reference; |
|
19 |
import eu.etaxonomy.cdm.strategy.cache.reference.NewDefaultReferenceCacheStrategy; |
|
20 |
|
|
21 |
public class ArticleDefaultCacheStrategy extends NomRefDefaultCacheStrategyBase { |
|
22 |
private static final long serialVersionUID = -1639068590864589314L; |
|
23 |
|
|
24 |
@SuppressWarnings("unused") |
|
25 |
private static final Logger logger = Logger.getLogger(ArticleDefaultCacheStrategy.class); |
|
26 |
|
|
27 |
// public static final String UNDEFINED_JOURNAL = "- undefined journal -"; |
|
28 |
private String prefixReferenceJounal = "in"; |
|
29 |
private String blank = " "; |
|
30 |
private String comma = ","; |
|
31 |
private String prefixSeries = "ser."; |
|
32 |
|
|
33 |
|
|
34 |
final static UUID uuid = UUID.fromString("0d45343a-0c8a-4a64-97ca-e94974b65c96"); |
|
35 |
|
|
36 |
@Override |
|
37 |
protected UUID getUuid() { |
|
38 |
return uuid; |
|
39 |
} |
|
40 |
|
|
41 |
|
|
42 |
/** |
|
43 |
* Factory method |
|
44 |
* @return |
|
45 |
*/ |
|
46 |
public static ArticleDefaultCacheStrategy NewInstance(){ |
|
47 |
return new ArticleDefaultCacheStrategy(); |
|
48 |
} |
|
49 |
|
|
50 |
/** |
|
51 |
* Constructor |
|
52 |
*/ |
|
53 |
private ArticleDefaultCacheStrategy(){ |
|
54 |
super(); |
|
55 |
} |
|
56 |
|
|
57 |
@Override |
|
58 |
public String getTitleCache(Reference article) { |
|
59 |
if (article.isProtectedTitleCache()){ |
|
60 |
return article.getTitleCache(); |
|
61 |
} |
|
62 |
String result = getTitleWithoutYearAndAuthor(article, false); |
|
63 |
result = addYear(result, article, false); |
|
64 |
TeamOrPersonBase<?> team = article.getAuthorship(); |
|
65 |
result = CdmUtils.concat(" ", article.getTitle(), result); |
|
66 |
if (team != null && isNotBlank(team.getTitleCache())){ |
|
67 |
String authorSeparator = isNotBlank(article.getTitle())? afterAuthor : " "; |
|
68 |
result = team.getTitleCache() + authorSeparator + result; |
|
69 |
} |
|
70 |
return result; |
|
71 |
} |
|
72 |
|
|
73 |
@Override |
|
74 |
public String getFullAbbrevTitleString(Reference article) { |
|
75 |
if (article.isProtectedAbbrevTitleCache()){ |
|
76 |
return article.getAbbrevTitleCache(); |
|
77 |
} |
|
78 |
String result = getTitleWithoutYearAndAuthor(article, true); |
|
79 |
result = addYear(result, article, false); |
|
80 |
TeamOrPersonBase<?> team = article.getAuthorship(); |
|
81 |
String articleTitle = CdmUtils.getPreferredNonEmptyString(article.getAbbrevTitle(), article.getTitle(), false, true); |
|
82 |
result = CdmUtils.concat(" ", articleTitle, result); //Article should maybe left out for nomenclatural references (?) |
|
83 |
if (team != null && isNotBlank(team.getNomenclaturalTitle())){ |
|
84 |
String authorSeparator = isNotBlank(articleTitle) ? afterAuthor : " "; |
|
85 |
result = team.getNomenclaturalTitle() + authorSeparator + result; |
|
86 |
} |
|
87 |
return result; |
|
88 |
} |
|
89 |
|
|
90 |
@Override |
|
91 |
protected String getTitleWithoutYearAndAuthor(Reference article, boolean isAbbrev){ |
|
92 |
if (article == null){ |
|
93 |
return null; |
|
94 |
} |
|
95 |
IJournal journal = article.getInReference(); |
|
96 |
|
|
97 |
String journalTitel; |
|
98 |
if (journal != null){ |
|
99 |
journalTitel = CdmUtils.getPreferredNonEmptyString(journal.getTitle(), journal.getAbbrevTitle(), isAbbrev, true); |
|
100 |
}else{ |
|
101 |
journalTitel = NewDefaultReferenceCacheStrategy.UNDEFINED_JOURNAL; |
|
102 |
} |
|
103 |
|
|
104 |
String series = Nz(article.getSeriesPart()).trim(); |
|
105 |
String volume = Nz(article.getVolume()).trim(); |
|
106 |
|
|
107 |
boolean needsComma = false; |
|
108 |
|
|
109 |
String nomRefCache = ""; |
|
110 |
|
|
111 |
//inJournal |
|
112 |
nomRefCache = prefixReferenceJounal + blank; |
|
113 |
|
|
114 |
//titelAbbrev |
|
115 |
if (isNotBlank(journalTitel)){ |
|
116 |
nomRefCache = nomRefCache + journalTitel; |
|
117 |
needsComma = makeNeedsComma(needsComma, nomRefCache, volume, series); |
|
118 |
if (! needsComma){ |
|
119 |
nomRefCache = nomRefCache + blank; |
|
120 |
} |
|
121 |
} |
|
122 |
|
|
123 |
//series and vol. |
|
124 |
nomRefCache = getSeriesAndVolPart(series, volume, needsComma, nomRefCache); |
|
125 |
|
|
126 |
//delete "." |
|
127 |
while (nomRefCache.endsWith(".")){ |
|
128 |
nomRefCache = nomRefCache.substring(0, nomRefCache.length()-1); |
|
129 |
} |
|
130 |
|
|
131 |
return nomRefCache.trim(); |
|
132 |
} |
|
133 |
|
|
134 |
private boolean makeNeedsComma(boolean needsComma, String nomRefCache, String volume, String series) { |
|
135 |
if (needsComma){ |
|
136 |
return true; |
|
137 |
}else{ |
|
138 |
nomRefCache = nomRefCache.toLowerCase(); |
|
139 |
int serIndex = nomRefCache.indexOf(" ser. "); |
|
140 |
int sectIndex = nomRefCache.indexOf(" sect. "); |
|
141 |
int abtIndex = nomRefCache.indexOf(" abt. "); |
|
142 |
int index = Math.max(Math.max(serIndex, sectIndex), abtIndex); |
|
143 |
int commaIndex = nomRefCache.indexOf(",", index); |
|
144 |
if (index > -1 && commaIndex == -1 && isNotBlank(volume)){ |
|
145 |
return true; |
|
146 |
}else if (isNotBlank(series)){ |
|
147 |
return true; |
|
148 |
}else{ |
|
149 |
return false; |
|
150 |
} |
|
151 |
} |
|
152 |
} |
|
153 |
|
|
154 |
protected String getSeriesAndVolPart(String series, String volume, |
|
155 |
boolean needsComma, String nomRefCache) { |
|
156 |
//inSeries |
|
157 |
String seriesPart = ""; |
|
158 |
if (isNotBlank(series)){ |
|
159 |
seriesPart = series; |
|
160 |
if (CdmUtils.isNumeric(series)){ |
|
161 |
seriesPart = prefixSeries + blank + seriesPart; |
|
162 |
} |
|
163 |
// if (needsComma){ |
|
164 |
seriesPart = comma + blank + seriesPart; |
|
165 |
// } |
|
166 |
needsComma = true; |
|
167 |
} |
|
168 |
nomRefCache += seriesPart; |
|
169 |
|
|
170 |
|
|
171 |
//volume Part |
|
172 |
String volumePart = ""; |
|
173 |
if (!"".equals(volume)){ |
|
174 |
volumePart = volume; |
|
175 |
if (needsComma){ |
|
176 |
volumePart = comma + blank + volumePart; |
|
177 |
} |
|
178 |
//needsComma = false; |
|
179 |
} |
|
180 |
nomRefCache += volumePart; |
|
181 |
return nomRefCache; |
|
182 |
} |
|
183 |
} |
cdmlib-model/src/main/java/eu/etaxonomy/cdm/strategy/cache/reference/old/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.old; |
|
10 |
|
|
11 |
import java.util.UUID; |
|
12 |
|
|
13 |
import org.apache.commons.lang.StringUtils; |
|
14 |
import org.apache.log4j.Logger; |
|
15 |
|
|
16 |
import eu.etaxonomy.cdm.common.CdmUtils; |
|
17 |
import eu.etaxonomy.cdm.model.reference.Reference; |
|
18 |
|
|
19 |
public class BookDefaultCacheStrategy extends NomRefDefaultCacheStrategyBase { |
|
20 |
static final long serialVersionUID = -8535065052672341462L; |
|
21 |
|
|
22 |
@SuppressWarnings("unused") |
|
23 |
private static final Logger logger = Logger.getLogger(BookDefaultCacheStrategy.class); |
|
24 |
|
|
25 |
private String prefixEdition = "ed."; |
|
26 |
private String prefixSeries = ", ser."; |
|
27 |
private String blank = " "; |
|
28 |
private String comma = ","; |
|
29 |
|
|
30 |
final static UUID uuid = UUID.fromString("68076ca5-d517-489c-8ae2-01d3c38cc788"); |
|
31 |
|
|
32 |
@Override |
|
33 |
protected UUID getUuid() { |
|
34 |
return uuid; |
|
35 |
} |
|
36 |
|
|
37 |
|
|
38 |
/** |
|
39 |
* Factory method |
|
40 |
* @return |
|
41 |
*/ |
|
42 |
public static BookDefaultCacheStrategy NewInstance(){ |
|
43 |
return new BookDefaultCacheStrategy(); |
|
44 |
} |
|
45 |
|
|
46 |
/** |
|
47 |
* Constructor |
|
48 |
*/ |
|
49 |
private BookDefaultCacheStrategy(){ |
|
50 |
super(); |
|
51 |
} |
|
52 |
|
|
53 |
|
|
54 |
@Override |
|
55 |
public String getTitleWithoutYearAndAuthor(Reference ref, boolean isAbbrev){ |
|
56 |
if (ref == null){ |
|
57 |
return null; |
|
58 |
} |
|
59 |
//TODO |
|
60 |
String title = CdmUtils.getPreferredNonEmptyString(ref.getTitle(), ref.getAbbrevTitle(), isAbbrev, true); |
|
61 |
String edition = Nz(ref.getEdition()).trim(); |
|
62 |
String series = ""; //TODO ref.getSeries(); //SeriesPart is handled later |
|
63 |
String refSeriesPart = Nz(ref.getSeriesPart()); |
|
64 |
String volume = CdmUtils.Nz(ref.getVolume()).trim(); |
|
65 |
String refYear = ""; //TODO nomenclaturalReference.getYear(); |
|
66 |
|
|
67 |
|
|
68 |
String nomRefCache = ""; |
|
69 |
Integer len; |
|
70 |
String lastChar = ""; |
|
71 |
String character ="."; |
|
72 |
len = title.length(); |
|
73 |
if (len > 0){ |
|
74 |
lastChar = title.substring(len-1, len); |
|
75 |
} |
|
76 |
//lastCharIsDouble = f_core_CompareStrings(RIGHT(@TitelAbbrev,1),character); |
|
77 |
boolean lastCharIsDouble = title.equals(character); |
|
78 |
|
|
79 |
if(lastCharIsDouble && edition.length() == 0 && refSeriesPart.length() == 0 && volume.length() == 0 && refYear.length() > 0 ){ |
|
80 |
title = title.substring(1, len-1); // SUBSTRING(@TitelAbbrev,1,@LEN-1) |
|
81 |
} |
|
82 |
|
|
83 |
|
|
84 |
boolean needsComma = false; |
|
85 |
//titelAbbrev |
|
86 |
if (!"".equals(title) ){ |
|
87 |
String postfix = isNotBlank(edition + refSeriesPart) ? "" : blank; |
|
88 |
nomRefCache = title + postfix; |
|
89 |
} |
|
90 |
//edition |
|
91 |
String editionPart = ""; |
|
92 |
if (StringUtils.isNotBlank(edition)){ |
|
93 |
editionPart = edition; |
|
94 |
if (isNumeric(edition)){ |
|
95 |
editionPart = prefixEdition + blank + editionPart; |
|
96 |
} |
|
97 |
needsComma = true; |
|
98 |
} |
|
99 |
nomRefCache = CdmUtils.concat(", ", nomRefCache, editionPart); |
|
100 |
|
|
101 |
//inSeries |
|
102 |
String seriesPart = ""; |
|
103 |
if (StringUtils.isNotBlank(refSeriesPart)){ |
|
104 |
seriesPart = refSeriesPart; |
|
105 |
if (isNumeric(refSeriesPart)){ |
|
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 (StringUtils.isNotBlank(volume)){ |
|
119 |
volumePart = volume; |
|
120 |
if (needsComma){ |
|
121 |
volumePart = comma + blank + volumePart; |
|
122 |
}else{ |
|
123 |
volumePart = "" + 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 |
return nomRefCache.trim(); |
|
135 |
} |
|
136 |
|
|
137 |
private boolean isNumeric(String string){ |
|
138 |
if (string == null){ |
|
139 |
return false; |
|
140 |
} |
|
141 |
try { |
|
142 |
Double.valueOf(string); |
|
143 |
return true; |
|
144 |
} catch (NumberFormatException e) { |
|
145 |
return false; |
|
146 |
} |
|
147 |
} |
|
148 |
|
|
149 |
|
|
150 |
|
|
151 |
} |
cdmlib-model/src/main/java/eu/etaxonomy/cdm/strategy/cache/reference/old/BookSectionDefaultCacheStrategy.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.old; |
|
10 |
|
|
11 |
import java.util.UUID; |
|
12 |
|
|
13 |
import org.apache.log4j.Logger; |
|
14 |
|
|
15 |
import eu.etaxonomy.cdm.model.reference.Reference; |
|
16 |
import eu.etaxonomy.cdm.strategy.cache.reference.INomenclaturalReferenceCacheStrategy; |
|
17 |
|
|
18 |
public class BookSectionDefaultCacheStrategy extends InRefDefaultCacheStrategyBase implements INomenclaturalReferenceCacheStrategy { |
|
19 |
private static final long serialVersionUID = 7293886681984614996L; |
|
20 |
|
|
21 |
private static final Logger logger = Logger.getLogger(BookSectionDefaultCacheStrategy.class); |
|
22 |
final static UUID uuid = UUID.fromString("f9c53f20-addd-4d2f-9697-ef1fe727deba"); |
|
23 |
|
|
24 |
private static final String inRefTypeStr = "book"; |
|
25 |
|
|
26 |
private static final boolean inRefIsObligatory = true; |
|
27 |
|
|
28 |
@Override |
|
29 |
protected UUID getUuid() { |
|
30 |
return uuid; |
|
31 |
} |
|
32 |
|
|
33 |
@Override |
|
34 |
protected String getInRefType() { |
|
35 |
return inRefTypeStr; |
|
36 |
} |
|
37 |
|
|
38 |
/** |
|
39 |
* Factory method |
|
40 |
* @return |
|
41 |
*/ |
|
42 |
public static BookSectionDefaultCacheStrategy NewInstance(){ |
|
43 |
return new BookSectionDefaultCacheStrategy(); |
|
44 |
} |
|
45 |
|
|
46 |
/** |
|
47 |
* Constructor |
|
48 |
*/ |
|
49 |
private BookSectionDefaultCacheStrategy(){ |
|
50 |
super(); |
|
51 |
} |
|
52 |
|
|
53 |
@Override |
|
54 |
protected String getTitleWithoutYearAndAuthor(Reference reference, boolean isAbbrev) { |
|
55 |
// not needed in BookSection |
|
56 |
logger.warn("Questionable procedure call. Procedure not implemented because not needed. "); |
|
57 |
return null; |
|
58 |
} |
|
59 |
|
|
60 |
@Override |
|
61 |
public String getTokenizedNomenclaturalTitel(Reference generic) { |
|
62 |
return super.getTokenizedNomenclaturalTitel(generic, inRefIsObligatory); |
|
63 |
} |
|
64 |
|
|
65 |
@Override |
|
66 |
public String getTitleCache(Reference thisRef) { |
|
67 |
return super.getTitleCache(thisRef, inRefIsObligatory, false); |
|
68 |
} |
|
69 |
|
|
70 |
@Override |
|
71 |
public String getFullAbbrevTitleString(Reference thisRef) { |
|
72 |
return super.getTitleCache(thisRef, inRefIsObligatory, true); |
|
73 |
} |
|
74 |
|
|
75 |
|
|
76 |
} |
cdmlib-model/src/main/java/eu/etaxonomy/cdm/strategy/cache/reference/old/CdDvdDefaultCacheStrategy.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.old; |
|
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.Reference; |
|
17 |
|
|
18 |
public class CdDvdDefaultCacheStrategy extends NomRefDefaultCacheStrategyBase { |
|
19 |
private static final long serialVersionUID = 8482637736512817472L; |
|
20 |
|
|
21 |
@SuppressWarnings("unused") |
|
22 |
private static final Logger logger = Logger.getLogger(CdDvdDefaultCacheStrategy.class); |
|
23 |
|
|
24 |
private String blank = " "; |
|
25 |
|
|
26 |
final static UUID uuid = UUID.fromString("68076ca5-d517-489c-8ae2-01d3c38cc788"); |
|
27 |
|
|
28 |
@Override |
|
29 |
protected UUID getUuid() { |
|
30 |
return uuid; |
|
31 |
} |
|
32 |
|
|
33 |
/** |
|
34 |
* Factory method |
|
35 |
* @return |
|
36 |
*/ |
|
37 |
public static CdDvdDefaultCacheStrategy NewInstance(){ |
|
38 |
return new CdDvdDefaultCacheStrategy(); |
|
39 |
} |
|
40 |
|
|
41 |
/** |
|
42 |
* Constructor |
|
43 |
*/ |
|
44 |
private CdDvdDefaultCacheStrategy(){ |
|
45 |
super(); |
|
46 |
} |
|
47 |
|
|
48 |
@Override |
|
49 |
protected String getTitleWithoutYearAndAuthor(Reference ref, boolean isAbbrev){ |
|
50 |
if (ref == null){ |
|
51 |
return null; |
|
52 |
} |
|
53 |
String nomRefCache = ""; |
|
54 |
//TODO |
|
55 |
String titel = CdmUtils.getPreferredNonEmptyString(ref.getTitle(), ref.getAbbrevTitle(), isAbbrev, true); |
|
56 |
// String publisher = CdmUtils.Nz(nomenclaturalReference.getPublisher()); |
|
57 |
|
|
58 |
//titelAbbrev |
|
59 |
if (titel.length() > 0){ |
|
60 |
nomRefCache = titel + blank; |
|
61 |
} |
|
62 |
// //publisher |
|
63 |
// String publisherPart = ""; |
|
64 |
// if (!"".equals(publisher)){ |
|
65 |
// publisherPart = publisher; |
|
66 |
// needsComma = true; |
|
67 |
// } |
|
68 |
// nomRefCache += publisherPart; |
|
69 |
|
|
70 |
|
|
71 |
//delete . |
|
72 |
while (nomRefCache.endsWith(".")){ |
|
73 |
nomRefCache = nomRefCache.substring(0, nomRefCache.length()-1); |
|
74 |
} |
|
75 |
return nomRefCache.trim(); |
|
76 |
} |
|
77 |
|
|
78 |
} |
cdmlib-model/src/main/java/eu/etaxonomy/cdm/strategy/cache/reference/old/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.old; |
|
10 |
|
|
11 |
import java.util.UUID; |
|
12 |
|
|
13 |
import org.apache.commons.lang.StringUtils; |
|
14 |
import org.apache.log4j.Logger; |
|
15 |
|
|
16 |
import eu.etaxonomy.cdm.common.CdmUtils; |
|
17 |
import eu.etaxonomy.cdm.model.reference.Reference; |
|
18 |
import eu.etaxonomy.cdm.strategy.cache.reference.INomenclaturalReferenceCacheStrategy; |
|
19 |
|
|
20 |
public class GenericDefaultCacheStrategy extends InRefDefaultCacheStrategyBase implements INomenclaturalReferenceCacheStrategy { |
|
21 |
private static final long serialVersionUID = 6687224678019228192L; |
|
22 |
|
|
23 |
@SuppressWarnings("unused") |
|
24 |
private static final Logger logger = Logger.getLogger(GenericDefaultCacheStrategy.class); |
|
25 |
|
|
26 |
|
|
27 |
private static final String inRefTypeStr = "generic reference"; |
|
28 |
|
|
29 |
@Override |
|
30 |
protected String getInRefType() { |
|
31 |
return inRefTypeStr; |
|
32 |
} |
|
33 |
|
|
34 |
private String prefixEdition = "ed."; |
|
35 |
private String prefixSeries = "ser."; |
|
36 |
// private String prefixVolume = "vol."; |
|
37 |
private String blank = " "; |
|
38 |
private String comma = ","; |
|
39 |
// private String dot ="."; |
|
40 |
|
|
41 |
final static UUID uuid = UUID.fromString("95cceb30-6b16-4dc3-8243-c15e746565bc"); |
|
42 |
|
|
43 |
@Override |
|
44 |
protected UUID getUuid() { |
|
45 |
return uuid; |
|
46 |
} |
|
47 |
|
|
48 |
|
|
49 |
/** |
|
50 |
* Factory method |
|
51 |
* @return |
|
52 |
*/ |
|
53 |
public static GenericDefaultCacheStrategy NewInstance(){ |
|
54 |
return new GenericDefaultCacheStrategy(); |
|
55 |
} |
|
56 |
|
|
57 |
/** |
|
58 |
* Constructor |
|
59 |
*/ |
|
60 |
private GenericDefaultCacheStrategy(){ |
|
61 |
super(); |
|
62 |
} |
|
63 |
|
|
64 |
|
|
65 |
@Override |
|
66 |
protected String getTitleWithoutYearAndAuthor(Reference genericReference, boolean isAbbrev){ |
|
67 |
if (genericReference == null){ |
|
68 |
return null; |
|
69 |
} |
|
70 |
//TODO |
|
71 |
String titel = CdmUtils.getPreferredNonEmptyString(genericReference.getTitle(), genericReference.getAbbrevTitle(), isAbbrev, true); |
|
72 |
String edition = CdmUtils.Nz(genericReference.getEdition()); |
|
73 |
//TODO |
|
74 |
String series = CdmUtils.Nz(genericReference.getSeriesPart()).trim(); //nomenclaturalReference.getSeries(); |
|
75 |
String volume = CdmUtils.Nz(genericReference.getVolume()).trim(); |
|
76 |
|
|
77 |
String result = ""; |
|
78 |
boolean lastCharIsDouble; |
|
79 |
Integer len; |
|
80 |
String lastChar =""; |
|
81 |
String character ="."; |
|
82 |
len = titel.length(); |
|
83 |
if (len > 0){lastChar = titel.substring(len-1, len);} |
|
84 |
//lastCharIsDouble = f_core_CompareStrings(RIGHT(@TitelAbbrev,1),character); |
|
85 |
lastCharIsDouble = titel.equals(character); |
|
86 |
|
|
87 |
// if(lastCharIsDouble && edition.length() == 0 && series.length() == 0 && volume.length() == 0 && refYear.length() > 0 ){ |
|
88 |
// titelAbbrev = titelAbbrev.substring(1, len-1); // SUBSTRING(@TitelAbbrev,1,@LEN-1) |
|
89 |
// } |
|
90 |
|
|
91 |
|
|
92 |
boolean needsComma = false; |
|
93 |
//titelAbbrev |
|
94 |
if (titel.length() > 0 ){ |
|
95 |
String postfix = StringUtils.isNotBlank(edition) ? "" : blank; |
|
96 |
result = titel + postfix; |
|
97 |
} |
|
98 |
//edition |
|
99 |
String editionPart = ""; |
|
100 |
if (StringUtils.isNotBlank(edition)){ |
|
101 |
editionPart = edition; |
|
102 |
if (isNumeric(edition)){ |
|
103 |
editionPart = prefixEdition + blank + editionPart; |
|
104 |
} |
|
105 |
needsComma = true; |
|
106 |
} |
|
107 |
result = CdmUtils.concat(", ", result, editionPart); |
|
108 |
|
|
109 |
//inSeries |
|
110 |
String seriesPart = ""; |
|
111 |
if (isNotBlank(series)){ |
|
112 |
seriesPart = series; |
|
113 |
if (isNumeric(series)){ |
|
114 |
seriesPart = prefixSeries + blank + seriesPart; |
|
115 |
} |
|
116 |
if (needsComma){ |
|
117 |
seriesPart = comma + seriesPart; |
|
118 |
} |
|
119 |
needsComma = true; |
|
120 |
} |
|
121 |
result += seriesPart; |
|
122 |
|
|
123 |
|
|
124 |
//volume Part |
|
125 |
String volumePart = ""; |
|
126 |
if (!"".equals(volume)){ |
|
127 |
volumePart = volume; |
|
128 |
if (needsComma){ |
|
129 |
volumePart = comma + blank + volumePart; |
|
130 |
} |
|
131 |
//needsComma = false; |
|
132 |
} |
|
133 |
result += volumePart; |
|
134 |
|
|
135 |
//delete . |
|
136 |
while (result.endsWith(".")){ |
|
137 |
result = result.substring(0, result.length()-1); |
|
138 |
} |
|
139 |
|
|
140 |
|
|
141 |
|
|
142 |
// --Edition and series are null or numeric |
|
143 |
|
|
144 |
// if (isNumeric(edition) ){ |
|
145 |
// if (titelAbbrev.length() > 0 && edition.length() > 0 && series.length() > 0 && isNumeric(series) && volume.length() > 0 && refYear.length() > 0 ){ |
|
146 |
// nomRefCache = titelAbbrev + blank + prefixEdition + blank + edition + comma + blank + prefixSeries + blank + series + comma + blank + volume + dot + blank + refYear + dot; |
|
147 |
// } |
|
148 |
// } |
|
149 |
|
|
150 |
|
|
151 |
// FROM BERLIN MODEL TRIGGER: |
|
152 |
// 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 |
|
153 |
// 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 |
|
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 = @TitelAbbrev + @blank + @prefixEdition + @blank + @Edition + @comma + @blank + @prefixSeries + @blank + @Series + @dot |
|
155 |
// 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 |
|
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 = @TitelAbbrev + @blank + @prefixEdition + @blank + @Edition + @dot |
|
157 |
// 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 |
|
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 = @TitelAbbrev + @blank + @prefixSeries + @blank + @Series + @dot |
|
159 |
// 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 |
|
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 = @TitelAbbrev + @dot |
|
161 |
// 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 |
|
162 |
// 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 |
|
163 |
// 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 |
|
164 |
// 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 |
|
165 |
// 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 |
|
166 |
// 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 |
|
167 |
// 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 |
|
168 |
// 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 |
|
169 |
// 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 |
|
170 |
// |
|
171 |
// |
|
172 |
// |
|
173 |
// |
|
174 |
// |
|
175 |
// |
|
176 |
// --Edition and/or Series is not numeric |
|
177 |
// |
|
178 |
// 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 |
|
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 = @TitelAbbrev + @blank + @Edition + @comma + @blank + @Series + @comma + @blank + @Refyear + @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 = @TitelAbbrev + @blank + @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 = @TitelAbbrev + @blank + @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 = @TitelAbbrev + @blank + @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 = @TitelAbbrev + @blank + @Series + @comma + @blank + @Volume + @dot |
|
184 |
// |
|
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 = @TitelAbbrev + @blank + @Series + @dot |
|
186 |
// 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 |
|
187 |
// 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 |
|
188 |
// 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 |
|
189 |
// 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 |
|
190 |
// 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 |
|
191 |
// 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 |
|
192 |
// |
|
193 |
// |
|
194 |
// |
|
195 |
// |
|
196 |
// --Edition is numeric and series is not numeric |
|
197 |
// 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 |
|
198 |
// 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 |
|
199 |
// 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 |
|
200 |
// 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 |
|
201 |
// |
|
202 |
// |
|
203 |
// |
|
204 |
// --Series is numeric and editon is not numeric |
|
205 |
// 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 |
|
206 |
// 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 |
|
207 |
// 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 |
|
208 |
// 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 |
|
209 |
// |
|
210 |
// --Changes (Marc Geoffroy) |
|
211 |
// |
|
212 |
// IF (len(@Authorteam) = 0 AND len(@TitelAbbrev) = 0) SET @NomRefCache = NULL |
|
213 |
// |
|
214 |
// |
|
215 |
// Return @NomRefCache |
|
216 |
|
|
217 |
return result.trim(); |
|
218 |
} |
|
219 |
|
|
220 |
private boolean isNumeric(String string){ |
|
221 |
if (string == null){ |
|
222 |
return false; |
|
223 |
} |
|
224 |
try { |
|
225 |
Double.valueOf(string); |
|
226 |
return true; |
|
227 |
} catch (NumberFormatException e) { |
|
228 |
return false; |
|
229 |
} |
|
230 |
|
|
231 |
} |
|
232 |
|
|
233 |
|
|
234 |
|
|
235 |
} |
cdmlib-model/src/main/java/eu/etaxonomy/cdm/strategy/cache/reference/old/InRefDefaultCacheStrategyBase.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.old; |
|
10 |
|
|
11 |
import org.apache.commons.lang.StringUtils; |
|
12 |
import org.apache.log4j.Logger; |
|
13 |
|
|
14 |
import eu.etaxonomy.cdm.common.CdmUtils; |
|
15 |
import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase; |
|
16 |
import eu.etaxonomy.cdm.model.common.TimePeriod; |
|
17 |
import eu.etaxonomy.cdm.model.reference.INomenclaturalReference; |
|
18 |
import eu.etaxonomy.cdm.model.reference.Reference; |
|
19 |
|
|
20 |
/** |
|
21 |
* @author a.mueller |
|
22 |
* @created 15.03.2012 |
|
23 |
*/ |
|
24 |
public abstract class InRefDefaultCacheStrategyBase extends NomRefDefaultCacheStrategyBase { |
|
25 |
|
|
26 |
private static final long serialVersionUID = -8418443677312335864L; |
|
27 |
private static final Logger logger = Logger.getLogger(InRefDefaultCacheStrategyBase.class); |
|
28 |
|
|
29 |
private String inSeparator = "in "; |
|
30 |
private String afterSectionAuthor = " - "; |
|
31 |
private String blank = " "; |
|
32 |
|
|
33 |
|
|
34 |
|
|
35 |
protected abstract String getInRefType(); |
|
36 |
|
|
37 |
protected String afterInRefAuthor = ", "; |
|
38 |
|
|
39 |
@Override |
|
40 |
public String getTokenizedNomenclaturalTitel(Reference generic) { |
|
41 |
return getTokenizedNomenclaturalTitel(generic, false); |
|
42 |
} |
|
43 |
|
|
44 |
protected String getTokenizedNomenclaturalTitel(Reference thisRef, boolean inRefIsObligatory) { |
|
45 |
//generic == null |
|
46 |
if (thisRef == null /* || generic.getInReference() == null */){ |
|
47 |
return null; |
|
48 |
} |
|
49 |
|
|
50 |
Reference inRef = thisRef.getInReference(); |
|
51 |
|
|
52 |
//inRef == null |
|
53 |
if (! inRefIsObligatory && inRef == null){ |
|
54 |
return super.getTokenizedNomenclaturalTitel(thisRef); |
|
55 |
} |
|
56 |
|
|
57 |
String result; |
|
58 |
//use generics's publication date if it exists |
|
59 |
if (inRef == null || (thisRef.hasDatePublished() ) ){ |
|
60 |
GenericDefaultCacheStrategy inRefStrategy = GenericDefaultCacheStrategy.NewInstance(); |
|
61 |
result = inRef == null ? "" : inRefStrategy.getTitleWithoutYearAndAuthor(inRef, true); |
|
62 |
//added //TODO unify with non-inRef references formatting |
|
63 |
|
|
64 |
if (isNotBlank(thisRef.getVolume())){ |
|
65 |
result = result + " " + thisRef.getVolume(); |
|
66 |
} |
|
67 |
//TODO series / edition |
|
68 |
|
|
69 |
//end added |
|
70 |
result += INomenclaturalReference.MICRO_REFERENCE_TOKEN; |
|
71 |
result = addYear(result, thisRef, true); |
|
72 |
}else{ |
|
73 |
//else use inRefs's publication date |
|
74 |
result = inRef.getNomenclaturalCitation(INomenclaturalReference.MICRO_REFERENCE_TOKEN); |
|
75 |
if (result != null){ |
|
76 |
result = result.replace(beforeMicroReference + INomenclaturalReference.MICRO_REFERENCE_TOKEN, INomenclaturalReference.MICRO_REFERENCE_TOKEN); |
|
77 |
} |
|
78 |
} |
|
79 |
//FIXME: vol. etc., http://dev.e-taxonomy.eu/trac/ticket/2862 |
|
80 |
|
|
81 |
result = getInRefAuthorPart(thisRef.getInReference(), afterInRefAuthor) + result; |
|
82 |
result = "in " + result; |
|
83 |
return result; |
|
84 |
} |
|
85 |
|
|
86 |
|
|
87 |
|
|
88 |
protected String getInRefAuthorPart(Reference book, String seperator){ |
|
89 |
if (book == null){ |
|
90 |
return ""; |
|
91 |
} |
|
92 |
TeamOrPersonBase<?> team = book.getAuthorship(); |
|
93 |
String result = Nz( team == null ? "" : team.getNomenclaturalTitle()); |
|
94 |
if (! result.trim().equals("")){ |
|
95 |
result = result + seperator; |
|
96 |
} |
|
97 |
return result; |
|
98 |
} |
|
99 |
|
|
100 |
|
|
101 |
@Override |
|
102 |
public String getTitleCache(Reference thisRef) { |
|
103 |
return getTitleCache(thisRef, false, false); |
|
104 |
} |
|
105 |
|
|
106 |
@Override |
|
107 |
public String getFullAbbrevTitleString(Reference thisRef) { |
|
108 |
return getTitleCache(thisRef, false, true); |
|
109 |
} |
|
110 |
|
|
111 |
|
|
112 |
protected String getTitleCache(Reference thisRef, boolean inRefIsObligatory, boolean isAbbrev) { |
|
113 |
String result; |
|
114 |
|
|
115 |
Reference inRef = thisRef.getInReference(); |
|
116 |
boolean hasInRef = (inRef != null); |
|
117 |
// get inRef part |
|
118 |
if (inRef != null){ |
|
119 |
result = CdmUtils.getPreferredNonEmptyString(inRef.getTitleCache(), inRef.getAbbrevTitleCache(), isAbbrev, true) ; |
|
120 |
}else{ |
|
121 |
if ( ! inRefIsObligatory){ |
|
122 |
return super.getTitleCache(thisRef); |
|
123 |
}else{ |
|
124 |
result = String.format("- undefined %s -", getInRefType()); |
|
125 |
} |
|
126 |
} |
|
127 |
|
|
128 |
//in |
|
129 |
result = inSeparator + result; |
|
130 |
|
|
131 |
//section title |
|
132 |
String title = CdmUtils.getPreferredNonEmptyString( |
|
133 |
thisRef.getTitle(), thisRef.getAbbrevTitle(), isAbbrev, true); |
|
134 |
if (title.length() > 0){ |
|
135 |
result = title + blank + result; |
|
136 |
} |
|
137 |
|
|
138 |
//section author |
|
139 |
TeamOrPersonBase<?> thisRefTeam = thisRef.getAuthorship(); |
|
140 |
String thisRefAuthor = ""; |
|
141 |
if (thisRefTeam != null){ |
|
142 |
thisRefAuthor = CdmUtils.getPreferredNonEmptyString(thisRefTeam.getTitleCache(), thisRefTeam.getNomenclaturalTitle(), isAbbrev, true); |
|
143 |
} |
|
144 |
result = CdmUtils.concat(afterSectionAuthor, thisRefAuthor, result); |
|
145 |
|
|
146 |
//date |
|
147 |
if (thisRef.getDatePublished() != null && ! thisRef.getDatePublished().isEmpty()){ |
|
148 |
String thisRefDate = thisRef.getDatePublished().toString(); |
|
149 |
if (hasInRef && thisRef.getInBook().getDatePublished() != null){ |
|
150 |
TimePeriod inRefDate = thisRef.getInReference().getDatePublished(); |
|
151 |
String inRefDateString = inRefDate.getYear(); |
|
152 |
if (isNotBlank(inRefDateString)){ |
|
153 |
int pos = StringUtils.lastIndexOf(result, inRefDateString); |
|
154 |
if (pos > -1 ){ |
|
155 |
result = result.substring(0, pos) + thisRefDate + result.substring(pos + inRefDateString.length()); |
|
156 |
}else{ |
|
157 |
logger.warn("InRefDateString (" + inRefDateString + ") could not be found in result (" + result +")"); |
|
158 |
} |
|
159 |
}else{ |
|
160 |
//avoid duplicate dots ('..') |
|
161 |
String bYearSeparator = result.substring(result.length() -1).equals(beforeYear.substring(0, 1)) ? beforeYear.substring(1) : beforeYear; |
|
162 |
result = result + bYearSeparator + thisRefDate + afterYear; |
|
163 |
} |
|
164 |
}else{ |
|
165 |
result = result + beforeYear + thisRefDate + afterYear; |
|
166 |
} |
|
167 |
} |
|
168 |
return result; |
|
169 |
} |
|
170 |
|
|
171 |
} |
cdmlib-model/src/main/java/eu/etaxonomy/cdm/strategy/cache/reference/old/JournalDefaultCacheStrategy.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 |
|
|
10 |
package eu.etaxonomy.cdm.strategy.cache.reference.old; |
|
11 |
|
|
12 |
import java.util.UUID; |
|
13 |
|
|
14 |
import org.apache.commons.lang.StringUtils; |
|
15 |
import org.apache.log4j.Logger; |
|
16 |
|
|
17 |
import eu.etaxonomy.cdm.common.CdmUtils; |
|
18 |
import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase; |
|
19 |
import eu.etaxonomy.cdm.model.reference.Reference; |
|
20 |
import eu.etaxonomy.cdm.strategy.StrategyBase; |
|
21 |
import eu.etaxonomy.cdm.strategy.cache.reference.IReferenceCacheStrategy; |
|
22 |
|
|
23 |
/** |
|
24 |
* @author a.mueller |
|
25 |
* @created 29.06.2008 |
|
26 |
*/ |
|
27 |
public class JournalDefaultCacheStrategy extends StrategyBase implements IReferenceCacheStrategy { |
|
28 |
private static final long serialVersionUID = 8495999505123620960L; |
|
29 |
|
|
30 |
|
|
31 |
@SuppressWarnings("unused") |
|
32 |
private static final Logger logger = Logger.getLogger(JournalDefaultCacheStrategy.class); |
|
33 |
|
|
34 |
|
|
35 |
protected String beforeYear = ". "; |
|
36 |
protected String afterYear = ""; |
|
37 |
protected String afterAuthor = ", "; |
|
38 |
|
|
39 |
|
|
40 |
final static UUID uuid = UUID.fromString("c84846cd-c862-462e-81b8-53cf4100ed32"); |
|
41 |
|
|
42 |
@Override |
|
43 |
protected UUID getUuid() { |
|
44 |
return uuid; |
|
45 |
} |
|
46 |
|
|
47 |
|
|
48 |
/** |
|
49 |
* Factory method |
|
50 |
* @return |
|
51 |
*/ |
|
52 |
public static JournalDefaultCacheStrategy NewInstance(){ |
|
53 |
return new JournalDefaultCacheStrategy(); |
|
54 |
} |
|
55 |
|
|
56 |
/** |
|
57 |
* Constructor |
|
58 |
*/ |
|
59 |
private JournalDefaultCacheStrategy(){ |
|
60 |
super(); |
|
61 |
} |
|
62 |
|
|
63 |
|
|
64 |
@Override |
|
65 |
public String getTitleCache(Reference journal) { |
|
66 |
return getTitleCache(journal, false); |
|
67 |
} |
|
68 |
|
|
69 |
|
|
70 |
@Override |
|
71 |
public String getFullAbbrevTitleString(Reference journal) { |
|
72 |
return getTitleCache(journal, true); |
|
73 |
} |
|
74 |
|
|
75 |
|
|
76 |
private String getTitleCache(Reference journal, boolean isAbbrev){ |
|
77 |
if (journal == null){ |
|
78 |
return null; |
|
79 |
} |
|
80 |
|
|
81 |
String title = CdmUtils.getPreferredNonEmptyString(journal.getTitle(), journal.getAbbrevTitle(), isAbbrev, true); |
|
82 |
|
|
83 |
String result = title; |
|
84 |
|
|
85 |
// //delete . |
|
86 |
// while (result.endsWith(".")){ |
|
87 |
// result = result.substring(0, result.length()-1); |
|
88 |
// } |
|
89 |
|
|
90 |
// result = addYear(result, journal); |
|
91 |
|
|
92 |
|
|
93 |
TeamOrPersonBase<?> team = journal.getAuthorship(); |
|
94 |
if (team != null){ |
|
95 |
String author = CdmUtils.getPreferredNonEmptyString(team.getTitleCache(), team.getNomenclaturalTitle(), isAbbrev, true); |
|
96 |
if (StringUtils.isNotBlank(author)){ |
|
97 |
result = author + afterAuthor + result; |
|
98 |
} |
|
99 |
} |
|
100 |
return result; |
|
101 |
} |
|
102 |
|
|
103 |
|
|
104 |
@Override |
|
105 |
public String getCitation(Reference referenceBase) { |
|
106 |
StringBuilder stringBuilder = new StringBuilder(); |
|
107 |
|
|
108 |
TeamOrPersonBase<?> team = referenceBase.getAuthorship(); |
|
109 |
if (team != null && ! (team.getTitleCache() == null) && ! team.getTitleCache().trim().equals("")){ |
|
110 |
//String author = CdmUtils.Nz(team == null? "" : team.getTitleCache()); |
|
111 |
stringBuilder.append(team.getTitleCache() + afterAuthor); |
|
112 |
} |
|
113 |
|
|
114 |
String year = CdmUtils.Nz(referenceBase.getYear()); |
|
115 |
if (!"".equals(year)){ |
|
116 |
stringBuilder.append(beforeYear + year); |
|
117 |
} |
|
118 |
|
|
119 |
return stringBuilder.toString(); |
|
120 |
} |
|
121 |
|
|
122 |
|
|
123 |
} |
cdmlib-model/src/main/java/eu/etaxonomy/cdm/strategy/cache/reference/old/NomRefDefaultCacheStrategyBase.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 |
|
|
10 |
package eu.etaxonomy.cdm.strategy.cache.reference.old; |
|
11 |
|
|
12 |
import org.apache.commons.lang.StringUtils; |
|
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.INomenclaturalReference; |
|
18 |
import eu.etaxonomy.cdm.model.reference.Reference; |
|
19 |
import eu.etaxonomy.cdm.strategy.StrategyBase; |
|
20 |
import eu.etaxonomy.cdm.strategy.cache.reference.INomenclaturalReferenceCacheStrategy; |
|
21 |
|
|
22 |
/** |
|
23 |
* @author a.mueller |
|
24 |
* @created 29.06.2008 |
|
25 |
*/ |
|
26 |
public abstract class NomRefDefaultCacheStrategyBase extends StrategyBase implements INomenclaturalReferenceCacheStrategy{ |
|
27 |
private static final long serialVersionUID = -725290113353165022L; |
|
28 |
|
|
29 |
private static final Logger logger = Logger.getLogger(NomRefDefaultCacheStrategyBase.class); |
|
30 |
|
|
31 |
protected String beforeYear = ". "; |
|
32 |
protected String beforeMicroReference = ": "; |
|
33 |
protected String afterYear = ""; |
|
34 |
protected String afterAuthor = ", "; |
|
35 |
|
|
36 |
|
|
37 |
/** |
|
38 |
* Returns the nomenclatural title with micro reference represented as token |
|
39 |
* which can later be replaced by the real data. |
|
40 |
* |
|
41 |
* @see INomenclaturalReference#MICRO_REFERENCE_TOKEN |
|
42 |
* |
|
43 |
* @param ref The reference |
|
44 |
* @return |
|
45 |
*/ |
|
46 |
protected String getTokenizedNomenclaturalTitel(Reference ref) { |
|
47 |
String result = getTitleWithoutYearAndAuthor(ref, true); |
|
48 |
result += INomenclaturalReference.MICRO_REFERENCE_TOKEN; |
|
49 |
result = addYear(result, ref, true); |
|
50 |
return result; |
|
51 |
} |
|
52 |
|
|
53 |
@Override |
|
54 |
public String getTitleCache(Reference nomenclaturalReference) { |
|
55 |
return getTitleCache(nomenclaturalReference, false); |
|
56 |
} |
|
57 |
|
|
58 |
@Override |
|
59 |
public String getFullAbbrevTitleString(Reference nomenclaturalReference) { |
|
60 |
return getTitleCache(nomenclaturalReference, true); |
|
61 |
} |
|
62 |
|
|
63 |
private String getTitleCache(Reference ref, boolean isAbbrev) { |
|
64 |
//TODO needed? |
|
65 |
if (isAbbrev && ref.isProtectedAbbrevTitleCache()){ |
|
66 |
return ref.getAbbrevTitleCache(); |
|
67 |
}else if (!isAbbrev && ref.isProtectedTitleCache()){ |
|
68 |
return ref.getTitleCache(); |
|
69 |
} |
|
70 |
String result = getTitleWithoutYearAndAuthor(ref, isAbbrev); |
|
71 |
result = addYear(result, ref, false); |
|
72 |
TeamOrPersonBase<?> team = ref.getAuthorship(); |
|
73 |
|
|
74 |
if (team != null){ |
|
75 |
String teamTitle = CdmUtils.getPreferredNonEmptyString(team.getTitleCache(), team.getNomenclaturalTitle(), isAbbrev, true); |
|
76 |
if (teamTitle.length() > 0 ){ |
|
77 |
String concat = isNotBlank(result) ? afterAuthor : ""; |
|
78 |
result = teamTitle + concat + result; |
|
79 |
} |
|
80 |
|
|
81 |
} |
|
82 |
return result; |
|
83 |
} |
|
84 |
|
|
85 |
protected abstract String getTitleWithoutYearAndAuthor(Reference reference, boolean isAbbrev); |
|
86 |
|
|
87 |
|
|
88 |
@Override |
|
89 |
public String getCitation(Reference referenceBase) { |
|
90 |
StringBuilder stringBuilder = new StringBuilder(); |
|
91 |
|
|
92 |
String nextConcat = ""; |
|
93 |
|
|
94 |
TeamOrPersonBase<?> team = referenceBase.getAuthorship(); |
|
95 |
if (team != null && isNotBlank(team.getTitleCache())){ |
|
96 |
stringBuilder.append(team.getTitleCache() ); |
|
97 |
nextConcat = afterAuthor; |
|
98 |
} |
|
99 |
|
|
100 |
String year = referenceBase.getYear(); |
|
101 |
if (StringUtils.isNotBlank(year)){ |
|
102 |
stringBuilder.append(nextConcat + year); |
|
103 |
} |
|
104 |
|
|
105 |
return stringBuilder.toString(); |
|
106 |
} |
|
107 |
|
|
108 |
|
|
109 |
@Override |
|
110 |
public String getBeforeMicroReference(){ |
|
111 |
return beforeMicroReference; |
|
112 |
} |
|
113 |
|
|
114 |
protected String addYear(String string, Reference nomRef, boolean useFullDatePublished){ |
|
115 |
String result; |
|
116 |
if (string == null){ |
|
117 |
return null; |
|
118 |
} |
|
119 |
String year = useFullDatePublished ? nomRef.getDatePublishedString() : nomRef.getYear(); |
|
120 |
if (isBlank(year)){ |
|
121 |
result = string + afterYear; |
|
122 |
}else{ |
|
123 |
String concat = isBlank(string) ? "" : string.endsWith(".") ? " " : beforeYear; |
|
124 |
result = string + concat + year + afterYear; |
|
125 |
} |
|
126 |
return result; |
|
127 |
} |
|
128 |
|
|
129 |
@Override |
|
130 |
public String getNomenclaturalCache(Reference reference) { |
|
131 |
return this.getNomenclaturalCitation(reference, null); |
|
132 |
} |
|
133 |
|
|
134 |
@Override |
|
135 |
public String getNomenclaturalCitation(Reference nomenclaturalReference, String microReference) { |
|
136 |
if (nomenclaturalReference.isProtectedAbbrevTitleCache()){ |
|
137 |
String cache = nomenclaturalReference.getAbbrevTitleCache(); |
|
138 |
return handleDetailAndYearForPreliminary(nomenclaturalReference, cache, microReference); |
|
139 |
|
|
140 |
} |
|
141 |
String result = getTokenizedNomenclaturalTitel(nomenclaturalReference); |
|
142 |
//if no data is available and only titleCache is protected take the protected title |
|
143 |
//this is to avoid empty cache if someone forgets to set also the abbrevTitleCache |
|
144 |
//we need to think about handling protected not separate for abbrevTitleCache and titleCache |
|
145 |
if (result.equals(INomenclaturalReference.MICRO_REFERENCE_TOKEN) |
|
146 |
&& nomenclaturalReference.isProtectedTitleCache() ){ |
|
147 |
String cache = nomenclaturalReference.getTitleCache(); |
|
148 |
return handleDetailAndYearForPreliminary(nomenclaturalReference, cache, microReference); |
|
149 |
} |
|
150 |
|
|
151 |
microReference = Nz(microReference); |
|
152 |
if (StringUtils.isNotBlank(microReference)){ |
|
153 |
microReference = getBeforeMicroReference() + microReference; |
|
154 |
if (microReference.endsWith(".") && result.contains(INomenclaturalReference.MICRO_REFERENCE_TOKEN + ".") ){ |
|
155 |
microReference = microReference.substring(0, microReference.length() - 1); |
|
156 |
} |
|
157 |
} |
|
158 |
result = replaceMicroRefToken(microReference, result); |
|
159 |
if (result.startsWith(". ")){ //only year available, remove '. ' |
|
160 |
result = result.substring(2); |
|
161 |
} |
|
162 |
return result; |
|
163 |
} |
|
164 |
|
|
165 |
/** |
|
166 |
* @param microReference |
|
167 |
* @param result |
|
168 |
* @return |
|
169 |
*/ |
|
170 |
private String replaceMicroRefToken(String microReference, String string) { |
|
171 |
int index = string.indexOf(INomenclaturalReference.MICRO_REFERENCE_TOKEN); |
|
172 |
|
|
173 |
if (index > -1){ |
|
174 |
String before = string.substring(0, index); |
|
175 |
String after = string.substring(index + INomenclaturalReference.MICRO_REFERENCE_TOKEN.length() ); |
|
176 |
String localMicroReference = microReference.trim(); //needed ? |
|
177 |
if (after.length() > 0){ |
|
178 |
if ( ("".equals(localMicroReference) && before.endsWith(after.substring(0,1)) || localMicroReference.endsWith(after.substring(0,1)))){ |
|
179 |
after = after.substring(1); |
|
180 |
} |
|
181 |
} |
|
182 |
String result = before + localMicroReference + after; |
|
183 |
return result; |
|
184 |
}else{ |
|
185 |
return string; |
|
186 |
} |
|
187 |
} |
|
188 |
|
|
189 |
/** |
|
190 |
* @param nomenclaturalReference |
|
191 |
* @param microRef |
|
192 |
* @return |
|
193 |
*/ |
|
194 |
private String handleDetailAndYearForPreliminary(Reference nomenclaturalReference, String cache, String microReference) { |
|
195 |
String microRef = isNotBlank(microReference) ? getBeforeMicroReference() + microReference : ""; |
|
196 |
if (cache == null){ |
|
197 |
logger.warn("Cache is null. This should never be the case."); |
|
198 |
cache = ""; |
|
199 |
} |
|
200 |
String result = cache + (cache.contains(microRef) ? "" : microRef); |
|
201 |
|
|
202 |
String date = nomenclaturalReference.getDatePublishedString(); |
|
203 |
if (isNotBlank(date) && ! result.contains(date)){ |
|
204 |
result = result + beforeYear + date; |
|
205 |
} |
|
206 |
return result; |
|
207 |
} |
|
208 |
|
|
209 |
} |
cdmlib-model/src/main/java/eu/etaxonomy/cdm/strategy/cache/reference/old/ReferenceDefaultCacheStrategy.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.old; |
|
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.Reference; |
|
18 |
import eu.etaxonomy.cdm.strategy.StrategyBase; |
|
19 |
import eu.etaxonomy.cdm.strategy.cache.reference.IReferenceCacheStrategy; |
|
20 |
/** |
|
21 |
* @author a.mueller |
|
22 |
* @created 08-Aug-2008 22:06:45 |
|
23 |
*/ |
|
24 |
public class ReferenceDefaultCacheStrategy extends StrategyBase implements IReferenceCacheStrategy { |
|
25 |
private static final long serialVersionUID = 4350124746874497766L; |
|
26 |
@SuppressWarnings("unused") |
|
27 |
private static final Logger logger = Logger.getLogger(ReferenceDefaultCacheStrategy.class); |
|
28 |
|
|
29 |
final static UUID uuid = UUID.fromString("763fe4a0-c79f-4f14-9693-631680225ec3"); |
|
30 |
|
|
31 |
|
|
32 |
protected String beforeYear = ". "; |
|
33 |
protected String afterYear = ""; |
|
34 |
protected String afterAuthor = ", "; |
|
35 |
|
|
36 |
private String blank = " "; |
|
37 |
|
|
38 |
|
|
39 |
// ****************** FACTORY *******************************/ |
|
40 |
|
|
41 |
public static ReferenceDefaultCacheStrategy NewInstance(){ |
|
42 |
return new ReferenceDefaultCacheStrategy(); |
|
43 |
} |
|
44 |
|
|
45 |
// ***************** CONSTRUCTOR ********************************/ |
|
46 |
|
|
47 |
/** |
|
48 |
* Constructor |
|
49 |
*/ |
|
50 |
private ReferenceDefaultCacheStrategy(){ |
|
51 |
super(); |
|
52 |
} |
|
53 |
|
|
54 |
|
|
55 |
|
|
56 |
|
|
57 |
|
|
58 |
@Override |
|
59 |
public String getFullAbbrevTitleString(Reference reference) { |
|
60 |
return getTitleCache(reference, true); |
|
61 |
} |
|
62 |
|
|
63 |
@Override |
|
64 |
public String getTitleCache(Reference reference) { |
|
65 |
return getTitleCache(reference, false); |
|
66 |
} |
|
67 |
|
|
68 |
private String getTitleCache(Reference ref, boolean isAbbrev) { |
|
69 |
String result = ""; |
|
70 |
if (ref == null){ |
|
71 |
return null; |
|
72 |
} |
|
73 |
String titel = CdmUtils.getPreferredNonEmptyString(ref.getTitle(), ref.getAbbrevTitle(), isAbbrev, true); |
|
74 |
//titelAbbrev |
|
75 |
if (isNotBlank(titel)){ |
|
76 |
result = titel + blank; |
|
77 |
} |
|
78 |
//delete . |
|
79 |
while (result.endsWith(".")){ |
|
80 |
result = result.substring(0, result.length()-1); |
|
81 |
} |
|
82 |
|
|
83 |
result = addYear(result, ref); |
|
84 |
TeamOrPersonBase<?> team = ref.getAuthorship(); |
|
85 |
if (team != null){ |
|
86 |
String author = CdmUtils.getPreferredNonEmptyString(team.getTitleCache(), team.getNomenclaturalTitle(), isAbbrev, true); |
|
87 |
if (isNotBlank(author)){ |
|
88 |
result = author + afterAuthor + result; |
|
89 |
} |
|
90 |
} |
|
91 |
return result; |
|
92 |
} |
|
93 |
|
|
94 |
protected String addYear(String string, Reference ref){ |
|
95 |
String result; |
|
96 |
if (string == null){ |
|
97 |
return null; |
|
98 |
} |
|
99 |
String year = CdmUtils.Nz(ref.getYear()); |
|
100 |
if ("".equals(year)){ |
|
101 |
result = string + afterYear; |
|
102 |
}else{ |
|
103 |
result = string + beforeYear + year + afterYear; |
|
104 |
} |
|
105 |
return result; |
|
106 |
} |
|
107 |
|
|
108 |
@Override |
|
109 |
public String getCitation(Reference referenceBase) { |
|
110 |
StringBuilder stringBuilder = new StringBuilder(); |
|
111 |
|
|
112 |
TeamOrPersonBase<?> team = referenceBase.getAuthorship(); |
|
113 |
if (team != null && ! (team.getTitleCache() == null) && ! team.getTitleCache().trim().equals("")){ |
|
114 |
//String author = CdmUtils.Nz(team == null? "" : team.getTitleCache()); |
|
115 |
stringBuilder.append(team.getTitleCache() + afterAuthor); |
|
116 |
} |
|
117 |
|
|
118 |
String year = CdmUtils.Nz(referenceBase.getYear()); |
|
119 |
if (!"".equals(year)){ |
|
120 |
stringBuilder.append(beforeYear + year); |
|
121 |
} |
|
122 |
|
|
123 |
return stringBuilder.toString(); |
|
124 |
} |
|
125 |
|
|
126 |
|
|
127 |
|
|
128 |
@Override |
|
129 |
protected UUID getUuid() { |
|
130 |
return UUID.fromString("919dbf70-33e7-11de-b418-0800200c9a66"); |
|
131 |
} |
|
132 |
|
|
133 |
|
|
134 |
/** |
|
135 |
* |
|
136 |
* @param referenceTitleCache |
|
137 |
* @param authorTitleCache |
|
138 |
* @return |
|
139 |
*/ |
|
140 |
public static String putAuthorToEndOfString(String referenceTitleCache, String authorTitleCache) { |
|
141 |
if(authorTitleCache != null){ |
|
142 |
referenceTitleCache = referenceTitleCache.replace(authorTitleCache + ", ", ""); |
|
143 |
referenceTitleCache += " - " + authorTitleCache; |
|
144 |
} |
|
145 |
return referenceTitleCache; |
|
146 |
} |
|
147 |
|
|
148 |
} |
cdmlib-model/src/main/java/eu/etaxonomy/cdm/strategy/cache/reference/old/SectionDefaultCacheStrategy.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.old; |
|
10 |
|
|
11 |
import java.util.UUID; |
|
12 |
|
|
13 |
import org.apache.log4j.Logger; |
|
14 |
|
|
15 |
import eu.etaxonomy.cdm.model.common.CdmBase; |
|
16 |
import eu.etaxonomy.cdm.model.reference.INomenclaturalReference; |
|
17 |
import eu.etaxonomy.cdm.model.reference.Reference; |
|
18 |
import eu.etaxonomy.cdm.strategy.cache.reference.IReferenceCacheStrategy; |
|
19 |
|
|
20 |
public class SectionDefaultCacheStrategy extends InRefDefaultCacheStrategyBase { |
|
21 |
private static final long serialVersionUID = -4534389083526558368L; |
|
22 |
private static final Logger logger = Logger.getLogger(SectionDefaultCacheStrategy.class); |
|
23 |
|
|
24 |
final static UUID uuid = UUID.fromString("a7150cd3-107b-4169-ac84-71ffe3219152"); |
|
25 |
|
|
26 |
private static final String inRefTypeStr = "in reference"; |
|
27 |
|
|
28 |
private static final boolean inRefIsObligatory = true; |
|
29 |
|
|
30 |
@Override |
|
31 |
protected UUID getUuid() { |
|
32 |
return uuid; |
|
33 |
} |
|
34 |
|
|
35 |
@Override |
|
36 |
protected String getInRefType() { |
|
37 |
return inRefTypeStr; |
|
38 |
} |
|
39 |
|
|
40 |
/** |
|
41 |
* Factory method |
|
42 |
* @return |
|
43 |
*/ |
|
44 |
public static SectionDefaultCacheStrategy NewInstance(){ |
|
45 |
return new SectionDefaultCacheStrategy(); |
|
46 |
} |
|
47 |
|
Also available in: Unified diff
Remove all old reference cache strategies completely #5833