Skip to content

Commit

Permalink
TermValueLists now have starting and ending offset support.
Browse files Browse the repository at this point in the history
  • Loading branch information
Joshua Hartman committed May 15, 2013
1 parent 4a48676 commit a31b44a
Show file tree
Hide file tree
Showing 9 changed files with 55 additions and 66 deletions.
Expand Up @@ -49,16 +49,15 @@ public boolean containsWithType(char val)
}

@Override
public int indexOf(Object o)
{
public int indexOfWithOffset(Object o, int startingOffset, int endingOffset) {
char val;
if (o instanceof String)
val = parse((String)o);
else
val = (Character)o;
char[] elements=((CharArrayList)_innerList).elements();
return Arrays.binarySearch(elements, val);
}

return Arrays.binarySearch(_elements, startingOffset, endingOffset, val);
}

@Override
public int indexOfWithType(Character val)
Expand Down
Expand Up @@ -74,15 +74,14 @@ public double getPrimitiveValue(int index)
}

@Override
public int indexOf(Object o)
{
public int indexOfWithOffset(Object o, int startingOffset, int endingOffset) {
double val = parse((String) o);
if (o instanceof String)
val = parse((String)o);
else
val = (Double)o;
double[] elements = ((DoubleArrayList) _innerList).elements();
return Arrays.binarySearch(elements, val);
return Arrays.binarySearch(elements, startingOffset, endingOffset, val);
}

public int indexOf(double val)
Expand Down
Expand Up @@ -247,7 +247,7 @@ protected int binarySearch(long[] key, int low, int high)

while(low <= high)
{
mid = (low+high)/2;
mid = low + ((high - low) >> 1);
index = mid * width;
for (i=0; i<width; ++i, ++index)
{
Expand All @@ -267,13 +267,12 @@ else if (cmp < 0)
}

@Override
public int indexOf(Object o)
{
public int indexOfWithOffset(Object o, int startingOffset, int endingOffset) {
if (withDummy)
{
if (o instanceof String)
o = parse((String)o);
return binarySearch((long[])o, 1, _elements.length/width - 1);
return binarySearch((long[])o, startingOffset, endingOffset/width - 1);
}
else
{
Expand Down
Expand Up @@ -74,15 +74,14 @@ public float getPrimitiveValue(int index)
}

@Override
public int indexOf(Object o)
{
public int indexOfWithOffset(Object o, int startingOffset, int endingOffset) {
float val;
if (o instanceof String)
val = parse((String) o);
else
val = (Float)o;
float[] elements = ((FloatArrayList) _innerList).elements();
return Arrays.binarySearch(elements, val);
return Arrays.binarySearch(elements, startingOffset, endingOffset, val);
}

public int indexOf(float o)
Expand Down
Expand Up @@ -86,29 +86,6 @@ public int getPrimitiveValue(int index)
return TermIntList.VALUE_MISSING;
}

@Override
public int indexOf(Object o)
{
if (withDummy)
{
if (o==null) return -1;
int val;
if (o instanceof String)
val = parse((String) o);
else
val = (Integer)o;
return Arrays.binarySearch(_elements, 1, _elements.length, val);
} else
{
int val;
if (o instanceof String)
val = parse((String) o);
else
val = (Integer)o;
return Arrays.binarySearch(_elements, val);
}
}

public int indexOf(Integer value)
{
if (withDummy)
Expand All @@ -130,19 +107,19 @@ public int indexOf(int val)
}

@Override
public int indexOfWithOffset(Object value, int offset)
public int indexOfWithOffset(Object value, int startingOffset, int endingOffset)
{
if (withDummy)
{
if (value == null || offset >= _elements.length)
if (value == null)
return -1;
int val = parse(String.valueOf(value));
return Arrays.binarySearch(_elements, offset, _elements.length, val);
return Arrays.binarySearch(_elements, startingOffset, endingOffset, val);
}
else
{
int val = parse(String.valueOf(value));
return Arrays.binarySearch(_elements, offset, _elements.length, val);
return Arrays.binarySearch(_elements, startingOffset, endingOffset, val);
}
}

Expand Down
Expand Up @@ -93,6 +93,11 @@ public long getPrimitiveValue(int index)
@Override
public int indexOf(Object o)
{
return indexOfWithOffset(o, 0, _elements.length);
}

@Override
public int indexOfWithOffset(Object o, int startingOffset, int endingOffset) {
if (withDummy)
{
if (o==null) return -1;
Expand All @@ -101,15 +106,15 @@ public int indexOf(Object o)
val = parse((String) o);
else
val = (Long)o;
return Arrays.binarySearch(_elements, 1, _elements.length, val);
return Arrays.binarySearch(_elements, startingOffset, endingOffset, val);
} else
{
long val;
if (o instanceof String)
val = parse((String) o);
else
val = (Long)o;
return Arrays.binarySearch(_elements, val);
return Arrays.binarySearch(_elements, startingOffset, endingOffset, val);
}
}

Expand Down
Expand Up @@ -86,8 +86,7 @@ protected List<?> buildPrimitiveList(int capacity)
}

@Override
public int indexOf(Object o)
{
public int indexOfWithOffset(Object o, int startingOffset, int endingOffset) {
if (withDummy)
{
if (o==null) return -1;
Expand All @@ -96,17 +95,18 @@ public int indexOf(Object o)
val = parse((String) o);
else
val = (Short)o;
return Arrays.binarySearch(_elements, 1, _elements.length, val);
return Arrays.binarySearch(_elements, startingOffset, endingOffset, val);
} else
{
short val;
if (o instanceof String)
val = parse((String) o);
else
val = (Short)o;
return Arrays.binarySearch(_elements, val);
return Arrays.binarySearch(_elements, startingOffset, endingOffset, val);
}
}

public int indexOf(Short val)
{
if (withDummy)
Expand Down
Expand Up @@ -61,28 +61,31 @@ public String format(Object o) {
return (String)o;
}

@Override
public int indexOf(Object o)
{
if (withDummy)
{
if (o == null) return -1;

if (o.equals("")) {
@Override
public int indexOfWithOffset(Object o, int startingOffset, int endingOffset) {
if (withDummy)
{
if (o == null) return -1;

if (o.equals("")) {
if (_innerList.size() > 1 && "".equals(_innerList.get(1))) {
return 1;
} else if (_innerList.size() < 2) {
return -1;
}
}
return Collections.binarySearch(((ArrayList<String>)_innerList), (String)o);
} else
{
return Collections.binarySearch(((ArrayList<String>)_innerList), (String)o);
}
}
}
}
ArrayList<String> stringList = (ArrayList<String>) _innerList;
List<String> sublist = stringList.subList(startingOffset, endingOffset);
return Collections.binarySearch(sublist, (String)o);
} else
{
ArrayList<String> stringList = (ArrayList<String>) _innerList;
List<String> sublist = stringList.subList(startingOffset, endingOffset);
return Collections.binarySearch(sublist, (String)o);
}
}

@Override
@Override
public void seal() {
((ArrayList<String>)_innerList).trimToSize();
}
Expand Down
Expand Up @@ -104,9 +104,17 @@ public T getRawValue(int index){
public Comparable getComparableValue(int index){
return (Comparable) _innerList.get(index);
}
abstract public int indexOf(Object o);

public int indexOf(Object o){
return indexOfWithOffset(o, 0, size());
}

public int indexOfWithOffset(Object value, int offset)
{
return indexOfWithOffset(value, offset, size());
}

public int indexOfWithOffset(Object value, int startingOffset, int endingOffset)
{
throw new IllegalStateException("not supported");
}
Expand Down

0 comments on commit a31b44a

Please sign in to comment.