All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.opencms.main.CmsBroadcast Maven / Gradle / Ivy

Go to download

OpenCms is an enterprise-ready, easy to use website content management system based on Java and XML technology. Offering a complete set of features, OpenCms helps content managers worldwide to create and maintain beautiful websites fast and efficiently.

There is a newer version: 17.0
Show newest version
/*
 * This library is part of OpenCms -
 * the Open Source Content Management System
 *
 * Copyright (c) Alkacon Software GmbH & Co. KG (http://www.alkacon.com)
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
 * Lesser General Public License for more details.
 *
 * For further information about Alkacon Software GmbH & Co. KG, please see the
 * company website: http://www.alkacon.com
 *
 * For further information about OpenCms, please see the
 * project website: http://www.opencms.org
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

package org.opencms.main;

import org.opencms.file.CmsUser;
import org.opencms.i18n.CmsEncoder;
import org.opencms.ui.components.CmsRichTextArea;

/**
 * A single broadcast message, send from one OpenCms user to another.

* * To addess a broadcast to another user, it must be placed in the * broadcast queue of that user using for example * {@link org.opencms.main.CmsSessionManager#sendBroadcast(CmsUser, String, CmsUser)}.

* * @since 6.0.0 */ public class CmsBroadcast implements Cloneable { /** The content mode describes how the text used for a broadcast message should be interpreted. */ public enum ContentMode { /** Broadcast message is plaintext and needs to be converted to HTML. */ plain, /** Broadcast message is already HTML, but may need to be cleaned up. */ html; } /** Time interval between displays of repeated messages. */ public static long DISPLAY_AGAIN_TIME = 60 * 1000; /** The broadcast content. */ private String m_message; /** The sender of the broadcast. */ private CmsUser m_sender; /** Time the broadcast was send. */ private long m_sendTime; /** The content mode. */ private ContentMode m_contentMode; /**The last display time. */ private long m_lastDisplay; /** True if message should be repeated. */ private boolean m_repeat; /** * Creates a new broadcast, with the current system time set as send time.

* * * * @param sender the sender of the broadcast * @param message the message to send * @deprecated use the constructors with the content mode instead */ @Deprecated public CmsBroadcast(CmsUser sender, String message) { this(sender, message, System.currentTimeMillis(), 0L, false); } /** * Creates a new broadcast, with the current system time set as send time.

* * @param sender the sender of the broadcast * @param message the message to send * @param repeat true if message shoul be repeated * @deprecated use the constructors with the content mode instead */ @Deprecated public CmsBroadcast(CmsUser sender, String message, boolean repeat) { this(sender, message, System.currentTimeMillis(), 0L, repeat); } /** * Creates a new broadcast, with the current system time set as send time.

* * @param sender the sender of the broadcast * @param message the message to send * @param repeat true if message should be repeated * @param mode the content mode */ public CmsBroadcast(CmsUser sender, String message, boolean repeat, ContentMode mode) { this(sender, message, System.currentTimeMillis(), 0L, repeat, mode); } /** * Creates a new broadcast, with the current system time set as send time.

* * @param sender the sender of the broadcast * @param message the message to send * @param mode the content mode */ public CmsBroadcast(CmsUser sender, String message, ContentMode mode) { this(sender, message, System.currentTimeMillis(), 0L, false, mode); } /** * Creates a new broadcast, with the current system time set as send time.

* * @param sender the sender of the broadcast * @param message the message to send * @param sendTime time when broadcast initaly was send * @param lastDisplay last display time * @param repeat true if message should be repeated * * @deprecated use the constructors with the content mode instead */ @Deprecated public CmsBroadcast(CmsUser sender, String message, long sendTime, long lastDisplay, boolean repeat) { this(sender, message, sendTime, lastDisplay, repeat, ContentMode.plain); } /** * Creates a new broadcast, with the current system time set as send time.

* * @param sender the sender of the broadcast * @param message the message to send * @param sendTime time when broadcast initaly was send * @param lastDisplay last display time * @param repeat true if the message should be repeated * @param mode the content mode */ @Deprecated public CmsBroadcast( CmsUser sender, String message, long sendTime, long lastDisplay, boolean repeat, ContentMode mode) { m_sender = sender; m_message = message; m_sendTime = sendTime; m_lastDisplay = lastDisplay; m_repeat = repeat; m_contentMode = mode; } /** * Gets the content mode. * * @return the content mode */ public ContentMode getContentMode() { return m_contentMode; } /** * Gets the last display time. * * @return the last display time */ public long getLastDisplay() { return m_lastDisplay; } /** * Returns the processed broadcast message content as HTML. * * @return the broadcast message content HTML */ public String getMessage() { String result; switch (m_contentMode) { case html: result = m_message; break; case plain: default: result = htmlForPlain(m_message); } result = CmsRichTextArea.cleanHtml(result, true); return result; } /** * Returns the original message text passed in the constructor. * * @return the original message text */ public String getRawMessage() { return m_message; } /** * Returns the time this broadcast was send.

* * @return the time this broadcast was send */ public long getSendTime() { return m_sendTime; } /** * Returns the user that was the sender of this broadcast.

* * It could be null to signalize a system message.

* * @return the user that was the sender of this broadcast */ public CmsUser getUser() { return m_sender; } /** * Returns true if this is a repeating message. * * @return true if this is a repeating message */ public boolean isRepeat() { return m_repeat; } /** * Produces a copy of this object, but with a changed lastDisplay attribute. * * @param lastDisplay the new value for the lastDisplay attribute * @return the copy with the modified time */ public CmsBroadcast withLastDisplay(long lastDisplay) { CmsBroadcast result; try { result = (CmsBroadcast)(this.clone()); result.m_lastDisplay = lastDisplay; return result; } catch (CloneNotSupportedException e) { return null; } } /** * Escapes special HTML characters and converts newlines to br tags. * * @param message the message to convert * @return the HTML for the message */ private String htmlForPlain(String message) { String result = CmsEncoder.escapeXml(message); result = result.replace("\n", "
"); return result; } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy