package games.strategy.engine.framework.map.download;
import static com.google.common.base.Preconditions.checkNotNull;
import java.util.ArrayList;
import java.util.List;
/**
* Utility class to sort a list of map downloads.
*/
public final class MapDownloadListSort {
private MapDownloadListSort() {}
/**
* Sorts a list of map downloads alphabetically case insensitive by group where dummy URL headers delimit the map
* groups.
*/
// TODO: can be simplified now that we no longer have headers : )
public static List<DownloadFileDescription> sortByMapName(final List<DownloadFileDescription> downloads) {
checkNotNull(downloads);
final List<DownloadFileDescription> returnList = new ArrayList<>();
// Until we see a header, save each map to this List.
// When we see a header, we'll sort this list, add it
// to the return values, and then clear it.
List<DownloadFileDescription> maps = new ArrayList<>();
for (final DownloadFileDescription download : downloads) {
maps.add(download);
}
// in case the file does not end with a header, sort and add any remaining maps
if (!maps.isEmpty()) {
returnList.addAll(sort(maps));
}
return returnList;
}
private static List<DownloadFileDescription> sort(final List<DownloadFileDescription> maps) {
maps.sort((lhs, rhs) -> lhs.getMapName().toUpperCase().compareTo(rhs.getMapName().toUpperCase()));
return maps;
}
}