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

  1. import java.awt.TextComponent;
  2. import java.awt.TextField;
  3. import java.io.File;
  4. import java.io.FileOutputStream;
  5. import java.io.InputStream;
  6. import java.util.Date;
  7. import java.util.Hashtable;
  8. import java.util.Properties;
  9. import java.util.StringTokenizer;
  10. import java.util.Vector;
  11.  
  12. public class JDPNotificationMgr {
  13.    JDPSubsystemMgr manager;
  14.    JDPJob thisJob;
  15.    JDPJagg jaggSQL;
  16.    Vector emailMessageQueue;
  17.    Vector pagerMessageQueue;
  18.    String mailServer = "mail";
  19.    String returnAddress = "";
  20.    String commPort = "1";
  21.    String baudRate = "300";
  22.  
  23.    public JDPNotificationMgr(JDPSubsystemMgr var1, JDPJob var2) {
  24.       this.manager = var1;
  25.       this.thisJob = var2;
  26.       var2.appendJobLog("JDPNotificationMgr started on " + (new Date()).toString());
  27.       this.emailMessageQueue = new Vector();
  28.       this.pagerMessageQueue = new Vector();
  29.       this.setupJaggConnection();
  30.       this.loadSettings();
  31.  
  32.       while(!var1.shutdownRequested) {
  33.          try {
  34.             this.checkQueue();
  35.             Thread.sleep(10000L);
  36.          } catch (Exception var3) {
  37.          }
  38.       }
  39.  
  40.    }
  41.  
  42.    void checkQueue() {
  43.       for(int var1 = this.manager.notifyQueue.size(); var1 > 0; --var1) {
  44.          this.queueMessage((JDPJob)this.manager.notifyQueue.elementAt(0));
  45.          this.manager.notifyQueue.removeElementAt(0);
  46.       }
  47.  
  48.       if (this.emailMessageQueue.size() > 0) {
  49.          this.sendQueuedEmail();
  50.       }
  51.  
  52.       if (this.pagerMessageQueue.size() > 0) {
  53.          this.sendQueuedPages();
  54.       }
  55.  
  56.    }
  57.  
  58.    void queueMessage(JDPJob var1) {
  59.       if (var1.getNotifyVia().equals("E")) {
  60.          this.emailMessageQueue.addElement(var1);
  61.       } else if (var1.getNotifyVia().equals("P")) {
  62.          this.pagerMessageQueue.addElement(var1);
  63.       } else {
  64.          if (var1.getNotifyVia().equals("B")) {
  65.             this.emailMessageQueue.addElement(var1);
  66.             this.pagerMessageQueue.addElement(var1);
  67.          }
  68.  
  69.       }
  70.    }
  71.  
  72.    void sendQueuedEmail() {
  73.       JDPSendMail var1 = new JDPSendMail(this.mailServer);
  74.       String var2 = "";
  75.       String var3 = "";
  76.       String var4 = "";
  77.       String var5 = "";
  78.       new Properties();
  79.  
  80.       for(int var7 = 0; var7 < this.emailMessageQueue.size(); ++var7) {
  81.          JDPJob var8 = (JDPJob)this.emailMessageQueue.elementAt(var7);
  82.          Properties var6 = this.getUserInfo(var8.getNotifyUser());
  83.          if (var6 != null) {
  84.             var2 = (String)((Hashtable)var6).get("emailaddr");
  85.             if (this.returnAddress.equals("")) {
  86.                var3 = var2;
  87.             } else {
  88.                var3 = this.returnAddress;
  89.             }
  90.  
  91.             var5 = "Job:" + var8.getJobName() + " ";
  92.             if (var8.getJobStatus() == 10) {
  93.                var5 = var5 + "completed";
  94.             } else if (var8.getJobStatus() == 9) {
  95.                var5 = var5 + "failed";
  96.             } else {
  97.                var5 = var5 + "status unknown";
  98.             }
  99.  
  100.             String var14 = var5 + " on " + (new Date(var8.getEndDate().getTime() + var8.getEndTime())).toString();
  101.             var1.mailMessage(var2, var3, var5, var14);
  102.          }
  103.       }
  104.  
  105.       this.emailMessageQueue = new Vector();
  106.       System.gc();
  107.    }
  108.  
  109.    void sendQueuedPages() {
  110.       int var1 = Integer.parseInt(this.commPort);
  111.       int var2 = Integer.parseInt(this.baudRate);
  112.       new Properties();
  113.       String var4 = "";
  114.       String[][] var5 = new String[this.pagerMessageQueue.size()][3];
  115.  
  116.       for(int var6 = 0; var6 < this.pagerMessageQueue.size(); ++var6) {
  117.          JDPJob var7 = (JDPJob)this.pagerMessageQueue.elementAt(var6);
  118.          Properties var3 = this.getUserInfo(var7.getNotifyUser());
  119.          if (var3 != null) {
  120.             var4 = "Job:" + var7.getJobName() + " ";
  121.             if (var7.getJobStatus() == 10) {
  122.                var4 = var4 + "completed";
  123.             } else if (var7.getJobStatus() == 9) {
  124.                var4 = var4 + "failed";
  125.             } else {
  126.                var4 = var4 + "status unknown";
  127.             }
  128.  
  129.             var4 = var4 + " on " + (new Date(var7.getEndDate().getTime() + var7.getEndTime())).toString();
  130.             var5[var6][0] = (String)((Hashtable)var3).get("alphsvcph");
  131.             var5[var6][1] = (String)((Hashtable)var3).get("alphpgrnum");
  132.             var5[var6][2] = var4;
  133.          } else {
  134.             var5[var6][0] = "";
  135.             var5[var6][1] = "";
  136.             var5[var6][2] = "";
  137.          }
  138.       }
  139.  
  140.       this.sendAlphaPage(var1, var2, (String)null, (String)null, (String)null, (String[])null, (Vector)null, var5);
  141.       this.pagerMessageQueue = new Vector();
  142.       System.gc();
  143.    }
  144.  
  145.    Properties getUserInfo(int var1) {
  146.       String var2 = this.jaggSQL.getSEP();
  147.       Properties var3 = new Properties();
  148.       Vector var4 = new Vector();
  149.       String var5 = "SELECT emailaddr, alphsvcph, alphpgrnum FROM JDPUser WHERE userid = " + var1;
  150.       int var6 = this.jaggSQL.execSQL(var5, var4);
  151.       if (var6 != 1) {
  152.          return null;
  153.       } else {
  154.          StringTokenizer var7 = new StringTokenizer((String)var4.elementAt(0), var2);
  155.          ((Hashtable)var3).put("emailaddr", var7.nextToken());
  156.          ((Hashtable)var3).put("alphsvcph", var7.nextToken());
  157.          ((Hashtable)var3).put("alphpgrnum", var7.nextToken());
  158.          return var3;
  159.       }
  160.    }
  161.  
  162.    boolean sendAlphaPage(int var1, int var2, String var3, String var4, String var5, String[] var6, Vector var7, String[][] var8) {
  163.       String var9 = "pagingfile.txt ";
  164.       String var10 = "Bin\\JDPAlphaPage ";
  165.       var10 = var10 + var9 + " ";
  166.       var10 = var10 + Integer.toString(var1) + " ";
  167.       var10 = var10 + Integer.toString(var2);
  168.       String var11 = "";
  169.       String var12 = "";
  170.       String var13 = "";
  171.       String var14 = "";
  172.       String var15 = "";
  173.       Object var16 = null;
  174.       int var17 = 0;
  175.       int var18 = 0;
  176.       if (var5 == null) {
  177.          for(int var19 = 0; var19 < var8.length; ++var19) {
  178.             var14 = var8[var19][0].trim();
  179.             var15 = JDPUtils.replace(var8[var19][1].trim(), " ", "", 1000);
  180.             if (!var14.equals("") && !var15.equals("")) {
  181.                ++var17;
  182.                var11 = var11 + var14 + "\u0002" + var15 + "\u0002" + var8[var19][2] + "\u0001";
  183.             }
  184.          }
  185.       } else if (var7 != null) {
  186.          int var35 = var7.size();
  187.  
  188.          for(int var20 = 0; var20 < var35; ++var20) {
  189.             StringTokenizer var34 = new StringTokenizer((String)var7.elementAt(var20), "\u0003");
  190.             var14 = var34.nextToken().trim();
  191.             var15 = JDPUtils.replace(var34.nextToken().trim(), " ", "", 1000);
  192.             var12 = var14 + "\u0002" + var15 + "\u0002";
  193.             if (!var14.equals("") && !var15.equals("")) {
  194.                if (!var12.toUpperCase().equals(var13) || var13.equals("")) {
  195.                   var13 = var12.toUpperCase();
  196.                   ++var17;
  197.                   var12 = var12 + var5 + "\u0001";
  198.                   var11 = var11 + var12;
  199.                }
  200.             } else {
  201.                ++var18;
  202.             }
  203.          }
  204.       } else {
  205.          var14 = var3.trim();
  206.          var15 = JDPUtils.replace(var4.trim(), " ", "", 1000);
  207.          if (!var14.equals("") && !var15.equals("")) {
  208.             ++var17;
  209.             var11 = var14 + "\u0002" + var15 + "\u0002" + var5 + "\u0001";
  210.          }
  211.       }
  212.  
  213.       if (var17 != 0 && !var11.equals("")) {
  214.          try {
  215.             FileOutputStream var36 = new FileOutputStream(var9);
  216.             int var37 = var11.length();
  217.             byte[] var21 = new byte[var37];
  218.             var11.getBytes(0, var37, var21, 0);
  219.             var36.write(var21);
  220.             var36.close();
  221.          } catch (Exception var22) {
  222.             ((Throwable)var22).printStackTrace();
  223.             return false;
  224.          }
  225.  
  226.          if (var17 > 1) {
  227.             this.thisJob.appendJobLog("Preparing to send " + Integer.toString(var17) + " messages.");
  228.          } else {
  229.             this.thisJob.appendJobLog("Preparing to send 1 message.");
  230.          }
  231.  
  232.          this.execCommand(var10);
  233.          return true;
  234.       } else {
  235.          return true;
  236.       }
  237.    }
  238.  
  239.    int execCommand(String var1) {
  240.       int var2 = 0;
  241.       String[] var3 = new String[]{var1};
  242.       Object var4 = null;
  243.       Object var5 = null;
  244.       char[] var6 = null;
  245.       char[] var7 = var6;
  246.       if (var6 == null) {
  247.          var7 = var6 = new char[128];
  248.       }
  249.  
  250.       int var8 = var7.length;
  251.       int var9 = 0;
  252.       boolean var10 = false;
  253.  
  254.       try {
  255.          Runtime var11 = Runtime.getRuntime();
  256.          Process var12 = var11.exec(var1);
  257.          InputStream var15 = var12.getInputStream();
  258.          InputStream var16 = var12.getErrorStream();
  259.          var2 = var12.waitFor();
  260.          if (var15 != null) {
  261.             for(int var17 = var15.read(); var17 > -1; var17 = var15.read()) {
  262.                --var8;
  263.                if (var8 < 0) {
  264.                   var7 = new char[var9 + 128];
  265.                   var8 = var7.length - var9 - 1;
  266.                   System.arraycopy(var6, 0, var7, 0, var9);
  267.                   var6 = var7;
  268.                }
  269.  
  270.                var7[var9++] = (char)var17;
  271.             }
  272.  
  273.             var15.close();
  274.          }
  275.  
  276.          if (var16 != null) {
  277.             for(int var18 = var16.read(); var18 > -1; var18 = var16.read()) {
  278.                --var8;
  279.                if (var8 < 0) {
  280.                   var7 = new char[var9 + 128];
  281.                   var8 = var7.length - var9 - 1;
  282.                   System.arraycopy(var6, 0, var7, 0, var9);
  283.                   var6 = var7;
  284.                }
  285.  
  286.                var7[var9++] = (char)var18;
  287.             }
  288.  
  289.             var16.close();
  290.          }
  291.  
  292.          if (var9 > 0) {
  293.             this.thisJob.appendJobLog(String.copyValueOf(var7, 0, var9));
  294.             Thread.sleep(2L);
  295.          }
  296.  
  297.          var12.destroy();
  298.       } catch (Exception var13) {
  299.          this.thisJob.appendJobLog("Call to paging program failed: " + var1);
  300.          this.thisJob.logException(var13);
  301.          var2 = -1;
  302.       }
  303.  
  304.       return var2;
  305.    }
  306.  
  307.    void setupJaggConnection() {
  308.       if (this.jaggSQL == null) {
  309.          this.jaggSQL = new JDPJagg(this.manager.JDPJaggPath);
  310.          this.jaggSQL.setDSN(this.manager.JDPJaggDSN);
  311.          this.jaggSQL.setCSTR(this.manager.JDPJaggCSTR);
  312.          this.jaggSQL.setJdbcDriver(this.manager.JDPJaggJdbcDriver);
  313.          this.jaggSQL.setJdbcPrefix(this.manager.JDPJaggJdbcPrefix);
  314.          this.jaggSQL.setJdbcSuffix(this.manager.JDPJaggJdbcSuffix);
  315.          this.jaggSQL.setUID(this.manager.JDPJaggJdbcUserid);
  316.          this.jaggSQL.setPWD(this.manager.JDPJaggJdbcPassword);
  317.       }
  318.  
  319.    }
  320.  
  321.    public void loadSettings() {
  322.       try {
  323.          JDPUser.classactivated = true;
  324.          JDPUser var1 = new JDPUser();
  325.          var1.u = new JDPUtils(var1);
  326.          var1.jaggSQL = this.jaggSQL;
  327.          String var2 = this.manager.JDPDirectory + "System" + File.separator + "ServerSettings.cfg";
  328.          JDPSaveProps var3 = new JDPSaveProps(var1);
  329.          boolean var4 = var3.load(var2);
  330.          if (var4) {
  331.             TextField var5 = new TextField("");
  332.             TextField var6 = new TextField("");
  333.             JDPChoice var7 = new JDPChoice(var1);
  334.             String[] var8 = new String[]{"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "", "", "", "", ""};
  335.             String[] var9 = new String[]{"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "", "", "", "", ""};
  336.             var7.loadChoice(var8, var9);
  337.             JDPChoice var10 = new JDPChoice(var1);
  338.             String[] var11 = new String[]{"300", "600", "1200", "2400", "4800", "9600", "14400", "19200", "38400", "56000", "128000", "256000", "", "", "", "", "", "", "", ""};
  339.             String[] var12 = new String[]{"300", "600", "1200", "2400", "4800", "9600", "14400", "19200", "38400", "56000", "128000", "256000", "", "", "", "", "", "", "", ""};
  340.             var10.loadChoice(var11, var12);
  341.             String var13 = "Server";
  342.             var3.restoreObject(var5, var13, "mailServer");
  343.             var3.restoreObject(var6, var13, "returnAddress");
  344.             var3.restoreObject(var7, var13, "commPort");
  345.             var3.restoreObject(var10, var13, "baudRate");
  346.             this.mailServer = ((TextComponent)var5).getText();
  347.             this.returnAddress = ((TextComponent)var6).getText();
  348.             this.commPort = var7.getSelectedItem();
  349.             this.baudRate = var10.getSelectedItem();
  350.             return;
  351.          }
  352.       } catch (Exception var14) {
  353.          this.thisJob.logException(var14);
  354.       }
  355.  
  356.    }
  357. }
  358.