public FlameHost(List<ServiceEvent> services) { mServices = services; if (services.size() == 0) { return; } Collections.sort( services, new Comparator<ServiceEvent>() { @Override public int compare(ServiceEvent lhs, ServiceEvent rhs) { ServiceLookup left = ServiceLookup.get(lhs.getType()); ServiceLookup right = ServiceLookup.get(rhs.getType()); if (left != null && right != null) { return Integer.valueOf(left.getPriority()).compareTo(right.getPriority()); } else if (left != null && right == null) { // left wins return -1; } else { return lhs.getName().compareToIgnoreCase(rhs.getName()); } } }); mIdentifer = hostIdentifierForService(services.get(0)); mLookup = ServiceLookup.get(services.get(0).getType()); }
public static ServiceLookup getServiceLookup(List<ServiceEvent> services) { ArrayList<ServiceLookup> lookups = new ArrayList<>(); for (ServiceEvent service : services) { ServiceLookup lookup = ServiceLookup.get(service.getType()); if (lookup != null && lookup.getPriority() > 0) { lookups.add(lookup); } } Timber.v("lookups for " + services + " are " + lookups); if (lookups.isEmpty()) { return null; } Collections.sort(lookups); return lookups.get(lookups.size() - 1); }