TSK-694: refactored WorkbasketAccessItemQuery + Extended
This commit is contained in:
parent
40b2648060
commit
ef703b4a40
|
|
@ -0,0 +1,69 @@
|
||||||
|
package pro.taskana;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* AbstractWorkbasketAccessItemQuery for generating dynamic sql.
|
||||||
|
*
|
||||||
|
* @param <Q> the actual WorkbasketAccessItemQuery behind this interface class
|
||||||
|
* @param <T> the workbasket access item
|
||||||
|
*/
|
||||||
|
public interface AbstractWorkbasketAccessItemQuery<Q extends AbstractWorkbasketAccessItemQuery<Q, T>, T extends WorkbasketAccessItem>
|
||||||
|
extends BaseQuery<T> {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add your unique entry id to your query as filter.
|
||||||
|
*
|
||||||
|
* @param ids
|
||||||
|
* the unique entry IDs
|
||||||
|
* @return the query
|
||||||
|
*/
|
||||||
|
Q idIn(String... ids);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add your workbasket id to your query.
|
||||||
|
*
|
||||||
|
* @param workbasketId
|
||||||
|
* the workbasket Id
|
||||||
|
* @return the query
|
||||||
|
*/
|
||||||
|
Q workbasketIdIn(String... workbasketId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add your accessIds to your query.
|
||||||
|
*
|
||||||
|
* @param accessId
|
||||||
|
* as access Ids
|
||||||
|
* @return the query
|
||||||
|
*/
|
||||||
|
Q accessIdIn(String... accessId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sort the query result by workbasket id.
|
||||||
|
*
|
||||||
|
* @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
|
||||||
|
*/
|
||||||
|
Q orderByWorkbasketId(SortDirection sortDirection);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sort the query result by access Id.
|
||||||
|
*
|
||||||
|
* @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
|
||||||
|
*/
|
||||||
|
Q orderByAccessId(SortDirection sortDirection);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sort the query result by Id.
|
||||||
|
*
|
||||||
|
* @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
|
||||||
|
*/
|
||||||
|
Q orderById(SortDirection sortDirection);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -1,105 +0,0 @@
|
||||||
package pro.taskana;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* WorkbasketAccessItemQuery for generating dynamic sql.
|
|
||||||
*/
|
|
||||||
public interface WorkbasketAccessItemExtendedQuery extends BaseQuery<WorkbasketAccessItemExtended> {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Add your unique entry workbasket key to your query as filter.
|
|
||||||
*
|
|
||||||
* @param keys
|
|
||||||
* the unique entry Keys
|
|
||||||
* @return the query
|
|
||||||
*/
|
|
||||||
WorkbasketAccessItemExtendedQuery workbasketKeyIn(String... keys);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Sort the query result by workbasket 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
|
|
||||||
*/
|
|
||||||
WorkbasketAccessItemExtendedQuery orderByWorkbasketKey(SortDirection sortDirection);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Add your unique entry id to your query as filter.
|
|
||||||
*
|
|
||||||
* @param ids
|
|
||||||
* the unique entry IDs
|
|
||||||
* @return the query
|
|
||||||
*/
|
|
||||||
WorkbasketAccessItemExtendedQuery idIn(String... ids);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Add your workbasket id to your query.
|
|
||||||
*
|
|
||||||
* @param workbasketId
|
|
||||||
* the workbasket Id
|
|
||||||
* @return the query
|
|
||||||
*/
|
|
||||||
WorkbasketAccessItemExtendedQuery workbasketIdIn(String... workbasketId);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Add your accessIds to your query.
|
|
||||||
*
|
|
||||||
* @param accessId
|
|
||||||
* as access Ids
|
|
||||||
* @return the query
|
|
||||||
*/
|
|
||||||
WorkbasketAccessItemExtendedQuery accessIdIn(String... accessId);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Sort the query result by workbasket id.
|
|
||||||
*
|
|
||||||
* @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
|
|
||||||
*/
|
|
||||||
WorkbasketAccessItemExtendedQuery orderByWorkbasketId(SortDirection sortDirection);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Sort the query result by access Id.
|
|
||||||
*
|
|
||||||
* @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
|
|
||||||
*/
|
|
||||||
WorkbasketAccessItemExtendedQuery orderByAccessId(SortDirection sortDirection);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Sort the query result by Id.
|
|
||||||
*
|
|
||||||
* @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
|
|
||||||
*/
|
|
||||||
WorkbasketAccessItemExtendedQuery orderById(SortDirection sortDirection);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Add keys to your query. The keys are compared case-insensitively to the keys of access items with the SQL LIKE
|
|
||||||
* operator. You may add a wildcard like '%' to search generically. If you specify multiple keys they are connected
|
|
||||||
* with an OR operator, this is, the query searches access items workbaskets whose keys are like key1 or like key2, etc.
|
|
||||||
*
|
|
||||||
* @param key
|
|
||||||
* the keys as Strings
|
|
||||||
* @return the query
|
|
||||||
*/
|
|
||||||
WorkbasketAccessItemExtendedQuery workbasketKeyLike(String... key);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Add keys to your query. The keys are compared case-insensitively to the keys of access items with the SQL LIKE
|
|
||||||
* operator. You may add a wildcard like '%' to search generically. If you specify multiple keys they are connected
|
|
||||||
* with an OR operator, this is, the query searches access items whose ids are like id1 or like id2, etc.
|
|
||||||
*
|
|
||||||
* @param ids
|
|
||||||
* the ids as Strings
|
|
||||||
* @return the query
|
|
||||||
*/
|
|
||||||
WorkbasketAccessItemExtendedQuery accessIdLike(String... ids);
|
|
||||||
}
|
|
||||||
|
|
@ -1,64 +1,55 @@
|
||||||
package pro.taskana;
|
package pro.taskana;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* WorkbasketAccessItemQuery for generating dynamic sql.
|
* WorkbasketAccessItemQuery for generating dynamic SQL.
|
||||||
*/
|
*/
|
||||||
public interface WorkbasketAccessItemQuery extends BaseQuery<WorkbasketAccessItem> {
|
public interface WorkbasketAccessItemQuery
|
||||||
|
extends AbstractWorkbasketAccessItemQuery<WorkbasketAccessItemQuery, WorkbasketAccessItem> {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Add your unique entry id to your query as filter.
|
* Extended version of {@link WorkbasketAccessItemQuery}.
|
||||||
|
*/
|
||||||
|
interface Extended extends AbstractWorkbasketAccessItemQuery<Extended, WorkbasketAccessItemExtended> {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add your unique entry workbasket key to your query as filter.
|
||||||
|
*
|
||||||
|
* @param keys
|
||||||
|
* the unique entry Keys
|
||||||
|
* @return the query
|
||||||
|
*/
|
||||||
|
Extended workbasketKeyIn(String... keys);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sort the query result by workbasket 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
|
||||||
|
*/
|
||||||
|
Extended orderByWorkbasketKey(SortDirection sortDirection);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add keys to your query. The keys are compared case-insensitively to the keys of access items with the SQL LIKE
|
||||||
|
* operator. You may add a wildcard like '%' to search generically. If you specify multiple keys they are connected
|
||||||
|
* with an OR operator, this is, the query searches access items workbaskets whose keys are like key1 or like key2, etc.
|
||||||
|
*
|
||||||
|
* @param key
|
||||||
|
* the keys as Strings
|
||||||
|
* @return the query
|
||||||
|
*/
|
||||||
|
Extended workbasketKeyLike(String... key);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add keys to your query. The keys are compared case-insensitively to the keys of access items with the SQL LIKE
|
||||||
|
* operator. You may add a wildcard like '%' to search generically. If you specify multiple keys they are connected
|
||||||
|
* with an OR operator, this is, the query searches access items whose ids are like id1 or like id2, etc.
|
||||||
*
|
*
|
||||||
* @param ids
|
* @param ids
|
||||||
* the unique entry IDs
|
* the ids as Strings
|
||||||
* @return the query
|
* @return the query
|
||||||
*/
|
*/
|
||||||
WorkbasketAccessItemQuery idIn(String... ids);
|
Extended accessIdLike(String... ids);
|
||||||
|
}
|
||||||
/**
|
|
||||||
* Add your workbasket id to your query.
|
|
||||||
*
|
|
||||||
* @param workbasketId
|
|
||||||
* the workbasket Id
|
|
||||||
* @return the query
|
|
||||||
*/
|
|
||||||
WorkbasketAccessItemQuery workbasketIdIn(String... workbasketId);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Add your accessIds to your query.
|
|
||||||
*
|
|
||||||
* @param accessId
|
|
||||||
* as access Ids
|
|
||||||
* @return the query
|
|
||||||
*/
|
|
||||||
WorkbasketAccessItemQuery accessIdIn(String... accessId);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Sort the query result by workbasket id.
|
|
||||||
*
|
|
||||||
* @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
|
|
||||||
*/
|
|
||||||
WorkbasketAccessItemQuery orderByWorkbasketId(SortDirection sortDirection);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Sort the query result by access Id.
|
|
||||||
*
|
|
||||||
* @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
|
|
||||||
*/
|
|
||||||
WorkbasketAccessItemQuery orderByAccessId(SortDirection sortDirection);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Sort the query result by Id.
|
|
||||||
*
|
|
||||||
* @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
|
|
||||||
*/
|
|
||||||
WorkbasketAccessItemQuery orderById(SortDirection sortDirection);
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -218,11 +218,11 @@ public interface WorkbasketService {
|
||||||
/**
|
/**
|
||||||
* This method provides a query builder for querying the database.
|
* This method provides a query builder for querying the database.
|
||||||
*
|
*
|
||||||
* @return a {@link WorkbasketAccessItemExtendedQuery}
|
* @return a {@link WorkbasketAccessItemQuery.Extended}
|
||||||
* @throws NotAuthorizedException
|
* @throws NotAuthorizedException
|
||||||
* if the current user is not member of role BUSINESS_ADMIN or ADMIN
|
* if the current user is not member of role BUSINESS_ADMIN or ADMIN
|
||||||
*/
|
*/
|
||||||
WorkbasketAccessItemExtendedQuery createWorkbasketAccessItemExtendedQuery() throws NotAuthorizedException;
|
WorkbasketAccessItemQuery.Extended createWorkbasketAccessItemExtendedQuery() throws NotAuthorizedException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns a new workbasket which is not persisted.
|
* Returns a new workbasket which is not persisted.
|
||||||
|
|
|
||||||
|
|
@ -9,30 +9,26 @@ import org.apache.ibatis.session.RowBounds;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
import pro.taskana.AbstractWorkbasketAccessItemQuery;
|
||||||
import pro.taskana.TaskanaEngine;
|
import pro.taskana.TaskanaEngine;
|
||||||
import pro.taskana.WorkbasketAccessItemExtended;
|
import pro.taskana.WorkbasketAccessItem;
|
||||||
import pro.taskana.WorkbasketAccessItemExtendedQuery;
|
|
||||||
import pro.taskana.exceptions.TaskanaRuntimeException;
|
import pro.taskana.exceptions.TaskanaRuntimeException;
|
||||||
import pro.taskana.impl.util.LoggerUtils;
|
import pro.taskana.impl.util.LoggerUtils;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* WorkbasketAccessItemQuery for generating dynamic SQL.
|
* AbstractWorkbasketAccessItemQueryImpl for generating dynamic SQL.
|
||||||
*
|
*
|
||||||
* @author mmr
|
* @param <Q> the actual WorkbasketAccessItemQuery behind this abstract class
|
||||||
|
* @param <T> the workbasket access item
|
||||||
*/
|
*/
|
||||||
public class WorkbasketAccessItemExtendedQueryImpl implements
|
abstract class AbstractWorkbasketAccessItemQueryImpl<Q extends AbstractWorkbasketAccessItemQuery<Q, T>, T extends WorkbasketAccessItem>
|
||||||
WorkbasketAccessItemExtendedQuery {
|
implements AbstractWorkbasketAccessItemQuery<Q, T> {
|
||||||
|
|
||||||
private static final String LINK_TO_COUNTER = "pro.taskana.mappings.QueryMapper.countQueryWorkbasketAccessItems";
|
private static final String LINK_TO_COUNTER = "pro.taskana.mappings.QueryMapper.countQueryWorkbasketAccessItems";
|
||||||
private static final String LINK_TO_MAPPER_EXTENDED = "pro.taskana.mappings.QueryMapper.queryWorkbasketAccessItemsExtended";
|
|
||||||
private static final String LINK_TO_VALUEMAPPER_EXTENDED = "pro.taskana.mappings.QueryMapper.queryWorkbasketAccessItemExtendedColumnValues";
|
|
||||||
|
|
||||||
private static final Logger LOGGER = LoggerFactory.getLogger(WorkbasketAccessItemExtended.class);
|
private static final Logger LOGGER = LoggerFactory.getLogger(AbstractWorkbasketAccessItemQueryImpl.class);
|
||||||
private String[] workbasketKeyIn;
|
|
||||||
private String[] workbasketKeyLike;
|
|
||||||
private String columnName;
|
private String columnName;
|
||||||
private String[] accessIdIn;
|
private String[] accessIdIn;
|
||||||
private String[] accessIdLike;
|
|
||||||
private String[] workbasketIdIn;
|
private String[] workbasketIdIn;
|
||||||
private String[] idIn;
|
private String[] idIn;
|
||||||
|
|
||||||
|
|
@ -40,102 +36,61 @@ public class WorkbasketAccessItemExtendedQueryImpl implements
|
||||||
private List<String> orderBy;
|
private List<String> orderBy;
|
||||||
private List<String> orderColumns;
|
private List<String> orderColumns;
|
||||||
|
|
||||||
WorkbasketAccessItemExtendedQueryImpl(TaskanaEngine taskanaEngine) {
|
AbstractWorkbasketAccessItemQueryImpl(TaskanaEngine taskanaEngine) {
|
||||||
this.taskanaEngine = (TaskanaEngineImpl) taskanaEngine;
|
this.taskanaEngine = (TaskanaEngineImpl) taskanaEngine;
|
||||||
orderBy = new ArrayList<>();
|
orderBy = new ArrayList<>();
|
||||||
orderColumns = new ArrayList<>();
|
orderColumns = new ArrayList<>();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
abstract Q _this();
|
||||||
public WorkbasketAccessItemExtendedQuery workbasketKeyIn(String... keys) {
|
|
||||||
this.workbasketKeyIn = keys;
|
abstract String getLinkToMapper();
|
||||||
return this;
|
|
||||||
}
|
abstract String getLinkToValueMapper();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public WorkbasketAccessItemExtendedQuery orderByWorkbasketKey(SortDirection sortDirection) {
|
public Q idIn(String... ids) {
|
||||||
return addOrderCriteria("WB.KEY", sortDirection);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public WorkbasketAccessItemExtendedQuery idIn(String... ids) {
|
|
||||||
this.idIn = ids;
|
this.idIn = ids;
|
||||||
return this;
|
return _this();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public WorkbasketAccessItemExtendedQuery workbasketIdIn(String... workbasketId) {
|
public Q workbasketIdIn(String... id) {
|
||||||
this.workbasketIdIn = workbasketId;
|
this.workbasketIdIn = id;
|
||||||
return this;
|
return _this();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public WorkbasketAccessItemExtendedQuery accessIdIn(String... accessId) {
|
public Q accessIdIn(String... accessId) {
|
||||||
this.accessIdIn = accessId;
|
this.accessIdIn = accessId;
|
||||||
WorkbasketQueryImpl.lowercaseAccessIds(this.accessIdIn);
|
WorkbasketQueryImpl.lowercaseAccessIds(this.accessIdIn);
|
||||||
return this;
|
return _this();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public WorkbasketAccessItemExtendedQuery orderByWorkbasketId(SortDirection sortDirection) {
|
public Q orderById(SortDirection sortDirection) {
|
||||||
return addOrderCriteria("WORKBASKET_ID", sortDirection);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public WorkbasketAccessItemExtendedQuery orderByAccessId(SortDirection sortDirection) {
|
|
||||||
return addOrderCriteria("ACCESS_ID", sortDirection);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public WorkbasketAccessItemExtendedQuery orderById(SortDirection sortDirection) {
|
|
||||||
return addOrderCriteria("ID", sortDirection);
|
return addOrderCriteria("ID", sortDirection);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public WorkbasketAccessItemExtendedQuery workbasketKeyLike(String... key) {
|
public Q orderByWorkbasketId(SortDirection sortDirection) {
|
||||||
this.workbasketKeyLike = toUpperCopy(key);
|
return addOrderCriteria("WORKBASKET_ID", sortDirection);
|
||||||
return this;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public WorkbasketAccessItemExtendedQuery accessIdLike(String... ids) {
|
public Q orderByAccessId(SortDirection sortDirection) {
|
||||||
this.accessIdLike = toUpperCopy(ids);
|
return addOrderCriteria("ACCESS_ID", sortDirection);
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String[] getWorkbasketKeyIn() {
|
|
||||||
return workbasketKeyIn;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setWorkbasketKeyIn(String[] workbasketKeyIn) {
|
|
||||||
this.workbasketKeyIn = workbasketKeyIn;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String[] getAccessIdLike() {
|
|
||||||
return accessIdLike;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setAccessIdLike(String[] accessIdLike) {
|
|
||||||
this.accessIdLike = accessIdLike;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String[] getWorkbasketKeyLike() {
|
|
||||||
return workbasketKeyLike;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setWorkbasketKeyLike(String[] workbasketKeyLike) {
|
|
||||||
this.workbasketKeyLike = workbasketKeyLike;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<WorkbasketAccessItemExtended> list() {
|
public List<T> list() {
|
||||||
LOGGER.debug("entry to list(), this = {}", this);
|
LOGGER.debug("entry to list(), this = {}", _this());
|
||||||
List<WorkbasketAccessItemExtended> result = new ArrayList<>();
|
List<T> result = new ArrayList<>();
|
||||||
try {
|
try {
|
||||||
taskanaEngine.openConnection();
|
taskanaEngine.openConnection();
|
||||||
List<WorkbasketAccessItemExtendedImpl> foundAccessItems = taskanaEngine.getSqlSession()
|
List<T> foundAccessItms = taskanaEngine.getSqlSession()
|
||||||
.selectList(LINK_TO_MAPPER_EXTENDED, this);
|
.selectList(getLinkToMapper(), _this());
|
||||||
result.addAll(foundAccessItems);
|
result.addAll(foundAccessItms);
|
||||||
return result;
|
return result;
|
||||||
} finally {
|
} finally {
|
||||||
taskanaEngine.returnConnection();
|
taskanaEngine.returnConnection();
|
||||||
|
|
@ -148,15 +103,36 @@ public class WorkbasketAccessItemExtendedQueryImpl implements
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<WorkbasketAccessItemExtended> list(int offset, int limit) {
|
public List<String> listValues(String columnName, SortDirection sortDirection) {
|
||||||
LOGGER.debug("entry to list(offset = {}, limit = {}), this = {}", offset, limit, this);
|
LOGGER.debug("Entry to listValues(dbColumnName={}) this = {}", columnName, _this());
|
||||||
List<WorkbasketAccessItemExtended> result = new ArrayList<>();
|
List<String> result = null;
|
||||||
|
try {
|
||||||
|
taskanaEngine.openConnection();
|
||||||
|
this.columnName = columnName;
|
||||||
|
this.orderBy.clear();
|
||||||
|
this.addOrderCriteria(columnName, sortDirection);
|
||||||
|
result = taskanaEngine.getSqlSession().selectList(getLinkToValueMapper(), _this());
|
||||||
|
return result;
|
||||||
|
} finally {
|
||||||
|
taskanaEngine.returnConnection();
|
||||||
|
if (LOGGER.isDebugEnabled()) {
|
||||||
|
int numberOfResultObjects = result == null ? 0 : result.size();
|
||||||
|
LOGGER.debug("Exit from listValues. Returning {} resulting Objects: {} ", numberOfResultObjects,
|
||||||
|
LoggerUtils.listToString(result));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<T> list(int offset, int limit) {
|
||||||
|
LOGGER.debug("entry to list(offset = {}, limit = {}), this = {}", offset, limit, _this());
|
||||||
|
List<T> result = new ArrayList<>();
|
||||||
try {
|
try {
|
||||||
taskanaEngine.openConnection();
|
taskanaEngine.openConnection();
|
||||||
RowBounds rowBounds = new RowBounds(offset, limit);
|
RowBounds rowBounds = new RowBounds(offset, limit);
|
||||||
List<WorkbasketAccessItemExtended> foundAccessItems = taskanaEngine.getSqlSession()
|
List<T> foundAccessItms = taskanaEngine.getSqlSession()
|
||||||
.selectList(LINK_TO_MAPPER_EXTENDED, this, rowBounds);
|
.selectList(getLinkToMapper(), _this(), rowBounds);
|
||||||
result.addAll(foundAccessItems);
|
result.addAll(foundAccessItms);
|
||||||
return result;
|
return result;
|
||||||
} catch (PersistenceException e) {
|
} catch (PersistenceException e) {
|
||||||
if (e.getMessage().contains("ERRORCODE=-4470")) {
|
if (e.getMessage().contains("ERRORCODE=-4470")) {
|
||||||
|
|
@ -177,33 +153,12 @@ public class WorkbasketAccessItemExtendedQueryImpl implements
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<String> listValues(String columnName, SortDirection sortDirection) {
|
public T single() {
|
||||||
LOGGER.debug("Entry to listValues(dbColumnName={}) this = {}", columnName, this);
|
LOGGER.debug("entry to single(), this = {}", _this());
|
||||||
List<String> result = null;
|
T accessItem = null;
|
||||||
try {
|
try {
|
||||||
taskanaEngine.openConnection();
|
taskanaEngine.openConnection();
|
||||||
this.columnName = columnName;
|
accessItem = taskanaEngine.getSqlSession().selectOne(getLinkToMapper(), _this());
|
||||||
this.orderBy.clear();
|
|
||||||
this.addOrderCriteria(columnName, sortDirection);
|
|
||||||
result = taskanaEngine.getSqlSession().selectList(LINK_TO_VALUEMAPPER_EXTENDED, this);
|
|
||||||
return result;
|
|
||||||
} finally {
|
|
||||||
taskanaEngine.returnConnection();
|
|
||||||
if (LOGGER.isDebugEnabled()) {
|
|
||||||
int numberOfResultObjects = result == null ? 0 : result.size();
|
|
||||||
LOGGER.debug("Exit from listValues. Returning {} resulting Objects: {} ", numberOfResultObjects,
|
|
||||||
LoggerUtils.listToString(result));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public WorkbasketAccessItemExtended single() {
|
|
||||||
LOGGER.debug("entry to single(), this = {}", this);
|
|
||||||
WorkbasketAccessItemExtended accessItem = null;
|
|
||||||
try {
|
|
||||||
taskanaEngine.openConnection();
|
|
||||||
accessItem = taskanaEngine.getSqlSession().selectOne(LINK_TO_MAPPER_EXTENDED, this);
|
|
||||||
return accessItem;
|
return accessItem;
|
||||||
} finally {
|
} finally {
|
||||||
taskanaEngine.returnConnection();
|
taskanaEngine.returnConnection();
|
||||||
|
|
@ -213,11 +168,11 @@ public class WorkbasketAccessItemExtendedQueryImpl implements
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public long count() {
|
public long count() {
|
||||||
LOGGER.debug("entry to count(), this = {}", this);
|
LOGGER.debug("entry to count(), this = {}", _this());
|
||||||
Long rowCount = null;
|
Long rowCount = null;
|
||||||
try {
|
try {
|
||||||
taskanaEngine.openConnection();
|
taskanaEngine.openConnection();
|
||||||
rowCount = taskanaEngine.getSqlSession().selectOne(LINK_TO_COUNTER, this);
|
rowCount = taskanaEngine.getSqlSession().selectOne(LINK_TO_COUNTER, _this());
|
||||||
return (rowCount == null) ? 0L : rowCount;
|
return (rowCount == null) ? 0L : rowCount;
|
||||||
} finally {
|
} finally {
|
||||||
taskanaEngine.returnConnection();
|
taskanaEngine.returnConnection();
|
||||||
|
|
@ -225,8 +180,15 @@ public class WorkbasketAccessItemExtendedQueryImpl implements
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getColumnName() {
|
protected Q addOrderCriteria(String colName, SortDirection sortDirection) {
|
||||||
return columnName;
|
String orderByDirection = " " + (sortDirection == null ? SortDirection.ASCENDING : sortDirection);
|
||||||
|
orderBy.add(colName + orderByDirection);
|
||||||
|
orderColumns.add(colName);
|
||||||
|
return _this();
|
||||||
|
}
|
||||||
|
|
||||||
|
public String[] getIdIn() {
|
||||||
|
return this.idIn;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String[] getAccessIdIn() {
|
public String[] getAccessIdIn() {
|
||||||
|
|
@ -237,39 +199,31 @@ public class WorkbasketAccessItemExtendedQueryImpl implements
|
||||||
return workbasketIdIn;
|
return workbasketIdIn;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String[] getIdIn() {
|
public List<String> getOrderBy() {
|
||||||
return idIn;
|
return orderBy;
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<String> getOrderColumns() {
|
public List<String> getOrderColumns() {
|
||||||
return orderColumns;
|
return orderColumns;
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<String> getOrderBy() {
|
public String getColumnName() {
|
||||||
return orderBy;
|
return columnName;
|
||||||
}
|
|
||||||
|
|
||||||
private WorkbasketAccessItemExtendedQuery addOrderCriteria(String colName, SortDirection sortDirection) {
|
|
||||||
String orderByDirection = " " + (sortDirection == null ? SortDirection.ASCENDING.toString() : sortDirection.toString());
|
|
||||||
orderBy.add(colName + orderByDirection);
|
|
||||||
orderColumns.add(colName);
|
|
||||||
return this;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
StringBuilder builder = new StringBuilder();
|
StringBuilder builder = new StringBuilder();
|
||||||
builder.append("WorkbasketAccessItemQueryImpl [idIn=");
|
builder.append("AbstractWorkbasketAccessItemQueryImpl [idIn=");
|
||||||
builder.append(Arrays.toString(idIn));
|
builder.append(Arrays.toString(idIn));
|
||||||
builder.append(", accessIdIn=");
|
builder.append(", accessIdIn=");
|
||||||
builder.append(Arrays.toString(accessIdIn));
|
builder.append(Arrays.toString(accessIdIn));
|
||||||
builder.append(", workbasketIdIn=");
|
builder.append(", workbasketIdIn=");
|
||||||
builder.append(Arrays.toString(workbasketIdIn));
|
builder.append(Arrays.toString(workbasketIdIn));
|
||||||
builder.append(", workbasketKeyIn=");
|
|
||||||
builder.append(Arrays.toString(workbasketKeyIn));
|
|
||||||
builder.append(", orderBy=");
|
builder.append(", orderBy=");
|
||||||
builder.append(orderBy);
|
builder.append(orderBy);
|
||||||
builder.append("]");
|
builder.append("]");
|
||||||
return builder.toString();
|
return builder.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -463,7 +463,7 @@ public class ClassificationQueryImpl implements ClassificationQuery {
|
||||||
}
|
}
|
||||||
|
|
||||||
private ClassificationQuery addOrderCriteria(String columnName, SortDirection sortDirection) {
|
private ClassificationQuery addOrderCriteria(String columnName, SortDirection sortDirection) {
|
||||||
String orderByDirection = " " + (sortDirection == null ? SortDirection.ASCENDING.toString() : sortDirection.toString());
|
String orderByDirection = " " + (sortDirection == null ? SortDirection.ASCENDING : sortDirection);
|
||||||
orderBy.add(columnName + orderByDirection);
|
orderBy.add(columnName + orderByDirection);
|
||||||
orderColumns.add(columnName);
|
orderColumns.add(columnName);
|
||||||
return this;
|
return this;
|
||||||
|
|
|
||||||
|
|
@ -211,7 +211,7 @@ public class ObjectReferenceQueryImpl implements ObjectReferenceQuery {
|
||||||
}
|
}
|
||||||
|
|
||||||
private ObjectReferenceQuery addOrderCriteria(String colName, SortDirection sortDirection) {
|
private ObjectReferenceQuery addOrderCriteria(String colName, SortDirection sortDirection) {
|
||||||
String orderByDirection = " " + (sortDirection == null ? SortDirection.ASCENDING.toString() : sortDirection.toString());
|
String orderByDirection = " " + (sortDirection == null ? SortDirection.ASCENDING : sortDirection);
|
||||||
orderBy.add(colName + orderByDirection);
|
orderBy.add(colName + orderByDirection);
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1448,7 +1448,7 @@ public class TaskQueryImpl implements TaskQuery {
|
||||||
}
|
}
|
||||||
|
|
||||||
private TaskQuery addOrderCriteria(String columnName, SortDirection sortDirection) {
|
private TaskQuery addOrderCriteria(String columnName, SortDirection sortDirection) {
|
||||||
String orderByDirection = " " + (sortDirection == null ? SortDirection.ASCENDING.toString() : sortDirection.toString());
|
String orderByDirection = " " + (sortDirection == null ? SortDirection.ASCENDING : sortDirection);
|
||||||
orderBy.add(columnName + orderByDirection);
|
orderBy.add(columnName + orderByDirection);
|
||||||
orderColumns.add(columnName);
|
orderColumns.add(columnName);
|
||||||
return this;
|
return this;
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,7 @@
|
||||||
package pro.taskana.impl;
|
package pro.taskana.impl;
|
||||||
|
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
import pro.taskana.WorkbasketAccessItemExtended;
|
import pro.taskana.WorkbasketAccessItemExtended;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -20,104 +22,21 @@ public class WorkbasketAccessItemExtendedImpl extends WorkbasketAccessItemImpl i
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int hashCode() {
|
public int hashCode() {
|
||||||
final int prime = 31;
|
return Objects.hash(super.hashCode(), workbasketKey);
|
||||||
int result = super.hashCode();
|
|
||||||
result = prime * result + ((workbasketKey == null) ? 0 : workbasketKey.hashCode());
|
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean equals(Object obj) {
|
public boolean equals(Object o) {
|
||||||
if (this == obj) {
|
if (this == o) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
if (obj == null) {
|
if (!(o instanceof WorkbasketAccessItemExtendedImpl)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (getClass() != obj.getClass()) {
|
if (!super.equals(o)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
WorkbasketAccessItemExtendedImpl other = (WorkbasketAccessItemExtendedImpl) obj;
|
WorkbasketAccessItemExtendedImpl that = (WorkbasketAccessItemExtendedImpl) o;
|
||||||
if (getAccessId() == null) {
|
return Objects.equals(workbasketKey, that.workbasketKey);
|
||||||
if (other.getAccessId() != null) {
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
} else if (!getAccessId().equals(other.getAccessId())) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (getId() == null) {
|
|
||||||
if (other.getId() != null) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
} else if (!getId().equals(other.getId())) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (isPermAppend() != other.isPermAppend()) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (isPermCustom1() != other.isPermCustom1()) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (isPermCustom10() != other.isPermCustom10()) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (isPermCustom11() != other.isPermCustom11()) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (isPermCustom12() != other.isPermCustom12()) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (isPermCustom2() != other.isPermCustom2()) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (isPermCustom3() != other.isPermCustom3()) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (isPermCustom4() != other.isPermCustom4()) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (isPermCustom5() != other.isPermCustom5()) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (isPermCustom6() != other.isPermCustom6()) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (isPermCustom7() != other.isPermCustom7()) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (isPermCustom8() != other.isPermCustom8()) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (isPermCustom9() != other.isPermCustom9()) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (isPermDistribute() != other.isPermDistribute()) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (isPermOpen() != other.isPermOpen()) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (isPermRead() != other.isPermRead()) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (isPermTransfer() != other.isPermTransfer()) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (getWorkbasketId() == null) {
|
|
||||||
if (other.getWorkbasketId() != null) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
} else if (!getWorkbasketId().equals(other.getWorkbasketId())) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (getWorkbasketKey() == null) {
|
|
||||||
if (other.getWorkbasketKey() != null) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
} else if (!getWorkbasketKey().equals(other.getWorkbasketKey())) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,222 +1,108 @@
|
||||||
package pro.taskana.impl;
|
package pro.taskana.impl;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import org.apache.ibatis.exceptions.PersistenceException;
|
|
||||||
import org.apache.ibatis.session.RowBounds;
|
|
||||||
import org.slf4j.Logger;
|
|
||||||
import org.slf4j.LoggerFactory;
|
|
||||||
|
|
||||||
import pro.taskana.TaskanaEngine;
|
import pro.taskana.TaskanaEngine;
|
||||||
import pro.taskana.WorkbasketAccessItem;
|
import pro.taskana.WorkbasketAccessItem;
|
||||||
|
import pro.taskana.WorkbasketAccessItemExtended;
|
||||||
import pro.taskana.WorkbasketAccessItemQuery;
|
import pro.taskana.WorkbasketAccessItemQuery;
|
||||||
import pro.taskana.exceptions.TaskanaRuntimeException;
|
|
||||||
import pro.taskana.impl.util.LoggerUtils;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* WorkbasketAccessItemQueryImpl for generating dynamic SQL.
|
* WorkbasketAccessItemQueryImpl for generating dynamic SQL.
|
||||||
*
|
|
||||||
* @author mmr
|
|
||||||
*/
|
*/
|
||||||
public class WorkbasketAccessItemQueryImpl implements WorkbasketAccessItemQuery {
|
public class WorkbasketAccessItemQueryImpl
|
||||||
|
extends AbstractWorkbasketAccessItemQueryImpl<WorkbasketAccessItemQuery, WorkbasketAccessItem>
|
||||||
|
implements WorkbasketAccessItemQuery {
|
||||||
|
|
||||||
private static final String LINK_TO_MAPPER = "pro.taskana.mappings.QueryMapper.queryWorkbasketAccessItems";
|
private static final String LINK_TO_MAPPER = "pro.taskana.mappings.QueryMapper.queryWorkbasketAccessItems";
|
||||||
private static final String LINK_TO_COUNTER = "pro.taskana.mappings.QueryMapper.countQueryWorkbasketAccessItems";
|
private static final String LINK_TO_VALUE_MAPPER = "pro.taskana.mappings.QueryMapper.queryWorkbasketAccessItemColumnValues";
|
||||||
private static final String LINK_TO_VALUEMAPPER = "pro.taskana.mappings.QueryMapper.queryWorkbasketAccessItemColumnValues";
|
|
||||||
private static final Logger LOGGER = LoggerFactory.getLogger(WorkbasketQueryImpl.class);
|
|
||||||
private String columnName;
|
|
||||||
private String[] accessIdIn;
|
|
||||||
private String[] workbasketIdIn;
|
|
||||||
private String[] idIn;
|
|
||||||
|
|
||||||
private TaskanaEngineImpl taskanaEngine;
|
|
||||||
private List<String> orderBy;
|
|
||||||
private List<String> orderColumns;
|
|
||||||
|
|
||||||
WorkbasketAccessItemQueryImpl(TaskanaEngine taskanaEngine) {
|
WorkbasketAccessItemQueryImpl(TaskanaEngine taskanaEngine) {
|
||||||
this.taskanaEngine = (TaskanaEngineImpl) taskanaEngine;
|
super(taskanaEngine);
|
||||||
orderBy = new ArrayList<>();
|
|
||||||
orderColumns = new ArrayList<>();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public WorkbasketAccessItemQuery idIn(String... ids) {
|
WorkbasketAccessItemQuery _this() {
|
||||||
this.idIn = ids;
|
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public WorkbasketAccessItemQuery workbasketIdIn(String... id) {
|
String getLinkToMapper() {
|
||||||
this.workbasketIdIn = id;
|
return LINK_TO_MAPPER;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
String getLinkToValueMapper() {
|
||||||
|
return LINK_TO_VALUE_MAPPER;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Extended version of {@link WorkbasketAccessItemQueryImpl}.
|
||||||
|
*/
|
||||||
|
public static class Extended
|
||||||
|
extends AbstractWorkbasketAccessItemQueryImpl<WorkbasketAccessItemQuery.Extended, WorkbasketAccessItemExtended>
|
||||||
|
implements WorkbasketAccessItemQuery.Extended {
|
||||||
|
|
||||||
|
private static final String LINK_TO_MAPPER_EXTENDED = "pro.taskana.mappings.QueryMapper.queryWorkbasketAccessItemsExtended";
|
||||||
|
private static final String LINK_TO_VALUE_MAPPER_EXTENDED = "pro.taskana.mappings.QueryMapper.queryWorkbasketAccessItemExtendedColumnValues";
|
||||||
|
|
||||||
|
private String[] workbasketKeyIn;
|
||||||
|
private String[] workbasketKeyLike;
|
||||||
|
private String[] accessIdLike;
|
||||||
|
|
||||||
|
Extended(TaskanaEngine taskanaEngine) {
|
||||||
|
super(taskanaEngine);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
WorkbasketAccessItemQuery.Extended _this() {
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public WorkbasketAccessItemQuery accessIdIn(String... accessId) {
|
String getLinkToMapper() {
|
||||||
this.accessIdIn = accessId;
|
return LINK_TO_MAPPER_EXTENDED;
|
||||||
WorkbasketQueryImpl.lowercaseAccessIds(this.accessIdIn);
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
String getLinkToValueMapper() {
|
||||||
|
return LINK_TO_VALUE_MAPPER_EXTENDED;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public WorkbasketAccessItemQuery.Extended workbasketKeyIn(String... keys) {
|
||||||
|
this.workbasketKeyIn = keys;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public WorkbasketAccessItemQuery orderById(SortDirection sortDirection) {
|
public WorkbasketAccessItemQuery.Extended orderByWorkbasketKey(SortDirection sortDirection) {
|
||||||
return addOrderCriteria("ID", sortDirection);
|
return addOrderCriteria("WB.KEY", sortDirection);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public WorkbasketAccessItemQuery orderByWorkbasketId(SortDirection sortDirection) {
|
public WorkbasketAccessItemQuery.Extended workbasketKeyLike(String... key) {
|
||||||
return addOrderCriteria("WORKBASKET_ID", sortDirection);
|
this.workbasketKeyLike = toUpperCopy(key);
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public WorkbasketAccessItemQuery orderByAccessId(SortDirection sortDirection) {
|
|
||||||
return addOrderCriteria("ACCESS_ID", sortDirection);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<WorkbasketAccessItem> list() {
|
|
||||||
LOGGER.debug("entry to list(), this = {}", this);
|
|
||||||
List<WorkbasketAccessItem> result = new ArrayList<>();
|
|
||||||
try {
|
|
||||||
taskanaEngine.openConnection();
|
|
||||||
List<WorkbasketAccessItemImpl> foundAccessItms = taskanaEngine.getSqlSession()
|
|
||||||
.selectList(LINK_TO_MAPPER, this);
|
|
||||||
result.addAll(foundAccessItms);
|
|
||||||
return result;
|
|
||||||
} finally {
|
|
||||||
taskanaEngine.returnConnection();
|
|
||||||
if (LOGGER.isDebugEnabled()) {
|
|
||||||
int numberOfResultObjects = result == null ? 0 : result.size();
|
|
||||||
LOGGER.debug("exit from list(). Returning {} resulting Objects: {} ", numberOfResultObjects,
|
|
||||||
LoggerUtils.listToString(result));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<String> listValues(String columnName, SortDirection sortDirection) {
|
|
||||||
LOGGER.debug("Entry to listValues(dbColumnName={}) this = {}", columnName, this);
|
|
||||||
List<String> result = null;
|
|
||||||
try {
|
|
||||||
taskanaEngine.openConnection();
|
|
||||||
this.columnName = columnName;
|
|
||||||
this.orderBy.clear();
|
|
||||||
this.addOrderCriteria(columnName, sortDirection);
|
|
||||||
result = taskanaEngine.getSqlSession().selectList(LINK_TO_VALUEMAPPER, this);
|
|
||||||
return result;
|
|
||||||
} finally {
|
|
||||||
taskanaEngine.returnConnection();
|
|
||||||
if (LOGGER.isDebugEnabled()) {
|
|
||||||
int numberOfResultObjects = result == null ? 0 : result.size();
|
|
||||||
LOGGER.debug("Exit from listValues. Returning {} resulting Objects: {} ", numberOfResultObjects,
|
|
||||||
LoggerUtils.listToString(result));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<WorkbasketAccessItem> list(int offset, int limit) {
|
|
||||||
LOGGER.debug("entry to list(offset = {}, limit = {}), this = {}", offset, limit, this);
|
|
||||||
List<WorkbasketAccessItem> result = new ArrayList<>();
|
|
||||||
try {
|
|
||||||
taskanaEngine.openConnection();
|
|
||||||
RowBounds rowBounds = new RowBounds(offset, limit);
|
|
||||||
List<WorkbasketAccessItemImpl> foundAccessItms = taskanaEngine.getSqlSession()
|
|
||||||
.selectList(LINK_TO_MAPPER, this, rowBounds);
|
|
||||||
result.addAll(foundAccessItms);
|
|
||||||
return result;
|
|
||||||
} catch (PersistenceException e) {
|
|
||||||
if (e.getMessage().contains("ERRORCODE=-4470")) {
|
|
||||||
TaskanaRuntimeException ex = new TaskanaRuntimeException(
|
|
||||||
"The offset beginning was set over the amount of result-rows.", e.getCause());
|
|
||||||
ex.setStackTrace(e.getStackTrace());
|
|
||||||
throw ex;
|
|
||||||
}
|
|
||||||
throw e;
|
|
||||||
} finally {
|
|
||||||
taskanaEngine.returnConnection();
|
|
||||||
if (LOGGER.isDebugEnabled()) {
|
|
||||||
int numberOfResultObjects = result == null ? 0 : result.size();
|
|
||||||
LOGGER.debug("exit from list(offset,limit). Returning {} resulting Objects: {} ", numberOfResultObjects,
|
|
||||||
LoggerUtils.listToString(result));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public WorkbasketAccessItem single() {
|
|
||||||
LOGGER.debug("entry to single(), this = {}", this);
|
|
||||||
WorkbasketAccessItem accessItm = null;
|
|
||||||
try {
|
|
||||||
taskanaEngine.openConnection();
|
|
||||||
accessItm = taskanaEngine.getSqlSession().selectOne(LINK_TO_MAPPER, this);
|
|
||||||
return accessItm;
|
|
||||||
} finally {
|
|
||||||
taskanaEngine.returnConnection();
|
|
||||||
LOGGER.debug("exit from single(). Returning result {} ", accessItm);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public long count() {
|
|
||||||
LOGGER.debug("entry to count(), this = {}", this);
|
|
||||||
Long rowCount = null;
|
|
||||||
try {
|
|
||||||
taskanaEngine.openConnection();
|
|
||||||
rowCount = taskanaEngine.getSqlSession().selectOne(LINK_TO_COUNTER, this);
|
|
||||||
return (rowCount == null) ? 0L : rowCount;
|
|
||||||
} finally {
|
|
||||||
taskanaEngine.returnConnection();
|
|
||||||
LOGGER.debug("exit from count(). Returning result {} ", rowCount);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private WorkbasketAccessItemQuery addOrderCriteria(String colName, SortDirection sortDirection) {
|
|
||||||
String orderByDirection = " " + (sortDirection == null ? SortDirection.ASCENDING.toString() : sortDirection.toString());
|
|
||||||
orderBy.add(colName + orderByDirection);
|
|
||||||
orderColumns.add(colName);
|
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String[] getIdIn() {
|
|
||||||
return this.idIn;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String[] getAccessIdIn() {
|
|
||||||
return accessIdIn;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String[] getWorkbasketIdIn() {
|
|
||||||
return workbasketIdIn;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<String> getOrderBy() {
|
|
||||||
return orderBy;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<String> getOrderColumns() {
|
|
||||||
return orderColumns;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getColumnName() {
|
|
||||||
return columnName;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public WorkbasketAccessItemQuery.Extended accessIdLike(String... ids) {
|
||||||
StringBuilder builder = new StringBuilder();
|
this.accessIdLike = toUpperCopy(ids);
|
||||||
builder.append("WorkbasketAccessItemQueryImpl [idIn=");
|
return this;
|
||||||
builder.append(Arrays.toString(idIn));
|
}
|
||||||
builder.append(", accessIdIn=");
|
|
||||||
builder.append(Arrays.toString(accessIdIn));
|
public String[] getWorkbasketKeyIn() {
|
||||||
builder.append(", workbasketIdIn=");
|
return workbasketKeyIn;
|
||||||
builder.append(Arrays.toString(workbasketIdIn));
|
}
|
||||||
builder.append(", orderBy=");
|
|
||||||
builder.append(orderBy);
|
public String[] getAccessIdLike() {
|
||||||
builder.append("]");
|
return accessIdLike;
|
||||||
return builder.toString();
|
}
|
||||||
|
|
||||||
|
public String[] getWorkbasketKeyLike() {
|
||||||
|
return workbasketKeyLike;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -753,7 +753,7 @@ public class WorkbasketQueryImpl implements WorkbasketQuery {
|
||||||
}
|
}
|
||||||
|
|
||||||
private WorkbasketQuery addOrderCriteria(String colName, SortDirection sortDirection) {
|
private WorkbasketQuery addOrderCriteria(String colName, SortDirection sortDirection) {
|
||||||
String orderByDirection = " " + (sortDirection == null ? SortDirection.ASCENDING.toString() : sortDirection.toString());
|
String orderByDirection = " " + (sortDirection == null ? SortDirection.ASCENDING : sortDirection);
|
||||||
orderBy.add(colName + orderByDirection);
|
orderBy.add(colName + orderByDirection);
|
||||||
orderColumns.add(colName);
|
orderColumns.add(colName);
|
||||||
return this;
|
return this;
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,6 @@ import pro.taskana.TaskanaRole;
|
||||||
import pro.taskana.Workbasket;
|
import pro.taskana.Workbasket;
|
||||||
import pro.taskana.WorkbasketAccessItem;
|
import pro.taskana.WorkbasketAccessItem;
|
||||||
import pro.taskana.WorkbasketAccessItemExtended;
|
import pro.taskana.WorkbasketAccessItemExtended;
|
||||||
import pro.taskana.WorkbasketAccessItemExtendedQuery;
|
|
||||||
import pro.taskana.WorkbasketAccessItemQuery;
|
import pro.taskana.WorkbasketAccessItemQuery;
|
||||||
import pro.taskana.WorkbasketPermission;
|
import pro.taskana.WorkbasketPermission;
|
||||||
import pro.taskana.WorkbasketQuery;
|
import pro.taskana.WorkbasketQuery;
|
||||||
|
|
@ -232,7 +231,7 @@ public class WorkbasketServiceImpl implements WorkbasketService {
|
||||||
|
|
||||||
// add all
|
// add all
|
||||||
if (!newItems.isEmpty()) {
|
if (!newItems.isEmpty()) {
|
||||||
newItems.stream().forEach(item -> workbasketAccessMapper.insert(item));
|
newItems.forEach(item -> workbasketAccessMapper.insert(item));
|
||||||
}
|
}
|
||||||
} finally {
|
} finally {
|
||||||
taskanaEngine.returnConnection();
|
taskanaEngine.returnConnection();
|
||||||
|
|
@ -450,7 +449,7 @@ public class WorkbasketServiceImpl implements WorkbasketService {
|
||||||
|
|
||||||
private List<WorkbasketPermission> getPermissionsFromWorkbasketAccessItem(
|
private List<WorkbasketPermission> getPermissionsFromWorkbasketAccessItem(
|
||||||
WorkbasketAccessItem workbasketAccessItem) {
|
WorkbasketAccessItem workbasketAccessItem) {
|
||||||
List<WorkbasketPermission> permissions = new ArrayList<WorkbasketPermission>();
|
List<WorkbasketPermission> permissions = new ArrayList<>();
|
||||||
if (workbasketAccessItem == null) {
|
if (workbasketAccessItem == null) {
|
||||||
return permissions;
|
return permissions;
|
||||||
}
|
}
|
||||||
|
|
@ -745,8 +744,7 @@ public class WorkbasketServiceImpl implements WorkbasketService {
|
||||||
|
|
||||||
long numTasksInWorkbasket = taskanaEngine.getSqlSession()
|
long numTasksInWorkbasket = taskanaEngine.getSqlSession()
|
||||||
.getMapper(TaskMapper.class)
|
.getMapper(TaskMapper.class)
|
||||||
.countTasksInWorkbasket(workbasketId)
|
.countTasksInWorkbasket(workbasketId);
|
||||||
.longValue();
|
|
||||||
|
|
||||||
if (numTasksInWorkbasket > 0) {
|
if (numTasksInWorkbasket > 0) {
|
||||||
throw new WorkbasketInUseException(
|
throw new WorkbasketInUseException(
|
||||||
|
|
@ -772,9 +770,9 @@ public class WorkbasketServiceImpl implements WorkbasketService {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public WorkbasketAccessItemExtendedQuery createWorkbasketAccessItemExtendedQuery() throws NotAuthorizedException {
|
public WorkbasketAccessItemQuery.Extended createWorkbasketAccessItemExtendedQuery() throws NotAuthorizedException {
|
||||||
taskanaEngine.checkRoleMembership(TaskanaRole.ADMIN, TaskanaRole.BUSINESS_ADMIN);
|
taskanaEngine.checkRoleMembership(TaskanaRole.ADMIN, TaskanaRole.BUSINESS_ADMIN);
|
||||||
return new WorkbasketAccessItemExtendedQueryImpl(this.taskanaEngine);
|
return new WorkbasketAccessItemQueryImpl.Extended(this.taskanaEngine);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -7,15 +7,14 @@ import org.apache.ibatis.annotations.Results;
|
||||||
import org.apache.ibatis.annotations.Select;
|
import org.apache.ibatis.annotations.Select;
|
||||||
|
|
||||||
import pro.taskana.ObjectReference;
|
import pro.taskana.ObjectReference;
|
||||||
|
import pro.taskana.WorkbasketAccessItemQuery;
|
||||||
import pro.taskana.impl.ClassificationQueryImpl;
|
import pro.taskana.impl.ClassificationQueryImpl;
|
||||||
import pro.taskana.impl.ClassificationSummaryImpl;
|
import pro.taskana.impl.ClassificationSummaryImpl;
|
||||||
import pro.taskana.impl.ObjectReferenceQueryImpl;
|
import pro.taskana.impl.ObjectReferenceQueryImpl;
|
||||||
import pro.taskana.impl.TaskQueryImpl;
|
import pro.taskana.impl.TaskQueryImpl;
|
||||||
import pro.taskana.impl.TaskSummaryImpl;
|
import pro.taskana.impl.TaskSummaryImpl;
|
||||||
import pro.taskana.impl.WorkbasketAccessItemExtendedImpl;
|
import pro.taskana.impl.WorkbasketAccessItemExtendedImpl;
|
||||||
import pro.taskana.impl.WorkbasketAccessItemExtendedQueryImpl;
|
|
||||||
import pro.taskana.impl.WorkbasketAccessItemImpl;
|
import pro.taskana.impl.WorkbasketAccessItemImpl;
|
||||||
import pro.taskana.impl.WorkbasketAccessItemQueryImpl;
|
|
||||||
import pro.taskana.impl.WorkbasketQueryImpl;
|
import pro.taskana.impl.WorkbasketQueryImpl;
|
||||||
import pro.taskana.impl.WorkbasketSummaryImpl;
|
import pro.taskana.impl.WorkbasketSummaryImpl;
|
||||||
|
|
||||||
|
|
@ -29,6 +28,11 @@ public interface QueryMapper {
|
||||||
String CLASSIFICATION_FINDBYID = "pro.taskana.mappings.ClassificationMapper.findById";
|
String CLASSIFICATION_FINDBYID = "pro.taskana.mappings.ClassificationMapper.findById";
|
||||||
String WORKBASKET_FINDSUMMARYBYKEY = "pro.taskana.mappings.WorkbasketMapper.findSummaryByKey";
|
String WORKBASKET_FINDSUMMARYBYKEY = "pro.taskana.mappings.WorkbasketMapper.findSummaryByKey";
|
||||||
|
|
||||||
|
static String fixColumnNames() {
|
||||||
|
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
@Select("<script> "
|
@Select("<script> "
|
||||||
+ "SELECT <if test=\"joinWithAttachments\">DISTINCT</if> t.ID, t.CREATED, t.CLAIMED, t.COMPLETED, t.MODIFIED, t.PLANNED, t.DUE, t.NAME, t.CREATOR, t.DESCRIPTION, t.NOTE, t.PRIORITY, t.STATE, t.CLASSIFICATION_KEY, t.CLASSIFICATION_CATEGORY, t.CLASSIFICATION_ID, t.WORKBASKET_ID, t.DOMAIN, t.WORKBASKET_KEY, t.BUSINESS_PROCESS_ID, t.PARENT_BUSINESS_PROCESS_ID, t.OWNER, t.POR_COMPANY, t.POR_SYSTEM, t.POR_INSTANCE, t.POR_TYPE, t.POR_VALUE, t.IS_READ, t.IS_TRANSFERRED, t.CUSTOM_1, t.CUSTOM_2, t.CUSTOM_3, t.CUSTOM_4, t.CUSTOM_5, t.CUSTOM_6, t.CUSTOM_7, t.CUSTOM_8, t.CUSTOM_9, t.CUSTOM_10, t.CUSTOM_11, t.CUSTOM_12, t.CUSTOM_13, t.CUSTOM_14, t.CUSTOM_15, t.CUSTOM_16"
|
+ "SELECT <if test=\"joinWithAttachments\">DISTINCT</if> t.ID, t.CREATED, t.CLAIMED, t.COMPLETED, t.MODIFIED, t.PLANNED, t.DUE, t.NAME, t.CREATOR, t.DESCRIPTION, t.NOTE, t.PRIORITY, t.STATE, t.CLASSIFICATION_KEY, t.CLASSIFICATION_CATEGORY, t.CLASSIFICATION_ID, t.WORKBASKET_ID, t.DOMAIN, t.WORKBASKET_KEY, t.BUSINESS_PROCESS_ID, t.PARENT_BUSINESS_PROCESS_ID, t.OWNER, t.POR_COMPANY, t.POR_SYSTEM, t.POR_INSTANCE, t.POR_TYPE, t.POR_VALUE, t.IS_READ, t.IS_TRANSFERRED, t.CUSTOM_1, t.CUSTOM_2, t.CUSTOM_3, t.CUSTOM_4, t.CUSTOM_5, t.CUSTOM_6, t.CUSTOM_7, t.CUSTOM_8, t.CUSTOM_9, t.CUSTOM_10, t.CUSTOM_11, t.CUSTOM_12, t.CUSTOM_13, t.CUSTOM_14, t.CUSTOM_15, t.CUSTOM_16"
|
||||||
+ "<if test=\"addAttachmentColumnsToSelectClauseForOrdering\">"
|
+ "<if test=\"addAttachmentColumnsToSelectClauseForOrdering\">"
|
||||||
|
|
@ -178,11 +182,6 @@ public interface QueryMapper {
|
||||||
@Result(property = "custom16", column = "CUSTOM_16")})
|
@Result(property = "custom16", column = "CUSTOM_16")})
|
||||||
List<TaskSummaryImpl> queryTaskSummaries(TaskQueryImpl taskQuery);
|
List<TaskSummaryImpl> queryTaskSummaries(TaskQueryImpl taskQuery);
|
||||||
|
|
||||||
static String fixColumnNames() {
|
|
||||||
|
|
||||||
return "";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Select("<script> "
|
@Select("<script> "
|
||||||
+ "WITH X (ID, CREATED, CLAIMED, COMPLETED, MODIFIED, PLANNED, DUE, NAME, CREATOR, DESCRIPTION, NOTE, PRIORITY, STATE, TCLASSIFICATION_KEY, "
|
+ "WITH X (ID, CREATED, CLAIMED, COMPLETED, MODIFIED, PLANNED, DUE, NAME, CREATOR, DESCRIPTION, NOTE, PRIORITY, STATE, TCLASSIFICATION_KEY, "
|
||||||
+ "CLASSIFICATION_CATEGORY, CLASSIFICATION_ID, WORKBASKET_ID, DOMAIN, WORKBASKET_KEY, BUSINESS_PROCESS_ID, PARENT_BUSINESS_PROCESS_ID, OWNER, "
|
+ "CLASSIFICATION_CATEGORY, CLASSIFICATION_ID, WORKBASKET_ID, DOMAIN, WORKBASKET_KEY, BUSINESS_PROCESS_ID, PARENT_BUSINESS_PROCESS_ID, OWNER, "
|
||||||
|
|
@ -609,7 +608,7 @@ public interface QueryMapper {
|
||||||
@Result(property = "permCustom10", column = "PERM_CUSTOM_10"),
|
@Result(property = "permCustom10", column = "PERM_CUSTOM_10"),
|
||||||
@Result(property = "permCustom11", column = "PERM_CUSTOM_11"),
|
@Result(property = "permCustom11", column = "PERM_CUSTOM_11"),
|
||||||
@Result(property = "permCustom12", column = "PERM_CUSTOM_12")})
|
@Result(property = "permCustom12", column = "PERM_CUSTOM_12")})
|
||||||
List<WorkbasketAccessItemImpl> queryWorkbasketAccessItems(WorkbasketAccessItemQueryImpl accessItemQuery);
|
List<WorkbasketAccessItemImpl> queryWorkbasketAccessItems(WorkbasketAccessItemQuery accessItemQuery);
|
||||||
|
|
||||||
@Select("<script>"
|
@Select("<script>"
|
||||||
+ "SELECT "
|
+ "SELECT "
|
||||||
|
|
@ -651,7 +650,8 @@ public interface QueryMapper {
|
||||||
@Result(property = "permCustom10", column = "PERM_CUSTOM_10"),
|
@Result(property = "permCustom10", column = "PERM_CUSTOM_10"),
|
||||||
@Result(property = "permCustom11", column = "PERM_CUSTOM_11"),
|
@Result(property = "permCustom11", column = "PERM_CUSTOM_11"),
|
||||||
@Result(property = "permCustom12", column = "PERM_CUSTOM_12")})
|
@Result(property = "permCustom12", column = "PERM_CUSTOM_12")})
|
||||||
List<WorkbasketAccessItemExtendedImpl> queryWorkbasketAccessItemsExtended(WorkbasketAccessItemExtendedQueryImpl accessItemExtendedQuery);
|
List<WorkbasketAccessItemExtendedImpl> queryWorkbasketAccessItemsExtended(
|
||||||
|
WorkbasketAccessItemQuery.Extended accessItemExtendedQuery);
|
||||||
|
|
||||||
@Select("<script> "
|
@Select("<script> "
|
||||||
+ "SELECT COUNT( <if test=\"joinWithAttachments\">DISTINCT</if> t.ID) FROM TASK t "
|
+ "SELECT COUNT( <if test=\"joinWithAttachments\">DISTINCT</if> t.ID) FROM TASK t "
|
||||||
|
|
@ -751,7 +751,6 @@ public interface QueryMapper {
|
||||||
+ "</script>")
|
+ "</script>")
|
||||||
Long countQueryTasks(TaskQueryImpl taskQuery);
|
Long countQueryTasks(TaskQueryImpl taskQuery);
|
||||||
|
|
||||||
|
|
||||||
@Select("<script> "
|
@Select("<script> "
|
||||||
+ "WITH X (ID, WORKBASKET_ID) AS (SELECT <if test=\"joinWithAttachments\">DISTINCT</if> t.ID, t.WORKBASKET_ID FROM TASK t "
|
+ "WITH X (ID, WORKBASKET_ID) AS (SELECT <if test=\"joinWithAttachments\">DISTINCT</if> t.ID, t.WORKBASKET_ID FROM TASK t "
|
||||||
+ "<if test=\"joinWithAttachments\">"
|
+ "<if test=\"joinWithAttachments\">"
|
||||||
|
|
@ -998,7 +997,7 @@ public interface QueryMapper {
|
||||||
+ "</where>"
|
+ "</where>"
|
||||||
+ "<if test=\"_databaseId == 'db2'\">with UR </if> "
|
+ "<if test=\"_databaseId == 'db2'\">with UR </if> "
|
||||||
+ "</script>")
|
+ "</script>")
|
||||||
Long countQueryWorkbasketAccessItems(WorkbasketAccessItemQueryImpl accessItem);
|
Long countQueryWorkbasketAccessItems(WorkbasketAccessItemQuery accessItem);
|
||||||
|
|
||||||
@Select("<script>SELECT DISTINCT ${columnName} "
|
@Select("<script>SELECT DISTINCT ${columnName} "
|
||||||
+ "FROM TASK t LEFT JOIN ATTACHMENT AS a ON t.ID = a.TASK_ID "
|
+ "FROM TASK t LEFT JOIN ATTACHMENT AS a ON t.ID = a.TASK_ID "
|
||||||
|
|
@ -1283,7 +1282,7 @@ public interface QueryMapper {
|
||||||
+ "<if test='!orderBy.isEmpty()'>ORDER BY <foreach item='orderItem' collection='orderBy' separator=',' >${orderItem}</foreach></if> "
|
+ "<if test='!orderBy.isEmpty()'>ORDER BY <foreach item='orderItem' collection='orderBy' separator=',' >${orderItem}</foreach></if> "
|
||||||
+ "<if test=\"_databaseId == 'db2'\">with UR </if> "
|
+ "<if test=\"_databaseId == 'db2'\">with UR </if> "
|
||||||
+ "</script>")
|
+ "</script>")
|
||||||
List<String> queryWorkbasketAccessItemColumnValues(WorkbasketAccessItemQueryImpl accessItemQuery);
|
List<String> queryWorkbasketAccessItemColumnValues(WorkbasketAccessItemQuery accessItemQuery);
|
||||||
|
|
||||||
@Select("<script>SELECT DISTINCT ${columnName} "
|
@Select("<script>SELECT DISTINCT ${columnName} "
|
||||||
+ "FROM WORKBASKET_ACCESS_LIST AS WBA LEFT JOIN WORKBASKET AS WB ON WORKBASKET_ID = WB.ID"
|
+ "FROM WORKBASKET_ACCESS_LIST AS WBA LEFT JOIN WORKBASKET AS WB ON WORKBASKET_ID = WB.ID"
|
||||||
|
|
@ -1299,5 +1298,6 @@ public interface QueryMapper {
|
||||||
+ "<if test='!orderBy.isEmpty()'>ORDER BY <foreach item='orderItem' collection='orderBy' separator=',' >${orderItem}</foreach></if> "
|
+ "<if test='!orderBy.isEmpty()'>ORDER BY <foreach item='orderItem' collection='orderBy' separator=',' >${orderItem}</foreach></if> "
|
||||||
+ "<if test=\"_databaseId == 'db2'\">with UR </if> "
|
+ "<if test=\"_databaseId == 'db2'\">with UR </if> "
|
||||||
+ "</script>")
|
+ "</script>")
|
||||||
List<String> queryWorkbasketAccessItemExtendedColumnValues(WorkbasketAccessItemExtendedQueryImpl accessItemExtendedQuery);
|
List<String> queryWorkbasketAccessItemExtendedColumnValues(
|
||||||
|
WorkbasketAccessItemQuery.Extended accessItemExtendedQuery);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -27,9 +27,6 @@ import pro.taskana.security.WithAccessId;
|
||||||
@RunWith(JAASRunner.class)
|
@RunWith(JAASRunner.class)
|
||||||
public class QueryWorkbasketAccessItemsAccTest extends AbstractAccTest {
|
public class QueryWorkbasketAccessItemsAccTest extends AbstractAccTest {
|
||||||
|
|
||||||
private static SortDirection asc = SortDirection.ASCENDING;
|
|
||||||
private static SortDirection desc = SortDirection.DESCENDING;
|
|
||||||
|
|
||||||
public QueryWorkbasketAccessItemsAccTest() {
|
public QueryWorkbasketAccessItemsAccTest() {
|
||||||
super();
|
super();
|
||||||
}
|
}
|
||||||
|
|
@ -88,8 +85,8 @@ public class QueryWorkbasketAccessItemsAccTest extends AbstractAccTest {
|
||||||
WorkbasketService workbasketService = taskanaEngine.getWorkbasketService();
|
WorkbasketService workbasketService = taskanaEngine.getWorkbasketService();
|
||||||
WorkbasketAccessItemQuery query = workbasketService.createWorkbasketAccessItemQuery()
|
WorkbasketAccessItemQuery query = workbasketService.createWorkbasketAccessItemQuery()
|
||||||
.accessIdIn("user_1_1", "group_1")
|
.accessIdIn("user_1_1", "group_1")
|
||||||
.orderByAccessId(desc)
|
.orderByAccessId(SortDirection.DESCENDING)
|
||||||
.orderByWorkbasketId(desc);
|
.orderByWorkbasketId(SortDirection.DESCENDING);
|
||||||
List<WorkbasketAccessItem> results = query.list();
|
List<WorkbasketAccessItem> results = query.list();
|
||||||
long count = query.count();
|
long count = query.count();
|
||||||
Assert.assertEquals(8L, results.size());
|
Assert.assertEquals(8L, results.size());
|
||||||
|
|
@ -133,8 +130,8 @@ public class QueryWorkbasketAccessItemsAccTest extends AbstractAccTest {
|
||||||
WorkbasketService workbasketService = taskanaEngine.getWorkbasketService();
|
WorkbasketService workbasketService = taskanaEngine.getWorkbasketService();
|
||||||
List<WorkbasketAccessItem> results = workbasketService.createWorkbasketAccessItemQuery()
|
List<WorkbasketAccessItem> results = workbasketService.createWorkbasketAccessItemQuery()
|
||||||
.workbasketIdIn("WBI:100000000000000000000000000000000006")
|
.workbasketIdIn("WBI:100000000000000000000000000000000006")
|
||||||
.orderByWorkbasketId(desc)
|
.orderByWorkbasketId(SortDirection.DESCENDING)
|
||||||
.orderByAccessId(asc)
|
.orderByAccessId(SortDirection.ASCENDING)
|
||||||
.list();
|
.list();
|
||||||
Assert.assertEquals(3L, results.size());
|
Assert.assertEquals(3L, results.size());
|
||||||
Assert.assertEquals("WAI:100000000000000000000000000000000009", results.get(0).getId());
|
Assert.assertEquals("WAI:100000000000000000000000000000000009", results.get(0).getId());
|
||||||
|
|
@ -162,7 +159,7 @@ public class QueryWorkbasketAccessItemsAccTest extends AbstractAccTest {
|
||||||
public void testQueryForOrderById() throws NotAuthorizedException {
|
public void testQueryForOrderById() throws NotAuthorizedException {
|
||||||
WorkbasketService workbasketService = taskanaEngine.getWorkbasketService();
|
WorkbasketService workbasketService = taskanaEngine.getWorkbasketService();
|
||||||
List<WorkbasketAccessItem> results = workbasketService.createWorkbasketAccessItemQuery()
|
List<WorkbasketAccessItem> results = workbasketService.createWorkbasketAccessItemQuery()
|
||||||
.orderById(asc)
|
.orderById(SortDirection.ASCENDING)
|
||||||
.list();
|
.list();
|
||||||
assertEquals("0000000000000000000000000000000000000900", results.get(0).getId());
|
assertEquals("0000000000000000000000000000000000000900", results.get(0).getId());
|
||||||
assertEquals("WAI:100000000000000000000000000000000123", results.get(results.size() - 1).getId());
|
assertEquals("WAI:100000000000000000000000000000000123", results.get(results.size() - 1).getId());
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,10 @@
|
||||||
package pro.taskana.ldap;
|
package pro.taskana.ldap;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import pro.taskana.rest.resource.AccessIdResource;
|
import pro.taskana.rest.resource.AccessIdResource;
|
||||||
|
|
@ -17,100 +21,6 @@ public class LdapCacheTestImpl implements LdapCache {
|
||||||
* and {@link List<AccessIdResource>} as value (groups of which the user is a member) .
|
* and {@link List<AccessIdResource>} as value (groups of which the user is a member) .
|
||||||
*/
|
*/
|
||||||
private static Map<AccessIdResource, List<AccessIdResource>> users;
|
private static Map<AccessIdResource, List<AccessIdResource>> users;
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<AccessIdResource> findMatchingAccessId(String searchFor, int maxNumerOfReturnedAccessIds) {
|
|
||||||
return findAcessIdResource(searchFor, maxNumerOfReturnedAccessIds, false);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<AccessIdResource> findGroupsOfUser(String searchFor, int maxNumerOfReturnedAccessIds) {
|
|
||||||
if (users == null) {
|
|
||||||
addUsersToGroups();
|
|
||||||
}
|
|
||||||
return findAcessIdResource(searchFor, maxNumerOfReturnedAccessIds, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
private List <AccessIdResource> findAcessIdResource (String searchFor, int maxNumerOfReturnedAccessIds, boolean groupMember) {
|
|
||||||
List<AccessIdResource> usersAndGroups = accessIds.stream()
|
|
||||||
.filter(t -> (t.getName().toLowerCase().contains(searchFor.toLowerCase())
|
|
||||||
|| t.getAccessId().toLowerCase().contains(searchFor.toLowerCase())))
|
|
||||||
.collect(Collectors.toList());
|
|
||||||
|
|
||||||
List<AccessIdResource> usersAndGroupsAux = new ArrayList<>(usersAndGroups);
|
|
||||||
if (groupMember) {
|
|
||||||
usersAndGroupsAux.forEach(item -> {
|
|
||||||
if (users.get(item) != null) {
|
|
||||||
usersAndGroups.addAll(users.get(item));
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
usersAndGroups.sort((AccessIdResource a, AccessIdResource b) -> {
|
|
||||||
return a.getAccessId().compareToIgnoreCase(b.getAccessId());
|
|
||||||
});
|
|
||||||
|
|
||||||
List<AccessIdResource> result = usersAndGroups.subList(0,
|
|
||||||
Math.min(usersAndGroups.size(), maxNumerOfReturnedAccessIds));
|
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void addUsersToGroups() {
|
|
||||||
List<AccessIdResource> groups = new ArrayList<>();
|
|
||||||
users = new HashMap<>();
|
|
||||||
|
|
||||||
accessIds.forEach(item -> {
|
|
||||||
if (!item.getAccessId().contains("ou=groups")) {
|
|
||||||
users.put(item, new ArrayList<>());
|
|
||||||
} else {
|
|
||||||
groups.add(item);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
int groupNumber = 0;
|
|
||||||
List<AccessIdResource> group0 = new ArrayList<>(), group1 = new ArrayList<>(), group2 = new ArrayList<>(), group3 = new ArrayList<>();
|
|
||||||
|
|
||||||
for (AccessIdResource group : groups) {
|
|
||||||
switch (groupNumber) {
|
|
||||||
case 0:
|
|
||||||
group0.add(group);
|
|
||||||
break;
|
|
||||||
case 1:
|
|
||||||
group1.add(group);
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
group2.add(group);
|
|
||||||
break;
|
|
||||||
case 3:
|
|
||||||
group3.add(group);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
groupNumber = (groupNumber + 1) % 4;
|
|
||||||
}
|
|
||||||
|
|
||||||
int countUser = 0;
|
|
||||||
for (AccessIdResource item : accessIds) {
|
|
||||||
if (!item.getAccessId().contains("ou=groups")) {
|
|
||||||
switch (countUser) {
|
|
||||||
case 0:
|
|
||||||
users.put(item, group0);
|
|
||||||
break;
|
|
||||||
case 1:
|
|
||||||
users.put(item, group1);
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
users.put(item, group2);
|
|
||||||
break;
|
|
||||||
case 3:
|
|
||||||
users.put(item, group3);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
groupNumber = (groupNumber + 1) % 4;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private static List<AccessIdResource> accessIds = new ArrayList<>(Arrays.asList(
|
private static List<AccessIdResource> accessIds = new ArrayList<>(Arrays.asList(
|
||||||
new AccessIdResource("Martin, Rojas Miguel Angel", "user_1_1"),
|
new AccessIdResource("Martin, Rojas Miguel Angel", "user_1_1"),
|
||||||
new AccessIdResource("Lengl, Marcel", "user_1_2"),
|
new AccessIdResource("Lengl, Marcel", "user_1_2"),
|
||||||
|
|
@ -371,4 +281,98 @@ public class LdapCacheTestImpl implements LdapCache {
|
||||||
new AccessIdResource("haftpflicht", "cn=haftpflicht,ou=groups,o=TaskanaTest"),
|
new AccessIdResource("haftpflicht", "cn=haftpflicht,ou=groups,o=TaskanaTest"),
|
||||||
new AccessIdResource("bauspar", "cn=bauspar,ou=groups,o=TaskanaTest")));
|
new AccessIdResource("bauspar", "cn=bauspar,ou=groups,o=TaskanaTest")));
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<AccessIdResource> findMatchingAccessId(String searchFor, int maxNumerOfReturnedAccessIds) {
|
||||||
|
return findAcessIdResource(searchFor, maxNumerOfReturnedAccessIds, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<AccessIdResource> findGroupsOfUser(String searchFor, int maxNumerOfReturnedAccessIds) {
|
||||||
|
if (users == null) {
|
||||||
|
addUsersToGroups();
|
||||||
|
}
|
||||||
|
return findAcessIdResource(searchFor, maxNumerOfReturnedAccessIds, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
private List<AccessIdResource> findAcessIdResource(String searchFor, int maxNumerOfReturnedAccessIds,
|
||||||
|
boolean groupMember) {
|
||||||
|
List<AccessIdResource> usersAndGroups = accessIds.stream()
|
||||||
|
.filter(t -> (t.getName().toLowerCase().contains(searchFor.toLowerCase())
|
||||||
|
|| t.getAccessId().toLowerCase().contains(searchFor.toLowerCase())))
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
|
||||||
|
List<AccessIdResource> usersAndGroupsAux = new ArrayList<>(usersAndGroups);
|
||||||
|
if (groupMember) {
|
||||||
|
usersAndGroupsAux.forEach(item -> {
|
||||||
|
if (users.get(item) != null) {
|
||||||
|
usersAndGroups.addAll(users.get(item));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
usersAndGroups.sort((AccessIdResource a, AccessIdResource b) -> {
|
||||||
|
return a.getAccessId().compareToIgnoreCase(b.getAccessId());
|
||||||
|
});
|
||||||
|
|
||||||
|
List<AccessIdResource> result = usersAndGroups.subList(0,
|
||||||
|
Math.min(usersAndGroups.size(), maxNumerOfReturnedAccessIds));
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void addUsersToGroups() {
|
||||||
|
List<AccessIdResource> groups = new ArrayList<>();
|
||||||
|
users = new HashMap<>();
|
||||||
|
|
||||||
|
accessIds.forEach(item -> {
|
||||||
|
if (!item.getAccessId().contains("ou=groups")) {
|
||||||
|
users.put(item, new ArrayList<>());
|
||||||
|
} else {
|
||||||
|
groups.add(item);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
int groupNumber = 0;
|
||||||
|
List<AccessIdResource> group0 = new ArrayList<>(), group1 = new ArrayList<>(), group2 = new ArrayList<>(), group3 = new ArrayList<>();
|
||||||
|
|
||||||
|
for (AccessIdResource group : groups) {
|
||||||
|
switch (groupNumber) {
|
||||||
|
case 0:
|
||||||
|
group0.add(group);
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
group1.add(group);
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
group2.add(group);
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
group3.add(group);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
groupNumber = (groupNumber + 1) % 4;
|
||||||
|
}
|
||||||
|
|
||||||
|
int countUser = 0;
|
||||||
|
for (AccessIdResource item : accessIds) {
|
||||||
|
if (!item.getAccessId().contains("ou=groups")) {
|
||||||
|
switch (countUser) {
|
||||||
|
case 0:
|
||||||
|
users.put(item, group0);
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
users.put(item, group1);
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
users.put(item, group2);
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
users.put(item, group3);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
groupNumber = (groupNumber + 1) % 4;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -1,5 +1,10 @@
|
||||||
package pro.taskana.ldap;
|
package pro.taskana.ldap;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import javax.annotation.PostConstruct;
|
||||||
|
import javax.naming.directory.SearchControls;
|
||||||
|
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
|
@ -12,15 +17,12 @@ import org.springframework.ldap.filter.EqualsFilter;
|
||||||
import org.springframework.ldap.filter.OrFilter;
|
import org.springframework.ldap.filter.OrFilter;
|
||||||
import org.springframework.ldap.filter.WhitespaceWildcardsFilter;
|
import org.springframework.ldap.filter.WhitespaceWildcardsFilter;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
import pro.taskana.exceptions.InvalidArgumentException;
|
import pro.taskana.exceptions.InvalidArgumentException;
|
||||||
import pro.taskana.exceptions.SystemException;
|
import pro.taskana.exceptions.SystemException;
|
||||||
import pro.taskana.impl.util.LoggerUtils;
|
import pro.taskana.impl.util.LoggerUtils;
|
||||||
import pro.taskana.rest.resource.AccessIdResource;
|
import pro.taskana.rest.resource.AccessIdResource;
|
||||||
|
|
||||||
import javax.annotation.PostConstruct;
|
|
||||||
import javax.naming.directory.SearchControls;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class for Ldap access.
|
* Class for Ldap access.
|
||||||
*
|
*
|
||||||
|
|
@ -31,14 +33,12 @@ public class LdapClient {
|
||||||
|
|
||||||
public static final String TASKANA_USE_LDAP_PROP_NAME = "taskana.ldap.useLdap";
|
public static final String TASKANA_USE_LDAP_PROP_NAME = "taskana.ldap.useLdap";
|
||||||
private static final Logger LOGGER = LoggerFactory.getLogger(LdapClient.class);
|
private static final Logger LOGGER = LoggerFactory.getLogger(LdapClient.class);
|
||||||
|
private static final String CN = "cn";
|
||||||
private boolean active = false;
|
private boolean active = false;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private Environment env;
|
private Environment env;
|
||||||
|
|
||||||
@Autowired(required = false)
|
@Autowired(required = false)
|
||||||
private LdapTemplate ldapTemplate;
|
private LdapTemplate ldapTemplate;
|
||||||
|
|
||||||
private String userSearchBase;
|
private String userSearchBase;
|
||||||
private String userSearchFilterName;
|
private String userSearchFilterName;
|
||||||
private String userSearchFilterValue;
|
private String userSearchFilterValue;
|
||||||
|
|
@ -52,8 +52,6 @@ public class LdapClient {
|
||||||
private String groupsOfUser;
|
private String groupsOfUser;
|
||||||
private int minSearchForLength;
|
private int minSearchForLength;
|
||||||
private int maxNumberOfReturnedAccessIds;
|
private int maxNumberOfReturnedAccessIds;
|
||||||
|
|
||||||
private static final String CN = "cn";
|
|
||||||
private String message;
|
private String message;
|
||||||
|
|
||||||
@PostConstruct
|
@PostConstruct
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,9 @@
|
||||||
package pro.taskana.rest;
|
package pro.taskana.rest;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.hateoas.PagedResources;
|
import org.springframework.hateoas.PagedResources;
|
||||||
import org.springframework.hateoas.config.EnableHypermediaSupport;
|
import org.springframework.hateoas.config.EnableHypermediaSupport;
|
||||||
|
|
@ -10,19 +14,16 @@ import org.springframework.web.bind.annotation.GetMapping;
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RequestParam;
|
import org.springframework.web.bind.annotation.RequestParam;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
import pro.taskana.BaseQuery;
|
import pro.taskana.BaseQuery;
|
||||||
import pro.taskana.WorkbasketAccessItemExtended;
|
import pro.taskana.WorkbasketAccessItemExtended;
|
||||||
import pro.taskana.WorkbasketAccessItemExtendedQuery;
|
import pro.taskana.WorkbasketAccessItemQuery;
|
||||||
import pro.taskana.WorkbasketService;
|
import pro.taskana.WorkbasketService;
|
||||||
import pro.taskana.exceptions.InvalidArgumentException;
|
import pro.taskana.exceptions.InvalidArgumentException;
|
||||||
import pro.taskana.exceptions.NotAuthorizedException;
|
import pro.taskana.exceptions.NotAuthorizedException;
|
||||||
import pro.taskana.rest.resource.WorkbasketAccesItemExtendedResource;
|
import pro.taskana.rest.resource.WorkbasketAccesItemExtendedResource;
|
||||||
import pro.taskana.rest.resource.assembler.WorkbasketAccessItemExtendedAssembler;
|
import pro.taskana.rest.resource.assembler.WorkbasketAccessItemExtendedAssembler;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Controller for Workbasket access.
|
* Controller for Workbasket access.
|
||||||
*/
|
*/
|
||||||
|
|
@ -52,7 +53,7 @@ public class WorkbasketAccessItemController extends AbstractPagingController {
|
||||||
@RequestParam MultiValueMap<String, String> params)
|
@RequestParam MultiValueMap<String, String> params)
|
||||||
throws NotAuthorizedException, InvalidArgumentException {
|
throws NotAuthorizedException, InvalidArgumentException {
|
||||||
|
|
||||||
WorkbasketAccessItemExtendedQuery query = workbasketService.createWorkbasketAccessItemExtendedQuery();
|
WorkbasketAccessItemQuery.Extended query = workbasketService.createWorkbasketAccessItemExtendedQuery();
|
||||||
query = getAccessIds(query, params);
|
query = getAccessIds(query, params);
|
||||||
query = applyFilterParams(query, params);
|
query = applyFilterParams(query, params);
|
||||||
query = applySortingParams(query, params);
|
query = applySortingParams(query, params);
|
||||||
|
|
@ -78,13 +79,14 @@ public class WorkbasketAccessItemController extends AbstractPagingController {
|
||||||
}
|
}
|
||||||
|
|
||||||
WorkbasketAccessItemExtendedAssembler assembler = new WorkbasketAccessItemExtendedAssembler();
|
WorkbasketAccessItemExtendedAssembler assembler = new WorkbasketAccessItemExtendedAssembler();
|
||||||
PagedResources<WorkbasketAccesItemExtendedResource> pagedResources = assembler.toResources(workbasketAccessItemsExtended,
|
PagedResources<WorkbasketAccesItemExtendedResource> pagedResources = assembler.toResources(
|
||||||
|
workbasketAccessItemsExtended,
|
||||||
pageMetadata);
|
pageMetadata);
|
||||||
|
|
||||||
return new ResponseEntity<>(pagedResources, HttpStatus.OK);
|
return new ResponseEntity<>(pagedResources, HttpStatus.OK);
|
||||||
}
|
}
|
||||||
|
|
||||||
private WorkbasketAccessItemExtendedQuery getAccessIds(WorkbasketAccessItemExtendedQuery query,
|
private WorkbasketAccessItemQuery.Extended getAccessIds(WorkbasketAccessItemQuery.Extended query,
|
||||||
MultiValueMap<String, String> params) throws InvalidArgumentException {
|
MultiValueMap<String, String> params) throws InvalidArgumentException {
|
||||||
if (params.containsKey(ACCESS_IDS)) {
|
if (params.containsKey(ACCESS_IDS)) {
|
||||||
String[] accessIds = extractVerticalBarSeparatedFields(params.get(ACCESS_IDS));
|
String[] accessIds = extractVerticalBarSeparatedFields(params.get(ACCESS_IDS));
|
||||||
|
|
@ -94,7 +96,7 @@ public class WorkbasketAccessItemController extends AbstractPagingController {
|
||||||
return query;
|
return query;
|
||||||
}
|
}
|
||||||
|
|
||||||
private WorkbasketAccessItemExtendedQuery applyFilterParams(WorkbasketAccessItemExtendedQuery query,
|
private WorkbasketAccessItemQuery.Extended applyFilterParams(WorkbasketAccessItemQuery.Extended query,
|
||||||
MultiValueMap<String, String> params) throws InvalidArgumentException {
|
MultiValueMap<String, String> params) throws InvalidArgumentException {
|
||||||
if (params.containsKey(WORKBASKET_KEY)) {
|
if (params.containsKey(WORKBASKET_KEY)) {
|
||||||
String[] keys = extractCommaSeparatedFields(params.get(WORKBASKET_KEY));
|
String[] keys = extractCommaSeparatedFields(params.get(WORKBASKET_KEY));
|
||||||
|
|
@ -117,7 +119,8 @@ public class WorkbasketAccessItemController extends AbstractPagingController {
|
||||||
return query;
|
return query;
|
||||||
}
|
}
|
||||||
|
|
||||||
private WorkbasketAccessItemExtendedQuery applySortingParams(WorkbasketAccessItemExtendedQuery query, MultiValueMap<String, String> params)
|
private WorkbasketAccessItemQuery.Extended applySortingParams(WorkbasketAccessItemQuery.Extended query,
|
||||||
|
MultiValueMap<String, String> params)
|
||||||
throws IllegalArgumentException {
|
throws IllegalArgumentException {
|
||||||
// sorting
|
// sorting
|
||||||
String sortBy = params.getFirst(SORT_BY);
|
String sortBy = params.getFirst(SORT_BY);
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,9 @@
|
||||||
package pro.taskana.rest;
|
package pro.taskana.rest;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.hateoas.PagedResources;
|
import org.springframework.hateoas.PagedResources;
|
||||||
import org.springframework.hateoas.PagedResources.PageMetadata;
|
import org.springframework.hateoas.PagedResources.PageMetadata;
|
||||||
|
|
@ -10,19 +14,40 @@ import org.springframework.http.HttpStatus;
|
||||||
import org.springframework.http.ResponseEntity;
|
import org.springframework.http.ResponseEntity;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
import org.springframework.util.MultiValueMap;
|
import org.springframework.util.MultiValueMap;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.DeleteMapping;
|
||||||
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
|
import org.springframework.web.bind.annotation.PathVariable;
|
||||||
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
|
import org.springframework.web.bind.annotation.PutMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestParam;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
import pro.taskana.BaseQuery.SortDirection;
|
import pro.taskana.BaseQuery.SortDirection;
|
||||||
import pro.taskana.*;
|
import pro.taskana.Workbasket;
|
||||||
import pro.taskana.exceptions.*;
|
import pro.taskana.WorkbasketAccessItem;
|
||||||
|
import pro.taskana.WorkbasketPermission;
|
||||||
|
import pro.taskana.WorkbasketQuery;
|
||||||
|
import pro.taskana.WorkbasketService;
|
||||||
|
import pro.taskana.WorkbasketSummary;
|
||||||
|
import pro.taskana.WorkbasketType;
|
||||||
|
import pro.taskana.exceptions.DomainNotFoundException;
|
||||||
|
import pro.taskana.exceptions.InvalidArgumentException;
|
||||||
|
import pro.taskana.exceptions.InvalidWorkbasketException;
|
||||||
|
import pro.taskana.exceptions.NotAuthorizedException;
|
||||||
|
import pro.taskana.exceptions.WorkbasketAlreadyExistException;
|
||||||
|
import pro.taskana.exceptions.WorkbasketInUseException;
|
||||||
|
import pro.taskana.exceptions.WorkbasketNotFoundException;
|
||||||
import pro.taskana.rest.resource.DistributionTargetResource;
|
import pro.taskana.rest.resource.DistributionTargetResource;
|
||||||
import pro.taskana.rest.resource.WorkbasketAccessItemResource;
|
import pro.taskana.rest.resource.WorkbasketAccessItemResource;
|
||||||
import pro.taskana.rest.resource.WorkbasketResource;
|
import pro.taskana.rest.resource.WorkbasketResource;
|
||||||
import pro.taskana.rest.resource.WorkbasketSummaryResource;
|
import pro.taskana.rest.resource.WorkbasketSummaryResource;
|
||||||
import pro.taskana.rest.resource.assembler.*;
|
import pro.taskana.rest.resource.assembler.DistributionTargetListAssembler;
|
||||||
|
import pro.taskana.rest.resource.assembler.WorkbasketAccessItemAssembler;
|
||||||
import java.util.ArrayList;
|
import pro.taskana.rest.resource.assembler.WorkbasketAccessItemListAssembler;
|
||||||
import java.util.Arrays;
|
import pro.taskana.rest.resource.assembler.WorkbasketAssembler;
|
||||||
import java.util.List;
|
import pro.taskana.rest.resource.assembler.WorkbasketSummaryResourcesAssembler;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Controller for all {@link Workbasket} related endpoints.
|
* Controller for all {@link Workbasket} related endpoints.
|
||||||
|
|
|
||||||
|
|
@ -1,18 +1,19 @@
|
||||||
package pro.taskana.rest.resource.assembler;
|
package pro.taskana.rest.resource.assembler;
|
||||||
|
|
||||||
|
import static org.springframework.hateoas.mvc.ControllerLinkBuilder.linkTo;
|
||||||
|
import static pro.taskana.rest.resource.assembler.AbstractRessourcesAssembler.getBuilderForOriginalUri;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
import org.springframework.hateoas.Link;
|
import org.springframework.hateoas.Link;
|
||||||
import org.springframework.hateoas.PagedResources;
|
import org.springframework.hateoas.PagedResources;
|
||||||
import org.springframework.hateoas.PagedResources.PageMetadata;
|
import org.springframework.hateoas.PagedResources.PageMetadata;
|
||||||
import org.springframework.web.util.UriComponentsBuilder;
|
import org.springframework.web.util.UriComponentsBuilder;
|
||||||
|
|
||||||
import pro.taskana.ClassificationSummary;
|
import pro.taskana.ClassificationSummary;
|
||||||
import pro.taskana.rest.ClassificationController;
|
import pro.taskana.rest.ClassificationController;
|
||||||
import pro.taskana.rest.resource.ClassificationSummaryResource;
|
import pro.taskana.rest.resource.ClassificationSummaryResource;
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import static org.springframework.hateoas.mvc.ControllerLinkBuilder.linkTo;
|
|
||||||
import static pro.taskana.rest.resource.assembler.AbstractRessourcesAssembler.getBuilderForOriginalUri;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author HH
|
* @author HH
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,12 @@
|
||||||
package pro.taskana.rest.resource.assembler;
|
package pro.taskana.rest.resource.assembler;
|
||||||
|
|
||||||
|
import static org.springframework.hateoas.mvc.ControllerLinkBuilder.linkTo;
|
||||||
|
import static org.springframework.hateoas.mvc.ControllerLinkBuilder.methodOn;
|
||||||
|
|
||||||
import org.springframework.beans.BeanUtils;
|
import org.springframework.beans.BeanUtils;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
import pro.taskana.WorkbasketAccessItem;
|
import pro.taskana.WorkbasketAccessItem;
|
||||||
import pro.taskana.WorkbasketService;
|
import pro.taskana.WorkbasketService;
|
||||||
import pro.taskana.exceptions.NotAuthorizedException;
|
import pro.taskana.exceptions.NotAuthorizedException;
|
||||||
|
|
@ -11,9 +15,6 @@ import pro.taskana.impl.WorkbasketAccessItemImpl;
|
||||||
import pro.taskana.rest.WorkbasketController;
|
import pro.taskana.rest.WorkbasketController;
|
||||||
import pro.taskana.rest.resource.WorkbasketAccessItemResource;
|
import pro.taskana.rest.resource.WorkbasketAccessItemResource;
|
||||||
|
|
||||||
import static org.springframework.hateoas.mvc.ControllerLinkBuilder.linkTo;
|
|
||||||
import static org.springframework.hateoas.mvc.ControllerLinkBuilder.methodOn;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Transforms {@link WorkbasketAccessItem} to its resource counterpart {@link WorkbasketAccessItemResource} and vice
|
* Transforms {@link WorkbasketAccessItem} to its resource counterpart {@link WorkbasketAccessItemResource} and vice
|
||||||
* versa.
|
* versa.
|
||||||
|
|
|
||||||
|
|
@ -1,20 +1,21 @@
|
||||||
package pro.taskana.rest.resource.assembler;
|
package pro.taskana.rest.resource.assembler;
|
||||||
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import static org.springframework.hateoas.mvc.ControllerLinkBuilder.linkTo;
|
||||||
import org.springframework.hateoas.Resources;
|
import static org.springframework.hateoas.mvc.ControllerLinkBuilder.methodOn;
|
||||||
import org.springframework.stereotype.Component;
|
|
||||||
import pro.taskana.WorkbasketAccessItem;
|
|
||||||
import pro.taskana.exceptions.NotAuthorizedException;
|
|
||||||
import pro.taskana.exceptions.WorkbasketNotFoundException;
|
|
||||||
import pro.taskana.rest.WorkbasketController;
|
|
||||||
import pro.taskana.rest.resource.WorkbasketAccessItemResource;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import static org.springframework.hateoas.mvc.ControllerLinkBuilder.linkTo;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import static org.springframework.hateoas.mvc.ControllerLinkBuilder.methodOn;
|
import org.springframework.hateoas.Resources;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import pro.taskana.WorkbasketAccessItem;
|
||||||
|
import pro.taskana.exceptions.NotAuthorizedException;
|
||||||
|
import pro.taskana.exceptions.WorkbasketNotFoundException;
|
||||||
|
import pro.taskana.rest.WorkbasketController;
|
||||||
|
import pro.taskana.rest.resource.WorkbasketAccessItemResource;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Mapper to convert from a list of WorkbasketAccessItem to a WorkbasketAccessItemResource.
|
* Mapper to convert from a list of WorkbasketAccessItem to a WorkbasketAccessItemResource.
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,14 @@
|
||||||
package pro.taskana.rest.resource.assembler;
|
package pro.taskana.rest.resource.assembler;
|
||||||
|
|
||||||
|
import static org.springframework.hateoas.mvc.ControllerLinkBuilder.linkTo;
|
||||||
|
import static org.springframework.hateoas.mvc.ControllerLinkBuilder.methodOn;
|
||||||
|
|
||||||
|
import java.time.Instant;
|
||||||
|
|
||||||
import org.springframework.beans.BeanUtils;
|
import org.springframework.beans.BeanUtils;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
import pro.taskana.Workbasket;
|
import pro.taskana.Workbasket;
|
||||||
import pro.taskana.WorkbasketService;
|
import pro.taskana.WorkbasketService;
|
||||||
import pro.taskana.exceptions.NotAuthorizedException;
|
import pro.taskana.exceptions.NotAuthorizedException;
|
||||||
|
|
@ -11,11 +17,6 @@ import pro.taskana.impl.WorkbasketImpl;
|
||||||
import pro.taskana.rest.WorkbasketController;
|
import pro.taskana.rest.WorkbasketController;
|
||||||
import pro.taskana.rest.resource.WorkbasketResource;
|
import pro.taskana.rest.resource.WorkbasketResource;
|
||||||
|
|
||||||
import java.time.Instant;
|
|
||||||
|
|
||||||
import static org.springframework.hateoas.mvc.ControllerLinkBuilder.linkTo;
|
|
||||||
import static org.springframework.hateoas.mvc.ControllerLinkBuilder.methodOn;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Transforms {@link Workbasket} to its resource counterpart {@link WorkbasketResource} and vice versa.
|
* Transforms {@link Workbasket} to its resource counterpart {@link WorkbasketResource} and vice versa.
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -1,18 +1,19 @@
|
||||||
package pro.taskana.rest.resource.assembler;
|
package pro.taskana.rest.resource.assembler;
|
||||||
|
|
||||||
|
import static org.springframework.hateoas.mvc.ControllerLinkBuilder.linkTo;
|
||||||
|
import static pro.taskana.rest.resource.assembler.AbstractRessourcesAssembler.getBuilderForOriginalUri;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
import org.springframework.hateoas.Link;
|
import org.springframework.hateoas.Link;
|
||||||
import org.springframework.hateoas.PagedResources;
|
import org.springframework.hateoas.PagedResources;
|
||||||
import org.springframework.hateoas.PagedResources.PageMetadata;
|
import org.springframework.hateoas.PagedResources.PageMetadata;
|
||||||
import org.springframework.web.util.UriComponentsBuilder;
|
import org.springframework.web.util.UriComponentsBuilder;
|
||||||
|
|
||||||
import pro.taskana.WorkbasketSummary;
|
import pro.taskana.WorkbasketSummary;
|
||||||
import pro.taskana.rest.WorkbasketController;
|
import pro.taskana.rest.WorkbasketController;
|
||||||
import pro.taskana.rest.resource.WorkbasketSummaryResource;
|
import pro.taskana.rest.resource.WorkbasketSummaryResource;
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import static org.springframework.hateoas.mvc.ControllerLinkBuilder.linkTo;
|
|
||||||
import static pro.taskana.rest.resource.assembler.AbstractRessourcesAssembler.getBuilderForOriginalUri;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author HH
|
* @author HH
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue