package com.taobao.loganalyzer.input.tanxpv.common;
import java.util.Hashtable;
/**
* 根据特定的字段名存储多个字段的日志信息,其中字段名为key,封装日志信息的LogField对象为value
* @author liyuntao
*
*/
public class LogRecord
{
/**
* 构造一个新的LogRecord对象
*
*/
public LogRecord()
{
fields = new Hashtable<String, LogField>();
}
/**
* 添加一个新的字段或者覆盖已有的同名字段
* @param key 字段名
* @param field 字段内容
*/
public void addField(String key, LogField field)
{
fields.put(key, field);
}
/**
* 获取特定字段的信息
* @param key 字段名
* @return 字段内容
*/
public LogField getField(String key)
{
return fields.get(key);
}
/**
* 递归打印所有已经存储的信息到标准输出
*
*/
public void printAll() {
java.util.Enumeration<String> s = fields.keys();
while (s.hasMoreElements()) {
String name = s.nextElement();
LogField lf = fields.get(name);
if (lf.getType() == LogField.TYPE_STRING)
System.out.println(name + ": " + lf.getContent());
else if (lf.getType() == LogField.TYPE_LIST) {
System.out.println(name + ": LIST ");
java.util.List list = (java.util.List)lf.getContent();
for (int i = 0; i < list.size(); i++) {
LogRecord l = (LogRecord)list.get(i);
l.printAll();
}
} else {
System.out.println(name + " is null");
}
}
}
/**
* 将本记录的版本号与给定的版本号比较。
* @return 0 :equals
* >0: 记录版本大于缩写版本。
* <0:记录版本小于给定版本。
*/
public int version_cmp(String version)
{
String ver_cur = "" ;
LogField ver = getField("Version") ;
if(ver !=null) ver_cur = ver.getContent().toString() ;
String []ver1 = ver_cur.split("\\.", -1) ;
String []ver2 = version.split("\\.", -1) ;
if(ver1.length ==2 && ver2.length==2)
{
int ret = ver1[0].compareTo(ver2[0]) ;
if(ret == 0) ret = ver1[1].compareTo(ver2[1]) ;
return ret ;
}
// throw new RuntimeException("version should like X.Y!");
//如果不合规范,默认按新的版本处理。
return 1 ;
}
//content
private Hashtable<String, LogField> fields;
}