ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/i-scream/projects/cms/source/server/uk/org/iscream/cms/server/client/alerters/EMail__Alerter.java
(Generate patch)

Comparing projects/cms/source/server/uk/org/iscream/cms/server/client/alerters/EMail__Alerter.java (file contents):
Revision 1.19 by ajm, Thu Mar 22 22:07:58 2001 UTC vs.
Revision 1.20 by ajm, Thu Mar 22 23:35:22 2001 UTC

# Line 6 | Line 6 | import uk.org.iscream.client.*;
6   import uk.org.iscream.core.*;
7   import uk.org.iscream.util.*;
8   import uk.org.iscream.componentmanager.*;
9
10 import java.util.*;
9   import java.io.*;
10 < import java.text.*;
10 > import java.util.StringTokenizer;
11  
12 +
13   /**
14   * This alerter delivers alerts using e-mail.
15   *
16   * @author  $Author$
17   * @version $Id$
18   */
19 < public class EMail__Alerter extends Thread implements PluginAlerter {
19 > public class EMail__Alerter extends AlerterSkeleton {
20  
21   //---FINAL ATTRIBUTES---
22  
# Line 28 | Line 27 | public class EMail__Alerter extends Thread implements
27      
28      public final String DESC = "Sends alerts over e-mail.";
29      
31    public final String DEFAULT_LEVEL = Alert.alertLevels[0];
32    
30      public final String NOT_CONFIGURED = "<NOT CONFIGURED>";
31      
32   //---STATIC METHODS---
33  
34   //---CONSTRUCTORS---
35  
39    public EMail__Alerter() {      
40        _logger.write(toString(), Logger.SYSINIT, "IRC Alerter started");
41        this.start();
42    }
43
36   //---PUBLIC METHODS---
37  
38      public void sendAlert(Alert alert) {
39 <        ConfigurationProxy cp = ConfigurationProxy.getInstance();
40 <        String levelName;
39 >        String alertType = Alert.alertLevels[alert.getLevel()];
40 >        // sort out the subject
41 >        String subject;
42          try {
43 <            levelName = cp.getProperty(_name, "Alerter.EMail.level");
43 >            subject = _cp.getProperty(_name, "Alerter.EMail.subject");
44          } catch (PropertyNotFoundException e) {
45 <            levelName = DEFAULT_LEVEL;
46 <            _logger.write(toString(), Logger.WARNING, "Alerter.EMail.level value unavailable using default of " + levelName);
45 >            subject = NOT_CONFIGURED;
46 >            _logger.write(toString(), Logger.WARNING, "Alerter.EMail.subject value unavailable using default of " + subject);
47          }
48 <        int level = StringUtils.getStringPos(levelName, Alert.alertLevels);
49 <        // only send if it's equal (or above) our level
50 <        if(((alert.getLevel() == 0) && (alert.getLastLevel() >= level)) || (alert.getLevel() >= level)) {
51 <            String alertType = Alert.alertLevels[alert.getLevel()];
52 <            String thresholdType = Alert.thresholdLevels[alert.getThreshold()];
53 <            String timeFirstSince = DateUtils.formatTime((System.currentTimeMillis() - alert.getInitialAlertTime())/1000, "%DAYS% days, %HOURS% hours, %MINS% mins, and %SECS% secs");
54 <            String timeFirstOccured = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT, Locale.UK).format(new Date(alert.getInitialAlertTime()));
55 <
56 <            // sort out the subject
57 <            String subject;
58 <            try {
59 <                subject = cp.getProperty(_name, "Alerter.EMail.subject");
60 <            } catch (PropertyNotFoundException e) {
61 <                subject = NOT_CONFIGURED;
62 <                _logger.write(toString(), Logger.WARNING, "Alerter.EMail.subject value unavailable using default of " + subject);
48 >        subject = processAlertMessage(subject, alert);
49 >                    
50 >        // sort out the message body
51 >        String message;
52 >        try {
53 >            message = _cp.getProperty(_name, "Alerter.EMail.message");
54 >        } catch (PropertyNotFoundException e) {
55 >            message = NOT_CONFIGURED;
56 >            _logger.write(toString(), Logger.WARNING, "Alerter.EMail.message value unavailable using default of " + message);
57 >        }
58 >        message = processAlertMessage(message, alert);
59 >                    
60 >        try {
61 >            // create SMTP message
62 >            Smtp smtp = new Smtp(_cp.getProperty(_name, "Alerter.EMail.smtpServer"));
63 >            // set our sender
64 >            smtp.setSender(_cp.getProperty(_name, "Alerter.EMail.sender"));
65 >            
66 >            String destList = _cp.getProperty("Host."+alert.getSource(), "Alerter.EMail.destList");
67 >            
68 >            // set the to: list
69 >            StringTokenizer st = new StringTokenizer(destList, ";");
70 >            while (st.hasMoreTokens()) {
71 >                smtp.setTo(st.nextToken());
72              }
73 <            subject = StringUtils.replaceText(subject, "%level%", alertType);
74 <            subject = StringUtils.replaceText(subject, "%threshold%", thresholdType);
75 <            subject = StringUtils.replaceText(subject, "%source%", alert.getSource());
76 <            subject = StringUtils.replaceText(subject, "%value%", alert.getValue());
77 <            subject = StringUtils.replaceText(subject, "%thresholdValue%", alert.getThresholdValue());
78 <            subject = StringUtils.replaceText(subject, "%attributeName%", alert.getAttributeName());
79 <            subject = StringUtils.replaceText(subject, "%timeTillNextAlert%",  DateUtils.getTimeString(Long.parseLong(alert.getTimeTillNextAlert())));
80 <            subject = StringUtils.replaceText(subject, "%timeSinceFirstAlert%", timeFirstSince);
81 <            subject = StringUtils.replaceText(subject, "%timeOfFirstAlert%", timeFirstOccured);
82 <                        
83 <            // sort out the message body
82 <            String message;
83 <            try {
84 <                message = cp.getProperty(_name, "Alerter.EMail.message");
85 <            } catch (PropertyNotFoundException e) {
86 <                message = NOT_CONFIGURED;
87 <                _logger.write(toString(), Logger.WARNING, "Alerter.EMail.message value unavailable using default of " + message);
88 <            }
89 <            message = StringUtils.replaceText(message, "%level%", alertType);
90 <            message = StringUtils.replaceText(message, "%threshold%", thresholdType);
91 <            message = StringUtils.replaceText(message, "%source%", alert.getSource());
92 <            message = StringUtils.replaceText(message, "%value%", alert.getValue());
93 <            message = StringUtils.replaceText(message, "%thresholdValue%", alert.getThresholdValue());
94 <            message = StringUtils.replaceText(message, "%attributeName%", alert.getAttributeName());
95 <            message = StringUtils.replaceText(message, "%timeTillNextAlert%",  DateUtils.getTimeString(Long.parseLong(alert.getTimeTillNextAlert())));
96 <            message = StringUtils.replaceText(message, "%timeSinceFirstAlert%", timeFirstSince);
97 <            message = StringUtils.replaceText(message, "%timeOfFirstAlert%", timeFirstOccured);
98 <                        
99 <            try {
100 <                // create SMTP message
101 <                Smtp smtp = new Smtp(cp.getProperty(_name, "Alerter.EMail.smtpServer"));
102 <                // set our sender
103 <                smtp.setSender(cp.getProperty(_name, "Alerter.EMail.sender"));
104 <                
105 <                String destList = cp.getProperty("Host."+alert.getSource(), "Alerter.EMail.destList");
106 <                
107 <                // set the to: list
108 <                StringTokenizer st = new StringTokenizer(destList, ";");
109 <                while (st.hasMoreTokens()) {
110 <                    smtp.setTo(st.nextToken());
111 <                }
112 <    
113 <                // prepare to print the message            
114 <                PrintWriter out = smtp.getOutputStream();
115 <                out.println("Subject: "+subject);
116 <                out.println();
117 <                
118 <                // send the message
119 <                out.println(message);
120 <                smtp.sendMessage();
121 <                smtp.close();
122 <                _logger.write(toString(), Logger.DEBUG, "Sending " + _name + " at "+ alertType + " level");
123 <            }
124 <            catch(IOException e) {
125 <                _logger.write(toString(), Logger.ERROR, "Error whilst sending message: "+e);
126 <            }
127 <            catch(PropertyNotFoundException e) {
128 <                _logger.write(toString(), Logger.ERROR, "Error obtaining essential configuration: "+e);
129 <            }
73 >
74 >            // prepare to print the message            
75 >            PrintWriter out = smtp.getOutputStream();
76 >            out.println("Subject: "+subject);
77 >            out.println();
78 >            
79 >            // send the message
80 >            out.println(message);
81 >            smtp.sendMessage();
82 >            smtp.close();
83 >            _logger.write(toString(), Logger.DEBUG, "Sending " + _name + " at "+ alertType + " level");
84          }
85 +        catch(IOException e) {
86 +            _logger.write(toString(), Logger.ERROR, "Error whilst sending message: "+e);
87 +        }
88 +        catch(PropertyNotFoundException e) {
89 +            _logger.write(toString(), Logger.ERROR, "Error obtaining essential configuration: "+e);
90 +        }
91      }
92  
93      /**
# Line 147 | Line 107 | public class EMail__Alerter extends Thread implements
107      }
108  
109      /**
110 <     * return the String representation of what the filter does
110 >     * return the String representation of what the alerter does
111       */
112      public String getDescription(){
113          return DESC;
# Line 157 | Line 117 | public class EMail__Alerter extends Thread implements
117      
118   //---ACCESSOR/MUTATOR METHODS---
119  
160    protected Queue getQueue() {
161        return AlerterManager.getInstance().getQueue();
162    }
163    
164    protected int getQueueId() {
165        if (_qID == -1) {
166            _qID = getQueue().getQueue();
167            _logger.write(toString(), Logger.DEBUG, "Assigned Queue - " + _qID);
168        }
169        return _qID;
170    }
171
120   //---ATTRIBUTES---
121      
122      /**
# Line 180 | Line 128 | public class EMail__Alerter extends Thread implements
128       * can be placed here.  This name could also
129       * be changed to null for utility classes.
130       */
131 <    private String _name = "EMail Alert";
131 >    protected String _name = "EMail";
132  
133      /**
134       * This holds a reference to the
# Line 188 | Line 136 | public class EMail__Alerter extends Thread implements
136       */
137      private Logger _logger = ReferenceManager.getInstance().getLogger();
138      
191    /**
192     * The queue id for this alerters queue in the alert queue
193     */
194    private int _qID = -1;
195    
196    /**
197     * The running status of the alerter
198     */
199    private boolean _running = true;
200
139   //---STATIC ATTRIBUTES---
140  
141   }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines