X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fws%2Frest%2FRestJob.java;h=e5dd84148ba295a85a800acbf55278bd939204e5;hb=7526a82c54f0ef8434f826a1f2323ca5ec1eb3b1;hp=80f4ac67eadec05aa0d3b24cf9211ccf721bb940;hpb=f5d48464f668eb2ffd8f6cdcd0d04ff5658c54fc;p=jalview.git diff --git a/src/jalview/ws/rest/RestJob.java b/src/jalview/ws/rest/RestJob.java index 80f4ac6..e5dd841 100644 --- a/src/jalview/ws/rest/RestJob.java +++ b/src/jalview/ws/rest/RestJob.java @@ -1,6 +1,24 @@ +/******************************************************************************* + * 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 + * + * 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 . + *******************************************************************************/ package jalview.ws.rest; import java.io.IOException; +import java.sql.ResultSet; import java.util.ArrayList; import java.util.Collection; import java.util.Hashtable; @@ -10,6 +28,7 @@ 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; @@ -95,11 +114,14 @@ 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() > 0)) + .size() >= prm.getValue().min)) { alinp.add(prm.getValue()); + } else { + statMessage=("Not enough groups defined on the alignment - need at least "+prm.getValue().min); } } } @@ -129,13 +151,13 @@ public class RestJob extends AWsJob validInput = false; } } - + boolean validInput = false; @Override public boolean hasResults() { - return gotresult; + return gotresult && (parsedResults ? validJvresults : true); } @Override @@ -255,6 +277,19 @@ public class RestJob extends AWsJob context = new JalviewDataset(dsForIO, null, squniq, 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()) { + 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) + { + contextAl.deleteAllGroups(); + } context.addAlignment(contextAl); } @@ -384,16 +419,55 @@ public class RestJob extends AWsJob * context used to parse results from service */ JalviewDataset context = null; - + protected boolean parsedResults = 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. + * 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 { - jvresultobj = resSet.parseResultSet(); + if (!parsedResults) { + parsedResults=true; + jvresultobj = resSet.parseResultSet(); + validJvresults = true; + } + } + + /** + * + * @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 true if the ID/metadata for the input sequences were saved and sequence IDs renamed. + */ + public boolean isInputUniquified() + { + // TODO Auto-generated method stub + return false; + } + + /** + * 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