package biotree; import java.util.ArrayList; /** * This class implements TaxonNode ADT * The BioTree class uses these nodes to construct its tree. * An implicit taxonomic hierarchy is constructed via. the parent and children properties. * * Used the following source(s): * https://stackoverflow.com/questions/2697182/how-to-use-an-array-list */ public class TaxonNode { private final int taxonId; private final TaxonType taxonType; private final String name; private TaxonNode parent; private ArrayList<TaxonNode> children = new ArrayList<TaxonNode>(); private int count; /** * TaxonNode constructor * * @param taxonId * @param taxonType * @param name */ public TaxonNode(int taxonId, TaxonType taxonType, String name) { this.taxonId = taxonId; this.taxonType = taxonType; this.name = name; this.parent = null; this.children = new ArrayList<TaxonNode>(); this.count = 0; } /** * Gets the TaxonNode's Id * * @return taxonId */ public int getTaxonId() { return this.taxonId; } /** * Gets the TaxonNode's Type * * @return taxonType */ public TaxonType getTaxonType() { return this.taxonType; } /** * Gets the TaxonNode's Name * * @return Name */ public String getName() { return this.name; } /** * Gets the TaxonNode's Parent * * @return parent */ public TaxonNode getParent() { return this.parent; } /** * Gets the TaxonNode's Arraylist of Children * * @return Arraylist of children */ public Iterable<TaxonNode> getChildren() { return this.children; } /** * Gets the TaxonNode's Children Count * * @return Children Count */ public int getCount() { return this.count; } /** * Sets the TaxonNode's Parent * * @param parent */ public void setParent(TaxonNode parent) { this.parent = parent; } /** * Adds a new child to the children list * * @param newChild */ public void addChild(TaxonNode newChild) { this.children.add(newChild); } /** * Increments the children count */ public void incCount() { this.count ++; } /** * Converts the properties of the taxonNode to String format * * @return String of TaxonNode properties */ public String toString() { String s = ""; s += String.format("%-20s%s\n", "Scientific Name:", name); s += String.format("%-20s%s\n", "Taxon Type:", taxonType); s += String.format("%-20s%d\n", "Taxon ID:", taxonId); if (parent != null) s += String.format("%-20s%d\n", "Parent:", parent.getTaxonId()); s += String.format("%-20s", "Children:"); for (TaxonNode tx: children) { s += String.format("%d ", tx.getTaxonId()); } s += "\n"; s += String.format("%-20s%d\n", "Count:", count); return s; } }