package com.cognitionis.timeml_basickit.comparators;
import com.cognitionis.timeml_basickit.Timex;
import java.util.*;
/**
* @author Hector Llorens
* @since 2011
*/
public class AscStringTimexMapComparator implements Comparator {
private HashMap<String, Timex> _data = null;
public AscStringTimexMapComparator(HashMap<String, Timex> data) {
_data = data;
}
public int compare(Object o1, Object o2) {
int diff=1;
//if(_data!=null && _data.get((String) o1)!=null && _data.get((String) o2)!=null && _data.get((String) o1).get_date()!=null && _data.get((String) o2).get_date()!=null){
diff = ((Timex) _data.get((String) o1)).get_date().compareTo(((Timex) _data.get((String) o2)).get_date());
if (diff == 0) {
int o1l = ((Timex) _data.get((String) o1)).get_value().length();
int o2l = ((Timex) _data.get((String) o2)).get_value().length();
// for seasons and TODs keep it as it is
if (((Timex) _data.get((String) o1)).get_value().contains("W")) {
if (o1l < 8) {
o1l = 8;
}
if(o1l>8){
o1l = 9;
}
}
if (((Timex) _data.get((String) o2)).get_value().contains("W")) {
if (o2l < 8) {
o2l = 8;
}
if(o2l>8){
o2l = 9;
}
}
diff = o1l - o2l;
}
if (diff == 0) {
diff = 1; // if two elements are equal just leave the regular order
}
//}
return diff;
}
}