[exo-jcr-commits] exo-jcr SVN: r932 - in jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/core/query: jbosscache and 1 other directory.

do-not-reply at jboss.org do-not-reply at jboss.org
Mon Dec 7 07:04:48 EST 2009


Author: skabashnyuk
Date: 2009-12-07 07:04:47 -0500 (Mon, 07 Dec 2009)
New Revision: 932

Added:
   jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/core/query/jbosscache/JbossCacheIndexChangesFilter.java
Modified:
   jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/core/query/DefaultChangesFilter.java
   jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/core/query/IndexerChangesFilter.java
Log:
EXOJCR-283: Added JbossCache Changes filter.

Modified: jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/core/query/DefaultChangesFilter.java
===================================================================
--- jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/core/query/DefaultChangesFilter.java	2009-12-07 10:56:37 UTC (rev 931)
+++ jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/core/query/DefaultChangesFilter.java	2009-12-07 12:04:47 UTC (rev 932)
@@ -19,18 +19,10 @@
 package org.exoplatform.services.jcr.impl.core.query;
 
 import org.exoplatform.services.jcr.config.QueryHandlerEntry;
-import org.exoplatform.services.jcr.dataflow.ItemState;
-import org.exoplatform.services.jcr.dataflow.ItemStateChangesLog;
 import org.exoplatform.services.log.ExoLogger;
 import org.exoplatform.services.log.Log;
 
 import java.io.IOException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
 import java.util.Set;
 
 import javax.jcr.RepositoryException;
@@ -43,6 +35,11 @@
 public class DefaultChangesFilter extends IndexerChangesFilter
 {
    /**
+    * Logger instance for this class
+    */
+   private static final Log log = ExoLogger.getLogger(DefaultChangesFilter.class);
+
+   /**
     * @param searchManager
     * @param handler
     * @param indexingTree
@@ -50,104 +47,17 @@
    public DefaultChangesFilter(SearchManager searchManager, QueryHandlerEntry config, IndexingTree indexingTree)
    {
       super(searchManager, config, indexingTree);
-      // TODO Auto-generated constructor stub
    }
 
    /**
-    * Logger instance for this class
+    * @param removedNodes 
+    * @param addedNodes 
+    * @see org.exoplatform.services.jcr.impl.core.query.IndexerChangesFilter#doUpdateIndex()
     */
-   private static final Log log = ExoLogger.getLogger(DefaultChangesFilter.class);
-
-   /**
-    * @see org.exoplatform.services.jcr.dataflow.persistent.ItemsPersistenceListener#onSaveItems(org.exoplatform.services.jcr.dataflow.ItemStateChangesLog)
-    */
-   public void onSaveItems(ItemStateChangesLog itemStates)
+   @Override
+   protected void doUpdateIndex(Set<String> removedNodes, Set<String> addedNodes)
    {
 
-      long time = System.currentTimeMillis();
-
-      // nodes that need to be removed from the index.
-      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>>();
-
-      for (Iterator<ItemState> iter = itemStates.getAllStates().iterator(); iter.hasNext();)
-      {
-         ItemState itemState = iter.next();
-
-         if (!indexingTree.isExcluded(itemState))
-         {
-            String uuid =
-               itemState.isNode() ? itemState.getData().getIdentifier() : itemState.getData().getParentIdentifier();
-
-            if (itemState.isAdded())
-            {
-               if (itemState.isNode())
-               {
-                  addedNodes.add(uuid);
-               }
-               else
-               {
-                  if (!addedNodes.contains(uuid))
-                  {
-                     createNewOrAdd(uuid, itemState, updatedNodes);
-                  }
-               }
-            }
-            else if (itemState.isRenamed())
-            {
-               if (itemState.isNode())
-               {
-                  addedNodes.add(uuid);
-               }
-               else
-               {
-                  createNewOrAdd(uuid, itemState, updatedNodes);
-               }
-            }
-            else if (itemState.isUpdated())
-            {
-               createNewOrAdd(uuid, itemState, updatedNodes);
-            }
-            else if (itemState.isMixinChanged())
-            {
-               createNewOrAdd(uuid, itemState, updatedNodes);
-            }
-            else if (itemState.isDeleted())
-            {
-               if (itemState.isNode())
-               {
-                  if (addedNodes.contains(uuid))
-                  {
-                     addedNodes.remove(uuid);
-                     removedNodes.remove(uuid);
-                  }
-                  else
-                  {
-                     removedNodes.add(uuid);
-                  }
-                  // remove all changes after node remove
-                  updatedNodes.remove(uuid);
-               }
-               else
-               {
-                  if (!removedNodes.contains(uuid) && !addedNodes.contains(uuid))
-                  {
-                     createNewOrAdd(uuid, itemState, updatedNodes);
-                  }
-               }
-            }
-         }
-      }
-      // TODO make quick changes
-      for (String uuid : updatedNodes.keySet())
-      {
-         removedNodes.add(uuid);
-         addedNodes.add(uuid);
-      }
-
       try
       {
          searchManager.updateIndex(removedNodes, addedNodes);
@@ -169,22 +79,6 @@
          }
       }
 
-      if (log.isDebugEnabled())
-      {
-         log.debug("onEvent: indexing finished in " + String.valueOf(System.currentTimeMillis() - time) + " ms.");
-      }
-
    }
 
