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
- ( "