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:
@@ -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
|
||||
|
||||
@@ -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)) {
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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];
|
||||
}
|
||||
|
||||
@@ -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.*;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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 + ":")
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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() {}
|
||||
|
||||
@@ -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());
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user