Package tigase.db.comp

## Class ConfigRepository<Item extends RepositoryItem>

- java.lang.Object
- - tigase.db.comp.ConfigRepository<Item>

- All Implemented Interfaces:
    `java.lang.Iterable<Item>`, `ComponentRepository<Item>`, `Repository`, `Initializable`, `UnregisterAware`
  Direct Known Subclasses:
    `ClConConfigRepository`, `CompConfigRepository`, `UserRepoRepository`

      public abstract class ConfigRepository<Item extends RepositoryItem>
      extends java.lang.Object
      implements ComponentRepository<Item>, Initializable, UnregisterAware

  Created: Oct 3, 2009 2:58:41 PM
  Author:
    Artur Hefczyc

- - ### Nested Class Summary

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

      `Repository.Meta, Repository.SchemaId`

  - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `protected long` | `autoReloadInterval` |
    `protected java.util.Map<java.lang.String,​Item>` | `items` |
    `protected int` | `itemsHash` |

    - ### Fields inherited from interface tigase.db.comp.ComponentRepository

      `COMP_REPO_BIND`

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `ConfigRepository()` |

  - ### Method Summary

    All Methods Instance Methods Abstract Methods Concrete Methods Deprecated Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `void` | `addItem​(Item item)` | The method adds a new or updates existing Item in the repository.
    `void` | `addItemNoStore​(Item item)` | The method adds a new or updates existing Item.
    `void` | `addRepoChangeListener​(RepositoryChangeListenerIfc<Item> repoChangeListener)` | Adds a listener for repository Item change.
    `java.util.Collection<Item>` | `allItems()` | Returns a collection with all items stored in the repository.
    `void` | `beforeUnregister()` | Method called before bean unregister.
    `boolean` | `contains​(java.lang.String key)` | The method checks whether the item is stored in the repository.
    `abstract java.lang.String` | `getConfigKey()` |
    `Item[]` | `getDefaultItems()` |
    `java.lang.String[]` | `getDefaultPropetyItems()` | Deprecated.
    `void` | `getDefaults​(java.util.Map<java.lang.String,​java.lang.Object> defs, java.util.Map<java.lang.String,​java.lang.Object> params)` | Deprecated.
    `Item` | `getItem​(java.lang.String key)` | The method returns all item configuration parameters for a key or `null` if the item does not exist in the repository.
    `java.lang.String[]` | `getItemsOld()` | Deprecated.
    `abstract java.lang.String` | `getPropertyKey()` | Deprecated.
    `void` | `initialize()` | Method will be called, when bean will be created, configured and ready to use.
    `protected void` | `initItemsMap()` | Method create instance of items Map.
    `protected boolean` | `isInitialized()` |
    `boolean` | `itemChanged​(Item oldItem, Item newItem)` |
    `java.util.Iterator<Item>` | `iterator()` |
    `void` | `reload()` | This method is called to reload items from the database or other permanent storage.
    `void` | `removeItem​(java.lang.String key)` | The method is called to remove given Item from the memory cache and permanent storage.
    `void` | `removeItemNoStore​(java.lang.String key)` |
    `void` | `removeRepoChangeListener​(RepositoryChangeListenerIfc<Item> repoChangeListener)` | Removes a listener for repository Item change.
    `void` | `setAutoloadTimer​(long delay)` | Sets autoload task to periodically reload data from database.
    `void` | `setAutoReloadInterval​(long autoLoadInterval)` |
    `void` | `setItemsOld​(java.lang.String[] items_arr)` | Deprecated.
    `void` | `setProperties​(java.util.Map<java.lang.String,​java.lang.Object> properties)` | Deprecated.
    `int` | `size()` | The method returns number of items in the repository.
    `void` | `store()` | The method is called to store all data in the database.
    `java.lang.String` | `toString()` |
    `java.lang.String` | `validateItem​(Item item)` | Performs Item validation to check whether it meets the repository policy.

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

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

    - ### Methods inherited from interface tigase.db.comp.ComponentRepository

      `destroy, getItemInstance`

    - ### Methods inherited from interface java.lang.Iterable

      `forEach, spliterator`

    - ### Methods inherited from interface tigase.db.Repository

      `initRepository`

