package org.osmtools.taginfo; public class TagInfoUrlBuilder { private String baseUrl = "http://taginfo.openstreetmap.org/api/4"; private String path; private StringBuilder params = new StringBuilder(); public TagInfoUrlBuilder(String path) { this.path = path; } public TagInfoUrlBuilder append(String key, long value) { return append(key, String.valueOf(value)); } public TagInfoUrlBuilder append(String key, String value) { if (params.length() != 0) params.append('&'); params.append(key).append('=').append(value); return this; } public TagInfoUrlBuilder append(TagInfoSort sort, TagInfoSortOrder sortOrder) { if (sort != null) { append("sortname", sort.name().toLowerCase()); append("sortorder", sortOrder.name().toLowerCase()); } return this; } public TagInfoUrlBuilder append(Pagination pagination) { if (pagination != null) { append("page", pagination.getPage()).append("rp", pagination.getResultsPerPage()); } return this; } public TagInfoUrlBuilder append(TagInfoFilter filter) { if (filter != null && filter != TagInfoFilter.ALL) { append("filter", filter.name().toLowerCase()); } return this; } @Override public String toString() { StringBuilder url = new StringBuilder(baseUrl); url.append(path); if (params.length() > 0) url.append('?').append(params); return url.toString(); } }