X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fjalview%2Fws%2FSequenceFetcher.java;h=b1d3f3c01d4b8793588efadda07a65cffa8f1bf3;hb=13e2ec04aa9db3447f2888c604d1479d0b901d56;hp=077ce14396ed2f095d1afc0b071e2f1add557b8d;hpb=994985c6ff0ea1ebadb8e184e8090dbb780e3c10;p=jalview.git diff --git a/src/jalview/ws/SequenceFetcher.java b/src/jalview/ws/SequenceFetcher.java index 077ce14..b1d3f3c 100644 --- a/src/jalview/ws/SequenceFetcher.java +++ b/src/jalview/ws/SequenceFetcher.java @@ -22,6 +22,7 @@ import jalview.datamodel.AlignmentI; import jalview.datamodel.DBRefSource; import jalview.datamodel.SequenceI; import jalview.ws.dbsources.das.api.jalviewSourceI; +import jalview.ws.dbsources.das.datamodel.DasSequenceSource; import jalview.ws.seqfetcher.ASequenceFetcher; import jalview.ws.seqfetcher.DbSourceProxy; @@ -63,12 +64,86 @@ public class SequenceFetcher extends ASequenceFetcher } /** - * return an ordered list of database sources suitable for using in a GUI - * element + * return an ordered list of database sources where non-das database classes + * appear before das database classes */ public String[] getOrderedSupportedSources() { String[] srcs = this.getSupportedDb(); + ArrayList dassrc = new ArrayList(), nondas = new ArrayList(); + for (int i = 0; i < srcs.length; i++) + { + boolean das = false,skip=false; + String nm; + for (DbSourceProxy dbs : getSourceProxy(srcs[i])) + { + // Skip the alignment databases for the moment - they're not useful for verifying a single sequence against its reference source + if (dbs.isA(DBRefSource.ALIGNMENTDB)) + { + skip=true; + } else { + nm = dbs.getDbName(); + if (getSourceProxy(srcs[i]) instanceof jalview.ws.dbsources.das.datamodel.DasSequenceSource) + { + if (nm.startsWith("das:")) + { + nm = nm.substring(4); + das = true; + } + break; + } + } + } + if (skip) + { + continue; + } + if (das) + { + dassrc.add(srcs[i]); + } + else + { + nondas.add(srcs[i]); + } + } + String[] tosort = nondas.toArray(new String[0]), sorted = nondas + .toArray(new String[0]); + for (int j = 0, jSize = sorted.length; j < jSize; j++) + { + tosort[j] = tosort[j].toLowerCase(); + } + jalview.util.QuickSort.sort(tosort, sorted); + // construct array with all sources listed + + srcs = new String[sorted.length + dassrc.size()]; + int i = 0; + for (int j = sorted.length - 1; j >= 0; j--, i++) + { + srcs[i] = sorted[j]; + sorted[j] = null; + } + + sorted = dassrc.toArray(new String[0]); + tosort = dassrc.toArray(new String[0]); + for (int j = 0, jSize = sorted.length; j < jSize; j++) + { + tosort[j] = tosort[j].toLowerCase(); + } + jalview.util.QuickSort.sort(tosort, sorted); + for (int j = sorted.length - 1; j >= 0; j--, i++) + { + srcs[i] = sorted[j]; + } + return srcs; + } + + /** + * return plaintext databse list suitable for using in a GUI element + */ + public String[] _getOrderedSupportedSources() + { + String[] srcs = this.getSupportedDb(); ArrayList dassrc = new ArrayList(), nondas = new ArrayList(); for (int i = 0; i < srcs.length; i++) { @@ -347,4 +422,5 @@ public class SequenceFetcher extends ASequenceFetcher } } } + }