TSK-1375: fixed SQL Error during display name augmentation in the reports
This commit is contained in:
parent
fa19359795
commit
a2d79c8a7b
|
@ -459,7 +459,7 @@ public interface MonitorMapper {
|
|||
+ "AND T.CLASSIFICATION_ID NOT IN (<foreach collection='excludedClassificationIds' item='excludedClassificationId' separator=','>#{excludedClassificationId}</foreach>) "
|
||||
+ "</if>"
|
||||
+ "<if test='domains != null'>"
|
||||
+ "AND DOMAIN IN (<foreach collection='domains' item='domain' separator=','>#{domain}</foreach>) "
|
||||
+ "AND T.DOMAIN IN (<foreach collection='domains' item='domain' separator=','>#{domain}</foreach>) "
|
||||
+ "</if>"
|
||||
+ "<if test='customAttributeFilter != null'>"
|
||||
+ "AND (<foreach collection='customAttributeFilter.keys' item='key' separator=' AND '>(T.${key} = '${customAttributeFilter.get(key)}')</foreach>) "
|
||||
|
|
|
@ -70,7 +70,10 @@ public class ClassificationReportBuilderImpl
|
|||
Map<String, String> displayMap =
|
||||
classificationService
|
||||
.createClassificationQuery()
|
||||
.keyIn(report.getRows().keySet().toArray(new String[0]))
|
||||
.keyIn(
|
||||
report.getRows().isEmpty()
|
||||
? null
|
||||
: report.getRows().keySet().toArray(new String[0]))
|
||||
.domainIn(domains != null ? domains.toArray(new String[0]) : null)
|
||||
.list()
|
||||
.stream()
|
||||
|
@ -119,12 +122,12 @@ public class ClassificationReportBuilderImpl
|
|||
.map(report::getRow)
|
||||
.flatMap(row -> row.getFoldableRows().values().stream())
|
||||
.map(Row::getKey);
|
||||
String[] keys =
|
||||
Stream.concat(attachmentKeys, report.getRows().keySet().stream()).toArray(String[]::new);
|
||||
Map<String, String> displayMap =
|
||||
classificationService
|
||||
.createClassificationQuery()
|
||||
.keyIn(
|
||||
Stream.concat(attachmentKeys, report.getRows().keySet().stream())
|
||||
.toArray(String[]::new))
|
||||
.keyIn(keys.length == 0 ? null : keys)
|
||||
.domainIn(domains != null ? domains.toArray(new String[0]) : null)
|
||||
.list()
|
||||
.stream()
|
||||
|
|
|
@ -25,6 +25,7 @@ import pro.taskana.common.internal.security.WithAccessId;
|
|||
import pro.taskana.monitor.api.MonitorService;
|
||||
import pro.taskana.monitor.api.TaskTimestamp;
|
||||
import pro.taskana.monitor.api.reports.ClassificationCategoryReport;
|
||||
import pro.taskana.monitor.api.reports.ClassificationCategoryReport.Builder;
|
||||
import pro.taskana.monitor.api.reports.header.TimeIntervalColumnHeader;
|
||||
import pro.taskana.task.api.TaskCustomField;
|
||||
import pro.taskana.task.api.TaskState;
|
||||
|
@ -54,6 +55,22 @@ class ProvideClassificationCategoryReportAccTest extends AbstractReportAccTest {
|
|||
assertThat(report.getRow("MANUAL").getDisplayName()).isEqualTo("MANUAL");
|
||||
}
|
||||
|
||||
@WithAccessId(user = "monitor")
|
||||
@Test
|
||||
void should_NotThrowSqlExceptionDuringAugmentation_When_ReportContainsNoRows() {
|
||||
Builder builder =
|
||||
MONITOR_SERVICE
|
||||
.createClassificationCategoryReportBuilder()
|
||||
.classificationIdIn(Collections.singletonList("DOES NOT EXIST"));
|
||||
ThrowingCallable test =
|
||||
() -> {
|
||||
ClassificationCategoryReport report = builder.buildReport();
|
||||
assertThat(report).isNotNull();
|
||||
assertThat(report.rowSize()).isZero();
|
||||
};
|
||||
assertThatCode(test).doesNotThrowAnyException();
|
||||
}
|
||||
|
||||
@WithAccessId(user = "monitor")
|
||||
@Test
|
||||
void should_FilterTasksAccordingToClassificationId_When_ClassificationIdFilterIsApplied()
|
||||
|
|
|
@ -25,6 +25,7 @@ import pro.taskana.common.internal.security.WithAccessId;
|
|||
import pro.taskana.monitor.api.MonitorService;
|
||||
import pro.taskana.monitor.api.TaskTimestamp;
|
||||
import pro.taskana.monitor.api.reports.ClassificationReport;
|
||||
import pro.taskana.monitor.api.reports.ClassificationReport.Builder;
|
||||
import pro.taskana.monitor.api.reports.header.TimeIntervalColumnHeader;
|
||||
import pro.taskana.task.api.TaskCustomField;
|
||||
import pro.taskana.task.api.TaskState;
|
||||
|
@ -54,6 +55,22 @@ class ProvideClassificationReportAccTest extends AbstractReportAccTest {
|
|||
assertThat(report.getRow("L50000").getDisplayName()).isEqualTo("Dynamik-Ablehnung");
|
||||
}
|
||||
|
||||
@WithAccessId(user = "monitor")
|
||||
@Test
|
||||
void should_NotThrowSqlExceptionDuringAugmentation_When_ReportContainsNoRows() {
|
||||
Builder builder =
|
||||
MONITOR_SERVICE
|
||||
.createClassificationReportBuilder()
|
||||
.classificationIdIn(Collections.singletonList("DOES NOT EXIST"));
|
||||
ThrowingCallable test =
|
||||
() -> {
|
||||
ClassificationReport report = builder.buildReport();
|
||||
assertThat(report).isNotNull();
|
||||
assertThat(report.rowSize()).isZero();
|
||||
};
|
||||
assertThatCode(test).doesNotThrowAnyException();
|
||||
}
|
||||
|
||||
@WithAccessId(user = "monitor")
|
||||
@Test
|
||||
void should_FilterTasksAccordingToClassificationId_When_ClassificationIdFilterIsApplied()
|
||||
|
|
|
@ -24,6 +24,7 @@ import pro.taskana.common.internal.security.JaasExtension;
|
|||
import pro.taskana.common.internal.security.WithAccessId;
|
||||
import pro.taskana.monitor.api.MonitorService;
|
||||
import pro.taskana.monitor.api.TaskTimestamp;
|
||||
import pro.taskana.monitor.api.reports.ClassificationReport.Builder;
|
||||
import pro.taskana.monitor.api.reports.ClassificationReport.DetailedClassificationReport;
|
||||
import pro.taskana.monitor.api.reports.header.TimeIntervalColumnHeader;
|
||||
import pro.taskana.monitor.api.reports.item.DetailedMonitorQueryItem;
|
||||
|
@ -107,6 +108,22 @@ class ProvideDetailedClassificationReportAccTest extends AbstractReportAccTest {
|
|||
assertThat(row.getFoldableRow("N/A").getDisplayName()).isEqualTo("N/A");
|
||||
}
|
||||
|
||||
@WithAccessId(user = "monitor")
|
||||
@Test
|
||||
void should_NotThrowSqlExceptionDuringAugmentation_When_DetailedReportContainsNoRows() {
|
||||
Builder builder =
|
||||
MONITOR_SERVICE
|
||||
.createClassificationReportBuilder()
|
||||
.classificationIdIn(Collections.singletonList("DOES NOT EXIST"));
|
||||
ThrowingCallable test =
|
||||
() -> {
|
||||
DetailedClassificationReport report = builder.buildDetailedReport();
|
||||
assertThat(report).isNotNull();
|
||||
assertThat(report.rowSize()).isZero();
|
||||
};
|
||||
assertThatCode(test).doesNotThrowAnyException();
|
||||
}
|
||||
|
||||
@WithAccessId(user = "monitor")
|
||||
@Test
|
||||
void testGetTotalNumbersOfTasksOfDetailedClassificationReport() throws Exception {
|
||||
|
|
|
@ -25,6 +25,7 @@ import pro.taskana.common.internal.security.WithAccessId;
|
|||
import pro.taskana.monitor.api.MonitorService;
|
||||
import pro.taskana.monitor.api.TaskTimestamp;
|
||||
import pro.taskana.monitor.api.reports.TaskCustomFieldValueReport;
|
||||
import pro.taskana.monitor.api.reports.TaskCustomFieldValueReport.Builder;
|
||||
import pro.taskana.monitor.api.reports.header.TimeIntervalColumnHeader;
|
||||
import pro.taskana.task.api.TaskCustomField;
|
||||
import pro.taskana.task.api.TaskState;
|
||||
|
@ -63,6 +64,22 @@ class ProvideTaskCustomFieldValueReportAccTest extends AbstractReportAccTest {
|
|||
.isEqualTo("Geschaeftsstelle C");
|
||||
}
|
||||
|
||||
@WithAccessId(user = "monitor")
|
||||
@Test
|
||||
void should_NotThrowSqlExceptionDuringAugmentation_When_ReportContainsNoRows() {
|
||||
Builder builder =
|
||||
MONITOR_SERVICE
|
||||
.createTaskCustomFieldValueReportBuilder(TaskCustomField.CUSTOM_1)
|
||||
.classificationIdIn(Collections.singletonList("DOES NOT EXIST"));
|
||||
ThrowingCallable test =
|
||||
() -> {
|
||||
TaskCustomFieldValueReport report = builder.buildReport();
|
||||
assertThat(report).isNotNull();
|
||||
assertThat(report.rowSize()).isZero();
|
||||
};
|
||||
assertThatCode(test).doesNotThrowAnyException();
|
||||
}
|
||||
|
||||
@WithAccessId(user = "monitor")
|
||||
@Test
|
||||
void testGetTotalNumbersOfTasksOfCustomFieldValueReportForCustom1() throws Exception {
|
||||
|
|
|
@ -7,6 +7,7 @@ import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
|||
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import org.assertj.core.api.ThrowableAssert.ThrowingCallable;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.TestTemplate;
|
||||
|
@ -68,6 +69,22 @@ class ProvideTaskStatusReportAccTest extends AbstractReportAccTest {
|
|||
assertThat(report.getRow("USER-1-3").getDisplayName()).isEqualTo("PPK User 1 KSC 3");
|
||||
}
|
||||
|
||||
@WithAccessId(user = "monitor")
|
||||
@Test
|
||||
void should_NotThrowSqlExceptionDuringAugmentation_When_ReportContainsNoRows() {
|
||||
TaskStatusReport.Builder builder =
|
||||
MONITOR_SERVICE
|
||||
.createTaskStatusReportBuilder()
|
||||
.domainIn(Collections.singletonList("DOES NOT EXIST"));
|
||||
ThrowingCallable test =
|
||||
() -> {
|
||||
TaskStatusReport report = builder.buildReport();
|
||||
assertThat(report).isNotNull();
|
||||
assertThat(report.rowSize()).isZero();
|
||||
};
|
||||
assertThatCode(test).doesNotThrowAnyException();
|
||||
}
|
||||
|
||||
@WithAccessId(user = "monitor")
|
||||
@Test
|
||||
void testCompleteTaskStatusReport() throws Exception {
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package acceptance.report;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.assertj.core.api.Assertions.assertThatCode;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
|
@ -8,6 +9,7 @@ import java.util.HashSet;
|
|||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.IntStream;
|
||||
import org.assertj.core.api.ThrowableAssert.ThrowingCallable;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.extension.ExtendWith;
|
||||
|
||||
|
@ -35,6 +37,44 @@ class ProvideTimestampReportAccTest extends AbstractReportAccTest {
|
|||
assertThat(report.getRow("COMPLETED").getDisplayName()).isEqualTo("COMPLETED");
|
||||
}
|
||||
|
||||
@WithAccessId(user = "monitor")
|
||||
@Test
|
||||
void should_NotThrowSqlExceptionDuringAugmentation_When_ReportContainsNoRows() {
|
||||
TimestampReport.Builder builder =
|
||||
MONITOR_SERVICE
|
||||
.createTimestampReportBuilder()
|
||||
.domainIn(Collections.singletonList("DOES_NOT_EXIST"));
|
||||
ThrowingCallable test =
|
||||
() -> {
|
||||
TimestampReport report = builder.buildReport();
|
||||
assertThat(report).isNotNull();
|
||||
assertThat(report.rowSize()).isZero();
|
||||
};
|
||||
assertThatCode(test).doesNotThrowAnyException();
|
||||
}
|
||||
|
||||
@WithAccessId(user = "monitor")
|
||||
@Test
|
||||
void should_FilterTasksAccordingToDomain_When_DomainFilterIsApplied() throws Exception {
|
||||
List<TimeIntervalColumnHeader> headers =
|
||||
IntStream.rangeClosed(-14, 0)
|
||||
.mapToObj(TimeIntervalColumnHeader.Date::new)
|
||||
.collect(Collectors.toList());
|
||||
TimestampReport report =
|
||||
MONITOR_SERVICE
|
||||
.createTimestampReportBuilder()
|
||||
.withColumnHeaders(headers)
|
||||
.domainIn(Collections.singletonList("DOMAIN_A"))
|
||||
.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, 26});
|
||||
assertThat(report.getRow("COMPLETED").getCells())
|
||||
.isEqualTo(new int[] {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0});
|
||||
}
|
||||
|
||||
@WithAccessId(user = "monitor")
|
||||
@Test
|
||||
void should_FilterTasksAccordingToClassificationId_When_ClassificationIdFilterIsApplied()
|
||||
|
|
|
@ -52,6 +52,22 @@ class ProvideWorkbasketReportAccTest extends AbstractReportAccTest {
|
|||
assertThat(report.getRow("USER-1-3").getDisplayName()).isEqualTo("PPK User 1 KSC 3");
|
||||
}
|
||||
|
||||
@WithAccessId(user = "monitor")
|
||||
@Test
|
||||
void should_NotThrowSqlExceptionDuringAugmentation_When_ReportContainsNoRows() {
|
||||
WorkbasketReport.Builder builder =
|
||||
MONITOR_SERVICE
|
||||
.createWorkbasketReportBuilder()
|
||||
.domainIn(Collections.singletonList("DOES_NOT_EXIST"));
|
||||
ThrowingCallable test =
|
||||
() -> {
|
||||
WorkbasketReport report = builder.buildReport();
|
||||
assertThat(report).isNotNull();
|
||||
assertThat(report.rowSize()).isZero();
|
||||
};
|
||||
assertThatCode(test).doesNotThrowAnyException();
|
||||
}
|
||||
|
||||
@WithAccessId(user = "monitor")
|
||||
@Test
|
||||
void testGetTotalNumbersOfTasksOfWorkbasketReportBasedOnDueDate() throws Exception {
|
||||
|
|
Loading…
Reference in New Issue