com.brightcove.player.store

## Class BaseStore

- java.lang.Object
- - com.brightcove.player.store.BaseStore

- Direct Known Subclasses:
    OfflineStoreManager

      public class BaseStore
      extends java.lang.Object

  A base wrapper for `EntityStore`.

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected android.content.Context` | `context` The context of the host application.
    `protected io.requery.reactivex.ReactiveEntityStore<io.requery.Persistable>` | `dataStore` Reference to the data store.
    `static int` | `MAX_SQL_EXPRESSIONS` The maximum of expressions allowed in the queries generation by this store.
    `static int` | `MAX_SQL_VARIABLES` The maximum of variables allowed in the queries generation by this store.
    `protected com.brightcove.player.store.BaseStore.Source` | `source` Reference to the backing store configuration.

  - ### Constructor Summary

    Constructors
    Modifier | Constructor and Description
    --- | ---
    `protected` | `BaseStore(android.content.Context context, io.requery.meta.EntityModel model, int version)` Constructs a new instance of `BaseStore`
    `protected` | `BaseStore(android.content.Context context, io.requery.meta.EntityModel model, java.lang.String name, int version)` Constructs a new instance of `BaseStore`

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `boolean` | `compact()` Compacts the physical database file size by running the SQLite VACUUM statement.
    `boolean` | `deleteEntity(IdentifiableEntity entity)` Deletes an identifiable entity from the store.
    `protected static java.lang.String` | `getDefaultDatabaseName(android.content.Context context, io.requery.meta.EntityModel model)` Provides the default database name for the given application context/entity model.
    `protected static java.lang.String` | `getDefaultDatabasePassword(android.content.Context context, io.requery.meta.EntityModel model)` Provides the default database password for the given application context/entity model.
    `long` | `getFileSize()` Gets the size of the backing database file.
    `protected void` | `onCreated(int version)` Called when new `EntityDataStore` has been created.
    `protected void` | `onUpgraded(int oldVersion, int newVersion)` Called when the `EntityDataStore` has been upgraded from an previous version to a new version.
    `<E extends IdentifiableEntity> E` | `refreshEntity(E entity)` Refresh the given entity.
    `<T extends IdentifiableEntity> T` | `saveEntity(T entity)` Inserts or updates the given entity.

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

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

- - ### Field Detail

    - #### MAX_SQL_VARIABLES

          public static final int MAX_SQL_VARIABLES

      The maximum of variables allowed in the queries generation by this store. Please note the actual limit imposed by Sqlite database is typically 999. However we set the limit to a lower value to give enough headroom for the requery library to manipulate the final query.
      See Also:
        Constant Field Values

    - #### MAX_SQL_EXPRESSIONS

          public static final int MAX_SQL_EXPRESSIONS

      The maximum of expressions allowed in the queries generation by this store. Please note the actual limit imposed by Sqlite database is typically 1000. However we set the limit to a lower value to give enough headroom for the requery library to manipulate the final query.
      See Also:
        Constant Field Values

    - #### context

          protected final android.content.Context context

      The context of the host application.

    - #### source

          protected final com.brightcove.player.store.BaseStore.Source source

      Reference to the backing store configuration.

    - #### dataStore

          protected final io.requery.reactivex.ReactiveEntityStore<io.requery.Persistable> dataStore

      Reference to the data store.

  - ### Constructor Detail

    - #### BaseStore

          protected BaseStore(@NonNull
                              android.content.Context context,
                              @NonNull
                              io.requery.meta.EntityModel model,
                              int version)

      Constructs a new instance of `BaseStore`
      Parameters:
        `context` - reference to the host application context.
        `model` - the entity model
        `version` - the schema version

    - #### BaseStore

          protected BaseStore(@NonNull
                              android.content.Context context,
                              @NonNull
                              io.requery.meta.EntityModel model,
                              @NonNull
                              java.lang.String name,
                              int version)

      Constructs a new instance of `BaseStore`
      Parameters:
        `context` - reference to the host application context.
        `model` - the entity model
        `name` - the name of the database
        `version` - the schema version

  - ### Method Detail

    - #### getFileSize

          public long getFileSize()

      Gets the size of the backing database file.
      Returns:
        -1 if an error occured while trying to read the size, 0 if the database file does not exist, otherwise of the size of the database file expressed as total number of bytes.

    - #### compact

          public boolean compact()

      Compacts the physical database file size by running the SQLite VACUUM statement.
      Returns:
        true if the operation was successful, otherwise false.

    - #### refreshEntity

          @Nullable
          public <E extends IdentifiableEntity> E refreshEntity(@Nullable
                                                                          E entity)

      Refresh the given entity. This refreshes the already loaded properties in the entity. If no properties are loaded then the default properties will be loaded.
      Type Parameters:
        `E` - the expected type of the entity;
      Parameters:
        `entity` - reference to the entity to be refreshed.
      Returns:
        null if the entity is null or if it does not exist in the store, otherwise reference to the updated entity

    - #### onCreated

          protected void onCreated(int version)

      Called when new `EntityDataStore` has been created. Override this method to setup the default state of the entity store.
      Parameters:
        `version` - schema version of the store.

    - #### onUpgraded

          protected void onUpgraded(int oldVersion,
                                    int newVersion)

      Called when the `EntityDataStore` has been upgraded from an previous version to a new version.
      Parameters:
        `oldVersion` - the old schema version
        `newVersion` - the new schema version

    - #### saveEntity

          public <T extends IdentifiableEntity> T saveEntity(@NonNull
                                                             T entity)

      Inserts or updates the given entity.
      Parameters:
        `entity` - the entity to be save.
      Returns:
        the updated the entity.;

    - #### deleteEntity

          public boolean deleteEntity(@Nullable
                                      IdentifiableEntity entity)

      Deletes an identifiable entity from the store.
      Parameters:
        `entity` - the entity to be deleted.
      Returns:
        true if the entity was found and removed from the store, otherwise false.

    - #### getDefaultDatabaseName

          protected static java.lang.String getDefaultDatabaseName(android.content.Context context,
                                                                   io.requery.meta.EntityModel model)

      Provides the default database name for the given application context/entity model.
      Parameters:
        `context` - the context of the host application.
        `model` - reference to the entity model.
      Returns:
        the default database name for this application and entity mode.

    - #### getDefaultDatabasePassword

          @Nullable
          protected static java.lang.String getDefaultDatabasePassword(android.content.Context context,
                                                                                 io.requery.meta.EntityModel model)

      Provides the default database password for the given application context/entity model.
      Parameters:
        `context` - the context of the host application.
        `model` - reference to the entity model.
      Returns:
        the default database name for this application and entity mode.