package edu.harvard.i2b2.crc.dao;
import javax.sql.DataSource;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import edu.harvard.i2b2.common.exception.I2B2DAOException;
import edu.harvard.i2b2.common.exception.I2B2Exception;
import edu.harvard.i2b2.common.util.ServiceLocator;
import edu.harvard.i2b2.crc.dao.pdo.IMetadataDao;
import edu.harvard.i2b2.crc.dao.pdo.IPageDao;
import edu.harvard.i2b2.crc.dao.pdo.IPdoQueryEidDao;
import edu.harvard.i2b2.crc.dao.pdo.IPdoQueryModifierDao;
import edu.harvard.i2b2.crc.dao.pdo.IPdoQueryPidDao;
import edu.harvard.i2b2.crc.dao.pdo.MetadataDao;
import edu.harvard.i2b2.crc.dao.pdo.ObservationFactDao;
import edu.harvard.i2b2.crc.dao.pdo.PageTotalDao;
import edu.harvard.i2b2.crc.dao.pdo.PdoQueryConceptDao;
import edu.harvard.i2b2.crc.dao.pdo.PdoQueryEidDao;
import edu.harvard.i2b2.crc.dao.pdo.PdoQueryModifierDao;
import edu.harvard.i2b2.crc.dao.pdo.PdoQueryPatientDao;
import edu.harvard.i2b2.crc.dao.pdo.PdoQueryPidDao;
import edu.harvard.i2b2.crc.dao.pdo.PdoQueryProviderDao;
import edu.harvard.i2b2.crc.dao.pdo.PdoQueryVisitDao;
import edu.harvard.i2b2.crc.dao.pdo.TablePdoQueryConceptDao;
import edu.harvard.i2b2.crc.dao.pdo.TablePdoQueryModifierDao;
import edu.harvard.i2b2.crc.dao.pdo.TablePdoQueryPatientDao;
import edu.harvard.i2b2.crc.dao.pdo.TablePdoQueryProviderDao;
import edu.harvard.i2b2.crc.dao.pdo.TablePdoQueryVisitDao;
import edu.harvard.i2b2.crc.dao.role.IPriviledgeDao;
import edu.harvard.i2b2.crc.dao.role.PriviledgeSpringDao;
import edu.harvard.i2b2.crc.dao.setfinder.AnalysisPluginSpringDao;
import edu.harvard.i2b2.crc.dao.setfinder.EncounterSetCollectionSpringDao;
import edu.harvard.i2b2.crc.dao.setfinder.IAnalysisPluginDao;
import edu.harvard.i2b2.crc.dao.setfinder.IEncounterSetCollectionDao;
import edu.harvard.i2b2.crc.dao.setfinder.IPatientSetCollectionDao;
import edu.harvard.i2b2.crc.dao.setfinder.IQueryBreakdownTypeDao;
import edu.harvard.i2b2.crc.dao.setfinder.IQueryInstanceDao;
import edu.harvard.i2b2.crc.dao.setfinder.IQueryMasterDao;
import edu.harvard.i2b2.crc.dao.setfinder.IQueryPdoMasterDao;
import edu.harvard.i2b2.crc.dao.setfinder.IQueryRequestDao;
import edu.harvard.i2b2.crc.dao.setfinder.IQueryResultInstanceDao;
import edu.harvard.i2b2.crc.dao.setfinder.IQueryResultTypeDao;
import edu.harvard.i2b2.crc.dao.setfinder.IQueryStatusTypeDao;
import edu.harvard.i2b2.crc.dao.setfinder.IXmlResultDao;
import edu.harvard.i2b2.crc.dao.setfinder.PatientSetCollectionSpringDao;
import edu.harvard.i2b2.crc.dao.setfinder.QueryBreakdownTypeSpringDao;
import edu.harvard.i2b2.crc.dao.setfinder.QueryInstanceSpringDao;
import edu.harvard.i2b2.crc.dao.setfinder.QueryMasterSpringDao;
import edu.harvard.i2b2.crc.dao.setfinder.QueryPdoMasterSpringDao;
import edu.harvard.i2b2.crc.dao.setfinder.QueryRequestSpringDao;
import edu.harvard.i2b2.crc.dao.setfinder.QueryResultInstanceSpringDao;
import edu.harvard.i2b2.crc.dao.setfinder.QueryResultTypeSpringDao;
import edu.harvard.i2b2.crc.dao.setfinder.QueryStatusTypeSpringDao;
import edu.harvard.i2b2.crc.dao.setfinder.XmlResultSpringDao;
import edu.harvard.i2b2.crc.datavo.db.DataSourceLookup;
import edu.harvard.i2b2.crc.util.QueryProcessorUtil;
public class SQLServerDAOFactory implements IDAOFactory {
private DataSourceLookup dataSourceLookup = null,
originalDataSourceLookup = null;
private DataSource dataSource = null;
private QueryProcessorUtil crcUtil = null;
/** log **/
protected final static Log log = LogFactory
.getLog(SQLServerDAOFactory.class);
public SQLServerDAOFactory(DataSourceLookup dataSourceLookup,
DataSourceLookup originalDataSourceLookup) throws I2B2DAOException {
this.dataSourceLookup = dataSourceLookup;
this.originalDataSourceLookup = originalDataSourceLookup;
crcUtil = QueryProcessorUtil.getInstance();
String dataSourceName = dataSourceLookup.getDataSource();
log.info("Using datasource " + dataSourceName);
try {
// dataSource = (DataSource)
// crcUtil.getSpringDataSource(dataSourceName);
dataSource = ServiceLocator.getInstance().getAppServerDataSource(
dataSourceName);
} catch (I2B2Exception i2b2Ex) {
log.error(i2b2Ex);
throw new I2B2DAOException(
"Error getting application/spring datasource "
+ dataSourceName + " : " + i2b2Ex.getMessage(),
i2b2Ex);
}
}
//
public class SQLPatientDataDAOFactory implements PatientDataDAOFactory {
private DataSourceLookup dataSourceLookup = null,
orignalDataSourceLookup = null;
private DataSource dataSource = null;
public SQLPatientDataDAOFactory(DataSource dataSource,
DataSourceLookup dataSourceLookup,
DataSourceLookup orignalDataSourceLookup) {
this.dataSourceLookup = dataSourceLookup;
this.dataSource = dataSource;
this.orignalDataSourceLookup = dataSourceLookup;
}
public ObservationFactDao getObservationFactDAO() {
// TODO Auto-generated method stub
//
return new ObservationFactDao(dataSourceLookup, dataSource);
// return null;
}
public PdoQueryConceptDao getPdoQueryConceptDAO() {
// TODO Auto-generated method stub
return new PdoQueryConceptDao(dataSourceLookup, dataSource);
// return null;
}
public PdoQueryModifierDao getPdoQueryModifierDAO() {
// TODO Auto-generated method stub
return new PdoQueryModifierDao(dataSourceLookup, dataSource);
// return null;
}
public PdoQueryPatientDao getPdoQueryPatientDAO() {
// TODO Auto-generated method stub
return new PdoQueryPatientDao(dataSourceLookup, dataSource);
// return null;
}
public PdoQueryProviderDao getPdoQueryProviderDAO() {
// TODO Auto-generated method stub
return new PdoQueryProviderDao(dataSourceLookup, dataSource);
}
public PdoQueryVisitDao getPdoQueryVisitDAO() {
// TODO Auto-generated method stub
return new PdoQueryVisitDao(dataSourceLookup, dataSource);
}
public TablePdoQueryConceptDao getTablePdoQueryConceptDAO() {
// TODO Auto-generated method stub
return new TablePdoQueryConceptDao(dataSourceLookup, dataSource);
}
public TablePdoQueryModifierDao getTablePdoQueryModifierDAO() {
// TODO Auto-generated method stub
return new TablePdoQueryModifierDao(dataSourceLookup, dataSource);
}
public TablePdoQueryPatientDao getTablePdoQueryPatientDAO() {
// TODO Auto-generated method stub
return new TablePdoQueryPatientDao(dataSourceLookup, dataSource);
}
public TablePdoQueryProviderDao getTablePdoQueryProviderDAO() {
// TODO Auto-generated method stub
return new TablePdoQueryProviderDao(dataSourceLookup, dataSource);
}
public TablePdoQueryVisitDao getTablePdoQueryVisitDAO() {
// TODO Auto-generated method stub
return new TablePdoQueryVisitDao(dataSourceLookup, dataSource);
}
public DataSourceLookup getDataSourceLookup() {
return dataSourceLookup;
}
public DataSourceLookup getOriginalDataSourceLookup() {
return originalDataSourceLookup;
}
public DataSource getDataSource() {
return dataSource;
}
public IPageDao getPageDAO() {
// TODO Auto-generated method stub
return new PageTotalDao(dataSourceLookup, dataSource);
}
public IPdoQueryPidDao getPdoQueryPidDAO() {
return new PdoQueryPidDao(dataSourceLookup, dataSource);
}
public IPdoQueryEidDao getPdoQueryEidDAO() {
return new PdoQueryEidDao(dataSourceLookup, dataSource);
}
public IMetadataDao getMetadataDAO() {
return new MetadataDao(dataSourceLookup, dataSource);
}
}
public class SQLSetFinderDAOFactory implements SetFinderDAOFactory {
private DataSourceLookup dataSourceLookup = null,
orignalDataSourceLookup = null;
private DataSource dataSource = null;
public SQLSetFinderDAOFactory(DataSource dataSource,
DataSourceLookup dataSourceLookup,
DataSourceLookup orignalDataSourceLookup) {
this.dataSourceLookup = dataSourceLookup;
this.dataSource = dataSource;
this.orignalDataSourceLookup = dataSourceLookup;
}
public IXmlResultDao getXmlResultDao() {
// TODO Auto-generated method stub
return new XmlResultSpringDao(dataSource, dataSourceLookup);
}
public IPatientSetCollectionDao getPatientSetCollectionDAO() {
// TODO Auto-generated method stub
return new PatientSetCollectionSpringDao(dataSource,
dataSourceLookup);
}
public IEncounterSetCollectionDao getEncounterSetCollectionDAO() {
// TODO Auto-generated method stub
return new EncounterSetCollectionSpringDao(dataSource,
dataSourceLookup);
}
public IQueryResultInstanceDao getPatientSetResultDAO() {
// TODO Auto-generated method stub
return new QueryResultInstanceSpringDao(dataSource,
dataSourceLookup);
}
public IQueryInstanceDao getQueryInstanceDAO() {
// TODO Auto-generated method stub
return new QueryInstanceSpringDao(dataSource, dataSourceLookup);
}
public IQueryMasterDao getQueryMasterDAO() {
// TODO Auto-generated method stub
return new QueryMasterSpringDao(dataSource, dataSourceLookup);
}
public IQueryPdoMasterDao getQueryPdoMasterDAO() {
// TODO Auto-generated method stub
return new QueryPdoMasterSpringDao(dataSource, dataSourceLookup);
}
public IQueryRequestDao getQueryRequestDAO() {
// TODO Auto-generated method stub
return new QueryRequestSpringDao(dataSource, dataSourceLookup);
}
public DataSourceLookup getDataSourceLookup() {
return dataSourceLookup;
}
public DataSourceLookup getOriginalDataSourceLookup() {
return originalDataSourceLookup;
}
public DataSource getDataSource() {
return dataSource;
}
public IQueryResultTypeDao getQueryResultTypeDao() {
return new QueryResultTypeSpringDao(dataSource, dataSourceLookup);
}
public IQueryStatusTypeDao getQueryStatusTypeDao() {
return new QueryStatusTypeSpringDao(dataSource, dataSourceLookup);
}
public IAnalysisPluginDao getAnalysisPluginDao() {
return new AnalysisPluginSpringDao(dataSource, dataSourceLookup);
}
public IPriviledgeDao getPriviledgeDao() {
return new PriviledgeSpringDao(dataSource, dataSourceLookup);
}
public IQueryBreakdownTypeDao getQueryBreakdownTypeDao() {
return new QueryBreakdownTypeSpringDao(dataSource, dataSourceLookup);
}
}
public PatientDataDAOFactory getPatientDataDAOFactory() {
// TODO Auto-generated method stub
return new SQLPatientDataDAOFactory(dataSource, dataSourceLookup,
originalDataSourceLookup);
}
public SetFinderDAOFactory getSetFinderDAOFactory() {
// TODO Auto-generated method stub
return new SQLSetFinderDAOFactory(dataSource, dataSourceLookup,
originalDataSourceLookup);
}
}