2727import com .activeandroid .util .ReflectionUtils ;
2828
2929public class Configuration {
30+
31+ public final static String SQL_PARSER_LEGACY = "legacy" ;
32+ public final static String SQL_PARSER_DELIMITED = "delimited" ;
33+
3034 //////////////////////////////////////////////////////////////////////////////////////
3135 // PRIVATE MEMBERS
3236 //////////////////////////////////////////////////////////////////////////////////////
3337
3438 private Context mContext ;
3539 private String mDatabaseName ;
3640 private int mDatabaseVersion ;
41+ private String mSqlParser ;
3742 private List <Class <? extends Model >> mModelClasses ;
3843 private List <Class <? extends TypeSerializer >> mTypeSerializers ;
3944 private int mCacheSize ;
@@ -61,6 +66,10 @@ public String getDatabaseName() {
6166 public int getDatabaseVersion () {
6267 return mDatabaseVersion ;
6368 }
69+
70+ public String getSqlParser () {
71+ return mSqlParser ;
72+ }
6473
6574 public List <Class <? extends Model >> getModelClasses () {
6675 return mModelClasses ;
@@ -91,9 +100,11 @@ public static class Builder {
91100 private static final String AA_DB_VERSION = "AA_DB_VERSION" ;
92101 private final static String AA_MODELS = "AA_MODELS" ;
93102 private final static String AA_SERIALIZERS = "AA_SERIALIZERS" ;
103+ private final static String AA_SQL_PARSER = "AA_SQL_PARSER" ;
94104
95105 private static final int DEFAULT_CACHE_SIZE = 1024 ;
96106 private static final String DEFAULT_DB_NAME = "Application.db" ;
107+ private static final String DEFAULT_SQL_PARSER = SQL_PARSER_LEGACY ;
97108
98109 //////////////////////////////////////////////////////////////////////////////////////
99110 // PRIVATE MEMBERS
@@ -104,6 +115,7 @@ public static class Builder {
104115 private Integer mCacheSize ;
105116 private String mDatabaseName ;
106117 private Integer mDatabaseVersion ;
118+ private String mSqlParser ;
107119 private List <Class <? extends Model >> mModelClasses ;
108120 private List <Class <? extends TypeSerializer >> mTypeSerializers ;
109121
@@ -134,6 +146,11 @@ public Builder setDatabaseVersion(int databaseVersion) {
134146 mDatabaseVersion = databaseVersion ;
135147 return this ;
136148 }
149+
150+ public Builder setSqlParser (String sqlParser ) {
151+ mSqlParser = sqlParser ;
152+ return this ;
153+ }
137154
138155 public Builder addModelClass (Class <? extends Model > modelClass ) {
139156 if (mModelClasses == null ) {
@@ -188,24 +205,28 @@ public Configuration create() {
188205 // Get database name from meta-data
189206 if (mDatabaseName != null ) {
190207 configuration .mDatabaseName = mDatabaseName ;
191- }
192- else {
208+ } else {
193209 configuration .mDatabaseName = getMetaDataDatabaseNameOrDefault ();
194210 }
195211
196212 // Get database version from meta-data
197213 if (mDatabaseVersion != null ) {
198214 configuration .mDatabaseVersion = mDatabaseVersion ;
199- }
200- else {
215+ } else {
201216 configuration .mDatabaseVersion = getMetaDataDatabaseVersionOrDefault ();
202217 }
203218
219+ // Get SQL parser from meta-data
220+ if (mSqlParser != null ) {
221+ configuration .mSqlParser = mSqlParser ;
222+ } else {
223+ configuration .mSqlParser = getMetaDataSqlParserOrDefault ();
224+ }
225+
204226 // Get model classes from meta-data
205227 if (mModelClasses != null ) {
206228 configuration .mModelClasses = mModelClasses ;
207- }
208- else {
229+ } else {
209230 final String modelList = ReflectionUtils .getMetaData (mContext , AA_MODELS );
210231 if (modelList != null ) {
211232 configuration .mModelClasses = loadModelList (modelList .split ("," ));
@@ -215,8 +236,7 @@ public Configuration create() {
215236 // Get type serializer classes from meta-data
216237 if (mTypeSerializers != null ) {
217238 configuration .mTypeSerializers = mTypeSerializers ;
218- }
219- else {
239+ } else {
220240 final String serializerList = ReflectionUtils .getMetaData (mContext , AA_SERIALIZERS );
221241 if (serializerList != null ) {
222242 configuration .mTypeSerializers = loadSerializerList (serializerList .split ("," ));
@@ -250,6 +270,14 @@ private int getMetaDataDatabaseVersionOrDefault() {
250270 return aaVersion ;
251271 }
252272
273+ private String getMetaDataSqlParserOrDefault () {
274+ final String mode = ReflectionUtils .getMetaData (mContext , AA_SQL_PARSER );
275+ if (mode == null ) {
276+ return DEFAULT_SQL_PARSER ;
277+ }
278+ return mode ;
279+ }
280+
253281 private List <Class <? extends Model >> loadModelList (String [] models ) {
254282 final List <Class <? extends Model >> modelClasses = new ArrayList <Class <? extends Model >>();
255283 final ClassLoader classLoader = mContext .getClass ().getClassLoader ();
0 commit comments