Revision d4657a24
Added by Andreas Müller almost 10 years ago
.gitattributes | ||
---|---|---|
995 | 995 |
cdmlib-model/src/main/java/eu/etaxonomy/cdm/strategy/cache/reference/ReferenceDefaultCacheStrategy.java -text |
996 | 996 |
cdmlib-model/src/main/java/eu/etaxonomy/cdm/strategy/cache/reference/SectionDefaultCacheStrategy.java -text |
997 | 997 |
cdmlib-model/src/main/java/eu/etaxonomy/cdm/strategy/cache/reference/ThesisDefaultCacheStrategy.java -text |
998 |
cdmlib-model/src/main/java/eu/etaxonomy/cdm/strategy/cache/reference/WebPageDefaultCacheStrategy.java -text |
|
998 | 999 |
cdmlib-model/src/main/java/eu/etaxonomy/cdm/strategy/cache/taxon/TaxonBaseDefaultCacheStrategy.java -text |
999 | 1000 |
cdmlib-model/src/main/java/eu/etaxonomy/cdm/strategy/exceptions/StringNotParsableException.java -text |
1000 | 1001 |
cdmlib-model/src/main/java/eu/etaxonomy/cdm/strategy/exceptions/UnknownCdmTypeException.java -text |
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/IArticle.java | ||
---|---|---|
29 | 29 |
/** |
30 | 30 |
* Returns the series information for this article |
31 | 31 |
*/ |
32 |
public String getSeries(); |
|
32 |
public String getSeriesPart();
|
|
33 | 33 |
|
34 | 34 |
/** |
35 | 35 |
* Sets the series information for this article |
36 | 36 |
* @param series |
37 | 37 |
*/ |
38 |
public void setSeries(String series); |
|
38 |
public void setSeriesPart(String series);
|
|
39 | 39 |
|
40 | 40 |
|
41 | 41 |
|
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/IGeneric.java | ||
---|---|---|
43 | 43 |
/** |
44 | 44 |
* Returns the series of this generic reference |
45 | 45 |
*/ |
46 |
public String getSeries(); |
|
46 |
public String getSeriesPart();
|
|
47 | 47 |
|
48 | 48 |
/** |
49 | 49 |
* Sets the series for this generic reference |
50 | 50 |
* @param series |
51 | 51 |
*/ |
52 |
public void setSeries(String series); |
|
52 |
public void setSeriesPart(String series);
|
|
53 | 53 |
|
54 | 54 |
/** |
55 | 55 |
* Returns the pages (page span this reference covers in its in-reference) |
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/Reference.java | ||
---|---|---|
9 | 9 |
|
10 | 10 |
package eu.etaxonomy.cdm.model.reference; |
11 | 11 |
|
12 |
import java.beans.PropertyChangeEvent; |
|
13 |
import java.beans.PropertyChangeListener; |
|
12 | 14 |
import java.net.URI; |
13 | 15 |
import java.util.List; |
14 | 16 |
|
... | ... | |
176 | 178 |
//TODO Val #3379 |
177 | 179 |
// @NullOrNotEmpty |
178 | 180 |
@Length(max = 255) |
181 |
@Deprecated //series and seriesPart are duplicates #4293 |
|
179 | 182 |
protected String series; |
180 | 183 |
|
181 | 184 |
@XmlElement(name = "Volume") |
... | ... | |
365 | 368 |
protected Reference(ReferenceType type) { |
366 | 369 |
this.type = type; |
367 | 370 |
} |
371 |
|
|
372 |
@Override |
|
373 |
protected void initListener(){ |
|
374 |
PropertyChangeListener listener = new PropertyChangeListener() { |
|
375 |
@Override |
|
376 |
public void propertyChange(PropertyChangeEvent ev) { |
|
377 |
if (!ev.getPropertyName().equals("titleCache") && !ev.getPropertyName().equals("abbrevTitleCache") && !ev.getPropertyName().equals("cacheStrategy")){ |
|
378 |
if (! isProtectedTitleCache()){ |
|
379 |
titleCache = null; |
|
380 |
} |
|
381 |
if (! isProtectedAbbrevTitleCache()){ |
|
382 |
abbrevTitleCache = null; |
|
383 |
} |
|
384 |
} |
|
385 |
} |
|
386 |
}; |
|
387 |
addPropertyChangeListener(listener); |
|
388 |
} |
|
368 | 389 |
|
369 | 390 |
|
370 | 391 |
//*************************** GETTER / SETTER ******************************************/ |
... | ... | |
427 | 448 |
this.editor = editor; |
428 | 449 |
} |
429 | 450 |
|
430 |
@Override |
|
431 |
public String getSeries() { |
|
432 |
return series; |
|
433 |
} |
|
434 |
|
|
435 |
@Override |
|
436 |
public void setSeries(String series) { |
|
437 |
this.series = series; |
|
438 |
} |
|
451 |
// @Override
|
|
452 |
// public String getSeries() {
|
|
453 |
// return series;
|
|
454 |
// }
|
|
455 |
// |
|
456 |
// @Override
|
|
457 |
// public void setSeries(String series) {
|
|
458 |
// this.series = series;
|
|
459 |
// }
|
|
439 | 460 |
|
440 | 461 |
@Override |
441 | 462 |
public String getVolume() { |
... | ... | |
872 | 893 |
} |
873 | 894 |
} |
874 | 895 |
|
875 |
/* (non-Javadoc) |
|
876 |
* @see eu.etaxonomy.cdm.model.common.IdentifiableEntity#generateTitle() |
|
877 |
*/ |
|
896 |
|
|
878 | 897 |
@Override |
879 | 898 |
public String generateTitle() { |
880 | 899 |
rectifyCacheStrategy(); |
... | ... | |
922 | 941 |
} |
923 | 942 |
|
924 | 943 |
|
925 |
|
|
926 |
/* (non-Javadoc) |
|
927 |
* @see eu.etaxonomy.cdm.model.common.IParsable#getHasProblem() |
|
928 |
*/ |
|
929 | 944 |
@Override |
930 | 945 |
public int getParsingProblem(){ |
931 | 946 |
return this.parsingProblem; |
932 | 947 |
} |
933 | 948 |
|
934 |
/* (non-Javadoc) |
|
935 |
* @see eu.etaxonomy.cdm.model.common.IParsable#setHasProblem(boolean) |
|
936 |
*/ |
|
937 | 949 |
@Override |
938 | 950 |
public void setParsingProblem(int parsingProblem){ |
939 | 951 |
this.parsingProblem = parsingProblem; |
940 | 952 |
} |
941 | 953 |
|
942 |
/* (non-Javadoc) |
|
943 |
* @see eu.etaxonomy.cdm.model.common.IParsable#hasProblem() |
|
944 |
*/ |
|
945 | 954 |
@Override |
946 | 955 |
public boolean hasProblem(){ |
947 | 956 |
return parsingProblem != 0; |
948 | 957 |
} |
949 | 958 |
|
950 |
/* (non-Javadoc) |
|
951 |
* @see eu.etaxonomy.cdm.model.common.IParsable#hasProblem(eu.etaxonomy.cdm.strategy.parser.ParserProblem) |
|
952 |
*/ |
|
953 | 959 |
@Override |
954 | 960 |
public boolean hasProblem(ParserProblem problem) { |
955 | 961 |
return getParsingProblems().contains(problem); |
956 | 962 |
} |
957 | 963 |
|
958 |
|
|
959 |
/* (non-Javadoc) |
|
960 |
* @see eu.etaxonomy.cdm.model.common.IParsable#problemStarts() |
|
961 |
*/ |
|
962 | 964 |
@Override |
963 | 965 |
public int getProblemStarts(){ |
964 | 966 |
return this.problemStarts; |
965 | 967 |
} |
966 | 968 |
|
967 |
/* (non-Javadoc) |
|
968 |
* @see eu.etaxonomy.cdm.model.common.IParsable#setProblemStarts(int) |
|
969 |
*/ |
|
970 | 969 |
@Override |
971 | 970 |
public void setProblemStarts(int start) { |
972 | 971 |
this.problemStarts = start; |
973 | 972 |
} |
974 | 973 |
|
975 |
/* (non-Javadoc) |
|
976 |
* @see eu.etaxonomy.cdm.model.common.IParsable#problemEnds() |
|
977 |
*/ |
|
978 | 974 |
@Override |
979 | 975 |
public int getProblemEnds(){ |
980 | 976 |
return this.problemEnds; |
981 | 977 |
} |
982 | 978 |
|
983 |
/* (non-Javadoc) |
|
984 |
* @see eu.etaxonomy.cdm.model.common.IParsable#setProblemEnds(int) |
|
985 |
*/ |
|
986 | 979 |
@Override |
987 | 980 |
public void setProblemEnds(int end) { |
988 | 981 |
this.problemEnds = end; |
989 | 982 |
} |
990 | 983 |
|
991 |
/* (non-Javadoc) |
|
992 |
* @see eu.etaxonomy.cdm.model.common.IParsable#addProblem(eu.etaxonomy.cdm.strategy.parser.NameParserWarning) |
|
993 |
*/ |
|
994 | 984 |
@Override |
995 | 985 |
public void addParsingProblem(ParserProblem warning){ |
996 | 986 |
parsingProblem = ParserProblem.addProblem(parsingProblem, warning); |
997 | 987 |
} |
998 | 988 |
|
999 |
/* (non-Javadoc) |
|
1000 |
* @see eu.etaxonomy.cdm.model.common.IParsable#removeParsingProblem(eu.etaxonomy.cdm.strategy.parser.ParserProblem) |
|
1001 |
*/ |
|
1002 | 989 |
@Override |
1003 | 990 |
public void removeParsingProblem(ParserProblem problem) { |
1004 | 991 |
parsingProblem = ParserProblem.removeProblem(parsingProblem, problem); |
1005 | 992 |
} |
1006 | 993 |
|
1007 |
/* (non-Javadoc) |
|
1008 |
* @see eu.etaxonomy.cdm.model.common.IParsable#getParsingProblems() |
|
1009 |
*/ |
|
1010 | 994 |
@Override |
1011 | 995 |
@Transient |
1012 | 996 |
public List<ParserProblem> getParsingProblems() { |
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/ReferenceFactory.java | ||
---|---|---|
160 | 160 |
* @param referenceType |
161 | 161 |
* @return |
162 | 162 |
*/ |
163 |
public static Reference newReference(ReferenceType referenceType) { |
|
163 |
public static Reference<?> newReference(ReferenceType referenceType) {
|
|
164 | 164 |
if (referenceType == null){ |
165 | 165 |
return null; |
166 | 166 |
} |
... | ... | |
197 | 197 |
return newBook(); |
198 | 198 |
case Generic: |
199 | 199 |
return newGeneric(); |
200 |
case Section: |
|
201 |
return newSection(); |
|
200 | 202 |
default: |
201 | 203 |
logger.warn("Unknown reference type " + referenceType.getMessage() + ". Created generic reference instead."); |
202 | 204 |
return newGeneric(); |
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/ReferenceType.java | ||
---|---|---|
32 | 32 |
import eu.etaxonomy.cdm.strategy.cache.reference.ReferenceDefaultCacheStrategy; |
33 | 33 |
import eu.etaxonomy.cdm.strategy.cache.reference.SectionDefaultCacheStrategy; |
34 | 34 |
import eu.etaxonomy.cdm.strategy.cache.reference.ThesisDefaultCacheStrategy; |
35 |
import eu.etaxonomy.cdm.strategy.cache.reference.WebPageDefaultCacheStrategy; |
|
35 | 36 |
|
36 | 37 |
|
37 | 38 |
/** |
... | ... | |
152 | 153 |
return ThesisDefaultCacheStrategy.NewInstance(); |
153 | 154 |
case Section: |
154 | 155 |
return SectionDefaultCacheStrategy.NewInstance(); |
156 |
case WebPage: |
|
157 |
return WebPageDefaultCacheStrategy.NewInstance(); |
|
155 | 158 |
default: |
156 | 159 |
return ReferenceDefaultCacheStrategy.NewInstance(); |
157 | 160 |
} |
cdmlib-model/src/main/java/eu/etaxonomy/cdm/strategy/cache/reference/ArticleDefaultCacheStrategy.java | ||
---|---|---|
10 | 10 |
|
11 | 11 |
import java.util.UUID; |
12 | 12 |
|
13 |
import org.apache.commons.lang.StringUtils; |
|
14 | 13 |
import org.apache.log4j.Logger; |
15 | 14 |
|
16 | 15 |
import eu.etaxonomy.cdm.common.CdmUtils; |
... | ... | |
62 | 61 |
result = addYear(result, article, false); |
63 | 62 |
TeamOrPersonBase<?> team = article.getAuthorTeam(); |
64 | 63 |
result = CdmUtils.concat(" ", article.getTitle(), result); |
65 |
if (team != null && StringUtils.isNotBlank(team.getTitleCache())){
|
|
66 |
String authorSeparator = StringUtils.isNotBlank(article.getTitle())? afterAuthor : " ";
|
|
64 |
if (team != null && isNotBlank(team.getTitleCache())){ |
|
65 |
String authorSeparator = isNotBlank(article.getTitle())? afterAuthor : " "; |
|
67 | 66 |
result = team.getTitleCache() + authorSeparator + result; |
68 | 67 |
} |
69 | 68 |
return result; |
... | ... | |
79 | 78 |
TeamOrPersonBase<?> team = article.getAuthorTeam(); |
80 | 79 |
String articleTitle = CdmUtils.getPreferredNonEmptyString(article.getAbbrevTitle(), article.getTitle(), false, true); |
81 | 80 |
result = CdmUtils.concat(" ", articleTitle, result); //Article should maybe left out for nomenclatural references (?) |
82 |
if (team != null && StringUtils.isNotBlank(team.getNomenclaturalTitle())){
|
|
83 |
String authorSeparator = StringUtils.isNotBlank(articleTitle) ? afterAuthor : " ";
|
|
81 |
if (team != null && isNotBlank(team.getNomenclaturalTitle())){ |
|
82 |
String authorSeparator = isNotBlank(articleTitle) ? afterAuthor : " "; |
|
84 | 83 |
result = team.getNomenclaturalTitle() + authorSeparator + result; |
85 | 84 |
} |
86 | 85 |
return result; |
... | ... | |
101 | 100 |
journalTitel = UNDEFINED_JOURNAL; |
102 | 101 |
} |
103 | 102 |
|
104 |
String series = Nz(article.getSeries()).trim(); |
|
103 |
String series = Nz(article.getSeriesPart()).trim();
|
|
105 | 104 |
String volume = Nz(article.getVolume()).trim(); |
106 | 105 |
|
107 | 106 |
boolean needsComma = false; |
... | ... | |
110 | 109 |
|
111 | 110 |
//inJournal |
112 | 111 |
nomRefCache = prefixReferenceJounal + blank; |
113 |
|
|
112 |
|
|
114 | 113 |
//titelAbbrev |
115 | 114 |
if (isNotBlank(journalTitel)){ |
116 |
nomRefCache = nomRefCache + journalTitel + blank; |
|
115 |
nomRefCache = nomRefCache + journalTitel; |
|
116 |
needsComma = makeNeedsComma(needsComma, nomRefCache, volume, series); |
|
117 |
if (! needsComma){ |
|
118 |
nomRefCache = nomRefCache + blank; |
|
119 |
} |
|
117 | 120 |
} |
118 | 121 |
|
122 |
//series and vol. |
|
119 | 123 |
nomRefCache = getSeriesAndVolPart(series, volume, needsComma, nomRefCache); |
120 |
|
|
124 |
|
|
121 | 125 |
//delete "." |
122 | 126 |
while (nomRefCache.endsWith(".")){ |
123 | 127 |
nomRefCache = nomRefCache.substring(0, nomRefCache.length()-1); |
... | ... | |
126 | 130 |
return nomRefCache.trim(); |
127 | 131 |
} |
128 | 132 |
|
133 |
private boolean makeNeedsComma(boolean needsComma, String nomRefCache, String volume, String series) { |
|
134 |
if (needsComma){ |
|
135 |
return true; |
|
136 |
}else{ |
|
137 |
nomRefCache = nomRefCache.toLowerCase(); |
|
138 |
int serIndex = nomRefCache.indexOf(" ser. "); |
|
139 |
int sectIndex = nomRefCache.indexOf(" sect. "); |
|
140 |
int abtIndex = nomRefCache.indexOf(" abt. "); |
|
141 |
int index = Math.max(Math.max(serIndex, sectIndex), abtIndex); |
|
142 |
int commaIndex = nomRefCache.indexOf(",", index); |
|
143 |
if (index > -1 && commaIndex == -1 && isNotBlank(volume)){ |
|
144 |
return true; |
|
145 |
}else if (isNotBlank(series)){ |
|
146 |
return true; |
|
147 |
}else{ |
|
148 |
return false; |
|
149 |
} |
|
150 |
} |
|
151 |
} |
|
152 |
|
|
153 |
|
|
129 | 154 |
protected String getSeriesAndVolPart(String series, String volume, |
130 | 155 |
boolean needsComma, String nomRefCache) { |
131 | 156 |
//inSeries |
... | ... | |
135 | 160 |
if (CdmUtils.isNumeric(series)){ |
136 | 161 |
seriesPart = prefixSeries + blank + seriesPart; |
137 | 162 |
} |
138 |
if (needsComma){ |
|
139 |
seriesPart = comma + seriesPart; |
|
140 |
} |
|
163 |
// if (needsComma){
|
|
164 |
seriesPart = comma + blank + seriesPart;
|
|
165 |
// }
|
|
141 | 166 |
needsComma = true; |
142 | 167 |
} |
143 | 168 |
nomRefCache += seriesPart; |
cdmlib-model/src/main/java/eu/etaxonomy/cdm/strategy/cache/reference/BookDefaultCacheStrategy.java | ||
---|---|---|
23 | 23 |
private static final Logger logger = Logger.getLogger(BookDefaultCacheStrategy.class); |
24 | 24 |
|
25 | 25 |
private String prefixEdition = "ed."; |
26 |
private String prefixSeries = "ser."; |
|
26 |
private String prefixSeries = ", ser.";
|
|
27 | 27 |
private String prefixVolume = "vol."; |
28 | 28 |
private String blank = " "; |
29 | 29 |
private String comma = ","; |
... | ... | |
60 | 60 |
} |
61 | 61 |
//TODO |
62 | 62 |
String title = CdmUtils.getPreferredNonEmptyString(ref.getTitle(), ref.getAbbrevTitle(), isAbbrev, true); |
63 |
String edition = CdmUtils.Nz(ref.getEdition()).trim();
|
|
64 |
//TODO
|
|
65 |
String series = ""; //nomenclaturalReference.getSeries();
|
|
63 |
String edition = Nz(ref.getEdition()).trim(); |
|
64 |
String series = ""; //TODO ref.getSeries(); //SeriesPart is handled later
|
|
65 |
String refSeriesPart = Nz(ref.getSeriesPart());
|
|
66 | 66 |
String volume = CdmUtils.Nz(ref.getVolume()).trim(); |
67 | 67 |
String refYear = ""; //TODO nomenclaturalReference.getYear(); |
68 | 68 |
|
69 | 69 |
|
70 | 70 |
String nomRefCache = ""; |
71 |
boolean lastCharIsDouble; |
|
72 | 71 |
Integer len; |
73 |
String lastChar; |
|
72 |
String lastChar = "";
|
|
74 | 73 |
String character ="."; |
75 | 74 |
len = title.length(); |
76 | 75 |
if (len > 0){ |
77 | 76 |
lastChar = title.substring(len-1, len); |
78 | 77 |
} |
79 | 78 |
//lastCharIsDouble = f_core_CompareStrings(RIGHT(@TitelAbbrev,1),character); |
80 |
lastCharIsDouble = title.equals(character); |
|
79 |
boolean lastCharIsDouble = title.equals(character);
|
|
81 | 80 |
|
82 |
if(lastCharIsDouble && edition.length() == 0 && series.length() == 0 && volume.length() == 0 && refYear.length() > 0 ){
|
|
81 |
if(lastCharIsDouble && edition.length() == 0 && refSeriesPart.length() == 0 && volume.length() == 0 && refYear.length() > 0 ){
|
|
83 | 82 |
title = title.substring(1, len-1); // SUBSTRING(@TitelAbbrev,1,@LEN-1) |
84 | 83 |
} |
85 | 84 |
|
... | ... | |
87 | 86 |
boolean needsComma = false; |
88 | 87 |
//titelAbbrev |
89 | 88 |
if (!"".equals(title) ){ |
90 |
String postfix = StringUtils.isNotBlank(edition) ? "" : blank;
|
|
89 |
String postfix = isNotBlank(edition + refSeriesPart) ? "" : blank;
|
|
91 | 90 |
nomRefCache = title + postfix; |
92 | 91 |
} |
93 | 92 |
//edition |
... | ... | |
103 | 102 |
|
104 | 103 |
//inSeries |
105 | 104 |
String seriesPart = ""; |
106 |
if (StringUtils.isNotBlank(series)){
|
|
107 |
seriesPart = series;
|
|
108 |
if (isNumeric(series)){
|
|
105 |
if (StringUtils.isNotBlank(refSeriesPart)){
|
|
106 |
seriesPart = refSeriesPart;
|
|
107 |
if (isNumeric(refSeriesPart)){
|
|
109 | 108 |
seriesPart = prefixSeries + blank + seriesPart; |
110 | 109 |
} |
111 | 110 |
if (needsComma){ |
... | ... | |
122 | 121 |
volumePart = volume; |
123 | 122 |
if (needsComma){ |
124 | 123 |
volumePart = comma + blank + volumePart; |
124 |
}else{ |
|
125 |
volumePart = "" + volumePart; |
|
125 | 126 |
} |
126 | 127 |
//needsComma = false; |
127 | 128 |
} |
cdmlib-model/src/main/java/eu/etaxonomy/cdm/strategy/cache/reference/GenericDefaultCacheStrategy.java | ||
---|---|---|
32 | 32 |
|
33 | 33 |
private String prefixEdition = "ed."; |
34 | 34 |
private String prefixSeries = "ser."; |
35 |
private String prefixVolume = "vol."; |
|
35 |
// private String prefixVolume = "vol.";
|
|
36 | 36 |
private String blank = " "; |
37 | 37 |
private String comma = ","; |
38 |
private String dot ="."; |
|
38 |
// private String dot =".";
|
|
39 | 39 |
|
40 | 40 |
final static UUID uuid = UUID.fromString("95cceb30-6b16-4dc3-8243-c15e746565bc"); |
41 | 41 |
|
... | ... | |
70 | 70 |
String titel = CdmUtils.getPreferredNonEmptyString(genericReference.getTitle(), genericReference.getAbbrevTitle(), isAbbrev, true); |
71 | 71 |
String edition = CdmUtils.Nz(genericReference.getEdition()); |
72 | 72 |
//TODO |
73 |
String series = CdmUtils.Nz(genericReference.getSeries()).trim(); //nomenclaturalReference.getSeries(); |
|
73 |
String series = CdmUtils.Nz(genericReference.getSeriesPart()).trim(); //nomenclaturalReference.getSeries();
|
|
74 | 74 |
String volume = CdmUtils.Nz(genericReference.getVolume()).trim(); |
75 | 75 |
|
76 | 76 |
String nomRefCache = ""; |
cdmlib-model/src/main/java/eu/etaxonomy/cdm/strategy/cache/reference/INomenclaturalReferenceCacheStrategy.java | ||
---|---|---|
13 | 13 |
import eu.etaxonomy.cdm.model.reference.Reference; |
14 | 14 |
|
15 | 15 |
/** |
16 |
* A reference cache rendering strategy for all subclasses implementing INomenclaturalReference.
|
|
16 |
* A reference formatting strategy for all subclasses implementing INomenclaturalReference.
|
|
17 | 17 |
* @author a.mueller |
18 | 18 |
* |
19 | 19 |
* @param <T> The concrete Reference class this strategy applies for |
20 | 20 |
*/ |
21 | 21 |
public interface INomenclaturalReferenceCacheStrategy extends IReferenceBaseCacheStrategy { |
22 | 22 |
|
23 |
|
|
24 |
/** |
|
25 |
* returns the composed scientific taxon name string without authors nor year |
|
26 |
* @param object |
|
27 |
* @return |
|
28 |
*/ |
|
29 |
public String getTitleCache(Reference nomenclaturalReference); |
|
30 |
|
|
31 |
/** |
|
32 |
* returns the composed author string |
|
33 |
* @param object |
|
34 |
* @return |
|
35 |
*/ |
|
36 |
public String getTokenizedNomenclaturalTitel(Reference referenceBase); |
|
23 |
// |
|
24 |
// /** |
|
25 |
// * Returns the composed author string |
|
26 |
// * @param object |
|
27 |
// * @return |
|
28 |
// */ |
|
29 |
// public String getTokenizedNomenclaturalTitel(Reference referenceBase); |
|
37 | 30 |
|
38 | 31 |
/** |
39 | 32 |
* Returns the character sequence before the micro reference (e.g. ": ") |
cdmlib-model/src/main/java/eu/etaxonomy/cdm/strategy/cache/reference/InRefDefaultCacheStrategyBase.java | ||
---|---|---|
79 | 79 |
return ""; |
80 | 80 |
} |
81 | 81 |
TeamOrPersonBase<?> team = book.getAuthorTeam(); |
82 |
String result = CdmUtils.Nz( team == null ? "" : team.getTitleCache());
|
|
82 |
String result = Nz( team == null ? "" : team.getNomenclaturalTitle());
|
|
83 | 83 |
if (! result.trim().equals("")){ |
84 | 84 |
result = result + seperator; |
85 | 85 |
} |
... | ... | |
105 | 105 |
boolean hasInRef = (inRef != null); |
106 | 106 |
// get inRef part |
107 | 107 |
if (hasInRef){ |
108 |
result = CdmUtils.getPreferredNonEmptyString(inRef.getTitleCache(), inRef.getAbbrevTitle(), isAbbrev, true) ; |
|
108 |
result = CdmUtils.getPreferredNonEmptyString(inRef.getTitleCache(), inRef.getAbbrevTitleCache(), isAbbrev, true) ;
|
|
109 | 109 |
}else{ |
110 | 110 |
if ( ! inRefIsObligatory){ |
111 | 111 |
return super.getTitleCache(thisRef); |
... | ... | |
146 | 146 |
logger.warn("InRefDateString (" + inRefDateString + ") could not be found in result (" + result +")"); |
147 | 147 |
} |
148 | 148 |
}else{ |
149 |
result = result + beforeYear + thisRefDate + afterYear; |
|
149 |
//avoid duplicate dots ('..') |
|
150 |
String bYearSeparator = result.substring(result.length() -1).equals(beforeYear.substring(0, 1)) ? beforeYear.substring(1) : beforeYear; |
|
151 |
result = result + bYearSeparator + thisRefDate + afterYear; |
|
150 | 152 |
} |
151 | 153 |
}else{ |
152 | 154 |
result = result + beforeYear + thisRefDate + afterYear; |
cdmlib-model/src/main/java/eu/etaxonomy/cdm/strategy/cache/reference/JournalDefaultCacheStrategy.java | ||
---|---|---|
16 | 16 |
|
17 | 17 |
import eu.etaxonomy.cdm.common.CdmUtils; |
18 | 18 |
import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase; |
19 |
import eu.etaxonomy.cdm.model.reference.IJournal; |
|
20 | 19 |
import eu.etaxonomy.cdm.model.reference.Reference; |
21 | 20 |
import eu.etaxonomy.cdm.strategy.StrategyBase; |
22 | 21 |
|
... | ... | |
25 | 24 |
* @created 29.06.2008 |
26 | 25 |
*/ |
27 | 26 |
public class JournalDefaultCacheStrategy extends StrategyBase implements IReferenceBaseCacheStrategy { |
27 |
private static final long serialVersionUID = 8495999505123620960L; |
|
28 |
|
|
29 |
|
|
28 | 30 |
@SuppressWarnings("unused") |
29 | 31 |
private static final Logger logger = Logger.getLogger(JournalDefaultCacheStrategy.class); |
30 | 32 |
|
cdmlib-model/src/main/java/eu/etaxonomy/cdm/strategy/cache/reference/NomRefDefaultCacheStrategyBase.java | ||
---|---|---|
25 | 25 |
public abstract class NomRefDefaultCacheStrategyBase extends StrategyBase implements INomenclaturalReferenceCacheStrategy{ |
26 | 26 |
private static final long serialVersionUID = -725290113353165022L; |
27 | 27 |
|
28 |
@SuppressWarnings("unused") |
|
29 | 28 |
private static final Logger logger = Logger.getLogger(NomRefDefaultCacheStrategyBase.class); |
30 | 29 |
|
31 | 30 |
protected String beforeYear = ". "; |
... | ... | |
34 | 33 |
protected String afterAuthor = ", "; |
35 | 34 |
|
36 | 35 |
|
37 |
@Override |
|
38 |
public String getTokenizedNomenclaturalTitel(Reference ref) { |
|
39 |
String result = getTitleWithoutYearAndAuthor(ref, true); |
|
36 |
/** |
|
37 |
* Returns the nomenclatural title with micro reference represented as token |
|
38 |
* which can later be replaced by the real data. |
|
39 |
* |
|
40 |
* @see INomenclaturalReference#MICRO_REFERENCE_TOKEN |
|
41 |
* |
|
42 |
* @param ref The reference |
|
43 |
* @return |
|
44 |
*/ |
|
45 |
protected String getTokenizedNomenclaturalTitel(Reference ref) { |
|
46 |
String result = getTitleWithoutYearAndAuthor(ref, true); |
|
40 | 47 |
result += INomenclaturalReference.MICRO_REFERENCE_TOKEN; |
41 | 48 |
result = addYear(result, ref, true); |
42 | 49 |
return result; |
... | ... | |
67 | 74 |
String teamTitle = CdmUtils.getPreferredNonEmptyString(team.getTitleCache(), team.getNomenclaturalTitle(), isAbbrev, true); |
68 | 75 |
if (teamTitle.length() > 0 ){ |
69 | 76 |
String concat = isNotBlank(result) ? afterAuthor : ""; |
70 |
result = team.getTitleCache() + concat + result;
|
|
77 |
result = teamTitle + concat + result;
|
|
71 | 78 |
} |
72 | 79 |
|
73 | 80 |
} |
74 | 81 |
return result; |
75 | 82 |
} |
76 | 83 |
|
77 |
protected abstract String getTitleWithoutYearAndAuthor(Reference reference, boolean isAbbrev); |
|
84 |
protected abstract String getTitleWithoutYearAndAuthor(Reference<?> reference, boolean isAbbrev);
|
|
78 | 85 |
|
79 | 86 |
|
80 | 87 |
@Override |
... | ... | |
84 | 91 |
String nextConcat = ""; |
85 | 92 |
|
86 | 93 |
TeamOrPersonBase<?> team = referenceBase.getAuthorTeam(); |
87 |
if (team != null && ! (team.getTitleCache() == null) && ! team.getTitleCache().trim().equals("")){
|
|
94 |
if (team != null && isNotBlank(team.getTitleCache())){
|
|
88 | 95 |
stringBuilder.append(team.getTitleCache() ); |
89 | 96 |
nextConcat = afterAuthor; |
90 | 97 |
} |
... | ... | |
109 | 116 |
return null; |
110 | 117 |
} |
111 | 118 |
String year = useFullDatePublished ? nomRef.getDatePublishedString() : nomRef.getYear(); |
112 |
if (StringUtils.isBlank(year)){
|
|
119 |
if (isBlank(year)){ |
|
113 | 120 |
result = string + afterYear; |
114 | 121 |
}else{ |
115 |
String concat = isBlank(string) ? "" : string.endsWith(".")? " " : beforeYear; |
|
122 |
String concat = isBlank(string) ? "" : string.endsWith(".") ? " " : beforeYear;
|
|
116 | 123 |
result = string + concat + year + afterYear; |
117 | 124 |
} |
118 | 125 |
return result; |
... | ... | |
120 | 127 |
|
121 | 128 |
@Override |
122 | 129 |
public String getNomenclaturalCitation(Reference nomenclaturalReference, String microReference) { |
123 |
if (nomenclaturalReference.isProtectedTitleCache()){ |
|
124 |
return nomenclaturalReference.getTitleCache(); |
|
130 |
if (nomenclaturalReference.isProtectedAbbrevTitleCache()){ |
|
131 |
String cache = nomenclaturalReference.getAbbrevTitleCache(); |
|
132 |
return handleDetailAndYearForPreliminary(nomenclaturalReference, cache, microReference); |
|
133 |
|
|
125 | 134 |
} |
126 | 135 |
String result = getTokenizedNomenclaturalTitel(nomenclaturalReference); |
127 |
microReference = CdmUtils.Nz(microReference); |
|
136 |
//if no data is available and only titleCache is protected take the protected title |
|
137 |
//this is to avoid empty cache if someone forgets to set also the abbrevTitleCache |
|
138 |
//we need to think about handling protected not separate for abbrevTitleCache and titleCache |
|
139 |
if (result.equals(INomenclaturalReference.MICRO_REFERENCE_TOKEN) && nomenclaturalReference.isProtectedTitleCache() ){ |
|
140 |
String cache = nomenclaturalReference.getTitleCache(); |
|
141 |
return handleDetailAndYearForPreliminary(nomenclaturalReference, cache, microReference); |
|
142 |
} |
|
143 |
|
|
144 |
microReference = Nz(microReference); |
|
128 | 145 |
if (StringUtils.isNotBlank(microReference)){ |
129 | 146 |
microReference = getBeforeMicroReference() + microReference; |
130 | 147 |
if (microReference.endsWith(".") && result.contains(INomenclaturalReference.MICRO_REFERENCE_TOKEN + ".") ){ |
131 | 148 |
microReference = microReference.substring(0, microReference.length() - 1); |
132 | 149 |
} |
133 | 150 |
} |
134 |
result = result.replaceAll(INomenclaturalReference.MICRO_REFERENCE_TOKEN, microReference);
|
|
151 |
result = replaceMicroRefToken(microReference, result);
|
|
135 | 152 |
if (result.startsWith(". ")){ //only year available, remove '. ' |
136 | 153 |
result = result.substring(2); |
137 | 154 |
} |
138 | 155 |
return result; |
139 | 156 |
} |
140 | 157 |
|
158 |
/** |
|
159 |
* @param microReference |
|
160 |
* @param result |
|
161 |
* @return |
|
162 |
*/ |
|
163 |
private String replaceMicroRefToken(String microReference, String string) { |
|
164 |
int index = string.indexOf(INomenclaturalReference.MICRO_REFERENCE_TOKEN); |
|
165 |
String before = string.substring(0, index); |
|
166 |
String after = string.substring(index + INomenclaturalReference.MICRO_REFERENCE_TOKEN.length() ); |
|
167 |
microReference = microReference.trim(); //needed ? |
|
168 |
if (after.length() > 0){ |
|
169 |
if ( ("".equals(microReference) && before.endsWith(after.substring(0,1)) || microReference.endsWith(after.substring(0,1)))){ |
|
170 |
after = after.substring(1); |
|
171 |
} |
|
172 |
} |
|
173 |
String result = before + microReference + after; |
|
174 |
return result; |
|
175 |
} |
|
176 |
|
|
177 |
/** |
|
178 |
* @param nomenclaturalReference |
|
179 |
* @param microRef |
|
180 |
* @return |
|
181 |
*/ |
|
182 |
private String handleDetailAndYearForPreliminary(Reference<?> nomenclaturalReference, String cache, String microReference) { |
|
183 |
String microRef = isNotBlank(microReference) ? getBeforeMicroReference() + microReference : ""; |
|
184 |
if (cache == null){ |
|
185 |
logger.warn("Cache is null. This should never be the case."); |
|
186 |
cache = ""; |
|
187 |
} |
|
188 |
String result = cache + (cache.contains(microRef) ? "" : microRef); |
|
189 |
|
|
190 |
String date = nomenclaturalReference.getDatePublishedString(); |
|
191 |
if (isNotBlank(date) && ! result.contains(date)){ |
|
192 |
result = result + beforeYear + date; |
|
193 |
} |
|
194 |
return result; |
|
195 |
} |
|
196 |
|
|
141 | 197 |
} |
cdmlib-model/src/main/java/eu/etaxonomy/cdm/strategy/cache/reference/ReferenceDefaultCacheStrategy.java | ||
---|---|---|
24 | 24 |
private static final long serialVersionUID = 4350124746874497766L; |
25 | 25 |
@SuppressWarnings("unused") |
26 | 26 |
private static final Logger logger = Logger.getLogger(ReferenceDefaultCacheStrategy.class); |
27 |
|
|
28 |
/** |
|
29 |
* Constructor |
|
30 |
*/ |
|
31 |
public ReferenceDefaultCacheStrategy(){ |
|
32 |
super(); |
|
33 |
} |
|
34 |
public static ReferenceDefaultCacheStrategy NewInstance(){ |
|
35 |
return new ReferenceDefaultCacheStrategy(); |
|
36 |
} |
|
37 |
|
|
38 |
|
|
27 |
|
|
28 |
final static UUID uuid = UUID.fromString("763fe4a0-c79f-4f14-9693-631680225ec3"); |
|
29 |
|
|
39 | 30 |
|
40 | 31 |
protected String beforeYear = ". "; |
41 | 32 |
protected String afterYear = ""; |
... | ... | |
44 | 35 |
private String blank = " "; |
45 | 36 |
private String comma = ","; |
46 | 37 |
private String dot ="."; |
38 |
|
|
39 |
|
|
40 |
// ****************** FACTORY *******************************/ |
|
41 |
|
|
42 |
public static ReferenceDefaultCacheStrategy NewInstance(){ |
|
43 |
return new ReferenceDefaultCacheStrategy(); |
|
44 |
} |
|
45 |
|
|
46 |
// ***************** CONSTRUCTOR ********************************/ |
|
47 |
|
|
48 |
/** |
|
49 |
* Constructor |
|
50 |
*/ |
|
51 |
private ReferenceDefaultCacheStrategy(){ |
|
52 |
super(); |
|
53 |
} |
|
54 |
|
|
55 |
|
|
47 | 56 |
|
48 |
final static UUID uuid = UUID.fromString("763fe4a0-c79f-4f14-9693-631680225ec3"); |
|
49 | 57 |
|
50 | 58 |
|
51 | 59 |
@Override |
cdmlib-model/src/main/java/eu/etaxonomy/cdm/strategy/cache/reference/ThesisDefaultCacheStrategy.java | ||
---|---|---|
16 | 16 |
import eu.etaxonomy.cdm.model.reference.Reference; |
17 | 17 |
|
18 | 18 |
public class ThesisDefaultCacheStrategy extends NomRefDefaultCacheStrategyBase implements INomenclaturalReferenceCacheStrategy { |
19 |
@SuppressWarnings("unused") |
|
19 | 20 |
private static final Logger logger = Logger.getLogger(ThesisDefaultCacheStrategy.class); |
20 | 21 |
|
21 | 22 |
|
cdmlib-model/src/main/java/eu/etaxonomy/cdm/strategy/cache/reference/WebPageDefaultCacheStrategy.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.Reference; |
|
17 |
|
|
18 |
public class WebPageDefaultCacheStrategy extends NomRefDefaultCacheStrategyBase implements INomenclaturalReferenceCacheStrategy { |
|
19 |
private static final long serialVersionUID = 7432751464904190022L; |
|
20 |
|
|
21 |
|
|
22 |
@SuppressWarnings("unused") |
|
23 |
private static final Logger logger = Logger.getLogger(WebPageDefaultCacheStrategy.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("7b36b548-88ee-4180-afc1-4b860db85fa5"); |
|
34 |
|
|
35 |
@Override |
|
36 |
protected UUID getUuid() { |
|
37 |
return uuid; |
|
38 |
} |
|
39 |
|
|
40 |
|
|
41 |
/** |
|
42 |
* Factory method |
|
43 |
* @return |
|
44 |
*/ |
|
45 |
public static WebPageDefaultCacheStrategy NewInstance(){ |
|
46 |
return new WebPageDefaultCacheStrategy(); |
|
47 |
} |
|
48 |
|
|
49 |
/** |
|
50 |
* Constructor |
|
51 |
*/ |
|
52 |
private WebPageDefaultCacheStrategy(){ |
|
53 |
super(); |
|
54 |
} |
|
55 |
|
|
56 |
|
|
57 |
@Override |
|
58 |
public String getAbbrevTitleCache(Reference thesis) { |
|
59 |
return getTitleWithoutYearAndAuthor(thesis, true); |
|
60 |
} |
|
61 |
|
|
62 |
@Override |
|
63 |
protected String getTitleWithoutYearAndAuthor(Reference thesis, boolean isAbbrev){ |
|
64 |
//FIXME this is only a very fast copy and paste from "Generic". Must still be cleaned ! |
|
65 |
|
|
66 |
//titelAbbrev |
|
67 |
//TODO |
|
68 |
String titelAbbrev = CdmUtils.getPreferredNonEmptyString(thesis.getTitle(), thesis.getAbbrevTitle(), isAbbrev, true); |
|
69 |
|
|
70 |
//titelAbbrev |
|
71 |
String nomRefCache = titelAbbrev + blank; |
|
72 |
|
|
73 |
//delete . |
|
74 |
while (nomRefCache.endsWith(".")){ |
|
75 |
nomRefCache = nomRefCache.substring(0, nomRefCache.length()-1); |
|
76 |
} |
|
77 |
|
|
78 |
return nomRefCache.trim(); |
|
79 |
} |
|
80 |
|
|
81 |
|
|
82 |
} |
Also available in: Unified diff
better handling of abbreviated title cache in references, series -> seriesPart and some improvements in the reference cache strategies #4280, #4239