Android Open Source - InMemoryDb Database Source Purger Max






From Project

Back to project page InMemoryDb.

License

The source code is released under:

Apache License

If you think the Android project InMemoryDb listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package org.gawst.asyncdb.purge;
// ww  w  .j  av a 2 s . c o m
import android.support.annotation.NonNull;
import android.text.TextUtils;

import org.gawst.asyncdb.source.DatabaseSource;

/**
 * Abstract helper class to purge a database with a maximum number of items and based on a sorted field.
 *
 * @param <LAST_ELEMENT> Type of the last element to keep during the purge.
 */
public abstract class DatabaseSourcePurgerMax<LAST_ELEMENT> extends DatabaseSourcePurger<LAST_ELEMENT> {
  protected final String fieldName;

  /**
   * Constructor for the database purger. It will purge the database after each insertion.
   *
   * @param maxItems       Maximum number of items to keep in the database.
   * @param fieldName      Name of the sorted field in the database to determine 'old' elements
   * @param databaseSource Database source (Sqlite, ContentProvider)
   */
  public DatabaseSourcePurgerMax(int maxItems, String fieldName, DatabaseSource<?, ?> databaseSource) {
    this(maxItems, 1, fieldName, databaseSource);
  }

  /**
   * Constructor for the database purger.
   *
   * @param maxItems             Maximum number of items to keep in the database.
   * @param checkInsertFrequency The number of insertion before a purge is done. A purge is done after the first insertion.
   * @param fieldName            Name of the sorted field in the database to determine 'old' elements
   * @param databaseSource       Database source (Sqlite, ContentProvider)
   */
  public DatabaseSourcePurgerMax(int maxItems, int checkInsertFrequency, String fieldName, DatabaseSource<?, ?> databaseSource) {
    super(maxItems, checkInsertFrequency, databaseSource);
    this.fieldName = fieldName;
  }

  @NonNull
  @Override
  protected final String[] getFilterFields() {
    return new String[]{fieldName};
  }

  @NonNull
  @Override
  protected String getFilterOrder() {
    return fieldName + " desc";
  }

  @NonNull
  @Override
  protected String getDeleteClause(LAST_ELEMENT lastElement) {
    String purgeFilterClause = getPurgeFilterClause();
    if (TextUtils.isEmpty(purgeFilterClause)) {
      return fieldName + " < ?";
    } else {
      return fieldName + " < ? AND (" + purgeFilterClause + ')';
    }
  }

  @NonNull
  @Override
  protected String[] getDeleteArgs(LAST_ELEMENT lastElement) {
    String[] args = getPurgeFilterArgs();
    if (args == null) {
      return new String[]{String.valueOf(lastElement)};
    } else {
      String[] result = new String[args.length + 1];
      result[0] = String.valueOf(lastElement);
      System.arraycopy(args, 0, result, 1, args.length);
      return result;
    }
  }
}




Java Source Code List

org.gawst.asyncdb.AsyncDatabaseHandler.java
org.gawst.asyncdb.AsyncDbHelperHandler.java
org.gawst.asyncdb.AsyncQueryHandler.java
org.gawst.asyncdb.AsynchronousDatabase.java
org.gawst.asyncdb.AsynchronousDbErrorHandler.java
org.gawst.asyncdb.AsynchronousDbHelper.java
org.gawst.asyncdb.AsynchronousDbOperation.java
org.gawst.asyncdb.DataSource.java
org.gawst.asyncdb.InMemoryDbArrayList.java
org.gawst.asyncdb.InMemoryDbCopyOnWriteArrayList.java
org.gawst.asyncdb.InMemoryDbList.java
org.gawst.asyncdb.InMemoryDbListener.java
org.gawst.asyncdb.InMemoryDbMap.java
org.gawst.asyncdb.InMemoryDbSet.java
org.gawst.asyncdb.InMemoryDbTreeSet.java
org.gawst.asyncdb.InMemoryHashmapDb.java
org.gawst.asyncdb.InMemoryLruCache.java
org.gawst.asyncdb.InvalidDbEntry.java
org.gawst.asyncdb.InvalidEntry.java
org.gawst.asyncdb.LogManager.java
org.gawst.asyncdb.Logger.java
org.gawst.asyncdb.LruCache.java
org.gawst.asyncdb.MapDataSource.java
org.gawst.asyncdb.MapDatabaseElementHandler.java
org.gawst.asyncdb.MapEntry.java
org.gawst.asyncdb.adapter.InMemoryArrayListAdapter.java
org.gawst.asyncdb.adapter.InMemoryFilteredAdapter.java
org.gawst.asyncdb.adapter.InMemoryFilteredListAdapter.java
org.gawst.asyncdb.adapter.InMemoryFilteredTreeAdapter.java
org.gawst.asyncdb.adapter.InMemoryTreeSetAdapter.java
org.gawst.asyncdb.adapter.UIHandler.java
org.gawst.asyncdb.purge.DatabasePurgerMaxDate.java
org.gawst.asyncdb.purge.DatabaseSourcePurgerMax.java
org.gawst.asyncdb.purge.DatabaseSourcePurger.java
org.gawst.asyncdb.purge.PurgeHandler.java
org.gawst.asyncdb.source.ContentProviderDataSource.java
org.gawst.asyncdb.source.CursorDataSource.java
org.gawst.asyncdb.source.DatabaseElementHandler.java
org.gawst.asyncdb.source.DatabaseSource.java
org.gawst.asyncdb.source.SqliteDataSource.java
org.gawst.asyncdb.source.SqliteMapDataSource.java
org.gawst.asyncdb.source.typed.TypedContentProviderDataSource.java
org.gawst.asyncdb.source.typed.TypedCursorDataSource.java
org.gawst.asyncdb.source.typed.TypedDatabaseElementHandler.java
org.gawst.asyncdb.source.typed.TypedDatabaseSource.java
org.gawst.asyncdb.source.typed.TypedSqliteDataSource.java
org.gawst.asyncdb.source.typed.TypedSqliteMapDataSource.java