org.xwiki.watchlist.internal.notification.EventsAndSubscribersSource.java Source code

Java tutorial

Introduction

Here is the source code for org.xwiki.watchlist.internal.notification.EventsAndSubscribersSource.java

Source

/*
 * See the NOTICE file distributed with this work for additional
 * information regarding copyright ownership.
 *
 * This is free software; you can redistribute it and/or modify it
 * under the terms of the GNU Lesser General Public License as
 * published by the Free Software Foundation; either version 2.1 of
 * the License, or (at your option) any later version.
 *
 * This software is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this software; if not, write to the Free
 * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
 * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
 */
package org.xwiki.watchlist.internal.notification;

import java.util.List;
import java.util.Map;

import org.apache.commons.collections4.ListUtils;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.xwiki.model.reference.DocumentReference;
import org.xwiki.text.XWikiToStringBuilder;
import org.xwiki.watchlist.internal.api.WatchListEvent;

/**
 * Represents the inputs of the {@link WatchListEventMimeMessageFactory}: a list of events and a list of subscribers
 * that might be interested.
 *
 * @version $Id: 0ce818a463c8c9967c5969a85b77a1fb6fe06001 $
 * @since 7.1M1
 */
public class EventsAndSubscribersSource {
    /**
     * The list of subscribers to process.
     */
    public static final String SUBSCRIBERS_PARAMETER = "subscribers";

    /**
     * The list of events to process.
     */
    public static final String EVENTS_PARAMETER = "events";

    private List<WatchListEvent> events;

    private List<DocumentReference> subscribers;

    /**
     * @param events see {@link #getEvents()}
     * @param subscribers see {@link #getSubscribers()}
     */
    public EventsAndSubscribersSource(List<WatchListEvent> events, List<DocumentReference> subscribers) {
        this.events = events;
        this.subscribers = subscribers;
    }

    /**
     * @return the list of events that should be considered
     */
    public List<WatchListEvent> getEvents() {
        return events;
    }

    /**
     * @return the list of subscribers that might be interested in the events
     */
    public List<DocumentReference> getSubscribers() {
        return subscribers;
    }

    /**
     * @param sourceMap a Map containing the list of events and subscribers to iterate over. The supported map keys are
     *            {@code events} and {@code subscribers}
     * @return the typed instance representing the inputs passed
     */
    public static EventsAndSubscribersSource parse(Map<String, Object> sourceMap) {
        List<WatchListEvent> events = ListUtils.emptyIfNull((List<WatchListEvent>) sourceMap.get(EVENTS_PARAMETER));
        List<DocumentReference> subscribers = ListUtils
                .emptyIfNull((List<DocumentReference>) sourceMap.get(SUBSCRIBERS_PARAMETER));

        return new EventsAndSubscribersSource(events, subscribers);
    }

    @Override
    public String toString() {
        ToStringBuilder builder = new XWikiToStringBuilder(this);
        builder.append(EVENTS_PARAMETER, getEvents());
        builder.append(SUBSCRIBERS_PARAMETER, getSubscribers());
        return builder.toString();
    }
}