use of com.haulmont.bali.datastruct.Node in project cuba by cuba-platform.
the class SpecificPermissionTreeDatasource method filterPermitted.
private Tree<BasicPermissionTarget> filterPermitted(Tree<BasicPermissionTarget> permissions) {
UserSession session = uss.getUserSession();
List<Node<BasicPermissionTarget>> newRootNodes = permissions.getRootNodes().stream().map(root -> filterNode(session, root)).filter(// empty nodes
root -> root.getNumberOfChildren() > 0).collect(Collectors.toCollection(LinkedList::new));
return new Tree<>(newRootNodes);
}
use of com.haulmont.bali.datastruct.Node in project cuba by cuba-platform.
the class AppliedFilter method getText.
public String getText() {
String name = filterEntity.getName();
if (StringUtils.isBlank(name)) {
name = messages.getMainMessage(filterEntity.getCode());
}
StringBuilder sb = new StringBuilder(name);
List<Node<AbstractCondition>> visibleRootNodesWithValues = new ArrayList<>();
for (Node<AbstractCondition> rootNode : conditions.getRootNodes()) {
AbstractCondition condition = rootNode.getData();
if (!condition.getHidden() && (condition.isGroup() || condition.getParam() != null && condition.getParam().getValue() != null))
visibleRootNodesWithValues.add(rootNode);
}
Iterator<Node<AbstractCondition>> iterator = visibleRootNodesWithValues.iterator();
if (iterator.hasNext())
sb.append(": ");
while (iterator.hasNext()) {
Node<AbstractCondition> rootNode = iterator.next();
recursivelyCreateConditionCaption(rootNode, sb);
if (iterator.hasNext())
sb.append(", ");
}
return sb.toString();
}
use of com.haulmont.bali.datastruct.Node in project cuba by cuba-platform.
the class AppliedFilter method recursivelyCreateConditionCaption.
protected void recursivelyCreateConditionCaption(Node<AbstractCondition> node, StringBuilder sb) {
AbstractCondition condition = node.getData();
if (condition.getHidden())
return;
if (condition.isGroup()) {
GroupType groupType = ((GroupCondition) condition).getGroupType();
sb.append(groupType.getLocCaption()).append("(");
List<Node<AbstractCondition>> visibleChildNodes = new ArrayList<>();
for (Node<AbstractCondition> childNode : node.getChildren()) {
AbstractCondition childCondition = childNode.getData();
if (!childCondition.getHidden() && (childCondition.isGroup() || childCondition.getParam() != null && childCondition.getParam().getValue() != null))
visibleChildNodes.add(childNode);
}
Iterator<Node<AbstractCondition>> iterator = visibleChildNodes.iterator();
while (iterator.hasNext()) {
Node<AbstractCondition> childNode = iterator.next();
recursivelyCreateConditionCaption(childNode, sb);
if (iterator.hasNext())
sb.append(", ");
}
sb.append(")");
} else {
Param param = condition.getParam();
sb.append(condition.getLocCaption()).append(" ");
if (condition.getOperator() == Op.NOT_EMPTY) {
if (BooleanUtils.isTrue((Boolean) param.getValue())) {
sb.append(messages.getMainMessage("Op.NOT_EMPTY"));
} else {
sb.append(messages.getMainMessage("Op.EMPTY"));
}
} else {
sb.append(condition.getOperationCaption()).append(" ").append(formatParamValue(param));
}
}
}
use of com.haulmont.bali.datastruct.Node in project cuba by cuba-platform.
the class ConditionsTree method recursivelyCopyNode.
protected void recursivelyCopyNode(Node<AbstractCondition> srcNode, Node<AbstractCondition> dstNode) {
AbstractCondition srcCondition = srcNode.getData();
AbstractCondition dstCondition = srcCondition.createCopy();
dstNode.setData(dstCondition);
for (Node<AbstractCondition> srcChild : srcNode.getChildren()) {
Node<AbstractCondition> dstChild = new Node<>();
dstNode.addChild(dstChild);
recursivelyCopyNode(srcChild, dstChild);
}
}
use of com.haulmont.bali.datastruct.Node in project cuba by cuba-platform.
the class FilterParserImpl method recursiveFromXml.
protected void recursiveFromXml(Element element, Node<AbstractCondition> parentNode, Filter filter, String xml, ConditionsTree conditions) {
for (Element el : Dom4j.elements(element)) {
AbstractCondition condition;
if ("c".equals(el.getName())) {
String name = el.attributeValue("name");
if (name == null)
throw new IllegalStateException("'name' attribute expected for 'c' element: " + xml);
String type = el.attributeValue("type");
condition = createCondition(ConditionType.valueOf(type), el, filter, xml);
Node<AbstractCondition> node = new Node<>(condition);
if (parentNode != null)
parentNode.addChild(node);
else
conditions.getRootNodes().add(node);
} else if ("and".equals(el.getName()) || "or".equals(el.getName())) {
condition = createCondition(ConditionType.GROUP, el, filter, xml);
Node<AbstractCondition> node = new Node<>(condition);
if (parentNode != null)
parentNode.addChild(node);
else
conditions.getRootNodes().add(node);
recursiveFromXml(el, node, filter, xml, conditions);
} else {
throw new UnsupportedOperationException("Unknown element: " + el.getName());
}
}
}
Aggregations