package com.intrbiz.bergamot.ui.util;
import java.util.Collection;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
import com.intrbiz.bergamot.model.Check;
import com.intrbiz.bergamot.model.Group;
import com.intrbiz.bergamot.model.Host;
import com.intrbiz.bergamot.model.Location;
import com.intrbiz.bergamot.model.Service;
public class Sorter
{
public static <T extends Location> List<T> orderLocationsByStatus(Collection<T> toSort)
{
List<T> ret = new LinkedList<T>(toSort);
Collections.sort(ret, (a, b) -> { return a.getState().getStatus() == b.getState().getStatus() ? a.getSummary().compareTo(b.getSummary()) : b.getState().getStatus().compareTo(a.getState().getStatus()); });
return ret;
}
public static <T extends Group> List<T> orderGroupsByStatus(Collection<T> toSort)
{
List<T> ret = new LinkedList<T>(toSort);
Collections.sort(ret, (a,b) -> { return a.getState().getStatus() == b.getState().getStatus() ? a.getSummary().compareTo(b.getSummary()) : b.getState().getStatus().compareTo(a.getState().getStatus()); });
return ret;
}
public static <T extends Host> List<T> orderHostsByStatus(Collection<T> toSort)
{
List<T> ret = new LinkedList<T>(toSort);
Collections.sort(ret, (a, b) -> { return a.getState().getStatus() == b.getState().getStatus() ? a.getSummary().compareTo(b.getSummary()) :b.getState().getStatus().compareTo(a.getState().getStatus()); });
return ret;
}
public static <T extends Service> List<T> orderServicesByStatus(Collection<T> toSort)
{
List<T> ret = new LinkedList<T>(toSort);
Collections.sort(ret, (a,b) -> { return a.getState().getStatus() == b.getState().getStatus() ? (a.getSummary().equals(b.getSummary()) ? a.getHost().getSummary().compareTo(b.getHost().getSummary()) : a.getSummary().compareTo(b.getSummary())) : b.getState().getStatus().compareTo(a.getState().getStatus()); });
return ret;
}
public static <T extends Check<?,?>> List<T> orderCheckByStatus(Collection<T> toSort)
{
List<T> ret = new LinkedList<T>(toSort);
Collections.sort(ret, (a, b) -> { return a.getState().getStatus() == b.getState().getStatus() ? a.getSummary().compareTo(b.getSummary()) : b.getState().getStatus().compareTo(a.getState().getStatus()); });
return ret;
}
}