Android Open Source - InMemoryDb Typed Sqlite Map Data Source






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.source.typed;
/*from   ww w.ja va2 s .  c om*/
import android.annotation.TargetApi;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteOpenHelper;
import android.os.Build;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;

import org.gawst.asyncdb.InvalidDbEntry;
import org.gawst.asyncdb.InvalidEntry;
import org.gawst.asyncdb.MapDataSource;
import org.gawst.asyncdb.MapDatabaseElementHandler;
import org.gawst.asyncdb.MapEntry;

/**
 * A {@link org.gawst.asyncdb.DataSource} backed by a {@link android.database.sqlite.SQLiteOpenHelper} storage that uses a
 * Key/Value based {@link org.gawst.asyncdb.source.DatabaseElementHandler} to read/write elements from the database
 *
 * @param <K>      Type of the key read from the {@code CURSOR}
 * @param <V>      Type of the value read from the {@code CURSOR}
 * @param <CURSOR> Wrapper around the raw {@code Cursor} read
 * @author Created by robUx4 on 11/01/2015.
 */
public abstract class TypedSqliteMapDataSource<K, V, CURSOR extends Cursor> implements MapDataSource<K, V, Long>, TypedDatabaseSource<Long, Void, CURSOR> {

  private final TypedSqliteDataSource<MapEntry<K, V>, CURSOR> source;

  /**
   * Constructor. (API v14 minimum)
   *
   * @param context                Context used to erase the database file in case it's corrupted.
   * @param db                     The SQL database used to read/write data.
   * @param tableName              Name of the SQL table that contains the elements to read.
   * @param databaseElementHandler Handler to transform {@code Cursor} into ({@link K},{@link V}) pairs or ({@link K},{@link V}) pairs to selections.
   */
  @TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)
  public TypedSqliteMapDataSource(@NonNull Context context, @NonNull SQLiteOpenHelper db, @NonNull final String tableName, @NonNull final MapDatabaseElementHandler<K, V> databaseElementHandler) {
    this(context, db, tableName, db.getDatabaseName(), databaseElementHandler);
  }

  /**
   * Constructor.
   *
   * @param context                Context used to erase the database file in case it's corrupted.
   * @param db                     The SQL database used to read/write data.
   * @param tableName              Name of the SQL table that contains the elements to read.
   * @param databaseName           Name of the database file on disk, in case it's corrupted and needs to be erased.
   * @param databaseElementHandler Handler to transform {@code Cursor} into ({@link K},{@link V}) pairs or ({@link K},{@link V}) pairs to selections.
   */
  public TypedSqliteMapDataSource(@NonNull Context context, @NonNull SQLiteOpenHelper db, @NonNull final String tableName, @NonNull String databaseName, @NonNull final MapDatabaseElementHandler<K, V> databaseElementHandler) {
    if (databaseElementHandler == null) throw new NullPointerException("null MapCursorSourceHandler in " + this);
    this.source = new TypedSqliteDataSource<MapEntry<K, V>, CURSOR>(context, db, tableName, databaseName, new TypedDatabaseElementHandler<MapEntry<K,V>, CURSOR>() {
      @NonNull
      @Override
      public String getItemSelectClause(@Nullable MapEntry<K, V> itemToSelect) {
        return databaseElementHandler.getKeySelectClause(null == itemToSelect ? null : itemToSelect.getKey());
      }

      @NonNull
      @Override
      public String[] getItemSelectArgs(@NonNull MapEntry<K, V> itemToSelect) {
        return databaseElementHandler.getKeySelectArgs(itemToSelect.getKey());
      }

      @NonNull
      @Override
      public MapEntry<K, V> cursorToItem(@NonNull CURSOR cursor) throws InvalidDbEntry {
        K key = databaseElementHandler.cursorToKey(cursor);
        return new MapEntry<K, V>(key, databaseElementHandler.cursorToValue(cursor));
      }
    }) {
      @Override
      public CURSOR wrapCursor(Cursor cursor) {
        return TypedSqliteMapDataSource.this.wrapCursor(cursor);
      }
    };
  }

  @Override
  public Void getDatabaseId() {
    return null;
  }

  @Override
  public boolean update(MapEntry<K, V> itemToUpdate, ContentValues updateValues) {
    return source.update(itemToUpdate, updateValues);
  }

  @Override
  public boolean delete(MapEntry<K, V> itemToDelete) {
    return source.delete(itemToDelete);
  }

  @Override
  public Long insert(@NonNull ContentValues values) throws RuntimeException {
    return source.insert(values);
  }

  @Override
  public boolean deleteInvalidEntry(InvalidEntry invalidEntry) {
    return source.deleteInvalidEntry(invalidEntry);
  }

  @Override
  public CURSOR query(String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy, String limit) {
    return source.query(columns, selection, selectionArgs, groupBy, having, orderBy, limit);
  }

  @Override
  public int update(@NonNull ContentValues updateValues, String selection, String[] selectionArgs) {
    return source.update(updateValues, selection, selectionArgs);
  }

  @Override
  public int delete(String selection, String[] selectionArgs) {
    return source.delete(selection, selectionArgs);
  }

  @Override
  public final void queryAll(BatchReadingCallback<MapEntry<K, V>> readingCallback) {
    source.queryAll(readingCallback);
  }

  @Override
  public int clearAllData() {
    return source.clearAllData();
  }

  @Override
  public void eraseSource() {
    source.eraseSource();
  }
}




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