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:
parent
5fca68f9f0
commit
af6f7cf657
@ -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"/>
|
||||||
|
@ -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);
|
||||||
|
@ -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()
|
||||||
|
@ -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;
|
||||||
|
@ -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>
|
||||||
|
Loading…
Reference in New Issue
Block a user