/*
* Copyright (C) 2011.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 3 or
* version 2 as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*/
package uk.me.parabola.imgfmt.app.srt;
/**
* Allows you to combine another sort key with further integer comparisons.
* Avoids having to cram two integers into one when there is the possibility that
* they may not be enough bits to represent all values.
*
* @author Steve Ratcliffe
*/
public class CombinedSortKey<T> implements SortKey<T> {
private final SortKey<T> key;
private final int first;
private final int second;
//public CombinedSortKey(SortKey<T> key, int first) {
// this(key, first, 0);
//}
public CombinedSortKey(SortKey<T> obj, int first, int second) {
this.key = obj;
this.first = first;
this.second = second;
}
public T getObject() {
return key.getObject();
}
public int compareTo(SortKey<T> o) {
CombinedSortKey<T> other = (CombinedSortKey<T>) o;
int res = key.compareTo(other.key);
if (res == 0) {
res = compareInts(first, other.first);
if (res == 0) {
res = compareInts(second, other.second);
}
}
return res;
}
private int compareInts(int i1, int i2) {
int res;
if (i1 == i2)
res = 0;
else if (i1 < i2)
res = -1;
else
res = 1;
return res;
}
}