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