You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@syncope.apache.org by fm...@apache.org on 2012/06/21 12:37:08 UTC
svn commit: r1352492 -
/incubator/syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/UserSearchPanel.java
Author: fmartelli
Date: Thu Jun 21 10:37:07 2012
New Revision: 1352492
URL: http://svn.apache.org/viewvc?rev=1352492&view=rev
Log:
SYNCOPE-99 #comment recursive generation of NodCond used to fail
Modified:
incubator/syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/UserSearchPanel.java
Modified: incubator/syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/UserSearchPanel.java
URL: http://svn.apache.org/viewvc/incubator/syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/UserSearchPanel.java?rev=1352492&r1=1352491&r2=1352492&view=diff
==============================================================================
--- incubator/syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/UserSearchPanel.java (original)
+++ incubator/syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/UserSearchPanel.java Thu Jun 21 10:37:07 2012
@@ -72,8 +72,8 @@ public class UserSearchPanel extends Pan
*/
private static final Logger LOG = LoggerFactory.getLogger(UserSearchPanel.class);
- private List<String> ATTRIBUTES_NOTINCLUDED = Arrays.asList(new String[] { "attributes", "derivedAttributes",
- "virtualAttributes", "serialVersionUID", "memberships", "resources", "password", "propagationStatusMap" });
+ private List<String> ATTRIBUTES_NOTINCLUDED = Arrays.asList(new String[]{"attributes", "derivedAttributes",
+ "virtualAttributes", "serialVersionUID", "memberships", "resources", "password", "propagationStatusMap"});
@SpringBean
private SchemaRestClient schemaRestClient;
@@ -224,7 +224,7 @@ public class UserSearchPanel extends Pan
searchConditionList = new ArrayList<SearchCondWrapper>();
searchConditionList.add(new SearchCondWrapper());
} else {
- searchConditionList = getSearchCondWrappers(initNodeCond);
+ searchConditionList = getSearchCondWrappers(initNodeCond, null);
}
searchFormContainer.add(new SearchView("searchView", searchConditionList, searchFormContainer));
@@ -276,7 +276,7 @@ public class UserSearchPanel extends Pan
return searchFeedback;
}
- private List<SearchCondWrapper> getSearchCondWrappers(final NodeCond searchCond) {
+ private List<SearchCondWrapper> getSearchCondWrappers(final NodeCond searchCond, final NodeCond.Type type) {
LOG.debug("Search condition: {}", searchCond);
List<SearchCondWrapper> wrappers = new ArrayList<SearchCondWrapper>();
@@ -284,17 +284,28 @@ public class UserSearchPanel extends Pan
switch (searchCond.getType()) {
case LEAF:
case NOT_LEAF:
- wrappers.add(getSearchCondWrapper(searchCond));
+ final SearchCondWrapper wrapper = getSearchCondWrapper(searchCond);
+
+ if (type != null) {
+ switch (type) {
+ case AND:
+ wrapper.setOperationType(OperationType.AND);
+ break;
+ case OR:
+ wrapper.setOperationType(OperationType.OR);
+ break;
+ default:
+ // nothing to specify
+ }
+ }
+
+ wrappers.add(wrapper);
break;
case AND:
case OR:
- wrappers.add(getSearchCondWrapper(searchCond.getLeftNodeCond()));
- SearchCondWrapper wrapper = getSearchCondWrapper(searchCond.getRightNodeCond());
- wrapper.setOperationType(searchCond.getType() == NodeCond.Type.AND
- ? OperationType.AND
- : OperationType.OR);
- wrappers.add(wrapper);
+ wrappers.addAll(getSearchCondWrappers(searchCond.getLeftNodeCond(), type));
+ wrappers.addAll(getSearchCondWrappers(searchCond.getRightNodeCond(), searchCond.getType()));
break;
default:
@@ -342,17 +353,15 @@ public class UserSearchPanel extends Pan
}
private NodeCond buildSearchCond(final List<SearchCondWrapper> conditions) {
- // inverse processing: from right to left
- // (OperationType is specified on the right)
- SearchCondWrapper searchConditionWrapper = conditions.get(conditions.size() - 1);
+ SearchCondWrapper searchConditionWrapper = conditions.get(0);
if (searchConditionWrapper == null || searchConditionWrapper.getFilterType() == null) {
return null;
}
LOG.debug("Search conditions: fname {}; ftype {}; fvalue {}; OP {}; type {}; isnot {}", new Object[] {
- searchConditionWrapper.getFilterName(), searchConditionWrapper.getFilterType(),
- searchConditionWrapper.getFilterValue(), searchConditionWrapper.getOperationType(),
- searchConditionWrapper.getType(), searchConditionWrapper.isNotOperator() });
+ searchConditionWrapper.getFilterName(), searchConditionWrapper.getFilterType(),
+ searchConditionWrapper.getFilterValue(), searchConditionWrapper.getOperationType(),
+ searchConditionWrapper.getType(), searchConditionWrapper.isNotOperator()});
NodeCond nodeCond = null;
@@ -406,15 +415,15 @@ public class UserSearchPanel extends Pan
break;
default:
- // nothing to do
+ // nothing to do
}
LOG.debug("Processed condition {}", nodeCond);
if (conditions.size() > 1) {
- List<SearchCondWrapper> subList = conditions.subList(0, conditions.size() - 1);
+ List<SearchCondWrapper> subList = conditions.subList(1, conditions.size());
- if (OperationType.OR.equals(searchConditionWrapper.getOperationType())) {
+ if (OperationType.OR.equals(subList.get(0).getOperationType())) {
nodeCond = NodeCond.getOrCond(nodeCond, buildSearchCond(subList));
} else {
nodeCond = NodeCond.getAndCond(nodeCond, buildSearchCond(subList));