TSK-1883: Reorder methods in WorkbasketService
New ordering follows CRUD principles for better readability. Introduction of regions for group of methods.
This commit is contained in:
parent
96a675adb9
commit
5388763b40
|
@ -20,6 +20,46 @@ import pro.taskana.workbasket.api.models.WorkbasketSummary;
|
||||||
/** This service manages Workbaskets. */
|
/** This service manages Workbaskets. */
|
||||||
public interface WorkbasketService {
|
public interface WorkbasketService {
|
||||||
|
|
||||||
|
// region Workbasket
|
||||||
|
|
||||||
|
// CREATE
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns a new {@linkplain Workbasket} which is not inserted.
|
||||||
|
*
|
||||||
|
* @param key the {@linkplain Workbasket#getKey() key} used to identify the {@linkplain
|
||||||
|
* Workbasket}
|
||||||
|
* @param domain the {@linkplain Workbasket#getDomain() domain} of the new {@linkplain Workbasket}
|
||||||
|
* @return new {@linkplain Workbasket}
|
||||||
|
*/
|
||||||
|
Workbasket newWorkbasket(String key, String domain);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a new {@linkplain Workbasket}. <br>
|
||||||
|
* The default values are:
|
||||||
|
*
|
||||||
|
* <ul>
|
||||||
|
* <li><b>id</b> - generated by {@linkplain pro.taskana.common.internal.util.IdGenerator
|
||||||
|
* IdGenerator}
|
||||||
|
* </ul>
|
||||||
|
*
|
||||||
|
* @param workbasket The {@linkplain Workbasket} to create
|
||||||
|
* @return the created and inserted {@linkplain Workbasket}
|
||||||
|
* @throws InvalidArgumentException If a required property of the {@linkplain Workbasket} is not
|
||||||
|
* set.
|
||||||
|
* @throws NotAuthorizedException if the current user is not member of role {@linkplain
|
||||||
|
* pro.taskana.common.api.TaskanaRole#ADMIN admin} or {@linkplain
|
||||||
|
* pro.taskana.common.api.TaskanaRole#BUSINESS_ADMIN business-admin}
|
||||||
|
* @throws WorkbasketAlreadyExistException if the {@linkplain Workbasket} exists already
|
||||||
|
* @throws DomainNotFoundException if the {@linkplain Workbasket#getDomain() domain} does not
|
||||||
|
* exist in the configuration.
|
||||||
|
*/
|
||||||
|
Workbasket createWorkbasket(Workbasket workbasket)
|
||||||
|
throws InvalidArgumentException, NotAuthorizedException, WorkbasketAlreadyExistException,
|
||||||
|
DomainNotFoundException;
|
||||||
|
|
||||||
|
// READ
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the {@linkplain Workbasket} specified by the given {@linkplain WorkbasketSummary#getId()
|
* Get the {@linkplain Workbasket} specified by the given {@linkplain WorkbasketSummary#getId()
|
||||||
* id}.
|
* id}.
|
||||||
|
@ -52,29 +92,7 @@ public interface WorkbasketService {
|
||||||
Workbasket getWorkbasket(String workbasketKey, String domain)
|
Workbasket getWorkbasket(String workbasketKey, String domain)
|
||||||
throws WorkbasketNotFoundException, NotAuthorizedException;
|
throws WorkbasketNotFoundException, NotAuthorizedException;
|
||||||
|
|
||||||
/**
|
// UPDATE
|
||||||
* Creates a new {@linkplain Workbasket}. <br>
|
|
||||||
* The default values are:
|
|
||||||
*
|
|
||||||
* <ul>
|
|
||||||
* <li><b>id</b> - generated by {@linkplain pro.taskana.common.internal.util.IdGenerator
|
|
||||||
* IdGenerator}
|
|
||||||
* </ul>
|
|
||||||
*
|
|
||||||
* @param workbasket The {@linkplain Workbasket} to create
|
|
||||||
* @return the created and inserted {@linkplain Workbasket}
|
|
||||||
* @throws InvalidArgumentException If a required property of the {@linkplain Workbasket} is not
|
|
||||||
* set.
|
|
||||||
* @throws NotAuthorizedException if the current user is not member of role {@linkplain
|
|
||||||
* pro.taskana.common.api.TaskanaRole#ADMIN admin} or {@linkplain
|
|
||||||
* pro.taskana.common.api.TaskanaRole#BUSINESS_ADMIN business-admin}
|
|
||||||
* @throws WorkbasketAlreadyExistException if the {@linkplain Workbasket} exists already
|
|
||||||
* @throws DomainNotFoundException if the {@linkplain Workbasket#getDomain() domain} does not
|
|
||||||
* exist in the configuration.
|
|
||||||
*/
|
|
||||||
Workbasket createWorkbasket(Workbasket workbasket)
|
|
||||||
throws InvalidArgumentException, NotAuthorizedException, WorkbasketAlreadyExistException,
|
|
||||||
DomainNotFoundException;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Update the given {@linkplain Workbasket}.
|
* Update the given {@linkplain Workbasket}.
|
||||||
|
@ -94,6 +112,156 @@ public interface WorkbasketService {
|
||||||
throws InvalidArgumentException, NotAuthorizedException, WorkbasketNotFoundException,
|
throws InvalidArgumentException, NotAuthorizedException, WorkbasketNotFoundException,
|
||||||
ConcurrencyException;
|
ConcurrencyException;
|
||||||
|
|
||||||
|
// DELETE
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Deletes the {@linkplain Workbasket} by the given {@linkplain Workbasket#getId() id}.
|
||||||
|
*
|
||||||
|
* @param workbasketId {@linkplain Workbasket#getId() id} of the {@linkplain Workbasket} which
|
||||||
|
* should be deleted.
|
||||||
|
* @return true if the {@linkplain Workbasket} was deleted successfully; false if the {@linkplain
|
||||||
|
* Workbasket} is marked for deletion
|
||||||
|
* @throws NotAuthorizedException if the current user got no {@linkplain WorkbasketPermission}s
|
||||||
|
* for this interaction
|
||||||
|
* @throws WorkbasketNotFoundException if the {@linkplain Workbasket} does not exist
|
||||||
|
* @throws WorkbasketInUseException if the {@linkplain Workbasket} does contain task-content
|
||||||
|
* @throws InvalidArgumentException if the workbasketId is NULL or EMPTY
|
||||||
|
*/
|
||||||
|
boolean deleteWorkbasket(String workbasketId)
|
||||||
|
throws NotAuthorizedException, WorkbasketNotFoundException, WorkbasketInUseException,
|
||||||
|
InvalidArgumentException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Deletes the list of {@linkplain Workbasket}s specified via {@linkplain Workbasket#getId() ids}.
|
||||||
|
*
|
||||||
|
* @param workbasketsIds the {@linkplain Workbasket#getId() ids} of the {@linkplain Workbasket}s
|
||||||
|
* to delete.
|
||||||
|
* @return the result of the operations and an Exception for each failed workbasket deletion
|
||||||
|
* @throws InvalidArgumentException if the WorkbasketIds parameter List is NULL or empty
|
||||||
|
* @throws NotAuthorizedException if the current user got no {@linkplain WorkbasketPermission} for
|
||||||
|
* this interaction
|
||||||
|
*/
|
||||||
|
BulkOperationResults<String, TaskanaException> deleteWorkbaskets(List<String> workbasketsIds)
|
||||||
|
throws NotAuthorizedException, InvalidArgumentException;
|
||||||
|
|
||||||
|
// endregion
|
||||||
|
|
||||||
|
// region DistributionTarget
|
||||||
|
|
||||||
|
// CREATE
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the distribution targets for a {@linkplain Workbasket}.
|
||||||
|
*
|
||||||
|
* @param sourceWorkbasketId the {@linkplain Workbasket#getId() id} of the source {@linkplain
|
||||||
|
* Workbasket} for which the distribution targets are to be set
|
||||||
|
* @param targetWorkbasketIds a list of the ids of the target {@linkplain Workbasket}s
|
||||||
|
* @throws NotAuthorizedException if the current used doesn't have {@linkplain
|
||||||
|
* WorkbasketPermission#READ READ permission} for the source {@linkplain Workbasket}
|
||||||
|
* @throws WorkbasketNotFoundException if either the source {@linkplain Workbasket} or any of the
|
||||||
|
* target {@linkplain Workbasket}s don't exist
|
||||||
|
*/
|
||||||
|
void setDistributionTargets(String sourceWorkbasketId, List<String> targetWorkbasketIds)
|
||||||
|
throws NotAuthorizedException, WorkbasketNotFoundException;
|
||||||
|
|
||||||
|
// READ
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the distribution targets for a given {@linkplain Workbasket}.
|
||||||
|
*
|
||||||
|
* @param workbasketId the {@linkplain Workbasket#getId() id} of the referenced {@linkplain
|
||||||
|
* Workbasket}
|
||||||
|
* @return the distribution targets of the specified {@linkplain Workbasket}
|
||||||
|
* @throws NotAuthorizedException if the current user has no {@linkplain WorkbasketPermission#READ
|
||||||
|
* READ permission} for the specified {@linkplain Workbasket}
|
||||||
|
* @throws WorkbasketNotFoundException if the {@linkplain Workbasket} doesn't exist
|
||||||
|
*/
|
||||||
|
List<WorkbasketSummary> getDistributionTargets(String workbasketId)
|
||||||
|
throws NotAuthorizedException, WorkbasketNotFoundException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the distribution targets for a given {@linkplain Workbasket}.
|
||||||
|
*
|
||||||
|
* @param workbasketKey the {@linkplain Workbasket#getKey() key} of the referenced {@linkplain
|
||||||
|
* Workbasket}
|
||||||
|
* @param domain the {@linkplain Workbasket#getDomain() domain} of the referenced {@linkplain
|
||||||
|
* Workbasket}
|
||||||
|
* @return the distribution targets of the specified {@linkplain Workbasket}
|
||||||
|
* @throws NotAuthorizedException if the current user has no {@linkplain WorkbasketPermission#READ
|
||||||
|
* READ permission} for the specified {@linkplain Workbasket}
|
||||||
|
* @throws WorkbasketNotFoundException if the {@linkplain Workbasket} doesn't exist
|
||||||
|
*/
|
||||||
|
List<WorkbasketSummary> getDistributionTargets(String workbasketKey, String domain)
|
||||||
|
throws NotAuthorizedException, WorkbasketNotFoundException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the distribution sources for a given {@linkplain Workbasket}.
|
||||||
|
*
|
||||||
|
* @param workbasketId the {@linkplain Workbasket#getId() id} of the referenced {@linkplain
|
||||||
|
* Workbasket}
|
||||||
|
* @return the workbaskets that are distribution sources of the specified {@linkplain Workbasket}.
|
||||||
|
* @throws NotAuthorizedException if the current user has no {@linkplain WorkbasketPermission#READ
|
||||||
|
* READ permission} for the specified {@linkplain Workbasket}
|
||||||
|
* @throws WorkbasketNotFoundException if the {@linkplain Workbasket} doesn't exist
|
||||||
|
*/
|
||||||
|
List<WorkbasketSummary> getDistributionSources(String workbasketId)
|
||||||
|
throws NotAuthorizedException, WorkbasketNotFoundException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the distribution sources for a given {@linkplain Workbasket}.
|
||||||
|
*
|
||||||
|
* @param workbasketKey the {@linkplain Workbasket#getKey() key} of the referenced {@linkplain
|
||||||
|
* Workbasket}
|
||||||
|
* @param domain the {@linkplain Workbasket#getDomain() domain} of the referenced {@linkplain
|
||||||
|
* Workbasket}
|
||||||
|
* @return the workbaskets that are distribution sources of the specified {@linkplain Workbasket}.
|
||||||
|
* @throws NotAuthorizedException if the current user has no {@linkplain WorkbasketPermission#READ
|
||||||
|
* READ permission} for the specified {@linkplain Workbasket}
|
||||||
|
* @throws WorkbasketNotFoundException if the {@linkplain Workbasket} doesn't exist
|
||||||
|
*/
|
||||||
|
List<WorkbasketSummary> getDistributionSources(String workbasketKey, String domain)
|
||||||
|
throws NotAuthorizedException, WorkbasketNotFoundException;
|
||||||
|
|
||||||
|
// UPDATE
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add a distribution target to a {@linkplain Workbasket}. If the specified distribution target
|
||||||
|
* exists already, the method silently returns without doing anything.
|
||||||
|
*
|
||||||
|
* @param sourceWorkbasketId the {@linkplain Workbasket#getId() id} of the source {@linkplain
|
||||||
|
* Workbasket}
|
||||||
|
* @param targetWorkbasketId the {@linkplain Workbasket#getId() id} of the target {@linkplain
|
||||||
|
* Workbasket}
|
||||||
|
* @throws NotAuthorizedException if the current user doesn't have {@linkplain
|
||||||
|
* WorkbasketPermission#READ READ permission} for the source {@linkplain Workbasket}s
|
||||||
|
* @throws WorkbasketNotFoundException if either the source {@linkplain Workbasket} or the target
|
||||||
|
* {@linkplain Workbasket} doesn't exist
|
||||||
|
*/
|
||||||
|
void addDistributionTarget(String sourceWorkbasketId, String targetWorkbasketId)
|
||||||
|
throws NotAuthorizedException, WorkbasketNotFoundException;
|
||||||
|
|
||||||
|
// DELETE
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Remove a distribution target from a {@linkplain Workbasket}. If the specified distribution
|
||||||
|
* target doesn't exist, the method silently returns without doing anything.
|
||||||
|
*
|
||||||
|
* @param sourceWorkbasketId The {@linkplain Workbasket#getId() id} of the source {@linkplain
|
||||||
|
* Workbasket}
|
||||||
|
* @param targetWorkbasketId The {@linkplain Workbasket#getId() id} of the target {@linkplain
|
||||||
|
* Workbasket}
|
||||||
|
* @throws NotAuthorizedException If the current user doesn't have {@linkplain
|
||||||
|
* WorkbasketPermission#READ READ permission} for the source {@linkplain Workbasket}
|
||||||
|
*/
|
||||||
|
void removeDistributionTarget(String sourceWorkbasketId, String targetWorkbasketId)
|
||||||
|
throws NotAuthorizedException;
|
||||||
|
|
||||||
|
// endregion
|
||||||
|
|
||||||
|
// region WorkbasketAccessItem
|
||||||
|
|
||||||
|
// CREATE
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns a new {@linkplain WorkbasketAccessItem} which is not inserted.
|
* Returns a new {@linkplain WorkbasketAccessItem} which is not inserted.
|
||||||
*
|
*
|
||||||
|
@ -126,6 +294,53 @@ public interface WorkbasketService {
|
||||||
throws InvalidArgumentException, NotAuthorizedException, WorkbasketNotFoundException,
|
throws InvalidArgumentException, NotAuthorizedException, WorkbasketNotFoundException,
|
||||||
WorkbasketAccessItemAlreadyExistException;
|
WorkbasketAccessItemAlreadyExistException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Setting up the new {@linkplain WorkbasketAccessItem}s for a {@linkplain Workbasket}. Already
|
||||||
|
* stored values will be completely replaced by the current ones.
|
||||||
|
*
|
||||||
|
* <p>Preconditions for each {@linkplain WorkbasketAccessItem} then {@code wbAccessItems}:
|
||||||
|
*
|
||||||
|
* <ul>
|
||||||
|
* <li>{@linkplain WorkbasketAccessItem#getWorkbasketId()} is not null
|
||||||
|
* <li>{@linkplain WorkbasketAccessItem#getWorkbasketId()} is equal to {@code workbasketId}
|
||||||
|
* <li>{@linkplain WorkbasketAccessItem#getAccessId()} is unique
|
||||||
|
* </ul>
|
||||||
|
*
|
||||||
|
* @param workbasketId {@linkplain Workbasket#getId() id} of the access-target {@linkplain
|
||||||
|
* Workbasket}.
|
||||||
|
* @param wbAccessItems List of {@linkplain WorkbasketAccessItem}s which does replace all current
|
||||||
|
* stored ones.
|
||||||
|
* @throws InvalidArgumentException will be thrown when the parameter {@code wbAccessItems} is
|
||||||
|
* NULL or member doesn't match the preconditions
|
||||||
|
* @throws NotAuthorizedException if the current user is not member of role {@linkplain
|
||||||
|
* pro.taskana.common.api.TaskanaRole#ADMIN admin} or {@linkplain
|
||||||
|
* pro.taskana.common.api.TaskanaRole#BUSINESS_ADMIN business-admin}
|
||||||
|
* @throws WorkbasketAccessItemAlreadyExistException if {@code wbAccessItems} contains multiple
|
||||||
|
* {@linkplain WorkbasketAccessItem} with the same {@linkplain
|
||||||
|
* WorkbasketAccessItem#getAccessId() accessId}.
|
||||||
|
* @throws WorkbasketNotFoundException if the {@linkplain Workbasket} cannot be found for the
|
||||||
|
* given {@linkplain Workbasket#getId() id}.
|
||||||
|
*/
|
||||||
|
void setWorkbasketAccessItems(String workbasketId, List<WorkbasketAccessItem> wbAccessItems)
|
||||||
|
throws InvalidArgumentException, NotAuthorizedException,
|
||||||
|
WorkbasketAccessItemAlreadyExistException, WorkbasketNotFoundException;
|
||||||
|
|
||||||
|
// READ
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get all {@linkplain WorkbasketAccessItem}s for a {@linkplain Workbasket}.
|
||||||
|
*
|
||||||
|
* @param workbasketId the {@linkplain Workbasket#getId() id} of the {@linkplain Workbasket}
|
||||||
|
* @return List of {@linkplain WorkbasketAccessItem}s for the {@linkplain Workbasket}
|
||||||
|
* @throws NotAuthorizedException if the current user is not member of role {@linkplain
|
||||||
|
* pro.taskana.common.api.TaskanaRole#BUSINESS_ADMIN} or {@linkplain
|
||||||
|
* pro.taskana.common.api.TaskanaRole#ADMIN}
|
||||||
|
*/
|
||||||
|
List<WorkbasketAccessItem> getWorkbasketAccessItems(String workbasketId)
|
||||||
|
throws NotAuthorizedException;
|
||||||
|
|
||||||
|
// UPDATE
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This method updates a {@linkplain WorkbasketAccessItem}.
|
* This method updates a {@linkplain WorkbasketAccessItem}.
|
||||||
*
|
*
|
||||||
|
@ -141,6 +356,8 @@ public interface WorkbasketService {
|
||||||
WorkbasketAccessItem updateWorkbasketAccessItem(WorkbasketAccessItem workbasketAccessItem)
|
WorkbasketAccessItem updateWorkbasketAccessItem(WorkbasketAccessItem workbasketAccessItem)
|
||||||
throws InvalidArgumentException, NotAuthorizedException;
|
throws InvalidArgumentException, NotAuthorizedException;
|
||||||
|
|
||||||
|
// DELETE
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Deletes a specific {@linkplain WorkbasketAccessItem}.
|
* Deletes a specific {@linkplain WorkbasketAccessItem}.
|
||||||
*
|
*
|
||||||
|
@ -152,6 +369,55 @@ public interface WorkbasketService {
|
||||||
*/
|
*/
|
||||||
void deleteWorkbasketAccessItem(String id) throws NotAuthorizedException;
|
void deleteWorkbasketAccessItem(String id) throws NotAuthorizedException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Deletes all {@linkplain WorkbasketAccessItem}s using the given {@linkplain
|
||||||
|
* WorkbasketAccessItem#getAccessId()}.
|
||||||
|
*
|
||||||
|
* @param accessId {@linkplain User#getId() id} of a taskana-{@linkplain User}.
|
||||||
|
* @throws NotAuthorizedException if the current user is not member of role {@linkplain
|
||||||
|
* pro.taskana.common.api.TaskanaRole#ADMIN admin} or {@linkplain
|
||||||
|
* pro.taskana.common.api.TaskanaRole#BUSINESS_ADMIN business-admin}
|
||||||
|
*/
|
||||||
|
void deleteWorkbasketAccessItemsForAccessId(String accessId) throws NotAuthorizedException;
|
||||||
|
|
||||||
|
// endregion
|
||||||
|
|
||||||
|
// region Query
|
||||||
|
/**
|
||||||
|
* This method provides a query builder for querying the database.
|
||||||
|
*
|
||||||
|
* @return a {@linkplain WorkbasketQuery}
|
||||||
|
*/
|
||||||
|
WorkbasketQuery createWorkbasketQuery();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This method provides a query builder for querying the database.
|
||||||
|
*
|
||||||
|
* @return a {@linkplain WorkbasketAccessItemQuery}
|
||||||
|
* @throws NotAuthorizedException if the current user is not member of role {@linkplain
|
||||||
|
* pro.taskana.common.api.TaskanaRole#ADMIN admin} or {@linkplain
|
||||||
|
* pro.taskana.common.api.TaskanaRole#BUSINESS_ADMIN business-admin}
|
||||||
|
*/
|
||||||
|
WorkbasketAccessItemQuery createWorkbasketAccessItemQuery() throws NotAuthorizedException;
|
||||||
|
// endregion
|
||||||
|
|
||||||
|
// region Permission and Authorization
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns a set with all {@linkplain WorkbasketPermission permissions} of the current user at
|
||||||
|
* this {@linkplain Workbasket}.<br>
|
||||||
|
* If the workbasketId is invalid, an empty List of {@linkplain WorkbasketPermission}s is returned
|
||||||
|
* since there is no distinction made between the situation that the {@linkplain Workbasket} is
|
||||||
|
* not found and the caller has no {@linkplain WorkbasketPermission permissions} on the
|
||||||
|
* {@linkplain Workbasket}.
|
||||||
|
*
|
||||||
|
* @param workbasketId the {@linkplain Workbasket#getId() id} of the referenced {@linkplain
|
||||||
|
* Workbasket}
|
||||||
|
* @return a {@link List} with all {@link WorkbasketPermission}s of the caller on the requested
|
||||||
|
* {@linkplain Workbasket}.
|
||||||
|
*/
|
||||||
|
List<WorkbasketPermission> getPermissionsForWorkbasket(String workbasketId);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This method checks the authorization for the actual User.
|
* This method checks the authorization for the actual User.
|
||||||
*
|
*
|
||||||
|
@ -184,229 +450,6 @@ public interface WorkbasketService {
|
||||||
void checkAuthorization(String workbasketKey, String domain, WorkbasketPermission... permission)
|
void checkAuthorization(String workbasketKey, String domain, WorkbasketPermission... permission)
|
||||||
throws NotAuthorizedException, WorkbasketNotFoundException;
|
throws NotAuthorizedException, WorkbasketNotFoundException;
|
||||||
|
|
||||||
/**
|
// endregion
|
||||||
* Get all {@linkplain WorkbasketAccessItem}s for a {@linkplain Workbasket}.
|
|
||||||
*
|
|
||||||
* @param workbasketId the {@linkplain Workbasket#getId() id} of the {@linkplain Workbasket}
|
|
||||||
* @return List of {@linkplain WorkbasketAccessItem}s for the {@linkplain Workbasket}
|
|
||||||
* @throws NotAuthorizedException if the current user is not member of role {@linkplain
|
|
||||||
* pro.taskana.common.api.TaskanaRole#BUSINESS_ADMIN} or {@linkplain
|
|
||||||
* pro.taskana.common.api.TaskanaRole#ADMIN}
|
|
||||||
*/
|
|
||||||
List<WorkbasketAccessItem> getWorkbasketAccessItems(String workbasketId)
|
|
||||||
throws NotAuthorizedException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Setting up the new {@linkplain WorkbasketAccessItem}s for a {@linkplain Workbasket}. Already
|
|
||||||
* stored values will be completely replaced by the current ones.
|
|
||||||
*
|
|
||||||
* <p>Preconditions for each {@linkplain WorkbasketAccessItem} then {@code wbAccessItems}:
|
|
||||||
*
|
|
||||||
* <ul>
|
|
||||||
* <li>{@linkplain WorkbasketAccessItem#getWorkbasketId()} is not null
|
|
||||||
* <li>{@linkplain WorkbasketAccessItem#getWorkbasketId()} is equal to {@code workbasketId}
|
|
||||||
* <li>{@linkplain WorkbasketAccessItem#getAccessId()} is unique
|
|
||||||
* </ul>
|
|
||||||
*
|
|
||||||
* @param workbasketId {@linkplain Workbasket#getId() id} of the access-target {@linkplain
|
|
||||||
* Workbasket}.
|
|
||||||
* @param wbAccessItems List of {@linkplain WorkbasketAccessItem}s which does replace all current
|
|
||||||
* stored ones.
|
|
||||||
* @throws InvalidArgumentException will be thrown when the parameter {@code wbAccessItems} is
|
|
||||||
* NULL or member doesn't match the preconditions
|
|
||||||
* @throws NotAuthorizedException if the current user is not member of role {@linkplain
|
|
||||||
* pro.taskana.common.api.TaskanaRole#ADMIN admin} or {@linkplain
|
|
||||||
* pro.taskana.common.api.TaskanaRole#BUSINESS_ADMIN business-admin}
|
|
||||||
* @throws WorkbasketAccessItemAlreadyExistException if {@code wbAccessItems} contains multiple
|
|
||||||
* {@linkplain WorkbasketAccessItem} with the same {@linkplain
|
|
||||||
* WorkbasketAccessItem#getAccessId() accessId}.
|
|
||||||
* @throws WorkbasketNotFoundException if the {@linkplain Workbasket} cannot be found for the
|
|
||||||
* given {@linkplain Workbasket#getId() id}.
|
|
||||||
*/
|
|
||||||
void setWorkbasketAccessItems(String workbasketId, List<WorkbasketAccessItem> wbAccessItems)
|
|
||||||
throws InvalidArgumentException, NotAuthorizedException,
|
|
||||||
WorkbasketAccessItemAlreadyExistException, WorkbasketNotFoundException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This method provides a query builder for querying the database.
|
|
||||||
*
|
|
||||||
* @return a {@linkplain WorkbasketQuery}
|
|
||||||
*/
|
|
||||||
WorkbasketQuery createWorkbasketQuery();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This method provides a query builder for querying the database.
|
|
||||||
*
|
|
||||||
* @return a {@linkplain WorkbasketAccessItemQuery}
|
|
||||||
* @throws NotAuthorizedException if the current user is not member of role {@linkplain
|
|
||||||
* pro.taskana.common.api.TaskanaRole#ADMIN admin} or {@linkplain
|
|
||||||
* pro.taskana.common.api.TaskanaRole#BUSINESS_ADMIN business-admin}
|
|
||||||
*/
|
|
||||||
WorkbasketAccessItemQuery createWorkbasketAccessItemQuery() throws NotAuthorizedException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns a new {@linkplain Workbasket} which is not inserted.
|
|
||||||
*
|
|
||||||
* @param key the {@linkplain Workbasket#getKey() key} used to identify the {@linkplain
|
|
||||||
* Workbasket}
|
|
||||||
* @param domain the {@linkplain Workbasket#getDomain() domain} of the new {@linkplain Workbasket}
|
|
||||||
* @return new {@linkplain Workbasket}
|
|
||||||
*/
|
|
||||||
Workbasket newWorkbasket(String key, String domain);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns a set with all {@linkplain WorkbasketPermission permissions} of the current user at
|
|
||||||
* this {@linkplain Workbasket}.<br>
|
|
||||||
* If the workbasketId is invalid, an empty List of {@linkplain WorkbasketPermission}s is returned
|
|
||||||
* since there is no distinction made between the situation that the {@linkplain Workbasket} is
|
|
||||||
* not found and the caller has no {@linkplain WorkbasketPermission permissions} on the
|
|
||||||
* {@linkplain Workbasket}.
|
|
||||||
*
|
|
||||||
* @param workbasketId the {@linkplain Workbasket#getId() id} of the referenced {@linkplain
|
|
||||||
* Workbasket}
|
|
||||||
* @return a {@link List} with all {@link WorkbasketPermission}s of the caller on the requested
|
|
||||||
* {@linkplain Workbasket}.
|
|
||||||
*/
|
|
||||||
List<WorkbasketPermission> getPermissionsForWorkbasket(String workbasketId);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the distribution targets for a given {@linkplain Workbasket}.
|
|
||||||
*
|
|
||||||
* @param workbasketId the {@linkplain Workbasket#getId() id} of the referenced {@linkplain
|
|
||||||
* Workbasket}
|
|
||||||
* @return the distribution targets of the specified {@linkplain Workbasket}
|
|
||||||
* @throws NotAuthorizedException if the current user has no {@linkplain WorkbasketPermission#READ
|
|
||||||
* READ permission} for the specified {@linkplain Workbasket}
|
|
||||||
* @throws WorkbasketNotFoundException if the {@linkplain Workbasket} doesn't exist
|
|
||||||
*/
|
|
||||||
List<WorkbasketSummary> getDistributionTargets(String workbasketId)
|
|
||||||
throws NotAuthorizedException, WorkbasketNotFoundException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the distribution targets for a given {@linkplain Workbasket}.
|
|
||||||
*
|
|
||||||
* @param workbasketKey the {@linkplain Workbasket#getKey() key} of the referenced {@linkplain
|
|
||||||
* Workbasket}
|
|
||||||
* @param domain the {@linkplain Workbasket#getDomain() domain} of the referenced {@linkplain
|
|
||||||
* Workbasket}
|
|
||||||
* @return the distribution targets of the specified {@linkplain Workbasket}
|
|
||||||
* @throws NotAuthorizedException if the current user has no {@linkplain WorkbasketPermission#READ
|
|
||||||
* READ permission} for the specified {@linkplain Workbasket}
|
|
||||||
* @throws WorkbasketNotFoundException if the {@linkplain Workbasket} doesn't exist
|
|
||||||
*/
|
|
||||||
List<WorkbasketSummary> getDistributionTargets(String workbasketKey, String domain)
|
|
||||||
throws NotAuthorizedException, WorkbasketNotFoundException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Set the distribution targets for a {@linkplain Workbasket}.
|
|
||||||
*
|
|
||||||
* @param sourceWorkbasketId the {@linkplain Workbasket#getId() id} of the source {@linkplain
|
|
||||||
* Workbasket} for which the distribution targets are to be set
|
|
||||||
* @param targetWorkbasketIds a list of the ids of the target {@linkplain Workbasket}s
|
|
||||||
* @throws NotAuthorizedException if the current used doesn't have {@linkplain
|
|
||||||
* WorkbasketPermission#READ READ permission} for the source {@linkplain Workbasket}
|
|
||||||
* @throws WorkbasketNotFoundException if either the source {@linkplain Workbasket} or any of the
|
|
||||||
* target {@linkplain Workbasket}s don't exist
|
|
||||||
*/
|
|
||||||
void setDistributionTargets(String sourceWorkbasketId, List<String> targetWorkbasketIds)
|
|
||||||
throws NotAuthorizedException, WorkbasketNotFoundException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Add a distribution target to a {@linkplain Workbasket}. If the specified distribution target
|
|
||||||
* exists already, the method silently returns without doing anything.
|
|
||||||
*
|
|
||||||
* @param sourceWorkbasketId the {@linkplain Workbasket#getId() id} of the source {@linkplain
|
|
||||||
* Workbasket}
|
|
||||||
* @param targetWorkbasketId the {@linkplain Workbasket#getId() id} of the target {@linkplain
|
|
||||||
* Workbasket}
|
|
||||||
* @throws NotAuthorizedException if the current user doesn't have {@linkplain
|
|
||||||
* WorkbasketPermission#READ READ permission} for the source {@linkplain Workbasket}s
|
|
||||||
* @throws WorkbasketNotFoundException if either the source {@linkplain Workbasket} or the target
|
|
||||||
* {@linkplain Workbasket} doesn't exist
|
|
||||||
*/
|
|
||||||
void addDistributionTarget(String sourceWorkbasketId, String targetWorkbasketId)
|
|
||||||
throws NotAuthorizedException, WorkbasketNotFoundException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Remove a distribution target from a {@linkplain Workbasket}. If the specified distribution
|
|
||||||
* target doesn't exist, the method silently returns without doing anything.
|
|
||||||
*
|
|
||||||
* @param sourceWorkbasketId The {@linkplain Workbasket#getId() id} of the source {@linkplain
|
|
||||||
* Workbasket}
|
|
||||||
* @param targetWorkbasketId The {@linkplain Workbasket#getId() id} of the target {@linkplain
|
|
||||||
* Workbasket}
|
|
||||||
* @throws NotAuthorizedException If the current user doesn't have {@linkplain
|
|
||||||
* WorkbasketPermission#READ READ permission} for the source {@linkplain Workbasket}
|
|
||||||
*/
|
|
||||||
void removeDistributionTarget(String sourceWorkbasketId, String targetWorkbasketId)
|
|
||||||
throws NotAuthorizedException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Deletes the {@linkplain Workbasket} by the given {@linkplain Workbasket#getId() id}.
|
|
||||||
*
|
|
||||||
* @param workbasketId {@linkplain Workbasket#getId() id} of the {@linkplain Workbasket} which
|
|
||||||
* should be deleted.
|
|
||||||
* @return true if the {@linkplain Workbasket} was deleted successfully; false if the {@linkplain
|
|
||||||
* Workbasket} is marked for deletion
|
|
||||||
* @throws NotAuthorizedException if the current user got no {@linkplain WorkbasketPermission}s
|
|
||||||
* for this interaction
|
|
||||||
* @throws WorkbasketNotFoundException if the {@linkplain Workbasket} does not exist
|
|
||||||
* @throws WorkbasketInUseException if the {@linkplain Workbasket} does contain task-content
|
|
||||||
* @throws InvalidArgumentException if the workbasketId is NULL or EMPTY
|
|
||||||
*/
|
|
||||||
boolean deleteWorkbasket(String workbasketId)
|
|
||||||
throws NotAuthorizedException, WorkbasketNotFoundException, WorkbasketInUseException,
|
|
||||||
InvalidArgumentException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Deletes the list of {@linkplain Workbasket}s specified via {@linkplain Workbasket#getId() ids}.
|
|
||||||
*
|
|
||||||
* @param workbasketsIds the {@linkplain Workbasket#getId() ids} of the {@linkplain Workbasket}s
|
|
||||||
* to delete.
|
|
||||||
* @return the result of the operations and an Exception for each failed workbasket deletion
|
|
||||||
* @throws InvalidArgumentException if the WorkbasketIds parameter List is NULL or empty
|
|
||||||
* @throws NotAuthorizedException if the current user got no {@linkplain WorkbasketPermission} for
|
|
||||||
* this interaction
|
|
||||||
*/
|
|
||||||
BulkOperationResults<String, TaskanaException> deleteWorkbaskets(List<String> workbasketsIds)
|
|
||||||
throws NotAuthorizedException, InvalidArgumentException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the distribution sources for a given {@linkplain Workbasket}.
|
|
||||||
*
|
|
||||||
* @param workbasketId the {@linkplain Workbasket#getId() id} of the referenced {@linkplain
|
|
||||||
* Workbasket}
|
|
||||||
* @return the workbaskets that are distribution sources of the specified {@linkplain Workbasket}.
|
|
||||||
* @throws NotAuthorizedException if the current user has no {@linkplain WorkbasketPermission#READ
|
|
||||||
* READ permission} for the specified {@linkplain Workbasket}
|
|
||||||
* @throws WorkbasketNotFoundException if the {@linkplain Workbasket} doesn't exist
|
|
||||||
*/
|
|
||||||
List<WorkbasketSummary> getDistributionSources(String workbasketId)
|
|
||||||
throws NotAuthorizedException, WorkbasketNotFoundException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the distribution sources for a given {@linkplain Workbasket}.
|
|
||||||
*
|
|
||||||
* @param workbasketKey the {@linkplain Workbasket#getKey() key} of the referenced {@linkplain
|
|
||||||
* Workbasket}
|
|
||||||
* @param domain the {@linkplain Workbasket#getDomain() domain} of the referenced {@linkplain
|
|
||||||
* Workbasket}
|
|
||||||
* @return the workbaskets that are distribution sources of the specified {@linkplain Workbasket}.
|
|
||||||
* @throws NotAuthorizedException if the current user has no {@linkplain WorkbasketPermission#READ
|
|
||||||
* READ permission} for the specified {@linkplain Workbasket}
|
|
||||||
* @throws WorkbasketNotFoundException if the {@linkplain Workbasket} doesn't exist
|
|
||||||
*/
|
|
||||||
List<WorkbasketSummary> getDistributionSources(String workbasketKey, String domain)
|
|
||||||
throws NotAuthorizedException, WorkbasketNotFoundException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Deletes all {@linkplain WorkbasketAccessItem}s using the given {@linkplain
|
|
||||||
* WorkbasketAccessItem#getAccessId()}.
|
|
||||||
*
|
|
||||||
* @param accessId {@linkplain User#getId() id} of a taskana-{@linkplain User}.
|
|
||||||
* @throws NotAuthorizedException if the current user is not member of role {@linkplain
|
|
||||||
* pro.taskana.common.api.TaskanaRole#ADMIN admin} or {@linkplain
|
|
||||||
* pro.taskana.common.api.TaskanaRole#BUSINESS_ADMIN business-admin}
|
|
||||||
*/
|
|
||||||
void deleteWorkbasketAccessItemsForAccessId(String accessId) throws NotAuthorizedException;
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue