package com.schneeloch.bostonbusmap_library.data; import java.util.Collection; import java.util.Collections; import java.util.List; import com.schneeloch.bostonbusmap_library.annotations.KeepSorted; import com.google.common.collect.ImmutableList; import com.google.common.collect.Iterables; import com.google.common.collect.Lists; /** * A thread safe sorted set of route tags (strings, basically) * @author schneg * */ public class RouteSet { @KeepSorted private List<String> routes; private boolean immutable; public RouteSet() { routes = Lists.newArrayList(); } public synchronized ImmutableList<String> getRoutes() { if (!immutable) { Collections.sort(routes); routes = ImmutableList.copyOf(routes); immutable = true; } return (ImmutableList<String>)routes; } public synchronized void addRoute(String route) { if (routes.contains(route)) { return; } if (immutable) { routes = Lists.newArrayList(routes); immutable = false; } routes.add(route); } public synchronized String getFirstRoute() { return Iterables.getFirst(getRoutes(), ""); } public synchronized boolean hasRoute(String route) { return routes.contains(route); } }