GopikaReghunath commented on code in PR #4273:
URL:
https://github.com/apache/incubator-kie-kogito-runtimes/pull/4273#discussion_r3374852304
##########
addons/common/jbpm-usertask-storage-jpa/src/main/java/org/jbpm/usertask/jpa/repository/UserTaskInstanceRepository.java:
##########
@@ -36,9 +42,61 @@ public UserTaskInstanceRepository(UserTaskJPAContext
context) {
}
public List<UserTaskInstanceEntity> findByIdentity(IdentityProvider
identityProvider) {
- TypedQuery<UserTaskInstanceEntity> query =
getEntityManager().createNamedQuery(GET_INSTANCES_BY_IDENTITY,
UserTaskInstanceEntity.class);
- query.setParameter("userId", identityProvider.getName());
- query.setParameter("roles", identityProvider.getRoles());
+ return findByIdentity(identityProvider, null);
+ }
+
+ public List<UserTaskInstanceEntity> findByIdentity(IdentityProvider
identityProvider, UserTaskFilter filter) {
+ String userId = identityProvider.getName();
+ Collection<String> roles = identityProvider.getRoles();
+
+ // Build query dynamically - start with base query
+ String jpql = BASE_IDENTITY_QUERY;
+
+ boolean hasTaskNameFilter = filter != null
+ && filter.taskName() != null
+ && !filter.taskName().isEmpty();
+
+ boolean hasStatusFilter = filter != null
+ && filter.statuses() != null
+ && !filter.statuses().isEmpty();
+
+ // Conditionally append filter clauses
+ if (hasTaskNameFilter) {
+ jpql = jpql.concat(TASKNAME_FILTER_CLAUSE);
+ }
+
+ if (hasStatusFilter) {
+ jpql = jpql.concat(STATUS_FILTER_CLAUSE);
+ }
+
+ // Create typed query with the final JPQL
+ TypedQuery<UserTaskInstanceEntity> query = getEntityManager()
+ .createQuery(jpql, UserTaskInstanceEntity.class)
+ .setParameter("userId", userId)
+ .setParameter("roles", roles);
+
+ if (filter != null) {
+ query.setParameter("processId", filter.processId());
+ query.setParameter("processInstanceId",
filter.processInstanceId());
+
+ // Only set taskName if we added it to the query
+ if (hasTaskNameFilter) {
+ query.setParameter("taskName", filter.taskName());
+ }
+
+ // Only set statusFilter if we added it to the query
+ if (hasStatusFilter) {
+ List<String> statusFilter = filter.statuses().stream()
+ .map(UserTaskState::getName)
Review Comment:
comment addressed
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]