(no commit message)
[cdmlib.git] / cdmlib-services / src / main / java / eu / etaxonomy / cdm / api / facade / DerivedUnitFacadeCacheStrategy.java
index 6b794f4958d9da62acb6f7b61454a71178f77d09..6a7dd7955643b7c5c50adb75b9ca6a9fd8573155 100644 (file)
@@ -11,16 +11,13 @@ package eu.etaxonomy.cdm.api.facade;
 \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
@@ -29,7 +26,7 @@ import eu.etaxonomy.cdm.strategy.cache.common.IIdentifiableEntityCacheStrategy;
  * @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
@@ -52,60 +49,37 @@ public class DerivedUnitFacadeCacheStrategy extends StrategyBase implements IIde
         * @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
@@ -116,7 +90,6 @@ public class DerivedUnitFacadeCacheStrategy extends StrategyBase implements IIde
        }\r
 \r
 \r
-\r
        /**\r
         * @param facade\r
         */\r
@@ -124,12 +97,12 @@ public class DerivedUnitFacadeCacheStrategy extends StrategyBase implements IIde
                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