mirror of
https://github.com/gnosygnu/xowa.git
synced 2026-03-02 03:49:30 +00:00
v2.8.5.1
This commit is contained in:
@@ -32,6 +32,7 @@ public class Xob_cmd_keys {
|
||||
, Key_wiki_image = "wiki.image" // "wiki.image"
|
||||
, Key_wiki_page_dump_make = "wiki.page_dump.make" // "file.page_dump"
|
||||
, Key_wiki_page_dump_drop = "wiki.page_dump.drop"
|
||||
, Key_wiki_pagelink = "wiki.pagelink"
|
||||
, Key_file_lnki_temp = "file.lnki_temp"
|
||||
, Key_file_lnki_regy = "file.lnki_regy"
|
||||
, Key_file_page_regy = "file.page_regy"
|
||||
|
||||
@@ -41,6 +41,7 @@ public class Xob_cmd_mgr implements GfoInvkAble {
|
||||
else if (String_.Eq(cmd_key, Xob_cmd_keys.Key_wiki_page_dump_drop)) return Add(new Xob_page_dump_cmd_drop(bldr, wiki));
|
||||
else if (String_.Eq(cmd_key, Xob_cmd_keys.Key_wiki_redirect)) return Add(new Xob_redirect_cmd(bldr, wiki));
|
||||
else if (String_.Eq(cmd_key, Xob_cmd_keys.Key_wiki_image)) return Add(new Xob_image_cmd(bldr, wiki));
|
||||
else if (String_.Eq(cmd_key, Xob_cmd_keys.Key_wiki_pagelink)) return Add(new Xob_pagelinks_parser_cmd(bldr, wiki));
|
||||
else if (String_.Eq(cmd_key, Xob_cmd_keys.Key_file_lnki_temp)) return Add(new Xob_lnki_temp_wkr(bldr, wiki));
|
||||
else if (String_.Eq(cmd_key, Xob_cmd_keys.Key_file_lnki_regy)) return Add(new Xob_lnki_regy_cmd(bldr, wiki));
|
||||
else if (String_.Eq(cmd_key, Xob_cmd_keys.Key_file_page_regy)) return Add(new Xob_page_regy_cmd(bldr, wiki));
|
||||
|
||||
@@ -21,7 +21,7 @@ public class Aria2_lib_mgr implements GfoInvkAble {
|
||||
public ProcessAdp Lib() {return lib;} private ProcessAdp lib = new ProcessAdp();
|
||||
public void Init_by_app(Xoae_app app) {
|
||||
Xoa_fsys_eval cmd_eval = app.Url_cmd_eval();
|
||||
ProcessAdp.ini_(this, app.Usr_dlg(), lib, cmd_eval, ProcessAdp.Run_mode_sync_block, Int_.MaxValue
|
||||
ProcessAdp.ini_(this, app.Usr_dlg(), lib, cmd_eval, ProcessAdp.Run_mode_sync_block, Int_.Max_value
|
||||
, "~{<>bin_plat_dir<>}aria2" + Op_sys.Cur().Fsys_dir_spr_str() + "aria2c"
|
||||
, Lib_args_fmt
|
||||
, "wiki_abrv", "wiki_date", "wiki_type");
|
||||
|
||||
@@ -129,14 +129,14 @@ public class Xob_wiki_cfg_bldr_tst {
|
||||
String api = protocol + wiki + "/w/api.php?action=query&format=xml&meta=siteinfo&siprop=namespacealiases";
|
||||
String xml = String_.new_u8(Io_mgr.I.DownloadFil_args("", null).Trg_engine_key_(trg_engine_key).Exec_as_bry(api));
|
||||
if (xml == null) continue; // not found
|
||||
gplx.xmls.XmlDoc xdoc = gplx.xmls.XmlDoc_.parse_(xml);
|
||||
gplx.xmls.XmlDoc xdoc = gplx.xmls.XmlDoc_.parse(xml);
|
||||
gplx.xmls.XmlNde xnde = gplx.xmls.Xpath_.SelectFirst(xdoc.Root(), "query/namespacealiases");
|
||||
sb.Add("app.bldr.wiki_cfg_bldr.get('").Add(wiki).Add("').new_cmd_('wiki.ns_mgr.aliases', 'ns_mgr.add_alias_bulk(\"\n");
|
||||
int xndes_len = xnde.SubNdes().Count();
|
||||
for (int j = 0; j < xndes_len; j++) {
|
||||
gplx.xmls.XmlNde ns_nde = xnde.SubNdes().Get_at(j);
|
||||
if (!String_.Eq(ns_nde.Name(), "ns")) continue;
|
||||
int id = Int_.parse_(ns_nde.Atrs().FetchValOr("id", "-1"));
|
||||
int id = Int_.parse(ns_nde.Atrs().FetchValOr("id", "-1"));
|
||||
String name = String_.Replace(String_.Replace(ns_nde.Text_inner(), " ", "_"), "'", "''");
|
||||
sb.Add(Int_.Xto_str(id)).Add("|").Add(String_.Trim(name)).Add_char_nl();
|
||||
}
|
||||
|
||||
@@ -23,9 +23,9 @@ public abstract class Xob_dump_mgr_base extends Xob_itm_basic_base implements Xo
|
||||
private Xowd_db_mgr db_fsys_mgr; protected Xop_parser parser; protected Xop_ctx ctx; protected Xop_root_tkn root;
|
||||
private int[] ns_ary; private Xowd_db_file[] db_ary;
|
||||
private int ns_bgn = -1, db_bgn = -1, pg_bgn = -1;
|
||||
private int ns_end = -1, db_end = -1, pg_end = Int_.MaxValue;
|
||||
private int ns_end = -1, db_end = -1, pg_end = Int_.Max_value;
|
||||
private int commit_interval = 1000, progress_interval = 250, cleanup_interval = 2500, select_size = 10 * Io_mgr.Len_mb;
|
||||
private int exec_count, exec_count_max = Int_.MaxValue;
|
||||
private int exec_count, exec_count_max = Int_.Max_value;
|
||||
private boolean reset_db = false, exit_after_commit = false, exit_now = false;
|
||||
private boolean load_tmpls;
|
||||
private Xob_dump_bmk_mgr bmk_mgr = new Xob_dump_bmk_mgr();
|
||||
@@ -67,7 +67,7 @@ public abstract class Xob_dump_mgr_base extends Xob_itm_basic_base implements Xo
|
||||
private long time_bgn;
|
||||
public void Cmd_run() {Exec_ns_ary();}
|
||||
private void Exec_ns_ary() {
|
||||
if (pg_bgn == Int_.MaxValue) return;
|
||||
if (pg_bgn == Int_.Max_value) return;
|
||||
if (load_tmpls) Xob_dump_mgr_base_.Load_all_tmpls(usr_dlg, wiki, page_src);
|
||||
time_bgn = Env_.TickCount();
|
||||
Xob_dump_bmk dump_bmk = new Xob_dump_bmk();
|
||||
@@ -169,7 +169,7 @@ public abstract class Xob_dump_mgr_base extends Xob_itm_basic_base implements Xo
|
||||
public void Cmd_term() {}
|
||||
public void Cmd_end() {
|
||||
if (!exit_now)
|
||||
pg_bgn = Int_.MaxValue;
|
||||
pg_bgn = Int_.Max_value;
|
||||
Exec_commit(-1, -1, -1, Bry_.Empty);
|
||||
Exec_end_hook();
|
||||
Free();
|
||||
|
||||
@@ -18,13 +18,13 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
package gplx.xowa.bldrs.cmds.ctgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*;
|
||||
import gplx.core.flds.*; import gplx.ios.*; import gplx.xowa.ctgs.*; import gplx.xowa.tdbs.*;
|
||||
public class Xoctg_link_idx_wkr extends Xob_idx_base { // NOTE: similar functionality to Xob_make_cmd_site, but more complicated due to p,f,s; not inheriting
|
||||
Io_url src_link_dir; int make_fil_max = Int_.MinValue;
|
||||
Io_url src_link_dir; int make_fil_max = Int_.Min_value;
|
||||
public Xoctg_link_idx_wkr(Xob_bldr bldr, Xowe_wiki wiki) {this.Cmd_ctor(bldr, wiki);}
|
||||
@Override public String Cmd_key() {return Xob_cmd_keys.Key_tdb_ctg_link_idx;}
|
||||
@Override public void Cmd_bgn_hook() {
|
||||
this.fld_rdr = this.Fld_rdr();
|
||||
if (src_link_dir == null) src_link_dir = wiki.Fsys_mgr().Tmp_dir().GenSubDir_nest(Xob_cmd_keys.Key_tdb_text_cat_link, "make");
|
||||
if (make_fil_max == Int_.MinValue) make_fil_max = Io_mgr.Len_mb;
|
||||
if (make_fil_max == Int_.Min_value) make_fil_max = Io_mgr.Len_mb;
|
||||
make_link_mgr = new Xoctg_make_link_mgr(usr_dlg, make_fil_max, wiki.Tdb_fsys_mgr());
|
||||
make_main_mgr = new Xoctg_make_main_mgr(usr_dlg, make_fil_max, wiki.Tdb_fsys_mgr());
|
||||
Io_mgr.I.DeleteDirDeep_ary(make_link_mgr.Make_dir(), make_main_mgr.Make_dir());
|
||||
|
||||
@@ -38,7 +38,7 @@ class Xob_bin_db_itm {
|
||||
public static Xob_bin_db_itm new_v1(Fsm_bin_fil fil) {
|
||||
byte[] name = Bry_.new_u8(fil.Url_rel()); // EX: "fsdb.bin.0000.sqlite3"
|
||||
int ns_id = 0; // assume v1 dbs are all in main ns
|
||||
int pt_id = Bry_.To_int_or(name, 9 , 13, Int_.MinValue); if (pt_id == Int_.MinValue) throw Err_.new_wo_type("bin_db_itm.parse: invalid pt_id", "name", fil.Url_rel(), "conn", fil.Conn().Conn_info().Xto_raw());
|
||||
int pt_id = Bry_.To_int_or(name, 9 , 13, Int_.Min_value); if (pt_id == Int_.Min_value) throw Err_.new_wo_type("bin_db_itm.parse: invalid pt_id", "name", fil.Url_rel(), "conn", fil.Conn().Conn_info().Xto_raw());
|
||||
return new Xob_bin_db_itm(fil.Id(), fil.Url(), ns_id, pt_id);
|
||||
}
|
||||
public static Xob_bin_db_itm new_v2(Fsm_bin_fil fil) {
|
||||
@@ -50,8 +50,8 @@ class Xob_bin_db_itm {
|
||||
int ns_end = Bry_finder.Find_fwd(name, ns_end_tkn, ns_bgn); if (ns_end == Bry_finder.Not_found) throw Err_.new_wo_type("bin_db_itm.parse: invalid ns_end", "name", fil.Url_rel(), "conn", fil.Conn().Conn_info().Xto_raw());
|
||||
int pt_bgn = ns_end + ns_end_tkn_len;
|
||||
int pt_end = Bry_finder.Find_fwd(name, pt_end_tkn, pt_bgn); if (pt_end == Bry_finder.Not_found) throw Err_.new_wo_type("bin_db_itm.parse: invalid pt_end", "name", fil.Url_rel(), "conn", fil.Conn().Conn_info().Xto_raw());
|
||||
int ns_id = Bry_.To_int_or(name, ns_bgn, ns_end, Int_.MinValue); if (ns_id == Int_.MinValue) throw Err_.new_wo_type("bin_db_itm.parse: invalid ns_id", "name", fil.Url_rel(), "conn", fil.Conn().Conn_info().Xto_raw());
|
||||
int pt_id = Bry_.To_int_or(name, pt_bgn, pt_end, Int_.MinValue); if (pt_id == Int_.MinValue) throw Err_.new_wo_type("bin_db_itm.parse: invalid pt_id", "name", fil.Url_rel(), "conn", fil.Conn().Conn_info().Xto_raw());
|
||||
int ns_id = Bry_.To_int_or(name, ns_bgn, ns_end, Int_.Min_value); if (ns_id == Int_.Min_value) throw Err_.new_wo_type("bin_db_itm.parse: invalid ns_id", "name", fil.Url_rel(), "conn", fil.Conn().Conn_info().Xto_raw());
|
||||
int pt_id = Bry_.To_int_or(name, pt_bgn, pt_end, Int_.Min_value); if (pt_id == Int_.Min_value) throw Err_.new_wo_type("bin_db_itm.parse: invalid pt_id", "name", fil.Url_rel(), "conn", fil.Conn().Conn_info().Xto_raw());
|
||||
return new Xob_bin_db_itm(fil.Id(), fil.Url(), ns_id, pt_id);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -56,7 +56,7 @@ class Xob_diff_regy_sql_runner {
|
||||
this.url = url;
|
||||
String[] parts = String_.Split(url.NameOnly(), "-");
|
||||
wiki_domain = parts[0];
|
||||
fsdb_db_id = Int_.parse_(parts[1]);
|
||||
fsdb_db_id = Int_.parse(parts[1]);
|
||||
fsdb_db_tid = Fsdb_db_tid_.Xto_tid(parts[2]);
|
||||
}
|
||||
public void Run_sql(Xoae_app app) {
|
||||
|
||||
@@ -28,8 +28,8 @@ public class Xob_fsdb_make_cmd extends Xob_itm_basic_base implements Xob_cmd {
|
||||
private long download_size_max = Io_mgr.Len_mb_long * 5; private int[] download_keep_tier_ids = Int_.Ary(0);
|
||||
private Xobu_poll_mgr poll_mgr; private int poll_interval; private long time_bgn;
|
||||
private int select_interval = 2500, progress_interval = 1, commit_interval = 1, delete_interval = 5000;
|
||||
private boolean exec_done, resume_enabled; private int exec_count, exec_count_max = Int_.MaxValue, exec_fail, exec_fail_max = 10000; // 115 errors over 900k images
|
||||
private int tier_id_bmk = -1, tier_id_val = -1; private int page_id_bmk = -1, page_id_val = -1, page_id_end = Int_.MaxValue; private int lnki_id_bmk = -1, lnki_id_val = -1;
|
||||
private boolean exec_done, resume_enabled; private int exec_count, exec_count_max = Int_.Max_value, exec_fail, exec_fail_max = 10000; // 115 errors over 900k images
|
||||
private int tier_id_bmk = -1, tier_id_val = -1; private int page_id_bmk = -1, page_id_val = -1, page_id_end = Int_.Max_value; private int lnki_id_bmk = -1, lnki_id_val = -1;
|
||||
private boolean exit_after_commit, exit_now;
|
||||
public Xob_fsdb_make_cmd(Xob_bldr bldr, Xowe_wiki wiki) {
|
||||
this.Cmd_ctor(bldr, wiki);
|
||||
@@ -140,7 +140,7 @@ public class Xob_fsdb_make_cmd extends Xob_itm_basic_base implements Xob_cmd {
|
||||
}
|
||||
else {
|
||||
if (tier_id_bmk == -1) {
|
||||
tier_id_bmk = Int_.parse_(tier_id_str);
|
||||
tier_id_bmk = Int_.parse(tier_id_str);
|
||||
usr_dlg.Note_many("", "", "restoring from bmk: tier_id=~{0}", tier_id_bmk);
|
||||
}
|
||||
if (page_id_bmk == -1) {
|
||||
|
||||
@@ -63,6 +63,7 @@ public class Xob_lnki_temp_wkr extends Xob_dump_mgr_base implements Xopg_redlink
|
||||
gplx.xowa.Xop_xnde_wkr.Timeline_log_wkr = log_mgr.Make_wkr();
|
||||
gplx.xowa.xtns.scores.Score_xnde.Log_wkr = log_mgr.Make_wkr();
|
||||
gplx.xowa.xtns.hieros.Hiero_xnde.Log_wkr = log_mgr.Make_wkr();
|
||||
gplx.xowa.xtns.math.Math_nde.Log_wkr = log_mgr.Make_wkr();
|
||||
Xof_fsdb_mgr__sql trg_fsdb_mgr = new Xof_fsdb_mgr__sql();
|
||||
wiki.File__fsdb_mode().Tid_v2_bld_y_();
|
||||
Fsdb_db_mgr__v2 fsdb_core = Fsdb_db_mgr__v2_bldr.I.Get_or_make(wiki, Bool_.Y);
|
||||
@@ -84,7 +85,7 @@ public class Xob_lnki_temp_wkr extends Xob_dump_mgr_base implements Xopg_redlink
|
||||
log_mgr.Txn_bgn();
|
||||
}
|
||||
@Override public void Exec_pg_itm_hook(int ns_ord, Xow_ns ns, Xowd_page_itm db_page, byte[] page_src) {
|
||||
Xoa_ttl ttl = Xoa_ttl.parse_(wiki, ns.Gen_ttl(db_page.Ttl_page_db()));
|
||||
Xoa_ttl ttl = Xoa_ttl.parse(wiki, ns.Gen_ttl(db_page.Ttl_page_db()));
|
||||
byte[] ttl_bry = ttl.Page_db();
|
||||
byte page_tid = Xow_page_tid.Identify(wiki.Domain_tid(), ns.Id(), ttl_bry);
|
||||
if (page_tid != Xow_page_tid.Tid_wikitext) return; // ignore js, css, lua, json
|
||||
@@ -142,7 +143,7 @@ public class Xob_lnki_temp_wkr extends Xob_dump_mgr_base implements Xopg_redlink
|
||||
int lnki_page = lnki.Page();
|
||||
byte[] ttl_commons = Xto_commons(ns_file_is_case_match_all, commons_wiki, ttl);
|
||||
if ( Xof_lnki_page.Null_n(lnki_page) // page set
|
||||
&& Xof_lnki_time.Null_n(lnki_time)) // thumbtime set
|
||||
&& Xof_lnki_time.Null_n(lnki_time)) // thumbtime set
|
||||
usr_dlg.Warn_many("", "", "page and thumbtime both set; this may be an issue with fsdb: page=~{0} ttl=~{1}", ctx.Cur_page().Ttl().Page_db_as_str(), String_.new_u8(ttl));
|
||||
if (lnki.Ns_id() == Xow_ns_.Id_media)
|
||||
lnki_src_tid = Xob_lnki_src_tid.Tid_media;
|
||||
@@ -176,7 +177,7 @@ public class Xob_lnki_temp_wkr extends Xob_dump_mgr_base implements Xopg_redlink
|
||||
}
|
||||
public static byte[] Xto_commons(boolean ns_file_is_case_match_all, Xowe_wiki commons_wiki, byte[] ttl_bry) {
|
||||
if (!ns_file_is_case_match_all) return null; // return "" if wiki matches common
|
||||
Xoa_ttl ttl = Xoa_ttl.parse_(commons_wiki, Xow_ns_.Id_file, ttl_bry);
|
||||
Xoa_ttl ttl = Xoa_ttl.parse(commons_wiki, Xow_ns_.Id_file, ttl_bry);
|
||||
byte[] rv = ttl.Page_db();
|
||||
return Bry_.Eq(rv, ttl_bry) ? null : rv;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,72 @@
|
||||
/*
|
||||
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 <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package gplx.xowa.bldrs.cmds.texts.sqls; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*; import gplx.xowa.bldrs.cmds.texts.*;
|
||||
import gplx.dbs.*;
|
||||
import gplx.xowa.wikis.data.*; import gplx.xowa.wikis.data.tbls.*;
|
||||
public class Xob_pagelinks_parser_cmd extends Xob_sql_dump_base implements Sql_file_parser_cmd {
|
||||
private Db_conn core_conn;
|
||||
private Xowd_pagelinks_temp_tbl temp_tbl;
|
||||
public Xob_pagelinks_parser_cmd(Xob_bldr bldr, Xowe_wiki wiki) {this.Cmd_ctor(bldr, wiki); this.make_fil_len = Io_mgr.Len_mb;}
|
||||
@Override public String Sql_file_name() {return "pagelinks";}
|
||||
@Override public String Cmd_key() {return Xob_cmd_keys.Key_wiki_pagelink;}
|
||||
private static final byte Fld__pl_from = 0, Fld__pl_namespace = 1, Fld__pl_title = 2;
|
||||
private int tmp_src_id, tmp_trg_ns;
|
||||
private int rows = 0;
|
||||
@Override public void Cmd_bgn_hook(Xob_bldr bldr, Sql_file_parser parser) {
|
||||
parser.Fld_cmd_(this).Flds_req_idx_(4, 0, 1, 2);
|
||||
wiki.Init_assert();
|
||||
Xowd_db_file core_db = wiki.Data__core_mgr().Db__core();
|
||||
this.core_conn = core_db.Conn();
|
||||
this.temp_tbl = new Xowd_pagelinks_temp_tbl(core_conn);
|
||||
core_conn.Ddl_delete_tbl(temp_tbl.Tbl_name());
|
||||
temp_tbl.Create_tbl();
|
||||
temp_tbl.Insert_bgn();
|
||||
}
|
||||
@Override public void Cmd_end() {
|
||||
temp_tbl.Insert_end();
|
||||
temp_tbl.Create_idx();
|
||||
Xowd_pagelinks_tbl actl_tbl = new Xowd_pagelinks_tbl(core_conn);
|
||||
core_conn.Ddl_delete_tbl(actl_tbl.Tbl_name());
|
||||
actl_tbl.Create_tbl();
|
||||
core_conn.Exec_sql(Sql__pagelinks__make);
|
||||
core_conn.Ddl_delete_tbl(temp_tbl.Tbl_name());
|
||||
actl_tbl.Create_idx__src_trg();
|
||||
actl_tbl.Create_idx__trg_src();
|
||||
core_conn.Env_vacuum();
|
||||
}
|
||||
public void Exec(byte[] src, byte[] fld_key, int fld_idx, int fld_bgn, int fld_end, Bry_bfr file_bfr, Sql_file_parser_data data) {
|
||||
switch (fld_idx) {
|
||||
case Fld__pl_from: this.tmp_src_id = Bry_.To_int_or(src, fld_bgn, fld_end, -1); break;
|
||||
case Fld__pl_namespace: this.tmp_trg_ns = Bry_.To_int_or(src, fld_bgn, fld_end, -1); break;
|
||||
case Fld__pl_title:
|
||||
byte[] tmp_trg_ttl = Bry_.Mid(src, fld_bgn, fld_end);
|
||||
temp_tbl.Insert(tmp_src_id, tmp_trg_ns, tmp_trg_ttl);
|
||||
if (++rows % 100000 == 0) usr_dlg.Prog_many("", "", "reading row ~{0}", Int_.Xto_str_fmt(rows, "#,##0"));
|
||||
break;
|
||||
}
|
||||
}
|
||||
private static final String Sql__pagelinks__make = String_.Concat_lines_nl_skip_last
|
||||
( "INSERT INTO pagelinks (src_id, trg_id, trg_count)"
|
||||
, "SELECT pl.src_id"
|
||||
, ", p.page_id"
|
||||
, ", Count(p.page_id)"
|
||||
, "FROM pagelinks_temp pl"
|
||||
, " JOIN page p ON pl.trg_ns = p.page_namespace AND pl.trg_ttl = p.page_title"
|
||||
, "GROUP BY pl.src_id, p.page_id"
|
||||
);
|
||||
}
|
||||
@@ -0,0 +1,61 @@
|
||||
/*
|
||||
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 <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package gplx.xowa.bldrs.cmds.texts.sqls; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*; import gplx.xowa.bldrs.cmds.texts.*;
|
||||
import org.junit.*;
|
||||
// public class Xob_pagelinks_parser_tst {
|
||||
// @Before public void init() {if (Xoa_test_.Db_skip()) return; fxt.Ctor_fsys();} Db_mgr_fxt fxt = new Db_mgr_fxt();
|
||||
// @After public void term() {if (Xoa_test_.Db_skip()) return; fxt.Rls();}
|
||||
// @Test public void Basic() {
|
||||
// if (Xoa_test_.Db_skip()) return;
|
||||
// fxt.Init_db_sqlite();
|
||||
// fxt.Wiki().Db_mgr_as_sql().Core_data_mgr().Db__cat_core().Tbl__cat_core().Create_tbl();
|
||||
// Init_ctgs(1, 2, 3);
|
||||
// Io_url page_props_url = Xoa_test_.Url_root().GenSubFil_nest("root", "wiki", "en.wikipedia.org", "page_props.sql");
|
||||
// fxt .Init_fil(page_props_url, String_.Concat
|
||||
// ( "INSERT INTO `page_props` VALUES"
|
||||
// , " (1,'hiddencat','')"
|
||||
// , ",(2,'pageimage','A.png')"
|
||||
// , ",(3,'hiddencat','')"
|
||||
// , ";"
|
||||
// ))
|
||||
// .Exec_run(new Xoctg_hiddencat_parser_sql(fxt.Bldr(), fxt.Wiki()))
|
||||
// ;
|
||||
// Tst_ctg_hidden(Bool_.Y, 1, 3);
|
||||
// Tst_ctg_hidden(Bool_.N, 2);
|
||||
// }
|
||||
// private void Init_ctgs(params int[] ctgs) {
|
||||
// int len = ctgs.length;
|
||||
// Xowd_cat_core_tbl tbl = fxt.Wiki().Db_mgr_as_sql().Core_data_mgr().Db__cat_core().Tbl__cat_core().Create_tbl();
|
||||
// tbl.Insert_bgn();
|
||||
// try {
|
||||
// for (int i = 0; i < len; i++) {
|
||||
// int ctg_id = ctgs[i];
|
||||
// tbl.Insert_cmd_by_batch(ctg_id, 0, 0, 0, Bool_.N_byte, 0);
|
||||
// }
|
||||
// } finally {tbl.Insert_end();}
|
||||
// }
|
||||
// private void Tst_ctg_hidden(boolean expd_hidden, params int[] ctgs) {
|
||||
// int len = ctgs.length;
|
||||
// Xowd_cat_core_tbl tbl = fxt.Wiki().Db_mgr_as_sql().Core_data_mgr().Db__cat_core().Tbl__cat_core();
|
||||
// for (int i = 0; i < len; i++) {
|
||||
// int ctg_id = ctgs[i];
|
||||
// Xowd_category_itm ctg_itm = tbl.Select(ctg_id);
|
||||
// Tfds.Eq(expd_hidden, ctg_itm.Hidden(), Int_.Xto_str(ctg_id));
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
@@ -79,7 +79,7 @@ public class Xob_cleanup_cmd extends Xob_itm_basic_base implements Xob_cmd {
|
||||
Criteria_ioMatch[] rv = new Criteria_ioMatch[match_ary_len];
|
||||
for (int i = 0; i < rv.length; i++) {
|
||||
String match = match_ary[i];
|
||||
rv[i] = Criteria_ioMatch.parse_(true, match, false);
|
||||
rv[i] = Criteria_ioMatch.parse(true, match, false);
|
||||
}
|
||||
return rv;
|
||||
}
|
||||
|
||||
@@ -34,7 +34,7 @@ public class Xob_deploy_zip_cmd extends Xob_itm_basic_base implements Xob_cmd {
|
||||
for (Io_url ns_dir : ns_dirs) {
|
||||
Log("zipping dir: ~{0}", ns_dir.Raw());
|
||||
String ns_num = ns_dir.NameOnly();
|
||||
Xow_ns ns_itm = wiki.Ns_mgr().Ids_get_or_null(Int_.parse_(ns_num));
|
||||
Xow_ns ns_itm = wiki.Ns_mgr().Ids_get_or_null(Int_.parse(ns_num));
|
||||
Zip_ns(bldr, ns_dir, type_name, ns_itm.Name_str());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -28,7 +28,7 @@ public class Xob_site_meta_cmd implements Xob_cmd {
|
||||
if (wikis == null) wikis = Xow_wmf_api_mgr.Wikis;
|
||||
if (db_url == null) db_url = bldr.App().Fsys_mgr().Cfg_site_meta_fil();
|
||||
if (cutoff_time == null) cutoff_time = DateAdp_.Now().Add_day(-1);
|
||||
Site_meta_itm.Build_site_meta(bldr.App().Wmf_mgr(), db_url, wikis, cutoff_time);
|
||||
Site_meta_itm.Build_site_meta(bldr.App().Utl__json_parser(), bldr.App().Wmf_mgr(), db_url, wikis, cutoff_time);
|
||||
}
|
||||
public void Cmd_init(Xob_bldr bldr) {}
|
||||
public void Cmd_bgn(Xob_bldr bldr) {}
|
||||
|
||||
@@ -116,7 +116,7 @@ public class Dg_match_mgr {
|
||||
int rule_score = rule_tally.Rule().Score();
|
||||
int rule_score_total = rule_score * min_results;
|
||||
if (log_enabled) log_mgr.Insert_page_rule(log_tid, page_id, rule_tally.Rule().Id(), rule_score_total);
|
||||
if (rule_score == Dg_rule.Score_banned) {score_cur = Int_.MaxValue; break;}
|
||||
if (rule_score == Dg_rule.Score_banned) {score_cur = Int_.Max_value; break;}
|
||||
score_cur += rule_score_total;
|
||||
++rule_match_count;
|
||||
}
|
||||
@@ -154,7 +154,7 @@ class Dg_rule_tally {
|
||||
results[idx_val] = results[idx_val] + 1;
|
||||
}
|
||||
public int Results_pass_count() {
|
||||
int rv = Int_.MaxValue;
|
||||
int rv = Int_.Max_value;
|
||||
for (int i = 0; i < results_len; ++i) {
|
||||
int result = results[i];
|
||||
if (rv > result) rv = result;
|
||||
|
||||
@@ -71,8 +71,8 @@ class Dg_parser {
|
||||
if (src[brack_bgn] != Byte_ascii.Lt) {Warn("dg.invalid_line.wrong_term_dlm", rel_path, line_idx, src, line_bgn, line_end); break;}
|
||||
brack_end = Bry_finder.Find_fwd(src, Byte_ascii.Gt, brack_bgn);
|
||||
if (brack_end == Bry_finder.Not_found) {Warn("dg.invalid_line.score not found", rel_path, line_idx, src, line_bgn, line_end); break;}
|
||||
int parse_score = Bry_.To_int_or(src, brack_bgn + 1, brack_end, Int_.MinValue);
|
||||
if (parse_score == Int_.MinValue) {Warn("dg.invalid_line.score is invalid", rel_path, line_idx, src, line_bgn, line_end); break;}
|
||||
int parse_score = Bry_.To_int_or(src, brack_bgn + 1, brack_end, Int_.Min_value);
|
||||
if (parse_score == Int_.Min_value) {Warn("dg.invalid_line.score is invalid", rel_path, line_idx, src, line_bgn, line_end); break;}
|
||||
score = parse_score;
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -27,12 +27,12 @@ abstract class Json_itm_wkr__base implements Json_itm_wkr {
|
||||
List_adp tmp_list = List_adp_.new_(); Byte_obj_ref tmp_result = Byte_obj_ref.zero_(); Bry_bfr tmp_bfr = Bry_bfr.reset_(16);
|
||||
Json_doc jdoc = json_parser.Parse(src);
|
||||
this.Exec_bgn();
|
||||
Json_nde root = jdoc.Root();
|
||||
Json_nde root = jdoc.Root_nde();
|
||||
int subs_len = root.Len();
|
||||
for (int i = 0; i < subs_len; ++i) {
|
||||
Json_itm itm = root.Get_at(i);
|
||||
switch (itm.Tid()) {
|
||||
case Json_itm_.Tid_kv:
|
||||
case Json_itm_.Tid__kv:
|
||||
Json_kv kv = (Json_kv)itm;
|
||||
if (kv.Key().Data_eq(Name_metadata)) continue; // ignore @metadata node
|
||||
byte[] kv_key = kv.Key().Data_bry();
|
||||
|
||||
@@ -254,8 +254,8 @@ public class Xol_mw_lang_parser {
|
||||
int kv_ary_len = kv_ary.Subs_len();
|
||||
boolean case_match = false; // if 1 arg, default to false
|
||||
int kv_ary_bgn = 0; int words_len = kv_ary_len; // if 1 arg, default to entire kv_ary; words_len
|
||||
int case_match_int = Php_itm_.Parse_int_or(kv_ary.Subs_get(0), Int_.MinValue);
|
||||
if (case_match_int != Int_.MinValue) {
|
||||
int case_match_int = Php_itm_.Parse_int_or(kv_ary.Subs_get(0), Int_.Min_value);
|
||||
if (case_match_int != Int_.Min_value) {
|
||||
case_match = Parse_int_as_bool(kv_ary.Subs_get(0)); // arg[0] is case_match
|
||||
kv_ary_bgn = 1; // arg[1] is 1st word
|
||||
words_len = kv_ary_len - 1; // words.len = kv_len - 1 (skip case_match
|
||||
@@ -291,8 +291,8 @@ public class Xol_mw_lang_parser {
|
||||
}
|
||||
}
|
||||
private boolean Parse_int_as_bool(Php_itm itm) {
|
||||
int rv = Php_itm_.Parse_int_or(itm, Int_.MinValue);
|
||||
if (rv == Int_.MinValue) throw Err_.new_wo_type("value must be 0 or 1", "val", String_.new_u8(itm.Val_obj_bry()));
|
||||
int rv = Php_itm_.Parse_int_or(itm, Int_.Min_value);
|
||||
if (rv == Int_.Min_value) throw Err_.new_wo_type("value must be 0 or 1", "val", String_.new_u8(itm.Val_obj_bry()));
|
||||
return rv == 1;
|
||||
}
|
||||
private void Parse_separatorTransformTable(Php_line_assign line, Xol_num_mgr num_mgr) {
|
||||
|
||||
@@ -19,12 +19,12 @@ package gplx.xowa.bldrs.syncs; import gplx.*; import gplx.xowa.*; import gplx.xo
|
||||
import gplx.ios.*;
|
||||
class Xob_sync_grp {
|
||||
private final Ordered_hash itms = Ordered_hash_.new_();
|
||||
public Xob_sync_grp Ctor_itm(DateAdp upload_time, DateAdp related_time) {
|
||||
this.upload_time = upload_time; this.related_time = related_time;
|
||||
public Xob_sync_grp Ctor_itm(DateAdp dump_time, DateAdp upload_time) {
|
||||
this.dump_time = dump_time; this.upload_time = upload_time;
|
||||
return this;
|
||||
}
|
||||
public DateAdp Dump_time() {return dump_time;} private DateAdp dump_time;
|
||||
public DateAdp Upload_time() {return upload_time;} private DateAdp upload_time;
|
||||
public DateAdp Related_time() {return related_time;} private DateAdp related_time;
|
||||
public int Itms__len() {return itms.Count();}
|
||||
public void Itms__add(Xob_sync_pkg file) {itms.Add(file.Path(), file);}
|
||||
public Xob_sync_pkg Itms__get_at(int i) {return (Xob_sync_pkg)itms.Get_at(i);}
|
||||
|
||||
@@ -21,7 +21,7 @@ public class Xoi_wiki_props_alias {
|
||||
public String Alias() {return alias;} private String alias;
|
||||
public Xoi_wiki_props_alias Init_by_ctor(int id, String alias) {this.id = id; this.alias = alias; return this;}
|
||||
public void Init_by_xml(gplx.xmls.XmlNde ns_nde) {
|
||||
this.id = Int_.parse_(ns_nde.Atrs().FetchValOr("id", "-1"));
|
||||
this.id = Int_.parse(ns_nde.Atrs().FetchValOr("id", "-1"));
|
||||
this.alias = String_.Replace(String_.Replace(ns_nde.Text_inner(), " ", "_"), "'", "''");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -52,7 +52,7 @@ public class Xoi_wiki_props_api {
|
||||
bfr.Add_byte_nl();
|
||||
}
|
||||
public void Parse(Xoi_wiki_props_wiki wiki, String xml) {
|
||||
XmlDoc xdoc = XmlDoc_.parse_(xml);
|
||||
XmlDoc xdoc = XmlDoc_.parse(xml);
|
||||
XmlNde query_xnde = Xpath_.SelectFirst(xdoc.Root(), "query");
|
||||
XmlNde aliases_xnde = Xpath_.SelectFirst(query_xnde, "namespace"+"aliases");
|
||||
wiki.Alias_ary_(Parse_alias_ary(aliases_xnde));
|
||||
|
||||
@@ -135,7 +135,7 @@ class Xob_subpage_tst_fxt {
|
||||
int ns_len = wiki.Ns_list().Count();
|
||||
for (int i = 0; i < ns_len; i++) {
|
||||
Xob_subpage_ns ns = (Xob_subpage_ns)wiki.Ns_list().Get_at(i);
|
||||
sb.Add(ns.Id()).Add("=").Add(Bool_.Xto_str_lower(ns.Enabled())).Add_char_nl();
|
||||
sb.Add(ns.Id()).Add("=").Add(Bool_.To_str_lower(ns.Enabled())).Add_char_nl();
|
||||
}
|
||||
sb.Add_char_nl();
|
||||
}
|
||||
|
||||
@@ -21,7 +21,7 @@ public class Xoi_wiki_props_ns {
|
||||
public boolean Subpages_enabled() {return subpages_enabled;} private boolean subpages_enabled;
|
||||
public Xoi_wiki_props_ns Init_by_ctor(int id, boolean subpages_enabled) {this.id = id; this.subpages_enabled = subpages_enabled; return this;}
|
||||
public void Init_by_xml(gplx.xmls.XmlNde ns_nde) {
|
||||
this.id = Int_.parse_(ns_nde.Atrs().FetchValOr("id", "-1"));
|
||||
this.id = Int_.parse(ns_nde.Atrs().FetchValOr("id", "-1"));
|
||||
this.subpages_enabled = ns_nde.Atrs().Fetch_or_null("subpages") != null;// per api, subpages="" means ns has subpages; no subpages attribute means no subpages
|
||||
}
|
||||
}
|
||||
|
||||
@@ -31,7 +31,7 @@ public class Xob_siteinfo_parser {
|
||||
finally {rdr.Rls();}
|
||||
}
|
||||
public static void Siteinfo_parse(Xowe_wiki wiki, Gfo_usr_dlg usr_dlg, String siteinfo_str) {
|
||||
XmlDoc xdoc = XmlDoc_.parse_(siteinfo_str);
|
||||
XmlDoc xdoc = XmlDoc_.parse(siteinfo_str);
|
||||
XmlNde root = xdoc.Root();
|
||||
int root_subs_len = root.SubNdes().Count();
|
||||
Bry_bfr siteinfo_misc_bfr = Bry_bfr.reset_(512);
|
||||
@@ -74,8 +74,8 @@ public class Xob_siteinfo_parser {
|
||||
XmlNde sub_nde = ns_nde.SubNdes().Get_at(i);
|
||||
if (sub_nde.Atrs().Count() == 0) continue; // NOTE: JAVA again has unexpected nodes
|
||||
try {
|
||||
int ns_id = Int_.parse_(sub_nde.Atrs().FetchValOr("key", ""));
|
||||
byte case_match = Xow_ns_case_.parse_(sub_nde.Atrs().FetchValOr("case", ""));
|
||||
int ns_id = Int_.parse(sub_nde.Atrs().FetchValOr("key", ""));
|
||||
byte case_match = Xow_ns_case_.parse(sub_nde.Atrs().FetchValOr("case", ""));
|
||||
String name = sub_nde.Text_inner();
|
||||
ns_mgr.Add_new(ns_id, Bry_.new_u8(name), case_match, false);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user