/** * Returns a list of {@link PlanItemInstanceEntity} instances for the given {@link CaseInstanceEntity}, * which have a plan item that matches any of the given plan items and which are in any state. */ public static List<PlanItemInstanceEntity> findChildPlanItemInstances(CaseInstanceEntity caseInstanceEntity, List<PlanItem> planItems) { List<String> planItemIds = planItems.stream().map(PlanItem::getId).collect(Collectors.toList()); List<PlanItemInstanceEntity> childPlanItemInstances = getAllChildPlanItemInstances(caseInstanceEntity); return childPlanItemInstances.stream() .filter(planItemInstance -> planItemIds.contains(planItemInstance.getPlanItem().getId())) .collect(Collectors.toList()); }
/** * Returns a list of {@link PlanItemInstanceEntity} instances for the given {@link CaseInstanceEntity}, irregardless of the state. */ public static List<PlanItemInstanceEntity> findChildPlanItemInstances(CaseInstanceEntity caseInstanceEntity, PlanItem planItem) { return getAllChildPlanItemInstances(caseInstanceEntity).stream() .filter(planItemInstance -> planItem.getId().equals(planItemInstance.getPlanItem().getId())) .collect(Collectors.toList()); }
/** * Returns a list of {@link PlanItemInstanceEntity} instances for the given {@link CaseInstanceEntity}, * which have a plan item that matches the given plan item and which are non terminal. */ public static List<PlanItemInstanceEntity> findNonTerminalChildPlanItemInstances(CaseInstanceEntity caseInstanceEntity, PlanItem planItem) { List<PlanItemInstanceEntity> childPlanItemInstances = getAllChildPlanItemInstances(caseInstanceEntity); return childPlanItemInstances.stream() .filter(planItemInstance -> planItem.getId().equals(planItemInstance.getPlanItem().getId()) && !PlanItemInstanceState.isInTerminalState(planItemInstance)) .collect(Collectors.toList()); }
/** * Similar to {@link #findChildPlanItemInstances(CaseInstanceEntity, List)}, but returns a map {planItemId, List<PlanItemInstances>} */ public static Map<String, List<PlanItemInstanceEntity>> findChildPlanItemInstancesMap(CaseInstanceEntity caseInstanceEntity, List<PlanItem> planItems) { Map<String, List<PlanItemInstanceEntity>> result = new HashMap<>(); List<String> planItemIds = planItems.stream().map(PlanItem::getId).collect(Collectors.toList()); List<PlanItemInstanceEntity> childPlanItemInstances = getAllChildPlanItemInstances(caseInstanceEntity); for (PlanItemInstanceEntity childPlanItemInstance : childPlanItemInstances) { PlanItem childPlanItem = childPlanItemInstance.getPlanItem(); if (planItemIds.contains(childPlanItem.getId())) { if (!result.containsKey(childPlanItem.getId())) { result.put(childPlanItem.getId(), new ArrayList<>()); } result.get(childPlanItem.getId()).add(childPlanItemInstance); } } return result; }