[exo-jcr-commits] exo-jcr SVN: r3950 - in jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc: db and 2 other directories.

do-not-reply at jboss.org do-not-reply at jboss.org
Wed Feb 9 04:34:05 EST 2011


Author: tolusha
Date: 2011-02-09 04:34:05 -0500 (Wed, 09 Feb 2011)
New Revision: 3950

Modified:
   jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/JDBCStorageConnection.java
   jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/db/MSSQLSingleDbJDBCConnection.java
   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/MSSQLSingleDbJDBCConnection.java
Log:
EXOJCR-1104: fix query

Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/JDBCStorageConnection.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/JDBCStorageConnection.java	2011-02-08 16:34:46 UTC (rev 3949)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/JDBCStorageConnection.java	2011-02-09 09:34:05 UTC (rev 3950)
@@ -2573,10 +2573,8 @@
       SortedSet<TempPropertyData> ptTempProp = tempNode.properties.get(Constants.JCR_PRIMARYTYPE.getAsString());
       if (ptTempProp != null)
       {
-         byte[] data = ptTempProp.first().getAsByteArray();
-
-         ptValue = new ByteArrayPersistedValueData(ptTempProp.first().orderNum, data);
-         ptName = InternalQName.parse(new String((data != null ? data : new byte[]{}), Constants.DEFAULT_ENCODING));
+         ptValue = ((ExtendedTempPropertyData)ptTempProp.first()).vdata;
+         ptName = InternalQName.parse(new String(ptValue.getAsByteArray(), Constants.DEFAULT_ENCODING));
       }
 
       // mixins if exist in the list of properties
@@ -2588,10 +2586,10 @@
       {
          for (TempPropertyData mxnb : mixinsTempProps)
          {
-            byte[] data = mxnb.getAsByteArray();
+            ValueData vdata = ((ExtendedTempPropertyData)mxnb).vdata;
 
-            mixinsData.add(new ByteArrayPersistedValueData(mxnb.orderNum, data));
-            mixins.add(InternalQName.parse(new String(data, Constants.DEFAULT_ENCODING)));
+            mixinsData.add(vdata);
+            mixins.add(InternalQName.parse(new String(vdata.getAsByteArray(), Constants.DEFAULT_ENCODING)));
          }
       }
 
@@ -2622,14 +2620,9 @@
          {
             for (TempPropertyData tempProp : tempNode.properties.get(propName))
             {
-               ExtendedTempPropertyData extTempProp = (ExtendedTempPropertyData)tempProp;
+               ExtendedTempPropertyData exTempProp = (ExtendedTempPropertyData)tempProp;
 
-               ValueData vdata =
-                  extTempProp.storage_desc == null ? readValueData(extTempProp.id, extTempProp.orderNum,
-                     extTempProp.version, extTempProp.data) : readValueData(identifier, extTempProp.orderNum,
-                     extTempProp.storage_desc);
-
-               valueData.add(vdata);
+               valueData.add(exTempProp.vdata);
             }
          }
 
@@ -2681,25 +2674,22 @@
    {
       public int orderNum;
 
-      public InputStream data;
+      public byte[] data;
 
       public TempPropertyData(ResultSet item) throws SQLException
       {
          orderNum = item.getInt(COLUMN_VORDERNUM);
-         data = item.getBinaryStream(COLUMN_VDATA);
+         readData(item);
       }
 
-      public byte[] getAsByteArray() throws IOException
+      public int compareTo(TempPropertyData o)
       {
-         byte[] readBuffer = new byte[data.available()];
-         data.read(readBuffer);
-
-         return readBuffer;
+         return orderNum - o.orderNum;
       }
 
-      public int compareTo(TempPropertyData o)
+      protected void readData(ResultSet item) throws SQLException
       {
-         return orderNum - o.orderNum;
+         data = item.getBytes(COLUMN_VDATA);
       }
    }
 
@@ -2716,11 +2706,13 @@
 
       public int type;
 
-      boolean multi;
+      public boolean multi;
 
       public String storage_desc;
 
-      public ExtendedTempPropertyData(ResultSet item) throws SQLException
+      public ValueData vdata;
+
+      public ExtendedTempPropertyData(ResultSet item) throws SQLException, ValueStorageNotFoundException, IOException
       {
          super(item);
 
@@ -2730,7 +2722,29 @@
          type = item.getInt("P_TYPE");
          multi = item.getBoolean("P_MULTIVALUED");
          storage_desc = item.getString(COLUMN_VSTORAGE_DESC);
+
+         readData(item);
       }
