alarmmodeldemo.java
来自「全面实现ilog地功能,没有使用第三方lib.」· Java 代码 · 共 236 行
JAVA
236 行
/*
* This source code is part of TWaver 1.3.1
*
* SERVA Software PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
* Copyright 2000-2005 SERVA Software, Inc. All rights reserved.
*/
package demo.alarm;
import java.lang.reflect.Method;
import java.util.Iterator;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import twaver.Alarm;
import twaver.AlarmSeverity;
import twaver.Node;
import twaver.TAlarmOverview;
import twaver.TDataBox;
import twaver.TaskAdapter;
import twaver.TaskScheduler;
import twaver.network.TNetwork;
import twaver.table.TAlarmTable;
import demo.DemoPane;
public class AlarmModelDemo extends DemoPane {
private TDataBox box = new TDataBox();
private Node node1 = new Node("NODE_1");
private Node node2 = new Node("NODE_2");
private Node node3 = new Node("NODE_3");
private Node node4 = new Node("NODE_4");
private Node node5 = new Node("NODE_5");
private TAlarmTable alarmTable = new TAlarmTable(box);
private TAlarmOverview overview = new TAlarmOverview(box);
private TNetwork network = new TNetwork(box);
public AlarmModelDemo() {
alarmTable.setTableBodyPopupMenuFactory(null);
overview.setPanel(TAlarmOverview.BAR_PANEL);
JSplitPane bottomSplit = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, new JScrollPane(alarmTable), overview);
bottomSplit.setDividerLocation(300);
JSplitPane split = new JSplitPane(JSplitPane.VERTICAL_SPLIT, network, bottomSplit);
split.setDividerLocation(200);
this.add(split);
node1.setLocation(100, 80);
node1.setName(node1.getID().toString());
box.addElement(node1);
node2.setLocation(200, 80);
node2.setName(node2.getID().toString());
box.addElement(node2);
node3.setLocation(300, 80);
node3.setName(node3.getID().toString());
box.addElement(node3);
node4.setLocation(400, 80);
node4.setName(node4.getID().toString());
box.addElement(node4);
node5.setLocation(500, 80);
node5.setName(node5.getID().toString());
box.addElement(node5);
network.setElementDeletable(true);
// create a task to change element's alarm state
TaskScheduler.getInstance().register(new TaskAdapter() {
int step = 0;
public void run(long clock) {
step++;
try {
// invoke method
Method method = AlarmModelDemo.class.getDeclaredMethod("step" + step, null);
method.invoke(AlarmModelDemo.this, null);
}
catch (Exception ex) {
if (!NoSuchMethodException.class.isInstance(ex)) {
ex.printStackTrace();
}
clear();
step = 0;
}
}
public int getInterval() {
return 1000;
}
});
}
private void changeNode5() {
// remove node5 from box
if (box.contains(node5)) {
box.removeElement(node5);
}
// add node5 to box and add some alarm state
else {
node5.getAlarmState().clear();
box.addElement(node5);
AlarmSeverity severity = AlarmSeverity.getNonClearedRandomSeverity();
for (int i = 0; i < 8; i++) {
Alarm alarm = new Alarm(new Integer(50 + i), node5.getID(), severity);
box.getAlarmModel().addAlarm(alarm);
}
}
}
public void step1() {
Alarm alarm = null;
// set alarm state of node2 bypass alarm model
node2.getAlarmState().setAcknowledgedAlarmCount(AlarmSeverity.INDETERMINATE, 5);
// add alarm to node1
alarm = new Alarm(new Integer(1), node1.getID(), AlarmSeverity.CRITICAL);
box.getAlarmModel().addAlarm(alarm);
// add alarm to node2
alarm = new Alarm(new Integer(2), node2.getID(), AlarmSeverity.MINOR);
alarm.setAcked(true);
box.getAlarmModel().addAlarm(alarm);
// add alarm to node3
alarm = new Alarm(new Integer(3), node3.getID(), AlarmSeverity.MAJOR);
box.getAlarmModel().addAlarm(alarm);
alarm = new Alarm(new Integer(4), node3.getID(), AlarmSeverity.MAJOR);
box.getAlarmModel().addAlarm(alarm);
alarm = new Alarm(new Integer(5), node3.getID(), AlarmSeverity.MAJOR);
box.getAlarmModel().addAlarm(alarm);
alarm = new Alarm(new Integer(6), node3.getID(), AlarmSeverity.MAJOR);
box.getAlarmModel().addAlarm(alarm);
alarm = new Alarm(new Integer(7), node3.getID(), AlarmSeverity.MAJOR);
box.getAlarmModel().addAlarm(alarm);
// add alarm to node4
alarm = new Alarm(new Integer(8), node4.getID(), AlarmSeverity.CRITICAL);
box.getAlarmModel().addAlarm(alarm);
// change node5
this.changeNode5();
}
public void step2() {
box.getAlarmModel().getAlarmByID(new Integer(1)).setAlarmSeverity(AlarmSeverity.MAJOR);
box.getAlarmModel().getAlarmByID(new Integer(2)).setAcked(false);
box.getAlarmModel().removeAlarmByID(new Integer(3));
box.getAlarmModel().addAlarm(new Alarm(new Integer(9), node4.getID(), AlarmSeverity.CRITICAL));
this.changeNode5();
}
public void step3() {
box.getAlarmModel().getAlarmByID(new Integer(1)).setAlarmSeverity(AlarmSeverity.MINOR);
box.getAlarmModel().getAlarmByID(new Integer(2)).setAcked(true);
box.getAlarmModel().removeAlarmByID(new Integer(4));
box.getAlarmModel().addAlarm(new Alarm(new Integer(10), node4.getID(), AlarmSeverity.CRITICAL));
this.changeNode5();
}
public void step4() {
box.getAlarmModel().getAlarmByID(new Integer(1)).setAlarmSeverity(AlarmSeverity.WARNING);
box.getAlarmModel().getAlarmByID(new Integer(2)).setAcked(false);
box.getAlarmModel().removeAlarmByID(new Integer(5));
box.getAlarmModel().addAlarm(new Alarm(new Integer(11), node4.getID(), AlarmSeverity.CRITICAL));
this.changeNode5();
}
public void step5() {
box.getAlarmModel().getAlarmByID(new Integer(1)).setAlarmSeverity(AlarmSeverity.INDETERMINATE);
box.getAlarmModel().getAlarmByID(new Integer(2)).setAcked(true);
box.getAlarmModel().removeAlarmByID(new Integer(6));
box.getAlarmModel().addAlarm(new Alarm(new Integer(12), node4.getID(), AlarmSeverity.CRITICAL));
this.changeNode5();
}
public void step6() {
box.getAlarmModel().getAlarmByID(new Integer(1)).setAlarmSeverity(AlarmSeverity.CLEARED);
box.getAlarmModel().getAlarmByID(new Integer(2)).setAlarmSeverity(AlarmSeverity.CLEARED);
box.getAlarmModel().removeAlarmByID(new Integer(7));
Iterator it = box.getAlarmModel().getAlarmsByElement(node4).iterator();
while (it.hasNext()) {
Alarm alarm = (Alarm) it.next();
alarm.setAcked(true);
}
this.changeNode5();
}
public void step7() {
box.getAlarmModel().removeAlarmsByElement(node1);
this.changeNode5();
}
public void step8() {
box.getAlarmModel().removeAlarmsByElement(node2);
this.changeNode5();
}
public void step9() {
box.getAlarmModel().removeAlarmsByElement(node3);
this.changeNode5();
}
public void step10() {
box.getAlarmModel().removeAlarmsByElement(node4);
this.changeNode5();
}
public void step11() {
// clear all alarms in alarm model, but this
// can't clear alarm state that is setted bypass alarm model
box.getAlarmModel().removeAllAlarms();
this.changeNode5();
}
public void clear() {
// clear all alarm state of node2
node2.getAlarmState().clear();
this.changeNode5();
}
public String getTitle() {
return "Using Alarm Model";
}
public String getHelp() {
return "This demo shows the usage of alarm model." +
"<p>In TWaver, <em>AlarmModel</em> contains all " +
"alarm objects. When alarms changed, alarm model will synchronize the alarm state " +
"for each element.";
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?