[jboss-cvs] jboss-seam/examples/wiki/src/main/org/jboss/seam/wiki/core/dao ...
Christian Bauer
christian at hibernate.org
Sat Sep 15 13:06:17 EDT 2007
User: cbauer
Date: 07/09/15 13:06:17
Modified: examples/wiki/src/main/org/jboss/seam/wiki/core/dao
WikiNodeFactory.java NodeDAO.java
Added: examples/wiki/src/main/org/jboss/seam/wiki/core/dao
WikiTreeNodeAdapter.java
Log:
Various updates (tests still broken)
Revision Changes Path
1.10 +4 -4 jboss-seam/examples/wiki/src/main/org/jboss/seam/wiki/core/dao/WikiNodeFactory.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: WikiNodeFactory.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/examples/wiki/src/main/org/jboss/seam/wiki/core/dao/WikiNodeFactory.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -b -r1.9 -r1.10
--- WikiNodeFactory.java 17 Aug 2007 13:00:26 -0000 1.9
+++ WikiNodeFactory.java 15 Sep 2007 17:06:17 -0000 1.10
@@ -32,7 +32,7 @@
@In
protected EntityManager restrictedEntityManager;
- @Factory(value = "wikiRoot", scope = ScopeType.CONVERSATION, autoCreate = true)
+ @Factory(value = "wikiRoot", scope = ScopeType.PAGE, autoCreate = true)
public Directory loadWikiRoot() {
entityManager.joinTransaction();
try {
@@ -45,7 +45,7 @@
}
}
- @Factory(value = "wikiStart", scope = ScopeType.CONVERSATION, autoCreate = true)
+ @Factory(value = "wikiStart", scope = ScopeType.PAGE, autoCreate = true)
public Document loadWikiStart() {
restrictedEntityManager.joinTransaction();
WikiPreferences wikiPreferences = (WikiPreferences) Component.getInstance("wikiPreferences");
@@ -64,7 +64,7 @@
}
// Loads the same instance into a different persistence context
- @Factory(value = "restrictedWikiRoot", scope = ScopeType.CONVERSATION, autoCreate = true)
+ @Factory(value = "restrictedWikiRoot", scope = ScopeType.PAGE, autoCreate = true)
public Directory loadWikiRootRestricted() {
Directory wikiroot = (Directory) Component.getInstance("wikiRoot");
@@ -80,7 +80,7 @@
}
}
- @Factory(value = "memberArea", scope = ScopeType.CONVERSATION, autoCreate = true)
+ @Factory(value = "memberArea", scope = ScopeType.PAGE, autoCreate = true)
public Directory loadMemberArea() {
Long memberAreaId = ((WikiPreferences)Component.getInstance("wikiPreferences")).getMemberAreaId();
entityManager.joinTransaction();
1.27 +21 -21 jboss-seam/examples/wiki/src/main/org/jboss/seam/wiki/core/dao/NodeDAO.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: NodeDAO.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/examples/wiki/src/main/org/jboss/seam/wiki/core/dao/NodeDAO.java,v
retrieving revision 1.26
retrieving revision 1.27
diff -u -b -r1.26 -r1.27
--- NodeDAO.java 6 Sep 2007 15:54:28 -0000 1.26
+++ NodeDAO.java 15 Sep 2007 17:06:17 -0000 1.27
@@ -12,7 +12,6 @@
import org.jboss.seam.wiki.core.nestedset.NestedSetNodeWrapper;
import org.jboss.seam.wiki.core.nestedset.NestedSetResultTransformer;
import org.jboss.seam.wiki.core.nestedset.NestedSetNodeDuplicator;
-import org.jboss.seam.wiki.preferences.PreferenceProvider;
import org.jboss.seam.Component;
import org.jboss.seam.log.Log;
import org.hibernate.Session;
@@ -20,7 +19,6 @@
import javax.persistence.EntityManager;
import javax.persistence.EntityNotFoundException;
import javax.persistence.NoResultException;
-import javax.persistence.Query;
import java.util.*;
/**
@@ -318,25 +316,7 @@
public NestedSetNodeWrapper<Node> findMenuItems(Node startNode, Long maxDepth, Long flattenToLevel, boolean showAdminOnly) {
- // Needs to be equals() safe (SortedSet):
- // - compare by display position, if equal
- // - compare by name, if equal
- // - compare by id
- Comparator<NestedSetNodeWrapper<Node>> comp =
- new Comparator<NestedSetNodeWrapper<Node>>() {
- public int compare(NestedSetNodeWrapper<Node> o1, NestedSetNodeWrapper<Node> o2) {
- Node node1 = o1.getWrappedNode();
- Node node2 = o2.getWrappedNode();
- if (node1.getDisplayPosition().compareTo(node2.getDisplayPosition()) != 0) {
- return node1.getDisplayPosition().compareTo(node2.getDisplayPosition());
- } else if (node1.getName().compareTo(node2.getName()) != 0) {
- return node1.getName().compareTo(node2.getName());
- }
- return node1.getId().compareTo(node2.getId());
- }
- };
-
- NestedSetNodeWrapper<Node> startNodeWrapper = new NestedSetNodeWrapper<Node>(startNode, comp);
+ NestedSetNodeWrapper<Node> startNodeWrapper = new NestedSetNodeWrapper<Node>(startNode, getComparatorDisplayPosition());
NestedSetResultTransformer<Node> transformer = new NestedSetResultTransformer<Node>(startNodeWrapper, flattenToLevel);
// Make hollow copies for menu display so that changes to the model in the persistence context don't appear
@@ -425,4 +405,24 @@
return ((Session)((org.jboss.seam.persistence.EntityManagerProxy) entityManager).getDelegate());
}
}
+
+ public Comparator<NestedSetNodeWrapper<Node>> getComparatorDisplayPosition() {
+ // Needs to be equals() safe (SortedSet):
+ // - compare by display position, if equal
+ // - compare by name, if equal
+ // - compare by id
+ return
+ new Comparator<NestedSetNodeWrapper<Node>>() {
+ public int compare(NestedSetNodeWrapper<Node> o1, NestedSetNodeWrapper<Node> o2) {
+ Node node1 = o1.getWrappedNode();
+ Node node2 = o2.getWrappedNode();
+ if (node1.getDisplayPosition().compareTo(node2.getDisplayPosition()) != 0) {
+ return node1.getDisplayPosition().compareTo(node2.getDisplayPosition());
+ } else if (node1.getName().compareTo(node2.getName()) != 0) {
+ return node1.getName().compareTo(node2.getName());
+ }
+ return node1.getId().compareTo(node2.getId());
+ }
+ };
+ }
}
1.1 date: 2007/09/15 17:06:17; author: cbauer; state: Exp;jboss-seam/examples/wiki/src/main/org/jboss/seam/wiki/core/dao/WikiTreeNodeAdapter.java
Index: WikiTreeNodeAdapter.java
===================================================================
package org.jboss.seam.wiki.core.dao;
import org.richfaces.model.TreeNode;
import org.jboss.seam.wiki.core.model.Node;
import org.jboss.seam.wiki.core.nestedset.NestedSetNodeWrapper;
import org.jboss.seam.wiki.core.nestedset.NestedSetResultTransformer;
import org.jboss.seam.wiki.util.WikiUtil;
import org.jboss.seam.Component;
import java.util.*;
public class WikiTreeNodeAdapter extends NestedSetNodeWrapper<Node>
implements org.richfaces.model.TreeNode {
private Long prefetchDepth;
public WikiTreeNodeAdapter(Node wrappedNode, Comparator<NestedSetNodeWrapper<Node>> comparator, Long prefetchDepth) {
super(wrappedNode, comparator);
this.prefetchDepth = prefetchDepth;
}
private WikiTreeNodeAdapter(Node wrappedNode,
Comparator<NestedSetNodeWrapper<Node>> comparator,
Long level,
Map<String, Object> additionalProjections,
Long prefetchDepth) {
super(wrappedNode, comparator, level, additionalProjections);
this.prefetchDepth = prefetchDepth;
}
public Object getData() {
return this;
}
public boolean isLeaf() {
//return !WikiUtil.isDirectory(this.getWrappedNode());
if (!childrenLoaded && getWrappedNode().getTotalChildCount() != 0) {
System.out.println("###### LOADING CHILDREN OF: " + this);
loadChildren();
childrenLoaded = true;
}
if (childrenLoaded) {
System.out.println("###### CHILDREN ARE LOADED OF: " + this);
return getWrappedChildren().size() == 0;
}
System.out.println("###### HUH?: " + this);
return true;
}
public Iterator getChildren() {
//if (!childrenLoaded) loadChildren();
// Super ugly API, need to return Map.Entry
return new Iterator() {
final List wrappedList = new ArrayList(getWrappedChildrenSorted());
Iterator wrappedIterator = new ArrayList(getWrappedChildrenSorted()).iterator();
public boolean hasNext() {
return wrappedIterator.hasNext();
}
public Object next() {
final WikiTreeNodeAdapter next = (WikiTreeNodeAdapter)wrappedIterator.next();
return new Map.Entry() {
public Object getKey() { return wrappedList.indexOf(next); }
public Object getValue() { return next; }
public Object setValue(Object o) { throw new UnsupportedOperationException(); }
};
}
public void remove() { throw new UnsupportedOperationException(); }
};
}
public TreeNode getChild(Object identifier) {
return (WikiTreeNodeAdapter)new ArrayList(getWrappedChildrenSorted()).get( (Integer)identifier );
}
public TreeNode getParent() {
return (WikiTreeNodeAdapter)getWrappedParent();
}
public void setData(Object o) {
throw new UnsupportedOperationException("Tree is immutable!");
}
public void addChild(Object o, TreeNode treeNode) {
throw new UnsupportedOperationException("Tree is immutable!");
}
public void removeChild(Object o) {
throw new UnsupportedOperationException("Tree is immutable!");
}
public void setParent(TreeNode treeNode) {
throw new UnsupportedOperationException("Tree is immutable!");
}
public void loadChildren() {
// Override creation of adapters when the tree is transformed
NestedSetResultTransformer<Node> transformer =
new NestedSetResultTransformer<Node>(this) {
public NestedSetNodeWrapper<Node> createNestedSetNodeWrapper(Node nestedSetNode,
Comparator<NestedSetNodeWrapper<Node>> comparator,
Long nestedSetNodeLevel,
Map<String, Object> additionalProjectionValues) {
return new WikiTreeNodeAdapter(nestedSetNode, comparator, nestedSetNodeLevel, additionalProjectionValues, prefetchDepth);
}
public void flattenTree(List<NestedSetNodeWrapper<Node>> flatChildren, long i, NestedSetNodeWrapper<Node> nestedSetNodeWrapper) {
throw new UnsupportedOperationException("Can't flatten an adapted nested set tree for RichFaces display");
}
};
NodeDAO nodeDAO = (NodeDAO) Component.getInstance("nodeDAO");
nodeDAO.appendNestedSetNodes(transformer, prefetchDepth, false, "n1.class = 'DIRECTORY'");
}
}
More information about the jboss-cvs-commits
mailing list