TSK-235 sort workbasket query results case insensitive
This commit is contained in:
parent
43d4e9eafd
commit
f6b9524bfe
|
@ -57,7 +57,7 @@ public class TaskanaProducersTest {
|
||||||
|
|
||||||
Class.forName("org.h2.Driver");
|
Class.forName("org.h2.Driver");
|
||||||
int resultCount = 0;
|
int resultCount = 0;
|
||||||
try (Connection conn = DriverManager.getConnection("jdbc:h2:~/data/testdb;AUTO_SERVER=TRUE", "SA", "SA")) {
|
try (Connection conn = DriverManager.getConnection("jdbc:h2:~/data/testdb;AUTO_SERVER=TRUE;IGNORECASE=TRUE", "SA", "SA")) {
|
||||||
ResultSet rs = conn.createStatement().executeQuery("SELECT ID, OWNER FROM TASK");
|
ResultSet rs = conn.createStatement().executeQuery("SELECT ID, OWNER FROM TASK");
|
||||||
|
|
||||||
while (rs.next()) {
|
while (rs.next()) {
|
||||||
|
@ -74,7 +74,7 @@ public class TaskanaProducersTest {
|
||||||
|
|
||||||
Class.forName("org.h2.Driver");
|
Class.forName("org.h2.Driver");
|
||||||
int resultCount = 0;
|
int resultCount = 0;
|
||||||
try (Connection conn = DriverManager.getConnection("jdbc:h2:~/data/testdb;AUTO_SERVER=TRUE", "SA", "SA")) {
|
try (Connection conn = DriverManager.getConnection("jdbc:h2:~/data/testdb;AUTO_SERVER=TRUE;IGNORECASE=TRUE", "SA", "SA")) {
|
||||||
ResultSet rs = conn.createStatement().executeQuery("SELECT ID, OWNER FROM TASK");
|
ResultSet rs = conn.createStatement().executeQuery("SELECT ID, OWNER FROM TASK");
|
||||||
|
|
||||||
while (rs.next()) {
|
while (rs.next()) {
|
||||||
|
|
|
@ -3,7 +3,6 @@ package pro.taskana;
|
||||||
import java.time.Instant;
|
import java.time.Instant;
|
||||||
|
|
||||||
import pro.taskana.exceptions.InvalidArgumentException;
|
import pro.taskana.exceptions.InvalidArgumentException;
|
||||||
import pro.taskana.exceptions.InvalidRequestException;
|
|
||||||
import pro.taskana.model.WorkbasketAuthorization;
|
import pro.taskana.model.WorkbasketAuthorization;
|
||||||
import pro.taskana.model.WorkbasketType;
|
import pro.taskana.model.WorkbasketType;
|
||||||
|
|
||||||
|
@ -171,41 +170,21 @@ public interface WorkbasketQuery extends BaseQuery<WorkbasketSummary> {
|
||||||
/**
|
/**
|
||||||
* Sort the query result by name.
|
* Sort the query result by name.
|
||||||
*
|
*
|
||||||
|
* @param sortDirection
|
||||||
|
* Determines whether the result is sorted in ascending or descending order. If sortDirection is null,
|
||||||
|
* the result is sorted in ascending order
|
||||||
* @return the query
|
* @return the query
|
||||||
* @throws InvalidArgumentException
|
|
||||||
* when orderByName() has already been called.
|
|
||||||
* @throws InvalidRequestException
|
|
||||||
* when orderByName() has already been called.
|
|
||||||
*/
|
*/
|
||||||
WorkbasketQuery orderByName() throws InvalidArgumentException, InvalidRequestException;
|
WorkbasketQuery orderByName(SortDirection sortDirection);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sort the query result by key.
|
* Sort the query result by key.
|
||||||
*
|
*
|
||||||
|
* @param sortDirection
|
||||||
|
* Determines whether the result is sorted in ascending or descending order. If sortDirection is null,
|
||||||
|
* the result is sorted in ascending order
|
||||||
* @return the query
|
* @return the query
|
||||||
* @throws InvalidRequestException
|
|
||||||
* when orderByKey() has already been called.
|
|
||||||
*/
|
*/
|
||||||
WorkbasketQuery orderByKey() throws InvalidRequestException;
|
WorkbasketQuery orderByKey(SortDirection sortDirection);
|
||||||
|
|
||||||
/**
|
|
||||||
* Sort the query result in ascending order.
|
|
||||||
*
|
|
||||||
* @return the query
|
|
||||||
* @throws InvalidRequestException
|
|
||||||
* when neither orderByKey() nor orderByName has already been called previously or when ascending() or
|
|
||||||
* descending() has been called immediately before this call
|
|
||||||
*/
|
|
||||||
WorkbasketQuery ascending() throws InvalidRequestException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Sort the query result in descending order.
|
|
||||||
*
|
|
||||||
* @return the query
|
|
||||||
* @throws InvalidRequestException
|
|
||||||
* when neither orderByKey() nor orderByName has already been called previously or when ascending() or
|
|
||||||
* descending() has been called immediately before this call
|
|
||||||
*/
|
|
||||||
WorkbasketQuery descending() throws InvalidRequestException;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,7 +20,7 @@ public class TaskanaEngineConfiguration {
|
||||||
|
|
||||||
private static final String USER_NAME = "sa";
|
private static final String USER_NAME = "sa";
|
||||||
private static final String USER_PASSWORD = "sa";
|
private static final String USER_PASSWORD = "sa";
|
||||||
private static final String JDBC_H2_MEM_TASKANA = "jdbc:h2:mem:taskana";
|
private static final String JDBC_H2_MEM_TASKANA = "jdbc:h2:mem:taskana;IGNORECASE=TRUE";
|
||||||
private static final String H2_DRIVER = "org.h2.Driver";
|
private static final String H2_DRIVER = "org.h2.Driver";
|
||||||
protected DataSource dataSource;
|
protected DataSource dataSource;
|
||||||
protected DbSchemaCreator dbScriptRunner;
|
protected DbSchemaCreator dbScriptRunner;
|
||||||
|
@ -56,7 +56,7 @@ public class TaskanaEngineConfiguration {
|
||||||
|
|
||||||
public static DataSource createDefaultDataSource() {
|
public static DataSource createDefaultDataSource() {
|
||||||
LOGGER.warn("No datasource is provided. A inmemory db is used: "
|
LOGGER.warn("No datasource is provided. A inmemory db is used: "
|
||||||
+ "'org.h2.Driver', 'jdbc:h2:mem:taskana', 'sa', 'sa'");
|
+ "'org.h2.Driver', 'jdbc:h2:mem:taskana;IGNORECASE=TRUE', 'sa', 'sa'");
|
||||||
return createDatasource(H2_DRIVER, JDBC_H2_MEM_TASKANA, USER_NAME, USER_PASSWORD);
|
return createDatasource(H2_DRIVER, JDBC_H2_MEM_TASKANA, USER_NAME, USER_PASSWORD);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -458,169 +458,165 @@ public class TaskQueryImpl implements TaskQuery {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TaskQuery orderByClassificationKey(SortDirection sortDirection) {
|
public TaskQuery orderByClassificationKey(SortDirection sortDirection) {
|
||||||
return addOrderCriteria("CLASSIFICATION_KEY", true, sortDirection);
|
return addOrderCriteria("CLASSIFICATION_KEY", sortDirection);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TaskQuery orderByDomain(SortDirection sortDirection) {
|
public TaskQuery orderByDomain(SortDirection sortDirection) {
|
||||||
return addOrderCriteria("DOMAIN", true, sortDirection);
|
return addOrderCriteria("DOMAIN", sortDirection);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TaskQuery orderByPlanned(SortDirection sortDirection) {
|
public TaskQuery orderByPlanned(SortDirection sortDirection) {
|
||||||
return addOrderCriteria("PLANNED", false, sortDirection);
|
return addOrderCriteria("PLANNED", sortDirection);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TaskQuery orderByDue(SortDirection sortDirection) {
|
public TaskQuery orderByDue(SortDirection sortDirection) {
|
||||||
return addOrderCriteria("DUE", false, sortDirection);
|
return addOrderCriteria("DUE", sortDirection);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TaskQuery orderByModified(SortDirection sortDirection) {
|
public TaskQuery orderByModified(SortDirection sortDirection) {
|
||||||
return addOrderCriteria("MODIFIED", false, sortDirection);
|
return addOrderCriteria("MODIFIED", sortDirection);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TaskQuery orderByName(SortDirection sortDirection) {
|
public TaskQuery orderByName(SortDirection sortDirection) {
|
||||||
return addOrderCriteria("NAME", true, sortDirection);
|
return addOrderCriteria("NAME", sortDirection);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TaskQuery orderByOwner(SortDirection sortDirection) {
|
public TaskQuery orderByOwner(SortDirection sortDirection) {
|
||||||
return addOrderCriteria("OWNER", true, sortDirection);
|
return addOrderCriteria("OWNER", sortDirection);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TaskQuery orderByPrimaryObjectReferenceCompany(SortDirection sortDirection) {
|
public TaskQuery orderByPrimaryObjectReferenceCompany(SortDirection sortDirection) {
|
||||||
return addOrderCriteria("POR_COMPANY", true, sortDirection);
|
return addOrderCriteria("POR_COMPANY", sortDirection);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TaskQuery orderByPrimaryObjectReferenceSystem(SortDirection sortDirection) {
|
public TaskQuery orderByPrimaryObjectReferenceSystem(SortDirection sortDirection) {
|
||||||
return addOrderCriteria("POR_SYSTEM", true, sortDirection);
|
return addOrderCriteria("POR_SYSTEM", sortDirection);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TaskQuery orderByPrimaryObjectReferenceSystemInstance(SortDirection sortDirection) {
|
public TaskQuery orderByPrimaryObjectReferenceSystemInstance(SortDirection sortDirection) {
|
||||||
return addOrderCriteria("POR_INSTANCE", true, sortDirection);
|
return addOrderCriteria("POR_INSTANCE", sortDirection);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TaskQuery orderByPrimaryObjectReferenceType(SortDirection sortDirection) {
|
public TaskQuery orderByPrimaryObjectReferenceType(SortDirection sortDirection) {
|
||||||
return addOrderCriteria("POR_TYPE", true, sortDirection);
|
return addOrderCriteria("POR_TYPE", sortDirection);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TaskQuery orderByPrimaryObjectReferenceValue(SortDirection sortDirection) {
|
public TaskQuery orderByPrimaryObjectReferenceValue(SortDirection sortDirection) {
|
||||||
return addOrderCriteria("POR_VALUE", true, sortDirection);
|
return addOrderCriteria("POR_VALUE", sortDirection);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TaskQuery orderByPriority(SortDirection sortDirection) {
|
public TaskQuery orderByPriority(SortDirection sortDirection) {
|
||||||
return addOrderCriteria("PRIORITY", false, sortDirection);
|
return addOrderCriteria("PRIORITY", sortDirection);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TaskQuery orderByState(SortDirection sortDirection) {
|
public TaskQuery orderByState(SortDirection sortDirection) {
|
||||||
return addOrderCriteria("STATE", false, sortDirection);
|
return addOrderCriteria("STATE", sortDirection);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TaskQuery orderByWorkbasketKey(SortDirection sortDirection) {
|
public TaskQuery orderByWorkbasketKey(SortDirection sortDirection) {
|
||||||
return addOrderCriteria("WORKBASKET_KEY", true, sortDirection);
|
return addOrderCriteria("WORKBASKET_KEY", sortDirection);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TaskQuery orderByNote(SortDirection sortDirection) {
|
public TaskQuery orderByNote(SortDirection sortDirection) {
|
||||||
return addOrderCriteria("NOTE", true, sortDirection);
|
return addOrderCriteria("NOTE", sortDirection);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TaskQuery orderByCustom1(SortDirection sortDirection) {
|
public TaskQuery orderByCustom1(SortDirection sortDirection) {
|
||||||
return addOrderCriteria("CUSTOM_1", true, sortDirection);
|
return addOrderCriteria("CUSTOM_1", sortDirection);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TaskQuery orderByCustom2(SortDirection sortDirection) {
|
public TaskQuery orderByCustom2(SortDirection sortDirection) {
|
||||||
return addOrderCriteria("CUSTOM_2", true, sortDirection);
|
return addOrderCriteria("CUSTOM_2", sortDirection);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TaskQuery orderByCustom3(SortDirection sortDirection) {
|
public TaskQuery orderByCustom3(SortDirection sortDirection) {
|
||||||
return addOrderCriteria("CUSTOM_3", true, sortDirection);
|
return addOrderCriteria("CUSTOM_3", sortDirection);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TaskQuery orderByCustom4(SortDirection sortDirection) {
|
public TaskQuery orderByCustom4(SortDirection sortDirection) {
|
||||||
return addOrderCriteria("CUSTOM_4", true, sortDirection);
|
return addOrderCriteria("CUSTOM_4", sortDirection);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TaskQuery orderByCustom5(SortDirection sortDirection) {
|
public TaskQuery orderByCustom5(SortDirection sortDirection) {
|
||||||
return addOrderCriteria("CUSTOM_5", true, sortDirection);
|
return addOrderCriteria("CUSTOM_5", sortDirection);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TaskQuery orderByCustom6(SortDirection sortDirection) {
|
public TaskQuery orderByCustom6(SortDirection sortDirection) {
|
||||||
return addOrderCriteria("CUSTOM_6", true, sortDirection);
|
return addOrderCriteria("CUSTOM_6", sortDirection);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TaskQuery orderByCustom7(SortDirection sortDirection) {
|
public TaskQuery orderByCustom7(SortDirection sortDirection) {
|
||||||
return addOrderCriteria("CUSTOM_7", true, sortDirection);
|
return addOrderCriteria("CUSTOM_7", sortDirection);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TaskQuery orderByCustom8(SortDirection sortDirection) {
|
public TaskQuery orderByCustom8(SortDirection sortDirection) {
|
||||||
return addOrderCriteria("CUSTOM_8", true, sortDirection);
|
return addOrderCriteria("CUSTOM_8", sortDirection);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TaskQuery orderByCustom9(SortDirection sortDirection) {
|
public TaskQuery orderByCustom9(SortDirection sortDirection) {
|
||||||
return addOrderCriteria("CUSTOM_9", true, sortDirection);
|
return addOrderCriteria("CUSTOM_9", sortDirection);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TaskQuery orderByCustom10(SortDirection sortDirection) {
|
public TaskQuery orderByCustom10(SortDirection sortDirection) {
|
||||||
return addOrderCriteria("CUSTOM_10", true, sortDirection);
|
return addOrderCriteria("CUSTOM_10", sortDirection);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TaskQuery orderByBusinessProcessId(SortDirection sortDirection) {
|
public TaskQuery orderByBusinessProcessId(SortDirection sortDirection) {
|
||||||
return addOrderCriteria("BUSINESS_PROCESS_ID", true, sortDirection);
|
return addOrderCriteria("BUSINESS_PROCESS_ID", sortDirection);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TaskQuery orderByClaimed(SortDirection sortDirection) {
|
public TaskQuery orderByClaimed(SortDirection sortDirection) {
|
||||||
return addOrderCriteria("CLAIMED", false, sortDirection);
|
return addOrderCriteria("CLAIMED", sortDirection);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TaskQuery orderByCompleted(SortDirection sortDirection) {
|
public TaskQuery orderByCompleted(SortDirection sortDirection) {
|
||||||
return addOrderCriteria("COMPLETED", false, sortDirection);
|
return addOrderCriteria("COMPLETED", sortDirection);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TaskQuery orderByCreated(SortDirection sortDirection) {
|
public TaskQuery orderByCreated(SortDirection sortDirection) {
|
||||||
return addOrderCriteria("CREATED", false, sortDirection);
|
return addOrderCriteria("CREATED", sortDirection);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TaskQuery orderByParentBusinessProcessId(SortDirection sortDirection) {
|
public TaskQuery orderByParentBusinessProcessId(SortDirection sortDirection) {
|
||||||
return addOrderCriteria("PARENT_BUSINESS_PROCESS_ID", true, sortDirection);
|
return addOrderCriteria("PARENT_BUSINESS_PROCESS_ID", sortDirection);
|
||||||
}
|
}
|
||||||
|
|
||||||
private TaskQuery addOrderCriteria(String columnName, boolean useUpper, SortDirection sortDirection) {
|
private TaskQuery addOrderCriteria(String columnName, SortDirection sortDirection) {
|
||||||
String orderByDirection = " ASC";
|
String orderByDirection = " ASC";
|
||||||
if (sortDirection != null && SortDirection.DESCENDING.equals(sortDirection)) {
|
if (sortDirection != null && SortDirection.DESCENDING.equals(sortDirection)) {
|
||||||
orderByDirection = " DESC";
|
orderByDirection = " DESC";
|
||||||
}
|
}
|
||||||
if (useUpper) {
|
orderBy.add(columnName + orderByDirection);
|
||||||
orderBy.add("UPPER(" + columnName + ")" + orderByDirection);
|
|
||||||
} else {
|
|
||||||
orderBy.add(columnName + orderByDirection);
|
|
||||||
}
|
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package pro.taskana.impl;
|
package pro.taskana.impl;
|
||||||
|
|
||||||
import java.time.Instant;
|
import java.time.Instant;
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
@ -14,9 +15,7 @@ import pro.taskana.WorkbasketQuery;
|
||||||
import pro.taskana.WorkbasketSummary;
|
import pro.taskana.WorkbasketSummary;
|
||||||
import pro.taskana.configuration.TaskanaEngineConfiguration;
|
import pro.taskana.configuration.TaskanaEngineConfiguration;
|
||||||
import pro.taskana.exceptions.InvalidArgumentException;
|
import pro.taskana.exceptions.InvalidArgumentException;
|
||||||
import pro.taskana.exceptions.InvalidRequestException;
|
|
||||||
import pro.taskana.exceptions.NotAuthorizedException;
|
import pro.taskana.exceptions.NotAuthorizedException;
|
||||||
import pro.taskana.exceptions.SystemException;
|
|
||||||
import pro.taskana.exceptions.TaskanaRuntimeException;
|
import pro.taskana.exceptions.TaskanaRuntimeException;
|
||||||
import pro.taskana.impl.util.LoggerUtils;
|
import pro.taskana.impl.util.LoggerUtils;
|
||||||
import pro.taskana.model.WorkbasketAuthorization;
|
import pro.taskana.model.WorkbasketAuthorization;
|
||||||
|
@ -33,12 +32,6 @@ public class WorkbasketQueryImpl implements WorkbasketQuery {
|
||||||
private static final String LINK_TO_MAPPER = "pro.taskana.model.mappings.QueryMapper.queryWorkbasket";
|
private static final String LINK_TO_MAPPER = "pro.taskana.model.mappings.QueryMapper.queryWorkbasket";
|
||||||
private static final String LINK_TO_COUNTER = "pro.taskana.model.mappings.QueryMapper.countQueryWorkbaskets";
|
private static final String LINK_TO_COUNTER = "pro.taskana.model.mappings.QueryMapper.countQueryWorkbaskets";
|
||||||
private static final Logger LOGGER = LoggerFactory.getLogger(WorkbasketQueryImpl.class);
|
private static final Logger LOGGER = LoggerFactory.getLogger(WorkbasketQueryImpl.class);
|
||||||
private static final String KEY_COL_NAME = "KEY";
|
|
||||||
private static final String NAME_COL_NAME = "NAME";
|
|
||||||
private static final String ASCENDING = " ASC";
|
|
||||||
private static final String DESCENDING = " DESC";
|
|
||||||
private static final String ORDER_BY = "ORDER BY ";
|
|
||||||
|
|
||||||
private String[] accessId;
|
private String[] accessId;
|
||||||
private WorkbasketAuthorization authorization;
|
private WorkbasketAuthorization authorization;
|
||||||
private String[] nameIn;
|
private String[] nameIn;
|
||||||
|
@ -54,12 +47,12 @@ public class WorkbasketQueryImpl implements WorkbasketQuery {
|
||||||
private Instant modifiedBefore;
|
private Instant modifiedBefore;
|
||||||
private String descriptionLike;
|
private String descriptionLike;
|
||||||
private String[] owner;
|
private String[] owner;
|
||||||
private String orderClause;
|
|
||||||
private TaskanaEngineImpl taskanaEngineImpl;
|
private TaskanaEngineImpl taskanaEngineImpl;
|
||||||
|
private List<String> orderBy;
|
||||||
|
|
||||||
public WorkbasketQueryImpl(TaskanaEngine taskanaEngine) {
|
public WorkbasketQueryImpl(TaskanaEngine taskanaEngine) {
|
||||||
this.taskanaEngineImpl = (TaskanaEngineImpl) taskanaEngine;
|
this.taskanaEngineImpl = (TaskanaEngineImpl) taskanaEngine;
|
||||||
orderClause = "";
|
orderBy = new ArrayList<>();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -141,70 +134,13 @@ public class WorkbasketQueryImpl implements WorkbasketQuery {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public WorkbasketQuery orderByName() throws InvalidRequestException {
|
public WorkbasketQuery orderByName(SortDirection sortDirection) {
|
||||||
if (orderClause.contains(NAME_COL_NAME)) {
|
return addOrderCriteria("NAME", sortDirection);
|
||||||
throw new InvalidRequestException("orderByName() has already been called");
|
|
||||||
}
|
|
||||||
if (orderClause.isEmpty()) {
|
|
||||||
orderClause = ORDER_BY + NAME_COL_NAME;
|
|
||||||
} else if (orderClause.contains(ORDER_BY)) {
|
|
||||||
orderClause += ", " + NAME_COL_NAME;
|
|
||||||
} else {
|
|
||||||
throw new SystemException("orderByName() was called, but orderClause is unexpectedly: " + orderClause);
|
|
||||||
}
|
|
||||||
|
|
||||||
return this;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public WorkbasketQuery orderByKey() throws InvalidRequestException {
|
public WorkbasketQuery orderByKey(SortDirection sortDirection) {
|
||||||
if (orderClause.contains(KEY_COL_NAME)) {
|
return addOrderCriteria("KEY", sortDirection);
|
||||||
throw new InvalidRequestException("orderByKey() has already been called");
|
|
||||||
}
|
|
||||||
if (orderClause.isEmpty()) {
|
|
||||||
orderClause = ORDER_BY + KEY_COL_NAME;
|
|
||||||
} else if (orderClause.contains(ORDER_BY)) {
|
|
||||||
orderClause += ", " + KEY_COL_NAME;
|
|
||||||
} else {
|
|
||||||
throw new SystemException("orderByKey() was called, but orderClause is unexpectedly: " + orderClause);
|
|
||||||
}
|
|
||||||
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public WorkbasketQuery ascending() throws InvalidRequestException {
|
|
||||||
if (!orderClause.startsWith(ORDER_BY)) {
|
|
||||||
throw new InvalidRequestException(
|
|
||||||
"ascending() has been called before orderByKey() or orderByName() was called");
|
|
||||||
}
|
|
||||||
if (orderClause.endsWith(KEY_COL_NAME) || orderClause.endsWith(NAME_COL_NAME)) {
|
|
||||||
orderClause += ASCENDING;
|
|
||||||
} else if (orderClause.endsWith(ASCENDING) || orderClause.endsWith(DESCENDING)) {
|
|
||||||
throw new InvalidRequestException(
|
|
||||||
"ascending() has been called immediately after ascending() or descending()");
|
|
||||||
} else {
|
|
||||||
throw new SystemException("ascending() was called, but orderClause is unexpectedly: " + orderClause);
|
|
||||||
}
|
|
||||||
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public WorkbasketQuery descending() throws InvalidRequestException {
|
|
||||||
if (!orderClause.startsWith(ORDER_BY)) {
|
|
||||||
throw new InvalidRequestException(
|
|
||||||
"descending() has been called before orderByKey or orderByName was called");
|
|
||||||
}
|
|
||||||
if (orderClause.endsWith(KEY_COL_NAME) || orderClause.endsWith(NAME_COL_NAME)) {
|
|
||||||
orderClause += DESCENDING;
|
|
||||||
} else if (orderClause.endsWith(ASCENDING) || orderClause.endsWith(DESCENDING)) {
|
|
||||||
throw new InvalidRequestException(
|
|
||||||
"descending() has been called immediately after ascending() or descending()");
|
|
||||||
} else {
|
|
||||||
throw new SystemException("descending() was called, but orderClause is unexpectedly: " + orderClause);
|
|
||||||
}
|
|
||||||
return this;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -370,8 +306,8 @@ public class WorkbasketQueryImpl implements WorkbasketQuery {
|
||||||
return owner;
|
return owner;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getOrderClause() {
|
public List<String> getOrderBy() {
|
||||||
return orderClause;
|
return orderBy;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -446,4 +382,13 @@ public class WorkbasketQueryImpl implements WorkbasketQuery {
|
||||||
return target;
|
return target;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private WorkbasketQuery addOrderCriteria(String colName, SortDirection sortDirection) {
|
||||||
|
String orderByDirection = " ASC";
|
||||||
|
if (sortDirection != null && SortDirection.DESCENDING.equals(sortDirection)) {
|
||||||
|
orderByDirection = " DESC";
|
||||||
|
}
|
||||||
|
orderBy.add(colName + orderByDirection);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -153,7 +153,8 @@ public interface QueryMapper {
|
||||||
@Result(property = "value", column = "VALUE")})
|
@Result(property = "value", column = "VALUE")})
|
||||||
List<ObjectReference> queryObjectReference(ObjectReferenceQueryImpl objectReference);
|
List<ObjectReference> queryObjectReference(ObjectReferenceQueryImpl objectReference);
|
||||||
|
|
||||||
@Select("<script>SELECT DISTINCT w.ID, w.KEY, w.NAME, w.DOMAIN, W.TYPE, w.DESCRIPTION, w.OWNER, w.ORG_LEVEL_1, w.ORG_LEVEL_2, w.ORG_LEVEL_3, w.ORG_LEVEL_4 from WORKBASKET w "
|
@Select("<script>"
|
||||||
|
+ "SELECT DISTINCT w.ID, w.KEY, w.NAME, w.DOMAIN, W.TYPE, w.DESCRIPTION, w.OWNER, w.ORG_LEVEL_1, w.ORG_LEVEL_2, w.ORG_LEVEL_3, w.ORG_LEVEL_4 from WORKBASKET w "
|
||||||
+ "<if test='accessId != null'>LEFT OUTER JOIN WORKBASKET_ACCESS_LIST a on w.KEY = a.WORKBASKET_KEY</if> "
|
+ "<if test='accessId != null'>LEFT OUTER JOIN WORKBASKET_ACCESS_LIST a on w.KEY = a.WORKBASKET_KEY</if> "
|
||||||
+ "<where>"
|
+ "<where>"
|
||||||
+ "<if test='owner != null'>AND w.OWNER IN(<foreach item='item' collection='owner' separator=',' >#{item}</foreach>)</if> "
|
+ "<if test='owner != null'>AND w.OWNER IN(<foreach item='item' collection='owner' separator=',' >#{item}</foreach>)</if> "
|
||||||
|
@ -190,7 +191,7 @@ public interface QueryMapper {
|
||||||
+ "<if test=\"authorization.name().equals('CUSTOM_12')\">PERM_CUSTOM_12</if> = 1 "
|
+ "<if test=\"authorization.name().equals('CUSTOM_12')\">PERM_CUSTOM_12</if> = 1 "
|
||||||
+ "</if>"
|
+ "</if>"
|
||||||
+ "</where>"
|
+ "</where>"
|
||||||
+ "<if test='!orderClause.isEmpty()'> ${orderClause}</if> "
|
+ "<if test='!orderBy.isEmpty()'>ORDER BY <foreach item='orderItem' collection='orderBy' separator=',' >${orderItem}</foreach></if> "
|
||||||
+ "</script>")
|
+ "</script>")
|
||||||
@Results({
|
@Results({
|
||||||
@Result(property = "id", column = "ID"),
|
@Result(property = "id", column = "ID"),
|
||||||
|
|
|
@ -1,7 +1,5 @@
|
||||||
package acceptance.workbasket;
|
package acceptance.workbasket;
|
||||||
|
|
||||||
import static org.junit.Assert.fail;
|
|
||||||
|
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
@ -12,6 +10,7 @@ import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
|
|
||||||
import acceptance.AbstractAccTest;
|
import acceptance.AbstractAccTest;
|
||||||
|
import pro.taskana.BaseQuery.SortDirection;
|
||||||
import pro.taskana.WorkbasketService;
|
import pro.taskana.WorkbasketService;
|
||||||
import pro.taskana.WorkbasketSummary;
|
import pro.taskana.WorkbasketSummary;
|
||||||
import pro.taskana.exceptions.InvalidArgumentException;
|
import pro.taskana.exceptions.InvalidArgumentException;
|
||||||
|
@ -26,6 +25,9 @@ import pro.taskana.security.JAASRunner;
|
||||||
@RunWith(JAASRunner.class)
|
@RunWith(JAASRunner.class)
|
||||||
public class QueryWorkbasketAccTest extends AbstractAccTest {
|
public class QueryWorkbasketAccTest extends AbstractAccTest {
|
||||||
|
|
||||||
|
private static SortDirection asc = SortDirection.ASCENDING;
|
||||||
|
private static SortDirection desc = SortDirection.DESCENDING;
|
||||||
|
|
||||||
public QueryWorkbasketAccTest() {
|
public QueryWorkbasketAccTest() {
|
||||||
super();
|
super();
|
||||||
}
|
}
|
||||||
|
@ -163,11 +165,21 @@ public class QueryWorkbasketAccTest extends AbstractAccTest {
|
||||||
WorkbasketService workbasketService = taskanaEngine.getWorkbasketService();
|
WorkbasketService workbasketService = taskanaEngine.getWorkbasketService();
|
||||||
List<WorkbasketSummary> results = workbasketService.createWorkbasketQuery()
|
List<WorkbasketSummary> results = workbasketService.createWorkbasketQuery()
|
||||||
.nameLike("%Gruppenpostkorb KSC%")
|
.nameLike("%Gruppenpostkorb KSC%")
|
||||||
.orderByName()
|
.orderByName(asc)
|
||||||
.ascending()
|
|
||||||
.list();
|
.list();
|
||||||
Assert.assertEquals(6L, results.size());
|
Assert.assertEquals(6L, results.size());
|
||||||
Assert.assertEquals("GPK_KSC", results.get(0).getKey());
|
Assert.assertEquals("GPK_KSC", results.get(0).getKey());
|
||||||
|
|
||||||
|
// check sort order is correct
|
||||||
|
WorkbasketSummary previousSummary = null;
|
||||||
|
for (WorkbasketSummary wbSummary : results) {
|
||||||
|
if (previousSummary != null) {
|
||||||
|
Assert.assertTrue(wbSummary.getName().compareToIgnoreCase(
|
||||||
|
previousSummary.getName()) >= 0);
|
||||||
|
}
|
||||||
|
previousSummary = wbSummary;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -175,12 +187,19 @@ public class QueryWorkbasketAccTest extends AbstractAccTest {
|
||||||
throws SQLException, NotAuthorizedException, InvalidRequestException, InvalidArgumentException {
|
throws SQLException, NotAuthorizedException, InvalidRequestException, InvalidArgumentException {
|
||||||
WorkbasketService workbasketService = taskanaEngine.getWorkbasketService();
|
WorkbasketService workbasketService = taskanaEngine.getWorkbasketService();
|
||||||
List<WorkbasketSummary> results = workbasketService.createWorkbasketQuery()
|
List<WorkbasketSummary> results = workbasketService.createWorkbasketQuery()
|
||||||
.nameLike("%Gruppenpostkorb KSC%")
|
.nameLike("basxet%")
|
||||||
.orderByName()
|
.orderByName(desc)
|
||||||
.descending()
|
|
||||||
.list();
|
.list();
|
||||||
Assert.assertEquals(6L, results.size());
|
Assert.assertEquals(10L, results.size());
|
||||||
Assert.assertEquals("GPK_B_KSC_2", results.get(0).getKey());
|
// check sort order is correct
|
||||||
|
WorkbasketSummary previousSummary = null;
|
||||||
|
for (WorkbasketSummary wbSummary : results) {
|
||||||
|
if (previousSummary != null) {
|
||||||
|
Assert.assertTrue(wbSummary.getName().compareToIgnoreCase(
|
||||||
|
previousSummary.getName()) <= 0);
|
||||||
|
}
|
||||||
|
previousSummary = wbSummary;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -188,12 +207,19 @@ public class QueryWorkbasketAccTest extends AbstractAccTest {
|
||||||
throws SQLException, NotAuthorizedException, InvalidArgumentException, InvalidRequestException {
|
throws SQLException, NotAuthorizedException, InvalidArgumentException, InvalidRequestException {
|
||||||
WorkbasketService workbasketService = taskanaEngine.getWorkbasketService();
|
WorkbasketService workbasketService = taskanaEngine.getWorkbasketService();
|
||||||
List<WorkbasketSummary> results = workbasketService.createWorkbasketQuery()
|
List<WorkbasketSummary> results = workbasketService.createWorkbasketQuery()
|
||||||
.nameLike("%Gruppenpostkorb KSC%")
|
.nameLike("basxet%")
|
||||||
.orderByKey()
|
.orderByKey(asc)
|
||||||
.ascending()
|
|
||||||
.list();
|
.list();
|
||||||
Assert.assertEquals(6L, results.size());
|
Assert.assertEquals(10L, results.size());
|
||||||
Assert.assertEquals("GPK_B_KSC", results.get(0).getKey());
|
// check sort order is correct
|
||||||
|
WorkbasketSummary previousSummary = null;
|
||||||
|
for (WorkbasketSummary wbSummary : results) {
|
||||||
|
if (previousSummary != null) {
|
||||||
|
Assert.assertTrue(wbSummary.getKey().compareToIgnoreCase(
|
||||||
|
previousSummary.getKey()) >= 0);
|
||||||
|
}
|
||||||
|
previousSummary = wbSummary;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -201,108 +227,19 @@ public class QueryWorkbasketAccTest extends AbstractAccTest {
|
||||||
throws SQLException, NotAuthorizedException, InvalidArgumentException, InvalidRequestException {
|
throws SQLException, NotAuthorizedException, InvalidArgumentException, InvalidRequestException {
|
||||||
WorkbasketService workbasketService = taskanaEngine.getWorkbasketService();
|
WorkbasketService workbasketService = taskanaEngine.getWorkbasketService();
|
||||||
List<WorkbasketSummary> results = workbasketService.createWorkbasketQuery()
|
List<WorkbasketSummary> results = workbasketService.createWorkbasketQuery()
|
||||||
.nameLike("%Gruppenpostkorb KSC%")
|
.nameLike("basxet%")
|
||||||
.orderByKey()
|
.orderByKey(desc)
|
||||||
.descending()
|
|
||||||
.list();
|
.list();
|
||||||
Assert.assertEquals(6L, results.size());
|
Assert.assertEquals(10L, results.size());
|
||||||
Assert.assertEquals("GPK_KSC_2", results.get(0).getKey());
|
// check sort order is correct
|
||||||
}
|
WorkbasketSummary previousSummary = null;
|
||||||
|
for (WorkbasketSummary wbSummary : results) {
|
||||||
@Test
|
if (previousSummary != null) {
|
||||||
public void testQuerySortingWithInvalidInput()
|
Assert.assertTrue(wbSummary.getKey().compareToIgnoreCase(
|
||||||
throws SQLException, NotAuthorizedException, InvalidArgumentException {
|
previousSummary.getKey()) <= 0);
|
||||||
WorkbasketService workbasketService = taskanaEngine.getWorkbasketService();
|
}
|
||||||
|
previousSummary = wbSummary;
|
||||||
try {
|
|
||||||
workbasketService.createWorkbasketQuery()
|
|
||||||
.nameLike("%Gruppenpostkorb KSC%")
|
|
||||||
.orderByName()
|
|
||||||
.orderByName()
|
|
||||||
.list();
|
|
||||||
fail("WorkbasketQuery should have thrown InvalidRequestException.");
|
|
||||||
} catch (InvalidRequestException ignored) {
|
|
||||||
// nothing to do
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
workbasketService.createWorkbasketQuery()
|
|
||||||
.nameLike("%Gruppenpostkorb KSC%")
|
|
||||||
.orderByKey()
|
|
||||||
.orderByKey()
|
|
||||||
.list();
|
|
||||||
fail("WorkbasketQuery should have thrown InvalidRequestException.");
|
|
||||||
} catch (InvalidRequestException ignored) {
|
|
||||||
// nothing to do
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
workbasketService.createWorkbasketQuery()
|
|
||||||
.nameLike("%Gruppenpostkorb KSC%")
|
|
||||||
.ascending()
|
|
||||||
.orderByName()
|
|
||||||
.list();
|
|
||||||
fail("WorkbasketQuery should have thrown InvalidRequestException.");
|
|
||||||
} catch (InvalidRequestException ignored) {
|
|
||||||
// nothing to do
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
workbasketService.createWorkbasketQuery()
|
|
||||||
.nameLike("%Gruppenpostkorb KSC%")
|
|
||||||
.descending()
|
|
||||||
.orderByName()
|
|
||||||
.list();
|
|
||||||
fail("WorkbasketQuery should have thrown InvalidRequestException.");
|
|
||||||
} catch (InvalidRequestException ignored) {
|
|
||||||
// nothing to do
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
workbasketService.createWorkbasketQuery()
|
|
||||||
.nameLike("%Gruppenpostkorb KSC%")
|
|
||||||
.orderByName()
|
|
||||||
.ascending()
|
|
||||||
.ascending();
|
|
||||||
|
|
||||||
fail("WorkbasketQuery should have thrown InvalidRequestException.");
|
|
||||||
} catch (InvalidRequestException ignored) {
|
|
||||||
// nothing to do
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
workbasketService.createWorkbasketQuery()
|
|
||||||
.nameLike("%Gruppenpostkorb KSC%")
|
|
||||||
.orderByName()
|
|
||||||
.ascending()
|
|
||||||
.descending()
|
|
||||||
.list();
|
|
||||||
fail("WorkbasketQuery should have thrown InvalidRequestException.");
|
|
||||||
} catch (InvalidRequestException ignored) {
|
|
||||||
// nothing to do
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
workbasketService.createWorkbasketQuery()
|
|
||||||
.nameLike("%Gruppenpostkorb KSC%")
|
|
||||||
.orderByName()
|
|
||||||
.descending()
|
|
||||||
.ascending()
|
|
||||||
.list();
|
|
||||||
fail("WorkbasketQuery should have thrown InvalidRequestException.");
|
|
||||||
} catch (InvalidRequestException ignored) {
|
|
||||||
// nothing to do
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
workbasketService.createWorkbasketQuery()
|
|
||||||
.nameLike("%Gruppenpostkorb KSC%")
|
|
||||||
.orderByName()
|
|
||||||
.orderByName()
|
|
||||||
.list();
|
|
||||||
fail("WorkbasketQuery should have thrown InvalidRequestException.");
|
|
||||||
} catch (InvalidRequestException ignored) {
|
|
||||||
// nothing to do
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,6 +10,7 @@ import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
|
|
||||||
import acceptance.AbstractAccTest;
|
import acceptance.AbstractAccTest;
|
||||||
|
import pro.taskana.BaseQuery.SortDirection;
|
||||||
import pro.taskana.WorkbasketService;
|
import pro.taskana.WorkbasketService;
|
||||||
import pro.taskana.WorkbasketSummary;
|
import pro.taskana.WorkbasketSummary;
|
||||||
import pro.taskana.exceptions.InvalidArgumentException;
|
import pro.taskana.exceptions.InvalidArgumentException;
|
||||||
|
@ -26,6 +27,9 @@ import pro.taskana.security.WithAccessId;
|
||||||
@RunWith(JAASRunner.class)
|
@RunWith(JAASRunner.class)
|
||||||
public class QueryWorkbasketByPermissionAccTest extends AbstractAccTest {
|
public class QueryWorkbasketByPermissionAccTest extends AbstractAccTest {
|
||||||
|
|
||||||
|
private static SortDirection asc = SortDirection.ASCENDING;
|
||||||
|
private static SortDirection desc = SortDirection.DESCENDING;
|
||||||
|
|
||||||
public QueryWorkbasketByPermissionAccTest() {
|
public QueryWorkbasketByPermissionAccTest() {
|
||||||
super();
|
super();
|
||||||
}
|
}
|
||||||
|
@ -58,8 +62,7 @@ public class QueryWorkbasketByPermissionAccTest extends AbstractAccTest {
|
||||||
WorkbasketService workbasketService = taskanaEngine.getWorkbasketService();
|
WorkbasketService workbasketService = taskanaEngine.getWorkbasketService();
|
||||||
List<WorkbasketSummary> results = workbasketService.createWorkbasketQuery()
|
List<WorkbasketSummary> results = workbasketService.createWorkbasketQuery()
|
||||||
.accessIdsHavePermission(WorkbasketAuthorization.APPEND, "user_1_1", "group_1")
|
.accessIdsHavePermission(WorkbasketAuthorization.APPEND, "user_1_1", "group_1")
|
||||||
.orderByName()
|
.orderByName(asc)
|
||||||
.ascending()
|
|
||||||
.list();
|
.list();
|
||||||
Assert.assertEquals(9, results.size());
|
Assert.assertEquals(9, results.size());
|
||||||
Assert.assertEquals("key4", results.get(0).getKey());
|
Assert.assertEquals("key4", results.get(0).getKey());
|
||||||
|
@ -72,10 +75,8 @@ public class QueryWorkbasketByPermissionAccTest extends AbstractAccTest {
|
||||||
WorkbasketService workbasketService = taskanaEngine.getWorkbasketService();
|
WorkbasketService workbasketService = taskanaEngine.getWorkbasketService();
|
||||||
List<WorkbasketSummary> results = workbasketService.createWorkbasketQuery()
|
List<WorkbasketSummary> results = workbasketService.createWorkbasketQuery()
|
||||||
.accessIdsHavePermission(WorkbasketAuthorization.APPEND, "user_1_1", "group_1")
|
.accessIdsHavePermission(WorkbasketAuthorization.APPEND, "user_1_1", "group_1")
|
||||||
.orderByName()
|
.orderByName(desc)
|
||||||
.descending()
|
.orderByKey(asc)
|
||||||
.orderByKey()
|
|
||||||
.ascending()
|
|
||||||
.list();
|
.list();
|
||||||
Assert.assertEquals(9, results.size());
|
Assert.assertEquals(9, results.size());
|
||||||
Assert.assertEquals("USER_2_2", results.get(0).getKey());
|
Assert.assertEquals("USER_2_2", results.get(0).getKey());
|
||||||
|
|
|
@ -12,6 +12,7 @@ import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
|
|
||||||
import acceptance.AbstractAccTest;
|
import acceptance.AbstractAccTest;
|
||||||
|
import pro.taskana.BaseQuery.SortDirection;
|
||||||
import pro.taskana.WorkbasketService;
|
import pro.taskana.WorkbasketService;
|
||||||
import pro.taskana.WorkbasketSummary;
|
import pro.taskana.WorkbasketSummary;
|
||||||
import pro.taskana.exceptions.InvalidRequestException;
|
import pro.taskana.exceptions.InvalidRequestException;
|
||||||
|
@ -24,6 +25,9 @@ import pro.taskana.security.JAASRunner;
|
||||||
@RunWith(JAASRunner.class)
|
@RunWith(JAASRunner.class)
|
||||||
public class WorkbasketQueryWithOrderedPaginationAccTest extends AbstractAccTest {
|
public class WorkbasketQueryWithOrderedPaginationAccTest extends AbstractAccTest {
|
||||||
|
|
||||||
|
private static SortDirection asc = SortDirection.ASCENDING;
|
||||||
|
private static SortDirection desc = SortDirection.DESCENDING;
|
||||||
|
|
||||||
public WorkbasketQueryWithOrderedPaginationAccTest() {
|
public WorkbasketQueryWithOrderedPaginationAccTest() {
|
||||||
super();
|
super();
|
||||||
}
|
}
|
||||||
|
@ -35,8 +39,7 @@ public class WorkbasketQueryWithOrderedPaginationAccTest extends AbstractAccTest
|
||||||
WorkbasketService workbasketService = taskanaEngine.getWorkbasketService();
|
WorkbasketService workbasketService = taskanaEngine.getWorkbasketService();
|
||||||
List<WorkbasketSummary> results = workbasketService.createWorkbasketQuery()
|
List<WorkbasketSummary> results = workbasketService.createWorkbasketQuery()
|
||||||
.domainIn("DOMAIN_A")
|
.domainIn("DOMAIN_A")
|
||||||
.orderByKey()
|
.orderByKey(asc)
|
||||||
.ascending()
|
|
||||||
.list(0, 5);
|
.list(0, 5);
|
||||||
assertThat(results.size(), equalTo(5));
|
assertThat(results.size(), equalTo(5));
|
||||||
assertThat(results.get(0).getKey(), equalTo("GPK_KSC"));
|
assertThat(results.get(0).getKey(), equalTo("GPK_KSC"));
|
||||||
|
@ -44,8 +47,7 @@ public class WorkbasketQueryWithOrderedPaginationAccTest extends AbstractAccTest
|
||||||
|
|
||||||
results = workbasketService.createWorkbasketQuery()
|
results = workbasketService.createWorkbasketQuery()
|
||||||
.domainIn("DOMAIN_A")
|
.domainIn("DOMAIN_A")
|
||||||
.orderByKey()
|
.orderByKey(desc)
|
||||||
.descending()
|
|
||||||
.list(0, 5);
|
.list(0, 5);
|
||||||
assertThat(results.size(), equalTo(5));
|
assertThat(results.size(), equalTo(5));
|
||||||
assertThat(results.get(0).getKey(), equalTo("USER_2_2"));
|
assertThat(results.get(0).getKey(), equalTo("USER_2_2"));
|
||||||
|
@ -59,8 +61,7 @@ public class WorkbasketQueryWithOrderedPaginationAccTest extends AbstractAccTest
|
||||||
WorkbasketService workbasketService = taskanaEngine.getWorkbasketService();
|
WorkbasketService workbasketService = taskanaEngine.getWorkbasketService();
|
||||||
List<WorkbasketSummary> results = workbasketService.createWorkbasketQuery()
|
List<WorkbasketSummary> results = workbasketService.createWorkbasketQuery()
|
||||||
.domainIn("DOMAIN_A")
|
.domainIn("DOMAIN_A")
|
||||||
.orderByKey()
|
.orderByKey(asc)
|
||||||
.ascending()
|
|
||||||
.list(5, 5);
|
.list(5, 5);
|
||||||
assertThat(results.size(), equalTo(5));
|
assertThat(results.size(), equalTo(5));
|
||||||
assertThat(results.get(0).getKey(), equalTo("key3"));
|
assertThat(results.get(0).getKey(), equalTo("key3"));
|
||||||
|
@ -68,8 +69,7 @@ public class WorkbasketQueryWithOrderedPaginationAccTest extends AbstractAccTest
|
||||||
|
|
||||||
results = workbasketService.createWorkbasketQuery()
|
results = workbasketService.createWorkbasketQuery()
|
||||||
.domainIn("DOMAIN_A")
|
.domainIn("DOMAIN_A")
|
||||||
.orderByKey()
|
.orderByKey(desc)
|
||||||
.descending()
|
|
||||||
.list(5, 5);
|
.list(5, 5);
|
||||||
assertThat(results.size(), equalTo(5));
|
assertThat(results.size(), equalTo(5));
|
||||||
assertThat(results.get(0).getKey(), equalTo("TEAMLEAD_1"));
|
assertThat(results.get(0).getKey(), equalTo("TEAMLEAD_1"));
|
||||||
|
|
|
@ -19,11 +19,14 @@ import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import pro.taskana.TaskanaEngine;
|
import pro.taskana.TaskanaEngine;
|
||||||
import pro.taskana.configuration.TaskanaEngineConfiguration;
|
import pro.taskana.configuration.TaskanaEngineConfiguration;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Integration Test for TaskanaEngineConfiguration.
|
* Integration Test for TaskanaEngineConfiguration.
|
||||||
|
*
|
||||||
* @author EH
|
* @author EH
|
||||||
*/
|
*/
|
||||||
public class TaskanaEngineConfigurationTest {
|
public class TaskanaEngineConfigurationTest {
|
||||||
|
|
||||||
private static DataSource dataSource = null;
|
private static DataSource dataSource = null;
|
||||||
private static final Logger LOGGER = LoggerFactory.getLogger(TaskanaEngineConfigurationTest.class);
|
private static final Logger LOGGER = LoggerFactory.getLogger(TaskanaEngineConfigurationTest.class);
|
||||||
private static final int POOL_TIME_TO_WAIT = 50;
|
private static final int POOL_TIME_TO_WAIT = 50;
|
||||||
|
@ -39,23 +42,23 @@ public class TaskanaEngineConfigurationTest {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* returns the Datasource used for Junit test.
|
* returns the Datasource used for Junit test. If the file {user.home}/taskanaUnitTest.properties is present, the
|
||||||
* If the file {user.home}/taskanaUnitTest.properties is present, the Datasource is created according to the
|
* Datasource is created according to the properties jdbcDriver, jdbcUrl, dbUserName and dbPassword. Assuming, the
|
||||||
* properties jdbcDriver, jdbcUrl, dbUserName and dbPassword.
|
* database has the name tskdb, a sample properties file for DB2 looks as follows:
|
||||||
* Assuming, the database has the name tskdb, a sample properties file for DB2 looks as follows:
|
|
||||||
*
|
*
|
||||||
* jdbcDriver=com.ibm.db2.jcc.DB2Driver
|
* jdbcDriver=com.ibm.db2.jcc.DB2Driver
|
||||||
* jdbcUrl=jdbc:db2://localhost:50000/tskdb
|
* jdbcUrl=jdbc:db2://localhost:50000/tskdb
|
||||||
* dbUserName=db2user
|
* dbUserName=db2user
|
||||||
* dbPassword=db2password
|
* dbPassword=db2password
|
||||||
*
|
*
|
||||||
* If any of these properties is missing, or the file doesn't exist, the default Datasource for h2 in-memory db is created.
|
* If any of these properties is missing, or the file doesn't exist, the default Datasource
|
||||||
|
* for h2 in-memory db is created.
|
||||||
*
|
*
|
||||||
* @return dataSource for unit test
|
* @return dataSource for unit test
|
||||||
*/
|
*/
|
||||||
public static DataSource getDataSource() {
|
public static DataSource getDataSource() {
|
||||||
if (dataSource == null) {
|
if (dataSource == null) {
|
||||||
String userHomeDirectroy = System.getProperty("user.home");
|
String userHomeDirectroy = System.getProperty("user.home");
|
||||||
String propertiesFileName = userHomeDirectroy + "/taskanaUnitTest.properties";
|
String propertiesFileName = userHomeDirectroy + "/taskanaUnitTest.properties";
|
||||||
File f = new File(propertiesFileName);
|
File f = new File(propertiesFileName);
|
||||||
if (f.exists() && !f.isDirectory()) {
|
if (f.exists() && !f.isDirectory()) {
|
||||||
|
@ -69,20 +72,21 @@ public class TaskanaEngineConfigurationTest {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* create Default Datasource for in-memory database.
|
* create Default Datasource for in-memory database.
|
||||||
|
*
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
private static DataSource createDefaultDataSource() {
|
private static DataSource createDefaultDataSource() {
|
||||||
// JdbcDataSource ds = new JdbcDataSource();
|
// JdbcDataSource ds = new JdbcDataSource();
|
||||||
// ds.setURL("jdbc:h2:mem:taskana");
|
// ds.setURL("jdbc:h2:mem:taskana;IGNORECASE=TRUE");
|
||||||
// ds.setPassword("sa");
|
// ds.setPassword("sa");
|
||||||
// ds.setUser("sa");
|
// ds.setUser("sa");
|
||||||
|
|
||||||
String jdbcDriver = "org.h2.Driver";
|
String jdbcDriver = "org.h2.Driver";
|
||||||
String jdbcUrl = "jdbc:h2:mem:taskana";
|
String jdbcUrl = "jdbc:h2:mem:taskana;IGNORECASE=TRUE";
|
||||||
String dbUserName = "sa";
|
String dbUserName = "sa";
|
||||||
String dbPassword = "sa";
|
String dbPassword = "sa";
|
||||||
DataSource ds = new PooledDataSource(Thread.currentThread().getContextClassLoader(), jdbcDriver,
|
DataSource ds = new PooledDataSource(Thread.currentThread().getContextClassLoader(), jdbcDriver,
|
||||||
jdbcUrl, dbUserName, dbPassword);
|
jdbcUrl, dbUserName, dbPassword);
|
||||||
((PooledDataSource) ds).setPoolTimeToWait(POOL_TIME_TO_WAIT);
|
((PooledDataSource) ds).setPoolTimeToWait(POOL_TIME_TO_WAIT);
|
||||||
((PooledDataSource) ds).forceCloseAll(); // otherwise the MyBatis pool is not initialized correctly
|
((PooledDataSource) ds).forceCloseAll(); // otherwise the MyBatis pool is not initialized correctly
|
||||||
|
|
||||||
|
@ -91,6 +95,7 @@ public class TaskanaEngineConfigurationTest {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* create data source from properties file.
|
* create data source from properties file.
|
||||||
|
*
|
||||||
* @param propertiesFileName
|
* @param propertiesFileName
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
|
@ -101,22 +106,22 @@ public class TaskanaEngineConfigurationTest {
|
||||||
prop.load(input);
|
prop.load(input);
|
||||||
boolean propertiesFileIsComplete = true;
|
boolean propertiesFileIsComplete = true;
|
||||||
String warningMessage = "";
|
String warningMessage = "";
|
||||||
String jdbcDriver = prop.getProperty("jdbcDriver");
|
String jdbcDriver = prop.getProperty("jdbcDriver");
|
||||||
if (jdbcDriver == null || jdbcDriver.length() == 0) {
|
if (jdbcDriver == null || jdbcDriver.length() == 0) {
|
||||||
propertiesFileIsComplete = false;
|
propertiesFileIsComplete = false;
|
||||||
warningMessage += ", jdbcDriver property missing";
|
warningMessage += ", jdbcDriver property missing";
|
||||||
}
|
}
|
||||||
String jdbcUrl = prop.getProperty("jdbcUrl");
|
String jdbcUrl = prop.getProperty("jdbcUrl");
|
||||||
if (jdbcUrl == null || jdbcUrl.length() == 0) {
|
if (jdbcUrl == null || jdbcUrl.length() == 0) {
|
||||||
propertiesFileIsComplete = false;
|
propertiesFileIsComplete = false;
|
||||||
warningMessage += ", jdbcUrl property missing";
|
warningMessage += ", jdbcUrl property missing";
|
||||||
}
|
}
|
||||||
String dbUserName = prop.getProperty("dbUserName");
|
String dbUserName = prop.getProperty("dbUserName");
|
||||||
if (dbUserName == null || dbUserName.length() == 0) {
|
if (dbUserName == null || dbUserName.length() == 0) {
|
||||||
propertiesFileIsComplete = false;
|
propertiesFileIsComplete = false;
|
||||||
warningMessage += ", dbUserName property missing";
|
warningMessage += ", dbUserName property missing";
|
||||||
}
|
}
|
||||||
String dbPassword = prop.getProperty("dbPassword");
|
String dbPassword = prop.getProperty("dbPassword");
|
||||||
if (dbPassword == null || dbPassword.length() == 0) {
|
if (dbPassword == null || dbPassword.length() == 0) {
|
||||||
propertiesFileIsComplete = false;
|
propertiesFileIsComplete = false;
|
||||||
warningMessage += ", dbPassword property missing";
|
warningMessage += ", dbPassword property missing";
|
||||||
|
@ -124,7 +129,7 @@ public class TaskanaEngineConfigurationTest {
|
||||||
|
|
||||||
if (propertiesFileIsComplete) {
|
if (propertiesFileIsComplete) {
|
||||||
ds = new PooledDataSource(Thread.currentThread().getContextClassLoader(), jdbcDriver,
|
ds = new PooledDataSource(Thread.currentThread().getContextClassLoader(), jdbcDriver,
|
||||||
jdbcUrl, dbUserName, dbPassword);
|
jdbcUrl, dbUserName, dbPassword);
|
||||||
((PooledDataSource) ds).forceCloseAll(); // otherwise the MyBatis pool is not initialized correctly
|
((PooledDataSource) ds).forceCloseAll(); // otherwise the MyBatis pool is not initialized correctly
|
||||||
} else {
|
} else {
|
||||||
LOGGER.warn("propertiesFile " + propertiesFileName + " is incomplete" + warningMessage);
|
LOGGER.warn("propertiesFile " + propertiesFileName + " is incomplete" + warningMessage);
|
||||||
|
@ -145,5 +150,4 @@ public class TaskanaEngineConfigurationTest {
|
||||||
return ds;
|
return ds;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
INSERT INTO WORKBASKET_ACCESS_LIST VALUES ('1', 'key1', 'Elena', true, true, true, true, true, false, false, false, false, false, false, false, false, false, false, false, false);
|
INSERT INTO WORKBASKET_ACCESS_LIST VALUES ('1', 'key1', 'Elena', true, true, true, true, true, false, false, false, false, false, false, false, false, false, false, false, false);
|
||||||
INSERT INTO WORKBASKET_ACCESS_LIST VALUES ('2', 'key2', 'Max', true, true, true, true, true, true, true, true, true, false, false, false, false, false, false, false, false);
|
INSERT INTO WORKBASKET_ACCESS_LIST VALUES ('2', 'key2', 'Max', true, true, true, true, true, true, true, true, true, false, false, false, false, false, false, false, false);
|
||||||
INSERT INTO WORKBASKET_ACCESS_LIST VALUES ('3', 'key3', 'Simone', true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true);
|
INSERT INTO WORKBASKET_ACCESS_LIST VALUES ('3', 'key3', 'Simone', true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true);
|
||||||
INSERT INTO WORKBASKET_ACCESS_LIST VALUES ('4', 'key4', 'user_1_1', true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true);
|
INSERT INTO WORKBASKET_ACCESS_LIST VALUES ('4', 'key4', 'user_1_1', true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true);
|
||||||
|
|
||||||
-- KSC authorizations ( ID, WB_KEY, ACCESS_ID, READ, OPEN, APPEND, TRANSFER, DISTRIBUTE, C1, .., C12)
|
-- KSC authorizations ( ID, WB_KEY, ACCESS_ID, READ, OPEN, APPEND, TRANSFER, DISTRIBUTE, C1, .., C12)
|
||||||
-- PPKs
|
-- PPKs
|
||||||
INSERT INTO WORKBASKET_ACCESS_LIST VALUES ('WAI:100000000000000000000000000000000001', 'TEAMLEAD_1', 'teamlead_1', true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true);
|
INSERT INTO WORKBASKET_ACCESS_LIST VALUES ('WAI:100000000000000000000000000000000001', 'TEAMLEAD_1', 'teamlead_1', true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true);
|
||||||
INSERT INTO WORKBASKET_ACCESS_LIST VALUES ('WAI:100000000000000000000000000000000002', 'TEAMLEAD_2', 'teamlead_2', true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true);
|
INSERT INTO WORKBASKET_ACCESS_LIST VALUES ('WAI:100000000000000000000000000000000002', 'TEAMLEAD_2', 'teamlead_2', true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true);
|
||||||
|
@ -38,3 +38,15 @@ INSERT INTO WORKBASKET_ACCESS_LIST VALUES ('WAI:10000000000000000000000000000000
|
||||||
INSERT INTO WORKBASKET_ACCESS_LIST VALUES ('WAI:100000000000000000000000000000000024', 'GPK_B_KSC_2', 'group_2', true, false, true, true, false, false, false, false, false, false, false, false, false, false, false, false, false);
|
INSERT INTO WORKBASKET_ACCESS_LIST VALUES ('WAI:100000000000000000000000000000000024', 'GPK_B_KSC_2', 'group_2', true, false, true, true, false, false, false, false, false, false, false, false, false, false, false, false, false);
|
||||||
|
|
||||||
INSERT INTO WORKBASKET_ACCESS_LIST VALUES ('WAI:100000000000000000000000000000000025', 'key5', 'group_1', true, true, true, true, false, false, false, false, false, false, false, false, false, false, false, false, false);
|
INSERT INTO WORKBASKET_ACCESS_LIST VALUES ('WAI:100000000000000000000000000000000025', 'key5', 'group_1', true, true, true, true, false, false, false, false, false, false, false, false, false, false, false, false, false);
|
||||||
|
|
||||||
|
-- Access to workbaskets for sorting test
|
||||||
|
INSERT INTO WORKBASKET_ACCESS_LIST VALUES ('900', 'sort001', 'max', true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true);
|
||||||
|
INSERT INTO WORKBASKET_ACCESS_LIST VALUES ('901', 'Sort002', 'max', true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true);
|
||||||
|
INSERT INTO WORKBASKET_ACCESS_LIST VALUES ('902', 'sOrt003', 'max', true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true);
|
||||||
|
INSERT INTO WORKBASKET_ACCESS_LIST VALUES ('903', 'soRt004', 'max', true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true);
|
||||||
|
INSERT INTO WORKBASKET_ACCESS_LIST VALUES ('904', 'sorT005', 'max', true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true);
|
||||||
|
INSERT INTO WORKBASKET_ACCESS_LIST VALUES ('905', 'Sort006', 'max', true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true);
|
||||||
|
INSERT INTO WORKBASKET_ACCESS_LIST VALUES ('906', 'SOrt007', 'max', true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true);
|
||||||
|
INSERT INTO WORKBASKET_ACCESS_LIST VALUES ('907', 'SoRt008', 'max', true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true);
|
||||||
|
INSERT INTO WORKBASKET_ACCESS_LIST VALUES ('908', 'SorT009', 'max', true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true);
|
||||||
|
INSERT INTO WORKBASKET_ACCESS_LIST VALUES ('909', 'Sort010', 'max', true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true);
|
||||||
|
|
|
@ -20,3 +20,16 @@ INSERT INTO WORKBASKET VALUES ('WBI:100000000000000000000000000000000011', 'GPK_
|
||||||
INSERT INTO WORKBASKET VALUES ('WBI:100000000000000000000000000000000012', 'GPK_B_KSC_1', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, 'Gruppenpostkorb KSC B1', 'DOMAIN_B', 'GROUP', 'Gruppenpostkorb KSC 1', '', '', '', '', '', '', '', '', '');
|
INSERT INTO WORKBASKET VALUES ('WBI:100000000000000000000000000000000012', 'GPK_B_KSC_1', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, 'Gruppenpostkorb KSC B1', 'DOMAIN_B', 'GROUP', 'Gruppenpostkorb KSC 1', '', '', '', '', '', '', '', '', '');
|
||||||
INSERT INTO WORKBASKET VALUES ('WBI:100000000000000000000000000000000013', 'GPK_B_KSC_2', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, 'Gruppenpostkorb KSC B2', 'DOMAIN_B', 'GROUP', 'Gruppenpostkorb KSC 2', '', '', '', '', '', '', '', '', '');
|
INSERT INTO WORKBASKET VALUES ('WBI:100000000000000000000000000000000013', 'GPK_B_KSC_2', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, 'Gruppenpostkorb KSC B2', 'DOMAIN_B', 'GROUP', 'Gruppenpostkorb KSC 2', '', '', '', '', '', '', '', '', '');
|
||||||
|
|
||||||
|
-- Workbaskets for sorting test
|
||||||
|
|
||||||
|
INSERT INTO WORKBASKET VALUES ('900', 'sort001', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, 'basxet0', 'DOM_XY', 'TOPIC', 'Lorem ipsum dolor sit amet.', 'Max', '', '', '', '', '', '', '', '');
|
||||||
|
INSERT INTO WORKBASKET VALUES ('901', 'Sort002', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, 'Basxet1', 'DOM_XY', 'TOPIC', 'Lorem ipsum dolor sit amet.', 'Max', '', '', '', '', '', '', '', '');
|
||||||
|
INSERT INTO WORKBASKET VALUES ('902', 'sOrt003', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, 'bAsxet2', 'DOM_XY', 'TOPIC', 'Lorem ipsum dolor sit amet.', 'Max', '', '', '', '', '', '', '', '');
|
||||||
|
INSERT INTO WORKBASKET VALUES ('903', 'soRt004', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, 'baSxet3', 'DOM_XY', 'TOPIC', 'Lorem ipsum dolor sit amet.', 'Max', '', '', '', '', '', '', '', '');
|
||||||
|
INSERT INTO WORKBASKET VALUES ('904', 'sorT005', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, 'basXet4', 'DOM_XY', 'TOPIC', 'Lorem ipsum dolor sit amet.', 'Max', '', '', '', '', '', '', '', '');
|
||||||
|
INSERT INTO WORKBASKET VALUES ('905', 'Sort006', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, 'basxEt5', 'DOM_XY', 'TOPIC', 'Lorem ipsum dolor sit amet.', 'Max', '', '', '', '', '', '', '', '');
|
||||||
|
INSERT INTO WORKBASKET VALUES ('906', 'SOrt007', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, 'basxeT6', 'DOM_XY', 'TOPIC', 'Lorem ipsum dolor sit amet.', 'Max', '', '', '', '', '', '', '', '');
|
||||||
|
INSERT INTO WORKBASKET VALUES ('907', 'SoRt008', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, 'BAsxet7', 'DOM_XY', 'TOPIC', 'Lorem ipsum dolor sit amet.', 'Max', '', '', '', '', '', '', '', '');
|
||||||
|
INSERT INTO WORKBASKET VALUES ('908', 'SorT009', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, 'BaSxet8', 'DOM_XY', 'TOPIC', 'Lorem ipsum dolor sit amet.', 'Max', '', '', '', '', '', '', '', '');
|
||||||
|
INSERT INTO WORKBASKET VALUES ('909', 'Sort010', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, 'BasXet9', 'DOM_XY', 'TOPIC', 'Lorem ipsum dolor sit amet.', 'Max', '', '', '', '', '', '', '', '');
|
||||||
|
|
||||||
|
|
|
@ -28,56 +28,56 @@ import org.springframework.test.context.junit4.SpringRunner;
|
||||||
@DirtiesContext(classMode = ClassMode.AFTER_EACH_TEST_METHOD)
|
@DirtiesContext(classMode = ClassMode.AFTER_EACH_TEST_METHOD)
|
||||||
public class TransactionTest {
|
public class TransactionTest {
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
TaskService taskService;
|
TaskService taskService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private TestRestTemplate restTemplate;
|
private TestRestTemplate restTemplate;
|
||||||
|
|
||||||
@LocalServerPort
|
@LocalServerPort
|
||||||
int port;
|
int port;
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void init() throws SQLException, ClassNotFoundException {
|
public void init() throws SQLException, ClassNotFoundException {
|
||||||
Class.forName("org.h2.Driver");
|
Class.forName("org.h2.Driver");
|
||||||
try (Connection conn = DriverManager.getConnection("jdbc:h2:mem:task-engine", "SA", "SA")) {
|
try (Connection conn = DriverManager.getConnection("jdbc:h2:mem:task-engine;IGNORECASE=TRUE", "SA", "SA")) {
|
||||||
conn.createStatement().executeUpdate("DELETE FROM TASK WHERE 1=1");
|
conn.createStatement().executeUpdate("DELETE FROM TASK WHERE 1=1");
|
||||||
conn.commit();
|
conn.commit();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@Ignore
|
@Ignore
|
||||||
public void testCommit() throws SQLException {
|
public void testCommit() throws SQLException {
|
||||||
restTemplate.getForEntity("http://127.0.0.1:" + port + "/test", String.class);
|
restTemplate.getForEntity("http://127.0.0.1:" + port + "/test", String.class);
|
||||||
|
|
||||||
int resultCount = 0;
|
int resultCount = 0;
|
||||||
try (Connection conn = DriverManager.getConnection("jdbc:h2:mem:task-engine", "SA", "SA")) {
|
try (Connection conn = DriverManager.getConnection("jdbc:h2:mem:task-engine;IGNORECASE=TRUE", "SA", "SA")) {
|
||||||
ResultSet rs = conn.createStatement().executeQuery("SELECT ID FROM TASK");
|
ResultSet rs = conn.createStatement().executeQuery("SELECT ID FROM TASK");
|
||||||
|
|
||||||
while (rs.next()) {
|
while (rs.next()) {
|
||||||
resultCount++;
|
resultCount++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Assert.assertEquals(1, resultCount);
|
Assert.assertEquals(1, resultCount);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@Ignore
|
@Ignore
|
||||||
public void testRollback() throws SQLException {
|
public void testRollback() throws SQLException {
|
||||||
restTemplate.postForEntity("http://127.0.0.1:" + port + "/test", null, String.class);
|
restTemplate.postForEntity("http://127.0.0.1:" + port + "/test", null, String.class);
|
||||||
|
|
||||||
int resultCount = 0;
|
int resultCount = 0;
|
||||||
try (Connection conn = DriverManager.getConnection("jdbc:h2:mem:task-engine", "SA", "SA")) {
|
try (Connection conn = DriverManager.getConnection("jdbc:h2:mem:task-engine;IGNORECASE=TRUE", "SA", "SA")) {
|
||||||
ResultSet rs = conn.createStatement().executeQuery("SELECT ID FROM TASK");
|
ResultSet rs = conn.createStatement().executeQuery("SELECT ID FROM TASK");
|
||||||
|
|
||||||
while (rs.next()) {
|
while (rs.next()) {
|
||||||
resultCount++;
|
resultCount++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Assert.assertEquals(0, resultCount);
|
Assert.assertEquals(0, resultCount);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue