1
0
mirror of https://github.com/gnosygnu/xowa.git synced 2024-10-27 20:34:16 +00:00

Page_sync: Show synced page immediately, not after another refresh

This commit is contained in:
gnosygnu 2017-03-13 12:53:45 -04:00
parent 5fca68f9f0
commit af6f7cf657
5 changed files with 31 additions and 12 deletions

View File

@ -1,6 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<classpath> <classpath>
<classpathentry kind="src" path="xtn"/>
<classpathentry kind="src" path="src"/> <classpathentry kind="src" path="src"/>
<classpathentry kind="src" path="/100_core"/> <classpathentry kind="src" path="/100_core"/>
<classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/4"/> <classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/4"/>

View File

@ -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); 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 boolean Manual_enabled() {return manual_enabled;} private boolean manual_enabled;
public void Auto_update(Xow_wiki wiki, Xoa_page page, Xoa_ttl page_ttl) { 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; 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; 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; if (page_ttl.Ns().Id_is_special()) return false;
if (!auto_enabled) return; if (!auto_enabled) return false;
if (!auto_page_matcher.Match(wiki, page_ttl.Full_db())) return; 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()); wiki.Data__core_mgr().Db__core().Tbl__page().Select_by_ttl(tmp_dbpg, page_ttl.Ns(), page_ttl.Page_db());
if (sync_conn == null) { if (sync_conn == null) {
Io_url sync_db_url = wiki.Fsys_mgr().Root_dir().GenSubFil(wiki.Domain_str() + "-sync.xowa"); 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_conn = Db_conn_bldr.Instance.Get_or_autocreate(true, sync_db_url);
sync_tbl = new Xosync_sync_tbl(sync_conn); sync_tbl = new Xosync_sync_tbl(sync_conn);
sync_conn.Meta_tbl_assert(sync_tbl); sync_conn.Meta_tbl_assert(sync_tbl);
} }
DateAdp sync_date = sync_tbl.Select_sync_date_or_min(tmp_dbpg.Id()); 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(); Xoa_app app = wiki.App();
Xoh_page hpg = new Xoh_page(); 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.Init_by_page(wiki, hpg);
update_mgr.Update(app.Wmf_mgr().Download_wkr(), wiki, page_ttl); 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()); sync_tbl.Upsert(tmp_dbpg.Id(), Datetime_now.Get());
return true;
} }
private void Auto_scope_(String v) { private void Auto_scope_(String v) {
auto_page_matcher.Set(v); auto_page_matcher.Set(v);

View File

@ -48,13 +48,17 @@ public class Xosync_update_mgr {
if (data == null) return; if (data == null) return;
// parse // 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()); Parse(hpg, wiki, hctx.Page__url(), data.Revn_html());
// get existing html_tbl // get existing html_tbl
Xow_db_file html_db = html_tbl_mgr.Get_html_db(wiki); 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 // 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()); 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 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() ( wiki.File__orig_mgr(), wiki.File__bin_mgr(), wiki.File__mnt_mgr()

View File

@ -64,7 +64,12 @@ public class Xowe_page_mgr {
Wait_for_popups(wiki.App()); Wait_for_popups(wiki.App());
// auto-update // 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 // load from html_db
boolean from_html_db = page.Db().Page().Html_db_id() != -1; 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 (from_html_db) {
if (read_from_html_db_preferred) { if (read_from_html_db_preferred) {
wiki.Html__hdump_mgr().Load_mgr().Load_by_xowe(page); 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 else
from_html_db = false; from_html_db = false;

View File

@ -1,12 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<classpath> <classpath>
<classpathentry kind="src" path="src"/> <classpathentry kind="src" path="src"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
<classpathentry combineaccessrules="false" kind="src" path="/100_core"/> <classpathentry combineaccessrules="false" kind="src" path="/100_core"/>
<classpathentry kind="lib" path="lib/lucene-core-6.4.2.jar"/> <classpathentry kind="lib" path="lib/lucene-core-6.4.2.jar"/>
<classpathentry kind="lib" path="lib/lucene-memory-6.4.2.jar"/> <classpathentry kind="lib" path="lib/lucene-memory-6.4.2.jar"/>
<classpathentry kind="lib" path="lib/lucene-highlighter-6.4.2.jar"/> <classpathentry kind="lib" path="lib/lucene-highlighter-6.4.2.jar"/>
<classpathentry kind="lib" path="lib/lucene-queryparser-6.4.2.jar"/> <classpathentry kind="lib" path="lib/lucene-queryparser-6.4.2.jar"/>
<classpathentry kind="lib" path="lib/lucene-analyzers-common-6.4.2.jar"/> <classpathentry kind="lib" path="lib/lucene-analyzers-common-6.4.2.jar"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="output" path="bin"/> <classpathentry kind="output" path="bin"/>
</classpath> </classpath>