+/**\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