/*
* 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:
* Mike Mendis
*/
package edu.harvard.i2b2.im.ws;
import java.io.StringWriter;
import edu.harvard.i2b2.common.exception.I2B2Exception;
import edu.harvard.i2b2.common.util.jaxb.JAXBUnWrapHelper;
import edu.harvard.i2b2.common.util.jaxb.JAXBUtil;
import edu.harvard.i2b2.common.util.jaxb.JAXBUtilException;
import edu.harvard.i2b2.im.datavo.i2b2message.BodyType;
import edu.harvard.i2b2.im.datavo.i2b2message.MessageHeaderType;
import edu.harvard.i2b2.im.datavo.i2b2message.RequestHeaderType;
import edu.harvard.i2b2.im.datavo.i2b2message.RequestMessageType;
import edu.harvard.i2b2.im.datavo.pdo.query.GetPDOFromInputListRequestType;
import edu.harvard.i2b2.im.datavo.pdo.query.PdoQryHeaderType;
import edu.harvard.i2b2.im.datavo.pdo.query.PdoRequestTypeType;
import edu.harvard.i2b2.im.datavo.pdo.query.RequestType;
import edu.harvard.i2b2.im.datavo.pm.GetUserConfigurationType;
import edu.harvard.i2b2.im.util.IMJAXBUtil;
import edu.harvard.i2b2.pm.ws.ProjectManagementRequestData;
/**
* The ExportChildDataMessage class is a helper class to build IM messages in the
* i2b2 format
*/
public class PDORequestMessage extends RequestDataMessage{
public PDORequestMessage() {
}
/**
* Function to get pdo object from i2b2 request message type
* @return
* @throws I2B2Exception
*/
public GetPDOFromInputListRequestType getgetPDOFromInputListRequestType() throws I2B2Exception {
GetPDOFromInputListRequestType getPDOFromInputListRequestType;
try {
BodyType bodyType = reqMessageType.getMessageBody();
JAXBUnWrapHelper helper = new JAXBUnWrapHelper();
getPDOFromInputListRequestType = (GetPDOFromInputListRequestType) helper.getObjectByClass(bodyType.getAny(),
GetPDOFromInputListRequestType.class);
} catch (JAXBUtilException e) {
throw new I2B2Exception("Unwrap error: " + e.getMessage(), e);
}catch (Exception e) {
throw new I2B2Exception("Unwrap error: " + e.getMessage(), e);
}
return getPDOFromInputListRequestType;
}
/**
* Function to build PM Request message type and return it as an XML string
*
* @param GetUserConfigurationType (user config data)
* @return A String data type containing the PM RequestMessage in XML format
*/
public String doBuildXML(GetPDOFromInputListRequestType userConfig, MessageHeaderType header){
String requestString = null;
try {
MessageHeaderType messageHeader = getMessageHeader();
messageHeader.setSecurity(header.getSecurity());
messageHeader.setProjectId(header.getProjectId());
RequestHeaderType reqHeader = getRequestHeader();
BodyType bodyType = getBodyType(userConfig) ;
RequestMessageType reqMessageType = getRequestMessageType(messageHeader,
reqHeader, bodyType);
JAXBUtil jaxbUtil = IMJAXBUtil.getJAXBUtil();
StringWriter strWriter = new StringWriter();
try {
edu.harvard.i2b2.im.datavo.i2b2message.ObjectFactory of = new edu.harvard.i2b2.im.datavo.i2b2message.ObjectFactory();
jaxbUtil.marshaller(of.createRequest(reqMessageType), strWriter);
} catch (Exception e) {
log.error(e.getMessage());
e.printStackTrace();
}
requestString = strWriter.toString();
} catch (Exception e) {
log.error(e.getMessage());
}
return requestString;
}
public BodyType getBodyType(GetPDOFromInputListRequestType userConfigurationType) {
edu.harvard.i2b2.im.datavo.pdo.query.ObjectFactory of = new edu.harvard.i2b2.im.datavo.pdo.query.ObjectFactory();
BodyType bodyType = new BodyType();
bodyType.getAny().add(of.createRequest(userConfigurationType));
return bodyType;
}
public PdoQryHeaderType getPdoQryHeaderType() throws I2B2Exception {
PdoQryHeaderType PdoQryHeaderTypes;
try {
BodyType bodyType = reqMessageType.getMessageBody();
JAXBUnWrapHelper helper = new JAXBUnWrapHelper();
PdoQryHeaderTypes = (PdoQryHeaderType) helper.getObjectByClass(bodyType.getAny(),
PdoQryHeaderType.class);
} catch (JAXBUtilException e) {
throw new I2B2Exception("Unwrap error: " + e.getMessage(), e);
}catch (Exception e) {
throw new I2B2Exception("Unwrap error: " + e.getMessage(), e);
}
return PdoQryHeaderTypes;
}
}