- Timestamp:
- 2010-02-18T08:56:57+01:00 (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/openstreetmap/josm/io/OsmWriter.java
r2604 r3012 5 5 6 6 import java.io.PrintWriter; 7 import java.util.ArrayList; 8 import java.util.Collection; 9 import java.util.Collections; 10 import java.util.Comparator; 11 import java.util.List; 7 12 import java.util.Map.Entry; 8 13 … … 61 66 } 62 67 68 private static final Comparator<OsmPrimitive> byIdComparator = new Comparator<OsmPrimitive>() { 69 public int compare(OsmPrimitive o1, OsmPrimitive o2) { 70 return (o1.getUniqueId()<o2.getUniqueId() ? -1 : (o1.getUniqueId()==o2.getUniqueId() ? 0 : 1)); 71 } 72 }; 73 74 private Collection<OsmPrimitive> sortById(Collection<? extends OsmPrimitive> primitives) { 75 List<OsmPrimitive> result = new ArrayList<OsmPrimitive>(primitives.size()); 76 result.addAll(primitives); 77 Collections.sort(result, byIdComparator); 78 return result; 79 } 80 63 81 public void writeContent(DataSet ds) { 64 for ( Node n : ds.getNodes()) {82 for (OsmPrimitive n : sortById(ds.getNodes())) { 65 83 if (shouldWrite(n)) { 66 visit( n);67 } 68 } 69 for ( Way w : ds.getWays()) {84 visit((Node)n); 85 } 86 } 87 for (OsmPrimitive w : sortById(ds.getWays())) { 70 88 if (shouldWrite(w)) { 71 visit( w);72 } 73 } 74 for ( Relation e : ds.getRelations()) {89 visit((Way)w); 90 } 91 } 92 for (OsmPrimitive e: sortById(ds.getRelations())) { 75 93 if (shouldWrite(e)) { 76 visit( e);94 visit((Relation)e); 77 95 } 78 96 } … … 162 180 } 163 181 182 private static final Comparator<Entry<String, String>> byKeyComparator = new Comparator<Entry<String,String>>() { 183 public int compare(Entry<String, String> o1, Entry<String, String> o2) { 184 return o1.getKey().compareTo(o2.getKey()); 185 } 186 }; 187 164 188 private void addTags(Tagged osm, String tagname, boolean tagOpen) { 165 189 if (osm.hasKeys()) { … … 167 191 out.println(">"); 168 192 } 169 for (Entry<String, String> e : osm.getKeys().entrySet()) { 193 List<Entry<String, String>> entries = new ArrayList<Entry<String,String>>(osm.getKeys().entrySet()); 194 Collections.sort(entries, byKeyComparator); 195 for (Entry<String, String> e : entries) { 170 196 if ((osm instanceof Changeset) || !("created_by".equals(e.getKey()))) { 171 197 out.println(" <tag k='"+ XmlWriter.encode(e.getKey()) +
Note:
See TracChangeset
for help on using the changeset viewer.