You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@juneau.apache.org by ja...@apache.org on 2017/06/19 19:01:19 UTC
incubator-juneau git commit: Improvements to PojoQuery and
QueryWidget.
Repository: incubator-juneau
Updated Branches:
refs/heads/master 14f6d2fbe -> 9b3949297
Improvements to PojoQuery and QueryWidget.
Project: http://git-wip-us.apache.org/repos/asf/incubator-juneau/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-juneau/commit/9b394929
Tree: http://git-wip-us.apache.org/repos/asf/incubator-juneau/tree/9b394929
Diff: http://git-wip-us.apache.org/repos/asf/incubator-juneau/diff/9b394929
Branch: refs/heads/master
Commit: 9b3949297a409988d3a8fb1c741a9cf93fc02d12
Parents: 14f6d2f
Author: JamesBognar <ja...@apache.org>
Authored: Mon Jun 19 14:58:51 2017 -0400
Committer: JamesBognar <ja...@apache.org>
Committed: Mon Jun 19 15:01:16 2017 -0400
----------------------------------------------------------------------
.../java/org/apache/juneau/utils/PojoQuery.java | 33 +++++++++++++++++++-
.../apache/juneau/rest/widget/QueryWidget.html | 15 +++++----
2 files changed, 39 insertions(+), 9 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/9b394929/juneau-core/src/main/java/org/apache/juneau/utils/PojoQuery.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/utils/PojoQuery.java b/juneau-core/src/main/java/org/apache/juneau/utils/PojoQuery.java
index a4566e5..737fb32 100644
--- a/juneau-core/src/main/java/org/apache/juneau/utils/PojoQuery.java
+++ b/juneau-core/src/main/java/org/apache/juneau/utils/PojoQuery.java
@@ -15,6 +15,7 @@ package org.apache.juneau.utils;
import static java.util.Calendar.*;
import static org.apache.juneau.internal.StringUtils.*;
+import java.lang.reflect.*;
import java.text.*;
import java.util.*;
import java.util.regex.*;
@@ -300,7 +301,7 @@ public final class PojoQuery {
Comparator comp = new Comparator<Map>() {
@Override /* Comparator */
public int compare(Map m1, Map m2) {
- Comparable v1 = (Comparable)m1.get(c), v2 = (Comparable)m2.get(c);
+ Comparable v1 = toComparable(m1.get(c)), v2 = toComparable(m2.get(c));
if (v1 == null && v2 == null)
return 0;
if (v1 == null)
@@ -314,6 +315,18 @@ public final class PojoQuery {
}
}
+ private static Comparable toComparable(Object o) {
+ if (o == null)
+ return null;
+ if (o instanceof Comparable)
+ return (Comparable)o;
+ if (o instanceof Map)
+ return ((Map)o).size();
+ if (o.getClass().isArray())
+ return Array.getLength(o);
+ return o.toString();
+ }
+
/*
* Filters all but the specified view columns on all entries in the specified list.
*/
@@ -423,6 +436,24 @@ public final class PojoQuery {
@Override /* IMatcher */
public boolean matches(Object o) {
+ if (o instanceof Collection) {
+ for (Object o2 : (Collection)o)
+ if (matches(o2))
+ return true;
+ return false;
+ }
+ if (o != null && o.getClass().isArray()) {
+ for (int i = 0; i < Array.getLength(o); i++)
+ if (matches(Array.get(o, i)))
+ return true;
+ return false;
+ }
+ if (o instanceof Map) {
+ for (Object o2 : ((Map)o).values())
+ if (matches(o2))
+ return true;
+ return false;
+ }
if (o instanceof Number)
return getNumberMatcher().matches(o);
if (o instanceof Date || o instanceof Calendar)
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/9b394929/juneau-rest/src/main/resources/org/apache/juneau/rest/widget/QueryWidget.html
----------------------------------------------------------------------
diff --git a/juneau-rest/src/main/resources/org/apache/juneau/rest/widget/QueryWidget.html b/juneau-rest/src/main/resources/org/apache/juneau/rest/widget/QueryWidget.html
index 66ae23a..02c4adf 100644
--- a/juneau-rest/src/main/resources/org/apache/juneau/rest/widget/QueryWidget.html
+++ b/juneau-rest/src/main/resources/org/apache/juneau/rest/widget/QueryWidget.html
@@ -26,7 +26,7 @@
color: #26343F;
white-space: nowrap;
text-align: left;
- margin:20px;
+ margin:70px 50px;
}
.hidden {
@@ -64,8 +64,6 @@
white-space: nowrap;
float: left;
}
-}
-
</style>
<form id='queryForm' style='display:inline'>
<table id='query' class='queryInput hidden'>
@@ -83,7 +81,7 @@
</div>
</th>
<td>
- <input name="s" size="50">
+ <input name="s" size="50" value='$R{query.s}'>
</td>
</tr>
<tr>
@@ -97,7 +95,7 @@
</div>
</th>
<td>
- <input name="v" size="50">
+ <input name="v" size="50" value='$R{query.v}'>
</td>
</tr>
<tr>
@@ -112,7 +110,7 @@
</div>
</th>
<td>
- <input name="o" size="50">
+ <input name="o" size="50" value='$R{query.o}'>
</td>
</tr>
<tr>
@@ -120,8 +118,8 @@
Page:
</th>
<td>
- Position: <input name='p' type='number' style='width:50px' step=20 min=0 value='0'>
- Limit: <input name='l' type='number' style='width:50px' step=20 min=0 value='0'>
+ Position: <input name='p' type='number' style='width:50px' step=20 min=0 value='$R{query.p}'>
+ Limit: <input name='l' type='number' style='width:50px' step=20 min=0 value='$R{query.l}'>
Ignore-case: <input name='i' type='checkbox' value='true'>
</td>
</tr>
@@ -130,6 +128,7 @@
</th>
<td style='float:right'>
+ <input type='reset' value='Reset'>
<input type='button' value='Cancel' onclick='getElementById("query").classList.add("hidden")'>
<input type="submit" value='Submit'>
</td>