Author: mflorea
Date: 2008-02-14 14:59:48 +0100 (Thu, 14 Feb 2008)
New Revision: 7728

Modified:
   
xwiki-products/curriki/trunk/plugins/currikiactivitystream/src/main/java/org/curriki/plugin/activitystream/impl/CurrikiActivityStream.java
   
xwiki-products/curriki/trunk/plugins/currikiactivitystream/src/main/java/org/curriki/plugin/activitystream/plugin/DocumentationActivityEvent.java
Log:
CURRIKI-1654, CURRIKI-1656

Modified: 
xwiki-products/curriki/trunk/plugins/currikiactivitystream/src/main/java/org/curriki/plugin/activitystream/impl/CurrikiActivityStream.java
===================================================================
--- 
xwiki-products/curriki/trunk/plugins/currikiactivitystream/src/main/java/org/curriki/plugin/activitystream/impl/CurrikiActivityStream.java
  2008-02-14 13:33:35 UTC (rev 7727)
+++ 
xwiki-products/curriki/trunk/plugins/currikiactivitystream/src/main/java/org/curriki/plugin/activitystream/impl/CurrikiActivityStream.java
  2008-02-14 13:59:48 UTC (rev 7728)
@@ -22,6 +22,10 @@
 
     private static final String SPACE_CLASS_NAME = "XWiki.SpaceClass";
 
