Android Open Source - yellowpages-android-tdd Listing Content Provider






From Project

Back to project page yellowpages-android-tdd.

License

The source code is released under:

MIT License

If you think the Android project yellowpages-android-tdd 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 com.tddrampup.contentprovider;
/*from  w  ww  . j a v a  2 s. c om*/
import java.util.Arrays;
import java.util.HashSet;

import android.content.ContentProvider;
import android.content.ContentResolver;
import android.content.ContentValues;
import android.content.UriMatcher;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteQueryBuilder;
import android.net.Uri;
import android.text.TextUtils;

import com.tddrampup.models.Listing;


public class ListingContentProvider extends ContentProvider {

    // database
    private ListingDatabaseHelper database;

    // used for the UriMacher
    private static final int LISTINGS = 10;
    private static final int LISTING_ID = 20;

    private static final String AUTHORITY = "com.tddrampup.contentprovider";

    private static final String BASE_PATH = "tddrampup";
    public static final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY
            + "/" + BASE_PATH);

    public static final String CONTENT_TYPE = ContentResolver.CURSOR_DIR_BASE_TYPE
            + "/listings";
    public static final String CONTENT_ITEM_TYPE = ContentResolver.CURSOR_ITEM_BASE_TYPE
            + "/listing";

    private static final UriMatcher sURIMatcher = new UriMatcher(UriMatcher.NO_MATCH);
    static {
        sURIMatcher.addURI(AUTHORITY, BASE_PATH, LISTINGS);
        sURIMatcher.addURI(AUTHORITY, BASE_PATH + "/#", LISTING_ID);
    }

    @Override
    public boolean onCreate() {
        database = new ListingDatabaseHelper(getContext());
        return false;
    }

    @Override
    public Cursor query(Uri uri, String[] projection, String selection,
                        String[] selectionArgs, String sortOrder) {

        // Uisng SQLiteQueryBuilder instead of query() method
        SQLiteQueryBuilder queryBuilder = new SQLiteQueryBuilder();

        // check if the caller has requested a column which does not exists
        checkColumns(projection);

        // Set the table
        queryBuilder.setTables(ListingTable.TABLE_LISTING);

        int uriType = sURIMatcher.match(uri);
        switch (uriType) {
            case LISTINGS:
                break;
            case LISTING_ID:
                // adding the ID to the original query
                queryBuilder.appendWhere(ListingTable.COLUMN_ID + "="
                        + uri.getLastPathSegment());
                break;
            default:
                throw new IllegalArgumentException("Unknown URI: " + uri);
        }

        SQLiteDatabase db = database.getWritableDatabase();
        Cursor cursor = queryBuilder.query(db, projection, selection,
                selectionArgs, null, null, sortOrder);
        // make sure that potential listeners are getting notified
        cursor.setNotificationUri(getContext().getContentResolver(), uri);

        return cursor;
    }

    @Override
    public String getType(Uri uri) {
        return null;
    }

    @Override
    public Uri insert(Uri uri, ContentValues values) {
        int uriType = sURIMatcher.match(uri);
        SQLiteDatabase sqlDB = database.getWritableDatabase();
        int rowsDeleted = 0;
        long id = 0;
        switch (uriType) {
            case LISTINGS:
                id = sqlDB.replace(ListingTable.TABLE_LISTING, null, values);
                break;
            default:
                throw new IllegalArgumentException("Unknown URI: " + uri);
        }
        getContext().getContentResolver().notifyChange(uri, null);
        return Uri.parse(BASE_PATH + "/" + id);
    }

    @Override
    public int delete(Uri uri, String selection, String[] selectionArgs) {
        int uriType = sURIMatcher.match(uri);
        SQLiteDatabase sqlDB = database.getWritableDatabase();
        int rowsDeleted = 0;
        switch (uriType) {
            case LISTINGS:
                rowsDeleted = sqlDB.delete(ListingTable.TABLE_LISTING, selection,
                        selectionArgs);
                break;
            case LISTING_ID:
                String id = uri.getLastPathSegment();
                if (TextUtils.isEmpty(selection)) {
                    rowsDeleted = sqlDB.delete(ListingTable.TABLE_LISTING,
                            ListingTable.COLUMN_ID + "=" + id,
                            null);
                } else {
                    rowsDeleted = sqlDB.delete(ListingTable.TABLE_LISTING,
                            ListingTable.COLUMN_ID + "=" + id
                                    + " and " + selection,
                            selectionArgs);
                }
                break;
            default:
                throw new IllegalArgumentException("Unknown URI: " + uri);
        }
        getContext().getContentResolver().notifyChange(uri, null);
        return rowsDeleted;
    }

    @Override
    public int update(Uri uri, ContentValues values, String selection,
                      String[] selectionArgs) {

        int uriType = sURIMatcher.match(uri);
        SQLiteDatabase sqlDB = database.getWritableDatabase();
        int rowsUpdated = 0;
        switch (uriType) {
            case LISTINGS:
                rowsUpdated = sqlDB.update(ListingTable.TABLE_LISTING,
                        values,
                        selection,
                        selectionArgs);
                break;
            case LISTING_ID:
                String id = uri.getLastPathSegment();
                if (TextUtils.isEmpty(selection)) {
                    rowsUpdated = sqlDB.update(ListingTable.TABLE_LISTING,
                            values,
                            ListingTable.COLUMN_ID + "=" + id,
                            null);
                } else {
                    rowsUpdated = sqlDB.update(ListingTable.TABLE_LISTING,
                            values,
                            ListingTable.COLUMN_ID + "=" + id
                                    + " and "
                                    + selection,
                            selectionArgs);
                }
                break;
            default:
                throw new IllegalArgumentException("Unknown URI: " + uri);
        }
        getContext().getContentResolver().notifyChange(uri, null);
        return rowsUpdated;
    }

    private void checkColumns(String[] projection) {
        String[] available = { ListingTable.COLUMN_CITY,
                ListingTable.COLUMN_NAME, ListingTable.COLUMN_PCODE,
                ListingTable.COLUMN_PROV, ListingTable.COLUMN_STREET,
                ListingTable.COLUMN_LATITUDE, ListingTable.COLUMN_LONGITUDE,
                ListingTable.COLUMN_ID,ListingTable.COLUMN_URL,
                ListingTable.COLUMN_PHONE };
        if (projection != null) {
            HashSet<String> requestedColumns = new HashSet<String>(Arrays.asList(projection));
            HashSet<String> availableColumns = new HashSet<String>(Arrays.asList(available));
            // check if all columns which are requested are available
            if (!availableColumns.containsAll(requestedColumns)) {
                throw new IllegalArgumentException("Unknown columns in projection");
            }
        }
    }

}




Java Source Code List

android.UnusedStub.java
com.tddrampup.YellowApplication.java
com.tddrampup.activities.DetailActivity.java
com.tddrampup.activities.MainActivity.java
com.tddrampup.activities.SearchResultsActivity.java
com.tddrampup.adapters.ListingAdapter.java
com.tddrampup.contentprovider.ListingContentProvider.java
com.tddrampup.contentprovider.ListingDatabaseHelper.java
com.tddrampup.contentprovider.ListingTable.java
com.tddrampup.fragments.DetailFragment.java
com.tddrampup.fragments.GoogleMapFragment.java
com.tddrampup.fragments.ListingsFragment.java
com.tddrampup.fragments.MainFragment.java
com.tddrampup.models.Listing.java
com.tddrampup.services.VolleyCallback.java
com.tddrampup.services.VolleyHelper.java
com.tddrampup.singletons.Listings.java