alarmpropagationdemo.java
来自「全面实现ilog地功能,没有使用第三方lib.」· Java 代码 · 共 128 行
JAVA
128 行
/*
* 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.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JComboBox;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import javax.swing.JToolBar;
import twaver.AlarmPropagator;
import twaver.AlarmSeverity;
import twaver.Element;
import twaver.SummingAlarmPropagator;
import twaver.TDataBox;
import twaver.TaskAdapter;
import twaver.TaskScheduler;
import twaver.network.TNetwork;
import twaver.tree.TTree;
import demo.DemoPane;
public class AlarmPropagationDemo extends DemoPane {
private TDataBox box = new TDataBox("Alarm Propagation Demo");
private TNetwork network = new TNetwork(box);
private TTree tree = new TTree(box);
private JComboBox propagators = new JComboBox();
private JSplitPane split = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, new JScrollPane(tree), network);
public AlarmPropagationDemo() {
// init databox
try {
box.parse("/demo/resource/alarm/propagator.xml");
} catch (IOException e) {
e.printStackTrace();
}
final Element element = box.getElementByID("Equipment3");
// init ui
tree.setElementMakedVisibleOnSelected(true);
network.setElementMakedVisibleOnSelected(true);
JToolBar toobar = new JToolBar();
toobar.add(propagators);
network.setToolbar(toobar);
this.add(split);
propagators.setModel(new DefaultComboBoxModel(new Object[] {
// SummingAlarm Propagator
new SummingAlarmPropagator() {
public String toString(){
return "Default Propagator";
}
},
// Critical Propagator
new CriticalAlarmPropagator() {
public String toString(){
return "Critical Propagator";
}
},
// Threshold Propagator
new ThresholdAlarmPropagator() {
public String toString(){
return "Threshold Propagator";
}
}
}));
propagators.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
box.setAlarmPropagator((AlarmPropagator)propagators.getSelectedItem());
element.getAlarmState().clear();
}
});
box.getSelectionModel().appendSelection(box.getElementByID("Equipment1"));
box.getSelectionModel().appendSelection(box.getElementByID("Equipment2"));
box.getSelectionModel().appendSelection(box.getElementByID("Equipment3"));
box.getSelectionModel().appendSelection(box.getElementByID("Equipment4"));
split.setDividerLocation(250);
TaskScheduler.getInstance().register(new TaskAdapter(){
public void run(long clock) {
if(propagators.getSelectedItem() instanceof ThresholdAlarmPropagator){
if(element.getAlarmState().getAlarmCount(AlarmSeverity.CRITICAL) < 6){
element.getAlarmState().increaseNewAlarm(AlarmSeverity.CRITICAL, 1);
}else{
element.getAlarmState().clear();
}
}else{
AlarmSeverity severity = element.getAlarmState().getHighestNewAlarmSeverity();
if(severity == null || severity == AlarmSeverity.CRITICAL){
severity = AlarmSeverity.INDETERMINATE;
}else{
severity = AlarmSeverity.getByValue(severity.getValue() + 100);
}
element.getAlarmState().clear();
element.getAlarmState().setNewAlarmCount(severity, 1);
}
}
public int getInterval() {
return 1000;
}
});
}
public String getTitle() {
return "Alarm Propagation";
}
public String getHelp() {
return "This demo shows how to customize alarm propagator."+
"<p><li>Default Propagator: Propagate most severe alarm state to parent."+
"<li>Critical Propagator: Only propagate CRITICAL alarm severity to parent."+
"<li>Threshold Propagator: Only if CRITICAL alarm count reach 3, then propagate CRITICAL alarm severity to parent";
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?