Android Open Source - anluwage Generic Annotation Based Dao






From Project

Back to project page anluwage.

License

The source code is released under:

GNU General Public License

If you think the Android project anluwage 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.sudocode.content.provider.api.dao;
/*  w w  w  .j  av a 2s  .c  o  m*/
import android.content.ContentResolver;
import android.content.ContentUris;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.net.Uri;
import com.sudocode.content.provider.api.dao.exception.AnnotationBasedDaoException;
import com.sudocode.content.provider.api.dao.exception.UnableToSaveRecordException;

/**
 * Created by RM on 1/31/14.
 */
public class GenericAnnotationBasedDao extends AnnotationBasedDaoSupport implements AnnotationBasedDao {

    private ContentResolver contentResolver;

    public GenericAnnotationBasedDao(Context context) {
        this(context.getContentResolver());
    }

    public GenericAnnotationBasedDao(ContentResolver contentResolver) {
        this.contentResolver = contentResolver;
    }

    @Override
    public <T> T get(Class<T> tableModelClass, long id) {
        return mapToObject(ContentUris.withAppendedId(getContentUri(tableModelClass), id), tableModelClass, false);
    }

    @Override
    public <T> Cursor list(Class<T> tableModelClass) {
        return list(tableModelClass, null, null, null, null);
    }

    @Override
    public <T> Cursor list(Class<T> tableModelClass,
                           String[] projection,
                           String selection,
                           String[] selectionArgs,
                           String sortOder) {
        return contentResolver.query(getContentUri(tableModelClass), projection, selection, selectionArgs, sortOder);
    }

    @Override
    public <T> void save(T model) throws AnnotationBasedDaoException {
        Uri newItemUri = contentResolver.insert(getContentUri(model.getClass()), generateContentValues(model));
        if (newItemUri == null) {
            throw new UnableToSaveRecordException();
        }
    }

    @Override
    public <T> void save(T[] model) {
        if (model != null && model.length > 0) {
            ContentValues[] contentValuesesArray = new ContentValues[model.length];
            for (int i = 0; i < contentValuesesArray.length; i++) {
                contentValuesesArray[i] = generateContentValues(model[i]);
            }
            contentResolver.bulkInsert(getContentUri(model.getClass()), contentValuesesArray);
        }
    }

    @Override
    public <T> void update(T model) {
        contentResolver.update(getContentUri(model.getClass()), generateContentValues(model), null, null);
    }

    @Override
    public <T> void update(T model, String selection, String[] selectionArgs) {
        contentResolver.update(getContentUri(model.getClass()), generateContentValues(model), selection, selectionArgs);
    }

    @Override
    public <T> void delete(T model) {
        delete(model.getClass(), getId(model));
    }

    @Override
    public <T> void delete(Class<T> tableModelClass, long id) {
        contentResolver.delete(ContentUris.withAppendedId(getContentUri(tableModelClass), id), null, null);
    }

    @Override
    protected ContentResolver getContentResolver() {
        return contentResolver;
    }

}




Java Source Code List

com.sudocode.android.commons.helper.ExceptionMessageExtractor.java
com.sudocode.content.provider.api.AnnotationBasedProviderDatabaseHelper.java
com.sudocode.content.provider.api.AnnotationBasedProvider.java
com.sudocode.content.provider.api.ProviderModel.java
com.sudocode.content.provider.api.TableModelConstants.java
com.sudocode.content.provider.api.annotation.Column.java
com.sudocode.content.provider.api.annotation.ForeignField.java
com.sudocode.content.provider.api.annotation.Id.java
com.sudocode.content.provider.api.annotation.InitScripts.java
com.sudocode.content.provider.api.annotation.Provider.java
com.sudocode.content.provider.api.annotation.Table.java
com.sudocode.content.provider.api.dao.AnnotationBasedDaoSupport.java
com.sudocode.content.provider.api.dao.AnnotationBasedDao.java
com.sudocode.content.provider.api.dao.GenericAnnotationBasedDao.java
com.sudocode.content.provider.api.dao.exception.AnnotationBasedDaoException.java
com.sudocode.content.provider.api.dao.exception.UnableToSaveRecordException.java
com.sudocode.content.provider.api.exception.AnnotationBasedProviderException.java
com.sudocode.content.provider.api.exception.AnnotationBasedProviderRuntimeException.java
com.sudocode.content.provider.api.support.application.AnnotationBasedDaoInitializer.java
com.sudocode.content.provider.api.support.application.GenericAnnotationBasedDaoInitializer.java
com.sudocode.mrsq.pricer.utils.ProviderMetaDataUtils.java