Search in sources :

Example 6 with Event

use of org.xwiki.eventstream.Event in project xwiki-platform by xwiki.

the class CompositeEvent method getDate.

/**
 * @return the date of the most recent event
 * @since 9.11RC1
 */
public Date getDate() {
    Iterator<Event> it = events.iterator();
    Event chosenEvent = it.next();
    while (it.hasNext()) {
        Event event = it.next();
        if (event.getDate().compareTo(chosenEvent.getDate()) > 0) {
            chosenEvent = event;
        }
    }
    return chosenEvent.getDate();
}
Also used : Event(org.xwiki.eventstream.Event)

Example 7 with Event

use of org.xwiki.eventstream.Event in project xwiki-platform by xwiki.

the class CompositeEvent method getDates.

/**
 * @return the dates of the events, sorted by descending order
 */
public List<Date> getDates() {
    List<Date> dates = new ArrayList<>();
    for (Event event : events) {
        dates.add(event.getDate());
    }
    Collections.sort(dates, Collections.reverseOrder());
    return dates;
}
Also used : ArrayList(java.util.ArrayList) Event(org.xwiki.eventstream.Event) Date(java.util.Date)

Example 8 with Event

use of org.xwiki.eventstream.Event in project xwiki-platform by xwiki.

the class DefaultEventStatusManager method getEventStatus.

@Override
public List<EventStatus> getEventStatus(List<Event> events, List<String> entityIds) throws Exception {
    List<EventStatus> results = new ArrayList<>();
    // Don't perform any query if the list of events or entities is actually empty
    if (events.isEmpty() || entityIds.isEmpty()) {
        return results;
    }
    // Get the ActivityEventStatus from the database and convert them
    Query query = queryManager.createQuery("select eventStatus from ActivityEventStatusImpl eventStatus " + "where eventStatus.activityEvent.id in :eventIds and eventStatus.entityId in :entityIds", Query.HQL);
    query.bindValue("eventIds", getEventIds(events));
    query.bindValue("entityIds", entityIds);
    for (ActivityEventStatus activityEventStatus : query.<ActivityEventStatus>execute()) {
        results.add(new DefaultEventStatus(eventConverter.convertActivityToEvent(activityEventStatus.getActivityEvent()), activityEventStatus.getEntityId(), activityEventStatus.isRead()));
    }
    // For status that are not present in the database, we create objects with read = false
    for (Event event : events) {
        for (String entityId : entityIds) {
            if (!isPresent(event, entityId, results)) {
                results.add(new DefaultEventStatus(event, entityId, false));
            }
        }
    }
    // Sort statuses by date, in the descending order, like notifications, otherwise the order is lost
    Collections.sort(results, (status1, status2) -> status2.getEvent().getDate().compareTo(status1.getEvent().getDate()));
    return results;
}
Also used : ActivityEventStatus(com.xpn.xwiki.plugin.activitystream.api.ActivityEventStatus) Query(org.xwiki.query.Query) DefaultEventStatus(org.xwiki.eventstream.internal.DefaultEventStatus) DefaultEventStatus(org.xwiki.eventstream.internal.DefaultEventStatus) EventStatus(org.xwiki.eventstream.EventStatus) ActivityEventStatus(com.xpn.xwiki.plugin.activitystream.api.ActivityEventStatus) ArrayList(java.util.ArrayList) Event(org.xwiki.eventstream.Event)

Example 9 with Event

use of org.xwiki.eventstream.Event in project xwiki-platform by xwiki.

the class DefaultRecordableEventConverter method convert.

@Override
public Event convert(RecordableEvent recordableEvent, String source, Object data) throws Exception {
    XWikiContext context = contextProvider.get();
    org.xwiki.eventstream.Event convertedEvent = new DefaultEvent();
    convertedEvent.setType(recordableEvent.getClass().getCanonicalName());
    convertedEvent.setApplication(source);
    convertedEvent.setDate(new Date());
    convertedEvent.setUser(context.getUserReference());
    convertedEvent.setWiki(context.getWikiReference());
    if (recordableEvent instanceof TargetableEvent) {
        convertedEvent.setTarget(((TargetableEvent) recordableEvent).getTarget());
    }
    if (data instanceof String) {
        convertedEvent.setBody((String) data);
    } else if (data instanceof XWikiDocument) {
        XWikiDocument document = (XWikiDocument) data;
        convertedEvent.setDocument(document.getDocumentReference());
        convertedEvent.setDocumentVersion(document.getVersion());
        convertedEvent.setDocumentTitle(document.getRenderedTitle(context));
    }
    return convertedEvent;
}
Also used : DefaultEvent(org.xwiki.eventstream.internal.DefaultEvent) XWikiDocument(com.xpn.xwiki.doc.XWikiDocument) TargetableEvent(org.xwiki.eventstream.TargetableEvent) Event(org.xwiki.eventstream.Event) XWikiContext(com.xpn.xwiki.XWikiContext) Date(java.util.Date)

