Ticket #17440: 17440.patch
| File 17440.patch, 7.6 KB (added by , 7 years ago) |
|---|
-
src/org/openstreetmap/josm/data/osm/AbstractPrimitive.java
233 233 234 234 @Override 235 235 public long getId() { 236 long id = this.id;237 236 return id >= 0 ? id : 0; 238 237 } 239 238 … … 469 468 470 469 @Override 471 470 public void visitKeys(KeyValueVisitor visitor) { 472 final String[] keys = this.keys;473 471 if (keys != null) { 474 472 for (int i = 0; i < keys.length; i += 2) { 475 473 visitor.visitKeyValue(this, keys[i], keys[i + 1]); … … 639 637 */ 640 638 @Override 641 639 public final String get(String key) { 642 String[] keys = this.keys;643 640 if (key == null) 644 641 return null; 645 642 if (keys == null) … … 656 653 * @return The value for a key that matches the given key ignoring case. 657 654 */ 658 655 public final String getIgnoreCase(String key) { 659 String[] keys = this.keys;660 656 if (key == null) 661 657 return null; 662 658 if (keys == null) … … 669 665 670 666 @Override 671 667 public final int getNumKeys() { 672 String[] keys = this.keys;673 668 return keys == null ? 0 : keys.length / 2; 674 669 } 675 670 676 671 @Override 677 672 public final Collection<String> keySet() { 678 final String[] keys = this.keys;679 673 if (keys == null) { 680 674 return Collections.emptySet(); 681 675 } … … 844 838 @Override 845 839 public Map<String, String> getInterestingTags() { 846 840 Map<String, String> result = new HashMap<>(); 847 String[] keys = this.keys;848 841 if (keys != null) { 849 842 for (int i = 0; i < keys.length; i += 2) { 850 843 if (!isUninterestingKey(keys[i])) { -
src/org/openstreetmap/josm/data/osm/OsmPrimitive.java
816 816 return Stream.empty(); 817 817 } 818 818 checkDataset(); 819 final Object referrers = this.referrers;820 819 if (referrers == null) { 821 820 return Stream.empty(); 822 821 } … … 894 893 protected final boolean isNodeReferredByWays(int n) { 895 894 // Count only referrers that are members of the same dataset (primitive can have some fake references, for example 896 895 // when way is cloned 897 Object referrers = this.referrers;898 896 if (referrers == null) return false; 899 897 checkDataset(); 900 898 if (referrers instanceof OsmPrimitive) -
src/org/openstreetmap/josm/data/osm/Relation.java
463 463 private void checkMembers() { 464 464 DataSet dataSet = getDataSet(); 465 465 if (dataSet != null) { 466 RelationMember[] members = this.members;467 466 for (RelationMember rm: members) { 468 467 if (rm.getMember().getDataSet() != dataSet) 469 468 throw new DataIntegrityProblemException( … … 493 492 494 493 @Override 495 494 public boolean hasIncompleteMembers() { 496 RelationMember[] members = this.members;497 495 for (RelationMember rm: members) { 498 496 if (rm.getMember().isIncomplete()) return true; 499 497 } … … 508 506 @Override 509 507 public Collection<OsmPrimitive> getIncompleteMembers() { 510 508 Set<OsmPrimitive> ret = new HashSet<>(); 511 RelationMember[] members = this.members;512 509 for (RelationMember rm: members) { 513 510 if (!rm.getMember().isIncomplete()) { 514 511 continue; -
src/org/openstreetmap/josm/data/osm/TagMap.java
175 175 176 176 @Override 177 177 public String get(Object key) { 178 String[] tags = this.tags;179 178 int index = indexOfKey(tags, key); 180 179 return index < 0 ? null : tags[index + 1]; 181 180 } … … 182 181 183 182 @Override 184 183 public boolean containsValue(Object value) { 185 String[] tags = this.tags;186 184 for (int i = 1; i < tags.length; i += 2) { 187 185 if (value.equals(tags[i])) { 188 186 return true; -
src/org/openstreetmap/josm/data/osm/Way.java
119 119 public boolean containsNode(Node node) { 120 120 if (node == null) return false; 121 121 122 Node[] nodes = this.nodes;123 122 for (Node n : nodes) { 124 123 if (n.equals(node)) 125 124 return true; … … 139 138 140 139 if (node == null) return neigh; 141 140 142 Node[] nodes = this.nodes;143 141 for (int i = 0; i < nodes.length; i++) { 144 142 if (nodes[i].equals(node)) { 145 143 if (i > 0) … … 163 161 List<Pair<Node, Node>> chunkSet = new ArrayList<>(); 164 162 if (isIncomplete()) return chunkSet; 165 163 Node lastN = null; 166 Node[] nodes = this.nodes;167 164 for (Node n : nodes) { 168 165 if (lastN == null) { 169 166 lastN = n; … … 465 462 public boolean isClosed() { 466 463 if (isIncomplete()) return false; 467 464 468 Node[] nodes = this.nodes;469 465 return nodes.length >= 3 && nodes[nodes.length-1] == nodes[0]; 470 466 } 471 467 … … 491 487 492 488 @Override 493 489 public Node lastNode() { 494 Node[] nodes = this.nodes;495 490 if (isIncomplete() || nodes.length == 0) return null; 496 491 return nodes[nodes.length-1]; 497 492 } … … 498 493 499 494 @Override 500 495 public Node firstNode() { 501 Node[] nodes = this.nodes;502 496 if (isIncomplete() || nodes.length == 0) return null; 503 497 return nodes[0]; 504 498 } … … 505 499 506 500 @Override 507 501 public boolean isFirstLastNode(INode n) { 508 Node[] nodes = this.nodes;509 502 if (isIncomplete() || nodes.length == 0) return false; 510 503 return n == nodes[0] || n == nodes[nodes.length -1]; 511 504 } … … 512 505 513 506 @Override 514 507 public boolean isInnerNode(INode n) { 515 Node[] nodes = this.nodes;516 508 if (isIncomplete() || nodes.length <= 2) return false; 517 509 /* circular ways have only inner nodes, so return true for them! */ 518 510 if (n == nodes[0] && n == nodes[nodes.length-1]) return true; … … 535 527 private void checkNodes() { 536 528 DataSet dataSet = getDataSet(); 537 529 if (dataSet != null) { 538 Node[] nodes = this.nodes;539 530 for (Node n: nodes) { 540 531 if (n.getDataSet() != dataSet) 541 532 throw new DataIntegrityProblemException("Nodes in way must be in the same dataset", … … 597 588 * @since 2587 598 589 */ 599 590 public boolean hasIncompleteNodes() { 600 Node[] nodes = this.nodes;601 591 for (Node node : nodes) { 602 592 if (node.isIncomplete()) 603 593 return true; … … 611 601 * @since 13033 612 602 */ 613 603 public boolean hasOnlyLocatableNodes() { 614 Node[] nodes = this.nodes;615 604 for (Node node : nodes) { 616 605 if (!node.isLatLonKnown()) 617 606 return false;
