Changeset 3274 in josm for trunk/src/org/openstreetmap


Ignore:
Timestamp:
2010-05-24T09:10:29+02:00 (14 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.