From 0d6e36143a2d7471edb7ef386d0b79095e0cd63e Mon Sep 17 00:00:00 2001
From: amwaterhouse <Andrew Waterhouse>
Date: Fri, 21 Jul 2006 08:45:54 +0000
Subject: [PATCH] DBRefs now array

---
 src/jalview/io/DBRefFetcher.java              |    6 +++---
 src/jalview/io/DasSequenceFeatureFetcher.java |   19 ++++++++-----------
 src/jalview/io/ModellerDescription.java       |   12 +++++-------
 src/jalview/io/WSWUBlastClient.java           |    5 ++---
 src/jalview/util/DBRefUtils.java              |   21 ++++++++++++++-------
 5 files changed, 32 insertions(+), 31 deletions(-)

diff --git a/src/jalview/io/DBRefFetcher.java b/src/jalview/io/DBRefFetcher.java
index 4488d02..01e67cf 100644
--- a/src/jalview/io/DBRefFetcher.java
+++ b/src/jalview/io/DBRefFetcher.java
@@ -135,13 +135,13 @@ public class DBRefFetcher implements Runnable
              seqIndex++, i++)
         {
           Sequence sequence = (Sequence) sequences.get(seqIndex);
-          Vector uprefs = jalview.util.DBRefUtils.selectRefs(sequence.getDBRef(), new String[] {
+          DBRefEntry [] uprefs = jalview.util.DBRefUtils.selectRefs(sequence.getDBRef(), new String[] {
               jalview.datamodel.DBRefSource.UNIPROT});
           if (uprefs!=null)
           {
             // we know the id for this entry, so don't note its ID in the unknownSequences list
-            for (int j=0,k=uprefs.size(); j<k; j++)
-              ids.add(((DBRefEntry) uprefs.get(j)).getAccessionId());
+            for (int j=0,k=uprefs.length; j<k; j++)
+              ids.add(uprefs[j].getAccessionId());
             unknownSequences.add(sequence);
           } else {
             if (!ids.contains(sequence.getName()))
diff --git a/src/jalview/io/DasSequenceFeatureFetcher.java b/src/jalview/io/DasSequenceFeatureFetcher.java
index b4dd1f6..1d63e5b 100755
--- a/src/jalview/io/DasSequenceFeatureFetcher.java
+++ b/src/jalview/io/DasSequenceFeatureFetcher.java
@@ -95,15 +95,14 @@ public class DasSequenceFeatureFetcher implements Runnable
     int refCount = 0;
     for(int i=0; i<sequences.length; i++)
     {
-      Vector dbref = sequences[i].getDBRef();
+      DBRefEntry [] dbref = sequences[i].getDBRef();
       if(dbref!=null)
       {
-        for(int j=0; j<dbref.size(); j++)
+        for(int j=0; j<dbref.length; j++)
         {
-          DBRefEntry entry = (DBRefEntry)dbref.elementAt(j);
-          System.out.println(entry.getSource()
+          System.out.println(dbref[j].getSource()
                              +" "+jalview.datamodel.DBRefSource.UNIPROT);
-          if(entry.getSource()
+          if(dbref[j].getSource()
              .equals(jalview.datamodel.DBRefSource.UNIPROT))
           {
             System.out.println("got a match");
@@ -344,7 +343,7 @@ public class DasSequenceFeatureFetcher implements Runnable
       int seqIndex = 0;
       while (seqIndex < sequences.length)
       {
-          Vector uprefs = jalview.util.DBRefUtils.selectRefs(sequences[seqIndex].getDBRef(),
+          DBRefEntry [] uprefs = jalview.util.DBRefUtils.selectRefs(sequences[seqIndex].getDBRef(),
               new String[]  {
               jalview.datamodel.DBRefSource.PDB,
               jalview.datamodel.DBRefSource.UNIPROT});
@@ -356,15 +355,14 @@ public class DasSequenceFeatureFetcher implements Runnable
             if (uprefs != null)
             {
               // we know the id for this entry, so don't note its ID in the unknownSequences list
-              for (int j = 0;  j < uprefs.size(); j++)
+              for (int j = 0;  j < uprefs.length; j++)
               {
 
                 // Will have to pass any mapping information to the fetcher - the start/end for the DBRefEntry may not be the same as the sequence's start/end
                 org.biojava.dasobert.dasregistry.DasCoordinateSystem cs[] = dasSource.getCoordinateSystem();
                 for (int l=0; l<cs.length; l++)
                 {
-                  if (jalview.util.DBRefUtils.isDasCoordinateSystem(cs[l].getName(), (DBRefEntry)
-                      uprefs.get(j)))
+                  if (jalview.util.DBRefUtils.isDasCoordinateSystem(cs[l].getName(), uprefs[j]))
                   {
                     Cache.log.debug("Launched fetcher for coordinate system " +
                                     cs[l].getName());
@@ -372,8 +370,7 @@ public class DasSequenceFeatureFetcher implements Runnable
 
                     createFeatureFetcher(sequences[seqIndex],
                                          dasSource.getUrl(),
-                                         ( (DBRefEntry) uprefs.get(j)).
-                                         getAccessionId(),
+                                          uprefs[j].getAccessionId(),
                                          dasSource.getNickname());
                   }
                 }
diff --git a/src/jalview/io/ModellerDescription.java b/src/jalview/io/ModellerDescription.java
index 1e4f905..300a9ba 100755
--- a/src/jalview/io/ModellerDescription.java
+++ b/src/jalview/io/ModellerDescription.java
@@ -224,19 +224,17 @@ public class ModellerDescription
       if (seq.getDatasetSequence() != null &&
           seq.getDatasetSequence().getDBRef() != null)
       {
-        Vector dbr = seq.getDatasetSequence().getDBRef();
+        jalview.datamodel.DBRefEntry [] dbr = seq.getDatasetSequence().getDBRef();
         int i, j;
-        for (i = 0, j = dbr.size(); i < j; i++)
+        for (i = 0, j = dbr.length; i < j; i++)
         {
-          jalview.datamodel.DBRefEntry dref = (jalview.datamodel.DBRefEntry)
-              dbr.elementAt(i);
-          if (dref != null)
+          if (dbr[i] != null)
           {
             // JBPNote PDB dbRefEntry needs properties to propagate onto ModellerField
             // JBPNote Need to get info from the user about whether the sequence is the one being modelled, or if it is a template.
-            if (dref.getSource().equals(jalview.datamodel.DBRefSource.PDB))
+            if (dbr[i].getSource().equals(jalview.datamodel.DBRefSource.PDB))
             {
-              fields.put(Fields[LOCALID], dref.getAccessionId());
+              fields.put(Fields[LOCALID], dbr[i].getAccessionId());
               t = 2;
               break;
             }
diff --git a/src/jalview/io/WSWUBlastClient.java b/src/jalview/io/WSWUBlastClient.java
index 391c9a8..782e0ed 100755
--- a/src/jalview/io/WSWUBlastClient.java
+++ b/src/jalview/io/WSWUBlastClient.java
@@ -163,14 +163,13 @@ public class WSWUBlastClient
             }
           }
 
-          Vector entries = oldseq.getDBRef();
+          DBRefEntry [] entries = oldseq.getDBRef();
           if (entries != null)
           {
-            DBRefEntry entry = (DBRefEntry) entries.elementAt(0);
             oldseq.addDBRef(new jalview.datamodel.
                                                  DBRefEntry(jalview.datamodel.DBRefSource.UNIPROT,
                 "0",
-                entry.getAccessionId()));
+                entries[0].getAccessionId()));
           }
         }
       }
diff --git a/src/jalview/util/DBRefUtils.java b/src/jalview/util/DBRefUtils.java
index 2f844da..d3788ea 100755
--- a/src/jalview/util/DBRefUtils.java
+++ b/src/jalview/util/DBRefUtils.java
@@ -4,6 +4,7 @@ import java.util.*;
 
 import jalview.datamodel.*;
 
+
 public class DBRefUtils
 {
     /**
@@ -15,23 +16,29 @@ public class DBRefUtils
      * @param sources String[] array of source DBRef IDs to retrieve
      * @return Vector
      */
-    public static Vector selectRefs(java.util.Vector dbrefs, String[] sources) {
+    public static DBRefEntry [] selectRefs(DBRefEntry [] dbrefs, String[] sources) {
       if (dbrefs==null)
         return null;
       if (sources==null)
         return dbrefs;
       Hashtable srcs = new Hashtable();
       Vector res=new Vector();
+
       for (int i=0; i<sources.length; i++)
         srcs.put(new String(sources[i]), new Integer(i));
-      for (int i=0, j=dbrefs.size(); i<j; i++)
-        if (dbrefs.get(i) instanceof jalview.datamodel.DBRefEntry) {
-          jalview.datamodel.DBRefEntry entry = (jalview.datamodel.DBRefEntry) dbrefs.get(i);
-          if (srcs.containsKey(entry.getSource()))
-            res.add(entry);
+      for (int i = 0, j = dbrefs.length; i < j; i++)
+        {
+          if (srcs.containsKey(dbrefs[i].getSource()))
+            res.add(dbrefs[i]);
         }
+
       if (res.size()>0)
-        return res;
+      {
+        DBRefEntry [] reply = new DBRefEntry[res.size()];
+        for(int i=0; i<res.size(); i++)
+          reply[i] = (DBRefEntry)res.elementAt(i);
+        return reply;
+      }
       res = null;
       // there are probable  memory leaks in the hashtable!
       return null;
-- 
1.7.10.2