mirror of
https://github.com/gnosygnu/xowa.git
synced 2026-03-02 03:49:30 +00:00
'v3.3.4.1'
This commit is contained in:
@@ -17,7 +17,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package gplx.xowa.bldrs; import gplx.*; import gplx.xowa.*;
|
||||
import gplx.core.primitives.*; import gplx.core.strings.*;
|
||||
import gplx.dbs.*; import gplx.dbs.qrys.*; import gplx.xowa.wikis.dbs.*; import gplx.xowa.specials.search.*; import gplx.xowa.wikis.ctgs.*;
|
||||
import gplx.dbs.*; import gplx.dbs.qrys.*; import gplx.xowa.wikis.dbs.*; import gplx.xowa.wikis.ctgs.*;
|
||||
import gplx.xowa.wikis.nss.*;
|
||||
import gplx.xowa.wikis.data.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.bldrs.infos.*;
|
||||
public class Db_mgr_fxt {
|
||||
@@ -32,7 +32,7 @@ public class Db_mgr_fxt {
|
||||
public Xowd_page_itm doc_ttl_(int id, String title) {return bldr_fxt.doc_(id, "2012-01-02 03:04", title, "IGNORE");}
|
||||
public Db_mgr_fxt Init_fil(String url, String raw) {return Init_fil(Io_url_.new_fil_(url), raw);}
|
||||
public Db_mgr_fxt Init_fil(Io_url url, String raw) {Io_mgr.Instance.SaveFilStr(url, raw); return this;}
|
||||
public Db_mgr_fxt Exec_run(Xobd_wkr wkr) {bldr_fxt.Run(wkr); return this;}
|
||||
public Db_mgr_fxt Exec_run(Xob_page_wkr wkr) {bldr_fxt.Run(wkr); return this;}
|
||||
public Db_mgr_fxt Exec_run(Xob_cmd cmd) {bldr_fxt.Run_cmds(cmd); return this;}
|
||||
public Db_mgr_fxt Exec_run(Xobd_parser_wkr wkr) {bldr_fxt.Run(wkr); return this;}
|
||||
public void Init_page_insert(Int_obj_ref page_id_next, int ns_id, String[] ttls) {
|
||||
@@ -65,13 +65,6 @@ public class Db_mgr_fxt {
|
||||
wiki.Db_mgr_as_sql().Load_mgr().Load_page(actl.Id_(page_id), ns, false);
|
||||
Tfds.Eq(expd, String_.new_a7(actl.Text()));
|
||||
}
|
||||
public void Test_search(String search_word_str, int... expd) {
|
||||
Xowe_wiki wiki = bldr_fxt.Wiki();
|
||||
List_adp rv = List_adp_.new_();
|
||||
byte[] search_word_bry = Bry_.new_a7(search_word_str);
|
||||
wiki.Db_mgr_as_sql().Load_mgr().Load_search(Cancelable_.Never, rv, search_word_bry, 100);
|
||||
Tfds.Eq_ary(expd, Xto_int_ary(rv));
|
||||
}
|
||||
int[] Xto_int_ary(List_adp rslts) {
|
||||
int len = rslts.Count();
|
||||
int[] rv = new int[len];
|
||||
|
||||
@@ -20,8 +20,8 @@ import gplx.core.ios.*; import gplx.xowa.bldrs.*; import gplx.xowa.wikis.data.tb
|
||||
public class Xob_base_fxt {
|
||||
public Xob_base_fxt Clear() {
|
||||
if (app == null) {
|
||||
app = Xoa_app_fxt.app_();
|
||||
wiki = Xoa_app_fxt.wiki_tst_(app);
|
||||
app = Xoa_app_fxt.Make__app__edit();
|
||||
wiki = Xoa_app_fxt.Make__wiki__edit(app);
|
||||
bldr = Xoa_app_fxt.bldr_(app);
|
||||
}
|
||||
this.Init_(bldr, wiki);
|
||||
@@ -66,7 +66,7 @@ public class Xob_base_fxt {
|
||||
cmd.Cmd_run();
|
||||
cmd.Cmd_end();
|
||||
}
|
||||
public static void Run_wkr(Xob_bldr bldr, Xobd_wkr wkr, Xowd_page_itm[] page_ary) {
|
||||
public static void Run_wkr(Xob_bldr bldr, Xob_page_wkr wkr, Xowd_page_itm[] page_ary) {
|
||||
wkr.Wkr_bgn(bldr);
|
||||
int page_ary_len = page_ary.length;
|
||||
for (int i = 0; i < page_ary_len; i++) {
|
||||
|
||||
@@ -26,8 +26,8 @@ public class Xob_bldr implements GfoInvkAble {
|
||||
this.import_marker = new Xob_import_marker();
|
||||
this.wiki_cfg_bldr = new Xob_wiki_cfg_bldr(this);
|
||||
}
|
||||
public Xoae_app App() {return app;} private final Xoae_app app;
|
||||
public Xob_cmd_mgr Cmd_mgr() {return cmd_mgr;} private final Xob_cmd_mgr cmd_mgr;
|
||||
public Xoae_app App() {return app;} private final Xoae_app app;
|
||||
public Xob_cmd_mgr Cmd_mgr() {return cmd_mgr;} private final Xob_cmd_mgr cmd_mgr;
|
||||
public Gfo_usr_dlg Usr_dlg() {return app.Usr_dlg();}
|
||||
public int Sort_mem_len() {return sort_mem_len;} public Xob_bldr Sort_mem_len_(int v) {sort_mem_len = v; return this;} private int sort_mem_len = 16 * Io_mgr.Len_mb;
|
||||
public int Dump_fil_len() {return dump_fil_len;} public Xob_bldr Dump_fil_len_(int v) {dump_fil_len = v; return this;} private int dump_fil_len = 1 * Io_mgr.Len_mb;
|
||||
@@ -98,8 +98,9 @@ public class Xob_bldr implements GfoInvkAble {
|
||||
private static final String
|
||||
Invk_cmds = "cmds", Invk_wiki_cfg_bldr = "wiki_cfg_bldr"
|
||||
, Invk_pause_at_end_ = "pause_at_end_", Invk_sort_mem_len_ = "sort_mem_len_", Invk_dump_fil_len_ = "dump_fil_len_", Invk_make_fil_len_ = "make_fil_len_"
|
||||
, Invk_run = "run", Invk_cancel = "cancel"
|
||||
, Invk_cancel = "cancel"
|
||||
;
|
||||
public static final String Invk_run = "run";
|
||||
}
|
||||
/*
|
||||
. make_fil_len: max size of made file; EX: /id/..../0000000001.csv will have max len of 64 KB
|
||||
|
||||
@@ -32,7 +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_wiki_page_link = "wiki.page_link"
|
||||
, Key_file_lnki_temp = "file.lnki_temp"
|
||||
, Key_file_lnki_regy = "file.lnki_regy"
|
||||
, Key_file_page_regy = "file.page_regy"
|
||||
@@ -50,6 +50,9 @@ public class Xob_cmd_keys {
|
||||
, Key_util_download = "util.download" // "file.download"
|
||||
, Key_util_xml_dump = "util.xml_dump"
|
||||
, Key_util_random = "util.random"
|
||||
, Key_util_sqlite_normalize = "util.sqlite.normalize"
|
||||
, Key_util_alert = "util.alert"
|
||||
, Key_util_delete = "util.delete"
|
||||
, Key_wbase_json_dump = "wbase.json_dump"
|
||||
, Key_wbase_qid = "wbase.qid" // "text.wdata.qid"
|
||||
, Key_wbase_pid = "wbase.pid" // "text.wdata.pid"
|
||||
@@ -58,6 +61,9 @@ public class Xob_cmd_keys {
|
||||
, Key_diff_build = "diff.build"
|
||||
, Key_diff_merge = "diff.merge"
|
||||
, Key_text_delete_page = "text.delete_page"
|
||||
, Key_search__page__page_score = "search.page__page_score"
|
||||
, Key_search__link__link_score = "search.link__link_score"
|
||||
, Key_search__word__link_count = "search.word__link_count"
|
||||
|
||||
, Key_tdb_text_init = "tdb.text.init" // "core.init"
|
||||
, Key_tdb_make_page = "tdb.text.page" // "core.make_page"
|
||||
|
||||
@@ -21,6 +21,7 @@ import gplx.xowa.wikis.*; import gplx.xowa.xtns.wdatas.imports.*;
|
||||
import gplx.xowa.bldrs.cmds.texts.*; import gplx.xowa.bldrs.cmds.texts.sqls.*; import gplx.xowa.bldrs.cmds.texts.tdbs.*; import gplx.xowa.bldrs.cmds.files.*; import gplx.xowa.bldrs.cmds.ctgs.*; import gplx.xowa.bldrs.cmds.utils.*; import gplx.xowa.bldrs.cmds.wikis.*;
|
||||
import gplx.xowa.bldrs.cmds.diffs.*;
|
||||
import gplx.xowa.files.origs.*; import gplx.xowa.htmls.core.bldrs.*;
|
||||
import gplx.xowa.addons.searchs.dbs.bldrs.*;
|
||||
public class Xob_cmd_mgr implements GfoInvkAble {
|
||||
public Xob_cmd_mgr(Xob_bldr bldr) {this.bldr = bldr;} private Xob_bldr bldr;
|
||||
public void Clear() {list.Clear(); dump_rdrs.Clear();}
|
||||
@@ -31,8 +32,8 @@ public class Xob_cmd_mgr implements GfoInvkAble {
|
||||
if (String_.Eq(cmd_key, Xob_cmd_keys.Key_text_init)) return Add(new Xob_init_cmd(bldr, wiki));
|
||||
else if (String_.Eq(cmd_key, Xob_cmd_keys.Key_text_page)) return Xml_rdr_direct_add(wiki, new Xob_page_cmd(bldr, wiki));
|
||||
else if (String_.Eq(cmd_key, Xob_cmd_keys.Key_text_css)) return Add(new Xob_css_cmd(bldr, wiki));
|
||||
else if (String_.Eq(cmd_key, Xob_cmd_keys.Key_text_search_wkr)) return Xml_rdr_direct_add(wiki, new Xob_search_sql_wkr(bldr, wiki));
|
||||
else if (String_.Eq(cmd_key, Xob_cmd_keys.Key_text_search_cmd)) return Add(new Xob_search_sql_cmd(bldr, wiki));
|
||||
else if (String_.Eq(cmd_key, Xob_cmd_keys.Key_text_search_wkr)) return Xml_rdr_direct_add(wiki, new gplx.xowa.addons.searchs.dbs.bldrs.Srch_bldr_wkr(bldr, wiki));
|
||||
else if (String_.Eq(cmd_key, Xob_cmd_keys.Key_text_search_cmd)) return Add(new Srch_bldr_cmd(bldr, wiki));
|
||||
else if (String_.Eq(cmd_key, Xob_cmd_keys.Key_text_cat_core_v1)) return Xml_rdr_parser_add(wiki, new Xob_ctg_v1_sql().Ctor(bldr, wiki));
|
||||
else if (String_.Eq(cmd_key, Xob_cmd_keys.Key_text_cat_core)) return Add(new Xob_category_registry_sql(bldr, wiki));
|
||||
else if (String_.Eq(cmd_key, Xob_cmd_keys.Key_text_cat_link)) return Add(new Xob_categorylinks_sql(bldr, wiki));
|
||||
@@ -43,7 +44,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_wiki_page_link)) return Add(new gplx.xowa.addons.pagelinks.bldrs.Pglnk_bldr_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));
|
||||
@@ -57,13 +58,19 @@ public class Xob_cmd_mgr implements GfoInvkAble {
|
||||
else if (String_.Eq(cmd_key, Xob_cmd_keys.Key_file_xfer_update)) return Add(new Xob_xfer_update_cmd(bldr, wiki));
|
||||
else if (String_.Eq(cmd_key, Xob_cmd_keys.Key_html_redlinks)) return Add(new Xob_redlink_mkr_cmd(bldr, wiki));
|
||||
else if (String_.Eq(cmd_key, Xob_cmd_keys.Key_util_cleanup)) return Add(new Xob_cleanup_cmd(bldr, wiki));
|
||||
else if (String_.Eq(cmd_key, Xob_cmd_keys.Key_util_download)) return Add(new Xob_download_wkr(bldr, wiki));
|
||||
else if (String_.Eq(cmd_key, Xob_cmd_keys.Key_util_delete)) return Add(new Xob_delete_cmd(bldr, wiki));
|
||||
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_json_dump)) return Add(new Xob_wbase_json_dump_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().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));
|
||||
else if (String_.Eq(cmd_key, Xob_cmd_keys.Key_search__page__page_score)) return Add(new gplx.xowa.addons.searchs.dbs.bldrs.cmds.Srch__page__page_score(bldr, wiki));
|
||||
else if (String_.Eq(cmd_key, Xob_cmd_keys.Key_search__link__link_score)) return Add(new gplx.xowa.addons.searchs.dbs.bldrs.cmds.Srch__link__link_score(bldr, wiki));
|
||||
else if (String_.Eq(cmd_key, Xob_cmd_keys.Key_search__word__link_count)) return Add(new gplx.xowa.addons.searchs.dbs.bldrs.cmds.Srch__word__link_count(bldr, wiki));
|
||||
else if (String_.Eq(cmd_key, Xob_cmd_keys.Key_util_sqlite_normalize)) return Add(new gplx.xowa.addons.sqlite_utils.bldrs.Sqlite_percentile_cmd(bldr, wiki));
|
||||
|
||||
else if (String_.Eq(cmd_key, Xob_cmd_keys.Key_tdb_text_init)) return Add(new Xob_init_tdb(bldr, wiki));
|
||||
else if (String_.Eq(cmd_key, Xob_cmd_keys.Key_tdb_make_page)) return Xml_rdr_direct_add(wiki, new Xob_page_txt(bldr, wiki));
|
||||
else if (String_.Eq(cmd_key, Xob_cmd_keys.Key_tdb_make_id)) return Xml_rdr_direct_add(wiki, new Xob_make_id_wkr(bldr, wiki));
|
||||
@@ -86,21 +93,21 @@ public class Xob_cmd_mgr implements GfoInvkAble {
|
||||
else if (String_.Eq(cmd_key, Xob_cmd_keys.Key_deploy_copy)) return Add(new Xob_deploy_copy_cmd(bldr, wiki));
|
||||
else throw Err_.new_unhandled(cmd_key);
|
||||
}
|
||||
private Xobd_wkr Xml_rdr_direct_add(Xowe_wiki wiki, Xobd_wkr wkr) {
|
||||
Xobd_rdr dump_rdr = Xml_rdr_get(wiki);
|
||||
private Xob_page_wkr Xml_rdr_direct_add(Xowe_wiki wiki, Xob_page_wkr wkr) {
|
||||
Xob_page_wkr_cmd dump_rdr = Xml_rdr_get(wiki);
|
||||
dump_rdr.Wkr_add(wkr);
|
||||
return wkr;
|
||||
}
|
||||
private Xobd_parser_wkr Xml_rdr_parser_add(Xowe_wiki wiki, Xobd_parser_wkr wkr) {
|
||||
Xobd_rdr dump_rdr = Xml_rdr_get(wiki);
|
||||
Xob_page_wkr_cmd dump_rdr = Xml_rdr_get(wiki);
|
||||
dump_rdr.Page_parser_assert().Wkr_add(wkr);
|
||||
return wkr;
|
||||
}
|
||||
private Xobd_rdr Xml_rdr_get(Xowe_wiki wiki) {
|
||||
private Xob_page_wkr_cmd Xml_rdr_get(Xowe_wiki wiki) {
|
||||
byte[] wiki_key = wiki.Domain_bry();
|
||||
Xobd_rdr rv = (Xobd_rdr)dump_rdrs.Get_by(dump_rdrs_ref.Val_(wiki_key));
|
||||
Xob_page_wkr_cmd rv = (Xob_page_wkr_cmd)dump_rdrs.Get_by(dump_rdrs_ref.Val_(wiki_key));
|
||||
if (rv == null) {
|
||||
rv = new Xobd_rdr(bldr, wiki);
|
||||
rv = new Xob_page_wkr_cmd(bldr, wiki);
|
||||
dump_rdrs.Add(Bry_obj_ref.New(wiki_key), rv);
|
||||
this.Add(rv);
|
||||
}
|
||||
@@ -130,7 +137,7 @@ public class Xob_cmd_mgr implements GfoInvkAble {
|
||||
int args_len = m.Args_count();
|
||||
String[] cmds = new String[args_len - 1]; // -1 b/c 1st arg is wiki
|
||||
for (int i = 1; i < args_len; i++) {
|
||||
KeyVal kv = m.Args_getAt(i);
|
||||
Keyval kv = m.Args_getAt(i);
|
||||
cmds[i - 1] = kv.Val_to_str_or_empty();
|
||||
}
|
||||
return Add_many(wiki, cmds);
|
||||
@@ -142,6 +149,11 @@ public class Xob_cmd_mgr implements GfoInvkAble {
|
||||
rv = Add_cmd(wiki, cmds[i]);
|
||||
return rv;
|
||||
}
|
||||
public void Add_cmd_ary(Xob_cmd... cmds_ary) {
|
||||
int cmds_len = cmds_ary.length;
|
||||
for (int i = 0; i < cmds_len; ++i)
|
||||
this.Add(cmds_ary[i]);
|
||||
}
|
||||
private Xowe_wiki Wiki_get_or_make(GfoMsg m) {
|
||||
byte[] wiki_key = m.ReadBry("v");
|
||||
Xoae_wiki_mgr wiki_mgr = bldr.App().Wiki_mgr();
|
||||
|
||||
@@ -22,17 +22,17 @@ public class Xob_db_file {
|
||||
this.url = url; this.conn = conn;
|
||||
this.tbl__cfg = new Db_cfg_tbl(conn, "xowa_cfg");
|
||||
}
|
||||
public Io_url Url() {return url;} private final Io_url url;
|
||||
public Db_conn Conn() {return conn;} private final Db_conn conn;
|
||||
public Db_cfg_tbl Tbl__cfg() {return tbl__cfg;} private final Db_cfg_tbl tbl__cfg;
|
||||
|
||||
public static Xob_db_file new__file_make(Io_url dir) {return new_(dir, Name__file_make);}
|
||||
public static Xob_db_file new__page_regy(Io_url dir) {return new_(dir, Name__page_regy);}
|
||||
public static Xob_db_file new__wiki_image(Io_url dir) {return new_(dir, Name__wiki_image);}
|
||||
public static Xob_db_file new__wiki_redirect(Io_url dir) {return new_(dir, Name__wiki_redirect);}
|
||||
public static Xob_db_file new__temp_log(Io_url dir) {return new_(dir, Name__temp_log);}
|
||||
public static Xob_db_file new__redlink(Io_url dir) {return new_(dir, Name__redlink);}
|
||||
public static Xob_db_file new_(Io_url dir, String name) {
|
||||
public Io_url Url() {return url;} private final Io_url url;
|
||||
public Db_conn Conn() {return conn;} private final Db_conn conn;
|
||||
public Db_cfg_tbl Tbl__cfg() {return tbl__cfg;} private final Db_cfg_tbl tbl__cfg;
|
||||
public static Xob_db_file New__file_make(Io_url dir) {return New(dir, Name__file_make);}
|
||||
public static Xob_db_file New__page_regy(Io_url dir) {return New(dir, Name__page_regy);}
|
||||
public static Xob_db_file New__wiki_image(Io_url dir) {return New(dir, Name__wiki_image);}
|
||||
public static Xob_db_file New__wiki_redirect(Io_url dir) {return New(dir, Name__wiki_redirect);}
|
||||
public static Xob_db_file New__temp_log(Io_url dir) {return New(dir, Name__temp_log);}
|
||||
public static Xob_db_file New__redlink(Io_url dir) {return New(dir, Name__redlink);}
|
||||
public static Xob_db_file New__page_link(Xow_wiki wiki) {return New(wiki.Fsys_mgr().Root_dir(), Name__page_link);}
|
||||
public static Xob_db_file New(Io_url dir, String name) {
|
||||
Io_url url = dir.GenSubFil(name);
|
||||
Db_conn_bldr_data conn_data = Db_conn_bldr.Instance.Get_or_new(url);
|
||||
Db_conn conn = conn_data.Conn();
|
||||
@@ -45,5 +45,6 @@ public class Xob_db_file {
|
||||
Name__wiki_image = "xowa.wiki.image.sqlite3", Name__wiki_redirect = "xowa.wiki.redirect.sqlite3"
|
||||
, Name__file_make = "xowa.file.make.sqlite3", Name__temp_log = "xowa.temp.log.sqlite3"
|
||||
, Name__page_regy = "xowa.file.page_regy.sqlite3", Name__redlink = "xowa.temp.redlink.sqlite3"
|
||||
, Name__page_link = "xowa.wiki.pagelinks.sqlite3"
|
||||
;
|
||||
}
|
||||
|
||||
@@ -25,8 +25,8 @@ public class Xob_fxt {
|
||||
}
|
||||
public Xob_fxt Ctor(Io_url root_dir) {
|
||||
Db_conn_bldr.Instance.Reg_default_sqlite();
|
||||
app = Xoa_app_fxt.app_("linux", root_dir);
|
||||
wiki = Xoa_app_fxt.wiki_tst_(app);
|
||||
app = Xoa_app_fxt.Make__app__edit("linux", root_dir);
|
||||
wiki = Xoa_app_fxt.Make__wiki__edit(app);
|
||||
bldr = Xoa_app_fxt.bldr_(app);
|
||||
return this;
|
||||
}
|
||||
@@ -73,7 +73,7 @@ public class Xob_fxt {
|
||||
Run(wkr);
|
||||
return this;
|
||||
}
|
||||
private void Run_wkr(Xobd_wkr wkr) {
|
||||
private void Run_wkr(Xob_page_wkr wkr) {
|
||||
wkr.Wkr_bgn(bldr);
|
||||
for (int i = 0; i < doc_ary.length; i++) {
|
||||
Xowd_page_itm page = doc_ary[i];
|
||||
@@ -111,10 +111,10 @@ public class Xob_fxt {
|
||||
Run(parser_wkr);
|
||||
return this;
|
||||
}
|
||||
public Xob_fxt Run(Xobd_wkr... wkrs) {
|
||||
public Xob_fxt Run(Xob_page_wkr... wkrs) {
|
||||
int doc_ary_len = doc_ary.length;
|
||||
for (int j = 0; j < wkrs.length; j++) {
|
||||
Xobd_wkr wkr = wkrs[j];
|
||||
Xob_page_wkr wkr = wkrs[j];
|
||||
wkr.Wkr_bgn(bldr);
|
||||
for (int i = 0; i < doc_ary_len; i++) {
|
||||
Xowd_page_itm page = doc_ary[i];
|
||||
|
||||
@@ -46,7 +46,7 @@ public class Xob_ns_to_db_mgr {
|
||||
if (db_id == Xob_ns_file_itm.Nth_db_id_null) // ns not assigned yet to db
|
||||
rv = Init_db(ns_file_itm);
|
||||
else
|
||||
rv = db_mgr.Dbs__get_at(db_id);
|
||||
rv = db_mgr.Dbs__get_by_id(db_id);
|
||||
long file_len = rv.File_len();
|
||||
if (file_len + data_len > db_max) { // file is "full"
|
||||
Term_tbl(rv);
|
||||
|
||||
@@ -16,12 +16,9 @@ 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; import gplx.*; import gplx.xowa.*;
|
||||
import gplx.xowa.wikis.data.tbls.*;
|
||||
public interface Xobd_wkr extends GfoInvkAble {
|
||||
public interface Xob_page_wkr extends GfoInvkAble {
|
||||
String Wkr_key();
|
||||
void Wkr_ini(Xob_bldr bldr);
|
||||
void Wkr_bgn(Xob_bldr bldr);
|
||||
void Wkr_run(Xowd_page_itm page);
|
||||
void Wkr_run(gplx.xowa.wikis.data.tbls.Xowd_page_itm page);
|
||||
void Wkr_end();
|
||||
void Wkr_print();
|
||||
}
|
||||
@@ -16,23 +16,15 @@ 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; import gplx.*; import gplx.xowa.*;
|
||||
import gplx.core.consoles.*;
|
||||
import gplx.core.ios.*;
|
||||
import gplx.xowa.wikis.nss.*;
|
||||
import gplx.xowa.bldrs.xmls.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.parsers.tmpls.*;
|
||||
public class Xobd_rdr implements Xob_cmd {
|
||||
private Xob_bldr bldr; private Xowe_wiki wiki;
|
||||
public Xobd_rdr(Xob_bldr bldr, Xowe_wiki wiki) {this.bldr = bldr; this.wiki = wiki;}
|
||||
public String Cmd_key() {return KEY;} public static final String KEY = "dump_mgr";
|
||||
public void Cmd_init(Xob_bldr bldr) {
|
||||
Xobd_wkr[] wkr_ary = (Xobd_wkr[])wkrs.To_ary(Xobd_wkr.class); int wkr_ary_len = wkr_ary.length;
|
||||
for (int i = 0; i < wkr_ary_len; i++)
|
||||
wkr_ary[i].Wkr_ini(bldr);
|
||||
}
|
||||
public void Cmd_bgn(Xob_bldr bldr) {}
|
||||
public void Cmd_end() {}
|
||||
import gplx.core.consoles.*; import gplx.core.ios.*;
|
||||
import gplx.xowa.wikis.nss.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.parsers.tmpls.*;
|
||||
import gplx.xowa.bldrs.xmls.*;
|
||||
public class Xob_page_wkr_cmd implements Xob_cmd {
|
||||
private final Xob_bldr bldr; private final Xowe_wiki wiki;
|
||||
public Xob_page_wkr_cmd(Xob_bldr bldr, Xowe_wiki wiki) {this.bldr = bldr; this.wiki = wiki;}
|
||||
public String Cmd_key() {return KEY;} public static final String KEY = "dump_mgr";
|
||||
public void Cmd_run() {
|
||||
Xobd_wkr[] wkr_ary = (Xobd_wkr[])wkrs.To_ary(Xobd_wkr.class); int wkr_ary_len = wkr_ary.length;
|
||||
Xob_page_wkr[] wkr_ary = (Xob_page_wkr[])wkrs.To_ary(Xob_page_wkr.class); int wkr_ary_len = wkr_ary.length;
|
||||
for (int i = 0; i < wkr_ary_len; i++)
|
||||
wkr_ary[i].Wkr_bgn(bldr);
|
||||
Io_buffer_rdr fil = Io_buffer_rdr.Null; Xowd_page_itm page = new Xowd_page_itm(); Xow_ns_mgr ns_mgr = wiki.Ns_mgr();
|
||||
@@ -73,16 +65,15 @@ public class Xobd_rdr implements Xob_cmd {
|
||||
}
|
||||
finally {fil.Rls();}
|
||||
bldr.Usr_dlg().Prog_none("", "", "reading completed: performing post-processing clean-up");
|
||||
for (int i = 0; i < wkr_ary_len; i++)
|
||||
for (int i = wkr_ary_len - 1; i > -1; --i) // NOTE: release in reverse order; needed to make sure txns are released correctly
|
||||
wkr_ary[i].Wkr_end();
|
||||
}
|
||||
public void Cmd_term() {
|
||||
Xobd_wkr[] wkr_ary = (Xobd_wkr[])wkrs.To_ary(Xobd_wkr.class); int wkr_ary_len = wkr_ary.length;
|
||||
for (int i = 0; i < wkr_ary_len; i++)
|
||||
wkr_ary[i].Wkr_print();
|
||||
}
|
||||
public void Wkr_add(Xobd_wkr wkr) {wkrs.Add(wkr.Wkr_key(), wkr);} private Ordered_hash wkrs = Ordered_hash_.New();
|
||||
public Xobd_wkr Wkr_get(String key) {return (Xobd_wkr)wkrs.Get_by(key);}
|
||||
public void Cmd_bgn(Xob_bldr bldr) {}
|
||||
public void Cmd_init(Xob_bldr bldr) {}
|
||||
public void Cmd_end() {}
|
||||
public void Cmd_term() {}
|
||||
public void Wkr_add(Xob_page_wkr wkr) {wkrs.Add(wkr.Wkr_key(), wkr);} private Ordered_hash wkrs = Ordered_hash_.New();
|
||||
public Xob_page_wkr Wkr_get(String key) {return (Xob_page_wkr)wkrs.Get_by(key);}
|
||||
public Xobd_parser Page_parser_assert() {
|
||||
if (page_parser == null) {
|
||||
page_parser = new Xobd_parser();
|
||||
@@ -18,11 +18,10 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
package gplx.xowa.bldrs; import gplx.*; import gplx.xowa.*;
|
||||
import gplx.core.btries.*;
|
||||
import gplx.xowa.wikis.data.tbls.*;
|
||||
public class Xobd_parser implements Xobd_wkr {
|
||||
public class Xobd_parser implements Xob_page_wkr {
|
||||
private Btrie_slim_mgr trie = Btrie_slim_mgr.ci_a7(); // NOTE:ci.ascii:MW_const.en; ctg.v1 assumes [[Category:
|
||||
private List_adp wkr_list = List_adp_.new_();
|
||||
public String Wkr_key() {return KEY;} static final String KEY = "page_parser";
|
||||
public void Wkr_ini(Xob_bldr bldr) {}
|
||||
public void Wkr_add(Xobd_parser_wkr wkr) {wkr_list.Add(wkr);}
|
||||
public void Wkr_bgn(Xob_bldr app) {
|
||||
int wkr_list_len = wkr_list.Count();
|
||||
@@ -57,7 +56,6 @@ public class Xobd_parser implements Xobd_wkr {
|
||||
wkr.Wkr_end();
|
||||
}
|
||||
}
|
||||
public void Wkr_print() {}
|
||||
public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {
|
||||
throw Err_.new_unimplemented();
|
||||
}
|
||||
|
||||
@@ -150,7 +150,7 @@ public class Xob_wiki_cfg_bldr_tst {
|
||||
class Xob_wiki_cfg_bldr_fxt {
|
||||
public Xob_wiki_cfg_bldr_fxt Clear() {
|
||||
if (app == null) {
|
||||
app = Xoa_app_fxt.app_();
|
||||
app = Xoa_app_fxt.Make__app__edit();
|
||||
wiki_cfg_bldr = app.Bldr().Wiki_cfg_bldr();
|
||||
}
|
||||
wiki_cfg_bldr.Clear();
|
||||
@@ -162,14 +162,14 @@ class Xob_wiki_cfg_bldr_fxt {
|
||||
return this;
|
||||
}
|
||||
public Xob_wiki_cfg_bldr_fxt Expd_txt(String wiki, String text) {
|
||||
hash.Add(wiki, KeyVal_.new_(wiki, text));
|
||||
hash.Add(wiki, Keyval_.new_(wiki, text));
|
||||
return this;
|
||||
}
|
||||
public void Test() {
|
||||
wiki_cfg_bldr.Exec();
|
||||
int len = hash.Count();
|
||||
for (int i = 0; i < len; i++) {
|
||||
KeyVal kv = (KeyVal)hash.Get_at(i);
|
||||
Keyval kv = (Keyval)hash.Get_at(i);
|
||||
String wiki = kv.Key();
|
||||
String expd = (String)kv.Val();
|
||||
String actl = Io_mgr.Instance.LoadFilStr(app.Fsys_mgr().Cfg_wiki_core_dir().GenSubFil(wiki + ".gfs"));
|
||||
|
||||
@@ -47,10 +47,10 @@ class Xob_dump_src_id {
|
||||
private DataRdr New_rdr(Xodb_mgr_sql db_mgr, String page_db_url, int text_db_idx, int cur_ns, int prv_id, byte redirect) {
|
||||
if (cur_text_db_idx != text_db_idx) {
|
||||
cur_text_db_idx = text_db_idx;
|
||||
Xowd_db_file text_db = db_mgr.Core_data_mgr().Dbs__get_at(text_db_idx);
|
||||
Xowd_db_file text_db = db_mgr.Core_data_mgr().Dbs__get_by_id(text_db_idx);
|
||||
Db_conn conn = text_db.Conn();
|
||||
String sql = String_.Format(Sql_select_itm, New_rdr__redirect_clause(redirect));
|
||||
text_stmt = conn.Stmt_new(Db_qry_sql.rdr_(sql));
|
||||
String sql = String_.Format(Sql_select_clause, New_rdr__redirect_clause(redirect));
|
||||
text_stmt = conn.Stmt_sql(sql);
|
||||
}
|
||||
return text_stmt.Clear().Val_int(prv_id).Val_int(cur_ns).Exec_select();
|
||||
}
|
||||
@@ -75,7 +75,7 @@ class Xob_dump_src_id {
|
||||
default: throw Err_.new_unhandled(redirect);
|
||||
}
|
||||
}
|
||||
private static final String Sql_select_itm = String_.Concat_lines_nl
|
||||
private static final String Sql_select_clause = String_.Concat_lines_nl
|
||||
( "SELECT p.page_id"
|
||||
, ", p.page_title"
|
||||
, ", t.text_data"
|
||||
|
||||
@@ -1072,4 +1072,4 @@ Init_itm(1024, Bry_.New_by_ints(92,52,1,134,143,1,143,5));
|
||||
if (trie.Match_bgn(uca, 0, uca.length) == null)
|
||||
trie.Add_obj(uca, gplx.core.intls.Utf16_.Encode_int_to_bry(charAsInt));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -32,7 +32,7 @@ public class Xob_category_registry_sql implements Xob_cmd {
|
||||
Gfo_usr_dlg usr_dlg = wiki.Appe().Usr_dlg();
|
||||
wiki.Init_db_mgr();
|
||||
Xowd_page_tbl page_core_tbl = wiki.Db_mgr_as_sql().Core_data_mgr().Tbl__page();
|
||||
Db_rdr rdr = page_core_tbl.Conn().Stmt_select_order(page_core_tbl.Tbl_name(), String_.Ary(page_core_tbl.Fld_page_title(), page_core_tbl.Fld_page_id()), String_.Ary(page_core_tbl.Fld_page_ns()), page_core_tbl.Fld_page_title())
|
||||
Db_rdr rdr = page_core_tbl.conn.Stmt_select_order(page_core_tbl.Tbl_name(), String_.Ary(page_core_tbl.Fld_page_title(), page_core_tbl.Fld_page_id()), String_.Ary(page_core_tbl.Fld_page_ns()), page_core_tbl.Fld_page_title())
|
||||
.Crt_int(page_core_tbl.Fld_page_ns(), Xow_ns_.Tid__category)
|
||||
.Exec_select__rls_auto();
|
||||
try {
|
||||
|
||||
@@ -33,8 +33,8 @@ class Xowd_page_wkr_ctg_fxt {
|
||||
public Xowd_page_wkr_ctg_fxt ini_(String s) {src = Bry_.new_u8(s); return this;}
|
||||
public Xowd_page_wkr_ctg_fxt tst_(String... expd) {
|
||||
Xobd_parser mgr = new Xobd_parser();
|
||||
Xoae_app app = Xoa_app_fxt.app_();
|
||||
Xowe_wiki wiki = Xoa_app_fxt.wiki_tst_(app);
|
||||
Xoae_app app = Xoa_app_fxt.Make__app__edit();
|
||||
Xowe_wiki wiki = Xoa_app_fxt.Make__wiki__edit(app);
|
||||
Xob_bldr bldr = Xoa_app_fxt.bldr_(app);
|
||||
Xobd_parser_wkr_ctg_tstr wkr = (Xobd_parser_wkr_ctg_tstr)new Xobd_parser_wkr_ctg_tstr().Ctor(bldr, wiki);
|
||||
byte[] bry = Bry_.new_a7("[[Category:");
|
||||
|
||||
@@ -16,7 +16,7 @@ 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.ctgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*;
|
||||
import org.junit.*; import gplx.dbs.*; import gplx.xowa.specials.search.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.texts.*;
|
||||
import org.junit.*; import gplx.dbs.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.texts.*;
|
||||
import gplx.xowa.bldrs.cmds.texts.sqls.*;
|
||||
public class Xob_ctg_v1_sql_tst {
|
||||
@Before public void init() {if (Xoa_test_.Db_skip()) return; fxt.Ctor_fsys();} Db_mgr_fxt fxt = new Db_mgr_fxt();
|
||||
|
||||
@@ -16,8 +16,7 @@ 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.ctgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*;
|
||||
import gplx.core.ios.*;
|
||||
import gplx.xowa.bldrs.sqls.*;
|
||||
import gplx.core.ios.*; import gplx.xowa.bldrs.sqls.*;
|
||||
public class Xoctg_hiddencat_parser_txt extends Xoctg_hiddencat_parser_base {
|
||||
public Xoctg_hiddencat_parser_txt(Xob_bldr bldr, Xowe_wiki wiki) {this.Ctor(bldr, wiki);}
|
||||
@Override public String Cmd_key() {return Xob_cmd_keys.Key_tdb_cat_hidden_sql;}
|
||||
|
||||
@@ -16,7 +16,7 @@ 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.diffs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*;
|
||||
import gplx.core.brys.*; import gplx.core.brys.fmtrs.*;
|
||||
import gplx.core.brys.*; import gplx.core.brys.fmts.*;
|
||||
import gplx.dbs.*; import gplx.dbs.metas.*; import gplx.dbs.diffs.*; import gplx.dbs.diffs.builds.*; import gplx.dbs.diffs.itms.*;
|
||||
import gplx.xowa.wikis.data.*; import gplx.xowa.wikis.data.tbls.*;
|
||||
class Xob_diff_build_wkr {
|
||||
@@ -40,12 +40,10 @@ class Xob_diff_build_wkr {
|
||||
String made_by = wiki.App().User().Key();
|
||||
Gdif_job_itm job_itm = dif_core.New_job(name, made_by);
|
||||
Gdif_bldr_ctx ctx = new Gdif_bldr_ctx().Init(dif_core, job_itm);
|
||||
|
||||
Gfdb_diff_wkr__db dif_wkr = new Gfdb_diff_wkr__db();
|
||||
Gdif_db dif_db = dif_core.Db();
|
||||
dif_wkr.Init_conn(dif_db, 1000);
|
||||
dif_bldr.Init(dif_wkr);
|
||||
|
||||
// wiki.Data__core_mgr().Db__core().Conn().Conn_info();
|
||||
Xowd_db_file[] db_files = wiki.Data__core_mgr().Db__core().Tbl__db().Select_all(wiki.Data__core_mgr().Props(), Io_url_.Empty);
|
||||
int db_files_len = db_files.length;
|
||||
@@ -64,8 +62,8 @@ class Xob_diff_build_wkr {
|
||||
// }
|
||||
}
|
||||
private void Compare(Gdif_bldr_ctx ctx) {
|
||||
Dbmeta_tbl_mgr old_tbl_mgr = old_conn.Meta_tbl_load_all();
|
||||
Dbmeta_tbl_mgr new_tbl_mgr = old_conn.Meta_tbl_load_all();
|
||||
Dbmeta_tbl_mgr old_tbl_mgr = old_conn.Meta_load_all();
|
||||
Dbmeta_tbl_mgr new_tbl_mgr = old_conn.Meta_load_all();
|
||||
int new_tbl_len = new_tbl_mgr.Len();
|
||||
for (int i = 0; i < new_tbl_len; ++i) {
|
||||
Dbmeta_tbl_itm new_tbl = new_tbl_mgr.Get_at(i);
|
||||
|
||||
@@ -38,20 +38,20 @@ 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_.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());
|
||||
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().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) {
|
||||
byte[] ns_bgn_tkn = Bry_.new_a7("file-ns."), ns_end_tkn = Bry_.new_a7("-db."), pt_end_tkn = Bry_.new_a7(".xowa");
|
||||
int ns_bgn_tkn_len = ns_bgn_tkn.length, ns_end_tkn_len = ns_end_tkn.length;
|
||||
byte[] name = Bry_.new_u8(fil.Url_rel()); // EX: en.wikipedia.org-file-ns.000-db.001.xowa
|
||||
int ns_bgn = Bry_find_.Find_fwd(name, ns_bgn_tkn, 0); if (ns_bgn == Bry_find_.Not_found) throw Err_.new_wo_type("bin_db_itm.parse: invalid ns_bgn", "name", fil.Url_rel(), "conn", fil.Conn().Conn_info().Xto_raw());
|
||||
int ns_bgn = Bry_find_.Find_fwd(name, ns_bgn_tkn, 0); if (ns_bgn == Bry_find_.Not_found) throw Err_.new_wo_type("bin_db_itm.parse: invalid ns_bgn", "name", fil.Url_rel(), "conn", fil.Conn().Conn_info().Raw());
|
||||
ns_bgn += ns_bgn_tkn_len;
|
||||
int ns_end = Bry_find_.Find_fwd(name, ns_end_tkn, ns_bgn); if (ns_end == Bry_find_.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 ns_end = Bry_find_.Find_fwd(name, ns_end_tkn, ns_bgn); if (ns_end == Bry_find_.Not_found) throw Err_.new_wo_type("bin_db_itm.parse: invalid ns_end", "name", fil.Url_rel(), "conn", fil.Conn().Conn_info().Raw());
|
||||
int pt_bgn = ns_end + ns_end_tkn_len;
|
||||
int pt_end = Bry_find_.Find_fwd(name, pt_end_tkn, pt_bgn); if (pt_end == Bry_find_.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_.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());
|
||||
int pt_end = Bry_find_.Find_fwd(name, pt_end_tkn, pt_bgn); if (pt_end == Bry_find_.Not_found) throw Err_.new_wo_type("bin_db_itm.parse: invalid pt_end", "name", fil.Url_rel(), "conn", fil.Conn().Conn_info().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().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().Raw());
|
||||
return new Xob_bin_db_itm(fil.Id(), fil.Url(), ns_id, pt_id);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -25,8 +25,8 @@ public class Xob_diff_regy_exec_cmd_tst {
|
||||
fxt.Test_parse_url("/file/enwiki-001-atr.sql", "enwiki", 1, Fsdb_db_tid_.Tid_atr);
|
||||
}
|
||||
// @Test public void Smoke() {
|
||||
// Xoae_app app = Xoa_app_fxt.app_(Io_url_.new_dir_("C:\\xowa\\"), "wnt");
|
||||
// Xowe_wiki wiki = Xoa_app_fxt.wiki_tst_(app);
|
||||
// Xoae_app app = Xoa_app_fxt.Make__app__edit(Io_url_.new_dir_("C:\\xowa\\"), "wnt");
|
||||
// Xowe_wiki wiki = Xoa_app_fxt.Make__wiki__edit(app);
|
||||
// Xob_diff_regy_make_cmd cmd = new Xob_diff_regy_make_cmd(app.Bldr(), wiki);
|
||||
// cmd.Cmd_run();
|
||||
// }
|
||||
|
||||
@@ -28,15 +28,15 @@ public class Xob_diff_regy_make_cmd extends Xob_itm_basic_base implements Xob_cm
|
||||
public void Cmd_end() {}
|
||||
public void Cmd_term() {}
|
||||
private void Exec_main() {
|
||||
Db_conn make_db_provider = Xob_db_file.new__file_make(wiki.Fsys_mgr().Root_dir()).Conn();
|
||||
Db_conn make_db_provider = Xob_db_file.New__file_make(wiki.Fsys_mgr().Root_dir()).Conn();
|
||||
this.Make_join_indexes(make_db_provider);
|
||||
this.Make_diff_regy(make_db_provider);
|
||||
this.Make_delete_sql(make_db_provider);
|
||||
}
|
||||
private void Make_join_indexes(Db_conn make_db_provider) {
|
||||
try {
|
||||
make_db_provider.Ddl_create_idx(Dbmeta_idx_itm.new_normal_by_name("fsdb_regy", "fsdb_regy__join", "fsdb_name", "fsdb_is_orig", "fsdb_repo", "fsdb_w", "fsdb_time", "fsdb_page"));
|
||||
make_db_provider.Ddl_create_idx(Dbmeta_idx_itm.new_normal_by_name("xfer_regy", "xfer_regy__join", "lnki_ttl", "file_is_orig", "orig_repo", "file_w", "lnki_time", "lnki_page"));
|
||||
make_db_provider.Meta_idx_create(Dbmeta_idx_itm.new_normal_by_name("fsdb_regy", "fsdb_regy__join", "fsdb_name", "fsdb_is_orig", "fsdb_repo", "fsdb_w", "fsdb_time", "fsdb_page"));
|
||||
make_db_provider.Meta_idx_create(Dbmeta_idx_itm.new_normal_by_name("xfer_regy", "xfer_regy__join", "lnki_ttl", "file_is_orig", "orig_repo", "file_w", "lnki_time", "lnki_page"));
|
||||
}
|
||||
catch (Exception exc) {
|
||||
app.Usr_dlg().Warn_many("", "", "error while making indexes: err=~{0}", Err_.Message_gplx_full(exc));
|
||||
|
||||
@@ -80,7 +80,7 @@ public class Xob_fsdb_make_cmd extends Xob_itm_basic_base implements Xob_cmd {
|
||||
if (!trg_atr_fil.Conn().Eq(trg_cfg_mgr.Tbl().Conn())) // need to create txn for v1; DATE:2015-07-04
|
||||
trg_cfg_mgr.Tbl().Conn().Txn_bgn("bldr__fsdb_make__trg_cfg_fil");
|
||||
// bldr_db
|
||||
Xob_db_file bldr_db = Xob_db_file.new__file_make(wiki.Fsys_mgr().Root_dir());
|
||||
Xob_db_file bldr_db = Xob_db_file.New__file_make(wiki.Fsys_mgr().Root_dir());
|
||||
this.bldr_conn = bldr_db.Conn();
|
||||
this.bldr_cfg_tbl = bldr_db.Tbl__cfg(); // NOTE: cfg and atr is in same db; use it
|
||||
bldr_cfg_tbl.Conn().Txn_bgn("bldr__fsdb_make__bldr_cfg_tbl");
|
||||
|
||||
@@ -23,7 +23,7 @@ public class Xob_lnki_regy_cmd extends Xob_itm_basic_base implements Xob_cmd {
|
||||
public String Cmd_key() {return Xob_cmd_keys.Key_file_lnki_regy;}
|
||||
public void Cmd_init(Xob_bldr bldr) {}
|
||||
public void Cmd_bgn(Xob_bldr bldr) {
|
||||
Db_conn conn = Xob_db_file.new__file_make(wiki.Fsys_mgr().Root_dir()).Conn();
|
||||
Db_conn conn = Xob_db_file.New__file_make(wiki.Fsys_mgr().Root_dir()).Conn();
|
||||
Xob_lnki_regy_tbl.Create_table(conn);
|
||||
Xob_lnki_regy_tbl.Create_data(usr_dlg, conn, Xob_lnki_temp_wkr.Ns_file_is_case_match_all(wiki));
|
||||
}
|
||||
|
||||
@@ -39,7 +39,7 @@ class Xob_lnki_temp_tbl {
|
||||
private Db_stmt stmt_insert;
|
||||
public Xob_lnki_temp_tbl(Db_conn conn) {this.conn = conn;}
|
||||
public Db_conn Conn() {return conn;} private final Db_conn conn;
|
||||
public void Create_tbl() {conn.Ddl_create_tbl(Dbmeta_tbl_itm.New(Tbl_name, flds));}
|
||||
public void Create_tbl() {conn.Meta_tbl_create(Dbmeta_tbl_itm.New(Tbl_name, flds));}
|
||||
public void Insert_bgn() {conn.Txn_bgn("bldr__lnki_temp"); stmt_insert = conn.Stmt_insert(Tbl_name, flds);}
|
||||
public void Insert_commit() {conn.Txn_sav();}
|
||||
public void Insert_end() {conn.Txn_end(); stmt_insert = Db_stmt_.Rls(stmt_insert);}
|
||||
|
||||
@@ -42,7 +42,7 @@ public class Xob_lnki_temp_wkr extends Xob_dump_mgr_base implements gplx.xowa.pa
|
||||
}
|
||||
@Override protected Db_conn Init_db_file() {
|
||||
ctx.Lnki().File_logger_(this);
|
||||
Xob_db_file make_db = Xob_db_file.new__file_make(wiki.Fsys_mgr().Root_dir());
|
||||
Xob_db_file make_db = Xob_db_file.New__file_make(wiki.Fsys_mgr().Root_dir());
|
||||
Db_conn make_conn = make_db.Conn();
|
||||
this.tbl = new Xob_lnki_temp_tbl(make_conn); tbl.Create_tbl();
|
||||
this.gen_hdump = hdump_bldr.Init(wiki, make_conn);
|
||||
|
||||
@@ -23,7 +23,6 @@ public class Xob_lnki_temp_wkr_tst {
|
||||
fxt.Init_Xto_commons(true);
|
||||
fxt.Test_Xto_commons("a", "A");
|
||||
fxt.Test_Xto_commons("A", null);
|
||||
|
||||
fxt.Init_Xto_commons(false);
|
||||
fxt.Test_Xto_commons("a", null);
|
||||
fxt.Test_Xto_commons("A", null);
|
||||
@@ -33,12 +32,11 @@ class Xob_lnki_temp_wkr_fxt {
|
||||
private boolean wiki_ns_file_is_case_match_all;
|
||||
private Xowe_wiki commons_wiki;
|
||||
public Xob_lnki_temp_wkr_fxt Init_Xto_commons(boolean wiki_ns_file_is_case_match_all) {
|
||||
Xoae_app app = Xoa_app_fxt.app_();
|
||||
Xoae_app app = Xoa_app_fxt.Make__app__edit();
|
||||
this.wiki_ns_file_is_case_match_all = wiki_ns_file_is_case_match_all;
|
||||
this.commons_wiki = Xoa_app_fxt.wiki_tst_(app); // commons_wiki will default to Xow_ns.Id_file of case_match_1st
|
||||
this.commons_wiki = Xoa_app_fxt.Make__wiki__edit(app); // commons_wiki will default to Xow_ns.Id_file of case_match_1st
|
||||
return this;
|
||||
}
|
||||
|
||||
public void Test_Xto_commons(String ttl, String expd) {
|
||||
Tfds.Eq(expd, String_.new_u8(Xob_lnki_temp_wkr.Xto_commons(wiki_ns_file_is_case_match_all, commons_wiki, Bry_.new_u8(ttl))));
|
||||
}
|
||||
|
||||
@@ -25,7 +25,7 @@ public class Xob_orig_regy_cmd extends Xob_itm_basic_base implements Xob_cmd {
|
||||
public String Cmd_key() {return Xob_cmd_keys.Key_file_orig_regy;}
|
||||
public void Cmd_init(Xob_bldr bldr) {}
|
||||
public void Cmd_bgn(Xob_bldr bldr) {
|
||||
Db_conn conn = Xob_db_file.new__file_make(wiki.Fsys_mgr().Root_dir()).Conn();
|
||||
Db_conn conn = Xob_db_file.New__file_make(wiki.Fsys_mgr().Root_dir()).Conn();
|
||||
Xob_orig_regy_tbl.Create_table(conn);
|
||||
Xowe_wiki commons_wiki = bldr.App().Wiki_mgr().Get_by_or_make(Xow_domain_itm_.Bry__commons).Init_assert();
|
||||
Xowe_wiki repo_0 = wiki, repo_1 = commons_wiki;
|
||||
@@ -34,7 +34,7 @@ public class Xob_orig_regy_cmd extends Xob_itm_basic_base implements Xob_cmd {
|
||||
repo_1 = wiki;
|
||||
}
|
||||
repo_0.Init_assert(); repo_1.Init_assert();
|
||||
Xob_db_file file_registry_db = Xob_db_file.new__page_regy(commons_wiki.Fsys_mgr().Root_dir());
|
||||
Xob_db_file file_registry_db = Xob_db_file.New__page_regy(commons_wiki.Fsys_mgr().Root_dir());
|
||||
Xob_orig_regy_tbl.Create_data(bldr.Usr_dlg(), conn, file_registry_db, repo_0_is_remote, repo_0, repo_1, Xob_lnki_temp_wkr.Ns_file_is_case_match_all(wiki));
|
||||
}
|
||||
public void Cmd_run() {}
|
||||
|
||||
@@ -57,11 +57,9 @@ class Xob_orig_regy_tbl {
|
||||
String lnki_ttl_fld = wiki_has_cs_file ? "Coalesce(o.lnki_commons_ttl, o.lnki_ttl)" : "o.lnki_ttl"; // NOTE: use lnki_commons_ttl if [[File]] is cs PAGE:en.d:water EX:[[image:wikiquote-logo.png|50px|none|alt=]]; DATE:2014-09-05
|
||||
if (wiki_has_cs_file)
|
||||
Sqlite_engine_.Idx_create(usr_dlg, conn, "orig_regy", Idx_ttl_remote);
|
||||
Db_attach_cmd.new_(conn, "image_db", join)
|
||||
.Add_fmt("orig_regy:updating page" , Sql_update_repo_page, repo_tid, lnki_ttl_fld)
|
||||
.Add_fmt("orig_regy:updating redirect" , Sql_update_repo_redirect, repo_tid, lnki_ttl_fld)
|
||||
.Exec()
|
||||
;
|
||||
new Db_attach_mgr(conn, new Db_attach_itm("image_db", join))
|
||||
.Exec_sql_w_msg("orig_regy:updating page" , Sql_update_repo_page, repo_tid, lnki_ttl_fld)
|
||||
.Exec_sql_w_msg("orig_regy:updating redirect" , Sql_update_repo_redirect, repo_tid, lnki_ttl_fld);
|
||||
}
|
||||
private static void Create_data_for_cs(Gfo_usr_dlg usr_dlg, Db_conn p, Xowe_wiki local_wiki, Io_url repo_remote_dir) {
|
||||
p.Exec_sql(Xob_orig_regy_tbl.Sql_cs_mark_dupes); // orig_regy: find dupes; see note in SQL
|
||||
@@ -145,7 +143,7 @@ class Xob_orig_regy_tbl {
|
||||
, ", i.img_minor_mime"
|
||||
, ", i.img_timestamp"
|
||||
, "FROM orig_regy o"
|
||||
, " JOIN <attach_db>image i ON {1} = i.img_name"
|
||||
, " JOIN <image_db>image i ON {1} = i.img_name"
|
||||
, " JOIN page_db.page_regy m ON m.repo_id = {0} AND m.itm_tid = 0 AND {1} = m.src_ttl"
|
||||
, "WHERE o.orig_file_ttl IS NULL" // NOTE: only insert if file doesn't exist; changed from timestamp b/c old images may exist in both wikis; EX:ar.n:File:Facebook.png; DATE:2014-08-20
|
||||
// , "WHERE i.img_timestamp > o.orig_timestamp" // NOTE: this handles an image in local and remote by taking later version; DATE:2014-07-22
|
||||
@@ -176,7 +174,7 @@ class Xob_orig_regy_tbl {
|
||||
, ", i.img_timestamp"
|
||||
, "FROM orig_regy o"
|
||||
, " JOIN page_db.page_regy m ON m.repo_id = {0} AND m.itm_tid = 1 AND {1} = m.src_ttl"
|
||||
, " JOIN <attach_db>image i ON m.trg_ttl = i.img_name"
|
||||
, " JOIN <image_db>image i ON m.trg_ttl = i.img_name"
|
||||
, "WHERE o.orig_file_ttl IS NULL" // NOTE: only insert if file doesn't exist; changed from timestamp b/c old images may exist in both wikis; EX:ar.n:File:Facebook.png; DATE:2014-08-20
|
||||
// , "WHERE i.img_timestamp > o.orig_timestamp" // NOTE: this handles an image in local and remote by taking later version; DATE:2014-07-22
|
||||
, "ORDER BY 1" // must order by lnki_id since it is PRIMARY KEY, else sqlite will spend hours shuffling rows in table
|
||||
|
||||
@@ -25,7 +25,7 @@ public class Xob_orig_regy_update_cmd extends Xob_itm_basic_base implements Xob_
|
||||
public void Cmd_init(Xob_bldr bldr) {}
|
||||
public void Cmd_bgn(Xob_bldr bldr) {
|
||||
// Xof_orig_mgr qry_mgr = new Xof_orig_mgr();
|
||||
Db_conn conn = Xob_db_file.new__file_make(wiki.Fsys_mgr().Root_dir()).Conn();
|
||||
Db_conn conn = Xob_db_file.New__file_make(wiki.Fsys_mgr().Root_dir()).Conn();
|
||||
Xob_orig_regy_update_bmk_mgr bmk = new Xob_orig_regy_update_bmk_mgr();
|
||||
bmk.Init(conn, this.Cmd_key(), true, false, true);
|
||||
bmk.Load();
|
||||
|
||||
@@ -26,7 +26,7 @@ public class Xob_page_regy_cmd extends Xob_itm_basic_base implements Xob_cmd {
|
||||
public void Cmd_init(Xob_bldr bldr) {}
|
||||
public void Cmd_bgn(Xob_bldr bldr) {
|
||||
Xowe_wiki commons_wiki = bldr.App().Wiki_mgr().Get_by_or_make(Xow_domain_itm_.Bry__commons).Init_assert();
|
||||
Db_conn page_regy_provider = Xob_db_file.new__page_regy(commons_wiki.Fsys_mgr().Root_dir()).Conn();
|
||||
Db_conn page_regy_provider = Xob_db_file.New__page_regy(commons_wiki.Fsys_mgr().Root_dir()).Conn();
|
||||
commons_wiki.Init_assert();
|
||||
if (build_commons) {
|
||||
Xob_page_regy_tbl.Reset_table(page_regy_provider);
|
||||
|
||||
@@ -24,7 +24,7 @@ public class Xob_xfer_regy_cmd extends Xob_itm_basic_base implements Xob_cmd {
|
||||
public void Cmd_init(Xob_bldr bldr) {}
|
||||
public void Cmd_bgn(Xob_bldr bldr) {}
|
||||
public void Cmd_run() {
|
||||
Db_conn conn = Xob_db_file.new__file_make(wiki.Fsys_mgr().Root_dir()).Conn();
|
||||
Db_conn conn = Xob_db_file.New__file_make(wiki.Fsys_mgr().Root_dir()).Conn();
|
||||
conn.Txn_bgn("bldr__xfer_regy");
|
||||
Xob_xfer_regy_tbl.Create_table(conn);
|
||||
Xob_xfer_regy_tbl.Create_data(usr_dlg, conn);
|
||||
|
||||
@@ -42,10 +42,10 @@ public class Xob_xfer_regy_tbl {
|
||||
;
|
||||
return conn.Exec_qry_as_old_rdr(qry);
|
||||
}
|
||||
public static Db_stmt Select_by_page_id_stmt(Db_conn p) {return p.Stmt_new(Db_qry_sql.rdr_(Sql_select_itm));}
|
||||
public static Db_stmt Select_by_page_id_stmt(Db_conn p) {return p.Stmt_sql(Sql_select_clause);}
|
||||
public static DataRdr Select_by_page_id(Db_stmt stmt, int page_id, int limit) {return stmt.Val_int(page_id).Val_int(limit).Exec_select();}
|
||||
private static final String
|
||||
Sql_select_itm = String_.Concat_lines_nl
|
||||
Sql_select_clause = String_.Concat_lines_nl
|
||||
( "SELECT *"
|
||||
, "FROM xfer_regy"
|
||||
, "WHERE xfer_status = 0"
|
||||
|
||||
@@ -28,7 +28,7 @@ public class Xob_xfer_regy_update_cmd extends Xob_itm_basic_base implements Xob_
|
||||
public void Cmd_term() {}
|
||||
private void Exec_main() {
|
||||
wiki.Init_assert(); // NOTE: must init wiki to set up db_core; DATE:2015-08-17
|
||||
Db_conn make_db_provider = Xob_db_file.new__file_make(wiki.Fsys_mgr().Root_dir()).Conn();
|
||||
Db_conn make_db_provider = Xob_db_file.New__file_make(wiki.Fsys_mgr().Root_dir()).Conn();
|
||||
this.Copy_atrs_to_make_db(make_db_provider);
|
||||
this.Update_status(make_db_provider);
|
||||
}
|
||||
|
||||
@@ -26,11 +26,11 @@ public class Xob_xfer_temp_cmd_orig extends Xob_itm_basic_base implements Xob_cm
|
||||
public String Cmd_key() {return Xob_cmd_keys.Key_file_xfer_temp_orig;}
|
||||
public void Cmd_init(Xob_bldr bldr) {}
|
||||
public void Cmd_bgn(Xob_bldr bldr) {
|
||||
Db_conn conn = Xob_db_file.new__file_make(wiki.Fsys_mgr().Root_dir()).Conn();
|
||||
Db_conn conn = Xob_db_file.New__file_make(wiki.Fsys_mgr().Root_dir()).Conn();
|
||||
Xob_xfer_temp_tbl.Create_table(conn);
|
||||
Db_stmt trg_stmt = Xob_xfer_temp_tbl.Insert_stmt(conn);
|
||||
conn.Txn_bgn("bldr__xfer_temp");
|
||||
DataRdr rdr = conn.Exec_sql_as_old_rdr(Sql_select_itm);
|
||||
DataRdr rdr = conn.Exec_sql_as_old_rdr(Sql_select_clause);
|
||||
long[] ext_maxs = Calc_ext_max();
|
||||
while (rdr.MoveNextPeer()) {
|
||||
int lnki_ext = rdr.ReadByte(Xob_lnki_regy_tbl.Fld_lnki_ext);
|
||||
@@ -76,7 +76,7 @@ public class Xob_xfer_temp_cmd_orig extends Xob_itm_basic_base implements Xob_cm
|
||||
public void Cmd_end() {}
|
||||
public void Cmd_term() {}
|
||||
private static final String
|
||||
Sql_select_itm = String_.Concat_lines_nl
|
||||
Sql_select_clause = String_.Concat_lines_nl
|
||||
( "SELECT DISTINCT"
|
||||
, " l.lnki_id"
|
||||
// , ", lnki_ttl"
|
||||
|
||||
@@ -24,11 +24,11 @@ public class Xob_xfer_temp_cmd_thumb extends Xob_itm_basic_base implements Xob_c
|
||||
public String Cmd_key() {return Xob_cmd_keys.Key_file_xfer_temp_thumb;}
|
||||
public void Cmd_init(Xob_bldr bldr) {}
|
||||
public void Cmd_bgn(Xob_bldr bldr) {
|
||||
Db_conn conn = Xob_db_file.new__file_make(wiki.Fsys_mgr().Root_dir()).Conn();
|
||||
Db_conn conn = Xob_db_file.New__file_make(wiki.Fsys_mgr().Root_dir()).Conn();
|
||||
Xob_xfer_temp_tbl.Create_table(conn);
|
||||
Db_stmt trg_stmt = Xob_xfer_temp_tbl.Insert_stmt(conn);
|
||||
conn.Txn_bgn("bldr__xfer_temp_thumb");
|
||||
DataRdr rdr = conn.Exec_sql_as_old_rdr(Sql_select_itm);
|
||||
DataRdr rdr = conn.Exec_sql_as_old_rdr(Sql_select_clause);
|
||||
Xob_xfer_temp_itm temp_itm = new Xob_xfer_temp_itm();
|
||||
Xof_img_size img_size = new Xof_img_size();
|
||||
byte[] cur_ttl = Bry_.Empty; byte cur_repo = Byte_.Max_value_127;
|
||||
@@ -52,7 +52,7 @@ public class Xob_xfer_temp_cmd_thumb extends Xob_itm_basic_base implements Xob_c
|
||||
public void Cmd_end() {}
|
||||
public void Cmd_term() {}
|
||||
private static final String
|
||||
Sql_select_itm = String_.Concat_lines_nl
|
||||
Sql_select_clause = String_.Concat_lines_nl
|
||||
( "SELECT l.lnki_id"
|
||||
, ", l.lnki_tier_id"
|
||||
, ", l.lnki_page_id"
|
||||
|
||||
@@ -24,78 +24,75 @@ public class Xob_xfer_temp_itm_tst {
|
||||
private Xob_xfer_temp_itm_fxt fxt = new Xob_xfer_temp_itm_fxt();
|
||||
@Before public void init() {fxt.Reset();}
|
||||
@Test public void Pass() {fxt.Test_pass().Test_itm_chk_fail_id_none();}
|
||||
@Test public void Missing_orig() {fxt.Test_fail(Xob_xfer_temp_itm.Chk_tid_orig_page_id_is_null , KeyVal_.new_(Xob_orig_regy_tbl.Fld_orig_page_id, null));}
|
||||
@Test public void File_is_audio() {fxt.Test_fail(Xob_xfer_temp_itm.Chk_tid_orig_media_type_is_audio , KeyVal_.new_(Xob_orig_regy_tbl.Fld_orig_media_type, Xof_media_type.Name_audio));}
|
||||
@Test public void Missing_orig() {fxt.Test_fail(Xob_xfer_temp_itm.Chk_tid_orig_page_id_is_null , Keyval_.new_(Xob_orig_regy_tbl.Fld_orig_page_id, null));}
|
||||
@Test public void File_is_audio() {fxt.Test_fail(Xob_xfer_temp_itm.Chk_tid_orig_media_type_is_audio , Keyval_.new_(Xob_orig_regy_tbl.Fld_orig_media_type, Xof_media_type.Name_audio));}
|
||||
@Test public void File_is_mid() {
|
||||
fxt.Test_fail(Xob_xfer_temp_itm.Chk_tid_orig_media_type_is_audio , KeyVal_.new_(Xob_orig_regy_tbl.Fld_orig_file_ext, Xof_ext_.Id_mid));
|
||||
fxt.Test_fail(Xob_xfer_temp_itm.Chk_tid_orig_media_type_is_audio , Keyval_.new_(Xob_orig_regy_tbl.Fld_orig_file_ext, Xof_ext_.Id_mid));
|
||||
}
|
||||
@Test public void Redirect_src_is_empty() { // orig_cmd sets all direct files to have "orig_join" == "lnki_ttl"
|
||||
fxt.Test_bgn
|
||||
( KeyVal_.new_(Xob_orig_regy_tbl.Fld_orig_file_ttl , "A.png")
|
||||
, KeyVal_.new_(Xob_orig_regy_tbl.Fld_lnki_ttl , "A.png")
|
||||
( Keyval_.new_(Xob_orig_regy_tbl.Fld_orig_file_ttl , "A.png")
|
||||
, Keyval_.new_(Xob_orig_regy_tbl.Fld_lnki_ttl , "A.png")
|
||||
);
|
||||
fxt.Test_lnki_redirect_src(""); // confirm redirect_src set to ""
|
||||
}
|
||||
@Test public void Redirect_src_has_val() { // orig_cmd sets all redirect files to have "orig_join" = redirect and "lnki_ttl" as orig; EX: A.png redirects to B.png; orig_join will be B.png (the actual image) and redirect_src will be A.png (the original lnki)
|
||||
fxt.Test_bgn
|
||||
( KeyVal_.new_(Xob_orig_regy_tbl.Fld_orig_file_ttl , "B.png")
|
||||
, KeyVal_.new_(Xob_orig_regy_tbl.Fld_lnki_ttl , "A.png")
|
||||
( Keyval_.new_(Xob_orig_regy_tbl.Fld_orig_file_ttl , "B.png")
|
||||
, Keyval_.new_(Xob_orig_regy_tbl.Fld_lnki_ttl , "A.png")
|
||||
);
|
||||
fxt.Test_lnki_redirect_src("A.png"); // confirm redirect_src set to ""
|
||||
}
|
||||
@Test public void Redirect_should_take_trg_ext() {// if "A.png" redirects to "B.jpg", ext_id should be ".jpg" (the actual file) not ".png (lnki_ext_id)
|
||||
fxt.Test_bgn
|
||||
( KeyVal_.new_(Xob_orig_regy_tbl.Fld_orig_file_ttl , "B.jpg")
|
||||
, KeyVal_.new_(Xob_orig_regy_tbl.Fld_lnki_ttl , "A.png")
|
||||
, KeyVal_.new_(Xob_orig_regy_tbl.Fld_orig_file_ext , Xof_ext_.Id_jpg) // .png b/c B.jpg
|
||||
( Keyval_.new_(Xob_orig_regy_tbl.Fld_orig_file_ttl , "B.jpg")
|
||||
, Keyval_.new_(Xob_orig_regy_tbl.Fld_lnki_ttl , "A.png")
|
||||
, Keyval_.new_(Xob_orig_regy_tbl.Fld_orig_file_ext , Xof_ext_.Id_jpg) // .png b/c B.jpg
|
||||
);
|
||||
fxt.Test_lnki_ext_id(Xof_ext_.Id_jpg); // confirm ext changed to .jpg
|
||||
}
|
||||
@Test public void Thumbtime_check() {// PURPOSE: one image actually had a thumbtime defined; EX: General_Dynamics_F-16_Fighting_Falcon; [[File:Crash.arp.600pix.jpg|thumb|thumbtime=2]]
|
||||
fxt.Test_bgn
|
||||
( KeyVal_.new_(Xob_orig_regy_tbl.Fld_orig_file_ext , Xof_ext_.Id_jpg)
|
||||
, KeyVal_.new_(Xob_lnki_regy_tbl.Fld_lnki_time , (double)3)
|
||||
( Keyval_.new_(Xob_orig_regy_tbl.Fld_orig_file_ext , Xof_ext_.Id_jpg)
|
||||
, Keyval_.new_(Xob_lnki_regy_tbl.Fld_lnki_time , (double)3)
|
||||
);
|
||||
fxt.Test_lnki_thumbtime(Xof_lnki_time.Null);
|
||||
|
||||
fxt.Reset().Test_bgn
|
||||
( KeyVal_.new_(Xob_orig_regy_tbl.Fld_orig_media_type , Xof_media_type.Name_video)
|
||||
, KeyVal_.new_(Xob_lnki_regy_tbl.Fld_lnki_time , (double)3)
|
||||
( Keyval_.new_(Xob_orig_regy_tbl.Fld_orig_media_type , Xof_media_type.Name_video)
|
||||
, Keyval_.new_(Xob_lnki_regy_tbl.Fld_lnki_time , (double)3)
|
||||
);
|
||||
fxt.Test_lnki_thumbtime(3);
|
||||
}
|
||||
@Test public void Page_check() {
|
||||
fxt.Test_bgn
|
||||
( KeyVal_.new_(Xob_orig_regy_tbl.Fld_orig_file_ext , Xof_ext_.Id_jpg)
|
||||
, KeyVal_.new_(Xob_lnki_regy_tbl.Fld_lnki_page , 3)
|
||||
( Keyval_.new_(Xob_orig_regy_tbl.Fld_orig_file_ext , Xof_ext_.Id_jpg)
|
||||
, Keyval_.new_(Xob_lnki_regy_tbl.Fld_lnki_page , 3)
|
||||
);
|
||||
fxt.Test_lnki_page(Xof_lnki_page.Null);
|
||||
|
||||
fxt.Reset().Test_bgn
|
||||
( KeyVal_.new_(Xob_orig_regy_tbl.Fld_orig_file_ext , Xof_ext_.Id_pdf)
|
||||
, KeyVal_.new_(Xob_lnki_regy_tbl.Fld_lnki_page , 3)
|
||||
( Keyval_.new_(Xob_orig_regy_tbl.Fld_orig_file_ext , Xof_ext_.Id_pdf)
|
||||
, Keyval_.new_(Xob_lnki_regy_tbl.Fld_lnki_page , 3)
|
||||
);
|
||||
fxt.Test_lnki_page(3);
|
||||
|
||||
fxt.Reset().Test_bgn
|
||||
( KeyVal_.new_(Xob_orig_regy_tbl.Fld_orig_file_ext , Xof_ext_.Id_djvu)
|
||||
, KeyVal_.new_(Xob_lnki_regy_tbl.Fld_lnki_page , 3)
|
||||
( Keyval_.new_(Xob_orig_regy_tbl.Fld_orig_file_ext , Xof_ext_.Id_djvu)
|
||||
, Keyval_.new_(Xob_lnki_regy_tbl.Fld_lnki_page , 3)
|
||||
);
|
||||
fxt.Test_lnki_page(3);
|
||||
}
|
||||
@Test public void Media_should_be_ignored() {// ignore [[Media:]] for xfer_thumb (needed for xfer_orig)
|
||||
fxt.Test_bgn
|
||||
( KeyVal_.new_(Xob_orig_regy_tbl.Fld_lnki_ttl , "A.png")
|
||||
, KeyVal_.new_(Xob_lnki_regy_tbl.Fld_lnki_src_tid , Xop_file_logger_.Tid__media)
|
||||
( Keyval_.new_(Xob_orig_regy_tbl.Fld_lnki_ttl , "A.png")
|
||||
, Keyval_.new_(Xob_lnki_regy_tbl.Fld_lnki_src_tid , Xop_file_logger_.Tid__media)
|
||||
);
|
||||
fxt.Test_itm_chk_fail_id(Xob_xfer_temp_itm.Chk_tid_ns_is_media);
|
||||
}
|
||||
@Test public void Orig_width_is_0() {// PURPOSE: ignore files with an orig width of 0; note that ogg files that are sometimes flagged as VIDEO; EX:2009_10_08_Marc_Randazza_interview.ogg; DATE:2014-08-20
|
||||
fxt.Test_bgn
|
||||
( KeyVal_.new_(Xob_orig_regy_tbl.Fld_lnki_ttl , "A.ogg")
|
||||
, KeyVal_.new_(Xob_orig_regy_tbl.Fld_orig_media_type , Xof_media_type.Name_video) // VIDEO
|
||||
, KeyVal_.new_(Xob_orig_regy_tbl.Fld_orig_w , 0) // no width defined in image table
|
||||
, KeyVal_.new_(Xob_orig_regy_tbl.Fld_orig_h , 0)
|
||||
( Keyval_.new_(Xob_orig_regy_tbl.Fld_lnki_ttl , "A.ogg")
|
||||
, Keyval_.new_(Xob_orig_regy_tbl.Fld_orig_media_type , Xof_media_type.Name_video) // VIDEO
|
||||
, Keyval_.new_(Xob_orig_regy_tbl.Fld_orig_w , 0) // no width defined in image table
|
||||
, Keyval_.new_(Xob_orig_regy_tbl.Fld_orig_h , 0)
|
||||
);
|
||||
fxt.Test_itm_chk_fail_id(Xob_xfer_temp_itm.Chk_tid_orig_w_is_0);
|
||||
}
|
||||
@@ -154,16 +151,16 @@ class Xob_xfer_temp_itm_fxt {
|
||||
return this;
|
||||
}
|
||||
public Xob_xfer_temp_itm_fxt Test_pass() {return Test_bgn();}
|
||||
public Xob_xfer_temp_itm_fxt Test_fail(byte fail_tid, KeyVal... kvs) {
|
||||
public Xob_xfer_temp_itm_fxt Test_fail(byte fail_tid, Keyval... kvs) {
|
||||
Test_bgn(kvs);
|
||||
this.Test_itm_chk_fail_id(fail_tid);
|
||||
return this;
|
||||
}
|
||||
public Xob_xfer_temp_itm_fxt Test_bgn(KeyVal... kvs) {
|
||||
public Xob_xfer_temp_itm_fxt Test_bgn(Keyval... kvs) {
|
||||
Init_rdr_image();
|
||||
int len = kvs.length;
|
||||
for (int i = 0; i < len; i++) {
|
||||
KeyVal kv = kvs[i];
|
||||
Keyval kv = kvs[i];
|
||||
Init_rdr(kv.Key(), kv.Val());
|
||||
}
|
||||
this.Exec_load();
|
||||
|
||||
@@ -24,12 +24,11 @@ public class Xob_xfer_update_cmd extends Xob_itm_basic_base implements Xob_cmd {
|
||||
public String Cmd_key() {return Xob_cmd_keys.Key_file_xfer_update;}
|
||||
public void Cmd_run() {
|
||||
// init vars
|
||||
Xob_db_file cur_file = Xob_db_file.new__file_make(wiki.Fsys_mgr().Root_dir());
|
||||
Xob_db_file cur_file = Xob_db_file.New__file_make(wiki.Fsys_mgr().Root_dir());
|
||||
Db_conn conn = cur_file.Conn();
|
||||
if (prv_url == null) {
|
||||
prv_url = wiki.Appe().Fsys_mgr().File_dir().GenSubFil_nest(wiki.Domain_str(), "bldr", Xob_db_file.Name__file_make);
|
||||
}
|
||||
|
||||
// run sql
|
||||
Sqlite_engine_.Tbl_rename(conn, "xfer_regy", "xfer_regy_old");
|
||||
Xob_xfer_regy_tbl.Create_table(conn);
|
||||
@@ -38,7 +37,6 @@ public class Xob_xfer_update_cmd extends Xob_itm_basic_base implements Xob_cmd {
|
||||
Sqlite_engine_.Db_detach(conn, "old_db");
|
||||
Sqlite_engine_.Tbl_delete(conn, "xfer_regy_old");
|
||||
Xob_xfer_regy_tbl.Create_index(usr_dlg, conn);
|
||||
|
||||
// // rotate db
|
||||
// DateAdp wiki_date = wiki.Db_mgr().Dump_date_query();
|
||||
// Io_url archive_url = prv_url.GenNewNameOnly("oimg_lnki_" + wiki_date.XtoStr_fmt("yyyyMMdd"));
|
||||
|
||||
@@ -22,7 +22,7 @@ import gplx.xowa.wikis.nss.*;
|
||||
import gplx.xowa.wikis.data.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.wikis.dbs.*;
|
||||
import gplx.xowa.wikis.*; import gplx.xowa.bldrs.filters.dansguardians.*; import gplx.xowa.apps.apis.xowa.bldrs.imports.*;
|
||||
import gplx.xowa.parsers.utils.*;
|
||||
public class Xob_page_cmd extends Xob_itm_basic_base implements Xobd_wkr, GfoInvkAble {
|
||||
public class Xob_page_cmd extends Xob_itm_basic_base implements Xob_page_wkr, GfoInvkAble {
|
||||
private Xowd_db_mgr db_mgr; private Db_idx_mode idx_mode = Db_idx_mode.Itm_end; private Xowd_page_tbl page_core_tbl; private Io_stream_zip_mgr text_zip_mgr; private byte text_zip_tid;
|
||||
private Xop_redirect_mgr redirect_mgr; private Xob_redirect_tbl redirect_tbl; private boolean redirect_id_enabled;
|
||||
private DateAdp modified_latest = DateAdp_.MinValue; private int page_count_all, page_count_main = 0; private int commit_interval = 100000; // 100 k
|
||||
@@ -72,7 +72,7 @@ public class Xob_page_cmd extends Xob_itm_basic_base implements Xobd_wkr, GfoInv
|
||||
++page_count_all;
|
||||
if (ns.Id_is_main() && !page.Redirected()) ++page_count_main;
|
||||
if (page_count_all % commit_interval == 0) {
|
||||
page_core_tbl.Conn().Txn_sav(); text_db.Conn().Txn_sav();
|
||||
page_core_tbl.conn.Txn_sav(); text_db.Conn().Txn_sav();
|
||||
if (redirect_id_enabled) redirect_tbl.Conn().Txn_sav();
|
||||
if (dg_match_mgr != null) dg_match_mgr.Commit();
|
||||
}
|
||||
@@ -91,7 +91,7 @@ public class Xob_page_cmd extends Xob_itm_basic_base implements Xobd_wkr, GfoInv
|
||||
if (redirect_id_enabled) {
|
||||
redirect_tbl.Conn().Txn_end();
|
||||
redirect_tbl.Update_trg_redirect_id(db_core.Url(), 1);
|
||||
redirect_tbl.Update_src_redirect_id(db_core.Url(), page_core_tbl.Conn());
|
||||
redirect_tbl.Update_src_redirect_id(db_core.Url(), page_core_tbl.conn);
|
||||
}
|
||||
}
|
||||
@Override public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {
|
||||
@@ -102,6 +102,4 @@ public class Xob_page_cmd extends Xob_itm_basic_base implements Xobd_wkr, GfoInv
|
||||
return this;
|
||||
}
|
||||
private static final String Invk_commit_interval_ = "commit_interval_", Invk_idx_mode_ = "idx_mode_", Invk_redirect_id_enabled_ = "redirect_id_enabled_";
|
||||
public void Wkr_ini(Xob_bldr bldr) {}
|
||||
public void Wkr_print() {}
|
||||
}
|
||||
|
||||
@@ -16,7 +16,7 @@ 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.*; import gplx.dbs.*; import gplx.xowa.specials.search.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.ctgs.*; import gplx.xowa.wikis.nss.*;
|
||||
import org.junit.*; import gplx.dbs.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.ctgs.*; import gplx.xowa.wikis.nss.*;
|
||||
public class Xob_page_cmd_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();}
|
||||
|
||||
@@ -26,10 +26,9 @@ public class Xob_page_delete_cmd extends Xob_cmd_base {
|
||||
Xowd_db_file core_db = wiki.Data__core_mgr().Db__core();
|
||||
Db_conn core_db_conn = core_db.Conn();
|
||||
Gfo_usr_dlg usr_dlg = Gfo_usr_dlg_.Instance;
|
||||
|
||||
usr_dlg.Plog_many("", "", "creating page_filter");
|
||||
if (!core_db_conn.Meta_tbl_exists("page_filter")) {
|
||||
core_db_conn.Ddl_create_tbl
|
||||
core_db_conn.Meta_tbl_create
|
||||
( Dbmeta_tbl_itm.New("page_filter", new Dbmeta_fld_itm[]
|
||||
{ Dbmeta_fld_itm.new_int("page_id").Primary_y_()
|
||||
, Dbmeta_fld_itm.new_int("page_text_db_id")
|
||||
@@ -38,7 +37,6 @@ public class Xob_page_delete_cmd extends Xob_cmd_base {
|
||||
, Dbmeta_idx_itm.new_normal_by_tbl("page_filter", "page_id", "page_id")
|
||||
));
|
||||
}
|
||||
|
||||
core_db_conn.Exec_sql_plog_ntx("finding missing redirects", String_.Concat_lines_nl_skip_last
|
||||
( "INSERT INTO page_filter (page_id, page_text_db_id)"
|
||||
, "SELECT ptr.page_id, ptr.page_text_db_id"
|
||||
@@ -53,7 +51,6 @@ public class Xob_page_delete_cmd extends Xob_cmd_base {
|
||||
, "AND ptr.page_redirect_id = -1"
|
||||
, ";"
|
||||
));
|
||||
|
||||
try {
|
||||
Xowd_db_file[] db_files = core_db.Tbl__db().Select_all(wiki.Data__core_mgr().Props(), wiki.Fsys_mgr().Root_dir());
|
||||
int len = db_files.length;
|
||||
@@ -69,9 +66,9 @@ public class Xob_page_delete_cmd extends Xob_cmd_base {
|
||||
case Xowd_db_file_.Tid_search_core: db_file_is_search = Bool_.Y; break;
|
||||
}
|
||||
int db_id = db_file.Id();
|
||||
if (db_file_is_text) Run_sql(core_db_conn, db_file.Url(), db_id, "deleting text: " + db_id, "DELETE FROM <attach_db>text WHERE page_id IN (SELECT page_id FROM page_filter WHERE page_text_db_id = {0});");
|
||||
if (db_file_is_cat) Run_sql(core_db_conn, db_file.Url(), db_id, "deleting cat: " + db_id, "DELETE FROM <attach_db>cat_link WHERE cl_from IN (SELECT page_id FROM page_filter);");
|
||||
if (db_file_is_search) Run_sql(core_db_conn, db_file.Url(), db_id, "deleting search:" + db_id, "DELETE FROM <attach_db>search_link WHERE page_id IN (SELECT page_id FROM page_filter);");
|
||||
if (db_file_is_text) Run_sql(core_db_conn, db_file.Url(), db_id, "deleting text: " + db_id, "DELETE FROM <data_db>text WHERE page_id IN (SELECT page_id FROM page_filter WHERE page_text_db_id = {0});");
|
||||
if (db_file_is_cat) Run_sql(core_db_conn, db_file.Url(), db_id, "deleting cat: " + db_id, "DELETE FROM <data_db>cat_link WHERE cl_from IN (SELECT page_id FROM page_filter);");
|
||||
if (db_file_is_search) Run_sql(core_db_conn, db_file.Url(), db_id, "deleting search:" + db_id, "DELETE FROM <data_db>search_link WHERE page_id IN (SELECT page_id FROM page_filter);");
|
||||
if (db_file_is_text || db_file_is_cat || db_file_is_search)
|
||||
db_file.Conn().Env_vacuum();
|
||||
}
|
||||
@@ -82,8 +79,7 @@ public class Xob_page_delete_cmd extends Xob_cmd_base {
|
||||
usr_dlg.Plog_many("", "", "");
|
||||
}
|
||||
private void Run_sql(Db_conn core_db_conn, Io_url db_url, int db_id, String prog_msg, String sql) {
|
||||
Db_attach_cmd.new_(core_db_conn, "data_db", db_url)
|
||||
.Add_fmt(prog_msg , sql, db_id)
|
||||
.Exec();
|
||||
new Db_attach_mgr(core_db_conn, new Db_attach_itm("data_db", db_url))
|
||||
.Exec_sql_w_msg(prog_msg , sql, db_id);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,73 +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 <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.bldrs.wkrs.*; import gplx.xowa.bldrs.sqls.*;
|
||||
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_.To_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"
|
||||
);
|
||||
}
|
||||
@@ -1,61 +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 <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_.To_str(ctg_id));
|
||||
// }
|
||||
// }
|
||||
}
|
||||
@@ -1,90 +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 <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.core.envs.*;
|
||||
import gplx.xowa.langs.*;
|
||||
import gplx.xowa.bldrs.wkrs.*;
|
||||
import gplx.xowa.wikis.data.*; import gplx.dbs.*; import gplx.dbs.engines.sqlite.*; import gplx.xowa.wikis.dbs.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.bldrs.*;
|
||||
public class Xob_search_sql_cmd extends Xob_itm_basic_base implements Xob_cmd { // search version 2; upgrade
|
||||
private int commit_interval = 100000, progress_interval = 10000;
|
||||
public Xob_search_sql_cmd(Xob_bldr bldr, Xowe_wiki wiki) {this.Cmd_ctor(bldr, wiki);}
|
||||
public String Cmd_key() {return Xob_cmd_keys.Key_text_search_cmd;}
|
||||
public void Cmd_init(Xob_bldr bldr) {}
|
||||
public void Cmd_bgn(Xob_bldr bldr) {}
|
||||
public void Cmd_run() {this.Exec(wiki);}
|
||||
public void Cmd_end() {}
|
||||
public void Cmd_term() {}
|
||||
public void Exec(Xowe_wiki wiki) {
|
||||
if (!Env_.Mode_testing()) wiki.Init_assert();
|
||||
Xowd_db_mgr db_mgr = wiki.Db_mgr_as_sql().Core_data_mgr();
|
||||
db_mgr.Dbs__delete_by_tid(Xowd_db_file_.Tid_search_core);
|
||||
Xowd_db_file search_db = Xob_search_sql_cmd.Dbs__get_or_make(db_mgr);
|
||||
Db_conn search_conn = search_db.Conn();
|
||||
Xowd_search_temp_tbl search_temp_tbl = new Xowd_search_temp_tbl(search_conn, db_mgr.Props().Schema_is_1());
|
||||
search_temp_tbl.Create_tbl();
|
||||
search_conn.Exec_delete_all(search_temp_tbl.Tbl_name());
|
||||
search_temp_tbl.Insert_bgn();
|
||||
Xowd_page_tbl page_tbl = db_mgr.Tbl__page();
|
||||
Db_rdr page_rdr = page_tbl.Select_all();
|
||||
try {
|
||||
Xol_lang_itm lang = wiki.Lang();
|
||||
Bry_bfr bfr = Bry_bfr.reset_(1024);
|
||||
Ordered_hash hash = Ordered_hash_.New();
|
||||
int page_count = 0;
|
||||
String fld_page_id = page_tbl.Fld_page_id(), fld_page_ttl = page_tbl.Fld_page_title();
|
||||
while (page_rdr.Move_next()) {
|
||||
int page_id = page_rdr.Read_int(fld_page_id);
|
||||
byte[] ttl = page_rdr.Read_bry_by_str(fld_page_ttl);
|
||||
byte[][] words = Xob_search_base.Split_ttl_into_words(lang, hash, bfr, ttl);
|
||||
int words_len = words.length;
|
||||
for (int i = 0; i < words_len; i++) {
|
||||
byte[] word = words[i];
|
||||
search_temp_tbl.Insert_cmd_by_batch(page_id, word);
|
||||
}
|
||||
++page_count;
|
||||
if ((page_count % commit_interval) == 0)
|
||||
Commit(search_conn);
|
||||
else if ((page_count % progress_interval) == 0)
|
||||
usr_dlg.Prog_many("", "", "parse progress: count=~{0} last=~{1}", page_count, String_.new_u8(ttl));
|
||||
}
|
||||
this.Commit(search_conn);
|
||||
}
|
||||
finally {page_rdr.Rls();}
|
||||
search_conn.Txn_end();
|
||||
search_temp_tbl.Make_data(usr_dlg, db_mgr.Db__search().Tbl__search_link(), db_mgr.Db__search().Tbl__search_word());
|
||||
}
|
||||
private void Commit(Db_conn search_conn) {
|
||||
search_conn.Txn_sav();
|
||||
}
|
||||
@Override public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {
|
||||
if (ctx.Match(k, Invk_commit_interval_)) commit_interval = m.ReadInt("v");
|
||||
else if (ctx.Match(k, Invk_progress_interval_)) progress_interval = m.ReadInt("v");
|
||||
else return GfoInvkAble_.Rv_unhandled;
|
||||
return this;
|
||||
} private static final String Invk_progress_interval_ = "progress_interval_", Invk_commit_interval_ = "commit_interval_";
|
||||
public static Xowd_db_file Dbs__get_or_make(Xowd_db_mgr db_mgr) {
|
||||
Xowd_db_file db = db_mgr.Props().Layout_text().Tid_is_all_or_few()
|
||||
? db_mgr.Db__core()
|
||||
: db_mgr.Dbs__make_by_tid(Xowd_db_file_.Tid_search_core)
|
||||
;
|
||||
db.Tbl__search_word().Ddl__page_count_y_();
|
||||
db.Tbl__search_word().Create_tbl();
|
||||
db.Tbl__search_link().Create_tbl();
|
||||
return db;
|
||||
}
|
||||
}
|
||||
@@ -1,52 +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 <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.*; import gplx.dbs.*; import gplx.xowa.specials.search.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.texts.*; import gplx.xowa.bldrs.cmds.ctgs.*;
|
||||
import gplx.xowa.wikis.data.tbls.*;
|
||||
public class Xob_search_sql_cmd_tst {
|
||||
@Before public void init() {if (Xoa_test_.Db_skip()) return; fxt.Ctor_fsys();} private final 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.doc_ary_
|
||||
( fxt.doc_ttl_(2, "A b")
|
||||
, fxt.doc_ttl_(1, "B c")
|
||||
)
|
||||
.Exec_run(new Xob_page_cmd(fxt.Bldr(), fxt.Wiki()))
|
||||
.Exec_run(new Xob_search_sql_cmd(fxt.Bldr(), fxt.Wiki()))
|
||||
;
|
||||
fxt.Test_search("a", 2);
|
||||
fxt.Test_search("b", 1, 2);
|
||||
fxt.Test_search("c", 1);
|
||||
fxt.Test_search("d");
|
||||
}
|
||||
@Test public void Wildcard() {
|
||||
if (Xoa_test_.Db_skip()) return;
|
||||
fxt.Init_db_sqlite();
|
||||
fxt.doc_ary_
|
||||
( fxt.doc_ttl_(1, "A")
|
||||
, fxt.doc_ttl_(2, "A2")
|
||||
, fxt.doc_ttl_(3, "A3")
|
||||
)
|
||||
.Exec_run(new Xob_page_cmd(fxt.Bldr(), fxt.Wiki()))
|
||||
.Exec_run(new Xob_search_sql_cmd(fxt.Bldr(), fxt.Wiki()))
|
||||
;
|
||||
fxt.Test_search("a*", 1, 2, 3);
|
||||
}
|
||||
}
|
||||
@@ -1,97 +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 <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.core.ios.*; import gplx.core.encoders.*; import gplx.core.envs.*;
|
||||
import gplx.xowa.bldrs.wkrs.*;
|
||||
import gplx.xowa.langs.*;
|
||||
import gplx.xowa.wikis.data.*; import gplx.dbs.*; import gplx.dbs.engines.sqlite.*; import gplx.xowa.wikis.dbs.*; import gplx.xowa.wikis.data.tbls.*;
|
||||
public class Xob_search_sql_wkr extends Xob_search_base implements Io_make_cmd { // search version 2
|
||||
private Xowd_db_mgr db_mgr; private Xowd_search_link_tbl search_page_tbl; private Xowd_search_word_tbl search_word_tbl;
|
||||
private int search_id = 0; private byte[] prv_word = null; private int page_count;
|
||||
public Xob_search_sql_wkr(Xob_bldr bldr, Xowe_wiki wiki) {this.Cmd_ctor(bldr, wiki);}
|
||||
@Override public String Wkr_key() {return Xob_cmd_keys.Key_text_search_wkr;}
|
||||
@Override public gplx.core.ios.Io_make_cmd Make_cmd_site() {return this;}
|
||||
public Io_sort_cmd Make_dir_(Io_url v) {return this;} // noop
|
||||
public void Sort_bgn() {
|
||||
this.usr_dlg = Xoa_app_.Usr_dlg();
|
||||
this.db_mgr = wiki.Db_mgr_as_sql().Core_data_mgr();
|
||||
Xob_search_sql_cmd.Dbs__get_or_make(db_mgr);
|
||||
this.search_page_tbl = db_mgr.Db__search().Tbl__search_link();
|
||||
this.search_word_tbl = db_mgr.Db__search().Tbl__search_word();
|
||||
search_page_tbl.Insert_bgn(); search_word_tbl.Insert_bgn();
|
||||
}
|
||||
public void Sort_do(Io_line_rdr rdr) {Sort_do(rdr.Bfr(), rdr.Key_pos_bgn(), rdr.Key_pos_end());}
|
||||
public void Sort_do(byte[] line, int key_bgn, int key_end) {// EX: abc|123
|
||||
byte[] cur_word = Bry_.Mid(line, key_bgn, key_end);
|
||||
if (!Bry_.Eq(cur_word, prv_word)) { // if new_word, insert old one
|
||||
if (prv_word != null) // do not insert for 1st word
|
||||
search_word_tbl.Insert_cmd_by_batch(search_id, prv_word, page_count);
|
||||
++search_id;
|
||||
prv_word = cur_word;
|
||||
page_count = 0;
|
||||
}
|
||||
search_page_tbl.Insert_cmd_by_batch(search_id, Base85_.To_int_by_bry(line, key_end + 1, key_end + 5)); // -1: ignore rdr_dlm
|
||||
++page_count;
|
||||
if (search_id % 10000 == 0) usr_dlg.Prog_many("", "", "creating title index: count=~{0}", search_id);
|
||||
}
|
||||
public void Sort_end() {
|
||||
search_word_tbl.Insert_cmd_by_batch(search_id, prv_word, page_count);
|
||||
search_page_tbl.Insert_end(); search_word_tbl.Insert_end();
|
||||
Xowd_db_file search_db = db_mgr.Db__search();
|
||||
Xowd_search_temp_tbl search_temp_tbl = new Xowd_search_temp_tbl(search_db.Conn(), db_mgr.Props().Schema_is_1());
|
||||
search_temp_tbl.Create_idx(usr_dlg, search_page_tbl, search_word_tbl);
|
||||
search_word_tbl.Ddl__page_count__cfg(search_db.Tbl__cfg());
|
||||
}
|
||||
}
|
||||
class Xob_search_wkr extends Xob_itm_basic_base implements Xobd_wkr {
|
||||
private Xowd_db_file search_db; private Xowd_search_temp_tbl search_temp_tbl;
|
||||
private Xol_lang_itm lang; private final Bry_bfr tmp_bfr = Bry_bfr.new_(255); private final Ordered_hash list = Ordered_hash_.New_bry();
|
||||
public String Wkr_key() {return Xob_cmd_keys.Key_text_search_wkr;}
|
||||
public void Wkr_ini(Xob_bldr bldr) {}
|
||||
public void Wkr_bgn(Xob_bldr bldr) {
|
||||
if (!Env_.Mode_testing()) wiki.Init_assert();
|
||||
this.lang = wiki.Lang();
|
||||
Xowd_db_mgr db_mgr = wiki.Db_mgr_as_sql().Core_data_mgr();
|
||||
this.search_db = Xob_search_sql_cmd.Dbs__get_or_make(db_mgr);
|
||||
this.search_temp_tbl = new Xowd_search_temp_tbl(search_db.Conn(), db_mgr.Props().Schema_is_1());
|
||||
search_temp_tbl.Create_tbl();
|
||||
search_temp_tbl.Insert_bgn();
|
||||
}
|
||||
public void Wkr_run(Xowd_page_itm page) {
|
||||
try {
|
||||
int page_id = page.Id();
|
||||
byte[] ttl = page.Ttl_page_db();
|
||||
byte[][] words = Xob_search_base.Split_ttl_into_words(lang, list, tmp_bfr, ttl);
|
||||
int len = words.length;
|
||||
for (int i = 0; i < len; ++i) {
|
||||
byte[] word = words[i];
|
||||
search_temp_tbl.Insert_cmd_by_batch(page_id, word);
|
||||
}
|
||||
} catch (Exception e) {bldr.Usr_dlg().Warn_many("", "", "search_index:fatal error: err=~{0}", Err_.Message_gplx_full(e));} // never let single page crash entire import
|
||||
}
|
||||
public void Wkr_end() {
|
||||
search_temp_tbl.Make_data(usr_dlg, search_db.Tbl__search_link(), search_db.Tbl__search_word());
|
||||
search_temp_tbl.Insert_end();
|
||||
}
|
||||
public void Wkr_print() {}
|
||||
@Override public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {
|
||||
if (ctx.Match(k, Invk_set)) {}
|
||||
else return GfoInvkAble_.Rv_unhandled;
|
||||
return this;
|
||||
} private static final String Invk_set = "set";
|
||||
}
|
||||
@@ -1,68 +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 <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.*; import gplx.dbs.*; import gplx.xowa.wikis.data.tbls.*;
|
||||
public class Xob_search_sql_wkr_tst {
|
||||
private final Xob_search_sql_wkr_fxt fxt = new Xob_search_sql_wkr_fxt();
|
||||
@Test public void Basic() {
|
||||
fxt.Exec__sort
|
||||
( "a|!!!!#"
|
||||
, "a|!!!!$"
|
||||
, "b|!!!!#"
|
||||
, "b|!!!!$"
|
||||
, "b|!!!!%"
|
||||
);
|
||||
fxt.Test__search_word
|
||||
( "1|a|2"
|
||||
, "2|b|3"
|
||||
);
|
||||
fxt.Test__search_link
|
||||
( "1|2"
|
||||
, "1|3"
|
||||
, "2|2"
|
||||
, "2|3"
|
||||
, "2|4"
|
||||
);
|
||||
}
|
||||
}
|
||||
class Xob_search_sql_wkr_fxt {
|
||||
private final Xob_search_sql_wkr wkr;
|
||||
private final Xowe_wiki wiki;
|
||||
private final Bry_bfr tmp_bfr = Bry_bfr.new_();
|
||||
public Xob_search_sql_wkr_fxt() {
|
||||
Xoae_app app = Xoa_app_fxt.app_();
|
||||
this.wiki = Xoa_app_fxt.wiki_tst_(app);
|
||||
Xoa_test_.Db__init__mem(wiki);
|
||||
wkr = new Xob_search_sql_wkr(app.Bldr(), wiki);
|
||||
}
|
||||
public void Exec__sort(String... lines_str) {
|
||||
byte[][] lines = Bry_.Ary(lines_str);
|
||||
wkr.Sort_bgn();
|
||||
for (byte[] line : lines)
|
||||
wkr.Sort_do(line, 0, Bry_find_.Find_fwd(line, Byte_ascii.Pipe));
|
||||
wkr.Sort_end();
|
||||
}
|
||||
public void Test__search_word(String... lines) {
|
||||
Xowd_search_word_tbl tbl = wiki.Data__core_mgr().Db__search().Tbl__search_word();
|
||||
Tfds.Eq_str_lines(String_.Concat_lines_nl(lines), Xoa_test_.Db__print_tbl_as_str(tmp_bfr, tbl.conn, tbl.Tbl_name(), tbl.Fld_id(), tbl.Fld_text(), tbl.Fld_page_count()));
|
||||
}
|
||||
public void Test__search_link(String... lines) {
|
||||
Xowd_search_link_tbl tbl = wiki.Data__core_mgr().Db__search().Tbl__search_link();
|
||||
Tfds.Eq_str_lines(String_.Concat_lines_nl(lines), Xoa_test_.Db__print_tbl_as_str(tmp_bfr, tbl.conn, tbl.Tbl_name(), tbl.Fld_word_id(), tbl.Fld_page_id()));
|
||||
}
|
||||
}
|
||||
@@ -15,18 +15,13 @@ 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; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*;
|
||||
import gplx.core.primitives.*;
|
||||
import gplx.xowa.bldrs.wkrs.*; import gplx.xowa.bldrs.wtrs.*;
|
||||
import gplx.core.ios.*;
|
||||
import gplx.xowa.langs.*;
|
||||
import gplx.xowa.wikis.nss.*;
|
||||
import gplx.xowa.wikis.data.*; import gplx.xowa.wikis.dbs.*; import gplx.xowa.wikis.tdbs.*; import gplx.xowa.wikis.data.tbls.*;
|
||||
public abstract class Xob_search_base extends Xob_itm_dump_base implements Xobd_wkr, GfoInvkAble {
|
||||
package gplx.xowa.bldrs.cmds.texts.tdbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*; import gplx.xowa.bldrs.cmds.texts.*;
|
||||
import gplx.core.primitives.*; import gplx.core.ios.*;
|
||||
import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wkrs.*; import gplx.xowa.bldrs.wtrs.*;
|
||||
import gplx.xowa.langs.*; import gplx.xowa.wikis.nss.*; import gplx.xowa.wikis.dbs.*; import gplx.xowa.wikis.tdbs.*; import gplx.xowa.wikis.data.tbls.*;
|
||||
public abstract class Srch_bldr_wkr_base extends Xob_itm_dump_base implements Xob_page_wkr {
|
||||
private final Ordered_hash list = Ordered_hash_.New(); private Xol_lang_itm lang;
|
||||
public abstract String Wkr_key();
|
||||
public abstract Io_make_cmd Make_cmd_site();
|
||||
public void Wkr_ini(Xob_bldr bldr) {}
|
||||
public void Wkr_bgn(Xob_bldr bldr) {
|
||||
make_dir = wiki.Tdb_fsys_mgr().Ns_dir();
|
||||
this.Init_dump(this.Wkr_key(), make_dir);
|
||||
@@ -36,7 +31,7 @@ public abstract class Xob_search_base extends Xob_itm_dump_base implements Xobd_
|
||||
ns_main = wiki.Ns_mgr().Ns_main();
|
||||
} private Xob_tmp_wtr_mgr tmp_wtr_mgr; private Xow_ns ns_main;
|
||||
public void Wkr_run(Xowd_page_itm page) {
|
||||
// if (page.Ns_id() != Xow_ns_.Tid__main) return; // limit to main ns for now
|
||||
// if (page.Ns_id() != Xow_ns_.Tid__main) return; // limit to main ns for now
|
||||
try {
|
||||
byte[] ttl = page.Ttl_page_db();
|
||||
byte[][] words = Split_ttl_into_words(lang, list, dump_bfr, ttl);
|
||||
@@ -63,8 +58,7 @@ public abstract class Xob_search_base extends Xob_itm_dump_base implements Xobd_
|
||||
tmp_wtr_mgr.Rls_all();
|
||||
if (delete_temp) Io_mgr.Instance.DeleteDirDeep(temp_dir);
|
||||
}
|
||||
public void Wkr_print() {}
|
||||
// private static final int row_fixed_len = 5 + 1 + 1 + 1; // 5=rowId; 1=|; 1=NmsOrd; 1=|
|
||||
public abstract Io_make_cmd Make_cmd_site();
|
||||
public static byte[][] Split_ttl_into_words(Xol_lang_itm lang, Ordered_hash list, Bry_bfr bfr, byte[] ttl) {
|
||||
if (lang != null) // null lang passed in by searcher
|
||||
ttl = lang.Case_mgr().Case_build_lower(ttl);
|
||||
@@ -18,7 +18,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
package gplx.xowa.bldrs.cmds.texts.tdbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*; import gplx.xowa.bldrs.cmds.texts.*;
|
||||
import gplx.xowa.bldrs.wkrs.*;
|
||||
import gplx.xowa.wikis.nss.*;
|
||||
import gplx.xowa.wikis.metas.*; import gplx.xowa.wikis.data.tbls.*;
|
||||
import gplx.xowa.wikis.data.site_stats.*; import gplx.xowa.wikis.data.tbls.*;
|
||||
import gplx.xowa.wikis.tdbs.*; import gplx.xowa.wikis.tdbs.hives.*; import gplx.xowa.wikis.tdbs.xdats.*;
|
||||
public class Xob_calc_stats_cmd extends Xob_itm_basic_base implements Xob_cmd {
|
||||
public Xob_calc_stats_cmd(Xob_bldr bldr, Xowe_wiki wiki) {this.Cmd_ctor(bldr, wiki);}
|
||||
@@ -41,14 +41,14 @@ public class Xob_calc_stats_cmd extends Xob_itm_basic_base implements Xob_cmd {
|
||||
int count_file = Calc_count_articles(wiki.Ns_mgr().Ns_file());
|
||||
Bry_bfr bfr = Bry_bfr.new_();
|
||||
Gen_call(Bool_.Y, bfr, Xowe_wiki.Invk_stats);
|
||||
Gen_call(Bool_.N, bfr, Xow_wiki_stats.Invk_number_of_articles_, count_main);
|
||||
Gen_call(Bool_.N, bfr, Xow_wiki_stats.Invk_number_of_files_, count_file);
|
||||
Gen_call(Bool_.N, bfr, Xow_wiki_stats.Invk_number_of_pages_, total);
|
||||
Gen_call(Bool_.N, bfr, Xow_site_stats_mgr.Invk_number_of_articles_, count_main);
|
||||
Gen_call(Bool_.N, bfr, Xow_site_stats_mgr.Invk_number_of_files_, count_file);
|
||||
Gen_call(Bool_.N, bfr, Xow_site_stats_mgr.Invk_number_of_pages_, total);
|
||||
for (int i = 0; i < ns_len; i++) {
|
||||
Xow_ns ns = wiki.Ns_mgr().Ords_ary()[i];
|
||||
if (ns.Id() < 0) continue;
|
||||
bfr.Add_byte_nl();
|
||||
Gen_call(Bool_.N, bfr, Xow_wiki_stats.Invk_number_of_articles_in_ns_, ns.Num_str(), Int_.To_str_pad_bgn_zero(ns.Count(), 10));
|
||||
Gen_call(Bool_.N, bfr, Xow_site_stats_mgr.Invk_number_of_articles_in_ns_, ns.Num_str(), Int_.To_str_pad_bgn_zero(ns.Count(), 10));
|
||||
}
|
||||
bfr.Add_byte_nl().Add_byte(Byte_ascii.Semic).Add_byte_nl();
|
||||
Io_url wiki_gfs = Wiki_gfs_url(wiki);
|
||||
|
||||
@@ -33,8 +33,8 @@ public class Xob_init_base_tst {
|
||||
class Xob_init_base_fxt {
|
||||
public void Clear() {
|
||||
if (app == null) {
|
||||
app = Xoa_app_fxt.app_();
|
||||
wiki = Xoa_app_fxt.wiki_tst_(app);
|
||||
app = Xoa_app_fxt.Make__app__edit();
|
||||
wiki = Xoa_app_fxt.Make__wiki__edit(app);
|
||||
}
|
||||
Io_mgr.Instance.InitEngine_mem();
|
||||
}
|
||||
|
||||
@@ -18,10 +18,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
package gplx.xowa.bldrs.cmds.texts.tdbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*; import gplx.xowa.bldrs.cmds.texts.*;
|
||||
import gplx.core.ios.*; import gplx.xowa.wikis.tdbs.*; import gplx.xowa.wikis.data.tbls.*;
|
||||
import gplx.xowa.bldrs.wkrs.*;
|
||||
public class Xob_make_id_wkr extends Xob_itm_dump_base implements Xobd_wkr, GfoInvkAble {
|
||||
public class Xob_make_id_wkr extends Xob_itm_dump_base implements Xob_page_wkr, GfoInvkAble {
|
||||
public Xob_make_id_wkr(Xob_bldr bldr, Xowe_wiki wiki) {this.Cmd_ctor(bldr, wiki);}
|
||||
public String Wkr_key() {return KEY;} public static final String KEY = "core.make_id";
|
||||
public void Wkr_ini(Xob_bldr bldr) {}
|
||||
public void Wkr_bgn(Xob_bldr bldr) {
|
||||
this.Init_dump(KEY, wiki.Tdb_fsys_mgr().Site_dir().GenSubDir(Xotdb_dir_info_.Name_id));
|
||||
}
|
||||
@@ -34,6 +33,5 @@ public class Xob_make_id_wkr extends Xob_itm_dump_base implements Xobd_wkr, GfoI
|
||||
this.Term_dump(new Xob_make_cmd_site(bldr.Usr_dlg(), make_dir, make_fil_len));
|
||||
if (delete_temp) Io_mgr.Instance.DeleteDirDeep(temp_dir);
|
||||
}
|
||||
public void Wkr_print() {}
|
||||
static final int row_fixed_len = 25 + 1 + 7; // 25=5 base_85 flds; 1=Redirect; 7=dlm
|
||||
}
|
||||
|
||||
@@ -21,10 +21,9 @@ import gplx.xowa.bldrs.wkrs.*; import gplx.xowa.bldrs.wtrs.*;
|
||||
import gplx.xowa.wikis.nss.*;
|
||||
import gplx.xowa.parsers.utils.*;
|
||||
import gplx.xowa.wikis.tdbs.*; import gplx.xowa.wikis.tdbs.xdats.*; import gplx.xowa.wikis.tdbs.stats.*;
|
||||
public class Xob_page_txt extends Xob_itm_dump_base implements Xobd_wkr, GfoInvkAble {
|
||||
public class Xob_page_txt extends Xob_itm_dump_base implements Xob_page_wkr, GfoInvkAble {
|
||||
public Xob_page_txt(Xob_bldr bldr, Xowe_wiki wiki) {this.Cmd_ctor(bldr, wiki);}
|
||||
public String Wkr_key() {return Xob_cmd_keys.Key_tdb_make_page;}
|
||||
public void Wkr_ini(Xob_bldr bldr) {}
|
||||
public void Wkr_bgn(Xob_bldr bldr) {
|
||||
redirect_mgr = wiki.Redirect_mgr(); page_storage_type = wiki.Appe().Setup_mgr().Dump_mgr().Data_storage_format();
|
||||
fsys_mgr = wiki.Tdb_fsys_mgr();
|
||||
@@ -62,7 +61,6 @@ public class Xob_page_txt extends Xob_itm_dump_base implements Xobd_wkr, GfoInvk
|
||||
ttl_wtr_mgr.Rls_all();
|
||||
if (delete_temp) Io_mgr.Instance.DeleteDirDeep(temp_dir);
|
||||
}
|
||||
public void Wkr_print() {bldr.Usr_dlg().Note_many(GRP_KEY, "print", "~{0}", stat_mgr.Print(wiki.Ns_mgr()));}
|
||||
Xob_xdat_file_wtr Page_wtr_get(Xow_ns ns) {
|
||||
Xob_xdat_file_wtr rv = page_wtr_regy[ns.Ord()];
|
||||
if (rv == null) {
|
||||
|
||||
@@ -18,11 +18,10 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
package gplx.xowa.bldrs.cmds.texts.tdbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*; import gplx.xowa.bldrs.cmds.texts.*;
|
||||
import gplx.core.ios.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.wikis.tdbs.*; import gplx.xowa.wikis.nss.*;
|
||||
import gplx.xowa.bldrs.wkrs.*;
|
||||
public class Xob_parse_dump_templates_cmd extends Xob_itm_dump_base implements Xobd_wkr, GfoInvkAble {
|
||||
public class Xob_parse_dump_templates_cmd extends Xob_itm_dump_base implements Xob_page_wkr, GfoInvkAble {
|
||||
public Xob_parse_dump_templates_cmd(Xob_bldr bldr, Xowe_wiki wiki) {this.Cmd_ctor(bldr, wiki);}
|
||||
public String Wkr_key() {return KEY;} public static final String KEY = "parse.dump_templates";
|
||||
public static final int FixedLen_page = 1 + 5 + 1 + 5 + 1 + 1 + 1; // \tid|date|title|text\n
|
||||
public void Wkr_ini(Xob_bldr bldr) {}
|
||||
public void Wkr_bgn(Xob_bldr bldr) {
|
||||
Init_dump(KEY);
|
||||
}
|
||||
@@ -33,5 +32,4 @@ public class Xob_parse_dump_templates_cmd extends Xob_itm_dump_base implements X
|
||||
Xotdb_page_itm_.Txt_page_save(dump_bfr, id, page.Modified_on(), title, text, true);
|
||||
}
|
||||
public void Wkr_end() {super.Flush_dump();}
|
||||
public void Wkr_print() {}
|
||||
}
|
||||
|
||||
@@ -17,6 +17,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package gplx.xowa.bldrs.cmds.texts.tdbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*; import gplx.xowa.bldrs.cmds.texts.*;
|
||||
import org.junit.*; import gplx.xowa.wikis.tdbs.*; import gplx.xowa.bldrs.*; import gplx.xowa.wikis.nss.*;
|
||||
import gplx.xowa.addons.searchs.dbs.bldrs.*;
|
||||
public class Xob_search_base_tst {
|
||||
@Test public void Split() {
|
||||
tst_Split("a", "a");
|
||||
@@ -47,7 +48,7 @@ public class Xob_search_base_tst {
|
||||
} private Xob_fxt fxt = new Xob_fxt().Ctor_mem();
|
||||
private void tst_Split(String raw, String... expd) {
|
||||
Ordered_hash list = Ordered_hash_.New(); Bry_bfr bfr = Bry_bfr.new_();
|
||||
byte[][] actl_bry = Xob_search_base.Split_ttl_into_words(fxt.App().Lang_mgr().Lang_en(), list, bfr, Bry_.new_u8(raw));
|
||||
byte[][] actl_bry = Srch_bldr_wkr_base.Split_ttl_into_words(fxt.App().Lang_mgr().Lang_en(), list, bfr, Bry_.new_u8(raw));
|
||||
String[] actl = new String[actl_bry.length];
|
||||
for (int i = 0; i < actl_bry.length; i++)
|
||||
actl[i] = String_.new_u8(actl_bry[i]);
|
||||
|
||||
@@ -16,7 +16,8 @@ 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.tdbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*; import gplx.xowa.bldrs.cmds.texts.*;
|
||||
public class Xob_search_tdb extends Xob_search_base {
|
||||
import gplx.xowa.addons.searchs.dbs.bldrs.*;
|
||||
public class Xob_search_tdb extends Srch_bldr_wkr_base {
|
||||
public Xob_search_tdb(Xob_bldr bldr, Xowe_wiki wiki) {this.Cmd_ctor(bldr, wiki);}
|
||||
@Override public String Wkr_key() {return Xob_cmd_keys.Key_tdb_make_search_title;}
|
||||
@Override public gplx.core.ios.Io_make_cmd Make_cmd_site() {
|
||||
|
||||
@@ -170,11 +170,11 @@ public class Xob_tst {
|
||||
, "a", "b", "c");
|
||||
}
|
||||
private void tst_Parse(String raw, String... expd) {
|
||||
Xoae_app app = Xoa_app_fxt.app_(); // NOTE: resets mem file system, so must happen first
|
||||
Xoae_app app = Xoa_app_fxt.Make__app__edit(); // NOTE: resets mem file system, so must happen first
|
||||
Io_url url = Io_url_.mem_fil_("mem/raw_page.csv");
|
||||
Io_mgr.Instance.SaveFilStr(url, raw);
|
||||
Xotdb_page_raw_parser parser = new Xotdb_page_raw_parser();
|
||||
Xowe_wiki wiki = Xoa_app_fxt.wiki_tst_(app);
|
||||
Xowe_wiki wiki = Xoa_app_fxt.Make__wiki__edit(app);
|
||||
parser.Load(Gfo_usr_dlg_.Test(), wiki, new Xow_ns(Xow_ns_.Tid__template, Xow_ns_case_.Tid__1st, Bry_.new_a7("Template"), false), new Io_url[] {url}, 1 * Io_mgr.Len_kb);
|
||||
List_adp actl = List_adp_.new_();
|
||||
Xowd_page_itm page = new Xowd_page_itm();
|
||||
|
||||
31
400_xowa/src/gplx/xowa/bldrs/cmds/utils/Xob_alert_cmd.java
Normal file
31
400_xowa/src/gplx/xowa/bldrs/cmds/utils/Xob_alert_cmd.java
Normal file
@@ -0,0 +1,31 @@
|
||||
/*
|
||||
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.utils; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*;
|
||||
import gplx.xowa.bldrs.wkrs.*;
|
||||
import gplx.gfui.*;
|
||||
public class Xob_alert_cmd extends Xob_cmd__base implements Xob_cmd {
|
||||
public Xob_alert_cmd(Xob_bldr bldr, Xowe_wiki wiki) {super(bldr, wiki);}
|
||||
public Xob_alert_cmd Msg_(String v) {this.msg = v; return this;} private String msg = "developer forgot to include message";
|
||||
@Override public String Cmd_key() {return Xob_cmd_keys.Key_util_alert;}
|
||||
@Override public void Cmd_run() {
|
||||
Gfui_kit kit = app.Gui_mgr().Kit();
|
||||
if (kit.Tid() != Gfui_kit_.Swt_tid) return;
|
||||
kit.Ask_ok("", "", msg);
|
||||
}
|
||||
@Override public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {return GfoInvkAble_.Rv_unhandled;}
|
||||
}
|
||||
@@ -36,7 +36,7 @@ public class Xob_cleanup_cmd extends Xob_itm_basic_base implements Xob_cmd {
|
||||
else if (String_.Eq(bz2_cmd, "move"))
|
||||
Io_mgr.Instance.MoveFil(bz2_fil, bz2_fil.OwnerDir().OwnerDir().GenSubFil_nest("done", bz2_fil.NameAndExt()));
|
||||
}
|
||||
if (delete_xml) Io_mgr.Instance.DeleteFil(Xobd_rdr.Find_fil_by(wiki_root_dir, "*.xml"));
|
||||
if (delete_xml) Io_mgr.Instance.DeleteFil(Xob_page_wkr_cmd.Find_fil_by(wiki_root_dir, "*.xml"));
|
||||
if (delete_tdb) {
|
||||
usr_dlg.Note_many("", "", "bldr.wiki:deleting tdb wiki");
|
||||
Delete_tdb(wiki_root_dir);
|
||||
|
||||
49
400_xowa/src/gplx/xowa/bldrs/cmds/utils/Xob_delete_cmd.java
Normal file
49
400_xowa/src/gplx/xowa/bldrs/cmds/utils/Xob_delete_cmd.java
Normal file
@@ -0,0 +1,49 @@
|
||||
/*
|
||||
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.utils; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*;
|
||||
import gplx.dbs.*; import gplx.core.ios.*; import gplx.core.envs.*;
|
||||
import gplx.xowa.bldrs.wkrs.*; import gplx.xowa.bldrs.wms.dumps.*;
|
||||
public class Xob_delete_cmd extends Xob_cmd__base implements Xob_cmd {
|
||||
private String[] patterns_ary = String_.Ary_empty;
|
||||
public Xob_delete_cmd(Xob_bldr bldr, Xowe_wiki wiki) {super(bldr, wiki);}
|
||||
public Xob_delete_cmd Patterns_ary_(String... v) {this.patterns_ary = v; return this;}
|
||||
@Override public String Cmd_key() {return Xob_cmd_keys.Key_util_delete;}
|
||||
@Override public void Cmd_run() {
|
||||
int len = patterns_ary.length; if (len == 0) return;
|
||||
|
||||
// build filter EX: '*.xml|*.txt'
|
||||
Bry_bfr bfr = Bry_bfr.new_();
|
||||
for (int i = 0; i < len; ++i) {
|
||||
String pattern = patterns_ary[i];
|
||||
if (i != 0) bfr.Add_byte_pipe();
|
||||
bfr.Add_str_u8(pattern);
|
||||
}
|
||||
|
||||
// get files; iterate and delete
|
||||
String file_pattern = bfr.To_str_and_clear();
|
||||
Io_url[] files = Io_mgr.Instance.QueryDir_args(wiki.Fsys_mgr().Root_dir()).Recur_(Bool_.N).FilPath_(file_pattern).ExecAsUrlAry();
|
||||
int files_len = files.length;
|
||||
for (int i = 0; i < files_len; ++i) {
|
||||
Io_url file = files[i];
|
||||
if (file.Ext() == ".sqlite3")
|
||||
Db_conn_bldr.Instance.Get_or_noop(file).Rls_conn();
|
||||
Io_mgr.Instance.DeleteFil(file);
|
||||
}
|
||||
}
|
||||
@Override public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {return GfoInvkAble_.Null;}
|
||||
}
|
||||
@@ -17,19 +17,18 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package gplx.xowa.bldrs.cmds.utils; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*;
|
||||
import gplx.dbs.*; import gplx.core.ios.*; import gplx.core.envs.*;
|
||||
import gplx.xowa.bldrs.wkrs.*;
|
||||
import gplx.xowa.bldrs.wms.dumps.*;
|
||||
public class Xob_download_wkr extends Xob_itm_basic_base implements Xob_cmd {
|
||||
private String dump_date = "latest";
|
||||
private String dump_type = null;
|
||||
private String dump_src = null;
|
||||
import gplx.xowa.bldrs.wkrs.*; import gplx.xowa.bldrs.wms.dumps.*;
|
||||
public class Xob_download_cmd extends Xob_cmd__base implements Xob_cmd {
|
||||
private String dump_date = "latest", dump_type = null, dump_src = null;
|
||||
private Io_url dump_trg_zip = null, dump_trg_bin = null;
|
||||
private boolean unzip = true;
|
||||
public Xob_download_wkr(Xob_bldr bldr, Xowe_wiki wiki) {this.Cmd_ctor(bldr, wiki);}
|
||||
public String Cmd_key() {return Xob_cmd_keys.Key_util_download;}
|
||||
public void Cmd_init(Xob_bldr bldr) {}
|
||||
public void Cmd_bgn(Xob_bldr bldr) {
|
||||
if (dump_type == null) throw Err_.new_wo_type("dump_type must be specified");
|
||||
public Xob_download_cmd(Xob_bldr bldr, Xowe_wiki wiki) {super(bldr, wiki);}
|
||||
public Xob_download_cmd Dump_type_(String v) {dump_type = v; return this;}
|
||||
@Override public String Cmd_key() {return Xob_cmd_keys.Key_util_download;}
|
||||
@Override public void Cmd_run() {
|
||||
// init vars; if no explicit values, calc defaults;
|
||||
if (dump_type == null) throw Err_.new_("bldr", "dump_type must be specified");
|
||||
if (!gplx.core.ios.IoEngine_system.Web_access_enabled) return;
|
||||
Xowm_dump_file dump_file = new Xowm_dump_file(wiki.Domain_str(), dump_date, dump_type);
|
||||
if (dump_src == null) {
|
||||
dump_file.Server_url_(app.Setup_mgr().Dump_mgr().Server_urls()[0]);
|
||||
@@ -39,33 +38,29 @@ public class Xob_download_wkr extends Xob_itm_basic_base implements Xob_cmd {
|
||||
dump_trg_zip = wiki.Fsys_mgr().Root_dir().GenSubFil(dump_file.File_name());
|
||||
if (dump_trg_bin == null && unzip)
|
||||
dump_trg_bin = dump_trg_zip.GenNewNameAndExt(dump_trg_zip.NameOnly()); // convert a.sql.gz -> a.sql
|
||||
}
|
||||
public void Cmd_run() {
|
||||
// download
|
||||
usr_dlg.Note_many("", "", "downloading file: now=~{0} src=~{1} trg=~{2}", DateAdp_.Now().XtoStr_fmt_yyyyMMdd_HHmmss(), dump_src, dump_trg_zip.OwnerDir());
|
||||
IoEngine_xrg_downloadFil download_wkr = app.Wmf_mgr().Download_wkr().Download_xrg();
|
||||
download_wkr.Src_last_modified_query_(false).Init(dump_src, dump_trg_zip);
|
||||
if (!download_wkr.Exec())
|
||||
usr_dlg.Warn_many("", "", "download failed: src=~{0} trg=~{1} err=~{2}", dump_src, dump_trg_zip.Raw(), Err_.Message_gplx_full(download_wkr.Rslt_err()));
|
||||
if (unzip) {
|
||||
if (unzip) { // parsing unzipped file is faster, but takes up more storage space
|
||||
usr_dlg.Note_many("", "", "unzipping file: now=~{0} trg=~{1}", DateAdp_.Now().XtoStr_fmt_yyyyMMdd_HHmmss(), dump_trg_bin.Raw());
|
||||
Xob_unzip_wkr unzip_wkr = new Xob_unzip_wkr().Init(app).Process_run_mode_(Process_adp.Run_mode_sync_block);
|
||||
unzip_wkr.Decompress(dump_trg_zip, dump_trg_bin);
|
||||
}
|
||||
}
|
||||
public void Cmd_end() {}
|
||||
public void Cmd_term() {}
|
||||
@Override public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {
|
||||
if (String_.Eq(k, Invk_dump_date_)) dump_date = m.ReadStr("v");
|
||||
else if (String_.Eq(k, Invk_dump_type_)) dump_type = m.ReadStr("v");
|
||||
else if (String_.Eq(k, Invk_unzip_)) unzip = m.ReadYn("v");
|
||||
else if (String_.Eq(k, Invk_dump_src_)) dump_src = m.ReadStr("v");
|
||||
else if (String_.Eq(k, Invk_dump_trg_zip_)) dump_trg_zip = m.ReadIoUrl("v");
|
||||
else if (String_.Eq(k, Invk_dump_trg_bin_)) dump_trg_bin = m.ReadIoUrl("v");
|
||||
else if (String_.Eq(k, Invk_unzip_)) unzip = m.ReadYn("v");
|
||||
else return GfoInvkAble_.Rv_unhandled;
|
||||
return this;
|
||||
}
|
||||
private static final String
|
||||
Invk_dump_date_ = "dump_date_", Invk_dump_type_ = "dump_type_", Invk_unzip_ = "unzip_"
|
||||
, Invk_dump_src_ = "dump_src_", Invk_dump_trg_zip_ = "dump_trg_zip_", Invk_dump_trg_bin_ = "dump_trg_bin_"
|
||||
;
|
||||
, Invk_dump_src_ = "dump_src_", Invk_dump_trg_zip_ = "dump_trg_zip_", Invk_dump_trg_bin_ = "dump_trg_bin_";
|
||||
}
|
||||
@@ -26,7 +26,7 @@ public class Xob_exec_sql_cmd implements Xob_cmd {
|
||||
wiki.Init_assert(); // force load; needed to pick up MediaWiki ns for MediaWiki:mainpage
|
||||
Xodb_mgr_sql db_mgr = wiki.Db_mgr_as_sql();
|
||||
Xowd_db_mgr fsys_mgr = db_mgr.Core_data_mgr();
|
||||
Xowd_db_file file = fsys_mgr.Dbs__get_at(file_idx);
|
||||
Xowd_db_file file = fsys_mgr.Dbs__get_by_id(file_idx);
|
||||
app.Usr_dlg().Plog_many("", "", "exec_sql: running sql; file_idx=~{0} sql=~{1}", file_idx, sql);
|
||||
file.Conn().Exec_sql(sql);
|
||||
}
|
||||
|
||||
@@ -21,7 +21,7 @@ import gplx.dbs.*; import gplx.xowa.bldrs.*;
|
||||
import gplx.xowa.bldrs.wms.*; import gplx.xowa.bldrs.wms.sites.*;
|
||||
import gplx.xowa.wikis.domains.*; import gplx.xowa.apps.site_cfgs.*;
|
||||
public class Xob_site_meta_cmd implements Xob_cmd {
|
||||
private final Xob_bldr bldr;
|
||||
private final Xob_bldr bldr;
|
||||
private String[] wikis; private Io_url db_url; private DateAdp cutoff_time;
|
||||
public Xob_site_meta_cmd(Xob_bldr bldr, Xow_wiki wiki) {this.bldr = bldr;}
|
||||
public String Cmd_key() {return Xob_cmd_keys.Key_site_meta;}
|
||||
|
||||
@@ -32,12 +32,11 @@ public class Xob_image_cmd extends Xob_itm_dump_base implements Xob_cmd, GfoInvk
|
||||
wiki.Init_assert(); // NOTE: must init wiki for db_mgr_as_sql
|
||||
Init_dump(Xob_cmd_keys.Key_wiki_image);
|
||||
if (src_fil == null) {
|
||||
src_fil = Xobd_rdr.Find_fil_by(wiki.Fsys_mgr().Root_dir(), "*-image.sql");
|
||||
src_fil = Xob_page_wkr_cmd.Find_fil_by(wiki.Fsys_mgr().Root_dir(), "*-image.sql");
|
||||
if (src_fil == null) throw Err_.new_wo_type(".sql file not found in dir", "dir", wiki.Fsys_mgr().Root_dir());
|
||||
}
|
||||
parser.Src_fil_(src_fil).Trg_fil_gen_(dump_url_gen).Fld_cmd_(this).Flds_req_idx_(20, Fld_img_name, Fld_img_size, Fld_img_width, Fld_img_height, Fld_img_bits, Fld_img_media_type, Fld_img_minor_mime, Fld_img_timestamp);
|
||||
|
||||
this.conn = Xob_db_file.new__wiki_image(wiki.Fsys_mgr().Root_dir()).Conn();
|
||||
this.conn = Xob_db_file.New__wiki_image(wiki.Fsys_mgr().Root_dir()).Conn();
|
||||
conn.Txn_bgn("bldr__image");
|
||||
this.tbl_image = new Xob_image_tbl();
|
||||
tbl_image.Create_table(conn);
|
||||
|
||||
@@ -17,7 +17,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package gplx.xowa.bldrs.cmds.wikis; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*;
|
||||
import org.junit.*; import gplx.core.ios.*; import gplx.xowa.files.*;
|
||||
public class Xob_image_cmd_tst {
|
||||
public class Xob_image_cmd_tst {
|
||||
private Xob_image_cmd_fxt fxt = new Xob_image_cmd_fxt();
|
||||
@Test public void Basic() {fxt.Init_("A.png" , Xof_media_type.Name_bitmap , Xof_ext_.Bry_png, 220, 110) .Test(Xof_ext_.Id_png);} // A.png -> png
|
||||
@Test public void Ogg_VIDEO() {fxt.Init_("A.ogg" , Xof_media_type.Name_video , Xof_ext_.Bry_ogg, 220, 110) .Test(Xof_ext_.Id_ogv);} // A.ogg and VIDEO -> ogv
|
||||
|
||||
@@ -31,7 +31,7 @@ public class Xob_page_dump_cmd_drop extends Xob_itm_basic_base implements Xob_cm
|
||||
case Xowd_db_file_.Tid_wiki_solo:
|
||||
case Xowd_db_file_.Tid_text_solo:
|
||||
case Xowd_db_file_.Tid_text:
|
||||
db_file.Conn().Ddl_delete_tbl(Xobd_page_dump_tbl.Tbl_name);
|
||||
db_file.Conn().Meta_tbl_drop(Xobd_page_dump_tbl.Tbl_name);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -29,12 +29,11 @@ class Xobd_page_dump_tbl {
|
||||
this.fld_is_redirect = flds.Add_int("page_is_redirect");
|
||||
}
|
||||
public void Create_data(Io_url page_db_url, int text_db_id) {
|
||||
conn.Ddl_create_tbl(Dbmeta_tbl_itm.New(Tbl_name, flds));
|
||||
conn.Meta_tbl_create(Dbmeta_tbl_itm.New(Tbl_name, flds));
|
||||
conn.Stmt_delete(Tbl_name).Exec_delete(); // always clear tables again; allows commands to be rerun; DATE:2015-08-04
|
||||
Db_attach_cmd.new_(conn, "page_db", page_db_url)
|
||||
.Add_fmt("text_db_prep.clone_page", Sql_insert_data, text_db_id)
|
||||
.Exec();
|
||||
conn.Ddl_create_idx(Dbmeta_idx_itm.new_unique_by_tbl(Tbl_name, "main", fld_id, fld_namespace, fld_is_redirect, fld_title));
|
||||
new Db_attach_mgr(conn, new Db_attach_itm("page_db", page_db_url))
|
||||
.Exec_sql_w_msg("text_db_prep.clone_page", Sql_insert_data, text_db_id);
|
||||
conn.Meta_idx_create(Dbmeta_idx_itm.new_unique_by_tbl(Tbl_name, "main", fld_id, fld_namespace, fld_is_redirect, fld_title));
|
||||
}
|
||||
private static final String Sql_insert_data = String_.Concat_lines_nl
|
||||
( "INSERT INTO page_dump (page_id, page_title, page_namespace, page_is_redirect)"
|
||||
@@ -42,7 +41,7 @@ class Xobd_page_dump_tbl {
|
||||
, ", p.page_title"
|
||||
, ", p.page_namespace"
|
||||
, ", p.page_is_redirect"
|
||||
, "FROM <attach_db>page p"
|
||||
, "FROM <page_db>page p"
|
||||
, "WHERE p.page_text_db_id = {0};"
|
||||
);
|
||||
}
|
||||
|
||||
@@ -21,7 +21,7 @@ import gplx.langs.htmls.encoders.*;
|
||||
public class Xob_redirect_tbl {
|
||||
private Gfo_url_encoder encoder; private Db_stmt insert_stmt;
|
||||
public Xob_redirect_tbl(Io_url root_dir, Gfo_url_encoder encoder) {
|
||||
this.db_file = Xob_db_file.new__wiki_redirect(root_dir);
|
||||
this.db_file = Xob_db_file.New__wiki_redirect(root_dir);
|
||||
this.conn = db_file.Conn();
|
||||
this.encoder = encoder;
|
||||
}
|
||||
@@ -74,7 +74,7 @@ public class Xob_redirect_tbl {
|
||||
private static final String
|
||||
Fld_src_id = "src_id", Fld_src_ttl = "src_ttl", Fld_trg_id = "trg_id", Fld_trg_ns = "trg_ns", Fld_trg_ttl = "trg_ttl", Fld_trg_anchor = "trg_anchor"
|
||||
, Fld_trg_is_redirect = "trg_is_redirect", Fld_redirect_count = "redirect_count";
|
||||
private static final String Tbl_sql = String_.Concat_lines_nl
|
||||
private static final String Tbl_sql = String_.Concat_lines_nl
|
||||
( "CREATE TABLE IF NOT EXISTS redirect"
|
||||
, "( src_id integer NOT NULL PRIMARY KEY"
|
||||
, ", src_ttl varchar(255) NOT NULL"
|
||||
@@ -86,15 +86,15 @@ public class Xob_redirect_tbl {
|
||||
, ", redirect_count integer NOT NULL"
|
||||
, ");"
|
||||
);
|
||||
private static final Db_idx_itm
|
||||
private static final Db_idx_itm
|
||||
Idx_trg_ttl = Db_idx_itm.sql_("CREATE INDEX IF NOT EXISTS redirect__trg_ttl ON redirect (trg_ttl);")
|
||||
, Idx_trg_id = Db_idx_itm.sql_("CREATE INDEX IF NOT EXISTS redirect__trg_id ON redirect (trg_id);")
|
||||
, Idx_trg_src = Db_idx_itm.sql_("CREATE INDEX IF NOT EXISTS redirect__trg_src ON redirect (src_id, trg_id);")
|
||||
;
|
||||
// public static final String
|
||||
// public static final String
|
||||
// Sql_ddl__page_redirect_id = "ALTER TABLE page ADD COLUMN page_redirect_id integer NOT NULL DEFAULT '-1'"
|
||||
// ;
|
||||
private static final String
|
||||
private static final String
|
||||
Sql_get_page_data = String_.Concat_lines_nl // get data from page table for initial redirect dump
|
||||
( "REPLACE INTO redirect "
|
||||
, "SELECT t.src_id"
|
||||
@@ -147,7 +147,7 @@ public class Xob_redirect_tbl {
|
||||
)
|
||||
, Sql_update_redirect_id = String_.Concat_lines_nl_skip_last
|
||||
( "REPLACE INTO"
|
||||
, " page_db.page"
|
||||
, " page_db.page (page_id, page_namespace, page_title, page_is_redirect, page_touched, page_len, page_random_int, page_text_db_id, page_html_db_id, page_redirect_id, page_score)"
|
||||
, "SELECT p.page_id"
|
||||
, ", p.page_namespace"
|
||||
, ", p.page_title"
|
||||
@@ -158,6 +158,7 @@ public class Xob_redirect_tbl {
|
||||
, ", p.page_text_db_id"
|
||||
, ", p.page_html_db_id"
|
||||
, ", r.trg_id"
|
||||
, ", p.page_score"
|
||||
, "FROM redirect r"
|
||||
, " JOIN page_db.page p ON r.src_id = p.page_id"
|
||||
)
|
||||
|
||||
@@ -70,7 +70,6 @@ class Xob_url_fixer_tkn {
|
||||
public byte[] Raw() {return raw;} private byte[] raw;
|
||||
public int Raw_len() {return raw_len;} private int raw_len;
|
||||
public static Xob_url_fixer_tkn new_(int tid, String raw) {return new Xob_url_fixer_tkn(tid, Bry_.new_u8(raw));}
|
||||
|
||||
private static void trie_add(Btrie_slim_mgr trie, int tid, String s) {trie.Add_obj(s, new_(tid, s));}
|
||||
public static final int Tid_bgn_slash_1 = 1, Tid_bgn_slash_2 = 2, Tid_bgn_http = 3, Tid_bgn_https = 4;
|
||||
private static Btrie_slim_mgr bgn_trie;
|
||||
|
||||
@@ -55,7 +55,7 @@ class Dg_file_tbl {
|
||||
Dbmeta_tbl_itm meta = Dbmeta_tbl_itm.New(tbl_name, flds
|
||||
, Dbmeta_idx_itm.new_unique_by_tbl(tbl_name, "file_id", fld_file_id)
|
||||
);
|
||||
conn.Ddl_create_tbl(meta);
|
||||
conn.Meta_tbl_create(meta);
|
||||
}
|
||||
stmt_insert = null;
|
||||
}
|
||||
@@ -83,7 +83,7 @@ class Dg_rule_tbl implements Rls_able {
|
||||
Dbmeta_tbl_itm meta = Dbmeta_tbl_itm.New(tbl_name, flds
|
||||
, Dbmeta_idx_itm.new_unique_by_tbl(tbl_name, "pkey", fld_rule_id)
|
||||
);
|
||||
conn.Ddl_create_tbl(meta);
|
||||
conn.Meta_tbl_create(meta);
|
||||
}
|
||||
conn.Rls_reg(this);
|
||||
}
|
||||
@@ -119,7 +119,7 @@ class Dg_page_score_tbl implements Rls_able {
|
||||
Dbmeta_tbl_itm meta = Dbmeta_tbl_itm.New(tbl_name, flds
|
||||
, Dbmeta_idx_itm.new_unique_by_tbl(tbl_name, "pkey", fld_log_tid, fld_page_id)
|
||||
);
|
||||
conn.Ddl_create_tbl(meta);
|
||||
conn.Meta_tbl_create(meta);
|
||||
}
|
||||
stmt_insert = null;
|
||||
conn.Rls_reg(this);
|
||||
@@ -155,7 +155,7 @@ class Dg_page_rule_tbl implements Rls_able {
|
||||
Dbmeta_tbl_itm meta = Dbmeta_tbl_itm.New(tbl_name, flds
|
||||
, Dbmeta_idx_itm.new_unique_by_tbl(tbl_name, "pkey", fld_log_tid, fld_page_id, fld_rule_id)
|
||||
);
|
||||
conn.Ddl_create_tbl(meta);
|
||||
conn.Meta_tbl_create(meta);
|
||||
}
|
||||
stmt_insert = null;
|
||||
conn.Rls_reg(this);
|
||||
|
||||
@@ -103,11 +103,11 @@ class Xoi_cmd_search2_build extends Xoi_cmd_base {
|
||||
@Override public void Process_async_init(Xoae_app app, Xowe_wiki wiki, Xob_bldr bldr) {
|
||||
if (app.Setup_mgr().Dump_mgr().Wiki_storage_type_is_sql()) {
|
||||
wiki.Db_mgr_as_sql().Category_version_update(false);
|
||||
bldr.Cmd_mgr().Add_many(wiki, Xob_cmd_keys.Key_text_search_cmd);
|
||||
gplx.xowa.addons.searchs.dbs.bldrs.Srch_bldr_mgr_.Setup(wiki);
|
||||
}
|
||||
}
|
||||
@Override public void Process_async_done(Xoae_app app, Xowe_wiki wiki, Xob_bldr bldr) {
|
||||
app.Usr_dlg().Prog_many("", "", "search2 setup done");
|
||||
wiki.Db_mgr().Search_version_refresh();
|
||||
// wiki.Db_mgr().Search_version_refresh();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -50,7 +50,7 @@ public class Xoi_cmd_mgr implements GfoInvkAble {
|
||||
private void Run_async(Gfo_thread_cmd cmd) {Thread_adp_.invk_msg_(cmd.Async_key(), this, GfoMsg_.new_cast_(Invk_process_async).Add("v", cmd)).Start();}
|
||||
private void Cmds_run() {
|
||||
if (working) {
|
||||
app.Gui_mgr().Kit().Ask_ok("", "", "An import is in progress. Please wait for it to complete. If you want to do multiple imports at once, see Help:Import/Script.");
|
||||
app.Gui_mgr().Kit().Ask_ok("", "", "An import is in progress. Please wait for it to complete. If you want to do multiple imports at once, see Dashboard/Import/Offline."); // HOME
|
||||
return;
|
||||
}
|
||||
int cmds_len = cmds.Count();
|
||||
@@ -75,7 +75,7 @@ public class Xoi_cmd_mgr implements GfoInvkAble {
|
||||
String dump_type = m.Args_getAt(2).Val_to_str_or_empty();
|
||||
Gfo_thread_cmd cmd = null;
|
||||
for (int i = 3; i < args_len; i++) {
|
||||
KeyVal kv = m.Args_getAt(i);
|
||||
Keyval kv = m.Args_getAt(i);
|
||||
String kv_val = kv.Val_to_str_or_empty();
|
||||
if (String_.Eq(kv_val, Wiki_cmd_custom))
|
||||
return Dump_add_many_custom(wiki_key, wiki_date, dump_type, false);
|
||||
@@ -117,8 +117,8 @@ public class Xoi_cmd_mgr implements GfoInvkAble {
|
||||
else if (String_.Eq(cmd_key, Xoi_cmd_search2_build.KEY)) return new Xoi_cmd_search2_build(install_mgr, wiki_key).Owner_(this);
|
||||
else throw Err_.new_unhandled(cmd_key);
|
||||
}
|
||||
public static final String[] Wiki_cmds_valid = new String[] {Xoi_cmd_wiki_download.Key_wiki_download, Xoi_cmd_wiki_unzip.KEY_dump, Xoi_cmd_wiki_import.KEY, Xoi_cmd_wiki_zip.KEY, Xoi_cmd_category2_build.KEY, Xoi_cmd_category2_page_props.KEY_category2, Xoi_cmd_category2_categorylinks.KEY_category2};
|
||||
public static final String Wiki_cmd_custom = "wiki.custom", Wiki_cmd_dump_file = "wiki.dump_file";
|
||||
public static final String[] Wiki_cmds_valid = new String[] {Xoi_cmd_wiki_download.Key_wiki_download, Xoi_cmd_wiki_unzip.KEY_dump, Xoi_cmd_wiki_import.KEY, Xoi_cmd_wiki_zip.KEY, Xoi_cmd_category2_build.KEY, Xoi_cmd_category2_page_props.KEY_category2, Xoi_cmd_category2_categorylinks.KEY_category2};
|
||||
public static final String Wiki_cmd_custom = "wiki.custom", Wiki_cmd_dump_file = "wiki.dump_file";
|
||||
public Gfo_thread_cmd Cmd_add(GfoMsg m) {Gfo_thread_cmd rv = Cmd_new(m); cmds.Add(rv); return rv;}
|
||||
Gfo_thread_cmd Cmd_new(GfoMsg m) {
|
||||
String cmd_key = m.ReadStr("v");
|
||||
|
||||
@@ -64,8 +64,8 @@ class Xoi_cmd_wiki_import implements Gfo_thread_cmd {
|
||||
bldr.Cmd_mgr().Add_cmd(wiki, Xob_cmd_keys.Key_text_cat_core);
|
||||
bldr.Cmd_mgr().Add_cmd(wiki, Xob_cmd_keys.Key_text_cat_link);
|
||||
}
|
||||
if (wiki.Appe().Setup_mgr().Dump_mgr().Search_version() == gplx.xowa.specials.search.Xows_page__search.Version_2)
|
||||
bldr.Cmd_mgr().Add_cmd(wiki, Xob_cmd_keys.Key_text_search_wkr);
|
||||
if (wiki.Appe().Setup_mgr().Dump_mgr().Search_version() == gplx.xowa.addons.searchs.specials.Srch_special_page.Version_2)
|
||||
gplx.xowa.addons.searchs.dbs.bldrs.Srch_bldr_mgr_.Setup(wiki);
|
||||
bldr.Cmd_mgr().Add_cmd(wiki, Xob_cmd_keys.Key_text_term);
|
||||
}
|
||||
private void Process_async() {
|
||||
|
||||
@@ -33,7 +33,7 @@ public class Xoi_cmd_wiki_tst {
|
||||
Bfr_arg__time time_fmtr = new Bfr_arg__time();
|
||||
for (int i = 0; i < ary_len; i++)
|
||||
Bld_import_list_itm2(bfr, parser, time_fmtr, ary, i);
|
||||
Io_mgr.Instance.SaveFilStr("C:\\temp.txt", bfr.To_str());
|
||||
Io_mgr.Instance.SaveFilStr("C:\\xowa\\user\\temp.txt", bfr.To_str());
|
||||
}
|
||||
private void Bld_import_list_itm2(Bry_bfr bfr, Wmf_latest_parser parser, Bfr_arg__time time_fmtr, String[] ary, int i) {
|
||||
String domain_str = ary[i];
|
||||
@@ -124,6 +124,6 @@ public class Xoi_cmd_wiki_tst {
|
||||
}
|
||||
}
|
||||
bfr.Add_str_a7("app.bldr.wiki_cfg_bldr.run;").Add_byte_nl();
|
||||
Io_mgr.Instance.SaveFilStr("C:\\xowa_build_cfg.gfs", bfr.To_str());
|
||||
Io_mgr.Instance.SaveFilStr("C:\\user\\xowa_build_cfg.gfs", bfr.To_str());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -31,7 +31,7 @@ public class Xoi_dump_mgr implements GfoInvkAble {
|
||||
public boolean Css_wiki_update() {return css_wiki_update;} private boolean css_wiki_update = true;
|
||||
public boolean Css_commons_download() {return css_commons_download;} private boolean css_commons_download = true; // changed from false to true; DATE:2014-10-19
|
||||
public boolean Delete_xml_file() {return delete_xml_file;} private boolean delete_xml_file = true;
|
||||
public byte Search_version() {return search_version;} private byte search_version = gplx.xowa.specials.search.Xows_page__search.Version_2;
|
||||
public byte Search_version() {return search_version;} private byte search_version = gplx.xowa.addons.searchs.specials.Srch_special_page.Version_2;
|
||||
public boolean Import_bz2_by_stdout() {return import_bz2_by_stdout;} private boolean import_bz2_by_stdout = true;
|
||||
public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {
|
||||
if (ctx.Match(k, Invk_server_urls)) return String_.Concat_with_str(",\n", server_urls);
|
||||
@@ -77,9 +77,9 @@ public class Xoi_dump_mgr implements GfoInvkAble {
|
||||
, Invk_search_version = "search_version", Invk_search_version_ = "search_version_", Invk_search_version_list = "search_version_list"
|
||||
, Invk_import_bz2_by_stdout = "import_bz2_by_stdout", Invk_import_bz2_by_stdout_ = "import_bz2_by_stdout_"
|
||||
;
|
||||
private static KeyVal[] Options_data_storage_format_list = KeyVal_.Ary(KeyVal_.new_(".xdat", "text"), KeyVal_.new_(".gz", "gzip"), KeyVal_.new_(".bz2", "bzip2")); // removed .zip; DATE:2014-05-13; updated aliases; DATE:2014-06-20
|
||||
private static Keyval[] Options_data_storage_format_list = Keyval_.Ary(Keyval_.new_(".xdat", "text"), Keyval_.new_(".gz", "gzip"), Keyval_.new_(".bz2", "bzip2")); // removed .zip; DATE:2014-05-13; updated aliases; DATE:2014-06-20
|
||||
static final byte Wiki_storage_type_xdat = 1, Wiki_storage_type_sqlite = 2;
|
||||
private static final KeyVal[] Options_storage_type_list = KeyVal_.Ary(KeyVal_.new_("sqlite"), KeyVal_.new_("xdat")); // DEPRECATED: KeyVal_.new_("xdat"); DATE:2015-03-30
|
||||
private static final Keyval[] Options_storage_type_list = Keyval_.Ary(Keyval_.new_("sqlite"), Keyval_.new_("xdat")); // DEPRECATED: Keyval_.new_("xdat"); DATE:2015-03-30
|
||||
public static String Wiki_storage_type_str(byte v) {
|
||||
switch (v) {
|
||||
case Xoi_dump_mgr.Wiki_storage_type_xdat : return "xdat";
|
||||
@@ -92,7 +92,7 @@ public class Xoi_dump_mgr implements GfoInvkAble {
|
||||
else if (String_.Eq(v, "sqlite")) return Xoi_dump_mgr.Wiki_storage_type_sqlite;
|
||||
else throw Err_.new_unhandled(v);
|
||||
}
|
||||
private static final KeyVal[] Options_search_version_list = KeyVal_.Ary(KeyVal_.new_("1"), KeyVal_.new_("2"));
|
||||
private static final Keyval[] Options_search_version_list = Keyval_.Ary(Keyval_.new_("1"), Keyval_.new_("2"));
|
||||
public static String Options_search_version_str(byte v) {return Byte_.To_str(v);}
|
||||
public static byte Options_search_version_parse(String v) {return Byte_.parse(v);}
|
||||
}
|
||||
|
||||
@@ -84,8 +84,8 @@ class Xow_cfg_wiki_core_fxt {
|
||||
Xoae_app app; Xowe_wiki wiki;
|
||||
public Xowe_wiki Wiki() {return wiki;}
|
||||
public void Clear() {
|
||||
app = Xoa_app_fxt.app_();
|
||||
wiki = Xoa_app_fxt.wiki_tst_(app);
|
||||
app = Xoa_app_fxt.Make__app__edit();
|
||||
wiki = Xoa_app_fxt.Make__wiki__edit(app);
|
||||
}
|
||||
public void Save_tst(String bldr_version, String main_page, String siteinfo_misc, int ns_user_case_match, String ns_user_name, String expd) {
|
||||
wiki.Props().Bldr_version_(Bry_.new_a7(bldr_version)).Main_page_(Bry_.new_a7(main_page)).Siteinfo_misc_(Bry_.new_a7(siteinfo_misc));
|
||||
|
||||
@@ -34,4 +34,4 @@ public class Wmf_dump_itm implements gplx.CompareAble {
|
||||
public int compareTo(Object obj) {Wmf_dump_itm comp = (Wmf_dump_itm)obj; return Bry_.Compare(wiki_abrv, comp.wiki_abrv);}
|
||||
private static byte[] Status_msg_dump_complete = Bry_.new_a7("Dump complete"), Status_msg_dump_in_progress = Bry_.new_a7("Dump in progress");
|
||||
public static final byte Status_tid_complete = 0, Status_tid_working = 1, Status_tid_error = 2;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -41,7 +41,9 @@ public class Wmf_dump_list_parser {
|
||||
byte[] href_bry = Bry_.Mid(src, href_bgn_pos + 1, href_end_pos);
|
||||
int date_end = href_bry.length;
|
||||
int date_bgn = Bry_find_.Find_bwd(href_bry, Byte_ascii.Slash); if (date_bgn == Bry_find_.Not_found) return false;
|
||||
byte[] date_bry = Bry_.Mid(href_bry, date_bgn + 1, date_end);
|
||||
byte[] date_bry = Bry_.Mid(href_bry, date_bgn + 1, date_end); if (date_bry.length == 0) return false; // anchors like "/other_static_dumps" should be skipped
|
||||
if (Bry_.Has(date_bry, Bry_.new_u8("legal.html"))) return false;
|
||||
if (Bry_.Has(date_bry, Bry_.new_u8("Privacy_policy"))) return false;
|
||||
DateAdp date = DateAdp_.parse_fmt(String_.new_a7(date_bry), "yyyyMMdd");
|
||||
itm.Dump_date_(date);
|
||||
int abrv_end = date_bgn;
|
||||
|
||||
@@ -41,7 +41,7 @@ public class Wmf_dump_list_parser_tst {
|
||||
, fxt.itm("zh-classicalwiki", "20131128", Wmf_dump_itm.Status_tid_complete, "Dump complete", "2013-11-28 06:08:56")
|
||||
);
|
||||
}
|
||||
// @Test public void Update() { // MAINT:QUARTERLY:2015-08-23; must run C:\xowa\ and update dump status
|
||||
// @Test public void Update() { // MAINT:QUARTERLY:2016-03-17; must run C:\xowa\ and update dump status
|
||||
// Hash_adp_bry excluded_domains = Hash_adp_bry.cs().Add_many_str
|
||||
// ( "advisory.wikipedia.org", "beta.wikiversity.org", "donate.wikipedia.org", "login.wikipedia.org"
|
||||
// , "nostalgia.wikipedia.org", "outreach.wikipedia.org", "quality.wikipedia.org", "sources.wikipedia.org"
|
||||
@@ -80,7 +80,7 @@ public class Wmf_dump_list_parser_tst {
|
||||
// .Add_byte(Byte_ascii.Apos)
|
||||
// .Add_byte(Byte_ascii.Paren_end)
|
||||
// .Add_byte(Byte_ascii.Comma)
|
||||
// .Add_str("--" + String_.new_u8(abrv))
|
||||
// .Add_str_u8("--" + String_.new_u8(abrv))
|
||||
// .Add_byte_nl()
|
||||
// ;
|
||||
// bld_bfr
|
||||
@@ -92,7 +92,7 @@ public class Wmf_dump_list_parser_tst {
|
||||
// .Add_byte_nl()
|
||||
// ;
|
||||
// }
|
||||
// Io_url temp = Io_url_.new_fil_("C:\\import_update.txt");
|
||||
// Io_url temp = Io_url_.new_fil_("C:\\xowa\\user\\import_update.txt");
|
||||
// Io_mgr.Instance.SaveFilBfr(temp, sql_bfr);
|
||||
//// Io_mgr.Instance.AppendFilBfr(temp, bld_bfr);
|
||||
// }
|
||||
|
||||
@@ -23,4 +23,4 @@ public class Wmf_latest_itm {
|
||||
public byte[] Name() {return name;} private final byte[] name;
|
||||
public DateAdp Date() {return date;} private final DateAdp date;
|
||||
public long Size() {return size;} private final long size;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -34,6 +34,7 @@ public class Xow_maint_mgr implements GfoInvkAble {
|
||||
} private DateAdp wiki_dump_date;
|
||||
public boolean Wiki_update_needed() {
|
||||
if (this.Wiki_dump_date() == null) return false; // will be null if a custom wiki (i.e.: not on http://dumps.wikimedia.org/backup-index.html)
|
||||
if (this.Wmf_dump_date() == null) return false; // also null if custom wiki
|
||||
return this.Wmf_dump_date().Diff(this.Wiki_dump_date()).Total_days().To_double() > 1;
|
||||
}
|
||||
public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {
|
||||
|
||||
@@ -19,8 +19,8 @@ package gplx.xowa.bldrs.setups.upgrades; import gplx.*; import gplx.xowa.*; impo
|
||||
import org.junit.*; import gplx.xowa.bldrs.installs.*;
|
||||
public class Upgrader_v00_02_01_tst {
|
||||
@Test public void Run() {
|
||||
Xoae_app app = Xoa_app_fxt.app_();
|
||||
Xowe_wiki wiki = Xoa_app_fxt.wiki_tst_(app);
|
||||
Xoae_app app = Xoa_app_fxt.Make__app__edit();
|
||||
Xowe_wiki wiki = Xoa_app_fxt.Make__wiki__edit(app);
|
||||
Io_url cfg_dir = wiki.Fsys_mgr().Root_dir().GenSubDir("cfg");
|
||||
Io_mgr.Instance.SaveFilStr(cfg_dir.GenSubFil("siteInfo.xml"), Str_siteinfo_xml);
|
||||
Io_mgr.Instance.SaveFilStr(cfg_dir.GenSubFil("wiki.gfs"), Str_wikistats_gfs);
|
||||
|
||||
@@ -19,7 +19,7 @@ package gplx.xowa.bldrs.setups.upgrades; import gplx.*; import gplx.xowa.*; impo
|
||||
import org.junit.*;
|
||||
public class Xoa_upgrade_mgr_tst {
|
||||
@Test public void Run() {
|
||||
Xoae_app app = Xoa_app_fxt.app_();
|
||||
Xoae_app app = Xoa_app_fxt.Make__app__edit();
|
||||
Io_url old_history_dir = app.Usere().Fsys_mgr().App_data_dir();
|
||||
Io_url new_history_dir = app.Usere().Fsys_mgr().App_data_dir().GenSubDir("history");
|
||||
Io_mgr.Instance.SaveFilStr(old_history_dir.GenSubFil("page_history.csv"), "test");
|
||||
|
||||
@@ -97,7 +97,7 @@ class Xoi_wiki_props_fxt {
|
||||
class Xob_subpage_tst_fxt {
|
||||
public Xob_subpage_tst_fxt Clear() {
|
||||
if (app == null) {
|
||||
app = Xoa_app_fxt.app_();
|
||||
app = Xoa_app_fxt.Make__app__edit();
|
||||
mgr = app.Bldr().Wiki_cfg_bldr();
|
||||
}
|
||||
mgr.Clear();
|
||||
@@ -110,7 +110,7 @@ class Xob_subpage_tst_fxt {
|
||||
return this;
|
||||
}
|
||||
public Xob_subpage_tst_fxt Expd_txt(String wiki, String text) {
|
||||
// hash.Add(wiki, KeyVal_.new_(wiki, text));
|
||||
// hash.Add(wiki, Keyval_.new_(wiki, text));
|
||||
return this;
|
||||
}
|
||||
private String_bldr sb = String_bldr_.new_();
|
||||
|
||||
29
400_xowa/src/gplx/xowa/bldrs/wkrs/Xob_cmd__base.java
Normal file
29
400_xowa/src/gplx/xowa/bldrs/wkrs/Xob_cmd__base.java
Normal file
@@ -0,0 +1,29 @@
|
||||
/*
|
||||
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.wkrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*;
|
||||
public abstract class Xob_cmd__base implements GfoInvkAble {
|
||||
protected final Xoae_app app; protected final Xob_bldr bldr; protected final Xowe_wiki wiki; protected final Gfo_usr_dlg usr_dlg;
|
||||
public Xob_cmd__base(Xob_bldr bldr, Xowe_wiki wiki) {this.bldr = bldr; this.wiki = wiki; this.app = bldr.App(); usr_dlg = bldr.Usr_dlg();}
|
||||
public abstract String Cmd_key();
|
||||
public abstract void Cmd_run();
|
||||
@gplx.Virtual public void Cmd_init(Xob_bldr bldr) {}
|
||||
@gplx.Virtual public void Cmd_bgn(Xob_bldr bldr) {}
|
||||
@gplx.Virtual public void Cmd_end() {}
|
||||
@gplx.Virtual public void Cmd_term() {}
|
||||
public abstract Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m);
|
||||
}
|
||||
@@ -36,4 +36,4 @@ public abstract class Xob_idx_base extends Xob_itm_basic_base implements Xob_cmd
|
||||
Io_url[] fils = Io_mgr.Instance.QueryDir_fils(dir);
|
||||
return new Io_line_rdr(bldr.Usr_dlg(), fils).Key_gen_(Io_line_rdr_key_gen_.first_pipe);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,8 +19,7 @@ package gplx.xowa.bldrs.wkrs; import gplx.*; import gplx.xowa.*; import gplx.xow
|
||||
public abstract class Xob_itm_basic_base implements GfoInvkAble {
|
||||
protected Xoae_app app; protected Xob_bldr bldr; protected Xowe_wiki wiki; protected Gfo_usr_dlg usr_dlg;
|
||||
public void Cmd_ctor(Xob_bldr bldr, Xowe_wiki wiki) {this.bldr = bldr; this.wiki = wiki; this.app = bldr.App(); usr_dlg = bldr.Usr_dlg(); this.Cmd_ctor_end(bldr, wiki);}
|
||||
@gplx.Virtual protected void Cmd_ctor_end(Xob_bldr bldr, Xowe_wiki wiki) {
|
||||
}
|
||||
@gplx.Virtual protected void Cmd_ctor_end(Xob_bldr bldr, Xowe_wiki wiki) {}
|
||||
@gplx.Virtual public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {
|
||||
if (ctx.Match(k, Invk_owner)) return bldr.Cmd_mgr();
|
||||
else return GfoInvkAble_.Rv_unhandled;
|
||||
|
||||
@@ -19,7 +19,7 @@ package gplx.xowa.bldrs.wkrs; import gplx.*; import gplx.xowa.*; import gplx.xow
|
||||
import gplx.core.flds.*; import gplx.core.ios.*; import gplx.xowa.wikis.tdbs.*;
|
||||
import gplx.xowa.bldrs.sqls.*; import gplx.xowa.wikis.tdbs.bldrs.*;
|
||||
public abstract class Xob_sql_dump_base extends Xob_itm_dump_base implements Xob_cmd, GfoInvkAble {
|
||||
private final Sql_file_parser parser = new Sql_file_parser(); private boolean fail = false;
|
||||
private final Sql_file_parser parser = new Sql_file_parser(); protected boolean fail = false;
|
||||
public abstract String Cmd_key();
|
||||
public Io_url Src_fil() {return src_fil;} private Io_url src_fil;
|
||||
public Io_url_gen Make_url_gen() {return make_url_gen;} private Io_url_gen make_url_gen;
|
||||
|
||||
@@ -39,8 +39,8 @@ public class Xoapi_orig_base_tst {
|
||||
class Xoapi_orig_base_fxt {
|
||||
private Xoae_app app; private Xowe_wiki wiki; private Xoapi_orig_rslts rv = new Xoapi_orig_rslts();
|
||||
public void Clear() {
|
||||
this.app = Xoa_app_fxt.app_();
|
||||
this.wiki = Xoa_app_fxt.wiki_tst_(app);
|
||||
this.app = Xoa_app_fxt.Make__app__edit();
|
||||
this.wiki = Xoa_app_fxt.Make__wiki__edit(app);
|
||||
}
|
||||
public void Bld_api_url_tst(String ttl_str, int w, int h, String expd) {
|
||||
String actl = Xoapi_orig_wmf.Bld_api_url(wiki.Domain_bry(), Bry_.new_u8(ttl_str), w, h);
|
||||
|
||||
@@ -91,7 +91,7 @@ public class Xowm_dump_file {
|
||||
int dump_type_int = Xowm_dump_type_.parse_by_file(dump_type_bry);
|
||||
byte[] dump_file_ext = Xowm_dump_file_.Ext_xml_bz2;
|
||||
switch (dump_type_int) {
|
||||
case Xowm_dump_type_.Int__page_props: case Xowm_dump_type_.Int__categorylinks: case Xowm_dump_type_.Int__image:
|
||||
case Xowm_dump_type_.Int__page_props: case Xowm_dump_type_.Int__categorylinks: case Xowm_dump_type_.Int__image: case Xowm_dump_type_.Int__pagelinks:
|
||||
dump_file_ext = Xowm_dump_file_.Ext_sql_gz;
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -23,9 +23,9 @@ public class Xowm_dump_type_ {
|
||||
Object o = regy.Match_bgn(src, bgn, end); if (o == null) throw Err_.new_("wm.dump", "unknown dump file type", "src", src);
|
||||
return ((Int_obj_val)o).Val();
|
||||
}
|
||||
public static final int Int__pages_articles = 1, Int__pages_meta_current = 2, Int__categorylinks = 3, Int__page_props = 4, Int__image = 5;
|
||||
public static final int Int__pages_articles = 1, Int__pages_meta_current = 2, Int__categorylinks = 3, Int__page_props = 4, Int__image = 5, Int__pagelinks = 6;
|
||||
public static final String Str__pages_articles = "pages-articles", Str__pages_meta_current = "pages-meta-current"
|
||||
, Str__categorylinks = "categorylinks", Str__page_props = "page_props", Str__image = "image"
|
||||
, Str__categorylinks = "categorylinks", Str__page_props = "page_props", Str__image = "image", Str__pagelinks = "pagelinks"
|
||||
;
|
||||
private static final Btrie_slim_mgr regy = Btrie_slim_mgr.ci_a7()
|
||||
.Add_str_int(Str__pages_articles , Int__pages_articles)
|
||||
@@ -33,6 +33,7 @@ public class Xowm_dump_type_ {
|
||||
.Add_str_int(Str__categorylinks , Int__categorylinks)
|
||||
.Add_str_int(Str__page_props , Int__page_props)
|
||||
.Add_str_int(Str__image , Int__image)
|
||||
.Add_str_int(Str__pagelinks , Int__pagelinks)
|
||||
;
|
||||
public static String To_str(byte v) {
|
||||
switch (v) {
|
||||
@@ -41,6 +42,7 @@ public class Xowm_dump_type_ {
|
||||
case Int__categorylinks : return Str__categorylinks;
|
||||
case Int__page_props : return Str__page_props;
|
||||
case Int__image : return Str__image;
|
||||
case Int__pagelinks : return Str__pagelinks;
|
||||
default : throw Err_.new_unhandled(v);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -21,24 +21,24 @@ import gplx.xowa.wikis.nss.*;
|
||||
import gplx.xowa.wikis.domains.*; import gplx.xowa.wikis.xwikis.*; import gplx.xowa.wikis.xwikis.bldrs.*;
|
||||
public class Site_core_db {
|
||||
private Db_conn conn;
|
||||
private final Site_core_tbl tbl__core;
|
||||
private final Site_kv_tbl tbl__general;
|
||||
private final Site_namespace_tbl tbl__namespace;
|
||||
private final Site_statistic_tbl tbl__statistic;
|
||||
private final Site_interwikimap_tbl tbl__interwikimap;
|
||||
private final Site_namespacealias_tbl tbl__namespacealias;
|
||||
private final Site_specialpagealias_tbl tbl__specialpagealias;
|
||||
private final Site_library_tbl tbl__library;
|
||||
private final Site_extension_tbl tbl__extension;
|
||||
private final Site_skin_tbl tbl__skin;
|
||||
private final Site_magicword_tbl tbl__magicword;
|
||||
private final Site_val_tbl tbl__functionhook;
|
||||
private final Site_showhook_tbl tbl__showhook;
|
||||
private final Site_val_tbl tbl__extensiontag;
|
||||
private final Site_val_tbl tbl__protocol;
|
||||
private final Site_kv_tbl tbl__defaultoption;
|
||||
private final Site_language_tbl tbl__language;
|
||||
private final Db_tbl[] tbl_ary;
|
||||
private final Site_core_tbl tbl__core;
|
||||
private final Site_kv_tbl tbl__general;
|
||||
private final Site_namespace_tbl tbl__namespace;
|
||||
private final Site_statistic_tbl tbl__statistic;
|
||||
private final Site_interwikimap_tbl tbl__interwikimap;
|
||||
private final Site_namespacealias_tbl tbl__namespacealias;
|
||||
private final Site_specialpagealias_tbl tbl__specialpagealias;
|
||||
private final Site_library_tbl tbl__library;
|
||||
private final Site_extension_tbl tbl__extension;
|
||||
private final Site_skin_tbl tbl__skin;
|
||||
private final Site_magicword_tbl tbl__magicword;
|
||||
private final Site_val_tbl tbl__functionhook;
|
||||
private final Site_showhook_tbl tbl__showhook;
|
||||
private final Site_val_tbl tbl__extensiontag;
|
||||
private final Site_val_tbl tbl__protocol;
|
||||
private final Site_kv_tbl tbl__defaultoption;
|
||||
private final Site_language_tbl tbl__language;
|
||||
private final Db_tbl[] tbl_ary;
|
||||
public Site_core_db(Io_url db_url) {
|
||||
Db_conn_bldr_data conn_data = Db_conn_bldr.Instance.Get_or_new(db_url);
|
||||
this.conn = conn_data.Conn(); boolean created = conn_data.Created();
|
||||
@@ -120,7 +120,7 @@ public class Site_core_db {
|
||||
int len = hash.Count();
|
||||
for (int i = 0; i < len; ++i) {
|
||||
Site_interwikimap_itm itm = (Site_interwikimap_itm)hash.Get_at(i);
|
||||
Xow_xwiki_itm xwiki_itm = Xow_xwiki_itm_bldr.Instance.Bld_mw(domain_itm, itm.Prefix(), itm.Url(), null);
|
||||
Xow_xwiki_itm xwiki_itm = Xow_xwiki_itm_bldr.Instance.Bld_mw(domain_itm, itm.Prefix, itm.Url, null);
|
||||
xwiki_mgr.Add_itm(xwiki_itm);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -32,7 +32,7 @@ public class Site_core_tbl implements Db_tbl {
|
||||
conn.Rls_reg(this);
|
||||
}
|
||||
public Db_conn Conn() {return conn;}
|
||||
public void Create_tbl() {conn.Ddl_create_tbl(Dbmeta_tbl_itm.New(tbl_name, flds, Dbmeta_idx_itm.new_unique_by_name(tbl_name, Dbmeta_idx_itm.Bld_idx_name(tbl_name, "main"), fld_site_abrv)));}
|
||||
public void Create_tbl() {conn.Meta_tbl_create(Dbmeta_tbl_itm.New(tbl_name, flds, Dbmeta_idx_itm.new_unique_by_name(tbl_name, Dbmeta_idx_itm.Bld_idx_name(tbl_name, "main"), fld_site_abrv)));}
|
||||
public void Rls() {
|
||||
stmt_select = Db_stmt_.Rls(stmt_select);
|
||||
stmt_insert = Db_stmt_.Rls(stmt_insert);
|
||||
|
||||
@@ -43,7 +43,7 @@ class Site_extension_tbl implements Db_tbl {
|
||||
this.fld_credits = flds.Add_str("credits", 255);
|
||||
conn.Rls_reg(this);
|
||||
}
|
||||
public void Create_tbl() {conn.Ddl_create_tbl(Dbmeta_tbl_itm.New(tbl_name, flds, Dbmeta_idx_itm.new_unique_by_name(tbl_name, Dbmeta_idx_itm.Bld_idx_name(tbl_name, "main"), fld_site_abrv, fld_type, fld_name)));}
|
||||
public void Create_tbl() {conn.Meta_tbl_create(Dbmeta_tbl_itm.New(tbl_name, flds, Dbmeta_idx_itm.new_unique_by_name(tbl_name, Dbmeta_idx_itm.Bld_idx_name(tbl_name, "main"), fld_site_abrv, fld_type, fld_name)));}
|
||||
public void Delete_all() {conn.Stmt_delete(tbl_name, Dbmeta_fld_itm.Str_ary_empty).Exec_delete();}
|
||||
public void Rls() {
|
||||
stmt_select = Db_stmt_.Rls(stmt_select);
|
||||
|
||||
@@ -17,19 +17,27 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package gplx.xowa.bldrs.wms.sites; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wms.*;
|
||||
class Site_interwikimap_itm implements To_str_able {
|
||||
public Site_interwikimap_itm(byte[] prefix, boolean local, byte[] language, boolean localinterwiki, byte[] url, boolean protorel) {
|
||||
this.prefix = prefix;
|
||||
this.local = local;
|
||||
this.language = language;
|
||||
this.localinterwiki = localinterwiki;
|
||||
this.url = url;
|
||||
this.protorel = protorel;
|
||||
public Site_interwikimap_itm(byte[] prefix, boolean local
|
||||
, boolean extralanglink, byte[] linktext, byte[] sitename
|
||||
, byte[] language, boolean localinterwiki, byte[] url, boolean protorel) {
|
||||
this.Prefix = prefix;
|
||||
this.Local = local;
|
||||
this.Extralanglink = extralanglink;
|
||||
this.Linktext = linktext;
|
||||
this.Sitename = sitename;
|
||||
this.Language = language;
|
||||
this.Localinterwiki = localinterwiki;
|
||||
this.Url = url;
|
||||
this.Protorel = protorel;
|
||||
}
|
||||
public byte[] Prefix() {return prefix;} private final byte[] prefix;
|
||||
public boolean Local() {return local;} private final boolean local;
|
||||
public byte[] Language() {return language;} private final byte[] language;
|
||||
public boolean Localinterwiki() {return localinterwiki;} private final boolean localinterwiki;
|
||||
public byte[] Url() {return url;} private final byte[] url;
|
||||
public boolean Protorel() {return protorel;} private final boolean protorel;
|
||||
public String To_str() {return String_.Concat_with_obj("|", prefix, local, language, url, protorel);}
|
||||
public final byte[] Prefix;
|
||||
public final boolean Local;
|
||||
public final boolean Extralanglink;
|
||||
public final byte[] Linktext;
|
||||
public final byte[] Sitename;
|
||||
public final byte[] Language;
|
||||
public final boolean Localinterwiki;
|
||||
public final byte[] Url;
|
||||
public final boolean Protorel;
|
||||
public String To_str() {return String_.Concat_with_obj("|", Prefix, Local, Extralanglink, Linktext, Sitename, Language, Localinterwiki, Url, Protorel);}
|
||||
}
|
||||
|
||||
@@ -18,22 +18,25 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
package gplx.xowa.bldrs.wms.sites; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wms.*;
|
||||
import gplx.dbs.*;
|
||||
class Site_interwikimap_tbl implements Db_tbl {
|
||||
private static final String tbl_name = "site_interwikimap"; private final Dbmeta_fld_list flds = new Dbmeta_fld_list();
|
||||
private final String fld_site_abrv, fld_prefix, fld_local, fld_language, fld_localinterwiki, fld_url, fld_protorel;
|
||||
private final Db_conn conn;
|
||||
private static final String tbl_name = "site_interwikimap"; private final Dbmeta_fld_list flds = new Dbmeta_fld_list();
|
||||
private final String fld_site_abrv, fld_prefix, fld_local, fld_extralanglink, fld_linktext, fld_sitename, fld_language, fld_localinterwiki, fld_url, fld_protorel;
|
||||
private final Db_conn conn;
|
||||
private Db_stmt stmt_select, stmt_insert, stmt_delete;
|
||||
public Site_interwikimap_tbl(Db_conn conn) {
|
||||
this.conn = conn;
|
||||
this.fld_site_abrv = flds.Add_str("site_abrv", 255);
|
||||
this.fld_prefix = flds.Add_str("prefix", 255);
|
||||
this.fld_local = flds.Add_bool("local");
|
||||
this.fld_extralanglink = flds.Add_bool("extralanglink");
|
||||
this.fld_linktext = flds.Add_str("linktext", 255);
|
||||
this.fld_sitename = flds.Add_str("sitename", 255);
|
||||
this.fld_language = flds.Add_str("language", 255);
|
||||
this.fld_localinterwiki = flds.Add_bool("localinterwiki");
|
||||
this.fld_url = flds.Add_str("url", 255);
|
||||
this.fld_protorel = flds.Add_bool("protorel");
|
||||
conn.Rls_reg(this);
|
||||
}
|
||||
public void Create_tbl() {conn.Ddl_create_tbl(Dbmeta_tbl_itm.New(tbl_name, flds, Dbmeta_idx_itm.new_unique_by_name(tbl_name, Dbmeta_idx_itm.Bld_idx_name(tbl_name, "main"), fld_site_abrv, fld_prefix)));}
|
||||
public void Create_tbl() {conn.Meta_tbl_create(Dbmeta_tbl_itm.New(tbl_name, flds, Dbmeta_idx_itm.new_unique_by_name(tbl_name, Dbmeta_idx_itm.Bld_idx_name(tbl_name, "main"), fld_site_abrv, fld_prefix)));}
|
||||
public void Delete_all() {conn.Stmt_delete(tbl_name, Dbmeta_fld_itm.Str_ary_empty).Exec_delete();}
|
||||
public void Rls() {
|
||||
stmt_select = Db_stmt_.Rls(stmt_select);
|
||||
@@ -49,12 +52,15 @@ class Site_interwikimap_tbl implements Db_tbl {
|
||||
Site_interwikimap_itm itm = new Site_interwikimap_itm
|
||||
( rdr.Read_bry_by_str(fld_prefix)
|
||||
, rdr.Read_bool_by_byte(fld_local)
|
||||
, rdr.Read_bool_by_byte(fld_extralanglink)
|
||||
, rdr.Read_bry_by_str(fld_linktext)
|
||||
, rdr.Read_bry_by_str(fld_sitename)
|
||||
, rdr.Read_bry_by_str(fld_language)
|
||||
, rdr.Read_bool_by_byte(fld_localinterwiki)
|
||||
, rdr.Read_bry_by_str(fld_url)
|
||||
, rdr.Read_bool_by_byte(fld_protorel)
|
||||
);
|
||||
list.Add(itm.Prefix(), itm);
|
||||
list.Add(itm.Prefix, itm);
|
||||
}
|
||||
}
|
||||
finally {rdr.Rls();}
|
||||
@@ -66,14 +72,17 @@ class Site_interwikimap_tbl implements Db_tbl {
|
||||
int len = list.Count();
|
||||
for (int i = 0; i < len; ++i) {
|
||||
Site_interwikimap_itm itm = (Site_interwikimap_itm)list.Get_at(i);
|
||||
Insert(site_abrv, itm.Prefix(), itm.Local(), itm.Language(), itm.Localinterwiki(), itm.Url(), itm.Protorel());
|
||||
Insert(site_abrv, itm.Prefix, itm.Local, itm.Extralanglink, itm.Linktext, itm.Sitename, itm.Language, itm.Localinterwiki, itm.Url, itm.Protorel);
|
||||
}
|
||||
}
|
||||
private void Insert(byte[] site_abrv, byte[] prefix, boolean local, byte[] language, boolean localinterwiki, byte[] url, boolean protorel) {
|
||||
private void Insert(byte[] site_abrv, byte[] prefix, boolean local, boolean extralanglink, byte[] linktext, byte[] sitename, byte[] language, boolean localinterwiki, byte[] url, boolean protorel) {
|
||||
stmt_insert.Clear()
|
||||
.Val_bry_as_str(fld_site_abrv , site_abrv)
|
||||
.Val_bry_as_str(fld_prefix , prefix)
|
||||
.Val_bool_as_byte(fld_local , local)
|
||||
.Val_bool_as_byte(fld_extralanglink , extralanglink)
|
||||
.Val_bry_as_str(fld_linktext , linktext)
|
||||
.Val_bry_as_str(fld_sitename , sitename)
|
||||
.Val_bry_as_str(fld_language , language)
|
||||
.Val_bool_as_byte(fld_localinterwiki , localinterwiki)
|
||||
.Val_bry_as_str(fld_url , url)
|
||||
|
||||
@@ -18,7 +18,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
package gplx.xowa.bldrs.wms.sites; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wms.*;
|
||||
import org.junit.*; import gplx.langs.jsons.*; import gplx.xowa.wikis.nss.*;
|
||||
public class Site_json_parser_tst {
|
||||
private final Site_json_parser_fxt fxt = new Site_json_parser_fxt();
|
||||
private final Site_json_parser_fxt fxt = new Site_json_parser_fxt();
|
||||
@Before public void init() {Gfo_usr_dlg_.Instance = Gfo_usr_dlg_.Test_console();}
|
||||
@After public void term() {Gfo_usr_dlg_.Instance = Gfo_usr_dlg_.Noop;}
|
||||
@Test public void General() {
|
||||
@@ -44,7 +44,7 @@ public class Site_json_parser_tst {
|
||||
, " }"
|
||||
, "}"
|
||||
));
|
||||
fxt.Test_general(KeyVal_.new_("mainpage", "Main Page"), KeyVal_.new_("imagewhitelistenabled", ""), KeyVal_.new_("timeoffset", "0"), KeyVal_.new_("thumblimits", "120|150"), KeyVal_.new_("imagelimits", "320=240|640=480"));
|
||||
fxt.Test_general(Keyval_.new_("mainpage", "Main Page"), Keyval_.new_("imagewhitelistenabled", ""), Keyval_.new_("timeoffset", "0"), Keyval_.new_("thumblimits", "120|150"), Keyval_.new_("imagelimits", "320=240|640=480"));
|
||||
}
|
||||
@Test public void Namespace() {
|
||||
fxt.Exec_parse(String_.Concat_lines_nl_skip_last
|
||||
@@ -114,6 +114,9 @@ public class Site_json_parser_tst {
|
||||
, " }"
|
||||
, " , { 'prefix': 'ar'"
|
||||
, " , 'local': ''"
|
||||
, " , 'extralanglink': ''"
|
||||
, " , 'linktext': 'More languages'"
|
||||
, " , 'sitename': 'Multilingual Wikisource'"
|
||||
, " , 'language': '\u0627\u0644\u0639\u0631\u0628\u064a\u0629'"
|
||||
, " , 'url': 'https://ar.wikipedia.org/wiki/$1'"
|
||||
, " , 'protorel': ''"
|
||||
@@ -122,8 +125,8 @@ public class Site_json_parser_tst {
|
||||
, "}"
|
||||
));
|
||||
fxt.Test_interwikimap
|
||||
( fxt.Make_interwikimap("aquariumwiki" , Bool_.N, null , Bool_.N, "http://www.theaquariumwiki.com/$1" , Bool_.N)
|
||||
, fxt.Make_interwikimap("ar" , Bool_.Y, "العربية" , Bool_.N, "https://ar.wikipedia.org/wiki/$1" , Bool_.Y)
|
||||
( fxt.Make_interwikimap("aquariumwiki" , Bool_.N, Bool_.N, null , null , null , Bool_.N, "http://www.theaquariumwiki.com/$1" , Bool_.N)
|
||||
, fxt.Make_interwikimap("ar" , Bool_.Y, Bool_.Y, "More languages", "Multilingual Wikisource" , "العربية" , Bool_.N, "https://ar.wikipedia.org/wiki/$1" , Bool_.Y)
|
||||
);
|
||||
}
|
||||
@Test public void Namespacealias() {
|
||||
@@ -343,7 +346,7 @@ public class Site_json_parser_tst {
|
||||
, " }"
|
||||
, "}"
|
||||
));
|
||||
fxt.Test_defaultoption(KeyVal_.new_("globaluserpage", "true"), KeyVal_.new_("cols", "80"), KeyVal_.new_("echo-email-format", "html"));
|
||||
fxt.Test_defaultoption(Keyval_.new_("globaluserpage", "true"), Keyval_.new_("cols", "80"), Keyval_.new_("echo-email-format", "html"));
|
||||
}
|
||||
@Test public void Language() {
|
||||
fxt.Exec_parse(String_.Concat_lines_nl_skip_last
|
||||
@@ -376,8 +379,8 @@ public class Site_json_parser_tst {
|
||||
// }
|
||||
}
|
||||
class Site_json_parser_fxt {
|
||||
private final Json_parser json_parser = new Json_parser();
|
||||
private final Site_json_parser site_meta_parser;
|
||||
private final Json_parser json_parser = new Json_parser();
|
||||
private final Site_json_parser site_meta_parser;
|
||||
private Site_meta_itm site_meta;
|
||||
public Site_json_parser_fxt() {
|
||||
this.site_meta_parser = new Site_json_parser(json_parser);
|
||||
@@ -391,7 +394,9 @@ class Site_json_parser_fxt {
|
||||
return new Site_namespace_itm(id, case_tid_is_cs ? Xow_ns_case_.Bry__all : Xow_ns_case_.Bry__1st, Bry_.new_u8_safe(canonical), Bry_.new_u8_safe(localized), subpages, content, Bry_.new_u8_safe(defaultcontentmodel));
|
||||
}
|
||||
public Site_statistic_itm Make_statistic(long pages, long articles, long edits, long images, long users, long activeusers, long admins, long jobs, long queued_massmessages) {return new Site_statistic_itm().Ctor(pages, articles, edits, images, users, activeusers, admins, jobs, queued_massmessages);}
|
||||
public Site_interwikimap_itm Make_interwikimap(String prefix, boolean local, String language, boolean localinterwiki, String url, boolean protorel) {return new Site_interwikimap_itm(Bry_.new_u8_safe(prefix), local, Bry_.new_u8_safe(language), localinterwiki, Bry_.new_u8_safe(url), protorel);}
|
||||
public Site_interwikimap_itm Make_interwikimap(String prefix, boolean local, boolean extralanglink, String linktext, String sitename, String language, boolean localinterwiki, String url, boolean protorel) {
|
||||
return new Site_interwikimap_itm(Bry_.new_u8_safe(prefix), local, extralanglink, Bry_.new_u8_safe(linktext), Bry_.new_u8_safe(sitename), Bry_.new_u8_safe(language), localinterwiki, Bry_.new_u8_safe(url), protorel);
|
||||
}
|
||||
public Site_namespacealias_itm Make_namespacealias(int id, String alias) {return new Site_namespacealias_itm(id, Bry_.new_u8_safe(alias));}
|
||||
public Site_specialpagealias_itm Make_specialpagealias(String realname, String... aliases) {return new Site_specialpagealias_itm(Bry_.new_u8_safe(realname), Bry_.Ary(aliases));}
|
||||
public Site_library_itm Make_library(String name, String version) {return new Site_library_itm(Bry_.new_u8_safe(name), Bry_.new_u8_safe(version));}
|
||||
@@ -407,7 +412,7 @@ class Site_json_parser_fxt {
|
||||
public Site_magicword_itm Make_magicword(String name, boolean case_match, String... aliases) {return new Site_magicword_itm(Bry_.new_u8_safe(name), case_match, Bry_.Ary(aliases));}
|
||||
public Site_showhook_itm Make_showhook(String name, String scribunto, String... subscribers) {return new Site_showhook_itm(Bry_.new_u8_safe(name), Bry_.new_u8_safe(scribunto), Bry_.Ary(subscribers));}
|
||||
public Site_language_itm Make_language(String code, String name) {return new Site_language_itm(Bry_.new_u8_safe(code), Bry_.new_u8_safe(name));}
|
||||
public void Test_general(KeyVal... expd) {Tfds.Eq_ary_str(expd, (KeyVal[])site_meta.General_list().To_ary(KeyVal.class));}
|
||||
public void Test_general(Keyval... expd) {Tfds.Eq_ary_str(expd, (Keyval[])site_meta.General_list().To_ary(Keyval.class));}
|
||||
public void Test_namespace(Site_namespace_itm... expd) {Tfds.Eq_ary_str(expd, (Site_namespace_itm[])site_meta.Namespace_list().To_ary(Site_namespace_itm.class));}
|
||||
public void Test_statistic(Site_statistic_itm expd) {Tfds.Eq_str_intf(expd, site_meta.Statistic_itm());}
|
||||
public void Test_interwikimap(Site_interwikimap_itm... expd) {Tfds.Eq_ary_str(expd, (Site_interwikimap_itm[])site_meta.Interwikimap_list().To_ary(Site_interwikimap_itm.class));}
|
||||
@@ -421,6 +426,6 @@ class Site_json_parser_fxt {
|
||||
public void Test_showhook(Site_showhook_itm... expd) {Tfds.Eq_ary_str(expd, (Site_showhook_itm[])site_meta.Showhook_list().To_ary(Site_showhook_itm.class));}
|
||||
public void Test_extensiontag(String... expd) {Tfds.Eq_ary_str(expd, String_.Ary((byte[][])site_meta.Extensiontag_list().To_ary(byte[].class)));}
|
||||
public void Test_protocol(String... expd) {Tfds.Eq_ary_str(expd, String_.Ary((byte[][])site_meta.Protocol_list().To_ary(byte[].class)));}
|
||||
public void Test_defaultoption(KeyVal... expd) {Tfds.Eq_ary_str(expd, (KeyVal[])site_meta.Defaultoption_list().To_ary(KeyVal.class));}
|
||||
public void Test_defaultoption(Keyval... expd) {Tfds.Eq_ary_str(expd, (Keyval[])site_meta.Defaultoption_list().To_ary(Keyval.class));}
|
||||
public void Test_language(Site_language_itm... expd) {Tfds.Eq_ary_str(expd, (Site_language_itm[])site_meta.Language_list().To_ary(Site_language_itm.class));}
|
||||
}
|
||||
|
||||
@@ -29,7 +29,7 @@ class Site_kv_tbl implements Db_tbl {
|
||||
this.fld_val = flds.Add_str("val", 255);
|
||||
conn.Rls_reg(this);
|
||||
}
|
||||
public void Create_tbl() {conn.Ddl_create_tbl(Dbmeta_tbl_itm.New(tbl_name, flds, Dbmeta_idx_itm.new_unique_by_name(tbl_name, Dbmeta_idx_itm.Bld_idx_name(tbl_name, "main"), fld_site_abrv, fld_key)));}
|
||||
public void Create_tbl() {conn.Meta_tbl_create(Dbmeta_tbl_itm.New(tbl_name, flds, Dbmeta_idx_itm.new_unique_by_name(tbl_name, Dbmeta_idx_itm.Bld_idx_name(tbl_name, "main"), fld_site_abrv, fld_key)));}
|
||||
public void Delete_all() {conn.Stmt_delete(tbl_name, Dbmeta_fld_itm.Str_ary_empty).Exec_delete();}
|
||||
public void Rls() {
|
||||
stmt_select = Db_stmt_.Rls(stmt_select);
|
||||
@@ -44,7 +44,7 @@ class Site_kv_tbl implements Db_tbl {
|
||||
while (rdr.Move_next()) {
|
||||
String key = rdr.Read_str(fld_key);
|
||||
String val = rdr.Read_str(fld_val);
|
||||
list.Add(key, KeyVal_.new_(key, val));
|
||||
list.Add(key, Keyval_.new_(key, val));
|
||||
}
|
||||
}
|
||||
finally {rdr.Rls();}
|
||||
@@ -55,7 +55,7 @@ class Site_kv_tbl implements Db_tbl {
|
||||
stmt_delete.Clear().Crt_bry_as_str(fld_site_abrv, site_abrv).Exec_delete();
|
||||
int len = list.Count();
|
||||
for (int i = 0; i < len; ++i) {
|
||||
KeyVal itm = (KeyVal)list.Get_at(i);
|
||||
Keyval itm = (Keyval)list.Get_at(i);
|
||||
Insert(site_abrv, itm.Key(), itm.Val_to_str_or_empty());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -29,7 +29,7 @@ class Site_language_tbl implements Db_tbl {
|
||||
this.fld_name = flds.Add_str("name", 255);
|
||||
conn.Rls_reg(this);
|
||||
}
|
||||
public void Create_tbl() {conn.Ddl_create_tbl(Dbmeta_tbl_itm.New(tbl_name, flds, Dbmeta_idx_itm.new_unique_by_name(tbl_name, Dbmeta_idx_itm.Bld_idx_name(tbl_name, "main"), fld_site_abrv, fld_code)));}
|
||||
public void Create_tbl() {conn.Meta_tbl_create(Dbmeta_tbl_itm.New(tbl_name, flds, Dbmeta_idx_itm.new_unique_by_name(tbl_name, Dbmeta_idx_itm.Bld_idx_name(tbl_name, "main"), fld_site_abrv, fld_code)));}
|
||||
public void Delete_all() {conn.Stmt_delete(tbl_name, Dbmeta_fld_itm.Str_ary_empty).Exec_delete();}
|
||||
public void Rls() {
|
||||
stmt_select = Db_stmt_.Rls(stmt_select);
|
||||
|
||||
@@ -29,7 +29,7 @@ class Site_library_tbl implements Db_tbl {
|
||||
this.fld_version = flds.Add_str("version", 255);
|
||||
conn.Rls_reg(this);
|
||||
}
|
||||
public void Create_tbl() {conn.Ddl_create_tbl(Dbmeta_tbl_itm.New(tbl_name, flds, Dbmeta_idx_itm.new_unique_by_name(tbl_name, Dbmeta_idx_itm.Bld_idx_name(tbl_name, "main"), fld_site_abrv, fld_name)));}
|
||||
public void Create_tbl() {conn.Meta_tbl_create(Dbmeta_tbl_itm.New(tbl_name, flds, Dbmeta_idx_itm.new_unique_by_name(tbl_name, Dbmeta_idx_itm.Bld_idx_name(tbl_name, "main"), fld_site_abrv, fld_name)));}
|
||||
public void Delete_all() {conn.Stmt_delete(tbl_name, Dbmeta_fld_itm.Str_ary_empty).Exec_delete();}
|
||||
public void Rls() {
|
||||
stmt_select = Db_stmt_.Rls(stmt_select);
|
||||
|
||||
@@ -30,7 +30,7 @@ class Site_magicword_tbl implements Db_tbl {
|
||||
this.fld_aliases = flds.Add_str("aliases", 2048);
|
||||
conn.Rls_reg(this);
|
||||
}
|
||||
public void Create_tbl() {conn.Ddl_create_tbl(Dbmeta_tbl_itm.New(tbl_name, flds, Dbmeta_idx_itm.new_unique_by_name(tbl_name, Dbmeta_idx_itm.Bld_idx_name(tbl_name, "main"), fld_site_abrv, fld_name)));}
|
||||
public void Create_tbl() {conn.Meta_tbl_create(Dbmeta_tbl_itm.New(tbl_name, flds, Dbmeta_idx_itm.new_unique_by_name(tbl_name, Dbmeta_idx_itm.Bld_idx_name(tbl_name, "main"), fld_site_abrv, fld_name)));}
|
||||
public void Delete_all() {conn.Stmt_delete(tbl_name, Dbmeta_fld_itm.Str_ary_empty).Exec_delete();}
|
||||
public void Rls() {
|
||||
stmt_select = Db_stmt_.Rls(stmt_select);
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user