Package com.alimama.quanjingmonitor.mdrillImport.parse

Source Code of com.alimama.quanjingmonitor.mdrillImport.parse.tanx_pv$DataIterParse

package com.alimama.quanjingmonitor.mdrillImport.parse;

import java.text.SimpleDateFormat;
import java.util.Date;

import org.apache.log4j.Logger;

import com.alimama.mdrillImport.InvalidEntryException;
import com.taobao.loganalyzer.input.tanxpv.parser.TanxPVLog;
import com.taobao.loganalyzer.input.tanxpv.parser.TanxPVLogParser;

public class tanx_pv extends com.alimama.mdrillImport.DataParser{
  private static final long serialVersionUID = 1L;
  public volatile long groupCreateerror=0;

  private static Logger LOG = Logger.getLogger(tanx_pv.class);

  private volatile long lines=0;
  private static long TS_MAX=3600l*24*31;

  private volatile long laststartts=System.currentTimeMillis()/1000-TS_MAX;
  private volatile long lastendts=System.currentTimeMillis()/1000+TS_MAX;
 


  public DataIter parseLine(String line) throws InvalidEntryException {
   
    try {
      TanxPVLog pvlog = TanxPVLogParser.parse(line);
      if (pvlog == null) {
        return null;
      }
     
      String pid=pvlog.getPid();
      String strts=pvlog.getTimestamp();
      if(pid==null||strts==null||pid.length()>50)
      {
        return null;
      }
     
      this.lines++;
      if(this.lines>100000)
      {
        this.laststartts=(System.currentTimeMillis()/1000)-TS_MAX;
        this.lastendts=(System.currentTimeMillis()/1000)+TS_MAX;
        this.lines=0;
      }
     
      long ts = Long.parseLong(strts);
      if(ts<laststartts||ts>lastendts)
      {
        return null;
      }
     
     
      DataIterParse rtn= new DataIterParse(pvlog,pid,ts);
     
      return rtn;
    } catch (Throwable nfe) {
      if(groupCreateerror<100)
      {
        LOG.error("InvalidEntryException:"+line,nfe);
        groupCreateerror++;
      }
     
      throw new InvalidEntryException("Invalid log `" + line + "'\n" , nfe);
    }
  }
 
  public static class DataIterParse implements DataIter{
    private TanxPVLog pvlog=null;
    private String pid;
    private long ts;
    public DataIterParse(TanxPVLog pvlog,String pid,long ts) {
      this.pvlog = pvlog;
      this.pid=pid;
      this.ts=ts;
    }

    @Override
    public boolean next() {
      return false;
    }


   
    @Override
    public Number[] getSum() {
      return new Number[]{1};
    }
   
    @Override
    public long getTs() {
       return (ts/10)*10000;
    }
   

     
    @Override
    public Object[] getGroup() {
       Date d= new Date((ts/300)*300000);
      return new String[]{
          String.valueOf(formatDay.format(d))
          ,String.valueOf(formatMin.format(d))
          ,String.valueOf(this.pid)
          ,String.valueOf(pvlog.getProductType())
      };
    }
   
  }

  private static String[] colname={
      "thedate"
      ,"miniute_5"
      ,"pid"
      ,"producttype"
  };

  @Override
  public String[] getGroupName() {
    return colname;
  }

 
  private static String[] sumName={"records"};
  @Override
  public String[] getSumName() {
    return sumName;

  }

  private static String tablename="tanx_pv";
  @Override
  public String getTableName() {
    return tablename;
  }
 
    private static SimpleDateFormat formatDay = new SimpleDateFormat("yyyyMMdd");
    private static SimpleDateFormat formatMin = new SimpleDateFormat("HHmm");

}
TOP

Related Classes of com.alimama.quanjingmonitor.mdrillImport.parse.tanx_pv$DataIterParse

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.