⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 eventimpl.java

📁 监控大型网络的软件。能够自动发现拓扑结构
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
import java.util.*;import java.io.*;import java.text.*;import java.sql.ResultSet;import java.sql.ResultSetMetaData;import java.sql.SQLException;import no.ntnu.nav.Database.*;import no.ntnu.nav.logger.*;import no.ntnu.nav.eventengine.*;/** * Implementation of Event and Alert interfaces. * */class EventImpl implements Event, Alert{	private String eventqid;	private String source;	private int deviceid;	private int netboxid;	private String subid;	private Date time;	private String eventtypeid;	private int state;	private int value;	private int severity;	private Map varMap;	private Map historyVarMap = new HashMap();	private String alerttype;	private boolean postAlertq = true;	private List eventList = new ArrayList();	private boolean disposed;	private boolean deferred;	public EventImpl(String eventqid, String source, int deviceid, int netboxid, String subid, String time, String eventtypeid, char state, int value, int severity, Map varMap)	{		this.eventqid = eventqid;		this.source = source;		this.deviceid = deviceid;		this.netboxid = netboxid;		this.subid = subid;		try {			this.time = stringToDate(time);		} catch (ParseException e) {			Log.c("EVENT_IMPL", "CONSTRUCTOR", "Error in date '" + time + "' from Postgres, should not happen: " + e.getMessage());		}		this.eventtypeid = eventtypeid;		switch (state) {			case 'x': this.state = STATE_NONE; break;			case 's': this.state = STATE_START; break;			case 'e': this.state = STATE_END; break;		}		this.value = value;		this.severity = severity;		this.varMap = varMap;	}	public EventImpl(EventImpl e)	{		eventqid = e.eventqid;		source = e.source;		deviceid = e.deviceid;		netboxid = e.netboxid;		subid = e.subid;		time = e.time;		eventtypeid = e.eventtypeid;		state = e.state;		value = e.value;		severity = e.severity;		varMap = (Map) ((HashMap)e.varMap).clone();	}	public EventImpl()	{		source = "";		eventtypeid = "";		varMap = new HashMap();	}	public String getEventqid() { return eventqid; }	public void setEventqid(String s) { eventqid = s; }	// Event	public String getSource() { return source; }	public int getDeviceid() { return deviceid; }	public Integer getDeviceidI() { return new Integer(deviceid); }	public int getNetboxid() { return netboxid; }	public String getSubid() { return subid; }	public Date getTime() { return time; }	public String getTimeS() { return dateToString(time); }	public String getEventtypeid() { return eventtypeid; }	public int getState() { return state; }	public int getValue() { return value; }	public int getSeverity() { return severity; }	//public Set getVar(String var) { return (Set)varMap.get(var); }	public String getVar(String var) { return (String)varMap.get(var); }	public Iterator getVarIterator() { return varMap.entrySet().iterator(); }	public Map getVarMap() { return new HashMap(varMap); }	public void dispose()	{		if (disposed) return;		try {			Database.update("DELETE FROM eventq WHERE eventqid = '"+eventqid+"'");		} catch (SQLException e) {			Log.e("EVENT_IMPL", "DISPOSE", "EventImpl: Cannot dispose of self: " + e.getMessage());			return;		}		disposed = true;	}	public void defer(String reason) {		if (disposed || deferred) return;		try {			String sev = getSeverity() == 0 ? "-1" : "(-severity)";			Database.update("UPDATE eventq SET severity = " + sev + " WHERE eventqid = '"+eventqid+"'");		} catch (SQLException e) {			Log.e("EVENT_IMPL", "DEFER", "Cannot update severity: " + e.getMessage());			return;		}		postEventqvar("deferred", "yes");		if (reason != null) postEventqvar("deferred_reason", reason);		deferred = true;			}	private void postEventqvar(String var, String val) {		try {			String[] ins = {				"eventqid", eventqid,				"var", var,				"val", val,			};			Database.insert("eventqvar", ins);		} catch (SQLException e) {			Log.e("EVENT_IMPL", "POST_EVENTQVAR", "Cannot post to eventqvar: " + e.getMessage());		}	}	// Alert	public void setDeviceid(int deviceid) { this.deviceid = deviceid; }	public void setNetboxid(int netboxid) { this.netboxid = netboxid; }	public void setSubid(String subid) { this.subid = subid; }	public void setEventtypeid(String eventtypeid) { this.eventtypeid = eventtypeid; }	public void setState(int state) { this.state = state; }	public void setValue(int value) { this.value = value; }	public void setSeverity(int severity) { this.severity = severity; }	// Doc in interface	public void setPostAlertq(boolean postAlertq) {		this.postAlertq = postAlertq;	}	// Doc in interface	public void addVar(String key, String val) {		varMap.put(key, val);	}	// Doc in interface	public void addVars(Map vm) {		varMap.putAll(vm);	}	// Doc in interface	public void addHistoryVar(String key, String val) {		historyVarMap.put(key, val);	}	// Doc in interface	public void addHistoryVars(Map vm) {		historyVarMap.putAll(vm);	}	// Doc in interface	public void copyHistoryVar(Event e, String key) {		String s = e.getVar(key);		if (s != null) addHistoryVar(key, s);	}	// Doc in interface	public void copyHistoryVars(Event e, String[] keys) {		for (Iterator it = Arrays.asList(keys).iterator(); it.hasNext();) {			String key = (String)it.next();			String s = e.getVar(key);			if (s != null) addHistoryVar(key, s);		}	}	Iterator historyVarIterator() {		return historyVarMap.entrySet().iterator();	}	public void setAlerttype(String alerttype) { this.alerttype = alerttype; }	String getAlerttype() { return alerttype; }	public Iterator getMsgs() {		// Update varMap from database		try {			ResultSet rs = Database.query("SELECT * FROM device LEFT JOIN netbox USING (deviceid) LEFT JOIN type USING (typeid) LEFT JOIN room USING (roomid) LEFT JOIN location USING (locationid) LEFT JOIN module USING(deviceid) WHERE deviceid = " + deviceid);			ResultSetMetaData rsmd = rs.getMetaData();			if (rs.next()) {				HashMap hm = Database.getHashFromResultSet(rs, rsmd);				varMap.putAll(hm);			}			rs = Database.query("SELECT * FROM netbox JOIN device USING (deviceid) LEFT JOIN type USING (typeid) LEFT JOIN room USING (roomid) LEFT JOIN location USING (locationid) WHERE netboxid = " + netboxid);			rsmd = rs.getMetaData();			if (rs.next()) {				HashMap hm = Database.getHashFromResultSet(rs, rsmd);				varMap.putAll(hm);			}		} catch (SQLException e) {			Log.e("EVENT_IMPL", "GET_MSGS", "SQLException when fetching data from deviceid("+deviceid+"): " + e.getMessage());			e.printStackTrace(System.err);		}		// Add time		addVar("time", getTimeS());		return AlertmsgParser.formatMsgs(eventtypeid, alerttype, state, varMap);	}	public void addEvent (Event e) { eventList.add(e); }	public List getEventList() { return eventList; }	public boolean getPostAlertq() { return postAlertq; }	public String getSourceSql() { return source; }	public String getDeviceidSql() { return deviceid>0 ? String.valueOf(deviceid) : "null"; }	public String getNetboxidSql() { return netboxid>0 ? String.valueOf(netboxid) : "null"; }	public String getSubidSql() { return subid; }	public String getTimeSql() { return dateToString(time); }	public String getEventtypeidSql() { return eventtypeid; }	public String getStateSql()	{		switch (state) {			case STATE_NONE: return "x";			case STATE_START: return "s";			case STATE_END: return "e";		}		return null;	}	public String getValueSql() { return String.valueOf(value); }	public String getSeveritySql() { return String.valueOf(severity); }	public String getKey()	{		StringBuffer sb = new StringBuffer();		if (deviceid > 0) sb.append(deviceid+":");		if (netboxid > 0) sb.append(netboxid+":");		if (subid != null) sb.append(subid+":");		sb.append(eventtypeid+":");		sb.append(state);		return sb.toString();	}	public boolean isDisposed() { return disposed; }	public static boolean setAlertmsgFile(String s) throws ParseException	{		return AlertmsgParser.setAlertmsgFile(s);	}	private Date stringToDate(String d) throws ParseException	{		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");		return sdf.parse(d);	}	private String dateToString(Date d)	{		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");		return sdf.format(d);	}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -