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

Wiki.Dom: Remove wiki dependency from db_mgr

This commit is contained in:
gnosygnu 2017-02-18 10:37:40 -05:00
parent 4ec913b807
commit 1188122823
6 changed files with 38 additions and 12 deletions

View File

@ -181,7 +181,7 @@ public class Xowe_wiki implements Xow_wiki, Gfo_invk, Gfo_evt_itm {
}
else {
Xodb_mgr_sql db_mgr_sql = this.Db_mgr_create_as_sql();
db_mgr_sql.Core_data_mgr().Init_by_load(core_db_url);
Xow_db_mgr.Init_by_load(this, core_db_url);
file_mgr.Init_file_mgr_by_load(this);
db_mgr_sql.Core_data_mgr().Tbl__page().Flds__assert(); // NOTE: must go above html_mgr.Init_by_wiki b/c Page_load will be done via messages

View File

@ -82,5 +82,19 @@ public class Xow_wiki_factory {
// verify json
Xowdir_wiki_props_mgr core_db_props = Xowdir_wiki_props_mgr_.New_xowa(app, core_db_url);
core_db_props.Verify(Bool_.N, String_.new_u8(domain), core_db_url);
// check for page_ids < 1
// Xowd_page_tbl page_tbl = new Xowd_page_tbl(core_db_conn, Bool_.N);
// int[] page_ids = page_tbl.Select_invalid();
// int page_ids_len = page_ids.length;
// if (page_ids_len > 0) {
// int next_id = cfg_tbl.Select_int("db", "page.id_next");
// for (int i = 0; i < page_ids_len; i++) {
// int old_page_id = page_ids[i];
// int new_page_id = next_id + i;
// Xopg_db_mgr.Update_page_id(wiki, old_id, new_id);
// }
// cfg_tbl.Upsert_int("db", "page.id_next", next_id + page_ids_len);
// }
}
}

View File

@ -45,7 +45,13 @@ public abstract class Xob_dump_mgr_base extends Xob_itm_basic_base implements Xo
ctx = wiki.Parser_mgr().Ctx();
root = ctx.Tkn_mkr().Root(Bry_.Empty);
wiki.Init_assert(); // NOTE: must init wiki for db_mgr_as_sql
wiki.Db_mgr_as_sql().Core_data_mgr().Init_by_load(gplx.xowa.wikis.data.Xow_db_file__core_.Find_core_fil_or_null(wiki)); // NOTE: must reinit providers as previous steps may have rls'd (and left member variable conn which is closed)
// assert by calling Db_mgr_as_sql
wiki.Db_mgr_as_sql().Core_data_mgr();
// load db_mgr
Xow_db_mgr.Init_by_load(wiki, gplx.xowa.wikis.data.Xow_db_file__core_.Find_core_fil_or_null(wiki)); // NOTE: must reinit providers as previous steps may have rls'd (and left member variable conn which is closed)
wiki.File__orig_mgr().Wkrs__del(Xof_orig_wkr_.Tid_wmf_api);
db_fsys_mgr = wiki.Db_mgr_as_sql().Core_data_mgr();
db_ary = Xob_dump_mgr_base_.Init_text_files_ary(db_fsys_mgr);

View File

