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
.log4j
.Logger
;
14 import eu
.etaxonomy
.cdm
.common
.CdmUtils
;
15 import eu
.etaxonomy
.cdm
.model
.agent
.TeamOrPersonBase
;
16 import eu
.etaxonomy
.cdm
.model
.reference
.INomenclaturalReference
;
17 import eu
.etaxonomy
.cdm
.model
.reference
.ReferenceBase
;
18 import eu
.etaxonomy
.cdm
.strategy
.StrategyBase
;
25 public abstract class NomRefDefaultCacheStrategyBase
<T
extends ReferenceBase
> extends StrategyBase
implements INomenclaturalReferenceCacheStrategy
<T
>{
26 @SuppressWarnings("unused")
27 private static final Logger logger
= Logger
.getLogger(NomRefDefaultCacheStrategyBase
.class);
29 protected String beforeYear
= ". ";
30 protected String beforeMicroReference
= ": ";
31 protected String afterYear
= "";
32 protected String afterAuthor
= ", ";
35 * @see eu.etaxonomy.cdm.strategy.cache.reference.INomenclaturalReferenceCacheStrategy#getTokenizedNomenclaturalTitel(eu.etaxonomy.cdm.model.reference.INomenclaturalReference)
37 public String
getTokenizedNomenclaturalTitel(T nomenclaturalReference
) {
38 String result
= getNomRefTitleWithoutYearAndAuthor(nomenclaturalReference
);
39 result
+= INomenclaturalReference
.MICRO_REFERENCE_TOKEN
;
40 result
= addYear(result
, nomenclaturalReference
);
45 * @see eu.etaxonomy.cdm.strategy.cache.reference.INomenclaturalReferenceCacheStrategy#getTitleCache(eu.etaxonomy.cdm.model.reference.INomenclaturalReference)
47 public String
getTitleCache(T nomenclaturalReference
) {
49 if (nomenclaturalReference
.isProtectedTitleCache()){
50 return nomenclaturalReference
.getTitleCache();
52 String result
= getNomRefTitleWithoutYearAndAuthor(nomenclaturalReference
);
53 result
= addYear(result
, nomenclaturalReference
);
54 TeamOrPersonBase
<?
> team
= nomenclaturalReference
.getAuthorTeam();
55 if (team
!= null && ! (team
.getTitleCache() == null) && ! team
.getTitleCache().trim().equals("")){
56 //String author = CdmUtils.Nz(team == null? "" : team.getTitleCache());
57 result
= team
.getTitleCache() + afterAuthor
+ result
;
62 public String
getCitation(T referenceBase
) {
63 StringBuilder stringBuilder
= new StringBuilder();
65 TeamOrPersonBase
<?
> team
= referenceBase
.getAuthorTeam();
66 if (team
!= null && ! (team
.getTitleCache() == null) && ! team
.getTitleCache().trim().equals("")){
67 //String author = CdmUtils.Nz(team == null? "" : team.getTitleCache());
68 stringBuilder
.append(team
.getTitleCache() + afterAuthor
);
71 String year
= CdmUtils
.Nz(referenceBase
.getYear());
72 if (!"".equals(year
)){
73 stringBuilder
.append(beforeYear
+ year
);
76 return stringBuilder
.toString();
80 * @see eu.etaxonomy.cdm.strategy.cache.reference.INomenclaturalReferenceCacheStrategy#getBeforeMicroReference()
82 public String
getBeforeMicroReference(){
83 return beforeMicroReference
;
86 protected String
addYear(String string
, T nomRef
){
91 String year
= CdmUtils
.Nz(nomRef
.getYear());
93 result
= string
+ afterYear
;
95 result
= string
+ beforeYear
+ year
+ afterYear
;
100 protected abstract String
getNomRefTitleWithoutYearAndAuthor(T reference
);
102 public String
getNomenclaturalCitation(T nomenclaturalReference
, String microReference
) {
103 if (nomenclaturalReference
.isProtectedTitleCache()){
104 return nomenclaturalReference
.getTitleCache();
106 String result
= getTokenizedNomenclaturalTitel(nomenclaturalReference
);
107 microReference
= CdmUtils
.Nz(microReference
);
108 if (! "".equals(microReference
)){
109 microReference
= getBeforeMicroReference() + microReference
;
111 result
= result
.replaceAll(INomenclaturalReference
.MICRO_REFERENCE_TOKEN
, microReference
);