/********************************************************************************** * $URL: https://source.sakaiproject.org/svn/message/trunk/message-api/api/src/java/org/sakaiproject/message/api/MessageHeader.java $ * $Id: MessageHeader.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.message.api; import java.util.Collection; import java.util.Stack; import org.sakaiproject.entity.api.AttachmentContainer; import org.sakaiproject.site.api.Group; import org.sakaiproject.time.api.Time; import org.sakaiproject.user.api.User; import org.w3c.dom.Document; import org.w3c.dom.Element; /** * <p> * MessageHeader is the base Interface for a Sakai Message headers. Header fields common to all message service message headers are defined here. * </p> */ public interface MessageHeader extends AttachmentContainer { /** * <p> * MessageAccess enumerates different access modes for the message: channel-wide or grouped. * </p> */ public class MessageAccess { private final String m_id; private MessageAccess(String id) { m_id = id; } public String toString() { return m_id; } static public MessageAccess fromString(String access) { // if (PUBLIC.m_id.equals(access)) return PUBLIC; if (CHANNEL.m_id.equals(access)) return CHANNEL; if (GROUPED.m_id.equals(access)) return GROUPED; return null; } /** public access to the message: pubview */ // public static final MessageAccess PUBLIC = new MessageAccess("public"); /** channel (site) level access to the message */ public static final MessageAccess CHANNEL = new MessageAccess("channel"); /** grouped access; only members of the getGroup() groups (authorization groups) have access */ public static final MessageAccess GROUPED = new MessageAccess("grouped"); } /** * Access the unique (within the channel) message id. * * @return The unique (within the channel) message id. */ String getId(); /** * Access the date/time the message was sent to the channel. * * @return The date/time the message was sent to the channel. */ Time getDate(); /** * Access the message order of the message was sent to the channel. * * @return The message order of the message was sent to the channel. */ Integer getMessage_order(); /** * Access the User who sent the message to the channel. * * @return The User who sent the message to the channel. */ User getFrom(); /** * Access the draft status of the message. * * @return True if the message is a draft, false if not. */ boolean getDraft(); /** * Access the groups defined for this message. * * @return A Collection (String) of group refs (authorization group ids) defined for this message; empty if none are defined. */ Collection<String> getGroups(); /** * Access the groups, as Group objects, defined for this message. * * @return A Collection (Group) of group objects defined for this message; empty if none are defined. */ Collection<Group> getGroupObjects(); /** * Access the access mode for the message - how we compute who has access to the message. * * @return The MessageAccess access mode for the message. */ MessageAccess getAccess(); /** * Serialize the resource into XML, adding an element to the doc under the top of the stack element. * * @param doc * The DOM doc to contain the XML (or null for a string return). * @param stack * The DOM elements, the top of which is the containing element of the new "resource" element. * @return The newly added element. */ Element toXml(Document doc, Stack stack); }