(no commit message)
[cdmlib.git] / cdmlib-io / src / main / java / eu / etaxonomy / cdm / io / berlinModel / BerlinModelReferenceIO.java
index a31d55712c2d8a3b05792b0f4b3b13bd96326f53..00246e042bf66751e3ed167db915fc6df92855ff 100644 (file)
@@ -11,23 +11,20 @@ import static eu.etaxonomy.cdm.io.berlinModel.BerlinModelTransformer.REF_JOURNAL
 import static eu.etaxonomy.cdm.io.berlinModel.BerlinModelTransformer.REF_PART_OF_OTHER_TITLE;\r
 import static eu.etaxonomy.cdm.io.berlinModel.BerlinModelTransformer.REF_UNKNOWN;\r
 import static eu.etaxonomy.cdm.io.berlinModel.BerlinModelTransformer.REF_WEBSITE;\r
+import static eu.etaxonomy.cdm.io.berlinModel.BerlinModelImportConfigurator.DO_REFERENCES.*;\r
 \r
 import java.sql.ResultSet;\r
 import java.sql.SQLException;\r
 import java.util.ArrayList;\r
 import java.util.Iterator;\r
 import java.util.List;\r
-import java.util.Map;\r
-import java.util.UUID;\r
 \r
 import org.apache.log4j.Logger;\r
 \r
 import eu.etaxonomy.cdm.api.application.CdmApplicationController;\r
 import eu.etaxonomy.cdm.api.service.IReferenceService;\r
 import eu.etaxonomy.cdm.io.source.Source;\r
-import eu.etaxonomy.cdm.model.agent.Agent;\r
-import eu.etaxonomy.cdm.model.common.Annotation;\r
-import eu.etaxonomy.cdm.model.common.Language;\r
+import eu.etaxonomy.cdm.model.agent.Team;\r
 import eu.etaxonomy.cdm.model.reference.Article;\r
 import eu.etaxonomy.cdm.model.reference.Book;\r
 import eu.etaxonomy.cdm.model.reference.BookSection;\r
@@ -46,9 +43,9 @@ public class BerlinModelReferenceIO {
 \r
        private static int modCount = 1000;\r
 \r
-       public static boolean invoke(Source source, CdmApplicationController cdmApp, boolean deleteAll, \r
-                       MapWrapper<ReferenceBase> referenceMap, MapWrapper<Agent> authorMap){\r
-               \r
+       public static boolean invoke(BerlinModelImportConfigurator bmiConfig, CdmApplicationController cdmApp,\r
+                       MapWrapper<ReferenceBase> referenceMap, MapWrapper<Team> authorMap){\r
+               Source source = bmiConfig.getSource();\r
                String dbAttrName;\r
                String cdmAttrName;\r
                boolean success = true;\r
@@ -58,7 +55,7 @@ public class BerlinModelReferenceIO {
                \r
                logger.info("start makeReferences ...");\r
                IReferenceService referenceService = cdmApp.getReferenceService();\r
-               boolean delete = deleteAll;\r
+               boolean delete = bmiConfig.isDeleteAll();\r
 \r
 //             if (delete){\r
 //                     List<TaxonNameBase> listAllReferences =  referenceService.getAllReferences(0, 1000);\r
@@ -85,7 +82,6 @@ public class BerlinModelReferenceIO {
                        //strQueryBase += " AND Reference.refId = 7000000 " ;\r
                        String strQueryNoInRef = strQueryBase + \r
                                " AND (Reference.InRefFk is NULL) ";\r
-\r
                        \r
                        String strQuery1InRef = strQueryBase + \r
                                " AND (Reference.InRefFk is NOT NULL) AND (InReference.InRefFk is NULL) ";\r
@@ -101,11 +97,18 @@ public class BerlinModelReferenceIO {
                                logger.error("Maximum allowed InReference recursions exceeded in Berlin Model. Maximum recursion level is 2.");\r
                                return false;\r
                        }\r
+\r
+                       if (bmiConfig.getDoReferences() == CONCEPT_REFERENCES){\r
+                               strQueryNoInRef += " AND ( Reference.refId IN ( SELECT ptRefFk FROM PTaxon) ) ";\r
+                       }\r
                        \r
                        List<ResultSet> resultSetList = new ArrayList<ResultSet>();\r
                        resultSetList.add(source.getResultSet(strQueryNoInRef));\r
-                       resultSetList.add(source.getResultSet(strQuery1InRef));\r
-                       resultSetList.add(source.getResultSet(strQuery2InRef));\r
+                       if (bmiConfig.getDoReferences() == ALL || bmiConfig.getDoReferences() == NOMENCLATURAL){\r
+                               resultSetList.add(source.getResultSet(strQuery1InRef));\r
+                               resultSetList.add(source.getResultSet(strQuery2InRef));\r
+                       }\r
+                       \r
                        \r
                        int i = 0;\r
                        //for each reference\r
@@ -205,14 +208,10 @@ public class BerlinModelReferenceIO {
                                                \r
                                                dbAttrName = "nomRefCache";\r
                                                cdmAttrName = "titleCache";\r
-                                               success &= ImportHelper.addStringValue(rs, referenceBase, dbAttrName, cdmAttrName);\r
-                                               \r
+                                               success &= ImportHelper.addStringValue(rs, referenceBase, dbAttrName, cdmAttrName, ImportHelper.NO_OVERWRITE);\r
                                                \r
                                                //refId\r
-                                               //TODO\r
-//                                             Annotation annotation = new Annotation("Berlin Model id: " + String.valueOf(refId), Language.DEFAULT());\r
-//                                             referenceBase.addAnnotations(annotation);\r
-                                               //referenceBase.setLsid(String.valueOf(refId));\r
+                                               ImportHelper.setOriginalSource(referenceBase, bmiConfig.getSourceReference(), refId);\r
                                                \r
                                                //      dbAttrName = "BinomHybFlag";\r
                                                //      cdmAttrName = "isBinomHybrid";\r