diff --git a/100_core/src_140_list/gplx/Hash_adp_bry.java b/100_core/src_140_list/gplx/Hash_adp_bry.java index a654bdf48..89c1440c7 100644 --- a/100_core/src_140_list/gplx/Hash_adp_bry.java +++ b/100_core/src_140_list/gplx/Hash_adp_bry.java @@ -27,6 +27,10 @@ public class Hash_adp_bry extends gplx.lists.Hash_adp_base implements Hash_adp { @Override protected Object Fetch_base(Object key) {return super.Fetch_base(key_ref.Init((byte[])key));} @Override protected void Del_base(Object key) {super.Del_base(key_ref.Init((byte[])key));} @Override protected boolean Has_base(Object key) {return super.Has_base(key_ref.Init((byte[])key));} + public int Get_as_int(byte[] key) { + Object o = Get_by_bry(key); if (key == null) throw Err_.new_("core", "unknown key", "key", key); + return ((Int_obj_val)o).Val(); + } public Object Get_by_bry(byte[] src) {return super.Fetch_base(key_ref.Init(src));} public Object Get_by_mid(byte[] src, int bgn, int end) {return super.Fetch_base(key_ref.Init(src, bgn, end));} public Hash_adp_bry Add_bry_byte(byte[] key, byte val) {this.Add_base(key, Byte_obj_val.new_(val)); return this;} diff --git a/400_xowa/src/gplx/core/json/Json_itm_ary.java b/400_xowa/src/gplx/core/json/Json_ary.java similarity index 77% rename from 400_xowa/src/gplx/core/json/Json_itm_ary.java rename to 400_xowa/src/gplx/core/json/Json_ary.java index e301e89b2..42d625d56 100644 --- a/400_xowa/src/gplx/core/json/Json_itm_ary.java +++ b/400_xowa/src/gplx/core/json/Json_ary.java @@ -16,15 +16,19 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.core.json; import gplx.*; import gplx.core.*; -public class Json_itm_ary extends Json_itm_base implements Json_grp { - public Json_itm_ary(int src_bgn, int src_end) {this.Ctor(src_bgn, src_end);} +public class Json_ary extends Json_itm_base implements Json_grp { + public Json_ary(int src_bgn, int src_end) {this.Ctor(src_bgn, src_end);} @Override public byte Tid() {return Json_itm_.Tid_array;} public void Src_end_(int v) {this.src_end = v;} @Override public Object Data() {return null;} @Override public byte[] Data_bry() {return null;} public int Len() {return subs_len;} private int subs_len = 0, subs_max = 0; + public Json_nde Get_at_as_nde(int i) { + Json_itm rv = subs[i]; if (rv.Tid() != Json_itm_.Tid_nde) throw Err_.new_("json", "itm is not nde", "type", rv.Tid(), "i", i); + return (Json_nde)rv; + } public Json_itm Get_at(int i) {return subs[i];} - public Json_itm_ary Add_many(Json_itm... ary) { + public Json_ary Add_many(Json_itm... ary) { int len = ary.length; for (int i = 0; i < len; i++) Add(ary[i]); @@ -67,5 +71,9 @@ public class Json_itm_ary extends Json_itm_base implements Json_grp { return rv; } private Json_itm[] subs = Json_itm_.Ary_empty; - public static Json_itm_ary cast_(Json_itm v) {return v == null || v.Tid() != Json_itm_.Tid_array ? null : (Json_itm_ary)v;} + public static Json_ary cast_or_null(Json_itm v) {return v == null || v.Tid() != Json_itm_.Tid_array ? null : (Json_ary)v;} + public static Json_ary cast(Json_itm v) { + if (v == null || v.Tid() != Json_itm_.Tid_array) throw Err_.new_("json", "itm is not array"); + return (Json_ary)v; + } } diff --git a/400_xowa/src/gplx/core/json/Json_doc.java b/400_xowa/src/gplx/core/json/Json_doc.java index 2acda293c..10b1892fb 100644 --- a/400_xowa/src/gplx/core/json/Json_doc.java +++ b/400_xowa/src/gplx/core/json/Json_doc.java @@ -50,7 +50,7 @@ public class Json_doc { byte[] path = paths[paths_idx]; int subs_len = owner.Len(); for (int i = 0; i < subs_len; i++) { - Json_itm_kv itm = Json_itm_kv.cast_(owner.Get_at(i)); if (itm == null) continue; // ignore simple props, arrays, ndes + Json_kv itm = Json_kv.cast_(owner.Get_at(i)); if (itm == null) continue; // ignore simple props, arrays, ndes if (!itm.Key_eq(path)) continue; if (paths_idx == paths_last) return itm.Val(); Json_nde sub_nde = Json_nde.cast_(itm.Val()); if (sub_nde == null) return null; // match, but has not a nde; exit diff --git a/400_xowa/src/gplx/core/json/Json_doc_bldr.java b/400_xowa/src/gplx/core/json/Json_doc_bldr.java index 5f3998538..90172610c 100644 --- a/400_xowa/src/gplx/core/json/Json_doc_bldr.java +++ b/400_xowa/src/gplx/core/json/Json_doc_bldr.java @@ -17,21 +17,21 @@ along with this program. If not, see . */ package gplx.core.json; import gplx.*; import gplx.core.*; public class Json_doc_bldr { - public Json_nde Nde() {return factory.Nde(-1);} - public Json_nde Nde(Json_grp owner) { - Json_nde rv = factory.Nde(-1); + public Json_nde Nde(Json_doc jdoc) {return factory.Nde(jdoc, -1);} + public Json_nde Nde(Json_doc jdoc, Json_grp owner) { + Json_nde rv = factory.Nde(jdoc, -1); owner.Add(rv); return rv; } public Json_itm Str(byte[] v) {return Str(String_.new_u8(v));} public Json_itm Str(String v) {return Json_itm_tmp.new_str_(v);} public Json_itm Int(int v) {return Json_itm_tmp.new_int_(v);} - public Json_itm_kv Kv_int(Json_grp owner, String key, int val) {Json_itm_kv rv = factory.Kv(Json_itm_tmp.new_str_(key), Json_itm_tmp.new_int_(val)); owner.Add(rv); return rv;} - public Json_itm_kv Kv_str(Json_grp owner, String key, String val) {Json_itm_kv rv = factory.Kv(Json_itm_tmp.new_str_(key), Json_itm_tmp.new_str_(val)); owner.Add(rv); return rv;} - public Json_itm_ary Kv_ary(Json_grp owner, String key, Json_itm... subs) { + public Json_kv Kv_int(Json_grp owner, String key, int val) {Json_kv rv = factory.Kv(Json_itm_tmp.new_str_(key), Json_itm_tmp.new_int_(val)); owner.Add(rv); return rv;} + public Json_kv Kv_str(Json_grp owner, String key, String val) {Json_kv rv = factory.Kv(Json_itm_tmp.new_str_(key), Json_itm_tmp.new_str_(val)); owner.Add(rv); return rv;} + public Json_ary Kv_ary(Json_grp owner, String key, Json_itm... subs) { Json_itm key_itm = Json_itm_tmp.new_str_(key); - Json_itm_ary val_ary = factory.Ary(-1, -1); - Json_itm_kv kv = factory.Kv(key_itm, val_ary); + Json_ary val_ary = factory.Ary(-1, -1); + Json_kv kv = factory.Kv(key_itm, val_ary); owner.Add(kv); int len = subs.length; for (int i = 0; i < len; i++) diff --git a/400_xowa/src/gplx/core/json/Json_factory.java b/400_xowa/src/gplx/core/json/Json_factory.java index 34d378d3d..4b9ee29bd 100644 --- a/400_xowa/src/gplx/core/json/Json_factory.java +++ b/400_xowa/src/gplx/core/json/Json_factory.java @@ -23,7 +23,7 @@ public class Json_factory { public Json_itm_int Int(Json_doc doc, int bgn, int end) {return new Json_itm_int(doc, bgn, end);} public Json_itm Decimal(Json_doc doc, int bgn, int end) {return new Json_itm_decimal(doc, bgn, end);} public Json_itm Str(Json_doc doc, int bgn, int end, boolean exact) {return new Json_itm_str(doc, bgn, end, exact);} - public Json_itm_kv Kv(Json_itm key, Json_itm val) {return new Json_itm_kv(key, val);} - public Json_itm_ary Ary(int bgn, int end) {return new Json_itm_ary(bgn, end);} - public Json_nde Nde(int bgn) {return new Json_nde(bgn);} + public Json_kv Kv(Json_itm key, Json_itm val) {return new Json_kv(key, val);} + public Json_ary Ary(int bgn, int end) {return new Json_ary(bgn, end);} + public Json_nde Nde(Json_doc doc, int bgn) {return new Json_nde(doc, bgn);} } diff --git a/400_xowa/src/gplx/core/json/Json_itm_kv.java b/400_xowa/src/gplx/core/json/Json_kv.java similarity index 76% rename from 400_xowa/src/gplx/core/json/Json_itm_kv.java rename to 400_xowa/src/gplx/core/json/Json_kv.java index 05713202e..40c6644a7 100644 --- a/400_xowa/src/gplx/core/json/Json_itm_kv.java +++ b/400_xowa/src/gplx/core/json/Json_kv.java @@ -16,12 +16,14 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.core.json; import gplx.*; import gplx.core.*; -public class Json_itm_kv extends Json_itm_base { - public Json_itm_kv(Json_itm key, Json_itm val) {this.key = key; this.val = val;} +public class Json_kv extends Json_itm_base { + public Json_kv(Json_itm key, Json_itm val) {this.key = key; this.val = val;} @Override public byte Tid() {return Json_itm_.Tid_kv;} public Json_itm Key() {return key;} Json_itm key; public Json_itm Val() {return val;} Json_itm val; + public byte[] Key_as_bry() {return key.Data_bry();} public String Key_as_str() {return (String)key.Data();} + public byte[] Val_as_bry() {return val.Data_bry();} public boolean Key_eq(byte[] comp) {return ((Json_itm_str)key).Data_eq(comp);} @Override public Object Data() {return null;} @Override public byte[] Data_bry() {return null;} @@ -30,6 +32,6 @@ public class Json_itm_kv extends Json_itm_base { bfr.Add_byte(Byte_ascii.Colon); val.Print_as_json(bfr, depth); } - public static final Json_itm_kv[] Ary_empty = new Json_itm_kv[0]; - public static Json_itm_kv cast_(Json_itm v) {return v == null || v.Tid() != Json_itm_.Tid_kv ? null : (Json_itm_kv)v;} + public static final Json_kv[] Ary_empty = new Json_kv[0]; + public static Json_kv cast_(Json_itm v) {return v == null || v.Tid() != Json_itm_.Tid_kv ? null : (Json_kv)v;} } diff --git a/400_xowa/src/gplx/core/json/Json_kv_ary_srl.java b/400_xowa/src/gplx/core/json/Json_kv_ary_srl.java index ea26aea71..6bc635fc1 100644 --- a/400_xowa/src/gplx/core/json/Json_kv_ary_srl.java +++ b/400_xowa/src/gplx/core/json/Json_kv_ary_srl.java @@ -20,7 +20,7 @@ public class Json_kv_ary_srl { public static KeyVal Kv_by_itm(Json_itm itm) { switch (itm.Tid()) { case Json_itm_.Tid_kv: - Json_itm_kv kv = (Json_itm_kv)itm; + Json_kv kv = (Json_kv)itm; return KeyVal_.new_(kv.Key_as_str(), Val_by_itm(kv.Val())); default: throw Err_.new_unhandled(itm.Tid()); @@ -33,13 +33,13 @@ public class Json_kv_ary_srl { case Json_itm_.Tid_null: case Json_itm_.Tid_string: case Json_itm_.Tid_decimal: return itm.Data(); - case Json_itm_.Tid_array: return Val_by_itm_ary((Json_itm_ary)itm); + case Json_itm_.Tid_array: return Val_by_itm_ary((Json_ary)itm); case Json_itm_.Tid_nde: return Val_by_itm_nde((Json_nde)itm); case Json_itm_.Tid_kv: // kv should never be val; EX: "a":"b":c; not possible default: throw Err_.new_unhandled(itm.Tid()); } } - private static KeyVal[] Val_by_itm_ary(Json_itm_ary itm) { + private static KeyVal[] Val_by_itm_ary(Json_ary itm) { int subs_len = itm.Len(); KeyVal[] rv = new KeyVal[subs_len]; for (int i = 0; i < subs_len; i++) { diff --git a/400_xowa/src/gplx/core/json/Json_nde.java b/400_xowa/src/gplx/core/json/Json_nde.java index 72bd6ef01..91574f372 100644 --- a/400_xowa/src/gplx/core/json/Json_nde.java +++ b/400_xowa/src/gplx/core/json/Json_nde.java @@ -16,18 +16,24 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.core.json; import gplx.*; import gplx.core.*; -public class Json_nde extends Json_itm_base implements Json_grp { +public class Json_nde extends Json_itm_base implements Json_grp { private Json_itm[] subs = Json_itm_.Ary_empty; private int subs_len = 0, subs_max = 0; - public Json_nde(int src_bgn) {this.Ctor(src_bgn, -1);} + public Json_nde(Json_doc jdoc, int src_bgn) {this.jdoc = jdoc; this.Ctor(src_bgn, -1);} @Override public byte Tid() {return Json_itm_.Tid_nde;} + public Json_doc Doc() {return jdoc;} private final Json_doc jdoc; public void Src_end_(int v) {this.src_end = v;} @Override public Object Data() {return null;} @Override public byte[] Data_bry() {return null;} public int Len() {return subs_len;} + public Json_kv Get_at_as_kv(int i) { + Json_itm rv_itm = Get_at(i); + Json_kv rv = Json_kv.cast_(rv_itm); if (rv == null) throw Err_.new_("json", "sub is not kv", "i", i, "src", Bry_.Mid(jdoc.Src(), this.Src_bgn(), src_end)); + return rv; + } public Json_itm Get_at(int i) {return subs[i];} public Json_nde Get(String key) {return Get(Bry_.new_u8(key));} public Json_nde Get(byte[] key) { - Json_itm_kv kv = Json_itm_kv.cast_(this.Get_itm(key)); if (kv == null) throw Err_.new_("json", "kv not found", "key", key); + Json_kv kv = Json_kv.cast_(this.Get_itm(key)); if (kv == null) throw Err_.new_("json", "kv not found", "key", key); Json_nde rv = Json_nde.cast_(kv.Val()); if (rv == null) throw Err_.new_("json", "nde not found", "key", key); return rv; } @@ -35,7 +41,7 @@ public class Json_nde extends Json_itm_base implements Json_grp { for (int i = 0; i < subs_len; i++) { Json_itm itm = subs[i]; if (itm.Tid() == Json_itm_.Tid_kv) { - Json_itm_kv itm_as_kv = (Json_itm_kv)itm; + Json_kv itm_as_kv = (Json_kv)itm; if (Bry_.Eq(key, itm_as_kv.Key().Data_bry())) return itm; } @@ -52,7 +58,7 @@ public class Json_nde extends Json_itm_base implements Json_grp { Json_itm kv_obj = Get_itm(key); if (kv_obj == null) return or; // key not found; if (kv_obj.Tid() != Json_itm_.Tid_kv) return or; // key is not a key_val - Json_itm_kv kv = (Json_itm_kv)kv_obj; + Json_kv kv = (Json_kv)kv_obj; Json_itm val = kv.Val(); if (val == null) return or; return val.Data_bry(); diff --git a/400_xowa/src/gplx/core/json/Json_parser.java b/400_xowa/src/gplx/core/json/Json_parser.java index a0a20771d..e3cc59c71 100644 --- a/400_xowa/src/gplx/core/json/Json_parser.java +++ b/400_xowa/src/gplx/core/json/Json_parser.java @@ -33,9 +33,9 @@ public class Json_parser { doc.Ctor(src, root); return doc; } - Json_nde Make_nde(Json_doc doc) { + private Json_nde Make_nde(Json_doc doc) { ++pos; // brack_bgn - Json_nde nde = new Json_nde(pos); + Json_nde nde = new Json_nde(doc, pos); while (pos < src_len) { Skip_ws(); if (src[pos] == Byte_ascii.Curly_end) {++pos; return nde;} @@ -55,7 +55,7 @@ public class Json_parser { Chk(Byte_ascii.Colon); Skip_ws(); Json_itm val = Make_val(doc); - return new Json_itm_kv(key, val); + return new Json_kv(key, val); } Json_itm Make_val(Json_doc doc) { while (pos < src_len) { @@ -131,8 +131,8 @@ public class Json_parser { ? factory.Decimal(doc, num_bgn, pos) : factory.Int(doc, num_bgn, pos); } - Json_itm_ary Make_ary(Json_doc doc) { - Json_itm_ary rv = factory.Ary(pos++, pos); // brack_bgn + Json_ary Make_ary(Json_doc doc) { + Json_ary rv = factory.Ary(pos++, pos); // brack_bgn while (pos < src_len) { Skip_ws(); if (src[pos] == Byte_ascii.Brack_end) {++pos; return rv;} diff --git a/400_xowa/src/gplx/core/json/Json_parser_tst.java b/400_xowa/src/gplx/core/json/Json_parser_tst.java index fa57e4dfd..b69e24385 100644 --- a/400_xowa/src/gplx/core/json/Json_parser_tst.java +++ b/400_xowa/src/gplx/core/json/Json_parser_tst.java @@ -52,23 +52,23 @@ class Json_parser_fxt { } Json_parser parser; Json_factory factory; Bry_bfr tmp_bfr = Bry_bfr.reset_(255); Json_itm itm_int_(int v) {return Json_itm_tmp.new_int_(v);} Json_itm itm_str_(String v) {return Json_itm_tmp.new_str_(v);} - public Json_itm_ary itm_ary_() {return factory.Ary(-1, -1);} - public Json_nde itm_nde_() {return factory.Nde(-1);} - public Json_itm_kv itm_kv_null_(String k) {return factory.Kv(itm_str_(k), factory.Null());} - public Json_itm_kv itm_kv_(String k, String v) {return factory.Kv(itm_str_(k), itm_str_(v));} - public Json_itm_kv itm_kv_(String k, int v) {return factory.Kv(itm_str_(k), itm_int_(v));} - public Json_itm_kv itm_kv_(String k, boolean v) {return factory.Kv(itm_str_(k), v ? factory.Bool_y() : factory.Bool_n());} - public Json_itm_kv itm_kv_dec_(String k, String v) {return factory.Kv(itm_str_(k), new Json_itm_tmp(Json_itm_.Tid_decimal, v));} - public Json_itm_kv itm_kv_(String k, Json_nde v) {return factory.Kv(itm_str_(k), v);} - public Json_itm_kv itm_kv_ary_int_(String k, int... v) { - Json_itm_ary ary = factory.Ary(-1, -1); + public Json_ary itm_ary_() {return factory.Ary(-1, -1);} + public Json_nde itm_nde_() {return factory.Nde(null, -1);} + public Json_kv itm_kv_null_(String k) {return factory.Kv(itm_str_(k), factory.Null());} + public Json_kv itm_kv_(String k, String v) {return factory.Kv(itm_str_(k), itm_str_(v));} + public Json_kv itm_kv_(String k, int v) {return factory.Kv(itm_str_(k), itm_int_(v));} + public Json_kv itm_kv_(String k, boolean v) {return factory.Kv(itm_str_(k), v ? factory.Bool_y() : factory.Bool_n());} + public Json_kv itm_kv_dec_(String k, String v) {return factory.Kv(itm_str_(k), new Json_itm_tmp(Json_itm_.Tid_decimal, v));} + public Json_kv itm_kv_(String k, Json_nde v) {return factory.Kv(itm_str_(k), v);} + public Json_kv itm_kv_ary_int_(String k, int... v) { + Json_ary ary = factory.Ary(-1, -1); int len = v.length; for (int i = 0; i < len; i++) ary.Add(itm_int_(v[i])); return factory.Kv(itm_str_(k), ary); } - public Json_itm_kv itm_kv_ary_str_(String k, String... v) { - Json_itm_ary ary = factory.Ary(-1, -1); + public Json_kv itm_kv_ary_str_(String k, String... v) { + Json_ary ary = factory.Ary(-1, -1); int len = v.length; for (int i = 0; i < len; i++) ary.Add(itm_str_(v[i])); @@ -85,7 +85,7 @@ class Json_parser_fxt { public void Test_parse_val0(String raw_str, Object expd) { byte[] raw = Json_parser_tst.Replace_apos(Bry_.new_u8(raw_str)); Json_doc doc = parser.Parse(raw); - Json_itm_kv kv = Json_itm_kv.cast_(doc.Root().Get_at(0)); // assume root has kv as first sub; EX: {"a":"b"} + Json_kv kv = Json_kv.cast_(doc.Root().Get_at(0)); // assume root has kv as first sub; EX: {"a":"b"} Object actl = kv.Val().Data(); // NOTE: Data_bry is escaped val; EX: a\"b has DataBry of a"b Tfds.Eq(expd, actl); } diff --git a/400_xowa/src/gplx/xowa/Xoa_app_.java b/400_xowa/src/gplx/xowa/Xoa_app_.java index c733fde24..a52b7744d 100644 --- a/400_xowa/src/gplx/xowa/Xoa_app_.java +++ b/400_xowa/src/gplx/xowa/Xoa_app_.java @@ -26,7 +26,7 @@ public class Xoa_app_ { boot_mgr.Run(args); } public static final String Name = "xowa"; - public static final String Version = "2.7.3.1"; + public static final String Version = "2.7.3.2"; public static String Build_date = "2012-12-30 00:00:00"; public static String Op_sys; public static String User_agent = ""; diff --git a/400_xowa/src/gplx/xowa/bldrs/langs/Json_itm_wkr__base.java b/400_xowa/src/gplx/xowa/bldrs/langs/Json_itm_wkr__base.java index 0bd9b7c57..4c1fff32c 100644 --- a/400_xowa/src/gplx/xowa/bldrs/langs/Json_itm_wkr__base.java +++ b/400_xowa/src/gplx/xowa/bldrs/langs/Json_itm_wkr__base.java @@ -33,7 +33,7 @@ abstract class Json_itm_wkr__base implements Json_itm_wkr { Json_itm itm = root.Get_at(i); switch (itm.Tid()) { case Json_itm_.Tid_kv: - Json_itm_kv kv = (Json_itm_kv)itm; + Json_kv kv = (Json_kv)itm; if (kv.Key().Data_eq(Name_metadata)) continue; // ignore @metadata node byte[] kv_key = kv.Key().Data_bry(); byte[] kv_val = kv.Val().Data_bry(); diff --git a/400_xowa/src/gplx/xowa/bldrs/syncs/Xob_sync_itm.java b/400_xowa/src/gplx/xowa/bldrs/syncs/Xob_sync_itm.java new file mode 100644 index 000000000..24d8fd33e --- /dev/null +++ b/400_xowa/src/gplx/xowa/bldrs/syncs/Xob_sync_itm.java @@ -0,0 +1,54 @@ +/* +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 . +*/ +package gplx.xowa.bldrs.syncs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; +import gplx.ios.*; +class Xob_sync_grp { + private final Ordered_hash itms = Ordered_hash_.new_(); + public Xob_sync_grp Ctor_itm(DateAdp upload_time, DateAdp related_time) { + this.upload_time = upload_time; this.related_time = related_time; + return this; + } + public DateAdp Upload_time() {return upload_time;} private DateAdp upload_time; + public DateAdp Related_time() {return related_time;} private DateAdp related_time; + public int Itms__len() {return itms.Count();} + public void Itms__add(Xob_sync_pkg file) {itms.Add(file.Path(), file);} + public Xob_sync_pkg Itms__get_at(int i) {return (Xob_sync_pkg)itms.Get_at(i);} +} +class Xob_sync_pkg extends Xob_sync_fil { private final Ordered_hash itms = Ordered_hash_.new_(); + public Xob_sync_pkg Ctor_itm(String url, byte zip_tid) { + this.url = url; this.zip_tid = zip_tid; + return this; + } + public String Url() {return url;} private String url; + public byte Zip_tid() {return zip_tid;} private byte zip_tid; + public int Itms__len() {return itms.Count();} + public void Itms__add(Xob_sync_fil file) {itms.Add(file.Path(), file);} + public Xob_sync_fil Itms__get_at(int i) {return (Xob_sync_fil)itms.Get_at(i);} +} +class Xob_sync_fil { + public Xob_sync_fil Ctor_file(String path, String name, int ext, long len, DateAdp modified, String hash) { + this.path = path; this.name = name; this.ext = ext; this.len = len; this.modified = modified; this.hash = hash; + return this; + } + public String Path() {return path;} private String path; + public String Name() {return name;} private String name; + public int Ext() {return ext;} private int ext; + public long Len() {return len;} private long len; + public DateAdp Modified() {return modified;} private DateAdp modified; + public String Hash() {return hash;} private String hash; +} diff --git a/400_xowa/src/gplx/xowa/html/Xoh_page_wtr_wkr.java b/400_xowa/src/gplx/xowa/html/Xoh_page_wtr_wkr.java index 0c8f23f84..c16cd2d91 100644 --- a/400_xowa/src/gplx/xowa/html/Xoh_page_wtr_wkr.java +++ b/400_xowa/src/gplx/xowa/html/Xoh_page_wtr_wkr.java @@ -118,10 +118,7 @@ public class Xoh_page_wtr_wkr implements Bry_fmtr_arg { return; } Xol_vnt_mgr vnt_mgr = wiki.Lang().Vnt_mgr(); - if (vnt_mgr.Enabled()) { // VNT -// vnt_mgr.Convert_ttl( - } - if (ns_id == Xow_ns_.Id_file) // if [[File]], add boilerplate header + if (ns_id == Xow_ns_.Id_file) // if [[File]], add boilerplate header app.Ns_file_page_mgr().Bld_html(wiki, ctx, page, bfr, page.Ttl(), wiki.Cfg_file_page(), page.File_queue()); gplx.xowa.html.tidy.Xoh_tidy_mgr tidy_mgr = app.Html_mgr().Tidy_mgr(); boolean tidy_enabled = tidy_mgr.Enabled(); @@ -146,6 +143,8 @@ public class Xoh_page_wtr_wkr implements Bry_fmtr_arg { else wiki.Html_mgr().Ctg_mgr().Bld(bfr, page, ctgs_len); } + if (vnt_mgr.Enabled()) // VNT + bfr.Add(vnt_mgr.Convert_text(wiki, bfr.Xto_bry_and_clear())); } private void Write_body_pre(Bry_bfr bfr, Xoae_app app, Xowe_wiki wiki, byte[] data_raw, Bry_bfr tmp_bfr) { Xoh_html_wtr_escaper.Escape(app.Parser_amp_mgr(), tmp_bfr, data_raw, 0, data_raw.length, false, false); diff --git a/400_xowa/src/gplx/xowa/html/bridges/dbuis/Dbui_cmd_mgr.java b/400_xowa/src/gplx/xowa/html/bridges/dbuis/Dbui_cmd_mgr.java index 05dfaa11c..d00c800b1 100644 --- a/400_xowa/src/gplx/xowa/html/bridges/dbuis/Dbui_cmd_mgr.java +++ b/400_xowa/src/gplx/xowa/html/bridges/dbuis/Dbui_cmd_mgr.java @@ -45,10 +45,10 @@ public class Dbui_cmd_mgr { Dbui_val_hash rv = new Dbui_val_hash(); int len = grp.Len(); for (int i = 0; i < len; ++i) { - Json_itm_kv kv = (Json_itm_kv)grp.Get_at(i); + Json_kv kv = (Json_kv)grp.Get_at(i); Json_nde nde = (Json_nde)kv.Val(); - Json_itm_kv key = (Json_itm_kv)nde.Get_itm(Arg_key); - Json_itm_kv val = (Json_itm_kv)nde.Get_itm(Arg_val); + Json_kv key = (Json_kv)nde.Get_itm(Arg_key); + Json_kv val = (Json_kv)nde.Get_itm(Arg_val); Dbui_val_itm fld = new Dbui_val_itm(val.Val().Data_bry(), Bry_.Empty); rv.Add(key.Val().Data_bry(), fld); } diff --git a/400_xowa/src/gplx/xowa/html/portal/Xow_portal_mgr.java b/400_xowa/src/gplx/xowa/html/portal/Xow_portal_mgr.java index 5faa8f966..9a1ad2951 100644 --- a/400_xowa/src/gplx/xowa/html/portal/Xow_portal_mgr.java +++ b/400_xowa/src/gplx/xowa/html/portal/Xow_portal_mgr.java @@ -71,7 +71,7 @@ public class Xow_portal_mgr implements GfoInvkAble { Bry_fmtr_arg vnt_menu = null; // Xol_vnt_mgr vnt_mgr = wiki.Lang().Vnt_mgr(); // VNT; DATE:2015-03-03 // if (vnt_mgr.Enabled()) { -// Xolg_vnt_grp_fmtr vnt_menu_fmtr = vnt_mgr.Vnt_mnu_fmtr(); +// Vnt_mnu_grp_fmtr vnt_menu_fmtr = vnt_mgr.Vnt_mnu_fmtr(); // vnt_menu_fmtr.Init(vnt_mgr.Vnt_grp(), ttl.Full_db(), vnt_mgr.Cur_vnt()); // vnt_menu = wiki.Lang().Vnt_mgr().Enabled() ? vnt_menu_fmtr : null; // } diff --git a/400_xowa/src/gplx/xowa/langs/vnts/Xolg_vnt_grp.java b/400_xowa/src/gplx/xowa/langs/vnts/Vnt_mnu_grp.java similarity index 86% rename from 400_xowa/src/gplx/xowa/langs/vnts/Xolg_vnt_grp.java rename to 400_xowa/src/gplx/xowa/langs/vnts/Vnt_mnu_grp.java index 561463ae6..4e59fe515 100644 --- a/400_xowa/src/gplx/xowa/langs/vnts/Xolg_vnt_grp.java +++ b/400_xowa/src/gplx/xowa/langs/vnts/Vnt_mnu_grp.java @@ -16,10 +16,10 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.langs.vnts; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*; -public class Xolg_vnt_grp { +public class Vnt_mnu_grp { private final List_adp list = List_adp_.new_(); - public byte[] Text() {return text;} public void Text_(byte[] v) {text = v;} private byte[] text; public int Len() {return list.Count();} - public Xolg_vnt_itm Get_at(int i) {return (Xolg_vnt_itm)list.Get_at(i);} - public void Add(Xolg_vnt_itm itm) {list.Add(itm);} + public Vnt_mnu_itm Get_at(int i) {return (Vnt_mnu_itm)list.Get_at(i);} + public void Add(Vnt_mnu_itm itm) {list.Add(itm);} + public byte[] Text() {return text;} public void Text_(byte[] v) {text = v;} private byte[] text; } diff --git a/400_xowa/src/gplx/xowa/langs/vnts/Xolg_vnt_grp_fmtr.java b/400_xowa/src/gplx/xowa/langs/vnts/Vnt_mnu_grp_fmtr.java similarity index 78% rename from 400_xowa/src/gplx/xowa/langs/vnts/Xolg_vnt_grp_fmtr.java rename to 400_xowa/src/gplx/xowa/langs/vnts/Vnt_mnu_grp_fmtr.java index 3fd0ee85a..943ab9f1a 100644 --- a/400_xowa/src/gplx/xowa/langs/vnts/Xolg_vnt_grp_fmtr.java +++ b/400_xowa/src/gplx/xowa/langs/vnts/Vnt_mnu_grp_fmtr.java @@ -16,10 +16,10 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.langs.vnts; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*; -public class Xolg_vnt_grp_fmtr implements Bry_fmtr_arg { - private Xolg_vnt_grp grp; - private Xolg_vnt_itm_fmtr itm_fmtr = new Xolg_vnt_itm_fmtr(); - public void Init(Xolg_vnt_grp grp, byte[] page_href, byte[] page_vnt) { +public class Vnt_mnu_grp_fmtr implements Bry_fmtr_arg { + private Vnt_mnu_grp grp; + private final Xolg_vnt_itm_fmtr itm_fmtr = new Xolg_vnt_itm_fmtr(); + public void Init(Vnt_mnu_grp grp, byte[] page_href, byte[] page_vnt) { this.grp = grp; itm_fmtr.Init(grp, page_href, page_vnt); } @@ -27,7 +27,8 @@ public class Xolg_vnt_grp_fmtr implements Bry_fmtr_arg { fmtr.Bld_bfr_many(bfr, grp.Text(), itm_fmtr); } private static final Bry_fmtr fmtr = Bry_fmtr.new_(String_.Concat_lines_nl_skip_last - ( "