3 * Copyright (C) 2009 EDIT
4 * European Distributed Institute of Taxonomy
5 * http://www.e-taxonomy.eu
7 * The contents of this file are subject to the Mozilla Public License Version 1.1
8 * See LICENSE.TXT at the top of this package for the full license terms.
10 package eu
.etaxonomy
.cdm
.api
.facade
;
12 import java
.util
.UUID
;
14 import org
.apache
.commons
.lang
.StringUtils
;
15 import org
.apache
.log4j
.Logger
;
17 import eu
.etaxonomy
.cdm
.common
.CdmUtils
;
18 import eu
.etaxonomy
.cdm
.model
.agent
.Institution
;
19 import eu
.etaxonomy
.cdm
.model
.occurrence
.Collection
;
20 import eu
.etaxonomy
.cdm
.model
.occurrence
.DerivedUnit
;
21 import eu
.etaxonomy
.cdm
.strategy
.StrategyBase
;
22 import eu
.etaxonomy
.cdm
.strategy
.cache
.common
.IIdentifiableEntityCacheStrategy
;
29 public class DerivedUnitFacadeCacheStrategy
extends StrategyBase
implements IIdentifiableEntityCacheStrategy
<DerivedUnit
> {
30 private static final long serialVersionUID
= 1578628591216605619L;
31 @SuppressWarnings("unused")
32 private static final Logger logger
= Logger
.getLogger(DerivedUnitFacadeCacheStrategy
.class);
34 private static final UUID uuid
= UUID
.fromString("df4672c1-ce5c-4724-af6d-91e2b326d4a4");
37 * @see eu.etaxonomy.cdm.strategy.StrategyBase#getUuid()
40 protected UUID
getUuid() {
44 private boolean includeEmptySeconds
= false;
45 private boolean includeReferenceSystem
= true;
49 * @see eu.etaxonomy.cdm.strategy.cache.common.IIdentifiableEntityCacheStrategy#getTitleCache(eu.etaxonomy.cdm.model.common.IdentifiableEntity)
52 public String
getTitleCache(DerivedUnit derivedUnit
) {
53 DerivedUnitFacadeFieldUnitCacheStrategy fieldStrategy
= new DerivedUnitFacadeFieldUnitCacheStrategy();
57 DerivedUnitFacade facade
;
59 DerivedUnitFacadeConfigurator config
= DerivedUnitFacadeConfigurator
.NewInstance();
60 config
.setFirePropertyChangeEvents(false);
61 facade
= DerivedUnitFacade
.NewInstance(derivedUnit
, config
);
62 result
+= fieldStrategy
.getFieldData(facade
);
65 String exsiccatum
= null;
67 exsiccatum
= facade
.getExsiccatum();
68 } catch (MethodNotSupportedByDerivedUnitTypeException e
) {
69 //NO exsiccatum if this facade doe not represent a specimen
71 result
= CdmUtils
.concat("; ", result
, exsiccatum
);
73 //Herbarium & accession number
74 String code
= getCode(facade
);
75 String collectionData
= CdmUtils
.concat(" ", code
, facade
.getAccessionNumber());
76 if (StringUtils
.isNotBlank(collectionData
)) {
77 result
= (result
+ " (" + collectionData
+ ")").trim();
81 result
= fieldStrategy
.addPlantDescription(result
, facade
);
84 } catch (DerivedUnitFacadeNotSupportedException e
) {
96 private String
getCode(DerivedUnitFacade facade
) {
98 if(facade
.getCollection() != null){
99 code
= facade
.getCollection().getCode();
100 if (StringUtils
.isBlank(code
)){
101 Institution institution
= facade
.getCollection().getInstitute();
102 if (institution
!= null){
103 code
= institution
.getCode();
105 if (StringUtils
.isBlank(code
)){
106 Collection superCollection
= facade
.getCollection().getSuperCollection();
107 if (superCollection
!= null){
108 code
= superCollection
.getCode();
116 // ************************** GETTER / SETTER ******************************************************
118 public boolean isIncludeSeconds() {
119 return includeEmptySeconds
;
124 public void setIncludeSeconds(boolean includeSeconds
) {
125 this.includeEmptySeconds
= includeSeconds
;
130 public void setIncludeReferenceSystem(boolean includeReferenceSystem
) {
131 this.includeReferenceSystem
= includeReferenceSystem
;
136 public boolean isIncludeReferenceSystem() {
137 return includeReferenceSystem
;