@@ -377,54 +377,13 @@ public int updateWithOnConflict(String table, ContentValues values,
377
377
if (tag == null )
378
378
throw new IllegalArgumentException ("The tag must not be null." );
379
379
380
- // Gets all affected_rows
381
- Cursor restoring_cursor = mSQLiteDatabase .query (
380
+ generateRestoringUpdate (
382
381
table ,
383
- null ,
384
382
whereClause ,
385
383
whereArgs ,
386
- null ,
387
- null ,
388
- null
384
+ tag
389
385
);
390
386
391
- ArrayList <String > queries = new ArrayList <>();
392
- ArrayList <String []> queriesParameters = new ArrayList <>();
393
-
394
- // Generates restoring queries
395
- while (restoring_cursor .moveToNext ()) {
396
- StringBuilder sql = new StringBuilder ();
397
- sql .append ("UPDATE " );
398
- sql .append (table );
399
- sql .append (" SET " );
400
-
401
- int i = 0 ;
402
- String [] parameters = new String [restoring_cursor .getColumnCount () + 1 ];
403
-
404
- for (String columnName : restoring_cursor .getColumnNames ()) {
405
- if (i > 0 ) sql .append (", " );
406
-
407
- sql .append (columnName );
408
- sql .append (" = ?" );
409
- parameters [i ] = restoring_cursor .getString (restoring_cursor .getColumnIndex (columnName ));
410
-
411
- i ++;
412
- }
413
-
414
- sql .append (" WHERE " );
415
- sql .append (ROWID );
416
- sql .append (" = ?" );
417
- parameters [i ] = restoring_cursor .getString (restoring_cursor .getColumnIndex (ROWID ));
418
-
419
- queries .add (sql .toString ());
420
- queriesParameters .add (parameters );
421
- }
422
-
423
- restoring_cursor .close ();
424
-
425
- mTagQueryTable .put (tag , queries );
426
- mTagQueryParameters .put (tag , queriesParameters );
427
-
428
387
return mSQLiteDatabase .updateWithOnConflict (
429
388
table ,
430
389
values ,
@@ -443,64 +402,13 @@ public int delete(String table, String whereClause, String[] whereArgs, String t
443
402
if (tag == null )
444
403
throw new IllegalArgumentException ("The tag must not be null." );
445
404
446
- // Gets all affected_rows
447
- Cursor restoring_cursor = mSQLiteDatabase .query (
405
+ generateRestoringDelete (
448
406
table ,
449
- null ,
450
407
whereClause ,
451
408
whereArgs ,
452
- null ,
453
- null ,
454
- null
409
+ tag
455
410
);
456
411
457
- ArrayList <String > queries = new ArrayList <>();
458
- ArrayList <String []> queriesParameters = new ArrayList <>();
459
-
460
- // Generates restoring queries
461
- while (restoring_cursor .moveToNext ()) {
462
- StringBuilder sql = new StringBuilder ();
463
- sql .append ("INSERT OR REPLACE INTO " );
464
- sql .append (table );
465
-
466
- int i = 0 ;
467
- String [] parameters = new String [restoring_cursor .getColumnCount ()];
468
-
469
- StringBuilder sql_columns = new StringBuilder ();
470
- StringBuilder sql_values = new StringBuilder ();
471
-
472
- for (String columnName : restoring_cursor .getColumnNames ()) {
473
- if (i > 0 ) {
474
- sql_columns .append (", " );
475
- sql_values .append (", " );
476
- } else {
477
- sql_columns .append (" (" );
478
- sql_values .append (" (" );
479
- }
480
-
481
- sql_columns .append (columnName );
482
- sql_values .append ("?" );
483
- parameters [i ] = restoring_cursor .getString (restoring_cursor .getColumnIndex (columnName ));
484
-
485
- i ++;
486
- }
487
-
488
- sql_columns .append (")" );
489
- sql_values .append (")" );
490
-
491
- sql .append (sql_columns .toString ());
492
- sql .append (" VALUES " );
493
- sql .append (sql_values .toString ());
494
-
495
- queries .add (sql .toString ());
496
- queriesParameters .add (parameters );
497
- }
498
-
499
- restoring_cursor .close ();
500
-
501
- mTagQueryTable .put (tag , queries );
502
- mTagQueryParameters .put (tag , queriesParameters );
503
-
504
412
return mSQLiteDatabase .delete (
505
413
table ,
506
414
whereClause ,
@@ -579,21 +487,153 @@ private void generateRawUpdateDeleteQuery(Statement statement, String sql, Strin
579
487
Update updateStatement = (Update ) statement ;
580
488
table = updateStatement .getTables ().get (0 ).getName ();
581
489
where = updateStatement .getWhere ().toString ();
582
- // TODO
490
+ generateRestoringUpdate (
491
+ table ,
492
+ where ,
493
+ selectionArgs ,
494
+ tag
495
+ );
583
496
584
497
} else if (sql .toLowerCase (Locale .getDefault ()).contains ("delete" )) {
585
498
586
499
Delete deleteStatement = (Delete ) statement ;
587
500
table = deleteStatement .getTable ().getName ();
588
501
where = deleteStatement .getWhere ().toString ();
589
- // TODO
590
-
502
+ generateRestoringDelete (
503
+ table ,
504
+ where ,
505
+ selectionArgs ,
506
+ tag
507
+ );
591
508
}
592
509
}
593
510
594
511
private void generateInsertRawQuery (Cursor cursor , String table , String tag )
595
512
throws JSQLParserException , ClassCastException {
596
- // TODO
513
+ ArrayList <String > queries = new ArrayList <>();
514
+ ArrayList <String []> queriesParameters = new ArrayList <>();
515
+
516
+ queries .add ("DELETE FROM " + table + " WHERE " + ROWID + " = ?" );
517
+ queriesParameters .add (new String [] {cursor .getString (cursor .getColumnIndex (ROWID ))});
518
+
519
+ mTagQueryTable .put (tag , queries );
520
+ mTagQueryParameters .put (tag , queriesParameters );
521
+ }
522
+
523
+ private void generateRestoringDelete (String table ,
524
+ String whereClause ,
525
+ String [] whereArgs ,
526
+ String tag ) {
527
+ // Gets all affected_rows
528
+ Cursor restoring_cursor = mSQLiteDatabase .query (
529
+ table ,
530
+ null ,
531
+ whereClause ,
532
+ whereArgs ,
533
+ null ,
534
+ null ,
535
+ null
536
+ );
537
+
538
+ ArrayList <String > queries = new ArrayList <>();
539
+ ArrayList <String []> queriesParameters = new ArrayList <>();
540
+
541
+ // Generates restoring queries
542
+ while (restoring_cursor .moveToNext ()) {
543
+ StringBuilder sql = new StringBuilder ();
544
+ sql .append ("INSERT OR REPLACE INTO " );
545
+ sql .append (table );
546
+
547
+ int i = 0 ;
548
+ String [] parameters = new String [restoring_cursor .getColumnCount ()];
549
+
550
+ StringBuilder sql_columns = new StringBuilder ();
551
+ StringBuilder sql_values = new StringBuilder ();
552
+
553
+ for (String columnName : restoring_cursor .getColumnNames ()) {
554
+ if (i > 0 ) {
555
+ sql_columns .append (", " );
556
+ sql_values .append (", " );
557
+ } else {
558
+ sql_columns .append (" (" );
559
+ sql_values .append (" (" );
560
+ }
561
+
562
+ sql_columns .append (columnName );
563
+ sql_values .append ("?" );
564
+ parameters [i ] = restoring_cursor .getString (restoring_cursor .getColumnIndex (columnName ));
565
+
566
+ i ++;
567
+ }
568
+
569
+ sql_columns .append (")" );
570
+ sql_values .append (")" );
571
+
572
+ sql .append (sql_columns .toString ());
573
+ sql .append (" VALUES " );
574
+ sql .append (sql_values .toString ());
575
+
576
+ queries .add (sql .toString ());
577
+ queriesParameters .add (parameters );
578
+ }
579
+
580
+ restoring_cursor .close ();
581
+
582
+ mTagQueryTable .put (tag , queries );
583
+ mTagQueryParameters .put (tag , queriesParameters );
584
+ }
585
+
586
+ private void generateRestoringUpdate (String table ,
587
+ String whereClause ,
588
+ String [] whereArgs ,
589
+ String tag ) {
590
+ // Gets all affected_rows
591
+ Cursor restoring_cursor = mSQLiteDatabase .query (
592
+ table ,
593
+ null ,
594
+ whereClause ,
595
+ whereArgs ,
596
+ null ,
597
+ null ,
598
+ null
599
+ );
600
+
601
+ ArrayList <String > queries = new ArrayList <>();
602
+ ArrayList <String []> queriesParameters = new ArrayList <>();
603
+
604
+ // Generates restoring queries
605
+ while (restoring_cursor .moveToNext ()) {
606
+ StringBuilder sql = new StringBuilder ();
607
+ sql .append ("UPDATE " );
608
+ sql .append (table );
609
+ sql .append (" SET " );
610
+
611
+ int i = 0 ;
612
+ String [] parameters = new String [restoring_cursor .getColumnCount () + 1 ];
613
+
614
+ for (String columnName : restoring_cursor .getColumnNames ()) {
615
+ if (i > 0 ) sql .append (", " );
616
+
617
+ sql .append (columnName );
618
+ sql .append (" = ?" );
619
+ parameters [i ] = restoring_cursor .getString (restoring_cursor .getColumnIndex (columnName ));
620
+
621
+ i ++;
622
+ }
623
+
624
+ sql .append (" WHERE " );
625
+ sql .append (ROWID );
626
+ sql .append (" = ?" );
627
+ parameters [i ] = restoring_cursor .getString (restoring_cursor .getColumnIndex (ROWID ));
628
+
629
+ queries .add (sql .toString ());
630
+ queriesParameters .add (parameters );
631
+ }
632
+
633
+ restoring_cursor .close ();
634
+
635
+ mTagQueryTable .put (tag , queries );
636
+ mTagQueryParameters .put (tag , queriesParameters );
597
637
}
598
638
599
639
/**
0 commit comments