regex search
[jalview.git] / forester / java / src / org / forester / phylogeny / data / DomainArchitecture.java
index e19c2ef..0f09c55 100644 (file)
@@ -5,7 +5,7 @@
 // Copyright (C) 2008-2009 Christian M. Zmasek
 // Copyright (C) 2008-2009 Burnham Institute for Medical Research
 // All rights reserved
-// 
+//
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
 // License as published by the Free Software Foundation; either
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
 // Lesser General Public License for more details.
-// 
+//
 // You should have received a copy of the GNU Lesser General Public
 // License along with this library; if not, write to the Free Software
 // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
 //
 // Contact: phylosoft @ gmail . com
-// WWW: www.phylosoft.org/forester
+// WWW: https://sites.google.com/site/cmzmasek/home/software/forester
 
 package org.forester.phylogeny.data;
 
 import java.io.IOException;
 import java.io.Writer;
+import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.SortedMap;
@@ -40,10 +41,10 @@ import org.forester.util.ForesterUtil;
 
 public class DomainArchitecture implements PhylogenyData {
 
-    public final static String               NHX_SEPARATOR = ">";
-    private static final double              INCREASE_KEY  = 0.0001;
-    private SortedMap<Double, ProteinDomain> _domains;
-    private int                              _total_length;
+    public final static String                   NHX_SEPARATOR = ">";
+    private static final BigDecimal              INCREASE_KEY  = new BigDecimal( "0.00001" );
+    private SortedMap<BigDecimal, ProteinDomain> _domains;
+    private int                                  _total_length;
 
     public DomainArchitecture() {
         init();
@@ -79,7 +80,7 @@ public class DomainArchitecture implements PhylogenyData {
             }
         }
         catch ( final Exception e ) {
-            throw new IllegalArgumentException( "Malformed format for domain structure \"" + da_str + "\": "
+            throw new IllegalArgumentException( "malformed format for domain structure \"" + da_str + "\": "
                     + e.getMessage() );
         }
         if ( to > total_length ) {
@@ -89,13 +90,14 @@ public class DomainArchitecture implements PhylogenyData {
     }
 
     public void addDomain( final ProteinDomain pd ) {
-        Double key = new Double( pd.getFrom() );
+        BigDecimal key = new BigDecimal( "" + pd.getFrom() );
         while ( _domains.containsKey( key ) ) {
-            key = new Double( key.doubleValue() + DomainArchitecture.INCREASE_KEY );
+            key = new BigDecimal( "" + ( key.doubleValue() + DomainArchitecture.INCREASE_KEY.doubleValue() ) );
         }
         _domains.put( key, pd );
     }
 
+    @Override
     public StringBuffer asSimpleText() {
         final StringBuffer sb = new StringBuffer();
         for( int i = 0; i < getDomains().size(); ++i ) {
@@ -107,6 +109,7 @@ public class DomainArchitecture implements PhylogenyData {
         return sb;
     }
 
+    @Override
     public StringBuffer asText() {
         final StringBuffer sb = new StringBuffer();
         for( int i = 0; i < getDomains().size(); ++i ) {
@@ -118,6 +121,7 @@ public class DomainArchitecture implements PhylogenyData {
         return sb;
     }
 
+    @Override
     public PhylogenyData copy() {
         final List<PhylogenyData> domains = new ArrayList<PhylogenyData>( getDomains().size() );
         for( int i = 0; i < getDomains().size(); ++i ) {
@@ -130,7 +134,7 @@ public class DomainArchitecture implements PhylogenyData {
         return ( ProteinDomain ) _domains.values().toArray()[ i ];
     }
 
-    public SortedMap<Double, ProteinDomain> getDomains() {
+    public SortedMap<BigDecimal, ProteinDomain> getDomains() {
         return _domains;
     }
 
@@ -143,7 +147,7 @@ public class DomainArchitecture implements PhylogenyData {
     }
 
     private void init() {
-        _domains = new TreeMap<Double, ProteinDomain>();
+        _domains = new TreeMap<BigDecimal, ProteinDomain>();
         _total_length = 0;
     }
 
@@ -153,6 +157,7 @@ public class DomainArchitecture implements PhylogenyData {
      * 
      * 
      */
+    @Override
     public boolean isEqual( final PhylogenyData domain_architecture ) {
         if ( domain_architecture == null ) {
             return false;
@@ -176,6 +181,7 @@ public class DomainArchitecture implements PhylogenyData {
         _total_length = total_length;
     }
 
+    @Override
     public StringBuffer toNHX() {
         final StringBuffer sb = new StringBuffer();
         sb.append( ":" );
@@ -196,6 +202,7 @@ public class DomainArchitecture implements PhylogenyData {
         return sb;
     }
 
+    @Override
     public void toPhyloXML( final Writer writer, final int level, final String indentation ) throws IOException {
         writer.write( ForesterUtil.LINE_SEPARATOR );
         writer.write( indentation );