X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fdatamodel%2Fxdb%2Fembl%2FEmblFile.java;h=8a32c130c9230c6ac7a4e4e5fa52700200fda18a;hb=88515cdb74e4603a40c8c1dca14107b5ca503e04;hp=6219ca80225caba4feeb4fde1d262ec471df4d62;hpb=2de8acfae59aced665e4c37ad0f7dcc2ed68818e;p=jalview.git diff --git a/src/jalview/datamodel/xdb/embl/EmblFile.java b/src/jalview/datamodel/xdb/embl/EmblFile.java index 6219ca8..8a32c13 100644 --- a/src/jalview/datamodel/xdb/embl/EmblFile.java +++ b/src/jalview/datamodel/xdb/embl/EmblFile.java @@ -1,50 +1,66 @@ /* - * Jalview - A Sequence Alignment Editor and Viewer (Development Version 2.4.1) - * Copyright (C) 2009 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle + * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$) + * Copyright (C) $$Year-Rel$$ The Jalview Authors * - * 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 file is part of Jalview. * - * 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. + * 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. + * + * 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 this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + * along with Jalview. If not, see . + * The Jalview Authors are detailed in the 'AUTHORS' file. */ package jalview.datamodel.xdb.embl; +import jalview.datamodel.DBRefEntry; +import jalview.ws.dbsources.Uniprot; + import java.io.File; import java.io.FileReader; +import java.io.PrintWriter; import java.io.Reader; import java.util.Vector; import org.exolab.castor.mapping.Mapping; import org.exolab.castor.xml.Unmarshaller; +/** + * Data model for entries returned from an EMBL query, as marshalled by a Castor + * binding file + * + * For example: http://www.ebi.ac.uk/Tools/dbfetch/dbfetch/embl/x53828/emblxml + * + * @see embl_mapping.xml + */ public class EmblFile { - Vector entries; + Vector entries; + + Vector errors; - Vector errors; + String text; /** * @return the entries */ - public Vector getEntries() + public Vector getEntries() { return entries; } /** * @param entries - * the entries to set + * the entries to set */ - public void setEntries(Vector entries) + public void setEntries(Vector entries) { this.entries = entries; } @@ -52,16 +68,16 @@ public class EmblFile /** * @return the errors */ - public Vector getErrors() + public Vector getErrors() { return errors; } /** * @param errors - * the errors to set + * the errors to set */ - public void setErrors(Vector errors) + public void setErrors(Vector errors) { this.errors = errors; } @@ -75,7 +91,9 @@ public class EmblFile public static EmblFile getEmblFile(File file) { if (file == null) + { return null; + } try { return EmblFile.getEmblFile(new FileReader(file)); @@ -94,6 +112,7 @@ public class EmblFile { // 1. Load the mapping information from the file Mapping map = new Mapping(record.getClass().getClassLoader()); + java.net.URL url = record.getClass().getResource("/embl_mapping.xml"); map.loadMapping(url); @@ -102,18 +121,22 @@ public class EmblFile try { // uncomment to DEBUG EMBLFile reading - if (((String) jalview.bin.Cache.getDefault( - jalview.bin.Cache.CASTORLOGLEVEL, "debug")) + if (jalview.bin.Cache + .getDefault(jalview.bin.Cache.CASTORLOGLEVEL, "debug") .equalsIgnoreCase("DEBUG")) + { unmar.setDebug(jalview.bin.Cache.log.isDebugEnabled()); + } } catch (Exception e) { } - ; unmar.setIgnoreExtraElements(true); + unmar.setIgnoreExtraAttributes(true); unmar.setMapping(map); - + unmar.setLogWriter(new PrintWriter(System.out)); record = (EmblFile) unmar.unmarshal(file); + + canonicaliseDbRefs(record); } catch (Exception e) { e.printStackTrace(System.err); @@ -123,22 +146,58 @@ public class EmblFile return record; } - public static void main(String args[]) + /** + * Change blank version to "0" in any DBRefEntry, to ensure consistent + * comparison with other DBRefEntry in Jalview + * + * @param record + * @see Uniprot#getDbVersion + */ + static void canonicaliseDbRefs(EmblFile record) { - File mf = null; - if (args.length == 1) + if (record.getEntries() == null) { - mf = new File(args[0]); + return; } - if (!mf.exists()) + for (EmblEntry entry : record.getEntries()) { - mf = new File( - "C:\\Documents and Settings\\JimP\\workspace-3.2\\Jalview Release\\schemas\\embleRecordV1.1.xml"); + if (entry.getDbRefs() != null) + { + for (DBRefEntry dbref : entry.getDbRefs()) + { + if ("".equals(dbref.getVersion())) + { + dbref.setVersion("0"); + } + } + } + + if (entry.getFeatures() != null) + { + for (EmblFeature feature : entry.getFeatures()) + { + if (feature.getDbRefs() != null) + { + for (DBRefEntry dbref : feature.getDbRefs()) + { + if ("".equals(dbref.getVersion())) + { + dbref.setVersion("0"); + } + } + } + } + } } - EmblFile myfile = EmblFile.getEmblFile(mf); - if (myfile != null && myfile.entries != null - && myfile.entries.size() > 0) - System.out.println(myfile.entries.size() + " Records read. (" + mf - + ")"); + } + + public String getText() + { + return text; + } + + public void setText(String text) + { + this.text = text; } }