From a661f90ede756988713aee56a941846f84f6c997 Mon Sep 17 00:00:00 2001 From: gnosygnu Date: Sat, 25 Feb 2017 21:05:36 -0500 Subject: [PATCH] Xomw: Do not load every personal wiki on startup --- .../addons/wikis/directorys/Xowdir_addon.java | 6 +----- .../gplx/xowa/bldrs/css/Xoa_css_extractor.java | 3 ++- 400_xowa/src/gplx/xowa/wikis/Xoae_wiki_mgr.java | 16 ++++++++++++++-- 3 files changed, 17 insertions(+), 8 deletions(-) diff --git a/400_xowa/src/gplx/xowa/addons/wikis/directorys/Xowdir_addon.java b/400_xowa/src/gplx/xowa/addons/wikis/directorys/Xowdir_addon.java index 7e970807f..48d93278d 100644 --- a/400_xowa/src/gplx/xowa/addons/wikis/directorys/Xowdir_addon.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/directorys/Xowdir_addon.java @@ -53,11 +53,7 @@ public class Xowdir_addon implements Xoax_addon_itm, Xoax_addon_itm__special, Xo int len = itms.length; for (int i = 0; i < len; ++i) { Xowdir_wiki_itm itm = itms[i]; - try { - gplx.xowa.addons.wikis.directorys.specials.items.bldrs.Xow_wiki_factory.Load_personal(app, Bry_.new_u8(itm.Domain()), itm.Url().OwnerDir()); - } catch (Exception exc) {// handles failures if wiki is deleted, but item is still in wiki_list table - Gfo_usr_dlg_.Instance.Warn_many("", "", "personal_wiki: failed to open personal wiki; domain=~{0} url=~{1} err=~{2}", itm.Domain(), itm.Url(), Err_.Message_gplx_log(exc)); - } + app.User().Wikii().Xwiki_mgr().Add_by_atrs(itm.Domain(), itm.Domain()); } } } diff --git a/400_xowa/src/gplx/xowa/bldrs/css/Xoa_css_extractor.java b/400_xowa/src/gplx/xowa/bldrs/css/Xoa_css_extractor.java index c00daa438..fada77a1f 100644 --- a/400_xowa/src/gplx/xowa/bldrs/css/Xoa_css_extractor.java +++ b/400_xowa/src/gplx/xowa/bldrs/css/Xoa_css_extractor.java @@ -117,7 +117,8 @@ public class Xoa_css_extractor { } private void Css_common_failover() { Io_url trg_fil = wiki_html_dir.GenSubFil(Css_common_name); - Io_mgr.Instance.CopyDirDeep(home_css_dir, trg_fil.OwnerDir()); // NOTE: copy dir first b/c xowa_commons.css will be replaced below + if (home_css_dir != null) // TEST: + Io_mgr.Instance.CopyDirDeep(home_css_dir, trg_fil.OwnerDir()); // NOTE: copy dir first b/c xowa_commons.css will be replaced below Io_mgr.Instance.CopyFil(Css_common_failover_url(), trg_fil, true); } private void Css_common_download() { diff --git a/400_xowa/src/gplx/xowa/wikis/Xoae_wiki_mgr.java b/400_xowa/src/gplx/xowa/wikis/Xoae_wiki_mgr.java index 8711463f9..42abbd8b2 100644 --- a/400_xowa/src/gplx/xowa/wikis/Xoae_wiki_mgr.java +++ b/400_xowa/src/gplx/xowa/wikis/Xoae_wiki_mgr.java @@ -16,9 +16,11 @@ Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt package gplx.xowa.wikis; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*; import gplx.xowa.xtns.wbases.*; import gplx.xowa.wikis.domains.*; import gplx.xowa.wikis.domains.crts.*; import gplx.xowa.wikis.nss.*; import gplx.xowa.wikis.metas.*; +import gplx.xowa.addons.wikis.directorys.dbs.*; public class Xoae_wiki_mgr implements Xoa_wiki_mgr, Gfo_invk { private final Xoae_app app; private final List_adp list = List_adp_.New(); private final Hash_adp_bry hash = Hash_adp_bry.ci_a7(); // ASCII:url_domain; EX:en.wikipedia.org + private Xowdir_db_mgr db_mgr; public Xoae_wiki_mgr(Xoae_app app) { this.app = app; this.wiki_regy = new Xoa_wiki_regy(app); @@ -34,7 +36,10 @@ public class Xoae_wiki_mgr implements Xoa_wiki_mgr, Gfo_invk { return rv; } } - public void Init_by_app() {wdata_mgr.Init_by_app();} + public void Init_by_app() { + this.db_mgr = new Xowdir_db_mgr(app.User().User_db_mgr().Conn()); + wdata_mgr.Init_by_app(); + } public int Count() {return list.Count();} public boolean Has(byte[] key) {return hash.Has(key);} public Xow_wiki Get_at(int idx) {return (Xow_wiki)list.Get_at(idx);} @@ -58,7 +63,14 @@ public class Xoae_wiki_mgr implements Xoa_wiki_mgr, Gfo_invk { list.Add(wiki); } public Xowe_wiki Make_and_add(byte[] domain_bry) { - Io_url wiki_root_url = app.Fsys_mgr().Wiki_dir().GenSubDir(String_.new_a7(domain_bry)); + // get wiki_root_url from either user_wiki or /xowa/wiki/ + Xowdir_wiki_itm user_wiki_itm = db_mgr == null + ? null // TEST: + : db_mgr.Tbl__wiki().Select_by_key_or_null(String_.new_u8(domain_bry)); + Io_url wiki_root_url = user_wiki_itm == null + ? app.Fsys_mgr().Wiki_dir().GenSubDir(String_.new_a7(domain_bry)) + : user_wiki_itm.Url().OwnerDir(); + Xowe_wiki rv = (Xowe_wiki)Make(domain_bry, wiki_root_url); Add(rv); return rv;