package ivory.lsh.data; import java.io.DataInput; import java.io.IOException; import org.apache.log4j.Level; import org.apache.log4j.Logger; public class PairOfIntNBitSignature extends PairOfIntSignature { private static final Logger logger = Logger.getLogger(PairOfIntNBitSignature.class); { logger.setLevel(Level.WARN); } public PairOfIntNBitSignature() { super(); } public PairOfIntNBitSignature(int i, Signature permutedSign) { permNo = i; signature = permutedSign; } @Override public void readFields(DataInput in) { signature = new NBitSignature(); try { permNo = in.readInt(); } catch (IOException e1) { e1.printStackTrace(); throw new RuntimeException("Could not read permNo in PairOfIntSignature"); } try { signature.readFields(in); } catch (IOException e) { logger.warn("NULL SIGNATURE!"); signature = null; } } @SuppressWarnings("unchecked") @Override public int compareTo(Object other) { PairOfIntNBitSignature p = (PairOfIntNBitSignature) other; int c = signature.compareTo(p.signature); if(c==0){ return (permNo<p.permNo) ? -1 : ((permNo>p.permNo) ? 1 :0); }else{ return c; } } public boolean equals(Object other){ PairOfIntNBitSignature p = (PairOfIntNBitSignature) other; return (p.getInt()==getInt() && ((NBitSignature)p.getSignature()).equals(this.getSignature())); } @Override public int hashCode(){ int h = signature.hashCode()+permNo; if(h>0){ return h ^ Integer.MAX_VALUE; }else{ return h ^ Integer.MIN_VALUE; } } }