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(