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

📄 datamatcher.java

📁 电信数据采集系统,对unix下的一个日志文件进行采集,解析,并进行匹配
💻 JAVA
字号:
package dms.business.collectProcess;

import java.io.IOException;
import java.util.Vector;

import dms.data.LogRecord;
import dms.data.MatchedRecord;
import dms.util.FileUtil;

public class DataMatcher {

	/**
	 * 匹配登录、登出数据
	 * @param logout 登出数据
	 * @param login 登录数据
	 * @return 匹配好的用户登录时长记录
	 * @throws IOException 
	 * @throws Exception 
	 */
	public Vector<MatchedRecord> match(Vector<LogRecord> logouts,Vector<LogRecord> logins) throws IOException  {
		System.out.println("本次需要匹配:登录="+logins.size()+"条,登出="+logouts.size()+"条");
		Vector<MatchedRecord> matchedRecords = new Vector<MatchedRecord>();
		for(LogRecord logout:logouts){
			for(LogRecord login:logins){
				if(logout.getUserName().equals(login.getUserName()) && 
						logout.getPid() == login.getPid() && 
						logout.getUserIp().equals(login.getUserIp()) &&
						logout.getVisitTime() > login.getVisitTime()){
					MatchedRecord matchedRecord = new MatchedRecord();
					matchedRecord.setUserName(logout.getUserName());
					matchedRecord.setUserIp(logout.getUserIp());
					matchedRecord.setLabIp(logout.getLabIp());
					matchedRecord.setLoginTime(login.getVisitTime());
					matchedRecord.setLogoutTime(logout.getVisitTime());
					matchedRecord.setDuration(logout.getVisitTime() - login.getVisitTime());
					
					matchedRecords.addElement(matchedRecord);
					
					logins.remove(login);
					break ;//跳出login循环,执行logout下一次循环
				}
			}
		}
//		循环匹配到此结束,此时logins里面剩余的就是没有匹配上的,把这个logins写入文件
		String fileName = FileUtil.getHistoryFile();
		FileUtil.passivate(fileName,logins);
		System.out.println("本次匹配成功:"+matchedRecords.size()+"条");
		System.out.println("本次匹配失败:"+logins.size()+"条");
		return matchedRecords;
	}
}

⌨️ 快捷键说明

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