add generic config to ExcelImportState
[cdmlib.git] / cdmlib-io / src / main / java / eu / etaxonomy / cdm / io / common / ImportHelper.java
index 6ce6772639c95fbd2e74a00136d0d8d92dc57e04..ba1c1bf8cf1e279580da2e0692958247e7989e5b 100644 (file)
@@ -20,15 +20,19 @@ import org.jdom.Element;
 import org.jdom.Namespace;\r
 \r
 import eu.etaxonomy.cdm.common.CdmUtils;\r
+import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;\r
 import eu.etaxonomy.cdm.model.common.AnnotatableEntity;\r
 import eu.etaxonomy.cdm.model.common.Annotation;\r
 import eu.etaxonomy.cdm.model.common.CdmBase;\r
+import eu.etaxonomy.cdm.model.common.DescriptionElementSource;\r
+import eu.etaxonomy.cdm.model.common.IOriginalSource;\r
 import eu.etaxonomy.cdm.model.common.ISourceable;\r
 import eu.etaxonomy.cdm.model.common.IdentifiableEntity;\r
 import eu.etaxonomy.cdm.model.common.IdentifiableSource;\r
 import eu.etaxonomy.cdm.model.common.Language;\r
 import eu.etaxonomy.cdm.model.common.TimePeriod;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.description.DescriptionElementBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
 /**\r
  * @author a.mueller\r
  *\r
@@ -44,7 +48,7 @@ public class ImportHelper {
        \r
        \r
 \r
-       public static boolean setOriginalSource(IdentifiableEntity idEntity, ReferenceBase sourceReference, long sourceId, String namespace){\r
+       public static boolean setOriginalSource(IdentifiableEntity idEntity, Reference sourceReference, long sourceId, String namespace){\r
                return setOriginalSource(idEntity, sourceReference, String.valueOf(sourceId), namespace);\r
        }\r
        \r
@@ -55,13 +59,19 @@ public class ImportHelper {
         * @param sourceId\r
         * @return\r
         */\r
-       public static boolean setOriginalSource(ISourceable idEntity, ReferenceBase sourceReference, String sourceId, String namespace){\r
-               IdentifiableSource originalSource = IdentifiableSource.NewInstance(sourceId, namespace, sourceReference, null);\r
-               idEntity.addSource(originalSource);\r
+       public static boolean setOriginalSource(ISourceable sourceable, Reference sourceReference, String sourceId, String namespace){\r
+               IOriginalSource originalSource;\r
+               if (HibernateProxyHelper.isInstanceOf(sourceable, IdentifiableEntity.class)){\r
+                       originalSource = IdentifiableSource.NewInstance(sourceId, namespace, sourceReference, null);\r
+               }else if (HibernateProxyHelper.isInstanceOf(sourceable, DescriptionElementBase.class)){\r
+                       originalSource = DescriptionElementSource.NewInstance(sourceId, namespace, sourceReference, null);\r
+               }else{\r
+                       throw new ClassCastException("Unknown implementing class for ISourceable "+ sourceable.getClass() + " . Not supported bei ImportHelper.");\r
+               }\r
+               sourceable.addSource(originalSource);\r
                return true;\r
        }\r
        \r
-       \r
        public static boolean addStringValue(ResultSet rs, CdmBase cdmBase, String dbAttrName, String cdmAttrName){\r
                return addValue(rs, cdmBase, dbAttrName, cdmAttrName, String.class, OVERWRITE);\r
        }\r
@@ -151,7 +161,7 @@ public class ImportHelper {
        }\r
 \r
        /**\r
-        * @param clazz\r
+        * @param clazz either boolean or other class (for boolean the naming strategy is different !)\r
         * @param cdmAttrName \r
         * @return\r
 //      * @throws IllegalArgumentException if a clazz is not yet supported\r