summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main/java/DNPM/services/DefaultStudienService.java49
-rw-r--r--src/main/java/DNPM/services/Studie.java31
-rw-r--r--src/main/java/DNPM/services/StudienService.java11
3 files changed, 91 insertions, 0 deletions
diff --git a/src/main/java/DNPM/services/DefaultStudienService.java b/src/main/java/DNPM/services/DefaultStudienService.java
new file mode 100644
index 0000000..f19ea92
--- /dev/null
+++ b/src/main/java/DNPM/services/DefaultStudienService.java
@@ -0,0 +1,49 @@
+package DNPM.services;
+
+import org.springframework.jdbc.core.JdbcTemplate;
+import org.springframework.stereotype.Service;
+
+import javax.sql.DataSource;
+import java.util.List;
+
+@Service
+public class DefaultStudienService implements StudienService {
+
+ private final JdbcTemplate jdbcTemplate;
+
+ public DefaultStudienService(final DataSource dataSource) {
+ this.jdbcTemplate = new JdbcTemplate(dataSource);
+ }
+
+ @Override
+ public List<Studie> findAll() {
+ var sql = "SELECT property_catalogue_version.version_number, pcve.code, pcve.shortdesc, pcve.description FROM property_catalogue "
+ + "JOIN property_catalogue_version ON property_catalogue.id = property_catalogue_version.datacatalog_id "
+ + "JOIN property_catalogue_version_entry pcve ON property_catalogue_version.id = pcve.property_version_id "
+ + "WHERE property_catalogue.name = 'OS.Studien';";
+
+ return this.jdbcTemplate.query(sql, (resultSet, i) -> new Studie(
+ resultSet.getString(1),
+ resultSet.getString(2),
+ resultSet.getString(3),
+ resultSet.getInt(0)
+ ));
+ }
+
+ @Override
+ public List<Studie> findByQuery(String query) {
+ var sql = "SELECT property_catalogue_version.version_number, pcve.code, pcve.shortdesc, pcve.description FROM property_catalogue "
+ + "JOIN property_catalogue_version ON property_catalogue.id = property_catalogue_version.datacatalog_id "
+ + "JOIN property_catalogue_version_entry pcve ON property_catalogue_version.id = pcve.property_version_id "
+ + "WHERE property_catalogue.name = 'OS.Studien' AND (pcve.shortdesc LIKE ? OR pcve.description LIKE ?);";
+
+ var like = String.format("%%%s%%", query);
+
+ return this.jdbcTemplate.query(sql, new Object[]{like, like}, (resultSet, i) -> new Studie(
+ resultSet.getString(1),
+ resultSet.getString(2),
+ resultSet.getString(3),
+ resultSet.getInt(0)
+ ));
+ }
+}
diff --git a/src/main/java/DNPM/services/Studie.java b/src/main/java/DNPM/services/Studie.java
new file mode 100644
index 0000000..d0d674a
--- /dev/null
+++ b/src/main/java/DNPM/services/Studie.java
@@ -0,0 +1,31 @@
+package DNPM.services;
+
+public class Studie {
+ private final String code;
+ private final String shortDesc;
+ private final String description;
+ private final int version;
+
+ public Studie(final String code, final String shortDesc, final String description, final int version) {
+ this.code = code;
+ this.shortDesc = shortDesc;
+ this.description = description;
+ this.version = version;
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public String getShortDesc() {
+ return shortDesc;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public int getVersion() {
+ return version;
+ }
+}
diff --git a/src/main/java/DNPM/services/StudienService.java b/src/main/java/DNPM/services/StudienService.java
new file mode 100644
index 0000000..0bac130
--- /dev/null
+++ b/src/main/java/DNPM/services/StudienService.java
@@ -0,0 +1,11 @@
+package DNPM.services;
+
+import java.util.List;
+
+public interface StudienService {
+
+ List<Studie> findAll();
+
+ List<Studie> findByQuery(String query);
+
+}