1
0
mirror of https://github.com/gnosygnu/xowa.git synced 2024-10-27 20:34:16 +00:00
gnosygnu_xowa/h origin master

96 lines
8.0 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

diff --git a/400_xowa/src/gplx/xowa/xtns/wbases/Wdata_doc.java b/400_xowa/src/gplx/xowa/xtns/wbases/Wdata_doc.java
index f6d1ef3..97fdf7f 100644
--- a/400_xowa/src/gplx/xowa/xtns/wbases/Wdata_doc.java
+++ b/400_xowa/src/gplx/xowa/xtns/wbases/Wdata_doc.java
@@ -19,50 +19,55 @@ import gplx.langs.jsons.*;
import gplx.xowa.langs.*;
import gplx.xowa.xtns.wbases.core.*; import gplx.xowa.xtns.wbases.claims.*; import gplx.xowa.xtns.wbases.parsers.*;
public class Wdata_doc {
- private Wdata_wiki_mgr mgr; private Int_obj_ref tmp_key;
- public Wdata_doc(byte[] qid, Wdata_wiki_mgr mgr, Json_doc jdoc) {this.qid = qid; this.mgr = mgr; this.jdoc = jdoc;}
- public Wdata_doc(byte[] qid, Ordered_hash slink_list, Ordered_hash label_list, Ordered_hash descr_list, Ordered_hash alias_list, Ordered_hash claim_list) { // TEST
- this.qid = qid;
- this.slink_list = slink_list; this.label_list = label_list; this.descr_list = descr_list; this.alias_list = alias_list; this.claim_list = claim_list;
+ private final Wdata_wiki_mgr mgr;

+ public Wdata_doc(Wdata_wiki_mgr mgr, Json_doc jdoc, byte[] qid) {

+ this.mgr = mgr; this.jdoc = jdoc; this.qid = qid;

}
- public Json_doc Jdoc() {return jdoc;} private Json_doc jdoc;
+ public byte[] Qid() {return qid;} private final byte[] qid;

+ public Json_doc Jdoc() {return jdoc;} private final Json_doc jdoc;

public int Jdoc_size() {return jdoc == null ? 1 : jdoc.Src().length;}
- public byte[] Qid() {return qid;} private byte[] qid;
public byte[][] Sort_langs() {return sort_langs;} public void Sort_langs_(byte[][] v) {sort_langs = v;} private byte[][] sort_langs = Bry_.Ary_empty;
- public Ordered_hash Slink_list() {if (slink_list == null) slink_list = mgr.Wdoc_parser(jdoc).Parse_sitelinks(qid, jdoc); return slink_list;} private Ordered_hash slink_list;
- public Ordered_hash Label_list() {if (label_list == null) label_list = mgr.Wdoc_parser(jdoc).Parse_langvals(qid, jdoc, Bool_.Y); return label_list;} private Ordered_hash label_list;
- public Ordered_hash Descr_list() {if (descr_list == null) descr_list = mgr.Wdoc_parser(jdoc).Parse_langvals(qid, jdoc, Bool_.N); return descr_list;} private Ordered_hash descr_list;
- public Ordered_hash Alias_list() {if (alias_list == null) alias_list = mgr.Wdoc_parser(jdoc).Parse_aliases(qid, jdoc); return alias_list;} private Ordered_hash alias_list;
- public Ordered_hash Claim_list() {if (claim_list == null) claim_list = mgr.Wdoc_parser(jdoc).Parse_claims(qid, jdoc); return claim_list;} private Ordered_hash claim_list;
- public Wbase_claim_grp Claim_list_get(int pid) {
- if (tmp_key == null) tmp_key = Int_obj_ref.New_neg1(); 
- Object o = this.Claim_list().Get_by(tmp_key.Val_(pid));
+

+ // NOTE: lazy instantiation b/c we don't want to parse entire json unless called; particulary necessary for {{#property}} calls;

+ public Ordered_hash Slink_list() {if (slink_list == null) slink_list = mgr.Wdoc_parser(jdoc).Parse_sitelinks(qid, jdoc); return slink_list;} private Ordered_hash slink_list;

+ public Ordered_hash Label_list() {if (label_list == null) label_list = mgr.Wdoc_parser(jdoc).Parse_langvals(qid, jdoc, Bool_.Y); return label_list;} private Ordered_hash label_list;

+ public Ordered_hash Descr_list() {if (descr_list == null) descr_list = mgr.Wdoc_parser(jdoc).Parse_langvals(qid, jdoc, Bool_.N); return descr_list;} private Ordered_hash descr_list;

+ public Ordered_hash Alias_list() {if (alias_list == null) alias_list = mgr.Wdoc_parser(jdoc).Parse_aliases(qid, jdoc); return alias_list;} private Ordered_hash alias_list;

+ public Ordered_hash Claim_list() {if (claim_list == null) claim_list = mgr.Wdoc_parser(jdoc).Parse_claims(qid, jdoc); return claim_list;} private Ordered_hash claim_list;

+

+ // various getters

+ public Wbase_claim_grp Get_claim_grp_or_null(int pid) {

+ Object o = this.Claim_list().Get_by(Int_obj_ref.New(pid));

return (Wbase_claim_grp)o;
- } 
- public byte[] Label_list__get(byte[] lang_key) {return Lang_text_list__get(this.Label_list(), lang_key);}
- public byte[] Label_list__get_or_fallback(Xol_lang_itm lang) {return Lang_text_list__get_or_fallback(this.Label_list(), lang);}
- public byte[] Descr_list__get_or_fallback(Xol_lang_itm lang) {return Lang_text_list__get_or_fallback(this.Descr_list(), lang);}
- public byte[] Slink_list__get_or_fallback(byte[] abrv_wm) {
- Wdata_sitelink_itm rv = (Wdata_sitelink_itm)this.Slink_list().Get_by(abrv_wm);
- return rv == null ? null : rv.Name();
}
- private byte[] Lang_text_list__get(Ordered_hash hash, byte[] lang_key) {
- Object rv_obj = hash.Get_by(lang_key); if (rv_obj == null) return null;
- Wdata_langtext_itm rv = (Wdata_langtext_itm)rv_obj;
- return rv.Text();
+ public byte[] Get_label_bry_or_null(byte[] lang_key) {

+ Wdata_langtext_itm itm = (Wdata_langtext_itm)this.Label_list().Get_by(lang_key);

+ return itm == null ? null : itm.Text();

}
- public byte[] Lang_text_list__get_or_fallback(Ordered_hash lang_text_list, Xol_lang_itm lang) {
- byte[] rv = Lang_text_list__get(lang_text_list, lang.Key_bry()); if (rv != null) return rv;
- byte[][] ary = lang.Fallback_bry_ary(); // NOTE: en is currently automatically being added by Xol_lang_itm
- int len = ary.length;
- for (int i = 0; i < len; ++i) {
- byte[] lang_key = ary[i];
- Object itm_obj = lang_text_list.Get_by(lang_key);
+ public Wdata_langtext_itm Get_label_itm_or_null(Xol_lang_itm lang) {return Get_langtext_itm_or_null(this.Label_list(), lang);}

+ public Wdata_langtext_itm Get_descr_itm_or_null(Xol_lang_itm lang) {return Get_langtext_itm_or_null(this.Descr_list(), lang);}

+ public Wdata_sitelink_itm Get_slink_itm_or_null(byte[] abrv_wm) {return (Wdata_sitelink_itm)this.Slink_list().Get_by(abrv_wm);}

+

+ // helper method

+ private Wdata_langtext_itm Get_langtext_itm_or_null(Ordered_hash hash, Xol_lang_itm lang) {

+ // get itm by lang's key

+ Wdata_langtext_itm itm = (Wdata_langtext_itm)hash.Get_by(lang.Key_bry());

+ if (itm != null) return itm;

+

+ // loop over fallback_langs

+ byte[][] fallback_langs = lang.Fallback_bry_ary(); // NOTE: en is currently automatically being added by Xol_lang_itm

+ int len = fallback_langs.length;

+ for (int i = 0; i < len; i++) {

+ byte[] lang_key = fallback_langs[i];

+ Object itm_obj = hash.Get_by(lang_key);

if (itm_obj != null) {
- Wdata_langtext_itm itm = (Wdata_langtext_itm)itm_obj;
- return itm.Text();
+ return (Wdata_langtext_itm)itm_obj;

}
}
return null;
}
+ public Wdata_doc Ctor_by_test(Ordered_hash slink_list, Ordered_hash label_list, Ordered_hash descr_list, Ordered_hash alias_list, Ordered_hash claim_list) {// TEST

+ this.slink_list = slink_list; this.label_list = label_list; this.descr_list = descr_list; this.alias_list = alias_list; this.claim_list = claim_list;

+ return this;

+ }

}