Skip to content

Commit 587e4a0

Browse files
committed
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); }
1 parent 60a82e7 commit 587e4a0

1 file changed

Lines changed: 14 additions & 17 deletions

File tree

‎AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/processing/OrmLiteDaoProcessor.java‎

Lines changed: 14 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@
3939
*/
4040
public class OrmLiteDaoProcessor implements DecoratingElementProcessor {
4141

42-
private static final String CONNECTION_SOURCE_FIELD_NAME = "connectionSource_";
42+
private static final String DATABASE_HELPER_FIELD_NAME = "helper_";
4343
private TargetAnnotationHelper helper;
4444

4545
public OrmLiteDaoProcessor(ProcessingEnvironment processingEnv) {
@@ -61,45 +61,42 @@ public void process(Element element, JCodeModel codeModel, EBeanHolder holder) {
6161

6262
TypeMirror databaseHelperTypeMirror = helper.extractAnnotationParameter(element, "helper");
6363

64-
// connection source field
65-
boolean connectionSourceInjected = holder.generatedClass.fields().containsKey(CONNECTION_SOURCE_FIELD_NAME);
64+
// database helper field
65+
boolean databaseHelperInjected = holder.generatedClass.fields().containsKey(DATABASE_HELPER_FIELD_NAME);
6666

6767
JBlock initBody = holder.initBody;
6868

69-
JFieldVar connectionSourceRef;
70-
if (connectionSourceInjected) {
71-
connectionSourceRef = holder.generatedClass.fields().get(CONNECTION_SOURCE_FIELD_NAME);
69+
JFieldVar databaseHelperRef;
70+
if (databaseHelperInjected) {
71+
databaseHelperRef = holder.generatedClass.fields().get(DATABASE_HELPER_FIELD_NAME);
7272
} else {
73-
connectionSourceRef = holder.generatedClass.field(PRIVATE, classes.CONNECTION_SOURCE, CONNECTION_SOURCE_FIELD_NAME);
73+
databaseHelperRef = holder.generatedClass.field(PRIVATE, holder.refClass(databaseHelperTypeMirror.toString()), DATABASE_HELPER_FIELD_NAME);
7474

75-
// get connection source
75+
// get database helper instance
7676
JExpression dbHelperClass = holder.refClass(databaseHelperTypeMirror.toString()).dotclass();
7777

78-
initBody.assign(connectionSourceRef, //
78+
initBody.assign(databaseHelperRef, //
7979
classes.OPEN_HELPER_MANAGER //
8080
.staticInvoke("getHelper") //
8181
.arg(holder.contextRef) //
82-
.arg(dbHelperClass) //
83-
.invoke("getConnectionSource"));
82+
.arg(dbHelperClass));
8483
}
8584

86-
// create dao from dao manager
85+
// create dao from database helper
8786
JTryBlock tryBlock = initBody._try();
8887

8988
JExpression modelClass = holder.refClass(modelObjectTypeMirror.toString()).dotclass();
9089
tryBlock.body().assign(ref(fieldName), //
91-
classes.DAO_MANAGER //
92-
.staticInvoke("createDao") //
93-
.arg(connectionSourceRef) //
94-
.arg(modelClass));
90+
databaseHelperRef.invoke("getDao"). //
91+
arg(modelClass));
9592

9693
JCatchBlock catchBlock = tryBlock._catch(classes.SQL_EXCEPTION);
9794
JVar exception = catchBlock.param("e");
9895

9996
catchBlock.body() //
10097
.staticInvoke(classes.LOG, "e") //
10198
.arg(holder.generatedClass.name()) //
102-
.arg("Could not create DAO") //
99+
.arg("Could not create DAO " + fieldName) //
103100
.arg(exception);
104101
}
105102
}

0 commit comments

Comments
 (0)