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