[exo-jcr-commits] exo-jcr SVN: r2047 - in jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/optimisation: db and 1 other directory.

do-not-reply at jboss.org do-not-reply at jboss.org
Wed Mar 10 05:15:57 EST 2010


Author: nfilotto
Date: 2010-03-10 05:15:57 -0500 (Wed, 10 Mar 2010)
New Revision: 2047

Modified:
   jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/optimisation/CQJDBCStorageConnection.java
   jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/optimisation/db/MultiDbJDBCConnection.java
   jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/optimisation/db/SingleDbJDBCConnection.java
Log:
EXOJCR-579: the new traverseQPath based on complex queries has been removed, we will use the old traverseQPath since the performances are very similar and we have bad performances with hsqldb

Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/optimisation/CQJDBCStorageConnection.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/optimisation/CQJDBCStorageConnection.java	2010-03-10 09:52:09 UTC (rev 2046)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/optimisation/CQJDBCStorageConnection.java	2010-03-10 10:15:57 UTC (rev 2047)
@@ -28,7 +28,6 @@
 import org.exoplatform.services.jcr.datamodel.NodeData;
 import org.exoplatform.services.jcr.datamodel.PropertyData;
 import org.exoplatform.services.jcr.datamodel.QPath;
-import org.exoplatform.services.jcr.datamodel.QPathEntry;
 import org.exoplatform.services.jcr.datamodel.ValueData;
 import org.exoplatform.services.jcr.impl.Constants;
 import org.exoplatform.services.jcr.impl.dataflow.persistent.ByteArrayPersistedValueData;
@@ -55,7 +54,6 @@
 import java.util.StringTokenizer;
 import java.util.TreeSet;
 
-import javax.jcr.InvalidItemStateException;
 import javax.jcr.RepositoryException;
 
 /**
@@ -93,11 +91,6 @@
    protected String FIND_REFERENCE_PROPERTIES_CQ;
 
    /**
-    * FIND_ITEM_QPATH_BY_ID_CQ.
-    */
-   protected String FIND_ITEM_QPATH_BY_ID_CQ;
-
-   /**
     * The comparator used to sort the value data
     */
    private static Comparator<ValueData> COMPARATOR_VALUE_DATA = new Comparator<ValueData>()
@@ -731,84 +724,6 @@
       }
    }
 
-   /**
-    * {@inheritDoc} 
-    */
-   @Override
-   protected QPath traverseQPath(String cpid) throws SQLException, InvalidItemStateException, IllegalNameException
-   {
-      String id = getIdentifier(cpid);
-      if (id.equals(Constants.ROOT_UUID))
-      {
-         return Constants.ROOT_PATH;
-      }
-      // get item by Identifier usecase
-      List<QPathEntry> qrpath = new ArrayList<QPathEntry>(); // reverted path
-      String caid = cpid; // container ancestor id
-      boolean isRoot = false;
-      do
-      {
-         ResultSet result = null;
-         try
-         {
-            result = findItemQPathByIdentifierCQ(caid);
-            if (!result.next())
-               throw new InvalidItemStateException("Parent not found, uuid: " + getIdentifier(caid));
-
-            QPathEntry qpe1 =
-               new QPathEntry(InternalQName.parse(result.getString(COLUMN_NAME)), result.getInt(COLUMN_INDEX));
-            boolean isChild = caid.equals(result.getString(COLUMN_ID));
-            caid = result.getString(COLUMN_PARENTID);
-            if (result.next())
-            {
-               QPathEntry qpe2 =
-                  new QPathEntry(InternalQName.parse(result.getString(COLUMN_NAME)), result.getInt(COLUMN_INDEX));
-               if (isChild)
-               {
-                  // The child is the first result then we have the parent
-                  qrpath.add(qpe1);
-                  qrpath.add(qpe2);
-                  // We need to take the value of the parent node
-                  caid = result.getString(COLUMN_PARENTID);
-               }
-               else
-               {
-                  // The parent is the first result then we have the child
-                  qrpath.add(qpe2);
-                  qrpath.add(qpe1);
-               }
-            }
-            else
-            {
-               qrpath.add(qpe1);
-            }
-         }
-         finally
-         {
-            result.close();
-         }
-         if (caid.equals(Constants.ROOT_PARENT_UUID) || (id = getIdentifier(caid)).equals(Constants.ROOT_UUID))
-         {
-            if (id.equals(Constants.ROOT_UUID))
-            {
-               qrpath.add(Constants.ROOT_PATH.getEntries()[0]);
-            }
-            isRoot = true;
-         }
-      }
-      while (!isRoot);
-
-      QPathEntry[] qentries = new QPathEntry[qrpath.size()];
-      int qi = 0;
-      for (int i = qrpath.size() - 1; i >= 0; i--)
-      {
-         qentries[qi++] = qrpath.get(i);
-      }
-      return new QPath(qentries);
-   }
-
-   protected abstract ResultSet findItemQPathByIdentifierCQ(String identifier) throws SQLException;
-
    protected abstract ResultSet findChildNodesByParentIdentifierCQ(String parentIdentifier) throws SQLException;
 
    protected abstract ResultSet findChildPropertiesByParentIdentifierCQ(String parentIdentifier) throws SQLException;

Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/optimisation/db/MultiDbJDBCConnection.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/optimisation/db/MultiDbJDBCConnection.java	2010-03-10 09:52:09 UTC (rev 2046)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/optimisation/db/MultiDbJDBCConnection.java	2010-03-10 10:15:57 UTC (rev 2047)
@@ -213,11 +213,6 @@
             + " from JCR_MITEM I, JCR_MVALUE V"
             + " where I.I_CLASS=2 and I.PARENT_ID=? and (I.NAME='[http://www.jcp.org/jcr/1.0]primaryType' or I.NAME='[http://www.jcp.org/jcr/1.0]mixinTypes' or I.NAME='[http://www.exoplatform.com/jcr/exo/1.0]owner' or I.NAME='[http://www.exoplatform.com/jcr/exo/1.0]permissions') and I.ID=V.PROPERTY_ID";
 
-      FIND_ITEM_QPATH_BY_ID_CQ =
-         "select I.ID, I.PARENT_ID, I.NAME, I.I_INDEX"
-            + " from JCR_MITEM I, (SELECT ID, PARENT_ID from JCR_MITEM where ID=?) J"
-            + " where I.ID = J.ID or I.ID = J.PARENT_ID";
-
       FIND_NODES_COUNT_BY_PARENTID = "select count(ID) from JCR_MITEM" + " where I_CLASS=1 and PARENT_ID=?";
 
       FIND_PROPERTIES_BY_PARENTID = "select * from JCR_MITEM" + " where I_CLASS=2 and PARENT_ID=?" + " order by ID";
@@ -655,21 +650,6 @@
     * {@inheritDoc}
     */
    @Override
-   protected ResultSet findItemQPathByIdentifierCQ(String identifier) throws SQLException
-   {
-      if (findItemQPathByIdentifierCQ == null)
-         findItemQPathByIdentifierCQ = dbConnection.prepareStatement(FIND_ITEM_QPATH_BY_ID_CQ);
-      else
-         findItemQPathByIdentifierCQ.clearParameters();
-
-      findItemQPathByIdentifierCQ.setString(1, identifier);
-      return findItemQPathByIdentifierCQ.executeQuery();
-   }
-
-   /**
-    * {@inheritDoc}
-    */
-   @Override
    protected ResultSet findReferencePropertiesCQ(String nodeIdentifier) throws SQLException
    {
       if (findReferencePropertiesCQ == null)

Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/optimisation/db/SingleDbJDBCConnection.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/optimisation/db/SingleDbJDBCConnection.java	2010-03-10 09:52:09 UTC (rev 2046)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/optimisation/db/SingleDbJDBCConnection.java	2010-03-10 10:15:57 UTC (rev 2047)
@@ -221,11 +221,6 @@
             + " from JCR_SITEM I, JCR_SVALUE V"
             + " where I.I_CLASS=2 and I.CONTAINER_NAME=? and I.PARENT_ID=? and (I.NAME='[http://www.jcp.org/jcr/1.0]primaryType' or I.NAME='[http://www.jcp.org/jcr/1.0]mixinTypes' or I.NAME='[http://www.exoplatform.com/jcr/exo/1.0]owner' or I.NAME='[http://www.exoplatform.com/jcr/exo/1.0]permissions') and I.ID=V.PROPERTY_ID";
 
-      FIND_ITEM_QPATH_BY_ID_CQ =
-         "select I.ID, I.PARENT_ID, I.NAME, I.I_INDEX"
-            + " from JCR_SITEM I, (SELECT ID, PARENT_ID from JCR_SITEM where ID=?) J"
-            + " where I.ID = J.ID or I.ID = J.PARENT_ID";
-
       FIND_NODES_COUNT_BY_PARENTID =
          "select count(ID) from JCR_SITEM" + " where I_CLASS=1 and CONTAINER_NAME=? and PARENT_ID=?";
 
@@ -679,21 +674,6 @@
     * {@inheritDoc}
     */
    @Override
-   protected ResultSet findItemQPathByIdentifierCQ(String identifier) throws SQLException
-   {
-      if (findItemQPathByIdentifierCQ == null)
-         findItemQPathByIdentifierCQ = dbConnection.prepareStatement(FIND_ITEM_QPATH_BY_ID_CQ);
-      else
-         findItemQPathByIdentifierCQ.clearParameters();
-
-      findItemQPathByIdentifierCQ.setString(1, identifier);
-      return findItemQPathByIdentifierCQ.executeQuery();
-   }
-
-   /**
-    * {@inheritDoc}
-    */
-   @Override
    protected ResultSet findReferencePropertiesCQ(String nodeIdentifier) throws SQLException
    {
       if (findReferencePropertiesCQ == null)



More information about the exo-jcr-commits mailing list