Example usage for org.apache.lucene.queryparser.flexible.core.messages QueryParserMessages COULD_NOT_PARSE_NUMBER

List of usage examples for org.apache.lucene.queryparser.flexible.core.messages QueryParserMessages COULD_NOT_PARSE_NUMBER

Introduction

In this page you can find the example usage for org.apache.lucene.queryparser.flexible.core.messages QueryParserMessages COULD_NOT_PARSE_NUMBER.

Prototype

String COULD_NOT_PARSE_NUMBER

To view the source code for org.apache.lucene.queryparser.flexible.core.messages QueryParserMessages COULD_NOT_PARSE_NUMBER.

Click Source Link

Usage

From source file:com.sindicetech.siren.qparser.keyword.processors.NodeNumericQueryNodeProcessor.java

License:Open Source License

@Override
protected QueryNode postProcessNode(QueryNode node) throws QueryNodeException {

    if (node instanceof FieldQueryNode && !(node.getParent() instanceof RangeQueryNode)) {
        final FieldQueryNode fieldNode = (FieldQueryNode) node;

        String datatype = (String) DatatypeProcessor.getDatatype(this.getQueryConfigHandler(), node);
        final Map<String, Analyzer> dts = this.getQueryConfigHandler()
                .get(KeywordConfigurationKeys.DATATYPES_ANALYZERS);
        final Analyzer analyzer = dts.get(node.getTag(DatatypeQueryNode.DATATYPE_TAGID));

        if (analyzer instanceof NumericAnalyzer) {
            final NumericAnalyzer na = (NumericAnalyzer) analyzer;
            final char[] text = fieldNode.getTextAsString().toCharArray();
            final ReusableCharArrayReader textReader = new ReusableCharArrayReader(text);
            final Number number;
            try {
                number = na.getNumericParser().parse(textReader);
            } catch (final Exception e) {
                throw new QueryNodeParseException(
                        new MessageImpl(QueryParserMessages.COULD_NOT_PARSE_NUMBER, text), e);
            }//from  ww w  .  j a  va2 s .  c o  m

            final CharSequence field = fieldNode.getField();
            final NodeNumericQueryNode lowerNode = new NodeNumericQueryNode(field, number);
            // assign datatype
            lowerNode.setTag(DatatypeQueryNode.DATATYPE_TAGID, datatype);
            final NodeNumericQueryNode upperNode = new NodeNumericQueryNode(field, number);
            // assign datatype
            upperNode.setTag(DatatypeQueryNode.DATATYPE_TAGID, datatype);

            // Create the NodeNumericRangeQueryNode
            node = new NodeNumericRangeQueryNode(lowerNode, upperNode, true, true, na);
            // assign datatype
            node.setTag(DatatypeQueryNode.DATATYPE_TAGID, datatype);
        }
    }
    return node;
}

From source file:com.sindicetech.siren.qparser.keyword.processors.NodeNumericRangeQueryNodeProcessor.java

License:Open Source License

@Override
protected QueryNode postProcessNode(QueryNode node) throws QueryNodeException {
    if (node instanceof TermRangeQueryNode) {
        final TermRangeQueryNode termRangeNode = (TermRangeQueryNode) node;

        String datatype = (String) DatatypeProcessor.getDatatype(this.getQueryConfigHandler(), node);
        final Map<String, Analyzer> dts = this.getQueryConfigHandler()
                .get(KeywordConfigurationKeys.DATATYPES_ANALYZERS);
        final Analyzer analyzer = dts.get(datatype);

        if (analyzer instanceof NumericAnalyzer) {
            final NumericAnalyzer na = (NumericAnalyzer) analyzer;

            final FieldQueryNode lower = termRangeNode.getLowerBound();
            final FieldQueryNode upper = termRangeNode.getUpperBound();

            final char[] lowerText = lower.getTextAsString().toCharArray();
            final char[] upperText = upper.getTextAsString().toCharArray();

            // Parse the lower and upper bound
            final NumericParser<?> parser = na.getNumericParser();
            final Number lowerNumber;
            try {
                if (lowerText.length == 0) { // open bound
                    lowerNumber = null;//from w ww.j a  va2s .co  m
                } else {
                    final ReusableCharArrayReader lowerReader = new ReusableCharArrayReader(lowerText);
                    lowerNumber = parser.parse(lowerReader);
                }
            } catch (final Exception e) {
                throw new QueryNodeParseException(new MessageImpl(QueryParserMessages.COULD_NOT_PARSE_NUMBER,
                        lowerText, parser.getNumericType() + " parser"), e);
            }
            final Number upperNumber;
            try {
                if (upperText.length == 0) { // open bound
                    upperNumber = null;
                } else {
                    final ReusableCharArrayReader upperReader = new ReusableCharArrayReader(upperText);
                    upperNumber = parser.parse(upperReader);
                }
            } catch (final Exception e) {
                throw new QueryNodeParseException(new MessageImpl(QueryParserMessages.COULD_NOT_PARSE_NUMBER,
                        upperText, parser.getNumericType() + " parser"), e);
            }

            // Create two NodeNumericQueryNode for the lower and upper bound
            final CharSequence field = termRangeNode.getField();
            final NodeNumericQueryNode lowerNode = new NodeNumericQueryNode(field, lowerNumber);
            // assign datatype
            lowerNode.setTag(DatatypeQueryNode.DATATYPE_TAGID, datatype);
            final NodeNumericQueryNode upperNode = new NodeNumericQueryNode(field, upperNumber);
            // assign datatype
            upperNode.setTag(DatatypeQueryNode.DATATYPE_TAGID, datatype);

            final boolean lowerInclusive = termRangeNode.isLowerInclusive();
            final boolean upperInclusive = termRangeNode.isUpperInclusive();

            // Create the NodeNumericRangeQueryNode
            node = new NodeNumericRangeQueryNode(lowerNode, upperNode, lowerInclusive, upperInclusive, na);
            // assign datatype
            node.setTag(DatatypeQueryNode.DATATYPE_TAGID, datatype);
        }
    }
    return node;
}

