/**\r
* @author a.mueller\r
* @created 29.06.2008\r
- * @version 1.0\r
*/\r
-public abstract class NomRefDefaultCacheStrategyBase<T extends Reference> extends StrategyBase implements INomenclaturalReferenceCacheStrategy<T>{\r
+public abstract class NomRefDefaultCacheStrategyBase extends StrategyBase implements INomenclaturalReferenceCacheStrategy{\r
private static final long serialVersionUID = -725290113353165022L;\r
\r
@SuppressWarnings("unused")\r
protected String afterYear = "";\r
protected String afterAuthor = ", "; \r
\r
- /* (non-Javadoc)\r
- * @see eu.etaxonomy.cdm.strategy.cache.reference.INomenclaturalReferenceCacheStrategy#getTokenizedNomenclaturalTitel(eu.etaxonomy.cdm.model.reference.INomenclaturalReference)\r
- */\r
- public String getTokenizedNomenclaturalTitel(T nomenclaturalReference) {\r
- String result = getNomRefTitleWithoutYearAndAuthor(nomenclaturalReference);\r
+\r
+ @Override\r
+ public String getTokenizedNomenclaturalTitel(Reference ref) {\r
+ String result = getTitleWithoutYearAndAuthor(ref, true);\r
result += INomenclaturalReference.MICRO_REFERENCE_TOKEN;\r
- result = addYear(result, nomenclaturalReference);\r
+ result = addYear(result, ref, true);\r
return result;\r
}\r
\r
- /* (non-Javadoc)\r
- * @see eu.etaxonomy.cdm.strategy.cache.reference.INomenclaturalReferenceCacheStrategy#getTitleCache(eu.etaxonomy.cdm.model.reference.INomenclaturalReference)\r
- */\r
- public String getTitleCache(T nomenclaturalReference) {\r
+ @Override\r
+ public String getTitleCache(Reference nomenclaturalReference) {\r
+ return getTitleCache(nomenclaturalReference, false);\r
+ }\r
+\r
+ @Override\r
+ public String getAbbrevTitleCache(Reference nomenclaturalReference) {\r
+ return getTitleCache(nomenclaturalReference, true);\r
+ }\r
+ \r
+ private String getTitleCache(Reference ref, boolean isAbbrev) {\r
//TODO needed?\r
- if (nomenclaturalReference.isProtectedTitleCache()){\r
- return nomenclaturalReference.getTitleCache();\r
+ if (isAbbrev && ref.isProtectedAbbrevTitleCache()){\r
+ return ref.getAbbrevTitleCache();\r
+ }else if (!isAbbrev && ref.isProtectedTitleCache()){\r
+ return ref.getTitleCache();\r
}\r
- String result = getNomRefTitleWithoutYearAndAuthor(nomenclaturalReference);\r
- result = addYear(result, nomenclaturalReference);\r
- TeamOrPersonBase<?> team = nomenclaturalReference.getAuthorTeam();\r
- if (team != null && StringUtils.isNotEmpty(team.getTitleCache()) ){\r
- result = team.getTitleCache() + afterAuthor + result;\r
+ String result = getTitleWithoutYearAndAuthor(ref, isAbbrev);\r
+ result = addYear(result, ref, false);\r
+ TeamOrPersonBase<?> team = ref.getAuthorTeam();\r
+ \r
+ if (team != null){\r
+ String teamTitle = CdmUtils.getPreferredNonEmptyString(team.getTitleCache(), team.getNomenclaturalTitle(), isAbbrev, true);\r
+ if (teamTitle.length() > 0 ){\r
+ String concat = isNotBlank(result) ? afterAuthor : "";\r
+ result = team.getTitleCache() + concat + result;\r
+ }\r
+ \r
}\r
return result;\r
}\r
\r
- public String getCitation(T referenceBase) {\r
+ protected abstract String getTitleWithoutYearAndAuthor(Reference reference, boolean isAbbrev);\r
+\r
+ \r
+ @Override\r
+ public String getCitation(Reference referenceBase) {\r
StringBuilder stringBuilder = new StringBuilder();\r
\r
+ String nextConcat = "";\r
+ \r
TeamOrPersonBase<?> team = referenceBase.getAuthorTeam();\r
if (team != null && ! (team.getTitleCache() == null) && ! team.getTitleCache().trim().equals("")){\r
- //String author = CdmUtils.Nz(team == null? "" : team.getTitleCache());\r
- stringBuilder.append(team.getTitleCache() + afterAuthor);\r
+ stringBuilder.append(team.getTitleCache() );\r
+ nextConcat = afterAuthor;\r
}\r
\r
- String year = CdmUtils.Nz(referenceBase.getYear());\r
- if (!"".equals(year)){\r
- stringBuilder.append(beforeYear + year);\r
+ String year = referenceBase.getYear();\r
+ if (StringUtils.isNotBlank(year)){\r
+ stringBuilder.append(nextConcat + year);\r
}\r
\r
return stringBuilder.toString();\r
}\r
\r
- /* (non-Javadoc)\r
- * @see eu.etaxonomy.cdm.strategy.cache.reference.INomenclaturalReferenceCacheStrategy#getBeforeMicroReference()\r
- */\r
+\r
+ @Override\r
public String getBeforeMicroReference(){\r
return beforeMicroReference;\r
}\r
\r
- protected String addYear(String string, T nomRef){\r
+ protected String addYear(String string, Reference nomRef, boolean useFullDatePublished){\r
String result;\r
if (string == null){\r
return null;\r
}\r
- String year = CdmUtils.Nz(nomRef.getYear());\r
- if ("".equals(year)){\r
+ String year = useFullDatePublished ? nomRef.getDatePublishedString() : nomRef.getYear();\r
+ if (StringUtils.isBlank(year)){\r
result = string + afterYear;\r
}else{\r
- result = string + beforeYear + year + afterYear;\r
+ String concat = isBlank(string) ? "" : string.endsWith(".")? " " : beforeYear;\r
+ result = string + concat + year + afterYear;\r
}\r
return result;\r
}\r
\r
- protected abstract String getNomRefTitleWithoutYearAndAuthor(T reference);\r
- \r
- public String getNomenclaturalCitation(T nomenclaturalReference, String microReference) {\r
+ @Override\r
+ public String getNomenclaturalCitation(Reference nomenclaturalReference, String microReference) {\r
if (nomenclaturalReference.isProtectedTitleCache()){\r
return nomenclaturalReference.getTitleCache();\r
}\r
microReference = getBeforeMicroReference() + microReference;\r
}\r
result = result.replaceAll(INomenclaturalReference.MICRO_REFERENCE_TOKEN, microReference);\r
+ if (result.startsWith(". ")){\r
+ result = result.substring(2);\r
+ }\r
return result;\r
}\r
+\r
}\r