1
0
mirror of https://github.com/gnosygnu/xowa.git synced 2026-03-02 03:49:30 +00:00

v2.11.2.1

This commit is contained in:
gnosygnu
2015-11-08 23:48:07 -05:00
parent b990ec409f
commit d9f45cec19
298 changed files with 3908 additions and 2141 deletions

View File

@@ -39,10 +39,10 @@ public class Xow_data_mgr implements GfoInvkAble {
rv.Url_(url); // NOTE: must update page.Url(); should combine with Xoae_page.new_()
Xow_ns ns = ttl.Ns();
switch (ns.Id()) {
case Xow_ns_.Id_special:
case Xow_ns_.Tid__special:
wiki.Special_mgr().Special_gen(wiki, rv, url, ttl);
return rv;
case Xow_ns_.Id_mediawiki:
case Xow_ns_.Tid__mediawiki:
if ( !called_from_msg // if called from msg, fall through to actual data retrieval below, else infinite loop; DATE:2014-05-09
&& Xow_page_tid.Identify_by_ttl(ttl.Page_db()) == Xow_page_tid.Tid_wikitext // skip ".js" and ".css" pages in MediaWiki; DATE:2014-06-13
) {
@@ -57,7 +57,7 @@ public class Xow_data_mgr implements GfoInvkAble {
}
break;
}
return Get_page(rv, ns, ttl, called_from_tmpl, url.Qargs_mgr().Match(Xoa_url_.Qarg__redirect,Xoa_url_.Qarg__redirect__yes));
return Get_page(rv, ns, ttl, called_from_tmpl, url.Qargs_mgr().Match(Xoa_url_.Qarg__redirect, Xoa_url_.Qarg__redirect__no));
}
public Xoae_page Get_page(Xoae_page rv, Xow_ns ns, Xoa_ttl ttl, boolean called_from_tmpl, boolean redirect_force) {
int redirects = 0;
@@ -71,7 +71,7 @@ public class Xow_data_mgr implements GfoInvkAble {
byte[] bry = db_page.Text();
rv.Data_raw_(bry).Revision_data().Modified_on_(db_page.Modified_on()).Id_(db_page.Id()).Html_db_id_(db_page.Html_db_id());
if (redirect_force) return rv;
Xoa_ttl redirect_ttl = redirect_mgr.Extract_redirect(bry, bry.length);
Xoa_ttl redirect_ttl = redirect_mgr.Extract_redirect(bry);
if ( redirect_ttl == null // not a redirect
|| redirects++ > 4) // too many redirects; something went wrong
break;
@@ -101,7 +101,7 @@ public class Xow_data_mgr implements GfoInvkAble {
}
}
if (vnt_missing) {
if (ttl.Ns().Id_file()) {
if (ttl.Ns().Id_is_file()) {
Xowe_wiki commons_wiki = wiki.Appe().Wiki_mgr().Get_by_key_or_null(wiki.Commons_wiki_key());
if (commons_wiki != null) { // commons exists
if (!Bry_.Eq(wiki.Domain_bry(), commons_wiki.Domain_bry())) { // !Bry_.Eq is recursion guard
@@ -133,7 +133,7 @@ public class Xow_data_mgr implements GfoInvkAble {
Xoa_ttl trg_ttl = Xoa_ttl.parse(wiki, page_bry);
Xoa_url trg_url = Xoa_url.new_(wiki.Domain_bry(), page_bry);
page.Ttl_(trg_ttl).Url_(trg_url).Redirected_(true);
return wiki.Data_mgr().Get_page(page, trg_ttl.Ns(), trg_ttl, false, trg_url.Qargs_mgr().Match(Xoa_url_.Qarg__redirect, Xoa_url_.Qarg__redirect__yes));
return wiki.Data_mgr().Get_page(page, trg_ttl.Ns(), trg_ttl, false, trg_url.Qargs_mgr().Match(Xoa_url_.Qarg__redirect, Xoa_url_.Qarg__redirect__no));
}
public static final int File_idx_unknown = -1;
static final String GRP_KEY = "xowa.wiki.data";

View File

@@ -62,7 +62,7 @@ public class Xow_data_mgr_tst {
;
}
@Test public void Update_zip() {
// fxt.Wiki().Fsys_mgr().Dir_regy()[Xow_ns_.Id_main].Ext_tid_(gplx.core.ios.Io_stream_.Tid_zip);
// fxt.Wiki().Fsys_mgr().Dir_regy()[Xow_ns_.Tid__main].Ext_tid_(gplx.core.ios.Io_stream_.Tid_zip);
// fxt.Wiki().Data_mgr().Zip_mgr_(new Io_zip_mgr_mok());
// fxt .Create("A1", "A1 data")
// .Create("B12", "B12 data")
@@ -154,8 +154,8 @@ class Xow_data_mgr_fxt {
Tfds.Eq_str_lines(expd, Io_mgr.Instance.LoadFilStr(file_orig));
return this;
}
public Xow_data_mgr_fxt Tst_data_page(String expd) {return Tst_data(Xotdb_dir_info_.Tid_page , Xow_ns_.Id_main, 0, expd);}
public Xow_data_mgr_fxt Tst_data_title(String expd) {return Tst_data(Xotdb_dir_info_.Tid_ttl, Xow_ns_.Id_main, 0, expd);}
public Xow_data_mgr_fxt Tst_data_page(String expd) {return Tst_data(Xotdb_dir_info_.Tid_page , Xow_ns_.Tid__main, 0, expd);}
public Xow_data_mgr_fxt Tst_data_title(String expd) {return Tst_data(Xotdb_dir_info_.Tid_ttl, Xow_ns_.Tid__main, 0, expd);}
public Xow_data_mgr_fxt Tst_data(byte dir_tid, int ns_id, int fil, String expd) {
Io_url url = wiki.Tdb_fsys_mgr().Url_ns_fil(dir_tid, ns_id, fil);
Tfds.Eq_str_lines(expd, Io_mgr.Instance.LoadFilStr(url));

View File

@@ -85,7 +85,7 @@ public class Xowd_page_itm {
}
else {
ns = (Xow_ns)o;
ttl_page_db = Bry_.Mid(v, ns.Name_txt_w_colon().length, v.length); // EX: "Template:A" -> "Template:" + "A"
ttl_page_db = Bry_.Mid(v, ns.Name_ui_w_colon().length, v.length); // EX: "Template:A" -> "Template:" + "A"
}
ns_id = ns.Id();
return this;

View File

@@ -20,16 +20,16 @@ import org.junit.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.wikis.n
public class Xowd_page_itm_tst {
@Before public void init() {fxt.Init();} private Xowd_page_itm_fxt fxt = new Xowd_page_itm_fxt();
@Test public void Ttl_() {
fxt.Test_ttl_("User_talk:A", Xow_ns_.Id_user_talk, "A");
fxt.Test_ttl_("User talk:A", Xow_ns_.Id_user_talk, "A");
fxt.Test_ttl_("User_talk:A", Xow_ns_.Tid__user_talk, "A");
fxt.Test_ttl_("User talk:A", Xow_ns_.Tid__user_talk, "A");
}
}
class Xowd_page_itm_fxt {
public void Init() {
if (ns_mgr == null) {
ns_mgr = new Xow_ns_mgr(gplx.xowa.langs.cases.Xol_case_mgr_.A7());
ns_mgr.Add_new(Xow_ns_.Id_main, "");
ns_mgr.Add_new(Xow_ns_.Id_user_talk, "User talk");
ns_mgr.Add_new(Xow_ns_.Tid__main, "");
ns_mgr.Add_new(Xow_ns_.Tid__user_talk, "User talk");
ns_mgr.Init_w_defaults();
tmp_page = new Xowd_page_itm();
}

View File

@@ -167,10 +167,10 @@ public class Xowd_page_tbl implements RlsAble {
}
public void Select_by_search(Cancelable cancelable, List_adp rv, byte[] search, int results_max) {
if (Bry_.Len_eq_0(search)) return; // do not allow empty search
Criteria crt = Criteria_.And_many(Db_crt_.eq_(fld_ns, Xow_ns_.Id_main), Db_crt_.like_(fld_title, ""));
Criteria crt = Criteria_.And_many(Db_crt_.eq_(fld_ns, Xow_ns_.Tid__main), Db_crt_.like_(fld_title, ""));
Db_qry__select_cmd qry = Db_qry_.select_().From_(tbl_name).Cols_(fld_id, fld_len, fld_ns, fld_title).Where_(crt); // NOTE: use fields from main index only
search = Bry_.Replace(search, Byte_ascii.Star, Byte_ascii.Percent);
Db_rdr rdr = conn.Stmt_new(qry).Clear().Crt_int(fld_ns, Xow_ns_.Id_main).Val_bry_as_str(fld_title, search).Exec_select__rls_auto();
Db_rdr rdr = conn.Stmt_new(qry).Clear().Crt_int(fld_ns, Xow_ns_.Tid__main).Val_bry_as_str(fld_title, search).Exec_select__rls_auto();
try {
while (rdr.Move_next()) {
if (cancelable.Canceled()) return;

View File

@@ -39,7 +39,7 @@ public class Xowd_site_ns_tbl {
Xow_ns ns = ns_mgr.Ids_get_at(i);
stmt.Clear()
.Val_int(fld_id, ns.Id())
.Val_str(fld_name, ns.Name_str())
.Val_str(fld_name, ns.Name_db_str())
.Val_byte(fld_case, ns.Case_match())
.Val_bool_as_byte(fld_is_alias, ns.Is_alias())
.Val_int(fld_count, ns.Count())

View File

@@ -47,6 +47,7 @@ public class Xowd_text_tbl implements RlsAble {
Db_rdr rdr = stmt_select.Clear().Val_int(fld_page_id, page_id).Exec_select__rls_manual();
try {
byte[] rv = (byte[])rdr.Read_bry(fld_text_data);
if (rv == null) rv = Bry_.Empty; // NOTE: defect wherein blank page inserts null not ""; for now always convert nul to empty String; DATE:2015-11-08
rv = zip_mgr.Unzip(zip_tid, rv);
return rv;
} finally {rdr.Rls();}

View File

@@ -22,9 +22,9 @@ public class Xowd_wbase_qid_tbl_tst {
private final Xowd_wbase_qid_tbl_fxt fxt = new Xowd_wbase_qid_tbl_fxt();
@Before public void init() {fxt.Clear();}
@Test public void Space() {
fxt.Exec_insert("enwiki", Xow_ns_.Id_main, "A B", "q1");
fxt.Test_select("enwiki", Xow_ns_.Id_main, "A B", "q1");
fxt.Test_select("enwiki", Xow_ns_.Id_main, "A_B", "q1");
fxt.Exec_insert("enwiki", Xow_ns_.Tid__main, "A B", "q1");
fxt.Test_select("enwiki", Xow_ns_.Tid__main, "A B", "q1");
fxt.Test_select("enwiki", Xow_ns_.Tid__main, "A_B", "q1");
}
}
class Xowd_wbase_qid_tbl_fxt {