package de.blau.android.osm; import java.util.ArrayList; /** * Capabilities of the API server we are connected too * Default values are as of September 2014 * @author simon */ public class Capabilities { public enum Status { ONLINE, READONLY, OFFLINE } // API related public String minVersion = "0.6"; public String maxVersion = "0.6"; float areaMax = 0.25f; int maxTracepointsPerPage = 5000; int maxWayNodes = 2000; int maxElementsInChangeset = 10000; int timeout = 300; public Status dbStatus = Status.OFFLINE; public Status apiStatus = Status.OFFLINE; public Status gpxStatus = Status.OFFLINE; // policy public ArrayList<String> imageryBlacklist = new ArrayList<String>(); public static Status stringToStatus(String s) { if (s == null) { return Status.OFFLINE; } if (s.equals("online")) { return Status.ONLINE; } else if (s.equals("readonly")) { return Status.READONLY; } else { return Status.OFFLINE; } } private static ArrayList<String> defaultBlacklist() { ArrayList<String> blacklist = new ArrayList<String>(); blacklist.add(".*\\.google(apis)?\\..*/(vt|kh)[\\?/].*([xyz]=.*){3}.*"); return blacklist; } public static Capabilities getDefault() { Capabilities d = new Capabilities(); d.imageryBlacklist.addAll(defaultBlacklist()); // this is wishful thinking // TODO add unknown status d.dbStatus = Status.ONLINE; d.apiStatus = Status.ONLINE; d.gpxStatus = Status.ONLINE; return d; } public static Capabilities getReadOnlyDefault() { Capabilities d = new Capabilities(); d.imageryBlacklist.addAll(defaultBlacklist()); // this is wishful thinking // TODO add unknown status d.dbStatus = Status.READONLY; d.apiStatus = Status.READONLY; d.gpxStatus = Status.READONLY; return d; } /** * update the limits used in various places to what we have got currently * likely it would be better for these places to refer to a static version * of the values here */ public void updateLimits() { Way.setMaxWayNodes(maxWayNodes); } }