+
+      @Override
+      protected void readData(ResultSet item) throws SQLException
+      {
+         InputStream data = item.getBinaryStream(COLUMN_VDATA);
+         try
+         {
+            vdata =
+               storage_desc == null ? readValueData(id, orderNum, version, data) : readValueData(getIdentifier(id),
+                  orderNum, storage_desc);
+         }
+         catch (ValueStorageNotFoundException e)
+         {
+            throw new SQLException(e);
+         }
+         catch (IOException e)
+         {
+            throw new SQLException(e);
+         }
+      }
    }
 
    /**

Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/db/MSSQLSingleDbJDBCConnection.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/db/MSSQLSingleDbJDBCConnection.java	2011-02-08 16:34:46 UTC (rev 3949)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/db/MSSQLSingleDbJDBCConnection.java	2011-02-09 09:34:05 UTC (rev 3950)
@@ -73,8 +73,8 @@
             + " V.DATA, V.ORDER_NUM, V.STORAGE_DESC from JCR_SVALUE V, JCR_SITEM P"
             + " join (select A.* from"
             + " (select Row_Number() over (order by I.ID) as r__, I.ID, I.PARENT_ID, I.NAME, I.VERSION, I.I_INDEX, I.N_ORDER_NUM"
-            + " from JCR_SITEM I where I.CONTAINER_NAME='?' and I.I_CLASS=1) as A where A.r__ <= ? and A.r__ > ?"
+            + " from JCR_SITEM I where I.CONTAINER_NAME=? and I.I_CLASS=1) as A where A.r__ <= ? and A.r__ > ?"
             + ") J on P.PARENT_ID = J.ID"
-            + " where P.I_CLASS=2 and P.CONTAINER_NAME='?' and V.PROPERTY_ID=P.ID order by J.ID";
+            + " where P.I_CLASS=2 and P.CONTAINER_NAME=? and V.PROPERTY_ID=P.ID order by J.ID";
    }
 }

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	2011-02-08 16:34:46 UTC (rev 3949)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/optimisation/CQJDBCStorageConnection.java	2011-02-09 09:34:05 UTC (rev 3950)
@@ -313,8 +313,7 @@
       {
          for (TempPropertyData value : permValues)
          {
-            StringTokenizer parser =
-               new StringTokenizer(new String(value.getAsByteArray()), AccessControlEntry.DELIMITER);
+            StringTokenizer parser = new StringTokenizer(new String(value.data), AccessControlEntry.DELIMITER);
             naPermissions.add(new AccessControlEntry(parser.nextToken(), parser.nextToken()));
          }
 
@@ -338,7 +337,7 @@
    {
       SortedSet<TempPropertyData> ownerValues = properties.get(Constants.EXO_OWNER.getAsString());
       if (ownerValues != null)
-         return new String(ownerValues.first().getAsByteArray());
+         return new String(ownerValues.first().data);
       else
          throw new IllegalACLException("Property exo:owner is not found for node with id: " + getIdentifier(cid));
    }
@@ -447,7 +446,7 @@
                + qpath.getAsString() + ", id " + cid + ", container " + this.containerName, null);
          }
 
-         byte[] data = primaryType.first().getAsByteArray();
+         byte[] data = primaryType.first().data;
          InternalQName ptName = InternalQName.parse(new String((data != null ? data : new byte[]{})));
 
          // MIXIN
@@ -460,7 +459,7 @@
             List<InternalQName> mNames = new ArrayList<InternalQName>();
             for (TempPropertyData mxnb : mixTypes)
             {
-               InternalQName mxn = InternalQName.parse(new String(mxnb.getAsByteArray()));
+               InternalQName mxn = InternalQName.parse(new String(mxnb.data));
                mNames.add(mxn);
 
                if (!privilegeable && Constants.EXO_PRIVILEGEABLE.equals(mxn))

Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/optimisation/db/MSSQLSingleDbJDBCConnection.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/optimisation/db/MSSQLSingleDbJDBCConnection.java	2011-02-08 16:34:46 UTC (rev 3949)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/optimisation/db/MSSQLSingleDbJDBCConnection.java	2011-02-09 09:34:05 UTC (rev 3950)
@@ -73,8 +73,8 @@
             + " V.DATA, V.ORDER_NUM, V.STORAGE_DESC from JCR_SVALUE V, JCR_SITEM P"
             + " join (select A.* from"
             + " (select Row_Number() over (order by I.ID) as r__, I.ID, I.PARENT_ID, I.NAME, I.VERSION, I.I_INDEX, I.N_ORDER_NUM"
-            + " from JCR_SITEM I where I.CONTAINER_NAME='?' and I.I_CLASS=1) as A where A.r__ <= ? and A.r__ > ?"
-            + ") J on P.PARENT_ID = J.ID"
-            + " where P.I_CLASS=2 and P.CONTAINER_NAME='?' and V.PROPERTY_ID=P.ID order by J.ID";
+            + " from JCR_SITEM I where I.CONTAINER_NAME=? and I.I_CLASS=1) as A where A.r__ <= ? and A.r__ > ?"
+            + " ) J on P.PARENT_ID = J.ID"
+            + " where P.I_CLASS=2 and P.CONTAINER_NAME=? and V.PROPERTY_ID=P.ID order by J.ID";
    }
 }



More information about the exo-jcr-commits mailing list