001// License: GPL. For details, see LICENSE file. 002package org.openstreetmap.josm.tools; 003 004import java.util.Objects; 005import java.util.Set; 006 007/** 008 * Describes a regional Taginfo instance. 009 * @since 15876 010 */ 011public class TaginfoRegionalInstance { 012 013 /** Instance URL */ 014 private final String url; 015 /** Set of ISO3166 codes for the covered areas */ 016 private final Set<String> isoCodes; 017 /** Optional suffix to distinguish them in UI */ 018 private final String suffix; 019 020 /** 021 * Constructs a new {@code TaginfoRegionalInstance}. 022 * @param url Instance URL. Must not be null 023 * @param isoCodes Set of ISO3166 codes for the covered areas. Must not be null 024 */ 025 public TaginfoRegionalInstance(String url, Set<String> isoCodes) { 026 this(url, isoCodes, null); 027 } 028 029 /** 030 * Constructs a new {@code TaginfoRegionalInstance}. 031 * @param url Instance URL. Must not be null 032 * @param isoCodes Set of ISO3166 codes for the covered areas. Must not be null 033 * @param suffix Optional suffix to distinguish them in UI. Can be null 034 */ 035 public TaginfoRegionalInstance(String url, Set<String> isoCodes, String suffix) { 036 this.url = Objects.requireNonNull(url); 037 this.isoCodes = Objects.requireNonNull(isoCodes); 038 this.suffix = suffix; 039 } 040 041 /** 042 * Returns the instance URL. 043 * @return instance URL 044 */ 045 public String getUrl() { 046 return url; 047 } 048 049 /** 050 * Returns the set of ISO3166 codes for the covered areas. 051 * @return set of ISO3166 codes for the covered areas 052 */ 053 public Set<String> getIsoCodes() { 054 return isoCodes; 055 } 056 057 /** 058 * Returns the optional suffix to distinguish them in UI. 059 * @return optional suffix to distinguish them in UI. Can be null 060 */ 061 public String getSuffix() { 062 return suffix; 063 } 064 065 @Override 066 public String toString() { 067 return (suffix == null ? "" : suffix + " ") + String.join("/", isoCodes); 068 } 069}