home *** CD-ROM | disk | FTP | other *** search
/ CD Actual Thematic 7: Programming / CDAT7.iso / Share / Java / JDesignerPro / Jdp3_0.exe / data1.cab / Program_Files / JaggServerCxn.class (.txt) < prev    next >
Encoding:
Java Class File  |  1999-04-09  |  38.9 KB  |  2,505 lines

  1. import java.beans.BeanInfo;
  2. import java.beans.EventSetDescriptor;
  3. import java.beans.Introspector;
  4. import java.beans.MethodDescriptor;
  5. import java.beans.PropertyDescriptor;
  6. import java.io.BufferedInputStream;
  7. import java.io.BufferedOutputStream;
  8. import java.io.ByteArrayOutputStream;
  9. import java.io.File;
  10. import java.io.FileInputStream;
  11. import java.io.FileOutputStream;
  12. import java.io.StringBufferInputStream;
  13. import java.lang.reflect.Constructor;
  14. import java.lang.reflect.Method;
  15. import java.net.InetAddress;
  16. import java.net.Socket;
  17. import java.sql.Connection;
  18. import java.sql.DatabaseMetaData;
  19. import java.sql.DriverManager;
  20. import java.sql.ResultSet;
  21. import java.sql.ResultSetMetaData;
  22. import java.sql.SQLException;
  23. import java.sql.Statement;
  24. import java.sql.Timestamp;
  25. import java.util.Date;
  26. import java.util.Enumeration;
  27. import java.util.Hashtable;
  28. import java.util.Properties;
  29. import java.util.StringTokenizer;
  30. import java.util.Vector;
  31. import java.util.zip.ZipEntry;
  32. import java.util.zip.ZipFile;
  33. import sun.tools.javac.Main;
  34.  
  35. class JaggServerCxn extends Thread {
  36.    private JaggServer server;
  37.    static JDPJob jaggServerJob;
  38.    JDPJaggUser user;
  39.    Socket thisSocket;
  40.    private BufferedOutputStream serverResponse;
  41.    private BufferedInputStream serverRequest;
  42.    String SERV = "";
  43.    String FCTN = "";
  44.    String FCTNP = "";
  45.    String DSN = "";
  46.    String CSTR = "";
  47.    String OUT = "zero1";
  48.    String SEP = "\u0003";
  49.    String MRW = "";
  50.    String UID = "";
  51.    String PWD = "";
  52.    // $FF: renamed from: DB java.lang.String
  53.    String field_0 = "";
  54.    String WSID = "";
  55.    String SQL = "";
  56.    // $FF: renamed from: K java.lang.String
  57.    String field_1;
  58.    String LSQL = "";
  59.    String TOUT = "";
  60.    String DLOG = "";
  61.    String NULL = "space";
  62.    String USER = "";
  63.    String SYS = "";
  64.    String jdbcDriver;
  65.    String jdbcPrefix;
  66.    String jdbcSuffix;
  67.    String objectName;
  68.    String jobName;
  69.    String jobNumber;
  70.    String methodName;
  71.    long thisJdbcConnectionNum;
  72.    boolean suspended;
  73.    static long expiryDate;
  74.    int[] insertType;
  75.    Vector insertData;
  76.    // $FF: renamed from: NL java.lang.String
  77.    static String field_2 = "\u0002";
  78.    static String EOT = "\u0001";
  79.    private char[] lineBuffer;
  80.    int totalCharsToRead;
  81.    int totalCharsWritten;
  82.    long requestNum;
  83.    Date startDate;
  84.    StringBuffer inLog;
  85.    StringBuffer errLog;
  86.    // $FF: renamed from: in java.io.BufferedInputStream
  87.    BufferedInputStream field_3;
  88.    BufferedInputStream err;
  89.    BufferedInputStream thisStream;
  90.    JaggServerCxn target;
  91.    boolean monitorFinished;
  92.    boolean captureSqlOutput;
  93.    StringBuffer sqlCapture;
  94.  
  95.    public JaggServerCxn(JaggServer var1, Socket var2, long var3) {
  96.       this.jdbcDriver = JaggServer.DEFAULTJDBC;
  97.       this.jdbcPrefix = JaggServer.DEFAULTCXN;
  98.       this.jdbcSuffix = "";
  99.       this.thisJdbcConnectionNum = -1L;
  100.       this.suspended = false;
  101.       this.monitorFinished = false;
  102.       this.captureSqlOutput = false;
  103.       this.server = var1;
  104.       this.thisSocket = var2;
  105.       this.requestNum = var3;
  106.  
  107.       try {
  108.          this.serverResponse = new BufferedOutputStream(this.thisSocket.getOutputStream());
  109.          this.serverRequest = new BufferedInputStream(this.thisSocket.getInputStream());
  110.          ((Thread)this).start();
  111.       } catch (Exception var6) {
  112.          ((Throwable)var6).printStackTrace();
  113.       }
  114.    }
  115.  
  116.    public JaggServerCxn(JaggServer var1, BufferedOutputStream var2, BufferedInputStream var3, long var4) {
  117.       this.jdbcDriver = JaggServer.DEFAULTJDBC;
  118.       this.jdbcPrefix = JaggServer.DEFAULTCXN;
  119.       this.jdbcSuffix = "";
  120.       this.thisJdbcConnectionNum = -1L;
  121.       this.suspended = false;
  122.       this.monitorFinished = false;
  123.       this.captureSqlOutput = false;
  124.       this.server = var1;
  125.       this.requestNum = var4;
  126.       this.thisSocket = null;
  127.       this.serverResponse = var2;
  128.       this.serverRequest = var3;
  129.       ((Thread)this).start();
  130.    }
  131.  
  132.    public JaggServerCxn(JaggServerCxn var1, BufferedInputStream var2) {
  133.       this.jdbcDriver = JaggServer.DEFAULTJDBC;
  134.       this.jdbcPrefix = JaggServer.DEFAULTCXN;
  135.       this.jdbcSuffix = "";
  136.       this.thisJdbcConnectionNum = -1L;
  137.       this.suspended = false;
  138.       this.monitorFinished = false;
  139.       this.captureSqlOutput = false;
  140.       this.target = var1;
  141.       this.thisStream = var2;
  142.       ((Thread)this).start();
  143.    }
  144.  
  145.    public void run() {
  146.       if (this.thisStream != null) {
  147.          this.monitorActiveJob();
  148.          this.monitorFinished = true;
  149.       } else {
  150.          try {
  151.             String var1 = "";
  152.             String var2 = "";
  153.  
  154.             while(!var2.startsWith("Close")) {
  155.                int var3 = 0;
  156.                char[] var4 = new char[10];
  157.  
  158.                for(int var5 = 0; var5 < 10; ++var5) {
  159.                   int var6 = this.serverRequest.read();
  160.                   var4[var3++] = (char)var6;
  161.                }
  162.  
  163.                var1 = String.copyValueOf(var4, 0, var3).trim();
  164.                this.totalCharsToRead = 0;
  165.                this.totalCharsWritten = 0;
  166.  
  167.                try {
  168.                   this.totalCharsToRead = Integer.parseInt(var1);
  169.                } catch (Exception var8) {
  170.                }
  171.  
  172.                if (this.totalCharsToRead <= 0) {
  173.                   var2 = "Close";
  174.                } else {
  175.                   var4 = new char[this.totalCharsToRead];
  176.  
  177.                   for(var3 = 0; var3 < this.totalCharsToRead; ++var3) {
  178.                      var4[var3] = (char)this.serverRequest.read();
  179.                   }
  180.  
  181.                   var2 = String.copyValueOf(var4, 0, var3);
  182.                   if (!var2.startsWith("Close") && this.processRequest(var2)) {
  183.                      this.serverResponse.flush();
  184.                      this.logUserFinishedAccess();
  185.                   }
  186.                }
  187.  
  188.                if (this.server.manager != null) {
  189.                   this.server.manager.connectionMgr.deRegisterRequest(this);
  190.                }
  191.             }
  192.          } catch (Exception var9) {
  193.             try {
  194.                this.writeLn("JAGG_RESULT_ROWS:0");
  195.                this.writeLn(field_2);
  196.                this.writeLn(EOT);
  197.                this.serverResponse.flush();
  198.             } catch (Exception var7) {
  199.             }
  200.  
  201.             if (this.server.manager != null) {
  202.                this.server.manager.connectionMgr.deRegisterRequest(this);
  203.             }
  204.          }
  205.  
  206.          if (this.user != null) {
  207.             this.user.removeActiveRequest(this);
  208.          }
  209.  
  210.          ((Thread)this).stop();
  211.       }
  212.    }
  213.  
  214.    private boolean processRequest(String var1) throws Exception {
  215.       this.parseRequest(var1);
  216.       if (!this.server.checkKey(this)) {
  217.          if (this.thisSocket != null) {
  218.             this.thisSocket.close();
  219.          }
  220.  
  221.          return false;
  222.       } else {
  223.          if (this.server.manager != null) {
  224.             this.server.manager.connectionMgr.registerRequest(this);
  225.             this.logUserAccess();
  226.          }
  227.  
  228.          if (this.FCTN.equals("ServerJob")) {
  229.             this.JaggServerJob();
  230.             return false;
  231.          } else if (this.FCTN.equals("Logout")) {
  232.             this.writeLn("JAGG_RESULT_ROWS:0");
  233.             this.writeLn(field_2);
  234.             this.writeLn(EOT);
  235.             return true;
  236.          } else if (this.FCTN.equals("Invoke")) {
  237.             int var3 = this.InvokeMethod();
  238.             this.writeLn("JAGG_RESULT_ROWS:" + Integer.toString(var3));
  239.             this.writeLn(field_2);
  240.             this.writeLn(EOT);
  241.             return true;
  242.          } else if (this.FCTN.equals("GetPlatform")) {
  243.             this.writeLn(File.separator);
  244.             this.writeLn(field_2);
  245.             this.writeLn(System.getProperty("os.name"));
  246.             this.writeLn(field_2);
  247.             this.writeLn("JAGG_RESULT_ROWS:2");
  248.             this.writeLn(field_2);
  249.             this.writeLn(EOT);
  250.             return true;
  251.          } else if (!this.FCTN.equals("System") && !this.FCTN.equals("UnixDaysRemaining") && !this.FCTN.equals("WriteToFile") && !this.FCTN.equals("GetDrives") && !this.FCTN.equals("ListFiles") && !this.FCTN.equals("RenameFile") && !this.FCTN.equals("RemoveFiles") && !this.FCTN.equals("CreateFolder") && !this.FCTN.equals("ArchiveApp") && !this.FCTN.equals("CheckLicense") && !this.FCTN.equals("NDSexecSQL") && !this.FCTN.startsWith("JavaBean") && !this.FCTN.startsWith("JarCommand") && !this.FCTN.startsWith("JarListFiles")) {
  252.             if (!this.FCTN.equals("ReadFromFile") && !this.FCTN.equals("GetStockData")) {
  253.                this.runSql();
  254.                return true;
  255.             } else {
  256.                this.specialFunction();
  257.                return true;
  258.             }
  259.          } else {
  260.             int var2 = this.specialFunction();
  261.             this.writeLn("JAGG_RESULT_ROWS:" + Integer.toString(var2));
  262.             this.writeLn(field_2);
  263.             this.writeLn(EOT);
  264.             return true;
  265.          }
  266.       }
  267.    }
  268.  
  269.    void logUserAccess() {
  270.       this.startDate = new Date();
  271.       if (this.thisSocket != null) {
  272.          try {
  273.             this.user = this.server.manager.userMgr.getUser(this.thisSocket.getInetAddress(), Integer.parseInt(this.USER), this.SYS);
  274.          } catch (Exception var1) {
  275.             this.user = this.server.manager.userMgr.getUser((InetAddress)null, Integer.parseInt(this.USER), this.SYS);
  276.          }
  277.       } else {
  278.          this.user = this.server.manager.userMgr.getUser((InetAddress)null, Integer.parseInt(this.USER), this.SYS);
  279.       }
  280.  
  281.       this.USER = Integer.toString(this.user.getJDPUser());
  282.       this.user.setLastConnectionStart(this.startDate);
  283.       this.user.addActiveRequest(this);
  284.       this.user.incrementTotalRequest();
  285.       this.user.incrementBytesReceived((long)this.totalCharsToRead);
  286.    }
  287.  
  288.    void logUserFinishedAccess() {
  289.       if (this.user != null) {
  290.          if (this.FCTN.equals("Logout")) {
  291.             this.server.manager.userMgr.removeUser(this.user);
  292.             return;
  293.          }
  294.  
  295.          this.user.incrementBytesTransmitted((long)this.totalCharsWritten);
  296.          this.user.setLastConnectionEnd(new Date());
  297.          this.user.setLastConnectionDuration(this.user.getLastConnectionEnd().getTime() - this.startDate.getTime());
  298.       }
  299.  
  300.    }
  301.  
  302.    private int specialFunction() {
  303.       try {
  304.          if (this.FCTN.equals("CheckLicense")) {
  305.             int var4 = 0;
  306.             var4 = this.server.checkLicense(this);
  307.             return var4;
  308.          }
  309.  
  310.          if (this.FCTN.equals("CheckDevelopers")) {
  311.             int var1 = 0;
  312.             var1 = this.server.checkDevelopers(this);
  313.             return var1;
  314.          }
  315.  
  316.          if (this.FCTN.equals("UnixDaysRemaining")) {
  317.             return this.UnixDaysRemaining();
  318.          }
  319.  
  320.          if (this.FCTN.equals("WriteToFile")) {
  321.             return this.JaggWriteToFile();
  322.          }
  323.  
  324.          if (this.FCTN.equals("ReadFromFile")) {
  325.             return this.JaggReadFromFile();
  326.          }
  327.  
  328.          if (this.FCTN.equals("GetDrives")) {
  329.             return this.JaggGetDrives();
  330.          }
  331.  
  332.          if (this.FCTN.equals("ListFiles")) {
  333.             return this.JaggListFiles();
  334.          }
  335.  
  336.          if (this.FCTN.equals("RenameFile")) {
  337.             return this.JaggRenameFile();
  338.          }
  339.  
  340.          if (this.FCTN.equals("RemoveFiles")) {
  341.             return this.JaggRemoveFiles();
  342.          }
  343.  
  344.          if (this.FCTN.equals("CreateFolder")) {
  345.             return this.JaggCreateFolder();
  346.          }
  347.  
  348.          if (this.FCTN.equals("ArchiveApp")) {
  349.             return this.JaggArchiveApp();
  350.          }
  351.  
  352.          if (this.FCTN.equals("JavaBeanGetParentClasses")) {
  353.             return this.JavaBeanGetParentClasses();
  354.          }
  355.  
  356.          if (this.FCTN.equals("JavaBeanGetConstructors")) {
  357.             return this.JavaBeanGetConstructors();
  358.          }
  359.  
  360.          if (this.FCTN.equals("JavaBeanGetMethods")) {
  361.             return this.JavaBeanGetMethods();
  362.          }
  363.  
  364.          if (this.FCTN.equals("JavaBeanGetParameterTypes")) {
  365.             return this.JavaBeanGetParameterTypes();
  366.          }
  367.  
  368.          if (this.FCTN.equals("JavaBeanGetProperties")) {
  369.             return this.JavaBeanGetProperties();
  370.          }
  371.  
  372.          if (this.FCTN.equals("JavaBeanGetEvents")) {
  373.             return this.JavaBeanGetEvents();
  374.          }
  375.  
  376.          if (this.FCTN.equals("JarCommand")) {
  377.             return this.JarCommand();
  378.          }
  379.  
  380.          if (this.FCTN.equals("JarListFiles")) {
  381.             return this.JarListFiles();
  382.          }
  383.  
  384.          if (this.FCTN.equals("System")) {
  385.             return this.JaggExecCommand();
  386.          }
  387.  
  388.          if (this.FCTN.startsWith("NDSexecSQL")) {
  389.             return this.NDSexecSQL();
  390.          }
  391.  
  392.          if (this.FCTN.equals("GetStockData")) {
  393.             return this.JaggGetStockData();
  394.          }
  395.       } catch (Exception var2) {
  396.          this.logException(var2);
  397.       }
  398.  
  399.       return 0;
  400.    }
  401.  
  402.    private void runSql() {
  403.       int var1 = 0;
  404.       Statement var2 = null;
  405.       Vector var3 = null;
  406.       Object var4 = null;
  407.       Connection var5 = null;
  408.       Object var6 = null;
  409.       if (this.jdbcSuffix != null && !this.jdbcSuffix.equals("") || this.DSN != null && !this.DSN.equals("")) {
  410.          if (this.jdbcDriver != null) {
  411.             try {
  412.                if (System.getProperty("java.vendor").startsWith("Microsoft") && this.jdbcDriver.equals("sun.jdbc.odbc.JdbcOdbcDriver")) {
  413.                   this.jdbcDriver = "com.ms.jdbc.odbc.JdbcOdbcDriver";
  414.                }
  415.  
  416.                Class.forName(this.jdbcDriver);
  417.             } catch (Exception var22) {
  418.                this.logException(var22);
  419.  
  420.                try {
  421.                   this.writeLn("JAGG_ERROR:Failed to load JDBC Driver:" + this.jdbcDriver);
  422.                   this.writeLn(field_2);
  423.                   this.writeLn(EOT);
  424.                } catch (Exception var15) {
  425.                }
  426.  
  427.                var1 = -1;
  428.                return;
  429.             }
  430.          }
  431.  
  432.          try {
  433.             boolean var39 = false;
  434.             int var41 = 0;
  435.  
  436.             while(!var39 && var41++ < 3) {
  437.                if (this.CSTR.equals(this.DSN)) {
  438.                   this.CSTR = "";
  439.                }
  440.  
  441.                String var44 = "";
  442.                if (this.CSTR.indexOf("DSN=") >= 0 && this.CSTR.indexOf("UID=") >= 0) {
  443.                   var44 = this.CSTR;
  444.                } else {
  445.                   if (this.DSN.equals("")) {
  446.                      var44 = "DSN=" + this.jdbcSuffix + ";";
  447.                   } else {
  448.                      var44 = "DSN=" + this.DSN + ";";
  449.                   }
  450.  
  451.                   if (this.CSTR.indexOf("UID=") < 0) {
  452.                      var44 = var44 + "UID=" + this.UID + ";";
  453.                   }
  454.  
  455.                   if (this.CSTR.indexOf("PWD=") < 0) {
  456.                      var44 = var44 + "PWD=" + this.PWD + ";";
  457.                   }
  458.  
  459.                   var44 = var44 + this.CSTR;
  460.                }
  461.  
  462.                var44 = var44.trim();
  463.                if (var41 < 2) {
  464.                   try {
  465.                      if (this.jdbcSuffix != null && !this.jdbcSuffix.equals("")) {
  466.                         var3 = this.getDbConnection(this.jdbcPrefix + this.jdbcSuffix, var44);
  467.                      } else {
  468.                         var3 = this.getDbConnection(this.server.connectionString + this.DSN, var44);
  469.                      }
  470.                   } catch (Exception var26) {
  471.                   }
  472.                } else if (this.jdbcSuffix != null && !this.jdbcSuffix.equals("")) {
  473.                   var3 = this.getDbConnection(this.jdbcPrefix + this.jdbcSuffix, var44);
  474.                } else {
  475.                   var3 = this.getDbConnection(this.server.connectionString + this.DSN, var44);
  476.                }
  477.  
  478.                try {
  479.                   var5 = (Connection)var3.elementAt(2);
  480.                   var5.setAutoCommit(true);
  481.                   var2 = var5.createStatement();
  482.                   var39 = true;
  483.                } catch (Exception var27) {
  484.                   if (var3 != null) {
  485.                      var3.setElementAt("Close", 1);
  486.                   }
  487.                }
  488.             }
  489.  
  490.             if (!this.MRW.equals("")) {
  491.                try {
  492.                   var2.setMaxRows(Integer.parseInt(this.MRW));
  493.                } catch (Exception var21) {
  494.                }
  495.             }
  496.  
  497.             if (!this.TOUT.equals("")) {
  498.                try {
  499.                   var2.setQueryTimeout(Integer.parseInt(this.TOUT));
  500.                } catch (Exception var20) {
  501.                }
  502.             }
  503.  
  504.             String var48 = this.SQL.toUpperCase();
  505.             if (this.FCTN.equals("")) {
  506.                boolean var50 = var2.execute(this.SQL);
  507.                if (var50) {
  508.                   ResultSet var60 = var2.getResultSet();
  509.                   var1 = this.dispResultSet(var60);
  510.                   if (this.LSQL != null && !this.LSQL.equals("")) {
  511.                      var2.execute(this.LSQL);
  512.                      this.LSQL = "";
  513.                   }
  514.                } else {
  515.                   var1 = var2.getUpdateCount();
  516.                   if (!var48.startsWith("UPDATE") && !var48.startsWith("INSERT") && !var48.startsWith("DELETE") && !var48.startsWith("SELECT") && var1 < 0) {
  517.                      var1 = 0;
  518.                   }
  519.                }
  520.             } else if (this.FCTN.equals("BINS")) {
  521.                this.loadBulkData((String)null);
  522.  
  523.                try {
  524.                   var5.prepareStatement(this.SQL.replace('#', ' '));
  525.  
  526.                   for(int var51 = 0; var51 < this.insertData.size(); ++var51) {
  527.                      String[] var61 = (String[])this.insertData.elementAt(var51);
  528.                      String var31 = this.SQL;
  529.  
  530.                      for(int var12 = 0; var12 < this.insertType.length; ++var12) {
  531.                         int var13 = var31.indexOf("#?");
  532.                         String var14 = "";
  533.                         if (this.insertType[var12] == 1 || this.insertType[var12] == 12 || this.insertType[var12] == -1) {
  534.                            var14 = "'";
  535.                         }
  536.  
  537.                         var31 = var31.substring(0, var13) + var14 + var61[var12] + var14 + var31.substring(var13 + 2);
  538.                      }
  539.  
  540.                      try {
  541.                         var2.execute(var31);
  542.                         var1 += var2.getUpdateCount();
  543.                         if (!var48.startsWith("UPDATE") && !var48.startsWith("INSERT") && !var48.startsWith("DELETE") && !var48.startsWith("SELECT") && var1 < 0) {
  544.                            var1 = 0;
  545.                         }
  546.                      } catch (Exception var19) {
  547.                         String var69 = ((Throwable)var19).toString();
  548.                         this.println(var69);
  549.                         this.println(var31);
  550.                      }
  551.                   }
  552.                } catch (Exception var25) {
  553.                   System.out.println(this.SQL);
  554.                   ((Throwable)var25).printStackTrace();
  555.                }
  556.             } else if (this.FCTN.equals("SQLDataSources")) {
  557.                ResultSet var52 = var2.executeQuery("SELECT sourcename FROM JDPDataSrc");
  558.                var1 = this.dispResultSet(var52);
  559.                if (var1 < 0) {
  560.                   var1 = 0;
  561.                }
  562.             } else if (this.FCTN.equals("SQLTables")) {
  563.                String[] var53 = this.parseFCTNP(this.FCTNP);
  564.                String[] var62 = new String[var53.length - 3];
  565.  
  566.                for(int var67 = 3; var67 < var53.length; ++var67) {
  567.                   var62[var67 - 3] = var53[var67];
  568.                }
  569.  
  570.                if (var53[2] == null) {
  571.                   var53[2] = "%";
  572.                }
  573.  
  574.                DatabaseMetaData var33 = var5.getMetaData();
  575.                ResultSet var68 = var33.getTables(var53[0], var53[1], var53[2], var62);
  576.                var1 = this.dispResultSet(var68);
  577.             } else if (this.FCTN.equals("SQLDriverName")) {
  578.                DatabaseMetaData var34 = var5.getMetaData();
  579.                if (var34 == null) {
  580.                   this.println("This JDBC driver does not support meta data calls and therefore may not be used with JDesignerPro");
  581.                   var1 = -1;
  582.                } else {
  583.                   String var54 = var34.getDatabaseProductName();
  584.                   if (var54 != null) {
  585.                      this.writeLn(var54);
  586.                      this.writeLn(field_2);
  587.                      var1 = 1;
  588.                   } else {
  589.                      var1 = -1;
  590.                   }
  591.                }
  592.             } else if (this.FCTN.equals("SQLColumns")) {
  593.                String[] var55 = this.parseFCTNP(this.FCTNP);
  594.                if (var55[2] == null) {
  595.                   var55[2] = "%";
  596.                }
  597.  
  598.                DatabaseMetaData var35 = var5.getMetaData();
  599.                ResultSet var63 = var35.getColumns(var55[0], var55[1], var55[2], var55[3]);
  600.                var1 = this.dispResultSet(var63);
  601.             } else if (this.FCTN.equals("SQLPrimaryKeys")) {
  602.                String[] var56 = this.parseFCTNP(this.FCTNP);
  603.                if (var56[2] == null) {
  604.                   var56[2] = "";
  605.                }
  606.  
  607.                try {
  608.                   DatabaseMetaData var36 = var5.getMetaData();
  609.                   ResultSet var64 = var36.getPrimaryKeys(var56[0], var56[1], var56[2]);
  610.                   var1 = this.dispResultSet(var64);
  611.                } catch (Exception var18) {
  612.                   var1 = 0;
  613.                }
  614.             } else if (this.FCTN.equals("getProcedures")) {
  615.                DatabaseMetaData var37 = var5.getMetaData();
  616.                if (var37 != null && var37.supportsStoredProcedures()) {
  617.                   String[] var57 = this.parseFCTNP(this.FCTNP);
  618.                   if (var57[2] == null) {
  619.                      var57[2] = "%";
  620.                   }
  621.  
  622.                   ResultSet var65 = var37.getProcedures(var57[0], var57[1], var57[2]);
  623.                   var1 = this.dispResultSet(var65);
  624.                } else {
  625.                   var1 = 0;
  626.                }
  627.             } else if (this.FCTN.equals("getProcedureColumns")) {
  628.                String[] var58 = this.parseFCTNP(this.FCTNP);
  629.                if (var58[2] == null) {
  630.                   var58[2] = "%";
  631.                }
  632.  
  633.                DatabaseMetaData var38 = var5.getMetaData();
  634.                ResultSet var66 = var38.getProcedureColumns(var58[0], var58[1], var58[2], var58[3]);
  635.                var1 = this.dispResultSet(var66);
  636.             } else if (this.FCTN.equals("CloseConnection")) {
  637.                try {
  638.                   var5.close();
  639.                   this.server.dbConnection.removeElement(var3);
  640.                   this.println("Closed connection to: " + (String)var3.elementAt(4));
  641.                   var1 = 1;
  642.                } catch (Exception var17) {
  643.                   var1 = 0;
  644.                }
  645.             } else {
  646.                var1 = this.specialFunction();
  647.             }
  648.          } catch (Exception var28) {
  649.             Exception var7 = var28;
  650.  
  651.             try {
  652.                String var8 = ((Throwable)var7).toString();
  653.                if (var8.indexOf("Informix") >= 0 && var8.indexOf("Ambiguous column") >= 0) {
  654.                   int var43 = this.SQL.toUpperCase().indexOf("ORDER BY");
  655.                   if (var43 > 0) {
  656.                      this.SQL = this.SQL.substring(0, var43);
  657.                   }
  658.  
  659.                   boolean var49 = var2.execute(this.SQL);
  660.                   if (var49) {
  661.                      ResultSet var59 = var2.getResultSet();
  662.                      var1 = this.dispResultSet(var59);
  663.                   }
  664.                } else {
  665.                   if (var8.indexOf("Invalid object name") >= 0) {
  666.                      if (var3 != null) {
  667.                         var3.setElementAt("Close", 1);
  668.                      }
  669.  
  670.                      var3 = null;
  671.                   }
  672.  
  673.                   int var9 = var8.indexOf(":");
  674.                   if (var9 > 0) {
  675.                      var8 = var8.substring(var9 + 1);
  676.                   } else if (var8.length() > 23) {
  677.                      var8 = var8.substring(23);
  678.                   }
  679.  
  680.                   String var10 = var8.toUpperCase();
  681.                   if (var10.indexOf("CONNECTIONTRANSACT") >= 0 || var10.indexOf("Invalid object name") >= 0) {
  682.                      this.println("Connection close requested");
  683.                      if (var3 != null) {
  684.                         var3.setElementAt("Close", 1);
  685.                      }
  686.  
  687.                      var3 = null;
  688.                   }
  689.  
  690.                   this.writeLn("JAGG_ERROR:" + var8);
  691.                   this.writeLn(field_2);
  692.                   this.writeLn(EOT);
  693.                   this.logException(var7);
  694.                   this.println(var8);
  695.                   DatabaseMetaData var32 = var5.getMetaData();
  696.                   if (var32 != null) {
  697.                      String var11 = var32.getDatabaseProductName();
  698.                      this.println("DBTYPE: " + var11);
  699.                   }
  700.  
  701.                   if (this.FCTN.equals("BINS")) {
  702.                      this.println(var4);
  703.                   } else {
  704.                      this.println(this.SQL);
  705.                   }
  706.  
  707.                   var1 = -1;
  708.                }
  709.             } catch (Exception var24) {
  710.                this.logException(var28);
  711.             }
  712.          }
  713.  
  714.          try {
  715.             if (!this.FCTN.equals("ReadFromFile")) {
  716.                this.writeLn("JAGG_RESULT_ROWS:");
  717.                this.writeLn(Integer.toString(var1));
  718.                this.writeLn(field_2);
  719.                this.writeLn(EOT);
  720.             }
  721.  
  722.             if (var2 != null) {
  723.                var2.close();
  724.             }
  725.  
  726.             if (var3 != null) {
  727.                var3.setElementAt("Inactive", 1);
  728.                Date var40 = new Date();
  729.                long var42 = var40.getTime() / 1000L;
  730.                var3.setElementAt(Long.toString(var42), 3);
  731.                return;
  732.             }
  733.          } catch (Exception var16) {
  734.             this.logException(var16);
  735.          }
  736.  
  737.       } else {
  738.          this.println("JAGG_ERROR:Datasource not specified for driver:" + this.jdbcDriver);
  739.          this.println(this.SQL);
  740.          this.println(this.FCTN);
  741.  
  742.          try {
  743.             this.writeLn("JAGG_ERROR:Datasource not specified for driver:" + this.jdbcDriver);
  744.             this.writeLn(field_2);
  745.             this.writeLn(EOT);
  746.          } catch (Exception var23) {
  747.          }
  748.  
  749.          var1 = -1;
  750.       }
  751.    }
  752.  
  753.    private int dispResultSet(ResultSet var1) throws SQLException {
  754.       int var2 = 0;
  755.       ResultSetMetaData var3 = var1.getMetaData();
  756.  
  757.       try {
  758.          int var4 = var3.getColumnCount();
  759.          this.writeLn("JAGG_COLUMN_DEFS:");
  760.  
  761.          for(int var5 = 1; var5 <= var4; ++var5) {
  762.             this.writeLn(this.SEP);
  763.             this.writeLn(Integer.toString(var3.getColumnType(var5)));
  764.          }
  765.  
  766.          this.writeLn(field_2);
  767.  
  768.          for(boolean var6 = var1.next(); var6; var6 = var1.next()) {
  769.             for(int var7 = 1; var7 <= var4; ++var7) {
  770.                if (var7 > 1) {
  771.                   this.writeLn(this.SEP);
  772.                }
  773.  
  774.                int var9 = var3.getColumnType(var7);
  775.                String var8;
  776.                if (var9 != 1 && var9 != 12 && var9 != -1) {
  777.                   if (var9 != 4 && var9 != 5 && var9 != -6 && var9 != -5) {
  778.                      if (var9 != 2 && var9 != 8) {
  779.                         if (var9 == 91) {
  780.                            java.sql.Date var16 = var1.getDate(var7);
  781.                            if (var16 != null) {
  782.                               var8 = Long.toString(((Date)var16).getTime());
  783.                            } else {
  784.                               var8 = "0";
  785.                            }
  786.                         } else if (var9 != 93 && var9 != 92) {
  787.                            var8 = var1.getString(var7);
  788.                         } else {
  789.                            Timestamp var17 = var1.getTimestamp(var7);
  790.                            if (var17 != null) {
  791.                               var8 = Long.toString(((Date)var17).getTime());
  792.                            } else {
  793.                               var8 = "0";
  794.                            }
  795.                         }
  796.                      } else {
  797.                         String var10 = var1.getString(var7);
  798.                         if (var10 != null) {
  799.                            int var11 = var10.indexOf(".");
  800.                            if (var11 > 0) {
  801.                               double var12 = Double.valueOf(var10.substring(0, var11));
  802.                               float var14 = Float.valueOf(var10);
  803.                               if ((float)var12 == var14) {
  804.                                  var8 = var10.substring(0, var10.indexOf("."));
  805.                               } else {
  806.                                  var8 = var10;
  807.                               }
  808.                            } else {
  809.                               var8 = var10;
  810.                            }
  811.                         } else {
  812.                            var8 = "0";
  813.                         }
  814.                      }
  815.                   } else {
  816.                      var8 = Integer.toString(var1.getInt(var7));
  817.                   }
  818.                } else {
  819.                   var8 = var1.getString(var7);
  820.                }
  821.  
  822.                this.writeLn(var8);
  823.             }
  824.  
  825.             if (var4 > 0) {
  826.                ++var2;
  827.                this.writeLn(field_2);
  828.             }
  829.          }
  830.  
  831.          if (var1 != null) {
  832.             var1.close();
  833.          }
  834.       } catch (Exception var15) {
  835.          this.logException(var15);
  836.       }
  837.  
  838.       return var2;
  839.    }
  840.  
  841.    private int NDSexecSQL() {
  842.       String var1 = "";
  843.       if (this.FCTN.startsWith("NDSExecSQL:")) {
  844.          var1 = this.FCTN.substring(11);
  845.       }
  846.  
  847.       JDPNDSInterface var2 = this.getNDSInterface();
  848.       if (var2 == null) {
  849.          String var8 = "NDS Interface is not available.";
  850.  
  851.          try {
  852.             this.writeLn("JAGG_ERROR:" + var8);
  853.          } catch (Exception var6) {
  854.             this.logException(var6);
  855.          }
  856.  
  857.          this.println(var8);
  858.          return -1;
  859.       } else {
  860.          int var3 = -1;
  861.          Vector var4 = new Vector();
  862.          if (var1.equals("")) {
  863.             var3 = var2.execSQL(this.SQL, var4);
  864.             if (var3 == -1 && var4.size() == 1) {
  865.                var4.setElementAt("JAGG_ERROR:" + (String)var4.elementAt(0) + field_2, 0);
  866.             }
  867.          } else {
  868.             String[] var5 = this.parseFCTNP(this.FCTNP);
  869.             if (var1.equals("SQLTables")) {
  870.                var3 = var2.getLayouts(var5[0], var4);
  871.             } else if (var1.equals("SQLColumns")) {
  872.                var3 = var2.getFields(var5[0], var5[1], var4);
  873.             }
  874.          }
  875.  
  876.          try {
  877.             for(int var9 = 0; var9 < var4.size(); ++var9) {
  878.                this.writeLn((String)var4.elementAt(var9));
  879.             }
  880.          } catch (Exception var7) {
  881.             this.logException(var7);
  882.          }
  883.  
  884.          this.releaseNDSInterface(var2);
  885.          return var3;
  886.       }
  887.    }
  888.  
  889.    private JDPNDSInterface getNDSInterface() {
  890.       if (this.server.NDSusername.equals("")) {
  891.          String[] var1 = this.parseFCTNP(this.FCTNP);
  892.          if (var1.length > 1 && var1[1] != null && !var1[1].equals("")) {
  893.             this.server.NDSusername = var1[0];
  894.             this.server.NDSpassword = var1[1];
  895.             this.server.manager.savePrevJobNames();
  896.          }
  897.       }
  898.  
  899.       for(int var5 = 0; var5 < this.server.ndsInstances.size(); ++var5) {
  900.          Vector var2 = (Vector)this.server.ndsInstances.elementAt(var5);
  901.          if (((String)var2.elementAt(0)).equals(this.server.NDSusername + ";" + this.server.NDSpassword)) {
  902.             String var3 = (String)var2.elementAt(1);
  903.             if (var3.equals("Idle")) {
  904.                var2.setElementAt("Active", 1);
  905.                return (JDPNDSInterface)var2.elementAt(2);
  906.             }
  907.          }
  908.       }
  909.  
  910.       if (this.server.manager.NDSPath != null) {
  911.          try {
  912.             JDPNDSInterface var6 = new JDPNDSInterface(this.server.manager, jaggServerJob, this.server.manager.NDSPath, this.server.NDSusername, this.server.NDSpassword);
  913.             Vector var7 = new Vector();
  914.             var7.addElement(this.server.NDSusername + ";" + this.server.NDSpassword);
  915.             var7.addElement("Active");
  916.             var7.addElement(var6);
  917.             this.server.ndsInstances.addElement(var7);
  918.             return var6;
  919.          } catch (Exception var4) {
  920.             this.println("Failed to create NDS Interface.");
  921.             this.logException(var4);
  922.          }
  923.       }
  924.  
  925.       return null;
  926.    }
  927.  
  928.    public void releaseNDSInterface(JDPNDSInterface var1) {
  929.       for(int var2 = 0; var2 < this.server.ndsInstances.size(); ++var2) {
  930.          Vector var3 = (Vector)this.server.ndsInstances.elementAt(var2);
  931.          JDPNDSInterface var4 = (JDPNDSInterface)var3.elementAt(2);
  932.          if (var4.equals(var1)) {
  933.             var3.setElementAt("Idle", 1);
  934.          }
  935.       }
  936.  
  937.    }
  938.  
  939.    int UnixDaysRemaining() {
  940.       if (this.server.UnixTrialDays == 0) {
  941.          return 1;
  942.       } else {
  943.          try {
  944.             if (expiryDate == 0L) {
  945.                FileInputStream var9 = new FileInputStream("System" + File.separator + "System.cfg");
  946.                byte[] var12 = new byte[var9.available()];
  947.                var9.read(var12);
  948.  
  949.                for(int var3 = 0; var3 < var12.length; ++var3) {
  950.                   var12[var3] = (byte)(var12[var3] - 15);
  951.                }
  952.  
  953.                String var14 = new String(var12, 0);
  954.                var9.close();
  955.                expiryDate = Long.valueOf(var14);
  956.             }
  957.  
  958.             long var10 = (new Date()).getTime() / 1000L;
  959.             if (var10 > expiryDate) {
  960.                return 0;
  961.             } else {
  962.                long var13 = (expiryDate - var10) / 86400L;
  963.                if (var13 < 0L) {
  964.                   var13 = 0L;
  965.                }
  966.  
  967.                return (int)var13;
  968.             }
  969.          } catch (Exception var8) {
  970.             try {
  971.                FileOutputStream var1 = new FileOutputStream("System" + File.separator + "System.cfg");
  972.                long var2 = (new Date()).getTime() / 1000L;
  973.                var2 += (long)(this.server.UnixTrialDays * 24 * 60 * 60);
  974.                String var4 = Long.toString(var2);
  975.                byte[] var5 = new byte[var4.length()];
  976.                var4.getBytes(0, var5.length, var5, 0);
  977.  
  978.                for(int var6 = 0; var6 < var5.length; ++var6) {
  979.                   var5[var6] = (byte)(var5[var6] + 15);
  980.                }
  981.  
  982.                var1.write(var5);
  983.                var1.close();
  984.                return this.server.UnixTrialDays;
  985.             } catch (Exception var7) {
  986.                return this.server.UnixTrialDays;
  987.             }
  988.          }
  989.       }
  990.    }
  991.  
  992.    int JaggWriteToFile() {
  993.       String[] var1 = this.parseFCTNP(this.FCTNP);
  994.  
  995.       try {
  996.          if (var1[0].lastIndexOf(File.separator) > 0) {
  997.             String var2 = var1[0].substring(0, var1[0].lastIndexOf(File.separator));
  998.             File var3 = new File(var2);
  999.             var3.mkdirs();
  1000.          }
  1001.  
  1002.          FileOutputStream var7 = new FileOutputStream(var1[0]);
  1003.          int var8 = this.SQL.length();
  1004.          byte[] var4 = new byte[var8];
  1005.          this.SQL.getBytes(0, var8, var4, 0);
  1006.          var7.write(var4);
  1007.          var7.close();
  1008.          return 0;
  1009.       } catch (Exception var6) {
  1010.          this.println("Could not write to: " + var1[0]);
  1011.          this.logException(var6);
  1012.  
  1013.          try {
  1014.             this.writeLn("JAGG_ERROR:FILE_WRITE_FAILED");
  1015.             this.writeLn(field_2);
  1016.             this.writeLn(EOT);
  1017.          } catch (Exception var5) {
  1018.          }
  1019.  
  1020.          return -1;
  1021.       }
  1022.    }
  1023.  
  1024.    int JaggReadFromFile() {
  1025.       String[] var1 = this.parseFCTNP(this.FCTNP);
  1026.  
  1027.       try {
  1028.          FileInputStream var2 = new FileInputStream(var1[0]);
  1029.          int var3 = var2.available();
  1030.          byte[] var4 = new byte[var3];
  1031.          var2.read(var4, 0, var3);
  1032.          String var5 = new String(var4, 0);
  1033.          var2.close();
  1034.          this.writeLn(var5);
  1035.          this.writeLn("JAGG");
  1036.          this.writeLn("EOF");
  1037.          return 0;
  1038.       } catch (Exception var7) {
  1039.          this.println("Could not read from: " + var1[0]);
  1040.  
  1041.          try {
  1042.             this.writeLn("JAGG_ERROR:FILE_READ_FAILED");
  1043.             this.writeLn("JAGG");
  1044.             this.writeLn("EOF");
  1045.          } catch (Exception var6) {
  1046.          }
  1047.  
  1048.          return -1;
  1049.       }
  1050.    }
  1051.  
  1052.    int JaggGetDrives() {
  1053.       int var1 = 0;
  1054.       if (System.getProperty("os.name").toUpperCase().indexOf("WINDOW") >= 0) {
  1055.          String var3 = "CDEFGHIJKLMNOPQRSTUVWXYZ";
  1056.  
  1057.          for(int var4 = 0; var4 < var3.length(); ++var4) {
  1058.             File var2 = new File(var3.substring(var4, var4 + 1) + ":\\");
  1059.             if (var2.isDirectory()) {
  1060.                try {
  1061.                   this.writeLn(var3.substring(var4, var4 + 1) + ":" + field_2);
  1062.                   ++var1;
  1063.                } catch (Exception var7) {
  1064.                }
  1065.             }
  1066.          }
  1067.       } else if (System.getProperty("os.name").toUpperCase().indexOf("NETWARE") >= 0) {
  1068.          File var8 = new File("SYS:");
  1069.          if (var8.isDirectory()) {
  1070.             try {
  1071.                this.writeLn("SYS:" + field_2);
  1072.                ++var1;
  1073.             } catch (Exception var6) {
  1074.             }
  1075.          }
  1076.       } else {
  1077.          File var9 = new File("\\");
  1078.          if (var9.isDirectory()) {
  1079.             try {
  1080.                this.writeLn("\\" + field_2);
  1081.                ++var1;
  1082.             } catch (Exception var5) {
  1083.             }
  1084.          }
  1085.       }
  1086.  
  1087.       return var1;
  1088.    }
  1089.  
  1090.    int JaggListFiles() {
  1091.       String[] var2 = this.parseFCTNP(this.FCTNP);
  1092.       File var1;
  1093.       if (var2.length == 1) {
  1094.          var1 = new File(var2[0]);
  1095.       } else {
  1096.          if (var2.length != 2) {
  1097.             return 0;
  1098.          }
  1099.  
  1100.          var1 = new File(var2[0], var2[1]);
  1101.       }
  1102.  
  1103.       String[] var3 = var1.list();
  1104.       if (var3 == null) {
  1105.          return 0;
  1106.       } else {
  1107.          try {
  1108.             for(int var5 = 0; var5 < var3.length; ++var5) {
  1109.                File var4 = new File(var1, var3[var5]);
  1110.                if (var4.isDirectory()) {
  1111.                   this.writeLn(var3[var5] + this.SEP + "D" + this.SEP + Long.toString(var4.length()) + this.SEP + Long.toString(var4.lastModified()) + field_2);
  1112.                }
  1113.             }
  1114.  
  1115.             for(int var6 = 0; var6 < var3.length; ++var6) {
  1116.                File var8 = new File(var1, var3[var6]);
  1117.                if (!var8.isDirectory()) {
  1118.                   this.writeLn(var3[var6] + this.SEP + "F" + this.SEP + Long.toString(var8.length()) + this.SEP + Long.toString(var8.lastModified()) + field_2);
  1119.                }
  1120.             }
  1121.          } catch (Exception var7) {
  1122.          }
  1123.  
  1124.          return var3.length;
  1125.       }
  1126.    }
  1127.  
  1128.    int JavaBeanGetParentClasses() {
  1129.       String[] var1 = this.parseFCTNP(this.FCTNP);
  1130.       int var2 = 0;
  1131.  
  1132.       try {
  1133.          for(int var4 = 0; var4 < var1.length; ++var4) {
  1134.             int var3 = var1[var4].indexOf("[");
  1135.             if (var3 > 0) {
  1136.                var1[var4] = var1[var4].substring(0, var3);
  1137.             }
  1138.  
  1139.             Class var5 = null;
  1140.             if (var1[var4].equals("int")) {
  1141.                var5 = Integer.TYPE;
  1142.             }
  1143.  
  1144.             if (var1[var4].equals("boolean")) {
  1145.                var5 = Boolean.TYPE;
  1146.             }
  1147.  
  1148.             if (var1[var4].equals("char")) {
  1149.                var5 = Character.TYPE;
  1150.             }
  1151.  
  1152.             if (var1[var4].equals("byte")) {
  1153.                var5 = Byte.TYPE;
  1154.             }
  1155.  
  1156.             if (var1[var4].equals("short")) {
  1157.                var5 = Short.TYPE;
  1158.             }
  1159.  
  1160.             if (var1[var4].equals("long")) {
  1161.                var5 = Long.TYPE;
  1162.             }
  1163.  
  1164.             if (var1[var4].equals("float")) {
  1165.                var5 = Float.TYPE;
  1166.             }
  1167.  
  1168.             if (var1[var4].equals("double")) {
  1169.                var5 = Double.TYPE;
  1170.             }
  1171.  
  1172.             if (var1[var4].equals("void")) {
  1173.                var5 = Void.TYPE;
  1174.             }
  1175.  
  1176.             if (var5 == null) {
  1177.                var5 = Class.forName(var1[var4]);
  1178.             }
  1179.  
  1180.             this.writeLn(var1[var4]);
  1181.  
  1182.             while(var5 != null) {
  1183.                this.writeLn(this.SEP);
  1184.                this.writeLn(var5.getName());
  1185.                var5 = var5.getSuperclass();
  1186.             }
  1187.  
  1188.             ++var2;
  1189.             this.writeLn(field_2);
  1190.          }
  1191.       } catch (Exception var6) {
  1192.       }
  1193.  
  1194.       return var2;
  1195.    }
  1196.  
  1197.    int JavaBeanGetConstructors() {
  1198.       String[] var1 = this.parseFCTNP(this.FCTNP);
  1199.       int var2 = 0;
  1200.  
  1201.       try {
  1202.          for(int var4 = 0; var4 < var1.length; ++var4) {
  1203.             int var3 = var1[var4].indexOf("[");
  1204.             if (var3 > 0) {
  1205.                var1[var4] = var1[var4].substring(0, var3);
  1206.             }
  1207.  
  1208.             Class var5 = null;
  1209.             if (var1[var4].equals("int")) {
  1210.                var5 = Integer.TYPE;
  1211.             }
  1212.  
  1213.             if (var1[var4].equals("boolean")) {
  1214.                var5 = Boolean.TYPE;
  1215.             }
  1216.  
  1217.             if (var1[var4].equals("char")) {
  1218.                var5 = Character.TYPE;
  1219.             }
  1220.  
  1221.             if (var1[var4].equals("byte")) {
  1222.                var5 = Byte.TYPE;
  1223.             }
  1224.  
  1225.             if (var1[var4].equals("short")) {
  1226.                var5 = Short.TYPE;
  1227.             }
  1228.  
  1229.             if (var1[var4].equals("long")) {
  1230.                var5 = Long.TYPE;
  1231.             }
  1232.  
  1233.             if (var1[var4].equals("float")) {
  1234.                var5 = Float.TYPE;
  1235.             }
  1236.  
  1237.             if (var1[var4].equals("double")) {
  1238.                var5 = Double.TYPE;
  1239.             }
  1240.  
  1241.             if (var1[var4].equals("void")) {
  1242.                var5 = Void.TYPE;
  1243.             }
  1244.  
  1245.             if (var5 == null) {
  1246.                var5 = Class.forName(var1[var4]);
  1247.             }
  1248.  
  1249.             Constructor[] var6 = var5.getConstructors();
  1250.  
  1251.             for(int var7 = 0; var7 < var6.length; ++var7) {
  1252.                this.writeLn(var1[var4]);
  1253.                Class[] var8 = var6[var7].getParameterTypes();
  1254.  
  1255.                for(int var9 = 0; var9 < var8.length; ++var9) {
  1256.                   this.writeLn(this.SEP);
  1257.                   this.writeLn(var8[var9].getName());
  1258.                }
  1259.  
  1260.                this.writeLn(field_2);
  1261.                ++var2;
  1262.             }
  1263.  
  1264.             this.writeLn(" " + field_2);
  1265.          }
  1266.       } catch (Exception var10) {
  1267.       }
  1268.  
  1269.       return var2;
  1270.    }
  1271.  
  1272.    int JavaBeanGetMethods() {
  1273.       String[] var1 = this.parseFCTNP(this.FCTNP);
  1274.       int var2 = 0;
  1275.  
  1276.       try {
  1277.          for(int var6 = 1; var6 < var1.length; ++var6) {
  1278.             int var4 = var1[var6].indexOf("[");
  1279.             if (var4 > 0) {
  1280.                var1[var6] = var1[var6].substring(0, var4);
  1281.             }
  1282.  
  1283.             BeanInfo var3 = this.getBeanInfo(var1[0], var1[var6]);
  1284.             MethodDescriptor[] var7 = var3.getMethodDescriptors();
  1285.  
  1286.             for(int var8 = 0; var8 < var7.length; ++var8) {
  1287.                String var5 = var7[var8].getMethod().getDeclaringClass().getName();
  1288.                if (var5.equals(var1[var6])) {
  1289.                   this.writeLn(" " + this.SEP);
  1290.                   this.writeLn(var5);
  1291.                   this.writeLn(this.SEP);
  1292.                   this.writeLn(var7[var8].getMethod().getName());
  1293.                   this.writeLn(this.SEP);
  1294.                   this.writeLn(Integer.toString(var7[var8].getMethod().getModifiers()));
  1295.                   this.writeLn(this.SEP);
  1296.                   this.writeLn(var7[var8].getMethod().getReturnType().getName());
  1297.                   Class[] var9 = var7[var8].getMethod().getParameterTypes();
  1298.  
  1299.                   for(int var10 = 0; var10 < var9.length; ++var10) {
  1300.                      this.writeLn(this.SEP);
  1301.                      this.writeLn(var9[var10].getName());
  1302.                   }
  1303.  
  1304.                   this.writeLn(field_2);
  1305.                   ++var2;
  1306.                }
  1307.             }
  1308.  
  1309.             this.writeLn(" " + field_2);
  1310.          }
  1311.       } catch (Exception var11) {
  1312.          ((Throwable)var11).printStackTrace();
  1313.       }
  1314.  
  1315.       return var2;
  1316.    }
  1317.  
  1318.    int JavaBeanGetParameterTypes() {
  1319.       String[] var1 = this.parseFCTNP(this.FCTNP);
  1320.       int var2 = 0;
  1321.  
  1322.       try {
  1323.          for(int var5 = 2; var5 < var1.length; ++var5) {
  1324.             int var4 = var1[var5].indexOf("[");
  1325.             if (var4 > 0) {
  1326.                var1[var5] = var1[var5].substring(0, var4);
  1327.             }
  1328.  
  1329.             BeanInfo var3 = this.getBeanInfo(var1[0], var1[var5]);
  1330.             MethodDescriptor[] var6 = var3.getMethodDescriptors();
  1331.  
  1332.             for(int var7 = 0; var7 < var6.length; ++var7) {
  1333.                if (var1[1].equals("") || var1[1].equals(var6[var7].getMethod().getName())) {
  1334.                   this.writeLn(var1[var5]);
  1335.                   this.writeLn(this.SEP);
  1336.                   Class[] var8 = var6[var7].getMethod().getParameterTypes();
  1337.                   this.writeLn(var6[var7].getMethod().getName());
  1338.  
  1339.                   for(int var9 = 0; var9 < var8.length; ++var9) {
  1340.                      this.writeLn(this.SEP);
  1341.                      this.writeLn(var8[var9].getName());
  1342.                   }
  1343.  
  1344.                   this.writeLn(field_2);
  1345.                   ++var2;
  1346.                }
  1347.             }
  1348.  
  1349.             this.writeLn(" " + field_2);
  1350.          }
  1351.       } catch (Exception var10) {
  1352.       }
  1353.  
  1354.       return var2;
  1355.    }
  1356.  
  1357.    int JavaBeanGetProperties() {
  1358.       String[] var1 = this.parseFCTNP(this.FCTNP);
  1359.       int var2 = 0;
  1360.  
  1361.       try {
  1362.          for(int var5 = 1; var5 < var1.length; ++var5) {
  1363.             int var4 = var1[var5].indexOf("[");
  1364.             if (var4 > 0) {
  1365.                var1[var5] = var1[var5].substring(0, var4);
  1366.             }
  1367.  
  1368.             BeanInfo var3 = this.getBeanInfo(var1[0], var1[var5]);
  1369.             PropertyDescriptor[] var6 = var3.getPropertyDescriptors();
  1370.  
  1371.             for(int var7 = 0; var7 < var6.length; ++var7) {
  1372.                this.writeLn(var1[var5]);
  1373.                this.writeLn(this.SEP);
  1374.                this.writeLn(var6[var7].getName());
  1375.                this.writeLn(this.SEP);
  1376.                this.writeLn(var6[var7].getPropertyType().getName());
  1377.                this.writeLn(field_2);
  1378.                ++var2;
  1379.             }
  1380.  
  1381.             this.writeLn(" " + field_2);
  1382.          }
  1383.       } catch (Exception var8) {
  1384.       }
  1385.  
  1386.       return var2;
  1387.    }
  1388.  
  1389.    int JavaBeanGetEvents() {
  1390.       String[] var1 = this.parseFCTNP(this.FCTNP);
  1391.       int var2 = 0;
  1392.  
  1393.       try {
  1394.          for(int var5 = 1; var5 < var1.length; ++var5) {
  1395.             int var4 = var1[var5].indexOf("[");
  1396.             if (var4 > 0) {
  1397.                var1[var5] = var1[var5].substring(0, var4);
  1398.             }
  1399.  
  1400.             BeanInfo var3 = this.getBeanInfo(var1[0], var1[var5]);
  1401.             EventSetDescriptor[] var6 = var3.getEventSetDescriptors();
  1402.             var3.getMethodDescriptors();
  1403.  
  1404.             for(int var7 = 0; var7 < var6.length; ++var7) {
  1405.                this.writeLn(var1[var5]);
  1406.                this.writeLn(this.SEP);
  1407.                this.writeLn(var6[var7].getName());
  1408.                this.writeLn(this.SEP);
  1409.                this.writeLn(var6[var7].getAddListenerMethod().getName());
  1410.                Method[] var8 = var6[var7].getListenerMethods();
  1411.  
  1412.                for(int var9 = 0; var9 < var8.length; ++var9) {
  1413.                   this.writeLn(this.SEP);
  1414.                   this.writeLn(var8[var9].getName());
  1415.                   this.writeLn("(");
  1416.                   Class[] var10 = var8[var9].getParameterTypes();
  1417.  
  1418.                   for(int var11 = 0; var11 < var10.length; ++var11) {
  1419.                      if (var11 > 0) {
  1420.                         this.writeLn(", ");
  1421.                      }
  1422.  
  1423.                      if (var10[var11].getName().startsWith("java.awt.event.")) {
  1424.                         this.writeLn(var10[var11].getName().substring(15));
  1425.                      } else {
  1426.                         this.writeLn(var10[var11].getName());
  1427.                      }
  1428.  
  1429.                      if (var11 == 0) {
  1430.                         this.writeLn(" e");
  1431.                      } else {
  1432.                         this.writeLn(" p" + Integer.toString(var11));
  1433.                      }
  1434.                   }
  1435.  
  1436.                   this.writeLn(")");
  1437.                }
  1438.  
  1439.                this.writeLn(field_2);
  1440.                ++var2;
  1441.             }
  1442.  
  1443.             this.writeLn(" " + field_2);
  1444.          }
  1445.       } catch (Exception var12) {
  1446.          ((Throwable)var12).printStackTrace();
  1447.       }
  1448.  
  1449.       return var2;
  1450.    }
  1451.  
  1452.    BeanInfo getBeanInfo(String var1, String var2) throws Exception {
  1453.       int var3 = var1.indexOf("[");
  1454.       if (var3 > 0) {
  1455.          var1 = var1.substring(0, var3);
  1456.       }
  1457.  
  1458.       var3 = var2.indexOf("[");
  1459.       if (var3 > 0) {
  1460.          var2 = var2.substring(0, var3);
  1461.       }
  1462.  
  1463.       Class var4 = null;
  1464.       if (var2.equals("int")) {
  1465.          var4 = Integer.TYPE;
  1466.       }
  1467.  
  1468.       if (var2.equals("boolean")) {
  1469.          var4 = Boolean.TYPE;
  1470.       }
  1471.  
  1472.       if (var2.equals("char")) {
  1473.          var4 = Character.TYPE;
  1474.       }
  1475.  
  1476.       if (var2.equals("byte")) {
  1477.          var4 = Byte.TYPE;
  1478.       }
  1479.  
  1480.       if (var2.equals("short")) {
  1481.          var4 = Short.TYPE;
  1482.       }
  1483.  
  1484.       if (var2.equals("long")) {
  1485.          var4 = Long.TYPE;
  1486.       }
  1487.  
  1488.       if (var2.equals("float")) {
  1489.          var4 = Float.TYPE;
  1490.       }
  1491.  
  1492.       if (var2.equals("double")) {
  1493.          var4 = Double.TYPE;
  1494.       }
  1495.  
  1496.       if (var2.equals("void")) {
  1497.          var4 = Void.TYPE;
  1498.       }
  1499.  
  1500.       if (var4 == null) {
  1501.          var4 = Class.forName(var2);
  1502.       }
  1503.  
  1504.       if (var1.equals("*ALL")) {
  1505.          return Introspector.getBeanInfo(var4);
  1506.       } else if (var1.equals("*SUPER")) {
  1507.          return Introspector.getBeanInfo(var4, var4.getSuperclass());
  1508.       } else {
  1509.          Class var5 = null;
  1510.          if (var1.equals("int")) {
  1511.             var5 = Integer.TYPE;
  1512.          }
  1513.  
  1514.          if (var1.equals("boolean")) {
  1515.             var5 = Boolean.TYPE;
  1516.          }
  1517.  
  1518.          if (var1.equals("char")) {
  1519.             var5 = Character.TYPE;
  1520.          }
  1521.  
  1522.          if (var1.equals("byte")) {
  1523.             var5 = Byte.TYPE;
  1524.          }
  1525.  
  1526.          if (var1.equals("short")) {
  1527.             var5 = Short.TYPE;
  1528.          }
  1529.  
  1530.          if (var1.equals("long")) {
  1531.             var5 = Long.TYPE;
  1532.          }
  1533.  
  1534.          if (var1.equals("float")) {
  1535.             var5 = Float.TYPE;
  1536.          }
  1537.  
  1538.          if (var1.equals("double")) {
  1539.             var5 = Double.TYPE;
  1540.          }
  1541.  
  1542.          if (var1.equals("void")) {
  1543.             var5 = Void.TYPE;
  1544.          }
  1545.  
  1546.          if (var5 == null) {
  1547.             var5 = Class.forName(var1);
  1548.          }
  1549.  
  1550.          return Introspector.getBeanInfo(var4, var5);
  1551.       }
  1552.    }
  1553.  
  1554.    int JaggRenameFile() {
  1555.       String[] var1 = this.parseFCTNP(this.FCTNP);
  1556.  
  1557.       try {
  1558.          File var2 = new File(var1[0]);
  1559.          if (var1[1].lastIndexOf(File.separator) > 0) {
  1560.             String var3 = var1[1].substring(0, var1[1].lastIndexOf(File.separator));
  1561.             File var4 = new File(var3);
  1562.             var4.mkdirs();
  1563.          }
  1564.  
  1565.          File var6 = new File(var1[1]);
  1566.          if (var6.exists()) {
  1567.             var6.delete();
  1568.          }
  1569.  
  1570.          File var7 = new File(var1[1]);
  1571.          var2.renameTo(var7);
  1572.          return 1;
  1573.       } catch (Exception var5) {
  1574.          this.logException(var5);
  1575.          return 0;
  1576.       }
  1577.    }
  1578.  
  1579.    int JaggRemoveFiles() {
  1580.       String[] var2 = this.parseFCTNP(this.FCTNP);
  1581.       File var1 = new File(var2[0]);
  1582.       String[] var3 = var1.list();
  1583.       if (var3 == null) {
  1584.          return 0;
  1585.       } else {
  1586.          String var5 = var2[1];
  1587.          String var6 = var2[1];
  1588.          int var7 = var2[1].indexOf("*");
  1589.          if (var7 >= 0) {
  1590.             var5 = var2[1].substring(0, var7);
  1591.             var6 = var2[1].substring(var7 + 1);
  1592.          }
  1593.  
  1594.          try {
  1595.             for(int var8 = 0; var8 < var3.length; ++var8) {
  1596.                File var4 = new File(var1, var3[var8]);
  1597.                if (!var4.isDirectory() && var3[var8].startsWith(var5) && var3[var8].endsWith(var6)) {
  1598.                   var4.delete();
  1599.                }
  1600.             }
  1601.  
  1602.             return 1;
  1603.          } catch (Exception var9) {
  1604.             this.logException(var9);
  1605.             return 0;
  1606.          }
  1607.       }
  1608.    }
  1609.  
  1610.    int JaggCreateFolder() {
  1611.       String[] var1 = this.parseFCTNP(this.FCTNP);
  1612.  
  1613.       try {
  1614.          File var2 = new File(var1[0]);
  1615.          var2.mkdirs();
  1616.          return 1;
  1617.       } catch (Exception var3) {
  1618.          return 0;
  1619.       }
  1620.    }
  1621.  
  1622.    int JaggArchiveApp() {
  1623.       String[] var1 = this.parseFCTNP(this.FCTNP);
  1624.       Date var2 = new Date();
  1625.       String var3 = Integer.toString(var2.getYear() + 1900);
  1626.       String var4 = Integer.toString(var2.getMonth() + 1);
  1627.       if (var4.length() == 1) {
  1628.          var4 = "0" + var4;
  1629.       }
  1630.  
  1631.       String var5 = Integer.toString(var2.getDate());
  1632.       if (var5.length() == 1) {
  1633.          var5 = "0" + var5;
  1634.       }
  1635.  
  1636.       var3 = var3 + var4 + var5;
  1637.       String var6 = var1[1] + var3;
  1638.       int var7 = var1[1].indexOf(".");
  1639.       if (var7 >= 0) {
  1640.          var6 = var1[1].substring(0, var7) + var3 + var1[1].substring(var7);
  1641.       }
  1642.  
  1643.       File var8 = new File(var1[0], var1[1]);
  1644.       if (var8 != null && var8.length() > 0L) {
  1645.          File var9 = new File(var1[2]);
  1646.          var9.mkdirs();
  1647.          File var10 = new File(var1[2], var6);
  1648.  
  1649.          try {
  1650.             FileInputStream var11 = new FileInputStream(var8);
  1651.             FileOutputStream var12 = new FileOutputStream(var10);
  1652.  
  1653.             for(int var13 = var11.read(); var13 >= 0; var13 = var11.read()) {
  1654.                var12.write(var13);
  1655.             }
  1656.  
  1657.             var11.close();
  1658.             var12.close();
  1659.          } catch (Exception var20) {
  1660.          }
  1661.       }
  1662.  
  1663.       int var24 = 60;
  1664.  
  1665.       try {
  1666.          var24 = Integer.parseInt(var1[3]);
  1667.       } catch (Exception var19) {
  1668.       }
  1669.  
  1670.       Date var25 = new Date(var2.getYear(), var2.getMonth(), var2.getDate() - var24);
  1671.       String var26 = Integer.toString(var25.getYear() + 1900);
  1672.       var4 = Integer.toString(var25.getMonth() + 1);
  1673.       if (var4.length() == 1) {
  1674.          var4 = "0" + var4;
  1675.       }
  1676.  
  1677.       var5 = Integer.toString(var25.getDate());
  1678.       if (var5.length() == 1) {
  1679.          var5 = "0" + var5;
  1680.       }
  1681.  
  1682.       var26 = var26 + var4 + var5;
  1683.       String var28 = var1[1];
  1684.       String var29 = var1[1] + var26;
  1685.       if (var7 >= 0) {
  1686.          var28 = var1[1].substring(0, var7);
  1687.          var29 = var1[1].substring(0, var7) + var26 + var1[1].substring(var7);
  1688.       }
  1689.  
  1690.       File var14 = new File(var1[2]);
  1691.       String[] var15 = var14.list();
  1692.  
  1693.       for(int var16 = 0; var16 < var15.length; ++var16) {
  1694.          if (var15[var16].startsWith(var28) && var15[var16].compareTo(var29) < 0) {
  1695.             try {
  1696.                File var17 = new File(var14, var15[var16]);
  1697.                var17.delete();
  1698.             } catch (Exception var18) {
  1699.             }
  1700.          }
  1701.       }
  1702.  
  1703.       return 1;
  1704.    }
  1705.  
  1706.    int JaggExecCommand() {
  1707.       if (this.SQL.indexOf("javac.exe ") >= 0 || this.SQL.indexOf("javac ") >= 0) {
  1708.          int var1 = this.compileJavaClass(this.SQL);
  1709.          if (var1 >= 0) {
  1710.             return var1;
  1711.          }
  1712.       }
  1713.  
  1714.       int var13 = 0;
  1715.       String[] var2 = new String[]{this.SQL};
  1716.       this.field_3 = null;
  1717.       this.err = null;
  1718.       Object var3 = null;
  1719.       if (var3 == null) {
  1720.          char[] var10000 = new char[128];
  1721.       }
  1722.  
  1723.       try {
  1724.          Runtime var5 = Runtime.getRuntime();
  1725.          Process var6 = var5.exec(this.SQL);
  1726.          this.field_3 = new BufferedInputStream(var6.getInputStream());
  1727.          this.err = new BufferedInputStream(var6.getErrorStream());
  1728.          JaggServerCxn var7 = new JaggServerCxn(this, this.field_3);
  1729.          JaggServerCxn var8 = new JaggServerCxn(this, this.err);
  1730.          var13 = var6.waitFor();
  1731.  
  1732.          while(!var7.monitorFinished) {
  1733.             try {
  1734.                Thread.sleep(100L);
  1735.             } catch (Exception var11) {
  1736.             }
  1737.          }
  1738.  
  1739.          while(!var8.monitorFinished) {
  1740.             try {
  1741.                Thread.sleep(100L);
  1742.             } catch (Exception var10) {
  1743.             }
  1744.          }
  1745.  
  1746.          if (var7.inLog != null) {
  1747.             this.writeLn(var7.inLog.toString());
  1748.          }
  1749.  
  1750.          if (var8.errLog != null) {
  1751.             this.writeLn(var8.errLog.toString());
  1752.          }
  1753.  
  1754.          this.writeLn(field_2);
  1755.          ((Thread)var7).stop();
  1756.          ((Thread)var8).stop();
  1757.          this.field_3 = null;
  1758.          this.err = null;
  1759.          var6.destroy();
  1760.       } catch (Exception var12) {
  1761.          this.println("Could not execute the following command: " + this.SQL);
  1762.          this.logException(var12);
  1763.  
  1764.          try {
  1765.             this.writeLn("JAGG_ERROR:COMMAND_EXECUTION_FAILED");
  1766.             this.writeLn(field_2);
  1767.             this.writeLn(EOT);
  1768.          } catch (Exception var9) {
  1769.          }
  1770.       }
  1771.  
  1772.       return var13;
  1773.    }
  1774.  
  1775.    public void monitorActiveJob() {
  1776.       char[] var1 = null;
  1777.       char[] var2 = var1;
  1778.       if (var1 == null) {
  1779.          var2 = var1 = new char[128];
  1780.       }
  1781.  
  1782.       int var3 = var2.length;
  1783.       int var4 = 0;
  1784.       boolean var5 = false;
  1785.  
  1786.       try {
  1787.          for(int var8 = this.thisStream.read(); var8 > -1; var8 = this.thisStream.read()) {
  1788.             --var3;
  1789.             if (var3 < 0) {
  1790.                var2 = new char[var4 + 128];
  1791.                var3 = var2.length - var4 - 1;
  1792.                System.arraycopy(var1, 0, var2, 0, var4);
  1793.                var1 = var2;
  1794.             }
  1795.  
  1796.             var2[var4++] = (char)var8;
  1797.          }
  1798.  
  1799.          if (var4 > 0) {
  1800.             this.writeLog(String.copyValueOf(var2, 0, var4));
  1801.          }
  1802.  
  1803.          this.thisStream.close();
  1804.       } catch (Exception var7) {
  1805.          this.logException(var7);
  1806.       }
  1807.    }
  1808.  
  1809.    public void writeLog(String var1) {
  1810.       if (this.target != null) {
  1811.          if (this.thisStream == this.target.field_3) {
  1812.             if (this.inLog == null) {
  1813.                this.inLog = new StringBuffer();
  1814.             }
  1815.  
  1816.             this.inLog.append(var1);
  1817.             return;
  1818.          }
  1819.  
  1820.          if (this.errLog == null) {
  1821.             this.errLog = new StringBuffer();
  1822.          }
  1823.  
  1824.          this.errLog.append(var1);
  1825.       }
  1826.  
  1827.    }
  1828.  
  1829.    int JaggGetStockData() {
  1830.       String[] var1 = this.parseFCTNP(this.FCTNP);
  1831.       this.FCTN = "";
  1832.       int var2 = (new Date()).getDate();
  1833.       if (this.server.lastDate == 0 || this.server.lastDate != var2) {
  1834.          this.server.cusips = new Vector();
  1835.          this.server.cusipData = new Vector();
  1836.          System.gc();
  1837.          this.server.lastDate = var2;
  1838.       }
  1839.  
  1840.       String var3 = var1[0];
  1841.       int var4 = Integer.parseInt(var1[1]);
  1842.       int var5 = Integer.parseInt(var1[2]);
  1843.       int var6 = -1;
  1844.  
  1845.       for(int var7 = 0; var7 < this.server.cusips.size(); ++var7) {
  1846.          if (((String)this.server.cusips.elementAt(var7)).equals(var3)) {
  1847.             var6 = var7;
  1848.             break;
  1849.          }
  1850.       }
  1851.  
  1852.       if (var6 < 0) {
  1853.          var6 = this.loadNewStockData(var3);
  1854.       }
  1855.  
  1856.       try {
  1857.          if (var6 < 0) {
  1858.             this.writeLn("JAGG");
  1859.             this.writeLn("EOF");
  1860.             return 0;
  1861.          }
  1862.  
  1863.          this.loadTodayStockData(var3);
  1864.          this.writeLn(field_2);
  1865.          Vector var8 = (Vector)this.server.cusipData.elementAt(var6);
  1866.          String var9 = (String)var8.elementAt(3);
  1867.          this.writeLn(var9);
  1868.          this.writeLn("\u0004");
  1869.          String var10 = (String)var8.elementAt(1);
  1870.          int var11 = Integer.parseInt((String)var8.elementAt(2));
  1871.          int var12 = var10.charAt(1) * 256 + var10.charAt(0);
  1872.          StringBuffer var13 = new StringBuffer();
  1873.          byte var14 = 0;
  1874.          if (var12 == 1) {
  1875.             var14 = 15;
  1876.          } else if (var12 == 2) {
  1877.             var14 = 25;
  1878.          }
  1879.  
  1880.          var13.append(var10.substring(0, var14));
  1881.          var4 = var11 - var4 * var14;
  1882.          var5 = var11 - var5 * var14;
  1883.          if (var5 < var14) {
  1884.             var5 = var14;
  1885.          }
  1886.  
  1887.          if (var4 < var14) {
  1888.             var4 = var14;
  1889.          }
  1890.  
  1891.          var13.append(var10.substring(var5, var4));
  1892.          this.writeLn(var13.toString());
  1893.          this.writeLn("JAGG");
  1894.          this.writeLn("EOF");
  1895.       } catch (Exception var15) {
  1896.       }
  1897.  
  1898.       return 1;
  1899.    }
  1900.  
  1901.    synchronized int loadNewStockData(String var1) {
  1902.       int var2 = -1;
  1903.       String var3 = "d:\\wsweb\\active\\";
  1904.       if (var1.charAt(0) == 'A') {
  1905.          var3 = var3 + "usa";
  1906.       } else if (var1.charAt(0) == 'C') {
  1907.          var3 = var3 + "cda";
  1908.       } else if (var1.charAt(0) == 'X') {
  1909.          var3 = var3 + "inx";
  1910.       }
  1911.  
  1912.       var3 = var3 + "\\";
  1913.       var3 = var3 + var1.substring(1, 2) + "\\";
  1914.       var3 = var3 + var1.substring(2, 3) + "\\";
  1915.       var3 = var3 + var1.substring(3, 4) + "\\";
  1916.       var3 = var3 + var1.trim() + ".wsd";
  1917.       Object var4 = null;
  1918.  
  1919.       try {
  1920.          FileInputStream var5 = new FileInputStream(var3);
  1921.          int var6 = var5.available();
  1922.          byte[] var7 = new byte[var6];
  1923.          var6 = var5.read(var7, 0, var6);
  1924.          String var16 = new String(var7, 0);
  1925.          var5.close();
  1926.          var2 = this.server.cusips.size();
  1927.          this.server.cusips.addElement(var1);
  1928.          String var8 = "";
  1929.          Vector var9 = new Vector();
  1930.          var9.addElement(var8);
  1931.          var9.addElement(var16);
  1932.          var9.addElement(Integer.toString(var6));
  1933.          var9.addElement(this.loadStockSplitData(var1));
  1934.          this.server.cusipData.addElement(var9);
  1935.       } catch (Exception var10) {
  1936.       }
  1937.  
  1938.       return var2;
  1939.    }
  1940.  
  1941.    synchronized int loadTodayStockData(String var1) {
  1942.       String[] var2 = this.parseFCTNP(this.FCTNP);
  1943.       this.SQL = "SELECT ticker, name, date, openprice, high, low, last, volume FROM LastPrice WHERE cusip = '" + var1 + "'";
  1944.       this.LSQL = var2[3];
  1945.       this.runSql();
  1946.       return 1;
  1947.    }
  1948.  
  1949.    synchronized String loadStockSplitData(String var1) {
  1950.       this.SQL = "SELECT ExDate, DivRate, DivType, AF FROM Dividends WHERE CPointer = '" + var1 + "' AND DivType IN (2,3,4) ORDER BY ExDate";
  1951.       this.sqlCapture = new StringBuffer();
  1952.       this.captureSqlOutput = true;
  1953.       this.runSql();
  1954.       this.captureSqlOutput = false;
  1955.       return this.sqlCapture.toString();
  1956.    }
  1957.  
  1958.    int compileJavaClass(String var1) {
  1959.       String var2 = var1;
  1960.       int var3 = var1.indexOf("JDPJagg.exe System ");
  1961.       if (var3 >= 0) {
  1962.          var3 += 19;
  1963.          var2 = var1.substring(var3);
  1964.       }
  1965.  
  1966.       StringTokenizer var4 = new StringTokenizer(var2, " ");
  1967.       String[] var5 = new String[var4.countTokens() - 1];
  1968.       var4.nextToken();
  1969.  
  1970.       for(int var6 = 0; var4.hasMoreTokens(); var5[var6++] = var4.nextToken()) {
  1971.       }
  1972.  
  1973.       ByteArrayOutputStream var7 = new ByteArrayOutputStream();
  1974.       byte var8 = 1;
  1975.  
  1976.       try {
  1977.          Main var9 = new Main(var7, "javac");
  1978.          boolean var10 = var9.compile(var5);
  1979.          if (var10) {
  1980.             var8 = 0;
  1981.          }
  1982.  
  1983.          if (var3 >= 0) {
  1984.             this.SQL = var7.toString();
  1985.             this.FCTNP = "command.txt;w+;";
  1986.             this.JaggWriteToFile();
  1987.          } else {
  1988.             try {
  1989.                this.writeLn(var7.toString());
  1990.                this.writeLn(field_2);
  1991.             } catch (Exception var11) {
  1992.             }
  1993.          }
  1994.  
  1995.          return var8;
  1996.       } catch (Exception var12) {
  1997.          return -1;
  1998.       }
  1999.    }
  2000.  
  2001.    int JarListFiles() {
  2002.       String[] var1 = this.parseFCTNP(this.FCTNP);
  2003.       int var2 = 0;
  2004.  
  2005.       try {
  2006.          ZipFile var3 = new ZipFile(var1[0]);
  2007.          Enumeration var4 = var3.entries();
  2008.  
  2009.          while(var4.hasMoreElements()) {
  2010.             Object var5 = var4.nextElement();
  2011.             if (var5 instanceof ZipEntry) {
  2012.                this.writeLn(((ZipEntry)var5).getName() + field_2);
  2013.                ++var2;
  2014.             }
  2015.          }
  2016.       } catch (Exception var6) {
  2017.          ((Throwable)var6).printStackTrace();
  2018.          var2 = -1;
  2019.       }
  2020.  
  2021.       return var2;
  2022.    }
  2023.  
  2024.    int JarCommand() {
  2025.       String[] var1 = this.parseFCTNP(this.FCTNP);
  2026.       sun.tools.jar.Main var2 = new sun.tools.jar.Main(System.out, System.err, "jar");
  2027.       boolean var3 = var2.run(var1);
  2028.       byte var4 = 1;
  2029.       if (var3) {
  2030.          var4 = 0;
  2031.       }
  2032.  
  2033.       return var4;
  2034.    }
  2035.  
  2036.    int JaggServerJob() {
  2037.       new JDPPanelLoader(this.FCTNP, this.SQL, this.thisSocket);
  2038.       return 0;
  2039.    }
  2040.  
  2041.    int InvokeMethod() {
  2042.       String[] var1 = new String[0];
  2043.       String[] var2 = new String[0];
  2044.  
  2045.       try {
  2046.          Properties var3 = new Properties();
  2047.          StringBufferInputStream var21 = new StringBufferInputStream(this.SQL);
  2048.          var3.load(var21);
  2049.          this.objectName = (String)((Hashtable)var3).get("objectName");
  2050.          this.jobName = (String)((Hashtable)var3).get("jobName");
  2051.          this.jobNumber = (String)((Hashtable)var3).get("jobNumber");
  2052.          this.methodName = (String)((Hashtable)var3).get("methodName");
  2053.          int var22 = Integer.parseInt((String)((Hashtable)var3).get("parametersSize"));
  2054.          var1 = new String[var22];
  2055.          var2 = new String[var22];
  2056.  
  2057.          for(int var23 = 0; var23 < var2.length; ++var23) {
  2058.             var1[var23] = (String)((Hashtable)var3).get("paramTypes" + Integer.toString(var23));
  2059.             var2[var23] = (String)((Hashtable)var3).get("parameters" + Integer.toString(var23));
  2060.          }
  2061.  
  2062.          Object var7 = null;
  2063.          if (this.jobName != null) {
  2064.             var7 = this.server.manager.getJobForName(this.jobName);
  2065.             this.objectName = this.server.manager.getClassForName(this.jobName);
  2066.          } else if (this.jobNumber != null) {
  2067.             if (this.objectName == null) {
  2068.                var7 = this.server.manager.getJobForNumber(Integer.parseInt(this.jobNumber));
  2069.                this.objectName = this.server.manager.getClassForNumber(Integer.parseInt(this.jobNumber));
  2070.             } else if (this.objectName.equals("JDPJob")) {
  2071.                var7 = this.server.manager.getJob(Integer.parseInt(this.jobNumber));
  2072.             } else if (this.objectName.equals("JDPActiveJob")) {
  2073.                var7 = this.server.manager.getJob(Integer.parseInt(this.jobNumber)).getActiveJob();
  2074.             }
  2075.          } else if (this.objectName != null) {
  2076.             if (this.objectName.equals("JDPSubsystemMgr")) {
  2077.                var7 = this.server.manager;
  2078.             } else if (this.objectName.equals("JDPJobQueueMgr")) {
  2079.                var7 = this.server.manager.queueMgr;
  2080.             } else if (this.objectName.equals("JDPJaggCxnMgr")) {
  2081.                var7 = this.server.manager.connectionMgr;
  2082.             } else if (this.objectName.equals("JDPJaggUserMgr")) {
  2083.                var7 = this.server.manager.userMgr;
  2084.             } else {
  2085.                var7 = this.server.manager.getJobRunningClass(this.objectName);
  2086.             }
  2087.          }
  2088.  
  2089.          if (var7 != null && this.objectName != null) {
  2090.             Class[] var8 = new Class[var1.length];
  2091.             Object[] var9 = new Object[var1.length];
  2092.  
  2093.             for(int var10 = 0; var10 < var1.length; ++var10) {
  2094.                var8[var10] = JDPUtils.getClass(var1[var10]);
  2095.                var9[var10] = JDPUtils.createObject(var8[var10], var2[var10]);
  2096.             }
  2097.  
  2098.             Class var11 = JDPUtils.getClass(this.objectName);
  2099.             Method var12 = var11.getMethod(this.methodName, var8);
  2100.             Object var13 = var12.invoke(var7, var9);
  2101.             ((Hashtable)var3).clear();
  2102.             ((Hashtable)var3).put("returnType", var12.getReturnType().getName());
  2103.             if (var13 != null) {
  2104.                ((Hashtable)var3).put("returnVal", var13.toString());
  2105.             }
  2106.  
  2107.             ByteArrayOutputStream var14 = new ByteArrayOutputStream();
  2108.             var3.save(var14, "parameters");
  2109.             String var15 = var14.toString();
  2110.             this.writeLn(var15);
  2111.             this.writeLn(field_2);
  2112.             return 0;
  2113.          } else {
  2114.             this.println("Remote command failed.");
  2115.             if (this.jobName != null) {
  2116.                this.println("Could not find requested job name (" + this.jobName + ") on server on which to invoke method");
  2117.                this.writeLn("Could not find requested job name (" + this.jobName + ") on server on which to invoke method");
  2118.             } else if (this.jobNumber != null) {
  2119.                this.println("Could not find requested job number (" + this.jobNumber + ") on server on which to invoke method");
  2120.                this.writeLn("Could not find requested job number (" + this.jobNumber + ") on server on which to invoke method");
  2121.             } else {
  2122.                this.println("Could not find requested class (" + this.objectName + ") on server on which to invoke method");
  2123.                this.writeLn("Could not find requested class (" + this.objectName + ") on server on which to invoke method");
  2124.             }
  2125.  
  2126.             this.writeLn(field_2);
  2127.             return -1;
  2128.          }
  2129.       } catch (Exception var17) {
  2130.          this.println("Remote command failed.");
  2131.          this.println("Could not invoke " + this.methodName + " on class " + this.objectName);
  2132.          String var4 = "";
  2133.  
  2134.          for(int var5 = 0; var5 < var1.length; ++var5) {
  2135.             if (var5 > 0) {
  2136.                var4 = var4 + ",";
  2137.             }
  2138.  
  2139.             var4 = var4 + var1[var5];
  2140.          }
  2141.  
  2142.          this.println("Parameter types passed:  " + var4);
  2143.          var4 = "";
  2144.  
  2145.          for(int var6 = 0; var6 < var2.length; ++var6) {
  2146.             if (var6 > 0) {
  2147.                var4 = var4 + ",";
  2148.             }
  2149.  
  2150.             var4 = var4 + var2[var6];
  2151.          }
  2152.  
  2153.          this.println("Parameter values passed: " + var4);
  2154.          this.logException(var17);
  2155.  
  2156.          try {
  2157.             this.writeLn("Could not invoke " + this.methodName + " on class " + this.objectName);
  2158.             this.writeLn(field_2);
  2159.          } catch (Exception var16) {
  2160.          }
  2161.  
  2162.          return -1;
  2163.       }
  2164.    }
  2165.  
  2166.    private Vector getDbConnection(String var1, String var2) throws Exception {
  2167.       for(int var3 = 0; var3 < this.server.dbConnection.size(); ++var3) {
  2168.          Vector var4 = (Vector)this.server.dbConnection.elementAt(var3);
  2169.          if (((String)var4.elementAt(0)).equals(var1 + var2) && ((String)var4.elementAt(1)).equals("Inactive")) {
  2170.             var4.setElementAt("Active", 1);
  2171.             Date var5 = new Date();
  2172.             long var6 = var5.getTime() / 1000L;
  2173.             var4.setElementAt(Long.toString(var6), 3);
  2174.             long var8 = (Long)var4.elementAt(5) + 1L;
  2175.             var4.setElementAt(new Long(var8), 5);
  2176.             this.thisJdbcConnectionNum = (Long)var4.elementAt(6);
  2177.             return var4;
  2178.          }
  2179.       }
  2180.  
  2181.       Properties var12 = new Properties();
  2182.       StringTokenizer var13 = new StringTokenizer(var2, ";");
  2183.       int var14 = var13.countTokens();
  2184.  
  2185.       for(int var7 = 0; var7 < var14; ++var7) {
  2186.          String var15 = var13.nextToken();
  2187.          int var9 = var15.indexOf("=");
  2188.          if (var9 >= 0) {
  2189.             String var10 = var15.substring(0, var9);
  2190.             if (var10.equals("UID")) {
  2191.                var10 = "user";
  2192.             }
  2193.  
  2194.             if (var10.equals("PWD")) {
  2195.                var10 = "password";
  2196.             }
  2197.  
  2198.             if (var9 > 0) {
  2199.                ((Hashtable)var12).put(var10, var15.substring(var9 + 1));
  2200.             }
  2201.          }
  2202.       }
  2203.  
  2204.       Vector var16 = new Vector();
  2205.       var16.addElement(var1 + var2);
  2206.       var16.addElement("Active");
  2207.       this.println("Attempting connection to: " + var1);
  2208.       var16.addElement(DriverManager.getConnection(var1, var12));
  2209.       Date var17 = new Date();
  2210.       long var18 = var17.getTime() / 1000L;
  2211.       var16.addElement(Long.toString(var18));
  2212.       var16.addElement(var1);
  2213.       var16.addElement(new Long(1L));
  2214.       this.thisJdbcConnectionNum = this.server.nextConnectionNum;
  2215.       var16.addElement(new Long((long)(this.server.nextConnectionNum++)));
  2216.       this.server.dbConnection.addElement(var16);
  2217.       this.println("Opened new connection to: " + var1);
  2218.       return var16;
  2219.    }
  2220.  
  2221.    void writeLn(String var1) throws Exception {
  2222.       if (this.captureSqlOutput) {
  2223.          this.sqlCapture.append(var1);
  2224.       } else if (var1 != null && var1.length() != 0) {
  2225.          int var2 = var1.length();
  2226.          this.totalCharsWritten += var2;
  2227.          byte[] var3 = new byte[var2];
  2228.          var1.getBytes(0, var2, var3, 0);
  2229.  
  2230.          try {
  2231.             this.serverResponse.write(var3);
  2232.          } catch (Exception var4) {
  2233.          }
  2234.       } else {
  2235.          if (this.NULL.equals("space")) {
  2236.             this.serverResponse.write(32);
  2237.          }
  2238.  
  2239.          if (this.NULL.equals("")) {
  2240.             this.writeLn("NULL");
  2241.          }
  2242.  
  2243.          if (this.NULL.equals("null")) {
  2244.             this.writeLn("null");
  2245.          }
  2246.  
  2247.       }
  2248.    }
  2249.  
  2250.    void formatCSTR() {
  2251.       this.CSTR = "UID=" + this.UID + ";PWD=" + this.PWD + ";";
  2252.       if (!this.field_0.equals("")) {
  2253.          this.CSTR = this.CSTR + "DATABASE=" + this.field_0 + ";";
  2254.       }
  2255.  
  2256.    }
  2257.  
  2258.    void parseCSTR(String var1) {
  2259.       StringTokenizer var2 = new StringTokenizer(var1, ";");
  2260.       int var3 = var2.countTokens();
  2261.  
  2262.       for(int var4 = 0; var4 < var3; ++var4) {
  2263.          String var5 = var2.nextToken();
  2264.          if (var5.startsWith("DSN=")) {
  2265.             this.DSN = var5.substring(4);
  2266.          }
  2267.  
  2268.          if (var5.startsWith("UID=")) {
  2269.             this.UID = var5.substring(4);
  2270.          }
  2271.  
  2272.          if (var5.startsWith("PWD=")) {
  2273.             this.PWD = var5.substring(4);
  2274.          }
  2275.  
  2276.          if (var5.startsWith("DB=")) {
  2277.             this.field_0 = var5.substring(2);
  2278.          }
  2279.  
  2280.          if (var5.startsWith("WSID=")) {
  2281.             this.WSID = var5.substring(5);
  2282.          }
  2283.       }
  2284.  
  2285.    }
  2286.  
  2287.    void parseRequest(String var1) throws Exception {
  2288.       int var3 = var1.indexOf("\u0002SQL=");
  2289.       StringTokenizer var2;
  2290.       if (var3 >= 0) {
  2291.          this.SQL = var1.substring(var3 + 5, var1.length() - 1);
  2292.          var2 = new StringTokenizer(var1.substring(0, var3), "\u0002");
  2293.       } else {
  2294.          var2 = new StringTokenizer(var1, "\u0002");
  2295.       }
  2296.  
  2297.       this.SERV = "";
  2298.       this.DSN = "";
  2299.       this.CSTR = "";
  2300.       this.MRW = "";
  2301.       this.FCTN = "";
  2302.       this.FCTNP = "";
  2303.       this.field_1 = "";
  2304.       this.SEP = "\u0003";
  2305.       this.UID = "";
  2306.       this.PWD = "";
  2307.       this.field_0 = "";
  2308.       this.WSID = "";
  2309.       this.LSQL = "";
  2310.       this.TOUT = "";
  2311.       this.DLOG = "";
  2312.       this.NULL = "space";
  2313.       this.jdbcDriver = JaggServer.DEFAULTJDBC;
  2314.       this.jdbcPrefix = JaggServer.DEFAULTCXN;
  2315.       this.jdbcSuffix = "";
  2316.       int var4 = var2.countTokens();
  2317.  
  2318.       for(int var5 = 0; var5 < var4; ++var5) {
  2319.          String var6 = var2.nextToken();
  2320.          if (var6.startsWith("SERV=")) {
  2321.             this.SERV = var6.substring(5);
  2322.          }
  2323.  
  2324.          if (var6.startsWith("DSN=")) {
  2325.             this.DSN = var6.substring(4);
  2326.          }
  2327.  
  2328.          if (var6.startsWith("CSTR=")) {
  2329.             this.CSTR = var6.substring(5);
  2330.          }
  2331.  
  2332.          if (var6.startsWith("MRW=")) {
  2333.             this.MRW = var6.substring(4);
  2334.          }
  2335.  
  2336.          if (var6.startsWith("FCTN=")) {
  2337.             this.FCTN = var6.substring(5);
  2338.          }
  2339.  
  2340.          if (var6.startsWith("FCTNP=")) {
  2341.             this.FCTNP = var6.substring(6);
  2342.          }
  2343.  
  2344.          if (var6.startsWith("K=")) {
  2345.             this.field_1 = var6.substring(2);
  2346.          }
  2347.  
  2348.          if (var6.startsWith("SEP=")) {
  2349.             this.SEP = var6.substring(4);
  2350.          }
  2351.  
  2352.          if (var6.startsWith("UID=")) {
  2353.             this.UID = var6.substring(4);
  2354.          }
  2355.  
  2356.          if (var6.startsWith("PWD=")) {
  2357.             this.PWD = var6.substring(4);
  2358.          }
  2359.  
  2360.          if (var6.startsWith("DB=")) {
  2361.             this.field_0 = var6.substring(2);
  2362.          }
  2363.  
  2364.          if (var6.startsWith("WSID=")) {
  2365.             this.WSID = var6.substring(5);
  2366.          }
  2367.  
  2368.          if (var6.startsWith("LSQL=")) {
  2369.             this.LSQL = var6.substring(5);
  2370.          }
  2371.  
  2372.          if (var6.startsWith("TOUT=")) {
  2373.             this.TOUT = var6.substring(5);
  2374.          }
  2375.  
  2376.          if (var6.startsWith("DLOG=")) {
  2377.             this.DLOG = var6.substring(5);
  2378.          }
  2379.  
  2380.          if (var6.startsWith("NULL=")) {
  2381.             this.NULL = var6.substring(5);
  2382.          }
  2383.  
  2384.          if (var6.startsWith("USER=")) {
  2385.             this.USER = var6.substring(5);
  2386.          }
  2387.  
  2388.          if (var6.startsWith("SYS=")) {
  2389.             this.SYS = var6.substring(4);
  2390.          }
  2391.  
  2392.          if (var6.startsWith("jdbcDriver=")) {
  2393.             this.jdbcDriver = var6.substring(11).trim();
  2394.          }
  2395.  
  2396.          if (var6.startsWith("jdbcPrefix=")) {
  2397.             this.jdbcPrefix = var6.substring(11).trim();
  2398.          }
  2399.  
  2400.          if (var6.startsWith("jdbcSuffix=")) {
  2401.             this.jdbcSuffix = var6.substring(11).trim();
  2402.          }
  2403.  
  2404.          if (var6.startsWith("BINS=")) {
  2405.             this.loadBulkData(var6.substring(5));
  2406.          }
  2407.       }
  2408.  
  2409.       if (this.CSTR.length() == 0) {
  2410.          this.formatCSTR();
  2411.       }
  2412.  
  2413.    }
  2414.  
  2415.    String[] parseFCTNP(String var1) {
  2416.       String[] var2 = new String[100];
  2417.       int var3 = 0;
  2418.  
  2419.       for(int var4 = var1.indexOf(";"); var4 >= 0; var4 = var1.indexOf(";")) {
  2420.          if (var4 > 0) {
  2421.             var2[var3] = var1.substring(0, var4);
  2422.          }
  2423.  
  2424.          ++var3;
  2425.          var1 = var1.substring(var4 + 1);
  2426.       }
  2427.  
  2428.       String[] var5 = new String[var3];
  2429.       System.arraycopy(var2, 0, var5, 0, var3);
  2430.       return var5;
  2431.    }
  2432.  
  2433.    private void loadBulkData(String var1) throws Exception {
  2434.       int var2 = 0;
  2435.       boolean var3 = false;
  2436.       char[] var8 = this.lineBuffer;
  2437.       if (var8 == null) {
  2438.          var8 = this.lineBuffer = new char[128];
  2439.       }
  2440.  
  2441.       int var9 = 0;
  2442.       var8 = new char[20000];
  2443.       int var10 = var8.length;
  2444.  
  2445.       try {
  2446.          for(int var11 = this.serverRequest.read(); var11 != 1; var11 = this.serverRequest.read()) {
  2447.             --var10;
  2448.             if (var10 < 0) {
  2449.                this.lineBuffer = var8;
  2450.                var8 = new char[var9 + 20000];
  2451.                var10 = var8.length - var9 - 1;
  2452.                System.arraycopy(this.lineBuffer, 0, var8, 0, var9);
  2453.                this.lineBuffer = null;
  2454.             }
  2455.  
  2456.             var8[var9++] = (char)var11;
  2457.          }
  2458.  
  2459.          if (var9 == 0) {
  2460.             return;
  2461.          }
  2462.  
  2463.          var1 = String.copyValueOf(var8, 0, var9);
  2464.       } catch (Exception var12) {
  2465.          this.logException(var12);
  2466.       }
  2467.  
  2468.       StringTokenizer var6 = new StringTokenizer(var1, "\u0003");
  2469.       StringTokenizer var5 = new StringTokenizer(var6.nextToken(), "\u0004");
  2470.       int var4 = var5.countTokens();
  2471.  
  2472.       for(this.insertType = new int[var4]; var5.hasMoreTokens(); this.insertType[var2++] = Integer.parseInt(var5.nextToken())) {
  2473.       }
  2474.  
  2475.       this.insertData = new Vector();
  2476.  
  2477.       while(var6.hasMoreTokens()) {
  2478.          var5 = new StringTokenizer(var6.nextToken(), "\u0004");
  2479.          String[] var7 = new String[var4];
  2480.  
  2481.          for(int var13 = 0; var5.hasMoreTokens(); var7[var13++] = var5.nextToken()) {
  2482.          }
  2483.  
  2484.          this.insertData.addElement(var7);
  2485.       }
  2486.  
  2487.    }
  2488.  
  2489.    void println(Object var1) {
  2490.       if (jaggServerJob != null) {
  2491.          jaggServerJob.appendJobLog(var1.toString());
  2492.       } else {
  2493.          System.out.println(var1);
  2494.       }
  2495.    }
  2496.  
  2497.    void logException(Exception var1) {
  2498.       if (jaggServerJob != null) {
  2499.          jaggServerJob.logException(var1);
  2500.       } else {
  2501.          ((Throwable)var1).printStackTrace();
  2502.       }
  2503.    }
  2504. }
  2505.