TSK-715 - Merge WorkbasketAccessItem entities and remove the extended one
This commit is contained in:
parent
c5868abbc1
commit
1e6fc73f7d
|
@ -21,6 +21,13 @@ public interface WorkbasketAccessItem {
|
||||||
*/
|
*/
|
||||||
String getWorkbasketId();
|
String getWorkbasketId();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the Key of the referenced workbasket.
|
||||||
|
*
|
||||||
|
* @return the workbasket Key
|
||||||
|
*/
|
||||||
|
String getWorkbasketKey();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the group id or user id for which this WorkbasketAccessItem controls access permissions.
|
* Returns the group id or user id for which this WorkbasketAccessItem controls access permissions.
|
||||||
*
|
*
|
||||||
|
|
|
@ -1,16 +0,0 @@
|
||||||
package pro.taskana;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Interface for WorkbasketAccessItemExtended. This interface is used to control access of users to workbaskets.
|
|
||||||
*
|
|
||||||
* @author mmr
|
|
||||||
*/
|
|
||||||
public interface WorkbasketAccessItemExtended extends WorkbasketAccessItem {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the Key of the referenced workbasket.
|
|
||||||
*
|
|
||||||
* @return the workbasket key
|
|
||||||
*/
|
|
||||||
String getWorkbasketKey();
|
|
||||||
}
|
|
|
@ -3,53 +3,103 @@ package pro.taskana;
|
||||||
/**
|
/**
|
||||||
* WorkbasketAccessItemQuery for generating dynamic SQL.
|
* WorkbasketAccessItemQuery for generating dynamic SQL.
|
||||||
*/
|
*/
|
||||||
public interface WorkbasketAccessItemQuery
|
public interface WorkbasketAccessItemQuery extends BaseQuery<WorkbasketAccessItem> {
|
||||||
extends AbstractWorkbasketAccessItemQuery<WorkbasketAccessItemQuery, WorkbasketAccessItem> {
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Extended version of {@link WorkbasketAccessItemQuery}.
|
* Add your unique entry id to your query as filter.
|
||||||
|
*
|
||||||
|
* @param ids
|
||||||
|
* the unique entry IDs
|
||||||
|
* @return the query
|
||||||
*/
|
*/
|
||||||
interface Extended extends AbstractWorkbasketAccessItemQuery<Extended, WorkbasketAccessItemExtended> {
|
WorkbasketAccessItemQuery idIn(String... ids);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Add your unique entry workbasket key to your query as filter.
|
* Add your workbasket id to your query.
|
||||||
*
|
*
|
||||||
* @param keys
|
* @param workbasketId
|
||||||
* the unique entry Keys
|
* the workbasket Id
|
||||||
* @return the query
|
* @return the query
|
||||||
*/
|
*/
|
||||||
Extended workbasketKeyIn(String... keys);
|
WorkbasketAccessItemQuery workbasketIdIn(String... workbasketId);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sort the query result by workbasket key.
|
* Add your unique entry workbasket key to your query as filter.
|
||||||
*
|
*
|
||||||
* @param sortDirection
|
* @param keys
|
||||||
* Determines whether the result is sorted in ascending or descending order. If sortDirection is null,
|
* the unique entry Keys
|
||||||
* the result is sorted in ascending order
|
* @return the query
|
||||||
* @return the query
|
*/
|
||||||
*/
|
WorkbasketAccessItemQuery workbasketKeyIn(String... keys);
|
||||||
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
|
* 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
|
* 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.
|
* with an OR operator, this is, the query searches access items workbaskets whose keys are like key1 or like key2, etc.
|
||||||
*
|
*
|
||||||
* @param key
|
* @param key
|
||||||
* the keys as Strings
|
* the keys as Strings
|
||||||
* @return the query
|
* @return the query
|
||||||
*/
|
*/
|
||||||
Extended workbasketKeyLike(String... key);
|
WorkbasketAccessItemQuery workbasketKeyLike(String... key);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Add keys to your query. The keys are compared case-insensitively to the keys of access items with the SQL LIKE
|
* Add your accessIds to your query.
|
||||||
* 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 accessId
|
||||||
*
|
* as access Ids
|
||||||
* @param ids
|
* @return the query
|
||||||
* the ids as Strings
|
*/
|
||||||
* @return the query
|
WorkbasketAccessItemQuery accessIdIn(String... accessId);
|
||||||
*/
|
|
||||||
Extended accessIdLike(String... ids);
|
/**
|
||||||
}
|
* 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
|
||||||
|
*/
|
||||||
|
WorkbasketAccessItemQuery accessIdLike(String... ids);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 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 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
|
||||||
|
*/
|
||||||
|
WorkbasketAccessItemQuery orderByWorkbasketKey(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);
|
||||||
}
|
}
|
||||||
|
|
|
@ -87,17 +87,6 @@ public interface WorkbasketService {
|
||||||
*/
|
*/
|
||||||
WorkbasketAccessItem newWorkbasketAccessItem(String workbasketId, String accessId);
|
WorkbasketAccessItem newWorkbasketAccessItem(String workbasketId, String accessId);
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns a new WorkbasketAccessItemExtended which is not persisted.
|
|
||||||
*
|
|
||||||
* @param workbasketId
|
|
||||||
* the workbasket id used to identify the referenced workbasket
|
|
||||||
* @param accessId
|
|
||||||
* the group id or user id for which access is controlled
|
|
||||||
* @return new WorkbasketAccessItem
|
|
||||||
*/
|
|
||||||
WorkbasketAccessItemExtended newWorkbasketAccessItemExtended(String workbasketId, String accessId);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create and persist a new {@link WorkbasketAccessItem} with a WorkbasketId, an accessId and permissions.
|
* Create and persist a new {@link WorkbasketAccessItem} with a WorkbasketId, an accessId and permissions.
|
||||||
*
|
*
|
||||||
|
@ -215,15 +204,6 @@ public interface WorkbasketService {
|
||||||
*/
|
*/
|
||||||
WorkbasketAccessItemQuery createWorkbasketAccessItemQuery() throws NotAuthorizedException;
|
WorkbasketAccessItemQuery createWorkbasketAccessItemQuery() throws NotAuthorizedException;
|
||||||
|
|
||||||
/**
|
|
||||||
* This method provides a query builder for querying the database.
|
|
||||||
*
|
|
||||||
* @return a {@link WorkbasketAccessItemQuery.Extended}
|
|
||||||
* @throws NotAuthorizedException
|
|
||||||
* if the current user is not member of role BUSINESS_ADMIN or ADMIN
|
|
||||||
*/
|
|
||||||
WorkbasketAccessItemQuery.Extended createWorkbasketAccessItemExtendedQuery() throws NotAuthorizedException;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns a new workbasket which is not persisted.
|
* Returns a new workbasket which is not persisted.
|
||||||
*
|
*
|
||||||
|
|
|
@ -1,42 +0,0 @@
|
||||||
package pro.taskana.impl;
|
|
||||||
|
|
||||||
import java.util.Objects;
|
|
||||||
|
|
||||||
import pro.taskana.WorkbasketAccessItemExtended;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* WorkbasketAccessItemExtendedImpl Entity.
|
|
||||||
*/
|
|
||||||
public class WorkbasketAccessItemExtendedImpl extends WorkbasketAccessItemImpl implements WorkbasketAccessItemExtended {
|
|
||||||
|
|
||||||
private String workbasketKey;
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getWorkbasketKey() {
|
|
||||||
return workbasketKey;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setWorkbasketKey(String workbasketKey) {
|
|
||||||
this.workbasketKey = workbasketKey;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int hashCode() {
|
|
||||||
return Objects.hash(super.hashCode(), workbasketKey);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean equals(Object o) {
|
|
||||||
if (this == o) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
if (!(o instanceof WorkbasketAccessItemExtendedImpl)) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (!super.equals(o)) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
WorkbasketAccessItemExtendedImpl that = (WorkbasketAccessItemExtendedImpl) o;
|
|
||||||
return Objects.equals(workbasketKey, that.workbasketKey);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -10,6 +10,7 @@ public class WorkbasketAccessItemImpl implements WorkbasketAccessItem {
|
||||||
|
|
||||||
private String id;
|
private String id;
|
||||||
private String workbasketId;
|
private String workbasketId;
|
||||||
|
private String workbasketKey;
|
||||||
private String accessId;
|
private String accessId;
|
||||||
private String accessName;
|
private String accessName;
|
||||||
private boolean permRead;
|
private boolean permRead;
|
||||||
|
@ -60,6 +61,15 @@ public class WorkbasketAccessItemImpl implements WorkbasketAccessItem {
|
||||||
this.workbasketId = workbasketId;
|
this.workbasketId = workbasketId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getWorkbasketKey() {
|
||||||
|
return workbasketKey;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setWorkbasketKey(String workbasketKey) {
|
||||||
|
this.workbasketKey = workbasketKey;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* (non-Javadoc)
|
* (non-Javadoc)
|
||||||
* @see pro.taskana.impl.WorkbasketAccessItem#getAccessId()
|
* @see pro.taskana.impl.WorkbasketAccessItem#getAccessId()
|
||||||
|
@ -408,6 +418,8 @@ public class WorkbasketAccessItemImpl implements WorkbasketAccessItem {
|
||||||
builder.append(id);
|
builder.append(id);
|
||||||
builder.append(", workbasketId=");
|
builder.append(", workbasketId=");
|
||||||
builder.append(workbasketId);
|
builder.append(workbasketId);
|
||||||
|
builder.append(", workbasketKey=");
|
||||||
|
builder.append(workbasketKey);
|
||||||
builder.append(", accessId=");
|
builder.append(", accessId=");
|
||||||
builder.append(accessId);
|
builder.append(accessId);
|
||||||
builder.append(", permRead=");
|
builder.append(", permRead=");
|
||||||
|
|
|
@ -1,108 +1,258 @@
|
||||||
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.
|
||||||
*/
|
*/
|
||||||
public class WorkbasketAccessItemQueryImpl
|
public class WorkbasketAccessItemQueryImpl implements WorkbasketAccessItemQuery {
|
||||||
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_VALUE_MAPPER = "pro.taskana.mappings.QueryMapper.queryWorkbasketAccessItemColumnValues";
|
private static final String LINK_TO_COUNTER = "pro.taskana.mappings.QueryMapper.countQueryWorkbasketAccessItems";
|
||||||
|
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[] accessIdLike;
|
||||||
|
private String[] workbasketIdIn;
|
||||||
|
private String[] workbasketKeyIn;
|
||||||
|
private String[] workbasketKeyLike;
|
||||||
|
private String[] idIn;
|
||||||
|
|
||||||
|
private TaskanaEngineImpl taskanaEngine;
|
||||||
|
private List<String> orderBy;
|
||||||
|
private List<String> orderColumns;
|
||||||
|
|
||||||
WorkbasketAccessItemQueryImpl(TaskanaEngine taskanaEngine) {
|
WorkbasketAccessItemQueryImpl(TaskanaEngine taskanaEngine) {
|
||||||
super(taskanaEngine);
|
this.taskanaEngine = (TaskanaEngineImpl) taskanaEngine;
|
||||||
|
orderBy = new ArrayList<>();
|
||||||
|
orderColumns = new ArrayList<>();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
WorkbasketAccessItemQuery _this() {
|
public WorkbasketAccessItemQuery idIn(String... ids) {
|
||||||
|
this.idIn = ids;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
String getLinkToMapper() {
|
public WorkbasketAccessItemQuery workbasketIdIn(String... id) {
|
||||||
return LINK_TO_MAPPER;
|
this.workbasketIdIn = id;
|
||||||
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
String getLinkToValueMapper() {
|
public WorkbasketAccessItemQuery workbasketKeyIn(String... keys) {
|
||||||
return LINK_TO_VALUE_MAPPER;
|
this.workbasketKeyIn = keys;
|
||||||
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
@Override
|
||||||
* Extended version of {@link WorkbasketAccessItemQueryImpl}.
|
public WorkbasketAccessItemQuery workbasketKeyLike(String... key) {
|
||||||
*/
|
this.workbasketKeyLike = toUpperCopy(key);
|
||||||
public static class Extended
|
return this;
|
||||||
extends AbstractWorkbasketAccessItemQueryImpl<WorkbasketAccessItemQuery.Extended, WorkbasketAccessItemExtended>
|
}
|
||||||
implements WorkbasketAccessItemQuery.Extended {
|
|
||||||
|
|
||||||
private static final String LINK_TO_MAPPER_EXTENDED = "pro.taskana.mappings.QueryMapper.queryWorkbasketAccessItemsExtended";
|
@Override
|
||||||
private static final String LINK_TO_VALUE_MAPPER_EXTENDED = "pro.taskana.mappings.QueryMapper.queryWorkbasketAccessItemExtendedColumnValues";
|
public WorkbasketAccessItemQuery accessIdIn(String... accessId) {
|
||||||
|
this.accessIdIn = accessId;
|
||||||
|
WorkbasketQueryImpl.lowercaseAccessIds(this.accessIdIn);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
private String[] workbasketKeyIn;
|
@Override
|
||||||
private String[] workbasketKeyLike;
|
public WorkbasketAccessItemQuery accessIdLike(String... ids) {
|
||||||
private String[] accessIdLike;
|
this.accessIdLike = toUpperCopy(ids);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
Extended(TaskanaEngine taskanaEngine) {
|
@Override
|
||||||
super(taskanaEngine);
|
public WorkbasketAccessItemQuery orderById(SortDirection sortDirection) {
|
||||||
|
return addOrderCriteria("ID", sortDirection);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public WorkbasketAccessItemQuery orderByWorkbasketId(SortDirection sortDirection) {
|
||||||
|
return addOrderCriteria("WORKBASKET_ID", sortDirection);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public WorkbasketAccessItemQuery orderByWorkbasketKey(SortDirection sortDirection) {
|
||||||
|
return addOrderCriteria("WB.KEY", sortDirection);
|
||||||
|
}
|
||||||
|
|
||||||
|
@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
|
@Override
|
||||||
WorkbasketAccessItemQuery.Extended _this() {
|
public List<String> listValues(String columnName, SortDirection sortDirection) {
|
||||||
return this;
|
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
|
@Override
|
||||||
String getLinkToMapper() {
|
public List<WorkbasketAccessItem> list(int offset, int limit) {
|
||||||
return LINK_TO_MAPPER_EXTENDED;
|
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
|
@Override
|
||||||
String getLinkToValueMapper() {
|
public WorkbasketAccessItem single() {
|
||||||
return LINK_TO_VALUE_MAPPER_EXTENDED;
|
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
|
@Override
|
||||||
public WorkbasketAccessItemQuery.Extended workbasketKeyIn(String... keys) {
|
public long count() {
|
||||||
this.workbasketKeyIn = keys;
|
LOGGER.debug("entry to count(), this = {}", this);
|
||||||
return 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);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
private WorkbasketAccessItemQuery addOrderCriteria(String colName, SortDirection sortDirection) {
|
||||||
public WorkbasketAccessItemQuery.Extended orderByWorkbasketKey(SortDirection sortDirection) {
|
String orderByDirection = " " + (sortDirection == null ? SortDirection.ASCENDING.toString() : sortDirection.toString());
|
||||||
return addOrderCriteria("WB.KEY", sortDirection);
|
orderBy.add(colName + orderByDirection);
|
||||||
}
|
orderColumns.add(colName);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
public String[] getIdIn() {
|
||||||
public WorkbasketAccessItemQuery.Extended workbasketKeyLike(String... key) {
|
return this.idIn;
|
||||||
this.workbasketKeyLike = toUpperCopy(key);
|
}
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
public String[] getAccessIdIn() {
|
||||||
public WorkbasketAccessItemQuery.Extended accessIdLike(String... ids) {
|
return accessIdIn;
|
||||||
this.accessIdLike = toUpperCopy(ids);
|
}
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String[] getWorkbasketKeyIn() {
|
public String[] getAccessIdLike() {
|
||||||
return workbasketKeyIn;
|
return accessIdLike;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String[] getAccessIdLike() {
|
public String[] getWorkbasketIdIn() {
|
||||||
return accessIdLike;
|
return workbasketIdIn;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String[] getWorkbasketKeyLike() {
|
public List<String> getOrderBy() {
|
||||||
return workbasketKeyLike;
|
return orderBy;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<String> getOrderColumns() {
|
||||||
|
return orderColumns;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getColumnName() {
|
||||||
|
return columnName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String[] getWorkbasketKeyIn() {
|
||||||
|
return workbasketKeyIn;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String[] getWorkbasketKeyLike() {
|
||||||
|
return workbasketKeyLike;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
StringBuilder builder = new StringBuilder();
|
||||||
|
builder.append("WorkbasketAccessItemQueryImpl [idIn=");
|
||||||
|
builder.append(Arrays.toString(idIn));
|
||||||
|
builder.append(", accessIdIn=");
|
||||||
|
builder.append(Arrays.toString(accessIdIn));
|
||||||
|
builder.append(", workbasketIdIn=");
|
||||||
|
builder.append(Arrays.toString(workbasketIdIn));
|
||||||
|
builder.append(", orderBy=");
|
||||||
|
builder.append(orderBy);
|
||||||
|
builder.append("]");
|
||||||
|
return builder.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -14,7 +14,6 @@ import pro.taskana.TaskanaEngine;
|
||||||
import pro.taskana.TaskanaRole;
|
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.WorkbasketAccessItemQuery;
|
import pro.taskana.WorkbasketAccessItemQuery;
|
||||||
import pro.taskana.WorkbasketPermission;
|
import pro.taskana.WorkbasketPermission;
|
||||||
import pro.taskana.WorkbasketQuery;
|
import pro.taskana.WorkbasketQuery;
|
||||||
|
@ -159,14 +158,6 @@ public class WorkbasketServiceImpl implements WorkbasketService {
|
||||||
return accessItem;
|
return accessItem;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public WorkbasketAccessItemExtended newWorkbasketAccessItemExtended(String workbasketId, String accessId) {
|
|
||||||
WorkbasketAccessItemExtendedImpl accessItem = new WorkbasketAccessItemExtendedImpl();
|
|
||||||
accessItem.setWorkbasketId(workbasketId);
|
|
||||||
accessItem.setAccessId(accessId);
|
|
||||||
return accessItem;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public WorkbasketAccessItem createWorkbasketAccessItem(WorkbasketAccessItem workbasketAccessItem)
|
public WorkbasketAccessItem createWorkbasketAccessItem(WorkbasketAccessItem workbasketAccessItem)
|
||||||
throws InvalidArgumentException, NotAuthorizedException, WorkbasketNotFoundException {
|
throws InvalidArgumentException, NotAuthorizedException, WorkbasketNotFoundException {
|
||||||
|
@ -803,10 +794,4 @@ public class WorkbasketServiceImpl implements WorkbasketService {
|
||||||
return new WorkbasketAccessItemQueryImpl(this.taskanaEngine);
|
return new WorkbasketAccessItemQueryImpl(this.taskanaEngine);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public WorkbasketAccessItemQuery.Extended createWorkbasketAccessItemExtendedQuery() throws NotAuthorizedException {
|
|
||||||
taskanaEngine.checkRoleMembership(TaskanaRole.ADMIN, TaskanaRole.BUSINESS_ADMIN);
|
|
||||||
return new WorkbasketAccessItemQueryImpl.Extended(this.taskanaEngine);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,7 +13,6 @@ 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.WorkbasketAccessItemImpl;
|
import pro.taskana.impl.WorkbasketAccessItemImpl;
|
||||||
import pro.taskana.impl.WorkbasketQueryImpl;
|
import pro.taskana.impl.WorkbasketQueryImpl;
|
||||||
import pro.taskana.impl.WorkbasketSummaryImpl;
|
import pro.taskana.impl.WorkbasketSummaryImpl;
|
||||||
|
@ -554,55 +553,17 @@ public interface QueryMapper {
|
||||||
@Result(property = "markedForDeletion", column = "MARKED_FOR_DELETION")})
|
@Result(property = "markedForDeletion", column = "MARKED_FOR_DELETION")})
|
||||||
List<WorkbasketSummaryImpl> queryWorkbasketSummaries(WorkbasketQueryImpl workbasketQuery);
|
List<WorkbasketSummaryImpl> queryWorkbasketSummaries(WorkbasketQueryImpl workbasketQuery);
|
||||||
|
|
||||||
@Select("<script>"
|
|
||||||
+ "SELECT "
|
|
||||||
+ "ID, WORKBASKET_ID, ACCESS_ID, ACCESS_NAME, PERM_READ, PERM_OPEN, PERM_APPEND, PERM_TRANSFER, PERM_DISTRIBUTE, PERM_CUSTOM_1, PERM_CUSTOM_2, "
|
|
||||||
+ "PERM_CUSTOM_3, PERM_CUSTOM_4, PERM_CUSTOM_5, PERM_CUSTOM_6, PERM_CUSTOM_7, PERM_CUSTOM_8, PERM_CUSTOM_9, PERM_CUSTOM_10, PERM_CUSTOM_11, PERM_CUSTOM_12 "
|
|
||||||
+ "from WORKBASKET_ACCESS_LIST "
|
|
||||||
+ "<where>"
|
|
||||||
+ "<if test='idIn != null'>AND ID IN(<foreach item='item' collection='idIn' separator=',' >#{item}</foreach>)</if> "
|
|
||||||
+ "<if test='workbasketIdIn != null'>AND WORKBASKET_ID IN(<foreach item='item' collection='workbasketIdIn' separator=',' >#{item}</foreach>)</if> "
|
|
||||||
+ "<if test='accessIdIn != null'>AND ACCESS_ID IN(<foreach item='item' collection='accessIdIn' separator=',' >#{item}</foreach>) </if> "
|
|
||||||
+ "</where>"
|
|
||||||
+ "<if test='!orderBy.isEmpty()'>ORDER BY <foreach item='orderItem' collection='orderBy' separator=',' >${orderItem}</foreach></if> "
|
|
||||||
+ "<if test=\"_databaseId == 'db2'\">with UR </if> "
|
|
||||||
+ "</script>")
|
|
||||||
@Results({
|
|
||||||
@Result(property = "id", column = "ID"),
|
|
||||||
@Result(property = "workbasketId", column = "WORKBASKET_ID"),
|
|
||||||
@Result(property = "accessId", column = "ACCESS_ID"),
|
|
||||||
@Result(property = "accessName", column = "ACCESS_NAME"),
|
|
||||||
@Result(property = "permRead", column = "PERM_READ"),
|
|
||||||
@Result(property = "permOpen", column = "PERM_OPEN"),
|
|
||||||
@Result(property = "permAppend", column = "PERM_APPEND"),
|
|
||||||
@Result(property = "permTransfer", column = "PERM_TRANSFER"),
|
|
||||||
@Result(property = "permDistribute", column = "PERM_DISTRIBUTE"),
|
|
||||||
@Result(property = "permCustom1", column = "PERM_CUSTOM_1"),
|
|
||||||
@Result(property = "permCustom2", column = "PERM_CUSTOM_2"),
|
|
||||||
@Result(property = "permCustom3", column = "PERM_CUSTOM_3"),
|
|
||||||
@Result(property = "permCustom4", column = "PERM_CUSTOM_4"),
|
|
||||||
@Result(property = "permCustom5", column = "PERM_CUSTOM_5"),
|
|
||||||
@Result(property = "permCustom6", column = "PERM_CUSTOM_6"),
|
|
||||||
@Result(property = "permCustom7", column = "PERM_CUSTOM_7"),
|
|
||||||
@Result(property = "permCustom8", column = "PERM_CUSTOM_8"),
|
|
||||||
@Result(property = "permCustom9", column = "PERM_CUSTOM_9"),
|
|
||||||
@Result(property = "permCustom10", column = "PERM_CUSTOM_10"),
|
|
||||||
@Result(property = "permCustom11", column = "PERM_CUSTOM_11"),
|
|
||||||
@Result(property = "permCustom12", column = "PERM_CUSTOM_12")})
|
|
||||||
List<WorkbasketAccessItemImpl> queryWorkbasketAccessItems(WorkbasketAccessItemQuery accessItemQuery);
|
|
||||||
|
|
||||||
@Select("<script>"
|
@Select("<script>"
|
||||||
+ "SELECT "
|
+ "SELECT "
|
||||||
+ "WBA.ID, WORKBASKET_ID, WB.KEY, ACCESS_ID, ACCESS_NAME, PERM_READ, PERM_OPEN, PERM_APPEND, PERM_TRANSFER, PERM_DISTRIBUTE, PERM_CUSTOM_1, PERM_CUSTOM_2, "
|
+ "WBA.ID, WORKBASKET_ID, WB.KEY, ACCESS_ID, ACCESS_NAME, PERM_READ, PERM_OPEN, PERM_APPEND, PERM_TRANSFER, PERM_DISTRIBUTE, PERM_CUSTOM_1, PERM_CUSTOM_2, "
|
||||||
+ "PERM_CUSTOM_3, PERM_CUSTOM_4, PERM_CUSTOM_5, PERM_CUSTOM_6, PERM_CUSTOM_7, PERM_CUSTOM_8, PERM_CUSTOM_9, PERM_CUSTOM_10, PERM_CUSTOM_11, PERM_CUSTOM_12 "
|
+ "PERM_CUSTOM_3, PERM_CUSTOM_4, PERM_CUSTOM_5, PERM_CUSTOM_6, PERM_CUSTOM_7, PERM_CUSTOM_8, PERM_CUSTOM_9, PERM_CUSTOM_10, PERM_CUSTOM_11, PERM_CUSTOM_12 "
|
||||||
+ "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"
|
||||||
+ "<where>"
|
+ "<where>"
|
||||||
+ "<if test='idIn != null'>AND ID IN(<foreach item='item' collection='idIn' separator=',' >#{item}</foreach>)</if> "
|
+ "<if test='idIn != null'>AND WBA.ID IN(<foreach item='item' collection='idIn' separator=',' >#{item}</foreach>)</if> "
|
||||||
+ "<if test='workbasketIdIn != null'>AND WORKBASKET_ID IN(<foreach item='item' collection='workbasketIdIn' separator=',' >#{item}</foreach>)</if> "
|
+ "<if test='workbasketIdIn != null'>AND WORKBASKET_ID IN(<foreach item='item' collection='workbasketIdIn' separator=',' >#{item}</foreach>)</if> "
|
||||||
+ "<if test='workbasketKeyIn != null'>AND WB.KEY IN(<foreach item='item' collection='workbasketKeyIn' separator=',' >#{item}</foreach>)</if> "
|
+ "<if test='workbasketKeyIn != null'>AND WB.KEY IN(<foreach item='item' collection='workbasketKeyIn' separator=',' >#{item}</foreach>)</if> "
|
||||||
+ "<if test='workbasketKeyLike != null'>AND (<foreach item='item' collection='workbasketKeyLike' separator=' OR '>UPPER(WB.KEY) LIKE #{item}</foreach>)</if> "
|
+ "<if test='workbasketKeyLike != null'>AND (<foreach item='item' collection='workbasketKeyLike' separator=' OR '>UPPER(WB.KEY) LIKE #{item}</foreach>)</if> "
|
||||||
+ "<if test='accessIdIn != null'>AND ACCESS_ID IN(<foreach item='item' collection='accessIdIn' separator=',' >#{item}</foreach>) </if> "
|
+ "<if test='accessIdIn != null'>AND ACCESS_ID IN(<foreach item='item' collection='accessIdIn' separator=',' >#{item}</foreach>) </if> "
|
||||||
+ "<if test='accessIdLike != null'>AND (<foreach item='item' collection='accessIdLike' separator=' OR '>UPPER(ACCESS_ID) LIKE #{item}</foreach>)</if> "
|
|
||||||
+ "</where>"
|
+ "</where>"
|
||||||
+ "<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> "
|
||||||
|
@ -630,8 +591,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<WorkbasketAccessItemExtendedImpl> queryWorkbasketAccessItemsExtended(
|
List<WorkbasketAccessItemImpl> queryWorkbasketAccessItems(WorkbasketAccessItemQuery accessItemQuery);
|
||||||
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 "
|
||||||
|
@ -1249,10 +1209,12 @@ public interface QueryMapper {
|
||||||
List<String> queryWorkbasketColumnValues(WorkbasketQueryImpl workbasketQuery);
|
List<String> queryWorkbasketColumnValues(WorkbasketQueryImpl workbasketQuery);
|
||||||
|
|
||||||
@Select("<script>SELECT DISTINCT ${columnName} "
|
@Select("<script>SELECT DISTINCT ${columnName} "
|
||||||
+ "FROM WORKBASKET_ACCESS_LIST "
|
+ "from WORKBASKET_ACCESS_LIST AS WBA LEFT JOIN WORKBASKET AS WB ON WORKBASKET_ID = WB.ID"
|
||||||
+ "<where>"
|
+ "<where>"
|
||||||
+ "<if test='idIn != null'>AND ID IN(<foreach item='item' collection='idIn' separator=',' >#{item}</foreach>)</if> "
|
+ "<if test='idIn != null'>AND ID IN(<foreach item='item' collection='idIn' separator=',' >#{item}</foreach>)</if> "
|
||||||
+ "<if test='workbasketIdIn != null'>AND WORKBASKET_ID IN(<foreach item='item' collection='workbasketIdIn' separator=',' >#{item}</foreach>)</if> "
|
+ "<if test='workbasketIdIn != null'>AND WORKBASKET_ID IN(<foreach item='item' collection='workbasketIdIn' separator=',' >#{item}</foreach>)</if> "
|
||||||
|
+ "<if test='workbasketKeyIn != null'>AND WB.KEY IN(<foreach item='item' collection='workbasketKeyIn' separator=',' >#{item}</foreach>)</if> "
|
||||||
|
+ "<if test='workbasketKeyLike != null'>AND (<foreach item='item' collection='workbasketKeyLike' separator=' OR '>UPPER(WB.KEY) LIKE #{item}</foreach>)</if> "
|
||||||
+ "<if test='accessIdIn != null'>AND ACCESS_ID IN(<foreach item='item' collection='accessIdIn' separator=',' >#{item}</foreach>) </if> "
|
+ "<if test='accessIdIn != null'>AND ACCESS_ID IN(<foreach item='item' collection='accessIdIn' separator=',' >#{item}</foreach>) </if> "
|
||||||
+ "</where>"
|
+ "</where>"
|
||||||
+ "<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> "
|
||||||
|
@ -1260,19 +1222,4 @@ public interface QueryMapper {
|
||||||
+ "</script>")
|
+ "</script>")
|
||||||
List<String> queryWorkbasketAccessItemColumnValues(WorkbasketAccessItemQuery accessItemQuery);
|
List<String> queryWorkbasketAccessItemColumnValues(WorkbasketAccessItemQuery accessItemQuery);
|
||||||
|
|
||||||
@Select("<script>SELECT DISTINCT ${columnName} "
|
|
||||||
+ "FROM WORKBASKET_ACCESS_LIST AS WBA LEFT JOIN WORKBASKET AS WB ON WORKBASKET_ID = WB.ID"
|
|
||||||
+ "<where>"
|
|
||||||
+ "<if test='idIn != null'>AND WBA.ID IN(<foreach item='item' collection='idIn' separator=',' >#{item}</foreach>)</if> "
|
|
||||||
+ "<if test='workbasketIdIn != null'>AND WORKBASKET_ID IN(<foreach item='item' collection='workbasketIdIn' separator=',' >#{item}</foreach>)</if> "
|
|
||||||
+ "<if test='workbasketKeyIn != null'>AND WB.KEY IN(<foreach item='item' collection='workbasketKeyIn' separator=',' >#{item}</foreach>)</if> "
|
|
||||||
+ "<if test='workbasketKeyLike != null'>AND (<foreach item='item' collection='workbasketKeyLike' separator=' OR '>UPPER(WB.KEY) LIKE #{item}</foreach>)</if> "
|
|
||||||
+ "<if test='accessIdIn != null'>AND ACCESS_ID IN(<foreach item='item' collection='accessIdIn' separator=',' >#{item}</foreach>) </if> "
|
|
||||||
+ "<if test='accessIdLike != null'>AND (<foreach item='item' collection='accessIdLike' separator=' OR '>UPPER(ACCESS_ID) LIKE #{item}</foreach>)</if> "
|
|
||||||
+ "</where>"
|
|
||||||
+ "<if test='!orderBy.isEmpty()'>ORDER BY <foreach item='orderItem' collection='orderBy' separator=',' >${orderItem}</foreach></if> "
|
|
||||||
+ "<if test=\"_databaseId == 'db2'\">with UR </if> "
|
|
||||||
+ "</script>")
|
|
||||||
List<String> queryWorkbasketAccessItemExtendedColumnValues(
|
|
||||||
WorkbasketAccessItemQuery.Extended accessItemExtendedQuery);
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -46,13 +46,14 @@ public interface WorkbasketAccessMapper {
|
||||||
@Result(property = "permCustom12", column = "PERM_CUSTOM_12")})
|
@Result(property = "permCustom12", column = "PERM_CUSTOM_12")})
|
||||||
WorkbasketAccessItemImpl findById(@Param("id") String id);
|
WorkbasketAccessItemImpl findById(@Param("id") String id);
|
||||||
|
|
||||||
@Select("<script>SELECT ID, WORKBASKET_ID, ACCESS_ID, ACCESS_NAME, PERM_READ, PERM_OPEN, PERM_APPEND, PERM_TRANSFER, PERM_DISTRIBUTE, PERM_CUSTOM_1, PERM_CUSTOM_2, PERM_CUSTOM_3, PERM_CUSTOM_4, PERM_CUSTOM_5, PERM_CUSTOM_6, PERM_CUSTOM_7, PERM_CUSTOM_8, PERM_CUSTOM_9, PERM_CUSTOM_10, PERM_CUSTOM_11, PERM_CUSTOM_12 "
|
@Select("<script>SELECT WBA.ID, WORKBASKET_ID, WB.KEY, ACCESS_ID, ACCESS_NAME, PERM_READ, PERM_OPEN, PERM_APPEND, PERM_TRANSFER, PERM_DISTRIBUTE, PERM_CUSTOM_1, PERM_CUSTOM_2, PERM_CUSTOM_3, PERM_CUSTOM_4, PERM_CUSTOM_5, PERM_CUSTOM_6, PERM_CUSTOM_7, PERM_CUSTOM_8, PERM_CUSTOM_9, PERM_CUSTOM_10, PERM_CUSTOM_11, PERM_CUSTOM_12 "
|
||||||
+ "FROM WORKBASKET_ACCESS_LIST WHERE WORKBASKET_ID = #{id} "
|
+ "FROM WORKBASKET_ACCESS_LIST AS WBA LEFT JOIN WORKBASKET AS WB ON WORKBASKET_ID = WB.ID WHERE WORKBASKET_ID = #{id} "
|
||||||
+ "<if test=\"_databaseId == 'db2'\">with UR </if> "
|
+ "<if test=\"_databaseId == 'db2'\">with UR </if> "
|
||||||
+ "</script>")
|
+ "</script>")
|
||||||
@Results(value = {
|
@Results(value = {
|
||||||
@Result(property = "id", column = "ID"),
|
@Result(property = "id", column = "ID"),
|
||||||
@Result(property = "workbasketId", column = "WORKBASKET_ID"),
|
@Result(property = "workbasketId", column = "WORKBASKET_ID"),
|
||||||
|
@Result(property = "workbasketKey", column = "KEY"),
|
||||||
@Result(property = "accessId", column = "ACCESS_ID"),
|
@Result(property = "accessId", column = "ACCESS_ID"),
|
||||||
@Result(property = "accessName", column = "ACCESS_NAME"),
|
@Result(property = "accessName", column = "ACCESS_NAME"),
|
||||||
@Result(property = "permRead", column = "PERM_READ"),
|
@Result(property = "permRead", column = "PERM_READ"),
|
||||||
|
|
|
@ -47,6 +47,11 @@ public class QueryWorkbasketAccessItemsAccTest extends AbstractAccTest {
|
||||||
assertNotNull(columnValueList);
|
assertNotNull(columnValueList);
|
||||||
assertEquals(9, columnValueList.size());
|
assertEquals(9, columnValueList.size());
|
||||||
|
|
||||||
|
columnValueList = workbasketService.createWorkbasketAccessItemQuery()
|
||||||
|
.listValues("WB.KEY", null);
|
||||||
|
assertNotNull(columnValueList);
|
||||||
|
assertEquals(24, columnValueList.size());
|
||||||
|
|
||||||
long countEntries = workbasketService.createWorkbasketAccessItemQuery().count();
|
long countEntries = workbasketService.createWorkbasketAccessItemQuery().count();
|
||||||
assertTrue(columnValueList.size() < countEntries); // DISTINCT
|
assertTrue(columnValueList.size() < countEntries); // DISTINCT
|
||||||
}
|
}
|
||||||
|
@ -108,6 +113,36 @@ public class QueryWorkbasketAccessItemsAccTest extends AbstractAccTest {
|
||||||
Assert.assertEquals(3L, results.size());
|
Assert.assertEquals(3L, results.size());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@WithAccessId(
|
||||||
|
userName = "dummy",
|
||||||
|
groupNames = {"businessadmin"})
|
||||||
|
@Test
|
||||||
|
public void testQueryAccessItemsForAccessIdsWorkbasketKeyLike()
|
||||||
|
throws NotAuthorizedException {
|
||||||
|
WorkbasketService workbasketService = taskanaEngine.getWorkbasketService();
|
||||||
|
List<WorkbasketAccessItem> results = workbasketService.createWorkbasketAccessItemQuery()
|
||||||
|
.workbasketKeyLike("GPK_KSC%")
|
||||||
|
.list();
|
||||||
|
Assert.assertEquals(4L, results.size());
|
||||||
|
}
|
||||||
|
|
||||||
|
@WithAccessId(
|
||||||
|
userName = "dummy",
|
||||||
|
groupNames = {"businessadmin"})
|
||||||
|
@Test
|
||||||
|
public void testQueryAccessItemsForAccessIdsWorkbasketKeyLikeAndOrderAsc()
|
||||||
|
throws NotAuthorizedException {
|
||||||
|
WorkbasketService workbasketService = taskanaEngine.getWorkbasketService();
|
||||||
|
List<WorkbasketAccessItem> results = workbasketService.createWorkbasketAccessItemQuery()
|
||||||
|
.workbasketKeyLike("GPK_KSC%")
|
||||||
|
.orderByWorkbasketKey(SortDirection.ASCENDING)
|
||||||
|
.list();
|
||||||
|
Assert.assertEquals(4L, results.size());
|
||||||
|
Assert.assertEquals("GPK_KSC", results.get(0).getWorkbasketKey());
|
||||||
|
Assert.assertEquals("GPK_KSC_2", results.get(3).getWorkbasketKey());
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
@WithAccessId(
|
@WithAccessId(
|
||||||
userName = "dummy",
|
userName = "dummy",
|
||||||
groupNames = {"businessadmin"})
|
groupNames = {"businessadmin"})
|
||||||
|
|
|
@ -1,98 +0,0 @@
|
||||||
package acceptance.workbasket;
|
|
||||||
|
|
||||||
import static org.junit.Assert.assertEquals;
|
|
||||||
import static org.junit.Assert.assertNotNull;
|
|
||||||
import static org.junit.Assert.assertTrue;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import org.junit.Assert;
|
|
||||||
import org.junit.Test;
|
|
||||||
import org.junit.runner.RunWith;
|
|
||||||
|
|
||||||
import acceptance.AbstractAccTest;
|
|
||||||
import pro.taskana.BaseQuery.SortDirection;
|
|
||||||
import pro.taskana.WorkbasketAccessItemExtended;
|
|
||||||
import pro.taskana.WorkbasketService;
|
|
||||||
import pro.taskana.exceptions.NotAuthorizedException;
|
|
||||||
import pro.taskana.security.JAASRunner;
|
|
||||||
import pro.taskana.security.WithAccessId;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Acceptance test for all "query access items extended for workbaskets" scenarios.
|
|
||||||
*/
|
|
||||||
@RunWith(JAASRunner.class)
|
|
||||||
public class QueryWorkbasketAccessItemsExtendedAccTest extends AbstractAccTest {
|
|
||||||
|
|
||||||
public QueryWorkbasketAccessItemsExtendedAccTest() {
|
|
||||||
super();
|
|
||||||
}
|
|
||||||
|
|
||||||
@WithAccessId(
|
|
||||||
userName = "dummy",
|
|
||||||
groupNames = {"businessadmin"})
|
|
||||||
@Test
|
|
||||||
public void testQueryWorkbasketAccessItemExtendedValuesForColumnName() throws NotAuthorizedException {
|
|
||||||
WorkbasketService workbasketService = taskanaEngine.getWorkbasketService();
|
|
||||||
List<String> columnValueList = workbasketService.createWorkbasketAccessItemExtendedQuery()
|
|
||||||
.listValues("WORKBASKET_ID", null);
|
|
||||||
assertNotNull(columnValueList);
|
|
||||||
assertEquals(24, columnValueList.size());
|
|
||||||
|
|
||||||
columnValueList = workbasketService.createWorkbasketAccessItemExtendedQuery()
|
|
||||||
.listValues("ACCESS_ID", null);
|
|
||||||
assertNotNull(columnValueList);
|
|
||||||
assertEquals(9, columnValueList.size());
|
|
||||||
|
|
||||||
columnValueList = workbasketService.createWorkbasketAccessItemExtendedQuery()
|
|
||||||
.listValues("WB.KEY", null);
|
|
||||||
assertNotNull(columnValueList);
|
|
||||||
assertEquals(24, columnValueList.size());
|
|
||||||
|
|
||||||
long countEntries = workbasketService.createWorkbasketAccessItemExtendedQuery().count();
|
|
||||||
assertTrue(columnValueList.size() < countEntries); // DISTINCT
|
|
||||||
}
|
|
||||||
|
|
||||||
@WithAccessId(
|
|
||||||
userName = "dummy",
|
|
||||||
groupNames = {"businessadmin"})
|
|
||||||
@Test
|
|
||||||
public void testQueryAccessItemsForAccessIds()
|
|
||||||
throws NotAuthorizedException {
|
|
||||||
WorkbasketService workbasketService = taskanaEngine.getWorkbasketService();
|
|
||||||
List<WorkbasketAccessItemExtended> results = workbasketService.createWorkbasketAccessItemExtendedQuery()
|
|
||||||
.accessIdIn("user_1_1", "group_1")
|
|
||||||
.list();
|
|
||||||
Assert.assertEquals(8L, results.size());
|
|
||||||
}
|
|
||||||
|
|
||||||
@WithAccessId(
|
|
||||||
userName = "dummy",
|
|
||||||
groupNames = {"businessadmin"})
|
|
||||||
@Test
|
|
||||||
public void testQueryAccessItemsForAccessIdsWorkbasketKeyLike()
|
|
||||||
throws NotAuthorizedException {
|
|
||||||
WorkbasketService workbasketService = taskanaEngine.getWorkbasketService();
|
|
||||||
List<WorkbasketAccessItemExtended> results = workbasketService.createWorkbasketAccessItemExtendedQuery()
|
|
||||||
.workbasketKeyLike("GPK_KSC%")
|
|
||||||
.list();
|
|
||||||
Assert.assertEquals(4L, results.size());
|
|
||||||
}
|
|
||||||
|
|
||||||
@WithAccessId(
|
|
||||||
userName = "dummy",
|
|
||||||
groupNames = {"businessadmin"})
|
|
||||||
@Test
|
|
||||||
public void testQueryAccessItemsForAccessIdsWorkbasketKeyLikeAndOrderAsc()
|
|
||||||
throws NotAuthorizedException {
|
|
||||||
WorkbasketService workbasketService = taskanaEngine.getWorkbasketService();
|
|
||||||
List<WorkbasketAccessItemExtended> results = workbasketService.createWorkbasketAccessItemExtendedQuery()
|
|
||||||
.workbasketKeyLike("GPK_KSC%")
|
|
||||||
.orderByWorkbasketKey(SortDirection.ASCENDING)
|
|
||||||
.list();
|
|
||||||
Assert.assertEquals(4L, results.size());
|
|
||||||
Assert.assertEquals("GPK_KSC", results.get(0).getWorkbasketKey());
|
|
||||||
Assert.assertEquals("GPK_KSC_2", results.get(3).getWorkbasketKey());
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -107,6 +107,7 @@ public class WorkbasketControllerRestDocumentation {
|
||||||
|
|
||||||
accessItemFieldDescriptionsMap.put("_embedded.accessItems.accessItemId", "Unique ID");
|
accessItemFieldDescriptionsMap.put("_embedded.accessItems.accessItemId", "Unique ID");
|
||||||
accessItemFieldDescriptionsMap.put("_embedded.accessItems.workbasketId", "The workbasket");
|
accessItemFieldDescriptionsMap.put("_embedded.accessItems.workbasketId", "The workbasket");
|
||||||
|
accessItemFieldDescriptionsMap.put("_embedded.accessItems.workbasketKey", "The workbasket key");
|
||||||
accessItemFieldDescriptionsMap.put("_embedded.accessItems.accessId",
|
accessItemFieldDescriptionsMap.put("_embedded.accessItems.accessId",
|
||||||
"The access id, this ACL entry refers to. This could be either a userid or a full qualified group id (both lower case)");
|
"The access id, this ACL entry refers to. This could be either a userid or a full qualified group id (both lower case)");
|
||||||
accessItemFieldDescriptionsMap.put("_embedded.accessItems.accessName", "");
|
accessItemFieldDescriptionsMap.put("_embedded.accessItems.accessName", "");
|
||||||
|
@ -115,7 +116,7 @@ public class WorkbasketControllerRestDocumentation {
|
||||||
accessItemFieldDescriptionsMap.put("_embedded.accessItems.permOpen",
|
accessItemFieldDescriptionsMap.put("_embedded.accessItems.permOpen",
|
||||||
"The permission to view the content (the tasks) of a workbasket");
|
"The permission to view the content (the tasks) of a workbasket");
|
||||||
accessItemFieldDescriptionsMap.put("_embedded.accessItems.permAppend",
|
accessItemFieldDescriptionsMap.put("_embedded.accessItems.permAppend",
|
||||||
"The permission to add tasks to the workbasket (required for creation and tranferring of tasks)");
|
"The permission to add tasks to the workbasket (required for creation and transferring of tasks)");
|
||||||
accessItemFieldDescriptionsMap.put("_embedded.accessItems.permTransfer",
|
accessItemFieldDescriptionsMap.put("_embedded.accessItems.permTransfer",
|
||||||
"The permission to transfer tasks (out of the current workbasket)");
|
"The permission to transfer tasks (out of the current workbasket)");
|
||||||
accessItemFieldDescriptionsMap.put("_embedded.accessItems.permDistribute",
|
accessItemFieldDescriptionsMap.put("_embedded.accessItems.permDistribute",
|
||||||
|
@ -199,11 +200,12 @@ public class WorkbasketControllerRestDocumentation {
|
||||||
};
|
};
|
||||||
|
|
||||||
accessItemFieldDescriptors = new FieldDescriptor[] {
|
accessItemFieldDescriptors = new FieldDescriptor[] {
|
||||||
|
|
||||||
fieldWithPath("_embedded.accessItems[].accessItemId").description(
|
fieldWithPath("_embedded.accessItems[].accessItemId").description(
|
||||||
accessItemFieldDescriptionsMap.get("_embedded.accessItems.accessItemId")),
|
accessItemFieldDescriptionsMap.get("_embedded.accessItems.accessItemId")),
|
||||||
fieldWithPath("_embedded.accessItems[].workbasketId").description(
|
fieldWithPath("_embedded.accessItems[].workbasketId").description(
|
||||||
accessItemFieldDescriptionsMap.get("_embedded.accessItems.workbasketId")),
|
accessItemFieldDescriptionsMap.get("_embedded.accessItems.workbasketId")),
|
||||||
|
fieldWithPath("_embedded.accessItems[].workbasketKey").description(
|
||||||
|
accessItemFieldDescriptionsMap.get("_embedded.accessItems.workbasketKey")),
|
||||||
fieldWithPath("_embedded.accessItems[].accessId").description(
|
fieldWithPath("_embedded.accessItems[].accessId").description(
|
||||||
accessItemFieldDescriptionsMap.get("_embedded.accessItems.accessId")),
|
accessItemFieldDescriptionsMap.get("_embedded.accessItems.accessId")),
|
||||||
fieldWithPath("_embedded.accessItems[].accessName").description(
|
fieldWithPath("_embedded.accessItems[].accessName").description(
|
||||||
|
|
|
@ -1,7 +1,13 @@
|
||||||
package pro.taskana.rest;
|
package pro.taskana.rest;
|
||||||
|
|
||||||
import com.fasterxml.jackson.databind.DeserializationFeature;
|
import static org.junit.Assert.assertEquals;
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
import static org.junit.Assert.assertNotNull;
|
||||||
|
import static org.junit.Assert.assertNull;
|
||||||
|
import static org.junit.Assert.assertTrue;
|
||||||
|
import static org.junit.Assert.fail;
|
||||||
|
|
||||||
|
import java.util.Collections;
|
||||||
|
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.FixMethodOrder;
|
import org.junit.FixMethodOrder;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
@ -13,22 +19,27 @@ import org.springframework.core.ParameterizedTypeReference;
|
||||||
import org.springframework.hateoas.Link;
|
import org.springframework.hateoas.Link;
|
||||||
import org.springframework.hateoas.PagedResources;
|
import org.springframework.hateoas.PagedResources;
|
||||||
import org.springframework.hateoas.hal.Jackson2HalModule;
|
import org.springframework.hateoas.hal.Jackson2HalModule;
|
||||||
import org.springframework.http.*;
|
import org.springframework.http.HttpEntity;
|
||||||
|
import org.springframework.http.HttpHeaders;
|
||||||
|
import org.springframework.http.HttpMethod;
|
||||||
|
import org.springframework.http.HttpStatus;
|
||||||
|
import org.springframework.http.MediaType;
|
||||||
|
import org.springframework.http.ResponseEntity;
|
||||||
import org.springframework.http.converter.HttpMessageConverter;
|
import org.springframework.http.converter.HttpMessageConverter;
|
||||||
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
|
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
|
||||||
import org.springframework.test.context.junit4.SpringRunner;
|
import org.springframework.test.context.junit4.SpringRunner;
|
||||||
import org.springframework.web.client.HttpClientErrorException;
|
import org.springframework.web.client.HttpClientErrorException;
|
||||||
import org.springframework.web.client.RestTemplate;
|
import org.springframework.web.client.RestTemplate;
|
||||||
import pro.taskana.rest.resource.WorkbasketAccesItemExtendedResource;
|
|
||||||
|
|
||||||
import java.util.Collections;
|
import com.fasterxml.jackson.databind.DeserializationFeature;
|
||||||
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
|
|
||||||
import static org.junit.Assert.*;
|
import pro.taskana.rest.resource.WorkbasketAccessItemResource;
|
||||||
|
|
||||||
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
|
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
|
||||||
@RunWith(SpringRunner.class)
|
@RunWith(SpringRunner.class)
|
||||||
@SpringBootTest(classes = RestConfiguration.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT,
|
@SpringBootTest(classes = RestConfiguration.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT,
|
||||||
properties = {"devMode=true"})
|
properties = {"devMode=true"})
|
||||||
public class WorkbasketAccessItemControllerIntTest {
|
public class WorkbasketAccessItemControllerIntTest {
|
||||||
|
|
||||||
String url = "http://127.0.0.1:";
|
String url = "http://127.0.0.1:";
|
||||||
|
@ -47,34 +58,36 @@ public class WorkbasketAccessItemControllerIntTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testGetAllWorkbasketAccessItems() {
|
public void testGetAllWorkbasketAccessItems() {
|
||||||
ResponseEntity<PagedResources<WorkbasketAccesItemExtendedResource>> response = template.exchange(
|
ResponseEntity<PagedResources<WorkbasketAccessItemResource>> response = template.exchange(
|
||||||
url + port + "/v1/workbasket-access-items", HttpMethod.GET, request,
|
url + port + "/v1/workbasket-access-items", HttpMethod.GET, request,
|
||||||
new ParameterizedTypeReference<PagedResources<WorkbasketAccesItemExtendedResource>>() {
|
new ParameterizedTypeReference<PagedResources<WorkbasketAccessItemResource>>() {
|
||||||
});
|
});
|
||||||
assertNotNull(response.getBody().getLink(Link.REL_SELF));
|
assertNotNull(response.getBody().getLink(Link.REL_SELF));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testGetWorkbasketAccessItemsKeepingFilters() {
|
public void testGetWorkbasketAccessItemsKeepingFilters() {
|
||||||
String parameters = "/v1/workbasket-access-items/?sort-by=workbasket-key&order=asc&page=1&page-size=9&access-ids=user_1_1";
|
String parameters = "/v1/workbasket-access-items/?sort-by=workbasket-key&order=asc&page=1&page-size=9&access-ids=user_1_1";
|
||||||
ResponseEntity<PagedResources<WorkbasketAccesItemExtendedResource>> response = template.exchange(
|
ResponseEntity<PagedResources<WorkbasketAccessItemResource>> response = template.exchange(
|
||||||
url + port + parameters, HttpMethod.GET, request,
|
url + port + parameters, HttpMethod.GET, request,
|
||||||
new ParameterizedTypeReference<PagedResources<WorkbasketAccesItemExtendedResource>>() {
|
new ParameterizedTypeReference<PagedResources<WorkbasketAccessItemResource>>() {
|
||||||
});
|
});
|
||||||
assertNotNull(response.getBody().getLink(Link.REL_SELF));
|
assertNotNull(response.getBody().getLink(Link.REL_SELF));
|
||||||
assertTrue(response.getBody()
|
assertTrue(response.getBody()
|
||||||
.getLink(Link.REL_SELF)
|
.getLink(Link.REL_SELF)
|
||||||
.getHref()
|
.getHref()
|
||||||
.endsWith(parameters));
|
.endsWith(parameters));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testThrowsExceptionIfInvalidFilterIsUsed() {
|
public void testThrowsExceptionIfInvalidFilterIsUsed() {
|
||||||
try {
|
try {
|
||||||
template.exchange(
|
template.exchange(
|
||||||
url + port + "/v1/workbasket-access-items/?sort-by=workbasket-key&order=asc&page=1&page-size=9&invalid=user_1_1", HttpMethod.GET, request,
|
url + port
|
||||||
new ParameterizedTypeReference<PagedResources<WorkbasketAccesItemExtendedResource>>() {
|
+ "/v1/workbasket-access-items/?sort-by=workbasket-key&order=asc&page=1&page-size=9&invalid=user_1_1",
|
||||||
});
|
HttpMethod.GET, request,
|
||||||
|
new ParameterizedTypeReference<PagedResources<WorkbasketAccessItemResource>>() {
|
||||||
|
});
|
||||||
fail();
|
fail();
|
||||||
} catch (HttpClientErrorException e) {
|
} catch (HttpClientErrorException e) {
|
||||||
assertEquals(HttpStatus.BAD_REQUEST, e.getStatusCode());
|
assertEquals(HttpStatus.BAD_REQUEST, e.getStatusCode());
|
||||||
|
@ -85,17 +98,17 @@ public class WorkbasketAccessItemControllerIntTest {
|
||||||
@Test
|
@Test
|
||||||
public void testGetSecondPageSortedByWorkbasketKey() {
|
public void testGetSecondPageSortedByWorkbasketKey() {
|
||||||
String parameters = "/v1/workbasket-access-items/?sort-by=workbasket-key&order=asc&page=2&page-size=9&access-ids=user_1_1";
|
String parameters = "/v1/workbasket-access-items/?sort-by=workbasket-key&order=asc&page=2&page-size=9&access-ids=user_1_1";
|
||||||
ResponseEntity<PagedResources<WorkbasketAccesItemExtendedResource>> response = template.exchange(
|
ResponseEntity<PagedResources<WorkbasketAccessItemResource>> response = template.exchange(
|
||||||
url + port + parameters, HttpMethod.GET, request,
|
url + port + parameters, HttpMethod.GET, request,
|
||||||
new ParameterizedTypeReference<PagedResources<WorkbasketAccesItemExtendedResource>>() {
|
new ParameterizedTypeReference<PagedResources<WorkbasketAccessItemResource>>() {
|
||||||
});
|
});
|
||||||
assertEquals(1, response.getBody().getContent().size());
|
assertEquals(1, response.getBody().getContent().size());
|
||||||
assertEquals("user_1_1", response.getBody().getContent().iterator().next().accessId);
|
assertEquals("user_1_1", response.getBody().getContent().iterator().next().accessId);
|
||||||
assertNotNull(response.getBody().getLink(Link.REL_SELF));
|
assertNotNull(response.getBody().getLink(Link.REL_SELF));
|
||||||
assertTrue(response.getBody()
|
assertTrue(response.getBody()
|
||||||
.getLink(Link.REL_SELF)
|
.getLink(Link.REL_SELF)
|
||||||
.getHref()
|
.getHref()
|
||||||
.endsWith(parameters));
|
.endsWith(parameters));
|
||||||
assertNotNull(response.getBody().getLink(Link.REL_FIRST));
|
assertNotNull(response.getBody().getLink(Link.REL_FIRST));
|
||||||
assertNotNull(response.getBody().getLink(Link.REL_LAST));
|
assertNotNull(response.getBody().getLink(Link.REL_LAST));
|
||||||
assertEquals(9, response.getBody().getMetadata().getSize());
|
assertEquals(9, response.getBody().getMetadata().getSize());
|
||||||
|
@ -108,9 +121,9 @@ public class WorkbasketAccessItemControllerIntTest {
|
||||||
public void testRemoveWorkbasketAccessItemsOfUser() {
|
public void testRemoveWorkbasketAccessItemsOfUser() {
|
||||||
String parameters = "/v1/workbasket-access-items/?access-id=user_1_1";
|
String parameters = "/v1/workbasket-access-items/?access-id=user_1_1";
|
||||||
ResponseEntity<Void> response = template.exchange(
|
ResponseEntity<Void> response = template.exchange(
|
||||||
url + port + parameters, HttpMethod.DELETE, request,
|
url + port + parameters, HttpMethod.DELETE, request,
|
||||||
new ParameterizedTypeReference<Void>() {
|
new ParameterizedTypeReference<Void>() {
|
||||||
});
|
});
|
||||||
assertNull(response.getBody());
|
assertNull(response.getBody());
|
||||||
assertEquals(HttpStatus.NO_CONTENT, response.getStatusCode());
|
assertEquals(HttpStatus.NO_CONTENT, response.getStatusCode());
|
||||||
}
|
}
|
||||||
|
@ -119,7 +132,7 @@ public class WorkbasketAccessItemControllerIntTest {
|
||||||
public void testGetBadRequestIfTryingToDeleteAccessItemsForGroup() {
|
public void testGetBadRequestIfTryingToDeleteAccessItemsForGroup() {
|
||||||
String parameters = "/v1/workbasket-access-items/?access-id=cn=DevelopersGroup,ou=groups,o=TaskanaTest";
|
String parameters = "/v1/workbasket-access-items/?access-id=cn=DevelopersGroup,ou=groups,o=TaskanaTest";
|
||||||
try {
|
try {
|
||||||
ResponseEntity<Void> response = template.exchange(
|
ResponseEntity<Void> response = template.exchange(
|
||||||
url + port + parameters, HttpMethod.DELETE, request,
|
url + port + parameters, HttpMethod.DELETE, request,
|
||||||
new ParameterizedTypeReference<Void>() {
|
new ParameterizedTypeReference<Void>() {
|
||||||
});
|
});
|
||||||
|
|
|
@ -17,14 +17,14 @@ 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.WorkbasketAccessItem;
|
||||||
import pro.taskana.WorkbasketAccessItemQuery;
|
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.ldap.LdapClient;
|
import pro.taskana.ldap.LdapClient;
|
||||||
import pro.taskana.rest.resource.WorkbasketAccesItemExtendedResource;
|
import pro.taskana.rest.resource.WorkbasketAccessItemResource;
|
||||||
import pro.taskana.rest.resource.assembler.WorkbasketAccessItemExtendedAssembler;
|
import pro.taskana.rest.resource.assembler.WorkbasketAccessItemAssembler;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Controller for Workbasket access.
|
* Controller for Workbasket access.
|
||||||
|
@ -57,22 +57,22 @@ public class WorkbasketAccessItemController extends AbstractPagingController {
|
||||||
* This GET method return all workbasketAccessItems that correspond the given data.
|
* This GET method return all workbasketAccessItems that correspond the given data.
|
||||||
*
|
*
|
||||||
* @param params filter, order and access ids.
|
* @param params filter, order and access ids.
|
||||||
* @return all WorkbasketAccesItemExtendedResource.
|
* @return all WorkbasketAccesItemResource.
|
||||||
* @throws NotAuthorizedException if the user is not authorized.
|
* @throws NotAuthorizedException if the user is not authorized.
|
||||||
* @throws InvalidArgumentException if some argument is invalid.
|
* @throws InvalidArgumentException if some argument is invalid.
|
||||||
*/
|
*/
|
||||||
@GetMapping
|
@GetMapping
|
||||||
public ResponseEntity<PagedResources<WorkbasketAccesItemExtendedResource>> getWorkbasketAccessItems(
|
public ResponseEntity<PagedResources<WorkbasketAccessItemResource>> getWorkbasketAccessItems(
|
||||||
@RequestParam MultiValueMap<String, String> params)
|
@RequestParam MultiValueMap<String, String> params)
|
||||||
throws NotAuthorizedException, InvalidArgumentException {
|
throws NotAuthorizedException, InvalidArgumentException {
|
||||||
|
|
||||||
WorkbasketAccessItemQuery.Extended query = workbasketService.createWorkbasketAccessItemExtendedQuery();
|
WorkbasketAccessItemQuery query = workbasketService.createWorkbasketAccessItemQuery();
|
||||||
query = getAccessIds(query, params);
|
query = getAccessIds(query, params);
|
||||||
query = applyFilterParams(query, params);
|
query = applyFilterParams(query, params);
|
||||||
query = applySortingParams(query, params);
|
query = applySortingParams(query, params);
|
||||||
|
|
||||||
PagedResources.PageMetadata pageMetadata = null;
|
PagedResources.PageMetadata pageMetadata = null;
|
||||||
List<WorkbasketAccessItemExtended> workbasketAccessItemsExtended;
|
List<WorkbasketAccessItem> workbasketAccessItems;
|
||||||
String page = params.getFirst(PAGING_PAGE);
|
String page = params.getFirst(PAGING_PAGE);
|
||||||
String pageSize = params.getFirst(PAGING_PAGE_SIZE);
|
String pageSize = params.getFirst(PAGING_PAGE_SIZE);
|
||||||
params.remove(PAGING_PAGE);
|
params.remove(PAGING_PAGE);
|
||||||
|
@ -82,18 +82,18 @@ public class WorkbasketAccessItemController extends AbstractPagingController {
|
||||||
// paging
|
// paging
|
||||||
long totalElements = query.count();
|
long totalElements = query.count();
|
||||||
pageMetadata = initPageMetadata(pageSize, page, totalElements);
|
pageMetadata = initPageMetadata(pageSize, page, totalElements);
|
||||||
workbasketAccessItemsExtended = query.listPage((int) pageMetadata.getNumber(),
|
workbasketAccessItems = query.listPage((int) pageMetadata.getNumber(),
|
||||||
(int) pageMetadata.getSize());
|
(int) pageMetadata.getSize());
|
||||||
} else if (page == null && pageSize == null) {
|
} else if (page == null && pageSize == null) {
|
||||||
// not paging
|
// not paging
|
||||||
workbasketAccessItemsExtended = query.list();
|
workbasketAccessItems = query.list();
|
||||||
} else {
|
} else {
|
||||||
throw new InvalidArgumentException("Paging information is incomplete.");
|
throw new InvalidArgumentException("Paging information is incomplete.");
|
||||||
}
|
}
|
||||||
|
|
||||||
WorkbasketAccessItemExtendedAssembler assembler = new WorkbasketAccessItemExtendedAssembler();
|
WorkbasketAccessItemAssembler assembler = new WorkbasketAccessItemAssembler();
|
||||||
PagedResources<WorkbasketAccesItemExtendedResource> pagedResources = assembler.toResources(
|
PagedResources<WorkbasketAccessItemResource> pagedResources = assembler.toResources(
|
||||||
workbasketAccessItemsExtended,
|
workbasketAccessItems,
|
||||||
pageMetadata);
|
pageMetadata);
|
||||||
|
|
||||||
return new ResponseEntity<>(pagedResources, HttpStatus.OK);
|
return new ResponseEntity<>(pagedResources, HttpStatus.OK);
|
||||||
|
@ -112,7 +112,7 @@ public class WorkbasketAccessItemController extends AbstractPagingController {
|
||||||
@RequestParam("access-id") String accessId)
|
@RequestParam("access-id") String accessId)
|
||||||
throws NotAuthorizedException, InvalidArgumentException {
|
throws NotAuthorizedException, InvalidArgumentException {
|
||||||
if (!ldapClient.isGroup(accessId)) {
|
if (!ldapClient.isGroup(accessId)) {
|
||||||
List<WorkbasketAccessItemExtended> workbasketAccessItemList = workbasketService.createWorkbasketAccessItemExtendedQuery()
|
List<WorkbasketAccessItem> workbasketAccessItemList = workbasketService.createWorkbasketAccessItemQuery()
|
||||||
.accessIdIn(accessId)
|
.accessIdIn(accessId)
|
||||||
.list();
|
.list();
|
||||||
|
|
||||||
|
@ -127,7 +127,7 @@ public class WorkbasketAccessItemController extends AbstractPagingController {
|
||||||
return ResponseEntity.status(HttpStatus.NO_CONTENT).build();
|
return ResponseEntity.status(HttpStatus.NO_CONTENT).build();
|
||||||
}
|
}
|
||||||
|
|
||||||
private WorkbasketAccessItemQuery.Extended getAccessIds(WorkbasketAccessItemQuery.Extended query,
|
private WorkbasketAccessItemQuery getAccessIds(WorkbasketAccessItemQuery 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));
|
||||||
|
@ -137,7 +137,7 @@ public class WorkbasketAccessItemController extends AbstractPagingController {
|
||||||
return query;
|
return query;
|
||||||
}
|
}
|
||||||
|
|
||||||
private WorkbasketAccessItemQuery.Extended applyFilterParams(WorkbasketAccessItemQuery.Extended query,
|
private WorkbasketAccessItemQuery applyFilterParams(WorkbasketAccessItemQuery 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));
|
||||||
|
@ -160,7 +160,7 @@ public class WorkbasketAccessItemController extends AbstractPagingController {
|
||||||
return query;
|
return query;
|
||||||
}
|
}
|
||||||
|
|
||||||
private WorkbasketAccessItemQuery.Extended applySortingParams(WorkbasketAccessItemQuery.Extended query,
|
private WorkbasketAccessItemQuery applySortingParams(WorkbasketAccessItemQuery query,
|
||||||
MultiValueMap<String, String> params)
|
MultiValueMap<String, String> params)
|
||||||
throws IllegalArgumentException {
|
throws IllegalArgumentException {
|
||||||
// sorting
|
// sorting
|
||||||
|
|
|
@ -1,23 +0,0 @@
|
||||||
package pro.taskana.rest.resource;
|
|
||||||
|
|
||||||
import org.springframework.hateoas.core.Relation;
|
|
||||||
|
|
||||||
import javax.validation.constraints.NotNull;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Resource class for {@link pro.taskana.WorkbasketAccessItem}.
|
|
||||||
*/
|
|
||||||
@Relation(collectionRelation = "accessItems")
|
|
||||||
public class WorkbasketAccesItemExtendedResource extends WorkbasketAccessItemResource {
|
|
||||||
|
|
||||||
@NotNull
|
|
||||||
public String workbasketKey;
|
|
||||||
|
|
||||||
public String getWorkbasketKey() {
|
|
||||||
return workbasketKey;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setWorkbasketKey(String workbasketKey) {
|
|
||||||
this.workbasketKey = workbasketKey;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -16,6 +16,9 @@ public class WorkbasketAccessItemResource extends ResourceSupport {
|
||||||
@NotNull
|
@NotNull
|
||||||
public String workbasketId;
|
public String workbasketId;
|
||||||
|
|
||||||
|
@NotNull
|
||||||
|
public String workbasketKey;
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
public String accessId;
|
public String accessId;
|
||||||
|
|
||||||
|
@ -55,6 +58,14 @@ public class WorkbasketAccessItemResource extends ResourceSupport {
|
||||||
this.workbasketId = workbasketId;
|
this.workbasketId = workbasketId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getWorkbasketKey() {
|
||||||
|
return workbasketKey;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setWorkbasketKey(String workbasketKey) {
|
||||||
|
this.workbasketKey = workbasketKey;
|
||||||
|
}
|
||||||
|
|
||||||
public String getAccessId() {
|
public String getAccessId() {
|
||||||
return accessId;
|
return accessId;
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,10 +2,16 @@ package pro.taskana.rest.resource.assembler;
|
||||||
|
|
||||||
import static org.springframework.hateoas.mvc.ControllerLinkBuilder.linkTo;
|
import static org.springframework.hateoas.mvc.ControllerLinkBuilder.linkTo;
|
||||||
import static org.springframework.hateoas.mvc.ControllerLinkBuilder.methodOn;
|
import static org.springframework.hateoas.mvc.ControllerLinkBuilder.methodOn;
|
||||||
|
import static pro.taskana.rest.resource.assembler.AbstractRessourcesAssembler.getBuilderForOriginalUri;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
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.hateoas.Link;
|
||||||
|
import org.springframework.hateoas.PagedResources;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
import org.springframework.web.util.UriComponentsBuilder;
|
||||||
|
|
||||||
import pro.taskana.WorkbasketAccessItem;
|
import pro.taskana.WorkbasketAccessItem;
|
||||||
import pro.taskana.WorkbasketService;
|
import pro.taskana.WorkbasketService;
|
||||||
|
@ -52,4 +58,34 @@ public class WorkbasketAccessItemAssembler {
|
||||||
.withRel("workbasket"));
|
.withRel("workbasket"));
|
||||||
return resource;
|
return resource;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public PagedResources<WorkbasketAccessItemResource> toResources(List<WorkbasketAccessItem> workbasketAccessItems,
|
||||||
|
PagedResources.PageMetadata pageMetadata) {
|
||||||
|
WorkbasketAccessItemsAssembler assembler = new WorkbasketAccessItemsAssembler();
|
||||||
|
List<WorkbasketAccessItemResource> resources = assembler.toResources(workbasketAccessItems);
|
||||||
|
|
||||||
|
PagedResources<WorkbasketAccessItemResource> pagedResources = new PagedResources<WorkbasketAccessItemResource>(
|
||||||
|
resources,
|
||||||
|
pageMetadata);
|
||||||
|
|
||||||
|
UriComponentsBuilder original = getBuilderForOriginalUri();
|
||||||
|
pagedResources.add(new Link(original.toUriString()).withSelfRel());
|
||||||
|
if (pageMetadata != null) {
|
||||||
|
pagedResources.add(new Link(original.replaceQueryParam("page", 1).toUriString()).withRel(Link.REL_FIRST));
|
||||||
|
pagedResources.add(new Link(original.replaceQueryParam("page", pageMetadata.getTotalPages()).toUriString())
|
||||||
|
.withRel(Link.REL_LAST));
|
||||||
|
if (pageMetadata.getNumber() > 1) {
|
||||||
|
pagedResources
|
||||||
|
.add(new Link(original.replaceQueryParam("page", pageMetadata.getNumber() - 1).toUriString())
|
||||||
|
.withRel(Link.REL_PREVIOUS));
|
||||||
|
}
|
||||||
|
if (pageMetadata.getNumber() < pageMetadata.getTotalPages()) {
|
||||||
|
pagedResources
|
||||||
|
.add(new Link(original.replaceQueryParam("page", pageMetadata.getNumber() + 1).toUriString())
|
||||||
|
.withRel(Link.REL_NEXT));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return pagedResources;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,71 +0,0 @@
|
||||||
package pro.taskana.rest.resource.assembler;
|
|
||||||
|
|
||||||
import org.springframework.beans.BeanUtils;
|
|
||||||
import org.springframework.hateoas.Link;
|
|
||||||
import org.springframework.hateoas.PagedResources;
|
|
||||||
import org.springframework.hateoas.mvc.ResourceAssemblerSupport;
|
|
||||||
import org.springframework.stereotype.Component;
|
|
||||||
import org.springframework.web.util.UriComponentsBuilder;
|
|
||||||
import pro.taskana.WorkbasketAccessItemExtended;
|
|
||||||
import pro.taskana.rest.WorkbasketAccessItemController;
|
|
||||||
import pro.taskana.rest.resource.WorkbasketAccesItemExtendedResource;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import static pro.taskana.rest.resource.assembler.AbstractRessourcesAssembler.getBuilderForOriginalUri;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Transforms {@link WorkbasketAccessItemExtended} to its resource counterpart {@link WorkbasketAccesItemExtendedResource} and vice versa.
|
|
||||||
*/
|
|
||||||
@Component
|
|
||||||
public class WorkbasketAccessItemExtendedAssembler extends ResourceAssemblerSupport<WorkbasketAccessItemExtended, WorkbasketAccesItemExtendedResource> {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Creates a new {@link ResourceAssemblerSupport} using the given controller class and resource type.
|
|
||||||
*/
|
|
||||||
public WorkbasketAccessItemExtendedAssembler() {
|
|
||||||
super(WorkbasketAccessItemController.class, WorkbasketAccesItemExtendedResource.class);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public WorkbasketAccesItemExtendedResource toResource(WorkbasketAccessItemExtended workbasketAccessItemExtended) {
|
|
||||||
WorkbasketAccesItemExtendedResource resource = createResourceWithId(workbasketAccessItemExtended.getId(), workbasketAccessItemExtended);
|
|
||||||
resource.removeLinks();
|
|
||||||
BeanUtils.copyProperties(workbasketAccessItemExtended, resource);
|
|
||||||
// named different so needs to be set by hand
|
|
||||||
resource.setAccessItemId(workbasketAccessItemExtended.getId());
|
|
||||||
return resource;
|
|
||||||
}
|
|
||||||
|
|
||||||
public PagedResources<WorkbasketAccesItemExtendedResource> toResources(List<WorkbasketAccessItemExtended> workbasketAccessItems,
|
|
||||||
PagedResources.PageMetadata pageMetadata) {
|
|
||||||
|
|
||||||
WorkbasketAccessItemExtendedAssembler assembler = new WorkbasketAccessItemExtendedAssembler();
|
|
||||||
List<WorkbasketAccesItemExtendedResource> resources = assembler.toResources(workbasketAccessItems);
|
|
||||||
|
|
||||||
PagedResources<WorkbasketAccesItemExtendedResource> pagedResources = new PagedResources<WorkbasketAccesItemExtendedResource>(
|
|
||||||
resources,
|
|
||||||
pageMetadata);
|
|
||||||
|
|
||||||
UriComponentsBuilder original = getBuilderForOriginalUri();
|
|
||||||
pagedResources.add(new Link(original.toUriString()).withSelfRel());
|
|
||||||
if (pageMetadata != null) {
|
|
||||||
pagedResources.add(new Link(original.replaceQueryParam("page", 1).toUriString()).withRel(Link.REL_FIRST));
|
|
||||||
pagedResources.add(new Link(original.replaceQueryParam("page", pageMetadata.getTotalPages()).toUriString())
|
|
||||||
.withRel(Link.REL_LAST));
|
|
||||||
if (pageMetadata.getNumber() > 1) {
|
|
||||||
pagedResources
|
|
||||||
.add(new Link(original.replaceQueryParam("page", pageMetadata.getNumber() - 1).toUriString())
|
|
||||||
.withRel(Link.REL_PREVIOUS));
|
|
||||||
}
|
|
||||||
if (pageMetadata.getNumber() < pageMetadata.getTotalPages()) {
|
|
||||||
pagedResources
|
|
||||||
.add(new Link(original.replaceQueryParam("page", pageMetadata.getNumber() + 1).toUriString())
|
|
||||||
.withRel(Link.REL_NEXT));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return pagedResources;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -0,0 +1,30 @@
|
||||||
|
package pro.taskana.rest.resource.assembler;
|
||||||
|
|
||||||
|
import org.springframework.beans.BeanUtils;
|
||||||
|
import org.springframework.hateoas.mvc.ResourceAssemblerSupport;
|
||||||
|
|
||||||
|
import pro.taskana.WorkbasketAccessItem;
|
||||||
|
import pro.taskana.rest.WorkbasketAccessItemController;
|
||||||
|
import pro.taskana.rest.resource.WorkbasketAccessItemResource;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Mapper to convert from a list of WorkbasketAccessItem to a WorkbasketAccessItemResource.
|
||||||
|
*/
|
||||||
|
public class WorkbasketAccessItemsAssembler
|
||||||
|
extends ResourceAssemblerSupport<WorkbasketAccessItem, WorkbasketAccessItemResource> {
|
||||||
|
|
||||||
|
public WorkbasketAccessItemsAssembler() {
|
||||||
|
super(WorkbasketAccessItemController.class, WorkbasketAccessItemResource.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public WorkbasketAccessItemResource toResource(WorkbasketAccessItem workbasketAccessItem) {
|
||||||
|
WorkbasketAccessItemResource resource = createResourceWithId(workbasketAccessItem.getId(),
|
||||||
|
workbasketAccessItem);
|
||||||
|
resource.removeLinks();
|
||||||
|
BeanUtils.copyProperties(workbasketAccessItem, resource);
|
||||||
|
resource.setAccessItemId(workbasketAccessItem.getId());
|
||||||
|
return resource;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -12,6 +12,7 @@ import pro.taskana.WorkbasketAccessItem;
|
||||||
import pro.taskana.WorkbasketService;
|
import pro.taskana.WorkbasketService;
|
||||||
import pro.taskana.exceptions.NotAuthorizedException;
|
import pro.taskana.exceptions.NotAuthorizedException;
|
||||||
import pro.taskana.exceptions.WorkbasketNotFoundException;
|
import pro.taskana.exceptions.WorkbasketNotFoundException;
|
||||||
|
import pro.taskana.impl.WorkbasketAccessItemImpl;
|
||||||
import pro.taskana.rest.TestConfiguration;
|
import pro.taskana.rest.TestConfiguration;
|
||||||
import pro.taskana.rest.resource.WorkbasketAccessItemResource;
|
import pro.taskana.rest.resource.WorkbasketAccessItemResource;
|
||||||
|
|
||||||
|
@ -33,6 +34,7 @@ public class WorkbasketAccessItemAssemblerTest {
|
||||||
throws NotAuthorizedException, WorkbasketNotFoundException {
|
throws NotAuthorizedException, WorkbasketNotFoundException {
|
||||||
// given
|
// given
|
||||||
WorkbasketAccessItem accessItem = workbasketService.newWorkbasketAccessItem("1", "2");
|
WorkbasketAccessItem accessItem = workbasketService.newWorkbasketAccessItem("1", "2");
|
||||||
|
((WorkbasketAccessItemImpl) accessItem).setWorkbasketKey("workbasketKey");
|
||||||
accessItem.setPermDistribute(false);
|
accessItem.setPermDistribute(false);
|
||||||
accessItem.setPermOpen(true);
|
accessItem.setPermOpen(true);
|
||||||
accessItem.setPermAppend(false);
|
accessItem.setPermAppend(false);
|
||||||
|
@ -62,6 +64,7 @@ public class WorkbasketAccessItemAssemblerTest {
|
||||||
// given
|
// given
|
||||||
WorkbasketAccessItemResource resource = new WorkbasketAccessItemResource();
|
WorkbasketAccessItemResource resource = new WorkbasketAccessItemResource();
|
||||||
resource.setAccessId("10");
|
resource.setAccessId("10");
|
||||||
|
resource.setWorkbasketKey("workbasketKey");
|
||||||
resource.setAccessItemId("120");
|
resource.setAccessItemId("120");
|
||||||
resource.setWorkbasketId("1");
|
resource.setWorkbasketId("1");
|
||||||
resource.setPermRead(true);
|
resource.setPermRead(true);
|
||||||
|
@ -90,6 +93,7 @@ public class WorkbasketAccessItemAssemblerTest {
|
||||||
private void testEquality(WorkbasketAccessItem accessItem,
|
private void testEquality(WorkbasketAccessItem accessItem,
|
||||||
WorkbasketAccessItemResource resource) {
|
WorkbasketAccessItemResource resource) {
|
||||||
Assert.assertEquals(accessItem.getAccessId(), resource.accessId);
|
Assert.assertEquals(accessItem.getAccessId(), resource.accessId);
|
||||||
|
Assert.assertEquals(accessItem.getWorkbasketKey(), resource.workbasketKey);
|
||||||
Assert.assertEquals(accessItem.getId(), resource.accessItemId);
|
Assert.assertEquals(accessItem.getId(), resource.accessItemId);
|
||||||
Assert.assertEquals(accessItem.getWorkbasketId(), resource.workbasketId);
|
Assert.assertEquals(accessItem.getWorkbasketId(), resource.workbasketId);
|
||||||
Assert.assertEquals(accessItem.isPermAppend(), resource.permAppend);
|
Assert.assertEquals(accessItem.isPermAppend(), resource.permAppend);
|
||||||
|
|
|
@ -1,80 +0,0 @@
|
||||||
package pro.taskana.rest.resource.assembler;
|
|
||||||
|
|
||||||
import org.junit.Assert;
|
|
||||||
import org.junit.Test;
|
|
||||||
import org.junit.runner.RunWith;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.test.context.ContextConfiguration;
|
|
||||||
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
|
|
||||||
import org.springframework.test.context.web.WebAppConfiguration;
|
|
||||||
import pro.taskana.WorkbasketAccessItemExtended;
|
|
||||||
import pro.taskana.WorkbasketService;
|
|
||||||
import pro.taskana.impl.WorkbasketAccessItemExtendedImpl;
|
|
||||||
import pro.taskana.rest.TestConfiguration;
|
|
||||||
import pro.taskana.rest.resource.WorkbasketAccesItemExtendedResource;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Test for {@link WorkbasketAccessItemExtendedAssembler}.
|
|
||||||
*/
|
|
||||||
@RunWith(SpringJUnit4ClassRunner.class)
|
|
||||||
@ContextConfiguration(classes = {TestConfiguration.class})
|
|
||||||
@WebAppConfiguration
|
|
||||||
public class WorkbasketAccessItemExtendedAssemblerTest {
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
WorkbasketAccessItemExtendedAssembler workbasketAccessItemExtendedAssembler;
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
WorkbasketService workbasketService;
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void workbasketAccessItemExtendedToResource() {
|
|
||||||
// given
|
|
||||||
WorkbasketAccessItemExtended workbasketAccessItemExtended = workbasketService.newWorkbasketAccessItemExtended("workbasketId",
|
|
||||||
"accessId");
|
|
||||||
|
|
||||||
((WorkbasketAccessItemExtendedImpl) workbasketAccessItemExtended).setWorkbasketKey("workbasketKey");
|
|
||||||
|
|
||||||
((WorkbasketAccessItemExtendedImpl) workbasketAccessItemExtended).setId("id");
|
|
||||||
workbasketAccessItemExtended.setAccessName("Name");
|
|
||||||
workbasketAccessItemExtended.setPermAppend(true);
|
|
||||||
workbasketAccessItemExtended.setPermCustom1(true);
|
|
||||||
workbasketAccessItemExtended.setPermCustom2(true);
|
|
||||||
workbasketAccessItemExtended.setPermCustom3(true);
|
|
||||||
workbasketAccessItemExtended.setPermCustom4(true);
|
|
||||||
workbasketAccessItemExtended.setPermCustom5(true);
|
|
||||||
workbasketAccessItemExtended.setPermCustom6(true);
|
|
||||||
workbasketAccessItemExtended.setPermCustom7(true);
|
|
||||||
workbasketAccessItemExtended.setPermCustom8(true);
|
|
||||||
workbasketAccessItemExtended.setPermCustom9(true);
|
|
||||||
workbasketAccessItemExtended.setPermCustom10(true);
|
|
||||||
workbasketAccessItemExtended.setPermCustom11(true);
|
|
||||||
workbasketAccessItemExtended.setPermCustom12(true);
|
|
||||||
workbasketAccessItemExtended.setPermDistribute(true);
|
|
||||||
workbasketAccessItemExtended.setPermOpen(true);
|
|
||||||
workbasketAccessItemExtended.setPermRead(true);
|
|
||||||
workbasketAccessItemExtended.setPermTransfer(true);
|
|
||||||
workbasketAccessItemExtended.setPermDistribute(true);
|
|
||||||
// when
|
|
||||||
WorkbasketAccesItemExtendedResource workbasketAccesItemExtendedResource = workbasketAccessItemExtendedAssembler.toResource(workbasketAccessItemExtended);
|
|
||||||
// then
|
|
||||||
Assert.assertEquals(workbasketAccessItemExtended.getWorkbasketId(), workbasketAccesItemExtendedResource.workbasketId);
|
|
||||||
Assert.assertEquals(workbasketAccessItemExtended.getWorkbasketKey(), workbasketAccesItemExtendedResource.workbasketKey);
|
|
||||||
Assert.assertEquals(workbasketAccessItemExtended.getId(), workbasketAccesItemExtendedResource.accessItemId);
|
|
||||||
Assert.assertEquals(workbasketAccessItemExtended.getAccessId(), workbasketAccesItemExtendedResource.accessId);
|
|
||||||
Assert.assertEquals(workbasketAccessItemExtended.getAccessName(), workbasketAccesItemExtendedResource.accessName);
|
|
||||||
Assert.assertEquals(workbasketAccessItemExtended.isPermAppend(), workbasketAccesItemExtendedResource.permAppend);
|
|
||||||
Assert.assertEquals(workbasketAccessItemExtended.isPermCustom1(), workbasketAccesItemExtendedResource.permCustom1);
|
|
||||||
Assert.assertEquals(workbasketAccessItemExtended.isPermCustom2(), workbasketAccesItemExtendedResource.permCustom2);
|
|
||||||
Assert.assertEquals(workbasketAccessItemExtended.isPermCustom3(), workbasketAccesItemExtendedResource.permCustom3);
|
|
||||||
Assert.assertEquals(workbasketAccessItemExtended.isPermCustom4(), workbasketAccesItemExtendedResource.permCustom4);
|
|
||||||
Assert.assertEquals(workbasketAccessItemExtended.isPermCustom5(), workbasketAccesItemExtendedResource.permCustom5);
|
|
||||||
Assert.assertEquals(workbasketAccessItemExtended.isPermCustom6(), workbasketAccesItemExtendedResource.permCustom6);
|
|
||||||
Assert.assertEquals(workbasketAccessItemExtended.isPermCustom7(), workbasketAccesItemExtendedResource.permCustom7);
|
|
||||||
Assert.assertEquals(workbasketAccessItemExtended.isPermCustom8(), workbasketAccesItemExtendedResource.permCustom8);
|
|
||||||
Assert.assertEquals(workbasketAccessItemExtended.isPermCustom9(), workbasketAccesItemExtendedResource.permCustom9);
|
|
||||||
Assert.assertEquals(workbasketAccessItemExtended.isPermCustom10(), workbasketAccesItemExtendedResource.permCustom10);
|
|
||||||
Assert.assertEquals(workbasketAccessItemExtended.isPermCustom11(), workbasketAccesItemExtendedResource.permCustom11);
|
|
||||||
Assert.assertEquals(workbasketAccessItemExtended.isPermCustom12(), workbasketAccesItemExtendedResource.permCustom12);
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
Reference in New Issue