You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2013/09/03 09:23:52 UTC

[6/7] git commit: ISIS-503: DeweyOrderSet now sorting on OTOA etc ...

ISIS-503: DeweyOrderSet now sorting on OTOA etc ...

... rather than on FacetedMethods.


Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/5fa2c117
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/5fa2c117
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/5fa2c117

Branch: refs/heads/master
Commit: 5fa2c117b8c2e9d7ffc567acddc56a1eaf823066
Parents: c2c3005
Author: Dan Haywood <da...@apache.org>
Authored: Tue Sep 3 07:37:12 2013 +0100
Committer: Dan Haywood <da...@apache.org>
Committed: Tue Sep 3 07:37:12 2013 +0100

----------------------------------------------------------------------
 .../core/metamodel/layout/DeweyOrderSet.java    | 10 ++---
 .../memberorderfacet/MemberOrderComparator.java | 13 +++---
 .../dflt/ObjectSpecificationDefault.java        | 43 +++++++++++++-------
 3 files changed, 41 insertions(+), 25 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/5fa2c117/core/metamodel/src/main/java/org/apache/isis/core/metamodel/layout/DeweyOrderSet.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/layout/DeweyOrderSet.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/layout/DeweyOrderSet.java
index 1b69237..eec05a8 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/layout/DeweyOrderSet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/layout/DeweyOrderSet.java
@@ -75,21 +75,21 @@ import org.apache.isis.core.metamodel.layout.memberorderfacet.MemberOrderCompara
  */
 public class DeweyOrderSet implements Comparable<DeweyOrderSet>, Iterable<Object>  {
     
-    public static DeweyOrderSet createOrderSet(final List<? extends IdentifiedHolder> facetedMethods) {
+    public static DeweyOrderSet createOrderSet(final List<? extends IdentifiedHolder> identifiedHolders) {
 
         final SortedMap<String, SortedSet<IdentifiedHolder>> sortedMembersByGroup = Maps.newTreeMap();
         final SortedSet<IdentifiedHolder> nonAnnotatedGroup = Sets.newTreeSet(new MemberIdentifierComparator());
 
         // spin over all the members and put them into a Map of SortedSets
         // any non-annotated members go into additional nonAnnotatedGroup set.
-        for (final IdentifiedHolder facetedMethod : facetedMethods) {
-            final MemberOrderFacet memberOrder = facetedMethod.getFacet(MemberOrderFacet.class);
+        for (final IdentifiedHolder identifiedHolder : identifiedHolders) {
+            final MemberOrderFacet memberOrder = identifiedHolder.getFacet(MemberOrderFacet.class);
             if (memberOrder == null) {
-                nonAnnotatedGroup.add(facetedMethod);
+                nonAnnotatedGroup.add(identifiedHolder);
                 continue;
             }
             final SortedSet<IdentifiedHolder> sortedMembersForGroup = getSortedSet(sortedMembersByGroup, memberOrder.name());
-            sortedMembersForGroup.add(facetedMethod);
+            sortedMembersForGroup.add(identifiedHolder);
         }
 
         // add the non-annotated group to the first "" group.

http://git-wip-us.apache.org/repos/asf/isis/blob/5fa2c117/core/metamodel/src/main/java/org/apache/isis/core/metamodel/layout/memberorderfacet/MemberOrderComparator.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/layout/memberorderfacet/MemberOrderComparator.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/layout/memberorderfacet/MemberOrderComparator.java
index 8315a59..f72fd0d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/layout/memberorderfacet/MemberOrderComparator.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/layout/memberorderfacet/MemberOrderComparator.java
@@ -22,6 +22,7 @@ package org.apache.isis.core.metamodel.layout.memberorderfacet;
 import java.util.Comparator;
 
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
+import org.apache.isis.core.metamodel.facetapi.IdentifiedHolder;
 import org.apache.isis.core.metamodel.facets.FacetedMethod;
 import org.apache.isis.core.metamodel.facets.members.order.MemberOrderFacet;
 import org.apache.isis.core.metamodel.layout.DeweyOrderSet;
@@ -55,22 +56,22 @@ public class MemberOrderComparator implements Comparator<Object> {
 
     @Override
     public int compare(final Object o1, final Object o2) {
-        if (o1 instanceof FacetedMethod && o2 instanceof FacetedMethod) {
-            return compare((FacetedMethod) o1, (FacetedMethod) o2);
+        if (o1 instanceof IdentifiedHolder && o2 instanceof IdentifiedHolder) {
+            return compare((IdentifiedHolder) o1, (IdentifiedHolder) o2);
         }
         if (o1 instanceof DeweyOrderSet && o2 instanceof DeweyOrderSet) {
             return orderSetComparator.compare((DeweyOrderSet) o1, (DeweyOrderSet) o2);
         }
-        if (o1 instanceof FacetedMethod && o2 instanceof DeweyOrderSet) {
+        if (o1 instanceof IdentifiedHolder && o2 instanceof DeweyOrderSet) {
             return -1; // members before OrderSets.
         }
-        if (o1 instanceof DeweyOrderSet && o2 instanceof FacetedMethod) {
+        if (o1 instanceof DeweyOrderSet && o2 instanceof IdentifiedHolder) {
             return +1; // members before OrderSets.
         }
-        throw new IllegalArgumentException("can only compare MemberPeers and OrderSets");
+        throw new IllegalArgumentException("can only compare IdentifiedHolders and DeweyOrderSets");
     }
 
-    public int compare(final FacetedMethod o1, final FacetedMethod o2) {
+    public int compare(final IdentifiedHolder o1, final IdentifiedHolder o2) {
         final MemberOrderFacet m1 = getMemberOrder(o1);
         final MemberOrderFacet m2 = getMemberOrder(o2);
 

http://git-wip-us.apache.org/repos/asf/isis/blob/5fa2c117/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/dflt/ObjectSpecificationDefault.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/dflt/ObjectSpecificationDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/dflt/ObjectSpecificationDefault.java
index a4fe7a0..2d049af 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/dflt/ObjectSpecificationDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/dflt/ObjectSpecificationDefault.java
@@ -180,11 +180,17 @@ public class ObjectSpecificationDefault extends ObjectSpecificationAbstract impl
         }
 
         // associations and actions
-        final List<FacetedMethod> associationFacetedMethods = facetedMethodsBuilder.getAssociationFacetedMethods(properties);
-        final List<FacetedMethod> actionFacetedMethods = facetedMethodsBuilder.getActionFacetedMethods(properties);
-
         if(isNotIntrospected()) {
-            final DeweyOrderSet orderSet = DeweyOrderSet.createOrderSet(associationFacetedMethods);
+            final List<FacetedMethod> associationFacetedMethods = facetedMethodsBuilder.getAssociationFacetedMethods(properties);
+            final List<ObjectAssociation> associations = Lists.newArrayList();
+            for (FacetedMethod facetedMethod : associationFacetedMethods) {
+                final ObjectAssociation association = createAssociation(facetedMethod);
+                if(association != null) {
+                    associations.add(association);
+                }
+            }
+            
+            final DeweyOrderSet orderSet = DeweyOrderSet.createOrderSet(associations);
             final MemberGroupLayoutFacet memberGroupLayoutFacet = this.getFacet(MemberGroupLayoutFacet.class);
             
             if(memberGroupLayoutFacet != null) {
@@ -195,16 +201,25 @@ public class ObjectSpecificationDefault extends ObjectSpecificationAbstract impl
                 
                 orderSet.reorderChildren(groupOrder);
             }
-            final List<ObjectAssociation> associations = Lists.newArrayList();
-            convertToAssociations(orderSet, associations);
-            updateAssociations(associations);
+            final List<ObjectAssociation> orderedAssociations = Lists.newArrayList();
+            sortAssociations(orderSet, orderedAssociations);
+            updateAssociations(orderedAssociations);
         }
 
         if(isNotIntrospected()) {
-            final DeweyOrderSet orderSet = DeweyOrderSet.createOrderSet(actionFacetedMethods);
+            final List<FacetedMethod> actionFacetedMethods = facetedMethodsBuilder.getActionFacetedMethods(properties);
             final List<ObjectAction> actions = Lists.newArrayList();
-            convertToObjectActions(orderSet, actions);
-            updateObjectActions(actions);
+            for (FacetedMethod facetedMethod : actionFacetedMethods) {
+                final ObjectAction action = createAction(facetedMethod);
+                if(action != null) {
+                    actions.add(action);
+                }
+            }
+            
+            final DeweyOrderSet orderSet = DeweyOrderSet.createOrderSet(actions);
+            final List<ObjectAction> orderedActions = Lists.newArrayList();
+            sortObjectActions(orderSet, orderedActions);
+            updateObjectActions(orderedActions);
         }
 
         if(isNotIntrospected()) {
@@ -234,7 +249,7 @@ public class ObjectSpecificationDefault extends ObjectSpecificationAbstract impl
         }
     }
 
-    private void convertToAssociations(final DeweyOrderSet orderSet, final List<ObjectAssociation> associationsToAppendTo) {
+    private void sortAssociations(final DeweyOrderSet orderSet, final List<ObjectAssociation> associationsToAppendTo) {
         for (final Object element : orderSet) {
             if (element instanceof FacetedMethod) {
                 final FacetedMethod facetMethod = (FacetedMethod) element;
@@ -252,14 +267,14 @@ public class ObjectSpecificationDefault extends ObjectSpecificationAbstract impl
             } else if (element instanceof DeweyOrderSet) {
                 // just flatten.
                 DeweyOrderSet childOrderSet = (DeweyOrderSet) element;
-                convertToAssociations(childOrderSet, associationsToAppendTo);
+                sortAssociations(childOrderSet, associationsToAppendTo);
             } else {
                 throw new UnknownTypeException(element);
             }
         }
     }
 
-    private void convertToObjectActions(final DeweyOrderSet orderSet, final List<ObjectAction> actionsToAppendTo) {
+    private void sortObjectActions(final DeweyOrderSet orderSet, final List<ObjectAction> actionsToAppendTo) {
         for (final Object element : orderSet) {
             if (element instanceof FacetedMethod) {
                 final FacetedMethod facetedMethod = (FacetedMethod) element;
@@ -275,7 +290,7 @@ public class ObjectSpecificationDefault extends ObjectSpecificationAbstract impl
             else if (element instanceof DeweyOrderSet) {
                 final DeweyOrderSet set = ((DeweyOrderSet) element);
                 final List<ObjectAction> actions = Lists.newArrayList();
-                convertToObjectActions(set, actions);
+                sortObjectActions(set, actions);
                 actionsToAppendTo.addAll(actions);
             } else {
                 throw new UnknownTypeException(element);