001
014
015 package com.liferay.portal.kernel.search.filter;
016
017 import com.liferay.portal.kernel.util.StringBundler;
018 import com.liferay.portal.kernel.util.StringPool;
019
020
023 public class RangeTermFilter extends BaseFilter {
024
025 public RangeTermFilter(
026 String field, boolean includesLower, boolean includesUpper) {
027
028 _field = field;
029 _includesLower = includesLower;
030 _includesUpper = includesUpper;
031
032 setOperators(includesLower, includesUpper);
033 }
034
035 public RangeTermFilter(
036 String field, boolean includesLower, boolean includesUpper,
037 String lowerBound, String upperBound) {
038
039 _field = field;
040 _includesLower = includesLower;
041 _includesUpper = includesUpper;
042 _lowerBound = lowerBound;
043 _upperBound = upperBound;
044
045 setOperators(includesLower, includesUpper);
046 }
047
048 @Override
049 public <T> T accept(FilterVisitor<T> filterVisitor) {
050 return filterVisitor.visit(this);
051 }
052
053 public String getField() {
054 return _field;
055 }
056
057 public String getLowerBound() {
058 return _lowerBound;
059 }
060
061 public Operator getLowerBoundOperator() {
062 return _lowerBoundOperator;
063 }
064
065 @Override
066 public int getSortOrder() {
067 return 20;
068 }
069
070 public String getUpperBound() {
071 return _upperBound;
072 }
073
074 public Operator getUpperBoundOperator() {
075 return _upperBoundOperator;
076 }
077
078 public boolean isIncludesLower() {
079 return _includesLower;
080 }
081
082 public boolean isIncludesUpper() {
083 return _includesUpper;
084 }
085
086 public void setLowerBound(String lowerBound) {
087 _lowerBound = lowerBound;
088 }
089
090 public void setUpperBound(String upperBound) {
091 _upperBound = upperBound;
092 }
093
094 @Override
095 public String toString() {
096 StringBundler sb = new StringBundler(9);
097
098 sb.append("{(");
099 sb.append(_lowerBound);
100 sb.append(_lowerBoundOperator);
101 sb.append(_field);
102 sb.append(_upperBoundOperator);
103 sb.append(_upperBound);
104 sb.append("), ");
105 sb.append(super.toString());
106 sb.append("}");
107
108 return sb.toString();
109 }
110
111 public enum Operator {
112
113 GT, GTE, LT, LTE;
114
115 @Override
116 public String toString() {
117 String name = name();
118
119 if (name.equals(GT.name())) {
120 return StringPool.GREATER_THAN;
121 }
122 else if (name.equals(GTE.name())) {
123 return StringPool.GREATER_THAN_OR_EQUAL;
124 }
125 else if (name.equals(LT.name())) {
126 return StringPool.LESS_THAN;
127 }
128 else if (name.equals(LTE.name())) {
129 return StringPool.GREATER_THAN_OR_EQUAL;
130 }
131
132 return StringPool.BLANK;
133 }
134
135 }
136
137 protected void setOperators(boolean includesLower, boolean includesUpper) {
138 if (includesLower) {
139 _lowerBoundOperator = Operator.GTE;
140 }
141 else {
142 _lowerBoundOperator = Operator.GT;
143 }
144
145 if (includesUpper) {
146 _upperBoundOperator = Operator.LTE;
147 }
148 else {
149 _upperBoundOperator = Operator.LT;
150 }
151 }
152
153 private final String _field;
154 private final boolean _includesLower;
155 private final boolean _includesUpper;
156 private String _lowerBound;
157 private Operator _lowerBoundOperator;
158 private String _upperBound;
159 private Operator _upperBoundOperator;
160
161 }