ref #8124: adapt TaxonNameDescriptionDefaultCacheStrategy
[cdmlib.git] / cdmlib-model / src / main / java / eu / etaxonomy / cdm / strategy / StrategyBase.java
index cc9c276f5ae2d80d825f97ccfbb2edf650fe7adc..02ca3f287111dc6875061d8a25bb729b692c9ae2 100644 (file)
+/**\r
+* Copyright (C) 2009 EDIT\r
+* European Distributed Institute of Taxonomy\r
+* http://www.e-taxonomy.eu\r
+*\r
+* The contents of this file are subject to the Mozilla Public License Version 1.1\r
+* See LICENSE.TXT at the top of this package for the full license terms.\r
+*/\r
+\r
 package eu.etaxonomy.cdm.strategy;\r
 \r
+import java.io.Serializable;\r
+import java.net.URI;\r
+import java.util.Collection;\r
 import java.util.UUID;\r
 \r
+import org.apache.commons.lang.StringUtils;\r
 import org.apache.log4j.Logger;\r
+import org.joda.time.DateTime;\r
+\r
+import eu.etaxonomy.cdm.common.CdmUtils;\r
+import eu.etaxonomy.cdm.common.DOI;\r
+import eu.etaxonomy.cdm.model.agent.Contact;\r
+import eu.etaxonomy.cdm.model.common.CdmBase;\r
+import eu.etaxonomy.cdm.model.common.LSID;\r
+import eu.etaxonomy.cdm.model.common.TimePeriod;\r
+import eu.etaxonomy.cdm.model.common.VerbatimTimePeriod;\r
 \r
 \r
-public abstract class StrategyBase implements IStrategy {\r
+public abstract class StrategyBase implements IStrategy, Serializable {\r
+       private static final long serialVersionUID = -274791080847215663L;\r
        @SuppressWarnings("unused")\r
        private static final Logger logger = Logger.getLogger(StrategyBase.class);\r
-       \r
-       final static UUID uuid = UUID.fromString("2ff2b1d6-17a6-4807-a55f-f6b45bf429b7");\r
 \r
        abstract protected UUID getUuid();\r
-       \r
-       //protected VersionableEntity strategyObject;\r
-       \r
-       //make use of NewInstance() instead of Constructor\r
-       protected StrategyBase(){\r
+\r
+// ************************** CONSTRUCTOR ********************************/\r
+\r
+       protected StrategyBase(){}\r
+\r
+// ************************* METHODS  ****************************************/\r
+       /**\r
+        * @param fieldType\r
+        * @return\r
+        */\r
+       protected static boolean isCollection(Class<?> fieldType) {\r
+               if (Collection.class.isAssignableFrom(fieldType) ){\r
+                       return true;\r
+               }else{\r
+                       return false;\r
+               }\r
+       }\r
+\r
+       /**\r
+        * @param fieldType\r
+        * @return\r
+        */\r
+       protected boolean isPrimitive(Class<?> fieldType) {\r
+               if (fieldType.isPrimitive()){\r
+                       return true;\r
+               }else{\r
+                       return false;\r
+               }\r
+       }\r
+\r
+       /**\r
+        * @param fieldType\r
+        * @return\r
+        */\r
+       protected boolean isSingleCdmBaseObject(Class<?> fieldType) {\r
+               if (CdmBase.class.isAssignableFrom(fieldType)){\r
+                       return true;\r
+               }else{\r
+                       return false;\r
+               }\r
        }\r
-       \r
-       /*\r
-       @Override\r
-       public void setStrategyObject(Object versionableEntity) {\r
-               this.strategyObject = (VersionableEntity)versionableEntity;\r
+\r
+       /**\r
+        * @param fieldType\r
+        * @return\r
+        */\r
+       protected boolean isUserType(Class<?> fieldType) {\r
+               if (    fieldType == TimePeriod.class ||\r
+                       fieldType == VerbatimTimePeriod.class ||\r
+                fieldType == DateTime.class ||\r
+                               fieldType == LSID.class ||\r
+                               fieldType == Contact.class ||\r
+                               fieldType == URI.class ||\r
+                               fieldType == DOI.class\r
+                       ){\r
+                               return true;\r
+               }else{\r
+                       return false;\r
+               }\r
        }\r
-       */\r
+\r
+\r
+       /**\r
+        * Null safe string. Returns the given string if it is not <code>null</code>.\r
+        * Empty string otherwise.\r
+        * @see CdmUtils#Nz(String)\r
+        * @return the null-safe string\r
+        */\r
+       protected String Nz(String str){\r
+               return CdmUtils.Nz(str);\r
+       }\r
+\r
+       /**\r
+        * Checks if a string is not blank.\r
+        * @see StringUtils#isNotBlank(String)\r
+        */\r
+       protected boolean isNotBlank(String str){\r
+               return StringUtils.isNotBlank(str);\r
+       }\r
+\r
+       /**\r
+        * Checks if a string is blank.\r
+        * @see StringUtils#isNotBlank(String)\r
+        */\r
+       protected boolean isBlank(String str){\r
+               return StringUtils.isBlank(str);\r
+       }\r
+\r
 }\r