Project

General

Profile

Download (3.59 KB) Statistics
| Branch: | Tag: | Revision:
1
/**
2
* Copyright (C) 2009 EDIT
3
* European Distributed Institute of Taxonomy
4
* http://www.e-taxonomy.eu
5
*
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.
8
*/
9
package eu.etaxonomy.cdm.api.facade;
10

    
11
import java.util.UUID;
12

    
13
import org.apache.commons.lang.StringUtils;
14
import org.apache.log4j.Logger;
15

    
16
import eu.etaxonomy.cdm.common.CdmUtils;
17
import eu.etaxonomy.cdm.model.agent.Institution;
18
import eu.etaxonomy.cdm.model.occurrence.Collection;
19
import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
20
import eu.etaxonomy.cdm.strategy.StrategyBase;
21
import eu.etaxonomy.cdm.strategy.cache.common.IIdentifiableEntityCacheStrategy;
22

    
23
/**
24
 * @author a.mueller
25
 * @date 03.06.2010
26
 *
27
 */
28
public class DerivedUnitFacadeCacheStrategy extends StrategyBase implements IIdentifiableEntityCacheStrategy<DerivedUnit> {
29
	private static final long serialVersionUID = 1578628591216605619L;
30
	@SuppressWarnings("unused")
31
	private static final Logger logger = Logger.getLogger(DerivedUnitFacadeCacheStrategy.class);
32

    
33
	private static final UUID uuid = UUID.fromString("df4672c1-ce5c-4724-af6d-91e2b326d4a4");
34

    
35
	@Override
36
	protected UUID getUuid() {
37
		return uuid;
38
	}
39

    
40
	private boolean includeEmptySeconds = false;
41
	private boolean includeReferenceSystem = true;
42

    
43

    
44
	@Override
45
	public String getTitleCache(DerivedUnit derivedUnit) {
46
		DerivedUnitFacadeFieldUnitCacheStrategy fieldStrategy = new DerivedUnitFacadeFieldUnitCacheStrategy();
47

    
48
		String result = "";
49

    
50
		DerivedUnitFacade facade;
51
		try {
52
			DerivedUnitFacadeConfigurator config = DerivedUnitFacadeConfigurator.NewInstance();
53
			config.setFirePropertyChangeEvents(false);
54
			facade = DerivedUnitFacade.NewInstance(derivedUnit, config);
55
			result += fieldStrategy.getFieldData(facade);
56

    
57
			//Exsiccatum
58
			String exsiccatum = null;
59
			try {
60
				exsiccatum = facade.getExsiccatum();
61
			} catch (MethodNotSupportedByDerivedUnitTypeException e) {
62
				//NO exsiccatum if this facade doe not represent a specimen
63
			}
64
			result = CdmUtils.concat("; ", result, exsiccatum);
65

    
66
			//Herbarium & identifier
67
			String code = getCode(facade);
68
			String identifier = facade.getAccessionNumber();
69
            String collectionData = CdmUtils.concat(" ", code, identifier);
70
			if (StringUtils.isNotBlank(collectionData)) {
71
				result = (result + " (" +  collectionData + ")").trim();
72
			}
73

    
74
			//result
75
			result = fieldStrategy.addPlantDescription(result, facade);
76

    
77

    
78
		} catch (DerivedUnitFacadeNotSupportedException e) {
79
			e.printStackTrace();
80
		}
81

    
82

    
83
		return result;
84
	}
85

    
86

    
87
	/**
88
	 * @param facade
89
	 */
90
	private String getCode(DerivedUnitFacade facade) {
91
		String code = "";
92
		if(facade.getCollection() != null){
93
			code = facade.getCollection().getCode();
94
			if (StringUtils.isBlank(code)){
95
				Institution institution = facade.getCollection().getInstitute();
96
				if (institution != null){
97
					code = institution.getCode();
98
				}
99
				if (StringUtils.isBlank(code)){
100
					Collection superCollection = facade.getCollection().getSuperCollection();
101
					if (superCollection != null){
102
						code = superCollection.getCode();
103
					}
104
				}
105
			}
106
		}
107
		return code;
108
	}
109

    
110
// ************************** GETTER / SETTER ******************************************************
111

    
112
	public boolean isIncludeSeconds() {
113
		return includeEmptySeconds;
114
	}
115

    
116
	public void setIncludeSeconds(boolean includeSeconds) {
117
		this.includeEmptySeconds = includeSeconds;
118
	}
119

    
120
	public void setIncludeReferenceSystem(boolean includeReferenceSystem) {
121
		this.includeReferenceSystem = includeReferenceSystem;
122
	}
123

    
124
	public boolean isIncludeReferenceSystem() {
125
		return includeReferenceSystem;
126
	}
127

    
128
}
(2-2/6)