(no commit message)
[cdmlib.git] / cdmlib-services / src / main / java / eu / etaxonomy / cdm / api / facade / DerivedUnitFacadeCacheStrategy.java
index 974ca91c6893f4dc0da3305dd4a66b5a19226bcc..6a7dd7955643b7c5c50adb75b9ca6a9fd8573155 100644 (file)
@@ -11,13 +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.occurrence.Collection;\r
-import eu.etaxonomy.cdm.model.occurrence.DerivedUnitBase;\r
-import eu.etaxonomy.cdm.model.occurrence.Specimen;\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
@@ -26,14 +26,13 @@ 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
 \r
        private static final UUID uuid = UUID.fromString("df4672c1-ce5c-4724-af6d-91e2b326d4a4");\r
        \r
-       \r
        /* (non-Javadoc)\r
         * @see eu.etaxonomy.cdm.strategy.StrategyBase#getUuid()\r
         */\r
@@ -41,51 +40,46 @@ public class DerivedUnitFacadeCacheStrategy extends StrategyBase implements IIde
        protected UUID getUuid() {\r
                return uuid;\r
        }\r
-       \r
+\r
+       private boolean includeEmptySeconds = false;\r
+       private boolean includeReferenceSystem = true;\r
        \r
 \r
        /* (non-Javadoc)\r
         * @see eu.etaxonomy.cdm.strategy.cache.common.IIdentifiableEntityCacheStrategy#getTitleCache(eu.etaxonomy.cdm.model.common.IdentifiableEntity)\r
         */\r
        @Override\r
-       public String getTitleCache(DerivedUnitBase specimen) {\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(specimen);\r
-                       //country\r
-                       //TODO\r
+                       DerivedUnitFacadeConfigurator config = DerivedUnitFacadeConfigurator.NewInstance();\r
+                       config.setFirePropertyChangeEvents(false);\r
+                       facade = DerivedUnitFacade.NewInstance(derivedUnit, config);\r
+                       result += fieldStrategy.getFieldData(facade);\r
                        \r
-                       // FIXME hasGatheringEvent needed;\r
-                       //locality\r
-                       result = CdmUtils.concat(", ", result, facade.getLocalityText());\r
-                       //elevation\r
-                       if (facade.getAbsoluteElevation() != null){\r
-                               result = CdmUtils.concat(", " , result, ALTITUDE_PREFIX);\r
-                               result += facade.getAbsoluteElevation() + ALTITUDE_POSTFIX;\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
-                       //ecology\r
-                       result = CdmUtils.concat(", ", result, facade.getEcology());\r
-                       //gathering period\r
-                       //TODO period.toString ??\r
-                       result = CdmUtils.concat(", ", result, facade.getGatheringPeriod().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
@@ -96,26 +90,52 @@ public class DerivedUnitFacadeCacheStrategy extends StrategyBase implements IIde
        }\r
 \r
 \r
-\r
        /**\r
         * @param facade\r
         */\r
        private String getCode(DerivedUnitFacade facade) {\r
-               String code = facade.getCollection().getCode();\r
-               if (CdmUtils.isEmpty(code)){\r
-                       Institution institution = facade.getCollection().getInstitute();\r
-                       if (institution != null){\r
-                               code = institution.getCode();\r
-                       }\r
-                       if (CdmUtils.isEmpty(code)){\r
-                               Collection superCollection = facade.getCollection().getSuperCollection();\r
-                               if (superCollection != null){\r
-                                       code = superCollection.getCode();\r
+               String code = "";\r
+               if(facade.getCollection() != null){                     \r
+                       code = facade.getCollection().getCode();\r
+                       if (StringUtils.isBlank(code)){\r
+                               Institution institution = facade.getCollection().getInstitute();\r
+                               if (institution != null){\r
+                                       code = institution.getCode();\r
+                               }\r
+                               if (StringUtils.isBlank(code)){\r
+                                       Collection superCollection = facade.getCollection().getSuperCollection();\r
+                                       if (superCollection != null){\r
+                                               code = superCollection.getCode();\r
+                                       }\r
                                }\r
                        }\r
-               }\r
+               } \r
                return code;\r
        }\r
+       \r
+// ************************** GETTER / SETTER ******************************************************\r
+       \r
+       public boolean isIncludeSeconds() {\r
+               return includeEmptySeconds;\r
+       }\r
+\r
+\r
+\r
+       public void setIncludeSeconds(boolean includeSeconds) {\r
+               this.includeEmptySeconds = includeSeconds;\r
+       }\r
+\r
+\r
+\r
+       public void setIncludeReferenceSystem(boolean includeReferenceSystem) {\r
+               this.includeReferenceSystem = includeReferenceSystem;\r
+       }\r
+\r
+\r
+\r
+       public boolean isIncludeReferenceSystem() {\r
+               return includeReferenceSystem;\r
+       }\r
 \r
        \r
 }\r