pulling out more of the tree objects

This commit is contained in:
Vincent Batts 2012-10-03 21:40:17 -04:00
parent f788c73a8e
commit 7664a903cc
3 changed files with 118 additions and 4 deletions

View file

@ -5,21 +5,21 @@ package com.hashbangbash.trie;
* an external incrementor to the node id
*/
public class NodeContext {
private long huffNodeId = 0;
private long nodeId = 0;
public NodeContext() {
}
public NodeContext(long startId) {
this.huffNodeId = startId;
this.nodeId = startId;
}
public long getId() {
return this.huffNodeId;
return this.nodeId;
}
public long nextId() {
return this.huffNodeId++;
return this.nodeId++;
}
}

View file

@ -0,0 +1,28 @@
package com.hashbangbash.trie;
public class NodePair {
private String name;
private PathNode connection;
public NodePair(String name, PathNode connection) {
this.name = name;
this.connection = connection;
}
public String getName() {
return this.name;
}
public PathNode getConnection() {
return this.connection;
}
public void setConnection(PathNode connection) {
this.connection = connection;
}
public String toString() {
return "Name: " + name + ", Connection: " + connection.getId();
}
}

View file

@ -0,0 +1,86 @@
package com.hashbangbash.trie;
import java.util.ArrayList;
import java.util.List;
public class PathNode {
private long id = 0;
private List<NodePair> children = new ArrayList<NodePair>();
private List<PathNode> parents = new ArrayList<PathNode>();
private NodeContext ctx = null;
public PathNode() {
this(new NodeContext());
}
public PathNode(NodeContext ctx) {
this.ctx = ctx;
this.id = this.ctx.nextId();
}
public long getId() {
return this.id;
}
void addChild(NodePair cp) {
this.children.add(cp);
}
void addParent(PathNode cp) {
if (!parents.contains(cp)) {
this.parents.add(cp);
}
}
public List<NodePair> getChildren() {
return this.children;
}
List<PathNode> getParents() {
return this.parents;
}
void setParents(List<PathNode> parents) {
this.parents = parents;
}
void addParents(List<PathNode> parents) {
for (PathNode pn : parents) {
addParent(pn);
}
}
/*
* same number of children with the same names for child nodes
*/
boolean isEquivalentTo(PathNode that) {
if (this.getChildren().size() != that.getChildren().size()) {
return false;
}
for (NodePair thisnp : this.getChildren()) {
boolean found = false;
for (NodePair thatnp : that.getChildren()) {
if (thisnp.getName().equals(thatnp.getName())) {
found = true;
break;
}
}
if (!found) {
return false;
}
}
return true;
}
public String toString() {
String parentList = "";
for (PathNode parent : parents) {
parentList += ": " + parent.getId();
}
parentList += "";
return "ID: " + id + ", Parents" + parentList + ", Children: " + children;
}
}