/********************************************************************************** * $URL: https://source.sakaiproject.org/svn/mailarchive/trunk/mailarchive-api/api/src/java/org/sakaiproject/mailarchive/api/MailArchiveChannel.java $ * $Id: MailArchiveChannel.java 105079 2012-02-24 23:08:11Z ottenhoff@longsight.com $ *********************************************************************************** * * Copyright (c) 2003, 2004, 2005, 2006, 2008 The Sakai Foundation * * Licensed under the Educational Community License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.opensource.org/licenses/ECL-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * **********************************************************************************/ package org.sakaiproject.mailarchive.api; import java.util.List; import org.sakaiproject.exception.IdUnusedException; import org.sakaiproject.exception.PermissionException; import org.sakaiproject.message.api.MessageChannel; import org.sakaiproject.time.api.Time; import org.sakaiproject.user.api.User; /** * <p> * MailArchiveChannel is the extension to the MessageChannel interface for a Sakai Mail Archive service. Messages in the MailArchiveChannel are MailArchiveMessages with MailArchiveMessageHeaders. * </p> * <p> * Security on the channel include: * <ul> * <li>mailarchive.channel.read</li> * <li>mailarchive.channel.remove.any</li> * <li>mailarchive.channel.remove.own</li> * <li>mailarchive.channel.post</li> * </ul> * Security Roles for the channel include: * <ul> * <li>mailarchive.member: read, remove.own, post</li> * <li>mailarchive.administrator: mailarchive.member, remove.any</li> * </ul> * </p> * <p> * Usage Events generated: * <ul> * <li>mailarchive.channel.read - mailarchive message resource id</li> * <li>mailarchive.channel.remove.any - mailarchive message resource id</li> * <li>mailarchive.channel.remove.own - mailarchive message resource id</li> * <li>mailarchive.channel.post - mailarchive message resource id</li> * </p> */ public interface MailArchiveChannel extends MessageChannel { /** * A (MailArchiveMessage) cover for getMessage to return a specific mail archive group message, as specified by message id. * * @param messageId * The id of the message to get. * @return the MailArchiveMessage that has the specified id. * @exception IdUnusedException * If this name is not a defined message in this announcement channel. * @exception PermissionException * If the user does not have any permissions to read the message. */ public MailArchiveMessage getMailArchiveMessage(String messageId) throws IdUnusedException, PermissionException; /** * a (MailArchiveMessage) cover for addMessage to add a new message to this channel. * * @param subject * The message header subject. * @param fromAddress * The mail from: address from the message. * @param dateSent * The date: sent from the message. * @param mailHeaders * The full set of mail headers from the message. * @param attachments * The message header attachments, a vector of Reference objects. * @param body * The message body.- body[0] is plain/text; body[1] is html/text * @return The newly added message. * @exception PermissionException * If the user does not have write permission to the channel. */ public MailArchiveMessage addMailArchiveMessage(String subject, String fromAddress, Time dateSent, List mailHeaders, List attachments, String[] body) throws PermissionException; /** @return true if the channel enabled, false if not. */ public boolean getEnabled(); /** @return true if the channel is open to messages from outside the membership, false if not. */ public boolean getOpen(); /** @return <code>true</code> if the channel sets the reply to address back to the channel */ public boolean getReplyToList(); /** @return <code>true</code> if the channel sets the value to send only to the archive */ public boolean getSendToList(); /** * check permissions for addMessage() for the given user. * * @param user * The user. * @return true if the specified user is allowed to addMessage(...), false if not. */ public boolean allowAddMessage(User user); }