Author: tolusha
Date: 2011-02-04 08:39:49 -0500 (Fri, 04 Feb 2011)
New Revision: 3921
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/datamodel/NodeDataIndexing.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/MultiIndex.java
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/MultiDbJDBCConnection.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/db/SingleDbJDBCConnection.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/indexing/JdbcNodeDataIndexingIterator.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-1104: using new queries
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/datamodel/NodeDataIndexing.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/datamodel/NodeDataIndexing.java 2011-02-04
11:10:15 UTC (rev 3920)
+++
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/datamodel/NodeDataIndexing.java 2011-02-04
13:39:49 UTC (rev 3921)
@@ -142,6 +142,6 @@
*/
public AccessControlList getACL()
{
- throw new UnsupportedOperationException("getACL() method is not
supported");
+ return nodeData.getACL();
}
}
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/MultiIndex.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/MultiIndex.java 2011-02-04
11:10:15 UTC (rev 3920)
+++
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/MultiIndex.java 2011-02-04
13:39:49 UTC (rev 3921)
@@ -1479,7 +1479,7 @@
private long createIndex(Indexable indexableComponent, NodeData rootNode,
ItemDataConsumer stateMgr, long count)
throws IOException, RepositoryException
{
- NodeDataIndexingIterator iterator =
indexableComponent.getNodeDataIndexingIterator(100000);
+ NodeDataIndexingIterator iterator =
indexableComponent.getNodeDataIndexingIterator(10000);
while (iterator.hasNext())
{
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-04
11:10:15 UTC (rev 3920)
+++
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/JDBCStorageConnection.java 2011-02-04
13:39:49 UTC (rev 3921)
@@ -1020,10 +1020,10 @@
* @throws RepositoryException
* @throws IllegalStateException
*/
- public int getNodesAndProperties(int offset, int limit, List<NodeDataIndexing>
result) throws RepositoryException,
+ public List<NodeDataIndexing> getNodesAndProperties(int offset, int limit)
throws RepositoryException,
IllegalStateException
{
- int read = 0;
+ List<NodeDataIndexing> result = new ArrayList<NodeDataIndexing>();
checkIfOpened();
try
@@ -1056,8 +1056,6 @@
}
values.add(new ExtendedTempPropertyData(resultSet));
-
- ++read;
}
if (tempNodeData != null)
@@ -1090,7 +1088,7 @@
throw new RepositoryException(e);
}
- return read;
+ return result;
}
/**
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/db/MultiDbJDBCConnection.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/db/MultiDbJDBCConnection.java 2011-02-04
11:10:15 UTC (rev 3920)
+++
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/db/MultiDbJDBCConnection.java 2011-02-04
13:39:49 UTC (rev 3921)
@@ -153,12 +153,12 @@
DELETE_VALUE = "delete from JCR_MVALUE where PROPERTY_ID=?";
DELETE_REF = "delete from JCR_MREF where PROPERTY_ID=?";
- FIND_NODES_AND_PROPERTIES =
- "select I.ID, I.PARENT_ID, I.NAME, I.VERSION, I.I_INDEX,
I.N_ORDER_NUM,"
- + " P.ID AS P_ID, P.NAME AS P_NAME, P.VERSION AS P_VERSION, P.P_TYPE,
P.P_MULTIVALUED,"
- + " V.DATA, V.ORDER_NUM, V.STORAGE_DESC"
- + " from JCR_MITEM I, JCR_MITEM P, JCR_MVALUE V"
- + " where I.I_CLASS=1 and P.I_CLASS=2 and P.PARENT_ID=I.ID and
V.PROPERTY_ID=P.ID order by ID LIMIT ? OFFSET ?";
+ FIND_NODES_AND_PROPERTIES =
+ "select J.*, P.ID AS P_ID, P.NAME AS P_NAME, P.VERSION AS P_VERSION,
P.P_TYPE, P.P_MULTIVALUED,"
+ + " V.DATA, V.ORDER_NUM, V.STORAGE_DESC from JCR_MVALUE V, JCR_MITEM
P"
+ + " join (select I.ID, I.PARENT_ID, I.NAME, I.VERSION, I.I_INDEX,
I.N_ORDER_NUM from JCR_MITEM I"
+ + " where I.I_CLASS=1 order by I.ID LIMIT ? OFFSET ?) J on P.PARENT_ID =
J.ID"
+ + " where P.I_CLASS=2 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/db/SingleDbJDBCConnection.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/db/SingleDbJDBCConnection.java 2011-02-04
11:10:15 UTC (rev 3920)
+++
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/db/SingleDbJDBCConnection.java 2011-02-04
13:39:49 UTC (rev 3921)
@@ -161,13 +161,12 @@
DELETE_VALUE = "delete from JCR_SVALUE where PROPERTY_ID=?";
DELETE_REF = "delete from JCR_SREF where PROPERTY_ID=?";
- FIND_NODES_AND_PROPERTIES =
- "select I.ID, I.PARENT_ID, I.NAME, I.VERSION, I.I_INDEX,
I.N_ORDER_NUM,"
- + " P.ID AS P_ID, P.NAME AS P_NAME, P.VERSION AS P_VERSION, P.P_TYPE,
P.P_MULTIVALUED,"
- + " V.DATA, V.ORDER_NUM, V.STORAGE_DESC"
- + " from JCR_SITEM I, JCR_SITEM P, JCR_SVALUE V"
- + " where I.I_CLASS=1 and I.CONTAINER_NAME=? and P.I_CLASS=2 and
P.CONTAINER_NAME=? and P.PARENT_ID=I.ID"
- + " and V.PROPERTY_ID=P.ID order by ID LIMIT ? OFFSET ?";
+ FIND_NODES_AND_PROPERTIES =
+ "select J.*, P.ID AS P_ID, P.NAME AS P_NAME, P.VERSION AS P_VERSION,
P.P_TYPE, P.P_MULTIVALUED,"
+ + " V.DATA, V.ORDER_NUM, V.STORAGE_DESC from JCR_SVALUE V, JCR_SITEM
P"
+ + " join (select 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 order by I.ID LIMIT ?
OFFSET ?) 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";
}
/**
@@ -560,9 +559,9 @@
}
findNodesAndProperties.setString(1, containerName);
- findNodesAndProperties.setString(2, containerName);
- findNodesAndProperties.setInt(3, limit);
- findNodesAndProperties.setInt(4, offset);
+ findNodesAndProperties.setInt(2, limit);
+ findNodesAndProperties.setInt(3, offset);
+ findNodesAndProperties.setString(4, containerName);
return findNodesAndProperties.executeQuery();
}
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/indexing/JdbcNodeDataIndexingIterator.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/indexing/JdbcNodeDataIndexingIterator.java 2011-02-04
11:10:15 UTC (rev 3920)
+++
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/indexing/JdbcNodeDataIndexingIterator.java 2011-02-04
13:39:49 UTC (rev 3921)
@@ -18,23 +18,14 @@
*/
package org.exoplatform.services.jcr.impl.storage.jdbc.indexing;
-import org.exoplatform.services.jcr.dataflow.persistent.PersistedNodeData;
-import org.exoplatform.services.jcr.dataflow.persistent.PersistedPropertyData;
-import org.exoplatform.services.jcr.datamodel.InternalQName;
-import org.exoplatform.services.jcr.datamodel.NodeData;
import org.exoplatform.services.jcr.datamodel.NodeDataIndexing;
-import org.exoplatform.services.jcr.datamodel.PropertyData;
-import org.exoplatform.services.jcr.datamodel.ValueData;
import org.exoplatform.services.jcr.impl.core.query.NodeDataIndexingIterator;
import org.exoplatform.services.jcr.impl.storage.jdbc.JDBCStorageConnection;
import org.exoplatform.services.jcr.impl.storage.jdbc.db.GenericConnectionFactory;
import org.exoplatform.services.log.ExoLogger;
import org.exoplatform.services.log.Log;
-import java.util.ArrayList;
-import java.util.HashMap;
import java.util.List;
-import java.util.Map;
import javax.jcr.RepositoryException;
@@ -77,18 +68,6 @@
private List<NodeDataIndexing> current;
/**
- * Node data which may not contains all its properties. It is the last
- * data in the resulted list in readNext() method. Should be merged with
- * first one during next invoking readNext() method.
- */
- private NodeDataIndexing unCompletedNode;
-
- /**
- * Indicates if all rows has been read and no need more access to database.
- */
- private boolean isReadAll = false;
-
- /**
* Constructor JdbcIndexingDataIterator.
*
*/
@@ -126,69 +105,12 @@
*/
private List<NodeDataIndexing> readNext() throws RepositoryException
{
- if (isReadAll)
- {
- return new ArrayList<NodeDataIndexing>();
- }
-
- List<NodeDataIndexing> result = getNodesAndProperties();
-
- if (result.isEmpty())
- {
- if (unCompletedNode != null)
- {
- result.add(unCompletedNode);
- unCompletedNode = null;
- }
- }
- else
- {
- if (unCompletedNode != null)
- {
- NodeDataIndexing node = result.get(0);
- if (unCompletedNode.getIdentifier().equals(node.getIdentifier()))
- {
- result.set(0, mergeWithUnCompletedNode(node));
- unCompletedNode = null;
- }
- else
- {
- result.add(0, unCompletedNode);
- }
- }
-
- if (!isReadAll)
- {
- unCompletedNode = result.remove(result.size() - 1);
- }
-
- if (result.isEmpty())
- {
- return readNext();
- }
- }
-
- return result;
- }
-
- /**
- * Read next nodes from database.
- *
- * @return List
- * @throws RepositoryException
- */
- private List<NodeDataIndexing> getNodesAndProperties() throws
RepositoryException
- {
JDBCStorageConnection conn = (JDBCStorageConnection)connFactory.openConnection();
try
{
- List<NodeDataIndexing> result = new ArrayList<NodeDataIndexing>();
-
- int read = conn.getNodesAndProperties(offset, pageSize, result);
+ List<NodeDataIndexing> result = conn.getNodesAndProperties(offset,
pageSize);
offset += pageSize;
- isReadAll = read != pageSize;
-
return result;
}
finally
@@ -196,60 +118,5 @@
conn.close();
}
}
-
- /**
- * Merge two nodes.
- */
- private NodeDataIndexing mergeWithUnCompletedNode(NodeDataIndexing node)
- {
- InternalQName primaryType = unCompletedNode.getPrimaryTypeName();
- if (primaryType == null)
- {
- primaryType = node.getPrimaryTypeName();
- }
-
- List<InternalQName> mixins = new ArrayList<InternalQName>();
- for (InternalQName mixin : unCompletedNode.getMixinTypeNames())
- {
- mixins.add(mixin);
- }
-
- for (InternalQName mixin : node.getMixinTypeNames())
- {
- mixins.add(mixin);
- }
-
- NodeData nodeData =
- new PersistedNodeData(unCompletedNode.getIdentifier(),
unCompletedNode.getQPath(),
- unCompletedNode.getParentIdentifier(),
unCompletedNode.getPersistedVersion(),
- unCompletedNode.getOrderNumber(), primaryType, mixins.toArray(new
InternalQName[mixins.size()]), null);
-
- Map<String, PropertyData> props = new HashMap<String, PropertyData>();
- for (PropertyData prop : unCompletedNode.getChildPropertiesData())
- {
- props.put(prop.getIdentifier(), prop);
- }
-
- for (PropertyData prop : node.getChildPropertiesData())
- {
- if (props.containsKey(prop.getIdentifier()))
- {
- List<ValueData> values = new
ArrayList<ValueData>(props.get(prop.getIdentifier()).getValues());
- values.addAll(prop.getValues());
-
- PropertyData propertyData =
- new PersistedPropertyData(prop.getIdentifier(), prop.getQPath(),
prop.getParentIdentifier(),
- prop.getPersistedVersion(), prop.getType(), prop.isMultiValued(),
values);
-
- props.put(prop.getIdentifier(), propertyData);
- }
- else
- {
- props.put(prop.getIdentifier(), prop);
- }
- }
-
- return new NodeDataIndexing(nodeData, new
ArrayList<PropertyData>(props.values()));
- }
}
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 2011-02-04
11:10:15 UTC (rev 3920)
+++
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/optimisation/db/MultiDbJDBCConnection.java 2011-02-04
13:39:49 UTC (rev 3921)
@@ -180,12 +180,12 @@
DELETE_VALUE = "delete from JCR_MVALUE where PROPERTY_ID=?";
DELETE_REF = "delete from JCR_MREF where PROPERTY_ID=?";
- FIND_NODES_AND_PROPERTIES =
- "select I.ID, I.PARENT_ID, I.NAME, I.VERSION, I.I_INDEX,
I.N_ORDER_NUM,"
- + " P.ID AS P_ID, P.NAME AS P_NAME, P.VERSION AS P_VERSION, P.P_TYPE,
P.P_MULTIVALUED,"
- + " V.DATA, V.ORDER_NUM, V.STORAGE_DESC"
- + " from JCR_MITEM I, JCR_MITEM P, JCR_MVALUE V"
- + " where I.I_CLASS=1 and P.I_CLASS=2 and P.PARENT_ID=I.ID and
V.PROPERTY_ID=P.ID order by ID LIMIT ? OFFSET ?";
+ FIND_NODES_AND_PROPERTIES =
+ "select J.*, P.ID AS P_ID, P.NAME AS P_NAME, P.VERSION AS P_VERSION,
P.P_TYPE, P.P_MULTIVALUED,"
+ + " V.DATA, V.ORDER_NUM, V.STORAGE_DESC from JCR_MVALUE V, JCR_MITEM
P"
+ + " join (select I.ID, I.PARENT_ID, I.NAME, I.VERSION, I.I_INDEX,
I.N_ORDER_NUM from JCR_MITEM I"
+ + " where I.I_CLASS=1 order by I.ID LIMIT ? OFFSET ?) J on P.PARENT_ID =
J.ID"
+ + " where P.I_CLASS=2 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/db/SingleDbJDBCConnection.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/optimisation/db/SingleDbJDBCConnection.java 2011-02-04
11:10:15 UTC (rev 3920)
+++
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/optimisation/db/SingleDbJDBCConnection.java 2011-02-04
13:39:49 UTC (rev 3921)
@@ -187,13 +187,12 @@
DELETE_VALUE = "delete from JCR_SVALUE where PROPERTY_ID=?";
DELETE_REF = "delete from JCR_SREF where PROPERTY_ID=?";
- FIND_NODES_AND_PROPERTIES =
- "select I.ID, I.PARENT_ID, I.NAME, I.VERSION, I.I_INDEX,
I.N_ORDER_NUM,"
- + " P.ID AS P_ID, P.NAME AS P_NAME, P.VERSION AS P_VERSION, P.P_TYPE,
P.P_MULTIVALUED,"
- + " V.DATA, V.ORDER_NUM, V.STORAGE_DESC"
- + " from JCR_SITEM I, JCR_SITEM P, JCR_SVALUE V"
- + " where I.I_CLASS=1 and I.CONTAINER_NAME=? and P.I_CLASS=2 and
P.CONTAINER_NAME=? and P.PARENT_ID=I.ID"
- + " and V.PROPERTY_ID=P.ID order by ID LIMIT ? OFFSET ?";
+ FIND_NODES_AND_PROPERTIES =
+ "select J.*, P.ID AS P_ID, P.NAME AS P_NAME, P.VERSION AS P_VERSION,
P.P_TYPE, P.P_MULTIVALUED,"
+ + " V.DATA, V.ORDER_NUM, V.STORAGE_DESC from JCR_SVALUE V, JCR_SITEM
P"
+ + " join (select 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 order by I.ID LIMIT ?
OFFSET ?) 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";
}
/**
@@ -648,9 +647,9 @@
}
findNodesAndProperties.setString(1, containerName);
- findNodesAndProperties.setString(2, containerName);
- findNodesAndProperties.setInt(3, limit);
- findNodesAndProperties.setInt(4, offset);
+ findNodesAndProperties.setInt(2, limit);
+ findNodesAndProperties.setInt(3, offset);
+ findNodesAndProperties.setString(4, containerName);
return findNodesAndProperties.executeQuery();
}