Package com.ontology2.bakemono.joins

Source Code of com.ontology2.bakemono.joins.TaggedItem

package com.ontology2.bakemono.joins;

import com.google.common.collect.Maps;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.io.VIntWritable;
import org.apache.hadoop.io.WritableComparable;

import java.io.DataInput;
import java.io.DataOutput;
import java.io.IOException;
import java.util.Map;

public abstract class TaggedItem<T extends WritableComparable> implements WritableComparable {

    //
    // Thanks to type erasure,  we've got to override this to provide a constructor
    // for a blank key
    //

    protected  abstract  T newT();

    private T key;
    private VIntWritable tag;

    public TaggedItem() {}
    public TaggedItem(T key, VIntWritable tag) {
        this.key=key;
        this.tag=tag;
    }

    public T getKey() {
        return key;
    }
    public VIntWritable getTag() {
        return tag;
    }

    @Override
    public void write(DataOutput d) throws IOException {
        key.write(d);
        tag.write(d);
    }

    @Override
    public void readFields(DataInput d) throws IOException {
        if(key==null) {
            key=newT();
        }

        if(tag==null) {
            tag=new VIntWritable();
        }

        key.readFields(d);
        tag.readFields(d);
    }

    @Override
    public int compareTo(Object o) {
        TaggedItem that=(TaggedItem) o;
        int cmp=key.compareTo(that.key);
        return cmp==0 ? tag.compareTo(that.tag) : cmp;
    }

    @Override
    public boolean equals(Object o) {
        TaggedItem that=(TaggedItem) o;
        return key.equals(that.key);
    }

    @Override
    public int hashCode() {
        return key.hashCode();
    }

    //
    // for testing:  the equals operator for this type is funny and thinks
    // two of these are equal if the tags are different
    //

    public Map.Entry<String,Integer> toEntry() {
        return Maps.immutableEntry(key.toString(),tag.get());
    }


}
TOP

Related Classes of com.ontology2.bakemono.joins.TaggedItem

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.