CCL Home Page
Up Directory CCL BabelApp.java
/**
 * BabelApp.java
 * This acts as the main interface between the Chem console GUI and the legacy 
 * Babel v 1.1 application
 * Created: Fri Apr 23 18:58:51 1999
 *
 * @author Nathan Stevens
 * @version
 */
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;
import com.sun.java.swing.*;
//import javax.swing.*;

public class BabelApp extends ChemAppThread 
{ 
  private String Mode;
  private String com;
  private int intype;
  private String infile;
  private String keyw1;
  private int outtype;
  private String outfile;
  private String keyw2; 
  private String rnum;
  private String adh;              
  private BabelPanel Bp;
  private String itype, otype;
  private ChemMessage m;
  private Process process;
 
  BabelApp(BabelPanel bp)
    {
      Bp = bp;
      m = new ChemMessage(Bp); 
     
      Mode    = Bp.getMode();                   // get the mode
      com     = Bp.getCommand();                // get the command
      infile  = Bp.getInfile();                 // get the infile
      keyw1   = Bp.getKeyw1();                  // get the first key word
      outfile = Bp.getOutfile();                // get the outfile
      keyw2   = Bp.getKeyw2();                  // get the second key word
      rnum    = Bp.getRn();                     // get the renum string
      adh     = Bp.getAdh();                    // get the add/del hydrogen 
                                                // variable 
    }

  //The run method
  public void run()
    {  
      // Convert the intype an out type String to intergers
      try
	{
          intype = Integer.parseInt(Bp.getIntype());
          outtype = Integer.parseInt(Bp.getOuttype());
	}

      catch(NumberFormatException e)
	{
          String[] emsg = {"Unable to Convert Input or Output entry",
                           "to an Integer. Please check values. "};
          m.errPrint(emsg, "NumberFormat Error");
          this.stop();
	}  
      checkfile();
       
    }

  synchronized private void checkfile()
    {
      // first thing we do is check to see if the input file really exist
      File inputfile = new File(infile);
      String[] emsg = {"The input file " + infile + " doesn't exist.",
                       "Please check that the correct inputfile name  was",
                       "entered..."};
 
      if(inputfile.isFile())
	{
          setCommand();            // this method set the command
	}
      else
	{
          m.errPrint(emsg, "File Error");
          this.stop();
	}
    }

  // method that set the command String according to the variables that were 
  // passed to the  constructor
  synchronized private void setCommand()
    { 
      itype = "-i" + getInputType();
      otype = "-o" + getOutputType();

      /*now we make a String of the commmand. the format is:
       babel  -i  [keywords] -o  [keywords2]
      */
      
      Vector commandv = new Vector();
  
      //seed the vector with required arguments
      commandv.addElement(com);
      commandv.addElement(itype);
      commandv.addElement(infile);
      commandv.addElement(otype);
      commandv.addElement(outfile);

      // Now add the rest of supplemental arguments
      if(keyw2 != null)
        commandv.addElement(keyw2);
      if(rnum != null)
        commandv.insertElementAt(rnum, 3);
      if(adh != null)
        commandv.insertElementAt(adh, 3);
      if(keyw1 != null)
        commandv.insertElementAt(keyw1, 3);

      // now copy the vector into an array of type String
      String[] command = new String[commandv.size()];
      commandv.copyInto(command);      

      runApp(command);
    }
  
  // Method to return the type of inpute
  synchronized private String getInputType()
    {
      switch(intype)
	{
	case 1:
          return "alc";
	case 2:
          return "prep";
	case 3:
          return "bs";
	case 4:
          return "bgf";
	case 5:
          return "car";
	case 6:
          return "boog";
	case 7:
          return "caccrt";
	case 8:
          return "cadpac";
	case 9:
          return "charmm";
	case 10:
          return "c3d1";
	case 11:
          return "c3d2";
	case 12:
          return "cssr";
	case 13:
          return "fdat";
	case 14:
          return "gstat";
	case 15:
          return "dock";
	case 16:
          return "dpdb";
	case 17:
          return "feat";
	case 18:
          return "fract";
	case 19:
          return "gamout";
	case 20:
          return "gzmat";
	case 21:
          return "guout";
	case 22:
          return "g94";
	case 23:
          return "gr96A";
	case 24:
          return "gr96N";
	case 25:
          return "hin";
	case 26:
          return "sdf";
	case 27:
          return "m3d";
	case 28:
          return "macmol";
	case 29:
          return "macmod";
	case 30:
          return "mocro";
	case 31:
          return "mm2in";
	case 32:
          return "mm2out";
	case 33:
          return "mm3";
	case 34:
          return "mmads";
	case 35:
          return "mdl";
	case 36:
          return "molen";
	case 37:
          return "mopcrt";
	case 38:
          return "mopint";
	case 39:
          return "mopout";
	case 40:
          return "pcmod";
	case 41:
          return "pdb";
	case 42:
          return "psin";
	case 43:
          return "psout";
	case 44:
          return "msf";
	case 45:
          return "schakal";
	case 46:
          return "shelx";
	case 47:
          return "smiles";
	case 48:
          return "spar";
	case 49:
          return "semi";
	case 50:
          return "spmm";
	case 51:
          return "mol";
	case 52:
          return "mol2";
	case 53:
          return "wiz";
	case 54:
          return "unixyz";
	case 55:
          return "xyz";
	case 56:
          return "xed";
        default:
	  {
            String[] emsg = {"This is not a supported input type"};
            m.errPrint(emsg, "Input Type Error");
	  }
	}

     this.stop();             // prevent any other method from executing
     
     //we never get to this point
     return "xxx";
    } 

