Edit: Add try catch for page backups

pull/620/head
gnosygnu 8 years ago
parent a28ba26ca6
commit ef11577d08

@ -21,29 +21,33 @@ public class Pagebaks_addon implements Xoax_addon_itm {
// get vars
if (!app.Cfg().Get_bool_app_or("xowa.wiki.edit.pagebaks.enabled", true)) return;
// #save file
// get file name; note encoding for wnt even on lnx systems just to be consistent
Gfo_url_encoder encoder = Gfo_url_encoder_.New__fsys_wnt().Make();
byte[] file_name = encoder.Encode(ttl.Full_db());
try {
// #save file
// get file name; note encoding for wnt even on lnx systems just to be consistent
Gfo_url_encoder encoder = Gfo_url_encoder_.New__fsys_wnt().Make();
byte[] file_name = encoder.Encode(ttl.Full_db());
// save file to backup dir; EX: /xowa/wiki/en.w/user/temp/save_backups/Earth/20170303_080102_123.txt
Io_url bak_dir = wiki.Fsys_mgr().Root_dir().GenSubDir_nest("user", "temp", "page_backups", String_.new_u8(file_name));
Io_url file_url = bak_dir.GenSubFil_ary(Datetime_now.Get().XtoStr_fmt("yyyyMMdd_HHmmss_fff"), ".txt");
Io_mgr.Instance.SaveFilBry(file_url, text);
// save file to backup dir; EX: /xowa/wiki/en.w/user/temp/save_backups/Earth/20170303_080102_123.txt
Io_url bak_dir = wiki.Fsys_mgr().Root_dir().GenSubDir_nest("user", "temp", "page_backups", String_.new_u8(file_name));
Io_url file_url = bak_dir.GenSubFil_ary(Datetime_now.Get().XtoStr_fmt("yyyyMMdd_HHmmss_fff"), ".txt");
Io_mgr.Instance.SaveFilBry(file_url, text);
// #prune dir
// get files for pruning
Io_url[] fils = Io_mgr.Instance.QueryDir_fils(bak_dir);
Array_.Sort(fils);
// calc files
int num_files = fils.length;
int max_files = app.Cfg().Get_int_app_or("xowa.wiki.edit.pagebaks.max_backups", 16);
int cutoff = num_files - max_files;
// #prune dir
// get files for pruning
Io_url[] fils = Io_mgr.Instance.QueryDir_fils(bak_dir);
Array_.Sort(fils);
// calc files
int num_files = fils.length;
int max_files = app.Cfg().Get_int_app_or("xowa.wiki.edit.pagebaks.max_backups", 16);
int cutoff = num_files - max_files;
// do pruning
for (int i = 0; i < cutoff; i++) {// EX: 3 files and 2 max; 1st file (index 0) needs to be deleted
Io_mgr.Instance.DeleteFil(fils[i]);
// do pruning
for (int i = 0; i < cutoff; i++) {// EX: 3 files and 2 max; 1st file (index 0) needs to be deleted
Io_mgr.Instance.DeleteFil(fils[i]);
}
} catch (Exception e) {
Gfo_usr_dlg_.Instance.Log_many("", "", "failed to save page backup; wiki=~{0} ttl=~{1} err=~{2}", wiki.Domain_bry(), ttl.Full_db(), Err_.Message_gplx_log(e));
}
}

Loading…
Cancel
Save