⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pendingresults.java

📁 emboss的linux版本的源代码
💻 JAVA
字号:
/**********************************************************************  This library is free software; you can redistribute it and/or*  modify it under the terms of the GNU Library General Public*  License as published by the Free Software Foundation; either*  version 2 of the License, or (at your option) any later version.**  This library 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*  Library General Public License for more details.**  You should have received a copy of the GNU Library General Public*  License along with this library; if not, write to the*  Free Software Foundation, Inc., 59 Temple Place - Suite 330,*  Boston, MA  02111-1307, USA.**  @author: Copyright (C) Tim Carver*********************************************************************/package org.emboss.jemboss.soap;import org.emboss.jemboss.JembossParams;import org.emboss.jemboss.gui.*;import org.emboss.jemboss.programs.*;import org.emboss.jemboss.server.JembossServer;import java.util.*;import javax.swing.*;import java.awt.*;import java.awt.event.*;/**** Record the batch job status (pending/completed)**/public class PendingResults {  /** number of completed processes */  private int completed_jobs = 0;  /** number of peding processes */  private int running_jobs = 0;  /** jemboss properties */  private JembossParams mysettings;  /** pending results */  private Vector pendingResults;  /** job manager button */  private JButton jobButton = null;  /** job manager interactive/batch selection */  private JComboBox jobComboBox = null;  /** automatic job status updates */  private boolean autoUpdates = false;  private boolean withSoap = true;  /**  *  * @param mysettings   jemboss properties  * @param withSoap     false if we are not connecting to a server  *  */  public PendingResults(JembossParams mysettings, final boolean withSoap)  {    this(mysettings);    this.withSoap = withSoap;  }  /**  *  * @param mysettings	jemboss properties  *  */  public PendingResults(JembossParams mysettings)  {    this.mysettings = mysettings;    pendingResults = new Vector();  }   /**  *  * Standalone method to record start of new process.  *  */  public void addRunningJob()  {    running_jobs++;    if(jobButton != null)      jobButton.setText(jobStatus());  }  /**  *  * Standalone method to record end of new process.  *  */  public void deleteRunningJob()  {    running_jobs--;    completed_jobs++;     if(jobButton != null)      jobButton.setText(jobStatus());  }  /**  *  * Reset the pending and completed job status  *   */  public void resetCount()   {    completed_jobs = 0;    running_jobs = 0;    pendingResults.removeAllElements();  }  /**  *  * Add a pending process to the list  * @param res	jemboss process  *   */  public void addResult(JembossProcess res)   {    pendingResults.add(res);  }  /**  *  * Remove a pending process from the list  * @param res  jemboss process  *   */  public void removeResult(JembossProcess res)  {    pendingResults.remove(res);  }  /**  *  * Get the processes result  * @param s  	name of the dataset  * @return 	process object  *  */  public JembossProcess getResult(String s)  {    for (int i=0 ; i < pendingResults.size(); ++i)    {      JembossProcess er = (JembossProcess)pendingResults.get(i);      if(er.getJob().equals(s))        return er;    }    return null;  }  /**  *  * Get the processes description  * @return	processes description  *  */  public Hashtable descriptionHash()   {    Hashtable h = new Hashtable();    for (int i=0 ; i < pendingResults.size(); ++i)     {      JembossProcess er = (JembossProcess)pendingResults.get(i);      String desc = er.getDescription();      if(desc == null || desc.equals(""))         desc = " Pending";      h.put(er.getJob(),desc);    }    return h;  }  /**  *  * Update the number of completed and pending  * processes  *   */  public void updateJobStats()   {    int ic = 0;    int ir = 0;    for (int i=0 ; i < pendingResults.size(); ++i)     {      JembossProcess er = (JembossProcess)pendingResults.get(i);      if(er.isCompleted())          ++ic;       if(er.isRunning())          ++ir;     }    completed_jobs = ic;    running_jobs = ir;  }  /**  *  * Report the status of completed and running processes.  * @return	completed / pending numbers  *  */  public String jobStatus()   {    String sc =  new Integer(completed_jobs).toString();    String sr =  new Integer(running_jobs).toString();    String s;    if(completed_jobs == 0)     {      if(running_jobs == 0)         s = "Jobs: no pending jobs";      else         s = "Jobs: " + sr + " running";    }    else    {      if (running_jobs == 0)         s = "Jobs: " + sc + " completed";      else         s = "Jobs: " + sc + " completed / " + sr + " running";    }    return s;  }  /**  *  * Connect to the Jemboss server, and update the status of the jobs  * in the list. If a statusPanel is active, updates the text on that.  *  */  public void updateStatus()   {    Hashtable resToQuery = new Hashtable();    //initialize hash with project/jobid    for (int i=0 ; i < pendingResults.size(); ++i)     {      JembossProcess er = (JembossProcess)pendingResults.get(i);      resToQuery.put(er.getJob(),er.getProject());    }    Vector params = new Vector();    params.addElement("");    params.addElement("");    params.addElement(getVector(resToQuery));    try     {      final Hashtable hashStatus;      if(withSoap)      {        PrivateRequest eq = new PrivateRequest(mysettings,                          "update_result_status", params);        hashStatus = eq.getHash();      }      else      {        JembossServer js = new JembossServer(mysettings.getResultsHome());        Vector vecStatus = js.update_result_status("", "", resToQuery);        hashStatus = org.emboss.jemboss.gui.form.BuildJembossForm.convert(vecStatus, false);      }      // update the results      for(int i=0; i < pendingResults.size(); ++i)       {        JembossProcess er = (JembossProcess)pendingResults.get(i);        String jobid = er.getJob();        String s = (String)hashStatus.get(jobid);        if (mysettings.getDebug())           System.out.println("PendingResults: "+jobid+" : "+s);        if (s.equals("complete"))        {          er.complete();          String sd = (String)hashStatus.get(jobid+"-description");          if (!sd.equals(""))             er.setDescription(sd);        }      }      updateJobStats();      if (jobButton != null)         jobButton.setText(jobStatus());          }     catch (JembossSoapException e)    {      //throw new JembossSoapException();    }  }  /**  *  * Change a hashtable to a vector  *  */  private Vector getVector(Hashtable h)  {    Vector v = new Vector();    for(Enumeration e = h.keys() ; e.hasMoreElements() ;)    {      String s = (String)e.nextElement();      v.add(s);      v.add(h.get(s));    }    return v;  }  /**  *  * Automatically updating status manager with  * BatchUpdateTimer thread  *  @return 	true if automatically updating   *  */  public boolean isAutoUpdate()  {    return autoUpdates;  }  /**  *  * Automatically updating status manager with  * BatchUpdateTimer thread  * @param 	true if automatically updating   *  */  public void setAutoUpdate(boolean b)  {    autoUpdates = b;  }  /**  *  * Updates the mode on the combo box to reflect the current state  *  */  public void updateMode()   {    if (jobComboBox != null)       jobComboBox.setSelectedItem(mysettings.getCurrentMode());  }  /**  *  * Updates the mode on the combo box to reflect the  * requested value  * @param s	mode (batch /interactive) to set to  *  */  public void updateMode(String s)   {    mysettings.setCurrentMode(s);    if (jobComboBox != null)       jobComboBox.setSelectedItem(mysettings.getCurrentMode());  }  /**  *  * A panel to show the status of any jobs and to view them,  * and to set the mode.  * @param f 	parent frame, to which dialogs will be attached.  *  */  public JPanel statusPanel(final JFrame f)   {    final JPanel jobPanel = new JPanel(new BorderLayout());    ClassLoader cl = this.getClass().getClassLoader();    ImageIcon jobIcon = new ImageIcon(cl.getResource("images/Job_manager_button.gif"));    JLabel jobLabel = new JLabel(jobIcon);    jobLabel.setToolTipText("Batch Job Manager");    jobPanel.add(jobLabel,BorderLayout.WEST);    jobButton = new JButton("(No Current Jobs)");    jobButton.addActionListener(new ActionListener()    {      public void actionPerformed(ActionEvent e)      {        jobPanel.setCursor(new Cursor(Cursor.WAIT_CURSOR));        showPendingResults(f);        jobPanel.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));      }    });    jobPanel.add(jobButton,BorderLayout.CENTER);    jobComboBox = new JComboBox(mysettings.modeVector());    updateMode();    jobComboBox.addActionListener(new ActionListener()    {      public void actionPerformed(ActionEvent e)       {        JComboBox cb = (JComboBox)e.getSource();        String modeName = (String)cb.getSelectedItem();        mysettings.setCurrentMode(modeName);      }    });    jobPanel.add(jobComboBox,BorderLayout.EAST);    Dimension d = jobPanel.getPreferredSize();    d = new Dimension((int)d.getWidth(),                      jobIcon.getIconHeight()-2);    jobPanel.setPreferredSize(d);    return jobPanel;  }  /**  *  * Display the list of pending and completed batch results  * window  *  */  public void showPendingResults(JFrame f)   {    if ((completed_jobs == 0) && (running_jobs == 0))     {      JOptionPane.showMessageDialog(f,"You can only view pending results\n"				    + "if batch/background jobs have been\n"				    + "submitted in the current session.");    }     else     {      try      {        new ShowSavedResults(mysettings, this);      }       catch (JembossSoapException eae)       {        new AuthPopup(mysettings,f);      }    }  }   /**  *  * @return job status text  *  */  public String getStatus()  {    return jobButton.getText();  }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -