2 * Copyright (C) 2007 EDIT
3 * European Distributed Institute of Taxonomy
4 * http://www.e-taxonomy.eu
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.
10 package eu
.etaxonomy
.cdm
.strategy
.cache
.reference
;
12 import org
.apache
.commons
.lang
.StringUtils
;
13 import org
.apache
.log4j
.Logger
;
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
;
26 public abstract class NomRefDefaultCacheStrategyBase
<T
extends Reference
> extends StrategyBase
implements INomenclaturalReferenceCacheStrategy
<T
>{
27 private static final long serialVersionUID
= -725290113353165022L;
29 @SuppressWarnings("unused")
30 private static final Logger logger
= Logger
.getLogger(NomRefDefaultCacheStrategyBase
.class);
32 protected String beforeYear
= ". ";
33 protected String beforeMicroReference
= ": ";
34 protected String afterYear
= "";
35 protected String afterAuthor
= ", ";
38 * @see eu.etaxonomy.cdm.strategy.cache.reference.INomenclaturalReferenceCacheStrategy#getTokenizedNomenclaturalTitel(eu.etaxonomy.cdm.model.reference.INomenclaturalReference)
40 public String
getTokenizedNomenclaturalTitel(T nomenclaturalReference
) {
41 String result
= getNomRefTitleWithoutYearAndAuthor(nomenclaturalReference
);
42 result
+= INomenclaturalReference
.MICRO_REFERENCE_TOKEN
;
43 result
= addYear(result
, nomenclaturalReference
, true);
48 * @see eu.etaxonomy.cdm.strategy.cache.reference.INomenclaturalReferenceCacheStrategy#getTitleCache(eu.etaxonomy.cdm.model.reference.INomenclaturalReference)
50 public String
getTitleCache(T nomenclaturalReference
) {
52 if (nomenclaturalReference
.isProtectedTitleCache()){
53 return nomenclaturalReference
.getTitleCache();
55 String result
= getNomRefTitleWithoutYearAndAuthor(nomenclaturalReference
);
56 result
= addYear(result
, nomenclaturalReference
, false);
57 TeamOrPersonBase
<?
> team
= nomenclaturalReference
.getAuthorTeam();
58 if (team
!= null && StringUtils
.isNotEmpty(team
.getTitleCache()) ){
59 result
= team
.getTitleCache() + afterAuthor
+ result
;
64 public String
getCitation(T referenceBase
) {
65 StringBuilder stringBuilder
= new StringBuilder();
67 TeamOrPersonBase
<?
> team
= referenceBase
.getAuthorTeam();
68 if (team
!= null && ! (team
.getTitleCache() == null) && ! team
.getTitleCache().trim().equals("")){
69 //String author = CdmUtils.Nz(team == null? "" : team.getTitleCache());
70 stringBuilder
.append(team
.getTitleCache() + afterAuthor
);
73 String year
= CdmUtils
.Nz(referenceBase
.getYear());
74 if (!"".equals(year
)){
75 stringBuilder
.append(beforeYear
+ year
);
78 return stringBuilder
.toString();
82 * @see eu.etaxonomy.cdm.strategy.cache.reference.INomenclaturalReferenceCacheStrategy#getBeforeMicroReference()
84 public String
getBeforeMicroReference(){
85 return beforeMicroReference
;
88 protected String
addYear(String string
, T nomRef
, boolean useFullDatePublished
){
93 String year
= useFullDatePublished ? nomRef
.getDatePublishedString() : nomRef
.getYear();
94 if (StringUtils
.isBlank(year
)){
95 result
= string
+ afterYear
;
97 result
= string
+ beforeYear
+ year
+ afterYear
;
102 protected abstract String
getNomRefTitleWithoutYearAndAuthor(T reference
);
104 public String
getNomenclaturalCitation(T nomenclaturalReference
, String microReference
) {
105 if (nomenclaturalReference
.isProtectedTitleCache()){
106 return nomenclaturalReference
.getTitleCache();
108 String result
= getTokenizedNomenclaturalTitel(nomenclaturalReference
);
109 microReference
= CdmUtils
.Nz(microReference
);
110 if (StringUtils
.isNotBlank(microReference
)){
111 microReference
= getBeforeMicroReference() + microReference
;
113 result
= result
.replaceAll(INomenclaturalReference
.MICRO_REFERENCE_TOKEN
, microReference
);