From 8cb056f0789aacc203895982a15cdcfa7c9f9b6e Mon Sep 17 00:00:00 2001 From: Mustapha Zorgati <15628173+mustaphazorgati@users.noreply.github.com> Date: Fri, 7 Aug 2020 12:48:55 +0200 Subject: [PATCH] TSK-1357: fixed sql statements in MonitorMapper when using TimeStampReport with classsification filter --- .../monitor/internal/MonitorMapper.java | 18 +++++++------- ...TaskCustomFieldValueReportBuilderImpl.java | 2 +- ...deClassificationCategoryReportAccTest.java | 18 ++++++++++++++ .../ProvideClassificationReportAccTest.java | 18 ++++++++++++++ ...deDetailedClassificationReportAccTest.java | 23 ++++++++++++++++++ .../report/ProvideTimestampReportAccTest.java | 24 +++++++++++++++++++ .../ProvideWorkbasketReportAccTest.java | 2 +- ...CustomFieldValueReportBuilderImplTest.java | 8 +++---- 8 files changed, 98 insertions(+), 15 deletions(-) diff --git a/lib/taskana-core/src/main/java/pro/taskana/monitor/internal/MonitorMapper.java b/lib/taskana-core/src/main/java/pro/taskana/monitor/internal/MonitorMapper.java index 06e1aa38d..836ce6e6d 100644 --- a/lib/taskana-core/src/main/java/pro/taskana/monitor/internal/MonitorMapper.java +++ b/lib/taskana-core/src/main/java/pro/taskana/monitor/internal/MonitorMapper.java @@ -197,13 +197,13 @@ public interface MonitorMapper { + "AND DOMAIN IN (#{domain}) " + "" + "" - + "AND CLASSIFICATION_ID IN (#{classificationId}) " + + "AND T.CLASSIFICATION_ID IN (#{classificationId}) " + "" + "" - + "AND CLASSIFICATION_ID NOT IN (#{excludedClassificationId}) " + + "AND T.CLASSIFICATION_ID NOT IN (#{excludedClassificationId}) " + "" + "" - + "AND ((${key} = '${customAttributeFilter.get(key)}')) " + + "AND ((T.${key} = '${customAttributeFilter.get(key)}')) " + "" + "AND T.${timestamp} IS NOT NULL " + "" @@ -265,7 +265,7 @@ public interface MonitorMapper { @Result(column = "AGE_IN_DAYS", property = "ageInDays"), @Result(column = "NUMBER_OF_TASKS", property = "numberOfTasks") }) - List getTaskCountOfCustomFieldValues( + List getTaskCountOfTaskCustomFieldValues( @Param("customField") TaskCustomField taskCustomField, @Param("workbasketIds") List workbasketIds, @Param("states") List states, @@ -417,22 +417,22 @@ public interface MonitorMapper { + "FROM TASK AS T INNER JOIN WORKBASKET AS W ON T.WORKBASKET_KEY=W.KEY " + "" + "" - + "T.COMPLETED IS NOT NULL" + + "T.COMPLETED IS NOT NULL " + "" + "" - + "AND CLASSIFICATION_CATEGORY IN (#{category}) " + + "AND T.CLASSIFICATION_CATEGORY IN (#{category}) " + "" + "" - + "AND CLASSIFICATION_ID IN (#{classificationId}) " + + "AND T.CLASSIFICATION_ID IN (#{classificationId}) " + "" + "" - + "AND CLASSIFICATION_ID NOT IN (#{excludedClassificationId}) " + + "AND T.CLASSIFICATION_ID NOT IN (#{excludedClassificationId}) " + "" + "" + "AND DOMAIN IN (#{domain}) " + "" + "" - + "AND ((${key} = '${customAttributeFilter.get(key)}')) " + + "AND ((T.${key} = '${customAttributeFilter.get(key)}')) " + "" + "" + ") AS A " diff --git a/lib/taskana-core/src/main/java/pro/taskana/monitor/internal/reports/TaskCustomFieldValueReportBuilderImpl.java b/lib/taskana-core/src/main/java/pro/taskana/monitor/internal/reports/TaskCustomFieldValueReportBuilderImpl.java index fe897edbc..c92e14710 100644 --- a/lib/taskana-core/src/main/java/pro/taskana/monitor/internal/reports/TaskCustomFieldValueReportBuilderImpl.java +++ b/lib/taskana-core/src/main/java/pro/taskana/monitor/internal/reports/TaskCustomFieldValueReportBuilderImpl.java @@ -50,7 +50,7 @@ public class TaskCustomFieldValueReportBuilderImpl this.taskanaEngine.openConnection(); TaskCustomFieldValueReport report = new TaskCustomFieldValueReport(this.columnHeaders); List monitorQueryItems = - this.monitorMapper.getTaskCountOfCustomFieldValues( + this.monitorMapper.getTaskCountOfTaskCustomFieldValues( this.taskCustomField, this.workbasketIds, this.states, diff --git a/lib/taskana-core/src/test/java/acceptance/report/ProvideClassificationCategoryReportAccTest.java b/lib/taskana-core/src/test/java/acceptance/report/ProvideClassificationCategoryReportAccTest.java index 2bc256778..b05b87cbc 100644 --- a/lib/taskana-core/src/test/java/acceptance/report/ProvideClassificationCategoryReportAccTest.java +++ b/lib/taskana-core/src/test/java/acceptance/report/ProvideClassificationCategoryReportAccTest.java @@ -54,6 +54,24 @@ class ProvideClassificationCategoryReportAccTest extends AbstractReportAccTest { assertThat(report.getRow("MANUAL").getDisplayName()).isEqualTo("MANUAL"); } + @WithAccessId(user = "monitor") + @Test + void should_FilterTasksAccordingToClassificationId_When_ClassificationIdFilterIsApplied() + throws Exception { + List columnHeaders = getListOfColumnHeaders(); + ClassificationCategoryReport report = + MONITOR_SERVICE + .createClassificationCategoryReportBuilder() + .withColumnHeaders(columnHeaders) + .classificationIdIn( + Collections.singletonList("CLI:000000000000000000000000000000000001")) + .buildReport(); + assertThat(report).isNotNull(); + + assertThat(report.rowSize()).isOne(); + assertThat(report.getRow("EXTERN").getCells()).isEqualTo(new int[] {7, 2, 0, 0, 1, 0, 0, 0, 0}); + } + @WithAccessId(user = "monitor") @Test void testGetTotalNumbersOfTasksOfCategoryReport() throws Exception { diff --git a/lib/taskana-core/src/test/java/acceptance/report/ProvideClassificationReportAccTest.java b/lib/taskana-core/src/test/java/acceptance/report/ProvideClassificationReportAccTest.java index e415b4e0c..10b29e3bb 100644 --- a/lib/taskana-core/src/test/java/acceptance/report/ProvideClassificationReportAccTest.java +++ b/lib/taskana-core/src/test/java/acceptance/report/ProvideClassificationReportAccTest.java @@ -54,6 +54,24 @@ class ProvideClassificationReportAccTest extends AbstractReportAccTest { assertThat(report.getRow("L50000").getDisplayName()).isEqualTo("Dynamik-Ablehnung"); } + @WithAccessId(user = "monitor") + @Test + void should_FilterTasksAccordingToClassificationId_When_ClassificationIdFilterIsApplied() + throws Exception { + List columnHeaders = getListOfColumnsHeaders(); + ClassificationReport report = + MONITOR_SERVICE + .createClassificationReportBuilder() + .withColumnHeaders(columnHeaders) + .classificationIdIn( + Collections.singletonList("CLI:000000000000000000000000000000000001")) + .buildReport(); + assertThat(report).isNotNull(); + + assertThat(report.rowSize()).isOne(); + assertThat(report.getRow("L10000").getCells()).isEqualTo(new int[] {7, 2, 0, 0, 1, 0, 0, 0, 0}); + } + @WithAccessId(user = "monitor") @Test void testGetTotalNumbersOfTasksOfClassificationReport() throws Exception { diff --git a/lib/taskana-core/src/test/java/acceptance/report/ProvideDetailedClassificationReportAccTest.java b/lib/taskana-core/src/test/java/acceptance/report/ProvideDetailedClassificationReportAccTest.java index 52202c590..dc8add7d4 100644 --- a/lib/taskana-core/src/test/java/acceptance/report/ProvideDetailedClassificationReportAccTest.java +++ b/lib/taskana-core/src/test/java/acceptance/report/ProvideDetailedClassificationReportAccTest.java @@ -46,6 +46,29 @@ class ProvideDetailedClassificationReportAccTest extends AbstractReportAccTest { assertThatThrownBy(call).isInstanceOf(NotAuthorizedException.class); } + @WithAccessId(user = "monitor") + @Test + void should_FilterTasksAccordingToClassificationId_When_ClassificationIdFilterIsApplied() + throws Exception { + List columnHeaders = getListOfColumnHeaders(); + DetailedClassificationReport report = + MONITOR_SERVICE + .createClassificationReportBuilder() + .withColumnHeaders(columnHeaders) + .classificationIdIn( + Collections.singletonList("CLI:000000000000000000000000000000000001")) + .buildDetailedReport(); + assertThat(report).isNotNull(); + + assertThat(report.rowSize()).isOne(); + DetailedClassificationRow row = report.getRow("L10000"); + assertThat(row.getCells()).isEqualTo(new int[] {7, 2, 0, 0, 1, 0, 0, 0, 0}); + assertThat(row.getFoldableRow("L11000").getCells()) + .isEqualTo(new int[] {2, 0, 0, 0, 1, 0, 0, 0, 0}); + assertThat(row.getFoldableRow("N/A").getCells()) + .isEqualTo(new int[] {5, 2, 0, 0, 0, 0, 0, 0, 0}); + } + @WithAccessId(user = "monitor") @Test void should_augmentDisplayNames_When_ReportIsBuild() throws Exception { diff --git a/lib/taskana-core/src/test/java/acceptance/report/ProvideTimestampReportAccTest.java b/lib/taskana-core/src/test/java/acceptance/report/ProvideTimestampReportAccTest.java index b3a749c4e..da21edb9d 100644 --- a/lib/taskana-core/src/test/java/acceptance/report/ProvideTimestampReportAccTest.java +++ b/lib/taskana-core/src/test/java/acceptance/report/ProvideTimestampReportAccTest.java @@ -35,6 +35,30 @@ class ProvideTimestampReportAccTest extends AbstractReportAccTest { assertThat(report.getRow("COMPLETED").getDisplayName()).isEqualTo("COMPLETED"); } + @WithAccessId(user = "monitor") + @Test + void should_FilterTasksAccordingToClassificationId_When_ClassificationIdFilterIsApplied() + throws Exception { + List headers = + IntStream.rangeClosed(-14, 0) + .mapToObj(TimeIntervalColumnHeader.Date::new) + .collect(Collectors.toList()); + TimestampReport report = + MONITOR_SERVICE + .createTimestampReportBuilder() + .withColumnHeaders(headers) + .classificationIdIn( + Collections.singletonList("CLI:000000000000000000000000000000000001")) + .buildReport(); + assertThat(report).isNotNull(); + + assertThat(report.rowSize()).isEqualTo(2); + assertThat(report.getRow("CREATED").getCells()) + .isEqualTo(new int[] {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10}); + assertThat(report.getRow("COMPLETED").getCells()) + .isEqualTo(new int[] {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}); + } + /** * This test covers every insert operation of the TimestampReport. We have two definitions for org * level 1: 'org1' and 'N/A'. All other org levels only contain 'N/A'. Thus this test only tests diff --git a/lib/taskana-core/src/test/java/acceptance/report/ProvideWorkbasketReportAccTest.java b/lib/taskana-core/src/test/java/acceptance/report/ProvideWorkbasketReportAccTest.java index fb9160264..1a7019899 100644 --- a/lib/taskana-core/src/test/java/acceptance/report/ProvideWorkbasketReportAccTest.java +++ b/lib/taskana-core/src/test/java/acceptance/report/ProvideWorkbasketReportAccTest.java @@ -69,7 +69,7 @@ class ProvideWorkbasketReportAccTest extends AbstractReportAccTest { @WithAccessId(user = "monitor") @Test - void should_FilterTasksAccordingToClassificationId_When_ClassificationIdFilterIsAplied() + void should_FilterTasksAccordingToClassificationId_When_ClassificationIdFilterIsApplied() throws Exception { List columnHeaders = getListOfColumnHeaders(); WorkbasketReport report = diff --git a/lib/taskana-core/src/test/java/pro/taskana/monitor/internal/TaskCustomFieldValueReportBuilderImplTest.java b/lib/taskana-core/src/test/java/pro/taskana/monitor/internal/TaskCustomFieldValueReportBuilderImplTest.java index 7899525a3..7b87fff52 100644 --- a/lib/taskana-core/src/test/java/pro/taskana/monitor/internal/TaskCustomFieldValueReportBuilderImplTest.java +++ b/lib/taskana-core/src/test/java/pro/taskana/monitor/internal/TaskCustomFieldValueReportBuilderImplTest.java @@ -66,7 +66,7 @@ class TaskCustomFieldValueReportBuilderImplTest { monitorQueryItem.setKey("Geschaeftsstelle A"); monitorQueryItem.setNumberOfTasks(1); expectedResult.add(monitorQueryItem); - when(monitorMapperMock.getTaskCountOfCustomFieldValues( + when(monitorMapperMock.getTaskCountOfTaskCustomFieldValues( TaskCustomField.CUSTOM_1, workbasketIds, states, @@ -94,7 +94,7 @@ class TaskCustomFieldValueReportBuilderImplTest { verify(taskanaEngineMock).getWorkingDaysToDaysConverter(); verify(internalTaskanaEngineMock, times(2)).getEngine(); verify(monitorMapperMock) - .getTaskCountOfCustomFieldValues( + .getTaskCountOfTaskCustomFieldValues( any(), any(), any(), any(), any(), any(), any(), any(), any()); verify(internalTaskanaEngineMock).returnConnection(); verifyNoMoreInteractions( @@ -128,7 +128,7 @@ class TaskCustomFieldValueReportBuilderImplTest { monitorQueryItem.setAgeInDays(0); monitorQueryItem.setNumberOfTasks(1); expectedResult.add(monitorQueryItem); - when(monitorMapperMock.getTaskCountOfCustomFieldValues( + when(monitorMapperMock.getTaskCountOfTaskCustomFieldValues( TaskCustomField.CUSTOM_1, workbasketIds, states, @@ -157,7 +157,7 @@ class TaskCustomFieldValueReportBuilderImplTest { verify(taskanaEngineMock).getWorkingDaysToDaysConverter(); verify(internalTaskanaEngineMock, times(2)).getEngine(); verify(monitorMapperMock) - .getTaskCountOfCustomFieldValues( + .getTaskCountOfTaskCustomFieldValues( any(), any(), any(), any(), any(), any(), any(), any(), any()); verify(internalTaskanaEngineMock).returnConnection(); verifyNoMoreInteractions(