Package tigase.server.amp.db

# Class JDBCMsgRepository

java.lang.Object
tigase.server.amp.db.MsgRepository<Long,DataRepository>
tigase.server.amp.db.JDBCMsgRepository

All Implemented Interfaces:
  `DataSourceAware<DataRepository>`, `MsgRepositoryIfc<DataRepository>`, `OfflineMsgRepositoryIfc`, `Repository`, `RepositoryVersionAware`

public class JDBCMsgRepository extends MsgRepository<Long,DataRepository> implements RepositoryVersionAware
Created: May 3, 2010 5:28:02 PM

Author:
  Artur Hefczyc

- ## Nested Class Summary

  ## Nested classes/interfaces inherited from class tigase.server.amp.db.MsgRepository

  `MsgRepository.MSG_TYPES, MsgRepository.MsgDBItem<T>, MsgRepository.MsgRepositoryMDBean, MsgRepository.MsgRepositoryPoolBean<T>, MsgRepository.OfflineMessagesProcessor`

  ## Nested classes/interfaces inherited from interface tigase.db.Repository

  `Repository.Meta, Repository.SchemaId`

  ## Nested classes/interfaces inherited from interface tigase.db.util.RepositoryVersionAware

  `RepositoryVersionAware.SchemaVersion`

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `protected DataRepository`
  `data_repo`

  ### Fields inherited from class tigase.server.amp.db.MsgRepository

  `awaitingInExpiredQueue, earliestOffline, expiredQueue, MAX_QUEUE_SIZE, MSGS_STORE_LIMIT_KEY, OFFLINE_MSGS_KEY, parser`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `JDBCMsgRepository()`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `protected void`
  `deleteMessage(Long msg_id)`
  `int`
  `deleteMessagesToJID(List<String> db_ids, XMPPResourceConnection session)`
  `Map<Enum,Long>`
  `getMessagesCount(JID to)`
  `List<Element>`
  `getMessagesList(JID to)`
  `void`
  `initRepository(String conn_str, Map<String,String> map)`
  Deprecated.
  `protected void`
  `loadExpiredQueue(int min_elements)`
  `protected void`
  `loadExpiredQueue(Date expired)`
  `Queue<Element>`
  `loadMessagesToJID(List<String> db_ids, XMPPResourceConnection session, boolean delete, MsgRepository.OfflineMessagesProcessor proc)`
  `Queue<Element>`
  `loadMessagesToJID(XMPPResourceConnection session, boolean delete)`
  Loads all payloads for the given user's `JID` from repository.
  `Queue<Element>`
  `loadMessagesToJID(XMPPResourceConnection session, boolean delete, MsgRepository.OfflineMessagesProcessor proc)`
  `protected MsgRepository.MsgDBItem`
  `parseExpiredMessage(DomBuilderHandler domHandler, ResultSet rs)`
  `protected Queue<Element>`
  `parseLoadedMessages(MsgRepository.OfflineMessagesProcessor proc, ResultSet rs)`
  `void`
  `setDataSource(DataRepository data_repo)`
  Method called to provide class with instance of a data source.
  `boolean`
  `storeMessage(JID from, JID to, Date expired, Element msg, NonAuthUserRepository userRepo)`
  Saves the massage to the repository

  ### Methods inherited from class tigase.server.amp.db.MsgRepository

  `getInstance, getMessageExpired, getMsgsStoreLimit, setCondition`

  ### Methods inherited from class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

  ### Methods inherited from interface tigase.db.util.RepositoryVersionAware

  `getVersion, updateSchema`

- ## Field Details

  - ### data_repo

    protected DataRepository data_repo

- ## Constructor Details

  - ### JDBCMsgRepository

    public JDBCMsgRepository()

