Author: mflorea
Date: 2008-02-12 15:07:47 +0100 (Tue, 12 Feb 2008)
New Revision: 7542

Modified:
   
xwiki-products/curriki/trunk/plugins/currikiactivitystream/src/main/java/org/curriki/plugin/activitystream/impl/CurrikiActivityStream.java
Log:
CURRIKI-1571, CURRIKI-1570, CURRIKI-1573, CURRIKI-1572

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-12 14:06:52 UTC (rev 7541)
+++ 
xwiki-products/curriki/trunk/plugins/currikiactivitystream/src/main/java/org/curriki/plugin/activitystream/impl/CurrikiActivityStream.java
  2008-02-12 14:07:47 UTC (rev 7542)
@@ -3,6 +3,7 @@
 import java.util.ArrayList;
 import java.util.List;
 
+import org.xwiki.plugin.activitystream.api.ActivityEventPriority;
 import org.xwiki.plugin.activitystream.api.ActivityEventType;
 import org.xwiki.plugin.activitystream.impl.ActivityStreamImpl;
 
@@ -36,13 +37,10 @@
         if (spaceName.startsWith("Messages_Group_")) {
             handleMessageEvent(newdoc, olddoc, event, context);
         } else if (spaceName.startsWith("Documentation_Group_")) {
-            // TODO and newdoc is truly a documentation
             handleDocumentationEvent(newdoc, olddoc, event, context);
         } else if (spaceName.startsWith("Coll_Group_")) {
-            // TODO and newdoc is truly a resource
             handleResourceEvent(newdoc, olddoc, event, context);
-        } else if (spaceName.startsWith("UserProfiles_Group_")
-            && newdoc.getObject("XWiki.SpaceUserProfileClass") != null) {
+        } else if (spaceName.startsWith("UserProfiles_Group_")) {
             handleMemberEvent(newdoc, olddoc, event, context);
         }
         // TODO handle events from MemberGroup, AdminGroup and 
Role_<roleName>Group
@@ -66,27 +64,35 @@
                 return;
             }
             event = XWikiDocChangeNotificationInterface.EVENT_DELETE;
-        } else if (olddoc == null
-            || (olddoc != null && olddoc.getObject("XWiki.ArticleClass") == 
null)) {
+        } else if ((olddoc != null && olddoc.getObject("XWiki.ArticleClass") 
== null)
+            || (olddoc == null && "1.4".equals(newdoc.getVersion()))) {
             event = XWikiDocChangeNotificationInterface.EVENT_NEW;
         }
 
         List params = new ArrayList();
-        params.add(article.getStringValue("title"));
+        String articleTitle = article.getStringValue("title");
+        String articleLink =
+            "[" + articleTitle + ">" + article.getName().replaceAll("@", 
"%40") + "]";
 
         try {
             switch (event) {
                 case XWikiDocChangeNotificationInterface.EVENT_NEW:
+                    params.add(articleLink);
                     addDocumentActivityEvent(streamName, newdoc, 
ActivityEventType.CREATE,
-                        "as_message_has_been_created", params, context);
+                        ActivityEventPriority.NOTIFICATION, 
"as_message_has_been_created",
+                        params, context);
                     break;
                 case XWikiDocChangeNotificationInterface.EVENT_CHANGE:
+                    params.add(articleLink);
                     addDocumentActivityEvent(streamName, newdoc, 
ActivityEventType.UPDATE,
-                        "as_message_has_been_updated", params, context);
+                        ActivityEventPriority.NOTIFICATION, 
"as_message_has_been_updated",
+                        params, context);
                     break;
                 case XWikiDocChangeNotificationInterface.EVENT_DELETE:
