package SQLite; /** * Class wrapping an SQLite backup object. */ public class Backup { /** * Internal handle for the native SQLite API. */ protected long handle = 0; /** * Finish a backup. */ protected void finish() throws SQLite.Exception { synchronized(this) { _finalize(); } } /** * Destructor for object. */ protected void finalize() { synchronized(this) { try { _finalize(); } catch (SQLite.Exception e) { } } } protected native void _finalize() throws SQLite.Exception; /** * Perform a backup step. * * @param n number of pages to backup * @return true when backup completed */ public boolean step(int n) throws SQLite.Exception { synchronized(this) { return _step(n); } } private native boolean _step(int n) throws SQLite.Exception; /** * Perform the backup in one step. */ public void backup() throws SQLite.Exception { synchronized(this) { _step(-1); } } /** * Return number of remaining pages to be backed up. */ public int remaining() throws SQLite.Exception { synchronized(this) { return _remaining(); } } private native int _remaining() throws SQLite.Exception; /** * Return the total number of pages in the backup source database. */ public int pagecount() throws SQLite.Exception { synchronized(this) { return _pagecount(); } } private native int _pagecount() throws SQLite.Exception; /** * Internal native initializer. */ private static native void internal_init(); static { internal_init(); } }