/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.apache.lucene.queryparser.flexible.standard.nodes;

import org.apache.lucene.queryparser.flexible.core.QueryNodeException;
import org.apache.lucene.queryparser.flexible.standard.config.PointsConfig;

This query node represents a range query composed by PointQueryNode bounds, which means the bound values are Numbers.
See Also:
/** * This query node represents a range query composed by {@link PointQueryNode} * bounds, which means the bound values are {@link Number}s. * * @see PointQueryNode * @see AbstractRangeQueryNode */
public class PointRangeQueryNode extends AbstractRangeQueryNode<PointQueryNode> { public PointsConfig numericConfig;
Constructs a PointRangeQueryNode object using the given PointQueryNode as its bounds and PointsConfig.
Params:
  • lower – the lower bound
  • upper – the upper bound
  • lowerInclusive – true if the lower bound is inclusive, otherwise, false
  • upperInclusive – true if the upper bound is inclusive, otherwise, false
  • numericConfig – the PointsConfig that represents associated with the upper and lower bounds
See Also:
/** * Constructs a {@link PointRangeQueryNode} object using the given * {@link PointQueryNode} as its bounds and {@link PointsConfig}. * * @param lower the lower bound * @param upper the upper bound * @param lowerInclusive <code>true</code> if the lower bound is inclusive, otherwise, <code>false</code> * @param upperInclusive <code>true</code> if the upper bound is inclusive, otherwise, <code>false</code> * @param numericConfig the {@link PointsConfig} that represents associated with the upper and lower bounds * * @see #setBounds(PointQueryNode, PointQueryNode, boolean, boolean, PointsConfig) */
public PointRangeQueryNode(PointQueryNode lower, PointQueryNode upper, boolean lowerInclusive, boolean upperInclusive, PointsConfig numericConfig) throws QueryNodeException { setBounds(lower, upper, lowerInclusive, upperInclusive, numericConfig); }
Sets the upper and lower bounds of this range query node and the PointsConfig associated with these bounds.
Params:
  • lower – the lower bound
  • upper – the upper bound
  • lowerInclusive – true if the lower bound is inclusive, otherwise, false
  • upperInclusive – true if the upper bound is inclusive, otherwise, false
  • pointsConfig – the PointsConfig that represents associated with the upper and lower bounds
/** * Sets the upper and lower bounds of this range query node and the * {@link PointsConfig} associated with these bounds. * * @param lower the lower bound * @param upper the upper bound * @param lowerInclusive <code>true</code> if the lower bound is inclusive, otherwise, <code>false</code> * @param upperInclusive <code>true</code> if the upper bound is inclusive, otherwise, <code>false</code> * @param pointsConfig the {@link PointsConfig} that represents associated with the upper and lower bounds * */
public void setBounds(PointQueryNode lower, PointQueryNode upper, boolean lowerInclusive, boolean upperInclusive, PointsConfig pointsConfig) throws QueryNodeException { if (pointsConfig == null) { throw new IllegalArgumentException("pointsConfig must not be null!"); } Class<? extends Number> lowerNumberType, upperNumberType; if (lower != null && lower.getValue() != null) { lowerNumberType = lower.getValue().getClass(); } else { lowerNumberType = null; } if (upper != null && upper.getValue() != null) { upperNumberType = upper.getValue().getClass(); } else { upperNumberType = null; } if (lowerNumberType != null && !lowerNumberType.equals(pointsConfig.getType())) { throw new IllegalArgumentException( "lower value's type should be the same as numericConfig type: " + lowerNumberType + " != " + pointsConfig.getType()); } if (upperNumberType != null && !upperNumberType.equals(pointsConfig.getType())) { throw new IllegalArgumentException( "upper value's type should be the same as numericConfig type: " + upperNumberType + " != " + pointsConfig.getType()); } super.setBounds(lower, upper, lowerInclusive, upperInclusive); this.numericConfig = pointsConfig; }
Returns the PointsConfig associated with the lower and upper bounds.
Returns:the PointsConfig associated with the lower and upper bounds
/** * Returns the {@link PointsConfig} associated with the lower and upper bounds. * * @return the {@link PointsConfig} associated with the lower and upper bounds */
public PointsConfig getPointsConfig() { return this.numericConfig; } @Override public String toString() { StringBuilder sb = new StringBuilder(); sb.append("<pointRange lowerInclusive='"); sb.append(isLowerInclusive()); sb.append("' upperInclusive='"); sb.append(isUpperInclusive()); sb.append("' type='"); sb.append(numericConfig.getType().getSimpleName()); sb.append("'>\n"); sb.append(getLowerBound()).append('\n'); sb.append(getUpperBound()).append('\n'); sb.append("</pointRange>"); return sb.toString(); } }