@NotNull public static List<TreeNode<LocalizableMessage>> extractMessages(Collection<EvaluatedPolicyRuleTrigger<?>> triggers, MessageKind kind) { return extractMessages(arrangeForPresentationInt(triggers), kind); }
/** * Arranges triggers into trees according to presentation instructions (hidden, final, displayOrder). */ public static List<TreeNode<EvaluatedPolicyRuleTrigger<?>>> arrangeForPresentationInt(Collection<EvaluatedPolicyRuleTrigger<?>> triggers) { TreeNode<EvaluatedPolicyRuleTrigger<?>> root = new TreeNode<>(); for (EvaluatedPolicyRuleTrigger<?> trigger : triggers) { arrangeForPresentationInt(root, trigger); } sortTriggersInt(root); return root.getChildren(); }
private static void arrangeForPresentationInt(TreeNode<EvaluatedPolicyRuleTrigger<?>> root, EvaluatedPolicyRuleTrigger<?> trigger) { PolicyConstraintPresentationType presentation = trigger.getConstraint().getPresentation(); boolean hidden = isHidden(presentation, trigger.getConstraintKind()); boolean isFinal = presentation != null && Boolean.TRUE.equals(presentation.isFinal()); if (!hidden) { TreeNode<EvaluatedPolicyRuleTrigger<?>> newNode = new TreeNode<>(trigger); root.add(newNode); root = newNode; } if (!isFinal) { for (EvaluatedPolicyRuleTrigger<?> innerTrigger : trigger.getInnerTriggers()) { arrangeForPresentationInt(root, innerTrigger); } } }