X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fws%2Fdbsources%2FXfam.java;h=e39f0ab2f0eb3a95c610229b59d2441239795c83;hb=1724567f3dfc3b4637aac7bdeb6633628e6a8335;hp=dd2d155ef2c21afa723966393b92cdd8ca40800c;hpb=a8f483d04205bb8273ee311c12968b7e86d205fa;p=jalview.git diff --git a/src/jalview/ws/dbsources/Xfam.java b/src/jalview/ws/dbsources/Xfam.java index dd2d155..e39f0ab 100644 --- a/src/jalview/ws/dbsources/Xfam.java +++ b/src/jalview/ws/dbsources/Xfam.java @@ -1,25 +1,33 @@ /* - * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.2) - * Copyright (C) 2014 The Jalview Authors + * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$) + * Copyright (C) $$Year-Rel$$ The Jalview Authors * * This file is part of Jalview. * * Jalview 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 3 of the License, or (at your option) any later version. + * as published by the Free Software Foundation, either version 3 + * of the License, or (at your option) any later version. * * Jalview 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 Jalview. If not, see . + * You should have received a copy of the GNU General Public License + * along with Jalview. If not, see . * The Jalview Authors are detailed in the 'AUTHORS' file. */ package jalview.ws.dbsources; +import java.util.Locale; + +import jalview.bin.Console; import jalview.datamodel.AlignmentI; import jalview.datamodel.DBRefEntry; +import jalview.io.DataSourceType; +import jalview.io.FileFormat; +import jalview.io.FormatAdapter; import jalview.ws.seqfetcher.DbSourceProxyImpl; /** @@ -30,18 +38,24 @@ import jalview.ws.seqfetcher.DbSourceProxyImpl; */ public abstract class Xfam extends DbSourceProxyImpl { - public Xfam() { super(); } - protected abstract String getXFAMURL(); + /** + * the base URL for this Xfam-like service + * + * @return + */ + protected abstract String getURLPrefix(); + @Override public abstract String getDbVersion(); abstract String getXfamSource(); + @Override public AlignmentI getSequenceRecords(String queries) throws Exception { // TODO: this is not a perfect implementation. We need to be able to add @@ -49,23 +63,51 @@ public abstract class Xfam extends DbSourceProxyImpl // retrieved. startQuery(); // TODO: trap HTTP 404 exceptions and return null - AlignmentI rcds = new jalview.io.FormatAdapter().readFile(getXFAMURL() - + queries.trim().toUpperCase(), jalview.io.FormatAdapter.URL, - "STH"); + String xfamUrl = getURL(queries); + + Console.debug("XFAM URL for retrieval is: " + xfamUrl); + + AlignmentI rcds = new FormatAdapter().readFile(xfamUrl, + DataSourceType.URL, FileFormat.Stockholm); + for (int s = 0, sNum = rcds.getHeight(); s < sNum; s++) { rcds.getSequenceAt(s).addDBRef(new DBRefEntry(getXfamSource(), - // getDbSource(), - getDbVersion(), queries.trim().toUpperCase())); + // getDbSource(), + getDbVersion(), queries.trim().toUpperCase(Locale.ROOT))); if (!getDbSource().equals(getXfamSource())) { // add the specific ref too - rcds.getSequenceAt(s).addDBRef( - new DBRefEntry(getDbSource(), getDbVersion(), queries - .trim().toUpperCase())); + rcds.getSequenceAt(s).addDBRef(new DBRefEntry(getDbSource(), + getDbVersion(), queries.trim().toUpperCase(Locale.ROOT))); } } stopQuery(); return rcds; } + String getURL(String queries) + { + return getURLPrefix() + "/family/" + queries.trim().toUpperCase(Locale.ROOT) + + getURLSuffix(); + } + + /** + * Pfam and Rfam provide alignments + */ + @Override + public boolean isAlignmentSource() + { + return true; + } + + /** + * default suffix to append the retrieval URL for this source. + * + * @return "" for most Xfam sources + */ + public String getURLSuffix() + { + return ""; + } + }