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
12
Source : MainView.java
with Apache License 2.0
from cisco-ie
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
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;
}