diff --git a/vorgang-manager-base/pom.xml b/vorgang-manager-base/pom.xml index 9dd5592e13fd174477f95548de4e47404e2e3728..bcb070c8dd562a3a76147eb7ac3b087b8804d339 100644 --- a/vorgang-manager-base/pom.xml +++ b/vorgang-manager-base/pom.xml @@ -60,6 +60,11 @@ <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-validation</artifactId> </dependency> + + <dependency> + <groupId>io.micrometer</groupId> + <artifactId>micrometer-core</artifactId> + </dependency> <!-- TEST --> <dependency> diff --git a/vorgang-manager-base/src/main/java/de/ozgcloud/vorgang/VorgangManagerServerApplication.java b/vorgang-manager-base/src/main/java/de/ozgcloud/vorgang/VorgangManagerServerApplication.java index 484b85638b5b232de5232dc3a1f903033f52f434..8f50441266548f322ec607eb1e3950dc15d1d70f 100644 --- a/vorgang-manager-base/src/main/java/de/ozgcloud/vorgang/VorgangManagerServerApplication.java +++ b/vorgang-manager-base/src/main/java/de/ozgcloud/vorgang/VorgangManagerServerApplication.java @@ -42,6 +42,9 @@ import org.springframework.security.authentication.AuthenticationTrustResolver; import org.springframework.security.authentication.AuthenticationTrustResolverImpl; import org.springframework.security.concurrent.DelegatingSecurityContextRunnable; +import io.micrometer.core.aop.TimedAspect; +import io.micrometer.core.instrument.MeterRegistry; + @SpringBootApplication(scanBasePackages = { "de.ozgcloud" }) @EnableAsync(proxyTargetClass = true) @EnableScheduling @@ -83,4 +86,9 @@ public class VorgangManagerServerApplication { return eventMulticaster; } + @Bean + TimedAspect timedAspect(MeterRegistry registry) { + return new TimedAspect(registry); + } + } \ No newline at end of file diff --git a/vorgang-manager-server/pom.xml b/vorgang-manager-server/pom.xml index cd4e88fc4e3e19e9bae73bd117d0b2f769570517..18cc8c79460a952d5f868b9d6dc742bdbbced678 100644 --- a/vorgang-manager-server/pom.xml +++ b/vorgang-manager-server/pom.xml @@ -54,7 +54,7 @@ <common-lib.version>4.13.0</common-lib.version> <user-manager-interface.version>2.12.0</user-manager-interface.version> <processor-manager.version>0.5.0</processor-manager.version> - <nachrichten-manager.version>2.20.0</nachrichten-manager.version> + <nachrichten-manager.version>2.21.0-SNAPSHOT</nachrichten-manager.version> <api-lib.version>0.16.0</api-lib.version> <notification-manager.version>2.15.0</notification-manager.version> <collaboration-manager.version>0.7.0</collaboration-manager.version> diff --git a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/common/migration/M010_CreateIndexesInVorgang.java b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/common/migration/M010_CreateIndexesInVorgang.java index 172953ca2820282a18a978e7ac012e7379cd55eb..45cf7dcd9405df4edc4f86a5634ed4629cae11a3 100644 --- a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/common/migration/M010_CreateIndexesInVorgang.java +++ b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/common/migration/M010_CreateIndexesInVorgang.java @@ -32,7 +32,7 @@ import io.mongock.api.annotations.ChangeUnit; import io.mongock.api.annotations.Execution; import io.mongock.api.annotations.RollbackExecution; -@ChangeUnit(id = "2024-06-12 17:00:00 OZG-5661", order = "M010", author = "ebardin") +@ChangeUnit(id = "2024-06-12 17:00:00 OZG-5661", order = "M010", author = "ebardin", runAlways = true) public class M010_CreateIndexesInVorgang { // NOSONAR static final String COLLECTION_NAME = "vorgang"; diff --git a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/VorgangHeaderRepositoryImpl.java b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/VorgangHeaderRepositoryImpl.java index d1d32bd8f01dfa4c0d9bd351e9b062a1719f3a59..9cb442e298ed96e8e2b7fab19da680a5887373dd 100644 --- a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/VorgangHeaderRepositoryImpl.java +++ b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/VorgangHeaderRepositoryImpl.java @@ -49,6 +49,7 @@ import org.springframework.data.mongodb.core.query.Query; import de.ozgcloud.vorgang.common.db.CriteriaUtil; import de.ozgcloud.vorgang.vorgang.FindVorgangRequest.OrderCriteria; +import io.micrometer.core.annotation.Timed; import lombok.RequiredArgsConstructor; import lombok.extern.log4j.Log4j2; @@ -60,6 +61,7 @@ class VorgangHeaderRepositoryImpl implements CustomVorgangHeaderRepository { @Autowired private QueryCriteriaBuilder queryCriteriaBuilder; + @Timed("vorgang_repo_findAll") @Override public Page<VorgangHeader> findAll(FindVorgangRequest request) { return checkAndExecuteRequest(request, buildFilterQuery(request.getFilterBy())); @@ -179,17 +181,17 @@ class VorgangHeaderRepositoryImpl implements CustomVorgangHeaderRepository { Aggregation build(OrderCriteria orderBy) { switch (orderBy) { - case EA_PRIORITY: - return buildSortedByEAPriority(); - case PRIORITY: - return buildSortedByPriority(); - case CREATED_AT_DESC: - return buildSortedByCreatedAtDesc(); - case NEXT_WIEDERVORLAGE_FRIST: - return buildSortedNextWiedervorlageFrist(); - default: - LOG.warn("Unkown order by expression '{}'. Using default order.", orderBy); - return buildSortedByPriority(); + case EA_PRIORITY: + return buildSortedByEAPriority(); + case PRIORITY: + return buildSortedByPriority(); + case CREATED_AT_DESC: + return buildSortedByCreatedAtDesc(); + case NEXT_WIEDERVORLAGE_FRIST: + return buildSortedNextWiedervorlageFrist(); + default: + LOG.warn("Unkown order by expression '{}'. Using default order.", orderBy); + return buildSortedByPriority(); } } diff --git a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/VorgangHeaderService.java b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/VorgangHeaderService.java index b2d141da322034a3150ae24e67fc53d7daa7cb4d..67364ff253ad7b65537bd73c1b966cdfa389dce0 100644 --- a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/VorgangHeaderService.java +++ b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/VorgangHeaderService.java @@ -34,6 +34,7 @@ import org.springframework.stereotype.Service; import de.ozgcloud.common.errorhandling.TechnicalException; import de.ozgcloud.vorgang.common.search.SearchService; +import io.micrometer.core.annotation.Timed; @Service class VorgangHeaderService { @@ -47,6 +48,7 @@ class VorgangHeaderService { @Autowired(required = false) private SearchService searchService; + @Timed("findAllVorgangs") public Page<VorgangHeader> findAll(FindVorgangRequest request) { if (nonNull(searchService) && nonNull(request.getSearchBy())) { return removeUnpermitted(searchService.find(request)); diff --git a/vorgang-manager-server/src/main/resources/application.yml b/vorgang-manager-server/src/main/resources/application.yml index db37a3d59597564120aae7e596c1202b417bc44e..015e7be74d239052d63792664dfb620b65d81621 100644 --- a/vorgang-manager-server/src/main/resources/application.yml +++ b/vorgang-manager-server/src/main/resources/application.yml @@ -69,8 +69,6 @@ management: - readinessState - mongo probes.enabled: true - prometheus: - enabled: true endpoints: web: exposure: diff --git a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/VorgangHeaderRepositoryImplITCase.java b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/VorgangHeaderRepositoryImplITCase.java index 98b94887dec2380bcaf3ad16aed5e79a002ffad1..e425348c40d2218039f2bfc14426f22262ef6422 100644 --- a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/VorgangHeaderRepositoryImplITCase.java +++ b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/VorgangHeaderRepositoryImplITCase.java @@ -45,6 +45,7 @@ import de.ozgcloud.vorgang.clientattribute.ClientAttributeTestFactory; import de.ozgcloud.vorgang.clientattribute.ClientAttributesMap; import de.ozgcloud.vorgang.clientattribute.ClientAttributesMapTestFactory; import de.ozgcloud.vorgang.common.db.CriteriaUtil; +import de.ozgcloud.vorgang.common.operator.OperatorTestFactory; import de.ozgcloud.vorgang.vorgang.Vorgang.Status; @DataITCase @@ -166,6 +167,31 @@ class VorgangHeaderRepositoryImplITCase { } } + @Nested + class TestQueryForForm { + @BeforeEach + void initData() { + mongoOperations.save(VorgangTestFactory.create()); + } + + @Test + void shouldReturnTotalForForm() { + var query = FindVorgangRequestTestFactory.createBuilder() + .findVorgangQuery(FindVorgangQuery.builder() + .operator(OperatorTestFactory.createEqualOperatorBuilder() + .fieldPath("eingangs.header.formEngineName").operand(VorgangTestFactory.FORM_ENGINE_NAME).build()) + .logicalOperator(FindVorgangQuery.LogicalOperator.AND).nestedQuery( + FindVorgangQuery.builder().operator(OperatorTestFactory.createEqualOperatorBuilder() + .fieldPath("eingangs.header.formId").operand(EingangHeaderTestFactory.FORM_ID).build()).build()) + .build()) + .build(); + + var result = repositoryImpl.findAll(query); + + assertThat(result.getContent()).hasSize(1); + } + } + @Nested class TestWithHasNextWiedervorlageFristFilter {