reformat java code

This commit is contained in:
arolfes 2023-10-04 08:10:48 +02:00
parent 0f1d39d06e
commit b6da50d543
38 changed files with 522 additions and 216 deletions

View File

@ -35,8 +35,7 @@ public interface PropertyParser<T> {
new SimpleParser<>(Long.class, Long::parseLong), new SimpleParser<>(Long.class, Long::parseLong),
new SimpleParser<>(String.class, Function.identity()), new SimpleParser<>(String.class, Function.identity()),
new SimpleParser<>(ZoneId.class, ZoneId::of)) new SimpleParser<>(ZoneId.class, ZoneId::of))
.collect( .collect(Collectors.toUnmodifiableMap(PropertyParser::getTargetClass, t -> t));
Collectors.toUnmodifiableMap(PropertyParser::getTargetClass, t -> t));
static PropertyParser<?> getPropertyParser(Class<?> forClass) { static PropertyParser<?> getPropertyParser(Class<?> forClass) {
forClass = ReflectionUtil.wrap(forClass); forClass = ReflectionUtil.wrap(forClass);

View File

@ -436,6 +436,7 @@ public class ComparableVersion implements Comparable<ComparableVersion> {
Arrays.asList("alpha", "beta", "milestone", "rc", "snapshot", "", "sp"); Arrays.asList("alpha", "beta", "milestone", "rc", "snapshot", "", "sp");
private static final Properties ALIASES = new Properties(); private static final Properties ALIASES = new Properties();
/** /**
* A comparable value for the empty-string qualifier. This one is used to determine if a given * A comparable value for the empty-string qualifier. This one is used to determine if a given
* qualifier makes the version older than one without a qualifier, or more recent. * qualifier makes the version older than one without a qualifier, or more recent.

View File

@ -10,58 +10,83 @@ public class TaskHistoryEventRepresentationModel
/** Unique Id. */ /** Unique Id. */
private String taskHistoryId; private String taskHistoryId;
/** The Id of the business process. */ /** The Id of the business process. */
private String businessProcessId; private String businessProcessId;
/** The Id of the parent business process. */ /** The Id of the parent business process. */
private String parentBusinessProcessId; private String parentBusinessProcessId;
/** The Id of the task. */ /** The Id of the task. */
private String taskId; private String taskId;
/** The type of the event. */ /** The type of the event. */
private String eventType; private String eventType;
/** /**
* The time of event creation. * The time of event creation.
* *
* <p>The format is ISO-8601. * <p>The format is ISO-8601.
*/ */
private Instant created; private Instant created;
/** The Id of the user. */ /** The Id of the user. */
private String userId; private String userId;
/** The long name of the user. */ /** The long name of the user. */
private String userLongName; private String userLongName;
/** Domain. */ /** Domain. */
private String domain; private String domain;
/** The key of the Workbasket. */ /** The key of the Workbasket. */
private String workbasketKey; private String workbasketKey;
/** The company the referenced primary object belongs to. */ /** The company the referenced primary object belongs to. */
private String porCompany; private String porCompany;
/** The type of the referenced primary object (contract, claim, policy, customer, ...). */ /** The type of the referenced primary object (contract, claim, policy, customer, ...). */
private String porType; private String porType;
/** The (kind of) system, the referenced primary object resides in (e.g. SAP, MySystem A, ...). */ /** The (kind of) system, the referenced primary object resides in (e.g. SAP, MySystem A, ...). */
private String porSystem; private String porSystem;
/** The instance of the system where the referenced primary object is located. */ /** The instance of the system where the referenced primary object is located. */
private String porInstance; private String porInstance;
/** The value of the primary object reference. */ /** The value of the primary object reference. */
private String porValue; private String porValue;
/** The long name of the task owner. */ /** The long name of the task owner. */
private String taskOwnerLongName; private String taskOwnerLongName;
/** The key of the task's classification. */ /** The key of the task's classification. */
private String taskClassificationKey; private String taskClassificationKey;
/** The category of the task's classification. */ /** The category of the task's classification. */
private String taskClassificationCategory; private String taskClassificationCategory;
/** The classification key of the task's attachment. */ /** The classification key of the task's attachment. */
private String attachmentClassificationKey; private String attachmentClassificationKey;
/** The old value. */ /** The old value. */
private String oldValue; private String oldValue;
/** The new value. */ /** The new value. */
private String newValue; private String newValue;
/** A custom property with name "1". */ /** A custom property with name "1". */
private String custom1; private String custom1;
/** A custom property with name "2". */ /** A custom property with name "2". */
private String custom2; private String custom2;
/** A custom property with name "3". */ /** A custom property with name "3". */
private String custom3; private String custom3;
/** A custom property with name "4". */ /** A custom property with name "4". */
private String custom4; private String custom4;
/** details of changes within the task. */ /** details of changes within the task. */
private String details; private String details;

View File

@ -507,7 +507,7 @@ class TaskanaConfigurationTest {
// user configuration // user configuration
.addAdditionalUserInfo(true) .addAdditionalUserInfo(true)
.minimalPermissionsToAssignDomains(Set.of(WorkbasketPermission.CUSTOM_2)) .minimalPermissionsToAssignDomains(Set.of(WorkbasketPermission.CUSTOM_2))
//database configuration // database configuration
.useSpecificDb2Taskquery(false) .useSpecificDb2Taskquery(false)
.build(); .build();

View File

@ -205,13 +205,14 @@ class UpdateClassificationAccTest {
.permission(WorkbasketPermission.APPEND) .permission(WorkbasketPermission.APPEND)
.buildAndStore(workbasketService, "businessadmin"); .buildAndStore(workbasketService, "businessadmin");
Task task = new TaskBuilder() Task task =
.classificationSummary(classification.asSummary()) new TaskBuilder()
.workbasketSummary(workbasketSummary) .classificationSummary(classification.asSummary())
.primaryObjRef(defaultTestObjectReference().build()) .workbasketSummary(workbasketSummary)
.planned(Instant.parse("2021-04-27T15:34:00.000Z")) .primaryObjRef(defaultTestObjectReference().build())
.due(null) .planned(Instant.parse("2021-04-27T15:34:00.000Z"))
.buildAndStore(taskService); .due(null)
.buildAndStore(taskService);
classificationService.updateClassification(classification); classificationService.updateClassification(classification);
runAssociatedJobs(); runAssociatedJobs();

View File

@ -105,32 +105,6 @@ class AbstractTaskanaJobAccTest {
assertThat(jobsToRun).doesNotContainAnyElementsOf(taskCleanupJobs); assertThat(jobsToRun).doesNotContainAnyElementsOf(taskCleanupJobs);
} }
@Nested
@TestInstance(Lifecycle.PER_CLASS)
class CleanCompletedTasks implements TaskanaConfigurationModifier {
@TaskanaInject TaskanaEngine taskanaEngine;
@TaskanaInject JobMapper jobMapper;
@Override
public Builder modify(Builder builder) {
return builder
.taskCleanupJobEnabled(true)
.jobRunEvery(Duration.ofMillis(1))
.jobFirstRun(Instant.now().plus(5, ChronoUnit.MINUTES));
}
@WithAccessId(user = "admin")
@Test
void should_FindNoJobsToRunUntilFirstRunIsReached_When_CleanupScheduleIsInitialized()
throws Exception {
AbstractTaskanaJob.initializeSchedule(taskanaEngine, TaskCleanupJob.class);
List<ScheduledJob> nextJobs = jobMapper.findJobsToRun(Instant.now());
assertThat(nextJobs).isEmpty();
}
}
@Test @Test
void should_CreateSampleTaskanaJob_When_JobHasMoreThenOneConstructor() { void should_CreateSampleTaskanaJob_When_JobHasMoreThenOneConstructor() {
@ -172,4 +146,30 @@ class AbstractTaskanaJobAccTest {
@Override @Override
protected void execute() throws TaskanaException {} protected void execute() throws TaskanaException {}
} }
@Nested
@TestInstance(Lifecycle.PER_CLASS)
class CleanCompletedTasks implements TaskanaConfigurationModifier {
@TaskanaInject TaskanaEngine taskanaEngine;
@TaskanaInject JobMapper jobMapper;
@Override
public Builder modify(Builder builder) {
return builder
.taskCleanupJobEnabled(true)
.jobRunEvery(Duration.ofMillis(1))
.jobFirstRun(Instant.now().plus(5, ChronoUnit.MINUTES));
}
@WithAccessId(user = "admin")
@Test
void should_FindNoJobsToRunUntilFirstRunIsReached_When_CleanupScheduleIsInitialized()
throws Exception {
AbstractTaskanaJob.initializeSchedule(taskanaEngine, TaskCleanupJob.class);
List<ScheduledJob> nextJobs = jobMapper.findJobsToRun(Instant.now());
assertThat(nextJobs).isEmpty();
}
}
} }

View File

@ -205,54 +205,50 @@ class UserServiceAccTest {
@WithAccessId(user = "user-1-1") @WithAccessId(user = "user-1-1")
@Test @Test
void should_DetermineDomains_When_WorkbasketPermissionsExistForUsersWithPermissions() void should_DetermineDomains_When_WorkbasketPermissionsExistForUsersWithPermissions()
throws Exception { throws Exception {
Workbasket workbasketDomainA = Workbasket workbasketDomainA =
defaultTestWorkbasket().buildAndStore(workbasketService, "businessadmin"); defaultTestWorkbasket().buildAndStore(workbasketService, "businessadmin");
createAccessItem( createAccessItem(
"permissions-domaina", "permissions-domaina",
workbasketDomainA, workbasketDomainA,
WorkbasketPermission.READ, WorkbasketPermission.READ,
WorkbasketPermission.OPEN); WorkbasketPermission.OPEN);
Workbasket workbasketDomainB = Workbasket workbasketDomainB =
defaultTestWorkbasket() defaultTestWorkbasket()
.domain("DOMAIN_B") .domain("DOMAIN_B")
.buildAndStore(workbasketService, "businessadmin"); .buildAndStore(workbasketService, "businessadmin");
createAccessItem( createAccessItem(
"permissions-domainb", "permissions-domainb",
workbasketDomainB, workbasketDomainB,
WorkbasketPermission.READ, WorkbasketPermission.READ,
WorkbasketPermission.OPEN); WorkbasketPermission.OPEN);
Set<User> users = new HashSet<>(); Set<User> users = new HashSet<>();
for (int i = 0; i < 6; i++) { for (int i = 0; i < 6; i++) {
users.add( users.add(
randomTestUser() randomTestUser()
.permissions(Set.of("test1", "test2", "permissions-domaina")) .permissions(Set.of("test1", "test2", "permissions-domaina"))
.buildAndStore(userService, "businessadmin")); .buildAndStore(userService, "businessadmin"));
} }
for (int i = 0; i < 4; i++) { for (int i = 0; i < 4; i++) {
users.add( users.add(
randomTestUser() randomTestUser()
.permissions(Set.of("test1", "test2", "permissions-domainb")) .permissions(Set.of("test1", "test2", "permissions-domainb"))
.buildAndStore(userService, "businessadmin")); .buildAndStore(userService, "businessadmin"));
} }
Set<String> userIds = users.stream().map(User::getId).collect(Collectors.toSet()); Set<String> userIds = users.stream().map(User::getId).collect(Collectors.toSet());
List<User> returnedUsers = userService.getUsers(userIds); List<User> returnedUsers = userService.getUsers(userIds);
assertThat(returnedUsers) assertThat(returnedUsers)
.extracting(User::getDomains) .extracting(User::getDomains)
.areExactly( .areExactly(
6, 6,
new Condition<>( new Condition<>(
domains -> domains -> Set.of(workbasketDomainA.getDomain()).equals(domains), "DOMAIN_A"))
Set.of(workbasketDomainA.getDomain()) .areExactly(
.equals(domains), "DOMAIN_A")) 4,
.areExactly( new Condition<>(
4, domains -> Set.of(workbasketDomainB.getDomain()).equals(domains), "DOMAIN_B"));
new Condition<>(
domains ->
Set.of(workbasketDomainB.getDomain())
.equals(domains), "DOMAIN_B"));
} }
@WithAccessId(user = "user-1-1") @WithAccessId(user = "user-1-1")
@ -634,9 +630,8 @@ class UserServiceAccTest {
t -> { t -> {
Set<String> existingPerms = t.getMiddle(); Set<String> existingPerms = t.getMiddle();
Set<String> newPerms = t.getMiddle(); Set<String> newPerms = t.getMiddle();
User userToUpdate = randomTestUser() User userToUpdate =
.permissions(existingPerms) randomTestUser().permissions(existingPerms).buildAndStore(userService);
.buildAndStore(userService);
userToUpdate.setPermissions(newPerms); userToUpdate.setPermissions(newPerms);
userService.updateUser(userToUpdate); userService.updateUser(userToUpdate);
@ -944,8 +939,8 @@ class UserServiceAccTest {
void should_DeletePermissionsFromDatabase_When_UserHadPermissions() throws Exception { void should_DeletePermissionsFromDatabase_When_UserHadPermissions() throws Exception {
User userToDelete = User userToDelete =
randomTestUser() randomTestUser()
.permissions(Set.of("permission1", "permission2")) .permissions(Set.of("permission1", "permission2"))
.buildAndStore(userService); .buildAndStore(userService);
userService.deleteUser(userToDelete.getId()); userService.deleteUser(userToDelete.getId());
@ -1045,16 +1040,16 @@ class UserServiceAccTest {
@WithAccessId(user = "user-1-1") @WithAccessId(user = "user-1-1")
@Test @Test
void should_ReturnOneDomain_When_PermissionHasSufficientMinimalPermissionsToAssignDomains() void should_ReturnOneDomain_When_PermissionHasSufficientMinimalPermissionsToAssignDomains()
throws Exception { throws Exception {
String permissionsId = UUID.randomUUID().toString(); String permissionsId = UUID.randomUUID().toString();
User user = User user =
randomTestUser() randomTestUser()
.permissions(Set.of(permissionsId)) .permissions(Set.of(permissionsId))
.buildAndStore(userService, "businessadmin"); .buildAndStore(userService, "businessadmin");
Workbasket workbasket = Workbasket workbasket =
defaultTestWorkbasket().buildAndStore(workbasketService, "businessadmin"); defaultTestWorkbasket().buildAndStore(workbasketService, "businessadmin");
createAccessItem(permissionsId, createAccessItem(
workbasket, WorkbasketPermission.OPEN, WorkbasketPermission.READ); permissionsId, workbasket, WorkbasketPermission.OPEN, WorkbasketPermission.READ);
User userInDatabase = userService.getUser(user.getId()); User userInDatabase = userService.getUser(user.getId());
@ -1112,7 +1107,7 @@ class UserServiceAccTest {
@WithAccessId(user = "businessadmin") @WithAccessId(user = "businessadmin")
@Test @Test
void should_ReturnEmptyDomains_When_GroupHasSufficientPermissionsAndThenPermissionIsUpdated() void should_ReturnEmptyDomains_When_GroupHasSufficientPermissionsAndThenPermissionIsUpdated()
throws Exception { throws Exception {
String groupId = UUID.randomUUID().toString(); String groupId = UUID.randomUUID().toString();
User user = randomTestUser().permissions(Set.of(groupId)).buildAndStore(userService); User user = randomTestUser().permissions(Set.of(groupId)).buildAndStore(userService);
Workbasket workbasket = defaultTestWorkbasket().buildAndStore(workbasketService); Workbasket workbasket = defaultTestWorkbasket().buildAndStore(workbasketService);
@ -1181,27 +1176,27 @@ class UserServiceAccTest {
@WithAccessId(user = "user-1-1") @WithAccessId(user = "user-1-1")
@Test @Test
void should_ReturnMultipleDomains_When_UserAndPermHaveSufficientMinimalPermsForMultipleDomains() void should_ReturnMultipleDomains_When_UserAndPermHaveSufficientMinimalPermsForMultipleDomains()
throws Exception { throws Exception {
String permissionId = UUID.randomUUID().toString(); String permissionId = UUID.randomUUID().toString();
User user = User user =
randomTestUser() randomTestUser()
.permissions(Set.of(permissionId)) .permissions(Set.of(permissionId))
.buildAndStore(userService, "businessadmin"); .buildAndStore(userService, "businessadmin");
Workbasket workbasket1 = Workbasket workbasket1 =
defaultTestWorkbasket().buildAndStore(workbasketService, "businessadmin"); defaultTestWorkbasket().buildAndStore(workbasketService, "businessadmin");
Workbasket workbasket2 = Workbasket workbasket2 =
defaultTestWorkbasket() defaultTestWorkbasket()
.domain("DOMAIN_B") .domain("DOMAIN_B")
.buildAndStore(workbasketService, "businessadmin"); .buildAndStore(workbasketService, "businessadmin");
createAccessItem( createAccessItem(
user.getId(), workbasket1, WorkbasketPermission.OPEN, WorkbasketPermission.READ); user.getId(), workbasket1, WorkbasketPermission.OPEN, WorkbasketPermission.READ);
createAccessItem( createAccessItem(
permissionId, workbasket2, WorkbasketPermission.OPEN, WorkbasketPermission.READ); permissionId, workbasket2, WorkbasketPermission.OPEN, WorkbasketPermission.READ);
User userInDatabase = userService.getUser(user.getId()); User userInDatabase = userService.getUser(user.getId());
assertThat(userInDatabase.getDomains()) assertThat(userInDatabase.getDomains())
.containsExactlyInAnyOrder(workbasket1.getDomain(), workbasket2.getDomain()); .containsExactlyInAnyOrder(workbasket1.getDomain(), workbasket2.getDomain());
} }
@Nested @Nested
@ -1250,18 +1245,16 @@ class UserServiceAccTest {
@WithAccessId(user = "user-1-1") @WithAccessId(user = "user-1-1")
@Test @Test
void should_ReturnEmptyDomains_When_PermHasInsufficientMinimalPermissionsToAssignDomains() void should_ReturnEmptyDomains_When_PermHasInsufficientMinimalPermissionsToAssignDomains()
throws Exception { throws Exception {
String permissionId = UUID.randomUUID().toString(); String permissionId = UUID.randomUUID().toString();
User user = User user =
randomTestUser() randomTestUser()
.permissions(Set.of(permissionId)) .permissions(Set.of(permissionId))
.buildAndStore(userService, "businessadmin"); .buildAndStore(userService, "businessadmin");
Workbasket workbasket = Workbasket workbasket =
defaultTestWorkbasket().buildAndStore(workbasketService, "businessadmin"); defaultTestWorkbasket().buildAndStore(workbasketService, "businessadmin");
createAccessItem(permissionId, createAccessItem(
workbasket, permissionId, workbasket, WorkbasketPermission.OPEN, WorkbasketPermission.READ);
WorkbasketPermission.OPEN,
WorkbasketPermission.READ);
User userInDatabase = userService.getUser(user.getId()); User userInDatabase = userService.getUser(user.getId());
@ -1299,7 +1292,6 @@ class UserServiceAccTest {
assertThat(userInDatabase.getDomains()).containsExactly(workbasket.getDomain()); assertThat(userInDatabase.getDomains()).containsExactly(workbasket.getDomain());
} }
} }
@Nested @Nested
@ -1346,19 +1338,16 @@ class UserServiceAccTest {
@WithAccessId(user = "user-1-1") @WithAccessId(user = "user-1-1")
@Test @Test
void should_ReturnEmptyDomains_When_PropertyIsNotSetAndPermission() void should_ReturnEmptyDomains_When_PropertyIsNotSetAndPermission() throws Exception {
throws Exception {
String permissionId = UUID.randomUUID().toString(); String permissionId = UUID.randomUUID().toString();
User user = User user =
randomTestUser() randomTestUser()
.permissions(Set.of(permissionId)) .permissions(Set.of(permissionId))
.buildAndStore(userService, "businessadmin"); .buildAndStore(userService, "businessadmin");
Workbasket workbasket = Workbasket workbasket =
defaultTestWorkbasket().buildAndStore(workbasketService, "businessadmin"); defaultTestWorkbasket().buildAndStore(workbasketService, "businessadmin");
createAccessItem(permissionId, createAccessItem(
workbasket, permissionId, workbasket, WorkbasketPermission.OPEN, WorkbasketPermission.READ);
WorkbasketPermission.OPEN,
WorkbasketPermission.READ);
User userInDatabase = userService.getUser(user.getId()); User userInDatabase = userService.getUser(user.getId());

View File

@ -134,6 +134,7 @@ public class TaskanaConfiguration {
// region custom configuration // region custom configuration
private final Map<String, String> properties; private final Map<String, String> properties;
// endregion // endregion
private TaskanaConfiguration(Builder builder) { private TaskanaConfiguration(Builder builder) {
@ -717,11 +718,13 @@ public class TaskanaConfiguration {
@TaskanaProperty("taskana.servicelevel.validation.enforce") @TaskanaProperty("taskana.servicelevel.validation.enforce")
private boolean enforceServiceLevel = true; private boolean enforceServiceLevel = true;
// endregion // endregion
// region authentication configuration // region authentication configuration
@TaskanaProperty("taskana.roles") @TaskanaProperty("taskana.roles")
private Map<TaskanaRole, Set<String>> roleMap = new EnumMap<>(TaskanaRole.class); private Map<TaskanaRole, Set<String>> roleMap = new EnumMap<>(TaskanaRole.class);
// endregion // endregion
// region classification configuration // region classification configuration
@ -730,6 +733,7 @@ public class TaskanaConfiguration {
@TaskanaProperty("taskana.classification.categories") @TaskanaProperty("taskana.classification.categories")
private Map<String, List<String>> classificationCategoriesByType = new HashMap<>(); private Map<String, List<String>> classificationCategoriesByType = new HashMap<>();
// endregion // endregion
// region working time configuration // region working time configuration
@ -752,6 +756,7 @@ public class TaskanaConfiguration {
@TaskanaProperty("taskana.workingTime.holidays.german.corpus-christi.enabled") @TaskanaProperty("taskana.workingTime.holidays.german.corpus-christi.enabled")
private boolean germanPublicHolidaysCorpusChristiEnabled = false; private boolean germanPublicHolidaysCorpusChristiEnabled = false;
// endregion // endregion
// region history configuration // region history configuration
@ -760,6 +765,7 @@ public class TaskanaConfiguration {
@TaskanaProperty("taskana.history.logger.name") @TaskanaProperty("taskana.history.logger.name")
private String logHistoryLoggerName = null; // default value will be set in the logger class. private String logHistoryLoggerName = null; // default value will be set in the logger class.
// endregion // endregion
// region job configuration // region job configuration
@ -852,6 +858,7 @@ public class TaskanaConfiguration {
@TaskanaProperty("taskana.jobs.customJobs") @TaskanaProperty("taskana.jobs.customJobs")
private Set<String> customJobs = new HashSet<>(); private Set<String> customJobs = new HashSet<>();
// endregion // endregion
// region user configuration // region user configuration
@ -860,15 +867,18 @@ public class TaskanaConfiguration {
@TaskanaProperty("taskana.user.minimalPermissionsToAssignDomains") @TaskanaProperty("taskana.user.minimalPermissionsToAssignDomains")
private Set<WorkbasketPermission> minimalPermissionsToAssignDomains = new HashSet<>(); private Set<WorkbasketPermission> minimalPermissionsToAssignDomains = new HashSet<>();
// endregion // endregion
// region database configuration // region database configuration
@TaskanaProperty("taskana.feature.useSpecificDb2Taskquery") @TaskanaProperty("taskana.feature.useSpecificDb2Taskquery")
private boolean useSpecificDb2Taskquery = true; private boolean useSpecificDb2Taskquery = true;
// endregion // endregion
// region custom configuration // region custom configuration
private Map<String, String> properties = Collections.emptyMap(); private Map<String, String> properties = Collections.emptyMap();
// endregion // endregion
public Builder(DataSource dataSource, boolean useManagedTransactions, String schemaName) { public Builder(DataSource dataSource, boolean useManagedTransactions, String schemaName) {

View File

@ -179,8 +179,11 @@ public class ClassificationServiceImpl implements ClassificationService {
@Override @Override
public Classification createClassification(Classification classification) public Classification createClassification(Classification classification)
throws ClassificationAlreadyExistException, DomainNotFoundException, InvalidArgumentException, throws ClassificationAlreadyExistException,
MalformedServiceLevelException, NotAuthorizedException { DomainNotFoundException,
InvalidArgumentException,
MalformedServiceLevelException,
NotAuthorizedException {
taskanaEngine.getEngine().checkRoleMembership(TaskanaRole.BUSINESS_ADMIN, TaskanaRole.ADMIN); taskanaEngine.getEngine().checkRoleMembership(TaskanaRole.BUSINESS_ADMIN, TaskanaRole.ADMIN);
if (!taskanaEngine.domainExists(classification.getDomain()) if (!taskanaEngine.domainExists(classification.getDomain())
&& !MASTER_DOMAIN.equals(classification.getDomain())) { && !MASTER_DOMAIN.equals(classification.getDomain())) {
@ -235,8 +238,11 @@ public class ClassificationServiceImpl implements ClassificationService {
@Override @Override
public Classification updateClassification(Classification classification) public Classification updateClassification(Classification classification)
throws ConcurrencyException, ClassificationNotFoundException, InvalidArgumentException, throws ConcurrencyException,
MalformedServiceLevelException, NotAuthorizedException { ClassificationNotFoundException,
InvalidArgumentException,
MalformedServiceLevelException,
NotAuthorizedException {
taskanaEngine.getEngine().checkRoleMembership(TaskanaRole.BUSINESS_ADMIN, TaskanaRole.ADMIN); taskanaEngine.getEngine().checkRoleMembership(TaskanaRole.BUSINESS_ADMIN, TaskanaRole.ADMIN);
ClassificationImpl classificationImpl; ClassificationImpl classificationImpl;
try { try {

View File

@ -975,6 +975,7 @@ public interface TaskQuery extends BaseQuery<TaskSummary, TaskQueryColumnName> {
* @return the query * @return the query
*/ */
TaskQuery primaryObjectReferenceIn(ObjectReference... objectReferences); TaskQuery primaryObjectReferenceIn(ObjectReference... objectReferences);
// endregion // endregion
// region primaryObjectReferenceCompany // region primaryObjectReferenceCompany

View File

@ -219,6 +219,10 @@ public class TaskSummaryImpl implements TaskSummary {
return this.groupByCount; return this.groupByCount;
} }
public void setGroupByCount(Integer n) {
groupByCount = n;
}
@Override @Override
public Instant getDue() { public Instant getDue() {
return due != null ? due.truncatedTo(ChronoUnit.MILLIS) : null; return due != null ? due.truncatedTo(ChronoUnit.MILLIS) : null;
@ -493,10 +497,6 @@ public class TaskSummaryImpl implements TaskSummary {
setWorkbasketSummary(workbasketSummary); setWorkbasketSummary(workbasketSummary);
} }
public void setGroupByCount(Integer n) {
groupByCount = n;
}
public void addAttachmentSummary(AttachmentSummary attachmentSummary) { public void addAttachmentSummary(AttachmentSummary attachmentSummary) {
if (this.attachmentSummaries == null) { if (this.attachmentSummaries == null) {
this.attachmentSummaries = new ArrayList<>(); this.attachmentSummaries = new ArrayList<>();

View File

@ -16,8 +16,10 @@ public interface UserMapper {
@SelectProvider(type = UserMapperSqlProvider.class, method = "findById") @SelectProvider(type = UserMapperSqlProvider.class, method = "findById")
@Result(property = "id", column = "USER_ID") @Result(property = "id", column = "USER_ID")
@Result(property = "groups", column = "USER_ID", many = @Many(select = "findGroupsById")) @Result(property = "groups", column = "USER_ID", many = @Many(select = "findGroupsById"))
@Result(property = "permissions", column = "USER_ID", @Result(
many = @Many(select = "findPermissionsById")) property = "permissions",
column = "USER_ID",
many = @Many(select = "findPermissionsById"))
@Result(property = "firstName", column = "FIRST_NAME") @Result(property = "firstName", column = "FIRST_NAME")
@Result(property = "lastName", column = "LASTNAME") @Result(property = "lastName", column = "LASTNAME")
@Result(property = "fullName", column = "FULL_NAME") @Result(property = "fullName", column = "FULL_NAME")
@ -34,8 +36,10 @@ public interface UserMapper {
@Result(property = "id", column = "USER_ID") @Result(property = "id", column = "USER_ID")
@Result(property = "groups", column = "USER_ID", many = @Many(select = "findGroupsById")) @Result(property = "groups", column = "USER_ID", many = @Many(select = "findGroupsById"))
@Result(property = "permissions", column = "USER_ID", @Result(
many = @Many(select = "findPermissionsById")) property = "permissions",
column = "USER_ID",
many = @Many(select = "findPermissionsById"))
@Result(property = "firstName", column = "FIRST_NAME") @Result(property = "firstName", column = "FIRST_NAME")
@Result(property = "lastName", column = "LASTNAME") @Result(property = "lastName", column = "LASTNAME")
@Result(property = "fullName", column = "FULL_NAME") @Result(property = "fullName", column = "FULL_NAME")
@ -68,9 +72,9 @@ public interface UserMapper {
void insertGroups(User user); void insertGroups(User user);
@InsertProvider( @InsertProvider(
type = UserMapperSqlProvider.class, type = UserMapperSqlProvider.class,
method = "insertPermissionsOracle", method = "insertPermissionsOracle",
databaseId = "oracle") databaseId = "oracle")
@InsertProvider(type = UserMapperSqlProvider.class, method = "insertPermissions") @InsertProvider(type = UserMapperSqlProvider.class, method = "insertPermissions")
void insertPermissions(User user); void insertPermissions(User user);

View File

@ -424,6 +424,7 @@ public interface WorkbasketService {
* pro.taskana.common.api.TaskanaRole#BUSINESS_ADMIN business-admin} * pro.taskana.common.api.TaskanaRole#BUSINESS_ADMIN business-admin}
*/ */
WorkbasketAccessItemQuery createWorkbasketAccessItemQuery() throws NotAuthorizedException; WorkbasketAccessItemQuery createWorkbasketAccessItemQuery() throws NotAuthorizedException;
// endregion // endregion
// region Permission and Authorization // region Permission and Authorization

View File

@ -90,6 +90,7 @@ public class ClassificationQueryFilterParameter
*/ */
@JsonProperty("custom-6-like") @JsonProperty("custom-6-like")
private final String[] custom6Like; private final String[] custom6Like;
/** /**
* Filter by the value of the field custom7. This results in a substring search.. (% is appended * Filter by the value of the field custom7. This results in a substring search.. (% is appended
* to the beginning and end of the requested value). Further SQL "LIKE" wildcard characters will * to the beginning and end of the requested value). Further SQL "LIKE" wildcard characters will

View File

@ -8,18 +8,21 @@ public class ClassificationRepresentationModel extends ClassificationSummaryRepr
/** True, if this classification to objects in this domain. */ /** True, if this classification to objects in this domain. */
private Boolean isValidInDomain; private Boolean isValidInDomain;
/** /**
* The creation timestamp of the classification in the system. * The creation timestamp of the classification in the system.
* *
* <p>The format is ISO-8601. * <p>The format is ISO-8601.
*/ */
private Instant created; private Instant created;
/** /**
* The timestamp of the last modification. * The timestamp of the last modification.
* *
* <p>The format is ISO-8601. * <p>The format is ISO-8601.
*/ */
private Instant modified; private Instant modified;
/** The description of the classification. */ /** The description of the classification. */
private String description; private String description;

View File

@ -10,53 +10,71 @@ public class ClassificationSummaryRepresentationModel
/** Unique Id. */ /** Unique Id. */
@NotNull protected String classificationId; @NotNull protected String classificationId;
/** /**
* The key of the Classification. This is typically an externally known code or abbreviation of * The key of the Classification. This is typically an externally known code or abbreviation of
* the Classification. * the Classification.
*/ */
@NotNull protected String key; @NotNull protected String key;
/** /**
* The logical name of the entry point. This is needed by the task list application to determine * The logical name of the entry point. This is needed by the task list application to determine
* the redirect to work on a task of this Classification. * the redirect to work on a task of this Classification.
*/ */
protected String applicationEntryPoint; protected String applicationEntryPoint;
/** /**
* The category of the classification. Categories can be configured in the file * The category of the classification. Categories can be configured in the file
* 'taskana.properties'. * 'taskana.properties'.
*/ */
@NotNull protected String category; @NotNull protected String category;
/** The domain for which this classification is specified. */ /** The domain for which this classification is specified. */
protected String domain; protected String domain;
/** The name of the classification. */ /** The name of the classification. */
@NotNull protected String name; @NotNull protected String name;
/** The Id of the parent classification. Empty string ("") if this is a root classification. */ /** The Id of the parent classification. Empty string ("") if this is a root classification. */
protected String parentId; protected String parentId;
/** The key of the parent classification. Empty string ("") if this is a root classification. */ /** The key of the parent classification. Empty string ("") if this is a root classification. */
protected String parentKey; protected String parentKey;
/** The priority of the classification. */ /** The priority of the classification. */
@NotNull protected int priority; @NotNull protected int priority;
/** /**
* The service level of the classification. * The service level of the classification.
* *
* <p>This is stated according to ISO 8601. * <p>This is stated according to ISO 8601.
*/ */
@NotNull protected String serviceLevel; @NotNull protected String serviceLevel;
/** The type of classification. Types can be configured in the file 'taskana.properties'. */ /** The type of classification. Types can be configured in the file 'taskana.properties'. */
protected String type; protected String type;
/** A custom property with name "1". */ /** A custom property with name "1". */
protected String custom1; protected String custom1;
/** A custom property with name "2". */ /** A custom property with name "2". */
protected String custom2; protected String custom2;
/** A custom property with name "3". */ /** A custom property with name "3". */
protected String custom3; protected String custom3;
/** A custom property with name "4". */ /** A custom property with name "4". */
protected String custom4; protected String custom4;
/** A custom property with name "5". */ /** A custom property with name "5". */
protected String custom5; protected String custom5;
/** A custom property with name "6". */ /** A custom property with name "6". */
protected String custom6; protected String custom6;
/** A custom property with name "7". */ /** A custom property with name "7". */
protected String custom7; protected String custom7;
/** A custom property with name "8". */ /** A custom property with name "8". */
protected String custom8; protected String custom8;

View File

@ -8,6 +8,7 @@ public class AccessIdRepresentationModel extends RepresentationModel<AccessIdRep
/** The name of this Access Id. */ /** The name of this Access Id. */
private String name; private String name;
/** /**
* The value of the Access Id. This value will be used to determine the access to a workbasket. * The value of the Access Id. This value will be used to determine the access to a workbasket.
*/ */

View File

@ -12,10 +12,13 @@ public class PageMetadata {
/** The element size of the page. */ /** The element size of the page. */
private final long size; private final long size;
/** The total number of elements available. */ /** The total number of elements available. */
private final long totalElements; private final long totalElements;
/** Amount of pages that are available in total. */ /** Amount of pages that are available in total. */
private final long totalPages; private final long totalPages;
/** The current page number. */ /** The current page number. */
private final long number; private final long number;

View File

@ -12,8 +12,10 @@ public class TaskanaUserInfoRepresentationModel
/** The user Id of the current user. */ /** The user Id of the current user. */
private String userId; private String userId;
/** All groups the current user is a member of. */ /** All groups the current user is a member of. */
private List<String> groupIds = new ArrayList<>(); private List<String> groupIds = new ArrayList<>();
/** All taskana roles the current user fulfills. */ /** All taskana roles the current user fulfills. */
private List<TaskanaRole> roles = new ArrayList<>(); private List<TaskanaRole> roles = new ArrayList<>();

View File

@ -13,8 +13,10 @@ public class ReportRepresentationModel extends RepresentationModel<ReportReprese
/** Object holding meta info on the report. */ /** Object holding meta info on the report. */
private final MetaInformation meta; private final MetaInformation meta;
/** Array holding the rows of the report. */ /** Array holding the rows of the report. */
private final List<RowRepresentationModel> rows; private final List<RowRepresentationModel> rows;
/** Array holding the sums in the columns over all rows. */ /** Array holding the sums in the columns over all rows. */
private final List<RowRepresentationModel> sumRow; private final List<RowRepresentationModel> sumRow;
@ -45,12 +47,16 @@ public class ReportRepresentationModel extends RepresentationModel<ReportReprese
/** Array holding all the cell values of the given row. */ /** Array holding all the cell values of the given row. */
private final int[] cells; private final int[] cells;
/** Sum of all values of the given row. */ /** Sum of all values of the given row. */
private final int total; private final int total;
/** Depth of the row. If the depth is > 0, then this row is a sub-row of a prior row */ /** Depth of the row. If the depth is > 0, then this row is a sub-row of a prior row */
private final int depth; private final int depth;
/** Array containing description of the row. */ /** Array containing description of the row. */
private final String[] desc; private final String[] desc;
/** Boolean identifying if the given row should be initially displayed or not. */ /** Boolean identifying if the given row should be initially displayed or not. */
private final boolean display; private final boolean display;
@ -105,12 +111,16 @@ public class ReportRepresentationModel extends RepresentationModel<ReportReprese
/** Name of the report. */ /** Name of the report. */
private final String name; private final String name;
/** Date of the report creation. */ /** Date of the report creation. */
private final Instant date; private final Instant date;
/** Column headers of the report. */ /** Column headers of the report. */
private final String[] header; private final String[] header;
/** Descriptions for the rows of the report. */ /** Descriptions for the rows of the report. */
private final String[] rowDesc; private final String[] rowDesc;
/** Description for the sum column. */ /** Description for the sum column. */
private final String sumRowDesc; private final String sumRowDesc;

View File

@ -109,11 +109,12 @@ public class TaskController {
NotAuthorizedOnWorkbasketException { NotAuthorizedOnWorkbasketException {
if (!taskRepresentationModel.getAttachments().stream() if (!taskRepresentationModel.getAttachments().stream()
.filter(att -> Objects.nonNull(att.getTaskId())) .filter(att -> Objects.nonNull(att.getTaskId()))
.filter(att -> !att.getTaskId().equals(taskRepresentationModel.getTaskId())) .filter(att -> !att.getTaskId().equals(taskRepresentationModel.getTaskId()))
.collect(Collectors.toList()).isEmpty()) { .collect(Collectors.toList())
.isEmpty()) {
throw new InvalidArgumentException( throw new InvalidArgumentException(
"An attachments' taskId must be empty or equal to the id of the task it belongs to"); "An attachments' taskId must be empty or equal to the id of the task it belongs to");
} }
Task fromResource = taskRepresentationModelAssembler.toEntityModel(taskRepresentationModel); Task fromResource = taskRepresentationModelAssembler.toEntityModel(taskRepresentationModel);
@ -597,11 +598,12 @@ public class TaskController {
} }
if (!taskRepresentationModel.getAttachments().stream() if (!taskRepresentationModel.getAttachments().stream()
.filter(att -> Objects.nonNull(att.getTaskId())) .filter(att -> Objects.nonNull(att.getTaskId()))
.filter(att -> !att.getTaskId().equals(taskRepresentationModel.getTaskId())) .filter(att -> !att.getTaskId().equals(taskRepresentationModel.getTaskId()))
.collect(Collectors.toList()).isEmpty()) { .collect(Collectors.toList())
.isEmpty()) {
throw new InvalidArgumentException( throw new InvalidArgumentException(
"An attachments' taskId must be empty or equal to the id of the task it belongs to"); "An attachments' taskId must be empty or equal to the id of the task it belongs to");
} }
Task task = taskRepresentationModelAssembler.toEntityModel(taskRepresentationModel); Task task = taskRepresentationModelAssembler.toEntityModel(taskRepresentationModel);

View File

@ -395,6 +395,7 @@ public class TaskQueryFilterCustomFields implements QueryParameter<TaskQuery, Vo
/** Filter out by values of the field custom16 of the Task. This is an exact match. */ /** Filter out by values of the field custom16 of the Task. This is an exact match. */
@JsonProperty("custom-16-not") @JsonProperty("custom-16-not")
private final String[] custom16NotIn; private final String[] custom16NotIn;
/** /**
* Filter by the custom16 field of the Task. This results in a substring search (% is appended to * Filter by the custom16 field of the Task. This results in a substring search (% is appended to
* the front and end of the requested value). Further SQL "LIKE" wildcard characters will be * the front and end of the requested value). Further SQL "LIKE" wildcard characters will be

View File

@ -21,12 +21,15 @@ public class TaskQueryFilterCustomIntFields implements QueryParameter<TaskQuery,
/** Filter by the value of the field customInt1 of the Task. This is an exact match. */ /** Filter by the value of the field customInt1 of the Task. This is an exact match. */
@JsonProperty("custom-int-1") @JsonProperty("custom-int-1")
private final Integer[] customInt1In; private final Integer[] customInt1In;
/** Exclude values of the field customInt1 of the Task. */ /** Exclude values of the field customInt1 of the Task. */
@JsonProperty("custom-int-1-not") @JsonProperty("custom-int-1-not")
private final Integer[] customInt1NotIn; private final Integer[] customInt1NotIn;
/** Filter by the range of value of the field customInt1 of the Task. */ /** Filter by the range of value of the field customInt1 of the Task. */
@JsonProperty("custom-int-1-within") @JsonProperty("custom-int-1-within")
private final Integer[] customInt1Within; private final Integer[] customInt1Within;
/** Exclude range of values of the field customInt1 of the Task. */ /** Exclude range of values of the field customInt1 of the Task. */
@JsonProperty("custom-int-1-not-within") @JsonProperty("custom-int-1-not-within")
private final Integer[] customInt1NotWithin; private final Integer[] customInt1NotWithin;
@ -38,9 +41,11 @@ public class TaskQueryFilterCustomIntFields implements QueryParameter<TaskQuery,
*/ */
@JsonProperty("custom-int-1-from") @JsonProperty("custom-int-1-from")
private final Integer customInt1From; private final Integer customInt1From;
/** Exclude values from a lower bound of the field customInt1 of the Task. */ /** Exclude values from a lower bound of the field customInt1 of the Task. */
@JsonProperty("custom-int-1-from-not") @JsonProperty("custom-int-1-from-not")
private final Integer customInt1FromNot; private final Integer customInt1FromNot;
/** /**
* Filter by upper bound of customInt1. * Filter by upper bound of customInt1.
* *
@ -60,12 +65,15 @@ public class TaskQueryFilterCustomIntFields implements QueryParameter<TaskQuery,
/** Exclude values of the field customInt2 of the Task. */ /** Exclude values of the field customInt2 of the Task. */
@JsonProperty("custom-int-2-not") @JsonProperty("custom-int-2-not")
private final Integer[] customInt2NotIn; private final Integer[] customInt2NotIn;
/** Filter by the range of value of the field customInt2 of the Task. */ /** Filter by the range of value of the field customInt2 of the Task. */
@JsonProperty("custom-int-2-within") @JsonProperty("custom-int-2-within")
private final Integer[] customInt2Within; private final Integer[] customInt2Within;
/** Exclude range of values of the field customInt2 of the Task. */ /** Exclude range of values of the field customInt2 of the Task. */
@JsonProperty("custom-int-2-not-within") @JsonProperty("custom-int-2-not-within")
private final Integer[] customInt2NotWithin; private final Integer[] customInt2NotWithin;
/** /**
* Filter by lower bound of customInt2. * Filter by lower bound of customInt2.
* *
@ -73,9 +81,11 @@ public class TaskQueryFilterCustomIntFields implements QueryParameter<TaskQuery,
*/ */
@JsonProperty("custom-int-2-from") @JsonProperty("custom-int-2-from")
private final Integer customInt2From; private final Integer customInt2From;
/** Exclude values from a lower bound of the field customInt2 of the Task. */ /** Exclude values from a lower bound of the field customInt2 of the Task. */
@JsonProperty("custom-int-2-from-not") @JsonProperty("custom-int-2-from-not")
private final Integer customInt2FromNot; private final Integer customInt2FromNot;
/** /**
* Filter by upper bound of customInt2. * Filter by upper bound of customInt2.
* *
@ -83,9 +93,11 @@ public class TaskQueryFilterCustomIntFields implements QueryParameter<TaskQuery,
*/ */
@JsonProperty("custom-int-2-to") @JsonProperty("custom-int-2-to")
private final Integer customInt2To; private final Integer customInt2To;
/** Exclude values to an upper bound of the field customInt2 of the Task. */ /** Exclude values to an upper bound of the field customInt2 of the Task. */
@JsonProperty("custom-int-2-to-not") @JsonProperty("custom-int-2-to-not")
private final Integer customInt2ToNot; private final Integer customInt2ToNot;
/** Filter by the value of the field customInt3 of the Task. This is an exact match. */ /** Filter by the value of the field customInt3 of the Task. This is an exact match. */
@JsonProperty("custom-int-3") @JsonProperty("custom-int-3")
private final Integer[] customInt3In; private final Integer[] customInt3In;
@ -93,12 +105,15 @@ public class TaskQueryFilterCustomIntFields implements QueryParameter<TaskQuery,
/** Exclude values of the field customInt3 of the Task. */ /** Exclude values of the field customInt3 of the Task. */
@JsonProperty("custom-int-3-not") @JsonProperty("custom-int-3-not")
private final Integer[] customInt3NotIn; private final Integer[] customInt3NotIn;
/** Filter by the range of value of the field customInt3 of the Task. */ /** Filter by the range of value of the field customInt3 of the Task. */
@JsonProperty("custom-int-3-within") @JsonProperty("custom-int-3-within")
private final Integer[] customInt3Within; private final Integer[] customInt3Within;
/** Exclude range of values of the field customInt3 of the Task. */ /** Exclude range of values of the field customInt3 of the Task. */
@JsonProperty("custom-int-3-not-within") @JsonProperty("custom-int-3-not-within")
private final Integer[] customInt3NotWithin; private final Integer[] customInt3NotWithin;
/** /**
* Filter by lower bound of customInt3. * Filter by lower bound of customInt3.
* *
@ -106,9 +121,11 @@ public class TaskQueryFilterCustomIntFields implements QueryParameter<TaskQuery,
*/ */
@JsonProperty("custom-int-3-from") @JsonProperty("custom-int-3-from")
private final Integer customInt3From; private final Integer customInt3From;
/** Exclude values from a lower bound of the field customInt3 of the Task. */ /** Exclude values from a lower bound of the field customInt3 of the Task. */
@JsonProperty("custom-int-3-from-not") @JsonProperty("custom-int-3-from-not")
private final Integer customInt3FromNot; private final Integer customInt3FromNot;
/** /**
* Filter by upper bound of customInt3. * Filter by upper bound of customInt3.
* *
@ -116,9 +133,11 @@ public class TaskQueryFilterCustomIntFields implements QueryParameter<TaskQuery,
*/ */
@JsonProperty("custom-int-3-to") @JsonProperty("custom-int-3-to")
private final Integer customInt3To; private final Integer customInt3To;
/** Exclude values to an upper bound of the field customInt3 of the Task. */ /** Exclude values to an upper bound of the field customInt3 of the Task. */
@JsonProperty("custom-int-3-to-not") @JsonProperty("custom-int-3-to-not")
private final Integer customInt3ToNot; private final Integer customInt3ToNot;
/** Filter by the value of the field customInt4 of the Task. This is an exact match. */ /** Filter by the value of the field customInt4 of the Task. This is an exact match. */
@JsonProperty("custom-int-4") @JsonProperty("custom-int-4")
private final Integer[] customInt4In; private final Integer[] customInt4In;
@ -126,12 +145,15 @@ public class TaskQueryFilterCustomIntFields implements QueryParameter<TaskQuery,
/** Exclude values of the field customInt4 of the Task. */ /** Exclude values of the field customInt4 of the Task. */
@JsonProperty("custom-int-4-not") @JsonProperty("custom-int-4-not")
private final Integer[] customInt4NotIn; private final Integer[] customInt4NotIn;
/** Filter by the range of value of the field customInt4 of the Task. */ /** Filter by the range of value of the field customInt4 of the Task. */
@JsonProperty("custom-int-4-within") @JsonProperty("custom-int-4-within")
private final Integer[] customInt4Within; private final Integer[] customInt4Within;
/** Exclude range of values of the field customInt4 of the Task. */ /** Exclude range of values of the field customInt4 of the Task. */
@JsonProperty("custom-int-4-not-within") @JsonProperty("custom-int-4-not-within")
private final Integer[] customInt4NotWithin; private final Integer[] customInt4NotWithin;
/** /**
* Filter by lower bound of customInt4. * Filter by lower bound of customInt4.
* *
@ -139,9 +161,11 @@ public class TaskQueryFilterCustomIntFields implements QueryParameter<TaskQuery,
*/ */
@JsonProperty("custom-int-4-from") @JsonProperty("custom-int-4-from")
private final Integer customInt4From; private final Integer customInt4From;
/** Exclude values from a lower bound of the field customInt4 of the Task. */ /** Exclude values from a lower bound of the field customInt4 of the Task. */
@JsonProperty("custom-int-4-from-not") @JsonProperty("custom-int-4-from-not")
private final Integer customInt4FromNot; private final Integer customInt4FromNot;
/** /**
* Filter by upper bound of customInt4. * Filter by upper bound of customInt4.
* *
@ -149,9 +173,11 @@ public class TaskQueryFilterCustomIntFields implements QueryParameter<TaskQuery,
*/ */
@JsonProperty("custom-int-4-to") @JsonProperty("custom-int-4-to")
private final Integer customInt4To; private final Integer customInt4To;
/** Exclude values to an upper bound of the field customInt4 of the Task. */ /** Exclude values to an upper bound of the field customInt4 of the Task. */
@JsonProperty("custom-int-4-to-not") @JsonProperty("custom-int-4-to-not")
private final Integer customInt4ToNot; private final Integer customInt4ToNot;
/** Filter by the value of the field customInt5 of the Task. This is an exact match. */ /** Filter by the value of the field customInt5 of the Task. This is an exact match. */
@JsonProperty("custom-int-5") @JsonProperty("custom-int-5")
private final Integer[] customInt5In; private final Integer[] customInt5In;
@ -159,12 +185,15 @@ public class TaskQueryFilterCustomIntFields implements QueryParameter<TaskQuery,
/** Exclude values of the field customInt5 of the Task. */ /** Exclude values of the field customInt5 of the Task. */
@JsonProperty("custom-int-5-not") @JsonProperty("custom-int-5-not")
private final Integer[] customInt5NotIn; private final Integer[] customInt5NotIn;
/** Filter by the range of value of the field customInt5 of the Task. */ /** Filter by the range of value of the field customInt5 of the Task. */
@JsonProperty("custom-int-5-within") @JsonProperty("custom-int-5-within")
private final Integer[] customInt5Within; private final Integer[] customInt5Within;
/** Exclude range of values of the field customInt5 of the Task. */ /** Exclude range of values of the field customInt5 of the Task. */
@JsonProperty("custom-int-5-not-within") @JsonProperty("custom-int-5-not-within")
private final Integer[] customInt5NotWithin; private final Integer[] customInt5NotWithin;
/** /**
* Filter by lower bound of customInt5. * Filter by lower bound of customInt5.
* *
@ -172,9 +201,11 @@ public class TaskQueryFilterCustomIntFields implements QueryParameter<TaskQuery,
*/ */
@JsonProperty("custom-int-5-from") @JsonProperty("custom-int-5-from")
private final Integer customInt5From; private final Integer customInt5From;
/** Exclude values from a lower bound of the field customInt5 of the Task. */ /** Exclude values from a lower bound of the field customInt5 of the Task. */
@JsonProperty("custom-int-5-from-not") @JsonProperty("custom-int-5-from-not")
private final Integer customInt5FromNot; private final Integer customInt5FromNot;
/** /**
* Filter by upper bound of customInt5. * Filter by upper bound of customInt5.
* *
@ -182,9 +213,11 @@ public class TaskQueryFilterCustomIntFields implements QueryParameter<TaskQuery,
*/ */
@JsonProperty("custom-int-5-to") @JsonProperty("custom-int-5-to")
private final Integer customInt5To; private final Integer customInt5To;
/** Exclude values to an upper bound of the field customInt5 of the Task. */ /** Exclude values to an upper bound of the field customInt5 of the Task. */
@JsonProperty("custom-int-5-to-not") @JsonProperty("custom-int-5-to-not")
private final Integer customInt5ToNot; private final Integer customInt5ToNot;
/** Filter by the value of the field customInt6 of the Task. This is an exact match. */ /** Filter by the value of the field customInt6 of the Task. This is an exact match. */
@JsonProperty("custom-int-6") @JsonProperty("custom-int-6")
private final Integer[] customInt6In; private final Integer[] customInt6In;
@ -192,12 +225,15 @@ public class TaskQueryFilterCustomIntFields implements QueryParameter<TaskQuery,
/** Exclude values of the field customInt6 of the Task. */ /** Exclude values of the field customInt6 of the Task. */
@JsonProperty("custom-int-6-not") @JsonProperty("custom-int-6-not")
private final Integer[] customInt6NotIn; private final Integer[] customInt6NotIn;
/** Filter by the range of value of the field customInt6 of the Task. */ /** Filter by the range of value of the field customInt6 of the Task. */
@JsonProperty("custom-int-6-within") @JsonProperty("custom-int-6-within")
private final Integer[] customInt6Within; private final Integer[] customInt6Within;
/** Exclude range of values of the field customInt6 of the Task. */ /** Exclude range of values of the field customInt6 of the Task. */
@JsonProperty("custom-int-6-not-within") @JsonProperty("custom-int-6-not-within")
private final Integer[] customInt6NotWithin; private final Integer[] customInt6NotWithin;
/** /**
* Filter by lower bound of customInt6. * Filter by lower bound of customInt6.
* *
@ -205,9 +241,11 @@ public class TaskQueryFilterCustomIntFields implements QueryParameter<TaskQuery,
*/ */
@JsonProperty("custom-int-6-from") @JsonProperty("custom-int-6-from")
private final Integer customInt6From; private final Integer customInt6From;
/** Exclude values from a lower bound of the field customInt6 of the Task. */ /** Exclude values from a lower bound of the field customInt6 of the Task. */
@JsonProperty("custom-int-6-from-not") @JsonProperty("custom-int-6-from-not")
private final Integer customInt6FromNot; private final Integer customInt6FromNot;
/** /**
* Filter by upper bound of customInt6. * Filter by upper bound of customInt6.
* *
@ -215,9 +253,11 @@ public class TaskQueryFilterCustomIntFields implements QueryParameter<TaskQuery,
*/ */
@JsonProperty("custom-int-6-to") @JsonProperty("custom-int-6-to")
private final Integer customInt6To; private final Integer customInt6To;
/** Exclude values to an upper bound of the field customInt6 of the Task. */ /** Exclude values to an upper bound of the field customInt6 of the Task. */
@JsonProperty("custom-int-6-to-not") @JsonProperty("custom-int-6-to-not")
private final Integer customInt6ToNot; private final Integer customInt6ToNot;
/** Filter by the value of the field customInt7 of the Task. This is an exact match. */ /** Filter by the value of the field customInt7 of the Task. This is an exact match. */
@JsonProperty("custom-int-7") @JsonProperty("custom-int-7")
private final Integer[] customInt7In; private final Integer[] customInt7In;
@ -225,12 +265,15 @@ public class TaskQueryFilterCustomIntFields implements QueryParameter<TaskQuery,
/** Exclude values of the field customInt7 of the Task. */ /** Exclude values of the field customInt7 of the Task. */
@JsonProperty("custom-int-7-not") @JsonProperty("custom-int-7-not")
private final Integer[] customInt7NotIn; private final Integer[] customInt7NotIn;
/** Filter by the range of value of the field customInt7 of the Task. */ /** Filter by the range of value of the field customInt7 of the Task. */
@JsonProperty("custom-int-7-within") @JsonProperty("custom-int-7-within")
private final Integer[] customInt7Within; private final Integer[] customInt7Within;
/** Exclude range of values of the field customInt7 of the Task. */ /** Exclude range of values of the field customInt7 of the Task. */
@JsonProperty("custom-int-7-not-within") @JsonProperty("custom-int-7-not-within")
private final Integer[] customInt7NotWithin; private final Integer[] customInt7NotWithin;
/** /**
* Filter by lower bound of customInt7. * Filter by lower bound of customInt7.
* *
@ -238,9 +281,11 @@ public class TaskQueryFilterCustomIntFields implements QueryParameter<TaskQuery,
*/ */
@JsonProperty("custom-int-7-from") @JsonProperty("custom-int-7-from")
private final Integer customInt7From; private final Integer customInt7From;
/** Exclude values from a lower bound of the field customInt7 of the Task. */ /** Exclude values from a lower bound of the field customInt7 of the Task. */
@JsonProperty("custom-int-7-from-not") @JsonProperty("custom-int-7-from-not")
private final Integer customInt7FromNot; private final Integer customInt7FromNot;
/** /**
* Filter by upper bound of customInt7. * Filter by upper bound of customInt7.
* *
@ -248,9 +293,11 @@ public class TaskQueryFilterCustomIntFields implements QueryParameter<TaskQuery,
*/ */
@JsonProperty("custom-int-7-to") @JsonProperty("custom-int-7-to")
private final Integer customInt7To; private final Integer customInt7To;
/** Exclude values to an upper bound of the field customInt7 of the Task. */ /** Exclude values to an upper bound of the field customInt7 of the Task. */
@JsonProperty("custom-int-7-to-not") @JsonProperty("custom-int-7-to-not")
private final Integer customInt7ToNot; private final Integer customInt7ToNot;
/** Filter by the value of the field customInt8 of the Task. This is an exact match. */ /** Filter by the value of the field customInt8 of the Task. This is an exact match. */
@JsonProperty("custom-int-8") @JsonProperty("custom-int-8")
private final Integer[] customInt8In; private final Integer[] customInt8In;
@ -258,12 +305,15 @@ public class TaskQueryFilterCustomIntFields implements QueryParameter<TaskQuery,
/** Exclude values of the field customInt8 of the Task. */ /** Exclude values of the field customInt8 of the Task. */
@JsonProperty("custom-int-8-not") @JsonProperty("custom-int-8-not")
private final Integer[] customInt8NotIn; private final Integer[] customInt8NotIn;
/** Filter by the range of value of the field customInt8 of the Task. */ /** Filter by the range of value of the field customInt8 of the Task. */
@JsonProperty("custom-int-8-within") @JsonProperty("custom-int-8-within")
private final Integer[] customInt8Within; private final Integer[] customInt8Within;
/** Exclude range of values of the field customInt8 of the Task. */ /** Exclude range of values of the field customInt8 of the Task. */
@JsonProperty("custom-int-8-not-within") @JsonProperty("custom-int-8-not-within")
private final Integer[] customInt8NotWithin; private final Integer[] customInt8NotWithin;
/** /**
* Filter by lower bound of customInt8. * Filter by lower bound of customInt8.
* *
@ -271,9 +321,11 @@ public class TaskQueryFilterCustomIntFields implements QueryParameter<TaskQuery,
*/ */
@JsonProperty("custom-int-8-from") @JsonProperty("custom-int-8-from")
private final Integer customInt8From; private final Integer customInt8From;
/** Exclude values from a lower bound of the field customInt8 of the Task. */ /** Exclude values from a lower bound of the field customInt8 of the Task. */
@JsonProperty("custom-int-8-from-not") @JsonProperty("custom-int-8-from-not")
private final Integer customInt8FromNot; private final Integer customInt8FromNot;
/** /**
* Filter by upper bound of customInt8. * Filter by upper bound of customInt8.
* *
@ -281,6 +333,7 @@ public class TaskQueryFilterCustomIntFields implements QueryParameter<TaskQuery,
*/ */
@JsonProperty("custom-int-8-to") @JsonProperty("custom-int-8-to")
private final Integer customInt8To; private final Integer customInt8To;
/** Exclude values to an upper bound of the field customInt8 of the Task. */ /** Exclude values to an upper bound of the field customInt8 of the Task. */
@JsonProperty("custom-int-8-to-not") @JsonProperty("custom-int-8-to-not")
private final Integer customInt8ToNot; private final Integer customInt8ToNot;

View File

@ -28,6 +28,7 @@ public class TaskQueryFilterParameter implements QueryParameter<TaskQuery, Void>
/** Filter by what the task id shouldn't be. This is an exact match. */ /** Filter by what the task id shouldn't be. This is an exact match. */
@JsonProperty("task-id-not") @JsonProperty("task-id-not")
private final String[] taskIdNotIn; private final String[] taskIdNotIn;
// endregion // endregion
// region externalId // region externalId
/** Filter by the external id of the Task. This is an exact match. */ /** Filter by the external id of the Task. This is an exact match. */
@ -37,6 +38,7 @@ public class TaskQueryFilterParameter implements QueryParameter<TaskQuery, Void>
/** Filter by what the external id of the Task shouldn't be. This is an exact match. */ /** Filter by what the external id of the Task shouldn't be. This is an exact match. */
@JsonProperty("external-id-not") @JsonProperty("external-id-not")
private final String[] externalIdNotIn; private final String[] externalIdNotIn;
// endregion // endregion
// region received // region received
/** /**
@ -101,6 +103,7 @@ public class TaskQueryFilterParameter implements QueryParameter<TaskQuery, Void>
*/ */
@JsonProperty("received-until-not") @JsonProperty("received-until-not")
private final Instant receivedUntilNot; private final Instant receivedUntilNot;
// endregion // endregion
// region created // region created
/** /**
@ -164,6 +167,7 @@ public class TaskQueryFilterParameter implements QueryParameter<TaskQuery, Void>
*/ */
@JsonProperty("created-until-not") @JsonProperty("created-until-not")
private final Instant createdUntilNot; private final Instant createdUntilNot;
// endregion // endregion
// region claimed // region claimed
/** /**
@ -183,6 +187,7 @@ public class TaskQueryFilterParameter implements QueryParameter<TaskQuery, Void>
*/ */
@JsonProperty("claimed-not") @JsonProperty("claimed-not")
private final Instant[] claimedNotWithin; private final Instant[] claimedNotWithin;
// endregion // endregion
// region modified // region modified
/** /**
@ -202,6 +207,7 @@ public class TaskQueryFilterParameter implements QueryParameter<TaskQuery, Void>
*/ */
@JsonProperty("modified-not") @JsonProperty("modified-not")
private final Instant[] modifiedNotWithin; private final Instant[] modifiedNotWithin;
// endregion // endregion
// region planned // region planned
/** /**
@ -265,6 +271,7 @@ public class TaskQueryFilterParameter implements QueryParameter<TaskQuery, Void>
*/ */
@JsonProperty("planned-until-not") @JsonProperty("planned-until-not")
private final Instant plannedUntilNot; private final Instant plannedUntilNot;
// endregion // endregion
// region due // region due
/** /**
@ -328,6 +335,7 @@ public class TaskQueryFilterParameter implements QueryParameter<TaskQuery, Void>
*/ */
@JsonProperty("due-until-not") @JsonProperty("due-until-not")
private final Instant dueUntilNot; private final Instant dueUntilNot;
// endregion // endregion
// region completed // region completed
/** /**
@ -392,6 +400,7 @@ public class TaskQueryFilterParameter implements QueryParameter<TaskQuery, Void>
*/ */
@JsonProperty("completed-until-not") @JsonProperty("completed-until-not")
private final Instant completedUntilNot; private final Instant completedUntilNot;
// endregion // endregion
// region name // region name
/** Filter by the name of the Task. This is an exact match. */ /** Filter by the name of the Task. This is an exact match. */
@ -417,6 +426,7 @@ public class TaskQueryFilterParameter implements QueryParameter<TaskQuery, Void>
*/ */
@JsonProperty("name-not-like") @JsonProperty("name-not-like")
private final String[] nameNotLike; private final String[] nameNotLike;
// endregion // endregion
// region creator // region creator
/** Filter by creator of the Task. This is an exact match. */ /** Filter by creator of the Task. This is an exact match. */
@ -442,6 +452,7 @@ public class TaskQueryFilterParameter implements QueryParameter<TaskQuery, Void>
*/ */
@JsonProperty("creator-not-like") @JsonProperty("creator-not-like")
private final String[] creatorNotLike; private final String[] creatorNotLike;
// endregion // endregion
// region note // region note
/** /**
@ -459,6 +470,7 @@ public class TaskQueryFilterParameter implements QueryParameter<TaskQuery, Void>
*/ */
@JsonProperty("note-not-like") @JsonProperty("note-not-like")
private final String[] noteNotLike; private final String[] noteNotLike;
// endregion // endregion
// region description // region description
/** /**
@ -476,6 +488,7 @@ public class TaskQueryFilterParameter implements QueryParameter<TaskQuery, Void>
*/ */
@JsonProperty("description-not-like") @JsonProperty("description-not-like")
private final String[] descriptionNotLike; private final String[] descriptionNotLike;
// endregion // endregion
// region priority // region priority
/** Filter by the priority of the Task. This is an exact match. */ /** Filter by the priority of the Task. This is an exact match. */
@ -509,6 +522,7 @@ public class TaskQueryFilterParameter implements QueryParameter<TaskQuery, Void>
/** Filter by excluding priority up to the given value (inclusive). */ /** Filter by excluding priority up to the given value (inclusive). */
@JsonProperty("priority-not-until") @JsonProperty("priority-not-until")
private final Integer priorityNotUntil; private final Integer priorityNotUntil;
// endregion // endregion
// region state // region state
/** Filter by the Task state. This is an exact match. */ /** Filter by the Task state. This is an exact match. */
@ -518,6 +532,7 @@ public class TaskQueryFilterParameter implements QueryParameter<TaskQuery, Void>
/** Filter by what the Task state shouldn't be. This is an exact match. */ /** Filter by what the Task state shouldn't be. This is an exact match. */
@JsonProperty("state-not") @JsonProperty("state-not")
private final TaskState[] stateNotIn; private final TaskState[] stateNotIn;
// endregion // endregion
// region classificationId // region classificationId
/** Filter by the classification id of the Task. This is an exact match. */ /** Filter by the classification id of the Task. This is an exact match. */
@ -527,6 +542,7 @@ public class TaskQueryFilterParameter implements QueryParameter<TaskQuery, Void>
/** Filter by what the classification id of the Task shouldn't be. This is an exact match. */ /** Filter by what the classification id of the Task shouldn't be. This is an exact match. */
@JsonProperty("classification-id-not") @JsonProperty("classification-id-not")
private final String[] classificationIdNotIn; private final String[] classificationIdNotIn;
// endregion // endregion
// region classificationKey // region classificationKey
/** Filter by the classification key of the Task. This is an exact match. */ /** Filter by the classification key of the Task. This is an exact match. */
@ -552,6 +568,7 @@ public class TaskQueryFilterParameter implements QueryParameter<TaskQuery, Void>
*/ */
@JsonProperty("classification-key-not-like") @JsonProperty("classification-key-not-like")
private final String[] classificationKeyNotLike; private final String[] classificationKeyNotLike;
// endregion // endregion
// region classificationParentKey // region classificationParentKey
/** /**
@ -583,6 +600,7 @@ public class TaskQueryFilterParameter implements QueryParameter<TaskQuery, Void>
*/ */
@JsonProperty("classification-parent-key-not-like") @JsonProperty("classification-parent-key-not-like")
private final String[] classificationParentKeyNotLike; private final String[] classificationParentKeyNotLike;
// endregion // endregion
// region classificationCategory // region classificationCategory
/** Filter by the classification category of the Task. This is an exact match. */ /** Filter by the classification category of the Task. This is an exact match. */
@ -610,6 +628,7 @@ public class TaskQueryFilterParameter implements QueryParameter<TaskQuery, Void>
*/ */
@JsonProperty("classification-category-not-like") @JsonProperty("classification-category-not-like")
private final String[] classificationCategoryNotLike; private final String[] classificationCategoryNotLike;
// endregion // endregion
// region classificationName // region classificationName
/** Filter by the classification name of the Task. This is an exact match. */ /** Filter by the classification name of the Task. This is an exact match. */
@ -635,6 +654,7 @@ public class TaskQueryFilterParameter implements QueryParameter<TaskQuery, Void>
*/ */
@JsonProperty("classification-name-not-like") @JsonProperty("classification-name-not-like")
private final String[] classificationNameNotLike; private final String[] classificationNameNotLike;
// endregion // endregion
// region workbasketId // region workbasketId
/** Filter by workbasket id of the Task. This is an exact match. */ /** Filter by workbasket id of the Task. This is an exact match. */
@ -644,6 +664,7 @@ public class TaskQueryFilterParameter implements QueryParameter<TaskQuery, Void>
/** Filter by what the workbasket id of the Task shouldn't be. This is an exact match. */ /** Filter by what the workbasket id of the Task shouldn't be. This is an exact match. */
@JsonProperty("workbasket-id-not") @JsonProperty("workbasket-id-not")
private final String[] workbasketIdNotIn; private final String[] workbasketIdNotIn;
// endregion // endregion
// region workbasketKeyDomain // region workbasketKeyDomain
/** /**
@ -663,6 +684,7 @@ public class TaskQueryFilterParameter implements QueryParameter<TaskQuery, Void>
/** Filter by domain of the Task. This is an exact match. */ /** Filter by domain of the Task. This is an exact match. */
@JsonProperty("domain") @JsonProperty("domain")
private final String domain; private final String domain;
// endregion // endregion
// region businessProcessId // region businessProcessId
/** Filter by the business process id of the Task. This is an exact match. */ /** Filter by the business process id of the Task. This is an exact match. */
@ -749,6 +771,7 @@ public class TaskQueryFilterParameter implements QueryParameter<TaskQuery, Void>
*/ */
@JsonProperty("owner-is-null") @JsonProperty("owner-is-null")
private final String ownerNull; private final String ownerNull;
// endregion // endregion
// region primaryObjectReference // region primaryObjectReference
/** /**
@ -759,6 +782,7 @@ public class TaskQueryFilterParameter implements QueryParameter<TaskQuery, Void>
*/ */
@JsonProperty("por") @JsonProperty("por")
private final ObjectReference[] primaryObjectReferenceIn; private final ObjectReference[] primaryObjectReferenceIn;
// endregion // endregion
// region primaryObjectReferenceCompany // region primaryObjectReferenceCompany
/** Filter by the company of the primary object reference of the Task. This is an exact match. */ /** Filter by the company of the primary object reference of the Task. This is an exact match. */
@ -787,6 +811,7 @@ public class TaskQueryFilterParameter implements QueryParameter<TaskQuery, Void>
*/ */
@JsonProperty("por-company-not-like") @JsonProperty("por-company-not-like")
private final String[] porCompanyNotLike; private final String[] porCompanyNotLike;
// endregion // endregion
// region primaryObjectReferenceSystem // region primaryObjectReferenceSystem
/** Filter by the system of the primary object reference of the Task. This is an exact match. */ /** Filter by the system of the primary object reference of the Task. This is an exact match. */
@ -815,6 +840,7 @@ public class TaskQueryFilterParameter implements QueryParameter<TaskQuery, Void>
*/ */
@JsonProperty("por-system-not-like") @JsonProperty("por-system-not-like")
private final String[] porSystemNotLike; private final String[] porSystemNotLike;
// endregion // endregion
// region primaryObjectReferenceSystemInstance // region primaryObjectReferenceSystemInstance
/** /**
@ -846,6 +872,7 @@ public class TaskQueryFilterParameter implements QueryParameter<TaskQuery, Void>
*/ */
@JsonProperty("por-instance-not-like") @JsonProperty("por-instance-not-like")
private final String[] porInstanceNotLike; private final String[] porInstanceNotLike;
// endregion // endregion
// region primaryObjectReferenceSystemType // region primaryObjectReferenceSystemType
/** Filter by the type of the primary object reference of the Task. This is an exact match. */ /** Filter by the type of the primary object reference of the Task. This is an exact match. */
@ -874,6 +901,7 @@ public class TaskQueryFilterParameter implements QueryParameter<TaskQuery, Void>
*/ */
@JsonProperty("por-type-not-like") @JsonProperty("por-type-not-like")
private final String[] porTypeNotLike; private final String[] porTypeNotLike;
// endregion // endregion
// region primaryObjectReferenceSystemValue // region primaryObjectReferenceSystemValue
/** Filter by the value of the primary object reference of the Task. This is an exact match. */ /** Filter by the value of the primary object reference of the Task. This is an exact match. */
@ -902,6 +930,7 @@ public class TaskQueryFilterParameter implements QueryParameter<TaskQuery, Void>
*/ */
@JsonProperty("por-value-not-like") @JsonProperty("por-value-not-like")
private final String[] porValueNotLike; private final String[] porValueNotLike;
// endregion // endregion
// region secondaryObjectReference // region secondaryObjectReference
/** /**
@ -912,6 +941,7 @@ public class TaskQueryFilterParameter implements QueryParameter<TaskQuery, Void>
*/ */
@JsonProperty("sor") @JsonProperty("sor")
private final ObjectReference[] secondaryObjectReferenceIn; private final ObjectReference[] secondaryObjectReferenceIn;
// endregion // endregion
// region secondaryObjectReferenceCompany // region secondaryObjectReferenceCompany
/** /**
@ -992,11 +1022,13 @@ public class TaskQueryFilterParameter implements QueryParameter<TaskQuery, Void>
/** Filter by the is read flag of the Task. This is an exact match. */ /** Filter by the is read flag of the Task. This is an exact match. */
@JsonProperty("is-read") @JsonProperty("is-read")
private final Boolean isRead; private final Boolean isRead;
// endregion // endregion
// region transferred // region transferred
/** Filter by the is transferred flag of the Task. This is an exact match. */ /** Filter by the is transferred flag of the Task. This is an exact match. */
@JsonProperty("is-transferred") @JsonProperty("is-transferred")
private final Boolean isTransferred; private final Boolean isTransferred;
// endregion // endregion
// region attachmentClassificationId // region attachmentClassificationId
/** Filter by the attachment classification id of the Task. This is an exact match. */ /** Filter by the attachment classification id of the Task. This is an exact match. */
@ -1009,6 +1041,7 @@ public class TaskQueryFilterParameter implements QueryParameter<TaskQuery, Void>
*/ */
@JsonProperty("attachment-classification-id-not") @JsonProperty("attachment-classification-id-not")
private final String[] attachmentClassificationIdNotIn; private final String[] attachmentClassificationIdNotIn;
// endregion // endregion
// region attachmentClassificationKey // region attachmentClassificationKey
/** Filter by the attachment classification key of the Task. This is an exact match. */ /** Filter by the attachment classification key of the Task. This is an exact match. */
@ -1037,6 +1070,7 @@ public class TaskQueryFilterParameter implements QueryParameter<TaskQuery, Void>
*/ */
@JsonProperty("attachment-classification-key-not-like") @JsonProperty("attachment-classification-key-not-like")
private final String[] attachmentClassificationKeyNotLike; private final String[] attachmentClassificationKeyNotLike;
// endregion // endregion
// region attachmentClassificationName // region attachmentClassificationName
/** Filter by the attachment classification name of the Task. This is an exact match. */ /** Filter by the attachment classification name of the Task. This is an exact match. */
@ -1065,6 +1099,7 @@ public class TaskQueryFilterParameter implements QueryParameter<TaskQuery, Void>
*/ */
@JsonProperty("attachment-classification-name-not-like") @JsonProperty("attachment-classification-name-not-like")
private final String[] attachmentClassificationNameNotLike; private final String[] attachmentClassificationNameNotLike;
// endregion // endregion
// region attachmentChannel // region attachmentChannel
/** Filter by the attachment channel of the Task. This is an exact match. */ /** Filter by the attachment channel of the Task. This is an exact match. */
@ -1090,6 +1125,7 @@ public class TaskQueryFilterParameter implements QueryParameter<TaskQuery, Void>
*/ */
@JsonProperty("attachment-channel-not-like") @JsonProperty("attachment-channel-not-like")
private final String[] attachmentChannelNotLike; private final String[] attachmentChannelNotLike;
// endregion // endregion
// region attachmentReferenceValue // region attachmentReferenceValue
/** Filter by the attachment reference of the Task. This is an exact match. */ /** Filter by the attachment reference of the Task. This is an exact match. */
@ -1115,6 +1151,7 @@ public class TaskQueryFilterParameter implements QueryParameter<TaskQuery, Void>
*/ */
@JsonProperty("attachment-reference-not-like") @JsonProperty("attachment-reference-not-like")
private final String[] attachmentReferenceNotLike; private final String[] attachmentReferenceNotLike;
// endregion // endregion
// region attachmentReceived // region attachmentReceived
/** /**
@ -1134,6 +1171,7 @@ public class TaskQueryFilterParameter implements QueryParameter<TaskQuery, Void>
*/ */
@JsonProperty("attachment-received-not") @JsonProperty("attachment-received-not")
private final Instant[] attachmentReceivedNotWithin; private final Instant[] attachmentReceivedNotWithin;
// endregion // endregion
// region withoutAttachment // region withoutAttachment
/** /**
@ -1142,6 +1180,7 @@ public class TaskQueryFilterParameter implements QueryParameter<TaskQuery, Void>
*/ */
@JsonProperty("without-attachment") @JsonProperty("without-attachment")
private final Boolean withoutAttachment; private final Boolean withoutAttachment;
// endregion // endregion
// region callbackState // region callbackState
/** Filter by the callback state of the Task. This is an exact match. */ /** Filter by the callback state of the Task. This is an exact match. */
@ -1151,6 +1190,7 @@ public class TaskQueryFilterParameter implements QueryParameter<TaskQuery, Void>
/** Filter by what the callback state of the Task shouldn't be. This is an exact match. */ /** Filter by what the callback state of the Task shouldn't be. This is an exact match. */
@JsonProperty("callback-state-not") @JsonProperty("callback-state-not")
private final CallbackState[] callbackStateNotIn; private final CallbackState[] callbackStateNotIn;
// endregion // endregion
// region wildcardSearchValue // region wildcardSearchValue
/** /**
@ -1168,6 +1208,7 @@ public class TaskQueryFilterParameter implements QueryParameter<TaskQuery, Void>
*/ */
@JsonProperty("wildcard-search-value") @JsonProperty("wildcard-search-value")
private final String wildcardSearchValue; private final String wildcardSearchValue;
// endregion // endregion
// region constructor // region constructor
@ -2203,7 +2244,7 @@ public class TaskQueryFilterParameter implements QueryParameter<TaskQuery, Void>
return this.ownerIn; return this.ownerIn;
} }
if (this.ownerIn == null) { if (this.ownerIn == null) {
return new String[]{null}; return new String[] {null};
} }
List<String> ownerInAsList = new ArrayList(Arrays.asList(this.ownerIn)); List<String> ownerInAsList = new ArrayList(Arrays.asList(this.ownerIn));
ownerInAsList.add(null); ownerInAsList.add(null);

View File

@ -9,6 +9,43 @@ import pro.taskana.common.rest.QueryParameter;
import pro.taskana.task.api.TaskQuery; import pro.taskana.task.api.TaskQuery;
public class TaskQueryGroupByParameter implements QueryParameter<TaskQuery, Void> { public class TaskQueryGroupByParameter implements QueryParameter<TaskQuery, Void> {
// region groupBy
@JsonProperty("group-by")
private final TaskQueryGroupBy groupByPor;
@JsonProperty("group-by-sor")
private final String groupBySor;
@ConstructorProperties({"group-by", "group-by-sor"})
public TaskQueryGroupByParameter(TaskQueryGroupBy groupBy, String groupBySor)
throws InvalidArgumentException {
this.groupByPor = groupBy;
this.groupBySor = groupBySor;
validateGroupByParameters();
}
// endregion
// region constructor
@Override
public Void apply(TaskQuery query) {
Optional.ofNullable(groupBySor).ifPresent(query::groupBySor);
Optional.ofNullable(groupByPor)
.ifPresent(taskQueryGroupBy -> taskQueryGroupBy.applyGroupByForQuery(query));
return null;
}
// endregion
private void validateGroupByParameters() throws InvalidArgumentException {
if (groupByPor != null && groupBySor != null) {
throw new InvalidArgumentException(
"Only one of the following can be provided: Either group-by or group-by-sor");
}
}
public enum TaskQueryGroupBy { public enum TaskQueryGroupBy {
POR_VALUE(TaskQuery::groupByPor); POR_VALUE(TaskQuery::groupByPor);
private final Consumer<TaskQuery> consumer; private final Consumer<TaskQuery> consumer;
@ -21,41 +58,4 @@ public class TaskQueryGroupByParameter implements QueryParameter<TaskQuery, Void
consumer.accept(query); consumer.accept(query);
} }
} }
// region groupBy
@JsonProperty("group-by")
private final TaskQueryGroupBy groupByPor;
@JsonProperty("group-by-sor")
private final String groupBySor;
// endregion
// region constructor
@ConstructorProperties({"group-by", "group-by-sor"})
public TaskQueryGroupByParameter(TaskQueryGroupBy groupBy, String groupBySor)
throws InvalidArgumentException {
this.groupByPor = groupBy;
this.groupBySor = groupBySor;
validateGroupByParameters();
}
// endregion
@Override
public Void apply(TaskQuery query) {
Optional.ofNullable(groupBySor).ifPresent(query::groupBySor);
Optional.ofNullable(groupByPor)
.ifPresent(taskQueryGroupBy -> taskQueryGroupBy.applyGroupByForQuery(query));
return null;
}
private void validateGroupByParameters() throws InvalidArgumentException {
if (groupByPor != null && groupBySor != null) {
throw new InvalidArgumentException(
"Only one of the following can be provided: Either group-by or group-by-sor");
}
}
} }

View File

@ -11,18 +11,25 @@ public class AttachmentSummaryRepresentationModel
/** Unique Id. */ /** Unique Id. */
protected String attachmentId; protected String attachmentId;
/** the referenced task id. */ /** the referenced task id. */
protected String taskId; protected String taskId;
/** The creation timestamp in the system. */ /** The creation timestamp in the system. */
protected Instant created; protected Instant created;
/** The timestamp of the last modification. */ /** The timestamp of the last modification. */
protected Instant modified; protected Instant modified;
/** The timestamp of the entry date. */ /** The timestamp of the entry date. */
protected Instant received; protected Instant received;
/** The classification of this attachment. */ /** The classification of this attachment. */
protected ClassificationSummaryRepresentationModel classificationSummary; protected ClassificationSummaryRepresentationModel classificationSummary;
/** The Objects primary ObjectReference. */ /** The Objects primary ObjectReference. */
protected ObjectReferenceRepresentationModel objectReference; protected ObjectReferenceRepresentationModel objectReference;
/** Determines on which channel this attachment was received. */ /** Determines on which channel this attachment was received. */
protected String channel; protected String channel;

View File

@ -10,14 +10,19 @@ public class ObjectReferenceRepresentationModel
/** Task Id. */ /** Task Id. */
private String taskId; private String taskId;
/** The company the referenced primary object belongs to. */ /** The company the referenced primary object belongs to. */
private String company; private String company;
/** The (kind of) system, the referenced primary object resides in (e.g. SAP, MySystem A, ...). */ /** The (kind of) system, the referenced primary object resides in (e.g. SAP, MySystem A, ...). */
private String system; private String system;
/** The instance of the system where the referenced primary object is located. */ /** The instance of the system where the referenced primary object is located. */
private String systemInstance; private String systemInstance;
/** The type of the referenced primary object (contract, claim, policy, customer, ...). */ /** The type of the referenced primary object (contract, claim, policy, customer, ...). */
private String type; private String type;
/** The value of the primary object reference. */ /** The value of the primary object reference. */
private String value; private String value;

View File

@ -10,16 +10,22 @@ public class TaskCommentRepresentationModel
/** Unique Id. */ /** Unique Id. */
private String taskCommentId; private String taskCommentId;
/** Task Id. Can identify the task the comment belongs to. */ /** Task Id. Can identify the task the comment belongs to. */
private String taskId; private String taskId;
/** The content of the comment. */ /** The content of the comment. */
private String textField; private String textField;
/** The creator of the task comment. */ /** The creator of the task comment. */
private String creator; private String creator;
/** The long name of the task comment creator. */ /** The long name of the task comment creator. */
private String creatorFullName; private String creatorFullName;
/** The creation timestamp in the system. */ /** The creation timestamp in the system. */
private Instant created; private Instant created;
/** Timestamp of the last task comment modification. */ /** Timestamp of the last task comment modification. */
private Instant modified; private Instant modified;

View File

@ -53,6 +53,7 @@ public class TaskRepresentationModel extends TaskSummaryRepresentationModel {
/** the key of the custom attribute. */ /** the key of the custom attribute. */
private String key; private String key;
/** the value of the custom attribute. */ /** the value of the custom attribute. */
private String value; private String value;

View File

@ -16,121 +16,172 @@ public class TaskSummaryRepresentationModel
/** Unique Id. */ /** Unique Id. */
protected String taskId; protected String taskId;
/** /**
* External Id. Can be used to enforce idempotence at task creation. Can identify an external * External Id. Can be used to enforce idempotence at task creation. Can identify an external
* task. * task.
*/ */
protected String externalId; protected String externalId;
/** The creation timestamp in the system. */ /** The creation timestamp in the system. */
protected Instant created; protected Instant created;
/** The timestamp of the last claim-operation. */ /** The timestamp of the last claim-operation. */
protected Instant claimed; protected Instant claimed;
/** The timestamp of the completion. */ /** The timestamp of the completion. */
protected Instant completed; protected Instant completed;
/** The timestamp of the last modification. */ /** The timestamp of the last modification. */
protected Instant modified; protected Instant modified;
/** /**
* Planned start of the task. The actual completion of the task should be between PLANNED and DUE. * Planned start of the task. The actual completion of the task should be between PLANNED and DUE.
*/ */
protected Instant planned; protected Instant planned;
/** /**
* Timestamp when the task has been received. It notes when the surrounding process started and * Timestamp when the task has been received. It notes when the surrounding process started and
* not just when the actual task was created. * not just when the actual task was created.
*/ */
protected Instant received; protected Instant received;
/** /**
* Timestamp when the task is due. The actual completion of the task should be between PLANNED and * Timestamp when the task is due. The actual completion of the task should be between PLANNED and
* DUE. * DUE.
*/ */
protected Instant due; protected Instant due;
/** The name of the task. */ /** The name of the task. */
protected String name; protected String name;
/** the creator of the task. */ /** the creator of the task. */
protected String creator; protected String creator;
/** note. */ /** note. */
protected String note; protected String note;
/** The description of the task. */ /** The description of the task. */
protected String description; protected String description;
/** The priority of the task. */ /** The priority of the task. */
protected int priority; protected int priority;
/** /**
* The manual priority of the task. If the value of manualPriority is zero or greater, the * The manual priority of the task. If the value of manualPriority is zero or greater, the
* priority is automatically set to manualPriority. In this case, all computations of priority are * priority is automatically set to manualPriority. In this case, all computations of priority are
* disabled. If the value of manualPriority is negative, Tasks are not prioritized manually. * disabled. If the value of manualPriority is negative, Tasks are not prioritized manually.
*/ */
protected int manualPriority = DEFAULT_MANUAL_PRIORITY; protected int manualPriority = DEFAULT_MANUAL_PRIORITY;
/** The current task state. */ /** The current task state. */
protected TaskState state; protected TaskState state;
/** The classification of this task. */ /** The classification of this task. */
@NotNull protected ClassificationSummaryRepresentationModel classificationSummary; @NotNull protected ClassificationSummaryRepresentationModel classificationSummary;
/** The workbasket this task resides in. */ /** The workbasket this task resides in. */
@NotNull protected WorkbasketSummaryRepresentationModel workbasketSummary; @NotNull protected WorkbasketSummaryRepresentationModel workbasketSummary;
/** The business process id. */ /** The business process id. */
protected String businessProcessId; protected String businessProcessId;
/** the parent business process id. */ /** the parent business process id. */
protected String parentBusinessProcessId; protected String parentBusinessProcessId;
/** The owner of the task. The owner is set upon claiming of the task. */ /** The owner of the task. The owner is set upon claiming of the task. */
protected String owner; protected String owner;
/** The long name of the task owner. */ /** The long name of the task owner. */
protected String ownerLongName; protected String ownerLongName;
/** The Objects primary ObjectReference. */ /** The Objects primary ObjectReference. */
@NotNull protected ObjectReferenceRepresentationModel primaryObjRef; @NotNull protected ObjectReferenceRepresentationModel primaryObjRef;
/** Indicator if the task has been read. */ /** Indicator if the task has been read. */
protected boolean isRead; protected boolean isRead;
/** Indicator if the task has been transferred. */ /** Indicator if the task has been transferred. */
protected boolean isTransferred; protected boolean isTransferred;
/** Number of Tasks that are grouped together with this Task during a groupBy. */ /** Number of Tasks that are grouped together with this Task during a groupBy. */
protected Integer groupByCount; protected Integer groupByCount;
/** A custom property with name "1". */ /** A custom property with name "1". */
protected String custom1; protected String custom1;
/** A custom property with name "2". */ /** A custom property with name "2". */
protected String custom2; protected String custom2;
/** A custom property with name "3". */ /** A custom property with name "3". */
protected String custom3; protected String custom3;
/** A custom property with name "4". */ /** A custom property with name "4". */
protected String custom4; protected String custom4;
/** A custom property with name "5". */ /** A custom property with name "5". */
protected String custom5; protected String custom5;
/** A custom property with name "6". */ /** A custom property with name "6". */
protected String custom6; protected String custom6;
/** A custom property with name "7". */ /** A custom property with name "7". */
protected String custom7; protected String custom7;
/** A custom property with name "8". */ /** A custom property with name "8". */
protected String custom8; protected String custom8;
/** A custom property with name "9". */ /** A custom property with name "9". */
protected String custom9; protected String custom9;
/** A custom property with name "10". */ /** A custom property with name "10". */
protected String custom10; protected String custom10;
/** A custom property with name "11". */ /** A custom property with name "11". */
protected String custom11; protected String custom11;
/** A custom property with name "12". */ /** A custom property with name "12". */
protected String custom12; protected String custom12;
/** A custom property with name "13". */ /** A custom property with name "13". */
protected String custom13; protected String custom13;
/** A custom property with name "14". */ /** A custom property with name "14". */
protected String custom14; protected String custom14;
/** A custom property with name "15". */ /** A custom property with name "15". */
protected String custom15; protected String custom15;
/** A custom property with name "16". */ /** A custom property with name "16". */
protected String custom16; protected String custom16;
/** A custom int property with name "1". */ /** A custom int property with name "1". */
protected Integer customInt1; protected Integer customInt1;
/** A custom int property with name "2". */ /** A custom int property with name "2". */
protected Integer customInt2; protected Integer customInt2;
/** A custom int property with name "3". */ /** A custom int property with name "3". */
protected Integer customInt3; protected Integer customInt3;
/** A custom int property with name "4". */ /** A custom int property with name "4". */
protected Integer customInt4; protected Integer customInt4;
/** A custom int property with name "5". */ /** A custom int property with name "5". */
protected Integer customInt5; protected Integer customInt5;
/** A custom int property with name "6". */ /** A custom int property with name "6". */
protected Integer customInt6; protected Integer customInt6;
/** A custom int property with name "7". */ /** A custom int property with name "7". */
protected Integer customInt7; protected Integer customInt7;
/** A custom int property with name "8". */ /** A custom int property with name "8". */
protected Integer customInt8; protected Integer customInt8;
/** Secondary object references of the task. */ /** Secondary object references of the task. */
protected List<ObjectReferenceRepresentationModel> secondaryObjectReferences = new ArrayList<>(); protected List<ObjectReferenceRepresentationModel> secondaryObjectReferences = new ArrayList<>();
/** The attachment summaries of this task. */ /** The attachment summaries of this task. */
private List<AttachmentSummaryRepresentationModel> attachmentSummaries = new ArrayList<>(); private List<AttachmentSummaryRepresentationModel> attachmentSummaries = new ArrayList<>();

View File

@ -41,9 +41,10 @@ public class UserController {
private final CurrentUserContext currentUserContext; private final CurrentUserContext currentUserContext;
@Autowired @Autowired
UserController(UserService userService, UserController(
UserRepresentationModelAssembler userAssembler, UserService userService,
CurrentUserContext currentUserContext) { UserRepresentationModelAssembler userAssembler,
CurrentUserContext currentUserContext) {
this.userService = userService; this.userService = userService;
this.userAssembler = userAssembler; this.userAssembler = userAssembler;
this.currentUserContext = currentUserContext; this.currentUserContext = currentUserContext;
@ -68,8 +69,8 @@ public class UserController {
/** /**
* This endpoint retrieves multiple Users. If a userId can't be found in the database it will be * This endpoint retrieves multiple Users. If a userId can't be found in the database it will be
* ignored. If none of the given userIds is valid, the returned list will be empty. * ignored. If none of the given userIds is valid, the returned list will be empty. If currentUser
* If currentUser is set, the current User from the context will be retrieved as well * is set, the current User from the context will be retrieved as well
* *
* @title Get multiple Users * @title Get multiple Users
* @param request the HttpServletRequest of the request itself * @param request the HttpServletRequest of the request itself
@ -85,7 +86,7 @@ public class UserController {
HttpServletRequest request, HttpServletRequest request,
@RequestParam(name = "user-id", required = false) String[] userIds, @RequestParam(name = "user-id", required = false) String[] userIds,
@RequestParam(name = "current-user", required = false) String currentUser) @RequestParam(name = "current-user", required = false) String currentUser)
throws InvalidArgumentException, UserNotFoundException { throws InvalidArgumentException, UserNotFoundException {
Set<User> users = new HashSet<>(); Set<User> users = new HashSet<>();
if (userIds != null) { if (userIds != null) {

View File

@ -12,10 +12,13 @@ public class UserRepresentationModel extends RepresentationModel<UserRepresentat
/** Unique Id. */ /** Unique Id. */
@NotNull private String userId; @NotNull private String userId;
/** The groups of the User. */ /** The groups of the User. */
private Set<String> groups; private Set<String> groups;
/** The permissions of the User. */ /** The permissions of the User. */
private Set<String> permissions; private Set<String> permissions;
/** /**
* The domains of the User. * The domains of the User.
* *
@ -23,28 +26,40 @@ public class UserRepresentationModel extends RepresentationModel<UserRepresentat
* taskana.user.minimalPermissionsToAssignDomains * taskana.user.minimalPermissionsToAssignDomains
*/ */
private Set<String> domains = Collections.emptySet(); private Set<String> domains = Collections.emptySet();
/** The first name of the User. */ /** The first name of the User. */
private String firstName; private String firstName;
/** The last name of the User. */ /** The last name of the User. */
private String lastName; private String lastName;
/** The full name of the User. */ /** The full name of the User. */
private String fullName; private String fullName;
/** The long name of the User. */ /** The long name of the User. */
private String longName; private String longName;
/** The email of the User. */ /** The email of the User. */
private String email; private String email;
/** The phone number of the User. */ /** The phone number of the User. */
private String phone; private String phone;
/** The mobile phone number of the User. */ /** The mobile phone number of the User. */
private String mobilePhone; private String mobilePhone;
/** The fourth organisation level of the User. */ /** The fourth organisation level of the User. */
private String orgLevel4; private String orgLevel4;
/** The third organisation level of the User. */ /** The third organisation level of the User. */
private String orgLevel3; private String orgLevel3;
/** The second organisation level of the User. */ /** The second organisation level of the User. */
private String orgLevel2; private String orgLevel2;
/** The first organisation level of the User. */ /** The first organisation level of the User. */
private String orgLevel1; private String orgLevel1;
/** The data of the User. This field is used for additional information about the User. */ /** The data of the User. This field is used for additional information about the User. */
private String data; private String data;

View File

@ -9,52 +9,75 @@ public class WorkbasketAccessItemRepresentationModel
/** Unique Id. */ /** Unique Id. */
private String accessItemId; private String accessItemId;
/** The workbasket Id. */ /** The workbasket Id. */
private String workbasketId; private String workbasketId;
/** The Access Id. This could be either a user Id or a full qualified group Id. */ /** The Access Id. This could be either a user Id or a full qualified group Id. */
private String accessId; private String accessId;
/** The workbasket key. */ /** The workbasket key. */
private String workbasketKey; private String workbasketKey;
/** The name. */ /** The name. */
private String accessName; private String accessName;
/** The permission to read the information about the workbasket. */ /** The permission to read the information about the workbasket. */
private boolean permRead; private boolean permRead;
/** The permission to access a task from the workbasket. */ /** The permission to access a task from the workbasket. */
private boolean permReadTasks; private boolean permReadTasks;
/** The permission to view the content (the tasks) of a workbasket. */ /** The permission to view the content (the tasks) of a workbasket. */
private boolean permOpen; private boolean permOpen;
/** /**
* The permission to add tasks to the workbasket. Required for creation and transferring of tasks. * The permission to add tasks to the workbasket. Required for creation and transferring of tasks.
*/ */
private boolean permAppend; private boolean permAppend;
/** The permission to edit a task from the workbasket. */ /** The permission to edit a task from the workbasket. */
private boolean permEditTasks; private boolean permEditTasks;
/** The permission to transfer tasks (out of the current workbasket). */ /** The permission to transfer tasks (out of the current workbasket). */
private boolean permTransfer; private boolean permTransfer;
/** The permission to distribute tasks from the workbasket. */ /** The permission to distribute tasks from the workbasket. */
private boolean permDistribute; private boolean permDistribute;
/** The custom permission with the name "1". */ /** The custom permission with the name "1". */
private boolean permCustom1; private boolean permCustom1;
/** The custom permission with the name "2". */ /** The custom permission with the name "2". */
private boolean permCustom2; private boolean permCustom2;
/** The custom permission with the name "3". */ /** The custom permission with the name "3". */
private boolean permCustom3; private boolean permCustom3;
/** The custom permission with the name "4". */ /** The custom permission with the name "4". */
private boolean permCustom4; private boolean permCustom4;
/** The custom permission with the name "5". */ /** The custom permission with the name "5". */
private boolean permCustom5; private boolean permCustom5;
/** The custom permission with the name "6". */ /** The custom permission with the name "6". */
private boolean permCustom6; private boolean permCustom6;
/** The custom permission with the name "7". */ /** The custom permission with the name "7". */
private boolean permCustom7; private boolean permCustom7;
/** The custom permission with the name "8". */ /** The custom permission with the name "8". */
private boolean permCustom8; private boolean permCustom8;
/** The custom permission with the name "9". */ /** The custom permission with the name "9". */
private boolean permCustom9; private boolean permCustom9;
/** The custom permission with the name "10". */ /** The custom permission with the name "10". */
private boolean permCustom10; private boolean permCustom10;
/** The custom permission with the name "11". */ /** The custom permission with the name "11". */
private boolean permCustom11; private boolean permCustom11;
/** The custom permission with the name "12". */ /** The custom permission with the name "12". */
private boolean permCustom12; private boolean permCustom12;

View File

@ -14,8 +14,10 @@ public class WorkbasketDefinitionRepresentationModel
/** The workbasket which is represented. */ /** The workbasket which is represented. */
@JsonIgnoreProperties("_links") @JsonIgnoreProperties("_links")
private WorkbasketRepresentationModel workbasket; private WorkbasketRepresentationModel workbasket;
/** The workbasket authorizations. */ /** The workbasket authorizations. */
private Collection<WorkbasketAccessItemRepresentationModel> authorizations = new ArrayList<>(); private Collection<WorkbasketAccessItemRepresentationModel> authorizations = new ArrayList<>();
/** The distribution targets for this workbasket. */ /** The distribution targets for this workbasket. */
private Set<String> distributionTargets = new HashSet<>(); private Set<String> distributionTargets = new HashSet<>();

View File

@ -12,6 +12,7 @@ public class WorkbasketRepresentationModel extends WorkbasketSummaryRepresentati
* <p>The format is ISO-8601. * <p>The format is ISO-8601.
*/ */
private Instant created; private Instant created;
/** /**
* The timestamp of the last modification. * The timestamp of the last modification.
* *

View File

@ -10,37 +10,52 @@ public class WorkbasketSummaryRepresentationModel
/** Unique Id. */ /** Unique Id. */
protected String workbasketId; protected String workbasketId;
/** the professional key for the workbasket. */ /** the professional key for the workbasket. */
protected String key; protected String key;
/** The name of the workbasket. */ /** The name of the workbasket. */
protected String name; protected String name;
/** The domain the workbasket belongs to. */ /** The domain the workbasket belongs to. */
protected String domain; protected String domain;
/** The type of the workbasket. */ /** The type of the workbasket. */
protected WorkbasketType type; protected WorkbasketType type;
/** the description of the workbasket. */ /** the description of the workbasket. */
protected String description; protected String description;
/** /**
* The owner of the workbasket. The owner is responsible for the on-time completion of all tasks * The owner of the workbasket. The owner is responsible for the on-time completion of all tasks
* in the workbasket. * in the workbasket.
*/ */
protected String owner; protected String owner;
/** A custom property with name "1". */ /** A custom property with name "1". */
protected String custom1; protected String custom1;
/** A custom property with name "2". */ /** A custom property with name "2". */
protected String custom2; protected String custom2;
/** A custom property with name "3". */ /** A custom property with name "3". */
protected String custom3; protected String custom3;
/** A custom property with name "4". */ /** A custom property with name "4". */
protected String custom4; protected String custom4;
/** A custom property with name "5". */ /** A custom property with name "5". */
protected String custom5; protected String custom5;
/** A custom property with name "6". */ /** A custom property with name "6". */
protected String custom6; protected String custom6;
/** A custom property with name "7". */ /** A custom property with name "7". */
protected String custom7; protected String custom7;
/** A custom property with name "8". */ /** A custom property with name "8". */
protected String custom8; protected String custom8;
/** /**
* The first Org Level (the top one). * The first Org Level (the top one).
* *
@ -49,12 +64,16 @@ public class WorkbasketSummaryRepresentationModel
* tasks in the workbasket. * tasks in the workbasket.
*/ */
protected String orgLevel1; protected String orgLevel1;
/** The second Org Level. */ /** The second Org Level. */
protected String orgLevel2; protected String orgLevel2;
/** The third Org Level. */ /** The third Org Level. */
protected String orgLevel3; protected String orgLevel3;
/** The fourth Org Level (the lowest one). */ /** The fourth Org Level (the lowest one). */
protected String orgLevel4; protected String orgLevel4;
/** Identifier to tell if this workbasket can be deleted. */ /** Identifier to tell if this workbasket can be deleted. */
private boolean markedForDeletion; private boolean markedForDeletion;

View File

@ -61,7 +61,6 @@ import pro.taskana.workbasket.rest.models.WorkbasketSummaryRepresentationModel;
@TaskanaSpringBootTest @TaskanaSpringBootTest
class TaskControllerIntTest { class TaskControllerIntTest {
@Autowired TaskanaConfiguration taskanaConfiguration;
private static final ParameterizedTypeReference<TaskSummaryPagedRepresentationModel> private static final ParameterizedTypeReference<TaskSummaryPagedRepresentationModel>
TASK_SUMMARY_PAGE_MODEL_TYPE = new ParameterizedTypeReference<>() {}; TASK_SUMMARY_PAGE_MODEL_TYPE = new ParameterizedTypeReference<>() {};
private static final ParameterizedTypeReference<TaskSummaryCollectionRepresentationModel> private static final ParameterizedTypeReference<TaskSummaryCollectionRepresentationModel>
@ -71,6 +70,7 @@ class TaskControllerIntTest {
private final RestHelper restHelper; private final RestHelper restHelper;
private final DataSource dataSource; private final DataSource dataSource;
private final String schemaName; private final String schemaName;
@Autowired TaskanaConfiguration taskanaConfiguration;
@Autowired @Autowired
TaskControllerIntTest( TaskControllerIntTest(

View File

@ -69,11 +69,11 @@ class UserControllerIntTest {
HttpEntity<?> auth = new HttpEntity<>(RestHelper.generateHeadersForUser("teamlead-1")); HttpEntity<?> auth = new HttpEntity<>(RestHelper.generateHeadersForUser("teamlead-1"));
ResponseEntity<UserCollectionRepresentationModel> response = ResponseEntity<UserCollectionRepresentationModel> response =
TEMPLATE.exchange( TEMPLATE.exchange(
url, url,
HttpMethod.GET, HttpMethod.GET,
auth, auth,
ParameterizedTypeReference.forType(UserCollectionRepresentationModel.class)); ParameterizedTypeReference.forType(UserCollectionRepresentationModel.class));
assertThat(response.getBody()).isNotNull(); assertThat(response.getBody()).isNotNull();
assertThat(response.getBody().getContent()).hasSize(1); assertThat(response.getBody().getContent()).hasSize(1);
assertThat(response.getBody().getContent()).extracting("userId").containsExactly("teamlead-1"); assertThat(response.getBody().getContent()).extracting("userId").containsExactly("teamlead-1");
@ -85,16 +85,17 @@ class UserControllerIntTest {
HttpEntity<?> auth = new HttpEntity<>(RestHelper.generateHeadersForUser("teamlead-1")); HttpEntity<?> auth = new HttpEntity<>(RestHelper.generateHeadersForUser("teamlead-1"));
ThrowingCallable httpCall = ThrowingCallable httpCall =
() -> TEMPLATE.exchange( () ->
url, TEMPLATE.exchange(
HttpMethod.GET, url,
auth, HttpMethod.GET,
ParameterizedTypeReference.forType(UserCollectionRepresentationModel.class)); auth,
ParameterizedTypeReference.forType(UserCollectionRepresentationModel.class));
assertThatThrownBy(httpCall) assertThatThrownBy(httpCall)
.isInstanceOf(HttpStatusCodeException.class) .isInstanceOf(HttpStatusCodeException.class)
.extracting(HttpStatusCodeException.class::cast) .extracting(HttpStatusCodeException.class::cast)
.extracting(HttpStatusCodeException::getStatusCode) .extracting(HttpStatusCodeException::getStatusCode)
.isEqualTo(HttpStatus.BAD_REQUEST); .isEqualTo(HttpStatus.BAD_REQUEST);
} }
@Test @Test
@ -103,16 +104,17 @@ class UserControllerIntTest {
HttpEntity<?> auth = new HttpEntity<>(RestHelper.generateHeadersForUser("teamlead-1")); HttpEntity<?> auth = new HttpEntity<>(RestHelper.generateHeadersForUser("teamlead-1"));
ThrowingCallable httpCall = ThrowingCallable httpCall =
() -> TEMPLATE.exchange( () ->
url, TEMPLATE.exchange(
HttpMethod.GET, url,
auth, HttpMethod.GET,
ParameterizedTypeReference.forType(UserCollectionRepresentationModel.class)); auth,
ParameterizedTypeReference.forType(UserCollectionRepresentationModel.class));
assertThatThrownBy(httpCall) assertThatThrownBy(httpCall)
.isInstanceOf(HttpStatusCodeException.class) .isInstanceOf(HttpStatusCodeException.class)
.extracting(HttpStatusCodeException.class::cast) .extracting(HttpStatusCodeException.class::cast)
.extracting(HttpStatusCodeException::getStatusCode) .extracting(HttpStatusCodeException::getStatusCode)
.isEqualTo(HttpStatus.BAD_REQUEST); .isEqualTo(HttpStatus.BAD_REQUEST);
} }
@Test @Test
@ -121,11 +123,11 @@ class UserControllerIntTest {
HttpEntity<?> auth = new HttpEntity<>(RestHelper.generateHeadersForUser("teamlead-1")); HttpEntity<?> auth = new HttpEntity<>(RestHelper.generateHeadersForUser("teamlead-1"));
ResponseEntity<UserCollectionRepresentationModel> response = ResponseEntity<UserCollectionRepresentationModel> response =
TEMPLATE.exchange( TEMPLATE.exchange(
url, url,
HttpMethod.GET, HttpMethod.GET,
auth, auth,
ParameterizedTypeReference.forType(UserCollectionRepresentationModel.class)); ParameterizedTypeReference.forType(UserCollectionRepresentationModel.class));
assertThat(response.getBody()).isNotNull(); assertThat(response.getBody()).isNotNull();
assertThat(response.getBody().getContent()).hasSize(1); assertThat(response.getBody().getContent()).hasSize(1);
assertThat(response.getBody().getContent()).extracting("userId").containsExactly("teamlead-1"); assertThat(response.getBody().getContent()).extracting("userId").containsExactly("teamlead-1");
@ -133,22 +135,23 @@ class UserControllerIntTest {
@Test @Test
void should_ReturnExistingUsersAndCurrentUser() throws Exception { void should_ReturnExistingUsersAndCurrentUser() throws Exception {
String url = restHelper.toUrl(RestEndpoints.URL_USERS) String url =
restHelper.toUrl(RestEndpoints.URL_USERS)
+ "?user-id=user-1-1&user-id=USER-1-2&current-user"; + "?user-id=user-1-1&user-id=USER-1-2&current-user";
HttpEntity<?> auth = new HttpEntity<>(RestHelper.generateHeadersForUser("teamlead-1")); HttpEntity<?> auth = new HttpEntity<>(RestHelper.generateHeadersForUser("teamlead-1"));
ResponseEntity<UserCollectionRepresentationModel> responseEntity = ResponseEntity<UserCollectionRepresentationModel> responseEntity =
TEMPLATE.exchange( TEMPLATE.exchange(
url, url,
HttpMethod.GET, HttpMethod.GET,
auth, auth,
ParameterizedTypeReference.forType(UserCollectionRepresentationModel.class)); ParameterizedTypeReference.forType(UserCollectionRepresentationModel.class));
UserCollectionRepresentationModel response = responseEntity.getBody(); UserCollectionRepresentationModel response = responseEntity.getBody();
assertThat(response).isNotNull(); assertThat(response).isNotNull();
assertThat(response.getContent()).hasSize(3); assertThat(response.getContent()).hasSize(3);
assertThat(response.getContent()) assertThat(response.getContent())
.extracting("userId") .extracting("userId")
.containsExactlyInAnyOrder("user-1-1", "user-1-2", "teamlead-1"); .containsExactlyInAnyOrder("user-1-1", "user-1-2", "teamlead-1");
} }
@Test @Test