[exo-jcr-commits] exo-jcr SVN: r1148 - in jcr/branches/1.12.0-OPT/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
Tue Dec 22 11:44:55 EST 2009


Author: sergiykarpenko
Date: 2009-12-22 11:44:55 -0500 (Tue, 22 Dec 2009)
New Revision: 1148

Modified:
   jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/optimisation/DBConstants.java
   jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/optimisation/NewJDBCStorageConnection.java
   jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/optimisation/db/MultiDbJDBCConnection.java
   jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/optimisation/db/SingleDbJDBCConnection.java
Log:
EXOJCR-302: GET_PROPERTIES_BY_PARENTID fixed and FIND_REFERENCE_PROPERTIES query added

Modified: jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/optimisation/DBConstants.java
===================================================================
--- jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/optimisation/DBConstants.java	2009-12-22 16:31:07 UTC (rev 1147)
+++ jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/optimisation/DBConstants.java	2009-12-22 16:44:55 UTC (rev 1148)
@@ -119,6 +119,8 @@
     */
    protected String FIND_REFERENCES;
 
+   protected String FIND_REFERENCE_PROPERTIES;
+
    /**
     * FIND_VALUES_BY_PROPERTYID.
     */

Modified: jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/optimisation/NewJDBCStorageConnection.java
===================================================================
--- jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/optimisation/NewJDBCStorageConnection.java	2009-12-22 16:31:07 UTC (rev 1147)
+++ jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/optimisation/NewJDBCStorageConnection.java	2009-12-22 16:44:55 UTC (rev 1148)
@@ -636,21 +636,17 @@
       checkIfOpened();
       try
       {
-         ResultSet prop = findChildPropertiesByParentIdentifier(getInternalId(parent.getIdentifier()));
+
+         ResultSet resultSet = getChildPropertiesByParentIdentifier(getInternalId(parent.getIdentifier()));
          List<PropertyData> children = new ArrayList<PropertyData>();
-         while (prop.next())
-            children.add((PropertyData)itemData(parent.getQPath(), prop, I_CLASS_PROPERTY, null));
+         if (resultSet.next())
+         {
+            while (!resultSet.isAfterLast())
+               children.add(loadPropertyRecord(resultSet, parent.getQPath()));
+         }
 
          return children;
 
-         //TODO mine
-         //         ResultSet prop = getChildPropertiesByParentIdentifier(getInternalId(parent.getIdentifier()));
-         //         List<PropertyData> children = new ArrayList<PropertyData>();
-         //         while (prop.next())
-         //            children.add(loadPropertyRecord(prop, parent.getQPath()));
-         //
-         //         return children;
-
       }
       catch (SQLException e)
       {
@@ -723,6 +719,15 @@
          {
             references.add((PropertyData)itemData(null, refProps, I_CLASS_PROPERTY, null));
          }
+
+         ResultSet resultSet = findReferenceProperties(getInternalId(nodeIdentifier));
+         references = new ArrayList<PropertyData>(); //List<PropertyData> 
+         if (resultSet.next())
+         {
+            while (!resultSet.isAfterLast())
+               references.add(loadPropertyRecord(resultSet, null));
+         }
+
          return references;
       }
       catch (SQLException e)
@@ -2262,4 +2267,6 @@
    protected abstract ResultSet findChildNodesByParentIdentifierNew(String parentIdentifier) throws SQLException;
 
    protected abstract ResultSet getChildPropertiesByParentIdentifier(String parentIdentifier) throws SQLException;
+
+   protected abstract ResultSet findReferenceProperties(String parentIdentifier) throws SQLException;
 }

Modified: jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/optimisation/db/MultiDbJDBCConnection.java
===================================================================
--- jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/optimisation/db/MultiDbJDBCConnection.java	2009-12-22 16:31:07 UTC (rev 1147)
+++ jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/optimisation/db/MultiDbJDBCConnection.java	2009-12-22 16:44:55 UTC (rev 1148)
@@ -71,6 +71,8 @@
 
    protected PreparedStatement findReferences;
 
