Package com.alimama.quanjingmonitor.mdrillImport.parse

Source Code of com.alimama.quanjingmonitor.mdrillImport.parse.tanx_click_zhitou$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.tanxclick.parser.TanxClickLog;
import com.taobao.loganalyzer.input.tanxclick.parser.TanxClickLogParser;

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

  private static Logger LOG = Logger.getLogger(tanx_click_zhitou.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;
  @Override
  public DataIter parseLine(String line) throws InvalidEntryException {
   
    try {
      TanxClickLog clicklog = TanxClickLogParser.parse(line);
      if (clicklog == null) {
        return null;
      }
     
     
      if(clicklog.getPid()==null||clicklog.getClickTime()==null||clicklog.getPid().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(clicklog.getClickTime());
      if(ts<laststartts||ts>lastendts)
      {
        return null;
      }
     
     
      DataIterParse rtn= new DataIterParse(clicklog);
     
      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 TanxClickLog pvlog=null;

    public DataIterParse(TanxClickLog pvlog) {
      this.pvlog = pvlog;
    }

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


    @Override
    public Number[] getSum() {
      Number[] rtn=new Number[1];
      rtn[0]=1;
      return rtn;
    }
   
    @Override
    public long getTs() {
       long ts = Long.parseLong(pvlog.getClickTime());
       return (ts/10)*10000;
    }
   

     
    @Override
    public Object[] getGroup() {
       long ts = Long.parseLong(pvlog.getClickTime());
       long ts300=(ts/300)*300000;
       Date d= new Date(ts300);
      
      String[] rtn=new String[4];
      rtn[0]=String.valueOf(formatDay.format(d));
      rtn[1]=String.valueOf(formatMin.format(d));
      rtn[2]=String.valueOf(pvlog.getPid());
      rtn[3]=String.valueOf("tanx_click_zhitou");
      return rtn;
    }
   
  }
 

 

  @Override
  public String[] getGroupName() {
    String[] rtn=new String[4];
    rtn[0]="thedate";
    rtn[1]="miniute_5";
    rtn[2]="pid";
    rtn[3]="logtype";
    return rtn;
  }

 

  @Override
  public String[] getSumName() {
    String[] rtn=new String[1];
    rtn[0]="records";
    return rtn;

  }

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

}
TOP

Related Classes of com.alimama.quanjingmonitor.mdrillImport.parse.tanx_click_zhitou$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.