-   public void createNewOrAdd(String key, ItemState state, Map<String, List<ItemState>> updatedNodes)
-   {
-      List<ItemState> list = updatedNodes.get(key);
-      if (list == null)
-      {
-         list = new ArrayList<ItemState>();
-         updatedNodes.put(key, list);
-      }
-      list.add(state);
-
-   }
 }

Modified: jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/core/query/IndexerChangesFilter.java
===================================================================
--- jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/core/query/IndexerChangesFilter.java	2009-12-07 10:56:37 UTC (rev 931)
+++ jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/core/query/IndexerChangesFilter.java	2009-12-07 12:04:47 UTC (rev 932)
@@ -19,8 +19,20 @@
 package org.exoplatform.services.jcr.impl.core.query;
 
 import org.exoplatform.services.jcr.config.QueryHandlerEntry;
+import org.exoplatform.services.jcr.dataflow.ItemState;
+import org.exoplatform.services.jcr.dataflow.ItemStateChangesLog;
 import org.exoplatform.services.jcr.dataflow.persistent.ItemsPersistenceListener;
+import org.exoplatform.services.log.ExoLogger;
+import org.exoplatform.services.log.Log;
 
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
 /**
  * @author <a href="mailto:Sergey.Kabashnyuk at exoplatform.org">Sergey Kabashnyuk</a>
  * @version $Id: exo-jboss-codetemplates.xml 34360 2009-07-22 23:58:59Z ksm $
@@ -28,6 +40,11 @@
  */
 public abstract class IndexerChangesFilter implements ItemsPersistenceListener
 {
+   /**
+    * Logger instance for this class
+    */
+   private static final Log log = ExoLogger.getLogger(DefaultChangesFilter.class);
+
    protected final SearchManager searchManager;
 
    protected final QueryHandlerEntry config;
@@ -82,4 +99,116 @@
       return indexingTree;
    }
 
