Search in sources :

Example 11 with Node

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);
}
Also used : UserSession(com.haulmont.cuba.security.global.UserSession) BasicPermissionTarget(com.haulmont.cuba.gui.app.security.entity.BasicPermissionTarget) List(java.util.List) PermissionConfig(com.haulmont.cuba.gui.config.PermissionConfig) Tree(com.haulmont.bali.datastruct.Tree) Node(com.haulmont.bali.datastruct.Node) LinkedList(java.util.LinkedList) AppBeans(com.haulmont.cuba.core.global.AppBeans) UserSessionSource(com.haulmont.cuba.core.global.UserSessionSource) Collectors(java.util.stream.Collectors) UserSession(com.haulmont.cuba.security.global.UserSession) Node(com.haulmont.bali.datastruct.Node) Tree(com.haulmont.bali.datastruct.Tree)

Example 12 with Node

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();
}
Also used : Node(com.haulmont.bali.datastruct.Node) ArrayList(java.util.ArrayList) AbstractCondition(com.haulmont.cuba.gui.components.filter.condition.AbstractCondition)

Example 13 with Node

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));
        }
    }
}
Also used : Node(com.haulmont.bali.datastruct.Node) ArrayList(java.util.ArrayList) GroupCondition(com.haulmont.cuba.gui.components.filter.condition.GroupCondition) AbstractCondition(com.haulmont.cuba.gui.components.filter.condition.AbstractCondition)

Example 14 with Node

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);
    }
}
Also used : Node(com.haulmont.bali.datastruct.Node) AbstractCondition(com.haulmont.cuba.gui.components.filter.condition.AbstractCondition)

Example 15 with Node

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());
        }
    }
}
Also used : Element(org.dom4j.Element) Node(com.haulmont.bali.datastruct.Node)

Aggregations

Node (com.haulmont.bali.datastruct.Node)17 ConditionsTree (com.haulmont.cuba.gui.components.filter.ConditionsTree)5 AbstractCondition (com.haulmont.cuba.gui.components.filter.condition.AbstractCondition)5 Tree (com.haulmont.bali.datastruct.Tree)4 MetaClass (com.haulmont.chile.core.model.MetaClass)3 ArrayList (java.util.ArrayList)3 MetaProperty (com.haulmont.chile.core.model.MetaProperty)2 MetaPropertyPath (com.haulmont.chile.core.model.MetaPropertyPath)2 EntityPropertyDiff (com.haulmont.cuba.core.entity.diff.EntityPropertyDiff)2 BasicPermissionTarget (com.haulmont.cuba.gui.app.security.entity.BasicPermissionTarget)2 GroupCondition (com.haulmont.cuba.gui.components.filter.condition.GroupCondition)2 GroupConditionDescriptor (com.haulmont.cuba.gui.components.filter.descriptor.GroupConditionDescriptor)2 CollectionDatasource (com.haulmont.cuba.gui.data.CollectionDatasource)2 UIPerformanceLogger (com.haulmont.cuba.gui.logging.UIPerformanceLogger)2 Collectors (java.util.stream.Collectors)2 Element (org.dom4j.Element)2 StopWatch (org.perf4j.StopWatch)2 Slf4JStopWatch (org.perf4j.slf4j.Slf4JStopWatch)2 ClientConfig (com.haulmont.cuba.client.ClientConfig)1 Entity (com.haulmont.cuba.core.entity.Entity)1