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

  1. import java.io.DataInputStream;
  2. import java.io.File;
  3. import java.io.FileInputStream;
  4. import java.io.FileOutputStream;
  5. import java.io.InputStream;
  6. import java.util.Date;
  7. import java.util.StringTokenizer;
  8. import java.util.Vector;
  9.  
  10. public class JDPSubsystemMgr extends Thread {
  11.    static final int DISABLED = 0;
  12.    static final int ENTRY_LEVEL = 1;
  13.    static final int STANDARD = 2;
  14.    static final int HIGH_END = 3;
  15.    static int enterpriseServerLevel;
  16.    static int enterpriseJobsAllowed;
  17.    static int purgeJobNameAfterDays = 7;
  18.    JaggServer server;
  19.    JDPJobQueueMgr queueMgr;
  20.    JDPJob systemJob;
  21.    JDPJob schedulerJob;
  22.    JDPJaggUserMgr userMgr;
  23.    JDPJaggCxnMgr connectionMgr;
  24.    ThreadGroup mainThreadGroup;
  25.    JDPUtils utils;
  26.    static String dbtype;
  27.    Vector subsystems;
  28.    Vector jobs;
  29.    Vector notifyQueue;
  30.    Vector systems;
  31.    Vector prevJobNames;
  32.    Vector entryLevelTasksDisallowed;
  33.    boolean shutdownRequested;
  34.    boolean updateRequested;
  35.    boolean sleeping;
  36.    boolean serverRunning;
  37.    JDPJagg jaggSQL;
  38.    JDPJagg jaggSQL1;
  39.    Vector eventTypeCode;
  40.    Vector eventTypeDesc;
  41.    String JDPDomain;
  42.    String JDPDirectory = "";
  43.    String JDPJaggDir;
  44.    String JDPCompiler;
  45.    String JDPClasses;
  46.    String NDSPath;
  47.    String JDPJaggPath;
  48.    String JDPJaggDSN;
  49.    String JDPJaggCSTR;
  50.    String JDPJaggJdbcDriver;
  51.    String JDPJaggJdbcPrefix;
  52.    String JDPJaggJdbcSuffix;
  53.    String JDPJaggJdbcUserid;
  54.    String JDPJaggJdbcPassword;
  55.    String[] systemMsg = new String[]{"Could not submit '%j' to the Enterprise Server. Please purchase the Enterprise Server license from BulletProof.", "Could not submit '%j'. Max jobs of %d exceeded. Please purchase the %s from BulletProof.", "Job configuration settings are corrupted or missing. Please contact BulletProof.", "You must purchase an Enterprise Server license from BulletProof in order to perform this function.", "You must purchase an upgrade to the Standard or High End Enterprise Server in order to perform this function.", "This function may not be performed due to a server configuration error. Please contact BulletProof."};
  56.  
  57.    String addDelimiter(String var1) {
  58.       String var2 = var1.substring(var1.length() - 1);
  59.       if (!var2.equals("/") && !var2.equals("\\")) {
  60.          if (var1.indexOf("/") >= 0) {
  61.             var1 = var1 + "/";
  62.          } else {
  63.             var1 = var1 + "\\";
  64.          }
  65.       }
  66.  
  67.       return var1;
  68.    }
  69.  
  70.    String checkTaskAllowed(String var1) {
  71.       if (enterpriseServerLevel == 3) {
  72.          return null;
  73.       } else if (enterpriseServerLevel == 2) {
  74.          return null;
  75.       } else if (enterpriseServerLevel == 0) {
  76.          return this.systemMsg[3];
  77.       } else if (enterpriseServerLevel == 1) {
  78.          return this.entryLevelTasksDisallowed.indexOf(var1) >= 0 ? this.systemMsg[4] : null;
  79.       } else {
  80.          return this.systemMsg[5];
  81.       }
  82.    }
  83.  
  84.    public String getClassForName(String var1) {
  85.       for(int var2 = 0; var2 < this.jobs.size(); ++var2) {
  86.          JDPJob var3 = (JDPJob)this.jobs.elementAt(var2);
  87.          if (var3.getJobName().equals(var1) && var3.activeJob != null && var3.getInstance() != null) {
  88.             return var3.getObject();
  89.          }
  90.       }
  91.  
  92.       return null;
  93.    }
  94.  
  95.    public String getJobsForName(String var1) {
  96.       String var2 = "";
  97.  
  98.       for(int var3 = 0; var3 < this.jobs.size(); ++var3) {
  99.          JDPJob var4 = (JDPJob)this.jobs.elementAt(var3);
  100.          if (var4.getJobName().equals(var1) && var4.getInstance() != null) {
  101.             var2 = var2 + Integer.toString(var4.getJobNumber()) + ";";
  102.          }
  103.       }
  104.  
  105.       return var2;
  106.    }
  107.  
  108.    void loadDisallowedTaskList() {
  109.       this.entryLevelTasksDisallowed = new Vector();
  110.       this.entryLevelTasksDisallowed.addElement("setMaxJobs");
  111.       this.entryLevelTasksDisallowed.addElement("setSubsystemPriority");
  112.       this.entryLevelTasksDisallowed.addElement("setSubsystemHeld");
  113.       this.entryLevelTasksDisallowed.addElement("createSubsystem");
  114.       this.entryLevelTasksDisallowed.addElement("removeSubsystem");
  115.       this.entryLevelTasksDisallowed.addElement("setJobQueueSubsystem");
  116.       this.entryLevelTasksDisallowed.addElement("setJobQueueHeld");
  117.       this.entryLevelTasksDisallowed.addElement("createJobQueue");
  118.       this.entryLevelTasksDisallowed.addElement("removeJobQueue");
  119.       this.entryLevelTasksDisallowed.addElement("setJobJobQueue");
  120.       this.entryLevelTasksDisallowed.addElement("setJobPriority");
  121.       this.entryLevelTasksDisallowed.addElement("setJobQueuePriority");
  122.       this.entryLevelTasksDisallowed.addElement("setJobHeldWhenActive");
  123.    }
  124.  
  125.    public synchronized String createJobQueue(String var1) {
  126.       String var2 = this.checkTaskAllowed("createJobQueue");
  127.       if (var2 != null) {
  128.          return var2;
  129.       } else {
  130.          Vector var3 = new Vector();
  131.          String var4 = "SELECT QueueName FROM JDPQueue WHERE QueueName = '" + var1 + "'";
  132.          int var5 = this.jaggSQL.execSQL(var4, var3);
  133.          if (var5 == 1) {
  134.             return "Job Queue already exists.";
  135.          } else {
  136.             var4 = "INSERT INTO JDPQueue (QueueName, QueueDesc, SubSysName, QueueHeld) " + "VALUES('" + var1 + "','','SBATCH','N')";
  137.             var5 = this.jaggSQL.execSQL(var4, var3);
  138.             if (var5 != 1) {
  139.                return "Failed to create Job Queue " + var1 + ". See server log for details.";
  140.             } else {
  141.                JDPJobQueue var6 = new JDPJobQueue(this.queueMgr, var1);
  142.                var6.setJobQueueDesc("");
  143.                var6.setSubsystem("SBATCH");
  144.                var6.setQueueHeld(false);
  145.                this.queueMgr.queues.addElement(var6);
  146.                return "Job Queue " + var1 + " successfully created with subsystem set to SBATCH.";
  147.             }
  148.          }
  149.       }
  150.    }
  151.  
  152.    public synchronized String removeJobQueue(String var1) {
  153.       String var2 = this.checkTaskAllowed("removeJobQueue");
  154.       if (var2 != null) {
  155.          return var2;
  156.       } else {
  157.          JDPJobQueue var3 = this.getJobQueue(var1);
  158.          if (var3.getQueuedJobCount() > 0) {
  159.             return "Job Queue may not be removed because " + Integer.toString(var3.getQueuedJobCount()) + " job(s) are still queued.";
  160.          } else {
  161.             Vector var4 = new Vector();
  162.             String var5 = "DELETE FROM JDPQueue WHERE QueueName = '" + var1 + "'";
  163.             int var6 = this.jaggSQL.execSQL(var5, var4);
  164.             if (var6 != 1) {
  165.                return "Failed to remove Job Queue " + var1 + ". See server log for details.";
  166.             } else {
  167.                this.queueMgr.queues.removeElement(var3);
  168.                return null;
  169.             }
  170.          }
  171.       }
  172.    }
  173.  
  174.    boolean check4Table(String var1) {
  175.       this.jaggSQL.setFCTN("SQLTables");
  176.       this.jaggSQL.setFCTNP(";;" + var1 + ";TABLE;");
  177.       if (dbtype.indexOf(JDPJagg.ORACLE) >= 0 || dbtype.indexOf(JDPJagg.POSTGRES) >= 0 || dbtype.indexOf(JDPJagg.CLOUDSCAPE) >= 0) {
  178.          this.jaggSQL.setFCTNP(";;" + var1.toUpperCase() + ";TABLE;");
  179.       }
  180.  
  181.       Vector var2 = new Vector();
  182.       int var3 = this.jaggSQL.execSQL("", var2);
  183.       this.jaggSQL.setFCTN("");
  184.       this.jaggSQL.setFCTNP("");
  185.       if (var3 > 0) {
  186.          return true;
  187.       } else {
  188.          if (dbtype.indexOf(JDPJagg.ORACLE) < 0 && dbtype.indexOf(JDPJagg.POSTGRES) < 0) {
  189.             if (var1.length() > 8) {
  190.                this.jaggSQL.setFCTN("SQLTables");
  191.                this.jaggSQL.setFCTNP(";;" + var1.substring(0, 8) + ";TABLE;");
  192.                var2 = new Vector();
  193.                var3 = this.jaggSQL.execSQL("", var2);
  194.                this.jaggSQL.setFCTN("");
  195.                this.jaggSQL.setFCTNP("");
  196.                if (var3 > 0) {
  197.                   return true;
  198.                }
  199.             }
  200.          } else {
  201.             this.jaggSQL.setFCTN("SQLColumns");
  202.             this.jaggSQL.setFCTNP(";;" + var1.toUpperCase() + ";;");
  203.             var3 = this.jaggSQL.execSQL("", var2);
  204.             this.jaggSQL.setFCTN("");
  205.             this.jaggSQL.setFCTNP("");
  206.             if (var3 > 0) {
  207.                return true;
  208.             }
  209.          }
  210.  
  211.          return false;
  212.       }
  213.    }
  214.  
  215.    public synchronized String setSubsystemHeld(String var1, boolean var2) {
  216.       String var3 = this.checkTaskAllowed("setSubsystemHeld");
  217.       if (var3 != null) {
  218.          return var3;
  219.       } else {
  220.          JDPSubsystem var4 = this.getSubsystem(var1);
  221.          var4.setSubsystemHeld(var2);
  222.          if (var2) {
  223.             ((Thread)var4).suspend();
  224.          } else {
  225.             ((Thread)var4).resume();
  226.          }
  227.  
  228.          Vector var5 = new Vector();
  229.          String var6 = "UPDATE JDPSubs SET SubSysHeld = '" + (var2 ? "Y" : "N") + "' WHERE SubSysName = '" + var1 + "'";
  230.          this.jaggSQL.execSQL(var6, var5);
  231.          this.queueMgr.reOrderQueue();
  232.          return null;
  233.       }
  234.    }
  235.  
  236.    public String getClassForNumber(int var1) {
  237.       for(int var2 = 0; var2 < this.jobs.size(); ++var2) {
  238.          JDPJob var3 = (JDPJob)this.jobs.elementAt(var2);
  239.          if (var3.getJobNumber() == var1 && var3.activeJob != null) {
  240.             return var3.getObject();
  241.          }
  242.       }
  243.  
  244.       return null;
  245.    }
  246.  
  247.    public void interruptScheduler() {
  248.       this.schedulerJob.getActiveJob().interrupt();
  249.    }
  250.  
  251.    void loadPrevJobNames() {
  252.       this.prevJobNames = new Vector();
  253.  
  254.       try {
  255.          FileInputStream var1 = new FileInputStream(this.JDPDirectory + "System" + File.separator + "Server.cfg");
  256.          byte[] var2 = new byte[var1.available()];
  257.          var1.read(var2);
  258.  
  259.          for(int var3 = 0; var3 < var2.length; ++var3) {
  260.             var2[var3] = (byte)(var2[var3] - 15);
  261.          }
  262.  
  263.          String var8 = new String(var2, 0);
  264.          StringTokenizer var4 = new StringTokenizer(var8, "\u0005");
  265.  
  266.          while(var4.hasMoreTokens()) {
  267.             String var5 = var4.nextToken();
  268.             if (var5.startsWith("NDS:")) {
  269.                this.server.NDSusername = var5.substring(4, var5.indexOf(";"));
  270.                this.server.NDSpassword = var5.substring(var5.indexOf(";") + 1);
  271.             } else {
  272.                StringTokenizer var6 = new StringTokenizer(var5, "|", true);
  273.                if (var6.countTokens() != 5) {
  274.                   this.prevJobNames = null;
  275.                   this.println(this.systemMsg[2]);
  276.                   var1.close();
  277.                   if (enterpriseServerLevel == 0 || enterpriseServerLevel == 3) {
  278.                      this.prevJobNames = null;
  279.                   }
  280.  
  281.                   return;
  282.                }
  283.  
  284.                this.prevJobNames.addElement(var5);
  285.             }
  286.          }
  287.  
  288.          var1.close();
  289.          this.removeOldJobs();
  290.       } catch (Exception var7) {
  291.       }
  292.  
  293.       if (enterpriseServerLevel == 0 || enterpriseServerLevel == 3) {
  294.          this.prevJobNames = null;
  295.       }
  296.  
  297.    }
  298.  
  299.    public String setJobPriority(int var1, int var2, String var3) {
  300.       String var4 = this.checkTaskAllowed("setJobPriority");
  301.       if (var4 != null) {
  302.          return var4;
  303.       } else {
  304.          JDPJob var5 = this.getJob(var1);
  305.          var5.appendJobLog("Job Priority changed from " + Integer.toString(var5.getJobPriority()) + " to " + Integer.toString(var2) + " by: " + var3 + " on " + (new Date()).toString());
  306.          var5.getActiveJob().setPriority(var2);
  307.          var5.setJobPriority(var2);
  308.          return null;
  309.       }
  310.    }
  311.  
  312.    synchronized void unloadJobs() {
  313.       new Vector();
  314.       Date var3 = new Date();
  315.       long var4 = var3.getTime();
  316.       var3.setHours(0);
  317.       var3.setMinutes(0);
  318.       var3.setSeconds(0);
  319.       var4 -= var3.getTime();
  320.       if (this.systemJob.getJobStatus() == 4) {
  321.          this.systemJob.setQueuedDate(var3);
  322.          this.systemJob.setQueuedTime(var4);
  323.       }
  324.  
  325.       for(int var6 = 0; var6 < this.jobs.size(); ++var6) {
  326.          JDPJob var7 = (JDPJob)this.jobs.elementAt(var6);
  327.          String var8 = this.utils.replace(var7.getJobLog(), "'", "''");
  328.          if (dbtype.indexOf(JDPJagg.INFORMIX) >= 0) {
  329.             var8 = var8.replace('\n', '|');
  330.             var8 = var8.replace('\r', '|');
  331.             var8 = var8.replace('\t', ' ');
  332.             if (var8.length() > 255) {
  333.                var8 = var8.substring(0, 255);
  334.             }
  335.          }
  336.  
  337.          String var9 = "Job Log contains invalid characters that could not be inserted into log table";
  338.          if (var7.getSkipJobLog()) {
  339.             var8 = var9;
  340.          }
  341.  
  342.          String var10 = var7.getObjectConstructor();
  343.          if (var10.length() > 240) {
  344.             var10 = var10.substring(0, 240);
  345.          }
  346.  
  347.          var10 = this.utils.replace(var10, "'", "''");
  348.          String var11 = var7.getObjectParm();
  349.          if (var11.length() > 240) {
  350.             var11 = var11.substring(0, 240);
  351.          }
  352.  
  353.          var11 = this.utils.replace(var11, "'", "''");
  354.          if (var7.getLogEventNow()) {
  355.             String var12 = "-1";
  356.             String var13 = "";
  357.             if (var7.getNotifyNow()) {
  358.                var12 = Integer.toString(var7.getNotifyUser());
  359.                var13 = var7.getNotifyVia();
  360.             }
  361.  
  362.             long var14 = var7.getEndDate().getTime() + var7.getEndTime() - var7.getStartDate().getTime() - var7.getStartTime();
  363.             String var2 = "INSERT INTO JDPEvtLo (EventId, JDPSystem, EventName, EvtSource, Category, " + "UserName, Computer, QueueDate, QueueTime, JobQueue, SubSystem, StartDate, StartTime, " + "EndDate, EndTime, ObjectType, Object, ObjectParm, ObjectCons, Notified, NotifyVia, " + "TotalTime, FinalSts, EventLog) " + "VALUES(" + var7.getJobNumber() + ", " + "'" + this.utils.replace(var7.getJDPSystem(), "'", "''") + "', " + "'" + this.utils.replace(var7.getJobName(), "'", "''") + "', " + "'JDPSubsystemMgr', " + "'" + (String)this.eventTypeDesc.elementAt(this.eventTypeCode.indexOf(var7.getEventType())) + "', " + "'" + this.utils.replace(var7.getJobOwner(), "'", "''") + "', " + "'" + this.JDPDomain + "', " + "" + JDPDate.formatForSql(var7.getQueuedDate(), dbtype) + ", " + "" + Long.toString(var7.getQueuedTime()) + ", " + "'" + this.utils.replace(var7.getJobQueue(), "'", "''") + "', " + "'" + this.utils.replace(var7.getSubsystem(), "'", "''") + "', " + "" + JDPDate.formatForSql(var7.getStartDate(), dbtype) + ", " + "" + Long.toString(var7.getStartTime()) + ", " + "" + JDPDate.formatForSql(var7.getEndDate(), dbtype) + ", " + "" + Long.toString(var7.getEndTime()) + ", " + "'" + var7.getObjectType() + "', " + "'" + this.utils.replace(var7.getObject(), "'", "''") + "', " + "'" + var11 + "', " + "'" + var10 + "', " + "" + var12 + ", " + "'" + var13 + "', " + "" + Long.toString(var14) + ", " + "" + Integer.toString(var7.getJobStatus()) + ", " + "'" + var8 + "'" + ")";
  364.             Vector var1 = new Vector();
  365.             int var16 = this.jaggSQL1.execSQL(var2, var1);
  366.             if (var16 < 0) {
  367.                var2 = "INSERT INTO JDPEvtLo (EventId, JDPSystem, EventName, EvtSource, Category, " + "UserName, Computer, QueueDate, QueueTime, JobQueue, SubSystem, StartDate, StartTime, " + "EndDate, EndTime, ObjectType, Object, ObjectParm, ObjectCons, Notified, NotifyVia, " + "TotalTime, FinalSts, EventLog) " + "VALUES(" + var7.getJobNumber() + ", " + "'" + this.utils.replace(var7.getJDPSystem(), "'", "''") + "', " + "'" + this.utils.replace(var7.getJobName(), "'", "''") + "', " + "'JDPSubsystemMgr', " + "'" + (String)this.eventTypeDesc.elementAt(this.eventTypeCode.indexOf(var7.getEventType())) + "', " + "'" + this.utils.replace(var7.getJobOwner(), "'", "''") + "', " + "'" + this.JDPDomain + "', " + "" + JDPDate.formatForSql(var7.getQueuedDate(), dbtype) + ", " + "" + Long.toString(var7.getQueuedTime()) + ", " + "'" + this.utils.replace(var7.getJobQueue(), "'", "''") + "', " + "'" + this.utils.replace(var7.getSubsystem(), "'", "''") + "', " + "" + JDPDate.formatForSql(var7.getStartDate(), dbtype) + ", " + "" + Long.toString(var7.getStartTime()) + ", " + "" + JDPDate.formatForSql(var7.getEndDate(), dbtype) + ", " + "" + Long.toString(var7.getEndTime()) + ", " + "'" + var7.getObjectType() + "', " + "'" + this.utils.replace(var7.getObject(), "'", "''") + "', " + "'" + var11 + "', " + "'" + var10 + "', " + "" + var12 + ", " + "'" + var13 + "', " + "" + Long.toString(var14) + ", " + "" + Integer.toString(var7.getJobStatus()) + ", " + "'" + var9 + "'" + ")";
  368.                var1 = new Vector();
  369.                this.jaggSQL1.execSQL(var2, var1);
  370.             }
  371.  
  372.             var7.setLogEventNow(false);
  373.          }
  374.  
  375.          if (var7.getNotifyNow()) {
  376.             this.notifyQueue.addElement(var7);
  377.             var7.setNotifyNow(false);
  378.          }
  379.  
  380.          if (var7.getJobChanged() || var7.equals(this.systemJob)) {
  381.             var7.setJobChanged(false);
  382.             if (var7.getJobStatus() != 10 && var7.getJobStatus() != 9) {
  383.                String var25 = "UPDATE JDPJobA SET JobOwner = '" + this.utils.replace(var7.getJobOwner(), "'", "''") + "', " + "EventType = '" + var7.getEventType() + "', " + "QueueName = '" + this.utils.replace(var7.getJobQueue(), "'", "''") + "', " + "SubSysName = '" + this.utils.replace(var7.getSubsystem(), "'", "''") + "', " + "JobStatus = " + Integer.toString(var7.getJobStatus()) + ", " + "JobPriorty = " + Integer.toString(var7.getJobPriority()) + ", " + "QuePriorty = " + Integer.toString(var7.getJobQueuePriority()) + ", " + "ObjectType = '" + var7.getObjectType() + "', " + "Object = '" + this.utils.replace(var7.getObject(), "'", "''") + "', " + "ObjectParm = '" + var11 + "', " + "ObjectCons = '" + var10 + "', " + "NotifyUser = " + Integer.toString(var7.getNotifyUser()) + ", " + "NotifyVia = '" + var7.getNotifyVia() + "', " + "NotifyOn = '" + var7.getNotifyOn() + "', " + "LogEvent = '" + var7.getLogEvent() + "', " + "QueueDate = " + JDPDate.formatForSql(var7.getQueuedDate(), dbtype) + ", " + "QueueTime = " + Long.toString(var7.getQueuedTime()) + ", " + "StartDate = " + JDPDate.formatForSql(var7.getStartDate(), dbtype) + ", " + "StartTime = " + Long.toString(var7.getStartTime()) + ", " + "EndDate = " + JDPDate.formatForSql(var7.getEndDate(), dbtype) + ", " + "EndTime = " + Long.toString(var7.getEndTime()) + ", " + "JobLog = '" + var8 + "'" + " WHERE JobNumber = " + var7.getJobNumber();
  384.                Vector var19 = new Vector();
  385.                int var34 = this.jaggSQL1.execSQL(var25, var19);
  386.                if (var34 < 0) {
  387.                   var7.setSkipJobLog(true);
  388.                   var25 = "UPDATE JDPJobA SET JobOwner = '" + this.utils.replace(var7.getJobOwner(), "'", "''") + "', " + "EventType = '" + var7.getEventType() + "', " + "QueueName = '" + this.utils.replace(var7.getJobQueue(), "'", "''") + "', " + "SubSysName = '" + this.utils.replace(var7.getSubsystem(), "'", "''") + "', " + "JobStatus = " + Integer.toString(var7.getJobStatus()) + ", " + "JobPriorty = " + Integer.toString(var7.getJobPriority()) + ", " + "QuePriorty = " + Integer.toString(var7.getJobQueuePriority()) + ", " + "ObjectType = '" + var7.getObjectType() + "', " + "Object = '" + this.utils.replace(var7.getObject(), "'", "''") + "', " + "ObjectParm = '" + var11 + "', " + "ObjectCons = '" + var10 + "', " + "NotifyUser = " + Integer.toString(var7.getNotifyUser()) + ", " + "NotifyVia = '" + var7.getNotifyVia() + "', " + "NotifyOn = '" + var7.getNotifyOn() + "', " + "LogEvent = '" + var7.getLogEvent() + "', " + "QueueDate = " + JDPDate.formatForSql(var7.getQueuedDate(), dbtype) + ", " + "QueueTime = " + Long.toString(var7.getQueuedTime()) + ", " + "StartDate = " + JDPDate.formatForSql(var7.getStartDate(), dbtype) + ", " + "StartTime = " + Long.toString(var7.getStartTime()) + ", " + "EndDate = " + JDPDate.formatForSql(var7.getEndDate(), dbtype) + ", " + "EndTime = " + Long.toString(var7.getEndTime()) + ", " + "JobLog = '" + var9 + "'" + " WHERE JobNumber = " + var7.getJobNumber();
  389.                   var19 = new Vector();
  390.                   this.jaggSQL1.execSQL(var25, var19);
  391.                } else if (var34 == 0) {
  392.                   var25 = "INSERT INTO JDPJobA (JDPSystem, JobName, JobNumber, EventType, JobOwner, QueueName, " + "SubSysName, JobStatus, JobPriorty, QuePriorty, ObjectType, Object, ObjectParm, ObjectCons, " + "NotifyUser, NotifyVia, NotifyOn, LogEvent, " + "QueueDate, QueueTime, StartDate, StartTime, EndDate, EndTime, JobLog) " + "VALUES('" + var7.getJDPSystem() + "', " + "'" + this.utils.replace(var7.getJobName(), "'", "''") + "', " + "" + var7.getJobNumber() + ", " + "'" + var7.getEventType() + "', " + "'" + this.utils.replace(var7.getJobOwner(), "'", "''") + "', " + "'" + this.utils.replace(var7.getJobQueue(), "'", "''") + "', " + "'" + this.utils.replace(var7.getSubsystem(), "'", "''") + "', " + "" + Integer.toString(var7.getJobStatus()) + ", " + "" + Integer.toString(var7.getJobPriority()) + ", " + "" + Integer.toString(var7.getJobQueuePriority()) + ", " + "'" + var7.getObjectType() + "', " + "'" + this.utils.replace(var7.getObject(), "'", "''") + "', " + "'" + var11 + "', " + "'" + var10 + "', " + "" + Integer.toString(var7.getNotifyUser()) + ", " + "'" + var7.getNotifyVia() + "', " + "'" + var7.getNotifyOn() + "', " + "'" + var7.getLogEvent() + "', " + "" + JDPDate.formatForSql(var7.getQueuedDate(), dbtype) + ", " + "" + Long.toString(var7.getQueuedTime()) + ", " + "" + JDPDate.formatForSql(var7.getStartDate(), dbtype) + ", " + "" + Long.toString(var7.getStartTime()) + ", " + "" + JDPDate.formatForSql(var7.getEndDate(), dbtype) + ", " + "" + Long.toString(var7.getEndTime()) + ", " + "'" + var8 + "'" + ")";
  393.                   var19 = new Vector();
  394.                   var34 = this.jaggSQL1.execSQL(var25, var19);
  395.                   if (var34 < 0) {
  396.                      var7.setSkipJobLog(true);
  397.                      var25 = "INSERT INTO JDPJobA (JDPSystem, JobName, JobNumber, EventType, JobOwner, QueueName, " + "SubSysName, JobStatus, JobPriorty, QuePriorty, ObjectType, Object, ObjectParm, ObjectCons, " + "NotifyUser, NotifyVia, NotifyOn, LogEvent, " + "QueueDate, QueueTime, StartDate, StartTime, EndDate, EndTime, JobLog) " + "VALUES('" + var7.getJDPSystem() + "', " + "'" + this.utils.replace(var7.getJobName(), "'", "''") + "', " + "" + var7.getJobNumber() + ", " + "'" + var7.getEventType() + "', " + "'" + this.utils.replace(var7.getJobOwner(), "'", "''") + "', " + "'" + this.utils.replace(var7.getJobQueue(), "'", "''") + "', " + "'" + this.utils.replace(var7.getSubsystem(), "'", "''") + "', " + "" + Integer.toString(var7.getJobStatus()) + ", " + "" + Integer.toString(var7.getJobPriority()) + ", " + "" + Integer.toString(var7.getJobQueuePriority()) + ", " + "'" + var7.getObjectType() + "', " + "'" + this.utils.replace(var7.getObject(), "'", "''") + "', " + "'" + var11 + "', " + "'" + var10 + "', " + "" + Integer.toString(var7.getNotifyUser()) + ", " + "'" + var7.getNotifyVia() + "', " + "'" + var7.getNotifyOn() + "', " + "'" + var7.getLogEvent() + "', " + "" + JDPDate.formatForSql(var7.getQueuedDate(), dbtype) + ", " + "" + Long.toString(var7.getQueuedTime()) + ", " + "" + JDPDate.formatForSql(var7.getStartDate(), dbtype) + ", " + "" + Long.toString(var7.getStartTime()) + ", " + "" + JDPDate.formatForSql(var7.getEndDate(), dbtype) + ", " + "" + Long.toString(var7.getEndTime()) + ", " + "'" + var9 + "'" + ")";
  398.                      var19 = new Vector();
  399.                      this.jaggSQL1.execSQL(var25, var19);
  400.                   }
  401.                }
  402.             } else {
  403.                String var24 = "DELETE FROM JDPJobA " + " WHERE JobNumber = " + var7.getJobNumber();
  404.                Vector var18 = new Vector();
  405.                this.jaggSQL1.execSQL(var24, var18);
  406.             }
  407.          }
  408.       }
  409.  
  410.       this.removeCompletedJobs();
  411.    }
  412.  
  413.    int getTrialDaysRemaining() {
  414.       this.jaggSQL.getSEP();
  415.       Vector var1 = new Vector();
  416.       int var2 = 0;
  417.       if (this.JDPJaggDir != null) {
  418.          String var3 = this.JDPJaggDir + "JDPJagg.exe CheckLicense";
  419.          this.jaggSQL.setFCTN("System");
  420.          this.jaggSQL.setFCTNP("");
  421.          var2 = this.jaggSQL.execSQL(var3, var1);
  422.          if (var2 <= 0) {
  423.             System.out.println(this.jaggSQL.getError());
  424.          }
  425.       } else {
  426.          this.jaggSQL.setFCTN("UnixDaysRemaining");
  427.          this.jaggSQL.setFCTNP("");
  428.          var2 = this.jaggSQL.execSQL("", var1);
  429.       }
  430.  
  431.       this.jaggSQL.setFCTN("");
  432.       if (var2 < 0) {
  433.          var2 = 0;
  434.       }
  435.  
  436.       return var2;
  437.    }
  438.  
  439.    public synchronized String setJobQueueHeld(String var1, boolean var2) {
  440.       String var3 = this.checkTaskAllowed("setJobQueueHeld");
  441.       if (var3 != null) {
  442.          return var3;
  443.       } else {
  444.          JDPJobQueue var4 = this.getJobQueue(var1);
  445.          var4.setQueueHeld(var2);
  446.          Vector var5 = new Vector();
  447.          String var6 = "UPDATE JDPQueue SET QueueHeld = '" + (var2 ? "Y" : "N") + "' WHERE QueueName = '" + var1 + "'";
  448.          this.jaggSQL.execSQL(var6, var5);
  449.          return null;
  450.       }
  451.    }
  452.  
  453.    public Object getJobRunningClass(String var1) {
  454.       for(int var2 = 0; var2 < this.jobs.size(); ++var2) {
  455.          JDPJob var3 = (JDPJob)this.jobs.elementAt(var2);
  456.          if (var3.getObject().equals(var1) && var3.activeJob != null) {
  457.             return var3.activeJob.thisInstance;
  458.          }
  459.       }
  460.  
  461.       return null;
  462.    }
  463.  
  464.    JDPJob submitJob(String var1, String var2, String var3, String var4, String var5, String var6, String var7, String var8, String var9, int var10, int var11, boolean var12, int var13, String var14, String var15, String var16) {
  465.       String var17 = this.checkJobSubmissionAllowed(var5, var3, var7);
  466.       if (var17 != null) {
  467.          return null;
  468.       } else {
  469.          var8 = this.utils.replace(var8, " ", "");
  470.          JDPJob var18 = this.queueMgr.submitJob(var1, var2, var3, var4, var5, var6, var7, var8, var9, var10, var11, var12, var13, var14, var15, var16);
  471.          if (var18 == null) {
  472.             return null;
  473.          } else {
  474.             this.addJobName(var5, var3, var7);
  475.             return var18;
  476.          }
  477.       }
  478.    }
  479.  
  480.    String submitJob(String var1, String var2, String var3, String var4, String var5, String var6, String var7, String var8, String var9, boolean var10, int var11, int var12, int var13, String var14, String var15, String var16) {
  481.       String var17 = this.checkJobSubmissionAllowed(var5, var3, var7);
  482.       if (var17 != null) {
  483.          return var17;
  484.       } else {
  485.          var8 = this.utils.replace(var8, " ", "");
  486.          JDPJob var18 = this.queueMgr.submitJob(var1, var2, var3, var4, var5, var6, var7, var8, var9, var11, var12, var10, var13, var14, var15, var16);
  487.          if (var18 == null) {
  488.             return "Failed to submit job because Job Queue not found: " + var1;
  489.          } else {
  490.             this.addJobName(var5, var3, var7);
  491.             return null;
  492.          }
  493.       }
  494.    }
  495.  
  496.    public String submitJob(String var1, String var2, String var3, String var4, String var5, String var6, String var7, String var8, int var9, int var10, boolean var11, int var12, String var13, String var14, String var15) {
  497.       String var16 = this.checkJobSubmissionAllowed(var4, var3, var6);
  498.       if (var16 != null) {
  499.          return var16;
  500.       } else {
  501.          var7 = this.utils.replace(var7, " ", "");
  502.          JDPJob var17 = this.queueMgr.submitJob(var1, var2, var3, "D", var4, var5, var6, var7, var8, var9, var10, var11, var12, var13, var14, var15);
  503.          if (var17 == null) {
  504.             return "Failed to submit job because Job Queue not found: " + var1;
  505.          } else {
  506.             this.addJobName(var4, var3, var6);
  507.             return "Jobnumber:" + Integer.toString(var17.getJobNumber());
  508.          }
  509.       }
  510.    }
  511.  
  512.    void registerJob(JDPJob var1) {
  513.       this.jobs.addElement(var1);
  514.    }
  515.  
  516.    void removeCompletedJobs() {
  517.       boolean var1 = false;
  518.       int var2 = this.jobs.size();
  519.  
  520.       for(int var3 = 0; var3 < var2; ++var3) {
  521.          JDPJob var4 = (JDPJob)this.jobs.elementAt(var3);
  522.          if ((var4.getJobStatus() == 10 || var4.getJobStatus() == 9) && !var4.getLogEventNow() && !var4.getJobChanged() && !var4.getNotifyNow()) {
  523.             this.jobs.removeElement(var4);
  524.             --var3;
  525.             --var2;
  526.             var1 = true;
  527.          }
  528.       }
  529.  
  530.       System.gc();
  531.       if (var1) {
  532.          System.runFinalization();
  533.       }
  534.  
  535.    }
  536.  
  537.    public Object getJobForName(String var1) {
  538.       for(int var2 = 0; var2 < this.jobs.size(); ++var2) {
  539.          JDPJob var3 = (JDPJob)this.jobs.elementAt(var2);
  540.          if (var3.getJobName().equals(var1) && var3.activeJob != null) {
  541.             return var3.activeJob.thisInstance;
  542.          }
  543.       }
  544.  
  545.       return null;
  546.    }
  547.  
  548.    String checkJobSubmissionAllowed(String var1, String var2, String var3) {
  549.       if (this.isValidSystemUser(var1)) {
  550.          return null;
  551.       } else if (enterpriseServerLevel == 3) {
  552.          return null;
  553.       } else if (enterpriseServerLevel == 0) {
  554.          String var10 = this.utils.replace(this.systemMsg[0], "%j", var2);
  555.          this.println(var10);
  556.          return var10;
  557.       } else {
  558.          if (var3.startsWith("Prelim")) {
  559.             var3 = var2;
  560.          }
  561.  
  562.          this.removeOldJobs();
  563.          if (enterpriseJobsAllowed > this.prevJobNames.size()) {
  564.             return null;
  565.          } else if (this.prevJobNames == null) {
  566.             this.println(this.systemMsg[2]);
  567.             return this.systemMsg[2];
  568.          } else {
  569.             for(int var4 = 0; var4 < this.prevJobNames.size(); ++var4) {
  570.                String var5 = (String)this.prevJobNames.elementAt(var4);
  571.                if (var5.startsWith(var2 + "|" + var3)) {
  572.                   return null;
  573.                }
  574.             }
  575.  
  576.             String var6 = this.systemMsg[1];
  577.             var6 = this.utils.replace(var6, "%j", var2);
  578.             var6 = this.utils.replace(var6, "%d", Integer.toString(enterpriseJobsAllowed));
  579.             String var11 = "Standard or High End Server";
  580.             if (enterpriseServerLevel == 2) {
  581.                var11 = "High End Server";
  582.             }
  583.  
  584.             var6 = this.utils.replace(var6, "%s", var11);
  585.             this.println(var6);
  586.             return var6;
  587.          }
  588.       }
  589.    }
  590.  
  591.    public JDPSubsystemMgr(JaggServer var1) {
  592.       this.server = var1;
  593.       enterpriseServerLevel = this.server.enterpriseServerLevel;
  594.       enterpriseJobsAllowed = this.server.enterpriseJobsAllowed;
  595.       purgeJobNameAfterDays = this.server.purgeJobNameAfterDays;
  596.       JDPJagg.activated = true;
  597.       JDPButton.activated = true;
  598.       JDPJagg.version = JDesignerPro.version;
  599.       this.mainThreadGroup = new ThreadGroup("JDPSubsystemMgr");
  600.       this.connectionMgr = new JDPJaggCxnMgr(this, var1);
  601.       this.connectionMgr.start();
  602.       this.userMgr = new JDPJaggUserMgr(this);
  603.       this.userMgr.start();
  604.       this.jobs = new Vector();
  605.       this.notifyQueue = new Vector();
  606.       boolean var2 = this.loadJaggSettings();
  607.       if (var2) {
  608.          ((Thread)this).start();
  609.       }
  610.    }
  611.  
  612.    void logException(Exception var1) {
  613.       if (this.systemJob != null) {
  614.          this.systemJob.logException(var1);
  615.       } else {
  616.          ((Throwable)var1).printStackTrace();
  617.       }
  618.    }
  619.  
  620.    public Object getJobForNumber(int var1) {
  621.       for(int var2 = 0; var2 < this.jobs.size(); ++var2) {
  622.          JDPJob var3 = (JDPJob)this.jobs.elementAt(var2);
  623.          if (var3.getJobNumber() == var1 && var3.activeJob != null) {
  624.             return var3.activeJob.thisInstance;
  625.          }
  626.       }
  627.  
  628.       return null;
  629.    }
  630.  
  631.    public String getJDPSystemSetup(String var1) {
  632.       for(int var2 = 0; var2 < this.systems.size(); ++var2) {
  633.          String var3 = (String)this.systems.elementAt(var2);
  634.          if (var3.startsWith(var1)) {
  635.             return var3.substring(5);
  636.          }
  637.       }
  638.  
  639.       return null;
  640.    }
  641.  
  642.    public String getJobLog(int var1) {
  643.       return this.getJob(var1).getJobLog();
  644.    }
  645.  
  646.    public void run() {
  647.       if (!this.serverRunning) {
  648.          while(!this.loadJaggSettings()) {
  649.             this.waitFor(30);
  650.          }
  651.  
  652.          this.serverRunning = true;
  653.          this.loadPrevJobNames();
  654.          this.loadDisallowedTaskList();
  655.          String var1 = this.getJDPSystemSetup("01001");
  656.          this.jaggSQL = this.setupJaggInstance(var1, "01001");
  657.          if (this.getTrialDaysRemaining() == 0) {
  658.             System.out.println("Trial Period Expired. Please purchase a License from BulletProof.");
  659.             System.out.println("http://www.bulletproof.com. (800)505-0105 (408)374-2323 sales@bulletproof.com.");
  660.          } else {
  661.             this.utils = new JDPUtils((JDPUser)null);
  662.             this.utils.jaggSQL = new JDPJagg(this.JDPJaggPath);
  663.             dbtype = this.utils.getDataSourceType(this.jaggSQL);
  664.             this.jaggSQL1 = this.setupJaggInstance(var1);
  665.  
  666.             while(!this.check4Table("JDPJobNo")) {
  667.                this.waitFor(30);
  668.             }
  669.  
  670.             this.loadEventTypes();
  671.  
  672.             while(!this.createSubsystems()) {
  673.                this.waitFor(30);
  674.             }
  675.  
  676.             this.startSystemJobs();
  677.  
  678.             while(!this.shutdownRequested) {
  679.                this.unloadJobs();
  680.                if (!this.updateRequested) {
  681.                   try {
  682.                      this.sleeping = true;
  683.                      Thread.sleep(60000L);
  684.                   } catch (Exception var2) {
  685.                   }
  686.                }
  687.  
  688.                this.updateRequested = false;
  689.                this.sleeping = false;
  690.             }
  691.  
  692.          }
  693.       }
  694.    }
  695.  
  696.    public boolean triggerEvent(String var1, String var2) {
  697.       JDPScheduler var3 = (JDPScheduler)this.schedulerJob.getInstance();
  698.       if (var3 != null) {
  699.          return var3.triggerEvent(var1, var2);
  700.       } else {
  701.          this.println("Failed to get handle to Scheduler to trigger event: " + var2);
  702.          return false;
  703.       }
  704.    }
  705.  
  706.    public String setJobJobQueue(int var1, String var2, String var3) {
  707.       String var4 = this.checkTaskAllowed("setJobJobQueue");
  708.       if (var4 != null) {
  709.          return var4;
  710.       } else {
  711.          JDPJob var5 = this.getJob(var1);
  712.          var5.appendJobLog("Job Queue changed from " + var5.getJobQueue() + " to " + var2 + " by: " + var3 + " on " + (new Date()).toString());
  713.          JDPJobQueue var6 = this.queueMgr.getJobQueue(var5.getJobQueue());
  714.          var6.removeJob(var5);
  715.          var6 = this.queueMgr.getJobQueue(var2);
  716.          var6.submitJob(var5);
  717.          return null;
  718.       }
  719.    }
  720.  
  721.    public String getSubsystems() {
  722.       String var1 = " " + this.jaggSQL.getSEP();
  723.       StringBuffer var2 = new StringBuffer();
  724.  
  725.       try {
  726.          if (this.subsystems != null) {
  727.             for(int var3 = 0; var3 < this.subsystems.size(); ++var3) {
  728.                JDPSubsystem var4 = (JDPSubsystem)this.subsystems.elementAt(var3);
  729.                String var5 = var4.getSubsystemDesc();
  730.                if (var5 == null) {
  731.                   var5 = "";
  732.                }
  733.  
  734.                var2.append(var4.getSubsystemName());
  735.                var2.append(var1);
  736.                var2.append(var5);
  737.                var2.append(var1);
  738.                var2.append(Integer.toString(var4.getMaxJobs()));
  739.                var2.append(var1);
  740.                var2.append(var4.getSubsystemHeld() ? "Y" : "N");
  741.                var2.append(var1);
  742.                var2.append(Integer.toString(((Thread)var4).getPriority()));
  743.                var2.append(var1);
  744.             }
  745.          }
  746.       } catch (Exception var7) {
  747.          this.logException(var7);
  748.       }
  749.  
  750.       return var2.toString();
  751.    }
  752.  
  753.    public String[] getSystems() {
  754.       String[] var1 = new String[this.systems.size()];
  755.  
  756.       for(int var2 = 0; var2 < this.systems.size(); ++var2) {
  757.          var1[var2] = (String)this.systems.elementAt(var2);
  758.       }
  759.  
  760.       return var1;
  761.    }
  762.  
  763.    void println(Object var1) {
  764.       if (this.systemJob != null) {
  765.          this.systemJob.appendJobLog(var1.toString());
  766.       } else {
  767.          System.out.println(var1);
  768.       }
  769.    }
  770.  
  771.    public String setJobHeld(int var1, boolean var2, String var3) {
  772.       JDPJob var4 = this.getJob(var1);
  773.       if (var2) {
  774.          if (var4.getJobStatus() == 4) {
  775.             String var5 = this.checkTaskAllowed("setJobHeldWhenActive");
  776.             if (var5 != null) {
  777.                return var5;
  778.             }
  779.  
  780.             var4.getActiveJob().suspend();
  781.             var4.setJobStatus(5);
  782.          }
  783.  
  784.          if (var4.getJobStatus() == 2) {
  785.             String var6 = this.checkTaskAllowed("setJobHeldWhenQueued");
  786.             if (var6 != null) {
  787.                return var6;
  788.             }
  789.  
  790.             var4.setJobStatus(3);
  791.             this.queueMgr.reOrderQueue();
  792.          }
  793.  
  794.          var4.appendJobLog("Job held by: " + var3 + " on " + (new Date()).toString());
  795.       } else {
  796.          if (var4.getJobStatus() == 5) {
  797.             String var7 = this.checkTaskAllowed("setJobReleasedWhenActive");
  798.             if (var7 != null) {
  799.                return var7;
  800.             }
  801.  
  802.             var4.getActiveJob().resume();
  803.             var4.setJobStatus(4);
  804.          }
  805.  
  806.          if (var4.getJobStatus() == 3) {
  807.             String var8 = this.checkTaskAllowed("setJobReleasesWhenQueued");
  808.             if (var8 != null) {
  809.                return var8;
  810.             }
  811.  
  812.             var4.setJobStatus(2);
  813.             this.queueMgr.reOrderQueue();
  814.          }
  815.  
  816.          var4.appendJobLog("Job released by: " + var3 + " on " + (new Date()).toString());
  817.       }
  818.  
  819.       return null;
  820.    }
  821.  
  822.    synchronized void loadEventTypes() {
  823.       Vector var1 = new Vector();
  824.       String var2 = this.jaggSQL.getSEP();
  825.       this.eventTypeCode = new Vector();
  826.       this.eventTypeDesc = new Vector();
  827.       int var3 = this.jaggSQL.execSQL("SELECT EventType, TypeDesc FROM JDPEvtTy", var1);
  828.       if (var3 >= 1) {
  829.          for(int var4 = 0; var4 < var1.size(); ++var4) {
  830.             StringTokenizer var5 = new StringTokenizer((String)var1.elementAt(var4), var2);
  831.             this.eventTypeCode.addElement(var5.nextToken().trim());
  832.             this.eventTypeDesc.addElement(var5.nextToken().trim());
  833.          }
  834.  
  835.       }
  836.    }
  837.  
  838.    void savePrevJobNames() {
  839.       try {
  840.          FileOutputStream var1 = new FileOutputStream(this.JDPDirectory + "System" + File.separator + "Server.cfg");
  841.          String var2 = "";
  842.          if (this.NDSPath != null) {
  843.             var2 = "NDS:" + this.server.NDSusername + ";" + this.server.NDSpassword + "\u0005";
  844.          }
  845.  
  846.          if (this.prevJobNames != null) {
  847.             for(int var3 = 0; var3 < this.prevJobNames.size(); ++var3) {
  848.                var2 = var2 + (String)this.prevJobNames.elementAt(var3) + "\u0005";
  849.             }
  850.          }
  851.  
  852.          byte[] var7 = new byte[var2.length()];
  853.          var2.getBytes(0, var7.length, var7, 0);
  854.  
  855.          for(int var4 = 0; var4 < var7.length; ++var4) {
  856.             var7[var4] = (byte)(var7[var4] + 15);
  857.          }
  858.  
  859.          var1.write(var7);
  860.          var1.close();
  861.       } catch (Exception var6) {
  862.          this.logException(var6);
  863.       }
  864.    }
  865.  
  866.    JDPSubsystem getSubsystem(String var1) {
  867.       for(int var2 = 0; var2 < this.subsystems.size(); ++var2) {
  868.          JDPSubsystem var3 = (JDPSubsystem)this.subsystems.elementAt(var2);
  869.          if (var3.getSubsystemName().equals(var1)) {
  870.             return var3;
  871.          }
  872.       }
  873.  
  874.       return null;
  875.    }
  876.  
  877.    JDPJagg setupJaggInstanceFromSystem(String var1) {
  878.       String var2 = this.getJDPSystemSetup("01001");
  879.       return this.setupJaggInstance(var2);
  880.    }
  881.  
  882.    public JDPJob getJob(int var1) {
  883.       for(int var2 = 0; var2 < this.jobs.size(); ++var2) {
  884.          JDPJob var3 = (JDPJob)this.jobs.elementAt(var2);
  885.          if (var3.getJobNumber() == var1) {
  886.             return var3;
  887.          }
  888.       }
  889.  
  890.       return null;
  891.    }
  892.  
  893.    public String startSystemJob(String var1, String var2) {
  894.       JDPSubsystem var3 = this.getSubsystem(var1);
  895.       if (var3 != null) {
  896.          if (var3.getJob(var2) == null) {
  897.             if (var2.equals("JDPSubsystemMgr")) {
  898.                String var4 = "S";
  899.                String var5 = "JDPSubsystemMgr";
  900.                String var6 = "";
  901.                String var7 = "";
  902.                this.systemJob = this.submitJob("QSYSTEM", "01001", "JDPSubsystemMgr", "A", "JDPSubsystemMgr", var4, var5, var6, var7, 6, 5, false, -1, "", "", "B");
  903.             }
  904.  
  905.             if (var2.equals("JaggServer")) {
  906.                String var9 = "S";
  907.                String var12 = "JaggServer";
  908.                String var15 = "";
  909.                String var18 = "";
  910.                JaggServerCxn.jaggServerJob = this.submitJob("QSYSTEM", "01001", "JaggServer", "A", "JDPSubsystemMgr", var9, var12, var15, var18, 6, 5, false, -1, "", "", "B");
  911.             }
  912.  
  913.             if (var2.equals("JDPScheduler")) {
  914.                String var10 = "C";
  915.                String var13 = "JDPScheduler";
  916.                String var16 = "(JDPSubsystemMgr,JDPJob)";
  917.                String var19 = "JDPSubsystemMgr,JDPJob";
  918.                this.schedulerJob = this.submitJob("QSYSTEM", "01001", "JDPScheduler", "A", "JDPSubsystemMgr", var10, var13, var16, var19, 5, 5, false, -1, "", "", "B");
  919.                if (this.schedulerJob == null) {
  920.                   this.println("Failed to start JDPScheduler");
  921.                }
  922.             }
  923.  
  924.             if (var2.equals("JDPNotificationMgr")) {
  925.                String var11 = "C";
  926.                String var14 = "JDPNotificationMgr";
  927.                String var17 = "(JDPSubsystemMgr,JDPJob)";
  928.                String var20 = "JDPSubsystemMgr,JDPJob";
  929.                JDPJob var8 = this.submitJob("QSYSTEM", "01001", "JDPNotificationMgr", "A", "JDPSubsystemMgr", var11, var14, var17, var20, 5, 5, false, -1, "", "", "B");
  930.                if (var8 == null) {
  931.                   this.println("Failed to start JDPScheduler");
  932.                }
  933.             }
  934.  
  935.             return var2 + " successfully queued.";
  936.          } else {
  937.             return var2 + " is already started.";
  938.          }
  939.       } else {
  940.          this.println("System Error: Subsystem " + var1 + " not found.");
  941.          return "System Error: Subsystem " + var1 + " not found.";
  942.       }
  943.    }
  944.  
  945.    public String killJob(int var1, String var2) {
  946.       String var3 = this.checkTaskAllowed("killJob");
  947.       if (var3 != null) {
  948.          return var3;
  949.       } else {
  950.          JDPJob var4 = this.getJob(var1);
  951.          if (var4.getJobStatus() != 4 && var4.getJobStatus() != 5) {
  952.             return "Job no longer Active. Check Job Log Inquiry";
  953.          } else {
  954.             var4.setJobStatus(4);
  955.             var4.getActiveJob().stop();
  956.             var4.getActiveJob().completeJob(false);
  957.             var4.appendJobLog("Job terminated by: " + var2 + " on " + (new Date()).toString());
  958.             var4.setJobStatus(9);
  959.             return null;
  960.          }
  961.       }
  962.    }
  963.  
  964.    public void requestUpdate() {
  965.       this.updateRequested = true;
  966.       if (this.sleeping) {
  967.          ((Thread)this).interrupt();
  968.       }
  969.  
  970.    }
  971.  
  972.    void startSystemJobs() {
  973.       this.queueMgr = new JDPJobQueueMgr(this);
  974.       this.queueMgr.setPriority(5);
  975.       this.queueMgr.start();
  976.       this.startSystemJob("SSYSTEM", "JDPSubsystemMgr");
  977.       this.startSystemJob("SSYSTEM", "JaggServer");
  978.       this.startSystemJob("SSYSTEM", "JDPScheduler");
  979.       this.startSystemJob("SSYSTEM", "JDPNotificationMgr");
  980.    }
  981.  
  982.    boolean isValidSystemUser(String var1) {
  983.       return var1.equals("JDPSubsystemMgr");
  984.    }
  985.  
  986.    void addJobName(String var1, String var2, String var3) {
  987.       if (!this.isValidSystemUser(var1)) {
  988.          if (enterpriseServerLevel != 3) {
  989.             if (enterpriseServerLevel != 0) {
  990.                if (this.prevJobNames != null) {
  991.                   if (var3.startsWith("Prelim")) {
  992.                      var3 = var2;
  993.                   }
  994.  
  995.                   this.removeOldJobs();
  996.                   int var4 = -1;
  997.  
  998.                   for(int var5 = 0; var5 < this.prevJobNames.size(); ++var5) {
  999.                      String var6 = (String)this.prevJobNames.elementAt(var5);
  1000.                      if (var6.startsWith(var2 + "|" + var3)) {
  1001.                         var4 = var5;
  1002.                         break;
  1003.                      }
  1004.                   }
  1005.  
  1006.                   String var7 = Long.toString((new Date()).getTime());
  1007.                   if (var4 == -1) {
  1008.                      if (this.prevJobNames.size() < enterpriseJobsAllowed) {
  1009.                         if (var3.equals("")) {
  1010.                            var3 = " ";
  1011.                         }
  1012.  
  1013.                         this.prevJobNames.addElement(var2 + "|" + var3 + "|" + var7);
  1014.                      }
  1015.                   } else {
  1016.                      if (var3.equals("")) {
  1017.                         var3 = " ";
  1018.                      }
  1019.  
  1020.                      this.prevJobNames.setElementAt(var2 + "|" + var3 + "|" + var7, var4);
  1021.                   }
  1022.  
  1023.                   this.savePrevJobNames();
  1024.                }
  1025.  
  1026.             }
  1027.          }
  1028.       }
  1029.    }
  1030.  
  1031.    boolean createSubsystems() {
  1032.       String var2 = this.jaggSQL.getSEP();
  1033.       Vector var3 = new Vector();
  1034.       String var4 = "SELECT SubSysName, SubSysDesc, maxJobs, priority, SubSysHeld " + "FROM JDPSubs ORDER BY SubSysName";
  1035.       int var5 = this.jaggSQL.execSQL(var4, var3);
  1036.       if (var5 == -1) {
  1037.          return false;
  1038.       } else {
  1039.          this.subsystems = new Vector();
  1040.  
  1041.          for(int var6 = 0; var6 < var5; ++var6) {
  1042.             StringTokenizer var1 = new StringTokenizer((String)var3.elementAt(var6), var2);
  1043.             JDPSubsystem var7 = new JDPSubsystem(this, var1.nextToken().trim());
  1044.             var7.setSubsystemDesc(var1.nextToken().trim());
  1045.             var7.setMaxJobs(Integer.parseInt(var1.nextToken().trim()));
  1046.             int var8 = Integer.parseInt(var1.nextToken().trim());
  1047.             if (var8 <= 10 && var8 >= 1) {
  1048.                try {
  1049.                   ((Thread)var7).setPriority(var8);
  1050.                } catch (Exception var10) {
  1051.                   this.println("Failed to adjust thread priority to " + var8);
  1052.                }
  1053.             }
  1054.  
  1055.             String var9 = var1.nextToken().trim();
  1056.             var7.setSubsystemHeld(var9.equals("Y"));
  1057.             this.subsystems.addElement(var7);
  1058.             ((Thread)var7).start();
  1059.          }
  1060.  
  1061.          return true;
  1062.       }
  1063.    }
  1064.  
  1065.    public boolean loadJaggSettings() {
  1066.       this.systems = new Vector();
  1067.       Object var1 = null;
  1068.  
  1069.       try {
  1070.          FileInputStream var3 = new FileInputStream("JDesignerPro.ini");
  1071.          InputStream var8 = (InputStream)var3;
  1072.          DataInputStream var2 = new DataInputStream(var8);
  1073.          boolean var4 = false;
  1074.  
  1075.          for(String var5 = var2.readLine(); var5 != null; var5 = var2.readLine()) {
  1076.             if (var5.length() > 10) {
  1077.                if (var5.substring(0, 7).compareTo("DOMAIN=") == 0) {
  1078.                   this.JDPDomain = this.addDelimiter(var5.substring(7));
  1079.                }
  1080.  
  1081.                if (var5.substring(0, 7).compareTo("JDPDIR=") == 0) {
  1082.                   this.JDPDirectory = this.addDelimiter(var5.substring(7));
  1083.                }
  1084.  
  1085.                if (var5.substring(0, 8).compareTo("JAGGDIR=") == 0) {
  1086.                   this.JDPJaggDir = this.addDelimiter(var5.substring(8));
  1087.                }
  1088.  
  1089.                if (var5.substring(0, 9).compareTo("COMPILER=") == 0) {
  1090.                   this.JDPCompiler = var5.substring(9);
  1091.                }
  1092.  
  1093.                if (var5.substring(0, 8).compareTo("CLASSES=") == 0) {
  1094.                   this.JDPClasses = var5.substring(8);
  1095.                }
  1096.  
  1097.                if (var5.substring(0, 8).compareTo("NDSPATH=") == 0 && var5.length() > 8) {
  1098.                   this.NDSPath = var5.substring(8);
  1099.                }
  1100.  
  1101.                if (var5.length() > 15 && var5.substring(0, 15).compareTo("JAGGSERVERPORT=") == 0) {
  1102.                   JDPJagg.setDefaultPort(Integer.parseInt(var5.substring(15)));
  1103.                }
  1104.  
  1105.                if (var5.length() > 5 && var4) {
  1106.                   this.systems.addElement(var5);
  1107.                }
  1108.  
  1109.                if (var5.startsWith("[JDesignerPro Systems]")) {
  1110.                   var4 = true;
  1111.                }
  1112.             }
  1113.          }
  1114.  
  1115.          var8.close();
  1116.       } catch (Exception var7) {
  1117.          this.logException(var7);
  1118.          this.println("Could not open JDesignerPro.ini file.");
  1119.          this.println("Check that ini file is in the JDesignerPro directory.");
  1120.          return false;
  1121.       }
  1122.  
  1123.       return this.getJDPSystemSetup("01001") != null;
  1124.    }
  1125.  
  1126.    synchronized int getNextJobNumber() {
  1127.       if (!this.serverRunning) {
  1128.          return 0;
  1129.       } else {
  1130.          Vector var1 = new Vector();
  1131.          int var2 = this.jaggSQL.execSQL("UPDATE JDPJobNo SET NextJobNum = NextJobNum + 1", var1);
  1132.          if (var2 != 1) {
  1133.             return -1;
  1134.          } else {
  1135.             var1 = new Vector();
  1136.             var2 = this.jaggSQL.execSQL("SELECT NextJobNum FROM JDPJobNo", var1);
  1137.             if (var2 != 1) {
  1138.                return -1;
  1139.             } else {
  1140.                StringTokenizer var3 = new StringTokenizer((String)var1.elementAt(0), this.jaggSQL.getSEP());
  1141.  
  1142.                try {
  1143.                   int var4 = Integer.parseInt(var3.nextToken().trim());
  1144.                   return var4;
  1145.                } catch (Exception var5) {
  1146.                   return -1;
  1147.                }
  1148.             }
  1149.          }
  1150.       }
  1151.    }
  1152.  
  1153.    public synchronized String setSubsystemPriority(String var1, int var2) {
  1154.       String var3 = this.checkTaskAllowed("setSubsystemPriority");
  1155.       if (var3 != null) {
  1156.          return var3;
  1157.       } else {
  1158.          try {
  1159.             this.getSubsystem(var1).setPriority(var2);
  1160.          } catch (Exception var7) {
  1161.             this.logException(var7);
  1162.          }
  1163.  
  1164.          Vector var4 = new Vector();
  1165.          String var5 = "UPDATE JDPSubs SET priority = " + Integer.toString(var2) + " WHERE SubSysName = '" + var1 + "'";
  1166.          this.jaggSQL.execSQL(var5, var4);
  1167.          return null;
  1168.       }
  1169.    }
  1170.  
  1171.    JDPJobQueue getJobQueue(String var1) {
  1172.       return this.queueMgr.getJobQueue(var1);
  1173.    }
  1174.  
  1175.    public synchronized String createSubsystem(String var1) {
  1176.       String var2 = this.checkTaskAllowed("createSubsystem");
  1177.       if (var2 != null) {
  1178.          return var2;
  1179.       } else {
  1180.          Vector var3 = new Vector();
  1181.          String var4 = "SELECT SubSysName FROM JDPSubs WHERE SubSysName = '" + var1 + "'";
  1182.          int var5 = this.jaggSQL.execSQL(var4, var3);
  1183.          if (var5 == 1) {
  1184.             return "Subsystem already exists.";
  1185.          } else {
  1186.             var4 = "INSERT INTO JDPSubs (SubSysName, SubSysDesc, maxJobs, priority, SubSysHeld) " + "VALUES('" + var1 + "','',3," + Integer.toString(5) + ",'N')";
  1187.             var5 = this.jaggSQL.execSQL(var4, var3);
  1188.             if (var5 != 1) {
  1189.                return "Failed to create subsystem " + var1 + ". See server log for details.";
  1190.             } else {
  1191.                JDPSubsystem var6 = new JDPSubsystem(this, var1);
  1192.                var6.setSubsystemDesc("");
  1193.                var6.setMaxJobs(3);
  1194.  
  1195.                try {
  1196.                   ((Thread)var6).setPriority(5);
  1197.                } catch (Exception var7) {
  1198.                   this.println("Failed to adjust thread priority to " + 5);
  1199.                }
  1200.  
  1201.                var6.setSubsystemHeld(false);
  1202.                this.subsystems.addElement(var6);
  1203.                ((Thread)var6).start();
  1204.                return "Subsystem " + var1 + " successfully created with maxJobs set to 3.";
  1205.             }
  1206.          }
  1207.       }
  1208.    }
  1209.  
  1210.    public synchronized String removeSubsystem(String var1) {
  1211.       String var2 = this.checkTaskAllowed("removeSubsystem");
  1212.       if (var2 != null) {
  1213.          return var2;
  1214.       } else {
  1215.          JDPSubsystem var3 = this.getSubsystem(var1);
  1216.  
  1217.          for(int var4 = 0; var4 < this.queueMgr.queues.size(); ++var4) {
  1218.             JDPJobQueue var5 = (JDPJobQueue)this.queueMgr.queues.elementAt(var4);
  1219.             if (var5.getSubsystem().equals(var1)) {
  1220.                return "Subsystem may not be removed because queue " + var5.getJobQueueName() + " is using it.";
  1221.             }
  1222.          }
  1223.  
  1224.          if (var3.getActiveJobCount() > 0) {
  1225.             return "Subsystem may not be removed as jobs are still active.";
  1226.          } else {
  1227.             Vector var7 = new Vector();
  1228.             String var8 = "DELETE FROM JDPSubs WHERE SubSysName = '" + var1 + "'";
  1229.             int var6 = this.jaggSQL.execSQL(var8, var7);
  1230.             if (var6 != 1) {
  1231.                return "Failed to remove subsystem " + var1 + ". See server log for details.";
  1232.             } else {
  1233.                this.subsystems.removeElement(var3);
  1234.                return null;
  1235.             }
  1236.          }
  1237.       }
  1238.    }
  1239.  
  1240.    public synchronized String setJobQueueSubsystem(String var1, String var2) {
  1241.       String var3 = this.checkTaskAllowed("setJobQueueSubsystem");
  1242.       if (var3 != null) {
  1243.          return var3;
  1244.       } else {
  1245.          JDPJobQueue var4 = this.getJobQueue(var1);
  1246.          var4.setSubsystem(var2);
  1247.          Vector var5 = new Vector();
  1248.          String var6 = "UPDATE JDPQueue SET SubSysName = '" + var2 + "' WHERE QueueName = '" + var1 + "'";
  1249.          this.jaggSQL.execSQL(var6, var5);
  1250.          this.queueMgr.reOrderQueue();
  1251.          return null;
  1252.       }
  1253.    }
  1254.  
  1255.    public String getJobsForClass(String var1) {
  1256.       String var2 = "";
  1257.  
  1258.       for(int var3 = 0; var3 < this.jobs.size(); ++var3) {
  1259.          JDPJob var4 = (JDPJob)this.jobs.elementAt(var3);
  1260.          if (var4.getJobName().equals(var1) && var4.getInstance() != null) {
  1261.             var2 = var2 + Integer.toString(var4.getJobNumber()) + ";";
  1262.          }
  1263.       }
  1264.  
  1265.       return var2;
  1266.    }
  1267.  
  1268.    JDPJagg setupJaggInstance(String var1) {
  1269.       return this.setupJaggInstance(var1, (String)null);
  1270.    }
  1271.  
  1272.    public String setJobQueuePriority(int var1, int var2, String var3) {
  1273.       String var4 = this.checkTaskAllowed("setJobQueuePriority");
  1274.       if (var4 != null) {
  1275.          return var4;
  1276.       } else {
  1277.          JDPJob var5 = this.getJob(var1);
  1278.          var5.appendJobLog("Job Queue Priority changed from " + Integer.toString(var5.getJobQueuePriority()) + " to " + Integer.toString(var2) + " by: " + var3 + " on " + (new Date()).toString());
  1279.          var5.setJobQueuePriority(var2);
  1280.          this.queueMgr.reOrderQueue();
  1281.          return null;
  1282.       }
  1283.    }
  1284.  
  1285.    public String removeJob(int var1, String var2) {
  1286.       String var3 = this.checkTaskAllowed("removeJob");
  1287.       if (var3 != null) {
  1288.          return var3;
  1289.       } else {
  1290.          JDPJob var4 = this.getJob(var1);
  1291.          if (var4.getJobStatus() != 2 && var4.getJobStatus() != 3) {
  1292.             return "Job no longer on Queue. Check Active Jobs or Out Queue";
  1293.          } else {
  1294.             JDPJobQueue var5 = this.getJobQueue(var4.getJobQueue());
  1295.             JDPSubsystem var6 = this.getSubsystem(var5.getSubsystem());
  1296.             var4.appendJobLog("Job removed from Queue: " + var4.getJobQueue() + " by: " + var2 + " on " + (new Date()).toString());
  1297.             var4.activeJob = new JDPActiveJob(var6, var4);
  1298.             var4.activeJob.initJob();
  1299.             var4.activeJob.completeJob(false);
  1300.             return null;
  1301.          }
  1302.       }
  1303.    }
  1304.  
  1305.    JDPJagg setupJaggInstance(String var1, String var2) {
  1306.       int var3 = var1.indexOf("JAGGSERVER=Server");
  1307.       if (var3 > 0) {
  1308.          var1 = var1.substring(0, var3) + var1.substring(var3 + 17);
  1309.       } else {
  1310.          var3 = var1.indexOf("JAGGSERVER=CGI");
  1311.          if (var3 > 0) {
  1312.             var1 = var1.substring(0, var3) + var1.substring(var3 + 14);
  1313.          }
  1314.       }
  1315.  
  1316.       String var4 = this.JDPJaggPath;
  1317.       String var5 = this.JDPJaggDSN;
  1318.       String var6 = this.JDPJaggCSTR;
  1319.       String var7 = this.JDPJaggJdbcDriver;
  1320.       String var8 = this.JDPJaggJdbcPrefix;
  1321.       String var9 = this.JDPJaggJdbcSuffix;
  1322.       String var10 = this.JDPJaggJdbcUserid;
  1323.       String var11 = this.JDPJaggJdbcPassword;
  1324.       int var12 = var1.indexOf(" ");
  1325.       var4 = var1.substring(0, var12);
  1326.       var6 = var1.substring(var12 + 1);
  1327.       int var13 = var6.indexOf("DSN=") + 4;
  1328.       int var14 = var6.indexOf(";", var13);
  1329.       var5 = var6.substring(var13, var14);
  1330.       var3 = var1.indexOf("JDBCDRIVER=");
  1331.       if (var3 >= 0) {
  1332.          var3 = var1.indexOf("=", var3 + 1);
  1333.          var12 = var1.indexOf(";", var3 + 1);
  1334.          var7 = var1.substring(var3 + 1, var12);
  1335.          var3 = var1.indexOf("JDBCPREFIX=", var3 + 1);
  1336.          var3 = var1.indexOf("=", var3 + 1);
  1337.          var12 = var1.indexOf(";", var3 + 1);
  1338.          var8 = var1.substring(var3 + 1, var12);
  1339.          var3 = var1.indexOf("JDBCSUFFIX=", var3 + 1);
  1340.          var3 = var1.indexOf("=", var3 + 1);
  1341.          var12 = var1.indexOf(";", var3 + 1);
  1342.          var9 = var1.substring(var3 + 1, var12);
  1343.          var3 = var1.indexOf("UID=", var3 + 1);
  1344.          var3 = var1.indexOf("=", var3 + 1);
  1345.          var12 = var1.indexOf(";", var3 + 1);
  1346.          var10 = var1.substring(var3 + 1, var12);
  1347.          var3 = var1.indexOf("PWD=", var3 + 1);
  1348.          var3 = var1.indexOf("=", var3 + 1);
  1349.          var12 = var1.indexOf(";", var3 + 1);
  1350.          var11 = var1.substring(var3 + 1, var12);
  1351.          var3 = var1.indexOf("CSTR=", var3 + 1);
  1352.          var6 = "";
  1353.          if (var3 > 0) {
  1354.             var3 = var1.indexOf("=", var3 + 1);
  1355.             var6 = var1.substring(var3 + 1);
  1356.          }
  1357.       } else {
  1358.          var3 = var1.indexOf("UID=", var3 + 1);
  1359.          var3 = var1.indexOf("=", var3 + 1);
  1360.          var12 = var1.indexOf(";", var3 + 1);
  1361.          var10 = var1.substring(var3 + 1, var12);
  1362.          var3 = var1.indexOf("PWD=", var3 + 1);
  1363.          var3 = var1.indexOf("=", var3 + 1);
  1364.          var12 = var1.indexOf(";", var3 + 1);
  1365.          var11 = var1.substring(var3 + 1, var12);
  1366.       }
  1367.  
  1368.       JDPJagg var15 = new JDPJagg(var4);
  1369.       var15.setDSN(var5);
  1370.       var15.setCSTR(var6);
  1371.       var15.setJdbcDriver(var7);
  1372.       var15.setJdbcPrefix(var8);
  1373.       var15.setJdbcSuffix(var9);
  1374.       var15.setUID(var10);
  1375.       var15.setPWD(var11);
  1376.       if (var2 != null && var2.equals("01001")) {
  1377.          this.JDPJaggPath = var4;
  1378.          this.JDPJaggDSN = var5;
  1379.          this.JDPJaggCSTR = var6;
  1380.          this.JDPJaggJdbcDriver = var7;
  1381.          this.JDPJaggJdbcPrefix = var8;
  1382.          this.JDPJaggJdbcSuffix = var9;
  1383.          this.JDPJaggJdbcUserid = var10;
  1384.          this.JDPJaggJdbcPassword = var11;
  1385.          var15.loadJdbcDataSources();
  1386.       }
  1387.  
  1388.       return var15;
  1389.    }
  1390.  
  1391.    public String getActiveJobs() {
  1392.       String var1 = " " + this.jaggSQL.getSEP();
  1393.       String var2 = Long.toString((new Date()).getTime());
  1394.       StringBuffer var3 = new StringBuffer();
  1395.  
  1396.       for(int var4 = 0; var4 < this.jobs.size(); ++var4) {
  1397.          JDPJob var5 = (JDPJob)this.jobs.elementAt(var4);
  1398.          if (var5.getJobStatus() == 4 || var5.getJobStatus() == 5) {
  1399.             var3.append(var5.getJobName());
  1400.             var3.append(var1);
  1401.             var3.append(var5.getSubsystem());
  1402.             var3.append(var1);
  1403.             var3.append(var5.getJDPSystem());
  1404.             var3.append(var1);
  1405.             var3.append(Integer.toString(var5.getJobNumber()));
  1406.             var3.append(var1);
  1407.             var3.append(var5.getJobOwner());
  1408.             var3.append(var1);
  1409.             var3.append((String)this.eventTypeDesc.elementAt(this.eventTypeCode.indexOf(var5.getEventType())));
  1410.             var3.append(var1);
  1411.             var3.append(Long.toString(var5.getStartDate().getTime() + var5.getStartTime()));
  1412.             var3.append(var1);
  1413.             var3.append(Integer.toString(var5.getJobStatus()));
  1414.             var3.append(var1);
  1415.             var3.append(Integer.toString(var5.getJobPriority()));
  1416.             var3.append(var1);
  1417.             var3.append(var2);
  1418.             var3.append(var1);
  1419.          }
  1420.       }
  1421.  
  1422.       return var3.toString();
  1423.    }
  1424.  
  1425.    public synchronized String setMaxJobs(String var1, int var2) {
  1426.       String var3 = this.checkTaskAllowed("setMaxJobs");
  1427.       if (var3 != null) {
  1428.          return var3;
  1429.       } else {
  1430.          this.getSubsystem(var1).setMaxJobs(var2);
  1431.          Vector var4 = new Vector();
  1432.          String var5 = "UPDATE JDPSubs SET maxJobs = " + Integer.toString(var2) + " WHERE SubSysName = '" + var1 + "'";
  1433.          this.jaggSQL.execSQL(var5, var4);
  1434.          this.queueMgr.reOrderQueue();
  1435.          return null;
  1436.       }
  1437.    }
  1438.  
  1439.    void removeOldJobs() {
  1440.       if (this.prevJobNames != null && this.prevJobNames.size() != 0) {
  1441.          long var1 = (new Date()).getTime();
  1442.          long var3 = var1 - (long)(purgeJobNameAfterDays * 24 * 60 * 60 * 1000);
  1443.  
  1444.          for(int var5 = 0; var5 < this.prevJobNames.size(); ++var5) {
  1445.             String var6 = (String)this.prevJobNames.elementAt(var5);
  1446.             StringTokenizer var7 = new StringTokenizer(var6, "|");
  1447.             var7.nextToken();
  1448.             var7.nextToken();
  1449.             String var8 = var7.nextToken();
  1450.             long var9 = Long.valueOf(var8);
  1451.             if (var9 < var3) {
  1452.                this.prevJobNames.removeElement(var6);
  1453.                --var5;
  1454.             }
  1455.          }
  1456.  
  1457.       }
  1458.    }
  1459.  
  1460.    void waitFor(int var1) {
  1461.       try {
  1462.          Thread.sleep((long)(var1 * 1000));
  1463.       } catch (Exception var2) {
  1464.       }
  1465.    }
  1466. }
  1467.