Android Open Source - android-webview-example Dao Invocation Handler






From Project

Back to project page android-webview-example.

License

The source code is released under:

Apache License

If you think the Android project android-webview-example 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.significantfiles.android.sqlite;
//from  www .  j  av  a2  s . com
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;

import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.net.Uri;
import android.util.Log;

import com.significantfiles.android.sqlite.query.QueryType;
import com.significantfiles.android.sqlite.query.SQL;
import com.significantfiles.mrcounter.db.UnknownQueryTypeException;

public class DaoInvocationHandler implements InvocationHandler {

  private final DaoMethod daoMethodCall = new DaoMethod();

  private final Class<?> daoType;

  private final SQLiteOpenHelper dbManager;
  
  public DaoInvocationHandler(final Class<?> daoType, final SQLiteOpenHelper dbManager) {
    this.daoType = daoType;
    this.dbManager = dbManager;
  }


  @Override
  public Object invoke(final Object proxy, final Method method,
      final Object[] arguments) throws Throwable {

    daoMethodCall.set(method);

    final QueryType queryType = daoMethodCall.queryType();
    switch (queryType) {
    case SELECT:
      throw new UnsupportedOperationException();
    case INSERT:
      return handleInsertSQL(arguments);
    default:
      handleUnknownQueryType(queryType);
      break;
    }

    // TODO Auto-generated method stub
    return null;
  }

  private Object handleInsertSQL(final Object[] arguments) {
    final String sql = daoMethodCall.buildSQL();
    
    execQuery(sql, arguments);
    
    return null;
  }


  private void execQuery(final String sql, final Object[] arguments) {
    Log.i("sqleasy", "Execute sql [= " + sql + "] on SQLite-Database over DAO [= " + this.daoType.getName() + "]." );
    final SQLiteDatabase db = this.dbManager.getWritableDatabase();
    
//    db.beginTransaction();
//    db.query("Credit", , selection, selectionArgs, groupBy, having, orderBy)
//    db.rawQuery( "SELECT * from sqlite_master WHERE", selectionArgs)
//    
    try {
        db.execSQL(sql, arguments);
    } catch (final Throwable e) {
      throw new InsertException(sql, arguments, e);
    }
    
//    db.endTransaction();
  }


  private void handleUnknownQueryType(final QueryType queryType) {
    throw new UnknownQueryTypeException(queryType);
  }

  static class DaoMethod {

    private Method method;
    private SQL sql;

    public void set(final Method method) {
      this.method = method;
      this.sql = this.method.getAnnotation(SQL.class);
    }

    public String buildSQL() {
      return this.sql.query();
    }

    private Uri buildURI() {
      throw new UnsupportedOperationException();
    }

    public QueryType queryType() {
      return sql.type();
    }
    
  }
}




Java Source Code List

com.significantfiles.android.db.CommandUriMatcherTestCase.java
com.significantfiles.android.db.CreditContentProviderTestCase.java
com.significantfiles.android.db.SQLiteCreateTableTestCase.java
com.significantfiles.android.db.SimpleProviderTestCase.java
com.significantfiles.android.db.TestCommandBasedContentProvider.java
com.significantfiles.android.provider.table.Authority.java
com.significantfiles.android.provider.table.ColumnMethodEnumeration.java
com.significantfiles.android.provider.table.OrderBy.java
com.significantfiles.android.provider.table.SQLiteField.java
com.significantfiles.android.provider.table.SQLiteTable.java
com.significantfiles.android.provider.table.SQLiteType.java
com.significantfiles.android.provider.table.UriPathExt.java
com.significantfiles.android.provider.table.constraint.IsPrimaryKey.java
com.significantfiles.android.provider.table.constraint.NotNull.java
com.significantfiles.android.provider.table.constraint.Unique.java
com.significantfiles.android.sqlite.DaoInvocationHandler.java
com.significantfiles.android.sqlite.GET.java
com.significantfiles.android.sqlite.InsertException.java
com.significantfiles.android.sqlite.UnsupportedUri.java
com.significantfiles.android.sqlite.commands.CommandBasedContentProvider.java
com.significantfiles.android.sqlite.commands.CreateTable.java
com.significantfiles.android.sqlite.commands.DaoManager.java
com.significantfiles.android.sqlite.commands.InsertCmd.java
com.significantfiles.android.sqlite.commands.InsertRow.java
com.significantfiles.android.sqlite.create.ColumnExtractor.java
com.significantfiles.android.sqlite.create.TableExtractor.java
com.significantfiles.android.sqlite.query.InsertTxChoice.java
com.significantfiles.android.sqlite.query.Insert.java
com.significantfiles.android.sqlite.query.QueryType.java
com.significantfiles.android.sqlite.query.Replace.java
com.significantfiles.android.sqlite.query.SQL.java
com.significantfiles.android.sqlite.types.BLOB.java
com.significantfiles.android.sqlite.types.ID.java
com.significantfiles.android.sqlite.types.INTEGER.java
com.significantfiles.android.sqlite.types.REAL.java
com.significantfiles.android.sqlite.types.TEXT.java
com.significantfiles.mrcounter.ActivityRequestCode.java
com.significantfiles.mrcounter.Constants.java
com.significantfiles.mrcounter.IndexActivity.java
com.significantfiles.mrcounter.StartActivity.java
com.significantfiles.mrcounter.WebChromeClient.java
com.significantfiles.mrcounter.WebViewClient.java
com.significantfiles.mrcounter.db.CommandUriMatcher.java
com.significantfiles.mrcounter.db.ContentProviderCmd.java
com.significantfiles.mrcounter.db.ContentResolverUtil.java
com.significantfiles.mrcounter.db.ContentValuesKeys.java
com.significantfiles.mrcounter.db.CreditByIdResult.java
com.significantfiles.mrcounter.db.CreditDao.java
com.significantfiles.mrcounter.db.CreditQuery.java
com.significantfiles.mrcounter.db.CreditSQLiteOpenHelper.java
com.significantfiles.mrcounter.db.Credit.java
com.significantfiles.mrcounter.db.Credits.java
com.significantfiles.mrcounter.db.DaoConfig.java
com.significantfiles.mrcounter.db.InsertCreditCmd.java
com.significantfiles.mrcounter.db.UnknownQueryTypeException.java
com.significantfiles.mrcounter.db.Uris.java
com.significantfiles.mrcounter.db.provider.CommandBasedCreditContentProvider.java
com.significantfiles.mrcounter.db.provider.CreditContentProvider.java
com.significantfiles.mrcounter.db.provider.CreditDaoBasedContentProvider.java
com.significantfiles.mrcounter.db.result.Converter.java
com.significantfiles.mrcounter.db.result.Credit.java
com.significantfiles.mrcounter.db.result.DefaultConverterStrategy.java
com.significantfiles.mrcounter.db.result.DefautInteger2IntConverter.java
com.significantfiles.mrcounter.db.result.QueryRef.java
com.significantfiles.mrcounter.js.CreateCreditControl.java
com.significantfiles.mrcounter.js.WebViewFacade.java