[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