Ticket #2642: rolecorrection.diff
| File rolecorrection.diff, 4.4 KB (added by , 17 years ago) |
|---|
-
src/org/openstreetmap/josm/corrector/RoleCorrection.java
7 7 public class RoleCorrection implements Correction { 8 8 9 9 public final Relation relation; 10 public final int position; 10 11 public final RelationMember member; 11 12 public final String newRole; 12 13 13 public RoleCorrection(Relation relation, RelationMember member,14 String newRole) {14 public RoleCorrection(Relation relation, int position, 15 RelationMember member, String newRole) { 15 16 this.relation = relation; 17 this.position = position; 16 18 this.member = member; 17 19 this.newRole = newRole; 18 20 } -
src/org/openstreetmap/josm/corrector/ReverseWayTagCorrector.java
111 111 roleCorrectionMap.put(way, new ArrayList<RoleCorrection>()); 112 112 113 113 for (Relation relation : Main.ds.relations) { 114 int position = 0; 114 115 for (RelationMember member : relation.members) { 115 116 if (!member.member.realEqual(oldway, true) 116 || member.role.length() == 0) 117 || member.role.length() == 0) { 118 position++; 117 119 continue; 120 } 118 121 119 122 boolean found = false; 120 123 String newRole = null; … … 128 131 129 132 if (found) 130 133 roleCorrectionMap.get(way).add( 131 new RoleCorrection(relation, member, newRole)); 134 new RoleCorrection(relation, position, member, newRole)); 135 136 position++; 132 137 } 133 138 } 134 139 -
src/org/openstreetmap/josm/corrector/TagCorrector.java
167 167 for (OsmPrimitive primitive : roleCorrectionMap.keySet()) { 168 168 List<RoleCorrection> roleCorrections = roleCorrectionMap 169 169 .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)) { 179 182 member.role = roleCorrection.newRole; 180 commands.add(new ChangeCommand( 181 roleCorrection.relation, newRelation)); 183 changed = true; 184 } 185 } 182 186 } 187 if (changed) 188 commands.add(new ChangeCommand(relation, newRelation)); 183 189 } 184 190 } 185 191 } else if (answer != JOptionPane.NO_OPTION) {
