Package edu.brown.markov.containers

Source Code of edu.brown.markov.containers.AuctionMarkMarkovGraphsContainer

package edu.brown.markov.containers;

import java.util.Collection;

import org.apache.log4j.Logger;
import org.voltdb.catalog.Procedure;

import edu.brown.markov.MarkovGraph;

public class AuctionMarkMarkovGraphsContainer extends MarkovGraphsContainer {
    private static final Logger LOG = Logger.getLogger(AuctionMarkMarkovGraphsContainer.class);
    private static final boolean d = LOG.isDebugEnabled();

    public AuctionMarkMarkovGraphsContainer(Collection<Procedure> procedures) {
        super(procedures);
    }

    @Override
    public MarkovGraph getFromParams(Long txn_id, int base_partition, Object[] params, Procedure catalog_proc) {
        assert(this.hasher != null) : "Missing hasher!";
        MarkovGraph ret = null;
       
        String proc_name = catalog_proc.getName();
        int id = -1;
       
        // GETUSERINFO
        if (proc_name.equals("GetUserInfo")) {
            if (d) LOG.debug(String.format("Selecting MarkovGraph using decision tree for %s txn #%d", proc_name, txn_id));
            id = this.processGetUserInfo(txn_id, base_partition, params, catalog_proc);
           
        // NewBid + NewComment + NewFeedback
        } else if (proc_name.equalsIgnoreCase("NewBid") ||
                   proc_name.equalsIgnoreCase("NewComment") ||
                   proc_name.equalsIgnoreCase("NewFeeback")) {
            if (d) LOG.debug(String.format("Selecting MarkovGraph using decision tree for %s txn #%d", proc_name, txn_id));
            id = this.processBuyerSellerId(txn_id, base_partition, params, catalog_proc, 1);
           
        // NewPurchase
        } else if (proc_name.equalsIgnoreCase("NewPurchase")) {
            if (d) LOG.debug(String.format("Selecting MarkovGraph using decision tree for %s txn #%d", proc_name, txn_id));
            id = this.processBuyerSellerId(txn_id, base_partition, params, catalog_proc, 2);
           
        // DEFAULT
        } else {
            if (d) LOG.debug(String.format("Using default MarkovGraph for %s txn #%d", proc_name, txn_id));
            id = base_partition;
        }
        ret = this.getOrCreate(id, catalog_proc, true);
        assert(ret != null);
       
        return (ret);
    }
   
    public int processGetUserInfo(long txn_id, int base_partition, Object[] params, Procedure catalog_proc) {
        // HASHVALUE(U_ID)
        int id = this.hasher.hash(params[0]);
       
        // BITMASK(params[1:]
        for (int i = 1; i < params.length; i++) {
            id |= ((Long)params[i]).intValue()<<20+i;
        } // FOR
       
        return (id);
    }
   
    public int processBuyerSellerId(long txn_id, int base_partition, Object[] params, Procedure catalog_proc, int offset) {
        // HASHVALUE(SELLER_ID)
        int seller_id = this.hasher.hash(params[offset]);
       
        // HASHVALUE(BUYER_ID)
        int buyer_id = this.hasher.hash(params[offset+1]);
       
        return (seller_id | buyer_id<<16);
    }
}
TOP

Related Classes of edu.brown.markov.containers.AuctionMarkMarkovGraphsContainer

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.