content: 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;
  }