package org.nextprot.api.core.dao.impl; import java.sql.ResultSet; import java.sql.SQLException; import java.util.List; import org.nextprot.api.commons.spring.jdbc.DataSourceServiceLocator; import org.nextprot.api.commons.utils.SQLDictionary; import org.nextprot.api.core.dao.EntityName; import org.nextprot.api.core.dao.EntityNameDao; import org.nextprot.api.core.domain.Overview; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.namedparam.MapSqlParameterSource; import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; import org.springframework.jdbc.core.namedparam.SqlParameterSource; import org.springframework.jdbc.core.simple.ParameterizedRowMapper; import org.springframework.stereotype.Repository; @Repository public class EntityNameDaoImpl implements EntityNameDao { @Autowired private SQLDictionary sqlDictionary; @Autowired private DataSourceServiceLocator dsLocator; @Override public List<EntityName> findNames(String uniqueName) { SqlParameterSource namedParameters = new MapSqlParameterSource("uniqueName", uniqueName); List<EntityName> entityNames = new NamedParameterJdbcTemplate(dsLocator.getDataSource()).query(sqlDictionary.getSQLQuery("entity-names"), namedParameters, new EntryNameRowMapper()); return entityNames; } private static class EntryNameRowMapper implements ParameterizedRowMapper<EntityName> { @Override public EntityName mapRow(ResultSet resultSet, int row) throws SQLException { EntityName entryName = new EntityName(); entryName.setClazz(Overview.EntityNameClass.getValue(resultSet.getString("name_class"))); entryName.setCategory(resultSet.getString("category")); entryName.setType(resultSet.getString("name_type")); entryName.setQualifier(resultSet.getString("name_qualifier")); entryName.setMain(resultSet.getBoolean("is_main")); entryName.setName(resultSet.getString("synonym_name")); entryName.setId(resultSet.getString("synonym_id")); entryName.setParentId(resultSet.getString("parent_id")); return entryName; } } @Override public List<EntityName> findAlternativeChainNames(String uniqueName) { SqlParameterSource namedParameters = new MapSqlParameterSource("uniqueName", uniqueName); List<EntityName> entityNames = new NamedParameterJdbcTemplate(dsLocator.getDataSource()).query(sqlDictionary.getSQLQuery("alternative-chain-names"), namedParameters, new EntryNameRowMapper()); return entityNames; } }