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
Revision: 1.26
Committed: Tue May 21 16:47:16 2002 UTC (22 years ago) by tdb
Branch: MAIN
Changes since 1.25: +3 -2 lines
Log Message:
Added URL to GPL headers.

File Contents

# User Rev Content
1 tdb 1.25 /*
2     * i-scream central monitoring system
3 tdb 1.26 * http://www.i-scream.org.uk
4 tdb 1.25 * Copyright (C) 2000-2002 i-scream
5     *
6     * This program is free software; you can redistribute it and/or
7     * modify it under the terms of the GNU General Public License
8     * as published by the Free Software Foundation; either version 2
9     * of the License, or (at your option) any later version.
10     *
11     * This program is distributed in the hope that it will be useful,
12     * but WITHOUT ANY WARRANTY; without even the implied warranty of
13     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14     * GNU General Public License for more details.
15     *
16     * You should have received a copy of the GNU General Public License
17     * along with this program; if not, write to the Free Software
18     * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
19     */
20    
21 tdb 1.1 //---PACKAGE DECLARATION---
22 tdb 1.24 package uk.org.iscream.cms.server.client.alerters;
23 tdb 1.1
24     //---IMPORTS---
25 tdb 1.24 import uk.org.iscream.cms.server.client.*;
26     import uk.org.iscream.cms.server.core.*;
27     import uk.org.iscream.cms.server.util.*;
28     import uk.org.iscream.cms.server.componentmanager.*;
29 ajm 1.20 import java.io.*;
30     import java.util.StringTokenizer;
31 tdb 1.1
32 tdb 1.2
33 tdb 1.1 /**
34 tdb 1.8 * This alerter delivers alerts using e-mail.
35 tdb 1.1 *
36 tdb 1.25 * @author $Author: tdb $
37 tdb 1.26 * @version $Id: EMail__Alerter.java,v 1.25 2002/05/18 18:16:00 tdb Exp $
38 tdb 1.1 */
39 ajm 1.20 public class EMail__Alerter extends AlerterSkeleton {
40 tdb 1.1
41     //---FINAL ATTRIBUTES---
42    
43     /**
44     * The current CVS revision of this class
45     */
46 tdb 1.26 public final String REVISION = "$Revision: 1.25 $";
47 tdb 1.1
48 ajm 1.22 /**
49     * A description of this alerter
50     */
51 tdb 1.8 public final String DESC = "Sends alerts over e-mail.";
52 tdb 1.1
53     //---STATIC METHODS---
54    
55     //---CONSTRUCTORS---
56    
57     //---PUBLIC METHODS---
58    
59 ajm 1.22 /**
60     * Implements the abstract method from the skeleton class.
61     * This method will attempt to send an alert
62     * message using the configured email configuration.
63     *
64     * @param alert the alert to send
65     */
66 tdb 1.1 public void sendAlert(Alert alert) {
67 tdb 1.21 // get the subject and replace fields
68 ajm 1.20 String subject;
69 tdb 1.14 try {
70 ajm 1.20 subject = _cp.getProperty(_name, "Alerter.EMail.subject");
71 tdb 1.14 } catch (PropertyNotFoundException e) {
72 ajm 1.20 subject = NOT_CONFIGURED;
73     _logger.write(toString(), Logger.WARNING, "Alerter.EMail.subject value unavailable using default of " + subject);
74 tdb 1.14 }
75 ajm 1.20 subject = processAlertMessage(subject, alert);
76    
77 tdb 1.21 // get the message body and replace fields
78 ajm 1.20 String message;
79     try {
80     message = _cp.getProperty(_name, "Alerter.EMail.message");
81     } catch (PropertyNotFoundException e) {
82     message = NOT_CONFIGURED;
83     _logger.write(toString(), Logger.WARNING, "Alerter.EMail.message value unavailable using default of " + message);
84     }
85     message = processAlertMessage(message, alert);
86 tdb 1.21
87     // attempt to send the actual message
88 ajm 1.20 try {
89     // create SMTP message
90     Smtp smtp = new Smtp(_cp.getProperty(_name, "Alerter.EMail.smtpServer"));
91     // set our sender
92     smtp.setSender(_cp.getProperty(_name, "Alerter.EMail.sender"));
93    
94 tdb 1.21 // list of destination addresses
95 ajm 1.20 String destList = _cp.getProperty("Host."+alert.getSource(), "Alerter.EMail.destList");
96    
97     // set the to: list
98     StringTokenizer st = new StringTokenizer(destList, ";");
99     while (st.hasMoreTokens()) {
100     smtp.setTo(st.nextToken());
101 tdb 1.2 }
102 ajm 1.20
103     // prepare to print the message
104     PrintWriter out = smtp.getOutputStream();
105 tdb 1.21 out.println("Subject: "+subject+"\n");
106 ajm 1.20
107     // send the message
108     out.println(message);
109     smtp.sendMessage();
110     smtp.close();
111 tdb 1.21 _logger.write(toString(), Logger.DEBUG, "Sending " + _name + " at "+ Alert.alertLevels[alert.getLevel()] + " level");
112 ajm 1.20 }
113     catch(IOException e) {
114     _logger.write(toString(), Logger.ERROR, "Error whilst sending message: "+e);
115     }
116     catch(PropertyNotFoundException e) {
117     _logger.write(toString(), Logger.ERROR, "Error obtaining essential configuration: "+e);
118 tdb 1.2 }
119 tdb 1.1 }
120    
121     /**
122     * Overrides the {@link java.lang.Object#toString() Object.toString()}
123     * method to provide clean logging (every class should have this).
124     *
125 tdb 1.24 * This uses the uk.org.iscream.cms.server.util.NameFormat class
126 tdb 1.1 * to format the toString()
127     *
128     * @return the name of this class and its CVS revision
129     */
130     public String toString() {
131     return FormatName.getName(
132     _name,
133     getClass().getName(),
134     REVISION);
135     }
136    
137     /**
138 ajm 1.22 * Return the String representation of what the alerter does
139     *
140     * @return the description
141 tdb 1.1 */
142     public String getDescription(){
143     return DESC;
144     }
145    
146     //---PRIVATE METHODS---
147 ajm 1.9
148 tdb 1.1 //---ACCESSOR/MUTATOR METHODS---
149 tdb 1.23
150     /**
151     * Returns the "friendly" name of this class. This
152     * is simply an accessor for _name, required due to
153     * inheritance issues with extending AlerterSkeleton.
154     *
155     * @return the friendly name
156     */
157     protected String getFName() {
158     return _name;
159     }
160 tdb 1.1
161     //---ATTRIBUTES---
162 tdb 1.2
163 tdb 1.1 /**
164     * This is the friendly identifier of the
165     * component this class is running in.
166     * eg, a Filter may be called "filter1",
167     * If this class does not have an owning
168     * component, a name from the configuration
169     * can be placed here. This name could also
170     * be changed to null for utility classes.
171     */
172 ajm 1.20 protected String _name = "EMail";
173 ajm 1.19
174 tdb 1.1 //---STATIC ATTRIBUTES---
175    
176     }