A parent/children data structure
Find a file
Paul Campbell 41bd84b6f6 Node.getData(): nodes may be empty so return an Optional
Most tests used Node::getData as a name supplier for test fixtures.
In some cases these were not needed and have been removed. In others, where
there are used, they have been updated to get the content of the Optional.
If the Optional happens to be empty, which it shouldn't be in those cases,
then an error will occur and the test will, correctly, fail.
2016-05-26 13:03:25 +01:00
.idea .idea/checkstyle-idea.xml: added 2016-05-24 23:31:54 +01:00
src Node.getData(): nodes may be empty so return an Optional 2016-05-26 13:03:25 +01:00
.gitignore .idea: add IntelliJ configuration 2016-03-14 14:35:57 +00:00
.travis.yml .travis.yml: added 2016-01-09 17:19:54 +00:00
CHANGELOG CHANGELOG 2016-05-25 11:44:50 +01:00
checkstyle.xml Initial commit 2016-01-09 17:08:52 +00:00
LICENSE Initial commit 2016-01-09 17:10:37 +00:00
node.iml .idea: upgrade findbugs and assertion verification 2016-05-24 23:30:46 +01:00
pom.xml pom.xml: version set to 0.3.0-SNAPSHOT 2016-05-25 11:44:52 +01:00
README.md README.md: fix typo 2016-01-09 17:55:24 +00:00

node

A parent/children data structure

Usage

Add as a dependency in your pom.xml:

<dependency>
    <groupId>net.kemitix</groupId>
    <artifactId>node</artifactId>
    <version>${node.version}</version>
</dependency>

The library consits of an interface Node and an implementation NodeItem.

Create a root node

Node<String> root = new NodeItem<>("[root]");

Get the contents of the node

String rootData = root.getData(); // returns "[root]"

Add a child node

Node<String> child = root.createChild("child");

Which is shorthand for:

Node<String> child = new NodeItem<>("child");
root.addChild(child);

The tree now looks like:

"[root]"
\-> "child"

Get the child node

Node<String> childNode = root.getChild("child");

Create a chain of nodes

root.createDescendantLine(Arrays.asList("alpha", "beta", "gamma"));

"[root]"
|-> "child"
\-> "alpha"
    \-> "beta"
        \-> "gamma"

Walk the tree to find a node

Optional<Node<String>> foundNode = root.walkTree(Arrays.asList(
    "alpha", "beta", "gamma"));
if (foundNode.isPresent()) {
    String betaData = foundNode.get().getParent().getData();
        // returns "beta"
}

Get all children of a node

Set<Node<String>> children = root.getChildren();
children.size(); // returns 2 ("child" and "alpha")