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

📄 eventimpl.java

📁 监控大型网络的软件。能够自动发现拓扑结构
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
	public String toString()	{		String s = "e="+eventqid+" d="+deviceid+" n="+netboxid+" t="+eventtypeid+" s="+getStateSql();		boolean first=true;		for (Iterator i = varMap.entrySet().iterator(); i.hasNext();) {			Map.Entry me = (Map.Entry)i.next();			String var = (String)me.getKey();			String val = (String)me.getValue();			//if (first) { first = false; s += "\n"; }			s += " ["+var+"="+val+"]";		}		return s;	}}class AlertmsgParser{	private static File alertmsgFile;	private static long alertmsgLastModified;	private static Map eventtypeidMap;	public static boolean setAlertmsgFile(String s) throws ParseException	{		File f = new File(s);		if (!f.exists()) {			Log.w("ALERTMSG_PARSER", "SET_ALERTMSG_FILE", "File " + f + " does not exist!");			return false;		}		if (alertmsgFile != null && alertmsgFile.equals(f)) return true;		alertmsgFile = f;		alertmsgLastModified = 0;		try {			parseAlertmsg();		} catch (IOException e) {			Log.w("ALERTMSG_PARSER", "SET_ALERTMSG_FILE", "IOException when parsing alertmsg file: " + e.getMessage());		}		return true;	}	public static Iterator formatMsgs(String eventtypeid, String alerttype, int state, Map varMap)	{		Log.setDefaultSubsystem("ALTERTMSG_PARSER");		List l = new ArrayList();		try {			parseAlertmsg();			if (eventtypeidMap == null) {				// This happens when alertmsgFile does not exist				return l.iterator();			}		} catch (ParseException e) {			Log.w("FORMAT_MSGS", "ParseException when parsing alertmsg file: " + e.getMessage());			return l.iterator();		} catch (IOException e) {			Log.w("FORMAT_MSGS", "IOException when parsing alertmsg file: " + e.getMessage());			return l.iterator();		}		Map m = (Map)eventtypeidMap.get(eventtypeid);		if (m == null) {			Log.d("FORMAT_MSGS", "Eventtypeid: " + eventtypeid + " not found in alertmsg file!");			return l.iterator();		}		if (alerttype == null) alerttype = "";		List msgList = (List)m.get(alerttype);		if (msgList == null) {			String s = state==Event.STATE_NONE?"":state==Event.STATE_START?"Start":"End";			Log.d("FORMAT_MSGS", "Alerttype: " + alerttype + " not found in alertmsg file! Trying default"+s);			msgList = (List)m.get("default"+s);			if (msgList == null) {				Log.d("FORMAT_MSGS", "Alerttype: default"+s+" not found in alertmsg file! Giving up. " + m);				return l.iterator();			}		}		for (Iterator it=msgList.iterator(); it.hasNext();) {			String[] s = (String[])it.next();			StringBuffer msg = new StringBuffer(s[2]);			int i = 0;			while ( (i=msg.indexOf("$", i)) != -1) {				if (++i == msg.length()) break;				int e = i;				while (e < msg.length() && (Character.isLetterOrDigit(msg.charAt(e)) || msg.charAt(e) == ';' || msg.charAt(e) == '_')  ) e++;				String var = msg.substring(i, e).trim();				if (var.length() == 0) continue;				if (varMap.containsKey(var) || varMap.containsKey(var.toLowerCase())) {					String val = (String)varMap.get(var);					if (val == null) val = (String)varMap.get(var.toLowerCase());					if (val == null) val = "[empty]";					msg.replace(i-1, e, val);				} else {					System.err.println("Could not expand " + var + ", vars: " + varMap + ", msg: " + msg);				}			}			l.add(new String[] { s[0], s[1], msg.toString() });		}		return l.iterator();	}	private static final int EXP_EVENTTYPEID = 0;	private static final int EXP_ALERTTYPE = 1;	private static final int EXP_MEDIA = 2;	private static final int EXP_LANG = 3;	private static final int EXP_MSG = 4;	private static void parseAlertmsg() throws ParseException, IOException	{		if (alertmsgFile == null || alertmsgFile.lastModified() == alertmsgLastModified) return;		alertmsgLastModified = alertmsgFile.lastModified();		BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream(alertmsgFile), "UTF-8"));		int lineno = 0;		int state = EXP_EVENTTYPEID;		boolean exp_begin_block = false;		boolean allow_colon_block = false;		boolean is_colon_block = false;		Map etMap = new HashMap();		Map atMap = null;		List msgList = null;		String eventtypeid = null;		String alerttype = null;		String media = null;		String lang = null;		while (in.ready()) {			lineno++;			String line = in.readLine();			String lineT = line.trim();			if (lineT.length() == 0) continue;			switch (lineT.charAt(0)) {				case ';':				case '#':				break;				default:				StringTokenizer st = new StringTokenizer(line);				while (st.hasMoreTokens()) {					String t = (state == EXP_MSG ? st.nextToken("") : st.nextToken());					if (exp_begin_block) {						if (allow_colon_block) {							allow_colon_block = false;							if (t.equals(":")) is_colon_block = true;						}						if (!is_colon_block && !t.equals("{")) {							throw new ParseException("Parse error on line " + lineno + ": Expected {, got " + t, 0);						}						exp_begin_block = false;						state++;						continue;					}					if (t.equals("}")) {						state--;						continue;					}					switch (state) {						case EXP_EVENTTYPEID:						eventtypeid = t;						if ( (atMap=(Map)etMap.get(t)) == null) etMap.put(t, atMap = new HashMap());						exp_begin_block = true;						break;						case EXP_ALERTTYPE:						alerttype = t;						if ( (msgList=(List)atMap.get(t)) == null) atMap.put(t, msgList = new ArrayList());						exp_begin_block = true;						break;						case EXP_MEDIA:						media = t;						exp_begin_block = true;						break;						case EXP_LANG:						lang = t;						if (lang.endsWith(":")) {							lang = lang.substring(0, lang.length()-1);							state++;							is_colon_block = true;							continue;						} else {							exp_begin_block = true;							allow_colon_block = true;						}						break;						case EXP_MSG:						String msg;						if (is_colon_block) {							msg = t.trim();							is_colon_block = false;						} else {							List l = new ArrayList();							int margin=Integer.MAX_VALUE;							{								int m = line.lastIndexOf(t);								StringBuffer sb = new StringBuffer();								for (int i=0; i < m; i++) sb.append(" ");								sb.append(t);								t = sb.toString();							}							int i;							while ( (i=t.indexOf("}")) == -1) {								l.add(t);								margin = Math.min(blanksAtStart(t), margin);								t = in.readLine();								lineno++;							}							String s = t.substring(0, i);							l.add(s);							margin = Math.min(blanksAtStart(s), margin);							st = new StringTokenizer(t.length()>i+1 ? t.substring(i+1, t.length()) : "");							StringBuffer sb = new StringBuffer();							for (Iterator it = l.iterator(); it.hasNext();) {								s = (String)it.next();								sb.append((s.length() > margin ? s.substring(margin, s.length()) : "")+"\n");							}							sb.deleteCharAt(sb.length()-1);							if (sb.length() > 0 && sb.charAt(sb.length()-1) == '\n') {								sb.deleteCharAt(sb.length()-1);							}							msg = sb.toString();						}						state--;						Log.d("PARSE_ALERTMSG", "Eventtypeid: " + eventtypeid + " Alerttype: " + alerttype + " Media: " + media + " Lang: " + lang + " Msg:");						Log.d("PARSE_ALERTMSG", msg);						Log.d("PARSE_ALERTMSG", "---");						msgList.add(new String[] { media, lang, msg } );						break;					}				}			}		}		if (state != 0) {			throw new ParseException("Parse error on line " + lineno + ": " + state + " unterminated blocks.", 0);		}		eventtypeidMap = etMap;	}	private static int blanksAtStart(String s)	{		String ss = s.trim();		if (ss.length() == 0) return Integer.MAX_VALUE;		return s.indexOf(ss);	}	/*	private static void outd(Object o) { System.out.print(o); }	private static void outld() { System.out.println(); }	private static void outld(Object o) { System.out.println(o); }	private static void err(Object o) { System.err.print(o); }	private static void errl(Object o) { System.err.println(o); }	*/}

⌨️ 快捷键说明

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