[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