dirty workaround bugfix for #2743
authorAndreas Müller <a.mueller@bgbm.org>
Tue, 24 Jan 2012 14:56:17 +0000 (14:56 +0000)
committerAndreas Müller <a.mueller@bgbm.org>
Tue, 24 Jan 2012 14:56:17 +0000 (14:56 +0000)
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/in/BerlinModelTaxonImport.java

index d37c652b613334e2f7dcacee2612e34f7ecbbbcc..1ecadc4823a9df0757f468bc9c5b15d3fa123bbd 100644 (file)
@@ -23,6 +23,8 @@ import java.util.Map;
 import java.util.Set;\r
 import java.util.UUID;\r
 \r
+import javax.mail.MethodNotSupportedException;\r
+\r
 import org.apache.log4j.Logger;\r
 import org.springframework.stereotype.Component;\r
 \r
@@ -107,13 +109,29 @@ public class BerlinModelTaxonImport  extends BerlinModelImportBase {
         */\r
        @Override\r
        protected String getRecordQuery(BerlinModelImportConfigurator config) {\r
-               String strRecordQuery = \r
-                       " SELECT * " + \r
-                       " FROM PTaxon " +\r
-                       " WHERE ( RIdentifier IN (" + ID_LIST_TOKEN + ") )";\r
+               String sqlSelect = " SELECT pt.*  ";\r
+               String sqlFrom = " FROM PTaxon pt "; \r
+               if (isEuroMed(config) ){\r
+                       sqlFrom = " PTaxon AS p INNER JOIN v_cdm_exp_taxaAll AS em ON p.RIdentifier = em.RIdentifier ";\r
+                       sqlSelect += " , em.MA ";\r
+               }\r
+               \r
+               \r
+               String sqlWhere = " WHERE ( pt.RIdentifier IN (" + ID_LIST_TOKEN + ") )";\r
+               \r
+               String strRecordQuery =sqlSelect + " " + sqlFrom + " " + sqlWhere ;\r
+//                     " SELECT * " + \r
+//                     " FROM PTaxon " + state.getConfig().getTaxonTable();\r
+//                     " WHERE ( RIdentifier IN (" + ID_LIST_TOKEN + ") )";\r
                return strRecordQuery;\r
        }\r
        \r
+       private boolean isEuroMed(BerlinModelImportConfigurator config) {\r
+               return config.getTaxonTable().trim().equals("v_cdm_exp_taxaAll");\r
+       }\r
+\r
+\r
+\r
        /* (non-Javadoc)\r
         * @see eu.etaxonomy.cdm.io.common.CdmIoBase#doCheck(eu.etaxonomy.cdm.io.common.IImportConfigurator)\r
         */\r
@@ -128,6 +146,7 @@ public class BerlinModelTaxonImport  extends BerlinModelImportBase {
         */\r
        public boolean doPartition(ResultSetPartitioner partitioner, BerlinModelImportState state) {\r
                boolean success = true ;\r
+               \r
                BerlinModelImportConfigurator config = state.getConfig();\r
                Set<TaxonBase> taxaToSave = new HashSet<TaxonBase>();\r
                Map<String, TaxonNameBase> taxonNameMap = (Map<String, TaxonNameBase>) partitioner.getObjectMap(BerlinModelTaxonNameImport.NAMESPACE);\r
@@ -136,6 +155,8 @@ public class BerlinModelTaxonImport  extends BerlinModelImportBase {
                \r
                ResultSet rs = partitioner.getResultSet();\r
                try{\r
+                       boolean publishFlagExists = state.getConfig().getSource().checkColumnExists("PTaxon", "PublishFlag");\r
+                       boolean isEuroMed = isEuroMed(state.getConfig());\r
                        while (rs.next()){\r
 \r
                        //      if ((i++ % modCount) == 0 && i!= 1 ){ logger.info("PTaxa handled: " + (i-1));}\r
@@ -233,10 +254,14 @@ public class BerlinModelTaxonImport  extends BerlinModelImportBase {
                                                taxonBase.setUseNameCache(true);\r
                                        }\r
                                        //publisheFlag\r
-                                       boolean publishFlagExists = state.getConfig().getSource().checkColumnExists("PTaxon", "PublishFlag");\r
                                        if (publishFlagExists){\r
                                                Boolean publishFlag = rs.getBoolean("PublishFlag");\r
-                                               if (config.getTaxonPublishMarker().doMark(publishFlag)){\r
+                                               Boolean misapplied = false;\r
+                                               if (isEuroMed){\r
+                                                       misapplied = rs.getBoolean("MA");\r
+                                               }\r
+                                               \r
+                                               if (config.getTaxonPublishMarker().doMark(publishFlag) && ! misapplied){\r
                                                        taxonBase.addMarker(Marker.NewInstance(MarkerType.PUBLISH(), publishFlag));\r
                                                }\r
                                        }\r
@@ -254,6 +279,9 @@ public class BerlinModelTaxonImport  extends BerlinModelImportBase {
                } catch (SQLException e) {\r
                        logger.error("SQLException:" +  e);\r
                        return false;\r
+               } catch (MethodNotSupportedException e) {\r
+                       logger.error("MethodNotSupportedException:" +  e);\r
+                       return false;\r
                }\r
        \r
                        \r