From 384a260af7d42b7c66bd502e37eedfbb3131abee Mon Sep 17 00:00:00 2001
From: felmer <felmer>
Date: Wed, 9 Sep 2009 10:03:59 +0000
Subject: [PATCH] SE-137 Do data set uploading to result database in
 StorageProcessorWithResultDataSetUpLoader

SVN: 12529
---
 .../phosphonetx/AbundanceHandler.java         |  2 +-
 ...taSetHandler.java => ProtXMLUploader.java} | 43 +++----------------
 ...ageProcessorWithResultDataSetUploader.java | 43 +++++++++++++++++++
 3 files changed, 50 insertions(+), 38 deletions(-)
 rename rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/phosphonetx/{ResultDataSetHandler.java => ProtXMLUploader.java} (67%)
 create mode 100644 rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/phosphonetx/StorageProcessorWithResultDataSetUploader.java

diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/phosphonetx/AbundanceHandler.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/phosphonetx/AbundanceHandler.java
index 095ea00d214..a6390d17268 100644
--- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/phosphonetx/AbundanceHandler.java
+++ b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/phosphonetx/AbundanceHandler.java
@@ -66,7 +66,7 @@ class AbundanceHandler extends AbstractHandler
 
     void addAbundancesToDatabase(Parameter parameter, long proteinID, String proteinName)
     {
-        Sample sample = getOrCreateSample(parameter.getName().toUpperCase(), proteinName);
+        Sample sample = getOrCreateSample(parameter.getName(), proteinName);
         try
         {
             dao
diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/phosphonetx/ResultDataSetHandler.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/phosphonetx/ProtXMLUploader.java
similarity index 67%
rename from rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/phosphonetx/ResultDataSetHandler.java
rename to rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/phosphonetx/ProtXMLUploader.java
index 94e6802c8dc..559aeb63029 100644
--- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/phosphonetx/ResultDataSetHandler.java
+++ b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/phosphonetx/ProtXMLUploader.java
@@ -19,7 +19,6 @@ package ch.systemsx.cisd.openbis.etlserver.phosphonetx;
 import java.io.File;
 import java.sql.Connection;
 import java.sql.SQLException;
-import java.util.List;
 import java.util.Properties;
 
 import javax.sql.DataSource;
@@ -27,13 +26,11 @@ import javax.sql.DataSource;
 import org.apache.log4j.Logger;
 
 import ch.systemsx.cisd.base.exceptions.CheckedExceptionTunnel;
-import ch.systemsx.cisd.common.exceptions.ConfigurationFailureException;
 import ch.systemsx.cisd.common.logging.LogCategory;
 import ch.systemsx.cisd.common.logging.LogFactory;
-import ch.systemsx.cisd.common.utilities.ExtendedProperties;
 import ch.systemsx.cisd.common.utilities.PropertyUtils;
 import ch.systemsx.cisd.dbmigration.DatabaseConfigurationContext;
-import ch.systemsx.cisd.etlserver.IDataSetHandler;
+import ch.systemsx.cisd.etlserver.IDataSetUploader;
 import ch.systemsx.cisd.openbis.dss.generic.shared.IEncapsulatedOpenBISService;
 import ch.systemsx.cisd.openbis.dss.generic.shared.dto.DataSetInformation;
 import ch.systemsx.cisd.openbis.etlserver.phosphonetx.dto.ProteinSummary;
@@ -41,7 +38,7 @@ import ch.systemsx.cisd.openbis.etlserver.phosphonetx.dto.ProteinSummary;
 /**
  * @author Franz-Josef Elmer
  */
-public class ResultDataSetHandler implements IDataSetHandler
+public class ProtXMLUploader implements IDataSetUploader
 {
     private static final String DATABASE_ENGINE = "database.engine";
 
@@ -56,7 +53,7 @@ public class ResultDataSetHandler implements IDataSetHandler
     private static final String DATABASE_PASSWORD = "database.password";
 
     private static final Logger operationLog =
-            LogFactory.getLogger(LogCategory.OPERATION, ResultDataSetHandler.class);
+            LogFactory.getLogger(LogCategory.OPERATION, ProtXMLUploader.class);
 
     private static DataSource createDataSource(Properties properties)
     {
@@ -70,26 +67,20 @@ public class ResultDataSetHandler implements IDataSetHandler
         return context.getDataSource();
     }
 
-    private final IDataSetHandler delegator;
-
     private final ProtXMLLoader loader;
 
     private final IEncapsulatedOpenBISService openbisService;
 
     private final DataSource dataSource;
 
-    public ResultDataSetHandler(Properties properties, IDataSetHandler delegator,
-            IEncapsulatedOpenBISService openbisService)
+    public ProtXMLUploader(Properties properties, IEncapsulatedOpenBISService openbisService)
     {
-        dataSource =
-                createDataSource(ExtendedProperties.getSubset(properties,
-                        IDataSetHandler.DATASET_HANDLER_KEY + '.', true));
-        this.delegator = delegator;
+        dataSource = createDataSource(properties);
         this.openbisService = openbisService;
         loader = new ProtXMLLoader();
     }
 
-    public List<DataSetInformation> handleDataSet(File dataSet)
+    public void upload(File dataSet, DataSetInformation dataSetInformation)
     {
         long time = System.currentTimeMillis();
         ProteinSummary summary = loader.readProtXML(dataSet);
@@ -100,25 +91,6 @@ public class ResultDataSetHandler implements IDataSetHandler
                     + (System.currentTimeMillis() - time) + " msec");
         }
         time = System.currentTimeMillis();
-        List<DataSetInformation> dataSets = delegator.handleDataSet(dataSet);
-        if (dataSets.isEmpty())
-        {
-            throw new ConfigurationFailureException(
-                    "Data set not registered due to some error. See error folder in data store.");
-        }
-        if (dataSets.size() != 1)
-        {
-            throw new ConfigurationFailureException(dataSets.size() + " data set registered: "
-                    + "Only data set handlers (like the primary one) "
-                    + "registering exactly one data set are allowed.");
-        }
-        DataSetInformation dataSetInformation = dataSets.get(0);
-        if (operationLog.isInfoEnabled())
-        {
-            operationLog.info("Registration at openBIS took " + (System.currentTimeMillis() - time)
-                    + " msec: " + dataSetInformation);
-        }
-        time = System.currentTimeMillis();
         Connection connection;
         try
         {
@@ -129,15 +101,12 @@ public class ResultDataSetHandler implements IDataSetHandler
             throw CheckedExceptionTunnel.wrapIfNecessary(ex);
         }
         ResultDataSetUploader upLoader = new ResultDataSetUploader(connection, openbisService);
-        // TODO 2009-08-11, Tomasz Pylak: if the uploader fails, the dataset handling by the
-        // delegator should be rollbacked (or maybe xml upload should be the first phase?)
         upLoader.upload(dataSetInformation, summary);
         if (operationLog.isInfoEnabled())
         {
             operationLog.info("Feeding result database took " + (System.currentTimeMillis() - time)
                     + " msec.");
         }
-        return dataSets;
     }
 
 }
diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/phosphonetx/StorageProcessorWithResultDataSetUploader.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/phosphonetx/StorageProcessorWithResultDataSetUploader.java
new file mode 100644
index 00000000000..3d66c964caf
--- /dev/null
+++ b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/phosphonetx/StorageProcessorWithResultDataSetUploader.java
@@ -0,0 +1,43 @@
+/*
+ * Copyright 2009 ETH Zuerich, CISD
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package ch.systemsx.cisd.openbis.etlserver.phosphonetx;
+
+import java.io.File;
+import java.util.Properties;
+
+import ch.systemsx.cisd.etlserver.AbstractStrorageProcessorWithUploader;
+import ch.systemsx.cisd.openbis.dss.generic.shared.ServiceProvider;
+
+/**
+ * 
+ *
+ * @author Franz-Josef Elmer
+ */
+public class StorageProcessorWithResultDataSetUploader extends AbstractStrorageProcessorWithUploader
+{
+
+    public StorageProcessorWithResultDataSetUploader(Properties properties)
+    {
+        super(properties, new ProtXMLUploader(properties, ServiceProvider.getOpenBISService()));
+    }
+
+    @Override
+    protected void logDataSetFileError(File incomingDataSetDirectory, Throwable exception)
+    {
+    }
+
+}
-- 
GitLab