Changeset 1614 in josm


Ignore:
Timestamp:
2009-05-23T21:54:50+02:00 (16 years ago)
Author:
stoecker
Message:

fix #2642 - patch by Teemu Koskinen - TagCorrector didn't work properly when a way has multiple roles in one relation

Location:
trunk/src/org/openstreetmap/josm/corrector
Files:
3 edited

Legend:

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

    r1613 r1614  
    112112
    113113        for (Relation relation : Main.ds.relations) {
     114            int position = 0;
    114115            for (RelationMember member : relation.members) {
    115116                if (!member.member.realEqual(oldway, true)
    116                         || member.role.length() == 0)
     117                        || member.role.length() == 0) {
     118                    position++;
    117119                    continue;
     120                }
    118121
    119122                boolean found = false;
     
    129132                if (found)
    130133                    roleCorrectionMap.get(way).add(
    131                             new RoleCorrection(relation, member, newRole));
     134                            new RoleCorrection(relation, position, member, newRole));
     135
     136                position++;
    132137            }
    133138        }
  • trunk/src/org/openstreetmap/josm/corrector/RoleCorrection.java

    r1001 r1614  
    88
    99    public final Relation relation;
     10    public final int position;
    1011    public final RelationMember member;
    1112    public final String newRole;
    1213
    13     public RoleCorrection(Relation relation, RelationMember member,
    14             String newRole) {
     14    public RoleCorrection(Relation relation, int position,
     15                          RelationMember member, String newRole) {
    1516        this.relation = relation;
     17        this.position = position;
    1618        this.member = member;
    1719        this.newRole = newRole;
  • trunk/src/org/openstreetmap/josm/corrector/TagCorrector.java

    r1613 r1614  
    168168                    List<RoleCorrection> roleCorrections = roleCorrectionMap
    169169                            .get(primitive);
    170                     for (int i = 0; i < roleCorrections.size(); i++) {
    171                         if (roleTableMap.get(primitive)
    172                                 .getCorrectionTableModel().getApply(i)) {
    173                             RoleCorrection roleCorrection = roleCorrections
    174                                     .get(i);
    175                             Relation newRelation = new Relation(
    176                                     roleCorrection.relation);
    177                             for (RelationMember member : newRelation.members)
    178                                 if (member.equals(roleCorrection.member))
     170                    for (Relation relation : Main.ds.relations) {
     171                        Relation newRelation = new Relation(relation);
     172                        Boolean changed = false;
     173
     174                        for (int i = 0; i < roleCorrections.size(); i++) {
     175                            RoleCorrection roleCorrection = roleCorrections.get(i);
     176                            if (roleCorrection.relation == relation &&
     177                                    roleTableMap.get(primitive).getCorrectionTableModel().getApply(i)) {
     178
     179                                RelationMember member = newRelation.members.get(roleCorrection.position);
     180
     181                                if (member.equals(roleCorrection.member)) {
    179182                                    member.role = roleCorrection.newRole;
    180                             commands.add(new ChangeCommand(
    181                                     roleCorrection.relation, newRelation));
     183                                    changed = true;
     184                                }
     185                            }
    182186                        }
     187                        if (changed)
     188                            commands.add(new ChangeCommand(relation, newRelation));
    183189                    }
    184190                }
Note: See TracChangeset for help on using the changeset viewer.