  // Method to return type of output
  public String getOutputType()
    {
      switch(outtype)
	{
	  case 1:
           return "diag";
	  case 2:
           return "alc";
	  case 3:
           return "bs";
	  case 4:
           return "bgf";
	  case 5:
           return "bmin";
	  case 6:
           return "box";
	  case 7:
           return "caccrt";
	  case 8:
           return "cacint";
	  case 9:
           return "cache";
	  case 10:
           return "c3d1";
	  case 11:
           return "c3d2";
	  case 12:
           return "cdct";
	  case 13:
           return "dock";
	  case 14:
           return "wiz";
	  case 15:
           return "contmp";
	  case 16:
           return "cssr";
	  case 17:
           return "dpdb";
	  case 18:
           return "feat";
	  case 19:
           return "fhz";
	  case 20:
           return "gamin";
	  case 21:
           return "gcart";
	  case 22:
           return "gzmart";
	  case 23:
           return "gotmp";
	  case 24:
           return "gr96A";
	  case 25:
           return "gr96N";
	  case 26:
           return "hin";
	  case 27:
           return "icon";
	  case 28:
           return "idatm";
	  case 29:
           return "sdf";
	  case 30:
           return "m3d";
	  case 31:
           return "macmol";
	  case 32:
           return "macmod";
	  case 33:
           return "micro";
	  case 34:
           return "mm2in";
	  case 35:
           return "mm2out";
	  case 36:
           return "mm3";
	  case 37:
           return "mmads";
	  case 38:
           return "mdl";
	  case 39:
           return "miv";
	  case 40:
           return "mopcrt";
	  case 41:
           return "mopint";
	  case 42:
           return "csr";
	  case 43:
          return "pcmod";
	  case 44:
          return "pdb";
	  case 45:
          return "psz";
	  case 46:
          return "psc";
	  case 47:
          return "report";
	  case 48:
          return "smiles";
	  case 49:
          return "spar";
	  case 50:
          return "mol";
	  case 51:
          return "mol2";
	  case 52:
          return "maccs";
	  case 53:
          return "torlist";
	  case 54:
          return "tinker";
	  case 55:
          return "unixyz";
	  case 56:
          return "xyz";
	  case 57:
          return "xed";
	default:
	  {
            String[] emsg  = {"This is not a supported output type"};
            m.errPrint(emsg, "Output Type Error");
	  }
	}

      this.stop();           //prevent any other thing from executing

      //we never get to this point
      return "xxx";
    }
  
  // Method that runs the native babel app. it will check the mode of the babel
  // panel to see weather it is runing in local or native mode;

  synchronized public void runApp(String[] Command)
    {
      if(Mode.equals("local"))
	{
         try
	   {  
             /*test code
             for(int i = 0; i < Command.length; i++)
               System.out.println(Command[i]); */                                     
             process = Runtime.getRuntime().exec(Command);
             process.waitFor();

             String msg = "Conversion of " + infile + " completed.";  
             m.msgPrint(msg, "Status");
	   }    
         catch(IOException e)
           {
             String[] emsg = {"Babel failed to execute",""+ e};
             m.errPrint(emsg, "Babel Error");
           }
         catch(Exception e)
	   {
             String[] emsg = {"The following Error(s) occured", ""+e};
             m.errPrint(emsg, "Error");
	   }

	 //Check to if out put file was produced am move it to 
	 // the output directory.
	}     
    }
}
     
   















Modified: Mon May 24 17:39:20 1999 GMT
Page accessed 3664 times since Sun Jun 6 15:41:34 1999 GMT