+   protected PreparedStatement findReferenceProperties;
+
    protected PreparedStatement findValuesByPropertyId;
 
    protected PreparedStatement findValuesDataByPropertyId;
@@ -206,6 +208,11 @@
          "select P.ID, P.PARENT_ID, P.VERSION, P.P_TYPE, P.P_MULTIVALUED, P.NAME" + " from JCR_MREF R, JCR_MITEM P"
             + " where R.NODE_ID=? and P.ID=R.PROPERTY_ID and P.I_CLASS=2";
 
+      FIND_REFERENCE_PROPERTIES =
+         "select P.ID, P.PARENT_ID, P.VERSION, P.P_TYPE, P.P_MULTIVALUED, P.NAME, V.ORDER_NUM, V.DATA, V.STORAGE_DESC"
+            + " from JCR_MREF R, JCR_MITEM P, JCR_MVALUE V"
+            + " where R.NODE_ID=? and P.ID=R.PROPERTY_ID and P.I_CLASS=2 and V.PROPERTY_ID=P.ID order by P.ID, V.ORDER_NUM";
+
       FIND_VALUES_BY_PROPERTYID =
          "select PROPERTY_ID, ORDER_NUM, DATA, STORAGE_DESC from JCR_MVALUE where PROPERTY_ID=? order by ORDER_NUM";
 
@@ -226,9 +233,14 @@
 
       FIND_PROPERTIES_BY_PARENTID = "select * from JCR_MITEM" + " where I_CLASS=2 and PARENT_ID=?" + " order by ID";
 
+      //TODO this query is incorrect because property may have not value
+      //      GET_PROPERTIES_BY_PARENTID =
+      //         "select I.*, V.ORDER_NUM, V.DATA, V.STORAGE_DESC from JCR_MITEM I, JCR_MVALUE V"
+      //            + " where I.I_CLASS=2 and I.PARENT_ID=? and V.PROPERTY_ID=I.ID order by I.ID";
+
       GET_PROPERTIES_BY_PARENTID =
-         "select I.*, V.ORDER_NUM, V.DATA, V.STORAGE_DESC from JCR_MITEM I, JCR_MVALUE V"
-            + " where I.I_CLASS=2 and I.PARENT_ID=? and V.PROPERTY_ID=I.ID order by I.ID";
+         "select I.*, V.ORDER_NUM, V.DATA, V.STORAGE_DESC from JCR_MITEM I LEFT OUTER JOIN JCR_MVALUE V ON (V.PROPERTY_ID=I.ID)"
+            + " where I.I_CLASS=2 and I.PARENT_ID=? order by ID, ORDER_NUM";
 
       INSERT_NODE =
          "insert into JCR_MITEM(ID, PARENT_ID, NAME, VERSION, I_CLASS, I_INDEX, N_ORDER_NUM) VALUES(?,?,?,?,"
@@ -662,4 +674,16 @@
       getPropertiesByParentId.setString(1, parentIdentifier);
       return getPropertiesByParentId.executeQuery();
    }
+
+   @Override
+   protected ResultSet findReferenceProperties(String nodeIdentifier) throws SQLException
+   {
+      if (findReferenceProperties == null)
+         findReferenceProperties = dbConnection.prepareStatement(FIND_REFERENCE_PROPERTIES);
+      else
+         findReferenceProperties.clearParameters();
+
+      findReferenceProperties.setString(1, nodeIdentifier);
+      return findReferenceProperties.executeQuery();
+   }
 }

Modified: jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/optimisation/db/SingleDbJDBCConnection.java
===================================================================
--- jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/optimisation/db/SingleDbJDBCConnection.java	2009-12-22 16:31:07 UTC (rev 1147)
+++ jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/optimisation/db/SingleDbJDBCConnection.java	2009-12-22 16:44:55 UTC (rev 1148)
@@ -634,4 +634,11 @@
       return null;
    }
 
+   @Override
+   protected ResultSet findReferenceProperties(String parentIdentifier) throws SQLException
+   {
+      // TODO Auto-generated method stub
+      return null;
+   }
+
 }



More information about the exo-jcr-commits mailing list