Changeset 2683 in josm
- Timestamp:
- 2009-12-27T16:51:22+01:00 (15 years ago)
- Location:
- trunk/src/org/openstreetmap/josm
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/openstreetmap/josm/command/ChangeRelationMemberRoleCommand.java
r2611 r2683 50 50 51 51 oldRole = relation.getMember(position).getRole(); 52 if (newRole.equals(oldRole)) return true; 52 53 relation.setMember(position, new RelationMember(newRole, relation.getMember(position).getMember())); 53 54 … … 58 59 59 60 @Override public void undoCommand() { 60 relation.getMember(position).get Role().equals(oldRole);61 relation.setMember(position, new RelationMember(oldRole, relation.getMember(position).getMember())); 61 62 relation.setModified(oldModified); 62 63 } -
trunk/src/org/openstreetmap/josm/command/Command.java
r2512 r2683 92 92 public void undoCommand() { 93 93 for (Entry<OsmPrimitive, PrimitiveData> e : cloneMap.entrySet()) { 94 e.getKey().load(e.getValue()); 94 OsmPrimitive primitive = e.getKey(); 95 if (primitive.getDataSet() != null) { 96 e.getKey().load(e.getValue()); 97 } 95 98 } 96 99 } -
trunk/src/org/openstreetmap/josm/corrector/ReverseWayTagCorrector.java
r2676 r2683 5 5 6 6 import java.util.ArrayList; 7 import java.util.Arrays; 7 8 import java.util.Collection; 8 9 import java.util.HashMap; … … 68 69 }; 69 70 71 private static ArrayList<String> reversibleTags = new ArrayList<String>( 72 Arrays.asList(new String[] {"oneway", "incline"})); 73 70 74 public static boolean isReversible(Way way) { 71 ArrayList<OsmPrimitive> primitives = new ArrayList<OsmPrimitive>(); 72 primitives.add(way); 73 primitives.addAll(way.getNodes()); 74 75 for (OsmPrimitive primitive : primitives) { 76 for (String key : primitive.keySet()) { 77 if (key.equals("oneway")) return false; 78 for (PrefixSuffixSwitcher prefixSuffixSwitcher : prefixSuffixSwitchers) { 79 if (!key.equals(prefixSuffixSwitcher.apply(key))) return false; 80 } 75 for (String key : way.keySet()) { 76 if (reversibleTags.contains(key)) return false; 77 for (PrefixSuffixSwitcher prefixSuffixSwitcher : prefixSuffixSwitchers) { 78 if (!key.equals(prefixSuffixSwitcher.apply(key))) return false; 81 79 } 82 80 } … … 95 93 } 96 94 95 public String invertNumber(String value) { 96 Pattern pattern = Pattern.compile("^([+-]?)(\\d.*)$", Pattern.CASE_INSENSITIVE); 97 Matcher matcher = pattern.matcher(value); 98 if (!matcher.matches()) return value; 99 String sign = matcher.group(1); 100 String rest = matcher.group(2); 101 sign = sign.equals("-") ? "" : "-"; 102 return sign + rest; 103 } 104 97 105 @Override 98 106 public Collection<Command> execute(Way oldway, Way way) throws UserCancelException { … … 100 108 new HashMap<OsmPrimitive, List<TagCorrection>>(); 101 109 102 ArrayList<OsmPrimitive> primitives = new ArrayList<OsmPrimitive>(); 103 primitives.add(way); 104 primitives.addAll(way.getNodes()); 110 ArrayList<TagCorrection> tagCorrections = new ArrayList<TagCorrection>(); 111 for (String key : way.keySet()) { 112 String newKey = key; 113 String value = way.get(key); 114 String newValue = value; 105 115 106 for (OsmPrimitive primitive : primitives) { 107 tagCorrectionsMap.put(primitive, new ArrayList<TagCorrection>()); 108 109 for (String key : primitive.keySet()) { 110 String newKey = key; 111 String value = primitive.get(key); 112 String newValue = value; 113 114 if (key.equals("oneway")) { 115 if (OsmUtils.isReversed(value)) { 116 newValue = OsmUtils.trueval; 117 } else { 118 Boolean boolValue = OsmUtils.getOsmBoolean(value); 119 if (boolValue != null && boolValue.booleanValue()) { 120 newValue = OsmUtils.reverseval; 121 } 122 } 123 } else { 124 for (PrefixSuffixSwitcher prefixSuffixSwitcher : prefixSuffixSwitchers) { 125 newKey = prefixSuffixSwitcher.apply(key); 126 if (!key.equals(newKey)) { 127 break; 128 } 116 if (key.equals("oneway")) { 117 if (OsmUtils.isReversed(value)) { 118 newValue = OsmUtils.trueval; 119 } else if (OsmUtils.isTrue(value)) { 120 newValue = OsmUtils.reverseval; 121 } 122 } else if (key.equals("incline")) { 123 PrefixSuffixSwitcher switcher = new PrefixSuffixSwitcher("up", "down"); 124 newValue = switcher.apply(value); 125 if (newValue.equals(value)) { 126 newValue = invertNumber(value); 127 } 128 } else { 129 for (PrefixSuffixSwitcher prefixSuffixSwitcher : prefixSuffixSwitchers) { 130 newKey = prefixSuffixSwitcher.apply(key); 131 if (!key.equals(newKey)) { 132 break; 129 133 } 130 134 } 135 } 131 136 132 if (!key.equals(newKey) || !value.equals(newValue)) { 133 tagCorrectionsMap.get(primitive).add( 134 new TagCorrection(key, value, newKey, newValue)); 135 } 137 if (!key.equals(newKey) || !value.equals(newValue)) { 138 tagCorrections.add(new TagCorrection(key, value, newKey, newValue)); 136 139 } 140 } 141 if (!tagCorrections.isEmpty()) { 142 tagCorrectionsMap.put(way, tagCorrections); 137 143 } 138 144 139 145 Map<OsmPrimitive, List<RoleCorrection>> roleCorrectionMap = 140 146 new HashMap<OsmPrimitive, List<RoleCorrection>>(); 141 roleCorrection Map.put(way,new ArrayList<RoleCorrection>());147 ArrayList<RoleCorrection> roleCorrections = new ArrayList<RoleCorrection>(); 142 148 143 149 Collection<OsmPrimitive> referrers = oldway.getReferrers(); … … 166 172 167 173 if (found) { 168 roleCorrectionMap.get(way).add( 169 new RoleCorrection(relation, position, member, newRole)); 174 roleCorrections.add(new RoleCorrection(relation, position, member, newRole)); 170 175 } 171 176 172 177 position++; 173 178 } 179 } 180 if (!roleCorrections.isEmpty()) { 181 roleCorrectionMap.put(way, roleCorrections); 174 182 } 175 183 -
trunk/src/org/openstreetmap/josm/corrector/TagCorrector.java
r2676 r2683 50 50 String description) throws UserCancelException { 51 51 52 boolean hasCorrections = false; 53 for (List<TagCorrection> tagCorrectionList : tagCorrectionsMap.values()) { 54 if (!tagCorrectionList.isEmpty()) { 55 hasCorrections = true; 56 break; 57 } 58 } 59 60 if (!hasCorrections) { 61 for (List<RoleCorrection> roleCorrectionList : roleCorrectionMap 62 .values()) { 63 if (!roleCorrectionList.isEmpty()) { 64 hasCorrections = true; 65 break; 66 } 67 } 68 } 69 70 if (hasCorrections) { 52 if (!tagCorrectionsMap.isEmpty() || !roleCorrectionMap.isEmpty()) { 71 53 Collection<Command> commands = new ArrayList<Command>(); 72 54 Map<OsmPrimitive, TagCorrectionTable> tagTableMap = … … 74 56 Map<OsmPrimitive, RoleCorrectionTable> roleTableMap = 75 57 new HashMap<OsmPrimitive, RoleCorrectionTable>(); 76 77 //NameVisitor nameVisitor = new NameVisitor();78 58 79 59 final JPanel p = new JPanel(new GridBagLayout()); -
trunk/src/org/openstreetmap/josm/data/osm/OsmUtils.java
r2573 r2683 35 35 return REVERSE_VALUES.contains(value); 36 36 } 37 38 public static boolean isTrue(String value) { 39 return TRUE_VALUES.contains(value); 40 } 41 42 public static boolean isFalse(String value) { 43 return FALSE_VALUES.contains(value); 44 } 37 45 }
Note:
See TracChangeset
for help on using the changeset viewer.