diff options
Diffstat (limited to 'src/main/java/dev/dnpm/oshelper/atc/services/OnkostarAgentCodeService.java')
| -rw-r--r-- | src/main/java/dev/dnpm/oshelper/atc/services/OnkostarAgentCodeService.java | 79 |
1 files changed, 39 insertions, 40 deletions
diff --git a/src/main/java/dev/dnpm/oshelper/atc/services/OnkostarAgentCodeService.java b/src/main/java/dev/dnpm/oshelper/atc/services/OnkostarAgentCodeService.java index 306563d..0dfb1e6 100644 --- a/src/main/java/dev/dnpm/oshelper/atc/services/OnkostarAgentCodeService.java +++ b/src/main/java/dev/dnpm/oshelper/atc/services/OnkostarAgentCodeService.java @@ -22,10 +22,9 @@ package dev.dnpm.oshelper.atc.services; import dev.dnpm.oshelper.atc.AgentCode; import dev.dnpm.oshelper.atc.AtcCode; import dev.dnpm.oshelper.atc.UnregisteredCode; -import org.springframework.jdbc.core.JdbcTemplate; - -import javax.sql.DataSource; import java.util.List; +import javax.sql.DataSource; +import org.springframework.jdbc.core.JdbcTemplate; /** * Implementation of {@link AgentCodeService} that uses database to query for unregistered agents @@ -35,45 +34,45 @@ import java.util.List; */ public class OnkostarAgentCodeService implements AgentCodeService { - private final JdbcTemplate jdbcTemplate; - - public OnkostarAgentCodeService(final DataSource dataSource) { - this.jdbcTemplate = new JdbcTemplate(dataSource); - } + private final JdbcTemplate jdbcTemplate; - /** - * Queries source for agents code starting with or name containing query string. - * If size is zero, all available results will be returned. - * - * @param query The query string - * @param size Maximal amount of responses - * @return A list with agent codes - */ - @Override - public List<AgentCode> findAgentCodes(final String query, final int size) { - var sql = "SELECT code, shortdesc, synonyms\n" + - " FROM property_catalogue\n" + - " JOIN property_catalogue_version ON (property_catalogue_version.datacatalog_id = property_catalogue.id)\n" + - " JOIN property_catalogue_version_entry p ON (p.property_version_id = property_catalogue_version.id)\n" + - " WHERE name = 'OS.Substanzen'\n" + - " AND (LOWER(code) LIKE ? OR LOWER(shortdesc) LIKE ? OR LOWER(synonyms) LIKE ?)"; + public OnkostarAgentCodeService(final DataSource dataSource) { + this.jdbcTemplate = new JdbcTemplate(dataSource); + } - if (size > 0) { - sql = sql + " LIMIT " + size; - } + /** + * Queries source for agents code starting with or name containing query string. If size is zero, + * all available results will be returned. + * + * @param query The query string + * @param size Maximal amount of responses + * @return A list with agent codes + */ + @Override + public List<AgentCode> findAgentCodes(final String query, final int size) { + var sql = + "SELECT code, shortdesc, synonyms\n" + + " FROM property_catalogue\n" + + " JOIN property_catalogue_version ON (property_catalogue_version.datacatalog_id = property_catalogue.id)\n" + + " JOIN property_catalogue_version_entry p ON (p.property_version_id = property_catalogue_version.id)\n" + + " WHERE name = 'OS.Substanzen'\n" + + " AND (LOWER(code) LIKE ? OR LOWER(shortdesc) LIKE ? OR LOWER(synonyms) LIKE ?)"; - return jdbcTemplate.query( - sql, - new Object[]{query + "%", "%" + query + "%", "%" + query + "%"}, - (resultSet, i) -> { - var code = resultSet.getString("code"); - var shortdesc = resultSet.getString("shortdesc"); - var synonyms = resultSet.getString("synonyms"); - if (AtcCode.isAtcCode(code)) { - return new AtcCode(code, shortdesc); - } - return new UnregisteredCode(code, shortdesc, synonyms); - } - ); + if (size > 0) { + sql = sql + " LIMIT " + size; } + + return jdbcTemplate.query( + sql, + new Object[] {query + "%", "%" + query + "%", "%" + query + "%"}, + (resultSet, i) -> { + var code = resultSet.getString("code"); + var shortdesc = resultSet.getString("shortdesc"); + var synonyms = resultSet.getString("synonyms"); + if (AtcCode.isAtcCode(code)) { + return new AtcCode(code, shortdesc); + } + return new UnregisteredCode(code, shortdesc, synonyms); + }); + } } |
