Search in sources :

Example 1 with CompositeEventStatus

use of org.xwiki.notifications.CompositeEventStatus in project xwiki-platform by xwiki.

the class DefaultCompositeEventStatusManager method getCompositeEventStatuses.

@Override
public List<CompositeEventStatus> getCompositeEventStatuses(List<CompositeEvent> compositeEvents, String entityId) throws Exception {
    // Creating a list of all events to avoid multiple calls to getEventStatuses() and so multiple calls to the
    // database.
    List<Event> allEvents = new ArrayList<>();
    // But maintain a mapping between eventId and their composite event status
    Map<String, CompositeEventStatus> map = new HashMap<>();
    for (CompositeEvent compositeEvent : compositeEvents) {
        CompositeEventStatus compositeEventStatus = new CompositeEventStatus(compositeEvent);
        for (Event event : compositeEvent.getEvents()) {
            map.put(event.getId(), compositeEventStatus);
        }
        allEvents.addAll(compositeEvent.getEvents());
    }
    // Put the event statuses into the composite events statuses
    for (EventStatus eventStatus : getEventStatuses(allEvents, entityId)) {
        map.get(eventStatus.getEvent().getId()).add(eventStatus);
    }
    List<CompositeEventStatus> results = new ArrayList<>();
    // Keep the same order than inputs
    for (CompositeEvent event : compositeEvents) {
        results.add(map.get(event.getEvents().get(0).getId()));
    }
    return results;
}
Also used : HashMap(java.util.HashMap) ArrayList(java.util.ArrayList) CompositeEventStatus(org.xwiki.notifications.CompositeEventStatus) EventStatus(org.xwiki.eventstream.EventStatus) CompositeEvent(org.xwiki.notifications.CompositeEvent) Event(org.xwiki.eventstream.Event) CompositeEvent(org.xwiki.notifications.CompositeEvent) CompositeEventStatus(org.xwiki.notifications.CompositeEventStatus)

Aggregations

ArrayList (java.util.ArrayList)1 HashMap (java.util.HashMap)1 Event (org.xwiki.eventstream.Event)1 EventStatus (org.xwiki.eventstream.EventStatus)1 CompositeEvent (org.xwiki.notifications.CompositeEvent)1 CompositeEventStatus (org.xwiki.notifications.CompositeEventStatus)1