Changeset 3274 in josm


Ignore:
Timestamp:
May 24, 2010 9:10:29 AM (3 years ago)
Author:
jttt
Message:

Fix consistency test (exception was throw in case of referrenced primitive not being in dataset)

File:
1 edited

Legend:

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

    r3083 r3274  
    3434 
    3535    public void checkReferrers() { 
     36        // It's also error when referred primitive's dataset is null but it's already covered by referredPrimitiveNotInDataset check 
    3637        for (Way way:dataSet.getWays()) { 
    3738            if (!way.isDeleted()) { 
    3839                for (Node n:way.getNodes()) { 
    39                     if (!n.getReferrers().contains(way)) { 
     40                    if (n.getDataSet() != null && !n.getReferrers().contains(way)) { 
    4041                        printError("WAY NOT IN REFERRERS", "%s is part of %s but is not in referrers", n, way); 
    4142                    } 
     
    4748            if (!relation.isDeleted()) { 
    4849                for (RelationMember m:relation.getMembers()) { 
    49                     if (!m.getMember().getReferrers().contains(relation)) { 
     50                    if (m.getMember().getDataSet() != null && !m.getMember().getReferrers().contains(relation)) { 
    5051                        printError("RELATION NOT IN REFERRERS", "%s is part of %s but is not in referrers", m.getMember(), relation); 
    5152                    } 
     
    9697 
    9798    private void checkReferredPrimitive(OsmPrimitive primitive, OsmPrimitive parent) { 
    98         if (dataSet.getPrimitiveById(primitive) == null) { 
     99        if (primitive.getDataSet() == null) { 
     100            printError("NO DATASET", "%s is referenced by %s but not found in dataset", primitive, parent); 
     101        } else if (dataSet.getPrimitiveById(primitive) == null) { 
    99102            printError("REFERENCED BUT NOT IN DATA", "%s is referenced by %s but not found in dataset", primitive, parent); 
    100         } 
    101         if (dataSet.getPrimitiveById(primitive) != primitive) { 
     103        } else  if (dataSet.getPrimitiveById(primitive) != primitive) { 
    102104            printError("DIFFERENT INSTANCE", "%s is different instance that referred by %s", primitive, parent); 
    103105        } 
     106 
    104107        if (primitive.isDeleted()) { 
    105108            printError("DELETED REFERENCED", "%s refers to deleted primitive %s", parent, primitive); 
     
    134137    public void runTest() { 
    135138        try { 
     139            referredPrimitiveNotInDataset(); 
    136140            checkReferrers(); 
    137141            checkCompleteWaysWithIncompleteNodes(); 
     
    139143            searchNodes(); 
    140144            searchWays(); 
    141             referredPrimitiveNotInDataset(); 
    142145            checkZeroNodesWays(); 
    143146            if (errorCount > MAX_ERRORS) { 
Note: See TracChangeset for help on using the changeset viewer.