Merge branch 'alpha/JAL-3066_Jalview_212_slivka-integration' into alpha/JAL-3362_Jalv...
[jalview.git] / src / jalview / ws / jws2 / jabaws2 / JabawsMsaInstance.java
index 80de5b2..cbb4b05 100644 (file)
@@ -1,19 +1,13 @@
 package jalview.ws.jws2.jabaws2;
 
-import jalview.bin.Cache;
 import jalview.datamodel.AlignmentI;
 import jalview.datamodel.Sequence;
 import jalview.datamodel.SequenceI;
-import jalview.gui.WebserviceInfo;
-import jalview.util.MessageManager;
 import jalview.ws.api.CancellableI;
 import jalview.ws.api.JobId;
 import jalview.ws.api.MultipleSequenceAlignmentI;
-import jalview.ws.gui.WsJob;
-import jalview.ws.gui.WsJob.JobState;
 import jalview.ws.jws2.JabaParamStore;
 import jalview.ws.jws2.JabaPreset;
-import jalview.ws.jws2.dm.JabaWsParamSet;
 import jalview.ws.params.ArgumentI;
 import jalview.ws.params.InvalidArgumentException;
 import jalview.ws.params.WsParamSetI;
@@ -21,29 +15,16 @@ import jalview.ws.params.WsParamSetI;
 import java.io.IOError;
 import java.rmi.ServerError;
 import java.util.ArrayList;
-import java.util.HashMap;
 import java.util.List;
-import java.util.Map;
 
-import compbio.data.msa.MsaWS;
 import compbio.data.sequence.Alignment;
 import compbio.data.sequence.FastaSequence;
-import compbio.metadata.Argument;
-import compbio.metadata.ChunkHolder;
-import compbio.metadata.JobStatus;
-import compbio.metadata.Preset;
 import compbio.metadata.ResultNotAvailableException;
 
 public class JabawsMsaInstance
