6
6
* \___/_/|_/_/ |_/_/ (_)___/_/ \_, /
7
7
* /___/
8
8
* repository.
9
- *
9
+ *
10
10
* Copyright (C) 2012-2014 Benoit 'BoD' Lubek ([email protected] )
11
- *
11
+ *
12
12
* This program is free software: you can redistribute it and/or modify
13
13
* it under the terms of the GNU General Public License as published by
14
14
* the Free Software Foundation, either version 3 of the License, or
15
15
* (at your option) any later version.
16
- *
16
+ *
17
17
* This program is distributed in the hope that it will be useful,
18
18
* but WITHOUT ANY WARRANTY; without even the implied warranty of
19
19
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20
20
* GNU General Public License for more details.
21
- *
21
+ *
22
22
* You should have received a copy of the GNU General Public License
23
23
* along with this program. If not, see <http://www.gnu.org/licenses/>.
24
24
*/
42
42
import android .util .Log ;
43
43
44
44
import org .jraf .androidcontentprovidergenerator .sample .BuildConfig ;
45
- import org .jraf .androidcontentprovidergenerator .sample .provider .serialnumber .SerialNumberColumns ;
46
- import org .jraf .androidcontentprovidergenerator .sample .provider .personteam .PersonTeamColumns ;
47
- import org .jraf .androidcontentprovidergenerator .sample .provider .team .TeamColumns ;
48
45
import org .jraf .androidcontentprovidergenerator .sample .provider .company .CompanyColumns ;
49
46
import org .jraf .androidcontentprovidergenerator .sample .provider .person .PersonColumns ;
47
+ import org .jraf .androidcontentprovidergenerator .sample .provider .personteam .PersonTeamColumns ;
48
+ import org .jraf .androidcontentprovidergenerator .sample .provider .serialnumber .SerialNumberColumns ;
49
+ import org .jraf .androidcontentprovidergenerator .sample .provider .team .TeamColumns ;
50
50
51
51
public class SampleProvider extends ContentProvider {
52
52
private static final String TAG = SampleProvider .class .getSimpleName ();
@@ -223,21 +223,24 @@ public Cursor query(Uri uri, String[] projection, String selection, String[] sel
223
223
Log .d (TAG , "query uri=" + uri + " selection=" + selection + " selectionArgs=" + Arrays .toString (selectionArgs ) + " sortOrder=" + sortOrder
224
224
+ " groupBy=" + groupBy );
225
225
QueryParams queryParams = getQueryParams (uri , selection , projection );
226
- ensureIdIsFullyQualified (projection , queryParams .table );
227
- Cursor res = mSampleSQLiteOpenHelper .getReadableDatabase ().query (queryParams .tablesWithJoins , projection , queryParams .selection , selectionArgs , groupBy ,
228
- null , sortOrder == null ? queryParams .orderBy : sortOrder );
226
+ projection = ensureIdIsFullyQualified (projection , queryParams .table );
227
+ Cursor res = mSampleSQLiteOpenHelper .getReadableDatabase ().query (queryParams .tablesWithJoins , projection , queryParams .selection , selectionArgs ,
228
+ groupBy , null , sortOrder == null ? queryParams .orderBy : sortOrder );
229
229
res .setNotificationUri (getContext ().getContentResolver (), uri );
230
230
return res ;
231
231
}
232
232
233
- private void ensureIdIsFullyQualified (String [] projection , String tableName ) {
234
- if (projection != null ) {
235
- for (int i = 0 ; i < projection .length ; ++i ) {
236
- if (projection [i ].equals (BaseColumns ._ID )) {
237
- projection [i ] = tableName + "." + BaseColumns ._ID + " AS " + BaseColumns ._ID ;
238
- }
233
+ private String [] ensureIdIsFullyQualified (String [] projection , String tableName ) {
234
+ if (projection == null ) return null ;
235
+ String [] res = new String [projection .length ];
236
+ for (int i = 0 ; i < projection .length ; i ++) {
237
+ if (projection [i ].equals (BaseColumns ._ID )) {
238
+ res [i ] = tableName + "." + BaseColumns ._ID + " AS " + BaseColumns ._ID ;
239
+ } else {
240
+ res [i ] = projection [i ];
239
241
}
240
242
}
243
+ return res ;
241
244
}
242
245
243
246
@ Override
@@ -293,19 +296,28 @@ private QueryParams getQueryParams(Uri uri, String selection, String[] projectio
293
296
res .table = PersonTeamColumns .TABLE_NAME ;
294
297
res .tablesWithJoins = PersonTeamColumns .TABLE_NAME ;
295
298
if (PersonColumns .hasColumns (projection )) {
296
- res .tablesWithJoins += " LEFT OUTER JOIN " + PersonColumns .TABLE_NAME + " AS " + PersonTeamColumns .PREFIX_PERSON + " ON " + PersonTeamColumns .TABLE_NAME + "." + PersonTeamColumns .PERSON_ID + "=" + PersonTeamColumns .PREFIX_PERSON + "." + PersonColumns ._ID ;
299
+ res .tablesWithJoins += " LEFT OUTER JOIN " + PersonColumns .TABLE_NAME + " AS " + PersonTeamColumns .PREFIX_PERSON + " ON "
300
+ + PersonTeamColumns .TABLE_NAME + "." + PersonTeamColumns .PERSON_ID + "=" + PersonTeamColumns .PREFIX_PERSON + "."
301
+ + PersonColumns ._ID ;
297
302
}
298
- if (TeamColumns .hasColumns (projection ) || CompanyColumns .hasColumns (projection ) || SerialNumberColumns .hasColumns (projection ) || SerialNumberColumns .hasColumns (projection )) {
299
- res .tablesWithJoins += " LEFT OUTER JOIN " + TeamColumns .TABLE_NAME + " AS " + PersonTeamColumns .PREFIX_TEAM + " ON " + PersonTeamColumns .TABLE_NAME + "." + PersonTeamColumns .TEAM_ID + "=" + PersonTeamColumns .PREFIX_TEAM + "." + TeamColumns ._ID ;
303
+ if (TeamColumns .hasColumns (projection ) || CompanyColumns .hasColumns (projection ) || SerialNumberColumns .hasColumns (projection )
304
+ || SerialNumberColumns .hasColumns (projection )) {
305
+ res .tablesWithJoins += " LEFT OUTER JOIN " + TeamColumns .TABLE_NAME + " AS " + PersonTeamColumns .PREFIX_TEAM + " ON "
306
+ + PersonTeamColumns .TABLE_NAME + "." + PersonTeamColumns .TEAM_ID + "=" + PersonTeamColumns .PREFIX_TEAM + "." + TeamColumns ._ID ;
300
307
}
301
308
if (CompanyColumns .hasColumns (projection ) || SerialNumberColumns .hasColumns (projection )) {
302
- res .tablesWithJoins += " LEFT OUTER JOIN " + CompanyColumns .TABLE_NAME + " AS " + TeamColumns .PREFIX_COMPANY + " ON " + PersonTeamColumns .PREFIX_TEAM + "." + TeamColumns .COMPANY_ID + "=" + TeamColumns .PREFIX_COMPANY + "." + CompanyColumns ._ID ;
309
+ res .tablesWithJoins += " LEFT OUTER JOIN " + CompanyColumns .TABLE_NAME + " AS " + TeamColumns .PREFIX_COMPANY + " ON "
310
+ + PersonTeamColumns .PREFIX_TEAM + "." + TeamColumns .COMPANY_ID + "=" + TeamColumns .PREFIX_COMPANY + "." + CompanyColumns ._ID ;
303
311
}
304
312
if (SerialNumberColumns .hasColumns (projection )) {
305
- res .tablesWithJoins += " LEFT OUTER JOIN " + SerialNumberColumns .TABLE_NAME + " AS " + CompanyColumns .PREFIX_SERIAL_NUMBER + " ON " + TeamColumns .PREFIX_COMPANY + "." + CompanyColumns .SERIAL_NUMBER_ID + "=" + CompanyColumns .PREFIX_SERIAL_NUMBER + "." + SerialNumberColumns ._ID ;
313
+ res .tablesWithJoins += " LEFT OUTER JOIN " + SerialNumberColumns .TABLE_NAME + " AS " + CompanyColumns .PREFIX_SERIAL_NUMBER + " ON "
314
+ + TeamColumns .PREFIX_COMPANY + "." + CompanyColumns .SERIAL_NUMBER_ID + "=" + CompanyColumns .PREFIX_SERIAL_NUMBER + "."
315
+ + SerialNumberColumns ._ID ;
306
316
}
307
317
if (SerialNumberColumns .hasColumns (projection )) {
308
- res .tablesWithJoins += " LEFT OUTER JOIN " + SerialNumberColumns .TABLE_NAME + " AS " + TeamColumns .PREFIX_SERIAL_NUMBER + " ON " + PersonTeamColumns .PREFIX_TEAM + "." + TeamColumns .SERIAL_NUMBER_ID + "=" + TeamColumns .PREFIX_SERIAL_NUMBER + "." + SerialNumberColumns ._ID ;
318
+ res .tablesWithJoins += " LEFT OUTER JOIN " + SerialNumberColumns .TABLE_NAME + " AS " + TeamColumns .PREFIX_SERIAL_NUMBER + " ON "
319
+ + PersonTeamColumns .PREFIX_TEAM + "." + TeamColumns .SERIAL_NUMBER_ID + "=" + TeamColumns .PREFIX_SERIAL_NUMBER + "."
320
+ + SerialNumberColumns ._ID ;
309
321
}
310
322
res .orderBy = PersonTeamColumns .DEFAULT_ORDER ;
311
323
break ;
@@ -315,13 +327,18 @@ private QueryParams getQueryParams(Uri uri, String selection, String[] projectio
315
327
res .table = TeamColumns .TABLE_NAME ;
316
328
res .tablesWithJoins = TeamColumns .TABLE_NAME ;
317
329
if (CompanyColumns .hasColumns (projection ) || SerialNumberColumns .hasColumns (projection )) {
318
- res .tablesWithJoins += " LEFT OUTER JOIN " + CompanyColumns .TABLE_NAME + " AS " + TeamColumns .PREFIX_COMPANY + " ON " + TeamColumns .TABLE_NAME + "." + TeamColumns .COMPANY_ID + "=" + TeamColumns .PREFIX_COMPANY + "." + CompanyColumns ._ID ;
330
+ res .tablesWithJoins += " LEFT OUTER JOIN " + CompanyColumns .TABLE_NAME + " AS " + TeamColumns .PREFIX_COMPANY + " ON "
331
+ + TeamColumns .TABLE_NAME + "." + TeamColumns .COMPANY_ID + "=" + TeamColumns .PREFIX_COMPANY + "." + CompanyColumns ._ID ;
319
332
}
320
333
if (SerialNumberColumns .hasColumns (projection )) {
321
- res .tablesWithJoins += " LEFT OUTER JOIN " + SerialNumberColumns .TABLE_NAME + " AS " + CompanyColumns .PREFIX_SERIAL_NUMBER + " ON " + TeamColumns .PREFIX_COMPANY + "." + CompanyColumns .SERIAL_NUMBER_ID + "=" + CompanyColumns .PREFIX_SERIAL_NUMBER + "." + SerialNumberColumns ._ID ;
334
+ res .tablesWithJoins += " LEFT OUTER JOIN " + SerialNumberColumns .TABLE_NAME + " AS " + CompanyColumns .PREFIX_SERIAL_NUMBER + " ON "
335
+ + TeamColumns .PREFIX_COMPANY + "." + CompanyColumns .SERIAL_NUMBER_ID + "=" + CompanyColumns .PREFIX_SERIAL_NUMBER + "."
336
+ + SerialNumberColumns ._ID ;
322
337
}
323
338
if (SerialNumberColumns .hasColumns (projection )) {
324
- res .tablesWithJoins += " LEFT OUTER JOIN " + SerialNumberColumns .TABLE_NAME + " AS " + TeamColumns .PREFIX_SERIAL_NUMBER + " ON " + TeamColumns .TABLE_NAME + "." + TeamColumns .SERIAL_NUMBER_ID + "=" + TeamColumns .PREFIX_SERIAL_NUMBER + "." + SerialNumberColumns ._ID ;
339
+ res .tablesWithJoins += " LEFT OUTER JOIN " + SerialNumberColumns .TABLE_NAME + " AS " + TeamColumns .PREFIX_SERIAL_NUMBER + " ON "
340
+ + TeamColumns .TABLE_NAME + "." + TeamColumns .SERIAL_NUMBER_ID + "=" + TeamColumns .PREFIX_SERIAL_NUMBER + "."
341
+ + SerialNumberColumns ._ID ;
325
342
}
326
343
res .orderBy = TeamColumns .DEFAULT_ORDER ;
327
344
break ;
@@ -331,7 +348,9 @@ private QueryParams getQueryParams(Uri uri, String selection, String[] projectio
331
348
res .table = CompanyColumns .TABLE_NAME ;
332
349
res .tablesWithJoins = CompanyColumns .TABLE_NAME ;
333
350
if (SerialNumberColumns .hasColumns (projection )) {
334
- res .tablesWithJoins += " LEFT OUTER JOIN " + SerialNumberColumns .TABLE_NAME + " AS " + CompanyColumns .PREFIX_SERIAL_NUMBER + " ON " + CompanyColumns .TABLE_NAME + "." + CompanyColumns .SERIAL_NUMBER_ID + "=" + CompanyColumns .PREFIX_SERIAL_NUMBER + "." + SerialNumberColumns ._ID ;
351
+ res .tablesWithJoins += " LEFT OUTER JOIN " + SerialNumberColumns .TABLE_NAME + " AS " + CompanyColumns .PREFIX_SERIAL_NUMBER + " ON "
352
+ + CompanyColumns .TABLE_NAME + "." + CompanyColumns .SERIAL_NUMBER_ID + "=" + CompanyColumns .PREFIX_SERIAL_NUMBER + "."
353
+ + SerialNumberColumns ._ID ;
335
354
}
336
355
res .orderBy = CompanyColumns .DEFAULT_ORDER ;
337
356
break ;
0 commit comments