001    /*
002     * Copyright 2002-2004 the original author or authors.
003     *
004     * Licensed under the Apache License, Version 2.0 (the "License"); you may not
005     * use this file except in compliance with the License. You may obtain a copy of
006     * the License at
007     *
008     * http://www.apache.org/licenses/LICENSE-2.0
009     *
010     * Unless required by applicable law or agreed to in writing, software
011     * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
012     * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
013     * License for the specific language governing permissions and limitations under
014     * the License.
015     */
016    package org.springframework.rules.constraint;
017    
018    import java.util.Comparator;
019    import java.util.Set;
020    
021    import org.springframework.rules.closure.Closure;
022    import org.springframework.rules.constraint.Constraint;
023    import org.springframework.rules.closure.support.AlgorithmsAccessor;
024    import org.springframework.rules.closure.BinaryConstraint;
025    import org.springframework.rules.constraint.Like.LikeType;
026    import org.springframework.rules.constraint.property.PropertyConstraint;
027    import org.springframework.rules.factory.Constraints;
028    
029    /**
030     * A convenience constraints factory accessor for easy subclassing.
031     * 
032     * @author Keith Donald
033     */
034    public class ConstraintsAccessor extends AlgorithmsAccessor {
035    
036        protected Constraints getConstraints() {
037            return Constraints.instance();
038        }
039    
040        public Constraint bind(BinaryConstraint constraint, Object parameter) {
041            return getConstraints().bind(constraint, parameter);
042        }
043    
044        public Constraint bind(BinaryConstraint constraint, int parameter) {
045            return getConstraints().bind(constraint, parameter);
046        }
047    
048        public Constraint bind(BinaryConstraint constraint, float parameter) {
049            return getConstraints().bind(constraint, parameter);
050        }
051    
052        public Constraint bind(BinaryConstraint constraint, double parameter) {
053            return getConstraints().bind(constraint, parameter);
054        }
055    
056        public Constraint bind(BinaryConstraint constraint, boolean parameter) {
057            return getConstraints().bind(constraint, parameter);
058        }
059    
060        public Constraint testResultOf(Closure closure, Constraint constraint) {
061            return getConstraints().testResultOf(closure, constraint);
062        }
063    
064        public Constraint eq(Object value) {
065            return getConstraints().eq(value);
066        }
067    
068        public Constraint eq(int value) {
069            return getConstraints().eq(value);
070        }
071    
072        public Constraint eq(Object value, Comparator comparator) {
073            return getConstraints().eq(value, comparator);
074        }
075    
076        public Constraint gt(Comparable value) {
077            return getConstraints().gt(value);
078        }
079    
080        public Constraint gt(Object value, Comparator comparator) {
081            return getConstraints().gt(value, comparator);
082        }
083    
084        public Constraint gt(int value) {
085            return getConstraints().gt(value);
086        }
087    
088        public Constraint gt(long value) {
089            return getConstraints().gt(value);
090        }
091    
092        public Constraint gt(float value) {
093            return getConstraints().gt(value);
094        }
095    
096        public Constraint gt(double value) {
097            return getConstraints().gt(value);
098        }
099    
100        public Constraint gte(Comparable value) {
101            return getConstraints().gte(value);
102        }
103    
104        public Constraint gte(Object value, Comparator comparator) {
105            return getConstraints().gte(value, comparator);
106        }
107    
108        public Constraint gte(int value) {
109            return getConstraints().gte(value);
110        }
111    
112        public Constraint gte(long value) {
113            return getConstraints().gte(value);
114        }
115    
116        public Constraint gte(float value) {
117            return getConstraints().gte(value);
118        }
119    
120        public Constraint gte(double value) {
121            return getConstraints().gte(value);
122        }
123    
124        public Constraint lt(Comparable value) {
125            return getConstraints().lt(value);
126        }
127    
128        public Constraint lt(Comparable value, Comparator comparator) {
129            return getConstraints().lt(value, comparator);
130        }
131    
132        public Constraint lt(int value) {
133            return getConstraints().lt(value);
134        }
135    
136        public Constraint lt(long value) {
137            return getConstraints().lt(value);
138        }
139    
140        public Constraint lt(float value) {
141            return getConstraints().lt(value);
142        }
143    
144        public Constraint lt(double value) {
145            return getConstraints().lt(value);
146        }
147    
148        public Constraint lte(Comparable value) {
149            return getConstraints().lte(value);
150        }
151    
152        public Constraint lte(Object value, Comparator comparator) {
153            return getConstraints().lte(value, comparator);
154        }
155    
156        public Constraint lte(int value) {
157            return getConstraints().lte(value);
158        }
159    
160        public Constraint lte(long value) {
161            return getConstraints().lte(value);
162        }
163    
164        public Constraint lte(float value) {
165            return getConstraints().lte(value);
166        }
167    
168        public Constraint lte(double value) {
169            return getConstraints().lte(value);
170        }
171    
172        public Constraint range(Comparable min, Comparable max) {
173            return getConstraints().range(min, max);
174        }
175    
176        public Constraint range(Comparable min, Comparable max, boolean inclusive) {
177            return getConstraints().range(min, max, inclusive);
178        }
179    
180        public Constraint range(Object min, Object max, Comparator comparator) {
181            return getConstraints().range(min, max, comparator);
182        }
183    
184        public Constraint range(Object min, Object max, Comparator comparator, boolean inclusive) {
185            return getConstraints().range(min, max, comparator, inclusive);
186        }
187    
188        public Constraint range(int min, int max) {
189            return getConstraints().range(min, max);
190        }
191    
192        public Constraint range(long min, long max) {
193            return getConstraints().range(min, max);
194        }
195    
196        public Constraint range(float min, float max) {
197            return getConstraints().range(min, max);
198        }
199    
200        public Constraint present() {
201            return getConstraints().present();
202        }
203    
204        public PropertyConstraint present(String property) {
205            return getConstraints().present(property);
206        }
207    
208        public Constraint ifTrue(Constraint constraint, Constraint mustAlsoBeTrue) {
209            return getConstraints().ifTrue(constraint, mustAlsoBeTrue);
210        }
211    
212        public Constraint ifTrueElse(Constraint constraint, Constraint mustAlsoBeTrue, Constraint elseMustAlsoBeTrue) {
213            return getConstraints().ifTrue(constraint, mustAlsoBeTrue, elseMustAlsoBeTrue);
214        }
215    
216        public Constraint and(Constraint constraint1, Constraint constraint2) {
217            return getConstraints().and(constraint1, constraint2);
218        }
219    
220        public Constraint all(Constraint[] predicates) {
221            return getConstraints().all(predicates);
222        }
223    
224        public And conjunction() {
225            return getConstraints().conjunction();
226        }
227    
228        public Constraint or(Constraint constraint1, Constraint constraint2) {
229            return getConstraints().or(constraint1, constraint2);
230        }
231    
232        public Constraint any(Constraint[] constraints) {
233            return getConstraints().any(constraints);
234        }
235    
236        public Constraint not(Constraint constraint) {
237            return getConstraints().not(constraint);
238        }
239    
240        public Or disjunction() {
241            return getConstraints().disjunction();
242        }
243    
244        public Constraint inGroup(Set group) {
245            return getConstraints().inGroup(group);
246        }
247    
248        public Constraint inGroup(Object[] group) {
249            return getConstraints().inGroup(group);
250        }
251    
252        public PropertyConstraint inGroup(String propertyName, Object[] group) {
253            return getConstraints().inGroup(propertyName, group);
254        }
255    
256        public Constraint like(String encodedLikeString) {
257            return getConstraints().like(encodedLikeString);
258        }
259    
260        public PropertyConstraint like(String property, LikeType likeType, String value) {
261            return getConstraints().like(property, likeType, value);
262        }
263    
264        public Constraint required() {
265            return getConstraints().required();
266        }
267    
268        public PropertyConstraint required(String property) {
269            return getConstraints().required(property);
270        }
271    
272        public Constraint maxLength(int maxLength) {
273            return getConstraints().maxLength(maxLength);
274        }
275    
276        public Constraint minLength(int minLength) {
277            return getConstraints().minLength(minLength);
278        }
279    
280        public Constraint regexp(String regexp) {
281            return getConstraints().regexp(regexp);
282        }
283    
284        public Constraint regexp(String regexp, String constraintType) {
285            return getConstraints().regexp(regexp, constraintType);
286        }
287    
288        public Constraint method(Object target, String methodName, String constraintType) {
289            return getConstraints().method(target, methodName, constraintType);
290        }
291    
292        public PropertyConstraint value(String propertyName, Constraint valueConstraint) {
293            return getConstraints().value(propertyName, valueConstraint);
294        }
295    
296        public PropertyConstraint all(String propertyName, Constraint[] constraints) {
297            return getConstraints().all(propertyName, constraints);
298        }
299    
300        public PropertyConstraint any(String propertyName, Constraint[] constraints) {
301            return getConstraints().any(propertyName, constraints);
302        }
303    
304        public PropertyConstraint not(PropertyConstraint constraint) {
305            return getConstraints().not(constraint);
306        }
307    
308        public PropertyConstraint eq(String propertyName, Object propertyValue) {
309            return getConstraints().eq(propertyName, propertyValue);
310        }
311    
312        /**
313         * @since 0.3.0
314         */
315        public PropertyConstraint eq(String propertyName, Object propertyValue, Comparator comparator) {
316            return getConstraints().eq(propertyName, propertyValue, comparator);
317        }
318    
319        public PropertyConstraint gt(String propertyName, Comparable propertyValue) {
320            return getConstraints().gt(propertyName, propertyValue);
321        }
322    
323        public PropertyConstraint gte(String propertyName, Comparable propertyValue) {
324            return getConstraints().gte(propertyName, propertyValue);
325        }
326    
327        public PropertyConstraint lt(String propertyName, Comparable propertyValue) {
328            return getConstraints().lt(propertyName, propertyValue);
329        }
330    
331        public PropertyConstraint lte(String propertyName, Comparable propertyValue) {
332            return getConstraints().lte(propertyName, propertyValue);
333        }
334    
335        /**
336         * @since 0.3.0
337         */
338        public PropertyConstraint eqProperty(String propertyName, String otherPropertyName, Comparator comparator) {
339            return getConstraints().eqProperty(propertyName, otherPropertyName, comparator);
340        }
341    
342        /**
343         * @since 0.3.0
344         */
345        public PropertyConstraint gtProperty(String propertyName, String otherPropertyName, Comparator comparator) {
346            return getConstraints().gtProperty(propertyName, otherPropertyName, comparator);
347        }
348    
349        /**
350         * @since 0.3.0
351         */
352        public PropertyConstraint gteProperty(String propertyName, String otherPropertyName, Comparator comparator) {
353            return getConstraints().gteProperty(propertyName, otherPropertyName, comparator);
354        }
355    
356        /**
357         * @since 0.3.0
358         */
359        public PropertyConstraint ltProperty(String propertyName, String otherPropertyName, Comparator comparator) {
360            return getConstraints().ltProperty(propertyName, otherPropertyName, comparator);
361        }
362    
363        /**
364         * @since 0.3.0
365         */
366        public PropertyConstraint lteProperty(String propertyName, String otherPropertyName, Comparator comparator) {
367            return getConstraints().lteProperty(propertyName, otherPropertyName, comparator);
368        }
369    
370        /**
371         * @since 0.3.0
372         */
373        public PropertyConstraint inRange(String propertyName, Comparable min, Comparable max, Comparator comparator) {
374            return getConstraints().inRange(propertyName, min, max, comparator);
375        }
376    
377        /**
378         * @since 0.3.0
379         */
380        public PropertyConstraint inRangeProperties(String propertyName, String minPropertyName, String maxPropertyName, Comparator comparator) {
381            return getConstraints().inRangeProperties(propertyName, minPropertyName, maxPropertyName, comparator);
382        }
383    
384        public PropertyConstraint eqProperty(String propertyName, String otherPropertyName) {
385            return getConstraints().eqProperty(propertyName, otherPropertyName);
386        }
387    
388        public PropertyConstraint gtProperty(String propertyName, String otherPropertyName) {
389            return getConstraints().gtProperty(propertyName, otherPropertyName);
390        }
391    
392        public PropertyConstraint gteProperty(String propertyName, String otherPropertyName) {
393            return getConstraints().gteProperty(propertyName, otherPropertyName);
394        }
395    
396        public PropertyConstraint ltProperty(String propertyName, String otherPropertyName) {
397            return getConstraints().ltProperty(propertyName, otherPropertyName);
398        }
399    
400        public PropertyConstraint lteProperty(String propertyName, String otherPropertyName) {
401            return getConstraints().lteProperty(propertyName, otherPropertyName);
402        }
403    
404        public PropertyConstraint inRange(String propertyName, Comparable min, Comparable max) {
405            return getConstraints().inRange(propertyName, min, max);
406        }
407    
408        public PropertyConstraint inRangeProperties(String propertyName, String minPropertyName, String maxPropertyName) {
409            return getConstraints().inRangeProperties(propertyName, minPropertyName, maxPropertyName);
410        }
411    
412        public PropertyConstraint unique(String propertyName) {
413            return getConstraints().unique(propertyName);
414        }
415    
416    }