X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fws%2FSequenceFetcher.java;h=208eb887dc787bb41085a2bc598989d2bc8fc840;hb=77e9dc41516acc93470931bcc5f344c67e819e70;hp=e6fc3856ec3b916d5040c7d098efb5bcc1f27a9b;hpb=5d88ae6bbf1ea113cefcb43b7918b5baf560a76e;p=jalview.git diff --git a/src/jalview/ws/SequenceFetcher.java b/src/jalview/ws/SequenceFetcher.java index e6fc385..208eb88 100644 --- a/src/jalview/ws/SequenceFetcher.java +++ b/src/jalview/ws/SequenceFetcher.java @@ -1,16 +1,19 @@ package jalview.ws; import java.util.Enumeration; -import java.util.Hashtable; import java.util.Vector; import jalview.datamodel.Alignment; import jalview.datamodel.AlignmentI; import jalview.datamodel.DBRefSource; import jalview.datamodel.SequenceI; +import jalview.ws.seqfetcher.ASequenceFetcher; +import jalview.ws.seqfetcher.DbSourceProxy; /** - * prototype of abstract sequence retrieval interface + * This is the the concrete implementation of the sequence retrieval interface + * and abstract class in jalview.ws.seqfetcher. This implements the run-time + * discovery of sequence database clients, and provides a hardwired main for testing all registered handlers. * */ public class SequenceFetcher extends ASequenceFetcher @@ -23,17 +26,12 @@ public class SequenceFetcher extends ASequenceFetcher */ public SequenceFetcher() { - FETCHABLEDBS = new Hashtable(); - FETCHABLEDBS.put(DBRefSource.EMBL, - new jalview.ws.dbsources.EmblSource()); - FETCHABLEDBS.put(DBRefSource.EMBLCDS, - new jalview.ws.dbsources.EmblCdsSouce()); - FETCHABLEDBS.put(DBRefSource.UNIPROT, - new jalview.ws.dbsources.Uniprot()); - FETCHABLEDBS.put(DBRefSource.UP_NAME, - new jalview.ws.dbsources.Uniprot()); - FETCHABLEDBS.put(DBRefSource.PDB, new jalview.ws.dbsources.Pdb()); - FETCHABLEDBS.put(DBRefSource.PFAM, new jalview.ws.dbsources.Pfam()); + addDBRefSourceImpl(jalview.ws.dbsources.EmblSource.class); + addDBRefSourceImpl(jalview.ws.dbsources.EmblCdsSouce.class); + addDBRefSourceImpl(jalview.ws.dbsources.Uniprot.class); + addDBRefSourceImpl(jalview.ws.dbsources.UnprotName.class); + addDBRefSourceImpl(jalview.ws.dbsources.Pdb.class); + addDBRefSourceImpl(jalview.ws.dbsources.Pfam.class); }; public static void main(String[] argv) @@ -45,11 +43,11 @@ public class SequenceFetcher extends ASequenceFetcher System.out .println("Ignoring arguments. Future Usage = dbname:query1;query2;..."); } - SequenceFetcher sfetcher = new SequenceFetcher(); - Enumeration e = sfetcher.FETCHABLEDBS.keys(); - while (e.hasMoreElements()) + ASequenceFetcher sfetcher = new SequenceFetcher(); + String[] dbSources = sfetcher.getSupportedDb(); + for (int dbsource=0; dbsource0) + if (noProds.size() > 0) { Enumeration ts = noProds.elements(); while (ts.hasMoreElements()) - + { Object[] typeSq = (Object[]) ts.nextElement(); - boolean dna = (typeSq.length>1); + boolean dna = (typeSq.length > 1); AlignmentI al = (AlignmentI) typeSq[0]; - System.out.println("Trying getProducts for "+al.getSequenceAt(0).getDisplayId(true)); - System.out.println("Search DS Xref for: "+(dna ? "dna" : "prot")); - // have a bash at finding the products amongst all the retrieved sequences. - SequenceI[] prod = jalview.analysis.CrossRef.findXrefSequences(al - .getSequencesArray(), dna, null, ds).getSequencesArray(); // note should test rather than throw away codon mapping (if present) + System.out.println("Trying getProducts for " + + al.getSequenceAt(0).getDisplayId(true)); + System.out.println("Search DS Xref for: " + (dna ? "dna" : "prot")); + // have a bash at finding the products amongst all the retrieved + // sequences. + SequenceI[] seqs = al.getSequencesArray(); + Alignment prodal = jalview.analysis.CrossRef.findXrefSequences( + seqs, dna, null, ds); System.out.println("Found " - + ((prod == null) ? "no" : "" + prod.length) - + " products"); - if (prod!=null) + + ((prodal == null) ? "no" : "" + prodal.getHeight()) + " products"); + if (prodal != null) { - for (int p=0; p