package net.frontlinesms.messaging.sms.internet; import java.util.Comparator; import net.frontlinesms.messaging.Provider; import net.frontlinesms.resources.ImplementationLoader; public class SmsInternetServiceLoader extends ImplementationLoader<SmsInternetService> { @Override protected Class<SmsInternetService> getEntityClass() { return SmsInternetService.class; } @Override protected Comparator<? super Class<? extends SmsInternetService>> getSorter() { return new InternetServiceSorter(); } } /** Sort {@link SmsInternetService}s alphabetically by name. */ class InternetServiceSorter implements Comparator<Class<? extends SmsInternetService>> { public int compare(Class<? extends SmsInternetService> o1, Class<? extends SmsInternetService> o2) { if(o1 == null) return -1; else if(o2 == null) return 1; else { Provider a1 = o1.getAnnotation(Provider.class); Provider a2 = o2.getAnnotation(Provider.class); if(a1 == null) return -1; else if(a2 == null) return 1; else return a1.name().compareTo(a2.name()); } } }