1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 package org.bitrepository.service;
26
27 import java.util.UUID;
28 import org.bitrepository.bitrepositoryelements.Alarm;
29 import org.bitrepository.bitrepositorymessages.AlarmMessage;
30 import org.bitrepository.common.ArgumentValidator;
31 import org.bitrepository.common.settings.Settings;
32 import org.bitrepository.common.utils.CalendarUtils;
33 import org.bitrepository.protocol.messagebus.MessageSender;
34 import org.bitrepository.service.contributor.MessageDispatcher;
35 import org.bitrepository.settings.referencesettings.AlarmLevel;
36 import org.slf4j.Logger;
37 import org.slf4j.LoggerFactory;
38
39
40
41
42 public class AlarmDispatcher extends MessageDispatcher {
43 private Logger log = LoggerFactory.getLogger(getClass());
44 private final AlarmLevel alarmLevel;
45
46
47
48
49
50 public AlarmDispatcher(Settings settings, MessageSender sender, AlarmLevel alarmLevel) {
51 super(settings, sender);
52 if (alarmLevel == null) {
53 this.alarmLevel = AlarmLevel.ERROR;
54 } else {
55 this.alarmLevel = alarmLevel;
56 }
57 }
58
59
60
61
62 public AlarmDispatcher(Settings settings, MessageSender sender) {
63 this(settings, sender, AlarmLevel.ERROR);
64 }
65
66
67
68
69
70
71 public void warning(Alarm alarm) {
72 ArgumentValidator.checkNotNull(alarm, "alarm");
73 if(alarmLevel != AlarmLevel.WARNING) {
74 log.debug("Will send a '" + AlarmLevel.WARNING + "' alarm, when the alarm level is '"
75 + alarmLevel + "'{}", alarm);
76 } else {
77 sendAlarm(alarm);
78 }
79 }
80
81
82
83
84
85
86 public void error(Alarm alarm) {
87 ArgumentValidator.checkNotNull(alarm, "alarm");
88 if(alarmLevel == AlarmLevel.EMERGENCY) {
89 log.debug("Cannot send a '" + AlarmLevel.ERROR + "' alarm, when the alarm level is '"
90 + alarmLevel + "'{}", alarm);
91 } else {
92 sendAlarm(alarm);
93 }
94 }
95
96
97
98
99
100 public void emergency(Alarm alarm) {
101 ArgumentValidator.checkNotNull(alarm, "alarm");
102 sendAlarm(alarm);
103 }
104
105
106
107
108
109 protected void sendAlarm(Alarm alarm) {
110 AlarmMessage message = new AlarmMessage();
111 alarm.setAlarmRaiser(settings.getComponentID());
112 alarm.setOrigDateTime(CalendarUtils.getNow());
113
114 message.setAlarm(alarm);
115 message.setCorrelationID(UUID.randomUUID().toString());
116 message.setReplyTo(settings.getContributorDestinationID());
117 message.setDestination(settings.getAlarmDestination());
118 message.setCollectionID(alarm.getCollectionID());
119
120 log.warn("Sending alarm: " + alarm);
121 dispatchMessage(message);
122 }
123 }