From c35506b795110d41205c6a73a296c7940177cb0f Mon Sep 17 00:00:00 2001 From: cramakri <cramakri> Date: Tue, 1 Jun 2010 13:06:43 +0000 Subject: [PATCH] LMS-1503 Implementing upload. SVN: 16244 --- .../api/v1/DataSetRegistrationHelper.java | 167 ++++++++++++++++++ .../etlserver/api/v1/PutDataSetExecutor.java | 12 +- .../etlserver/api/v1/PutDataSetService.java | 52 ++++-- 3 files changed, 216 insertions(+), 15 deletions(-) create mode 100644 datastore_server/source/java/ch/systemsx/cisd/etlserver/api/v1/DataSetRegistrationHelper.java diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/api/v1/DataSetRegistrationHelper.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/api/v1/DataSetRegistrationHelper.java new file mode 100644 index 00000000000..469e743854b --- /dev/null +++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/api/v1/DataSetRegistrationHelper.java @@ -0,0 +1,167 @@ +/* + * Copyright 2010 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.etlserver.api.v1; + +import java.io.File; +import java.util.concurrent.locks.Lock; + +import org.apache.log4j.Logger; + +import ch.systemsx.cisd.common.filesystem.FileOperations; +import ch.systemsx.cisd.common.filesystem.IFileOperations; +import ch.systemsx.cisd.common.mail.IMailClient; +import ch.systemsx.cisd.common.utilities.IDelegatedActionWithResult; +import ch.systemsx.cisd.etlserver.DataSetRegistrationAlgorithm; +import ch.systemsx.cisd.etlserver.IDataSetInfoExtractor; +import ch.systemsx.cisd.etlserver.IDataStrategyStore; +import ch.systemsx.cisd.etlserver.IETLServerPlugin; +import ch.systemsx.cisd.etlserver.IStorageProcessor; +import ch.systemsx.cisd.etlserver.ITypeExtractor; +import ch.systemsx.cisd.etlserver.validation.IDataSetValidator; +import ch.systemsx.cisd.openbis.dss.generic.shared.IEncapsulatedOpenBISService; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatabaseInstance; + +/** + * @author Chandrasekhar Ramakrishnan + */ +class DataSetRegistrationHelper extends DataSetRegistrationAlgorithm +{ + + private final PutDataSetService service; + + private final IETLServerPlugin plugin; + + /** + * @param incomingDataSetFile + * @param cleanAftrewardsAction + */ + public DataSetRegistrationHelper(PutDataSetService service, IETLServerPlugin plugin, + File incomingDataSetFile, IDelegatedActionWithResult<Boolean> cleanAftrewardsAction) + { + super(incomingDataSetFile, cleanAftrewardsAction); + this.service = service; + this.plugin = plugin; + } + + @Override + protected IDataSetInfoExtractor getDataSetInfoExtractor() + { + return plugin.getDataSetInfoExtractor(); + } + + @Override + protected IDataSetValidator getDataSetValidator() + { + // TODO Auto-generated method stub + return null; + } + + @Override + protected String getDataStoreCode() + { + // TODO Auto-generated method stub + return null; + } + + @Override + protected IDataStrategyStore getDataStrategyStore() + { + // TODO Auto-generated method stub + return null; + } + + @Override + protected String getEmailSubjectTemplate() + { + // TODO Auto-generated method stub + return null; + } + + @Override + protected IFileOperations getFileOperations() + { + return FileOperations.getMonitoredInstanceForCurrentThread(); + } + + @Override + protected DatabaseInstance getHomeDatabaseInstance() + { + // TODO Auto-generated method stub + return null; + } + + @Override + protected IMailClient getMailClient() + { + return service.getMailClient(); + } + + @Override + protected Logger getNotificationLog() + { + return service.getOperationLog(); + } + + @Override + protected IEncapsulatedOpenBISService getOpenBisService() + { + return service.getOpenBisService(); + } + + @Override + protected Logger getOperationLog() + { + return service.getOperationLog(); + } + + @Override + protected Lock getRegistrationLock() + { + return service.getRegistrationLock(); + } + + @Override + protected IStorageProcessor getStorageProcessor() + { + return plugin.getStorageProcessor(); + } + + @Override + protected ITypeExtractor getTypeExtractor() + { + return plugin.getTypeExtractor(); + } + + @Override + protected void rollback(Throwable ex) + { + rollbackStorageProcessor(ex); + } + + @Override + protected boolean shouldDeleteUnidentified() + { + return true; + } + + @Override + protected boolean shouldNotifySuccessfulRegistration() + { + return false; + } + +} diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/api/v1/PutDataSetExecutor.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/api/v1/PutDataSetExecutor.java index d26d9e13996..7b4f1d761f4 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/api/v1/PutDataSetExecutor.java +++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/api/v1/PutDataSetExecutor.java @@ -30,6 +30,7 @@ import org.apache.log4j.Logger; import ch.systemsx.cisd.common.exceptions.EnvironmentFailureException; import ch.systemsx.cisd.common.exceptions.UserFailureException; import ch.systemsx.cisd.common.io.ConcatenatedFileOutputStreamWriter; +import ch.systemsx.cisd.etlserver.IETLServerPlugin; import ch.systemsx.cisd.openbis.dss.generic.shared.IEncapsulatedOpenBISService; import ch.systemsx.cisd.openbis.dss.generic.shared.api.v1.FileInfoDssDTO; import ch.systemsx.cisd.openbis.dss.generic.shared.api.v1.NewDataSetDTO; @@ -52,6 +53,8 @@ class PutDataSetExecutor private final PutDataSetService service; // Command Context State + private final IETLServerPlugin plugin; + private final String sessionToken; private final NewDataSetDTO newDataSet; @@ -60,10 +63,11 @@ class PutDataSetExecutor private final File dataSetDir; - PutDataSetExecutor(PutDataSetService service, String sessionToken, NewDataSetDTO newDataSet, - InputStream inputStream) + PutDataSetExecutor(PutDataSetService service, IETLServerPlugin plugin, String sessionToken, + NewDataSetDTO newDataSet, InputStream inputStream) { this.service = service; + this.plugin = plugin; this.sessionToken = sessionToken; this.newDataSet = newDataSet; this.inputStream = inputStream; @@ -94,6 +98,10 @@ class PutDataSetExecutor // the space or an ETL server can override. // Register data set + DataSetRegistrationHelper helper = + new DataSetRegistrationHelper(service, plugin, dataSetDir, null); + helper.prepare(); + helper.registerDataSet(); deleteDataSetDir(); } diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/api/v1/PutDataSetService.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/api/v1/PutDataSetService.java index f4cbf273566..3eec8d184b5 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/api/v1/PutDataSetService.java +++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/api/v1/PutDataSetService.java @@ -20,13 +20,18 @@ import java.io.File; import java.io.IOException; import java.io.InputStream; import java.util.Properties; +import java.util.concurrent.locks.Lock; +import java.util.concurrent.locks.ReentrantLock; import org.apache.log4j.Logger; import ch.systemsx.cisd.base.exceptions.IOExceptionUnchecked; import ch.systemsx.cisd.common.exceptions.UserFailureException; import ch.systemsx.cisd.common.mail.MailClient; +import ch.systemsx.cisd.etlserver.DataStrategyStore; +import ch.systemsx.cisd.etlserver.IETLServerPlugin; import ch.systemsx.cisd.etlserver.Parameters; +import ch.systemsx.cisd.etlserver.ThreadParameters; import ch.systemsx.cisd.openbis.dss.generic.shared.IEncapsulatedOpenBISService; import ch.systemsx.cisd.openbis.dss.generic.shared.api.v1.NewDataSetDTO; @@ -40,24 +45,35 @@ public class PutDataSetService { private final IEncapsulatedOpenBISService openBisService; - private final MailClient mailClient; + private final Logger operationLog; - private final File incomingDir; + private final Lock registrationLock; - private final Logger operationLog; + private final DataStrategyStore dataStrategyStore; + + private MailClient mailClient; + + private IETLServerPlugin plugin; + + private File incomingDir; public PutDataSetService(IEncapsulatedOpenBISService openBisService, Logger operationLog) { this.openBisService = openBisService; this.operationLog = operationLog; - PutDataSetServiceInitializer initializer = new PutDataSetServiceInitializer(); + // PutDataSetServiceInitializer initializer = new PutDataSetServiceInitializer(); + // + // incomingDir = initializer.getIncomingDir(); + // incomingDir.mkdir(); + // + // plugin = initializer.getPlugin(); + // + // mailClient = new MailClient(initializer.getMailProperties()); - incomingDir = initializer.getIncomingDir(); - incomingDir.mkdir(); + this.registrationLock = new ReentrantLock(); - // mailClient = new MailClient(initializer.getMailProperties()); - mailClient = null; + this.dataStrategyStore = new DataStrategyStore(this.openBisService, mailClient); } public void putDataSet(String sessionToken, NewDataSetDTO newDataSet, InputStream inputStream) @@ -65,7 +81,7 @@ public class PutDataSetService { try { - new PutDataSetExecutor(this, sessionToken, newDataSet, inputStream).execute(); + new PutDataSetExecutor(this, plugin, sessionToken, newDataSet, inputStream).execute(); } catch (UserFailureException e) { @@ -105,6 +121,17 @@ public class PutDataSetService { return operationLog; } + + public Lock getRegistrationLock() + { + return registrationLock; + } + + public DataStrategyStore getDataStrategyStore() + { + return dataStrategyStore; + } + } /** @@ -131,11 +158,10 @@ class PutDataSetServiceInitializer return Parameters.createMailProperties(params.getProperties()); } - Object getPlugin() + IETLServerPlugin getPlugin() { - // ThreadParameters[] threadParams = params.getThreads(); - // return threadParams[0].getPlugin(); - return null; + ThreadParameters[] threadParams = params.getThreads(); + return threadParams[0].getPlugin(); } } -- GitLab