Changeset 15496 in josm for trunk/src/org/openstreetmap/josm/data/Preferences.java
- Timestamp:
- 2019-11-02T15:11:34+01:00 (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/openstreetmap/josm/data/Preferences.java
r15469 r15496 22 22 import java.util.HashSet; 23 23 import java.util.Iterator; 24 import java.util.List; 24 25 import java.util.Map; 25 26 import java.util.Map.Entry; … … 30 31 import java.util.concurrent.TimeUnit; 31 32 import java.util.function.Predicate; 33 import java.util.stream.Collectors; 32 34 import java.util.stream.Stream; 33 35 … … 82 84 public class Preferences extends AbstractPreferences { 83 85 86 /** remove if key equals */ 84 87 private static final String[] OBSOLETE_PREF_KEYS = { 85 88 "remotecontrol.https.enabled", /* remove entry after Dec. 2019 */ … … 87 90 }; 88 91 92 /** remove if key starts with */ 93 private static final String[] OBSOLETE_PREF_KEYS_START = { 94 //only remove layer specific prefs 95 "draw.rawgps.layer.wpt.", 96 "draw.rawgps.layer.audiowpt.", 97 "draw.rawgps.lines.force.", 98 "draw.rawgps.lines.alpha-blend.", 99 "draw.rawgps.lines.", 100 "markers.show ", //uses space as separator 101 "marker.makeautomarker.", 102 "clr.layer.", 103 104 //remove both layer specific and global prefs 105 "draw.rawgps.colors", 106 "draw.rawgps.direction", 107 "draw.rawgps.alternatedirection", 108 "draw.rawgps.linewidth", 109 "draw.rawgps.max-line-length.local", 110 "draw.rawgps.max-line-length", 111 "draw.rawgps.large", 112 "draw.rawgps.large.size", 113 "draw.rawgps.hdopcircle", 114 "draw.rawgps.min-arrow-distance", 115 "draw.rawgps.colorTracksTune", 116 "draw.rawgps.colors.dynamic", 117 "draw.rawgps.lines.local", 118 "draw.rawgps.heatmap" 119 }; 120 121 /** keep subkey even if it starts with any of {@link #OBSOLETE_PREF_KEYS_START} */ 122 private static final List<String> KEEP_PREF_KEYS = Arrays.asList( 123 "draw.rawgps.lines.alpha-blend", 124 "draw.rawgps.lines.arrows", 125 "draw.rawgps.lines.arrows.fast", 126 "draw.rawgps.lines.arrows.min-distance", 127 "draw.rawgps.lines.force", 128 "draw.rawgps.lines.max-length", 129 "draw.rawgps.lines.max-length.local", 130 "draw.rawgps.lines.width" 131 ); 132 133 /** rename keys that equal */ 134 private final static Map<String, String> UPDATE_PREF_KEYS = getUpdatePrefKeys(); 135 136 private static Map<String, String> getUpdatePrefKeys() { 137 HashMap<String, String> m = new HashMap<>(); 138 m.put("draw.rawgps.direction", "draw.rawgps.lines.arrows"); 139 m.put("draw.rawgps.alternatedirection", "draw.rawgps.lines.arrows.fast"); 140 m.put("draw.rawgps.min-arrow-distance", "draw.rawgps.lines.arrows.min-distance"); 141 m.put("draw.rawgps.linewidth", "draw.rawgps.lines.width"); 142 m.put("draw.rawgps.max-line-length.local", "draw.rawgps.lines.max-length.local"); 143 m.put("draw.rawgps.max-line-length", "draw.rawgps.lines.max-length"); 144 m.put("draw.rawgps.large", "draw.rawgps.points.large"); 145 m.put("draw.rawgps.large.alpha", "draw.rawgps.points.large.alpha"); 146 m.put("draw.rawgps.large.size", "draw.rawgps.points.large.size"); 147 m.put("draw.rawgps.hdopcircle", "draw.rawgps.points.hdopcircle"); 148 m.put("draw.rawgps.layer.wpt.pattern", "draw.rawgps.markers.pattern"); 149 m.put("draw.rawgps.layer.audiowpt.pattern", "draw.rawgps.markers.audio.pattern"); 150 m.put("draw.rawgps.colors", "draw.rawgps.colormode"); 151 m.put("draw.rawgps.colorTracksTune", "draw.rawgps.colormode.velocity.tune"); 152 m.put("draw.rawgps.colors.dynamic", "draw.rawgps.colormode.dynamic-range"); 153 m.put("draw.rawgps.heatmap.line-extra", "draw.rawgps.colormode.heatmap.line-extra"); 154 m.put("draw.rawgps.heatmap.colormap", "draw.rawgps.colormode.heatmap.colormap"); 155 m.put("draw.rawgps.heatmap.use-points", "draw.rawgps.colormode.heatmap.use-points"); 156 m.put("draw.rawgps.heatmap.gain", "draw.rawgps.colormode.heatmap.gain"); 157 m.put("draw.rawgps.heatmap.lower-limit", "draw.rawgps.colormode.heatmap.lower-limit"); 158 m.put("draw.rawgps.date-coloring-min-dt", "draw.rawgps.colormode.time.min-distance"); 159 return Collections.unmodifiableMap(m); 160 } 161 89 162 private static final long MAX_AGE_DEFAULT_PREFERENCES = TimeUnit.DAYS.toSeconds(50); 90 163 91 164 private final IBaseDirectories dirs; 165 boolean modifiedDefault; 92 166 93 167 /** … … 416 490 settingsMap.clear(); 417 491 settingsMap.putAll(reader.getSettings()); 418 removeObsolete(reader.getVersion()); 492 removeAndUpdateObsolete(reader.getVersion()); 419 493 } 420 494 … … 521 595 return; 522 596 } 597 File def = getDefaultsCacheFile(); 598 if (def.exists()) { 599 try { 600 loadDefaults(); 601 } catch (IOException | XMLStreamException | SAXException e) { 602 Logging.error(e); 603 Logging.warn(tr("Failed to load defaults cache file: {0}", def)); 604 defaultsMap.clear(); 605 if (!def.delete()) { 606 Logging.warn(tr("Failed to delete faulty defaults cache file: {0}", def)); 607 } 608 } 609 } 523 610 try { 524 611 load(); … … 544 631 Logging.error(e1); 545 632 Logging.warn(tr("Failed to initialize preferences. Failed to reset preference file to default: {0}", getPreferenceFile())); 546 }547 }548 File def = getDefaultsCacheFile();549 if (def.exists()) {550 try {551 loadDefaults();552 } catch (IOException | XMLStreamException | SAXException e) {553 Logging.error(e);554 Logging.warn(tr("Failed to load defaults cache file: {0}", def));555 defaultsMap.clear();556 if (!def.delete()) {557 Logging.warn(tr("Failed to delete faulty defaults cache file: {0}", def));558 }559 633 } 560 634 } … … 756 830 757 831 /** 758 * Removes obsolete preference settings. If you throw out a once-used preference 832 * Removes and updates obsolete preference settings. If you throw out a once-used preference 759 833 * setting, add it to the list here with an expiry date (written as comment). If you 760 834 * see something with an expiry date in the past, remove it from the list. 761 835 * @param loadedVersion JOSM version when the preferences file was written 762 836 */ 763 private void removeObsolete(int loadedVersion) { 837 private void removeAndUpdateObsolete(int loadedVersion) { 838 Logging.trace("Update obsolete preference keys for version {0}", Integer.toString(loadedVersion)); 839 for (Entry<String, String> e : UPDATE_PREF_KEYS.entrySet()) { 840 String oldkey = e.getKey(); 841 String newkey = e.getValue(); 842 if (settingsMap.containsKey(oldkey)) { 843 Setting<?> value = settingsMap.remove(oldkey); 844 settingsMap.putIfAbsent(newkey, value); 845 Logging.info(tr("Updated preference setting {0} to {1}", oldkey, newkey)); 846 } 847 } 848 764 849 Logging.trace("Remove obsolete preferences for version {0}", Integer.toString(loadedVersion)); 765 850 for (String key : OBSOLETE_PREF_KEYS) { 766 851 if (settingsMap.containsKey(key)) { 767 852 settingsMap.remove(key); 768 Logging.info(tr("Preference setting {0} has been removed since it is no longer used.", key)); 769 } 853 Logging.info(tr("Removed preference setting {0} since it is no longer used", key)); 854 } 855 if (defaultsMap.containsKey(key)) { 856 defaultsMap.remove(key); 857 Logging.info(tr("Removed preference default {0} since it is no longer used", key)); 858 modifiedDefault = true; 859 } 860 } 861 for (String key : OBSOLETE_PREF_KEYS_START) { 862 settingsMap.entrySet().stream() 863 .filter(e -> e.getKey().startsWith(key)) 864 .collect(Collectors.toSet()) 865 .forEach(e -> { 866 String k = e.getKey(); 867 if (!KEEP_PREF_KEYS.contains(k)) { 868 settingsMap.remove(k); 869 Logging.info(tr("Removed preference setting {0} since it is no longer used", k)); 870 } 871 }); 872 defaultsMap.entrySet().stream() 873 .filter(e -> e.getKey().startsWith(key)) 874 .collect(Collectors.toSet()) 875 .forEach(e -> { 876 String k = e.getKey(); 877 if (!KEEP_PREF_KEYS.contains(k)) { 878 defaultsMap.remove(k); 879 Logging.info(tr("Removed preference default {0} since it is no longer used", k)); 880 modifiedDefault = true; 881 } 882 }); 883 } 884 if (modifiedDefault) { 885 try { 886 saveDefaults(); 887 Logging.info(tr("Saved updated default preferences.")); 888 } catch (IOException ex) { 889 Logging.log(Logging.LEVEL_WARN, tr("Failed to save default preferences."), ex); 890 } 891 modifiedDefault = false; 770 892 } 771 893 }
Note:
See TracChangeset
for help on using the changeset viewer.
