package edu.harvard.i2b2.crc.loader.delegate;
import java.io.StringWriter;
import edu.harvard.i2b2.common.exception.I2B2Exception;
import edu.harvard.i2b2.common.util.jaxb.JAXBUtil;
import edu.harvard.i2b2.common.util.jaxb.JAXBUtilException;
import edu.harvard.i2b2.crc.loader.datavo.CRCLoaderJAXBUtil;
import edu.harvard.i2b2.crc.datavo.i2b2message.BodyType;
import edu.harvard.i2b2.crc.datavo.i2b2message.MessageHeaderType;
import edu.harvard.i2b2.crc.loader.datavo.loader.query.GetUploadInfoRequestType;
import edu.harvard.i2b2.crc.loader.datavo.loader.query.LoadDataListResponseType;
import edu.harvard.i2b2.crc.loader.datavo.loader.query.LoadDataResponseType;
import edu.harvard.i2b2.crc.loader.ejb.LoaderStatusBean;
import edu.harvard.i2b2.crc.loader.ejb.LoaderStatusBeanLocal;
import edu.harvard.i2b2.crc.loader.util.CRCLoaderUtil;
public class GetLoadStatusRequestHandler extends RequestHandler {
GetUploadInfoRequestType getUploadInfoRequest = null;
MessageHeaderType messageHeaderType = null;
public GetLoadStatusRequestHandler(String requestXml) throws I2B2Exception {
try {
getUploadInfoRequest = (GetUploadInfoRequestType) this
.getRequestType(
requestXml,
edu.harvard.i2b2.crc.loader.datavo.loader.query.GetUploadInfoRequestType.class);
messageHeaderType = getMessageHeaderType(requestXml);
this.setDataSourceLookup(requestXml);
} catch (JAXBUtilException jaxbUtilEx) {
throw new I2B2Exception("Error ", jaxbUtilEx);
}
}
@Override
public BodyType execute() throws I2B2Exception {
edu.harvard.i2b2.crc.loader.datavo.loader.query.ObjectFactory objectFactory = new edu.harvard.i2b2.crc.loader.datavo.loader.query.ObjectFactory();
// call ejb and pass input object
String responseString = null;
BodyType bodyType = new BodyType();
//LoaderStatusBeanLocal loaderStatusBean = CRCLoaderUtil.getInstance()
// .getLoaderStatusBean();
LoaderStatusBean loaderStatusBean = new LoaderStatusBean();
JAXBUtil jaxbUtil = CRCLoaderJAXBUtil.getJAXBUtil();
StringWriter strWriter = new StringWriter();
try {
jaxbUtil.marshaller(objectFactory
.createGetUploadInfoRequest(getUploadInfoRequest),
strWriter);
} catch (JAXBUtilException jaxbEx) {
throw new I2B2Exception("Error in marshalling publishdata request",
jaxbEx);
}
String uploadId = getUploadInfoRequest.getLoadId();
String userId = getUploadInfoRequest.getUserId();
if (uploadId != null) {
LoadDataResponseType response = loaderStatusBean
.getLoadDataResponseByUploadId(this.getDataSourceLookup(),
Integer.parseInt(uploadId));
bodyType.getAny().add(
objectFactory.createLoadDataResponse(response));
} else if (userId != null) {
LoadDataListResponseType response = loaderStatusBean
.getLoadDataResponseByUserId(this.getDataSourceLookup(),
userId);
bodyType.getAny().add(
objectFactory.createLoadDataListResponse(response));
}
return bodyType;
}
}