summaryrefslogtreecommitdiff
path: root/src/main/java/ATCCodes/services/OnkostarAgentCodeService.java
diff options
context:
space:
mode:
authorBusfreak2023-03-10 10:54:59 +0100
committerGitHub2023-03-10 10:54:59 +0100
commit68e2312651779220ec68f5bbb2eb9339505ebb3d (patch)
treeaee5e630082ae7a1f81fccdc0ebdaeefc950689c /src/main/java/ATCCodes/services/OnkostarAgentCodeService.java
parent9d66c42460dda63a6380ba0f30004fcd92a4f5c4 (diff)
parent4b121482f1a8323ea23858e8118934be5d9aa54c (diff)
Merge pull request #6 from CCC-MF/issue_5
Issue #5: Vorschlag für den Aufbau des Projekts
Diffstat (limited to 'src/main/java/ATCCodes/services/OnkostarAgentCodeService.java')
-rw-r--r--src/main/java/ATCCodes/services/OnkostarAgentCodeService.java54
1 files changed, 54 insertions, 0 deletions
diff --git a/src/main/java/ATCCodes/services/OnkostarAgentCodeService.java b/src/main/java/ATCCodes/services/OnkostarAgentCodeService.java
new file mode 100644
index 0000000..f29f074
--- /dev/null
+++ b/src/main/java/ATCCodes/services/OnkostarAgentCodeService.java
@@ -0,0 +1,54 @@
+package ATCCodes.services;
+
+import ATCCodes.AgentCode;
+import ATCCodes.UnregisteredCode;
+import org.springframework.jdbc.core.JdbcTemplate;
+import org.springframework.stereotype.Service;
+
+import javax.sql.DataSource;
+import java.util.List;
+
+/**
+ * Implementation of {@link AgentCodeService} that uses database to query for unregistered agents
+ *
+ * @author Paul-Christian Volkmer
+ * @since 0.1.0
+ */
+@Service
+public class OnkostarAgentCodeService implements AgentCodeService {
+
+ private final JdbcTemplate jdbcTemplate;
+
+ public OnkostarAgentCodeService(final DataSource dataSource) {
+ this.jdbcTemplate = new JdbcTemplate(dataSource);
+ }
+
+ /**
+ * 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\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 ?)";
+
+ if (size > 0) {
+ sql = sql + " LIMIT " + size;
+ }
+
+ return jdbcTemplate.query(
+ sql,
+ new Object[]{query + "%", "%" + query + "%", "%" + query + "%"},
+ (resultSet, i) ->
+ new UnregisteredCode(resultSet.getString("code"), resultSet.getString("shortdesc"))
+ );
+ }
+} \ No newline at end of file