+   /**
+    * @see org.exoplatform.services.jcr.dataflow.persistent.ItemsPersistenceListener#onSaveItems(org.exoplatform.services.jcr.dataflow.ItemStateChangesLog)
+    */
+   public void onSaveItems(ItemStateChangesLog itemStates)
+   {
+
+      long time = System.currentTimeMillis();
+
+      // nodes that need to be removed from the index.
+      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>>();
+
+      for (Iterator<ItemState> iter = itemStates.getAllStates().iterator(); iter.hasNext();)
+      {
+         ItemState itemState = iter.next();
+
+         if (!indexingTree.isExcluded(itemState))
+         {
+            String uuid =
+               itemState.isNode() ? itemState.getData().getIdentifier() : itemState.getData().getParentIdentifier();
+
+            if (itemState.isAdded())
+            {
+               if (itemState.isNode())
+               {
+                  addedNodes.add(uuid);
+               }
+               else
+               {
+                  if (!addedNodes.contains(uuid))
+                  {
+                     createNewOrAdd(uuid, itemState, updatedNodes);
+                  }
+               }
+            }
+            else if (itemState.isRenamed())
+            {
+               if (itemState.isNode())
+               {
+                  addedNodes.add(uuid);
+               }
+               else
+               {
+                  createNewOrAdd(uuid, itemState, updatedNodes);
+               }
+            }
+            else if (itemState.isUpdated())
+            {
+               createNewOrAdd(uuid, itemState, updatedNodes);
+            }
+            else if (itemState.isMixinChanged())
+            {
+               createNewOrAdd(uuid, itemState, updatedNodes);
+            }
+            else if (itemState.isDeleted())
+            {
+               if (itemState.isNode())
+               {
+                  if (addedNodes.contains(uuid))
+                  {
+                     addedNodes.remove(uuid);
+                     removedNodes.remove(uuid);
+                  }
+                  else
+                  {
+                     removedNodes.add(uuid);
+                  }
+                  // remove all changes after node remove
+                  updatedNodes.remove(uuid);
+               }
+               else
+               {
+                  if (!removedNodes.contains(uuid) && !addedNodes.contains(uuid))
+                  {
+                     createNewOrAdd(uuid, itemState, updatedNodes);
+                  }
+               }
+            }
+         }
+      }
+
+      for (String uuid : updatedNodes.keySet())
+      {
+         removedNodes.add(uuid);
+         addedNodes.add(uuid);
+      }
+
+      doUpdateIndex(removedNodes, addedNodes);
+   }
+
+   private void createNewOrAdd(String key, ItemState state, Map<String, List<ItemState>> updatedNodes)
+   {
+      List<ItemState> list = updatedNodes.get(key);
+      if (list == null)
+      {
+         list = new ArrayList<ItemState>();
+         updatedNodes.put(key, list);
+      }
+      list.add(state);
+
+   }
+
+   /**
+    * Update index.
+    * @param removedNodes
+    * @param addedNodes
+    */
+   protected abstract void doUpdateIndex(Set<String> removedNodes, Set<String> addedNodes);
+
 }

Added: jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/core/query/jbosscache/JbossCacheIndexChangesFilter.java
===================================================================
--- jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/core/query/jbosscache/JbossCacheIndexChangesFilter.java	                        (rev 0)
+++ jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/core/query/jbosscache/JbossCacheIndexChangesFilter.java	2009-12-07 12:04:47 UTC (rev 932)
@@ -0,0 +1,57 @@
+/*
+ * Copyright (C) 2009 eXo Platform SAS.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.exoplatform.services.jcr.impl.core.query.jbosscache;
+
+import org.exoplatform.services.jcr.config.QueryHandlerEntry;
+import org.exoplatform.services.jcr.impl.core.query.IndexerChangesFilter;
+import org.exoplatform.services.jcr.impl.core.query.IndexingTree;
+import org.exoplatform.services.jcr.impl.core.query.SearchManager;
+
+import java.util.Set;
+
+/**
+ * @author <a href="mailto:Sergey.Kabashnyuk at exoplatform.org">Sergey Kabashnyuk</a>
+ * @version $Id: exo-jboss-codetemplates.xml 34360 2009-07-22 23:58:59Z ksm $
+ *
+ */
+public class JbossCacheIndexChangesFilter extends IndexerChangesFilter
+{
+
+   /**
+    * @param searchManager
+    * @param config
+    * @param indexingTree
+    */
+   public JbossCacheIndexChangesFilter(SearchManager searchManager, QueryHandlerEntry config, IndexingTree indexingTree)
+   {
+      super(searchManager, config, indexingTree);
+      //TODO create cache;
+   }
+
+   /**
+    * @see org.exoplatform.services.jcr.impl.core.query.IndexerChangesFilter#doUpdateIndex(java.util.Set, java.util.Set)
+    */
+   @Override
+   protected void doUpdateIndex(Set<String> removedNodes, Set<String> addedNodes)
+   {
+      //write changes
+
+   }
+
+}


Property changes on: jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/core/query/jbosscache/JbossCacheIndexChangesFilter.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain



More information about the exo-jcr-commits mailing list