esmska.data
Class Queue

java.lang.Object
  extended by esmska.data.Queue

public class Queue
extends java.lang.Object

Class representing queue of SMS


Nested Class Summary
static class Queue.Events
           
 
Field Summary
static int TIMER_TICK
          Internal tick interval of the queue in milliseconds.
 
Method Summary
 boolean add(SMS sms)
          Add new SMS to the queue.
 boolean addAll(java.util.Collection<SMS> collection)
          Add collection of new SMS to the queue.
 void addValuedListener(ValuedListener<Queue.Events,SMS> valuedListener)
           
 void clear()
          Remove all SMS from the queue.
 boolean contains(SMS sms)
          Checks whether the SMS is in the queue.
 java.util.List<SMS> getAll()
          Get all SMS in the queue.
 java.util.List<SMS> getAll(java.lang.String gatewayName)
          Get all SMS in the queue for specified gateway.
 java.util.List<SMS> getAllWithStatus(SMS.Status status)
          Get a collection of SMS with particular status.
 java.util.List<SMS> getAllWithStatus(SMS.Status status, java.lang.String gatewayName)
          Get a collection of SMS with particular status and gateway.
 long getGatewayDelay(java.lang.String gatewayName)
          Return current delay for specified gateway.
static Queue getInstance()
          Get shared instance
 long getSMSDelay(SMS sms)
          Return current delay for specified sms.
 boolean isEmpty()
          Check if the queue is empty
 boolean isPaused()
          Whether queue is currently paused
 void movePosition(SMS sms, int positionDelta)
          Move SMS in the queue to another position.
 boolean remove(SMS sms)
          Remove SMS from the queue.
 void removeValuedListener(ValuedListener<Queue.Events,SMS> valuedListener)
           
 void setPaused(boolean paused)
          Sets whether queue is currently paused
 void setSMSFailed(SMS sms)
          Mark SMS as failed during sending.
 void setSMSSending(SMS sms)
          Mark SMS as currently being sent.
 void setSMSSent(SMS sms)
          Mark the SMS as successfully sent.
 int size()
          Get the number of SMS in the queue
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

TIMER_TICK

public static final int TIMER_TICK
Internal tick interval of the queue in milliseconds. After each tick the current delay of all messages is recomputed.

See Also:
Constant Field Values
Method Detail

addValuedListener

public void addValuedListener(ValuedListener<Queue.Events,SMS> valuedListener)

removeValuedListener

public void removeValuedListener(ValuedListener<Queue.Events,SMS> valuedListener)

getInstance

public static Queue getInstance()
Get shared instance


getAll

public java.util.List<SMS> getAll()
Get all SMS in the queue. This is a shortcut for getAll(null).


getAll

public java.util.List<SMS> getAll(java.lang.String gatewayName)
Get all SMS in the queue for specified gateway. The queue is always sorted by the gateway name, the messages are not sorted.

Parameters:
gatewayName - name of the gateway. May be null for any gateway.
Returns:
unmodifiable list of SMS for specified gateway.

getAllWithStatus

public java.util.List<SMS> getAllWithStatus(SMS.Status status)
Get a collection of SMS with particular status. This a shortcut for getAllWithStatus(status, null).


getAllWithStatus

public java.util.List<SMS> getAllWithStatus(SMS.Status status,
                                            java.lang.String gatewayName)
Get a collection of SMS with particular status and gateway. The queue is always sorted by the gateway name, the messages are not sorted.

Parameters:
status - SMS status, not null
gatewayName - name of the gateway of the SMS, may be null for any gateway
Returns:
unmodifiable list of SMS with that status in the queue

add

public boolean add(SMS sms)
Add new SMS to the queue. May not be null.

Returns:
See Collection.add(E).

addAll

public boolean addAll(java.util.Collection<SMS> collection)
Add collection of new SMS to the queue.

Parameters:
collection - Collection of SMS. May not be null, may not contain null element.
Returns:
See Collection.addAll(java.util.Collection)

remove

public boolean remove(SMS sms)
Remove SMS from the queue. If the SMS is not present nothing happens.

Parameters:
sms - SMS to be removed. Not null.
Returns:
See Collection.remove(java.lang.Object)

clear

public void clear()
Remove all SMS from the queue.


contains

public boolean contains(SMS sms)
Checks whether the SMS is in the queue.

Parameters:
sms - SMS, not null
Returns:
See Collection.contains(java.lang.Object)

size

public int size()
Get the number of SMS in the queue


isEmpty

public boolean isEmpty()
Check if the queue is empty


isPaused

public boolean isPaused()
Whether queue is currently paused


setPaused

public void setPaused(boolean paused)
Sets whether queue is currently paused


movePosition

public void movePosition(SMS sms,
                         int positionDelta)
Move SMS in the queue to another position. Queue is always sorted by gateway, therefore SMS may be moved only within section of its gateway.

Parameters:
sms - sms to be moved, not null
positionDelta - direction and amount of movement. Positive number moves to the back of the queue, negative number moves to the front of the queue. The number corresponds to the number of positions to change. If the number is larger than current queue dimensions, the element will simply stop as the first or as the last element.

getGatewayDelay

public long getGatewayDelay(java.lang.String gatewayName)
Return current delay for specified gateway.

Parameters:
gatewayName - name of the gateway. May be null.
Returns:
number of milliseconds next message from the gateway must wait. If no such gateway found, return 0.

getSMSDelay

public long getSMSDelay(SMS sms)
Return current delay for specified sms. The delay is taking into account all previous messages from the same gateway which are waiting to be sent. If sms is not found in the queue, it is considered to be at the end of the queue.

Parameters:
sms - sms, not null
Returns:
number of milliseconds a message must wait

setSMSSent

public void setSMSSent(SMS sms)
Mark the SMS as successfully sent.

Parameters:
sms - sent SMS, not null

setSMSSending

public void setSMSSending(SMS sms)
Mark SMS as currently being sent.

Parameters:
sms - SMS that is currently being sent, not null

setSMSFailed

public void setSMSFailed(SMS sms)
Mark SMS as failed during sending. Pauses the queue.

Parameters:
sms - SMS that has failed, not null