From 96128164623f0550a1358053ee91e0677e00c51d Mon Sep 17 00:00:00 2001 From: alisihab Date: Fri, 13 Sep 2024 17:12:43 +0200 Subject: [PATCH 1/6] Use pessimistic lock while generating generating Id --- .../emulate/GenereerDocumentIdentificatieEmulator.java | 4 ++-- .../impl/emulate/GenereerZaakIdentificatieEmulator.java | 4 ++-- .../zdstozgw/jpa/EmulateParameterRepository.java | 9 +++++++++ 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/src/main/java/nl/haarlem/translations/zdstozgw/converter/impl/emulate/GenereerDocumentIdentificatieEmulator.java b/src/main/java/nl/haarlem/translations/zdstozgw/converter/impl/emulate/GenereerDocumentIdentificatieEmulator.java index 6db1c4ed..7d3df90f 100644 --- a/src/main/java/nl/haarlem/translations/zdstozgw/converter/impl/emulate/GenereerDocumentIdentificatieEmulator.java +++ b/src/main/java/nl/haarlem/translations/zdstozgw/converter/impl/emulate/GenereerDocumentIdentificatieEmulator.java @@ -47,8 +47,8 @@ public void load() throws ResponseStatusException { @Override public ResponseEntity execute() throws ConverterException { EmulateParameterRepository repository = SpringContext.getBean(EmulateParameterRepository.class); - var prefixparam = repository.getOne("DocumentIdentificatiePrefix"); - var idparam = repository.getOne("DocumentIdentificatieHuidige"); + var prefixparam = repository.getById("DocumentIdentificatiePrefix"); + var idparam = repository.getByIdWithLock("DocumentIdentificatieHuidige"); var identificatie = Long.parseLong(idparam.getParameterValue()) + 1; idparam.setParameterValue(Long.toString(identificatie)); repository.save(idparam); diff --git a/src/main/java/nl/haarlem/translations/zdstozgw/converter/impl/emulate/GenereerZaakIdentificatieEmulator.java b/src/main/java/nl/haarlem/translations/zdstozgw/converter/impl/emulate/GenereerZaakIdentificatieEmulator.java index f49a2eae..f6ca04bf 100644 --- a/src/main/java/nl/haarlem/translations/zdstozgw/converter/impl/emulate/GenereerZaakIdentificatieEmulator.java +++ b/src/main/java/nl/haarlem/translations/zdstozgw/converter/impl/emulate/GenereerZaakIdentificatieEmulator.java @@ -52,8 +52,8 @@ zaakidentificatie, hiervoor gelden de volgende regels (genomen uit RGBZ): */ EmulateParameterRepository repository = SpringContext.getBean(EmulateParameterRepository.class); - var prefixparam = repository.getOne("ZaakIdentificatiePrefix"); - var idparam = repository.getOne("ZaakIdentificatieHuidige"); + var prefixparam = repository.getById("ZaakIdentificatiePrefix"); + var idparam = repository.getByIdWithLock("ZaakIdentificatieHuidige"); var identificatie = Long.parseLong(idparam.getParameterValue()) + 1; idparam.setParameterValue(Long.toString(identificatie)); repository.save(idparam); diff --git a/src/main/java/nl/haarlem/translations/zdstozgw/jpa/EmulateParameterRepository.java b/src/main/java/nl/haarlem/translations/zdstozgw/jpa/EmulateParameterRepository.java index d7252925..006ad839 100644 --- a/src/main/java/nl/haarlem/translations/zdstozgw/jpa/EmulateParameterRepository.java +++ b/src/main/java/nl/haarlem/translations/zdstozgw/jpa/EmulateParameterRepository.java @@ -15,11 +15,20 @@ */ package nl.haarlem.translations.zdstozgw.jpa; +import javax.persistence.LockModeType; + import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Lock; import org.springframework.stereotype.Repository; import nl.haarlem.translations.zdstozgw.jpa.model.EmulateParameter; @Repository public interface EmulateParameterRepository extends JpaRepository { + + // use pessimistic locking for id generation + @Lock(LockModeType.PESSIMISTIC_WRITE) + default EmulateParameter getByIdWithLock(String id) { + return getById(id); + } } \ No newline at end of file From e5bd36b81dd7ad8515408c5213a7bec8a4275c34 Mon Sep 17 00:00:00 2001 From: alisihab Date: Mon, 16 Sep 2024 10:26:28 +0200 Subject: [PATCH 2/6] use sequences for id generation --- .../GenereerDocumentIdentificatieEmulator.java | 12 ++++++------ .../GenereerZaakIdentificatieEmulator.java | 14 +++++++------- .../zdstozgw/jpa/EmulateParameterRepository.java | 15 +++++++-------- 3 files changed, 20 insertions(+), 21 deletions(-) diff --git a/src/main/java/nl/haarlem/translations/zdstozgw/converter/impl/emulate/GenereerDocumentIdentificatieEmulator.java b/src/main/java/nl/haarlem/translations/zdstozgw/converter/impl/emulate/GenereerDocumentIdentificatieEmulator.java index 7d3df90f..9ceb4ca5 100644 --- a/src/main/java/nl/haarlem/translations/zdstozgw/converter/impl/emulate/GenereerDocumentIdentificatieEmulator.java +++ b/src/main/java/nl/haarlem/translations/zdstozgw/converter/impl/emulate/GenereerDocumentIdentificatieEmulator.java @@ -15,6 +15,7 @@ */ package nl.haarlem.translations.zdstozgw.converter.impl.emulate; +import org.springframework.beans.factory.annotation.Value; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.server.ResponseStatusException; @@ -33,6 +34,9 @@ public class GenereerDocumentIdentificatieEmulator extends Converter { + @Value("${id.generatie.documentIdentificatiePrefix:1900}") + public String documentIdentificatiePrefix; + public GenereerDocumentIdentificatieEmulator(RequestResponseCycle session, Translation translation, ZaakService zaakService) { super(session, translation, zaakService); @@ -47,12 +51,8 @@ public void load() throws ResponseStatusException { @Override public ResponseEntity execute() throws ConverterException { EmulateParameterRepository repository = SpringContext.getBean(EmulateParameterRepository.class); - var prefixparam = repository.getById("DocumentIdentificatiePrefix"); - var idparam = repository.getByIdWithLock("DocumentIdentificatieHuidige"); - var identificatie = Long.parseLong(idparam.getParameterValue()) + 1; - idparam.setParameterValue(Long.toString(identificatie)); - repository.save(idparam); - var did = prefixparam.getParameterValue() + identificatie; + var identificatie = repository.getDocumentId(); + var did = documentIdentificatiePrefix + identificatie; this.getSession().setFunctie("GenereerDocumentIdentificatie"); this.getSession().setKenmerk("documentidentificatie:" + did); diff --git a/src/main/java/nl/haarlem/translations/zdstozgw/converter/impl/emulate/GenereerZaakIdentificatieEmulator.java b/src/main/java/nl/haarlem/translations/zdstozgw/converter/impl/emulate/GenereerZaakIdentificatieEmulator.java index f6ca04bf..e67cfe7e 100644 --- a/src/main/java/nl/haarlem/translations/zdstozgw/converter/impl/emulate/GenereerZaakIdentificatieEmulator.java +++ b/src/main/java/nl/haarlem/translations/zdstozgw/converter/impl/emulate/GenereerZaakIdentificatieEmulator.java @@ -15,6 +15,7 @@ */ package nl.haarlem.translations.zdstozgw.converter.impl.emulate; +import org.springframework.beans.factory.annotation.Value; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.server.ResponseStatusException; @@ -33,6 +34,9 @@ public class GenereerZaakIdentificatieEmulator extends Converter { + @Value("${id.generatie.zaakIdentificatiePrefix:1900}") + public String zaakIdentificatiePrefix; + public GenereerZaakIdentificatieEmulator(RequestResponseCycle session, Translation translation, ZaakService zaakService) { super(session, translation, zaakService); @@ -50,14 +54,10 @@ zaakidentificatie, hiervoor gelden de volgende regels (genomen uit RGBZ): 1e 4 posities: gemeentecode van de gemeente die verantwoordelijk is voor de behandeling van de zaak; pos. 5 – 40: alle alfanumerieke tekens m.u.v. diacrieten */ - + EmulateParameterRepository repository = SpringContext.getBean(EmulateParameterRepository.class); - var prefixparam = repository.getById("ZaakIdentificatiePrefix"); - var idparam = repository.getByIdWithLock("ZaakIdentificatieHuidige"); - var identificatie = Long.parseLong(idparam.getParameterValue()) + 1; - idparam.setParameterValue(Long.toString(identificatie)); - repository.save(idparam); - var zid = prefixparam.getParameterValue() + identificatie; + var identificatie = repository.getZaakId(); + var zid = zaakIdentificatiePrefix + identificatie; this.getSession().setFunctie("GenereerZaakIdentificatie"); this.getSession().setKenmerk("zaakidentificatie:" + zid); diff --git a/src/main/java/nl/haarlem/translations/zdstozgw/jpa/EmulateParameterRepository.java b/src/main/java/nl/haarlem/translations/zdstozgw/jpa/EmulateParameterRepository.java index 006ad839..a69c6d37 100644 --- a/src/main/java/nl/haarlem/translations/zdstozgw/jpa/EmulateParameterRepository.java +++ b/src/main/java/nl/haarlem/translations/zdstozgw/jpa/EmulateParameterRepository.java @@ -15,10 +15,8 @@ */ package nl.haarlem.translations.zdstozgw.jpa; -import javax.persistence.LockModeType; - import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.data.jpa.repository.Lock; +import org.springframework.data.jpa.repository.Query; import org.springframework.stereotype.Repository; import nl.haarlem.translations.zdstozgw.jpa.model.EmulateParameter; @@ -26,9 +24,10 @@ @Repository public interface EmulateParameterRepository extends JpaRepository { - // use pessimistic locking for id generation - @Lock(LockModeType.PESSIMISTIC_WRITE) - default EmulateParameter getByIdWithLock(String id) { - return getById(id); - } + @Query(value = "SELECT NEXTVAL('ZaakIdentificatieHuidige')", nativeQuery = true) + Long getZaakId(); + + @Query(value = "SELECT NEXTVAL('DocumentIdentificatieHuidige')", nativeQuery = true) + Long getDocumentId(); + } \ No newline at end of file From 7663f6a44f262aeadb0a3e7df479ba1b783fc646 Mon Sep 17 00:00:00 2001 From: alisihab Date: Mon, 16 Sep 2024 10:32:41 +0200 Subject: [PATCH 3/6] include sequence creation in data.sql --- src/main/resources/data-h2.sql | 2 ++ src/main/resources/data-postgresql.sql | 3 +++ 2 files changed, 5 insertions(+) diff --git a/src/main/resources/data-h2.sql b/src/main/resources/data-h2.sql index a069f62c..8dbce1ea 100644 --- a/src/main/resources/data-h2.sql +++ b/src/main/resources/data-h2.sql @@ -13,3 +13,5 @@ INSERT INTO emulate_parameter (parameter_name, parameter_description, parameter_ SELECT 'DocumentIdentificatieHuidige', 'Het laatste volgnummer dat is gebruikt voor de documentidentificatie in nl.haarlem.translations.zdstozgw.convertor.impl.GenereerDocumentIdentificatie', '1' WHERE ( SELECT COUNT(*) FROM emulate_parameter WHERE parameter_name = 'DocumentIdentificatieHuidige') = 0; +CREATE SEQUENCE IF NOT EXISTS ZaakIdentificatieHuidige START WITH 1 INCREMENT BY 1; +CREATE SEQUENCE IF NOT EXISTS DocumentIdentificatieHuidige START WITH 1 INCREMENT BY 1; \ No newline at end of file diff --git a/src/main/resources/data-postgresql.sql b/src/main/resources/data-postgresql.sql index cbb1b9e3..a3fe215a 100644 --- a/src/main/resources/data-postgresql.sql +++ b/src/main/resources/data-postgresql.sql @@ -13,6 +13,9 @@ INSERT INTO emulate_parameter (parameter_name, parameter_description, parameter_ SELECT 'DocumentIdentificatieHuidige', 'Het laatste volgnummer dat is gebruikt voor de documentidentificatie in nl.haarlem.translations.zdstozgw.convertor.impl.GenereerDocumentIdentificatie', '1' WHERE ( SELECT COUNT(*) FROM emulate_parameter WHERE parameter_name = 'DocumentIdentificatieHuidige') = 0; +CREATE SEQUENCE IF NOT EXISTS ZaakIdentificatieHuidige START WITH 1 INCREMENT BY 1; +CREATE SEQUENCE IF NOT EXISTS DocumentIdentificatieHuidige START WITH 1 INCREMENT BY 1; + CREATE OR REPLACE FUNCTION tekstTussenTekst(zoektekst TEXT, voorTussen TEXT, naTussen TEXT) RETURNS TEXT AS $$ DECLARE resultaat text; From 964b099c584f0df7e187fd9506983415d2399ca8 Mon Sep 17 00:00:00 2001 From: alisihab Date: Mon, 16 Sep 2024 11:41:45 +0200 Subject: [PATCH 4/6] move id fields to zaakservice --- .../emulate/GenereerDocumentIdentificatieEmulator.java | 6 +----- .../impl/emulate/GenereerZaakIdentificatieEmulator.java | 7 ++----- .../zdstozgw/translation/zds/services/ZaakService.java | 9 +++++++++ 3 files changed, 12 insertions(+), 10 deletions(-) diff --git a/src/main/java/nl/haarlem/translations/zdstozgw/converter/impl/emulate/GenereerDocumentIdentificatieEmulator.java b/src/main/java/nl/haarlem/translations/zdstozgw/converter/impl/emulate/GenereerDocumentIdentificatieEmulator.java index 9ceb4ca5..fd7333f4 100644 --- a/src/main/java/nl/haarlem/translations/zdstozgw/converter/impl/emulate/GenereerDocumentIdentificatieEmulator.java +++ b/src/main/java/nl/haarlem/translations/zdstozgw/converter/impl/emulate/GenereerDocumentIdentificatieEmulator.java @@ -15,7 +15,6 @@ */ package nl.haarlem.translations.zdstozgw.converter.impl.emulate; -import org.springframework.beans.factory.annotation.Value; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.server.ResponseStatusException; @@ -34,9 +33,6 @@ public class GenereerDocumentIdentificatieEmulator extends Converter { - @Value("${id.generatie.documentIdentificatiePrefix:1900}") - public String documentIdentificatiePrefix; - public GenereerDocumentIdentificatieEmulator(RequestResponseCycle session, Translation translation, ZaakService zaakService) { super(session, translation, zaakService); @@ -52,7 +48,7 @@ public void load() throws ResponseStatusException { public ResponseEntity execute() throws ConverterException { EmulateParameterRepository repository = SpringContext.getBean(EmulateParameterRepository.class); var identificatie = repository.getDocumentId(); - var did = documentIdentificatiePrefix + identificatie; + var did = zaakService.getDocumentIdentificatiePrefix() + identificatie; this.getSession().setFunctie("GenereerDocumentIdentificatie"); this.getSession().setKenmerk("documentidentificatie:" + did); diff --git a/src/main/java/nl/haarlem/translations/zdstozgw/converter/impl/emulate/GenereerZaakIdentificatieEmulator.java b/src/main/java/nl/haarlem/translations/zdstozgw/converter/impl/emulate/GenereerZaakIdentificatieEmulator.java index e67cfe7e..5556a87a 100644 --- a/src/main/java/nl/haarlem/translations/zdstozgw/converter/impl/emulate/GenereerZaakIdentificatieEmulator.java +++ b/src/main/java/nl/haarlem/translations/zdstozgw/converter/impl/emulate/GenereerZaakIdentificatieEmulator.java @@ -15,7 +15,6 @@ */ package nl.haarlem.translations.zdstozgw.converter.impl.emulate; -import org.springframework.beans.factory.annotation.Value; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.server.ResponseStatusException; @@ -32,10 +31,8 @@ import nl.haarlem.translations.zdstozgw.translation.zds.services.ZaakService; import nl.haarlem.translations.zdstozgw.utils.XmlUtils; -public class GenereerZaakIdentificatieEmulator extends Converter { - @Value("${id.generatie.zaakIdentificatiePrefix:1900}") - public String zaakIdentificatiePrefix; +public class GenereerZaakIdentificatieEmulator extends Converter { public GenereerZaakIdentificatieEmulator(RequestResponseCycle session, Translation translation, ZaakService zaakService) { @@ -57,7 +54,7 @@ zaakidentificatie, hiervoor gelden de volgende regels (genomen uit RGBZ): EmulateParameterRepository repository = SpringContext.getBean(EmulateParameterRepository.class); var identificatie = repository.getZaakId(); - var zid = zaakIdentificatiePrefix + identificatie; + var zid = zaakService.getZaakIdentificatiePrefix() + identificatie; this.getSession().setFunctie("GenereerZaakIdentificatie"); this.getSession().setKenmerk("zaakidentificatie:" + zid); diff --git a/src/main/java/nl/haarlem/translations/zdstozgw/translation/zds/services/ZaakService.java b/src/main/java/nl/haarlem/translations/zdstozgw/translation/zds/services/ZaakService.java index 66f4f7ea..8b22d731 100644 --- a/src/main/java/nl/haarlem/translations/zdstozgw/translation/zds/services/ZaakService.java +++ b/src/main/java/nl/haarlem/translations/zdstozgw/translation/zds/services/ZaakService.java @@ -29,8 +29,10 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; +import lombok.Getter; import nl.haarlem.translations.zdstozgw.config.ConfigService; import nl.haarlem.translations.zdstozgw.config.ModelMapperConfig; import nl.haarlem.translations.zdstozgw.config.model.Organisatie; @@ -82,6 +84,13 @@ public class ZaakService { private final ModelMapper modelMapper; public final ConfigService configService; + @Value("${id.generatie.documentIdentificatiePrefix:1900}") + private @Getter String documentIdentificatiePrefix; + + @Value("${id.generatie.zaakIdentificatiePrefix:1900}") + private @Getter String zaakIdentificatiePrefix; + + @Autowired public ZaakService(ZGWClient zgwClient, ModelMapper modelMapper, ConfigService configService) { this.zgwClient = zgwClient; From 46864fb0f992009418ff4b5d0dd8938aad303141 Mon Sep 17 00:00:00 2001 From: alisihab Date: Mon, 16 Sep 2024 13:11:16 +0200 Subject: [PATCH 5/6] docker-compose to docker compose --- docker_start.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docker_start.sh b/docker_start.sh index ac2f749e..d1d34525 100644 --- a/docker_start.sh +++ b/docker_start.sh @@ -5,7 +5,7 @@ mv ./src/main/resources/config.json_example ./src/main/resources/config.json mvn install -Dmaven.javadoc.skip=true -B -V -DskipTests -sudo docker-compose -f docker-compose.yml up --build -d +sudo docker compose -f docker-compose.yml up --build -d # start the counter from 5 seconds timeCounter=5 @@ -30,4 +30,4 @@ else echo "=== Something went wrong while starting the application check log files. ===" exit 1 fi -sudo docker-compose logs +sudo docker compose logs From 1aabb3429b4e80e2f5dc2e9099ef74cd8579e41a Mon Sep 17 00:00:00 2001 From: alisihab Date: Thu, 19 Sep 2024 11:15:54 +0200 Subject: [PATCH 6/6] get prefix from the database and the starting value of sequences --- ...GenereerDocumentIdentificatieEmulator.java | 5 +++-- .../GenereerZaakIdentificatieEmulator.java | 6 +++-- .../jpa/EmulateParameterRepository.java | 6 ++--- .../translation/zds/services/ZaakService.java | 9 -------- src/main/resources/data-h2.sql | 4 ++-- src/main/resources/data-postgresql.sql | 22 +++++++++++++++---- 6 files changed, 30 insertions(+), 22 deletions(-) diff --git a/src/main/java/nl/haarlem/translations/zdstozgw/converter/impl/emulate/GenereerDocumentIdentificatieEmulator.java b/src/main/java/nl/haarlem/translations/zdstozgw/converter/impl/emulate/GenereerDocumentIdentificatieEmulator.java index fd7333f4..c70d23dd 100644 --- a/src/main/java/nl/haarlem/translations/zdstozgw/converter/impl/emulate/GenereerDocumentIdentificatieEmulator.java +++ b/src/main/java/nl/haarlem/translations/zdstozgw/converter/impl/emulate/GenereerDocumentIdentificatieEmulator.java @@ -1,5 +1,5 @@ /* - * Copyright 2020-2021 The Open Zaakbrug Contributors + * Copyright 2020-2021, 2024 The Open Zaakbrug Contributors * * Licensed under the EUPL, Version 1.2 or – as soon they will be approved by the * European Commission - subsequent versions of the EUPL (the "Licence"); @@ -47,8 +47,9 @@ public void load() throws ResponseStatusException { @Override public ResponseEntity execute() throws ConverterException { EmulateParameterRepository repository = SpringContext.getBean(EmulateParameterRepository.class); + var prefixparam = repository.getById("DocumentIdentificatiePrefix"); var identificatie = repository.getDocumentId(); - var did = zaakService.getDocumentIdentificatiePrefix() + identificatie; + var did = prefixparam.getParameterValue() + identificatie; this.getSession().setFunctie("GenereerDocumentIdentificatie"); this.getSession().setKenmerk("documentidentificatie:" + did); diff --git a/src/main/java/nl/haarlem/translations/zdstozgw/converter/impl/emulate/GenereerZaakIdentificatieEmulator.java b/src/main/java/nl/haarlem/translations/zdstozgw/converter/impl/emulate/GenereerZaakIdentificatieEmulator.java index 5556a87a..c30cba00 100644 --- a/src/main/java/nl/haarlem/translations/zdstozgw/converter/impl/emulate/GenereerZaakIdentificatieEmulator.java +++ b/src/main/java/nl/haarlem/translations/zdstozgw/converter/impl/emulate/GenereerZaakIdentificatieEmulator.java @@ -1,5 +1,5 @@ /* - * Copyright 2020-2021 The Open Zaakbrug Contributors + * Copyright 2020-2021, 2024 The Open Zaakbrug Contributors * * Licensed under the EUPL, Version 1.2 or – as soon they will be approved by the * European Commission - subsequent versions of the EUPL (the "Licence"); @@ -53,8 +53,10 @@ zaakidentificatie, hiervoor gelden de volgende regels (genomen uit RGBZ): */ EmulateParameterRepository repository = SpringContext.getBean(EmulateParameterRepository.class); + var prefixparam = repository.getById("ZaakIdentificatiePrefix"); var identificatie = repository.getZaakId(); - var zid = zaakService.getZaakIdentificatiePrefix() + identificatie; + var zid = prefixparam.getParameterValue() + identificatie; + this.getSession().setFunctie("GenereerZaakIdentificatie"); this.getSession().setKenmerk("zaakidentificatie:" + zid); diff --git a/src/main/java/nl/haarlem/translations/zdstozgw/jpa/EmulateParameterRepository.java b/src/main/java/nl/haarlem/translations/zdstozgw/jpa/EmulateParameterRepository.java index a69c6d37..a5088963 100644 --- a/src/main/java/nl/haarlem/translations/zdstozgw/jpa/EmulateParameterRepository.java +++ b/src/main/java/nl/haarlem/translations/zdstozgw/jpa/EmulateParameterRepository.java @@ -1,5 +1,5 @@ /* - * Copyright 2020-2021 The Open Zaakbrug Contributors + * Copyright 2020-2021, 2024 The Open Zaakbrug Contributors * * Licensed under the EUPL, Version 1.2 or – as soon they will be approved by the * European Commission - subsequent versions of the EUPL (the "Licence"); @@ -24,10 +24,10 @@ @Repository public interface EmulateParameterRepository extends JpaRepository { - @Query(value = "SELECT NEXTVAL('ZaakIdentificatieHuidige')", nativeQuery = true) + @Query(value = "SELECT NEXTVAL('HuidigeZaakIdentificatie')", nativeQuery = true) Long getZaakId(); - @Query(value = "SELECT NEXTVAL('DocumentIdentificatieHuidige')", nativeQuery = true) + @Query(value = "SELECT NEXTVAL('HuidigeDocumentIdentificatie')", nativeQuery = true) Long getDocumentId(); } \ No newline at end of file diff --git a/src/main/java/nl/haarlem/translations/zdstozgw/translation/zds/services/ZaakService.java b/src/main/java/nl/haarlem/translations/zdstozgw/translation/zds/services/ZaakService.java index 8b22d731..66f4f7ea 100644 --- a/src/main/java/nl/haarlem/translations/zdstozgw/translation/zds/services/ZaakService.java +++ b/src/main/java/nl/haarlem/translations/zdstozgw/translation/zds/services/ZaakService.java @@ -29,10 +29,8 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; -import lombok.Getter; import nl.haarlem.translations.zdstozgw.config.ConfigService; import nl.haarlem.translations.zdstozgw.config.ModelMapperConfig; import nl.haarlem.translations.zdstozgw.config.model.Organisatie; @@ -84,13 +82,6 @@ public class ZaakService { private final ModelMapper modelMapper; public final ConfigService configService; - @Value("${id.generatie.documentIdentificatiePrefix:1900}") - private @Getter String documentIdentificatiePrefix; - - @Value("${id.generatie.zaakIdentificatiePrefix:1900}") - private @Getter String zaakIdentificatiePrefix; - - @Autowired public ZaakService(ZGWClient zgwClient, ModelMapper modelMapper, ConfigService configService) { this.zgwClient = zgwClient; diff --git a/src/main/resources/data-h2.sql b/src/main/resources/data-h2.sql index 8dbce1ea..ba0868af 100644 --- a/src/main/resources/data-h2.sql +++ b/src/main/resources/data-h2.sql @@ -13,5 +13,5 @@ INSERT INTO emulate_parameter (parameter_name, parameter_description, parameter_ SELECT 'DocumentIdentificatieHuidige', 'Het laatste volgnummer dat is gebruikt voor de documentidentificatie in nl.haarlem.translations.zdstozgw.convertor.impl.GenereerDocumentIdentificatie', '1' WHERE ( SELECT COUNT(*) FROM emulate_parameter WHERE parameter_name = 'DocumentIdentificatieHuidige') = 0; -CREATE SEQUENCE IF NOT EXISTS ZaakIdentificatieHuidige START WITH 1 INCREMENT BY 1; -CREATE SEQUENCE IF NOT EXISTS DocumentIdentificatieHuidige START WITH 1 INCREMENT BY 1; \ No newline at end of file +CREATE SEQUENCE IF NOT EXISTS HuidigeZaakIdentificatie START WITH (SELECT parameter_value FROM emulate_parameter where parameter_name='ZaakIdentificatieHuidige') + 1 INCREMENT BY 1; +CREATE SEQUENCE IF NOT EXISTS HuidigeDocumentIdentificatie START WITH (SELECT parameter_value FROM emulate_parameter where parameter_name='DocumentIdentificatieHuidige') + 1 INCREMENT BY 1; diff --git a/src/main/resources/data-postgresql.sql b/src/main/resources/data-postgresql.sql index a3fe215a..c465dbdb 100644 --- a/src/main/resources/data-postgresql.sql +++ b/src/main/resources/data-postgresql.sql @@ -13,9 +13,6 @@ INSERT INTO emulate_parameter (parameter_name, parameter_description, parameter_ SELECT 'DocumentIdentificatieHuidige', 'Het laatste volgnummer dat is gebruikt voor de documentidentificatie in nl.haarlem.translations.zdstozgw.convertor.impl.GenereerDocumentIdentificatie', '1' WHERE ( SELECT COUNT(*) FROM emulate_parameter WHERE parameter_name = 'DocumentIdentificatieHuidige') = 0; -CREATE SEQUENCE IF NOT EXISTS ZaakIdentificatieHuidige START WITH 1 INCREMENT BY 1; -CREATE SEQUENCE IF NOT EXISTS DocumentIdentificatieHuidige START WITH 1 INCREMENT BY 1; - CREATE OR REPLACE FUNCTION tekstTussenTekst(zoektekst TEXT, voorTussen TEXT, naTussen TEXT) RETURNS TEXT AS $$ DECLARE resultaat text; @@ -33,4 +30,21 @@ BEGIN resultaat := SUBSTRING(resultaat, 0, positie); RETURN resultaat; END; -$$ LANGUAGE 'plpgsql' \ No newline at end of file +$$ LANGUAGE 'plpgsql' + +CREATE OR REPLACE FUNCTION create_sequences_if_not_exists() +RETURNS VOID AS ' +DECLARE + zaak_id_start_value BIGINT; + document_id_start_value BIGINT; +BEGIN + SELECT parameter_value INTO zaak_id_start_value FROM emulate_parameter WHERE parameter_name = ''ZaakIdentificatieHuidige''; + EXECUTE ''CREATE SEQUENCE HuidigeZaakIdentificatie START WITH '' || zaak_id_start_value + 1; + + SELECT parameter_value INTO document_id_start_value FROM emulate_parameter WHERE parameter_name = ''DocumentIdentificatieHuidige''; + EXECUTE ''CREATE SEQUENCE HuidigeDocumentIdentificatie START WITH '' || document_id_start_value + 1; +END; +' LANGUAGE plpgsql; + +SELECT create_sequences_if_not_exists(); +