From 587e4a0add4188f0d8c7ab2a9a7f6980daada0ac Mon Sep 17 00:00:00 2001 From: Gebing Date: Wed, 22 May 2013 11:11:51 +0800 Subject: [PATCH] Modify @OrmLite to use database helper to get dao, so generate code will look like: private DatabaseHelper helper_; ... ... helper_ = OpenHelperManager.getHelper(this, DatabaseHelper.class); try { clickCountDao = helper_.getDao(ClickCount.class); } catch (SQLException e) { Log.e("MyActivity_", "Could not create DAO clickCountDao", e); } --- .../processing/OrmLiteDaoProcessor.java | 31 +++++++++---------- 1 file changed, 14 insertions(+), 17 deletions(-) diff --git a/AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/processing/OrmLiteDaoProcessor.java b/AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/processing/OrmLiteDaoProcessor.java index 7cc8662bd0..bb87480891 100644 --- a/AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/processing/OrmLiteDaoProcessor.java +++ b/AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/processing/OrmLiteDaoProcessor.java @@ -39,7 +39,7 @@ */ public class OrmLiteDaoProcessor implements DecoratingElementProcessor { - private static final String CONNECTION_SOURCE_FIELD_NAME = "connectionSource_"; + private static final String DATABASE_HELPER_FIELD_NAME = "helper_"; private TargetAnnotationHelper helper; public OrmLiteDaoProcessor(ProcessingEnvironment processingEnv) { @@ -61,37 +61,34 @@ public void process(Element element, JCodeModel codeModel, EBeanHolder holder) { TypeMirror databaseHelperTypeMirror = helper.extractAnnotationParameter(element, "helper"); - // connection source field - boolean connectionSourceInjected = holder.generatedClass.fields().containsKey(CONNECTION_SOURCE_FIELD_NAME); + // database helper field + boolean databaseHelperInjected = holder.generatedClass.fields().containsKey(DATABASE_HELPER_FIELD_NAME); JBlock initBody = holder.initBody; - JFieldVar connectionSourceRef; - if (connectionSourceInjected) { - connectionSourceRef = holder.generatedClass.fields().get(CONNECTION_SOURCE_FIELD_NAME); + JFieldVar databaseHelperRef; + if (databaseHelperInjected) { + databaseHelperRef = holder.generatedClass.fields().get(DATABASE_HELPER_FIELD_NAME); } else { - connectionSourceRef = holder.generatedClass.field(PRIVATE, classes.CONNECTION_SOURCE, CONNECTION_SOURCE_FIELD_NAME); + databaseHelperRef = holder.generatedClass.field(PRIVATE, holder.refClass(databaseHelperTypeMirror.toString()), DATABASE_HELPER_FIELD_NAME); - // get connection source + // get database helper instance JExpression dbHelperClass = holder.refClass(databaseHelperTypeMirror.toString()).dotclass(); - initBody.assign(connectionSourceRef, // + initBody.assign(databaseHelperRef, // classes.OPEN_HELPER_MANAGER // .staticInvoke("getHelper") // .arg(holder.contextRef) // - .arg(dbHelperClass) // - .invoke("getConnectionSource")); + .arg(dbHelperClass)); } - // create dao from dao manager + // create dao from database helper JTryBlock tryBlock = initBody._try(); JExpression modelClass = holder.refClass(modelObjectTypeMirror.toString()).dotclass(); tryBlock.body().assign(ref(fieldName), // - classes.DAO_MANAGER // - .staticInvoke("createDao") // - .arg(connectionSourceRef) // - .arg(modelClass)); + databaseHelperRef.invoke("getDao"). // + arg(modelClass)); JCatchBlock catchBlock = tryBlock._catch(classes.SQL_EXCEPTION); JVar exception = catchBlock.param("e"); @@ -99,7 +96,7 @@ public void process(Element element, JCodeModel codeModel, EBeanHolder holder) { catchBlock.body() // .staticInvoke(classes.LOG, "e") // .arg(holder.generatedClass.name()) // - .arg("Could not create DAO") // + .arg("Could not create DAO " + fieldName) // .arg(exception); } }