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;
/ / f r o m w w w . j a v a 2 s . c o m
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