package edu.harvard.i2b2.crc.util;
import edu.harvard.i2b2.common.exception.I2B2DAOException;
import edu.harvard.i2b2.crc.dao.SetFinderDAOFactory;
import edu.harvard.i2b2.crc.dao.setfinder.IQueryInstanceDao;
import edu.harvard.i2b2.crc.dao.setfinder.IQueryMasterDao;
import edu.harvard.i2b2.crc.datavo.PSMFactory;
import edu.harvard.i2b2.crc.datavo.db.QtQueryInstance;
import edu.harvard.i2b2.crc.datavo.db.QtQueryMaster;
import edu.harvard.i2b2.crc.datavo.setfinder.query.MasterInstanceResultResponseType;
import edu.harvard.i2b2.crc.datavo.setfinder.query.QueryInstanceType;
import edu.harvard.i2b2.crc.datavo.setfinder.query.QueryMasterType;
import edu.harvard.i2b2.crc.datavo.setfinder.query.ResultResponseType;
import edu.harvard.i2b2.crc.datavo.setfinder.query.StatusType;
import edu.harvard.i2b2.crc.ejb.QueryResultBean;
public class I2B2ResponseMessageHelper {
private SetFinderDAOFactory sfDAOFactory = null;
public I2B2ResponseMessageHelper(SetFinderDAOFactory sfDAOFactory) {
this.sfDAOFactory = sfDAOFactory;
}
public MasterInstanceResultResponseType buildResponse(String queryMasterId,
String queryInstanceId, String userId, StatusType statusType)
throws I2B2DAOException {
MasterInstanceResultResponseType masterInstanceResultType = new MasterInstanceResultResponseType();
if (queryMasterId != null && queryInstanceId != null) {
IQueryMasterDao queryMasterDao = sfDAOFactory.getQueryMasterDAO();
QtQueryMaster queryMaster = queryMasterDao
.getQueryDefinition(queryMasterId);
QueryMasterType queryMasterType = PSMFactory
.buildQueryMasterType(queryMaster);
// set query master
masterInstanceResultType.setQueryMaster(queryMasterType);
// fetch query instance by queryinstance id and build response
IQueryInstanceDao queryInstanceDao = sfDAOFactory
.getQueryInstanceDAO();
QtQueryInstance queryInstance = queryInstanceDao
.getQueryInstanceByInstanceId(queryInstanceId);
QueryInstanceType queryInstanceType = PSMFactory
.buildQueryInstanceType(queryInstance);
// set query instance
masterInstanceResultType.setQueryInstance(queryInstanceType);
QueryResultBean queryResultBean = new QueryResultBean();
ResultResponseType responseType1 = queryResultBean
.getResultInstanceFromQueryInstanceId(sfDAOFactory
.getDataSourceLookup(), userId, queryInstanceId);
// set result instance
masterInstanceResultType.getQueryResultInstance().addAll(
responseType1.getQueryResultInstance());
}
// set status
masterInstanceResultType.setStatus(statusType);
return masterInstanceResultType;
}
}