diff --git a/.github/workflows/docker-snapshot.yml b/.github/workflows/docker-snapshot.yml index 32064420..99628c74 100644 --- a/.github/workflows/docker-snapshot.yml +++ b/.github/workflows/docker-snapshot.yml @@ -27,18 +27,22 @@ jobs: java-version: "21" - name: Build API + working-directory: api run: mvn package --no-transfer-progress - name: Upload API jar uses: actions/upload-artifact@v4 with: name: app-jar - path: target/*.jar + path: api/target/*.jar docker: needs: - build-snapshot runs-on: ubuntu-latest + defaults: + run: + working-directory: api steps: - uses: actions/checkout@v4 @@ -46,7 +50,7 @@ jobs: uses: actions/download-artifact@v4 with: name: app-jar - path: target/ + path: api/target/ - name: Create docker version tag id: docker-version @@ -64,4 +68,4 @@ jobs: password: ${{ secrets.DOCKERHUB_TOKEN }} default_branch: ${{ github.ref }} tags: "snapshot-${{ env.docker_tag }}" - workdir: . \ No newline at end of file + workdir: api \ No newline at end of file diff --git a/.github/workflows/pr-validity.yml b/.github/workflows/pr-validity.yml index 1575b09e..e5158c6a 100644 --- a/.github/workflows/pr-validity.yml +++ b/.github/workflows/pr-validity.yml @@ -7,6 +7,9 @@ on: jobs: check-version: runs-on: ubuntu-latest + defaults: + run: + working-directory: api steps: - name: Checkout uses: actions/checkout@v4 diff --git a/.github/workflows/release-candidate.yml b/.github/workflows/release-candidate.yml index 5063cf19..c57d5d58 100644 --- a/.github/workflows/release-candidate.yml +++ b/.github/workflows/release-candidate.yml @@ -7,6 +7,9 @@ on: jobs: check-version: runs-on: ubuntu-latest + defaults: + run: + working-directory: api outputs: release-version: ${{ steps.version.outputs.version }} steps: @@ -54,17 +57,21 @@ jobs: java-version: "21" - name: Build API + working-directory: api run: mvn package -Dchangelist=-rc --no-transfer-progress - name: Upload API jar uses: actions/upload-artifact@v4 with: name: app-jar - path: target/*.jar + path: api/target/*.jar create-release-candidate: needs: [ check-version, build-sources ] runs-on: ubuntu-latest + defaults: + run: + working-directory: api steps: - uses: actions/checkout@v4 with: @@ -97,6 +104,9 @@ jobs: docker: needs: [ check-version, build-sources ] runs-on: ubuntu-latest + defaults: + run: + working-directory: api steps: - uses: actions/checkout@v4 @@ -104,7 +114,7 @@ jobs: uses: actions/download-artifact@v4 with: name: app-jar - path: target/ + path: api/target/ - name: Publish to Docker Hub uses: elgohr/Publish-Docker-Github-Action@v5 @@ -113,4 +123,5 @@ jobs: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} default_branch: ${{ github.ref }} - tags: ${{ needs.check-version.outputs.release-version }} \ No newline at end of file + tags: ${{ needs.check-version.outputs.release-version }} + workdir: api \ No newline at end of file diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index e1b89ac4..e31c9c34 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -21,6 +21,7 @@ jobs: - name: Get source version id: version-step + working-directory: api run: echo "version=$(mvn -f pom.xml help:evaluate -Dexpression=project.version -q -DforceStdout)" >> $GITHUB_OUTPUT - name: Print source version @@ -57,17 +58,21 @@ jobs: - uses: actions/checkout@v4 - name: Build app + working-directory: api run: mvn package --no-transfer-progress - name: Upload app jar uses: actions/upload-artifact@v4 with: name: app-jar - path: target/*.jar + path: api/target/*.jar create-release: needs: [ check-version, build-sources ] runs-on: ubuntu-latest + defaults: + run: + working-directory: api steps: - uses: actions/checkout@v4 with: @@ -99,6 +104,9 @@ jobs: docker: needs: [ check-version, build-sources ] runs-on: ubuntu-latest + defaults: + run: + working-directory: api steps: - uses: actions/checkout@v4 @@ -106,7 +114,7 @@ jobs: uses: actions/download-artifact@v4 with: name: app-jar - path: target/ + path: api/target/ - name: Publish to Docker Hub uses: elgohr/Publish-Docker-Github-Action@v5 @@ -115,4 +123,5 @@ jobs: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} default_branch: ${{ github.ref }} - tags: ${{ needs.check-version.outputs.release-version }} \ No newline at end of file + tags: ${{ needs.check-version.outputs.release-version }} + workdir: api \ No newline at end of file diff --git a/.github/workflows/snapshot.yml b/.github/workflows/snapshot.yml index 0f15a018..3f634c2f 100644 --- a/.github/workflows/snapshot.yml +++ b/.github/workflows/snapshot.yml @@ -17,6 +17,9 @@ jobs: check-version: needs: verify-branch runs-on: ubuntu-latest + defaults: + run: + working-directory: api outputs: release-version: ${{ steps.version.outputs.version }} steps: @@ -52,6 +55,9 @@ jobs: build-sources: needs: check-version runs-on: ubuntu-latest + defaults: + run: + working-directory: api steps: - uses: actions/checkout@v4 @@ -68,11 +74,14 @@ jobs: uses: actions/upload-artifact@v4 with: name: app-jar - path: target/*.jar + path: api/target/*.jar publish-docker: needs: [ check-version, build-sources ] runs-on: ubuntu-latest + defaults: + run: + working-directory: api steps: - uses: actions/checkout@v4 @@ -80,7 +89,7 @@ jobs: uses: actions/download-artifact@v4 with: name: app-jar - path: target/ + path: api/target/ - name: Publish to Docker Hub uses: elgohr/Publish-Docker-Github-Action@v5 @@ -89,4 +98,5 @@ jobs: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} default_branch: ${{ github.ref }} - tags: ${{ needs.check-version.outputs.release-version }} \ No newline at end of file + tags: ${{ needs.check-version.outputs.release-version }} + workdir: api \ No newline at end of file diff --git a/.github/workflows/sonar.yml b/.github/workflows/sonar.yml index 96ee81bb..bbd81e83 100644 --- a/.github/workflows/sonar.yml +++ b/.github/workflows/sonar.yml @@ -11,6 +11,9 @@ jobs: build: name: Build and analyze runs-on: ubuntu-latest + defaults: + run: + working-directory: api steps: - uses: actions/checkout@v4 with: diff --git a/.env b/api/.env similarity index 54% rename from .env rename to api/.env index 0c28b048..2b1d58bf 100644 --- a/.env +++ b/api/.env @@ -5,3 +5,8 @@ PEARL_DB=pearl KEYCLOAK_PORT=7080 KEYCLOAK_ADMIN_PASSWORD=administrator + +IMAGES_REGISTRY_DOCKER_IO=docker.io +IMAGE_ACTIVEMQ=apache/activemq-artemis:2.32.0-alpine +ARTEMIS_USER=insee +ARTEMIS_PASSWORD=lille \ No newline at end of file diff --git a/Dockerfile b/api/Dockerfile similarity index 100% rename from Dockerfile rename to api/Dockerfile diff --git a/compose.yml b/api/compose.yml similarity index 59% rename from compose.yml rename to api/compose.yml index 473983ce..f87765f1 100644 --- a/compose.yml +++ b/api/compose.yml @@ -25,4 +25,18 @@ services: ports: - "${KEYCLOAK_PORT}:8080" volumes: - - ./container/keycloak/realms:/opt/keycloak/data/import \ No newline at end of file + - ./container/keycloak/realms:/opt/keycloak/data/import + activemq: + image: ${IMAGES_REGISTRY_DOCKER_IO:-docker.io}/${IMAGE_ACTIVEMQ:-apache/activemq-artemis:2.32.0-alpine} + environment: + ARTEMIS_USER: ${ARTEMIS_USER:-insee} + ARTEMIS_PASSWORD: ${ARTEMIS_PASSWORD:-lille} + ports: + - "61616:61616" + - "8161:8161" + healthcheck: + test: ["CMD-SHELL", "nc -z localhost 61616 || exit 1"] + interval: 10s + timeout: 5s + retries: 10 + start_period: 30s \ No newline at end of file diff --git a/container/keycloak/realms/sabiane.json b/api/container/keycloak/realms/sabiane.json similarity index 100% rename from container/keycloak/realms/sabiane.json rename to api/container/keycloak/realms/sabiane.json diff --git a/api/pom.xml b/api/pom.xml new file mode 100644 index 00000000..8a8a52fa --- /dev/null +++ b/api/pom.xml @@ -0,0 +1,249 @@ + + + 4.0.0 + + + fr.insee.pearljam + pearljam-back-office + ${revision}${changelist} + + + api + Pearl-Jam-Back-Office-API + Back-office API services for PearlJam + + UTF-8 + UTF-8 + inseefr + https://sonarcloud.io + 7.21.1 + + + + + + fr.insee.pearljam + domain + ${revision}${changelist} + + + + + fr.insee.pearljam + domain + ${revision}${changelist} + test-jar + test + + + + org.projectlombok + lombok + true + + + + org.springframework.boot + spring-boot-devtools + true + + + + com.h2database + h2 + test + + + + + org.springframework.boot + spring-boot-starter-test + test + + + + org.springframework.boot + spring-boot-docker-compose + + + + org.springframework.security + spring-security-test + test + + + + com.tngtech.archunit + archunit + 1.3.0 + + + + + org.junit.platform + junit-platform-suite + test + + + io.cucumber + cucumber-java + ${cucumber.version} + test + + + io.cucumber + cucumber-spring + ${cucumber.version} + + + io.cucumber + cucumber-junit-platform-engine + ${cucumber.version} + + + + + + coverage + + + + org.jacoco + jacoco-maven-plugin + 0.8.12 + + + prepare-agent + + prepare-agent + + + + report + + report + + + + XML + HTML + + + + + + + + + + + + + + org.apache.maven.plugins + maven-javadoc-plugin + + + org.springframework.boot + spring-boot-maven-plugin + + + build-info + + build-info + + + + + true + true + -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 + + insee + dev + + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.13.0 + + ${java.version} + ${java.version} + + + org.projectlombok + lombok + ${lombok.version} + + + + + + org.liquibase + liquibase-maven-plugin + ${liquibase.version} + + + org.javassist + javassist + 3.30.2-GA + compile + + + org.liquibase.ext + liquibase-hibernate6 + ${liquibase.version} + + + jakarta.xml.bind + jakarta.xml.bind-api + 4.0.2 + + + org.springframework.boot + spring-boot-starter-validation + + + + + src/main/resources/db/master.xml + src/main/resources/db/changelog/new_changelog.xml + org.postgresql.Driver + jdbc:postgresql://localhost:5432/pearljam_api + public + test,dev,prod + + + + hibernate:spring:fr.insee.pearljam.api.domain?hibernate.physical_naming_strategy=org.hibernate.boot.model.naming.CamelCaseToUnderscoresNamingStrategy&hibernate.implicit_naming_strategy=org.springframework.boot.orm.jpa.hibernate.SpringImplicitNamingStrategy + public + true + debug + + + + org.apache.maven.plugins + maven-surefire-plugin + 3.5.2 + + + **/TestAuthKeyCloak + **/TestNoAuth + **/*Test + **/*TestRunner + **/*IT + + + + + + + diff --git a/src/main/java/fr/insee/pearljam/PearlJamApplication.java b/api/src/main/java/fr/insee/pearljam/PearlJamApplication.java similarity index 100% rename from src/main/java/fr/insee/pearljam/PearlJamApplication.java rename to api/src/main/java/fr/insee/pearljam/PearlJamApplication.java diff --git a/src/main/java/fr/insee/pearljam/api/campaign/controller/CommunicationTemplateController.java b/api/src/main/java/fr/insee/pearljam/api/campaign/controller/CommunicationTemplateController.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/campaign/controller/CommunicationTemplateController.java rename to api/src/main/java/fr/insee/pearljam/api/campaign/controller/CommunicationTemplateController.java diff --git a/src/main/java/fr/insee/pearljam/api/campaign/controller/VisibilityController.java b/api/src/main/java/fr/insee/pearljam/api/campaign/controller/VisibilityController.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/campaign/controller/VisibilityController.java rename to api/src/main/java/fr/insee/pearljam/api/campaign/controller/VisibilityController.java diff --git a/src/main/java/fr/insee/pearljam/api/controller/CampaignController.java b/api/src/main/java/fr/insee/pearljam/api/controller/CampaignController.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/controller/CampaignController.java rename to api/src/main/java/fr/insee/pearljam/api/controller/CampaignController.java diff --git a/src/main/java/fr/insee/pearljam/api/controller/ClosingCauseController.java b/api/src/main/java/fr/insee/pearljam/api/controller/ClosingCauseController.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/controller/ClosingCauseController.java rename to api/src/main/java/fr/insee/pearljam/api/controller/ClosingCauseController.java diff --git a/src/main/java/fr/insee/pearljam/api/controller/ContactOutcomeController.java b/api/src/main/java/fr/insee/pearljam/api/controller/ContactOutcomeController.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/controller/ContactOutcomeController.java rename to api/src/main/java/fr/insee/pearljam/api/controller/ContactOutcomeController.java diff --git a/src/main/java/fr/insee/pearljam/api/controller/CustomStompSessionHandler.java b/api/src/main/java/fr/insee/pearljam/api/controller/CustomStompSessionHandler.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/controller/CustomStompSessionHandler.java rename to api/src/main/java/fr/insee/pearljam/api/controller/CustomStompSessionHandler.java diff --git a/src/main/java/fr/insee/pearljam/api/controller/EnumController.java b/api/src/main/java/fr/insee/pearljam/api/controller/EnumController.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/controller/EnumController.java rename to api/src/main/java/fr/insee/pearljam/api/controller/EnumController.java diff --git a/src/main/java/fr/insee/pearljam/api/controller/InterviewerController.java b/api/src/main/java/fr/insee/pearljam/api/controller/InterviewerController.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/controller/InterviewerController.java rename to api/src/main/java/fr/insee/pearljam/api/controller/InterviewerController.java diff --git a/src/main/java/fr/insee/pearljam/api/controller/MessageController.java b/api/src/main/java/fr/insee/pearljam/api/controller/MessageController.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/controller/MessageController.java rename to api/src/main/java/fr/insee/pearljam/api/controller/MessageController.java diff --git a/src/main/java/fr/insee/pearljam/api/controller/OrganizationUnitController.java b/api/src/main/java/fr/insee/pearljam/api/controller/OrganizationUnitController.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/controller/OrganizationUnitController.java rename to api/src/main/java/fr/insee/pearljam/api/controller/OrganizationUnitController.java diff --git a/src/main/java/fr/insee/pearljam/api/controller/PreferenceController.java b/api/src/main/java/fr/insee/pearljam/api/controller/PreferenceController.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/controller/PreferenceController.java rename to api/src/main/java/fr/insee/pearljam/api/controller/PreferenceController.java diff --git a/src/main/java/fr/insee/pearljam/api/controller/StateController.java b/api/src/main/java/fr/insee/pearljam/api/controller/StateController.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/controller/StateController.java rename to api/src/main/java/fr/insee/pearljam/api/controller/StateController.java diff --git a/src/main/java/fr/insee/pearljam/api/controller/SurveyUnitController.java b/api/src/main/java/fr/insee/pearljam/api/controller/SurveyUnitController.java similarity index 99% rename from src/main/java/fr/insee/pearljam/api/controller/SurveyUnitController.java rename to api/src/main/java/fr/insee/pearljam/api/controller/SurveyUnitController.java index 93a96a06..0b5a79d8 100644 --- a/src/main/java/fr/insee/pearljam/api/controller/SurveyUnitController.java +++ b/api/src/main/java/fr/insee/pearljam/api/controller/SurveyUnitController.java @@ -102,7 +102,7 @@ public ResponseEntity postSurveyUnitInterviewerLinks(@RequestBody List> getListSurveyUnit( @RequestParam(value = "extended", defaultValue = "false", required = false) Boolean extended) { - String userId = authenticatedUserService.getCurrentUserId(); + String userId = "INTERV1";//authenticatedUserService.getCurrentUserId(); List lstSurveyUnit = surveyUnitService.getSurveyUnitDto(userId, extended); if (lstSurveyUnit == null) { log.info("{} GET SurveyUnits resulting in 404", userId); @@ -122,7 +122,7 @@ public ResponseEntity> getListSurveyUnit( @Operation(summary = "Get detail of specific survey unit ") @GetMapping(path = {Constants.API_SURVEYUNIT_ID_INTERVIEWER, Constants.API_SURVEYUNIT_ID}) public SurveyUnitInterviewerResponseDto getSurveyUnitById(@PathVariable(value = "id") String surveyUnitId) { - String userId = authenticatedUserService.getCurrentUserId(); + String userId = "INTERV1"; //authenticatedUserService.getCurrentUserId(); return surveyUnitService.getSurveyUnitInterviewerDetail(userId, surveyUnitId); } diff --git a/src/main/java/fr/insee/pearljam/api/controller/UserController.java b/api/src/main/java/fr/insee/pearljam/api/controller/UserController.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/controller/UserController.java rename to api/src/main/java/fr/insee/pearljam/api/controller/UserController.java diff --git a/src/main/java/fr/insee/pearljam/api/controller/WsText.java b/api/src/main/java/fr/insee/pearljam/api/controller/WsText.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/controller/WsText.java rename to api/src/main/java/fr/insee/pearljam/api/controller/WsText.java diff --git a/src/main/java/fr/insee/pearljam/api/surveyunit/controller/CommentController.java b/api/src/main/java/fr/insee/pearljam/api/surveyunit/controller/CommentController.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/surveyunit/controller/CommentController.java rename to api/src/main/java/fr/insee/pearljam/api/surveyunit/controller/CommentController.java diff --git a/src/main/java/fr/insee/pearljam/api/web/HealthCheckController.java b/api/src/main/java/fr/insee/pearljam/api/web/HealthCheckController.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/web/HealthCheckController.java rename to api/src/main/java/fr/insee/pearljam/api/web/HealthCheckController.java diff --git a/src/main/java/fr/insee/pearljam/api/web/exception/ApiError.java b/api/src/main/java/fr/insee/pearljam/api/web/exception/ApiError.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/web/exception/ApiError.java rename to api/src/main/java/fr/insee/pearljam/api/web/exception/ApiError.java diff --git a/src/main/java/fr/insee/pearljam/api/web/exception/ApiExceptionComponent.java b/api/src/main/java/fr/insee/pearljam/api/web/exception/ApiExceptionComponent.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/web/exception/ApiExceptionComponent.java rename to api/src/main/java/fr/insee/pearljam/api/web/exception/ApiExceptionComponent.java diff --git a/src/main/java/fr/insee/pearljam/api/web/exception/ExceptionControllerAdvice.java b/api/src/main/java/fr/insee/pearljam/api/web/exception/ExceptionControllerAdvice.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/web/exception/ExceptionControllerAdvice.java rename to api/src/main/java/fr/insee/pearljam/api/web/exception/ExceptionControllerAdvice.java diff --git a/src/main/java/lombok.config b/api/src/main/java/lombok.config similarity index 100% rename from src/main/java/lombok.config rename to api/src/main/java/lombok.config diff --git a/src/main/resources/application-docker.yml b/api/src/main/resources/application-docker.yml similarity index 100% rename from src/main/resources/application-docker.yml rename to api/src/main/resources/application-docker.yml diff --git a/src/main/resources/application.yml b/api/src/main/resources/application.yml similarity index 95% rename from src/main/resources/application.yml rename to api/src/main/resources/application.yml index 0b803297..ca812251 100644 --- a/src/main/resources/application.yml +++ b/api/src/main/resources/application.yml @@ -1,6 +1,6 @@ application: - host: http://localhost:8080 - corsOrigins: + host: http://localhost:3000 + corsOrigins: http://localhost:3000,http://localhost:5173 # Define Roles mapping here roles: interviewer: @@ -19,7 +19,7 @@ application: feature: oidc: - enabled: true + enabled: false auth-server-host: application-host: ${application.host} auth-server-url: ${feature.oidc.auth-server-host}/auth diff --git a/src/main/resources/logback-spring.xml b/api/src/main/resources/logback-spring.xml similarity index 100% rename from src/main/resources/logback-spring.xml rename to api/src/main/resources/logback-spring.xml diff --git a/src/test/java/fr/insee/pearljam/api/authKeycloak/TestAuthKeyCloak.java b/api/src/test/java/fr/insee/pearljam/api/authKeycloak/TestAuthKeyCloak.java similarity index 100% rename from src/test/java/fr/insee/pearljam/api/authKeycloak/TestAuthKeyCloak.java rename to api/src/test/java/fr/insee/pearljam/api/authKeycloak/TestAuthKeyCloak.java diff --git a/src/test/java/fr/insee/pearljam/api/campaign/controller/CampaignControllerCreateTest.java b/api/src/test/java/fr/insee/pearljam/api/campaign/controller/CampaignControllerCreateTest.java similarity index 100% rename from src/test/java/fr/insee/pearljam/api/campaign/controller/CampaignControllerCreateTest.java rename to api/src/test/java/fr/insee/pearljam/api/campaign/controller/CampaignControllerCreateTest.java diff --git a/src/test/java/fr/insee/pearljam/api/campaign/controller/CampaignControllerTest.java b/api/src/test/java/fr/insee/pearljam/api/campaign/controller/CampaignControllerTest.java similarity index 100% rename from src/test/java/fr/insee/pearljam/api/campaign/controller/CampaignControllerTest.java rename to api/src/test/java/fr/insee/pearljam/api/campaign/controller/CampaignControllerTest.java diff --git a/src/test/java/fr/insee/pearljam/api/campaign/controller/CampaignControllerUpdateTest.java b/api/src/test/java/fr/insee/pearljam/api/campaign/controller/CampaignControllerUpdateTest.java similarity index 100% rename from src/test/java/fr/insee/pearljam/api/campaign/controller/CampaignControllerUpdateTest.java rename to api/src/test/java/fr/insee/pearljam/api/campaign/controller/CampaignControllerUpdateTest.java diff --git a/src/test/java/fr/insee/pearljam/api/campaign/controller/VisibilityControllerTest.java b/api/src/test/java/fr/insee/pearljam/api/campaign/controller/VisibilityControllerTest.java similarity index 100% rename from src/test/java/fr/insee/pearljam/api/campaign/controller/VisibilityControllerTest.java rename to api/src/test/java/fr/insee/pearljam/api/campaign/controller/VisibilityControllerTest.java diff --git a/src/test/java/fr/insee/pearljam/api/controller/StateControllerTest.java b/api/src/test/java/fr/insee/pearljam/api/controller/StateControllerTest.java similarity index 100% rename from src/test/java/fr/insee/pearljam/api/controller/StateControllerTest.java rename to api/src/test/java/fr/insee/pearljam/api/controller/StateControllerTest.java diff --git a/src/test/java/fr/insee/pearljam/api/message/controller/MessageControllerTest.java b/api/src/test/java/fr/insee/pearljam/api/message/controller/MessageControllerTest.java similarity index 100% rename from src/test/java/fr/insee/pearljam/api/message/controller/MessageControllerTest.java rename to api/src/test/java/fr/insee/pearljam/api/message/controller/MessageControllerTest.java diff --git a/src/test/java/fr/insee/pearljam/api/message/controller/dummy/MailFakeSender.java b/api/src/test/java/fr/insee/pearljam/api/message/controller/dummy/MailFakeSender.java similarity index 100% rename from src/test/java/fr/insee/pearljam/api/message/controller/dummy/MailFakeSender.java rename to api/src/test/java/fr/insee/pearljam/api/message/controller/dummy/MailFakeSender.java diff --git a/src/test/java/fr/insee/pearljam/api/message/controller/dummy/MessageFakeService.java b/api/src/test/java/fr/insee/pearljam/api/message/controller/dummy/MessageFakeService.java similarity index 100% rename from src/test/java/fr/insee/pearljam/api/message/controller/dummy/MessageFakeService.java rename to api/src/test/java/fr/insee/pearljam/api/message/controller/dummy/MessageFakeService.java diff --git a/src/test/java/fr/insee/pearljam/api/noAuth/TestNoAuth.java b/api/src/test/java/fr/insee/pearljam/api/noAuth/TestNoAuth.java similarity index 100% rename from src/test/java/fr/insee/pearljam/api/noAuth/TestNoAuth.java rename to api/src/test/java/fr/insee/pearljam/api/noAuth/TestNoAuth.java diff --git a/src/test/java/fr/insee/pearljam/api/surveyunit/controller/CommentControllerTest.java b/api/src/test/java/fr/insee/pearljam/api/surveyunit/controller/CommentControllerTest.java similarity index 100% rename from src/test/java/fr/insee/pearljam/api/surveyunit/controller/CommentControllerTest.java rename to api/src/test/java/fr/insee/pearljam/api/surveyunit/controller/CommentControllerTest.java diff --git a/src/test/java/fr/insee/pearljam/api/surveyunit/controller/SurveyUnitControllerTest.java b/api/src/test/java/fr/insee/pearljam/api/surveyunit/controller/SurveyUnitControllerTest.java similarity index 97% rename from src/test/java/fr/insee/pearljam/api/surveyunit/controller/SurveyUnitControllerTest.java rename to api/src/test/java/fr/insee/pearljam/api/surveyunit/controller/SurveyUnitControllerTest.java index 1a7be324..f3065444 100644 --- a/src/test/java/fr/insee/pearljam/api/surveyunit/controller/SurveyUnitControllerTest.java +++ b/api/src/test/java/fr/insee/pearljam/api/surveyunit/controller/SurveyUnitControllerTest.java @@ -55,7 +55,9 @@ void setup() { "access": "ACC", "situation": "ABSORBED", "category": "OCCASIONAL", - "occupant": "IDENTIFIED" + "occupant": "IDENTIFIED", + "demenagementWeb": false, + "demenagementEnqueteur": false } """; surveyUnitTemplate = """ @@ -93,7 +95,7 @@ void updateSurveyUnit01() throws Exception { SituationQuestionValue.ABSORBED, CategoryQuestionValue.OCCASIONAL, OccupantQuestionValue.IDENTIFIED - ,null, null, null, null, null + ,null, null, null, null, null, false, false ); assertThat(surveyUnitUpdated.identification()).isEqualTo(identificationExpected); diff --git a/src/test/java/fr/insee/pearljam/api/surveyunit/controller/dummy/CommentFakeService.java b/api/src/test/java/fr/insee/pearljam/api/surveyunit/controller/dummy/CommentFakeService.java similarity index 100% rename from src/test/java/fr/insee/pearljam/api/surveyunit/controller/dummy/CommentFakeService.java rename to api/src/test/java/fr/insee/pearljam/api/surveyunit/controller/dummy/CommentFakeService.java diff --git a/src/test/java/fr/insee/pearljam/api/utils/AuthenticatedUserTestHelper.java b/api/src/test/java/fr/insee/pearljam/api/utils/AuthenticatedUserTestHelper.java similarity index 100% rename from src/test/java/fr/insee/pearljam/api/utils/AuthenticatedUserTestHelper.java rename to api/src/test/java/fr/insee/pearljam/api/utils/AuthenticatedUserTestHelper.java diff --git a/src/test/java/fr/insee/pearljam/api/utils/JsonTestHelper.java b/api/src/test/java/fr/insee/pearljam/api/utils/JsonTestHelper.java similarity index 100% rename from src/test/java/fr/insee/pearljam/api/utils/JsonTestHelper.java rename to api/src/test/java/fr/insee/pearljam/api/utils/JsonTestHelper.java diff --git a/src/test/java/fr/insee/pearljam/api/utils/MockMvcTestUtils.java b/api/src/test/java/fr/insee/pearljam/api/utils/MockMvcTestUtils.java similarity index 100% rename from src/test/java/fr/insee/pearljam/api/utils/MockMvcTestUtils.java rename to api/src/test/java/fr/insee/pearljam/api/utils/MockMvcTestUtils.java diff --git a/src/test/java/fr/insee/pearljam/api/utils/ScriptConstants.java b/api/src/test/java/fr/insee/pearljam/api/utils/ScriptConstants.java similarity index 100% rename from src/test/java/fr/insee/pearljam/api/utils/ScriptConstants.java rename to api/src/test/java/fr/insee/pearljam/api/utils/ScriptConstants.java diff --git a/src/test/java/fr/insee/pearljam/api/utils/dummy/AuthenticationUserFakeService.java b/api/src/test/java/fr/insee/pearljam/api/utils/dummy/AuthenticationUserFakeService.java similarity index 100% rename from src/test/java/fr/insee/pearljam/api/utils/dummy/AuthenticationUserFakeService.java rename to api/src/test/java/fr/insee/pearljam/api/utils/dummy/AuthenticationUserFakeService.java diff --git a/src/test/java/fr/insee/pearljam/api/utils/matcher/StructureDateMatcher.java b/api/src/test/java/fr/insee/pearljam/api/utils/matcher/StructureDateMatcher.java similarity index 100% rename from src/test/java/fr/insee/pearljam/api/utils/matcher/StructureDateMatcher.java rename to api/src/test/java/fr/insee/pearljam/api/utils/matcher/StructureDateMatcher.java diff --git a/src/test/java/fr/insee/pearljam/api/web/exception/ApiExceptionComponentTest.java b/api/src/test/java/fr/insee/pearljam/api/web/exception/ApiExceptionComponentTest.java similarity index 100% rename from src/test/java/fr/insee/pearljam/api/web/exception/ApiExceptionComponentTest.java rename to api/src/test/java/fr/insee/pearljam/api/web/exception/ApiExceptionComponentTest.java diff --git a/src/test/java/fr/insee/pearljam/config/ArchunitApplicationTests.java b/api/src/test/java/fr/insee/pearljam/config/ArchunitApplicationTests.java similarity index 100% rename from src/test/java/fr/insee/pearljam/config/ArchunitApplicationTests.java rename to api/src/test/java/fr/insee/pearljam/config/ArchunitApplicationTests.java diff --git a/src/test/java/fr/insee/pearljam/config/FixedDateServiceConfiguration.java b/api/src/test/java/fr/insee/pearljam/config/FixedDateServiceConfiguration.java similarity index 100% rename from src/test/java/fr/insee/pearljam/config/FixedDateServiceConfiguration.java rename to api/src/test/java/fr/insee/pearljam/config/FixedDateServiceConfiguration.java diff --git a/src/test/java/fr/insee/pearljam/features/CucumberTestRunner.java b/api/src/test/java/fr/insee/pearljam/features/CucumberTestRunner.java similarity index 100% rename from src/test/java/fr/insee/pearljam/features/CucumberTestRunner.java rename to api/src/test/java/fr/insee/pearljam/features/CucumberTestRunner.java diff --git a/src/test/java/fr/insee/pearljam/features/IdentificationSteps.java b/api/src/test/java/fr/insee/pearljam/features/IdentificationSteps.java similarity index 98% rename from src/test/java/fr/insee/pearljam/features/IdentificationSteps.java rename to api/src/test/java/fr/insee/pearljam/features/IdentificationSteps.java index 111232b1..ab373ecf 100644 --- a/src/test/java/fr/insee/pearljam/features/IdentificationSteps.java +++ b/api/src/test/java/fr/insee/pearljam/features/IdentificationSteps.java @@ -118,7 +118,7 @@ public void this_survey_unit_is_affected_to_this_interviewer() throws Exception Set persons = Set.of(new PersonDB(null, Title.MISTER, "Bob", "Marley", "bob.marley@insee.fr", 537535032000L, true, surveyUnit, null, false, null,null)); Identification identificationDB = new Identification(null, IdentificationType.HOUSEF2F, null, null, null, null - , null, null, null, null, null, null); + , null, null, null, null, null, null, false, false); surveyUnit = new SurveyUnit(surveyUnitId, false, false, addressDB, null, campaignDB, interviewerDB, ouDB, persons); surveyUnit.setIdentification(IdentificationDB.fromModel(surveyUnit, identificationDB, identificationConfiguration)); @@ -142,7 +142,9 @@ public void the_interviewer_update_the_survey_unit_with_identification_value() t OccupantQuestionValue.IDENTIFIED, IndividualStatusQuestionValue.SAME_ADDRESS, InterviewerCanProcessQuestionValue.YES, NumberOfRespondentsQuestionValue.ONE, PresentInPreviousHomeQuestionValue.AT_LEAST_ONE, - HouseholdCompositionQuestionValue.SAME_COMPO)); + HouseholdCompositionQuestionValue.SAME_COMPO, + false, + false)); result = mockMvc.perform(put(String.join("/", "/api/survey-unit", surveyUnitId)).with(authentication(securityRole)).contentType(MediaType.APPLICATION_JSON).content(JsonTestHelper.toJson(editedSurveyUnit)).accept(MediaType.APPLICATION_JSON)); diff --git a/src/test/java/fr/insee/pearljam/infrastructure/campaign/adapter/VisibilityDaoAdapterTest.java b/api/src/test/java/fr/insee/pearljam/infrastructure/campaign/adapter/VisibilityDaoAdapterTest.java similarity index 100% rename from src/test/java/fr/insee/pearljam/infrastructure/campaign/adapter/VisibilityDaoAdapterTest.java rename to api/src/test/java/fr/insee/pearljam/infrastructure/campaign/adapter/VisibilityDaoAdapterTest.java diff --git a/src/test/java/fr/insee/pearljam/infrastructure/surveyunit/adapter/CommentDaoAdapterTest.java b/api/src/test/java/fr/insee/pearljam/infrastructure/surveyunit/adapter/CommentDaoAdapterTest.java similarity index 100% rename from src/test/java/fr/insee/pearljam/infrastructure/surveyunit/adapter/CommentDaoAdapterTest.java rename to api/src/test/java/fr/insee/pearljam/infrastructure/surveyunit/adapter/CommentDaoAdapterTest.java diff --git a/api/src/test/java/fr/insee/pearljam/infrastructure/surveyunit/adapter/MovedSurveyUnitDaoAdapterTest.java b/api/src/test/java/fr/insee/pearljam/infrastructure/surveyunit/adapter/MovedSurveyUnitDaoAdapterTest.java new file mode 100644 index 00000000..e1e53ff8 --- /dev/null +++ b/api/src/test/java/fr/insee/pearljam/infrastructure/surveyunit/adapter/MovedSurveyUnitDaoAdapterTest.java @@ -0,0 +1,136 @@ +package fr.insee.pearljam.infrastructure.surveyunit.adapter; + +import fr.insee.pearljam.api.domain.SurveyUnit; +import fr.insee.pearljam.api.domain.State; +import fr.insee.pearljam.api.domain.StateType; +import fr.insee.pearljam.api.repository.SurveyUnitRepository; +import fr.insee.pearljam.infrastructure.surveyunit.entity.PersonDB; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +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; +import org.springframework.transaction.annotation.Transactional; + +import java.util.HashSet; +import java.util.Optional; +import java.util.Set; + +import static org.assertj.core.api.Assertions.assertThat; + +@SpringBootTest +@ActiveProfiles("auth") +@Transactional +class MovedSurveyUnitDaoAdapterTest { + + @Autowired + private MovedSurveyUnitDaoAdapter movedSurveyUnitDaoAdapter; + + @Autowired + private SurveyUnitRepository surveyUnitRepository; + + private final String surveyUnitId = "SU-MOVED-TEST"; + + @BeforeEach + void setup() { + // Create a survey unit with multiple persons + SurveyUnit surveyUnit = new SurveyUnit(); + surveyUnit.setId(surveyUnitId); + surveyUnit.setPriority(false); + + // Add some persons + PersonDB person1 = new PersonDB(); + person1.setFirstName("John"); + person1.setLastName("Doe"); + person1.setEmail("john.doe@example.com"); + person1.setSurveyUnit(surveyUnit); + + PersonDB person2 = new PersonDB(); + person2.setFirstName("Jane"); + person2.setLastName("Smith"); + person2.setEmail("jane.smith@example.com"); + person2.setSurveyUnit(surveyUnit); + + Set persons = new HashSet<>(); + persons.add(person1); + persons.add(person2); + surveyUnit.setPersons(persons); + + // Add some initial states + State initialState = new State(System.currentTimeMillis() - 10000, surveyUnit, StateType.VIN); + surveyUnit.getStates().add(initialState); + + surveyUnitRepository.save(surveyUnit); + } + + @Test + @DisplayName("Should update survey unit with moved status") + void shouldUpdateMovedSurveyUnit() { + // When + movedSurveyUnitDaoAdapter.updateMovedSurveyUnit(surveyUnitId); + + // Then + Optional surveyUnitOptional = surveyUnitRepository.findById(surveyUnitId); + assertThat(surveyUnitOptional).isPresent(); + SurveyUnit surveyUnit = surveyUnitOptional.get(); + + // Verify priority is set to true + assertThat(surveyUnit.isPriority()).isTrue(); + + // Verify states are cleared and new INS state is added + assertThat(surveyUnit.getStates()).hasSize(1); + State state = surveyUnit.getStates().iterator().next(); + assertThat(state.getType()).isEqualTo(StateType.INS); + + // Verify identification demenagementWeb is set to true + if (surveyUnit.getIdentification() != null) { + assertThat(surveyUnit.getIdentification().getDemenagementWeb()).isTrue(); + } + + // Verify only one person exists with firstName="PRENOM" and lastName="NOM" + assertThat(surveyUnit.getPersons()).hasSize(1); + PersonDB person = surveyUnit.getPersons().iterator().next(); + assertThat(person.getFirstName()).isEqualTo("PRENOM"); + assertThat(person.getLastName()).isEqualTo("NOM"); + assertThat(person.getEmail()).isNull(); + } + + @Test + @DisplayName("Should handle survey unit with no persons") + void shouldHandleSurveyUnitWithNoPersons() { + // Given: Create a survey unit with no persons + String emptySurveyUnitId = "SU-EMPTY-TEST"; + SurveyUnit surveyUnit = new SurveyUnit(); + surveyUnit.setId(emptySurveyUnitId); + surveyUnit.setPriority(false); + surveyUnit.setPersons(new HashSet<>()); + surveyUnitRepository.save(surveyUnit); + + // When + movedSurveyUnitDaoAdapter.updateMovedSurveyUnit(emptySurveyUnitId); + + // Then + Optional surveyUnitOptional = surveyUnitRepository.findById(emptySurveyUnitId); + assertThat(surveyUnitOptional).isPresent(); + SurveyUnit updatedSurveyUnit = surveyUnitOptional.get(); + + // Verify a new person was created + assertThat(updatedSurveyUnit.getPersons()).hasSize(1); + PersonDB person = updatedSurveyUnit.getPersons().iterator().next(); + assertThat(person.getFirstName()).isEqualTo("PRENOM"); + assertThat(person.getLastName()).isEqualTo("NOM"); + } + + @Test + @DisplayName("Should do nothing when survey unit does not exist") + void shouldDoNothingWhenSurveyUnitDoesNotExist() { + // When + String nonExistentId = "NON-EXISTENT-ID"; + movedSurveyUnitDaoAdapter.updateMovedSurveyUnit(nonExistentId); + + // Then + Optional surveyUnitOptional = surveyUnitRepository.findById(nonExistentId); + assertThat(surveyUnitOptional).isEmpty(); + } +} diff --git a/src/test/java/fr/insee/pearljam/integration/DemoDataIT.java b/api/src/test/java/fr/insee/pearljam/integration/DemoDataIT.java similarity index 100% rename from src/test/java/fr/insee/pearljam/integration/DemoDataIT.java rename to api/src/test/java/fr/insee/pearljam/integration/DemoDataIT.java diff --git a/src/test/java/fr/insee/pearljam/integration/campaign/CampaignIT.java b/api/src/test/java/fr/insee/pearljam/integration/campaign/CampaignIT.java similarity index 100% rename from src/test/java/fr/insee/pearljam/integration/campaign/CampaignIT.java rename to api/src/test/java/fr/insee/pearljam/integration/campaign/CampaignIT.java diff --git a/src/test/java/fr/insee/pearljam/integration/campaign/CommunicationTemplateIT.java b/api/src/test/java/fr/insee/pearljam/integration/campaign/CommunicationTemplateIT.java similarity index 100% rename from src/test/java/fr/insee/pearljam/integration/campaign/CommunicationTemplateIT.java rename to api/src/test/java/fr/insee/pearljam/integration/campaign/CommunicationTemplateIT.java diff --git a/src/test/java/fr/insee/pearljam/integration/campaign/VisibilityIT.java b/api/src/test/java/fr/insee/pearljam/integration/campaign/VisibilityIT.java similarity index 100% rename from src/test/java/fr/insee/pearljam/integration/campaign/VisibilityIT.java rename to api/src/test/java/fr/insee/pearljam/integration/campaign/VisibilityIT.java diff --git a/src/test/java/fr/insee/pearljam/integration/surveyunit/SurveyUnitIT.java b/api/src/test/java/fr/insee/pearljam/integration/surveyunit/SurveyUnitIT.java similarity index 98% rename from src/test/java/fr/insee/pearljam/integration/surveyunit/SurveyUnitIT.java rename to api/src/test/java/fr/insee/pearljam/integration/surveyunit/SurveyUnitIT.java index ce64ec76..3e2e4599 100644 --- a/src/test/java/fr/insee/pearljam/integration/surveyunit/SurveyUnitIT.java +++ b/api/src/test/java/fr/insee/pearljam/integration/surveyunit/SurveyUnitIT.java @@ -243,7 +243,9 @@ void testGetSurveyUnitDetail() throws Exception { "access":"ACC", "situation":"ORDINARY", "category":"PRIMARY", - "occupant":"IDENTIFIED" + "occupant":"IDENTIFIED", + "demenagementEnqueteur": false, + "demenagementWeb": false }, "communicationTemplates":[ { @@ -350,7 +352,8 @@ void testGetSurveyUnitDetail() throws Exception { "preferredContact": true } ] - } + }, + "otherModeQuestionnaireState": [] }"""; JSONAssert.assertEquals(expectedJson, resultJson, JSONCompareMode.NON_EXTENSIBLE); } @@ -781,8 +784,10 @@ void testGetSurveyUnitDetail1() throws Exception { "access":"ACC", "situation":"ORDINARY", "category":"PRIMARY", - "occupant":"IDENTIFIED" - }, + "occupant":"IDENTIFIED", + "demenagementEnqueteur": false, + "demenagementWeb": false + }, "communicationTemplates":[ { "id":"mesh1", @@ -889,7 +894,8 @@ void testGetSurveyUnitDetail1() throws Exception { "preferredContact":true } ] - } + }, + "otherModeQuestionnaireState": [] }"""; JSONAssert.assertEquals(expectedJson, resultJson, JSONCompareMode.NON_EXTENSIBLE); } diff --git a/src/test/resources/application-auth.yml b/api/src/test/resources/application-auth.yml similarity index 100% rename from src/test/resources/application-auth.yml rename to api/src/test/resources/application-auth.yml diff --git a/src/test/resources/application-demo.yml b/api/src/test/resources/application-demo.yml similarity index 100% rename from src/test/resources/application-demo.yml rename to api/src/test/resources/application-demo.yml diff --git a/src/test/resources/application-noauth.yml b/api/src/test/resources/application-noauth.yml similarity index 100% rename from src/test/resources/application-noauth.yml rename to api/src/test/resources/application-noauth.yml diff --git a/src/test/resources/features/identification.feature b/api/src/test/resources/features/identification.feature similarity index 60% rename from src/test/resources/features/identification.feature rename to api/src/test/resources/features/identification.feature index 79949d22..5cc537b5 100644 --- a/src/test/resources/features/identification.feature +++ b/api/src/test/resources/features/identification.feature @@ -31,12 +31,12 @@ Feature: Identification Examples: | identificationConfiguration | expectedValue | - | IASCO | {"identification":"UNIDENTIFIED","access":"ACC","situation":"ORDINARY","category":"PRIMARY","occupant":"IDENTIFIED"} | - | HOUSEF2F | {"identification":"UNIDENTIFIED","access":"ACC","situation":"ORDINARY","category":"PRIMARY","occupant":"IDENTIFIED"} | - | HOUSETEL | {"situation":"ORDINARY","category":"PRIMARY"} | - | HOUSETELWSR | {"situation":"ORDINARY","category":"PRIMARY"} | - | INDF2F | {"individualStatus":"SAME_ADDRESS","interviewerCanProcess":"YES","situation":"ORDINARY"} | - | INDF2FNOR | {"individualStatus":"SAME_ADDRESS","interviewerCanProcess":"YES","situation":"ORDINARY"} | - | INDTEL | {"individualStatus":"SAME_ADDRESS","situation":"ORDINARY"} | - | INDTELNOR | {"individualStatus":"SAME_ADDRESS","situation":"ORDINARY"} | - | SRCVREINT | {"numberOfRespondents":"ONE","individualStatus":"SAME_ADDRESS","householdComposition":"SAME_COMPO","presentInPreviousHome":"AT_LEAST_ONE","situation":"ORDINARY"} | + | IASCO | {"identification":"UNIDENTIFIED","access":"ACC","situation":"ORDINARY","category":"PRIMARY","occupant":"IDENTIFIED","demenagementWeb":false,"demenagementEnqueteur":false} | + | HOUSEF2F | {"identification":"UNIDENTIFIED","access":"ACC","situation":"ORDINARY","category":"PRIMARY","occupant":"IDENTIFIED","demenagementWeb":false,"demenagementEnqueteur":false} | + | HOUSETEL | {"situation":"ORDINARY","category":"PRIMARY","demenagementWeb":false,"demenagementEnqueteur":false} | + | HOUSETELWSR | {"situation":"ORDINARY","category":"PRIMARY","demenagementWeb":false,"demenagementEnqueteur":false} | + | INDF2F | {"individualStatus":"SAME_ADDRESS","interviewerCanProcess":"YES","situation":"ORDINARY","demenagementWeb":false,"demenagementEnqueteur":false} | + | INDF2FNOR | {"individualStatus":"SAME_ADDRESS","interviewerCanProcess":"YES","situation":"ORDINARY","demenagementWeb":false,"demenagementEnqueteur":false} | + | INDTEL | {"individualStatus":"SAME_ADDRESS","situation":"ORDINARY","demenagementWeb":false,"demenagementEnqueteur":false} | + | INDTELNOR | {"individualStatus":"SAME_ADDRESS","situation":"ORDINARY","demenagementWeb":false,"demenagementEnqueteur":false} | + | SRCVREINT | {"numberOfRespondents":"ONE","individualStatus":"SAME_ADDRESS","householdComposition":"SAME_COMPO","presentInPreviousHome":"AT_LEAST_ONE","situation":"ORDINARY","demenagementWeb":false,"demenagementEnqueteur":false} | diff --git a/domain/pom.xml b/domain/pom.xml new file mode 100644 index 00000000..b73fb06b --- /dev/null +++ b/domain/pom.xml @@ -0,0 +1,158 @@ + + + 4.0.0 + + + fr.insee.pearljam + pearljam-back-office + ${revision}${changelist} + + + domain + Pearl-Jam-Back-Office-Domain + Domain and business logic for PearlJam + + + UTF-8 + UTF-8 + 42.7.7 + + + + + + org.springframework.boot + spring-boot-starter-web + + + + org.springframework.boot + spring-boot-starter-websocket + + + + org.springframework.boot + spring-boot-starter-validation + + + + + org.springdoc + springdoc-openapi-starter-webmvc-ui + 2.8.4 + + + + + org.springframework.boot + spring-boot-starter-security + + + + org.springframework.boot + spring-boot-starter-oauth2-resource-server + + + + + org.springframework.boot + spring-boot-starter-data-jpa + + + + org.liquibase + liquibase-core + + + + org.postgresql + postgresql + ${postgresql.version} + + + + com.h2database + h2 + test + + + + + org.springframework.boot + spring-boot-starter-test + test + + + + org.springframework.security + spring-security-test + test + + + + + commons-validator + commons-validator + 1.9.0 + + + + org.projectlombok + lombok + true + + + + + org.codehaus.janino + janino + 3.1.12 + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.13.0 + + ${java.version} + ${java.version} + + + org.projectlombok + lombok + ${lombok.version} + + + + + + org.apache.maven.plugins + maven-surefire-plugin + 3.5.2 + + + **/*Test + + + + + org.apache.maven.plugins + maven-jar-plugin + 3.3.0 + + + + test-jar + + + + + + + diff --git a/src/main/java/fr/insee/pearljam/api/bussinessrules/BusinessRules.java b/domain/src/main/java/fr/insee/pearljam/api/bussinessrules/BusinessRules.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/bussinessrules/BusinessRules.java rename to domain/src/main/java/fr/insee/pearljam/api/bussinessrules/BusinessRules.java diff --git a/src/main/java/fr/insee/pearljam/api/campaign/dto/input/CampaignCreateDto.java b/domain/src/main/java/fr/insee/pearljam/api/campaign/dto/input/CampaignCreateDto.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/campaign/dto/input/CampaignCreateDto.java rename to domain/src/main/java/fr/insee/pearljam/api/campaign/dto/input/CampaignCreateDto.java diff --git a/src/main/java/fr/insee/pearljam/api/campaign/dto/input/CampaignUpdateDto.java b/domain/src/main/java/fr/insee/pearljam/api/campaign/dto/input/CampaignUpdateDto.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/campaign/dto/input/CampaignUpdateDto.java rename to domain/src/main/java/fr/insee/pearljam/api/campaign/dto/input/CampaignUpdateDto.java diff --git a/src/main/java/fr/insee/pearljam/api/campaign/dto/input/CommunicationTemplateCreateDto.java b/domain/src/main/java/fr/insee/pearljam/api/campaign/dto/input/CommunicationTemplateCreateDto.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/campaign/dto/input/CommunicationTemplateCreateDto.java rename to domain/src/main/java/fr/insee/pearljam/api/campaign/dto/input/CommunicationTemplateCreateDto.java diff --git a/src/main/java/fr/insee/pearljam/api/campaign/dto/input/VisibilityCampaignCreateDto.java b/domain/src/main/java/fr/insee/pearljam/api/campaign/dto/input/VisibilityCampaignCreateDto.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/campaign/dto/input/VisibilityCampaignCreateDto.java rename to domain/src/main/java/fr/insee/pearljam/api/campaign/dto/input/VisibilityCampaignCreateDto.java diff --git a/src/main/java/fr/insee/pearljam/api/campaign/dto/input/VisibilityCampaignUpdateDto.java b/domain/src/main/java/fr/insee/pearljam/api/campaign/dto/input/VisibilityCampaignUpdateDto.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/campaign/dto/input/VisibilityCampaignUpdateDto.java rename to domain/src/main/java/fr/insee/pearljam/api/campaign/dto/input/VisibilityCampaignUpdateDto.java diff --git a/src/main/java/fr/insee/pearljam/api/campaign/dto/input/VisibilityUpdateDto.java b/domain/src/main/java/fr/insee/pearljam/api/campaign/dto/input/VisibilityUpdateDto.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/campaign/dto/input/VisibilityUpdateDto.java rename to domain/src/main/java/fr/insee/pearljam/api/campaign/dto/input/VisibilityUpdateDto.java diff --git a/src/main/java/fr/insee/pearljam/api/campaign/dto/output/CampaignResponseDto.java b/domain/src/main/java/fr/insee/pearljam/api/campaign/dto/output/CampaignResponseDto.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/campaign/dto/output/CampaignResponseDto.java rename to domain/src/main/java/fr/insee/pearljam/api/campaign/dto/output/CampaignResponseDto.java diff --git a/src/main/java/fr/insee/pearljam/api/campaign/dto/output/CommunicationTemplateResponseDto.java b/domain/src/main/java/fr/insee/pearljam/api/campaign/dto/output/CommunicationTemplateResponseDto.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/campaign/dto/output/CommunicationTemplateResponseDto.java rename to domain/src/main/java/fr/insee/pearljam/api/campaign/dto/output/CommunicationTemplateResponseDto.java diff --git a/src/main/java/fr/insee/pearljam/api/campaign/dto/output/VisibilityCampaignDto.java b/domain/src/main/java/fr/insee/pearljam/api/campaign/dto/output/VisibilityCampaignDto.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/campaign/dto/output/VisibilityCampaignDto.java rename to domain/src/main/java/fr/insee/pearljam/api/campaign/dto/output/VisibilityCampaignDto.java diff --git a/src/main/java/fr/insee/pearljam/api/configuration/CorsConfig.java b/domain/src/main/java/fr/insee/pearljam/api/configuration/CorsConfig.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/configuration/CorsConfig.java rename to domain/src/main/java/fr/insee/pearljam/api/configuration/CorsConfig.java diff --git a/src/main/java/fr/insee/pearljam/api/configuration/SpringDocConfiguration.java b/domain/src/main/java/fr/insee/pearljam/api/configuration/SpringDocConfiguration.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/configuration/SpringDocConfiguration.java rename to domain/src/main/java/fr/insee/pearljam/api/configuration/SpringDocConfiguration.java diff --git a/src/main/java/fr/insee/pearljam/api/configuration/WebSocketConfig.java b/domain/src/main/java/fr/insee/pearljam/api/configuration/WebSocketConfig.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/configuration/WebSocketConfig.java rename to domain/src/main/java/fr/insee/pearljam/api/configuration/WebSocketConfig.java diff --git a/src/main/java/fr/insee/pearljam/api/configuration/log/LogInterceptor.java b/domain/src/main/java/fr/insee/pearljam/api/configuration/log/LogInterceptor.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/configuration/log/LogInterceptor.java rename to domain/src/main/java/fr/insee/pearljam/api/configuration/log/LogInterceptor.java diff --git a/src/main/java/fr/insee/pearljam/api/configuration/log/LogInterceptorConfiguration.java b/domain/src/main/java/fr/insee/pearljam/api/configuration/log/LogInterceptorConfiguration.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/configuration/log/LogInterceptorConfiguration.java rename to domain/src/main/java/fr/insee/pearljam/api/configuration/log/LogInterceptorConfiguration.java diff --git a/src/main/java/fr/insee/pearljam/api/configuration/log/LogbackAvoidLogForgeryContentEncoder.java b/domain/src/main/java/fr/insee/pearljam/api/configuration/log/LogbackAvoidLogForgeryContentEncoder.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/configuration/log/LogbackAvoidLogForgeryContentEncoder.java rename to domain/src/main/java/fr/insee/pearljam/api/configuration/log/LogbackAvoidLogForgeryContentEncoder.java diff --git a/src/main/java/fr/insee/pearljam/api/configuration/log/PropertiesLogger.java b/domain/src/main/java/fr/insee/pearljam/api/configuration/log/PropertiesLogger.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/configuration/log/PropertiesLogger.java rename to domain/src/main/java/fr/insee/pearljam/api/configuration/log/PropertiesLogger.java diff --git a/src/main/java/fr/insee/pearljam/api/configuration/properties/ApplicationProperties.java b/domain/src/main/java/fr/insee/pearljam/api/configuration/properties/ApplicationProperties.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/configuration/properties/ApplicationProperties.java rename to domain/src/main/java/fr/insee/pearljam/api/configuration/properties/ApplicationProperties.java diff --git a/src/main/java/fr/insee/pearljam/api/configuration/properties/AuthEnumProperties.java b/domain/src/main/java/fr/insee/pearljam/api/configuration/properties/AuthEnumProperties.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/configuration/properties/AuthEnumProperties.java rename to domain/src/main/java/fr/insee/pearljam/api/configuration/properties/AuthEnumProperties.java diff --git a/src/main/java/fr/insee/pearljam/api/configuration/properties/ExternalServicesProperties.java b/domain/src/main/java/fr/insee/pearljam/api/configuration/properties/ExternalServicesProperties.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/configuration/properties/ExternalServicesProperties.java rename to domain/src/main/java/fr/insee/pearljam/api/configuration/properties/ExternalServicesProperties.java diff --git a/src/main/java/fr/insee/pearljam/api/constants/Constants.java b/domain/src/main/java/fr/insee/pearljam/api/constants/Constants.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/constants/Constants.java rename to domain/src/main/java/fr/insee/pearljam/api/constants/Constants.java diff --git a/src/main/java/fr/insee/pearljam/api/domain/Address.java b/domain/src/main/java/fr/insee/pearljam/api/domain/Address.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/domain/Address.java rename to domain/src/main/java/fr/insee/pearljam/api/domain/Address.java diff --git a/src/main/java/fr/insee/pearljam/api/domain/Campaign.java b/domain/src/main/java/fr/insee/pearljam/api/domain/Campaign.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/domain/Campaign.java rename to domain/src/main/java/fr/insee/pearljam/api/domain/Campaign.java diff --git a/src/main/java/fr/insee/pearljam/api/domain/CampaignMessageRecipient.java b/domain/src/main/java/fr/insee/pearljam/api/domain/CampaignMessageRecipient.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/domain/CampaignMessageRecipient.java rename to domain/src/main/java/fr/insee/pearljam/api/domain/CampaignMessageRecipient.java diff --git a/src/main/java/fr/insee/pearljam/api/domain/CampaignMessageRecipientId.java b/domain/src/main/java/fr/insee/pearljam/api/domain/CampaignMessageRecipientId.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/domain/CampaignMessageRecipientId.java rename to domain/src/main/java/fr/insee/pearljam/api/domain/CampaignMessageRecipientId.java diff --git a/src/main/java/fr/insee/pearljam/api/domain/ClosingCause.java b/domain/src/main/java/fr/insee/pearljam/api/domain/ClosingCause.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/domain/ClosingCause.java rename to domain/src/main/java/fr/insee/pearljam/api/domain/ClosingCause.java diff --git a/src/main/java/fr/insee/pearljam/api/domain/ClosingCauseType.java b/domain/src/main/java/fr/insee/pearljam/api/domain/ClosingCauseType.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/domain/ClosingCauseType.java rename to domain/src/main/java/fr/insee/pearljam/api/domain/ClosingCauseType.java diff --git a/src/main/java/fr/insee/pearljam/api/domain/ContactAttempt.java b/domain/src/main/java/fr/insee/pearljam/api/domain/ContactAttempt.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/domain/ContactAttempt.java rename to domain/src/main/java/fr/insee/pearljam/api/domain/ContactAttempt.java diff --git a/src/main/java/fr/insee/pearljam/api/domain/ContactAttemptConfiguration.java b/domain/src/main/java/fr/insee/pearljam/api/domain/ContactAttemptConfiguration.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/domain/ContactAttemptConfiguration.java rename to domain/src/main/java/fr/insee/pearljam/api/domain/ContactAttemptConfiguration.java diff --git a/src/main/java/fr/insee/pearljam/api/domain/ContactOutcomeConfiguration.java b/domain/src/main/java/fr/insee/pearljam/api/domain/ContactOutcomeConfiguration.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/domain/ContactOutcomeConfiguration.java rename to domain/src/main/java/fr/insee/pearljam/api/domain/ContactOutcomeConfiguration.java diff --git a/src/main/java/fr/insee/pearljam/api/domain/ContactOutcomeType.java b/domain/src/main/java/fr/insee/pearljam/api/domain/ContactOutcomeType.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/domain/ContactOutcomeType.java rename to domain/src/main/java/fr/insee/pearljam/api/domain/ContactOutcomeType.java diff --git a/src/main/java/fr/insee/pearljam/api/domain/IdentificationConfiguration.java b/domain/src/main/java/fr/insee/pearljam/api/domain/IdentificationConfiguration.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/domain/IdentificationConfiguration.java rename to domain/src/main/java/fr/insee/pearljam/api/domain/IdentificationConfiguration.java diff --git a/src/main/java/fr/insee/pearljam/api/domain/InseeAddress.java b/domain/src/main/java/fr/insee/pearljam/api/domain/InseeAddress.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/domain/InseeAddress.java rename to domain/src/main/java/fr/insee/pearljam/api/domain/InseeAddress.java diff --git a/src/main/java/fr/insee/pearljam/api/domain/InseeSampleIdentifier.java b/domain/src/main/java/fr/insee/pearljam/api/domain/InseeSampleIdentifier.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/domain/InseeSampleIdentifier.java rename to domain/src/main/java/fr/insee/pearljam/api/domain/InseeSampleIdentifier.java diff --git a/src/main/java/fr/insee/pearljam/api/domain/Interviewer.java b/domain/src/main/java/fr/insee/pearljam/api/domain/Interviewer.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/domain/Interviewer.java rename to domain/src/main/java/fr/insee/pearljam/api/domain/Interviewer.java diff --git a/src/main/java/fr/insee/pearljam/api/domain/Medium.java b/domain/src/main/java/fr/insee/pearljam/api/domain/Medium.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/domain/Medium.java rename to domain/src/main/java/fr/insee/pearljam/api/domain/Medium.java diff --git a/src/main/java/fr/insee/pearljam/api/domain/Message.java b/domain/src/main/java/fr/insee/pearljam/api/domain/Message.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/domain/Message.java rename to domain/src/main/java/fr/insee/pearljam/api/domain/Message.java diff --git a/src/main/java/fr/insee/pearljam/api/domain/MessageStatus.java b/domain/src/main/java/fr/insee/pearljam/api/domain/MessageStatus.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/domain/MessageStatus.java rename to domain/src/main/java/fr/insee/pearljam/api/domain/MessageStatus.java diff --git a/src/main/java/fr/insee/pearljam/api/domain/MessageStatusId.java b/domain/src/main/java/fr/insee/pearljam/api/domain/MessageStatusId.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/domain/MessageStatusId.java rename to domain/src/main/java/fr/insee/pearljam/api/domain/MessageStatusId.java diff --git a/src/main/java/fr/insee/pearljam/api/domain/MessageStatusType.java b/domain/src/main/java/fr/insee/pearljam/api/domain/MessageStatusType.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/domain/MessageStatusType.java rename to domain/src/main/java/fr/insee/pearljam/api/domain/MessageStatusType.java diff --git a/src/main/java/fr/insee/pearljam/api/domain/OUMessageRecipient.java b/domain/src/main/java/fr/insee/pearljam/api/domain/OUMessageRecipient.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/domain/OUMessageRecipient.java rename to domain/src/main/java/fr/insee/pearljam/api/domain/OUMessageRecipient.java diff --git a/src/main/java/fr/insee/pearljam/api/domain/OUMessageRecipientId.java b/domain/src/main/java/fr/insee/pearljam/api/domain/OUMessageRecipientId.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/domain/OUMessageRecipientId.java rename to domain/src/main/java/fr/insee/pearljam/api/domain/OUMessageRecipientId.java diff --git a/src/main/java/fr/insee/pearljam/api/domain/OrganizationUnit.java b/domain/src/main/java/fr/insee/pearljam/api/domain/OrganizationUnit.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/domain/OrganizationUnit.java rename to domain/src/main/java/fr/insee/pearljam/api/domain/OrganizationUnit.java diff --git a/src/main/java/fr/insee/pearljam/api/domain/OrganizationUnitType.java b/domain/src/main/java/fr/insee/pearljam/api/domain/OrganizationUnitType.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/domain/OrganizationUnitType.java rename to domain/src/main/java/fr/insee/pearljam/api/domain/OrganizationUnitType.java diff --git a/domain/src/main/java/fr/insee/pearljam/api/domain/OtherModeQuestionnaireState.java b/domain/src/main/java/fr/insee/pearljam/api/domain/OtherModeQuestionnaireState.java new file mode 100644 index 00000000..c5c501f7 --- /dev/null +++ b/domain/src/main/java/fr/insee/pearljam/api/domain/OtherModeQuestionnaireState.java @@ -0,0 +1,31 @@ +package fr.insee.pearljam.api.domain; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import jakarta.persistence.*; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +import java.time.LocalDateTime; + +@Entity +@Table +@NoArgsConstructor +@Getter +@Setter +public class OtherModeQuestionnaireState { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(length = 50) + private String id; + + @Column + private String state; + + @Column(name = "date", insertable = false, updatable = false) + private LocalDateTime date; + + @ManyToOne + @JsonIgnore + private SurveyUnit surveyUnit; +} \ No newline at end of file diff --git a/src/main/java/fr/insee/pearljam/api/domain/Referent.java b/domain/src/main/java/fr/insee/pearljam/api/domain/Referent.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/domain/Referent.java rename to domain/src/main/java/fr/insee/pearljam/api/domain/Referent.java diff --git a/src/main/java/fr/insee/pearljam/api/domain/Response.java b/domain/src/main/java/fr/insee/pearljam/api/domain/Response.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/domain/Response.java rename to domain/src/main/java/fr/insee/pearljam/api/domain/Response.java diff --git a/src/main/java/fr/insee/pearljam/api/domain/SampleIdentifier.java b/domain/src/main/java/fr/insee/pearljam/api/domain/SampleIdentifier.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/domain/SampleIdentifier.java rename to domain/src/main/java/fr/insee/pearljam/api/domain/SampleIdentifier.java diff --git a/src/main/java/fr/insee/pearljam/api/domain/Source.java b/domain/src/main/java/fr/insee/pearljam/api/domain/Source.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/domain/Source.java rename to domain/src/main/java/fr/insee/pearljam/api/domain/Source.java diff --git a/src/main/java/fr/insee/pearljam/api/domain/State.java b/domain/src/main/java/fr/insee/pearljam/api/domain/State.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/domain/State.java rename to domain/src/main/java/fr/insee/pearljam/api/domain/State.java diff --git a/src/main/java/fr/insee/pearljam/api/domain/StateType.java b/domain/src/main/java/fr/insee/pearljam/api/domain/StateType.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/domain/StateType.java rename to domain/src/main/java/fr/insee/pearljam/api/domain/StateType.java diff --git a/src/main/java/fr/insee/pearljam/api/domain/Status.java b/domain/src/main/java/fr/insee/pearljam/api/domain/Status.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/domain/Status.java rename to domain/src/main/java/fr/insee/pearljam/api/domain/Status.java diff --git a/src/main/java/fr/insee/pearljam/api/domain/SurveyUnit.java b/domain/src/main/java/fr/insee/pearljam/api/domain/SurveyUnit.java similarity index 96% rename from src/main/java/fr/insee/pearljam/api/domain/SurveyUnit.java rename to domain/src/main/java/fr/insee/pearljam/api/domain/SurveyUnit.java index c6355675..5ce10370 100644 --- a/src/main/java/fr/insee/pearljam/api/domain/SurveyUnit.java +++ b/domain/src/main/java/fr/insee/pearljam/api/domain/SurveyUnit.java @@ -99,6 +99,9 @@ public class SurveyUnit implements Serializable { "surveyUnit", orphanRemoval = true) private IdentificationDB identification; + @OneToMany(fetch = FetchType.EAGER, targetEntity = OtherModeQuestionnaireState.class, cascade = CascadeType.ALL, mappedBy = "surveyUnit", orphanRemoval = true) + private Set otherModeQuestionnaireState; + /** * The Campaign of SurveyUnit */ @@ -364,4 +367,10 @@ public void updateNextContactHistory(ContactHistory nextContactHistory) { this.contactHistory.add(next); } + + public void setIdentificationDemenagementWeb(Boolean demenagementWeb) { + if (this.identification != null) { + this.identification.setDemenagementWeb(demenagementWeb); + } + } } diff --git a/src/main/java/fr/insee/pearljam/api/domain/SurveyUnitTempZone.java b/domain/src/main/java/fr/insee/pearljam/api/domain/SurveyUnitTempZone.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/domain/SurveyUnitTempZone.java rename to domain/src/main/java/fr/insee/pearljam/api/domain/SurveyUnitTempZone.java diff --git a/src/main/java/fr/insee/pearljam/api/domain/Title.java b/domain/src/main/java/fr/insee/pearljam/api/domain/Title.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/domain/Title.java rename to domain/src/main/java/fr/insee/pearljam/api/domain/Title.java diff --git a/src/main/java/fr/insee/pearljam/api/domain/User.java b/domain/src/main/java/fr/insee/pearljam/api/domain/User.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/domain/User.java rename to domain/src/main/java/fr/insee/pearljam/api/domain/User.java diff --git a/src/main/java/fr/insee/pearljam/api/dto/address/AddressDto.java b/domain/src/main/java/fr/insee/pearljam/api/dto/address/AddressDto.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/dto/address/AddressDto.java rename to domain/src/main/java/fr/insee/pearljam/api/dto/address/AddressDto.java diff --git a/src/main/java/fr/insee/pearljam/api/dto/campaign/CampaignCommonsDto.java b/domain/src/main/java/fr/insee/pearljam/api/dto/campaign/CampaignCommonsDto.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/dto/campaign/CampaignCommonsDto.java rename to domain/src/main/java/fr/insee/pearljam/api/dto/campaign/CampaignCommonsDto.java diff --git a/src/main/java/fr/insee/pearljam/api/dto/campaign/CampaignDto.java b/domain/src/main/java/fr/insee/pearljam/api/dto/campaign/CampaignDto.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/dto/campaign/CampaignDto.java rename to domain/src/main/java/fr/insee/pearljam/api/dto/campaign/CampaignDto.java diff --git a/src/main/java/fr/insee/pearljam/api/dto/campaign/CampaignSensitivityDto.java b/domain/src/main/java/fr/insee/pearljam/api/dto/campaign/CampaignSensitivityDto.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/dto/campaign/CampaignSensitivityDto.java rename to domain/src/main/java/fr/insee/pearljam/api/dto/campaign/CampaignSensitivityDto.java diff --git a/src/main/java/fr/insee/pearljam/api/dto/campaign/OngoingDto.java b/domain/src/main/java/fr/insee/pearljam/api/dto/campaign/OngoingDto.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/dto/campaign/OngoingDto.java rename to domain/src/main/java/fr/insee/pearljam/api/dto/campaign/OngoingDto.java diff --git a/src/main/java/fr/insee/pearljam/api/dto/closingcause/ClosingCauseCountDto.java b/domain/src/main/java/fr/insee/pearljam/api/dto/closingcause/ClosingCauseCountDto.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/dto/closingcause/ClosingCauseCountDto.java rename to domain/src/main/java/fr/insee/pearljam/api/dto/closingcause/ClosingCauseCountDto.java diff --git a/src/main/java/fr/insee/pearljam/api/dto/closingcause/ClosingCauseDto.java b/domain/src/main/java/fr/insee/pearljam/api/dto/closingcause/ClosingCauseDto.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/dto/closingcause/ClosingCauseDto.java rename to domain/src/main/java/fr/insee/pearljam/api/dto/closingcause/ClosingCauseDto.java diff --git a/src/main/java/fr/insee/pearljam/api/dto/contactattempt/ContactAttemptDto.java b/domain/src/main/java/fr/insee/pearljam/api/dto/contactattempt/ContactAttemptDto.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/dto/contactattempt/ContactAttemptDto.java rename to domain/src/main/java/fr/insee/pearljam/api/dto/contactattempt/ContactAttemptDto.java diff --git a/src/main/java/fr/insee/pearljam/api/dto/contactoutcome/ContactOutcomeTypeCountCampaignDto.java b/domain/src/main/java/fr/insee/pearljam/api/dto/contactoutcome/ContactOutcomeTypeCountCampaignDto.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/dto/contactoutcome/ContactOutcomeTypeCountCampaignDto.java rename to domain/src/main/java/fr/insee/pearljam/api/dto/contactoutcome/ContactOutcomeTypeCountCampaignDto.java diff --git a/src/main/java/fr/insee/pearljam/api/dto/contactoutcome/ContactOutcomeTypeCountDto.java b/domain/src/main/java/fr/insee/pearljam/api/dto/contactoutcome/ContactOutcomeTypeCountDto.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/dto/contactoutcome/ContactOutcomeTypeCountDto.java rename to domain/src/main/java/fr/insee/pearljam/api/dto/contactoutcome/ContactOutcomeTypeCountDto.java diff --git a/src/main/java/fr/insee/pearljam/api/dto/count/CountDto.java b/domain/src/main/java/fr/insee/pearljam/api/dto/count/CountDto.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/dto/count/CountDto.java rename to domain/src/main/java/fr/insee/pearljam/api/dto/count/CountDto.java diff --git a/src/main/java/fr/insee/pearljam/api/dto/interviewer/InterviewerContextDto.java b/domain/src/main/java/fr/insee/pearljam/api/dto/interviewer/InterviewerContextDto.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/dto/interviewer/InterviewerContextDto.java rename to domain/src/main/java/fr/insee/pearljam/api/dto/interviewer/InterviewerContextDto.java diff --git a/src/main/java/fr/insee/pearljam/api/dto/interviewer/InterviewerCountDto.java b/domain/src/main/java/fr/insee/pearljam/api/dto/interviewer/InterviewerCountDto.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/dto/interviewer/InterviewerCountDto.java rename to domain/src/main/java/fr/insee/pearljam/api/dto/interviewer/InterviewerCountDto.java diff --git a/src/main/java/fr/insee/pearljam/api/dto/interviewer/InterviewerDto.java b/domain/src/main/java/fr/insee/pearljam/api/dto/interviewer/InterviewerDto.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/dto/interviewer/InterviewerDto.java rename to domain/src/main/java/fr/insee/pearljam/api/dto/interviewer/InterviewerDto.java diff --git a/src/main/java/fr/insee/pearljam/api/dto/message/MessageDto.java b/domain/src/main/java/fr/insee/pearljam/api/dto/message/MessageDto.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/dto/message/MessageDto.java rename to domain/src/main/java/fr/insee/pearljam/api/dto/message/MessageDto.java diff --git a/src/main/java/fr/insee/pearljam/api/dto/message/VerifyNameResponseDto.java b/domain/src/main/java/fr/insee/pearljam/api/dto/message/VerifyNameResponseDto.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/dto/message/VerifyNameResponseDto.java rename to domain/src/main/java/fr/insee/pearljam/api/dto/message/VerifyNameResponseDto.java diff --git a/src/main/java/fr/insee/pearljam/api/dto/organizationunit/OrganizationUnitContextDto.java b/domain/src/main/java/fr/insee/pearljam/api/dto/organizationunit/OrganizationUnitContextDto.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/dto/organizationunit/OrganizationUnitContextDto.java rename to domain/src/main/java/fr/insee/pearljam/api/dto/organizationunit/OrganizationUnitContextDto.java diff --git a/src/main/java/fr/insee/pearljam/api/dto/organizationunit/OrganizationUnitDto.java b/domain/src/main/java/fr/insee/pearljam/api/dto/organizationunit/OrganizationUnitDto.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/dto/organizationunit/OrganizationUnitDto.java rename to domain/src/main/java/fr/insee/pearljam/api/dto/organizationunit/OrganizationUnitDto.java diff --git a/domain/src/main/java/fr/insee/pearljam/api/dto/otherModeQuestionnaire/OtherModeQuestionnaireDto.java b/domain/src/main/java/fr/insee/pearljam/api/dto/otherModeQuestionnaire/OtherModeQuestionnaireDto.java new file mode 100644 index 00000000..61e5166d --- /dev/null +++ b/domain/src/main/java/fr/insee/pearljam/api/dto/otherModeQuestionnaire/OtherModeQuestionnaireDto.java @@ -0,0 +1,4 @@ +package fr.insee.pearljam.api.dto.otherModeQuestionnaire; + +public record OtherModeQuestionnaireDto(String surveyUnitId, String type) { +} \ No newline at end of file diff --git a/src/main/java/fr/insee/pearljam/api/dto/phonenumber/PhoneNumberDto.java b/domain/src/main/java/fr/insee/pearljam/api/dto/phonenumber/PhoneNumberDto.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/dto/phonenumber/PhoneNumberDto.java rename to domain/src/main/java/fr/insee/pearljam/api/dto/phonenumber/PhoneNumberDto.java diff --git a/src/main/java/fr/insee/pearljam/api/dto/referent/ReferentDto.java b/domain/src/main/java/fr/insee/pearljam/api/dto/referent/ReferentDto.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/dto/referent/ReferentDto.java rename to domain/src/main/java/fr/insee/pearljam/api/dto/referent/ReferentDto.java diff --git a/src/main/java/fr/insee/pearljam/api/dto/sampleidentifier/SampleIdentifiersDto.java b/domain/src/main/java/fr/insee/pearljam/api/dto/sampleidentifier/SampleIdentifiersDto.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/dto/sampleidentifier/SampleIdentifiersDto.java rename to domain/src/main/java/fr/insee/pearljam/api/dto/sampleidentifier/SampleIdentifiersDto.java diff --git a/src/main/java/fr/insee/pearljam/api/dto/state/StateCountCampaignDto.java b/domain/src/main/java/fr/insee/pearljam/api/dto/state/StateCountCampaignDto.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/dto/state/StateCountCampaignDto.java rename to domain/src/main/java/fr/insee/pearljam/api/dto/state/StateCountCampaignDto.java diff --git a/src/main/java/fr/insee/pearljam/api/dto/state/StateCountDto.java b/domain/src/main/java/fr/insee/pearljam/api/dto/state/StateCountDto.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/dto/state/StateCountDto.java rename to domain/src/main/java/fr/insee/pearljam/api/dto/state/StateCountDto.java diff --git a/src/main/java/fr/insee/pearljam/api/dto/state/StateDto.java b/domain/src/main/java/fr/insee/pearljam/api/dto/state/StateDto.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/dto/state/StateDto.java rename to domain/src/main/java/fr/insee/pearljam/api/dto/state/StateDto.java diff --git a/src/main/java/fr/insee/pearljam/api/dto/state/SurveyUnitStatesDto.java b/domain/src/main/java/fr/insee/pearljam/api/dto/state/SurveyUnitStatesDto.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/dto/state/SurveyUnitStatesDto.java rename to domain/src/main/java/fr/insee/pearljam/api/dto/state/SurveyUnitStatesDto.java diff --git a/src/main/java/fr/insee/pearljam/api/dto/statedata/StateDataDto.java b/domain/src/main/java/fr/insee/pearljam/api/dto/statedata/StateDataDto.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/dto/statedata/StateDataDto.java rename to domain/src/main/java/fr/insee/pearljam/api/dto/statedata/StateDataDto.java diff --git a/src/main/java/fr/insee/pearljam/api/dto/surveyunit/HabilitationDto.java b/domain/src/main/java/fr/insee/pearljam/api/dto/surveyunit/HabilitationDto.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/dto/surveyunit/HabilitationDto.java rename to domain/src/main/java/fr/insee/pearljam/api/dto/surveyunit/HabilitationDto.java diff --git a/src/main/java/fr/insee/pearljam/api/dto/surveyunit/InterrogationOkNokDto.java b/domain/src/main/java/fr/insee/pearljam/api/dto/surveyunit/InterrogationOkNokDto.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/dto/surveyunit/InterrogationOkNokDto.java rename to domain/src/main/java/fr/insee/pearljam/api/dto/surveyunit/InterrogationOkNokDto.java diff --git a/src/main/java/fr/insee/pearljam/api/dto/surveyunit/InterrogationOkNokResponseDto.java b/domain/src/main/java/fr/insee/pearljam/api/dto/surveyunit/InterrogationOkNokResponseDto.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/dto/surveyunit/InterrogationOkNokResponseDto.java rename to domain/src/main/java/fr/insee/pearljam/api/dto/surveyunit/InterrogationOkNokResponseDto.java diff --git a/src/main/java/fr/insee/pearljam/api/dto/surveyunit/SurveyUnitCampaignDto.java b/domain/src/main/java/fr/insee/pearljam/api/dto/surveyunit/SurveyUnitCampaignDto.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/dto/surveyunit/SurveyUnitCampaignDto.java rename to domain/src/main/java/fr/insee/pearljam/api/dto/surveyunit/SurveyUnitCampaignDto.java diff --git a/src/main/java/fr/insee/pearljam/api/dto/surveyunit/SurveyUnitDetailDto.java b/domain/src/main/java/fr/insee/pearljam/api/dto/surveyunit/SurveyUnitDetailDto.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/dto/surveyunit/SurveyUnitDetailDto.java rename to domain/src/main/java/fr/insee/pearljam/api/dto/surveyunit/SurveyUnitDetailDto.java diff --git a/src/main/java/fr/insee/pearljam/api/dto/surveyunit/SurveyUnitDto.java b/domain/src/main/java/fr/insee/pearljam/api/dto/surveyunit/SurveyUnitDto.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/dto/surveyunit/SurveyUnitDto.java rename to domain/src/main/java/fr/insee/pearljam/api/dto/surveyunit/SurveyUnitDto.java diff --git a/src/main/java/fr/insee/pearljam/api/dto/surveyunit/SurveyUnitInterviewerLinkDto.java b/domain/src/main/java/fr/insee/pearljam/api/dto/surveyunit/SurveyUnitInterviewerLinkDto.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/dto/surveyunit/SurveyUnitInterviewerLinkDto.java rename to domain/src/main/java/fr/insee/pearljam/api/dto/surveyunit/SurveyUnitInterviewerLinkDto.java diff --git a/src/main/java/fr/insee/pearljam/api/dto/user/UserContextDto.java b/domain/src/main/java/fr/insee/pearljam/api/dto/user/UserContextDto.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/dto/user/UserContextDto.java rename to domain/src/main/java/fr/insee/pearljam/api/dto/user/UserContextDto.java diff --git a/src/main/java/fr/insee/pearljam/api/dto/user/UserDto.java b/domain/src/main/java/fr/insee/pearljam/api/dto/user/UserDto.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/dto/user/UserDto.java rename to domain/src/main/java/fr/insee/pearljam/api/dto/user/UserDto.java diff --git a/src/main/java/fr/insee/pearljam/api/exception/BadRequestException.java b/domain/src/main/java/fr/insee/pearljam/api/exception/BadRequestException.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/exception/BadRequestException.java rename to domain/src/main/java/fr/insee/pearljam/api/exception/BadRequestException.java diff --git a/src/main/java/fr/insee/pearljam/api/exception/ConflictException.java b/domain/src/main/java/fr/insee/pearljam/api/exception/ConflictException.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/exception/ConflictException.java rename to domain/src/main/java/fr/insee/pearljam/api/exception/ConflictException.java diff --git a/src/main/java/fr/insee/pearljam/api/exception/NoOrganizationUnitException.java b/domain/src/main/java/fr/insee/pearljam/api/exception/NoOrganizationUnitException.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/exception/NoOrganizationUnitException.java rename to domain/src/main/java/fr/insee/pearljam/api/exception/NoOrganizationUnitException.java diff --git a/src/main/java/fr/insee/pearljam/api/exception/NotFoundException.java b/domain/src/main/java/fr/insee/pearljam/api/exception/NotFoundException.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/exception/NotFoundException.java rename to domain/src/main/java/fr/insee/pearljam/api/exception/NotFoundException.java diff --git a/src/main/java/fr/insee/pearljam/api/exception/SurveyUnitException.java b/domain/src/main/java/fr/insee/pearljam/api/exception/SurveyUnitException.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/exception/SurveyUnitException.java rename to domain/src/main/java/fr/insee/pearljam/api/exception/SurveyUnitException.java diff --git a/src/main/java/fr/insee/pearljam/api/exception/UserAlreadyExistsException.java b/domain/src/main/java/fr/insee/pearljam/api/exception/UserAlreadyExistsException.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/exception/UserAlreadyExistsException.java rename to domain/src/main/java/fr/insee/pearljam/api/exception/UserAlreadyExistsException.java diff --git a/src/main/java/fr/insee/pearljam/api/message/dto/MailDto.java b/domain/src/main/java/fr/insee/pearljam/api/message/dto/MailDto.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/message/dto/MailDto.java rename to domain/src/main/java/fr/insee/pearljam/api/message/dto/MailDto.java diff --git a/src/main/java/fr/insee/pearljam/api/repository/AddressRepository.java b/domain/src/main/java/fr/insee/pearljam/api/repository/AddressRepository.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/repository/AddressRepository.java rename to domain/src/main/java/fr/insee/pearljam/api/repository/AddressRepository.java diff --git a/src/main/java/fr/insee/pearljam/api/repository/CampaignRepository.java b/domain/src/main/java/fr/insee/pearljam/api/repository/CampaignRepository.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/repository/CampaignRepository.java rename to domain/src/main/java/fr/insee/pearljam/api/repository/CampaignRepository.java diff --git a/src/main/java/fr/insee/pearljam/api/repository/ClosingCauseRepository.java b/domain/src/main/java/fr/insee/pearljam/api/repository/ClosingCauseRepository.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/repository/ClosingCauseRepository.java rename to domain/src/main/java/fr/insee/pearljam/api/repository/ClosingCauseRepository.java diff --git a/src/main/java/fr/insee/pearljam/api/repository/ContactOutcomeRepository.java b/domain/src/main/java/fr/insee/pearljam/api/repository/ContactOutcomeRepository.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/repository/ContactOutcomeRepository.java rename to domain/src/main/java/fr/insee/pearljam/api/repository/ContactOutcomeRepository.java diff --git a/src/main/java/fr/insee/pearljam/api/repository/InterviewerRepository.java b/domain/src/main/java/fr/insee/pearljam/api/repository/InterviewerRepository.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/repository/InterviewerRepository.java rename to domain/src/main/java/fr/insee/pearljam/api/repository/InterviewerRepository.java diff --git a/src/main/java/fr/insee/pearljam/api/repository/MessageRepository.java b/domain/src/main/java/fr/insee/pearljam/api/repository/MessageRepository.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/repository/MessageRepository.java rename to domain/src/main/java/fr/insee/pearljam/api/repository/MessageRepository.java diff --git a/src/main/java/fr/insee/pearljam/api/repository/MessageStatusRepository.java b/domain/src/main/java/fr/insee/pearljam/api/repository/MessageStatusRepository.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/repository/MessageStatusRepository.java rename to domain/src/main/java/fr/insee/pearljam/api/repository/MessageStatusRepository.java diff --git a/src/main/java/fr/insee/pearljam/api/repository/OrganizationUnitRepository.java b/domain/src/main/java/fr/insee/pearljam/api/repository/OrganizationUnitRepository.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/repository/OrganizationUnitRepository.java rename to domain/src/main/java/fr/insee/pearljam/api/repository/OrganizationUnitRepository.java diff --git a/domain/src/main/java/fr/insee/pearljam/api/repository/OtherModeQuestionnaireRepository.java b/domain/src/main/java/fr/insee/pearljam/api/repository/OtherModeQuestionnaireRepository.java new file mode 100644 index 00000000..f22b9a22 --- /dev/null +++ b/domain/src/main/java/fr/insee/pearljam/api/repository/OtherModeQuestionnaireRepository.java @@ -0,0 +1,7 @@ +package fr.insee.pearljam.api.repository; + +import fr.insee.pearljam.api.domain.OtherModeQuestionnaireState; +import org.springframework.data.jpa.repository.JpaRepository; + +public interface OtherModeQuestionnaireRepository extends JpaRepository { +} \ No newline at end of file diff --git a/src/main/java/fr/insee/pearljam/api/repository/PersonRepository.java b/domain/src/main/java/fr/insee/pearljam/api/repository/PersonRepository.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/repository/PersonRepository.java rename to domain/src/main/java/fr/insee/pearljam/api/repository/PersonRepository.java diff --git a/src/main/java/fr/insee/pearljam/api/repository/ReferentRepository.java b/domain/src/main/java/fr/insee/pearljam/api/repository/ReferentRepository.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/repository/ReferentRepository.java rename to domain/src/main/java/fr/insee/pearljam/api/repository/ReferentRepository.java diff --git a/src/main/java/fr/insee/pearljam/api/repository/SampleIdentifierRepository.java b/domain/src/main/java/fr/insee/pearljam/api/repository/SampleIdentifierRepository.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/repository/SampleIdentifierRepository.java rename to domain/src/main/java/fr/insee/pearljam/api/repository/SampleIdentifierRepository.java diff --git a/src/main/java/fr/insee/pearljam/api/repository/StateRepository.java b/domain/src/main/java/fr/insee/pearljam/api/repository/StateRepository.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/repository/StateRepository.java rename to domain/src/main/java/fr/insee/pearljam/api/repository/StateRepository.java diff --git a/src/main/java/fr/insee/pearljam/api/repository/SurveyUnitRepository.java b/domain/src/main/java/fr/insee/pearljam/api/repository/SurveyUnitRepository.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/repository/SurveyUnitRepository.java rename to domain/src/main/java/fr/insee/pearljam/api/repository/SurveyUnitRepository.java diff --git a/src/main/java/fr/insee/pearljam/api/repository/SurveyUnitTempZoneRepository.java b/domain/src/main/java/fr/insee/pearljam/api/repository/SurveyUnitTempZoneRepository.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/repository/SurveyUnitTempZoneRepository.java rename to domain/src/main/java/fr/insee/pearljam/api/repository/SurveyUnitTempZoneRepository.java diff --git a/src/main/java/fr/insee/pearljam/api/repository/UserRepository.java b/domain/src/main/java/fr/insee/pearljam/api/repository/UserRepository.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/repository/UserRepository.java rename to domain/src/main/java/fr/insee/pearljam/api/repository/UserRepository.java diff --git a/src/main/java/fr/insee/pearljam/api/service/CampaignService.java b/domain/src/main/java/fr/insee/pearljam/api/service/CampaignService.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/service/CampaignService.java rename to domain/src/main/java/fr/insee/pearljam/api/service/CampaignService.java diff --git a/src/main/java/fr/insee/pearljam/api/service/ClosingCauseService.java b/domain/src/main/java/fr/insee/pearljam/api/service/ClosingCauseService.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/service/ClosingCauseService.java rename to domain/src/main/java/fr/insee/pearljam/api/service/ClosingCauseService.java diff --git a/src/main/java/fr/insee/pearljam/api/service/ContactOutcomeService.java b/domain/src/main/java/fr/insee/pearljam/api/service/ContactOutcomeService.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/service/ContactOutcomeService.java rename to domain/src/main/java/fr/insee/pearljam/api/service/ContactOutcomeService.java diff --git a/src/main/java/fr/insee/pearljam/api/service/InterviewerService.java b/domain/src/main/java/fr/insee/pearljam/api/service/InterviewerService.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/service/InterviewerService.java rename to domain/src/main/java/fr/insee/pearljam/api/service/InterviewerService.java diff --git a/src/main/java/fr/insee/pearljam/api/service/MessageService.java b/domain/src/main/java/fr/insee/pearljam/api/service/MessageService.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/service/MessageService.java rename to domain/src/main/java/fr/insee/pearljam/api/service/MessageService.java diff --git a/src/main/java/fr/insee/pearljam/api/service/OrganizationUnitService.java b/domain/src/main/java/fr/insee/pearljam/api/service/OrganizationUnitService.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/service/OrganizationUnitService.java rename to domain/src/main/java/fr/insee/pearljam/api/service/OrganizationUnitService.java diff --git a/src/main/java/fr/insee/pearljam/api/service/PreferenceService.java b/domain/src/main/java/fr/insee/pearljam/api/service/PreferenceService.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/service/PreferenceService.java rename to domain/src/main/java/fr/insee/pearljam/api/service/PreferenceService.java diff --git a/src/main/java/fr/insee/pearljam/api/service/ReferentService.java b/domain/src/main/java/fr/insee/pearljam/api/service/ReferentService.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/service/ReferentService.java rename to domain/src/main/java/fr/insee/pearljam/api/service/ReferentService.java diff --git a/src/main/java/fr/insee/pearljam/api/service/StateService.java b/domain/src/main/java/fr/insee/pearljam/api/service/StateService.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/service/StateService.java rename to domain/src/main/java/fr/insee/pearljam/api/service/StateService.java diff --git a/src/main/java/fr/insee/pearljam/api/service/SurveyUnitService.java b/domain/src/main/java/fr/insee/pearljam/api/service/SurveyUnitService.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/service/SurveyUnitService.java rename to domain/src/main/java/fr/insee/pearljam/api/service/SurveyUnitService.java diff --git a/src/main/java/fr/insee/pearljam/api/service/SurveyUnitUpdateService.java b/domain/src/main/java/fr/insee/pearljam/api/service/SurveyUnitUpdateService.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/service/SurveyUnitUpdateService.java rename to domain/src/main/java/fr/insee/pearljam/api/service/SurveyUnitUpdateService.java diff --git a/src/main/java/fr/insee/pearljam/api/service/UserService.java b/domain/src/main/java/fr/insee/pearljam/api/service/UserService.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/service/UserService.java rename to domain/src/main/java/fr/insee/pearljam/api/service/UserService.java diff --git a/src/main/java/fr/insee/pearljam/api/service/UtilsService.java b/domain/src/main/java/fr/insee/pearljam/api/service/UtilsService.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/service/UtilsService.java rename to domain/src/main/java/fr/insee/pearljam/api/service/UtilsService.java diff --git a/src/main/java/fr/insee/pearljam/api/service/impl/CampaignServiceImpl.java b/domain/src/main/java/fr/insee/pearljam/api/service/impl/CampaignServiceImpl.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/service/impl/CampaignServiceImpl.java rename to domain/src/main/java/fr/insee/pearljam/api/service/impl/CampaignServiceImpl.java diff --git a/src/main/java/fr/insee/pearljam/api/service/impl/ClosingCauseServiceImpl.java b/domain/src/main/java/fr/insee/pearljam/api/service/impl/ClosingCauseServiceImpl.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/service/impl/ClosingCauseServiceImpl.java rename to domain/src/main/java/fr/insee/pearljam/api/service/impl/ClosingCauseServiceImpl.java diff --git a/src/main/java/fr/insee/pearljam/api/service/impl/ContactOutcomeServiceImpl.java b/domain/src/main/java/fr/insee/pearljam/api/service/impl/ContactOutcomeServiceImpl.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/service/impl/ContactOutcomeServiceImpl.java rename to domain/src/main/java/fr/insee/pearljam/api/service/impl/ContactOutcomeServiceImpl.java diff --git a/src/main/java/fr/insee/pearljam/api/service/impl/InterviewerServiceImpl.java b/domain/src/main/java/fr/insee/pearljam/api/service/impl/InterviewerServiceImpl.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/service/impl/InterviewerServiceImpl.java rename to domain/src/main/java/fr/insee/pearljam/api/service/impl/InterviewerServiceImpl.java diff --git a/src/main/java/fr/insee/pearljam/api/service/impl/MessageServiceImpl.java b/domain/src/main/java/fr/insee/pearljam/api/service/impl/MessageServiceImpl.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/service/impl/MessageServiceImpl.java rename to domain/src/main/java/fr/insee/pearljam/api/service/impl/MessageServiceImpl.java diff --git a/src/main/java/fr/insee/pearljam/api/service/impl/OrganizationUnitServiceImpl.java b/domain/src/main/java/fr/insee/pearljam/api/service/impl/OrganizationUnitServiceImpl.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/service/impl/OrganizationUnitServiceImpl.java rename to domain/src/main/java/fr/insee/pearljam/api/service/impl/OrganizationUnitServiceImpl.java diff --git a/domain/src/main/java/fr/insee/pearljam/api/service/impl/OtherModeQuestionnaireServiceImpl.java b/domain/src/main/java/fr/insee/pearljam/api/service/impl/OtherModeQuestionnaireServiceImpl.java new file mode 100644 index 00000000..d3288990 --- /dev/null +++ b/domain/src/main/java/fr/insee/pearljam/api/service/impl/OtherModeQuestionnaireServiceImpl.java @@ -0,0 +1,33 @@ +package fr.insee.pearljam.api.service.impl; + +import fr.insee.pearljam.api.domain.OtherModeQuestionnaireState; +import fr.insee.pearljam.api.repository.OtherModeQuestionnaireRepository; +import fr.insee.pearljam.api.repository.SurveyUnitRepository; +import fr.insee.pearljam.domain.surveyunit.model.OtherModeQuestionnaire; +import fr.insee.pearljam.domain.surveyunit.port.serverside.OtherModeQuestionnaireService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +@Service +@Transactional +@Slf4j +@RequiredArgsConstructor +public class OtherModeQuestionnaireServiceImpl implements OtherModeQuestionnaireService { + + private final OtherModeQuestionnaireRepository repository; + private final SurveyUnitRepository surveyUnitRepository; + + + @Override + public void addOtherModeQuestionnaire(OtherModeQuestionnaire otherModeQuestionnaire) { + var surveyUnit = surveyUnitRepository.findById(otherModeQuestionnaire.surveyUnitId()); + var otherModeQuestionnaireState = new OtherModeQuestionnaireState(); + otherModeQuestionnaireState.setState(otherModeQuestionnaire.type()); + if(surveyUnit.isPresent()){ + otherModeQuestionnaireState.setSurveyUnit(surveyUnit.get()); + this.repository.save(otherModeQuestionnaireState); + } + } +} \ No newline at end of file diff --git a/src/main/java/fr/insee/pearljam/api/service/impl/PreferenceServiceImpl.java b/domain/src/main/java/fr/insee/pearljam/api/service/impl/PreferenceServiceImpl.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/service/impl/PreferenceServiceImpl.java rename to domain/src/main/java/fr/insee/pearljam/api/service/impl/PreferenceServiceImpl.java diff --git a/src/main/java/fr/insee/pearljam/api/service/impl/ReferentServiceImpl.java b/domain/src/main/java/fr/insee/pearljam/api/service/impl/ReferentServiceImpl.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/service/impl/ReferentServiceImpl.java rename to domain/src/main/java/fr/insee/pearljam/api/service/impl/ReferentServiceImpl.java diff --git a/src/main/java/fr/insee/pearljam/api/service/impl/StateServiceImpl.java b/domain/src/main/java/fr/insee/pearljam/api/service/impl/StateServiceImpl.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/service/impl/StateServiceImpl.java rename to domain/src/main/java/fr/insee/pearljam/api/service/impl/StateServiceImpl.java diff --git a/src/main/java/fr/insee/pearljam/api/service/impl/SurveyUnitServiceImpl.java b/domain/src/main/java/fr/insee/pearljam/api/service/impl/SurveyUnitServiceImpl.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/service/impl/SurveyUnitServiceImpl.java rename to domain/src/main/java/fr/insee/pearljam/api/service/impl/SurveyUnitServiceImpl.java diff --git a/src/main/java/fr/insee/pearljam/api/service/impl/SurveyUnitUpdateServiceImpl.java b/domain/src/main/java/fr/insee/pearljam/api/service/impl/SurveyUnitUpdateServiceImpl.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/service/impl/SurveyUnitUpdateServiceImpl.java rename to domain/src/main/java/fr/insee/pearljam/api/service/impl/SurveyUnitUpdateServiceImpl.java diff --git a/src/main/java/fr/insee/pearljam/api/service/impl/UserServiceImpl.java b/domain/src/main/java/fr/insee/pearljam/api/service/impl/UserServiceImpl.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/service/impl/UserServiceImpl.java rename to domain/src/main/java/fr/insee/pearljam/api/service/impl/UserServiceImpl.java diff --git a/src/main/java/fr/insee/pearljam/api/service/impl/UtilsServiceImpl.java b/domain/src/main/java/fr/insee/pearljam/api/service/impl/UtilsServiceImpl.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/service/impl/UtilsServiceImpl.java rename to domain/src/main/java/fr/insee/pearljam/api/service/impl/UtilsServiceImpl.java diff --git a/src/main/java/fr/insee/pearljam/api/surveyunit/dto/CommentDto.java b/domain/src/main/java/fr/insee/pearljam/api/surveyunit/dto/CommentDto.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/surveyunit/dto/CommentDto.java rename to domain/src/main/java/fr/insee/pearljam/api/surveyunit/dto/CommentDto.java diff --git a/src/main/java/fr/insee/pearljam/api/surveyunit/dto/CommunicationRequestCreateDto.java b/domain/src/main/java/fr/insee/pearljam/api/surveyunit/dto/CommunicationRequestCreateDto.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/surveyunit/dto/CommunicationRequestCreateDto.java rename to domain/src/main/java/fr/insee/pearljam/api/surveyunit/dto/CommunicationRequestCreateDto.java diff --git a/src/main/java/fr/insee/pearljam/api/surveyunit/dto/CommunicationRequestResponseDto.java b/domain/src/main/java/fr/insee/pearljam/api/surveyunit/dto/CommunicationRequestResponseDto.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/surveyunit/dto/CommunicationRequestResponseDto.java rename to domain/src/main/java/fr/insee/pearljam/api/surveyunit/dto/CommunicationRequestResponseDto.java diff --git a/src/main/java/fr/insee/pearljam/api/surveyunit/dto/CommunicationRequestStatusDto.java b/domain/src/main/java/fr/insee/pearljam/api/surveyunit/dto/CommunicationRequestStatusDto.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/surveyunit/dto/CommunicationRequestStatusDto.java rename to domain/src/main/java/fr/insee/pearljam/api/surveyunit/dto/CommunicationRequestStatusDto.java diff --git a/src/main/java/fr/insee/pearljam/api/surveyunit/dto/ContactOutcomeDto.java b/domain/src/main/java/fr/insee/pearljam/api/surveyunit/dto/ContactOutcomeDto.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/surveyunit/dto/ContactOutcomeDto.java rename to domain/src/main/java/fr/insee/pearljam/api/surveyunit/dto/ContactOutcomeDto.java diff --git a/src/main/java/fr/insee/pearljam/api/surveyunit/dto/PersonDto.java b/domain/src/main/java/fr/insee/pearljam/api/surveyunit/dto/PersonDto.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/surveyunit/dto/PersonDto.java rename to domain/src/main/java/fr/insee/pearljam/api/surveyunit/dto/PersonDto.java diff --git a/src/main/java/fr/insee/pearljam/api/surveyunit/dto/SurveyUnitCreationDto.java b/domain/src/main/java/fr/insee/pearljam/api/surveyunit/dto/SurveyUnitCreationDto.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/surveyunit/dto/SurveyUnitCreationDto.java rename to domain/src/main/java/fr/insee/pearljam/api/surveyunit/dto/SurveyUnitCreationDto.java diff --git a/src/main/java/fr/insee/pearljam/api/surveyunit/dto/SurveyUnitInterviewerResponseDto.java b/domain/src/main/java/fr/insee/pearljam/api/surveyunit/dto/SurveyUnitInterviewerResponseDto.java similarity index 92% rename from src/main/java/fr/insee/pearljam/api/surveyunit/dto/SurveyUnitInterviewerResponseDto.java rename to domain/src/main/java/fr/insee/pearljam/api/surveyunit/dto/SurveyUnitInterviewerResponseDto.java index ff0d736c..47779f63 100644 --- a/src/main/java/fr/insee/pearljam/api/surveyunit/dto/SurveyUnitInterviewerResponseDto.java +++ b/domain/src/main/java/fr/insee/pearljam/api/surveyunit/dto/SurveyUnitInterviewerResponseDto.java @@ -3,6 +3,7 @@ import com.fasterxml.jackson.annotation.JsonInclude; import fr.insee.pearljam.api.bussinessrules.BusinessRules; import fr.insee.pearljam.api.campaign.dto.output.CommunicationTemplateResponseDto; +import fr.insee.pearljam.api.domain.OtherModeQuestionnaireState; import fr.insee.pearljam.api.domain.State; import fr.insee.pearljam.api.domain.SurveyUnit; import fr.insee.pearljam.api.dto.address.AddressDto; @@ -16,6 +17,7 @@ import java.util.Comparator; import java.util.List; +import java.util.Set; @JsonInclude(JsonInclude.Include.NON_NULL) public record SurveyUnitInterviewerResponseDto( @@ -35,7 +37,8 @@ public record SurveyUnitInterviewerResponseDto( List communicationTemplates, List communicationRequests, PreviousContactHistoryDto previousContactHistory, - NextContactHistoryDto nextContactHistory + NextContactHistoryDto nextContactHistory, + Set otherModeQuestionnaireState ) { public static SurveyUnitInterviewerResponseDto fromModel(SurveyUnitForInterviewer surveyUnitForInterviewer) { @@ -75,6 +78,6 @@ public static SurveyUnitInterviewerResponseDto fromModel(SurveyUnitForInterviewe IdentificationDto.fromModel(surveyUnit.getModelIdentification()), CommunicationTemplateResponseDto.fromModel(surveyUnitForInterviewer.communicationTemplates()), CommunicationRequestResponseDto.fromModel(surveyUnit.getModelCommunicationRequests()), - previousContactHistory, nextContactHistory); + previousContactHistory, nextContactHistory, surveyUnit.getOtherModeQuestionnaireState()); } } diff --git a/src/main/java/fr/insee/pearljam/api/surveyunit/dto/SurveyUnitUpdateDto.java b/domain/src/main/java/fr/insee/pearljam/api/surveyunit/dto/SurveyUnitUpdateDto.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/surveyunit/dto/SurveyUnitUpdateDto.java rename to domain/src/main/java/fr/insee/pearljam/api/surveyunit/dto/SurveyUnitUpdateDto.java diff --git a/src/main/java/fr/insee/pearljam/api/surveyunit/dto/SurveyUnitVisibilityDto.java b/domain/src/main/java/fr/insee/pearljam/api/surveyunit/dto/SurveyUnitVisibilityDto.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/surveyunit/dto/SurveyUnitVisibilityDto.java rename to domain/src/main/java/fr/insee/pearljam/api/surveyunit/dto/SurveyUnitVisibilityDto.java diff --git a/src/main/java/fr/insee/pearljam/api/surveyunit/dto/contactHistory/NextContactHistoryDto.java b/domain/src/main/java/fr/insee/pearljam/api/surveyunit/dto/contactHistory/NextContactHistoryDto.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/surveyunit/dto/contactHistory/NextContactHistoryDto.java rename to domain/src/main/java/fr/insee/pearljam/api/surveyunit/dto/contactHistory/NextContactHistoryDto.java diff --git a/src/main/java/fr/insee/pearljam/api/surveyunit/dto/contactHistory/NextContactHistoryPersonDto.java b/domain/src/main/java/fr/insee/pearljam/api/surveyunit/dto/contactHistory/NextContactHistoryPersonDto.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/surveyunit/dto/contactHistory/NextContactHistoryPersonDto.java rename to domain/src/main/java/fr/insee/pearljam/api/surveyunit/dto/contactHistory/NextContactHistoryPersonDto.java diff --git a/src/main/java/fr/insee/pearljam/api/surveyunit/dto/contactHistory/PreviousContactHistoryDto.java b/domain/src/main/java/fr/insee/pearljam/api/surveyunit/dto/contactHistory/PreviousContactHistoryDto.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/surveyunit/dto/contactHistory/PreviousContactHistoryDto.java rename to domain/src/main/java/fr/insee/pearljam/api/surveyunit/dto/contactHistory/PreviousContactHistoryDto.java diff --git a/src/main/java/fr/insee/pearljam/api/surveyunit/dto/contactHistory/PreviousContactHistoryPersonDto.java b/domain/src/main/java/fr/insee/pearljam/api/surveyunit/dto/contactHistory/PreviousContactHistoryPersonDto.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/surveyunit/dto/contactHistory/PreviousContactHistoryPersonDto.java rename to domain/src/main/java/fr/insee/pearljam/api/surveyunit/dto/contactHistory/PreviousContactHistoryPersonDto.java diff --git a/src/main/java/fr/insee/pearljam/api/surveyunit/dto/identification/HouseF2FIdentificationDto.java b/domain/src/main/java/fr/insee/pearljam/api/surveyunit/dto/identification/HouseF2FIdentificationDto.java similarity index 80% rename from src/main/java/fr/insee/pearljam/api/surveyunit/dto/identification/HouseF2FIdentificationDto.java rename to domain/src/main/java/fr/insee/pearljam/api/surveyunit/dto/identification/HouseF2FIdentificationDto.java index 4cf07b44..c3cecf3a 100644 --- a/src/main/java/fr/insee/pearljam/api/surveyunit/dto/identification/HouseF2FIdentificationDto.java +++ b/domain/src/main/java/fr/insee/pearljam/api/surveyunit/dto/identification/HouseF2FIdentificationDto.java @@ -9,7 +9,9 @@ public record HouseF2FIdentificationDto AccessQuestionValue access, SituationQuestionValue situation, CategoryQuestionValue category, - OccupantQuestionValue occupant) implements IdentificationDto { + OccupantQuestionValue occupant, + Boolean demenagementWeb, + Boolean demenagementEnqueteur) implements IdentificationDto { /** @@ -26,6 +28,8 @@ public Identification toModel() { .situation(situation) .category(category) .occupant(occupant) + .demenagementWeb(demenagementWeb) + .demenagementEnqueteur(demenagementEnqueteur) .build(); } @@ -42,7 +46,9 @@ public static HouseF2FIdentificationDto fromModel(Identification identification) identification.access(), identification.situation(), identification.category(), - identification.occupant() + identification.occupant(), + identification.demenagementWeb(), + identification.demenagementEnqueteur() ); } } diff --git a/src/main/java/fr/insee/pearljam/api/surveyunit/dto/identification/HouseTelIdentificationDto.java b/domain/src/main/java/fr/insee/pearljam/api/surveyunit/dto/identification/HouseTelIdentificationDto.java similarity index 76% rename from src/main/java/fr/insee/pearljam/api/surveyunit/dto/identification/HouseTelIdentificationDto.java rename to domain/src/main/java/fr/insee/pearljam/api/surveyunit/dto/identification/HouseTelIdentificationDto.java index b28ad01c..dc1ae095 100644 --- a/src/main/java/fr/insee/pearljam/api/surveyunit/dto/identification/HouseTelIdentificationDto.java +++ b/domain/src/main/java/fr/insee/pearljam/api/surveyunit/dto/identification/HouseTelIdentificationDto.java @@ -7,7 +7,9 @@ public record HouseTelIdentificationDto ( SituationQuestionValue situation, - CategoryQuestionValue category) implements IdentificationDto { + CategoryQuestionValue category, + Boolean demenagementWeb, + Boolean demenagementEnqueteur) implements IdentificationDto { /** @@ -22,6 +24,8 @@ public Identification toModel() { .identificationType(IdentificationType.HOUSETEL) .situation(situation) .category(category) + .demenagementWeb(demenagementWeb) + .demenagementEnqueteur(demenagementEnqueteur) .build(); } @@ -35,7 +39,9 @@ public static HouseTelIdentificationDto fromModel(Identification identification) return new HouseTelIdentificationDto( identification.situation(), - identification.category() + identification.category(), + identification.demenagementWeb(), + identification.demenagementEnqueteur() ); } } diff --git a/src/main/java/fr/insee/pearljam/api/surveyunit/dto/identification/IdentificationDto.java b/domain/src/main/java/fr/insee/pearljam/api/surveyunit/dto/identification/IdentificationDto.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/surveyunit/dto/identification/IdentificationDto.java rename to domain/src/main/java/fr/insee/pearljam/api/surveyunit/dto/identification/IdentificationDto.java diff --git a/src/main/java/fr/insee/pearljam/api/surveyunit/dto/identification/IndividualF2FIdentificationDto.java b/domain/src/main/java/fr/insee/pearljam/api/surveyunit/dto/identification/IndividualF2FIdentificationDto.java similarity index 80% rename from src/main/java/fr/insee/pearljam/api/surveyunit/dto/identification/IndividualF2FIdentificationDto.java rename to domain/src/main/java/fr/insee/pearljam/api/surveyunit/dto/identification/IndividualF2FIdentificationDto.java index ea94192d..f7eaccac 100644 --- a/src/main/java/fr/insee/pearljam/api/surveyunit/dto/identification/IndividualF2FIdentificationDto.java +++ b/domain/src/main/java/fr/insee/pearljam/api/surveyunit/dto/identification/IndividualF2FIdentificationDto.java @@ -9,7 +9,9 @@ public record IndividualF2FIdentificationDto ( IndividualStatusQuestionValue individualStatus, InterviewerCanProcessQuestionValue interviewerCanProcess, - SituationQuestionValue situation) implements IdentificationDto { + SituationQuestionValue situation, + Boolean demenagementWeb, + Boolean demenagementEnqueteur) implements IdentificationDto { /** @@ -23,6 +25,8 @@ public Identification toModel() { .individualStatus(individualStatus) .interviewerCanProcess(interviewerCanProcess) .situation(situation) + .demenagementWeb(demenagementWeb) + .demenagementEnqueteur(demenagementEnqueteur) .build(); } @@ -37,7 +41,9 @@ public static IndividualF2FIdentificationDto fromModel(Identification identifica return new IndividualF2FIdentificationDto( identification.individualStatus(), identification.interviewerCanProcess(), - identification.situation() + identification.situation(), + identification.demenagementWeb(), + identification.demenagementEnqueteur() ); } } diff --git a/src/main/java/fr/insee/pearljam/api/surveyunit/dto/identification/IndividualTelIdentificationDto.java b/domain/src/main/java/fr/insee/pearljam/api/surveyunit/dto/identification/IndividualTelIdentificationDto.java similarity index 78% rename from src/main/java/fr/insee/pearljam/api/surveyunit/dto/identification/IndividualTelIdentificationDto.java rename to domain/src/main/java/fr/insee/pearljam/api/surveyunit/dto/identification/IndividualTelIdentificationDto.java index 1272d2d4..490bdafe 100644 --- a/src/main/java/fr/insee/pearljam/api/surveyunit/dto/identification/IndividualTelIdentificationDto.java +++ b/domain/src/main/java/fr/insee/pearljam/api/surveyunit/dto/identification/IndividualTelIdentificationDto.java @@ -7,7 +7,9 @@ public record IndividualTelIdentificationDto (IndividualStatusQuestionValue individualStatus, - SituationQuestionValue situation) implements IdentificationDto { + SituationQuestionValue situation, + Boolean demenagementWeb, + Boolean demenagementEnqueteur) implements IdentificationDto { /** @@ -21,6 +23,8 @@ public Identification toModel() { .identificationType(IdentificationType.INDTEL) .individualStatus(individualStatus) .situation(situation) + .demenagementWeb(demenagementWeb) + .demenagementEnqueteur(demenagementEnqueteur) .build(); } @@ -34,7 +38,9 @@ public static IndividualTelIdentificationDto fromModel(Identification identifica return new IndividualTelIdentificationDto( identification.individualStatus(), - identification.situation() + identification.situation(), + identification.demenagementWeb(), + identification.demenagementEnqueteur() ); } } diff --git a/src/main/java/fr/insee/pearljam/api/surveyunit/dto/identification/RawIdentificationDto.java b/domain/src/main/java/fr/insee/pearljam/api/surveyunit/dto/identification/RawIdentificationDto.java similarity index 88% rename from src/main/java/fr/insee/pearljam/api/surveyunit/dto/identification/RawIdentificationDto.java rename to domain/src/main/java/fr/insee/pearljam/api/surveyunit/dto/identification/RawIdentificationDto.java index 9d5be413..01b41393 100644 --- a/src/main/java/fr/insee/pearljam/api/surveyunit/dto/identification/RawIdentificationDto.java +++ b/domain/src/main/java/fr/insee/pearljam/api/surveyunit/dto/identification/RawIdentificationDto.java @@ -12,7 +12,9 @@ public record RawIdentificationDto(IdentificationQuestionValue identification, InterviewerCanProcessQuestionValue interviewerCanProcess, NumberOfRespondentsQuestionValue numberOfRespondents, PresentInPreviousHomeQuestionValue presentInPreviousHome, - HouseholdCompositionQuestionValue householdComposition + HouseholdCompositionQuestionValue householdComposition, + Boolean demenagementWeb, + Boolean demenagementEnqueteur ) implements IdentificationDto { @@ -30,6 +32,8 @@ public Identification toModel() { .individualStatus(individualStatus) .householdComposition(householdComposition) .presentInPreviousHome(presentInPreviousHome) + .demenagementWeb(demenagementWeb) + .demenagementEnqueteur(demenagementEnqueteur) .build(); } } \ No newline at end of file diff --git a/src/main/java/fr/insee/pearljam/api/surveyunit/dto/identification/SrcvReintIdentificationDto.java b/domain/src/main/java/fr/insee/pearljam/api/surveyunit/dto/identification/SrcvReintIdentificationDto.java similarity index 82% rename from src/main/java/fr/insee/pearljam/api/surveyunit/dto/identification/SrcvReintIdentificationDto.java rename to domain/src/main/java/fr/insee/pearljam/api/surveyunit/dto/identification/SrcvReintIdentificationDto.java index d55a4e5a..19251257 100644 --- a/src/main/java/fr/insee/pearljam/api/surveyunit/dto/identification/SrcvReintIdentificationDto.java +++ b/domain/src/main/java/fr/insee/pearljam/api/surveyunit/dto/identification/SrcvReintIdentificationDto.java @@ -9,7 +9,9 @@ public record SrcvReintIdentificationDto IndividualStatusQuestionValue individualStatus, HouseholdCompositionQuestionValue householdComposition, PresentInPreviousHomeQuestionValue presentInPreviousHome, - SituationQuestionValue situation) implements IdentificationDto { + SituationQuestionValue situation, + Boolean demenagementWeb, + Boolean demenagementEnqueteur) implements IdentificationDto { /** @@ -26,6 +28,8 @@ public Identification toModel() { .householdComposition(householdComposition) .presentInPreviousHome(presentInPreviousHome) .situation(situation) + .demenagementWeb(demenagementWeb) + .demenagementEnqueteur(demenagementEnqueteur) .build(); } @@ -42,7 +46,9 @@ public static SrcvReintIdentificationDto fromModel(Identification identification identification.individualStatus(), identification.householdComposition(), identification.presentInPreviousHome(), - identification.situation() + identification.situation(), + identification.demenagementWeb(), + identification.demenagementEnqueteur() ); } } diff --git a/src/main/java/fr/insee/pearljam/api/web/annotation/CommunicationMediumTypeKey.java b/domain/src/main/java/fr/insee/pearljam/api/web/annotation/CommunicationMediumTypeKey.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/web/annotation/CommunicationMediumTypeKey.java rename to domain/src/main/java/fr/insee/pearljam/api/web/annotation/CommunicationMediumTypeKey.java diff --git a/src/main/java/fr/insee/pearljam/api/web/annotation/NoDuplicateMediumAndType.java b/domain/src/main/java/fr/insee/pearljam/api/web/annotation/NoDuplicateMediumAndType.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/web/annotation/NoDuplicateMediumAndType.java rename to domain/src/main/java/fr/insee/pearljam/api/web/annotation/NoDuplicateMediumAndType.java diff --git a/src/main/java/fr/insee/pearljam/api/web/annotation/NoDuplicateMediumAndTypeValidator.java b/domain/src/main/java/fr/insee/pearljam/api/web/annotation/NoDuplicateMediumAndTypeValidator.java similarity index 100% rename from src/main/java/fr/insee/pearljam/api/web/annotation/NoDuplicateMediumAndTypeValidator.java rename to domain/src/main/java/fr/insee/pearljam/api/web/annotation/NoDuplicateMediumAndTypeValidator.java diff --git a/src/main/java/fr/insee/pearljam/domain/campaign/model/CampaignVisibility.java b/domain/src/main/java/fr/insee/pearljam/domain/campaign/model/CampaignVisibility.java similarity index 100% rename from src/main/java/fr/insee/pearljam/domain/campaign/model/CampaignVisibility.java rename to domain/src/main/java/fr/insee/pearljam/domain/campaign/model/CampaignVisibility.java diff --git a/src/main/java/fr/insee/pearljam/domain/campaign/model/Visibility.java b/domain/src/main/java/fr/insee/pearljam/domain/campaign/model/Visibility.java similarity index 100% rename from src/main/java/fr/insee/pearljam/domain/campaign/model/Visibility.java rename to domain/src/main/java/fr/insee/pearljam/domain/campaign/model/Visibility.java diff --git a/src/main/java/fr/insee/pearljam/domain/campaign/model/communication/CommunicationMedium.java b/domain/src/main/java/fr/insee/pearljam/domain/campaign/model/communication/CommunicationMedium.java similarity index 100% rename from src/main/java/fr/insee/pearljam/domain/campaign/model/communication/CommunicationMedium.java rename to domain/src/main/java/fr/insee/pearljam/domain/campaign/model/communication/CommunicationMedium.java diff --git a/src/main/java/fr/insee/pearljam/domain/campaign/model/communication/CommunicationTemplate.java b/domain/src/main/java/fr/insee/pearljam/domain/campaign/model/communication/CommunicationTemplate.java similarity index 100% rename from src/main/java/fr/insee/pearljam/domain/campaign/model/communication/CommunicationTemplate.java rename to domain/src/main/java/fr/insee/pearljam/domain/campaign/model/communication/CommunicationTemplate.java diff --git a/src/main/java/fr/insee/pearljam/domain/campaign/model/communication/CommunicationType.java b/domain/src/main/java/fr/insee/pearljam/domain/campaign/model/communication/CommunicationType.java similarity index 100% rename from src/main/java/fr/insee/pearljam/domain/campaign/model/communication/CommunicationType.java rename to domain/src/main/java/fr/insee/pearljam/domain/campaign/model/communication/CommunicationType.java diff --git a/src/main/java/fr/insee/pearljam/domain/campaign/port/serverside/CampaignRepository.java b/domain/src/main/java/fr/insee/pearljam/domain/campaign/port/serverside/CampaignRepository.java similarity index 100% rename from src/main/java/fr/insee/pearljam/domain/campaign/port/serverside/CampaignRepository.java rename to domain/src/main/java/fr/insee/pearljam/domain/campaign/port/serverside/CampaignRepository.java diff --git a/src/main/java/fr/insee/pearljam/domain/campaign/port/serverside/CommunicationTemplateRepository.java b/domain/src/main/java/fr/insee/pearljam/domain/campaign/port/serverside/CommunicationTemplateRepository.java similarity index 100% rename from src/main/java/fr/insee/pearljam/domain/campaign/port/serverside/CommunicationTemplateRepository.java rename to domain/src/main/java/fr/insee/pearljam/domain/campaign/port/serverside/CommunicationTemplateRepository.java diff --git a/src/main/java/fr/insee/pearljam/domain/campaign/port/serverside/VisibilityRepository.java b/domain/src/main/java/fr/insee/pearljam/domain/campaign/port/serverside/VisibilityRepository.java similarity index 100% rename from src/main/java/fr/insee/pearljam/domain/campaign/port/serverside/VisibilityRepository.java rename to domain/src/main/java/fr/insee/pearljam/domain/campaign/port/serverside/VisibilityRepository.java diff --git a/src/main/java/fr/insee/pearljam/domain/campaign/port/userside/CommunicationTemplateService.java b/domain/src/main/java/fr/insee/pearljam/domain/campaign/port/userside/CommunicationTemplateService.java similarity index 100% rename from src/main/java/fr/insee/pearljam/domain/campaign/port/userside/CommunicationTemplateService.java rename to domain/src/main/java/fr/insee/pearljam/domain/campaign/port/userside/CommunicationTemplateService.java diff --git a/src/main/java/fr/insee/pearljam/domain/campaign/port/userside/DateService.java b/domain/src/main/java/fr/insee/pearljam/domain/campaign/port/userside/DateService.java similarity index 100% rename from src/main/java/fr/insee/pearljam/domain/campaign/port/userside/DateService.java rename to domain/src/main/java/fr/insee/pearljam/domain/campaign/port/userside/DateService.java diff --git a/src/main/java/fr/insee/pearljam/domain/campaign/port/userside/VisibilityService.java b/domain/src/main/java/fr/insee/pearljam/domain/campaign/port/userside/VisibilityService.java similarity index 100% rename from src/main/java/fr/insee/pearljam/domain/campaign/port/userside/VisibilityService.java rename to domain/src/main/java/fr/insee/pearljam/domain/campaign/port/userside/VisibilityService.java diff --git a/src/main/java/fr/insee/pearljam/domain/campaign/service/CommunicationTemplateServiceImpl.java b/domain/src/main/java/fr/insee/pearljam/domain/campaign/service/CommunicationTemplateServiceImpl.java similarity index 100% rename from src/main/java/fr/insee/pearljam/domain/campaign/service/CommunicationTemplateServiceImpl.java rename to domain/src/main/java/fr/insee/pearljam/domain/campaign/service/CommunicationTemplateServiceImpl.java diff --git a/src/main/java/fr/insee/pearljam/domain/campaign/service/CurrentDateService.java b/domain/src/main/java/fr/insee/pearljam/domain/campaign/service/CurrentDateService.java similarity index 100% rename from src/main/java/fr/insee/pearljam/domain/campaign/service/CurrentDateService.java rename to domain/src/main/java/fr/insee/pearljam/domain/campaign/service/CurrentDateService.java diff --git a/src/main/java/fr/insee/pearljam/domain/campaign/service/VisibilityServiceImpl.java b/domain/src/main/java/fr/insee/pearljam/domain/campaign/service/VisibilityServiceImpl.java similarity index 100% rename from src/main/java/fr/insee/pearljam/domain/campaign/service/VisibilityServiceImpl.java rename to domain/src/main/java/fr/insee/pearljam/domain/campaign/service/VisibilityServiceImpl.java diff --git a/src/main/java/fr/insee/pearljam/domain/exception/CampaignAlreadyExistException.java b/domain/src/main/java/fr/insee/pearljam/domain/exception/CampaignAlreadyExistException.java similarity index 100% rename from src/main/java/fr/insee/pearljam/domain/exception/CampaignAlreadyExistException.java rename to domain/src/main/java/fr/insee/pearljam/domain/exception/CampaignAlreadyExistException.java diff --git a/src/main/java/fr/insee/pearljam/domain/exception/CampaignNotFoundException.java b/domain/src/main/java/fr/insee/pearljam/domain/exception/CampaignNotFoundException.java similarity index 100% rename from src/main/java/fr/insee/pearljam/domain/exception/CampaignNotFoundException.java rename to domain/src/main/java/fr/insee/pearljam/domain/exception/CampaignNotFoundException.java diff --git a/src/main/java/fr/insee/pearljam/domain/exception/CampaignOnGoingException.java b/domain/src/main/java/fr/insee/pearljam/domain/exception/CampaignOnGoingException.java similarity index 100% rename from src/main/java/fr/insee/pearljam/domain/exception/CampaignOnGoingException.java rename to domain/src/main/java/fr/insee/pearljam/domain/exception/CampaignOnGoingException.java diff --git a/src/main/java/fr/insee/pearljam/domain/exception/CommunicationTemplateNotFoundException.java b/domain/src/main/java/fr/insee/pearljam/domain/exception/CommunicationTemplateNotFoundException.java similarity index 100% rename from src/main/java/fr/insee/pearljam/domain/exception/CommunicationTemplateNotFoundException.java rename to domain/src/main/java/fr/insee/pearljam/domain/exception/CommunicationTemplateNotFoundException.java diff --git a/src/main/java/fr/insee/pearljam/domain/exception/EntityAlreadyExistException.java b/domain/src/main/java/fr/insee/pearljam/domain/exception/EntityAlreadyExistException.java similarity index 100% rename from src/main/java/fr/insee/pearljam/domain/exception/EntityAlreadyExistException.java rename to domain/src/main/java/fr/insee/pearljam/domain/exception/EntityAlreadyExistException.java diff --git a/src/main/java/fr/insee/pearljam/domain/exception/EntityNotFoundException.java b/domain/src/main/java/fr/insee/pearljam/domain/exception/EntityNotFoundException.java similarity index 100% rename from src/main/java/fr/insee/pearljam/domain/exception/EntityNotFoundException.java rename to domain/src/main/java/fr/insee/pearljam/domain/exception/EntityNotFoundException.java diff --git a/src/main/java/fr/insee/pearljam/domain/exception/OrganizationalUnitNotFoundException.java b/domain/src/main/java/fr/insee/pearljam/domain/exception/OrganizationalUnitNotFoundException.java similarity index 100% rename from src/main/java/fr/insee/pearljam/domain/exception/OrganizationalUnitNotFoundException.java rename to domain/src/main/java/fr/insee/pearljam/domain/exception/OrganizationalUnitNotFoundException.java diff --git a/src/main/java/fr/insee/pearljam/domain/exception/PersonNotFoundException.java b/domain/src/main/java/fr/insee/pearljam/domain/exception/PersonNotFoundException.java similarity index 100% rename from src/main/java/fr/insee/pearljam/domain/exception/PersonNotFoundException.java rename to domain/src/main/java/fr/insee/pearljam/domain/exception/PersonNotFoundException.java diff --git a/src/main/java/fr/insee/pearljam/domain/exception/SurveyUnitNotFoundException.java b/domain/src/main/java/fr/insee/pearljam/domain/exception/SurveyUnitNotFoundException.java similarity index 100% rename from src/main/java/fr/insee/pearljam/domain/exception/SurveyUnitNotFoundException.java rename to domain/src/main/java/fr/insee/pearljam/domain/exception/SurveyUnitNotFoundException.java diff --git a/src/main/java/fr/insee/pearljam/domain/exception/VisibilityHasInvalidDatesException.java b/domain/src/main/java/fr/insee/pearljam/domain/exception/VisibilityHasInvalidDatesException.java similarity index 100% rename from src/main/java/fr/insee/pearljam/domain/exception/VisibilityHasInvalidDatesException.java rename to domain/src/main/java/fr/insee/pearljam/domain/exception/VisibilityHasInvalidDatesException.java diff --git a/src/main/java/fr/insee/pearljam/domain/exception/VisibilityNotFoundException.java b/domain/src/main/java/fr/insee/pearljam/domain/exception/VisibilityNotFoundException.java similarity index 100% rename from src/main/java/fr/insee/pearljam/domain/exception/VisibilityNotFoundException.java rename to domain/src/main/java/fr/insee/pearljam/domain/exception/VisibilityNotFoundException.java diff --git a/src/main/java/fr/insee/pearljam/domain/security/model/AuthorityRole.java b/domain/src/main/java/fr/insee/pearljam/domain/security/model/AuthorityRole.java similarity index 100% rename from src/main/java/fr/insee/pearljam/domain/security/model/AuthorityRole.java rename to domain/src/main/java/fr/insee/pearljam/domain/security/model/AuthorityRole.java diff --git a/src/main/java/fr/insee/pearljam/domain/security/port/serverside/AuthenticatedUserHelperPort.java b/domain/src/main/java/fr/insee/pearljam/domain/security/port/serverside/AuthenticatedUserHelperPort.java similarity index 100% rename from src/main/java/fr/insee/pearljam/domain/security/port/serverside/AuthenticatedUserHelperPort.java rename to domain/src/main/java/fr/insee/pearljam/domain/security/port/serverside/AuthenticatedUserHelperPort.java diff --git a/src/main/java/fr/insee/pearljam/domain/security/port/userside/AuthenticatedUserService.java b/domain/src/main/java/fr/insee/pearljam/domain/security/port/userside/AuthenticatedUserService.java similarity index 100% rename from src/main/java/fr/insee/pearljam/domain/security/port/userside/AuthenticatedUserService.java rename to domain/src/main/java/fr/insee/pearljam/domain/security/port/userside/AuthenticatedUserService.java diff --git a/src/main/java/fr/insee/pearljam/domain/security/service/AuthenticationCurrentUserService.java b/domain/src/main/java/fr/insee/pearljam/domain/security/service/AuthenticationCurrentUserService.java similarity index 100% rename from src/main/java/fr/insee/pearljam/domain/security/service/AuthenticationCurrentUserService.java rename to domain/src/main/java/fr/insee/pearljam/domain/security/service/AuthenticationCurrentUserService.java diff --git a/src/main/java/fr/insee/pearljam/domain/surveyunit/model/Comment.java b/domain/src/main/java/fr/insee/pearljam/domain/surveyunit/model/Comment.java similarity index 100% rename from src/main/java/fr/insee/pearljam/domain/surveyunit/model/Comment.java rename to domain/src/main/java/fr/insee/pearljam/domain/surveyunit/model/Comment.java diff --git a/src/main/java/fr/insee/pearljam/domain/surveyunit/model/CommentType.java b/domain/src/main/java/fr/insee/pearljam/domain/surveyunit/model/CommentType.java similarity index 100% rename from src/main/java/fr/insee/pearljam/domain/surveyunit/model/CommentType.java rename to domain/src/main/java/fr/insee/pearljam/domain/surveyunit/model/CommentType.java diff --git a/src/main/java/fr/insee/pearljam/domain/surveyunit/model/ContactOutcome.java b/domain/src/main/java/fr/insee/pearljam/domain/surveyunit/model/ContactOutcome.java similarity index 100% rename from src/main/java/fr/insee/pearljam/domain/surveyunit/model/ContactOutcome.java rename to domain/src/main/java/fr/insee/pearljam/domain/surveyunit/model/ContactOutcome.java diff --git a/src/main/java/fr/insee/pearljam/domain/surveyunit/model/Identification.java b/domain/src/main/java/fr/insee/pearljam/domain/surveyunit/model/Identification.java similarity index 84% rename from src/main/java/fr/insee/pearljam/domain/surveyunit/model/Identification.java rename to domain/src/main/java/fr/insee/pearljam/domain/surveyunit/model/Identification.java index d45efbf8..431bef21 100644 --- a/src/main/java/fr/insee/pearljam/domain/surveyunit/model/Identification.java +++ b/domain/src/main/java/fr/insee/pearljam/domain/surveyunit/model/Identification.java @@ -16,6 +16,8 @@ public record Identification( InterviewerCanProcessQuestionValue interviewerCanProcess, NumberOfRespondentsQuestionValue numberOfRespondents, PresentInPreviousHomeQuestionValue presentInPreviousHome, - HouseholdCompositionQuestionValue householdComposition + HouseholdCompositionQuestionValue householdComposition, + Boolean demenagementWeb, + Boolean demenagementEnqueteur ) { } diff --git a/src/main/java/fr/insee/pearljam/domain/surveyunit/model/IdentificationState.java b/domain/src/main/java/fr/insee/pearljam/domain/surveyunit/model/IdentificationState.java similarity index 100% rename from src/main/java/fr/insee/pearljam/domain/surveyunit/model/IdentificationState.java rename to domain/src/main/java/fr/insee/pearljam/domain/surveyunit/model/IdentificationState.java diff --git a/src/main/java/fr/insee/pearljam/domain/surveyunit/model/IdentificationType.java b/domain/src/main/java/fr/insee/pearljam/domain/surveyunit/model/IdentificationType.java similarity index 100% rename from src/main/java/fr/insee/pearljam/domain/surveyunit/model/IdentificationType.java rename to domain/src/main/java/fr/insee/pearljam/domain/surveyunit/model/IdentificationType.java diff --git a/domain/src/main/java/fr/insee/pearljam/domain/surveyunit/model/OtherModeQuestionnaire.java b/domain/src/main/java/fr/insee/pearljam/domain/surveyunit/model/OtherModeQuestionnaire.java new file mode 100644 index 00000000..4855dcf7 --- /dev/null +++ b/domain/src/main/java/fr/insee/pearljam/domain/surveyunit/model/OtherModeQuestionnaire.java @@ -0,0 +1,3 @@ +package fr.insee.pearljam.domain.surveyunit.model; + +public record OtherModeQuestionnaire(String surveyUnitId, String type) {} diff --git a/src/main/java/fr/insee/pearljam/domain/surveyunit/model/SurveyUnitForInterviewer.java b/domain/src/main/java/fr/insee/pearljam/domain/surveyunit/model/SurveyUnitForInterviewer.java similarity index 100% rename from src/main/java/fr/insee/pearljam/domain/surveyunit/model/SurveyUnitForInterviewer.java rename to domain/src/main/java/fr/insee/pearljam/domain/surveyunit/model/SurveyUnitForInterviewer.java diff --git a/src/main/java/fr/insee/pearljam/domain/surveyunit/model/communication/CommunicationRequest.java b/domain/src/main/java/fr/insee/pearljam/domain/surveyunit/model/communication/CommunicationRequest.java similarity index 100% rename from src/main/java/fr/insee/pearljam/domain/surveyunit/model/communication/CommunicationRequest.java rename to domain/src/main/java/fr/insee/pearljam/domain/surveyunit/model/communication/CommunicationRequest.java diff --git a/src/main/java/fr/insee/pearljam/domain/surveyunit/model/communication/CommunicationRequestEmitter.java b/domain/src/main/java/fr/insee/pearljam/domain/surveyunit/model/communication/CommunicationRequestEmitter.java similarity index 100% rename from src/main/java/fr/insee/pearljam/domain/surveyunit/model/communication/CommunicationRequestEmitter.java rename to domain/src/main/java/fr/insee/pearljam/domain/surveyunit/model/communication/CommunicationRequestEmitter.java diff --git a/src/main/java/fr/insee/pearljam/domain/surveyunit/model/communication/CommunicationRequestReason.java b/domain/src/main/java/fr/insee/pearljam/domain/surveyunit/model/communication/CommunicationRequestReason.java similarity index 100% rename from src/main/java/fr/insee/pearljam/domain/surveyunit/model/communication/CommunicationRequestReason.java rename to domain/src/main/java/fr/insee/pearljam/domain/surveyunit/model/communication/CommunicationRequestReason.java diff --git a/src/main/java/fr/insee/pearljam/domain/surveyunit/model/communication/CommunicationRequestStatus.java b/domain/src/main/java/fr/insee/pearljam/domain/surveyunit/model/communication/CommunicationRequestStatus.java similarity index 100% rename from src/main/java/fr/insee/pearljam/domain/surveyunit/model/communication/CommunicationRequestStatus.java rename to domain/src/main/java/fr/insee/pearljam/domain/surveyunit/model/communication/CommunicationRequestStatus.java diff --git a/src/main/java/fr/insee/pearljam/domain/surveyunit/model/communication/CommunicationStatusType.java b/domain/src/main/java/fr/insee/pearljam/domain/surveyunit/model/communication/CommunicationStatusType.java similarity index 100% rename from src/main/java/fr/insee/pearljam/domain/surveyunit/model/communication/CommunicationStatusType.java rename to domain/src/main/java/fr/insee/pearljam/domain/surveyunit/model/communication/CommunicationStatusType.java diff --git a/src/main/java/fr/insee/pearljam/domain/surveyunit/model/person/ContactHistory.java b/domain/src/main/java/fr/insee/pearljam/domain/surveyunit/model/person/ContactHistory.java similarity index 100% rename from src/main/java/fr/insee/pearljam/domain/surveyunit/model/person/ContactHistory.java rename to domain/src/main/java/fr/insee/pearljam/domain/surveyunit/model/person/ContactHistory.java diff --git a/src/main/java/fr/insee/pearljam/domain/surveyunit/model/person/ContactHistoryType.java b/domain/src/main/java/fr/insee/pearljam/domain/surveyunit/model/person/ContactHistoryType.java similarity index 100% rename from src/main/java/fr/insee/pearljam/domain/surveyunit/model/person/ContactHistoryType.java rename to domain/src/main/java/fr/insee/pearljam/domain/surveyunit/model/person/ContactHistoryType.java diff --git a/src/main/java/fr/insee/pearljam/domain/surveyunit/model/person/Person.java b/domain/src/main/java/fr/insee/pearljam/domain/surveyunit/model/person/Person.java similarity index 100% rename from src/main/java/fr/insee/pearljam/domain/surveyunit/model/person/Person.java rename to domain/src/main/java/fr/insee/pearljam/domain/surveyunit/model/person/Person.java diff --git a/src/main/java/fr/insee/pearljam/domain/surveyunit/model/person/PhoneNumber.java b/domain/src/main/java/fr/insee/pearljam/domain/surveyunit/model/person/PhoneNumber.java similarity index 100% rename from src/main/java/fr/insee/pearljam/domain/surveyunit/model/person/PhoneNumber.java rename to domain/src/main/java/fr/insee/pearljam/domain/surveyunit/model/person/PhoneNumber.java diff --git a/src/main/java/fr/insee/pearljam/domain/surveyunit/model/question/AccessQuestionValue.java b/domain/src/main/java/fr/insee/pearljam/domain/surveyunit/model/question/AccessQuestionValue.java similarity index 100% rename from src/main/java/fr/insee/pearljam/domain/surveyunit/model/question/AccessQuestionValue.java rename to domain/src/main/java/fr/insee/pearljam/domain/surveyunit/model/question/AccessQuestionValue.java diff --git a/src/main/java/fr/insee/pearljam/domain/surveyunit/model/question/CategoryQuestionValue.java b/domain/src/main/java/fr/insee/pearljam/domain/surveyunit/model/question/CategoryQuestionValue.java similarity index 100% rename from src/main/java/fr/insee/pearljam/domain/surveyunit/model/question/CategoryQuestionValue.java rename to domain/src/main/java/fr/insee/pearljam/domain/surveyunit/model/question/CategoryQuestionValue.java diff --git a/src/main/java/fr/insee/pearljam/domain/surveyunit/model/question/HouseholdCompositionQuestionValue.java b/domain/src/main/java/fr/insee/pearljam/domain/surveyunit/model/question/HouseholdCompositionQuestionValue.java similarity index 100% rename from src/main/java/fr/insee/pearljam/domain/surveyunit/model/question/HouseholdCompositionQuestionValue.java rename to domain/src/main/java/fr/insee/pearljam/domain/surveyunit/model/question/HouseholdCompositionQuestionValue.java diff --git a/src/main/java/fr/insee/pearljam/domain/surveyunit/model/question/IdentificationQuestionValue.java b/domain/src/main/java/fr/insee/pearljam/domain/surveyunit/model/question/IdentificationQuestionValue.java similarity index 100% rename from src/main/java/fr/insee/pearljam/domain/surveyunit/model/question/IdentificationQuestionValue.java rename to domain/src/main/java/fr/insee/pearljam/domain/surveyunit/model/question/IdentificationQuestionValue.java diff --git a/src/main/java/fr/insee/pearljam/domain/surveyunit/model/question/IndividualStatusQuestionValue.java b/domain/src/main/java/fr/insee/pearljam/domain/surveyunit/model/question/IndividualStatusQuestionValue.java similarity index 100% rename from src/main/java/fr/insee/pearljam/domain/surveyunit/model/question/IndividualStatusQuestionValue.java rename to domain/src/main/java/fr/insee/pearljam/domain/surveyunit/model/question/IndividualStatusQuestionValue.java diff --git a/src/main/java/fr/insee/pearljam/domain/surveyunit/model/question/InterviewerCanProcessQuestionValue.java b/domain/src/main/java/fr/insee/pearljam/domain/surveyunit/model/question/InterviewerCanProcessQuestionValue.java similarity index 100% rename from src/main/java/fr/insee/pearljam/domain/surveyunit/model/question/InterviewerCanProcessQuestionValue.java rename to domain/src/main/java/fr/insee/pearljam/domain/surveyunit/model/question/InterviewerCanProcessQuestionValue.java diff --git a/src/main/java/fr/insee/pearljam/domain/surveyunit/model/question/NumberOfRespondentsQuestionValue.java b/domain/src/main/java/fr/insee/pearljam/domain/surveyunit/model/question/NumberOfRespondentsQuestionValue.java similarity index 100% rename from src/main/java/fr/insee/pearljam/domain/surveyunit/model/question/NumberOfRespondentsQuestionValue.java rename to domain/src/main/java/fr/insee/pearljam/domain/surveyunit/model/question/NumberOfRespondentsQuestionValue.java diff --git a/src/main/java/fr/insee/pearljam/domain/surveyunit/model/question/OccupantQuestionValue.java b/domain/src/main/java/fr/insee/pearljam/domain/surveyunit/model/question/OccupantQuestionValue.java similarity index 100% rename from src/main/java/fr/insee/pearljam/domain/surveyunit/model/question/OccupantQuestionValue.java rename to domain/src/main/java/fr/insee/pearljam/domain/surveyunit/model/question/OccupantQuestionValue.java diff --git a/src/main/java/fr/insee/pearljam/domain/surveyunit/model/question/PresentInPreviousHomeQuestionValue.java b/domain/src/main/java/fr/insee/pearljam/domain/surveyunit/model/question/PresentInPreviousHomeQuestionValue.java similarity index 100% rename from src/main/java/fr/insee/pearljam/domain/surveyunit/model/question/PresentInPreviousHomeQuestionValue.java rename to domain/src/main/java/fr/insee/pearljam/domain/surveyunit/model/question/PresentInPreviousHomeQuestionValue.java diff --git a/src/main/java/fr/insee/pearljam/domain/surveyunit/model/question/SituationQuestionValue.java b/domain/src/main/java/fr/insee/pearljam/domain/surveyunit/model/question/SituationQuestionValue.java similarity index 100% rename from src/main/java/fr/insee/pearljam/domain/surveyunit/model/question/SituationQuestionValue.java rename to domain/src/main/java/fr/insee/pearljam/domain/surveyunit/model/question/SituationQuestionValue.java diff --git a/src/main/java/fr/insee/pearljam/domain/surveyunit/port/serverside/CommentRepository.java b/domain/src/main/java/fr/insee/pearljam/domain/surveyunit/port/serverside/CommentRepository.java similarity index 100% rename from src/main/java/fr/insee/pearljam/domain/surveyunit/port/serverside/CommentRepository.java rename to domain/src/main/java/fr/insee/pearljam/domain/surveyunit/port/serverside/CommentRepository.java diff --git a/src/main/java/fr/insee/pearljam/domain/surveyunit/port/serverside/CommunicationRequestRepository.java b/domain/src/main/java/fr/insee/pearljam/domain/surveyunit/port/serverside/CommunicationRequestRepository.java similarity index 100% rename from src/main/java/fr/insee/pearljam/domain/surveyunit/port/serverside/CommunicationRequestRepository.java rename to domain/src/main/java/fr/insee/pearljam/domain/surveyunit/port/serverside/CommunicationRequestRepository.java diff --git a/domain/src/main/java/fr/insee/pearljam/domain/surveyunit/port/serverside/MovedSurveyUnitRepository.java b/domain/src/main/java/fr/insee/pearljam/domain/surveyunit/port/serverside/MovedSurveyUnitRepository.java new file mode 100644 index 00000000..be43e0cf --- /dev/null +++ b/domain/src/main/java/fr/insee/pearljam/domain/surveyunit/port/serverside/MovedSurveyUnitRepository.java @@ -0,0 +1,15 @@ +package fr.insee.pearljam.domain.surveyunit.port.serverside; + +/** + * Port interface for moved survey unit operations + */ +public interface MovedSurveyUnitRepository { + /** + * Update a survey unit that has been marked as moved. + * This operation sets priority to true, clears states and adds INS state, + * sets demenagementWeb to true, and clears persons. + * + * @param surveyUnitId the survey unit id + */ + void updateMovedSurveyUnit(String surveyUnitId); +} \ No newline at end of file diff --git a/domain/src/main/java/fr/insee/pearljam/domain/surveyunit/port/serverside/OtherModeQuestionnaireService.java b/domain/src/main/java/fr/insee/pearljam/domain/surveyunit/port/serverside/OtherModeQuestionnaireService.java new file mode 100644 index 00000000..b77f5ef0 --- /dev/null +++ b/domain/src/main/java/fr/insee/pearljam/domain/surveyunit/port/serverside/OtherModeQuestionnaireService.java @@ -0,0 +1,7 @@ +package fr.insee.pearljam.domain.surveyunit.port.serverside; + +import fr.insee.pearljam.domain.surveyunit.model.OtherModeQuestionnaire; + +public interface OtherModeQuestionnaireService { + void addOtherModeQuestionnaire(OtherModeQuestionnaire otherModeQuestionnaire); +} \ No newline at end of file diff --git a/src/main/java/fr/insee/pearljam/domain/surveyunit/port/userside/CommentService.java b/domain/src/main/java/fr/insee/pearljam/domain/surveyunit/port/userside/CommentService.java similarity index 100% rename from src/main/java/fr/insee/pearljam/domain/surveyunit/port/userside/CommentService.java rename to domain/src/main/java/fr/insee/pearljam/domain/surveyunit/port/userside/CommentService.java diff --git a/domain/src/main/java/fr/insee/pearljam/domain/surveyunit/port/userside/MovedService.java b/domain/src/main/java/fr/insee/pearljam/domain/surveyunit/port/userside/MovedService.java new file mode 100644 index 00000000..dc7423f4 --- /dev/null +++ b/domain/src/main/java/fr/insee/pearljam/domain/surveyunit/port/userside/MovedService.java @@ -0,0 +1,5 @@ +package fr.insee.pearljam.domain.surveyunit.port.userside; + +public interface MovedService { + void updateMovedSurveyUnit(String surveyUnit); +} \ No newline at end of file diff --git a/domain/src/main/java/fr/insee/pearljam/domain/surveyunit/port/userside/StatusService.java b/domain/src/main/java/fr/insee/pearljam/domain/surveyunit/port/userside/StatusService.java new file mode 100644 index 00000000..9a0251d0 --- /dev/null +++ b/domain/src/main/java/fr/insee/pearljam/domain/surveyunit/port/userside/StatusService.java @@ -0,0 +1,5 @@ +package fr.insee.pearljam.domain.surveyunit.port.userside; + +public interface StatusService { + void updateStatus(String surveyUnit, String type); +} \ No newline at end of file diff --git a/src/main/java/fr/insee/pearljam/domain/surveyunit/service/CommentServiceImpl.java b/domain/src/main/java/fr/insee/pearljam/domain/surveyunit/service/CommentServiceImpl.java similarity index 100% rename from src/main/java/fr/insee/pearljam/domain/surveyunit/service/CommentServiceImpl.java rename to domain/src/main/java/fr/insee/pearljam/domain/surveyunit/service/CommentServiceImpl.java diff --git a/domain/src/main/java/fr/insee/pearljam/domain/surveyunit/service/MovedServiceImpl.java b/domain/src/main/java/fr/insee/pearljam/domain/surveyunit/service/MovedServiceImpl.java new file mode 100644 index 00000000..9d7e0b0b --- /dev/null +++ b/domain/src/main/java/fr/insee/pearljam/domain/surveyunit/service/MovedServiceImpl.java @@ -0,0 +1,21 @@ +package fr.insee.pearljam.domain.surveyunit.service; + +import fr.insee.pearljam.domain.surveyunit.port.serverside.MovedSurveyUnitRepository; +import fr.insee.pearljam.domain.surveyunit.port.userside.MovedService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +@Service +@Transactional +@Slf4j +@RequiredArgsConstructor +public class MovedServiceImpl implements MovedService { + private final MovedSurveyUnitRepository movedSurveyUnitRepository; + + @Override + public void updateMovedSurveyUnit(String surveyUnitId) { + movedSurveyUnitRepository.updateMovedSurveyUnit(surveyUnitId); + } +} \ No newline at end of file diff --git a/domain/src/main/java/fr/insee/pearljam/domain/surveyunit/service/StatusServiceImpl.java b/domain/src/main/java/fr/insee/pearljam/domain/surveyunit/service/StatusServiceImpl.java new file mode 100644 index 00000000..937fcc09 --- /dev/null +++ b/domain/src/main/java/fr/insee/pearljam/domain/surveyunit/service/StatusServiceImpl.java @@ -0,0 +1,23 @@ +package fr.insee.pearljam.domain.surveyunit.service; + + +import fr.insee.pearljam.domain.surveyunit.model.OtherModeQuestionnaire; +import fr.insee.pearljam.domain.surveyunit.port.serverside.OtherModeQuestionnaireService; +import fr.insee.pearljam.domain.surveyunit.port.userside.StatusService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +@Service +@Transactional +@Slf4j +@RequiredArgsConstructor +public class StatusServiceImpl implements StatusService { + private final OtherModeQuestionnaireService otherModeQuestionnaireService; + + @Override + public void updateStatus(String surveyUnit, String type) { + otherModeQuestionnaireService.addOtherModeQuestionnaire(new OtherModeQuestionnaire(surveyUnit, type)); + } +} \ No newline at end of file diff --git a/src/main/java/fr/insee/pearljam/infrastructure/campaign/adapter/CommunicationTemplateDaoAdapter.java b/domain/src/main/java/fr/insee/pearljam/infrastructure/campaign/adapter/CommunicationTemplateDaoAdapter.java similarity index 100% rename from src/main/java/fr/insee/pearljam/infrastructure/campaign/adapter/CommunicationTemplateDaoAdapter.java rename to domain/src/main/java/fr/insee/pearljam/infrastructure/campaign/adapter/CommunicationTemplateDaoAdapter.java diff --git a/src/main/java/fr/insee/pearljam/infrastructure/campaign/adapter/VisibilityDaoAdapter.java b/domain/src/main/java/fr/insee/pearljam/infrastructure/campaign/adapter/VisibilityDaoAdapter.java similarity index 100% rename from src/main/java/fr/insee/pearljam/infrastructure/campaign/adapter/VisibilityDaoAdapter.java rename to domain/src/main/java/fr/insee/pearljam/infrastructure/campaign/adapter/VisibilityDaoAdapter.java diff --git a/src/main/java/fr/insee/pearljam/infrastructure/campaign/entity/CommunicationTemplateDB.java b/domain/src/main/java/fr/insee/pearljam/infrastructure/campaign/entity/CommunicationTemplateDB.java similarity index 100% rename from src/main/java/fr/insee/pearljam/infrastructure/campaign/entity/CommunicationTemplateDB.java rename to domain/src/main/java/fr/insee/pearljam/infrastructure/campaign/entity/CommunicationTemplateDB.java diff --git a/src/main/java/fr/insee/pearljam/infrastructure/campaign/entity/CommunicationTemplateDBId.java b/domain/src/main/java/fr/insee/pearljam/infrastructure/campaign/entity/CommunicationTemplateDBId.java similarity index 100% rename from src/main/java/fr/insee/pearljam/infrastructure/campaign/entity/CommunicationTemplateDBId.java rename to domain/src/main/java/fr/insee/pearljam/infrastructure/campaign/entity/CommunicationTemplateDBId.java diff --git a/src/main/java/fr/insee/pearljam/infrastructure/campaign/entity/VisibilityDB.java b/domain/src/main/java/fr/insee/pearljam/infrastructure/campaign/entity/VisibilityDB.java similarity index 100% rename from src/main/java/fr/insee/pearljam/infrastructure/campaign/entity/VisibilityDB.java rename to domain/src/main/java/fr/insee/pearljam/infrastructure/campaign/entity/VisibilityDB.java diff --git a/src/main/java/fr/insee/pearljam/infrastructure/campaign/entity/VisibilityDBId.java b/domain/src/main/java/fr/insee/pearljam/infrastructure/campaign/entity/VisibilityDBId.java similarity index 100% rename from src/main/java/fr/insee/pearljam/infrastructure/campaign/entity/VisibilityDBId.java rename to domain/src/main/java/fr/insee/pearljam/infrastructure/campaign/entity/VisibilityDBId.java diff --git a/src/main/java/fr/insee/pearljam/infrastructure/campaign/jpa/CommunicationRequestJpaRepository.java b/domain/src/main/java/fr/insee/pearljam/infrastructure/campaign/jpa/CommunicationRequestJpaRepository.java similarity index 100% rename from src/main/java/fr/insee/pearljam/infrastructure/campaign/jpa/CommunicationRequestJpaRepository.java rename to domain/src/main/java/fr/insee/pearljam/infrastructure/campaign/jpa/CommunicationRequestJpaRepository.java diff --git a/src/main/java/fr/insee/pearljam/infrastructure/campaign/jpa/CommunicationTemplateJpaRepository.java b/domain/src/main/java/fr/insee/pearljam/infrastructure/campaign/jpa/CommunicationTemplateJpaRepository.java similarity index 100% rename from src/main/java/fr/insee/pearljam/infrastructure/campaign/jpa/CommunicationTemplateJpaRepository.java rename to domain/src/main/java/fr/insee/pearljam/infrastructure/campaign/jpa/CommunicationTemplateJpaRepository.java diff --git a/src/main/java/fr/insee/pearljam/infrastructure/campaign/jpa/VisibilityJpaRepository.java b/domain/src/main/java/fr/insee/pearljam/infrastructure/campaign/jpa/VisibilityJpaRepository.java similarity index 100% rename from src/main/java/fr/insee/pearljam/infrastructure/campaign/jpa/VisibilityJpaRepository.java rename to domain/src/main/java/fr/insee/pearljam/infrastructure/campaign/jpa/VisibilityJpaRepository.java diff --git a/domain/src/main/java/fr/insee/pearljam/infrastructure/db/events/InboxDB.java b/domain/src/main/java/fr/insee/pearljam/infrastructure/db/events/InboxDB.java new file mode 100644 index 00000000..12740b19 --- /dev/null +++ b/domain/src/main/java/fr/insee/pearljam/infrastructure/db/events/InboxDB.java @@ -0,0 +1,41 @@ +package fr.insee.pearljam.infrastructure.db.events; + +import com.fasterxml.jackson.databind.node.ObjectNode; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.Id; +import jakarta.persistence.Table; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import org.hibernate.annotations.CreationTimestamp; +import org.hibernate.annotations.JdbcTypeCode; +import org.hibernate.type.SqlTypes; + +import java.time.LocalDateTime; +import java.util.UUID; + +@Entity +@Table(name = "inbox") +@Getter +@Setter +@NoArgsConstructor +public class InboxDB { + @Id + @Column(length = 50) + private UUID id; + + @JdbcTypeCode(SqlTypes.JSON) + @Column(columnDefinition = "jsonb") + private ObjectNode payload; + + @CreationTimestamp + @Column(name = "created_date", nullable = false, updatable = false) + private LocalDateTime createdDate; + + public InboxDB(UUID id, ObjectNode payload) { + super(); + this.id = id; + this.payload = payload; + } +} diff --git a/domain/src/main/java/fr/insee/pearljam/infrastructure/db/events/InboxJpaRepository.java b/domain/src/main/java/fr/insee/pearljam/infrastructure/db/events/InboxJpaRepository.java new file mode 100644 index 00000000..558315e9 --- /dev/null +++ b/domain/src/main/java/fr/insee/pearljam/infrastructure/db/events/InboxJpaRepository.java @@ -0,0 +1,15 @@ +package fr.insee.pearljam.infrastructure.db.events; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.stereotype.Repository; + +import java.util.List; +import java.util.UUID; + +@Repository +public interface InboxJpaRepository extends JpaRepository { + + @Query("SELECT i FROM InboxDB i ORDER BY i.createdDate ASC") + List findAllOrderByCreatedDate(); +} diff --git a/src/main/java/fr/insee/pearljam/infrastructure/mail/MailSender.java b/domain/src/main/java/fr/insee/pearljam/infrastructure/mail/MailSender.java similarity index 100% rename from src/main/java/fr/insee/pearljam/infrastructure/mail/MailSender.java rename to domain/src/main/java/fr/insee/pearljam/infrastructure/mail/MailSender.java diff --git a/src/main/java/fr/insee/pearljam/infrastructure/mail/NoMailSender.java b/domain/src/main/java/fr/insee/pearljam/infrastructure/mail/NoMailSender.java similarity index 100% rename from src/main/java/fr/insee/pearljam/infrastructure/mail/NoMailSender.java rename to domain/src/main/java/fr/insee/pearljam/infrastructure/mail/NoMailSender.java diff --git a/src/main/java/fr/insee/pearljam/infrastructure/mail/RestMailSender.java b/domain/src/main/java/fr/insee/pearljam/infrastructure/mail/RestMailSender.java similarity index 100% rename from src/main/java/fr/insee/pearljam/infrastructure/mail/RestMailSender.java rename to domain/src/main/java/fr/insee/pearljam/infrastructure/mail/RestMailSender.java diff --git a/src/main/java/fr/insee/pearljam/infrastructure/mail/config/MailConfiguration.java b/domain/src/main/java/fr/insee/pearljam/infrastructure/mail/config/MailConfiguration.java similarity index 100% rename from src/main/java/fr/insee/pearljam/infrastructure/mail/config/MailConfiguration.java rename to domain/src/main/java/fr/insee/pearljam/infrastructure/mail/config/MailConfiguration.java diff --git a/src/main/java/fr/insee/pearljam/infrastructure/mail/config/MailProperties.java b/domain/src/main/java/fr/insee/pearljam/infrastructure/mail/config/MailProperties.java similarity index 100% rename from src/main/java/fr/insee/pearljam/infrastructure/mail/config/MailProperties.java rename to domain/src/main/java/fr/insee/pearljam/infrastructure/mail/config/MailProperties.java diff --git a/src/main/java/fr/insee/pearljam/infrastructure/mail/config/RestTemplateMailInterceptor.java b/domain/src/main/java/fr/insee/pearljam/infrastructure/mail/config/RestTemplateMailInterceptor.java similarity index 100% rename from src/main/java/fr/insee/pearljam/infrastructure/mail/config/RestTemplateMailInterceptor.java rename to domain/src/main/java/fr/insee/pearljam/infrastructure/mail/config/RestTemplateMailInterceptor.java diff --git a/src/main/java/fr/insee/pearljam/infrastructure/mail/entity/MessageTemplate.java b/domain/src/main/java/fr/insee/pearljam/infrastructure/mail/entity/MessageTemplate.java similarity index 100% rename from src/main/java/fr/insee/pearljam/infrastructure/mail/entity/MessageTemplate.java rename to domain/src/main/java/fr/insee/pearljam/infrastructure/mail/entity/MessageTemplate.java diff --git a/src/main/java/fr/insee/pearljam/infrastructure/mail/entity/Recipient.java b/domain/src/main/java/fr/insee/pearljam/infrastructure/mail/entity/Recipient.java similarity index 100% rename from src/main/java/fr/insee/pearljam/infrastructure/mail/entity/Recipient.java rename to domain/src/main/java/fr/insee/pearljam/infrastructure/mail/entity/Recipient.java diff --git a/src/main/java/fr/insee/pearljam/infrastructure/mail/entity/Recipients.java b/domain/src/main/java/fr/insee/pearljam/infrastructure/mail/entity/Recipients.java similarity index 100% rename from src/main/java/fr/insee/pearljam/infrastructure/mail/entity/Recipients.java rename to domain/src/main/java/fr/insee/pearljam/infrastructure/mail/entity/Recipients.java diff --git a/src/main/java/fr/insee/pearljam/infrastructure/mail/entity/SendRequest.java b/domain/src/main/java/fr/insee/pearljam/infrastructure/mail/entity/SendRequest.java similarity index 100% rename from src/main/java/fr/insee/pearljam/infrastructure/mail/entity/SendRequest.java rename to domain/src/main/java/fr/insee/pearljam/infrastructure/mail/entity/SendRequest.java diff --git a/src/main/java/fr/insee/pearljam/infrastructure/mail/exception/SendMailException.java b/domain/src/main/java/fr/insee/pearljam/infrastructure/mail/exception/SendMailException.java similarity index 100% rename from src/main/java/fr/insee/pearljam/infrastructure/mail/exception/SendMailException.java rename to domain/src/main/java/fr/insee/pearljam/infrastructure/mail/exception/SendMailException.java diff --git a/src/main/java/fr/insee/pearljam/infrastructure/security/adapter/AuthenticatedCurrentUserHelperAdapter.java b/domain/src/main/java/fr/insee/pearljam/infrastructure/security/adapter/AuthenticatedCurrentUserHelperAdapter.java similarity index 100% rename from src/main/java/fr/insee/pearljam/infrastructure/security/adapter/AuthenticatedCurrentUserHelperAdapter.java rename to domain/src/main/java/fr/insee/pearljam/infrastructure/security/adapter/AuthenticatedCurrentUserHelperAdapter.java diff --git a/src/main/java/fr/insee/pearljam/infrastructure/security/config/GrantedAuthorityConverter.java b/domain/src/main/java/fr/insee/pearljam/infrastructure/security/config/GrantedAuthorityConverter.java similarity index 100% rename from src/main/java/fr/insee/pearljam/infrastructure/security/config/GrantedAuthorityConverter.java rename to domain/src/main/java/fr/insee/pearljam/infrastructure/security/config/GrantedAuthorityConverter.java diff --git a/src/main/java/fr/insee/pearljam/infrastructure/security/config/NoAuthSecurityConfiguration.java b/domain/src/main/java/fr/insee/pearljam/infrastructure/security/config/NoAuthSecurityConfiguration.java similarity index 100% rename from src/main/java/fr/insee/pearljam/infrastructure/security/config/NoAuthSecurityConfiguration.java rename to domain/src/main/java/fr/insee/pearljam/infrastructure/security/config/NoAuthSecurityConfiguration.java diff --git a/src/main/java/fr/insee/pearljam/infrastructure/security/config/OidcProperties.java b/domain/src/main/java/fr/insee/pearljam/infrastructure/security/config/OidcProperties.java similarity index 100% rename from src/main/java/fr/insee/pearljam/infrastructure/security/config/OidcProperties.java rename to domain/src/main/java/fr/insee/pearljam/infrastructure/security/config/OidcProperties.java diff --git a/src/main/java/fr/insee/pearljam/infrastructure/security/config/OidcSecurityConfiguration.java b/domain/src/main/java/fr/insee/pearljam/infrastructure/security/config/OidcSecurityConfiguration.java similarity index 100% rename from src/main/java/fr/insee/pearljam/infrastructure/security/config/OidcSecurityConfiguration.java rename to domain/src/main/java/fr/insee/pearljam/infrastructure/security/config/OidcSecurityConfiguration.java diff --git a/src/main/java/fr/insee/pearljam/infrastructure/security/config/RoleProperties.java b/domain/src/main/java/fr/insee/pearljam/infrastructure/security/config/RoleProperties.java similarity index 100% rename from src/main/java/fr/insee/pearljam/infrastructure/security/config/RoleProperties.java rename to domain/src/main/java/fr/insee/pearljam/infrastructure/security/config/RoleProperties.java diff --git a/src/main/java/fr/insee/pearljam/infrastructure/security/config/SpringDocSecurityFilterChain.java b/domain/src/main/java/fr/insee/pearljam/infrastructure/security/config/SpringDocSecurityFilterChain.java similarity index 100% rename from src/main/java/fr/insee/pearljam/infrastructure/security/config/SpringDocSecurityFilterChain.java rename to domain/src/main/java/fr/insee/pearljam/infrastructure/security/config/SpringDocSecurityFilterChain.java diff --git a/src/main/java/fr/insee/pearljam/infrastructure/security/config/swagger/SpringDocNoAuthConfiguration.java b/domain/src/main/java/fr/insee/pearljam/infrastructure/security/config/swagger/SpringDocNoAuthConfiguration.java similarity index 100% rename from src/main/java/fr/insee/pearljam/infrastructure/security/config/swagger/SpringDocNoAuthConfiguration.java rename to domain/src/main/java/fr/insee/pearljam/infrastructure/security/config/swagger/SpringDocNoAuthConfiguration.java diff --git a/src/main/java/fr/insee/pearljam/infrastructure/security/config/swagger/SpringDocOidcConfiguration.java b/domain/src/main/java/fr/insee/pearljam/infrastructure/security/config/swagger/SpringDocOidcConfiguration.java similarity index 100% rename from src/main/java/fr/insee/pearljam/infrastructure/security/config/swagger/SpringDocOidcConfiguration.java rename to domain/src/main/java/fr/insee/pearljam/infrastructure/security/config/swagger/SpringDocOidcConfiguration.java diff --git a/src/main/java/fr/insee/pearljam/infrastructure/security/config/swagger/SpringDocSecurityConfiguration.java b/domain/src/main/java/fr/insee/pearljam/infrastructure/security/config/swagger/SpringDocSecurityConfiguration.java similarity index 100% rename from src/main/java/fr/insee/pearljam/infrastructure/security/config/swagger/SpringDocSecurityConfiguration.java rename to domain/src/main/java/fr/insee/pearljam/infrastructure/security/config/swagger/SpringDocSecurityConfiguration.java diff --git a/src/main/java/fr/insee/pearljam/infrastructure/surveyunit/adapter/CommentDaoAdapter.java b/domain/src/main/java/fr/insee/pearljam/infrastructure/surveyunit/adapter/CommentDaoAdapter.java similarity index 100% rename from src/main/java/fr/insee/pearljam/infrastructure/surveyunit/adapter/CommentDaoAdapter.java rename to domain/src/main/java/fr/insee/pearljam/infrastructure/surveyunit/adapter/CommentDaoAdapter.java diff --git a/src/main/java/fr/insee/pearljam/infrastructure/surveyunit/adapter/CommunicationRequestDaoAdapter.java b/domain/src/main/java/fr/insee/pearljam/infrastructure/surveyunit/adapter/CommunicationRequestDaoAdapter.java similarity index 100% rename from src/main/java/fr/insee/pearljam/infrastructure/surveyunit/adapter/CommunicationRequestDaoAdapter.java rename to domain/src/main/java/fr/insee/pearljam/infrastructure/surveyunit/adapter/CommunicationRequestDaoAdapter.java diff --git a/domain/src/main/java/fr/insee/pearljam/infrastructure/surveyunit/adapter/MovedSurveyUnitDaoAdapter.java b/domain/src/main/java/fr/insee/pearljam/infrastructure/surveyunit/adapter/MovedSurveyUnitDaoAdapter.java new file mode 100644 index 00000000..7bbc0538 --- /dev/null +++ b/domain/src/main/java/fr/insee/pearljam/infrastructure/surveyunit/adapter/MovedSurveyUnitDaoAdapter.java @@ -0,0 +1,43 @@ +package fr.insee.pearljam.infrastructure.surveyunit.adapter; + +import fr.insee.pearljam.api.domain.State; +import fr.insee.pearljam.api.domain.StateType; +import fr.insee.pearljam.api.repository.SurveyUnitRepository; +import fr.insee.pearljam.domain.surveyunit.port.serverside.MovedSurveyUnitRepository; +import fr.insee.pearljam.infrastructure.surveyunit.entity.PersonDB; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Repository; +import org.springframework.transaction.annotation.Transactional; + +@Repository +@RequiredArgsConstructor +public class MovedSurveyUnitDaoAdapter implements MovedSurveyUnitRepository { + private final SurveyUnitRepository surveyUnitRepository; + + @Override + @Transactional + public void updateMovedSurveyUnit(String surveyUnitId) { + var surveyUnit = surveyUnitRepository.findById(surveyUnitId); + surveyUnit.ifPresent(unit -> { + unit.setPriority(true); + var state = new State(System.currentTimeMillis(), unit, StateType.INS); + unit.getStates().clear(); + unit.getStates().add(state); + + // Update identification to set demenagementWeb to true instead of resetting it + unit.setIdentificationDemenagementWeb(true); + + // Remove all persons and create a new one with only firstName and lastName + unit.getPersons().clear(); + + var newPerson = new PersonDB(); + newPerson.setFirstName("PRENOM"); + newPerson.setLastName("NOM"); + newPerson.setSurveyUnit(unit); + + unit.getPersons().add(newPerson); + + surveyUnitRepository.save(unit); + }); + } +} \ No newline at end of file diff --git a/src/main/java/fr/insee/pearljam/infrastructure/surveyunit/entity/CommentDB.java b/domain/src/main/java/fr/insee/pearljam/infrastructure/surveyunit/entity/CommentDB.java similarity index 100% rename from src/main/java/fr/insee/pearljam/infrastructure/surveyunit/entity/CommentDB.java rename to domain/src/main/java/fr/insee/pearljam/infrastructure/surveyunit/entity/CommentDB.java diff --git a/src/main/java/fr/insee/pearljam/infrastructure/surveyunit/entity/CommunicationMetadataDB.java b/domain/src/main/java/fr/insee/pearljam/infrastructure/surveyunit/entity/CommunicationMetadataDB.java similarity index 100% rename from src/main/java/fr/insee/pearljam/infrastructure/surveyunit/entity/CommunicationMetadataDB.java rename to domain/src/main/java/fr/insee/pearljam/infrastructure/surveyunit/entity/CommunicationMetadataDB.java diff --git a/src/main/java/fr/insee/pearljam/infrastructure/surveyunit/entity/CommunicationRequestDB.java b/domain/src/main/java/fr/insee/pearljam/infrastructure/surveyunit/entity/CommunicationRequestDB.java similarity index 100% rename from src/main/java/fr/insee/pearljam/infrastructure/surveyunit/entity/CommunicationRequestDB.java rename to domain/src/main/java/fr/insee/pearljam/infrastructure/surveyunit/entity/CommunicationRequestDB.java diff --git a/src/main/java/fr/insee/pearljam/infrastructure/surveyunit/entity/CommunicationRequestStatusDB.java b/domain/src/main/java/fr/insee/pearljam/infrastructure/surveyunit/entity/CommunicationRequestStatusDB.java similarity index 100% rename from src/main/java/fr/insee/pearljam/infrastructure/surveyunit/entity/CommunicationRequestStatusDB.java rename to domain/src/main/java/fr/insee/pearljam/infrastructure/surveyunit/entity/CommunicationRequestStatusDB.java diff --git a/src/main/java/fr/insee/pearljam/infrastructure/surveyunit/entity/ContactHistoryDB.java b/domain/src/main/java/fr/insee/pearljam/infrastructure/surveyunit/entity/ContactHistoryDB.java similarity index 100% rename from src/main/java/fr/insee/pearljam/infrastructure/surveyunit/entity/ContactHistoryDB.java rename to domain/src/main/java/fr/insee/pearljam/infrastructure/surveyunit/entity/ContactHistoryDB.java diff --git a/src/main/java/fr/insee/pearljam/infrastructure/surveyunit/entity/ContactHistoryPK.java b/domain/src/main/java/fr/insee/pearljam/infrastructure/surveyunit/entity/ContactHistoryPK.java similarity index 100% rename from src/main/java/fr/insee/pearljam/infrastructure/surveyunit/entity/ContactHistoryPK.java rename to domain/src/main/java/fr/insee/pearljam/infrastructure/surveyunit/entity/ContactHistoryPK.java diff --git a/src/main/java/fr/insee/pearljam/infrastructure/surveyunit/entity/ContactOutcomeDB.java b/domain/src/main/java/fr/insee/pearljam/infrastructure/surveyunit/entity/ContactOutcomeDB.java similarity index 100% rename from src/main/java/fr/insee/pearljam/infrastructure/surveyunit/entity/ContactOutcomeDB.java rename to domain/src/main/java/fr/insee/pearljam/infrastructure/surveyunit/entity/ContactOutcomeDB.java diff --git a/src/main/java/fr/insee/pearljam/infrastructure/surveyunit/entity/PersonDB.java b/domain/src/main/java/fr/insee/pearljam/infrastructure/surveyunit/entity/PersonDB.java similarity index 100% rename from src/main/java/fr/insee/pearljam/infrastructure/surveyunit/entity/PersonDB.java rename to domain/src/main/java/fr/insee/pearljam/infrastructure/surveyunit/entity/PersonDB.java diff --git a/src/main/java/fr/insee/pearljam/infrastructure/surveyunit/entity/PhoneNumberDB.java b/domain/src/main/java/fr/insee/pearljam/infrastructure/surveyunit/entity/PhoneNumberDB.java similarity index 100% rename from src/main/java/fr/insee/pearljam/infrastructure/surveyunit/entity/PhoneNumberDB.java rename to domain/src/main/java/fr/insee/pearljam/infrastructure/surveyunit/entity/PhoneNumberDB.java diff --git a/src/main/java/fr/insee/pearljam/infrastructure/surveyunit/entity/identification/HouseF2FIdentificationDB.java b/domain/src/main/java/fr/insee/pearljam/infrastructure/surveyunit/entity/identification/HouseF2FIdentificationDB.java similarity index 91% rename from src/main/java/fr/insee/pearljam/infrastructure/surveyunit/entity/identification/HouseF2FIdentificationDB.java rename to domain/src/main/java/fr/insee/pearljam/infrastructure/surveyunit/entity/identification/HouseF2FIdentificationDB.java index 89e43e63..e67cdfef 100644 --- a/src/main/java/fr/insee/pearljam/infrastructure/surveyunit/entity/identification/HouseF2FIdentificationDB.java +++ b/domain/src/main/java/fr/insee/pearljam/infrastructure/surveyunit/entity/identification/HouseF2FIdentificationDB.java @@ -70,6 +70,8 @@ protected Identification toModel() { .situation(situation) .category(category) .occupant(occupant) + .demenagementWeb(demenagementWeb) + .demenagementEnqueteur(demenagementEnqueteur) .build(); } @@ -89,5 +91,7 @@ public void updateFields(Identification identification) { this.setSituation(identification.situation()); this.setCategory(identification.category()); this.setOccupant(identification.occupant()); + this.setDemenagementWeb(identification.demenagementWeb()); + this.setDemenagementEnqueteur(identification.demenagementEnqueteur()); } } diff --git a/src/main/java/fr/insee/pearljam/infrastructure/surveyunit/entity/identification/HouseTelIdentificationDB.java b/domain/src/main/java/fr/insee/pearljam/infrastructure/surveyunit/entity/identification/HouseTelIdentificationDB.java similarity index 88% rename from src/main/java/fr/insee/pearljam/infrastructure/surveyunit/entity/identification/HouseTelIdentificationDB.java rename to domain/src/main/java/fr/insee/pearljam/infrastructure/surveyunit/entity/identification/HouseTelIdentificationDB.java index 8e5b4535..e6e00f80 100644 --- a/src/main/java/fr/insee/pearljam/infrastructure/surveyunit/entity/identification/HouseTelIdentificationDB.java +++ b/domain/src/main/java/fr/insee/pearljam/infrastructure/surveyunit/entity/identification/HouseTelIdentificationDB.java @@ -49,6 +49,8 @@ protected Identification toModel() { .identificationType(identificationType) .situation(situation) .category(category) + .demenagementWeb(demenagementWeb) + .demenagementEnqueteur(demenagementEnqueteur) .build(); } @@ -64,5 +66,7 @@ public void updateFields(Identification identification) { } this.setSituation(identification.situation()); this.setCategory(identification.category()); + this.setDemenagementWeb(identification.demenagementWeb()); + this.setDemenagementEnqueteur(identification.demenagementEnqueteur()); } } diff --git a/src/main/java/fr/insee/pearljam/infrastructure/surveyunit/entity/identification/IdentificationDB.java b/domain/src/main/java/fr/insee/pearljam/infrastructure/surveyunit/entity/identification/IdentificationDB.java similarity index 96% rename from src/main/java/fr/insee/pearljam/infrastructure/surveyunit/entity/identification/IdentificationDB.java rename to domain/src/main/java/fr/insee/pearljam/infrastructure/surveyunit/entity/identification/IdentificationDB.java index 4bf5e65c..b9fca314 100644 --- a/src/main/java/fr/insee/pearljam/infrastructure/surveyunit/entity/identification/IdentificationDB.java +++ b/domain/src/main/java/fr/insee/pearljam/infrastructure/surveyunit/entity/identification/IdentificationDB.java @@ -38,6 +38,12 @@ public abstract class IdentificationDB implements Serializable { @Enumerated(EnumType.STRING) protected IdentificationState identificationState; + @Column(name = "demenagement_web") + protected Boolean demenagementWeb; + + @Column(name = "demenagement_enqueteur") + protected Boolean demenagementEnqueteur; + protected abstract IdentificationConfiguration getIdentificationConfiguration(); /** diff --git a/src/main/java/fr/insee/pearljam/infrastructure/surveyunit/entity/identification/IndF2FIdentificationDB.java b/domain/src/main/java/fr/insee/pearljam/infrastructure/surveyunit/entity/identification/IndF2FIdentificationDB.java similarity index 91% rename from src/main/java/fr/insee/pearljam/infrastructure/surveyunit/entity/identification/IndF2FIdentificationDB.java rename to domain/src/main/java/fr/insee/pearljam/infrastructure/surveyunit/entity/identification/IndF2FIdentificationDB.java index 808a3626..09b1054d 100644 --- a/src/main/java/fr/insee/pearljam/infrastructure/surveyunit/entity/identification/IndF2FIdentificationDB.java +++ b/domain/src/main/java/fr/insee/pearljam/infrastructure/surveyunit/entity/identification/IndF2FIdentificationDB.java @@ -59,6 +59,8 @@ protected Identification toModel() { .individualStatus(individualStatus) .situation(situation) .interviewerCanProcess(interviewerCanProcess) + .demenagementWeb(demenagementWeb) + .demenagementEnqueteur(demenagementEnqueteur) .build(); } @@ -75,5 +77,7 @@ public void updateFields(Identification identification) { this.setIndividualStatus(identification.individualStatus()); this.setInterviewerCanProcess(identification.interviewerCanProcess()); this.setSituation(identification.situation()); + this.setDemenagementWeb(identification.demenagementWeb()); + this.setDemenagementEnqueteur(identification.demenagementEnqueteur()); } } diff --git a/src/main/java/fr/insee/pearljam/infrastructure/surveyunit/entity/identification/IndTelIdentificationDB.java b/domain/src/main/java/fr/insee/pearljam/infrastructure/surveyunit/entity/identification/IndTelIdentificationDB.java similarity index 89% rename from src/main/java/fr/insee/pearljam/infrastructure/surveyunit/entity/identification/IndTelIdentificationDB.java rename to domain/src/main/java/fr/insee/pearljam/infrastructure/surveyunit/entity/identification/IndTelIdentificationDB.java index a6030fc8..77ba3c39 100644 --- a/src/main/java/fr/insee/pearljam/infrastructure/surveyunit/entity/identification/IndTelIdentificationDB.java +++ b/domain/src/main/java/fr/insee/pearljam/infrastructure/surveyunit/entity/identification/IndTelIdentificationDB.java @@ -50,6 +50,8 @@ protected Identification toModel() { .identificationType(identificationType) .individualStatus(individualStatus) .situation(situation) + .demenagementWeb(demenagementWeb) + .demenagementEnqueteur(demenagementEnqueteur) .build(); } @@ -66,5 +68,7 @@ public void updateFields(Identification identification) { } this.setIndividualStatus(identification.individualStatus()); this.setSituation(identification.situation()); + this.setDemenagementWeb(identification.demenagementWeb()); + this.setDemenagementEnqueteur(identification.demenagementEnqueteur()); } } diff --git a/src/main/java/fr/insee/pearljam/infrastructure/surveyunit/entity/identification/SrcvReintIdentificationDB.java b/domain/src/main/java/fr/insee/pearljam/infrastructure/surveyunit/entity/identification/SrcvReintIdentificationDB.java similarity index 92% rename from src/main/java/fr/insee/pearljam/infrastructure/surveyunit/entity/identification/SrcvReintIdentificationDB.java rename to domain/src/main/java/fr/insee/pearljam/infrastructure/surveyunit/entity/identification/SrcvReintIdentificationDB.java index 6fb2f275..d43ad150 100644 --- a/src/main/java/fr/insee/pearljam/infrastructure/surveyunit/entity/identification/SrcvReintIdentificationDB.java +++ b/domain/src/main/java/fr/insee/pearljam/infrastructure/surveyunit/entity/identification/SrcvReintIdentificationDB.java @@ -69,6 +69,8 @@ protected Identification toModel() { .householdComposition(householdComposition) .presentInPreviousHome(presentInPreviousHome) .situation(situation) + .demenagementWeb(demenagementWeb) + .demenagementEnqueteur(demenagementEnqueteur) .build(); } @@ -87,5 +89,7 @@ protected void updateFields(Identification identification) { this.setHouseholdComposition(identification.householdComposition()); this.setPresentInPreviousHome(identification.presentInPreviousHome()); this.setSituation(identification.situation()); + this.setDemenagementWeb(identification.demenagementWeb()); + this.setDemenagementEnqueteur(identification.demenagementEnqueteur()); } } diff --git a/src/main/resources/db/changelog/000_init.xml b/domain/src/main/resources/db/changelog/000_init.xml similarity index 100% rename from src/main/resources/db/changelog/000_init.xml rename to domain/src/main/resources/db/changelog/000_init.xml diff --git a/src/main/resources/db/changelog/130_notification.xml b/domain/src/main/resources/db/changelog/130_notification.xml similarity index 100% rename from src/main/resources/db/changelog/130_notification.xml rename to domain/src/main/resources/db/changelog/130_notification.xml diff --git a/src/main/resources/db/changelog/130_notifications_datatype_status.xml b/domain/src/main/resources/db/changelog/130_notifications_datatype_status.xml similarity index 100% rename from src/main/resources/db/changelog/130_notifications_datatype_status.xml rename to domain/src/main/resources/db/changelog/130_notifications_datatype_status.xml diff --git a/src/main/resources/db/changelog/200_dates.xml b/domain/src/main/resources/db/changelog/200_dates.xml similarity index 100% rename from src/main/resources/db/changelog/200_dates.xml rename to domain/src/main/resources/db/changelog/200_dates.xml diff --git a/src/main/resources/db/changelog/300_data_model_changes.xml b/domain/src/main/resources/db/changelog/300_data_model_changes.xml similarity index 100% rename from src/main/resources/db/changelog/300_data_model_changes.xml rename to domain/src/main/resources/db/changelog/300_data_model_changes.xml diff --git a/src/main/resources/db/changelog/301_removing_interviewer_msg_recipent.xml b/domain/src/main/resources/db/changelog/301_removing_interviewer_msg_recipent.xml similarity index 100% rename from src/main/resources/db/changelog/301_removing_interviewer_msg_recipent.xml rename to domain/src/main/resources/db/changelog/301_removing_interviewer_msg_recipent.xml diff --git a/src/main/resources/db/changelog/400_add_new_temp_zone.xml b/domain/src/main/resources/db/changelog/400_add_new_temp_zone.xml similarity index 100% rename from src/main/resources/db/changelog/400_add_new_temp_zone.xml rename to domain/src/main/resources/db/changelog/400_add_new_temp_zone.xml diff --git a/src/main/resources/db/changelog/500_data_model_v4_changes.xml b/domain/src/main/resources/db/changelog/500_data_model_v4_changes.xml similarity index 100% rename from src/main/resources/db/changelog/500_data_model_v4_changes.xml rename to domain/src/main/resources/db/changelog/500_data_model_v4_changes.xml diff --git a/src/main/resources/db/changelog/501_data_model_v4_changes.xml b/domain/src/main/resources/db/changelog/501_data_model_v4_changes.xml similarity index 100% rename from src/main/resources/db/changelog/501_data_model_v4_changes.xml rename to domain/src/main/resources/db/changelog/501_data_model_v4_changes.xml diff --git a/src/main/resources/db/changelog/502_data_model_v4_changes.xml b/domain/src/main/resources/db/changelog/502_data_model_v4_changes.xml similarity index 100% rename from src/main/resources/db/changelog/502_data_model_v4_changes.xml rename to domain/src/main/resources/db/changelog/502_data_model_v4_changes.xml diff --git a/src/main/resources/db/changelog/510_indexes_for_state_and_surveyunit.xml b/domain/src/main/resources/db/changelog/510_indexes_for_state_and_surveyunit.xml similarity index 100% rename from src/main/resources/db/changelog/510_indexes_for_state_and_surveyunit.xml rename to domain/src/main/resources/db/changelog/510_indexes_for_state_and_surveyunit.xml diff --git a/src/main/resources/db/changelog/520_add_communication_request.xml b/domain/src/main/resources/db/changelog/520_add_communication_request.xml similarity index 100% rename from src/main/resources/db/changelog/520_add_communication_request.xml rename to domain/src/main/resources/db/changelog/520_add_communication_request.xml diff --git a/src/main/resources/db/changelog/521_add_communication_configuration.xml b/domain/src/main/resources/db/changelog/521_add_communication_configuration.xml similarity index 100% rename from src/main/resources/db/changelog/521_add_communication_configuration.xml rename to domain/src/main/resources/db/changelog/521_add_communication_configuration.xml diff --git a/src/main/resources/db/changelog/522_update_communication_configuration.xml b/domain/src/main/resources/db/changelog/522_update_communication_configuration.xml similarity index 100% rename from src/main/resources/db/changelog/522_update_communication_configuration.xml rename to domain/src/main/resources/db/changelog/522_update_communication_configuration.xml diff --git a/src/main/resources/db/changelog/530_add_interviewer_title.xml b/domain/src/main/resources/db/changelog/530_add_interviewer_title.xml similarity index 100% rename from src/main/resources/db/changelog/530_add_interviewer_title.xml rename to domain/src/main/resources/db/changelog/530_add_interviewer_title.xml diff --git a/src/main/resources/db/changelog/540_add_communication_template.xml b/domain/src/main/resources/db/changelog/540_add_communication_template.xml similarity index 100% rename from src/main/resources/db/changelog/540_add_communication_template.xml rename to domain/src/main/resources/db/changelog/540_add_communication_template.xml diff --git a/src/main/resources/db/changelog/541_alter_communication_request.xml b/domain/src/main/resources/db/changelog/541_alter_communication_request.xml similarity index 100% rename from src/main/resources/db/changelog/541_alter_communication_request.xml rename to domain/src/main/resources/db/changelog/541_alter_communication_request.xml diff --git a/src/main/resources/db/changelog/542_update_communication_configuration.xml b/domain/src/main/resources/db/changelog/542_update_communication_configuration.xml similarity index 100% rename from src/main/resources/db/changelog/542_update_communication_configuration.xml rename to domain/src/main/resources/db/changelog/542_update_communication_configuration.xml diff --git a/src/main/resources/db/changelog/543_create_communication_information.xml b/domain/src/main/resources/db/changelog/543_create_communication_information.xml similarity index 100% rename from src/main/resources/db/changelog/543_create_communication_information.xml rename to domain/src/main/resources/db/changelog/543_create_communication_information.xml diff --git a/src/main/resources/db/changelog/544_update_communication_information.xml b/domain/src/main/resources/db/changelog/544_update_communication_information.xml similarity index 100% rename from src/main/resources/db/changelog/544_update_communication_information.xml rename to domain/src/main/resources/db/changelog/544_update_communication_information.xml diff --git a/src/main/resources/db/changelog/545_add_letter_communication_visibility.xml b/domain/src/main/resources/db/changelog/545_add_letter_communication_visibility.xml similarity index 100% rename from src/main/resources/db/changelog/545_add_letter_communication_visibility.xml rename to domain/src/main/resources/db/changelog/545_add_letter_communication_visibility.xml diff --git a/src/main/resources/db/changelog/546_update_communication_information.xml b/domain/src/main/resources/db/changelog/546_update_communication_information.xml similarity index 100% rename from src/main/resources/db/changelog/546_update_communication_information.xml rename to domain/src/main/resources/db/changelog/546_update_communication_information.xml diff --git a/src/main/resources/db/changelog/550_add_business_id.xml b/domain/src/main/resources/db/changelog/550_add_business_id.xml similarity index 100% rename from src/main/resources/db/changelog/550_add_business_id.xml rename to domain/src/main/resources/db/changelog/550_add_business_id.xml diff --git a/src/main/resources/db/changelog/560_extend_identification.xml b/domain/src/main/resources/db/changelog/560_extend_identification.xml similarity index 100% rename from src/main/resources/db/changelog/560_extend_identification.xml rename to domain/src/main/resources/db/changelog/560_extend_identification.xml diff --git a/src/main/resources/db/changelog/561_identification_inheritance.xml b/domain/src/main/resources/db/changelog/561_identification_inheritance.xml similarity index 100% rename from src/main/resources/db/changelog/561_identification_inheritance.xml rename to domain/src/main/resources/db/changelog/561_identification_inheritance.xml diff --git a/src/main/resources/db/changelog/562_add_identification_state.xml b/domain/src/main/resources/db/changelog/562_add_identification_state.xml similarity index 100% rename from src/main/resources/db/changelog/562_add_identification_state.xml rename to domain/src/main/resources/db/changelog/562_add_identification_state.xml diff --git a/src/main/resources/db/changelog/563_init_identification_state_data.sql b/domain/src/main/resources/db/changelog/563_init_identification_state_data.sql similarity index 100% rename from src/main/resources/db/changelog/563_init_identification_state_data.sql rename to domain/src/main/resources/db/changelog/563_init_identification_state_data.sql diff --git a/src/main/resources/db/changelog/570_remove_unused_contact_outcome_entries.xml b/domain/src/main/resources/db/changelog/570_remove_unused_contact_outcome_entries.xml similarity index 100% rename from src/main/resources/db/changelog/570_remove_unused_contact_outcome_entries.xml rename to domain/src/main/resources/db/changelog/570_remove_unused_contact_outcome_entries.xml diff --git a/src/main/resources/db/changelog/580_add_communication_metadata.xml b/domain/src/main/resources/db/changelog/580_add_communication_metadata.xml similarity index 100% rename from src/main/resources/db/changelog/580_add_communication_metadata.xml rename to domain/src/main/resources/db/changelog/580_add_communication_metadata.xml diff --git a/src/main/resources/db/changelog/590_add_sensitivity_field.xml b/domain/src/main/resources/db/changelog/590_add_sensitivity_field.xml similarity index 100% rename from src/main/resources/db/changelog/590_add_sensitivity_field.xml rename to domain/src/main/resources/db/changelog/590_add_sensitivity_field.xml diff --git a/src/main/resources/db/changelog/600_update_communication_structure.xml b/domain/src/main/resources/db/changelog/600_update_communication_structure.xml similarity index 100% rename from src/main/resources/db/changelog/600_update_communication_structure.xml rename to domain/src/main/resources/db/changelog/600_update_communication_structure.xml diff --git a/src/main/resources/db/changelog/610_default_sensitity_to_false.xml b/domain/src/main/resources/db/changelog/610_default_sensitity_to_false.xml similarity index 100% rename from src/main/resources/db/changelog/610_default_sensitity_to_false.xml rename to domain/src/main/resources/db/changelog/610_default_sensitity_to_false.xml diff --git a/src/main/resources/db/changelog/620_add_contact_history.xml b/domain/src/main/resources/db/changelog/620_add_contact_history.xml similarity index 100% rename from src/main/resources/db/changelog/620_add_contact_history.xml rename to domain/src/main/resources/db/changelog/620_add_contact_history.xml diff --git a/src/main/resources/db/changelog/621_remove_notnull_panel_contact_history.xml b/domain/src/main/resources/db/changelog/621_remove_notnull_panel_contact_history.xml similarity index 100% rename from src/main/resources/db/changelog/621_remove_notnull_panel_contact_history.xml rename to domain/src/main/resources/db/changelog/621_remove_notnull_panel_contact_history.xml diff --git a/domain/src/main/resources/db/changelog/630_add_inbox_table.xml b/domain/src/main/resources/db/changelog/630_add_inbox_table.xml new file mode 100644 index 00000000..b7f6dfc3 --- /dev/null +++ b/domain/src/main/resources/db/changelog/630_add_inbox_table.xml @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/domain/src/main/resources/db/changelog/640_other_mode.xml b/domain/src/main/resources/db/changelog/640_other_mode.xml new file mode 100644 index 00000000..95eec746 --- /dev/null +++ b/domain/src/main/resources/db/changelog/640_other_mode.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + diff --git a/domain/src/main/resources/db/changelog/650_add_demenagement_fields.xml b/domain/src/main/resources/db/changelog/650_add_demenagement_fields.xml new file mode 100644 index 00000000..065c7a6a --- /dev/null +++ b/domain/src/main/resources/db/changelog/650_add_demenagement_fields.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + demenagement_web IS NULL + + + + demenagement_enqueteur IS NULL + + + + diff --git a/src/main/resources/db/dataset/init-demo-data.sql b/domain/src/main/resources/db/dataset/init-demo-data.sql similarity index 99% rename from src/main/resources/db/dataset/init-demo-data.sql rename to domain/src/main/resources/db/dataset/init-demo-data.sql index b152f9b6..0566353b 100644 --- a/src/main/resources/db/dataset/init-demo-data.sql +++ b/domain/src/main/resources/db/dataset/init-demo-data.sql @@ -1,6 +1,7 @@ --changeset davdarras:init-demo-data context:demo TRUNCATE TABLE + public.other_mode_questionnaire_state, public.communication_request_status, public.communication_request, public.communication_template, diff --git a/src/main/resources/db/dataset/reinit-test-data.sql b/domain/src/main/resources/db/dataset/reinit-test-data.sql similarity index 99% rename from src/main/resources/db/dataset/reinit-test-data.sql rename to domain/src/main/resources/db/dataset/reinit-test-data.sql index 62ea9106..75452d99 100644 --- a/src/main/resources/db/dataset/reinit-test-data.sql +++ b/domain/src/main/resources/db/dataset/reinit-test-data.sql @@ -1,6 +1,7 @@ --changeset davdarras:reset-data context:test TRUNCATE TABLE + public.other_mode_questionnaire_state, public.communication_request_status, public.communication_request, public.communication_template, diff --git a/src/main/resources/db/integration-demo.xml b/domain/src/main/resources/db/integration-demo.xml similarity index 100% rename from src/main/resources/db/integration-demo.xml rename to domain/src/main/resources/db/integration-demo.xml diff --git a/src/main/resources/db/integration-test.xml b/domain/src/main/resources/db/integration-test.xml similarity index 100% rename from src/main/resources/db/integration-test.xml rename to domain/src/main/resources/db/integration-test.xml diff --git a/src/main/resources/db/master.xml b/domain/src/main/resources/db/master.xml similarity index 94% rename from src/main/resources/db/master.xml rename to domain/src/main/resources/db/master.xml index 441b78ad..cfa007fc 100644 --- a/src/main/resources/db/master.xml +++ b/domain/src/main/resources/db/master.xml @@ -98,4 +98,9 @@ + + + + + \ No newline at end of file diff --git a/src/test/java/fr/insee/pearljam/api/bussinessrules/BusinessRulesTest.java b/domain/src/test/java/fr/insee/pearljam/api/bussinessrules/BusinessRulesTest.java similarity index 100% rename from src/test/java/fr/insee/pearljam/api/bussinessrules/BusinessRulesTest.java rename to domain/src/test/java/fr/insee/pearljam/api/bussinessrules/BusinessRulesTest.java diff --git a/src/test/java/fr/insee/pearljam/api/campaign/controller/dummy/CampaignFakeService.java b/domain/src/test/java/fr/insee/pearljam/api/campaign/controller/dummy/CampaignFakeService.java similarity index 100% rename from src/test/java/fr/insee/pearljam/api/campaign/controller/dummy/CampaignFakeService.java rename to domain/src/test/java/fr/insee/pearljam/api/campaign/controller/dummy/CampaignFakeService.java diff --git a/src/test/java/fr/insee/pearljam/api/campaign/controller/dummy/ReferentFakeService.java b/domain/src/test/java/fr/insee/pearljam/api/campaign/controller/dummy/ReferentFakeService.java similarity index 100% rename from src/test/java/fr/insee/pearljam/api/campaign/controller/dummy/ReferentFakeService.java rename to domain/src/test/java/fr/insee/pearljam/api/campaign/controller/dummy/ReferentFakeService.java diff --git a/src/test/java/fr/insee/pearljam/api/campaign/controller/dummy/VisibilityFakeService.java b/domain/src/test/java/fr/insee/pearljam/api/campaign/controller/dummy/VisibilityFakeService.java similarity index 100% rename from src/test/java/fr/insee/pearljam/api/campaign/controller/dummy/VisibilityFakeService.java rename to domain/src/test/java/fr/insee/pearljam/api/campaign/controller/dummy/VisibilityFakeService.java diff --git a/src/test/java/fr/insee/pearljam/api/campaign/dto/input/CommunicationTemplateCreateDtoTest.java b/domain/src/test/java/fr/insee/pearljam/api/campaign/dto/input/CommunicationTemplateCreateDtoTest.java similarity index 100% rename from src/test/java/fr/insee/pearljam/api/campaign/dto/input/CommunicationTemplateCreateDtoTest.java rename to domain/src/test/java/fr/insee/pearljam/api/campaign/dto/input/CommunicationTemplateCreateDtoTest.java diff --git a/src/test/java/fr/insee/pearljam/api/campaign/dto/input/VisibilityCampaignCreateDtoTest.java b/domain/src/test/java/fr/insee/pearljam/api/campaign/dto/input/VisibilityCampaignCreateDtoTest.java similarity index 100% rename from src/test/java/fr/insee/pearljam/api/campaign/dto/input/VisibilityCampaignCreateDtoTest.java rename to domain/src/test/java/fr/insee/pearljam/api/campaign/dto/input/VisibilityCampaignCreateDtoTest.java diff --git a/src/test/java/fr/insee/pearljam/api/campaign/dto/input/VisibilityCampaignUpdateDtoTest.java b/domain/src/test/java/fr/insee/pearljam/api/campaign/dto/input/VisibilityCampaignUpdateDtoTest.java similarity index 100% rename from src/test/java/fr/insee/pearljam/api/campaign/dto/input/VisibilityCampaignUpdateDtoTest.java rename to domain/src/test/java/fr/insee/pearljam/api/campaign/dto/input/VisibilityCampaignUpdateDtoTest.java diff --git a/src/test/java/fr/insee/pearljam/api/campaign/dto/input/VisibilityUpdateDtoTest.java b/domain/src/test/java/fr/insee/pearljam/api/campaign/dto/input/VisibilityUpdateDtoTest.java similarity index 100% rename from src/test/java/fr/insee/pearljam/api/campaign/dto/input/VisibilityUpdateDtoTest.java rename to domain/src/test/java/fr/insee/pearljam/api/campaign/dto/input/VisibilityUpdateDtoTest.java diff --git a/src/test/java/fr/insee/pearljam/api/campaign/dto/output/CommunicationTemplateResponseDtoTest.java b/domain/src/test/java/fr/insee/pearljam/api/campaign/dto/output/CommunicationTemplateResponseDtoTest.java similarity index 100% rename from src/test/java/fr/insee/pearljam/api/campaign/dto/output/CommunicationTemplateResponseDtoTest.java rename to domain/src/test/java/fr/insee/pearljam/api/campaign/dto/output/CommunicationTemplateResponseDtoTest.java diff --git a/src/test/java/fr/insee/pearljam/api/campaign/dto/output/VisibilityCampaignDtoTest.java b/domain/src/test/java/fr/insee/pearljam/api/campaign/dto/output/VisibilityCampaignDtoTest.java similarity index 100% rename from src/test/java/fr/insee/pearljam/api/campaign/dto/output/VisibilityCampaignDtoTest.java rename to domain/src/test/java/fr/insee/pearljam/api/campaign/dto/output/VisibilityCampaignDtoTest.java diff --git a/src/test/java/fr/insee/pearljam/api/dto/campaign/CampaignSensitivityDtoTest.java b/domain/src/test/java/fr/insee/pearljam/api/dto/campaign/CampaignSensitivityDtoTest.java similarity index 100% rename from src/test/java/fr/insee/pearljam/api/dto/campaign/CampaignSensitivityDtoTest.java rename to domain/src/test/java/fr/insee/pearljam/api/dto/campaign/CampaignSensitivityDtoTest.java diff --git a/src/test/java/fr/insee/pearljam/api/dto/surveyunit/InterrogationOkNokDtoTest.java b/domain/src/test/java/fr/insee/pearljam/api/dto/surveyunit/InterrogationOkNokDtoTest.java similarity index 100% rename from src/test/java/fr/insee/pearljam/api/dto/surveyunit/InterrogationOkNokDtoTest.java rename to domain/src/test/java/fr/insee/pearljam/api/dto/surveyunit/InterrogationOkNokDtoTest.java diff --git a/src/test/java/fr/insee/pearljam/api/dto/surveyunit/InterrogationOkNokResponseDtoTest.java b/domain/src/test/java/fr/insee/pearljam/api/dto/surveyunit/InterrogationOkNokResponseDtoTest.java similarity index 100% rename from src/test/java/fr/insee/pearljam/api/dto/surveyunit/InterrogationOkNokResponseDtoTest.java rename to domain/src/test/java/fr/insee/pearljam/api/dto/surveyunit/InterrogationOkNokResponseDtoTest.java diff --git a/src/test/java/fr/insee/pearljam/api/service/impl/StateServiceImplTest.java b/domain/src/test/java/fr/insee/pearljam/api/service/impl/StateServiceImplTest.java similarity index 100% rename from src/test/java/fr/insee/pearljam/api/service/impl/StateServiceImplTest.java rename to domain/src/test/java/fr/insee/pearljam/api/service/impl/StateServiceImplTest.java diff --git a/src/test/java/fr/insee/pearljam/api/surveyunit/controller/dummy/SurveyUnitFakeService.java b/domain/src/test/java/fr/insee/pearljam/api/surveyunit/controller/dummy/SurveyUnitFakeService.java similarity index 100% rename from src/test/java/fr/insee/pearljam/api/surveyunit/controller/dummy/SurveyUnitFakeService.java rename to domain/src/test/java/fr/insee/pearljam/api/surveyunit/controller/dummy/SurveyUnitFakeService.java diff --git a/src/test/java/fr/insee/pearljam/api/surveyunit/dto/SurveyUnitDetailDtoTest.java b/domain/src/test/java/fr/insee/pearljam/api/surveyunit/dto/SurveyUnitDetailDtoTest.java similarity index 100% rename from src/test/java/fr/insee/pearljam/api/surveyunit/dto/SurveyUnitDetailDtoTest.java rename to domain/src/test/java/fr/insee/pearljam/api/surveyunit/dto/SurveyUnitDetailDtoTest.java diff --git a/src/test/java/fr/insee/pearljam/domain/campaign/model/VisibilityTest.java b/domain/src/test/java/fr/insee/pearljam/domain/campaign/model/VisibilityTest.java similarity index 100% rename from src/test/java/fr/insee/pearljam/domain/campaign/model/VisibilityTest.java rename to domain/src/test/java/fr/insee/pearljam/domain/campaign/model/VisibilityTest.java diff --git a/src/test/java/fr/insee/pearljam/domain/campaign/service/CampaignServiceImplTest.java b/domain/src/test/java/fr/insee/pearljam/domain/campaign/service/CampaignServiceImplTest.java similarity index 100% rename from src/test/java/fr/insee/pearljam/domain/campaign/service/CampaignServiceImplTest.java rename to domain/src/test/java/fr/insee/pearljam/domain/campaign/service/CampaignServiceImplTest.java diff --git a/src/test/java/fr/insee/pearljam/domain/campaign/service/VisibilityServiceImplTest.java b/domain/src/test/java/fr/insee/pearljam/domain/campaign/service/VisibilityServiceImplTest.java similarity index 100% rename from src/test/java/fr/insee/pearljam/domain/campaign/service/VisibilityServiceImplTest.java rename to domain/src/test/java/fr/insee/pearljam/domain/campaign/service/VisibilityServiceImplTest.java diff --git a/src/test/java/fr/insee/pearljam/domain/campaign/service/dummy/CampaignFakeRepository.java b/domain/src/test/java/fr/insee/pearljam/domain/campaign/service/dummy/CampaignFakeRepository.java similarity index 100% rename from src/test/java/fr/insee/pearljam/domain/campaign/service/dummy/CampaignFakeRepository.java rename to domain/src/test/java/fr/insee/pearljam/domain/campaign/service/dummy/CampaignFakeRepository.java diff --git a/src/test/java/fr/insee/pearljam/domain/campaign/service/dummy/FixedDateService.java b/domain/src/test/java/fr/insee/pearljam/domain/campaign/service/dummy/FixedDateService.java similarity index 100% rename from src/test/java/fr/insee/pearljam/domain/campaign/service/dummy/FixedDateService.java rename to domain/src/test/java/fr/insee/pearljam/domain/campaign/service/dummy/FixedDateService.java diff --git a/src/test/java/fr/insee/pearljam/domain/campaign/service/dummy/MessageFakeRepository.java b/domain/src/test/java/fr/insee/pearljam/domain/campaign/service/dummy/MessageFakeRepository.java similarity index 100% rename from src/test/java/fr/insee/pearljam/domain/campaign/service/dummy/MessageFakeRepository.java rename to domain/src/test/java/fr/insee/pearljam/domain/campaign/service/dummy/MessageFakeRepository.java diff --git a/src/test/java/fr/insee/pearljam/domain/campaign/service/dummy/OrganizationUnitFakeRepository.java b/domain/src/test/java/fr/insee/pearljam/domain/campaign/service/dummy/OrganizationUnitFakeRepository.java similarity index 100% rename from src/test/java/fr/insee/pearljam/domain/campaign/service/dummy/OrganizationUnitFakeRepository.java rename to domain/src/test/java/fr/insee/pearljam/domain/campaign/service/dummy/OrganizationUnitFakeRepository.java diff --git a/src/test/java/fr/insee/pearljam/domain/campaign/service/dummy/PreferenceFakeService.java b/domain/src/test/java/fr/insee/pearljam/domain/campaign/service/dummy/PreferenceFakeService.java similarity index 100% rename from src/test/java/fr/insee/pearljam/domain/campaign/service/dummy/PreferenceFakeService.java rename to domain/src/test/java/fr/insee/pearljam/domain/campaign/service/dummy/PreferenceFakeService.java diff --git a/src/test/java/fr/insee/pearljam/domain/campaign/service/dummy/SurveyUnitFakeRepository.java b/domain/src/test/java/fr/insee/pearljam/domain/campaign/service/dummy/SurveyUnitFakeRepository.java similarity index 100% rename from src/test/java/fr/insee/pearljam/domain/campaign/service/dummy/SurveyUnitFakeRepository.java rename to domain/src/test/java/fr/insee/pearljam/domain/campaign/service/dummy/SurveyUnitFakeRepository.java diff --git a/src/test/java/fr/insee/pearljam/domain/campaign/service/dummy/UserFakeRepository.java b/domain/src/test/java/fr/insee/pearljam/domain/campaign/service/dummy/UserFakeRepository.java similarity index 100% rename from src/test/java/fr/insee/pearljam/domain/campaign/service/dummy/UserFakeRepository.java rename to domain/src/test/java/fr/insee/pearljam/domain/campaign/service/dummy/UserFakeRepository.java diff --git a/src/test/java/fr/insee/pearljam/domain/campaign/service/dummy/UserFakeService.java b/domain/src/test/java/fr/insee/pearljam/domain/campaign/service/dummy/UserFakeService.java similarity index 100% rename from src/test/java/fr/insee/pearljam/domain/campaign/service/dummy/UserFakeService.java rename to domain/src/test/java/fr/insee/pearljam/domain/campaign/service/dummy/UserFakeService.java diff --git a/src/test/java/fr/insee/pearljam/domain/campaign/service/dummy/UtilsFakeService.java b/domain/src/test/java/fr/insee/pearljam/domain/campaign/service/dummy/UtilsFakeService.java similarity index 100% rename from src/test/java/fr/insee/pearljam/domain/campaign/service/dummy/UtilsFakeService.java rename to domain/src/test/java/fr/insee/pearljam/domain/campaign/service/dummy/UtilsFakeService.java diff --git a/src/test/java/fr/insee/pearljam/domain/campaign/service/dummy/VisibilityFakeRepository.java b/domain/src/test/java/fr/insee/pearljam/domain/campaign/service/dummy/VisibilityFakeRepository.java similarity index 100% rename from src/test/java/fr/insee/pearljam/domain/campaign/service/dummy/VisibilityFakeRepository.java rename to domain/src/test/java/fr/insee/pearljam/domain/campaign/service/dummy/VisibilityFakeRepository.java diff --git a/src/test/java/fr/insee/pearljam/domain/surveyunit/model/CommunicationRequestTest.java b/domain/src/test/java/fr/insee/pearljam/domain/surveyunit/model/CommunicationRequestTest.java similarity index 100% rename from src/test/java/fr/insee/pearljam/domain/surveyunit/model/CommunicationRequestTest.java rename to domain/src/test/java/fr/insee/pearljam/domain/surveyunit/model/CommunicationRequestTest.java diff --git a/src/test/java/fr/insee/pearljam/domain/surveyunit/model/IdentificationStateTest.java b/domain/src/test/java/fr/insee/pearljam/domain/surveyunit/model/IdentificationStateTest.java similarity index 100% rename from src/test/java/fr/insee/pearljam/domain/surveyunit/model/IdentificationStateTest.java rename to domain/src/test/java/fr/insee/pearljam/domain/surveyunit/model/IdentificationStateTest.java diff --git a/src/test/java/fr/insee/pearljam/domain/surveyunit/service/CommentServiceImplTest.java b/domain/src/test/java/fr/insee/pearljam/domain/surveyunit/service/CommentServiceImplTest.java similarity index 100% rename from src/test/java/fr/insee/pearljam/domain/surveyunit/service/CommentServiceImplTest.java rename to domain/src/test/java/fr/insee/pearljam/domain/surveyunit/service/CommentServiceImplTest.java diff --git a/src/test/java/fr/insee/pearljam/domain/surveyunit/service/SurveyUnitUpdateServiceImplTest.java b/domain/src/test/java/fr/insee/pearljam/domain/surveyunit/service/SurveyUnitUpdateServiceImplTest.java similarity index 99% rename from src/test/java/fr/insee/pearljam/domain/surveyunit/service/SurveyUnitUpdateServiceImplTest.java rename to domain/src/test/java/fr/insee/pearljam/domain/surveyunit/service/SurveyUnitUpdateServiceImplTest.java index 2d2986bf..7994e221 100644 --- a/src/test/java/fr/insee/pearljam/domain/surveyunit/service/SurveyUnitUpdateServiceImplTest.java +++ b/domain/src/test/java/fr/insee/pearljam/domain/surveyunit/service/SurveyUnitUpdateServiceImplTest.java @@ -255,7 +255,9 @@ void testUpdateIdentification01() { InterviewerCanProcessQuestionValue.NO, NumberOfRespondentsQuestionValue.MANY, PresentInPreviousHomeQuestionValue.NONE, - HouseholdCompositionQuestionValue.OTHER_COMPO + HouseholdCompositionQuestionValue.OTHER_COMPO, + false, + false ); surveyUnitDto = createSurveyUnitDto(identification, null, null, null, null); @@ -294,7 +296,9 @@ void testUpdateIdentification03() { InterviewerCanProcessQuestionValue.NO, NumberOfRespondentsQuestionValue.MANY, PresentInPreviousHomeQuestionValue.NONE, - HouseholdCompositionQuestionValue.OTHER_COMPO); + HouseholdCompositionQuestionValue.OTHER_COMPO, + false, + false); surveyUnitDto = createSurveyUnitDto(identification, null, null, null, null); surveyUnitService.updateSurveyUnitInfos(surveyUnit, surveyUnitDto); diff --git a/src/test/java/fr/insee/pearljam/domain/surveyunit/service/dummy/CommentFakeRepository.java b/domain/src/test/java/fr/insee/pearljam/domain/surveyunit/service/dummy/CommentFakeRepository.java similarity index 100% rename from src/test/java/fr/insee/pearljam/domain/surveyunit/service/dummy/CommentFakeRepository.java rename to domain/src/test/java/fr/insee/pearljam/domain/surveyunit/service/dummy/CommentFakeRepository.java diff --git a/src/test/java/fr/insee/pearljam/domain/surveyunit/service/dummy/CommunicationRequestFakeRepository.java b/domain/src/test/java/fr/insee/pearljam/domain/surveyunit/service/dummy/CommunicationRequestFakeRepository.java similarity index 100% rename from src/test/java/fr/insee/pearljam/domain/surveyunit/service/dummy/CommunicationRequestFakeRepository.java rename to domain/src/test/java/fr/insee/pearljam/domain/surveyunit/service/dummy/CommunicationRequestFakeRepository.java diff --git a/src/test/java/fr/insee/pearljam/domain/surveyunit/service/dummy/CommunicationTemplateFakeRepository.java b/domain/src/test/java/fr/insee/pearljam/domain/surveyunit/service/dummy/CommunicationTemplateFakeRepository.java similarity index 100% rename from src/test/java/fr/insee/pearljam/domain/surveyunit/service/dummy/CommunicationTemplateFakeRepository.java rename to domain/src/test/java/fr/insee/pearljam/domain/surveyunit/service/dummy/CommunicationTemplateFakeRepository.java diff --git a/src/test/java/fr/insee/pearljam/infrastructure/campaign/entity/CommunicationTemplateDBTest.java b/domain/src/test/java/fr/insee/pearljam/infrastructure/campaign/entity/CommunicationTemplateDBTest.java similarity index 100% rename from src/test/java/fr/insee/pearljam/infrastructure/campaign/entity/CommunicationTemplateDBTest.java rename to domain/src/test/java/fr/insee/pearljam/infrastructure/campaign/entity/CommunicationTemplateDBTest.java diff --git a/src/test/java/fr/insee/pearljam/infrastructure/campaign/entity/VisibilityDBTest.java b/domain/src/test/java/fr/insee/pearljam/infrastructure/campaign/entity/VisibilityDBTest.java similarity index 100% rename from src/test/java/fr/insee/pearljam/infrastructure/campaign/entity/VisibilityDBTest.java rename to domain/src/test/java/fr/insee/pearljam/infrastructure/campaign/entity/VisibilityDBTest.java diff --git a/src/test/java/fr/insee/pearljam/infrastructure/mail/NoMailSenderTest.java b/domain/src/test/java/fr/insee/pearljam/infrastructure/mail/NoMailSenderTest.java similarity index 100% rename from src/test/java/fr/insee/pearljam/infrastructure/mail/NoMailSenderTest.java rename to domain/src/test/java/fr/insee/pearljam/infrastructure/mail/NoMailSenderTest.java diff --git a/src/test/java/fr/insee/pearljam/infrastructure/mail/RestMailSenderTest.java b/domain/src/test/java/fr/insee/pearljam/infrastructure/mail/RestMailSenderTest.java similarity index 100% rename from src/test/java/fr/insee/pearljam/infrastructure/mail/RestMailSenderTest.java rename to domain/src/test/java/fr/insee/pearljam/infrastructure/mail/RestMailSenderTest.java diff --git a/src/test/java/fr/insee/pearljam/infrastructure/mail/config/MailConfigurationTest.java b/domain/src/test/java/fr/insee/pearljam/infrastructure/mail/config/MailConfigurationTest.java similarity index 100% rename from src/test/java/fr/insee/pearljam/infrastructure/mail/config/MailConfigurationTest.java rename to domain/src/test/java/fr/insee/pearljam/infrastructure/mail/config/MailConfigurationTest.java diff --git a/src/test/java/fr/insee/pearljam/infrastructure/security/config/GrantedAuthorityConverterTest.java b/domain/src/test/java/fr/insee/pearljam/infrastructure/security/config/GrantedAuthorityConverterTest.java similarity index 100% rename from src/test/java/fr/insee/pearljam/infrastructure/security/config/GrantedAuthorityConverterTest.java rename to domain/src/test/java/fr/insee/pearljam/infrastructure/security/config/GrantedAuthorityConverterTest.java diff --git a/src/test/java/fr/insee/pearljam/infrastructure/surveyunit/entity/CommentDBTest.java b/domain/src/test/java/fr/insee/pearljam/infrastructure/surveyunit/entity/CommentDBTest.java similarity index 100% rename from src/test/java/fr/insee/pearljam/infrastructure/surveyunit/entity/CommentDBTest.java rename to domain/src/test/java/fr/insee/pearljam/infrastructure/surveyunit/entity/CommentDBTest.java diff --git a/src/test/java/fr/insee/pearljam/infrastructure/surveyunit/entity/CommunicationRequestDBTest.java b/domain/src/test/java/fr/insee/pearljam/infrastructure/surveyunit/entity/CommunicationRequestDBTest.java similarity index 100% rename from src/test/java/fr/insee/pearljam/infrastructure/surveyunit/entity/CommunicationRequestDBTest.java rename to domain/src/test/java/fr/insee/pearljam/infrastructure/surveyunit/entity/CommunicationRequestDBTest.java diff --git a/src/test/java/fr/insee/pearljam/infrastructure/surveyunit/entity/CommunicationRequestStatusDBTest.java b/domain/src/test/java/fr/insee/pearljam/infrastructure/surveyunit/entity/CommunicationRequestStatusDBTest.java similarity index 100% rename from src/test/java/fr/insee/pearljam/infrastructure/surveyunit/entity/CommunicationRequestStatusDBTest.java rename to domain/src/test/java/fr/insee/pearljam/infrastructure/surveyunit/entity/CommunicationRequestStatusDBTest.java diff --git a/src/test/java/fr/insee/pearljam/infrastructure/surveyunit/entity/IdentificationDBTest.java b/domain/src/test/java/fr/insee/pearljam/infrastructure/surveyunit/entity/IdentificationDBTest.java similarity index 98% rename from src/test/java/fr/insee/pearljam/infrastructure/surveyunit/entity/IdentificationDBTest.java rename to domain/src/test/java/fr/insee/pearljam/infrastructure/surveyunit/entity/IdentificationDBTest.java index 57815ccd..13ed5bae 100644 --- a/src/test/java/fr/insee/pearljam/infrastructure/surveyunit/entity/IdentificationDBTest.java +++ b/domain/src/test/java/fr/insee/pearljam/infrastructure/surveyunit/entity/IdentificationDBTest.java @@ -44,7 +44,7 @@ void testUpdate01() { SituationQuestionValue.NOORDINARY, CategoryQuestionValue.VACANT, OccupantQuestionValue.UNIDENTIFIED, - null, null, null, null, null); + null, null, null, null, null, false, false); identificationDB.update(identification); HouseF2FIdentificationDB houseF2FIdentificationDB = (HouseF2FIdentificationDB) identificationDB; assertThat(houseF2FIdentificationDB.getId()).isEqualTo(identificationId); diff --git a/listener-jms/.env b/listener-jms/.env new file mode 100644 index 00000000..cc619122 --- /dev/null +++ b/listener-jms/.env @@ -0,0 +1,16 @@ +IMAGES_REGISTRY_DOCKER_IO=docker.io +#IMAGES_REGISTRY_DOCKER_IO=proxy-docker-io.insee.fr +IMAGES_REGISTRY_QUAY_IO=quay.io +#IMAGES_REGISTRY_QUAY_IO=proxy-quay-io.insee.fr + +PEARL_DB_USER=mypostgresuser2 +PEARL_DB_PASSWORD=mypostgrespassword2 +PEARL_DB_PORT=5434 +PEARL_DB=queen + +KEYCLOAK_PORT=7080 + +IMAGE_ACTIVEMQ=apache/activemq-artemis:2.32.0-alpine +# Comptes +ARTEMIS_USER=insee +ARTEMIS_PASSWORD=lille \ No newline at end of file diff --git a/listener-jms/Dockerfile b/listener-jms/Dockerfile new file mode 100644 index 00000000..e9192f5d --- /dev/null +++ b/listener-jms/Dockerfile @@ -0,0 +1,15 @@ +FROM eclipse-temurin:21-jre-jammy + +WORKDIR /opt/app/ +COPY ./target/*.jar /opt/app/app.jar + +# Setup a non-root user context (security) +RUN groupadd -g 1000 tomcatgroup +RUN useradd -r -u 1000 -g tomcatgroup tomcatuser +RUN mkdir /opt/app/temp-files +RUN chown -R 1000:1000 /opt/app + +USER 1000 + +ENTRYPOINT ["java", "-jar", "/opt/app/app.jar"] + diff --git a/listener-jms/compose.test.yml b/listener-jms/compose.test.yml new file mode 100644 index 00000000..0f568090 --- /dev/null +++ b/listener-jms/compose.test.yml @@ -0,0 +1,24 @@ +services: + pearl-db: + image: ${IMAGES_REGISTRY_DOCKER_IO:-docker.io}/${IMAGE_POSTGRES:-postgres:14.15} + environment: + - POSTGRES_USER=${PEARL_DB_USER:-mypostgresuser2} + - POSTGRES_PASSWORD=${PEARL_DB_PASSWORD:-mypostgrespassword2} + - POSTGRES_DB=${PEARL_DB:-pearl} + command: ["postgres"] + healthcheck: + test: ["CMD-SHELL", "pg_isready -U ${PEARL_DB_USER:-mypostgresuser2} -d ${PEARL_DB:-queen} -h localhost"] + interval: 5s + timeout: 10s + retries: 10 + ports: + - "${QUEEN_DB_PORT:-5434}:5432" + + activemq: + image: ${IMAGES_REGISTRY_DOCKER_IO:-docker.io}/${IMAGE_ACTIVEMQ:-apache/activemq-artemis:2.32.0-alpine} + environment: + ARTEMIS_USER: ${ARTEMIS_USER:-insee} + ARTEMIS_PASSWORD: ${ARTEMIS_PASSWORD:-lille} + ports: + - "61616:61616" + - "8161:8161" \ No newline at end of file diff --git a/listener-jms/compose.yml b/listener-jms/compose.yml new file mode 100644 index 00000000..dbb4659c --- /dev/null +++ b/listener-jms/compose.yml @@ -0,0 +1,59 @@ +#---------------------------------------------------------------------------- +# (\___/) (\_(\ +# (='.'=) (=':') Conteneurisation +# (")_(") (,(")(") +# +# Commandes : +# PODMAN INSEE +# - podman --log-level=debug compose -f compose.yml --env-file .env --project-name queen-listener-jms --profile all up -d +# - podman --log-level=debug compose -f compose.yml --env-file .env --project-name queen-listener-jms --profile activemq up -d +# - podman --log-level=debug compose -f compose.yml --env-file .env --project-name queen-listener-jms --profile all down +# - podman --log-level=debug compose -f compose.yml --env-file .env --project-name queen-listener-jms --profile activemq down + +# mvn clean verify -Pcoverage --no-transfer-progress -Dspring.docker.compose.enabled=false + +# mvn test -Dspring.docker.compose.enabled=false + +# podman --log-level=debug compose -f compose.yml --env-file .env --project-name queen-back-office --profile all up -d + +x-activemq-volumes: &activemq-volumes + - activemq_vol:/data/activemq + - activemq_vol:/var/log/activemq + - ./containers/activemq/broker.xml:/var/lib/artemis-instance/etc-override/broker.xml + +services: + + activemq: + container_name: activemq + image: ${IMAGES_REGISTRY_DOCKER_IO}/${IMAGE_ACTIVEMQ} + profiles: + - all + - activemq + environment: + ARTEMIS_USER: ${ARTEMIS_USER} + ARTEMIS_PASSWORD: ${ARTEMIS_PASSWORD} + volumes: *activemq-volumes + ports: + - "61616:61616" + - "8161:8161" + + pearl-db: + image: postgres:14.15 + profiles: + - all + - pearl-db + environment: + - POSTGRES_USER=${PEARL_DB_USER} + - POSTGRES_PASSWORD=${PEARL_DB_PASSWORD} + - POSTGRES_DB=${PEARL_DB} + command: ["postgres"] + healthcheck: + test: ["CMD-SHELL", "pg_isready -U ${PEARL_DB_USER} -d ${PEARL_DB} -h localhost"] + interval: 5s + timeout: 10s + retries: 10 + ports: + - ${PEARL_DB_PORT}:5432 + +volumes: + activemq_vol: diff --git a/listener-jms/containers/activemq/broker.xml b/listener-jms/containers/activemq/broker.xml new file mode 100644 index 00000000..a7bd8f0e --- /dev/null +++ b/listener-jms/containers/activemq/broker.xml @@ -0,0 +1,277 @@ + + + + + + + + 0.0.0.0 + + + true + + + 1 + + + ASYNCIO + + data/paging + + data/bindings + + data/journal + + data/large-messages + + + + + + + true + + 2 + + 10 + + 4096 + + 10M + + + 52000 + + + + 4096 + + + + + + + + + + + + + + + + + + + + + 5000 + + + 90 + + + true + + 120000 + + 60000 + + HALT + + + 1804000 + + + + + + -1 + + + + + + + + + + + + + + tcp://0.0.0.0:61616?tcpSendBufferSize=1048576;tcpReceiveBufferSize=1048576;amqpMinLargeMessageSize=102400;protocols=CORE,AMQP,STOMP,HORNETQ,MQTT,OPENWIRE;useEpoll=true;amqpCredits=1000;amqpLowCredits=300;amqpDuplicateDetection=true;supportAdvisory=false;suppressInternalManagementObjects=false + + + tcp://0.0.0.0:5672?tcpSendBufferSize=1048576;tcpReceiveBufferSize=1048576;protocols=AMQP;useEpoll=true;amqpCredits=1000;amqpLowCredits=300;amqpMinLargeMessageSize=102400;amqpDuplicateDetection=true + + + tcp://0.0.0.0:61613?tcpSendBufferSize=1048576;tcpReceiveBufferSize=1048576;protocols=STOMP;useEpoll=true + + + tcp://0.0.0.0:5445?anycastPrefix=jms.queue.;multicastPrefix=jms.topic.;protocols=HORNETQ,STOMP;useEpoll=true + + + tcp://0.0.0.0:1883?tcpSendBufferSize=1048576;tcpReceiveBufferSize=1048576;protocols=MQTT;useEpoll=true + + + + + + + + + + + + + + + + + + + + + + + + DLQ + ExpiryQueue + 0 + + -1 + 10 + PAGE + true + true + + + + DLQ + ExpiryQueue + 0 + 3600000 + 10 + PAGE + true + true + false + false + + + 10M + + + + -1 + -1 + + + + -1 + 20M + + + + -1 + -1 + + + + +
+ + + +
+
+ + + +
+ +
+ + + + +
+
diff --git a/listener-jms/pom.xml b/listener-jms/pom.xml new file mode 100644 index 00000000..e826697b --- /dev/null +++ b/listener-jms/pom.xml @@ -0,0 +1,176 @@ + + + 4.0.0 + + + fr.insee.pearljam + pearljam-back-office + ${revision}${changelist} + + listener-jms + listener-jms + JMS Consumer for Pearl + + 1.5.7 + + + + + fr.insee.pearljam + domain + ${revision}${changelist} + + + + org.projectlombok + lombok + true + + + + org.springframework.boot + spring-boot-starter-actuator + + + + + org.springframework.boot + spring-boot-starter-cache + + + + + org.springframework.boot + spring-boot-starter-test + test + + + + com.github.ben-manes.caffeine + caffeine + ${caffeine.version} + + + + + org.springframework.boot + spring-boot-starter-artemis + + + + org.messaginghub + pooled-jms + + + + + + + + + + + + + org.springframework + spring-jms + + + + + fr.insee + modelefiliere-multimode-event + 2.2.0 + system + ${project.basedir}/../modelefiliere-2.2.0.jar + + + + com.networknt + json-schema-validator + ${json-schema-validator.version} + + + + org.springframework.boot + spring-boot-starter-validation + + + + com.fasterxml.jackson.datatype + jackson-datatype-jsr310 + + + + org.springframework.boot + spring-boot-starter-data-jpa + + + + org.postgresql + postgresql + + + + org.liquibase + liquibase-core + test + + + + org.springframework.boot + spring-boot-docker-compose + test + + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.13.0 + + ${java.version} + ${java.version} + + + org.projectlombok + lombok + ${lombok.version} + + + + + + + org.apache.maven.plugins + maven-install-plugin + 3.1.1 + + + org.springframework.boot + spring-boot-maven-plugin + + + + build-info + + + + + + + org.projectlombok + lombok + + + + + + + + \ No newline at end of file diff --git a/listener-jms/src/main/java/fr/insee/pearljam/JMSApplication.java b/listener-jms/src/main/java/fr/insee/pearljam/JMSApplication.java new file mode 100644 index 00000000..c85fce1e --- /dev/null +++ b/listener-jms/src/main/java/fr/insee/pearljam/JMSApplication.java @@ -0,0 +1,45 @@ +package fr.insee.pearljam; + +import lombok.extern.slf4j.Slf4j; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.builder.SpringApplicationBuilder; +import org.springframework.boot.context.event.ApplicationReadyEvent; +import org.springframework.boot.context.properties.ConfigurationPropertiesScan; +import org.springframework.cache.annotation.EnableCaching; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.FilterType; +import org.springframework.context.event.EventListener; +import org.springframework.jms.annotation.EnableJms; +import org.springframework.stereotype.Controller; +import org.springframework.transaction.annotation.EnableTransactionManagement; +import org.springframework.web.bind.annotation.RestController; + +@SpringBootApplication +@ComponentScan( + basePackages = "fr.insee.pearljam", + excludeFilters = { + @ComponentScan.Filter(type = FilterType.ANNOTATION, classes = RestController.class), + @ComponentScan.Filter(type = FilterType.ANNOTATION, classes = Controller.class) + } +) +@EnableTransactionManagement +@ConfigurationPropertiesScan +@EnableCaching +@EnableJms +@Slf4j +public class JMSApplication { + + public static void main(String[] args) { + configureApplicationBuilder(new SpringApplicationBuilder()).build().run(args); + } + + public static SpringApplicationBuilder configureApplicationBuilder(SpringApplicationBuilder springApplicationBuilder){ + return springApplicationBuilder.sources(JMSApplication.class) + .listeners(); + } + + @EventListener + public void handleApplicationReady(ApplicationReadyEvent event) { + log.info("=============== Queen listener JMS has successfully started. ==============="); + } +} diff --git a/listener-jms/src/main/java/fr/insee/pearljam/jms/configuration/CustomProperties.java b/listener-jms/src/main/java/fr/insee/pearljam/jms/configuration/CustomProperties.java new file mode 100644 index 00000000..c33d1ac1 --- /dev/null +++ b/listener-jms/src/main/java/fr/insee/pearljam/jms/configuration/CustomProperties.java @@ -0,0 +1,23 @@ +package fr.insee.pearljam.jms.configuration; + +import lombok.Getter; +import lombok.Setter; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Configuration; + +@Slf4j +@Getter +@Setter +@Configuration +public class CustomProperties { + + @Value("${broker.name}") + private String brokerName; + + @Value("${broker.queue.interrogation.request}") + private String queueInterrogationRequest; + + @Value("${broker.queue.interrogation.response}") + private String queueInterrogationResponse; +} diff --git a/listener-jms/src/main/java/fr/insee/pearljam/jms/configuration/JMSConfiguration.java b/listener-jms/src/main/java/fr/insee/pearljam/jms/configuration/JMSConfiguration.java new file mode 100644 index 00000000..c275cf04 --- /dev/null +++ b/listener-jms/src/main/java/fr/insee/pearljam/jms/configuration/JMSConfiguration.java @@ -0,0 +1,37 @@ +package fr.insee.pearljam.jms.configuration; + +import jakarta.jms.ConnectionFactory; +import lombok.extern.slf4j.Slf4j; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.boot.autoconfigure.jms.DefaultJmsListenerContainerFactoryConfigurer; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.jms.annotation.EnableJms; +import org.springframework.jms.config.DefaultJmsListenerContainerFactory; +import org.springframework.jms.config.JmsListenerContainerFactory; +import org.springframework.scheduling.annotation.EnableScheduling; + +@Slf4j +@EnableJms +@EnableScheduling +@Configuration(enforceUniqueMethods = false) +public class JMSConfiguration { + + @Bean("topicJmsListenerContainerFactory") + @ConditionalOnProperty( + prefix = "broker", + name = "name", + havingValue = "artemis", + matchIfMissing = false + ) + public JmsListenerContainerFactory topicJmsListenerContainerFactory( + ConnectionFactory connectionFactory, + DefaultJmsListenerContainerFactoryConfigurer configurer) { + DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory(); + configurer.configure(factory, connectionFactory); + factory.setPubSubDomain(true); // Enable topic mode for listeners + log.info("JmsListenerContainerFactory configured for topics (pub/sub mode)"); + return factory; + } + +} diff --git a/listener-jms/src/main/java/fr/insee/pearljam/jms/configuration/MapperConfiguration.java b/listener-jms/src/main/java/fr/insee/pearljam/jms/configuration/MapperConfiguration.java new file mode 100644 index 00000000..93c74900 --- /dev/null +++ b/listener-jms/src/main/java/fr/insee/pearljam/jms/configuration/MapperConfiguration.java @@ -0,0 +1,35 @@ +package fr.insee.pearljam.jms.configuration; + +import com.fasterxml.jackson.databind.ObjectMapper; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Primary; +import org.springframework.jms.support.converter.MappingJackson2MessageConverter; +import org.springframework.jms.support.converter.MessageConverter; +import org.springframework.jms.support.converter.MessageType; + +import static com.fasterxml.jackson.databind.DeserializationFeature.FAIL_ON_MISSING_CREATOR_PROPERTIES; +import static com.fasterxml.jackson.databind.DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES; + +@Configuration +public class MapperConfiguration { + /** + * Creates and configures a Jackson-based JMS message converter. + * @return a {@link MessageConverter} configured for JSON serialization of JMS messages using Jackson + */ + @Bean + public MessageConverter jacksonJmsMessageConverter() { + MappingJackson2MessageConverter converter = new MappingJackson2MessageConverter(); + converter.setTargetType(MessageType.TEXT); + converter.setTypeIdPropertyName("_type"); + return converter; + } + + @Bean + @Primary + public ObjectMapper objectMapper() { + return new ObjectMapper() + .configure(FAIL_ON_UNKNOWN_PROPERTIES, false) + .configure(FAIL_ON_MISSING_CREATOR_PROPERTIES, true); + } +} diff --git a/listener-jms/src/main/java/fr/insee/pearljam/jms/configuration/MultimodeProperties.java b/listener-jms/src/main/java/fr/insee/pearljam/jms/configuration/MultimodeProperties.java new file mode 100644 index 00000000..aed94092 --- /dev/null +++ b/listener-jms/src/main/java/fr/insee/pearljam/jms/configuration/MultimodeProperties.java @@ -0,0 +1,24 @@ +package fr.insee.pearljam.jms.configuration; + +import lombok.Getter; +import lombok.Setter; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.context.annotation.Configuration; + +@Getter +@Setter +@Configuration +@ConfigurationProperties(prefix = "feature.multimode") +public class MultimodeProperties { + + private Subscriber subscriber = new Subscriber(); + + private String topic = "multimode_events"; + + @Getter + @Setter + public static class Subscriber { + private boolean enabled = false; + } + +} \ No newline at end of file diff --git a/listener-jms/src/main/java/fr/insee/pearljam/jms/configuration/NoOpCacheConfig.java b/listener-jms/src/main/java/fr/insee/pearljam/jms/configuration/NoOpCacheConfig.java new file mode 100644 index 00000000..085f5e36 --- /dev/null +++ b/listener-jms/src/main/java/fr/insee/pearljam/jms/configuration/NoOpCacheConfig.java @@ -0,0 +1,19 @@ +package fr.insee.pearljam.jms.configuration; + +import lombok.extern.slf4j.Slf4j; +import org.springframework.cache.CacheManager; +import org.springframework.cache.support.NoOpCacheManager; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Primary; + +@Slf4j +@Configuration +public class NoOpCacheConfig { + @Bean + @Primary + protected CacheManager cacheManager() { + log.info("NoOpCacheManager()"); + return new NoOpCacheManager(); + } +} diff --git a/listener-jms/src/main/java/fr/insee/pearljam/jms/configuration/TimeConfiguration.java b/listener-jms/src/main/java/fr/insee/pearljam/jms/configuration/TimeConfiguration.java new file mode 100644 index 00000000..5e2d59ae --- /dev/null +++ b/listener-jms/src/main/java/fr/insee/pearljam/jms/configuration/TimeConfiguration.java @@ -0,0 +1,15 @@ +package fr.insee.pearljam.jms.configuration; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +import java.time.Clock; +import java.time.ZoneId; + +@Configuration +public class TimeConfiguration { + @Bean + public Clock clock() { + return Clock.system(ZoneId.systemDefault()); + } +} diff --git a/listener-jms/src/main/java/fr/insee/pearljam/jms/service/EventConsumer.java b/listener-jms/src/main/java/fr/insee/pearljam/jms/service/EventConsumer.java new file mode 100644 index 00000000..52e49520 --- /dev/null +++ b/listener-jms/src/main/java/fr/insee/pearljam/jms/service/EventConsumer.java @@ -0,0 +1,17 @@ +package fr.insee.pearljam.jms.service; + +import fr.insee.modelefiliere.EventDto; + +/** + * Interface for consuming events from the multimode topic. + * Implementations of this interface will be called when an event is received. + */ +public interface EventConsumer { + + /** + * Consumes an event received from the topic. + * + * @param eventDto the event to consume + */ + void consume(EventDto eventDto); +} \ No newline at end of file diff --git a/listener-jms/src/main/java/fr/insee/pearljam/jms/service/MultimodeSubscriber.java b/listener-jms/src/main/java/fr/insee/pearljam/jms/service/MultimodeSubscriber.java new file mode 100644 index 00000000..0328f0fe --- /dev/null +++ b/listener-jms/src/main/java/fr/insee/pearljam/jms/service/MultimodeSubscriber.java @@ -0,0 +1,92 @@ +package fr.insee.pearljam.jms.service; + +import com.fasterxml.jackson.databind.ObjectMapper; +import fr.insee.modelefiliere.EventDto; +import fr.insee.pearljam.infrastructure.db.events.InboxDB; +import fr.insee.pearljam.infrastructure.db.events.InboxJpaRepository; +import fr.insee.pearljam.jms.configuration.MultimodeProperties; +import jakarta.jms.JMSException; +import jakarta.jms.Message; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.jms.annotation.JmsListener; +import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; +import java.util.UUID; + +@Slf4j +@Component +@RequiredArgsConstructor +@ConditionalOnProperty(prefix = "feature.multimode.subscriber", name = "enabled", havingValue = "true") +public class MultimodeSubscriber { + + private final ObjectMapper objectMapper; + private final MultimodeProperties multimodeProperties; + private final List eventConsumers; + private final InboxJpaRepository inboxRepository; + + @JmsListener( + destination = "${feature.multimode.topic}", + containerFactory = "topicJmsListenerContainerFactory" + ) + @Transactional + public void onMessage(Message message) throws JMSException { + try { + String jsonMessage = message.getBody(String.class); + log.info("Received message from topic: {}", multimodeProperties.getTopic()); + log.debug("Message content: {}", jsonMessage); + + // Deserialize JSON to EventDto + EventDto eventDto = objectMapper.readValue(jsonMessage, EventDto.class); + + // Extract correlationId as the inbox ID + UUID correlationId = eventDto.getCorrelationId(); + if (correlationId == null) { + log.error("Received event without correlationId, skipping"); + return; + } + log.info("Processing event type {} with correlationId: {}", + eventDto.getEventType(), correlationId); + + // Check if event already exists in inbox (idempotence) + if (inboxRepository.existsById(correlationId)) { + log.info("Event with correlationId {} already exists in inbox, ignoring duplicate message", correlationId); + return; + } + + // Store the message in inbox table + InboxDB inboxRecord = new InboxDB( + correlationId, + objectMapper.valueToTree(eventDto) + ); + + inboxRepository.save(inboxRecord); + + log.info("Event with correlationId {} successfully stored in inbox", correlationId); + // Dispatch event to all registered consumers + log.debug("Dispatching event to {} consumer(s)", eventConsumers.size()); + for (EventConsumer consumer : eventConsumers) { + try { + log.debug("Calling consumer: {}", consumer.getClass().getSimpleName()); + consumer.consume(eventDto); + } catch (Exception e) { + log.error("Error in consumer {} while processing event with correlationId: {}", + consumer.getClass().getSimpleName(), + correlationId, + e); + // Continue processing with other consumers even if one fails + } + } + + log.info("Event with correlationId {} processed by {} consumer(s)", + correlationId, eventConsumers.size()); + + } catch (Exception e) { + log.error("Error processing message from topic {}", multimodeProperties.getTopic(), e); + throw new RuntimeException("Failed to process message from topic", e); + } + } +} \ No newline at end of file diff --git a/listener-jms/src/main/java/fr/insee/pearljam/jms/service/consumers/MultiModeMovedConsumer.java b/listener-jms/src/main/java/fr/insee/pearljam/jms/service/consumers/MultiModeMovedConsumer.java new file mode 100644 index 00000000..2a53179a --- /dev/null +++ b/listener-jms/src/main/java/fr/insee/pearljam/jms/service/consumers/MultiModeMovedConsumer.java @@ -0,0 +1,27 @@ +package fr.insee.pearljam.jms.service.consumers; + +import fr.insee.modelefiliere.EventDto; +import fr.insee.pearljam.domain.surveyunit.port.userside.MovedService; +import fr.insee.pearljam.domain.surveyunit.port.userside.StatusService; +import fr.insee.pearljam.jms.service.EventConsumer; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +@Component +@RequiredArgsConstructor +@Slf4j +public class MultiModeMovedConsumer implements EventConsumer { + private final MovedService movedService; + private final StatusService statusService; + @Override + public void consume(EventDto eventDto) { + if(EventDto.EventTypeEnum.MULTIMODE_MOVED != eventDto.getEventType()){ + return; + } + + var interrogationId = eventDto.getPayload().getInterrogationId(); + this.statusService.updateStatus(interrogationId, eventDto.getEventType().toString()); + this.movedService.updateMovedSurveyUnit(interrogationId); + } +} diff --git a/listener-jms/src/main/java/fr/insee/pearljam/jms/service/consumers/QuestionnaireCompletedConsumer.java b/listener-jms/src/main/java/fr/insee/pearljam/jms/service/consumers/QuestionnaireCompletedConsumer.java new file mode 100644 index 00000000..8ceff28e --- /dev/null +++ b/listener-jms/src/main/java/fr/insee/pearljam/jms/service/consumers/QuestionnaireCompletedConsumer.java @@ -0,0 +1,24 @@ +package fr.insee.pearljam.jms.service.consumers; + +import fr.insee.modelefiliere.EventDto; +import fr.insee.pearljam.domain.surveyunit.port.userside.StatusService; +import fr.insee.pearljam.jms.service.EventConsumer; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + + +@Component +@RequiredArgsConstructor +@Slf4j +public class QuestionnaireCompletedConsumer implements EventConsumer { + private final StatusService statusService; + @Override + public void consume(EventDto eventDto) { + if(EventDto.EventTypeEnum.QUESTIONNAIRE_COMPLETED != eventDto.getEventType()){ + return; + } + + this.statusService.updateStatus(eventDto.getPayload().getInterrogationId(), eventDto.getEventType().toString()); + } +} diff --git a/listener-jms/src/main/java/fr/insee/pearljam/jms/service/consumers/QuestionnaireInitConsumer.java b/listener-jms/src/main/java/fr/insee/pearljam/jms/service/consumers/QuestionnaireInitConsumer.java new file mode 100644 index 00000000..989d81e0 --- /dev/null +++ b/listener-jms/src/main/java/fr/insee/pearljam/jms/service/consumers/QuestionnaireInitConsumer.java @@ -0,0 +1,24 @@ +package fr.insee.pearljam.jms.service.consumers; + +import fr.insee.modelefiliere.EventDto; +import fr.insee.pearljam.domain.surveyunit.port.userside.StatusService; +import fr.insee.pearljam.jms.service.EventConsumer; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + + +@Component +@RequiredArgsConstructor +@Slf4j +public class QuestionnaireInitConsumer implements EventConsumer { + private final StatusService statusService; + + @Override + public void consume(EventDto eventDto) { + if(EventDto.EventTypeEnum.QUESTIONNAIRE_INIT != eventDto.getEventType()){ + return; + } + this.statusService.updateStatus(eventDto.getPayload().getInterrogationId(), eventDto.getEventType().toString()); + } +} diff --git a/listener-jms/src/main/java/fr/insee/pearljam/jms/service/consumers/QuestionnaireLeafStatsUpdatedConsumer.java b/listener-jms/src/main/java/fr/insee/pearljam/jms/service/consumers/QuestionnaireLeafStatsUpdatedConsumer.java new file mode 100644 index 00000000..68e57f05 --- /dev/null +++ b/listener-jms/src/main/java/fr/insee/pearljam/jms/service/consumers/QuestionnaireLeafStatsUpdatedConsumer.java @@ -0,0 +1,24 @@ +package fr.insee.pearljam.jms.service.consumers; + +import fr.insee.modelefiliere.EventDto; +import fr.insee.pearljam.domain.surveyunit.port.userside.StatusService; +import fr.insee.pearljam.jms.service.EventConsumer; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + + +@Component +@RequiredArgsConstructor +@Slf4j +public class QuestionnaireLeafStatsUpdatedConsumer implements EventConsumer { + private final StatusService statusService; + + @Override + public void consume(EventDto eventDto) { + if(EventDto.EventTypeEnum.QUESTIONNAIRE_LEAF_STATES_UPDATED != eventDto.getEventType()){ + return; + } + this.statusService.updateStatus(eventDto.getPayload().getInterrogationId(), eventDto.getEventType().toString()); + } +} diff --git a/listener-jms/src/main/java/fr/insee/pearljam/jms/service/consumers/QuestionnaireSwitchCAPIConsumer.java b/listener-jms/src/main/java/fr/insee/pearljam/jms/service/consumers/QuestionnaireSwitchCAPIConsumer.java new file mode 100644 index 00000000..d9c267c8 --- /dev/null +++ b/listener-jms/src/main/java/fr/insee/pearljam/jms/service/consumers/QuestionnaireSwitchCAPIConsumer.java @@ -0,0 +1,24 @@ +package fr.insee.pearljam.jms.service.consumers; + +import fr.insee.modelefiliere.EventDto; +import fr.insee.pearljam.domain.surveyunit.port.userside.StatusService; +import fr.insee.pearljam.jms.service.EventConsumer; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + + +@Component +@RequiredArgsConstructor +@Slf4j +public class QuestionnaireSwitchCAPIConsumer implements EventConsumer { + private final StatusService statusService; + + @Override + public void consume(EventDto eventDto) { + if(EventDto.EventTypeEnum.QUESTIONNAIRE_SWITCH_CAPI != eventDto.getEventType()){ + return; + } + this.statusService.updateStatus(eventDto.getPayload().getInterrogationId(), eventDto.getEventType().toString()); + } +} diff --git a/listener-jms/src/main/java/fr/insee/pearljam/jms/service/consumers/QuestionnaireUpdatedConsumer.java b/listener-jms/src/main/java/fr/insee/pearljam/jms/service/consumers/QuestionnaireUpdatedConsumer.java new file mode 100644 index 00000000..4e561360 --- /dev/null +++ b/listener-jms/src/main/java/fr/insee/pearljam/jms/service/consumers/QuestionnaireUpdatedConsumer.java @@ -0,0 +1,24 @@ +package fr.insee.pearljam.jms.service.consumers; + +import fr.insee.modelefiliere.EventDto; +import fr.insee.pearljam.domain.surveyunit.port.userside.StatusService; +import fr.insee.pearljam.jms.service.EventConsumer; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + + +@Component +@RequiredArgsConstructor +@Slf4j +public class QuestionnaireUpdatedConsumer implements EventConsumer { + private final StatusService statusService; + + @Override + public void consume(EventDto eventDto) { + if(EventDto.EventTypeEnum.QUESTIONNAIRE_UPDATED != eventDto.getEventType()){ + return; + } + this.statusService.updateStatus(eventDto.getPayload().getInterrogationId(), eventDto.getEventType().toString()); + } +} diff --git a/listener-jms/src/main/java/fr/insee/pearljam/jms/service/consumers/QuestionnaireValidatedConsumer.java b/listener-jms/src/main/java/fr/insee/pearljam/jms/service/consumers/QuestionnaireValidatedConsumer.java new file mode 100644 index 00000000..fa73adbc --- /dev/null +++ b/listener-jms/src/main/java/fr/insee/pearljam/jms/service/consumers/QuestionnaireValidatedConsumer.java @@ -0,0 +1,23 @@ +package fr.insee.pearljam.jms.service.consumers; + +import fr.insee.modelefiliere.EventDto; +import fr.insee.pearljam.domain.surveyunit.port.userside.StatusService; +import fr.insee.pearljam.jms.service.EventConsumer; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +@Component +@RequiredArgsConstructor +@Slf4j +public class QuestionnaireValidatedConsumer implements EventConsumer { + private final StatusService statusService; + + @Override + public void consume(EventDto eventDto) { + if(EventDto.EventTypeEnum.QUESTIONNAIRE_VALIDATED != eventDto.getEventType()){ + return; + } + this.statusService.updateStatus(eventDto.getPayload().getInterrogationId(), eventDto.getEventType().toString()); + } +} diff --git a/listener-jms/src/main/resources/application.yml b/listener-jms/src/main/resources/application.yml new file mode 100644 index 00000000..1c31bb9b --- /dev/null +++ b/listener-jms/src/main/resources/application.yml @@ -0,0 +1,61 @@ +broker: + # artemis, pulsar + name: artemis + queue: + interrogation: + request: interrogation_request + response: interrogation_response + +spring: + application: + name: pearl-listener-jms + datasource: + url: jdbc:postgresql://:5432/pearl + username: + password: + driver-class-name: org.postgresql.Driver + hikari: + minimum-idle: 2 + maximum-pool-size: 2 + liquibase: + enabled: false + jpa: + open-in-view: false + hibernate: + ddl-auto: none + naming: + physical-strategy: org.hibernate.boot.model.naming.CamelCaseToUnderscoresNamingStrategy + implicit-strategy: org.springframework.boot.orm.jpa.hibernate.SpringImplicitNamingStrategy + properties: + id: + new_generator_mappings: true + cache: + use_second_level_cache: false + use_query_cache: false + generate_statistics: false + hbm2ddl: + auto: validate + hibernate: + dialect: org.hibernate.dialect.PostgreSQLDialect + artemis: + mode: native + broker-url: + user: + password: + pool: + enabled: true + max-connections: 50 + jms: + listener: + command-queue: + logging: + file: + enabled: false +feature: + sensitive-data: + enabled: false + encryptionSecretKey: + multimode: + subscriber: + enabled: false + topic: multimode_events \ No newline at end of file diff --git a/listener-jms/src/test/java/fr/insee/pearljam/jms/integration/ConsumersIntegrationTest.java b/listener-jms/src/test/java/fr/insee/pearljam/jms/integration/ConsumersIntegrationTest.java new file mode 100644 index 00000000..eb7aa115 --- /dev/null +++ b/listener-jms/src/test/java/fr/insee/pearljam/jms/integration/ConsumersIntegrationTest.java @@ -0,0 +1,317 @@ +package fr.insee.pearljam.jms.integration; + +import com.fasterxml.jackson.databind.ObjectMapper; +import fr.insee.modelefiliere.EventDto; +import fr.insee.modelefiliere.EventPayloadDto; +import fr.insee.pearljam.JMSApplication; +import fr.insee.pearljam.api.domain.OtherModeQuestionnaireState; +import fr.insee.pearljam.api.domain.SurveyUnit; +import fr.insee.pearljam.api.repository.OtherModeQuestionnaireRepository; +import fr.insee.pearljam.api.repository.SurveyUnitRepository; +import fr.insee.pearljam.infrastructure.db.events.InboxJpaRepository; +import fr.insee.pearljam.infrastructure.surveyunit.entity.PersonDB; +import jakarta.jms.ConnectionFactory; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.jms.core.JmsTemplate; +import org.springframework.test.context.ActiveProfiles; +import org.springframework.test.context.TestPropertySource; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; +import java.util.UUID; + +import static org.junit.jupiter.api.Assertions.*; + +@SpringBootTest(classes = JMSApplication.class) +@ActiveProfiles("test") +@TestPropertySource(properties = { + "feature.multimode.subscriber.enabled=true", + "feature.multimode.topic=multimode_events_test", + "spring.docker.compose.file=../api/compose.yml", + "spring.docker.compose.lifecycle-management=start-and-stop" +}) +class ConsumersIntegrationTest { + + @Autowired + private ConnectionFactory connectionFactory; + + @Autowired + private ObjectMapper objectMapper; + + @Autowired + private InboxJpaRepository inboxRepository; + + @Autowired + private OtherModeQuestionnaireRepository otherModeQuestionnaireRepository; + + @Autowired + private SurveyUnitRepository surveyUnitRepository; + + private JmsTemplate jmsTemplate; + + @BeforeEach + void setUp() { + jmsTemplate = new JmsTemplate(connectionFactory); + jmsTemplate.setPubSubDomain(true); + + // Clean up before each test + inboxRepository.deleteAll(); + otherModeQuestionnaireRepository.deleteAll(); + } + + @Test + @DisplayName("Should process QUESTIONNAIRE_INIT event and create OtherModeQuestionnaireState") + void shouldProcessQuestionnaireInitEvent() throws Exception { + // Given + String surveyUnitId = getExistingSurveyUnitId(); + UUID correlationId = UUID.randomUUID(); + EventDto eventDto = createEventDto(correlationId, EventDto.EventTypeEnum.QUESTIONNAIRE_INIT, surveyUnitId); + String jsonMessage = objectMapper.writeValueAsString(eventDto); + + // When + jmsTemplate.convertAndSend("multimode_events_test", jsonMessage); + + // Then + waitForInboxEntry(correlationId, 10); + + List states = waitForOtherModeQuestionnaireState(surveyUnitId, 10); + assertFalse(states.isEmpty(), "OtherModeQuestionnaireState should be created"); + + OtherModeQuestionnaireState state = states.stream() + .filter(s -> "QUESTIONNAIRE_INIT".equals(s.getState())) + .findFirst() + .orElse(null); + assertNotNull(state, "QUESTIONNAIRE_INIT state should exist"); + } + + @Test + @DisplayName("Should process QUESTIONNAIRE_VALIDATED event and create OtherModeQuestionnaireState") + void shouldProcessQuestionnaireValidatedEvent() throws Exception { + // Given + String surveyUnitId = getExistingSurveyUnitId(); + UUID correlationId = UUID.randomUUID(); + EventDto eventDto = createEventDto(correlationId, EventDto.EventTypeEnum.QUESTIONNAIRE_VALIDATED, surveyUnitId); + String jsonMessage = objectMapper.writeValueAsString(eventDto); + + // When + jmsTemplate.convertAndSend("multimode_events_test", jsonMessage); + + // Then + waitForInboxEntry(correlationId, 10); + + List states = waitForOtherModeQuestionnaireState(surveyUnitId, 10); + assertFalse(states.isEmpty(), "OtherModeQuestionnaireState should be created"); + + OtherModeQuestionnaireState state = states.stream() + .filter(s -> "QUESTIONNAIRE_VALIDATED".equals(s.getState())) + .findFirst() + .orElse(null); + assertNotNull(state, "QUESTIONNAIRE_VALIDATED state should exist"); + } + + @Test + @DisplayName("Should process QUESTIONNAIRE_COMPLETED event and create OtherModeQuestionnaireState") + void shouldProcessQuestionnaireCompletedEvent() throws Exception { + // Given + String surveyUnitId = getExistingSurveyUnitId(); + UUID correlationId = UUID.randomUUID(); + EventDto eventDto = createEventDto(correlationId, EventDto.EventTypeEnum.QUESTIONNAIRE_COMPLETED, surveyUnitId); + String jsonMessage = objectMapper.writeValueAsString(eventDto); + + // When + jmsTemplate.convertAndSend("multimode_events_test", jsonMessage); + + // Then + waitForInboxEntry(correlationId, 10); + + List states = waitForOtherModeQuestionnaireState(surveyUnitId, 10); + assertFalse(states.isEmpty(), "OtherModeQuestionnaireState should be created"); + + OtherModeQuestionnaireState state = states.stream() + .filter(s -> "QUESTIONNAIRE_COMPLETED".equals(s.getState())) + .findFirst() + .orElse(null); + assertNotNull(state, "QUESTIONNAIRE_COMPLETED state should exist"); + } + + @Test + @DisplayName("Should process QUESTIONNAIRE_UPDATED event and create OtherModeQuestionnaireState") + void shouldProcessQuestionnaireUpdatedEvent() throws Exception { + // Given + String surveyUnitId = getExistingSurveyUnitId(); + UUID correlationId = UUID.randomUUID(); + EventDto eventDto = createEventDto(correlationId, EventDto.EventTypeEnum.QUESTIONNAIRE_UPDATED, surveyUnitId); + String jsonMessage = objectMapper.writeValueAsString(eventDto); + + // When + jmsTemplate.convertAndSend("multimode_events_test", jsonMessage); + + // Then + waitForInboxEntry(correlationId, 10); + + List states = waitForOtherModeQuestionnaireState(surveyUnitId, 10); + assertFalse(states.isEmpty(), "OtherModeQuestionnaireState should be created"); + + OtherModeQuestionnaireState state = states.stream() + .filter(s -> "QUESTIONNAIRE_UPDATED".equals(s.getState())) + .findFirst() + .orElse(null); + assertNotNull(state, "QUESTIONNAIRE_UPDATED state should exist"); + } + + @Test + @DisplayName("Should process QUESTIONNAIRE_LEAF_STATES_UPDATED event and create OtherModeQuestionnaireState") + void shouldProcessQuestionnaireLeafStatesUpdatedEvent() throws Exception { + // Given + String surveyUnitId = getExistingSurveyUnitId(); + UUID correlationId = UUID.randomUUID(); + EventDto eventDto = createEventDto(correlationId, EventDto.EventTypeEnum.QUESTIONNAIRE_LEAF_STATES_UPDATED, surveyUnitId); + String jsonMessage = objectMapper.writeValueAsString(eventDto); + + // When + jmsTemplate.convertAndSend("multimode_events_test", jsonMessage); + + // Then + waitForInboxEntry(correlationId, 10); + + List states = waitForOtherModeQuestionnaireState(surveyUnitId, 10); + assertFalse(states.isEmpty(), "OtherModeQuestionnaireState should be created"); + + OtherModeQuestionnaireState state = states.stream() + .filter(s -> "QUESTIONNAIRE_LEAF_STATES_UPDATED".equals(s.getState())) + .findFirst() + .orElse(null); + assertNotNull(state, "QUESTIONNAIRE_LEAF_STATES_UPDATED state should exist"); + } + + @Test + @Transactional + @DisplayName("Should process MULTIMODE_MOVED event and update SurveyUnit") + void shouldProcessMultimodeMovedEvent() throws Exception { + // Given + String surveyUnitId = getExistingSurveyUnitId(); + UUID correlationId = UUID.randomUUID(); + EventDto eventDto = createEventDto(correlationId, EventDto.EventTypeEnum.MULTIMODE_MOVED, surveyUnitId); + String jsonMessage = objectMapper.writeValueAsString(eventDto); + + // When + jmsTemplate.convertAndSend("multimode_events_test", jsonMessage); + + // Then + waitForInboxEntry(correlationId, 10); + waitForSurveyUnitUpdate(surveyUnitId, 10); + + // Verify the survey unit data in a separate transactional context + verifyMovedSurveyUnitData(surveyUnitId); + } + + void verifyMovedSurveyUnitData(String surveyUnitId) { + SurveyUnit updatedSurveyUnit = surveyUnitRepository.findById(surveyUnitId) + .orElseThrow(() -> new AssertionError("SurveyUnit should exist")); + + assertTrue(updatedSurveyUnit.isPriority(), "SurveyUnit priority should be true"); + + if (updatedSurveyUnit.getIdentification() != null) { + assertTrue(updatedSurveyUnit.getIdentification().getDemenagementWeb(), + "Identification demenagementWeb should be true"); + } + + // Verify that only one person exists with firstName="PRENOM" and lastName="NOM" + assertEquals(1, updatedSurveyUnit.getPersons().size(), + "Should have exactly one person"); + PersonDB person = updatedSurveyUnit.getPersons().iterator().next(); + assertEquals("PRENOM", person.getFirstName(), + "Person firstName should be PRENOM"); + assertEquals("NOM", person.getLastName(), + "Person lastName should be NOM"); + } + + @Test + @DisplayName("Should process multiple different event types") + void shouldProcessMultipleDifferentEventTypes() throws Exception { + // Given + String surveyUnitId = getExistingSurveyUnitId(); + + UUID correlationId1 = UUID.randomUUID(); + EventDto event1 = createEventDto(correlationId1, EventDto.EventTypeEnum.QUESTIONNAIRE_INIT, surveyUnitId); + + UUID correlationId2 = UUID.randomUUID(); + EventDto event2 = createEventDto(correlationId2, EventDto.EventTypeEnum.QUESTIONNAIRE_VALIDATED, surveyUnitId); + + // When + jmsTemplate.convertAndSend("multimode_events_test", objectMapper.writeValueAsString(event1)); + jmsTemplate.convertAndSend("multimode_events_test", objectMapper.writeValueAsString(event2)); + + // Then + waitForInboxEntry(correlationId1, 10); + waitForInboxEntry(correlationId2, 10); + + List states = waitForOtherModeQuestionnaireState(surveyUnitId, 10); + + boolean hasInit = states.stream().anyMatch(s -> "QUESTIONNAIRE_INIT".equals(s.getState())); + boolean hasValidated = states.stream().anyMatch(s -> "QUESTIONNAIRE_VALIDATED".equals(s.getState())); + + assertTrue(hasInit, "QUESTIONNAIRE_INIT state should exist"); + assertTrue(hasValidated, "QUESTIONNAIRE_VALIDATED state should exist"); + } + + private String getExistingSurveyUnitId() { + return surveyUnitRepository.findAll().stream() + .findFirst() + .map(SurveyUnit::getId) + .orElseThrow(() -> new RuntimeException("No SurveyUnit found in database. Ensure test data is loaded.")); + } + + private EventDto createEventDto(UUID correlationId, EventDto.EventTypeEnum eventType, String interrogationId) { + EventPayloadDto payload = new EventPayloadDto(); + payload.setInterrogationId(interrogationId); + + EventDto eventDto = new EventDto(); + eventDto.setCorrelationId(correlationId); + eventDto.setEventType(eventType); + eventDto.setPayload(payload); + + return eventDto; + } + + private void waitForInboxEntry(UUID correlationId, int maxSeconds) throws InterruptedException { + int attempts = maxSeconds * 2; + for (int i = 0; i < attempts; i++) { + if (inboxRepository.existsById(correlationId)) { + return; + } + Thread.sleep(500); + } + fail("Inbox entry not found for correlation ID: " + correlationId); + } + + private List waitForOtherModeQuestionnaireState(String surveyUnitId, int maxSeconds) throws InterruptedException { + int attempts = maxSeconds * 2; + for (int i = 0; i < attempts; i++) { + List states = otherModeQuestionnaireRepository.findAll().stream() + .filter(s -> s.getSurveyUnit() != null && surveyUnitId.equals(s.getSurveyUnit().getId())) + .toList(); + if (!states.isEmpty()) { + return states; + } + Thread.sleep(500); + } + return List.of(); + } + + private void waitForSurveyUnitUpdate(String surveyUnitId, int maxSeconds) throws InterruptedException { + int attempts = maxSeconds * 2; + for (int i = 0; i < attempts; i++) { + SurveyUnit surveyUnit = surveyUnitRepository.findById(surveyUnitId).orElse(null); + if (surveyUnit != null && surveyUnit.isPriority()) { + return; + } + Thread.sleep(500); + } + fail("SurveyUnit was not updated with priority=true within " + maxSeconds + " seconds"); + } +} diff --git a/listener-jms/src/test/java/fr/insee/pearljam/jms/integration/MultimodeSubscriberIntegrationTest.java b/listener-jms/src/test/java/fr/insee/pearljam/jms/integration/MultimodeSubscriberIntegrationTest.java new file mode 100644 index 00000000..918d2238 --- /dev/null +++ b/listener-jms/src/test/java/fr/insee/pearljam/jms/integration/MultimodeSubscriberIntegrationTest.java @@ -0,0 +1,239 @@ +package fr.insee.pearljam.jms.integration; + +import com.fasterxml.jackson.databind.ObjectMapper; +import fr.insee.modelefiliere.EventDto; +import fr.insee.modelefiliere.EventPayloadDto; +import fr.insee.pearljam.JMSApplication; +import fr.insee.pearljam.api.domain.SurveyUnit; +import fr.insee.pearljam.api.repository.SurveyUnitRepository; +import fr.insee.pearljam.infrastructure.db.events.InboxDB; +import fr.insee.pearljam.infrastructure.db.events.InboxJpaRepository; +import fr.insee.pearljam.infrastructure.surveyunit.entity.PersonDB; +import jakarta.jms.ConnectionFactory; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.jms.core.JmsTemplate; +import org.springframework.test.context.ActiveProfiles; +import org.springframework.test.context.TestPropertySource; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; + +import static org.junit.jupiter.api.Assertions.*; + +@SpringBootTest(classes = JMSApplication.class) +@ActiveProfiles("test") +@TestPropertySource(properties = { + "feature.multimode.subscriber.enabled=true", + "feature.multimode.topic=multimode_events_test", + "spring.docker.compose.file=../api/compose.yml", + "spring.docker.compose.lifecycle-management=start-and-stop" +}) +class MultimodeSubscriberIntegrationTest { + + @Autowired + private ConnectionFactory connectionFactory; + + @Autowired + private ObjectMapper objectMapper; + + @Autowired + private InboxJpaRepository inboxRepository; + + @Autowired + private SurveyUnitRepository surveyUnitRepository; + + @BeforeEach + void setUp() { + // Clean up inbox before each test + inboxRepository.deleteAll(); + } + + @Test + void shouldSaveMessageToInbox() throws Exception { + // Given: Create a test event + UUID correlationId = UUID.randomUUID(); + EventDto eventDto = new EventDto(); + eventDto.setCorrelationId(correlationId); + eventDto.setEventType(EventDto.EventTypeEnum.QUESTIONNAIRE_INIT); + + String jsonMessage = objectMapper.writeValueAsString(eventDto); + + // When: Send message to topic + JmsTemplate jmsTemplate = new JmsTemplate(connectionFactory); + jmsTemplate.setPubSubDomain(true); + jmsTemplate.convertAndSend("multimode_events_test", jsonMessage); + + // Then: Wait for message to be processed and verify in inbox + InboxDB inboxEntry = waitForInboxEntry(correlationId, 10); + + assertNotNull(inboxEntry, "Inbox entry should exist"); + assertEquals(correlationId, inboxEntry.getId(), "Inbox ID should match correlation ID"); + assertNotNull(inboxEntry.getPayload(), "Payload should not be null"); + assertNotNull(inboxEntry.getCreatedDate(), "Created date should not be null"); + + // Verify payload content + assertEquals("QUESTIONNAIRE_INIT", inboxEntry.getPayload().get("eventType").asText()); + } + + @Test + void shouldIgnoreDuplicateMessages() throws Exception { + // Given: Create a test event + UUID correlationId = UUID.randomUUID(); + EventDto eventDto = new EventDto(); + eventDto.setCorrelationId(correlationId); + eventDto.setEventType(EventDto.EventTypeEnum.QUESTIONNAIRE_INIT); + + String jsonMessage = objectMapper.writeValueAsString(eventDto); + + // When: Send the same message twice to topic + JmsTemplate jmsTemplate = new JmsTemplate(connectionFactory); + jmsTemplate.setPubSubDomain(true); + jmsTemplate.convertAndSend("multimode_events_test", jsonMessage); + + // Wait for first message to be processed + InboxDB firstEntry = waitForInboxEntry(correlationId, 10); + assertNotNull(firstEntry, "First message should be saved"); + + // Send duplicate + jmsTemplate.convertAndSend("multimode_events_test", jsonMessage); + + // Wait a bit to ensure duplicate would be processed if it wasn't ignored + Thread.sleep(2000); + + // Then: Verify only one entry exists + assertEquals(1, inboxRepository.count(), "Only one entry should exist (duplicate ignored)"); + + InboxDB inboxEntry = inboxRepository.findById(correlationId).orElse(null); + assertNotNull(inboxEntry, "Inbox entry should still exist"); + } + + @Test + void shouldSaveMultipleMessagesToInbox() throws Exception { + // Given: Create multiple test events + List correlationIds = new ArrayList<>(); + JmsTemplate jmsTemplate = new JmsTemplate(connectionFactory); + jmsTemplate.setPubSubDomain(true); + + for (int i = 0; i < 3; i++) { + UUID correlationId = UUID.randomUUID(); + correlationIds.add(correlationId); + + EventDto eventDto = new EventDto(); + eventDto.setCorrelationId(correlationId); + eventDto.setEventType(EventDto.EventTypeEnum.QUESTIONNAIRE_VALIDATED); + + String jsonMessage = objectMapper.writeValueAsString(eventDto); + + // When: Send messages to topic + jmsTemplate.convertAndSend("multimode_events_test", jsonMessage); + } + + // Then: Wait for all messages to be processed + for (UUID correlationId : correlationIds) { + InboxDB inboxEntry = waitForInboxEntry(correlationId, 15); + assertNotNull(inboxEntry, "Inbox entry should exist for correlation ID: " + correlationId); + assertEquals(correlationId, inboxEntry.getId(), "Inbox ID should match correlation ID"); + assertNotNull(inboxEntry.getPayload(), "Payload should not be null"); + } + + // Verify total count + assertEquals(3, inboxRepository.count(), "Exactly 3 entries should exist in inbox"); + } + + @Test + @Transactional + void shouldSaveMultimodeMovedMessageToInbox() throws Exception { + // Given: Get an existing survey unit from the database + String surveyUnitId = getExistingSurveyUnitId(); + + UUID correlationId = UUID.randomUUID(); + EventDto eventDto = new EventDto(); + eventDto.setCorrelationId(correlationId); + eventDto.setEventType(EventDto.EventTypeEnum.MULTIMODE_MOVED); + + EventPayloadDto payload = new EventPayloadDto(); + payload.setInterrogationId(surveyUnitId); + eventDto.setPayload(payload); + + String jsonMessage = objectMapper.writeValueAsString(eventDto); + + // When: Send message to topic + JmsTemplate jmsTemplate = new JmsTemplate(connectionFactory); + jmsTemplate.setPubSubDomain(true); + jmsTemplate.convertAndSend("multimode_events_test", jsonMessage); + + // Then: Wait for message to be processed and verify in inbox + InboxDB inboxEntry = waitForInboxEntry(correlationId, 10); + + assertNotNull(inboxEntry, "Inbox entry should exist"); + assertEquals(correlationId, inboxEntry.getId(), "Inbox ID should match correlation ID"); + assertNotNull(inboxEntry.getPayload(), "Payload should not be null"); + assertNotNull(inboxEntry.getCreatedDate(), "Created date should not be null"); + + // Verify payload content + assertEquals("MULTIMODE_MOVED", inboxEntry.getPayload().get("eventType").asText()); + assertEquals(surveyUnitId, inboxEntry.getPayload().get("payload").get("interrogationId").asText()); + + // Verify that the survey unit has been updated in the database + waitForSurveyUnitUpdate(surveyUnitId, 10); + + // Verify the survey unit data in a separate transactional context + verifySurveyUnitData(surveyUnitId); + } + + void verifySurveyUnitData(String surveyUnitId) { + SurveyUnit updatedSurveyUnit = surveyUnitRepository.findById(surveyUnitId) + .orElseThrow(() -> new AssertionError("SurveyUnit should exist")); + + assertTrue(updatedSurveyUnit.isPriority(), "SurveyUnit priority should be true"); + + // Verify that only one person exists with firstName="PRENOM" and lastName="NOM" + assertEquals(1, updatedSurveyUnit.getPersons().size(), + "Should have exactly one person"); + PersonDB person = updatedSurveyUnit.getPersons().iterator().next(); + assertEquals("PRENOM", person.getFirstName(), + "Person firstName should be PRENOM"); + assertEquals("NOM", person.getLastName(), + "Person lastName should be NOM"); + } + + private String getExistingSurveyUnitId() { + return surveyUnitRepository.findAll().stream() + .findFirst() + .map(SurveyUnit::getId) + .orElseThrow(() -> new RuntimeException("No SurveyUnit found in database. Ensure test data is loaded.")); + } + + private void waitForSurveyUnitUpdate(String surveyUnitId, int maxSeconds) throws InterruptedException { + int attempts = maxSeconds * 2; + for (int i = 0; i < attempts; i++) { + SurveyUnit surveyUnit = surveyUnitRepository.findById(surveyUnitId).orElse(null); + if (surveyUnit != null && surveyUnit.isPriority()) { + return; + } + Thread.sleep(500); + } + fail("SurveyUnit was not updated with priority=true within " + maxSeconds + " seconds"); + } + + /** + * Helper method to wait for an inbox entry to appear in the database. + * Polls every 500ms for up to maxSeconds. + */ + private InboxDB waitForInboxEntry(UUID correlationId, int maxSeconds) throws InterruptedException { + int attempts = maxSeconds * 2; // Poll every 500ms + for (int i = 0; i < attempts; i++) { + InboxDB entry = inboxRepository.findById(correlationId).orElse(null); + if (entry != null) { + return entry; + } + Thread.sleep(500); + } + return null; + } +} diff --git a/listener-jms/src/test/java/fr/insee/pearljam/jms/service/MultimodeSubscriberTest.java b/listener-jms/src/test/java/fr/insee/pearljam/jms/service/MultimodeSubscriberTest.java new file mode 100644 index 00000000..b1965940 --- /dev/null +++ b/listener-jms/src/test/java/fr/insee/pearljam/jms/service/MultimodeSubscriberTest.java @@ -0,0 +1,243 @@ +package fr.insee.pearljam.jms.service; + +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.node.ObjectNode; +import fr.insee.modelefiliere.EventDto; +import fr.insee.modelefiliere.EventPayloadDto; +import fr.insee.pearljam.infrastructure.db.events.InboxDB; +import fr.insee.pearljam.infrastructure.db.events.InboxJpaRepository; +import fr.insee.pearljam.jms.configuration.MultimodeProperties; +import jakarta.jms.JMSException; +import jakarta.jms.TextMessage; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.ArgumentCaptor; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; + +import java.util.Arrays; +import java.util.Collections; +import java.util.List; +import java.util.UUID; + +import static org.junit.jupiter.api.Assertions.*; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.*; + +@ExtendWith(MockitoExtension.class) +class MultimodeSubscriberTest { + + @Mock + private ObjectMapper objectMapper; + + @Mock + private MultimodeProperties multimodeProperties; + + @Mock + private InboxJpaRepository inboxRepository; + + @Mock + private EventConsumer eventConsumer1; + + @Mock + private EventConsumer eventConsumer2; + + @Mock + private TextMessage message; + + private MultimodeSubscriber subscriber; + + @BeforeEach + void setUp() { + List consumers = Arrays.asList(eventConsumer1, eventConsumer2); + subscriber = new MultimodeSubscriber(objectMapper, multimodeProperties, consumers, inboxRepository); + } + + @Test + @DisplayName("Should save message to inbox and dispatch to consumers") + void shouldSaveMessageToInboxAndDispatchToConsumers() throws Exception { + // Given + UUID correlationId = UUID.randomUUID(); + String jsonMessage = "{\"correlationId\":\"" + correlationId + "\",\"eventType\":\"QUESTIONNAIRE_INIT\"}"; + + EventDto eventDto = createEventDto(correlationId, EventDto.EventTypeEnum.QUESTIONNAIRE_INIT); + ObjectNode objectNode = new ObjectMapper().createObjectNode(); + + when(message.getBody(String.class)).thenReturn(jsonMessage); + when(multimodeProperties.getTopic()).thenReturn("test-topic"); + when(objectMapper.readValue(jsonMessage, EventDto.class)).thenReturn(eventDto); + when(objectMapper.valueToTree(eventDto)).thenReturn(objectNode); + when(inboxRepository.existsById(correlationId)).thenReturn(false); + when(inboxRepository.save(any(InboxDB.class))).thenAnswer(invocation -> invocation.getArgument(0)); + + // When + subscriber.onMessage(message); + + // Then + ArgumentCaptor inboxCaptor = ArgumentCaptor.forClass(InboxDB.class); + verify(inboxRepository).save(inboxCaptor.capture()); + + InboxDB savedInbox = inboxCaptor.getValue(); + assertEquals(correlationId, savedInbox.getId()); + + verify(eventConsumer1).consume(eventDto); + verify(eventConsumer2).consume(eventDto); + } + + @Test + @DisplayName("Should skip message without correlationId") + void shouldSkipMessageWithoutCorrelationId() throws Exception { + // Given + String jsonMessage = "{\"eventType\":\"QUESTIONNAIRE_INIT\"}"; + + EventDto eventDto = new EventDto(); + eventDto.setCorrelationId(null); + eventDto.setEventType(EventDto.EventTypeEnum.QUESTIONNAIRE_INIT); + + when(message.getBody(String.class)).thenReturn(jsonMessage); + when(multimodeProperties.getTopic()).thenReturn("test-topic"); + when(objectMapper.readValue(jsonMessage, EventDto.class)).thenReturn(eventDto); + + // When + subscriber.onMessage(message); + + // Then + verify(inboxRepository, never()).save(any()); + verify(eventConsumer1, never()).consume(any()); + verify(eventConsumer2, never()).consume(any()); + } + + @Test + @DisplayName("Should ignore duplicate message") + void shouldIgnoreDuplicateMessage() throws Exception { + // Given + UUID correlationId = UUID.randomUUID(); + String jsonMessage = "{\"correlationId\":\"" + correlationId + "\",\"eventType\":\"QUESTIONNAIRE_INIT\"}"; + + EventDto eventDto = createEventDto(correlationId, EventDto.EventTypeEnum.QUESTIONNAIRE_INIT); + + when(message.getBody(String.class)).thenReturn(jsonMessage); + when(multimodeProperties.getTopic()).thenReturn("test-topic"); + when(objectMapper.readValue(jsonMessage, EventDto.class)).thenReturn(eventDto); + when(inboxRepository.existsById(correlationId)).thenReturn(true); + + // When + subscriber.onMessage(message); + + // Then + verify(inboxRepository, never()).save(any()); + verify(eventConsumer1, never()).consume(any()); + verify(eventConsumer2, never()).consume(any()); + } + + @Test + @DisplayName("Should continue with other consumers when one fails") + void shouldContinueWithOtherConsumersWhenOneFails() throws Exception { + // Given + UUID correlationId = UUID.randomUUID(); + String jsonMessage = "{\"correlationId\":\"" + correlationId + "\",\"eventType\":\"QUESTIONNAIRE_INIT\"}"; + + EventDto eventDto = createEventDto(correlationId, EventDto.EventTypeEnum.QUESTIONNAIRE_INIT); + ObjectNode objectNode = new ObjectMapper().createObjectNode(); + + when(message.getBody(String.class)).thenReturn(jsonMessage); + when(multimodeProperties.getTopic()).thenReturn("test-topic"); + when(objectMapper.readValue(jsonMessage, EventDto.class)).thenReturn(eventDto); + when(objectMapper.valueToTree(eventDto)).thenReturn(objectNode); + when(inboxRepository.existsById(correlationId)).thenReturn(false); + when(inboxRepository.save(any(InboxDB.class))).thenAnswer(invocation -> invocation.getArgument(0)); + + doThrow(new RuntimeException("Consumer 1 failed")).when(eventConsumer1).consume(any()); + + // When + subscriber.onMessage(message); + + // Then + verify(eventConsumer1).consume(eventDto); + verify(eventConsumer2).consume(eventDto); + verify(inboxRepository).save(any(InboxDB.class)); + } + + @Test + @DisplayName("Should throw exception when message parsing fails") + void shouldThrowExceptionWhenMessageParsingFails() throws Exception { + // Given + String invalidJson = "invalid json"; + + when(message.getBody(String.class)).thenReturn(invalidJson); + when(multimodeProperties.getTopic()).thenReturn("test-topic"); + when(objectMapper.readValue(invalidJson, EventDto.class)).thenThrow(new RuntimeException("Parse error")); + + // When & Then + assertThrows(RuntimeException.class, () -> subscriber.onMessage(message)); + + verify(inboxRepository, never()).save(any()); + verify(eventConsumer1, never()).consume(any()); + } + + @Test + @DisplayName("Should handle empty consumers list") + void shouldHandleEmptyConsumersList() throws Exception { + // Given + MultimodeSubscriber subscriberWithNoConsumers = new MultimodeSubscriber( + objectMapper, multimodeProperties, Collections.emptyList(), inboxRepository); + + UUID correlationId = UUID.randomUUID(); + String jsonMessage = "{\"correlationId\":\"" + correlationId + "\",\"eventType\":\"QUESTIONNAIRE_INIT\"}"; + + EventDto eventDto = createEventDto(correlationId, EventDto.EventTypeEnum.QUESTIONNAIRE_INIT); + ObjectNode objectNode = new ObjectMapper().createObjectNode(); + + when(message.getBody(String.class)).thenReturn(jsonMessage); + when(multimodeProperties.getTopic()).thenReturn("test-topic"); + when(objectMapper.readValue(jsonMessage, EventDto.class)).thenReturn(eventDto); + when(objectMapper.valueToTree(eventDto)).thenReturn(objectNode); + when(inboxRepository.existsById(correlationId)).thenReturn(false); + when(inboxRepository.save(any(InboxDB.class))).thenAnswer(invocation -> invocation.getArgument(0)); + + // When + subscriberWithNoConsumers.onMessage(message); + + // Then + verify(inboxRepository).save(any(InboxDB.class)); + } + + @Test + @DisplayName("Should process different event types") + void shouldProcessDifferentEventTypes() throws Exception { + // Given + UUID correlationId = UUID.randomUUID(); + EventDto eventDto = createEventDto(correlationId, EventDto.EventTypeEnum.MULTIMODE_MOVED); + String jsonMessage = "{\"correlationId\":\"" + correlationId + "\",\"eventType\":\"MULTIMODE_MOVED\"}"; + ObjectNode objectNode = new ObjectMapper().createObjectNode(); + + when(message.getBody(String.class)).thenReturn(jsonMessage); + when(multimodeProperties.getTopic()).thenReturn("test-topic"); + when(objectMapper.readValue(jsonMessage, EventDto.class)).thenReturn(eventDto); + when(objectMapper.valueToTree(eventDto)).thenReturn(objectNode); + when(inboxRepository.existsById(correlationId)).thenReturn(false); + when(inboxRepository.save(any(InboxDB.class))).thenAnswer(invocation -> invocation.getArgument(0)); + + // When + subscriber.onMessage(message); + + // Then + verify(inboxRepository).save(any(InboxDB.class)); + verify(eventConsumer1).consume(eventDto); + verify(eventConsumer2).consume(eventDto); + } + + private EventDto createEventDto(UUID correlationId, EventDto.EventTypeEnum eventType) { + EventPayloadDto payload = new EventPayloadDto(); + payload.setInterrogationId("SU-001"); + + EventDto eventDto = new EventDto(); + eventDto.setCorrelationId(correlationId); + eventDto.setEventType(eventType); + eventDto.setPayload(payload); + + return eventDto; + } +} diff --git a/listener-jms/src/test/java/fr/insee/pearljam/jms/service/consumers/MultiModeMovedConsumerTest.java b/listener-jms/src/test/java/fr/insee/pearljam/jms/service/consumers/MultiModeMovedConsumerTest.java new file mode 100644 index 00000000..b6bbe800 --- /dev/null +++ b/listener-jms/src/test/java/fr/insee/pearljam/jms/service/consumers/MultiModeMovedConsumerTest.java @@ -0,0 +1,82 @@ +package fr.insee.pearljam.jms.service.consumers; + +import fr.insee.modelefiliere.EventDto; +import fr.insee.modelefiliere.EventPayloadDto; +import fr.insee.pearljam.domain.surveyunit.port.userside.MovedService; +import fr.insee.pearljam.domain.surveyunit.port.userside.StatusService; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; + +import static org.mockito.Mockito.*; + +@ExtendWith(MockitoExtension.class) +class MultiModeMovedConsumerTest { + + @Mock + private MovedService movedService; + + @Mock + private StatusService statusService; + + private MultiModeMovedConsumer consumer; + + @BeforeEach + void setUp() { + consumer = new MultiModeMovedConsumer(movedService, statusService); + } + + @Test + @DisplayName("Should call movedService when event type is MULTIMODE_MOVED") + void shouldCallMovedServiceWhenEventTypeIsMultimodeMoved() { + // Given + String interrogationId = "SU-001"; + EventDto eventDto = createEventDto(EventDto.EventTypeEnum.MULTIMODE_MOVED, interrogationId); + + // When + consumer.consume(eventDto); + + // Then + verify(movedService, times(1)).updateMovedSurveyUnit(interrogationId); + } + + @Test + @DisplayName("Should not call movedService when event type is not MULTIMODE_MOVED") + void shouldNotCallMovedServiceWhenEventTypeIsNotMultimodeMoved() { + // Given + EventDto eventDto = createEventDto(EventDto.EventTypeEnum.QUESTIONNAIRE_INIT, "SU-001"); + + // When + consumer.consume(eventDto); + + // Then + verify(movedService, never()).updateMovedSurveyUnit(anyString()); + } + + @Test + @DisplayName("Should not call movedService when event type is QUESTIONNAIRE_COMPLETED") + void shouldNotCallMovedServiceWhenEventTypeIsQuestionnaireCompleted() { + // Given + EventDto eventDto = createEventDto(EventDto.EventTypeEnum.QUESTIONNAIRE_COMPLETED, "SU-001"); + + // When + consumer.consume(eventDto); + + // Then + verify(movedService, never()).updateMovedSurveyUnit(anyString()); + } + + private EventDto createEventDto(EventDto.EventTypeEnum eventType, String interrogationId) { + EventPayloadDto payload = new EventPayloadDto(); + payload.setInterrogationId(interrogationId); + + EventDto eventDto = new EventDto(); + eventDto.setEventType(eventType); + eventDto.setPayload(payload); + + return eventDto; + } +} diff --git a/listener-jms/src/test/java/fr/insee/pearljam/jms/service/consumers/QuestionnaireCompletedConsumerTest.java b/listener-jms/src/test/java/fr/insee/pearljam/jms/service/consumers/QuestionnaireCompletedConsumerTest.java new file mode 100644 index 00000000..6185515b --- /dev/null +++ b/listener-jms/src/test/java/fr/insee/pearljam/jms/service/consumers/QuestionnaireCompletedConsumerTest.java @@ -0,0 +1,78 @@ +package fr.insee.pearljam.jms.service.consumers; + +import fr.insee.modelefiliere.EventDto; +import fr.insee.modelefiliere.EventPayloadDto; +import fr.insee.pearljam.domain.surveyunit.port.userside.StatusService; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; + +import static org.mockito.Mockito.*; + +@ExtendWith(MockitoExtension.class) +class QuestionnaireCompletedConsumerTest { + + @Mock + private StatusService statusService; + + private QuestionnaireCompletedConsumer consumer; + + @BeforeEach + void setUp() { + consumer = new QuestionnaireCompletedConsumer(statusService); + } + + @Test + @DisplayName("Should call statusService when event type is QUESTIONNAIRE_COMPLETED") + void shouldCallStatusServiceWhenEventTypeIsQuestionnaireCompleted() { + // Given + String interrogationId = "SU-001"; + EventDto eventDto = createEventDto(EventDto.EventTypeEnum.QUESTIONNAIRE_COMPLETED, interrogationId); + + // When + consumer.consume(eventDto); + + // Then + verify(statusService, times(1)).updateStatus(interrogationId, "QUESTIONNAIRE_COMPLETED"); + } + + @Test + @DisplayName("Should not call statusService when event type is not QUESTIONNAIRE_COMPLETED") + void shouldNotCallStatusServiceWhenEventTypeIsNotQuestionnaireCompleted() { + // Given + EventDto eventDto = createEventDto(EventDto.EventTypeEnum.QUESTIONNAIRE_INIT, "SU-001"); + + // When + consumer.consume(eventDto); + + // Then + verify(statusService, never()).updateStatus(anyString(), anyString()); + } + + @Test + @DisplayName("Should not call statusService when event type is MULTIMODE_MOVED") + void shouldNotCallStatusServiceWhenEventTypeIsMultimodeMoved() { + // Given + EventDto eventDto = createEventDto(EventDto.EventTypeEnum.MULTIMODE_MOVED, "SU-001"); + + // When + consumer.consume(eventDto); + + // Then + verify(statusService, never()).updateStatus(anyString(), anyString()); + } + + private EventDto createEventDto(EventDto.EventTypeEnum eventType, String interrogationId) { + EventPayloadDto payload = new EventPayloadDto(); + payload.setInterrogationId(interrogationId); + + EventDto eventDto = new EventDto(); + eventDto.setEventType(eventType); + eventDto.setPayload(payload); + + return eventDto; + } +} diff --git a/listener-jms/src/test/java/fr/insee/pearljam/jms/service/consumers/QuestionnaireInitConsumerTest.java b/listener-jms/src/test/java/fr/insee/pearljam/jms/service/consumers/QuestionnaireInitConsumerTest.java new file mode 100644 index 00000000..db642142 --- /dev/null +++ b/listener-jms/src/test/java/fr/insee/pearljam/jms/service/consumers/QuestionnaireInitConsumerTest.java @@ -0,0 +1,78 @@ +package fr.insee.pearljam.jms.service.consumers; + +import fr.insee.modelefiliere.EventDto; +import fr.insee.modelefiliere.EventPayloadDto; +import fr.insee.pearljam.domain.surveyunit.port.userside.StatusService; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; + +import static org.mockito.Mockito.*; + +@ExtendWith(MockitoExtension.class) +class QuestionnaireInitConsumerTest { + + @Mock + private StatusService statusService; + + private QuestionnaireInitConsumer consumer; + + @BeforeEach + void setUp() { + consumer = new QuestionnaireInitConsumer(statusService); + } + + @Test + @DisplayName("Should call statusService when event type is QUESTIONNAIRE_INIT") + void shouldCallStatusServiceWhenEventTypeIsQuestionnaireInit() { + // Given + String interrogationId = "SU-001"; + EventDto eventDto = createEventDto(EventDto.EventTypeEnum.QUESTIONNAIRE_INIT, interrogationId); + + // When + consumer.consume(eventDto); + + // Then + verify(statusService, times(1)).updateStatus(interrogationId, "QUESTIONNAIRE_INIT"); + } + + @Test + @DisplayName("Should not call statusService when event type is not QUESTIONNAIRE_INIT") + void shouldNotCallStatusServiceWhenEventTypeIsNotQuestionnaireInit() { + // Given + EventDto eventDto = createEventDto(EventDto.EventTypeEnum.QUESTIONNAIRE_COMPLETED, "SU-001"); + + // When + consumer.consume(eventDto); + + // Then + verify(statusService, never()).updateStatus(anyString(), anyString()); + } + + @Test + @DisplayName("Should not call statusService when event type is MULTIMODE_MOVED") + void shouldNotCallStatusServiceWhenEventTypeIsMultimodeMoved() { + // Given + EventDto eventDto = createEventDto(EventDto.EventTypeEnum.MULTIMODE_MOVED, "SU-001"); + + // When + consumer.consume(eventDto); + + // Then + verify(statusService, never()).updateStatus(anyString(), anyString()); + } + + private EventDto createEventDto(EventDto.EventTypeEnum eventType, String interrogationId) { + EventPayloadDto payload = new EventPayloadDto(); + payload.setInterrogationId(interrogationId); + + EventDto eventDto = new EventDto(); + eventDto.setEventType(eventType); + eventDto.setPayload(payload); + + return eventDto; + } +} diff --git a/listener-jms/src/test/java/fr/insee/pearljam/jms/service/consumers/QuestionnaireLeafStatsUpdatedConsumerTest.java b/listener-jms/src/test/java/fr/insee/pearljam/jms/service/consumers/QuestionnaireLeafStatsUpdatedConsumerTest.java new file mode 100644 index 00000000..05e0cd18 --- /dev/null +++ b/listener-jms/src/test/java/fr/insee/pearljam/jms/service/consumers/QuestionnaireLeafStatsUpdatedConsumerTest.java @@ -0,0 +1,78 @@ +package fr.insee.pearljam.jms.service.consumers; + +import fr.insee.modelefiliere.EventDto; +import fr.insee.modelefiliere.EventPayloadDto; +import fr.insee.pearljam.domain.surveyunit.port.userside.StatusService; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; + +import static org.mockito.Mockito.*; + +@ExtendWith(MockitoExtension.class) +class QuestionnaireLeafStatsUpdatedConsumerTest { + + @Mock + private StatusService statusService; + + private QuestionnaireLeafStatsUpdatedConsumer consumer; + + @BeforeEach + void setUp() { + consumer = new QuestionnaireLeafStatsUpdatedConsumer(statusService); + } + + @Test + @DisplayName("Should call statusService when event type is QUESTIONNAIRE_LEAF_STATES_UPDATED") + void shouldCallStatusServiceWhenEventTypeIsQuestionnaireLeafStatesUpdated() { + // Given + String interrogationId = "SU-001"; + EventDto eventDto = createEventDto(EventDto.EventTypeEnum.QUESTIONNAIRE_LEAF_STATES_UPDATED, interrogationId); + + // When + consumer.consume(eventDto); + + // Then + verify(statusService, times(1)).updateStatus(interrogationId, "QUESTIONNAIRE_LEAF_STATES_UPDATED"); + } + + @Test + @DisplayName("Should not call statusService when event type is not QUESTIONNAIRE_LEAF_STATES_UPDATED") + void shouldNotCallStatusServiceWhenEventTypeIsNotQuestionnaireLeafStatesUpdated() { + // Given + EventDto eventDto = createEventDto(EventDto.EventTypeEnum.QUESTIONNAIRE_INIT, "SU-001"); + + // When + consumer.consume(eventDto); + + // Then + verify(statusService, never()).updateStatus(anyString(), anyString()); + } + + @Test + @DisplayName("Should not call statusService when event type is QUESTIONNAIRE_UPDATED") + void shouldNotCallStatusServiceWhenEventTypeIsQuestionnaireUpdated() { + // Given + EventDto eventDto = createEventDto(EventDto.EventTypeEnum.QUESTIONNAIRE_UPDATED, "SU-001"); + + // When + consumer.consume(eventDto); + + // Then + verify(statusService, never()).updateStatus(anyString(), anyString()); + } + + private EventDto createEventDto(EventDto.EventTypeEnum eventType, String interrogationId) { + EventPayloadDto payload = new EventPayloadDto(); + payload.setInterrogationId(interrogationId); + + EventDto eventDto = new EventDto(); + eventDto.setEventType(eventType); + eventDto.setPayload(payload); + + return eventDto; + } +} diff --git a/listener-jms/src/test/java/fr/insee/pearljam/jms/service/consumers/QuestionnaireSwitchCAPIConsumerTest.java b/listener-jms/src/test/java/fr/insee/pearljam/jms/service/consumers/QuestionnaireSwitchCAPIConsumerTest.java new file mode 100644 index 00000000..13cabaf2 --- /dev/null +++ b/listener-jms/src/test/java/fr/insee/pearljam/jms/service/consumers/QuestionnaireSwitchCAPIConsumerTest.java @@ -0,0 +1,91 @@ +package fr.insee.pearljam.jms.service.consumers; + +import fr.insee.modelefiliere.EventDto; +import fr.insee.modelefiliere.EventPayloadDto; +import fr.insee.pearljam.domain.surveyunit.port.userside.StatusService; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; + +import static org.mockito.Mockito.*; + +@ExtendWith(MockitoExtension.class) +class QuestionnaireSwitchCAPIConsumerTest { + + @Mock + private StatusService statusService; + + private QuestionnaireSwitchCAPIConsumer consumer; + + @BeforeEach + void setUp() { + consumer = new QuestionnaireSwitchCAPIConsumer(statusService); + } + + @Test + @DisplayName("Should call statusService when event type is QUESTIONNAIRE_SWITCH_CAPI") + void shouldCallStatusServiceWhenEventTypeIsQuestionnaireSwitchCAPI() { + // Given + String interrogationId = "SU-001"; + EventDto eventDto = createEventDto(EventDto.EventTypeEnum.QUESTIONNAIRE_SWITCH_CAPI, interrogationId); + + // When + consumer.consume(eventDto); + + // Then + verify(statusService, times(1)).updateStatus(interrogationId, "QUESTIONNAIRE_SWITCH_CAPI"); + } + + @Test + @DisplayName("Should not call statusService when event type is not QUESTIONNAIRE_SWITCH_CAPI") + void shouldNotCallStatusServiceWhenEventTypeIsNotQuestionnaireSwitchCAPI() { + // Given + EventDto eventDto = createEventDto(EventDto.EventTypeEnum.QUESTIONNAIRE_INIT, "SU-001"); + + // When + consumer.consume(eventDto); + + // Then + verify(statusService, never()).updateStatus(anyString(), anyString()); + } + + @Test + @DisplayName("Should not call statusService when event type is QUESTIONNAIRE_COMPLETED") + void shouldNotCallStatusServiceWhenEventTypeIsQuestionnaireCompleted() { + // Given + EventDto eventDto = createEventDto(EventDto.EventTypeEnum.QUESTIONNAIRE_COMPLETED, "SU-001"); + + // When + consumer.consume(eventDto); + + // Then + verify(statusService, never()).updateStatus(anyString(), anyString()); + } + + @Test + @DisplayName("Should not call statusService when event type is QUESTIONNAIRE_VALIDATED") + void shouldNotCallStatusServiceWhenEventTypeIsQuestionnaireValidated() { + // Given + EventDto eventDto = createEventDto(EventDto.EventTypeEnum.QUESTIONNAIRE_VALIDATED, "SU-001"); + + // When + consumer.consume(eventDto); + + // Then + verify(statusService, never()).updateStatus(anyString(), anyString()); + } + + private EventDto createEventDto(EventDto.EventTypeEnum eventType, String interrogationId) { + EventPayloadDto payload = new EventPayloadDto(); + payload.setInterrogationId(interrogationId); + + EventDto eventDto = new EventDto(); + eventDto.setEventType(eventType); + eventDto.setPayload(payload); + + return eventDto; + } +} \ No newline at end of file diff --git a/listener-jms/src/test/java/fr/insee/pearljam/jms/service/consumers/QuestionnaireUpdatedConsumerTest.java b/listener-jms/src/test/java/fr/insee/pearljam/jms/service/consumers/QuestionnaireUpdatedConsumerTest.java new file mode 100644 index 00000000..fcc7acbd --- /dev/null +++ b/listener-jms/src/test/java/fr/insee/pearljam/jms/service/consumers/QuestionnaireUpdatedConsumerTest.java @@ -0,0 +1,78 @@ +package fr.insee.pearljam.jms.service.consumers; + +import fr.insee.modelefiliere.EventDto; +import fr.insee.modelefiliere.EventPayloadDto; +import fr.insee.pearljam.domain.surveyunit.port.userside.StatusService; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; + +import static org.mockito.Mockito.*; + +@ExtendWith(MockitoExtension.class) +class QuestionnaireUpdatedConsumerTest { + + @Mock + private StatusService statusService; + + private QuestionnaireUpdatedConsumer consumer; + + @BeforeEach + void setUp() { + consumer = new QuestionnaireUpdatedConsumer(statusService); + } + + @Test + @DisplayName("Should call statusService when event type is QUESTIONNAIRE_UPDATED") + void shouldCallStatusServiceWhenEventTypeIsQuestionnaireUpdated() { + // Given + String interrogationId = "SU-001"; + EventDto eventDto = createEventDto(EventDto.EventTypeEnum.QUESTIONNAIRE_UPDATED, interrogationId); + + // When + consumer.consume(eventDto); + + // Then + verify(statusService, times(1)).updateStatus(interrogationId, "QUESTIONNAIRE_UPDATED"); + } + + @Test + @DisplayName("Should not call statusService when event type is not QUESTIONNAIRE_UPDATED") + void shouldNotCallStatusServiceWhenEventTypeIsNotQuestionnaireUpdated() { + // Given + EventDto eventDto = createEventDto(EventDto.EventTypeEnum.QUESTIONNAIRE_INIT, "SU-001"); + + // When + consumer.consume(eventDto); + + // Then + verify(statusService, never()).updateStatus(anyString(), anyString()); + } + + @Test + @DisplayName("Should not call statusService when event type is QUESTIONNAIRE_VALIDATED") + void shouldNotCallStatusServiceWhenEventTypeIsQuestionnaireValidated() { + // Given + EventDto eventDto = createEventDto(EventDto.EventTypeEnum.QUESTIONNAIRE_VALIDATED, "SU-001"); + + // When + consumer.consume(eventDto); + + // Then + verify(statusService, never()).updateStatus(anyString(), anyString()); + } + + private EventDto createEventDto(EventDto.EventTypeEnum eventType, String interrogationId) { + EventPayloadDto payload = new EventPayloadDto(); + payload.setInterrogationId(interrogationId); + + EventDto eventDto = new EventDto(); + eventDto.setEventType(eventType); + eventDto.setPayload(payload); + + return eventDto; + } +} diff --git a/listener-jms/src/test/java/fr/insee/pearljam/jms/service/consumers/QuestionnaireValidatedConsumerTest.java b/listener-jms/src/test/java/fr/insee/pearljam/jms/service/consumers/QuestionnaireValidatedConsumerTest.java new file mode 100644 index 00000000..50273714 --- /dev/null +++ b/listener-jms/src/test/java/fr/insee/pearljam/jms/service/consumers/QuestionnaireValidatedConsumerTest.java @@ -0,0 +1,78 @@ +package fr.insee.pearljam.jms.service.consumers; + +import fr.insee.modelefiliere.EventDto; +import fr.insee.modelefiliere.EventPayloadDto; +import fr.insee.pearljam.domain.surveyunit.port.userside.StatusService; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; + +import static org.mockito.Mockito.*; + +@ExtendWith(MockitoExtension.class) +class QuestionnaireValidatedConsumerTest { + + @Mock + private StatusService statusService; + + private QuestionnaireValidatedConsumer consumer; + + @BeforeEach + void setUp() { + consumer = new QuestionnaireValidatedConsumer(statusService); + } + + @Test + @DisplayName("Should call statusService when event type is QUESTIONNAIRE_VALIDATED") + void shouldCallStatusServiceWhenEventTypeIsQuestionnaireValidated() { + // Given + String interrogationId = "SU-001"; + EventDto eventDto = createEventDto(EventDto.EventTypeEnum.QUESTIONNAIRE_VALIDATED, interrogationId); + + // When + consumer.consume(eventDto); + + // Then + verify(statusService, times(1)).updateStatus(interrogationId, "QUESTIONNAIRE_VALIDATED"); + } + + @Test + @DisplayName("Should not call statusService when event type is not QUESTIONNAIRE_VALIDATED") + void shouldNotCallStatusServiceWhenEventTypeIsNotQuestionnaireValidated() { + // Given + EventDto eventDto = createEventDto(EventDto.EventTypeEnum.QUESTIONNAIRE_INIT, "SU-001"); + + // When + consumer.consume(eventDto); + + // Then + verify(statusService, never()).updateStatus(anyString(), anyString()); + } + + @Test + @DisplayName("Should not call statusService when event type is QUESTIONNAIRE_COMPLETED") + void shouldNotCallStatusServiceWhenEventTypeIsQuestionnaireCompleted() { + // Given + EventDto eventDto = createEventDto(EventDto.EventTypeEnum.QUESTIONNAIRE_COMPLETED, "SU-001"); + + // When + consumer.consume(eventDto); + + // Then + verify(statusService, never()).updateStatus(anyString(), anyString()); + } + + private EventDto createEventDto(EventDto.EventTypeEnum eventType, String interrogationId) { + EventPayloadDto payload = new EventPayloadDto(); + payload.setInterrogationId(interrogationId); + + EventDto eventDto = new EventDto(); + eventDto.setEventType(eventType); + eventDto.setPayload(payload); + + return eventDto; + } +} diff --git a/listener-jms/src/test/resources/application-test.yml b/listener-jms/src/test/resources/application-test.yml new file mode 100644 index 00000000..61f9ce11 --- /dev/null +++ b/listener-jms/src/test/resources/application-test.yml @@ -0,0 +1,88 @@ +broker: + # artemis, pulsar + name: artemis + queue: + interrogation: + request: interrogation_request + response: interrogation_response + # Pulsar endpoints (standalone defaults) + pulsar: + webServiceUrl: http://localhost:8080 + brokerServiceUrl: pulsar://localhost:6650 + + +# JMS destination (maps to a Pulsar topic) +app: + queue: persistent://public/default/demo-queue + +spring: + application: + name: queen-listener-jms + docker: + compose: + enabled: true + file: ../api/compose.yml + lifecycle-management: start-and-stop + start: + command: up + stop: + command: down + timeout: 1m + arguments: -v + skip: + in-tests: false + datasource: + url: jdbc:postgresql://localhost:5433/pearl + username: mypostgresuser + password: mypostgrespassword + driver-class-name: org.postgresql.Driver + hikari: + minimum-idle: 2 + maximum-pool-size: 2 + jpa: + open-in-view: false + hibernate: + ddl-auto: none + naming: + physical-strategy: org.hibernate.boot.model.naming.CamelCaseToUnderscoresNamingStrategy + implicit-strategy: org.springframework.boot.orm.jpa.hibernate.SpringImplicitNamingStrategy + properties: + id: + new_generator_mappings: true + cache: + use_second_level_cache: false + use_query_cache: false + generate_statistics: false + hibernate: + dialect: org.hibernate.dialect.PostgreSQLDialect + liquibase: + enabled: true + change-log: classpath:db/integration-test.xml + artemis: + mode: native + broker-url: (tcp://localhost:61616)?maxReconnectAttempts=111&maxReconnectDelay=2000&jms.watchTopicAdvisories=false + user: insee + password: lille + pool: + enabled: true + max-connections: 50 + jms: + listener: + command-queue: queue-ue + +logging: + level: + fr: + insee: + queen: + jms: INFO + +feature: + multimode: + publisher: + enabled: true + scheduler: + interval: 5000 + subscriber: + enabled: false + topic: multimode_events_test diff --git a/modelefiliere-2.2.0.jar b/modelefiliere-2.2.0.jar new file mode 100644 index 00000000..b9aede93 Binary files /dev/null and b/modelefiliere-2.2.0.jar differ diff --git a/pom.xml b/pom.xml index d372e90d..654e5fd7 100644 --- a/pom.xml +++ b/pom.xml @@ -7,292 +7,42 @@ fr.insee.pearljam pearljam-back-office - 5.13.5 + ${revision}${changelist} + pom Pearl-Jam-Back-Office Back-office services for PearlJam - - org.springframework.boot - spring-boot-starter-parent - 3.5.5 - - - + 5.13.5 + 21 - UTF-8 - UTF-8 - 42.7.7 inseefr https://sonarcloud.io - 7.21.1 - - - - org.springframework.boot - spring-boot-starter-web - - - - org.springframework.boot - spring-boot-starter-websocket - - - - org.springframework.boot - spring-boot-starter-validation - - - - - org.springdoc - springdoc-openapi-starter-webmvc-ui - 2.8.9 - - - - - org.springframework.boot - spring-boot-starter-security - - - - org.springframework.boot - spring-boot-starter-oauth2-resource-server - - - - - org.springframework.boot - spring-boot-starter-data-jpa - - - - org.springframework.boot - spring-boot-devtools - true - - - - org.liquibase - liquibase-core - - - - org.postgresql - postgresql - ${postgresql.version} - - - - com.h2database - h2 - test - - - - - org.springframework.boot - spring-boot-starter-test - test - - - - org.springframework.boot - spring-boot-docker-compose - - - - org.springframework.security - spring-security-test - test - - - - com.tngtech.archunit - archunit - 1.4.1 - - - - - commons-validator - commons-validator - 1.10.0 - - - - org.projectlombok - lombok - true - - - - - org.junit.platform - junit-platform-suite - test - - - io.cucumber - cucumber-java - ${cucumber.version} - test - - - io.cucumber - cucumber-spring - ${cucumber.version} - - - io.cucumber - cucumber-junit-platform-engine - ${cucumber.version} - - - - - - org.codehaus.janino - janino - 3.1.12 - - - - - - coverage - - - - org.jacoco - jacoco-maven-plugin - 0.8.13 - - - prepare-agent - - prepare-agent - - - - report - - report - - - - XML - HTML - - - - - - - - - - - - - org.apache.maven.plugins - maven-javadoc-plugin - - - org.springframework.boot - spring-boot-maven-plugin - - - build-info - - build-info - - - - - true - true - -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 - - insee - dev - - - - - org.apache.maven.plugins - maven-compiler-plugin - 3.14.0 - - ${java.version} - ${java.version} - - - - org.liquibase - liquibase-maven-plugin - ${liquibase.version} - - - org.javassist - javassist - 3.30.2-GA - compile - - - org.liquibase.ext - liquibase-hibernate6 - ${liquibase.version} - - - jakarta.xml.bind - jakarta.xml.bind-api - 4.0.2 - - - org.springframework.boot - spring-boot-starter-validation - - - - - src/main/resources/db/master.xml - src/main/resources/db/changelog/new_changelog.xml - org.postgresql.Driver - jdbc:postgresql://localhost:5432/pearljam_api - public - test,dev,prod - - - - hibernate:spring:fr.insee.pearljam.api.domain?hibernate.physical_naming_strategy=org.hibernate.boot.model.naming.CamelCaseToUnderscoresNamingStrategy&hibernate.implicit_naming_strategy=org.springframework.boot.orm.jpa.hibernate.SpringImplicitNamingStrategy - public - true - debug - - - - org.apache.maven.plugins - maven-surefire-plugin - 3.5.3 - - - **/TestAuthKeyCloak - **/TestNoAuth - **/*Test - **/*TestRunner - **/*IT - - + org.sonarsource.scanner.maven + sonar-maven-plugin + 4.0.0.4121 + + + domain + api + listener-jms + + + + org.springframework.boot + spring-boot-starter-parent + 3.5.5 + + +