/*
* Jitsi, the OpenSource Java VoIP and Instant Messaging client.
*
* Copyright @ 2015 Atlassian Pty Ltd
*
* 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 net.java.sip.communicator.service.notification;
import java.util.*;
/**
* Object to cache fired notifications before all handler implementations are
* ready registered.
*
* @author Ingo Bauersachs
*/
public class NotificationData
{
/**
* The name/key of the <tt>NotificationData</tt> extra which is provided to
* {@link CommandNotificationHandler#execute(CommandNotificationAction,
* Map)} i.e. a <tt>Map<String,String></tt> which is known by the
* (argument) name <tt>cmdargs</tt>.
*/
public static final String COMMAND_NOTIFICATION_HANDLER_CMDARGS_EXTRA
= "CommandNotificationHandler.cmdargs";
/**
* The name/key of the <tt>NotificationData</tt> extra which is provided to
* {@link PopupMessageNotificationHandler#popupMessage(
* PopupMessageNotificationAction, String, String, byte[], Object)} i.e. an
* <tt>Object</tt> which is known by the (argument) name <tt>tag</tt>.
*/
public static final String POPUP_MESSAGE_HANDLER_TAG_EXTRA
= "PopupMessageNotificationHandler.tag";
/**
* The name/key of the <tt>NotificationData</tt> extra which is provided to
* {@link SoundNotificationHandler} i.e. a <tt>Callable<Boolean></tt>
* which is known as the condition which determines whether looping sounds
* are to continue playing.
*/
public static final String SOUND_NOTIFICATION_HANDLER_LOOP_CONDITION_EXTRA
= "SoundNotificationHandler.loopCondition";
private final String eventType;
/**
* The {@link NotificationHandler}-specific extras provided to this
* instance. The keys are among the <tt>XXX_EXTRA</tt> constants defined by
* the <tt>NotificationData</tt> class.
*/
private final Map<String, Object> extras;
private final byte[] icon;
private final String message;
private final String title;
/**
* Creates a new instance of this class.
*
* @param eventType the type of the event that we'd like to fire a
* notification for.
* @param title the title of the given message
* @param message the message to use if and where appropriate (e.g. with
* systray or log notification.)
* @param icon the icon to show in the notification if and where appropriate
* @param extras additional/extra {@link NotificationHandler}-specific data
* to be provided by the new instance to the various
* <tt>NotificationHandler</tt>s
*/
NotificationData(
String eventType,
String title,
String message,
byte[] icon,
Map<String, Object> extras)
{
this.eventType = eventType;
this.title = title;
this.message = message;
this.icon = icon;
this.extras = extras;
}
/**
* Gets the type of the event that we'd like to fire a notification for
*
* @return the eventType
*/
public String getEventType()
{
return eventType;
}
/**
* Gets the {@link NotificationHandler}-specific extras provided to this
* instance.
*
* @return the <tt>NotificationHandler</tt>-specific extras provided to this
* instance. The keys are among the <tt>XXX_EXTRA</tt> constants defined by
* the <tt>NotificationData</tt> class
*/
Map<String, Object> getExtras()
{
return Collections.unmodifiableMap(extras);
}
/**
* Gets the {@link NotificationHandler}-specific extra provided to this
* instance associated with a specific key.
*
* @param key the key whose associated <tt>NotificationHandler</tt>-specific
* extra is to be returned. Well known keys are defined by the
* <tt>NotificationData</tt> class as the <tt>XXX_EXTRA</tt> constants.
* @return the <tt>NotificationHandler</tt>-specific extra provided to this
* instance associated with the specified <tt>key</tt>
*/
public Object getExtra(String key)
{
return (extras == null) ? null : extras.get(key);
}
/**
* Gets the icon to show in the notification if and where appropriate.
*
* @return the icon
*/
byte[] getIcon()
{
return icon;
}
/**
* Gets the message to use if and where appropriate (e.g. with systray or
* log notification).
*
* @return the message
*/
String getMessage()
{
return message;
}
/**
* Gets the title of the given message.
*
* @return the title
*/
String getTitle()
{
return title;
}
}