\r
import eu.etaxonomy.cdm.common.CdmUtils;\r
import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;\r
+import eu.etaxonomy.cdm.model.reference.IJournal;\r
import eu.etaxonomy.cdm.model.reference.Reference;\r
\r
-public class ArticleDefaultCacheStrategy <T extends Reference> extends InRefDefaultCacheStrategyBase<T> implements INomenclaturalReferenceCacheStrategy<T> {\r
+public class ArticleDefaultCacheStrategy <T extends Reference> extends NomRefDefaultCacheStrategyBase<T> implements INomenclaturalReferenceCacheStrategy<T> {\r
+ private static final long serialVersionUID = -1639068590864589314L;\r
+\r
+ @SuppressWarnings("unused")\r
private static final Logger logger = Logger.getLogger(ArticleDefaultCacheStrategy.class);\r
\r
public static final String UNDEFINED_JOURNAL = "- undefined journal -";\r
private String prefixReferenceJounal = "in";\r
private String blank = " ";\r
+ private String comma = ",";\r
+ private String prefixSeries = "ser.";\r
\r
final static UUID uuid = UUID.fromString("0d45343a-0c8a-4a64-97ca-e94974b65c96");\r
\r
if (article.isProtectedTitleCache()){\r
return article.getTitleCache();\r
}\r
- String result = getNomRefTitleWithoutYearAndAuthor(article);\r
+ String result = getTitleWithoutYearAndAuthor(article, false);\r
result = addYear(result, article, false);\r
TeamOrPersonBase<?> team = article.getAuthorTeam();\r
result = CdmUtils.concat(" ", article.getTitle(), result);\r
- if (team != null && CdmUtils.isNotEmpty(team.getTitleCache())){\r
+ if (team != null && StringUtils.isNotBlank(team.getTitleCache())){\r
String authorSeparator = StringUtils.isNotBlank(article.getTitle())? afterAuthor : " ";\r
result = team.getTitleCache() + authorSeparator + result;\r
}\r
return result;\r
}\r
\r
+ @Override\r
+ public String getAbbrevTitleCache(T article) {\r
+ if (article.isProtectedAbbrevTitleCache()){\r
+ return article.getAbbrevTitleCache();\r
+ }\r
+ String result = getTitleWithoutYearAndAuthor(article, true);\r
+ result = addYear(result, article, false);\r
+ TeamOrPersonBase<?> team = article.getAuthorTeam();\r
+ String articleTitle = CdmUtils.getPreferredNonEmptyString(article.getAbbrevTitle(), article.getTitle(), false, true);\r
+ result = CdmUtils.concat(" ", articleTitle, result); //Article should maybe left out for nomenclatural references (?)\r
+ if (team != null && StringUtils.isNotBlank(team.getNomenclaturalTitle())){\r
+ String authorSeparator = StringUtils.isNotBlank(articleTitle) ? afterAuthor : " ";\r
+ result = team.getNomenclaturalTitle() + authorSeparator + result;\r
+ }\r
+ return result;\r
+ }\r
\r
@Override\r
- protected String getNomRefTitleWithoutYearAndAuthor(T article){\r
+ protected String getTitleWithoutYearAndAuthor(T article, boolean isAbbrev){\r
if (article == null){\r
return null;\r
}\r
- boolean hasJournal = (article.getInReference() != null);\r
+ IJournal journal = article.getInReference();\r
+ boolean hasJournal = (journal != null);\r
\r
- String titelAbbrev;\r
+ String journalTitel;\r
if (hasJournal){\r
- titelAbbrev = CdmUtils.Nz(article.getInReference().getTitle()).trim();\r
+ journalTitel = CdmUtils.getPreferredNonEmptyString(journal.getTitle(), journal.getAbbrevTitle(), isAbbrev, true);\r
}else{\r
- titelAbbrev = UNDEFINED_JOURNAL;\r
+ journalTitel = UNDEFINED_JOURNAL;\r
}\r
\r
- String series = CdmUtils.Nz(article.getSeries()).trim();\r
- String volume = CdmUtils.Nz(article.getVolume()).trim();\r
+ String series = Nz(article.getSeries()).trim();\r
+ String volume = Nz(article.getVolume()).trim();\r
\r
boolean needsComma = false;\r
\r
nomRefCache = prefixReferenceJounal + blank; \r
\r
//titelAbbrev\r
- if (CdmUtils.isNotEmpty(titelAbbrev)){\r
- nomRefCache = nomRefCache + titelAbbrev + blank; \r
+ if (isNotBlank(journalTitel)){\r
+ nomRefCache = nomRefCache + journalTitel + blank; \r
}\r
\r
nomRefCache = getSeriesAndVolPart(series, volume, needsComma, nomRefCache);\r
\r
return nomRefCache.trim();\r
}\r
-\r
-\r
- @Override\r
- protected String getInRefType() {\r
- return "article";\r
+ \r
+ protected String getSeriesAndVolPart(String series, String volume,\r
+ boolean needsComma, String nomRefCache) {\r
+ //inSeries\r
+ String seriesPart = "";\r
+ if (isNotBlank(series)){\r
+ seriesPart = series;\r
+ if (CdmUtils.isNumeric(series)){\r
+ seriesPart = prefixSeries + blank + seriesPart;\r
+ }\r
+ if (needsComma){\r
+ seriesPart = comma + seriesPart;\r
+ }\r
+ needsComma = true;\r
+ }\r
+ nomRefCache += seriesPart;\r
+ \r
+ \r
+ //volume Part\r
+ String volumePart = "";\r
+ if (!"".equals(volume)){\r
+ volumePart = volume;\r
+ if (needsComma){\r
+ volumePart = comma + blank + volumePart;\r
+ }\r
+ //needsComma = false;\r
+ }\r
+ nomRefCache += volumePart;\r
+ return nomRefCache;\r
}\r
\r
- \r
}\r