📄 eventimpl.java
字号:
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 + -