[jboss-cvs] jboss-seam/examples/wiki/src/test/org/jboss/seam/wiki/test/editing ...

Christian Bauer christian at hibernate.org
Fri Aug 17 09:00:31 EDT 2007


  User: cbauer  
  Date: 07/08/17 09:00:30

  Added:       examples/wiki/src/test/org/jboss/seam/wiki/test/editing  
                        NestedNodes.xml BasicNodeOperations.java
  Log:
  Major refactoring of core data schema and some new features
  
  Revision  Changes    Path
  1.1      date: 2007/08/17 13:00:30;  author: cbauer;  state: Exp;jboss-seam/examples/wiki/src/test/org/jboss/seam/wiki/test/editing/NestedNodes.xml
  
  Index: NestedNodes.xml
  ===================================================================
  <?xml version="1.0"?>
  
  <dataset>
  
      <NODE NODE_ID="100" NODE_TYPE="DIRECTORY" NODE_REVISION="1" OBJ_VERSION="0" NAME="Test Area" WIKINAME="TestArea"
            READ_ACCESS_LEVEL="0" WRITE_ACCESS_LEVEL="0" MENU_ITEM="true" CREATED_ON="2006-09-23 13:45:00" CREATED_BY_USER_ID="1" LAST_MODIFIED_ON="2006-09-23 13:45:00" LAST_MODIFIED_BY_USER_ID="1"
            AREA_NR="100" PARENT_NODE_ID="1" NS_THREAD="1" NS_LEFT="8" NS_RIGHT="23" DISPLAY_POSITION="2"/>
      <NODE_DIRECTORY DIRECTORY_ID="100" DEFAULT_DOCUMENT_ID="101"/>
  
  
      <NODE NODE_ID="101" NODE_TYPE="DOCUMENT" NODE_REVISION="1" OBJ_VERSION="0" NAME="Test Document1" WIKINAME="TestDocument1"
            READ_ACCESS_LEVEL="0" WRITE_ACCESS_LEVEL="0" MENU_ITEM="true" CREATED_ON="2006-09-23 13:45:00" CREATED_BY_USER_ID="1" LAST_MODIFIED_ON="2006-09-23 13:45:00" LAST_MODIFIED_BY_USER_ID="1"
            AREA_NR="100" PARENT_NODE_ID="100" NS_THREAD="1" NS_LEFT="9" NS_RIGHT="10" DISPLAY_POSITION="0"/>
      <NODE_DOCUMENT DOCUMENT_ID="101" NAME_AS_TITLE="true" ENABLE_COMMENT_FORM="true" ENABLE_COMMENTS="true" CONTENT="This is a *test* document."/>
  
  
      <NODE NODE_ID="102" NODE_TYPE="DOCUMENT" NODE_REVISION="1" OBJ_VERSION="0" NAME="Test Document2" WIKINAME="TestDocument2"
            READ_ACCESS_LEVEL="0" WRITE_ACCESS_LEVEL="0" MENU_ITEM="false" CREATED_ON="2006-09-23 13:45:00" CREATED_BY_USER_ID="1" LAST_MODIFIED_ON="2006-09-23 13:45:00" LAST_MODIFIED_BY_USER_ID="1"
            AREA_NR="100" PARENT_NODE_ID="100" NS_THREAD="1" NS_LEFT="11" NS_RIGHT="12" DISPLAY_POSITION="1"/>
      <NODE_DOCUMENT DOCUMENT_ID="102" NAME_AS_TITLE="false" ENABLE_COMMENT_FORM="false" ENABLE_COMMENTS="false" CONTENT="This is another *test* document."/>
  
  
      <NODE NODE_ID="103" NODE_TYPE="DOCUMENT" NODE_REVISION="1" OBJ_VERSION="0" NAME="Test Document3" WIKINAME="TestDocument3"
            READ_ACCESS_LEVEL="0" WRITE_ACCESS_LEVEL="0" MENU_ITEM="true" CREATED_ON="2006-09-23 13:45:00" CREATED_BY_USER_ID="1" LAST_MODIFIED_ON="2006-09-23 13:45:00" LAST_MODIFIED_BY_USER_ID="1"
            AREA_NR="100" PARENT_NODE_ID="100" NS_THREAD="1" NS_LEFT="13" NS_RIGHT="14" DISPLAY_POSITION="2"/>
      <NODE_DOCUMENT DOCUMENT_ID = "103" NAME_AS_TITLE  = "false" ENABLE_COMMENT_FORM  = "false" ENABLE_COMMENTS  = "false" CONTENT  = "This is a third *test* document."/>
  
  
      <NODE NODE_ID="104" NODE_TYPE="DIRECTORY" NODE_REVISION="1" OBJ_VERSION="0" NAME="Test Subdirectory" WIKINAME="Subdirectory"
            READ_ACCESS_LEVEL="0" WRITE_ACCESS_LEVEL="0" MENU_ITEM="true" CREATED_ON="2006-09-23 13:45:00" CREATED_BY_USER_ID="1"
            LAST_MODIFIED_ON="2006-09-23 13:45:00" LAST_MODIFIED_BY_USER_ID="1"
            AREA_NR="100" PARENT_NODE_ID="100" NS_THREAD="1" NS_LEFT="15" NS_RIGHT="20" DISPLAY_POSITION="3"/>
      <NODE_DIRECTORY DIRECTORY_ID = "104" DEFAULT_DOCUMENT_ID  = "105"/>
  
  
      <NODE NODE_ID="105" NODE_TYPE="DOCUMENT" NODE_REVISION="1" OBJ_VERSION="0" NAME="Test Subdocument1" WIKINAME="TestSubdocument1"
            READ_ACCESS_LEVEL="0" WRITE_ACCESS_LEVEL="0" MENU_ITEM="false" CREATED_ON="2006-09-23 13:45:00" CREATED_BY_USER_ID="1" LAST_MODIFIED_ON="2006-09-23 13:45:00" LAST_MODIFIED_BY_USER_ID="1"
            AREA_NR="100" PARENT_NODE_ID="104" NS_THREAD="1" NS_LEFT="16" NS_RIGHT="17" DISPLAY_POSITION="0"/>
      <NODE_DOCUMENT DOCUMENT_ID = "105" NAME_AS_TITLE  = "false" ENABLE_COMMENT_FORM  = "false" ENABLE_COMMENTS  = "false" CONTENT  = "This is the first sub document."/>
  
  
      <NODE NODE_ID="106" NODE_TYPE="DOCUMENT" NODE_REVISION="1" OBJ_VERSION="0" NAME="Test Subdocument2" WIKINAME="TestSubdocument2"
            READ_ACCESS_LEVEL="0" WRITE_ACCESS_LEVEL="0" MENU_ITEM="true" CREATED_ON="2006-09-23 13:45:00" CREATED_BY_USER_ID="1" LAST_MODIFIED_ON="2006-09-23 13:45:00" LAST_MODIFIED_BY_USER_ID="1"
            AREA_NR="100" PARENT_NODE_ID="104" NS_THREAD="1" NS_LEFT="18" NS_RIGHT="19" DISPLAY_POSITION="1"/>
      <NODE_DOCUMENT DOCUMENT_ID = "106" NAME_AS_TITLE  = "false" ENABLE_COMMENT_FORM  = "false" ENABLE_COMMENTS  = "false" CONTENT  = "This is the second sub document."/>
  
  
      <NODE NODE_ID="107" NODE_TYPE="DOCUMENT" NODE_REVISION="1" OBJ_VERSION="0" NAME="Test Document4" WIKINAME="TestDocument4"
            READ_ACCESS_LEVEL="0" WRITE_ACCESS_LEVEL="0" MENU_ITEM="true" CREATED_ON="2006-09-23 13:45:00" CREATED_BY_USER_ID="1" LAST_MODIFIED_ON="2006-09-23 13:45:00" LAST_MODIFIED_BY_USER_ID="1"
            AREA_NR="100" PARENT_NODE_ID="100" NS_THREAD="1" NS_LEFT="21" NS_RIGHT="22" DISPLAY_POSITION="4"/>
      <NODE_DOCUMENT DOCUMENT_ID = "107" NAME_AS_TITLE = "false" ENABLE_COMMENT_FORM  = "false" ENABLE_COMMENTS  = "false" CONTENT  = "This is a fourth *test* document."/>
  
  
  </dataset>
  
  
  
  1.1      date: 2007/08/17 13:00:30;  author: cbauer;  state: Exp;jboss-seam/examples/wiki/src/test/org/jboss/seam/wiki/test/editing/BasicNodeOperations.java
  
  Index: BasicNodeOperations.java
  ===================================================================
  /*
   * JBoss, Home of Professional Open Source
   *
   * Distributable under LGPL license.
   * See terms of license at gnu.org.
   */
  package org.jboss.seam.wiki.test.editing;
  
  import org.dbunit.operation.DatabaseOperation;
  import org.hibernate.StatelessSession;
  import org.hibernate.ejb.HibernateEntityManagerFactory;
  import org.jboss.seam.log.Log;
  import org.jboss.seam.log.Logging;
  import org.jboss.seam.wiki.core.action.DirectoryHome;
  import org.jboss.seam.wiki.core.action.DocumentHome;
  import org.jboss.seam.wiki.core.dao.NodeDAO;
  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.test.util.DBUnitSeamTest;
  import org.jboss.seam.wiki.util.WikiUtil;
  import org.testng.annotations.Test;
  
  import java.util.Comparator;
  
  public class BasicNodeOperations extends DBUnitSeamTest {
  
      private Log log = Logging.getLog(BasicNodeOperations.class);
  
      private static final Long TEST_WIKI_ROOT_ID = 1l;
  
      private static final Long TEST_DIRECTORY1_ID = 100l;
      private static final Long TEST_DOCUMENT1_ID = 101l;
      private static final Long TEST_DOCUMENT2_ID = 102l;
      private static final Long TEST_DOCUMENT3_ID = 103l;
      private static final Long TEST_DIRECTORY2_ID = 104l;
      private static final Long TEST_DOCUMENT5_ID = 105l;
      private static final Long TEST_DOCUMENT6_ID = 106l;
      private static final Long TEST_DOCUMENT7_ID = 107l;
  
      protected void prepareDBUnitOperations() {
          beforeTestOperations.add(
                  new DataSetOperation("org/jboss/seam/wiki/test/WikiBaseData.xml")
          );
          beforeTestOperations.add(
                  new DataSetOperation("org/jboss/seam/wiki/test/editing/NestedNodes.xml", DatabaseOperation.INSERT)
          );
      }
  
      @Test
      public void deleteDocument() throws Exception {
  
          new FacesRequest("/docEdit.xhtml") {
  
              protected void beforeRequest() {
                  setParameter("nodeId", TEST_DOCUMENT1_ID.toString());
                  setParameter("parentDirId", TEST_DIRECTORY1_ID.toString());
              }
  
              protected void invokeApplication() throws Exception {
  
                  assert checkNestedSetNodeInMemory( (Node)getValue("#{documentHome.instance}"), 9, 10);
                  assert checkNestedSetNodeInMemory( (Node)getValue("#{documentHome.parentDirectory}"), 8, 23);
  
                  assert invokeMethod("#{documentHome.remove}").equals("removed");
              }
  
              protected void renderResponse() throws Exception {
                  assert checkNestedSetNodeInDatabase(TEST_DIRECTORY1_ID, 8, 21);
                  assert checkNestedSetNodeInDatabase(TEST_DOCUMENT2_ID, 9, 10);
                  assert checkNestedSetNodeInDatabase(TEST_DOCUMENT3_ID, 11, 12);
                  assert checkNestedSetNodeInDatabase(TEST_DIRECTORY2_ID, 13, 18);
                  assert checkNestedSetNodeInDatabase(TEST_DOCUMENT5_ID, 14, 15);
                  assert checkNestedSetNodeInDatabase(TEST_DOCUMENT6_ID, 16, 17);
                  assert checkNestedSetNodeInDatabase(TEST_DOCUMENT7_ID, 19, 20);
                  assert checkNestedSetNodeInMemory( (Node)getValue("#{documentHome.parentDirectory}"), 8, 21);
                  assert !checkNodeInDatabase(TEST_DOCUMENT1_ID);
  
                  displayNodeTree( (NodeDAO)getValue("#{nodeDAO}"), (Node)getValue("#{documentHome.parentDirectory}") );
              }
  
          }.run();
      }
  
      @Test
      public void deleteDirectory() throws Exception {
  
          new FacesRequest("/dirEdit.xhtml") {
  
              protected void beforeRequest() {
                  setParameter("nodeId", TEST_DIRECTORY2_ID.toString());
                  setParameter("parentDirId", TEST_DIRECTORY1_ID.toString());
              }
  
              protected void invokeApplication() throws Exception {
                  assert checkNestedSetNodeInDatabase(TEST_DIRECTORY1_ID, 8, 23);
                  assert checkNestedSetNodeInDatabase(TEST_DOCUMENT1_ID, 9, 10);
                  assert checkNestedSetNodeInDatabase(TEST_DOCUMENT2_ID, 11, 12);
                  assert checkNestedSetNodeInDatabase(TEST_DOCUMENT3_ID, 13, 14);
                  assert checkNestedSetNodeInDatabase(TEST_DIRECTORY2_ID, 15, 20);
                  assert checkNestedSetNodeInDatabase(TEST_DOCUMENT5_ID, 16, 17);
                  assert checkNestedSetNodeInDatabase(TEST_DOCUMENT6_ID, 18, 19);
                  assert checkNestedSetNodeInDatabase(TEST_DOCUMENT7_ID, 21, 22);
  
                  assert checkNestedSetNodeInMemory( (Node)getValue("#{directoryHome.instance}"), 15, 20);
                  assert checkNestedSetNodeInMemory( (Node)getValue("#{directoryHome.parentDirectory}"), 8, 23);
  
                  assert invokeMethod("#{directoryHome.remove}").equals("removed");
              }
  
              protected void renderResponse() throws Exception {
                  assert checkNestedSetNodeInDatabase(TEST_DIRECTORY1_ID, 8, 17);
                  assert checkNestedSetNodeInDatabase(TEST_DOCUMENT1_ID, 9, 10);
                  assert checkNestedSetNodeInDatabase(TEST_DOCUMENT2_ID, 11, 12);
                  assert checkNestedSetNodeInDatabase(TEST_DOCUMENT3_ID, 13, 14);
                  assert checkNestedSetNodeInDatabase(TEST_DOCUMENT7_ID, 15, 16);
                  assert checkNestedSetNodeInMemory( (Node)getValue("#{directoryHome.parentDirectory}"), 8, 17);
                  assert !checkNodeInDatabase(TEST_DIRECTORY2_ID);
                  assert !checkNodeInDatabase(TEST_DOCUMENT5_ID);
                  assert !checkNodeInDatabase(TEST_DOCUMENT6_ID);
  
                  displayNodeTree( (NodeDAO)getValue("#{nodeDAO}"), (Node)getValue("#{directoryHome.parentDirectory}") );
              }
  
          }.run();
      }
  
      @Test
      public void createDocumentInArea() throws Exception {
  
          new FacesRequest("/docEdit.xhtml") {
  
              protected void beforeRequest() {
                  setParameter("parentDirId", TEST_DIRECTORY1_ID.toString());
              }
  
              protected void invokeApplication() throws Exception {
  
                  DocumentHome docHome = (DocumentHome)getInstance("documentHome");
                  docHome.getInstance().setName("Testname");
                  docHome.getInstance().setReadAccessLevel(0);
                  docHome.getInstance().setWriteAccessLevel(0);
                  docHome.setFormContent("Testcontent");
  
                  assert checkNestedSetNodeInDatabase(TEST_DIRECTORY1_ID, 8, 23);
                  assert checkNestedSetNodeInDatabase(TEST_DOCUMENT1_ID, 9, 10);
                  assert checkNestedSetNodeInDatabase(TEST_DOCUMENT2_ID, 11, 12);
                  assert checkNestedSetNodeInDatabase(TEST_DOCUMENT3_ID, 13, 14);
                  assert checkNestedSetNodeInDatabase(TEST_DIRECTORY2_ID, 15, 20);
                  assert checkNestedSetNodeInDatabase(TEST_DOCUMENT5_ID, 16, 17);
                  assert checkNestedSetNodeInDatabase(TEST_DOCUMENT6_ID, 18, 19);
                  assert checkNestedSetNodeInDatabase(TEST_DOCUMENT7_ID, 21, 22);
  
                  assert checkNestedSetNodeInMemory( (Node)getValue("#{documentHome.parentDirectory}"), 8, 23);
  
                  assert invokeMethod("#{documentHome.persist}").equals("persisted");
              }
  
              protected void renderResponse() throws Exception {
  
                  assert checkNestedSetNodeInDatabase(TEST_DIRECTORY1_ID, 8, 25);
                  assert checkNestedSetNodeInDatabase(TEST_DOCUMENT1_ID, 9, 10);
                  assert checkNestedSetNodeInDatabase(TEST_DOCUMENT2_ID, 11, 12);
                  assert checkNestedSetNodeInDatabase(TEST_DOCUMENT3_ID, 13, 14);
                  assert checkNestedSetNodeInDatabase(TEST_DIRECTORY2_ID, 15, 20);
                  assert checkNestedSetNodeInDatabase(TEST_DOCUMENT5_ID, 16, 17);
                  assert checkNestedSetNodeInDatabase(TEST_DOCUMENT6_ID, 18, 19);
                  assert checkNestedSetNodeInDatabase(TEST_DOCUMENT7_ID, 21, 22);
                  Node newNode = (Node)getValue("#{documentHome.instance}");
                  assert checkNodeInDatabase(newNode.getId());
                  assert checkNestedSetNodeInMemory(newNode, 23, 24);
                  assert checkNestedSetNodeInDatabase(newNode.getId(), 23, 24);
  
                  Node parentDir = (Node)getValue("#{documentHome.parentDirectory}");
                  assert checkNestedSetNodeInMemory(parentDir, 8, 25);
  
                  displayNodeTree( (NodeDAO)getValue("#{nodeDAO}"), parentDir );
              }
  
          }.run();
      }
  
      @Test
      public void createDocumentInSubdirectory() throws Exception {
  
          new FacesRequest("/docEdit.xhtml") {
  
              protected void beforeRequest() {
                  setParameter("parentDirId", TEST_DIRECTORY2_ID.toString());
              }
  
              protected void invokeApplication() throws Exception {
                  DocumentHome docHome = (DocumentHome)getInstance("documentHome");
                  docHome.getInstance().setName("Testname");
                  docHome.getInstance().setReadAccessLevel(0);
                  docHome.getInstance().setWriteAccessLevel(0);
                  docHome.setFormContent("Testcontent");
  
                  assert checkNestedSetNodeInDatabase(TEST_DIRECTORY1_ID, 8, 23);
                  assert checkNestedSetNodeInDatabase(TEST_DOCUMENT1_ID, 9, 10);
                  assert checkNestedSetNodeInDatabase(TEST_DOCUMENT2_ID, 11, 12);
                  assert checkNestedSetNodeInDatabase(TEST_DOCUMENT3_ID, 13, 14);
                  assert checkNestedSetNodeInDatabase(TEST_DIRECTORY2_ID, 15, 20);
                  assert checkNestedSetNodeInDatabase(TEST_DOCUMENT5_ID, 16, 17);
                  assert checkNestedSetNodeInDatabase(TEST_DOCUMENT6_ID, 18, 19);
                  assert checkNestedSetNodeInDatabase(TEST_DOCUMENT7_ID, 21, 22);
  
                  assert checkNestedSetNodeInMemory( (Node)getValue("#{documentHome.parentDirectory}"), 15, 20);
  
                  assert invokeMethod("#{documentHome.persist}").equals("persisted");
              }
  
              protected void renderResponse() throws Exception {
                  assert checkNestedSetNodeInDatabase(TEST_DIRECTORY1_ID, 8, 25);
                  assert checkNestedSetNodeInDatabase(TEST_DOCUMENT1_ID, 9, 10);
                  assert checkNestedSetNodeInDatabase(TEST_DOCUMENT2_ID, 11, 12);
                  assert checkNestedSetNodeInDatabase(TEST_DOCUMENT3_ID, 13, 14);
                  assert checkNestedSetNodeInDatabase(TEST_DIRECTORY2_ID, 15, 22);
                  assert checkNestedSetNodeInDatabase(TEST_DOCUMENT5_ID, 16, 17);
                  assert checkNestedSetNodeInDatabase(TEST_DOCUMENT6_ID, 18, 19);
                  assert checkNestedSetNodeInDatabase(TEST_DOCUMENT7_ID, 23, 24);
                  Node newNode = (Node)getValue("#{documentHome.instance}");
                  assert checkNodeInDatabase(newNode.getId());
                  assert checkNestedSetNodeInMemory(newNode, 20, 21);
                  assert checkNestedSetNodeInDatabase(newNode.getId(), 20, 21);
  
                  Node parentDir = (Node)getValue("#{documentHome.parentDirectory}");
                  assert checkNestedSetNodeInMemory(parentDir, 15, 22);
  
                  displayNodeTree( (NodeDAO)getValue("#{nodeDAO}"), parentDir );
              }
  
          }.run();
      }
  
      @Test
      public void moveDirectoryLeft() throws Exception {
  
          new FacesRequest("/dirEdit.xhtml") {
  
              protected void beforeRequest() {
                  setParameter("nodeId", TEST_DIRECTORY1_ID.toString());
                  setParameter("parentDirId", TEST_WIKI_ROOT_ID.toString());
              }
  
              protected void invokeApplication() throws Exception {
                  DirectoryHome dirHome = (DirectoryHome)getInstance("directoryHome");
  
                  // Move the TEST_DIRECTORY2 (position 3) to position 1
                  WikiUtil.shiftListElement(dirHome.getInstance().getChildren(), 3, 1);
  
                  assert invokeMethod("#{directoryHome.update}").equals("updated");
              }
  
              protected void renderResponse() throws Exception {
  
                  assert checkNestedSetNodeInDatabase(TEST_DIRECTORY1_ID, 8, 23);
                  assert checkNestedSetNodeInDatabase(TEST_DOCUMENT1_ID, 9, 10);
                  assert checkNestedSetNodeInDatabase(TEST_DOCUMENT2_ID, 11, 12);
                  assert checkNestedSetNodeInDatabase(TEST_DOCUMENT3_ID, 13, 14);
                  assert checkNestedSetNodeInDatabase(TEST_DOCUMENT7_ID, 21, 22);
                  assert checkNestedSetNodeInDatabase(TEST_DIRECTORY2_ID, 15, 20);
                  assert checkNestedSetNodeInDatabase(TEST_DOCUMENT5_ID, 16, 17);
                  assert checkNestedSetNodeInDatabase(TEST_DOCUMENT6_ID, 18, 19);
  
                  DirectoryHome dirHome = (DirectoryHome)getInstance("directoryHome");
  
                  assert dirHome.getInstance().getChildren().get(0).getId().equals(TEST_DOCUMENT1_ID);
                  assert checkNestedSetNodeInMemory(dirHome.getInstance().getChildren().get(0), 9, 10);
  
                  displayNodeTree( (NodeDAO)getValue("#{nodeDAO}"), (Node)getValue("#{directoryHome.instance}") );
  
              }
  
          }.run();
      }
  
  
      @Test
      public void moveDocumentRight() throws Exception {
  
          new FacesRequest("/dirEdit.xhtml") {
  
              protected void beforeRequest() {
                  setParameter("nodeId", TEST_DIRECTORY1_ID.toString());
                  setParameter("parentDirId", TEST_WIKI_ROOT_ID.toString());
              }
  
              protected void invokeApplication() throws Exception {
                  DirectoryHome dirHome = (DirectoryHome)getInstance("directoryHome");
  
                  // Move the TEST_DOCUMENT2 (position 1) to position 3
                  WikiUtil.shiftListElement(dirHome.getInstance().getChildren(), 1, 3);
  
                  assert invokeMethod("#{directoryHome.update}").equals("updated");
              }
  
              protected void renderResponse() throws Exception {
  
                  assert checkNestedSetNodeInDatabase(TEST_DIRECTORY1_ID, 8, 23);
                  assert checkNestedSetNodeInDatabase(TEST_DOCUMENT1_ID, 9, 10);
                  assert checkNestedSetNodeInDatabase(TEST_DOCUMENT2_ID, 11, 12);
                  assert checkNestedSetNodeInDatabase(TEST_DOCUMENT3_ID, 13, 14);
                  assert checkNestedSetNodeInDatabase(TEST_DOCUMENT7_ID, 21, 22);
                  assert checkNestedSetNodeInDatabase(TEST_DIRECTORY2_ID, 15, 20);
                  assert checkNestedSetNodeInDatabase(TEST_DOCUMENT5_ID, 16, 17);
                  assert checkNestedSetNodeInDatabase(TEST_DOCUMENT6_ID, 18, 19);
  
                  DirectoryHome dirHome = (DirectoryHome)getInstance("directoryHome");
  
                  assert dirHome.getInstance().getChildren().get(0).getId().equals(TEST_DOCUMENT1_ID);
                  assert checkNestedSetNodeInMemory(dirHome.getInstance().getChildren().get(0), 9, 10);
  
                  displayNodeTree( (NodeDAO)getValue("#{nodeDAO}"), (Node)getValue("#{directoryHome.instance}") );
              }
  
          }.run();
      }
  
      /* ############################################################################################################## */
  
      private boolean checkNestedSetNodeInMemory(Node node, long left, long right) throws Exception {
          return node.getNsLeft() == left && node.getNsRight() == right;
      }
  
      private boolean checkNestedSetNodeInDatabase(long nodeId, long left, long right) throws Exception {
          StatelessSession ss = getStatelessSession();
          Node node = (Node)ss.createQuery("select n from Node n left join fetch n.parent where n.id = :id").setParameter("id", nodeId).uniqueResult();
          ss.close();
          return node.getNsLeft() == left && node.getNsRight() == right;
      }
  
      private boolean checkNodeInDatabase(long nodeId) throws Exception {
          StatelessSession ss = getStatelessSession();
          Node node = (Node)ss.createQuery("select n from Node n left join fetch n.parent where n.id = :id").setParameter("id", nodeId).uniqueResult();
          ss.close();
          return node != null;
      }
  
      private StatelessSession getStatelessSession() throws Exception {
          org.jboss.ejb3.entity.InjectedEntityManagerFactory jbossEMF =
                  (org.jboss.ejb3.entity.InjectedEntityManagerFactory) getInitialContext().lookup("java:/entityManagerFactories/wiki");
          return ((HibernateEntityManagerFactory) jbossEMF.getDelegate()).getSessionFactory().openStatelessSession();
      }
  
      private void displayNodeTree(NodeDAO dao, Node startNode) {
          if (log.isTraceEnabled()) {
  
              Comparator<NestedSetNodeWrapper<Node>> comp =
                  new Comparator<NestedSetNodeWrapper<Node>>() {
                      public int compare(NestedSetNodeWrapper<Node> o, NestedSetNodeWrapper<Node> o2) {
                          return o.getWrappedNode().getDisplayPosition().compareTo(o2.getWrappedNode().getDisplayPosition());
                      }
                  };
              NestedSetNodeWrapper<Node> startNodeWrapper = new NestedSetNodeWrapper<Node>(startNode, comp);
              NestedSetResultTransformer<Node> transformer = new NestedSetResultTransformer<Node>(startNodeWrapper);
              dao.appendNestedSetNodes(transformer, null, false);
  
              log.trace("######################################## TREE BEGIN #####################################################");
              displayNodes(startNodeWrapper);
              log.trace("######################################## TREE END   #####################################################");
          }
      }
      private void displayNodes(NestedSetNodeWrapper<Node> startNode) {
          StringBuffer levelMarkers = new StringBuffer();
          for (int i = 1; i <= startNode.getLevel(); i++) {
              levelMarkers.append("#");
          }
          log.trace(levelMarkers.toString() + " " + startNode);
          for (NestedSetNodeWrapper<Node> next : startNode.getWrappedChildren()) {
              displayNodes(next);
          }
      }
  
  }
  
  
  



More information about the jboss-cvs-commits mailing list