package org.gbif.checklistbank.nub;
import org.gbif.api.vocabulary.Rank;
import org.gbif.checklistbank.neo.printer.TxtPrinter;
import java.io.IOException;
import java.util.LinkedList;
import java.util.List;
import com.google.common.collect.Lists;
import org.apache.commons.lang3.StringUtils;
/**
* Simple bean for testing nub taxonomies.
*/
public class NubNode {
public String name;
public Rank rank;
public boolean basionym;
public List<NubNode> synonyms = Lists.newArrayList();
public LinkedList<NubNode> children = Lists.newLinkedList();
public NubNode(String name, Rank rank, boolean isBasionym) {
this.name = name;
this.rank = rank;
this.basionym = isBasionym;
}
public boolean isBasionym() {
return basionym;
}
@Override
public String toString() {
return name;
}
public void print(Appendable out, int level, boolean synonym) throws IOException {
out.append(StringUtils.repeat(" ", level * 2));
if (synonym) {
out.append(TxtPrinter.SYNONYM_SYMBOL);
}
if (basionym) {
out.append(TxtPrinter.BASIONYM_SYMBOL);
}
out.append(name);
if (rank != null) {
out.append(" [" + rank.name().toLowerCase() + "]");
}
out.append("\n");
// recursive
for (NubNode n : synonyms) {
n.print(out, level + 1, true);
}
for (NubNode n : children) {
n.print(out, level + 1, false);
}
}
}