package org.richfaces.demo.tables;
import java.io.Serializable;
import java.util.Comparator;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import org.richfaces.demo.tables.model.capitals.Capital;
import org.richfaces.component.SortOrder;
@ManagedBean
@ViewScoped
public class CapitalsSortingBean implements Serializable {
private static final long serialVersionUID = -6237417487105926855L;
private static final String TIMEZONE_GMT_SEPARATOR = "-";
private SortOrder capitalsOrder = SortOrder.unsorted;
private SortOrder statesOrder = SortOrder.unsorted;
private SortOrder timeZonesOrder = SortOrder.unsorted;
public void sortByCapitals() {
statesOrder = SortOrder.unsorted;
timeZonesOrder = SortOrder.unsorted;
if (capitalsOrder.equals(SortOrder.ascending)) {
setCapitalsOrder(SortOrder.descending);
} else {
setCapitalsOrder(SortOrder.ascending);
}
}
public void sortByStates() {
capitalsOrder = SortOrder.unsorted;
timeZonesOrder = SortOrder.unsorted;
if (statesOrder.equals(SortOrder.ascending)) {
setStatesOrder(SortOrder.descending);
} else {
setStatesOrder(SortOrder.ascending);
}
}
public void sortByTimeZones() {
statesOrder = SortOrder.unsorted;
capitalsOrder = SortOrder.unsorted;
if (timeZonesOrder.equals(SortOrder.ascending)) {
setTimeZonesOrder(SortOrder.descending);
} else {
setTimeZonesOrder(SortOrder.ascending);
}
}
public Comparator<Capital> getTimeZoneComparator() {
return new Comparator<Capital>() {
public int compare(Capital o1, Capital o2) {
int tz1Int = Integer.valueOf(o1.getTimeZone().split(TIMEZONE_GMT_SEPARATOR)[1]);
int tz2Int = Integer.valueOf(o2.getTimeZone().split(TIMEZONE_GMT_SEPARATOR)[1]);
if (tz1Int == tz2Int) {
return 0;
}
if (tz1Int > tz2Int) {
return -1;
} else {
return 1;
}
}
};
}
public SortOrder getCapitalsOrder() {
return capitalsOrder;
}
public void setCapitalsOrder(SortOrder capitalsOrder) {
this.capitalsOrder = capitalsOrder;
}
public SortOrder getStatesOrder() {
return statesOrder;
}
public void setStatesOrder(SortOrder statesOrder) {
this.statesOrder = statesOrder;
}
public SortOrder getTimeZonesOrder() {
return timeZonesOrder;
}
public void setTimeZonesOrder(SortOrder timeZonesOrder) {
this.timeZonesOrder = timeZonesOrder;
}
}