/** * Copyright (c) 2000-present Liferay, Inc. All rights reserved. * * This library is free software; you can redistribute it and/or modify it under * the terms of the GNU Lesser General Public License as published by the Free * Software Foundation; either version 2.1 of the License, or (at your option) * any later version. * * This library is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more * details. */ package com.liferay.portal.kernel.search.filter; import com.liferay.portal.kernel.util.StringBundler; import com.liferay.portal.kernel.util.StringPool; /** * @author Michael C. Han */ public class RangeTermFilter extends BaseFilter { public RangeTermFilter( String field, boolean includesLower, boolean includesUpper) { _field = field; _includesLower = includesLower; _includesUpper = includesUpper; setOperators(includesLower, includesUpper); } public RangeTermFilter( String field, boolean includesLower, boolean includesUpper, String lowerBound, String upperBound) { _field = field; _includesLower = includesLower; _includesUpper = includesUpper; _lowerBound = lowerBound; _upperBound = upperBound; setOperators(includesLower, includesUpper); } @Override public <T> T accept(FilterVisitor<T> filterVisitor) { return filterVisitor.visit(this); } public String getField() { return _field; } public String getLowerBound() { return _lowerBound; } public Operator getLowerBoundOperator() { return _lowerBoundOperator; } @Override public int getSortOrder() { return 20; } public String getUpperBound() { return _upperBound; } public Operator getUpperBoundOperator() { return _upperBoundOperator; } public boolean isIncludesLower() { return _includesLower; } public boolean isIncludesUpper() { return _includesUpper; } public void setLowerBound(String lowerBound) { _lowerBound = lowerBound; } public void setUpperBound(String upperBound) { _upperBound = upperBound; } @Override public String toString() { StringBundler sb = new StringBundler(9); sb.append("{("); sb.append(_lowerBound); sb.append(_lowerBoundOperator); sb.append(_field); sb.append(_upperBoundOperator); sb.append(_upperBound); sb.append("), "); sb.append(super.toString()); sb.append("}"); return sb.toString(); } public enum Operator { GT, GTE, LT, LTE; @Override public String toString() { String name = name(); if (name.equals(GT.name())) { return StringPool.GREATER_THAN; } else if (name.equals(GTE.name())) { return StringPool.GREATER_THAN_OR_EQUAL; } else if (name.equals(LT.name())) { return StringPool.LESS_THAN; } else if (name.equals(LTE.name())) { return StringPool.GREATER_THAN_OR_EQUAL; } return StringPool.BLANK; } } protected void setOperators(boolean includesLower, boolean includesUpper) { if (includesLower) { _lowerBoundOperator = Operator.GTE; } else { _lowerBoundOperator = Operator.GT; } if (includesUpper) { _upperBoundOperator = Operator.LTE; } else { _upperBoundOperator = Operator.LT; } } private final String _field; private final boolean _includesLower; private final boolean _includesUpper; private String _lowerBound; private Operator _lowerBoundOperator; private String _upperBound; private Operator _upperBoundOperator; }