Android Open Source - InMemoryDb Typed Content Provider 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;
//ww  w. j av  a 2 s  .  c o  m
import android.content.ContentResolver;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.net.Uri;
import android.support.annotation.NonNull;
import android.text.TextUtils;

/**
 * A {@link org.gawst.asyncdb.DataSource} reading/writing data using a {@link android.content.ContentProvider ContentProvider}
 *
 * @param <E>      Type of the elements 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 TypedContentProviderDataSource<E, CURSOR extends Cursor> extends TypedCursorDataSource<E, Uri, Uri, CURSOR> {
  public final Uri contentProviderUri;
  private final Context context;
  private final ContentResolver contentResolver;

  /**
   * Contructor.
   *
   * @param contentResolver        ContentResolver used to access the {@link android.content.ContentProvider ContentProvider}
   * @param contentProviderUri     {@link android.net.Uri Uri} to access the data from the {@link android.content.ContentProvider ContentProvider}
   * @param databaseElementHandler Handler to transform {@link E} elements to queries and {@code Cursor} to {@link E} elements.
   */
  public TypedContentProviderDataSource(@NonNull ContentResolver contentResolver, @NonNull Uri contentProviderUri, @NonNull TypedDatabaseElementHandler<E, CURSOR> databaseElementHandler) {
    super(databaseElementHandler);
    this.context = null;
    this.contentResolver = contentResolver;
    this.contentProviderUri = contentProviderUri;
  }

  /**
   * Contructor.
   *
   * @param context                Context used to get the {@link android.content.ContentResolver ContentResolver} used to access the {@link android.content.ContentProvider ContentProvider}
   * @param contentProviderUri     {@link android.net.Uri Uri} to access the data from the {@link android.content.ContentProvider ContentProvider}
   * @param databaseElementHandler Handler to transform {@link E} elements to queries and {@code Cursor} to {@link E} elements.
   */
  public TypedContentProviderDataSource(@NonNull Context context, @NonNull Uri contentProviderUri, @NonNull TypedDatabaseElementHandler<E, CURSOR> databaseElementHandler) {
    super(databaseElementHandler);
    this.context = context.getApplicationContext();
    this.contentResolver = null;
    this.contentProviderUri = contentProviderUri;
  }

  @Override
  public Uri getDatabaseId() {
    return contentProviderUri;
  }

  private ContentResolver getContentResolver() {
    if (null != context)
      return context.getContentResolver();
    return contentResolver;
  }

  @Override
  public CURSOR query(String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy, String limit) {
    if (!TextUtils.isEmpty(limit)) {
      if (TextUtils.isEmpty(orderBy)) {
        orderBy = "LIMIT " + limit;
      } else {
        orderBy += " LIMIT " + limit;
      }
    }
    return wrapCursor(getContentResolver().query(contentProviderUri, columns, selection, selectionArgs, orderBy));
  }

  @Override
  public int clearAllData() {
    return getContentResolver().delete(contentProviderUri, "1", null);
  }

  @Override
  public Uri insert(ContentValues values) throws RuntimeException {
    return getContentResolver().insert(contentProviderUri, values);
  }

  @Override
  public int update(ContentValues updateValues, String where, String[] selectionArgs) {
    return getContentResolver().update(contentProviderUri, updateValues, where, selectionArgs);
  }

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

  /**
   * Does nothing for a {@link android.content.ContentProvider}
   */
  @Override
  public void eraseSource() {
    // TODO
  }
}




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