- ## Method Details

  - ### setDataSource

    public void setDataSource(DataRepository data_repo)
    Description copied from interface: `DataSourceAware`
    Method called to provide class with instance of a data source.
    Specified by:
      `setDataSource` in interface `DataSourceAware<DataRepository>`

  - ### initRepository

    @Deprecated public void initRepository(String conn_str, Map<String,String> map) throws DBInitException
    Deprecated.
    Description copied from interface: `Repository`
    Method is deprecated and should not be user any more.
    The method is called to initialize the data repository. Depending on the implementation all the initialization parameters can be passed either via `resource_uri` parameter as the database connection string or via `params` map if the required repository parameters are more complex or both.
    Specified by:
      `initRepository` in interface `Repository`
    Overrides:
      `initRepository` in class `MsgRepository<Long,DataRepository>`
    Parameters:
      `conn_str` - value in most cases representing the database connection string.
      `map` - is a `Map` with repository properties necessary to initialize and perform all the functions. The initialization parameters are implementation dependent.
    Throws:
      `DBInitException` - if there was an error during repository initialization. Some implementations, though, perform so called lazy initialization so even though there is a problem with the underlying repository it may not be signaled through this method call.

  - ### getMessagesCount

    public Map<Enum,Long> getMessagesCount(JID to)
    Specified by:
      `getMessagesCount` in interface `MsgRepositoryIfc<DataRepository>`

  - ### getMessagesList

    public List<Element> getMessagesList(JID to)
    Specified by:
      `getMessagesList` in interface `MsgRepositoryIfc<DataRepository>`

  - ### loadMessagesToJID

    public Queue<Element> loadMessagesToJID(List<String> db_ids, XMPPResourceConnection session, boolean delete, MsgRepository.OfflineMessagesProcessor proc) throws UserNotFoundException
    Specified by:
      `loadMessagesToJID` in interface `MsgRepositoryIfc<DataRepository>`
    Specified by:
      `loadMessagesToJID` in class `MsgRepository<Long,DataRepository>`
    Throws:
      `UserNotFoundException`

  - ### deleteMessagesToJID

    public int deleteMessagesToJID(List<String> db_ids, XMPPResourceConnection session) throws UserNotFoundException
    Specified by:
      `deleteMessagesToJID` in interface `MsgRepositoryIfc<DataRepository>`
    Specified by:
      `deleteMessagesToJID` in class `MsgRepository<Long,DataRepository>`
    Throws:
      `UserNotFoundException`

  - ### loadMessagesToJID

    public Queue<Element> loadMessagesToJID(XMPPResourceConnection session, boolean delete) throws UserNotFoundException
    Description copied from interface: `OfflineMsgRepositoryIfc`
    Loads all payloads for the given user's `JID` from repository.
    Specified by:
      `loadMessagesToJID` in interface `OfflineMsgRepositoryIfc`
    Parameters:
      `session` - user session which keeps all the user session data and also gives an access to the user's repository data.
      `delete` - boolean parameter controlling whether messages should be removed from repository after they retrieved.
    Returns:
      a `Queue` of `Element` objects representing stored payloads for the given user's `JID`
    Throws:
      `UserNotFoundException`

  - ### loadMessagesToJID

    public Queue<Element> loadMessagesToJID(XMPPResourceConnection session, boolean delete, MsgRepository.OfflineMessagesProcessor proc) throws UserNotFoundException
    Throws:
      `UserNotFoundException`

  - ### storeMessage

    public boolean storeMessage(JID from, JID to, Date expired, Element msg, NonAuthUserRepository userRepo) throws UserNotFoundException
    Description copied from interface: `OfflineMsgRepositoryIfc`
    Saves the massage to the repository
    Specified by:
      `storeMessage` in interface `OfflineMsgRepositoryIfc`
    Parameters:
      `from` - `JID` denotes address of the sender
      `to` - `JID` denotes address of the receiver
      `expired` - `Date` object denoting expiration date of the message
      `msg` - `Element` payload of the stanza to be saved
      `userRepo` - `NonAuthUserRepository` instance of non auth user repository to get user settings for offline messages
    Returns:
      `true` if the packet was correctly saved to repository, `false` otherwise.
    Throws:
      `UserNotFoundException`

  - ### parseLoadedMessages

    protected Queue<Element> parseLoadedMessages(MsgRepository.OfflineMessagesProcessor proc, ResultSet rs) throws SQLException
    Throws:
      `SQLException`

  - ### deleteMessage

    protected void deleteMessage(Long msg_id)
    Specified by:
      `deleteMessage` in class `MsgRepository<Long,DataRepository>`

  - ### loadExpiredQueue

    protected void loadExpiredQueue(int min_elements)
    Specified by:
      `loadExpiredQueue` in class `MsgRepository<Long,DataRepository>`

  - ### loadExpiredQueue

    protected void loadExpiredQueue(Date expired)
    Specified by:
      `loadExpiredQueue` in class `MsgRepository<Long,DataRepository>`

  - ### parseExpiredMessage

    protected MsgRepository.MsgDBItem parseExpiredMessage(DomBuilderHandler domHandler, ResultSet rs) throws SQLException
    Throws:
      `SQLException`