Ignore:
Timestamp:
2012-07-15T16:34:27+02:00 (14 years ago)
Author:
Don-vip
Message:

fix #7857 - Mark osmChange primitives inside <modify> block as modified + allow to load remote .osc files

File:
1 edited

Legend:

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

    r5266 r5345  
    44
    55import java.io.InputStream;
     6import java.util.Arrays;
    67
    78import javax.xml.stream.XMLStreamConstants;
     
    1415public class OsmChangeReader extends OsmReader {
    1516
     17    public static final String[] ACTIONS = {"create", "modify", "delete"};
     18   
    1619    /**
    1720     * constructor (for private and subclasses use only)
     
    4649            int event = parser.next();
    4750            if (event == XMLStreamConstants.START_ELEMENT) {
    48                 if (parser.getLocalName().equals("create")) {
    49                     parseCreate();
    50                 } else if (parser.getLocalName().equals("modify")) {
    51                     parseModify();
    52                 } else if (parser.getLocalName().equals("delete")) {
    53                     parseDelete();
     51                if (Arrays.asList(ACTIONS).contains(parser.getLocalName())) {
     52                    parseCommon(parser.getLocalName());
    5453                } else {
    5554                    parseUnknown();
     
    6160    }
    6261
    63     private void parseDelete() throws XMLStreamException {
    64         parseCommon(true);
    65     }
    66 
    67     private void parseModify() throws XMLStreamException {
    68         parseCommon(false);
    69     }
    70 
    71     private void parseCreate() throws XMLStreamException {
    72         parseCommon(false);
    73     }
    74 
    75     private void parseCommon(boolean deletePrimitive) throws XMLStreamException {
     62    private void parseCommon(String action) throws XMLStreamException {
    7663        while (parser.hasNext()) {
    7764            int event = parser.next();
     
    8774                    parseUnknown();
    8875                }
    89                 if (p != null && deletePrimitive) {
    90                     p.setDeleted(true);
     76                if (p != null && action != null) {
     77                    if (action.equals("modify")) {
     78                        p.setModified(true);
     79                    } else if (action.equals("delete")) {
     80                        p.setDeleted(true);
     81                    }
    9182                }
    9283            } else if (event == XMLStreamConstants.END_ELEMENT) {
Note: See TracChangeset for help on using the changeset viewer.