Changeset 53 in josm
- Timestamp:
- 2006-02-14T21:07:29+01:00 (18 years ago)
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
src/org/openstreetmap/josm/io/OsmReader.java
r47 r53 104 104 for (Object o : e.getChildren()) { 105 105 Element child = (Element)o; 106 if (child.getName().equals("deleted")) { 107 for (Object delObj : child.getChildren()) { 108 OsmPrimitive osm = parseObject((Element)delObj, data); 109 if (osm != null) { 110 osm.visit(visitor); 111 osm.setDeleted(true); 112 } 113 } 114 } else { 115 OsmPrimitive osm = parseObject(child, data); 116 if (osm != null) 117 osm.visit(visitor); 118 } 106 OsmPrimitive osm = parseObject(child, data); 107 if (osm != null) 108 osm.visit(visitor); 119 109 } 120 110 … … 201 191 } 202 192 } 193 194 String action = e.getAttributeValue("action"); 195 if ("delete".equals(action)) 196 data.setDeleted(true); 197 else if ("modify".equals(action)) 198 data.modified = data.modifiedProperties = true; 199 else if ("modify/property".equals(action)) 200 data.modifiedProperties = true; 201 else if ("modify/object".equals(action)) 202 data.modified = true; 203 203 } 204 204 -
src/org/openstreetmap/josm/io/OsmWriter.java
r49 r53 69 69 List<Element> list = root.getChildren(); 70 70 properties = new LinkedList<Element>(); 71 for (OsmPrimitive osm : ds.all NonDeletedPrimitives()) {71 for (OsmPrimitive osm : ds.allPrimitives()) { 72 72 osm.visit(this); 73 73 list.add(element); 74 74 } 75 75 list.addAll(properties); 76 properties = new LinkedList<Element>();77 Element deleted = new Element("deleted");78 Collection<Element> allDeleted = deleted.getChildren();79 for (OsmPrimitive osm : ds.allPrimitives()) {80 if (osm.isDeleted() && osm.id != 0) {81 osm.visit(this);82 allDeleted.add(element);83 }84 }85 allDeleted.addAll(properties);86 if (!allDeleted.isEmpty())87 list.add(deleted);88 76 89 77 Document d = new Document(root); … … 117 105 for (Entry<Key, String> entry : osm.keys.entrySet()) 118 106 properties.add(parseProperty(osm, entry)); 107 if (osm.isDeleted()) 108 e.setAttribute("action", "delete"); 109 else if (osm.modified && osm.modifiedProperties) 110 e.setAttribute("action", "modify"); 111 else if (osm.modified && !osm.modifiedProperties) 112 e.setAttribute("action", "modify/object"); 113 else if (!osm.modified && osm.modifiedProperties) 114 e.setAttribute("action", "modify/property"); 119 115 } 120 116 -
test/org/openstreetmap/josm/test/OsmWriterTest.java
r49 r53 14 14 import org.jdom.input.SAXBuilder; 15 15 import org.openstreetmap.josm.data.osm.DataSet; 16 import org.openstreetmap.josm.data.osm.LineSegment; 17 import org.openstreetmap.josm.data.osm.Node; 18 import org.openstreetmap.josm.data.osm.OsmPrimitive; 19 import org.openstreetmap.josm.data.osm.Track; 16 20 import org.openstreetmap.josm.io.OsmWriter; 17 21 import org.openstreetmap.josm.test.framework.Bug; … … 24 28 public class OsmWriterTest extends TestCase { 25 29 30 private Node n1; 31 private Node n2; 32 private Node n3; 33 private Node n4; 34 private Node n5; 35 private LineSegment ls1; 36 private LineSegment ls2; 37 private LineSegment ls3; 38 private Track t; 39 26 40 private DataSet ds; 27 41 private Element osm; … … 79 93 80 94 95 /** 96 * Verify that action tag is set correctly. 97 */ 98 public void testActionTag() throws IOException, JDOMException { 99 int id = 1; 100 for (OsmPrimitive osm : ds.allPrimitives()) 101 osm.id = id++; // make all objects "old". 102 n1.setDeleted(true); 103 ls1.modified = true; 104 ls1.modifiedProperties = true; 105 ls3.modified = true; 106 t.modifiedProperties = true; 107 reparse(); 108 109 boolean foundNode = false; 110 for (Element n : nodes) { 111 if (n.getAttributeValue("uid").equals(""+n1.id)) { 112 assertEquals("delete", n.getAttributeValue("action")); 113 foundNode = true; 114 } 115 } 116 assertTrue("Node found in output", foundNode); 117 118 boolean foundLs1 = false; 119 boolean foundLs3 = false; 120 for (Element lsElem : lineSegments) { 121 String idStr = lsElem.getAttributeValue("uid"); 122 String action = lsElem.getAttributeValue("action"); 123 if (idStr.equals(""+ls1.id)) { 124 assertEquals("Attribute action on modified data is ok", "modify", action); 125 foundLs1 = true; 126 } else if (idStr.equals(""+ls3.id)) { 127 assertEquals("Attribute action on modified/object data is ok", "modify/object", action); 128 foundLs3 = true; 129 } 130 } 131 assertTrue("LineSegments found in output", foundLs1 && foundLs3); 132 133 assertEquals("Track found in output", 1, tracks.size()); 134 assertEquals("Attribute action on modifiedProperty data is ok", "modify/property", tracks.get(0).getAttributeValue("action")); 135 } 81 136 82 137 … … 85 140 protected void setUp() throws Exception { 86 141 super.setUp(); 142 87 143 // create some data 88 ds = DataSetTestCaseHelper.createCommon(); 144 ds = new DataSet(); 145 n1 = DataSetTestCaseHelper.createNode(ds); 146 n2 = DataSetTestCaseHelper.createNode(ds); 147 n3 = DataSetTestCaseHelper.createNode(ds); 148 n4 = DataSetTestCaseHelper.createNode(ds); 149 n5 = DataSetTestCaseHelper.createNode(ds); 150 ls1 = DataSetTestCaseHelper.createLineSegment(ds, n1, n2); 151 ls2 = DataSetTestCaseHelper.createLineSegment(ds, n2, n3); 152 ls3 = DataSetTestCaseHelper.createLineSegment(ds, n4, n5); 153 t = DataSetTestCaseHelper.createTrack(ds, ls1, ls2); 154 89 155 reparse(); 90 156 } -
test/org/openstreetmap/josm/test/framework/DataSetTestCaseHelper.java
r52 r53 1 1 package org.openstreetmap.josm.test.framework; 2 3 import java.util.Arrays; 2 4 3 5 import org.openstreetmap.josm.data.GeoPoint; … … 33 35 LineSegment ls2 = createLineSegment(ds, n2, n3); 34 36 createLineSegment(ds, n4, n5); 37 createTrack(ds, ls1, ls2); 38 return ds; 39 } 40 41 public static Track createTrack(DataSet ds, LineSegment... lineSegments) { 35 42 Track t = new Track(); 36 t.segments.add(ls1); 37 t.segments.add(ls2); 43 t.segments.addAll(Arrays.asList(lineSegments)); 38 44 ds.tracks.add(t); 39 return ds;45 return t; 40 46 } 41 47
Note:
See TracChangeset
for help on using the changeset viewer.