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/IRC__Alerter.java
(Generate patch)

Comparing projects/cms/source/server/uk/org/iscream/cms/server/client/alerters/IRC__Alerter.java (file contents):
Revision 1.24 by ajm, Thu Mar 22 22:07:58 2001 UTC vs.
Revision 1.25 by ajm, Fri Mar 23 01:09:51 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
9   import java.io.*;
10   import java.net.*;
11   import java.util.*;
12 < import java.text.*;
12 > import java.text.DateFormat;
13  
14   /**
15   * This Alert sends an IRC message.
# Line 21 | Line 20 | import java.text.*;
20   * @author  $Author$
21   * @version $Id$
22   */
23 < public class IRC__Alerter extends Thread implements PluginAlerter {
23 > public class IRC__Alerter extends AlerterSkeleton {
24  
25   //---FINAL ATTRIBUTES---
26  
# Line 40 | Line 39 | public class IRC__Alerter extends Thread implements Pl
39       */
40      public final int DEFAULT_RECONNECT_DELAY = 30;
41      
43    public final String DEFAULT_LEVEL = Alert.alertLevels[0];
44    
45    public final String NOT_CONFIGURED = "<NOT CONFIGURED>";
46    
42   //---STATIC METHODS---
43  
44   //---CONSTRUCTORS---
45  
46      public IRC__Alerter() {
47 <                        
47 >        super();
48          // connect to the IRC server
49          _ircbot = new IRCBot();
50          // set it's name and start it
51          _ircbot.setName("client.IRC__Alerter$IRCBot");
52          _ircbot.start();
53          _startTime = System.currentTimeMillis();
59        this.start();
54          _logger.write(toString(), Logger.SYSINIT, "IRC Alerter started");
55      }
56  
57   //---PUBLIC METHODS---
58  
59 <    public void run() {
60 <        while(_running) {
61 <            try {
62 <                sendAlert((Alert) getQueue().get(getQueueId()));
63 <            } catch (InvalidQueueException e) {
64 <                _logger.write(this.toString(), Logger.ERROR, "Unable to get queue.");
65 <            }
72 <        }
73 <    }
74 <
59 >    /**
60 >     * Implements the abstract method from the skeleton class.
61 >     * This method will attempt to send an alert
62 >     * message over the IRC channel.
63 >     *
64 >     * @param alert the alert to send
65 >     */
66      public void sendAlert(Alert alert) {
67          // only send alerts if we're active
68          if(_active) {
69 <            ConfigurationProxy cp = ConfigurationProxy.getInstance();
70 <            
71 <            String levelName;
69 >            // sort out the message      
70 >            String alertType = Alert.alertLevels[alert.getLevel()];        
71 >            String message;
72              try {
73 <                levelName = cp.getProperty(_name, "Alerter.IRC.level");
73 >                message = _cp.getProperty(_name, "Alerter.IRC.message");
74              } catch (PropertyNotFoundException e) {
75 <                levelName = DEFAULT_LEVEL;
76 <                _logger.write(toString(), Logger.WARNING, "Alerter.IRC.level value unavailable using default of " + levelName);
75 >                message = NOT_CONFIGURED;
76 >                _logger.write(toString(), Logger.WARNING, "Alerter.IRC.message value unavailable using default of " + message);
77              }
78 <            int level = StringUtils.getStringPos(levelName, Alert.alertLevels);
79 <            // only send if it's equal (or above) our level
80 <            if(((alert.getLevel() == 0) && (alert.getLastLevel() >= level)) || (alert.getLevel() >= level)) {
81 <                String alertType = Alert.alertLevels[alert.getLevel()];
82 <                String thresholdType = Alert.thresholdLevels[alert.getThreshold()];
83 <                String timeFirstSince = DateUtils.formatTime((System.currentTimeMillis() - alert.getInitialAlertTime())/1000, "%DAYS% days, %HOURS% hours, %MINS% mins, and %SECS% secs");
84 <                String timeFirstOccured = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT, Locale.UK).format(new Date(alert.getInitialAlertTime()));
85 <                // sort out the message              
86 <                String message;
96 <                try {
97 <                    message = cp.getProperty(_name, "Alerter.IRC.message");
98 <                } catch (PropertyNotFoundException e) {
99 <                    message = NOT_CONFIGURED;
100 <                    _logger.write(toString(), Logger.WARNING, "Alerter.IRC.message value unavailable using default of " + message);
101 <                }
102 <                
103 <                message = StringUtils.replaceText(message, "%level%", alertType);
104 <                message = StringUtils.replaceText(message, "%threshold%", thresholdType);
105 <                message = StringUtils.replaceText(message, "%source%", alert.getSource());
106 <                message = StringUtils.replaceText(message, "%value%", alert.getValue());
107 <                message = StringUtils.replaceText(message, "%thresholdValue%", alert.getThresholdValue());
108 <                message = StringUtils.replaceText(message, "%attributeName%", alert.getAttributeName());
109 <                message = StringUtils.replaceText(message, "%timeTillNextAlert%",  DateUtils.getTimeString(Long.parseLong(alert.getTimeTillNextAlert())));
110 <                message = StringUtils.replaceText(message, "%timeSinceFirstAlert%", timeFirstSince);
111 <                message = StringUtils.replaceText(message, "%timeOfFirstAlert%", timeFirstOccured);
112 <                
113 <                // send the message
114 <                _logger.write(toString(), Logger.DEBUG, "Sending " + _name + " at "+ alertType + " level");
115 <                _ircbot.sendMsg(message);
116 <                _lastAlert = message;
117 <                _lastAlertTime = System.currentTimeMillis();
118 <                _alertCount ++;
119 <            }
120 <        }
121 <        else {
78 >            message = processAlertMessage(message, alert);                
79 >            
80 >            // send the message
81 >            _logger.write(toString(), Logger.DEBUG, "Sending " + _name + " at "+ alertType + " level");
82 >            _ircbot.sendMsg(message);
83 >            _lastAlert = message;
84 >            _lastAlertTime = System.currentTimeMillis();
85 >            _alertCount ++;
86 >        } else {
87              _ignoredCount ++;
88          }
89      }
# Line 139 | Line 104 | public class IRC__Alerter extends Thread implements Pl
104              REVISION);
105      }
106  
107 <    /**
108 <     * return the String representation of what the filter does
107 >    /**
108 >     * Return the String representation of what the alerter does
109 >     *
110 >     * @return the description
111       */
112      public String getDescription(){
113          return DESC;
# Line 150 | Line 117 | public class IRC__Alerter extends Thread implements Pl
117  
118   //---ACCESSOR/MUTATOR METHODS---
119  
153    protected Queue getQueue() {
154        return AlerterManager.getInstance().getQueue();
155    }
156    
157    protected int getQueueId() {
158        if (_qID == -1) {
159            _qID = getQueue().getQueue();
160            _logger.write(toString(), Logger.DEBUG, "Assigned Queue - " + _qID);
161        }
162        return _qID;
163    }
164
120   //---ATTRIBUTES---
121      
122      /**
# Line 200 | Line 155 | public class IRC__Alerter extends Thread implements Pl
155      private long _startTime;
156      
157      /**
203     * The running status of the alerter
204     */
205    private boolean _running = true;
206    
207    /**
158       * This is the friendly identifier of the
159       * component this class is running in.
160       * eg, a Filter may be called "filter1",
# Line 213 | Line 163 | public class IRC__Alerter extends Thread implements Pl
163       * can be placed here.  This name could also
164       * be changed to null for utility classes.
165       */
166 <    private String _name = "IRC Alert";
166 >    private String _name = "IRC";
167  
218    /**
219     * This holds a reference to the
220     * system logger that is being used.
221     */
222    private Logger _logger = ReferenceManager.getInstance().getLogger();
223    
224    /**
225     * The queue id for this alerters queue in the alert queue
226     */
227    private int _qID = -1;
228
168   //---STATIC ATTRIBUTES---
169  
170   //---INNER CLASSES---
# Line 685 | Line 624 | public class IRC__Alerter extends Thread implements Pl
624           * A reminder of our current nickname...
625           */
626          private String _nickname;
627 +        
628 +        /**
629 +         * This holds a reference to the
630 +         * system logger that is being used.
631 +         */
632 +        protected Logger _logger = ReferenceManager.getInstance().getLogger();
633          
634      }
635  

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines