Changeset 8838 in josm for trunk/src/org
- Timestamp:
- 2015-10-08T21:38:54+02:00 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/openstreetmap/josm/actions/search/SearchCompiler.java
r8836 r8838 33 33 import org.openstreetmap.josm.gui.mappaint.mapcss.parsergen.MapCSSParser; 34 34 import org.openstreetmap.josm.gui.mappaint.mapcss.parsergen.ParseException; 35 import org.openstreetmap.josm.tools.AlphanumComparator; 35 36 import org.openstreetmap.josm.tools.Geometry; 36 37 import org.openstreetmap.josm.tools.Predicate; … … 613 614 private final String key; 614 615 private final String referenceValue; 616 private final Double referenceNumber; 615 617 private final int compareMode; 618 private static final Pattern ISO8601 = Pattern.compile("\\d+-\\d+-\\d+"); 616 619 617 620 public ValueComparison(String key, String referenceValue, int compareMode) { 618 621 this.key = key; 619 622 this.referenceValue = referenceValue; 623 Double v = null; 624 try { 625 v = Double.parseDouble(referenceValue); 626 } catch (NumberFormatException ignore) { 627 } 628 this.referenceNumber = v; 620 629 this.compareMode = compareMode; 621 630 } … … 623 632 @Override 624 633 public boolean match(OsmPrimitive osm) { 625 int compareResult; 626 String currentValue = osm.get(key); 627 if (currentValue == null) return false; 628 try { 629 compareResult = Double.compare( 630 Double.parseDouble(currentValue), 631 Double.parseDouble(referenceValue) 632 ); 633 } catch (NumberFormatException ignore) { 634 compareResult = osm.get(key).compareTo(referenceValue); 634 final String currentValue = osm.get(key); 635 final int compareResult; 636 if (currentValue == null) { 637 return false; 638 } else if (ISO8601.matcher(currentValue).matches() || ISO8601.matcher(referenceValue).matches()) { 639 compareResult = currentValue.compareTo(referenceValue); 640 } else if (referenceNumber != null) { 641 try { 642 compareResult = Double.compare(Double.parseDouble(currentValue), referenceNumber); 643 } catch (NumberFormatException ignore) { 644 return false; 645 } 646 } else { 647 compareResult = AlphanumComparator.getInstance().compare(currentValue, referenceValue); 635 648 } 636 649 return compareMode < 0 ? compareResult < 0 : compareMode > 0 ? compareResult > 0 : compareResult == 0;
Note:
See TracChangeset
for help on using the changeset viewer.