Commit graph

66 commits

Author SHA1 Message Date
1da9d44a8b Node: add javadoc @deprecated to findOrCreateChild 2016-09-04 20:00:55 +01:00
40f49fd832 NodeItem: refactored insertInPath to be easier to understand 2016-09-04 20:00:54 +01:00
e28b140db8 NodeItem: simplify inserting child into path 2016-09-04 19:28:20 +01:00
91c57f098e {Abstract}NodeItem: rewrite findInPath to avoid recursion 2016-09-04 19:21:41 +01:00
6987f927fe {Immutable}NodeItemTest: categorise findInPath tests 2016-09-04 19:21:18 +01:00
02d07605c0 NodeFindInPathTestsCategory: added 2016-09-04 19:20:16 +01:00
9f3aec202a {Abstract}NodeItem: reduce nested if statements 2016-09-04 18:59:22 +01:00
37247e93bc node: change javadoc element order to Atclause order
The default configuration of the AtclauseOrder is a bit strange.
2016-09-04 18:44:29 +01:00
5c129b54b8 NodeItem: put trailing comments on their own line 2016-09-04 18:24:21 +01:00
3d94eaeb32 AbstractNodeItem: refactor formatting name by depth
Remove duplicate string literals.
2016-09-04 18:24:20 +01:00
6253a3226f NodeItem: simplify stream().forEach() 2016-09-04 18:24:20 +01:00
2a435a849e NodeItem: refactor formatting name by depth
Remove duplicate string literals.
2016-09-04 18:24:20 +01:00
b2130442e5 AbstractNodeItem: replace manual null checks with @NonNull 2016-08-22 08:52:42 +01:00
d99fcdcebe NodeItem: replace manual null checks with @NonNull 2016-08-22 08:52:24 +01:00
f1a73366bd Nodes.asImmutable: added to create an immutable copy of a node tree 2016-08-21 19:09:47 +01:00
421ad743f0 ImmutableNodeItem: added 2016-08-21 19:09:12 +01:00
be0685538f AbstractNodeItem: added 2016-08-21 19:08:59 +01:00
cf6bc72717 NodeItem: hide package class - use Node interface only 2016-08-21 15:39:02 +01:00
7a10498a31 NodeItem: remove dynamic name support for nodes 2016-08-21 12:46:21 +01:00
1b0b022281 NodeItem.findChild(): rewrite stream filter 2016-08-21 12:46:21 +01:00
2da1d9aa3d NodeItem: add deprecated to implementation of deprecated interface method 2016-08-21 12:27:50 +01:00
e9b43cb73c [BREAKING] NodeItem: require instantiation using Nodes
This breaks the existing API where NodeItem<T> could be instantiated directly.
2016-08-21 12:22:04 +01:00
51e8194db7 Nodes: add utility class to create Node instances 2016-08-21 12:22:04 +01:00
f945af160a NodeItem: deprecate dynamic node names
With the aim of moving towards immutable objects, node shouldn't have
dynamic names. I've not found a use for them in my own projects.
2016-08-21 11:29:42 +01:00
1ea7802768 NodeItemTest: ensure that removeParent() removes the child from the parent too 2016-05-26 13:17:21 +01:00
136bc0b4ba NodeItemTest: ensure that when a child is removed from it's parent its parent is removed 2016-05-26 13:11:51 +01:00
d3b8fa721b NodeItemTest: check that parent is set when using NodeItem(data, supplier, parent) 2016-05-26 13:08:52 +01:00
6c13cd2735 Node.getParent(): returns any parent inside an Optional
Root nodes will return an empty Optional.
2016-05-26 13:03:32 +01:00
37562941f4 Node.getChildByName(): javadoc to note throws NodeException if child not found 2016-05-26 13:03:32 +01:00
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
d0e6769126 NodeItem.insertInPath(): don't hide field 'name' 2016-05-25 14:23:33 +01:00
5d0de83aef NodeItem.insertInPath(): exception message includes name of conflicting node 2016-05-25 13:47:41 +01:00
e06feddec3 Merge pull request #9 from kemitix/demo-of-full-path-node-name
NodeItemTest: demonstrate using dynamic name supplier to generate nod…
2016-05-24 23:03:11 +01:00
d82b0290a1 NodeItemTest: demonstrate using dynamic name supplier to generate node paths 2016-05-24 22:35:24 +01:00
eebd293633 NodeItem.insertInPath(): use setData() to when target is already in tree
Where an empty node is already found in the tree where we want to insert
a node, use the setData() method to place the data. This replaces the
previous process of attempting to swapping in the new node.
2016-05-24 22:16:35 +01:00
96ac0f720f Node.setName(): ensure that setting name to null enables the name supplier 2016-05-24 22:04:00 +01:00
7de6c5ad49 Node.getName(): generated each time called when using a name supplier
Previously the name was set when the node was created and only a call to
setName() would have changed it.

isNamed() uses the generated name, so this may change if the generated name
is even null or the empty string.
2016-05-24 22:03:14 +01:00
080d995ba0 NodeItemTest: more tests 2016-05-24 16:36:10 +01:00
a31c4501ac Fix typos 2016-05-24 15:05:53 +01:00
f95029d348 Node.getChild(): method to get a child or throw an exception if not found 2016-05-24 14:44:03 +01:00
04599861c0 Node.createChild(data, name): can create named child nodes
# Conflicts:
#	src/test/java/net/kemitix/node/NodeItemTest.java
2016-05-24 14:44:03 +01:00
fc55bacb04 Node.setData(): add ability to change node's data after instantiation 2016-05-24 14:44:03 +01:00
2ed0024bc0 Node: clean up method names
Deprecate:
* findOrCreateChild()

Rename:
* getChild() => findChild()
* isChildOf() => isDescendantOf()
* walkTree() => findInPath()
* placeNodeIn() => insertInPath()
* findChildNamed() => findChildByName()
* getChildNamed() => getChildByName()
2016-05-24 14:25:55 +01:00
e9c6300ad4 Node: remove pointless final in parameters in interface 2016-05-24 14:10:46 +01:00
3053eab9b0 NodeItem.drawTree(): fix typo 2016-05-24 13:50:38 +01:00
6f81a62162 NodeItem.removeParent(): use same name supplier in the new root node 2016-05-24 13:33:53 +01:00
d82a7d6e9f NoteItem: replace empty target node properly 2016-05-24 13:13:55 +01:00
aaab7bbe67 Reorganise code 2016-05-24 11:56:14 +01:00
180f325f79 NodeItemTest: overhaul of test suite 2016-05-24 11:56:14 +01:00
b456e18316 NodeItem: fix up 2016-05-24 11:56:14 +01:00