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