1 /* 2 * This software was designed and created by Jason Carroll. 3 * Copyright (c) 2002, 2003, 2004 Jason Carroll. 4 * The author can be reached at jcarroll@cowsultants.com 5 * ITracker website: http://www.cowsultants.com 6 * ITracker forums: http://www.cowsultants.com/phpBB/index.php 7 * 8 * This program is free software; you can redistribute it and/or modify 9 * it only under the terms of the GNU General Public License as published by 10 * the Free Software Foundation; either version 2 of the License, or 11 * (at your option) any later version. 12 * 13 * This program is distributed in the hope that it will be useful, 14 * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 * GNU General Public License for more details. 17 */ 18 19 package org.itracker.services; 20 21 import org.itracker.model.Issue; 22 import org.itracker.model.Notification; 23 import org.itracker.model.Notification.Role; 24 import org.itracker.model.Notification.Type; 25 import org.itracker.model.User; 26 27 import javax.mail.internet.InternetAddress; 28 import java.util.List; 29 30 31 public interface NotificationService { 32 33 34 /** 35 * Retrieves the primary issue notifications. Primary notifications 36 * are defined as the issue owner (or creator if not assigned), and any project owners. 37 * This should encompass the list of people that should be notified so that action 38 * can be taken on an issue that needs immediate attention. 39 * 40 * @param issue the issue to find notifications for 41 */ 42 List<Notification> getPrimaryIssueNotifications(Issue issue); 43 44 /** 45 * Retrieves all notifications for an issue where the notification's user is also active. 46 * 47 * @param issue the issue to find notifications for 48 */ 49 List<Notification> getIssueNotifications(Issue issue); 50 51 /** 52 * Retrieves an array of issue notifications. The notifications by default 53 * is the creator and owner of the issue, all project admins for the issue's project, 54 * and anyone else that has a notfication on file. 55 * 56 * @param notificationId id of the notification 57 */ 58 boolean removeIssueNotification(Integer notificationId); 59 60 /** 61 * @param issue 62 * @param primaryOnly 63 * @param activeOnly 64 * @return 65 */ 66 List<Notification> getIssueNotifications(Issue issue, boolean primaryOnly, boolean activeOnly); 67 68 /** 69 * @param issue 70 * @param userId 71 * @return 72 */ 73 boolean hasIssueNotification(Issue issue, Integer userId); 74 75 boolean hasIssueNotification(Issue issue, String login); 76 boolean hasIssueNotification(Issue issue, String login, Role role); 77 boolean hasIssueNotification(Issue issue, Integer userId, Role role); 78 79 /** 80 * @param notification 81 * @param type 82 * @param baseURL 83 */ 84 void sendNotification(Notification notification, Type type, String baseURL); 85 86 /** 87 * @param issue 88 * @param type 89 * @param baseURL 90 */ 91 void sendNotification(Issue issue, Type type, String baseURL); 92 93 /** 94 * @param issue 95 * @param type 96 * @param baseURL 97 * @param receipients 98 * @param lastModifiedDays 99 * @deprecated 100 */ 101 @Deprecated 102 void sendNotification(Issue issue, Type type, String baseURL, InternetAddress[] receipients, Integer lastModifiedDays); 103 104 /** 105 * TODO: whats its use? 106 * <p/> 107 * Moved from {@link IssueService}, could not find out the purpose of this method. What will happen with this added {@link Notification}? 108 */ 109 boolean addIssueNotification(Notification notification); 110 111 void sendReminder(Issue issue, User user, String baseURL, int issueAge); 112 }