2.17.2: 2011-06-17

net.sf.basedb.core
Class Message

java.lang.Object
  extended by net.sf.basedb.core.BasicItem<MessageData>
      extended by net.sf.basedb.core.Message
All Implemented Interfaces:
AccessControlled, Identifiable, Nameable, Removable

public class Message
extends BasicItem<MessageData>
implements Nameable, Removable

This class represents a message. Messages are normally sent by the system when a job is completed. It is also possible to send messages between other users.

Version:
2.0
Author:
Nicklas
Last modified
$Date: 2010-10-28 08:20:24 +0200 (Thu, 28 Oct 2010) $

Field Summary
static int MAX_FROM_LENGTH
          The maximum length of the sender name.
private  boolean sendAsEmail
           
private  boolean systemCreated
           
static Item TYPE
          The type of item represented by this class.
 
Fields inherited from interface net.sf.basedb.core.Nameable
MAX_DESCRIPTION_LENGTH, MAX_NAME_LENGTH
 
Constructor Summary
Message(MessageData messageData)
           
 
Method Summary
static long countUnreadMessages(DbControl dc, User user, boolean cacheResult)
          Count the number of unread messages for the specified or logged in user.
static Message getById(DbControl dc, int id)
          Get a Message item when you know the id.
 String getDescription()
          Get the description for the item.
 String getFrom()
          Get the name of the sender of this message.
 Job getJob()
          Get the Job this message is about.
 String getName()
          Get the name of the item.
static Message getNew(DbControl dc, User to, String fromName, User fromUser, Job job)
          Create a new Message item.
(package private) static Message getNewSystemMessage(DbControl dc, User to, String fromName, User fromUser, Job job)
          Create a new Message from the system.
static ItemQuery<Message> getQuery(User user)
          Get a query configured to retrieve messages for the specified user.
 User getSender()
          Get the user that sent this message.
 Date getTimeSent()
          Get the date and time the message was sent.
 User getTo()
          Get the User this message was sent to.
 Item getType()
          Get the type of item represented by the object.
(package private)  void initPermissions(int granted, int denied)
          Read, write an delete permission is granted if the logged in user is the same as the user the message is to.
 boolean isRead()
          Check if the message has been read or not.
 boolean isRemoved()
          Check if the removed flag is set for this item.
(package private)  void onAfterCommit(Transactional.Action action)
          Send the message as an email if requested by the user.
 void sendAsEmail()
          Send this message as an email.
 void setDescription(String description)
          Set the description for the item.
private  void setFrom(String from)
          Set the name of the sender of the message.
private  void setJob(Job job)
           
 void setName(String name)
          Set the name of the item.
 void setRead(boolean isRead)
          Set read status of the message.
 void setRemoved(boolean removed)
          Set the removed flag for this item.
private  void setSender(User sender)
           
private  void setTo(User to)
          Set the user this message should be sent to.
 
Methods inherited from class net.sf.basedb.core.BasicItem
addUsingItems, addUsingItems, checkPermission, equals, getData, getDbControl, getId, getPermissions, getPluginPermissions, getSessionControl, getUsingItems, getVersion, hashCode, hasPermission, isDetached, isInDatabase, isUsed, onAfterInsert, onBeforeCommit, onRollback, setDbControl, setProjectDefaults, toString, toTransferable, validate
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface net.sf.basedb.core.Identifiable
getId, getVersion
 
Methods inherited from interface net.sf.basedb.core.AccessControlled
checkPermission, getPermissions, hasPermission
 

Field Detail

TYPE

public static final Item TYPE
The type of item represented by this class.

See Also:
Item.MESSAGE, getType()

systemCreated

private boolean systemCreated

sendAsEmail

private boolean sendAsEmail

MAX_FROM_LENGTH

public static final int MAX_FROM_LENGTH
The maximum length of the sender name.

See Also:
getNew(DbControl, User, String, User, Job), Constant Field Values
Constructor Detail

Message

Message(MessageData messageData)
Method Detail

getNew

public static Message getNew(DbControl dc,
                             User to,
                             String fromName,
                             User fromUser,
                             Job job)
                      throws BaseException
Create a new Message item.

Parameters:
dc - The DbControl which will be used for permission checking and database access
to - The user who should receive the message.
fromName - Name of the sender.
fromUser - The user who sends this message.
job - Which job this message is about.
Returns:
The new Message item
Throws:
BaseException - If there is an error

getNewSystemMessage

static Message getNewSystemMessage(DbControl dc,
                                   User to,
                                   String fromName,
                                   User fromUser,
                                   Job job)
Create a new Message from the system. This will not fail due to missing create permission for the logged in user.

Parameters:
dc - The DbControl which will be used for permission checking and database access
to - The user who should receive the message.
fromName - Name of the sender.
fromUser - The user who sends this message.
job - Which job this message is about.
Returns:
The new Message item
Throws:
BaseException - If there is an error

getById

public static Message getById(DbControl dc,
                              int id)
                       throws ItemNotFoundException,
                              PermissionDeniedException,
                              BaseException
Get a Message item when you know the id.

Parameters:
dc - The DbControl which will be used for permission checking and database access
id - The id of the item to load
Returns:
The Message item
Throws:
ItemNotFoundException - If an item with the specified ID is not found
PermissionDeniedException - If the logged in user doesn't have Permission.READ permission to the item
BaseException - If there is another error

countUnreadMessages

public static long countUnreadMessages(DbControl dc,
                                       User user,
                                       boolean cacheResult)
                                throws BaseException
Count the number of unread messages for the specified or logged in user. The count doesn't include messages which have been flagged as removed.

Parameters:
dc - The DbControl which will be used for permission checking and database access
user - The user to count the unread messages for, or null to count the messages for the logged in user
cacheResult - If the result should be cached or not
Returns:
The number of unread messages
Throws:
BaseException - If there is an error

getQuery

public static ItemQuery<Message> getQuery(User user)
Get a query configured to retrieve messages for the specified user.

Parameters:
user - The user to retreive messages for, null is allowed if the logged in user has generic read permission for messages in which case all messages will be returned
Returns:
An ItemQuery object
See Also:
User.getMessages()

getType

public Item getType()
Description copied from interface: Identifiable
Get the type of item represented by the object. The returned value is one of the values defined in the Item enumeration.

Specified by:
getType in interface Identifiable
Returns:
A value indicating the type of item

getName

public String getName()
Description copied from interface: Nameable
Get the name of the item.

Specified by:
getName in interface Nameable
Returns:
A String with the name of the item

setName

public void setName(String name)
             throws PermissionDeniedException,
                    InvalidDataException
Description copied from interface: Nameable
Set the name of the item. The name cannot be null and mustn't be longer than the value specified by the Nameable.MAX_NAME_LENGTH constant.

Specified by:
setName in interface Nameable
Parameters:
name - The new name for the item
Throws:
PermissionDeniedException - If the logged in user doesn't have write permission
InvalidDataException - If the name is null or longer than specified by the Nameable.MAX_NAME_LENGTH constant

getDescription

public String getDescription()
Description copied from interface: Nameable
Get the description for the item.

Specified by:
getDescription in interface Nameable
Returns:
A String with a description of the item

setDescription

public void setDescription(String description)
                    throws PermissionDeniedException,
                           InvalidDataException
Description copied from interface: Nameable
Set the description for the item. The description can be null but mustn't be longer than the value specified by the Nameable.MAX_DESCRIPTION_LENGTH constant.

Specified by:
setDescription in interface Nameable
Parameters:
description - The new description for the item
Throws:
PermissionDeniedException - If the logged in user doesn't have write permission
InvalidDataException - If the description longer than specified by the Nameable.MAX_DESCRIPTION_LENGTH constant

isRemoved

public boolean isRemoved()
Description copied from interface: Removable
Check if the removed flag is set for this item.

Specified by:
isRemoved in interface Removable
Returns:
TRUE if the item is flagged as removed, FALSE otherwise

setRemoved

public void setRemoved(boolean removed)
                throws PermissionDeniedException
Description copied from interface: Removable
Set the removed flag for this item.

Specified by:
setRemoved in interface Removable
Parameters:
removed - TRUE if the item should be flagged as removed, FALSE otherwise
Throws:
PermissionDeniedException - If the logged in user doesn't have Permission.DELETE permission for setting the flag to TRUE or Permission.WRITE permission for setting the flag to FALSE

initPermissions

void initPermissions(int granted,
                     int denied)
               throws BaseException
Read, write an delete permission is granted if the logged in user is the same as the user the message is to.

Overrides:
initPermissions in class BasicItem<MessageData>
Parameters:
granted - Permissions that have been granted by the subclass
denied - Permissions that have been denied by the subclass
Throws:
BaseException - If the permissions couldn't be initialised

onAfterCommit

void onAfterCommit(Transactional.Action action)
Send the message as an email if requested by the user.

Overrides:
onAfterCommit in class BasicItem<MessageData>
See Also:
Transactional, Core API overview - Transaction handling, Coding rules and guidelines for item classes

getTo

public User getTo()
           throws PermissionDeniedException,
                  BaseException
Get the User this message was sent to.

Returns:
The User item
Throws:
PermissionDeniedException - If the logged in user doesn't have Permission.READ permission for the user
BaseException - If there is another error

setTo

private void setTo(User to)
            throws InvalidDataException
Set the user this message should be sent to.

Throws:
InvalidDataException - If the user is null

getFrom

public String getFrom()
Get the name of the sender of this message. The sender may be another user or a system process.

See Also:
getSender()

setFrom

private void setFrom(String from)
              throws InvalidDataException
Set the name of the sender of the message.

Throws:
InvalidDataException - If the sender is null or longer than MAX_FROM_LENGTH

getSender

public User getSender()
               throws PermissionDeniedException,
                      BaseException
Get the user that sent this message.

Returns:
A User object or null if the message was sent by the system or the sending user account has been deleted
Throws:
PermissionDeniedException - If the logged in user doesn't have Permission.READ permission for the sender
BaseException - If there is another error
See Also:
getFrom()

setSender

private void setSender(User sender)

getJob

public Job getJob()
           throws PermissionDeniedException,
                  BaseException
Get the Job this message is about.

Returns:
The Job item
Throws:
PermissionDeniedException - If the logged in user doesn't have Permission.READ permission for the job
BaseException - If there is another error

setJob

private void setJob(Job job)
             throws PermissionDeniedException
Throws:
PermissionDeniedException

getTimeSent

public Date getTimeSent()
Get the date and time the message was sent.


isRead

public boolean isRead()
Check if the message has been read or not.


setRead

public void setRead(boolean isRead)
             throws PermissionDeniedException
Set read status of the message.

Parameters:
isRead - TRUE to mark the message as read, FALSE to mark it as unread
Throws:
PermissionDeniedException - If the logged in user doesn't have write permission

sendAsEmail

public void sendAsEmail()
Send this message as an email. This method call is ignored if the server admin has not configured an outgoing SMTP server.

Since:
2.16
See Also:
EmailUtil.isEnabled()

2.17.2: 2011-06-17