com.vaadin.data.provider.TreeDataProvider

Here are the examples of the java api com.vaadin.data.provider.TreeDataProvider taken from open source projects. By voting up you can indicate which examples are most useful and appropriate.

2 Examples 7

12 Source : MainView.java
with Apache License 2.0
from cisco-ie

// Show the schema tree based on the current collected YANG models
private Tree<WrappedYangNode> showSchemaTree(String moduleFilter, String fieldFilter) {
    List<String> moduleQuery = Arrays.asList(moduleFilter.toLowerCase().split(" "));
    List<String> fieldQuery = Arrays.asList(fieldFilter.toLowerCase().split(" "));
    schemaTree = new Tree<>();
    schemaTree.setSelectionMode(Grid.SelectionMode.MULTI);
    schemaTree.sereplacedemCaptionGenerator(WrappedYangNode::getCaption);
    schemaTree.sereplacedemIconGenerator(x -> x.isKey() ? VaadinIcons.KEY : null);
    schemaTree.addItemClickListener(x -> showYangNode(x.gereplacedem()));
    // Iterate YANG models, apply filters and add matching schema nodes
    TreeData<WrappedYangNode> data = new TreeData<>();
    for (Module module : parser.getSchemaContext().getModules()) {
        String name = module.getName().toLowerCase();
        String description = module.getDescription().orElse("").toLowerCase();
        if (moduleQuery.stream().filter(name::contains).count() == moduleQuery.size() || moduleQuery.stream().filter(description::contains).count() == moduleQuery.size())
            new WrappedYangNode(module).addToTree(data, fieldQuery);
    }
    // Define data provide and ordering of YANG nodes and render on tree widget
    TreeDataProvider<WrappedYangNode> dataProvider = new TreeDataProvider<>(data);
    dataProvider.setSortComparator(Comparator.comparing(WrappedYangNode::isKey).thenComparing(WrappedYangNode::getName)::compare);
    schemaTree.setDataProvider(dataProvider);
    // Expand the first 100 direct filter matches automatically
    int remain = 100;
    for (WrappedYangNode module : data.getRooreplacedems()) remain = module.applyExpand(schemaTree, remain);
    if (remain <= 0)
        Notification.show("Too many search results! They are all shown, but only 100 have been auto-expanded.", Notification.Type.TRAY_NOTIFICATION);
    return schemaTree;
}

12 Source : MainView.java
with Apache License 2.0
from cisco-ie

// Show a tree of live data from the device
private Tree<XMLElement> showDataTree(String moduleFilter, String fieldFilter) {
    List<String> moduleQuery = Arrays.asList(moduleFilter.toLowerCase().split(" "));
    List<String> fieldQuery = Arrays.asList(fieldFilter.toLowerCase().split(" "));
    dataTree = new Tree<>();
    // Show name of the node/leaf and value (if available)
    dataTree.sereplacedemCaptionGenerator(x -> x.getName().concat(x.stream().count() > 0 ? "" : (" = " + x.getText())));
    dataTree.addItemClickListener(x -> {
        // Build (X)Path of selected element and find namespace
        String path = "";
        String namespace = "";
        for (XMLElement element = x.gereplacedem(); element != null; element = element.getParent()) {
            path = "/" + element.getName() + path;
            namespace = element.getNamespace();
            if (element.getAttribute("root").equals("1"))
                break;
        }
        path = path.substring(1);
        selectedData = x.gereplacedem();
        // Iterate YANG schemas to find the schema node replacedociated with the data
        for (Module module : parser.getSchemaContext().getModules()) if (module.getNamespace().toString().equals(namespace))
            WrappedYangNode.byPath(new WrappedYangNode(module), path).ifPresent(this::showYangNode);
    });
    // Get selected schema elements and build a NETCONF combined subtree-filter to retrieve all of them with a single get-call
    LinkedList<XMLElement> subtreeFilter = new LinkedList<>();
    Set<WrappedYangNode> items = schemaTree.getSelectedItems();
    for (WrappedYangNode item : items) {
        boolean unique = true;
        for (WrappedYangNode c = item.getParent(); unique && c != null; c = c.getParent()) if (items.contains(c))
            unique = false;
        // Only add new subtree filter if we don't have it or any parent element selected already
        if (unique) {
            item.createNetconfTemplate().map(Stream::of).orElse(item.getChildren().map(WrappedYangNode::createNetconfTemplate).filter(Optional::isPresent).map(Optional::get)).forEach(subtreeFilter::add);
        }
    }
    // Cache retrieved config data if selected fields are the same and just filters change
    String newQuery = subtreeFilter.stream().map(XMLElement::toXML).collect(Collectors.joining());
    if (!newQuery.equals(dataQuery)) {
        try (NetconfSession session = client.createSession()) {
            // Query peer using NETCONF to retrieve current data using get or get-config
            if (dataSource == null) {
                try {
                    dataElements = subtreeFilter.isEmpty() ? session.get() : session.get(subtreeFilter);
                } catch (NetconfException.RPCException e) {
                    e.printStackTrace();
                    Notification.show("The device cowardly refused to send operational data, thus " + "displaying configuration only. You may use 'Show Schemas' to go back, " + "select individual supported schemas and try 'Show Data' again.", Notification.Type.ERROR_MESSAGE);
                    dataElements = subtreeFilter.isEmpty() ? session.getConfig(Netconf.Datastore.RUNNING) : session.getConfig(Netconf.Datastore.RUNNING, subtreeFilter);
                }
                dataQuery = newQuery;
            } else {
                dataElements = subtreeFilter.isEmpty() ? session.getConfig(dataSource) : session.getConfig(dataSource, subtreeFilter);
            }
        } catch (NetconfException e) {
            e.printStackTrace();
            Notification.show("Failed to get data: " + e.getMessage(), Notification.Type.ERROR_MESSAGE);
        }
    }
    // Collect NETCONF data for tree display
    TreeData<XMLElement> data = new TreeData<>();
    for (XMLElement element : dataElements) addXMLToTree(data, element, null, moduleQuery, fieldQuery);
    // Create data provider for tree and define sorting order
    TreeDataProvider<XMLElement> dataProvider = new TreeDataProvider<>(data);
    dataProvider.setSortComparator(Comparator.comparing(XMLElement::getName)::compare);
    dataTree.setDataProvider(dataProvider);
    int remain = 100;
    // Expand up to 50 direct filter matches from data tree
    if (moduleFilter.isEmpty() && fieldFilter.isEmpty()) {
        for (WrappedYangNode node : schemaTree.getSelectedItems()) {
            String path = node.getSensorPath(false, null);
            List<String> paths = Arrays.asList(path.substring(path.indexOf(':') + 1).split("/"));
            remain = expandXMLSelected(dataTree, data.getRooreplacedems(), paths, remain);
        }
    }
    for (XMLElement element : data.getRooreplacedems()) remain = applyXMLExpanded(dataTree, element, remain);
    if (remain <= 0)
        Notification.show("Too many results! They are all shown, but only 100 have been auto-expanded.", Notification.Type.TRAY_NOTIFICATION);
    return dataTree;
}