package org.forester.archaeopteryx;
+import java.awt.Color;
import java.util.List;
import java.util.SortedMap;
import java.util.SortedSet;
import org.forester.phylogeny.PhylogenyNode;
import org.forester.phylogeny.data.Annotation;
import org.forester.phylogeny.data.BinaryCharacters;
+import org.forester.phylogeny.data.BranchWidth;
import org.forester.phylogeny.data.Date;
import org.forester.phylogeny.data.Distribution;
import org.forester.phylogeny.data.Event;
import org.forester.phylogeny.data.PhylogenyData;
+import org.forester.phylogeny.data.PhylogenyDataUtil;
import org.forester.phylogeny.data.Point;
import org.forester.phylogeny.data.PropertiesMap;
import org.forester.phylogeny.data.Property;
static final String SEQ_SYMBOL = "Symbol";
static final String SEQ_URI = "URI";
static final String NODE_BRANCH_LENGTH = "Branch length";
+ static final String NODE_BRANCH_WIDTH = "Branch width";
+ static final String NODE_BRANCH_COLOR = "Branch color";
static final String NODE_NAME = "Name";
static final String TAXONOMY_URI = "URI";
static final String TAXONOMY_RANK = "Rank";
}
}
+ private static void addLineage( final DefaultMutableTreeNode top,
+ final List<String> lineage,
+ final DefaultMutableTreeNode category ) {
+ if ( ( lineage != null ) && ( lineage.size() > 0 ) ) {
+ final StringBuilder sb = new StringBuilder();
+ for( final String lin : lineage ) {
+ if ( !ForesterUtil.isEmpty( lin ) ) {
+ sb.append( lin );
+ sb.append( " > " );
+ }
+ }
+ String str = null;
+ if ( sb.length() > 1 ) {
+ str = sb.substring( 0, sb.length() - 3 );
+ }
+ if ( !ForesterUtil.isEmpty( str ) ) {
+ addSubelement( category, "Lineage", str );
+ }
+ }
+ }
+
private static void addBasics( final DefaultMutableTreeNode top,
final PhylogenyNode phylogeny_node,
final String name ) {
final DefaultMutableTreeNode category = new DefaultMutableTreeNode( name );
top.add( category );
addSubelement( category, NODE_NAME, phylogeny_node.getName() );
- if ( phylogeny_node.getDistanceToParent() != PhylogenyNode.DISTANCE_DEFAULT ) {
+ if ( phylogeny_node.getDistanceToParent() != PhylogenyDataUtil.BRANCH_LENGTH_DEFAULT ) {
addSubelement( category,
NODE_BRANCH_LENGTH,
ForesterUtil.FORMATTER_6.format( phylogeny_node.getDistanceToParent() ) );
if ( no_tax > 0 ) {
addSubelement( category, "External nodes without taxonomy", String.valueOf( no_tax ) );
}
- //TODO remove me...
- for( final Taxonomy taxonomy : distinct_tax.keySet() ) {
- System.out.println( taxonomy + ": " + distinct_tax.get( taxonomy ) );
- }
}
}
if ( !phylogeny_node.isRoot() ) {
addSubelement( category, "Distance to root", String.valueOf( ForesterUtil.FORMATTER_6.format( d ) ) );
}
}
+ if ( ( phylogeny_node.getBranchData().getBranchWidth() != null )
+ && ( phylogeny_node.getBranchData().getBranchWidth().getValue() != BranchWidth.BRANCH_WIDTH_DEFAULT_VALUE ) ) {
+ addSubelement( category,
+ NODE_BRANCH_WIDTH,
+ ForesterUtil.FORMATTER_3.format( phylogeny_node.getBranchData().getBranchWidth().getValue() ) );
+ }
+ if ( ( phylogeny_node.getBranchData().getBranchColor() != null ) ) {
+ final Color c = phylogeny_node.getBranchData().getBranchColor().getValue();
+ addSubelement( category, NODE_BRANCH_COLOR, c.getRed() + ", " + c.getGreen() + ", " + c.getBlue() );
+ }
}
private static void addBinaryCharacters( final DefaultMutableTreeNode top,
top.add( category );
for( final String key : properties_map.keySet() ) {
final Property prop = properties_map.get( key );
- category.add( new DefaultMutableTreeNode( prop.getRef() + " " + prop.getValue() + " " + prop.getUnit()
+ category.add( new DefaultMutableTreeNode( prop.getRef() + "=" + prop.getValue() + " " + prop.getUnit()
+ " [" + prop.getAppliesTo().toString() + "]" ) );
}
}
if ( ( tax.getUris() != null ) && !tax.getUris().isEmpty() ) {
addUris( top, tax.getUris(), category );
}
+ if ( ( tax.getLineage() != null ) && !tax.getLineage().isEmpty() ) {
+ addLineage( top, tax.getLineage(), category );
+ }
}
private static void createNodes( final DefaultMutableTreeNode top, final PhylogenyNode phylogeny_node ) {