From d35adffa313eeb9876665eea7b68aa6de87ab403 Mon Sep 17 00:00:00 2001 From: gnosygnu Date: Sun, 8 Jul 2018 09:26:23 -0400 Subject: [PATCH] Wikibase: Fix import failing due to NPE on wbase_db --- 400_xowa/src/gplx/xowa/bldrs/Xob_cmd_mgr.java | 3 ++- .../xtns/wbases/imports/Xob_wdata_pid_sql.java | 7 +++++-- .../wbases/imports/Xob_wdata_pid_sql_tst.java | 2 +- .../xtns/wbases/imports/Xob_wdata_qid_sql.java | 17 ++++++++++------- .../wbases/imports/json/Xowb_json_dump_db.java | 2 +- 5 files changed, 19 insertions(+), 12 deletions(-) diff --git a/400_xowa/src/gplx/xowa/bldrs/Xob_cmd_mgr.java b/400_xowa/src/gplx/xowa/bldrs/Xob_cmd_mgr.java index 5af1a5cb2..ee7069999 100644 --- a/400_xowa/src/gplx/xowa/bldrs/Xob_cmd_mgr.java +++ b/400_xowa/src/gplx/xowa/bldrs/Xob_cmd_mgr.java @@ -16,6 +16,7 @@ Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt package gplx.xowa.bldrs; import gplx.*; import gplx.xowa.*; import gplx.core.primitives.*; import gplx.xowa.wikis.*; import gplx.xowa.xtns.wbases.imports.*; +import gplx.xowa.wikis.data.*; import gplx.xowa.bldrs.wkrs.*; import gplx.xowa.bldrs.cmds.texts.*; import gplx.xowa.bldrs.cmds.texts.sqls.*; import gplx.xowa.bldrs.cmds.texts.tdbs.*; import gplx.xowa.addons.bldrs.files.*; import gplx.xowa.addons.wikis.ctgs.bldrs.*; import gplx.xowa.bldrs.cmds.utils.*; import gplx.xowa.bldrs.cmds.diffs.*; import gplx.xowa.files.origs.*; import gplx.xowa.htmls.core.bldrs.*; @@ -49,7 +50,7 @@ public class Xob_cmd_mgr implements Gfo_invk { else if (String_.Eq(cmd_key, Xob_cmd_keys.Key_util_download)) return Add(new Xob_download_cmd(bldr, wiki)); else if (String_.Eq(cmd_key, Xob_cmd_keys.Key_util_xml_dump)) return Add(new Xob_xml_dumper_cmd(bldr, wiki)); else if (String_.Eq(cmd_key, Xob_cmd_keys.Key_wbase_qid)) return Xml_rdr_direct_add(wiki, new Xob_wdata_qid_sql().Ctor(bldr, wiki)); - else if (String_.Eq(cmd_key, Xob_cmd_keys.Key_wbase_pid)) return Xml_rdr_direct_add(wiki, new Xob_wdata_pid_sql(wiki.Data__core_mgr().Db__wbase().Conn()).Ctor(bldr, wiki)); + else if (String_.Eq(cmd_key, Xob_cmd_keys.Key_wbase_pid)) return Xml_rdr_direct_add(wiki, new Xob_wdata_pid_sql(null, wiki).Ctor(bldr, wiki)); else if (String_.Eq(cmd_key, Xob_cmd_keys.Key_wbase_db)) return Add(new Xob_wdata_db_cmd(bldr, wiki)); else if (String_.Eq(cmd_key, Xob_cmd_keys.Key_site_meta)) return Add(new Xob_site_meta_cmd(bldr, wiki)); diff --git a/400_xowa/src/gplx/xowa/xtns/wbases/imports/Xob_wdata_pid_sql.java b/400_xowa/src/gplx/xowa/xtns/wbases/imports/Xob_wdata_pid_sql.java index 079b72f0c..996f42a3c 100644 --- a/400_xowa/src/gplx/xowa/xtns/wbases/imports/Xob_wdata_pid_sql.java +++ b/400_xowa/src/gplx/xowa/xtns/wbases/imports/Xob_wdata_pid_sql.java @@ -17,15 +17,18 @@ package gplx.xowa.xtns.wbases.imports; import gplx.*; import gplx.xowa.*; import import gplx.xowa.wikis.data.*; import gplx.dbs.*; import gplx.xowa.wikis.dbs.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.xtns.wbases.dbs.*; import gplx.xowa.xtns.wbases.claims.enums.*; public class Xob_wdata_pid_sql extends Xob_wdata_pid_base { - private final Db_conn conn; + private Db_conn conn; private Wbase_pid_tbl tbl__pid; private Xowb_prop_tbl tbl__prop; private final Ordered_hash datatype_hash = Ordered_hash_.New_bry(); - public Xob_wdata_pid_sql(Db_conn conn) { + public Xob_wdata_pid_sql(Db_conn conn, Xowe_wiki wiki) { this.conn = conn; + this.wiki = wiki; } @Override public String Page_wkr__key() {return gplx.xowa.bldrs.Xob_cmd_keys.Key_wbase_pid;} @Override public void Pid_bgn() { + if (conn == null) + conn = wiki.Data__core_mgr().Db__wbase().Conn(); // init datatype_hash Wbase_enum_hash enum_hash = Wbase_claim_type_.Reg; byte len = (byte)enum_hash.Len(); diff --git a/400_xowa/src/gplx/xowa/xtns/wbases/imports/Xob_wdata_pid_sql_tst.java b/400_xowa/src/gplx/xowa/xtns/wbases/imports/Xob_wdata_pid_sql_tst.java index ad4263d55..dbb9eb97d 100644 --- a/400_xowa/src/gplx/xowa/xtns/wbases/imports/Xob_wdata_pid_sql_tst.java +++ b/400_xowa/src/gplx/xowa/xtns/wbases/imports/Xob_wdata_pid_sql_tst.java @@ -31,7 +31,7 @@ public class Xob_wdata_pid_sql_tst { @Test public void Basic() { fxt.Wiki().Ns_mgr().Add_new(Wdata_wiki_mgr.Ns_property, "Property"); - Xob_wdata_pid_sql wkr = new Xob_wdata_pid_sql(conn); + Xob_wdata_pid_sql wkr = new Xob_wdata_pid_sql(conn, null); wkr.Ctor(fxt.Bldr(), fxt.Wiki()); fxt.Run_page_wkr(wkr diff --git a/400_xowa/src/gplx/xowa/xtns/wbases/imports/Xob_wdata_qid_sql.java b/400_xowa/src/gplx/xowa/xtns/wbases/imports/Xob_wdata_qid_sql.java index 3e0e86a53..a28448141 100644 --- a/400_xowa/src/gplx/xowa/xtns/wbases/imports/Xob_wdata_qid_sql.java +++ b/400_xowa/src/gplx/xowa/xtns/wbases/imports/Xob_wdata_qid_sql.java @@ -20,13 +20,7 @@ public class Xob_wdata_qid_sql extends Xob_wdata_qid_base { private Wbase_qid_tbl tbl; @Override public String Page_wkr__key() {return gplx.xowa.bldrs.Xob_cmd_keys.Key_wbase_qid;} @Override public void Qid_bgn() { - Xow_db_mgr db_mgr = wiki.Db_mgr_as_sql().Core_data_mgr(); - boolean db_is_all_or_few = db_mgr.Props().Layout_text().Tid_is_all_or_few(); - Xow_db_file wbase_db = db_is_all_or_few - ? db_mgr.Db__core() - : db_mgr.Dbs__make_by_tid(Xow_db_file_.Tid__wbase); - if (db_is_all_or_few) - db_mgr.Db__wbase_(wbase_db); + Xow_db_file wbase_db = Make_wbase_db(wiki.Db_mgr_as_sql().Core_data_mgr()); tbl = Wbase_qid_tbl.New_make(wbase_db.Conn(), false); tbl.Create_tbl(); tbl.Insert_bgn(); @@ -38,4 +32,13 @@ public class Xob_wdata_qid_sql extends Xob_wdata_qid_base { tbl.Insert_end(); tbl.Create_idx(); } + public static Xow_db_file Make_wbase_db(Xow_db_mgr db_mgr) { + boolean db_is_all_or_few = db_mgr.Props().Layout_text().Tid_is_all_or_few(); + Xow_db_file wbase_db = db_is_all_or_few + ? db_mgr.Db__core() + : db_mgr.Dbs__make_by_tid(Xow_db_file_.Tid__wbase); + if (db_is_all_or_few) + db_mgr.Db__wbase_(wbase_db); + return wbase_db; + } } diff --git a/400_xowa/src/gplx/xowa/xtns/wbases/imports/json/Xowb_json_dump_db.java b/400_xowa/src/gplx/xowa/xtns/wbases/imports/json/Xowb_json_dump_db.java index d2b540fb7..a18e277c8 100644 --- a/400_xowa/src/gplx/xowa/xtns/wbases/imports/json/Xowb_json_dump_db.java +++ b/400_xowa/src/gplx/xowa/xtns/wbases/imports/json/Xowb_json_dump_db.java @@ -32,7 +32,7 @@ class Xowb_json_dump_db { this.app = bldr.App(); this.usr_dlg = app.Usr_dlg(); this.wiki = wiki; this.bldr = bldr; this.json_parser = bldr.App().Wiki_mgr().Wdata_mgr().Jdoc_parser(); this.ns_mgr = wiki.Ns_mgr(); - this.pid_cmd = new Xob_wdata_pid_sql(wiki.Data__core_mgr().Db__wbase().Conn()); + this.pid_cmd = new Xob_wdata_pid_sql(wiki.Data__core_mgr().Db__wbase().Conn(), null); } public void Parse_all_bgn(long src_fil_len, String src_fil_name) { // load wiki