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;
     }