From source file:org.sindice.siren.qparser.keyword.processors.NodeNumericQueryNodeProcessor.java

License:Apache License

@Override
protected QueryNode postProcessNode(final QueryNode node) throws QueryNodeException {

    if (node instanceof FieldQueryNode && !(node.getParent() instanceof RangeQueryNode)) {
        final FieldQueryNode fieldNode = (FieldQueryNode) node;

        final Map<String, Analyzer> dts = this.getQueryConfigHandler()
                .get(KeywordConfigurationKeys.DATATYPES_ANALYZERS);
        final Analyzer analyzer = dts.get(node.getTag(DatatypeQueryNode.DATATYPE_TAGID));

        if (analyzer instanceof NumericAnalyzer) {
            final NumericAnalyzer na = (NumericAnalyzer) analyzer;
            final char[] text = fieldNode.getTextAsString().toCharArray();
            final ReusableCharArrayReader textReader = new ReusableCharArrayReader(text);
            final Number number;
            try {
                number = na.getNumericParser().parse(textReader);
            } catch (final Exception e) {
                throw new QueryNodeParseException(
                        new MessageImpl(QueryParserMessages.COULD_NOT_PARSE_NUMBER, text), e);
            }/*from   w  w w  . j a  v a2  s .co m*/

            final CharSequence field = fieldNode.getField();
            final NodeNumericQueryNode lowerNode = new NodeNumericQueryNode(field, number);
            final NodeNumericQueryNode upperNode = new NodeNumericQueryNode(field, number);

            return new NodeNumericRangeQueryNode(lowerNode, upperNode, true, true, na);
        }
    }
    return node;

}

From source file:org.sindice.siren.qparser.keyword.processors.NodeNumericRangeQueryNodeProcessor.java

License:Apache License

@Override
protected QueryNode postProcessNode(final QueryNode node) throws QueryNodeException {
    if (node instanceof TermRangeQueryNode) {
        final TermRangeQueryNode termRangeNode = (TermRangeQueryNode) node;

        final Map<String, Analyzer> dts = this.getQueryConfigHandler()
                .get(KeywordConfigurationKeys.DATATYPES_ANALYZERS);
        final Analyzer analyzer = dts.get(node.getTag(DatatypeQueryNode.DATATYPE_TAGID));

        if (analyzer instanceof NumericAnalyzer) {
            final NumericAnalyzer na = (NumericAnalyzer) analyzer;

            final FieldQueryNode lower = termRangeNode.getLowerBound();
            final FieldQueryNode upper = termRangeNode.getUpperBound();

            final char[] lowerText = lower.getTextAsString().toCharArray();
            final char[] upperText = upper.getTextAsString().toCharArray();

            final NumericParser<?> parser = na.getNumericParser();
            final Number lowerNumber;
            try {
                if (lowerText.length == 0) { // open bound
                    lowerNumber = null;//from w w w.  j a  v a  2  s  .com
                } else {
                    final ReusableCharArrayReader lowerReader = new ReusableCharArrayReader(lowerText);
                    lowerNumber = parser.parse(lowerReader);
                }
            } catch (final Exception e) {
                throw new QueryNodeParseException(new MessageImpl(QueryParserMessages.COULD_NOT_PARSE_NUMBER,
                        lowerText, parser.getNumericType() + " parser"), e);
            }
            final Number upperNumber;
            try {
                if (upperText.length == 0) { // open bound
                    upperNumber = null;
                } else {
                    final ReusableCharArrayReader upperReader = new ReusableCharArrayReader(upperText);
                    upperNumber = parser.parse(upperReader);
                }
            } catch (final Exception e) {
                throw new QueryNodeParseException(new MessageImpl(QueryParserMessages.COULD_NOT_PARSE_NUMBER,
                        upperText, parser.getNumericType() + " parser"), e);
            }

            final CharSequence field = termRangeNode.getField();
            final NodeNumericQueryNode lowerNode = new NodeNumericQueryNode(field, lowerNumber);
            final NodeNumericQueryNode upperNode = new NodeNumericQueryNode(field, upperNumber);

            final boolean lowerInclusive = termRangeNode.isLowerInclusive();
            final boolean upperInclusive = termRangeNode.isUpperInclusive();

            return new NodeNumericRangeQueryNode(lowerNode, upperNode, lowerInclusive, upperInclusive, na);
        }
    }
    return node;
}