diff --git a/150_gfui/.classpath b/150_gfui/.classpath index ccd523690..bfe48f13b 100644 --- a/150_gfui/.classpath +++ b/150_gfui/.classpath @@ -1,6 +1,5 @@ - diff --git a/400_xowa/src/gplx/xowa/addons/wikis/pages/syncs/core/Xosync_read_mgr.java b/400_xowa/src/gplx/xowa/addons/wikis/pages/syncs/core/Xosync_read_mgr.java index 8aa61c430..03dc1d5f7 100644 --- a/400_xowa/src/gplx/xowa/addons/wikis/pages/syncs/core/Xosync_read_mgr.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/pages/syncs/core/Xosync_read_mgr.java @@ -31,24 +31,31 @@ public class Xosync_read_mgr implements Gfo_invk { wiki.App().Cfg().Bind_many_wiki(this, wiki, Cfg__manual__enabled, Cfg__auto__enabled, Cfg__auto__interval, Cfg__auto__scope); } public boolean Manual_enabled() {return manual_enabled;} private boolean manual_enabled; - public void Auto_update(Xow_wiki wiki, Xoa_page page, Xoa_ttl page_ttl) { - if (wiki.Domain_itm().Domain_type_id() == gplx.xowa.wikis.domains.Xow_domain_tid_.Tid__home) return; - if (wiki.Domain_itm().Domain_type_id() == gplx.xowa.wikis.domains.Xow_domain_tid_.Tid__other) return; - if (page_ttl.Ns().Id_is_special()) return; + public boolean Auto_update(Xow_wiki wiki, Xoa_page page, Xoa_ttl page_ttl) { + if (wiki.Domain_itm().Domain_type_id() == gplx.xowa.wikis.domains.Xow_domain_tid_.Tid__home) return false; + if (wiki.Domain_itm().Domain_type_id() == gplx.xowa.wikis.domains.Xow_domain_tid_.Tid__other) return false; + if (page_ttl.Ns().Id_is_special()) return false; - if (!auto_enabled) return; - if (!auto_page_matcher.Match(wiki, page_ttl.Full_db())) return; + if (!auto_enabled) return false; + if (!auto_page_matcher.Match(wiki, page_ttl.Full_db())) return false; wiki.Data__core_mgr().Db__core().Tbl__page().Select_by_ttl(tmp_dbpg, page_ttl.Ns(), page_ttl.Page_db()); if (sync_conn == null) { Io_url sync_db_url = wiki.Fsys_mgr().Root_dir().GenSubFil(wiki.Domain_str() + "-sync.xowa"); + Gfo_usr_dlg_.Instance.Log_many("", "", "page_sync: loading database for page_sync_data; url=~{0}", sync_db_url.Raw()); sync_conn = Db_conn_bldr.Instance.Get_or_autocreate(true, sync_db_url); sync_tbl = new Xosync_sync_tbl(sync_conn); sync_conn.Meta_tbl_assert(sync_tbl); } DateAdp sync_date = sync_tbl.Select_sync_date_or_min(tmp_dbpg.Id()); - if (Datetime_now.Get().Diff(sync_date).Total_mins().To_int() <= auto_interval) return; + if (Datetime_now.Get().Diff(sync_date).Total_mins().To_int() <= auto_interval) { + Gfo_usr_dlg_.Instance.Log_many("", "", "page_sync: skipping auto-sync for page; wiki=~{0} page=~{1} sync_date=~{2}", wiki.Domain_bry(), page_ttl.Full_db(), sync_date.XtoStr_fmt_yyyy_MM_dd_HH_mm_ss()); + return false; + } + else { + Gfo_usr_dlg_.Instance.Log_many("", "", "page_sync: running auto-sync for page; wiki=~{0} page=~{1} sync_date=~{2}", wiki.Domain_bry(), page_ttl.Full_db(), sync_date.XtoStr_fmt_yyyy_MM_dd_HH_mm_ss()); + } Xoa_app app = wiki.App(); Xoh_page hpg = new Xoh_page(); @@ -56,7 +63,9 @@ public class Xosync_read_mgr implements Gfo_invk { update_mgr.Init_by_page(wiki, hpg); update_mgr.Update(app.Wmf_mgr().Download_wkr(), wiki, page_ttl); + Gfo_usr_dlg_.Instance.Log_many("", "", "page_sync: updating sync table; page=~{0}", page_ttl.Full_db()); sync_tbl.Upsert(tmp_dbpg.Id(), Datetime_now.Get()); + return true; } private void Auto_scope_(String v) { auto_page_matcher.Set(v); diff --git a/400_xowa/src/gplx/xowa/addons/wikis/pages/syncs/core/Xosync_update_mgr.java b/400_xowa/src/gplx/xowa/addons/wikis/pages/syncs/core/Xosync_update_mgr.java index 705facce7..c7b7c3d3f 100644 --- a/400_xowa/src/gplx/xowa/addons/wikis/pages/syncs/core/Xosync_update_mgr.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/pages/syncs/core/Xosync_update_mgr.java @@ -48,13 +48,17 @@ public class Xosync_update_mgr { if (data == null) return; // parse + Gfo_usr_dlg_.Instance.Log_many("", "", "page_sync: parsing page; page=~{0}", page_ttl.Full_db()); Parse(hpg, wiki, hctx.Page__url(), data.Revn_html()); // get existing html_tbl Xow_db_file html_db = html_tbl_mgr.Get_html_db(wiki); - html_tbl_mgr.Save_html(wiki, html_db, data.Page_id(), data.Revn_id(), hpg.Db().Html().Html_bry()); + byte[] html_bry = hpg.Db().Html().Html_bry(); + Gfo_usr_dlg_.Instance.Log_many("", "", "page_sync: saving html; page=~{0} html_len=~{1}", page_ttl.Full_db(), Bry_.Len(html_bry)); + html_tbl_mgr.Save_html(wiki, html_db, data.Page_id(), data.Revn_id(), html_bry); // download files + Gfo_usr_dlg_.Instance.Log_many("", "", "page_sync: downloading files; page=~{0}", page_ttl.Full_db()); hpg.Ctor_by_hview(wiki, wiki.Utl__url_parser().Parse(page_ttl.Full_db()), page_ttl, data.Page_id()); gplx.xowa.files.Xof_file_wkr file_thread = new gplx.xowa.files.Xof_file_wkr ( wiki.File__orig_mgr(), wiki.File__bin_mgr(), wiki.File__mnt_mgr() diff --git a/400_xowa/src/gplx/xowa/wikis/pages/Xowe_page_mgr.java b/400_xowa/src/gplx/xowa/wikis/pages/Xowe_page_mgr.java index 38ee10b48..bf098b23d 100644 --- a/400_xowa/src/gplx/xowa/wikis/pages/Xowe_page_mgr.java +++ b/400_xowa/src/gplx/xowa/wikis/pages/Xowe_page_mgr.java @@ -64,7 +64,12 @@ public class Xowe_page_mgr { Wait_for_popups(wiki.App()); // auto-update - read_mgr.Auto_update(wiki, page, ttl); + if (read_mgr.Auto_update(wiki, page, ttl)) { + // page-sync occurred; reload metadata, especially to pick up Html_db_id; DATE:2017-03-13 + page = wiki.Data_mgr().Load_page_and_parse(url, ttl, wiki.Lang(), tab, false); + ttl = page.Ttl(); // note that Load_page_and_parse can redirect ttl; EX: Special:Random -> A; DATE:2017-01-05 + } + // load from html_db boolean from_html_db = page.Db().Page().Html_db_id() != -1; @@ -72,7 +77,9 @@ public class Xowe_page_mgr { if (from_html_db) { if (read_from_html_db_preferred) { wiki.Html__hdump_mgr().Load_mgr().Load_by_xowe(page); - from_html_db = Bry_.Len_gt_0(page.Db().Html().Html_bry()); // NOTE: archive.org has some wtxt_dbs which included page|html_db_id without actual html_dbs; DATE:2016-06-22 + int html_len = Bry_.Len(page.Db().Html().Html_bry()); + from_html_db = html_len > 0; // NOTE: archive.org has some wtxt_dbs which included page|html_db_id without actual html_dbs; DATE:2016-06-22 + Gfo_usr_dlg_.Instance.Log_many("", "", "page_load: loaded html; page=~{0} html_len=~{1}", ttl.Full_db(), html_len); } else from_html_db = false; diff --git a/gplx.gflucene/.classpath b/gplx.gflucene/.classpath index 8c25a40e6..66e5d5b77 100644 --- a/gplx.gflucene/.classpath +++ b/gplx.gflucene/.classpath @@ -1,12 +1,12 @@ - +