// License: GPL. For details, see LICENSE file. package org.openstreetmap.josm.plugins.opendata.core.licenses; import java.net.MalformedURLException; import java.net.URL; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import javax.swing.Icon; import org.openstreetmap.josm.plugins.opendata.core.util.OdUtils; public abstract class License { public static final ODbL ODbL = new ODbL(); public static final LOOL LOOL = new LOOL(); private final Map<String, URL> urls = new HashMap<>(); private final Map<String, URL> summaryURLs = new HashMap<>(); private Icon icon; private static URL getURL(Map<String, URL> map) { // Find URL for current language String lang = OdUtils.getJosmLanguage(); for (String l : map.keySet()) { if (lang.startsWith(l)) { return map.get(l); } } // If not found, return english URL URL url = map.get("en"); if (url != null) { return url; } // If not found, return first non-null url if (map.keySet().size() > 0) { for (Iterator<String> it = map.keySet().iterator(); it.hasNext();) { url = map.get(it.next()); if (url != null) { return url; } } } // If empty, return null return null; } public URL getURL() { return getURL(urls); } public URL getSummaryURL() { return getURL(summaryURLs); } public final void setURL(URL url) { setURL(url, "en"); } public final void setURL(String url, String lang) throws MalformedURLException { setURL(new URL(url), lang); } public final void setURL(String url) throws MalformedURLException { setURL(new URL(url), "en"); } public final void setURL(URL url, String lang) { if (url != null) { urls.put(lang, url); } } public final void setSummaryURL(URL url) { setSummaryURL(url, "en"); } public final void setSummaryURL(String url, String lang) throws MalformedURLException { setSummaryURL(new URL(url), lang); } public final void setSummaryURL(String url) throws MalformedURLException { setSummaryURL(new URL(url), "en"); } public final void setSummaryURL(URL url, String lang) { if (url != null) { summaryURLs.put(lang, url); } } public final Icon getIcon() { return icon; } public final void setIcon(Icon icon) { this.icon = icon; } @Override public String toString() { return "License [" + (urls != null ? "urls=" + urls + ", " : "") + (summaryURLs != null ? "summaryURLs=" + summaryURLs : "") + "]"; } }