/*
* 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;
/**
* Combines a number of sort keys into one. The first is the primary sort and contains the
* actual object being sorted.
*
* @author Steve Ratcliffe
*/
public class MultiSortKey<T> implements SortKey<T> {
private final SortKey<T> key1;
private final SortKey<T> key2;
private final SortKey<T> key3;
public MultiSortKey(SortKey<T> key1, SortKey<T> key2, SortKey<T> key3) {
this.key1 = key1;
this.key2 = key2;
this.key3 = key3;
}
public T getObject() {
return key1.getObject();
}
public int compareTo(SortKey<T> o) {
MultiSortKey<T> other = (MultiSortKey<T>) o;
int res = key1.compareTo(other.key1);
if (res == 0) {
res = key2.compareTo(other.key2);
if (res == 0 && key3 != null) {
res = key3.compareTo(other.key3);
}
}
return res;
}
}