package edu.harvard.i2b2.crc.dao.setfinder.querybuilder;
import java.io.StringWriter;
import javax.xml.datatype.XMLGregorianCalendar;
import edu.harvard.i2b2.common.exception.I2B2DAOException;
import edu.harvard.i2b2.common.util.jaxb.DTOFactory;
import edu.harvard.i2b2.common.util.jaxb.JAXBUtilException;
import edu.harvard.i2b2.crc.dao.DAOFactoryHelper;
import edu.harvard.i2b2.crc.dao.SetFinderDAOFactory;
import edu.harvard.i2b2.crc.dao.setfinder.IQueryInstanceDao;
import edu.harvard.i2b2.crc.datavo.CRCJAXBUtil;
import edu.harvard.i2b2.crc.datavo.db.DataSourceLookup;
import edu.harvard.i2b2.crc.datavo.setfinder.query.TimingStepType;
import edu.harvard.i2b2.crc.util.LogTimingUtil;
public class ProcessTimingReportUtil {
public static final String INFO = "INFO";
public static final String DEBUG = "DEBUG";
public static final String NONE = "NONE";
IQueryInstanceDao queryInstanceDao = null;
public ProcessTimingReportUtil(DataSourceLookup dataSourceLookup) throws I2B2DAOException {
SetFinderDAOFactory sfDaoFactory = this.getSetFinderDaoFactory(
dataSourceLookup.getDomainId(), dataSourceLookup
.getProjectPath(), dataSourceLookup.getOwnerId());
queryInstanceDao = sfDaoFactory.getQueryInstanceDAO();
}
public String buildProcessTiming(LogTimingUtil logTimingUtil,String name, String message) throws I2B2DAOException {
DTOFactory dtoFactory = new DTOFactory();
TimingStepType timingStepType = new TimingStepType();
timingStepType.setStartDate(dtoFactory.getXMLGregorianCalendar(logTimingUtil.getStartTime()) );
timingStepType.setEndDate(dtoFactory.getXMLGregorianCalendar(logTimingUtil.getEndTime()) );
timingStepType.setTotalTimeSecond(logTimingUtil.getDiffTime());
timingStepType.setName(name);
timingStepType.setMessage(message);
edu.harvard.i2b2.crc.datavo.setfinder.query.ObjectFactory of = new edu.harvard.i2b2.crc.datavo.setfinder.query.ObjectFactory();
StringWriter strWriter = new StringWriter();
try {
CRCJAXBUtil.getJAXBUtil().marshaller(of.createProcessStepTiming(timingStepType), strWriter) ;
} catch (JAXBUtilException e) {
throw new I2B2DAOException(e.getMessage());
}
return "\n" + strWriter.toString() + "\n";
}
public void logProcessTimingMessage(String queryInstanceId, String message) throws I2B2DAOException {
queryInstanceDao.updateMessage(queryInstanceId, message, true);
}
private SetFinderDAOFactory getSetFinderDaoFactory(String domainId,
String projectPath, String ownerId) throws I2B2DAOException {
DAOFactoryHelper helper = new DAOFactoryHelper(domainId, projectPath,
ownerId);
SetFinderDAOFactory sfDaoFactory = helper.getDAOFactory()
.getSetFinderDAOFactory();
return sfDaoFactory;
}
}