+                    params.add(articleTitle);
                     addDocumentActivityEvent(streamName, olddoc, 
ActivityEventType.DELETE,
-                        "as_message_has_been_deleted", params, context);
+                        ActivityEventPriority.NOTIFICATION, 
"as_message_has_been_deleted",
+                        params, context);
                     break;
             }
         } catch (Throwable e) {
@@ -98,27 +104,42 @@
     protected void handleDocumentationEvent(XWikiDocument newdoc, 
XWikiDocument olddoc,
         int event, XWikiContext context)
     {
-        List params = new ArrayList();
-        params.add(newdoc.getDisplayTitle(context));
-
         String streamName = getStreamName(newdoc.getSpace(), context);
         if (streamName == null) {
             return;
         }
 
+        // TODO is this truly a documentation
+        // update event parameter (workaround)
+        if (newdoc.isNew()) {
+            event = XWikiDocChangeNotificationInterface.EVENT_DELETE;
+        }
+
+        List params = new ArrayList();
+        String docDisplayTitle = newdoc.getDisplayTitle(context);
+        String docLink =
+            "[" + docDisplayTitle + ">" + newdoc.getSpace() + "."
+                + newdoc.getName().replaceAll("@", "%40") + "]";
+
         try {
             switch (event) {
                 case XWikiDocChangeNotificationInterface.EVENT_NEW:
+                    params.add(docLink);
                     addDocumentActivityEvent(streamName, newdoc, 
ActivityEventType.CREATE,
-                        "as_documentation_has_been_created", params, context);
+                        ActivityEventPriority.NOTIFICATION, 
"as_documentation_has_been_created",
+                        params, context);
                     break;
                 case XWikiDocChangeNotificationInterface.EVENT_CHANGE:
+                    params.add(docLink);
                     addDocumentActivityEvent(streamName, newdoc, 
ActivityEventType.UPDATE,
-                        "as_documentation_has_been_updated", params, context);
+                        ActivityEventPriority.NOTIFICATION, 
"as_documentation_has_been_updated",
+                        params, context);
                     break;
                 case XWikiDocChangeNotificationInterface.EVENT_DELETE:
-                    addDocumentActivityEvent(streamName, newdoc, 
ActivityEventType.DELETE,
-                        "as_documentation_has_been_deleted", params, context);
+                    params.add(docDisplayTitle);
+                    addDocumentActivityEvent(streamName, olddoc, 
ActivityEventType.DELETE,
+                        ActivityEventPriority.NOTIFICATION, 
"as_documentation_has_been_deleted",
+                        params, context);
                     break;
             }
         } catch (Throwable e) {
@@ -130,27 +151,42 @@
     protected void handleResourceEvent(XWikiDocument newdoc, XWikiDocument 
olddoc, int event,
         XWikiContext context)
     {
-        List params = new ArrayList();
-        params.add(newdoc.getDisplayTitle(context));
-
         String streamName = getStreamName(newdoc.getSpace(), context);
         if (streamName == null) {
             return;
         }
 
+        // TODO is this truly a resource
+        // update event parameter (workaround)
+        if (newdoc.isNew()) {
+            event = XWikiDocChangeNotificationInterface.EVENT_DELETE;
+        }
+
+        List params = new ArrayList();
+        String docDisplayTitle = newdoc.getDisplayTitle(context);
+        String docLink =
+            "[" + docDisplayTitle + ">" + newdoc.getSpace() + "."
+                + newdoc.getName().replaceAll("@", "%40") + "]";
+
         try {
             switch (event) {
                 case XWikiDocChangeNotificationInterface.EVENT_NEW:
+                    params.add(docLink);
                     addDocumentActivityEvent(streamName, newdoc, 
ActivityEventType.CREATE,
-                        "as_resource_has_been_created", params, context);
+                        ActivityEventPriority.NOTIFICATION, 
"as_resource_has_been_created",
+                        params, context);
                     break;
                 case XWikiDocChangeNotificationInterface.EVENT_CHANGE:
+                    params.add(docLink);
                     addDocumentActivityEvent(streamName, newdoc, 
ActivityEventType.UPDATE,
-                        "as_resource_has_been_updated", params, context);
+                        ActivityEventPriority.NOTIFICATION, 
"as_resource_has_been_updated",
+                        params, context);
                     break;
                 case XWikiDocChangeNotificationInterface.EVENT_DELETE:
-                    addDocumentActivityEvent(streamName, newdoc, 
ActivityEventType.DELETE,
-                        "as_resource_has_been_deleted", params, context);
+                    params.add(docDisplayTitle);
+                    addDocumentActivityEvent(streamName, olddoc, 
ActivityEventType.DELETE,
+                        ActivityEventPriority.NOTIFICATION, 
"as_resource_has_been_deleted",
+                        params, context);
                     break;
             }
         } catch (Throwable e) {
@@ -162,27 +198,49 @@
     protected void handleMemberEvent(XWikiDocument newdoc, XWikiDocument 
olddoc, int event,
         XWikiContext context)
     {
-        List params = new ArrayList();
-        params.add(newdoc.getDisplayTitle(context));
-
         String streamName = getStreamName(newdoc.getSpace(), context);
         if (streamName == null) {
             return;
         }
 
+        BaseObject profile = newdoc.getObject("XWiki.SpaceUserProfileClass");
+        if (profile == null) {
+            if (olddoc == null) {
+                return;
+            }
+            profile = olddoc.getObject("XWiki.SpaceUserProfileClass");
+            if (profile == null) {
+                return;
+            }
+            event = XWikiDocChangeNotificationInterface.EVENT_DELETE;
+        } else if ((olddoc != null && 
olddoc.getObject("XWiki.SpaceUserProfileClass") == null)
+            || (olddoc == null && "1.2".equals(newdoc.getVersion()))) {
+            event = XWikiDocChangeNotificationInterface.EVENT_NEW;
+        }
+
         try {
+            String profileName = profile.getName();
+            String userName = "XWiki." + 
profileName.substring(profileName.indexOf(".") + 1);
+            XWikiDocument userDoc = context.getWiki().getDocument(userName, 
context);
+
+            List params = new ArrayList();
+            params.add(context.getWiki().getUserName(userName, context));
+
             switch (event) {
                 case XWikiDocChangeNotificationInterface.EVENT_NEW:
-                    addDocumentActivityEvent(streamName, newdoc, 
ActivityEventType.CREATE,
-                        "as_member_has_been_created", params, context);
+                    addDocumentActivityEvent(streamName, userDoc, 
ActivityEventType.CREATE,
+                        ActivityEventPriority.NOTIFICATION, 
"as_member_has_been_created", params,
+                        context);
                     break;
                 case XWikiDocChangeNotificationInterface.EVENT_CHANGE:
-                    addDocumentActivityEvent(streamName, newdoc, 
ActivityEventType.UPDATE,
-                        "as_member_has_been_updated", params, context);
+                    addDocumentActivityEvent(streamName, userDoc, 
ActivityEventType.UPDATE,
+                        ActivityEventPriority.NOTIFICATION, 
"as_member_has_been_updated", params,
+                        context);
                     break;
                 case XWikiDocChangeNotificationInterface.EVENT_DELETE:
-                    addDocumentActivityEvent(streamName, newdoc, 
ActivityEventType.DELETE,
-                        "as_member_has_been_deleted", params, context);
+                    // addDocumentActivityEvent(streamName, userDoc, 
ActivityEventType.DELETE,
+                    // ActivityEventPriority.NOTIFICATION, 
"as_member_has_been_deleted", params,
+                    // context);
                     break;
             }
         } catch (Throwable e) {

_______________________________________________
notifications mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/notifications

Reply via email to