Revision fe43cd3b
Added by Andreas Müller over 8 years ago
cdmlib-model/src/main/java/eu/etaxonomy/cdm/strategy/cache/taxon/TaxonBaseDefaultCacheStrategy.java | ||
---|---|---|
9 | 9 |
|
10 | 10 |
package eu.etaxonomy.cdm.strategy.cache.taxon; |
11 | 11 |
|
12 |
import java.util.ArrayList; |
|
13 |
import java.util.List; |
|
12 | 14 |
import java.util.UUID; |
13 | 15 |
|
14 | 16 |
import org.apache.commons.lang.StringUtils; |
... | ... | |
19 | 21 |
import eu.etaxonomy.cdm.model.reference.Reference; |
20 | 22 |
import eu.etaxonomy.cdm.model.taxon.TaxonBase; |
21 | 23 |
import eu.etaxonomy.cdm.strategy.StrategyBase; |
22 |
import eu.etaxonomy.cdm.strategy.cache.common.IIdentifiableEntityCacheStrategy; |
|
24 |
import eu.etaxonomy.cdm.strategy.cache.HTMLTagRules; |
|
25 |
import eu.etaxonomy.cdm.strategy.cache.TagEnum; |
|
26 |
import eu.etaxonomy.cdm.strategy.cache.TaggedCacheHelper; |
|
27 |
import eu.etaxonomy.cdm.strategy.cache.TaggedText; |
|
28 |
import eu.etaxonomy.cdm.strategy.cache.name.INameCacheStrategy; |
|
29 |
|
|
30 |
public class TaxonBaseDefaultCacheStrategy<T extends TaxonBase> |
|
31 |
extends StrategyBase |
|
32 |
implements ITaxonCacheStrategy<T> { |
|
23 | 33 |
|
24 |
public class TaxonBaseDefaultCacheStrategy<T extends TaxonBase> extends StrategyBase implements |
|
25 |
IIdentifiableEntityCacheStrategy<T> { |
|
26 | 34 |
private static final long serialVersionUID = 5769890979070021350L; |
27 | 35 |
final static UUID uuid = UUID.fromString("931e48f0-2033-11de-8c30-0800200c9a66"); |
28 | 36 |
|
... | ... | |
31 | 39 |
return uuid; |
32 | 40 |
} |
33 | 41 |
|
34 |
@Override |
|
35 |
public String getTitleCache(T taxonBase) { |
|
36 |
String title; |
|
37 |
if (taxonBase.isProtectedTitleCache()){ |
|
38 |
return taxonBase.getTitleCache(); |
|
39 |
}else if (taxonBase.getName() != null && taxonBase.getName().getTitleCache() != null){ |
|
40 |
String namePart = getNamePart(taxonBase); |
|
41 |
|
|
42 |
title = namePart + " sec. "; |
|
43 |
title += getSecundumPart(taxonBase); |
|
44 |
}else{ |
|
45 |
title = taxonBase.toString(); |
|
46 |
} |
|
47 |
if (taxonBase.isDoubtful()){ |
|
48 |
title = "?" + title; |
|
49 |
} |
|
50 |
return title; |
|
51 |
} |
|
42 |
@Override |
|
43 |
public String getTitleCache(T taxonBase) { |
|
44 |
return getTitleCache(taxonBase, null); |
|
45 |
} |
|
52 | 46 |
|
53 |
/** |
|
54 |
* @param taxonBase |
|
55 |
* @param title |
|
56 |
* @return |
|
57 |
*/ |
|
58 |
private String getSecundumPart(T taxonBase) { |
|
59 |
String result; |
|
60 |
Reference<?> sec = taxonBase.getSec(); |
|
61 |
if (sec != null){ |
|
62 |
if (sec.getCacheStrategy() != null && |
|
63 |
sec.getAuthorship() != null && |
|
64 |
isNotBlank(sec.getAuthorship().getTitleCache()) && |
|
65 |
isNotBlank(sec.getYear())){ |
|
66 |
result = sec.getCacheStrategy().getCitation(sec); |
|
67 |
// sec.getAuthorTeam().getTitleCache() + sec.getYear(); |
|
68 |
}else{ |
|
69 |
result = taxonBase.getSec().getTitleCache(); |
|
70 |
} |
|
71 |
}else{ |
|
72 |
result = "???"; |
|
73 |
} |
|
74 |
return result; |
|
75 |
} |
|
47 |
|
|
48 |
// @Override |
|
49 |
// public String getTitleCache(T taxonBase) { |
|
50 |
// String title; |
|
51 |
// if (taxonBase.isProtectedTitleCache()){ |
|
52 |
// return taxonBase.getTitleCache(); |
|
53 |
// }else if (taxonBase.getName() != null && taxonBase.getName().getTitleCache() != null){ |
|
54 |
// String namePart = getNamePart(taxonBase); |
|
55 |
// |
|
56 |
// title = namePart + " sec. "; |
|
57 |
// title += getSecundumPart(taxonBase); |
|
58 |
// }else{ |
|
59 |
// title = taxonBase.toString(); |
|
60 |
// } |
|
61 |
// if (taxonBase.isDoubtful()){ |
|
62 |
// title = "?" + title; |
|
63 |
// } |
|
64 |
// return title; |
|
65 |
// } |
|
66 |
|
|
67 |
// /** |
|
68 |
// * @param taxonBase |
|
69 |
// * @param title |
|
70 |
// * @return |
|
71 |
// */ |
|
72 |
// private String getSecundumPart(T taxonBase) { |
|
73 |
// String result; |
|
74 |
// Reference<?> sec = taxonBase.getSec(); |
|
75 |
// if (sec != null){ |
|
76 |
// if (sec.getCacheStrategy() != null && |
|
77 |
// sec.getAuthorship() != null && |
|
78 |
// isNotBlank(sec.getAuthorship().getTitleCache()) && |
|
79 |
// isNotBlank(sec.getYear())){ |
|
80 |
// result = sec.getCacheStrategy().getCitation(sec); |
|
81 |
//// sec.getAuthorTeam().getTitleCache() + sec.getYear(); |
|
82 |
// }else{ |
|
83 |
// result = taxonBase.getSec().getTitleCache(); |
|
84 |
// } |
|
85 |
// }else{ |
|
86 |
// result = "???"; |
|
87 |
// } |
|
88 |
// return result; |
|
89 |
// } |
|
76 | 90 |
|
77 | 91 |
/** |
78 | 92 |
* @param name |
... | ... | |
91 | 105 |
return result; |
92 | 106 |
} |
93 | 107 |
|
108 |
@Override |
|
109 |
public List<TaggedText> getTaggedTitle(T taxonBase) { |
|
110 |
if (taxonBase == null){ |
|
111 |
return null; |
|
112 |
} |
|
113 |
|
|
114 |
List<TaggedText> tags = new ArrayList<TaggedText>(); |
|
115 |
|
|
116 |
if (taxonBase.isDoubtful()){ |
|
117 |
tags.add(new TaggedText(TagEnum.separator, "?")); |
|
118 |
} |
|
119 |
if (taxonBase.isProtectedTitleCache()){ |
|
120 |
//protected title cache |
|
121 |
tags.add(new TaggedText(TagEnum.name, taxonBase.getTitleCache())); |
|
122 |
}else{ |
|
123 |
//name |
|
124 |
List<TaggedText> nameTags = getNameTags(taxonBase); |
|
125 |
|
|
126 |
if (nameTags.size() > 0){ |
|
127 |
tags.addAll(nameTags); |
|
128 |
|
|
129 |
//sec. |
|
130 |
tags.add(new TaggedText(TagEnum.separator, " sec. ")); |
|
131 |
|
|
132 |
//ref. |
|
133 |
List<TaggedText> secTags = getSecundumTags(taxonBase); |
|
134 |
tags.addAll(secTags); |
|
135 |
}else{ |
|
136 |
tags.add(new TaggedText(TagEnum.fullName, taxonBase.toString())); |
|
137 |
} |
|
138 |
} |
|
139 |
return tags; |
|
140 |
} |
|
141 |
|
|
142 |
private List<TaggedText> getSecundumTags(T taxonBase) { |
|
143 |
List<TaggedText> tags = new ArrayList<TaggedText>(); |
|
144 |
|
|
145 |
Reference<?> ref = taxonBase.getSec(); |
|
146 |
ref = HibernateProxyHelper.deproxy(ref, Reference.class); |
|
147 |
if (ref != null){ |
|
148 |
if (ref.getCacheStrategy() != null && |
|
149 |
ref.getAuthorship() != null && |
|
150 |
isNotBlank(ref.getAuthorship().getTitleCache()) && |
|
151 |
isNotBlank(ref.getYear())){ |
|
152 |
String citation = ref.getCacheStrategy().getCitation(ref); |
|
153 |
// sec.getAuthorTeam().getTitleCache() + sec.getYear(); |
|
154 |
tags.add(new TaggedText(TagEnum.reference, citation)); |
|
155 |
}else{ |
|
156 |
tags.add(new TaggedText(TagEnum.reference, ref.getTitleCache())); |
|
157 |
} |
|
158 |
}else{ |
|
159 |
tags.add(new TaggedText(TagEnum.reference, "???")); |
|
160 |
} |
|
161 |
return tags; |
|
162 |
} |
|
163 |
|
|
164 |
private List<TaggedText> getNameTags(T taxonBase) { |
|
165 |
List<TaggedText> tags = new ArrayList<TaggedText>(); |
|
166 |
TaxonNameBase<?,INameCacheStrategy<TaxonNameBase>> name = taxonBase.getName(); |
|
167 |
if (name != null){ |
|
168 |
if (taxonBase.isUseNameCache() && name.isInstanceOf(NonViralName.class)){ |
|
169 |
NonViralName<?> nvn = HibernateProxyHelper.deproxy(name, NonViralName.class); |
|
170 |
List<TaggedText> nameCacheTags = nvn.getCacheStrategy().getTaggedName(nvn); |
|
171 |
tags.addAll(nameCacheTags); |
|
172 |
}else{ |
|
173 |
List<TaggedText> nameTags = name.getTaggedName(); |
|
174 |
tags.addAll(nameTags); |
|
175 |
} |
|
176 |
if (StringUtils.isNotBlank(taxonBase.getAppendedPhrase())){ |
|
177 |
tags.add(new TaggedText(TagEnum.appendedPhrase, taxonBase.getAppendedPhrase().trim())); |
|
178 |
} |
|
179 |
} |
|
180 |
return tags; |
|
181 |
} |
|
182 |
|
|
183 |
@Override |
|
184 |
public String getTitleCache(T taxonBase, HTMLTagRules htmlTagRules) { |
|
185 |
List<TaggedText> tags = getTaggedTitle(taxonBase); |
|
186 |
if (tags == null){ |
|
187 |
return null; |
|
188 |
}else{ |
|
189 |
String result = TaggedCacheHelper.createString(tags, htmlTagRules); |
|
190 |
return result; |
|
191 |
} |
|
192 |
} |
|
193 |
|
|
194 |
|
|
195 |
|
|
94 | 196 |
} |
Also available in: Unified diff
Implement taggedTitle for taxon base #5229