Package com.alimama.quanjingmonitor.mdrillImport.parse.for416tmp

Source Code of com.alimama.quanjingmonitor.mdrillImport.parse.for416tmp.aplus_hjlj$DataIterParse$pid_type

package com.alimama.quanjingmonitor.mdrillImport.parse.for416tmp;

import java.util.Date;
import java.util.concurrent.LinkedBlockingDeque;

import org.apache.log4j.Logger;

import com.alimama.mdrillImport.InvalidEntryException;
import com.alimama.quanjingmonitor.mdrillImport.parse.for416tmp.aplus_text.DataIterParse.pid_type;
import com.taobao.loganalyzer.aplus.Aplus;

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

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

  private volatile long lines = 0;
  private volatile long lines_sb = 0;
  private volatile long lines_sb2 = 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;
  private volatile long timediff = System.currentTimeMillis();
  private volatile long timediff2 = System.currentTimeMillis();


  @Override
  public DataIter parseObject(Object line) throws InvalidEntryException {
    try {
      if (line == null) {
        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;
      }
      byte[] d=(byte[]) line;
     
      Aplus.AplusLog log = Aplus.AplusLog.parseFrom(d);
      if(log==null)
      {
        return null;
      }


      long ts = log.getTime();

      if (ts < laststartts || ts > lastendts) {
        return null;
      }
   
      DataIterParse rtn = new DataIterParse(ts, log);
      if (!rtn.isvalidate()) {
        this.lines_sb2++;
        if (this.lines_sb2 > 5000) {
          this.lines_sb2 = 0;
          long nowts = System.currentTimeMillis();
          if (nowts - timediff2 > 30000) {
            timediff2 = nowts;
            LOG.info("parseLine_hjlj_"
                + ColsDefine.formatDayMin.format(new Date(
                    ts * 1000)) );
          }
        }

        return null;
      }

      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 long ts;



    java.util.concurrent.LinkedBlockingDeque<pid_type> querylist = new LinkedBlockingDeque<aplus_hjlj.DataIterParse.pid_type>();

    public static class pid_type {
      public String pid = "";
      public String tid = "";
      public String matchUrl="";
      public boolean isAplusMode=false;

    }

    pid_type curr = null;


    private String fetch(String type,String lwfrom, String strday) {
      if (lwfrom == null || lwfrom.isEmpty()) {
        return null;
      }
      if(type.equals("pc"))
      {
        return  FetchAdid2PidPC.fetch().get(strday+"@"+String.valueOf(lwfrom));
      }
      return  FetchAdid2PidWireLess.fetch().get(strday+"@"+String.valueOf(lwfrom));
    }
   
    public String matchType(String url)
    {
      if(url.indexOf("http://m.laiwang.com/market/laiwang/event-square.php")>=0)
      {
        return "pc";
      }
     
      if(url.indexOf("http://h5.m.taobao.com/laiwang/act/419/index.html")>=0)
      {
        return "wireless_huodong";
      }

      if(url.indexOf("http://m.laiwang.com/go/laiwang/419/index.php")>=0)
      {
        return "wireless_huodong";
      }
     
      if(url.indexOf("http://www.laiwang.com/event/share.htm")>=0)
      {
        return "wireless_zhadui";
      }

      if(url.indexOf("http://www.laiwang.com/event/feed.htm")>=0)
      {
        return "wireless_zhadui";
      }
     
      return null;
    }
   
    public String matchType(String gmkey,String logkey)
    {
      if(logkey.indexOf("laiwang.1.1")>=0&&gmkey.indexOf("outer419")>=0)
      {
        return "pc";
      }
     
      if(gmkey.indexOf("419")<0)
      {
        return null;
      }
     
      if(gmkey.indexOf("h5down")>=0)
      {
        return "wireless_huodong";
      }
     
      if(gmkey.indexOf("419_cat")>=0)
      {
        return "wireless_huodong";
      }

      if(gmkey.indexOf("419_rank")>=0)
      {
        return "wireless_huodong";
      }
     
      if(gmkey.indexOf("419_rank_all")>=0)
      {
        return "wireless_huodong";
      }
     
      if(gmkey.indexOf("419_rank_catid")>=0)
      {
        return "wireless_huodong";
      }
     
      if(gmkey.indexOf("419_rule")>=0)
      {
        return "wireless_huodong";
      }
     
      if(gmkey.indexOf("outer419_lwfrom")>=0)
      {
        return "wireless_huodong";
      }
     
      if(gmkey.indexOf("launch419_lwfrom")>=0)
      {
        return "wireless_zhadui";
      }
     
      return null;
    }
   
    public String toUtf8String(com.google.protobuf.ByteString b)
    {
      if(b==null)
       
      {
        return "";
      }
     
      return b.toStringUtf8();
    }
   
   
   
    public void parse_aplustext(long ts, Aplus.AplusLog log,String currurl)
    {

      String isMathchUrl = matchType(currurl);
     
         
      if(isMathchUrl!=null&&!"pc".equals(isMathchUrl))
      {
          String pid=ColsDefine.getName(currurl, "refpid");
          if(pid != null){
            String tid=ColsDefine.getName(currurl, "tid");;
            pid_type p = new pid_type();
            p.isAplusMode=true;
            p.pid = pid;
            p.tid = tid;
            p.matchUrl=isMathchUrl;
            querylist.add(p);
          }
      }
    }
   
    public void parse_hjlj(long ts, Aplus.AplusLog log,String currurl)
    {
      String logkey=toUtf8String(log.getLogkey());//pvlog[45];
      boolean boolisMathchUrl = logkey.indexOf("laiwang.1.1")>=0;//&&logtype.equals("2")
     
      if(!boolisMathchUrl)
      {
        return ;
      }
     
      String gmkey=toUtf8String(log.getGmkey());//pvlog[46];

      String matchurl_type = matchType(gmkey,logkey);
     
      if(matchurl_type==null)
      {
        return ;
      }
     
      if("pc".equals(matchurl_type))
      {
        String strday = ColsDefine.formatDay.format(new Date(ts * 1000));

        String url_lwfrom = ColsDefine.getName(currurl, "lwfrom");
        String pid = this.fetch("pc",url_lwfrom, strday);
       
        if(pid!=null)
        {
          pid_type p = new pid_type();
          p.pid = pid;
          p.tid = "";
          p.matchUrl=matchurl_type;
          p.isAplusMode=false;
          querylist.add(p);
        }
     
       
      }else{

        String pid=ColsDefine.getName(currurl, "refpid");
        if(pid!=null){
          String tid=ColsDefine.getName(currurl, "tid");
          pid_type p = new pid_type();
          p.pid = pid;
          p.tid = tid;
          p.matchUrl=matchurl_type;
          p.isAplusMode=false;
          querylist.add(p);
        }
      }

     
    }

    public DataIterParse(long ts, Aplus.AplusLog log) {
      this.ts = ts;
     
      String currurl=toUtf8String(log.getUrl());

      this.parse_aplustext(ts, log,currurl);
      this.parse_hjlj(ts, log,currurl);
 
      this.curr = querylist.poll();

    }

    public boolean isvalidate() {
      return this.curr != null;
    }

    @Override
    public boolean next() {
      this.curr = querylist.poll();
      return isvalidate();
    }

    @Override
    public Number[] getSum() {
      if(this.curr.isAplusMode)
      {

        int type1=(this.curr.matchUrl.equals("wireless_zhadui"))?1:0;
        int type2=(!this.curr.matchUrl.equals("wireless_zhadui"))?1:0;
        return new Number[] {
                  type1
                    , 0
                    ,0
                    , 0
                    , 0
                    , 0
                    , type2
                    , 0
                    , 0
                };

     
      }else{
     
     
        int type1=(this.curr.matchUrl.equals("wireless_zhadui"))?1:0;
        int type2=(!this.curr.matchUrl.equals("wireless_zhadui"))?1:0;
        return new Number[] {
                  0
                    , type1
                    ,0
                    , 0
                    , 0
                    , 0
                    , 0
                    , type2
                    , 0
                };
      }

    }

    @Override
    public long getTs() {
      return (ts / 10) * 10000;
    }

    @Override
    public Object[] getGroup() {
      long ts300 = (this.ts / 300) * 300000;
      Date d = new Date(ts300);

      return new String[] {
          String.valueOf(ColsDefine.formatDay.format(d)),
          String.valueOf(ColsDefine.formatMin.format(d)),
          this.curr.matchUrl,
          "aplus_hjlj",
          this.curr.pid,
          "", this.curr.tid, "",ColsDefine.version };
    }
  }

  @Override
  public String[] getSumName() {
    return ColsDefine.colSumName;

  }

  @Override
  public String getTableName() {
    return ColsDefine.tablename;
  }

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

 
TOP

Related Classes of com.alimama.quanjingmonitor.mdrillImport.parse.for416tmp.aplus_hjlj$DataIterParse$pid_type

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.