Changeset 53 in josm for src/org


Ignore:
Timestamp:
2006-02-14T21:07:29+01:00 (20 years ago)
Author:
imi
Message:

fixed bug in osm writer/reader: they did not saved the modified state of an object.

Location:
src/org/openstreetmap/josm/io
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • src/org/openstreetmap/josm/io/OsmReader.java

    r47 r53  
    104104                for (Object o : e.getChildren()) {
    105105                        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);
    119109                }
    120110               
     
    201191                        }
    202192                }
     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;
    203203        }
    204204
  • src/org/openstreetmap/josm/io/OsmWriter.java

    r49 r53  
    6969                List<Element> list = root.getChildren();
    7070                properties = new LinkedList<Element>();
    71                 for (OsmPrimitive osm : ds.allNonDeletedPrimitives()) {
     71                for (OsmPrimitive osm : ds.allPrimitives()) {
    7272                        osm.visit(this);
    7373                        list.add(element);
    7474                }
    7575                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);
    8876
    8977                Document d = new Document(root);
     
    117105                        for (Entry<Key, String> entry : osm.keys.entrySet())
    118106                                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");
    119115        }
    120116
Note: See TracChangeset for help on using the changeset viewer.