public static List<TreeNode<EvaluatedPolicyRuleTriggerType>> arrangeForPresentationExt(List<EvaluatedPolicyRuleTriggerType> triggers) { // augment List<AugmentedTrigger<AdditionalData>> augmentedTriggers = triggers.stream() .map(t -> new AugmentedTrigger<>(t, null)) .collect(Collectors.toList()); List<TreeNode<AugmentedTrigger<AdditionalData>>> trees = arrangeForPresentationExt(augmentedTriggers, null); // de-augment return trees.stream() .map(tree -> tree.tranform(at -> at.trigger)) .collect(Collectors.toList()); }
public static <AD extends AdditionalData> List<TreeNode<AugmentedTrigger<AD>>> arrangeForPresentationExt( List<AugmentedTrigger<AD>> triggers, AdditionalFilter<AD> additionalFilter) { TreeNode<AugmentedTrigger<AD>> root = new TreeNode<>(); for (AugmentedTrigger<AD> trigger : triggers) { arrangeForPresentationExt(root, trigger, additionalFilter); } sortTriggersExt(root); return root.getChildren(); }
List<TreeNode<EvaluatedPolicyRuleTriggerType>> trees = EvaluatedPolicyRuleUtil.arrangeForPresentationExt(triggers); if (!trees.isEmpty() && trees.get(0).getUserObject().getShortMessage() != null) { return LocalizationUtil.toLocalizableMessage(trees.get(0).getUserObject().getShortMessage());
private static <AD extends AdditionalData> void arrangeForPresentationExt(TreeNode<AugmentedTrigger<AD>> root, AugmentedTrigger<AD> trigger, AdditionalFilter<AD> additionalFilter) { boolean hidden = isHidden(trigger.trigger); boolean isFinal = Boolean.TRUE.equals(trigger.trigger.isFinal()); if (!hidden) { if (additionalFilter != null && !additionalFilter.accepts(trigger)) { return; } TreeNode<AugmentedTrigger<AD>> newNode = new TreeNode<>(trigger); root.add(newNode); root = newNode; } if (!isFinal) { // it's possible that this was pre-filtered e.g. by policy enforcer hook for (EvaluatedPolicyRuleTriggerType innerTrigger : getChildTriggers(trigger.trigger)) { arrangeForPresentationExt(root, new AugmentedTrigger<>(innerTrigger, trigger.additionalData), additionalFilter); } } }