X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fio%2Fpacked%2FParsePackedSet.java;h=91575bfd7403b6674a1f7b5ac65e7673d0cb613d;hb=2305d687bac5ed8a76ecb93c54c7b090a928e362;hp=20b2061e33b80fa565f2d4537c76969e3c5180cf;hpb=2ddb613232cf825e989a5b0e7772f83a09dd682e;p=jalview.git diff --git a/src/jalview/io/packed/ParsePackedSet.java b/src/jalview/io/packed/ParsePackedSet.java index 20b2061..91575bf 100644 --- a/src/jalview/io/packed/ParsePackedSet.java +++ b/src/jalview/io/packed/ParsePackedSet.java @@ -1,16 +1,40 @@ +/* + * 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. + * + * 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 . + * The Jalview Authors are detailed in the 'AUTHORS' file. + */ package jalview.io.packed; +import jalview.api.FeatureColourI; import jalview.datamodel.AlignmentI; import jalview.io.AppletFormatAdapter; +import jalview.io.FileFormatI; import jalview.io.FileParse; import jalview.io.FormatAdapter; import jalview.io.IdentifyFile; import jalview.io.packed.DataProvider.JvDataType; import java.io.BufferedReader; +import java.io.IOException; import java.util.ArrayList; -import java.util.Hashtable; +import java.util.HashMap; import java.util.List; +import java.util.Locale; public class ParsePackedSet { @@ -42,10 +66,10 @@ public class ParsePackedSet FileParse src = dta.getDataSource(); if (dta.getType().equals(DataProvider.JvDataType.ALIGNMENT)) { - String fmt = null; + FileFormatI fmt = null; try { - fmt = new IdentifyFile().Identify(src, false); + fmt = new IdentifyFile().identify(src, false); } catch (Exception ex) { exerror = ex; @@ -54,31 +78,24 @@ public class ParsePackedSet if (fmt != null) { - if (!FormatAdapter.isValidIOFormat(fmt, false)) + // parse the alignment + AlignmentI al = null; + try { - errmsg = fmt; - exerror = null; + al = new FormatAdapter().readFromFile(src, fmt); + } catch (Exception e) + { + errmsg = "Failed to parse alignment from result set"; + exerror = e; } - else + if (al != null) { - // parse the alignment - AlignmentI al = null; - try - { - al = new FormatAdapter().readFromFile(src, fmt); - } catch (Exception e) - { - errmsg = "Failed to parse alignment from result set"; - exerror = e; - } - if (al != null) - { - // deuniquify and construct/merge additional dataset entries if - // necessary. - context.addAlignment(al); - rslt.add(al); - deuniquify = true; - } + // deuniquify and construct/merge additional dataset entries if + // necessary. + context.addAlignment(al); + context.updateSetModified(true); + rslt.add(al); + deuniquify = true; } } } @@ -101,8 +118,16 @@ public class ParsePackedSet { br = new BufferedReader(src.getReader()); } - new jalview.io.AnnotationFile().parseAnnotationFrom( - context.getLastAlignment(), br); + // TODO: add columnSelection to context + if (new jalview.io.AnnotationFile().parseAnnotationFrom( + context.getLastAlignment(), null, br)) + { + context.updateSetModified(true); + } + else + { + errmsg = "Annotation file contained no data."; + } } catch (Exception e) { @@ -123,16 +148,18 @@ public class ParsePackedSet } if (dta.getType().equals(JvDataType.FEATURES)) { - // check the context has a place to store feature rendering definitions, if not, create one. - if (context.featureColours==null) + // check the context has a place to store feature rendering definitions, + // if not, create one. + if (context.featureColours == null) { - context.featureColours = new Hashtable(); + context.featureColours = new HashMap(); } try { jalview.io.FeaturesFile ff = new jalview.io.FeaturesFile(src); - ff.parse(context.getLastAlignment(), context.featureColours, - false); + context.updateSetModified(ff.parse(context.getLastAlignment(), + context.featureColours, false, + context.relaxedIdMatching)); } catch (Exception e) { errmsg = ("Failed to parse the Features file associated with the alignment."); @@ -155,6 +182,7 @@ public class ParsePackedSet context.addTreeFromFile(nf); rslt.add(nf); + context.updateSetModified(true); } } catch (Exception e) { @@ -163,7 +191,24 @@ public class ParsePackedSet } } - + if (exerror != null) + { + if (errmsg != null && errmsg.length() > 0) + { + throw new IOException(errmsg, exerror); + } + else + { + throw new IOException(errmsg, exerror); + } + } + else + { + if (errmsg != null && errmsg.length() > 0) + { + throw new IOException(errmsg); + } + } } if (deuniquify) { @@ -189,8 +234,8 @@ public class ParsePackedSet { String type = args[i++]; final String file = args[i++]; - final JvDataType jtype = DataProvider.JvDataType.valueOf(type - .toUpperCase()); + final JvDataType jtype = DataProvider.JvDataType + .valueOf(type.toUpperCase(Locale.ROOT)); if (jtype != null) { final FileParse fp; @@ -209,7 +254,7 @@ public class ParsePackedSet else { System.out.println("Couldn't parse source type token '" - + type.toUpperCase() + "'"); + + type.toUpperCase(Locale.ROOT) + "'"); } } if (i < args.length) @@ -228,8 +273,8 @@ public class ParsePackedSet ParsePackedSet pps; try { - newdm = (pps = new ParsePackedSet()).getAlignment( - context = new JalviewDataset(), dp); + newdm = (pps = new ParsePackedSet()) + .getAlignment(context = new JalviewDataset(), dp); } catch (Exception e) { System.out.println("Test failed for these arguments.\n"); @@ -249,5 +294,13 @@ public class ParsePackedSet // import with deuniquify info, and compare results to input. } + else + { + if (context.getLastAlignmentSet().isModified()) + { + System.err.println( + "Initial alignment set was modified and any associated views should be updated."); + } + } } }