import org.forester.io.parsers.nhx.NHXFormatException;
import org.forester.io.parsers.nhx.NHXParser;
+import org.forester.io.parsers.phyloxml.PhyloXmlDataFormatException;
import org.forester.io.parsers.phyloxml.PhyloXmlUtil;
import org.forester.phylogeny.data.BranchData;
import org.forester.phylogeny.data.Confidence;
import org.forester.phylogeny.data.NodeData;
import org.forester.phylogeny.data.PhylogenyDataUtil;
-import org.forester.phylogeny.iterators.ChildNodeIteratorForward;
-import org.forester.phylogeny.iterators.PhylogenyNodeIterator;
import org.forester.phylogeny.iterators.PreorderTreeIterator;
import org.forester.util.ForesterUtil;
+/**
+ * Warning. Implementation of method 'compareTo' only looks at
+ * node name. Thus, use of this class in SortedSets might lead
+ * to unexpected behavior.
+ *
+ */
public final class PhylogenyNode implements PhylogenyNodeI, Comparable<PhylogenyNode> {
private static int _node_count = 0;
return getNodeData().getNodeName();
}
+ final public List<PhylogenyNode> getAllDescendants() {
+ return _descendants;
+ }
+
final public int getNumberOfDescendants() {
if ( _descendants == null ) {
return 0;
}
// ---------------------------------------------------------
- // Iterator
- // ---------------------------------------------------------
- final public PhylogenyNodeIterator iterateChildNodesForward() {
- return new ChildNodeIteratorForward( this );
- }
-
- // ---------------------------------------------------------
// Basic printing
// ---------------------------------------------------------
/**
@Override
final public String toString() {
- StringBuilder sb = new StringBuilder();
- if ( ForesterUtil.isEmpty( getName() ) ) {
- sb.append( getName() );
- sb.append( " " );
- }
+ final StringBuilder sb = new StringBuilder();
if ( getNodeData().isHasTaxonomy() ) {
if ( !ForesterUtil.isEmpty( getNodeData().getTaxonomy().getScientificName() ) ) {
sb.append( getNodeData().getTaxonomy().getScientificName() );
sb.append( " " );
}
- else if ( !ForesterUtil.isEmpty( getNodeData().getTaxonomy().getTaxonomyCode() ) ) {
+ else if ( ( sb.length() <= 1 ) && !ForesterUtil.isEmpty( getNodeData().getTaxonomy().getTaxonomyCode() ) ) {
sb.append( getNodeData().getTaxonomy().getTaxonomyCode() );
sb.append( " " );
}
sb.append( getNodeData().getSequence().getName() );
sb.append( " " );
}
- else if ( !ForesterUtil.isEmpty( getNodeData().getSequence().getSymbol() ) ) {
+ if ( !ForesterUtil.isEmpty( getNodeData().getSequence().getSymbol() ) ) {
sb.append( getNodeData().getSequence().getSymbol() );
sb.append( " " );
}
- else if ( getNodeData().getSequence().getAccession() != null ) {
- sb.append( getNodeData().getTaxonomy().getIdentifier().toString() );
+ if ( getNodeData().getSequence().getAccession() != null ) {
+ sb.append( getNodeData().getSequence().getAccession().toString() );
sb.append( " " );
}
}
+ if ( ( sb.length() <= 1 ) && !ForesterUtil.isEmpty( getName() ) ) {
+ sb.append( getName() );
+ sb.append( " " );
+ }
if ( sb.length() <= 1 ) {
sb.append( "[" );
sb.append( getId() );
PhylogenyNode._node_count = i;
}
- public static PhylogenyNode createInstanceFromNhxString( final String nhx ) throws NHXFormatException {
+ public static PhylogenyNode createInstanceFromNhxString( final String nhx ) throws NHXFormatException,
+ PhyloXmlDataFormatException {
return new PhylogenyNode( nhx, PhylogenyMethods.TAXONOMY_EXTRACTION.NO, false );
}
public static PhylogenyNode createInstanceFromNhxString( final String nhx,
final PhylogenyMethods.TAXONOMY_EXTRACTION taxonomy_extraction )
- throws NHXFormatException {
+ throws NHXFormatException, PhyloXmlDataFormatException {
return new PhylogenyNode( nhx, taxonomy_extraction, false );
}
public static PhylogenyNode createInstanceFromNhxString( final String nhx,
final PhylogenyMethods.TAXONOMY_EXTRACTION taxonomy_extraction,
final boolean replace_underscores )
- throws NHXFormatException {
+ throws NHXFormatException, PhyloXmlDataFormatException {
return new PhylogenyNode( nhx, taxonomy_extraction, replace_underscores );
}
private PhylogenyNode( final String nhx,
final PhylogenyMethods.TAXONOMY_EXTRACTION taxonomy_extraction,
- final boolean replace_underscores ) throws NHXFormatException {
+ final boolean replace_underscores ) throws NHXFormatException, PhyloXmlDataFormatException {
// init();
NHXParser.parseNHX( nhx, this, taxonomy_extraction, replace_underscores );
setId( PhylogenyNode.getNodeCount() );