001package org.deepamehta.plugins.subscriptions.service; 002 003import de.deepamehta.core.DeepaMehtaObject; 004import de.deepamehta.core.RelatedTopic; 005import de.deepamehta.core.service.PluginService; 006import de.deepamehta.core.service.ResultList; 007import java.util.ArrayList; 008 009public interface SubscriptionService extends PluginService { 010 011 /** 012 * Create a subscription edge for useraccount to item. 013 * 014 * @param accountId topic-id of user account 015 * @param itemId topic-id of user account 016 */ 017 public void subscribe(long accountId, long itemId); 018 019 /** 020 * Remove subscription (edge) for given user account and item. 021 * 022 * @param accountId topic-id of user account 023 * @param itemId topic-id of subscribed item 024 */ 025 public void unsubscribe(long accountId, long itemId); 026 027 /** 028 * Creates new notifications for all users with a direct or indirect (tags) subscription to the given item. 029 * Notifications are created if the (given) item is either of TopicType "User Account" or of any other TopicType 030 * which has the TopicType=Tag as a child-type. In the latter case, all subscribers of the _Tag_ are notified. 031 * 032 * @param title title of the notification 033 * @param message text part of the notification 034 * @param actionAccountId topic-id of user account performing the action which leads to the notification of all others 035 * @param item item users can have subscribed (either "User Account" or any TopicType with "Tags" as child) 036 */ 037 public void createNotifications(String title, String message, long actionAccountId, DeepaMehtaObject item); 038 039 /** Gets all subscribed topics for the logged-in user. */ 040 public ResultList<RelatedTopic> getSubscriptions(); 041 042 /** Gets all notifications for the logged-in user. */ 043 public ResultList<RelatedTopic> getAllNotifications(); 044 045 /** Gets all unread notifications for the logged-in user. */ 046 public ArrayList<RelatedTopic> getAllUnseenNotifications(); 047 048}