Skip to content
Snippets Groups Projects
Commit c35506b7 authored by cramakri's avatar cramakri
Browse files

LMS-1503 Implementing upload.

SVN: 16244
parent ecef3957
No related branches found
No related tags found
No related merge requests found
/*
* 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;
}
}
...@@ -30,6 +30,7 @@ import org.apache.log4j.Logger; ...@@ -30,6 +30,7 @@ import org.apache.log4j.Logger;
import ch.systemsx.cisd.common.exceptions.EnvironmentFailureException; import ch.systemsx.cisd.common.exceptions.EnvironmentFailureException;
import ch.systemsx.cisd.common.exceptions.UserFailureException; import ch.systemsx.cisd.common.exceptions.UserFailureException;
import ch.systemsx.cisd.common.io.ConcatenatedFileOutputStreamWriter; 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.IEncapsulatedOpenBISService;
import ch.systemsx.cisd.openbis.dss.generic.shared.api.v1.FileInfoDssDTO; import ch.systemsx.cisd.openbis.dss.generic.shared.api.v1.FileInfoDssDTO;
import ch.systemsx.cisd.openbis.dss.generic.shared.api.v1.NewDataSetDTO; import ch.systemsx.cisd.openbis.dss.generic.shared.api.v1.NewDataSetDTO;
...@@ -52,6 +53,8 @@ class PutDataSetExecutor ...@@ -52,6 +53,8 @@ class PutDataSetExecutor
private final PutDataSetService service; private final PutDataSetService service;
// Command Context State // Command Context State
private final IETLServerPlugin plugin;
private final String sessionToken; private final String sessionToken;
private final NewDataSetDTO newDataSet; private final NewDataSetDTO newDataSet;
...@@ -60,10 +63,11 @@ class PutDataSetExecutor ...@@ -60,10 +63,11 @@ class PutDataSetExecutor
private final File dataSetDir; private final File dataSetDir;
PutDataSetExecutor(PutDataSetService service, String sessionToken, NewDataSetDTO newDataSet, PutDataSetExecutor(PutDataSetService service, IETLServerPlugin plugin, String sessionToken,
InputStream inputStream) NewDataSetDTO newDataSet, InputStream inputStream)
{ {
this.service = service; this.service = service;
this.plugin = plugin;
this.sessionToken = sessionToken; this.sessionToken = sessionToken;
this.newDataSet = newDataSet; this.newDataSet = newDataSet;
this.inputStream = inputStream; this.inputStream = inputStream;
...@@ -94,6 +98,10 @@ class PutDataSetExecutor ...@@ -94,6 +98,10 @@ class PutDataSetExecutor
// the space or an ETL server can override. // the space or an ETL server can override.
// Register data set // Register data set
DataSetRegistrationHelper helper =
new DataSetRegistrationHelper(service, plugin, dataSetDir, null);
helper.prepare();
helper.registerDataSet();
deleteDataSetDir(); deleteDataSetDir();
} }
......
...@@ -20,13 +20,18 @@ import java.io.File; ...@@ -20,13 +20,18 @@ import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.util.Properties; import java.util.Properties;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
import org.apache.log4j.Logger; import org.apache.log4j.Logger;
import ch.systemsx.cisd.base.exceptions.IOExceptionUnchecked; import ch.systemsx.cisd.base.exceptions.IOExceptionUnchecked;
import ch.systemsx.cisd.common.exceptions.UserFailureException; import ch.systemsx.cisd.common.exceptions.UserFailureException;
import ch.systemsx.cisd.common.mail.MailClient; 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.Parameters;
import ch.systemsx.cisd.etlserver.ThreadParameters;
import ch.systemsx.cisd.openbis.dss.generic.shared.IEncapsulatedOpenBISService; import ch.systemsx.cisd.openbis.dss.generic.shared.IEncapsulatedOpenBISService;
import ch.systemsx.cisd.openbis.dss.generic.shared.api.v1.NewDataSetDTO; import ch.systemsx.cisd.openbis.dss.generic.shared.api.v1.NewDataSetDTO;
...@@ -40,24 +45,35 @@ public class PutDataSetService ...@@ -40,24 +45,35 @@ public class PutDataSetService
{ {
private final IEncapsulatedOpenBISService openBisService; 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) public PutDataSetService(IEncapsulatedOpenBISService openBisService, Logger operationLog)
{ {
this.openBisService = openBisService; this.openBisService = openBisService;
this.operationLog = operationLog; 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(); this.registrationLock = new ReentrantLock();
incomingDir.mkdir();
// mailClient = new MailClient(initializer.getMailProperties()); this.dataStrategyStore = new DataStrategyStore(this.openBisService, mailClient);
mailClient = null;
} }
public void putDataSet(String sessionToken, NewDataSetDTO newDataSet, InputStream inputStream) public void putDataSet(String sessionToken, NewDataSetDTO newDataSet, InputStream inputStream)
...@@ -65,7 +81,7 @@ public class PutDataSetService ...@@ -65,7 +81,7 @@ public class PutDataSetService
{ {
try try
{ {
new PutDataSetExecutor(this, sessionToken, newDataSet, inputStream).execute(); new PutDataSetExecutor(this, plugin, sessionToken, newDataSet, inputStream).execute();
} catch (UserFailureException e) } catch (UserFailureException e)
{ {
...@@ -105,6 +121,17 @@ public class PutDataSetService ...@@ -105,6 +121,17 @@ public class PutDataSetService
{ {
return operationLog; return operationLog;
} }
public Lock getRegistrationLock()
{
return registrationLock;
}
public DataStrategyStore getDataStrategyStore()
{
return dataStrategyStore;
}
} }
/** /**
...@@ -131,11 +158,10 @@ class PutDataSetServiceInitializer ...@@ -131,11 +158,10 @@ class PutDataSetServiceInitializer
return Parameters.createMailProperties(params.getProperties()); return Parameters.createMailProperties(params.getProperties());
} }
Object getPlugin() IETLServerPlugin getPlugin()
{ {
// ThreadParameters[] threadParams = params.getThreads(); ThreadParameters[] threadParams = params.getThreads();
// return threadParams[0].getPlugin(); return threadParams[0].getPlugin();
return null;
} }
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment