/* * Copyright (c) 2010, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. * * Licensed under the Apache 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.apache.org/licenses/LICENSE-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.wso2.carbon.registry.social.api.message; import org.wso2.carbon.registry.social.api.utils.EnumUtil; import org.wso2.carbon.registry.social.api.people.userprofile.model.Url; import java.util.Date; import java.util.List; import java.util.Set; /** * This interface models the Messages */ public interface Message { /** * An enumeration of field names in a message. */ public static enum Field { APP_URL("appUrl"), /** * the field name for body. */ BODY("body"), /** * the field name for body id. */ BODY_ID("bodyId"), /** * the field name for the collection IDs */ COLLECTION_IDS("collectionIds"), /** * the field name for the unique ID of this message. */ ID("id"), /** * the field name for the Parent Message Id for this message. */ IN_REPLY_TO("inReplyTo"), /** * the field name for replies to this message */ REPLIES("replies"), /** * the field name for recipient list. */ RECIPIENTS("recipients"), /** * the field name for the ID of the person who sent this message. */ SENDER_ID("senderId"), /** * the field name for the time this message was sent. */ TIME_SENT("timeSent"), /** * the field name for title. */ TITLE("title"), /** * the field name for title id. */ TITLE_ID("titleId"), /** * the field name for type. */ TYPE("type"), /** * the field name for status. */ STATUS("status"), /** * the field name for updated time stamp. */ UPDATED("updated"), /** * the field name for urls. */ URLS("urls"); /** * the name of the field. */ private final String jsonString; public static final Set<String> ALL_FIELDS = EnumUtil.getEnumStrings(Field.values()); /** * Create a field based on a name. * * @param jsonString the name of the field */ private Field(String jsonString) { this.jsonString = jsonString; } /** * @return a string representation of the enum. */ @Override public String toString() { return this.jsonString; } } /** * The type of a message. */ public enum Type { /** * An email. */ EMAIL("email"), /** * A short private message. */ NOTIFICATION("notification"), /** * A message to a specific user that can be seen only by that user. */ PRIVATE_MESSAGE("privateMessage"), /** * A message to a specific user that can be seen by more than that user. */ PUBLIC_MESSAGE("publicMessage"); /** * The type of message. */ private final String jsonString; /** * Create a message type based on a string token. * * @param jsonString the type of message */ private Type(String jsonString) { this.jsonString = jsonString; } /** * @return a string representation of the enum. */ @Override public String toString() { return this.jsonString; } } /** * The Status of a message. */ public enum Status { NEW("new"), DELETED("deleted"), FLAGGED("read"); /** * The type of message. */ private final String jsonString; /** * Create a message type based on a string token. * * @param jsonString the type of message */ private Status(String jsonString) { this.jsonString = jsonString; } /** * @return a string representation of the enum. */ @Override public String toString() { return this.jsonString; } } /** * Gets the App URL for a message. * <p/> * Used if an App generated the message. * * @return the Application URL */ String getAppUrl(); /** * Set the App URL for a message. * * @param url the URL to set. */ void setAppUrl(String url); /** * Gets the main text of the message. * * @return the main text of the message */ String getBody(); /** * Sets the main text of the message. * HTML attributes are allowed and are sanitized by the container * * @param newBody the main text of the message */ void setBody(String newBody); /** * Gets the body id. * Used for message submission * * @return the body ID */ String getBodyId(); /** * Sets the body id. * * @param bodyId A valid body id defined in the gadget XML. */ void setBodyId(String bodyId); /** * Gets the collection Ids for this message. */ List<String> getCollectionIds(); /** * Sets the collection Ids for this message. */ void setCollectionIds(List<String> collectionIds); /** * Gets the unique ID of the message * * @return the ID of the message */ String getId(); /** * Sets the unique ID of the message. * * @param id the ID value to set */ void setId(String id); /** * Gets the parent message ID. * * @return message id */ String getInReplyTo(); /** * Sets the parent message ID * * @param parentId the parentId to set */ void setInReplyTo(String parentId); /** * Gets the recipient list of the message. * * @return the recipients of the message */ List<String> getRecipients(); /** * Gets the list of Replies to this message * * @return */ List<String> getReplies(); /** * Gets the Status of the message. * * @return the status of the message */ Status getStatus(); /** * Sets the Status of the message. * * @param status the status to set */ void setStatus(Status status); /** * Sets the recipients of the message. * HTML attributes are allowed and are sanitized by the container * * @param recipients the recipients text of the message */ void setRecipients(List<String> recipients); /** * Gets the sender ID value. * * @return sender person id */ String getSenderId(); /** * sets the sender ID. * * @param senderId the sender id to set */ void setSenderId(String senderId); /** * Gets the time the message was sent. * * @return the message sent time */ Date getTimeSent(); /** * Sets the time the message was sent. * * @param timeSent the time the message was sent */ void setTimeSent(Date timeSent); /** * Gets the title of the message. * * @return the title of the message */ String getTitle(); /** * Sets the title of the message. * HTML attributes are allowed and are sanitized by the container. * * @param newTitle the title of the message */ void setTitle(String newTitle); /** * Gets the title ID for this message. * Used for message submission. * * @return the title Id */ String getTitleId(); /** * Sets the title ID for this message. * Used for message submission. * * @param titleId the title ID as defined in the gadget XML */ void setTitleId(String titleId); /** * Gets the type of the message, as specified by opensocial.Message.Type. * * @return the type of message (enum Message.Type) */ Type getType(); /** * Sets the type of the message, as specified by opensocial.Message.Type. * * @param newType the type of message (enum Message.Type) */ void setType(Type newType); /** * Gets the updated timestamp for the message. * * @return the updated date of the message */ Date getUpdated(); /** * Sets the updated timestamp for the message. */ void setUpdated(Date updated); /** * Get the URLs related to the message * * @return the URLs related to the person, their webpages, or feeds */ List<Url> getUrls(); /** * Set the URLs related to the message * * @param urls the URLs related to the person, their webpages, or feeds */ void setUrls(List<Url> urls); }