Changeset 3432 in josm for trunk/src/org


Ignore:
Timestamp:
2010-08-13T22:37:52+02:00 (14 years ago)
Author:
bastiK
Message:

added a view consistency test - might be too strict, let's see.
removed unused method

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/data/osm/DataSet.java

    r3431 r3432  
    244244
    245245            primitive.updatePosition(); // Set cached bbox for way and relation (required for reindexWay and reinexRelation to work properly)
     246            boolean success = false;
    246247            if (primitive instanceof Node) {
    247                 nodes.add((Node) primitive);
     248                success = nodes.add((Node) primitive);
    248249            } else if (primitive instanceof Way) {
    249                 ways.add((Way) primitive);
     250                success = ways.add((Way) primitive);
    250251            } else if (primitive instanceof Relation) {
    251                 relations.add((Relation) primitive);
    252             }
     252                success = relations.add((Relation) primitive);
     253            }
     254            if (!success)
     255                throw new RuntimeException("failed to add primitive: "+primitive);
    253256            allPrimitives.add(primitive);
    254257            primitive.setDataset(this);
    255258            firePrimitivesAdded(Collections.singletonList(primitive), false);
    256         } finally {
    257             endUpdate();
    258         }
    259     }
    260 
    261     public OsmPrimitive addPrimitive(PrimitiveData data) {
    262         beginUpdate();
    263         try {
    264             OsmPrimitive result;
    265             if (data instanceof NodeData) {
    266                 result = new Node();
    267             } else if (data instanceof WayData) {
    268                 result = new Way();
    269             } else if (data instanceof RelationData) {
    270                 result = new Relation();
    271             } else
    272                 throw new AssertionError();
    273             result.setDataset(this);
    274             result.load(data);
    275             addPrimitive(result);
    276             return result;
    277259        } finally {
    278260            endUpdate();
     
    295277            if (primitive == null)
    296278                return;
     279            boolean success = false;
    297280            if (primitive instanceof Node) {
    298                 nodes.remove(primitive);
     281                success = nodes.remove((Node) primitive);
    299282            } else if (primitive instanceof Way) {
    300                 ways.remove(primitive);
     283                success = ways.remove((Way) primitive);
    301284            } else if (primitive instanceof Relation) {
    302                 relations.remove(primitive);
    303             }
     285                success = relations.remove((Relation) primitive);
     286            }
     287            if (!success)
     288                throw new RuntimeException("failed to remove primitive: "+primitive);
    304289            synchronized (selectionLock) {
    305290                selectedPrimitives.remove(primitive);
     
    722707
    723708    /**
    724      * removes all references from from other primitives to the
     709     * removes all references from other primitives to the
    725710     * referenced primitive
    726711     *
     
    762747
    763748    private void reindexNode(Node node, LatLon newCoor, EastNorth eastNorth) {
    764         nodes.remove(node);
     749        if (!nodes.remove(node))
     750            throw new RuntimeException("Reindexing node failed to remove");
    765751        node.setCoorInternal(newCoor, eastNorth);
    766         nodes.add(node);
     752        if (!nodes.add(node))
     753            throw new RuntimeException("Reindexing node failed to add");
    767754        for (OsmPrimitive primitive: node.getReferrers()) {
    768755            if (primitive instanceof Way) {
     
    776763    private void reindexWay(Way way) {
    777764        BBox before = way.getBBox();
    778         ways.remove(way);
     765        if (!ways.remove(way))
     766            throw new RuntimeException("Reindexing way failed to remove");
    779767        way.updatePosition();
    780         ways.add(way);
     768        if (!ways.add(way))
     769            throw new RuntimeException("Reindexing way failed to add");
    781770        if (!way.getBBox().equals(before)) {
    782771            for (OsmPrimitive primitive: way.getReferrers()) {
Note: See TracChangeset for help on using the changeset viewer.