- - ### Field Detail

    - #### autoReloadInterval

          @ConfigField(desc="Automatic items load interval (in seconds)",
                       alias="repo-autoreload-interval")
          protected long autoReloadInterval

    - #### items

          protected java.util.Map<java.lang.String,​Item extends RepositoryItem> items

    - #### itemsHash

          protected int itemsHash

  - ### Constructor Detail

    - #### ConfigRepository

          public ConfigRepository()

  - ### Method Detail

    - #### setAutoloadTimer

          public void setAutoloadTimer​(long delay)

      Description copied from interface: `ComponentRepository`
      Sets autoload task to periodically reload data from database.
      Specified by:
        `setAutoloadTimer` in interface `ComponentRepository<Item extends RepositoryItem>`
      Parameters:
        `delay` - in seconds between each database reload.

    - #### setAutoReloadInterval

          public void setAutoReloadInterval​(long autoLoadInterval)

    - #### addRepoChangeListener

          public void addRepoChangeListener​(RepositoryChangeListenerIfc<Item> repoChangeListener)

      Description copied from interface: `ComponentRepository`
      Adds a listener for repository Item change.
      Specified by:
        `addRepoChangeListener` in interface `ComponentRepository<Item extends RepositoryItem>`

    - #### removeRepoChangeListener

          public void removeRepoChangeListener​(RepositoryChangeListenerIfc<Item> repoChangeListener)

      Description copied from interface: `ComponentRepository`
      Removes a listener for repository Item change.
      Specified by:
        `removeRepoChangeListener` in interface `ComponentRepository<Item extends RepositoryItem>`

    - #### toString

          public java.lang.String toString()

      Overrides:
        `toString` in class `java.lang.Object`

    - #### getConfigKey

          public abstract java.lang.String getConfigKey()

    - #### getDefaultItems

          public Item[] getDefaultItems()

    - #### getDefaultPropetyItems

          @Deprecated
          public java.lang.String[] getDefaultPropetyItems()

      Deprecated.

    - #### getPropertyKey

          @Deprecated
          public abstract java.lang.String getPropertyKey()

      Deprecated.

    - #### addItem

          public void addItem​(Item item)

      Description copied from interface: `ComponentRepository`
      The method adds a new or updates existing Item in the repository. It needs to have all fields set correctly. After this method call is finished a new added item must be available in the component repository. The method adds the item to memory cache and permanent storage.
      Specified by:
        `addItem` in interface `ComponentRepository<Item extends RepositoryItem>`
      Parameters:
        `item` - a `Item` with all it's configuration parameters.

    - #### addItemNoStore

          public void addItemNoStore​(Item item)

      Description copied from interface: `ComponentRepository`
      The method adds a new or updates existing Item. It needs to have all fields set correctly. After this method call is finished a new added item must be available in the component repository. The method adds the item to memory cache but not to a permanent storage.
      Specified by:
        `addItemNoStore` in interface `ComponentRepository<Item extends RepositoryItem>`
      Parameters:
        `item` - a `Item` with all it's configuration parameters.

    - #### itemChanged

          public boolean itemChanged​(Item oldItem,
                                     Item newItem)

    - #### allItems

          public java.util.Collection<Item> allItems()

      Description copied from interface: `ComponentRepository`
      Returns a collection with all items stored in the repository.
      Specified by:
        `allItems` in interface `ComponentRepository<Item extends RepositoryItem>`

    - #### contains

          public boolean contains​(java.lang.String key)

      Description copied from interface: `ComponentRepository`
      The method checks whether the item is stored in the repository.
      Specified by:
        `contains` in interface `ComponentRepository<Item extends RepositoryItem>`
      Parameters:
        `key` - a `String` with key to search for.
      Returns:
        a `boolean` value `true` if the item exists in the repository or `false` of it does not.

    - #### getDefaults

          @Deprecated
          public void getDefaults​(java.util.Map<java.lang.String,​java.lang.Object> defs,
                                  java.util.Map<java.lang.String,​java.lang.Object> params)

      Deprecated.
      Description copied from interface: `ComponentRepository`
      The method is called to obtain default configuration settings if there are any for this repository implementation The configuration settings are implementation dependent and there are no defaults set by the server. Default settings returned by this method are then saved in the configuration file and presented to the admin for further adjustments.
      Specified by:
        `getDefaults` in interface `ComponentRepository<Item extends RepositoryItem>`
      Parameters:
        `defs` - is a `Map` collection where all repository configuration defaults must be put.
        `params` - is a `Map` collection with some preset properties for the server. These settings can be used to adjust repository defaults, for example they can contain database connection URL or initial list of virtual domains.

    - #### getItem

          public Item getItem​(java.lang.String key)

      Description copied from interface: `ComponentRepository`
      The method returns all item configuration parameters for a key or `null` if the item does not exist in the repository.
      Specified by:
        `getItem` in interface `ComponentRepository<Item extends RepositoryItem>`
      Parameters:
        `key` - a `String` with item identifier to search for.
      Returns:
        a `Item` for a given key or `null` if the item is not in the repository.

    - #### getItemsOld

          @Deprecated
          public java.lang.String[] getItemsOld()

      Deprecated.

    - #### setItemsOld

          @Deprecated
          public void setItemsOld​(java.lang.String[] items_arr)

      Deprecated.

    - #### iterator

          public java.util.Iterator<Item> iterator()

      Specified by:
        `iterator` in interface `java.lang.Iterable<Item extends RepositoryItem>`

    - #### reload

          public void reload()

      Description copied from interface: `ComponentRepository`
      This method is called to reload items from the database or other permanent storage. It is possible that items list is modified externally by third-party system. When all modifications are done this method is called to refresh the class cache. Whether the implementation load whole list or just last modifications is implementation dependent.
      Specified by:
        `reload` in interface `ComponentRepository<Item extends RepositoryItem>`

    - #### removeItem

          public void removeItem​(java.lang.String key)

      Description copied from interface: `ComponentRepository`
      The method is called to remove given Item from the memory cache and permanent storage. After this method is completed the item should no longer be available in the component repository.
      Specified by:
        `removeItem` in interface `ComponentRepository<Item extends RepositoryItem>`
      Parameters:
        `key` - a `String` with domain name to remove.

    - #### removeItemNoStore

          public void removeItemNoStore​(java.lang.String key)

      Specified by:
        `removeItemNoStore` in interface `ComponentRepository<Item extends RepositoryItem>`

    - #### setProperties

          @Deprecated
          public void setProperties​(java.util.Map<java.lang.String,​java.lang.Object> properties)

      Deprecated.
      Description copied from interface: `ComponentRepository`
      The method is called to set configuration for this repository implementation. The configuration is repository implementation dependent. There are no default settings for the repository.
      Specified by:
        `setProperties` in interface `ComponentRepository<Item extends RepositoryItem>`
      Parameters:
        `properties` - a `Map` with configuration settings. Content of this `Map` must not be modified. This read-only collection.

    - #### size

          public int size()

      Description copied from interface: `ComponentRepository`
      The method returns number of items in the repository.
      Specified by:
        `size` in interface `ComponentRepository<Item extends RepositoryItem>`
      Returns:
        an `int` value with number of items in the repository.

    - #### store

          public void store()

      Description copied from interface: `ComponentRepository`
      The method is called to store all data in the database. It is used when the repository has been changed in some way and the changes have to be put to a permanent storage for later retrieval.
      Specified by:
        `store` in interface `ComponentRepository<Item extends RepositoryItem>`

    - #### validateItem

          public java.lang.String validateItem​(Item item)

      Description copied from interface: `ComponentRepository`
      Performs Item validation to check whether it meets the repository policy. If validation is successful the method returns `null`, otherwise it returns an error description.
      Specified by:
        `validateItem` in interface `ComponentRepository<Item extends RepositoryItem>`
      Parameters:
        `item` - is an `Item` object to perform validation checking upon.
      Returns:
        `null` on success and an error message otherwise.

    - #### beforeUnregister

          public void beforeUnregister()

      Description copied from interface: `UnregisterAware`
      Method called before bean unregister.
      Specified by:
        `beforeUnregister` in interface `UnregisterAware`

    - #### initialize

          public void initialize()

      Description copied from interface: `Initializable`
      Method will be called, when bean will be created, configured and ready to use.
      Specified by:
        `initialize` in interface `Initializable`

    - #### initItemsMap

          protected void initItemsMap()

      Method create instance of items Map. By overriding it it's possible to change implementation and it's settings.

    - #### isInitialized

          protected boolean isInitialized()