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;
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();
}
......
......@@ -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();
}
}
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