/*
* 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.delegate.setfinder;
import edu.harvard.i2b2.common.exception.I2B2Exception;
import edu.harvard.i2b2.common.util.ServiceLocatorException;
import edu.harvard.i2b2.common.util.jaxb.JAXBUtilException;
import edu.harvard.i2b2.crc.datavo.i2b2message.BodyType;
import edu.harvard.i2b2.crc.datavo.i2b2message.ResponseMessageType;
import edu.harvard.i2b2.crc.datavo.i2b2message.StatusType;
import edu.harvard.i2b2.crc.datavo.setfinder.query.InstanceRequestType;
import edu.harvard.i2b2.crc.datavo.setfinder.query.InstanceResultResponseType;
import edu.harvard.i2b2.crc.delegate.RequestHandler;
import edu.harvard.i2b2.crc.delegate.RequestHandlerDelegate;
import edu.harvard.i2b2.crc.ejb.QueryInfoBean;
import edu.harvard.i2b2.crc.util.QueryProcessorUtil;
/**
* RenameQueryMasterHandler class implements execute method $Id:
* RenameQueryMasterHandler.java,v 1.8 2008/03/19 22:36:37 rk903 Exp $
*
* @author rkuttan
*/
public class CancelQueryInstanceHandler extends RequestHandler {
private InstanceRequestType instanceRequestType = null;
/**
* Constuctor which accepts i2b2 request message xml
*
* @param requestXml
* @throws I2B2Exception
*/
public CancelQueryInstanceHandler(String requestXml) throws I2B2Exception {
try {
instanceRequestType = (InstanceRequestType) this
.getRequestType(
requestXml,
edu.harvard.i2b2.crc.datavo.setfinder.query.InstanceRequestType.class);
this.setDataSourceLookup(requestXml);
} catch (JAXBUtilException jaxbUtilEx) {
throw new I2B2Exception("Error ", jaxbUtilEx);
}
}
/**
* Perform operation for the given request using business class(ejb) and
* return response
*
* @see edu.harvard.i2b2.crc.delegate.RequestHandler#execute()
*/
public BodyType execute() {
// call ejb and pass input object
QueryProcessorUtil qpUtil = QueryProcessorUtil.getInstance();
ResponseMessageType responseMessageType = new ResponseMessageType();
StatusType statusType = null;
String responseString = null;
InstanceResultResponseType instanceResultResponseType = null;
BodyType bodyType = new BodyType();
try {
//TODO removed ejbs
// QueryInfoLocalHome queryInfoLocalHome = qpUtil
// .getQueryInfoLocalHome();
// QueryInfoLocal queryInfoLocal = queryInfoLocalHome.create();
String instanceId = instanceRequestType.getQueryInstanceId();
QueryInfoBean query = new QueryInfoBean();
instanceResultResponseType = query.cancelQueryInstance(
this.getDataSourceLookup(), instanceId);
instanceResultResponseType.setStatus(this.buildCRCStausType(
RequestHandlerDelegate.DONE_TYPE, "DONE"));
} catch (Exception e) {
instanceResultResponseType = new InstanceResultResponseType();
instanceResultResponseType.setStatus(this.buildCRCStausType(
RequestHandlerDelegate.ERROR_TYPE, e.getMessage()));
} finally {
edu.harvard.i2b2.crc.datavo.setfinder.query.ObjectFactory of = new edu.harvard.i2b2.crc.datavo.setfinder.query.ObjectFactory();
bodyType.getAny()
.add(of.createResponse(instanceResultResponseType));
}
return bodyType;
}
// function to build StatusType for the given message
private StatusType buildStatusType(String statusTypeString, String message) {
StatusType statusType = new StatusType();
statusType.setType(statusTypeString);
statusType.setValue(message);
return statusType;
}
}