Ticket #7577: fix_7577.patch

File fix_7577.patch, 6.0 KB (added by joshdoe, 8 years ago)
  • src/org/openstreetmap/josm/actions/search/SearchCompiler.java

     
    104104
    105105        @Override
    106106        public Match get(String keyword, PushbackTokenizer tokenizer) throws ParseError {
    107             if ("id".equals(keyword))
    108                 return new Id(tokenizer);
    109             else if ("version".equals(keyword))
    110                 return new Version(tokenizer);
    111             else if ("changeset".equals(keyword))
    112                 return new ChangesetId(tokenizer);
    113             else if ("nodes".equals(keyword))
    114                 return new NodeCountRange(tokenizer);
    115             else if ("tags".equals(keyword))
    116                 return new TagCountRange(tokenizer);
    117             else if ("areasize".equals(keyword))
    118                 return new AreaSize(tokenizer);
    119             else if ("modified".equals(keyword))
    120                 return new Modified();
    121             else if ("selected".equals(keyword))
    122                 return new Selected();
    123             else if ("incomplete".equals(keyword))
    124                 return new Incomplete();
    125             else if ("untagged".equals(keyword))
    126                 return new Untagged();
    127             else if ("closed".equals(keyword))
    128                 return new Closed();
    129             else if ("new".equals(keyword))
    130                 return new New();
    131             else if ("indownloadedarea".equals(keyword))
    132                 return new InDataSourceArea(false);
    133             else if ("allindownloadedarea".equals(keyword))
    134                 return new InDataSourceArea(true);
    135             else if ("inview".equals(keyword))
    136                 return new InView(false);
    137             else if ("allinview".equals(keyword))
    138                 return new InView(true);
    139             else if ("timestamp".equals(keyword)) {
    140                 String rangeS = " " + tokenizer.readTextOrNumber() + " "; // add leading/trailing space in order to get expected split (e.g. "a--" => {"a", ""})
    141                 String[] rangeA = rangeS.split("/");
    142                 if (rangeA.length == 1)
    143                     return new KeyValue(keyword, rangeS.trim(), regexSearch, caseSensitive);
    144                 else if (rangeA.length == 2) {
    145                     String rangeA1 = rangeA[0].trim();
    146                     String rangeA2 = rangeA[1].trim();
    147                     long minDate = DateUtils.fromString(rangeA1.isEmpty() ? "1980" : rangeA1).getTime(); // if min timestap is empty: use lowest possible date
    148                     long maxDate = rangeA2.isEmpty() ? new Date().getTime() : DateUtils.fromString(rangeA2).getTime(); // if max timestamp is empty: use "now"
    149                     return new TimestampRange(minDate, maxDate);
    150                 } else
    151                     /*
     107            if (tokenizer != null) {
     108                if ("id".equals(keyword))
     109                    return new Id(tokenizer);
     110                else if ("version".equals(keyword))
     111                    return new Version(tokenizer);
     112                else if ("changeset".equals(keyword))
     113                    return new ChangesetId(tokenizer);
     114                else if ("nodes".equals(keyword))
     115                    return new NodeCountRange(tokenizer);
     116                else if ("tags".equals(keyword))
     117                    return new TagCountRange(tokenizer);
     118                else if ("areasize".equals(keyword))
     119                    return new AreaSize(tokenizer);
     120                else if ("timestamp".equals(keyword)) {
     121                    String rangeS = " " + tokenizer.readTextOrNumber() + " "; // add leading/trailing space in order to get expected split (e.g. "a--" => {"a", ""})
     122                    String[] rangeA = rangeS.split("/");
     123                    if (rangeA.length == 1) {
     124                        return new KeyValue(keyword, rangeS.trim(), regexSearch, caseSensitive);
     125                    } else if (rangeA.length == 2) {
     126                        String rangeA1 = rangeA[0].trim();
     127                        String rangeA2 = rangeA[1].trim();
     128                        long minDate = DateUtils.fromString(rangeA1.isEmpty() ? "1980" : rangeA1).getTime(); // if min timestap is empty: use lowest possible date
     129                        long maxDate = rangeA2.isEmpty() ? new Date().getTime() : DateUtils.fromString(rangeA2).getTime(); // if max timestamp is empty: use "now"
     130                        return new TimestampRange(minDate, maxDate);
     131                    } else /*
    152132                     * I18n: Don't translate timestamp keyword
    153                      */ throw new ParseError(tr("Expecting <i>min</i>/<i>max</i> after ''timestamp''"));
    154             } else
    155                 return null;
     133                     */ {
     134                        throw new ParseError(tr("Expecting <i>min</i>/<i>max</i> after ''timestamp''"));
     135                    }
     136                }
     137            }
     138            else {
     139                if ("modified".equals(keyword))
     140                    return new Modified();
     141                else if ("selected".equals(keyword))
     142                    return new Selected();
     143                else if ("incomplete".equals(keyword))
     144                    return new Incomplete();
     145                else if ("untagged".equals(keyword))
     146                    return new Untagged();
     147                else if ("closed".equals(keyword))
     148                    return new Closed();
     149                else if ("new".equals(keyword))
     150                    return new New();
     151                else if ("indownloadedarea".equals(keyword))
     152                    return new InDataSourceArea(false);
     153                else if ("allindownloadedarea".equals(keyword))
     154                    return new InDataSourceArea(true);
     155                else if ("inview".equals(keyword))
     156                    return new InView(false);
     157                else if ("allinview".equals(keyword))
     158                    return new InView(true);
     159            }
     160            return null;
    156161        }
    157162
    158163        @Override