Ticket #2132: AddNodeRangeSearch.patch
| File AddNodeRangeSearch.patch, 2.0 KB (added by , 17 years ago) |
|---|
-
src/org/openstreetmap/josm/actions/search/SearchCompiler.java
270 270 } 271 271 @Override public String toString() {return "nodes="+count;} 272 272 } 273 274 private static class NodeCountRange extends Match { 275 private int minCount; 276 private int maxCount; 277 public NodeCountRange(int minCount, int maxCount) { 278 if(maxCount < minCount) { 279 this.minCount = maxCount; 280 this.maxCount = minCount; 281 } else { 282 this.minCount = minCount; 283 this.maxCount = maxCount; 284 } 285 } 286 @Override public boolean match(OsmPrimitive osm) { 287 if(!(osm instanceof Way)) return false; 288 int size = ((Way)osm).nodes.size(); 289 return (size >= minCount) && (size <= maxCount); 290 } 291 @Override public String toString() {return "nodes="+minCount+"-"+maxCount;} 292 } 273 293 274 294 private static class Modified extends Match { 275 295 @Override public boolean match(OsmPrimitive osm) { … … 397 417 } else if (key.equals("user")) { 398 418 return new UserMatch(value); 399 419 } else if (key.equals("nodes")) { 400 return new NodeCount(Integer.parseInt(value)); 420 try { 421 return new NodeCount(Integer.parseInt(value)); 422 } catch(Exception x) {} 423 424 try { 425 String[] range = value.split("-", 2); 426 return new NodeCountRange(Integer.parseInt(range[0]), Integer.parseInt(range[1])); 427 } catch(Exception x) {} 428 429 return new NodeCount(0); 401 430 } else if (key.equals("id")) { 402 431 try { 403 432 return new Id(Long.parseLong(value));