+    public static final String DOCUMENTATION_FILE = "documentation-file";
+
+    public static final String DOCUMENTATION_WIKI = "documentation-wiki";
+
     public CurrikiActivityStream()
     {
         super();
@@ -105,34 +109,43 @@
     protected void handleDocumentationEvent(XWikiDocument newdoc, 
XWikiDocument olddoc,
         int event, XWikiContext context)
     {
-        if (newdoc.getFullName().endsWith(".WebPreferences")) {
-            return;
-        }
-
         String streamName = getStreamName(newdoc.getSpace(), context);
         if (streamName == null) {
             return;
         }
 
         String docTitle = newdoc.getTitle();
-        String docType = "wikipage";
-        if (newdoc.getObject("XWiki.TagClass") != null) {
-            docType =
-                newdoc.getTags(context).contains("documentation-file") ? 
"file" : "wikipage";
-        }
-
-        // update event parameter (workaround)
-        if (newdoc.isNew()) {
+        BaseObject tag = newdoc.getObject("XWiki.TagClass");
+        if (tag == null) {
+            if (olddoc == null) {
+                return;
+            }
+            tag = olddoc.getObject("XWiki.TagClass");
+            if (tag == null) {
+                return;
+            }
             docTitle = olddoc.getTitle();
-            if (olddoc.getObject("XWiki.TagClass") != null) {
-                docType =
-                    olddoc.getTags(context).contains("documentation-file") ? 
"file" : "wikipage";
+            event = XWikiDocChangeNotificationInterface.EVENT_DELETE;
+        } else {
+            String initialVersion = "1.3";
+            if (tag.getStringValue("tags").contains(DOCUMENTATION_FILE)) {
+                initialVersion = "1.4";
             }
-            event = XWikiDocChangeNotificationInterface.EVENT_DELETE;
-        } else if (olddoc == null && "1.2".equals(newdoc.getVersion())) {
-            event = XWikiDocChangeNotificationInterface.EVENT_NEW;
+            if ((olddoc != null && olddoc.getObject("XWiki.TagClass") == null)
+                || (olddoc == null && 
initialVersion.equals(newdoc.getVersion()))) {
+                event = XWikiDocChangeNotificationInterface.EVENT_NEW;
+            }
         }
 
+        String docType = tag.getStringValue("tags");
+        if (docType.contains(DOCUMENTATION_FILE)) {
+            docType = DOCUMENTATION_FILE;
+        } else if (docType.contains(DOCUMENTATION_WIKI)) {
+            docType = DOCUMENTATION_WIKI;
+        } else {
+            return;
+        }
+
         List params = new ArrayList();
         params.add(docTitle);
         params.add(getUserName(context.getUser(), context));
@@ -177,9 +190,13 @@
                 return;
             }
             event = XWikiDocChangeNotificationInterface.EVENT_DELETE;
-        } else if ((olddoc != null && olddoc.getObject("XWiki.AssetClass") == 
null)
-            || (olddoc == null && "1.2".equals(newdoc.getVersion()))) {
-            event = XWikiDocChangeNotificationInterface.EVENT_NEW;
+        } else {
+            double version = Double.parseDouble(newdoc.getVersion());
+            if (version < 1.6) {
+                return;
+            } else if (version == 1.6) {
+                event = XWikiDocChangeNotificationInterface.EVENT_NEW;
+            }
         }
 
         List params = new ArrayList();

Modified: 
xwiki-products/curriki/trunk/plugins/currikiactivitystream/src/main/java/org/curriki/plugin/activitystream/plugin/DocumentationActivityEvent.java
===================================================================
--- 
xwiki-products/curriki/trunk/plugins/currikiactivitystream/src/main/java/org/curriki/plugin/activitystream/plugin/DocumentationActivityEvent.java
   2008-02-14 13:33:35 UTC (rev 7727)
+++ 
xwiki-products/curriki/trunk/plugins/currikiactivitystream/src/main/java/org/curriki/plugin/activitystream/plugin/DocumentationActivityEvent.java
   2008-02-14 13:59:48 UTC (rev 7728)
@@ -22,12 +22,14 @@
 import java.util.ArrayList;
 import java.util.List;
 
+import org.curriki.plugin.activitystream.impl.CurrikiActivityStream;
 import org.xwiki.plugin.activitystream.api.ActivityEventType;
 import org.xwiki.plugin.activitystream.plugin.ActivityEvent;
 
 import com.xpn.xwiki.XWikiContext;
 import com.xpn.xwiki.XWikiException;
 import com.xpn.xwiki.doc.XWikiDocument;
+import com.xpn.xwiki.objects.BaseObject;
 
 public class DocumentationActivityEvent extends ActivityEvent
 {
@@ -41,13 +43,16 @@
         super(event, context);
 
         String docTitle = event.getParam1();
-        boolean isFile = "file".equals(event.getParam3());
+        String docType = event.getParam3();
         String docLink = docTitle;
         XWikiDocument doc;
+        BaseObject tag;
         try {
             doc = context.getWiki().getDocument(event.getPage(), context);
-            if (!doc.isNew()) {
+            tag = doc.getObject("XWiki.TagClass");
+            if (tag != null) {
                 docTitle = doc.getTitle();
+                docType = tag.getStringValue("tags");
                 docLink = "[" + docTitle + ">" + doc.getExternalURL("view", 
context) + "]";
             }
         } catch (XWikiException e) {
@@ -68,7 +73,7 @@
         }
 
         String eventTitle = "";
-        if (isFile) {
+        if (docType.contains(CurrikiActivityStream.DOCUMENTATION_FILE)) {
             if (ActivityEventType.UPDATE.equals(event.getType())) {
                 eventTitle = "groups_home_activity_doc_upd";
             } else if (ActivityEventType.CREATE.equals(event.getType())) {
@@ -76,7 +81,7 @@
             } else if (ActivityEventType.DELETE.equals(event.getType())) {
                 eventTitle = "groups_home_activity_doc_del";
             }
-        } else {
+        } else if (docType.contains(CurrikiActivityStream.DOCUMENTATION_WIKI)) 
{
             if (ActivityEventType.UPDATE.equals(event.getType())) {
                 eventTitle = "groups_home_activity_doc_wiki_upd";
             } else if (ActivityEventType.CREATE.equals(event.getType())) {

_______________________________________________
notifications mailing list
notifications@xwiki.org
http://lists.xwiki.org/mailman/listinfo/notifications

Reply via email to