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

  1. import java.util.Date;
  2. import java.util.StringTokenizer;
  3. import java.util.Vector;
  4.  
  5. public class JDPJobQueueMgr extends Thread {
  6.    JDPSubsystemMgr manager;
  7.    JDPJagg jaggSQL;
  8.    Vector results;
  9.    Vector queues;
  10.    boolean waiting = false;
  11.  
  12.    public JDPJobQueueMgr(JDPSubsystemMgr var1) {
  13.       super(var1.mainThreadGroup, "JDPJobQueueMgr");
  14.       this.manager = var1;
  15.       this.setupJaggConnection();
  16.       this.createQueues();
  17.       this.createJobs();
  18.    }
  19.  
  20.    public void run() {
  21.       for(; !this.manager.shutdownRequested; this.waiting = false) {
  22.          this.checkSubsystems();
  23.  
  24.          try {
  25.             if (!this.waiting) {
  26.                this.waiting = true;
  27.                Thread.sleep(30000L);
  28.             }
  29.          } catch (Exception var1) {
  30.          }
  31.       }
  32.  
  33.    }
  34.  
  35.    void checkSubsystems() {
  36.       boolean var1 = true;
  37.  
  38.       while(var1) {
  39.          Vector var2 = new Vector();
  40.          Vector var3 = new Vector();
  41.          Vector var4 = new Vector();
  42.          Vector var5 = new Vector();
  43.  
  44.          for(int var6 = 0; var6 < this.queues.size(); ++var6) {
  45.             JDPJobQueue var7 = (JDPJobQueue)this.queues.elementAt(var6);
  46.             var7.reOrderQueue();
  47.             if (!var7.getQueueHeld()) {
  48.                JDPJob var8 = var7.getNextJob();
  49.                if (var8 != null) {
  50.                   String var9 = var7.getSubsystem();
  51.                   int var10 = var2.indexOf(var9);
  52.                   if (var10 < 0) {
  53.                      var2.addElement(var9);
  54.                      var3.addElement(new Integer(var8.getJobQueuePriority()));
  55.                      var4.addElement(new Integer(var8.getJobNumber()));
  56.                      var5.addElement(var8);
  57.                   } else {
  58.                      int var11 = (Integer)var3.elementAt(var10);
  59.                      int var12 = (Integer)var4.elementAt(var10);
  60.                      if (var8.getJobQueuePriority() < var11 || var8.getJobQueuePriority() == var11 && var8.getJobNumber() < var12) {
  61.                         var5.setElementAt(var8, var10);
  62.                         var3.setElementAt(new Integer(var8.getJobQueuePriority()), var10);
  63.                         var4.setElementAt(new Integer(var8.getJobNumber()), var10);
  64.                      }
  65.                   }
  66.                }
  67.             }
  68.          }
  69.  
  70.          var1 = false;
  71.  
  72.          for(int var13 = 0; var13 < var2.size(); ++var13) {
  73.             String var14 = (String)var2.elementAt(var13);
  74.             JDPSubsystem var15 = this.manager.getSubsystem(var14);
  75.             if ((var15.getMaxJobs() == 0 || var15.getMaxJobs() > var15.getActiveJobCount()) && !var15.getSubsystemHeld()) {
  76.                JDPJob var16 = (JDPJob)var5.elementAt(var13);
  77.                JDPJobQueue var17 = this.getJobQueue(var16.getJobQueue());
  78.                if (!var17.getQueueHeld() && var15.submitJob(var16)) {
  79.                   var1 = true;
  80.                   var17.reOrderQueue();
  81.                }
  82.             }
  83.          }
  84.       }
  85.  
  86.    }
  87.  
  88.    void createQueues() {
  89.       String var2 = this.jaggSQL.getSEP();
  90.       this.results = new Vector();
  91.       String var3 = "SELECT QueueName, QueueDesc, SubSysName, QueueHeld FROM JDPQueue";
  92.       int var4 = this.jaggSQL.execSQL(var3, this.results);
  93.       this.queues = new Vector();
  94.  
  95.       for(int var5 = 0; var5 < var4; ++var5) {
  96.          StringTokenizer var1 = new StringTokenizer((String)this.results.elementAt(var5), var2);
  97.          JDPJobQueue var6 = new JDPJobQueue(this, var1.nextToken().trim());
  98.          var6.setJobQueueDesc(var1.nextToken().trim());
  99.          var6.setSubsystem(var1.nextToken().trim());
  100.          String var7 = var1.nextToken().trim();
  101.          var6.setQueueHeld(var7.equals("Y"));
  102.          this.queues.addElement(var6);
  103.       }
  104.  
  105.    }
  106.  
  107.    void createJobs() {
  108.       String var2 = this.jaggSQL.getSEP();
  109.       Date var3 = new Date();
  110.       long var4 = var3.getTime();
  111.       var3.setHours(0);
  112.       var3.setMinutes(0);
  113.       var3.setSeconds(0);
  114.       var4 -= var3.getTime();
  115.       Date var6 = var3;
  116.       long var7 = var4;
  117.       this.results = new Vector();
  118.       String var9 = "SELECT 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 FROM JDPJobA ORDER BY JobNumber";
  119.       int var10 = this.jaggSQL.execSQL(var9, this.results);
  120.  
  121.       for(int var11 = 0; var11 < var10; ++var11) {
  122.          StringTokenizer var1 = new StringTokenizer((String)this.results.elementAt(var11), var2);
  123.          if (var1.countTokens() == 25) {
  124.             String var12 = var1.nextToken().trim();
  125.             JDPJob var13 = new JDPJob(this.manager, var1.nextToken().trim(), Integer.parseInt(var1.nextToken().trim()));
  126.             var13.setJDPSystem(var12);
  127.             var13.setEventType(var1.nextToken().trim());
  128.             var13.setJobOwner(var1.nextToken().trim());
  129.             var13.setJobQueue(var1.nextToken().trim());
  130.             var13.setSubsystem(var1.nextToken().trim());
  131.             int var14 = Integer.parseInt(var1.nextToken().trim());
  132.             var13.setJobPriority(Integer.parseInt(var1.nextToken().trim()));
  133.             var13.setJobQueuePriority(Integer.parseInt(var1.nextToken().trim()));
  134.             var13.setObjectType(var1.nextToken().trim());
  135.             var13.setObject(var1.nextToken().trim());
  136.             var13.setObjectParm(var1.nextToken().trim());
  137.             var13.setObjectConstructor(var1.nextToken().trim());
  138.             var13.setNotifyUser(Integer.parseInt(var1.nextToken().trim()));
  139.             var13.setNotifyVia(var1.nextToken().trim());
  140.             var13.setNotifyOn(var1.nextToken().trim());
  141.             var13.setLogEvent(var1.nextToken().trim());
  142.             var13.setQueuedDate(new Date(Long.valueOf(var1.nextToken().trim())));
  143.             var13.setQueuedTime(Long.valueOf(var1.nextToken().trim()));
  144.             var13.setStartDate(new Date(Long.valueOf(var1.nextToken().trim())));
  145.             var13.setStartTime(Long.valueOf(var1.nextToken().trim()));
  146.             var13.setEndDate(new Date(Long.valueOf(var1.nextToken().trim())));
  147.             var13.setEndTime(Long.valueOf(var1.nextToken().trim()));
  148.             var13.appendJobLog(var1.nextToken().trim());
  149.             if (var13.getJobName().equals("JDPSubsystemMgr")) {
  150.                var6 = var13.getQueuedDate();
  151.                var7 = var13.getQueuedTime();
  152.                var13.setQueuedDate(var13.getStartDate());
  153.                var13.setQueuedTime(var13.getStartTime());
  154.                var13.setEndDate(var6);
  155.                var13.setEndTime(var7);
  156.             }
  157.  
  158.             var13.setJobStatus(var14);
  159.             var13.setJobChanged(false);
  160.             if (var14 != 4 && var14 != 5) {
  161.                if (var14 != 2 && var14 != 3) {
  162.                   if (var14 == 9) {
  163.                      var13.setJobChanged(true);
  164.                   }
  165.                } else {
  166.                   JDPJobQueue var20 = this.getJobQueue(var13.getJobQueue());
  167.                   if (var20 == null) {
  168.                      var13.setJobStatus(9);
  169.                      var13.appendJobLog("Job Queue not found: " + var13.getJobQueue() + "\r\n");
  170.                   } else {
  171.                      var20.submitJob(var13);
  172.                      var20.reOrderQueue();
  173.                   }
  174.                }
  175.             } else {
  176.                var14 = 9;
  177.                var13.setEndDate(var6);
  178.                var13.setEndTime(var7);
  179.                var13.appendJobLog("Job ended when Enterprise Server was terminated.");
  180.                var13.setJobStatus(var14);
  181.                String var15 = var13.getLogEvent();
  182.                if (var15.equals("F") || var15.equals("B")) {
  183.                   var13.setLogEventNow(true);
  184.                }
  185.  
  186.                int var16 = var13.getNotifyUser();
  187.                String var17 = var13.getNotifyOn();
  188.                if (var16 >= 0 && (var17.equals("F") || var17.equals("B"))) {
  189.                   var13.setNotifyNow(true);
  190.                }
  191.  
  192.                var13.setJobChanged(true);
  193.             }
  194.  
  195.             this.manager.registerJob(var13);
  196.          }
  197.       }
  198.  
  199.    }
  200.  
  201.    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) {
  202.       JDPJob var17 = new JDPJob(this.manager, var3);
  203.       var17.setJDPSystem(var2);
  204.       var17.setJobOwner(var5);
  205.       var17.setEventType(var4);
  206.       var17.setJobPriority(var10);
  207.       var17.setJobQueuePriority(var11);
  208.       if (var12) {
  209.          var17.setJobStatus(3);
  210.       }
  211.  
  212.       var17.setNotifyUser(var13);
  213.       var17.setNotifyVia(var14);
  214.       var17.setNotifyOn(var15);
  215.       var17.setLogEvent(var16);
  216.       var17.setObjectType(var6);
  217.       var17.setObject(var7);
  218.       var17.setObjectParm(var9);
  219.       var17.setObjectConstructor(var8);
  220.       JDPJobQueue var18 = this.getJobQueue(var1);
  221.       if (var18 != null) {
  222.          var18.submitJob(var17);
  223.          this.manager.registerJob(var17);
  224.          return var17;
  225.       } else {
  226.          var17.setJobStatus(9);
  227.          var17.appendJobLog("Job Queue not found: " + var1 + "\r\n");
  228.          this.manager.registerJob(var17);
  229.          return null;
  230.       }
  231.    }
  232.  
  233.    public void reOrderQueue() {
  234.       if (this.waiting) {
  235.          ((Thread)this).interrupt();
  236.       } else {
  237.          this.waiting = true;
  238.       }
  239.    }
  240.  
  241.    public JDPJobQueue getJobQueue(String var1) {
  242.       for(int var2 = 0; var2 < this.queues.size(); ++var2) {
  243.          JDPJobQueue var3 = (JDPJobQueue)this.queues.elementAt(var2);
  244.          if (var3.getJobQueueName().equals(var1)) {
  245.             return var3;
  246.          }
  247.       }
  248.  
  249.       return null;
  250.    }
  251.  
  252.    public String getJobQueues() {
  253.       StringBuffer var1 = new StringBuffer();
  254.  
  255.       try {
  256.          String var2 = " " + this.jaggSQL.getSEP();
  257.          if (this.queues != null) {
  258.             for(int var3 = 0; var3 < this.queues.size(); ++var3) {
  259.                JDPJobQueue var4 = (JDPJobQueue)this.queues.elementAt(var3);
  260.                String var5 = var4.getJobQueueDesc();
  261.                if (var5 == null || var5.equals("")) {
  262.                   var5 = " ";
  263.                }
  264.  
  265.                var1.append(var4.getJobQueueName());
  266.                var1.append(var2);
  267.                var1.append(var5);
  268.                var1.append(var2);
  269.                var1.append(var4.getQueueHeld() ? "Y" : "N");
  270.                var1.append(var2);
  271.                var1.append(var4.getSubsystem());
  272.                var1.append(var2);
  273.             }
  274.          }
  275.       } catch (Exception var6) {
  276.          this.manager.logException(var6);
  277.       }
  278.  
  279.       return var1.toString();
  280.    }
  281.  
  282.    public String getQueuedJobs() {
  283.       String var1 = this.jaggSQL.getSEP();
  284.       StringBuffer var2 = new StringBuffer();
  285.  
  286.       try {
  287.          if (this.queues != null) {
  288.             for(int var3 = 0; var3 < this.queues.size(); ++var3) {
  289.                JDPJobQueue var4 = (JDPJobQueue)this.queues.elementAt(var3);
  290.  
  291.                for(int var5 = 0; var5 < var4.queue.size(); ++var5) {
  292.                   JDPJob var6 = (JDPJob)var4.queue.elementAt(var5);
  293.                   if (var6.getJobStatus() == 2 || var6.getJobStatus() == 3) {
  294.                      var2.append(var6.getJobName());
  295.                      var2.append(var1);
  296.                      var2.append(var6.getJobQueue());
  297.                      var2.append(var1);
  298.                      var2.append(var6.getJDPSystem());
  299.                      var2.append(var1);
  300.                      var2.append(Integer.toString(var6.getJobNumber()));
  301.                      var2.append(var1);
  302.                      var2.append(var6.getJobOwner());
  303.                      var2.append(var1);
  304.                      var2.append((String)this.manager.eventTypeDesc.elementAt(this.manager.eventTypeCode.indexOf(var6.getEventType())));
  305.                      var2.append(var1);
  306.                      var2.append(Long.toString(var6.getQueuedDate().getTime() + var6.getQueuedTime()));
  307.                      var2.append(var1);
  308.                      var2.append(Integer.toString(var6.getJobStatus()));
  309.                      var2.append(var1);
  310.                      var2.append(Integer.toString(var6.getJobQueuePriority()));
  311.                      var2.append(var1);
  312.                   }
  313.                }
  314.             }
  315.          }
  316.       } catch (Exception var7) {
  317.          this.manager.logException(var7);
  318.       }
  319.  
  320.       return var2.toString();
  321.    }
  322.  
  323.    void setupJaggConnection() {
  324.       this.jaggSQL = new JDPJagg(this.manager.JDPJaggPath);
  325.       this.jaggSQL.setDSN(this.manager.JDPJaggDSN);
  326.       this.jaggSQL.setCSTR(this.manager.JDPJaggCSTR);
  327.       this.jaggSQL.setJdbcDriver(this.manager.JDPJaggJdbcDriver);
  328.       this.jaggSQL.setJdbcPrefix(this.manager.JDPJaggJdbcPrefix);
  329.       this.jaggSQL.setJdbcSuffix(this.manager.JDPJaggJdbcSuffix);
  330.       this.jaggSQL.setUID(this.manager.JDPJaggJdbcUserid);
  331.       this.jaggSQL.setPWD(this.manager.JDPJaggJdbcPassword);
  332.    }
  333. }
  334.