|
From: <fg...@us...> - 2013-11-02 15:12:54
|
Revision: 4449
http://openutils.svn.sourceforge.net/openutils/?rev=4449&view=rev
Author: fgiust
Date: 2013-11-02 15:12:50 +0000 (Sat, 02 Nov 2013)
Log Message:
-----------
adds a couple of shortcut methods
Modified Paths:
--------------
magnoliamodules/trunk/openutils-mgnlcriteria/src/main/java/net/sourceforge/openutils/mgnlcriteria/jcr/query/Criteria.java
magnoliamodules/trunk/openutils-mgnlcriteria/src/main/java/net/sourceforge/openutils/mgnlcriteria/jcr/query/criterion/InExpression.java
magnoliamodules/trunk/openutils-mgnlcriteria/src/main/java/net/sourceforge/openutils/mgnlcriteria/jcr/query/criterion/Restrictions.java
magnoliamodules/trunk/openutils-mgnlcriteria/src/main/java/net/sourceforge/openutils/mgnlcriteria/jcr/query/xpath/impl/AbstractCriteriaImpl.java
Modified: magnoliamodules/trunk/openutils-mgnlcriteria/src/main/java/net/sourceforge/openutils/mgnlcriteria/jcr/query/Criteria.java
===================================================================
--- magnoliamodules/trunk/openutils-mgnlcriteria/src/main/java/net/sourceforge/openutils/mgnlcriteria/jcr/query/Criteria.java 2013-11-02 14:03:24 UTC (rev 4448)
+++ magnoliamodules/trunk/openutils-mgnlcriteria/src/main/java/net/sourceforge/openutils/mgnlcriteria/jcr/query/Criteria.java 2013-11-02 15:12:50 UTC (rev 4449)
@@ -107,14 +107,20 @@
Criteria add(Criterion criterion);
/**
- * Add an {@link Order ordering} to the result set. Only <strong>one Order criterion per query</strong> can be
- * applied. Any Order added after the first one will be ignored.
+ * Add an {@link Order ordering} to the result set.
* @param order The {@link Order order} object representing an ordering to be applied to the results.
* @return this (for method chaining)
*/
Criteria addOrder(Order order);
/**
+ * Add an {@link Order ordering} for score to the result set. Shortcut for .addOrder(Order.desc("@jcr:score")).
+ * @param order The {@link Order order} object representing an ordering to be applied to the results.
+ * @return this (for method chaining)
+ */
+ Criteria addOrderByScore();
+
+ /**
* Set a limit upon the number of objects to be retrieved.
* @param maxResults the maximum number of results
* @return this (for method chaining)
Modified: magnoliamodules/trunk/openutils-mgnlcriteria/src/main/java/net/sourceforge/openutils/mgnlcriteria/jcr/query/criterion/InExpression.java
===================================================================
--- magnoliamodules/trunk/openutils-mgnlcriteria/src/main/java/net/sourceforge/openutils/mgnlcriteria/jcr/query/criterion/InExpression.java 2013-11-02 14:03:24 UTC (rev 4448)
+++ magnoliamodules/trunk/openutils-mgnlcriteria/src/main/java/net/sourceforge/openutils/mgnlcriteria/jcr/query/criterion/InExpression.java 2013-11-02 15:12:50 UTC (rev 4449)
@@ -36,20 +36,31 @@
private String[] values;
- public InExpression(String nodeName, String[] values)
+ private boolean useContains;
+
+ public InExpression(String nodeName, String[] values, boolean useContains)
{
this.nodeName = nodeName;
this.values = values;
+ this.useContains = useContains;
}
+ public InExpression(String nodeName, String[] values)
+ {
+ this(nodeName, values, true);
+ }
+
public String toXPathString(Criteria criteria) throws JCRQueryException
{
StringBuilder inClause = new StringBuilder("( ");
for (int i = 0; i < values.length; i++)
{
- String containsPredicate = Restrictions.contains(nodeName, values[i]).toXPathString(criteria);
- inClause.append(containsPredicate);
+ String predicate = useContains
+ ? Restrictions.contains(nodeName, values[i]).toXPathString(criteria)
+ : Restrictions.eq(nodeName, values[i]).toXPathString(criteria);
+
+ inClause.append(predicate);
// if this is not the last value, append an 'or'
if ((i + 1) != values.length)
{
Modified: magnoliamodules/trunk/openutils-mgnlcriteria/src/main/java/net/sourceforge/openutils/mgnlcriteria/jcr/query/criterion/Restrictions.java
===================================================================
--- magnoliamodules/trunk/openutils-mgnlcriteria/src/main/java/net/sourceforge/openutils/mgnlcriteria/jcr/query/criterion/Restrictions.java 2013-11-02 14:03:24 UTC (rev 4448)
+++ magnoliamodules/trunk/openutils-mgnlcriteria/src/main/java/net/sourceforge/openutils/mgnlcriteria/jcr/query/criterion/Restrictions.java 2013-11-02 15:12:50 UTC (rev 4449)
@@ -347,6 +347,16 @@
}
/**
+ * Apply a restriction on the node primary type. Shorcut for add(Restrictions.eq("@jcr:primaryType", value)).
+ * @param nodetypes - list of accepted nodetypes.
+ * @return Criterion
+ */
+ public static Criterion hasNodeType(String... nodetypes)
+ {
+ return new InExpression("@jcr:primaryType", nodetypes, false);
+ }
+
+ /**
* Group expressions together in a single conjunction (A and B and C...)
* @return Conjunction
*/
Modified: magnoliamodules/trunk/openutils-mgnlcriteria/src/main/java/net/sourceforge/openutils/mgnlcriteria/jcr/query/xpath/impl/AbstractCriteriaImpl.java
===================================================================
--- magnoliamodules/trunk/openutils-mgnlcriteria/src/main/java/net/sourceforge/openutils/mgnlcriteria/jcr/query/xpath/impl/AbstractCriteriaImpl.java 2013-11-02 14:03:24 UTC (rev 4448)
+++ magnoliamodules/trunk/openutils-mgnlcriteria/src/main/java/net/sourceforge/openutils/mgnlcriteria/jcr/query/xpath/impl/AbstractCriteriaImpl.java 2013-11-02 15:12:50 UTC (rev 4449)
@@ -115,6 +115,15 @@
/**
* {@inheritDoc}
*/
+ public Criteria addOrderByScore()
+ {
+ orderEntries.add(new OrderEntry(Order.desc("@jcr:score"), this));
+ return this;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
public Criteria setBasePath(String path)
{
// check if the specified path is already an xpath query
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|