in progress
[jalview.git] / forester / java / src / org / forester / phylogeny / data / Identifier.java
index 33c3a8b..97297f8 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
@@ -15,7 +15,7 @@
 // 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
@@ -32,30 +32,44 @@ import org.forester.io.parsers.nhx.NHXtags;
 import org.forester.io.parsers.phyloxml.PhyloXmlMapping;
 import org.forester.util.ForesterUtil;
 
-public class Identifier implements PhylogenyData {
+public final class Identifier implements PhylogenyData {
 
-    final String _value;
-    final String _provider;
+    final public static String NCBI   = "ncbi";
+    final public static String REFSEQ = "refseq";
+    final public static String SP     = "sp";
+    final private String       _value;
+    final private String       _provider;
+    final private String       _value_provider;
 
     public Identifier() {
         _value = "";
         _provider = "";
+        _value_provider = "";
     }
 
     public Identifier( final String value ) {
         _value = value;
         _provider = "";
+        _value_provider = value;
     }
 
     public Identifier( final String value, final String provider ) {
         _value = value;
         _provider = provider;
+        if ( provider != null ) {
+            _value_provider = value + provider;
+        }
+        else {
+            _value_provider = value;
+        }
     }
 
+    @Override
     public StringBuffer asSimpleText() {
         return new StringBuffer( getValue() );
     }
 
+    @Override
     public StringBuffer asText() {
         final StringBuffer sb = new StringBuffer();
         if ( !ForesterUtil.isEmpty( getProvider() ) ) {
@@ -67,6 +81,11 @@ public class Identifier implements PhylogenyData {
         return sb;
     }
 
+    public String getValuePlusProvider() {
+        return _value_provider;
+    }
+
+    @Override
     public PhylogenyData copy() {
         return new Identifier( getValue(), getProvider() );
     }
@@ -98,12 +117,10 @@ public class Identifier implements PhylogenyData {
 
     @Override
     public int hashCode() {
-        if ( getProvider() != null ) {
-            return ( getProvider() + getValue() ).hashCode();
-        }
-        return getValue().hashCode();
+        return _value_provider.hashCode();
     }
 
+    @Override
     public boolean isEqual( final PhylogenyData data ) {
         if ( this == data ) {
             return true;
@@ -118,6 +135,7 @@ public class Identifier implements PhylogenyData {
         return ( a.getValue().equals( getValue() ) );
     }
 
+    @Override
     public StringBuffer toNHX() {
         final StringBuffer sb = new StringBuffer();
         sb.append( ":" );
@@ -126,6 +144,7 @@ public class Identifier implements PhylogenyData {
         return sb;
     }
 
+    @Override
     public void toPhyloXML( final Writer writer, final int level, final String indentation ) throws IOException {
         if ( !org.forester.util.ForesterUtil.isEmpty( getProvider() ) ) {
             PhylogenyDataUtil.appendElement( writer,