/**
* 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.cxf.jaxrs.ext.search.client;
import java.util.Date;
import javax.xml.datatype.Duration;
import org.apache.cxf.jaxrs.ext.search.ConditionType;
/**
* Part of fluent interface of {@link SearchConditionBuilder}.
*/
public interface Property {
/** Is textual property equal to given literal or matching given pattern? */
CompleteCondition equalTo(String value, String ...moreValues);
/** Is numeric property equal to given double number? */
CompleteCondition equalTo(Double number, Double... moreValues);
/** Is numeric property equal to given long number? */
CompleteCondition equalTo(Long number, Long... moreValues);
/** Is numeric property equal to given long number? */
CompleteCondition equalTo(Integer number, Integer... moreValues);
/** Is date property same as given date? */
CompleteCondition equalTo(Date date, Date... moreValues);
/** Is date property same as date distant from now by given period of time? */
CompleteCondition equalTo(Duration distanceFromNow, Duration... moreValues);
/** Is textual property different than given literal or not matching given pattern? */
CompleteCondition notEqualTo(String literalOrPattern);
/** Is numeric property different than given double number? */
CompleteCondition notEqualTo(Double number);
/** Is numeric property different than given long number? */
CompleteCondition notEqualTo(Long number);
/** Is numeric property different than given int number? */
CompleteCondition notEqualTo(Integer number);
/** Is date property different than given date? */
CompleteCondition notEqualTo(Date date);
/** Is date property different than date distant from now by given period of time? */
CompleteCondition notEqualTo(Duration distanceFromNow);
/** Is numeric property greater than given number? */
CompleteCondition greaterThan(Double number);
/** Is numeric property greater than given number? */
CompleteCondition greaterThan(Long number);
/** Is numeric property greater than given number? */
CompleteCondition greaterThan(Integer number);
/** Is numeric property less than given number? */
CompleteCondition lessThan(Double number);
/** Is numeric property less than given number? */
CompleteCondition lessThan(Long number);
/** Is numeric property less than given number? */
CompleteCondition lessThan(Integer number);
/** Is numeric property greater or equal to given number? */
CompleteCondition greaterOrEqualTo(Double number);
/** Is numeric property greater or equal to given number? */
CompleteCondition greaterOrEqualTo(Long number);
/** Is numeric property greater or equal to given number? */
CompleteCondition greaterOrEqualTo(Integer number);
/** Is numeric property less or equal to given number? */
CompleteCondition lessOrEqualTo(Double number);
/** Is numeric property less or equal to given number? */
CompleteCondition lessOrEqualTo(Long number);
/** Is numeric property less or equal to given number? */
CompleteCondition lessOrEqualTo(Integer number);
/** Is date property after (greater than) given date? */
CompleteCondition after(Date date);
/** Is date property before (less than) given date? */
CompleteCondition before(Date date);
/** Is date property not before (greater or equal to) given date? */
CompleteCondition notBefore(Date date);
/** Is date property not after (less or equal to) given date? */
CompleteCondition notAfter(Date date);
/** Is date property after (greater than) date distant from now by given period of time? */
CompleteCondition after(Duration distanceFromNow);
/** Is date property before (less than) date distant from now by given period of time? */
CompleteCondition before(Duration distanceFromNow);
/** Is date property not after (less or equal to) date distant from now by given period of time? */
CompleteCondition notAfter(Duration distanceFromNow);
/**
* Is date property not before (greater or equal to) date distant from now by given period of time?
*/
CompleteCondition notBefore(Duration distanceFromNow);
/** Is textual property lexically after (greater than) given literal? */
CompleteCondition lexicalAfter(String literal);
/** Is textual property lexically before (less than) given literal? */
CompleteCondition lexicalBefore(String literal);
/** Is textual property lexically not before (greater or equal to) given literal? */
CompleteCondition lexicalNotBefore(String literal);
/** Is textual property lexically not after (less or equal to) given literal? */
CompleteCondition lexicalNotAfter(String literal);
/** Generic */
CompleteCondition comparesTo(ConditionType op, String value);
/** Generic */
CompleteCondition comparesTo(ConditionType op, Double value);
/** Generic */
CompleteCondition comparesTo(ConditionType op, Long value);
/** Generic */
CompleteCondition comparesTo(ConditionType op, Integer value);
/** Generic */
CompleteCondition comparesTo(ConditionType op, Date value);
/** Generic */
CompleteCondition comparesTo(ConditionType op, Duration value);
}