Changeset 4532 in josm for trunk


Ignore:
Timestamp:
2011-10-20T14:32:44+02:00 (13 years ago)
Author:
Don-vip
Message:

see #6653 - Import <delete> primitives as deleted primitives

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

Legend:

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

    r4530 r4532  
    99
    1010import org.openstreetmap.josm.data.osm.DataSet;
     11import org.openstreetmap.josm.data.osm.OsmPrimitive;
    1112import org.openstreetmap.josm.gui.progress.ProgressMonitor;
    1213
     
    6162
    6263    private void parseDelete() throws XMLStreamException {
    63         // Do nothing. If the object has been deleted, do not load it to avoid consistency errors.
     64        parseCommon(true);
     65    }
     66
     67    private void parseModify() throws XMLStreamException {
    6468        parseCommon(false);
    6569    }
    6670
    67     private void parseModify() throws XMLStreamException {
    68         parseCommon(true);
     71    private void parseCreate() throws XMLStreamException {
     72        parseCommon(false);
    6973    }
    7074
    71     private void parseCreate() throws XMLStreamException {
    72         parseCommon(true);
    73     }
    74 
    75     private void parseCommon(boolean keepPrimitive) throws XMLStreamException {
     75    private void parseCommon(boolean deletePrimitive) throws XMLStreamException {
    7676        while (parser.hasNext()) {
    7777            int event = parser.next();
    7878            if (event == XMLStreamConstants.START_ELEMENT) {
     79                OsmPrimitive p = null;
    7980                if (parser.getLocalName().equals("node")) {
    80                     if (keepPrimitive) parseNode(); else doNothing();
     81                    p = parseNode();
    8182                } else if (parser.getLocalName().equals("way")) {
    82                     if (keepPrimitive) parseWay(); else doNothing();
     83                    p = parseWay();
    8384                } else if (parser.getLocalName().equals("relation")) {
    84                     if (keepPrimitive) parseRelation(); else doNothing();
     85                    p = parseRelation();
    8586                } else {
    8687                    parseUnknown();
     88                }
     89                if (p != null && deletePrimitive) {
     90                    p.setDeleted(true);
    8791                }
    8892            } else if (event == XMLStreamConstants.END_ELEMENT) {
     
    9094            }
    9195        }
    92     }
    93    
    94     private void doNothing() throws XMLStreamException {
    95         while (parser.hasNext() && parser.next() != XMLStreamConstants.END_ELEMENT);
    9696    }
    9797   
  • trunk/src/org/openstreetmap/josm/io/OsmReader.java

    r4530 r4532  
    156156    }
    157157
    158     protected void parseNode() throws XMLStreamException {
     158    protected Node parseNode() throws XMLStreamException {
    159159        NodeData nd = new NodeData();
    160160        nd.setCoor(new LatLon(Double.parseDouble(parser.getAttributeValue(null, "lat")), Double.parseDouble(parser.getAttributeValue(null, "lon"))));
     
    173173                }
    174174            } else if (event == XMLStreamConstants.END_ELEMENT) {
    175                 return;
    176             }
    177         }
    178     }
    179 
    180     protected void parseWay() throws XMLStreamException {
     175                return n;
     176            }
     177        }
     178    }
     179
     180    protected Way parseWay() throws XMLStreamException {
    181181        WayData wd = new WayData();
    182182        readCommon(wd);
     
    206206        }
    207207        ways.put(wd.getUniqueId(), nodeIds);
     208        return w;
    208209    }
    209210
     
    224225    }
    225226
    226     protected void parseRelation() throws XMLStreamException {
     227    protected Relation parseRelation() throws XMLStreamException {
    227228        RelationData rd = new RelationData();
    228229        readCommon(rd);
     
    252253        }
    253254        relations.put(rd.getUniqueId(), members);
     255        return r;
    254256    }
    255257
Note: See TracChangeset for help on using the changeset viewer.