- added isPublish() method to facade
[cdmlib.git] / cdmlib-services / src / main / java / eu / etaxonomy / cdm / api / facade / DerivedUnitFacadeCacheStrategy.java
1 // $Id$
2 /**
3 * Copyright (C) 2009 EDIT
4 * European Distributed Institute of Taxonomy
5 * http://www.e-taxonomy.eu
6 *
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.
9 */
10 package eu.etaxonomy.cdm.api.facade;
11
12 import java.util.UUID;
13
14 import org.apache.commons.lang.StringUtils;
15 import org.apache.log4j.Logger;
16
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;
23
24 /**
25 * @author a.mueller
26 * @date 03.06.2010
27 *
28 */
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);
33
34 private static final UUID uuid = UUID.fromString("df4672c1-ce5c-4724-af6d-91e2b326d4a4");
35
36 /* (non-Javadoc)
37 * @see eu.etaxonomy.cdm.strategy.StrategyBase#getUuid()
38 */
39 @Override
40 protected UUID getUuid() {
41 return uuid;
42 }
43
44 private boolean includeEmptySeconds = false;
45 private boolean includeReferenceSystem = true;
46
47
48 /* (non-Javadoc)
49 * @see eu.etaxonomy.cdm.strategy.cache.common.IIdentifiableEntityCacheStrategy#getTitleCache(eu.etaxonomy.cdm.model.common.IdentifiableEntity)
50 */
51 @Override
52 public String getTitleCache(DerivedUnit derivedUnit) {
53 DerivedUnitFacadeFieldUnitCacheStrategy fieldStrategy = new DerivedUnitFacadeFieldUnitCacheStrategy();
54
55 String result = "";
56
57 DerivedUnitFacade facade;
58 try {
59 DerivedUnitFacadeConfigurator config = DerivedUnitFacadeConfigurator.NewInstance();
60 config.setFirePropertyChangeEvents(false);
61 facade = DerivedUnitFacade.NewInstance(derivedUnit, config);
62 result += fieldStrategy.getFieldData(facade);
63
64 //Exsiccatum
65 String exsiccatum = null;
66 try {
67 exsiccatum = facade.getExsiccatum();
68 } catch (MethodNotSupportedByDerivedUnitTypeException e) {
69 //NO exsiccatum if this facade doe not represent a specimen
70 }
71 result = CdmUtils.concat("; ", result, exsiccatum);
72
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();
78 }
79
80 //result
81 result = fieldStrategy.addPlantDescription(result, facade);
82
83
84 } catch (DerivedUnitFacadeNotSupportedException e) {
85 e.printStackTrace();
86 }
87
88
89 return result;
90 }
91
92
93 /**
94 * @param facade
95 */
96 private String getCode(DerivedUnitFacade facade) {
97 String code = "";
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();
104 }
105 if (StringUtils.isBlank(code)){
106 Collection superCollection = facade.getCollection().getSuperCollection();
107 if (superCollection != null){
108 code = superCollection.getCode();
109 }
110 }
111 }
112 }
113 return code;
114 }
115
116 // ************************** GETTER / SETTER ******************************************************
117
118 public boolean isIncludeSeconds() {
119 return includeEmptySeconds;
120 }
121
122
123
124 public void setIncludeSeconds(boolean includeSeconds) {
125 this.includeEmptySeconds = includeSeconds;
126 }
127
128
129
130 public void setIncludeReferenceSystem(boolean includeReferenceSystem) {
131 this.includeReferenceSystem = includeReferenceSystem;
132 }
133
134
135
136 public boolean isIncludeReferenceSystem() {
137 return includeReferenceSystem;
138 }
139
140
141 }