Return-Path: X-Original-To: apmail-cxf-commits-archive@www.apache.org Delivered-To: apmail-cxf-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id B559FD25E for ; Mon, 10 Dec 2012 10:45:06 +0000 (UTC) Received: (qmail 6390 invoked by uid 500); 10 Dec 2012 10:45:06 -0000 Delivered-To: apmail-cxf-commits-archive@cxf.apache.org Received: (qmail 6260 invoked by uid 500); 10 Dec 2012 10:45:05 -0000 Mailing-List: contact commits-help@cxf.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@cxf.apache.org Delivered-To: mailing list commits@cxf.apache.org Received: (qmail 6252 invoked by uid 99); 10 Dec 2012 10:45:05 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 10 Dec 2012 10:45:05 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 10 Dec 2012 10:45:01 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id A318C2388B42; Mon, 10 Dec 2012 10:44:39 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1419330 - in /cxf/trunk/rt/rs/extensions/search/src: main/java/org/apache/cxf/jaxrs/ext/search/ main/java/org/apache/cxf/jaxrs/ext/search/client/ main/java/org/apache/cxf/jaxrs/ext/search/fiql/ test/java/org/apache/cxf/jaxrs/ext/search/cli... Date: Mon, 10 Dec 2012 10:44:38 -0000 To: commits@cxf.apache.org From: sergeyb@apache.org X-Mailer: svnmailer-1.0.8-patched Message-Id: <20121210104439.A318C2388B42@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: sergeyb Date: Mon Dec 10 10:44:37 2012 New Revision: 1419330 URL: http://svn.apache.org/viewvc?rev=1419330&view=rev Log: Adding comparesTo method to search builder - can make it simpler to capture the ui-level selections, etc Modified: cxf/trunk/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/ConditionType.java cxf/trunk/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/client/FiqlSearchConditionBuilder.java cxf/trunk/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/client/Property.java cxf/trunk/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/client/SearchConditionBuilder.java cxf/trunk/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/fiql/FiqlParser.java cxf/trunk/rt/rs/extensions/search/src/test/java/org/apache/cxf/jaxrs/ext/search/client/FiqlSearchConditionBuilderTest.java Modified: cxf/trunk/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/ConditionType.java URL: http://svn.apache.org/viewvc/cxf/trunk/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/ConditionType.java?rev=1419330&r1=1419329&r2=1419330&view=diff ============================================================================== --- cxf/trunk/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/ConditionType.java (original) +++ cxf/trunk/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/ConditionType.java Mon Dec 10 10:44:37 2012 @@ -31,6 +31,5 @@ public enum ConditionType { LESS_OR_EQUALS, GREATER_OR_EQUALS, OR, - AND, - CUSTOM + AND } Modified: cxf/trunk/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/client/FiqlSearchConditionBuilder.java URL: http://svn.apache.org/viewvc/cxf/trunk/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/client/FiqlSearchConditionBuilder.java?rev=1419330&r1=1419329&r2=1419330&view=diff ============================================================================== --- cxf/trunk/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/client/FiqlSearchConditionBuilder.java (original) +++ cxf/trunk/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/client/FiqlSearchConditionBuilder.java Mon Dec 10 10:44:37 2012 @@ -25,6 +25,7 @@ import java.util.Map; import javax.xml.datatype.Duration; +import org.apache.cxf.jaxrs.ext.search.ConditionType; import org.apache.cxf.jaxrs.ext.search.SearchUtils; import org.apache.cxf.jaxrs.ext.search.fiql.FiqlParser; @@ -129,6 +130,36 @@ public class FiqlSearchConditionBuilder return condition(FiqlParser.LT, toString(date)); } + public CompleteCondition comparesTo(ConditionType type, String value) { + + return condition(toFiqlPrimitiveCondition(type), value); + } + + public CompleteCondition comparesTo(ConditionType type, Double value) { + + return condition(toFiqlPrimitiveCondition(type), value); + } + + public CompleteCondition comparesTo(ConditionType type, Integer value) { + + return condition(toFiqlPrimitiveCondition(type), value); + } + + public CompleteCondition comparesTo(ConditionType type, Long value) { + + return condition(toFiqlPrimitiveCondition(type), value); + } + + public CompleteCondition comparesTo(ConditionType type, Date value) { + + return condition(toFiqlPrimitiveCondition(type), value); + } + + public CompleteCondition comparesTo(ConditionType type, Duration value) { + + return condition(toFiqlPrimitiveCondition(type), value); + } + public CompleteCondition equalTo(String value, String...moreValues) { return condition(FiqlParser.EQ, value, (Object[])moreValues); } @@ -154,35 +185,51 @@ public class FiqlSearchConditionBuilder } - public CompleteCondition greaterOrEqualTo(double number) { + public CompleteCondition greaterOrEqualTo(Double number) { + return condition(FiqlParser.GE, number); + } + + public CompleteCondition greaterOrEqualTo(Long number) { return condition(FiqlParser.GE, number); } - public CompleteCondition greaterOrEqualTo(long number) { + public CompleteCondition greaterOrEqualTo(Integer number) { return condition(FiqlParser.GE, number); } - public CompleteCondition greaterThan(double number) { + public CompleteCondition greaterThan(Double number) { return condition(FiqlParser.GT, number); } - public CompleteCondition greaterThan(long number) { + public CompleteCondition greaterThan(Long number) { + return condition(FiqlParser.GT, number); + } + + public CompleteCondition greaterThan(Integer number) { return condition(FiqlParser.GT, number); } - public CompleteCondition lessOrEqualTo(double number) { + public CompleteCondition lessOrEqualTo(Double number) { + return condition(FiqlParser.LE, number); + } + + public CompleteCondition lessOrEqualTo(Long number) { return condition(FiqlParser.LE, number); } - public CompleteCondition lessOrEqualTo(long number) { + public CompleteCondition lessOrEqualTo(Integer number) { return condition(FiqlParser.LE, number); } - public CompleteCondition lessThan(double number) { + public CompleteCondition lessThan(Double number) { return condition(FiqlParser.LT, number); } - public CompleteCondition lessThan(long number) { + public CompleteCondition lessThan(Long number) { + return condition(FiqlParser.LT, number); + } + + public CompleteCondition lessThan(Integer number) { return condition(FiqlParser.LT, number); } @@ -214,11 +261,15 @@ public class FiqlSearchConditionBuilder return condition(FiqlParser.NEQ, literalOrPattern); } - public CompleteCondition notEqualTo(double number) { + public CompleteCondition notEqualTo(Double number) { + return condition(FiqlParser.NEQ, number); + } + + public CompleteCondition notEqualTo(Long number) { return condition(FiqlParser.NEQ, number); } - public CompleteCondition notEqualTo(long number) { + public CompleteCondition notEqualTo(Integer number) { return condition(FiqlParser.NEQ, number); } @@ -345,6 +396,14 @@ public class FiqlSearchConditionBuilder return value.toString(); } } + + private String toFiqlPrimitiveCondition(ConditionType type) { + String fiqlType = FiqlParser.CONDITION_MAP.get(type); + if (fiqlType == null) { + throw new IllegalArgumentException("Only primitive condition types are supported"); + } + return fiqlType; + } } } Modified: cxf/trunk/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/client/Property.java URL: http://svn.apache.org/viewvc/cxf/trunk/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/client/Property.java?rev=1419330&r1=1419329&r2=1419330&view=diff ============================================================================== --- cxf/trunk/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/client/Property.java (original) +++ cxf/trunk/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/client/Property.java Mon Dec 10 10:44:37 2012 @@ -22,10 +22,13 @@ 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); @@ -43,15 +46,18 @@ public interface Property { /** 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); + CompleteCondition notEqualTo(Double number); /** Is numeric property different than given long number? */ - CompleteCondition notEqualTo(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); @@ -60,29 +66,41 @@ public interface Property { CompleteCondition notEqualTo(Duration distanceFromNow); /** Is numeric property greater than given number? */ - CompleteCondition greaterThan(double 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(long number); + CompleteCondition greaterThan(Integer number); /** Is numeric property less than given number? */ - CompleteCondition lessThan(double number); + CompleteCondition lessThan(Double number); /** Is numeric property less than given number? */ - CompleteCondition lessThan(long 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(double number); + CompleteCondition greaterOrEqualTo(Long number); /** Is numeric property greater or equal to given number? */ - CompleteCondition greaterOrEqualTo(long number); + CompleteCondition greaterOrEqualTo(Integer number); /** Is numeric property less or equal to given number? */ - CompleteCondition lessOrEqualTo(double number); + CompleteCondition lessOrEqualTo(Double number); /** Is numeric property less or equal to given number? */ - CompleteCondition lessOrEqualTo(long 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); @@ -120,4 +138,23 @@ public interface Property { /** 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); + } Modified: cxf/trunk/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/client/SearchConditionBuilder.java URL: http://svn.apache.org/viewvc/cxf/trunk/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/client/SearchConditionBuilder.java?rev=1419330&r1=1419329&r2=1419330&view=diff ============================================================================== --- cxf/trunk/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/client/SearchConditionBuilder.java (original) +++ cxf/trunk/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/client/SearchConditionBuilder.java Mon Dec 10 10:44:37 2012 @@ -32,6 +32,7 @@ import java.util.Map; public abstract class SearchConditionBuilder implements PartialCondition { public static final String DEFAULT_LANGUAGE = "FIQL"; + public static final String FIQL = DEFAULT_LANGUAGE; /** * Creates instance of builder. * Modified: cxf/trunk/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/fiql/FiqlParser.java URL: http://svn.apache.org/viewvc/cxf/trunk/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/fiql/FiqlParser.java?rev=1419330&r1=1419329&r2=1419330&view=diff ============================================================================== --- cxf/trunk/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/fiql/FiqlParser.java (original) +++ cxf/trunk/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/fiql/FiqlParser.java Mon Dec 10 10:44:37 2012 @@ -69,9 +69,11 @@ public class FiqlParser implements Se public static final String EQ = "=="; public static final String NEQ = "!="; - private static final Pattern COMPARATORS_PATTERN; + public static final Map CONDITION_MAP; + private static final Map OPERATORS_MAP; - + private static final Pattern COMPARATORS_PATTERN; + static { // operatorsMap OPERATORS_MAP = new HashMap(); @@ -82,6 +84,15 @@ public class FiqlParser implements Se OPERATORS_MAP.put(EQ, ConditionType.EQUALS); OPERATORS_MAP.put(NEQ, ConditionType.NOT_EQUALS); + CONDITION_MAP = new HashMap(); + CONDITION_MAP.put(ConditionType.GREATER_THAN, GT); + CONDITION_MAP.put(ConditionType.GREATER_OR_EQUALS, GE); + CONDITION_MAP.put(ConditionType.LESS_THAN, LT); + CONDITION_MAP.put(ConditionType.LESS_OR_EQUALS, LE); + CONDITION_MAP.put(ConditionType.EQUALS, EQ); + CONDITION_MAP.put(ConditionType.NOT_EQUALS, NEQ); + + // pattern String comparators = GT + "|" + GE + "|" + LT + "|" + LE + "|" + EQ + "|" + NEQ; String s1 = "[\\p{ASCII}]+(" + comparators + ")"; Modified: cxf/trunk/rt/rs/extensions/search/src/test/java/org/apache/cxf/jaxrs/ext/search/client/FiqlSearchConditionBuilderTest.java URL: http://svn.apache.org/viewvc/cxf/trunk/rt/rs/extensions/search/src/test/java/org/apache/cxf/jaxrs/ext/search/client/FiqlSearchConditionBuilderTest.java?rev=1419330&r1=1419329&r2=1419330&view=diff ============================================================================== --- cxf/trunk/rt/rs/extensions/search/src/test/java/org/apache/cxf/jaxrs/ext/search/client/FiqlSearchConditionBuilderTest.java (original) +++ cxf/trunk/rt/rs/extensions/search/src/test/java/org/apache/cxf/jaxrs/ext/search/client/FiqlSearchConditionBuilderTest.java Mon Dec 10 10:44:37 2012 @@ -29,6 +29,7 @@ import javax.xml.datatype.DatatypeConfig import javax.xml.datatype.DatatypeFactory; import javax.xml.datatype.Duration; +import org.apache.cxf.jaxrs.ext.search.ConditionType; import org.apache.cxf.jaxrs.ext.search.SearchUtils; import org.junit.AfterClass; @@ -69,6 +70,12 @@ public class FiqlSearchConditionBuilderT String ret = b.is("foo").equalTo(123.5).query(); assertEquals("foo==123.5", ret); } + + @Test + public void testEqualToNumberCondition() { + String ret = b.is("foo").comparesTo(ConditionType.LESS_THAN, 123.5).query(); + assertEquals("foo=lt=123.5", ret); + } private Date parseDate(String format, String value) throws ParseException { return new SimpleDateFormat(format).parse(value);