/* * 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: * Lori Phillips */ package edu.harvard.i2b2.ontology.dao; import java.sql.ResultSet; import java.sql.SQLException; import java.util.List; import javax.sql.DataSource; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.dao.DataAccessException; import org.springframework.jdbc.core.simple.ParameterizedRowMapper; import org.springframework.jdbc.core.simple.SimpleJdbcTemplate; import org.springframework.jdbc.core.support.JdbcDaoSupport; import edu.harvard.i2b2.common.exception.I2B2Exception; import edu.harvard.i2b2.ontology.datavo.vdo.ConceptType; import edu.harvard.i2b2.ontology.datavo.vdo.GetReturnType; import edu.harvard.i2b2.ontology.util.OntologyUtil; public class GetSchemesDao extends JdbcDaoSupport { private static Log log = LogFactory.getLog(GetSchemesDao.class); // final static String CORE = "c_hlevel, c_fullname, c_name, c_synonym_cd, c_visualattributes, c_totalnum, c_basecode, c_facttablecolumn, c_tablename, c_columnname, c_columndatatype, c_operator, c_dimcode, c_tooltip"; // final static String ALL = DEFAULT + ", update_date, download_date, import_date, sourcesystem_cd, valuetype_cd"; final static String DEFAULT = " key, name "; // final static String BLOB = ", c_metadataxml, c_comment "; public List findSchemes(final GetReturnType returnType) throws DataAccessException{ DataSource ds = null; try { ds = OntologyUtil.getInstance().getDataSource("java:OntologyDemoDS"); } catch (I2B2Exception e2) { // TODO Auto-generated catch block e2.printStackTrace(); } SimpleJdbcTemplate jt = new SimpleJdbcTemplate(ds); // find return parameters String parameters = DEFAULT; // if (returnType.getType().equals("core")){ // parameters = CORE; // } /* else if (childrenType.getType().equals("all")){ parameters = ALL; } if(childrenType.isBlob() == true) parameters = parameters + BLOB;*/ // First step is get metadata schema name from properties file. String metadataSchema = ""; metadataSchema = "i2b2metadata"; // try { //metadataSchema = OntologyUtil.getInstance().getMetaDataSchemaName(); // } catch (I2B2Exception e1) { // log.error(e1.getMessage()); // } String schemesSql = "select distinct " + parameters + " from " + metadataSchema + "schemes "; ParameterizedRowMapper<ConceptType> mapper = new ParameterizedRowMapper<ConceptType>() { public ConceptType mapRow(ResultSet rs, int rowNum) throws SQLException { ConceptType scheme = new ConceptType(); //TODO fix this for all/+blob scheme.setKey(rs.getString("key")); scheme.setName(rs.getString("name")); return scheme; } }; // TODO loop for all projects/roles List queryResult = null; try { queryResult = jt.query(schemesSql, mapper); } catch (DataAccessException e) { log.error(e.getMessage()); throw e; } log.debug("result size = " + queryResult.size()); return queryResult; } }