// License: GPL. For details, see LICENSE file. package org.openstreetmap.josm.plugins.utilsplugin2.customurl; import java.io.BufferedReader; import java.io.File; import java.io.IOException; import java.io.PrintWriter; import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.util.ArrayList; import java.util.List; import java.util.logging.Level; import java.util.logging.Logger; import org.openstreetmap.josm.Main; import org.openstreetmap.josm.plugins.utilsplugin2.UtilsPlugin2; public final class URLList { public static final String defaultURL = "http://osm.mapki.com/history/{#type}.php?id={#id}"; private URLList() { // Hide default constructor for utilities classes } public static String getSelectedURL() { getURLList(); return Main.pref.get("utilsplugin2.customurl", defaultURL); } public static void select(String url) { Main.pref.put("utilsplugin2.customurl", url); } public static List<String> resetURLList() { List<String> items = new ArrayList<>(); items.add("Wikipedia"); items.add("https://en.wikipedia.org/w/index.php?search={name}&fulltext=Search"); items.add("Wikipedia RU"); items.add(defaultURL); items.add("Who Dit It?"); items.add("http://simon04.dev.openstreetmap.org/whodidit/?zoom=12&lat={#lat}&lon={#lon}&layers=BTT"); items.add("Keep Right validator"); items.add("http://keepright.ipax.at/report_map.php?zoom=14&lat={#lat}&lon={#lon}&layers=B0T"); items.add("Element history [demo, =Ctrl-Shift-H]"); items.add("https://www.openstreetmap.org/{#type}/{#id}/history"); items.add("Browse element [demo, =Ctrl-Shift-I]"); items.add("https://www.openstreetmap.org/{#type}/{#id}"); Main.pref.putCollection("utilsplugin2.urlHistory", items); Main.pref.put("utilsplugin2.customurl", items.get(9)); return items; } public static List<String> getURLList() { List<String> items = (List<String>) Main.pref.getCollection("utilsplugin2.urlHistory"); if (items == null || items.isEmpty()) { resetURLList(); items = (List<String>) Main.pref.getCollection("utilsplugin2.urlHistory"); } return items; } public static void updateURLList(List<String> lst) { Main.pref.putCollection("utilsplugin2.urlHistory", lst); try { Main.pref.save(); } catch (IOException ex) { Logger.getLogger(UtilsPluginPreferences.class.getName()).log(Level.SEVERE, null, ex); } } public static List<String> loadURLList() { ArrayList<String> items = new ArrayList<>(); File f = new File(UtilsPlugin2.getInstance().getPluginDir(), "customurl.txt"); try (BufferedReader fr = Files.newBufferedReader(f.toPath(), StandardCharsets.UTF_8)) { String s; while ((s = fr.readLine()) != null) { items.add(s); } } catch (IOException e) { Main.error(e); } return items; } public static void saveURLList(List<String> items) { File f = new File(UtilsPlugin2.getInstance().getPluginDir(), "customurl.txt"); PrintWriter fw = null; try { f.getParentFile().mkdirs(); fw = new PrintWriter(f, "UTF-8"); for (String s : items) { fw.println(s); } } catch (IOException e) { Main.error(e); } finally { try { if (fw != null) fw.close(); } catch (Exception e) { Main.warn(e); } } } }