- FETCHABLEDBS = new Hashtable();\r
- FETCHABLEDBS.put(DBRefSource.EMBL,\r
- new jalview.ws.dbsources.EmblSource());\r
- FETCHABLEDBS.put(DBRefSource.EMBLCDS,\r
- new jalview.ws.dbsources.EmblCdsSouce());\r
- FETCHABLEDBS.put(DBRefSource.UNIPROT,\r
- new jalview.ws.dbsources.Uniprot());\r
- FETCHABLEDBS.put(DBRefSource.UP_NAME,\r
- new jalview.ws.dbsources.Uniprot());\r
- FETCHABLEDBS.put(DBRefSource.PDB, new jalview.ws.dbsources.Pdb());\r
- FETCHABLEDBS.put(DBRefSource.PFAM, new jalview.ws.dbsources.Pfam());\r
- };\r
+ addDBRefSourceImpl(jalview.ws.dbsources.EmblSource.class);\r
+ addDBRefSourceImpl(jalview.ws.dbsources.EmblCdsSouce.class);\r
+ addDBRefSourceImpl(jalview.ws.dbsources.Uniprot.class);\r
+ addDBRefSourceImpl(jalview.ws.dbsources.UnprotName.class);\r
+ addDBRefSourceImpl(jalview.ws.dbsources.Pdb.class);\r
+ addDBRefSourceImpl(jalview.ws.dbsources.PfamFull.class);\r
+ addDBRefSourceImpl(jalview.ws.dbsources.PfamSeed.class); // ensures Seed\r
+ // alignment is\r
+ // 'default' for\r
+ // PFAM\r
+ addDBRefSourceImpl(jalview.ws.dbsources.RfamFull.class);\r
+ addDBRefSourceImpl(jalview.ws.dbsources.RfamSeed.class);\r
+ registerDasSequenceSources();\r
+ }\r
+\r
+ /**\r
+ * return an ordered list of database sources where non-das database classes\r
+ * appear before das database classes\r
+ */\r
+ public String[] getOrderedSupportedSources()\r
+ {\r
+ String[] srcs = this.getSupportedDb();\r
+ ArrayList<String> dassrc = new ArrayList<String>(), nondas = new ArrayList<String>();\r
+ for (int i = 0; i < srcs.length; i++)\r
+ {\r
+ boolean das = false,skip=false;\r
+ String nm;\r
+ for (DbSourceProxy dbs : getSourceProxy(srcs[i]))\r
+ {\r
+ // Skip the alignment databases for the moment - they're not useful for verifying a single sequence against its reference source\r
+ if (dbs.isA(DBRefSource.ALIGNMENTDB))\r
+ {\r
+ skip=true;\r
+ } else {\r
+ nm = dbs.getDbName();\r
+ if (getSourceProxy(srcs[i]) instanceof jalview.ws.dbsources.das.datamodel.DasSequenceSource)\r
+ {\r
+ if (nm.startsWith("das:"))\r
+ {\r
+ nm = nm.substring(4);\r
+ das = true;\r
+ }\r
+ break;\r
+ }\r
+ }\r
+ }\r
+ if (skip)\r
+ {\r
+ continue;\r
+ }\r
+ if (das)\r
+ {\r
+ dassrc.add(srcs[i]);\r
+ }\r
+ else\r
+ {\r
+ nondas.add(srcs[i]);\r
+ }\r
+ }\r
+ String[] tosort = nondas.toArray(new String[0]), sorted = nondas\r
+ .toArray(new String[0]);\r
+ for (int j = 0, jSize = sorted.length; j < jSize; j++)\r
+ {\r
+ tosort[j] = tosort[j].toLowerCase();\r
+ }\r
+ jalview.util.QuickSort.sort(tosort, sorted);\r
+ // construct array with all sources listed\r
+\r
+ srcs = new String[sorted.length + dassrc.size()];\r
+ int i = 0;\r
+ for (int j = sorted.length - 1; j >= 0; j--, i++)\r
+ {\r
+ srcs[i] = sorted[j];\r
+ sorted[j] = null;\r
+ }\r
+\r
+ sorted = dassrc.toArray(new String[0]);\r
+ tosort = dassrc.toArray(new String[0]);\r
+ for (int j = 0, jSize = sorted.length; j < jSize; j++)\r
+ {\r
+ tosort[j] = tosort[j].toLowerCase();\r
+ }\r
+ jalview.util.QuickSort.sort(tosort, sorted);\r
+ for (int j = sorted.length - 1; j >= 0; j--, i++)\r
+ {\r
+ srcs[i] = sorted[j];\r
+ }\r
+ return srcs;\r
+ }\r
+\r
+ /**\r
+ * return plaintext databse list suitable for using in a GUI element\r
+ */\r
+ public String[] _getOrderedSupportedSources()\r
+ {\r
+ String[] srcs = this.getSupportedDb();\r
+ ArrayList dassrc = new ArrayList(), nondas = new ArrayList();\r
+ for (int i = 0; i < srcs.length; i++)\r
+ {\r
+ for (DbSourceProxy dbs : getSourceProxy(srcs[i]))\r
+ {\r
+ String nm = dbs.getDbName();\r
+ if (getSourceProxy(srcs[i]) instanceof jalview.ws.dbsources.das.datamodel.DasSequenceSource)\r
+ {\r
+ if (nm.startsWith("das:"))\r
+ {\r
+ nm = nm.substring(4);\r
+ }\r
+ dassrc.add(new String[]\r
+ { srcs[i], nm.toUpperCase() });\r
+ }\r
+ else\r
+ {\r
+ nondas.add(new String[]\r
+ { srcs[i], nm.toUpperCase() });\r
+ }\r
+ }\r
+ }\r
+ Object[] sorted = nondas.toArray();\r
+ String[] tosort = new String[sorted.length];\r
+ nondas.clear();\r
+ for (int j = 0; j < sorted.length; j++)\r
+ {\r
+ tosort[j] = ((String[]) sorted[j])[1];\r
+ }\r
+ jalview.util.QuickSort.sort(tosort, sorted);\r
+ int i = 0;\r
+ // construct array with all sources listed\r
+ srcs = new String[sorted.length + dassrc.size()];\r
+ for (int j = sorted.length - 1; j >= 0; j--, i++)\r
+ {\r
+ srcs[i] = ((String[]) sorted[j])[0];\r
+ sorted[j] = null;\r
+ }\r