in progress (special coloring is still true)
[jalview.git] / forester / java / src / org / forester / ws / seqdb / UniProtTaxonomy.java
index 2cdd93e..c379607 100644 (file)
@@ -32,18 +32,19 @@ import org.forester.util.ForesterUtil;
 
 public final class UniProtTaxonomy {
 
-    private static final String ARCHAEA            = "Archaea";
-    private static final String BACTERIA           = "Bacteria";
-    private static final String EUKARYOTA          = "Eukaryota";
-    private final List<String>  _lineage;
-    private final String        _code;
-    private final String        _scientific_name;
-    private final String        _common_name;
-    private final String        _synonym;
-    private final String        _rank;
-    private final String        _id;
-    public final static String  CELLULAR_ORGANISMS = "cellular organisms";
-    public final static String  VIRUSES            = "Viruses";
+    public static final String ARCHAEA            = "Archaea";
+    public static final String BACTERIA           = "Bacteria";
+    public static final String EUKARYOTA          = "Eukaryota";
+    private final List<String> _lineage;
+    private final String       _code;
+    private final String       _scientific_name;
+    private final String       _common_name;
+    private final String       _synonym;
+    private final String       _rank;
+    private final String       _id;
+    public final static String CELLULAR_ORGANISMS = "cellular organisms";
+    public final static String VIRUSES            = "Viruses";
+    public static final String X                  = "x";
 
     public UniProtTaxonomy( final String line ) {
         final String[] items = line.split( "\t" );
@@ -107,31 +108,9 @@ public final class UniProtTaxonomy {
         _synonym = synonym;
         _rank = rank;
         _id = id;
-        if ( ( _lineage != null ) && !_lineage.get( _lineage.size() - 1 ).equalsIgnoreCase( _scientific_name ) ) {
-            _lineage.add( _scientific_name );
-        }
-    }
-
-    public UniProtTaxonomy( final String[] lineage,
-                            final String code,
-                            final String common_name,
-                            final String scientific_name,
-                            final String synonym,
-                            final String rank,
-                            final String id ) {
-        _lineage = new ArrayList<String>();
-        if ( lineage != null ) {
-            for( final String l : lineage ) {
-                _lineage.add( l );
-            }
-        }
-        _code = code;
-        _scientific_name = scientific_name;
-        _common_name = common_name;
-        _synonym = synonym;
-        _rank = rank;
-        _id = id;
-        if ( ( _lineage != null ) && !_lineage.get( _lineage.size() - 1 ).equalsIgnoreCase( _scientific_name ) ) {
+        if ( ( ( _lineage != null ) && _lineage.isEmpty() )
+                || ( ( !ForesterUtil.isEmpty( _lineage ) ) && !_lineage.get( _lineage.size() - 1 )
+                        .equalsIgnoreCase( _scientific_name ) ) ) {
             _lineage.add( _scientific_name );
         }
     }
@@ -178,4 +157,44 @@ public final class UniProtTaxonomy {
     public String getSynonym() {
         return _synonym;
     }
+
+    public final static UniProtTaxonomy createSpecialFromScientificName( final String sn ) {
+        final List<String> lineage = new ArrayList<String>();
+        final String code = "";
+        final String common_name = "";
+        String scientific_name = "";
+        final String synonym = "";
+        String rank = "";
+        String id = "";
+        if ( sn.equalsIgnoreCase( BACTERIA ) ) {
+            scientific_name = BACTERIA;
+            lineage.add( "cellular organisms" );
+            rank = "superkingdom";
+            id = "2";
+        }
+        else if ( sn.equalsIgnoreCase( ARCHAEA ) ) {
+            scientific_name = ARCHAEA;
+            lineage.add( "cellular organisms" );
+            rank = "superkingdom";
+            id = "2157";
+        }
+        else if ( sn.equalsIgnoreCase( EUKARYOTA ) ) {
+            scientific_name = EUKARYOTA;
+            lineage.add( "cellular organisms" );
+            rank = "superkingdom";
+            id = "2759";
+        }
+        else if ( sn.equalsIgnoreCase( VIRUSES ) ) {
+            scientific_name = VIRUSES;
+            rank = "superkingdom";
+            id = "10239";
+        }
+        else if ( sn.equalsIgnoreCase( X ) ) {
+            scientific_name = X;
+        }
+        else {
+            throw new IllegalArgumentException( "illegal attempt to make UniProt taxonomy for :" + sn );
+        }
+        return new UniProtTaxonomy( lineage, code, common_name, scientific_name, synonym, rank, id );
+    }
 }