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();
}
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;
}
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;
}
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;
}
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;
}
Aggregations