From a96831659a7e62c9affd827fc4e239d5364dbf00 Mon Sep 17 00:00:00 2001 From: MrSebastian <13592751+MrSebastian@users.noreply.github.com> Date: Fri, 28 Jun 2024 10:47:45 +0200 Subject: [PATCH 01/58] implement domain, service and update controller for wahltag --- .../eaiservice/domain/wahldaten/Wahltag.java | 30 +++++++++++++++++++ .../domain/wahldaten/WahltageRepository.java | 11 +++++++ .../rest/wahldaten/WahldatenController.java | 12 ++++++-- .../service/wahldaten/WahldatenMapper.java | 13 ++++++++ .../service/wahldaten/WahldatenService.java | 28 +++++++++++++++++ 5 files changed, 91 insertions(+), 3 deletions(-) create mode 100644 wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/Wahltag.java create mode 100644 wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/WahltageRepository.java create mode 100644 wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahldaten/WahldatenMapper.java create mode 100644 wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahldaten/WahldatenService.java diff --git a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/Wahltag.java b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/Wahltag.java new file mode 100644 index 000000000..e5af93e6b --- /dev/null +++ b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/Wahltag.java @@ -0,0 +1,30 @@ +package de.muenchen.oss.wahllokalsystem.eaiservice.domain.wahldaten; + +import de.muenchen.oss.wahllokalsystem.eaiservice.domain.BaseEntity; +import jakarta.persistence.Entity; +import jakarta.validation.constraints.NotNull; +import java.time.LocalDate; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; + +@Entity +@Getter +@Setter +@EqualsAndHashCode(callSuper = true) +@ToString(onlyExplicitlyIncluded = true) +public class Wahltag extends BaseEntity { + + @NotNull + @ToString.Include + private LocalDate tag; + + @NotNull + @ToString.Include + private String beschreibung; + + @NotNull + @ToString.Include + private String nummer; +} diff --git a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/WahltageRepository.java b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/WahltageRepository.java new file mode 100644 index 000000000..810f0a8af --- /dev/null +++ b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/WahltageRepository.java @@ -0,0 +1,11 @@ +package de.muenchen.oss.wahllokalsystem.eaiservice.domain.wahldaten; + +import java.time.LocalDate; +import java.util.List; +import java.util.UUID; +import org.springframework.data.repository.CrudRepository; + +public interface WahltageRepository extends CrudRepository { + + List findByTagAfterOrTagEquals(LocalDate afterDate, LocalDate equalsDate); +} diff --git a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/rest/wahldaten/WahldatenController.java b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/rest/wahldaten/WahldatenController.java index fca331e4e..ea5921dfe 100644 --- a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/rest/wahldaten/WahldatenController.java +++ b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/rest/wahldaten/WahldatenController.java @@ -4,9 +4,12 @@ import de.muenchen.oss.wahllokalsystem.eaiservice.rest.wahldaten.dto.WahlberechtigteDTO; import de.muenchen.oss.wahllokalsystem.eaiservice.rest.wahldaten.dto.WahlbezirkeDTO; import de.muenchen.oss.wahllokalsystem.eaiservice.rest.wahldaten.dto.WahlenDTO; -import de.muenchen.oss.wahllokalsystem.eaiservice.rest.wahldaten.dto.WahltageDTO; +import de.muenchen.oss.wahllokalsystem.eaiservice.rest.wahldaten.dto.WahltagDTO; +import de.muenchen.oss.wahllokalsystem.eaiservice.service.wahldaten.WahldatenService; import java.time.LocalDate; import java.util.List; +import java.util.Set; +import lombok.RequiredArgsConstructor; import org.springframework.http.HttpStatus; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; @@ -17,8 +20,11 @@ @RestController @RequestMapping("/wahldaten") +@RequiredArgsConstructor public class WahldatenController { + private final WahldatenService wahldatenService; + @GetMapping("wahlbezirke/{wahlbezirkID}/wahlberechtigte") @ResponseStatus(HttpStatus.OK) public List loadWahlberechtigte(@PathVariable("wahlbezirkID") String wahlbezirkID) { @@ -27,8 +33,8 @@ public List loadWahlberechtigte(@PathVariable("wahlbezirkID" @GetMapping("wahltage") @ResponseStatus(HttpStatus.OK) - public WahltageDTO loadWahltageSinceIncluding(@RequestParam("includingSince") LocalDate tag) { - throw new UnsupportedOperationException("Not supported yet."); + public Set loadWahltageSinceIncluding(@RequestParam("includingSince") LocalDate tag) { + return wahldatenService.getWahltage(tag); } @GetMapping("wahlbezirk") diff --git a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahldaten/WahldatenMapper.java b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahldaten/WahldatenMapper.java new file mode 100644 index 000000000..b0c3f5e78 --- /dev/null +++ b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahldaten/WahldatenMapper.java @@ -0,0 +1,13 @@ +package de.muenchen.oss.wahllokalsystem.eaiservice.service.wahldaten; + +import de.muenchen.oss.wahllokalsystem.eaiservice.domain.wahldaten.Wahltag; +import de.muenchen.oss.wahllokalsystem.eaiservice.rest.wahldaten.dto.WahltagDTO; +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; + +@Mapper +public interface WahldatenMapper { + + @Mapping(target = "identifikator", source = "id") + WahltagDTO toDTO(Wahltag wahltag); +} diff --git a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahldaten/WahldatenService.java b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahldaten/WahldatenService.java new file mode 100644 index 000000000..156bad991 --- /dev/null +++ b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahldaten/WahldatenService.java @@ -0,0 +1,28 @@ +package de.muenchen.oss.wahllokalsystem.eaiservice.service.wahldaten; + +import de.muenchen.oss.wahllokalsystem.eaiservice.domain.wahldaten.Wahltag; +import de.muenchen.oss.wahllokalsystem.eaiservice.domain.wahldaten.WahltageRepository; +import de.muenchen.oss.wahllokalsystem.eaiservice.rest.wahldaten.dto.WahltagDTO; +import java.time.LocalDate; +import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +@Service +@RequiredArgsConstructor +public class WahldatenService { + + private final WahldatenMapper wahldatenMapper; + + private final WahltageRepository wahltageRepository; + + public Set getWahltage(LocalDate wahltageIncludingSince) { + return getWahltageIncludingSince(wahltageIncludingSince).stream().map(wahldatenMapper::toDTO).collect(Collectors.toSet()); + } + + private List getWahltageIncludingSince(LocalDate wahltageIncludingSince) { + return wahltageRepository.findByTagAfterOrTagEquals(wahltageIncludingSince, wahltageIncludingSince); + } +} From 6e5c1bbbe25ea63ed3d634bee11150f7fd2aebb6 Mon Sep 17 00:00:00 2001 From: MrSebastian <13592751+MrSebastian@users.noreply.github.com> Date: Fri, 28 Jun 2024 10:48:09 +0200 Subject: [PATCH 02/58] init flyway files for wahltag --- .../db/dummydata/h2/V3_1__wahldatenTestdaten.sql | 5 +++++ .../resources/db/migrations/h2/V3_0__createWahldaten.sql | 9 +++++++++ 2 files changed, 14 insertions(+) create mode 100644 wls-eai-service/src/main/resources/db/dummydata/h2/V3_1__wahldatenTestdaten.sql create mode 100644 wls-eai-service/src/main/resources/db/migrations/h2/V3_0__createWahldaten.sql diff --git a/wls-eai-service/src/main/resources/db/dummydata/h2/V3_1__wahldatenTestdaten.sql b/wls-eai-service/src/main/resources/db/dummydata/h2/V3_1__wahldatenTestdaten.sql new file mode 100644 index 000000000..bddae922a --- /dev/null +++ b/wls-eai-service/src/main/resources/db/dummydata/h2/V3_1__wahldatenTestdaten.sql @@ -0,0 +1,5 @@ +INSERT INTO wahltag (id, tag, beschreibung, nummer) +values ('00000000-0000-0000-0000-000000000001', '2024-06-09', 'zehnte Direktwahl zum Europäischen Parlament', '0'); + +INSERT INTO wahltag (id, tag, beschreibung, nummer) +values ('00000000-0000-0000-0000-000000000002', '2021-09-26', 'Wahl zum 20. Deutschen Bundestag', '0'); \ No newline at end of file diff --git a/wls-eai-service/src/main/resources/db/migrations/h2/V3_0__createWahldaten.sql b/wls-eai-service/src/main/resources/db/migrations/h2/V3_0__createWahldaten.sql new file mode 100644 index 000000000..39140a035 --- /dev/null +++ b/wls-eai-service/src/main/resources/db/migrations/h2/V3_0__createWahldaten.sql @@ -0,0 +1,9 @@ +CREATE TABLE wahltag +( + id VARCHAR2(36) NOT NULL, + tag TIMESTAMP NOT NULL, + beschreibung VARCHAR2(1024) NOT NULL, + nummer VARCHAR2(10) NOT NULL, + + PRIMARY KEY (id) +) \ No newline at end of file From 1d5db78aea4b1ace1de890babea8f7634947ca50 Mon Sep 17 00:00:00 2001 From: MrSebastian <13592751+MrSebastian@users.noreply.github.com> Date: Fri, 28 Jun 2024 10:48:35 +0200 Subject: [PATCH 03/58] init http file for example requests for wahltag --- .../resources/httpRequests/wahldaten.http | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 wls-eai-service/src/test/resources/httpRequests/wahldaten.http diff --git a/wls-eai-service/src/test/resources/httpRequests/wahldaten.http b/wls-eai-service/src/test/resources/httpRequests/wahldaten.http new file mode 100644 index 000000000..f684622ac --- /dev/null +++ b/wls-eai-service/src/test/resources/httpRequests/wahldaten.http @@ -0,0 +1,27 @@ +### get token for user wls_all +POST {{ SSO_URL }}/auth/realms/wls_realm/protocol/openid-connect/token +Content-Type: application/x-www-form-urlencoded + +password = test & +grant_type = password & +client_secret = top-secret & +client_id = wls & +username = wls_all + +> {% + client.global.set("auth_token", response.body.access_token); + client.global.set("token_type", response.body.token_type); +%} + +### get userinfo with auth_token +GET {{ SSO_URL }}/auth/realms/wls_realm/protocol/openid-connect/userinfo +Authorization: {{ token_type }} {{ auth_token }} + +### get Wahltag EU-Wahl +GET {{ WLS_EAI_SERVICE_URL }}/wahldaten/wahltage?includingSince=2024-01-01 + +### get Wahltag since 2000 +GET {{ WLS_EAI_SERVICE_URL }}/wahldaten/wahltage?includingSince=2000-01-01 + +### get Wahltag no hits +GET {{ WLS_EAI_SERVICE_URL }}/wahldaten/wahltage?includingSince=3024-01-01 \ No newline at end of file From a95c0f38faaf61294c2c2c8943ee4ec6d0165446 Mon Sep 17 00:00:00 2001 From: MrSebastian <13592751+MrSebastian@users.noreply.github.com> Date: Fri, 28 Jun 2024 10:54:08 +0200 Subject: [PATCH 04/58] add required authority --- .../eaiservice/service/wahldaten/WahldatenService.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahldaten/WahldatenService.java b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahldaten/WahldatenService.java index 156bad991..c48168492 100644 --- a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahldaten/WahldatenService.java +++ b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahldaten/WahldatenService.java @@ -8,6 +8,7 @@ import java.util.Set; import java.util.stream.Collectors; import lombok.RequiredArgsConstructor; +import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.stereotype.Service; @Service @@ -18,6 +19,7 @@ public class WahldatenService { private final WahltageRepository wahltageRepository; + @PreAuthorize("hasAuthority('aoueai_BUSINESSACTION_LoadWahltage')") public Set getWahltage(LocalDate wahltageIncludingSince) { return getWahltageIncludingSince(wahltageIncludingSince).stream().map(wahldatenMapper::toDTO).collect(Collectors.toSet()); } From 3881f1eae8dc0fc54bc7ca8ca7774ac96cebe409 Mon Sep 17 00:00:00 2001 From: MrSebastian <13592751+MrSebastian@users.noreply.github.com> Date: Fri, 28 Jun 2024 10:54:22 +0200 Subject: [PATCH 05/58] init keycloak migration file for wahldaten --- .../migration/add-authorities-eai-wahldaten.yml | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 stack/keycloak/migration/add-authorities-eai-wahldaten.yml diff --git a/stack/keycloak/migration/add-authorities-eai-wahldaten.yml b/stack/keycloak/migration/add-authorities-eai-wahldaten.yml new file mode 100644 index 000000000..f3dfc58d0 --- /dev/null +++ b/stack/keycloak/migration/add-authorities-eai-wahldaten.yml @@ -0,0 +1,12 @@ +id: add authorities eai wahldaten +author: MrSebastian +realm: ${SSO_REALM} +changes: + - addRole: + name: aoueai_BUSINESSACTION_LoadWahltage + clientRole: true + clientId: ${SSO_CLIENT_ID} + - assignRoleToGroup: + group: allEaiAuthorities + role: aoueai_BUSINESSACTION_LoadWahltage + clientId: ${SSO_CLIENT_ID} \ No newline at end of file From 260a04433e3e31efd33deebfe58108c8406c8641 Mon Sep 17 00:00:00 2001 From: MrSebastian <13592751+MrSebastian@users.noreply.github.com> Date: Fri, 28 Jun 2024 13:00:14 +0200 Subject: [PATCH 06/58] create wahl domain classes --- .../eaiservice/domain/wahldaten/Wahl.java | 36 +++++++++++++++++++ .../domain/wahldaten/WahlRepository.java | 7 ++++ .../eaiservice/domain/wahldaten/Wahlart.java | 5 +++ 3 files changed, 48 insertions(+) create mode 100644 wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/Wahl.java create mode 100644 wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/WahlRepository.java create mode 100644 wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/Wahlart.java diff --git a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/Wahl.java b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/Wahl.java new file mode 100644 index 000000000..f9f6ded48 --- /dev/null +++ b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/Wahl.java @@ -0,0 +1,36 @@ +package de.muenchen.oss.wahllokalsystem.eaiservice.domain.wahldaten; + +import de.muenchen.oss.wahllokalsystem.eaiservice.domain.BaseEntity; +import jakarta.persistence.Entity; +import jakarta.persistence.EnumType; +import jakarta.persistence.Enumerated; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; +import jakarta.validation.constraints.NotNull; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; + +@Entity +@Getter +@Setter +@EqualsAndHashCode(callSuper = true) +@ToString(onlyExplicitlyIncluded = true) +public class Wahl extends BaseEntity { + + @NotNull + private String name; + + @NotNull + @Enumerated(EnumType.STRING) + private Wahlart wahlart; + + @NotNull + @ManyToOne + @JoinColumn(name = "wahltagID") + private Wahltag wahltag; + + @NotNull + private String nummer; +} diff --git a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/WahlRepository.java b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/WahlRepository.java new file mode 100644 index 000000000..822714b25 --- /dev/null +++ b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/WahlRepository.java @@ -0,0 +1,7 @@ +package de.muenchen.oss.wahllokalsystem.eaiservice.domain.wahldaten; + +import java.util.UUID; +import org.springframework.data.repository.CrudRepository; + +public interface WahlRepository extends CrudRepository { +} diff --git a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/Wahlart.java b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/Wahlart.java new file mode 100644 index 000000000..b1bcf7dc9 --- /dev/null +++ b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/Wahlart.java @@ -0,0 +1,5 @@ +package de.muenchen.oss.wahllokalsystem.eaiservice.domain.wahldaten; + +public enum Wahlart { + BAW, BEB, BTW, BZW, EUW, LTW, MBW, OBW, SRW, SVW, VE +} From f01db176142359b5ab1d766325016f3992307ece Mon Sep 17 00:00:00 2001 From: MrSebastian <13592751+MrSebastian@users.noreply.github.com> Date: Fri, 28 Jun 2024 13:00:43 +0200 Subject: [PATCH 07/58] add wahl table to h2 flyway --- .../db/migrations/h2/V3_0__createWahldaten.sql | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/wls-eai-service/src/main/resources/db/migrations/h2/V3_0__createWahldaten.sql b/wls-eai-service/src/main/resources/db/migrations/h2/V3_0__createWahldaten.sql index 39140a035..aa1282836 100644 --- a/wls-eai-service/src/main/resources/db/migrations/h2/V3_0__createWahldaten.sql +++ b/wls-eai-service/src/main/resources/db/migrations/h2/V3_0__createWahldaten.sql @@ -6,4 +6,19 @@ CREATE TABLE wahltag nummer VARCHAR2(10) NOT NULL, PRIMARY KEY (id) -) \ No newline at end of file +); + +CREATE TABLE wahl +( + id VARCHAR2(36) NOT NULL, + name VARCHAR2(100) NOT NULL, + wahlart VARCHAR2(5) NOT NULL, + nummer VARCHAR2(10) NOT NULL, + + wahltagID VARCHAR2(36) NOT NULL, + + FOREIGN KEY (wahltagID) REFERENCES wahltag (id), + + PRIMARY KEY (id) + +); \ No newline at end of file From a1296b705142c0bedd49031d4495ac8253e7aae7 Mon Sep 17 00:00:00 2001 From: MrSebastian <13592751+MrSebastian@users.noreply.github.com> Date: Fri, 28 Jun 2024 14:16:55 +0200 Subject: [PATCH 08/58] rearange flyway files for entities own file for each table --- ...enTestdaten.sql => V3_0_1__wahltageTestdaten.sql} | 2 +- .../db/dummydata/h2/V3_1_1__wahlTestdaten.sql | 11 +++++++++++ .../db/migrations/h2/V3_0__createWahltag.sql | 9 +++++++++ ...3_0__createWahldaten.sql => V3_1__createWahl.sql} | 12 +----------- 4 files changed, 22 insertions(+), 12 deletions(-) rename wls-eai-service/src/main/resources/db/dummydata/h2/{V3_1__wahldatenTestdaten.sql => V3_0_1__wahltageTestdaten.sql} (68%) create mode 100644 wls-eai-service/src/main/resources/db/dummydata/h2/V3_1_1__wahlTestdaten.sql create mode 100644 wls-eai-service/src/main/resources/db/migrations/h2/V3_0__createWahltag.sql rename wls-eai-service/src/main/resources/db/migrations/h2/{V3_0__createWahldaten.sql => V3_1__createWahl.sql} (56%) diff --git a/wls-eai-service/src/main/resources/db/dummydata/h2/V3_1__wahldatenTestdaten.sql b/wls-eai-service/src/main/resources/db/dummydata/h2/V3_0_1__wahltageTestdaten.sql similarity index 68% rename from wls-eai-service/src/main/resources/db/dummydata/h2/V3_1__wahldatenTestdaten.sql rename to wls-eai-service/src/main/resources/db/dummydata/h2/V3_0_1__wahltageTestdaten.sql index bddae922a..64d2f0def 100644 --- a/wls-eai-service/src/main/resources/db/dummydata/h2/V3_1__wahldatenTestdaten.sql +++ b/wls-eai-service/src/main/resources/db/dummydata/h2/V3_0_1__wahltageTestdaten.sql @@ -2,4 +2,4 @@ INSERT INTO wahltag (id, tag, beschreibung, nummer) values ('00000000-0000-0000-0000-000000000001', '2024-06-09', 'zehnte Direktwahl zum Europäischen Parlament', '0'); INSERT INTO wahltag (id, tag, beschreibung, nummer) -values ('00000000-0000-0000-0000-000000000002', '2021-09-26', 'Wahl zum 20. Deutschen Bundestag', '0'); \ No newline at end of file +values ('00000000-0000-0000-0000-000000000002', '2020-03-15', 'Kommunalwahl 20', '0'); \ No newline at end of file diff --git a/wls-eai-service/src/main/resources/db/dummydata/h2/V3_1_1__wahlTestdaten.sql b/wls-eai-service/src/main/resources/db/dummydata/h2/V3_1_1__wahlTestdaten.sql new file mode 100644 index 000000000..f803caa7c --- /dev/null +++ b/wls-eai-service/src/main/resources/db/dummydata/h2/V3_1_1__wahlTestdaten.sql @@ -0,0 +1,11 @@ +INSERT INTO wahl (id, name, wahlart, nummer, wahltagID) +values ('00000000-0000-0000-0000-000000000001', 'EU-Wahl 24', 'EUW', 0, '00000000-0000-0000-0000-000000000001'); + +INSERT INTO wahl (id, name, wahlart, nummer, wahltagID) +values ('00000000-0000-0000-0000-000000000002', 'Stadtratswahl', 'SRW', 0, '00000000-0000-0000-0000-000000000002'); +INSERT INTO wahl (id, name, wahlart, nummer, wahltagID) +values ('00000000-0000-0000-0000-000000000003', 'Oberbürgermeisterwahl', 'OBW', 0, + '00000000-0000-0000-0000-000000000002'); +INSERT INTO wahl (id, name, wahlart, nummer, wahltagID) +values ('00000000-0000-0000-0000-000000000004', 'Bezirksausschusswahl', 'BAW', 0, + '00000000-0000-0000-0000-000000000002'); \ No newline at end of file diff --git a/wls-eai-service/src/main/resources/db/migrations/h2/V3_0__createWahltag.sql b/wls-eai-service/src/main/resources/db/migrations/h2/V3_0__createWahltag.sql new file mode 100644 index 000000000..508ce6682 --- /dev/null +++ b/wls-eai-service/src/main/resources/db/migrations/h2/V3_0__createWahltag.sql @@ -0,0 +1,9 @@ +CREATE TABLE wahltag +( + id VARCHAR2(36) NOT NULL, + tag TIMESTAMP NOT NULL, + beschreibung VARCHAR2(1024) NOT NULL, + nummer VARCHAR2(10) NOT NULL, + + PRIMARY KEY (id) +); \ No newline at end of file diff --git a/wls-eai-service/src/main/resources/db/migrations/h2/V3_0__createWahldaten.sql b/wls-eai-service/src/main/resources/db/migrations/h2/V3_1__createWahl.sql similarity index 56% rename from wls-eai-service/src/main/resources/db/migrations/h2/V3_0__createWahldaten.sql rename to wls-eai-service/src/main/resources/db/migrations/h2/V3_1__createWahl.sql index aa1282836..6cd1aa171 100644 --- a/wls-eai-service/src/main/resources/db/migrations/h2/V3_0__createWahldaten.sql +++ b/wls-eai-service/src/main/resources/db/migrations/h2/V3_1__createWahl.sql @@ -1,13 +1,3 @@ -CREATE TABLE wahltag -( - id VARCHAR2(36) NOT NULL, - tag TIMESTAMP NOT NULL, - beschreibung VARCHAR2(1024) NOT NULL, - nummer VARCHAR2(10) NOT NULL, - - PRIMARY KEY (id) -); - CREATE TABLE wahl ( id VARCHAR2(36) NOT NULL, @@ -21,4 +11,4 @@ CREATE TABLE wahl PRIMARY KEY (id) -); \ No newline at end of file +) \ No newline at end of file From 8a222259e276c792ee26fc0dec13b41ba1da991a Mon Sep 17 00:00:00 2001 From: MrSebastian <13592751+MrSebastian@users.noreply.github.com> Date: Fri, 28 Jun 2024 14:17:35 +0200 Subject: [PATCH 09/58] implement loadwahlen --- .../eaiservice/domain/wahldaten/WahlRepository.java | 4 ++++ .../eaiservice/rest/wahldaten/WahldatenController.java | 6 +++--- .../eaiservice/service/wahldaten/WahldatenMapper.java | 6 ++++++ .../eaiservice/service/wahldaten/WahldatenService.java | 9 +++++++++ 4 files changed, 22 insertions(+), 3 deletions(-) diff --git a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/WahlRepository.java b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/WahlRepository.java index 822714b25..8173cba13 100644 --- a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/WahlRepository.java +++ b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/WahlRepository.java @@ -1,7 +1,11 @@ package de.muenchen.oss.wahllokalsystem.eaiservice.domain.wahldaten; +import java.time.LocalDate; +import java.util.List; import java.util.UUID; import org.springframework.data.repository.CrudRepository; public interface WahlRepository extends CrudRepository { + + List findByWahltagTagAndNummer(LocalDate wahltag, String nummer); } diff --git a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/rest/wahldaten/WahldatenController.java b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/rest/wahldaten/WahldatenController.java index ea5921dfe..712c74db9 100644 --- a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/rest/wahldaten/WahldatenController.java +++ b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/rest/wahldaten/WahldatenController.java @@ -1,9 +1,9 @@ package de.muenchen.oss.wahllokalsystem.eaiservice.rest.wahldaten; import de.muenchen.oss.wahllokalsystem.eaiservice.rest.wahldaten.dto.BasisdatenDTO; +import de.muenchen.oss.wahllokalsystem.eaiservice.rest.wahldaten.dto.WahlDTO; import de.muenchen.oss.wahllokalsystem.eaiservice.rest.wahldaten.dto.WahlberechtigteDTO; import de.muenchen.oss.wahllokalsystem.eaiservice.rest.wahldaten.dto.WahlbezirkeDTO; -import de.muenchen.oss.wahllokalsystem.eaiservice.rest.wahldaten.dto.WahlenDTO; import de.muenchen.oss.wahllokalsystem.eaiservice.rest.wahldaten.dto.WahltagDTO; import de.muenchen.oss.wahllokalsystem.eaiservice.service.wahldaten.WahldatenService; import java.time.LocalDate; @@ -45,8 +45,8 @@ public WahlbezirkeDTO loadWahlbezirke(@RequestParam("forDate") LocalDate wahltag @GetMapping("wahlen") @ResponseStatus(HttpStatus.OK) - public WahlenDTO loadWahlen(@RequestParam("forDate") LocalDate wahltag, @RequestParam("withNummer") String nummer) { - throw new UnsupportedOperationException("Not supported yet."); + public Set loadWahlen(@RequestParam("forDate") LocalDate wahltag, @RequestParam("withNummer") String nummer) { + return wahldatenService.getWahlen(wahltag, nummer); } @GetMapping("basisdaten") diff --git a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahldaten/WahldatenMapper.java b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahldaten/WahldatenMapper.java index b0c3f5e78..1f81a557e 100644 --- a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahldaten/WahldatenMapper.java +++ b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahldaten/WahldatenMapper.java @@ -1,6 +1,8 @@ package de.muenchen.oss.wahllokalsystem.eaiservice.service.wahldaten; +import de.muenchen.oss.wahllokalsystem.eaiservice.domain.wahldaten.Wahl; import de.muenchen.oss.wahllokalsystem.eaiservice.domain.wahldaten.Wahltag; +import de.muenchen.oss.wahllokalsystem.eaiservice.rest.wahldaten.dto.WahlDTO; import de.muenchen.oss.wahllokalsystem.eaiservice.rest.wahldaten.dto.WahltagDTO; import org.mapstruct.Mapper; import org.mapstruct.Mapping; @@ -10,4 +12,8 @@ public interface WahldatenMapper { @Mapping(target = "identifikator", source = "id") WahltagDTO toDTO(Wahltag wahltag); + + @Mapping(target = "identifikator", source = "id") + @Mapping(target = "wahltag", source = "wahltag.tag") + WahlDTO toDTO(Wahl wahl); } diff --git a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahldaten/WahldatenService.java b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahldaten/WahldatenService.java index c48168492..5ad04f94d 100644 --- a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahldaten/WahldatenService.java +++ b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahldaten/WahldatenService.java @@ -1,7 +1,9 @@ package de.muenchen.oss.wahllokalsystem.eaiservice.service.wahldaten; +import de.muenchen.oss.wahllokalsystem.eaiservice.domain.wahldaten.WahlRepository; import de.muenchen.oss.wahllokalsystem.eaiservice.domain.wahldaten.Wahltag; import de.muenchen.oss.wahllokalsystem.eaiservice.domain.wahldaten.WahltageRepository; +import de.muenchen.oss.wahllokalsystem.eaiservice.rest.wahldaten.dto.WahlDTO; import de.muenchen.oss.wahllokalsystem.eaiservice.rest.wahldaten.dto.WahltagDTO; import java.time.LocalDate; import java.util.List; @@ -19,11 +21,18 @@ public class WahldatenService { private final WahltageRepository wahltageRepository; + private final WahlRepository wahlRepository; + @PreAuthorize("hasAuthority('aoueai_BUSINESSACTION_LoadWahltage')") public Set getWahltage(LocalDate wahltageIncludingSince) { return getWahltageIncludingSince(wahltageIncludingSince).stream().map(wahldatenMapper::toDTO).collect(Collectors.toSet()); } + @PreAuthorize("hasAuthority('aoueai_BUSINESSACTION_LoadWahlen')") + public Set getWahlen(final LocalDate wahltag, final String nummer) { + return wahlRepository.findByWahltagTagAndNummer(wahltag, nummer).stream().map(wahldatenMapper::toDTO).collect(Collectors.toSet()); + } + private List getWahltageIncludingSince(LocalDate wahltageIncludingSince) { return wahltageRepository.findByTagAfterOrTagEquals(wahltageIncludingSince, wahltageIncludingSince); } From e552ca6e83e99c8b33c72ef7757e75d47785d8df Mon Sep 17 00:00:00 2001 From: MrSebastian <13592751+MrSebastian@users.noreply.github.com> Date: Fri, 28 Jun 2024 14:18:05 +0200 Subject: [PATCH 10/58] update example requests with load wahlen --- .../src/test/resources/httpRequests/wahldaten.http | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/wls-eai-service/src/test/resources/httpRequests/wahldaten.http b/wls-eai-service/src/test/resources/httpRequests/wahldaten.http index f684622ac..fec1ea9ff 100644 --- a/wls-eai-service/src/test/resources/httpRequests/wahldaten.http +++ b/wls-eai-service/src/test/resources/httpRequests/wahldaten.http @@ -24,4 +24,13 @@ GET {{ WLS_EAI_SERVICE_URL }}/wahldaten/wahltage?includingSince=2024-01-01 GET {{ WLS_EAI_SERVICE_URL }}/wahldaten/wahltage?includingSince=2000-01-01 ### get Wahltag no hits -GET {{ WLS_EAI_SERVICE_URL }}/wahldaten/wahltage?includingSince=3024-01-01 \ No newline at end of file +GET {{ WLS_EAI_SERVICE_URL }}/wahldaten/wahltage?includingSince=3024-01-01 + +### get wahlen on EU-Wahl-Tag +GET {{ WLS_EAI_SERVICE_URL }}/wahldaten/wahlen?forDate=2024-06-09&withNummer=0 + +### get wahlen on Kommunalwahl-Tag +GET {{ WLS_EAI_SERVICE_URL }}/wahldaten/wahlen?forDate=2020-03-15&withNummer=0 + +### get wahlen on day without elections +GET {{ WLS_EAI_SERVICE_URL }}/wahldaten/wahlen?forDate=2034-06-09&withNummer=0 \ No newline at end of file From 0f0ff8868468823a797f62cf00e2cb8862736a4d Mon Sep 17 00:00:00 2001 From: MrSebastian <13592751+MrSebastian@users.noreply.github.com> Date: Fri, 28 Jun 2024 14:54:45 +0200 Subject: [PATCH 11/58] implement get wahlbezirke --- .../domain/wahldaten/Wahlbezirk.java | 34 +++++++++++++++++++ .../domain/wahldaten/WahlbezirkArt.java | 5 +++ .../wahldaten/WahlbezirkRepository.java | 14 ++++++++ .../rest/wahldaten/WahldatenController.java | 6 ++-- .../service/wahldaten/WahldatenMapper.java | 8 +++++ .../service/wahldaten/WahldatenService.java | 10 ++++++ .../h2/V3_2_1__wahlbezirkTestdaten.sql | 11 ++++++ .../migrations/h2/V3_2__createWahlbezirk.sql | 12 +++++++ .../V3_3__addWahlbezirkFKToWahlvorstand.sql | 2 ++ 9 files changed, 99 insertions(+), 3 deletions(-) create mode 100644 wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/Wahlbezirk.java create mode 100644 wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/WahlbezirkArt.java create mode 100644 wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/WahlbezirkRepository.java create mode 100644 wls-eai-service/src/main/resources/db/dummydata/h2/V3_2_1__wahlbezirkTestdaten.sql create mode 100644 wls-eai-service/src/main/resources/db/migrations/h2/V3_2__createWahlbezirk.sql create mode 100644 wls-eai-service/src/main/resources/db/migrations/h2/V3_3__addWahlbezirkFKToWahlvorstand.sql diff --git a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/Wahlbezirk.java b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/Wahlbezirk.java new file mode 100644 index 000000000..859c819c6 --- /dev/null +++ b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/Wahlbezirk.java @@ -0,0 +1,34 @@ +package de.muenchen.oss.wahllokalsystem.eaiservice.domain.wahldaten; + +import de.muenchen.oss.wahllokalsystem.eaiservice.domain.BaseEntity; +import de.muenchen.oss.wahllokalsystem.eaiservice.rest.wahldaten.dto.WahlbezirkArtDTO; +import jakarta.persistence.Entity; +import jakarta.persistence.EnumType; +import jakarta.persistence.Enumerated; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; +import jakarta.validation.constraints.NotNull; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; + +@Entity +@Getter +@Setter +@EqualsAndHashCode(callSuper = true) +@ToString(onlyExplicitlyIncluded = true) +public class Wahlbezirk extends BaseEntity { + + @NotNull + @Enumerated(EnumType.STRING) + private WahlbezirkArtDTO wahlbezirkArt; + + @NotNull + private String nummer; + + @NotNull + @ManyToOne + @JoinColumn(name = "wahlID") + private Wahl wahl; +} diff --git a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/WahlbezirkArt.java b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/WahlbezirkArt.java new file mode 100644 index 000000000..26028722f --- /dev/null +++ b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/WahlbezirkArt.java @@ -0,0 +1,5 @@ +package de.muenchen.oss.wahllokalsystem.eaiservice.domain.wahldaten; + +public enum WahlbezirkArt { + UWB, BWB +} diff --git a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/WahlbezirkRepository.java b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/WahlbezirkRepository.java new file mode 100644 index 000000000..80f542095 --- /dev/null +++ b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/WahlbezirkRepository.java @@ -0,0 +1,14 @@ +package de.muenchen.oss.wahllokalsystem.eaiservice.domain.wahldaten; + +import java.time.LocalDate; +import java.util.List; +import java.util.UUID; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.CrudRepository; +import org.springframework.data.repository.query.Param; + +public interface WahlbezirkRepository extends CrudRepository { + + @Query("SELECT wb FROM Wahlbezirk wb JOIN FETCH wb.wahl w JOIN FETCH w.wahltag t WHERE t.tag = (:wahltag) AND w.nummer = (:nummer)") + List findWahlbezirkeWithWahlAndWahltagForDateAndNummer(@Param("wahltag") LocalDate wahltag, @Param("nummer") String nummer); +} diff --git a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/rest/wahldaten/WahldatenController.java b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/rest/wahldaten/WahldatenController.java index 712c74db9..e5472b2ac 100644 --- a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/rest/wahldaten/WahldatenController.java +++ b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/rest/wahldaten/WahldatenController.java @@ -3,7 +3,7 @@ import de.muenchen.oss.wahllokalsystem.eaiservice.rest.wahldaten.dto.BasisdatenDTO; import de.muenchen.oss.wahllokalsystem.eaiservice.rest.wahldaten.dto.WahlDTO; import de.muenchen.oss.wahllokalsystem.eaiservice.rest.wahldaten.dto.WahlberechtigteDTO; -import de.muenchen.oss.wahllokalsystem.eaiservice.rest.wahldaten.dto.WahlbezirkeDTO; +import de.muenchen.oss.wahllokalsystem.eaiservice.rest.wahldaten.dto.WahlbezirkDTO; import de.muenchen.oss.wahllokalsystem.eaiservice.rest.wahldaten.dto.WahltagDTO; import de.muenchen.oss.wahllokalsystem.eaiservice.service.wahldaten.WahldatenService; import java.time.LocalDate; @@ -39,8 +39,8 @@ public Set loadWahltageSinceIncluding(@RequestParam("includingSince" @GetMapping("wahlbezirk") @ResponseStatus(HttpStatus.OK) - public WahlbezirkeDTO loadWahlbezirke(@RequestParam("forDate") LocalDate wahltag, @RequestParam("withNummer") String nummer) { - throw new UnsupportedOperationException("Not supported yet."); + public Set loadWahlbezirke(@RequestParam("forDate") LocalDate wahltag, @RequestParam("withNummer") String nummer) { + return wahldatenService.getWahlbezirke(wahltag, nummer); } @GetMapping("wahlen") diff --git a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahldaten/WahldatenMapper.java b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahldaten/WahldatenMapper.java index 1f81a557e..a4e6016c6 100644 --- a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahldaten/WahldatenMapper.java +++ b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahldaten/WahldatenMapper.java @@ -1,8 +1,10 @@ package de.muenchen.oss.wahllokalsystem.eaiservice.service.wahldaten; import de.muenchen.oss.wahllokalsystem.eaiservice.domain.wahldaten.Wahl; +import de.muenchen.oss.wahllokalsystem.eaiservice.domain.wahldaten.Wahlbezirk; import de.muenchen.oss.wahllokalsystem.eaiservice.domain.wahldaten.Wahltag; import de.muenchen.oss.wahllokalsystem.eaiservice.rest.wahldaten.dto.WahlDTO; +import de.muenchen.oss.wahllokalsystem.eaiservice.rest.wahldaten.dto.WahlbezirkDTO; import de.muenchen.oss.wahllokalsystem.eaiservice.rest.wahldaten.dto.WahltagDTO; import org.mapstruct.Mapper; import org.mapstruct.Mapping; @@ -16,4 +18,10 @@ public interface WahldatenMapper { @Mapping(target = "identifikator", source = "id") @Mapping(target = "wahltag", source = "wahltag.tag") WahlDTO toDTO(Wahl wahl); + + @Mapping(target = "identifikator", source = "id") + @Mapping(target = "wahltag", source = "wahl.wahltag.tag") + @Mapping(target = "wahlID", source = "wahl.id") + @Mapping(target = "wahlnummer", source = "wahl.nummer") + WahlbezirkDTO toDTO(Wahlbezirk wahlbezirk); } diff --git a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahldaten/WahldatenService.java b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahldaten/WahldatenService.java index 5ad04f94d..6034ddce6 100644 --- a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahldaten/WahldatenService.java +++ b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahldaten/WahldatenService.java @@ -1,9 +1,11 @@ package de.muenchen.oss.wahllokalsystem.eaiservice.service.wahldaten; import de.muenchen.oss.wahllokalsystem.eaiservice.domain.wahldaten.WahlRepository; +import de.muenchen.oss.wahllokalsystem.eaiservice.domain.wahldaten.WahlbezirkRepository; import de.muenchen.oss.wahllokalsystem.eaiservice.domain.wahldaten.Wahltag; import de.muenchen.oss.wahllokalsystem.eaiservice.domain.wahldaten.WahltageRepository; import de.muenchen.oss.wahllokalsystem.eaiservice.rest.wahldaten.dto.WahlDTO; +import de.muenchen.oss.wahllokalsystem.eaiservice.rest.wahldaten.dto.WahlbezirkDTO; import de.muenchen.oss.wahllokalsystem.eaiservice.rest.wahldaten.dto.WahltagDTO; import java.time.LocalDate; import java.util.List; @@ -23,6 +25,8 @@ public class WahldatenService { private final WahlRepository wahlRepository; + private final WahlbezirkRepository wahlbezirkRepository; + @PreAuthorize("hasAuthority('aoueai_BUSINESSACTION_LoadWahltage')") public Set getWahltage(LocalDate wahltageIncludingSince) { return getWahltageIncludingSince(wahltageIncludingSince).stream().map(wahldatenMapper::toDTO).collect(Collectors.toSet()); @@ -33,6 +37,12 @@ public Set getWahlen(final LocalDate wahltag, final String nummer) { return wahlRepository.findByWahltagTagAndNummer(wahltag, nummer).stream().map(wahldatenMapper::toDTO).collect(Collectors.toSet()); } + @PreAuthorize("hasAuthority('aoueai_BUSINESSACTION_LoadWahlbezirke')") + public Set getWahlbezirke(final LocalDate wahltag, final String nummer) { + return wahlbezirkRepository.findWahlbezirkeWithWahlAndWahltagForDateAndNummer(wahltag, nummer).stream().map(wahldatenMapper::toDTO) + .collect(Collectors.toSet()); + } + private List getWahltageIncludingSince(LocalDate wahltageIncludingSince) { return wahltageRepository.findByTagAfterOrTagEquals(wahltageIncludingSince, wahltageIncludingSince); } diff --git a/wls-eai-service/src/main/resources/db/dummydata/h2/V3_2_1__wahlbezirkTestdaten.sql b/wls-eai-service/src/main/resources/db/dummydata/h2/V3_2_1__wahlbezirkTestdaten.sql new file mode 100644 index 000000000..67c08cb23 --- /dev/null +++ b/wls-eai-service/src/main/resources/db/dummydata/h2/V3_2_1__wahlbezirkTestdaten.sql @@ -0,0 +1,11 @@ +INSERT INTO wahlbezirk (id, wahlbezirkArt, nummer, wahlID) +values ('00000000-0000-0000-0000-000000000001', 'UWB', 'Wahlbezirk 1', '00000000-0000-0000-0000-000000000001'); + +INSERT INTO wahlbezirk (id, wahlbezirkArt, nummer, wahlID) +values ('00000000-0000-0000-0000-000000000002', 'UWB', 'Wahlbezirk 2', '00000000-0000-0000-0000-000000000001'); + +INSERT INTO wahlbezirk (id, wahlbezirkArt, nummer, wahlID) +values ('00000000-0000-0000-0000-000000000003', 'BWB', 'Wahlbezirk 3', '00000000-0000-0000-0000-000000000001'); + +INSERT INTO wahlbezirk (id, wahlbezirkArt, nummer, wahlID) +values ('00000000-0000-0000-0000-000000000004', 'UWB', 'Wahlbezirk 1', '00000000-0000-0000-0000-000000000001'); \ No newline at end of file diff --git a/wls-eai-service/src/main/resources/db/migrations/h2/V3_2__createWahlbezirk.sql b/wls-eai-service/src/main/resources/db/migrations/h2/V3_2__createWahlbezirk.sql new file mode 100644 index 000000000..aa814d113 --- /dev/null +++ b/wls-eai-service/src/main/resources/db/migrations/h2/V3_2__createWahlbezirk.sql @@ -0,0 +1,12 @@ +CREATE TABLE wahlbezirk +( + id VARCHAR2(36) NOT NULL, + wahlbezirkArt VARCHAR2(3) NOT NULL, + nummer VARCHAR2(36) NOT NULL, + + wahlID VARCHAR2(36) NOT NULL, + + FOREIGN KEY (wahlID) REFERENCES wahl (id), + + PRIMARY KEY (id) +) \ No newline at end of file diff --git a/wls-eai-service/src/main/resources/db/migrations/h2/V3_3__addWahlbezirkFKToWahlvorstand.sql b/wls-eai-service/src/main/resources/db/migrations/h2/V3_3__addWahlbezirkFKToWahlvorstand.sql new file mode 100644 index 000000000..faae94787 --- /dev/null +++ b/wls-eai-service/src/main/resources/db/migrations/h2/V3_3__addWahlbezirkFKToWahlvorstand.sql @@ -0,0 +1,2 @@ +ALTER TABLE wahlvorstand + ADD FOREIGN KEY (wahlbezirkID) REFERENCES wahlbezirk (id) \ No newline at end of file From 989f1249613e024059577d343c968ddbc6e12f90 Mon Sep 17 00:00:00 2001 From: MrSebastian <13592751+MrSebastian@users.noreply.github.com> Date: Fri, 28 Jun 2024 14:55:19 +0200 Subject: [PATCH 12/58] add example requests for load wahlbezirke --- .../src/test/resources/httpRequests/wahldaten.http | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/wls-eai-service/src/test/resources/httpRequests/wahldaten.http b/wls-eai-service/src/test/resources/httpRequests/wahldaten.http index fec1ea9ff..1084c1964 100644 --- a/wls-eai-service/src/test/resources/httpRequests/wahldaten.http +++ b/wls-eai-service/src/test/resources/httpRequests/wahldaten.http @@ -33,4 +33,10 @@ GET {{ WLS_EAI_SERVICE_URL }}/wahldaten/wahlen?forDate=2024-06-09&withNummer=0 GET {{ WLS_EAI_SERVICE_URL }}/wahldaten/wahlen?forDate=2020-03-15&withNummer=0 ### get wahlen on day without elections -GET {{ WLS_EAI_SERVICE_URL }}/wahldaten/wahlen?forDate=2034-06-09&withNummer=0 \ No newline at end of file +GET {{ WLS_EAI_SERVICE_URL }}/wahldaten/wahlen?forDate=2034-06-09&withNummer=0 + +### get wahlbezirke EU-Wahl +GET {{ WLS_EAI_SERVICE_URL }}/wahldaten/wahlbezirk?forDate=2024-06-09&withNummer=0 + +### get wahlbezirke Kommunalwahl (empty response) +GET {{ WLS_EAI_SERVICE_URL }}/wahldaten/wahlbezirk?forDate=2020-03-15&withNummer=0 \ No newline at end of file From 464cf7bf5e76b0567cf650e49bb52ad38fc67344 Mon Sep 17 00:00:00 2001 From: MrSebastian <13592751+MrSebastian@users.noreply.github.com> Date: Fri, 28 Jun 2024 15:41:03 +0200 Subject: [PATCH 13/58] implement load wahlberechtigte --- .../domain/wahldaten/Wahlbezirk.java | 8 ++++++- .../wahldaten/WahlbezirkRepository.java | 5 +++- .../rest/wahldaten/WahldatenController.java | 2 +- .../eaiservice/service/IDConverter.java | 24 +++++++++++++++++++ .../service/wahldaten/WahldatenMapper.java | 5 ++++ .../service/wahldaten/WahldatenService.java | 13 +++++++++- .../wahlvorstand/WahlvorstandService.java | 21 ++++------------ .../h2/V3_2_1__wahlbezirkTestdaten.sql | 20 +++++++++------- .../migrations/h2/V3_2__createWahlbezirk.sql | 3 +++ 9 files changed, 73 insertions(+), 28 deletions(-) create mode 100644 wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/IDConverter.java diff --git a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/Wahlbezirk.java b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/Wahlbezirk.java index 859c819c6..2d38205f7 100644 --- a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/Wahlbezirk.java +++ b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/Wahlbezirk.java @@ -19,7 +19,7 @@ @EqualsAndHashCode(callSuper = true) @ToString(onlyExplicitlyIncluded = true) public class Wahlbezirk extends BaseEntity { - + @NotNull @Enumerated(EnumType.STRING) private WahlbezirkArtDTO wahlbezirkArt; @@ -31,4 +31,10 @@ public class Wahlbezirk extends BaseEntity { @ManyToOne @JoinColumn(name = "wahlID") private Wahl wahl; + + private long a1; + + private long a2; + + private long a3; } diff --git a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/WahlbezirkRepository.java b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/WahlbezirkRepository.java index 80f542095..73c976c7f 100644 --- a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/WahlbezirkRepository.java +++ b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/WahlbezirkRepository.java @@ -10,5 +10,8 @@ public interface WahlbezirkRepository extends CrudRepository { @Query("SELECT wb FROM Wahlbezirk wb JOIN FETCH wb.wahl w JOIN FETCH w.wahltag t WHERE t.tag = (:wahltag) AND w.nummer = (:nummer)") - List findWahlbezirkeWithWahlAndWahltagForDateAndNummer(@Param("wahltag") LocalDate wahltag, @Param("nummer") String nummer); + List findWahlbezirkeWithWahlAndWahltagById(@Param("wahltag") LocalDate wahltag, @Param("nummer") String nummer); + + @Query("SELECT wb FROM Wahlbezirk wb JOIN FETCH wb.wahl w JOIN FETCH w.wahltag t WHERE wb.id = (:wahlbezirkID)") + List findWahlbezirkeWithWahlAndWahltagById(@Param("wahlbezirkID") UUID wahlbezirkID); } diff --git a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/rest/wahldaten/WahldatenController.java b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/rest/wahldaten/WahldatenController.java index e5472b2ac..070506497 100644 --- a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/rest/wahldaten/WahldatenController.java +++ b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/rest/wahldaten/WahldatenController.java @@ -28,7 +28,7 @@ public class WahldatenController { @GetMapping("wahlbezirke/{wahlbezirkID}/wahlberechtigte") @ResponseStatus(HttpStatus.OK) public List loadWahlberechtigte(@PathVariable("wahlbezirkID") String wahlbezirkID) { - throw new UnsupportedOperationException("Not supported yet."); + return wahldatenService.getWahlberechtigte(wahlbezirkID); } @GetMapping("wahltage") diff --git a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/IDConverter.java b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/IDConverter.java new file mode 100644 index 000000000..aa2aa79d7 --- /dev/null +++ b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/IDConverter.java @@ -0,0 +1,24 @@ +package de.muenchen.oss.wahllokalsystem.eaiservice.service; + +import de.muenchen.oss.wahllokalsystem.eaiservice.rest.common.exception.ExceptionConstants; +import de.muenchen.oss.wahllokalsystem.wls.common.exception.util.ExceptionFactory; +import java.util.UUID; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Component; + +@Component +@RequiredArgsConstructor +public class IDConverter { + + private final ExceptionFactory exceptionFactory; + + //CHECKSTYLE.OFF: AbbreviationAsWordInName - illegal match cause UUID should not be shortened + public UUID convertIDToUUIDOrThrow(final String id) { + //CHECKSTYLE.ON: AbbreviationAsWordInName + try { + return UUID.fromString(id); + } catch (final IllegalArgumentException illegalArgumentException) { + throw exceptionFactory.createFachlicheWlsException(ExceptionConstants.ID_NICHT_KONVERTIERBAR); + } + } +} diff --git a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahldaten/WahldatenMapper.java b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahldaten/WahldatenMapper.java index a4e6016c6..38ab5a591 100644 --- a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahldaten/WahldatenMapper.java +++ b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahldaten/WahldatenMapper.java @@ -4,6 +4,7 @@ import de.muenchen.oss.wahllokalsystem.eaiservice.domain.wahldaten.Wahlbezirk; import de.muenchen.oss.wahllokalsystem.eaiservice.domain.wahldaten.Wahltag; import de.muenchen.oss.wahllokalsystem.eaiservice.rest.wahldaten.dto.WahlDTO; +import de.muenchen.oss.wahllokalsystem.eaiservice.rest.wahldaten.dto.WahlberechtigteDTO; import de.muenchen.oss.wahllokalsystem.eaiservice.rest.wahldaten.dto.WahlbezirkDTO; import de.muenchen.oss.wahllokalsystem.eaiservice.rest.wahldaten.dto.WahltagDTO; import org.mapstruct.Mapper; @@ -24,4 +25,8 @@ public interface WahldatenMapper { @Mapping(target = "wahlID", source = "wahl.id") @Mapping(target = "wahlnummer", source = "wahl.nummer") WahlbezirkDTO toDTO(Wahlbezirk wahlbezirk); + + @Mapping(target = "wahlID", source = "wahl.id") + @Mapping(target = "wahlbezirkID", source = "id") + WahlberechtigteDTO toWahlberechtigteDTO(Wahlbezirk wahlbezirk); } diff --git a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahldaten/WahldatenService.java b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahldaten/WahldatenService.java index 6034ddce6..9ef3fc6a0 100644 --- a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahldaten/WahldatenService.java +++ b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahldaten/WahldatenService.java @@ -5,8 +5,10 @@ import de.muenchen.oss.wahllokalsystem.eaiservice.domain.wahldaten.Wahltag; import de.muenchen.oss.wahllokalsystem.eaiservice.domain.wahldaten.WahltageRepository; import de.muenchen.oss.wahllokalsystem.eaiservice.rest.wahldaten.dto.WahlDTO; +import de.muenchen.oss.wahllokalsystem.eaiservice.rest.wahldaten.dto.WahlberechtigteDTO; import de.muenchen.oss.wahllokalsystem.eaiservice.rest.wahldaten.dto.WahlbezirkDTO; import de.muenchen.oss.wahllokalsystem.eaiservice.rest.wahldaten.dto.WahltagDTO; +import de.muenchen.oss.wahllokalsystem.eaiservice.service.IDConverter; import java.time.LocalDate; import java.util.List; import java.util.Set; @@ -21,6 +23,8 @@ public class WahldatenService { private final WahldatenMapper wahldatenMapper; + private final IDConverter idConverter; + private final WahltageRepository wahltageRepository; private final WahlRepository wahlRepository; @@ -39,10 +43,17 @@ public Set getWahlen(final LocalDate wahltag, final String nummer) { @PreAuthorize("hasAuthority('aoueai_BUSINESSACTION_LoadWahlbezirke')") public Set getWahlbezirke(final LocalDate wahltag, final String nummer) { - return wahlbezirkRepository.findWahlbezirkeWithWahlAndWahltagForDateAndNummer(wahltag, nummer).stream().map(wahldatenMapper::toDTO) + return wahlbezirkRepository.findWahlbezirkeWithWahlAndWahltagById(wahltag, nummer).stream().map(wahldatenMapper::toDTO) .collect(Collectors.toSet()); } + @PreAuthorize("hasAuthority('aoueai_BUSINESSACTION_LoadWahlberechtigte')") + public List getWahlberechtigte(final String wahlbezirkID) { + return wahlbezirkRepository.findWahlbezirkeWithWahlAndWahltagById(idConverter.convertIDToUUIDOrThrow(wahlbezirkID)).stream() + .map(wahldatenMapper::toWahlberechtigteDTO) + .toList(); + } + private List getWahltageIncludingSince(LocalDate wahltageIncludingSince) { return wahltageRepository.findByTagAfterOrTagEquals(wahltageIncludingSince, wahltageIncludingSince); } diff --git a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahlvorstand/WahlvorstandService.java b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahlvorstand/WahlvorstandService.java index 3b2c971ca..9c3b913a2 100644 --- a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahlvorstand/WahlvorstandService.java +++ b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahlvorstand/WahlvorstandService.java @@ -4,11 +4,10 @@ import de.muenchen.oss.wahllokalsystem.eaiservice.domain.wahlvorstand.WahlvorstandRepository; import de.muenchen.oss.wahllokalsystem.eaiservice.domain.wahlvorstand.Wahlvorstandsmitglied; import de.muenchen.oss.wahllokalsystem.eaiservice.exception.NotFoundException; -import de.muenchen.oss.wahllokalsystem.eaiservice.rest.common.exception.ExceptionConstants; import de.muenchen.oss.wahllokalsystem.eaiservice.rest.wahlvorstand.dto.WahlvorstandDTO; import de.muenchen.oss.wahllokalsystem.eaiservice.rest.wahlvorstand.dto.WahlvorstandsaktualisierungDTO; import de.muenchen.oss.wahllokalsystem.eaiservice.rest.wahlvorstand.dto.WahlvorstandsmitgliedAktualisierungDTO; -import de.muenchen.oss.wahllokalsystem.wls.common.exception.util.ExceptionFactory; +import de.muenchen.oss.wahllokalsystem.eaiservice.service.IDConverter; import java.time.LocalDateTime; import java.util.UUID; import lombok.RequiredArgsConstructor; @@ -22,16 +21,16 @@ public class WahlvorstandService { private final WahlvorstandRepository wahlvorstandRepository; - private final ExceptionFactory exceptionFactory; - private final WahlvorstandMapper wahlvorstandMapper; private final WahlvorstandValidator wahlvorstandValidator; + private final IDConverter idConverter; + @PreAuthorize("hasAuthority('aoueai_BUSINESSACTION_LoadWahlvorstand')") public WahlvorstandDTO getWahlvorstandForWahlbezirk(final String wahlbezirkID) { wahlvorstandValidator.validateWahlbezirkIDOrThrow(wahlbezirkID); - val wahlbezirkUUID = convertIDToUUIDOrThrow(wahlbezirkID); + val wahlbezirkUUID = idConverter.convertIDToUUIDOrThrow(wahlbezirkID); return wahlvorstandMapper.toDTO(findByWahlbezirkIDOrThrow(wahlbezirkUUID)); } @@ -39,7 +38,7 @@ public WahlvorstandDTO getWahlvorstandForWahlbezirk(final String wahlbezirkID) { public void setAnwesenheit(final WahlvorstandsaktualisierungDTO aktualisierung) { wahlvorstandValidator.validateSaveAnwesenheitDataOrThrow(aktualisierung); - val wahlvorstandToUpdate = findByWahlbezirkIDOrThrow(convertIDToUUIDOrThrow(aktualisierung.wahlbezirkID())); + val wahlvorstandToUpdate = findByWahlbezirkIDOrThrow(idConverter.convertIDToUUIDOrThrow(aktualisierung.wahlbezirkID())); updateAnwesenheitOfWahlvorstand(aktualisierung, wahlvorstandToUpdate); wahlvorstandRepository.save(wahlvorstandToUpdate); } @@ -58,16 +57,6 @@ private void updateAnwesenheitOfWahlvorstandsmitglied(final LocalDateTime timeOf mitglied.setAnwesend(mitgliedUpdateData.anwesend()); } - //CHECKSTYLE.OFF: AbbreviationAsWordInName - illegal match cause UUID should not be shortened - private UUID convertIDToUUIDOrThrow(final String id) { - //CHECKSTYLE.ON: AbbreviationAsWordInName - try { - return UUID.fromString(id); - } catch (final IllegalArgumentException illegalArgumentException) { - throw exceptionFactory.createFachlicheWlsException(ExceptionConstants.ID_NICHT_KONVERTIERBAR); - } - } - private Wahlvorstand findByWahlbezirkIDOrThrow(final UUID wahlbezirkID) { return wahlvorstandRepository.findFirstByWahlbezirkID(wahlbezirkID).orElseThrow(() -> new NotFoundException(wahlbezirkID, Wahlvorstand.class)); } diff --git a/wls-eai-service/src/main/resources/db/dummydata/h2/V3_2_1__wahlbezirkTestdaten.sql b/wls-eai-service/src/main/resources/db/dummydata/h2/V3_2_1__wahlbezirkTestdaten.sql index 67c08cb23..b0905614a 100644 --- a/wls-eai-service/src/main/resources/db/dummydata/h2/V3_2_1__wahlbezirkTestdaten.sql +++ b/wls-eai-service/src/main/resources/db/dummydata/h2/V3_2_1__wahlbezirkTestdaten.sql @@ -1,11 +1,15 @@ -INSERT INTO wahlbezirk (id, wahlbezirkArt, nummer, wahlID) -values ('00000000-0000-0000-0000-000000000001', 'UWB', 'Wahlbezirk 1', '00000000-0000-0000-0000-000000000001'); +INSERT INTO wahlbezirk (id, wahlbezirkArt, nummer, wahlID, a1, a2, a3) +values ('00000000-0000-0000-0000-000000000001', 'UWB', 'Wahlbezirk 1', '00000000-0000-0000-0000-000000000001', 30, 5, + 1); -INSERT INTO wahlbezirk (id, wahlbezirkArt, nummer, wahlID) -values ('00000000-0000-0000-0000-000000000002', 'UWB', 'Wahlbezirk 2', '00000000-0000-0000-0000-000000000001'); +INSERT INTO wahlbezirk (id, wahlbezirkArt, nummer, wahlID, a1, a2, a3) +values ('00000000-0000-0000-0000-000000000002', 'UWB', 'Wahlbezirk 2', '00000000-0000-0000-0000-000000000001', 32, 12, + 2); -INSERT INTO wahlbezirk (id, wahlbezirkArt, nummer, wahlID) -values ('00000000-0000-0000-0000-000000000003', 'BWB', 'Wahlbezirk 3', '00000000-0000-0000-0000-000000000001'); +INSERT INTO wahlbezirk (id, wahlbezirkArt, nummer, wahlID, a1, a2, a3) +values ('00000000-0000-0000-0000-000000000003', 'BWB', 'Wahlbezirk 3', '00000000-0000-0000-0000-000000000001', 17, 1, + 0); -INSERT INTO wahlbezirk (id, wahlbezirkArt, nummer, wahlID) -values ('00000000-0000-0000-0000-000000000004', 'UWB', 'Wahlbezirk 1', '00000000-0000-0000-0000-000000000001'); \ No newline at end of file +INSERT INTO wahlbezirk (id, wahlbezirkArt, nummer, wahlID, a1, a2, a3) +values ('00000000-0000-0000-0000-000000000004', 'UWB', 'Wahlbezirk 1', '00000000-0000-0000-0000-000000000001', 42, 5, + 3); \ No newline at end of file diff --git a/wls-eai-service/src/main/resources/db/migrations/h2/V3_2__createWahlbezirk.sql b/wls-eai-service/src/main/resources/db/migrations/h2/V3_2__createWahlbezirk.sql index aa814d113..eb775b3da 100644 --- a/wls-eai-service/src/main/resources/db/migrations/h2/V3_2__createWahlbezirk.sql +++ b/wls-eai-service/src/main/resources/db/migrations/h2/V3_2__createWahlbezirk.sql @@ -3,6 +3,9 @@ CREATE TABLE wahlbezirk id VARCHAR2(36) NOT NULL, wahlbezirkArt VARCHAR2(3) NOT NULL, nummer VARCHAR2(36) NOT NULL, + a1 BIGINT NOT NULL, + a2 BIGINT NOT NULL, + a3 BIGINT NOT NULL, wahlID VARCHAR2(36) NOT NULL, From f6949b42dcf03f3f55228f0973c4e8fe989d30ce Mon Sep 17 00:00:00 2001 From: MrSebastian <13592751+MrSebastian@users.noreply.github.com> Date: Fri, 28 Jun 2024 15:41:40 +0200 Subject: [PATCH 14/58] add example requests for load wahlberechtigte --- .../src/test/resources/httpRequests/wahldaten.http | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/wls-eai-service/src/test/resources/httpRequests/wahldaten.http b/wls-eai-service/src/test/resources/httpRequests/wahldaten.http index 1084c1964..0d2f504ac 100644 --- a/wls-eai-service/src/test/resources/httpRequests/wahldaten.http +++ b/wls-eai-service/src/test/resources/httpRequests/wahldaten.http @@ -39,4 +39,16 @@ GET {{ WLS_EAI_SERVICE_URL }}/wahldaten/wahlen?forDate=2034-06-09&withNummer=0 GET {{ WLS_EAI_SERVICE_URL }}/wahldaten/wahlbezirk?forDate=2024-06-09&withNummer=0 ### get wahlbezirke Kommunalwahl (empty response) -GET {{ WLS_EAI_SERVICE_URL }}/wahldaten/wahlbezirk?forDate=2020-03-15&withNummer=0 \ No newline at end of file +GET {{ WLS_EAI_SERVICE_URL }}/wahldaten/wahlbezirk?forDate=2020-03-15&withNummer=0 + +### get wahlberechtigte wahlbezirk-1 +GET {{ WLS_EAI_SERVICE_URL }}/wahldaten/wahlbezirke/00000000-0000-0000-0000-000000000001/wahlberechtigte + +### get wahlberechtigte wahlbezirk-2 +GET {{ WLS_EAI_SERVICE_URL }}/wahldaten/wahlbezirke/00000000-0000-0000-0000-000000000002/wahlberechtigte + +### get wahlberechtigte wahlbezirk-3 +GET {{ WLS_EAI_SERVICE_URL }}/wahldaten/wahlbezirke/00000000-0000-0000-0000-000000000003/wahlberechtigte + +### get wahlberechtigte wahlbezirk-4 +GET {{ WLS_EAI_SERVICE_URL }}/wahldaten/wahlbezirke/00000000-0000-0000-0000-000000000004/wahlberechtigte \ No newline at end of file From 727a2bdf7ebe2a28d366d1a466956f06071e6819 Mon Sep 17 00:00:00 2001 From: MrSebastian <13592751+MrSebastian@users.noreply.github.com> Date: Fri, 28 Jun 2024 15:55:50 +0200 Subject: [PATCH 15/58] start with implement get basisdaten --- .../rest/wahldaten/WahldatenController.java | 2 +- .../service/wahldaten/WahldatenService.java | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/rest/wahldaten/WahldatenController.java b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/rest/wahldaten/WahldatenController.java index 070506497..a82684475 100644 --- a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/rest/wahldaten/WahldatenController.java +++ b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/rest/wahldaten/WahldatenController.java @@ -52,6 +52,6 @@ public Set loadWahlen(@RequestParam("forDate") LocalDate wahltag, @Requ @GetMapping("basisdaten") @ResponseStatus(HttpStatus.OK) public BasisdatenDTO loadBasisdaten(@RequestParam("forDate") LocalDate wahltag, @RequestParam("withNummer") String nummer) { - throw new UnsupportedOperationException("Not supported yet."); + return wahldatenService.getBasisdaten(wahltag, nummer); } } diff --git a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahldaten/WahldatenService.java b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahldaten/WahldatenService.java index 9ef3fc6a0..bf2602564 100644 --- a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahldaten/WahldatenService.java +++ b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahldaten/WahldatenService.java @@ -4,6 +4,9 @@ import de.muenchen.oss.wahllokalsystem.eaiservice.domain.wahldaten.WahlbezirkRepository; import de.muenchen.oss.wahllokalsystem.eaiservice.domain.wahldaten.Wahltag; import de.muenchen.oss.wahllokalsystem.eaiservice.domain.wahldaten.WahltageRepository; +import de.muenchen.oss.wahllokalsystem.eaiservice.rest.wahldaten.dto.BasisdatenDTO; +import de.muenchen.oss.wahllokalsystem.eaiservice.rest.wahldaten.dto.BasisstrukturdatenDTO; +import de.muenchen.oss.wahllokalsystem.eaiservice.rest.wahldaten.dto.StimmzettelgebietDTO; import de.muenchen.oss.wahllokalsystem.eaiservice.rest.wahldaten.dto.WahlDTO; import de.muenchen.oss.wahllokalsystem.eaiservice.rest.wahldaten.dto.WahlberechtigteDTO; import de.muenchen.oss.wahllokalsystem.eaiservice.rest.wahldaten.dto.WahlbezirkDTO; @@ -14,6 +17,7 @@ import java.util.Set; import java.util.stream.Collectors; import lombok.RequiredArgsConstructor; +import lombok.val; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.stereotype.Service; @@ -54,6 +58,18 @@ public List getWahlberechtigte(final String wahlbezirkID) { .toList(); } + @PreAuthorize("hasAuthority('aoueai_BUSINESSACTION_LoadBasisdaten')") + public BasisdatenDTO getBasisdaten(final LocalDate wahltag, final String nummer) { + val basisstrukturdaten = Set.of(new BasisstrukturdatenDTO(null, null, null, null)); + val wahlen = getWahlen(wahltag, nummer); + val wahlbezirke = getWahlbezirke(wahltag, nummer); + //TODO stimmzettelgebiet liegt in der Struktur zwischen Wahl und Wahlbezirk + //wahl -1..n-> gebiet -1..-> bezirk + val stimmzettelgebiete = Set.of(new StimmzettelgebietDTO(null, null, null, null, null)); + + return new BasisdatenDTO(basisstrukturdaten, wahlen, wahlbezirke, stimmzettelgebiete); + } + private List getWahltageIncludingSince(LocalDate wahltageIncludingSince) { return wahltageRepository.findByTagAfterOrTagEquals(wahltageIncludingSince, wahltageIncludingSince); } From 8540970a3305187aef989b556ad1ce51a3eac262 Mon Sep 17 00:00:00 2001 From: MrSebastian <13592751+MrSebastian@users.noreply.github.com> Date: Fri, 28 Jun 2024 15:56:26 +0200 Subject: [PATCH 16/58] remove unnecessary wrapper dtos --- .../eaiservice/rest/wahldaten/dto/WahlbezirkeDTO.java | 8 -------- .../eaiservice/rest/wahldaten/dto/WahlenDTO.java | 8 -------- .../eaiservice/rest/wahldaten/dto/WahltageDTO.java | 8 -------- 3 files changed, 24 deletions(-) delete mode 100644 wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/rest/wahldaten/dto/WahlbezirkeDTO.java delete mode 100644 wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/rest/wahldaten/dto/WahlenDTO.java delete mode 100644 wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/rest/wahldaten/dto/WahltageDTO.java diff --git a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/rest/wahldaten/dto/WahlbezirkeDTO.java b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/rest/wahldaten/dto/WahlbezirkeDTO.java deleted file mode 100644 index c39dbc899..000000000 --- a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/rest/wahldaten/dto/WahlbezirkeDTO.java +++ /dev/null @@ -1,8 +0,0 @@ -package de.muenchen.oss.wahllokalsystem.eaiservice.rest.wahldaten.dto; - -import jakarta.validation.constraints.NotNull; -import jakarta.validation.constraints.Size; -import java.util.Set; - -public record WahlbezirkeDTO(@NotNull @Size(min = 1) Set wahlbezirke) { -} diff --git a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/rest/wahldaten/dto/WahlenDTO.java b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/rest/wahldaten/dto/WahlenDTO.java deleted file mode 100644 index c4ab289b9..000000000 --- a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/rest/wahldaten/dto/WahlenDTO.java +++ /dev/null @@ -1,8 +0,0 @@ -package de.muenchen.oss.wahllokalsystem.eaiservice.rest.wahldaten.dto; - -import jakarta.validation.constraints.NotNull; -import jakarta.validation.constraints.Size; -import java.util.Set; - -public record WahlenDTO(@NotNull @Size(min = 1) Set wahlen) { -} diff --git a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/rest/wahldaten/dto/WahltageDTO.java b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/rest/wahldaten/dto/WahltageDTO.java deleted file mode 100644 index a3da99e17..000000000 --- a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/rest/wahldaten/dto/WahltageDTO.java +++ /dev/null @@ -1,8 +0,0 @@ -package de.muenchen.oss.wahllokalsystem.eaiservice.rest.wahldaten.dto; - -import jakarta.validation.constraints.NotNull; -import jakarta.validation.constraints.Size; -import java.util.Set; - -public record WahltageDTO(@NotNull @Size(min = 1) Set wahltage) { -} From 42b56c6efc7994408c1ecef7a7c057992719face Mon Sep 17 00:00:00 2001 From: MrSebastian <13592751+MrSebastian@users.noreply.github.com> Date: Mon, 1 Jul 2024 11:56:27 +0200 Subject: [PATCH 17/58] finalize get basisdaten implementation --- .../domain/wahldaten/Stimmzettelgebiet.java | 38 +++++++++++++++++++ .../StimmzettelgebietRepository.java | 11 ++++++ .../wahldaten/Stimmzettelgebietsart.java | 5 +++ .../domain/wahldaten/Wahlbezirk.java | 4 +- .../wahldaten/WahlbezirkRepository.java | 8 ++-- .../service/wahldaten/WahldatenMapper.java | 21 ++++++++-- .../service/wahldaten/WahldatenService.java | 25 +++++++----- .../h2/V3_2_1__stimmzettelgebietTestdaten.sql | 12 ++++++ .../h2/V3_2_1__wahlbezirkTestdaten.sql | 15 -------- .../h2/V3_3_1__wahlbezirkTestdaten.sql | 15 ++++++++ .../h2/V3_2__createStimmzettelgebiet.sql | 13 +++++++ .../migrations/h2/V3_2__createWahlbezirk.sql | 15 -------- .../migrations/h2/V3_3__createWahlbezirk.sql | 15 ++++++++ ...> V3_4__addWahlbezirkFKToWahlvorstand.sql} | 0 14 files changed, 148 insertions(+), 49 deletions(-) create mode 100644 wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/Stimmzettelgebiet.java create mode 100644 wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/StimmzettelgebietRepository.java create mode 100644 wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/Stimmzettelgebietsart.java create mode 100644 wls-eai-service/src/main/resources/db/dummydata/h2/V3_2_1__stimmzettelgebietTestdaten.sql delete mode 100644 wls-eai-service/src/main/resources/db/dummydata/h2/V3_2_1__wahlbezirkTestdaten.sql create mode 100644 wls-eai-service/src/main/resources/db/dummydata/h2/V3_3_1__wahlbezirkTestdaten.sql create mode 100644 wls-eai-service/src/main/resources/db/migrations/h2/V3_2__createStimmzettelgebiet.sql delete mode 100644 wls-eai-service/src/main/resources/db/migrations/h2/V3_2__createWahlbezirk.sql create mode 100644 wls-eai-service/src/main/resources/db/migrations/h2/V3_3__createWahlbezirk.sql rename wls-eai-service/src/main/resources/db/migrations/h2/{V3_3__addWahlbezirkFKToWahlvorstand.sql => V3_4__addWahlbezirkFKToWahlvorstand.sql} (100%) diff --git a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/Stimmzettelgebiet.java b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/Stimmzettelgebiet.java new file mode 100644 index 000000000..f0cdabb6b --- /dev/null +++ b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/Stimmzettelgebiet.java @@ -0,0 +1,38 @@ +package de.muenchen.oss.wahllokalsystem.eaiservice.domain.wahldaten; + +import de.muenchen.oss.wahllokalsystem.eaiservice.domain.BaseEntity; +import jakarta.persistence.Entity; +import jakarta.persistence.EnumType; +import jakarta.persistence.Enumerated; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; +import jakarta.validation.constraints.NotNull; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; + +@Entity +@Getter +@Setter +@EqualsAndHashCode(callSuper = true) +@ToString(onlyExplicitlyIncluded = true) +public class Stimmzettelgebiet extends BaseEntity { + + @ToString.Include + private String nummer; + + @ToString.Include + private String name; + + @NotNull + @Enumerated(EnumType.STRING) + @ToString.Include + private Stimmzettelgebietsart stimmzettelgebietart; + + @NotNull + @ManyToOne + @JoinColumn(name = "wahlID") + private Wahl wahl; + +} diff --git a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/StimmzettelgebietRepository.java b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/StimmzettelgebietRepository.java new file mode 100644 index 000000000..d9d7bf733 --- /dev/null +++ b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/StimmzettelgebietRepository.java @@ -0,0 +1,11 @@ +package de.muenchen.oss.wahllokalsystem.eaiservice.domain.wahldaten; + +import java.time.LocalDate; +import java.util.List; +import java.util.UUID; +import org.springframework.data.repository.CrudRepository; + +public interface StimmzettelgebietRepository extends CrudRepository { + + List findByWahlWahltagTagAndWahlNummer(LocalDate wahltag, String nummer); +} diff --git a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/Stimmzettelgebietsart.java b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/Stimmzettelgebietsart.java new file mode 100644 index 000000000..aef400ed7 --- /dev/null +++ b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/Stimmzettelgebietsart.java @@ -0,0 +1,5 @@ +package de.muenchen.oss.wahllokalsystem.eaiservice.domain.wahldaten; + +public enum Stimmzettelgebietsart { + SB, SG, SK, WK +} diff --git a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/Wahlbezirk.java b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/Wahlbezirk.java index 2d38205f7..b2a42b243 100644 --- a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/Wahlbezirk.java +++ b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/Wahlbezirk.java @@ -29,8 +29,8 @@ public class Wahlbezirk extends BaseEntity { @NotNull @ManyToOne - @JoinColumn(name = "wahlID") - private Wahl wahl; + @JoinColumn(name = "stimmzettelgebietID") + private Stimmzettelgebiet stimmzettelgebiet; private long a1; diff --git a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/WahlbezirkRepository.java b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/WahlbezirkRepository.java index 73c976c7f..8567e78d5 100644 --- a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/WahlbezirkRepository.java +++ b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/WahlbezirkRepository.java @@ -9,9 +9,9 @@ public interface WahlbezirkRepository extends CrudRepository { - @Query("SELECT wb FROM Wahlbezirk wb JOIN FETCH wb.wahl w JOIN FETCH w.wahltag t WHERE t.tag = (:wahltag) AND w.nummer = (:nummer)") - List findWahlbezirkeWithWahlAndWahltagById(@Param("wahltag") LocalDate wahltag, @Param("nummer") String nummer); + @Query("SELECT wb FROM Wahlbezirk wb JOIN FETCH wb.stimmzettelgebiet sg JOIN FETCH sg.wahl w JOIN FETCH w.wahltag t WHERE t.tag = (:wahltag) AND w.nummer = (:nummer)") + List findWahlbezirkeWithStimmzettelgebietAndWahlAndWahltagById(@Param("wahltag") LocalDate wahltag, @Param("nummer") String nummer); - @Query("SELECT wb FROM Wahlbezirk wb JOIN FETCH wb.wahl w JOIN FETCH w.wahltag t WHERE wb.id = (:wahlbezirkID)") - List findWahlbezirkeWithWahlAndWahltagById(@Param("wahlbezirkID") UUID wahlbezirkID); + @Query("SELECT wb FROM Wahlbezirk wb JOIN FETCH wb.stimmzettelgebiet sg JOIN FETCH sg.wahl w JOIN FETCH w.wahltag t WHERE wb.id = (:wahlbezirkID)") + List findWahlbezirkeWithStimmzettelgebietAndWahlAndWahltagById(@Param("wahlbezirkID") UUID wahlbezirkID); } diff --git a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahldaten/WahldatenMapper.java b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahldaten/WahldatenMapper.java index 38ab5a591..76873ae51 100644 --- a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahldaten/WahldatenMapper.java +++ b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahldaten/WahldatenMapper.java @@ -1,8 +1,11 @@ package de.muenchen.oss.wahllokalsystem.eaiservice.service.wahldaten; +import de.muenchen.oss.wahllokalsystem.eaiservice.domain.wahldaten.Stimmzettelgebiet; import de.muenchen.oss.wahllokalsystem.eaiservice.domain.wahldaten.Wahl; import de.muenchen.oss.wahllokalsystem.eaiservice.domain.wahldaten.Wahlbezirk; import de.muenchen.oss.wahllokalsystem.eaiservice.domain.wahldaten.Wahltag; +import de.muenchen.oss.wahllokalsystem.eaiservice.rest.wahldaten.dto.BasisstrukturdatenDTO; +import de.muenchen.oss.wahllokalsystem.eaiservice.rest.wahldaten.dto.StimmzettelgebietDTO; import de.muenchen.oss.wahllokalsystem.eaiservice.rest.wahldaten.dto.WahlDTO; import de.muenchen.oss.wahllokalsystem.eaiservice.rest.wahldaten.dto.WahlberechtigteDTO; import de.muenchen.oss.wahllokalsystem.eaiservice.rest.wahldaten.dto.WahlbezirkDTO; @@ -21,12 +24,22 @@ public interface WahldatenMapper { WahlDTO toDTO(Wahl wahl); @Mapping(target = "identifikator", source = "id") - @Mapping(target = "wahltag", source = "wahl.wahltag.tag") - @Mapping(target = "wahlID", source = "wahl.id") - @Mapping(target = "wahlnummer", source = "wahl.nummer") + @Mapping(target = "wahltag", source = "stimmzettelgebiet.wahl.wahltag.tag") + @Mapping(target = "wahlID", source = "stimmzettelgebiet.wahl.id") + @Mapping(target = "wahlnummer", source = "stimmzettelgebiet.wahl.nummer") WahlbezirkDTO toDTO(Wahlbezirk wahlbezirk); - @Mapping(target = "wahlID", source = "wahl.id") + @Mapping(target = "identifikator", source = "id") + @Mapping(target = "wahltag", source = "wahl.wahltag.tag") + StimmzettelgebietDTO toDTO(Stimmzettelgebiet stimmzettelgebiet); + + @Mapping(target = "wahlID", source = "stimmzettelgebiet.wahl.id") @Mapping(target = "wahlbezirkID", source = "id") WahlberechtigteDTO toWahlberechtigteDTO(Wahlbezirk wahlbezirk); + + @Mapping(target = "wahlID", source = "stimmzettelgebiet.wahl.id") + @Mapping(target = "wahltag", source = "stimmzettelgebiet.wahl.wahltag.tag") + @Mapping(target = "wahlbezirkID", source = "id") + @Mapping(target = "stimmzettelgebietID", source = "stimmzettelgebiet.id") + BasisstrukturdatenDTO toBasisstrukturdatenDTO(Wahlbezirk wahlbezirk); } diff --git a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahldaten/WahldatenService.java b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahldaten/WahldatenService.java index bf2602564..614ef0fdb 100644 --- a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahldaten/WahldatenService.java +++ b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahldaten/WahldatenService.java @@ -1,12 +1,12 @@ package de.muenchen.oss.wahllokalsystem.eaiservice.service.wahldaten; +import de.muenchen.oss.wahllokalsystem.eaiservice.domain.wahldaten.StimmzettelgebietRepository; import de.muenchen.oss.wahllokalsystem.eaiservice.domain.wahldaten.WahlRepository; +import de.muenchen.oss.wahllokalsystem.eaiservice.domain.wahldaten.Wahlbezirk; import de.muenchen.oss.wahllokalsystem.eaiservice.domain.wahldaten.WahlbezirkRepository; import de.muenchen.oss.wahllokalsystem.eaiservice.domain.wahldaten.Wahltag; import de.muenchen.oss.wahllokalsystem.eaiservice.domain.wahldaten.WahltageRepository; import de.muenchen.oss.wahllokalsystem.eaiservice.rest.wahldaten.dto.BasisdatenDTO; -import de.muenchen.oss.wahllokalsystem.eaiservice.rest.wahldaten.dto.BasisstrukturdatenDTO; -import de.muenchen.oss.wahllokalsystem.eaiservice.rest.wahldaten.dto.StimmzettelgebietDTO; import de.muenchen.oss.wahllokalsystem.eaiservice.rest.wahldaten.dto.WahlDTO; import de.muenchen.oss.wahllokalsystem.eaiservice.rest.wahldaten.dto.WahlberechtigteDTO; import de.muenchen.oss.wahllokalsystem.eaiservice.rest.wahldaten.dto.WahlbezirkDTO; @@ -35,6 +35,8 @@ public class WahldatenService { private final WahlbezirkRepository wahlbezirkRepository; + private final StimmzettelgebietRepository stimmzettelgebietRepository; + @PreAuthorize("hasAuthority('aoueai_BUSINESSACTION_LoadWahltage')") public Set getWahltage(LocalDate wahltageIncludingSince) { return getWahltageIncludingSince(wahltageIncludingSince).stream().map(wahldatenMapper::toDTO).collect(Collectors.toSet()); @@ -47,29 +49,34 @@ public Set getWahlen(final LocalDate wahltag, final String nummer) { @PreAuthorize("hasAuthority('aoueai_BUSINESSACTION_LoadWahlbezirke')") public Set getWahlbezirke(final LocalDate wahltag, final String nummer) { - return wahlbezirkRepository.findWahlbezirkeWithWahlAndWahltagById(wahltag, nummer).stream().map(wahldatenMapper::toDTO) + return findWahlbezirkeWithStimmzettelgebietAndWahlAndWahltagById(wahltag, nummer).stream().map(wahldatenMapper::toDTO) .collect(Collectors.toSet()); } @PreAuthorize("hasAuthority('aoueai_BUSINESSACTION_LoadWahlberechtigte')") public List getWahlberechtigte(final String wahlbezirkID) { - return wahlbezirkRepository.findWahlbezirkeWithWahlAndWahltagById(idConverter.convertIDToUUIDOrThrow(wahlbezirkID)).stream() + return wahlbezirkRepository.findWahlbezirkeWithStimmzettelgebietAndWahlAndWahltagById(idConverter.convertIDToUUIDOrThrow(wahlbezirkID)).stream() .map(wahldatenMapper::toWahlberechtigteDTO) .toList(); } @PreAuthorize("hasAuthority('aoueai_BUSINESSACTION_LoadBasisdaten')") public BasisdatenDTO getBasisdaten(final LocalDate wahltag, final String nummer) { - val basisstrukturdaten = Set.of(new BasisstrukturdatenDTO(null, null, null, null)); + val wahlbezirkeWithParentEntities = findWahlbezirkeWithStimmzettelgebietAndWahlAndWahltagById(wahltag, nummer); + + val basisstrukturdaten = wahlbezirkeWithParentEntities.stream().map(wahldatenMapper::toBasisstrukturdatenDTO).collect(Collectors.toSet()); val wahlen = getWahlen(wahltag, nummer); - val wahlbezirke = getWahlbezirke(wahltag, nummer); - //TODO stimmzettelgebiet liegt in der Struktur zwischen Wahl und Wahlbezirk - //wahl -1..n-> gebiet -1..-> bezirk - val stimmzettelgebiete = Set.of(new StimmzettelgebietDTO(null, null, null, null, null)); + val wahlbezirke = wahlbezirkeWithParentEntities.stream().map(wahldatenMapper::toDTO).collect(Collectors.toSet()); + val stimmzettelgebiete = stimmzettelgebietRepository.findByWahlWahltagTagAndWahlNummer(wahltag, nummer).stream().map(wahldatenMapper::toDTO).collect( + Collectors.toSet()); return new BasisdatenDTO(basisstrukturdaten, wahlen, wahlbezirke, stimmzettelgebiete); } + private List findWahlbezirkeWithStimmzettelgebietAndWahlAndWahltagById(final LocalDate wahltag, final String nummer) { + return wahlbezirkRepository.findWahlbezirkeWithStimmzettelgebietAndWahlAndWahltagById(wahltag, nummer); + } + private List getWahltageIncludingSince(LocalDate wahltageIncludingSince) { return wahltageRepository.findByTagAfterOrTagEquals(wahltageIncludingSince, wahltageIncludingSince); } diff --git a/wls-eai-service/src/main/resources/db/dummydata/h2/V3_2_1__stimmzettelgebietTestdaten.sql b/wls-eai-service/src/main/resources/db/dummydata/h2/V3_2_1__stimmzettelgebietTestdaten.sql new file mode 100644 index 000000000..8178c5767 --- /dev/null +++ b/wls-eai-service/src/main/resources/db/dummydata/h2/V3_2_1__stimmzettelgebietTestdaten.sql @@ -0,0 +1,12 @@ +INSERT INTO stimmzettelgebiet (id, nummer, name, stimmzettelgebietart, wahlID) +values ('00000000-0000-0000-0000-000000000001', '101', 'Stimmzettelgebiet 101', 'SK', + '00000000-0000-0000-0000-000000000001'); +INSERT INTO stimmzettelgebiet (id, nummer, name, stimmzettelgebietart, wahlID) +values ('00000000-0000-0000-0000-000000000002', '102', 'Stimmzettelgebiet 102', 'SK', + '00000000-0000-0000-0000-000000000001'); +INSERT INTO stimmzettelgebiet (id, nummer, name, stimmzettelgebietart, wahlID) +values ('00000000-0000-0000-0000-000000000003', '103', 'Stimmzettelgebiet 103', 'SK', + '00000000-0000-0000-0000-000000000001'); +INSERT INTO stimmzettelgebiet (id, nummer, name, stimmzettelgebietart, wahlID) +values ('00000000-0000-0000-0000-000000000004', '104', 'Stimmzettelgebiet 104', 'SK', + '00000000-0000-0000-0000-000000000001'); diff --git a/wls-eai-service/src/main/resources/db/dummydata/h2/V3_2_1__wahlbezirkTestdaten.sql b/wls-eai-service/src/main/resources/db/dummydata/h2/V3_2_1__wahlbezirkTestdaten.sql deleted file mode 100644 index b0905614a..000000000 --- a/wls-eai-service/src/main/resources/db/dummydata/h2/V3_2_1__wahlbezirkTestdaten.sql +++ /dev/null @@ -1,15 +0,0 @@ -INSERT INTO wahlbezirk (id, wahlbezirkArt, nummer, wahlID, a1, a2, a3) -values ('00000000-0000-0000-0000-000000000001', 'UWB', 'Wahlbezirk 1', '00000000-0000-0000-0000-000000000001', 30, 5, - 1); - -INSERT INTO wahlbezirk (id, wahlbezirkArt, nummer, wahlID, a1, a2, a3) -values ('00000000-0000-0000-0000-000000000002', 'UWB', 'Wahlbezirk 2', '00000000-0000-0000-0000-000000000001', 32, 12, - 2); - -INSERT INTO wahlbezirk (id, wahlbezirkArt, nummer, wahlID, a1, a2, a3) -values ('00000000-0000-0000-0000-000000000003', 'BWB', 'Wahlbezirk 3', '00000000-0000-0000-0000-000000000001', 17, 1, - 0); - -INSERT INTO wahlbezirk (id, wahlbezirkArt, nummer, wahlID, a1, a2, a3) -values ('00000000-0000-0000-0000-000000000004', 'UWB', 'Wahlbezirk 1', '00000000-0000-0000-0000-000000000001', 42, 5, - 3); \ No newline at end of file diff --git a/wls-eai-service/src/main/resources/db/dummydata/h2/V3_3_1__wahlbezirkTestdaten.sql b/wls-eai-service/src/main/resources/db/dummydata/h2/V3_3_1__wahlbezirkTestdaten.sql new file mode 100644 index 000000000..27d8cc2b1 --- /dev/null +++ b/wls-eai-service/src/main/resources/db/dummydata/h2/V3_3_1__wahlbezirkTestdaten.sql @@ -0,0 +1,15 @@ +INSERT INTO wahlbezirk (id, wahlbezirkArt, nummer, stimmzettelgebietID, a1, a2, a3) +values ('00000000-0000-0000-0000-000000000001', 'UWB', 'Wahlbezirk 1', '00000000-0000-0000-0000-000000000001', 30, 5, + 1); + +INSERT INTO wahlbezirk (id, wahlbezirkArt, nummer, stimmzettelgebietID, a1, a2, a3) +values ('00000000-0000-0000-0000-000000000002', 'UWB', 'Wahlbezirk 2', '00000000-0000-0000-0000-000000000002', 32, 12, + 2); + +INSERT INTO wahlbezirk (id, wahlbezirkArt, nummer, stimmzettelgebietID, a1, a2, a3) +values ('00000000-0000-0000-0000-000000000003', 'BWB', 'Wahlbezirk 3', '00000000-0000-0000-0000-000000000003', 17, 1, + 0); + +INSERT INTO wahlbezirk (id, wahlbezirkArt, nummer, stimmzettelgebietID, a1, a2, a3) +values ('00000000-0000-0000-0000-000000000004', 'UWB', 'Wahlbezirk 4', '00000000-0000-0000-0000-000000000004', 42, 5, + 3); \ No newline at end of file diff --git a/wls-eai-service/src/main/resources/db/migrations/h2/V3_2__createStimmzettelgebiet.sql b/wls-eai-service/src/main/resources/db/migrations/h2/V3_2__createStimmzettelgebiet.sql new file mode 100644 index 000000000..4ab1fcb2c --- /dev/null +++ b/wls-eai-service/src/main/resources/db/migrations/h2/V3_2__createStimmzettelgebiet.sql @@ -0,0 +1,13 @@ +CREATE TABLE stimmzettelgebiet +( + id VARCHAR2(36) NOT NULL, + nummer VARCHAR2(36), + name VARCHAR2(100), + stimmzettelgebietart VARCHAR2(3) NOT NULL, + + wahlID VARCHAR2(36) NOT NULL, + + FOREIGN KEY (wahlID) REFERENCES wahl (id), + + primary key (id) +) \ No newline at end of file diff --git a/wls-eai-service/src/main/resources/db/migrations/h2/V3_2__createWahlbezirk.sql b/wls-eai-service/src/main/resources/db/migrations/h2/V3_2__createWahlbezirk.sql deleted file mode 100644 index eb775b3da..000000000 --- a/wls-eai-service/src/main/resources/db/migrations/h2/V3_2__createWahlbezirk.sql +++ /dev/null @@ -1,15 +0,0 @@ -CREATE TABLE wahlbezirk -( - id VARCHAR2(36) NOT NULL, - wahlbezirkArt VARCHAR2(3) NOT NULL, - nummer VARCHAR2(36) NOT NULL, - a1 BIGINT NOT NULL, - a2 BIGINT NOT NULL, - a3 BIGINT NOT NULL, - - wahlID VARCHAR2(36) NOT NULL, - - FOREIGN KEY (wahlID) REFERENCES wahl (id), - - PRIMARY KEY (id) -) \ No newline at end of file diff --git a/wls-eai-service/src/main/resources/db/migrations/h2/V3_3__createWahlbezirk.sql b/wls-eai-service/src/main/resources/db/migrations/h2/V3_3__createWahlbezirk.sql new file mode 100644 index 000000000..fa0b87964 --- /dev/null +++ b/wls-eai-service/src/main/resources/db/migrations/h2/V3_3__createWahlbezirk.sql @@ -0,0 +1,15 @@ +CREATE TABLE wahlbezirk +( + id VARCHAR2(36) NOT NULL, + wahlbezirkArt VARCHAR2(3) NOT NULL, + nummer VARCHAR2(36) NOT NULL, + a1 BIGINT NOT NULL, + a2 BIGINT NOT NULL, + a3 BIGINT NOT NULL, + + stimmzettelgebietID VARCHAR2(36) NOT NULL, + + FOREIGN KEY (stimmzettelgebietID) REFERENCES stimmzettelgebiet (id), + + PRIMARY KEY (id) +) \ No newline at end of file diff --git a/wls-eai-service/src/main/resources/db/migrations/h2/V3_3__addWahlbezirkFKToWahlvorstand.sql b/wls-eai-service/src/main/resources/db/migrations/h2/V3_4__addWahlbezirkFKToWahlvorstand.sql similarity index 100% rename from wls-eai-service/src/main/resources/db/migrations/h2/V3_3__addWahlbezirkFKToWahlvorstand.sql rename to wls-eai-service/src/main/resources/db/migrations/h2/V3_4__addWahlbezirkFKToWahlvorstand.sql From 97b58996d856fbc67a2273053be17c069c7254ab Mon Sep 17 00:00:00 2001 From: MrSebastian <13592751+MrSebastian@users.noreply.github.com> Date: Mon, 1 Jul 2024 11:57:08 +0200 Subject: [PATCH 18/58] add example requests for get basisdaten --- .../src/test/resources/httpRequests/wahldaten.http | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/wls-eai-service/src/test/resources/httpRequests/wahldaten.http b/wls-eai-service/src/test/resources/httpRequests/wahldaten.http index 0d2f504ac..d840fde13 100644 --- a/wls-eai-service/src/test/resources/httpRequests/wahldaten.http +++ b/wls-eai-service/src/test/resources/httpRequests/wahldaten.http @@ -51,4 +51,13 @@ GET {{ WLS_EAI_SERVICE_URL }}/wahldaten/wahlbezirke/00000000-0000-0000-0000-0000 GET {{ WLS_EAI_SERVICE_URL }}/wahldaten/wahlbezirke/00000000-0000-0000-0000-000000000003/wahlberechtigte ### get wahlberechtigte wahlbezirk-4 -GET {{ WLS_EAI_SERVICE_URL }}/wahldaten/wahlbezirke/00000000-0000-0000-0000-000000000004/wahlberechtigte \ No newline at end of file +GET {{ WLS_EAI_SERVICE_URL }}/wahldaten/wahlbezirke/00000000-0000-0000-0000-000000000004/wahlberechtigte + +### get Basistrukturdaten on EU-Wahl-Tag +GET {{ WLS_EAI_SERVICE_URL }}/wahldaten/basisdaten?forDate=2024-06-09&withNummer=0 + +### get Basistrukturdaten on Kommunalwahl-Tag +GET {{ WLS_EAI_SERVICE_URL }}/wahldaten/basisdaten?forDate=2020-03-15&withNummer=0 + +### get Basistrukturdaten on day without elections +GET {{ WLS_EAI_SERVICE_URL }}/wahldaten/basisdaten?forDate=2034-06-09&withNummer=0 \ No newline at end of file From d3743d9693c2ec0622b5a14dd8b93083dd4b29bd Mon Sep 17 00:00:00 2001 From: MrSebastian <13592751+MrSebastian@users.noreply.github.com> Date: Mon, 1 Jul 2024 12:01:33 +0200 Subject: [PATCH 19/58] update eai authorities --- .../add-authorities-eai-wahldaten.yml | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/stack/keycloak/migration/add-authorities-eai-wahldaten.yml b/stack/keycloak/migration/add-authorities-eai-wahldaten.yml index f3dfc58d0..c40c6a9d1 100644 --- a/stack/keycloak/migration/add-authorities-eai-wahldaten.yml +++ b/stack/keycloak/migration/add-authorities-eai-wahldaten.yml @@ -9,4 +9,40 @@ changes: - assignRoleToGroup: group: allEaiAuthorities role: aoueai_BUSINESSACTION_LoadWahltage + clientId: ${SSO_CLIENT_ID} + + - addRole: + name: aoueai_BUSINESSACTION_LoadWahlen + clientRole: true + clientId: ${SSO_CLIENT_ID} + - assignRoleToGroup: + group: allEaiAuthorities + role: aoueai_BUSINESSACTION_LoadWahlen + clientId: ${SSO_CLIENT_ID} + + - addRole: + name: aoueai_BUSINESSACTION_LoadWahlbezirke + clientRole: true + clientId: ${SSO_CLIENT_ID} + - assignRoleToGroup: + group: allEaiAuthorities + role: aoueai_BUSINESSACTION_LoadWahlbezirke + clientId: ${SSO_CLIENT_ID} + + - addRole: + name: aoueai_BUSINESSACTION_LoadWahlberechtigte + clientRole: true + clientId: ${SSO_CLIENT_ID} + - assignRoleToGroup: + group: allEaiAuthorities + role: aoueai_BUSINESSACTION_LoadWahlberechtigte + clientId: ${SSO_CLIENT_ID} + + - addRole: + name: aoueai_BUSINESSACTION_LoadBasisdaten + clientRole: true + clientId: ${SSO_CLIENT_ID} + - assignRoleToGroup: + group: allEaiAuthorities + role: aoueai_BUSINESSACTION_LoadBasisdaten clientId: ${SSO_CLIENT_ID} \ No newline at end of file From e6d3adbee13b7345959b1468b0f053a9e1505ad8 Mon Sep 17 00:00:00 2001 From: MrSebastian <13592751+MrSebastian@users.noreply.github.com> Date: Mon, 1 Jul 2024 12:13:21 +0200 Subject: [PATCH 20/58] create oracle flyway files --- .../oracle/V3_0_1__wahltageTestdaten.sql | 6 ++++++ .../db/dummydata/oracle/V3_1_1__wahlTestdaten.sql | 11 +++++++++++ .../oracle/V3_2_1__stimmzettelgebietTestdaten.sql | 12 ++++++++++++ .../oracle/V3_3_1__wahlbezirkTestdaten.sql | 15 +++++++++++++++ .../db/migrations/oracle/V3_0__createWahltag.sql | 9 +++++++++ .../db/migrations/oracle/V3_1__createWahl.sql | 14 ++++++++++++++ .../oracle/V3_2__createStimmzettelgebiet.sql | 13 +++++++++++++ .../migrations/oracle/V3_3__createWahlbezirk.sql | 15 +++++++++++++++ .../V3_4__addWahlbezirkFKToWahlvorstand.sql | 2 ++ 9 files changed, 97 insertions(+) create mode 100644 wls-eai-service/src/main/resources/db/dummydata/oracle/V3_0_1__wahltageTestdaten.sql create mode 100644 wls-eai-service/src/main/resources/db/dummydata/oracle/V3_1_1__wahlTestdaten.sql create mode 100644 wls-eai-service/src/main/resources/db/dummydata/oracle/V3_2_1__stimmzettelgebietTestdaten.sql create mode 100644 wls-eai-service/src/main/resources/db/dummydata/oracle/V3_3_1__wahlbezirkTestdaten.sql create mode 100644 wls-eai-service/src/main/resources/db/migrations/oracle/V3_0__createWahltag.sql create mode 100644 wls-eai-service/src/main/resources/db/migrations/oracle/V3_1__createWahl.sql create mode 100644 wls-eai-service/src/main/resources/db/migrations/oracle/V3_2__createStimmzettelgebiet.sql create mode 100644 wls-eai-service/src/main/resources/db/migrations/oracle/V3_3__createWahlbezirk.sql create mode 100644 wls-eai-service/src/main/resources/db/migrations/oracle/V3_4__addWahlbezirkFKToWahlvorstand.sql diff --git a/wls-eai-service/src/main/resources/db/dummydata/oracle/V3_0_1__wahltageTestdaten.sql b/wls-eai-service/src/main/resources/db/dummydata/oracle/V3_0_1__wahltageTestdaten.sql new file mode 100644 index 000000000..0c6830b52 --- /dev/null +++ b/wls-eai-service/src/main/resources/db/dummydata/oracle/V3_0_1__wahltageTestdaten.sql @@ -0,0 +1,6 @@ +INSERT INTO wahltag (id, tag, beschreibung, nummer) +values ('00000000-0000-0000-0000-000000000001', to_timestamp('2024-06-09', 'YYYY-MM-DD'), + 'zehnte Direktwahl zum Europäischen Parlament', '0'); + +INSERT INTO wahltag (id, tag, beschreibung, nummer) +values ('00000000-0000-0000-0000-000000000002', to_timestamp('2020-03-15', 'YYYY-MM-DD'), 'Kommunalwahl 20', '0'); \ No newline at end of file diff --git a/wls-eai-service/src/main/resources/db/dummydata/oracle/V3_1_1__wahlTestdaten.sql b/wls-eai-service/src/main/resources/db/dummydata/oracle/V3_1_1__wahlTestdaten.sql new file mode 100644 index 000000000..f803caa7c --- /dev/null +++ b/wls-eai-service/src/main/resources/db/dummydata/oracle/V3_1_1__wahlTestdaten.sql @@ -0,0 +1,11 @@ +INSERT INTO wahl (id, name, wahlart, nummer, wahltagID) +values ('00000000-0000-0000-0000-000000000001', 'EU-Wahl 24', 'EUW', 0, '00000000-0000-0000-0000-000000000001'); + +INSERT INTO wahl (id, name, wahlart, nummer, wahltagID) +values ('00000000-0000-0000-0000-000000000002', 'Stadtratswahl', 'SRW', 0, '00000000-0000-0000-0000-000000000002'); +INSERT INTO wahl (id, name, wahlart, nummer, wahltagID) +values ('00000000-0000-0000-0000-000000000003', 'Oberbürgermeisterwahl', 'OBW', 0, + '00000000-0000-0000-0000-000000000002'); +INSERT INTO wahl (id, name, wahlart, nummer, wahltagID) +values ('00000000-0000-0000-0000-000000000004', 'Bezirksausschusswahl', 'BAW', 0, + '00000000-0000-0000-0000-000000000002'); \ No newline at end of file diff --git a/wls-eai-service/src/main/resources/db/dummydata/oracle/V3_2_1__stimmzettelgebietTestdaten.sql b/wls-eai-service/src/main/resources/db/dummydata/oracle/V3_2_1__stimmzettelgebietTestdaten.sql new file mode 100644 index 000000000..8178c5767 --- /dev/null +++ b/wls-eai-service/src/main/resources/db/dummydata/oracle/V3_2_1__stimmzettelgebietTestdaten.sql @@ -0,0 +1,12 @@ +INSERT INTO stimmzettelgebiet (id, nummer, name, stimmzettelgebietart, wahlID) +values ('00000000-0000-0000-0000-000000000001', '101', 'Stimmzettelgebiet 101', 'SK', + '00000000-0000-0000-0000-000000000001'); +INSERT INTO stimmzettelgebiet (id, nummer, name, stimmzettelgebietart, wahlID) +values ('00000000-0000-0000-0000-000000000002', '102', 'Stimmzettelgebiet 102', 'SK', + '00000000-0000-0000-0000-000000000001'); +INSERT INTO stimmzettelgebiet (id, nummer, name, stimmzettelgebietart, wahlID) +values ('00000000-0000-0000-0000-000000000003', '103', 'Stimmzettelgebiet 103', 'SK', + '00000000-0000-0000-0000-000000000001'); +INSERT INTO stimmzettelgebiet (id, nummer, name, stimmzettelgebietart, wahlID) +values ('00000000-0000-0000-0000-000000000004', '104', 'Stimmzettelgebiet 104', 'SK', + '00000000-0000-0000-0000-000000000001'); diff --git a/wls-eai-service/src/main/resources/db/dummydata/oracle/V3_3_1__wahlbezirkTestdaten.sql b/wls-eai-service/src/main/resources/db/dummydata/oracle/V3_3_1__wahlbezirkTestdaten.sql new file mode 100644 index 000000000..27d8cc2b1 --- /dev/null +++ b/wls-eai-service/src/main/resources/db/dummydata/oracle/V3_3_1__wahlbezirkTestdaten.sql @@ -0,0 +1,15 @@ +INSERT INTO wahlbezirk (id, wahlbezirkArt, nummer, stimmzettelgebietID, a1, a2, a3) +values ('00000000-0000-0000-0000-000000000001', 'UWB', 'Wahlbezirk 1', '00000000-0000-0000-0000-000000000001', 30, 5, + 1); + +INSERT INTO wahlbezirk (id, wahlbezirkArt, nummer, stimmzettelgebietID, a1, a2, a3) +values ('00000000-0000-0000-0000-000000000002', 'UWB', 'Wahlbezirk 2', '00000000-0000-0000-0000-000000000002', 32, 12, + 2); + +INSERT INTO wahlbezirk (id, wahlbezirkArt, nummer, stimmzettelgebietID, a1, a2, a3) +values ('00000000-0000-0000-0000-000000000003', 'BWB', 'Wahlbezirk 3', '00000000-0000-0000-0000-000000000003', 17, 1, + 0); + +INSERT INTO wahlbezirk (id, wahlbezirkArt, nummer, stimmzettelgebietID, a1, a2, a3) +values ('00000000-0000-0000-0000-000000000004', 'UWB', 'Wahlbezirk 4', '00000000-0000-0000-0000-000000000004', 42, 5, + 3); \ No newline at end of file diff --git a/wls-eai-service/src/main/resources/db/migrations/oracle/V3_0__createWahltag.sql b/wls-eai-service/src/main/resources/db/migrations/oracle/V3_0__createWahltag.sql new file mode 100644 index 000000000..508ce6682 --- /dev/null +++ b/wls-eai-service/src/main/resources/db/migrations/oracle/V3_0__createWahltag.sql @@ -0,0 +1,9 @@ +CREATE TABLE wahltag +( + id VARCHAR2(36) NOT NULL, + tag TIMESTAMP NOT NULL, + beschreibung VARCHAR2(1024) NOT NULL, + nummer VARCHAR2(10) NOT NULL, + + PRIMARY KEY (id) +); \ No newline at end of file diff --git a/wls-eai-service/src/main/resources/db/migrations/oracle/V3_1__createWahl.sql b/wls-eai-service/src/main/resources/db/migrations/oracle/V3_1__createWahl.sql new file mode 100644 index 000000000..6cd1aa171 --- /dev/null +++ b/wls-eai-service/src/main/resources/db/migrations/oracle/V3_1__createWahl.sql @@ -0,0 +1,14 @@ +CREATE TABLE wahl +( + id VARCHAR2(36) NOT NULL, + name VARCHAR2(100) NOT NULL, + wahlart VARCHAR2(5) NOT NULL, + nummer VARCHAR2(10) NOT NULL, + + wahltagID VARCHAR2(36) NOT NULL, + + FOREIGN KEY (wahltagID) REFERENCES wahltag (id), + + PRIMARY KEY (id) + +) \ No newline at end of file diff --git a/wls-eai-service/src/main/resources/db/migrations/oracle/V3_2__createStimmzettelgebiet.sql b/wls-eai-service/src/main/resources/db/migrations/oracle/V3_2__createStimmzettelgebiet.sql new file mode 100644 index 000000000..4ab1fcb2c --- /dev/null +++ b/wls-eai-service/src/main/resources/db/migrations/oracle/V3_2__createStimmzettelgebiet.sql @@ -0,0 +1,13 @@ +CREATE TABLE stimmzettelgebiet +( + id VARCHAR2(36) NOT NULL, + nummer VARCHAR2(36), + name VARCHAR2(100), + stimmzettelgebietart VARCHAR2(3) NOT NULL, + + wahlID VARCHAR2(36) NOT NULL, + + FOREIGN KEY (wahlID) REFERENCES wahl (id), + + primary key (id) +) \ No newline at end of file diff --git a/wls-eai-service/src/main/resources/db/migrations/oracle/V3_3__createWahlbezirk.sql b/wls-eai-service/src/main/resources/db/migrations/oracle/V3_3__createWahlbezirk.sql new file mode 100644 index 000000000..a8267f9c1 --- /dev/null +++ b/wls-eai-service/src/main/resources/db/migrations/oracle/V3_3__createWahlbezirk.sql @@ -0,0 +1,15 @@ +CREATE TABLE wahlbezirk +( + id VARCHAR2(36) NOT NULL, + wahlbezirkArt VARCHAR2(3) NOT NULL, + nummer VARCHAR2(36) NOT NULL, + a1 NUMBER NOT NULL, + a2 NUMBER NOT NULL, + a3 NUMBER NOT NULL, + + stimmzettelgebietID VARCHAR2(36) NOT NULL, + + FOREIGN KEY (stimmzettelgebietID) REFERENCES stimmzettelgebiet (id), + + PRIMARY KEY (id) +) \ No newline at end of file diff --git a/wls-eai-service/src/main/resources/db/migrations/oracle/V3_4__addWahlbezirkFKToWahlvorstand.sql b/wls-eai-service/src/main/resources/db/migrations/oracle/V3_4__addWahlbezirkFKToWahlvorstand.sql new file mode 100644 index 000000000..faae94787 --- /dev/null +++ b/wls-eai-service/src/main/resources/db/migrations/oracle/V3_4__addWahlbezirkFKToWahlvorstand.sql @@ -0,0 +1,2 @@ +ALTER TABLE wahlvorstand + ADD FOREIGN KEY (wahlbezirkID) REFERENCES wahlbezirk (id) \ No newline at end of file From 75e81a188fd01d3c14228c4292b8d1c1ad2f2f9e Mon Sep 17 00:00:00 2001 From: MrSebastian <13592751+MrSebastian@users.noreply.github.com> Date: Mon, 1 Jul 2024 12:39:31 +0200 Subject: [PATCH 21/58] update doc with required authorities for endpoints --- docs/src/features/eai-service/index.md | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/docs/src/features/eai-service/index.md b/docs/src/features/eai-service/index.md index c1a665736..f73bb4250 100644 --- a/docs/src/features/eai-service/index.md +++ b/docs/src/features/eai-service/index.md @@ -31,4 +31,16 @@ Wahlbeteiligungen der Wahllokale kann mitgeteilt werden. ### Wahllokalstatus -Der Zustand in dem sich die Wahllokale befinden kann mitgeteilt werden. \ No newline at end of file +Der Zustand in dem sich die Wahllokale befinden kann mitgeteilt werden. + +## Zugriffsbeschränkungen + +Übersicht über die Endpunkte und die dafür benötigten Rechte: + +| Endpunkt | erforderliche Rechte | +| --- | --- | +| GET /wahldaten/wahlbezirke/{wahlbezirkID}/wahlberechtigte | aoueai_BUSINESSACTION_LoadWahlberechtigte +| GET /wahldaten/wahltage?includingSince | aoueai_BUSINESSACTION_LoadWahltage +| GET /wahldaten/wahlbezirk?forDate&withNummer | aoueai_BUSINESSACTION_LoadWahlbezirke +| GET /wahldaten/wahlen?forDate&withNummer | aoueai_BUSINESSACTION_LoadWahlen +| GET /wahldaten/basisdaten?forDate&withNummer | aoueai_BUSINESSACTION_LoadBasisdaten \ No newline at end of file From 9ed5456ddc049bfbc9dc5435354d2875581efd71 Mon Sep 17 00:00:00 2001 From: MrSebastian <13592751+MrSebastian@users.noreply.github.com> Date: Mon, 1 Jul 2024 16:45:05 +0200 Subject: [PATCH 22/58] implement missing request parameter exception handler --- .../exception/ExceptionConstants.java | 32 +++++++++++++ .../exception/GlobalExceptionHandler.java | 38 ++++++++++++++- ...stParameterExceptionDataWrapperMapper.java | 48 +++++++++++++++++++ .../rest/wahldaten/WahldatenController.java | 4 +- .../service/wahldaten/WahldatenService.java | 5 +- 5 files changed, 124 insertions(+), 3 deletions(-) create mode 100644 wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/exception/ExceptionConstants.java create mode 100644 wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/exception/MissingRequestParameterExceptionDataWrapperMapper.java diff --git a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/exception/ExceptionConstants.java b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/exception/ExceptionConstants.java new file mode 100644 index 000000000..a224d9e46 --- /dev/null +++ b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/exception/ExceptionConstants.java @@ -0,0 +1,32 @@ +package de.muenchen.oss.wahllokalsystem.eaiservice.exception; + +import de.muenchen.oss.wahllokalsystem.wls.common.exception.util.ExceptionDataWrapper; + +public class ExceptionConstants { + + //loadBasisdaten + public static final ExceptionDataWrapper LOADBASISDATEN_TAG_FEHLT = new ExceptionDataWrapper("001", "Es ist kein Tag definiert"); + public static final ExceptionDataWrapper LOADBASISDATEN_NUMMER_FEHLT = new ExceptionDataWrapper("001_1", "Es ist keine Wahlnummer angegeben"); + + //loadWahlberechtigte + public static final String CODE_LOADWAHLBERECHTIGTE_SUCHKRITERIEN_UNVOLLSTAENDIG = "001"; + public static final String MESSAGE_LOADWAHLBERECHTIGTE_SUCHKRITERIEN_UNVOLLSTAENDIG = "Wahlberechtigtenkriterien sind nicht vollständig"; + + //loadWahltage + public static final ExceptionDataWrapper LOADWAHLTAGE_TAG_FEHLT = new ExceptionDataWrapper("001", "Es ist kein Tag definiert"); + + //loadWahlbezirke + public static final ExceptionDataWrapper LOADWAHLEBZIRKE_WAHLTAG_FEHLT = new ExceptionDataWrapper("001", "Es ist kein Wahltag angegeben"); + public static final ExceptionDataWrapper LOADWAHLEBZIRKE_NUMMER_FEHLT = new ExceptionDataWrapper("001_1", "Es ist keine Wahltag-Nummer angegeben"); + + //loadWahlen + public static final ExceptionDataWrapper LOADWAHLEN_WAHLTAG_FEHLT = new ExceptionDataWrapper("001", "Es ist kein Wahltag angegeben"); + public static final ExceptionDataWrapper LOADWAHLEN_NUMMER_FEHLT = new ExceptionDataWrapper("001_1", "Es ist keine Wahlnummer angegeben"); + + /** + * @throws IllegalAccessException when constructor is used + */ + private ExceptionConstants() throws IllegalAccessException { + throw new IllegalAccessException("dont create instanced - it is just a holder for constants"); + } +} diff --git a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/exception/GlobalExceptionHandler.java b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/exception/GlobalExceptionHandler.java index e88960d3d..7b5a09eef 100644 --- a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/exception/GlobalExceptionHandler.java +++ b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/exception/GlobalExceptionHandler.java @@ -1,22 +1,35 @@ package de.muenchen.oss.wahllokalsystem.eaiservice.exception; +import de.muenchen.oss.wahllokalsystem.eaiservice.rest.common.exception.ExceptionConstants; import de.muenchen.oss.wahllokalsystem.wls.common.exception.errorhandler.AbstractExceptionHandler; import de.muenchen.oss.wahllokalsystem.wls.common.exception.rest.model.DTOMapper; +import de.muenchen.oss.wahllokalsystem.wls.common.exception.rest.model.WlsExceptionCategory; import de.muenchen.oss.wahllokalsystem.wls.common.exception.rest.model.WlsExceptionDTO; +import de.muenchen.oss.wahllokalsystem.wls.common.exception.util.ExceptionDataWrapper; import de.muenchen.oss.wahllokalsystem.wls.common.exception.util.ServiceIDFormatter; import lombok.extern.slf4j.Slf4j; +import lombok.val; +import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.MissingServletRequestParameterException; import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.ResponseStatus; +import org.springframework.web.context.request.ServletWebRequest; @ControllerAdvice @Slf4j public class GlobalExceptionHandler extends AbstractExceptionHandler { private final ServiceIDFormatter serviceIDFormatter; - public GlobalExceptionHandler(final ServiceIDFormatter serviceIDFormatter, final DTOMapper dtoMapper) { + private final MissingRequestParameterExceptionDataWrapperMapper missingRequestParameterExceptionDataWrapperMapper; + + public GlobalExceptionHandler(final ServiceIDFormatter serviceIDFormatter, final DTOMapper dtoMapper, + final MissingRequestParameterExceptionDataWrapperMapper missingRequestParameterExceptionDataWrapperMappers) { super(dtoMapper); this.serviceIDFormatter = serviceIDFormatter; + this.missingRequestParameterExceptionDataWrapperMapper = missingRequestParameterExceptionDataWrapperMappers; } @ExceptionHandler @@ -25,6 +38,21 @@ public ResponseEntity handleThrowables(final Throwable throwabl return createResponse(getWahlExceptionDTO(throwable)); } + @ExceptionHandler + @ResponseStatus(HttpStatus.BAD_REQUEST) + @ResponseBody + public WlsExceptionDTO handleThrowable(final MissingServletRequestParameterException missingRequestParameter, + final ServletWebRequest webRequest) { + val requestParameterName = missingRequestParameter.getParameterName(); + val servletPath = webRequest.getRequest().getServletPath(); + + log.info("missing request parameter -> {}", requestParameterName); + log.info("path > {}", servletPath); + + return missingRequestParameterExceptionDataWrapperMapper.getExceptionDataWrapperForMissingRequestParameterByName(servletPath, requestParameterName) + .map(this::createFachlicheWlsExceptionDTO).orElseGet(this::createGenericMissingParameterExceptionDTO); + } + @ExceptionHandler public ResponseEntity handleNotFoundException(final NotFoundException notFoundException) { log.debug("not found entity {} with id {}", notFoundException.getEntityClass(), notFoundException.getRequestedID()); @@ -35,4 +63,12 @@ public ResponseEntity handleNotFoundException(final NotFoundException notF protected String getService() { return serviceIDFormatter.getId(); } + + private WlsExceptionDTO createGenericMissingParameterExceptionDTO() { + return createFachlicheWlsExceptionDTO(ExceptionConstants.DATENALLGEMEIN_PARAMETER_FEHLEN); + } + + private WlsExceptionDTO createFachlicheWlsExceptionDTO(final ExceptionDataWrapper exceptionDataWrapper) { + return new WlsExceptionDTO(WlsExceptionCategory.F, exceptionDataWrapper.code(), getService(), exceptionDataWrapper.message()); + } } diff --git a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/exception/MissingRequestParameterExceptionDataWrapperMapper.java b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/exception/MissingRequestParameterExceptionDataWrapperMapper.java new file mode 100644 index 000000000..c6abbda01 --- /dev/null +++ b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/exception/MissingRequestParameterExceptionDataWrapperMapper.java @@ -0,0 +1,48 @@ +package de.muenchen.oss.wahllokalsystem.eaiservice.exception; + +import de.muenchen.oss.wahllokalsystem.eaiservice.rest.wahldaten.WahldatenController; +import de.muenchen.oss.wahllokalsystem.wls.common.exception.util.ExceptionDataWrapper; +import java.util.HashMap; +import java.util.Map; +import java.util.Optional; +import java.util.regex.Pattern; +import lombok.val; +import org.springframework.stereotype.Component; + +@Component +public class MissingRequestParameterExceptionDataWrapperMapper { + + private static final String WAHLDATEN_SERVLET_PATH = WahldatenController.WAHLDATEN_REQUEST_MAPPING; + + private static final String PATTERN_ANY_OTHER_CHAR = ".*"; + + final Map> mapMissingRequestParameters = new HashMap<>(); + + { + addExceptionDataWrapper("includingSince", WAHLDATEN_SERVLET_PATH + "/wahltage", ExceptionConstants.LOADWAHLTAGE_TAG_FEHLT); + addExceptionDataWrapper("forDate", WAHLDATEN_SERVLET_PATH + "/wahlbezirk", ExceptionConstants.LOADWAHLEBZIRKE_WAHLTAG_FEHLT); + addExceptionDataWrapper("withNummer", WAHLDATEN_SERVLET_PATH + "/wahlbezirk", ExceptionConstants.LOADWAHLEBZIRKE_NUMMER_FEHLT); + addExceptionDataWrapper("forDate", WAHLDATEN_SERVLET_PATH + "/wahlen", ExceptionConstants.LOADWAHLEN_WAHLTAG_FEHLT); + addExceptionDataWrapper("withNummer", WAHLDATEN_SERVLET_PATH + "/wahlen", ExceptionConstants.LOADWAHLEN_NUMMER_FEHLT); + addExceptionDataWrapper("forDate", WAHLDATEN_SERVLET_PATH + "/basisdaten", ExceptionConstants.LOADBASISDATEN_TAG_FEHLT); + addExceptionDataWrapper("withNummer", WAHLDATEN_SERVLET_PATH + "/basisdaten", ExceptionConstants.LOADBASISDATEN_NUMMER_FEHLT); + } + + public Optional getExceptionDataWrapperForMissingRequestParameterByName(final String servletPath, final String requestParameterName) { + val mappingsForParameter = mapMissingRequestParameters.get(requestParameterName); + if (mappingsForParameter == null) { + return Optional.empty(); + } + + val patternMapping = mappingsForParameter.keySet().stream().filter(pattern -> pattern.matcher(servletPath).matches()).findFirst(); + return patternMapping.map(mappingsForParameter::get); + } + + private void addExceptionDataWrapper(final String parameterName, final String pathPattern, final ExceptionDataWrapper exceptionDataWrapper) { + val mapForParameter = mapMissingRequestParameters.getOrDefault(parameterName, new HashMap<>()); + + mapForParameter.put(Pattern.compile(pathPattern), exceptionDataWrapper); + + mapMissingRequestParameters.put(parameterName, mapForParameter); + } +} diff --git a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/rest/wahldaten/WahldatenController.java b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/rest/wahldaten/WahldatenController.java index a82684475..373818249 100644 --- a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/rest/wahldaten/WahldatenController.java +++ b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/rest/wahldaten/WahldatenController.java @@ -19,10 +19,12 @@ import org.springframework.web.bind.annotation.RestController; @RestController -@RequestMapping("/wahldaten") +@RequestMapping(WahldatenController.WAHLDATEN_REQUEST_MAPPING) @RequiredArgsConstructor public class WahldatenController { + public static final String WAHLDATEN_REQUEST_MAPPING = "/wahldaten"; + private final WahldatenService wahldatenService; @GetMapping("wahlbezirke/{wahlbezirkID}/wahlberechtigte") diff --git a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahldaten/WahldatenService.java b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahldaten/WahldatenService.java index 614ef0fdb..f101202bc 100644 --- a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahldaten/WahldatenService.java +++ b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahldaten/WahldatenService.java @@ -12,6 +12,7 @@ import de.muenchen.oss.wahllokalsystem.eaiservice.rest.wahldaten.dto.WahlbezirkDTO; import de.muenchen.oss.wahllokalsystem.eaiservice.rest.wahldaten.dto.WahltagDTO; import de.muenchen.oss.wahllokalsystem.eaiservice.service.IDConverter; +import jakarta.validation.constraints.NotBlank; import java.time.LocalDate; import java.util.List; import java.util.Set; @@ -20,9 +21,11 @@ import lombok.val; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.stereotype.Service; +import org.springframework.validation.annotation.Validated; @Service @RequiredArgsConstructor +@Validated public class WahldatenService { private final WahldatenMapper wahldatenMapper; @@ -61,7 +64,7 @@ public List getWahlberechtigte(final String wahlbezirkID) { } @PreAuthorize("hasAuthority('aoueai_BUSINESSACTION_LoadBasisdaten')") - public BasisdatenDTO getBasisdaten(final LocalDate wahltag, final String nummer) { + public BasisdatenDTO getBasisdaten(final LocalDate wahltag, @NotBlank(message = "X101") final String nummer) { val wahlbezirkeWithParentEntities = findWahlbezirkeWithStimmzettelgebietAndWahlAndWahltagById(wahltag, nummer); val basisstrukturdaten = wahlbezirkeWithParentEntities.stream().map(wahldatenMapper::toBasisstrukturdatenDTO).collect(Collectors.toSet()); From 33c1152ddf7f0112d44b6ed26bcd8488de224f65 Mon Sep 17 00:00:00 2001 From: MrSebastian <13592751+MrSebastian@users.noreply.github.com> Date: Mon, 1 Jul 2024 16:45:48 +0200 Subject: [PATCH 23/58] moved exception constants --- .../exception/ExceptionConstants.java | 35 ------------------- 1 file changed, 35 deletions(-) delete mode 100644 wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/rest/wahldaten/exception/ExceptionConstants.java diff --git a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/rest/wahldaten/exception/ExceptionConstants.java b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/rest/wahldaten/exception/ExceptionConstants.java deleted file mode 100644 index a4b468bdb..000000000 --- a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/rest/wahldaten/exception/ExceptionConstants.java +++ /dev/null @@ -1,35 +0,0 @@ -package de.muenchen.oss.wahllokalsystem.eaiservice.rest.wahldaten.exception; - -public class ExceptionConstants { - - //loadBasisdaten - public static final String CODE_LOADBASISDATEN_TAG_FEHLT = "001"; - public static final String MESSAGE_LOADBASISDATEN_TAG_FEHLT = "Es ist kein Tag definiert"; - - //loadWahlberechtigte - public static final String CODE_LOADWAHLBERECHTIGTE_SUCHKRITERIEN_UNVOLLSTAENDIG = "001"; - public static final String MESSAGE_LOADWAHLBERECHTIGTE_SUCHKRITERIEN_UNVOLLSTAENDIG = "Wahlberechtigtenkriterien sind nicht vollständig"; - - //loadWahltage - public static final String CODE_LOADWAHLTAGE_TAG_FEHLT = "001"; - public static final String MESSAGE_LOADWAHLTAGE_TAG_FEHLT = "Es ist kein Tag definiert"; - - //loadWahlbezirke - public static final String CODE_LOADWAHLBEZIRKE_WAHLTAG_FEHLT = "001"; - public static final String CODE_LOADWAHLBEZIRKE_NUMMER_FEHLT = "001_1"; - public static final String MESSAGE_LOADWAHLEBZIRKE_WAHLTAG_FEHLT = "Es ist kein Wahltag angegeben"; - public static final String MESSAGE_LOADWAHLEBZIRKE_NUMMER_FEHLT = "Es ist keine Wahltag-Nummer angegeben"; - - //loadWahlen - public static final String CODE_LOADWAHLEN_WAHLTAG_FEHLT = "001"; - public static final String MESSAGE_LOADWAHLEN_WAHLTAG_FEHLT = "Es ist kein Wahltag angegeben"; - public static final String CODE_LOADWAHLEN_NUMMER_FEHLT = "001_1"; - public static final String MESSAGE_LOADWAHLEN_NUMMER_FEHLT = "Es ist keine Wahlnummer angegeben"; - - /** - * @throws IllegalAccessException when constructor is used - */ - private ExceptionConstants() throws IllegalAccessException { - throw new IllegalAccessException("dont create instanced - it is just a holder for constants"); - } -} From 5d75731c877e9b1aa9a8e8bce178685a1811562e Mon Sep 17 00:00:00 2001 From: MrSebastian <13592751+MrSebastian@users.noreply.github.com> Date: Mon, 1 Jul 2024 16:59:35 +0200 Subject: [PATCH 24/58] remove unwanted validation annotation --- .../eaiservice/service/wahldaten/WahldatenService.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahldaten/WahldatenService.java b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahldaten/WahldatenService.java index f101202bc..6afa9c546 100644 --- a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahldaten/WahldatenService.java +++ b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahldaten/WahldatenService.java @@ -12,7 +12,6 @@ import de.muenchen.oss.wahllokalsystem.eaiservice.rest.wahldaten.dto.WahlbezirkDTO; import de.muenchen.oss.wahllokalsystem.eaiservice.rest.wahldaten.dto.WahltagDTO; import de.muenchen.oss.wahllokalsystem.eaiservice.service.IDConverter; -import jakarta.validation.constraints.NotBlank; import java.time.LocalDate; import java.util.List; import java.util.Set; @@ -64,7 +63,7 @@ public List getWahlberechtigte(final String wahlbezirkID) { } @PreAuthorize("hasAuthority('aoueai_BUSINESSACTION_LoadBasisdaten')") - public BasisdatenDTO getBasisdaten(final LocalDate wahltag, @NotBlank(message = "X101") final String nummer) { + public BasisdatenDTO getBasisdaten(final LocalDate wahltag, final String nummer) { val wahlbezirkeWithParentEntities = findWahlbezirkeWithStimmzettelgebietAndWahlAndWahltagById(wahltag, nummer); val basisstrukturdaten = wahlbezirkeWithParentEntities.stream().map(wahldatenMapper::toBasisstrukturdatenDTO).collect(Collectors.toSet()); From e28fc0454017e18aee75e877200bd154bc10c693 Mon Sep 17 00:00:00 2001 From: MrSebastian <13592751+MrSebastian@users.noreply.github.com> Date: Mon, 1 Jul 2024 17:06:51 +0200 Subject: [PATCH 25/58] add parameter validation --- .../exception/ExceptionConstants.java | 4 +- .../service/wahldaten/WahldatenService.java | 12 ++++ .../service/wahldaten/WahldatenValidator.java | 58 +++++++++++++++++++ 3 files changed, 72 insertions(+), 2 deletions(-) create mode 100644 wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahldaten/WahldatenValidator.java diff --git a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/exception/ExceptionConstants.java b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/exception/ExceptionConstants.java index a224d9e46..ef57646b7 100644 --- a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/exception/ExceptionConstants.java +++ b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/exception/ExceptionConstants.java @@ -9,8 +9,8 @@ public class ExceptionConstants { public static final ExceptionDataWrapper LOADBASISDATEN_NUMMER_FEHLT = new ExceptionDataWrapper("001_1", "Es ist keine Wahlnummer angegeben"); //loadWahlberechtigte - public static final String CODE_LOADWAHLBERECHTIGTE_SUCHKRITERIEN_UNVOLLSTAENDIG = "001"; - public static final String MESSAGE_LOADWAHLBERECHTIGTE_SUCHKRITERIEN_UNVOLLSTAENDIG = "Wahlberechtigtenkriterien sind nicht vollständig"; + public static final ExceptionDataWrapper LOADWAHLBERECHTIGTE_SUCHKRITERIEN_UNVOLLSTAENDIG = new ExceptionDataWrapper("001", + "Wahlberechtigtenkriterien sind nicht vollständig"); //loadWahltage public static final ExceptionDataWrapper LOADWAHLTAGE_TAG_FEHLT = new ExceptionDataWrapper("001", "Es ist kein Tag definiert"); diff --git a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahldaten/WahldatenService.java b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahldaten/WahldatenService.java index 6afa9c546..7275f79ba 100644 --- a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahldaten/WahldatenService.java +++ b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahldaten/WahldatenService.java @@ -29,6 +29,8 @@ public class WahldatenService { private final WahldatenMapper wahldatenMapper; + private final WahldatenValidator wahldatenValidator; + private final IDConverter idConverter; private final WahltageRepository wahltageRepository; @@ -41,22 +43,30 @@ public class WahldatenService { @PreAuthorize("hasAuthority('aoueai_BUSINESSACTION_LoadWahltage')") public Set getWahltage(LocalDate wahltageIncludingSince) { + wahldatenValidator.validGetWahltageParameterOrThrow(wahltageIncludingSince); + return getWahltageIncludingSince(wahltageIncludingSince).stream().map(wahldatenMapper::toDTO).collect(Collectors.toSet()); } @PreAuthorize("hasAuthority('aoueai_BUSINESSACTION_LoadWahlen')") public Set getWahlen(final LocalDate wahltag, final String nummer) { + wahldatenValidator.validGetWahlenParameterOrThrow(wahltag, nummer); + return wahlRepository.findByWahltagTagAndNummer(wahltag, nummer).stream().map(wahldatenMapper::toDTO).collect(Collectors.toSet()); } @PreAuthorize("hasAuthority('aoueai_BUSINESSACTION_LoadWahlbezirke')") public Set getWahlbezirke(final LocalDate wahltag, final String nummer) { + wahldatenValidator.validGetWahlbezirkeParameterOrThrow(wahltag, nummer); + return findWahlbezirkeWithStimmzettelgebietAndWahlAndWahltagById(wahltag, nummer).stream().map(wahldatenMapper::toDTO) .collect(Collectors.toSet()); } @PreAuthorize("hasAuthority('aoueai_BUSINESSACTION_LoadWahlberechtigte')") public List getWahlberechtigte(final String wahlbezirkID) { + wahldatenValidator.validGetWahlberechtigteParameterOrThrow(wahlbezirkID); + return wahlbezirkRepository.findWahlbezirkeWithStimmzettelgebietAndWahlAndWahltagById(idConverter.convertIDToUUIDOrThrow(wahlbezirkID)).stream() .map(wahldatenMapper::toWahlberechtigteDTO) .toList(); @@ -64,6 +74,8 @@ public List getWahlberechtigte(final String wahlbezirkID) { @PreAuthorize("hasAuthority('aoueai_BUSINESSACTION_LoadBasisdaten')") public BasisdatenDTO getBasisdaten(final LocalDate wahltag, final String nummer) { + wahldatenValidator.validGetBasisdatenParameterOrThrow(wahltag, nummer); + val wahlbezirkeWithParentEntities = findWahlbezirkeWithStimmzettelgebietAndWahlAndWahltagById(wahltag, nummer); val basisstrukturdaten = wahlbezirkeWithParentEntities.stream().map(wahldatenMapper::toBasisstrukturdatenDTO).collect(Collectors.toSet()); diff --git a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahldaten/WahldatenValidator.java b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahldaten/WahldatenValidator.java new file mode 100644 index 000000000..03098c5c8 --- /dev/null +++ b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahldaten/WahldatenValidator.java @@ -0,0 +1,58 @@ +package de.muenchen.oss.wahllokalsystem.eaiservice.service.wahldaten; + +import de.muenchen.oss.wahllokalsystem.eaiservice.exception.ExceptionConstants; +import de.muenchen.oss.wahllokalsystem.wls.common.exception.util.ExceptionFactory; +import java.time.LocalDate; +import lombok.RequiredArgsConstructor; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Component; + +@Component +@RequiredArgsConstructor +public class WahldatenValidator { + + private final ExceptionFactory exceptionFactory; + + public void validGetWahltageParameterOrThrow(final LocalDate wahltag) { + if (wahltag == null) { + throw exceptionFactory.createFachlicheWlsException(ExceptionConstants.LOADWAHLTAGE_TAG_FEHLT); + } + } + + public void validGetWahlenParameterOrThrow(final LocalDate wahltag, final String nummer) { + if (wahltag == null) { + throw exceptionFactory.createFachlicheWlsException(ExceptionConstants.LOADWAHLEN_WAHLTAG_FEHLT); + } + + if (nummer == null) { + throw exceptionFactory.createFachlicheWlsException(ExceptionConstants.LOADWAHLEN_NUMMER_FEHLT); + } + } + + public void validGetWahlbezirkeParameterOrThrow(final LocalDate wahltag, final String wahlbezirkID) { + if (wahltag == null) { + throw exceptionFactory.createFachlicheWlsException(ExceptionConstants.LOADWAHLEBZIRKE_WAHLTAG_FEHLT); + } + + if (wahlbezirkID == null) { + throw exceptionFactory.createFachlicheWlsException(ExceptionConstants.LOADWAHLEBZIRKE_WAHLTAG_FEHLT); + } + } + + public void validGetWahlberechtigteParameterOrThrow(final String wahlbezirkID) { + if (StringUtils.isBlank(wahlbezirkID)) { + throw exceptionFactory.createFachlicheWlsException(ExceptionConstants.LOADWAHLBERECHTIGTE_SUCHKRITERIEN_UNVOLLSTAENDIG); + } + } + + public void validGetBasisdatenParameterOrThrow(final LocalDate wahltag, final String nummer) { + if (wahltag == null) { + throw exceptionFactory.createFachlicheWlsException(ExceptionConstants.LOADBASISDATEN_TAG_FEHLT); + } + + if (nummer == null) { + throw exceptionFactory.createFachlicheWlsException(ExceptionConstants.LOADBASISDATEN_NUMMER_FEHLT); + } + } + +} From 5557e03eae352edcdf53dfd36ed3349df6300bd4 Mon Sep 17 00:00:00 2001 From: MrSebastian <13592751+MrSebastian@users.noreply.github.com> Date: Tue, 2 Jul 2024 15:14:14 +0200 Subject: [PATCH 26/58] add lombok builder for easier tests --- .../wahllokalsystem/eaiservice/rest/wahldaten/dto/WahlDTO.java | 2 ++ .../eaiservice/rest/wahldaten/dto/WahlberechtigteDTO.java | 2 ++ .../eaiservice/rest/wahldaten/dto/WahlbezirkDTO.java | 2 ++ .../eaiservice/rest/wahldaten/dto/WahltagDTO.java | 2 ++ 4 files changed, 8 insertions(+) diff --git a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/rest/wahldaten/dto/WahlDTO.java b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/rest/wahldaten/dto/WahlDTO.java index e891e392a..48fb23e5d 100644 --- a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/rest/wahldaten/dto/WahlDTO.java +++ b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/rest/wahldaten/dto/WahlDTO.java @@ -3,7 +3,9 @@ import de.muenchen.oss.wahllokalsystem.eaiservice.rest.common.dto.WahlartDTO; import jakarta.validation.constraints.NotNull; import java.time.LocalDate; +import lombok.Builder; +@Builder public record WahlDTO(@NotNull String identifikator, @NotNull String name, @NotNull WahlartDTO wahlart, diff --git a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/rest/wahldaten/dto/WahlberechtigteDTO.java b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/rest/wahldaten/dto/WahlberechtigteDTO.java index fd8637765..7f566f420 100644 --- a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/rest/wahldaten/dto/WahlberechtigteDTO.java +++ b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/rest/wahldaten/dto/WahlberechtigteDTO.java @@ -2,7 +2,9 @@ import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotNull; +import lombok.Builder; +@Builder public record WahlberechtigteDTO(@NotNull String wahlID, @NotNull String wahlbezirkID, @Schema(requiredMode = Schema.RequiredMode.REQUIRED) long a1, diff --git a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/rest/wahldaten/dto/WahlbezirkDTO.java b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/rest/wahldaten/dto/WahlbezirkDTO.java index 361b6d001..6ac560c53 100644 --- a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/rest/wahldaten/dto/WahlbezirkDTO.java +++ b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/rest/wahldaten/dto/WahlbezirkDTO.java @@ -2,7 +2,9 @@ import jakarta.validation.constraints.NotNull; import java.time.LocalDate; +import lombok.Builder; +@Builder public record WahlbezirkDTO(@NotNull String identifikator, @NotNull WahlbezirkArtDTO wahlbezirkArt, @NotNull String nummer, diff --git a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/rest/wahldaten/dto/WahltagDTO.java b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/rest/wahldaten/dto/WahltagDTO.java index 0b3f90872..cb5a3726b 100644 --- a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/rest/wahldaten/dto/WahltagDTO.java +++ b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/rest/wahldaten/dto/WahltagDTO.java @@ -2,7 +2,9 @@ import jakarta.validation.constraints.NotNull; import java.time.LocalDate; +import lombok.Builder; +@Builder public record WahltagDTO(@NotNull String identifikator, @NotNull LocalDate tag, @NotNull String beschreibung, From 09b98d7d954fbdc97fe764bcbf667554056d61d3 Mon Sep 17 00:00:00 2001 From: MrSebastian <13592751+MrSebastian@users.noreply.github.com> Date: Tue, 2 Jul 2024 15:14:50 +0200 Subject: [PATCH 27/58] add lombok all and no args --- .../eaiservice/domain/wahldaten/Stimmzettelgebiet.java | 4 ++++ .../oss/wahllokalsystem/eaiservice/domain/wahldaten/Wahl.java | 4 ++++ .../eaiservice/domain/wahldaten/Wahlbezirk.java | 4 ++++ .../wahllokalsystem/eaiservice/domain/wahldaten/Wahltag.java | 4 ++++ 4 files changed, 16 insertions(+) diff --git a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/Stimmzettelgebiet.java b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/Stimmzettelgebiet.java index f0cdabb6b..bcc6186cb 100644 --- a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/Stimmzettelgebiet.java +++ b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/Stimmzettelgebiet.java @@ -7,8 +7,10 @@ import jakarta.persistence.JoinColumn; import jakarta.persistence.ManyToOne; import jakarta.validation.constraints.NotNull; +import lombok.AllArgsConstructor; import lombok.EqualsAndHashCode; import lombok.Getter; +import lombok.NoArgsConstructor; import lombok.Setter; import lombok.ToString; @@ -17,6 +19,8 @@ @Setter @EqualsAndHashCode(callSuper = true) @ToString(onlyExplicitlyIncluded = true) +@NoArgsConstructor +@AllArgsConstructor public class Stimmzettelgebiet extends BaseEntity { @ToString.Include diff --git a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/Wahl.java b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/Wahl.java index f9f6ded48..b7658d07f 100644 --- a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/Wahl.java +++ b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/Wahl.java @@ -7,8 +7,10 @@ import jakarta.persistence.JoinColumn; import jakarta.persistence.ManyToOne; import jakarta.validation.constraints.NotNull; +import lombok.AllArgsConstructor; import lombok.EqualsAndHashCode; import lombok.Getter; +import lombok.NoArgsConstructor; import lombok.Setter; import lombok.ToString; @@ -17,6 +19,8 @@ @Setter @EqualsAndHashCode(callSuper = true) @ToString(onlyExplicitlyIncluded = true) +@NoArgsConstructor +@AllArgsConstructor public class Wahl extends BaseEntity { @NotNull diff --git a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/Wahlbezirk.java b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/Wahlbezirk.java index b2a42b243..f1289cb7e 100644 --- a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/Wahlbezirk.java +++ b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/Wahlbezirk.java @@ -8,8 +8,10 @@ import jakarta.persistence.JoinColumn; import jakarta.persistence.ManyToOne; import jakarta.validation.constraints.NotNull; +import lombok.AllArgsConstructor; import lombok.EqualsAndHashCode; import lombok.Getter; +import lombok.NoArgsConstructor; import lombok.Setter; import lombok.ToString; @@ -18,6 +20,8 @@ @Setter @EqualsAndHashCode(callSuper = true) @ToString(onlyExplicitlyIncluded = true) +@NoArgsConstructor +@AllArgsConstructor public class Wahlbezirk extends BaseEntity { @NotNull diff --git a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/Wahltag.java b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/Wahltag.java index e5af93e6b..edd789ce8 100644 --- a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/Wahltag.java +++ b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/Wahltag.java @@ -4,8 +4,10 @@ import jakarta.persistence.Entity; import jakarta.validation.constraints.NotNull; import java.time.LocalDate; +import lombok.AllArgsConstructor; import lombok.EqualsAndHashCode; import lombok.Getter; +import lombok.NoArgsConstructor; import lombok.Setter; import lombok.ToString; @@ -14,6 +16,8 @@ @Setter @EqualsAndHashCode(callSuper = true) @ToString(onlyExplicitlyIncluded = true) +@NoArgsConstructor +@AllArgsConstructor public class Wahltag extends BaseEntity { @NotNull From 1dd00d6ac6da1aef4457213459daaad0af02e217 Mon Sep 17 00:00:00 2001 From: MrSebastian <13592751+MrSebastian@users.noreply.github.com> Date: Tue, 2 Jul 2024 15:17:21 +0200 Subject: [PATCH 28/58] add unit test for controller --- .../wahldaten/WahldatenControllerTest.java | 106 ++++++++++++++++++ 1 file changed, 106 insertions(+) create mode 100644 wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/rest/wahldaten/WahldatenControllerTest.java diff --git a/wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/rest/wahldaten/WahldatenControllerTest.java b/wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/rest/wahldaten/WahldatenControllerTest.java new file mode 100644 index 000000000..49c4409b8 --- /dev/null +++ b/wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/rest/wahldaten/WahldatenControllerTest.java @@ -0,0 +1,106 @@ +package de.muenchen.oss.wahllokalsystem.eaiservice.rest.wahldaten; + +import static org.mockito.ArgumentMatchers.eq; + +import de.muenchen.oss.wahllokalsystem.eaiservice.rest.wahldaten.dto.BasisdatenDTO; +import de.muenchen.oss.wahllokalsystem.eaiservice.rest.wahldaten.dto.WahlDTO; +import de.muenchen.oss.wahllokalsystem.eaiservice.rest.wahldaten.dto.WahlberechtigteDTO; +import de.muenchen.oss.wahllokalsystem.eaiservice.rest.wahldaten.dto.WahlbezirkDTO; +import de.muenchen.oss.wahllokalsystem.eaiservice.rest.wahldaten.dto.WahltagDTO; +import de.muenchen.oss.wahllokalsystem.eaiservice.service.wahldaten.WahldatenService; +import java.time.LocalDate; +import java.util.List; +import java.util.Set; +import lombok.val; +import org.assertj.core.api.Assertions; +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.Mockito; +import org.mockito.junit.jupiter.MockitoExtension; + +@ExtendWith(MockitoExtension.class) +class WahldatenControllerTest { + + @Mock + WahldatenService wahldatenService; + + @InjectMocks + WahldatenController unitUnderTest; + + @Nested + class LoadWahlberechtigte { + + @Test + void serviceIsCalled() { + val wahlbezirkID = "wahlbezirkID"; + + val mockedServiceResponse = List.of(WahlberechtigteDTO.builder().build()); + Mockito.when(wahldatenService.getWahlberechtigte(wahlbezirkID)).thenReturn(mockedServiceResponse); + + Assertions.assertThat(unitUnderTest.loadWahlberechtigte(wahlbezirkID)).isSameAs(mockedServiceResponse); + } + + } + + @Nested + class LoadWahltageSinceIncluding { + @Test + void serviceIsCalled() { + val includingSince = LocalDate.now(); + + val mockedServiceResponse = Set.of(WahltagDTO.builder().build()); + Mockito.when(wahldatenService.getWahltage(eq(includingSince))).thenReturn(mockedServiceResponse); + + Assertions.assertThat(unitUnderTest.loadWahltageSinceIncluding(includingSince)).isSameAs(mockedServiceResponse); + } + } + + @Nested + class LoadWahlbezirke { + + @Test + void serviceIsCalled() { + val forDate = LocalDate.now(); + val nummer = "nummer"; + + val mockedServiceResponse = Set.of(WahlbezirkDTO.builder().build()); + Mockito.when(wahldatenService.getWahlbezirke(eq(forDate), eq(nummer))).thenReturn(mockedServiceResponse); + + Assertions.assertThat(unitUnderTest.loadWahlbezirke(forDate, nummer)).isSameAs(mockedServiceResponse); + } + + } + + @Nested + class LoadWahlen { + + @Test + void serviceIsCalled() { + val forDate = LocalDate.now(); + val nummer = "nummer"; + + val mockedServiceResponse = Set.of(WahlDTO.builder().build()); + Mockito.when(wahldatenService.getWahlen(eq(forDate), eq(nummer))).thenReturn(mockedServiceResponse); + + Assertions.assertThat(unitUnderTest.loadWahlen(forDate, nummer)).isSameAs(mockedServiceResponse); + } + } + + @Nested + class LoadBasisdaten { + + @Test + void serviceIsCalled() { + val forDate = LocalDate.now(); + val nummer = "nummer"; + + val mockedServicResponse = new BasisdatenDTO(null, null, null, null); + Mockito.when(wahldatenService.getBasisdaten(eq(forDate), eq(nummer))).thenReturn(mockedServicResponse); + + Assertions.assertThat(unitUnderTest.loadBasisdaten(forDate, nummer)).isSameAs(mockedServicResponse); + } + } +} \ No newline at end of file From 0e7a8cbf61e7333364d4a238be727a686ac4b97a Mon Sep 17 00:00:00 2001 From: MrSebastian <13592751+MrSebastian@users.noreply.github.com> Date: Tue, 2 Jul 2024 15:18:20 +0200 Subject: [PATCH 29/58] start with controller integration test --- .../eaiservice/Authorities.java | 2 + .../WahldatenControllerIntegrationTest.java | 104 ++++++++++++++++++ 2 files changed, 106 insertions(+) create mode 100644 wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/rest/wahldaten/WahldatenControllerIntegrationTest.java diff --git a/wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/Authorities.java b/wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/Authorities.java index 148ecb28b..314e64b89 100644 --- a/wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/Authorities.java +++ b/wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/Authorities.java @@ -9,6 +9,8 @@ public class Authorities { public static final String SERVICE_LOAD_WAHLVORSTAND = "aoueai_BUSINESSACTION_LoadWahlvorstand"; public static final String SERVICE_SAVE_ANWESENHEIT = "aoueai_BUSINESSACTION_SaveAnwesenheit"; + public static final String SERVICE_LOAD_WAHLBERECHTIGTE = "aoueai_BUSINESSACTION_LoadWahlberechtigte"; + public static final String[] ALL_AUTHORITIES_GETWAHLVORSTANDFORWAHLBEZIRK = { SERVICE_LOAD_WAHLVORSTAND }; diff --git a/wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/rest/wahldaten/WahldatenControllerIntegrationTest.java b/wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/rest/wahldaten/WahldatenControllerIntegrationTest.java new file mode 100644 index 000000000..50145fa78 --- /dev/null +++ b/wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/rest/wahldaten/WahldatenControllerIntegrationTest.java @@ -0,0 +1,104 @@ +package de.muenchen.oss.wahllokalsystem.eaiservice.rest.wahldaten; + +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; + +import com.fasterxml.jackson.databind.ObjectMapper; +import de.muenchen.oss.wahllokalsystem.eaiservice.Authorities; +import de.muenchen.oss.wahllokalsystem.eaiservice.MicroServiceApplication; +import de.muenchen.oss.wahllokalsystem.eaiservice.TestConstants; +import de.muenchen.oss.wahllokalsystem.eaiservice.domain.wahldaten.Stimmzettelgebiet; +import de.muenchen.oss.wahllokalsystem.eaiservice.domain.wahldaten.StimmzettelgebietRepository; +import de.muenchen.oss.wahllokalsystem.eaiservice.domain.wahldaten.Stimmzettelgebietsart; +import de.muenchen.oss.wahllokalsystem.eaiservice.domain.wahldaten.Wahl; +import de.muenchen.oss.wahllokalsystem.eaiservice.domain.wahldaten.WahlRepository; +import de.muenchen.oss.wahllokalsystem.eaiservice.domain.wahldaten.Wahlart; +import de.muenchen.oss.wahllokalsystem.eaiservice.domain.wahldaten.Wahlbezirk; +import de.muenchen.oss.wahllokalsystem.eaiservice.domain.wahldaten.WahlbezirkRepository; +import de.muenchen.oss.wahllokalsystem.eaiservice.domain.wahldaten.Wahltag; +import de.muenchen.oss.wahllokalsystem.eaiservice.domain.wahldaten.WahltageRepository; +import de.muenchen.oss.wahllokalsystem.eaiservice.rest.wahldaten.dto.WahlberechtigteDTO; +import de.muenchen.oss.wahllokalsystem.eaiservice.rest.wahldaten.dto.WahlbezirkArtDTO; +import de.muenchen.oss.wahllokalsystem.eaiservice.service.wahldaten.WahldatenMapper; +import java.time.LocalDate; +import lombok.val; +import org.assertj.core.api.Assertions; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.security.test.context.support.WithMockUser; +import org.springframework.test.context.ActiveProfiles; +import org.springframework.test.web.servlet.MockMvc; + +@SpringBootTest(classes = MicroServiceApplication.class) +@AutoConfigureMockMvc +@ActiveProfiles({ TestConstants.SPRING_TEST_PROFILE }) +public class WahldatenControllerIntegrationTest { + + @Autowired + MockMvc mockMvc; + + @Autowired + WahltageRepository wahltageRepository; + + @Autowired + WahlRepository wahlRepository; + + @Autowired + StimmzettelgebietRepository stimmzettelgebietRepository; + + @Autowired + WahlbezirkRepository wahlbezirkRepository; + + @Autowired + WahldatenMapper wahldatenMapper; + + @Autowired + ObjectMapper objectMapper; + + @AfterEach + public void tearDown() throws Exception { + wahlbezirkRepository.deleteAll(); + stimmzettelgebietRepository.deleteAll(); + wahlRepository.deleteAll(); + wahltageRepository.deleteAll(); + } + + @Nested + class LoadWahlberechtigte { + + @Test + @WithMockUser(authorities = Authorities.SERVICE_LOAD_WAHLBERECHTIGTE) + void dataFound() throws Exception { + val wahltag = wahltageRepository.save(new Wahltag(LocalDate.now(), "beschreibung wahltag", "nummer")); + val wahl = wahlRepository.save(new Wahl("wahl", Wahlart.BTW, wahltag, "1")); + val stimmzettelgebiet = stimmzettelgebietRepository.save(new Stimmzettelgebiet("sgz1", "sgz1", Stimmzettelgebietsart.SK, wahl)); + val wahlbezirkToFind = wahlbezirkRepository.save(new Wahlbezirk(WahlbezirkArtDTO.UWB, "nummer", stimmzettelgebiet, 10, 11, 12)); + + wahlbezirkRepository.save(new Wahlbezirk(WahlbezirkArtDTO.UWB, "nummer", stimmzettelgebiet, 10, 11, 12)); + + val request = get(WahldatenController.WAHLDATEN_REQUEST_MAPPING + "/wahlbezirke/" + wahlbezirkToFind.getId() + "/wahlberechtigte"); + + val response = mockMvc.perform(request).andExpect(status().isOk()).andReturn(); + val responseBodyAsDTO = objectMapper.readValue(response.getResponse().getContentAsString(), WahlberechtigteDTO[].class); + + val expectedResponseBody = new WahlberechtigteDTO[] { wahldatenMapper.toWahlberechtigteDTO(wahlbezirkToFind) }; + + Assertions.assertThat(responseBodyAsDTO).isEqualTo(expectedResponseBody); + } + + @Test + void noDataFound() { + + } + + @Test + void wlsExceptionOnValidationFailed() { + + } + + } +} From d50b91211f4adb2935796c161c89eedb9e252533 Mon Sep 17 00:00:00 2001 From: MrSebastian <13592751+MrSebastian@users.noreply.github.com> Date: Wed, 3 Jul 2024 20:22:38 +0200 Subject: [PATCH 30/58] create tests for wahldaten implementations --- .../eaiservice/Authorities.java | 4 + .../StimmzettelgebietRepositoryTest.java | 59 ++++ .../domain/wahldaten/WahlRepositoryTest.java | 57 ++++ .../wahldaten/WahltageRepositoryTest.java | 46 +++ .../WahldatenControllerIntegrationTest.java | 300 ++++++++++++++++- .../wahldaten/WahldatenControllerTest.java | 2 +- .../eaiservice/service/IDConverterTest.java | 47 +++ .../wahldaten/WahldatenMapperTest.java | 152 +++++++++ .../WahldatenServiceSecurityTest.java | 121 +++++++ .../wahldaten/WahldatenServiceTest.java | 307 ++++++++++++++++++ .../wahldaten/WahldatenValidatorTest.java | 168 ++++++++++ 11 files changed, 1260 insertions(+), 3 deletions(-) create mode 100644 wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/StimmzettelgebietRepositoryTest.java create mode 100644 wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/WahlRepositoryTest.java create mode 100644 wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/WahltageRepositoryTest.java create mode 100644 wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/IDConverterTest.java create mode 100644 wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahldaten/WahldatenMapperTest.java create mode 100644 wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahldaten/WahldatenServiceSecurityTest.java create mode 100644 wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahldaten/WahldatenServiceTest.java create mode 100644 wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahldaten/WahldatenValidatorTest.java diff --git a/wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/Authorities.java b/wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/Authorities.java index 314e64b89..26c4248e8 100644 --- a/wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/Authorities.java +++ b/wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/Authorities.java @@ -10,6 +10,10 @@ public class Authorities { public static final String SERVICE_SAVE_ANWESENHEIT = "aoueai_BUSINESSACTION_SaveAnwesenheit"; public static final String SERVICE_LOAD_WAHLBERECHTIGTE = "aoueai_BUSINESSACTION_LoadWahlberechtigte"; + public static final String SERVICE_LOAD_WAHLTAGE = "aoueai_BUSINESSACTION_LoadWahltage"; + public static final String SERVICE_LOAD_WAHLBEZIRKE = "aoueai_BUSINESSACTION_LoadWahlbezirke"; + public static final String SERVICE_LOAD_WAHLEN = "aoueai_BUSINESSACTION_LoadWahlen"; + public static final String SERVICE_LOAD_BASISDATEN = "aoueai_BUSINESSACTION_LoadBasisdaten"; public static final String[] ALL_AUTHORITIES_GETWAHLVORSTANDFORWAHLBEZIRK = { SERVICE_LOAD_WAHLVORSTAND diff --git a/wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/StimmzettelgebietRepositoryTest.java b/wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/StimmzettelgebietRepositoryTest.java new file mode 100644 index 000000000..c11198d0a --- /dev/null +++ b/wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/StimmzettelgebietRepositoryTest.java @@ -0,0 +1,59 @@ +package de.muenchen.oss.wahllokalsystem.eaiservice.domain.wahldaten; + +import de.muenchen.oss.wahllokalsystem.eaiservice.MicroServiceApplication; +import java.time.LocalDate; +import lombok.val; +import org.assertj.core.api.Assertions; +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; + +@SpringBootTest(classes = MicroServiceApplication.class) +class StimmzettelgebietRepositoryTest { + + @Autowired + WahltageRepository wahltageRepository; + + @Autowired + WahlRepository wahlRepository; + + @Autowired + StimmzettelgebietRepository stimmzettelgebietRepository; + + @Nested + class FindByWahlWahltagTagAndWahlNummer { + + @Test + void dataFound() { + val wahltag = LocalDate.now(); + val nummer = "nummer"; + + val wahltag1 = wahltageRepository.save(new Wahltag(wahltag, "", nummer)); + val wahltag2 = wahltageRepository.save(new Wahltag(wahltag.minusDays(1), "", nummer)); + val wahltag3 = wahltageRepository.save(new Wahltag(wahltag.plusDays(1), "", nummer)); + val wahltag4 = wahltageRepository.save(new Wahltag(wahltag, "", nummer + "x")); + + val wahl1 = wahlRepository.save(new Wahl("", Wahlart.BTW, wahltag1, "")); + val wahl2 = wahlRepository.save(new Wahl("", Wahlart.BTW, wahltag2, "")); + val wahl3 = wahlRepository.save(new Wahl("", Wahlart.BTW, wahltag3, "")); + val wahl4 = wahlRepository.save(new Wahl("", Wahlart.BTW, wahltag4, "")); + + val sgz1ToFind = stimmzettelgebietRepository.save(new Stimmzettelgebiet("sgz1", "", Stimmzettelgebietsart.SK, wahl1)); + val sgz2ToFind = stimmzettelgebietRepository.save(new Stimmzettelgebiet("sgz2", "", Stimmzettelgebietsart.SK, wahl1)); + stimmzettelgebietRepository.save(new Stimmzettelgebiet("sgz1", "", Stimmzettelgebietsart.SK, wahl2)); + stimmzettelgebietRepository.save(new Stimmzettelgebiet("sgz1", "", Stimmzettelgebietsart.SK, wahl3)); + stimmzettelgebietRepository.save(new Stimmzettelgebiet("sgz1", "", Stimmzettelgebietsart.SK, wahl4)); + + val result = stimmzettelgebietRepository.findByWahlWahltagTagAndWahlWahltagNummer(wahltag, nummer); + + val expectedResult = new Stimmzettelgebiet[] { + sgz1ToFind, + sgz2ToFind + }; + + Assertions.assertThat(result).containsOnly(expectedResult); + } + } + +} diff --git a/wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/WahlRepositoryTest.java b/wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/WahlRepositoryTest.java new file mode 100644 index 000000000..9d16f7fb9 --- /dev/null +++ b/wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/WahlRepositoryTest.java @@ -0,0 +1,57 @@ +package de.muenchen.oss.wahllokalsystem.eaiservice.domain.wahldaten; + +import de.muenchen.oss.wahllokalsystem.eaiservice.MicroServiceApplication; +import java.time.LocalDate; +import lombok.val; +import org.assertj.core.api.Assertions; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; + +@SpringBootTest(classes = MicroServiceApplication.class) +class WahlRepositoryTest { + + @Autowired + WahltageRepository wahltageRepository; + + @Autowired + WahlRepository wahlRepository; + + @AfterEach + void tearDown() { + wahlRepository.deleteAll(); + } + + @Nested + class FindByWahltagTagAndWahltagNummer { + + @Test + void dataFound() { + val wahltag = LocalDate.now(); + val nummer = "1"; + + val wahltag1 = wahltageRepository.save(new Wahltag(wahltag, "", nummer)); + val wahltag2 = wahltageRepository.save(new Wahltag(wahltag.minusDays(1), "", nummer)); + val wahltag3 = wahltageRepository.save(new Wahltag(wahltag.plusDays(1), "", nummer)); + val wahltag4 = wahltageRepository.save(new Wahltag(wahltag, "", nummer + "x")); + + val wahl1ToFind = wahlRepository.save(new Wahl("wahl1", Wahlart.BTW, wahltag1, "")); + val wahl2ToFind = wahlRepository.save(new Wahl("wahl2", Wahlart.BTW, wahltag1, "")); + wahlRepository.save(new Wahl("", Wahlart.BTW, wahltag2, "")); + wahlRepository.save(new Wahl("", Wahlart.BTW, wahltag3, "")); + wahlRepository.save(new Wahl("", Wahlart.BTW, wahltag4, "")); + + val result = wahlRepository.findByWahltagTagAndWahltagNummer(wahltag, nummer); + + val expectedResult = new Wahl[] { + wahl1ToFind, + wahl2ToFind + }; + + Assertions.assertThat(result).containsOnly(expectedResult); + } + } + +} diff --git a/wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/WahltageRepositoryTest.java b/wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/WahltageRepositoryTest.java new file mode 100644 index 000000000..616e870e5 --- /dev/null +++ b/wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/WahltageRepositoryTest.java @@ -0,0 +1,46 @@ +package de.muenchen.oss.wahllokalsystem.eaiservice.domain.wahldaten; + +import de.muenchen.oss.wahllokalsystem.eaiservice.MicroServiceApplication; +import java.time.LocalDate; +import lombok.val; +import org.assertj.core.api.Assertions; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; + +@SpringBootTest(classes = MicroServiceApplication.class) +class WahltageRepositoryTest { + + @Autowired + WahltageRepository wahltageRepository; + + @AfterEach + void tearDown() { + wahltageRepository.deleteAll(); + } + + @Nested + class FindByTagAfterOrTagEquals { + + @Test + void dataFound() { + val equalsDateString = "2024-07-03"; + val afterDateString = "2024-08-02"; + + val wahltag1ToFind = wahltageRepository.save(new Wahltag(LocalDate.parse("2024-07-03"), "beschreibung", "1")); + val wahltag2ToFind = wahltageRepository.save(new Wahltag(LocalDate.parse("2024-08-03"), "beschreibung", "1")); + wahltageRepository.save(new Wahltag(LocalDate.parse("2024-08-02"), "beschreibung", "3")); + wahltageRepository.save(new Wahltag(LocalDate.parse("2024-07-02"), "beschreibung", "4")); + wahltageRepository.save(new Wahltag(LocalDate.parse("2024-07-04"), "beschreibung", "5")); + + val result = wahltageRepository.findByTagAfterOrTagEquals(LocalDate.parse(afterDateString), LocalDate.parse(equalsDateString)); + + val expectedResult = new Wahltag[] { wahltag1ToFind, wahltag2ToFind }; + + Assertions.assertThat(result).containsOnly(expectedResult); + } + } + +} diff --git a/wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/rest/wahldaten/WahldatenControllerIntegrationTest.java b/wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/rest/wahldaten/WahldatenControllerIntegrationTest.java index 50145fa78..aa247fb94 100644 --- a/wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/rest/wahldaten/WahldatenControllerIntegrationTest.java +++ b/wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/rest/wahldaten/WahldatenControllerIntegrationTest.java @@ -17,16 +17,27 @@ import de.muenchen.oss.wahllokalsystem.eaiservice.domain.wahldaten.WahlbezirkRepository; import de.muenchen.oss.wahllokalsystem.eaiservice.domain.wahldaten.Wahltag; import de.muenchen.oss.wahllokalsystem.eaiservice.domain.wahldaten.WahltageRepository; +import de.muenchen.oss.wahllokalsystem.eaiservice.exception.ExceptionConstants; +import de.muenchen.oss.wahllokalsystem.eaiservice.rest.wahldaten.dto.BasisdatenDTO; +import de.muenchen.oss.wahllokalsystem.eaiservice.rest.wahldaten.dto.WahlDTO; import de.muenchen.oss.wahllokalsystem.eaiservice.rest.wahldaten.dto.WahlberechtigteDTO; import de.muenchen.oss.wahllokalsystem.eaiservice.rest.wahldaten.dto.WahlbezirkArtDTO; +import de.muenchen.oss.wahllokalsystem.eaiservice.rest.wahldaten.dto.WahlbezirkDTO; +import de.muenchen.oss.wahllokalsystem.eaiservice.rest.wahldaten.dto.WahltagDTO; import de.muenchen.oss.wahllokalsystem.eaiservice.service.wahldaten.WahldatenMapper; +import de.muenchen.oss.wahllokalsystem.wls.common.exception.rest.model.WlsExceptionCategory; +import de.muenchen.oss.wahllokalsystem.wls.common.exception.rest.model.WlsExceptionDTO; +import java.nio.charset.StandardCharsets; import java.time.LocalDate; +import java.util.Set; +import java.util.UUID; import lombok.val; import org.assertj.core.api.Assertions; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.security.test.context.support.WithMockUser; @@ -38,6 +49,11 @@ @ActiveProfiles({ TestConstants.SPRING_TEST_PROFILE }) public class WahldatenControllerIntegrationTest { + private static final String EMPTY_ARRAY_JSON = "[]"; + + @Value("${service.info.oid}") + String serviceID; + @Autowired MockMvc mockMvc; @@ -91,13 +107,293 @@ void dataFound() throws Exception { } @Test - void noDataFound() { + @WithMockUser(authorities = Authorities.SERVICE_LOAD_WAHLBERECHTIGTE) + void noDataFound() throws Exception { + val request = get(WahldatenController.WAHLDATEN_REQUEST_MAPPING + "/wahlbezirke/" + UUID.randomUUID() + "/wahlberechtigte"); + + val response = mockMvc.perform(request).andExpect(status().isOk()).andReturn(); + + Assertions.assertThat(response.getResponse().getContentAsString()).isEqualTo(EMPTY_ARRAY_JSON); + } + + @Test + @WithMockUser(authorities = Authorities.SERVICE_LOAD_WAHLBERECHTIGTE) + void wlsExceptionOnValidationFailed() throws Exception { + val request = get(WahldatenController.WAHLDATEN_REQUEST_MAPPING + "/wahlbezirke/ /wahlberechtigte"); + + val response = mockMvc.perform(request).andExpect(status().isBadRequest()).andReturn(); + val responseBodyAsWlsException = objectMapper.readValue(response.getResponse().getContentAsString(StandardCharsets.UTF_8), WlsExceptionDTO.class); + + val expectedWlsExceptionDTO = new WlsExceptionDTO(WlsExceptionCategory.F, + ExceptionConstants.LOADWAHLBERECHTIGTE_SUCHKRITERIEN_UNVOLLSTAENDIG.code(), serviceID, + ExceptionConstants.LOADWAHLBERECHTIGTE_SUCHKRITERIEN_UNVOLLSTAENDIG.message()); + + Assertions.assertThat(responseBodyAsWlsException).isEqualTo(expectedWlsExceptionDTO); + } + + } + + @Nested + class LoadWahltageSinceIncluding { + + @Test + @WithMockUser(authorities = Authorities.SERVICE_LOAD_WAHLTAGE) + void dataFound() throws Exception { + val wahltageSinceAsString = "2024-07-03"; + + val wahltag1ToFind = wahltageRepository.save(new Wahltag(LocalDate.of(2024, 12, 24), "wahltag1", "1")); + val wahltag2ToFind = wahltageRepository.save(new Wahltag(LocalDate.of(2024, 10, 3), "wahltag2", "2")); + val wahltag3ToFind = wahltageRepository.save(new Wahltag(LocalDate.parse(wahltageSinceAsString), "wahltag3", "3")); + wahltageRepository.save(new Wahltag(LocalDate.of(2024, 1, 1), "wahltagNotFound1", "0")); + wahltageRepository.save(new Wahltag(LocalDate.of(2024, 7, 2), "wahltagNotFound2", "0")); + + val request = get(WahldatenController.WAHLDATEN_REQUEST_MAPPING + "/wahltage?includingSince=" + wahltageSinceAsString); + + val response = mockMvc.perform(request).andExpect(status().isOk()).andReturn(); + val responseBodyAsDTO = objectMapper.readValue(response.getResponse().getContentAsString(), WahltagDTO[].class); + + val expectedResponseBody = new WahltagDTO[] { + wahldatenMapper.toDTO(wahltag1ToFind), + wahldatenMapper.toDTO(wahltag2ToFind), + wahldatenMapper.toDTO(wahltag3ToFind) + }; + Assertions.assertThat(responseBodyAsDTO).containsOnly(expectedResponseBody); + } + + @Test + @WithMockUser(authorities = Authorities.SERVICE_LOAD_WAHLTAGE) + void noDataFound() throws Exception { + val request = get(WahldatenController.WAHLDATEN_REQUEST_MAPPING + "/wahltage?includingSince=1900-01-01"); + + val response = mockMvc.perform(request).andExpect(status().isOk()).andReturn(); + + Assertions.assertThat(response.getResponse().getContentAsString()).isEqualTo(EMPTY_ARRAY_JSON); + } + + @Test + @WithMockUser(authorities = Authorities.SERVICE_LOAD_WAHLTAGE) + void wlsExceptionOnDateQueryParameterIsMissing() throws Exception { + val request = get(WahldatenController.WAHLDATEN_REQUEST_MAPPING + "/wahltage?includingSince= "); + + val response = mockMvc.perform(request).andExpect(status().isBadRequest()).andReturn(); + val responseBodyAsWlsException = objectMapper.readValue(response.getResponse().getContentAsString(StandardCharsets.UTF_8), WlsExceptionDTO.class); + val expectedWlsExceptionDTO = new WlsExceptionDTO(WlsExceptionCategory.F, + ExceptionConstants.LOADWAHLTAGE_TAG_FEHLT.code(), serviceID, + ExceptionConstants.LOADWAHLTAGE_TAG_FEHLT.message()); + + Assertions.assertThat(responseBodyAsWlsException).isEqualTo(expectedWlsExceptionDTO); } + } + + @Nested + class LoadWahlbezirke { @Test - void wlsExceptionOnValidationFailed() { + @WithMockUser(authorities = Authorities.SERVICE_LOAD_WAHLBEZIRKE) + void dataFound() throws Exception { + val wahltagDate = "2024-07-03"; + val nummerToFind = "1"; + + val wahltag1 = wahltageRepository.save(new Wahltag(LocalDate.parse(wahltagDate), "wahltag1", "1")); + wahltageRepository.save(new Wahltag(LocalDate.parse(wahltagDate), "wahltag2", "2")); + + val wahl = wahlRepository.save(new Wahl("wahl", Wahlart.BTW, wahltag1, "nummer")); + val stimmzettelgebiet = stimmzettelgebietRepository.save(new Stimmzettelgebiet("nummer", "name", Stimmzettelgebietsart.SK, wahl)); + + val wahlbezirk1 = wahlbezirkRepository.save(new Wahlbezirk(WahlbezirkArtDTO.UWB, "wbz1", stimmzettelgebiet, 0, 0, 0)); + val wahlbezirk2 = wahlbezirkRepository.save(new Wahlbezirk(WahlbezirkArtDTO.BWB, "wbz2", stimmzettelgebiet, 0, 0, 0)); + + val request = get(WahldatenController.WAHLDATEN_REQUEST_MAPPING + "/wahlbezirk?forDate=" + wahltagDate + "&withNummer=" + nummerToFind); + + val response = mockMvc.perform(request).andExpect(status().isOk()).andReturn(); + val responseBodyAsDTO = objectMapper.readValue(response.getResponse().getContentAsString(), WahlbezirkDTO[].class); + + val expectedResponseBody = new WahlbezirkDTO[] { + wahldatenMapper.toDTO(wahlbezirk1), + wahldatenMapper.toDTO(wahlbezirk2) + }; + Assertions.assertThat(responseBodyAsDTO).containsOnly(expectedResponseBody); + } + + @Test + @WithMockUser(authorities = Authorities.SERVICE_LOAD_WAHLBEZIRKE) + void noDataFound() throws Exception { + val request = get(WahldatenController.WAHLDATEN_REQUEST_MAPPING + "/wahlbezirk?forDate=2024-07-03&withNummer=1"); + + val response = mockMvc.perform(request).andExpect(status().isOk()).andReturn(); + + Assertions.assertThat(response.getResponse().getContentAsString()).isEqualTo(EMPTY_ARRAY_JSON); + } + + @Test + @WithMockUser(authorities = Authorities.SERVICE_LOAD_WAHLBEZIRKE) + void wlsExceptionOnNummerQueryParameterIsMissing() throws Exception { + val request = get(WahldatenController.WAHLDATEN_REQUEST_MAPPING + "/wahlbezirk?forDate=2024-07-03"); + + val response = mockMvc.perform(request).andExpect(status().isBadRequest()).andReturn(); + val responseBodyAsWlsException = objectMapper.readValue(response.getResponse().getContentAsString(StandardCharsets.UTF_8), WlsExceptionDTO.class); + + val expectedWlsExceptionDTO = new WlsExceptionDTO(WlsExceptionCategory.F, + ExceptionConstants.LOADWAHLEBZIRKE_NUMMER_FEHLT.code(), serviceID, + ExceptionConstants.LOADWAHLEBZIRKE_NUMMER_FEHLT.message()); + + Assertions.assertThat(responseBodyAsWlsException).isEqualTo(expectedWlsExceptionDTO); + } + + @Test + @WithMockUser(authorities = Authorities.SERVICE_LOAD_WAHLBEZIRKE) + void wlsExceptionOnDateQueryParameterIsMissing() throws Exception { + val request = get(WahldatenController.WAHLDATEN_REQUEST_MAPPING + "/wahlbezirk?nummer=2"); + + val response = mockMvc.perform(request).andExpect(status().isBadRequest()).andReturn(); + val responseBodyAsWlsException = objectMapper.readValue(response.getResponse().getContentAsString(StandardCharsets.UTF_8), WlsExceptionDTO.class); + + val expectedWlsExceptionDTO = new WlsExceptionDTO(WlsExceptionCategory.F, + ExceptionConstants.LOADWAHLEBZIRKE_WAHLTAG_FEHLT.code(), serviceID, + ExceptionConstants.LOADWAHLEBZIRKE_WAHLTAG_FEHLT.message()); + + Assertions.assertThat(responseBodyAsWlsException).isEqualTo(expectedWlsExceptionDTO); + } + } + + @Nested + class LoadWahlen { + + @Test + @WithMockUser(authorities = Authorities.SERVICE_LOAD_WAHLEN) + void dataFound() throws Exception { + val wahltagDate = "2024-07-03"; + val nummerToFind = "1"; + + val wahltag1 = wahltageRepository.save(new Wahltag(LocalDate.parse(wahltagDate), "wahltag1", "1")); + val wahltag2 = wahltageRepository.save(new Wahltag(LocalDate.parse(wahltagDate), "wahltag2", "2")); + + val wahl1ToFind = wahlRepository.save(new Wahl("wahl1", Wahlart.BTW, wahltag1, "nummer")); + val wahl2ToFind = wahlRepository.save(new Wahl("wahl2", Wahlart.BTW, wahltag1, "nummer")); + wahlRepository.save(new Wahl("wahl", Wahlart.BTW, wahltag2, "nummer")); + + val request = get(WahldatenController.WAHLDATEN_REQUEST_MAPPING + "/wahlen?forDate=" + wahltagDate + "&withNummer=" + nummerToFind); + + val response = mockMvc.perform(request).andExpect(status().isOk()).andReturn(); + val responseBodyAsDTO = objectMapper.readValue(response.getResponse().getContentAsString(), WahlDTO[].class); + + val expectedResponseBody = new WahlDTO[] { + wahldatenMapper.toDTO(wahl1ToFind), + wahldatenMapper.toDTO(wahl2ToFind) + }; + Assertions.assertThat(responseBodyAsDTO).containsOnly(expectedResponseBody); + } + + @Test + @WithMockUser(authorities = Authorities.SERVICE_LOAD_WAHLEN) + void noDataFound() throws Exception { + val request = get(WahldatenController.WAHLDATEN_REQUEST_MAPPING + "/wahlen?forDate=2024-07-03&withNummer=1"); + + val response = mockMvc.perform(request).andExpect(status().isOk()).andReturn(); + + Assertions.assertThat(response.getResponse().getContentAsString()).isEqualTo(EMPTY_ARRAY_JSON); + } + + @Test + @WithMockUser(authorities = Authorities.SERVICE_LOAD_WAHLEN) + void wlsExceptionOnNummerQueryParameterIsMissing() throws Exception { + val request = get(WahldatenController.WAHLDATEN_REQUEST_MAPPING + "/wahlen?forDate=2024-07-03"); + + val response = mockMvc.perform(request).andExpect(status().isBadRequest()).andReturn(); + val responseBodyAsWlsException = objectMapper.readValue(response.getResponse().getContentAsString(StandardCharsets.UTF_8), WlsExceptionDTO.class); + + val expectedWlsExceptionDTO = new WlsExceptionDTO(WlsExceptionCategory.F, + ExceptionConstants.LOADWAHLEN_NUMMER_FEHLT.code(), serviceID, + ExceptionConstants.LOADWAHLEN_NUMMER_FEHLT.message()); + + Assertions.assertThat(responseBodyAsWlsException).isEqualTo(expectedWlsExceptionDTO); + } + + @Test + @WithMockUser(authorities = Authorities.SERVICE_LOAD_WAHLEN) + void wlsExceptionOnDateQueryParameterIsMissing() throws Exception { + val request = get(WahldatenController.WAHLDATEN_REQUEST_MAPPING + "/wahlen?withNummer=1"); + + val response = mockMvc.perform(request).andExpect(status().isBadRequest()).andReturn(); + val responseBodyAsWlsException = objectMapper.readValue(response.getResponse().getContentAsString(StandardCharsets.UTF_8), WlsExceptionDTO.class); + + val expectedWlsExceptionDTO = new WlsExceptionDTO(WlsExceptionCategory.F, + ExceptionConstants.LOADWAHLEN_WAHLTAG_FEHLT.code(), serviceID, + ExceptionConstants.LOADWAHLEN_WAHLTAG_FEHLT.message()); + + Assertions.assertThat(responseBodyAsWlsException).isEqualTo(expectedWlsExceptionDTO); + } + + } + + @Nested + class LoadBasisdaten { + + @Test + @WithMockUser(authorities = Authorities.SERVICE_LOAD_BASISDATEN) + void dataFound() throws Exception { + val wahltagDateToFind = "2024-07-03"; + val nummerToFind = "1"; + + val wahltag = wahltageRepository.save(new Wahltag(LocalDate.parse(wahltagDateToFind), "beschreibung wahltag", nummerToFind)); + val wahl = wahlRepository.save(new Wahl("wahl", Wahlart.BTW, wahltag, "1")); + val stimmzettelgebiet = stimmzettelgebietRepository.save(new Stimmzettelgebiet("sgz1", "sgz1", Stimmzettelgebietsart.SK, wahl)); + val wahlbezirkToFind = wahlbezirkRepository.save(new Wahlbezirk(WahlbezirkArtDTO.UWB, "nummer", stimmzettelgebiet, 10, 11, 12)); + + val request = get(WahldatenController.WAHLDATEN_REQUEST_MAPPING + "/basisdaten?forDate=" + wahltagDateToFind + "&withNummer=" + nummerToFind); + + val response = mockMvc.perform(request).andExpect(status().isOk()).andReturn(); + val responseBodyAsDTO = objectMapper.readValue(response.getResponse().getContentAsString(), BasisdatenDTO.class); + + val expectedResponseBody = new BasisdatenDTO(Set.of(wahldatenMapper.toBasisstrukturdatenDTO(wahlbezirkToFind)), + Set.of(wahldatenMapper.toDTO(wahl)), + Set.of(wahldatenMapper.toDTO(wahlbezirkToFind)), + Set.of(wahldatenMapper.toDTO(stimmzettelgebiet))); + Assertions.assertThat(responseBodyAsDTO).usingRecursiveComparison().ignoringCollectionOrder().isEqualTo(expectedResponseBody); + } + + @Test + @WithMockUser(authorities = Authorities.SERVICE_LOAD_BASISDATEN) + void noDataFound() throws Exception { + val request = get(WahldatenController.WAHLDATEN_REQUEST_MAPPING + "/basisdaten?forDate=2024-07-03&withNummer=1"); + + val response = mockMvc.perform(request).andExpect(status().isOk()).andReturn(); + val responseAsDTO = objectMapper.readValue(response.getResponse().getContentAsString(), BasisdatenDTO.class); + + val expectedResponseDTO = new BasisdatenDTO(null, null, null, null); + + Assertions.assertThat(responseAsDTO).isEqualTo(expectedResponseDTO); + } + + @Test + @WithMockUser(authorities = Authorities.SERVICE_LOAD_BASISDATEN) + void wlsExceptionOnNummerQueryParameterIsMissing() throws Exception { + val request = get(WahldatenController.WAHLDATEN_REQUEST_MAPPING + "/basisdaten?forDate=2024-07-03"); + + val response = mockMvc.perform(request).andExpect(status().isBadRequest()).andReturn(); + val responseBodyAsWlsException = objectMapper.readValue(response.getResponse().getContentAsString(StandardCharsets.UTF_8), WlsExceptionDTO.class); + + val expectedWlsExceptionDTO = new WlsExceptionDTO(WlsExceptionCategory.F, + ExceptionConstants.LOADBASISDATEN_NUMMER_FEHLT.code(), serviceID, + ExceptionConstants.LOADBASISDATEN_NUMMER_FEHLT.message()); + + Assertions.assertThat(responseBodyAsWlsException).isEqualTo(expectedWlsExceptionDTO); + } + + @Test + @WithMockUser(authorities = Authorities.SERVICE_LOAD_BASISDATEN) + void wlsExceptionOnDateQueryParameterIsMissing() throws Exception { + val request = get(WahldatenController.WAHLDATEN_REQUEST_MAPPING + "/basisdaten?withNummer=1"); + + val response = mockMvc.perform(request).andExpect(status().isBadRequest()).andReturn(); + val responseBodyAsWlsException = objectMapper.readValue(response.getResponse().getContentAsString(StandardCharsets.UTF_8), WlsExceptionDTO.class); + + val expectedWlsExceptionDTO = new WlsExceptionDTO(WlsExceptionCategory.F, + ExceptionConstants.LOADBASISDATEN_TAG_FEHLT.code(), serviceID, + ExceptionConstants.LOADBASISDATEN_TAG_FEHLT.message()); + Assertions.assertThat(responseBodyAsWlsException).isEqualTo(expectedWlsExceptionDTO); } } diff --git a/wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/rest/wahldaten/WahldatenControllerTest.java b/wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/rest/wahldaten/WahldatenControllerTest.java index 49c4409b8..9fd755ff5 100644 --- a/wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/rest/wahldaten/WahldatenControllerTest.java +++ b/wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/rest/wahldaten/WahldatenControllerTest.java @@ -103,4 +103,4 @@ void serviceIsCalled() { Assertions.assertThat(unitUnderTest.loadBasisdaten(forDate, nummer)).isSameAs(mockedServicResponse); } } -} \ No newline at end of file +} diff --git a/wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/IDConverterTest.java b/wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/IDConverterTest.java new file mode 100644 index 000000000..e0768f9c8 --- /dev/null +++ b/wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/IDConverterTest.java @@ -0,0 +1,47 @@ +package de.muenchen.oss.wahllokalsystem.eaiservice.service; + +import de.muenchen.oss.wahllokalsystem.eaiservice.rest.common.exception.ExceptionConstants; +import de.muenchen.oss.wahllokalsystem.wls.common.exception.FachlicheWlsException; +import de.muenchen.oss.wahllokalsystem.wls.common.exception.util.ExceptionFactory; +import lombok.val; +import org.assertj.core.api.Assertions; +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.Mockito; +import org.mockito.junit.jupiter.MockitoExtension; + +@ExtendWith(MockitoExtension.class) +class IDConverterTest { + + @Mock + ExceptionFactory exceptionFactory; + + @InjectMocks + IDConverter unitUnderTest; + + @Nested + class ConvertIDToUUIDOrThrow { + + @Test + void stringIsConverted() { + val idToConvert = "7db3ebc6-d2f9-4b7d-a703-6d1677f3f305"; + + val result = unitUnderTest.convertIDToUUIDOrThrow(idToConvert); + + Assertions.assertThat(result.toString()).isEqualTo(idToConvert); + } + + @Test + void wlsExceptionWhenNotConvertable() { + val mockedWlsException = FachlicheWlsException.withCode("").buildWithMessage(""); + + Mockito.when(exceptionFactory.createFachlicheWlsException(ExceptionConstants.ID_NICHT_KONVERTIERBAR)).thenReturn(mockedWlsException); + + Assertions.assertThatException().isThrownBy(() -> unitUnderTest.convertIDToUUIDOrThrow("")).isSameAs(mockedWlsException); + } + } + +} diff --git a/wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahldaten/WahldatenMapperTest.java b/wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahldaten/WahldatenMapperTest.java new file mode 100644 index 000000000..f156c6259 --- /dev/null +++ b/wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahldaten/WahldatenMapperTest.java @@ -0,0 +1,152 @@ +package de.muenchen.oss.wahllokalsystem.eaiservice.service.wahldaten; + +import de.muenchen.oss.wahllokalsystem.eaiservice.domain.wahldaten.Stimmzettelgebiet; +import de.muenchen.oss.wahllokalsystem.eaiservice.domain.wahldaten.Stimmzettelgebietsart; +import de.muenchen.oss.wahllokalsystem.eaiservice.domain.wahldaten.Wahl; +import de.muenchen.oss.wahllokalsystem.eaiservice.domain.wahldaten.Wahlart; +import de.muenchen.oss.wahllokalsystem.eaiservice.domain.wahldaten.Wahlbezirk; +import de.muenchen.oss.wahllokalsystem.eaiservice.domain.wahldaten.Wahltag; +import de.muenchen.oss.wahllokalsystem.eaiservice.rest.common.dto.WahlartDTO; +import de.muenchen.oss.wahllokalsystem.eaiservice.rest.wahldaten.dto.BasisstrukturdatenDTO; +import de.muenchen.oss.wahllokalsystem.eaiservice.rest.wahldaten.dto.StimmzettelgebietDTO; +import de.muenchen.oss.wahllokalsystem.eaiservice.rest.wahldaten.dto.StimmzettelgebietsartDTO; +import de.muenchen.oss.wahllokalsystem.eaiservice.rest.wahldaten.dto.WahlDTO; +import de.muenchen.oss.wahllokalsystem.eaiservice.rest.wahldaten.dto.WahlberechtigteDTO; +import de.muenchen.oss.wahllokalsystem.eaiservice.rest.wahldaten.dto.WahlbezirkArtDTO; +import de.muenchen.oss.wahllokalsystem.eaiservice.rest.wahldaten.dto.WahlbezirkDTO; +import de.muenchen.oss.wahllokalsystem.eaiservice.rest.wahldaten.dto.WahltagDTO; +import java.time.LocalDate; +import java.util.UUID; +import lombok.val; +import org.assertj.core.api.Assertions; +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; +import org.mapstruct.factory.Mappers; + +class WahldatenMapperTest { + + private final WahldatenMapper unitUnderTest = Mappers.getMapper(WahldatenMapper.class); + + @Nested + class ToDTO { + + @Test + void ofWahltag() { + val tag = LocalDate.now(); + val beschreibung = "beschreibung"; + val nummer = "nummer"; + val id = UUID.randomUUID(); + + val entityToMap = new Wahltag(tag, beschreibung, nummer); + entityToMap.setId(id); + + val result = unitUnderTest.toDTO(entityToMap); + + val expectedResult = new WahltagDTO(id.toString(), tag, beschreibung, nummer); + Assertions.assertThat(result).isEqualTo(expectedResult); + } + + @Test + void ofWahl() { + val wahlID = UUID.randomUUID(); + val wahltag = LocalDate.now(); + val name = "name"; + val nummer = "nummer"; + + val entityToMap = new Wahl(name, Wahlart.BTW, new Wahltag(wahltag, null, null), nummer); + entityToMap.setId(wahlID); + + val result = unitUnderTest.toDTO(entityToMap); + + val expectedResult = new WahlDTO(wahlID.toString(), name, WahlartDTO.BTW, wahltag, nummer); + Assertions.assertThat(result).isEqualTo(expectedResult); + } + + @Test + void ofWahlbezirk() { + val wahlbezirkID = UUID.randomUUID(); + val wahlID = UUID.randomUUID(); + val wahltag = LocalDate.now(); + val wahlbezirkNummer = "wahlbezirkNummer"; + val wahltagnummer = "wahltagnummer"; + + val wahlForWahlbezirk = new Wahl(null, null, new Wahltag(wahltag, null, wahltagnummer), null); + wahlForWahlbezirk.setId(wahlID); + val entityToMap = new Wahlbezirk(WahlbezirkArtDTO.UWB, wahlbezirkNummer, new Stimmzettelgebiet(null, null, null, wahlForWahlbezirk), 0, 0, 0); + entityToMap.setId(wahlbezirkID); + + val result = unitUnderTest.toDTO(entityToMap); + + val expectedResult = new WahlbezirkDTO(wahlbezirkID.toString(), WahlbezirkArtDTO.UWB, wahlbezirkNummer, wahltag, wahltagnummer, wahlID.toString()); + Assertions.assertThat(result).isEqualTo(expectedResult); + } + + @Test + void ofStimmzettelgebiet() { + val szgID = UUID.randomUUID(); + val szgNummer = "szgNummer"; + val szgName = "szgName"; + val wahltag = LocalDate.now(); + + val entityToMap = new Stimmzettelgebiet(szgNummer, szgName, Stimmzettelgebietsart.SK, new Wahl(null, null, new Wahltag(wahltag, null, null), null)); + entityToMap.setId(szgID); + + val result = unitUnderTest.toDTO(entityToMap); + + val expectedResult = new StimmzettelgebietDTO(szgID.toString(), szgNummer, szgName, wahltag, StimmzettelgebietsartDTO.SK); + Assertions.assertThat(result).isEqualTo(expectedResult); + } + } + + @Nested + class ToWahlberechtigteDTO { + + @Test + void isMapped() { + val wahlID = UUID.randomUUID(); + val wahlbezirkID = UUID.randomUUID(); + val a1 = 10; + val a2 = 20; + val a3 = 30; + + val wahlOfWahlbezirk = new Wahl(); + wahlOfWahlbezirk.setId(wahlID); + val entityToMap = new Wahlbezirk(null, null, new Stimmzettelgebiet(null, null, null, wahlOfWahlbezirk), a1, a2, a3); + entityToMap.setId(wahlbezirkID); + + val result = unitUnderTest.toWahlberechtigteDTO(entityToMap); + + val expectedResult = new WahlberechtigteDTO(wahlID.toString(), wahlbezirkID.toString(), a1, a2, a3); + Assertions.assertThat(result).isEqualTo(expectedResult); + } + } + + @Nested + class ToBasisstrukturdatenDTO { + + @Test + void isMapped() { + val wahlID = UUID.randomUUID(); + val sgzID = UUID.randomUUID(); + val wbzID = UUID.randomUUID(); + val wahltag = LocalDate.now(); + + val wahl = new Wahl(); + wahl.setId(wahlID); + wahl.setWahltag(new Wahltag(wahltag, null, null)); + val stimmzettelgebiet = new Stimmzettelgebiet(); + stimmzettelgebiet.setId(sgzID); + stimmzettelgebiet.setWahl(wahl); + val entityToMap = new Wahlbezirk(); + entityToMap.setStimmzettelgebiet(stimmzettelgebiet); + entityToMap.setId(wbzID); + + val result = unitUnderTest.toBasisstrukturdatenDTO(entityToMap); + + val expectedResult = new BasisstrukturdatenDTO(wahlID.toString(), sgzID.toString(), wbzID.toString(), wahltag); + Assertions.assertThat(result).isEqualTo(expectedResult); + } + + } + +} diff --git a/wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahldaten/WahldatenServiceSecurityTest.java b/wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahldaten/WahldatenServiceSecurityTest.java new file mode 100644 index 000000000..1726c5574 --- /dev/null +++ b/wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahldaten/WahldatenServiceSecurityTest.java @@ -0,0 +1,121 @@ +package de.muenchen.oss.wahllokalsystem.eaiservice.service.wahldaten; + +import de.muenchen.oss.wahllokalsystem.eaiservice.Authorities; +import de.muenchen.oss.wahllokalsystem.eaiservice.MicroServiceApplication; +import de.muenchen.oss.wahllokalsystem.eaiservice.TestConstants; +import de.muenchen.oss.wahllokalsystem.wls.common.testing.SecurityUtils; +import java.time.LocalDate; +import java.util.UUID; +import org.assertj.core.api.Assertions; +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.security.access.AccessDeniedException; +import org.springframework.test.context.ActiveProfiles; + +@SpringBootTest(classes = MicroServiceApplication.class) +@ActiveProfiles({ TestConstants.SPRING_TEST_PROFILE }) +public class WahldatenServiceSecurityTest { + + @Autowired + WahldatenService wahldatenService; + + @Nested + class GetWahltage { + + @Test + void accessGranted() { + SecurityUtils.runWith(Authorities.SERVICE_LOAD_WAHLTAGE); + + Assertions.assertThatNoException().isThrownBy(() -> wahldatenService.getWahltage(LocalDate.now())); + } + + @Test + void authorityIsMissing() { + SecurityUtils.runWith(); + + Assertions.assertThatException().isThrownBy(() -> wahldatenService.getWahltage(LocalDate.now())).isInstanceOf(AccessDeniedException.class); + } + + } + + @Nested + class GetWahlen { + + @Test + void accessGranted() { + SecurityUtils.runWith(Authorities.SERVICE_LOAD_WAHLEN); + + Assertions.assertThatNoException().isThrownBy(() -> wahldatenService.getWahlen(LocalDate.now(), "nummer")); + } + + @Test + void authorityIsMissing() { + SecurityUtils.runWith(); + + Assertions.assertThatException().isThrownBy(() -> wahldatenService.getWahlen(LocalDate.now(), "nummer")).isInstanceOf(AccessDeniedException.class); + } + + } + + @Nested + class GetWahlbezirke { + + @Test + void accessGranted() { + SecurityUtils.runWith(Authorities.SERVICE_LOAD_WAHLBEZIRKE); + + Assertions.assertThatNoException().isThrownBy(() -> wahldatenService.getWahlbezirke(LocalDate.now(), "nummer")); + } + + @Test + void authorityIsMissing() { + SecurityUtils.runWith(); + + Assertions.assertThatException().isThrownBy(() -> wahldatenService.getWahlbezirke(LocalDate.now(), "nummer")) + .isInstanceOf(AccessDeniedException.class); + } + + } + + @Nested + class GetWahlberechtigte { + + @Test + void accessGranted() { + SecurityUtils.runWith(Authorities.SERVICE_LOAD_WAHLBERECHTIGTE); + + Assertions.assertThatNoException().isThrownBy(() -> wahldatenService.getWahlberechtigte(UUID.randomUUID().toString())); + } + + @Test + void authorityIsMissing() { + SecurityUtils.runWith(); + + Assertions.assertThatException().isThrownBy(() -> wahldatenService.getWahlberechtigte(UUID.randomUUID().toString())) + .isInstanceOf(AccessDeniedException.class); + } + + } + + @Nested + class GetBasisdaten { + + @Test + void accessGranted() { + SecurityUtils.runWith(Authorities.SERVICE_LOAD_BASISDATEN); + + Assertions.assertThatNoException().isThrownBy(() -> wahldatenService.getBasisdaten(LocalDate.now(), "nummer")); + } + + @Test + void authorityIsMissing() { + SecurityUtils.runWith(); + + Assertions.assertThatException().isThrownBy(() -> wahldatenService.getBasisdaten(LocalDate.now(), "nummer")) + .isInstanceOf(AccessDeniedException.class); + } + + } +} diff --git a/wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahldaten/WahldatenServiceTest.java b/wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahldaten/WahldatenServiceTest.java new file mode 100644 index 000000000..7126198ba --- /dev/null +++ b/wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahldaten/WahldatenServiceTest.java @@ -0,0 +1,307 @@ +package de.muenchen.oss.wahllokalsystem.eaiservice.service.wahldaten; + +import static org.mockito.ArgumentMatchers.eq; + +import de.muenchen.oss.wahllokalsystem.eaiservice.domain.wahldaten.Stimmzettelgebiet; +import de.muenchen.oss.wahllokalsystem.eaiservice.domain.wahldaten.StimmzettelgebietRepository; +import de.muenchen.oss.wahllokalsystem.eaiservice.domain.wahldaten.Wahl; +import de.muenchen.oss.wahllokalsystem.eaiservice.domain.wahldaten.WahlRepository; +import de.muenchen.oss.wahllokalsystem.eaiservice.domain.wahldaten.Wahlbezirk; +import de.muenchen.oss.wahllokalsystem.eaiservice.domain.wahldaten.WahlbezirkRepository; +import de.muenchen.oss.wahllokalsystem.eaiservice.domain.wahldaten.Wahltag; +import de.muenchen.oss.wahllokalsystem.eaiservice.domain.wahldaten.WahltageRepository; +import de.muenchen.oss.wahllokalsystem.eaiservice.rest.wahldaten.dto.BasisdatenDTO; +import de.muenchen.oss.wahllokalsystem.eaiservice.rest.wahldaten.dto.BasisstrukturdatenDTO; +import de.muenchen.oss.wahllokalsystem.eaiservice.rest.wahldaten.dto.StimmzettelgebietDTO; +import de.muenchen.oss.wahllokalsystem.eaiservice.rest.wahldaten.dto.WahlDTO; +import de.muenchen.oss.wahllokalsystem.eaiservice.rest.wahldaten.dto.WahlberechtigteDTO; +import de.muenchen.oss.wahllokalsystem.eaiservice.rest.wahldaten.dto.WahlbezirkDTO; +import de.muenchen.oss.wahllokalsystem.eaiservice.rest.wahldaten.dto.WahltagDTO; +import de.muenchen.oss.wahllokalsystem.eaiservice.service.IDConverter; +import java.time.LocalDate; +import java.util.Collections; +import java.util.List; +import java.util.Set; +import java.util.UUID; +import lombok.val; +import org.assertj.core.api.Assertions; +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.Mockito; +import org.mockito.junit.jupiter.MockitoExtension; + +@ExtendWith(MockitoExtension.class) +class WahldatenServiceTest { + + @Mock + WahldatenMapper wahldatenMapper; + + @Mock + WahldatenValidator wahldatenValidator; + + @Mock + IDConverter idConverter; + + @Mock + WahltageRepository wahltageRepository; + + @Mock + WahlRepository wahlRepository; + + @Mock + WahlbezirkRepository wahlbezirkRepository; + + @Mock + StimmzettelgebietRepository stimmzettelgebietRepository; + + @InjectMocks + WahldatenService unitUnderTest; + + @Nested + class GetWahltage { + + @Test + void dataFound() { + val dateSince = LocalDate.now(); + + val mockedRepoEntity = new Wahltag(); + val mockedMappedEntity = WahltagDTO.builder().build(); + + Mockito.when(wahltageRepository.findByTagAfterOrTagEquals(eq(dateSince), eq(dateSince))).thenReturn(List.of(mockedRepoEntity)); + Mockito.when(wahldatenMapper.toDTO(mockedRepoEntity)).thenReturn(mockedMappedEntity); + + val result = unitUnderTest.getWahltage(dateSince); + + Assertions.assertThat(result).isEqualTo(Set.of(mockedMappedEntity)); + } + + @Test + void noDataFound() { + val dateSince = LocalDate.now(); + + Mockito.when(wahltageRepository.findByTagAfterOrTagEquals(eq(dateSince), eq(dateSince))).thenReturn(Collections.emptyList()); + + val result = unitUnderTest.getWahltage(dateSince); + + Assertions.assertThat(result).isEmpty(); + } + + @Test + void validationFailed() { + val dateSince = LocalDate.now(); + + val mockedValidationException = new RuntimeException("validation failed"); + + Mockito.doThrow(mockedValidationException).when(wahldatenValidator).validGetWahltageParameterOrThrow(dateSince); + + Assertions.assertThatException().isThrownBy(() -> unitUnderTest.getWahltage(dateSince)).isSameAs(mockedValidationException); + } + } + + @Nested + class GetWahlen { + + @Test + void dataFound() { + val wahltag = LocalDate.now(); + val nummer = "nummer"; + + val mockedRepoEntity = new Wahl(); + val mockedMappedEntity = WahlDTO.builder().build(); + + Mockito.when(wahlRepository.findByWahltagTagAndWahltagNummer(eq(wahltag), eq(nummer))).thenReturn(List.of(mockedRepoEntity)); + Mockito.when(wahldatenMapper.toDTO(mockedRepoEntity)).thenReturn(mockedMappedEntity); + + val result = unitUnderTest.getWahlen(wahltag, nummer); + + Assertions.assertThat(result).isEqualTo(Set.of(mockedMappedEntity)); + } + + @Test + void noDataFound() { + val wahltag = LocalDate.now(); + val nummer = "nummer"; + + Mockito.when(wahlRepository.findByWahltagTagAndWahltagNummer(eq(wahltag), eq(nummer))).thenReturn(Collections.emptyList()); + + val result = unitUnderTest.getWahlen(wahltag, nummer); + + Assertions.assertThat(result).isEmpty(); + } + + @Test + void validationFailed() { + val wahltag = LocalDate.now(); + val nummer = "nummer"; + + val mockedValidationException = new RuntimeException("validation failed"); + + Mockito.doThrow(mockedValidationException).when(wahldatenValidator).validGetWahlenParameterOrThrow(wahltag, nummer); + + Assertions.assertThatException().isThrownBy(() -> unitUnderTest.getWahlen(wahltag, nummer)).isSameAs(mockedValidationException); + } + + } + + @Nested + class GetWahlbezirke { + + @Test + void dataFound() { + val wahltag = LocalDate.now(); + val nummer = "nummer"; + + val mockedRepoEntity = new Wahlbezirk(); + val mockedMappedEntity = WahlbezirkDTO.builder().build(); + + Mockito.when(wahlbezirkRepository.findWahlbezirkeWithStimmzettelgebietAndWahlAndWahltagById(eq(wahltag), eq(nummer))) + .thenReturn(List.of(mockedRepoEntity)); + Mockito.when(wahldatenMapper.toDTO(mockedRepoEntity)).thenReturn(mockedMappedEntity); + + val result = unitUnderTest.getWahlbezirke(wahltag, nummer); + + Assertions.assertThat(result).isEqualTo(Set.of(mockedMappedEntity)); + } + + @Test + void noDataFound() { + val wahltag = LocalDate.now(); + val nummer = "nummer"; + + Mockito.when(wahlbezirkRepository.findWahlbezirkeWithStimmzettelgebietAndWahlAndWahltagById(eq(wahltag), eq(nummer))) + .thenReturn(Collections.emptyList()); + + val result = unitUnderTest.getWahlbezirke(wahltag, nummer); + + Assertions.assertThat(result).isEmpty(); + } + + @Test + void validationFailed() { + val wahltag = LocalDate.now(); + val nummer = "nummer"; + + val mockedValidationException = new RuntimeException("validation failed"); + + Mockito.doThrow(mockedValidationException).when(wahldatenValidator).validGetWahlbezirkeParameterOrThrow(wahltag, nummer); + + Assertions.assertThatException().isThrownBy(() -> unitUnderTest.getWahlbezirke(wahltag, nummer)).isSameAs(mockedValidationException); + } + + } + + @Nested + class GetWahlberechtigte { + + @Test + void dataFound() { + val wahlbezirkID = "wahlbezirkID"; + + val mockedWahlbezirkAsUUID = UUID.randomUUID(); + val mockedRepoEntity = new Wahlbezirk(); + val mockedMappedEntityAsWahlberechtigte = WahlberechtigteDTO.builder().build(); + + Mockito.when(idConverter.convertIDToUUIDOrThrow(wahlbezirkID)).thenReturn(mockedWahlbezirkAsUUID); + Mockito.when(wahlbezirkRepository.findWahlbezirkeWithStimmzettelgebietAndWahlAndWahltagById(mockedWahlbezirkAsUUID)) + .thenReturn(List.of(mockedRepoEntity)); + Mockito.when(wahldatenMapper.toWahlberechtigteDTO(mockedRepoEntity)).thenReturn(mockedMappedEntityAsWahlberechtigte); + + val result = unitUnderTest.getWahlberechtigte(wahlbezirkID); + + Assertions.assertThat(result).isEqualTo(List.of(mockedMappedEntityAsWahlberechtigte)); + } + + @Test + void noDataFound() { + val wahlbezirkID = "wahlbezirkID"; + + val mockedWahlbezirkAsUUID = UUID.randomUUID(); + + Mockito.when(idConverter.convertIDToUUIDOrThrow(wahlbezirkID)).thenReturn(mockedWahlbezirkAsUUID); + Mockito.when(wahlbezirkRepository.findWahlbezirkeWithStimmzettelgebietAndWahlAndWahltagById(mockedWahlbezirkAsUUID)) + .thenReturn(Collections.emptyList()); + + val result = unitUnderTest.getWahlberechtigte(wahlbezirkID); + + Assertions.assertThat(result).isEmpty(); + } + + @Test + void validationFailed() { + val wahlbezirkID = "wahlbezirkID"; + + val mockedValidationException = new RuntimeException("validation failed"); + + Mockito.doThrow(mockedValidationException).when(wahldatenValidator).validGetWahlberechtigteParameterOrThrow(wahlbezirkID); + + Assertions.assertThatException().isThrownBy(() -> unitUnderTest.getWahlberechtigte(wahlbezirkID)).isSameAs(mockedValidationException); + } + + } + + @Nested + class GetBasisdaten { + + @Test + void dataFound() { + val wahltag = LocalDate.now(); + val nummer = "nummer"; + + val mockedRepoWahlbezirk = new Wahlbezirk(); + val mockedRepoWahlbezirkMappedToDTO = WahlbezirkDTO.builder().build(); + val mockedRepoWahlbezirkAsStrukturdatemDTO = BasisstrukturdatenDTO.builder().build(); + val mockedRepoWahl = new Wahl(); + val mockedRepoWahlMappedToDTO = WahlDTO.builder().build(); + val mockedRepoStimmzettelgebiet = new Stimmzettelgebiet(); + val mockedRepoStimmzettelgebietMappedToDTO = StimmzettelgebietDTO.builder().build(); + + Mockito.when(wahlbezirkRepository.findWahlbezirkeWithStimmzettelgebietAndWahlAndWahltagById(eq(wahltag), eq(nummer))) + .thenReturn(List.of(mockedRepoWahlbezirk)); + Mockito.when(wahlRepository.findByWahltagTagAndWahltagNummer(eq(wahltag), eq(nummer))).thenReturn(List.of(mockedRepoWahl)); + Mockito.when(stimmzettelgebietRepository.findByWahlWahltagTagAndWahlWahltagNummer(eq(wahltag), eq(nummer))) + .thenReturn(List.of(mockedRepoStimmzettelgebiet)); + Mockito.when(wahldatenMapper.toDTO(mockedRepoWahl)).thenReturn(mockedRepoWahlMappedToDTO); + Mockito.when(wahldatenMapper.toDTO(mockedRepoWahlbezirk)).thenReturn(mockedRepoWahlbezirkMappedToDTO); + Mockito.when(wahldatenMapper.toDTO(mockedRepoStimmzettelgebiet)).thenReturn(mockedRepoStimmzettelgebietMappedToDTO); + Mockito.when(wahldatenMapper.toBasisstrukturdatenDTO(mockedRepoWahlbezirk)).thenReturn(mockedRepoWahlbezirkAsStrukturdatemDTO); + + val result = unitUnderTest.getBasisdaten(wahltag, nummer); + + Assertions.assertThat(result) + .isEqualTo(new BasisdatenDTO(Set.of(mockedRepoWahlbezirkAsStrukturdatemDTO), Set.of(mockedRepoWahlMappedToDTO), + Set.of(mockedRepoWahlbezirkMappedToDTO), Set.of(mockedRepoStimmzettelgebietMappedToDTO))); + } + + @Test + void noDataFound() { + val wahltag = LocalDate.now(); + val nummer = "nummer"; + + Mockito.when(wahlbezirkRepository.findWahlbezirkeWithStimmzettelgebietAndWahlAndWahltagById(eq(wahltag), eq(nummer))) + .thenReturn(Collections.emptyList()); + Mockito.when(wahlRepository.findByWahltagTagAndWahltagNummer(eq(wahltag), eq(nummer))).thenReturn(Collections.emptyList()); + Mockito.when(stimmzettelgebietRepository.findByWahlWahltagTagAndWahlWahltagNummer(eq(wahltag), eq(nummer))).thenReturn(Collections.emptyList()); + + val result = unitUnderTest.getBasisdaten(wahltag, nummer); + + Assertions.assertThat(result) + .isEqualTo(new BasisdatenDTO(Collections.emptySet(), Collections.emptySet(), Collections.emptySet(), Collections.emptySet())); + } + + @Test + void validationFailed() { + val wahltag = LocalDate.now(); + val nummer = "nummer"; + + val mockedValidationException = new RuntimeException("validation failed"); + + Mockito.doThrow(mockedValidationException).when(wahldatenValidator).validGetBasisdatenParameterOrThrow(wahltag, nummer); + + Assertions.assertThatException().isThrownBy(() -> unitUnderTest.getBasisdaten(wahltag, nummer)).isSameAs(mockedValidationException); + } + } + +} diff --git a/wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahldaten/WahldatenValidatorTest.java b/wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahldaten/WahldatenValidatorTest.java new file mode 100644 index 000000000..b05fab1b4 --- /dev/null +++ b/wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahldaten/WahldatenValidatorTest.java @@ -0,0 +1,168 @@ +package de.muenchen.oss.wahllokalsystem.eaiservice.service.wahldaten; + +import de.muenchen.oss.wahllokalsystem.eaiservice.exception.ExceptionConstants; +import de.muenchen.oss.wahllokalsystem.wls.common.exception.FachlicheWlsException; +import de.muenchen.oss.wahllokalsystem.wls.common.exception.util.ExceptionFactory; +import java.time.LocalDate; +import lombok.val; +import org.assertj.core.api.Assertions; +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.Mockito; +import org.mockito.junit.jupiter.MockitoExtension; + +@ExtendWith(MockitoExtension.class) +class WahldatenValidatorTest { + + @Mock + ExceptionFactory exceptionFactory; + + @InjectMocks + WahldatenValidator unitUnderTest; + + @Nested + class ValidGetWahltageParameterOrThrow { + + @Test + void noExceptionWhenWahltagIsValid() { + Assertions.assertThatNoException().isThrownBy(() -> unitUnderTest.validGetWahltageParameterOrThrow(LocalDate.now())); + } + + @Test + void exceptionWhenWahltagIsNull() { + val mockedWlsException = FachlicheWlsException.withCode("").buildWithMessage(""); + + Mockito.when(exceptionFactory.createFachlicheWlsException(ExceptionConstants.LOADWAHLTAGE_TAG_FEHLT)).thenReturn(mockedWlsException); + + Assertions.assertThatThrownBy(() -> unitUnderTest.validGetWahltageParameterOrThrow(null)).isSameAs(mockedWlsException); + } + + } + + @Nested + class ValidGetWahlenParameterOrThrow { + + @Test + void noExceptionWhenGetWahlenParameterAreValid() { + Assertions.assertThatNoException().isThrownBy(() -> unitUnderTest.validGetWahlenParameterOrThrow(LocalDate.now(), "")); + } + + @Test + void exceptionWhenWahltagIsNull() { + val mockedWlsException = FachlicheWlsException.withCode("").buildWithMessage(""); + + Mockito.when(exceptionFactory.createFachlicheWlsException(ExceptionConstants.LOADWAHLEN_WAHLTAG_FEHLT)).thenReturn(mockedWlsException); + + Assertions.assertThatException().isThrownBy(() -> unitUnderTest.validGetWahlenParameterOrThrow(null, "")).isSameAs(mockedWlsException); + } + + @Test + void exceptionWhenNummerIsNull() { + val mockedWlsException = FachlicheWlsException.withCode("").buildWithMessage(""); + + Mockito.when(exceptionFactory.createFachlicheWlsException(ExceptionConstants.LOADWAHLEN_NUMMER_FEHLT)).thenReturn(mockedWlsException); + + Assertions.assertThatException().isThrownBy(() -> unitUnderTest.validGetWahlenParameterOrThrow(LocalDate.now(), null)).isSameAs(mockedWlsException); + } + } + + @Nested + class ValidGetWahlbezirkeParameterOrThrow { + + @Test + void noExceptionWhenGetWahlbezirkeParameterAreValid() { + Assertions.assertThatNoException().isThrownBy(() -> unitUnderTest.validGetWahlbezirkeParameterOrThrow(LocalDate.now(), "")); + } + + @Test + void exceptionWhenWahltagIsNull() { + val mockedWlsException = FachlicheWlsException.withCode("").buildWithMessage(""); + + Mockito.when(exceptionFactory.createFachlicheWlsException(ExceptionConstants.LOADWAHLEBZIRKE_WAHLTAG_FEHLT)).thenReturn(mockedWlsException); + + Assertions.assertThatException().isThrownBy(() -> unitUnderTest.validGetWahlbezirkeParameterOrThrow(null, "")).isSameAs(mockedWlsException); + } + + @Test + void exceptionWhenNummerIsNull() { + val mockedWlsException = FachlicheWlsException.withCode("").buildWithMessage(""); + + Mockito.when(exceptionFactory.createFachlicheWlsException(ExceptionConstants.LOADWAHLEBZIRKE_NUMMER_FEHLT)).thenReturn(mockedWlsException); + + Assertions.assertThatException().isThrownBy(() -> unitUnderTest.validGetWahlbezirkeParameterOrThrow(LocalDate.now(), null)) + .isSameAs(mockedWlsException); + } + + } + + @Nested + class ValidGetWahlberechtigteParameterOrThrow { + + @Test + void noExceptionWhenGetWahlberechtigteParameterAreValid() { + Assertions.assertThatNoException().isThrownBy(() -> unitUnderTest.validGetWahlberechtigteParameterOrThrow("wahlbezirkID")); + } + + @Test + void exceptionWhenWahlbezirkIDIsNull() { + val mockedWlsException = FachlicheWlsException.withCode("").buildWithMessage(""); + + Mockito.when(exceptionFactory.createFachlicheWlsException(ExceptionConstants.LOADWAHLBERECHTIGTE_SUCHKRITERIEN_UNVOLLSTAENDIG)) + .thenReturn(mockedWlsException); + + Assertions.assertThatException().isThrownBy(() -> unitUnderTest.validGetWahlberechtigteParameterOrThrow(null)).isSameAs(mockedWlsException); + } + + @Test + void exceptionWhenWahlbezirkIDIsEmptyString() { + val mockedWlsException = FachlicheWlsException.withCode("").buildWithMessage(""); + + Mockito.when(exceptionFactory.createFachlicheWlsException(ExceptionConstants.LOADWAHLBERECHTIGTE_SUCHKRITERIEN_UNVOLLSTAENDIG)) + .thenReturn(mockedWlsException); + + Assertions.assertThatException().isThrownBy(() -> unitUnderTest.validGetWahlberechtigteParameterOrThrow("")).isSameAs(mockedWlsException); + } + + @Test + void exceptionWhenWahlbezirkIDIsBlank() { + val mockedWlsException = FachlicheWlsException.withCode("").buildWithMessage(""); + + Mockito.when(exceptionFactory.createFachlicheWlsException(ExceptionConstants.LOADWAHLBERECHTIGTE_SUCHKRITERIEN_UNVOLLSTAENDIG)) + .thenReturn(mockedWlsException); + + Assertions.assertThatException().isThrownBy(() -> unitUnderTest.validGetWahlberechtigteParameterOrThrow(" ")).isSameAs(mockedWlsException); + } + } + + @Nested + class ValidGetBasisdatenParameterOrThrow { + + @Test + void noExceptinWhenParametersAreValid() { + Assertions.assertThatNoException().isThrownBy(() -> unitUnderTest.validGetBasisdatenParameterOrThrow(LocalDate.now(), "nummer")); + } + + @Test + void exceptionWhenWahltagIsNull() { + val mockedWlsException = FachlicheWlsException.withCode("").buildWithMessage(""); + + Mockito.when(exceptionFactory.createFachlicheWlsException(ExceptionConstants.LOADBASISDATEN_TAG_FEHLT)).thenReturn(mockedWlsException); + + Assertions.assertThatException().isThrownBy(() -> unitUnderTest.validGetBasisdatenParameterOrThrow(null, "nummer")).isSameAs(mockedWlsException); + } + + @Test + void exceptionWhenNummerIsNull() { + val mockedWlsException = FachlicheWlsException.withCode("").buildWithMessage(""); + + Mockito.when(exceptionFactory.createFachlicheWlsException(ExceptionConstants.LOADBASISDATEN_NUMMER_FEHLT)).thenReturn(mockedWlsException); + + Assertions.assertThatException().isThrownBy(() -> unitUnderTest.validGetBasisdatenParameterOrThrow(LocalDate.now(), null)) + .isSameAs(mockedWlsException); + } + } + +} From cd803019142ef70c54e0022a8bb37a23028d90ef Mon Sep 17 00:00:00 2001 From: MrSebastian <13592751+MrSebastian@users.noreply.github.com> Date: Wed, 3 Jul 2024 20:24:08 +0200 Subject: [PATCH 31/58] fix wahltage search --- .../eaiservice/domain/wahldaten/WahlRepository.java | 2 +- .../eaiservice/service/wahldaten/WahldatenService.java | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/WahlRepository.java b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/WahlRepository.java index 8173cba13..230e6bb47 100644 --- a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/WahlRepository.java +++ b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/WahlRepository.java @@ -7,5 +7,5 @@ public interface WahlRepository extends CrudRepository { - List findByWahltagTagAndNummer(LocalDate wahltag, String nummer); + List findByWahltagTagAndWahltagNummer(LocalDate wahltag, String nummer); } diff --git a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahldaten/WahldatenService.java b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahldaten/WahldatenService.java index 7275f79ba..36a4cfe8a 100644 --- a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahldaten/WahldatenService.java +++ b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahldaten/WahldatenService.java @@ -52,7 +52,7 @@ public Set getWahltage(LocalDate wahltageIncludingSince) { public Set getWahlen(final LocalDate wahltag, final String nummer) { wahldatenValidator.validGetWahlenParameterOrThrow(wahltag, nummer); - return wahlRepository.findByWahltagTagAndNummer(wahltag, nummer).stream().map(wahldatenMapper::toDTO).collect(Collectors.toSet()); + return wahlRepository.findByWahltagTagAndWahltagNummer(wahltag, nummer).stream().map(wahldatenMapper::toDTO).collect(Collectors.toSet()); } @PreAuthorize("hasAuthority('aoueai_BUSINESSACTION_LoadWahlbezirke')") @@ -81,8 +81,9 @@ public BasisdatenDTO getBasisdaten(final LocalDate wahltag, final String nummer) val basisstrukturdaten = wahlbezirkeWithParentEntities.stream().map(wahldatenMapper::toBasisstrukturdatenDTO).collect(Collectors.toSet()); val wahlen = getWahlen(wahltag, nummer); val wahlbezirke = wahlbezirkeWithParentEntities.stream().map(wahldatenMapper::toDTO).collect(Collectors.toSet()); - val stimmzettelgebiete = stimmzettelgebietRepository.findByWahlWahltagTagAndWahlNummer(wahltag, nummer).stream().map(wahldatenMapper::toDTO).collect( - Collectors.toSet()); + val stimmzettelgebiete = stimmzettelgebietRepository.findByWahlWahltagTagAndWahlWahltagNummer(wahltag, nummer).stream().map(wahldatenMapper::toDTO) + .collect( + Collectors.toSet()); return new BasisdatenDTO(basisstrukturdaten, wahlen, wahlbezirke, stimmzettelgebiete); } From c219d4334b8eda6d02cc27e4370dac1e92c82b62 Mon Sep 17 00:00:00 2001 From: MrSebastian <13592751+MrSebastian@users.noreply.github.com> Date: Wed, 3 Jul 2024 20:24:40 +0200 Subject: [PATCH 32/58] fix parameter name and exception --- .../eaiservice/service/wahldaten/WahldatenValidator.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahldaten/WahldatenValidator.java b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahldaten/WahldatenValidator.java index 03098c5c8..9b948b650 100644 --- a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahldaten/WahldatenValidator.java +++ b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahldaten/WahldatenValidator.java @@ -29,13 +29,13 @@ public void validGetWahlenParameterOrThrow(final LocalDate wahltag, final String } } - public void validGetWahlbezirkeParameterOrThrow(final LocalDate wahltag, final String wahlbezirkID) { + public void validGetWahlbezirkeParameterOrThrow(final LocalDate wahltag, final String nummer) { if (wahltag == null) { throw exceptionFactory.createFachlicheWlsException(ExceptionConstants.LOADWAHLEBZIRKE_WAHLTAG_FEHLT); } - if (wahlbezirkID == null) { - throw exceptionFactory.createFachlicheWlsException(ExceptionConstants.LOADWAHLEBZIRKE_WAHLTAG_FEHLT); + if (nummer == null) { + throw exceptionFactory.createFachlicheWlsException(ExceptionConstants.LOADWAHLEBZIRKE_NUMMER_FEHLT); } } From a2cefc6c2e2308d76065f9fa577edabfa0b486ab Mon Sep 17 00:00:00 2001 From: MrSebastian <13592751+MrSebastian@users.noreply.github.com> Date: Wed, 3 Jul 2024 20:25:06 +0200 Subject: [PATCH 33/58] add lombok builder for test cases --- .../eaiservice/rest/wahldaten/dto/BasisstrukturdatenDTO.java | 2 ++ .../eaiservice/rest/wahldaten/dto/StimmzettelgebietDTO.java | 2 ++ 2 files changed, 4 insertions(+) diff --git a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/rest/wahldaten/dto/BasisstrukturdatenDTO.java b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/rest/wahldaten/dto/BasisstrukturdatenDTO.java index 3e7953efe..2bd7754b8 100644 --- a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/rest/wahldaten/dto/BasisstrukturdatenDTO.java +++ b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/rest/wahldaten/dto/BasisstrukturdatenDTO.java @@ -2,7 +2,9 @@ import jakarta.validation.constraints.NotNull; import java.time.LocalDate; +import lombok.Builder; +@Builder public record BasisstrukturdatenDTO(@NotNull String wahlID, @NotNull String stimmzettelgebietID, @NotNull String wahlbezirkID, diff --git a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/rest/wahldaten/dto/StimmzettelgebietDTO.java b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/rest/wahldaten/dto/StimmzettelgebietDTO.java index e513782a4..05854f086 100644 --- a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/rest/wahldaten/dto/StimmzettelgebietDTO.java +++ b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/rest/wahldaten/dto/StimmzettelgebietDTO.java @@ -2,7 +2,9 @@ import jakarta.validation.constraints.NotNull; import java.time.LocalDate; +import lombok.Builder; +@Builder public record StimmzettelgebietDTO(String identifikator, String nummer, String name, From ab6b936c94af42493157d8a3f2d9c0a2fafeba12 Mon Sep 17 00:00:00 2001 From: MrSebastian <13592751+MrSebastian@users.noreply.github.com> Date: Wed, 3 Jul 2024 20:25:43 +0200 Subject: [PATCH 34/58] fix access to requestURI --- .../eaiservice/exception/GlobalExceptionHandler.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/exception/GlobalExceptionHandler.java b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/exception/GlobalExceptionHandler.java index 7b5a09eef..828956c3b 100644 --- a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/exception/GlobalExceptionHandler.java +++ b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/exception/GlobalExceptionHandler.java @@ -44,12 +44,12 @@ public ResponseEntity handleThrowables(final Throwable throwabl public WlsExceptionDTO handleThrowable(final MissingServletRequestParameterException missingRequestParameter, final ServletWebRequest webRequest) { val requestParameterName = missingRequestParameter.getParameterName(); - val servletPath = webRequest.getRequest().getServletPath(); + val requestURI = webRequest.getRequest().getRequestURI(); log.info("missing request parameter -> {}", requestParameterName); - log.info("path > {}", servletPath); + log.info("path > {}", requestURI); - return missingRequestParameterExceptionDataWrapperMapper.getExceptionDataWrapperForMissingRequestParameterByName(servletPath, requestParameterName) + return missingRequestParameterExceptionDataWrapperMapper.getExceptionDataWrapperForMissingRequestParameterByName(requestURI, requestParameterName) .map(this::createFachlicheWlsExceptionDTO).orElseGet(this::createGenericMissingParameterExceptionDTO); } From d4c1e29d7187289c9e4c838274c6e6f2df9dcd3c Mon Sep 17 00:00:00 2001 From: MrSebastian <13592751+MrSebastian@users.noreply.github.com> Date: Wed, 3 Jul 2024 20:26:38 +0200 Subject: [PATCH 35/58] fix nummer search on sgz repository --- .../domain/wahldaten/StimmzettelgebietRepository.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/StimmzettelgebietRepository.java b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/StimmzettelgebietRepository.java index d9d7bf733..719e2c9d5 100644 --- a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/StimmzettelgebietRepository.java +++ b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/StimmzettelgebietRepository.java @@ -7,5 +7,5 @@ public interface StimmzettelgebietRepository extends CrudRepository { - List findByWahlWahltagTagAndWahlNummer(LocalDate wahltag, String nummer); + List findByWahlWahltagTagAndWahlWahltagNummer(LocalDate wahltag, String nummer); } From de0a0e629cf9ebd7c767a4c2d507b6bd23d993e9 Mon Sep 17 00:00:00 2001 From: MrSebastian <13592751+MrSebastian@users.noreply.github.com> Date: Wed, 3 Jul 2024 20:50:15 +0200 Subject: [PATCH 36/58] update wahlvorstand tests with id converter --- .../wahlvorstand/WahlvorstandServiceTest.java | 26 ++++++++++++------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahlvorstand/WahlvorstandServiceTest.java b/wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahlvorstand/WahlvorstandServiceTest.java index 6587d788c..c1bfd2e7f 100644 --- a/wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahlvorstand/WahlvorstandServiceTest.java +++ b/wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahlvorstand/WahlvorstandServiceTest.java @@ -5,11 +5,10 @@ import de.muenchen.oss.wahllokalsystem.eaiservice.domain.wahlvorstand.Wahlvorstandsmitglied; import de.muenchen.oss.wahllokalsystem.eaiservice.domain.wahlvorstand.WahlvorstandsmitgliedsFunktion; import de.muenchen.oss.wahllokalsystem.eaiservice.exception.NotFoundException; -import de.muenchen.oss.wahllokalsystem.eaiservice.rest.common.exception.ExceptionConstants; import de.muenchen.oss.wahllokalsystem.eaiservice.rest.wahlvorstand.dto.WahlvorstandDTO; import de.muenchen.oss.wahllokalsystem.eaiservice.rest.wahlvorstand.dto.WahlvorstandsaktualisierungDTO; import de.muenchen.oss.wahllokalsystem.eaiservice.rest.wahlvorstand.dto.WahlvorstandsmitgliedAktualisierungDTO; -import de.muenchen.oss.wahllokalsystem.wls.common.exception.FachlicheWlsException; +import de.muenchen.oss.wahllokalsystem.eaiservice.service.IDConverter; import de.muenchen.oss.wahllokalsystem.wls.common.exception.util.ExceptionFactory; import java.time.LocalDateTime; import java.util.Collections; @@ -42,6 +41,9 @@ class WahlvorstandServiceTest { @Mock WahlvorstandValidator wahlvorstandValidator; + @Mock + IDConverter idConverter; + @InjectMocks WahlvorstandService unitUnderTest; @@ -57,6 +59,7 @@ void foundData() { Mockito.when(wahlvorstandRepository.findFirstByWahlbezirkID(wahlbezirkID)).thenReturn(Optional.of(mockedEntity)); Mockito.when(wahlvorstandMapper.toDTO(mockedEntity)).thenReturn(mockedMappedEntity); + Mockito.when(idConverter.convertIDToUUIDOrThrow(wahlbezirkID.toString())).thenReturn(wahlbezirkID); val result = unitUnderTest.getWahlvorstandForWahlbezirk(wahlbezirkID.toString()); @@ -68,6 +71,7 @@ void foundNoData() { val wahlbezirkID = UUID.randomUUID(); Mockito.when(wahlvorstandRepository.findFirstByWahlbezirkID(wahlbezirkID)).thenReturn(Optional.empty()); + Mockito.when(idConverter.convertIDToUUIDOrThrow(wahlbezirkID.toString())).thenReturn(wahlbezirkID); Assertions.assertThatException().isThrownBy(() -> unitUnderTest.getWahlvorstandForWahlbezirk(wahlbezirkID.toString())) .usingRecursiveComparison().isEqualTo(new NotFoundException(wahlbezirkID, Wahlvorstand.class)); @@ -77,11 +81,11 @@ void foundNoData() { void exceptionForMalformedWahlbezirkID() { val wahlbezirkID = "noAUUID"; - val mockedException = FachlicheWlsException.withCode("").buildWithMessage(""); + val idConverterException = new RuntimeException("id convert failed"); - Mockito.when(exceptionFactory.createFachlicheWlsException(ExceptionConstants.ID_NICHT_KONVERTIERBAR)).thenReturn(mockedException); + Mockito.doThrow(idConverterException).when(idConverter).convertIDToUUIDOrThrow(wahlbezirkID); - Assertions.assertThatException().isThrownBy(() -> unitUnderTest.getWahlvorstandForWahlbezirk(wahlbezirkID)).isSameAs(mockedException); + Assertions.assertThatException().isThrownBy(() -> unitUnderTest.getWahlvorstandForWahlbezirk(wahlbezirkID)).isSameAs(idConverterException); } @Test @@ -117,6 +121,7 @@ void existingDataIsUpdated() { val mockedEntity = new Wahlvorstand(wahlbezirkID, Set.of(mockedEntityMitglied1, mockedEntityMitglied3)); Mockito.when(wahlvorstandRepository.findFirstByWahlbezirkID(wahlbezirkID)).thenReturn(Optional.of(mockedEntity)); + Mockito.when(idConverter.convertIDToUUIDOrThrow(wahlbezirkID.toString())).thenReturn(wahlbezirkID); unitUnderTest.setAnwesenheit(aktualisierung); @@ -141,6 +146,7 @@ void exceptionWhenWahlvorstandDoesNotExists() { val aktualisierung = new WahlvorstandsaktualisierungDTO(wahlbezirkID.toString(), mitgliederAktualisierung, LocalDateTime.now()); Mockito.when(wahlvorstandRepository.findFirstByWahlbezirkID(wahlbezirkID)).thenReturn(Optional.empty()); + Mockito.when(idConverter.convertIDToUUIDOrThrow(wahlbezirkID.toString())).thenReturn(wahlbezirkID); Assertions.assertThatException().isThrownBy(() -> unitUnderTest.setAnwesenheit(aktualisierung)).usingRecursiveComparison() .isEqualTo(new NotFoundException(wahlbezirkID, Wahlvorstand.class)); @@ -161,13 +167,15 @@ void validationFailed() { @Test void exceptionBecauseOfWahlbezirkIDOfParameterIsInvalid() { - val mockedWlsException = FachlicheWlsException.withCode("").buildWithMessage(""); + val wahlbezirkID = "malformedID"; + + val idConverterException = new RuntimeException("id convert failed"); - Mockito.when(exceptionFactory.createFachlicheWlsException(ExceptionConstants.ID_NICHT_KONVERTIERBAR)).thenReturn(mockedWlsException); + Mockito.doThrow(idConverterException).when(idConverter).convertIDToUUIDOrThrow(wahlbezirkID); Assertions.assertThatException().isThrownBy( - () -> unitUnderTest.setAnwesenheit(new WahlvorstandsaktualisierungDTO("malformedID", Collections.emptySet(), LocalDateTime.now()))) - .isSameAs(mockedWlsException); + () -> unitUnderTest.setAnwesenheit(new WahlvorstandsaktualisierungDTO(wahlbezirkID, Collections.emptySet(), LocalDateTime.now()))) + .isSameAs(idConverterException); } } From 9180b6491b3071093a0fbaa78b9a2aba96a1d66f Mon Sep 17 00:00:00 2001 From: MrSebastian <13592751+MrSebastian@users.noreply.github.com> Date: Wed, 3 Jul 2024 20:55:38 +0200 Subject: [PATCH 37/58] remove unnecessary throws --- .../rest/wahldaten/WahldatenControllerIntegrationTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/rest/wahldaten/WahldatenControllerIntegrationTest.java b/wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/rest/wahldaten/WahldatenControllerIntegrationTest.java index aa247fb94..efc881aee 100644 --- a/wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/rest/wahldaten/WahldatenControllerIntegrationTest.java +++ b/wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/rest/wahldaten/WahldatenControllerIntegrationTest.java @@ -76,7 +76,7 @@ public class WahldatenControllerIntegrationTest { ObjectMapper objectMapper; @AfterEach - public void tearDown() throws Exception { + public void tearDown() { wahlbezirkRepository.deleteAll(); stimmzettelgebietRepository.deleteAll(); wahlRepository.deleteAll(); From 32114555f7691b30672442f4c58e751e7eb91901 Mon Sep 17 00:00:00 2001 From: MrSebastian <13592751+MrSebastian@users.noreply.github.com> Date: Wed, 3 Jul 2024 20:56:38 +0200 Subject: [PATCH 38/58] remove nummer of wahl --- .../eaiservice/domain/wahldaten/Wahl.java | 3 --- .../service/wahldaten/WahldatenMapper.java | 3 ++- .../db/dummydata/h2/V3_1_1__wahlTestdaten.sql | 17 ++++++++--------- .../db/migrations/h2/V3_1__createWahl.sql | 1 - .../StimmzettelgebietRepositoryTest.java | 8 ++++---- .../domain/wahldaten/WahlRepositoryTest.java | 10 +++++----- .../WahldatenControllerIntegrationTest.java | 12 ++++++------ .../service/wahldaten/WahldatenMapperTest.java | 6 +++--- 8 files changed, 28 insertions(+), 32 deletions(-) diff --git a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/Wahl.java b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/Wahl.java index b7658d07f..32be70b35 100644 --- a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/Wahl.java +++ b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/Wahl.java @@ -34,7 +34,4 @@ public class Wahl extends BaseEntity { @ManyToOne @JoinColumn(name = "wahltagID") private Wahltag wahltag; - - @NotNull - private String nummer; } diff --git a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahldaten/WahldatenMapper.java b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahldaten/WahldatenMapper.java index 76873ae51..145edbb35 100644 --- a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahldaten/WahldatenMapper.java +++ b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahldaten/WahldatenMapper.java @@ -21,12 +21,13 @@ public interface WahldatenMapper { @Mapping(target = "identifikator", source = "id") @Mapping(target = "wahltag", source = "wahltag.tag") + @Mapping(target = "nummer", source = "wahltag.nummer") WahlDTO toDTO(Wahl wahl); @Mapping(target = "identifikator", source = "id") @Mapping(target = "wahltag", source = "stimmzettelgebiet.wahl.wahltag.tag") @Mapping(target = "wahlID", source = "stimmzettelgebiet.wahl.id") - @Mapping(target = "wahlnummer", source = "stimmzettelgebiet.wahl.nummer") + @Mapping(target = "wahlnummer", source = "stimmzettelgebiet.wahl.wahltag.nummer") WahlbezirkDTO toDTO(Wahlbezirk wahlbezirk); @Mapping(target = "identifikator", source = "id") diff --git a/wls-eai-service/src/main/resources/db/dummydata/h2/V3_1_1__wahlTestdaten.sql b/wls-eai-service/src/main/resources/db/dummydata/h2/V3_1_1__wahlTestdaten.sql index f803caa7c..60699baed 100644 --- a/wls-eai-service/src/main/resources/db/dummydata/h2/V3_1_1__wahlTestdaten.sql +++ b/wls-eai-service/src/main/resources/db/dummydata/h2/V3_1_1__wahlTestdaten.sql @@ -1,11 +1,10 @@ -INSERT INTO wahl (id, name, wahlart, nummer, wahltagID) -values ('00000000-0000-0000-0000-000000000001', 'EU-Wahl 24', 'EUW', 0, '00000000-0000-0000-0000-000000000001'); +INSERT INTO wahl (id, name, wahlart, wahltagID) +values ('00000000-0000-0000-0000-000000000001', 'EU-Wahl 24', 'EUW', '00000000-0000-0000-0000-000000000001'); -INSERT INTO wahl (id, name, wahlart, nummer, wahltagID) -values ('00000000-0000-0000-0000-000000000002', 'Stadtratswahl', 'SRW', 0, '00000000-0000-0000-0000-000000000002'); -INSERT INTO wahl (id, name, wahlart, nummer, wahltagID) -values ('00000000-0000-0000-0000-000000000003', 'Oberbürgermeisterwahl', 'OBW', 0, - '00000000-0000-0000-0000-000000000002'); -INSERT INTO wahl (id, name, wahlart, nummer, wahltagID) -values ('00000000-0000-0000-0000-000000000004', 'Bezirksausschusswahl', 'BAW', 0, +INSERT INTO wahl (id, name, wahlart, wahltagID) +values ('00000000-0000-0000-0000-000000000002', 'Stadtratswahl', 'SRW', '00000000-0000-0000-0000-000000000002'); +INSERT INTO wahl (id, name, wahlart, wahltagID) +values ('00000000-0000-0000-0000-000000000003', 'Oberbürgermeisterwahl', 'OBW', '00000000-0000-0000-0000-000000000002'); +INSERT INTO wahl (id, name, wahlart, wahltagID) +values ('00000000-0000-0000-0000-000000000004', 'Bezirksausschusswahl', 'BAW', '00000000-0000-0000-0000-000000000002'); \ No newline at end of file diff --git a/wls-eai-service/src/main/resources/db/migrations/h2/V3_1__createWahl.sql b/wls-eai-service/src/main/resources/db/migrations/h2/V3_1__createWahl.sql index 6cd1aa171..679fa802e 100644 --- a/wls-eai-service/src/main/resources/db/migrations/h2/V3_1__createWahl.sql +++ b/wls-eai-service/src/main/resources/db/migrations/h2/V3_1__createWahl.sql @@ -3,7 +3,6 @@ CREATE TABLE wahl id VARCHAR2(36) NOT NULL, name VARCHAR2(100) NOT NULL, wahlart VARCHAR2(5) NOT NULL, - nummer VARCHAR2(10) NOT NULL, wahltagID VARCHAR2(36) NOT NULL, diff --git a/wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/StimmzettelgebietRepositoryTest.java b/wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/StimmzettelgebietRepositoryTest.java index c11198d0a..88e1ec50e 100644 --- a/wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/StimmzettelgebietRepositoryTest.java +++ b/wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/StimmzettelgebietRepositoryTest.java @@ -34,10 +34,10 @@ void dataFound() { val wahltag3 = wahltageRepository.save(new Wahltag(wahltag.plusDays(1), "", nummer)); val wahltag4 = wahltageRepository.save(new Wahltag(wahltag, "", nummer + "x")); - val wahl1 = wahlRepository.save(new Wahl("", Wahlart.BTW, wahltag1, "")); - val wahl2 = wahlRepository.save(new Wahl("", Wahlart.BTW, wahltag2, "")); - val wahl3 = wahlRepository.save(new Wahl("", Wahlart.BTW, wahltag3, "")); - val wahl4 = wahlRepository.save(new Wahl("", Wahlart.BTW, wahltag4, "")); + val wahl1 = wahlRepository.save(new Wahl("", Wahlart.BTW, wahltag1)); + val wahl2 = wahlRepository.save(new Wahl("", Wahlart.BTW, wahltag2)); + val wahl3 = wahlRepository.save(new Wahl("", Wahlart.BTW, wahltag3)); + val wahl4 = wahlRepository.save(new Wahl("", Wahlart.BTW, wahltag4)); val sgz1ToFind = stimmzettelgebietRepository.save(new Stimmzettelgebiet("sgz1", "", Stimmzettelgebietsart.SK, wahl1)); val sgz2ToFind = stimmzettelgebietRepository.save(new Stimmzettelgebiet("sgz2", "", Stimmzettelgebietsart.SK, wahl1)); diff --git a/wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/WahlRepositoryTest.java b/wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/WahlRepositoryTest.java index 9d16f7fb9..b84c01c4d 100644 --- a/wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/WahlRepositoryTest.java +++ b/wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/WahlRepositoryTest.java @@ -37,11 +37,11 @@ void dataFound() { val wahltag3 = wahltageRepository.save(new Wahltag(wahltag.plusDays(1), "", nummer)); val wahltag4 = wahltageRepository.save(new Wahltag(wahltag, "", nummer + "x")); - val wahl1ToFind = wahlRepository.save(new Wahl("wahl1", Wahlart.BTW, wahltag1, "")); - val wahl2ToFind = wahlRepository.save(new Wahl("wahl2", Wahlart.BTW, wahltag1, "")); - wahlRepository.save(new Wahl("", Wahlart.BTW, wahltag2, "")); - wahlRepository.save(new Wahl("", Wahlart.BTW, wahltag3, "")); - wahlRepository.save(new Wahl("", Wahlart.BTW, wahltag4, "")); + val wahl1ToFind = wahlRepository.save(new Wahl("wahl1", Wahlart.BTW, wahltag1)); + val wahl2ToFind = wahlRepository.save(new Wahl("wahl2", Wahlart.BTW, wahltag1)); + wahlRepository.save(new Wahl("", Wahlart.BTW, wahltag2)); + wahlRepository.save(new Wahl("", Wahlart.BTW, wahltag3)); + wahlRepository.save(new Wahl("", Wahlart.BTW, wahltag4)); val result = wahlRepository.findByWahltagTagAndWahltagNummer(wahltag, nummer); diff --git a/wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/rest/wahldaten/WahldatenControllerIntegrationTest.java b/wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/rest/wahldaten/WahldatenControllerIntegrationTest.java index efc881aee..0d0490922 100644 --- a/wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/rest/wahldaten/WahldatenControllerIntegrationTest.java +++ b/wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/rest/wahldaten/WahldatenControllerIntegrationTest.java @@ -90,7 +90,7 @@ class LoadWahlberechtigte { @WithMockUser(authorities = Authorities.SERVICE_LOAD_WAHLBERECHTIGTE) void dataFound() throws Exception { val wahltag = wahltageRepository.save(new Wahltag(LocalDate.now(), "beschreibung wahltag", "nummer")); - val wahl = wahlRepository.save(new Wahl("wahl", Wahlart.BTW, wahltag, "1")); + val wahl = wahlRepository.save(new Wahl("wahl", Wahlart.BTW, wahltag)); val stimmzettelgebiet = stimmzettelgebietRepository.save(new Stimmzettelgebiet("sgz1", "sgz1", Stimmzettelgebietsart.SK, wahl)); val wahlbezirkToFind = wahlbezirkRepository.save(new Wahlbezirk(WahlbezirkArtDTO.UWB, "nummer", stimmzettelgebiet, 10, 11, 12)); @@ -198,7 +198,7 @@ void dataFound() throws Exception { val wahltag1 = wahltageRepository.save(new Wahltag(LocalDate.parse(wahltagDate), "wahltag1", "1")); wahltageRepository.save(new Wahltag(LocalDate.parse(wahltagDate), "wahltag2", "2")); - val wahl = wahlRepository.save(new Wahl("wahl", Wahlart.BTW, wahltag1, "nummer")); + val wahl = wahlRepository.save(new Wahl("wahl", Wahlart.BTW, wahltag1)); val stimmzettelgebiet = stimmzettelgebietRepository.save(new Stimmzettelgebiet("nummer", "name", Stimmzettelgebietsart.SK, wahl)); val wahlbezirk1 = wahlbezirkRepository.save(new Wahlbezirk(WahlbezirkArtDTO.UWB, "wbz1", stimmzettelgebiet, 0, 0, 0)); @@ -269,9 +269,9 @@ void dataFound() throws Exception { val wahltag1 = wahltageRepository.save(new Wahltag(LocalDate.parse(wahltagDate), "wahltag1", "1")); val wahltag2 = wahltageRepository.save(new Wahltag(LocalDate.parse(wahltagDate), "wahltag2", "2")); - val wahl1ToFind = wahlRepository.save(new Wahl("wahl1", Wahlart.BTW, wahltag1, "nummer")); - val wahl2ToFind = wahlRepository.save(new Wahl("wahl2", Wahlart.BTW, wahltag1, "nummer")); - wahlRepository.save(new Wahl("wahl", Wahlart.BTW, wahltag2, "nummer")); + val wahl1ToFind = wahlRepository.save(new Wahl("wahl1", Wahlart.BTW, wahltag1)); + val wahl2ToFind = wahlRepository.save(new Wahl("wahl2", Wahlart.BTW, wahltag1)); + wahlRepository.save(new Wahl("wahl", Wahlart.BTW, wahltag2)); val request = get(WahldatenController.WAHLDATEN_REQUEST_MAPPING + "/wahlen?forDate=" + wahltagDate + "&withNummer=" + nummerToFind); @@ -337,7 +337,7 @@ void dataFound() throws Exception { val nummerToFind = "1"; val wahltag = wahltageRepository.save(new Wahltag(LocalDate.parse(wahltagDateToFind), "beschreibung wahltag", nummerToFind)); - val wahl = wahlRepository.save(new Wahl("wahl", Wahlart.BTW, wahltag, "1")); + val wahl = wahlRepository.save(new Wahl("wahl", Wahlart.BTW, wahltag)); val stimmzettelgebiet = stimmzettelgebietRepository.save(new Stimmzettelgebiet("sgz1", "sgz1", Stimmzettelgebietsart.SK, wahl)); val wahlbezirkToFind = wahlbezirkRepository.save(new Wahlbezirk(WahlbezirkArtDTO.UWB, "nummer", stimmzettelgebiet, 10, 11, 12)); diff --git a/wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahldaten/WahldatenMapperTest.java b/wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahldaten/WahldatenMapperTest.java index f156c6259..46e11442b 100644 --- a/wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahldaten/WahldatenMapperTest.java +++ b/wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahldaten/WahldatenMapperTest.java @@ -53,7 +53,7 @@ void ofWahl() { val name = "name"; val nummer = "nummer"; - val entityToMap = new Wahl(name, Wahlart.BTW, new Wahltag(wahltag, null, null), nummer); + val entityToMap = new Wahl(name, Wahlart.BTW, new Wahltag(wahltag, null, nummer)); entityToMap.setId(wahlID); val result = unitUnderTest.toDTO(entityToMap); @@ -70,7 +70,7 @@ void ofWahlbezirk() { val wahlbezirkNummer = "wahlbezirkNummer"; val wahltagnummer = "wahltagnummer"; - val wahlForWahlbezirk = new Wahl(null, null, new Wahltag(wahltag, null, wahltagnummer), null); + val wahlForWahlbezirk = new Wahl(null, null, new Wahltag(wahltag, null, wahltagnummer)); wahlForWahlbezirk.setId(wahlID); val entityToMap = new Wahlbezirk(WahlbezirkArtDTO.UWB, wahlbezirkNummer, new Stimmzettelgebiet(null, null, null, wahlForWahlbezirk), 0, 0, 0); entityToMap.setId(wahlbezirkID); @@ -88,7 +88,7 @@ void ofStimmzettelgebiet() { val szgName = "szgName"; val wahltag = LocalDate.now(); - val entityToMap = new Stimmzettelgebiet(szgNummer, szgName, Stimmzettelgebietsart.SK, new Wahl(null, null, new Wahltag(wahltag, null, null), null)); + val entityToMap = new Stimmzettelgebiet(szgNummer, szgName, Stimmzettelgebietsart.SK, new Wahl(null, null, new Wahltag(wahltag, null, null))); entityToMap.setId(szgID); val result = unitUnderTest.toDTO(entityToMap); From 266745464ec365f36f8301739656a222e4500ca4 Mon Sep 17 00:00:00 2001 From: MrSebastian <13592751+MrSebastian@users.noreply.github.com> Date: Wed, 3 Jul 2024 20:57:43 +0200 Subject: [PATCH 39/58] fix missing test data clean up after test --- .../domain/wahldaten/StimmzettelgebietRepositoryTest.java | 8 ++++++++ .../eaiservice/domain/wahldaten/WahlRepositoryTest.java | 1 + 2 files changed, 9 insertions(+) diff --git a/wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/StimmzettelgebietRepositoryTest.java b/wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/StimmzettelgebietRepositoryTest.java index 88e1ec50e..457cfc409 100644 --- a/wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/StimmzettelgebietRepositoryTest.java +++ b/wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/StimmzettelgebietRepositoryTest.java @@ -4,6 +4,7 @@ import java.time.LocalDate; import lombok.val; import org.assertj.core.api.Assertions; +import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; @@ -21,6 +22,13 @@ class StimmzettelgebietRepositoryTest { @Autowired StimmzettelgebietRepository stimmzettelgebietRepository; + @AfterEach + void tearDown() { + stimmzettelgebietRepository.deleteAll(); + wahlRepository.deleteAll(); + wahltageRepository.deleteAll(); + } + @Nested class FindByWahlWahltagTagAndWahlNummer { diff --git a/wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/WahlRepositoryTest.java b/wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/WahlRepositoryTest.java index b84c01c4d..269518f73 100644 --- a/wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/WahlRepositoryTest.java +++ b/wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/WahlRepositoryTest.java @@ -22,6 +22,7 @@ class WahlRepositoryTest { @AfterEach void tearDown() { wahlRepository.deleteAll(); + wahltageRepository.deleteAll(); } @Nested From 7b284cf5bdea9a6cff66535207fc132af2f9e049 Mon Sep 17 00:00:00 2001 From: MrSebastian <13592751+MrSebastian@users.noreply.github.com> Date: Wed, 3 Jul 2024 20:57:56 +0200 Subject: [PATCH 40/58] spotless apply --- .../eaiservice/domain/wahldaten/WahlbezirkRepository.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/WahlbezirkRepository.java b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/WahlbezirkRepository.java index 8567e78d5..f2c450317 100644 --- a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/WahlbezirkRepository.java +++ b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/WahlbezirkRepository.java @@ -9,7 +9,9 @@ public interface WahlbezirkRepository extends CrudRepository { - @Query("SELECT wb FROM Wahlbezirk wb JOIN FETCH wb.stimmzettelgebiet sg JOIN FETCH sg.wahl w JOIN FETCH w.wahltag t WHERE t.tag = (:wahltag) AND w.nummer = (:nummer)") + @Query( + "SELECT wb FROM Wahlbezirk wb JOIN FETCH wb.stimmzettelgebiet sg JOIN FETCH sg.wahl w JOIN FETCH w.wahltag t WHERE t.tag = (:wahltag) AND t.nummer = (:nummer)" + ) List findWahlbezirkeWithStimmzettelgebietAndWahlAndWahltagById(@Param("wahltag") LocalDate wahltag, @Param("nummer") String nummer); @Query("SELECT wb FROM Wahlbezirk wb JOIN FETCH wb.stimmzettelgebiet sg JOIN FETCH sg.wahl w JOIN FETCH w.wahltag t WHERE wb.id = (:wahlbezirkID)") From c83f13e2c77a2ae761299dd2adfc2d0c11711447 Mon Sep 17 00:00:00 2001 From: MrSebastian <13592751+MrSebastian@users.noreply.github.com> Date: Thu, 4 Jul 2024 10:28:29 +0200 Subject: [PATCH 41/58] spotless:apply --- .../service/wahlvorstand/WahlvorstandServiceTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahlvorstand/WahlvorstandServiceTest.java b/wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahlvorstand/WahlvorstandServiceTest.java index c1bfd2e7f..98f7953db 100644 --- a/wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahlvorstand/WahlvorstandServiceTest.java +++ b/wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahlvorstand/WahlvorstandServiceTest.java @@ -174,7 +174,7 @@ void exceptionBecauseOfWahlbezirkIDOfParameterIsInvalid() { Mockito.doThrow(idConverterException).when(idConverter).convertIDToUUIDOrThrow(wahlbezirkID); Assertions.assertThatException().isThrownBy( - () -> unitUnderTest.setAnwesenheit(new WahlvorstandsaktualisierungDTO(wahlbezirkID, Collections.emptySet(), LocalDateTime.now()))) + () -> unitUnderTest.setAnwesenheit(new WahlvorstandsaktualisierungDTO(wahlbezirkID, Collections.emptySet(), LocalDateTime.now()))) .isSameAs(idConverterException); } } From 03b57bef098f0c171da7b93e5e83b6247c9b3851 Mon Sep 17 00:00:00 2001 From: MrSebastian <13592751+MrSebastian@users.noreply.github.com> Date: Thu, 4 Jul 2024 12:51:10 +0200 Subject: [PATCH 42/58] rename wahlbezirk repo method to increase readability --- .../domain/wahldaten/WahlbezirkRepository.java | 5 +++-- .../service/wahldaten/WahldatenService.java | 5 +++-- .../service/wahldaten/WahldatenServiceTest.java | 12 ++++++------ 3 files changed, 12 insertions(+), 10 deletions(-) diff --git a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/WahlbezirkRepository.java b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/WahlbezirkRepository.java index f2c450317..04c76d3da 100644 --- a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/WahlbezirkRepository.java +++ b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/WahlbezirkRepository.java @@ -12,8 +12,9 @@ public interface WahlbezirkRepository extends CrudRepository { @Query( "SELECT wb FROM Wahlbezirk wb JOIN FETCH wb.stimmzettelgebiet sg JOIN FETCH sg.wahl w JOIN FETCH w.wahltag t WHERE t.tag = (:wahltag) AND t.nummer = (:nummer)" ) - List findWahlbezirkeWithStimmzettelgebietAndWahlAndWahltagById(@Param("wahltag") LocalDate wahltag, @Param("nummer") String nummer); + List findWahlbezirkeWithStimmzettelgebietAndWahlAndWahltagByWahltagAndNummer(@Param("wahltag") LocalDate wahltag, + @Param("nummer") String nummer); @Query("SELECT wb FROM Wahlbezirk wb JOIN FETCH wb.stimmzettelgebiet sg JOIN FETCH sg.wahl w JOIN FETCH w.wahltag t WHERE wb.id = (:wahlbezirkID)") - List findWahlbezirkeWithStimmzettelgebietAndWahlAndWahltagById(@Param("wahlbezirkID") UUID wahlbezirkID); + List findWahlbezirkeWithStimmzettelgebietAndWahlAndWahltagByID(@Param("wahlbezirkID") UUID wahlbezirkID); } diff --git a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahldaten/WahldatenService.java b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahldaten/WahldatenService.java index 36a4cfe8a..f3397597c 100644 --- a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahldaten/WahldatenService.java +++ b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahldaten/WahldatenService.java @@ -67,7 +67,8 @@ public Set getWahlbezirke(final LocalDate wahltag, final String n public List getWahlberechtigte(final String wahlbezirkID) { wahldatenValidator.validGetWahlberechtigteParameterOrThrow(wahlbezirkID); - return wahlbezirkRepository.findWahlbezirkeWithStimmzettelgebietAndWahlAndWahltagById(idConverter.convertIDToUUIDOrThrow(wahlbezirkID)).stream() + return wahlbezirkRepository.findWahlbezirkeWithStimmzettelgebietAndWahlAndWahltagByID(idConverter.convertIDToUUIDOrThrow(wahlbezirkID)) + .stream() .map(wahldatenMapper::toWahlberechtigteDTO) .toList(); } @@ -89,7 +90,7 @@ public BasisdatenDTO getBasisdaten(final LocalDate wahltag, final String nummer) } private List findWahlbezirkeWithStimmzettelgebietAndWahlAndWahltagById(final LocalDate wahltag, final String nummer) { - return wahlbezirkRepository.findWahlbezirkeWithStimmzettelgebietAndWahlAndWahltagById(wahltag, nummer); + return wahlbezirkRepository.findWahlbezirkeWithStimmzettelgebietAndWahlAndWahltagByWahltagAndNummer(wahltag, nummer); } private List getWahltageIncludingSince(LocalDate wahltageIncludingSince) { diff --git a/wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahldaten/WahldatenServiceTest.java b/wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahldaten/WahldatenServiceTest.java index 7126198ba..ed3bcfdf0 100644 --- a/wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahldaten/WahldatenServiceTest.java +++ b/wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahldaten/WahldatenServiceTest.java @@ -157,7 +157,7 @@ void dataFound() { val mockedRepoEntity = new Wahlbezirk(); val mockedMappedEntity = WahlbezirkDTO.builder().build(); - Mockito.when(wahlbezirkRepository.findWahlbezirkeWithStimmzettelgebietAndWahlAndWahltagById(eq(wahltag), eq(nummer))) + Mockito.when(wahlbezirkRepository.findWahlbezirkeWithStimmzettelgebietAndWahlAndWahltagByWahltagAndNummer(eq(wahltag), eq(nummer))) .thenReturn(List.of(mockedRepoEntity)); Mockito.when(wahldatenMapper.toDTO(mockedRepoEntity)).thenReturn(mockedMappedEntity); @@ -171,7 +171,7 @@ void noDataFound() { val wahltag = LocalDate.now(); val nummer = "nummer"; - Mockito.when(wahlbezirkRepository.findWahlbezirkeWithStimmzettelgebietAndWahlAndWahltagById(eq(wahltag), eq(nummer))) + Mockito.when(wahlbezirkRepository.findWahlbezirkeWithStimmzettelgebietAndWahlAndWahltagByWahltagAndNummer(eq(wahltag), eq(nummer))) .thenReturn(Collections.emptyList()); val result = unitUnderTest.getWahlbezirke(wahltag, nummer); @@ -205,7 +205,7 @@ void dataFound() { val mockedMappedEntityAsWahlberechtigte = WahlberechtigteDTO.builder().build(); Mockito.when(idConverter.convertIDToUUIDOrThrow(wahlbezirkID)).thenReturn(mockedWahlbezirkAsUUID); - Mockito.when(wahlbezirkRepository.findWahlbezirkeWithStimmzettelgebietAndWahlAndWahltagById(mockedWahlbezirkAsUUID)) + Mockito.when(wahlbezirkRepository.findWahlbezirkeWithStimmzettelgebietAndWahlAndWahltagByID(mockedWahlbezirkAsUUID)) .thenReturn(List.of(mockedRepoEntity)); Mockito.when(wahldatenMapper.toWahlberechtigteDTO(mockedRepoEntity)).thenReturn(mockedMappedEntityAsWahlberechtigte); @@ -221,7 +221,7 @@ void noDataFound() { val mockedWahlbezirkAsUUID = UUID.randomUUID(); Mockito.when(idConverter.convertIDToUUIDOrThrow(wahlbezirkID)).thenReturn(mockedWahlbezirkAsUUID); - Mockito.when(wahlbezirkRepository.findWahlbezirkeWithStimmzettelgebietAndWahlAndWahltagById(mockedWahlbezirkAsUUID)) + Mockito.when(wahlbezirkRepository.findWahlbezirkeWithStimmzettelgebietAndWahlAndWahltagByID(mockedWahlbezirkAsUUID)) .thenReturn(Collections.emptyList()); val result = unitUnderTest.getWahlberechtigte(wahlbezirkID); @@ -258,7 +258,7 @@ void dataFound() { val mockedRepoStimmzettelgebiet = new Stimmzettelgebiet(); val mockedRepoStimmzettelgebietMappedToDTO = StimmzettelgebietDTO.builder().build(); - Mockito.when(wahlbezirkRepository.findWahlbezirkeWithStimmzettelgebietAndWahlAndWahltagById(eq(wahltag), eq(nummer))) + Mockito.when(wahlbezirkRepository.findWahlbezirkeWithStimmzettelgebietAndWahlAndWahltagByWahltagAndNummer(eq(wahltag), eq(nummer))) .thenReturn(List.of(mockedRepoWahlbezirk)); Mockito.when(wahlRepository.findByWahltagTagAndWahltagNummer(eq(wahltag), eq(nummer))).thenReturn(List.of(mockedRepoWahl)); Mockito.when(stimmzettelgebietRepository.findByWahlWahltagTagAndWahlWahltagNummer(eq(wahltag), eq(nummer))) @@ -280,7 +280,7 @@ void noDataFound() { val wahltag = LocalDate.now(); val nummer = "nummer"; - Mockito.when(wahlbezirkRepository.findWahlbezirkeWithStimmzettelgebietAndWahlAndWahltagById(eq(wahltag), eq(nummer))) + Mockito.when(wahlbezirkRepository.findWahlbezirkeWithStimmzettelgebietAndWahlAndWahltagByWahltagAndNummer(eq(wahltag), eq(nummer))) .thenReturn(Collections.emptyList()); Mockito.when(wahlRepository.findByWahltagTagAndWahltagNummer(eq(wahltag), eq(nummer))).thenReturn(Collections.emptyList()); Mockito.when(stimmzettelgebietRepository.findByWahlWahltagTagAndWahlWahltagNummer(eq(wahltag), eq(nummer))).thenReturn(Collections.emptyList()); From d6bbe1af81136ad8cf4ae3b142233862d3903618 Mon Sep 17 00:00:00 2001 From: MrSebastian <13592751+MrSebastian@users.noreply.github.com> Date: Thu, 4 Jul 2024 13:09:59 +0200 Subject: [PATCH 43/58] fix referenced typ for wahlbezirkArt --- .../eaiservice/domain/wahldaten/Wahlbezirk.java | 3 +-- .../WahldatenControllerIntegrationTest.java | 12 ++++++------ .../service/wahldaten/WahldatenMapperTest.java | 3 ++- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/Wahlbezirk.java b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/Wahlbezirk.java index f1289cb7e..2210f5642 100644 --- a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/Wahlbezirk.java +++ b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/Wahlbezirk.java @@ -1,7 +1,6 @@ package de.muenchen.oss.wahllokalsystem.eaiservice.domain.wahldaten; import de.muenchen.oss.wahllokalsystem.eaiservice.domain.BaseEntity; -import de.muenchen.oss.wahllokalsystem.eaiservice.rest.wahldaten.dto.WahlbezirkArtDTO; import jakarta.persistence.Entity; import jakarta.persistence.EnumType; import jakarta.persistence.Enumerated; @@ -26,7 +25,7 @@ public class Wahlbezirk extends BaseEntity { @NotNull @Enumerated(EnumType.STRING) - private WahlbezirkArtDTO wahlbezirkArt; + private WahlbezirkArt wahlbezirkArt; @NotNull private String nummer; diff --git a/wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/rest/wahldaten/WahldatenControllerIntegrationTest.java b/wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/rest/wahldaten/WahldatenControllerIntegrationTest.java index 0d0490922..651812b14 100644 --- a/wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/rest/wahldaten/WahldatenControllerIntegrationTest.java +++ b/wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/rest/wahldaten/WahldatenControllerIntegrationTest.java @@ -14,6 +14,7 @@ import de.muenchen.oss.wahllokalsystem.eaiservice.domain.wahldaten.WahlRepository; import de.muenchen.oss.wahllokalsystem.eaiservice.domain.wahldaten.Wahlart; import de.muenchen.oss.wahllokalsystem.eaiservice.domain.wahldaten.Wahlbezirk; +import de.muenchen.oss.wahllokalsystem.eaiservice.domain.wahldaten.WahlbezirkArt; import de.muenchen.oss.wahllokalsystem.eaiservice.domain.wahldaten.WahlbezirkRepository; import de.muenchen.oss.wahllokalsystem.eaiservice.domain.wahldaten.Wahltag; import de.muenchen.oss.wahllokalsystem.eaiservice.domain.wahldaten.WahltageRepository; @@ -21,7 +22,6 @@ import de.muenchen.oss.wahllokalsystem.eaiservice.rest.wahldaten.dto.BasisdatenDTO; import de.muenchen.oss.wahllokalsystem.eaiservice.rest.wahldaten.dto.WahlDTO; import de.muenchen.oss.wahllokalsystem.eaiservice.rest.wahldaten.dto.WahlberechtigteDTO; -import de.muenchen.oss.wahllokalsystem.eaiservice.rest.wahldaten.dto.WahlbezirkArtDTO; import de.muenchen.oss.wahllokalsystem.eaiservice.rest.wahldaten.dto.WahlbezirkDTO; import de.muenchen.oss.wahllokalsystem.eaiservice.rest.wahldaten.dto.WahltagDTO; import de.muenchen.oss.wahllokalsystem.eaiservice.service.wahldaten.WahldatenMapper; @@ -92,9 +92,9 @@ void dataFound() throws Exception { val wahltag = wahltageRepository.save(new Wahltag(LocalDate.now(), "beschreibung wahltag", "nummer")); val wahl = wahlRepository.save(new Wahl("wahl", Wahlart.BTW, wahltag)); val stimmzettelgebiet = stimmzettelgebietRepository.save(new Stimmzettelgebiet("sgz1", "sgz1", Stimmzettelgebietsart.SK, wahl)); - val wahlbezirkToFind = wahlbezirkRepository.save(new Wahlbezirk(WahlbezirkArtDTO.UWB, "nummer", stimmzettelgebiet, 10, 11, 12)); + val wahlbezirkToFind = wahlbezirkRepository.save(new Wahlbezirk(WahlbezirkArt.UWB, "nummer", stimmzettelgebiet, 10, 11, 12)); - wahlbezirkRepository.save(new Wahlbezirk(WahlbezirkArtDTO.UWB, "nummer", stimmzettelgebiet, 10, 11, 12)); + wahlbezirkRepository.save(new Wahlbezirk(WahlbezirkArt.UWB, "nummer", stimmzettelgebiet, 10, 11, 12)); val request = get(WahldatenController.WAHLDATEN_REQUEST_MAPPING + "/wahlbezirke/" + wahlbezirkToFind.getId() + "/wahlberechtigte"); @@ -201,8 +201,8 @@ void dataFound() throws Exception { val wahl = wahlRepository.save(new Wahl("wahl", Wahlart.BTW, wahltag1)); val stimmzettelgebiet = stimmzettelgebietRepository.save(new Stimmzettelgebiet("nummer", "name", Stimmzettelgebietsart.SK, wahl)); - val wahlbezirk1 = wahlbezirkRepository.save(new Wahlbezirk(WahlbezirkArtDTO.UWB, "wbz1", stimmzettelgebiet, 0, 0, 0)); - val wahlbezirk2 = wahlbezirkRepository.save(new Wahlbezirk(WahlbezirkArtDTO.BWB, "wbz2", stimmzettelgebiet, 0, 0, 0)); + val wahlbezirk1 = wahlbezirkRepository.save(new Wahlbezirk(WahlbezirkArt.UWB, "wbz1", stimmzettelgebiet, 0, 0, 0)); + val wahlbezirk2 = wahlbezirkRepository.save(new Wahlbezirk(WahlbezirkArt.BWB, "wbz2", stimmzettelgebiet, 0, 0, 0)); val request = get(WahldatenController.WAHLDATEN_REQUEST_MAPPING + "/wahlbezirk?forDate=" + wahltagDate + "&withNummer=" + nummerToFind); @@ -339,7 +339,7 @@ void dataFound() throws Exception { val wahltag = wahltageRepository.save(new Wahltag(LocalDate.parse(wahltagDateToFind), "beschreibung wahltag", nummerToFind)); val wahl = wahlRepository.save(new Wahl("wahl", Wahlart.BTW, wahltag)); val stimmzettelgebiet = stimmzettelgebietRepository.save(new Stimmzettelgebiet("sgz1", "sgz1", Stimmzettelgebietsart.SK, wahl)); - val wahlbezirkToFind = wahlbezirkRepository.save(new Wahlbezirk(WahlbezirkArtDTO.UWB, "nummer", stimmzettelgebiet, 10, 11, 12)); + val wahlbezirkToFind = wahlbezirkRepository.save(new Wahlbezirk(WahlbezirkArt.UWB, "nummer", stimmzettelgebiet, 10, 11, 12)); val request = get(WahldatenController.WAHLDATEN_REQUEST_MAPPING + "/basisdaten?forDate=" + wahltagDateToFind + "&withNummer=" + nummerToFind); diff --git a/wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahldaten/WahldatenMapperTest.java b/wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahldaten/WahldatenMapperTest.java index 46e11442b..e9a2575b5 100644 --- a/wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahldaten/WahldatenMapperTest.java +++ b/wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahldaten/WahldatenMapperTest.java @@ -5,6 +5,7 @@ import de.muenchen.oss.wahllokalsystem.eaiservice.domain.wahldaten.Wahl; import de.muenchen.oss.wahllokalsystem.eaiservice.domain.wahldaten.Wahlart; import de.muenchen.oss.wahllokalsystem.eaiservice.domain.wahldaten.Wahlbezirk; +import de.muenchen.oss.wahllokalsystem.eaiservice.domain.wahldaten.WahlbezirkArt; import de.muenchen.oss.wahllokalsystem.eaiservice.domain.wahldaten.Wahltag; import de.muenchen.oss.wahllokalsystem.eaiservice.rest.common.dto.WahlartDTO; import de.muenchen.oss.wahllokalsystem.eaiservice.rest.wahldaten.dto.BasisstrukturdatenDTO; @@ -72,7 +73,7 @@ void ofWahlbezirk() { val wahlForWahlbezirk = new Wahl(null, null, new Wahltag(wahltag, null, wahltagnummer)); wahlForWahlbezirk.setId(wahlID); - val entityToMap = new Wahlbezirk(WahlbezirkArtDTO.UWB, wahlbezirkNummer, new Stimmzettelgebiet(null, null, null, wahlForWahlbezirk), 0, 0, 0); + val entityToMap = new Wahlbezirk(WahlbezirkArt.UWB, wahlbezirkNummer, new Stimmzettelgebiet(null, null, null, wahlForWahlbezirk), 0, 0, 0); entityToMap.setId(wahlbezirkID); val result = unitUnderTest.toDTO(entityToMap); From f4a60c2c4d5d0fce9f4c7407538ad0bf17419c87 Mon Sep 17 00:00:00 2001 From: MrSebastian <13592751+MrSebastian@users.noreply.github.com> Date: Thu, 4 Jul 2024 13:12:40 +0200 Subject: [PATCH 44/58] created tests for own queries in wahlbezirk repository --- .../wahldaten/WahlbezirkRepositoryTest.java | 95 +++++++++++++++++++ 1 file changed, 95 insertions(+) create mode 100644 wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/WahlbezirkRepositoryTest.java diff --git a/wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/WahlbezirkRepositoryTest.java b/wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/WahlbezirkRepositoryTest.java new file mode 100644 index 000000000..ea66e6a02 --- /dev/null +++ b/wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/WahlbezirkRepositoryTest.java @@ -0,0 +1,95 @@ +package de.muenchen.oss.wahllokalsystem.eaiservice.domain.wahldaten; + +import de.muenchen.oss.wahllokalsystem.eaiservice.MicroServiceApplication; +import java.time.LocalDate; +import lombok.val; +import org.assertj.core.api.Assertions; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.ActiveProfiles; + +@SpringBootTest(classes = MicroServiceApplication.class) +@ActiveProfiles({ "db-h2" }) +class WahlbezirkRepositoryTest { + + @Autowired + WahltageRepository wahltageRepository; + + @Autowired + WahlRepository wahlRepository; + + @Autowired + StimmzettelgebietRepository stimmzettelgebietRepository; + + @Autowired + WahlbezirkRepository unitUnderTest; + + @AfterEach + void tearDown() { + unitUnderTest.deleteAll(); + stimmzettelgebietRepository.deleteAll(); + wahlRepository.deleteAll(); + wahltageRepository.deleteAll(); + } + + @Nested + class FindWahlbezirkeWithStimmzettelgebietAndWahlAndWahltagByWahltagAndNummer { + + @Test + void dataFound() { + val wahltag = LocalDate.now(); + val nummer = "nummer"; + + val wahltag1 = wahltageRepository.save(new Wahltag(wahltag, "", nummer)); + val wahltag2 = wahltageRepository.save(new Wahltag(wahltag.minusDays(1), "", nummer)); + val wahltag3 = wahltageRepository.save(new Wahltag(wahltag.plusDays(1), "", nummer)); + val wahltag4 = wahltageRepository.save(new Wahltag(wahltag, "", nummer + "x")); + + val wahl1 = wahlRepository.save(new Wahl("", Wahlart.BTW, wahltag1)); + val wahl2 = wahlRepository.save(new Wahl("", Wahlart.BTW, wahltag2)); + val wahl3 = wahlRepository.save(new Wahl("", Wahlart.BTW, wahltag3)); + val wahl4 = wahlRepository.save(new Wahl("", Wahlart.BTW, wahltag4)); + + val szg1 = stimmzettelgebietRepository.save(new Stimmzettelgebiet("", "", Stimmzettelgebietsart.SK, wahl1)); + val szg2 = stimmzettelgebietRepository.save(new Stimmzettelgebiet("", "", Stimmzettelgebietsart.SK, wahl2)); + val szg3 = stimmzettelgebietRepository.save(new Stimmzettelgebiet("", "", Stimmzettelgebietsart.SK, wahl3)); + val szg4 = stimmzettelgebietRepository.save(new Stimmzettelgebiet("", "", Stimmzettelgebietsart.SK, wahl4)); + + val wahlbezirk1ToFind = unitUnderTest.save(new Wahlbezirk(WahlbezirkArt.UWB, "wbz1", szg1, 0, 0, 0)); + val wahlbezirk2ToFind = unitUnderTest.save(new Wahlbezirk(WahlbezirkArt.UWB, "wbz2", szg1, 0, 0, 0)); + unitUnderTest.save(new Wahlbezirk(WahlbezirkArt.UWB, "wbz3", szg2, 0, 0, 0)); + unitUnderTest.save(new Wahlbezirk(WahlbezirkArt.UWB, "wbz4", szg3, 0, 0, 0)); + unitUnderTest.save(new Wahlbezirk(WahlbezirkArt.UWB, "wbz5", szg4, 0, 0, 0)); + + val result = unitUnderTest.findWahlbezirkeWithStimmzettelgebietAndWahlAndWahltagByWahltagAndNummer(wahltag, nummer); + + val expectedResult = new Wahlbezirk[] { + wahlbezirk1ToFind, + wahlbezirk2ToFind + }; + Assertions.assertThat(result).containsOnly(expectedResult); + } + } + + @Nested + class FindWahlbezirkeWithStimmzettelgebietAndWahlAndWahltagByID { + + @Test + void dataFound() { + val wahltag = wahltageRepository.save(new Wahltag(LocalDate.now(), "", "nummer")); + val wahl = wahlRepository.save(new Wahl("", Wahlart.BTW, wahltag)); + val szg = stimmzettelgebietRepository.save(new Stimmzettelgebiet("", "", Stimmzettelgebietsart.SK, wahl)); + + val wahlbezirkToFind = unitUnderTest.save(new Wahlbezirk(WahlbezirkArt.UWB, "nummer1", szg, 1, 2, 3)); + unitUnderTest.save(new Wahlbezirk(WahlbezirkArt.UWB, "nummer2", szg, 1, 2, 3)); + + val result = unitUnderTest.findWahlbezirkeWithStimmzettelgebietAndWahlAndWahltagByID(wahlbezirkToFind.getId()); + + Assertions.assertThat(result).containsOnly(wahlbezirkToFind); + } + } + +} From 905f024cdaf29f42aeebb0af24f48b8d3d4a8196 Mon Sep 17 00:00:00 2001 From: MrSebastian <13592751+MrSebastian@users.noreply.github.com> Date: Thu, 4 Jul 2024 18:03:09 +0200 Subject: [PATCH 45/58] =?UTF-8?q?=F0=9F=9A=A7=20got=20MicroServiceApplicat?= =?UTF-8?q?ionDummyDataIntegrationTest=20running=20but=20profiles=20are=20?= =?UTF-8?q?not=20good?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../MicroServiceApplicationDummyDataIntegrationTest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/MicroServiceApplicationDummyDataIntegrationTest.java b/wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/MicroServiceApplicationDummyDataIntegrationTest.java index dee088642..186c49875 100644 --- a/wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/MicroServiceApplicationDummyDataIntegrationTest.java +++ b/wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/MicroServiceApplicationDummyDataIntegrationTest.java @@ -7,8 +7,8 @@ import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.ActiveProfiles; -@SpringBootTest(classes = MicroServiceApplication.class) -@ActiveProfiles({ TestConstants.SPRING_TEST_PROFILE, TestConstants.SPRING_NO_SECURITY_PROFILE, "db-h2", "db-dummydata" }) +@SpringBootTest(classes = MicroServiceApplication.class, properties = "spring.datasource.url=jdbc:h2:mem:wls-eai-service-dummydata") +@ActiveProfiles({ "local", "db-oracle", "db-h2", "no-security", "db-dummydata" }) class MicroServiceApplicationDummyDataIntegrationTest { @Autowired From 590b8ee41e8c0c2df61e2c2b884718987370b03d Mon Sep 17 00:00:00 2001 From: MrSebastian <13592751+MrSebastian@users.noreply.github.com> Date: Thu, 4 Jul 2024 18:07:29 +0200 Subject: [PATCH 46/58] profiles optimized --- .../MicroServiceApplicationDummyDataIntegrationTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/MicroServiceApplicationDummyDataIntegrationTest.java b/wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/MicroServiceApplicationDummyDataIntegrationTest.java index 186c49875..054270962 100644 --- a/wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/MicroServiceApplicationDummyDataIntegrationTest.java +++ b/wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/MicroServiceApplicationDummyDataIntegrationTest.java @@ -8,7 +8,7 @@ import org.springframework.test.context.ActiveProfiles; @SpringBootTest(classes = MicroServiceApplication.class, properties = "spring.datasource.url=jdbc:h2:mem:wls-eai-service-dummydata") -@ActiveProfiles({ "local", "db-oracle", "db-h2", "no-security", "db-dummydata" }) +@ActiveProfiles({ "db-h2", "db-dummydata" }) class MicroServiceApplicationDummyDataIntegrationTest { @Autowired From 4d069218a6f0a5f0b8f9ab36956922e6dc1f0da9 Mon Sep 17 00:00:00 2001 From: MrSebastian <13592751+MrSebastian@users.noreply.github.com> Date: Fri, 5 Jul 2024 14:31:37 +0200 Subject: [PATCH 47/58] fix typo --- .../eaiservice/domain/wahldaten/Stimmzettelgebiet.java | 2 +- .../rest/wahldaten/dto/StimmzettelgebietDTO.java | 2 +- .../h2/V3_2_1__stimmzettelgebietTestdaten.sql | 8 ++++---- .../oracle/V3_2_1__stimmzettelgebietTestdaten.sql | 8 ++++---- .../db/migrations/h2/V3_2__createStimmzettelgebiet.sql | 10 +++++----- .../oracle/V3_2__createStimmzettelgebiet.sql | 10 +++++----- 6 files changed, 20 insertions(+), 20 deletions(-) diff --git a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/Stimmzettelgebiet.java b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/Stimmzettelgebiet.java index bcc6186cb..113b5d8c0 100644 --- a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/Stimmzettelgebiet.java +++ b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/Stimmzettelgebiet.java @@ -32,7 +32,7 @@ public class Stimmzettelgebiet extends BaseEntity { @NotNull @Enumerated(EnumType.STRING) @ToString.Include - private Stimmzettelgebietsart stimmzettelgebietart; + private Stimmzettelgebietsart stimmzettelgebietsart; @NotNull @ManyToOne diff --git a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/rest/wahldaten/dto/StimmzettelgebietDTO.java b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/rest/wahldaten/dto/StimmzettelgebietDTO.java index 05854f086..3c9c73826 100644 --- a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/rest/wahldaten/dto/StimmzettelgebietDTO.java +++ b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/rest/wahldaten/dto/StimmzettelgebietDTO.java @@ -9,5 +9,5 @@ public record StimmzettelgebietDTO(String identifikator, String nummer, String name, LocalDate wahltag, - @NotNull StimmzettelgebietsartDTO stimmzettelgebietart) { + @NotNull StimmzettelgebietsartDTO stimmzettelgebietsart) { } diff --git a/wls-eai-service/src/main/resources/db/dummydata/h2/V3_2_1__stimmzettelgebietTestdaten.sql b/wls-eai-service/src/main/resources/db/dummydata/h2/V3_2_1__stimmzettelgebietTestdaten.sql index 8178c5767..57064c2c1 100644 --- a/wls-eai-service/src/main/resources/db/dummydata/h2/V3_2_1__stimmzettelgebietTestdaten.sql +++ b/wls-eai-service/src/main/resources/db/dummydata/h2/V3_2_1__stimmzettelgebietTestdaten.sql @@ -1,12 +1,12 @@ -INSERT INTO stimmzettelgebiet (id, nummer, name, stimmzettelgebietart, wahlID) +INSERT INTO stimmzettelgebiet (id, nummer, name, stimmzettelgebietsart, wahlID) values ('00000000-0000-0000-0000-000000000001', '101', 'Stimmzettelgebiet 101', 'SK', '00000000-0000-0000-0000-000000000001'); -INSERT INTO stimmzettelgebiet (id, nummer, name, stimmzettelgebietart, wahlID) +INSERT INTO stimmzettelgebiet (id, nummer, name, stimmzettelgebietsart, wahlID) values ('00000000-0000-0000-0000-000000000002', '102', 'Stimmzettelgebiet 102', 'SK', '00000000-0000-0000-0000-000000000001'); -INSERT INTO stimmzettelgebiet (id, nummer, name, stimmzettelgebietart, wahlID) +INSERT INTO stimmzettelgebiet (id, nummer, name, stimmzettelgebietsart, wahlID) values ('00000000-0000-0000-0000-000000000003', '103', 'Stimmzettelgebiet 103', 'SK', '00000000-0000-0000-0000-000000000001'); -INSERT INTO stimmzettelgebiet (id, nummer, name, stimmzettelgebietart, wahlID) +INSERT INTO stimmzettelgebiet (id, nummer, name, stimmzettelgebietsart, wahlID) values ('00000000-0000-0000-0000-000000000004', '104', 'Stimmzettelgebiet 104', 'SK', '00000000-0000-0000-0000-000000000001'); diff --git a/wls-eai-service/src/main/resources/db/dummydata/oracle/V3_2_1__stimmzettelgebietTestdaten.sql b/wls-eai-service/src/main/resources/db/dummydata/oracle/V3_2_1__stimmzettelgebietTestdaten.sql index 8178c5767..57064c2c1 100644 --- a/wls-eai-service/src/main/resources/db/dummydata/oracle/V3_2_1__stimmzettelgebietTestdaten.sql +++ b/wls-eai-service/src/main/resources/db/dummydata/oracle/V3_2_1__stimmzettelgebietTestdaten.sql @@ -1,12 +1,12 @@ -INSERT INTO stimmzettelgebiet (id, nummer, name, stimmzettelgebietart, wahlID) +INSERT INTO stimmzettelgebiet (id, nummer, name, stimmzettelgebietsart, wahlID) values ('00000000-0000-0000-0000-000000000001', '101', 'Stimmzettelgebiet 101', 'SK', '00000000-0000-0000-0000-000000000001'); -INSERT INTO stimmzettelgebiet (id, nummer, name, stimmzettelgebietart, wahlID) +INSERT INTO stimmzettelgebiet (id, nummer, name, stimmzettelgebietsart, wahlID) values ('00000000-0000-0000-0000-000000000002', '102', 'Stimmzettelgebiet 102', 'SK', '00000000-0000-0000-0000-000000000001'); -INSERT INTO stimmzettelgebiet (id, nummer, name, stimmzettelgebietart, wahlID) +INSERT INTO stimmzettelgebiet (id, nummer, name, stimmzettelgebietsart, wahlID) values ('00000000-0000-0000-0000-000000000003', '103', 'Stimmzettelgebiet 103', 'SK', '00000000-0000-0000-0000-000000000001'); -INSERT INTO stimmzettelgebiet (id, nummer, name, stimmzettelgebietart, wahlID) +INSERT INTO stimmzettelgebiet (id, nummer, name, stimmzettelgebietsart, wahlID) values ('00000000-0000-0000-0000-000000000004', '104', 'Stimmzettelgebiet 104', 'SK', '00000000-0000-0000-0000-000000000001'); diff --git a/wls-eai-service/src/main/resources/db/migrations/h2/V3_2__createStimmzettelgebiet.sql b/wls-eai-service/src/main/resources/db/migrations/h2/V3_2__createStimmzettelgebiet.sql index 4ab1fcb2c..1306de4e6 100644 --- a/wls-eai-service/src/main/resources/db/migrations/h2/V3_2__createStimmzettelgebiet.sql +++ b/wls-eai-service/src/main/resources/db/migrations/h2/V3_2__createStimmzettelgebiet.sql @@ -1,11 +1,11 @@ CREATE TABLE stimmzettelgebiet ( - id VARCHAR2(36) NOT NULL, - nummer VARCHAR2(36), - name VARCHAR2(100), - stimmzettelgebietart VARCHAR2(3) NOT NULL, + id VARCHAR2(36) NOT NULL, + nummer VARCHAR2(36), + name VARCHAR2(100), + stimmzettelgebietsart VARCHAR2(3) NOT NULL, - wahlID VARCHAR2(36) NOT NULL, + wahlID VARCHAR2(36) NOT NULL, FOREIGN KEY (wahlID) REFERENCES wahl (id), diff --git a/wls-eai-service/src/main/resources/db/migrations/oracle/V3_2__createStimmzettelgebiet.sql b/wls-eai-service/src/main/resources/db/migrations/oracle/V3_2__createStimmzettelgebiet.sql index 4ab1fcb2c..1306de4e6 100644 --- a/wls-eai-service/src/main/resources/db/migrations/oracle/V3_2__createStimmzettelgebiet.sql +++ b/wls-eai-service/src/main/resources/db/migrations/oracle/V3_2__createStimmzettelgebiet.sql @@ -1,11 +1,11 @@ CREATE TABLE stimmzettelgebiet ( - id VARCHAR2(36) NOT NULL, - nummer VARCHAR2(36), - name VARCHAR2(100), - stimmzettelgebietart VARCHAR2(3) NOT NULL, + id VARCHAR2(36) NOT NULL, + nummer VARCHAR2(36), + name VARCHAR2(100), + stimmzettelgebietsart VARCHAR2(3) NOT NULL, - wahlID VARCHAR2(36) NOT NULL, + wahlID VARCHAR2(36) NOT NULL, FOREIGN KEY (wahlID) REFERENCES wahl (id), From 59fa888875fbbdf5907f531d462df9e40548d293 Mon Sep 17 00:00:00 2001 From: MrSebastian <13592751+MrSebastian@users.noreply.github.com> Date: Fri, 5 Jul 2024 14:34:58 +0200 Subject: [PATCH 48/58] add missing toString annotations --- .../eaiservice/domain/wahldaten/Stimmzettelgebiet.java | 2 +- .../wahllokalsystem/eaiservice/domain/wahldaten/Wahl.java | 4 +++- .../eaiservice/domain/wahldaten/Wahlbezirk.java | 7 ++++++- .../eaiservice/domain/wahldaten/Wahltag.java | 2 +- 4 files changed, 11 insertions(+), 4 deletions(-) diff --git a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/Stimmzettelgebiet.java b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/Stimmzettelgebiet.java index 113b5d8c0..f3d767b22 100644 --- a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/Stimmzettelgebiet.java +++ b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/Stimmzettelgebiet.java @@ -18,7 +18,7 @@ @Getter @Setter @EqualsAndHashCode(callSuper = true) -@ToString(onlyExplicitlyIncluded = true) +@ToString(onlyExplicitlyIncluded = true, callSuper = true) @NoArgsConstructor @AllArgsConstructor public class Stimmzettelgebiet extends BaseEntity { diff --git a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/Wahl.java b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/Wahl.java index 32be70b35..ce7e66e34 100644 --- a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/Wahl.java +++ b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/Wahl.java @@ -18,15 +18,17 @@ @Getter @Setter @EqualsAndHashCode(callSuper = true) -@ToString(onlyExplicitlyIncluded = true) +@ToString(onlyExplicitlyIncluded = true, callSuper = true) @NoArgsConstructor @AllArgsConstructor public class Wahl extends BaseEntity { @NotNull + @ToString.Include private String name; @NotNull + @ToString.Include @Enumerated(EnumType.STRING) private Wahlart wahlart; diff --git a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/Wahlbezirk.java b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/Wahlbezirk.java index 2210f5642..4c5626461 100644 --- a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/Wahlbezirk.java +++ b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/Wahlbezirk.java @@ -18,16 +18,18 @@ @Getter @Setter @EqualsAndHashCode(callSuper = true) -@ToString(onlyExplicitlyIncluded = true) +@ToString(onlyExplicitlyIncluded = true, callSuper = true) @NoArgsConstructor @AllArgsConstructor public class Wahlbezirk extends BaseEntity { @NotNull + @ToString.Include @Enumerated(EnumType.STRING) private WahlbezirkArt wahlbezirkArt; @NotNull + @ToString.Include private String nummer; @NotNull @@ -35,9 +37,12 @@ public class Wahlbezirk extends BaseEntity { @JoinColumn(name = "stimmzettelgebietID") private Stimmzettelgebiet stimmzettelgebiet; + @ToString.Include private long a1; + @ToString.Include private long a2; + @ToString.Include private long a3; } diff --git a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/Wahltag.java b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/Wahltag.java index edd789ce8..73a90005a 100644 --- a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/Wahltag.java +++ b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/domain/wahldaten/Wahltag.java @@ -15,7 +15,7 @@ @Getter @Setter @EqualsAndHashCode(callSuper = true) -@ToString(onlyExplicitlyIncluded = true) +@ToString(onlyExplicitlyIncluded = true, callSuper = true) @NoArgsConstructor @AllArgsConstructor public class Wahltag extends BaseEntity { From af3ee06e4ecd5df4e97f718ea23f6de8cb5e4a5f Mon Sep 17 00:00:00 2001 From: MrSebastian <13592751+MrSebastian@users.noreply.github.com> Date: Fri, 5 Jul 2024 14:37:05 +0200 Subject: [PATCH 49/58] fix typo by ExceptionConstants --- .../eaiservice/exception/ExceptionConstants.java | 4 ++-- ...MissingRequestParameterExceptionDataWrapperMapper.java | 4 ++-- .../eaiservice/service/wahldaten/WahldatenValidator.java | 4 ++-- .../wahldaten/WahldatenControllerIntegrationTest.java | 8 ++++---- .../service/wahldaten/WahldatenValidatorTest.java | 4 ++-- 5 files changed, 12 insertions(+), 12 deletions(-) diff --git a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/exception/ExceptionConstants.java b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/exception/ExceptionConstants.java index ef57646b7..61c5cc511 100644 --- a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/exception/ExceptionConstants.java +++ b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/exception/ExceptionConstants.java @@ -16,8 +16,8 @@ public class ExceptionConstants { public static final ExceptionDataWrapper LOADWAHLTAGE_TAG_FEHLT = new ExceptionDataWrapper("001", "Es ist kein Tag definiert"); //loadWahlbezirke - public static final ExceptionDataWrapper LOADWAHLEBZIRKE_WAHLTAG_FEHLT = new ExceptionDataWrapper("001", "Es ist kein Wahltag angegeben"); - public static final ExceptionDataWrapper LOADWAHLEBZIRKE_NUMMER_FEHLT = new ExceptionDataWrapper("001_1", "Es ist keine Wahltag-Nummer angegeben"); + public static final ExceptionDataWrapper LOADWAHLBEZIRKE_WAHLTAG_FEHLT = new ExceptionDataWrapper("001", "Es ist kein Wahltag angegeben"); + public static final ExceptionDataWrapper LOADWAHLBEZIRKE_NUMMER_FEHLT = new ExceptionDataWrapper("001_1", "Es ist keine Wahltag-Nummer angegeben"); //loadWahlen public static final ExceptionDataWrapper LOADWAHLEN_WAHLTAG_FEHLT = new ExceptionDataWrapper("001", "Es ist kein Wahltag angegeben"); diff --git a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/exception/MissingRequestParameterExceptionDataWrapperMapper.java b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/exception/MissingRequestParameterExceptionDataWrapperMapper.java index c6abbda01..68903c1d0 100644 --- a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/exception/MissingRequestParameterExceptionDataWrapperMapper.java +++ b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/exception/MissingRequestParameterExceptionDataWrapperMapper.java @@ -20,8 +20,8 @@ public class MissingRequestParameterExceptionDataWrapperMapper { { addExceptionDataWrapper("includingSince", WAHLDATEN_SERVLET_PATH + "/wahltage", ExceptionConstants.LOADWAHLTAGE_TAG_FEHLT); - addExceptionDataWrapper("forDate", WAHLDATEN_SERVLET_PATH + "/wahlbezirk", ExceptionConstants.LOADWAHLEBZIRKE_WAHLTAG_FEHLT); - addExceptionDataWrapper("withNummer", WAHLDATEN_SERVLET_PATH + "/wahlbezirk", ExceptionConstants.LOADWAHLEBZIRKE_NUMMER_FEHLT); + addExceptionDataWrapper("forDate", WAHLDATEN_SERVLET_PATH + "/wahlbezirk", ExceptionConstants.LOADWAHLBEZIRKE_WAHLTAG_FEHLT); + addExceptionDataWrapper("withNummer", WAHLDATEN_SERVLET_PATH + "/wahlbezirk", ExceptionConstants.LOADWAHLBEZIRKE_NUMMER_FEHLT); addExceptionDataWrapper("forDate", WAHLDATEN_SERVLET_PATH + "/wahlen", ExceptionConstants.LOADWAHLEN_WAHLTAG_FEHLT); addExceptionDataWrapper("withNummer", WAHLDATEN_SERVLET_PATH + "/wahlen", ExceptionConstants.LOADWAHLEN_NUMMER_FEHLT); addExceptionDataWrapper("forDate", WAHLDATEN_SERVLET_PATH + "/basisdaten", ExceptionConstants.LOADBASISDATEN_TAG_FEHLT); diff --git a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahldaten/WahldatenValidator.java b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahldaten/WahldatenValidator.java index 9b948b650..437a50b3a 100644 --- a/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahldaten/WahldatenValidator.java +++ b/wls-eai-service/src/main/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahldaten/WahldatenValidator.java @@ -31,11 +31,11 @@ public void validGetWahlenParameterOrThrow(final LocalDate wahltag, final String public void validGetWahlbezirkeParameterOrThrow(final LocalDate wahltag, final String nummer) { if (wahltag == null) { - throw exceptionFactory.createFachlicheWlsException(ExceptionConstants.LOADWAHLEBZIRKE_WAHLTAG_FEHLT); + throw exceptionFactory.createFachlicheWlsException(ExceptionConstants.LOADWAHLBEZIRKE_WAHLTAG_FEHLT); } if (nummer == null) { - throw exceptionFactory.createFachlicheWlsException(ExceptionConstants.LOADWAHLEBZIRKE_NUMMER_FEHLT); + throw exceptionFactory.createFachlicheWlsException(ExceptionConstants.LOADWAHLBEZIRKE_NUMMER_FEHLT); } } diff --git a/wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/rest/wahldaten/WahldatenControllerIntegrationTest.java b/wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/rest/wahldaten/WahldatenControllerIntegrationTest.java index 651812b14..06e24d831 100644 --- a/wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/rest/wahldaten/WahldatenControllerIntegrationTest.java +++ b/wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/rest/wahldaten/WahldatenControllerIntegrationTest.java @@ -235,8 +235,8 @@ void wlsExceptionOnNummerQueryParameterIsMissing() throws Exception { val responseBodyAsWlsException = objectMapper.readValue(response.getResponse().getContentAsString(StandardCharsets.UTF_8), WlsExceptionDTO.class); val expectedWlsExceptionDTO = new WlsExceptionDTO(WlsExceptionCategory.F, - ExceptionConstants.LOADWAHLEBZIRKE_NUMMER_FEHLT.code(), serviceID, - ExceptionConstants.LOADWAHLEBZIRKE_NUMMER_FEHLT.message()); + ExceptionConstants.LOADWAHLBEZIRKE_NUMMER_FEHLT.code(), serviceID, + ExceptionConstants.LOADWAHLBEZIRKE_NUMMER_FEHLT.message()); Assertions.assertThat(responseBodyAsWlsException).isEqualTo(expectedWlsExceptionDTO); } @@ -250,8 +250,8 @@ void wlsExceptionOnDateQueryParameterIsMissing() throws Exception { val responseBodyAsWlsException = objectMapper.readValue(response.getResponse().getContentAsString(StandardCharsets.UTF_8), WlsExceptionDTO.class); val expectedWlsExceptionDTO = new WlsExceptionDTO(WlsExceptionCategory.F, - ExceptionConstants.LOADWAHLEBZIRKE_WAHLTAG_FEHLT.code(), serviceID, - ExceptionConstants.LOADWAHLEBZIRKE_WAHLTAG_FEHLT.message()); + ExceptionConstants.LOADWAHLBEZIRKE_WAHLTAG_FEHLT.code(), serviceID, + ExceptionConstants.LOADWAHLBEZIRKE_WAHLTAG_FEHLT.message()); Assertions.assertThat(responseBodyAsWlsException).isEqualTo(expectedWlsExceptionDTO); } diff --git a/wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahldaten/WahldatenValidatorTest.java b/wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahldaten/WahldatenValidatorTest.java index b05fab1b4..c5129cfeb 100644 --- a/wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahldaten/WahldatenValidatorTest.java +++ b/wls-eai-service/src/test/java/de/muenchen/oss/wahllokalsystem/eaiservice/service/wahldaten/WahldatenValidatorTest.java @@ -81,7 +81,7 @@ void noExceptionWhenGetWahlbezirkeParameterAreValid() { void exceptionWhenWahltagIsNull() { val mockedWlsException = FachlicheWlsException.withCode("").buildWithMessage(""); - Mockito.when(exceptionFactory.createFachlicheWlsException(ExceptionConstants.LOADWAHLEBZIRKE_WAHLTAG_FEHLT)).thenReturn(mockedWlsException); + Mockito.when(exceptionFactory.createFachlicheWlsException(ExceptionConstants.LOADWAHLBEZIRKE_WAHLTAG_FEHLT)).thenReturn(mockedWlsException); Assertions.assertThatException().isThrownBy(() -> unitUnderTest.validGetWahlbezirkeParameterOrThrow(null, "")).isSameAs(mockedWlsException); } @@ -90,7 +90,7 @@ void exceptionWhenWahltagIsNull() { void exceptionWhenNummerIsNull() { val mockedWlsException = FachlicheWlsException.withCode("").buildWithMessage(""); - Mockito.when(exceptionFactory.createFachlicheWlsException(ExceptionConstants.LOADWAHLEBZIRKE_NUMMER_FEHLT)).thenReturn(mockedWlsException); + Mockito.when(exceptionFactory.createFachlicheWlsException(ExceptionConstants.LOADWAHLBEZIRKE_NUMMER_FEHLT)).thenReturn(mockedWlsException); Assertions.assertThatException().isThrownBy(() -> unitUnderTest.validGetWahlbezirkeParameterOrThrow(LocalDate.now(), null)) .isSameAs(mockedWlsException); From 92c8e4bbe888867761243484948e0bd17c5484dd Mon Sep 17 00:00:00 2001 From: MrSebastian <13592751+MrSebastian@users.noreply.github.com> Date: Fri, 5 Jul 2024 14:42:44 +0200 Subject: [PATCH 50/58] add missing keycloak file for eai wahldaten --- stack/keycloak/migration/keycloak-changelog.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/stack/keycloak/migration/keycloak-changelog.yml b/stack/keycloak/migration/keycloak-changelog.yml index 31513aef6..9dbceacbb 100644 --- a/stack/keycloak/migration/keycloak-changelog.yml +++ b/stack/keycloak/migration/keycloak-changelog.yml @@ -30,4 +30,5 @@ includes: - path: add-authorities-eai-wahlvorstand.yml - path: add-authorities-wahlvorbereitung-briefwahlvorbereitung.yml - path: create-group-all-basisdaten-authorities.yml - - path: add-authorities-basisdaten-wahlvorschlaege.yml \ No newline at end of file + - path: add-authorities-basisdaten-wahlvorschlaege.yml + - path: add-authorities-eai-wahldaten.yml \ No newline at end of file From 162e8c3347ba6dd89c80c9145a9fc87b73943964 Mon Sep 17 00:00:00 2001 From: MrSebastian <13592751+MrSebastian@users.noreply.github.com> Date: Fri, 5 Jul 2024 14:42:57 +0200 Subject: [PATCH 51/58] add Authorization header to requests --- .../test/resources/httpRequests/wahldaten.http | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/wls-eai-service/src/test/resources/httpRequests/wahldaten.http b/wls-eai-service/src/test/resources/httpRequests/wahldaten.http index d840fde13..6d3d8695c 100644 --- a/wls-eai-service/src/test/resources/httpRequests/wahldaten.http +++ b/wls-eai-service/src/test/resources/httpRequests/wahldaten.http @@ -19,45 +19,60 @@ Authorization: {{ token_type }} {{ auth_token }} ### get Wahltag EU-Wahl GET {{ WLS_EAI_SERVICE_URL }}/wahldaten/wahltage?includingSince=2024-01-01 +Authorization: {{ token_type }} {{ auth_token }} ### get Wahltag since 2000 GET {{ WLS_EAI_SERVICE_URL }}/wahldaten/wahltage?includingSince=2000-01-01 +Authorization: {{ token_type }} {{ auth_token }} ### get Wahltag no hits GET {{ WLS_EAI_SERVICE_URL }}/wahldaten/wahltage?includingSince=3024-01-01 +Authorization: {{ token_type }} {{ auth_token }} ### get wahlen on EU-Wahl-Tag GET {{ WLS_EAI_SERVICE_URL }}/wahldaten/wahlen?forDate=2024-06-09&withNummer=0 +Authorization: {{ token_type }} {{ auth_token }} ### get wahlen on Kommunalwahl-Tag GET {{ WLS_EAI_SERVICE_URL }}/wahldaten/wahlen?forDate=2020-03-15&withNummer=0 +Authorization: {{ token_type }} {{ auth_token }} ### get wahlen on day without elections GET {{ WLS_EAI_SERVICE_URL }}/wahldaten/wahlen?forDate=2034-06-09&withNummer=0 +Authorization: {{ token_type }} {{ auth_token }} ### get wahlbezirke EU-Wahl GET {{ WLS_EAI_SERVICE_URL }}/wahldaten/wahlbezirk?forDate=2024-06-09&withNummer=0 +Authorization: {{ token_type }} {{ auth_token }} ### get wahlbezirke Kommunalwahl (empty response) GET {{ WLS_EAI_SERVICE_URL }}/wahldaten/wahlbezirk?forDate=2020-03-15&withNummer=0 +Authorization: {{ token_type }} {{ auth_token }} ### get wahlberechtigte wahlbezirk-1 GET {{ WLS_EAI_SERVICE_URL }}/wahldaten/wahlbezirke/00000000-0000-0000-0000-000000000001/wahlberechtigte +Authorization: {{ token_type }} {{ auth_token }} ### get wahlberechtigte wahlbezirk-2 GET {{ WLS_EAI_SERVICE_URL }}/wahldaten/wahlbezirke/00000000-0000-0000-0000-000000000002/wahlberechtigte +Authorization: {{ token_type }} {{ auth_token }} ### get wahlberechtigte wahlbezirk-3 GET {{ WLS_EAI_SERVICE_URL }}/wahldaten/wahlbezirke/00000000-0000-0000-0000-000000000003/wahlberechtigte +Authorization: {{ token_type }} {{ auth_token }} ### get wahlberechtigte wahlbezirk-4 GET {{ WLS_EAI_SERVICE_URL }}/wahldaten/wahlbezirke/00000000-0000-0000-0000-000000000004/wahlberechtigte +Authorization: {{ token_type }} {{ auth_token }} ### get Basistrukturdaten on EU-Wahl-Tag GET {{ WLS_EAI_SERVICE_URL }}/wahldaten/basisdaten?forDate=2024-06-09&withNummer=0 +Authorization: {{ token_type }} {{ auth_token }} ### get Basistrukturdaten on Kommunalwahl-Tag GET {{ WLS_EAI_SERVICE_URL }}/wahldaten/basisdaten?forDate=2020-03-15&withNummer=0 +Authorization: {{ token_type }} {{ auth_token }} ### get Basistrukturdaten on day without elections -GET {{ WLS_EAI_SERVICE_URL }}/wahldaten/basisdaten?forDate=2034-06-09&withNummer=0 \ No newline at end of file +GET {{ WLS_EAI_SERVICE_URL }}/wahldaten/basisdaten?forDate=2034-06-09&withNummer=0 +Authorization: {{ token_type }} {{ auth_token }} \ No newline at end of file From f754eeea9e945615ce96936e2d5dd33bc43ee209 Mon Sep 17 00:00:00 2001 From: MrSebastian <13592751+MrSebastian@users.noreply.github.com> Date: Tue, 9 Jul 2024 12:54:01 +0200 Subject: [PATCH 52/58] update wahlvorschlaege testdaten --- .../db/dummydata/h2/V3_1_1__wahlTestdaten.sql | 5 +- .../h2/V3_2_1__stimmzettelgebietTestdaten.sql | 4 + .../h2/V3_3_1__wahlbezirkTestdaten.sql | 4 + ...ldWahlvorschlaegeAndReferendumvorlagen.sql | 8 + .../V3_5_2__createWahlvorschlaegeListen.sql | 7 + ...eateWahlvorschlaegeAndKandidatenEUWahl.sql | 321 ++++++++++++++++++ .../h2/V3_5_4__createReferendumVorlagenVE.sql | 45 +++ .../oracle/V3_1_1__wahlTestdaten.sql | 5 +- .../V3_2_1__stimmzettelgebietTestdaten.sql | 4 + .../oracle/V3_3_1__wahlbezirkTestdaten.sql | 4 + ...ldWahlvorschlaegeAndReferendumvorlagen.sql | 8 + .../V3_5_2__createWahlvorschlaegeListen.sql | 7 + ...eateWahlvorschlaegeAndKandidatenEUWahl.sql | 321 ++++++++++++++++++ .../V3_5_4__createReferendumVorlagenVE.sql | 45 +++ .../V3_6__addFKContraintsToWahlvorschlag.sql | 18 + .../V3_6__addFKContraintsToWahlvorschlag.sql | 18 + 16 files changed, 822 insertions(+), 2 deletions(-) create mode 100644 wls-eai-service/src/main/resources/db/dummydata/h2/V3_5_1__cleanOldWahlvorschlaegeAndReferendumvorlagen.sql create mode 100644 wls-eai-service/src/main/resources/db/dummydata/h2/V3_5_2__createWahlvorschlaegeListen.sql create mode 100644 wls-eai-service/src/main/resources/db/dummydata/h2/V3_5_3__createWahlvorschlaegeAndKandidatenEUWahl.sql create mode 100644 wls-eai-service/src/main/resources/db/dummydata/h2/V3_5_4__createReferendumVorlagenVE.sql create mode 100644 wls-eai-service/src/main/resources/db/dummydata/oracle/V3_5_1__cleanOldWahlvorschlaegeAndReferendumvorlagen.sql create mode 100644 wls-eai-service/src/main/resources/db/dummydata/oracle/V3_5_2__createWahlvorschlaegeListen.sql create mode 100644 wls-eai-service/src/main/resources/db/dummydata/oracle/V3_5_3__createWahlvorschlaegeAndKandidatenEUWahl.sql create mode 100644 wls-eai-service/src/main/resources/db/dummydata/oracle/V3_5_4__createReferendumVorlagenVE.sql create mode 100644 wls-eai-service/src/main/resources/db/migrations/h2/V3_6__addFKContraintsToWahlvorschlag.sql create mode 100644 wls-eai-service/src/main/resources/db/migrations/oracle/V3_6__addFKContraintsToWahlvorschlag.sql diff --git a/wls-eai-service/src/main/resources/db/dummydata/h2/V3_1_1__wahlTestdaten.sql b/wls-eai-service/src/main/resources/db/dummydata/h2/V3_1_1__wahlTestdaten.sql index 60699baed..6c665d0b2 100644 --- a/wls-eai-service/src/main/resources/db/dummydata/h2/V3_1_1__wahlTestdaten.sql +++ b/wls-eai-service/src/main/resources/db/dummydata/h2/V3_1_1__wahlTestdaten.sql @@ -7,4 +7,7 @@ INSERT INTO wahl (id, name, wahlart, wahltagID) values ('00000000-0000-0000-0000-000000000003', 'Oberbürgermeisterwahl', 'OBW', '00000000-0000-0000-0000-000000000002'); INSERT INTO wahl (id, name, wahlart, wahltagID) values ('00000000-0000-0000-0000-000000000004', 'Bezirksausschusswahl', 'BAW', - '00000000-0000-0000-0000-000000000002'); \ No newline at end of file + '00000000-0000-0000-0000-000000000002'); + +INSERT INTO wahl (id, name, wahlart, wahltagID) +values ('00000000-0000-0000-0000-000000000005', 'Volksentscheid', 'VE', '00000000-0000-0000-0000-000000000001'); \ No newline at end of file diff --git a/wls-eai-service/src/main/resources/db/dummydata/h2/V3_2_1__stimmzettelgebietTestdaten.sql b/wls-eai-service/src/main/resources/db/dummydata/h2/V3_2_1__stimmzettelgebietTestdaten.sql index 57064c2c1..0978db3d3 100644 --- a/wls-eai-service/src/main/resources/db/dummydata/h2/V3_2_1__stimmzettelgebietTestdaten.sql +++ b/wls-eai-service/src/main/resources/db/dummydata/h2/V3_2_1__stimmzettelgebietTestdaten.sql @@ -10,3 +10,7 @@ values ('00000000-0000-0000-0000-000000000003', '103', 'Stimmzettelgebiet 103', INSERT INTO stimmzettelgebiet (id, nummer, name, stimmzettelgebietsart, wahlID) values ('00000000-0000-0000-0000-000000000004', '104', 'Stimmzettelgebiet 104', 'SK', '00000000-0000-0000-0000-000000000001'); + +INSERT INTO stimmzettelgebiet (id, nummer, name, stimmzettelgebietsart, wahlID) +values ('00000000-0000-0000-0000-000000000005', '101', 'VE-SZG-1', 'SK', + '00000000-0000-0000-0000-000000000005'); diff --git a/wls-eai-service/src/main/resources/db/dummydata/h2/V3_3_1__wahlbezirkTestdaten.sql b/wls-eai-service/src/main/resources/db/dummydata/h2/V3_3_1__wahlbezirkTestdaten.sql index 27d8cc2b1..bef72b808 100644 --- a/wls-eai-service/src/main/resources/db/dummydata/h2/V3_3_1__wahlbezirkTestdaten.sql +++ b/wls-eai-service/src/main/resources/db/dummydata/h2/V3_3_1__wahlbezirkTestdaten.sql @@ -12,4 +12,8 @@ values ('00000000-0000-0000-0000-000000000003', 'BWB', 'Wahlbezirk 3', '00000000 INSERT INTO wahlbezirk (id, wahlbezirkArt, nummer, stimmzettelgebietID, a1, a2, a3) values ('00000000-0000-0000-0000-000000000004', 'UWB', 'Wahlbezirk 4', '00000000-0000-0000-0000-000000000004', 42, 5, + 3); + +INSERT INTO wahlbezirk (id, wahlbezirkArt, nummer, stimmzettelgebietID, a1, a2, a3) +values ('00000000-0000-0000-0000-000000000005', 'UWB', 'Wahlbezirk 4', '00000000-0000-0000-0000-000000000005', 42, 5, 3); \ No newline at end of file diff --git a/wls-eai-service/src/main/resources/db/dummydata/h2/V3_5_1__cleanOldWahlvorschlaegeAndReferendumvorlagen.sql b/wls-eai-service/src/main/resources/db/dummydata/h2/V3_5_1__cleanOldWahlvorschlaegeAndReferendumvorlagen.sql new file mode 100644 index 000000000..27130a68a --- /dev/null +++ b/wls-eai-service/src/main/resources/db/dummydata/h2/V3_5_1__cleanOldWahlvorschlaegeAndReferendumvorlagen.sql @@ -0,0 +1,8 @@ +DELETE kandidat; +DELETE wahlvorschlag; +DELETE wahlvorschlaege; +DELETE wahlvorschlaegeliste; + +DELETE referendumoption; +DELETE referendumvorlage; +DELETE referendumvorlagen; \ No newline at end of file diff --git a/wls-eai-service/src/main/resources/db/dummydata/h2/V3_5_2__createWahlvorschlaegeListen.sql b/wls-eai-service/src/main/resources/db/dummydata/h2/V3_5_2__createWahlvorschlaegeListen.sql new file mode 100644 index 000000000..a6891c64e --- /dev/null +++ b/wls-eai-service/src/main/resources/db/dummydata/h2/V3_5_2__createWahlvorschlaegeListen.sql @@ -0,0 +1,7 @@ +-- für EU-Wahl +INSERT INTO wahlvorschlaegeliste (id, wahltag, wahlID) +VALUES ('00000001-0000-0000-0000-000000000001', '2024-06-09', '00000000-0000-0000-0000-000000000001'); + +-- für VE +INSERT INTO wahlvorschlaegeliste (id, wahltag, wahlID) +VALUES ('00000001-0000-0000-0000-000000000002', '2024-06-09', '00000000-0000-0000-0000-000000000005'); \ No newline at end of file diff --git a/wls-eai-service/src/main/resources/db/dummydata/h2/V3_5_3__createWahlvorschlaegeAndKandidatenEUWahl.sql b/wls-eai-service/src/main/resources/db/dummydata/h2/V3_5_3__createWahlvorschlaegeAndKandidatenEUWahl.sql new file mode 100644 index 000000000..0ae03276f --- /dev/null +++ b/wls-eai-service/src/main/resources/db/dummydata/h2/V3_5_3__createWahlvorschlaegeAndKandidatenEUWahl.sql @@ -0,0 +1,321 @@ +-- ######################### +-- ## für EU-Wahl +-- ######################### +-- ## Wahlbezirk1 - +-- ######################### +INSERT INTO wahlvorschlaege (id, wahlbezirkID, wahlID, stimmzettelgebietID, wahlvorschlaegelisteID) +VALUES ('00000000-0000-0000-0000-000000000001', '00000000-0000-0000-0000-000000000001', + '00000000-0000-0000-0000-000000000001', '00000000-0000-0000-0000-000000000001', + '00000001-0000-0000-0000-000000000001'); + +INSERT INTO wahlvorschlag (id, ordnungszahl, kurzname, erhaeltStimmen, wahlvorschlaegeID) +VALUES ('00000000-0000-0000-0001-000000000001', 1, 'Die Besten', true, + '00000000-0000-0000-0000-000000000001'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000001', 'Clapton', 1, false, 10, false, + '00000000-0000-0000-0001-000000000001'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000002', 'Jagger', 2, false, 11, false, + '00000000-0000-0000-0001-000000000001'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000003', 'Prince', 3, false, 15, false, + '00000000-0000-0000-0001-000000000001'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000004', 'Mac', 4, false, 16, true, + '00000000-0000-0000-0001-000000000001'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000005', 'Cool', 5, true, 25, true, + '00000000-0000-0000-0001-000000000001'); + +INSERT INTO wahlvorschlag (id, ordnungszahl, kurzname, erhaeltStimmen, wahlvorschlaegeID) +VALUES ('00000000-0000-0000-0001-000000000002', 2, 'Die Zweitbesten', true, + '00000000-0000-0000-0000-000000000001'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000006', 'Bush', 1, false, 10, false, + '00000000-0000-0000-0001-000000000002'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000007', 'Clinton', 2, false, 11, false, + '00000000-0000-0000-0001-000000000002'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000008', 'Biden', 3, false, 15, false, + '00000000-0000-0000-0001-000000000002'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000009', 'Lincoln', 4, false, 16, true, + '00000000-0000-0000-0001-000000000002'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000010', 'Reagan', 5, true, 25, true, + '00000000-0000-0000-0001-000000000002'); + +INSERT INTO wahlvorschlag (id, ordnungszahl, kurzname, erhaeltStimmen, wahlvorschlaegeID) +VALUES ('00000000-0000-0000-0001-000000000003', 3, 'Die Drittbesten', true, + '00000000-0000-0000-0000-000000000001'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000011', 'Bush', 1, false, 10, false, + '00000000-0000-0000-0001-000000000003'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000012', 'Clinton', 2, false, 11, false, + '00000000-0000-0000-0001-000000000003'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000013', 'Biden', 3, false, 15, false, + '00000000-0000-0000-0001-000000000003'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000014', 'Lincoln', 4, false, 16, true, + '00000000-0000-0000-0001-000000000003'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000015', 'Reagan', 5, true, 25, true, + '00000000-0000-0000-0001-000000000003'); + +-- ######################### +-- ## Wahlbezirk2 - +-- ######################### +INSERT INTO wahlvorschlaege (id, wahlbezirkID, wahlID, stimmzettelgebietID, wahlvorschlaegelisteID) +VALUES ('00000000-0000-0000-0000-000000000002', '00000000-0000-0000-0000-000000000002', + '00000000-0000-0000-0000-000000000001', '00000000-0000-0000-0000-000000000002', + '00000001-0000-0000-0000-000000000001'); + +INSERT INTO wahlvorschlag (id, ordnungszahl, kurzname, erhaeltStimmen, wahlvorschlaegeID) +VALUES ('00000000-0000-0000-0001-000000000004', 1, 'Die Besten', true, + '00000000-0000-0000-0000-000000000002'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000016', 'Clapton', 1, false, 10, false, + '00000000-0000-0000-0001-000000000004'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000017', 'Jagger', 2, false, 11, false, + '00000000-0000-0000-0001-000000000004'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000018', 'Prince', 3, false, 15, false, + '00000000-0000-0000-0001-000000000004'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000019', 'Mac', 4, false, 16, true, + '00000000-0000-0000-0001-000000000004'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000020', 'Cool', 5, true, 25, true, + '00000000-0000-0000-0001-000000000004'); + +INSERT INTO wahlvorschlag (id, ordnungszahl, kurzname, erhaeltStimmen, wahlvorschlaegeID) +VALUES ('00000000-0000-0000-0001-000000000005', 2, 'Die Zweitbesten', true, + '00000000-0000-0000-0000-000000000002'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000021', 'Bush', 1, false, 10, false, + '00000000-0000-0000-0001-000000000005'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000022', 'Clinton', 2, false, 11, false, + '00000000-0000-0000-0001-000000000005'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000023', 'Biden', 3, false, 15, false, + '00000000-0000-0000-0001-000000000005'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000024', 'Lincoln', 4, false, 16, true, + '00000000-0000-0000-0001-000000000005'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000025', 'Reagan', 5, true, 25, true, + '00000000-0000-0000-0001-000000000005'); + +INSERT INTO wahlvorschlag (id, ordnungszahl, kurzname, erhaeltStimmen, wahlvorschlaegeID) +VALUES ('00000000-0000-0000-0001-000000000006', 3, 'Die Drittbesten', true, + '00000000-0000-0000-0000-000000000002'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000026', 'Bush', 1, false, 10, false, + '00000000-0000-0000-0001-000000000006'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000027', 'Clinton', 2, false, 11, false, + '00000000-0000-0000-0001-000000000006'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000028', 'Biden', 3, false, 15, false, + '00000000-0000-0000-0001-000000000006'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000029', 'Lincoln', 4, false, 16, true, + '00000000-0000-0000-0001-000000000006'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000030', 'Reagan', 5, true, 25, true, + '00000000-0000-0000-0001-000000000006'); + +-- ######################### +-- ## Wahlbezirk3 - +-- ######################### +INSERT INTO wahlvorschlaege (id, wahlbezirkID, wahlID, stimmzettelgebietID, wahlvorschlaegelisteID) +VALUES ('00000000-0000-0000-0000-000000000003', '00000000-0000-0000-0000-000000000003', + '00000000-0000-0000-0000-000000000001', '00000000-0000-0000-0000-000000000003', + '00000001-0000-0000-0000-000000000001'); + +INSERT INTO wahlvorschlag (id, ordnungszahl, kurzname, erhaeltStimmen, wahlvorschlaegeID) +VALUES ('00000000-0000-0000-0001-000000000007', 1, 'Die Besten', true, + '00000000-0000-0000-0000-000000000003'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000031', 'Clapton', 1, false, 10, false, + '00000000-0000-0000-0001-000000000007'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000032', 'Jagger', 2, false, 11, false, + '00000000-0000-0000-0001-000000000007'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000033', 'Prince', 3, false, 15, false, + '00000000-0000-0000-0001-000000000007'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000034', 'Mac', 4, false, 16, true, + '00000000-0000-0000-0001-000000000007'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000035', 'Cool', 5, true, 25, true, + '00000000-0000-0000-0001-000000000007'); + +INSERT INTO wahlvorschlag (id, ordnungszahl, kurzname, erhaeltStimmen, wahlvorschlaegeID) +VALUES ('00000000-0000-0000-0001-000000000008', 2, 'Die Zweitbesten', true, + '00000000-0000-0000-0000-000000000003'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000036', 'Bush', 1, false, 10, false, + '00000000-0000-0000-0001-000000000008'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000037', 'Clinton', 2, false, 11, false, + '00000000-0000-0000-0001-000000000008'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000038', 'Biden', 3, false, 15, false, + '00000000-0000-0000-0001-000000000008'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000039', 'Lincoln', 4, false, 16, true, + '00000000-0000-0000-0001-000000000008'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000040', 'Reagan', 5, true, 25, true, + '00000000-0000-0000-0001-000000000008'); + +INSERT INTO wahlvorschlag (id, ordnungszahl, kurzname, erhaeltStimmen, wahlvorschlaegeID) +VALUES ('00000000-0000-0000-0001-000000000009', 3, 'Die Drittbesten', true, + '00000000-0000-0000-0000-000000000003'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000041', 'Bush', 1, false, 10, false, + '00000000-0000-0000-0001-000000000009'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000042', 'Clinton', 2, false, 11, false, + '00000000-0000-0000-0001-000000000009'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000043', 'Biden', 3, false, 15, false, + '00000000-0000-0000-0001-000000000009'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000044', 'Lincoln', 4, false, 16, true, + '00000000-0000-0000-0001-000000000009'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000045', 'Reagan', 5, true, 25, true, + '00000000-0000-0000-0001-000000000009'); + +-- ######################### +-- ## Wahlbezirk4 - +-- ######################### +INSERT INTO wahlvorschlaege (id, wahlbezirkID, wahlID, stimmzettelgebietID, wahlvorschlaegelisteID) +VALUES ('00000000-0000-0000-0000-000000000004', '00000000-0000-0000-0000-000000000004', + '00000000-0000-0000-0000-000000000001', '00000000-0000-0000-0000-000000000004', + '00000001-0000-0000-0000-000000000001'); + +INSERT INTO wahlvorschlag (id, ordnungszahl, kurzname, erhaeltStimmen, wahlvorschlaegeID) +VALUES ('00000000-0000-0000-0001-000000000010', 1, 'Die Besten', true, + '00000000-0000-0000-0000-000000000004'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000046', 'Clapton', 1, false, 10, false, + '00000000-0000-0000-0001-000000000010'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000047', 'Jagger', 2, false, 11, false, + '00000000-0000-0000-0001-000000000010'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000048', 'Prince', 3, false, 15, false, + '00000000-0000-0000-0001-000000000010'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000049', 'Mac', 4, false, 16, true, + '00000000-0000-0000-0001-000000000010'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000050', 'Cool', 5, true, 25, true, + '00000000-0000-0000-0001-000000000010'); + +INSERT INTO wahlvorschlag (id, ordnungszahl, kurzname, erhaeltStimmen, wahlvorschlaegeID) +VALUES ('00000000-0000-0000-0001-000000000011', 2, 'Die Zweitbesten', true, + '00000000-0000-0000-0000-000000000004'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000051', 'Bush', 1, false, 10, false, + '00000000-0000-0000-0001-000000000011'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000052', 'Clinton', 2, false, 11, false, + '00000000-0000-0000-0001-000000000011'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000053', 'Biden', 3, false, 15, false, + '00000000-0000-0000-0001-000000000011'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000054', 'Lincoln', 4, false, 16, true, + '00000000-0000-0000-0001-000000000011'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000055', 'Reagan', 5, true, 25, true, + '00000000-0000-0000-0001-000000000011'); + +INSERT INTO wahlvorschlag (id, ordnungszahl, kurzname, erhaeltStimmen, wahlvorschlaegeID) +VALUES ('00000000-0000-0000-0001-000000000012', 3, 'Die Drittbesten', true, + '00000000-0000-0000-0000-000000000004'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000056', 'Bush', 1, false, 10, false, + '00000000-0000-0000-0001-000000000012'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000057', 'Clinton', 2, false, 11, false, + '00000000-0000-0000-0001-000000000012'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000058', 'Biden', 3, false, 15, false, + '00000000-0000-0000-0001-000000000012'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000059', 'Lincoln', 4, false, 16, true, + '00000000-0000-0000-0001-000000000012'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000060', 'Reagan', 5, true, 25, true, + '00000000-0000-0000-0001-000000000012'); \ No newline at end of file diff --git a/wls-eai-service/src/main/resources/db/dummydata/h2/V3_5_4__createReferendumVorlagenVE.sql b/wls-eai-service/src/main/resources/db/dummydata/h2/V3_5_4__createReferendumVorlagenVE.sql new file mode 100644 index 000000000..702b2f038 --- /dev/null +++ b/wls-eai-service/src/main/resources/db/dummydata/h2/V3_5_4__createReferendumVorlagenVE.sql @@ -0,0 +1,45 @@ +-- Referendum (VE) am Wahltermin der auch die EU-Wahl hat +INSERT INTO wahlvorschlaege (id, wahlbezirkID, wahlID, stimmzettelgebietID, wahlvorschlaegelisteID) +VALUES ('00000000-0000-0000-0000-000000000005', '00000000-0000-0000-0000-000000000005', + '00000000-0000-0000-0000-000000000005', '00000000-0000-0000-0000-000000000005', + '00000001-0000-0000-0000-000000000002'); + +INSERT INTO wahlvorschlag (id, ordnungszahl, kurzname, erhaeltStimmen, wahlvorschlaegeID) +VALUES ('00000000-0000-0000-0001-000000000013', 1, 'Vorschlag für Refendum', true, + '00000000-0000-0000-0000-000000000005'); + + +INSERT INTO referendumvorlagen (id, wahlbezirkID, wahlID, stimmzettelgebietID) +VALUES ('00000000-0000-0000-0001-000000000001', '00000000-0000-0000-0000-000000000005', + '00000000-0000-0000-0000-000000000005', '00000000-0000-0000-0000-000000000005'); + +INSERT INTO referendumvorlage (id, wahlvorschlagID, ordnungszahl, kurzname, frage, referendumvorlagenID) +VALUES ('00000000-0000-0002-0002-000000000001', '00000000-0000-0000-0001-000000000013', 1, 'kurzname1', 'frage1', + '00000000-0000-0000-0001-000000000001'); +INSERT INTO referendumoption (id, name, position, referendumvorlageid) +VALUES ('00000000-0002-0002-0002-000000000001', 'name1', 1, + '00000000-0000-0002-0002-000000000001'); +INSERT INTO referendumoption (id, name, position, referendumvorlageid) +VALUES ('00000000-0002-0002-0002-000000000002', 'name2', 2, + '00000000-0000-0002-0002-000000000001'); +INSERT INTO referendumoption (id, name, position, referendumvorlageid) +VALUES ('00000000-0002-0002-0002-000000000003', 'name3', 3, + '00000000-0000-0002-0002-000000000001'); + +INSERT INTO referendumvorlage (id, wahlvorschlagID, ordnungszahl, kurzname, frage, referendumvorlagenID) +VALUES ('00000000-0000-0002-0002-000000000002', '00000000-0000-0000-0001-000000000013', 2, 'kurzname2', 'frage2', + '00000000-0000-0000-0001-000000000001'); +INSERT INTO referendumoption (id, name, position, referendumvorlageid) +VALUES ('00000000-0002-0002-0002-000000000004', 'name1', 1, + '00000000-0000-0002-0002-000000000002'); +INSERT INTO referendumoption (id, name, position, referendumvorlageid) +VALUES ('00000000-0002-0002-0002-000000000005', 'name2', 2, + '00000000-0000-0002-0002-000000000002'); + + +INSERT INTO referendumvorlage (id, wahlvorschlagID, ordnungszahl, kurzname, frage, referendumvorlagenID) +VALUES ('00000000-0000-0002-0002-000000000003', '00000000-0000-0000-0001-000000000013', 3, 'kurzname3', 'frage3', + '00000000-0000-0000-0001-000000000001'); +INSERT INTO referendumoption (id, name, position, referendumvorlageid) +VALUES ('00000000-0002-0002-0002-000000000006', 'name1', 1, + '00000000-0000-0002-0002-000000000003'); \ No newline at end of file diff --git a/wls-eai-service/src/main/resources/db/dummydata/oracle/V3_1_1__wahlTestdaten.sql b/wls-eai-service/src/main/resources/db/dummydata/oracle/V3_1_1__wahlTestdaten.sql index f803caa7c..ee7b3bb4d 100644 --- a/wls-eai-service/src/main/resources/db/dummydata/oracle/V3_1_1__wahlTestdaten.sql +++ b/wls-eai-service/src/main/resources/db/dummydata/oracle/V3_1_1__wahlTestdaten.sql @@ -8,4 +8,7 @@ values ('00000000-0000-0000-0000-000000000003', 'Oberbürgermeisterwahl', 'OBW', '00000000-0000-0000-0000-000000000002'); INSERT INTO wahl (id, name, wahlart, nummer, wahltagID) values ('00000000-0000-0000-0000-000000000004', 'Bezirksausschusswahl', 'BAW', 0, - '00000000-0000-0000-0000-000000000002'); \ No newline at end of file + '00000000-0000-0000-0000-000000000002'); + +INSERT INTO wahl (id, name, wahlart, wahltagID) +values ('00000000-0000-0000-0000-000000000005', 'Volksentscheid', 'VE', '00000000-0000-0000-0000-000000000001'); \ No newline at end of file diff --git a/wls-eai-service/src/main/resources/db/dummydata/oracle/V3_2_1__stimmzettelgebietTestdaten.sql b/wls-eai-service/src/main/resources/db/dummydata/oracle/V3_2_1__stimmzettelgebietTestdaten.sql index 57064c2c1..0978db3d3 100644 --- a/wls-eai-service/src/main/resources/db/dummydata/oracle/V3_2_1__stimmzettelgebietTestdaten.sql +++ b/wls-eai-service/src/main/resources/db/dummydata/oracle/V3_2_1__stimmzettelgebietTestdaten.sql @@ -10,3 +10,7 @@ values ('00000000-0000-0000-0000-000000000003', '103', 'Stimmzettelgebiet 103', INSERT INTO stimmzettelgebiet (id, nummer, name, stimmzettelgebietsart, wahlID) values ('00000000-0000-0000-0000-000000000004', '104', 'Stimmzettelgebiet 104', 'SK', '00000000-0000-0000-0000-000000000001'); + +INSERT INTO stimmzettelgebiet (id, nummer, name, stimmzettelgebietsart, wahlID) +values ('00000000-0000-0000-0000-000000000005', '101', 'VE-SZG-1', 'SK', + '00000000-0000-0000-0000-000000000005'); diff --git a/wls-eai-service/src/main/resources/db/dummydata/oracle/V3_3_1__wahlbezirkTestdaten.sql b/wls-eai-service/src/main/resources/db/dummydata/oracle/V3_3_1__wahlbezirkTestdaten.sql index 27d8cc2b1..bef72b808 100644 --- a/wls-eai-service/src/main/resources/db/dummydata/oracle/V3_3_1__wahlbezirkTestdaten.sql +++ b/wls-eai-service/src/main/resources/db/dummydata/oracle/V3_3_1__wahlbezirkTestdaten.sql @@ -12,4 +12,8 @@ values ('00000000-0000-0000-0000-000000000003', 'BWB', 'Wahlbezirk 3', '00000000 INSERT INTO wahlbezirk (id, wahlbezirkArt, nummer, stimmzettelgebietID, a1, a2, a3) values ('00000000-0000-0000-0000-000000000004', 'UWB', 'Wahlbezirk 4', '00000000-0000-0000-0000-000000000004', 42, 5, + 3); + +INSERT INTO wahlbezirk (id, wahlbezirkArt, nummer, stimmzettelgebietID, a1, a2, a3) +values ('00000000-0000-0000-0000-000000000005', 'UWB', 'Wahlbezirk 4', '00000000-0000-0000-0000-000000000005', 42, 5, 3); \ No newline at end of file diff --git a/wls-eai-service/src/main/resources/db/dummydata/oracle/V3_5_1__cleanOldWahlvorschlaegeAndReferendumvorlagen.sql b/wls-eai-service/src/main/resources/db/dummydata/oracle/V3_5_1__cleanOldWahlvorschlaegeAndReferendumvorlagen.sql new file mode 100644 index 000000000..27130a68a --- /dev/null +++ b/wls-eai-service/src/main/resources/db/dummydata/oracle/V3_5_1__cleanOldWahlvorschlaegeAndReferendumvorlagen.sql @@ -0,0 +1,8 @@ +DELETE kandidat; +DELETE wahlvorschlag; +DELETE wahlvorschlaege; +DELETE wahlvorschlaegeliste; + +DELETE referendumoption; +DELETE referendumvorlage; +DELETE referendumvorlagen; \ No newline at end of file diff --git a/wls-eai-service/src/main/resources/db/dummydata/oracle/V3_5_2__createWahlvorschlaegeListen.sql b/wls-eai-service/src/main/resources/db/dummydata/oracle/V3_5_2__createWahlvorschlaegeListen.sql new file mode 100644 index 000000000..a6891c64e --- /dev/null +++ b/wls-eai-service/src/main/resources/db/dummydata/oracle/V3_5_2__createWahlvorschlaegeListen.sql @@ -0,0 +1,7 @@ +-- für EU-Wahl +INSERT INTO wahlvorschlaegeliste (id, wahltag, wahlID) +VALUES ('00000001-0000-0000-0000-000000000001', '2024-06-09', '00000000-0000-0000-0000-000000000001'); + +-- für VE +INSERT INTO wahlvorschlaegeliste (id, wahltag, wahlID) +VALUES ('00000001-0000-0000-0000-000000000002', '2024-06-09', '00000000-0000-0000-0000-000000000005'); \ No newline at end of file diff --git a/wls-eai-service/src/main/resources/db/dummydata/oracle/V3_5_3__createWahlvorschlaegeAndKandidatenEUWahl.sql b/wls-eai-service/src/main/resources/db/dummydata/oracle/V3_5_3__createWahlvorschlaegeAndKandidatenEUWahl.sql new file mode 100644 index 000000000..0ae03276f --- /dev/null +++ b/wls-eai-service/src/main/resources/db/dummydata/oracle/V3_5_3__createWahlvorschlaegeAndKandidatenEUWahl.sql @@ -0,0 +1,321 @@ +-- ######################### +-- ## für EU-Wahl +-- ######################### +-- ## Wahlbezirk1 - +-- ######################### +INSERT INTO wahlvorschlaege (id, wahlbezirkID, wahlID, stimmzettelgebietID, wahlvorschlaegelisteID) +VALUES ('00000000-0000-0000-0000-000000000001', '00000000-0000-0000-0000-000000000001', + '00000000-0000-0000-0000-000000000001', '00000000-0000-0000-0000-000000000001', + '00000001-0000-0000-0000-000000000001'); + +INSERT INTO wahlvorschlag (id, ordnungszahl, kurzname, erhaeltStimmen, wahlvorschlaegeID) +VALUES ('00000000-0000-0000-0001-000000000001', 1, 'Die Besten', true, + '00000000-0000-0000-0000-000000000001'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000001', 'Clapton', 1, false, 10, false, + '00000000-0000-0000-0001-000000000001'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000002', 'Jagger', 2, false, 11, false, + '00000000-0000-0000-0001-000000000001'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000003', 'Prince', 3, false, 15, false, + '00000000-0000-0000-0001-000000000001'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000004', 'Mac', 4, false, 16, true, + '00000000-0000-0000-0001-000000000001'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000005', 'Cool', 5, true, 25, true, + '00000000-0000-0000-0001-000000000001'); + +INSERT INTO wahlvorschlag (id, ordnungszahl, kurzname, erhaeltStimmen, wahlvorschlaegeID) +VALUES ('00000000-0000-0000-0001-000000000002', 2, 'Die Zweitbesten', true, + '00000000-0000-0000-0000-000000000001'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000006', 'Bush', 1, false, 10, false, + '00000000-0000-0000-0001-000000000002'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000007', 'Clinton', 2, false, 11, false, + '00000000-0000-0000-0001-000000000002'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000008', 'Biden', 3, false, 15, false, + '00000000-0000-0000-0001-000000000002'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000009', 'Lincoln', 4, false, 16, true, + '00000000-0000-0000-0001-000000000002'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000010', 'Reagan', 5, true, 25, true, + '00000000-0000-0000-0001-000000000002'); + +INSERT INTO wahlvorschlag (id, ordnungszahl, kurzname, erhaeltStimmen, wahlvorschlaegeID) +VALUES ('00000000-0000-0000-0001-000000000003', 3, 'Die Drittbesten', true, + '00000000-0000-0000-0000-000000000001'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000011', 'Bush', 1, false, 10, false, + '00000000-0000-0000-0001-000000000003'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000012', 'Clinton', 2, false, 11, false, + '00000000-0000-0000-0001-000000000003'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000013', 'Biden', 3, false, 15, false, + '00000000-0000-0000-0001-000000000003'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000014', 'Lincoln', 4, false, 16, true, + '00000000-0000-0000-0001-000000000003'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000015', 'Reagan', 5, true, 25, true, + '00000000-0000-0000-0001-000000000003'); + +-- ######################### +-- ## Wahlbezirk2 - +-- ######################### +INSERT INTO wahlvorschlaege (id, wahlbezirkID, wahlID, stimmzettelgebietID, wahlvorschlaegelisteID) +VALUES ('00000000-0000-0000-0000-000000000002', '00000000-0000-0000-0000-000000000002', + '00000000-0000-0000-0000-000000000001', '00000000-0000-0000-0000-000000000002', + '00000001-0000-0000-0000-000000000001'); + +INSERT INTO wahlvorschlag (id, ordnungszahl, kurzname, erhaeltStimmen, wahlvorschlaegeID) +VALUES ('00000000-0000-0000-0001-000000000004', 1, 'Die Besten', true, + '00000000-0000-0000-0000-000000000002'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000016', 'Clapton', 1, false, 10, false, + '00000000-0000-0000-0001-000000000004'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000017', 'Jagger', 2, false, 11, false, + '00000000-0000-0000-0001-000000000004'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000018', 'Prince', 3, false, 15, false, + '00000000-0000-0000-0001-000000000004'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000019', 'Mac', 4, false, 16, true, + '00000000-0000-0000-0001-000000000004'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000020', 'Cool', 5, true, 25, true, + '00000000-0000-0000-0001-000000000004'); + +INSERT INTO wahlvorschlag (id, ordnungszahl, kurzname, erhaeltStimmen, wahlvorschlaegeID) +VALUES ('00000000-0000-0000-0001-000000000005', 2, 'Die Zweitbesten', true, + '00000000-0000-0000-0000-000000000002'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000021', 'Bush', 1, false, 10, false, + '00000000-0000-0000-0001-000000000005'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000022', 'Clinton', 2, false, 11, false, + '00000000-0000-0000-0001-000000000005'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000023', 'Biden', 3, false, 15, false, + '00000000-0000-0000-0001-000000000005'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000024', 'Lincoln', 4, false, 16, true, + '00000000-0000-0000-0001-000000000005'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000025', 'Reagan', 5, true, 25, true, + '00000000-0000-0000-0001-000000000005'); + +INSERT INTO wahlvorschlag (id, ordnungszahl, kurzname, erhaeltStimmen, wahlvorschlaegeID) +VALUES ('00000000-0000-0000-0001-000000000006', 3, 'Die Drittbesten', true, + '00000000-0000-0000-0000-000000000002'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000026', 'Bush', 1, false, 10, false, + '00000000-0000-0000-0001-000000000006'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000027', 'Clinton', 2, false, 11, false, + '00000000-0000-0000-0001-000000000006'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000028', 'Biden', 3, false, 15, false, + '00000000-0000-0000-0001-000000000006'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000029', 'Lincoln', 4, false, 16, true, + '00000000-0000-0000-0001-000000000006'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000030', 'Reagan', 5, true, 25, true, + '00000000-0000-0000-0001-000000000006'); + +-- ######################### +-- ## Wahlbezirk3 - +-- ######################### +INSERT INTO wahlvorschlaege (id, wahlbezirkID, wahlID, stimmzettelgebietID, wahlvorschlaegelisteID) +VALUES ('00000000-0000-0000-0000-000000000003', '00000000-0000-0000-0000-000000000003', + '00000000-0000-0000-0000-000000000001', '00000000-0000-0000-0000-000000000003', + '00000001-0000-0000-0000-000000000001'); + +INSERT INTO wahlvorschlag (id, ordnungszahl, kurzname, erhaeltStimmen, wahlvorschlaegeID) +VALUES ('00000000-0000-0000-0001-000000000007', 1, 'Die Besten', true, + '00000000-0000-0000-0000-000000000003'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000031', 'Clapton', 1, false, 10, false, + '00000000-0000-0000-0001-000000000007'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000032', 'Jagger', 2, false, 11, false, + '00000000-0000-0000-0001-000000000007'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000033', 'Prince', 3, false, 15, false, + '00000000-0000-0000-0001-000000000007'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000034', 'Mac', 4, false, 16, true, + '00000000-0000-0000-0001-000000000007'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000035', 'Cool', 5, true, 25, true, + '00000000-0000-0000-0001-000000000007'); + +INSERT INTO wahlvorschlag (id, ordnungszahl, kurzname, erhaeltStimmen, wahlvorschlaegeID) +VALUES ('00000000-0000-0000-0001-000000000008', 2, 'Die Zweitbesten', true, + '00000000-0000-0000-0000-000000000003'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000036', 'Bush', 1, false, 10, false, + '00000000-0000-0000-0001-000000000008'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000037', 'Clinton', 2, false, 11, false, + '00000000-0000-0000-0001-000000000008'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000038', 'Biden', 3, false, 15, false, + '00000000-0000-0000-0001-000000000008'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000039', 'Lincoln', 4, false, 16, true, + '00000000-0000-0000-0001-000000000008'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000040', 'Reagan', 5, true, 25, true, + '00000000-0000-0000-0001-000000000008'); + +INSERT INTO wahlvorschlag (id, ordnungszahl, kurzname, erhaeltStimmen, wahlvorschlaegeID) +VALUES ('00000000-0000-0000-0001-000000000009', 3, 'Die Drittbesten', true, + '00000000-0000-0000-0000-000000000003'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000041', 'Bush', 1, false, 10, false, + '00000000-0000-0000-0001-000000000009'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000042', 'Clinton', 2, false, 11, false, + '00000000-0000-0000-0001-000000000009'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000043', 'Biden', 3, false, 15, false, + '00000000-0000-0000-0001-000000000009'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000044', 'Lincoln', 4, false, 16, true, + '00000000-0000-0000-0001-000000000009'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000045', 'Reagan', 5, true, 25, true, + '00000000-0000-0000-0001-000000000009'); + +-- ######################### +-- ## Wahlbezirk4 - +-- ######################### +INSERT INTO wahlvorschlaege (id, wahlbezirkID, wahlID, stimmzettelgebietID, wahlvorschlaegelisteID) +VALUES ('00000000-0000-0000-0000-000000000004', '00000000-0000-0000-0000-000000000004', + '00000000-0000-0000-0000-000000000001', '00000000-0000-0000-0000-000000000004', + '00000001-0000-0000-0000-000000000001'); + +INSERT INTO wahlvorschlag (id, ordnungszahl, kurzname, erhaeltStimmen, wahlvorschlaegeID) +VALUES ('00000000-0000-0000-0001-000000000010', 1, 'Die Besten', true, + '00000000-0000-0000-0000-000000000004'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000046', 'Clapton', 1, false, 10, false, + '00000000-0000-0000-0001-000000000010'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000047', 'Jagger', 2, false, 11, false, + '00000000-0000-0000-0001-000000000010'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000048', 'Prince', 3, false, 15, false, + '00000000-0000-0000-0001-000000000010'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000049', 'Mac', 4, false, 16, true, + '00000000-0000-0000-0001-000000000010'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000050', 'Cool', 5, true, 25, true, + '00000000-0000-0000-0001-000000000010'); + +INSERT INTO wahlvorschlag (id, ordnungszahl, kurzname, erhaeltStimmen, wahlvorschlaegeID) +VALUES ('00000000-0000-0000-0001-000000000011', 2, 'Die Zweitbesten', true, + '00000000-0000-0000-0000-000000000004'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000051', 'Bush', 1, false, 10, false, + '00000000-0000-0000-0001-000000000011'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000052', 'Clinton', 2, false, 11, false, + '00000000-0000-0000-0001-000000000011'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000053', 'Biden', 3, false, 15, false, + '00000000-0000-0000-0001-000000000011'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000054', 'Lincoln', 4, false, 16, true, + '00000000-0000-0000-0001-000000000011'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000055', 'Reagan', 5, true, 25, true, + '00000000-0000-0000-0001-000000000011'); + +INSERT INTO wahlvorschlag (id, ordnungszahl, kurzname, erhaeltStimmen, wahlvorschlaegeID) +VALUES ('00000000-0000-0000-0001-000000000012', 3, 'Die Drittbesten', true, + '00000000-0000-0000-0000-000000000004'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000056', 'Bush', 1, false, 10, false, + '00000000-0000-0000-0001-000000000012'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000057', 'Clinton', 2, false, 11, false, + '00000000-0000-0000-0001-000000000012'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000058', 'Biden', 3, false, 15, false, + '00000000-0000-0000-0001-000000000012'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000059', 'Lincoln', 4, false, 16, true, + '00000000-0000-0000-0001-000000000012'); +INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, + wahlvorschlagID) +VALUES ('00000000-0000-0000-0001-000000000060', 'Reagan', 5, true, 25, true, + '00000000-0000-0000-0001-000000000012'); \ No newline at end of file diff --git a/wls-eai-service/src/main/resources/db/dummydata/oracle/V3_5_4__createReferendumVorlagenVE.sql b/wls-eai-service/src/main/resources/db/dummydata/oracle/V3_5_4__createReferendumVorlagenVE.sql new file mode 100644 index 000000000..702b2f038 --- /dev/null +++ b/wls-eai-service/src/main/resources/db/dummydata/oracle/V3_5_4__createReferendumVorlagenVE.sql @@ -0,0 +1,45 @@ +-- Referendum (VE) am Wahltermin der auch die EU-Wahl hat +INSERT INTO wahlvorschlaege (id, wahlbezirkID, wahlID, stimmzettelgebietID, wahlvorschlaegelisteID) +VALUES ('00000000-0000-0000-0000-000000000005', '00000000-0000-0000-0000-000000000005', + '00000000-0000-0000-0000-000000000005', '00000000-0000-0000-0000-000000000005', + '00000001-0000-0000-0000-000000000002'); + +INSERT INTO wahlvorschlag (id, ordnungszahl, kurzname, erhaeltStimmen, wahlvorschlaegeID) +VALUES ('00000000-0000-0000-0001-000000000013', 1, 'Vorschlag für Refendum', true, + '00000000-0000-0000-0000-000000000005'); + + +INSERT INTO referendumvorlagen (id, wahlbezirkID, wahlID, stimmzettelgebietID) +VALUES ('00000000-0000-0000-0001-000000000001', '00000000-0000-0000-0000-000000000005', + '00000000-0000-0000-0000-000000000005', '00000000-0000-0000-0000-000000000005'); + +INSERT INTO referendumvorlage (id, wahlvorschlagID, ordnungszahl, kurzname, frage, referendumvorlagenID) +VALUES ('00000000-0000-0002-0002-000000000001', '00000000-0000-0000-0001-000000000013', 1, 'kurzname1', 'frage1', + '00000000-0000-0000-0001-000000000001'); +INSERT INTO referendumoption (id, name, position, referendumvorlageid) +VALUES ('00000000-0002-0002-0002-000000000001', 'name1', 1, + '00000000-0000-0002-0002-000000000001'); +INSERT INTO referendumoption (id, name, position, referendumvorlageid) +VALUES ('00000000-0002-0002-0002-000000000002', 'name2', 2, + '00000000-0000-0002-0002-000000000001'); +INSERT INTO referendumoption (id, name, position, referendumvorlageid) +VALUES ('00000000-0002-0002-0002-000000000003', 'name3', 3, + '00000000-0000-0002-0002-000000000001'); + +INSERT INTO referendumvorlage (id, wahlvorschlagID, ordnungszahl, kurzname, frage, referendumvorlagenID) +VALUES ('00000000-0000-0002-0002-000000000002', '00000000-0000-0000-0001-000000000013', 2, 'kurzname2', 'frage2', + '00000000-0000-0000-0001-000000000001'); +INSERT INTO referendumoption (id, name, position, referendumvorlageid) +VALUES ('00000000-0002-0002-0002-000000000004', 'name1', 1, + '00000000-0000-0002-0002-000000000002'); +INSERT INTO referendumoption (id, name, position, referendumvorlageid) +VALUES ('00000000-0002-0002-0002-000000000005', 'name2', 2, + '00000000-0000-0002-0002-000000000002'); + + +INSERT INTO referendumvorlage (id, wahlvorschlagID, ordnungszahl, kurzname, frage, referendumvorlagenID) +VALUES ('00000000-0000-0002-0002-000000000003', '00000000-0000-0000-0001-000000000013', 3, 'kurzname3', 'frage3', + '00000000-0000-0000-0001-000000000001'); +INSERT INTO referendumoption (id, name, position, referendumvorlageid) +VALUES ('00000000-0002-0002-0002-000000000006', 'name1', 1, + '00000000-0000-0002-0002-000000000003'); \ No newline at end of file diff --git a/wls-eai-service/src/main/resources/db/migrations/h2/V3_6__addFKContraintsToWahlvorschlag.sql b/wls-eai-service/src/main/resources/db/migrations/h2/V3_6__addFKContraintsToWahlvorschlag.sql new file mode 100644 index 000000000..1127db8ac --- /dev/null +++ b/wls-eai-service/src/main/resources/db/migrations/h2/V3_6__addFKContraintsToWahlvorschlag.sql @@ -0,0 +1,18 @@ +ALTER TABLE wahlvorschlaegeliste + ADD FOREIGN KEY (wahlID) REFERENCES wahl (id); + +ALTER TABLE wahlvorschlaege + ADD FOREIGN KEY (wahlbezirkID) REFERENCES wahlbezirk (id); +ALTER TABLE wahlvorschlaege + ADD FOREIGN KEY (wahlID) REFERENCES wahl (id); +ALTER TABLE wahlvorschlaege + ADD FOREIGN KEY (stimmzettelgebietID) REFERENCES stimmzettelgebiet (id); + +ALTER TABLE referendumvorlagen + ADD FOREIGN KEY (wahlbezirkID) REFERENCES wahlbezirk (id); +ALTER TABLE referendumvorlagen + ADD FOREIGN KEY (wahlID) REFERENCES wahl (id); +ALTER TABLE referendumvorlagen + ADD FOREIGN KEY (wahlbezirkID) REFERENCES wahlbezirk (id); +ALTER TABLE referendumvorlagen + ADD FOREIGN KEY (stimmzettelgebietID) REFERENCES stimmzettelgebiet (id); \ No newline at end of file diff --git a/wls-eai-service/src/main/resources/db/migrations/oracle/V3_6__addFKContraintsToWahlvorschlag.sql b/wls-eai-service/src/main/resources/db/migrations/oracle/V3_6__addFKContraintsToWahlvorschlag.sql new file mode 100644 index 000000000..1127db8ac --- /dev/null +++ b/wls-eai-service/src/main/resources/db/migrations/oracle/V3_6__addFKContraintsToWahlvorschlag.sql @@ -0,0 +1,18 @@ +ALTER TABLE wahlvorschlaegeliste + ADD FOREIGN KEY (wahlID) REFERENCES wahl (id); + +ALTER TABLE wahlvorschlaege + ADD FOREIGN KEY (wahlbezirkID) REFERENCES wahlbezirk (id); +ALTER TABLE wahlvorschlaege + ADD FOREIGN KEY (wahlID) REFERENCES wahl (id); +ALTER TABLE wahlvorschlaege + ADD FOREIGN KEY (stimmzettelgebietID) REFERENCES stimmzettelgebiet (id); + +ALTER TABLE referendumvorlagen + ADD FOREIGN KEY (wahlbezirkID) REFERENCES wahlbezirk (id); +ALTER TABLE referendumvorlagen + ADD FOREIGN KEY (wahlID) REFERENCES wahl (id); +ALTER TABLE referendumvorlagen + ADD FOREIGN KEY (wahlbezirkID) REFERENCES wahlbezirk (id); +ALTER TABLE referendumvorlagen + ADD FOREIGN KEY (stimmzettelgebietID) REFERENCES stimmzettelgebiet (id); \ No newline at end of file From c7b5e39ab8753b43b1749dd446baed870d24c590 Mon Sep 17 00:00:00 2001 From: MrSebastian <13592751+MrSebastian@users.noreply.github.com> Date: Tue, 9 Jul 2024 12:54:24 +0200 Subject: [PATCH 53/58] update wahlvorschlag http requests --- .../resources/httpRequests/wahlvorschlag.http | 34 ++++++++++++++----- 1 file changed, 25 insertions(+), 9 deletions(-) diff --git a/wls-eai-service/src/test/resources/httpRequests/wahlvorschlag.http b/wls-eai-service/src/test/resources/httpRequests/wahlvorschlag.http index 9d792628a..86591c83b 100644 --- a/wls-eai-service/src/test/resources/httpRequests/wahlvorschlag.http +++ b/wls-eai-service/src/test/resources/httpRequests/wahlvorschlag.http @@ -16,34 +16,50 @@ username = wls_all GET {{ SSO_URL }}/auth/realms/wls_realm/protocol/openid-connect/userinfo Authorization: {{ token_type }} {{ auth_token }} -### GET Wahlvorschlaege -GET {{ WLS_EAI_SERVICE_URL }}/vorschlaege/wahl/wahlID/wahlbezirkID +### GET Wahlvorschlaege - EU-Wahl - WBZ-1 +GET {{ WLS_EAI_SERVICE_URL }}/vorschlaege/wahl/00000000-0000-0000-0000-000000000001/00000000-0000-0000-0000-000000000001 +Authorization: {{ token_type }} {{ auth_token }} + +### GET Wahlvorschlaege - EU-Wahl - WBZ-2 +GET {{ WLS_EAI_SERVICE_URL }}/vorschlaege/wahl/00000000-0000-0000-0000-000000000001/00000000-0000-0000-0000-000000000002 +Authorization: {{ token_type }} {{ auth_token }} + +### GET Wahlvorschlaege - EU-Wahl - WBZ-3 +GET {{ WLS_EAI_SERVICE_URL }}/vorschlaege/wahl/00000000-0000-0000-0000-000000000001/00000000-0000-0000-0000-000000000003 +Authorization: {{ token_type }} {{ auth_token }} + +### GET Wahlvorschlaege - EU-Wahl - WBZ-4 +GET {{ WLS_EAI_SERVICE_URL }}/vorschlaege/wahl/00000000-0000-0000-0000-000000000001/00000000-0000-0000-0000-000000000004 Authorization: {{ token_type }} {{ auth_token }} ### GET Wahlvorschlaege with non existing 'wahlID' and 'wahlbezirkID' not found GET {{ WLS_EAI_SERVICE_URL }}/vorschlaege/wahl/wahlID_X/wahlbezirkID_X Authorization: {{ token_type }} {{ auth_token }} -### GET Wahlvorschlaegeliste -GET {{ WLS_EAI_SERVICE_URL }}/vorschlaege/wahl/wahlID/liste?forDate=2024-10-10 +### GET Wahlvorschlaegeliste - EU-Wahl +GET {{ WLS_EAI_SERVICE_URL }}/vorschlaege/wahl/00000000-0000-0000-0000-000000000001/liste?forDate=2024-06-09 +Authorization: {{ token_type }} {{ auth_token }} + +### GET Wahlvorschlaegeliste - VE +GET {{ WLS_EAI_SERVICE_URL }}/vorschlaege/wahl/00000000-0000-0000-0000-000000000005/liste?forDate=2024-06-09 Authorization: {{ token_type }} {{ auth_token }} ### GET Wahlvorschlaegeliste for non existing 'wahlID' not found -GET {{ WLS_EAI_SERVICE_URL }}/vorschlaege/wahl/wahlID_X/liste?forDate=2024-10-10 +GET {{ WLS_EAI_SERVICE_URL }}/vorschlaege/wahl/wahlID_X/liste?forDate=2024-06-09 Authorization: {{ token_type }} {{ auth_token }} ### GET Wahlvorschlaegeliste for non existing 'forDate'not found -GET {{ WLS_EAI_SERVICE_URL }}/vorschlaege/wahl/wahlID/liste?forDate=2024-10-11 +GET {{ WLS_EAI_SERVICE_URL }}/vorschlaege/wahl/00000000-0000-0000-0000-000000000001/liste?forDate=2024-10-11 Authorization: {{ token_type }} {{ auth_token }} ### GET Referendumvorlagen -GET {{ WLS_EAI_SERVICE_URL }}/vorschlaege/referendum/wahlID/wahlbezirkID +GET {{ WLS_EAI_SERVICE_URL }}/vorschlaege/referendum/00000000-0000-0000-0000-000000000005/00000000-0000-0000-0000-000000000005 Authorization: {{ token_type }} {{ auth_token }} ### GET Referendumvorlagen for non existing 'wahlID' not found -GET {{ WLS_EAI_SERVICE_URL }}/vorschlaege/referendum/wahlID_X/wahlbezirkID +GET {{ WLS_EAI_SERVICE_URL }}/vorschlaege/referendum/wahlID_X/00000000-0000-0000-0000-000000000005 Authorization: {{ token_type }} {{ auth_token }} ### GET Referendumvorlagen for non existing 'wahlbezirkID' not found -GET {{ WLS_EAI_SERVICE_URL }}/vorschlaege/referendum/wahlID/wahlbezirkID_X +GET {{ WLS_EAI_SERVICE_URL }}/vorschlaege/referendum/00000000-0000-0000-0000-000000000005/wahlbezirkID_X Authorization: {{ token_type }} {{ auth_token }} \ No newline at end of file From 75c440d91d66aa8150f98ccb69413b3037136fc7 Mon Sep 17 00:00:00 2001 From: MrSebastian <13592751+MrSebastian@users.noreply.github.com> Date: Tue, 9 Jul 2024 14:43:28 +0200 Subject: [PATCH 54/58] add eai wahldaten keycloak migration config --- stack/keycloak/migration/keycloak-changelog.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/stack/keycloak/migration/keycloak-changelog.yml b/stack/keycloak/migration/keycloak-changelog.yml index 3b18000a5..20d3894ea 100644 --- a/stack/keycloak/migration/keycloak-changelog.yml +++ b/stack/keycloak/migration/keycloak-changelog.yml @@ -31,4 +31,5 @@ includes: - path: add-authorities-wahlvorbereitung-briefwahlvorbereitung.yml - path: create-group-all-basisdaten-authorities.yml - path: add-authorities-basisdaten-wahlvorschlaege.yml - - path: add-authorities-eai-wahlvorschlag.yml \ No newline at end of file + - path: add-authorities-eai-wahlvorschlag.yml + - path: add-authorities-eai-wahlvorstand.yml \ No newline at end of file From 1dd0c495abb67f2aa3a61517df66bc41af8309db Mon Sep 17 00:00:00 2001 From: MrSebastian <13592751+MrSebastian@users.noreply.github.com> Date: Tue, 9 Jul 2024 15:02:40 +0200 Subject: [PATCH 55/58] fix: remove nummer from wahl at oracle --- .../dummydata/oracle/V3_1_1__wahlTestdaten.sql | 18 ++++++++---------- .../db/migrations/oracle/V3_1__createWahl.sql | 1 - .../V3_6__addFKContraintsToWahlvorschlag.sql | 2 -- 3 files changed, 8 insertions(+), 13 deletions(-) diff --git a/wls-eai-service/src/main/resources/db/dummydata/oracle/V3_1_1__wahlTestdaten.sql b/wls-eai-service/src/main/resources/db/dummydata/oracle/V3_1_1__wahlTestdaten.sql index ee7b3bb4d..3bfece0d7 100644 --- a/wls-eai-service/src/main/resources/db/dummydata/oracle/V3_1_1__wahlTestdaten.sql +++ b/wls-eai-service/src/main/resources/db/dummydata/oracle/V3_1_1__wahlTestdaten.sql @@ -1,14 +1,12 @@ -INSERT INTO wahl (id, name, wahlart, nummer, wahltagID) -values ('00000000-0000-0000-0000-000000000001', 'EU-Wahl 24', 'EUW', 0, '00000000-0000-0000-0000-000000000001'); +INSERT INTO wahl (id, name, wahlart, wahltagID) +values ('00000000-0000-0000-0000-000000000001', 'EU-Wahl 24', 'EUW', '00000000-0000-0000-0000-000000000001'); -INSERT INTO wahl (id, name, wahlart, nummer, wahltagID) -values ('00000000-0000-0000-0000-000000000002', 'Stadtratswahl', 'SRW', 0, '00000000-0000-0000-0000-000000000002'); -INSERT INTO wahl (id, name, wahlart, nummer, wahltagID) -values ('00000000-0000-0000-0000-000000000003', 'Oberbürgermeisterwahl', 'OBW', 0, - '00000000-0000-0000-0000-000000000002'); -INSERT INTO wahl (id, name, wahlart, nummer, wahltagID) -values ('00000000-0000-0000-0000-000000000004', 'Bezirksausschusswahl', 'BAW', 0, - '00000000-0000-0000-0000-000000000002'); +INSERT INTO wahl (id, name, wahlart, wahltagID) +values ('00000000-0000-0000-0000-000000000002', 'Stadtratswahl', 'SRW', '00000000-0000-0000-0000-000000000002'); +INSERT INTO wahl (id, name, wahlart, wahltagID) +values ('00000000-0000-0000-0000-000000000003', 'Oberbürgermeisterwahl', 'OBW', '00000000-0000-0000-0000-000000000002'); +INSERT INTO wahl (id, name, wahlart, wahltagID) +values ('00000000-0000-0000-0000-000000000004', 'Bezirksausschusswahl', 'BAW', '00000000-0000-0000-0000-000000000002'); INSERT INTO wahl (id, name, wahlart, wahltagID) values ('00000000-0000-0000-0000-000000000005', 'Volksentscheid', 'VE', '00000000-0000-0000-0000-000000000001'); \ No newline at end of file diff --git a/wls-eai-service/src/main/resources/db/migrations/oracle/V3_1__createWahl.sql b/wls-eai-service/src/main/resources/db/migrations/oracle/V3_1__createWahl.sql index 6cd1aa171..679fa802e 100644 --- a/wls-eai-service/src/main/resources/db/migrations/oracle/V3_1__createWahl.sql +++ b/wls-eai-service/src/main/resources/db/migrations/oracle/V3_1__createWahl.sql @@ -3,7 +3,6 @@ CREATE TABLE wahl id VARCHAR2(36) NOT NULL, name VARCHAR2(100) NOT NULL, wahlart VARCHAR2(5) NOT NULL, - nummer VARCHAR2(10) NOT NULL, wahltagID VARCHAR2(36) NOT NULL, diff --git a/wls-eai-service/src/main/resources/db/migrations/oracle/V3_6__addFKContraintsToWahlvorschlag.sql b/wls-eai-service/src/main/resources/db/migrations/oracle/V3_6__addFKContraintsToWahlvorschlag.sql index 1127db8ac..ceb88a6bd 100644 --- a/wls-eai-service/src/main/resources/db/migrations/oracle/V3_6__addFKContraintsToWahlvorschlag.sql +++ b/wls-eai-service/src/main/resources/db/migrations/oracle/V3_6__addFKContraintsToWahlvorschlag.sql @@ -12,7 +12,5 @@ ALTER TABLE referendumvorlagen ADD FOREIGN KEY (wahlbezirkID) REFERENCES wahlbezirk (id); ALTER TABLE referendumvorlagen ADD FOREIGN KEY (wahlID) REFERENCES wahl (id); -ALTER TABLE referendumvorlagen - ADD FOREIGN KEY (wahlbezirkID) REFERENCES wahlbezirk (id); ALTER TABLE referendumvorlagen ADD FOREIGN KEY (stimmzettelgebietID) REFERENCES stimmzettelgebiet (id); \ No newline at end of file From 284130207ba08ab0a54a62bd2dd74562f945c8f9 Mon Sep 17 00:00:00 2001 From: MrSebastian <13592751+MrSebastian@users.noreply.github.com> Date: Tue, 9 Jul 2024 15:03:06 +0200 Subject: [PATCH 56/58] fix: booleans at oracle --- .../V3_5_2__createWahlvorschlaegeListen.sql | 6 +- ...eateWahlvorschlaegeAndKandidatenEUWahl.sql | 144 +++++++++--------- .../V3_5_4__createReferendumVorlagenVE.sql | 2 +- 3 files changed, 77 insertions(+), 75 deletions(-) diff --git a/wls-eai-service/src/main/resources/db/dummydata/oracle/V3_5_2__createWahlvorschlaegeListen.sql b/wls-eai-service/src/main/resources/db/dummydata/oracle/V3_5_2__createWahlvorschlaegeListen.sql index a6891c64e..66b6241f0 100644 --- a/wls-eai-service/src/main/resources/db/dummydata/oracle/V3_5_2__createWahlvorschlaegeListen.sql +++ b/wls-eai-service/src/main/resources/db/dummydata/oracle/V3_5_2__createWahlvorschlaegeListen.sql @@ -1,7 +1,9 @@ -- für EU-Wahl INSERT INTO wahlvorschlaegeliste (id, wahltag, wahlID) -VALUES ('00000001-0000-0000-0000-000000000001', '2024-06-09', '00000000-0000-0000-0000-000000000001'); +VALUES ('00000001-0000-0000-0000-000000000001', TO_TIMESTAMP('2024-06-09', 'YYYY-MM-DD'), + '00000000-0000-0000-0000-000000000001'); -- für VE INSERT INTO wahlvorschlaegeliste (id, wahltag, wahlID) -VALUES ('00000001-0000-0000-0000-000000000002', '2024-06-09', '00000000-0000-0000-0000-000000000005'); \ No newline at end of file +VALUES ('00000001-0000-0000-0000-000000000002', TO_TIMESTAMP('2024-06-09', 'YYYY-MM-DD'), + '00000000-0000-0000-0000-000000000005'); \ No newline at end of file diff --git a/wls-eai-service/src/main/resources/db/dummydata/oracle/V3_5_3__createWahlvorschlaegeAndKandidatenEUWahl.sql b/wls-eai-service/src/main/resources/db/dummydata/oracle/V3_5_3__createWahlvorschlaegeAndKandidatenEUWahl.sql index 0ae03276f..93ceed79e 100644 --- a/wls-eai-service/src/main/resources/db/dummydata/oracle/V3_5_3__createWahlvorschlaegeAndKandidatenEUWahl.sql +++ b/wls-eai-service/src/main/resources/db/dummydata/oracle/V3_5_3__createWahlvorschlaegeAndKandidatenEUWahl.sql @@ -9,75 +9,75 @@ VALUES ('00000000-0000-0000-0000-000000000001', '00000000-0000-0000-0000-0000000 '00000001-0000-0000-0000-000000000001'); INSERT INTO wahlvorschlag (id, ordnungszahl, kurzname, erhaeltStimmen, wahlvorschlaegeID) -VALUES ('00000000-0000-0000-0001-000000000001', 1, 'Die Besten', true, +VALUES ('00000000-0000-0000-0001-000000000001', 1, 'Die Besten', 1, '00000000-0000-0000-0000-000000000001'); INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, wahlvorschlagID) -VALUES ('00000000-0000-0000-0001-000000000001', 'Clapton', 1, false, 10, false, +VALUES ('00000000-0000-0000-0001-000000000001', 'Clapton', 1, 0, 10, 0, '00000000-0000-0000-0001-000000000001'); INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, wahlvorschlagID) -VALUES ('00000000-0000-0000-0001-000000000002', 'Jagger', 2, false, 11, false, +VALUES ('00000000-0000-0000-0001-000000000002', 'Jagger', 2, 0, 11, 0, '00000000-0000-0000-0001-000000000001'); INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, wahlvorschlagID) -VALUES ('00000000-0000-0000-0001-000000000003', 'Prince', 3, false, 15, false, +VALUES ('00000000-0000-0000-0001-000000000003', 'Prince', 3, 0, 15, 0, '00000000-0000-0000-0001-000000000001'); INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, wahlvorschlagID) -VALUES ('00000000-0000-0000-0001-000000000004', 'Mac', 4, false, 16, true, +VALUES ('00000000-0000-0000-0001-000000000004', 'Mac', 4, 0, 16, 1, '00000000-0000-0000-0001-000000000001'); INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, wahlvorschlagID) -VALUES ('00000000-0000-0000-0001-000000000005', 'Cool', 5, true, 25, true, +VALUES ('00000000-0000-0000-0001-000000000005', 'Cool', 5, 1, 25, 1, '00000000-0000-0000-0001-000000000001'); INSERT INTO wahlvorschlag (id, ordnungszahl, kurzname, erhaeltStimmen, wahlvorschlaegeID) -VALUES ('00000000-0000-0000-0001-000000000002', 2, 'Die Zweitbesten', true, +VALUES ('00000000-0000-0000-0001-000000000002', 2, 'Die Zweitbesten', 1, '00000000-0000-0000-0000-000000000001'); INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, wahlvorschlagID) -VALUES ('00000000-0000-0000-0001-000000000006', 'Bush', 1, false, 10, false, +VALUES ('00000000-0000-0000-0001-000000000006', 'Bush', 1, 0, 10, 0, '00000000-0000-0000-0001-000000000002'); INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, wahlvorschlagID) -VALUES ('00000000-0000-0000-0001-000000000007', 'Clinton', 2, false, 11, false, +VALUES ('00000000-0000-0000-0001-000000000007', 'Clinton', 2, 0, 11, 0, '00000000-0000-0000-0001-000000000002'); INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, wahlvorschlagID) -VALUES ('00000000-0000-0000-0001-000000000008', 'Biden', 3, false, 15, false, +VALUES ('00000000-0000-0000-0001-000000000008', 'Biden', 3, 0, 15, 0, '00000000-0000-0000-0001-000000000002'); INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, wahlvorschlagID) -VALUES ('00000000-0000-0000-0001-000000000009', 'Lincoln', 4, false, 16, true, +VALUES ('00000000-0000-0000-0001-000000000009', 'Lincoln', 4, 0, 16, 1, '00000000-0000-0000-0001-000000000002'); INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, wahlvorschlagID) -VALUES ('00000000-0000-0000-0001-000000000010', 'Reagan', 5, true, 25, true, +VALUES ('00000000-0000-0000-0001-000000000010', 'Reagan', 5, 1, 25, 1, '00000000-0000-0000-0001-000000000002'); INSERT INTO wahlvorschlag (id, ordnungszahl, kurzname, erhaeltStimmen, wahlvorschlaegeID) -VALUES ('00000000-0000-0000-0001-000000000003', 3, 'Die Drittbesten', true, +VALUES ('00000000-0000-0000-0001-000000000003', 3, 'Die Drittbesten', 1, '00000000-0000-0000-0000-000000000001'); INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, wahlvorschlagID) -VALUES ('00000000-0000-0000-0001-000000000011', 'Bush', 1, false, 10, false, +VALUES ('00000000-0000-0000-0001-000000000011', 'Bush', 1, 0, 10, 0, '00000000-0000-0000-0001-000000000003'); INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, wahlvorschlagID) -VALUES ('00000000-0000-0000-0001-000000000012', 'Clinton', 2, false, 11, false, +VALUES ('00000000-0000-0000-0001-000000000012', 'Clinton', 2, 0, 11, 0, '00000000-0000-0000-0001-000000000003'); INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, wahlvorschlagID) -VALUES ('00000000-0000-0000-0001-000000000013', 'Biden', 3, false, 15, false, +VALUES ('00000000-0000-0000-0001-000000000013', 'Biden', 3, 0, 15, 0, '00000000-0000-0000-0001-000000000003'); INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, wahlvorschlagID) -VALUES ('00000000-0000-0000-0001-000000000014', 'Lincoln', 4, false, 16, true, +VALUES ('00000000-0000-0000-0001-000000000014', 'Lincoln', 4, 0, 16, 1, '00000000-0000-0000-0001-000000000003'); INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, wahlvorschlagID) -VALUES ('00000000-0000-0000-0001-000000000015', 'Reagan', 5, true, 25, true, +VALUES ('00000000-0000-0000-0001-000000000015', 'Reagan', 5, 1, 25, 1, '00000000-0000-0000-0001-000000000003'); -- ######################### @@ -89,75 +89,75 @@ VALUES ('00000000-0000-0000-0000-000000000002', '00000000-0000-0000-0000-0000000 '00000001-0000-0000-0000-000000000001'); INSERT INTO wahlvorschlag (id, ordnungszahl, kurzname, erhaeltStimmen, wahlvorschlaegeID) -VALUES ('00000000-0000-0000-0001-000000000004', 1, 'Die Besten', true, +VALUES ('00000000-0000-0000-0001-000000000004', 1, 'Die Besten', 1, '00000000-0000-0000-0000-000000000002'); INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, wahlvorschlagID) -VALUES ('00000000-0000-0000-0001-000000000016', 'Clapton', 1, false, 10, false, +VALUES ('00000000-0000-0000-0001-000000000016', 'Clapton', 1, 0, 10, 0, '00000000-0000-0000-0001-000000000004'); INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, wahlvorschlagID) -VALUES ('00000000-0000-0000-0001-000000000017', 'Jagger', 2, false, 11, false, +VALUES ('00000000-0000-0000-0001-000000000017', 'Jagger', 2, 0, 11, 0, '00000000-0000-0000-0001-000000000004'); INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, wahlvorschlagID) -VALUES ('00000000-0000-0000-0001-000000000018', 'Prince', 3, false, 15, false, +VALUES ('00000000-0000-0000-0001-000000000018', 'Prince', 3, 0, 15, 0, '00000000-0000-0000-0001-000000000004'); INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, wahlvorschlagID) -VALUES ('00000000-0000-0000-0001-000000000019', 'Mac', 4, false, 16, true, +VALUES ('00000000-0000-0000-0001-000000000019', 'Mac', 4, 0, 16, 1, '00000000-0000-0000-0001-000000000004'); INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, wahlvorschlagID) -VALUES ('00000000-0000-0000-0001-000000000020', 'Cool', 5, true, 25, true, +VALUES ('00000000-0000-0000-0001-000000000020', 'Cool', 5, 1, 25, 1, '00000000-0000-0000-0001-000000000004'); INSERT INTO wahlvorschlag (id, ordnungszahl, kurzname, erhaeltStimmen, wahlvorschlaegeID) -VALUES ('00000000-0000-0000-0001-000000000005', 2, 'Die Zweitbesten', true, +VALUES ('00000000-0000-0000-0001-000000000005', 2, 'Die Zweitbesten', 1, '00000000-0000-0000-0000-000000000002'); INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, wahlvorschlagID) -VALUES ('00000000-0000-0000-0001-000000000021', 'Bush', 1, false, 10, false, +VALUES ('00000000-0000-0000-0001-000000000021', 'Bush', 1, 0, 10, 0, '00000000-0000-0000-0001-000000000005'); INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, wahlvorschlagID) -VALUES ('00000000-0000-0000-0001-000000000022', 'Clinton', 2, false, 11, false, +VALUES ('00000000-0000-0000-0001-000000000022', 'Clinton', 2, 0, 11, 0, '00000000-0000-0000-0001-000000000005'); INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, wahlvorschlagID) -VALUES ('00000000-0000-0000-0001-000000000023', 'Biden', 3, false, 15, false, +VALUES ('00000000-0000-0000-0001-000000000023', 'Biden', 3, 0, 15, 0, '00000000-0000-0000-0001-000000000005'); INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, wahlvorschlagID) -VALUES ('00000000-0000-0000-0001-000000000024', 'Lincoln', 4, false, 16, true, +VALUES ('00000000-0000-0000-0001-000000000024', 'Lincoln', 4, 0, 16, 1, '00000000-0000-0000-0001-000000000005'); INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, wahlvorschlagID) -VALUES ('00000000-0000-0000-0001-000000000025', 'Reagan', 5, true, 25, true, +VALUES ('00000000-0000-0000-0001-000000000025', 'Reagan', 5, 1, 25, 1, '00000000-0000-0000-0001-000000000005'); INSERT INTO wahlvorschlag (id, ordnungszahl, kurzname, erhaeltStimmen, wahlvorschlaegeID) -VALUES ('00000000-0000-0000-0001-000000000006', 3, 'Die Drittbesten', true, +VALUES ('00000000-0000-0000-0001-000000000006', 3, 'Die Drittbesten', 1, '00000000-0000-0000-0000-000000000002'); INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, wahlvorschlagID) -VALUES ('00000000-0000-0000-0001-000000000026', 'Bush', 1, false, 10, false, +VALUES ('00000000-0000-0000-0001-000000000026', 'Bush', 1, 0, 10, 0, '00000000-0000-0000-0001-000000000006'); INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, wahlvorschlagID) -VALUES ('00000000-0000-0000-0001-000000000027', 'Clinton', 2, false, 11, false, +VALUES ('00000000-0000-0000-0001-000000000027', 'Clinton', 2, 0, 11, 0, '00000000-0000-0000-0001-000000000006'); INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, wahlvorschlagID) -VALUES ('00000000-0000-0000-0001-000000000028', 'Biden', 3, false, 15, false, +VALUES ('00000000-0000-0000-0001-000000000028', 'Biden', 3, 0, 15, 0, '00000000-0000-0000-0001-000000000006'); INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, wahlvorschlagID) -VALUES ('00000000-0000-0000-0001-000000000029', 'Lincoln', 4, false, 16, true, +VALUES ('00000000-0000-0000-0001-000000000029', 'Lincoln', 4, 0, 16, 1, '00000000-0000-0000-0001-000000000006'); INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, wahlvorschlagID) -VALUES ('00000000-0000-0000-0001-000000000030', 'Reagan', 5, true, 25, true, +VALUES ('00000000-0000-0000-0001-000000000030', 'Reagan', 5, 1, 25, 1, '00000000-0000-0000-0001-000000000006'); -- ######################### @@ -169,75 +169,75 @@ VALUES ('00000000-0000-0000-0000-000000000003', '00000000-0000-0000-0000-0000000 '00000001-0000-0000-0000-000000000001'); INSERT INTO wahlvorschlag (id, ordnungszahl, kurzname, erhaeltStimmen, wahlvorschlaegeID) -VALUES ('00000000-0000-0000-0001-000000000007', 1, 'Die Besten', true, +VALUES ('00000000-0000-0000-0001-000000000007', 1, 'Die Besten', 1, '00000000-0000-0000-0000-000000000003'); INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, wahlvorschlagID) -VALUES ('00000000-0000-0000-0001-000000000031', 'Clapton', 1, false, 10, false, +VALUES ('00000000-0000-0000-0001-000000000031', 'Clapton', 1, 0, 10, 0, '00000000-0000-0000-0001-000000000007'); INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, wahlvorschlagID) -VALUES ('00000000-0000-0000-0001-000000000032', 'Jagger', 2, false, 11, false, +VALUES ('00000000-0000-0000-0001-000000000032', 'Jagger', 2, 0, 11, 0, '00000000-0000-0000-0001-000000000007'); INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, wahlvorschlagID) -VALUES ('00000000-0000-0000-0001-000000000033', 'Prince', 3, false, 15, false, +VALUES ('00000000-0000-0000-0001-000000000033', 'Prince', 3, 0, 15, 0, '00000000-0000-0000-0001-000000000007'); INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, wahlvorschlagID) -VALUES ('00000000-0000-0000-0001-000000000034', 'Mac', 4, false, 16, true, +VALUES ('00000000-0000-0000-0001-000000000034', 'Mac', 4, 0, 16, 1, '00000000-0000-0000-0001-000000000007'); INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, wahlvorschlagID) -VALUES ('00000000-0000-0000-0001-000000000035', 'Cool', 5, true, 25, true, +VALUES ('00000000-0000-0000-0001-000000000035', 'Cool', 5, 1, 25, 1, '00000000-0000-0000-0001-000000000007'); INSERT INTO wahlvorschlag (id, ordnungszahl, kurzname, erhaeltStimmen, wahlvorschlaegeID) -VALUES ('00000000-0000-0000-0001-000000000008', 2, 'Die Zweitbesten', true, +VALUES ('00000000-0000-0000-0001-000000000008', 2, 'Die Zweitbesten', 1, '00000000-0000-0000-0000-000000000003'); INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, wahlvorschlagID) -VALUES ('00000000-0000-0000-0001-000000000036', 'Bush', 1, false, 10, false, +VALUES ('00000000-0000-0000-0001-000000000036', 'Bush', 1, 0, 10, 0, '00000000-0000-0000-0001-000000000008'); INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, wahlvorschlagID) -VALUES ('00000000-0000-0000-0001-000000000037', 'Clinton', 2, false, 11, false, +VALUES ('00000000-0000-0000-0001-000000000037', 'Clinton', 2, 0, 11, 0, '00000000-0000-0000-0001-000000000008'); INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, wahlvorschlagID) -VALUES ('00000000-0000-0000-0001-000000000038', 'Biden', 3, false, 15, false, +VALUES ('00000000-0000-0000-0001-000000000038', 'Biden', 3, 0, 15, 0, '00000000-0000-0000-0001-000000000008'); INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, wahlvorschlagID) -VALUES ('00000000-0000-0000-0001-000000000039', 'Lincoln', 4, false, 16, true, +VALUES ('00000000-0000-0000-0001-000000000039', 'Lincoln', 4, 0, 16, 1, '00000000-0000-0000-0001-000000000008'); INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, wahlvorschlagID) -VALUES ('00000000-0000-0000-0001-000000000040', 'Reagan', 5, true, 25, true, +VALUES ('00000000-0000-0000-0001-000000000040', 'Reagan', 5, 1, 25, 1, '00000000-0000-0000-0001-000000000008'); INSERT INTO wahlvorschlag (id, ordnungszahl, kurzname, erhaeltStimmen, wahlvorschlaegeID) -VALUES ('00000000-0000-0000-0001-000000000009', 3, 'Die Drittbesten', true, +VALUES ('00000000-0000-0000-0001-000000000009', 3, 'Die Drittbesten', 1, '00000000-0000-0000-0000-000000000003'); INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, wahlvorschlagID) -VALUES ('00000000-0000-0000-0001-000000000041', 'Bush', 1, false, 10, false, +VALUES ('00000000-0000-0000-0001-000000000041', 'Bush', 1, 0, 10, 0, '00000000-0000-0000-0001-000000000009'); INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, wahlvorschlagID) -VALUES ('00000000-0000-0000-0001-000000000042', 'Clinton', 2, false, 11, false, +VALUES ('00000000-0000-0000-0001-000000000042', 'Clinton', 2, 0, 11, 0, '00000000-0000-0000-0001-000000000009'); INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, wahlvorschlagID) -VALUES ('00000000-0000-0000-0001-000000000043', 'Biden', 3, false, 15, false, +VALUES ('00000000-0000-0000-0001-000000000043', 'Biden', 3, 0, 15, 0, '00000000-0000-0000-0001-000000000009'); INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, wahlvorschlagID) -VALUES ('00000000-0000-0000-0001-000000000044', 'Lincoln', 4, false, 16, true, +VALUES ('00000000-0000-0000-0001-000000000044', 'Lincoln', 4, 0, 16, 1, '00000000-0000-0000-0001-000000000009'); INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, wahlvorschlagID) -VALUES ('00000000-0000-0000-0001-000000000045', 'Reagan', 5, true, 25, true, +VALUES ('00000000-0000-0000-0001-000000000045', 'Reagan', 5, 1, 25, 1, '00000000-0000-0000-0001-000000000009'); -- ######################### @@ -249,73 +249,73 @@ VALUES ('00000000-0000-0000-0000-000000000004', '00000000-0000-0000-0000-0000000 '00000001-0000-0000-0000-000000000001'); INSERT INTO wahlvorschlag (id, ordnungszahl, kurzname, erhaeltStimmen, wahlvorschlaegeID) -VALUES ('00000000-0000-0000-0001-000000000010', 1, 'Die Besten', true, +VALUES ('00000000-0000-0000-0001-000000000010', 1, 'Die Besten', 1, '00000000-0000-0000-0000-000000000004'); INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, wahlvorschlagID) -VALUES ('00000000-0000-0000-0001-000000000046', 'Clapton', 1, false, 10, false, +VALUES ('00000000-0000-0000-0001-000000000046', 'Clapton', 1, 0, 10, 0, '00000000-0000-0000-0001-000000000010'); INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, wahlvorschlagID) -VALUES ('00000000-0000-0000-0001-000000000047', 'Jagger', 2, false, 11, false, +VALUES ('00000000-0000-0000-0001-000000000047', 'Jagger', 2, 0, 11, 0, '00000000-0000-0000-0001-000000000010'); INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, wahlvorschlagID) -VALUES ('00000000-0000-0000-0001-000000000048', 'Prince', 3, false, 15, false, +VALUES ('00000000-0000-0000-0001-000000000048', 'Prince', 3, 0, 15, 0, '00000000-0000-0000-0001-000000000010'); INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, wahlvorschlagID) -VALUES ('00000000-0000-0000-0001-000000000049', 'Mac', 4, false, 16, true, +VALUES ('00000000-0000-0000-0001-000000000049', 'Mac', 4, 0, 16, 1, '00000000-0000-0000-0001-000000000010'); INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, wahlvorschlagID) -VALUES ('00000000-0000-0000-0001-000000000050', 'Cool', 5, true, 25, true, +VALUES ('00000000-0000-0000-0001-000000000050', 'Cool', 5, 1, 25, 1, '00000000-0000-0000-0001-000000000010'); INSERT INTO wahlvorschlag (id, ordnungszahl, kurzname, erhaeltStimmen, wahlvorschlaegeID) -VALUES ('00000000-0000-0000-0001-000000000011', 2, 'Die Zweitbesten', true, +VALUES ('00000000-0000-0000-0001-000000000011', 2, 'Die Zweitbesten', 1, '00000000-0000-0000-0000-000000000004'); INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, wahlvorschlagID) -VALUES ('00000000-0000-0000-0001-000000000051', 'Bush', 1, false, 10, false, +VALUES ('00000000-0000-0000-0001-000000000051', 'Bush', 1, 0, 10, 0, '00000000-0000-0000-0001-000000000011'); INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, wahlvorschlagID) -VALUES ('00000000-0000-0000-0001-000000000052', 'Clinton', 2, false, 11, false, +VALUES ('00000000-0000-0000-0001-000000000052', 'Clinton', 2, 0, 11, 0, '00000000-0000-0000-0001-000000000011'); INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, wahlvorschlagID) -VALUES ('00000000-0000-0000-0001-000000000053', 'Biden', 3, false, 15, false, +VALUES ('00000000-0000-0000-0001-000000000053', 'Biden', 3, 0, 15, 0, '00000000-0000-0000-0001-000000000011'); INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, wahlvorschlagID) -VALUES ('00000000-0000-0000-0001-000000000054', 'Lincoln', 4, false, 16, true, +VALUES ('00000000-0000-0000-0001-000000000054', 'Lincoln', 4, 0, 16, 1, '00000000-0000-0000-0001-000000000011'); INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, wahlvorschlagID) -VALUES ('00000000-0000-0000-0001-000000000055', 'Reagan', 5, true, 25, true, +VALUES ('00000000-0000-0000-0001-000000000055', 'Reagan', 5, 1, 25, 1, '00000000-0000-0000-0001-000000000011'); INSERT INTO wahlvorschlag (id, ordnungszahl, kurzname, erhaeltStimmen, wahlvorschlaegeID) -VALUES ('00000000-0000-0000-0001-000000000012', 3, 'Die Drittbesten', true, +VALUES ('00000000-0000-0000-0001-000000000012', 3, 'Die Drittbesten', 1, '00000000-0000-0000-0000-000000000004'); INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, wahlvorschlagID) -VALUES ('00000000-0000-0000-0001-000000000056', 'Bush', 1, false, 10, false, +VALUES ('00000000-0000-0000-0001-000000000056', 'Bush', 1, 0, 10, 0, '00000000-0000-0000-0001-000000000012'); INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, wahlvorschlagID) -VALUES ('00000000-0000-0000-0001-000000000057', 'Clinton', 2, false, 11, false, +VALUES ('00000000-0000-0000-0001-000000000057', 'Clinton', 2, 0, 11, 0, '00000000-0000-0000-0001-000000000012'); INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, wahlvorschlagID) -VALUES ('00000000-0000-0000-0001-000000000058', 'Biden', 3, false, 15, false, +VALUES ('00000000-0000-0000-0001-000000000058', 'Biden', 3, 0, 15, 0, '00000000-0000-0000-0001-000000000012'); INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, wahlvorschlagID) -VALUES ('00000000-0000-0000-0001-000000000059', 'Lincoln', 4, false, 16, true, +VALUES ('00000000-0000-0000-0001-000000000059', 'Lincoln', 4, 0, 16, 1, '00000000-0000-0000-0001-000000000012'); INSERT INTO kandidat (id, name, listenposition, direktkandidat, tabellenSpalteInNiederschrift, einzelbewerber, wahlvorschlagID) -VALUES ('00000000-0000-0000-0001-000000000060', 'Reagan', 5, true, 25, true, +VALUES ('00000000-0000-0000-0001-000000000060', 'Reagan', 5, 1, 25, 1, '00000000-0000-0000-0001-000000000012'); \ No newline at end of file diff --git a/wls-eai-service/src/main/resources/db/dummydata/oracle/V3_5_4__createReferendumVorlagenVE.sql b/wls-eai-service/src/main/resources/db/dummydata/oracle/V3_5_4__createReferendumVorlagenVE.sql index 702b2f038..7efc66c6b 100644 --- a/wls-eai-service/src/main/resources/db/dummydata/oracle/V3_5_4__createReferendumVorlagenVE.sql +++ b/wls-eai-service/src/main/resources/db/dummydata/oracle/V3_5_4__createReferendumVorlagenVE.sql @@ -5,7 +5,7 @@ VALUES ('00000000-0000-0000-0000-000000000005', '00000000-0000-0000-0000-0000000 '00000001-0000-0000-0000-000000000002'); INSERT INTO wahlvorschlag (id, ordnungszahl, kurzname, erhaeltStimmen, wahlvorschlaegeID) -VALUES ('00000000-0000-0000-0001-000000000013', 1, 'Vorschlag für Refendum', true, +VALUES ('00000000-0000-0000-0001-000000000013', 1, 'Vorschlag für Refendum', 1, '00000000-0000-0000-0000-000000000005'); From 8d027480b4d204c9625b399bc8c401d428fe464b Mon Sep 17 00:00:00 2001 From: MrSebastian <13592751+MrSebastian@users.noreply.github.com> Date: Tue, 9 Jul 2024 15:28:52 +0200 Subject: [PATCH 57/58] fix: wrong authorities files add at end --- stack/keycloak/migration/keycloak-changelog.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stack/keycloak/migration/keycloak-changelog.yml b/stack/keycloak/migration/keycloak-changelog.yml index 20d3894ea..29ce735a7 100644 --- a/stack/keycloak/migration/keycloak-changelog.yml +++ b/stack/keycloak/migration/keycloak-changelog.yml @@ -32,4 +32,4 @@ includes: - path: create-group-all-basisdaten-authorities.yml - path: add-authorities-basisdaten-wahlvorschlaege.yml - path: add-authorities-eai-wahlvorschlag.yml - - path: add-authorities-eai-wahlvorstand.yml \ No newline at end of file + - path: add-authorities-eai-wahldaten.yml \ No newline at end of file From a9925c22c9e3f5859d01b0d3ae8d5423c38e35d5 Mon Sep 17 00:00:00 2001 From: Robert Jasny Date: Tue, 9 Jul 2024 15:32:31 +0200 Subject: [PATCH 58/58] typo in der id --- stack/keycloak/migration/add-authorities-eai-wahlvorschlag.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stack/keycloak/migration/add-authorities-eai-wahlvorschlag.yml b/stack/keycloak/migration/add-authorities-eai-wahlvorschlag.yml index 0c71e006a..a189c8412 100644 --- a/stack/keycloak/migration/add-authorities-eai-wahlvorschlag.yml +++ b/stack/keycloak/migration/add-authorities-eai-wahlvorschlag.yml @@ -1,4 +1,4 @@ -id: add authorities eai wahlvorstand +id: add authorities eai wahlvorschlag author: dragonfly28 realm: ${SSO_REALM} changes: