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

Wikibase: Fix import failing due to NPE on wbase_db

This commit is contained in:
gnosygnu 2018-07-08 09:26:23 -04:00
parent d98639c18a
commit d35adffa31
5 changed files with 19 additions and 12 deletions

View File

@ -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));

View File

@ -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();

View File

@ -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

View File

@ -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;
}
}

View File

@ -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