package com.limegroup.gnutella.spam;
/**
* A token representing the approximate file size.
*/
public class ApproximateSizeToken extends Token {
/**
* Spammers sometimes modify their files to make it more difficult to
* filter by URN or size - we consider the approximate size, but give it
* a lower weight than the exact size
*/
private static final float APPROXIMATE_SIZE_WEIGHT = 0.3f;
/**
* How many bits of the size should be discarded?
*/
private static final int SHIFT = 8;
private final long size;
public ApproximateSizeToken(long size) {
this.size = size >> SHIFT << SHIFT;
}
@Override
protected float getWeight() {
return APPROXIMATE_SIZE_WEIGHT;
}
@Override
public int hashCode() {
return (int)size;
}
@Override
public boolean equals(Object o) {
if(!(o instanceof ApproximateSizeToken))
return false;
return size == ((ApproximateSizeToken)o).size;
}
@Override
public String toString() {
return "approximate size " + size;
}
}