Example 10 with Event

use of org.xwiki.eventstream.Event in project xwiki-platform by xwiki.

the class EventConverter method convertActivityToEvent.

/**
 * Convert an old {@link ActivityEvent} to the new {@link Event}.
 *
 * @param e the activity event to transform
 * @return the equivalent event
 */
public Event convertActivityToEvent(ActivityEvent e) {
    Event result = this.eventFactory.createRawEvent();
    result.setApplication(e.getApplication());
    result.setBody(e.getBody());
    result.setDate(e.getDate());
    result.setDocument(new DocumentReference(this.resolver.resolve(e.getPage(), EntityType.DOCUMENT, new WikiReference(e.getWiki()))));
    result.setId(e.getEventId());
    result.setDocumentTitle(e.getParam1());
    if (StringUtils.isNotEmpty(e.getParam2())) {
        if (StringUtils.endsWith(e.getType(), "Attachment")) {
            result.setRelatedEntity(this.explicitResolver.resolve(e.getParam2(), EntityType.ATTACHMENT, result.getDocument()));
        } else if (StringUtils.endsWith(e.getType(), "Comment") || StringUtils.endsWith(e.getType(), "Annotation")) {
            result.setRelatedEntity(this.explicitResolver.resolve(e.getParam2(), EntityType.OBJECT, result.getDocument()));
        }
    }
    result.setImportance(Event.Importance.MEDIUM);
    if (e.getPriority() > 0) {
        int priority = e.getPriority() / 10 - 1;
        if (priority >= 0 && priority < Event.Importance.values().length) {
            result.setImportance(Event.Importance.values()[priority]);
        }
    }
    result.setGroupId(e.getRequestId());
    result.setStream(e.getStream());
    result.setTitle(e.getTitle());
    result.setType(e.getType());
    if (StringUtils.isNotBlank(e.getUrl())) {
        try {
            result.setUrl(new URL(e.getUrl()));
        } catch (MalformedURLException ex) {
        // Should not happen
        }
    }
    result.setUser(new DocumentReference(this.resolver.resolve(e.getUser(), EntityType.DOCUMENT)));
    result.setDocumentVersion(e.getVersion());
    result.setParameters(e.getParameters());
    result.setTarget(e.getTarget());
    return result;
}
Also used : MalformedURLException(java.net.MalformedURLException) ActivityEvent(com.xpn.xwiki.plugin.activitystream.api.ActivityEvent) Event(org.xwiki.eventstream.Event) WikiReference(org.xwiki.model.reference.WikiReference) DocumentReference(org.xwiki.model.reference.DocumentReference) URL(java.net.URL)

Aggregations

Event (org.xwiki.eventstream.Event)60 Test (org.junit.Test)31 DocumentReference (org.xwiki.model.reference.DocumentReference)21 DefaultEvent (org.xwiki.eventstream.internal.DefaultEvent)20 CompositeEvent (org.xwiki.notifications.CompositeEvent)17 ArrayList (java.util.ArrayList)7 Query (org.xwiki.query.Query)7 Date (java.util.Date)6 Expectations (org.jmock.Expectations)6 DocumentAccessBridge (org.xwiki.bridge.DocumentAccessBridge)5 QueryException (org.xwiki.query.QueryException)5 ObjectReference (org.xwiki.model.reference.ObjectReference)4 HashMap (java.util.HashMap)3 WikiReference (org.xwiki.model.reference.WikiReference)3 XWikiContext (com.xpn.xwiki.XWikiContext)2 ActivityEvent (com.xpn.xwiki.plugin.activitystream.api.ActivityEvent)2 EventStatus (org.xwiki.eventstream.EventStatus)2 EventStream (org.xwiki.eventstream.EventStream)2 EventStreamAddedEvent (org.xwiki.eventstream.events.EventStreamAddedEvent)2 SpaceReference (org.xwiki.model.reference.SpaceReference)2