You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@syncope.apache.org by il...@apache.org on 2013/03/04 16:18:58 UTC
svn commit: r1452348 - in
/syncope/branches/1_0_X/console/src/main/java/org/apache/syncope/console:
commons/ pages/ wicket/extensions/markup/html/repeater/data/table/
Author: ilgrosso
Date: Mon Mar 4 15:18:58 2013
New Revision: 1452348
URL: http://svn.apache.org/r1452348
Log:
[SYNCOPE-332] Using 'UserAttrColumn.SchemaType'#'schema name' as sortProperty
Modified:
syncope/branches/1_0_X/console/src/main/java/org/apache/syncope/console/commons/SortableDataProviderComparator.java
syncope/branches/1_0_X/console/src/main/java/org/apache/syncope/console/commons/SortableUserProviderComparator.java
syncope/branches/1_0_X/console/src/main/java/org/apache/syncope/console/commons/UserDataProvider.java
syncope/branches/1_0_X/console/src/main/java/org/apache/syncope/console/pages/DisplayAttributesModalPage.java
syncope/branches/1_0_X/console/src/main/java/org/apache/syncope/console/wicket/extensions/markup/html/repeater/data/table/UserAttrColumn.java
Modified: syncope/branches/1_0_X/console/src/main/java/org/apache/syncope/console/commons/SortableDataProviderComparator.java
URL: http://svn.apache.org/viewvc/syncope/branches/1_0_X/console/src/main/java/org/apache/syncope/console/commons/SortableDataProviderComparator.java?rev=1452348&r1=1452347&r2=1452348&view=diff
==============================================================================
--- syncope/branches/1_0_X/console/src/main/java/org/apache/syncope/console/commons/SortableDataProviderComparator.java (original)
+++ syncope/branches/1_0_X/console/src/main/java/org/apache/syncope/console/commons/SortableDataProviderComparator.java Mon Mar 4 15:18:58 2013
@@ -24,19 +24,18 @@ import org.apache.wicket.extensions.mark
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.PropertyModel;
-public class SortableDataProviderComparator<T> implements Comparator<T>, Serializable {
+public class SortableDataProviderComparator<T extends Object> implements Comparator<T>, Serializable {
private static final long serialVersionUID = -8897687699977460543L;
protected final SortableDataProvider<T> provider;
public SortableDataProviderComparator(final SortableDataProvider<T> provider) {
-
this.provider = provider;
}
+ @SuppressWarnings("unchecked")
protected int compare(final IModel<Comparable> model1, IModel<Comparable> model2) {
-
int result;
if (model1.getObject() == null && model2.getObject() == null) {
@@ -56,10 +55,11 @@ public class SortableDataProviderCompara
return result;
}
+ @SuppressWarnings("rawtypes")
@Override
- public int compare(final T o1, final T o2) {
- IModel<Comparable> model1 = new PropertyModel<Comparable>(o1, provider.getSort().getProperty());
- IModel<Comparable> model2 = new PropertyModel<Comparable>(o2, provider.getSort().getProperty());
+ public int compare(final T object1, final T object2) {
+ IModel<Comparable> model1 = new PropertyModel<Comparable>(object1, provider.getSort().getProperty());
+ IModel<Comparable> model2 = new PropertyModel<Comparable>(object2, provider.getSort().getProperty());
return compare(model1, model2);
}
Modified: syncope/branches/1_0_X/console/src/main/java/org/apache/syncope/console/commons/SortableUserProviderComparator.java
URL: http://svn.apache.org/viewvc/syncope/branches/1_0_X/console/src/main/java/org/apache/syncope/console/commons/SortableUserProviderComparator.java?rev=1452348&r1=1452347&r2=1452348&view=diff
==============================================================================
--- syncope/branches/1_0_X/console/src/main/java/org/apache/syncope/console/commons/SortableUserProviderComparator.java (original)
+++ syncope/branches/1_0_X/console/src/main/java/org/apache/syncope/console/commons/SortableUserProviderComparator.java Mon Mar 4 15:18:58 2013
@@ -18,56 +18,99 @@
*/
package org.apache.syncope.console.commons;
+import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
+import org.apache.syncope.client.to.AttributeTO;
import org.apache.wicket.extensions.markup.html.repeater.util.SortableDataProvider;
import org.apache.wicket.model.AbstractReadOnlyModel;
-import org.apache.syncope.client.to.AttributeTO;
import org.apache.syncope.client.to.UserTO;
+import org.apache.syncope.console.wicket.extensions.markup.html.repeater.data.table.UserAttrColumn;
public class SortableUserProviderComparator extends SortableDataProviderComparator<UserTO> {
- private static final Set<String> inlineProps;
-
- static {
- inlineProps = new HashSet<String>();
- inlineProps.add("id");
- inlineProps.add("status");
- inlineProps.add("token");
- inlineProps.add("username");
- }
+ private static final Set<String> INLINE_PROPS = new HashSet<String>(Arrays.asList(
+ new String[]{"id", "status", "token", "username"}));
public SortableUserProviderComparator(final SortableDataProvider<UserTO> provider) {
-
super(provider);
}
@Override
- public int compare(final UserTO o1, final UserTO o2) {
- if (inlineProps.contains(provider.getSort().getProperty())) {
- return super.compare(o1, o2);
+ public int compare(final UserTO user1, final UserTO user2) {
+ if (INLINE_PROPS.contains(provider.getSort().getProperty())) {
+ return super.compare(user1, user2);
}
- return super.compare(new AttrModel(o1.getAttributeMap()), new AttrModel(o2.getAttributeMap()));
+ return super.compare(new AttrModel(user1), new AttrModel(user2));
}
+ @SuppressWarnings("rawtypes")
private class AttrModel extends AbstractReadOnlyModel<Comparable> {
- private final Map<String, AttributeTO> attrMap;
+ private static final long serialVersionUID = -7856686374020091808L;
+
+ private final Map<String, AttributeTO> attrs;
+
+ private final Map<String, AttributeTO> derAttrs;
- public AttrModel(final Map<String, AttributeTO> attrMap) {
+ private final Map<String, AttributeTO> virAttrs;
+
+ public AttrModel(final UserTO userTO) {
super();
- this.attrMap = attrMap;
+ this.attrs = userTO.getAttributeMap();
+ this.derAttrs = userTO.getDerivedAttributeMap();
+ this.virAttrs = userTO.getVirtualAttributeMap();
}
+ /**
+ * @see UserAttrColumn constructor
+ */
@Override
public Comparable getObject() {
+ int hashPos = provider.getSort().getProperty().indexOf('#');
+
+ UserAttrColumn.SchemaType schemaType = null;
+ final String schema;
+ if (hashPos == -1) {
+ schema = provider.getSort().getProperty();
+ } else {
+ String[] splitted = provider.getSort().getProperty().split("#");
+ try {
+ schemaType = UserAttrColumn.SchemaType.valueOf(splitted[0]);
+ } catch (IllegalArgumentException e) {
+ // this should never happen
+ }
+ schema = provider.getSort().getProperty().substring(hashPos + 1);
+ }
+
+
+ final AttributeTO attr;
+ if (schemaType == null) {
+ attr = this.attrs.get(schema);
+ } else {
+ switch (schemaType) {
+ case schema:
+ default:
+ attr = this.attrs.get(schema);
+ break;
+
+ case derivedSchema:
+ attr = this.derAttrs.get(schema);
+ break;
+
+ case virtualSchema:
+ attr = this.virAttrs.get(schema);
+ break;
+ }
+ }
+
Comparable result = null;
- List<String> values = attrMap.get(provider.getSort().getProperty()).getValues();
+ List<String> values = attr == null ? null : attr.getValues();
if (values != null && !values.isEmpty()) {
result = values.iterator().next();
}
Modified: syncope/branches/1_0_X/console/src/main/java/org/apache/syncope/console/commons/UserDataProvider.java
URL: http://svn.apache.org/viewvc/syncope/branches/1_0_X/console/src/main/java/org/apache/syncope/console/commons/UserDataProvider.java?rev=1452348&r1=1452347&r2=1452348&view=diff
==============================================================================
--- syncope/branches/1_0_X/console/src/main/java/org/apache/syncope/console/commons/UserDataProvider.java (original)
+++ syncope/branches/1_0_X/console/src/main/java/org/apache/syncope/console/commons/UserDataProvider.java Mon Mar 4 15:18:58 2013
@@ -44,17 +44,16 @@ public class UserDataProvider extends So
private UserRestClient restClient;
public UserDataProvider(final UserRestClient restClient, final int paginatorRows, final boolean filtered) {
-
super();
this.restClient = restClient;
this.filtered = filtered;
this.paginatorRows = paginatorRows;
- //Default sorting
+ // Default sorting
setSort("id", SortOrder.ASCENDING);
- comparator = new SortableUserProviderComparator(this);
+ this.comparator = new SortableUserProviderComparator(this);
}
public void setSearchCond(final NodeCond searchCond) {
@@ -67,7 +66,7 @@ public class UserDataProvider extends So
if (filtered) {
users = filter == null
- ? Collections.EMPTY_LIST
+ ? Collections.<UserTO>emptyList()
: restClient.search(filter, (first / paginatorRows) + 1, paginatorRows);
} else {
users = restClient.list((first / paginatorRows) + 1, paginatorRows);
Modified: syncope/branches/1_0_X/console/src/main/java/org/apache/syncope/console/pages/DisplayAttributesModalPage.java
URL: http://svn.apache.org/viewvc/syncope/branches/1_0_X/console/src/main/java/org/apache/syncope/console/pages/DisplayAttributesModalPage.java?rev=1452348&r1=1452347&r2=1452348&view=diff
==============================================================================
--- syncope/branches/1_0_X/console/src/main/java/org/apache/syncope/console/pages/DisplayAttributesModalPage.java (original)
+++ syncope/branches/1_0_X/console/src/main/java/org/apache/syncope/console/pages/DisplayAttributesModalPage.java Mon Mar 4 15:18:58 2013
@@ -30,11 +30,11 @@ import org.apache.syncope.client.to.User
import org.apache.syncope.console.commons.Constants;
import org.apache.syncope.console.commons.PreferenceManager;
import org.apache.syncope.console.rest.SchemaRestClient;
-import org.apache.syncope.console.wicket.ajax.markup.html.ClearIndicatingAjaxButton;
import org.apache.syncope.types.AttributableType;
import org.apache.wicket.PageReference;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.markup.html.form.AjaxButton;
+import org.apache.wicket.extensions.ajax.markup.html.IndicatingAjaxButton;
import org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.form.Check;
@@ -62,7 +62,7 @@ public class DisplayAttributesModalPage
*/
private static final int MAX_SELECTIONS = 9;
- private static final String[] ATTRIBUTES_TO_HIDE = new String[]{
+ private static final String[] ATTRIBUTES_TO_HIDE = {
"attributes", "derivedAttributes", "virtualAttributes", "memberships", "resources",
"serialVersionUID", "password", "propagationTOs"};
@@ -267,12 +267,12 @@ public class DisplayAttributesModalPage
selectedDerSchemas.clear();
}
- final AjaxButton submit = new ClearIndicatingAjaxButton("submit", new ResourceModel("submit"), pageRef) {
+ final AjaxButton submit = new IndicatingAjaxButton("submit", new ResourceModel("submit")) {
private static final long serialVersionUID = -4804368561204623354L;
@Override
- protected void onSubmitInternal(final AjaxRequestTarget target, final Form<?> form) {
+ protected void onSubmit(final AjaxRequestTarget target, final Form<?> form) {
if (selectedDetails.size() + selectedSchemas.size() + selectedVirSchemas.size()
+ selectedDerSchemas.size() > MAX_SELECTIONS) {
Modified: syncope/branches/1_0_X/console/src/main/java/org/apache/syncope/console/wicket/extensions/markup/html/repeater/data/table/UserAttrColumn.java
URL: http://svn.apache.org/viewvc/syncope/branches/1_0_X/console/src/main/java/org/apache/syncope/console/wicket/extensions/markup/html/repeater/data/table/UserAttrColumn.java?rev=1452348&r1=1452347&r2=1452348&view=diff
==============================================================================
--- syncope/branches/1_0_X/console/src/main/java/org/apache/syncope/console/wicket/extensions/markup/html/repeater/data/table/UserAttrColumn.java (original)
+++ syncope/branches/1_0_X/console/src/main/java/org/apache/syncope/console/wicket/extensions/markup/html/repeater/data/table/UserAttrColumn.java Mon Mar 4 15:18:58 2013
@@ -34,8 +34,8 @@ public class UserAttrColumn extends Abst
public enum SchemaType {
schema,
- virtualSchema,
- derivedSchema;
+ derivedSchema,
+ virtualSchema
};
@@ -44,8 +44,9 @@ public class UserAttrColumn extends Abst
private final SchemaType schemaType;
public UserAttrColumn(final String name, final SchemaType schemaType) {
-
- super(new ResourceModel(name, name), name);
+ // set sortProperty to schematype#name (e.g. derivedSchema#cn,
+ // for use with SortableUserProviderComparator.AttrModel#getObject)
+ super(new ResourceModel(name, name), schemaType.name() + "#" + name);
this.name = name;
this.schemaType = schemaType;
}