+        extends JabawsServiceInstance<compbio.data.msa.MsaWS>
         implements MultipleSequenceAlignmentI, CancellableI
 {
-  /**
-   * our service instance handler generated by the discoverer
-   */
-  Jws2Instance our;
-
-  MsaWS<?> service;
-
   @Override
   public JobId align(List<SequenceI> toalign, WsParamSetI parameters,
           List<ArgumentI> arguments) throws Throwable
@@ -118,168 +99,7 @@ public class JabawsMsaInstance
 
   public JabawsMsaInstance(Jws2Instance handle)
   {
-    our = handle;
-    service = (MsaWS<?>) our.service;
-  }
-
-  @Override
-  public boolean cancel(WsJob job)
-  {
-    service.cancelJob(job.getJobId());
-    // if the Jaba server indicates the job can't be cancelled, its
-    // because its running on the server's local execution engine
-    // so we just close the window anyway.
-
-    return true;
-  }
-
-  Map<JobStatus, JobState> jwsState = new HashMap<>();
-  {
-    jwsState.put(JobStatus.CANCELLED, JobState.CANCELLED);
-    jwsState.put(JobStatus.COLLECTED, JobState.FINISHED);
-    jwsState.put(JobStatus.FAILED, JobState.FAILED);
-    jwsState.put(JobStatus.FINISHED, JobState.FINISHED);
-    jwsState.put(JobStatus.PENDING, JobState.QUEUED);
-    jwsState.put(JobStatus.RUNNING, JobState.RUNNING);
-    jwsState.put(JobStatus.STARTED, JobState.RUNNING);
-    jwsState.put(JobStatus.SUBMITTED, JobState.SUBMITTED);
-    jwsState.put(JobStatus.UNDEFINED, JobState.UNKNOWN);
-  }
-  @Override
-  public void updateStatus(WsJob job)
-  {
-    JobStatus jwsstatus = service.getJobStatus(job.getJobId());
-    job.setState(jwsState.get(jwsstatus));
-  }
-
-  @Override
-  public boolean updateJobProgress(WsJob job) throws Exception
-  {
-    StringBuilder response = new StringBuilder(job.getStatus());
-    long lastchunk = job.getNextChunk();
-    boolean changed = false;
-    do
-    {
-      ChunkHolder chunk = service.pullExecStatistics(job.getJobId(),
-              lastchunk);
-      if (chunk != null)
-      {
-        changed |= chunk.getChunk().length() > 0;
-        response.append(chunk.getChunk());
-        lastchunk = chunk.getNextPosition();
-        try
-        {
-          Thread.sleep(50);
-        } catch (InterruptedException x)
-        {
-        }
-        ;
-      }
-      ;
-      job.setnextChunk(lastchunk);
-    } while (lastchunk >= 0 && job.getNextChunk() != lastchunk);
-    if (job instanceof WsJob)
-    {
-      // TODO decide if WsJob will be the bean for all ng-webservices
-      job.setStatus(response.toString());
-    }
-    return changed;
-  }
-
-  public boolean isPresetJob(WsJob job)
-  {
-    return job.getPreset() != null && job.getPreset() instanceof JabaPreset;
-  }
-
-  public Preset getServerPreset(WsJob job)
-  {
-    return (isPresetJob(job))
-            ? ((JabaPreset) job.getPreset()).getJabaPreset()
-            : null;
-  }
-
-  public List<Argument> getJabaArguments(WsParamSetI preset)
-  {
-    List<Argument> newargs = new ArrayList<>();
-    if (preset != null)
-    {
-      if (preset instanceof JabaWsParamSet)
-      {
-        newargs.addAll(((JabaWsParamSet) preset).getjabaArguments());
-      }
-      else
-      {
-        newargs.addAll(
-                JabaParamStore.getJabafromJwsArgs(preset.getArguments()));
-      }
-    }
-    return newargs;
+    super(handle);
   }
 
-  @Override
-  public boolean handleSubmitError(Throwable _lex, WsJob j,
-          WebserviceInfo wsInfo) throws Exception, Error
-  {
-    if (_lex instanceof compbio.metadata.UnsupportedRuntimeException)
-    {
-      wsInfo.appendProgressText(MessageManager.formatMessage(
-              "info.job_couldnt_be_run_server_doesnt_support_program",
-              new String[]
-              { _lex.getMessage() }));
-      wsInfo.warnUser(_lex.getMessage(),
-              MessageManager.getString("warn.service_not_supported"));
-      wsInfo.setStatus(WebserviceInfo.STATE_STOPPED_SERVERERROR);
-      wsInfo.setStatus(j.getJobnum(),
-              WebserviceInfo.STATE_STOPPED_SERVERERROR);
-      return true;
-    }
-    if (_lex instanceof compbio.metadata.LimitExceededException)
-    {
-      wsInfo.appendProgressText(MessageManager.formatMessage(
-              "info.job_couldnt_be_run_exceeded_hard_limit", new String[]
-              { _lex.getMessage() }));
-      wsInfo.warnUser(_lex.getMessage(),
-              MessageManager.getString("warn.input_is_too_big"));
-      wsInfo.setStatus(WebserviceInfo.STATE_STOPPED_ERROR);
-      wsInfo.setStatus(j.getJobnum(), WebserviceInfo.STATE_STOPPED_ERROR);
-      return true;
-    }
-    if (_lex instanceof compbio.metadata.WrongParameterException)
-    {
-      wsInfo.warnUser(_lex.getMessage(),
-              MessageManager.getString("warn.invalid_job_param_set"));
-      wsInfo.appendProgressText(MessageManager.formatMessage(
-              "info.job_couldnt_be_run_incorrect_param_setting",
-              new String[]
-              { _lex.getMessage() }));
-      wsInfo.setStatus(WebserviceInfo.STATE_STOPPED_ERROR);
-      wsInfo.setStatus(j.getJobnum(), WebserviceInfo.STATE_STOPPED_ERROR);
-      return true;
-    }
-    // pass on to generic error handler
-    return false;
-  }
-
-  @Override
-  public boolean handleCollectionException(Exception ex, WsJob msjob,
-          WebserviceInfo wsInfo)
-  {
-    if (ex instanceof compbio.metadata.ResultNotAvailableException)
-    {
-      // job has failed for some reason - probably due to invalid
-      // parameters
-      Cache.log.debug(
-              "Results not available for finished job - marking as broken job.",
-              ex);
-      String status = msjob.getStatus();
-
-      msjob.setStatus(status
-              +
-              "\nResult not available. Probably due to invalid input or parameter settings. Server error message below:\n\n"
-                      + ex.getLocalizedMessage());
-      msjob.setState(WsJob.JobState.BROKEN);
-      return true;
-    }
-    return false;
-  }
 }