Example usage for org.apache.lucene.queryparser.flexible.core QueryNodeParseException QueryNodeParseException

List of usage examples for org.apache.lucene.queryparser.flexible.core QueryNodeParseException QueryNodeParseException

Introduction

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

Prototype

public QueryNodeParseException(Message message, Throwable throwable) 

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 w w w.  j  a  v a2  s  . co  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  ww  w . ja v a2s  .c  o 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 ww .j a va  2 s .c om

            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;// ww w .j a v a 2  s  .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);
            }

            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;
}