/*
* Copyright (c) 2006-2007 Massachusetts General Hospital
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the i2b2 Software License v1.0
* which accompanies this distribution.
*
* Contributors:
* Rajesh Kuttan
*/
package edu.harvard.i2b2.crc.loader.ejb.fr;
import java.rmi.RemoteException;
import org.apache.axis2.AxisFault;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import edu.harvard.i2b2.common.exception.I2B2Exception;
import edu.harvard.i2b2.common.util.jaxb.JAXBUtilException;
import edu.harvard.i2b2.crc.datavo.i2b2message.SecurityType;
import edu.harvard.i2b2.crc.loader.datavo.loader.query.DataListType;
import edu.harvard.i2b2.crc.loader.delegate.fr.CallFileRepositoryUtil;
import edu.harvard.i2b2.crc.loader.delegate.fr.FileRepositoryServiceClient;
import edu.harvard.i2b2.crc.loader.util.FileTransferUtil;
/**
* This is the PDO Query ejb class. It passes pdo query request's to the
* appropriate dao classes to get response in pdo format.
*
* @ejb.bean description="FR bean" display-name="FR Bean"
* jndi-name="ejb.crc.loader.FRBean"
* local-jndi-name="ejb.crc.loader.FRBeanLocal"
* name="ejb.crc.loader.frbean" type="Stateless" view-type="both"
* transaction-type="Bean"
*
* @ejb.interface remote-class="edu.harvard.i2b2.crc.loader.ejb.fr.FRBeanRemote"
*
* @author rkuttan
*/
public class FRBean {
// RunQuery
/** log **/
protected final Log log = LogFactory.getLog(getClass());
/**
* Function to get plain pdo from the given pdo request
* @throws AxisFault
* @throws JAXBUtilException
*
* @ejb.interface-method view-type="both"
* @ejb.transaction type="Required"
*/
public String createClient(int uploadId, DataListType dataListType,
SecurityType securityType, String projectId,
String fileSystemDefaultStorageResource) throws I2B2Exception, AxisFault, JAXBUtilException {
FileRepositoryServiceClient.getServiceClient();
return createLocalFile(uploadId, dataListType, securityType, projectId,
fileSystemDefaultStorageResource);
}
private String createLocalFile(int uploadId, DataListType dataListType,
SecurityType securityType, String projectId,
String fileSystemDefaultStorageResource) throws I2B2Exception, AxisFault, JAXBUtilException {
String localUploadFile = null;
String uploadRemoteFileProtocol = dataListType.getLocationUri()
.getProtocolName();
String uploadRemoteFileLocation = dataListType.getLocationUri()
.getValue();
if (uploadRemoteFileProtocol != null
&& uploadRemoteFileProtocol.equalsIgnoreCase("irod")) {
FileTransferUtil ftUtil = new FileTransferUtil();
String localDestinationFolder = "/tmp";
System.out.println("uploadRemoteFileLocation"
+ uploadRemoteFileLocation);
System.out.println("fileSystemDefaultStorageResource"
+ fileSystemDefaultStorageResource);
localUploadFile = ftUtil.getFile(uploadRemoteFileLocation,
securityType.getPassword(),
fileSystemDefaultStorageResource, localDestinationFolder);
} else if (uploadRemoteFileProtocol != null
&& uploadRemoteFileProtocol.equalsIgnoreCase("srb")) {
FileTransferUtil ftUtil = new FileTransferUtil();
String localDestinationFolder = "/tmp";
System.out.println("uploadRemoteFileLocation"
+ uploadRemoteFileLocation);
System.out.println("fileSystemDefaultStorageResource"
+ fileSystemDefaultStorageResource);
localUploadFile = ftUtil.getFile(uploadRemoteFileLocation,
securityType.getPassword(),
fileSystemDefaultStorageResource, localDestinationFolder);
} else if (uploadRemoteFileProtocol != null
&& uploadRemoteFileProtocol.equalsIgnoreCase("fr")) {
// call fr util
CallFileRepositoryUtil fileRepUtil = new CallFileRepositoryUtil(
securityType, projectId);
localUploadFile = fileRepUtil.callFileRepository(uploadId,
uploadRemoteFileLocation);
} else {
localUploadFile = uploadRemoteFileLocation;
}
return localUploadFile;
}
}