Ignore:
Timestamp:
2009-12-04T18:34:31+01:00 (11 years ago)
Author:
stoecker
Message:

applied #4068 - patch by mjulius - fix combine way and way reversing

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/corrector/ReverseWayTagCorrector.java

    r2381 r2573  
    6969    };
    7070
     71    public static boolean isReversible(Way way) {
     72        ArrayList<OsmPrimitive> primitives = new ArrayList<OsmPrimitive>();
     73        primitives.add(way);
     74        primitives.addAll(way.getNodes());
     75
     76        for  (OsmPrimitive primitive : primitives) {
     77            for (String key : primitive.keySet()) {
     78                if (key.equals("oneway")) return false;
     79                for (PrefixSuffixSwitcher prefixSuffixSwitcher : prefixSuffixSwitchers) {
     80                    if (!key.equals(prefixSuffixSwitcher.apply(key))) return false;
     81                }
     82            }
     83        }
     84
     85        return true;
     86    }
     87
     88    public static List<Way> irreversibleWays(List<Way> ways) {
     89        List<Way> newWays = new ArrayList<Way>(ways);
     90        for (Way way : ways) {
     91            if (isReversible(way)) {
     92                newWays.remove(way);
     93            }
     94        }
     95        return newWays;
     96    }
     97
    7198    @Override
    7299    public Collection<Command> execute(Way oldway, Way way) throws UserCancelException {
    73100        Map<OsmPrimitive, List<TagCorrection>> tagCorrectionsMap =
    74                 new HashMap<OsmPrimitive, List<TagCorrection>>();
     101            new HashMap<OsmPrimitive, List<TagCorrection>>();
    75102
    76103        ArrayList<OsmPrimitive> primitives = new ArrayList<OsmPrimitive>();
     
    87114
    88115                if (key.equals("oneway")) {
    89                     if (value.equals("-1")) {
     116                    if (OsmUtils.isReversed(value)) {
    90117                        newValue = OsmUtils.trueval;
    91118                    } else {
    92119                        Boolean boolValue = OsmUtils.getOsmBoolean(value);
    93120                        if (boolValue != null && boolValue.booleanValue()) {
    94                             newValue = "-1";
     121                            newValue = OsmUtils.reverseval;
    95122                        }
    96123                    }
     
    112139
    113140        Map<OsmPrimitive, List<RoleCorrection>> roleCorrectionMap =
    114                 new HashMap<OsmPrimitive, List<RoleCorrection>>();
     141            new HashMap<OsmPrimitive, List<RoleCorrection>>();
    115142        roleCorrectionMap.put(way, new ArrayList<RoleCorrection>());
    116143
Note: See TracChangeset for help on using the changeset viewer.