package edu.harvard.i2b2.crc.dao;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Types;
import java.util.List;
import javax.sql.DataSource;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.jdbc.core.RowMapper;
import edu.harvard.i2b2.crc.datavo.db.DataSourceLookup;
public class OracleDataSourceLookupDAO extends DataSourceLookupDAO {
/** log **/
protected final Log log = LogFactory
.getLog(OracleDataSourceLookupDAO.class);
private String schemaName = null;
public OracleDataSourceLookupDAO(DataSource dataSource, String schemaName) {
setDataSource(dataSource);
if (schemaName != null && schemaName.endsWith(".")) {
this.schemaName = schemaName;
} else {
this.schemaName = schemaName + ".";
}
}
public List<DataSourceLookup> getDbLookupByHive(String domainId) {
String sql = "select * from "
+ schemaName
+ "crc_db_lookup where LOWER(c_domain_id) like ? ";
log.debug("Executing SQL [" + sql + "]");
List<DataSourceLookup> dataSourceLookupList = this.query(sql,
new Object[] { domainId.toLowerCase() }, new mapper());
return dataSourceLookupList;
}
public List<DataSourceLookup> getDbLookupByHiveOwner(String domainId,
String ownerId) {
String sql = "select * from "
+ schemaName
+ "crc_db_lookup where LOWER(c_domain_id) = ? and c_project_path = ? and (LOWER(c_owner_id) = ? or c_owner_id ='@') order by c_project_path";
String projectId = "@";
log.debug("Executing SQL [" + sql + "]");
List<DataSourceLookup> dataSourceLookupList = this.query(sql,
new Object[] { domainId.toLowerCase(), projectId, ownerId.toLowerCase() }, new mapper());
return dataSourceLookupList;
}
@SuppressWarnings("unchecked")
public List<DataSourceLookup> getDbLookupByHiveProjectOwner(
String domainId, String projectId, String ownerId) {
String sql = "select * from "
+ schemaName
+ "crc_db_lookup where LOWER(c_domain_id) = ? and c_project_path like ? and (LOWER(c_owner_id) =? or c_owner_id = '@') order by c_project_path";
List<DataSourceLookup> dataSourceLookupList = this.query(sql,
new Object[] { domainId.toLowerCase(), projectId + "%", ownerId.toLowerCase() }, new int[] {
Types.VARCHAR, Types.VARCHAR, Types.VARCHAR },
new mapper());
return dataSourceLookupList;
}
public static void main(String args[]) {
OracleDataSourceLookupDAO dao = new OracleDataSourceLookupDAO(null,
null);
}
public class mapper implements RowMapper {
public Object mapRow(ResultSet rs, int rowNum) throws SQLException {
DataSourceLookup dataSourceLookup = new DataSourceLookup();
dataSourceLookup.setDomainId(rs.getString("c_domain_id"));
dataSourceLookup.setProjectPath(rs.getString("c_project_path"));
dataSourceLookup.setOwnerId(rs.getString("c_owner_id"));
dataSourceLookup.setFullSchema(rs.getString("c_db_fullschema"));
dataSourceLookup.setDataSource(rs.getString("c_db_datasource"));
dataSourceLookup.setServerType(rs.getString("c_db_servertype"));
dataSourceLookup.setNiceName(rs.getString("c_db_nicename"));
dataSourceLookup.setToolTip(rs.getString("c_db_tooltip"));
dataSourceLookup.setComment(rs.getString("c_comment"));
dataSourceLookup.setEntryDate(rs.getDate("c_entry_date"));
dataSourceLookup.setChangeDate(rs.getDate("c_change_date"));
dataSourceLookup.setStatusCd(rs.getString("c_status_cd"));
return dataSourceLookup;
}
}
}