xref: /aosp_15_r20/external/javasqlite/src/main/java/SQLite/Backup.java (revision fd76c71b147b98c03334ec0945352cee0b39aab1)
1*fd76c71bSTreehugger Robot package SQLite;
2*fd76c71bSTreehugger Robot 
3*fd76c71bSTreehugger Robot /**
4*fd76c71bSTreehugger Robot  * Class wrapping an SQLite backup object.
5*fd76c71bSTreehugger Robot  */
6*fd76c71bSTreehugger Robot 
7*fd76c71bSTreehugger Robot public class Backup {
8*fd76c71bSTreehugger Robot 
9*fd76c71bSTreehugger Robot     /**
10*fd76c71bSTreehugger Robot      * Internal handle for the native SQLite API.
11*fd76c71bSTreehugger Robot      */
12*fd76c71bSTreehugger Robot 
13*fd76c71bSTreehugger Robot     protected long handle = 0;
14*fd76c71bSTreehugger Robot 
15*fd76c71bSTreehugger Robot     /**
16*fd76c71bSTreehugger Robot      * Finish a backup.
17*fd76c71bSTreehugger Robot      */
18*fd76c71bSTreehugger Robot 
finish()19*fd76c71bSTreehugger Robot     protected void finish() throws SQLite.Exception {
20*fd76c71bSTreehugger Robot 	synchronized(this) {
21*fd76c71bSTreehugger Robot 	    _finalize();
22*fd76c71bSTreehugger Robot 	}
23*fd76c71bSTreehugger Robot     }
24*fd76c71bSTreehugger Robot 
25*fd76c71bSTreehugger Robot     /**
26*fd76c71bSTreehugger Robot      * Destructor for object.
27*fd76c71bSTreehugger Robot      */
28*fd76c71bSTreehugger Robot 
finalize()29*fd76c71bSTreehugger Robot     protected void finalize() {
30*fd76c71bSTreehugger Robot 	synchronized(this) {
31*fd76c71bSTreehugger Robot 	    try {
32*fd76c71bSTreehugger Robot 		_finalize();
33*fd76c71bSTreehugger Robot 	    } catch (SQLite.Exception e) {
34*fd76c71bSTreehugger Robot 	    }
35*fd76c71bSTreehugger Robot 	}
36*fd76c71bSTreehugger Robot     }
37*fd76c71bSTreehugger Robot 
_finalize()38*fd76c71bSTreehugger Robot     protected native void _finalize() throws SQLite.Exception;
39*fd76c71bSTreehugger Robot 
40*fd76c71bSTreehugger Robot     /**
41*fd76c71bSTreehugger Robot      * Perform a backup step.
42*fd76c71bSTreehugger Robot      *
43*fd76c71bSTreehugger Robot      * @param n number of pages to backup
44*fd76c71bSTreehugger Robot      * @return true when backup completed
45*fd76c71bSTreehugger Robot      */
46*fd76c71bSTreehugger Robot 
step(int n)47*fd76c71bSTreehugger Robot     public boolean step(int n) throws SQLite.Exception {
48*fd76c71bSTreehugger Robot 	synchronized(this) {
49*fd76c71bSTreehugger Robot 	    return _step(n);
50*fd76c71bSTreehugger Robot 	}
51*fd76c71bSTreehugger Robot     }
52*fd76c71bSTreehugger Robot 
_step(int n)53*fd76c71bSTreehugger Robot     private native boolean _step(int n) throws SQLite.Exception;
54*fd76c71bSTreehugger Robot 
55*fd76c71bSTreehugger Robot     /**
56*fd76c71bSTreehugger Robot      * Perform the backup in one step.
57*fd76c71bSTreehugger Robot      */
58*fd76c71bSTreehugger Robot 
backup()59*fd76c71bSTreehugger Robot     public void backup() throws SQLite.Exception {
60*fd76c71bSTreehugger Robot 	synchronized(this) {
61*fd76c71bSTreehugger Robot 	    _step(-1);
62*fd76c71bSTreehugger Robot 	}
63*fd76c71bSTreehugger Robot     }
64*fd76c71bSTreehugger Robot 
65*fd76c71bSTreehugger Robot     /**
66*fd76c71bSTreehugger Robot      * Return number of remaining pages to be backed up.
67*fd76c71bSTreehugger Robot      */
68*fd76c71bSTreehugger Robot 
remaining()69*fd76c71bSTreehugger Robot     public int remaining() throws SQLite.Exception {
70*fd76c71bSTreehugger Robot 	synchronized(this) {
71*fd76c71bSTreehugger Robot 	    return _remaining();
72*fd76c71bSTreehugger Robot 	}
73*fd76c71bSTreehugger Robot     }
74*fd76c71bSTreehugger Robot 
_remaining()75*fd76c71bSTreehugger Robot     private native int _remaining() throws SQLite.Exception;
76*fd76c71bSTreehugger Robot 
77*fd76c71bSTreehugger Robot     /**
78*fd76c71bSTreehugger Robot      * Return the total number of pages in the backup source database.
79*fd76c71bSTreehugger Robot      */
80*fd76c71bSTreehugger Robot 
pagecount()81*fd76c71bSTreehugger Robot     public int pagecount() throws SQLite.Exception {
82*fd76c71bSTreehugger Robot 	synchronized(this) {
83*fd76c71bSTreehugger Robot 	    return _pagecount();
84*fd76c71bSTreehugger Robot 	}
85*fd76c71bSTreehugger Robot     }
86*fd76c71bSTreehugger Robot 
_pagecount()87*fd76c71bSTreehugger Robot     private native int _pagecount() throws SQLite.Exception;
88*fd76c71bSTreehugger Robot 
89*fd76c71bSTreehugger Robot     /**
90*fd76c71bSTreehugger Robot      * Internal native initializer.
91*fd76c71bSTreehugger Robot      */
92*fd76c71bSTreehugger Robot 
internal_init()93*fd76c71bSTreehugger Robot     private static native void internal_init();
94*fd76c71bSTreehugger Robot 
95*fd76c71bSTreehugger Robot     static {
internal_init()96*fd76c71bSTreehugger Robot 	internal_init();
97*fd76c71bSTreehugger Robot     }
98*fd76c71bSTreehugger Robot }
99*fd76c71bSTreehugger Robot 
100