[exo-jcr-commits] exo-jcr SVN: r522 - jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/core/query/cacheloader.
do-not-reply at jboss.org
do-not-reply at jboss.org
Mon Nov 9 10:36:43 EST 2009
Author: sergiykarpenko
Date: 2009-11-09 10:36:43 -0500 (Mon, 09 Nov 2009)
New Revision: 522
Modified:
jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/core/query/cacheloader/IndexerCacheLoader.java
Log:
EXOJCR-202: IndexerCacheLoader updated
Modified: jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/core/query/cacheloader/IndexerCacheLoader.java
===================================================================
--- jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/core/query/cacheloader/IndexerCacheLoader.java 2009-11-09 15:36:10 UTC (rev 521)
+++ jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/core/query/cacheloader/IndexerCacheLoader.java 2009-11-09 15:36:43 UTC (rev 522)
@@ -16,7 +16,6 @@
*/
package org.exoplatform.services.jcr.impl.core.query.cacheloader;
-import org.exoplatform.services.jcr.dataflow.ItemState;
import org.exoplatform.services.jcr.impl.core.query.SearchManager;
import org.exoplatform.services.jcr.impl.storage.jbosscache.AbstractWriteOnlyCacheLoader;
import org.exoplatform.services.jcr.impl.storage.jbosscache.JBossCacheStorage;
@@ -26,10 +25,8 @@
import org.jboss.cache.Fqn;
import org.jboss.cache.Modification;
-import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
-import java.util.Map;
import java.util.Set;
/**
@@ -92,8 +89,12 @@
final Set<String> removedNodes = new HashSet<String>();
// nodes that need to be added to the index.
final Set<String> addedNodes = new HashSet<String>();
- final Map<String, List<ItemState>> updatedNodes = new HashMap<String, List<ItemState>>();
+ // node thst must be updated
+ final Set<String> updateNodes = new HashSet<String>();
+
+ //final Map<String, List<ItemState>> updatedNodes = new HashMap<String, List<ItemState>>();
+
for (Modification m : modifications)
{
@@ -104,50 +105,71 @@
switch (m.getType())
{
case PUT_DATA :
- // add node
- // TODO do we need there update for property?
- // if this is property ignore
if (isNode(m.getFqn()))
{
+ // add node
addedNodes.add(uuid);
}
-
+ else
+ {
+ // this is property
+ // TODO do update of node - need uuid of owner node
+ }
break;
case PUT_DATA_ERASE :
- // must be never called
// update node
if (isNode(m.getFqn()))
{
removedNodes.add(uuid);
addedNodes.add(uuid);
}
+ else
+ {
+ // TODO do update of node - need uuid of owner node
+ }
+
break;
case PUT_KEY_VALUE :
// must be never called
// update node
if (isNode(m.getFqn()))
{
- removedNodes.add(uuid);
- addedNodes.add(uuid);
+ if (addedNodes.contains(uuid))
+ {
+ // do nothing - node by uuid will be indexed
+ }
+ else
+ {
+ // update document by this uuid
+ updateNodes.add(uuid);
+ }
}
break;
case REMOVE_DATA :
- // must be never called
// update node
if (isNode(m.getFqn()))
{
addedNodes.add(uuid);
removedNodes.add(uuid);
}
+ else
+ {
+ //TODO do update of owner node
+ //updateNodes.add(owner_uuid);
+ }
break;
case REMOVE_KEY_VALUE :
- // must be never called
- // removed property what to do
+ // removed property - do update node
if (isNode(m.getFqn()))
{
- addedNodes.add(uuid);
- removedNodes.add(uuid);
+ updateNodes.add(uuid);
}
+ else
+ {
+ //TODO do update of owner node
+ //updateNodes.add(owner_uuid);
+ }
+
break;
case REMOVE_NODE :
// if node - remove it, otherwise ignore it
@@ -155,6 +177,11 @@
{
removedNodes.add(uuid);
}
+ else
+ {
+ //TODO do update of owner node
+ //updateNodes.add(owner_uuid);
+ }
break;
case MOVE :
@@ -249,7 +276,7 @@
// }
// }
- for (String uuid : updatedNodes.keySet())
+ for (String uuid : updateNodes)
{
removedNodes.add(uuid);
addedNodes.add(uuid);
More information about the exo-jcr-commits
mailing list