Package tigase.server.amp.db

## Class JDBCMsgRepository

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

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

      public class JDBCMsgRepository
      extends MsgRepository<java.lang.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

    All Methods Instance Methods Concrete Methods Deprecated Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `protected void` | `deleteMessage​(java.lang.Long msg_id)` |
    `int` | `deleteMessagesToJID​(java.util.List<java.lang.String> db_ids, XMPPResourceConnection session)` |
    `java.util.Map<java.lang.Enum,​java.lang.Long>` | `getMessagesCount​(JID to)` |
    `java.util.List<Element>` | `getMessagesList​(JID to)` |
    `void` | `initRepository​(java.lang.String conn_str, java.util.Map<java.lang.String,​java.lang.String> map)` | Deprecated.
    `protected void` | `loadExpiredQueue​(int min_elements)` |
    `protected void` | `loadExpiredQueue​(java.util.Date expired)` |
    `java.util.Queue<Element>` | `loadMessagesToJID​(java.util.List<java.lang.String> db_ids, XMPPResourceConnection session, boolean delete, MsgRepository.OfflineMessagesProcessor proc)` |
    `java.util.Queue<Element>` | `loadMessagesToJID​(XMPPResourceConnection session, boolean delete)` | Loads all payloads for the given user's `JID` from repository.
    `java.util.Queue<Element>` | `loadMessagesToJID​(XMPPResourceConnection session, boolean delete, MsgRepository.OfflineMessagesProcessor proc)` |
    `protected MsgRepository.MsgDBItem` | `parseExpiredMessage​(DomBuilderHandler domHandler, java.sql.ResultSet rs)` |
    `protected java.util.Queue<Element>` | `parseLoadedMessages​(MsgRepository.OfflineMessagesProcessor proc, java.sql.ResultSet rs)` |
    `void` | `setDataSource​(DataRepository data_repo)` | Method called to provide class with instance of a data source.
    `boolean` | `storeMessage​(JID from, JID to, java.util.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 Detail

    - #### data_repo

          protected DataRepository data_repo

  - ### Constructor Detail

    - #### JDBCMsgRepository

          public JDBCMsgRepository()

  - ### Method Detail

    - #### 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​(java.lang.String conn_str,
                                     java.util.Map<java.lang.String,​java.lang.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<java.lang.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 java.util.Map<java.lang.Enum,​java.lang.Long> getMessagesCount​(JID to)

      Specified by:
        `getMessagesCount` in interface `MsgRepositoryIfc<DataRepository>`

    - #### getMessagesList

          public java.util.List<Element> getMessagesList​(JID to)

      Specified by:
        `getMessagesList` in interface `MsgRepositoryIfc<DataRepository>`

    - #### loadMessagesToJID

          public java.util.Queue<Element> loadMessagesToJID​(java.util.List<java.lang.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<java.lang.Long,​DataRepository>`
      Throws:
        `UserNotFoundException`

    - #### deleteMessagesToJID

          public int deleteMessagesToJID​(java.util.List<java.lang.String> db_ids,
                                         XMPPResourceConnection session)
                                  throws UserNotFoundException

      Specified by:
        `deleteMessagesToJID` in interface `MsgRepositoryIfc<DataRepository>`
      Specified by:
        `deleteMessagesToJID` in class `MsgRepository<java.lang.Long,​DataRepository>`
      Throws:
        `UserNotFoundException`

    - #### loadMessagesToJID

          public java.util.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 java.util.Queue<Element> loadMessagesToJID​(XMPPResourceConnection session,
                                                            boolean delete,
                                                            MsgRepository.OfflineMessagesProcessor proc)
                                                     throws UserNotFoundException

      Throws:
        `UserNotFoundException`

    - #### storeMessage

          public boolean storeMessage​(JID from,
                                      JID to,
                                      java.util.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 java.util.Queue<Element> parseLoadedMessages​(MsgRepository.OfflineMessagesProcessor proc,
                                                                 java.sql.ResultSet rs)
                                                          throws java.sql.SQLException

      Throws:
        `java.sql.SQLException`

    - #### deleteMessage

          protected void deleteMessage​(java.lang.Long msg_id)

      Specified by:
        `deleteMessage` in class `MsgRepository<java.lang.Long,​DataRepository>`

    - #### loadExpiredQueue

          protected void loadExpiredQueue​(int min_elements)

      Specified by:
        `loadExpiredQueue` in class `MsgRepository<java.lang.Long,​DataRepository>`

    - #### loadExpiredQueue

          protected void loadExpiredQueue​(java.util.Date expired)

      Specified by:
        `loadExpiredQueue` in class `MsgRepository<java.lang.Long,​DataRepository>`

    - #### parseExpiredMessage

          protected MsgRepository.MsgDBItem parseExpiredMessage​(DomBuilderHandler domHandler,
                                                                java.sql.ResultSet rs)
                                                         throws java.sql.SQLException

      Throws:
        `java.sql.SQLException`