/* * 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.datavo; import edu.harvard.i2b2.common.util.jaxb.DTOFactory; import edu.harvard.i2b2.crc.datavo.db.QtQueryInstance; import edu.harvard.i2b2.crc.datavo.db.QtQueryMaster; import edu.harvard.i2b2.crc.datavo.db.QtQueryResultInstance; import edu.harvard.i2b2.crc.datavo.db.QtQueryResultType; import edu.harvard.i2b2.crc.datavo.db.QtQueryStatusType; 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.QueryResultInstanceType; import edu.harvard.i2b2.crc.datavo.setfinder.query.QueryResultTypeType; import edu.harvard.i2b2.crc.datavo.setfinder.query.QueryStatusTypeType; import edu.harvard.i2b2.crc.datavo.setfinder.query.RequestXmlType; import edu.harvard.i2b2.crc.datavo.setfinder.query.XmlValueType; /** * Class to convert database domain objects to response message objects * * @author rkuttan */ public class PSMFactory { private static DTOFactory dtoFactory = new DTOFactory(); /** * Returns QueryMasterType for the given QtQueryMaster * * @param queryMaster * @return QueryMasterType */ public static QueryMasterType buildQueryMasterType(QtQueryMaster queryMaster) { QueryMasterType queryMasterType = new QueryMasterType(); queryMasterType.setUserId(queryMaster.getUserId()); queryMasterType.setQueryMasterId(queryMaster.getQueryMasterId()); RequestXmlType requestXmlType = new RequestXmlType(); requestXmlType.getContent().add(queryMaster.getRequestXml()); queryMasterType.setRequestXml(requestXmlType); queryMasterType.setName(queryMaster.getName()); queryMasterType.setGroupId(queryMaster.getGroupId()); DTOFactory dtoFactory = new DTOFactory(); if (queryMaster.getCreateDate() != null) { queryMasterType.setCreateDate(dtoFactory .getXMLGregorianCalendar(queryMaster.getCreateDate() .getTime())); } if (queryMaster.getDeleteDate() != null) { queryMasterType.setDeleteDate(dtoFactory .getXMLGregorianCalendar(queryMaster.getDeleteDate() .getTime())); } return queryMasterType; } /** * Returns QueryInstanceType for the given QtQueryInstance * * @param queryInstance * @return QueryInstanceType */ public static QueryInstanceType buildQueryInstanceType( QtQueryInstance queryInstance) { QueryInstanceType queryInstanceType = new QueryInstanceType(); queryInstanceType.setUserId(queryInstance.getUserId()); queryInstanceType.setQueryMasterId(queryInstance.getQtQueryMaster() .getQueryMasterId()); queryInstanceType.setGroupId(queryInstance.getGroupId()); queryInstanceType .setQueryInstanceId(queryInstance.getQueryInstanceId()); if (queryInstance.getStartDate() != null) { queryInstanceType.setStartDate(dtoFactory .getXMLGregorianCalendar(queryInstance.getStartDate() .getTime())); } if (queryInstance.getEndDate() != null) { queryInstanceType.setEndDate(dtoFactory .getXMLGregorianCalendar(queryInstance.getEndDate() .getTime())); } QueryStatusTypeType queryStatusType = new QueryStatusTypeType(); queryStatusType.setDescription(queryInstance.getQtQueryStatusType() .getDescription()); queryStatusType.setName(queryInstance.getQtQueryStatusType().getName()); queryStatusType.setStatusTypeId(String.valueOf(queryInstance .getQtQueryStatusType().getStatusTypeId())); queryInstanceType.setQueryStatusType(queryStatusType); if (queryInstance.getMessage() != null) { XmlValueType xmlValueType = new XmlValueType(); xmlValueType.getContent().add(queryInstance.getMessage()); queryInstanceType.setMessage(xmlValueType); } return queryInstanceType; } /** * Returns QueryInstanceType for the given QtQueryInstance * * @param queryInstance * @return QueryInstanceType */ public static QueryResultInstanceType buildQueryResultInstanceType( QtQueryResultInstance queryResultInstance) { QueryResultInstanceType resultInstanceType = new QueryResultInstanceType(); resultInstanceType.setResultInstanceId(queryResultInstance .getResultInstanceId()); resultInstanceType.setQueryInstanceId(queryResultInstance .getQtQueryInstance().getQueryInstanceId()); resultInstanceType.setDescription(queryResultInstance.getDescription()); resultInstanceType .setQueryResultType(buildQueryResultType(queryResultInstance .getQtQueryResultType())); resultInstanceType .setQueryStatusType(buildQueryStatusType(queryResultInstance .getQtQueryStatusType())); resultInstanceType.setStartDate(dtoFactory .getXMLGregorianCalendar(queryResultInstance.getStartDate() .getTime())); if (queryResultInstance.getEndDate() != null) { resultInstanceType.setEndDate(dtoFactory .getXMLGregorianCalendar(queryResultInstance.getEndDate() .getTime())); } if (queryResultInstance.getSetSize() != null) { resultInstanceType.setSetSize(queryResultInstance.getSetSize()); } resultInstanceType.setObfuscateMethod(queryResultInstance .getObfuscateMethod()); if (queryResultInstance.getMessage() != null) { XmlValueType xmlValueType = new XmlValueType(); xmlValueType.getContent().add(resultInstanceType.getMessage()); resultInstanceType.setMessage(xmlValueType); } return resultInstanceType; } public static QueryResultTypeType buildQueryResultType( QtQueryResultType queryResult) { QueryResultTypeType queryResultType = new QueryResultTypeType(); queryResultType.setResultTypeId(String.valueOf(queryResult .getResultTypeId())); queryResultType.setName(queryResult.getName()); queryResultType.setDescription(queryResult.getDescription()); queryResultType.setDisplayType(queryResult.getDisplayType()); queryResultType.setVisualAttributeType(queryResult .getVisualAttributeType()); return queryResultType; } public static QueryStatusTypeType buildQueryStatusType( QtQueryStatusType queryStatus) { QueryStatusTypeType queryStatusType = new QueryStatusTypeType(); queryStatusType.setDescription(queryStatus.getDescription()); queryStatusType.setName(queryStatus.getName()); queryStatusType.setStatusTypeId(String.valueOf(queryStatus .getStatusTypeId())); return queryStatusType; } }