fr.tse.fi2.hpp.labs.queries.impl.lab5.BloomFilterGuava.java Source code

Java tutorial

Introduction

Here is the source code for fr.tse.fi2.hpp.labs.queries.impl.lab5.BloomFilterGuava.java

Source

package fr.tse.fi2.hpp.labs.queries.impl.lab5;

import com.google.common.base.Charsets;
import com.google.common.hash.BloomFilter;
import com.google.common.hash.Funnel;
import com.google.common.hash.PrimitiveSink;

import fr.tse.fi2.hpp.labs.beans.DebsRecord;
import fr.tse.fi2.hpp.labs.beans.measure.QueryProcessorMeasure;
import fr.tse.fi2.hpp.labs.queries.AbstractQueryProcessor;

public class BloomFilterGuava extends AbstractQueryProcessor {

    private static BloomFilter<DebsRecord> rec;

    public BloomFilterGuava(QueryProcessorMeasure measure) {
        super(measure);
        rec = BloomFilter.create(recFunnel, 1000, 0.001);
        // TODO Auto-generated constructor stub
    }

    Funnel<DebsRecord> recFunnel = new Funnel<DebsRecord>() {
        @Override
        public void funnel(DebsRecord record, PrimitiveSink into) {
            into.putFloat(record.getPickup_latitude()).putFloat(record.getPickup_longitude())
                    .putFloat(record.getDropoff_latitude()).putFloat(record.getDropoff_longitude())
                    .putString(record.getHack_license(), Charsets.UTF_8);
        }
    };

    @Override
    protected void process(DebsRecord record) {
        // TODO Auto-generated method stub
        for (DebsRecord debsRecord : eventqueue) {
            rec.put(debsRecord);
        }
    }

    public static int check(DebsRecord recherche) {
        int nb = 0;
        if (rec.mightContain(recherche)) {
            nb++;
        }
        return nb;
    }

}