\r
import java.util.UUID;\r
\r
+import org.apache.commons.lang.StringUtils;\r
import org.apache.log4j.Logger;\r
\r
import eu.etaxonomy.cdm.common.CdmUtils;\r
import eu.etaxonomy.cdm.model.agent.Institution;\r
-import eu.etaxonomy.cdm.model.common.Language;\r
-import eu.etaxonomy.cdm.model.common.Representation;\r
-import eu.etaxonomy.cdm.model.common.TimePeriod;\r
-import eu.etaxonomy.cdm.model.location.NamedArea;\r
import eu.etaxonomy.cdm.model.occurrence.Collection;\r
-import eu.etaxonomy.cdm.model.occurrence.DerivedUnitBase;\r
+import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;\r
import eu.etaxonomy.cdm.strategy.StrategyBase;\r
import eu.etaxonomy.cdm.strategy.cache.common.IIdentifiableEntityCacheStrategy;\r
\r
* @date 03.06.2010\r
*\r
*/\r
-public class DerivedUnitFacadeCacheStrategy extends StrategyBase implements IIdentifiableEntityCacheStrategy<DerivedUnitBase> {\r
+public class DerivedUnitFacadeCacheStrategy extends StrategyBase implements IIdentifiableEntityCacheStrategy<DerivedUnit> {\r
private static final long serialVersionUID = 1578628591216605619L;\r
@SuppressWarnings("unused")\r
private static final Logger logger = Logger.getLogger(DerivedUnitFacadeCacheStrategy.class);\r
* @see eu.etaxonomy.cdm.strategy.cache.common.IIdentifiableEntityCacheStrategy#getTitleCache(eu.etaxonomy.cdm.model.common.IdentifiableEntity)\r
*/\r
@Override\r
- public String getTitleCache(DerivedUnitBase derivedUnit) {\r
- String ALTITUDE_PREFIX = "alt. ";\r
- String ALTITUDE_POSTFIX = " m";\r
- \r
+ public String getTitleCache(DerivedUnit derivedUnit) {\r
+ DerivedUnitFacadeFieldUnitCacheStrategy fieldStrategy = new DerivedUnitFacadeFieldUnitCacheStrategy();\r
+\r
String result = "";\r
\r
DerivedUnitFacade facade;\r
try {\r
- facade = DerivedUnitFacade.NewInstance(derivedUnit);\r
- //country\r
- String strCountry = null;\r
- NamedArea country = facade.getCountry();\r
- Representation repCountry = country == null ? null : country.getRepresentation(Language.DEFAULT());\r
- //TODO currently the label is the 3 digit representation of the country and text is the full text.\r
- //this is against the common way of handling text, label and labelabbrev in defined terms\r
- strCountry = repCountry == null ? null: repCountry.getText();\r
- result = CdmUtils.concat(", ", result, strCountry);\r
- \r
- // FIXME hasGatheringEvent needed;\r
- //locality\r
- result = CdmUtils.concat(", ", result, facade.getLocalityText());\r
- \r
- //elevation\r
- if (facade.getAbsoluteElevation() != null){\r
- result = CdmUtils.concat(", " , result, ALTITUDE_PREFIX);\r
- result += facade.getAbsoluteElevation() + ALTITUDE_POSTFIX;\r
- }\r
+ DerivedUnitFacadeConfigurator config = DerivedUnitFacadeConfigurator.NewInstance();\r
+ config.setFirePropertyChangeEvents(false);\r
+ facade = DerivedUnitFacade.NewInstance(derivedUnit, config);\r
+ result += fieldStrategy.getFieldData(facade);\r
\r
- //exact locality\r
- if (facade.getExactLocation() != null){\r
- String exactLocation = facade.getExactLocation().toSexagesimalString(this.includeEmptySeconds, this.includeReferenceSystem);\r
- result = CdmUtils.concat(", ", result, exactLocation);\r
+ //Exsiccatum\r
+ String exsiccatum = null;\r
+ try {\r
+ exsiccatum = facade.getExsiccatum();\r
+ } catch (MethodNotSupportedByDerivedUnitTypeException e) {\r
+ //NO exsiccatum if this facade doe not represent a specimen\r
}\r
- \r
- //ecology\r
- result = CdmUtils.concat(", ", result, facade.getEcology());\r
- \r
- //gathering period\r
- //TODO period.toString ??\r
- TimePeriod gatheringPeriod = facade.getGatheringPeriod();\r
- result = CdmUtils.concat(", ", result, (gatheringPeriod == null? null : gatheringPeriod.toString()));\r
+ result = CdmUtils.concat("; ", result, exsiccatum);\r
\r
//Herbarium & accession number\r
String code = getCode(facade);\r
String collectionData = CdmUtils.concat(" ", code, facade.getAccessionNumber());\r
- if (CdmUtils.isNotEmpty(collectionData)) {\r
+ if (StringUtils.isNotBlank(collectionData)) {\r
result = (result + " (" + collectionData + ")").trim();\r
}\r
\r
- //plant description\r
- result = CdmUtils.concat("; ", result, facade.getPlantDescription());\r
- if (CdmUtils.isNotEmpty(result)){\r
- result += ".";\r
- }\r
+ //result\r
+ result = fieldStrategy.addPlantDescription(result, facade);\r
+\r
\r
} catch (DerivedUnitFacadeNotSupportedException e) {\r
e.printStackTrace();\r
}\r
\r
\r
-\r
/**\r
* @param facade\r
*/\r
String code = "";\r
if(facade.getCollection() != null){ \r
code = facade.getCollection().getCode();\r
- if (CdmUtils.isEmpty(code)){\r
+ if (StringUtils.isBlank(code)){\r
Institution institution = facade.getCollection().getInstitute();\r
if (institution != null){\r
code = institution.getCode();\r
}\r
- if (CdmUtils.isEmpty(code)){\r
+ if (StringUtils.isBlank(code)){\r
Collection superCollection = facade.getCollection().getSuperCollection();\r
if (superCollection != null){\r
code = superCollection.getCode();\r