From 200707b1c6bce4911aa372a436a872418e072b23 Mon Sep 17 00:00:00 2001 From: gnosygnu Date: Tue, 13 Dec 2016 12:49:05 -0500 Subject: [PATCH] Cfg: Convert 'Wiki - HTML databases' --- .../gplx/xowa/addons/apps/cfgs/Xocfg_mgr.java | 3 +- .../apps/cfgs/dbs/tbls/Xocfg_map_tbl.java | 14 ++++++-- .../apps/cfgs/mgrs/types/Xocfg_type_mgr.java | 4 +-- .../specials/edits/objs/Xoedit_itm_html.java | 3 +- .../maints/services/Xocfg_maint_svc.java | 7 ++-- .../src/gplx/xowa/apps/apis/Xoapi_root.java | 4 +-- .../xowa/apps/apis/xowa/Xoapi_app_wiki.java | 4 +-- .../gplx/xowa/apps/apis/xowa/Xoapi_wiki.java | 27 --------------- .../apps/apis/xowa/wikis/Xoapi_hdump.java | 34 ------------------- .../src/gplx/xowa/htmls/Xoh_page_wtr_wkr.java | 2 +- .../gplx/xowa/htmls/core/Xow_hdump_mgr.java | 1 + .../xowa/htmls/core/Xow_hdump_mgr__load.java | 19 ++++++++++- .../core/Xow_hdump_mode.java} | 32 +++++++++-------- .../gplx/xowa/wikis/pages/Xowe_page_mgr.java | 5 +-- 14 files changed, 64 insertions(+), 95 deletions(-) delete mode 100644 400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_wiki.java delete mode 100644 400_xowa/src/gplx/xowa/apps/apis/xowa/wikis/Xoapi_hdump.java rename 400_xowa/src/gplx/xowa/{apps/apis/xowa/wikis/Hdump_html_mode.java => htmls/core/Xow_hdump_mode.java} (51%) diff --git a/400_xowa/src/gplx/xowa/addons/apps/cfgs/Xocfg_mgr.java b/400_xowa/src/gplx/xowa/addons/apps/cfgs/Xocfg_mgr.java index 06f5579bc..a6250b9d4 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/cfgs/Xocfg_mgr.java +++ b/400_xowa/src/gplx/xowa/addons/apps/cfgs/Xocfg_mgr.java @@ -33,7 +33,8 @@ public class Xocfg_mgr { public void Clear() { cache_mgr.Clear(); } - public void Bind_many_app(Gfo_invk sub, String... keys) {Bind_many(sub, Xocfg_mgr.Ctx__app, keys);} + public void Bind_many_app (Gfo_invk sub, String... keys) {Bind_many(sub, Xocfg_mgr.Ctx__app, keys);} + public void Bind_many_wiki (Gfo_invk sub, Xow_wiki wiki, String... keys) {Bind_many(sub, wiki.Domain_itm().Abrv_xo_str(), keys);} public void Bind_many(Gfo_invk sub, String ctx, String... keys) { try { for (String key : keys) { diff --git a/400_xowa/src/gplx/xowa/addons/apps/cfgs/dbs/tbls/Xocfg_map_tbl.java b/400_xowa/src/gplx/xowa/addons/apps/cfgs/dbs/tbls/Xocfg_map_tbl.java index 61833dfcf..8e58356e2 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/cfgs/dbs/tbls/Xocfg_map_tbl.java +++ b/400_xowa/src/gplx/xowa/addons/apps/cfgs/dbs/tbls/Xocfg_map_tbl.java @@ -38,8 +38,18 @@ public class Xocfg_map_tbl implements Db_tbl { public void Upsert(int map_src, int map_trg, int map_sort) { Db_tbl__crud_.Upsert(conn, tbl_name, flds, String_.Ary(fld__map_src, fld__map_trg), map_src, map_trg, map_sort); } - public int Select_next_sort(int owner_id) { - Db_rdr rdr = conn.Stmt_select_max(tbl_name, fld__map_sort, fld__map_src).Crt_int(fld__map_src, owner_id).Exec_select__rls_auto(); + public int Select_sort_or_next(int src_id, int trg_id) { + // select map_sort by map_src,map_trg + Db_rdr rdr = conn.Stmt_select(tbl_name, flds, fld__map_src, fld__map_trg).Crt_int(fld__map_src, src_id).Crt_int(fld__map_trg, trg_id).Exec_select__rls_auto(); + try { + if (rdr.Move_next()) { + return rdr.Read_int(fld__map_sort); + } + } + finally {rdr.Rls();} + + // pairing doesn't exist; select max + rdr = conn.Stmt_select_max(tbl_name, fld__map_sort, fld__map_src).Crt_int(fld__map_src, src_id).Exec_select__rls_auto(); try { if (!rdr.Move_next()) return 0; Object max = rdr.Read_obj(fld__map_sort); diff --git a/400_xowa/src/gplx/xowa/addons/apps/cfgs/mgrs/types/Xocfg_type_mgr.java b/400_xowa/src/gplx/xowa/addons/apps/cfgs/mgrs/types/Xocfg_type_mgr.java index d1be289ee..e2bcf2c25 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/cfgs/mgrs/types/Xocfg_type_mgr.java +++ b/400_xowa/src/gplx/xowa/addons/apps/cfgs/mgrs/types/Xocfg_type_mgr.java @@ -23,7 +23,6 @@ public class Xocfg_type_mgr { this.Lists__add("list:xowa.app.startup.window.mode", "previous", "maximized", "absolute", "relative", "default"); this.Lists__add("list:xowa.app.startup.pages.type", "blank", "xowa", "previous", "custom"); this.Lists__add("list:xowa.gui.window.html_box.adj_type", "none", "relative", "absolute"); - this.Lists__add("list:xowa.wiki.dbs.html.basic.html_mode", Keyval_.new_("shown", "Shown"), Keyval_.new_("hdump_save", "Saved for HTML DB"), Keyval_.new_("hdump_load", "Loaded by HTML DB")); this.Lists__add("list:xowa.wiki.database.general.zip_mode", "text", "gzip", "bzip2", "xz"); this.Lists__add("list:xowa.html.wiki.portal.missing_class", Keyval_.new_("", "Show as blue link"), Keyval_.new_("new", "Show as red link"), Keyval_.new_("xowa_display_none", "Hide")); this.Lists__add("list:xowa.html.category.basic.missing_class", "normal", "hide", "red_link"); @@ -42,7 +41,8 @@ public class Xocfg_type_mgr { Lists__add(key, itms); } public void Lists__add(String key, Keyval... itms) { - list_hash.Add(key, itms); + if (!list_hash.Has(key)) // ignore multiple calls from Init_by_wiki; EX: Xow_hdump_mode + list_hash.Add(key, itms); } public Keyval[] Lists__get(String key) { return (Keyval[])list_hash.Get_by_or_fail(key); diff --git a/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/edits/objs/Xoedit_itm_html.java b/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/edits/objs/Xoedit_itm_html.java index e684a92b9..dc6666bc3 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/edits/objs/Xoedit_itm_html.java +++ b/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/edits/objs/Xoedit_itm_html.java @@ -39,8 +39,9 @@ public class Xoedit_itm_html { bfr.Add_str_u8_fmt(""); break; diff --git a/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/maints/services/Xocfg_maint_svc.java b/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/maints/services/Xocfg_maint_svc.java index 0e76869b0..6ce5a6f75 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/maints/services/Xocfg_maint_svc.java +++ b/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/maints/services/Xocfg_maint_svc.java @@ -51,12 +51,13 @@ public class Xocfg_maint_svc { } public static void Create_grp(Xocfg_db_app db_app, String key, String owner, String name, String help) { // insert grp_meta - int grp_id = db_app.Conn().Sys_mgr().Autonum_next("cfg_grp_meta.grp_id"); + Xocfg_grp_row grp = db_app.Tbl__grp().Select_by_key_or_null(key); + int grp_id = grp == null ? db_app.Conn().Sys_mgr().Autonum_next("cfg_grp_meta.grp_id") : grp.Id(); db_app.Tbl__grp().Upsert(grp_id, key); // insert grp_map int owner_id = String_.Len_eq_0(owner) ? Xocfg_grp_row.Id__root : db_app.Tbl__grp().Select_id_by_key_or_fail(owner); - int map_sort = db_app.Tbl__map().Select_next_sort(owner_id); + int map_sort = db_app.Tbl__map().Select_sort_or_next(owner_id, grp_id); db_app.Tbl__map().Upsert(owner_id, grp_id, map_sort); // insert nde_i18n @@ -73,7 +74,7 @@ public class Xocfg_maint_svc { db_app.Tbl__itm().Upsert(itm_id, scope_id, db_type, gui_type_id, gui_args, key, dflt); // insert grp_map - int itm_sort = db_app.Tbl__map().Select_next_sort(grp_id); + int itm_sort = db_app.Tbl__map().Select_sort_or_next(grp_id, itm_id); db_app.Tbl__map().Upsert(grp_id, itm_id, itm_sort); // insert nde_i18n diff --git a/400_xowa/src/gplx/xowa/apps/apis/Xoapi_root.java b/400_xowa/src/gplx/xowa/apps/apis/Xoapi_root.java index 9723c324e..0e6555e35 100644 --- a/400_xowa/src/gplx/xowa/apps/apis/Xoapi_root.java +++ b/400_xowa/src/gplx/xowa/apps/apis/Xoapi_root.java @@ -50,7 +50,6 @@ public class Xoapi_root implements Gfo_invk { public Xoapi_usr Usr() {return usr_api;} private final Xoapi_usr usr_api = new Xoapi_usr(); public Xoapi_special Special() {return special_api;} private final Xoapi_special special_api = new Xoapi_special(); public Xoapi_xtns Xtns() {return xtns_api;} private final Xoapi_xtns xtns_api = new Xoapi_xtns(); - public Xoapi_wiki Wiki() {return wiki;} private final Xoapi_wiki wiki = new Xoapi_wiki(); public Xoapi_app_wikis Wikis() {return app_wikis;} private final Xoapi_app_wikis app_wikis = new Xoapi_app_wikis(); public String Test_str() {return test_str;} public void Test_str_(String v) {test_str = v;} private String test_str; // TEST private void Exec(String key) { @@ -70,7 +69,6 @@ public class Xoapi_root implements Gfo_invk { else if (ctx.Match(k, Invk_special)) return special_api; else if (ctx.Match(k, Invk_xtns)) return xtns_api; else if (ctx.Match(k, Invk_exec)) Exec(m.ReadStr("v")); - else if (ctx.Match(k, Invk_wiki)) return wiki; else if (ctx.Match(k, Invk_wikis)) return app_wikis; else if (ctx.Match(k, Invk_test_str)) return test_str; else if (ctx.Match(k, Invk_test_str_)) test_str = m.ReadStr("v"); @@ -81,6 +79,6 @@ public class Xoapi_root implements Gfo_invk { , Invk_app = "app", Invk_addon = "addon" , Invk_bldr = "bldr", Invk_nav = "nav", Invk_gui = "gui", Invk_html = "html", Invk_net = "net", Invk_usr = "usr", Invk_special = "special", Invk_xtns = "xtns" , Invk_test_str = "test_str", Invk_test_str_ = "test_str_" - , Invk_wiki = "wiki", Invk_wikis = "wikis" + , Invk_wikis = "wikis" ; } diff --git a/400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_app_wiki.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_app_wiki.java index b0baa0e21..31085aed8 100644 --- a/400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_app_wiki.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_app_wiki.java @@ -19,13 +19,11 @@ package gplx.xowa.apps.apis.xowa; import gplx.*; import gplx.xowa.*; import gplx import gplx.xowa.apps.apis.xowa.wikis.*; public class Xoapi_app_wiki implements Gfo_invk { public Xoapi_wiki_lang Lang() {return lang;} private final Xoapi_wiki_lang lang = new Xoapi_wiki_lang(); - public Xoapi_hdump Hdump() {return hdump;} private final Xoapi_hdump hdump = new Xoapi_hdump(); public void Subscribe(Gfo_evt_itm sub) {lang.Subscribe(sub);} public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_lang)) return lang; - else if (ctx.Match(k, Invk_hdump)) return hdump; else return Gfo_invk_.Rv_unhandled; } - private static final String Invk_lang = "lang", Invk_hdump = "hdump"; + private static final String Invk_lang = "lang"; public static final Xoapi_app_wiki Dflt = new Xoapi_app_wiki(); } diff --git a/400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_wiki.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_wiki.java deleted file mode 100644 index 2a93ddf63..000000000 --- a/400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_wiki.java +++ /dev/null @@ -1,27 +0,0 @@ -/* -XOWA: the XOWA Offline Wiki Application -Copyright (C) 2012 gnosygnu@gmail.com - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU Affero General Public License as -published by the Free Software Foundation, either version 3 of the -License, or (at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU Affero General Public License for more details. - -You should have received a copy of the GNU Affero General Public License -along with this program. If not, see . -*/ -package gplx.xowa.apps.apis.xowa; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; -import gplx.xowa.apps.apis.xowa.wikis.*; -public class Xoapi_wiki implements Gfo_invk { - public Xoapi_hdump Hdump() {return hdump;} private final Xoapi_hdump hdump = new Xoapi_hdump(); - public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { - if (ctx.Match(k, Invk_hdump)) return hdump; - else return Gfo_invk_.Rv_unhandled; - } - private static final String Invk_hdump = "hdump"; -} diff --git a/400_xowa/src/gplx/xowa/apps/apis/xowa/wikis/Xoapi_hdump.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/wikis/Xoapi_hdump.java deleted file mode 100644 index 4c7c0df1e..000000000 --- a/400_xowa/src/gplx/xowa/apps/apis/xowa/wikis/Xoapi_hdump.java +++ /dev/null @@ -1,34 +0,0 @@ -/* -XOWA: the XOWA Offline Wiki Application -Copyright (C) 2012 gnosygnu@gmail.com - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU Affero General Public License as -published by the Free Software Foundation, either version 3 of the -License, or (at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU Affero General Public License for more details. - -You should have received a copy of the GNU Affero General Public License -along with this program. If not, see . -*/ -package gplx.xowa.apps.apis.xowa.wikis; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.*; -public class Xoapi_hdump implements Gfo_invk { - public boolean Read_preferred() {return read_preferred;} private boolean read_preferred = true; - public Hdump_html_mode Html_mode() {return html_mode;} private Hdump_html_mode html_mode = Hdump_html_mode.Shown; - public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { - if (ctx.Match(k, Invk__read_preferred)) return Yn.To_str(read_preferred); - else if (ctx.Match(k, Invk__read_preferred_)) read_preferred = m.ReadYn("v"); - else if (ctx.Match(k, Invk__html_mode)) return html_mode.Key(); - else if (ctx.Match(k, Invk__html_mode_)) html_mode = Hdump_html_mode.Parse(m.ReadStr("v")); - else if (ctx.Match(k, Invk__html_mode_list)) return Hdump_html_mode.Opt_list(); - return this; - } - private static final String - Invk__read_preferred = "read_preferred" , Invk__read_preferred_ = "read_preferred_" - , Invk__html_mode = "html_mode" , Invk__html_mode_ = "html_mode_", Invk__html_mode_list = "html_mode_list" - ; -} diff --git a/400_xowa/src/gplx/xowa/htmls/Xoh_page_wtr_wkr.java b/400_xowa/src/gplx/xowa/htmls/Xoh_page_wtr_wkr.java index 20ea00b2d..9abdb7191 100644 --- a/400_xowa/src/gplx/xowa/htmls/Xoh_page_wtr_wkr.java +++ b/400_xowa/src/gplx/xowa/htmls/Xoh_page_wtr_wkr.java @@ -48,7 +48,7 @@ public class Xoh_page_wtr_wkr { } Bry_bfr page_bfr = wiki.Utl__bfr_mkr().Get_m001(); // NOTE: get separate page rv to output page; do not reuse tmp_bfr b/c it will be used inside Fmt_do Xoh_wtr_ctx hctx = null; - if (page_mode == Xopg_page_.Tid_html && wiki.App().Api_root().Wiki().Hdump().Html_mode().Tid_is_hdump_save()) { + if (page_mode == Xopg_page_.Tid_html && wiki.Html__hdump_mgr().Load_mgr().Html_mode().Tid_is_hdump_save()) { hctx = Xoh_wtr_ctx.Hdump; Write_body(page_bfr, ctx, hctx, page); Write_page_by_tid(ctx, hctx, page_mode, rv, mgr.Page_html_fmtr(), Gfh_utl.Escape_html_as_bry(page_bfr.To_bry_and_clear())); diff --git a/400_xowa/src/gplx/xowa/htmls/core/Xow_hdump_mgr.java b/400_xowa/src/gplx/xowa/htmls/core/Xow_hdump_mgr.java index 5b09d880c..1d1f81030 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/Xow_hdump_mgr.java +++ b/400_xowa/src/gplx/xowa/htmls/core/Xow_hdump_mgr.java @@ -40,6 +40,7 @@ public class Xow_hdump_mgr { // mode_is_b256 = true; } Init_by_db(dflt_zip_tid, dflt_hzip_enable, mode_is_b256); + load_mgr.Init_by_wiki(wiki); } public void Init_by_db(byte dflt_zip_tid, boolean dflt_hzip_enable, boolean mode_is_b256) { int dflt_hzip_tid = dflt_hzip_enable ? Xoh_hzip_dict_.Hzip__v1 : Xoh_hzip_dict_.Hzip__none; diff --git a/400_xowa/src/gplx/xowa/htmls/core/Xow_hdump_mgr__load.java b/400_xowa/src/gplx/xowa/htmls/core/Xow_hdump_mgr__load.java index ac23068b9..2709c51e7 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/Xow_hdump_mgr__load.java +++ b/400_xowa/src/gplx/xowa/htmls/core/Xow_hdump_mgr__load.java @@ -21,7 +21,7 @@ import gplx.xowa.htmls.heads.*; import gplx.xowa.htmls.core.makes.*; import gplx import gplx.xowa.wikis.data.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.wikis.pages.*; import gplx.xowa.wikis.pages.skins.*; import gplx.xowa.wikis.pages.lnkis.*; import gplx.xowa.wikis.pages.htmls.*; import gplx.xowa.addons.wikis.ctgs.htmls.pageboxs.*; -public class Xow_hdump_mgr__load { +public class Xow_hdump_mgr__load implements Gfo_invk { private final Xow_wiki wiki; private final Xoh_hzip_mgr hzip_mgr; private final Io_stream_zip_mgr zip_mgr; private final Xoh_page tmp_hpg; private final Bry_bfr tmp_bfr; private final Xowd_page_itm tmp_dbpg = new Xowd_page_itm(); private Xow_override_mgr override_mgr__html, override_mgr__page; @@ -29,7 +29,14 @@ public class Xow_hdump_mgr__load { this.wiki = wiki; this.hzip_mgr = hzip_mgr; this.zip_mgr = zip_mgr; this.tmp_hpg = tmp_hpg; this.tmp_bfr = tmp_bfr; this.make_mgr = new Xoh_make_mgr(); } + public boolean Read_preferred() {return read_preferred;} private boolean read_preferred = true; + public Xow_hdump_mode Html_mode() {return html_mode;} private Xow_hdump_mode html_mode; public Xoh_make_mgr Make_mgr() {return make_mgr;} private final Xoh_make_mgr make_mgr; + public void Init_by_wiki(Xow_wiki wiki) { + gplx.xowa.addons.apps.cfgs.Xocfg_mgr cfg_mgr = wiki.App().Cfg(); + Xow_hdump_mode.Cfg__reg_type(cfg_mgr.Type_mgr()); + cfg_mgr.Bind_many_wiki(this, wiki, Cfg__read_preferred, Cfg__html_mode); + } public void Load_by_edit(Xoae_page wpg) { tmp_hpg.Ctor_by_hview(wpg.Wiki(), wpg.Url(), wpg.Ttl(), wpg.Db().Page().Id()); Load(tmp_hpg, wpg.Ttl()); @@ -128,6 +135,16 @@ public class Xow_hdump_mgr__load { trg_list.Add_direct(src_list.Get_at(i)); } } + public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { + if (ctx.Match(k, Cfg__read_preferred)) read_preferred = m.ReadYn("v"); + else if (ctx.Match(k, Cfg__html_mode)) html_mode = Xow_hdump_mode.Parse(m.ReadStr("v")); + return this; + } + private static final String + Cfg__read_preferred = "xowa.wiki.hdumps.read_preferred" + , Cfg__html_mode = "xowa.wiki.hdumps.html_mode" + ; + private static boolean Load__fail(Xoh_page hpg) {hpg.Db().Page().Exists_n_(); return false;} private static boolean Load__dbpg(Xow_wiki wiki, Xowd_page_itm dbpg, Xoh_page hpg, Xoa_ttl ttl) { wiki.Data__core_mgr().Tbl__page().Select_by_ttl(dbpg, ttl.Ns(), ttl.Page_db()); diff --git a/400_xowa/src/gplx/xowa/apps/apis/xowa/wikis/Hdump_html_mode.java b/400_xowa/src/gplx/xowa/htmls/core/Xow_hdump_mode.java similarity index 51% rename from 400_xowa/src/gplx/xowa/apps/apis/xowa/wikis/Hdump_html_mode.java rename to 400_xowa/src/gplx/xowa/htmls/core/Xow_hdump_mode.java index 4c2257ce7..07e12cc80 100644 --- a/400_xowa/src/gplx/xowa/apps/apis/xowa/wikis/Hdump_html_mode.java +++ b/400_xowa/src/gplx/xowa/htmls/core/Xow_hdump_mode.java @@ -15,27 +15,29 @@ GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ -package gplx.xowa.apps.apis.xowa.wikis; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.*; -public class Hdump_html_mode { - public Hdump_html_mode(int tid, String key, String gui) { - this.tid = (byte)tid; this.key = key; this.gui = gui; +package gplx.xowa.htmls.core; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; +public class Xow_hdump_mode { + private final int tid; + private final String key; + private final String gui; + + public Xow_hdump_mode(int tid, String key, String gui) { + this.tid = tid; this.key = key; this.gui = gui; } - public byte Tid() {return tid;} private final byte tid; - public String Key() {return key;} private final String key; - public String Gui() {return gui;} private final String gui; - public Keyval Opt() {return Keyval_.new_(key, gui);} public boolean Tid_is_hdump_save() {return tid == Hdump_save.tid;} - public static final Hdump_html_mode - Shown = new Hdump_html_mode(0, "shown" , "Shown") - , Hdump_save = new Hdump_html_mode(1, "hdump_save" , "Saved for HTML DB") - , Hdump_load = new Hdump_html_mode(2, "hdump_load" , "Loaded by HTML DB") - ; - public static Hdump_html_mode Parse(String v) { + private static final Xow_hdump_mode + Shown = new Xow_hdump_mode(0, "shown" , "Shown") + , Hdump_save = new Xow_hdump_mode(1, "hdump_save" , "Saved for HTML DB") + , Hdump_load = new Xow_hdump_mode(2, "hdump_load" , "Loaded by HTML DB"); + public static void Cfg__reg_type(gplx.xowa.addons.apps.cfgs.mgrs.types.Xocfg_type_mgr type_mgr) { + type_mgr.Lists__add("list:xowa.wiki.hdumps.html_mode", To_kv(Shown), To_kv(Hdump_save), To_kv(Hdump_load)); + } + private static Keyval To_kv(Xow_hdump_mode mode) {return Keyval_.new_(mode.key, mode.gui);} + public static Xow_hdump_mode Parse(String v) { if (String_.Eq(v, Shown.key)) return Shown; else if (String_.Eq(v, Hdump_save.key)) return Hdump_save; else if (String_.Eq(v, Hdump_load.key)) return Hdump_load; else throw Err_.new_unhandled(v); } - public static Keyval[] Opt_list() {return new Keyval[] {Shown.Opt(), Hdump_save.Opt()};} } 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 4c8c0d81b..c18ba4d49 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 @@ -36,8 +36,9 @@ public class Xowe_page_mgr { // load page from html_db boolean from_html_db = page.Db().Page().Html_db_id() != -1; + boolean read_from_html_db_preferred = wiki.Html__hdump_mgr().Load_mgr().Read_preferred(); if (from_html_db) { - if (wiki.Appe().Api_root().Wiki().Hdump().Read_preferred()) { + if (read_from_html_db_preferred) { wiki.Html__hdump_mgr().Load_mgr().Load_by_edit(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 } @@ -52,7 +53,7 @@ public class Xowe_page_mgr { // load from html_dbs if no wtxt found and option just marked as not read_preferred if ( Bry_.Len_eq_0(page.Db().Text().Text_bry()) // no wtxt found && !ttl.Ns().Id_is_special() // skip special - && !wiki.Appe().Api_root().Wiki().Hdump().Read_preferred() // read preferred not marked + && !read_from_html_db_preferred // read preferred not marked ) { wiki.Html__hdump_mgr().Load_mgr().Load_by_edit(page); from_html_db = Bry_.Len_gt_0(page.Db().Html().Html_bry());