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

v2.11.4.1

This commit is contained in:
gnosygnu
2015-11-22 21:39:33 -05:00
parent 8a5d58a973
commit 097e6c7f80
581 changed files with 2897 additions and 2097 deletions

View File

@@ -124,11 +124,11 @@ class Xoctg_fmtr_all {
arg_idx_lbl = url_arg_bgn;
arg_sortkey = view_grp.Itms_last_sortkey();
if (arg_sortkey == null)
arg_sortkey = view_grp.Itms_at_last().Sortkey();
arg_sortkey = view_grp.Itms_at_last().Sort_key();
}
else {
arg_idx_lbl = url_arg_end;
arg_sortkey = view_grp.Itms_at_first().Sortkey();
arg_sortkey = view_grp.Itms_at_first().Sort_key();
}
href_bfr.Add_byte(Byte_ascii.Question).Add(arg_idx_lbl).Add_byte(Byte_ascii.Eq); // filefrom=
href_bfr.Add(arg_sortkey); // Abc

View File

@@ -30,7 +30,7 @@ class Xoctg_fmtr_grp extends gplx.core.brys.Bfr_arg_base {
byte[] ttl_char_0 = Bry_.Empty; int col_idx = -1; boolean col_bgn_needed = true;
while (cur_idx < len) {
Xoctg_view_itm itm = itms_list.Itms()[cur_idx];
byte[] itm_sortkey = itm.Sortkey();
byte[] itm_sortkey = itm.Sort_key();
byte[] ttl_char_0_new = gplx.core.intls.Utf8_.Get_char_at_pos_as_bry(itm_sortkey, 0);
byte[] grp_name = ttl_char_0_new;
if (Bry_.Eq(ttl_char_0, ttl_char_0_new)) {

View File

@@ -47,7 +47,7 @@ abstract class Xoctg_fmtr_itm_base extends gplx.core.brys.Bfr_arg_base implement
}
Xoctg_view_itm itm = list.Itms()[i];
Xoa_ttl ttl = itm.Ttl();
byte[] itm_sortkey = itm.Sortkey();
byte[] itm_sortkey = itm.Sort_key();
byte[] ttl_bry = ttl.Page_txt();
if (!Bry_.Has_at_bgn(itm_sortkey, ttl_char_0, 0, itm_sortkey.length)) {
grp_end_idx = i;
@@ -63,8 +63,8 @@ abstract class Xoctg_fmtr_itm_base extends gplx.core.brys.Bfr_arg_base implement
byte[] itm_href = wiki.App().Html__href_wtr().Build_to_bry(wiki, ttl);
byte[] itm_full_ttl = ttl.Full_txt();// NOTE: ttl.Full_txt() to get full ns; EX: Template:A instead of just "A"
byte[] itm_atr_cls = Xoh_lnki_wtr.Lnki_cls_visited(history_mgr, wiki.Domain_bry(), ttl.Page_txt()); // NOTE: must be ttl.Page_txt() in order to match Xou_history_mgr.Add
Bry_fmtr fmtr = itm.Id_missing() ? html_itm_missing : html_itm;
fmtr.Bld_bfr_many(bfr, itm_href, itm_full_ttl, itm_full_ttl, itm.Id(), itm_atr_cls);
Bry_fmtr fmtr = itm.Missing() ? html_itm_missing : html_itm;
fmtr.Bld_bfr_many(bfr, itm_href, itm_full_ttl, itm_full_ttl, itm.Page_id(), itm_atr_cls);
}
}
class Xoctg_fmtr_itm_page extends Xoctg_fmtr_itm_base {
@@ -97,9 +97,9 @@ class Xoctg_fmtr_itm_file extends Xoctg_fmtr_itm_base {
class Xoctg_fmtr_itm_subc extends Xoctg_fmtr_itm_base {
@Override public void Bld_html(Bry_bfr bfr, Xowe_wiki wiki, Xoctg_view_itm itm, Xoa_ttl ttl, byte[] ttl_page, Xoh_href_parser href_parser, Bry_fmtr html_itm) {
byte[] itm_href = wiki.App().Html__href_wtr().Build_to_bry(wiki, ttl);
int sub_ctgs = itm.Subs_ctgs();
int sub_pages = itm.Subs_pages();
int sub_files = itm.Subs_files();
int sub_ctgs = 0; // itm.Subs_ctgs();
int sub_pages = 0; // itm.Subs_pages();
int sub_files = 0; // itm.Subs_files();
byte[] contains_title = msg_mgr.Val_by_id_args(Xol_msg_itm_.Id_ctgtree_subc_counts, sub_ctgs, sub_pages, sub_files);
byte[] contains_text = Bld_contains_text(sub_ctgs, sub_pages, sub_files);
html_itm.Bld_bfr_many(bfr, ttl.Page_db(), ttl_page, itm_href, ttl_page, contains_title, contains_text);

View File

@@ -59,18 +59,18 @@ public class Xoctg_html_mgr implements GfoInvkAble {
Xowd_page_itm dbo_page = new Xowd_page_itm();
for (int i = 0; i < len; i++) {
Xoctg_view_itm itm = (Xoctg_view_itm)title_list.Get_at(i);
if (pct != 0 && i % pct == 0) usr_dlg.Prog_many("", "", "loading title data: ~{0} / ~{1} -- ~{2}", i, len, String_.new_u8(itm.Sortkey()));
boolean id_exists = wiki.Db_mgr().Load_mgr().Load_by_id(dbo_page, itm.Id());
if (pct != 0 && i % pct == 0) usr_dlg.Prog_many("", "", "loading title data: ~{0} / ~{1} -- ~{2}", i, len, String_.new_u8(itm.Sort_key()));
boolean id_exists = wiki.Db_mgr().Load_mgr().Load_by_id(dbo_page, itm.Page_id());
Xoa_ttl itm_ttl = null;
if (id_exists)
itm_ttl = Xoa_ttl.parse(wiki, dbo_page.Ns_id(), dbo_page.Ttl_page_db());
else {
itm_ttl = Xoa_ttl.parse(wiki, itm.Sortkey());
itm_ttl = Xoa_ttl.parse(wiki, itm.Sort_key());
if (itm_ttl == null)
itm_ttl = Xoa_ttl.parse(wiki, Bry_missing);
itm.Id_missing_(true);
itm.Missing_y_();
}
itm.Ttl_(itm_ttl);
itm.Set__ttl__sortkey(itm_ttl, itm.Sort_key());
}
} List_adp title_list = List_adp_.new_(); static final byte[] Bry_missing = Bry_.new_a7("missing");
private void Add_titles(List_adp title_list, Xoctg_view_grp grp) {
@@ -97,7 +97,8 @@ public class Xoctg_html_mgr implements GfoInvkAble {
byte[] all_stats = msg_mgr.Val_by_id_args(fmtr_all.Msg_id_stats(), view_grp.Len(), view_grp.Total());
Xoa_ttl ctg_ttl = Xoa_ttl.parse(wiki, Xow_ns_.Tid__category, view_ctg.Name());
byte[] all_navs = fmtr_all.Bld_bwd_fwd(wiki, ctg_ttl, view_grp);
fmtr_grp.Init_from_all(wiki, lang, view_ctg, fmtr_all, view_grp);
Array_.Sort(view_grp.Itms(), Xoctg_view_itm_sorter_sortkey.Instance);
fmtr_grp.Init_from_all(wiki, lang, view_ctg, fmtr_all, view_grp); // NOTE: must assert sorted for v1; PAGE:s.w:Category:Computer_science; DATE:2015-11-22
fmtr_all.Html_all().Bld_bfr_many(bfr, fmtr_all.Div_id(), all_label, all_stats, all_navs, lang.Key_bry(), lang.Dir_ltr_bry(), fmtr_grp);
}
public static final int Cols_max = 3;
@@ -117,19 +118,19 @@ public class Xoctg_html_mgr implements GfoInvkAble {
return this;
} private static final String Invk_grp_max = "grp_max", Invk_grp_max_ = "grp_max_";
}
class Xoctg_view_itm_sorter_id implements gplx.lists.ComparerAble {
class Xoctg_view_itm_sorter_id implements gplx.core.lists.ComparerAble {
public int compare(Object lhsObj, Object rhsObj) {
Xoctg_view_itm lhs = (Xoctg_view_itm)lhsObj;
Xoctg_view_itm rhs = (Xoctg_view_itm)rhsObj;
return Int_.Compare(lhs.Id(), rhs.Id());
return Int_.Compare(lhs.Page_id(), rhs.Page_id());
}
public static final Xoctg_view_itm_sorter_id Instance = new Xoctg_view_itm_sorter_id();
}
class Xoctg_view_itm_sorter_sortkey implements gplx.lists.ComparerAble {
class Xoctg_view_itm_sorter_sortkey implements gplx.core.lists.ComparerAble {
public int compare(Object lhsObj, Object rhsObj) {
Xoctg_view_itm lhs = (Xoctg_view_itm)lhsObj;
Xoctg_view_itm rhs = (Xoctg_view_itm)rhsObj;
return Bry_.Compare(lhs.Sortkey(), rhs.Sortkey());
return Bry_.Compare(lhs.Sort_key(), rhs.Sort_key());
}
public static final Xoctg_view_itm_sorter_sortkey Instance = new Xoctg_view_itm_sorter_sortkey();
}

View File

@@ -26,7 +26,7 @@ public class Xoctg_html_mgr_tst {
}
@Test public void Page_itm_missing() {
fxt .Init_itm_page("A1");
fxt .Ctg().Grp_by_tid(Xoa_ctg_mgr.Tid_page).Itms()[0].Id_missing_(true);
fxt .Ctg().Grp_by_tid(Xoa_ctg_mgr.Tid_page).Itms()[0].Missing_y_();
fxt .Test_html_page(Xoa_ctg_mgr.Tid_page, Byte_ascii.Ltr_A, "\n <li class=\"xowa-missing-category-entry\"><span title=\"id not found: #0 might be talk/user page\">A1 (missing)</li>");
}
@Test public void Visited_doesnt_work_for_space() {// PURPOSE: xowa-visited not inserted for pages with space
@@ -229,17 +229,17 @@ class Xoh_ctg_page_fxt {
public Xoh_ctg_page_fxt Init_ctg_name_(String v) {ctg.Name_(Bry_.new_u8(v)); return this;}
public Xoh_ctg_page_fxt Init_ctg_pages_(int bgn, int count) {ctg.Pages().Bgn_(bgn).All_(count).End_(count); return this;}
public Xoh_ctg_page_fxt Init_ctg_files_(int bgn, int count) {ctg.Files().Bgn_(bgn).All_(count).End_(count); return this;}
public Xoh_ctg_page_fxt Init_itm_page(String... titles) {ctg.Pages().Itms_(itms_(titles)).End_(titles.length); return this;}
public Xoh_ctg_page_fxt Init_itm_file(String... titles) {ctg.Files().Itms_(itms_(titles)).End_(titles.length); return this;}
public Xoh_ctg_page_fxt Init_itm_ctg(String... titles) {ctg.Subcs().Itms_(itms_(titles)).End_(titles.length); return this;}
Xoctg_view_itm[] itms_(String... titles) {
public Xoh_ctg_page_fxt Init_itm_page(String... titles) {ctg.Pages().Itms_(itms_(Xoa_ctg_mgr.Tid_page, titles)).End_(titles.length); return this;}
public Xoh_ctg_page_fxt Init_itm_file(String... titles) {ctg.Files().Itms_(itms_(Xoa_ctg_mgr.Tid_file, titles)).End_(titles.length); return this;}
public Xoh_ctg_page_fxt Init_itm_ctg(String... titles) {ctg.Subcs().Itms_(itms_(Xoa_ctg_mgr.Tid_subc, titles)).End_(titles.length); return this;}
Xoctg_view_itm[] itms_(byte tid, String... titles) {
int len = titles.length;
Xoctg_view_itm[] rv = new Xoctg_view_itm[len];
for (int i = 0; i < len; i++) {
String title = titles[i];
byte[] title_bry = Bry_.new_u8(title);
Xoa_ttl ttl = Xoa_ttl.parse(wiki, title_bry);
rv[i] = new Xoctg_view_itm().Ttl_(ttl).Sortkey_(ttl.Page_txt());
rv[i] = new Xoctg_view_itm().Set__page(tid, 0).Set__ttl__sortkey(ttl, ttl.Page_txt());
}
return rv;
}

View File

@@ -40,7 +40,7 @@ public class Xoctg_idx_itm {
this.sortkey = orig.sortkey;
}
}
class Xoctg_idx_itm_sorter_sortkey implements gplx.lists.ComparerAble {
class Xoctg_idx_itm_sorter_sortkey implements gplx.core.lists.ComparerAble {
public int compare(Object lhsObj, Object rhsObj) {
Xoctg_idx_itm lhs = (Xoctg_idx_itm)lhsObj;
Xoctg_idx_itm rhs = (Xoctg_idx_itm)rhsObj;

View File

@@ -140,7 +140,7 @@ public class Xoctg_idx_mgr implements GfoInvkAble {
int rv_count = rv.Count();
if (rv_count > 0) {
Xoctg_view_itm last_itm = (Xoctg_view_itm)rv.Get_at(rv_count - 1);
int last_itm_pos = last_itm.Pos();
int last_itm_pos = last_itm.Sort_idx();
tmp_pos = Bry_find_.Find_fwd(src, Byte_ascii.Pipe, last_itm_pos);
if (tmp_pos != Bry_find_.Not_found && tmp_pos < src_len - 1) {
++tmp_pos; // position after pipe

View File

@@ -122,14 +122,14 @@ class Xoctg_idx_mgr_fxt {
tmp_list.Clear();
idx_mgr.Find(tmp_list, src, fill_at_bgn, Bry_.new_a7(find), 3, tmp_last_plus_one);
Tfds.Eq_ary(expd_ary, To_str_ary(tmp_list));
Tfds.Eq(last_plus_one, String_.new_a7(tmp_last_plus_one.Sortkey()));
Tfds.Eq(last_plus_one, String_.new_a7(tmp_last_plus_one.Sort_key()));
return this;
} List_adp tmp_list; Xoctg_view_itm tmp_last_plus_one = new Xoctg_view_itm();
String[] To_str_ary(List_adp list) {
int len = list.Count();
String[] rv = new String[len];
for (int i = 0; i < len; i++) {
rv[i] = String_.new_a7(((Xoctg_view_itm)list.Get_at(i)).Sortkey());
rv[i] = String_.new_a7(((Xoctg_view_itm)list.Get_at(i)).Sort_key());
}
return rv;
}

View File

@@ -17,6 +17,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package gplx.xowa.wikis.ctgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*;
import gplx.core.brys.fmtrs.*;
import gplx.xowa.htmls.core.htmls.*;
import gplx.xowa.langs.*; import gplx.xowa.langs.msgs.*;
public class Xoctg_pagelist_grp extends gplx.core.brys.Bfr_arg_base {
public void Init_app(Xoae_app app, boolean type_is_normal, Bry_fmtr fmtr_grp, Bry_fmtr fmtr_itm) {
@@ -24,11 +25,11 @@ public class Xoctg_pagelist_grp extends gplx.core.brys.Bfr_arg_base {
this.fmtr_grp = fmtr_grp;
itms.Init_app(app, fmtr_itm);
} private Bry_fmtr fmtr_grp;
public void Init_by_wiki(Xowe_wiki wiki) {
public void Init_by_wiki(Xowe_wiki wiki, Xoh_wtr_ctx hctx) {
lbl_ctg_text = wiki.Msg_mgr().Val_by_id(Xol_msg_itm_.Id_ctg_tbl_hdr);
lbl_ctg_help = Xol_msg_mgr_.Get_msg_val(wiki, wiki.Lang(), Key_pagecategorieslink, Bry_.Ary_empty);
lbl_hidden = wiki.Msg_mgr().Val_by_id(Xol_msg_itm_.Id_ctg_tbl_hidden);
itms.Init_wiki(wiki);
itms.Init_wiki(wiki, hctx);
} private byte[] lbl_ctg_help, lbl_ctg_text, lbl_hidden; private static final byte[] Key_pagecategorieslink = Bry_.new_a7("pagecategorieslink");
public boolean Type_is_normal() {return type_is_normal;} private boolean type_is_normal;
public Xoctg_pagelist_itms Itms() {return itms;} private Xoctg_pagelist_itms itms = new Xoctg_pagelist_itms();

View File

@@ -17,7 +17,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package gplx.xowa.wikis.ctgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*;
import gplx.core.brys.fmtrs.*;
import gplx.xowa.htmls.*; import gplx.xowa.htmls.hrefs.*; import gplx.xowa.htmls.core.wkrs.lnkis.htmls.*; import gplx.xowa.wikis.data.tbls.*;
import gplx.xowa.htmls.*; import gplx.xowa.htmls.hrefs.*; import gplx.xowa.htmls.core.htmls.*; import gplx.xowa.htmls.core.wkrs.lnkis.htmls.*; import gplx.xowa.wikis.data.tbls.*;
import gplx.xowa.wikis.nss.*;
import gplx.xowa.users.history.*;
public class Xoctg_pagelist_itms extends gplx.core.brys.Bfr_arg_base {
@@ -27,7 +27,7 @@ public class Xoctg_pagelist_itms extends gplx.core.brys.Bfr_arg_base {
this.history_mgr = app.Usere().History_mgr();
this.fmtr_itm = fmtr_itm;
}
public void Init_wiki(Xowe_wiki wiki) {this.wiki = wiki;} private Xowe_wiki wiki;
public void Init_wiki(Xowe_wiki wiki, Xoh_wtr_ctx hctx) {this.wiki = wiki; this.hctx = hctx;} private Xowe_wiki wiki; private Xoh_wtr_ctx hctx;
public void Itms_clear() {itms.Clear();} private List_adp itms = List_adp_.new_();
public void Itms_add(Xowd_page_itm page) {itms.Add(page);}
@Override public void Bfr_arg__add(Bry_bfr bfr) {
@@ -35,7 +35,7 @@ public class Xoctg_pagelist_itms extends gplx.core.brys.Bfr_arg_base {
for (int i = 0; i < len; i++) {
Xowd_page_itm page = (Xowd_page_itm)itms.Get_at(i);
Xoa_ttl ttl = Xoa_ttl.parse(wiki, Xow_ns_.Tid__category, page.Ttl_page_db());
byte[] lnki_cls = Xoh_lnki_wtr.Lnki_cls_visited(history_mgr, wiki.Domain_bry(), ttl.Page_txt()); // NOTE: must be ttl.Page_txt() in order to match Xou_history_mgr.Add
byte[] lnki_cls = hctx.Mode_is_hdump() ? Bry_.Empty : Xoh_lnki_wtr.Lnki_cls_visited(history_mgr, wiki.Domain_bry(), ttl.Page_txt()); // NOTE: must be ttl.Page_txt() in order to match Xou_history_mgr.Add
byte[] lnki_href = href_wtr.Build_to_bry(wiki, ttl);
byte[] lnki_ttl = ttl.Full_txt();
byte[] lnki_text = ttl.Page_txt();

View File

@@ -17,6 +17,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package gplx.xowa.wikis.ctgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*;
import gplx.core.brys.fmtrs.*;
import gplx.xowa.htmls.core.htmls.*;
public class Xoctg_pagelist_mgr extends gplx.core.brys.Bfr_arg_base {
public Xoctg_pagelist_mgr Init_by_app(Xoae_app app, Xoctg_pagelist_wtr hidden_wtr) {
this.fmtr_all = hidden_wtr.Fmtr_all();
@@ -24,9 +25,9 @@ public class Xoctg_pagelist_mgr extends gplx.core.brys.Bfr_arg_base {
grp_hidden.Init_app(app, Bool_.N, hidden_wtr.Fmtr_grp_hidden(), hidden_wtr.Fmtr_itm());
return this;
} private Bry_fmtr fmtr_all;
public void Init_by_wiki(Xowe_wiki wiki) {
grp_normal.Init_by_wiki(wiki);
grp_hidden.Init_by_wiki(wiki);
public void Init_by_wiki(Xowe_wiki wiki, Xoh_wtr_ctx hctx) {
grp_normal.Init_by_wiki(wiki, hctx);
grp_hidden.Init_by_wiki(wiki, hctx);
}
public Xoctg_pagelist_grp Grp_normal() {return grp_normal;} private Xoctg_pagelist_grp grp_normal = new Xoctg_pagelist_grp();
public Xoctg_pagelist_grp Grp_hidden() {return grp_hidden;} private Xoctg_pagelist_grp grp_hidden = new Xoctg_pagelist_grp();

View File

@@ -17,15 +17,16 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package gplx.xowa.wikis.ctgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*;
import gplx.core.brys.fmtrs.*;
import gplx.xowa.htmls.core.htmls.*;
import gplx.xowa.users.history.*; import gplx.xowa.wikis.data.tbls.*;
public class Xoctg_pagelist_wtr {
private Xoctg_pagelist_mgr pagelist_mgr = new Xoctg_pagelist_mgr();
public Xoctg_pagelist_wtr Init_by_app(Xoae_app app) {pagelist_mgr.Init_by_app(app, this); return this;}
public void Write(Bry_bfr bfr, Xowe_wiki wiki, Xoae_page page) {
public void Write(Bry_bfr bfr, Xowe_wiki wiki, Xoae_page page, Xoh_wtr_ctx hctx) {
Xowd_page_itm[] page_ary = wiki.Db_mgr().Load_mgr().Load_ctg_list(page.Category_list());
Print_hidden(bfr, wiki, page_ary);
Print_hidden(bfr, wiki, page_ary, hctx);
}
public void Print_hidden(Bry_bfr bfr, Xowe_wiki wiki, Xowd_page_itm[] page_ary) {
public void Print_hidden(Bry_bfr bfr, Xowe_wiki wiki, Xowd_page_itm[] page_ary, Xoh_wtr_ctx hctx) {
int len = page_ary.length;
for (int i = 0; i < len; i++) {
Xowd_page_itm page = page_ary[i];
@@ -33,7 +34,7 @@ public class Xoctg_pagelist_wtr {
Xoctg_pagelist_grp list = ctg_xtn != null && ctg_xtn.Hidden() ? pagelist_mgr.Grp_hidden() : pagelist_mgr.Grp_normal();
list.Itms().Itms_add(page);
}
pagelist_mgr.Init_by_wiki(wiki);
pagelist_mgr.Init_by_wiki(wiki, hctx);
pagelist_mgr.Bfr_arg__add(bfr);
pagelist_mgr.Grp_hidden().Itms().Itms_clear();
pagelist_mgr.Grp_normal().Itms().Itms_clear();

View File

@@ -80,7 +80,7 @@ class Xoctg_pagelist_mgr_fxt {
public void Test_print_hidden(String expd) {
Bry_bfr bfr = Bry_bfr.new_();
Xowd_page_itm[] page_ary = (Xowd_page_itm[])init_ctgs.To_ary_and_clear(Xowd_page_itm.class);
hidden_wtr.Print_hidden(bfr, fxt.Wiki(), page_ary);
hidden_wtr.Print_hidden(bfr, fxt.Wiki(), page_ary, gplx.xowa.htmls.core.htmls.Xoh_wtr_ctx.Basic);
Tfds.Eq_str_lines(expd, bfr.To_str_and_clear());
// Tfds.Write(bfr.To_bry_and_clear());
}

View File

@@ -51,7 +51,7 @@ public class Xoctg_view_ctg {
Xoctg_idx_mgr data_grp = data_ctg.Grp_by_tid(i); if (data_grp == null) return; // no itms in grp
byte[] url_bmk = url_ctg.Grp_idxs()[i]; byte url_bmk_fwd = url_ctg.Grp_fwds()[i];
data_grp.Find(view_grp.Itms_list(), data_grp.Src(), url_bmk_fwd != Bool_.N_byte, url_bmk, 200, tmp_last_plus_one);
view_grp.Itms_last_sortkey_(tmp_last_plus_one.Sortkey());
view_grp.Itms_last_sortkey_(tmp_last_plus_one.Sort_key());
view_grp.Itms_make();
} private Xoctg_view_itm tmp_last_plus_one = new Xoctg_view_itm();
}

View File

@@ -19,37 +19,35 @@ package gplx.xowa.wikis.ctgs; import gplx.*; import gplx.xowa.*; import gplx.xow
import gplx.core.flds.*;
import gplx.xowa.wikis.nss.*;
public class Xoctg_view_itm implements gplx.CompareAble {
public byte Tid() {return tid;} private byte tid;
public int Id() {return id;} private int id;
public boolean Id_missing() {return id_missing;} public Xoctg_view_itm Id_missing_(boolean v) {id_missing = v; return this;} private boolean id_missing;
public int Timestamp() {return timestamp;} private int timestamp;
public Xoa_ttl Ttl() {return ttl;} public Xoctg_view_itm Ttl_(Xoa_ttl v) {ttl = v; return this;} private Xoa_ttl ttl;
public int Page_size() {return page_size;} private int page_size;
public int Subs_ctgs() {return subs_ctgs;} private int subs_ctgs;
public int Subs_pages() {return subs_pages;} private int subs_pages;
public int Subs_files() {return subs_files;} private int subs_files;
public void Load_by_ttl_data(byte tid, int id, int timestamp, int page_size) {this.tid = tid; this.id = id; this.timestamp = timestamp; this.page_size = page_size;}
public byte[] Sortkey() {return sortkey;} public Xoctg_view_itm Sortkey_(byte[] v) {sortkey = v; return this;} private byte[] sortkey;
public void Subs_(int ctgs, int pages, int files) {this.subs_ctgs = ctgs; this.subs_pages = pages; this.subs_files = files;}
public byte[] Ttl_bry() {return ttl_bry;} private byte[] ttl_bry;
public Xow_ns Ns() {return ns;} private Xow_ns ns;
public void Load_by_id_data(Xow_ns ns, byte[] ttl_bry) {
this.ns = ns; this.ttl_bry = ttl_bry; this.sortkey = ttl_bry;
public byte Tid() {return tid;} private byte tid; // Xoa_ctg_mgr.Tid*
public int Page_id() {return page_id;} private int page_id;
public Xoa_ttl Ttl() {return ttl;} private Xoa_ttl ttl;
public byte[] Sort_key() {return sort_key;} private byte[] sort_key;
public int Sort_idx() {return sort_idx;} private int sort_idx;
public boolean Missing() {return missing;} private boolean missing; public void Missing_y_() {missing = true;}
public Xoctg_view_itm Set__page(byte tid, int page_id) {this.tid = tid; this.page_id = page_id; return this;}
public Xoctg_view_itm Set__ttl__sortkey(Xoa_ttl ttl, byte[] sort_key) {
this.ttl = ttl;
Sort_key_(sort_key);
return this;
}
public static final Xoctg_view_itm[] Ary_empty = new Xoctg_view_itm[0];
public int compareTo(Object obj) {Xoctg_view_itm comp = (Xoctg_view_itm)obj; return Int_.Compare(id, comp.Id());}
public int Pos() {return pos;} public Xoctg_view_itm Pos_(int v) {pos = v; return this;} private int pos;
public Xoctg_view_itm Parse(Gfo_fld_rdr fld_rdr, int pos) {
this.pos = pos;
id = fld_rdr.Read_int_base85_len5();
timestamp = fld_rdr.Read_int_base85_len5();
sortkey = fld_rdr.Read_bry_escape();
public Xoctg_view_itm Parse(Gfo_fld_rdr fld_rdr, int sort_idx) { // NOTE: XO stores data as "page_id|ctg_added_on|sortkey"
this.sort_idx = sort_idx;
page_id = fld_rdr.Read_int_base85_len5();
fld_rdr.Read_int_base85_len5(); // skip ctg_added_on; not used
Sort_key_(fld_rdr.Read_bry_escape());
return this;
}
public void Clear() {
this.pos = 0;
id = 0;
timestamp = 0;
sortkey = null;
sort_idx = page_id = 0;
sort_key = null;
}
private void Sort_key_(byte[] v) {
this.sort_key = v;
if (sort_key.length == 0) // v1 will not have sortkey data; PAGE:s.w:Category:Computer_science DATE:2015-11-22
sort_key = ttl.Page_db();
}
public int compareTo(Object obj) {Xoctg_view_itm comp = (Xoctg_view_itm)obj; return Int_.Compare(page_id, comp.Page_id());}
public static final Xoctg_view_itm[] Ary_empty = new Xoctg_view_itm[0];
}

View File

@@ -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.wikis.data; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*;
import gplx.lists.*; /*ComparerAble*/ import gplx.xowa.bldrs.cmds.ctgs.*;
import gplx.core.lists.*; /*ComparerAble*/ import gplx.xowa.bldrs.cmds.ctgs.*;
import gplx.xowa.langs.*; import gplx.xowa.langs.vnts.*;
import gplx.xowa.wikis.nss.*;
import gplx.xowa.guis.views.*;

View File

@@ -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.wikis.data.tbls; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.data.*;
import gplx.lists.*; /*ComparerAble*/ import gplx.xowa.wikis.data.tbls.*;
import gplx.core.lists.*; /*ComparerAble*/ import gplx.xowa.wikis.data.tbls.*;
public class Xowd_page_itm_sorter implements ComparerAble {
public int compare(Object lhsObj, Object rhsObj) {
Xowd_page_itm lhs = (Xowd_page_itm)lhsObj, rhs = (Xowd_page_itm)rhsObj;

View File

@@ -79,7 +79,7 @@ public class Xowd_xowa_db_tbl {
stmt.Val_byte(fld_type, itm.Tid()).Val_str(fld_url, itm.Url_rel()).Val_str(fld_ns_ids, itm.Ns_ids()).Val_int(fld_part_id, itm.Part_id()).Val_str(fld_guid, itm.Guid().To_str());
}
}
class Xowd_db_file_sorter__id implements gplx.lists.ComparerAble {
class Xowd_db_file_sorter__id implements gplx.core.lists.ComparerAble {
public int compare(Object lhsObj, Object rhsObj) {
Xowd_db_file lhs = (Xowd_db_file)lhsObj;
Xowd_db_file rhs = (Xowd_db_file)rhsObj;

View File

@@ -106,8 +106,9 @@ public class Xodb_load_mgr_sql implements Xodb_load_mgr {
prv_tid = cur_tid;
}
Xoa_ttl ttl = Xoa_ttl.parse(wiki, db_page.Ns_id(), db_page.Ttl_page_db());
Xoctg_view_itm view_itm = new Xoctg_view_itm().Sortkey_(db_ctg.Sortkey()).Ttl_(ttl);
view_itm.Load_by_ttl_data(cur_tid, db_page.Id(), Xowd_page_itm.Modified_on_null_int, db_page.Text_len());
Xoctg_view_itm view_itm = new Xoctg_view_itm();
view_itm.Set__page(cur_tid, db_page.Id());
view_itm.Set__ttl__sortkey(ttl, db_ctg.Sortkey());
view_grp.Itms_add(view_itm);
}
len = Xoa_ctg_mgr.Tid__max;
@@ -189,9 +190,8 @@ public class Xodb_load_mgr_sql implements Xodb_load_mgr {
byte ctg_tid = Xodb_load_mgr_txt.Load_ctg_v1_tid(page.Ns_id());
Xoctg_view_grp ctg_grp = view_ctg.Grp_by_tid(ctg_tid);
Xoctg_view_itm ctg_itm = new Xoctg_view_itm();
ctg_itm.Load_by_ttl_data(ctg_tid, page.Id(), 0, page.Text_len());
ctg_itm.Ttl_(Xoa_ttl.parse(wiki, page.Ns_id(), page.Ttl_page_db()));
ctg_itm.Sortkey_(page.Ttl_page_db());
ctg_itm.Set__page(ctg_tid, page.Id());
ctg_itm.Set__ttl__sortkey(Xoa_ttl.parse(wiki, page.Ns_id(), page.Ttl_page_db()), page.Ttl_page_db());
ctg_grp.Itms_add(ctg_itm);
rv = true;
}

View File

@@ -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.wikis.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*;
import gplx.core.primitives.*; import gplx.core.brys.*; import gplx.core.flds.*; import gplx.xowa.bldrs.cmds.ctgs.*; import gplx.xowa.wikis.ctgs.*; import gplx.xowa.specials.search.*; import gplx.core.encoders.*;
import gplx.core.primitives.*; import gplx.core.brys.*; import gplx.core.flds.*; import gplx.core.envs.*;
import gplx.xowa.bldrs.cmds.ctgs.*; import gplx.xowa.wikis.ctgs.*; import gplx.xowa.specials.search.*; import gplx.core.encoders.*;
import gplx.xowa.wikis.nss.*;
import gplx.xowa.wikis.data.*; import gplx.xowa.wikis.data.tbls.*;
import gplx.xowa.wikis.tdbs.*; import gplx.xowa.wikis.tdbs.hives.*; import gplx.xowa.wikis.tdbs.xdats.*;
@@ -307,8 +308,9 @@ public class Xodb_load_mgr_txt implements Xodb_load_mgr {
for (int i = 0; i < ctgs_len; i++) {
Xowd_page_itm itm = (Xowd_page_itm)ctgs.Get_at(i);
byte itm_tid = Load_ctg_v1_tid(itm.Ns_id());
Xoctg_view_itm sub = Load_ctg_v1_sub(itm_tid, itm);
sub.Ttl_(Xoa_ttl.parse(wiki, itm.Ns_id(), itm.Ttl_page_db())).Sortkey_(itm.Ttl_page_db());
Xoctg_view_itm sub = new Xoctg_view_itm();
sub.Set__page(itm_tid, itm.Id());
sub.Set__ttl__sortkey(Xoa_ttl.parse(wiki, itm.Ns_id(), itm.Ttl_page_db()), itm.Ttl_page_db());
view_ctg.Grp_by_tid(itm_tid).Itms_add(sub);
}
for (byte i = 0; i < Xoa_ctg_mgr.Tid__max; i++) {
@@ -344,16 +346,11 @@ public class Xodb_load_mgr_txt implements Xodb_load_mgr {
}
public static byte Load_ctg_v1_tid(int ns_id) {
switch (ns_id) {
case Xow_ns_.Tid__category: return Xoa_ctg_mgr.Tid_subc;
case Xow_ns_.Tid__category: return Xoa_ctg_mgr.Tid_subc;
case Xow_ns_.Tid__file: return Xoa_ctg_mgr.Tid_file;
default: return Xoa_ctg_mgr.Tid_page;
}
}
private static Xoctg_view_itm Load_ctg_v1_sub(byte tid, Xowd_page_itm data) {
Xoctg_view_itm rv = new Xoctg_view_itm();
rv.Load_by_ttl_data(tid, data.Id(), 0, data.Text_len());
return rv;
}
public static boolean Load_page_or_false(Xowd_page_itm page, Xob_xdat_itm xdat, int ns_id) {
byte[] src = xdat.Src(); int itm_end = xdat.Itm_end();
int bgn = xdat.Itm_bgn();
@@ -563,7 +560,7 @@ class Xob_random_itm {
public int Len() {return len;} private int len;
public Xob_random_itm(int idx, int bgn, int len) {this.idx = idx; this.bgn = bgn; this.len = len;}
}
class Xob_random_itm_comparer implements gplx.lists.ComparerAble {
class Xob_random_itm_comparer implements gplx.core.lists.ComparerAble {
public int compare(Object lhsObj, Object rhsObj) {
return Int_.Compare(((Xob_random_itm)lhsObj).End(), ((Xob_random_itm)rhsObj).End());
}

View File

@@ -111,7 +111,7 @@ public class Xodb_save_mgr_txt implements Xodb_save_mgr {
private Xowd_page_itm tmp_page = new Xowd_page_itm();
public static final int File_idx_unknown = -1;
}
class Bry_comparer_fld_last implements gplx.lists.ComparerAble {
class Bry_comparer_fld_last implements gplx.core.lists.ComparerAble {
public int compare(Object lhsObj, Object rhsObj) {
byte[] lhs = (byte[])lhsObj, rhs = (byte[])rhsObj;
int lhs_bgn = Bry_find_.Find_bwd(lhs, Byte_ascii.Pipe); if (lhs_bgn == Bry_find_.Not_found) lhs_bgn = -1;

View File

@@ -30,6 +30,7 @@ public class Xow_domain_itm_tst {
@Test public void Parse_other() {fxt.Test_parse("other.wiki" , "" , "" , Xow_domain_tid_.Int__other);}
@Test public void Parse_ua_wikimedia_org() {fxt.Test_parse("ua.wikimedia.org" , "ua" , "uk" , Xow_domain_tid_.Int__wikimedia);}
@Test public void Parse_ar_wikimedia_org() {fxt.Test_parse("ar.wikimedia.org" , "ar" , "es" , Xow_domain_tid_.Int__wikimedia);}
@Test public void Parse_blank() {fxt.Test_parse("" , "" , "" , Xow_domain_tid_.Int__other);}
}
class Xow_domain_fxt {
public void Test_parse(String domain, String expd_orig_lang, String expd_actl_lang, int expd_tid) {

View File

@@ -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.wikis.metas; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*;
import gplx.core.brys.fmtrs.*;
import gplx.core.brys.fmtrs.*; import gplx.core.envs.*;
import gplx.xowa.wikis.domains.*;
public class Xow_script_mgr implements GfoInvkAble {
public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {

View File

@@ -65,7 +65,9 @@ public class Xow_ns_ {
;
public static final String
Alias__wikipedia = "Wikipedia"
, Alias__image = "Image"
;
public static final byte[] Alias__image__bry = Bry_.new_a7(Alias__image);
public static final byte[]
Bry__template_w_colon = Bry_.new_a7(Key__template + ":")
, Bry__module_w_colon = Bry_.new_a7(Key__module + ":")

View File

@@ -19,7 +19,7 @@ package gplx.xowa.wikis.nss; import gplx.*; import gplx.xowa.*; import gplx.xowa
import gplx.core.primitives.*; import gplx.core.btries.*; import gplx.xowa.langs.cases.*;
import gplx.xowa.bldrs.installs.*;
import gplx.xowa.xtns.scribunto.*;
public class Xow_ns_mgr implements GfoInvkAble, gplx.lists.ComparerAble {
public class Xow_ns_mgr implements GfoInvkAble, gplx.core.lists.ComparerAble {
private Ordered_hash id_hash = Ordered_hash_.New(); // hash for retrieval by id
private Hash_adp_bry name_hash; // hash for retrieval by name; note that ns names are case-insensitive "File:" == "fILe:"
private Hash_adp_bry tmpl_hash; // hash for retrieval by name; PERF for templates

View File

@@ -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.wikis.tdbs.hives; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.tdbs.*;
public class Bry_comparer_bgn_eos implements gplx.lists.ComparerAble {
public class Bry_comparer_bgn_eos implements gplx.core.lists.ComparerAble {
public Bry_comparer_bgn_eos(int bgn) {this.bgn = bgn;} private int bgn;
public int compare(Object lhsObj, Object rhsObj) {
byte[] lhs = (byte[])lhsObj, rhs = (byte[])rhsObj;

View File

@@ -24,7 +24,7 @@ public class Xowd_hive_mgr {
dir_tid_reg = dir_tid == Xotdb_dir_info_.Tid_page ? Xotdb_dir_info_.Tid_ttl : dir_tid;
} Xowe_wiki wiki; Xotdb_fsys_mgr fsys_mgr; Xowd_regy_mgr reg_mgr; byte dir_tid;
byte dir_tid_reg;
public void Create(Xow_ns ns, byte[] key, byte[] data, gplx.lists.ComparerAble comparer) {
public void Create(Xow_ns ns, byte[] key, byte[] data, gplx.core.lists.ComparerAble comparer) {
if (reg_mgr == null) reg_mgr = new Xowd_regy_mgr(fsys_mgr.Url_ns_reg(ns.Num_str(), dir_tid_reg));
int fil_idx = 0;
if (reg_mgr.Files_ary().length == 0) {
@@ -48,7 +48,7 @@ public class Xowd_hive_mgr {
xdat.Save(url);
reg_mgr.Save();
}
public void Create(byte[] key, byte[] data, gplx.lists.ComparerAble comparer) {
public void Create(byte[] key, byte[] data, gplx.core.lists.ComparerAble comparer) {
if (reg_mgr == null) reg_mgr = new Xowd_regy_mgr(fsys_mgr.Url_site_reg(dir_tid));
int fil_idx = 0;
if (reg_mgr.Files_ary().length == 0) {

View File

@@ -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.wikis.tdbs.hives; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.tdbs.*;
import gplx.lists.*;
import gplx.core.lists.*;
public class Xowd_regy_mgr {
public static final int Not_found = -1;
public Xowd_regy_mgr() {}

View File

@@ -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.wikis.tdbs.hives; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.tdbs.*;
public class Xowd_ttl_file_comparer_end implements gplx.lists.ComparerAble {
public class Xowd_ttl_file_comparer_end implements gplx.core.lists.ComparerAble {
public int compare(Object lhsObj, Object rhsObj) {
Xowd_hive_regy_itm lhs = (Xowd_hive_regy_itm)lhsObj, rhs = (Xowd_hive_regy_itm)rhsObj;
if (lhs.Count() == 0) return Bry_.Compare(rhs.End(), lhs.Bgn());

View File

@@ -17,7 +17,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package gplx.xowa.wikis.tdbs.stats; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.tdbs.*;
import gplx.core.strings.*;
public class Xob_stat_itm implements NewAble {
public class Xob_stat_itm {
public String Ns() {return ns;} private String ns;
public int Fils;
public long Size, SizeMax = Int_.Min_value, SizeMin = Int_.Max_value;

View File

@@ -20,7 +20,14 @@ import gplx.core.strings.*; import gplx.xowa.wikis.tdbs.*;
public class Xob_stat_type {
public byte Tid() {return tid;} private byte tid;
public Xob_stat_type(byte tid) {this.tid = tid;}
public Xob_stat_itm GetOrNew(String ns) {return (Xob_stat_itm)regy.Get_by_or_new(ns, Xob_stat_itm.Instance);}
public Xob_stat_itm GetOrNew(String ns) {
Xob_stat_itm rv = (Xob_stat_itm)regy.Get_by(ns);
if (rv == null) {
rv = new Xob_stat_itm(ns);
regy.Add(ns, rv);
}
return rv;
}
public Xob_stat_itm GetAt(int i) {return (Xob_stat_itm)regy.Get_at(i);}
public int Count() {return regy.Count();}
public void To_str(String_bldr sb) {

View File

@@ -48,7 +48,7 @@ public class Xob_xdat_file {
}
return rv;
}
public void Sort(Bry_bfr bfr, gplx.lists.ComparerAble comparer) {
public void Sort(Bry_bfr bfr, gplx.core.lists.ComparerAble comparer) {
int ary_len = itm_ends.length;
byte[][] brys = Src_extract_brys(ary_len);
Array_.Sort(brys, comparer);

View File

@@ -78,7 +78,7 @@ public class Xob_xdat_file_tst {
Tfds.Eq_str_lines(expd, String_.new_a7(Xob_xdat_file.Rebuid_header(Bry_.new_a7(orig), Bry_.new_a7("\n"))));
}
Bry_bfr tmp = Bry_bfr.new_();
private void tst_Sort(Xob_xdat_file rdr, gplx.lists.ComparerAble comparer, String expd) {
private void tst_Sort(Xob_xdat_file rdr, gplx.core.lists.ComparerAble comparer, String expd) {
rdr.Sort(tmp, comparer);
Chk_file(rdr, expd);
}

View File

@@ -115,8 +115,8 @@ public class Xob_xdat_file_wtr {
private static final byte Dlm_fld = Byte_ascii.Pipe;
}
class SortAlgo_quick {// quicksort
Object[] ary; int ary_len; gplx.lists.ComparerAble comparer;
public void Sort(Object[] ary, int ary_len, gplx.lists.ComparerAble comparer) {
Object[] ary; int ary_len; gplx.core.lists.ComparerAble comparer;
public void Sort(Object[] ary, int ary_len, gplx.core.lists.ComparerAble comparer) {
if (ary == null || ary_len < 2) return;
this.ary = ary; this.ary_len = ary_len; this.comparer = comparer;
Sort_recurse(0, ary_len - 1);