Changeset 4553 in josm


Ignore:
Timestamp:
31.10.2011 19:07:04 (7 months ago)
Author:
stoecker
Message:

switch to XML preferences

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/data/preferences.xsd

    r3938 r4553  
    1212                        </choice> 
    1313                </sequence> 
     14                <attribute name="version" type="string" /> 
    1415        </complexType> 
    1516 
  • trunk/src/org/openstreetmap/josm/data/Preferences.java

    r4512 r4553  
    385385        final PrintWriter out = new PrintWriter(new OutputStreamWriter( 
    386386                new FileOutputStream(prefFile + "_tmp"), "utf-8"), false); 
    387         for (final Entry<String, String> e : properties.entrySet()) { 
    388             String s = defaults.get(e.getKey()); 
    389             /* don't save default values */ 
    390             if(s == null || !s.equals(e.getValue())) { 
    391                 out.println(e.getKey() + "=" + e.getValue()); 
    392             } 
    393         } 
     387        out.print(toXML(false)); 
    394388        out.close(); 
    395389 
     
    438432    } 
    439433 
    440     public void load() throws IOException { 
     434    public void load() throws Exception { 
    441435        properties.clear(); 
    442436        if(!Main.applet) { 
    443437            final BufferedReader in = new BufferedReader(new InputStreamReader( 
    444438                    new FileInputStream(getPreferencesDir()+"preferences"), "utf-8")); 
    445             int lineNumber = 0; 
    446             ArrayList<Integer> errLines = new ArrayList<Integer>(); 
    447             for (String line = in.readLine(); line != null; line = in.readLine(), lineNumber++) { 
    448                 final int i = line.indexOf('='); 
    449                 if (i == -1 || i == 0) { 
    450                     errLines.add(lineNumber); 
    451                     continue; 
     439            /* FIXME: TODO: remove old style config file end of 2012 */ 
     440            in.mark(1); 
     441            int v = in.read(); 
     442            in.reset(); 
     443            if(v == '<') { 
     444                fromXML(in); 
     445            } else { 
     446                int lineNumber = 0; 
     447                ArrayList<Integer> errLines = new ArrayList<Integer>(); 
     448                for (String line = in.readLine(); line != null; line = in.readLine(), lineNumber++) { 
     449                    final int i = line.indexOf('='); 
     450                    if (i == -1 || i == 0) { 
     451                        errLines.add(lineNumber); 
     452                        continue; 
     453                    } 
     454                    String key = line.substring(0,i); 
     455                    String value = line.substring(i+1); 
     456                    if (!value.isEmpty()) { 
     457                        properties.put(key, value); 
     458                    } 
    452459                } 
    453                 String key = line.substring(0,i); 
    454                 String value = line.substring(i+1); 
    455                 if (!value.isEmpty()) { 
    456                     properties.put(key, value); 
    457                 } 
    458             } 
    459             if (!errLines.isEmpty()) 
    460                 throw new IOException(tr("Malformed config file at lines {0}", errLines)); 
     460                if (!errLines.isEmpty()) 
     461                    throw new IOException(tr("Malformed config file at lines {0}", errLines)); 
     462            } 
    461463        } 
    462464        updateSystemProperties(); 
     
    525527        try { 
    526528            load(); 
    527         } catch (IOException e) { 
     529        } catch (Exception e) { 
    528530            e.printStackTrace(); 
    529531            File backupFile = new File(prefDir,"preferences.bak"); 
     
    10671069        StringBuilder b = new StringBuilder( 
    10681070                "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + 
    1069         "<preferences xmlns=\"http://josm.openstreetmap.de/preferences-1.0\">\n"); 
     1071                "<preferences xmlns=\"http://josm.openstreetmap.de/preferences-1.0\" version=\""+ 
     1072                Version.getInstance().getVersion() + "\">\n"); 
    10701073        for (Entry<String, String> p : properties.entrySet()) { 
    10711074            if (nopass && p.getKey().equals("osm-server.password")) { 
     
    10731076            } 
    10741077            String r = p.getValue(); 
    1075             if(r.contains("\u001e")) 
    1076             { 
    1077                 b.append(" <collection key='"); 
    1078                 b.append(XmlWriter.encode(p.getKey())); 
    1079                 b.append("'>\n"); 
    1080                 for (String val : r.split("\u001e", -1)) 
     1078            String s = defaults.get(p.getKey()); 
     1079            /* don't save default values */ 
     1080            if(s == null || !s.equals(r)) { 
     1081                if(r.contains("\u001e")) 
    10811082                { 
    1082                     b.append("  <entry value='"); 
    1083                     b.append(XmlWriter.encode(val)); 
     1083                    b.append(" <collection key='"); 
     1084                    b.append(XmlWriter.encode(p.getKey())); 
     1085                    b.append("'>\n"); 
     1086                    for (String val : r.split("\u001e", -1)) 
     1087                    { 
     1088                        b.append("  <entry value='"); 
     1089                        b.append(XmlWriter.encode(val)); 
     1090                        b.append("' />\n"); 
     1091                    } 
     1092                    b.append(" </collection>\n"); 
     1093                } 
     1094                else 
     1095                { 
     1096                    b.append(" <tag key='"); 
     1097                    b.append(XmlWriter.encode(p.getKey())); 
     1098                    b.append("' value='"); 
     1099                    b.append(XmlWriter.encode(p.getValue())); 
    10841100                    b.append("' />\n"); 
    10851101                } 
    1086                 b.append(" </collection>\n"); 
    1087             } 
    1088             else 
    1089             { 
    1090                 b.append(" <tag key='"); 
    1091                 b.append(XmlWriter.encode(p.getKey())); 
    1092                 b.append("' value='"); 
    1093                 b.append(XmlWriter.encode(p.getValue())); 
    1094                 b.append("' />\n"); 
    10951102            } 
    10961103        } 
Note: See TracChangeset for help on using the changeset viewer.