From 2a6d97132b5f84a22e6790b69971e2bfae99ee3b Mon Sep 17 00:00:00 2001 From: Joerg Heffner <56156750+gitgoodjhe@users.noreply.github.com> Date: Wed, 18 Nov 2020 15:06:50 +0100 Subject: [PATCH] TSK-1355: Adjust all single() methods to use mybatis selectOne --- .../impl/ClassificationHistoryQueryImpl.java | 10 +++------- .../impl/TaskHistoryQueryImpl.java | 10 +++------- .../impl/WorkbasketHistoryQueryImpl.java | 9 ++------- .../QueryClassificationHistoryAccTest.java | 18 +++++++++++++++++- .../query/QueryTaskHistoryAccTest.java | 18 +++++++++++++++++- .../query/QueryWorkbasketHistoryAccTest.java | 18 +++++++++++++++++- 6 files changed, 59 insertions(+), 24 deletions(-) diff --git a/history/taskana-simplehistory-provider/src/main/java/pro/taskana/simplehistory/impl/ClassificationHistoryQueryImpl.java b/history/taskana-simplehistory-provider/src/main/java/pro/taskana/simplehistory/impl/ClassificationHistoryQueryImpl.java index 204d4157a..17ff107c0 100644 --- a/history/taskana-simplehistory-provider/src/main/java/pro/taskana/simplehistory/impl/ClassificationHistoryQueryImpl.java +++ b/history/taskana-simplehistory-provider/src/main/java/pro/taskana/simplehistory/impl/ClassificationHistoryQueryImpl.java @@ -493,14 +493,10 @@ public class ClassificationHistoryQueryImpl implements ClassificationHistoryQuer LOGGER.debug("entry to single(), this = {}", this); ClassificationHistoryEvent result = null; try { + taskanaHistoryEngine.openConnection(); - List results = - taskanaHistoryEngine.getSqlSession().selectList(LINK_TO_MAPPER, this); - if (results.isEmpty()) { - return result; - } else { - result = results.get(0); - } + result = taskanaHistoryEngine.getSqlSession().selectOne(LINK_TO_MAPPER, this); + return result; } catch (SQLException e) { LOGGER.error(SQL_EXCEPTION_MESSAGE, e.getCause()); diff --git a/history/taskana-simplehistory-provider/src/main/java/pro/taskana/simplehistory/impl/TaskHistoryQueryImpl.java b/history/taskana-simplehistory-provider/src/main/java/pro/taskana/simplehistory/impl/TaskHistoryQueryImpl.java index d36681369..78414a4ff 100644 --- a/history/taskana-simplehistory-provider/src/main/java/pro/taskana/simplehistory/impl/TaskHistoryQueryImpl.java +++ b/history/taskana-simplehistory-provider/src/main/java/pro/taskana/simplehistory/impl/TaskHistoryQueryImpl.java @@ -702,14 +702,10 @@ public class TaskHistoryQueryImpl implements TaskHistoryQuery { TaskHistoryEvent result = null; try { taskanaHistoryEngine.openConnection(); - List results = - taskanaHistoryEngine.getSqlSession().selectList(LINK_TO_MAPPER, this); - if (results.isEmpty()) { - return result; - } else { - result = results.get(0); - } + result = taskanaHistoryEngine.getSqlSession().selectOne(LINK_TO_MAPPER, this); + return result; + } catch (SQLException e) { LOGGER.error(SQL_EXCEPTION_MESSAGE, e.getCause()); return result; diff --git a/history/taskana-simplehistory-provider/src/main/java/pro/taskana/simplehistory/impl/WorkbasketHistoryQueryImpl.java b/history/taskana-simplehistory-provider/src/main/java/pro/taskana/simplehistory/impl/WorkbasketHistoryQueryImpl.java index d53748c5f..65bd0609f 100644 --- a/history/taskana-simplehistory-provider/src/main/java/pro/taskana/simplehistory/impl/WorkbasketHistoryQueryImpl.java +++ b/history/taskana-simplehistory-provider/src/main/java/pro/taskana/simplehistory/impl/WorkbasketHistoryQueryImpl.java @@ -546,13 +546,8 @@ public class WorkbasketHistoryQueryImpl implements WorkbasketHistoryQuery { WorkbasketHistoryEvent result = null; try { taskanaHistoryEngine.openConnection(); - List results = - taskanaHistoryEngine.getSqlSession().selectList(LINK_TO_MAPPER, this); - if (results.isEmpty()) { - return result; - } else { - result = results.get(0); - } + result = taskanaHistoryEngine.getSqlSession().selectOne(LINK_TO_MAPPER, this); + return result; } catch (SQLException e) { LOGGER.error(SQL_EXCEPTION_MESSAGE, e.getCause()); diff --git a/history/taskana-simplehistory-provider/src/test/java/acceptance/query/QueryClassificationHistoryAccTest.java b/history/taskana-simplehistory-provider/src/test/java/acceptance/query/QueryClassificationHistoryAccTest.java index 0372bbb3a..76d99e0ab 100644 --- a/history/taskana-simplehistory-provider/src/test/java/acceptance/query/QueryClassificationHistoryAccTest.java +++ b/history/taskana-simplehistory-provider/src/test/java/acceptance/query/QueryClassificationHistoryAccTest.java @@ -1,11 +1,13 @@ package acceptance.query; import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatThrownBy; import acceptance.AbstractAccTest; import java.time.Instant; import java.util.Collections; import java.util.List; +import org.apache.ibatis.exceptions.TooManyResultsException; import org.junit.jupiter.api.Test; import pro.taskana.classification.api.ClassificationCustomField; @@ -96,17 +98,31 @@ class QueryClassificationHistoryAccTest extends AbstractAccTest { @Test void should_ReturnSingleHistoryEvent_When_UsingSingleMethod() { ClassificationHistoryEvent single = - historyService.createClassificationHistoryQuery().userIdIn("peter").single(); + historyService + .createClassificationHistoryQuery() + .userIdIn("peter") + .classificationIdIn("CLI:000000000000000000000000000000000001") + .single(); assertThat(single.getEventType()).isEqualTo(ClassificationHistoryEventType.CREATED.getName()); single = historyService .createClassificationHistoryQuery() .eventTypeIn(ClassificationHistoryEventType.CREATED.getName(), "xy") + .classificationIdIn("CLI:000000000000000000000000000000000001") .single(); assertThat(single.getUserId()).isEqualTo("peter"); } + @Test + void should_ThrowException_When_SingleMethodRetrievesMoreThanOneEventFromDatabase() { + + ClassificationHistoryQuery query = + getHistoryService().createClassificationHistoryQuery().userIdIn("peter"); + + assertThatThrownBy(() -> query.single()).isInstanceOf(TooManyResultsException.class); + } + @Test void should_ReturnCountOfEvents_When_UsingCountMethod() { long count = historyService.createClassificationHistoryQuery().userIdIn("peter").count(); diff --git a/history/taskana-simplehistory-provider/src/test/java/acceptance/query/QueryTaskHistoryAccTest.java b/history/taskana-simplehistory-provider/src/test/java/acceptance/query/QueryTaskHistoryAccTest.java index 392c53683..bc56d24a6 100644 --- a/history/taskana-simplehistory-provider/src/test/java/acceptance/query/QueryTaskHistoryAccTest.java +++ b/history/taskana-simplehistory-provider/src/test/java/acceptance/query/QueryTaskHistoryAccTest.java @@ -2,11 +2,13 @@ package acceptance.query; import static java.lang.String.CASE_INSENSITIVE_ORDER; import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatThrownBy; import acceptance.AbstractAccTest; import java.time.Instant; import java.util.Collections; import java.util.List; +import org.apache.ibatis.exceptions.TooManyResultsException; import org.junit.jupiter.api.Test; import pro.taskana.common.api.BaseQuery.SortDirection; @@ -86,17 +88,31 @@ class QueryTaskHistoryAccTest extends AbstractAccTest { @Test void should_ReturnSingleHistoryEvent_When_UsingSingleMethod() { TaskHistoryEvent single = - getHistoryService().createTaskHistoryQuery().userIdIn("peter").single(); + getHistoryService() + .createTaskHistoryQuery() + .userIdIn("peter") + .taskIdIn("TKI:000000000000000000000000000000000036") + .single(); + assertThat(single.getEventType()).isEqualTo(TaskHistoryEventType.CREATED.getName()); single = getHistoryService() .createTaskHistoryQuery() .eventTypeIn(TaskHistoryEventType.CREATED.getName(), "xy") + .idIn("THI:000000000000000000000000000000000003") .single(); assertThat(single.getUserId()).isEqualTo("peter"); } + @Test + void should_ThrowException_When_SingleMethodRetrievesMoreThanOneEventFromDatabase() { + + TaskHistoryQuery query = getHistoryService().createTaskHistoryQuery().userIdIn("peter"); + + assertThatThrownBy(() -> query.single()).isInstanceOf(TooManyResultsException.class); + } + @Test void should_ReturnCountOfEvents_When_UsingCountMethod() { long count = getHistoryService().createTaskHistoryQuery().userIdIn("peter").count(); diff --git a/history/taskana-simplehistory-provider/src/test/java/acceptance/query/QueryWorkbasketHistoryAccTest.java b/history/taskana-simplehistory-provider/src/test/java/acceptance/query/QueryWorkbasketHistoryAccTest.java index 7bdcf21a1..e70529f79 100644 --- a/history/taskana-simplehistory-provider/src/test/java/acceptance/query/QueryWorkbasketHistoryAccTest.java +++ b/history/taskana-simplehistory-provider/src/test/java/acceptance/query/QueryWorkbasketHistoryAccTest.java @@ -1,11 +1,13 @@ package acceptance.query; import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatThrownBy; import acceptance.AbstractAccTest; import java.time.Instant; import java.util.Collections; import java.util.List; +import org.apache.ibatis.exceptions.TooManyResultsException; import org.junit.jupiter.api.Test; import pro.taskana.common.api.BaseQuery.SortDirection; @@ -96,17 +98,31 @@ class QueryWorkbasketHistoryAccTest extends AbstractAccTest { @Test void should_ReturnSingleHistoryEvent_When_UsingSingleMethod() { WorkbasketHistoryEvent single = - historyService.createWorkbasketHistoryQuery().userIdIn("peter").single(); + historyService + .createWorkbasketHistoryQuery() + .userIdIn("peter") + .idIn("WHI:000000000000000000000000000000000000") + .single(); assertThat(single.getEventType()).isEqualTo(WorkbasketHistoryEventType.CREATED.getName()); single = historyService .createWorkbasketHistoryQuery() .eventTypeIn(WorkbasketHistoryEventType.CREATED.getName(), "xy") + .idIn("WHI:000000000000000000000000000000000000") .single(); assertThat(single.getUserId()).isEqualTo("peter"); } + @Test + void should_ThrowException_When_SingleMethodRetrievesMoreThanOneEventFromDatabase() { + + WorkbasketHistoryQuery query = + getHistoryService().createWorkbasketHistoryQuery().userIdIn("peter"); + + assertThatThrownBy(() -> query.single()).isInstanceOf(TooManyResultsException.class); + } + @Test void should_ReturnCountOfEvents_When_UsingCountMethod() { long count = historyService.createWorkbasketHistoryQuery().userIdIn("peter").count();