@ -94,8 +94,8 @@ public class Xowv_wiki implements Xow_wiki, Xow_ttl_parser, Gfo_invk {
if (!init_needed) return;
init_needed = false;
if (String_.Eq(domain_str, "xowa")) return; // HACK: ignore "xowa" for now; WHEN:converting xowa to sqlitedb
data_mgr__core_mgr = new Xow_db_mgr(this, fsys_mgr.Root_dir());
data_mgr__core_mgr.Init_by_load(gplx.xowa.wikis.data.Xow_db_file__core_.Find_core_fil_or_null(this));
data_mgr__core_mgr = new Xow_db_mgr(fsys_mgr.Root_dir(), this.domain_str);
Xow_db_mgr.Init_by_load(this, gplx.xowa.wikis.data.Xow_db_file__core_.Find_core_fil_or_null(this));
app.Html__css_installer().Install(this, Xowd_css_core_mgr.Key_mobile); // must init after data_mgr
this.db_core_mgr = Fsdb_db_mgr_.new_detect(this, fsys_mgr.Root_dir(), fsys_mgr.File_dir());
if (db_core_mgr == null) // no fsdb; occurs during merge; also, will be null for xowa_db; DATE:2016-05-31
@ -116,7 +116,7 @@ public class Xowv_wiki implements Xow_wiki, Xow_ttl_parser, Gfo_invk {
}
public void Init_by_wiki__force() {init_needed = true; Init_by_wiki();}
public void Init_by_make(Xowd_core_db_props props, gplx.xowa.bldrs.infos.Xob_info_session info_session) {
data_mgr__core_mgr = new Xow_db_mgr(this, fsys_mgr.Root_dir());
data_mgr__core_mgr = new Xow_db_mgr(fsys_mgr.Root_dir(), this.domain_str);
data_mgr__core_mgr.Init_by_make(props, info_session);
html__hdump_mgr.Init_by_db(this);
}

View File

@ -18,15 +18,14 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
package gplx.xowa.wikis.data; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*;
import gplx.dbs.*; import gplx.dbs.cfgs.*; import gplx.core.lists.hashs.*;
import gplx.xowa.wikis.dbs.*; import gplx.xowa.wikis.data.tbls.*;
import gplx.xowa.wikis.domains.*; import gplx.xowa.bldrs.infos.*;
import gplx.xowa.wikis.domains.*; import gplx.xowa.bldrs.infos.*; import gplx.xowa.wikis.metas.*;
public class Xow_db_mgr {
private final Ordered_hash hash_by_id = Ordered_hash_.New(); private final Xow_db_file_hash hash_by_tids = new Xow_db_file_hash();
private int db_id_next = 0;
private final Xow_wiki wiki; private final Io_url wiki_root_dir; private final String domain_str; // needed for generating new files; EX: en.wikipedia.org-text.ns.001.xowa
public Xow_db_mgr(Xow_wiki wiki, Io_url wiki_root_dir) {
this.wiki = wiki;
private final Io_url wiki_root_dir; private final String domain_str; // needed for generating new files; EX: en.wikipedia.org-text.ns.001.xowa
public Xow_db_mgr(Io_url wiki_root_dir, String domain_str) {
this.wiki_root_dir = wiki_root_dir;
this.domain_str = wiki.Domain_str();
this.domain_str = domain_str;
}
public Xowd_core_db_props Props() {return props;} private Xowd_core_db_props props = Xowd_core_db_props.Test;
public Db_cfg_tbl Tbl__cfg() {return db__core.Tbl__cfg();}
@ -45,7 +44,6 @@ public class Xow_db_mgr {
Db_conn core_conn = Db_conn_bldr.Instance.Get(core_url);
props = Xowd_core_db_props.Cfg_load(core_conn); // load props to get layout_text
Dbs__set_by_tid(Xow_db_file.Load(props, Xow_db_file_.Uid__core, Xow_db_file__core_.Core_db_tid(props.Layout_text()), core_url, Xob_info_file.Ns_ids_empty, Xob_info_file.Part_id_1st, Guid_adp_.Empty));
wiki.Props().Init_by_load(wiki.App(), Tbl__cfg()); // load Main_page
// load dbs from "xowa_db" tbl
Xow_db_file[] ary = db__core.Tbl__db().Select_all(props, core_url.OwnerDir());
@ -127,6 +125,8 @@ public class Xow_db_mgr {
db.Cmd_mode_(Db_cmd_mode.Tid_delete);
}
db__core.Tbl__db().Commit_all(this);
// call init again to regen list of dbs
this.Init_by_load(db__core.Url());
}
public void Create_page(Xowd_page_tbl core_tbl, Xowd_text_tbl text_tbl, int page_id, int ns_id, byte[] ttl_wo_ns, boolean redirect, DateAdp modified_on, byte[] text_zip_data, int text_raw_len, int random_int, int text_db_id, int html_db_id) {
@ -170,4 +170,10 @@ public class Xow_db_mgr {
}
return String_.Format("-{0}{1}.xowa", tid_name, tid_idx_str); // EX: en.wikipedia.org-text-001.sqlite3
}
// helper method for wikis to (a) init db_mgr; (b) load wiki.props; should probably be moved to more generic "wiki.Init_by_db()"
public static void Init_by_load(Xow_wiki wiki, Io_url core_url) {
wiki.Data__core_mgr().Init_by_load(core_url);
wiki.Props().Init_by_load(wiki.App(), wiki.Data__core_mgr().Tbl__cfg()); // load Main_page
}
}

View File

@ -22,7 +22,7 @@ import gplx.xowa.wikis.*; import gplx.xowa.wikis.data.*;
public class Xodb_mgr_sql implements Xodb_mgr, Gfo_invk {
public Xodb_mgr_sql(Xowe_wiki wiki) {
this.wiki = wiki;
this.core_data_mgr = new Xow_db_mgr(wiki, wiki.Fsys_mgr().Root_dir());
this.core_data_mgr = new Xow_db_mgr(wiki.Fsys_mgr().Root_dir(), wiki.Domain_str());
this.load_mgr = new Xodb_load_mgr_sql(this);
this.save_mgr = new Xodb_save_mgr_sql(this);
}