Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package tree.node;
- import container.Container;
- import util.searchable.ISearchFilter;
- import java.util.ArrayList;
- import java.util.Collection;
- public class GenericTreeNode<NODETYPE> implements ITreeNode<NODETYPE> { //Eldira 11815163
- private String label;
- private NODETYPE value;
- private Collection<ITreeNode<NODETYPE>> children;
- public GenericTreeNode(String label, NODETYPE value) {
- this.label = label;
- this.value = value;
- this.children = new Container<>();
- }
- GenericTreeNode(String label, NODETYPE value, Collection<ITreeNode<NODETYPE>> children) {
- this.label = label;
- this.value = value;
- this.children = children;
- }
- @Override
- public boolean checkNodeByValue(NODETYPE value) {
- return this.value.equals(value);
- }
- @Override
- public ITreeNode<NODETYPE> deepCopy() {
- Collection<ITreeNode<NODETYPE>> newChildren = new Container<>();
- for (ITreeNode<NODETYPE> child : this.children) {
- newChildren.add(child.deepCopy());
- }
- return new GenericTreeNode<NODETYPE>(this.label, this.value, newChildren);
- }
- @Override
- public ITreeNode<NODETYPE> findNodeByNode(ITreeNode<NODETYPE> searchNode) {
- if (this.equals(searchNode)) {
- return this;
- }
- for (ITreeNode<NODETYPE> child : this.children) {
- ITreeNode<NODETYPE> found = child.findNodeByNode(searchNode);
- if (found != null) {
- return found;
- }
- }
- return null;
- }
- @Override
- public ITreeNode<NODETYPE> findNodeByValue(NODETYPE searchValue) {
- if (this.checkNodeByValue(searchValue)) {
- return this;
- }
- if (this.children.isEmpty()) {
- return null;
- }
- for (ITreeNode<NODETYPE> child : this.children) {
- ITreeNode<NODETYPE> found = child.findNodeByValue(searchValue);
- if (found != null) {
- return found;
- }
- }
- return null;
- }
- @Override
- public String generateConsoleView(String spacer, String preamble) {
- StringBuilder ret = new StringBuilder();
- ret.append(preamble);
- ret.append(this);
- if (!this.children.isEmpty()) {
- for (ITreeNode<NODETYPE> child : this.children) {
- ret.append("\n");
- ret.append(child.generateConsoleView(spacer, preamble + spacer));
- }
- }
- return ret.toString();
- }
- @Override
- public Collection<ITreeNode<NODETYPE>> getChildren() {
- return this.children;
- }
- @Override
- public String getLabel() {
- return this.label;
- }
- @Override
- public boolean isLeaf() {
- return this.children.isEmpty();
- }
- @Override
- public NODETYPE nodeValue() {
- return this.value;
- }
- /*void setChildren(Collection<ITreeNode<NODETYPE>> children) {
- this.children = children;
- }
- void setLabel(String label) {
- this.label = label;
- }
- void setValue(NODETYPE value) {
- this.value = value;
- }*/
- @Override
- public Collection<ITreeNode<NODETYPE>> searchByFilter(ISearchFilter filter, Object compareObject) {
- Collection<ITreeNode<NODETYPE>> ret = new Container<>();
- if (filter.searchFilterFunction(this, compareObject) ||
- filter.searchFilterFunction(this.value, compareObject)) {
- ret.add(this);
- }
- for (ITreeNode<NODETYPE> child : this.children) {
- ret.addAll(child.searchByFilter(filter, compareObject));
- }
- return ret;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment