X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Futil%2FDBRefUtils.java;h=3587b83ca7557a8c416e0816629ec6f55621c2b9;hb=d4b1e4d0c74b1c6d0f3c3556b10be91a6aaea475;hp=2f844dafb121c96fa0fff5ef17db88ef1dea5de7;hpb=91416b3038a6f3fc655791512770da07cb6cb251;p=jalview.git diff --git a/src/jalview/util/DBRefUtils.java b/src/jalview/util/DBRefUtils.java index 2f844da..3587b83 100755 --- a/src/jalview/util/DBRefUtils.java +++ b/src/jalview/util/DBRefUtils.java @@ -1,3 +1,21 @@ +/* + * Jalview - A Sequence Alignment Editor and Viewer + * Copyright (C) 2007 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + */ package jalview.util; import java.util.*; @@ -6,36 +24,53 @@ import jalview.datamodel.*; public class DBRefUtils { - /** - * Utilities for handling DBRef objects and their collections. - */ - /** - * - * @param dbrefs Vector of DBRef objects to search - * @param sources String[] array of source DBRef IDs to retrieve - * @return Vector - */ - public static Vector selectRefs(java.util.Vector 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; i0) - return res; - res = null; - // there are probable memory leaks in the hashtable! + /** + * Utilities for handling DBRef objects and their collections. + */ + /** + * + * @param dbrefs Vector of DBRef objects to search + * @param sources String[] array of source DBRef IDs to retrieve + * @return Vector + */ + 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.length; i < j; i++) + { + if (srcs.containsKey(dbrefs[i].getSource())) + { + res.add(dbrefs[i]); + } + } + + if (res.size() > 0) + { + 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; + } /** * isDasCoordinateSystem @@ -48,18 +83,48 @@ public class DBRefUtils public static boolean isDasCoordinateSystem(String string, DBRefEntry dBRefEntry) { - if (DasCoordinateSystemsLookup==null) + if (DasCoordinateSystemsLookup == null) { // Initialise DasCoordinateSystemsLookup = new Hashtable(); DasCoordinateSystemsLookup.put("pdbresnum", jalview.datamodel.DBRefSource.PDB); DasCoordinateSystemsLookup.put("uniprot", jalview.datamodel.DBRefSource.UNIPROT); + DasCoordinateSystemsLookup.put("EMBL", + jalview.datamodel.DBRefSource.EMBL); + //DasCoordinateSystemsLookup.put("EMBL", + // jalview.datamodel.DBRefSource.EMBLCDS); } - String coordsys = (String) DasCoordinateSystemsLookup.get(string.toLowerCase()); - if (coordsys!=null) + String coordsys = (String) DasCoordinateSystemsLookup.get(string. + toLowerCase()); + if (coordsys != null) + { return coordsys.equals(dBRefEntry.getSource()); + } return false; } + public static Hashtable CanonicalSourceNameLookup=null; + /** + * look up source in an internal list of database reference sources + * and return the canonical jalview name for the source, or the original + * string if it has no canonical form. + * @param source + * @return canonical jalview source (one of jalview.datamodel.DBRefSource.*) + */ + public static String getCanonicalName(String source) + { + if (CanonicalSourceNameLookup==null) { + CanonicalSourceNameLookup = new Hashtable(); + CanonicalSourceNameLookup.put("uniprotkb/swiss-prot", jalview.datamodel.DBRefSource.UNIPROT); + CanonicalSourceNameLookup.put("pdb", jalview.datamodel.DBRefSource.PDB); + } + String canonical = (String) CanonicalSourceNameLookup.get(source. + toLowerCase()); + if (canonical==null) + { + return source; + } + return canonical; + } }