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 + -
显示快捷键?