X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fws%2Frest%2FRestJob.java;h=7bd9f490393877f7b69b9e3c8d8482f7fd06f5f7;hb=865a855a4ca87eadb3e5ff284ed32ed307d9c34b;hp=e5dd84148ba295a85a800acbf55278bd939204e5;hpb=797df64fa2a0a30773d0f48f5494d4155e5a8be3;p=jalview.git diff --git a/src/jalview/ws/rest/RestJob.java b/src/jalview/ws/rest/RestJob.java index e5dd841..7bd9f49 100644 --- a/src/jalview/ws/rest/RestJob.java +++ b/src/jalview/ws/rest/RestJob.java @@ -1,44 +1,36 @@ -/******************************************************************************* - * Jalview - A Sequence Alignment Editor and Viewer (Version 2.7) - * Copyright (C) 2011 J Procter, AM Waterhouse, J Engelhardt, LM Lui, G Barton, M Clamp, S Searle - * +/* + * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.0b1) + * Copyright (C) 2014 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.ws.rest; -import java.io.IOException; -import java.sql.ResultSet; import java.util.ArrayList; import java.util.Collection; import java.util.Hashtable; -import java.util.List; import java.util.Map; -import java.util.Map.Entry; import java.util.Set; import java.util.Vector; import jalview.datamodel.AlignmentAnnotation; import jalview.datamodel.AlignmentI; import jalview.datamodel.AlignmentOrder; -import jalview.datamodel.AlignmentView; import jalview.datamodel.SequenceGroup; import jalview.datamodel.SequenceI; -import jalview.io.packed.DataProvider; import jalview.io.packed.JalviewDataset; -import jalview.io.packed.ParsePackedSet; -import jalview.io.packed.SimpleDataProvider; -import jalview.io.packed.DataProvider.JvDataType; import jalview.ws.AWsJob; import jalview.ws.rest.params.Alignment; import jalview.ws.rest.params.SeqGroupIndexVector; @@ -72,7 +64,7 @@ public class RestJob extends AWsJob */ int[] origviscontig; - private AlignmentI contextAl=null; + private AlignmentI contextAl = null; /** * create a rest job using data bounded by the given start/end column. @@ -96,12 +88,13 @@ public class RestJob extends AWsJob // get sequences for the alignmentI // get groups trimmed to alignment columns // get any annotation trimmed to start/end columns, too. - + squniq = jalview.analysis.SeqsetUtils.uniquify(_input.getSequencesArray(), true); // prepare input // form alignment+groups+annotation,preprocess and then record references // for formatters ArrayList alinp = new ArrayList(); int paramsWithData = 0; + // TODO: JAL-715 - generalise the following validation logic for all parameter types // we cheat for moment - since we know a-priori what data is available and // what inputs we have implemented so far for (Map.Entry prm : rsd.inputParams.entrySet()) @@ -114,14 +107,17 @@ public class RestJob extends AWsJob } else { - // TODO: move validation of input data to SeqGroupIndexVector - if ((prm.getValue() instanceof SeqGroupIndexVector) - && (_input.getGroups() != null && _input.getGroups() - .size() >= prm.getValue().min)) + if (prm.getValue() instanceof SeqGroupIndexVector + && _input.getGroups() != null + && _input.getGroups().size() >= -1 + prm.getValue().min) { + // the test above is not rigorous but fixes JAL-1298, since submission will fail if the partition set doesn't contain at least one partition alinp.add(prm.getValue()); - } else { - statMessage=("Not enough groups defined on the alignment - need at least "+prm.getValue().min); + } + else + { + statMessage = ("Not enough groups defined on the alignment - need at least " + prm + .getValue().min); } } } @@ -138,7 +134,7 @@ public class RestJob extends AWsJob _input.setDataset(null); } dsForIO = _input.getDataset(); - if (contextAl==null) + if (contextAl == null) { contextAl = _input; } @@ -151,7 +147,7 @@ public class RestJob extends AWsJob validInput = false; } } - + boolean validInput = false; @Override @@ -275,24 +271,29 @@ public class RestJob extends AWsJob if (context == null) { context = new JalviewDataset(dsForIO, null, squniq, null); - if (contextAl!=null) + if (contextAl != null) { - // TODO devise way of merging new annotation onto (identical) existing annotation that was used as input - // delete all input annotation - if (contextAl.getAlignmentAnnotation()!=null) { - for (AlignmentAnnotation alan: contextAl.getAlignmentAnnotation()) { + // TODO devise way of merging new annotation onto (identical) existing + // annotation that was used as input + // delete all input annotation + if (contextAl.getAlignmentAnnotation() != null) + { + for (AlignmentAnnotation alan : contextAl + .getAlignmentAnnotation()) + { contextAl.deleteAnnotation(alan); } } - // TODO devise way of merging new groups onto (identical) existing groups when they were used as input to service - // delete all existing groups - if (contextAl.getGroups()!=null) + // TODO devise way of merging new groups onto (identical) existing + // groups when they were used as input to service + // delete all existing groups + if (contextAl.getGroups() != null) { contextAl.deleteAllGroups(); } context.addAlignment(contextAl); } - + } return context; } @@ -419,17 +420,23 @@ public class RestJob extends AWsJob * context used to parse results from service */ JalviewDataset context = null; + protected boolean parsedResults = false; - protected boolean validJvresults=false; + + protected boolean validJvresults = false; + Object[] jvresultobj = null; + /** * process the results obtained from the server into jalview datamodel objects - * ready to be merged/added to the users' view. Use hasResults to test if results were added to context. + * ready to be merged/added to the users' view. Use hasResults to test if + * results were added to context. */ public void parseResultSet() throws Exception, Error { - if (!parsedResults) { - parsedResults=true; + if (!parsedResults) + { + parsedResults = true; jvresultobj = resSet.parseResultSet(); validJvresults = true; } @@ -437,16 +444,19 @@ public class RestJob extends AWsJob /** * - * @return true if job has an input alignment and it was annotated when results were parsed + * @return true if job has an input alignment and it was annotated when + * results were parsed */ public boolean isInputContextModified() { - return contextAl!=null && validJvresults && context.getAl().get(0).isModified(); + return contextAl != null && validJvresults + && context.getAl().get(0).isModified(); } /** * - * @return true if the ID/metadata for the input sequences were saved and sequence IDs renamed. + * @return true if the ID/metadata for the input sequences were saved and + * sequence IDs renamed. */ public boolean isInputUniquified() { @@ -455,16 +465,19 @@ public class RestJob extends AWsJob } /** - * Return map between ordering of alignment submitted as input, and ordering of alignment as provided by user + * Return map between ordering of alignment submitted as input, and ordering + * of alignment as provided by user + * * @return int[sequence index in submitted data]==sequence index in input. */ public int[] getOrderMap() { SequenceI[] contseq = contextAl.getSequencesArray(); int map[] = new int[contseq.length]; - for (int i=0;i