diff --git a/100_core/src/gplx/Array_.java b/100_core/src/gplx/Array_.java index 9a48331a2..732329566 100644 --- a/100_core/src/gplx/Array_.java +++ b/100_core/src/gplx/Array_.java @@ -22,15 +22,15 @@ public class Array_ { public static Object cast(Object o) {return (Object)o;} public static void Sort(Object[] obj) {List_adp_sorter.new_().Sort(obj, obj.length);} public static void Sort(Object[] obj, gplx.core.lists.ComparerAble comparer) {List_adp_sorter.new_().Sort(obj, obj.length, true, comparer);} - public static Object[] Insert(Object[] cur, Object[] add, int addPos) { - int curLen = cur.length, addLen = add.length; - Object[] rv = (Object[])Array_.Create(Array_.Component_type(cur), curLen + addLen); - for (int i = 0; i < addPos; i++) // copy old up to addPos + public static Object[] Insert(Object[] cur, Object[] add, int add_pos) { + int cur_len = cur.length, add_len = add.length; + Object[] rv = (Object[])Array_.Create(Array_.Component_type(cur), cur_len + add_len); + for (int i = 0; i < add_pos; i++) // copy old up to add_pos rv[i] = cur[i]; - for (int i = 0; i < addLen; i++) // insert add - rv[i + addPos] = add[i]; - for (int i = addPos; i < curLen; i++) // copy old after addPos - rv[i + addLen] = cur[i]; + for (int i = 0; i < add_len; i++) // insert add + rv[i + add_pos] = add[i]; + for (int i = add_pos; i < cur_len; i++) // copy old after add_pos + rv[i + add_len] = cur[i]; return rv; } public static Object[] Replace_insert(Object[] cur, Object[] add, int curReplacePos, int addInsertPos) { @@ -58,13 +58,13 @@ public class Array_ { } public static List_adp To_list(Object ary) { int aryLen = Array_.Len(ary); - List_adp rv = List_adp_.new_(); + List_adp rv = List_adp_.New(); for (int i = 0; i < aryLen; i++) rv.Add(Array_.Get_at(ary, i)); return rv; } public static String To_str_nested_obj(Object o) { - Bry_bfr bfr = Bry_bfr.new_(); + Bry_bfr bfr = Bry_bfr_.New(); To_str_nested_ary(bfr, (Object)o, 0); return bfr.To_str_and_clear(); } diff --git a/100_core/src/gplx/Bool_.java b/100_core/src/gplx/Bool_.java index 697749fc8..0272ca065 100644 --- a/100_core/src/gplx/Bool_.java +++ b/100_core/src/gplx/Bool_.java @@ -17,15 +17,15 @@ along with this program. If not, see . */ package gplx; import gplx.langs.gfs.*; -public class Bool_ implements GfoInvkAble { +public class Bool_ implements Gfo_invk { public static final String Cls_val_name = "boolean"; - public static final Class Cls_ref_type = Boolean.class; + public static final Class Cls_ref_type = Boolean.class; public static final boolean N = false , Y = true; public static final byte N_byte = 0 , Y_byte = 1 , __byte = 127; public static final int N_int = 0 , Y_int = 1 , __int = -1; - public static final byte[] N_bry = new byte[] {Byte_ascii.Ltr_n}, Y_bry = new byte[] {Byte_ascii.Ltr_y}; + public static final byte[] N_bry = new byte[] {Byte_ascii.Ltr_n}, Y_bry = new byte[] {Byte_ascii.Ltr_y}; public static final String True_str = "true", False_str = "false"; - public static final byte[] True_bry = Bry_.new_a7(True_str), False_bry = Bry_.new_a7(False_str); + public static final byte[] True_bry = Bry_.new_a7(True_str), False_bry = Bry_.new_a7(False_str); public static boolean cast(Object obj) {try {return (Boolean)obj;} catch (Exception e) {throw Err_.new_type_mismatch_w_exc(e, boolean.class, obj);}} public static boolean cast_or(Object obj, boolean v) {try {return (Boolean)obj;} catch (Exception e) {Err_.Noop(e); return v;}} public static boolean parse(String raw) { @@ -49,7 +49,7 @@ public class Bool_ implements GfoInvkAble { public static byte To_byte(boolean v) {return v ? Y_byte : N_byte;} public static String To_str_lower(boolean v) {return v ? True_str : False_str;} - public static final Bool_ Gfs = new Bool_(); + public static final Bool_ Gfs = new Bool_(); public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_to_str)) { boolean v = m.ReadBool(GfsCore_.Arg_primitive); @@ -59,6 +59,6 @@ public class Bool_ implements GfoInvkAble { else if (String_.Eq(fmt, "yes_no")) return v ? "yes" : "no"; else return v ? "true" : "false"; } - else return GfoInvkAble_.Rv_unhandled; - } public static final String Invk_to_str = "to_str"; + else return Gfo_invk_.Rv_unhandled; + } public static final String Invk_to_str = "to_str"; } diff --git a/100_core/src/gplx/Bry_.java b/100_core/src/gplx/Bry_.java index f3f1dadc5..0ae3a6a10 100644 --- a/100_core/src/gplx/Bry_.java +++ b/100_core/src/gplx/Bry_.java @@ -808,7 +808,7 @@ public class Bry_ { Bry_bfr bb = null; if (aryLen > 0 && ary[0] == Dlm_quote) { int pos = bgn + 1; // +1 to skip quote - if (make) bb = Bry_bfr.new_(16); + if (make) bb = Bry_bfr_.New(); while (true) { if (pos == aryLen) throw Err_.new_wo_type("endOfAry reached, but no quote found", "txt", String_.new_u8__by_len(ary, bgn, pos)); byte b = ary[pos]; @@ -915,7 +915,7 @@ public class Bry_ { } public static byte[] Replace(byte[] src, byte[] find, byte[] replace) {return Replace_between(src, find, null, replace);} public static byte[] Replace_between(byte[] src, byte[] bgn, byte[] end, byte[] replace) { - Bry_bfr bfr = Bry_bfr.new_(); + Bry_bfr bfr = Bry_bfr_.New(); boolean replace_all = end == null; int src_len = src.length, bgn_len = bgn.length, end_len = replace_all ? 0 : end.length; int pos = 0; diff --git a/100_core/src/gplx/Bry__tst.java b/100_core/src/gplx/Bry__tst.java index 934478846..79d381a15 100644 --- a/100_core/src/gplx/Bry__tst.java +++ b/100_core/src/gplx/Bry__tst.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx; import org.junit.*; import gplx.core.primitives.*; import gplx.core.brys.*; public class Bry__tst { - private final Bry__fxt fxt = new Bry__fxt(); + private final Bry__fxt fxt = new Bry__fxt(); @Test public void new_ascii_() { fxt.Test_new_a7("a" , Bry_.New_by_ints(97)); // one fxt.Test_new_a7("abc" , Bry_.New_by_ints(97, 98, 99)); // many @@ -107,7 +107,7 @@ public class Bry__tst { @Test public void ReadCsvStr() { tst_ReadCsvStr("a|" , "a"); tst_ReadCsvStr("|a|", 1 , "a"); - Int_obj_ref bgn = Int_obj_ref.zero_(); tst_ReadCsvStr("a|b|c|", bgn, "a"); tst_ReadCsvStr("a|b|c|", bgn, "b"); tst_ReadCsvStr("a|b|c|", bgn, "c"); + Int_obj_ref bgn = Int_obj_ref.New_zero(); tst_ReadCsvStr("a|b|c|", bgn, "a"); tst_ReadCsvStr("a|b|c|", bgn, "b"); tst_ReadCsvStr("a|b|c|", bgn, "c"); tst_ReadCsvStr("|", ""); tst_ReadCsvStr_err("a"); @@ -140,8 +140,8 @@ public class Bry__tst { void tst_XtoInt(String val, int expd) {tst_XtoInt(val, -1, expd);} void tst_XtoInt(String val, int or, int expd) {Tfds.Eq(expd, Bry_.To_int_or(Bry_.new_u8(val), or));} void tst_XtoIntBy4Bytes(int expd, byte... ary) {Tfds.Eq(expd, Bry_.To_int_by_a7(ary), "XtoInt"); Tfds.Eq_ary(ary, Bry_.new_by_int(expd), "XbyInt");} - void tst_ReadCsvStr(String raw, String expd) {tst_ReadCsvStr(raw, Int_obj_ref.zero_() , expd);} - void tst_ReadCsvStr(String raw, int bgn, String expd) {tst_ReadCsvStr(raw, Int_obj_ref.new_(bgn), expd);} + void tst_ReadCsvStr(String raw, String expd) {tst_ReadCsvStr(raw, Int_obj_ref.New_zero() , expd);} + void tst_ReadCsvStr(String raw, int bgn, String expd) {tst_ReadCsvStr(raw, Int_obj_ref.New(bgn), expd);} void tst_ReadCsvStr(String raw, Int_obj_ref bgnRef, String expd) { int bgn = bgnRef.Val(); boolean rawHasQuotes = String_.CharAt(raw, bgn) == '\''; @@ -155,16 +155,16 @@ public class Bry__tst { Tfds.Eq(bgn + 1 + String_.Len(actl), bgnRef.Val(), "pos"); // +1=lkp.Len } void tst_ReadCsvStr_err(String raw) { - try {Bry_.ReadCsvStr(Bry_.new_u8(String_.Replace(raw, "'", "\"")), Int_obj_ref.zero_(), (byte)'|');} + try {Bry_.ReadCsvStr(Bry_.new_u8(String_.Replace(raw, "'", "\"")), Int_obj_ref.New_zero(), (byte)'|');} catch (Exception e) {Err_.Noop(e); return;} Tfds.Fail_expdError(); } @Test public void ReadCsvDte() { tst_ReadCsvDte("20110801 221435.987"); - } void tst_ReadCsvDte(String raw) {Tfds.Eq_date(DateAdp_.parse_fmt(raw, Bry_.Fmt_csvDte), Bry_.ReadCsvDte(Bry_.new_u8(raw + "|"), Int_obj_ref.zero_(), (byte)'|'));} + } void tst_ReadCsvDte(String raw) {Tfds.Eq_date(DateAdp_.parse_fmt(raw, Bry_.Fmt_csvDte), Bry_.ReadCsvDte(Bry_.new_u8(raw + "|"), Int_obj_ref.New_zero(), (byte)'|'));} @Test public void ReadCsvInt() { tst_ReadCsvInt("1234567890"); - } void tst_ReadCsvInt(String raw) {Tfds.Eq(Int_.parse(raw), Bry_.ReadCsvInt(Bry_.new_u8(raw + "|"), Int_obj_ref.zero_(), (byte)'|'));} + } void tst_ReadCsvInt(String raw) {Tfds.Eq(Int_.parse(raw), Bry_.ReadCsvInt(Bry_.new_u8(raw + "|"), Int_obj_ref.New_zero(), (byte)'|'));} @Test public void Trim() { Trim_tst("a b c", 1, 4, "b"); Trim_tst("a c", 1, 3, ""); @@ -211,7 +211,7 @@ public class Bry__tst { tst_Replace_between("a[0b" , "[", "]", "0", "a[0b"); } public void tst_Replace_between(String src, String bgn, String end, String repl, String expd) {Tfds.Eq(expd, String_.new_a7(Bry_.Replace_between(Bry_.new_a7(src), Bry_.new_a7(bgn), Bry_.new_a7(end), Bry_.new_a7(repl))));} @Test public void Replace() { - Bry_bfr tmp_bfr = Bry_bfr.new_(); + Bry_bfr tmp_bfr = Bry_bfr_.New(); tst_Replace(tmp_bfr, "a0b" , "0", "00", "a00b"); // 1 -> 1 tst_Replace(tmp_bfr, "a0b0c" , "0", "00", "a00b00c"); // 1 -> 2 tst_Replace(tmp_bfr, "a00b00c" , "00", "0", "a0b0c"); // 2 -> 1 diff --git a/100_core/src/gplx/Bry_bfr.java b/100_core/src/gplx/Bry_bfr.java index d200d3742..253a1c93a 100644 --- a/100_core/src/gplx/Bry_bfr.java +++ b/100_core/src/gplx/Bry_bfr.java @@ -53,7 +53,7 @@ public class Bry_bfr { rv = To_bry(); this.Clear(); if (reset > 0) Reset_if_gt(reset); - synchronized (mkr_mgr) { + synchronized (mkr_mgr) { // SAME: Mkr_rls() mkr_mgr.Rls(mkr_idx); } mkr_mgr = null; @@ -61,7 +61,7 @@ public class Bry_bfr { } return rv; } - private Bry_bfr Reset_(int v) {reset = v; return this;} + public Bry_bfr Reset_(int v) {reset = v; return this;} public Bry_bfr Reset_if_gt(int limit) { if (bfr_max > limit) { this.bfr_max = limit; @@ -640,11 +640,8 @@ public class Bry_bfr { } return this; } - public static Bry_bfr new_() {return new Bry_bfr(16);} - public static Bry_bfr new_(int v) {return new Bry_bfr(v);} - public static Bry_bfr reset_(int v) {return new Bry_bfr(16).Reset_(v);} // PERF: set initial size to 16, not reset val; allows for faster "startup"; DATE:2014-06-14 protected Bry_bfr() {} - Bry_bfr(int bfr_max) { + public Bry_bfr(int bfr_max) { Init(bfr_max); } protected void Init(int bfr_max) { diff --git a/100_core/src/gplx/Bry_bfr_.java b/100_core/src/gplx/Bry_bfr_.java index 91ba57b20..45904aad6 100644 --- a/100_core/src/gplx/Bry_bfr_.java +++ b/100_core/src/gplx/Bry_bfr_.java @@ -18,7 +18,11 @@ along with this program. If not, see . package gplx; import gplx.core.brys.*; public class Bry_bfr_ { - public static final Bry_bfr[] Ary_empty = new Bry_bfr[0]; + public static Bry_bfr New() {return new Bry_bfr(16);} + public static Bry_bfr New_w_size(int v) {return new Bry_bfr(v);} + public static Bry_bfr Reset(int v) {return new Bry_bfr(16).Reset_(v);} // PERF: set initial size to 16, not reset val; allows for faster "startup"; DATE:2014-06-14 + + public static final Bry_bfr[] Ary_empty = new Bry_bfr[0]; private static Bry_bfr_mkr_mgr dflt; public static Bry_bfr Get() {if (dflt == null) dflt = new Bry_bfr_mkr_mgr(Bry_bfr_mkr.Tid_b128, 128); return dflt.Get();} // NOTE: lazy else "Object synchronization" error; DATE:2015-11-18 public static void Assert_at_end(Bry_bfr bfr, byte assert_byte) { diff --git a/100_core/src/gplx/Bry_bfr_tst.java b/100_core/src/gplx/Bry_bfr_tst.java index 7089231c2..e3a7b474c 100644 --- a/100_core/src/gplx/Bry_bfr_tst.java +++ b/100_core/src/gplx/Bry_bfr_tst.java @@ -18,20 +18,20 @@ along with this program. If not, see . package gplx; import org.junit.*; public class Bry_bfr_tst { - private Bry_bfr bb = Bry_bfr.new_(16); + private Bry_bfr bb = Bry_bfr_.New(); @Before public void setup() {bb.Clear();} private ByteAryBfr_fxt fxt = new ByteAryBfr_fxt(); @Test public void AddByte() { - bb = Bry_bfr.new_(2); // NOTE: make sure auto-expands + bb = Bry_bfr_.New_w_size(2); // NOTE: make sure auto-expands tst_AddByte("a", "a", 2); tst_AddByte("b", "ab", 2); tst_AddByte("c", "abc", 4); } @Test public void AddAry() { // NOTE: make sure auto-expands - bb = Bry_bfr.new_(2); + bb = Bry_bfr_.New_w_size(2); tst_AddByte("abcd", "abcd", 12); } @Test public void Add_byte_repeat() { // NOTE: make sure auto-expands - bb = Bry_bfr.new_(2); + bb = Bry_bfr_.New_w_size(2); tst_Add_byte_repeat(Byte_ascii.Space, 12, String_.Repeat(" ", 12)); } void tst_Add_byte_repeat(byte b, int len, String expd) {Tfds.Eq(expd, bb.Add_byte_repeat(b, len).To_str_and_clear());} void tst_AddByte(String s, String expdStr, int expdLen) { @@ -119,7 +119,7 @@ public class Bry_bfr_tst { // tst_InsertAt_str("ab", 0, "cdefghij", "cdefghijab"); // } // void tst_InsertAt_str(String orig, int insertAt, String insertStr, String expd) { -// bb = Bry_bfr.new_(16); +// bb = Bry_bfr_.New(16); // bb.Add_str(orig); // bb.InsertAt_str(insertAt, insertStr); // String actl = bb.To_str_and_clear(); @@ -166,7 +166,7 @@ public class Bry_bfr_tst { tst_Add_bfr_trimEnd_and_clear("a ", "a"); } void tst_Add_bfr_trimEnd_and_clear(String raw, String expd) { - Bry_bfr tmp = Bry_bfr.new_().Add_str_u8(raw); + Bry_bfr tmp = Bry_bfr_.New().Add_str_u8(raw); Tfds.Eq(expd, bb.Add_bfr_trim_and_clear(tmp, false, true).To_str_and_clear()); } @Test public void Add_bfr_trimAll_and_clear() { @@ -176,7 +176,7 @@ public class Bry_bfr_tst { tst_Add_bfr_trimAll_and_clear("", ""); } void tst_Add_bfr_trimAll_and_clear(String raw, String expd) { - Bry_bfr tmp = Bry_bfr.new_().Add_str_u8(raw); + Bry_bfr tmp = Bry_bfr_.New().Add_str_u8(raw); Tfds.Eq(expd, bb.Add_bfr_trim_and_clear(tmp, true, true).To_str_and_clear()); } @Test public void Add_int_pad_bgn() { @@ -216,7 +216,7 @@ public class Bry_bfr_tst { } } class ByteAryBfr_fxt { - private final Bry_bfr bfr = Bry_bfr.reset_(16); + private final Bry_bfr bfr = Bry_bfr_.Reset(16); public void Clear() { bfr.ClearAndReset(); } diff --git a/100_core/src/gplx/Bry_split_.java b/100_core/src/gplx/Bry_split_.java index 95cecd2d5..c5e629af0 100644 --- a/100_core/src/gplx/Bry_split_.java +++ b/100_core/src/gplx/Bry_split_.java @@ -19,11 +19,12 @@ package gplx; import gplx.core.brys.*; public class Bry_split_ { private static final Object thread_lock = new Object(); - public static byte[][] Split(byte[] src, byte dlm) {return Split(src, dlm, false);} - public static byte[][] Split(byte[] src, byte dlm, boolean trim) { + public static byte[][] Split(byte[] src, byte dlm) {return Split(src, dlm, false);} + public static byte[][] Split(byte[] src, byte dlm, boolean trim) {return src == null ? Bry_.Ary_empty : Split(src, 0, src.length, dlm, trim);} + public static byte[][] Split(byte[] src, int bgn, int end, byte dlm, boolean trim) { synchronized (thread_lock) { Bry_split_wkr__to_ary wkr = Bry_split_wkr__to_ary.Instance; - Split(src, 0, src == null ? 0 : src.length, dlm, trim, wkr); + Split(src, bgn, end, dlm, trim, wkr); return wkr.To_ary(); } } @@ -76,7 +77,7 @@ public class Bry_split_ { int src_len = src.length; if (src_len == 0) return Bry_.Ary_empty; int cur_pos = src_bgn, dlm_len = dlm.length; - List_adp rv = List_adp_.new_(); + List_adp rv = List_adp_.New(); while (true) { int find_pos = Bry_find_.Find_fwd(src, dlm, cur_pos); if (find_pos == Bry_find_.Not_found) { @@ -92,7 +93,7 @@ public class Bry_split_ { public static byte[][] Split_lines(byte[] src) { if (Bry_.Len_eq_0(src)) return Bry_.Ary_empty; int src_len = src.length, src_pos = 0, fld_bgn = 0; - List_adp rv = List_adp_.new_(); + List_adp rv = List_adp_.New(); while (true) { boolean last = src_pos == src_len; byte b = last ? Byte_ascii.Nl : src[src_pos]; @@ -118,7 +119,7 @@ public class Bry_split_ { public static final int Rv__ok = 0, Rv__extend = 1, Rv__cancel = 2; } class Bry_split_wkr__to_ary implements gplx.core.brys.Bry_split_wkr { - private final List_adp list = List_adp_.new_(); + private final List_adp list = List_adp_.New(); public int Split(byte[] src, int itm_bgn, int itm_end) { synchronized (list) { byte[] bry = itm_end == itm_bgn ? Bry_.Empty : Bry_.Mid(src, itm_bgn, itm_end); diff --git a/100_core/src/gplx/Bry_split__tst.java b/100_core/src/gplx/Bry_split__tst.java index edcb1b79b..68d677da8 100644 --- a/100_core/src/gplx/Bry_split__tst.java +++ b/100_core/src/gplx/Bry_split__tst.java @@ -57,7 +57,7 @@ class Bry_split__fxt { } } class Bry_split_wkr__example implements gplx.core.brys.Bry_split_wkr { - private final List_adp list = List_adp_.new_(); + private final List_adp list = List_adp_.New(); public int Split(byte[] src, int itm_bgn, int itm_end) { byte[] bry = itm_end == itm_bgn ? Bry_.Empty : Bry_.Mid(src, itm_bgn, itm_end); if (Bry_.Eq(bry, Bry_.new_a7("extend"))) return Bry_split_.Rv__extend; diff --git a/100_core/src/gplx/Byte_.java b/100_core/src/gplx/Byte_.java index 96746c085..f521f3d8a 100644 --- a/100_core/src/gplx/Byte_.java +++ b/100_core/src/gplx/Byte_.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx; public class Byte_ { public static final String Cls_val_name = "byte"; - public static final Class Cls_ref_type = Byte.class; + public static final Class Cls_ref_type = Byte.class; public static final byte Zero = 0 , Min_value = Byte.MIN_VALUE @@ -36,6 +36,7 @@ public class Byte_ { public static byte By_int(int v) {return v > 127 ? (byte)(v - 256) : (byte)v;} // PERF?: (byte)(v & 0xff) public static int To_int(byte v) {return v < 0 ? (int)v + 256 : v;} public static String To_str(byte v) {return new Byte(v).toString();} + public static byte[] To_bry(byte v) {return new byte[] {v};} public static boolean In(byte v, byte... ary) { for (byte itm : ary) if (v == itm) return true; diff --git a/100_core/src/gplx/DateAdp.java b/100_core/src/gplx/DateAdp.java index 3d7339420..3c934f8c2 100644 --- a/100_core/src/gplx/DateAdp.java +++ b/100_core/src/gplx/DateAdp.java @@ -20,7 +20,7 @@ import java.util.Calendar; import java.util.GregorianCalendar; import java.util.TimeZone; import java.text.SimpleDateFormat; -public class DateAdp implements CompareAble, GfoInvkAble { +public class DateAdp implements CompareAble, Gfo_invk { public int compareTo(Object obj) {DateAdp comp = (DateAdp)obj; return under.compareTo(comp.under);} @Override public String toString() {return XtoStr_gplx_long();} public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { @@ -30,7 +30,7 @@ public class DateAdp implements CompareAble, GfoInvkAble { if (ctx.Deny()) return this; return this.Add_day(days); } - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; } public static final String Invk_XtoStr_fmt = "XtoStr_fmt", Invk_AddDays = "Add_day"; public int Segment(int segmentIdx) { switch (segmentIdx) { diff --git a/100_core/src/gplx/DateAdp_.java b/100_core/src/gplx/DateAdp_.java index 27991d477..4c5c77ad7 100644 --- a/100_core/src/gplx/DateAdp_.java +++ b/100_core/src/gplx/DateAdp_.java @@ -25,15 +25,15 @@ import java.util.GregorianCalendar; import java.util.Locale; import java.util.TimeZone; import gplx.core.times.*; -public class DateAdp_ implements GfoInvkAble { +public class DateAdp_ implements Gfo_invk { public static final String Cls_ref_name = "Date"; - public static final Class Cls_ref_type = DateAdp.class; + public static final Class Cls_ref_type = DateAdp.class; public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_Now)) return Now(); - else return GfoInvkAble_.Rv_unhandled; - } public static final String Invk_Now = "Now"; - public static final DateAdp MinValue = new DateAdp( 1, 1, 1, 0, 0, 0, 0); - public static final DateAdp MaxValue = new DateAdp(9999, 12, 31, 23, 59, 59, 999); + else return Gfo_invk_.Rv_unhandled; + } public static final String Invk_Now = "Now"; + public static final DateAdp MinValue = new DateAdp( 1, 1, 1, 0, 0, 0, 0); + public static final DateAdp MaxValue = new DateAdp(9999, 12, 31, 23, 59, 59, 999); public static DateAdp Now() {return Tfds.Now_enabled() ? Tfds.Now() : new DateAdp(new GregorianCalendar());} public static DateAdp new_(int year, int month, int day, int hour, int minute, int second, int frac) {return new DateAdp(year, month, day, hour, minute, second, frac);} public static DateAdp seg_(int[] ary) { @@ -66,7 +66,7 @@ public class DateAdp_ implements GfoInvkAble { } static DateAdp_parser date_parser = DateAdp_parser.new_(); public static DateAdp dateTime_(GregorianCalendar v) {return new DateAdp(v);} public static DateAdp dateTime_obj_(Object v) {return new DateAdp((GregorianCalendar)v);} - public static final DateAdp_ Gfs = new DateAdp_(); + public static final DateAdp_ Gfs = new DateAdp_(); public static int DaysInMonth(DateAdp date) { int rv = DaysInMonth_ary[date.Month() - Int_.Base1]; @@ -80,6 +80,10 @@ public class DateAdp_ implements GfoInvkAble { else return true; } public static DateAdp unixtime_utc_seconds_(long v) {return unixtime_utc_ms_(v * 1000);} + public static DateAdp parse_fmt_or(String raw, String fmt, DateAdp or) { + try {return parse_fmt(raw, fmt);} + catch (Exception e) {Err_.Noop(e); return or;} + } public static DateAdp db_(Object v) { Timestamp ts = (Timestamp)v; Calendar gc = Calendar.getInstance(); diff --git a/100_core/src/gplx/GfoEvMgr_.java b/100_core/src/gplx/GfoEvMgr_.java deleted file mode 100644 index 9b2681643..000000000 --- a/100_core/src/gplx/GfoEvMgr_.java +++ /dev/null @@ -1,45 +0,0 @@ -/* -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; -public class GfoEvMgr_ { - public static void Sub(GfoEvMgrOwner pub, String pubEvt, GfoEvObj sub, String subEvt) {pub.EvMgr().AddSub(pub, pubEvt, sub, subEvt);} - public static void SubSame(GfoEvMgrOwner pub, String evt, GfoEvObj sub) {pub.EvMgr().AddSub(pub, evt, sub, evt);} - public static void SubSame_many(GfoEvMgrOwner pub, GfoEvObj sub, String... evts) { - int len = evts.length; - for (int i = 0; i < len; i++) { - String evt = evts[i]; - pub.EvMgr().AddSub(pub, evt, sub, evt); - } - } - public static void Pub(GfoEvMgrOwner pub, String pubEvt) {pub.EvMgr().Pub(GfsCtx.new_(), pubEvt, GfoMsg_.new_cast_(pubEvt));} - public static void PubObj(GfoEvMgrOwner pub, String pubEvt, String key, Object v) {pub.EvMgr().Pub(GfsCtx.new_(), pubEvt, msg_(pubEvt, Keyval_.new_(key, v)));} - public static void PubVal(GfoEvMgrOwner pub, String pubEvt, Object v) {pub.EvMgr().Pub(GfsCtx.new_(), pubEvt, msg_(pubEvt, Keyval_.new_("v", v)));} - public static void PubVals(GfoEvMgrOwner pub, String pubEvt, Keyval... ary) {pub.EvMgr().Pub(GfsCtx.new_(), pubEvt, msg_(pubEvt, ary));} - public static void PubMsg(GfoEvMgrOwner pub, GfsCtx ctx, String pubEvt, GfoMsg m) {pub.EvMgr().Pub(ctx, pubEvt, m);} - public static void Lnk(GfoEvMgrOwner pub, GfoEvMgrOwner sub) {sub.EvMgr().Lnk(pub);} - public static void RlsPub(GfoEvMgrOwner pub) {pub.EvMgr().RlsPub(pub);} - public static void RlsSub(GfoEvMgrOwner sub) {sub.EvMgr().RlsSub(sub);} - static GfoMsg msg_(String evt, Keyval... kvAry) { - GfoMsg m = GfoMsg_.new_cast_(evt); - for (int i = 0; i < kvAry.length; i++) { - Keyval kv = kvAry[i]; - m.Add(kv.Key(), kv.Val()); - } - return m; - } -} diff --git a/100_core/src/gplx/GfoInvkAbleCmd.java b/100_core/src/gplx/GfoInvkAbleCmd.java deleted file mode 100644 index 313e495be..000000000 --- a/100_core/src/gplx/GfoInvkAbleCmd.java +++ /dev/null @@ -1,35 +0,0 @@ -/* -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; -public class GfoInvkAbleCmd { - private GfoMsg m; - public GfoInvkAble InvkAble() {return invkAble;} private GfoInvkAble invkAble; - public String Cmd() {return cmd;} private String cmd; - public Object Arg() {return arg;} private Object arg; - public Object Invk() { - return invkAble.Invk(GfsCtx.Instance, 0, cmd, m); - } - public static final GfoInvkAbleCmd Null = new GfoInvkAbleCmd(); - public static GfoInvkAbleCmd new_(GfoInvkAble invkAble, String cmd) {return arg_(invkAble, cmd, null);} - public static GfoInvkAbleCmd arg_(GfoInvkAble invkAble, String cmd, Object arg) { - GfoInvkAbleCmd rv = new GfoInvkAbleCmd(); - rv.invkAble = invkAble; rv.cmd = cmd; rv.arg = arg; - rv.m = (arg == null) ? GfoMsg_.Null : GfoMsg_.new_parse_(cmd).Add("v", arg); - return rv; - } GfoInvkAbleCmd() {} -} diff --git a/100_core/src/gplx/GfoInvkAble_.java b/100_core/src/gplx/GfoInvkAble_.java deleted file mode 100644 index cd32230d4..000000000 --- a/100_core/src/gplx/GfoInvkAble_.java +++ /dev/null @@ -1,40 +0,0 @@ -/* -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; -import gplx.core.primitives.*; -public class GfoInvkAble_ { - public static GfoInvkAble as_(Object obj) {return obj instanceof GfoInvkAble ? (GfoInvkAble)obj : null;} - public static GfoInvkAble cast(Object obj) {try {return (GfoInvkAble)obj;} catch(Exception exc) {throw Err_.new_type_mismatch_w_exc(exc, GfoInvkAble.class, obj);}} - public static final String_obj_val Rv_unhandled = String_obj_val.new_("Unhandled"), Rv_handled = String_obj_val.new_("Handled"), Rv_host = String_obj_val.new_("Host") - , Rv_cancel = String_obj_val.new_("Cancel"), Rv_error = String_obj_val.new_("Error"); - - public static Object InvkCmd(GfoInvkAble invk, String k) {return InvkCmd_msg(invk, k, GfoMsg_.Null);} - public static Object InvkCmd_val(GfoInvkAble invk, String k, Object v) {return InvkCmd_msg(invk, k, GfoMsg_.new_cast_(k).Add("v", v));} - public static Object InvkCmd_msg(GfoInvkAble invk, String k, GfoMsg m) { - Object rv = invk.Invk(GfsCtx.Instance, 0, k, m); - if (rv == GfoInvkAble_.Rv_unhandled) throw Err_.new_wo_type("invkable did not handle message", "key", k); - return rv; - } - public static final GfoInvkAble Null = new GfoInvkAble_null(); - public static Object Invk(GfoInvkAble itm) {return itm.Invk(null, -1, null, null);} - public static Object Invk(GfoInvkAble itm, String key) {return itm.Invk(null, -1, key , null);} - public static final String Mutator_suffix = "_"; -} -class GfoInvkAble_null implements GfoInvkAble { - public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {return this;} -} diff --git a/100_core/src/gplx/GfoMsg_.java b/100_core/src/gplx/GfoMsg_.java index 03f3825bd..8076ec244 100644 --- a/100_core/src/gplx/GfoMsg_.java +++ b/100_core/src/gplx/GfoMsg_.java @@ -19,7 +19,7 @@ package gplx; import gplx.core.primitives.*; import gplx.core.strings.*; import gplx.core.brys.*; import gplx.core.interfaces.*; public class GfoMsg_ { public static GfoMsg as_(Object obj) {return obj instanceof GfoMsg ? (GfoMsg)obj : null;} - public static final GfoMsg Null = new GfoMsg_base().ctor_("<>", false); + public static final GfoMsg Null = new GfoMsg_base().ctor_("<>", false); public static GfoMsg new_parse_(String key) {return new GfoMsg_base().ctor_(key, true);} public static GfoMsg new_cast_(String key) {return new GfoMsg_base().ctor_(key, false);} public static GfoMsg srl_(GfoMsg owner, String key) { @@ -46,7 +46,7 @@ public class GfoMsg_ { } public static GfoMsg chain_(GfoMsg owner, String key) { GfoMsg sub = owner; - List_adp list = List_adp_.new_(); + List_adp list = List_adp_.New(); list.Add(sub.Key()); while (sub != null) { if (sub.Subs_count() == 0) break; @@ -77,14 +77,14 @@ public class GfoMsg_ { } class GfoMsg_wtr extends GfoMsg_base { @Override protected Object ReadOr(String k, Object defaultOr) { - if (args == null) args = List_adp_.new_(); + if (args == null) args = List_adp_.New(); args.Add(Keyval_.new_(k, null)); return defaultOr; } } class GfoMsg_rdr extends GfoMsg_base { @Override protected Object ReadOr(String k, Object defaultOr) { - if (args == null) args = List_adp_.new_(); + if (args == null) args = List_adp_.New(); args.Add(Keyval_.new_(k, defaultOr)); return defaultOr; } @@ -93,7 +93,7 @@ class GfoMsg_base implements GfoMsg { public String Key() {return key;} private String key; public int Subs_count() {return subs == null ? 0 : subs.Count();} public GfoMsg Subs_getAt(int i) {return subs == null ? null : (GfoMsg)subs.Get_at(i);} - public GfoMsg Subs_add(GfoMsg m) {if (subs == null) subs = List_adp_.new_(); subs.Add(m); return this;} + public GfoMsg Subs_add(GfoMsg m) {if (subs == null) subs = List_adp_.New(); subs.Add(m); return this;} public GfoMsg Subs_(GfoMsg... ary) {for (GfoMsg m : ary) Subs_add(m); return this;} public int Args_count() {return args == null ? 0 : args.Count();} public void Args_reset() { @@ -115,7 +115,7 @@ class GfoMsg_base implements GfoMsg { } public Keyval Args_getAt(int i) {return args == null ? null : (Keyval)args.Get_at(i);} public GfoMsg Args_ovr(String k, Object v) { - if (args == null) args = List_adp_.new_(); + if (args == null) args = List_adp_.New(); for (int i = 0; i < args.Count(); i++) { Keyval kv = (Keyval)args.Get_at(i); if (String_.Eq(k, kv.Key())) { @@ -128,7 +128,7 @@ class GfoMsg_base implements GfoMsg { } public GfoMsg Parse_(boolean v) {parse = v; return this;} public GfoMsg Add(String k, Object v) { - if (args == null) args = List_adp_.new_(); + if (args == null) args = List_adp_.New(); args.Add(Keyval_.new_(k, v)); return this; } @@ -204,12 +204,12 @@ class GfoMsg_base implements GfoMsg { public GfoMsg CloneNew() { GfoMsg_base rv = new GfoMsg_base().ctor_(key, parse); if (args != null) { - rv.args = List_adp_.new_(); + rv.args = List_adp_.New(); for (int i = 0; i < args.Count(); i++) rv.args.Add(args.Get_at(i)); } if (subs != null) { - rv.subs = List_adp_.new_(); + rv.subs = List_adp_.New(); for (int i = 0; i < args.Count(); i++) { GfoMsg sub = (GfoMsg)args.Get_at(i); rv.subs.Add(sub.CloneNew()); // NOTE: recursion @@ -250,7 +250,7 @@ class GfoMsg_base implements GfoMsg { public GfoMsg_base ctor_(String key, boolean parse) {this.key = key; this.parse = parse; return this;} private boolean parse; @gplx.Internal protected GfoMsg_base(){} - static final String_obj_val Nil = String_obj_val.new_("<>"); + static final String_obj_val Nil = String_obj_val.new_("<>"); } interface XtoStrWkr { String To_str(Object o); diff --git a/100_core/src/gplx/GfoMsg_tst.java b/100_core/src/gplx/GfoMsg_tst.java index 4b77413e9..964c9f0c8 100644 --- a/100_core/src/gplx/GfoMsg_tst.java +++ b/100_core/src/gplx/GfoMsg_tst.java @@ -27,14 +27,14 @@ public class GfoMsg_tst { } @Test public void Write() { Mok mok = new Mok(); - tst_Msg(GfoInvkXtoStr.WriteMsg(mok, Mok.Invk_Cmd0, true, 1, "a"), "Mok.Cmd0:bool0='y' int0='1' str0='a';"); + tst_Msg(Gfo_invk_to_str.WriteMsg(mok, Mok.Invk_Cmd0, true, 1, "a"), "Mok.Cmd0:bool0='y' int0='1' str0='a';"); mok.Int0 = 2; mok.Bool0 = true; mok.Str0 = "b"; - tst_Msg(GfoInvkXtoStr.ReadMsg(mok, Mok.Invk_Cmd0), "Mok.Cmd0:bool0='y' int0='2' str0='b';"); + tst_Msg(Gfo_invk_to_str.ReadMsg(mok, Mok.Invk_Cmd0), "Mok.Cmd0:bool0='y' int0='2' str0='b';"); } void tst_Msg(GfoMsg m, String expd) {Tfds.Eq(expd, m.To_str());} - class Mok implements GfoInvkAble { + class Mok implements Gfo_invk { public boolean Bool0; public int Int0; public String Str0; @@ -46,6 +46,6 @@ public class GfoMsg_tst { if (ctx.Deny()) return this; } return this; - } public static final String Invk_Cmd0 = "Cmd0"; + } public static final String Invk_Cmd0 = "Cmd0"; } } diff --git a/100_core/src/gplx/GfoTemplateFactory.java b/100_core/src/gplx/GfoTemplateFactory.java index 8b1db8fda..3e94f5027 100644 --- a/100_core/src/gplx/GfoTemplateFactory.java +++ b/100_core/src/gplx/GfoTemplateFactory.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx; -public class GfoTemplateFactory implements GfoInvkAble { +public class GfoTemplateFactory implements Gfo_invk { public void Reg(String key, GfoTemplate template) {hash.Add(key, template);} public Object Make(String key) { GfoTemplate template = (GfoTemplate)hash.Get_by(key); @@ -25,8 +25,8 @@ public class GfoTemplateFactory implements GfoInvkAble { public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { ctx.Match(k, k); Object o = hash.Get_by(k); - return o == null ? GfoInvkAble_.Rv_unhandled : o; + return o == null ? Gfo_invk_.Rv_unhandled : o; } - public static final GfoTemplateFactory Instance = new GfoTemplateFactory(); GfoTemplateFactory() {} - Hash_adp hash = Hash_adp_.new_(); + public static final GfoTemplateFactory Instance = new GfoTemplateFactory(); GfoTemplateFactory() {} + Hash_adp hash = Hash_adp_.New(); } diff --git a/100_core/src/gplx/GfoEvObj.java b/100_core/src/gplx/Gfo_evt_itm.java similarity index 91% rename from 100_core/src/gplx/GfoEvObj.java rename to 100_core/src/gplx/Gfo_evt_itm.java index 2efe9ba3d..f1152fb11 100644 --- a/100_core/src/gplx/GfoEvObj.java +++ b/100_core/src/gplx/Gfo_evt_itm.java @@ -16,4 +16,4 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx; -public interface GfoEvObj extends GfoInvkAble, GfoEvMgrOwner {} +public interface Gfo_evt_itm extends Gfo_invk, Gfo_evt_mgr_owner {} diff --git a/100_core/src/gplx/GfoEvMgr.java b/100_core/src/gplx/Gfo_evt_mgr.java similarity index 69% rename from 100_core/src/gplx/GfoEvMgr.java rename to 100_core/src/gplx/Gfo_evt_mgr.java index ed2b67cc4..05c6f767c 100644 --- a/100_core/src/gplx/GfoEvMgr.java +++ b/100_core/src/gplx/Gfo_evt_mgr.java @@ -17,16 +17,18 @@ along with this program. If not, see . */ package gplx; import gplx.core.lists.*; -public class GfoEvMgr { - @gplx.Internal protected void AddSub(GfoEvMgrOwner pub, String pubEvt, GfoEvObj sub, String subPrc) { +public class Gfo_evt_mgr { + private final Gfo_evt_mgr_owner sender; private Ordered_hash subsRegy, pubsRegy; + public Gfo_evt_mgr(Gfo_evt_mgr_owner sender) {this.sender = sender;} + @gplx.Internal protected void AddSub(Gfo_evt_mgr_owner pub, String pubEvt, Gfo_evt_itm sub, String subPrc) { GfoEvLnk lnk = new GfoEvLnk(pub, pubEvt, sub, subPrc); if (subsRegy == null) subsRegy = Ordered_hash_.New(); AddInList(subsRegy, pubEvt, lnk); - sub.EvMgr().AddPub(pubEvt, lnk); + sub.Evt_mgr().AddPub(pubEvt, lnk); } - @gplx.Internal protected void Lnk(GfoEvMgrOwner pub) { - if (pub.EvMgr().lnks == null) pub.EvMgr().lnks = List_adp_.new_(); - pub.EvMgr().lnks.Add(this); + @gplx.Internal protected void Lnk(Gfo_evt_mgr_owner pub) { + if (pub.Evt_mgr().lnks == null) pub.Evt_mgr().lnks = List_adp_.New(); + pub.Evt_mgr().lnks.Add(this); } List_adp lnks; void AddInList(Ordered_hash regy, String key, GfoEvLnk lnk) { GfoEvLnkList list = (GfoEvLnkList)regy.Get_by(key); @@ -51,22 +53,22 @@ public class GfoEvMgr { } if (lnks != null) { for (int i = 0; i < lnks.Count(); i++) { - GfoEvMgr lnk = (GfoEvMgr)lnks.Get_at(i); + Gfo_evt_mgr lnk = (Gfo_evt_mgr)lnks.Get_at(i); lnk.Pub(ctx, evt, m); } } } - @gplx.Internal protected void RlsSub(GfoEvMgrOwner eobj) { + @gplx.Internal protected void RlsSub(Gfo_evt_mgr_owner eobj) { RlsRegyObj(pubsRegy, eobj, true); RlsRegyObj(subsRegy, eobj, false); } - @gplx.Internal protected void RlsPub(GfoEvMgrOwner eobj) { + @gplx.Internal protected void RlsPub(Gfo_evt_mgr_owner eobj) { RlsRegyObj(pubsRegy, eobj, true); RlsRegyObj(subsRegy, eobj, false); } - @gplx.Internal protected void RlsRegyObj(Ordered_hash regy, GfoEvMgrOwner eobj, boolean pub) { + @gplx.Internal protected void RlsRegyObj(Ordered_hash regy, Gfo_evt_mgr_owner eobj, boolean pub) { if (regy == null) return; - List_adp delList = List_adp_.new_(); + List_adp delList = List_adp_.New(); for (int i = 0; i < regy.Count(); i++) { GfoEvLnkList pubsList = (GfoEvLnkList)regy.Get_at(i); delList.Clear(); @@ -76,15 +78,15 @@ public class GfoEvMgr { } for (int j = 0; j < delList.Count(); j++) { GfoEvLnk del = (GfoEvLnk)delList.Get_at(j); - del.End(pub).EvMgr().RlsLnk(!pub, pubsList.Key(), del.End(!pub)); + del.End(pub).Evt_mgr().RlsLnk(!pub, pubsList.Key(), del.End(!pub)); pubsList.Del(del); } } } - @gplx.Internal protected void RlsLnk(boolean pubEnd, String key, GfoEvMgrOwner endObj) { + @gplx.Internal protected void RlsLnk(boolean pubEnd, String key, Gfo_evt_mgr_owner endObj) { Ordered_hash regy = pubEnd ? pubsRegy : subsRegy; GfoEvLnkList list = (GfoEvLnkList)regy.Get_by(key); - List_adp delList = List_adp_.new_(); + List_adp delList = List_adp_.New(); for (int i = 0; i < list.Count(); i++) { GfoEvLnk lnk = (GfoEvLnk)list.Get_at(i); if (lnk.End(pubEnd) == endObj) delList.Add(lnk); @@ -95,13 +97,6 @@ public class GfoEvMgr { } delList.Clear(); } - - Object sender; Ordered_hash subsRegy, pubsRegy; - public static GfoEvMgr new_(Object sender) { - GfoEvMgr rv = new GfoEvMgr(); - rv.sender = sender; - return rv; - } GfoEvMgr() {} } class GfoEvLnkList { public String Key() {return key;} private String key; @@ -110,20 +105,20 @@ class GfoEvLnkList { public void Del(GfoEvLnk lnk) {list.Del(lnk);} public GfoEvLnk Get_at(int i) {return (GfoEvLnk)list.Get_at(i);} public GfoEvLnkList(String key) {this.key = key;} - List_adp list = List_adp_.new_(); + List_adp list = List_adp_.New(); } class GfoEvLnk { - public GfoEvMgrOwner Pub() {return pub;} GfoEvMgrOwner pub; + public Gfo_evt_mgr_owner Pub() {return pub;} Gfo_evt_mgr_owner pub; public String PubEvt() {return pubEvt;} private String pubEvt; - public GfoEvObj Sub() {return sub;} GfoEvObj sub; + public Gfo_evt_itm Sub() {return sub;} Gfo_evt_itm sub; public String SubPrc() {return subPrc;} private String subPrc; - public GfoEvMgrOwner End(boolean pubEnd) {return pubEnd ? pub : sub;} - public GfoEvLnk(GfoEvMgrOwner pub, String pubEvt, GfoEvObj sub, String subPrc) {this.pub = pub; this.pubEvt = pubEvt; this.sub = sub; this.subPrc = subPrc;} + public Gfo_evt_mgr_owner End(boolean pubEnd) {return pubEnd ? pub : sub;} + public GfoEvLnk(Gfo_evt_mgr_owner pub, String pubEvt, Gfo_evt_itm sub, String subPrc) {this.pub = pub; this.pubEvt = pubEvt; this.sub = sub; this.subPrc = subPrc;} } class GfoEvItm { public String Key() {return key;} private String key; - public GfoInvkAble InvkAble() {return invkAble;} GfoInvkAble invkAble; - public static GfoEvItm new_(GfoInvkAble invkAble, String key) { + public Gfo_invk InvkAble() {return invkAble;} Gfo_invk invkAble; + public static GfoEvItm new_(Gfo_invk invkAble, String key) { GfoEvItm rv = new GfoEvItm(); rv.invkAble = invkAble; rv.key = key; return rv; diff --git a/100_core/src/gplx/Gfo_evt_mgr_.java b/100_core/src/gplx/Gfo_evt_mgr_.java new file mode 100644 index 000000000..5a3e60c03 --- /dev/null +++ b/100_core/src/gplx/Gfo_evt_mgr_.java @@ -0,0 +1,45 @@ +/* +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; +public class Gfo_evt_mgr_ { + public static void Sub(Gfo_evt_mgr_owner pub, String pubEvt, Gfo_evt_itm sub, String subEvt) {pub.Evt_mgr().AddSub(pub, pubEvt, sub, subEvt);} + public static void Sub_same(Gfo_evt_mgr_owner pub, String evt, Gfo_evt_itm sub) {pub.Evt_mgr().AddSub(pub, evt, sub, evt);} + public static void Sub_same_many(Gfo_evt_mgr_owner pub, Gfo_evt_itm sub, String... evts) { + int len = evts.length; + for (int i = 0; i < len; i++) { + String evt = evts[i]; + pub.Evt_mgr().AddSub(pub, evt, sub, evt); + } + } + public static void Pub(Gfo_evt_mgr_owner pub, String pubEvt) {pub.Evt_mgr().Pub(GfsCtx.new_(), pubEvt, GfoMsg_.new_cast_(pubEvt));} + public static void Pub_obj(Gfo_evt_mgr_owner pub, String pubEvt, String key, Object v) {pub.Evt_mgr().Pub(GfsCtx.new_(), pubEvt, msg_(pubEvt, Keyval_.new_(key, v)));} + public static void Pub_val(Gfo_evt_mgr_owner pub, String pubEvt, Object v) {pub.Evt_mgr().Pub(GfsCtx.new_(), pubEvt, msg_(pubEvt, Keyval_.new_("v", v)));} + public static void Pub_vals(Gfo_evt_mgr_owner pub, String pubEvt, Keyval... ary) {pub.Evt_mgr().Pub(GfsCtx.new_(), pubEvt, msg_(pubEvt, ary));} + public static void Pub_msg(Gfo_evt_mgr_owner pub, GfsCtx ctx, String pubEvt, GfoMsg m) {pub.Evt_mgr().Pub(ctx, pubEvt, m);} + public static void Lnk(Gfo_evt_mgr_owner pub, Gfo_evt_mgr_owner sub) {sub.Evt_mgr().Lnk(pub);} + public static void Rls_pub(Gfo_evt_mgr_owner pub) {pub.Evt_mgr().RlsPub(pub);} + public static void Rls_sub(Gfo_evt_mgr_owner sub) {sub.Evt_mgr().RlsSub(sub);} + static GfoMsg msg_(String evt, Keyval... kvAry) { + GfoMsg m = GfoMsg_.new_cast_(evt); + for (int i = 0; i < kvAry.length; i++) { + Keyval kv = kvAry[i]; + m.Add(kv.Key(), kv.Val()); + } + return m; + } +} diff --git a/100_core/src/gplx/GfoEvMgrOwner.java b/100_core/src/gplx/Gfo_evt_mgr_owner.java similarity index 91% rename from 100_core/src/gplx/GfoEvMgrOwner.java rename to 100_core/src/gplx/Gfo_evt_mgr_owner.java index d2cb940a2..8f915f3c7 100644 --- a/100_core/src/gplx/GfoEvMgrOwner.java +++ b/100_core/src/gplx/Gfo_evt_mgr_owner.java @@ -16,6 +16,6 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx; -public interface GfoEvMgrOwner { - GfoEvMgr EvMgr(); +public interface Gfo_evt_mgr_owner { + Gfo_evt_mgr Evt_mgr(); } diff --git a/100_core/src/gplx/GfoEvMgr_tst.java b/100_core/src/gplx/Gfo_evt_mgr_tst.java similarity index 67% rename from 100_core/src/gplx/GfoEvMgr_tst.java rename to 100_core/src/gplx/Gfo_evt_mgr_tst.java index daa168245..9652b50f9 100644 --- a/100_core/src/gplx/GfoEvMgr_tst.java +++ b/100_core/src/gplx/Gfo_evt_mgr_tst.java @@ -17,53 +17,53 @@ along with this program. If not, see . */ package gplx; import org.junit.*; -public class GfoEvMgr_tst { +public class Gfo_evt_mgr_tst { @Before public void setup() { pub = make_(); sub = make_(); } MockEvObj pub, sub; @Test public void Basic() { - GfoEvMgr_.SubSame(pub, "ev1", sub); - GfoEvMgr_.PubVal(pub, "ev1", "val1"); + Gfo_evt_mgr_.Sub_same(pub, "ev1", sub); + Gfo_evt_mgr_.Pub_val(pub, "ev1", "val1"); sub.tst_Handled("val1"); } @Test public void None() {// make sure no subscribers does not cause exception - GfoEvMgr_.SubSame(pub, "ev1", sub); - GfoEvMgr_.PubVal(pub, "ev2", "val1"); //ev2 does not exist + Gfo_evt_mgr_.Sub_same(pub, "ev1", sub); + Gfo_evt_mgr_.Pub_val(pub, "ev2", "val1"); //ev2 does not exist sub.tst_Handled(); } @Test public void Lnk() { MockEvObj mid = make_(); - mid.EvMgr().Lnk(pub); - GfoEvMgr_.SubSame(mid, "ev1", sub); - GfoEvMgr_.PubVal(pub, "ev1", "val1"); + mid.Evt_mgr().Lnk(pub); + Gfo_evt_mgr_.Sub_same(mid, "ev1", sub); + Gfo_evt_mgr_.Pub_val(pub, "ev1", "val1"); sub.tst_Handled("val1"); } @Test public void RlsSub() { this.Basic(); - GfoEvMgr_.RlsSub(sub); - GfoEvMgr_.PubVal(pub, "ev1", "val1"); + Gfo_evt_mgr_.Rls_sub(sub); + Gfo_evt_mgr_.Pub_val(pub, "ev1", "val1"); sub.tst_Handled(); } @Test public void RlsPub() { this.Basic(); - GfoEvMgr_.RlsSub(pub); - GfoEvMgr_.PubVal(pub, "ev1", "val1"); + Gfo_evt_mgr_.Rls_sub(pub); + Gfo_evt_mgr_.Pub_val(pub, "ev1", "val1"); sub.tst_Handled(); } MockEvObj make_() {return new MockEvObj();} } -class MockEvObj implements GfoEvObj { - public GfoEvMgr EvMgr() {return eventMgr;} GfoEvMgr eventMgr; +class MockEvObj implements Gfo_evt_itm { + public Gfo_evt_mgr Evt_mgr() {return eventMgr;} Gfo_evt_mgr eventMgr; public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { handled.Add(m.ReadStr("v")); return this; } - List_adp handled = List_adp_.new_(); + List_adp handled = List_adp_.New(); public void tst_Handled(String... expd) { Tfds.Eq_ary_str(expd, handled.To_str_ary()); handled.Clear(); } - public MockEvObj(){eventMgr = GfoEvMgr.new_(this);} + public MockEvObj(){eventMgr = new Gfo_evt_mgr(this);} } diff --git a/100_core/src/gplx/GfoInvkAble.java b/100_core/src/gplx/Gfo_invk.java similarity index 92% rename from 100_core/src/gplx/GfoInvkAble.java rename to 100_core/src/gplx/Gfo_invk.java index 92736d109..0888abb3a 100644 --- a/100_core/src/gplx/GfoInvkAble.java +++ b/100_core/src/gplx/Gfo_invk.java @@ -16,13 +16,13 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx; -public interface GfoInvkAble { +public interface Gfo_invk { Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m); } /* public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk__set)) {} - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String Invk__set = "set"; */ diff --git a/100_core/src/gplx/Gfo_invk_.java b/100_core/src/gplx/Gfo_invk_.java new file mode 100644 index 000000000..2205d83bf --- /dev/null +++ b/100_core/src/gplx/Gfo_invk_.java @@ -0,0 +1,43 @@ +/* +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; +import gplx.core.primitives.*; +public class Gfo_invk_ { + public static final String Mutator_suffix = "_"; + public static final Gfo_invk Noop = new Gfo_invk__noop(); + public static final String_obj_val + Rv_unhandled = String_obj_val.new_("Unhandled") + , Rv_handled = String_obj_val.new_("Handled") + , Rv_host = String_obj_val.new_("Host") + , Rv_cancel = String_obj_val.new_("Cancel") + , Rv_error = String_obj_val.new_("Error"); + + public static Gfo_invk as_(Object obj) {return obj instanceof Gfo_invk ? (Gfo_invk)obj : null;} + + public static Object Invk_no_key(Gfo_invk invk) {return Invk_by_msg(invk, "", GfoMsg_.Null);} + public static Object Invk_by_key(Gfo_invk invk, String k) {return Invk_by_msg(invk, k , GfoMsg_.Null);} + public static Object Invk_by_val(Gfo_invk invk, String k, Object v) {return Invk_by_msg(invk, k , GfoMsg_.new_cast_(k).Add("v", v));} + public static Object Invk_by_msg(Gfo_invk invk, String k, GfoMsg m) { + Object rv = invk.Invk(GfsCtx.Instance, 0, k, m); + if (rv == Gfo_invk_.Rv_unhandled) throw Err_.new_wo_type("invkable did not handle message", "key", k); + return rv; + } +} +class Gfo_invk__noop implements Gfo_invk { + public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {return this;} +} diff --git a/100_core/src/gplx/Gfo_invk_cmd.java b/100_core/src/gplx/Gfo_invk_cmd.java new file mode 100644 index 000000000..6e11793c7 --- /dev/null +++ b/100_core/src/gplx/Gfo_invk_cmd.java @@ -0,0 +1,32 @@ +/* +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; +public class Gfo_invk_cmd { + private final Gfo_invk itm; private final String cmd; private final GfoMsg msg; + public Gfo_invk_cmd(Gfo_invk itm, String cmd, GfoMsg msg) { + this.itm = itm; this.cmd = cmd; this.msg = msg; + } + public Object Exec() {return itm.Invk(GfsCtx.Instance, 0, cmd, msg);} + public Object Exec_by_ctx(GfsCtx ctx, GfoMsg msg) {return itm.Invk(ctx, 0, cmd, msg);} + + public static final Gfo_invk_cmd Noop = new Gfo_invk_cmd(Gfo_invk_.Noop, "", GfoMsg_.Null); + public static Gfo_invk_cmd New_by_key(Gfo_invk itm, String cmd) {return New_by_val(itm, cmd, null);} + public static Gfo_invk_cmd New_by_val(Gfo_invk itm, String cmd, Object val) { + return new Gfo_invk_cmd(itm, cmd, (val == null) ? GfoMsg_.Null : GfoMsg_.new_parse_(cmd).Add("v", val)); + } +} diff --git a/100_core/src/gplx/GfoInvkCmdMgr.java b/100_core/src/gplx/Gfo_invk_cmd_mgr.java similarity index 71% rename from 100_core/src/gplx/GfoInvkCmdMgr.java rename to 100_core/src/gplx/Gfo_invk_cmd_mgr.java index 5484ea467..d2aff53d1 100644 --- a/100_core/src/gplx/GfoInvkCmdMgr.java +++ b/100_core/src/gplx/Gfo_invk_cmd_mgr.java @@ -17,21 +17,21 @@ along with this program. If not, see . */ package gplx; import gplx.core.primitives.*; -public class GfoInvkCmdMgr { - public GfoInvkCmdMgr Add_cmd_many(GfoInvkAble invk, String... keys) { +public class Gfo_invk_cmd_mgr { + public Gfo_invk_cmd_mgr Add_cmd_many(Gfo_invk invk, String... keys) { for (String key : keys) list.Add(GfoInvkCmdItm.new_(key, invk)); return this; } - public GfoInvkCmdMgr Add_cmd(String key, GfoInvkAble invk) { + public Gfo_invk_cmd_mgr Add_cmd(String key, Gfo_invk invk) { list.Add(GfoInvkCmdItm.new_(key, invk)); return this; } - public GfoInvkCmdMgr Add_mgr(String key, GfoInvkAble invk) { + public Gfo_invk_cmd_mgr Add_mgr(String key, Gfo_invk invk) { list.Add(GfoInvkCmdItm.new_(key, invk).Type_isMgr_(true)); return this; } - public GfoInvkCmdMgr Add_xtn(GfoInvkAble xtn) { + public Gfo_invk_cmd_mgr Add_xtn(Gfo_invk xtn) { list.Add(GfoInvkCmdItm.new_("xtn", xtn).Type_isXtn_(true)); return this; } @@ -40,27 +40,27 @@ public class GfoInvkCmdMgr { GfoInvkCmdItm itm = (GfoInvkCmdItm)list.Get_at(i); if (itm.Type_isXtn()) { Object invkVal = itm.Invk().Invk(ctx, ikey, k, m); - if (invkVal != GfoInvkAble_.Rv_unhandled) return invkVal; + if (invkVal != Gfo_invk_.Rv_unhandled) return invkVal; } if (!ctx.Match(k, itm.Key())) continue; if (itm.Type_isMgr()) return itm.Invk(); Object rv = null; m.Add("host", host); rv = itm.Invk().Invk(ctx, ikey, k, m); - return rv == GfoInvkAble_.Rv_host ? host : rv; // if returning "this" return host + return rv == Gfo_invk_.Rv_host ? host : rv; // if returning "this" return host } return Unhandled; } - public static final String_obj_val Unhandled = String_obj_val.new_("GfoInvkCmdMgr Unhandled"); - List_adp list = List_adp_.new_(); - public static GfoInvkCmdMgr new_() {return new GfoInvkCmdMgr();} GfoInvkCmdMgr() {} + public static final String_obj_val Unhandled = String_obj_val.new_("Gfo_invk_cmd_mgr Unhandled"); + List_adp list = List_adp_.New(); + public static Gfo_invk_cmd_mgr new_() {return new Gfo_invk_cmd_mgr();} Gfo_invk_cmd_mgr() {} } class GfoInvkCmdItm { public String Key() {return key;} private String key; - public GfoInvkAble Invk() {return invk;} GfoInvkAble invk; + public Gfo_invk Invk() {return invk;} Gfo_invk invk; public boolean Type_isMgr() {return type_isMgr;} public GfoInvkCmdItm Type_isMgr_(boolean v) {type_isMgr = v; return this;} private boolean type_isMgr; public boolean Type_isXtn() {return type_isXtn;} public GfoInvkCmdItm Type_isXtn_(boolean v) {type_isXtn = v; return this;} private boolean type_isXtn; - public static GfoInvkCmdItm new_(String key, GfoInvkAble invk) { + public static GfoInvkCmdItm new_(String key, Gfo_invk invk) { GfoInvkCmdItm rv = new GfoInvkCmdItm(); rv.key = key; rv.invk = invk; return rv; diff --git a/100_core/src/gplx/GfoInvkCmdMgrOwner.java b/100_core/src/gplx/Gfo_invk_cmd_mgr_owner.java similarity index 90% rename from 100_core/src/gplx/GfoInvkCmdMgrOwner.java rename to 100_core/src/gplx/Gfo_invk_cmd_mgr_owner.java index 37cbb9acc..37016871c 100644 --- a/100_core/src/gplx/GfoInvkCmdMgrOwner.java +++ b/100_core/src/gplx/Gfo_invk_cmd_mgr_owner.java @@ -16,6 +16,6 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx; -public interface GfoInvkCmdMgrOwner { - GfoInvkCmdMgr InvkMgr(); +public interface Gfo_invk_cmd_mgr_owner { + Gfo_invk_cmd_mgr InvkMgr(); } diff --git a/100_core/src/gplx/GfoInvkRootWkr.java b/100_core/src/gplx/Gfo_invk_root_wkr.java similarity index 89% rename from 100_core/src/gplx/GfoInvkRootWkr.java rename to 100_core/src/gplx/Gfo_invk_root_wkr.java index 2c2189ce1..65186e688 100644 --- a/100_core/src/gplx/GfoInvkRootWkr.java +++ b/100_core/src/gplx/Gfo_invk_root_wkr.java @@ -16,6 +16,6 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx; -public interface GfoInvkRootWkr { - Object Run_str_for(GfoInvkAble invk, GfoMsg msg); +public interface Gfo_invk_root_wkr { + Object Run_str_for(Gfo_invk invk, GfoMsg msg); } diff --git a/100_core/src/gplx/GfoInvkXtoStr.java b/100_core/src/gplx/Gfo_invk_to_str.java similarity index 78% rename from 100_core/src/gplx/GfoInvkXtoStr.java rename to 100_core/src/gplx/Gfo_invk_to_str.java index 76388c3db..03674c4a6 100644 --- a/100_core/src/gplx/GfoInvkXtoStr.java +++ b/100_core/src/gplx/Gfo_invk_to_str.java @@ -17,8 +17,8 @@ along with this program. If not, see . */ package gplx; import gplx.langs.gfs.*; -public class GfoInvkXtoStr { - public static GfoMsg ReadMsg(GfoInvkAble invk, String k) { +public class Gfo_invk_to_str { + public static GfoMsg ReadMsg(Gfo_invk invk, String k) { GfsCtx ctx = GfsCtx.wtr_(); GfoMsg m = GfoMsg_.rdr_(k); invk.Invk(ctx, 0, k, m); @@ -27,8 +27,8 @@ public class GfoInvkXtoStr { root.Subs_add(m); return root; } - public static GfoMsg WriteMsg(GfoInvkAble invk, String k, Object... ary) {return WriteMsg(GfsCore.Instance.FetchKey(invk), invk, k, ary);} - public static GfoMsg WriteMsg(String invkKey, GfoInvkAble invk, String k, Object... ary) { + public static GfoMsg WriteMsg(Gfo_invk invk, String k, Object... ary) {return WriteMsg(GfsCore.Instance.FetchKey(invk), invk, k, ary);} + public static GfoMsg WriteMsg(String invkKey, Gfo_invk invk, String k, Object... ary) { GfsCtx ctx = GfsCtx.wtr_(); GfoMsg m = GfoMsg_.wtr_(); invk.Invk(ctx, 0, k, m); diff --git a/100_core/src/gplx/Gfo_log.java b/100_core/src/gplx/Gfo_log.java new file mode 100644 index 000000000..e53f3d771 --- /dev/null +++ b/100_core/src/gplx/Gfo_log.java @@ -0,0 +1,27 @@ +/* +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; +public interface Gfo_log { + List_adp Itms(); + Gfo_log Itms_(List_adp v); + void Warn(String msg, Object... args); + void Note(String msg, Object... args); + void Info(String msg, Object... args); + void Prog(String msg, Object... args); + void Flush(); +} diff --git a/100_core/src/gplx/Gfo_log_.java b/100_core/src/gplx/Gfo_log_.java new file mode 100644 index 000000000..2107c06fa --- /dev/null +++ b/100_core/src/gplx/Gfo_log_.java @@ -0,0 +1,35 @@ +/* +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; +import gplx.core.logs.*; +public class Gfo_log_ { + public static Gfo_log Instance = new Gfo_log__mem(); + public static Gfo_log Instance__set(Gfo_log v) { + v.Itms_(Instance.Itms()); + Instance = v; + return v; + } + public static final String File__fmt = "yyyyMMdd_HHmmss", File__ext = ".log"; + public static Io_url New_url(Io_url dir) { + return dir.GenSubFil(DateAdp_.Now().XtoUtc().XtoStr_fmt(Gfo_log_.File__fmt) + Gfo_log_.File__ext); + } + public static Gfo_log New_file(Io_url dir) { + Io_url url = dir.GenSubFil(DateAdp_.Now().XtoStr_fmt(File__fmt) + File__ext); + return new Gfo_log__file(url, new Gfo_log_itm_wtr__csv()); + } +} diff --git a/100_core/src/gplx/Gfo_log_bfr.java b/100_core/src/gplx/Gfo_log_bfr.java index 2393dd71d..bad8ffa6c 100644 --- a/100_core/src/gplx/Gfo_log_bfr.java +++ b/100_core/src/gplx/Gfo_log_bfr.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx; public class Gfo_log_bfr { - private Bry_bfr bfr = Bry_bfr.reset_(255); + private Bry_bfr bfr = Bry_bfr_.Reset(255); public Gfo_log_bfr Add(String s) { bfr.Add_str_a7(DateAdp_.Now().XtoUtc().XtoStr_fmt_yyyyMMdd_HHmmss_fff()); bfr.Add_byte_space(); diff --git a/100_core/src/gplx/Gfo_usr_dlg__gui.java b/100_core/src/gplx/Gfo_usr_dlg__gui.java index 5a688eed3..6ee42740a 100644 --- a/100_core/src/gplx/Gfo_usr_dlg__gui.java +++ b/100_core/src/gplx/Gfo_usr_dlg__gui.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; -import gplx.core.strings.*; +import gplx.core.lists.rings.*; public interface Gfo_usr_dlg__gui { void Clear(); - String_ring Prog_msgs(); + Ring__string Prog_msgs(); void Write_prog(String text); void Write_note(String text); void Write_warn(String text); diff --git a/100_core/src/gplx/Gfo_usr_dlg__gui_.java b/100_core/src/gplx/Gfo_usr_dlg__gui_.java index a77cdbe6b..02f4c5b8d 100644 --- a/100_core/src/gplx/Gfo_usr_dlg__gui_.java +++ b/100_core/src/gplx/Gfo_usr_dlg__gui_.java @@ -16,26 +16,26 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx; -import gplx.core.consoles.*; import gplx.core.strings.*; +import gplx.core.consoles.*; import gplx.core.lists.rings.*; public class Gfo_usr_dlg__gui_ { - public static final Gfo_usr_dlg__gui Noop = new Gfo_usr_dlg__gui_noop(); - public static final Gfo_usr_dlg__gui Console = new Gfo_usr_dlg__gui_console(); - public static final Gfo_usr_dlg__gui Test = new Gfo_usr_dlg__gui_test(); - public static final Gfo_usr_dlg__gui Mem = new Gfo_usr_dlg__gui_mem_string(); + public static final Gfo_usr_dlg__gui Noop = new Gfo_usr_dlg__gui_noop(); + public static final Gfo_usr_dlg__gui Console = new Gfo_usr_dlg__gui_console(); + public static final Gfo_usr_dlg__gui Test = new Gfo_usr_dlg__gui_test(); + public static final Gfo_usr_dlg__gui Mem = new Gfo_usr_dlg__gui_mem_string(); public static String Mem_file() {return ((Gfo_usr_dlg__gui_mem_string)Mem).file;} } class Gfo_usr_dlg__gui_noop implements Gfo_usr_dlg__gui { public void Clear() {} - public String_ring Prog_msgs() {return ring;} String_ring ring = new String_ring().Max_(0); + public Ring__string Prog_msgs() {return ring;} Ring__string ring = new Ring__string().Max_(0); public void Write_prog(String text) {} public void Write_note(String text) {} public void Write_warn(String text) {} public void Write_stop(String text) {} } class Gfo_usr_dlg__gui_console implements Gfo_usr_dlg__gui { - private final Console_adp__sys console = Console_adp__sys.Instance; + private final Console_adp__sys console = Console_adp__sys.Instance; public void Clear() {} - public String_ring Prog_msgs() {return ring;} private final String_ring ring = new String_ring().Max_(0); + public Ring__string Prog_msgs() {return ring;} private final Ring__string ring = new Ring__string().Max_(0); public void Write_prog(String text) {console.Write_tmp(text);} public void Write_note(String text) {console.Write_str_w_nl(text);} public void Write_warn(String text) {console.Write_str_w_nl(text);} @@ -44,7 +44,7 @@ class Gfo_usr_dlg__gui_console implements Gfo_usr_dlg__gui { class Gfo_usr_dlg__gui_mem_string implements Gfo_usr_dlg__gui { public String file = ""; public void Clear() {file = "";} - public String_ring Prog_msgs() {return ring;} private final String_ring ring = new String_ring().Max_(0); + public Ring__string Prog_msgs() {return ring;} private final Ring__string ring = new Ring__string().Max_(0); public void Write_prog(String text) {file += text + "\n";} public void Write_note(String text) {file += text + "\n";} public void Write_warn(String text) {file += text + "\n";} diff --git a/100_core/src/gplx/Gfo_usr_dlg__gui_test.java b/100_core/src/gplx/Gfo_usr_dlg__gui_test.java index 436132bc3..a5ecc78f3 100644 --- a/100_core/src/gplx/Gfo_usr_dlg__gui_test.java +++ b/100_core/src/gplx/Gfo_usr_dlg__gui_test.java @@ -16,11 +16,11 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx; -import gplx.core.strings.*; +import gplx.core.lists.rings.*; public class Gfo_usr_dlg__gui_test implements Gfo_usr_dlg__gui { - public List_adp Warns() {return warns;} private final List_adp warns = List_adp_.new_(); - public List_adp Msgs() {return msgs;} private final List_adp msgs = List_adp_.new_(); - public String_ring Prog_msgs() {return ring;} private final String_ring ring = new String_ring().Max_(0); + public List_adp Warns() {return warns;} private final List_adp warns = List_adp_.New(); + public List_adp Msgs() {return msgs;} private final List_adp msgs = List_adp_.New(); + public Ring__string Prog_msgs() {return ring;} private final Ring__string ring = new Ring__string().Max_(0); public void Clear() {msgs.Clear(); warns.Clear();} public void Write_prog(String text) {msgs.Add(text);} public void Write_note(String text) {msgs.Add(text);} diff --git a/100_core/src/gplx/Gfo_usr_dlg__log.java b/100_core/src/gplx/Gfo_usr_dlg__log.java index 665965b22..141b41163 100644 --- a/100_core/src/gplx/Gfo_usr_dlg__log.java +++ b/100_core/src/gplx/Gfo_usr_dlg__log.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx; -public interface Gfo_usr_dlg__log extends GfoInvkAble { +public interface Gfo_usr_dlg__log extends Gfo_invk { boolean Enabled(); void Enabled_(boolean v); boolean Queue_enabled(); void Queue_enabled_(boolean v); Io_url Log_dir(); void Log_dir_(Io_url v); diff --git a/100_core/src/gplx/Gfo_usr_dlg__log_base.java b/100_core/src/gplx/Gfo_usr_dlg__log_base.java index 8c4fdd0cc..3963d06c1 100644 --- a/100_core/src/gplx/Gfo_usr_dlg__log_base.java +++ b/100_core/src/gplx/Gfo_usr_dlg__log_base.java @@ -21,7 +21,7 @@ public class Gfo_usr_dlg__log_base implements Gfo_usr_dlg__log { private int archive_dirs_max = 8; private Io_url log_dir, err_fil; private Ordered_hash queued_list = Ordered_hash_.New(); - private Bry_fmtr fmtr = Bry_fmtr.tmp_(); private Bry_bfr tmp_bfr = Bry_bfr.reset_(255); + private Bry_fmtr fmtr = Bry_fmtr.tmp_(); private Bry_bfr tmp_bfr = Bry_bfr_.Reset(255); public boolean Queue_enabled() {return queue_enabled;} public void Queue_enabled_(boolean v) {queue_enabled = v; if (!v) this.Flush();} private boolean queue_enabled; public boolean Enabled() {return enabled;} public void Enabled_(boolean v) {enabled = v;} private boolean enabled = true; public Io_url Session_dir() {return session_dir;} private Io_url session_dir; @@ -101,11 +101,11 @@ public class Gfo_usr_dlg__log_base implements Gfo_usr_dlg__log { if (ctx.Match(k, Invk_enabled_)) enabled = m.ReadYn("v"); else if (ctx.Match(k, Invk_archive_dirs_max_)) archive_dirs_max = m.ReadInt("v"); else if (ctx.Match(k, Invk_log_dir_)) log_dir = m.ReadIoUrl("v"); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } public static final String Invk_enabled_ = "enabled_", Invk_archive_dirs_max_ = "archive_dirs_max_", Invk_log_dir_ = "log_dir_"; static final String Dir_name_log = "log", Dir_name_current = "current"; - public static final Gfo_usr_dlg__log_base Instance = new Gfo_usr_dlg__log_base(); + public static final Gfo_usr_dlg__log_base Instance = new Gfo_usr_dlg__log_base(); } class Usr_log_fil { public Usr_log_fil(Io_url url) {this.url = url;} diff --git a/100_core/src/gplx/Gfo_usr_dlg_base.java b/100_core/src/gplx/Gfo_usr_dlg_base.java index 41d733be7..98b02df3c 100644 --- a/100_core/src/gplx/Gfo_usr_dlg_base.java +++ b/100_core/src/gplx/Gfo_usr_dlg_base.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx; import gplx.core.brys.fmtrs.*; public class Gfo_usr_dlg_base implements Gfo_usr_dlg { - private final Bry_bfr tmp_bfr = Bry_bfr.reset_(255); + private final Bry_bfr tmp_bfr = Bry_bfr_.Reset(255); private final Bry_fmtr tmp_fmtr = Bry_fmtr.tmp_().Fail_when_invalid_escapes_(false); // do not fail b/c msgs may contain excerpt of random text; EX:[[User:A|~A~]] DATE:2014-11-28 public Gfo_usr_dlg_base(Gfo_usr_dlg__log log_wkr, Gfo_usr_dlg__gui gui_wkr) {this.log_wkr = log_wkr; this.gui_wkr = gui_wkr;} public Gfo_usr_dlg__log Log_wkr() {return log_wkr;} public void Log_wkr_(Gfo_usr_dlg__log v) {log_wkr = v;} private Gfo_usr_dlg__log log_wkr; diff --git a/100_core/src/gplx/GfsCtx.java b/100_core/src/gplx/GfsCtx.java index 88cf9f269..cf33577a3 100644 --- a/100_core/src/gplx/GfsCtx.java +++ b/100_core/src/gplx/GfsCtx.java @@ -21,7 +21,7 @@ public class GfsCtx { public boolean Fail_if_unhandled() {return fail_if_unhandled;} public GfsCtx Fail_if_unhandled_(boolean v) {fail_if_unhandled = v; return this;} private boolean fail_if_unhandled; public Gfo_usr_dlg Usr_dlg() {return usr_dlg;} public GfsCtx Usr_dlg_(Gfo_usr_dlg v) {usr_dlg = v; return this;} Gfo_usr_dlg usr_dlg; public boolean Help_browseMode() {return help_browseMode;} public GfsCtx Help_browseMode_(boolean v) {help_browseMode = v; return this;} private boolean help_browseMode; - public List_adp Help_browseList() {return help_browseList;} List_adp help_browseList = List_adp_.new_(); + public List_adp Help_browseList() {return help_browseList;} List_adp help_browseList = List_adp_.New(); public Object MsgSrc() {return msgSrc;} public GfsCtx MsgSrc_(Object v) {msgSrc = v; return this;} Object msgSrc; public boolean Match(String k, String match) { if (help_browseMode) { @@ -45,7 +45,7 @@ public class GfsCtx { public boolean Write_stop(UsrMsg umsg) {UsrDlg_.Instance.Note("* " + umsg.To_str()); return false;} public boolean Write_stop(String fmt, Object... ary) {UsrDlg_.Instance.Note("* " + fmt, ary); return false;} public boolean Deny() {return deny;} private boolean deny; - public static final GfsCtx Instance = new GfsCtx(); + public static final GfsCtx Instance = new GfsCtx(); public static GfsCtx new_() {return new GfsCtx();} GfsCtx() {} public static GfsCtx rdr_() { GfsCtx rv = new GfsCtx(); @@ -60,6 +60,6 @@ public class GfsCtx { return rv; } public String Mode() {return mode;} public GfsCtx Mode_(String v) {mode = v; return this;} private String mode = "regular"; - public static final String Mode_write = "write"; + public static final String Mode_write = "write"; public static final int Ikey_null = -1; } diff --git a/100_core/src/gplx/Guid_adp_.java b/100_core/src/gplx/Guid_adp_.java index 4bd2e26e1..9c6b42b8b 100644 --- a/100_core/src/gplx/Guid_adp_.java +++ b/100_core/src/gplx/Guid_adp_.java @@ -18,7 +18,8 @@ along with this program. If not, see . package gplx; public class Guid_adp_ { public static final String Cls_ref_name = "Guid"; - public static final Guid_adp Empty = parse("00000000-0000-0000-0000-000000000000"); - public static Guid_adp new_() {return new Guid_adp(java.util.UUID.randomUUID());} - public static Guid_adp parse(String s) {return new Guid_adp(java.util.UUID.fromString(s));} + public static final Guid_adp Empty = Parse("00000000-0000-0000-0000-000000000000"); + public static String New_str() {return New().To_str();} + public static Guid_adp New() {return new Guid_adp(java.util.UUID.randomUUID());} + public static Guid_adp Parse(String s) {return new Guid_adp(java.util.UUID.fromString(s));} } \ No newline at end of file diff --git a/100_core/src/gplx/Guid_adp__tst.java b/100_core/src/gplx/Guid_adp__tst.java index 3f13caff5..b2f785e21 100644 --- a/100_core/src/gplx/Guid_adp__tst.java +++ b/100_core/src/gplx/Guid_adp__tst.java @@ -22,7 +22,7 @@ public class Guid_adp__tst { tst_parse_("467ffb41-cdfe-402f-b22b-be855425784b"); } void tst_parse_(String s) { - Guid_adp uuid = Guid_adp_.parse(s); + Guid_adp uuid = Guid_adp_.Parse(s); Tfds.Eq(uuid.To_str(), s); } } diff --git a/100_core/src/gplx/Hash_adp_.java b/100_core/src/gplx/Hash_adp_.java index f160f0fa0..350624029 100644 --- a/100_core/src/gplx/Hash_adp_.java +++ b/100_core/src/gplx/Hash_adp_.java @@ -18,8 +18,8 @@ along with this program. If not, see . package gplx; import gplx.core.primitives.*; public class Hash_adp_ { - public static Hash_adp new_() {return new Hash_adp_obj();} - public static final Hash_adp Noop = new Hash_adp_noop(); + public static Hash_adp New() {return new Hash_adp_obj();} + public static final Hash_adp Noop = new Hash_adp_noop(); } class Hash_adp_obj extends gplx.core.lists.Hash_adp_base implements Hash_adp {}//_20110428 class Hash_adp_noop implements Hash_adp { diff --git a/100_core/src/gplx/Int_.java b/100_core/src/gplx/Int_.java index 8c3020f21..c32a554c4 100644 --- a/100_core/src/gplx/Int_.java +++ b/100_core/src/gplx/Int_.java @@ -17,9 +17,9 @@ along with this program. If not, see . */ package gplx; import gplx.core.strings.*; import gplx.langs.gfs.*; -public class Int_ implements GfoInvkAble { +public class Int_ implements Gfo_invk { public static final String Cls_val_name = "int"; - public static final Class Cls_ref_type = Integer.class; + public static final Class Cls_ref_type = Integer.class; public static final int Base1 = 1; public static final int Const_dlm_len = 1; public static final int Const_position_after_char = 1; @@ -133,7 +133,7 @@ public class Int_ implements GfoInvkAble { static String To_str_pad_bgn_zero(int val, int places, byte pad_chr, boolean bgn) { int len = DigitCount(val); int pad_len = places - len; if (pad_len < 0) return Int_.To_str(val); - Bry_bfr bfr = Bry_bfr.new_(); + Bry_bfr bfr = Bry_bfr_.New(); boolean neg = val < 0; if (bgn) { // special logic to handle negative numbers; EX: -1 -> "-001", not "00-1" if (neg) { @@ -165,9 +165,9 @@ public class Int_ implements GfoInvkAble { int v = m.ReadInt(GfsCore_.Arg_primitive), operand = m.ReadInt("operand"); return ctx.Deny() ? (Object)this : v + operand; } - else return GfoInvkAble_.Rv_unhandled; - } public static final String Invk_XtoStr_PadBgn = "XtoStr_PadBgn"; - public static final Int_ Gfs = new Int_(); + else return Gfo_invk_.Rv_unhandled; + } public static final String Invk_XtoStr_PadBgn = "XtoStr_PadBgn"; + public static final Int_ Gfs = new Int_(); public static int To_int_hex(byte[] src) {return To_int_hex(src, 0, src.length);} public static int To_int_hex(byte[] src, int bgn, int end) { int rv = 0; int factor = 1; diff --git a/100_core/src/gplx/Io_mgr.java b/100_core/src/gplx/Io_mgr.java index 0d4ce6031..4eeb225fc 100644 --- a/100_core/src/gplx/Io_mgr.java +++ b/100_core/src/gplx/Io_mgr.java @@ -16,8 +16,10 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx; -import gplx.core.primitives.*; import gplx.core.ios.*; /*IoItmFil, IoItmDir..*/ -public class Io_mgr { // exists primarily to gather all cmds under gplx namespace; otherwise need to use gplx.core.ios whenever copying/deleting file +import gplx.core.primitives.*; import gplx.core.ios.*; /*IoItmFil, IoItmDir..*/ import gplx.core.ios.streams.*; import gplx.core.ios.loaders.*; +public class Io_mgr implements Gfo_evt_mgr_owner { // exists primarily to gather all cmds under gplx namespace; otherwise need to use gplx.core.ios whenever copying/deleting file + public Io_mgr() {evt_mgr = new Gfo_evt_mgr(this);} + public Gfo_evt_mgr Evt_mgr() {return evt_mgr;} private final Gfo_evt_mgr evt_mgr; public boolean Exists(Io_url url) {return url.Type_dir() ? ExistsDir(url) : ExistsFil(url);} public boolean ExistsFil(Io_url url) {return IoEnginePool.Instance.Get_by(url.Info().EngineKey()).ExistsFil_api(url);} public void ExistsFilOrFail(Io_url url) {if (!ExistsFil(url)) throw Err_.new_wo_type("could not find file", "url", url);} @@ -32,7 +34,8 @@ public class Io_mgr { // exists primarily to gather all cmds under gplx namespac public IoEngine_xrg_xferFil MoveFil_args(Io_url src, Io_url trg, boolean overwrite) {return IoEngine_xrg_xferFil.move_(src, trg).Overwrite_(overwrite);} public void CopyFil(Io_url src, Io_url trg, boolean overwrite) {IoEngine_xrg_xferFil.copy_(src, trg).Overwrite_(overwrite).Exec();} public IoEngine_xrg_xferFil CopyFil_args(Io_url src, Io_url trg, boolean overwrite) {return IoEngine_xrg_xferFil.copy_(src, trg).Overwrite_(overwrite);} - public IoRecycleBin RecycleBin() {return recycleBin;} IoRecycleBin recycleBin = IoRecycleBin.Instance; + public IoRecycleBin RecycleBin() {return recycleBin;} private IoRecycleBin recycleBin = IoRecycleBin.Instance; + public Io_loader Loader() {return loader;} public void Loader_(Io_loader v) {this.loader = v;} private Io_loader loader; public IoStream OpenStreamWrite(Io_url url) {return OpenStreamWrite_args(url).Exec();} public IoEngine_xrg_openWrite OpenStreamWrite_args(Io_url url) {return IoEngine_xrg_openWrite.new_(url);} @@ -61,6 +64,7 @@ public class Io_mgr { // exists primarily to gather all cmds under gplx namespac public void DeleteDirDeep(Io_url url) {IoEngine_xrg_deleteDir.new_(url).Recur_().Exec();} public void DeleteDirDeep_ary(Io_url... urls) {for (Io_url url : urls) IoEngine_xrg_deleteDir.new_(url).Recur_().Exec();} public int Delete_dir_empty(Io_url url) {return Io_mgr_.Delete_dir_empty(url);} + public boolean Truncate_fil(Io_url url, long size) {return IoEnginePool.Instance.Get_by(url.Info().EngineKey()).Truncate_fil(url, size);} public void MoveDirDeep(Io_url src, Io_url trg) {IoEngine_xrg_xferDir.move_(src, trg).Recur_().Exec();} public IoEngine_xrg_xferDir CopyDir_cmd(Io_url src, Io_url trg) {return IoEngine_xrg_xferDir.copy_(src, trg);} public void CopyDirSubs(Io_url src, Io_url trg) {IoEngine_xrg_xferDir.copy_(src, trg).Exec();} @@ -71,30 +75,37 @@ public class Io_mgr { // exists primarily to gather all cmds under gplx namespac } public void AliasDir_sysEngine(String srcRoot, String trgRoot) {AliasDir(srcRoot, trgRoot, IoEngine_.SysKey);} public void AliasDir(String srcRoot, String trgRoot, String engineKey) {IoUrlInfoRegy.Instance.Reg(IoUrlInfo_.alias_(srcRoot, trgRoot, engineKey));} - public IoStream OpenStreamRead(Io_url url) {return OpenStreamRead_args(url).ExecAsIoStreamOrFail();} - public IoEngine_xrg_openRead OpenStreamRead_args(Io_url url) {return IoEngine_xrg_openRead.new_(url);} - public String LoadFilStr(String url) {return LoadFilStr_args(Io_url_.new_fil_(url)).Exec();} - public String LoadFilStr(Io_url url) {return LoadFilStr_args(url).Exec();} - public IoEngine_xrg_loadFilStr LoadFilStr_args(Io_url url) {return IoEngine_xrg_loadFilStr.new_(url);} + public IoStream OpenStreamRead(Io_url url) {return OpenStreamRead_args(url).ExecAsIoStreamOrFail();} + public IoEngine_xrg_openRead OpenStreamRead_args(Io_url url) {return IoEngine_xrg_openRead.new_(url);} + public String LoadFilStr(String url) {return LoadFilStr_args(Io_url_.new_fil_(url)).Exec();} + public String LoadFilStr(Io_url url) {return LoadFilStr_args(url).Exec();} + public IoEngine_xrg_loadFilStr LoadFilStr_args(Io_url url) {return IoEngine_xrg_loadFilStr.new_(url);} public byte[] LoadFilBryOrNull(Io_url url) {return LoadFilBryOr(url, null);} public byte[] LoadFilBryOr(Io_url url, byte[] or) {return ExistsFil(url) ? LoadFilBry(url) : or;} - public byte[] LoadFilBry(String url) {return LoadFilBry_reuse(Io_url_.new_fil_(url), Bry_.Empty, Int_obj_ref.zero_());} - public byte[] LoadFilBry(Io_url url) {return LoadFilBry_reuse(url, Bry_.Empty, Int_obj_ref.zero_());} + public byte[] LoadFilBry(String url) {return LoadFilBry_reuse(Io_url_.new_fil_(url), Bry_.Empty, Int_obj_ref.New_zero());} + public byte[] LoadFilBry(Io_url url) {return LoadFilBry_reuse(url, Bry_.Empty, Int_obj_ref.New_zero());} public void LoadFilBryByBfr(Io_url url, Bry_bfr bfr) { - Int_obj_ref len = Int_obj_ref.zero_(); + Int_obj_ref len = Int_obj_ref.New_zero(); byte[] bry = LoadFilBry_reuse(url, Bry_.Empty, len); bfr.Bfr_init(bry, len.Val()); } - public static final byte[] LoadFilBry_fail = Bry_.Empty; - public byte[] LoadFilBry_reuse(Io_url url, byte[] ary, Int_obj_ref aryLen) { - if (!ExistsFil(url)) {aryLen.Val_(0); return LoadFilBry_fail;} + public static final byte[] LoadFilBry_fail = Bry_.Empty; + public byte[] LoadFilBry_reuse(Io_url url, byte[] ary, Int_obj_ref ary_len) { + if (loader != null) { + byte[] rv = loader.Load_fil_as_bry(url); + if (rv != null) return rv; + } + if (!ExistsFil(url)) { + ary_len.Val_(0); + return LoadFilBry_fail; + } IoStream stream = IoStream_.Null; try { stream = OpenStreamRead(url); - int streamLen = (int)stream.Len(); - aryLen.Val_(streamLen); - if (streamLen > ary.length) - ary = new byte[streamLen]; + int stream_len = (int)stream.Len(); + ary_len.Val_(stream_len); + if (stream_len > ary.length) + ary = new byte[stream_len]; stream.ReadAry(ary); return ary; } @@ -138,10 +149,11 @@ public class Io_mgr { // exists primarily to gather all cmds under gplx namespac } public boolean DownloadFil(String src, Io_url trg) {return IoEngine_xrg_downloadFil.new_(src, trg).Exec();} public IoEngine_xrg_downloadFil DownloadFil_args(String src, Io_url trg) {return IoEngine_xrg_downloadFil.new_(src, trg);} - public static final Io_mgr Instance = new Io_mgr(); public Io_mgr() {} + public static final Io_mgr Instance = new Io_mgr(); public static final int Len_kb = 1024, Len_mb = 1048576, Len_gb = 1073741824, Len_gb_2 = 2147483647; public static final long Len_mb_long = Len_mb; public static final long Len_null = -1; + public static final String Evt__fil_created = "fil_created"; } class Io_mgr_ { public static int Delete_dir_empty(Io_url url) { diff --git a/100_core/src/gplx/Io_url.java b/100_core/src/gplx/Io_url.java index 20656f8dd..b0813b87d 100644 --- a/100_core/src/gplx/Io_url.java +++ b/100_core/src/gplx/Io_url.java @@ -17,16 +17,16 @@ along with this program. If not, see . */ package gplx; import gplx.core.strings.*; import gplx.core.ios.*; /*IoUrlInfo*/ import gplx.core.envs.*; import gplx.langs.htmls.*; import gplx.core.interfaces.*; -public class Io_url implements CompareAble, ParseAble, GfoInvkAble { //_20101005 URL:doc/Io_url.txt +public class Io_url implements CompareAble, ParseAble, Gfo_invk { //_20101005 URL:doc/Io_url.txt public IoUrlInfo Info() {return info;} IoUrlInfo info; - public String Raw() {return raw;} final String raw; + public String Raw() {return raw;} final String raw; public byte[] RawBry() {return Bry_.new_u8(raw);} public String To_http_file_str() {return String_.Len_eq_0(raw) ? String_.Empty : String_.Concat (Http_file_str, Http_file_str_encoder.Encode_str(raw));} public byte[] To_http_file_bry() {return String_.Len_eq_0(raw) ? Bry_.Empty : Bry_.Add (Http_file_bry, Http_file_str_encoder.Encode_bry(raw));} public static Url_encoder_interface Http_file_str_encoder = Url_encoder_interface_same.Instance; - public static final String Http_file_str = "file:///"; - public static final int Http_file_len = String_.Len(Http_file_str); - public static final byte[] Http_file_bry = Bry_.new_a7(Http_file_str); + public static final String Http_file_str = "file:///"; + public static final int Http_file_len = String_.Len(Http_file_str); + public static final byte[] Http_file_bry = Bry_.new_a7(Http_file_str); public boolean Type_dir() {return info.IsDir(raw);} public boolean Type_fil() {return !info.IsDir(raw);} public Io_url OwnerDir() {return Io_url_.new_inf_(info.OwnerDir(raw), info);} public Io_url OwnerRoot() {return Io_url_.new_inf_(info.OwnerRoot(raw), info);} @@ -55,7 +55,7 @@ public class Io_url implements CompareAble, ParseAble, GfoInvkAble { //_20101005 : String_.Empty; } public List_adp XtoNames() { - List_adp list = List_adp_.new_(); + List_adp list = List_adp_.New(); Io_url cur = this; while (!cur.EqNull()) { list.Add(cur.NameAndExt_noDirSpr()); @@ -86,6 +86,6 @@ public class Io_url implements CompareAble, ParseAble, GfoInvkAble { //_20101005 public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_to_http_file)) return To_http_file_str(); else if (ctx.Match(k, Invk_gen_sub_path_for_os)) return Gen_sub_path_for_os(m.ReadStr("v")); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; } static final String Invk_to_http_file = "to_http_file", Invk_gen_sub_path_for_os = "gen_sub_path_for_os"; } diff --git a/100_core/src/gplx/KeyVal_.java b/100_core/src/gplx/KeyVal_.java index bd0e0a7cb..c7001f2bd 100644 --- a/100_core/src/gplx/KeyVal_.java +++ b/100_core/src/gplx/KeyVal_.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx; import gplx.core.strings.*; public class Keyval_ { - public static final Keyval[] Ary_empty = new Keyval[0]; + public static final Keyval[] Ary_empty = new Keyval[0]; public static Keyval[] Ary(Keyval... ary) {return ary;} public static Keyval[] Ary_cast_(Object o) { try {return (Keyval[])o;} @@ -64,7 +64,7 @@ public class Keyval_ { return null; } public static String Ary__to_str__nest(Keyval... ary) { - Bry_bfr bfr = Bry_bfr.new_(); + Bry_bfr bfr = Bry_bfr_.New(); Ary__to_str__nest(bfr, 0, ary); return bfr.To_str_and_clear(); } diff --git a/100_core/src/gplx/Keyval_list.java b/100_core/src/gplx/Keyval_list.java index d571fa7a2..17ab35e88 100644 --- a/100_core/src/gplx/Keyval_list.java +++ b/100_core/src/gplx/Keyval_list.java @@ -17,13 +17,13 @@ along with this program. If not, see . */ package gplx; public class Keyval_list { - public int Count() {return list.Count();} private final List_adp list = List_adp_.new_(); + public int Count() {return list.Count();} private final List_adp list = List_adp_.New(); public void Clear() {list.Clear();} public Keyval Get_at(int i) {return (Keyval)list.Get_at(i);} public Keyval_list Add(String key, Object val) {list.Add(Keyval_.new_(key, val)); return this;} public Keyval[] To_ary() {return (Keyval[])list.To_ary(Keyval.class);} public String To_str() { - Bry_bfr bfr = Bry_bfr.new_(); + Bry_bfr bfr = Bry_bfr_.New(); int len = list.Count(); for (int i = 0; i < len; ++i) { Keyval kv = (Keyval)list.Get_at(i); diff --git a/100_core/src/gplx/List_adp.java b/100_core/src/gplx/List_adp.java index 0a9f0e73f..8aa575830 100644 --- a/100_core/src/gplx/List_adp.java +++ b/100_core/src/gplx/List_adp.java @@ -43,8 +43,8 @@ public interface List_adp extends EnumerAble, List_adp__getable { void Shuffle(); } class List_adp_obj extends List_adp_base implements List_adp { - public List_adp_obj() {super();} - public List_adp_obj(int v) {super(v);} + public List_adp_obj() {super();} + public List_adp_obj(int v) {super(v);} } class List_adp_noop implements List_adp { public int Count() {return 0;} @@ -60,7 +60,7 @@ class List_adp_noop implements List_adp { public void Del_range(int bgn, int end) {} public void Clear() {} public int Idx_last() {return -1;} - public int Idx_of(Object o) {return List_adp_.NotFound;} + public int Idx_of(Object o) {return List_adp_.Not_found;} public void Move_to(int elemPos, int newPos) {} public void Resize_bounds(int i) {} public Object To_ary(Class memberType) {return Object_.Ary_empty;} diff --git a/100_core/src/gplx/List_adp_.java b/100_core/src/gplx/List_adp_.java index f224eb4f4..ced994c1f 100644 --- a/100_core/src/gplx/List_adp_.java +++ b/100_core/src/gplx/List_adp_.java @@ -16,23 +16,17 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx; -import gplx.core.lists.*; /*EnumerAble,ComparerAble*/ +import gplx.core.lists.*; public class List_adp_ { - public static final List_adp Noop = new List_adp_noop(); - public static List_adp as_(Object obj) {return obj instanceof List_adp ? (List_adp)obj : null;} - public static List_adp new_() {return new List_adp_obj();} - public static List_adp size_(int v) {return new List_adp_obj(v);} - public static List_adp many_(Object... ary) { + public static final List_adp Noop = new List_adp_noop(); + public static List_adp New() {return new List_adp_obj();} + public static List_adp New_w_size(int v) {return new List_adp_obj(v);} + public static List_adp New_by_many(Object... ary) { List_adp rv = new List_adp_obj(); rv.Add_many(ary); return rv; } - public static void Add_list(List_adp rv, List_adp add) { - int len = add.Count(); - for (int i = 0; i < len; ++i) - rv.Add(add.Get_at(i)); - } - public static void DelAt_last(List_adp list) {list.Del_at(list.Count() - 1);} + public static void Del_at_last(List_adp list) {list.Del_at(list.Count() - 1);} public static Object Pop(List_adp list) { int lastIdx = list.Count() - 1; Object rv = list.Get_at(lastIdx); @@ -57,17 +51,5 @@ public class List_adp_ { list.Del_at(last_idx); return rv; } - public static void DisposeAll(List_adp list) { - for (int i = 0; i < list.Count(); i++) - ((Rls_able)list.Get_at(i)).Rls(); - } - public static List_adp new_ary_(Object ary) { - int ary_len = Array_.Len(ary); - List_adp rv = size_(ary_len); - for (int i = 0; i < ary_len; i++) - rv.Add(Array_.Get_at(ary, i)); - return rv; - } - public static final int Capacity_initial = 8; - public static final int NotFound = -1, Base1 = 1, LastIdxOffset = 1, CountToPos = 1; + public static final int Not_found = -1, Base1 = 1; } diff --git a/100_core/src/gplx/List_adp_base.java b/100_core/src/gplx/List_adp_base.java index b9b92a730..01235b044 100644 --- a/100_core/src/gplx/List_adp_base.java +++ b/100_core/src/gplx/List_adp_base.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx; import gplx.core.strings.*; import gplx.core.lists.*; -public abstract class List_adp_base implements List_adp, GfoInvkAble { +public abstract class List_adp_base implements List_adp, Gfo_invk { private Object[] list; private int count; public List_adp_base(int capacity) { this.list = new Object[capacity]; @@ -41,7 +41,7 @@ public abstract class List_adp_base implements List_adp, GfoInvkAble { count++; } protected int Del_base(Object o) { - int index = IndexOf_base(o); if (index == List_adp_.NotFound) return List_adp_.NotFound; + int index = IndexOf_base(o); if (index == List_adp_.Not_found) return List_adp_.Not_found; this.Del_at(index); return index; } @@ -64,7 +64,7 @@ public abstract class List_adp_base implements List_adp, GfoInvkAble { protected int IndexOf_base(Object o) { for (int i = 0; i < count; i++) if (Object_.Eq(list[i], o)) return i; - return List_adp_.NotFound; + return List_adp_.Not_found; } @gplx.Virtual public void Clear() { for (int i = 0; i < count; i++) @@ -120,8 +120,9 @@ public abstract class List_adp_base implements List_adp, GfoInvkAble { public void Del(Object item) {Del_base(item);} public int Idx_of(Object o) {return IndexOf_base(o);} public List_adp_base() { - list = new Object[List_adp_.Capacity_initial]; + list = new Object[Len_initial]; } + private static final int Len_initial = 8; public Object To_ary_and_clear(Class memberType) {Object rv = To_ary(memberType); this.Clear(); return rv;} public Object To_ary(Class memberType) { Object rv = Array_.Create(memberType, count); @@ -138,7 +139,7 @@ public abstract class List_adp_base implements List_adp, GfoInvkAble { return rv; } public String To_str() { - Bry_bfr bfr = Bry_bfr.new_(); + Bry_bfr bfr = Bry_bfr_.New(); for (int i = 0; i < count; ++i) bfr.Add_str_u8(Object_.Xto_str_strict_or_null_mark(list[i])).Add_byte_nl(); return bfr.To_str_and_clear(); @@ -168,7 +169,7 @@ public abstract class List_adp_base implements List_adp, GfoInvkAble { public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_len)) return count; else if (ctx.Match(k, Invk_get_at)) return Get_at(m.ReadInt("v")); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; // return this; } private static final String Invk_len = "len", Invk_get_at = "get_at"; } diff --git a/100_core/src/gplx/List_adp_tst.java b/100_core/src/gplx/List_adp_tst.java index 0189474df..f101b8df8 100644 --- a/100_core/src/gplx/List_adp_tst.java +++ b/100_core/src/gplx/List_adp_tst.java @@ -19,7 +19,7 @@ package gplx; import org.junit.*; public class List_adp_tst { @Before public void setup() { - list = List_adp_.new_(); + list = List_adp_.New(); listBase = (List_adp_base)list; } List_adp list; List_adp_base listBase; @Test public void Add() { @@ -29,7 +29,7 @@ public class List_adp_tst { Tfds.Eq(1, list.Count()); } @Test public void Add_changeCapacity() { - int capacity = List_adp_.Capacity_initial; + int capacity = 8; for (int i = 0; i < capacity; i++) list.Add("0"); Tfds.Eq(capacity, list.Count()); @@ -116,7 +116,7 @@ public class List_adp_tst { } } @Test public void Clear() { - int capacity = List_adp_.Capacity_initial; + int capacity = 8; for (int i = 0; i < capacity + 1; i++) list.Add("0"); Tfds.Eq(capacity * 2, listBase.Capacity()); diff --git a/100_core/src/gplx/Ordered_hash_base.java b/100_core/src/gplx/Ordered_hash_base.java index ad442ab30..9a1aaf8fe 100644 --- a/100_core/src/gplx/Ordered_hash_base.java +++ b/100_core/src/gplx/Ordered_hash_base.java @@ -18,8 +18,8 @@ along with this program. If not, see . package gplx; import gplx.core.strings.*; import gplx.core.envs.*; import gplx.core.lists.*; /*EnumerAble,ComparerAble*/ -public class Ordered_hash_base extends Hash_adp_base implements Ordered_hash, GfoInvkAble { - private final List_adp ordered = List_adp_.new_(); +public class Ordered_hash_base extends Hash_adp_base implements Ordered_hash, Gfo_invk { + private final List_adp ordered = List_adp_.New(); @Override protected void Add_base(Object key, Object val) { super.Add_base(key, val); ordered.Add(val); @@ -86,9 +86,9 @@ public class Ordered_hash_base extends Hash_adp_base implements Ordered_hash, Gf if (ctx.Deny()) return this; return To_str_ui(); } - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; - } static final String Invk_SetKeyOnly = "SetKeyOnly", Invk_Print = "Print"; + } static final String Invk_SetKeyOnly = "SetKeyOnly", Invk_Print = "Print"; public int Len() {return ordered.Count();} @Override public int Count() {return ordered.Count();} public Ordered_hash_base() {} diff --git a/100_core/src/gplx/Ordered_hash_tst.java b/100_core/src/gplx/Ordered_hash_tst.java index 6887adc44..a9525af4d 100644 --- a/100_core/src/gplx/Ordered_hash_tst.java +++ b/100_core/src/gplx/Ordered_hash_tst.java @@ -29,7 +29,7 @@ public class Ordered_hash_tst { hash.Add("key2", "val2"); hash.Add("key1", "val1"); - List_adp list = List_adp_.new_(); + List_adp list = List_adp_.New(); for (Object val : hash) list.Add(val); Tfds.Eq("val2", list.Get_at(0)); diff --git a/100_core/src/gplx/RandomAdp_.java b/100_core/src/gplx/RandomAdp_.java index ee45c701b..1d8db0a82 100644 --- a/100_core/src/gplx/RandomAdp_.java +++ b/100_core/src/gplx/RandomAdp_.java @@ -17,14 +17,14 @@ along with this program. If not, see . */ package gplx; import java.util.*; -public class RandomAdp_ implements GfoInvkAble { +public class RandomAdp_ implements Gfo_invk { public static RandomAdp new_() { Random random = new Random(System.currentTimeMillis()); return new RandomAdp(random); } public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_Next)) return RandomAdp_.new_().Next(m.ReadInt("max")); - else return GfoInvkAble_.Rv_unhandled; - } static final String Invk_Next = "Next"; - public static final RandomAdp_ Gfs = new RandomAdp_(); + else return Gfo_invk_.Rv_unhandled; + } static final String Invk_Next = "Next"; + public static final RandomAdp_ Gfs = new RandomAdp_(); } diff --git a/100_core/src/gplx/String_.java b/100_core/src/gplx/String_.java index 0f8ae794f..18c55e6bd 100644 --- a/100_core/src/gplx/String_.java +++ b/100_core/src/gplx/String_.java @@ -18,8 +18,8 @@ along with this program. If not, see . package gplx; import java.lang.*; import gplx.core.strings.*; import gplx.langs.gfs.*; import gplx.core.envs.*; -public class String_ implements GfoInvkAble { - public static final Class Cls_ref_type = String.class; +public class String_ implements Gfo_invk { + public static final Class Cls_ref_type = String.class; public static final String Cls_val_name = "str" + "ing"; public static final int Find_none = -1, Pos_neg1 = -1; public static final String Null = null, Empty = "", Null_mark = "<>", Tab = "\t", Lf = "\n", CrLf = "\r\n"; @@ -339,7 +339,7 @@ public class String_ implements GfoInvkAble { public static String[] Ary(String... ary) {return ary;} public static String[] Ary_wo_null(String... ary) { - List_adp list = List_adp_.new_(); + List_adp list = List_adp_.New(); int len = ary.length; for (int i = 0; i < len; ++i) { String itm = ary[i]; @@ -354,10 +354,10 @@ public class String_ implements GfoInvkAble { sb.Add(s).Add(";"); return sb.To_str(); } - public static final String[] Ary_empty = new String[0]; + public static final String[] Ary_empty = new String[0]; public static String[] Split(String raw, char dlm) {return Split(raw, dlm, false);} public static String[] Split(String raw, char dlm, boolean addEmptyIfDlmIsLast) { - List_adp list = List_adp_.new_(); String_bldr sb = String_bldr_.new_(); + List_adp list = List_adp_.New(); String_bldr sb = String_bldr_.new_(); int rawLen = String_.Len(raw); char c = '\0'; for (int i = 0; i < rawLen; i++) { c = String_.CharAt(raw, i); @@ -433,7 +433,7 @@ public class String_ implements GfoInvkAble { if (String_.Eq(s, "") // "".Split('a') return array with one member: "" || String_.Eq(spr, "")) // "a".Split('\0') returns array with one member: "a" return new String[] {s}; - List_adp list = List_adp_.new_(); String_bldr sb = String_bldr_.new_(); + List_adp list = List_adp_.New(); String_bldr sb = String_bldr_.new_(); int i = 0, sprPos = 0; boolean sprMatched = false; char spr0 = CharAt(spr, 0); int textLength = Len(s); int sprLength = Len(spr); while (true) { @@ -485,9 +485,9 @@ public class String_ implements GfoInvkAble { if (ctx.Deny()) return this; return PadBgn(s, totalLen, pad); } - else return GfoInvkAble_.Rv_unhandled; - } public static final String Invk_Replace = "Replace", Invk_Len = "Len", Invk_PadBgn = "PadBgn"; - public static final String_ Gfs = new String_(); + else return Gfo_invk_.Rv_unhandled; + } public static final String Invk_Replace = "Replace", Invk_Len = "Len", Invk_PadBgn = "PadBgn"; + public static final String_ Gfs = new String_(); public static String Extract_after_bwd(String src, String dlm) { int dlm_pos = String_.FindBwd(src, dlm); if (dlm_pos == String_.Find_none) return String_.Empty; int src_len = String_.Len(src); if (dlm_pos == src_len - 1) return String_.Empty; @@ -510,13 +510,13 @@ public class String_ implements GfoInvkAble { return rv; } public static String [] Ary_filter(String[] src, String[] filter) { - Hash_adp hash = Hash_adp_.new_(); + Hash_adp hash = Hash_adp_.New(); int len = filter.length; for (int i = 0; i < len; i++) { String itm = filter[i]; hash.Add_if_dupe_use_nth(itm, itm); } - List_adp rv = List_adp_.new_(); + List_adp rv = List_adp_.New(); len = src.length; for (int i = 0; i < len; i++) { String itm = src[i]; @@ -551,7 +551,7 @@ public class String_ implements GfoInvkAble { } public static String To_str__as_kv_ary(String... ary) { int len = ary.length; - Bry_bfr bfr = Bry_bfr.new_(); + Bry_bfr bfr = Bry_bfr_.New(); for (int i = 0; i < len; i+=2) { bfr.Add_str_u8(ary[i]).Add_byte_eq(); String val = i + 1 < len ? ary[i + 1] : null; diff --git a/100_core/src/gplx/Tfds.java b/100_core/src/gplx/Tfds.java index 773aca064..86b44ec21 100644 --- a/100_core/src/gplx/Tfds.java +++ b/100_core/src/gplx/Tfds.java @@ -80,7 +80,7 @@ public class Tfds { // URL:doc/gplx.tfds/Tfds.txt throw Err_.new_wo_type(msg); } static void Eq_ary_wkr(Object lhsAry, Object rhsAry, boolean compareUsingEquals, String customMsg) { - List_adp list = List_adp_.new_(); boolean pass = true; + List_adp list = List_adp_.New(); boolean pass = true; int lhsLen = Array_.Len(lhsAry), rhsLen = Array_.Len(rhsAry); for (int i = 0; i < lhsLen; i++) { Object lhs = Array_.Get_at(lhsAry, i); @@ -103,7 +103,7 @@ public class Tfds { // URL:doc/gplx.tfds/Tfds.txt throw Err_.new_wo_type(msg); } static void Eq_list_wkr(List_adp lhsList, List_adp rhsList, TfdsEqListItmStr xtoStr, String customMsg) { - List_adp list = List_adp_.new_(); boolean pass = true; + List_adp list = List_adp_.New(); boolean pass = true; int lhsLen = lhsList.Count(), rhsLen = rhsList.Count(); for (int i = 0; i < lhsLen; i++) { Object lhs = lhsList.Get_at(i); diff --git a/100_core/src/gplx/TfdsTstr_fxt.java b/100_core/src/gplx/TfdsTstr_fxt.java index b206ecb34..e651388af 100644 --- a/100_core/src/gplx/TfdsTstr_fxt.java +++ b/100_core/src/gplx/TfdsTstr_fxt.java @@ -66,7 +66,7 @@ public class TfdsTstr_fxt { sb.Add(String_.Repeat("_", 80)); throw Err_.new_wo_type(sb.To_str()); } - List_adp list = List_adp_.new_(); + List_adp list = List_adp_.New(); public static TfdsTstr_fxt new_() {return new TfdsTstr_fxt();} TfdsTstr_fxt() {} } class TfdsTstrItm { @@ -95,5 +95,5 @@ class TfdsTstrItm { return compareResult == 1 ? "==" : "!="; } public static TfdsTstrItm new_() {return new TfdsTstrItm();} TfdsTstrItm() {} - public static final int CompareResult_none = 0, CompareResult_eq = 1, CompareResult_eqn = 2; + public static final int CompareResult_none = 0, CompareResult_eq = 1, CompareResult_eqn = 2; } diff --git a/100_core/src/gplx/Time_span.java b/100_core/src/gplx/Time_span.java index 83f082e3a..daa3f67f8 100644 --- a/100_core/src/gplx/Time_span.java +++ b/100_core/src/gplx/Time_span.java @@ -25,6 +25,9 @@ public class Time_span implements CompareAble { // NOTE: gplx.Time_span b/c Syst public Decimal_adp Total_days() { return Decimal_adp_.divide_(fracs, Time_span_.Divisors[Time_span_.Idx_Hour] * 24); } + public Decimal_adp Total_hours() { + return Decimal_adp_.divide_(fracs, Time_span_.Divisors[Time_span_.Idx_Hour]); + } public int[] Units() {return Time_span_.Split_long(fracs, Time_span_.Divisors);} public int Units_fracs() { int[] ary = Time_span_.Split_long(fracs, Time_span_.Divisors); diff --git a/100_core/src/gplx/UsrMsg.java b/100_core/src/gplx/UsrMsg.java index 9e6200e00..47e05c432 100644 --- a/100_core/src/gplx/UsrMsg.java +++ b/100_core/src/gplx/UsrMsg.java @@ -59,10 +59,10 @@ public class UsrMsg { rv.hdr = hdr; return rv; } - public static UsrMsg invk_(GfoInvkAble invk, String cmd) { + public static UsrMsg invk_(Gfo_invk invk, String cmd) { UsrMsg rv = new UsrMsg(); rv.invk = invk; rv.cmd = cmd; return rv; - } GfoInvkAble invk; String cmd; + } Gfo_invk invk; String cmd; } diff --git a/100_core/src/gplx/UsrMsgWkr.java b/100_core/src/gplx/UsrMsgWkr.java index 1b41cb375..b9437e916 100644 --- a/100_core/src/gplx/UsrMsgWkr.java +++ b/100_core/src/gplx/UsrMsgWkr.java @@ -25,7 +25,7 @@ class UsrMsgWkrList { wkr = v; else { if (list == null) { - list = List_adp_.new_(); + list = List_adp_.New(); list.Add(wkr); wkr = null; } diff --git a/100_core/src/gplx/UsrMsgWkr_test.java b/100_core/src/gplx/UsrMsgWkr_test.java index b3129b509..f24746a71 100644 --- a/100_core/src/gplx/UsrMsgWkr_test.java +++ b/100_core/src/gplx/UsrMsgWkr_test.java @@ -34,5 +34,5 @@ public class UsrMsgWkr_test implements UsrMsgWkr { dlg.Reg(UsrMsgWkr_.Type_Warn, wkr); return wkr; } - List_adp msgs = List_adp_.new_(); + List_adp msgs = List_adp_.New(); } diff --git a/400_xowa/src/gplx/core/brys/Bry_bfr_able.java b/100_core/src/gplx/core/brys/Bry_bfr_able.java similarity index 100% rename from 400_xowa/src/gplx/core/brys/Bry_bfr_able.java rename to 100_core/src/gplx/core/brys/Bry_bfr_able.java diff --git a/400_xowa/src/gplx/core/brys/Bry_bfr_able_.java b/100_core/src/gplx/core/brys/Bry_bfr_able_.java similarity index 100% rename from 400_xowa/src/gplx/core/brys/Bry_bfr_able_.java rename to 100_core/src/gplx/core/brys/Bry_bfr_able_.java diff --git a/100_core/src/gplx/core/brys/Bry_bfr_mkr_mgr.java b/100_core/src/gplx/core/brys/Bry_bfr_mkr_mgr.java index df626ac24..49a09977d 100644 --- a/100_core/src/gplx/core/brys/Bry_bfr_mkr_mgr.java +++ b/100_core/src/gplx/core/brys/Bry_bfr_mkr_mgr.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.core.brys; import gplx.*; import gplx.core.*; public class Bry_bfr_mkr_mgr { - private final Object thread_lock = new Object(); + private final Object thread_lock = new Object(); private Bry_bfr[] used = Bry_bfr_.Ary_empty; private int used_len = 0, used_max = 0; private int[] free; private int free_len; private int reset; public Bry_bfr_mkr_mgr(byte mgr_id, int reset) {// NOTE: random IndexOutOfBounds errors in Get around free[--free_len] with free_len being -1; put member variable initialization within thread_lock to try to avoid; DATE:2014-09-21 @@ -39,7 +39,7 @@ public class Bry_bfr_mkr_mgr { rv_idx = used_len++; rv = used[rv_idx]; if (rv == null) { - rv = Bry_bfr.reset_(reset); + rv = Bry_bfr_.Reset(reset); used[rv_idx] = rv; } } diff --git a/100_core/src/gplx/core/brys/Bry_rdr.java b/100_core/src/gplx/core/brys/Bry_rdr.java index ac722b197..72a768d64 100644 --- a/100_core/src/gplx/core/brys/Bry_rdr.java +++ b/100_core/src/gplx/core/brys/Bry_rdr.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.core.brys; import gplx.*; import gplx.core.*; import gplx.core.errs.*; import gplx.core.btries.*; public class Bry_rdr { - private final gplx.core.primitives.Int_obj_ref pos_ref = gplx.core.primitives.Int_obj_ref.neg1_(); + private final gplx.core.primitives.Int_obj_ref pos_ref = gplx.core.primitives.Int_obj_ref.New_neg1(); public byte[] Src() {return src;} protected byte[] src; public int Src_end() {return src_end;} protected int src_end; public int Pos() {return pos;} protected int pos; diff --git a/100_core/src/gplx/core/brys/args/Bfr_arg__time_tst.java b/100_core/src/gplx/core/brys/args/Bfr_arg__time_tst.java index 380b89a1c..235b4eb8e 100644 --- a/100_core/src/gplx/core/brys/args/Bfr_arg__time_tst.java +++ b/100_core/src/gplx/core/brys/args/Bfr_arg__time_tst.java @@ -34,7 +34,7 @@ class Time_fmtr_arg_fxt { return this; } Bfr_arg__time arg; public void XferAry(int seconds, String expd) { - Bry_bfr bfr = Bry_bfr.reset_(255); + Bry_bfr bfr = Bry_bfr_.Reset(255); arg.Seconds_(seconds); arg.Bfr_arg__add(bfr); Tfds.Eq(expd, bfr.To_str()); diff --git a/100_core/src/gplx/core/brys/fmtrs/Bry_fmtr.java b/100_core/src/gplx/core/brys/fmtrs/Bry_fmtr.java index 25c54ffd3..4d93b11cf 100644 --- a/100_core/src/gplx/core/brys/fmtrs/Bry_fmtr.java +++ b/100_core/src/gplx/core/brys/fmtrs/Bry_fmtr.java @@ -23,7 +23,7 @@ public class Bry_fmtr { public Bry_fmtr_eval_mgr Eval_mgr() {return eval_mgr;} public Bry_fmtr Eval_mgr_(Bry_fmtr_eval_mgr v) {eval_mgr = v; return this;} Bry_fmtr_eval_mgr eval_mgr = Bry_fmtr_eval_mgr_gfs.Instance; public Bry_fmtr Fmt_(byte[] v) {fmt = v; dirty = true; return this;} public Bry_fmtr Fmt_(String v) {return Fmt_(Bry_.new_u8(v));} public Bry_fmtr Keys_(String... ary) { - if (keys == null) keys = Hash_adp_.new_(); + if (keys == null) keys = Hash_adp_.New(); else keys.Clear(); int ary_len = ary.length; for (int i = 0; i < ary_len; i++) @@ -121,12 +121,12 @@ public class Bry_fmtr { public boolean Fail_when_invalid_escapes() {return fail_when_invalid_escapes;} public Bry_fmtr Fail_when_invalid_escapes_(boolean v) {fail_when_invalid_escapes = v; return this;} private boolean fail_when_invalid_escapes = true; public Bry_fmtr Compile() { synchronized (this) { // THREAD: DATE:2015-04-29 - Bry_bfr lkp_bfr = Bry_bfr.new_(16); + Bry_bfr lkp_bfr = Bry_bfr_.New_w_size(16); int fmt_len = fmt.length; int fmt_end = fmt_len - 1; int fmt_pos = 0; byte[] trg_bry = new byte[fmt_len]; int trg_pos = 0; boolean lkp_is_active = false, lkp_is_numeric = true; byte nxt_byte, tmp_byte; - List_adp list = List_adp_.new_(); + List_adp list = List_adp_.New(); fmt_args_exist = false; while (true) { if (fmt_pos > fmt_end) break; @@ -230,8 +230,8 @@ public class Bry_fmtr { public boolean Fmt_args_exist() {return fmt_args_exist;} private boolean fmt_args_exist; boolean dirty = true; int baseInt = 0; - public static final byte char_escape = Byte_ascii.Tilde, char_arg_bgn = Byte_ascii.Curly_bgn, char_arg_end = Byte_ascii.Curly_end, char_escape_nl = Byte_ascii.Ltr_n, char_escape_tab = Byte_ascii.Ltr_t, char_eval_bgn = Byte_ascii.Lt, char_eval_end = Byte_ascii.Gt; - public static final Bry_fmtr Null = new Bry_fmtr().Fmt_(""); + public static final byte char_escape = Byte_ascii.Tilde, char_arg_bgn = Byte_ascii.Curly_bgn, char_arg_end = Byte_ascii.Curly_end, char_escape_nl = Byte_ascii.Ltr_n, char_escape_tab = Byte_ascii.Ltr_t, char_eval_bgn = Byte_ascii.Lt, char_eval_end = Byte_ascii.Gt; + public static final Bry_fmtr Null = new Bry_fmtr().Fmt_(""); public static Bry_fmtr tmp_() {return new Bry_fmtr().Fmt_("").Keys_();} public static Bry_fmtr new_(String fmt, String... keys) {return new Bry_fmtr().Fmt_(fmt).Keys_(keys);} // NOTE: keys may seem redundant, but are needed to align ordinals with proc; EX: fmt may be "~{A} ~{B}" or "~{B} ~{A}"; call will always be Bld(a, b); passing in "A", "B" guarantees A is 0 and B is 1; public static Bry_fmtr new_(byte[] fmt, String... keys) {return new Bry_fmtr().Fmt_(fmt).Keys_(keys);} // NOTE: keys may seem redundant, but are needed to align ordinals with proc; EX: fmt may be "~{A} ~{B}" or "~{B} ~{A}"; call will always be Bld(a, b); passing in "A", "B" guarantees A is 0 and B is 1; @@ -255,9 +255,9 @@ public class Bry_fmtr { tmp_bfr.Add_byte(Byte_ascii.Apos); } return tmp_bfr.To_str_and_clear(); - } static Bry_bfr tmp_bfr = Bry_bfr.reset_(255); + } static Bry_bfr tmp_bfr = Bry_bfr_.Reset(255); public void Bld_bfr_many_and_set_fmt(Object... args) { - Bry_bfr bfr = Bry_bfr.new_(); + Bry_bfr bfr = Bry_bfr_.New(); this.Bld_bfr_many(bfr, args); byte[] bry = bfr.To_bry_and_clear(); this.Fmt_(bry).Compile(); diff --git a/100_core/src/gplx/core/brys/fmtrs/Bry_fmtr_eval_mgr_.java b/100_core/src/gplx/core/brys/fmtrs/Bry_fmtr_eval_mgr_.java index 830f1fb8c..1ee762d95 100644 --- a/100_core/src/gplx/core/brys/fmtrs/Bry_fmtr_eval_mgr_.java +++ b/100_core/src/gplx/core/brys/fmtrs/Bry_fmtr_eval_mgr_.java @@ -19,7 +19,7 @@ package gplx.core.brys.fmtrs; import gplx.*; import gplx.core.*; import gplx.cor public class Bry_fmtr_eval_mgr_ { public static Io_url Eval_url(Bry_fmtr_eval_mgr eval_mgr, byte[] fmt) { if (eval_mgr == null) return Io_url_.new_any_(String_.new_u8(fmt)); - Bry_bfr bfr = Bry_bfr.reset_(255); + Bry_bfr bfr = Bry_bfr_.Reset(255); Bry_fmtr fmtr = Bry_fmtr.tmp_(); fmtr.Eval_mgr_(eval_mgr).Fmt_(fmt).Bld_bfr_none(bfr); return Io_url_.new_any_(bfr.To_str_and_clear()); diff --git a/100_core/src/gplx/core/brys/fmtrs/Bry_fmtr_tst.java b/100_core/src/gplx/core/brys/fmtrs/Bry_fmtr_tst.java index 9bbe99a81..409242a00 100644 --- a/100_core/src/gplx/core/brys/fmtrs/Bry_fmtr_tst.java +++ b/100_core/src/gplx/core/brys/fmtrs/Bry_fmtr_tst.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.core.brys.fmtrs; import gplx.*; import gplx.core.*; import gplx.core.brys.*; import org.junit.*; public class Bry_fmtr_tst { - private final Bry_fmtr_fxt fxt = new Bry_fmtr_fxt(); + private final Bry_fmtr_fxt fxt = new Bry_fmtr_fxt(); @Test public void Text() {fxt.Clear().Fmt("a").Test("a");} @Test public void Idx__1() {fxt.Clear().Fmt("~{0}").Args("a").Test("a");} @Test public void Idx__3() {fxt.Clear().Fmt("~{0}~{1}~{2}").Args("a", "b", "c").Test("abc");} @@ -55,8 +55,8 @@ class Bry_fmtr_tst_mok implements Bry_fmtr_eval_mgr { } } class Bry_fmtr_fxt { - private final Bry_fmtr fmtr = Bry_fmtr.new_(); - private final Bry_bfr bfr = Bry_bfr.new_(); + private final Bry_fmtr fmtr = Bry_fmtr.new_(); + private final Bry_bfr bfr = Bry_bfr_.New(); private Object[] args; public Bry_fmtr_fxt Clear() {fmtr.Fmt_(String_.Empty).Keys_(String_.Empty); args = Object_.Ary_empty; return this;} public Bry_fmtr_fxt Fmt (String fmt) {fmtr.Fmt_(fmt); return this;} diff --git a/100_core/src/gplx/core/brys/fmts/Bry_fmt_parser_.java b/100_core/src/gplx/core/brys/fmts/Bry_fmt_parser_.java index 4a9a3df6b..f33b40b90 100644 --- a/100_core/src/gplx/core/brys/fmts/Bry_fmt_parser_.java +++ b/100_core/src/gplx/core/brys/fmts/Bry_fmt_parser_.java @@ -23,7 +23,7 @@ public class Bry_fmt_parser_ { int txt_bgn = -1; int key_idx = -1; Hash_adp_bry keys_hash = Hash_adp_bry.cs(); - List_adp list = List_adp_.new_(); + List_adp list = List_adp_.New(); while (true) { boolean is_last = pos == src_len; byte b = is_last ? escape : src[pos]; @@ -89,5 +89,5 @@ public class Bry_fmt_parser_ { pos = rhs_pos + 1; } return (byte[][])list.To_ary(byte[].class); - } private static final byte[] Bry_arg_lhs = Bry_.new_a7("~{"); + } private static final byte[] Bry_arg_lhs = Bry_.new_a7("~{"); } diff --git a/100_core/src/gplx/core/brys/fmts/Bry_fmt_tst.java b/100_core/src/gplx/core/brys/fmts/Bry_fmt_tst.java index 9fa561e07..a44d96bae 100644 --- a/100_core/src/gplx/core/brys/fmts/Bry_fmt_tst.java +++ b/100_core/src/gplx/core/brys/fmts/Bry_fmt_tst.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.core.brys.fmts; import gplx.*; import gplx.core.*; import gplx.core.brys.*; import org.junit.*; public class Bry_fmt_tst { - private final Bry_fmt_fxt fxt = new Bry_fmt_fxt(); + private final Bry_fmt_fxt fxt = new Bry_fmt_fxt(); @Test public void Text() {fxt.Clear().Fmt("a").Test("a");} @Test public void Key__basic() {fxt.Clear().Fmt("~{key}").Vals("a").Test("a");} @Test public void Key__mult() {fxt.Clear().Fmt("~{key1}~{key2}").Vals("a", "b").Test("ab");} @@ -37,8 +37,8 @@ class Bfr_fmt_arg_mok implements Bfr_arg { } } class Bry_fmt_fxt { - private final Bry_fmt fmt = new Bry_fmt(Bry_.Empty, Bry_.Ary_empty, Bfr_fmt_arg.Ary_empty); - private final Bry_bfr bfr = Bry_bfr.new_(); + private final Bry_fmt fmt = new Bry_fmt(Bry_.Empty, Bry_.Ary_empty, Bfr_fmt_arg.Ary_empty); + private final Bry_bfr bfr = Bry_bfr_.New(); private Object[] vals; public Bry_fmt_fxt Clear() {vals = Object_.Ary_empty; return this;} public Bry_fmt_fxt Fmt(String s) {fmt.Fmt_(s); return this;} diff --git a/100_core/src/gplx/core/consoles/Console_adp__mem.java b/100_core/src/gplx/core/consoles/Console_adp__mem.java index f9b9f2ebc..82343833c 100644 --- a/100_core/src/gplx/core/consoles/Console_adp__mem.java +++ b/100_core/src/gplx/core/consoles/Console_adp__mem.java @@ -17,8 +17,8 @@ along with this program. If not, see . */ package gplx.core.consoles; import gplx.*; import gplx.core.*; public class Console_adp__mem implements Console_adp { - private final List_adp written = List_adp_.new_(); - private final Hash_adp ignored = Hash_adp_.new_(); + private final List_adp written = List_adp_.New(); + private final Hash_adp ignored = Hash_adp_.New(); public boolean Enabled() {return true;} public boolean Canceled_chk() {return false;} public int Chars_per_line_max() {return 80;} public void Chars_per_line_max_(int v) {} diff --git a/100_core/src/gplx/core/criterias/Criteria_fld.java b/100_core/src/gplx/core/criterias/Criteria_fld.java index d3fca2c6f..2ea7fe71e 100644 --- a/100_core/src/gplx/core/criterias/Criteria_fld.java +++ b/100_core/src/gplx/core/criterias/Criteria_fld.java @@ -19,9 +19,9 @@ package gplx.core.criterias; import gplx.*; import gplx.core.*; public class Criteria_fld implements Criteria { Criteria_fld(String pre, String key, Criteria crt) {this.pre = pre; this.key = key; this.crt = crt;} public byte Tid() {return Criteria_.Tid_wrapper;} - public String Pre() {return pre;} private final String pre; - public String Key() {return key;} private final String key; - public Criteria Crt() {return crt;} private final Criteria crt; + public String Pre() {return pre;} private final String pre; + public String Key() {return key;} private final String key; + public Criteria Crt() {return crt;} private final Criteria crt; public String Pre_w_key() {return pre == Pre_null ? key : String_.Concat(pre, ".", key);} public void Val_as_obj_(Object v) {throw Err_.new_unimplemented();} public void Val_from_args(Hash_adp args) { @@ -30,9 +30,9 @@ public class Criteria_fld implements Criteria { crt.Val_as_obj_(o); } public boolean Matches(Object invkObj) { - GfoInvkAble invk = (GfoInvkAble)invkObj; + Gfo_invk invk = (Gfo_invk)invkObj; if (key == Criteria_fld.Key_null) return crt.Matches(invkObj); - Object comp = GfoInvkAble_.InvkCmd(invk, this.Pre_w_key()); + Object comp = Gfo_invk_.Invk_by_key(invk, this.Pre_w_key()); return crt.Matches(comp); } public String To_str() {return String_.Concat(key, " ", crt.To_str());} diff --git a/100_core/src/gplx/core/envs/Env_.java b/100_core/src/gplx/core/envs/Env_.java index 37f60d1a5..6d66bdc9a 100644 --- a/100_core/src/gplx/core/envs/Env_.java +++ b/100_core/src/gplx/core/envs/Env_.java @@ -96,8 +96,4 @@ public class Env_ { Env_prop_key__user_language = "user.language" , Env_prop_key__java_version = "java.version" ; - public static void Term_add(GfoInvkAble invk, String cmd) { - Thread_adp thread = Thread_adp_.invk_(invk, cmd); - Runtime.getRuntime().addShutdownHook(thread.Under_thread()); - } } diff --git a/100_core/src/gplx/core/envs/Process_adp.java b/100_core/src/gplx/core/envs/Process_adp.java index 337276242..14491d5e4 100644 --- a/100_core/src/gplx/core/envs/Process_adp.java +++ b/100_core/src/gplx/core/envs/Process_adp.java @@ -19,10 +19,11 @@ package gplx.core.envs; import gplx.*; import gplx.core.*; import gplx.Bool_; import gplx.Bry_; import gplx.Bry_bfr; +import gplx.Bry_bfr_; import gplx.Err_; -import gplx.GfoInvkAble; -import gplx.GfoInvkAbleCmd; -import gplx.GfoInvkAble_; +import gplx.Gfo_invk; +import gplx.Gfo_invk_cmd; +import gplx.Gfo_invk_; import gplx.GfoMsg; import gplx.Gfo_usr_dlg; import gplx.Gfo_usr_dlg_; @@ -45,7 +46,7 @@ import java.io.InputStreamReader; import javax.management.RuntimeErrorException; import gplx.core.brys.fmtrs.*; import gplx.core.strings.*; import gplx.langs.gfs.*; -public class Process_adp implements GfoInvkAble, Rls_able { +public class Process_adp implements Gfo_invk, Rls_able { public boolean Enabled() {return enabled;} public Process_adp Enabled_(boolean v) {enabled = v; return this;} private boolean enabled = true; public byte Exe_exists() {return exe_exists;} public Process_adp Exe_exists_(byte v) {exe_exists = v; return this;} private byte exe_exists = Bool_.__byte; public Io_url Exe_url() {return exe_url;} public Process_adp Exe_url_(Io_url val) {exe_url = val; exe_exists = Bool_.__byte; return this;} Io_url exe_url; @@ -58,28 +59,28 @@ public class Process_adp implements GfoInvkAble, Rls_able { public String Rslt_out() {return rslt_out;} private String rslt_out; public Io_url Working_dir() {return working_dir;} public Process_adp Working_dir_(Io_url v) {working_dir = v; return this;} Io_url working_dir; public Process_adp Cmd_args(String cmd, String args) {this.Exe_url_(Io_url_.new_fil_(cmd)); this.args_fmtr.Fmt_(args); return this;} - public Process_adp WhenBgn_add(GfoInvkAbleCmd cmd) {whenBgnList.Add(cmd); return this;} - public Process_adp WhenBgn_del(GfoInvkAbleCmd cmd) {whenBgnList.Del(cmd); return this;} + public Process_adp WhenBgn_add(Gfo_invk_cmd cmd) {whenBgnList.Add(cmd); return this;} + public Process_adp WhenBgn_del(Gfo_invk_cmd cmd) {whenBgnList.Del(cmd); return this;} public int Thread_timeout() {return thread_timeout;} public Process_adp Thread_timeout_seconds_(int v) {thread_timeout = v * 1000; return this;} int thread_timeout = 0; public int Thread_interval() {return thread_interval;} public Process_adp Thread_interval_(int v) {thread_interval = v; return this;} int thread_interval = 20; public String Thread_kill_name() {return thread_kill_name;} public Process_adp Thread_kill_name_(String v) {thread_kill_name = v; return this;} private String thread_kill_name = ""; public Io_url Tmp_dir() {return tmp_dir;} @gplx.Virtual public Process_adp Tmp_dir_(Io_url v) {tmp_dir = v; return this;} Io_url tmp_dir; - private Process_adp WhenBgn_run() {return Invk_cmds(whenBgnList);} List_adp whenBgnList = List_adp_.new_(); - public Process_adp WhenEnd_add(GfoInvkAbleCmd cmd) {whenEndList.Add(cmd); return this;} - public Process_adp WhenEnd_del(GfoInvkAbleCmd cmd) {whenEndList.Del(cmd); return this;} + private Process_adp WhenBgn_run() {return Invk_cmds(whenBgnList);} List_adp whenBgnList = List_adp_.New(); + public Process_adp WhenEnd_add(Gfo_invk_cmd cmd) {whenEndList.Add(cmd); return this;} + public Process_adp WhenEnd_del(Gfo_invk_cmd cmd) {whenEndList.Del(cmd); return this;} public Gfo_usr_dlg Prog_dlg() {return prog_dlg;} public Process_adp Prog_dlg_(Gfo_usr_dlg v) {prog_dlg = v; return this;} Gfo_usr_dlg prog_dlg; public String Prog_fmt() {return prog_fmt;} public Process_adp Prog_fmt_(String v) {prog_fmt = v; return this;} private String prog_fmt = ""; // NOTE: set to "", else cmds that do not set prog_fmt will fail on fmtr.Fmt(null) - private GfoInvkAble owner; - private Process_adp WhenEnd_run() {return Invk_cmds(whenEndList);} List_adp whenEndList = List_adp_.new_(); + private Gfo_invk owner; + private Process_adp WhenEnd_run() {return Invk_cmds(whenEndList);} List_adp whenEndList = List_adp_.New(); private Process_adp Invk_cmds(List_adp list) { for (Object o : list) - ((GfoInvkAbleCmd)o).Invk(); + ((Gfo_invk_cmd)o).Exec(); return this; } public Process_adp Run(Object... args) { if (String_.Len_eq_0(exe_url.Raw())) return this; // noop if exe_url is ""; if (!args_fmtr.Fmt_null()) { - Bry_bfr tmp_bfr = Bry_bfr.new_(); + Bry_bfr tmp_bfr = Bry_bfr_.New(); args_fmtr.Bld_bfr_many(tmp_bfr, args); args_str = tmp_bfr.To_str_and_clear(); } @@ -108,12 +109,12 @@ public class Process_adp implements GfoInvkAble, Rls_able { else if (ctx.Match(k, Invk_timeout_)) thread_timeout = m.ReadInt("v"); else if (ctx.Match(k, Invk_tmp_dir_)) tmp_dir = m.ReadIoUrl("v"); else if (ctx.Match(k, Invk_owner)) return owner; - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } - static final String Invk_cmd = "cmd", Invk_cmd_ = "cmd_", Invk_args = "args", Invk_args_ = "args_", Invk_cmd_args_ = "cmd_args_", Invk_enabled = "enabled", Invk_enabled_ = "enabled_", Invk_mode_ = "mode_", Invk_timeout_ = "timeout_", Invk_tmp_dir_ = "tmp_dir_", Invk_owner = "owner"; + static final String Invk_cmd = "cmd", Invk_cmd_ = "cmd_", Invk_args = "args", Invk_args_ = "args_", Invk_cmd_args_ = "cmd_args_", Invk_enabled = "enabled", Invk_enabled_ = "enabled_", Invk_mode_ = "mode_", Invk_timeout_ = "timeout_", Invk_tmp_dir_ = "tmp_dir_", Invk_owner = "owner"; Bry_fmtr_eval_mgr cmd_url_eval; - public static Process_adp ini_(GfoInvkAble owner, Gfo_usr_dlg usr_dlg, Process_adp process, Bry_fmtr_eval_mgr cmd_url_eval, byte run_mode, int timeout, String cmd_url_fmt, String args_fmt, String... args_keys) { + public static Process_adp ini_(Gfo_invk owner, Gfo_usr_dlg usr_dlg, Process_adp process, Bry_fmtr_eval_mgr cmd_url_eval, byte run_mode, int timeout, String cmd_url_fmt, String args_fmt, String... args_keys) { process.Run_mode_(run_mode).Thread_timeout_seconds_(timeout); process.cmd_url_eval = cmd_url_eval; Io_url cmd_url = Bry_fmtr_eval_mgr_.Eval_url(cmd_url_eval, Bry_.new_u8(cmd_url_fmt)); @@ -130,7 +131,7 @@ public class Process_adp implements GfoInvkAble, Rls_able { : exe_args ; } - private Bry_fmtr notify_fmtr = Bry_fmtr.new_("", "process_exe_name", "process_exe_args", "process_seconds"); Bry_bfr notify_bfr = Bry_bfr.reset_(255); + private Bry_fmtr notify_fmtr = Bry_fmtr.new_("", "process_exe_name", "process_exe_args", "process_seconds"); Bry_bfr notify_bfr = Bry_bfr_.Reset(255); public Process UnderProcess() {return process;} Process process; public void Rls() {if (process != null) process.destroy();} public Process_adp Run_wait_sync() { @@ -276,7 +277,7 @@ public class Process_adp implements GfoInvkAble, Rls_able { process.Process_run_and_end(); return; } - public static final List_adp Test_runs = List_adp_.new_(); + public static final List_adp Test_runs = List_adp_.New(); private Process_adp Test_runs_add() {Test_runs.Add(exe_url.Raw() + " " + args_str); exit_code = Exit_pass; return this;} public static int run_wait_arg_(Io_url url, String arg) { Process_adp process = new Process_adp(); @@ -286,7 +287,7 @@ public class Process_adp implements GfoInvkAble, Rls_able { private static final String GRP_KEY = "gplx.process"; public static final int Exit_pass = 0, Exit_init = -1; public static String[] Xto_process_bldr_args_utl(Io_url exe_url, String args_str) { - List_adp list = List_adp_.new_(); + List_adp list = List_adp_.New(); list.Add(exe_url.Xto_api()); String_bldr sb = String_bldr_.new_(); int len = String_.Len(args_str); diff --git a/100_core/src/gplx/core/gfo_ndes/GfoFldList_.java b/100_core/src/gplx/core/gfo_ndes/GfoFldList_.java index aec972556..c396d0fc9 100644 --- a/100_core/src/gplx/core/gfo_ndes/GfoFldList_.java +++ b/100_core/src/gplx/core/gfo_ndes/GfoFldList_.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.core.gfo_ndes; import gplx.*; import gplx.core.*; import gplx.core.strings.*; import gplx.core.type_xtns.*; public class GfoFldList_ { - public static final GfoFldList Null = new GfoFldList_null(); + public static final GfoFldList Null = new GfoFldList_null(); public static GfoFldList new_() {return new GfoFldList_base();} public static GfoFldList str_(String... names) { GfoFldList rv = new GfoFldList_base(); @@ -32,7 +32,7 @@ class GfoFldList_base implements GfoFldList { public boolean Has(String key) {return hash.Has(key);} public int Idx_of(String key) { Object rv = idxs.Get_by(key); - return rv == null ? List_adp_.NotFound : Int_.cast(rv); + return rv == null ? List_adp_.Not_found : Int_.cast(rv); } public GfoFld Get_at(int i) {return (GfoFld)hash.Get_at(i);} public GfoFld FetchOrNull(String key) {return (GfoFld)hash.Get_by(key);} @@ -50,12 +50,12 @@ class GfoFldList_base implements GfoFldList { } return sb.To_str(); } - Ordered_hash hash = Ordered_hash_.New(); Hash_adp idxs = Hash_adp_.new_(); // PERF: idxs used for Idx_of; need to recalc if Del ever added + Ordered_hash hash = Ordered_hash_.New(); Hash_adp idxs = Hash_adp_.New(); // PERF: idxs used for Idx_of; need to recalc if Del ever added } class GfoFldList_null implements GfoFldList { public int Count() {return 0;} public boolean Has(String key) {return false;} - public int Idx_of(String key) {return List_adp_.NotFound;} + public int Idx_of(String key) {return List_adp_.Not_found;} public GfoFld Get_at(int i) {return GfoFld.Null;} public GfoFld FetchOrNull(String key) {return null;} public GfoFldList Add(String key, ClassXtn typx) {return this;} diff --git a/100_core/src/gplx/core/gfo_ndes/GfoNde.java b/100_core/src/gplx/core/gfo_ndes/GfoNde.java index c438f09ae..7561405a4 100644 --- a/100_core/src/gplx/core/gfo_ndes/GfoNde.java +++ b/100_core/src/gplx/core/gfo_ndes/GfoNde.java @@ -17,9 +17,9 @@ along with this program. If not, see . */ package gplx.core.gfo_ndes; import gplx.*; import gplx.core.*; import gplx.core.strings.*; import gplx.core.stores.*; -public class GfoNde implements GfoInvkAble { +public class GfoNde implements Gfo_invk { public GfoFldList Flds() {return flds;} GfoFldList flds; - public Hash_adp EnvVars() {return envVars;} Hash_adp envVars = Hash_adp_.new_(); + public Hash_adp EnvVars() {return envVars;} Hash_adp envVars = Hash_adp_.New(); public String Name() {return name;} public GfoNde Name_(String v) {name = v; return this;} private String name; public Object ReadAt(int i) {ChkIdx(i); return ary[i];} public void WriteAt(int i, Object val) {ChkIdx(i); ary[i] = val;} diff --git a/100_core/src/gplx/core/gfo_ndes/GfoNdeList_.java b/100_core/src/gplx/core/gfo_ndes/GfoNdeList_.java index 4b54ba847..d2ebe7639 100644 --- a/100_core/src/gplx/core/gfo_ndes/GfoNdeList_.java +++ b/100_core/src/gplx/core/gfo_ndes/GfoNdeList_.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.core.gfo_ndes; import gplx.*; import gplx.core.*; import gplx.core.lists.*; /*ComparerAble*/ public class GfoNdeList_ { - public static final GfoNdeList Null = new GfoNdeList_null(); + public static final GfoNdeList Null = new GfoNdeList_null(); public static GfoNdeList new_() {return new GfoNdeList_base();} } class GfoNdeList_base implements GfoNdeList { @@ -28,7 +28,7 @@ class GfoNdeList_base implements GfoNdeList { public void Del(GfoNde rcd) {list.Del(rcd);} public void Clear() {list.Clear();} public void Sort_by(ComparerAble comparer) {list.Sort_by(comparer);} - List_adp list = List_adp_.new_(); + List_adp list = List_adp_.New(); } class GfoNdeList_null implements GfoNdeList { public int Count() {return 0;} diff --git a/100_core/src/gplx/core/gfo_ndes/GfoNde_.java b/100_core/src/gplx/core/gfo_ndes/GfoNde_.java index 9fcc0699e..3b376a9b9 100644 --- a/100_core/src/gplx/core/gfo_ndes/GfoNde_.java +++ b/100_core/src/gplx/core/gfo_ndes/GfoNde_.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.core.gfo_ndes; import gplx.*; import gplx.core.*; import gplx.core.type_xtns.*; import gplx.core.stores.*; public class GfoNde_ { - public static final GfoNde[] Ary_empty = new GfoNde[0]; + public static final GfoNde[] Ary_empty = new GfoNde[0]; public static GfoNde[] ary_(GfoNde... ary) {return ary;} public static GfoNde as_(Object obj) {return obj instanceof GfoNde ? (GfoNde)obj : null;} public static GfoNde root_(GfoNde... subs) {return new GfoNde(GfoNde_.Type_Root, "RootName", GfoFldList_.Null, Object_.Ary_empty, GfoFldList_.Null, subs);} @@ -28,7 +28,7 @@ public class GfoNde_ { public static GfoNde nde_(String name, Object[] ary, GfoNde... subs) {return new GfoNde(GfoNde_.Type_Node, name, GfoFldList_.Null, ary, GfoFldList_.Null, subs);} public static GfoNde rdr_(DataRdr rdr) { try { - List_adp rows = List_adp_.new_(); + List_adp rows = List_adp_.New(); GfoFldList flds = GfoFldList_.new_(); int fldLen = rdr.FieldCount(); for (int i = 0; i < fldLen; i++) @@ -43,5 +43,5 @@ public class GfoNde_ { } finally {rdr.Rls();} } - @gplx.Internal protected static final int Type_Leaf = 1, Type_Node = 2, Type_Root = 3; + @gplx.Internal protected static final int Type_Leaf = 1, Type_Node = 2, Type_Root = 3; } diff --git a/100_core/src/gplx/core/gfo_regys/GfoRegy.java b/100_core/src/gplx/core/gfo_regys/GfoRegy.java index 0892a743d..32cf48076 100644 --- a/100_core/src/gplx/core/gfo_regys/GfoRegy.java +++ b/100_core/src/gplx/core/gfo_regys/GfoRegy.java @@ -17,9 +17,9 @@ along with this program. If not, see . */ package gplx.core.gfo_regys; import gplx.*; import gplx.core.*; import gplx.langs.gfs.*; import gplx.core.type_xtns.*; import gplx.core.interfaces.*; -public class GfoRegy implements GfoInvkAble { +public class GfoRegy implements Gfo_invk { public int Count() {return hash.Count();} - public Hash_adp Parsers() {return parsers;} Hash_adp parsers = Hash_adp_.new_(); + public Hash_adp Parsers() {return parsers;} Hash_adp parsers = Hash_adp_.New(); public GfoRegyItm FetchOrNull(String key) {return (GfoRegyItm)hash.Get_by(key);} public Object FetchValOrFail(String key) { GfoRegyItm rv = (GfoRegyItm)hash.Get_by(key); if (rv == null) throw Err_.new_wo_type("regy does not have key", "key", key); @@ -82,14 +82,14 @@ public class GfoRegy implements GfoInvkAble { if (ctx.Deny()) return this; RegObjByType(key, val, type); } - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; - } public static final String Invk_RegDir = "RegDir", Invk_RegObj = "RegObj"; + } public static final String Invk_RegDir = "RegDir", Invk_RegObj = "RegObj"; void RegItm(String key, Object val, int valType, Io_url url) { hash.Add_if_dupe_use_nth(key, new GfoRegyItm(key, val, valType, url)); } - Hash_adp hash = Hash_adp_.new_(); - public static final String Err_ChopBgn = "chopBgn results in null key", Err_ChopEnd = "chopEnd results in null key", Err_Dupe = "key already registered"; - public static final GfoRegy Instance = new GfoRegy(); GfoRegy() {} + Hash_adp hash = Hash_adp_.New(); + public static final String Err_ChopBgn = "chopBgn results in null key", Err_ChopEnd = "chopEnd results in null key", Err_Dupe = "key already registered"; + public static final GfoRegy Instance = new GfoRegy(); GfoRegy() {} @gplx.Internal protected static GfoRegy new_() {return new GfoRegy();} } diff --git a/100_core/src/gplx/core/intls/Utf16__tst.java b/100_core/src/gplx/core/intls/Utf16__tst.java index 65be9926a..ee467cfeb 100644 --- a/100_core/src/gplx/core/intls/Utf16__tst.java +++ b/100_core/src/gplx/core/intls/Utf16__tst.java @@ -36,7 +36,7 @@ public class Utf16__tst { } } class Utf16__fxt { - private Int_obj_ref hi_ref = Int_obj_ref.neg1_(), lo_ref = Int_obj_ref.neg1_(); + private Int_obj_ref hi_ref = Int_obj_ref.New_neg1(), lo_ref = Int_obj_ref.New_neg1(); public void Test_encode_decode(int expd_c_int, int... expd_int) { byte[] expd = Bry_.New_by_ints(expd_int); byte[] bfr = new byte[10]; diff --git a/100_core/src/gplx/core/intls/Utf8__tst.java b/100_core/src/gplx/core/intls/Utf8__tst.java index 660a0a88d..7319b07e9 100644 --- a/100_core/src/gplx/core/intls/Utf8__tst.java +++ b/100_core/src/gplx/core/intls/Utf8__tst.java @@ -33,7 +33,7 @@ public class Utf8__tst { fxt.Test_Increment_char_at_last_pos("€", "₭"); // len=3 } // @Test public void Increment_char_at_last_pos_exhaustive_check() { // check all values; commented for perf -// Bry_bfr bfr = Bry_bfr.new_(); +// Bry_bfr bfr = Bry_bfr_.New(); // int bgn = 32; // while (true) { // byte[] bgn_bry = Utf16_.Encode_int_to_bry(bgn); diff --git a/100_core/src/gplx/core/ios/IoEngine.java b/100_core/src/gplx/core/ios/IoEngine.java index c7674c995..2bdc41d3e 100644 --- a/100_core/src/gplx/core/ios/IoEngine.java +++ b/100_core/src/gplx/core/ios/IoEngine.java @@ -17,6 +17,7 @@ along with this program. If not, see . */ package gplx.core.ios; import gplx.*; import gplx.core.*; import gplx.core.consoles.*; import gplx.core.criterias.*; +import gplx.core.ios.streams.*; public interface IoEngine { String Key(); boolean ExistsFil_api(Io_url url); @@ -32,6 +33,7 @@ public interface IoEngine { IoStream OpenStreamWrite(IoEngine_xrg_openWrite args); void XferFil(IoEngine_xrg_xferFil args); void RecycleFil(IoEngine_xrg_recycleFil xrg); + boolean Truncate_fil(Io_url url, long size); boolean ExistsDir(Io_url url); void CreateDir(Io_url url); // creates all folder levels (EX: C:\a\b\c\ will create C:\a\ and C:\a\b\). will not fail if called on already existing folders. diff --git a/100_core/src/gplx/core/ios/IoEnginePool.java b/100_core/src/gplx/core/ios/IoEnginePool.java index d8af70b95..9055cea51 100644 --- a/100_core/src/gplx/core/ios/IoEnginePool.java +++ b/100_core/src/gplx/core/ios/IoEnginePool.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.core.ios; import gplx.*; import gplx.core.*; public class IoEnginePool { - private final Hash_adp hash = Hash_adp_.new_(); + private final Hash_adp hash = Hash_adp_.New(); public void Add_if_dupe_use_nth(IoEngine engine) { hash.Del(engine.Key()); hash.Add(engine.Key(), engine); @@ -26,7 +26,7 @@ public class IoEnginePool { IoEngine rv = (IoEngine)hash.Get_by(key); return rv == null ? IoEngine_.Mem : rv; // rv == null when url is null or empty; return Mem which should be a noop; DATE:2013-06-04 } - public static final IoEnginePool Instance = new IoEnginePool(); + public static final IoEnginePool Instance = new IoEnginePool(); IoEnginePool() { this.Add_if_dupe_use_nth(IoEngine_.Sys); this.Add_if_dupe_use_nth(IoEngine_.Mem); diff --git a/100_core/src/gplx/core/ios/IoEngine_base.java b/100_core/src/gplx/core/ios/IoEngine_base.java index 928665fdf..b8f0816d9 100644 --- a/100_core/src/gplx/core/ios/IoEngine_base.java +++ b/100_core/src/gplx/core/ios/IoEngine_base.java @@ -16,6 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.core.ios; import gplx.*; import gplx.core.*; +import gplx.core.ios.streams.*; public abstract class IoEngine_base implements IoEngine { public abstract String Key(); public abstract boolean ExistsFil_api(Io_url url); @@ -30,6 +31,7 @@ public abstract class IoEngine_base implements IoEngine { public abstract IoStream OpenStreamRead(Io_url url); public abstract IoStream OpenStreamWrite(IoEngine_xrg_openWrite args); public abstract void XferFil(IoEngine_xrg_xferFil args); + public abstract boolean Truncate_fil(Io_url url, long size); public abstract boolean ExistsDir(Io_url url); public abstract void CreateDir(Io_url url); // creates all folder levels (EX: C:\a\b\c\ will create C:\a\ and C:\a\b\). will not fail if called on already existing folders. diff --git a/100_core/src/gplx/core/ios/IoEngine_memory.java b/100_core/src/gplx/core/ios/IoEngine_memory.java index 7ee937784..20655b553 100644 --- a/100_core/src/gplx/core/ios/IoEngine_memory.java +++ b/100_core/src/gplx/core/ios/IoEngine_memory.java @@ -16,6 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.core.ios; import gplx.*; import gplx.core.*; +import gplx.core.ios.streams.*; public class IoEngine_memory extends IoEngine_base { @Override public String Key() {return key;} private String key = IoEngine_.MemKey; @Override public boolean ExistsFil_api(Io_url url) {return FetchFil(url) != IoItmFil_mem.Null;} @@ -62,6 +63,7 @@ public class IoEngine_memory extends IoEngine_base { else SaveFilStr(args.Url(), args.Text()); } + @Override public boolean Truncate_fil(Io_url url, long size) {throw Err_.new_unimplemented();} @Override public String LoadFilStr(IoEngine_xrg_loadFilStr args) { return FetchFil(args.Url()).Text(); } @@ -190,6 +192,7 @@ public class IoEngine_memory extends IoEngine_base { byte[] bry = Bry_.new_u8(FetchFil(Io_url_.mem_fil_(xrg.Src())).Text()); return Io_stream_rdr_.mem_(bry); } + IoItmHash dirs = IoItmHash.new_(); IoEngineUtl utl = IoEngineUtl.new_(); @gplx.Internal protected static IoEngine_memory new_(String key) { diff --git a/100_core/src/gplx/core/ios/IoEngine_system.java b/100_core/src/gplx/core/ios/IoEngine_system.java index a46e8b25e..e734dcdf1 100644 --- a/100_core/src/gplx/core/ios/IoEngine_system.java +++ b/100_core/src/gplx/core/ios/IoEngine_system.java @@ -28,6 +28,8 @@ import java.util.Date; import javax.print.FlavorException; import javax.tools.JavaCompiler; import gplx.core.criterias.*; import gplx.core.bits.*; import gplx.core.envs.*; +import gplx.core.ios.streams.*; +import gplx.core.progs.*; public class IoEngine_system extends IoEngine_base { @Override public String Key() {return IoEngine_.SysKey;} @Override public void DeleteDirDeep(IoEngine_xrg_deleteDir args) {utl.DeleteDirDeep(this, args.Url(), args);} @@ -248,8 +250,7 @@ public class IoEngine_system extends IoEngine_base { MarkFileWritable(trgFil, trgUrl, args.ReadOnlyFails(), "copy"); } else { // trgFil doesn't exist; must create file first else fileNotFound exception thrown -// if (overwrite) throw Err_ - boolean rv = true; //Exception exc = null; + boolean rv = true; if (!ExistsDir(trgUrl.OwnerDir())) CreateDir(trgUrl.OwnerDir()); try { trgFil.createNewFile(); @@ -257,7 +258,6 @@ public class IoEngine_system extends IoEngine_base { IoEngine_system_xtn.SetExecutable(trgFil, true); } catch (IOException e) { -// exc = e; rv = false; } if (!rv) @@ -310,6 +310,75 @@ public class IoEngine_system extends IoEngine_base { } UpdateFilModifiedTime(trgUrl, QueryFil(srcUrl).ModifiedTime()); // must happen after file is closed } + public void CopyFil(gplx.core.progs.Gfo_prog_ui prog_ui, Io_url src_url, Io_url trg_url, boolean overwrite, boolean readonly_fails) { + // TODO:JAVA6 hidden property ignored; 1.6 does not allow OS-independent way of setting isHidden (wnt only possible through jni) + File src_fil = new File(src_url.Xto_api()), trg_fil = new File(trg_url.Xto_api()); + if (trg_fil.isFile()) { // trg_fil exists; check if overwrite set and trg_fil is writable + Chk_TrgFil_Overwrite(overwrite, trg_url); + MarkFileWritable(trg_fil, trg_url, readonly_fails, "copy"); + } + else { // trg_fil doesn't exist; must create file first else fileNotFound exception thrown + boolean rv = true; + if (!ExistsDir(trg_url.OwnerDir())) CreateDir(trg_url.OwnerDir()); + try { + trg_fil.createNewFile(); + if (!Op_sys.Cur().Tid_is_drd()) + IoEngine_system_xtn.SetExecutable(trg_fil, true); + } + catch (IOException e) { + rv = false; + } + if (!rv) + throw Err_.new_wo_type("create file failed", "trg", trg_url.Xto_api()); + } + FileInputStream src_stream = null; FileOutputStream trg_stream = null; + FileChannel src_channel = null, trg_channel = null; + try { + // make objects + try {src_stream = new FileInputStream(src_fil);} + catch (FileNotFoundException e) {throw IoErr.FileNotFound("copy", src_url);} + try {trg_stream = new FileOutputStream(trg_fil);} + catch (FileNotFoundException e) { + trg_stream = TryToUnHideFile(trg_fil, trg_url); + if (trg_stream == null) + throw IoErr.FileNotFound("copy", trg_url); +// else +// wasHidden = true; + } + src_channel = src_stream.getChannel(); + trg_channel = trg_stream.getChannel(); + + // transfer data + long pos = 0, count = 0, read = 0; + try {count = src_channel.size();} + catch (IOException e) {throw Err_.new_exc(e, "io", "size failed", "src", src_url.Xto_api());} + int buffer_size = IoEngineArgs.Instance.LoadFilStr_BufferSize; + long transfer_size = (count > buffer_size) ? buffer_size : count; // transfer as much as fileSize, but limit to LoadFilStr_BufferSize + while (pos < count) { + try {read = trg_channel.transferFrom(src_channel, pos, transfer_size);} + catch (IOException e) { + Closeable_close(src_channel, src_url, false); + Closeable_close(trg_channel, trg_url, false); + Closeable_close(src_stream, src_url, false); + Closeable_close(trg_stream, src_url, false); + throw Err_.new_exc(e, "io", "transfer data failed", "src", src_url.Xto_api(), "trg", trg_url.Xto_api()); + } + if (read == -1) break; + if (prog_ui.Prog_notify_and_chk_if_suspended(pos, count)) return; + pos += read; + } +// if (wasHidden) +// + } + finally { + // cleanup + Closeable_close(src_channel, src_url, false); + Closeable_close(trg_channel, trg_url, false); + Closeable_close(src_stream, src_url, false); + Closeable_close(trg_stream, src_url, false); + } + UpdateFilModifiedTime(trg_url, QueryFil(src_url).ModifiedTime()); // must happen after file is closed + } FileOutputStream TryToUnHideFile(File trgFil, Io_url trgUrl) { FileOutputStream trgStream = null; if (trgFil.exists()) { // WORKAROUND: java fails when writing to hidden files; unmark hidden and try again @@ -373,8 +442,8 @@ public class IoEngine_system extends IoEngine_base { XferDir(IoEngine_xrg_xferDir.copy_(src, trg)); } } - protected static void Closeable_close(Closeable closeable, Io_url url, boolean throwErr) {Closeable_close(closeable, url.Xto_api(), throwErr);} - protected static void Closeable_close(Closeable closeable, String url_str, boolean throwErr) { + public static void Closeable_close(Closeable closeable, Io_url url, boolean throwErr) {Closeable_close(closeable, url.Xto_api(), throwErr);} + public static void Closeable_close(Closeable closeable, String url_str, boolean throwErr) { if (closeable == null) return; try {closeable.close();} catch (IOException e) { @@ -484,6 +553,21 @@ public class IoEngine_system extends IoEngine_base { if (trg_stream != null) trg_stream.Rls(); } } Io_url session_fil; Bry_bfr prog_fmt_bfr; + @Override public boolean Truncate_fil(Io_url url, long size) { + FileOutputStream stream = null; + FileChannel channel = null; + try {stream = new FileOutputStream(url.Xto_api(), true);} + catch (FileNotFoundException e) {throw Err_.new_("io", "truncate: open failed", "url", url.Xto_api(), "err", Err_.Message_gplx_log(e));} + channel = stream.getChannel(); + try {channel.truncate(size); return true;} + catch (IOException e) {return false;} + finally { + try { + if (stream != null) stream.close(); + if (channel != null) channel.close(); + } catch (IOException e) {return false;} + } + } byte[] download_bfr; static final int Download_bfr_len = Io_mgr.Len_kb * 128; public static Err Err_Fil_NotFound(Io_url url) { return Err_.new_(IoEngineArgs.Instance.Err_FileNotFound, "file not found", "url", url.Xto_api()).Trace_ignore_add_1_(); diff --git a/100_core/src/gplx/core/ios/IoEngine_xrg_downloadFil.java b/100_core/src/gplx/core/ios/IoEngine_xrg_downloadFil.java index 5eecfa406..911620ecf 100644 --- a/100_core/src/gplx/core/ios/IoEngine_xrg_downloadFil.java +++ b/100_core/src/gplx/core/ios/IoEngine_xrg_downloadFil.java @@ -17,6 +17,7 @@ along with this program. If not, see . */ package gplx.core.ios; import gplx.*; import gplx.core.*; import gplx.core.brys.fmtrs.*; +import gplx.core.ios.streams.*; public class IoEngine_xrg_downloadFil { public String Src() {return src;} public IoEngine_xrg_downloadFil Src_(String v) {src = v; return this;} private String src; public Io_url Trg() {return trg;} public IoEngine_xrg_downloadFil Trg_(Io_url v) {trg = v; return this;} private Io_url trg; @@ -27,7 +28,7 @@ public class IoEngine_xrg_downloadFil { } public String User_agent() {return user_agent;} public IoEngine_xrg_downloadFil User_agent_(String v) {user_agent = v; return this;} private String user_agent; public Gfo_usr_dlg Prog_dlg() {return prog_dlg;} public IoEngine_xrg_downloadFil Prog_dlg_(Gfo_usr_dlg v) {prog_dlg = v; download_fmt.Ctor(prog_dlg); return this;} private Gfo_usr_dlg prog_dlg; - public Bry_fmtr Prog_fmtr() {return prog_fmtr;} private final Bry_fmtr prog_fmtr = Bry_fmtr.new_("~{download_header}: ~{download_read} of ~{download_length} kb;", "download_header", "download_url", "download_read", "download_length"); + public Bry_fmtr Prog_fmtr() {return prog_fmtr;} private final Bry_fmtr prog_fmtr = Bry_fmtr.new_("~{download_header}: ~{download_read} of ~{download_length} kb;", "download_header", "download_url", "download_read", "download_length"); public String Prog_fmt_hdr() {return prog_fmt_hdr;} public IoEngine_xrg_downloadFil Prog_fmt_hdr_(String v) {prog_fmt_hdr = v; return this;} private String prog_fmt_hdr = ""; // NOTE: must init to "", else null ref when building String public boolean Prog_cancel() {return prog_cancel;} public IoEngine_xrg_downloadFil Prog_cancel_y_() {prog_cancel = true; return this;} private volatile boolean prog_cancel; public boolean Prog_running() {return prog_running;} public IoEngine_xrg_downloadFil Prog_running_(boolean v) {prog_running = v; return this;} private boolean prog_running; @@ -35,7 +36,7 @@ public class IoEngine_xrg_downloadFil { public DateAdp Src_last_modified() {return src_last_modified;} public IoEngine_xrg_downloadFil Src_last_modified_(DateAdp v) {src_last_modified = v; return this;} private DateAdp src_last_modified; public boolean Src_last_modified_query() {return src_last_modified_query;} public IoEngine_xrg_downloadFil Src_last_modified_query_(boolean v) {src_last_modified_query = v; return this;} private boolean src_last_modified_query; public String Trg_engine_key() {return trg_engine_key;} public IoEngine_xrg_downloadFil Trg_engine_key_(String v) {trg_engine_key = v; return this;} private String trg_engine_key = IoEngine_.SysKey; - public Io_download_fmt Download_fmt() {return download_fmt;} private final Io_download_fmt download_fmt = new Io_download_fmt(); + public Io_download_fmt Download_fmt() {return download_fmt;} private final Io_download_fmt download_fmt = new Io_download_fmt(); public boolean Exec() {return IoEnginePool.Instance.Get_by(trg.Info().EngineKey()).DownloadFil(this);} public Io_stream_rdr Exec_as_rdr() {return IoEnginePool.Instance.Get_by(IoEngine_.SysKey).DownloadFil_as_rdr(this);} public boolean Exec_meta_only() {return exec_meta_only;} private boolean exec_meta_only; diff --git a/100_core/src/gplx/core/ios/IoEngine_xrg_openRead.java b/100_core/src/gplx/core/ios/IoEngine_xrg_openRead.java index 3e207669c..feafce755 100644 --- a/100_core/src/gplx/core/ios/IoEngine_xrg_openRead.java +++ b/100_core/src/gplx/core/ios/IoEngine_xrg_openRead.java @@ -16,6 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.core.ios; import gplx.*; import gplx.core.*; +import gplx.core.ios.streams.*; public class IoEngine_xrg_openRead { public Io_url Url() {return url;} Io_url url; public String ErrMsg() {return errMsg;} private String errMsg; diff --git a/100_core/src/gplx/core/ios/IoEngine_xrg_openWrite.java b/100_core/src/gplx/core/ios/IoEngine_xrg_openWrite.java index 9e6509a92..e2ddc97ee 100644 --- a/100_core/src/gplx/core/ios/IoEngine_xrg_openWrite.java +++ b/100_core/src/gplx/core/ios/IoEngine_xrg_openWrite.java @@ -16,6 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.core.ios; import gplx.*; import gplx.core.*; +import gplx.core.ios.streams.*; public class IoEngine_xrg_openWrite { public Io_url Url() {return url;} public IoEngine_xrg_openWrite Url_(Io_url val) {url = val; return this;} Io_url url; public boolean ReadOnlyIgnored() {return readOnlyIgnored;} public IoEngine_xrg_openWrite ReadOnlyIgnored_() {return ReadOnlyIgnored_(true);} public IoEngine_xrg_openWrite ReadOnlyIgnored_(boolean v) {readOnlyIgnored = v; return this;} private boolean readOnlyIgnored = false; diff --git a/100_core/src/gplx/core/ios/IoEngine_xrg_recycleFil.java b/100_core/src/gplx/core/ios/IoEngine_xrg_recycleFil.java index 339883a0e..35963b5ad 100644 --- a/100_core/src/gplx/core/ios/IoEngine_xrg_recycleFil.java +++ b/100_core/src/gplx/core/ios/IoEngine_xrg_recycleFil.java @@ -49,11 +49,11 @@ public class IoEngine_xrg_recycleFil extends IoEngine_xrg_fil_affects1_base { public IoEngine_xrg_recycleFil(int v) { mode = v; time = DateAdp_.Now(); - uuid = Guid_adp_.new_(); - rootDirNames = List_adp_.new_(); rootDirNames.Add("z_trash"); + uuid = Guid_adp_.New(); + rootDirNames = List_adp_.New(); rootDirNames.Add("z_trash"); } public static IoEngine_xrg_recycleFil sysm_(Io_url url) {return new IoEngine_xrg_recycleFil(SysmConst);} public static IoEngine_xrg_recycleFil gplx_(Io_url url) {IoEngine_xrg_recycleFil rv = new IoEngine_xrg_recycleFil(GplxConst); rv.Url_set(url); return rv;} public static IoEngine_xrg_recycleFil proto_() {return gplx_(Io_url_.Empty);} - public static final int GplxConst = 0, SysmConst = 1; + public static final int GplxConst = 0, SysmConst = 1; } diff --git a/100_core/src/gplx/core/ios/IoItmDir_.java b/100_core/src/gplx/core/ios/IoItmDir_.java index 88193e1fe..23efce2e7 100644 --- a/100_core/src/gplx/core/ios/IoItmDir_.java +++ b/100_core/src/gplx/core/ios/IoItmDir_.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.core.ios; import gplx.*; import gplx.core.*; public class IoItmDir_ { public static IoItmDir as_(Object obj) {return obj instanceof IoItmDir ? (IoItmDir)obj : null;} - public static final IoItmDir Null = null_(); + public static final IoItmDir Null = null_(); public static IoItmDir top_(Io_url url) {return scan_(url);} public static IoItmDir scan_(Io_url url) { IoItmDir rv = new IoItmDir(url.Info().CaseSensitive()); @@ -31,7 +31,7 @@ public class IoItmDir_ { return rv; } static IoItmDir null_() { - IoItmDir rv = new IoItmDir(true); // TODO: NULL should be removed + IoItmDir rv = new IoItmDir(true); // TODO_OLD: NULL should be removed rv.ctor_IoItmBase_url(Io_url_.Empty); rv.Exists_set(false); return rv; diff --git a/100_core/src/gplx/core/ios/IoItmFil_mem.java b/100_core/src/gplx/core/ios/IoItmFil_mem.java index 2eb242c43..c58e0243e 100644 --- a/100_core/src/gplx/core/ios/IoItmFil_mem.java +++ b/100_core/src/gplx/core/ios/IoItmFil_mem.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.core.ios; import gplx.*; import gplx.core.*; -import gplx.core.ios.*; /*IoStream_mem*/ import gplx.core.texts.*; /*Encoding_*/ +import gplx.core.ios.streams.*; /*IoStream_mem*/ import gplx.core.texts.*; /*Encoding_*/ class IoItmFil_mem extends IoItmFil { public static IoItmFil_mem as_(Object obj) {return obj instanceof IoItmFil_mem ? (IoItmFil_mem)obj : null;} @gplx.Internal protected IoStream_mem Stream() {return stream;} IoStream_mem stream; // NOTE: using stream instead of Text, b/c no events for IoStream.Dispose; ex: stream.OpenStreamWrite; stream.Write("hi"); stream.Dispose(); "hi" would not be saved if Text is member variable @Override public long Size() {return (int)stream.Len();} @@ -35,5 +35,5 @@ class IoItmFil_mem extends IoItmFil { public static IoItmFil_mem as_(Object obj rv.stream = IoStream_mem.rdr_txt_(filPath, text); return rv; } - public static final IoItmFil_mem Null = new_(Io_url_.Empty, -1, DateAdp_.MinValue, ""); // NOTE: size must be -1 for .Exists to be false; DATE:2015-05-16 + public static final IoItmFil_mem Null = new_(Io_url_.Empty, -1, DateAdp_.MinValue, ""); // NOTE: size must be -1 for .Exists to be false; DATE:2015-05-16 } diff --git a/100_core/src/gplx/core/ios/IoItm_base.java b/100_core/src/gplx/core/ios/IoItm_base.java index 94d5079f9..55f8d2c6b 100644 --- a/100_core/src/gplx/core/ios/IoItm_base.java +++ b/100_core/src/gplx/core/ios/IoItm_base.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.core.ios; import gplx.*; import gplx.core.*; import gplx.langs.gfs.*; -public abstract class IoItm_base implements GfoInvkAble, CompareAble { +public abstract class IoItm_base implements Gfo_invk, CompareAble { public abstract int TypeId(); public abstract boolean Type_dir(); public abstract boolean Type_fil(); public Io_url Url() {return ownerDir == null ? url : ownerDir.Url().GenSubFil(name); /*NOTE: must call .Url*/} Io_url url; public IoItmDir OwnerDir() {return ownerDir;} IoItmDir ownerDir; @@ -35,19 +35,19 @@ public abstract class IoItm_base implements GfoInvkAble, CompareAble { } public Object XtnProps_get(String key) {return props.Get_by(key);} Hash_adp props = Hash_adp_.Noop; public IoItm_base XtnProps_set(String key, Object val) { - if (props == Hash_adp_.Noop) props = Hash_adp_.new_(); + if (props == Hash_adp_.Noop) props = Hash_adp_.New(); props.Del(key); props.Add(key, val); return this; } public int compareTo(Object comp) {return url.compareTo(((IoItm_base)comp).url);} // NOTE: needed for comic importer (sort done on IoItmHash which contains IoItm_base) -// public Object Data_get(String name) {return GfoInvkAble_.InvkCmd(this, name);} +// public Object Data_get(String name) {return Gfo_invk_.Invk_by_key(this, name);} @gplx.Virtual public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, IoItm_base_.Prop_Type)) return this.TypeId(); else if (ctx.Match(k, IoItm_base_.Prop_Path)) return this.Url(); else if (ctx.Match(k, IoItm_base_.Prop_Title)) return this.Url().NameOnly(); // needed for gfio script criteria; else if (ctx.Match(k, IoItm_base_.Prop_Ext)) return this.Url().Ext(); // needed for gfio script criteria; EX: where "ext LIKE '.java'" - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; } @gplx.Internal protected void ctor_IoItmBase_url(Io_url url) {this.url = url; this.name = url.NameAndExt();} @gplx.Internal protected void ctor_IoItmBase_name(String name) {this.name = name;} diff --git a/100_core/src/gplx/core/ios/IoRecycleBin.java b/100_core/src/gplx/core/ios/IoRecycleBin.java index 5670ce880..32c1efac2 100644 --- a/100_core/src/gplx/core/ios/IoRecycleBin.java +++ b/100_core/src/gplx/core/ios/IoRecycleBin.java @@ -35,7 +35,7 @@ public class IoRecycleBin { IoEngine_xrg_saveFilStr.new_(regyUrl, text).Append_().Exec(); } public List_adp Regy_search(Io_url url, String_bldr sb) { - List_adp list = List_adp_.new_(); + List_adp list = List_adp_.New(); Io_url regyUrl = FetchRegistryUrl(url); String[] lines = IoEngine_xrg_loadFilStr.new_(regyUrl).ExecAsStrAry(); int linesLen = Array_.Len(lines); @@ -56,5 +56,5 @@ public class IoRecycleBin { String sourceApp = String_.GetStrBefore(url.NameAndExt_noDirSpr(), ";"); return url.OwnerDir().GenSubFil_ary(sourceApp, ".recycle.csv"); } - public static final IoRecycleBin Instance = new IoRecycleBin(); IoRecycleBin() {} + public static final IoRecycleBin Instance = new IoRecycleBin(); IoRecycleBin() {} } diff --git a/100_core/src/gplx/core/ios/IoUrlInfo.java b/100_core/src/gplx/core/ios/IoUrlInfo.java index e62a2aeb6..f812c072d 100644 --- a/100_core/src/gplx/core/ios/IoUrlInfo.java +++ b/100_core/src/gplx/core/ios/IoUrlInfo.java @@ -35,7 +35,7 @@ public interface IoUrlInfo { String XtoRootName(String raw, int rawLen); } class IoUrlInfo_nil implements IoUrlInfo { - public String Key() {return KeyConst;} public static final String KeyConst = String_.Null_mark; + public String Key() {return KeyConst;} public static final String KeyConst = String_.Null_mark; public String EngineKey() {return "<>";} public String DirSpr() {return "<>";} public byte DirSpr_byte() {return Byte_ascii.Slash;} @@ -50,11 +50,11 @@ class IoUrlInfo_nil implements IoUrlInfo { public String NameOnly(String raw) {return "";} public String Ext(String raw) {return "";} public String XtoRootName(String raw, int rawLen) {return "";} - public static final IoUrlInfo_nil Instance = new IoUrlInfo_nil(); IoUrlInfo_nil() {} + public static final IoUrlInfo_nil Instance = new IoUrlInfo_nil(); IoUrlInfo_nil() {} } abstract class IoUrlInfo_base implements IoUrlInfo { - @gplx.Internal protected static final int DirSprLen = 1; - @gplx.Internal protected static final String NullString = "", ExtSeparator = "."; + @gplx.Internal protected static final int DirSprLen = 1; + @gplx.Internal protected static final String NullString = "", ExtSeparator = "."; public abstract String Key(); public abstract byte DirSpr_byte(); public abstract String DirSpr(); @@ -118,8 +118,8 @@ abstract class IoUrlInfo_base implements IoUrlInfo { return String_.FindBwd(raw, this.DirSpr(), rawLen - 1 - posAdj); // -1 to adjust for LastIdx } } - static final int - OwnerDirPos_hasNoOwner = -1 // List_adp_.NotFound + static final int + OwnerDirPos_hasNoOwner = -1 // List_adp_.Not_found , OwnerDirPos_isNull = -2 , OwnerDirPos_isRoot = -3; } @@ -135,12 +135,12 @@ class IoUrlInfo_wnt extends IoUrlInfo_base { ? Char_.To_str(String_.CharAt(raw, 0)) : null; } - public static final IoUrlInfo_wnt Instance = new IoUrlInfo_wnt(); IoUrlInfo_wnt() {} + public static final IoUrlInfo_wnt Instance = new IoUrlInfo_wnt(); IoUrlInfo_wnt() {} } class IoUrlInfo_lnx extends IoUrlInfo_base { @Override public String Key() {return "lnx";} @Override public String EngineKey() {return IoEngine_.SysKey;} - @Override public String DirSpr() {return DirSprStr;} static final String DirSprStr = Op_sys.Lnx.Fsys_dir_spr_str(); + @Override public String DirSpr() {return DirSprStr;} static final String DirSprStr = Op_sys.Lnx.Fsys_dir_spr_str(); @Override public byte DirSpr_byte() {return Byte_ascii.Slash;} @Override public boolean CaseSensitive() {return Op_sys.Lnx.Fsys_case_match();} @Override public boolean Match(String raw) {return String_.Has_at_bgn(raw, DirSprStr);} // anything that starts with / @@ -155,7 +155,7 @@ class IoUrlInfo_lnx extends IoUrlInfo_base { ? DirSprStr : super.Xto_api(raw); // NOTE: super.Xto_api will strip off last / } - public static final IoUrlInfo_lnx Instance = new IoUrlInfo_lnx(); IoUrlInfo_lnx() {} + public static final IoUrlInfo_lnx Instance = new IoUrlInfo_lnx(); IoUrlInfo_lnx() {} } class IoUrlInfo_rel extends IoUrlInfo_base { @Override public String Key() {return "rel";} @@ -236,8 +236,8 @@ class IoUrlInfo_alias extends IoUrlInfo_base { rv.EngineKey_set(engineKey); return rv; } - public static final IoUrlInfo_alias KEYS = new IoUrlInfo_alias(); - public final String + public static final IoUrlInfo_alias KEYS = new IoUrlInfo_alias(); + public final String Data_EngineKey = "engineKey" , Data_SrcDir = "srcDir" , Data_TrgDir = "trgDir" diff --git a/100_core/src/gplx/core/ios/IoUrlInfoRegy.java b/100_core/src/gplx/core/ios/IoUrlInfoRegy.java index 819690f0d..cd2f99e4f 100644 --- a/100_core/src/gplx/core/ios/IoUrlInfoRegy.java +++ b/100_core/src/gplx/core/ios/IoUrlInfoRegy.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.core.ios; import gplx.*; import gplx.core.*; import gplx.core.envs.*; import gplx.langs.gfs.*; -public class IoUrlInfoRegy implements GfoInvkAble { +public class IoUrlInfoRegy implements Gfo_invk { public void Reg(IoUrlInfo info) {hash.Add_if_dupe_use_nth(info.Key(), info);} public IoUrlInfo Match(String raw) { if (String_.Len(raw) == 0) return IoUrlInfo_.Nil; @@ -45,9 +45,9 @@ public class IoUrlInfoRegy implements GfoInvkAble { IoUrlInfoRegy.Instance.Reg(alias); } return this; - } public static final String Invk_Add = "Add"; + } public static final String Invk_Add = "Add"; Ordered_hash hash = Ordered_hash_.New(); - public static final IoUrlInfoRegy Instance = new IoUrlInfoRegy(); + public static final IoUrlInfoRegy Instance = new IoUrlInfoRegy(); IoUrlInfoRegy() { this.Reset(); } diff --git a/100_core/src/gplx/core/ios/IoUrlTypeRegy.java b/100_core/src/gplx/core/ios/IoUrlTypeRegy.java index 1852de81c..47032e615 100644 --- a/100_core/src/gplx/core/ios/IoUrlTypeRegy.java +++ b/100_core/src/gplx/core/ios/IoUrlTypeRegy.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.core.ios; import gplx.*; import gplx.core.*; import gplx.core.strings.*; import gplx.langs.gfs.*; -public class IoUrlTypeRegy implements GfoInvkAble { +public class IoUrlTypeRegy implements Gfo_invk { public String[] FetchAryOr(String key, String... or) { IoUrlTypeGrp itm = (IoUrlTypeGrp)hash.Get_by(key); return itm == null ? or : itm.AsAry(); @@ -33,13 +33,13 @@ public class IoUrlTypeRegy implements GfoInvkAble { } return itm; } - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; // return this; - } public static final String Invk_Get = "Get"; + } public static final String Invk_Get = "Get"; Ordered_hash hash = Ordered_hash_.New(); - public static final IoUrlTypeRegy Instance = new IoUrlTypeRegy(); IoUrlTypeRegy() {} + public static final IoUrlTypeRegy Instance = new IoUrlTypeRegy(); IoUrlTypeRegy() {} } -class IoUrlTypeGrp implements GfoInvkAble { +class IoUrlTypeGrp implements Gfo_invk { public String[] AsAry() { String[] rv = new String[list.Count()]; for (int i = 0; i < list.Count(); i++) @@ -70,7 +70,7 @@ class IoUrlTypeGrp implements GfoInvkAble { return sb.To_str(); } else if (ctx.Match(k, Invk_Clear)) {if (ctx.Deny()) return this; list.Clear();} - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; - } public static final String Invk_AddMany = "Add_many", Invk_Clear = "Clear", Invk_Print = "Print"; + } public static final String Invk_AddMany = "Add_many", Invk_Clear = "Clear", Invk_Print = "Print"; } diff --git a/100_core/src/gplx/core/ios/Io_download_fmt.java b/100_core/src/gplx/core/ios/Io_download_fmt.java index 22714a607..a3df7b181 100644 --- a/100_core/src/gplx/core/ios/Io_download_fmt.java +++ b/100_core/src/gplx/core/ios/Io_download_fmt.java @@ -18,15 +18,15 @@ along with this program. If not, see . package gplx.core.ios; import gplx.*; import gplx.core.*; import gplx.core.brys.args.*; import gplx.core.brys.fmtrs.*; import gplx.core.envs.*; public class Io_download_fmt { - private final Io_size_fmtr_arg size_fmtr_arg = new Io_size_fmtr_arg(), rate_fmtr_arg = new Io_size_fmtr_arg().Suffix_(Bry_.new_a7("ps")); - private final Bfr_arg__time prog_left_fmtr_arg = new Bfr_arg__time(); private final Bfr_arg__decimal_int prog_pct_fmtr_arg = new Bfr_arg__decimal_int().Places_(2); + private final Io_size_fmtr_arg size_fmtr_arg = new Io_size_fmtr_arg(), rate_fmtr_arg = new Io_size_fmtr_arg().Suffix_(Bry_.new_a7("ps")); + private final Bfr_arg__time prog_left_fmtr_arg = new Bfr_arg__time(); private final Bfr_arg__decimal_int prog_pct_fmtr_arg = new Bfr_arg__decimal_int().Places_(2); private long time_checkpoint_interval = 250; private long time_checkpoint = 0; private long time_prv = 0; public Io_download_fmt() { this.src_name = prog_msg_hdr = ""; // NOTE: set to "" else prog_mgr will fail with null ref } - private final Bry_bfr prog_bfr = Bry_bfr.new_(); Bry_fmtr prog_fmtr = Bry_fmtr.new_().Fail_when_invalid_escapes_(false); // NOTE: prog_fmtr can be passed file_names with ~ which are not easy to escape; DATE:2013-02-19 + private final Bry_bfr prog_bfr = Bry_bfr_.New(); Bry_fmtr prog_fmtr = Bry_fmtr.new_().Fail_when_invalid_escapes_(false); // NOTE: prog_fmtr can be passed file_names with ~ which are not easy to escape; DATE:2013-02-19 public long Time_bgn() {return time_bgn;} private long time_bgn; public long Time_now() {return time_now;} private long time_now; public long Time_dif() {return time_dif;} private long time_dif; @@ -90,5 +90,5 @@ public class Io_download_fmt { // prog_left = (1000 * (src_len - prog_done)) / prog_rate; // if (usr_dlg != null) usr_dlg.Prog_none(GRP_KEY, "clear", ""); } - public static final Io_download_fmt Null = null; + public static final Io_download_fmt Null = null; } diff --git a/100_core/src/gplx/core/ios/Io_fil_mkr.java b/100_core/src/gplx/core/ios/Io_fil_mkr.java index 8054295c1..3e1eb11bf 100644 --- a/100_core/src/gplx/core/ios/Io_fil_mkr.java +++ b/100_core/src/gplx/core/ios/Io_fil_mkr.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.core.ios; import gplx.*; import gplx.core.*; public class Io_fil_mkr { - private final List_adp list = List_adp_.new_(); + private final List_adp list = List_adp_.New(); public Io_fil_mkr Add(String url, String data) {return Add(Io_url_.mem_fil_(url), data);} public Io_fil_mkr Add(Io_url url, String data) {list.Add(new Io_fil(url, data)); return this;} public Io_fil[] To_ary() {return (Io_fil[])list.To_ary(Io_fil.class);} diff --git a/100_core/src/gplx/core/ios/Io_size__tst.java b/100_core/src/gplx/core/ios/Io_size__tst.java index 7557a3c86..3ae883e1a 100644 --- a/100_core/src/gplx/core/ios/Io_size__tst.java +++ b/100_core/src/gplx/core/ios/Io_size__tst.java @@ -79,7 +79,7 @@ class Io_size__fxt { public void Test_XtoStr(long val, String expd) {Tfds.Eq(expd, Io_size_.To_str(val));} public void Test_Xto_str(long val, int exp_1024, String val_fmt, String unit_pad, boolean round_0_to_1, String expd) {Tfds.Eq(expd, Io_size_.To_str(val, exp_1024, val_fmt, unit_pad, round_0_to_1));} public void Test__to_str_new(long val, int decimal_places, String expd) { - Bry_bfr bfr = Bry_bfr.new_(); + Bry_bfr bfr = Bry_bfr_.New(); Tfds.Eq_str(expd, Io_size_.To_str_new(bfr, val, decimal_places)); } } diff --git a/100_core/src/gplx/core/ios/drives/Io_drive.java b/100_core/src/gplx/core/ios/drives/Io_drive.java new file mode 100644 index 000000000..c475d3382 --- /dev/null +++ b/100_core/src/gplx/core/ios/drives/Io_drive.java @@ -0,0 +1,22 @@ +/* +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.core.ios.drives; import gplx.*; import gplx.core.*; import gplx.core.ios.*; +public interface Io_drive { + long Get_space_total(Io_url drive); + long Get_space_free (Io_url drive); +} diff --git a/100_core/src/gplx/core/ios/drives/Io_drive_.java b/100_core/src/gplx/core/ios/drives/Io_drive_.java new file mode 100644 index 000000000..ec5be4ae5 --- /dev/null +++ b/100_core/src/gplx/core/ios/drives/Io_drive_.java @@ -0,0 +1,21 @@ +/* +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.core.ios.drives; import gplx.*; import gplx.core.*; import gplx.core.ios.*; +public class Io_drive_ { + public static Io_drive Instance = new Io_drive__jre(); +} diff --git a/100_core/src/gplx/core/ios/drives/Io_drive__jre.java b/100_core/src/gplx/core/ios/drives/Io_drive__jre.java new file mode 100644 index 000000000..d2483d7e4 --- /dev/null +++ b/100_core/src/gplx/core/ios/drives/Io_drive__jre.java @@ -0,0 +1,22 @@ +/* +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.core.ios.drives; import gplx.*; import gplx.core.*; import gplx.core.ios.*; +public class Io_drive__jre implements Io_drive { + public long Get_space_total(Io_url drive) {return new java.io.File(drive.Xto_api()).getTotalSpace();} + public long Get_space_free (Io_url drive) {return new java.io.File(drive.Xto_api()).getFreeSpace();} +} diff --git a/100_core/src/gplx/core/ios/loaders/Io_loader.java b/100_core/src/gplx/core/ios/loaders/Io_loader.java new file mode 100644 index 000000000..eec265ed1 --- /dev/null +++ b/100_core/src/gplx/core/ios/loaders/Io_loader.java @@ -0,0 +1,21 @@ +/* +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.core.ios.loaders; import gplx.*; import gplx.core.*; import gplx.core.ios.*; +public interface Io_loader { + byte[] Load_fil_as_bry(Io_url url); +} diff --git a/100_core/src/gplx/core/ios/IoStream.java b/100_core/src/gplx/core/ios/streams/IoStream.java similarity index 91% rename from 100_core/src/gplx/core/ios/IoStream.java rename to 100_core/src/gplx/core/ios/streams/IoStream.java index 440c7322f..629d8cb39 100644 --- a/100_core/src/gplx/core/ios/IoStream.java +++ b/100_core/src/gplx/core/ios/streams/IoStream.java @@ -15,7 +15,7 @@ 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.core.ios; import gplx.*; import gplx.core.*; +package gplx.core.ios.streams; import gplx.*; import gplx.core.*; import gplx.core.ios.*; public interface IoStream extends Rls_able { Object UnderRdr(); Io_url Url(); diff --git a/100_core/src/gplx/core/ios/streams/IoStream_.java b/100_core/src/gplx/core/ios/streams/IoStream_.java new file mode 100644 index 000000000..50ff41524 --- /dev/null +++ b/100_core/src/gplx/core/ios/streams/IoStream_.java @@ -0,0 +1,64 @@ +/* +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.core.ios.streams; import gplx.*; import gplx.core.*; import gplx.core.ios.*; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.OutputStream; +import java.io.RandomAccessFile; +import java.io.UnsupportedEncodingException; +public class IoStream_ { + public static final IoStream Null = new IoStream_null(); + public static IoStream mem_txt_(Io_url url, String v) {return IoStream_mem.rdr_txt_(url, v);} + public static IoStream ary_(byte[] v) {return IoStream_mem.rdr_ary_(Io_url_.Empty, v);} + public static final byte Mode_rdr = 0, Mode_wtr_create = 1, Mode_wtr_append = 2, Mode_wtr_update = 3; + public static IoStream stream_rdr_() {return new IoStream_stream_rdr();} + public static IoStream stream_input_(Io_url url) {return new IoStream_stream_rdr().UnderRdr_(input_stream_(url));} + public static Object input_stream_(Io_url url) { + try { + return new java.io.FileInputStream(url.Raw()); + } catch (Exception e) {throw Err_.new_wo_type("file not found", "url", url.Raw());} + } +} +class IoStream_null implements IoStream { + public Object UnderRdr() {return null;} + public Io_url Url() {return Io_url_.Empty;} + public long Pos() {return -1;} + public long Len() {return -1;} + public int ReadAry(byte[] array) {return -1;} + public int Read(byte[] array, int offset, int count) {return -1;} + public long Seek(long pos) {return -1;} + public void WriteAry(byte[] ary) {} + public void Write(byte[] array, int offset, int count) {} + public void Transfer(IoStream trg, int bufferLength) {} + public void Flush() {} + public void Write_and_flush(byte[] bry, int bgn, int end) {} + public void Rls() {} +} +/* +NOTE_1:stream mode +my understanding of mode +rw: read/write async? +rws: read/write sync; write content + metadata changes +rwd: read/write sync; write content +*/ +//#} \ No newline at end of file diff --git a/100_core/src/gplx/core/ios/IoStream_.java b/100_core/src/gplx/core/ios/streams/IoStream_base.java similarity index 71% rename from 100_core/src/gplx/core/ios/IoStream_.java rename to 100_core/src/gplx/core/ios/streams/IoStream_base.java index 1888202a6..e69eeea59 100644 --- a/100_core/src/gplx/core/ios/IoStream_.java +++ b/100_core/src/gplx/core/ios/streams/IoStream_base.java @@ -15,46 +15,12 @@ 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.core.ios; import gplx.*; import gplx.core.*; +package gplx.core.ios.streams; import gplx.*; import gplx.core.*; import gplx.core.ios.*; import java.io.File; -import java.io.FileInputStream; import java.io.FileNotFoundException; -import java.io.FileOutputStream; import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.io.OutputStream; import java.io.RandomAccessFile; -import java.io.UnsupportedEncodingException; -public class IoStream_ { - public static final IoStream Null = new IoStream_null(); - public static IoStream mem_txt_(Io_url url, String v) {return IoStream_mem.rdr_txt_(url, v);} - public static IoStream ary_(byte[] v) {return IoStream_mem.rdr_ary_(Io_url_.Empty, v);} - public static final byte Mode_rdr = 0, Mode_wtr_create = 1, Mode_wtr_append = 2, Mode_wtr_update = 3; - public static IoStream stream_rdr_() {return new IoStream_stream_rdr();} - public static IoStream stream_input_(Io_url url) {return new IoStream_stream_rdr().UnderRdr_(input_stream_(url));} - public static Object input_stream_(Io_url url) { - try { - return new java.io.FileInputStream(url.Raw()); - } catch (Exception e) {throw Err_.new_wo_type("file not found", "url", url.Raw());} - } -} -class IoStream_null implements IoStream { - public Object UnderRdr() {return null;} - public Io_url Url() {return Io_url_.Empty;} - public long Pos() {return -1;} - public long Len() {return -1;} - public int ReadAry(byte[] array) {return -1;} - public int Read(byte[] array, int offset, int count) {return -1;} - public long Seek(long pos) {return -1;} - public void WriteAry(byte[] ary) {} - public void Write(byte[] array, int offset, int count) {} - public void Transfer(IoStream trg, int bufferLength) {} - public void Flush() {} - public void Write_and_flush(byte[] bry, int bgn, int end) {} - public void Rls() {} -} -class IoStream_base implements IoStream { +public class IoStream_base implements IoStream { @gplx.Virtual public Io_url Url() {return url;} Io_url url = Io_url_.Empty; public void Transfer(IoStream trg, int bufferLength) { byte[] buffer = new byte[bufferLength]; @@ -86,7 +52,7 @@ class IoStream_base implements IoStream { } catch (IOException e) {throw Err_.new_exc(e, "io", "seek failed", "url", url);} } - @gplx.Virtual public void Write(byte[] array, int offset, int count) {bfr.Add_mid(array, offset, offset + count); this.Flush();} Bry_bfr bfr = Bry_bfr.reset_(16); + @gplx.Virtual public void Write(byte[] array, int offset, int count) {bfr.Add_mid(array, offset, offset + count); this.Flush();} Bry_bfr bfr = Bry_bfr_.Reset(16); public void Write_and_flush(byte[] bry, int bgn, int end) { // ConsoleAdp._.WriteLine(bry.length +" " + bgn + " " + end); Flush();// flush anything already in buffer @@ -169,12 +135,4 @@ class IoStream_base implements IoStream { rv.url = Io_url_.Empty; return rv; } - } -/* -NOTE_1:stream mode -my understanding of mode -rw: read/write async? -rws: read/write sync; write content + metadata changes -rwd: read/write sync; write content -*/ -//#} \ No newline at end of file + } \ No newline at end of file diff --git a/100_core/src/gplx/core/ios/IoStream_mem.java b/100_core/src/gplx/core/ios/streams/IoStream_mem.java similarity index 93% rename from 100_core/src/gplx/core/ios/IoStream_mem.java rename to 100_core/src/gplx/core/ios/streams/IoStream_mem.java index 01847ef75..f8af91594 100644 --- a/100_core/src/gplx/core/ios/IoStream_mem.java +++ b/100_core/src/gplx/core/ios/streams/IoStream_mem.java @@ -15,9 +15,9 @@ 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.core.ios; import gplx.*; import gplx.core.*; +package gplx.core.ios.streams; import gplx.*; import gplx.core.*; import gplx.core.ios.*; import gplx.core.texts.*; /*Encoding_*/ -class IoStream_mem extends IoStream_base { +public class IoStream_mem extends IoStream_base { @Override public Io_url Url() {return url;} Io_url url; @Override public Object UnderRdr() {throw Err_.new_unimplemented();} // NOTE: should not use System.IO.MemoryStream, b/c resized data will not be captured in this instance's buffer @Override public long Len() {return Array_.Len(buffer);} diff --git a/100_core/src/gplx/core/ios/IoStream_mem_tst.java b/100_core/src/gplx/core/ios/streams/IoStream_mem_tst.java similarity index 91% rename from 100_core/src/gplx/core/ios/IoStream_mem_tst.java rename to 100_core/src/gplx/core/ios/streams/IoStream_mem_tst.java index 0750b9fbf..3eaa020f5 100644 --- a/100_core/src/gplx/core/ios/IoStream_mem_tst.java +++ b/100_core/src/gplx/core/ios/streams/IoStream_mem_tst.java @@ -15,7 +15,7 @@ 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.core.ios; import gplx.*; import gplx.core.*; +package gplx.core.ios.streams; import gplx.*; import gplx.core.*; import gplx.core.ios.*; import org.junit.*; //using System.IO; /*Stream*/ public class IoStream_mem_tst { @Test public void Write() { // confirm that changes written to Stream acquired via .AdpObj are written to IoStream_mem.Buffer diff --git a/100_core/src/gplx/core/ios/IoStream_mock.java b/100_core/src/gplx/core/ios/streams/IoStream_mock.java similarity index 94% rename from 100_core/src/gplx/core/ios/IoStream_mock.java rename to 100_core/src/gplx/core/ios/streams/IoStream_mock.java index f89baedec..0a123d8c4 100644 --- a/100_core/src/gplx/core/ios/IoStream_mock.java +++ b/100_core/src/gplx/core/ios/streams/IoStream_mock.java @@ -15,7 +15,7 @@ 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.core.ios; import gplx.*; import gplx.core.*; +package gplx.core.ios.streams; import gplx.*; import gplx.core.*; import gplx.core.ios.*; public class IoStream_mock implements IoStream { public byte[] Data_bry() {return data_bry;} public IoStream_mock Data_bry_(byte[] v) {data_bry = v; data_bry_len = v.length; return this;} private byte[] data_bry; int data_bry_len; public int Data_bry_pos() {return data_bry_pos;} int data_bry_pos; diff --git a/100_core/src/gplx/core/ios/IoStream_mock_tst.java b/100_core/src/gplx/core/ios/streams/IoStream_mock_tst.java similarity index 94% rename from 100_core/src/gplx/core/ios/IoStream_mock_tst.java rename to 100_core/src/gplx/core/ios/streams/IoStream_mock_tst.java index 29b7d7f64..b77400302 100644 --- a/100_core/src/gplx/core/ios/IoStream_mock_tst.java +++ b/100_core/src/gplx/core/ios/streams/IoStream_mock_tst.java @@ -15,7 +15,7 @@ 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.core.ios; import gplx.*; import gplx.core.*; +package gplx.core.ios.streams; import gplx.*; import gplx.core.*; import gplx.core.ios.*; import org.junit.*; public class IoStream_mock_tst { @Before public void init() {fxt.Clear();} IoStream_mock_fxt fxt = new IoStream_mock_fxt(); diff --git a/100_core/src/gplx/core/ios/IoStream_stream_rdr.java b/100_core/src/gplx/core/ios/streams/IoStream_stream_rdr.java similarity index 93% rename from 100_core/src/gplx/core/ios/IoStream_stream_rdr.java rename to 100_core/src/gplx/core/ios/streams/IoStream_stream_rdr.java index 08b4e11e1..bf724c54a 100644 --- a/100_core/src/gplx/core/ios/IoStream_stream_rdr.java +++ b/100_core/src/gplx/core/ios/streams/IoStream_stream_rdr.java @@ -15,7 +15,7 @@ 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.core.ios; import gplx.*; import gplx.core.*; +package gplx.core.ios.streams; import gplx.*; import gplx.core.*; import gplx.core.ios.*; public class IoStream_stream_rdr implements IoStream { public int Read(byte[] bfr, int bfr_bgn, int bfr_len) { try { diff --git a/100_core/src/gplx/core/ios/Io_stream_.java b/100_core/src/gplx/core/ios/streams/Io_stream_.java similarity index 94% rename from 100_core/src/gplx/core/ios/Io_stream_.java rename to 100_core/src/gplx/core/ios/streams/Io_stream_.java index bff902396..1db74a8aa 100644 --- a/100_core/src/gplx/core/ios/Io_stream_.java +++ b/100_core/src/gplx/core/ios/streams/Io_stream_.java @@ -15,7 +15,7 @@ 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.core.ios; import gplx.*; import gplx.core.*; +package gplx.core.ios.streams; import gplx.*; import gplx.core.*; import gplx.core.ios.*; public class Io_stream_ { // SERIALIZED public static final byte Tid_null = 0, Tid_raw = 1, Tid_zip = 2, Tid_gzip = 3, Tid_bzip2 = 4; public static final String Ext_zip = ".zip", Ext_gz = ".gz", Ext_bz2 = ".bz2"; diff --git a/100_core/src/gplx/core/ios/Io_stream_rdr.java b/100_core/src/gplx/core/ios/streams/Io_stream_rdr.java similarity index 90% rename from 100_core/src/gplx/core/ios/Io_stream_rdr.java rename to 100_core/src/gplx/core/ios/streams/Io_stream_rdr.java index 2052e0b35..2e649c71f 100644 --- a/100_core/src/gplx/core/ios/Io_stream_rdr.java +++ b/100_core/src/gplx/core/ios/streams/Io_stream_rdr.java @@ -15,7 +15,7 @@ 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.core.ios; import gplx.*; import gplx.core.*; +package gplx.core.ios.streams; import gplx.*; import gplx.core.*; import gplx.core.ios.*; public interface Io_stream_rdr extends Rls_able { byte Tid(); boolean Exists(); diff --git a/100_core/src/gplx/core/ios/Io_stream_rdr_.java b/100_core/src/gplx/core/ios/streams/Io_stream_rdr_.java similarity index 93% rename from 100_core/src/gplx/core/ios/Io_stream_rdr_.java rename to 100_core/src/gplx/core/ios/streams/Io_stream_rdr_.java index d7c0de45a..9d5e46551 100644 --- a/100_core/src/gplx/core/ios/Io_stream_rdr_.java +++ b/100_core/src/gplx/core/ios/streams/Io_stream_rdr_.java @@ -15,7 +15,7 @@ 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.core.ios; import gplx.*; import gplx.core.*; +package gplx.core.ios.streams; import gplx.*; import gplx.core.*; import gplx.core.ios.*; public class Io_stream_rdr_ { public static Io_stream_rdr file_(Io_url url) {return new Io_stream_rdr_file().Url_(url);} public static Io_stream_rdr file_(java.io.InputStream strm) {return new Io_stream_rdr_file().Under_(strm);} @@ -24,10 +24,10 @@ public class Io_stream_rdr_ { public static Io_stream_rdr bzip2_(Io_url url) {return new Io_stream_rdr_bzip2().Url_(url);} public static Io_stream_rdr new_by_url_(Io_url url) { String ext = url.Ext(); - if (String_.Eq(ext, Io_stream_.Ext_zip)) return gplx.core.ios.Io_stream_rdr_.zip_(url); - else if (String_.Eq(ext, Io_stream_.Ext_gz)) return gplx.core.ios.Io_stream_rdr_.gzip_(url); - else if (String_.Eq(ext, Io_stream_.Ext_bz2)) return gplx.core.ios.Io_stream_rdr_.bzip2_(url); - else return gplx.core.ios.Io_stream_rdr_.file_(url); + if (String_.Eq(ext, Io_stream_.Ext_zip)) return gplx.core.ios.streams.Io_stream_rdr_.zip_(url); + else if (String_.Eq(ext, Io_stream_.Ext_gz)) return gplx.core.ios.streams.Io_stream_rdr_.gzip_(url); + else if (String_.Eq(ext, Io_stream_.Ext_bz2)) return gplx.core.ios.streams.Io_stream_rdr_.bzip2_(url); + else return gplx.core.ios.streams.Io_stream_rdr_.file_(url); } public static Io_stream_rdr new_by_tid_(byte tid) { switch (tid) { @@ -40,7 +40,7 @@ public class Io_stream_rdr_ { } public static byte[] Load_all(Io_url url) { Io_stream_rdr rdr = new_by_url_(url); - Bry_bfr rv = Bry_bfr.new_(); + Bry_bfr rv = Bry_bfr_.New(); try { rdr.Open(); return Load_all_as_bry(rv, rdr); @@ -48,7 +48,7 @@ public class Io_stream_rdr_ { finally {rdr.Rls();} } public static String Load_all_as_str(Io_stream_rdr rdr) {return String_.new_u8(Load_all_as_bry(rdr));} - public static byte[] Load_all_as_bry(Io_stream_rdr rdr) {return Load_all_as_bry(Bry_bfr.new_(), rdr);} + public static byte[] Load_all_as_bry(Io_stream_rdr rdr) {return Load_all_as_bry(Bry_bfr_.New(), rdr);} public static byte[] Load_all_as_bry(Bry_bfr rv, Io_stream_rdr rdr) { Load_all_to_bfr(rv, rdr); return rv.To_bry_and_clear(); @@ -58,12 +58,12 @@ public class Io_stream_rdr_ { byte[] bry = new byte[4096]; while (true) { int read = rdr.Read(bry, 0, 4096); - if (read < gplx.core.ios.Io_stream_rdr_.Read_done_compare) break; + if (read < gplx.core.ios.streams.Io_stream_rdr_.Read_done_compare) break; rv.Add_mid(bry, 0, read); } } finally {rdr.Rls();} } - public static final Io_stream_rdr Noop = new Io_stream_rdr_noop(); + public static final Io_stream_rdr Noop = new Io_stream_rdr_noop(); public static Io_stream_rdr mem_(String v) {return mem_(Bry_.new_u8(v));} public static Io_stream_rdr mem_(byte[] v) { Io_stream_rdr rv = new Io_stream_rdr_adp(Stream_new_mem(v)); @@ -95,7 +95,7 @@ public class Io_stream_rdr_ { bry_len = end - cur; if (cur == end) break; // no more bytes needed; break; EX: 8 kb bry passed; 1st pass is 8kb; 2nd pass is 0 and cur == end int read = stream.read(bry, cur, bry_len); - if (read == gplx.core.ios.Io_stream_rdr_.Read_done) // read done; end + if (read == gplx.core.ios.streams.Io_stream_rdr_.Read_done) // read done; end break; rv += read; cur += read; diff --git a/100_core/src/gplx/core/ios/Io_stream_rdr_tst.java b/100_core/src/gplx/core/ios/streams/Io_stream_rdr_tst.java similarity index 94% rename from 100_core/src/gplx/core/ios/Io_stream_rdr_tst.java rename to 100_core/src/gplx/core/ios/streams/Io_stream_rdr_tst.java index 04383596b..5094f1d13 100644 --- a/100_core/src/gplx/core/ios/Io_stream_rdr_tst.java +++ b/100_core/src/gplx/core/ios/streams/Io_stream_rdr_tst.java @@ -15,7 +15,7 @@ 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.core.ios; import gplx.*; import gplx.core.*; +package gplx.core.ios.streams; import gplx.*; import gplx.core.*; import gplx.core.ios.*; import org.junit.*; public class Io_stream_rdr_tst { @Before public void init() {fxt.Clear();} private Io_stream_rdr_fxt fxt = new Io_stream_rdr_fxt(); diff --git a/100_core/src/gplx/core/ios/Io_stream_wtr.java b/100_core/src/gplx/core/ios/streams/Io_stream_wtr.java similarity index 90% rename from 100_core/src/gplx/core/ios/Io_stream_wtr.java rename to 100_core/src/gplx/core/ios/streams/Io_stream_wtr.java index 181ce682e..bb292a3e9 100644 --- a/100_core/src/gplx/core/ios/Io_stream_wtr.java +++ b/100_core/src/gplx/core/ios/streams/Io_stream_wtr.java @@ -15,7 +15,7 @@ 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.core.ios; import gplx.*; import gplx.core.*; +package gplx.core.ios.streams; import gplx.*; import gplx.core.*; import gplx.core.ios.*; public interface Io_stream_wtr extends Rls_able { byte Tid(); Io_url Url(); Io_stream_wtr Url_(Io_url v); diff --git a/100_core/src/gplx/core/ios/Io_stream_wtr_.java b/100_core/src/gplx/core/ios/streams/Io_stream_wtr_.java similarity index 90% rename from 100_core/src/gplx/core/ios/Io_stream_wtr_.java rename to 100_core/src/gplx/core/ios/streams/Io_stream_wtr_.java index b6487eee1..63aab4300 100644 --- a/100_core/src/gplx/core/ios/Io_stream_wtr_.java +++ b/100_core/src/gplx/core/ios/streams/Io_stream_wtr_.java @@ -15,7 +15,7 @@ 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.core.ios; import gplx.*; import gplx.core.*; +package gplx.core.ios.streams; import gplx.*; import gplx.core.*; import gplx.core.ios.*; public class Io_stream_wtr_ { public static Io_stream_wtr bzip2_(Io_url url) {return new Io_stream_wtr_bzip2().Url_(url);} public static Io_stream_wtr gzip_(Io_url url) {return new Io_stream_wtr_gzip().Url_(url);} @@ -23,10 +23,10 @@ public class Io_stream_wtr_ { public static Io_stream_wtr file_(Io_url url) {return new Io_stream_wtr_file().Url_(url);} public static Io_stream_wtr new_by_url_(Io_url url) { String ext = url.Ext(); - if (String_.Eq(ext, Io_stream_.Ext_zip)) return gplx.core.ios.Io_stream_wtr_.zip_(url); - else if (String_.Eq(ext, Io_stream_.Ext_gz)) return gplx.core.ios.Io_stream_wtr_.gzip_(url); - else if (String_.Eq(ext, Io_stream_.Ext_bz2)) return gplx.core.ios.Io_stream_wtr_.bzip2_(url); - else return gplx.core.ios.Io_stream_wtr_.file_(url); + if (String_.Eq(ext, Io_stream_.Ext_zip)) return gplx.core.ios.streams.Io_stream_wtr_.zip_(url); + else if (String_.Eq(ext, Io_stream_.Ext_gz)) return gplx.core.ios.streams.Io_stream_wtr_.gzip_(url); + else if (String_.Eq(ext, Io_stream_.Ext_bz2)) return gplx.core.ios.streams.Io_stream_wtr_.bzip2_(url); + else return gplx.core.ios.streams.Io_stream_wtr_.file_(url); } public static Io_stream_wtr new_by_mem(Bry_bfr bfr, byte tid) { Io_stream_wtr wtr = new_by_tid_(tid).Url_(Io_url_.Empty); @@ -35,10 +35,10 @@ public class Io_stream_wtr_ { } public static Io_stream_wtr new_by_tid_(byte v) { switch (v) { - case gplx.core.ios.Io_stream_.Tid_raw : return new Io_stream_wtr_file(); - case gplx.core.ios.Io_stream_.Tid_zip : return new Io_stream_wtr_zip(); - case gplx.core.ios.Io_stream_.Tid_gzip : return new Io_stream_wtr_gzip(); - case gplx.core.ios.Io_stream_.Tid_bzip2 : return new Io_stream_wtr_bzip2(); + case gplx.core.ios.streams.Io_stream_.Tid_raw : return new Io_stream_wtr_file(); + case gplx.core.ios.streams.Io_stream_.Tid_zip : return new Io_stream_wtr_zip(); + case gplx.core.ios.streams.Io_stream_.Tid_gzip : return new Io_stream_wtr_gzip(); + case gplx.core.ios.streams.Io_stream_.Tid_bzip2 : return new Io_stream_wtr_bzip2(); default : throw Err_.new_unhandled(v); } } @@ -60,7 +60,7 @@ public class Io_stream_wtr_ { download_progress.Bgn(rdr.Len()); while (true) { int read = rdr.Read(bry, 0, 4096); - if (read < gplx.core.ios.Io_stream_rdr_.Read_done_compare) break; + if (read < gplx.core.ios.streams.Io_stream_rdr_.Read_done_compare) break; if (download_progress != Io_download_fmt.Null) download_progress.Prog(read); wtr.Write(bry, 0, read); diff --git a/100_core/src/gplx/core/ios/zips/Io_zip_compress_cmd__jre.java b/100_core/src/gplx/core/ios/zips/Io_zip_compress_cmd__jre.java new file mode 100644 index 000000000..d1e4770f2 --- /dev/null +++ b/100_core/src/gplx/core/ios/zips/Io_zip_compress_cmd__jre.java @@ -0,0 +1,61 @@ +/* +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.core.ios.zips; import gplx.*; import gplx.core.*; import gplx.core.ios.*; +import java.io.*; +import java.util.zip.*; +import gplx.core.envs.*; import gplx.core.threads.*; import gplx.core.progs.*; +public class Io_zip_compress_cmd__jre { + public Io_zip_compress_cmd__jre() {} + public Io_zip_compress_cmd__jre Make_new() {return new Io_zip_compress_cmd__jre();} + public byte Exec_hook(gplx.core.progs.Gfo_prog_ui prog_ui, Io_url[] src_urls, Io_url trg_url, String resume_name, long resume_file, long resume_item) { + OutputStream trg_out_stream; + try {trg_out_stream = new FileOutputStream(trg_url.Xto_api());} + catch (Exception e) {throw Err_.new_exc(e, "io", "trg open failed", "url", trg_url.Raw());} + ZipOutputStream trg_stream = new ZipOutputStream(trg_out_stream); + int len = src_urls.length; + byte[] buffer = new byte[4096]; + for (int i = 0; i < len; ++i) { + Io_url src_url = src_urls[i]; + java.util.zip.ZipEntry trg_entry = new java.util.zip.ZipEntry(src_url.NameAndExt()); + try {trg_stream.putNextEntry(trg_entry);} + catch (Exception e) {throw Err_.new_exc(e, "io", "zip entry failed", "url", src_url.Raw());} + FileInputStream src_stream = null; + try {src_stream = new FileInputStream(new File(src_url.Raw()));} + catch (Exception e) {throw Err_.new_exc(e, "io", "src open failed", "url", src_url.Raw());} + while (true) { // loop over bytes + int read_in_raw = -1; + try {read_in_raw = src_stream.read(buffer);} + catch (Exception e) {throw Err_.new_exc(e, "io", "src read failed", "url", src_url.Raw());} + if (read_in_raw < 1) break; + try {trg_stream.write(buffer, 0, read_in_raw);} + catch (Exception e) {throw Err_.new_exc(e, "io", "trg write failed", "url", trg_url.Raw());} + } + try { + trg_stream.closeEntry(); + src_stream.close(); + } + catch (Exception e) {throw Err_.new_exc(e, "io", "trg close entry failed", "url", src_url.Raw());} + } + try { + trg_stream.close(); + trg_stream.flush(); + } + catch (Exception e) {throw Err_.new_exc(e, "io", "trg close failed", "url", trg_url.Raw());} + return Gfo_prog_ui_.Status__done; + } +} diff --git a/100_core/src/gplx/core/ios/zips/Io_zip_decompress_cmd.java b/100_core/src/gplx/core/ios/zips/Io_zip_decompress_cmd.java index 674ef38e4..9f25e4c2b 100644 --- a/100_core/src/gplx/core/ios/zips/Io_zip_decompress_cmd.java +++ b/100_core/src/gplx/core/ios/zips/Io_zip_decompress_cmd.java @@ -16,6 +16,11 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.core.ios.zips; import gplx.*; import gplx.core.*; import gplx.core.ios.*; +import gplx.core.progs.*; public interface Io_zip_decompress_cmd { - void Decompress__exec(Io_zip_decompress_task task, Io_url src_fil, Io_url trg_dir); + String Fail_msg(); + Io_zip_decompress_cmd Make_new(); + long Checkpoint__load_by_src_fil(Io_url src_fil); + byte Exec(gplx.core.progs.Gfo_prog_ui prog_ui, Io_url src_fil, Io_url trg_dir, List_adp trg_fils); + void Exec_cleanup(); } diff --git a/100_core/src/gplx/core/ios/zips/Io_zip_decompress_cmd_.java b/100_core/src/gplx/core/ios/zips/Io_zip_decompress_cmd_.java index f2094fe5e..2e24a684e 100644 --- a/100_core/src/gplx/core/ios/zips/Io_zip_decompress_cmd_.java +++ b/100_core/src/gplx/core/ios/zips/Io_zip_decompress_cmd_.java @@ -17,5 +17,5 @@ along with this program. If not, see . */ package gplx.core.ios.zips; import gplx.*; import gplx.core.*; import gplx.core.ios.*; public class Io_zip_decompress_cmd_ { - public static Io_zip_decompress_cmd New__jre() {return new Io_zip_decompress_cmd__jre();} + public static Io_zip_decompress_cmd Proto = new Io_zip_decompress_cmd__jre(); } diff --git a/100_core/src/gplx/core/ios/zips/Io_zip_decompress_cmd__base.java b/100_core/src/gplx/core/ios/zips/Io_zip_decompress_cmd__base.java new file mode 100644 index 000000000..50339ad90 --- /dev/null +++ b/100_core/src/gplx/core/ios/zips/Io_zip_decompress_cmd__base.java @@ -0,0 +1,74 @@ +/* +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.core.ios.zips; import gplx.*; import gplx.core.*; import gplx.core.ios.*; +import gplx.core.progs.*; +public abstract class Io_zip_decompress_cmd__base implements Io_zip_decompress_cmd { + private Io_url checkpoint_url; + private String resume_name; + private long resume_file, resume_item; + private long checkpoint_interval = 32 * Io_mgr.Len_mb, checkpoint_nxt = 0; + public String Fail_msg() {return fail_msg;} private String fail_msg; + public abstract Io_zip_decompress_cmd Make_new(); + private final Bry_bfr bfr = Bry_bfr_.New(); + public long Prog_data_cur() {return resume_file;} + public byte Exec(gplx.core.progs.Gfo_prog_ui prog_ui, Io_url src_fil, Io_url trg_dir, List_adp trg_fils) { + this.Checkpoint__load_by_src_fil(src_fil); + this.checkpoint_nxt = resume_file + checkpoint_interval; + this.fail_msg = null; + + byte status = this.Exec_hook(prog_ui, src_fil, trg_dir, trg_fils, resume_name, resume_file, resume_item); + switch (status) { + case Gfo_prog_ui_.Status__done: + case Gfo_prog_ui_.Status__fail: + this.Exec_cleanup(); + break; + case Gfo_prog_ui_.Status__suspended: + break; + } + return status; + } + protected abstract byte Exec_hook(gplx.core.progs.Gfo_prog_ui prog_ui, Io_url src_fil, Io_url trg_dir, List_adp trg_fils, String resume_name, long resume_file, long resume_item); + public void Exec_cleanup() { + if (checkpoint_url != null) Io_mgr.Instance.DeleteFil(checkpoint_url); + } + public long Checkpoint__load_by_src_fil(Io_url src_fil) { + this.checkpoint_url = src_fil.GenNewExt(".checkpoint"); + this.Checkpoint__load(); + return resume_file; + } + private void Checkpoint__load() { + this.resume_name = null; this.resume_file = resume_item = 0; + byte[] data = Io_mgr.Instance.LoadFilBryOrNull(checkpoint_url); if (data == null) return; + byte[][] lines = Bry_split_.Split_lines(data); if (lines.length != 3) return; + this.resume_name = String_.new_u8(lines[0]); + this.resume_file = Long_.parse_or(String_.new_a7(lines[1]), -1); if (resume_file == -1) return; + this.resume_item = Long_.parse_or(String_.new_a7(lines[2]), -1); + } + public boolean Checkpoint__save(String resume_name, long resume_file, long resume_item) { + if (resume_file < checkpoint_nxt) return false; + bfr.Add_str_u8(resume_name).Add_byte_nl(); + bfr.Add_long_variable(resume_file).Add_byte_nl(); + bfr.Add_long_variable(resume_item); + Io_mgr.Instance.SaveFilBry(checkpoint_url, bfr.To_bry_and_clear()); + this.resume_name = resume_name; + this.resume_file = resume_file; + this.resume_item = resume_item; + checkpoint_nxt += checkpoint_interval; + return true; + } +} diff --git a/100_core/src/gplx/core/ios/zips/Io_zip_decompress_cmd__jre.java b/100_core/src/gplx/core/ios/zips/Io_zip_decompress_cmd__jre.java index d56cfd0d3..4d4b223ca 100644 --- a/100_core/src/gplx/core/ios/zips/Io_zip_decompress_cmd__jre.java +++ b/100_core/src/gplx/core/ios/zips/Io_zip_decompress_cmd__jre.java @@ -18,86 +18,80 @@ along with this program. If not, see . package gplx.core.ios.zips; import gplx.*; import gplx.core.*; import gplx.core.ios.*; import java.io.*; import java.util.zip.*; -import gplx.core.envs.*; import gplx.core.threads.*; -class Io_zip_decompress_cmd__jre implements Io_zip_decompress_cmd { - public void Decompress__exec(Io_zip_decompress_task task, Io_url src_fil, Io_url trg_dir) { - // init - byte[] buffer = new byte[4096]; - String resume_entry_name = task.Resume__entry(); - long resume_bytes = task.Resume__bytes(); - - // assert that trg_dir exists and can be written - Io_mgr.Instance.CreateDirIfAbsent(trg_dir); - - // open src_fil_stream +import gplx.core.envs.*; import gplx.core.threads.*; import gplx.core.progs.*; +class Io_zip_decompress_cmd__jre extends Io_zip_decompress_cmd__base { + @Override public Io_zip_decompress_cmd Make_new() {return new Io_zip_decompress_cmd__jre();} + @Override protected byte Exec_hook(gplx.core.progs.Gfo_prog_ui prog_ui, Io_url src_fil, Io_url trg_dir, List_adp trg_fils, String resume_name, long resume_file, long resume_item) { + // open src_zip_stream FileInputStream src_fil_stream = null; try {src_fil_stream = new FileInputStream(src_fil.Raw());} catch (FileNotFoundException e) {throw Err_.new_("ios.zip", "file not found", "path", src_fil.Raw());} + ZipInputStream src_zip_stream = new ZipInputStream(src_fil_stream); + + // init variables for entry loop + boolean resumed = resume_name != null; + long file_cur_in_raw = resumed ? resume_file : 0; + long file_max_in_raw = prog_ui.Prog_data_end(); + ZipEntry entry = null; + byte[] buffer = new byte[4096]; + Io_mgr.Instance.CreateDirIfAbsent(trg_dir); // NOTE: assert that trg_dir exists - ZipInputStream src_zip_stream = new ZipInputStream(src_fil_stream); try { - ZipEntry entry = null; - boolean loop_entries = true; - while (loop_entries) { - - // read next entry - entry = src_zip_stream.getNextEntry(); - if ( entry == null // no more entries - || resume_entry_name == null // resume_entry_name will be null in most cases - || String_.Eq(resume_entry_name, entry.getName()) // if resume_entry_name is not null, keep reading until match - ) - break; - if (resume_bytes > 0) { - src_zip_stream.skip(resume_bytes); - resume_bytes = 0; + while (true) { // loop over entries + entry = src_zip_stream.getNextEntry(); + if (entry == null) break; // no more entries + if (resume_name != null) { // resume_entry_name will be null in most cases + if (String_.Eq(resume_name, entry.getName())) // if resume_entry_name is not null, keep reading until match + resume_name = null; + else + continue; } // get entry name; also convert / to \ for wnt String entry_name = entry.getName(); - task.Prog__update_name(entry_name); if (Op_sys.Cur().Tid_is_wnt()) entry_name = String_.Replace(entry_name, "/", "\\"); // create file Io_url trg_fil_url = Io_url_.new_any_(trg_dir.GenSubFil(entry_name).Raw()); - Io_mgr.Instance.CreateDirIfAbsent(trg_fil_url.OwnerDir()); // make sure owner dir exists - if (trg_fil_url.Type_fil()) { - // write file - Io_mgr.Instance.SaveFilStr_args(trg_fil_url, "").Exec(); // need to write to create dirs; permissions; - FileOutputStream trg_fil_stream = new FileOutputStream(new File(trg_fil_url.Raw())); - boolean loop_bytes = true; - while (loop_bytes) { - int len = src_zip_stream.read(buffer); if (len < 1) break; - trg_fil_stream.write(buffer, 0, len); - switch (task.Prog__update(len)) { - case Io_zip_decompress_task.Status__canceled: - loop_entries = false; - loop_bytes = false; - break; - case Io_zip_decompress_task.Status__paused: - while (true) { - Thread_adp_.Sleep(1000); - if (!task.Paused()) break; - if (task.Canceled()) { - loop_entries = false; - loop_bytes = false; - break; - } - } - break; - case Io_zip_decompress_task.Status__ok: - break; + Io_url trg_tmp_url = trg_fil_url.GenNewNameAndExt(trg_fil_url.NameAndExt() + ".tmp"); + if (trg_tmp_url.Type_fil()) { + // handle resume + long item_in_raw = 0; + if (resume_item > 0) { + src_zip_stream.skip(resume_item); + Io_mgr.Instance.Truncate_fil(trg_tmp_url, resume_item); + item_in_raw = resume_item; + resume_item = 0; + } + FileOutputStream trg_fil_stream = new FileOutputStream(new File(trg_tmp_url.Raw()), resumed); + if (resumed) resumed = false; + boolean loop = true; + while (loop) { // loop over bytes + int read_in_raw = src_zip_stream.read(buffer); if (read_in_raw < 1) break; + trg_fil_stream.write(buffer, 0, read_in_raw); + item_in_raw += read_in_raw; + file_cur_in_raw += read_in_raw; + Checkpoint__save(entry_name, file_cur_in_raw, item_in_raw); + if (prog_ui.Prog_notify_and_chk_if_suspended(file_cur_in_raw, file_max_in_raw)) { + loop = false; + break; } } - trg_fil_stream.close(); + trg_fil_stream.close(); + if (!loop) return Gfo_prog_ui_.Status__suspended; // manually canceled } + Io_mgr.Instance.MoveFil_args(trg_tmp_url, trg_fil_url, true).Exec(); + trg_fils.Add(trg_fil_url); } + Gfo_evt_mgr_.Pub_val(Io_mgr.Instance, Io_mgr.Evt__fil_created, trg_fils.To_ary(Io_url.class)); } catch(IOException e) {throw Err_.new_exc(e, "ios.zip", "error duing unzip", "src", src_fil.Raw(), "trg", trg_dir.Raw());} finally { try { - src_zip_stream.closeEntry(); + // src_zip_stream.closeEntry(); // TOMBSTONE: takes a long time to close; does not seem to be necessary src_zip_stream.close(); } catch (Exception e) {} } + return Gfo_prog_ui_.Status__done; } } diff --git a/100_core/src/gplx/core/ios/zips/Io_zip_decompress_task.java b/100_core/src/gplx/core/ios/zips/Io_zip_decompress_task.java deleted file mode 100644 index dbf39d863..000000000 --- a/100_core/src/gplx/core/ios/zips/Io_zip_decompress_task.java +++ /dev/null @@ -1,137 +0,0 @@ -/* -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.core.ios.zips; import gplx.*; import gplx.core.*; import gplx.core.ios.*; -import gplx.core.threads.*; import gplx.core.progs.*; -public class Io_zip_decompress_task implements GfoInvkAble { -// private Gfo_prog_ui prog_ui; - private Io_url src_fil, trg_dir; - private boolean async; - private boolean canceled, paused; -// private long src_fil_len = 0; -// private long prog__cur = 0; - private Io_zip_decompress_cmd cmd; - public void Init(boolean async, Io_zip_decompress_cmd cmd, Io_url src_fil, Io_url trg_dir) { - this.async = async; this.cmd = cmd; // this.prog_ui = prog_ui; - this.src_fil = src_fil; this.trg_dir = trg_dir; - } - public String Resume__entry() {return resume__entry;} private String resume__entry; - public long Resume__bytes() {return resume__bytes;} private long resume__bytes; - public boolean Canceled() {return canceled;} - public boolean Paused() {return paused;} - public void Prog__start() { -// this.src_fil_len = Io_mgr.Instance.QueryFil(src_fil).Size(); - this.resume__entry = null; - this.resume__bytes = 0; - // load resume - // prog_ui.Prog__init(src_fil_len); - Thread_adp_.Run_cmd(async, "zip.decompress:" + src_fil.Raw(), this, Invk__unzip); - } - public byte Prog__update(long v) { -// prog__cur += v; - // prog_ui.Prog__update_val(prog__cur, src_fil_len); - if (paused) return Status__paused; - else if (canceled) return Status__canceled; - else return Status__ok; - } - public boolean Prog__update_name(String name) { - // prog_ui.Prog__update_misc("name", name); - return canceled; - } - public void Prog__pause() { - paused = true; - // save resume - } - public void Prog__resume() { - paused = false; - } - public void Prog__cancel() { - canceled = true; - // discard resume - } - public void Unzip() { - cmd.Decompress__exec(this, src_fil, trg_dir); -// prog_ui.Prog__end(); - } - public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { - if (ctx.Match(k, Invk__unzip)) this.Unzip(); - else return GfoInvkAble_.Rv_unhandled; - return this; - } private static final String Invk__unzip = "unzip"; - public static final byte Status__ok = 0, Status__paused = 1, Status__canceled = 2; -} -/* -class Notifier { - public Prog_update_bgn() { - for(Object o : list) - o.Prog_update_bgn(); - } - public Prog_update_end() { - for(Object o : list) - o.Prog_update_bgn(); - } - public Prog_update_val(long cur, long all) { - for(Object o : list) - o.Prog_update_bgn(); - } - public Prog_update_name(String name) { - for(Object o : list) - o.Prog_update_bgn(); - } -} -class unzip_prog_bar { - public Prog_update_val(long itm_cur, long itm_all) { - cur += itm_cur; - double pct = (cur / all) * 100; - pbar.style.width = pct + "%"; - pbar.text = Io_size.To_str(cur); - } - public Prog_update_name(String name) { - file.text = "unzipping:" + name; - } - public Prog_update_bgn(long cur) { - if (all == 0) { - panels.add(this); - } - all += cur; - } - public Prog_update_end() { - if (cur >= all) { - panels.del(this); - } - } -} -class pack_prog_bar { - public Prog_update_val(long cur, long all) { - double pct = (cur / all) * 100; - pbar.style.width = pct + "%"; - pbar.text = Io_size.To_str(cur); - } - public Prog_update_name(String name) { - file.text = "unzipping:" + name; - } - public Prog_update_bgn() { - pbar.visible = true; - file.visible = true; - file.text = "unzipping: " + ; - } - public Prog_update_end() { - pbar.visible = false; - file.visible = false; - } -} -*/ diff --git a/100_core/src/gplx/core/ios/zips/Io_zip_mgr_mok.java b/100_core/src/gplx/core/ios/zips/Io_zip_mgr_mok.java index feb545864..579e0266b 100644 --- a/100_core/src/gplx/core/ios/zips/Io_zip_mgr_mok.java +++ b/100_core/src/gplx/core/ios/zips/Io_zip_mgr_mok.java @@ -31,7 +31,6 @@ public class Io_zip_mgr_mok implements Io_zip_mgr { return Bry_.Mid(section, Bry_zipped.length, section.length); } public void Unzip_to_dir(Io_url src_fil, Io_url trg_dir) {} - public void Unzip_to_dir_prog(Io_zip_decompress_task task, Io_url src_fil, Io_url trg_dir) {} private static final byte[] Bry_zipped = Bry_.new_a7("zipped:"); public static final Io_zip_mgr_mok Instance = new Io_zip_mgr_mok(); Io_zip_mgr_mok() {} } diff --git a/100_core/src/gplx/core/js/Js_wtr.java b/100_core/src/gplx/core/js/Js_wtr.java index cc1c65316..33bdd87d3 100644 --- a/100_core/src/gplx/core/js/Js_wtr.java +++ b/100_core/src/gplx/core/js/Js_wtr.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.core.js; import gplx.*; import gplx.core.*; public class Js_wtr { - private final Bry_bfr bfr = Bry_bfr.reset_(32); + private final Bry_bfr bfr = Bry_bfr_.Reset(32); private int arg_idx = 0, ary_idx = 0; public byte Quote_char() {return quote_char;} public Js_wtr Quote_char_(byte v) {quote_char = v; return this;} private byte quote_char = Byte_ascii.Quote; public void Clear() {bfr.Clear();} @@ -103,5 +103,5 @@ public class Js_wtr { } bfr.Add_byte(quote_char); } - private static final byte[] Keyword_return = Bry_.new_a7("return "); + private static final byte[] Keyword_return = Bry_.new_a7("return "); } diff --git a/100_core/src/gplx/core/lists/Hash_adp_list.java b/100_core/src/gplx/core/lists/Hash_adp_list.java index ea289df10..365c2d96a 100644 --- a/100_core/src/gplx/core/lists/Hash_adp_list.java +++ b/100_core/src/gplx/core/lists/Hash_adp_list.java @@ -17,11 +17,11 @@ along with this program. If not, see . */ package gplx.core.lists; import gplx.*; import gplx.core.*; public class Hash_adp_list extends Hash_adp_base { - @gplx.New public List_adp Get_by(Object key) {return List_adp_.as_(Fetch_base(key));} + @gplx.New public List_adp Get_by(Object key) {return ((List_adp)Fetch_base(key));} public List_adp Get_by_or_new(Object key) { List_adp rv = Get_by(key); if (rv == null) { - rv = List_adp_.new_(); + rv = List_adp_.New(); Add_base(key, rv); } return rv; diff --git a/100_core/src/gplx/core/lists/StackAdp_.java b/100_core/src/gplx/core/lists/StackAdp_.java index 58701a961..eef2f7056 100644 --- a/100_core/src/gplx/core/lists/StackAdp_.java +++ b/100_core/src/gplx/core/lists/StackAdp_.java @@ -24,13 +24,13 @@ class StackAdp_base implements StackAdp { public Object Pop() {return Pop_base();} public void Push(Object obj) {Push_base(obj);} public List_adp XtoList() { - List_adp list = List_adp_.new_(); + List_adp list = List_adp_.New(); for (Object obj : stack) list.Add(obj); // NOTE: dotnet traverses last to first; java: first to last return list; } - final java.util.Stack stack = new java.util.Stack(); + final java.util.Stack stack = new java.util.Stack(); public StackAdp_base() {} public int Count() {return stack.size();} public void Clear() {stack.clear();} diff --git a/100_core/src/gplx/core/lists/rings/Ring__long.java b/100_core/src/gplx/core/lists/rings/Ring__long.java new file mode 100644 index 000000000..733ba09b9 --- /dev/null +++ b/100_core/src/gplx/core/lists/rings/Ring__long.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.core.lists.rings; import gplx.*; import gplx.core.*; import gplx.core.lists.*; +public class Ring__long { + private final long[] ary; + private final int max; + private int nxt, idx_0; + public Ring__long(int max) { + this.max = max; + this.ary = new long[max]; + } + public int Len() {return len;} private int len; + public void Clear() { + for (int i = 0; i < max; ++i) + ary[i] = 0; + len = nxt = 0; + idx_0 = 0; + } + public long Get_at(int i) { + int idx = idx_0 + i; + if (idx >= max) idx -= max; + return ary[idx]; + } + public void Add(long val) { + ary[nxt] = val; // set ary idx + if (++nxt == max) // increment nxt; if max... + nxt = 0; // ...set to 0; + if (len == max) // set idx_0 + idx_0 = nxt == 0 ? 0 : nxt; + if (len < max) // increment len unless already at max + ++len; + } + public long[] To_ary() { + long[] rv = new long[len]; + for (int i = 0; i < len; ++i) + rv[i] = Get_at(i); + return rv; + } +} diff --git a/100_core/src/gplx/core/lists/rings/Ring__long__tst.java b/100_core/src/gplx/core/lists/rings/Ring__long__tst.java new file mode 100644 index 000000000..9c676a120 --- /dev/null +++ b/100_core/src/gplx/core/lists/rings/Ring__long__tst.java @@ -0,0 +1,41 @@ +/* +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.core.lists.rings; import gplx.*; import gplx.core.*; import gplx.core.lists.*; +import org.junit.*; import gplx.core.tests.*; +public class Ring__long__tst { + private final Ring__long__fxt fxt = new Ring__long__fxt(); + @Test public void Basic__1() {fxt.Clear().Add(1) .Test__to_ary(1);} + @Test public void Basic__2() {fxt.Clear().Add(1, 2) .Test__to_ary(1, 2);} + @Test public void Basic__3() {fxt.Clear().Add(1, 2, 3) .Test__to_ary(1, 2, 3);} + @Test public void Wrap__1() {fxt.Clear().Add(1, 2, 3, 4) .Test__to_ary(2, 3, 4);} + @Test public void Wrap__2() {fxt.Clear().Add(1, 2, 3, 4, 5) .Test__to_ary(3, 4, 5);} + @Test public void Wrap__3() {fxt.Clear().Add(1, 2, 3, 4, 5, 6) .Test__to_ary(4, 5, 6);} +} +class Ring__long__fxt { + private Ring__long ring = new Ring__long(3); + public Ring__long__fxt Clear() {ring.Clear(); return this;} + public Ring__long__fxt Add(long... ary) { + for (long itm : ary) + ring.Add(itm); + return this; + } + public Ring__long__fxt Test__to_ary(long... expd) { + Gftest.Eq__ary(expd, ring.To_ary(), "to_ary"); + return this; + } +} diff --git a/100_core/src/gplx/core/strings/String_ring.java b/100_core/src/gplx/core/lists/rings/Ring__string.java similarity index 87% rename from 100_core/src/gplx/core/strings/String_ring.java rename to 100_core/src/gplx/core/lists/rings/Ring__string.java index a34a616cd..dbe87cbb1 100644 --- a/100_core/src/gplx/core/strings/String_ring.java +++ b/100_core/src/gplx/core/lists/rings/Ring__string.java @@ -15,11 +15,11 @@ 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.core.strings; import gplx.*; import gplx.core.*; -public class String_ring { +package gplx.core.lists.rings; import gplx.*; import gplx.core.*; import gplx.core.lists.*; +public class Ring__string { String[] ary = String_.Ary_empty; public int Len() {return len;} int len; - public String_ring Max_(int v) { + public Ring__string Max_(int v) { if (v != max) { ary = new String[v]; max = v; @@ -57,5 +57,4 @@ public class String_ring { } return rv; } -// public String Get_at(int i) {return } } diff --git a/100_core/src/gplx/core/strings/String_ring_tst.java b/100_core/src/gplx/core/lists/rings/Ring__string__tst.java similarity index 73% rename from 100_core/src/gplx/core/strings/String_ring_tst.java rename to 100_core/src/gplx/core/lists/rings/Ring__string__tst.java index 081a22170..e573d0268 100644 --- a/100_core/src/gplx/core/strings/String_ring_tst.java +++ b/100_core/src/gplx/core/lists/rings/Ring__string__tst.java @@ -15,10 +15,10 @@ 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.core.strings; import gplx.*; import gplx.core.*; +package gplx.core.lists.rings; import gplx.*; import gplx.core.*; import gplx.core.lists.*; import org.junit.*; -public class String_ring_tst { - String_ring_fxt fxt = new String_ring_fxt(); +public class Ring__string__tst { + private final Ring__string__fxt fxt = new Ring__string__fxt(); @Before public void init() {fxt.Clear();} @Test public void Basic() { fxt.Clear().Max_(3).Push_many("a") .Expd("a"); @@ -29,17 +29,17 @@ public class String_ring_tst { fxt.Clear().Max_(3).Push_many("a", "b", "c", "d", "e", "f") .Expd("d", "e", "f"); } } -class String_ring_fxt { - String_ring ring = new String_ring(); - public String_ring_fxt Clear() {ring.Clear(); return this;} - public String_ring_fxt Max_(int v) {ring.Max_(v); return this;} - public String_ring_fxt Push_many(String... ary) { +class Ring__string__fxt { + Ring__string ring = new Ring__string(); + public Ring__string__fxt Clear() {ring.Clear(); return this;} + public Ring__string__fxt Max_(int v) {ring.Max_(v); return this;} + public Ring__string__fxt Push_many(String... ary) { int ary_len = ary.length; for (int i = 0; i < ary_len; i++) ring.Push(ary[i]); return this; } - public String_ring_fxt Expd(String... expd) { + public Ring__string__fxt Expd(String... expd) { Tfds.Eq_ary_str(expd, ring.Xto_str_ary()); return this; } diff --git a/100_core/src/gplx/core/log_msgs/Gfo_msg_grp.java b/100_core/src/gplx/core/log_msgs/Gfo_msg_grp.java index a948b69a8..e72fc62f7 100644 --- a/100_core/src/gplx/core/log_msgs/Gfo_msg_grp.java +++ b/100_core/src/gplx/core/log_msgs/Gfo_msg_grp.java @@ -42,5 +42,5 @@ public class Gfo_msg_grp implements Gfo_msg_obj { return null; } public void Subs_add(Gfo_msg_itm item) {subs.Add(item);} - List_adp subs = List_adp_.new_(); + List_adp subs = List_adp_.New(); } diff --git a/100_core/src/gplx/core/log_msgs/Gfo_msg_grp_.java b/100_core/src/gplx/core/log_msgs/Gfo_msg_grp_.java index bd5fa9c8c..c00f958dc 100644 --- a/100_core/src/gplx/core/log_msgs/Gfo_msg_grp_.java +++ b/100_core/src/gplx/core/log_msgs/Gfo_msg_grp_.java @@ -17,8 +17,8 @@ along with this program. If not, see . */ package gplx.core.log_msgs; import gplx.*; import gplx.core.*; public class Gfo_msg_grp_ { - public static final Gfo_msg_grp Root_gplx = new Gfo_msg_grp(null, Gfo_msg_grp_.Uid_next(), Bry_.new_a7("gplx")); - public static final Gfo_msg_grp Root = new Gfo_msg_grp(null, Gfo_msg_grp_.Uid_next(), Bry_.Empty); + public static final Gfo_msg_grp Root_gplx = new Gfo_msg_grp(null, Gfo_msg_grp_.Uid_next(), Bry_.new_a7("gplx")); + public static final Gfo_msg_grp Root = new Gfo_msg_grp(null, Gfo_msg_grp_.Uid_next(), Bry_.Empty); public static Gfo_msg_grp prj_(String key) {return new Gfo_msg_grp(Root , Gfo_msg_grp_.Uid_next(), Bry_.new_a7(key));} public static Gfo_msg_grp new_(Gfo_msg_grp owner, String key) {return new Gfo_msg_grp(owner , Gfo_msg_grp_.Uid_next(), Bry_.new_a7(key));} public static int Uid_next() {return uid_next++;} static int uid_next = 0; @@ -26,5 +26,5 @@ public class Gfo_msg_grp_ { if (owner_path != Bry_.Empty) tmp_bfr.Add(owner_path).Add_byte(Byte_ascii.Dot); // only add "." if owner_path is available; prevents creating ".gplx" return tmp_bfr.Add(key).To_bry_and_clear(); } - static Bry_bfr tmp_bfr = Bry_bfr.reset_(256); + static Bry_bfr tmp_bfr = Bry_bfr_.Reset(256); } diff --git a/100_core/src/gplx/core/log_msgs/Gfo_msg_itm.java b/100_core/src/gplx/core/log_msgs/Gfo_msg_itm.java index e6b09da73..b3a181af7 100644 --- a/100_core/src/gplx/core/log_msgs/Gfo_msg_itm.java +++ b/100_core/src/gplx/core/log_msgs/Gfo_msg_itm.java @@ -54,5 +54,5 @@ public class Gfo_msg_itm implements Gfo_msg_obj { return String_.new_u8(fmt); } public String Gen_str_none() {return key_str;} - static Bry_bfr tmp_bfr = Bry_bfr.reset_(255); + static Bry_bfr tmp_bfr = Bry_bfr_.Reset(255); } diff --git a/100_core/src/gplx/core/logs/Gfo_log__base.java b/100_core/src/gplx/core/logs/Gfo_log__base.java new file mode 100644 index 000000000..fad3cf7a2 --- /dev/null +++ b/100_core/src/gplx/core/logs/Gfo_log__base.java @@ -0,0 +1,44 @@ +/* +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.core.logs; import gplx.*; import gplx.core.*; +public abstract class Gfo_log__base implements Gfo_log { + private long time_prv = 0; + public void Warn(String msg, Object... args) { + long time = gplx.core.envs.Env_.TickCount(); + long elapsed = time_prv == 0 ? 0 : time - time_prv; + Exec(Gfo_log_itm.Type__warn, time, elapsed, msg, args); + } + public void Note(String msg, Object... args) { + long time = gplx.core.envs.Env_.TickCount(); + long elapsed = time_prv == 0 ? 0 : time - time_prv; + Exec(Gfo_log_itm.Type__note, time, elapsed, msg, args); + } + public void Info(String msg, Object... args) { + long time = gplx.core.envs.Env_.TickCount(); + long elapsed = time_prv == 0 ? 0 : time - time_prv; + Exec(Gfo_log_itm.Type__info, time, elapsed, msg, args); + } + public void Prog(String msg, Object... args) { + long time = gplx.core.envs.Env_.TickCount(); + long elapsed = time_prv == 0 ? 0 : time - time_prv; + Exec(Gfo_log_itm.Type__prog, time, elapsed, msg, args); + } + public abstract List_adp Itms(); public abstract Gfo_log Itms_(List_adp v); + public abstract void Exec(byte type, long time, long elapsed, String msg, Object[] args); + public abstract void Flush(); +} diff --git a/100_core/src/gplx/core/logs/Gfo_log__file.java b/100_core/src/gplx/core/logs/Gfo_log__file.java new file mode 100644 index 000000000..e315a01b9 --- /dev/null +++ b/100_core/src/gplx/core/logs/Gfo_log__file.java @@ -0,0 +1,42 @@ +/* +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.core.logs; import gplx.*; import gplx.core.*; +public class Gfo_log__file extends Gfo_log__base { + public final Gfo_log_itm_wtr fmtr; + private final Bry_bfr bfr = Bry_bfr_.New(); + public Gfo_log__file(Io_url url, Gfo_log_itm_wtr fmtr) { + this.url = url; this.fmtr = fmtr; + } + public Io_url Url() {return url;} private final Io_url url; + @Override public List_adp Itms() {return itms;} @Override public Gfo_log Itms_(List_adp v) {this.itms = v; return this;} private List_adp itms; + @Override public void Exec(byte type, long time, long elapsed, String msg, Object[] args) { + if (type == Gfo_log_itm.Type__prog) return; + Gfo_log_itm itm = new Gfo_log_itm(type, time, elapsed, msg, args); + itms.Add(itm); + } + @Override public void Flush() { + int len = itms.Len(); + for (int i = 0; i < len; ++i) { + Gfo_log_itm itm = (Gfo_log_itm)itms.Get_at(i); + fmtr.Write(bfr, itm); + } + byte[] bry = bfr.To_bry_and_clear(); if (bry.length == 0) return; // don't bother writing empty bfr; happens during Xolog.Delete + Io_mgr.Instance.AppendFilByt(url, bry); + itms.Clear(); + } +} diff --git a/100_core/src/gplx/core/logs/Gfo_log__mem.java b/100_core/src/gplx/core/logs/Gfo_log__mem.java new file mode 100644 index 000000000..bd95db3c3 --- /dev/null +++ b/100_core/src/gplx/core/logs/Gfo_log__mem.java @@ -0,0 +1,26 @@ +/* +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.core.logs; import gplx.*; import gplx.core.*; +public class Gfo_log__mem extends Gfo_log__base { + @Override public List_adp Itms() {return itms;} @Override public Gfo_log Itms_(List_adp v) {this.itms = v; return this;} private List_adp itms = List_adp_.New(); + @Override public void Exec(byte type, long time, long elapsed, String msg, Object[] args) { + Gfo_log_itm itm = new Gfo_log_itm(type, time, elapsed, msg, args); + itms.Add(itm); + } + @Override public void Flush() {} +} diff --git a/100_core/src/gplx/core/logs/Gfo_log_itm.java b/100_core/src/gplx/core/logs/Gfo_log_itm.java new file mode 100644 index 000000000..426db39c5 --- /dev/null +++ b/100_core/src/gplx/core/logs/Gfo_log_itm.java @@ -0,0 +1,34 @@ +/* +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.core.logs; import gplx.*; import gplx.core.*; +public class Gfo_log_itm { + public Gfo_log_itm(byte type, long time, long elapsed, String msg, Object[] args) { + this.Type = type; + this.Time = time; + this.Elapsed = elapsed; + this.Msg = msg; + this.Args = args; + } + public final byte Type; + public final long Time; + public final long Elapsed; + public final String Msg; + public final Object[] Args; + + public static final byte Type__fail = 0, Type__warn = 1, Type__note = 2, Type__info = 3, Type__prog = 4; +} diff --git a/100_core/src/gplx/core/logs/Gfo_log_itm_wtr.java b/100_core/src/gplx/core/logs/Gfo_log_itm_wtr.java new file mode 100644 index 000000000..8b2818ddf --- /dev/null +++ b/100_core/src/gplx/core/logs/Gfo_log_itm_wtr.java @@ -0,0 +1,21 @@ +/* +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.core.logs; import gplx.*; import gplx.core.*; +public interface Gfo_log_itm_wtr { + void Write(Bry_bfr bfr, Gfo_log_itm itm); +} diff --git a/100_core/src/gplx/core/logs/Gfo_log_itm_wtr__csv.java b/100_core/src/gplx/core/logs/Gfo_log_itm_wtr__csv.java new file mode 100644 index 000000000..98b969461 --- /dev/null +++ b/100_core/src/gplx/core/logs/Gfo_log_itm_wtr__csv.java @@ -0,0 +1,70 @@ +/* +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.core.logs; import gplx.*; import gplx.core.*; +public class Gfo_log_itm_wtr__csv implements Gfo_log_itm_wtr { + private static final byte[] Type__info = Bry_.new_a7("INFO"), Type__note = Bry_.new_a7("NOTE"), Type__warn = Bry_.new_a7("WARN"); + private String time_fmt = "yyyyMMdd_HHmmss.fff"; + public void Write(Bry_bfr bfr, Gfo_log_itm itm) { + bfr.Add_str_a7(Int_.To_str_pad_bgn_space((int)itm.Elapsed, 6)).Add_byte_pipe(); + bfr.Add_str_a7(DateAdp_.unixtime_utc_ms_(itm.Time).XtoStr_fmt(time_fmt)).Add_byte_pipe(); + byte[] type = null; + switch (itm.Type) { + case Gfo_log_itm.Type__info: type = Type__info; break; + case Gfo_log_itm.Type__note: type = Type__note; break; + case Gfo_log_itm.Type__warn: type = Type__warn; break; + } + bfr.Add(type).Add_byte_pipe(); + Escape_str(bfr, itm.Msg); bfr.Add_byte_pipe(); + Object[] args = itm.Args; + int args_len = args.length; + for (int i = 0; i < args_len; i += 2) { + Object key = args[i]; + int val_idx = i + 1; + Object val = i < val_idx ? args[val_idx] : "<<>>"; + Escape_str(bfr, Object_.Xto_str_strict_or_null_mark(key)); bfr.Add_byte_eq(); + Escape_str(bfr, Object_.Xto_str_strict_or_null_mark(val)); bfr.Add_byte_pipe(); + } + bfr.Add_byte_nl(); + } + private void Escape_str(Bry_bfr bfr, String str) { + byte[] bry = Bry_.new_u8(str); + int len = bry.length; + boolean dirty = false; + for (int i = 0; i < len; ++i) { + byte b = bry[i]; + byte escape_byte = Byte_ascii.Null; + switch (b) { + case Byte_ascii.Pipe: escape_byte = Byte_ascii.Ltr_p; break; + case Byte_ascii.Nl: escape_byte = Byte_ascii.Ltr_n; break; + case Byte_ascii.Tick: escape_byte = Byte_ascii.Tick; break; + default: + if (dirty) + bfr.Add_byte(b); + break; + } + if (escape_byte != Byte_ascii.Null) { + if (!dirty) { + dirty = true; + bfr.Add_mid(bry, 0, i); + } + bfr.Add_byte(Byte_ascii.Tick).Add_byte(escape_byte); + } + } + if (!dirty) bfr.Add(bry); + } +} diff --git a/100_core/src/gplx/core/primitives/EnmMgr.java b/100_core/src/gplx/core/primitives/EnmMgr.java index 83bcea339..17599e918 100644 --- a/100_core/src/gplx/core/primitives/EnmMgr.java +++ b/100_core/src/gplx/core/primitives/EnmMgr.java @@ -67,6 +67,6 @@ public class EnmMgr { if (prefix != null) sb.Add(prefix); sb.Add(raw); } - Hash_adp rawRegy = Hash_adp_.new_(), valRegy = Hash_adp_.new_(), objRegy = Hash_adp_.new_(); + Hash_adp rawRegy = Hash_adp_.New(), valRegy = Hash_adp_.New(), objRegy = Hash_adp_.New(); public static EnmMgr new_() {return new EnmMgr();} EnmMgr() {} } diff --git a/100_core/src/gplx/core/primitives/Int_obj_ref.java b/100_core/src/gplx/core/primitives/Int_obj_ref.java index fa9d384ee..97a45abce 100644 --- a/100_core/src/gplx/core/primitives/Int_obj_ref.java +++ b/100_core/src/gplx/core/primitives/Int_obj_ref.java @@ -17,6 +17,7 @@ along with this program. If not, see . */ package gplx.core.primitives; import gplx.*; import gplx.core.*; public class Int_obj_ref { + Int_obj_ref(int val) {this.val = val;} public int Val() {return val;} public Int_obj_ref Val_(int v) {val = v; return this;} int val; public int Val_add() {val++; return val;} public int Val_add_post() {return val++;} @@ -24,22 +25,12 @@ public class Int_obj_ref { public Int_obj_ref Val_zero_() {val = 0; return this;} public Int_obj_ref Val_neg1_() {val = -1; return this;} public String Val_as_str() {return Int_.To_str(val);} + @Override public String toString() {return Int_.To_str(val);} @Override public int hashCode() {return val;} @Override public boolean equals(Object obj) {return val == ((Int_obj_ref)obj).Val();} - public static Int_obj_ref neg1_() {return new_(-1);} - public static Int_obj_ref zero_() {return new_(0);} - public static Int_obj_ref new_(int val) { - Int_obj_ref rv = new Int_obj_ref(); - rv.val = val; - return rv; - } Int_obj_ref() {} - public static int[] Ary_xto_int_ary(Int_obj_ref[] ary) { - int len = ary.length; - int[] rv = new int[len]; - for (int i = 0; i < len; ++i) - rv[i] = ary[i].val; - return rv; - } + public static Int_obj_ref New_neg1() {return new Int_obj_ref(-1);} + public static Int_obj_ref New_zero() {return new Int_obj_ref(0);} + public static Int_obj_ref New(int val) {return new Int_obj_ref(val);} } diff --git a/100_core/src/gplx/core/progs/Gfo_prog_ui.java b/100_core/src/gplx/core/progs/Gfo_prog_ui.java index 31e2bd696..20731a6c1 100644 --- a/100_core/src/gplx/core/progs/Gfo_prog_ui.java +++ b/100_core/src/gplx/core/progs/Gfo_prog_ui.java @@ -16,17 +16,10 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.core.progs; import gplx.*; import gplx.core.*; -public interface Gfo_prog_ui { - boolean Prog__started(); - boolean Prog__paused(); - boolean Prog__finished(); - boolean Prog__canceled(); - long Prog__cur(); - long Prog__end(); - void Prog__start(); - void Prog__pause(); - void Prog__resume(); - void Prog__cancel(); - byte Prog__notify__working(long cur, long max); - void Prog__notify__finished(); +public interface Gfo_prog_ui extends Cancelable { + byte Prog_status(); + void Prog_status_(byte v); + long Prog_data_cur(); + long Prog_data_end(); + boolean Prog_notify_and_chk_if_suspended(long cur, long max); } diff --git a/100_core/src/gplx/core/progs/Gfo_prog_ui_.java b/100_core/src/gplx/core/progs/Gfo_prog_ui_.java index c55120348..196d4a54d 100644 --- a/100_core/src/gplx/core/progs/Gfo_prog_ui_.java +++ b/100_core/src/gplx/core/progs/Gfo_prog_ui_.java @@ -17,12 +17,31 @@ along with this program. If not, see . */ package gplx.core.progs; import gplx.*; import gplx.core.*; public class Gfo_prog_ui_ { - public static final byte State__inited = 0, State__started = 1, State__paused = 2, State__finished = 3, State__canceled = 4; - public static boolean Sleep_while_paused(Gfo_prog_ui prog_ui) { - while (true) { - gplx.core.threads.Thread_adp_.Sleep(100); - if (!prog_ui.Prog__paused()) return Bool_.Y; - else if (prog_ui.Prog__canceled()) return Bool_.N; - } - } + public static final Gfo_prog_ui Noop = new Gfo_prog_ui__noop(), Always = new Gfo_prog_ui__always(); + public static final byte + Status__init = 1 + , Status__working = 2 + , Status__done = 4 + , Status__fail = 8 + , Status__suspended = 16 + , Status__runnable = Status__init | Status__suspended + ; +} +class Gfo_prog_ui__noop implements Gfo_prog_ui { + public boolean Canceled() {return true;} + public void Cancel() {} + public byte Prog_status() {return Gfo_prog_ui_.Status__init;} + public void Prog_status_(byte v) {} + public long Prog_data_cur() {return 0;} + public long Prog_data_end() {return 0;} + public boolean Prog_notify_and_chk_if_suspended(long cur, long max) {return false;} +} +class Gfo_prog_ui__always implements Gfo_prog_ui { + public boolean Canceled() {return false;} + public void Cancel() {} + public byte Prog_status() {return Gfo_prog_ui_.Status__init;} + public void Prog_status_(byte v) {} + public long Prog_data_cur() {return 0;} + public long Prog_data_end() {return 0;} + public boolean Prog_notify_and_chk_if_suspended(long cur, long max) {return false;} } diff --git a/100_core/src/gplx/core/progs/Gfo_prog_ui_base.java b/100_core/src/gplx/core/progs/Gfo_prog_ui_base.java deleted file mode 100644 index d502aa1a7..000000000 --- a/100_core/src/gplx/core/progs/Gfo_prog_ui_base.java +++ /dev/null @@ -1,39 +0,0 @@ -/* -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.core.progs; import gplx.*; import gplx.core.*; -public abstract class Gfo_prog_ui_base implements Gfo_prog_ui { - public boolean Prog__started() {return started;} private boolean started; - public boolean Prog__paused() {return paused;} private boolean paused; - public boolean Prog__finished() {return finished;} private boolean finished; - public boolean Prog__canceled() {return canceled;} private boolean canceled; - public long Prog__cur() {return cur;} private long cur; - public long Prog__end() {return end;} private long end; public void Prog__end_(long v) {this.end = v;} - public void Prog__start() {started = true;} - public void Prog__pause() {paused = true;} - public void Prog__resume() {paused = false;} - public void Prog__cancel() {canceled = true;} - @gplx.Virtual public void Prog__notify__finished() { - this.finished = true; - } - @gplx.Virtual public byte Prog__notify__working(long cur, long end) { - this.cur = cur; this.end = end; - if (paused) return Gfo_prog_ui_.State__paused; - else if (canceled) return Gfo_prog_ui_.State__canceled; - else return Gfo_prog_ui_.State__started; - } -} diff --git a/100_core/src/gplx/core/progs/Gfo_resume_wkr.java b/100_core/src/gplx/core/progs/Gfo_resume_wkr.java new file mode 100644 index 000000000..a13fc74df --- /dev/null +++ b/100_core/src/gplx/core/progs/Gfo_resume_wkr.java @@ -0,0 +1,53 @@ +/* +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.core.progs; import gplx.*; import gplx.core.*; +public interface Gfo_resume_wkr { + boolean Resuming(); + long Get_long(byte tid); + void Set_long(byte tid, long v); +} +class Gfo_resume_wkr__download { + public boolean Resuming() {return resuming;} private boolean resuming = true; + public long Get_long(byte tid) {return val;} private long val; + public void Set_long(byte tid, long v) {val = v;} +} +class Gfo_resume_wkr__unzip { + public boolean Resuming() {return resuming;} private boolean resuming = true; + public long Get_long(byte tid) {return val;} private long val; + public void Set_long(byte tid, long v) {val = v;} + public String Get_str(byte tid) {return name;} private String name; + public void Set_str(byte tid, String v) {this.name = v;} +} +/* +[ + { "job_uid": + , "subs": + [ + { "download" + , "done": 0 + , "resume_bytes":123 + } + , { "unzip" + , "done": 0 + , "resume_file":abc + , "resume_bytes":123 + } + ] + } +] +*/ diff --git a/100_core/src/gplx/core/security/Hash_algo.java b/100_core/src/gplx/core/security/Hash_algo.java index f9b88912c..0e125cf73 100644 --- a/100_core/src/gplx/core/security/Hash_algo.java +++ b/100_core/src/gplx/core/security/Hash_algo.java @@ -20,6 +20,6 @@ public interface Hash_algo { String Key(); byte[] Hash_bry_as_bry(byte[] src); String Hash_bry_as_str(byte[] src); - String Hash_stream_as_str(gplx.core.consoles.Console_adp console, gplx.core.ios.IoStream src_stream); - byte[] Hash_stream_as_bry(gplx.core.progs.Gfo_prog_ui prog_ui, gplx.core.ios.IoStream src_stream); + String Hash_stream_as_str(gplx.core.consoles.Console_adp console, gplx.core.ios.streams.IoStream src_stream); + byte[] Hash_stream_as_bry(gplx.core.progs.Gfo_prog_ui prog_ui, gplx.core.ios.streams.IoStream src_stream); } diff --git a/100_core/src/gplx/core/security/Hash_algo_.java b/100_core/src/gplx/core/security/Hash_algo_.java index 84be4206e..6bd4e4901 100644 --- a/100_core/src/gplx/core/security/Hash_algo_.java +++ b/100_core/src/gplx/core/security/Hash_algo_.java @@ -19,13 +19,22 @@ package gplx.core.security; import gplx.*; import gplx.core.*; import java.math.BigInteger; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; -import gplx.core.consoles.*; import gplx.core.ios.*; /*IoStream*/ +import gplx.core.consoles.*; import gplx.core.ios.streams.*; /*IoStream*/ import gplx.core.texts.*; /*Base32Converter*/ import gplx.core.progs.*; public class Hash_algo_ { public static Hash_algo New__md5() {return new Hash_algo__md5();} public static Hash_algo New__sha1() {return new Hash_algo__sha1();} public static Hash_algo New__sha2_256() {return new Hash_algo__sha2_256();} public static Hash_algo New__tth_192() {return new Hash_algo__tth_192();} + public static Hash_algo New_by_tid(byte tid) { + switch (tid) { + case Tid__md5: return New__md5(); + case Tid__sha1: return New__sha1(); + case Tid__sha2_256: return New__sha2_256(); + case Tid__tth_192: return New__tth_192(); + default: throw Err_.new_unhandled_default(tid); + } + } public static Hash_algo New(String key) { if (key == Hash_algo__md5.KEY) return New__md5(); else if (key == Hash_algo__sha1.KEY) return New__sha1(); @@ -33,6 +42,7 @@ public class Hash_algo_ { else if (key == Hash_algo__tth_192.KEY) return New__tth_192(); else throw Err_.new_unhandled(key); } + public static final byte Tid__md5 = 0, Tid__sha1 = 1, Tid__sha2_256 = 2, Tid__tth_192 = 3; } abstract class Hash_algo_base implements Hash_algo { private final MessageDigest md; @@ -97,10 +107,12 @@ class Hash_algo_utl_ { int pos = 0; while (true) { if (pos == src_len) break; - int end = pos + 4096; - if (end > src_len) end = src_len; - md.update(src_bry, pos, end); - pos = end; + int len = 4096; + if (pos + len > src_len) { + len = src_len - pos; + } + md.update(src_bry, pos, len); + pos += len; } byte[] md_bry = md.digest(); gplx.core.encoders.Hex_utl_.Encode_bry(md_bry, trg_bry); @@ -117,22 +129,17 @@ class Hash_algo_utl_ { gplx.core.encoders.Hex_utl_.Encode_bry(md_bry , trg_bry); } public static void Hash_stream(Gfo_prog_ui prog_ui, IoStream stream, MessageDigest md, byte[] tmp_bfr, int tmp_bfr_len, byte[] trg_bry) { - long pos = 0, len = stream.Len(); // pos and len must be long, else will not hash files > 2 GB + long pos = prog_ui.Prog_data_cur(), len = prog_ui.Prog_data_end(); // pos and len must be long, else will not hash files > 2 GB try { while (true) { int read = stream.Read(tmp_bfr, 0, tmp_bfr_len); // read stream into tmp_bfr if (read < 1) break; - md.update(tmp_bfr, 0, read); - switch (prog_ui.Prog__notify__working(pos, len)) { - case Gfo_prog_ui_.State__started: break; - case Gfo_prog_ui_.State__canceled: return; - case Gfo_prog_ui_.State__paused: if (!Gfo_prog_ui_.Sleep_while_paused(prog_ui)) return; break; - } + md.update(tmp_bfr, 0, read); + if (prog_ui.Prog_notify_and_chk_if_suspended(pos, len)) return; pos += read; } } finally {stream.Rls();} - prog_ui.Prog__notify__finished(); byte[] md_bry = md.digest(); gplx.core.encoders.Hex_utl_.Encode_bry(md_bry , trg_bry); } diff --git a/100_core/src/gplx/core/security/Hash_algo__md5__tst.java b/100_core/src/gplx/core/security/Hash_algo__md5__tst.java index c79d1ce83..ecd01dea2 100644 --- a/100_core/src/gplx/core/security/Hash_algo__md5__tst.java +++ b/100_core/src/gplx/core/security/Hash_algo__md5__tst.java @@ -36,6 +36,6 @@ class Hash_algo__fxt { public Hash_algo__fxt(Hash_algo algo) {this.algo = algo;} public void Test__hash(String expd, String raw) { Tfds.Eq(expd, algo.Hash_bry_as_str(Bry_.new_u8(raw))); - Tfds.Eq(expd, algo.Hash_stream_as_str(gplx.core.consoles.Console_adp_.Noop, gplx.core.ios.IoStream_.mem_txt_(Io_url_.Empty, raw))); + Tfds.Eq(expd, algo.Hash_stream_as_str(gplx.core.consoles.Console_adp_.Noop, gplx.core.ios.streams.IoStream_.mem_txt_(Io_url_.Empty, raw))); } } diff --git a/100_core/src/gplx/core/security/Hash_algo__tth_192.java b/100_core/src/gplx/core/security/Hash_algo__tth_192.java index b209928da..041e43e56 100644 --- a/100_core/src/gplx/core/security/Hash_algo__tth_192.java +++ b/100_core/src/gplx/core/security/Hash_algo__tth_192.java @@ -16,13 +16,13 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.core.security; import gplx.*; import gplx.core.*; -import gplx.core.consoles.*; import gplx.core.ios.*; /*IoStream*/ +import gplx.core.consoles.*; import gplx.core.ios.streams.*; /*IoStream*/ import gplx.core.progs.*; public class Hash_algo__tth_192 implements Hash_algo { public String Key() {return KEY;} public static final String KEY = "tth192"; public int BlockSize() {return blockSize;} public void BlockSize_set(int v) {blockSize = v;} int blockSize = 1024; public String Hash_bry_as_str(byte[] src) {return String_.new_a7(Hash_bry_as_bry(src));} - public byte[] Hash_bry_as_bry(byte[] v) {return Bry_.new_a7(Hash_stream_as_str(Console_adp_.Noop, gplx.core.ios.IoStream_.ary_(v)));} + public byte[] Hash_bry_as_bry(byte[] v) {return Bry_.new_a7(Hash_stream_as_str(Console_adp_.Noop, gplx.core.ios.streams.IoStream_.ary_(v)));} public byte[] Hash_stream_as_bry(Gfo_prog_ui prog_ui, IoStream stream) {return Bry_.new_a7(Hash_stream_as_str(Console_adp_.Noop, stream));} public String Hash_stream_as_str(Console_adp dialog, IoStream stream) { int leafCount = (int)(stream.Len() / blockSize); @@ -43,7 +43,7 @@ public class Hash_algo__tth_192 implements Hash_algo { if (blockA == null || blockA.length != blockSize) blockA = new byte[blockSize]; if (blockB == null || blockB.length != blockSize) blockB = new byte[blockSize]; - int dataSize = stream.Read(blockA, 0, blockSize); // if (dataSize < BlockSize) return (CalcHash_leaf(ShrinkArray(blockA, dataSize))); // TODO: reinstate? + int dataSize = stream.Read(blockA, 0, blockSize); // if (dataSize < BlockSize) return (CalcHash_leaf(ShrinkArray(blockA, dataSize))); // TODO_OLD: reinstate? dataSize = stream.Read(blockB, 0, blockSize); if (dataSize < blockSize) blockB = ShrinkArray(blockB, dataSize); // shrink array to match data size (occurs at end of stream, when lastBytesCount < BlockSize) return CalcHash_branch(CalcHash_leaf(blockA, 0), CalcHash_leaf(blockB, 1)); diff --git a/100_core/src/gplx/core/security/Hash_console_wtr_tst.java b/100_core/src/gplx/core/security/Hash_console_wtr_tst.java index 87d9033c2..65c82a120 100644 --- a/100_core/src/gplx/core/security/Hash_console_wtr_tst.java +++ b/100_core/src/gplx/core/security/Hash_console_wtr_tst.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.core.security; import gplx.*; import gplx.core.*; -import org.junit.*; import gplx.core.consoles.*; import gplx.core.ios.*; /*IoStream*/ +import org.junit.*; import gplx.core.consoles.*; import gplx.core.ios.streams.*; /*IoStream*/ public class Hash_console_wtr_tst { @Before public void setup() { Hash_algo__tth_192 algo = new Hash_algo__tth_192(); diff --git a/100_core/src/gplx/core/stores/DataRdr.java b/100_core/src/gplx/core/stores/DataRdr.java index 9e1cd1b24..b9e900b89 100644 --- a/100_core/src/gplx/core/stores/DataRdr.java +++ b/100_core/src/gplx/core/stores/DataRdr.java @@ -41,7 +41,7 @@ public interface DataRdr extends SrlMgr, Rls_able { byte ReadByte(String key); byte ReadByteOr(String key, byte or); Decimal_adp ReadDecimal(String key); Decimal_adp ReadDecimalOr(String key, Decimal_adp or); DateAdp ReadDate(String key); DateAdp ReadDateOr(String key, DateAdp or); - gplx.core.ios.Io_stream_rdr ReadRdr(String key); + gplx.core.ios.streams.Io_stream_rdr ReadRdr(String key); boolean MoveNextPeer(); DataRdr Subs(); diff --git a/100_core/src/gplx/core/stores/DataRdr_.java b/100_core/src/gplx/core/stores/DataRdr_.java index cc924846d..558b24595 100644 --- a/100_core/src/gplx/core/stores/DataRdr_.java +++ b/100_core/src/gplx/core/stores/DataRdr_.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.core.stores; import gplx.*; import gplx.core.*; import gplx.core.strings.*; public class DataRdr_ { - public static final DataRdr Null = new DataRdr_null(); + public static final DataRdr Null = new DataRdr_null(); public static DataRdr as_(Object obj) {return obj instanceof DataRdr ? (DataRdr)obj : null;} public static DataRdr cast(Object obj) {try {return (DataRdr)obj;} catch(Exception exc) {throw Err_.new_type_mismatch_w_exc(exc, DataRdr.class, obj);}} @@ -51,7 +51,7 @@ class DataRdr_null implements DataRdr { public byte ReadByte(String key) {return Byte_.Min_value;} public byte ReadByteOr(String key, byte or) {return or;} public Decimal_adp ReadDecimal(String key) {return Decimal_adp_.Zero;}public Decimal_adp ReadDecimalOr(String key, Decimal_adp or) {return or;} public DateAdp ReadDate(String key) {return DateAdp_.MinValue;} public DateAdp ReadDateOr(String key, DateAdp or) {return or;} - public gplx.core.ios.Io_stream_rdr ReadRdr(String key) {return gplx.core.ios.Io_stream_rdr_.Noop;} + public gplx.core.ios.streams.Io_stream_rdr ReadRdr(String key) {return gplx.core.ios.streams.Io_stream_rdr_.Noop;} public boolean MoveNextPeer() {return false;} public DataRdr Subs() {return this;} public DataRdr Subs_byName(String name) {return this;} diff --git a/100_core/src/gplx/core/stores/DataRdr_base.java b/100_core/src/gplx/core/stores/DataRdr_base.java index bf549eb67..8b6427cd1 100644 --- a/100_core/src/gplx/core/stores/DataRdr_base.java +++ b/100_core/src/gplx/core/stores/DataRdr_base.java @@ -17,12 +17,13 @@ along with this program. If not, see . */ package gplx.core.stores; import gplx.*; import gplx.core.*; import gplx.core.strings.*; import gplx.core.type_xtns.*; +import gplx.core.ios.streams.*; public abstract class DataRdr_base implements SrlMgr { public boolean Parse() {return parse;} public void Parse_set(boolean v) {parse = v;} private boolean parse; public Io_url Uri() {return uri;} public void Uri_set(Io_url s) {uri = s;} Io_url uri = Io_url_.Empty; public abstract String NameOfNode(); public boolean Type_rdr() {return true;} - public Hash_adp EnvVars() {return envVars;} Hash_adp envVars = Hash_adp_.new_(); + public Hash_adp EnvVars() {return envVars;} Hash_adp envVars = Hash_adp_.New(); public abstract Object Read(String key); public abstract int FieldCount(); public abstract String KeyAt(int i); @@ -179,7 +180,7 @@ public abstract class DataRdr_base implements SrlMgr { try {return (byte[])val;} catch (Exception exc) {Err_dataRdr_ReadFailed_useOr(exc, byte[].class, key, val, or); return or;} } - public gplx.core.ios.Io_stream_rdr ReadRdr(String key) {return gplx.core.ios.Io_stream_rdr_.Noop;} + public gplx.core.ios.streams.Io_stream_rdr ReadRdr(String key) {return gplx.core.ios.streams.Io_stream_rdr_.Noop;} public boolean SrlBoolOr(String key, boolean or) {return ReadBoolOr(key, or);} public byte SrlByteOr(String key, byte or) {return ReadByteOr(key, or);} public int SrlIntOr(String key, int or) {return ReadIntOr(key, or);} diff --git a/100_core/src/gplx/core/stores/DataRdr_mem.java b/100_core/src/gplx/core/stores/DataRdr_mem.java index 582f9b24e..7ce83ccc8 100644 --- a/100_core/src/gplx/core/stores/DataRdr_mem.java +++ b/100_core/src/gplx/core/stores/DataRdr_mem.java @@ -24,7 +24,7 @@ public class DataRdr_mem extends DataRdr_base implements GfoNdeRdr { @Override public String KeyAt(int i) {return flds.Get_at(i).Key();} @Override public Object ReadAt(int i) {return cur.ReadAt(i);} @Override public Object Read(String key) { - int i = flds.Idx_of(key); if (i == List_adp_.NotFound) return null; + int i = flds.Idx_of(key); if (i == List_adp_.Not_found) return null; return cur.ReadAt(i); } public boolean MoveNextPeer() { diff --git a/100_core/src/gplx/core/stores/DataWtr_.java b/100_core/src/gplx/core/stores/DataWtr_.java index fdb532401..69c1ef12d 100644 --- a/100_core/src/gplx/core/stores/DataWtr_.java +++ b/100_core/src/gplx/core/stores/DataWtr_.java @@ -18,11 +18,11 @@ along with this program. If not, see . package gplx.core.stores; import gplx.*; import gplx.core.*; import gplx.core.gfo_ndes.*; public class DataWtr_ { - public static final DataWtr Null = new DataWtr_null(); + public static final DataWtr Null = new DataWtr_null(); } class DataWtr_null implements DataWtr { public boolean Type_rdr() {return false;} - public Hash_adp EnvVars() {return envVars;} Hash_adp envVars = Hash_adp_.new_(); + public Hash_adp EnvVars() {return envVars;} Hash_adp envVars = Hash_adp_.New(); public void InitWtr(String key, Object val) {} public void WriteTableBgn(String name, GfoFldList fields) {} public void WriteNodeBgn(String nodeName) {} diff --git a/100_core/src/gplx/core/stores/DataWtr_base.java b/100_core/src/gplx/core/stores/DataWtr_base.java index 8bfd69a0b..395deae41 100644 --- a/100_core/src/gplx/core/stores/DataWtr_base.java +++ b/100_core/src/gplx/core/stores/DataWtr_base.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.core.stores; import gplx.*; import gplx.core.*; public abstract class DataWtr_base implements SrlMgr { - @gplx.Virtual public Hash_adp EnvVars() {return envVars;} Hash_adp envVars = Hash_adp_.new_(); + @gplx.Virtual public Hash_adp EnvVars() {return envVars;} Hash_adp envVars = Hash_adp_.New(); public boolean Type_rdr() {return false;} public abstract void WriteData(String key, Object o); public abstract void WriteNodeBgn(String nodeName); diff --git a/100_core/src/gplx/core/stores/xmls/XmlDataWtr_.java b/100_core/src/gplx/core/stores/xmls/XmlDataWtr_.java index 367c6b8d8..b3ec2e11c 100644 --- a/100_core/src/gplx/core/stores/xmls/XmlDataWtr_.java +++ b/100_core/src/gplx/core/stores/xmls/XmlDataWtr_.java @@ -105,9 +105,9 @@ class XmlDataWtr extends DataWtr_base implements DataWtr { @Override public SrlMgr SrlMgr_new(Object o) {return new XmlDataWtr();} boolean ndeOpened = false; // int atrCount = 0; -// int ndeState = -1; static final int NdeState0_Opened = 0, NdeState0_H = 1; +// int ndeState = -1; static final int NdeState0_Opened = 0, NdeState0_H = 1; // XmlDocument doc = new XmlDocument(); XmlNode nde; - List_adp names = List_adp_.new_(); + List_adp names = List_adp_.New(); String_bldr sb = String_bldr_.new_(); public static XmlDataWtr new_() {return new XmlDataWtr();} XmlDataWtr() {} } diff --git a/400_xowa/src/gplx/core/tests/Gftest.java b/100_core/src/gplx/core/tests/Gftest.java similarity index 62% rename from 400_xowa/src/gplx/core/tests/Gftest.java rename to 100_core/src/gplx/core/tests/Gftest.java index 08ca53c60..e463d7c45 100644 --- a/400_xowa/src/gplx/core/tests/Gftest.java +++ b/100_core/src/gplx/core/tests/Gftest.java @@ -18,17 +18,22 @@ along with this program. If not, see . package gplx.core.tests; import gplx.*; import gplx.core.*; import gplx.core.brys.*; public class Gftest { - private static final Bry_bfr bfr = Bry_bfr.new_(); - public static void Eq__ary(String[] expd, byte[][] actl, String msg_fmt, Object... msg_args) {Eq__ary(Bry_.Ary(expd), actl, msg_fmt, msg_args);} + private static final Bry_bfr bfr = Bry_bfr_.New(); + public static void Eq__ary(long[] expd, long[] actl, String msg_fmt, Object... msg_args) {Eq__array(Type_adp_.Tid__long, expd, actl, msg_fmt, msg_args);} + public static void Eq__ary__lines(String expd, String actl, String msg_fmt, Object... msg_args) {Eq__array(Type_adp_.Tid__bry, Bry_split_.Split_lines(Bry_.new_u8(expd)), Bry_split_.Split_lines(Bry_.new_u8(actl)), msg_fmt, msg_args);} + public static void Eq__ary(String[] expd, String[] actl) {Eq__array(Type_adp_.Tid__bry, Bry_.Ary(expd), Bry_.Ary(actl), "no_msg");} + public static void Eq__ary(String[] expd, String[] actl, String msg_fmt, Object... msg_args) {Eq__array(Type_adp_.Tid__bry, Bry_.Ary(expd), Bry_.Ary(actl), msg_fmt, msg_args);} + public static void Eq__ary(String[] expd, byte[][] actl, String msg_fmt, Object... msg_args) {Eq__array(Type_adp_.Tid__bry, Bry_.Ary(expd), actl, msg_fmt, msg_args);} + public static void Eq__ary(byte[][] expd, byte[][] actl, String msg_fmt, Object... msg_args) {Eq__array(Type_adp_.Tid__bry, expd, actl, msg_fmt, msg_args);} public static void Eq__ary(Bry_bfr_able[] expd_ary, Bry_bfr_able[] actl_ary) {Eq__ary(expd_ary, actl_ary, null);} public static void Eq__ary(Bry_bfr_able[] expd_ary, Bry_bfr_able[] actl_ary, String msg_fmt, Object... msg_args) { - Eq__ary(Bry_bfr_able_.To_bry_ary(bfr, expd_ary), Bry_bfr_able_.To_bry_ary(bfr, actl_ary), msg_fmt, msg_args); + Eq__array(Type_adp_.Tid__bry, Bry_bfr_able_.To_bry_ary(bfr, expd_ary), Bry_bfr_able_.To_bry_ary(bfr, actl_ary), msg_fmt, msg_args); } - public static void Eq__ary(byte[][] expd_bry_ary, byte[][] actl_bry_ary, String msg_fmt, Object... msg_args) { - boolean[] failures = Calc__failures(Type_adp_.Tid__bry, expd_bry_ary, actl_bry_ary); + private static void Eq__array(int type_tid, Object expd_ary, Object actl_ary, String msg_fmt, Object... msg_args) { + boolean[] failures = Calc__failures(type_tid, expd_ary, actl_ary); if (failures != null) { Write_fail_head(bfr, msg_fmt, msg_args); - Write_fail_ary(bfr, failures, Type_adp_.Tid__bry, expd_bry_ary, actl_bry_ary); + Write_fail_ary(bfr, failures, type_tid, expd_ary, actl_ary); throw Err_.new_wo_type(bfr.To_str_and_clear()); } } @@ -50,6 +55,24 @@ public class Gftest { bfr.Add(Bry__line_end); throw Err_.new_wo_type(bfr.To_str_and_clear()); } + public static void Eq__long(long expd, long actl) {Eq__long(expd, actl, null);} + public static void Eq__long(long expd, long actl, String msg_fmt, Object... msg_args) { + if (expd == actl) return; + Write_fail_head(bfr, msg_fmt, msg_args); + bfr.Add_str_a7("expd: ").Add_long_variable(expd).Add_byte_nl(); + bfr.Add_str_a7("actl: ").Add_long_variable(actl).Add_byte_nl(); + bfr.Add(Bry__line_end); + throw Err_.new_wo_type(bfr.To_str_and_clear()); + } + public static void Eq__double(double expd, double actl) {Eq__double(expd, actl, null);} + public static void Eq__double(double expd, double actl, String msg_fmt, Object... msg_args) { + if (expd == actl) return; + Write_fail_head(bfr, msg_fmt, msg_args); + bfr.Add_str_a7("expd: ").Add_double(expd).Add_byte_nl(); + bfr.Add_str_a7("actl: ").Add_double(actl).Add_byte_nl(); + bfr.Add(Bry__line_end); + throw Err_.new_wo_type(bfr.To_str_and_clear()); + } private static void Write_fail_head(Bry_bfr bfr, String msg_fmt, Object[] msg_args) { bfr.Add(Bry__line_bgn); if (msg_fmt != null) { @@ -77,6 +100,7 @@ public class Gftest { if (idx < len) { switch (type_id) { case Type_adp_.Tid__bry: bfr.Add((byte[])Array_.Get_at(ary, idx)); break; + case Type_adp_.Tid__long: bfr.Add_long_variable(Long_.cast(Array_.Get_at(ary, idx))); break; default: throw Err_.new_unhandled_default(type_id); } } @@ -93,8 +117,13 @@ public class Gftest { Object expd_obj = i < expd_len ? Array_.Get_at(expd_ary, i) : null; Object actl_obj = i < actl_len ? Array_.Get_at(actl_ary, i) : null; boolean eq = false; - switch (tid) { - case Type_adp_.Tid__bry: eq = Bry_.Eq((byte[])expd_obj, (byte[])actl_obj); break; + if (expd_obj == null && actl_obj == null) eq = true; + else if (expd_obj == null || actl_obj == null) eq = false; + else { + switch (tid) { + case Type_adp_.Tid__bry: eq = Bry_.Eq((byte[])expd_obj, (byte[])actl_obj); break; + case Type_adp_.Tid__long: eq = Long_.cast(expd_obj) == Long_.cast(actl_obj); break; + } } if (!eq) { if (rv == null) { diff --git a/100_core/src/gplx/core/tests/PerfLogMgr_fxt.java b/100_core/src/gplx/core/tests/PerfLogMgr_fxt.java index ee4d630a5..2c6d44cb0 100644 --- a/100_core/src/gplx/core/tests/PerfLogMgr_fxt.java +++ b/100_core/src/gplx/core/tests/PerfLogMgr_fxt.java @@ -44,7 +44,7 @@ public class PerfLogMgr_fxt { Io_mgr.Instance.AppendFilStr(url, sb.To_str()); entries.Clear(); } - List_adp entries = List_adp_.new_(); PerfLogTmr tmr = PerfLogTmr.new_(); Io_url url = Io_url_.Empty; + List_adp entries = List_adp_.New(); PerfLogTmr tmr = PerfLogTmr.new_(); Io_url url = Io_url_.Empty; public static final PerfLogMgr_fxt Instance = new PerfLogMgr_fxt(); PerfLogMgr_fxt() {} class PerfLogItm { public String To_str() { diff --git a/100_core/src/gplx/core/texts/StringTableBldr.java b/100_core/src/gplx/core/texts/StringTableBldr.java index ad5379350..81c4bba24 100644 --- a/100_core/src/gplx/core/texts/StringTableBldr.java +++ b/100_core/src/gplx/core/texts/StringTableBldr.java @@ -52,6 +52,6 @@ public class StringTableBldr { public static StringTableBldr new_() {return new StringTableBldr();} StringTableBldr() {} Ordered_hash cols = Ordered_hash_.New(); - List_adp rows = List_adp_.new_(); + List_adp rows = List_adp_.New(); String_bldr sb = String_bldr_.new_(); } diff --git a/100_core/src/gplx/core/threads/Thread_adp.java b/100_core/src/gplx/core/threads/Thread_adp.java index af2d3961e..4d218b1d8 100644 --- a/100_core/src/gplx/core/threads/Thread_adp.java +++ b/100_core/src/gplx/core/threads/Thread_adp.java @@ -18,28 +18,29 @@ along with this program. If not, see . package gplx.core.threads; import gplx.*; import gplx.core.*; import java.lang.*; public class Thread_adp implements Runnable { - private String name; private GfoInvkAble invk; private String cmd; private GfoMsg msg; - @gplx.Internal protected Thread_adp(String name, GfoInvkAble invk, String cmd, GfoMsg msg) { - this.name = name; this.invk = invk; this.cmd = cmd; this.msg = msg; - this.ctor_ThreadAdp(); + private final String thread_name; private final Cancelable cxl; private final boolean cxlable; + private final Gfo_invk invk_itm; private final String invk_cmd; private final GfoMsg invk_msg; + private Thread thread; + @gplx.Internal protected Thread_adp(String thread_name, Cancelable cxl, Gfo_invk invk_itm, String invk_cmd, GfoMsg invk_msg) { + this.thread_name = thread_name; this.cxl = cxl; this.cxlable = cxl != Cancelable_.Never; + this.invk_itm = invk_itm; this.invk_cmd = invk_cmd; this.invk_msg = invk_msg; } - void ctor_ThreadAdp() { - this.thread = name == null ? new Thread(this) : new Thread(this, name); + public String Thread__name() {return thread_name;} + public void Thread__cancel() {cxl.Cancel();} + public boolean Thread__cancelable() {return cxlable;} + public boolean Thread__is_alive() {return thread == null ? false : thread.isAlive();} + public void Thread__interrupt() {thread.interrupt();} + public void run() { + try { + Gfo_invk_.Invk_by_msg(invk_itm, invk_cmd, invk_msg); + } + catch (Exception e) { // catch exception + Gfo_log_.Instance.Warn("thread.failed", "thread_name", thread_name, "cmd", invk_cmd, "err", Err_.Message_gplx_log(e)); + } } - public Thread Under_thread() {return thread;} private Thread thread; - public Thread_adp Start() { + public void Thread__start() { + this.thread = (thread_name == null) ? new Thread(this) : new Thread(this, thread_name); thread.start(); - return this; - } - public void Interrupt() {thread.interrupt();} - public void Join() { - try {thread.join();} - catch (Exception e) {Err_.Noop(e);} - } -// public void Stop() {thread.stop();} - public boolean IsAlive() {return thread.isAlive();} - @Override public void run() { - invk.Invk(GfsCtx.Instance, 0, cmd, msg); - } - public static final Thread_adp Null = new Thread_adp(Thread_adp_.Name_null, GfoInvkAble_.Null, "", GfoMsg_.Null); + } + public static final Thread_adp Noop = new Thread_adp(Thread_adp_.Name_null, Cancelable_.Never, Gfo_invk_.Noop, "", GfoMsg_.Null); } diff --git a/100_core/src/gplx/core/threads/Thread_adp_.java b/100_core/src/gplx/core/threads/Thread_adp_.java index feed693c2..7a5ff1d60 100644 --- a/100_core/src/gplx/core/threads/Thread_adp_.java +++ b/100_core/src/gplx/core/threads/Thread_adp_.java @@ -20,24 +20,15 @@ public class Thread_adp_ { public static void Sleep(int milliseconds) { try {Thread.sleep(milliseconds);} catch (InterruptedException e) {throw Err_.new_exc(e, "core", "thread interrupted", "milliseconds", milliseconds);} } - public static void Notify_all(Object o) {o.notifyAll();} - public static void Wait(Object o) { - try {o.wait();} - catch (InterruptedException e) {throw Err_.new_exc(e, "core", "thread wait");} - } - public static Thread_adp invk_(GfoInvkAble invk, String cmd) {return invk_(Name_null, invk, cmd);} - public static Thread_adp invk_(String name, GfoInvkAble invk, String cmd) {return new Thread_adp(name, invk, cmd, GfoMsg_.Null);} - public static Thread_adp invk_msg_(GfoInvkAble invk, GfoMsg msg) {return invk_msg_(Name_null, invk, msg);} - public static Thread_adp invk_msg_(String name, GfoInvkAble invk, GfoMsg msg) {return new Thread_adp(name, invk, msg.Key(), msg);} - public static void Run_invk_msg(String name, GfoInvkAble invk, GfoMsg m) { - Thread_adp_.invk_msg_(name, invk, m).Start(); - } - public static void Run_cmd(boolean async, String thread_name, GfoInvkAble invk, String cmd) { - GfoMsg msg = GfoMsg_.new_cast_(cmd); - if (async) - Thread_adp_.invk_msg_(thread_name, invk, msg).Start(); - else - GfoInvkAble_.InvkCmd_msg(invk, cmd, msg); + public static Thread_adp Start_by_key(String thread_name, Gfo_invk invk_itm, String invk_cmd) {return Start(thread_name, Cancelable_.Never, invk_itm, invk_cmd , GfoMsg_.new_cast_(invk_cmd));} + public static Thread_adp Start_by_val(String thread_name, Gfo_invk invk_itm, String invk_cmd, Object val) {return Start(thread_name, Cancelable_.Never, invk_itm, invk_cmd , GfoMsg_.new_cast_(invk_cmd).Add("v", val));} + public static Thread_adp Start_by_msg(String thread_name, Gfo_invk invk_itm, GfoMsg invk_msg) {return Start(thread_name, Cancelable_.Never, invk_itm, invk_msg.Key() , invk_msg);} + public static Thread_adp Start_by_key(String thread_name, Cancelable cxl, Gfo_invk invk_itm, String invk_cmd) {return Start(thread_name, cxl, invk_itm, invk_cmd , GfoMsg_.new_cast_(invk_cmd));} + public static Thread_adp Start_by_val(String thread_name, Cancelable cxl, Gfo_invk invk_itm, String invk_cmd, Object val) {return Start(thread_name, cxl, invk_itm, invk_cmd , GfoMsg_.new_cast_(invk_cmd).Add("v", val));} + private static Thread_adp Start(String thread_name, Cancelable cxl, Gfo_invk invk_itm, String invk_key, GfoMsg invk_msg) { + Thread_adp rv = new Thread_adp(thread_name, cxl, invk_itm, invk_key, invk_msg); + rv.Thread__start(); + return rv; } public static final String Name_null = null; } diff --git a/100_core/src/gplx/core/threads/Thread_adp_mgr.java b/100_core/src/gplx/core/threads/Thread_adp_mgr.java new file mode 100644 index 000000000..99e8c23cf --- /dev/null +++ b/100_core/src/gplx/core/threads/Thread_adp_mgr.java @@ -0,0 +1,61 @@ +/* +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.core.threads; import gplx.*; import gplx.core.*; +public class Thread_adp_mgr { + private final Ordered_hash hash = Ordered_hash_.New(); + private final int sleep_time, quit_time; + public Thread_adp_mgr(int sleep_time, int quit_time) {this.sleep_time = sleep_time; this.quit_time = quit_time;} + public void Add(String key, Thread_adp thread) { + Thread_halt_itm itm = null; + synchronized (hash) { + itm = (Thread_halt_itm)hash.Get_by(key); + if (itm != null && !itm.Thread.Thread__is_alive()) + hash.Del(key); + } + itm = new Thread_halt_itm(key, thread); + hash.Add(key, itm); + } + public void Halt(String uid, Thread_halt_cbk cbk) { + Thread_halt_itm itm = (Thread_halt_itm)hash.Get_by(uid); + Halt_by_wkr(itm, cbk); + } + public void Halt_all(Thread_halt_cbk cbk) { + int len = hash.Len(); + for (int i = 0; i < len; ++i) { + Thread_halt_itm itm = (Thread_halt_itm)hash.Get_at(i); + Halt_by_wkr(itm, cbk); + } + } + private void Halt_by_wkr(Thread_halt_itm itm, Thread_halt_cbk cbk) { + Thread_halt_wkr halt_wkr = new Thread_halt_wkr(this, itm, cbk, sleep_time, quit_time); + Thread_adp_.Start_by_key("thread_mgr.halt", halt_wkr, Thread_halt_wkr.Invk__halt); + synchronized (hash) { + hash.Del(itm.Key); + } + } + public void Del(String key) { + synchronized (hash) { + hash.Del(key); + } + } +} +class Thread_halt_itm { + public Thread_halt_itm(String key, Thread_adp thread) {this.Key = key; this.Thread = thread;} + public final String Key; + public final Thread_adp Thread; +} diff --git a/100_core/src/gplx/core/threads/Thread_halt_cbk.java b/100_core/src/gplx/core/threads/Thread_halt_cbk.java new file mode 100644 index 000000000..5c54cb500 --- /dev/null +++ b/100_core/src/gplx/core/threads/Thread_halt_cbk.java @@ -0,0 +1,21 @@ +/* +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.core.threads; import gplx.*; import gplx.core.*; +public interface Thread_halt_cbk { + void Thread__on_halt(boolean interrupted); +} diff --git a/100_core/src/gplx/core/threads/Thread_halt_cbk_.java b/100_core/src/gplx/core/threads/Thread_halt_cbk_.java new file mode 100644 index 000000000..9839eb5b2 --- /dev/null +++ b/100_core/src/gplx/core/threads/Thread_halt_cbk_.java @@ -0,0 +1,24 @@ +/* +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.core.threads; import gplx.*; import gplx.core.*; +public class Thread_halt_cbk_ { + public static final Thread_halt_cbk Noop = new Thread_halt_cbk_noop(); +} +class Thread_halt_cbk_noop implements Thread_halt_cbk { + public void Thread__on_halt(boolean interrupted) {} +} diff --git a/100_core/src/gplx/core/threads/Thread_halt_wkr.java b/100_core/src/gplx/core/threads/Thread_halt_wkr.java new file mode 100644 index 000000000..895ec7e0f --- /dev/null +++ b/100_core/src/gplx/core/threads/Thread_halt_wkr.java @@ -0,0 +1,63 @@ +/* +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.core.threads; import gplx.*; import gplx.core.*; +class Thread_halt_wkr implements Gfo_invk { + private final Thread_adp_mgr mgr; + private final Thread_adp thread; private final String thread_key; private final Thread_halt_cbk cbk; + private final long bgn_time; + private final int sleep_time, quit_time; + public Thread_halt_wkr(Thread_adp_mgr mgr, Thread_halt_itm itm, Thread_halt_cbk cbk, int sleep_time, int quit_time) { + this.mgr = mgr; this.thread = itm.Thread; this.thread_key = itm.Key; this.cbk = cbk; + this.sleep_time = sleep_time; this.quit_time = quit_time; + this.bgn_time = gplx.core.envs.Env_.TickCount(); + } + private void Halt() { + // first, cancel the thread + thread.Thread__cancel(); + + // now check if canceled; interrupt if not; + while (true) { + long time_now = gplx.core.envs.Env_.TickCount(); + boolean halted = false, interrupted = false; + if (thread.Thread__is_alive()) { // thread is still alive + if ( !thread.Thread__cancelable() // itm is not cancelable + || time_now > bgn_time + quit_time // itm is cancelable, but too much time passed + ) { + thread.Thread__interrupt(); // interrupt it + halted = interrupted = true; + } + } + else + halted = true; + + if (halted) { // thread halted; call cbk; + cbk.Thread__on_halt(interrupted); + mgr.Del(thread_key); + break; + } + else // else sleep and try again + Thread_adp_.Sleep(sleep_time); + } + } + public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { + if (ctx.Match(k, Invk__halt)) Halt(); + else return Gfo_invk_.Rv_unhandled; + return this; + } + public static final String Invk__halt = "halt"; +} diff --git a/100_core/src/gplx/langs/dsvs/DsvDataRdr_.java b/100_core/src/gplx/langs/dsvs/DsvDataRdr_.java index 7fdfd2e3d..080de4b6e 100644 --- a/100_core/src/gplx/langs/dsvs/DsvDataRdr_.java +++ b/100_core/src/gplx/langs/dsvs/DsvDataRdr_.java @@ -130,7 +130,7 @@ class DsvParser { nextValType = ValType_Data; lineMode = LineType_Data; } - String_bldr sb = String_bldr_.new_(); List_adp tkns = List_adp_.new_(); DsvTblBldr bldr = DsvTblBldr.new_(); + String_bldr sb = String_bldr_.new_(); List_adp tkns = List_adp_.New(); DsvTblBldr bldr = DsvTblBldr.new_(); boolean cmdSeqOn = false, qteOn = false, csvOn = false; int nextValType = ValType_Data, lineMode = LineType_Data; @gplx.Internal protected static DsvParser dsv_() {return new DsvParser();} @@ -138,7 +138,7 @@ class DsvParser { DsvParser rv = new DsvParser(); rv.csvOn = true; rv.lineMode = hasHdr ? LineType_FldNames : LineType_Data; - List_adp names = List_adp_.new_(), types = List_adp_.new_(); + List_adp names = List_adp_.New(), types = List_adp_.New(); for (int i = 0; i < flds.Count(); i++) { GfoFld fld = flds.Get_at(i); names.Add(fld.Key()); types.Add(fld.Type().Key()); @@ -146,8 +146,8 @@ class DsvParser { rv.bldr.MakeFldNames(names); rv.bldr.MakeFldTypes(types); return rv; } - static final int ValType_Data = 0, ValType_CmdName = 1; - static final int LineType_Data = 0, LineType_Comment = 1, LineType_TblBgn = 2, LineType_FldNames = 3, LineType_FldTypes = 4, LineType_BlankLine = 5; + static final int ValType_Data = 0, ValType_CmdName = 1; + static final int LineType_Data = 0, LineType_Comment = 1, LineType_TblBgn = 2, LineType_FldNames = 3, LineType_FldTypes = 4, LineType_BlankLine = 5; } class DsvTblBldr { public void Init() { @@ -240,9 +240,9 @@ class DsvTblBldr { } } GfoNde root; GfoNde tbl; DsvStoreLayout layout = DsvStoreLayout.dsv_brief_(); - List_adp fldNames = List_adp_.new_(); List_adp fldTypes = List_adp_.new_(); + List_adp fldNames = List_adp_.New(); List_adp fldTypes = List_adp_.New(); int stage = Stage_Init; public static DsvTblBldr new_() {return new DsvTblBldr();} DsvTblBldr() {this.Init();} - @gplx.Internal protected static final String NullTblName = ""; - static final int Stage_Init = 0, Stage_Hdr = 1, Stage_Row = 2; + @gplx.Internal protected static final String NullTblName = ""; + static final int Stage_Init = 0, Stage_Hdr = 1, Stage_Row = 2; } diff --git a/100_core/src/gplx/langs/dsvs/DsvDataRdr_csv_dat_tst.java b/100_core/src/gplx/langs/dsvs/DsvDataRdr_csv_dat_tst.java index 30fc7bc65..51b2bfc8b 100644 --- a/100_core/src/gplx/langs/dsvs/DsvDataRdr_csv_dat_tst.java +++ b/100_core/src/gplx/langs/dsvs/DsvDataRdr_csv_dat_tst.java @@ -153,7 +153,7 @@ class DsvDataRdr_fxt { public DsvDataRdr_fxt tst_FldListCsv(String... names) {return tst_Flds(TblIdx0, GfoFldList_.str_(names));} public DsvDataRdr_fxt tst_Flds(int tblIdx, GfoFldList expdFlds) { GfoNde tbl = root.Subs().FetchAt_asGfoNde(tblIdx); - List_adp expdList = List_adp_.new_(), actlList = List_adp_.new_(); + List_adp expdList = List_adp_.New(), actlList = List_adp_.New(); String_bldr sb = String_bldr_.new_(); GfoFldList_BldDbgList(expdFlds, expdList, sb); GfoFldList_BldDbgList(tbl.SubFlds(), actlList, sb); @@ -168,7 +168,7 @@ class DsvDataRdr_fxt { } } public DsvDataRdr_fxt tst_Tbls(String... expdNames) { - List_adp actlList = List_adp_.new_(); + List_adp actlList = List_adp_.New(); for (int i = 0; i < root.Subs().Count(); i++) { GfoNde tbl = root.Subs().FetchAt_asGfoNde(i); actlList.Add(tbl.Name()); @@ -187,7 +187,7 @@ class DsvDataRdr_fxt { Tfds.Eq(0, tbl.Subs().Count()); return this; } - List_adp expdList = List_adp_.new_(), actlList = List_adp_.new_(); + List_adp expdList = List_adp_.New(), actlList = List_adp_.New(); String_bldr sb = String_bldr_.new_(); for (int i = 0; i < tbl.Subs().Count(); i++) { GfoNde row = tbl.Subs().FetchAt_asGfoNde(i); @@ -212,5 +212,5 @@ class DsvDataRdr_fxt { return this; } public static DsvDataRdr_fxt new_() {return new DsvDataRdr_fxt();} - static final int TblIdx0 = 0; + static final int TblIdx0 = 0; } diff --git a/100_core/src/gplx/langs/dsvs/DsvHeaderList.java b/100_core/src/gplx/langs/dsvs/DsvHeaderList.java index 65a5d0041..5f2d01778 100644 --- a/100_core/src/gplx/langs/dsvs/DsvHeaderList.java +++ b/100_core/src/gplx/langs/dsvs/DsvHeaderList.java @@ -26,7 +26,7 @@ public class DsvHeaderList { public DsvHeaderList Add_Comment(String comment) {this.Add(new DsvHeaderItm(DsvHeaderItm.Id_Comment, comment)); return this;} void Add(DsvHeaderItm data) {list.Add(data);} - List_adp list = List_adp_.new_(); + List_adp list = List_adp_.New(); public static DsvHeaderList new_() {return new DsvHeaderList();} DsvHeaderList() {} } class DsvHeaderItm { @@ -34,7 +34,7 @@ class DsvHeaderItm { public Object Val() {return val;} Object val; @gplx.Internal protected DsvHeaderItm(int id, Object val) {this.id = id; this.val = val;} - public static final int + public static final int Id_Comment = 1 , Id_TableName = 2 , Id_BlankLine = 3 diff --git a/100_core/src/gplx/langs/gfs/GfsCore.java b/100_core/src/gplx/langs/gfs/GfsCore.java index 88cfbe461..92e41b423 100644 --- a/100_core/src/gplx/langs/gfs/GfsCore.java +++ b/100_core/src/gplx/langs/gfs/GfsCore.java @@ -17,24 +17,24 @@ along with this program. If not, see . */ package gplx.langs.gfs; import gplx.*; import gplx.langs.*; import gplx.core.gfo_regys.*; -public class GfsCore implements GfoInvkAble { - public GfoInvkAble Root() {return root;} +public class GfsCore implements Gfo_invk { + public Gfo_invk Root() {return root;} @gplx.Internal protected GfsRegy Root_as_regy() {return root;} GfsRegy root = GfsRegy.new_(); public void Clear() {root.Clear();} public GfoMsgParser MsgParser() {return msgParser;} public GfsCore MsgParser_(GfoMsgParser v) {msgParser = v; return this;} GfoMsgParser msgParser; public void Del(String key) {root.Del(key);} public void AddLib(GfsLibIni... ary) {for (GfsLibIni itm : ary) itm.Ini(this);} - public void AddCmd(GfoInvkAble invk, String key) {root.AddCmd(invk, key);} - public void AddObj(GfoInvkAble invk, String key) {root.AddObj(invk, key);} - public void AddDeep(GfoInvkAble invk, String... ary) { - GfoInvkCmdMgrOwner cur = (GfoInvkCmdMgrOwner)((GfsRegyItm)root.Get_by(ary[0])).InvkAble(); + public void AddCmd(Gfo_invk invk, String key) {root.AddCmd(invk, key);} + public void AddObj(Gfo_invk invk, String key) {root.AddObj(invk, key);} + public void AddDeep(Gfo_invk invk, String... ary) { + Gfo_invk_cmd_mgr_owner cur = (Gfo_invk_cmd_mgr_owner)((GfsRegyItm)root.Get_by(ary[0])).InvkAble(); for (int i = 1; i < ary.length - 1; i++) - cur = (GfoInvkCmdMgrOwner)cur.InvkMgr().Invk(GfsCtx.Instance, 0, ary[i], GfoMsg_.Null, cur); + cur = (Gfo_invk_cmd_mgr_owner)cur.InvkMgr().Invk(GfsCtx.Instance, 0, ary[i], GfoMsg_.Null, cur); cur.InvkMgr().Add_cmd(ary[ary.length - 1], invk); } - public String FetchKey(GfoInvkAble invk) {return root.FetchByType(invk).Key();} + public String FetchKey(Gfo_invk invk) {return root.FetchByType(invk).Key();} public Object ExecOne(GfsCtx ctx, GfoMsg msg) {return GfsCore_.Exec(ctx, root, msg, null, 0);} - public Object ExecOne_to(GfsCtx ctx, GfoInvkAble invk, GfoMsg msg) {return GfsCore_.Exec(ctx, invk, msg, null, 0);} + public Object ExecOne_to(GfsCtx ctx, Gfo_invk invk, GfoMsg msg) {return GfsCore_.Exec(ctx, invk, msg, null, 0);} public Object ExecMany(GfsCtx ctx, GfoMsg rootMsg) { Object rv = null; for (int i = 0; i < rootMsg.Subs_count(); i++) { @@ -55,13 +55,13 @@ public class GfsCore implements GfoInvkAble { } public Object ExecFile_ignoreMissing(Io_url url) {if (!Io_mgr.Instance.ExistsFil(url)) return null; return ExecText(Io_mgr.Instance.LoadFilStr(url));} public Object ExecFile(Io_url url) {return ExecText(Io_mgr.Instance.LoadFilStr(url));} - public Object ExecFile_ignoreMissing(GfoInvkAble root, Io_url url) { + public Object ExecFile_ignoreMissing(Gfo_invk root, Io_url url) { if (!Io_mgr.Instance.ExistsFil(url)) return null; if (msgParser == null) throw Err_.new_wo_type("msgParser is null"); return Exec_bry(Io_mgr.Instance.LoadFilBry(url), root); } public Object Exec_bry(byte[] bry) {return Exec_bry(bry, root);} - public Object Exec_bry(byte[] bry, GfoInvkAble root) { + public Object Exec_bry(byte[] bry, Gfo_invk root) { GfoMsg rootMsg = msgParser.ParseToMsg(String_.new_u8(bry)); Object rv = null; GfsCtx ctx = GfsCtx.new_(); @@ -82,9 +82,9 @@ public class GfsCore implements GfoInvkAble { if (ctx.Deny()) return this; return ExecFile(url); } - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; // return this; - } public static final String Invk_ExecFil = "ExecFil"; - public static final GfsCore Instance = new GfsCore(); + } public static final String Invk_ExecFil = "ExecFil"; + public static final GfsCore Instance = new GfsCore(); @gplx.Internal protected static GfsCore new_() {return new GfsCore();} } diff --git a/100_core/src/gplx/langs/gfs/GfsCoreHelp.java b/100_core/src/gplx/langs/gfs/GfsCoreHelp.java index b75a63d8e..f85f81e3f 100644 --- a/100_core/src/gplx/langs/gfs/GfsCoreHelp.java +++ b/100_core/src/gplx/langs/gfs/GfsCoreHelp.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.langs.gfs; import gplx.*; import gplx.langs.*; import gplx.core.strings.*; -class GfsCoreHelp implements GfoInvkAble { +class GfsCoreHelp implements Gfo_invk { public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { String path = m.ReadStrOr("path", ""); if (String_.Eq(path, "")) { @@ -37,16 +37,16 @@ class GfsCoreHelp implements GfoInvkAble { sb.Add_spr_unless_first(itmAry[j], ".", j); return Err_Unhandled(sb.To_str(), itmAry[i]); } - static Object Exec(GfsCtx rootCtx, GfoInvkAble rootInvk, String path) { + static Object Exec(GfsCtx rootCtx, Gfo_invk rootInvk, String path) { String[] itmAry = String_.Split(path, "."); - GfoInvkAble invk = rootInvk; + Gfo_invk invk = rootInvk; GfsCtx ctx = GfsCtx.new_(); Object curRv = null; for (int i = 0; i < itmAry.length; i++) { String itm = itmAry[i]; curRv = invk.Invk(ctx, 0, itm, GfoMsg_.Null); - if (curRv == GfoInvkAble_.Rv_unhandled) throw Err_Unhandled(itmAry, i); - invk = GfoInvkAble_.as_(curRv); + if (curRv == Gfo_invk_.Rv_unhandled) throw Err_Unhandled(itmAry, i); + invk = (Gfo_invk)curRv; } GfsCoreHelp helpData = GfsCoreHelp.as_(curRv); if (helpData != null) { // last itm is actually Method diff --git a/100_core/src/gplx/langs/gfs/GfsCore_.java b/100_core/src/gplx/langs/gfs/GfsCore_.java index f90ba1e9b..d761fefe7 100644 --- a/100_core/src/gplx/langs/gfs/GfsCore_.java +++ b/100_core/src/gplx/langs/gfs/GfsCore_.java @@ -17,19 +17,19 @@ along with this program. If not, see . */ package gplx.langs.gfs; import gplx.*; import gplx.langs.*; public class GfsCore_ { - public static final String Arg_primitive = "v"; - public static Object Exec(GfsCtx ctx, GfoInvkAble owner_invk, GfoMsg owner_msg, Object owner_primitive, int depth) { - if (owner_msg.Args_count() == 0 && owner_msg.Subs_count() == 0 && String_.Eq(owner_msg.Key(), "")) {UsrDlg_.Instance.Warn("empty msg"); return GfoInvkAble_.Rv_unhandled;} + public static final String Arg_primitive = "v"; + public static Object Exec(GfsCtx ctx, Gfo_invk owner_invk, GfoMsg owner_msg, Object owner_primitive, int depth) { + if (owner_msg.Args_count() == 0 && owner_msg.Subs_count() == 0 && String_.Eq(owner_msg.Key(), "")) {UsrDlg_.Instance.Warn("empty msg"); return Gfo_invk_.Rv_unhandled;} if (owner_primitive != null) owner_msg.Parse_(false).Add(GfsCore_.Arg_primitive, owner_primitive); Object rv = owner_invk.Invk(ctx, 0, owner_msg.Key(), owner_msg); - if (rv == GfoInvkAble_.Rv_cancel) return rv; - else if (rv == GfoInvkAble_.Rv_unhandled) { + if (rv == Gfo_invk_.Rv_cancel) return rv; + else if (rv == Gfo_invk_.Rv_unhandled) { if (ctx.Fail_if_unhandled()) throw Err_.new_wo_type("Object does not support key", "key", owner_msg.Key(), "ownerType", Type_adp_.FullNameOf_obj(owner_invk)); else { Gfo_usr_dlg usr_dlg = ctx.Usr_dlg(); if (usr_dlg != null) usr_dlg.Warn_many(GRP_KEY, "unhandled_key", "Object does not support key: key=~{0} ownerType=~{1}", owner_msg.Key(), Type_adp_.FullNameOf_obj(owner_invk)); - return GfoInvkAble_.Null; + return Gfo_invk_.Noop; } } if (owner_msg.Subs_count() == 0) { // msg is leaf @@ -41,7 +41,7 @@ public class GfsCore_ { return regyItm.InvkAble(); } else { // intermediate; cast to invk and call Exec - GfoInvkAble invk = GfoInvkAble_.as_(rv); + Gfo_invk invk = Gfo_invk_.as_(rv); Object primitive = null; if (invk == null) { // rv is primitive; find appropriate mgr Class type = rv.getClass(); @@ -60,7 +60,7 @@ public class GfsCore_ { } static final String GRP_KEY = "gplx.gfs_core"; } -// class GfsRegyMgr : GfoInvkAble { +// class GfsRegyMgr : Gfo_invk { // public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { // if (ctx.Match(k, Invk_Add)) { // String libKey = m.ReadStr("libKey"), regKey = m.ReadStr("regKey"); @@ -84,9 +84,9 @@ public class GfsCore_ { // GfoMsg loadMsg = core.MsgParser().ParseToMsg(loadText); // return core.Exec(ctx, loadMsg); // } -// else return GfoInvkAble_.Rv_unhandled; +// else return Gfo_invk_.Rv_unhandled; // return this; -// } public static final String Invk_Add = "Add", Invk_Del = "Del", Invk_Load = "Load"; +// } public static final String Invk_Add = "Add", Invk_Del = "Del", Invk_Load = "Load"; // GfsCore core; GfsRegy regy; // public static GfsRegyMgr new_(GfsCore core, GfsRegy regy) { // GfsRegyMgr rv = new GfsRegyMgr(); diff --git a/100_core/src/gplx/langs/gfs/GfsCore_tst.java b/100_core/src/gplx/langs/gfs/GfsCore_tst.java index f8a9ef8f2..b45c009f3 100644 --- a/100_core/src/gplx/langs/gfs/GfsCore_tst.java +++ b/100_core/src/gplx/langs/gfs/GfsCore_tst.java @@ -51,7 +51,7 @@ public class GfsCore_tst { @Test public void EmptyMsg() { tst_Msg ( msg_("") - , GfoInvkAble_.Rv_unhandled); + , Gfo_invk_.Rv_unhandled); } // @Test public void Fail_argMissing() { // String_.Len() // tst_String__Len_Err(msg_("Len"), GfsCtx.Err_KeyNotFound("v", "<>")); @@ -93,14 +93,14 @@ public class GfsCore_tst { Tfds.Eq(expd, actl); } } -class GfsCore_tst_nest implements GfoInvkAble, GfoInvkCmdMgrOwner { - public GfoInvkCmdMgr InvkMgr() {return invkMgr;} GfoInvkCmdMgr invkMgr = GfoInvkCmdMgr.new_(); +class GfsCore_tst_nest implements Gfo_invk, Gfo_invk_cmd_mgr_owner { + public Gfo_invk_cmd_mgr InvkMgr() {return invkMgr;} Gfo_invk_cmd_mgr invkMgr = Gfo_invk_cmd_mgr.new_(); public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Prop1)) {return prop1;} else if (ctx.Match(k, Prop2)) {return prop2;} else if (ctx.Match(k, prop1)) {return this;} else return invkMgr.Invk(ctx, ikey, k, m, this); - } public static final String Prop1 = "Prop1", Prop2 = "Prop2"; + } public static final String Prop1 = "Prop1", Prop2 = "Prop2"; String prop1, prop2; public static GfsCore_tst_nest new_(String prop1, String prop2) { GfsCore_tst_nest rv = new GfsCore_tst_nest(); @@ -108,6 +108,6 @@ class GfsCore_tst_nest implements GfoInvkAble, GfoInvkCmdMgrOwner { return rv; } GfsCore_tst_nest() {} } -class GfsTest_cmd implements GfoInvkAble { +class GfsTest_cmd implements Gfo_invk { public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {return m.ReadStr("s");} } diff --git a/100_core/src/gplx/langs/gfs/GfsRegy.java b/100_core/src/gplx/langs/gfs/GfsRegy.java index ea016e4bf..2bb823ff8 100644 --- a/100_core/src/gplx/langs/gfs/GfsRegy.java +++ b/100_core/src/gplx/langs/gfs/GfsRegy.java @@ -16,20 +16,20 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.langs.gfs; import gplx.*; import gplx.langs.*; -class GfsRegy implements GfoInvkAble { +class GfsRegy implements Gfo_invk { public int Count() {return hash.Count();} public void Clear() {hash.Clear(); typeHash.Clear();} public boolean Has(String k) {return hash.Has(k);} public GfsRegyItm Get_at(int i) {return (GfsRegyItm)hash.Get_at(i);} public GfsRegyItm Get_by(String key) {return (GfsRegyItm)hash.Get_by(key);} - public GfsRegyItm FetchByType(GfoInvkAble invk) {return (GfsRegyItm)typeHash.Get_by(Type_adp_.FullNameOf_obj(invk));} + public GfsRegyItm FetchByType(Gfo_invk invk) {return (GfsRegyItm)typeHash.Get_by(Type_adp_.FullNameOf_obj(invk));} public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { Object rv = (GfsRegyItm)hash.Get_by(k); if (rv == null) throw Err_.new_missing_key(k); return rv; } - public void AddObj(GfoInvkAble invk, String key) {Add(key, invk, false);} - public void AddCmd(GfoInvkAble invk, String key) {Add(key, invk, true);} - public void Add(String key, GfoInvkAble invk, boolean typeCmd) { + public void AddObj(Gfo_invk invk, String key) {Add(key, invk, false);} + public void AddCmd(Gfo_invk invk, String key) {Add(key, invk, true);} + public void Add(String key, Gfo_invk invk, boolean typeCmd) { if (hash.Has(key)) return; GfsRegyItm regyItm = new GfsRegyItm().Key_(key).InvkAble_(invk).IsCmd_(typeCmd).TypeKey_(Type_adp_.FullNameOf_obj(invk)); hash.Add(key, regyItm); @@ -40,15 +40,15 @@ class GfsRegy implements GfoInvkAble { if (itm != null) typeHash.Del(itm.TypeKey()); hash.Del(k); } - Hash_adp typeHash = Hash_adp_.new_(); + Hash_adp typeHash = Hash_adp_.New(); Ordered_hash hash = Ordered_hash_.New(); public static GfsRegy new_() {return new GfsRegy();} GfsRegy() {} } -class GfsRegyItm implements GfoInvkAble { +class GfsRegyItm implements Gfo_invk { public String Key() {return key;} public GfsRegyItm Key_(String v) {key = v; return this;} private String key; public String TypeKey() {return typeKey;} public GfsRegyItm TypeKey_(String v) {typeKey = v; return this;} private String typeKey; public boolean IsCmd() {return isCmd;} public GfsRegyItm IsCmd_(boolean v) {isCmd = v; return this;} private boolean isCmd; - public GfoInvkAble InvkAble() {return invkAble;} public GfsRegyItm InvkAble_(GfoInvkAble v) {invkAble = v; return this;} GfoInvkAble invkAble; + public Gfo_invk InvkAble() {return invkAble;} public GfsRegyItm InvkAble_(Gfo_invk v) {invkAble = v; return this;} Gfo_invk invkAble; public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {return invkAble.Invk(ctx, ikey, k, m);} public static GfsRegyItm as_(Object obj) {return obj instanceof GfsRegyItm ? (GfsRegyItm)obj : null;} } diff --git a/100_core/src/gplx/langs/gfs/Gfs_Date_tst.java b/100_core/src/gplx/langs/gfs/Gfs_Date_tst.java index f19c8b737..314480d7c 100644 --- a/100_core/src/gplx/langs/gfs/Gfs_Date_tst.java +++ b/100_core/src/gplx/langs/gfs/Gfs_Date_tst.java @@ -33,7 +33,7 @@ public class Gfs_Date_tst { class GfsCoreFxt { public GfsCore Core() {return core;} GfsCore core = GfsCore.new_(); public GfoMsg msg_(String[] ary, Keyval... kvAry) {return GfoMsg_.root_leafArgs_(ary, kvAry);} - public void AddObj(GfoInvkAble invk, String s) {core.AddObj(invk, s);} + public void AddObj(Gfo_invk invk, String s) {core.AddObj(invk, s);} public void tst_MsgStr(GfoMsg msg, Object expd) { GfsCtx ctx = GfsCtx.new_(); Object actl = core.ExecOne(ctx, msg); diff --git a/100_core/src/gplx/langs/regxs/Regx_adp.java b/100_core/src/gplx/langs/regxs/Regx_adp.java index 6636cdaac..5d8bfd335 100644 --- a/100_core/src/gplx/langs/regxs/Regx_adp.java +++ b/100_core/src/gplx/langs/regxs/Regx_adp.java @@ -24,7 +24,7 @@ public class Regx_adp { public boolean Pattern_is_invalid() {return pattern_is_invalid;} private boolean pattern_is_invalid = false; public Regx_match[] Match_all(String text, int bgn) { int idx = bgn; - List_adp rv = List_adp_.new_(); + List_adp rv = List_adp_.New(); int len = String_.Len(text); while (idx <= len) { // NOTE: must be <= not < else "a?" will return null instead of ""; PAGE:en.d:民; DATE:2015-01-30 Regx_match match = this.Match(text, idx); diff --git a/100_core/src/gplx/langs/regxs/Regx_adp_.java b/100_core/src/gplx/langs/regxs/Regx_adp_.java index 8a58d0bd8..9890621e9 100644 --- a/100_core/src/gplx/langs/regxs/Regx_adp_.java +++ b/100_core/src/gplx/langs/regxs/Regx_adp_.java @@ -21,7 +21,7 @@ public class Regx_adp_ { public static List_adp Find_all(String input, String find) { Regx_adp regx = Regx_adp_.new_(find); int idx = 0; - List_adp rv = List_adp_.new_(); + List_adp rv = List_adp_.New(); while (true) { Regx_match match = regx.Match(input, idx); if (match.Rslt_none()) break; diff --git a/100_core/src/gplx/langs/regxs/Regx_adp__tst.java b/100_core/src/gplx/langs/regxs/Regx_adp__tst.java index 7945e9419..431565b4e 100644 --- a/100_core/src/gplx/langs/regxs/Regx_adp__tst.java +++ b/100_core/src/gplx/langs/regxs/Regx_adp__tst.java @@ -73,7 +73,7 @@ public class Regx_adp__tst implements TfdsEqListItmStr { Tfds.Eq_ary_str(expd, To_ary(rslts)); } String[] To_ary(Regx_match[] ary) { - List_adp rv = List_adp_.new_(); + List_adp rv = List_adp_.New(); int len = ary.length; for (int i = 0; i < len; i++) { Regx_match itm = ary[i]; diff --git a/100_core/src/gplx/langs/xmls/XmlNdeList.java b/100_core/src/gplx/langs/xmls/XmlNdeList.java index e8a148574..ec141de1b 100644 --- a/100_core/src/gplx/langs/xmls/XmlNdeList.java +++ b/100_core/src/gplx/langs/xmls/XmlNdeList.java @@ -30,6 +30,6 @@ class XmlNdeList_cls_list implements XmlNdeList { public int Count() {return list.Count();} public XmlNde Get_at(int i) {return (XmlNde)list.Get_at(i);} public void Add(XmlNde xnde) {list.Add(xnde);} - @gplx.Internal protected XmlNdeList_cls_list(int count) {list = List_adp_.new_(); list.Resize_bounds(count);} List_adp list; + @gplx.Internal protected XmlNdeList_cls_list(int count) {list = List_adp_.New(); list.Resize_bounds(count);} List_adp list; } //#} \ No newline at end of file diff --git a/100_core/src/gplx/langs/xmls/XmlSplitRdr.java b/100_core/src/gplx/langs/xmls/XmlSplitRdr.java index 26da27779..4dbdd757e 100644 --- a/100_core/src/gplx/langs/xmls/XmlSplitRdr.java +++ b/100_core/src/gplx/langs/xmls/XmlSplitRdr.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.langs.xmls; import gplx.*; import gplx.langs.*; -import gplx.core.ios.*; +import gplx.core.ios.streams.*; public class XmlSplitRdr { public byte[] CurAry() {return curAry;} private byte[] curAry; public long CurSum() {return curSum;} long curSum; diff --git a/100_core/src/gplx/langs/xmls/XmlSplitWtr.java b/100_core/src/gplx/langs/xmls/XmlSplitWtr.java index 18fbf55af..db2a2cf9c 100644 --- a/100_core/src/gplx/langs/xmls/XmlSplitWtr.java +++ b/100_core/src/gplx/langs/xmls/XmlSplitWtr.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.langs.xmls; import gplx.*; import gplx.langs.*; -import gplx.core.ios.*; +import gplx.core.ios.streams.*; public class XmlSplitWtr { public Io_url Url() {return url;} Io_url url; public XmlSplitWtr Init_(Io_url partDir, byte[] hdr, XmlFileSplitterOpts opts) { diff --git a/100_core/src/gplx/langs/xmls/Xpath_.java b/100_core/src/gplx/langs/xmls/Xpath_.java index 9621d17b8..8de63fcef 100644 --- a/100_core/src/gplx/langs/xmls/Xpath_.java +++ b/100_core/src/gplx/langs/xmls/Xpath_.java @@ -34,7 +34,7 @@ public class Xpath_ { return list; } static XmlNdeList Select(XmlNde owner, String xpath, Xpath_Args args) { - XmlNdeList_cls_list rv = new XmlNdeList_cls_list(List_adp_.Capacity_initial); + XmlNdeList_cls_list rv = new XmlNdeList_cls_list(8); String[] parts = String_.Split(xpath, "/"); TraverseSubs(owner, parts, 0, rv, args); return rv; @@ -56,7 +56,7 @@ public class Xpath_ { TraverseSubs(sub, parts, depth + 1, results, args); } } - public static final String InnetTextKey = "&innerText"; + public static final String InnetTextKey = "&innerText"; public static Keyval_hash ExtractKeyVals(String xml, Int_obj_ref posRef, String nodeName) { int pos = posRef.Val(); Err xmlErr = Err_.new_wo_type("error parsing xml", "xml", xml, "pos", pos); diff --git a/100_core/tst/gplx/GfoTreeBldr_fxt.java b/100_core/tst/gplx/GfoTreeBldr_fxt.java index a42abf785..134952ac3 100644 --- a/100_core/tst/gplx/GfoTreeBldr_fxt.java +++ b/100_core/tst/gplx/GfoTreeBldr_fxt.java @@ -17,8 +17,8 @@ along with this program. If not, see . */ package gplx; public class GfoTreeBldr_fxt { - public List_adp Atrs() {return atrs;} List_adp atrs = List_adp_.new_(); - public List_adp Subs() {return subs;} List_adp subs = List_adp_.new_(); + public List_adp Atrs() {return atrs;} List_adp atrs = List_adp_.New(); + public List_adp Subs() {return subs;} List_adp subs = List_adp_.New(); public GfoTreeBldr_fxt atr_(Object key, Object val) { atrs.Add(new Object[] {key, val}); return this; diff --git a/100_core/tst/gplx/core/ios/IoEngine_fil_basic_base.java b/100_core/tst/gplx/core/ios/IoEngine_fil_basic_base.java index e70329b37..69c91b031 100644 --- a/100_core/tst/gplx/core/ios/IoEngine_fil_basic_base.java +++ b/100_core/tst/gplx/core/ios/IoEngine_fil_basic_base.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.core.ios; import gplx.*; import gplx.core.*; -import org.junit.*; import gplx.core.texts.*;/*EncodingAdp_*/ +import org.junit.*; import gplx.core.texts.*;/*EncodingAdp_*/ import gplx.core.ios.streams.*; public abstract class IoEngine_fil_basic_base { @Before public void setup() { engine = engine_(); diff --git a/100_core/tst/gplx/core/ios/IoEngine_fil_basic_memory_tst.java b/100_core/tst/gplx/core/ios/IoEngine_fil_basic_memory_tst.java index 5190d6401..c5d447ef1 100644 --- a/100_core/tst/gplx/core/ios/IoEngine_fil_basic_memory_tst.java +++ b/100_core/tst/gplx/core/ios/IoEngine_fil_basic_memory_tst.java @@ -45,7 +45,7 @@ public class IoEngine_fil_basic_memory_tst extends IoEngine_fil_basic_base { list.Del_at(0); // remove drive IoEngine_xrg_recycleFil recycleXrg = bin.Send_xrg(fil) .RootDirNames_(list) - .AppName_("gplx.test").Time_(DateAdp_.parse_gplx("20100102_115559123")).Uuid_(Guid_adp_.parse("467ffb41-cdfe-402f-b22b-be855425784b")); + .AppName_("gplx.test").Time_(DateAdp_.parse_gplx("20100102_115559123")).Uuid_(Guid_adp_.Parse("467ffb41-cdfe-402f-b22b-be855425784b")); recycleXrg.Exec(); fx.tst_ExistsPaths(false, fil); fx.tst_ExistsPaths(true, recycleXrg.RecycleUrl()); diff --git a/100_core/tst/gplx/core/ios/IoEngine_fil_basic_system_tst.java b/100_core/tst/gplx/core/ios/IoEngine_fil_basic_system_tst.java index 3e67e1c21..842b31482 100644 --- a/100_core/tst/gplx/core/ios/IoEngine_fil_basic_system_tst.java +++ b/100_core/tst/gplx/core/ios/IoEngine_fil_basic_system_tst.java @@ -37,7 +37,7 @@ public class IoEngine_fil_basic_system_tst extends IoEngine_fil_basic_base { List_adp list = root.XtoNames(); list.Del_at(0); // remove drive IoEngine_xrg_recycleFil recycleXrg = bin.Send_xrg(fil) .RootDirNames_(list) - .AppName_("gplx.test").Time_(DateAdp_.parse_gplx("20100102_115559123")).Uuid_(Guid_adp_.parse("467ffb41-cdfe-402f-b22b-be855425784b")); + .AppName_("gplx.test").Time_(DateAdp_.parse_gplx("20100102_115559123")).Uuid_(Guid_adp_.Parse("467ffb41-cdfe-402f-b22b-be855425784b")); recycleXrg.Exec(); fx.tst_ExistsPaths(false, fil); fx.tst_ExistsPaths(true, recycleXrg.RecycleUrl()); diff --git a/100_core/tst/gplx/core/ios/IoEngine_xrg_recycleFil_tst.java b/100_core/tst/gplx/core/ios/IoEngine_xrg_recycleFil_tst.java index da121df2e..481659ffc 100644 --- a/100_core/tst/gplx/core/ios/IoEngine_xrg_recycleFil_tst.java +++ b/100_core/tst/gplx/core/ios/IoEngine_xrg_recycleFil_tst.java @@ -25,7 +25,7 @@ public class IoEngine_xrg_recycleFil_tst { tst_GenRecycleUrl(recycle_(), Io_url_.mem_fil_("mem/z_trash/20100102/gplx.images;115559123;;fil.txt")); tst_GenRecycleUrl(recycle_().Uuid_include_(), Io_url_.mem_fil_("mem/z_trash/20100102/gplx.images;115559123;467ffb41-cdfe-402f-b22b-be855425784b;fil.txt")); } - IoEngine_xrg_recycleFil recycle_() {return IoEngine_xrg_recycleFil.gplx_(Io_url_.mem_fil_("mem/dir/fil.txt")).AppName_("gplx.images").Uuid_(Guid_adp_.parse("467ffb41-cdfe-402f-b22b-be855425784b")).Time_(DateAdp_.parse_gplx("20100102_115559123"));} + IoEngine_xrg_recycleFil recycle_() {return IoEngine_xrg_recycleFil.gplx_(Io_url_.mem_fil_("mem/dir/fil.txt")).AppName_("gplx.images").Uuid_(Guid_adp_.Parse("467ffb41-cdfe-402f-b22b-be855425784b")).Time_(DateAdp_.parse_gplx("20100102_115559123"));} void tst_GenRecycleUrl(IoEngine_xrg_recycleFil xrg, Io_url expd) { Tfds.Eq(expd, xrg.RecycleUrl()); } diff --git a/100_core/tst/gplx/core/stores/xmls/XmlDataRdr_tst.java b/100_core/tst/gplx/core/stores/xmls/XmlDataRdr_tst.java index 40ed6ce28..ffe4a851e 100644 --- a/100_core/tst/gplx/core/stores/xmls/XmlDataRdr_tst.java +++ b/100_core/tst/gplx/core/stores/xmls/XmlDataRdr_tst.java @@ -91,7 +91,7 @@ class XmlDataRdr_fxt { public DataRdr rdr_(String... ary) {return XmlDataRdr_.text_(String_.Concat(ary));} public void tst_Subs_ByName(DataRdr rdr, String xpath, String key, String... expdAry) { DataRdr subRdr = rdr.Subs_byName(xpath); - List_adp list = List_adp_.new_(); + List_adp list = List_adp_.New(); while (subRdr.MoveNextPeer()) list.Add(subRdr.Read(key)); diff --git a/110_gfml/src_100_tkn/gplx/gfml/GfmlLxr.java b/110_gfml/src_100_tkn/gplx/gfml/GfmlLxr.java index 86087fd64..08ea30206 100644 --- a/110_gfml/src_100_tkn/gplx/gfml/GfmlLxr.java +++ b/110_gfml/src_100_tkn/gplx/gfml/GfmlLxr.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.gfml; import gplx.*; import gplx.core.texts.*; /*CharStream*/ -public interface GfmlLxr extends GfoEvObj { +public interface GfmlLxr extends Gfo_evt_itm { String Key(); String[] Hooks(); GfmlTkn CmdTkn(); @@ -30,5 +30,5 @@ class GfmlLxrRegy { public int Count() {return hash.Count();} public void Add(GfmlLxr lxr) {hash.Add(lxr.Key(), lxr);} public GfmlLxr Get_by(String key) {return (GfmlLxr)hash.Get_by(key);} - Hash_adp hash = Hash_adp_.new_(); + Hash_adp hash = Hash_adp_.New(); } diff --git a/110_gfml/src_100_tkn/gplx/gfml/GfmlLxr_.java b/110_gfml/src_100_tkn/gplx/gfml/GfmlLxr_.java index 92d500b4d..10f605c1e 100644 --- a/110_gfml/src_100_tkn/gplx/gfml/GfmlLxr_.java +++ b/110_gfml/src_100_tkn/gplx/gfml/GfmlLxr_.java @@ -28,31 +28,31 @@ public class GfmlLxr_ { return GfmlLxr_.solo_(key, tkn); } @gplx.Internal protected static GfmlLxr frame_(String key, GfmlFrame frame, String bgn, String end) {return GfmlLxr_frame.new_(key, frame, bgn, end, GfmlBldrCmd_pendingTkns_add.Instance, GfmlBldrCmd_frameEnd.data_());} - public static final GfmlLxr Null = new GfmlLxr_null(); - public static final String CmdTknChanged_evt = "Changed"; + public static final GfmlLxr Null = new GfmlLxr_null(); + public static final String CmdTknChanged_evt = "Changed"; public static GfmlLxr as_(Object obj) {return obj instanceof GfmlLxr ? (GfmlLxr)obj : null;} public static GfmlLxr cast(Object obj) {try {return (GfmlLxr)obj;} catch(Exception exc) {throw Err_.new_type_mismatch_w_exc(exc, GfmlLxr.class, obj);}} } class GfmlLxr_null implements GfmlLxr { public String Key() {return "gfml.nullLxr";} - public GfoEvMgr EvMgr() {if (evMgr == null) evMgr = GfoEvMgr.new_(this); return evMgr;} GfoEvMgr evMgr; - public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {return GfoInvkAble_.Rv_unhandled;} + public Gfo_evt_mgr Evt_mgr() {if (evt_mgr == null) evt_mgr = new Gfo_evt_mgr(this); return evt_mgr;} Gfo_evt_mgr evt_mgr; + public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {return Gfo_invk_.Rv_unhandled;} public GfmlTkn CmdTkn() {return GfmlTkn_.Null;} public void CmdTkn_set(GfmlTkn val) {} public String[] Hooks() {return String_.Ary_empty;} public GfmlTkn MakeTkn(CharStream stream, int hookLength) {return GfmlTkn_.Null;} public void SubLxr_Add(GfmlLxr... lexer) {} public GfmlLxr SubLxr() {return this;} } -class GfmlLxr_singleton implements GfmlLxr, GfoEvObj { - public GfoEvMgr EvMgr() {if (evMgr == null) evMgr = GfoEvMgr.new_(this); return evMgr;} GfoEvMgr evMgr; - public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {return GfoInvkAble_.Rv_unhandled;} +class GfmlLxr_singleton implements GfmlLxr, Gfo_evt_itm { + public Gfo_evt_mgr Evt_mgr() {if (evt_mgr == null) evt_mgr = new Gfo_evt_mgr(this); return evt_mgr;} Gfo_evt_mgr evt_mgr; + public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {return Gfo_invk_.Rv_unhandled;} public String Key() {return key;} private String key; public GfmlTkn CmdTkn() {return singletonTkn;} GfmlTkn singletonTkn; public void CmdTkn_set(GfmlTkn val) { String oldRaw = singletonTkn.Raw(); singletonTkn = val; hooks = String_.Ary(val.Raw()); - GfoEvMgr_.PubVals(this, GfmlLxr_.CmdTknChanged_evt, Keyval_.new_("old", oldRaw), Keyval_.new_("new", val.Raw()), Keyval_.new_("lxr", this)); + Gfo_evt_mgr_.Pub_vals(this, GfmlLxr_.CmdTknChanged_evt, Keyval_.new_("old", oldRaw), Keyval_.new_("new", val.Raw()), Keyval_.new_("lxr", this)); } public String[] Hooks() {return hooks;} private String[] hooks; public GfmlTkn MakeTkn(CharStream stream, int hookLength) { @@ -75,8 +75,8 @@ class GfmlLxr_singleton implements GfmlLxr, GfoEvObj { } class GfmlLxr_group implements GfmlLxr { public String Key() {return key;} private String key; - public GfoEvMgr EvMgr() {if (evMgr == null) evMgr = GfoEvMgr.new_(this); return evMgr;} GfoEvMgr evMgr; - public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {return GfoInvkAble_.Rv_unhandled;} + public Gfo_evt_mgr Evt_mgr() {if (evt_mgr == null) evt_mgr = new Gfo_evt_mgr(this); return evt_mgr;} Gfo_evt_mgr evt_mgr; + public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {return Gfo_invk_.Rv_unhandled;} public GfmlTkn CmdTkn() {return outputTkn;} public void CmdTkn_set(GfmlTkn val) {} GfmlTkn outputTkn; public String[] Hooks() {return trie.Symbols();} public GfmlTkn MakeTkn(CharStream stream, int hookLength) { @@ -106,8 +106,8 @@ class GfmlLxr_group implements GfmlLxr { return rv; } GfmlLxr_group() {} } -class GfmlLxr_general implements GfmlLxr, GfoInvkAble { - public GfoEvMgr EvMgr() {if (evMgr == null) evMgr = GfoEvMgr.new_(this); return evMgr;} GfoEvMgr evMgr; +class GfmlLxr_general implements GfmlLxr, Gfo_invk { + public Gfo_evt_mgr Evt_mgr() {if (evt_mgr == null) evt_mgr = new Gfo_evt_mgr(this); return evt_mgr;} Gfo_evt_mgr evt_mgr; public String Key() {return key;} private String key; public GfmlTkn CmdTkn() {return txtTkn;} public void CmdTkn_set(GfmlTkn val) {} GfmlTkn txtTkn; public String[] Hooks() {return symTrie.Symbols();} @@ -143,7 +143,7 @@ class GfmlLxr_general implements GfmlLxr, GfoInvkAble { for (GfmlLxr lxr : lxrs) { for (String hook : lxr.Hooks()) symTrie.Add(hook, lxr); - GfoEvMgr_.SubSame(lxr, GfmlLxr_.CmdTknChanged_evt, this); + Gfo_evt_mgr_.Sub_same(lxr, GfmlLxr_.CmdTknChanged_evt, this); } } public GfmlLxr SubLxr() {return this;} @@ -163,7 +163,7 @@ class GfmlLxr_general implements GfmlLxr, GfoInvkAble { symTrie.Del(m.ReadStr("old")); symTrie.Add(m.ReadStr("new"), m.CastObj("lxr")); } - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } } @@ -174,7 +174,7 @@ class GfmlLxr_general_txtBfr { public void Add(CharStream stream) { if (Bgn == NullPos) Bgn = stream.Pos(); Len++; - } static final int NullPos = -1; + } static final int NullPos = -1; public GfmlTkn MakeTkn(CharStream stream, GfmlTkn textTkn) { String raw = String_.new_charAry_(stream.Ary(), Bgn, Len); Bgn = -1; Len = 0; diff --git a/110_gfml/src_200_type/gplx/gfml/GfmlTypeHash.java b/110_gfml/src_200_type/gplx/gfml/GfmlTypeHash.java index 17872ec30..a6a5b37b1 100644 --- a/110_gfml/src_200_type/gplx/gfml/GfmlTypeHash.java +++ b/110_gfml/src_200_type/gplx/gfml/GfmlTypeHash.java @@ -23,7 +23,7 @@ class GfmlTypeHash { if (hash.Has(type.Key())) throw Err_.new_wo_type("type key already exists", "key", type.Key()); hash.Add(type.Key(), type); } - Hash_adp hash = Hash_adp_.new_(); + Hash_adp hash = Hash_adp_.New(); public static GfmlTypeHash new_() {return new GfmlTypeHash();} GfmlTypeHash() {} } class GfmlTypRegy { diff --git a/110_gfml/src_200_type/gplx/gfml/GfmlTypeMakr.java b/110_gfml/src_200_type/gplx/gfml/GfmlTypeMakr.java index 77bc736a8..08fac0826 100644 --- a/110_gfml/src_200_type/gplx/gfml/GfmlTypeMakr.java +++ b/110_gfml/src_200_type/gplx/gfml/GfmlTypeMakr.java @@ -62,6 +62,6 @@ class GfmlTypeMakr { void AddSubFld_imp(GfmlType ownerType, GfmlFld subFld) {ownerType.SubFlds().Add(subFld);} GfmlType owner; - List_adp list = List_adp_.new_(); + List_adp list = List_adp_.New(); public static GfmlTypeMakr new_() {return new GfmlTypeMakr();} } \ No newline at end of file diff --git a/110_gfml/src_300_gdoc/gplx/gfml/GfmlDoc.java b/110_gfml/src_300_gdoc/gplx/gfml/GfmlDoc.java index 32b697628..42c2ffe40 100644 --- a/110_gfml/src_300_gdoc/gplx/gfml/GfmlDoc.java +++ b/110_gfml/src_300_gdoc/gplx/gfml/GfmlDoc.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.gfml; import gplx.*; public class GfmlDoc { public GfmlNde RootNde() {return rootNde;} GfmlNde rootNde; - @gplx.Internal protected List_adp UsrMsgs() {return usrMsgs;} List_adp usrMsgs = List_adp_.new_(); + @gplx.Internal protected List_adp UsrMsgs() {return usrMsgs;} List_adp usrMsgs = List_adp_.New(); @gplx.Internal protected GfmlLxrRegy LxrRegy() {return lxrRegy;} GfmlLxrRegy lxrRegy = new GfmlLxrRegy(); @gplx.Internal protected GfmlBldrCmdRegy CmdRegy() {return cmdRegy;} GfmlBldrCmdRegy cmdRegy = GfmlBldrCmdRegy.new_(); @gplx.Internal protected GfmlPragmaMgr PragmaMgr() {return pragmaMgr;} GfmlPragmaMgr pragmaMgr = GfmlPragmaMgr.new_(); @@ -41,5 +41,5 @@ public class GfmlDoc { // public GfmlTkn BgnBrace() {return bgnBrace;} public GfmlDocEditor BgnBrace_(GfmlTkn v) {bgnBrace = v; return this;} GfmlTkn bgnBrace = GfmlTkn_.new_("{", ""); // public GfmlTkn EndBrace() {return endBrace;} public GfmlDocEditor EndBrace_(GfmlTkn v) {endBrace = v; return this;} GfmlTkn endBrace = GfmlTkn_.new_("}", ""); // public GfmlTkn Hnd() {return hnd;} public GfmlDocEditor Hnd_(GfmlTkn v) {hnd = v; return this;} GfmlTkn hnd = GfmlTkn_.new_(":", ""); -// public static final GfmlDocEditor Instance = new GfmlDocEditor(); GfmlDocEditor() {} +// public static final GfmlDocEditor Instance = new GfmlDocEditor(); GfmlDocEditor() {} // } diff --git a/110_gfml/src_300_gdoc/gplx/gfml/GfmlItmHnds.java b/110_gfml/src_300_gdoc/gplx/gfml/GfmlItmHnds.java index be15f01b5..18c2fd490 100644 --- a/110_gfml/src_300_gdoc/gplx/gfml/GfmlItmHnds.java +++ b/110_gfml/src_300_gdoc/gplx/gfml/GfmlItmHnds.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.gfml; import gplx.*; public class GfmlItmHnds { - public int Count() {return list.Count();} List_adp list = List_adp_.new_(); + public int Count() {return list.Count();} List_adp list = List_adp_.New(); public GfmlNde Get_at(int idx) {return (GfmlNde)list.Get_at(idx);} public void Add(GfmlNde nde) {list.Add(nde);} public static GfmlItmHnds new_() {return new GfmlItmHnds();} GfmlItmHnds() {} diff --git a/110_gfml/src_300_gdoc/gplx/gfml/GfmlItmKeys.java b/110_gfml/src_300_gdoc/gplx/gfml/GfmlItmKeys.java index 3659ff394..1469bf7e4 100644 --- a/110_gfml/src_300_gdoc/gplx/gfml/GfmlItmKeys.java +++ b/110_gfml/src_300_gdoc/gplx/gfml/GfmlItmKeys.java @@ -55,7 +55,7 @@ public class GfmlItmKeys { if (toDel != null) list.Del(toDel); } GfmlAtr FetchAtr(String key) {return GfmlAtr.as_(hash.Get_by(key));} - List_adp list = List_adp_.new_(); Hash_adp hash = Hash_adp_.new_(); + List_adp list = List_adp_.New(); Hash_adp hash = Hash_adp_.New(); public static GfmlItmKeys new_() {return new GfmlItmKeys();} GfmlItmKeys() {} - @gplx.Internal protected static final String NullKey = ""; + @gplx.Internal protected static final String NullKey = ""; } diff --git a/110_gfml/src_300_gdoc/gplx/gfml/GfmlScopeItm.java b/110_gfml/src_300_gdoc/gplx/gfml/GfmlScopeItm.java index 18822dd52..98b9d70a3 100644 --- a/110_gfml/src_300_gdoc/gplx/gfml/GfmlScopeItm.java +++ b/110_gfml/src_300_gdoc/gplx/gfml/GfmlScopeItm.java @@ -46,7 +46,7 @@ class GfmlScopeRegy { } return rv; } - Hash_adp hash = Hash_adp_.new_(); + Hash_adp hash = Hash_adp_.New(); public static GfmlScopeRegy new_() {return new GfmlScopeRegy();} } class GfmlScopeList { @@ -66,7 +66,7 @@ class GfmlScopeList { } return rv; } - List_adp list = List_adp_.new_(); + List_adp list = List_adp_.New(); public static GfmlScopeList new_(String key) { GfmlScopeList rv = new GfmlScopeList(); rv.key = key; return rv; } GfmlScopeList() {} diff --git a/110_gfml/src_400_pragma/gplx/gfml/GfmlPragma.java b/110_gfml/src_400_pragma/gplx/gfml/GfmlPragma.java index af5528ec5..dbaa35fa7 100644 --- a/110_gfml/src_400_pragma/gplx/gfml/GfmlPragma.java +++ b/110_gfml/src_400_pragma/gplx/gfml/GfmlPragma.java @@ -45,6 +45,6 @@ class GfmlPragmaMgr { cmd.Exec(bldr, GfmlTkn_.Null); } } - Hash_adp pragmas = Hash_adp_.new_(); Hash_adp_list bgnCmds = Hash_adp_list.new_(), endCmds = Hash_adp_list.new_(); + Hash_adp pragmas = Hash_adp_.New(); Hash_adp_list bgnCmds = Hash_adp_list.new_(), endCmds = Hash_adp_list.new_(); public static GfmlPragmaMgr new_() {return new GfmlPragmaMgr();} GfmlPragmaMgr() {} } diff --git a/110_gfml/src_400_pragma/gplx/gfml/GfmlPragmaDefault.java b/110_gfml/src_400_pragma/gplx/gfml/GfmlPragmaDefault.java index 376b1e28f..121102af7 100644 --- a/110_gfml/src_400_pragma/gplx/gfml/GfmlPragmaDefault.java +++ b/110_gfml/src_400_pragma/gplx/gfml/GfmlPragmaDefault.java @@ -24,7 +24,7 @@ class GfmlPragmaDefault implements GfmlPragma { // bldr.PragmaMgr.EndCmds_add(GfmlDocPos_.up_(bldr.CurNdeFrame.DocPos), GfmlDefaultPragma_endCmd.new_(list)); } @gplx.Internal protected List_adp Compile(GfmlNde pragmaNde) { - List_adp list = List_adp_.new_(); + List_adp list = List_adp_.New(); for (int i = 0; i < pragmaNde.SubHnds().Count(); i++) { GfmlNde subNde = (GfmlNde)pragmaNde.SubHnds().Get_at(i); CompileSubNde(subNde, list); @@ -51,7 +51,7 @@ class GfmlPragmaDefault implements GfmlPragma { return makr.Xto_bry(); } public static GfmlPragmaDefault new_() {return new GfmlPragmaDefault();} GfmlPragmaDefault() {} - public static final GfmlTkn Default_none = GfmlTkn_.raw_("DEFAULT NONE"); + public static final GfmlTkn Default_none = GfmlTkn_.raw_("DEFAULT NONE"); } class GfmlDefaultItem { public String TypeKey() {return typeKey;} private String typeKey; diff --git a/110_gfml/src_400_pragma/gplx/gfml/GfmlPragmaType.java b/110_gfml/src_400_pragma/gplx/gfml/GfmlPragmaType.java index 779306d1a..bcec6cdfb 100644 --- a/110_gfml/src_400_pragma/gplx/gfml/GfmlPragmaType.java +++ b/110_gfml/src_400_pragma/gplx/gfml/GfmlPragmaType.java @@ -20,7 +20,7 @@ import gplx.core.lists.*; class GfmlPragmaType implements GfmlPragma { public String KeyOfPragma() {return pragmaKey;} private String pragmaKey = "_type"; public void Exec(GfmlBldr bldr, GfmlNde pragmaNde) { - Ordered_hash list = Ordered_hash_.New(); List_adp replaced = List_adp_.new_(); + Ordered_hash list = Ordered_hash_.New(); List_adp replaced = List_adp_.New(); for (int i = 0 ; i < pragmaNde.SubHnds().Count(); i++) { GfmlNde typNde = pragmaNde.SubHnds().Get_at(i); GfmlType type = GfmlTypeCompiler.Compile(typNde, GfmlType_.Root, bldr.TypeMgr().TypeRegy(), list); @@ -47,7 +47,7 @@ class GfmlPragmaType implements GfmlPragma { makr.AddSubFld(GfmlFld.new_(false, "fld", "_type/type/fld")); return makr.Xto_bry(); } - public static final String CacheLog_key = "log:type"; + public static final String CacheLog_key = "log:type"; @gplx.Internal protected static void ExecList(GfmlTypRegy regy, Ordered_hash list, List_adp replaced) { for (Object typeObj : list) { GfmlType type = (GfmlType)typeObj; diff --git a/110_gfml/src_400_pragma/gplx/gfml/GfmlPragmaVar.java b/110_gfml/src_400_pragma/gplx/gfml/GfmlPragmaVar.java index 30b678f27..b8834ab2c 100644 --- a/110_gfml/src_400_pragma/gplx/gfml/GfmlPragmaVar.java +++ b/110_gfml/src_400_pragma/gplx/gfml/GfmlPragmaVar.java @@ -24,7 +24,7 @@ class GfmlPragmaVar implements GfmlPragma { bldr.Doc().PragmaMgr().EndCmds_add(bldr.CurNdeFrame().CurDocPos().NewUp(), GfmlPragmaVar_scopeEndCmd.new_(list)); } @gplx.Internal protected List_adp Compile(GfmlNde pragmaNde) { - List_adp list = List_adp_.new_(); + List_adp list = List_adp_.New(); for (int i = 0; i < pragmaNde.SubHnds().Count(); i++) { GfmlNde subNde = (GfmlNde)pragmaNde.SubHnds().Get_at(i); GfmlVarItm itm = CompileItmNde(subNde); diff --git a/110_gfml/src_400_pragma/gplx/gfml/GfmlVarCtx.java b/110_gfml/src_400_pragma/gplx/gfml/GfmlVarCtx.java index 55d34ac0e..c68507a84 100644 --- a/110_gfml/src_400_pragma/gplx/gfml/GfmlVarCtx.java +++ b/110_gfml/src_400_pragma/gplx/gfml/GfmlVarCtx.java @@ -24,7 +24,7 @@ class GfmlVarCtx { GfmlVarItm itm = (GfmlVarItm)hash.Get_by(key); if (itm == null) return null; return itm.TknVal(); } - Hash_adp hash = Hash_adp_.new_(); + Hash_adp hash = Hash_adp_.New(); public static GfmlVarCtx new_(String key) { GfmlVarCtx rv = new GfmlVarCtx(); rv.key = key; @@ -53,10 +53,10 @@ class GfmlVarCtx_ { String key = "gfml.cacheKeys.ctxRegy"; Hash_adp rv = (Hash_adp)cache.Get_by(key); if (rv == null) { - rv = Hash_adp_.new_(); + rv = Hash_adp_.New(); cache.Add(key, rv); } return rv; } - public static final String DefaultKey = "gfml.varKeys.default"; + public static final String DefaultKey = "gfml.varKeys.default"; } diff --git a/110_gfml/src_500_build/gplx/gfml/GfmlBldr.java b/110_gfml/src_500_build/gplx/gfml/GfmlBldr.java index 21992cf6f..4648eada3 100644 --- a/110_gfml/src_500_build/gplx/gfml/GfmlBldr.java +++ b/110_gfml/src_500_build/gplx/gfml/GfmlBldr.java @@ -23,7 +23,7 @@ public class GfmlBldr { @gplx.Internal protected GfmlFrame_nde CurNdeFrame() {return curNdeFrame;} GfmlFrame_nde curNdeFrame; @gplx.Internal protected GfmlNde CurNde() {return curNdeFrame.CurNde();} @gplx.Internal protected GfmlTypeMgr TypeMgr() {return typeMgr;} GfmlTypeMgr typeMgr = GfmlTypeMgr.new_(); - @gplx.Internal protected Hash_adp Vars() {return vars;} Hash_adp vars = Hash_adp_.new_(); + @gplx.Internal protected Hash_adp Vars() {return vars;} Hash_adp vars = Hash_adp_.New(); @gplx.Internal protected int StreamPos() {return streamPos;} int streamPos; @gplx.Internal protected void ThrowErrors_set(boolean v) {throwErrors = v;} private boolean throwErrors = true; @gplx.Internal protected int PrvSymType() {return prvSymType;} @gplx.Internal protected void PrvSymType_set(int v) {prvSymType = v;} int prvSymType = GfmlNdeSymType.Null; diff --git a/110_gfml/src_500_build/gplx/gfml/GfmlBldrCmd.java b/110_gfml/src_500_build/gplx/gfml/GfmlBldrCmd.java index d5ec1dc8d..b7b7ee047 100644 --- a/110_gfml/src_500_build/gplx/gfml/GfmlBldrCmd.java +++ b/110_gfml/src_500_build/gplx/gfml/GfmlBldrCmd.java @@ -21,7 +21,7 @@ public interface GfmlBldrCmd { void Exec(GfmlBldr bldr, GfmlTkn tkn); } class GfmlBldrCmd_ { - public static final GfmlBldrCmd Null = new GfmlBldrCmd_null(); + public static final GfmlBldrCmd Null = new GfmlBldrCmd_null(); } class GfmlBldrCmd_null implements GfmlBldrCmd { public String Key() {return "gfml.nullCmd";} @@ -30,7 +30,7 @@ class GfmlBldrCmd_null implements GfmlBldrCmd { class GfmlBldrCmdRegy { public void Add(GfmlBldrCmd cmd) {hash.Add(cmd.Key(), cmd);} public GfmlBldrCmd GetOrFail(String key) {return (GfmlBldrCmd)hash.Get_by_or_fail(key);} - Hash_adp hash = Hash_adp_.new_(); + Hash_adp hash = Hash_adp_.New(); public static GfmlBldrCmdRegy new_() { GfmlBldrCmdRegy rv = new GfmlBldrCmdRegy(); rv.Add(GfmlBldrCmd_elemKey_set.Instance); diff --git a/110_gfml/src_500_build/gplx/gfml/GfmlStringHighlighter.java b/110_gfml/src_500_build/gplx/gfml/GfmlStringHighlighter.java index 18b02ea14..b1bebe6db 100644 --- a/110_gfml/src_500_build/gplx/gfml/GfmlStringHighlighter.java +++ b/110_gfml/src_500_build/gplx/gfml/GfmlStringHighlighter.java @@ -31,7 +31,7 @@ class GfmlStringHighlighter { } public String[] Gen() { String_bldr posBfr = String_bldr_.new_(), rawBfr = String_bldr_.new_(), symBfr = String_bldr_.new_(); - List_adp symList = List_adp_.new_(); + List_adp symList = List_adp_.New(); int bgnPos = 0, endPos = 0; int rawLen = String_.Len(raw); int rawLenDigits = Int_.DigitCount(rawLen); int rawBfrBgn = -1, marksLastIdx = marks.Idx_last(); @@ -79,7 +79,7 @@ class GfmlStringHighlighter { rawBfr.Add_at(0, " "); symBfr.Add_at(0, " "); } - List_adp rv = List_adp_.new_(); + List_adp rv = List_adp_.New(); rv.Add(posBfr.To_str()); rv.Add(rawBfr.To_str()); rv.Add(symBfr.To_str()); @@ -89,7 +89,7 @@ class GfmlStringHighlighter { rv.Add((String)symList.Get_at(i)); return rv.To_str_ary(); } - List_adp marks = List_adp_.new_(); + List_adp marks = List_adp_.New(); public static GfmlStringHighlighter new_() { GfmlStringHighlighter rv = new GfmlStringHighlighter(); return rv; @@ -99,5 +99,5 @@ class GfmlStringHighlighterMarker { public int Pos() {return pos;} public GfmlStringHighlighterMarker Pos_(int v) {pos = v; return this;} int pos; public char Sym() {return sym;} public GfmlStringHighlighterMarker Sym_(char v) {sym = v; return this;} char sym; public String Msg() {return msg;} public GfmlStringHighlighterMarker Msg_(String v) {msg = v; return this;} private String msg; - public static final GfmlStringHighlighterMarker Null = new GfmlStringHighlighterMarker().Pos_(-1); + public static final GfmlStringHighlighterMarker Null = new GfmlStringHighlighterMarker().Pos_(-1); } diff --git a/110_gfml/tst/gplx/gfml/yfxts_GfmlParse_fxt.java b/110_gfml/tst/gplx/gfml/yfxts_GfmlParse_fxt.java index 38fb7dc41..2b020a7be 100644 --- a/110_gfml/tst/gplx/gfml/yfxts_GfmlParse_fxt.java +++ b/110_gfml/tst/gplx/gfml/yfxts_GfmlParse_fxt.java @@ -50,7 +50,7 @@ class GfmlParse_fxt { public void tst_Err(String raw, UsrMsg_mok... expdErrs) { bldr.ThrowErrors_set(false); GfmlDoc actlDoc = bldr.XtoGfmlDoc(raw); - List_adp expd = List_adp_.new_(), actl = actlDoc.UsrMsgs(); + List_adp expd = List_adp_.New(), actl = actlDoc.UsrMsgs(); expd.Add_many((Object[])expdErrs); TfdsTstr_fxt tstr = TfdsTstr_fxt.new_(); int max = tstr.List_Max(expd, actl); diff --git a/110_gfml/tst/gplx/gfml/ymoks_GfmlAtr_GfmlNde_mok.java b/110_gfml/tst/gplx/gfml/ymoks_GfmlAtr_GfmlNde_mok.java index 4a8ff2408..9f8a1733d 100644 --- a/110_gfml/tst/gplx/gfml/ymoks_GfmlAtr_GfmlNde_mok.java +++ b/110_gfml/tst/gplx/gfml/ymoks_GfmlAtr_GfmlNde_mok.java @@ -33,7 +33,7 @@ class GfmlAtr_mok implements GfmlItm_mok { sb.Add_kv("key=", key).Add_kv("val=", val); return sb.To_str(); } - public static final GfmlAtr_mok Null = new GfmlAtr_mok().Key_(String_.Null_mark).Val_(String_.Null_mark); + public static final GfmlAtr_mok Null = new GfmlAtr_mok().Key_(String_.Null_mark).Val_(String_.Null_mark); public static GfmlAtr_mok as_(Object obj) {return obj instanceof GfmlAtr_mok ? (GfmlAtr_mok)obj : null;} public static GfmlAtr_mok new_(String key, String val) { GfmlAtr_mok rv = new GfmlAtr_mok(); @@ -60,7 +60,7 @@ class GfmlNde_mok implements GfmlItm_mok { for (GfmlItm_mok itm : ary) subs.Add(itm); return this; - } List_adp subs = List_adp_.new_(); + } List_adp subs = List_adp_.New(); public GfmlNde_mok Atrk_(String k, String v) {subs.Add(GfmlAtr_mok.new_(k, v)); return this;} public GfmlNde_mok Atru_(String v) {subs.Add(GfmlAtr_mok.new_(GfmlTkn_.NullVal, v)); return this;} @@ -91,8 +91,8 @@ class GfmlNde_mok implements GfmlItm_mok { return rv; } public static GfmlNde_mok as_(Object obj) {return obj instanceof GfmlNde_mok ? (GfmlNde_mok)obj : null;} - public static final GfmlNde_mok Null = new GfmlNde_mok().Hnd_(String_.Null_mark).Typ_(String_.Null_mark); - public static final GfmlNde_mok ErrAtr = new GfmlNde_mok().Hnd_("<>").Typ_("<>"); + public static final GfmlNde_mok Null = new GfmlNde_mok().Hnd_(String_.Null_mark).Typ_(String_.Null_mark); + public static final GfmlNde_mok ErrAtr = new GfmlNde_mok().Hnd_("<>").Typ_("<>"); public static GfmlNde_mok new_() {return new GfmlNde_mok();} GfmlNde_mok() {} public static GfmlNde_mok gfmlNde_(GfmlNde nde) {return InitNde(nde);} static GfmlNde_mok InitNde(GfmlNde nde) { diff --git a/110_gfml/tst/gplx/gfml/ymoks_GfmlTkn_mok.java b/110_gfml/tst/gplx/gfml/ymoks_GfmlTkn_mok.java index 65d7f9cf1..b8f210baf 100644 --- a/110_gfml/tst/gplx/gfml/ymoks_GfmlTkn_mok.java +++ b/110_gfml/tst/gplx/gfml/ymoks_GfmlTkn_mok.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.gfml; import gplx.*; class GfmlTkn_mok { public String Raw() {return raw;} public GfmlTkn_mok Raw_(String v) {raw = v; return this;} private String raw; - public List_adp Subs() {return list;} List_adp list = List_adp_.new_(); + public List_adp Subs() {return list;} List_adp list = List_adp_.New(); public GfmlTkn_mok Subs_(GfmlTkn_mok... ary) { for (GfmlTkn_mok itm : ary) list.Add(itm); diff --git a/110_gfml/tst/gplx/gfml/ymoks_GfmlTyp_GfmlFld_mok.java b/110_gfml/tst/gplx/gfml/ymoks_GfmlTyp_GfmlFld_mok.java index 615850334..4f140e8db 100644 --- a/110_gfml/tst/gplx/gfml/ymoks_GfmlTyp_GfmlFld_mok.java +++ b/110_gfml/tst/gplx/gfml/ymoks_GfmlTyp_GfmlFld_mok.java @@ -43,7 +43,7 @@ class GfmlFld_mok { class GfmlTyp_mok { public String Name() {return name;} public GfmlTyp_mok Name_(String v) {name = v; return this;} private String name; public String Key() {return key;} public GfmlTyp_mok Key_(String v) {key = v; return this;} private String key; - public List_adp Subs() {return subFlds;} List_adp subFlds = List_adp_.new_(); + public List_adp Subs() {return subFlds;} List_adp subFlds = List_adp_.New(); public GfmlTyp_mok Atrs_(String... ary) { for (String itm : ary) subFlds.Add(GfmlFld_mok.new_().ini_atr_(itm)); diff --git a/110_gfml/tst/gplx/gfml/z091_GfmlLxr_basic_tst.java b/110_gfml/tst/gplx/gfml/z091_GfmlLxr_basic_tst.java index 031a89e03..a2c3b5f0f 100644 --- a/110_gfml/tst/gplx/gfml/z091_GfmlLxr_basic_tst.java +++ b/110_gfml/tst/gplx/gfml/z091_GfmlLxr_basic_tst.java @@ -54,7 +54,7 @@ public class z091_GfmlLxr_basic_tst { } GfmlTkn tst_Fetch(String raw, String... expd) { CharStream stream = CharStream.pos0_(raw); - List_adp list = List_adp_.new_(); + List_adp list = List_adp_.New(); GfmlTkn tkn = null; while (true) { tkn = rootLxr.MakeTkn(stream, 0); diff --git a/110_gfml/tst/gplx/gfml/z451_dflts_compile_tst.java b/110_gfml/tst/gplx/gfml/z451_dflts_compile_tst.java index 3a353c700..ccb50bc7c 100644 --- a/110_gfml/tst/gplx/gfml/z451_dflts_compile_tst.java +++ b/110_gfml/tst/gplx/gfml/z451_dflts_compile_tst.java @@ -36,7 +36,7 @@ public class z451_dflts_compile_tst { ( fx_typ.nde_().Atrs_("x", "10") , fx_typ.nde_().Atrs_("y", "20") )); - List_adp list = List_adp_.new_(); + List_adp list = List_adp_.New(); pragma.CompileSubNde(gnde, list); fx.tst_List(list , fx.make_("point", "x", "10") diff --git a/110_gfml/tst/gplx/gfml/z455_dflts_scope_tst.java b/110_gfml/tst/gplx/gfml/z455_dflts_scope_tst.java index 749b3b3c8..def2cc533 100644 --- a/110_gfml/tst/gplx/gfml/z455_dflts_scope_tst.java +++ b/110_gfml/tst/gplx/gfml/z455_dflts_scope_tst.java @@ -30,7 +30,7 @@ public class z455_dflts_scope_tst { tst_FetchOrNullByPos(regy, "point", rootPos, "point", "x", "y"); tst_FetchOrNullByPos(regy, "point", currPos, "point", "x", "y"); - List_adp list = List_adp_.new_(); + List_adp list = List_adp_.New(); list.Add(GfmlDefaultItem.new_("point", "z", GfmlTkn_.raw_("0"))); GfmlDefaultPragma_bgnCmd.ExecList(regy, currPos, list); diff --git a/110_gfml/tst/gplx/gfml/z601_edit_atr_tst.java b/110_gfml/tst/gplx/gfml/z601_edit_atr_tst.java index ec187cc92..5b51f292f 100644 --- a/110_gfml/tst/gplx/gfml/z601_edit_atr_tst.java +++ b/110_gfml/tst/gplx/gfml/z601_edit_atr_tst.java @@ -114,7 +114,7 @@ class GfmlUpdateFx { public GfmlUpdateCmd_atr atr_() {return GfmlUpdateCmd_atr.new_();} public GfmlUpdateCmd_nde nde_() {return GfmlUpdateCmd_nde.new_();} public String Raw() {return raw;} public GfmlUpdateFx Raw_(String v) {raw = v; return this;} private String raw; - public GfmlUpdateFx Update_(GfmlUpdateCmd cmd) {cmds.Add(cmd); return this;} List_adp cmds = List_adp_.new_(); + public GfmlUpdateFx Update_(GfmlUpdateCmd cmd) {cmds.Add(cmd); return this;} List_adp cmds = List_adp_.New(); public GfmlUpdateFx tst_(String expd) { GfmlDoc actlDoc = GfmlDataNde.new_any_eol_(raw).Doc(); for (int i = 0; i < cmds.Count(); i++) { diff --git a/110_gfml/tst/gplx/gfml/z811_useCase_GfmlIoSql_tst.java b/110_gfml/tst/gplx/gfml/z811_useCase_GfmlIoSql_tst.java index 58854eef0..d95156b64 100644 --- a/110_gfml/tst/gplx/gfml/z811_useCase_GfmlIoSql_tst.java +++ b/110_gfml/tst/gplx/gfml/z811_useCase_GfmlIoSql_tst.java @@ -39,7 +39,7 @@ public class z811_useCase_GfmlIoSql_tst { Tfds.Eq_ary_str(To_str(expd.Nde()), To_str(actl)); } String[] To_str(GfmlNde nde) { - List_adp list = List_adp_.new_(); + List_adp list = List_adp_.New(); for (int i = 0; i < nde.SubObjs_Count(); i++) { GfmlAtr atr = (GfmlAtr)nde.SubObjs_GetAt(i); list.Add(atr.Key() + "=" + atr.DatTkn().Raw()); diff --git a/140_dbs/src/gplx/core/stores/DbMaprItm.java b/140_dbs/src/gplx/core/stores/DbMaprItm.java index 0de92505e..d4e759adb 100644 --- a/140_dbs/src/gplx/core/stores/DbMaprItm.java +++ b/140_dbs/src/gplx/core/stores/DbMaprItm.java @@ -19,8 +19,8 @@ package gplx.core.stores; import gplx.*; import gplx.core.*; public class DbMaprItm { public String TableName() {return tableName;} public DbMaprItm TableName_(String val) {tableName = val; return this;} private String tableName; public Ordered_hash Flds() {return flds;} Ordered_hash flds = Ordered_hash_.New(); - public Hash_adp ContextFlds() {return contextFlds;} Hash_adp contextFlds = Hash_adp_.new_(); - public Hash_adp ConstantFlds() {return constantFlds;} Hash_adp constantFlds = Hash_adp_.new_(); + public Hash_adp ContextFlds() {return contextFlds;} Hash_adp contextFlds = Hash_adp_.New(); + public Hash_adp ConstantFlds() {return constantFlds;} Hash_adp constantFlds = Hash_adp_.New(); public List_adp Subs() {return subs;} public DbMaprItm Flds_add(String objProp, String dbFld) {flds.Add(objProp, DbMaprArg.new_(objProp, dbFld)); return this;} @@ -43,7 +43,7 @@ public class DbMaprItm { throw Err_.new_missing_key(find); } public DbMaprArg Flds_get(String key) {return (DbMaprArg)flds.Get_by(key);} - SrlObj proto; String key; List_adp subs = List_adp_.new_(); + SrlObj proto; String key; List_adp subs = List_adp_.New(); public static DbMaprItm proto_(SrlObj proto, String key, String tableName) { DbMaprItm rv = new DbMaprItm(); rv.proto = proto; rv.key = key; rv.tableName = tableName; diff --git a/140_dbs/src/gplx/core/stores/DbMaprMgr.java b/140_dbs/src/gplx/core/stores/DbMaprMgr.java index 17f995639..2af9071d1 100644 --- a/140_dbs/src/gplx/core/stores/DbMaprMgr.java +++ b/140_dbs/src/gplx/core/stores/DbMaprMgr.java @@ -19,13 +19,13 @@ package gplx.core.stores; import gplx.*; import gplx.core.*; public class DbMaprMgr { public DbMaprArg[] RootIndexFlds() {return rootIndexFlds;} public DbMaprMgr RootIndexFlds_(DbMaprArg... val) {rootIndexFlds = val; return this;} DbMaprArg[] rootIndexFlds; public DbMaprItm Root() {return root;} public DbMaprMgr Root_(DbMaprItm v) {root = v; return this;} DbMaprItm root; - public List_adp OwnerStack() {return ownerStack;} List_adp ownerStack = List_adp_.new_(); + public List_adp OwnerStack() {return ownerStack;} List_adp ownerStack = List_adp_.New(); public Ordered_hash ContextVars() {return contextVars;} Ordered_hash contextVars = Ordered_hash_.New(); - public List_adp MaprStack() {return maprStack;} List_adp maprStack = List_adp_.new_(); + public List_adp MaprStack() {return maprStack;} List_adp maprStack = List_adp_.New(); public void EnvStack_add(DbMaprItm mapr, SrlObj gobj) { for (Object argObj : mapr.ContextFlds()) { DbMaprArg arg = (DbMaprArg)argObj; - Object contextVal = GfoInvkAble_.InvkCmd((GfoInvkAble)gobj, arg.ObjProp()); + Object contextVal = Gfo_invk_.Invk_by_key((Gfo_invk)gobj, arg.ObjProp()); this.ContextVars().Add_if_dupe_use_nth(arg.DbFld(), contextVal); } this.OwnerStack().Add(gobj); @@ -36,8 +36,8 @@ public class DbMaprMgr { DbMaprArg arg = (DbMaprArg)argObj; this.ContextVars().Del(arg.DbFld()); } - List_adp_.DelAt_last(this.OwnerStack()); - List_adp_.DelAt_last(this.MaprStack()); + List_adp_.Del_at_last(this.OwnerStack()); + List_adp_.Del_at_last(this.MaprStack()); } public void Clear() { ownerStack.Clear(); diff --git a/140_dbs/src/gplx/core/stores/DbMaprRdr.java b/140_dbs/src/gplx/core/stores/DbMaprRdr.java index dfa861572..9e994292c 100644 --- a/140_dbs/src/gplx/core/stores/DbMaprRdr.java +++ b/140_dbs/src/gplx/core/stores/DbMaprRdr.java @@ -43,7 +43,7 @@ public class DbMaprRdr extends DataRdr_base implements SrlMgr { GfoNde subRow = tbl.Subs().FetchAt_asGfoNde(i); mgr.EnvStack_add(subMapr, sub); rowStack.Add(subRow); sub.SrlObj_Srl(this); list.Add(sub); - mgr.EnvStack_del(subMapr, sub); List_adp_.DelAt_last(rowStack); + mgr.EnvStack_del(subMapr, sub); List_adp_.Del_at_last(rowStack); } } Criteria MakeCrt(DbMaprMgr mgr, DbMaprItm mapr) { @@ -57,14 +57,14 @@ public class DbMaprRdr extends DataRdr_base implements SrlMgr { return rv; } List_adp GetIdxFlds(DbMaprMgr mgr, DbMaprItm curMapr) { - List_adp rv = List_adp_.new_(); + List_adp rv = List_adp_.New(); int maprStackCount = mgr.MaprStack().Count() - 0; // -1 b/c current is added to stack for (int i = 0; i < maprStackCount; i ++) { DbMaprItm mapr = (DbMaprItm)mgr.MaprStack().Get_at(i); SrlObj gobj = (SrlObj)mgr.OwnerStack().Get_at(i); for (Object argObj : mapr.ContextFlds()) { DbMaprArg arg = (DbMaprArg)argObj; - Object propVal = GfoInvkAble_.InvkCmd((GfoInvkAble)gobj, arg.ObjProp()); + Object propVal = Gfo_invk_.Invk_by_key((Gfo_invk)gobj, arg.ObjProp()); rv.Add(Keyval_.new_(arg.DbFld(), propVal)); } } @@ -111,9 +111,9 @@ public class DbMaprRdr extends DataRdr_base implements SrlMgr { @Override public Object ReadAt(int i) {throw Err_.new_unimplemented();} @Override public Keyval KeyValAt(int i) {throw Err_.new_unimplemented();} @Override public SrlMgr SrlMgr_new(Object o) {return new DbMaprRdr();} - Hash_adp tables = Hash_adp_.new_(); + Hash_adp tables = Hash_adp_.New(); Db_conn conn; Criteria rootCrt; - DbMaprMgr mgr; List_adp rowStack = List_adp_.new_(); + DbMaprMgr mgr; List_adp rowStack = List_adp_.New(); public static DbMaprRdr new_(Db_conn_info dbInfo, Criteria rootCrt) { DbMaprRdr rv = new DbMaprRdr(); rv.conn = Db_conn_pool.Instance.Get_or_new(dbInfo); rv.rootCrt = rootCrt; diff --git a/140_dbs/src/gplx/core/stores/DbMaprWtr.java b/140_dbs/src/gplx/core/stores/DbMaprWtr.java index fe366335b..3ba1dcb67 100644 --- a/140_dbs/src/gplx/core/stores/DbMaprWtr.java +++ b/140_dbs/src/gplx/core/stores/DbMaprWtr.java @@ -51,7 +51,7 @@ public class DbMaprWtr extends DataWtr_base implements DataWtr { SrlObj gobj = (SrlObj)mgr.OwnerStack().Get_at(i); for (Object argObj : mapr.ContextFlds()) { DbMaprArg arg = (DbMaprArg)argObj; - Object argVal = GfoInvkAble_.InvkCmd((GfoInvkAble)gobj, arg.ObjProp()); + Object argVal = Gfo_invk_.Invk_by_key((Gfo_invk)gobj, arg.ObjProp()); this.WriteDataVal(arg.DbFld(), argVal); } } @@ -89,7 +89,7 @@ public class DbMaprWtr extends DataWtr_base implements DataWtr { rv.conn = Db_conn_pool.Instance.Get_or_new(url); return rv; } DbMaprWtr() {} - public static final String Key_Mgr = "DbMapr.mgr"; + public static final String Key_Mgr = "DbMapr.mgr"; } class DbMaprWtrUtl { public static void PurgeObjTree(SrlObj root, DbMaprMgr mgr, Db_conn conn) { @@ -99,7 +99,7 @@ class DbMaprWtrUtl { static Criteria MakeCriteria(SrlObj root, DbMaprArg[] objRootIdxFlds) { Criteria rv = null; for (DbMaprArg arg : objRootIdxFlds) { - Object argVal = GfoInvkAble_.InvkCmd((GfoInvkAble)root, arg.ObjProp()); + Object argVal = Gfo_invk_.Invk_by_key((Gfo_invk)root, arg.ObjProp()); Criteria cur = Db_crt_.New_eq(arg.DbFld(), argVal); rv = (rv == null) ? cur : Criteria_.And(rv, cur); } diff --git a/140_dbs/src/gplx/core/stores/Db_data_rdr.java b/140_dbs/src/gplx/core/stores/Db_data_rdr.java index 526ef73c2..6d870cc15 100644 --- a/140_dbs/src/gplx/core/stores/Db_data_rdr.java +++ b/140_dbs/src/gplx/core/stores/Db_data_rdr.java @@ -51,12 +51,12 @@ public class Db_data_rdr extends DataRdr_base implements DataRdr { return DateAdp_.dateTime_(g); } @Override public Decimal_adp ReadDecimal(String key) {return Decimal_adp_.db_(this.Read(key));} - @Override public gplx.core.ios.Io_stream_rdr ReadRdr(String key) { + @Override public gplx.core.ios.streams.Io_stream_rdr ReadRdr(String key) { try { java.io.InputStream input_stream = rdr.getBinaryStream(key); - return gplx.core.ios.Io_stream_rdr_.file_(input_stream); + return gplx.core.ios.streams.Io_stream_rdr_.file_(input_stream); } - catch (SQLException e) {return gplx.core.ios.Io_stream_rdr_.Noop;} + catch (SQLException e) {return gplx.core.ios.streams.Io_stream_rdr_.Noop;} } public boolean MoveNextPeer() { diff --git a/140_dbs/src/gplx/core/stores/MockDiscObj.java b/140_dbs/src/gplx/core/stores/MockDiscObj.java index 529e1d67a..734a651b0 100644 --- a/140_dbs/src/gplx/core/stores/MockDiscObj.java +++ b/140_dbs/src/gplx/core/stores/MockDiscObj.java @@ -16,17 +16,17 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.core.stores; import gplx.*; import gplx.core.*; -class MockDisc implements SrlObj, GfoInvkAble { - public int Id() {return id;} public MockDisc Id_(int val) {id = val; return this;} int id; public static final String id_idk = "id"; - public String Name() {return name;} public MockDisc Name_(String val) {name = val; return this;} private String name; public static final String name_idk = "name"; - public List_adp Titles() {return titles;} List_adp titles = List_adp_.new_(); public static final String titles_idk = "titles"; - public static final MockDisc Instance = new MockDisc(); MockDisc() {} +class MockDisc implements SrlObj, Gfo_invk { + public int Id() {return id;} public MockDisc Id_(int val) {id = val; return this;} int id; public static final String id_idk = "id"; + public String Name() {return name;} public MockDisc Name_(String val) {name = val; return this;} private String name; public static final String name_idk = "name"; + public List_adp Titles() {return titles;} List_adp titles = List_adp_.New(); public static final String titles_idk = "titles"; + public static final MockDisc Instance = new MockDisc(); MockDisc() {} public SrlObj SrlObj_New(Object o) {return new MockDisc();} public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, id_idk)) return Id(); else if (ctx.Match(k, name_idk)) return Name(); else if (ctx.Match(k, titles_idk)) return Titles(); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; } // public Object Srl_new(GfsCtx ctx) {return new MockDisc();} // public void Srl(GfsCtx ctx, int ikey, String k, GfoMsg m) { @@ -49,18 +49,18 @@ class MockDisc implements SrlObj, GfoInvkAble { return rv; } } -class MockTitle implements SrlObj, GfoInvkAble { - public int Id() {return id;} public MockTitle Id_(int val) {id = val; return this;} int id; public static final String id_idk = "id"; - public String Name() {return name;} public MockTitle Name_(String val) {name = val; return this;} private String name; public static final String name_idk = "name"; - public List_adp Chapters() {return chapters;} List_adp chapters = List_adp_.new_(); public static final String chapters_idk = "chapters"; - public List_adp Audios() {return audios;} List_adp audios = List_adp_.new_(); public static final String audios_idk = "audios"; - public List_adp Subtitles() {return subtitles;} List_adp subtitles = List_adp_.new_(); public static final String subtitles_idk = "subtitles"; +class MockTitle implements SrlObj, Gfo_invk { + public int Id() {return id;} public MockTitle Id_(int val) {id = val; return this;} int id; public static final String id_idk = "id"; + public String Name() {return name;} public MockTitle Name_(String val) {name = val; return this;} private String name; public static final String name_idk = "name"; + public List_adp Chapters() {return chapters;} List_adp chapters = List_adp_.New(); public static final String chapters_idk = "chapters"; + public List_adp Audios() {return audios;} List_adp audios = List_adp_.New(); public static final String audios_idk = "audios"; + public List_adp Subtitles() {return subtitles;} List_adp subtitles = List_adp_.New(); public static final String subtitles_idk = "subtitles"; public MockTitle Disc_(MockDisc disc) {disc.Titles().Add(this); return this;} public static MockTitle new_() { MockTitle rv = new MockTitle(); return rv; } - public static final MockTitle Instance = new MockTitle(); MockTitle() {} + public static final MockTitle Instance = new MockTitle(); MockTitle() {} public SrlObj SrlObj_New(Object o) {return new MockTitle();} public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, id_idk)) return Id(); @@ -68,7 +68,7 @@ class MockTitle implements SrlObj, GfoInvkAble { else if (ctx.Match(k, chapters_idk)) return Chapters(); else if (ctx.Match(k, audios_idk)) return Audios(); else if (ctx.Match(k, subtitles_idk)) return Subtitles(); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; } // public void Srl(GfsCtx ctx, int ikey, String k, GfoMsg m) { // id = m.ReadIntOr(id_idk, id); @@ -88,11 +88,11 @@ class MockTitle implements SrlObj, GfoInvkAble { mgr.SrlList(subtitles_idk, subtitles, MockStream.Instance, "subtitle"); } } -class MockChapter implements SrlObj, GfoInvkAble { - public int Id() {return id;} public MockChapter Id_(int val) {id = val; return this;} int id; public static final String id_idk = "id"; - public String Name() {return name;} public MockChapter Name_(String val) {name = val; return this;} private String name; public static final String name_idk = "name"; +class MockChapter implements SrlObj, Gfo_invk { + public int Id() {return id;} public MockChapter Id_(int val) {id = val; return this;} int id; public static final String id_idk = "id"; + public String Name() {return name;} public MockChapter Name_(String val) {name = val; return this;} private String name; public static final String name_idk = "name"; public MockChapter Title_(MockTitle title) {title.Chapters().Add(this); return this;} - public static final MockChapter Instance = new MockChapter(); MockChapter() {} + public static final MockChapter Instance = new MockChapter(); MockChapter() {} public static MockChapter new_() { MockChapter rv = new MockChapter(); return rv; @@ -101,18 +101,18 @@ class MockChapter implements SrlObj, GfoInvkAble { public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, id_idk)) return Id(); else if (ctx.Match(k, name_idk)) return Name(); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; } public void SrlObj_Srl(SrlMgr mgr) { id = mgr.SrlIntOr(id_idk, id); name = mgr.SrlStrOr(name_idk, name); } } -class MockStream implements SrlObj, GfoInvkAble { - public int Id() {return id;} public MockStream Id_(int val) {id = val; return this;} int id; public static final String id_idk = "id"; - public String Name() {return name;} public MockStream Name_(String val) {name = val; return this;} private String name; public static final String name_idk = "name"; +class MockStream implements SrlObj, Gfo_invk { + public int Id() {return id;} public MockStream Id_(int val) {id = val; return this;} int id; public static final String id_idk = "id"; + public String Name() {return name;} public MockStream Name_(String val) {name = val; return this;} private String name; public static final String name_idk = "name"; public MockStream Title_(List_adp list) {list.Add(this); return this;} - public static final MockStream Instance = new MockStream(); MockStream() {} + public static final MockStream Instance = new MockStream(); MockStream() {} public static MockStream new_() { MockStream rv = new MockStream(); return rv; @@ -121,7 +121,7 @@ class MockStream implements SrlObj, GfoInvkAble { public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, id_idk)) return Id(); else if (ctx.Match(k, name_idk)) return Name(); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; } public void SrlObj_Srl(SrlMgr mgr) { id = mgr.SrlIntOr(id_idk, id); diff --git a/140_dbs/src/gplx/dbs/Db_attach_mgr.java b/140_dbs/src/gplx/dbs/Db_attach_mgr.java index a8188ebd0..134a8603e 100644 --- a/140_dbs/src/gplx/dbs/Db_attach_mgr.java +++ b/140_dbs/src/gplx/dbs/Db_attach_mgr.java @@ -18,64 +18,54 @@ along with this program. If not, see . package gplx.dbs; import gplx.*; import gplx.dbs.sqls.*; import gplx.dbs.sqls.itms.*; public class Db_attach_mgr { - private final Ordered_hash hash = Ordered_hash_.New(); - public final List_adp attached_dbs_list = List_adp_.new_(); - public String Attached_sql() {return attached_sql;} private String attached_sql; // TEST private Db_conn main_conn; private Io_url main_conn_url; + private final Ordered_hash others_hash = Ordered_hash_.New(); + private final List_adp attach_list = List_adp_.New(); public Db_attach_mgr() {} - public Db_attach_mgr(Db_conn main_conn, Db_attach_itm... itms_ary) { - this.Main_conn_(main_conn); - this.Init(itms_ary); + public Db_attach_mgr(Db_conn main_conn, Db_attach_itm... others_ary) { + this.Conn_main_(main_conn); + this.Conn_others_(others_ary); } - public Db_attach_mgr Init(Db_attach_itm... itms_ary) { - hash.Clear(); - int itms_len = itms_ary.length; - for (int i = 0; i < itms_len; ++i) { - Db_attach_itm itm = itms_ary[i]; - hash.Add(itm.Key, itm); - } - return this; - } - public Db_attach_mgr Main_conn_(Db_conn conn) { + public Db_attach_mgr Conn_main_(Db_conn conn) { this.main_conn = conn; this.main_conn_url = Db_conn_info_.To_url(conn.Conn_info()); return this; } - public void Attach() { - int len = attached_dbs_list.Len(); + public Db_attach_mgr Conn_others_(Db_attach_itm... itms_ary) { + others_hash.Clear(); + int len = itms_ary.length; for (int i = 0; i < len; ++i) { - Db_attach_itm itm = (Db_attach_itm)attached_dbs_list.Get_at(i); + Db_attach_itm itm = itms_ary[i]; + others_hash.Add(itm.Key, itm); + } + return this; + } + public void Attach() { + int len = attach_list.Len(); + for (int i = 0; i < len; ++i) { + Db_attach_itm itm = (Db_attach_itm)attach_list.Get_at(i); main_conn.Env_db_attach(itm.Key, itm.Url); } } public void Detach() { - int len = attached_dbs_list.Len(); + int len = attach_list.Len(); for (int i = 0; i < len; ++i) { - Db_attach_itm itm = (Db_attach_itm)attached_dbs_list.Get_at(i); + Db_attach_itm itm = (Db_attach_itm)attach_list.Get_at(i); main_conn.Env_db_detach(itm.Key); } - attached_dbs_list.Clear(); // clear list so multiple detachs don't fail - } - public String List__to_str() { - String rv = ""; - int len = attached_dbs_list.Len(); - for (int i = 0; i < len; ++i) { - Db_attach_itm itm = (Db_attach_itm)attached_dbs_list.Get_at(i); - rv += itm.Key + ";"; - } - return rv; + attach_list.Clear(); // clear list so multiple detachs don't fail } public String Resolve_sql(String sql) { - attached_dbs_list.Clear(); - int hash_len = hash.Count(); + attach_list.Clear(); + int hash_len = others_hash.Count(); for (int i = 0; i < hash_len; ++i) { - Db_attach_itm attach_itm = (Db_attach_itm)hash.Get_at(i); + Db_attach_itm attach_itm = (Db_attach_itm)others_hash.Get_at(i); String tkn = "<" + attach_itm.Key + ">"; if (String_.Has(sql, tkn)) { Io_url attach_url = attach_itm.Url; String repl = ""; if (!attach_url.Eq(main_conn_url)) { repl = attach_itm.Key + "."; - attached_dbs_list.Add(attach_itm); + attach_list.Add(attach_itm); } sql = String_.Replace(sql, tkn, repl); } @@ -83,29 +73,6 @@ public class Db_attach_mgr { attached_sql = sql; return sql; } - public Db_stmt Make_stmt_and_attach(Db_qry qry, gplx.dbs.sqls.itms.Sql_from_clause from_itm) { - attached_dbs_list.Clear(); - Sql_qry_wtr sql_wtr = main_conn.Engine().Sql_wtr(); - List_adp from_tbls = from_itm.Tbls; - int from_tbls_len = from_tbls.Count(); - for (int i = 0; i < from_tbls_len; ++i) { - Sql_tbl_itm from_tbl = (Sql_tbl_itm)from_tbls.Get_at(i); - String from_tbl_db = from_tbl.Db; - if (String_.Eq(Sql_tbl_itm.Db__null, from_tbl_db)) continue; // tbl does not have db defined; only "tbl" not "db.tbl"; skip - Db_attach_itm attach_itm = (Db_attach_itm)hash.Get_by(from_tbl_db); if (attach_itm == null) throw Err_.new_("dbs", "qry defines an unknown database for attach_wkr", "from_tbl_db", from_tbl_db, "sql", qry.To_sql__exec(sql_wtr)); - if (attach_itm.Url.Eq(main_conn_url)) // attach_db same as conn; blank db, so "tbl", not "db.tbl" - from_tbl.Db_enabled = false; - else - attached_dbs_list.Add(attach_itm); - } - attached_sql = sql_wtr.To_sql_str(qry, true); - this.Attach(); - for (int i = 0; i < from_tbls_len; ++i) { // reverse blanking from above - Sql_tbl_itm from_tbl = (Sql_tbl_itm)from_tbls.Get_at(i); - from_tbl.Db_enabled = true; - } - return main_conn.Stmt_sql(attached_sql); - } public Db_attach_mgr Exec_sql_w_msg(String msg, String sql, Object... args) { Gfo_usr_dlg_.Instance.Plog_many("", "", msg); Exec_sql(sql, args); @@ -118,4 +85,37 @@ public class Db_attach_mgr { finally {this.Detach();} return this; } + public String Test__attach_sql() {return attached_sql;} private String attached_sql; + public String[] Test__attach_list_keys() { + int rv_len = attach_list.Count(); + String[] rv = new String[rv_len]; + for (int i = 0; i < rv_len; ++i) { + Db_attach_itm itm = (Db_attach_itm)attach_list.Get_at(i); + rv[i] = itm.Key; + } + return rv; + } + public Db_stmt Test__make_stmt_and_attach(Db_qry qry, gplx.dbs.sqls.itms.Sql_from_clause from_itm) { // NOTE: tries to do attach via DOM not SQL + attach_list.Clear(); + Sql_qry_wtr sql_wtr = main_conn.Engine().Sql_wtr(); + List_adp from_tbls = from_itm.Tbls; + int from_tbls_len = from_tbls.Count(); + for (int i = 0; i < from_tbls_len; ++i) { + Sql_tbl_itm from_tbl = (Sql_tbl_itm)from_tbls.Get_at(i); + String from_tbl_db = from_tbl.Db; + if (String_.Eq(Sql_tbl_itm.Db__null, from_tbl_db)) continue; // tbl does not have db defined; only "tbl" not "db.tbl"; skip + Db_attach_itm attach_itm = (Db_attach_itm)others_hash.Get_by(from_tbl_db); if (attach_itm == null) throw Err_.new_("dbs", "qry defines an unknown database for attach_wkr", "from_tbl_db", from_tbl_db, "sql", qry.To_sql__exec(sql_wtr)); + if (attach_itm.Url.Eq(main_conn_url)) // attach_db same as conn; blank db, so "tbl", not "db.tbl" + from_tbl.Db_enabled = false; + else + attach_list.Add(attach_itm); + } + attached_sql = sql_wtr.To_sql_str(qry, true); + this.Attach(); + for (int i = 0; i < from_tbls_len; ++i) { // reverse blanking from above + Sql_tbl_itm from_tbl = (Sql_tbl_itm)from_tbls.Get_at(i); + from_tbl.Db_enabled = true; + } + return main_conn.Stmt_sql(attached_sql); + } } diff --git a/140_dbs/src/gplx/dbs/Db_attach_mgr__tst.java b/140_dbs/src/gplx/dbs/Db_attach_mgr__tst.java index 7e49830be..881bb81ba 100644 --- a/140_dbs/src/gplx/dbs/Db_attach_mgr__tst.java +++ b/140_dbs/src/gplx/dbs/Db_attach_mgr__tst.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.dbs; import gplx.*; -import org.junit.*; import gplx.dbs.qrys.*; +import org.junit.*; import gplx.core.tests.*; import gplx.dbs.qrys.*; public class Db_attach_mgr__tst { private final Db_attach_mgr__fxt fxt = new Db_attach_mgr__fxt(); @Test public void Basic() { @@ -29,7 +29,7 @@ public class Db_attach_mgr__tst { .Join_("db_3", "tbl_3", "t3", Db_qry_.New_join__same("t1", "fld_3")) .Join_( "tbl_4", "t4", Db_qry_.New_join__same("t1", "fld_4")) ; - fxt.Init("db_2", fxt.Make__itm("db_1"), fxt.Make__itm("db_2"), fxt.Make__itm("db_3")); + fxt.Init("db_2", fxt.Make__other("db_1"), fxt.Make__other("db_2"), fxt.Make__other("db_3")); fxt.Test__make_stmt_and_attach(qry , "SELECT t1.fld_1, t2.fld_2, t3.fld_3 " + "FROM db_1.tbl_1 t1 " @@ -45,24 +45,15 @@ class Db_attach_mgr__fxt { public Db_attach_mgr__fxt() { Db_conn_bldr.Instance.Reg_default_mem(); } - public Db_attach_itm Make__itm(String key) {return new Db_attach_itm(key, Io_url_.mem_fil_("mem/" + key));} public Db_conn Make__conn(String key) {return Db_conn_bldr.Instance.New(Io_url_.mem_fil_(key));} + public Db_attach_itm Make__other(String key) {return new Db_attach_itm(key, Io_url_.mem_fil_("mem/" + key));} public void Init(String conn_key, Db_attach_itm... ary) { Db_conn conn = Make__conn(conn_key); mgr = new Db_attach_mgr(conn, ary); } public void Test__make_stmt_and_attach(Db_qry__select_cmd qry, String expd_sql, String[] expd_dbs) { - mgr.Make_stmt_and_attach(qry, qry.From()); - Tfds.Eq_str(expd_sql, mgr.Attached_sql()); - Tfds.Eq_ary_str(expd_dbs, To_key_ary(mgr.attached_dbs_list)); - } - private static String[] To_key_ary(List_adp attach_dbs_list) { - int rv_len = attach_dbs_list.Count(); - String[] rv = new String[rv_len]; - for (int i = 0; i < rv_len; ++i) { - Db_attach_itm itm = (Db_attach_itm)attach_dbs_list.Get_at(i); - rv[i] = itm.Key; - } - return rv; + mgr.Test__make_stmt_and_attach(qry, qry.From()); + Gftest.Eq__str(expd_sql, mgr.Test__attach_sql()); + Gftest.Eq__ary(expd_dbs, mgr.Test__attach_list_keys()); } } diff --git a/140_dbs/src/gplx/dbs/Db_conn.java b/140_dbs/src/gplx/dbs/Db_conn.java index 339224ed8..ec4021839 100644 --- a/140_dbs/src/gplx/dbs/Db_conn.java +++ b/140_dbs/src/gplx/dbs/Db_conn.java @@ -18,10 +18,10 @@ along with this program. If not, see . package gplx.dbs; import gplx.*; import gplx.core.stores.*; import gplx.dbs.metas.*; import gplx.dbs.engines.*; import gplx.dbs.qrys.*; import gplx.dbs.sys.*; import gplx.dbs.conn_props.*; import gplx.dbs.qrys.bats.*; public class Db_conn { - private final List_adp rls_list = List_adp_.new_(); + private final List_adp rls_list = List_adp_.New(); public Db_conn(Db_engine engine) { this.engine = engine; - sys_mgr = new Db_sys_mgr(this); + this.sys_mgr = new Db_sys_mgr(this); } public Db_conn_info Conn_info() {return engine.Conn_info();} public Db_conn_props_mgr Props() {return engine.Props();} @@ -40,20 +40,51 @@ public class Db_conn { public void Meta_tbl_create(Dbmeta_tbl_itm meta) {engine.Meta_tbl_create(meta); engine.Meta_idx_create(Gfo_usr_dlg_.Noop, meta.Idxs().To_ary());} public void Meta_tbl_delete(String tbl) {engine.Meta_tbl_delete(tbl);} public void Meta_tbl_remake(Dbmeta_tbl_itm meta) {engine.Meta_tbl_delete(meta.Name()); engine.Meta_tbl_create(meta);} + public void Meta_idx_assert(String tbl, String suffix, String... flds) {if (engine.Meta_idx_exists(tbl + "__" + suffix)) return; this.Meta_idx_create(tbl, suffix, flds);} + public void Meta_idx_assert(String tbl, String suffix, Dbmeta_idx_fld... flds) {if (engine.Meta_idx_exists(tbl + "__" + suffix)) return; this.Meta_idx_create(tbl, suffix, flds);} + public void Meta_idx_create(String tbl, String suffix, String... flds) {engine.Meta_idx_create(Gfo_usr_dlg_.Instance, Dbmeta_idx_itm.new_normal_by_tbl(tbl, suffix, flds));} + public void Meta_idx_create(String tbl, String suffix, Dbmeta_idx_fld... flds) {engine.Meta_idx_create(Gfo_usr_dlg_.Instance, Dbmeta_idx_itm.new_normal_by_tbl(tbl, suffix, flds));} public void Meta_idx_create(Dbmeta_idx_itm... idxs) {engine.Meta_idx_create(Gfo_usr_dlg_.Instance, idxs);} - public void Meta_idx_delete(String idx) {engine.Meta_idx_delete(idx);} public void Meta_idx_create(Gfo_usr_dlg usr_dlg, Dbmeta_idx_itm... idxs) {engine.Meta_idx_create(usr_dlg, idxs);} + public void Meta_idx_delete(String idx) {engine.Meta_idx_delete(idx);} + public void Meta_idx_delete(String tbl, String suffix) {engine.Meta_idx_delete(tbl + "__" + suffix);} public void Meta_fld_append(String tbl, Dbmeta_fld_itm fld) {engine.Meta_fld_append(tbl, fld);} public void Meta_fld_assert(String tbl, String fld, Dbmeta_fld_tid tid, Object dflt) {if (!Meta_fld_exists(tbl, fld)) this.Meta_fld_append(tbl, new Dbmeta_fld_itm(fld, tid).Default_(dflt));} public boolean Meta_tbl_exists(String tbl) {return engine.Meta_tbl_exists(tbl);} public boolean Meta_fld_exists(String tbl, String fld) {return engine.Meta_fld_exists(tbl, fld);} public boolean Meta_idx_exists(String idx) {return engine.Meta_idx_exists(idx);} + public boolean Meta_idx_exists(String tbl, String suffix) {return engine.Meta_idx_exists(tbl + "__" + suffix);} + public void Meta_tbl_assert(Db_tbl... tbls) { + boolean dirty = false; + for (Db_tbl tbl : tbls) { + if (!Meta_tbl_exists(tbl.Tbl_name())) { + tbl.Create_tbl(); + dirty = true; + } + } + if (dirty) this.Meta_mgr().Load_all(); + } + public String Meta_fld_append_if_missing(String tbl_name, Dbmeta_fld_list flds, Dbmeta_fld_itm fld) { + String fld_name = fld.Name(); + if ( this.Meta_tbl_exists(tbl_name) + && !this.Meta_fld_exists(tbl_name, fld_name)) { + try {this.Meta_fld_append(tbl_name, fld);} + catch (Exception e) { + Gfo_log_.Instance.Warn("failed to append fld", "conn", this.Conn_info().Db_api(), "tbl", tbl_name, "fld", fld_name, "err", Err_.Message_gplx_log(e)); + fld_name = Dbmeta_fld_itm.Key_null; + } + } + else + fld_name = flds.Add(fld); + return fld_name; + } public Dbmeta_tbl_mgr Meta_mgr() {return engine.Meta_mgr();} public Db_stmt Stmt_insert(String tbl, Dbmeta_fld_list flds) {return engine.Stmt_by_qry(Db_qry_insert.new_(tbl, flds.To_str_ary_wo_autonum()));} public Db_stmt Stmt_insert(String tbl, String... cols) {return engine.Stmt_by_qry(Db_qry_insert.new_(tbl, cols));} public Db_stmt Stmt_update(String tbl, String[] where, String... cols) {return engine.Stmt_by_qry(Db_qry_update.New(tbl, where, cols));} public Db_stmt Stmt_update_exclude(String tbl, Dbmeta_fld_list flds, String... where) {return engine.Stmt_by_qry(Db_qry_update.New(tbl, where, flds.To_str_ary_exclude(where)));} public Db_stmt Stmt_delete(String tbl, String... where) {return engine.Stmt_by_qry(Db_qry_delete.new_(tbl, where));} + public Db_stmt Stmt_select_all(String tbl, Dbmeta_fld_list flds) {return engine.Stmt_by_qry(Db_qry__select_in_tbl.new_(tbl, String_.Ary_empty, flds.To_str_ary(), null));} public Db_stmt Stmt_select(String tbl, String[] cols, String... where) {return engine.Stmt_by_qry(Db_qry__select_in_tbl.new_(tbl, where, cols, null));} public Db_stmt Stmt_select(String tbl, Dbmeta_fld_list flds, String... where) {return engine.Stmt_by_qry(Db_qry__select_in_tbl.new_(tbl, where, flds.To_str_ary(), null));} public Db_stmt Stmt_select_order(String tbl, Dbmeta_fld_list flds, String[] where, String... orderbys) {return engine.Stmt_by_qry(Db_qry__select_in_tbl.new_(tbl, where, flds.To_str_ary(), orderbys));} @@ -85,7 +116,10 @@ public class Db_conn { try {return rdr.Move_next() ? rdr.Read_at(0) : null;} finally {rdr.Rls();} } - public void Rls_reg(Rls_able rls) {rls_list.Add(rls);} + public void Rls_reg(Rls_able rls) { + if (this == Db_conn_.Noop) return; // ignore Db_conn_.Noop, else memory leak + rls_list.Add(rls); + } public void Rls_conn() { int len = rls_list.Count(); for (int i = 0; i < len; ++i) { @@ -96,7 +130,10 @@ public class Db_conn { engine.Conn_term(); Db_conn_pool.Instance.Del(engine.Conn_info()); } - + public void Reopen_conn() { + engine.Conn_open(); + Db_conn_pool.Instance.Add_existing(this); + } public Db_stmt Stmt_select_max(String tbl, String col, String... where) { Db_qry__select_in_tbl qry = new Db_qry__select_in_tbl(tbl, String_.Ary(String_.Format("Max({0}) AS {0}", col)), where, null, null, null, null); return engine.Stmt_by_qry(qry); diff --git a/140_dbs/src/gplx/dbs/Db_conn_bldr_wkr.java b/140_dbs/src/gplx/dbs/Db_conn_bldr_wkr.java index bc6e851fb..c0292ee1c 100644 --- a/140_dbs/src/gplx/dbs/Db_conn_bldr_wkr.java +++ b/140_dbs/src/gplx/dbs/Db_conn_bldr_wkr.java @@ -42,7 +42,7 @@ class Db_conn_bldr_wkr__sqlite implements Db_conn_bldr_wkr { public static final Db_conn_bldr_wkr__sqlite Instance = new Db_conn_bldr_wkr__sqlite(); Db_conn_bldr_wkr__sqlite() {} } class Db_conn_bldr_wkr__mem implements Db_conn_bldr_wkr { - private final Hash_adp hash = Hash_adp_.new_(); + private final Hash_adp hash = Hash_adp_.New(); public void Clear_for_tests() {hash.Clear(); Db_conn_pool.Instance.Rls_all();} public boolean Exists(Io_url url) { String io_url_str = url.Xto_api(); diff --git a/140_dbs/src/gplx/dbs/Db_conn_info__base.java b/140_dbs/src/gplx/dbs/Db_conn_info__base.java index ac7d0022f..e91cea67b 100644 --- a/140_dbs/src/gplx/dbs/Db_conn_info__base.java +++ b/140_dbs/src/gplx/dbs/Db_conn_info__base.java @@ -19,13 +19,13 @@ package gplx.dbs; import gplx.*; public abstract class Db_conn_info__base implements Db_conn_info { public Db_conn_info__base(String raw, String db_api, String database) {this.raw = raw; this.db_api = db_api; this.database = database;} public abstract String Key(); - public String Raw() {return raw;} private final String raw; - public String Db_api() {return db_api;} private final String db_api; - public String Database() {return database;} protected final String database; + public String Raw() {return raw;} private final String raw; + public String Db_api() {return db_api;} private final String db_api; + public String Database() {return database;} protected final String database; public abstract Db_conn_info New_self(String raw, Keyval_hash hash); protected static String Bld_raw(String... ary) {// "a", "b" -> "a=b;" - Bry_bfr bfr = Bry_bfr.reset_(255); + Bry_bfr bfr = Bry_bfr_.Reset(255); int len = ary.length; for (int i = 0; i < len; ++i) { String itm = ary[i]; @@ -35,7 +35,7 @@ public abstract class Db_conn_info__base implements Db_conn_info { return bfr.To_str_and_clear(); } protected static String Bld_api(Keyval_hash hash, Keyval... xtn_ary) { - Bry_bfr bfr = Bry_bfr.new_(); + Bry_bfr bfr = Bry_bfr_.New(); int len = hash.Count(); for (int i = 0; i < len; ++i) { Keyval kv = hash.Get_at(i); diff --git a/140_dbs/src/gplx/dbs/Db_conn_pool.java b/140_dbs/src/gplx/dbs/Db_conn_pool.java index e8f398cf9..c5a50c74d 100644 --- a/140_dbs/src/gplx/dbs/Db_conn_pool.java +++ b/140_dbs/src/gplx/dbs/Db_conn_pool.java @@ -34,6 +34,9 @@ public class Db_conn_pool { // PURPOSE: cache one connection per connection_stri } return rv; } + public void Add_existing(Db_conn conn) { + hash.Add(conn.Conn_info().Db_api(), conn); + } public void Rls_all() { int len = hash.Len(); Db_conn[] rls_ary = new Db_conn[len]; @@ -44,7 +47,7 @@ public class Db_conn_pool { // PURPOSE: cache one connection per connection_stri hash.Clear(); } - private final Hash_adp prime_hash = Hash_adp_.new_(); + private final Hash_adp prime_hash = Hash_adp_.New(); public static final Db_conn_pool Instance = new Db_conn_pool(); Db_conn_pool() {this.Init();} public void Primes__add(Db_engine... ary) { // PUBLIC.DRD: for (Db_engine itm : ary) diff --git a/140_dbs/src/gplx/dbs/Db_conn_utl.java b/140_dbs/src/gplx/dbs/Db_conn_utl.java index 2e94d311c..50d5c4f21 100644 --- a/140_dbs/src/gplx/dbs/Db_conn_utl.java +++ b/140_dbs/src/gplx/dbs/Db_conn_utl.java @@ -61,7 +61,7 @@ public class Db_conn_utl { } } public static Object[][] Select(Db_conn conn, Db_qry qry) { - List_adp rv = List_adp_.new_(); + List_adp rv = List_adp_.New(); Db_rdr rdr = conn.Stmt_new(qry).Exec_select__rls_auto(); try { while (rdr.Move_next()) { diff --git a/140_dbs/src/gplx/dbs/Db_sql_select.java b/140_dbs/src/gplx/dbs/Db_sql_select.java index 905b14b7d..6f6f6d6a7 100644 --- a/140_dbs/src/gplx/dbs/Db_sql_select.java +++ b/140_dbs/src/gplx/dbs/Db_sql_select.java @@ -22,7 +22,7 @@ interface Db_sql_qry { } class Db_sql_qry__select { public Db_sql_qry__select(String from) {this.from = from;} - public String From() {return from;} private final String from; + public String From() {return from;} private final String from; public Db_sql_col[] Select() {return select;} private Db_sql_col[] select; // public Criteria Where() {return where;} private Criteria where; // public Db_sql_col[] Group_bys() {return group_bys;} private Db_sql_col[] group_bys; @@ -51,7 +51,7 @@ class Db_sql_col_ { public static Db_sql_col[] Ary(Db_sql_col... v) {return v;} } class Db_sql_col_bldr { - private final List_adp tmp_list = List_adp_.new_(); + private final List_adp tmp_list = List_adp_.New(); public Db_sql_col[] new_fld_many(String[] ary) { tmp_list.Clear(); int ord = -1; @@ -63,16 +63,16 @@ class Db_sql_col_bldr { } return (Db_sql_col[])tmp_list.To_ary_and_clear(Db_sql_col.class); } - public static final Db_sql_col_bldr Instance = new Db_sql_col_bldr(); Db_sql_col_bldr() {} + public static final Db_sql_col_bldr Instance = new Db_sql_col_bldr(); Db_sql_col_bldr() {} } class Db_sql_col__name { public Db_sql_col__name(int ord, String key) {this.ord = ord; this.key = key;} - public int Ord() {return ord;} private final int ord; - public String Key() {return key;} private final String key; + public int Ord() {return ord;} private final int ord; + public String Key() {return key;} private final String key; } class Db_sql_col__all implements Db_sql_col { public Db_sql_col__all(int ord, String tbl) {this.ord = ord; this.tbl = tbl;} - public int Ord() {return ord;} private final int ord; - public String Tbl() {return tbl;} private final String tbl; + public int Ord() {return ord;} private final int ord; + public String Tbl() {return tbl;} private final String tbl; public String Alias() {return "*";} } diff --git a/140_dbs/src/gplx/dbs/Db_stmt.java b/140_dbs/src/gplx/dbs/Db_stmt.java index 3cd872548..2cd90973c 100644 --- a/140_dbs/src/gplx/dbs/Db_stmt.java +++ b/140_dbs/src/gplx/dbs/Db_stmt.java @@ -49,19 +49,19 @@ public interface Db_stmt extends Rls_able { Db_stmt Crt_bry_as_str(String k, byte[] v); Db_stmt Val_bry_as_str(String k, byte[] v); Db_stmt Val_bry_as_str(byte[] v); - Db_stmt Val_rdr_(gplx.core.ios.Io_stream_rdr rdr, long rdr_len); + Db_stmt Val_rdr_(gplx.core.ios.streams.Io_stream_rdr rdr, long rdr_len); Db_stmt Crt_date(String k, DateAdp v); Db_stmt Val_date(String k, DateAdp v); Db_stmt Crt_text(String k, String v); Db_stmt Val_text(String k, String v); - boolean Exec_insert(); - int Exec_update(); - int Exec_delete(); - DataRdr Exec_select(); - Db_rdr Exec_select__rls_auto(); // stmt is automatically released - Db_rdr Exec_select__rls_manual(); // stmt must be released manually; for "batch" insert - Object Exec_select_val(); - void Ctor_stmt(Db_engine engine, Db_qry qry); - Db_stmt Clear(); - Db_stmt Reset_stmt(); + boolean Exec_insert(); + int Exec_update(); + int Exec_delete(); + DataRdr Exec_select(); + Db_rdr Exec_select__rls_auto(); // stmt is automatically released + Db_rdr Exec_select__rls_manual(); // stmt must be released manually; for "batch" insert + Object Exec_select_val(); + void Ctor_stmt(Db_engine engine, Db_qry qry); + Db_stmt Clear(); + Db_stmt Reset_stmt(); } diff --git a/140_dbs/src/gplx/dbs/Db_tbl.java b/140_dbs/src/gplx/dbs/Db_tbl.java index 881e5066c..3c64c15c0 100644 --- a/140_dbs/src/gplx/dbs/Db_tbl.java +++ b/140_dbs/src/gplx/dbs/Db_tbl.java @@ -17,5 +17,6 @@ along with this program. If not, see . */ package gplx.dbs; import gplx.*; public interface Db_tbl extends Rls_able { - void Create_tbl(); + String Tbl_name(); + void Create_tbl(); } diff --git a/140_dbs/src/gplx/dbs/Dbmeta_fld_itm.java b/140_dbs/src/gplx/dbs/Dbmeta_fld_itm.java index ddcdb65bb..d16ffd7cd 100644 --- a/140_dbs/src/gplx/dbs/Dbmeta_fld_itm.java +++ b/140_dbs/src/gplx/dbs/Dbmeta_fld_itm.java @@ -26,7 +26,7 @@ public class Dbmeta_fld_itm { public Dbmeta_fld_tid Type() {return type;} private final Dbmeta_fld_tid type; public int Nullable_tid() {return nullable_tid;} public Dbmeta_fld_itm Nullable_tid_(int v) {nullable_tid = v; return this;} private int nullable_tid; public Dbmeta_fld_itm Nullable_y_() {return Nullable_tid_(Nullable_null);} - public boolean Primary() {return primary;} public Dbmeta_fld_itm Primary_y_() {primary = true; return this;} private boolean primary; + public boolean Primary() {return primary;} public Dbmeta_fld_itm Primary_y_() {primary = true; return this;} private boolean primary; public Dbmeta_fld_itm Primary_n_() {primary = false; return this;} public boolean Autonum() {return autonum;} public Dbmeta_fld_itm Autonum_y_() {autonum = true; return this;} private boolean autonum; public Object Default() {return default_val;} public Dbmeta_fld_itm Default_(Object v) {default_val = v; return this;} private Object default_val; public boolean Eq(Dbmeta_fld_itm comp) { diff --git a/140_dbs/src/gplx/dbs/Dbmeta_fld_list.java b/140_dbs/src/gplx/dbs/Dbmeta_fld_list.java index c0fa2227b..1a86b199e 100644 --- a/140_dbs/src/gplx/dbs/Dbmeta_fld_list.java +++ b/140_dbs/src/gplx/dbs/Dbmeta_fld_list.java @@ -17,42 +17,12 @@ along with this program. If not, see . */ package gplx.dbs; import gplx.*; public class Dbmeta_fld_list { - private final Ordered_hash flds = Ordered_hash_.New(); - private final List_adp keys = List_adp_.new_(); - public void Clear() {flds.Clear(); keys.Clear(); str_ary = null; fld_ary = null;} - public int Len() {return flds.Len();} - public Dbmeta_fld_itm Get_by(String name) {return (Dbmeta_fld_itm)flds.Get_by(name);} - public Dbmeta_fld_itm Get_at(int idx) {return (Dbmeta_fld_itm)flds.Get_at(idx);} - public String[] To_str_ary() {if (str_ary == null) str_ary = (String[])keys.To_ary(String.class); return str_ary;} private String[] str_ary; - public Dbmeta_fld_itm[] To_fld_ary() {if (fld_ary == null) fld_ary = (Dbmeta_fld_itm[])flds.To_ary(Dbmeta_fld_itm.class); return fld_ary;} private Dbmeta_fld_itm[] fld_ary; - public String[] To_str_ary_wo_autonum() { - int len = flds.Count(); - List_adp rv = List_adp_.new_(); - for (int i = 0; i < len; ++i) { - Dbmeta_fld_itm fld = (Dbmeta_fld_itm)flds.Get_at(i); - if (fld.Autonum()) continue; - rv.Add(fld.Name()); - } - return (String[])rv.To_ary(String.class); - } - public String[] To_str_ary_exclude(String[] ary) { - Hash_adp ary_hash = Hash_adp_.new_(); - List_adp rv = List_adp_.new_(); - int ary_len = ary.length; - for (int i = 0; i < ary_len; ++i) { - String ary_itm = ary[i]; - ary_hash.Add(ary_itm, ary_itm); - } - int fld_len = flds.Count(); - for (int i = 0; i < fld_len; ++i) { - Dbmeta_fld_itm fld = (Dbmeta_fld_itm)flds.Get_at(i); - String fld_key = fld.Name(); - if (ary_hash.Has(fld_key)) continue; - rv.Add(fld_key); - } - return rv.To_str_ary(); - } + private final Ordered_hash flds = Ordered_hash_.New(); + public void Clear() {flds.Clear(); str_ary = null; fld_ary = null;} + public int Len() {return flds.Len();} public boolean Has(String key) {return flds.Has(key);} + public Dbmeta_fld_itm Get_by(String name) {return (Dbmeta_fld_itm)flds.Get_by(name);} + public Dbmeta_fld_itm Get_at(int idx) {return (Dbmeta_fld_itm)flds.Get_at(idx);} public String Add_bool(String name) {return Add(Dbmeta_fld_itm.new_bool(name));} public String Add_byte(String name) {return Add(Dbmeta_fld_itm.new_byte(name));} public String Add_short(String name) {return Add(Dbmeta_fld_itm.new_short(name));} @@ -76,8 +46,63 @@ public class Dbmeta_fld_list { fld_ary = null; str_ary = null; String name = fld.Name(); flds.Add(name, fld); - keys.Add(name); return name; } - public static Dbmeta_fld_list new_() {return new Dbmeta_fld_list();} + public void Del(String key) { + fld_ary = null; str_ary = null; + flds.Del(key); + } + public void Insert(int pos, Dbmeta_fld_itm fld) { + fld_ary = null; str_ary = null; + flds.Add_at(pos, fld); + } + + public Dbmeta_fld_list New_int(String name) {Add(Dbmeta_fld_itm.new_int(name)); return this;} + public Dbmeta_fld_list New_fld(Dbmeta_fld_itm fld) {Add(fld); return this;} + public Dbmeta_fld_list Clone() { + Dbmeta_fld_list rv = new Dbmeta_fld_list(); + int len = this.Len(); + for (int i = 0; i < len; ++i) + rv.Add(this.Get_at(i)); + return rv; + } + public Dbmeta_fld_itm[] To_fld_ary() {if (fld_ary == null) fld_ary = (Dbmeta_fld_itm[])flds.To_ary(Dbmeta_fld_itm.class); return fld_ary;} private Dbmeta_fld_itm[] fld_ary; + public String[] To_str_ary() { + if (str_ary == null) { + int len = flds.Len(); + this.str_ary = new String[len]; + for (int i = 0; i < len; ++i) { + Dbmeta_fld_itm fld = (Dbmeta_fld_itm)flds.Get_at(i); + str_ary[i] = fld.Name(); + } + } + return str_ary; + } private String[] str_ary; + public String[] To_str_ary_wo_autonum() { + int len = flds.Count(); + List_adp rv = List_adp_.New(); + for (int i = 0; i < len; ++i) { + Dbmeta_fld_itm fld = (Dbmeta_fld_itm)flds.Get_at(i); + if (fld.Autonum()) continue; + rv.Add(fld.Name()); + } + return (String[])rv.To_ary(String.class); + } + public String[] To_str_ary_exclude(String[] ary) { + Hash_adp ary_hash = Hash_adp_.New(); + List_adp rv = List_adp_.New(); + int ary_len = ary.length; + for (int i = 0; i < ary_len; ++i) { + String ary_itm = ary[i]; + ary_hash.Add(ary_itm, ary_itm); + } + int fld_len = flds.Count(); + for (int i = 0; i < fld_len; ++i) { + Dbmeta_fld_itm fld = (Dbmeta_fld_itm)flds.Get_at(i); + String fld_key = fld.Name(); + if (ary_hash.Has(fld_key)) continue; + rv.Add(fld_key); + } + return rv.To_str_ary(); + } } diff --git a/140_dbs/src/gplx/dbs/Dbmeta_idx_itm.java b/140_dbs/src/gplx/dbs/Dbmeta_idx_itm.java index aa066abc4..ff8df8733 100644 --- a/140_dbs/src/gplx/dbs/Dbmeta_idx_itm.java +++ b/140_dbs/src/gplx/dbs/Dbmeta_idx_itm.java @@ -21,10 +21,10 @@ public class Dbmeta_idx_itm { public Dbmeta_idx_itm(boolean unique, String tbl, String name, Dbmeta_idx_fld[] flds) { this.tbl = tbl; this.name = name; this.unique = unique; this.Flds = flds; } - public String Tbl() {return tbl;} private final String tbl; - public String Name() {return name;} private final String name; - public boolean Unique() {return unique;} private final boolean unique; - public final Dbmeta_idx_fld[] Flds; + public String Tbl() {return tbl;} private final String tbl; + public String Name() {return name;} private final String name; + public boolean Unique() {return unique;} private final boolean unique; + public final Dbmeta_idx_fld[] Flds; public String To_sql_create(Sql_qry_wtr sql_wtr) {return sql_wtr.Schema_wtr().Bld_create_idx(this);} public boolean Eq(Dbmeta_idx_itm comp) { return String_.Eq(name, comp.name) @@ -32,21 +32,22 @@ public class Dbmeta_idx_itm { && tbl == comp.tbl && Dbmeta_idx_fld.Ary_eq(Flds, comp.Flds); } - public static Dbmeta_idx_itm new_unique_by_name (String tbl, String name, String... flds) {return new Dbmeta_idx_itm(Bool_.Y, tbl, name, To_fld_ary(flds));} + public static Dbmeta_idx_itm new_unique_by_name (String tbl, String name, String... flds) {return new Dbmeta_idx_itm(Bool_.Y, tbl, name, To_fld_ary(flds));} + public static Dbmeta_idx_itm new_normal_by_name (String tbl, String name, Dbmeta_idx_fld... flds) {return new Dbmeta_idx_itm(Bool_.N, tbl, name, flds);} public static Dbmeta_idx_itm new_normal_by_name (String tbl, String name, String... flds) {return new Dbmeta_idx_itm(Bool_.N, tbl, name, To_fld_ary(flds));} public static Dbmeta_idx_itm new_unique_by_tbl (String tbl, String name, String... flds) {return new Dbmeta_idx_itm(Bool_.Y, tbl, Bld_idx_name(tbl, name), To_fld_ary(flds));} + public static Dbmeta_idx_itm new_normal_by_tbl (String tbl, String name, Dbmeta_idx_fld... flds) {return new Dbmeta_idx_itm(Bool_.N, tbl, Bld_idx_name(tbl, name), flds);} public static Dbmeta_idx_itm new_normal_by_tbl (String tbl, String name, String... flds) {return new Dbmeta_idx_itm(Bool_.N, tbl, Bld_idx_name(tbl, name), To_fld_ary(flds));} public static Dbmeta_idx_itm new_unique_by_tbl_wo_null (String tbl, String name, String... flds) {return new Dbmeta_idx_itm(Bool_.Y, tbl, Bld_idx_name(tbl, name), To_fld_ary(flds));} public static Dbmeta_idx_itm new_normal_by_tbl_wo_null (String tbl, String name, String... flds) {return new Dbmeta_idx_itm(Bool_.N, tbl, Bld_idx_name(tbl, name), To_fld_ary(flds));} public static String Bld_idx_name(String tbl, String suffix) {return String_.Concat(tbl, "__", suffix);} - public static final Dbmeta_idx_itm[] Ary_empty = new Dbmeta_idx_itm[0]; + public static final Dbmeta_idx_itm[] Ary_empty = new Dbmeta_idx_itm[0]; public static Dbmeta_idx_fld[] To_fld_ary(String[] ary) { int len = ary.length; Dbmeta_idx_fld[] rv = new Dbmeta_idx_fld[len]; - int order = -1; for (int i = 0; i < len; ++i) { String itm = ary[i]; if (itm == null) continue; - rv[i] = new Dbmeta_idx_fld(++order, itm, Dbmeta_idx_fld.Sort_tid__none); + rv[i] = new Dbmeta_idx_fld(itm, Dbmeta_idx_fld.Sort_tid__none); } return rv; } diff --git a/140_dbs/src/gplx/dbs/diffs/Gfdb_rdr_utl_.java b/140_dbs/src/gplx/dbs/diffs/Gfdb_rdr_utl_.java index 5b8885007..c7e99e4cc 100644 --- a/140_dbs/src/gplx/dbs/diffs/Gfdb_rdr_utl_.java +++ b/140_dbs/src/gplx/dbs/diffs/Gfdb_rdr_utl_.java @@ -39,8 +39,8 @@ public class Gfdb_rdr_utl_ { } return CompareAble_.Same; } - public static void Stmt_args(Db_stmt stmt, Dbmeta_fld_itm[] flds, int len, Db_rdr rdr) { - for (int i = 0; i < len; ++i) { + public static void Stmt_args(Db_stmt stmt, Dbmeta_fld_itm[] flds, int bgn, int end, Db_rdr rdr) { + for (int i = bgn; i < end; ++i) { Dbmeta_fld_itm fld = flds[i]; String fld_name = fld.Name(); int tid = fld.Type().Tid_ansi(); @@ -57,4 +57,22 @@ public class Gfdb_rdr_utl_ { } } } + public static void Stmt_args(Db_stmt stmt, Dbmeta_fld_list flds, int bgn, int end, Db_rdr rdr) { + for (int i = bgn; i < end; ++i) { + Dbmeta_fld_itm fld = flds.Get_at(i); + String fld_name = fld.Name(); + int tid = fld.Type().Tid_ansi(); + switch (tid) { + case Dbmeta_fld_tid.Tid__bool: stmt.Val_bool_as_byte (fld_name, rdr.Read_bool_by_byte(fld_name)); break; + case Dbmeta_fld_tid.Tid__byte: stmt.Val_byte (fld_name, rdr.Read_byte(fld_name)); break; + case Dbmeta_fld_tid.Tid__int: stmt.Val_int (fld_name, rdr.Read_int(fld_name)); break; + case Dbmeta_fld_tid.Tid__long: stmt.Val_long (fld_name, rdr.Read_long(fld_name)); break; + case Dbmeta_fld_tid.Tid__float: stmt.Val_float (fld_name, rdr.Read_float(fld_name)); break; + case Dbmeta_fld_tid.Tid__double: stmt.Val_double (fld_name, rdr.Read_double(fld_name)); break; + case Dbmeta_fld_tid.Tid__str: stmt.Val_str (fld_name, rdr.Read_str(fld_name)); break; + case Dbmeta_fld_tid.Tid__bry: stmt.Val_bry (fld_name, rdr.Read_bry(fld_name)); break; + default: throw Err_.new_unhandled(tid); + } + } + } } diff --git a/140_dbs/src/gplx/dbs/diffs/builds/Gfdb_diff_bldr_tst.java b/140_dbs/src/gplx/dbs/diffs/builds/Gfdb_diff_bldr_tst.java index f0174d0e0..e9e0922bd 100644 --- a/140_dbs/src/gplx/dbs/diffs/builds/Gfdb_diff_bldr_tst.java +++ b/140_dbs/src/gplx/dbs/diffs/builds/Gfdb_diff_bldr_tst.java @@ -83,8 +83,8 @@ class Gfdb_diff_bldr_fxt { } } class Gfdb_diff_wkr__test implements Gfdb_diff_wkr { - private final List_adp list = List_adp_.new_(); - private final Bry_bfr bfr = Bry_bfr.new_(); + private final List_adp list = List_adp_.New(); + private final Bry_bfr bfr = Bry_bfr_.New(); private Db_rdr old_rdr, new_rdr; public void Init_rdrs(Gdif_bldr_ctx ctx, Gfdb_diff_tbl tbl, Db_rdr old_rdr, Db_rdr new_rdr) { this.old_rdr = old_rdr; this.new_rdr = new_rdr; diff --git a/140_dbs/src/gplx/dbs/diffs/builds/Gfdb_diff_wkr__db.java b/140_dbs/src/gplx/dbs/diffs/builds/Gfdb_diff_wkr__db.java index 57fb054b0..5060b6adb 100644 --- a/140_dbs/src/gplx/dbs/diffs/builds/Gfdb_diff_wkr__db.java +++ b/140_dbs/src/gplx/dbs/diffs/builds/Gfdb_diff_wkr__db.java @@ -57,7 +57,7 @@ public class Gfdb_diff_wkr__db implements Gfdb_diff_wkr { .Val_int (Gdif_db_.Fld__dif_type , dif_type) .Val_int (Gdif_db_.Fld__dif_db_src , -1) .Val_int (Gdif_db_.Fld__dif_db_trg , -1); - Gfdb_rdr_utl_.Stmt_args(stmt, flds, flds.length, rdr); + Gfdb_rdr_utl_.Stmt_args(stmt, flds, 0, flds.length, rdr); stmt.Exec_insert(); if ((++prog_count % prog_interval) == 0) dif_conn.Txn_sav(); } diff --git a/140_dbs/src/gplx/dbs/diffs/cmds/Gfdb_diff_cmd.java b/140_dbs/src/gplx/dbs/diffs/cmds/Gfdb_diff_cmd.java index afe0065a6..b2a2426ab 100644 --- a/140_dbs/src/gplx/dbs/diffs/cmds/Gfdb_diff_cmd.java +++ b/140_dbs/src/gplx/dbs/diffs/cmds/Gfdb_diff_cmd.java @@ -35,7 +35,7 @@ class Gfo_srl_mgr_rdr__defn { } class Gfo_srl_mgr_rdr__db { public Object Get_subs (Gfo_srl_ctx ctx, Gfo_srl_itm owner, Gfo_srl_itm proto, String defn_key, Dbmeta_dat_mgr crt_mgr) { - List_adp list = List_adp_.new_(); + List_adp list = List_adp_.New(); Gfo_srl_mgr_rdr__defn defn = new Gfo_srl_mgr_rdr__defn(); // Get(key) Db_conn conn = Db_conn_.Noop; @@ -79,12 +79,12 @@ class Gfo_srl_mgr_rdr__db { } class Gfdb_diff_cmd__idx__delete { public Gfdb_diff_cmd__idx__delete(Dbmeta_idx_itm old) {this.Old = old;} - public final Dbmeta_idx_itm Old; + public final Dbmeta_idx_itm Old; } class Gfdb_diff_cmd__idx__modify { public Gfdb_diff_cmd__idx__modify(Dbmeta_idx_itm old, Dbmeta_idx_itm cur) {this.Old = old; this.Cur = cur;} - public final Dbmeta_idx_itm Old; - public final Dbmeta_idx_itm Cur; + public final Dbmeta_idx_itm Old; + public final Dbmeta_idx_itm Cur; } class Gfdb_diff_txn { public int Id = 0; @@ -125,20 +125,20 @@ class Gfdb_diff_cmd__fld__create { } class Gfdb_diff_cmd__fld__delete { public Gfdb_diff_cmd__fld__delete(Dbmeta_fld_itm old) {this.Old = old;} - public final Dbmeta_fld_itm Old; + public final Dbmeta_fld_itm Old; } class Gfdb_diff_cmd__fld__modify { public Gfdb_diff_cmd__fld__modify(Dbmeta_fld_itm old, Dbmeta_fld_itm cur) {this.Old = old; this.Cur = cur;} - public final Dbmeta_fld_itm Old; - public final Dbmeta_fld_itm Cur; + public final Dbmeta_fld_itm Old; + public final Dbmeta_fld_itm Cur; } class Gfdb_diff_cmd__tbl__create { public Gfdb_diff_cmd__tbl__create(Dbmeta_tbl_itm cur) {this.Cur = cur;} - public final Dbmeta_tbl_itm Cur; + public final Dbmeta_tbl_itm Cur; } class Gfdb_diff_cmd__tbl__delete { public Gfdb_diff_cmd__tbl__delete(Dbmeta_tbl_itm old) {this.Old = old;} - public final Dbmeta_tbl_itm Old; + public final Dbmeta_tbl_itm Old; } class Gfdb_diff_cmd_bldr { public void Chk_tbls(List_adp rv, Dbmeta_tbl_mgr old_tbls, Dbmeta_tbl_mgr cur_tbls) { @@ -234,8 +234,8 @@ class Gfdb_diff_cmd__insert { } } class Gfdb_diff_cmd_sql_bldr { - private final Bry_fmtr fmtr = Bry_fmtr.new_(); - private final Bry_bfr tmp_bfr = Bry_bfr.new_(); + private final Bry_fmtr fmtr = Bry_fmtr.new_(); + private final Bry_bfr tmp_bfr = Bry_bfr_.New(); public void Bld_insert(Bry_bfr bfr, String tbl_name, String[] keys, String[] vals, int rng_bgn, int rng_end) { fmtr.Fmt_(Insert__fmt).Keys_(Insert__keys); fmtr.Bld_bfr_many(bfr, tbl_name, Bld_flds(tmp_bfr, ", ", "d.", keys, vals), Bld_join(keys), rng_bgn, rng_end); @@ -273,8 +273,8 @@ class Gfdb_diff_cmd_sql_bldr { } return tmp_bfr.To_str_and_clear(); } - private static final String[] Insert__keys = String_.Ary("tbl", "flds", "join", "rng_bgn", "rng_end"); - private static final String Insert__fmt = String_.Concat_lines_nl_skip_last + private static final String[] Insert__keys = String_.Ary("tbl", "flds", "join", "rng_bgn", "rng_end"); + private static final String Insert__fmt = String_.Concat_lines_nl_skip_last ( "INSERT INTO db_curr.~{tbl}" , "SELECT ~{flds}" , "FROM db_temp.~{tbl}_pkey k" @@ -282,8 +282,8 @@ class Gfdb_diff_cmd_sql_bldr { , "WHERE k.diff_type = 1" , "AND k.diff_uid BETWEEN ~{rng_bgn} AND ~{rng_end};" ); - private static final String[] Update__keys = String_.Ary("tbl", "flds", "join", "rng_bgn", "rng_end"); - private static final String Update__fmt = String_.Concat_lines_nl_skip_last + private static final String[] Update__keys = String_.Ary("tbl", "flds", "join", "rng_bgn", "rng_end"); + private static final String Update__fmt = String_.Concat_lines_nl_skip_last ( "REPLACE INTO db_curr.~{tbl}" , "SELECT ~{flds}" , "FROM db_temp.~{tbl}_pkey k" @@ -291,8 +291,8 @@ class Gfdb_diff_cmd_sql_bldr { , "WHERE k.diff_type = 2" , "AND k.diff_uid BETWEEN ~{rng_bgn} AND ~{rng_end};" ); - private static final String[] Delete__keys = String_.Ary("tbl", "pkey_where", "pkey_select", "join", "rng_bgn", "rng_end"); - private static final String Delete__fmt = String_.Concat_lines_nl_skip_last + private static final String[] Delete__keys = String_.Ary("tbl", "pkey_where", "pkey_select", "join", "rng_bgn", "rng_end"); + private static final String Delete__fmt = String_.Concat_lines_nl_skip_last ( "DELETE db_curr.~{tbl}" , "WHERE ~{pkey_where} IN" , "( SELECT ~{pkey_select}" diff --git a/140_dbs/src/gplx/dbs/diffs/cmds/Gfdb_diff_cmd__idx__create.java b/140_dbs/src/gplx/dbs/diffs/cmds/Gfdb_diff_cmd__idx__create.java index 06d6cc2fc..fd7825923 100644 --- a/140_dbs/src/gplx/dbs/diffs/cmds/Gfdb_diff_cmd__idx__create.java +++ b/140_dbs/src/gplx/dbs/diffs/cmds/Gfdb_diff_cmd__idx__create.java @@ -55,21 +55,19 @@ class Gfdb_diff_cmd__idx__fld implements Gfo_srl_itm { // *_sdif_ddl_idx_fld : idx_uid,fld_order,fld_name,fld_asc public void Save(Gfo_srl_ctx ctx, Gfo_srl_itm owner, Gfo_srl_mgr_wtr wtr) { wtr.Itm_bgn("idx_fld"); - wtr.Set_int ("fld_order" , cur.Order); wtr.Set_str ("fld_name" , cur.Name); wtr.Set_int ("fld_asc" , cur.Sort_tid); wtr.Itm_end(); } public void Load(Gfo_srl_ctx ctx, Gfo_srl_itm owner, Gfo_srl_mgr_rdr rdr) { rdr.Itm_bgn("idx_fld"); - int order = rdr.Get_int ("fld_order"); String name = rdr.Get_str ("fld_name"); int sort_tid = rdr.Get_int ("fld_sort"); - cur = new Dbmeta_idx_fld(order, name, sort_tid); + cur = new Dbmeta_idx_fld(name, sort_tid); rdr.Itm_end(); } - public static final Gfdb_diff_cmd__idx__fld Instance = new Gfdb_diff_cmd__idx__fld(); + public static final Gfdb_diff_cmd__idx__fld Instance = new Gfdb_diff_cmd__idx__fld(); } // class Gfdb_diff_cmd__tbl__fld : Gfo_srl_itm { // public Gfdb_diff_cmd__tbl__fld(Dbmeta_fld_itm cur) {this.cur = cur;} @@ -115,5 +113,5 @@ class Gfdb_diff_cmd__idx__fld implements Gfo_srl_itm { //// Dbmeta_fld_tid tid = tbl.Flds().Get_by(name).Type(); // } // -// public static final Gfdb_diff_cmd__tbl__fld Instance = new Gfdb_diff_cmd__tbl__fld(); +// public static final Gfdb_diff_cmd__tbl__fld Instance = new Gfdb_diff_cmd__tbl__fld(); // } diff --git a/140_dbs/src/gplx/dbs/diffs/cmds/Gfdb_diff_cmd_sql_bldr_tst.java b/140_dbs/src/gplx/dbs/diffs/cmds/Gfdb_diff_cmd_sql_bldr_tst.java index 8447fa442..018de6c17 100644 --- a/140_dbs/src/gplx/dbs/diffs/cmds/Gfdb_diff_cmd_sql_bldr_tst.java +++ b/140_dbs/src/gplx/dbs/diffs/cmds/Gfdb_diff_cmd_sql_bldr_tst.java @@ -19,7 +19,7 @@ package gplx.dbs.diffs.cmds; import gplx.*; import gplx.dbs.*; import gplx.dbs.d import org.junit.*; import gplx.dbs.*; import gplx.dbs.engines.mems.*; public class Gfdb_diff_cmd_sql_bldr_tst { - private final Gfdb_diff_cmd_sql_bldr_fxt fxt = new Gfdb_diff_cmd_sql_bldr_fxt(); + private final Gfdb_diff_cmd_sql_bldr_fxt fxt = new Gfdb_diff_cmd_sql_bldr_fxt(); @Test public void Insert() { fxt.Test__insert("tbl1", String_.Ary("key1", "key2"), String_.Ary("fld1", "fld2"), 0, 99, String_.Concat_lines_nl_skip_last ( "INSERT INTO db_curr.tbl1" @@ -55,7 +55,7 @@ public class Gfdb_diff_cmd_sql_bldr_tst { } class Gfdb_diff_cmd_sql_bldr_fxt { private Gfdb_diff_cmd_sql_bldr bldr = new Gfdb_diff_cmd_sql_bldr(); - private final Bry_bfr bfr = Bry_bfr.new_(); + private final Bry_bfr bfr = Bry_bfr_.New(); public void Test__insert(String tbl_name, String[] keys, String[] flds, int rng_bgn, int rng_end, String expd) { bldr.Bld_insert(bfr, tbl_name, keys, flds, 0, 99); Tfds.Eq_str_lines(expd, bfr.To_str_and_clear()); diff --git a/140_dbs/src/gplx/dbs/diffs/itms/Gdif_cmd_tbl.java b/140_dbs/src/gplx/dbs/diffs/itms/Gdif_cmd_tbl.java index 4ace12a67..94acd67d5 100644 --- a/140_dbs/src/gplx/dbs/diffs/itms/Gdif_cmd_tbl.java +++ b/140_dbs/src/gplx/dbs/diffs/itms/Gdif_cmd_tbl.java @@ -19,8 +19,8 @@ package gplx.dbs.diffs.itms; import gplx.*; import gplx.dbs.*; import gplx.dbs.d public class Gdif_cmd_tbl implements Rls_able { private String tbl_name = "gdif_cmd"; private String fld_grp_id, fld_cmd_id, fld_tid, fld_data; - private final Dbmeta_fld_list flds = Dbmeta_fld_list.new_(); - private final Db_conn conn; private Db_stmt stmt_insert; + private final Dbmeta_fld_list flds = new Dbmeta_fld_list(); + private final Db_conn conn; private Db_stmt stmt_insert; public Gdif_cmd_tbl(Db_conn conn) { this.conn = conn; fld_grp_id = flds.Add_int("grp_id"); fld_cmd_id = flds.Add_int("cmd_id"); fld_tid = flds.Add_int("tid"); fld_data = flds.Add_text("data"); diff --git a/140_dbs/src/gplx/dbs/diffs/itms/Gdif_job_tbl.java b/140_dbs/src/gplx/dbs/diffs/itms/Gdif_job_tbl.java index 9882d530d..3ecf757d6 100644 --- a/140_dbs/src/gplx/dbs/diffs/itms/Gdif_job_tbl.java +++ b/140_dbs/src/gplx/dbs/diffs/itms/Gdif_job_tbl.java @@ -19,8 +19,8 @@ package gplx.dbs.diffs.itms; import gplx.*; import gplx.dbs.*; import gplx.dbs.d public class Gdif_job_tbl implements Rls_able { private String tbl_name = "gdif_job"; private String fld_job_id, fld_name, fld_made_by, fld_made_on, fld_data; - private final Dbmeta_fld_list flds = Dbmeta_fld_list.new_(); - private final Db_conn conn; private Db_stmt stmt_insert; + private final Dbmeta_fld_list flds = new Dbmeta_fld_list(); + private final Db_conn conn; private Db_stmt stmt_insert; public Gdif_job_tbl(Db_conn conn) { this.conn = conn; fld_job_id = flds.Add_int_pkey("job_id"); fld_name = flds.Add_str("name", 255); fld_made_by = flds.Add_str("made_by", 255); fld_made_on = flds.Add_date("made_on"); fld_data = flds.Add_text("data"); diff --git a/140_dbs/src/gplx/dbs/diffs/itms/Gdif_txn_tbl.java b/140_dbs/src/gplx/dbs/diffs/itms/Gdif_txn_tbl.java index 2c656d6df..f21a2b7b0 100644 --- a/140_dbs/src/gplx/dbs/diffs/itms/Gdif_txn_tbl.java +++ b/140_dbs/src/gplx/dbs/diffs/itms/Gdif_txn_tbl.java @@ -19,8 +19,8 @@ package gplx.dbs.diffs.itms; import gplx.*; import gplx.dbs.*; import gplx.dbs.d public class Gdif_txn_tbl implements Rls_able { private String tbl_name = "gdif_txn"; private String fld_job_id, fld_txn_id, fld_cmd_id, fld_owner_txn; - private final Dbmeta_fld_list flds = Dbmeta_fld_list.new_(); - private final Db_conn conn; private Db_stmt stmt_insert; + private final Dbmeta_fld_list flds = new Dbmeta_fld_list(); + private final Db_conn conn; private Db_stmt stmt_insert; public Gdif_txn_tbl(Db_conn conn) { this.conn = conn; fld_job_id = flds.Add_int("job_id"); fld_txn_id = flds.Add_int("txn_id"); fld_cmd_id = flds.Add_int("cmd_id"); fld_owner_txn = flds.Add_int("owner_txn"); diff --git a/140_dbs/src/gplx/dbs/engines/mems/Mem_db_fxt.java b/140_dbs/src/gplx/dbs/engines/mems/Mem_db_fxt.java index 6732716bd..5689248a4 100644 --- a/140_dbs/src/gplx/dbs/engines/mems/Mem_db_fxt.java +++ b/140_dbs/src/gplx/dbs/engines/mems/Mem_db_fxt.java @@ -23,7 +23,7 @@ class Mem_db_fxt { } public Db_conn Make_conn(String url) {return Db_conn_bldr.Instance.Get_or_autocreate(Bool_.Y, Io_url_.mem_fil_(url));} public Dbmeta_tbl_itm Exec__create_tbl(Db_conn conn, String tbl, String... fld_names) { - Dbmeta_fld_list flds = Dbmeta_fld_list.new_(); + Dbmeta_fld_list flds = new Dbmeta_fld_list(); int len = fld_names.length; for (int i = 0; i < len; ++i) flds.Add_str(fld_names[i], 255); @@ -49,8 +49,8 @@ class Mem_db_fxt { public void Test__select(Db_conn conn, Db_qry qry, String[]... expd) { Db_stmt stmt = conn.Stmt_new(qry); Db_rdr rdr = new Mem_exec_select((Mem_engine)conn.Engine()).Select((Mem_stmt)stmt); - List_adp actl_list = List_adp_.new_(); - Bry_bfr tmp_bfr = Bry_bfr.new_(); + List_adp actl_list = List_adp_.New(); + Bry_bfr tmp_bfr = Bry_bfr_.New(); int expd_len = expd.length; String[] expd_rows = new String[expd_len]; for (int i = 0; i < expd_len; ++i) { diff --git a/140_dbs/src/gplx/dbs/engines/mems/Mem_engine.java b/140_dbs/src/gplx/dbs/engines/mems/Mem_engine.java index a8c1809ca..70f2be620 100644 --- a/140_dbs/src/gplx/dbs/engines/mems/Mem_engine.java +++ b/140_dbs/src/gplx/dbs/engines/mems/Mem_engine.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.dbs.engines.mems; import gplx.*; import gplx.dbs.*; import gplx.dbs.engines.*; import gplx.core.stores.*; import gplx.dbs.metas.*; import gplx.dbs.sqls.*; import gplx.dbs.conn_props.*; import gplx.dbs.qrys.bats.*; public class Mem_engine implements Db_engine { - private final Hash_adp tbl_hash = Hash_adp_.new_(); + private final Hash_adp tbl_hash = Hash_adp_.New(); Mem_engine(Db_conn_info conn_info) { this.conn_info = conn_info; this.qry_runner = new Mem_exec_select(this); @@ -55,7 +55,7 @@ public class Mem_engine implements Db_engine { Mem_tbl tbl = (Mem_tbl)tbl_hash.Get_by(tbl_key); if (tbl != null) tbl.rows.Clear(); } - public void Meta_idx_create(Gfo_usr_dlg usr_dlg, Dbmeta_idx_itm... ary) {} // TODO: implement unique index + public void Meta_idx_create(Gfo_usr_dlg usr_dlg, Dbmeta_idx_itm... ary) {} // TODO_OLD: implement unique index public void Meta_idx_delete(String idx) {} public void Meta_fld_append(String tbl, Dbmeta_fld_itm fld) {} public Dbmeta_tbl_mgr Meta_mgr() {return meta_mgr;} private final Dbmeta_tbl_mgr meta_mgr = new Dbmeta_tbl_mgr(Dbmeta_reload_cmd_.Noop); diff --git a/140_dbs/src/gplx/dbs/engines/mems/Mem_exec_select.java b/140_dbs/src/gplx/dbs/engines/mems/Mem_exec_select.java index 94b84ecb5..06c5b1b35 100644 --- a/140_dbs/src/gplx/dbs/engines/mems/Mem_exec_select.java +++ b/140_dbs/src/gplx/dbs/engines/mems/Mem_exec_select.java @@ -19,8 +19,8 @@ package gplx.dbs.engines.mems; import gplx.*; import gplx.dbs.*; import gplx.dbs import gplx.core.criterias.*; import gplx.dbs.qrys.*; import gplx.dbs.sqls.itms.*; public class Mem_exec_select { - private final Mem_engine engine; - private final List_adp tmp_where_rows = List_adp_.new_(); + private final Mem_engine engine; + private final List_adp tmp_where_rows = List_adp_.New(); public Mem_exec_select(Mem_engine engine) {this.engine = engine;} public Db_rdr Select(Mem_stmt stmt) { Db_qry stmt_qry = stmt.Qry(); @@ -73,7 +73,7 @@ public class Mem_exec_select { } } class Mem_sorter implements gplx.core.lists.ComparerAble { - private final Sql_order_fld[] flds; + private final Sql_order_fld[] flds; public Mem_sorter(Sql_order_fld[] flds) { this.flds = flds; } @@ -94,7 +94,7 @@ class Mem_sorter implements gplx.core.lists.ComparerAble { class Mem_exec_ { public static Mem_row[] Rows__join(int join_tid, Mem_row[] lhs_rows, Mem_row[] rhs_rows, String tbl_alias, Sql_join_fld[] join_flds) { int join_flds_len = join_flds.length; - Bry_bfr bfr = Bry_bfr.new_(); + Bry_bfr bfr = Bry_bfr_.New(); Hash_adp_bry rhs_hash = Hash_adp_bry.cs(); int rhs_rows_len = rhs_rows.length; for (int i = 0; i < rhs_rows_len; ++i) { @@ -102,12 +102,12 @@ class Mem_exec_ { byte[] rhs_key = Rows__bld_key(bfr, Bool_.N, tbl_alias, rhs_row, join_flds, join_flds_len); List_adp rhs_list = (List_adp)rhs_hash.Get_by_bry(rhs_key); if (rhs_list == null) { - rhs_list = List_adp_.new_(); + rhs_list = List_adp_.New(); rhs_hash.Add(rhs_key, rhs_list); } rhs_list.Add(rhs_row); } - List_adp rv = List_adp_.new_(); + List_adp rv = List_adp_.New(); int lhs_len = lhs_rows.length; for (int i = 0; i < lhs_len; ++i) { Mem_row lhs_row = lhs_rows[i]; diff --git a/140_dbs/src/gplx/dbs/engines/mems/Mem_qry_set.java b/140_dbs/src/gplx/dbs/engines/mems/Mem_qry_set.java index ed3180703..1e96d0c71 100644 --- a/140_dbs/src/gplx/dbs/engines/mems/Mem_qry_set.java +++ b/140_dbs/src/gplx/dbs/engines/mems/Mem_qry_set.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.dbs.engines.mems; import gplx.*; import gplx.dbs.*; import gplx.dbs.engines.*; public class Mem_qry_set { - private final List_adp rows = List_adp_.new_(); + private final List_adp rows = List_adp_.New(); public int Len() {return rows.Count();} public Mem_row Get_at(int i) {return (Mem_row)rows.Get_at(i);} public void Add(Mem_row row) {rows.Add(row);} diff --git a/140_dbs/src/gplx/dbs/engines/mems/Mem_row.java b/140_dbs/src/gplx/dbs/engines/mems/Mem_row.java index 5a74d3060..92ea32b87 100644 --- a/140_dbs/src/gplx/dbs/engines/mems/Mem_row.java +++ b/140_dbs/src/gplx/dbs/engines/mems/Mem_row.java @@ -16,9 +16,9 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.dbs.engines.mems; import gplx.*; import gplx.dbs.*; import gplx.dbs.engines.*; -public class Mem_row implements GfoInvkAble { - private final Ordered_hash hash = Ordered_hash_.New(); - private final Ordered_hash flds = Ordered_hash_.New(); +public class Mem_row implements Gfo_invk { + private final Ordered_hash hash = Ordered_hash_.New(); + private final Ordered_hash flds = Ordered_hash_.New(); public int Len() {return hash.Len();} public String Fld_at(int i) {return (String)flds.Get_at(i);} public Object Get_at(int i) {return hash.Get_at(i);} @@ -31,9 +31,9 @@ public class Mem_row implements GfoInvkAble { public void Add(String key, Object val) {hash.Add(key, val); flds.Add_if_dupe_use_1st(key, key);} public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { Object rv = Get_by(k); - if (rv == null) return GfoInvkAble_.Rv_unhandled; + if (rv == null) return Gfo_invk_.Rv_unhandled; return rv; } - public static final Mem_row[] Ary_empty = new Mem_row[0]; - public static final Mem_row Null_row = new Mem_row(); + public static final Mem_row[] Ary_empty = new Mem_row[0]; + public static final Mem_row Null_row = new Mem_row(); } diff --git a/140_dbs/src/gplx/dbs/engines/mems/Mem_stmt.java b/140_dbs/src/gplx/dbs/engines/mems/Mem_stmt.java index b344f36b1..f63d15606 100644 --- a/140_dbs/src/gplx/dbs/engines/mems/Mem_stmt.java +++ b/140_dbs/src/gplx/dbs/engines/mems/Mem_stmt.java @@ -19,10 +19,10 @@ package gplx.dbs.engines.mems; import gplx.*; import gplx.dbs.*; import gplx.dbs import gplx.core.stores.*; public class Mem_stmt implements Db_stmt { private static final String Key_na = ""; // key is not_available; only called by procs with signature of Val( v); - private final Ordered_hash val_list = Ordered_hash_.New(); + private final Ordered_hash val_list = Ordered_hash_.New(); public Mem_stmt(Mem_engine engine, Db_qry qry) {Ctor_stmt(engine, qry);} private Mem_engine engine; public void Ctor_stmt(Db_engine engine, Db_qry qry) {this.engine = (Mem_engine)engine; this.qry = qry;} - public Mem_stmt_args Stmt_args() {return stmt_args;} private final Mem_stmt_args stmt_args = new Mem_stmt_args(); + public Mem_stmt_args Stmt_args() {return stmt_args;} private final Mem_stmt_args stmt_args = new Mem_stmt_args(); public int Args_len() {return val_list.Count();} public Object Args_get_at(int i) {return val_list.Get_at(i);} public Object Args_get_by(String k) {return val_list.Get_by(k);} @@ -111,10 +111,10 @@ public class Mem_stmt implements Db_stmt { try {Add(k, where, v);} catch (Exception e) {throw Err_.new_exc(e, "db", "failed to add value", "type", "text", "val", v);} return this; } - public Db_stmt Val_rdr_(gplx.core.ios.Io_stream_rdr v, long rdr_len) { + public Db_stmt Val_rdr_(gplx.core.ios.streams.Io_stream_rdr v, long rdr_len) { try { - Bry_bfr bfr = Bry_bfr.new_(); - gplx.core.ios.Io_stream_rdr_.Load_all_to_bfr(bfr, v); + Bry_bfr bfr = Bry_bfr_.New(); + gplx.core.ios.streams.Io_stream_rdr_.Load_all_to_bfr(bfr, v); Add("", Bool_.N, bfr.To_str_and_clear()); } catch (Exception e) {throw Err_.new_exc(e, "db", "failed to add value", "type", "rdr", "val", v);} return this; diff --git a/140_dbs/src/gplx/dbs/engines/mems/Mem_stmt_args.java b/140_dbs/src/gplx/dbs/engines/mems/Mem_stmt_args.java index 5323c6bf8..028724cdd 100644 --- a/140_dbs/src/gplx/dbs/engines/mems/Mem_stmt_args.java +++ b/140_dbs/src/gplx/dbs/engines/mems/Mem_stmt_args.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.dbs.engines.mems; import gplx.*; import gplx.dbs.*; import gplx.dbs.engines.*; import gplx.core.criterias.*; public class Mem_stmt_args { - private final List_adp list = List_adp_.new_(); + private final List_adp list = List_adp_.New(); private int cur_idx = -1; public void Clear() {list.Clear(); cur_idx = -1;} public void Add(String k, Object v) {list.Add(Keyval_.new_(k, v));} diff --git a/140_dbs/src/gplx/dbs/engines/mems/Mem_tbl.java b/140_dbs/src/gplx/dbs/engines/mems/Mem_tbl.java index e0a13997c..d52471171 100644 --- a/140_dbs/src/gplx/dbs/engines/mems/Mem_tbl.java +++ b/140_dbs/src/gplx/dbs/engines/mems/Mem_tbl.java @@ -19,11 +19,11 @@ package gplx.dbs.engines.mems; import gplx.*; import gplx.dbs.*; import gplx.dbs import gplx.core.primitives.*; import gplx.core.criterias.*; import gplx.dbs.qrys.*; import gplx.dbs.sqls.itms.*; import gplx.dbs.metas.*; public class Mem_tbl { - private final List_adp where_rows = List_adp_.new_(); - private final Hash_adp autonum_hash = Hash_adp_.new_(); + private final List_adp where_rows = List_adp_.New(); + private final Hash_adp autonum_hash = Hash_adp_.New(); public Mem_tbl(Dbmeta_tbl_itm meta) {this.meta = meta;} - public Dbmeta_tbl_itm Meta() {return meta;} private final Dbmeta_tbl_itm meta; - public final List_adp rows = List_adp_.new_(); + public Dbmeta_tbl_itm Meta() {return meta;} private final Dbmeta_tbl_itm meta; + public final List_adp rows = List_adp_.New(); public int Insert(Mem_stmt stmt) { Mem_row itm = new Mem_row(); Dbmeta_fld_mgr flds = meta.Flds(); @@ -41,7 +41,7 @@ public class Mem_tbl { private int Autonum_calc(String name) { Int_obj_ref autonum_itm = (Int_obj_ref)autonum_hash.Get_by(name); if (autonum_itm == null) { - autonum_itm = Int_obj_ref.new_(0); + autonum_itm = Int_obj_ref.New(0); autonum_hash.Add(name, autonum_itm); } return autonum_itm.Val_add(); diff --git a/140_dbs/src/gplx/dbs/engines/sqlite/Sqlite_schema_mgr.java b/140_dbs/src/gplx/dbs/engines/sqlite/Sqlite_schema_mgr.java index 99c5435f2..469daeee1 100644 --- a/140_dbs/src/gplx/dbs/engines/sqlite/Sqlite_schema_mgr.java +++ b/140_dbs/src/gplx/dbs/engines/sqlite/Sqlite_schema_mgr.java @@ -58,19 +58,23 @@ public class Sqlite_schema_mgr implements Dbmeta_reload_cmd { String type_str = rdr.Read_str("type"); String name = rdr.Read_str("name"); String sql = rdr.Read_str("sql"); - int type_int = Dbmeta_itm_tid.Xto_int(type_str); - switch (type_int) { - case Dbmeta_itm_tid.Tid_table: - if (String_.Has_at_bgn(name, "sqlite_")) continue; // ignore b/c of non-orthodox syntax; EX: "CREATE TABLE sqlite_sequence(name, seq)"; also "CREATE TABLE sqlite_stat(tbl,idx,stat)"; - tbl_mgr.Add(tbl_parser.Parse(Bry_.new_u8(sql))); - break; - case Dbmeta_itm_tid.Tid_index: - if (sql == null) continue; // ignore "autoindex"; EX: sqlite_autoindex_temp_page_len_avg_1 - idx_mgr.Add(idx_parser.Parse(Bry_.new_u8(sql))); - break; - default: - Gfo_usr_dlg_.Instance.Log_many("", "", "db.schema.unknown type: conn=~{0} type=~{1} name=~{2} sql=~{3}", engine.Conn_info().Db_api(), type_str, name, sql); - break; + try { + int type_int = Dbmeta_itm_tid.Xto_int(type_str); + switch (type_int) { + case Dbmeta_itm_tid.Tid_table: + if (String_.Has_at_bgn(name, "sqlite_")) continue; // ignore b/c of non-orthodox syntax; EX: "CREATE TABLE sqlite_sequence(name, seq)"; also "CREATE TABLE sqlite_stat(tbl,idx,stat)"; + tbl_mgr.Add(tbl_parser.Parse(Bry_.new_u8(sql))); + break; + case Dbmeta_itm_tid.Tid_index: + if (sql == null) continue; // ignore "autoindex"; EX: sqlite_autoindex_temp_page_len_avg_1 + idx_mgr.Add(idx_parser.Parse(Bry_.new_u8(sql))); + break; + default: + Gfo_usr_dlg_.Instance.Log_many("", "", "db.schema.unknown type: conn=~{0} type=~{1} name=~{2} sql=~{3}", engine.Conn_info().Db_api(), type_str, name, sql); + break; + } + } catch (Exception e) { // tables / indexes may be unparseable; skip them; EX: CREATE TABLE unparseable (col_1 /*comment*/ int); DATE:2016-06-08 + Gfo_usr_dlg_.Instance.Log_many("", "", "db.schema.unparseable: conn=~{0} type=~{1} name=~{2} sql=~{3} err=~{4}", engine.Conn_info().Db_api(), type_str, name, sql, Err_.Message_gplx_log(e)); } } } finally {rdr.Rls();} diff --git a/140_dbs/src/gplx/dbs/engines/sqlite/Sqlite_txn_mgr.java b/140_dbs/src/gplx/dbs/engines/sqlite/Sqlite_txn_mgr.java index cbddce3b9..06cae5ad9 100644 --- a/140_dbs/src/gplx/dbs/engines/sqlite/Sqlite_txn_mgr.java +++ b/140_dbs/src/gplx/dbs/engines/sqlite/Sqlite_txn_mgr.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.dbs.engines.sqlite; import gplx.*; import gplx.dbs.*; import gplx.dbs.engines.*; import gplx.dbs.qrys.*; public class Sqlite_txn_mgr { - private final List_adp txn_list = List_adp_.new_(); + private final List_adp txn_list = List_adp_.New(); public Sqlite_txn_mgr(Db_engine engine) {this.engine = engine;} private final Db_engine engine; private boolean pragma_needed = Bool_.Y, txn_started = Bool_.N; // NOTE: txns only support 1 level; SQLite fails when nesting transactions; DATE:2015-03-11 public void Txn_bgn(String name) { diff --git a/140_dbs/src/gplx/dbs/engines/tdbs/TdbDbSaveMgr.java b/140_dbs/src/gplx/dbs/engines/tdbs/TdbDbSaveMgr.java index 97cddfda8..7b9e6c43a 100644 --- a/140_dbs/src/gplx/dbs/engines/tdbs/TdbDbSaveMgr.java +++ b/140_dbs/src/gplx/dbs/engines/tdbs/TdbDbSaveMgr.java @@ -52,7 +52,7 @@ class TdbDbSaveMgr { Io_mgr.Instance.SaveFilStr(fil.Path(), wtr.To_str()); } List_adp FetchTablesWithSamePath(TdbDatabase db, Io_url filPath) { - List_adp list = List_adp_.new_(); + List_adp list = List_adp_.New(); for (Object tblObj : db.Tables()) { TdbTable tbl = (TdbTable)tblObj; if (tbl.File().Path().Eq (filPath)) diff --git a/140_dbs/src/gplx/dbs/engines/tdbs/TdbDelete.java b/140_dbs/src/gplx/dbs/engines/tdbs/TdbDelete.java index 9dbd2db5e..78f347e4d 100644 --- a/140_dbs/src/gplx/dbs/engines/tdbs/TdbDelete.java +++ b/140_dbs/src/gplx/dbs/engines/tdbs/TdbDelete.java @@ -21,7 +21,7 @@ class TdbDeleteWkr implements Db_qryWkr { public Object Exec(Db_engine engineObj, Db_qry cmdObj) { TdbEngine engine = TdbEngine.cast(engineObj); Db_qry_delete cmd = (Db_qry_delete)cmdObj; TdbTable tbl = engine.FetchTbl(cmd.Base_table()); - List_adp deleted = List_adp_.new_(); + List_adp deleted = List_adp_.New(); int rv = 0; if (cmd.Where() == Db_qry_delete.Where__null) { rv = tbl.Rows().Count(); diff --git a/140_dbs/src/gplx/dbs/engines/tdbs/TdbEngine.java b/140_dbs/src/gplx/dbs/engines/tdbs/TdbEngine.java index d789bcce0..bf154be7b 100644 --- a/140_dbs/src/gplx/dbs/engines/tdbs/TdbEngine.java +++ b/140_dbs/src/gplx/dbs/engines/tdbs/TdbEngine.java @@ -73,7 +73,7 @@ public class TdbEngine implements Db_engine { public void Env_db_detach(String alias) {} public Dbmeta_tbl_mgr Meta_mgr() {return meta_mgr;} private final Dbmeta_tbl_mgr meta_mgr = new Dbmeta_tbl_mgr(Dbmeta_reload_cmd_.Noop); - Hash_adp wkrs = Hash_adp_.new_(); TdbDbLoadMgr loadMgr = TdbDbLoadMgr.new_(); TdbDbSaveMgr saveMgr = TdbDbSaveMgr.new_(); + Hash_adp wkrs = Hash_adp_.New(); TdbDbLoadMgr loadMgr = TdbDbLoadMgr.new_(); TdbDbSaveMgr saveMgr = TdbDbSaveMgr.new_(); public static final TdbEngine Instance = new TdbEngine(); void CtorTdbEngine(Db_conn_info conn_info) { this.conn_info = conn_info; diff --git a/140_dbs/src/gplx/dbs/engines/tdbs/TdbInsert.java b/140_dbs/src/gplx/dbs/engines/tdbs/TdbInsert.java index 2dfd146b3..955115d05 100644 --- a/140_dbs/src/gplx/dbs/engines/tdbs/TdbInsert.java +++ b/140_dbs/src/gplx/dbs/engines/tdbs/TdbInsert.java @@ -57,7 +57,7 @@ class TdbInsertWkr implements Db_qryWkr { return 1; } private String To_str(Sql_select_fld_list flds) { - Bry_bfr bfr = Bry_bfr.new_(); + Bry_bfr bfr = Bry_bfr_.New(); for (int i = 0; i < flds.Len(); i++) { Sql_select_fld fld = flds.Get_at(i); bfr.Add_str_u8(String_.Format("{0},{1}|", fld.Fld, fld.Alias)); diff --git a/140_dbs/src/gplx/dbs/metas/Dbmeta_fld_mgr.java b/140_dbs/src/gplx/dbs/metas/Dbmeta_fld_mgr.java index 46786efa5..2f01724b7 100644 --- a/140_dbs/src/gplx/dbs/metas/Dbmeta_fld_mgr.java +++ b/140_dbs/src/gplx/dbs/metas/Dbmeta_fld_mgr.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.dbs.metas; import gplx.*; import gplx.dbs.*; public class Dbmeta_fld_mgr { - private final Ordered_hash hash = Ordered_hash_.New(); + private final Ordered_hash hash = Ordered_hash_.New(); public int Len() {return hash.Count();} public void Clear() {hash.Clear();} public void Add(Dbmeta_fld_itm itm) {hash.Add(itm.Name(), itm);} @@ -26,7 +26,7 @@ public class Dbmeta_fld_mgr { public Dbmeta_fld_itm Get_by(String name) {return (Dbmeta_fld_itm)hash.Get_by(name);} public Dbmeta_fld_itm[] To_ary() {return hash.Count() == 0 ? Dbmeta_fld_itm.Ary_empty : (Dbmeta_fld_itm[])hash.To_ary(Dbmeta_fld_itm.class);} public Dbmeta_fld_list To_fld_list() { - Dbmeta_fld_list rv = Dbmeta_fld_list.new_(); + Dbmeta_fld_list rv = new Dbmeta_fld_list(); int len = hash.Count(); for (int i = 0; i < len; ++i) rv.Add(Get_at(i)); diff --git a/140_dbs/src/gplx/dbs/metas/Dbmeta_idx_fld.java b/140_dbs/src/gplx/dbs/metas/Dbmeta_idx_fld.java index d6db205f4..a74d625ae 100644 --- a/140_dbs/src/gplx/dbs/metas/Dbmeta_idx_fld.java +++ b/140_dbs/src/gplx/dbs/metas/Dbmeta_idx_fld.java @@ -17,17 +17,15 @@ along with this program. If not, see . */ package gplx.dbs.metas; import gplx.*; import gplx.dbs.*; public class Dbmeta_idx_fld { - public Dbmeta_idx_fld(int order, String name, int sort_tid) {this.Name = name; this.Order = order; this.Sort_tid = sort_tid;} - public int Order; + public Dbmeta_idx_fld(String name, int sort_tid) {this.Name = name; this.Sort_tid = sort_tid;} public String Name; public int Sort_tid; public boolean Eq(Dbmeta_idx_fld comp) { return String_.Eq(Name, comp.Name) - && Order == comp.Order && Sort_tid == comp.Sort_tid; } - public static final Dbmeta_idx_fld[] Ary_empty = new Dbmeta_idx_fld[0]; + public static final Dbmeta_idx_fld[] Ary_empty = new Dbmeta_idx_fld[0]; public static final int Sort_tid__none = 0, Sort_tid__asc = 1, Sort_tid__desc = 2; public static boolean Ary_eq(Dbmeta_idx_fld[] lhs_ary, Dbmeta_idx_fld[] rhs_ary) { int lhs_len = lhs_ary.length, rhs_len = rhs_ary.length; @@ -36,4 +34,6 @@ public class Dbmeta_idx_fld { if (!lhs_ary[i].Eq(rhs_ary[i])) return false; return true; } + + public static Dbmeta_idx_fld Dsc(String name) {return new Dbmeta_idx_fld(name, Sort_tid__desc);} } diff --git a/140_dbs/src/gplx/dbs/metas/parsers/Dbmeta_parser__idx.java b/140_dbs/src/gplx/dbs/metas/parsers/Dbmeta_parser__idx.java index cb7af43b3..3f2015aab 100644 --- a/140_dbs/src/gplx/dbs/metas/parsers/Dbmeta_parser__idx.java +++ b/140_dbs/src/gplx/dbs/metas/parsers/Dbmeta_parser__idx.java @@ -18,8 +18,8 @@ along with this program. If not, see . package gplx.dbs.metas.parsers; import gplx.*; import gplx.dbs.*; import gplx.dbs.metas.*; import gplx.core.brys.*; import gplx.core.btries.*; public class Dbmeta_parser__idx { - private final Sql_bry_rdr rdr = new Sql_bry_rdr(); - private final List_adp tmp_list = List_adp_.new_(); + private final Sql_bry_rdr rdr = new Sql_bry_rdr(); + private final List_adp tmp_list = List_adp_.New(); public Dbmeta_idx_itm Parse(byte[] src) { rdr.Init_by_page(Bry_.Empty, src, src.length); rdr.Skip_ws().Chk_trie_val(trie, Tid__create); @@ -34,11 +34,10 @@ public class Dbmeta_parser__idx { rdr.Skip_ws().Chk_trie_val(trie, Tid__on); byte[] tbl_name = rdr.Read_sql_identifier(); rdr.Skip_ws().Chk(Byte_ascii.Paren_bgn); - int order = -1; while (true) { byte[] fld_bry = rdr.Read_sql_identifier(); if (fld_bry == null) throw Err_.new_("db", "index parse failed; index field is not an identifier", "src", src); - // TODO: check for ASC / DESC - Dbmeta_idx_fld fld_itm = new Dbmeta_idx_fld(++order, String_.new_u8(fld_bry), Dbmeta_idx_fld.Sort_tid__none); + // TODO_OLD: check for ASC / DESC + Dbmeta_idx_fld fld_itm = new Dbmeta_idx_fld(String_.new_u8(fld_bry), Dbmeta_idx_fld.Sort_tid__none); tmp_list.Add(fld_itm); byte sym = rdr.Skip_ws().Read_byte(); if (sym == Byte_ascii.Paren_end) break; @@ -46,12 +45,12 @@ public class Dbmeta_parser__idx { return new Dbmeta_idx_itm(unique, String_.new_u8(tbl_name), String_.new_u8(idx_name), (Dbmeta_idx_fld[])tmp_list.To_ary_and_clear(Dbmeta_idx_fld.class)); } private static final byte Tid__create = 0, Tid__unique = 1, Tid__index = 2, Tid__on = 3; - private static final byte[] + private static final byte[] Bry__create = Bry_.new_a7("create") , Bry__unique = Bry_.new_a7("unique") , Bry__index = Bry_.new_a7("index") , Bry__on = Bry_.new_a7("on"); - private static final Btrie_slim_mgr trie = Btrie_slim_mgr.ci_a7() + private static final Btrie_slim_mgr trie = Btrie_slim_mgr.ci_a7() .Add_bry_byte(Bry__create , Tid__create) .Add_bry_byte(Bry__unique , Tid__unique) .Add_bry_byte(Bry__index , Tid__index) diff --git a/140_dbs/src/gplx/dbs/qrys/Db_qry__select_in_tbl.java b/140_dbs/src/gplx/dbs/qrys/Db_qry__select_in_tbl.java index d62c6839e..6587dfcf1 100644 --- a/140_dbs/src/gplx/dbs/qrys/Db_qry__select_in_tbl.java +++ b/140_dbs/src/gplx/dbs/qrys/Db_qry__select_in_tbl.java @@ -23,10 +23,10 @@ public class Db_qry__select_in_tbl implements Db_qry { } public int Tid() {return Db_qry_.Tid_select_in_tbl;} public boolean Exec_is_rdr() {return true;} - public String Base_table() {return base_table;} private final String base_table; + public String Base_table() {return base_table;} private final String base_table; public Criteria Where() {return where;} private Criteria where; - public String[] Select_flds() {return select_flds;} private final String[] select_flds; - private final String[] where_flds; + public String[] Select_flds() {return select_flds;} private final String[] select_flds; + private final String[] where_flds; public void Where_sql(String_bldr sb) { if (where_flds == null) return; int where_flds_len = where_flds.length; @@ -36,10 +36,10 @@ public class Db_qry__select_in_tbl implements Db_qry { sb.Add(where_flds[i]).Add(" = ? "); } } - public String Group_by_sql() {return group_by_sql;} private final String group_by_sql; - public String Having_sql() {return having_sql;} private final String having_sql; + public String Group_by_sql() {return group_by_sql;} private final String group_by_sql; + public String Having_sql() {return having_sql;} private final String having_sql; public String Order_by_sql() {return order_by_sql;} public Db_qry__select_in_tbl Order_by_sql_(String v) {order_by_sql = v; return this;} private String order_by_sql; - public String Limit_sql() {return limit_sql;} private final String limit_sql; + public String Limit_sql() {return limit_sql;} private final String limit_sql; public String To_sql__exec(gplx.dbs.sqls.Sql_qry_wtr wtr) { synchronized (this) { String_bldr sb = String_bldr_.new_(); @@ -66,7 +66,7 @@ public class Db_qry__select_in_tbl implements Db_qry { case 0: break; case 1: order_by_sql = order_flds[0]; break; default: - Bry_bfr bfr = Bry_bfr.new_(); + Bry_bfr bfr = Bry_bfr_.New(); for (int i = 0; i < len; ++i) { String order_fld = order_flds[i]; if (i != 0) bfr.Add_byte_comma(); @@ -81,6 +81,6 @@ public class Db_qry__select_in_tbl implements Db_qry { return rv; } public static Db_qry__select_in_tbl as_(Object obj) {return obj instanceof Db_qry__select_in_tbl ? (Db_qry__select_in_tbl)obj : null;} - public static final String[] Where_flds__all = String_.Ary_empty; - public static final String[] Order_by_null = null; + public static final String[] Where_flds__all = String_.Ary_empty; + public static final String[] Order_by_null = null; } diff --git a/140_dbs/src/gplx/dbs/qrys/Db_qry_sql.java b/140_dbs/src/gplx/dbs/qrys/Db_qry_sql.java index 15babe3be..2913f83bf 100644 --- a/140_dbs/src/gplx/dbs/qrys/Db_qry_sql.java +++ b/140_dbs/src/gplx/dbs/qrys/Db_qry_sql.java @@ -42,7 +42,7 @@ public class Db_qry_sql implements Db_qry { byte[] src = Bry_.new_u8(Sql_qry_wtr_.Gen_placeholder_parameters(qry)); int src_len = src.length; int args_idx = 0, args_len = args.length, pos = 0; - Bry_bfr bfr = Bry_bfr.new_(src_len); + Bry_bfr bfr = Bry_bfr_.New_w_size(src_len); while (pos < src_len) { int question_pos = Bry_find_.Find_fwd(src, Byte_ascii.Question, pos); if (question_pos == Bry_find_.Not_found) @@ -78,5 +78,5 @@ public class Db_qry_sql implements Db_qry { val_bry = Bry_.Replace(val_bry, Byte_ascii.Apos_bry, Bry_escape_apos); bfr.Add_byte_apos().Add(val_bry).Add_byte_apos(); } - } private static final byte[] Bry_null = Bry_.new_u8("NULL"), Bry_escape_apos = Bry_.new_a7("''"); + } private static final byte[] Bry_null = Bry_.new_u8("NULL"), Bry_escape_apos = Bry_.new_a7("''"); } diff --git a/140_dbs/src/gplx/dbs/qrys/Db_stmt_cmd.java b/140_dbs/src/gplx/dbs/qrys/Db_stmt_cmd.java index 66701f252..c0f5c6eee 100644 --- a/140_dbs/src/gplx/dbs/qrys/Db_stmt_cmd.java +++ b/140_dbs/src/gplx/dbs/qrys/Db_stmt_cmd.java @@ -120,7 +120,7 @@ public class Db_stmt_cmd implements Db_stmt { try {stmt.setString(++val_idx, v);} catch (Exception e) {this.Rls(); throw Err_.new_exc(e, "db", "failed to add value", "type", "text", "val", v, "sql", sql);} return this; } - public Db_stmt Val_rdr_(gplx.core.ios.Io_stream_rdr v, long rdr_len) { + public Db_stmt Val_rdr_(gplx.core.ios.streams.Io_stream_rdr v, long rdr_len) { try {stmt.setBinaryStream(++val_idx, (java.io.InputStream)v.Under(), (int)rdr_len);} catch (Exception e) {throw Err_.new_exc(e, "db", "failed to add value", "type", "rdr", "val", v);} return this; } diff --git a/140_dbs/src/gplx/dbs/qrys/Db_stmt_sql.java b/140_dbs/src/gplx/dbs/qrys/Db_stmt_sql.java index c549e15ca..7cda49b1e 100644 --- a/140_dbs/src/gplx/dbs/qrys/Db_stmt_sql.java +++ b/140_dbs/src/gplx/dbs/qrys/Db_stmt_sql.java @@ -20,9 +20,9 @@ import gplx.core.brys.fmtrs.*; import gplx.core.stores.*; import gplx.dbs.engines.*; public class Db_stmt_sql implements Db_stmt {// used for formatting SQL statements; not used for actual insert into database private static final String Key_na = ""; // key is not_available; only called by procs with signature of Val( v); - private final List_adp args = List_adp_.new_(); - private final Bry_bfr tmp_bfr = Bry_bfr.new_(); - private final Bry_fmtr tmp_fmtr = Bry_fmtr.new_(); + private final List_adp args = List_adp_.New(); + private final Bry_bfr tmp_bfr = Bry_bfr_.New(); + private final Bry_fmtr tmp_fmtr = Bry_fmtr.new_(); public void Ctor_stmt(Db_engine engine, Db_qry qry) {} public Db_conn Conn() {return conn;} public void Conn_(Db_conn v) {this.conn = v;} Db_conn conn; public Db_stmt Reset_stmt() {return this;} @@ -103,10 +103,10 @@ public class Db_stmt_sql implements Db_stmt {// used for formatting SQL statemen try {Add(k, Val_str_wrap(v));} catch (Exception e) {throw Err_.new_exc(e, "db", "failed to add value", "type", "text", "val", v);} return this; } - public Db_stmt Val_rdr_(gplx.core.ios.Io_stream_rdr v, long rdr_len) { + public Db_stmt Val_rdr_(gplx.core.ios.streams.Io_stream_rdr v, long rdr_len) { try { - Bry_bfr bfr = Bry_bfr.new_(); - gplx.core.ios.Io_stream_rdr_.Load_all_to_bfr(bfr, v); + Bry_bfr bfr = Bry_bfr_.New(); + gplx.core.ios.streams.Io_stream_rdr_.Load_all_to_bfr(bfr, v); Add(Key_na, bfr.To_str_and_clear()); } catch (Exception e) {throw Err_.new_exc(e, "db", "failed to add value", "type", "rdr", "val", v);} return this; diff --git a/140_dbs/src/gplx/dbs/sqls/itms/Db_obj_ary_tst.java b/140_dbs/src/gplx/dbs/sqls/itms/Db_obj_ary_tst.java index 8cc2734d8..6d962c8d6 100644 --- a/140_dbs/src/gplx/dbs/sqls/itms/Db_obj_ary_tst.java +++ b/140_dbs/src/gplx/dbs/sqls/itms/Db_obj_ary_tst.java @@ -28,15 +28,15 @@ public class Db_obj_ary_tst { } } class Db_obj_ary_fxt { - private final Db_obj_ary_crt crt = new Db_obj_ary_crt(); - private final Sql_wtr_ctx ctx = new Sql_wtr_ctx(false); - public Db_obj_ary_fxt Init_fld(String name, int tid) {flds_list.Add(new Db_obj_ary_fld(name, tid)); return this;} private List_adp flds_list = List_adp_.new_(); - public Db_obj_ary_fxt Init_vals(Object... ary) {vals_list.Add(ary); return this;} private List_adp vals_list = List_adp_.new_(); + private final Db_obj_ary_crt crt = new Db_obj_ary_crt(); + private final Sql_wtr_ctx ctx = new Sql_wtr_ctx(false); + public Db_obj_ary_fxt Init_fld(String name, int tid) {flds_list.Add(new Db_obj_ary_fld(name, tid)); return this;} private List_adp flds_list = List_adp_.New(); + public Db_obj_ary_fxt Init_vals(Object... ary) {vals_list.Add(ary); return this;} private List_adp vals_list = List_adp_.New(); public Db_obj_ary_fxt Test_sql(String expd) { Sql_core_wtr cmd_wtr = (Sql_core_wtr)Sql_qry_wtr_.Basic; crt.Flds_((Db_obj_ary_fld[])flds_list.To_ary_and_clear(Db_obj_ary_fld.class)); crt.Vals_((Object[][])vals_list.To_ary_and_clear(Object[].class)); - Bry_bfr bfr = Bry_bfr.new_(); + Bry_bfr bfr = Bry_bfr_.New(); cmd_wtr.Where_wtr().Bld_where__db_obj(bfr, ctx, crt); Tfds.Eq(expd, bfr.To_str_and_clear()); return this; diff --git a/140_dbs/src/gplx/dbs/sqls/itms/Sql_from_clause.java b/140_dbs/src/gplx/dbs/sqls/itms/Sql_from_clause.java index 5708e828a..49ec120c3 100644 --- a/140_dbs/src/gplx/dbs/sqls/itms/Sql_from_clause.java +++ b/140_dbs/src/gplx/dbs/sqls/itms/Sql_from_clause.java @@ -21,6 +21,6 @@ public class Sql_from_clause { this.Base_tbl = base_tbl; Tbls.Add(base_tbl); } - public final List_adp Tbls = List_adp_.new_(); - public final Sql_tbl_itm Base_tbl; + public final List_adp Tbls = List_adp_.New(); + public final Sql_tbl_itm Base_tbl; } diff --git a/140_dbs/src/gplx/dbs/sqls/itms/Sql_group_clause.java b/140_dbs/src/gplx/dbs/sqls/itms/Sql_group_clause.java index 3947e812e..d960b5098 100644 --- a/140_dbs/src/gplx/dbs/sqls/itms/Sql_group_clause.java +++ b/140_dbs/src/gplx/dbs/sqls/itms/Sql_group_clause.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.dbs.sqls.itms; import gplx.*; import gplx.dbs.*; import gplx.dbs.sqls.*; public class Sql_group_clause { - public List_adp Flds() {return flds;} List_adp flds = List_adp_.new_(); + public List_adp Flds() {return flds;} List_adp flds = List_adp_.New(); public static Sql_group_clause new_(String... ary) { Sql_group_clause rv = new Sql_group_clause(); diff --git a/140_dbs/src/gplx/dbs/sqls/itms/Sql_order_clause.java b/140_dbs/src/gplx/dbs/sqls/itms/Sql_order_clause.java index be7f156c5..e9d8e9fe0 100644 --- a/140_dbs/src/gplx/dbs/sqls/itms/Sql_order_clause.java +++ b/140_dbs/src/gplx/dbs/sqls/itms/Sql_order_clause.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.dbs.sqls.itms; import gplx.*; import gplx.dbs.*; import gplx.dbs.sqls.*; public class Sql_order_clause { - private final List_adp list = List_adp_.new_(); + private final List_adp list = List_adp_.New(); private Sql_order_fld[] ary; public void Flds__add(Sql_order_fld fld) {list.Add(fld);} public Sql_order_fld[] Flds() { diff --git a/140_dbs/src/gplx/dbs/sqls/wtrs/Sql_core_wtr.java b/140_dbs/src/gplx/dbs/sqls/wtrs/Sql_core_wtr.java index 7808750d8..335268b13 100644 --- a/140_dbs/src/gplx/dbs/sqls/wtrs/Sql_core_wtr.java +++ b/140_dbs/src/gplx/dbs/sqls/wtrs/Sql_core_wtr.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.dbs.sqls.wtrs; import gplx.*; import gplx.dbs.*; import gplx.dbs.sqls.*; import gplx.core.criterias.*; import gplx.dbs.qrys.*; import gplx.dbs.sqls.wtrs.*; import gplx.dbs.sqls.itms.*; public class Sql_core_wtr implements Sql_qry_wtr { - private final Bry_bfr bfr = Bry_bfr.new_(64); + private final Bry_bfr bfr = Bry_bfr_.New_w_size(64); public byte[] Seq__nl = Byte_ascii.Space_bry; public byte Seq__quote = Byte_ascii.Apos, Seq__escape = Byte_ascii.Backslash; public Sql_core_wtr() { diff --git a/140_dbs/src/gplx/dbs/sqls/wtrs/Sql_core_wtr_fxt.java b/140_dbs/src/gplx/dbs/sqls/wtrs/Sql_core_wtr_fxt.java index 42eceb16b..c170d64fb 100644 --- a/140_dbs/src/gplx/dbs/sqls/wtrs/Sql_core_wtr_fxt.java +++ b/140_dbs/src/gplx/dbs/sqls/wtrs/Sql_core_wtr_fxt.java @@ -18,9 +18,9 @@ along with this program. If not, see . package gplx.dbs.sqls.wtrs; import gplx.*; import gplx.dbs.*; import gplx.dbs.sqls.*; import gplx.core.criterias.*; class Sql_core_wtr_fxt { - private final Sql_core_wtr__sqlite wtr = new Sql_core_wtr__sqlite(); - private final Sql_wtr_ctx ctx = new Sql_wtr_ctx(false); - private final Bry_bfr bfr = Bry_bfr.new_(); + private final Sql_core_wtr__sqlite wtr = new Sql_core_wtr__sqlite(); + private final Sql_wtr_ctx ctx = new Sql_wtr_ctx(false); + private final Bry_bfr bfr = Bry_bfr_.New(); public Sql_core_wtr_fxt Sql_wtr_(Sql_qry_wtr v) {sql_wtr = v; return this;} private Sql_qry_wtr sql_wtr = Sql_qry_wtr_.Sqlite; public void Test__val(Object val, String expd) { wtr.Val_wtr().Bld_val(bfr, ctx, val); diff --git a/140_dbs/src/gplx/dbs/sqls/wtrs/Sql_qry_wtr__iosql__tst.java b/140_dbs/src/gplx/dbs/sqls/wtrs/Sql_qry_wtr__iosql__tst.java index 164125396..cde43beff 100644 --- a/140_dbs/src/gplx/dbs/sqls/wtrs/Sql_qry_wtr__iosql__tst.java +++ b/140_dbs/src/gplx/dbs/sqls/wtrs/Sql_qry_wtr__iosql__tst.java @@ -51,10 +51,10 @@ public class Sql_qry_wtr__iosql__tst { } Criteria ioCrt_(String fld, Criteria crt) {return Criteria_fld.new_(fld, crt);} String fld; - private final Sql_wtr_ctx ctx = new Sql_wtr_ctx(false); + private final Sql_wtr_ctx ctx = new Sql_wtr_ctx(false); void tst_Write(String expd, Criteria crt) { Sql_where_wtr where_wtr = ((Sql_core_wtr)Sql_qry_wtr_.Basic).Where_wtr(); - Bry_bfr bfr = Bry_bfr.new_(); + Bry_bfr bfr = Bry_bfr_.New(); where_wtr.Bld_where_elem(bfr, ctx, crt); Tfds.Eq(expd, bfr.To_str_and_clear()); } diff --git a/140_dbs/src/gplx/dbs/sqls/wtrs/Sql_schema_wtr.java b/140_dbs/src/gplx/dbs/sqls/wtrs/Sql_schema_wtr.java index cb417dacd..307cd7075 100644 --- a/140_dbs/src/gplx/dbs/sqls/wtrs/Sql_schema_wtr.java +++ b/140_dbs/src/gplx/dbs/sqls/wtrs/Sql_schema_wtr.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.dbs.sqls.wtrs; import gplx.*; import gplx.dbs.*; import gplx.dbs.sqls.*; import gplx.dbs.metas.*; public class Sql_schema_wtr { - private Bry_bfr tmp_bfr = Bry_bfr.reset_(255); + private Bry_bfr tmp_bfr = Bry_bfr_.Reset(255); public Sql_schema_wtr Bfr_(Bry_bfr bfr) {this.tmp_bfr = bfr; return this;} public String Bld_create_idx(Dbmeta_idx_itm idx) { tmp_bfr.Add_str_a7("CREATE "); @@ -101,5 +101,5 @@ public class Sql_schema_wtr { default: throw Err_.new_unhandled(tid); } } -// public static final Sql_schema_wtr Instance = new Sql_schema_wtr(); +// public static final Sql_schema_wtr Instance = new Sql_schema_wtr(); } diff --git a/140_dbs/src/gplx/dbs/sqls/wtrs/Sql_schema_wtr_tst.java b/140_dbs/src/gplx/dbs/sqls/wtrs/Sql_schema_wtr_tst.java index 67167aa9a..75d3d711b 100644 --- a/140_dbs/src/gplx/dbs/sqls/wtrs/Sql_schema_wtr_tst.java +++ b/140_dbs/src/gplx/dbs/sqls/wtrs/Sql_schema_wtr_tst.java @@ -18,14 +18,14 @@ along with this program. If not, see . package gplx.dbs.sqls.wtrs; import gplx.*; import gplx.dbs.*; import gplx.dbs.sqls.*; import org.junit.*; public class Sql_schema_wtr_tst { - @Before public void setup() {} private final Sql_schema_wtr_fxt fxt = new Sql_schema_wtr_fxt(); + @Before public void setup() {} private final Sql_schema_wtr_fxt fxt = new Sql_schema_wtr_fxt(); @Test public void Idx_unique() { fxt.Test_create_idx(Dbmeta_idx_itm.new_unique_by_tbl("tbl_name", "idx_name", "fld_1", "fld_2") , "CREATE UNIQUE INDEX IF NOT EXISTS tbl_name__idx_name ON tbl_name (fld_1, fld_2);" ); } @Test public void Tbl_basic() { - Dbmeta_fld_list flds = Dbmeta_fld_list.new_(); + Dbmeta_fld_list flds = new Dbmeta_fld_list(); flds.Add_int_pkey("fld_int_pkey"); flds.Add_bool("fld_bool"); flds.Add_short("fld_short"); @@ -53,7 +53,7 @@ public class Sql_schema_wtr_tst { )); } @Test public void Tbl_alter_tbl_add() { - Dbmeta_fld_list flds = Dbmeta_fld_list.new_(); + Dbmeta_fld_list flds = new Dbmeta_fld_list(); flds.Add_int_dflt("fld_int", -1); flds.Add_str_dflt("fld_str", 255, "a"); fxt.Test_alter_tbl_add("tbl_name", flds.Get_by("fld_int"), "ALTER TABLE tbl_name ADD fld_int integer NOT NULL DEFAULT -1;"); diff --git a/140_dbs/src/gplx/dbs/sqls/wtrs/Sql_val_wtr.java b/140_dbs/src/gplx/dbs/sqls/wtrs/Sql_val_wtr.java index 8f0db19b6..5156ba12c 100644 --- a/140_dbs/src/gplx/dbs/sqls/wtrs/Sql_val_wtr.java +++ b/140_dbs/src/gplx/dbs/sqls/wtrs/Sql_val_wtr.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.dbs.sqls.wtrs; import gplx.*; import gplx.dbs.*; import gplx.dbs.sqls.*; public class Sql_val_wtr { -// private final Bry_bfr tmp_bfr = Bry_bfr.new_(32); +// private final Bry_bfr tmp_bfr = Bry_bfr_.New(32); public byte Seq__quote = Byte_ascii.Apos, Seq__escape = Byte_ascii.Backslash; public void Bld_val(Bry_bfr bfr, Sql_wtr_ctx ctx, Object val) { if (ctx.Mode_is_prep) { diff --git a/140_dbs/src/gplx/dbs/stmts/Db_stmt_arg_list.java b/140_dbs/src/gplx/dbs/stmts/Db_stmt_arg_list.java index a0c46d758..392fed34d 100644 --- a/140_dbs/src/gplx/dbs/stmts/Db_stmt_arg_list.java +++ b/140_dbs/src/gplx/dbs/stmts/Db_stmt_arg_list.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.dbs.stmts; import gplx.*; import gplx.dbs.*; public class Db_stmt_arg_list { - private final List_adp list = List_adp_.new_(); + private final List_adp list = List_adp_.New(); public void Clear() {list.Clear();} public int Len() {return list.Len();} public Db_stmt_arg Get_at(int i) {return (Db_stmt_arg)list.Get_at(i);} @@ -49,7 +49,7 @@ public class Db_stmt_arg_list { default: throw Err_.new_unhandled_default(tid); } } - private static void Fill_val(Db_stmt stmt, int tid, String key, Object val) { + public static void Fill_val(Db_stmt stmt, int tid, String key, Object val) { switch (tid) { case Dbmeta_fld_tid.Tid__bool: stmt.Val_bool_as_byte (key, Bool_.cast(val)); break; case Dbmeta_fld_tid.Tid__byte: stmt.Val_byte (key, Byte_.cast(val)); break; diff --git a/140_dbs/src/gplx/dbs/stmts/Db_stmt_mgr.java b/140_dbs/src/gplx/dbs/stmts/Db_stmt_mgr.java index a9658a43f..81de407e6 100644 --- a/140_dbs/src/gplx/dbs/stmts/Db_stmt_mgr.java +++ b/140_dbs/src/gplx/dbs/stmts/Db_stmt_mgr.java @@ -17,11 +17,11 @@ along with this program. If not, see . */ package gplx.dbs.stmts; import gplx.*; import gplx.dbs.*; public class Db_stmt_mgr { - private final List_adp fmt_list = List_adp_.new_(); + private final List_adp fmt_list = List_adp_.New(); private final Db_stmt_arg_list arg_list = new Db_stmt_arg_list(); public boolean Mode_is_stmt() {return mode_is_stmt;} public Db_stmt_mgr Mode_is_stmt_(boolean v) {mode_is_stmt = v; return this;} private boolean mode_is_stmt = true; public void Clear() {arg_list.Clear(); fmt_list.Clear(); bfr.Clear();} - public Bry_bfr Bfr() {return bfr;} private final Bry_bfr bfr = Bry_bfr.new_(); + public Bry_bfr Bfr() {return bfr;} private final Bry_bfr bfr = Bry_bfr_.New(); public void Add_var_many(Object... ary) { for (Object o : ary) fmt_list.Add(o); diff --git a/140_dbs/src/gplx/dbs/sys/Db_sys_mgr.java b/140_dbs/src/gplx/dbs/sys/Db_sys_mgr.java index eff92cf5d..db54349ba 100644 --- a/140_dbs/src/gplx/dbs/sys/Db_sys_mgr.java +++ b/140_dbs/src/gplx/dbs/sys/Db_sys_mgr.java @@ -22,7 +22,7 @@ public class Db_sys_mgr { private boolean assert_exists = true; public Db_sys_mgr(Db_conn conn) { this.conn = conn; - sys_tbl = new Db_sys_tbl(conn); + this.sys_tbl = new Db_sys_tbl(conn); } public int Autonum_next(String tbl, String fld) {return Autonum_next(String_.Concat(tbl, ".", fld));} public int Autonum_next(String key) { diff --git a/140_dbs/src/gplx/dbs/sys/Db_sys_tbl.java b/140_dbs/src/gplx/dbs/sys/Db_sys_tbl.java index d193f4734..9021bd09b 100644 --- a/140_dbs/src/gplx/dbs/sys/Db_sys_tbl.java +++ b/140_dbs/src/gplx/dbs/sys/Db_sys_tbl.java @@ -17,10 +17,10 @@ along with this program. If not, see . */ package gplx.dbs.sys; import gplx.*; import gplx.dbs.*; class Db_sys_tbl implements Rls_able { - private final String tbl_name = "gfdb_sys"; + private final String tbl_name = "gfdb_sys"; private String fld_key, fld_val; - private final Dbmeta_fld_list flds = Dbmeta_fld_list.new_(); - private final Db_conn conn; private Db_stmt stmt_insert, stmt_update, stmt_select; + private final Dbmeta_fld_list flds = new Dbmeta_fld_list(); + private final Db_conn conn; private Db_stmt stmt_insert, stmt_update, stmt_select; public Db_sys_tbl(Db_conn conn) { this.conn = conn; fld_key = flds.Add_str_pkey("sys_key", 255); fld_val = flds.Add_text("sys_val"); diff --git a/140_dbs/src/gplx/dbs/utls/Db_cmd_backup.java b/140_dbs/src/gplx/dbs/utls/Db_cmd_backup.java index ad5e758b4..1374b1d9a 100644 --- a/140_dbs/src/gplx/dbs/utls/Db_cmd_backup.java +++ b/140_dbs/src/gplx/dbs/utls/Db_cmd_backup.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.dbs.utls; import gplx.*; import gplx.dbs.*; import gplx.core.envs.*; -public class Db_cmd_backup implements GfoInvkAble { +public class Db_cmd_backup implements Gfo_invk { public String DbName() {return dbName;} public Db_cmd_backup DbName_(String val) {dbName = val; return this;} private String dbName = "db"; public Io_url ExeUrl() {return exeUrl;} public Db_cmd_backup ExeUrl_(Io_url val) {exeUrl = val; return this;} Io_url exeUrl; public Io_url BkpDir() {return bkpDir;} public Db_cmd_backup BkpDir_(Io_url val) {bkpDir = val; return this;} Io_url bkpDir; @@ -41,9 +41,9 @@ public class Db_cmd_backup implements GfoInvkAble { else if (ctx.Match(k, Invk_Pwd_)) pwd = GfoMsgUtl.SetStr(ctx, m, pwd); else if (ctx.Match(k, Invk_DteFmt_)) dteFmt = GfoMsgUtl.SetStr(ctx, m, dteFmt); else if (ctx.Match(k, Invk_BkpFilNameFmt_)) bkpFilNameFmt = GfoMsgUtl.SetStr(ctx, m, bkpFilNameFmt); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; - } public static final String + } public static final String Invk_ExeUrl = "ExeUrl", Invk_BkpDir = "BkpDir", Invk_Usr = "Usr", Invk_Pwd = "Pwd", Invk_DteFmt = "DteFmt", Invk_BkpFilNameFmt = "BkpFilNameFmt" , Invk_ExeUrl_ = "ExeUrl_", Invk_BkpDir_ = "BkpDir_", Invk_Usr_ = "Usr_", Invk_Pwd_ = "Pwd_", Invk_DteFmt_ = "DteFmt_", Invk_BkpFilNameFmt_ = "BkpFilNameFmt_" ; diff --git a/140_dbs/tst/gplx/dbs/GfoNdeTstr.java b/140_dbs/tst/gplx/dbs/GfoNdeTstr.java index c8c806ecf..24eb4c9ea 100644 --- a/140_dbs/tst/gplx/dbs/GfoNdeTstr.java +++ b/140_dbs/tst/gplx/dbs/GfoNdeTstr.java @@ -19,11 +19,11 @@ package gplx.dbs; import gplx.*; import gplx.core.gfo_ndes.*; public class GfoNdeTstr { public static void tst_ValsByCol(GfoNde nde, String fld, Object... expdAry) { - List_adp expd = List_adp_.new_(); + List_adp expd = List_adp_.New(); for (int i = 0; i < expdAry.length; i++) { expd.Add(Object_.Xto_str_strict_or_empty(expdAry[i])); } - List_adp actl = List_adp_.new_(); + List_adp actl = List_adp_.New(); for (int i = 0; i < nde.Subs().Count(); i++) { GfoNde sub = nde.Subs().FetchAt_asGfoNde(i); actl.Add(Object_.Xto_str_strict_or_empty(sub.Read(fld))); diff --git a/150_gfui/.classpath b/150_gfui/.classpath index bd1efe2b3..ccd523690 100644 --- a/150_gfui/.classpath +++ b/150_gfui/.classpath @@ -1,20 +1,7 @@ - - - - - - - - - - - - - - + diff --git a/150_gfui/src_100_basic/gplx/gfui/DirInt.java b/150_gfui/src/gplx/gfui/DirInt.java similarity index 96% rename from 150_gfui/src_100_basic/gplx/gfui/DirInt.java rename to 150_gfui/src/gplx/gfui/DirInt.java index 4f9cb88c5..533902b85 100644 --- a/150_gfui/src_100_basic/gplx/gfui/DirInt.java +++ b/150_gfui/src/gplx/gfui/DirInt.java @@ -29,7 +29,7 @@ public class DirInt { } public boolean BoundFail(int i, int bound) {return this == Bwd ? i < bound : i > bound;} DirInt(int v) {this.val = v;} - public static final DirInt + public static final DirInt Fwd = new DirInt(1) , Bwd = new DirInt(-1); } diff --git a/150_gfui/src_100_basic/gplx/gfui/GfuiAlign.java b/150_gfui/src/gplx/gfui/GfuiAlign.java similarity index 100% rename from 150_gfui/src_100_basic/gplx/gfui/GfuiAlign.java rename to 150_gfui/src/gplx/gfui/GfuiAlign.java diff --git a/150_gfui/src_100_basic/gplx/gfui/GfuiAlign_.java b/150_gfui/src/gplx/gfui/GfuiAlign_.java similarity index 93% rename from 150_gfui/src_100_basic/gplx/gfui/GfuiAlign_.java rename to 150_gfui/src/gplx/gfui/GfuiAlign_.java index 4427824c8..76fe0f5b0 100644 --- a/150_gfui/src_100_basic/gplx/gfui/GfuiAlign_.java +++ b/150_gfui/src/gplx/gfui/GfuiAlign_.java @@ -20,18 +20,18 @@ import gplx.core.interfaces.*; public class GfuiAlign_ implements ParseAble { public static GfuiAlign as_(Object obj) {return obj instanceof GfuiAlign ? (GfuiAlign)obj : null;} public static GfuiAlign cast(Object obj) {try {return (GfuiAlign)obj;} catch(Exception exc) {throw Err_.new_type_mismatch_w_exc(exc, GfuiAlign.class, obj);}} - public static final GfuiAlign + public static final GfuiAlign Null = new_(0, "nil") , Lo = new_(1, "lo") , Mid = new_(2, "mid") , Hi = new_(3, "hi"); - public static final GfuiAlign + public static final GfuiAlign Top = Lo , Bot = Hi , Left = Lo , Right = Hi; static GfuiAlign new_(int v, String s) {return new GfuiAlign(v, s);} - public static final GfuiAlign_ Parser = new GfuiAlign_(); + public static final GfuiAlign_ Parser = new GfuiAlign_(); public Object ParseAsObj(String raw) {return parse(raw);} public static GfuiAlign val_(int v) { if (v == Lo.Val()) return Lo; diff --git a/150_gfui/src_100_basic/gplx/gfui/GfuiAxisType.java b/150_gfui/src/gplx/gfui/GfuiAxisType.java similarity index 88% rename from 150_gfui/src_100_basic/gplx/gfui/GfuiAxisType.java rename to 150_gfui/src/gplx/gfui/GfuiAxisType.java index f70713e93..bfba4511b 100644 --- a/150_gfui/src_100_basic/gplx/gfui/GfuiAxisType.java +++ b/150_gfui/src/gplx/gfui/GfuiAxisType.java @@ -20,6 +20,6 @@ public class GfuiAxisType { public int Val() {return val;} int val; public GfuiAxisType CrossAxis() {return val == GfuiAxisType.X.val ? GfuiAxisType.Y : GfuiAxisType.X;} GfuiAxisType(int v) {this.val = v;} - public static final GfuiAxisType X = new GfuiAxisType(1); - public static final GfuiAxisType Y = new GfuiAxisType(2); + public static final GfuiAxisType X = new GfuiAxisType(1); + public static final GfuiAxisType Y = new GfuiAxisType(2); } diff --git a/150_gfui/src_100_basic/gplx/gfui/GfuiBorderEdge.java b/150_gfui/src/gplx/gfui/GfuiBorderEdge.java similarity index 83% rename from 150_gfui/src_100_basic/gplx/gfui/GfuiBorderEdge.java rename to 150_gfui/src/gplx/gfui/GfuiBorderEdge.java index 1dd01b76d..a7644c6b0 100644 --- a/150_gfui/src_100_basic/gplx/gfui/GfuiBorderEdge.java +++ b/150_gfui/src/gplx/gfui/GfuiBorderEdge.java @@ -24,11 +24,11 @@ public class GfuiBorderEdge { return new GfuiBorderEdge(comp.val + val); } @gplx.Internal protected GfuiBorderEdge(int v) {this.val = v;} - public static final GfuiBorderEdge Left = new GfuiBorderEdge(1); - public static final GfuiBorderEdge Right = new GfuiBorderEdge(2); - public static final GfuiBorderEdge Top = new GfuiBorderEdge(4); - public static final GfuiBorderEdge Bot = new GfuiBorderEdge(8); - public static final GfuiBorderEdge All = new GfuiBorderEdge(15); + public static final GfuiBorderEdge Left = new GfuiBorderEdge(1); + public static final GfuiBorderEdge Right = new GfuiBorderEdge(2); + public static final GfuiBorderEdge Top = new GfuiBorderEdge(4); + public static final GfuiBorderEdge Bot = new GfuiBorderEdge(8); + public static final GfuiBorderEdge All = new GfuiBorderEdge(15); } class GfuiBorderEdge_ { public static String To_str(GfuiBorderEdge edge) { @@ -48,7 +48,7 @@ class GfuiBorderEdge_ { else if (String_.Eq(raw, All_raw)) return GfuiBorderEdge.All; else throw Err_.new_unhandled(raw); } - public static final String + public static final String All_raw = "all" , Top_raw = "top" , Left_raw = "left" diff --git a/150_gfui/src_100_basic/gplx/gfui/PointAdp.java b/150_gfui/src/gplx/gfui/PointAdp.java similarity index 79% rename from 150_gfui/src_100_basic/gplx/gfui/PointAdp.java rename to 150_gfui/src/gplx/gfui/PointAdp.java index a48d48c9a..b97b4f84f 100644 --- a/150_gfui/src_100_basic/gplx/gfui/PointAdp.java +++ b/150_gfui/src/gplx/gfui/PointAdp.java @@ -17,11 +17,11 @@ along with this program. If not, see . */ package gplx.gfui; import gplx.*; public class PointAdp implements To_str_able { - public int X() {return x;} final int x; - public int Y() {return y;} final int y; + public int X() {return x;} final int x; + public int Y() {return y;} final int y; public PointAdp Op_add(PointAdp val) {return new PointAdp(x + val.x, y + val.y);} - @gplx.Internal protected PointAdp Op_add(int xv, int yv) {return new PointAdp(x + xv, y + yv);} - @gplx.Internal protected PointAdp Op_add(int i) {return new PointAdp(x + i, y + i);} + public PointAdp Op_add(int xv, int yv) {return new PointAdp(x + xv, y + yv);} + public PointAdp Op_add(int i) {return new PointAdp(x + i, y + i);} public PointAdp Op_subtract(PointAdp val) {return new PointAdp(x - val.x, y - val.y);} public boolean Eq(Object compObj) { PointAdp comp = PointAdp_.as_(compObj); if (comp == null) return false; @@ -31,5 +31,5 @@ public class PointAdp implements To_str_able { @Override public String toString() {return To_str();} @Override public boolean equals(Object obj) {return Eq(obj);} @Override public int hashCode() {return super.hashCode();} - @gplx.Internal protected PointAdp(int x, int y) {this.x = x; this.y = y;} + public PointAdp(int x, int y) {this.x = x; this.y = y;} } diff --git a/150_gfui/src_100_basic/gplx/gfui/PointAdp_.java b/150_gfui/src/gplx/gfui/PointAdp_.java similarity index 90% rename from 150_gfui/src_100_basic/gplx/gfui/PointAdp_.java rename to 150_gfui/src/gplx/gfui/PointAdp_.java index 15f0d9145..4ed69ae8a 100644 --- a/150_gfui/src_100_basic/gplx/gfui/PointAdp_.java +++ b/150_gfui/src/gplx/gfui/PointAdp_.java @@ -17,8 +17,8 @@ along with this program. If not, see . */ package gplx.gfui; import gplx.*; public class PointAdp_ { - public static final PointAdp Null = new PointAdp(Int_.Min_value, Int_.Min_value); - public static final PointAdp Zero = new PointAdp(0, 0); + public static final PointAdp Null = new PointAdp(Int_.Min_value, Int_.Min_value); + public static final PointAdp Zero = new PointAdp(0, 0); public static PointAdp as_(Object obj) {return obj instanceof PointAdp ? (PointAdp)obj : null;} public static PointAdp cast(Object obj) {try {return (PointAdp)obj;} catch(Exception exc) {throw Err_.new_type_mismatch_w_exc(exc, PointAdp.class, obj);}} public static PointAdp new_(int x, int y) {return new PointAdp(x, y);} diff --git a/150_gfui/src_100_basic/gplx/gfui/RectAdp.java b/150_gfui/src/gplx/gfui/RectAdp.java similarity index 94% rename from 150_gfui/src_100_basic/gplx/gfui/RectAdp.java rename to 150_gfui/src/gplx/gfui/RectAdp.java index 2ddaa2ddf..4b4358341 100644 --- a/150_gfui/src_100_basic/gplx/gfui/RectAdp.java +++ b/150_gfui/src/gplx/gfui/RectAdp.java @@ -40,5 +40,5 @@ public class RectAdp { @Override public int hashCode() {return super.hashCode();} public String Xto_str() {return String_.Concat_any(pos, ",", size);} - @gplx.Internal protected RectAdp(PointAdp pos, SizeAdp size) {this.pos = pos; this.size = size;} + public RectAdp(PointAdp pos, SizeAdp size) {this.pos = pos; this.size = size;} } diff --git a/150_gfui/src_100_basic/gplx/gfui/RectAdpF.java b/150_gfui/src/gplx/gfui/RectAdpF.java similarity index 91% rename from 150_gfui/src_100_basic/gplx/gfui/RectAdpF.java rename to 150_gfui/src/gplx/gfui/RectAdpF.java index 05bf5ffb9..1bca90760 100644 --- a/150_gfui/src_100_basic/gplx/gfui/RectAdpF.java +++ b/150_gfui/src/gplx/gfui/RectAdpF.java @@ -24,7 +24,7 @@ public class RectAdpF { //_20101206 // supports Graphics.MeasureString return comp.x == x && comp.y == y && comp.width == width && comp.height == height; } - public static final RectAdpF Null = new_(Int_.Min_value, Int_.Min_value, Int_.Min_value, Int_.Min_value); + public static final RectAdpF Null = new_(Int_.Min_value, Int_.Min_value, Int_.Min_value, Int_.Min_value); public static RectAdpF new_(float x, float y, float width, float height) { RectAdpF rv = new RectAdpF(); rv.x = x; rv.y = y; rv.width = width; rv.height = height; diff --git a/150_gfui/src_100_basic/gplx/gfui/RectAdp_.java b/150_gfui/src/gplx/gfui/RectAdp_.java similarity index 94% rename from 150_gfui/src_100_basic/gplx/gfui/RectAdp_.java rename to 150_gfui/src/gplx/gfui/RectAdp_.java index 2d7a45110..aa5b76b8a 100644 --- a/150_gfui/src_100_basic/gplx/gfui/RectAdp_.java +++ b/150_gfui/src/gplx/gfui/RectAdp_.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.gfui; import gplx.*; public class RectAdp_ { - public static final RectAdp Zero = new RectAdp(PointAdp_.Zero, SizeAdp_.Zero); + public static final RectAdp Zero = new RectAdp(PointAdp_.Zero, SizeAdp_.Zero); public static RectAdp new_(int x, int y, int width, int height) {return new RectAdp(PointAdp_.new_(x, y), SizeAdp_.new_(width, height));} public static RectAdp corners_(PointAdp upperLeft, PointAdp bottomRight) {return new RectAdp(upperLeft, SizeAdp_.corners_(upperLeft, bottomRight));} public static RectAdp vector_(PointAdp pos, SizeAdp size) {return new RectAdp(pos, size);} diff --git a/150_gfui/src_100_basic/gplx/gfui/SizeAdp.java b/150_gfui/src/gplx/gfui/SizeAdp.java similarity index 76% rename from 150_gfui/src_100_basic/gplx/gfui/SizeAdp.java rename to 150_gfui/src/gplx/gfui/SizeAdp.java index 2d653167e..c0892d314 100644 --- a/150_gfui/src_100_basic/gplx/gfui/SizeAdp.java +++ b/150_gfui/src/gplx/gfui/SizeAdp.java @@ -21,9 +21,9 @@ public class SizeAdp { public int Height() {return height;} int height; public int AxisLength(GfuiAxisType axis) {return axis == GfuiAxisType.X ? width : height;} public SizeAdp Op_add(int w, int h) {return SizeAdp_.new_(width + w, height + h);} - @gplx.Internal protected SizeAdp Op_add(SizeAdp s) {return SizeAdp_.new_(width + s.width, height + s.height);} - @gplx.Internal protected SizeAdp Op_subtract(int val) {return SizeAdp_.new_(width - val, height - val);} - @gplx.Internal protected SizeAdp Op_subtract(int w, int h) {return SizeAdp_.new_(width - w, height - h);} + public SizeAdp Op_add(SizeAdp s) {return SizeAdp_.new_(width + s.width, height + s.height);} + public SizeAdp Op_subtract(int val) {return SizeAdp_.new_(width - val, height - val);} + public SizeAdp Op_subtract(int w, int h) {return SizeAdp_.new_(width - w, height - h);} public String To_str() {return String_.Concat_any(width, ",", height);} public boolean Eq(Object o) { SizeAdp comp = (SizeAdp)o; if (comp == null) return false; @@ -32,5 +32,5 @@ public class SizeAdp { @Override public String toString() {return To_str();} @Override public boolean equals(Object obj) {return Eq(obj);} @Override public int hashCode() {return super.hashCode();} - @gplx.Internal protected SizeAdp(int width, int height) {this.width = width; this.height = height;} + public SizeAdp(int width, int height) {this.width = width; this.height = height;} } diff --git a/150_gfui/src_100_basic/gplx/gfui/SizeAdpF.java b/150_gfui/src/gplx/gfui/SizeAdpF.java similarity index 100% rename from 150_gfui/src_100_basic/gplx/gfui/SizeAdpF.java rename to 150_gfui/src/gplx/gfui/SizeAdpF.java diff --git a/150_gfui/src_100_basic/gplx/gfui/SizeAdpF_.java b/150_gfui/src/gplx/gfui/SizeAdpF_.java similarity index 87% rename from 150_gfui/src_100_basic/gplx/gfui/SizeAdpF_.java rename to 150_gfui/src/gplx/gfui/SizeAdpF_.java index 5761230e3..ed64b1997 100644 --- a/150_gfui/src_100_basic/gplx/gfui/SizeAdpF_.java +++ b/150_gfui/src/gplx/gfui/SizeAdpF_.java @@ -17,9 +17,9 @@ along with this program. If not, see . */ package gplx.gfui; import gplx.*; public class SizeAdpF_ { - public static final SizeAdpF Null = new_(Int_.Min_value, Int_.Min_value); - public static final SizeAdpF Zero = new_(0, 0); - public static final SizeAdpF Parser = new SizeAdpF(0, 0); + public static final SizeAdpF Null = new_(Int_.Min_value, Int_.Min_value); + public static final SizeAdpF Zero = new_(0, 0); + public static final SizeAdpF Parser = new SizeAdpF(0, 0); public static SizeAdpF as_(Object obj) {return obj instanceof SizeAdpF ? (SizeAdpF)obj : null;} public static SizeAdpF new_(float width, float height) {return new SizeAdpF(width, height);} public static SizeAdpF coerce_(Object obj) {SizeAdpF rv = as_(obj); return rv == null ? parse((String)obj) : rv;} diff --git a/150_gfui/src_100_basic/gplx/gfui/SizeAdp_.java b/150_gfui/src/gplx/gfui/SizeAdp_.java similarity index 89% rename from 150_gfui/src_100_basic/gplx/gfui/SizeAdp_.java rename to 150_gfui/src/gplx/gfui/SizeAdp_.java index ebb80694e..5ae880264 100644 --- a/150_gfui/src_100_basic/gplx/gfui/SizeAdp_.java +++ b/150_gfui/src/gplx/gfui/SizeAdp_.java @@ -17,9 +17,9 @@ along with this program. If not, see . */ package gplx.gfui; import gplx.*; public class SizeAdp_ { - public static final SizeAdp Null = new SizeAdp(Int_.Min_value, Int_.Min_value); - public static final SizeAdp Zero = new SizeAdp(0, 0); - public static final SizeAdp[] Ary_empty = new SizeAdp[0]; + public static final SizeAdp Null = new SizeAdp(Int_.Min_value, Int_.Min_value); + public static final SizeAdp Zero = new SizeAdp(0, 0); + public static final SizeAdp[] Ary_empty = new SizeAdp[0]; public static SizeAdp cast(Object obj) {try {return (SizeAdp)obj;} catch(Exception exc) {throw Err_.new_type_mismatch_w_exc(exc, SizeAdp.class, obj);}} public static SizeAdp new_(int width, int height) {return new SizeAdp(width, height);} public static SizeAdp parse(String raw) {return parse_or(raw, SizeAdp_.Null);} diff --git a/150_gfui/src_120_draw_objs/gplx/gfui/GfuiBorderMgr.java b/150_gfui/src/gplx/gfui/controls/GfuiBorderMgr.java similarity index 95% rename from 150_gfui/src_120_draw_objs/gplx/gfui/GfuiBorderMgr.java rename to 150_gfui/src/gplx/gfui/controls/GfuiBorderMgr.java index 5138556a5..617528319 100644 --- a/150_gfui/src_120_draw_objs/gplx/gfui/GfuiBorderMgr.java +++ b/150_gfui/src/gplx/gfui/controls/GfuiBorderMgr.java @@ -15,7 +15,8 @@ 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.gfui; import gplx.*; +package gplx.gfui.controls; import gplx.*; import gplx.gfui.*; +import gplx.gfui.draws.*; import gplx.gfui.gfxs.*; import gplx.core.strings.*; public class GfuiBorderMgr { public PenAdp All() {return all;} public GfuiBorderMgr All_(PenAdp v) {SyncPens(true); all = v; return this;} PenAdp all; diff --git a/150_gfui/tst/gplx/gfui/GfuiBorderMgr_tst.java b/150_gfui/src/gplx/gfui/controls/GfuiBorderMgr_tst.java similarity index 91% rename from 150_gfui/tst/gplx/gfui/GfuiBorderMgr_tst.java rename to 150_gfui/src/gplx/gfui/controls/GfuiBorderMgr_tst.java index 48714f7e7..0235c48d7 100644 --- a/150_gfui/tst/gplx/gfui/GfuiBorderMgr_tst.java +++ b/150_gfui/src/gplx/gfui/controls/GfuiBorderMgr_tst.java @@ -15,8 +15,8 @@ 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.gfui; import gplx.*; -import org.junit.*; +package gplx.gfui.controls; import gplx.*; import gplx.gfui.*; +import org.junit.*; import gplx.gfui.draws.*; import gplx.gfui.imgs.*; public class GfuiBorderMgr_tst { @Before public void setup() { borderMgr = GfuiBorderMgr.new_(); diff --git a/150_gfui/src_430_box_custom/gplx/gfui/DataBndr_whenEvt_execCmd.java b/150_gfui/src/gplx/gfui/controls/customs/DataBndr_whenEvt_execCmd.java similarity index 68% rename from 150_gfui/src_430_box_custom/gplx/gfui/DataBndr_whenEvt_execCmd.java rename to 150_gfui/src/gplx/gfui/controls/customs/DataBndr_whenEvt_execCmd.java index a7a9d86bf..37fdc68a7 100644 --- a/150_gfui/src_430_box_custom/gplx/gfui/DataBndr_whenEvt_execCmd.java +++ b/150_gfui/src/gplx/gfui/controls/customs/DataBndr_whenEvt_execCmd.java @@ -15,23 +15,23 @@ 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.gfui; import gplx.*; -import gplx.core.interfaces.*; -public class DataBndr_whenEvt_execCmd implements InjectAble, GfoInvkAble, GfoEvObj { - public GfoEvMgr EvMgr() {if (evMgr == null) evMgr = GfoEvMgr.new_(this); return evMgr;} GfoEvMgr evMgr; +package gplx.gfui.controls.customs; import gplx.*; import gplx.gfui.*; import gplx.gfui.controls.*; +import gplx.core.interfaces.*; import gplx.gfui.controls.elems.*; +public class DataBndr_whenEvt_execCmd implements InjectAble, Gfo_invk, Gfo_evt_itm { + public Gfo_evt_mgr Evt_mgr() {if (evt_mgr == null) evt_mgr = new Gfo_evt_mgr(this); return evt_mgr;} Gfo_evt_mgr evt_mgr; public DataBndr_whenEvt_execCmd WhenArg_(String v) {whenArg = v; return this;} private String whenArg = "v"; - public DataBndr_whenEvt_execCmd WhenEvt_(GfoEvObj whenSrc, String whenEvt) { + public DataBndr_whenEvt_execCmd WhenEvt_(Gfo_evt_itm whenSrc, String whenEvt) { this.whenEvt = whenEvt; - GfoEvMgr_.SubSame(whenSrc, whenEvt, this); + Gfo_evt_mgr_.Sub_same(whenSrc, whenEvt, this); return this; } - public DataBndr_whenEvt_execCmd GetCmd_(GfoInvkAble getInvk, String getCmd) { + public DataBndr_whenEvt_execCmd GetCmd_(Gfo_invk getInvk, String getCmd) { this.getInvk = getInvk; this.getCmd = getCmd; return this; - } GfoInvkAble getInvk; String getCmd; + } Gfo_invk getInvk; String getCmd; public void Inject(Object owner) { - setInvk = GfoInvkAble_.cast(owner); + setInvk = (Gfo_invk)owner; } public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, whenEvt)) { @@ -39,11 +39,11 @@ public class DataBndr_whenEvt_execCmd implements InjectAble, GfoInvkAble, GfoEvO Object getVal = getInvk.Invk(GfsCtx.Instance, 0, getCmd, GfoMsg_.new_cast_(getCmd).Add("v", evtVal)); GfoMsg setMsg = GfoMsg_.new_cast_(setCmd).Add("v", Object_.Xto_str_strict_or_empty(getVal)); setInvk.Invk(GfsCtx.Instance, 0, setCmd, setMsg); - return GfoInvkAble_.Rv_handled; + return Gfo_invk_.Rv_handled; } - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; } - String whenEvt, setCmd; GfoInvkAble setInvk; + String whenEvt, setCmd; Gfo_invk setInvk; public static DataBndr_whenEvt_execCmd text_() { DataBndr_whenEvt_execCmd rv = new DataBndr_whenEvt_execCmd(); rv.setCmd = GfuiElemKeys.Text_set; diff --git a/150_gfui/src_430_box_custom/gplx/gfui/GfuiBnd_box_status.java b/150_gfui/src/gplx/gfui/controls/customs/GfuiBnd_box_status.java similarity index 79% rename from 150_gfui/src_430_box_custom/gplx/gfui/GfuiBnd_box_status.java rename to 150_gfui/src/gplx/gfui/controls/customs/GfuiBnd_box_status.java index fedee6617..907defce6 100644 --- a/150_gfui/src_430_box_custom/gplx/gfui/GfuiBnd_box_status.java +++ b/150_gfui/src/gplx/gfui/controls/customs/GfuiBnd_box_status.java @@ -15,11 +15,12 @@ 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.gfui; import gplx.*; -public class GfuiBnd_box_status implements GfoInvkAble, UsrMsgWkr { +package gplx.gfui.controls.customs; import gplx.*; import gplx.gfui.*; import gplx.gfui.controls.*; +import gplx.gfui.draws.*; import gplx.gfui.kits.core.*; import gplx.gfui.envs.*; import gplx.gfui.controls.windows.*; import gplx.gfui.controls.elems.*; import gplx.gfui.controls.standards.*; +public class GfuiBnd_box_status implements Gfo_invk, UsrMsgWkr { public GfuiElem Box() {return box;} GfuiElem box; public void ExecUsrMsg(int type, UsrMsg umsg) { - box.Invoke(GfoInvkAbleCmd.arg_(this, WriteText_cmd, umsg.To_str())); + box.Invoke(Gfo_invk_cmd.New_by_val(this, WriteText_cmd, umsg.To_str())); } public void WriteText(String text) { GfuiElem lastFocus = GfuiFocusMgr.Instance.FocusedElem(); // HACK:WINFORMS:.Visible=true will automatically transfer focus to textBox; force Focus back to original @@ -41,7 +42,7 @@ public class GfuiBnd_box_status implements GfoInvkAble, UsrMsgWkr { if (ctx.Match(k, WriteText_cmd)) WriteText(m.ReadStr("v")); else if (ctx.Match(k, TimerTick_evt)) HideWin(); return this; - } static final String TimerTick_evt = "TimerTick", WriteText_cmd = "WriteText"; + } static final String TimerTick_evt = "TimerTick", WriteText_cmd = "WriteText"; TimerAdp timer; public static GfuiBnd_box_status new_(String key) { GfuiBnd_box_status rv = new GfuiBnd_box_status(); diff --git a/150_gfui/src_430_box_custom/gplx/gfui/GfuiCheckListBox.java b/150_gfui/src/gplx/gfui/controls/customs/GfuiCheckListBox.java similarity index 90% rename from 150_gfui/src_430_box_custom/gplx/gfui/GfuiCheckListBox.java rename to 150_gfui/src/gplx/gfui/controls/customs/GfuiCheckListBox.java index 4ec85d0fc..6ea961fa4 100644 --- a/150_gfui/src_430_box_custom/gplx/gfui/GfuiCheckListBox.java +++ b/150_gfui/src/gplx/gfui/controls/customs/GfuiCheckListBox.java @@ -15,8 +15,9 @@ 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.gfui; import gplx.*; +package gplx.gfui.controls.customs; import gplx.*; import gplx.gfui.*; import gplx.gfui.controls.*; import gplx.core.lists.*; +import gplx.gfui.controls.gxws.*; import gplx.gfui.controls.elems.*; public class GfuiCheckListBox extends GfuiElemBase { public void Items_reverse() {checkListBox.Items_reverse();} public void Items_count() {checkListBox.Items_count();} diff --git a/150_gfui/src_430_box_custom/gplx/gfui/GfuiCheckListPanel.java b/150_gfui/src/gplx/gfui/controls/customs/GfuiCheckListPanel.java similarity index 87% rename from 150_gfui/src_430_box_custom/gplx/gfui/GfuiCheckListPanel.java rename to 150_gfui/src/gplx/gfui/controls/customs/GfuiCheckListPanel.java index 5d88ef952..7fa3ec3bd 100644 --- a/150_gfui/src_430_box_custom/gplx/gfui/GfuiCheckListPanel.java +++ b/150_gfui/src/gplx/gfui/controls/customs/GfuiCheckListPanel.java @@ -15,7 +15,8 @@ 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.gfui; import gplx.*; +package gplx.gfui.controls.customs; import gplx.*; import gplx.gfui.*; import gplx.gfui.controls.*; +import gplx.gfui.layouts.*; import gplx.gfui.controls.elems.*; import gplx.gfui.controls.standards.*; public class GfuiCheckListPanel extends GfuiElemBase { @Override public void ctor_GfuiBox_base(Keyval_hash ctorArgs) { super.ctor_GfuiBox_base(ctorArgs); @@ -49,7 +50,7 @@ public class GfuiCheckListPanel extends GfuiElemBase { else if (ctx.Match(k, ReverseChks_cmd)) listBox.Items_reverse(); else return super.Invk(ctx, ikey, k, m); return this; - } public static final String ToggleChecks_cmd = "ToggleChecks", ReverseChks_cmd = "ReverseChks"; + } public static final String ToggleChecks_cmd = "ToggleChecks", ReverseChks_cmd = "ReverseChks"; GfuiChkBox toggle; GfuiCheckListBox listBox = GfuiCheckListBox.new_(); public static GfuiCheckListPanel new_() { diff --git a/150_gfui/src_430_box_custom/gplx/gfui/GfuiFormPanel.java b/150_gfui/src/gplx/gfui/controls/customs/GfuiFormPanel.java similarity index 85% rename from 150_gfui/src_430_box_custom/gplx/gfui/GfuiFormPanel.java rename to 150_gfui/src/gplx/gfui/controls/customs/GfuiFormPanel.java index dabf3496a..e8749b9ac 100644 --- a/150_gfui/src_430_box_custom/gplx/gfui/GfuiFormPanel.java +++ b/150_gfui/src/gplx/gfui/controls/customs/GfuiFormPanel.java @@ -15,7 +15,8 @@ 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.gfui; import gplx.*; +package gplx.gfui.controls.customs; import gplx.*; import gplx.gfui.*; import gplx.gfui.controls.*; +import gplx.gfui.layouts.*; import gplx.gfui.kits.core.*; import gplx.gfui.controls.windows.*; import gplx.gfui.controls.elems.*; public class GfuiFormPanel extends GfuiElemBase { @Override public void ctor_GfuiBox_base(Keyval_hash ctorArgs) { super.ctor_GfuiBox_base(ctorArgs); diff --git a/150_gfui/src_430_box_custom/gplx/gfui/GfuiIoDialogUtl.java b/150_gfui/src/gplx/gfui/controls/customs/GfuiIoDialogUtl.java similarity index 91% rename from 150_gfui/src_430_box_custom/gplx/gfui/GfuiIoDialogUtl.java rename to 150_gfui/src/gplx/gfui/controls/customs/GfuiIoDialogUtl.java index d272f4776..81d54a710 100644 --- a/150_gfui/src_430_box_custom/gplx/gfui/GfuiIoDialogUtl.java +++ b/150_gfui/src/gplx/gfui/controls/customs/GfuiIoDialogUtl.java @@ -15,11 +15,12 @@ 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.gfui; import gplx.*; +package gplx.gfui.controls.customs; import gplx.*; import gplx.gfui.*; import gplx.gfui.controls.*; import java.io.File; import java.awt.FileDialog; import javax.swing.JFrame; +import gplx.gfui.controls.elems.*; import gplx.gfui.controls.windows.*; public class GfuiIoDialogUtl { public static Io_url SelectDir() {return SelectDir(Io_url_.Empty);} public static Io_url SelectDir(Io_url startingDir) { diff --git a/150_gfui/src_430_box_custom/gplx/gfui/GfuiIoUrlSelectBox.java b/150_gfui/src/gplx/gfui/controls/customs/GfuiIoUrlSelectBox.java similarity index 86% rename from 150_gfui/src_430_box_custom/gplx/gfui/GfuiIoUrlSelectBox.java rename to 150_gfui/src/gplx/gfui/controls/customs/GfuiIoUrlSelectBox.java index d86096c45..598e8170f 100644 --- a/150_gfui/src_430_box_custom/gplx/gfui/GfuiIoUrlSelectBox.java +++ b/150_gfui/src/gplx/gfui/controls/customs/GfuiIoUrlSelectBox.java @@ -15,7 +15,8 @@ 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.gfui; import gplx.*; +package gplx.gfui.controls.customs; import gplx.*; import gplx.gfui.*; import gplx.gfui.controls.*; +import gplx.gfui.layouts.*; import gplx.gfui.controls.elems.*; import gplx.gfui.controls.standards.*; public abstract class GfuiIoUrlSelectBox extends GfuiElemBase { @Override public void ctor_GfuiBox_base(Keyval_hash ctorArgs) { super.ctor_GfuiBox_base(ctorArgs); @@ -26,7 +27,7 @@ public abstract class GfuiIoUrlSelectBox extends GfuiElemBase { this.Lyt_activate(); this.Lyt().Bands_add(GftBand.new_().Cell_abs_(60).Cell_pct_(100).Cell_abs_(30)); } - public static final String PathSelected_evt = "PathSelected_evt"; + public static final String PathSelected_evt = "PathSelected_evt"; public GfuiLbl Label() {return label;} GfuiLbl label; public Io_url Url() {return Io_url_.new_any_(pathBox.TextMgr().Val());} public Io_url StartingFolder() {return startingFolder;} @@ -37,14 +38,14 @@ public abstract class GfuiIoUrlSelectBox extends GfuiElemBase { Io_url selectedPath = SelectAction_hook(this.startingFolder); if (selectedPath.EqNull()) return; pathBox.Text_(selectedPath.Raw()); - GfoEvMgr_.Pub(this, PathSelected_evt); + Gfo_evt_mgr_.Pub(this, PathSelected_evt); } protected abstract Io_url SelectAction_hook(Io_url startingFolder); @Override public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, SelectAction_cmd)) SelectAction(); else return super.Invk(ctx, ikey, k, m); return this; - } public static final String SelectAction_cmd = "SelectAction"; + } public static final String SelectAction_cmd = "SelectAction"; GfuiComboBox pathBox = GfuiComboBox.new_(); } diff --git a/150_gfui/src_430_box_custom/gplx/gfui/GfuiIoUrlSelectBox_.java b/150_gfui/src/gplx/gfui/controls/customs/GfuiIoUrlSelectBox_.java similarity index 89% rename from 150_gfui/src_430_box_custom/gplx/gfui/GfuiIoUrlSelectBox_.java rename to 150_gfui/src/gplx/gfui/controls/customs/GfuiIoUrlSelectBox_.java index 930a49550..08bf52548 100644 --- a/150_gfui/src_430_box_custom/gplx/gfui/GfuiIoUrlSelectBox_.java +++ b/150_gfui/src/gplx/gfui/controls/customs/GfuiIoUrlSelectBox_.java @@ -15,7 +15,7 @@ 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.gfui; import gplx.*; +package gplx.gfui.controls.customs; import gplx.*; import gplx.gfui.*; import gplx.gfui.controls.*; public class GfuiIoUrlSelectBox_ { public static GfuiIoUrlSelectBox dir_() {return IoFolderSelector.new_();} public static GfuiIoUrlSelectBox fil_() {return IoFileSelector.new_();} diff --git a/150_gfui/src_430_box_custom/gplx/gfui/GfuiMoveElemBnd.java b/150_gfui/src/gplx/gfui/controls/customs/GfuiMoveElemBnd.java similarity index 88% rename from 150_gfui/src_430_box_custom/gplx/gfui/GfuiMoveElemBnd.java rename to 150_gfui/src/gplx/gfui/controls/customs/GfuiMoveElemBnd.java index 8569a7002..c920c466e 100644 --- a/150_gfui/src_430_box_custom/gplx/gfui/GfuiMoveElemBnd.java +++ b/150_gfui/src/gplx/gfui/controls/customs/GfuiMoveElemBnd.java @@ -15,11 +15,12 @@ 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.gfui; import gplx.*; +package gplx.gfui.controls.customs; import gplx.*; import gplx.gfui.*; import gplx.gfui.controls.*; +import gplx.gfui.ipts.*; import gplx.gfui.controls.elems.*; import gplx.core.interfaces.*; -public class GfuiMoveElemBnd implements IptBnd, GfoInvkAble, InjectAble { +public class GfuiMoveElemBnd implements IptBnd, Gfo_invk, InjectAble { public String Key() {return "gplx.gfui.moveWidget";} - public List_adp Ipts() {return args;} List_adp args = List_adp_.new_(); + public List_adp Ipts() {return args;} List_adp args = List_adp_.New(); public IptEventType EventTypes() {return IptEventType_.add_(IptEventType_.KeyDown, IptEventType_.MouseDown, IptEventType_.MouseMove, IptEventType_.MouseUp);} public void Exec(IptEventData iptData) { int val = iptData.EventType().Val(); @@ -29,11 +30,11 @@ public class GfuiMoveElemBnd implements IptBnd, GfoInvkAble, InjectAble { else if (val == IptEventType_.MouseMove.Val()) ExecMouseMove(iptData); } public GfuiElem TargetElem() {return targetElem;} public void TargetElem_set(GfuiElem v) {this.targetElem = v;} GfuiElem targetElem; - public static final String target_idk = "target"; + public static final String target_idk = "target"; @gplx.Virtual public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, target_idk)) return targetElem; else if (ctx.Match(k, "key")) return key; - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; } public String Key_of_GfuiElem() {return keyIdf;} public void Key_of_GfuiElem_(String val) {keyIdf = val;} private String keyIdf = "moveElemBtnBnd"; @@ -63,7 +64,7 @@ public class GfuiMoveElemBnd implements IptBnd, GfoInvkAble, InjectAble { public Object Srl(GfoMsg owner) {return IptBnd_.Srl(owner, this);} boolean moving = false; - PointAdp anchor = PointAdp_.Zero; Hash_adp hash = Hash_adp_.new_(); + PointAdp anchor = PointAdp_.Zero; Hash_adp hash = Hash_adp_.New(); public static GfuiMoveElemBnd new_() {return new GfuiMoveElemBnd();} GfuiMoveElemBnd() { args.Add_many(IptMouseBtn_.Left, IptMouseMove.AnyDirection); diff --git a/150_gfui/src_430_box_custom/gplx/gfui/GfuiMoveElemBtn.java b/150_gfui/src/gplx/gfui/controls/customs/GfuiMoveElemBtn.java similarity index 89% rename from 150_gfui/src_430_box_custom/gplx/gfui/GfuiMoveElemBtn.java rename to 150_gfui/src/gplx/gfui/controls/customs/GfuiMoveElemBtn.java index 887e15b7a..a6484132a 100644 --- a/150_gfui/src_430_box_custom/gplx/gfui/GfuiMoveElemBtn.java +++ b/150_gfui/src/gplx/gfui/controls/customs/GfuiMoveElemBtn.java @@ -15,7 +15,8 @@ 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.gfui; import gplx.*; +package gplx.gfui.controls.customs; import gplx.*; import gplx.gfui.*; import gplx.gfui.controls.*; +import gplx.gfui.ipts.*; import gplx.gfui.layouts.*; import gplx.gfui.controls.gxws.*; import gplx.gfui.controls.elems.*; import gplx.gfui.controls.standards.*; import gplx.gfui.controls.windows.*; public class GfuiMoveElemBtn extends GfuiBtn { @Override public GxwElem UnderElem_make(Keyval_hash ctorArgs) {return GxwElemFactory_.Instance.lbl_();} @Override public void ctor_GfuiBox_base(Keyval_hash ctorArgs) { super.ctor_GfuiBox_base(ctorArgs); @@ -28,7 +29,7 @@ public class GfuiMoveElemBtn extends GfuiBtn { @Override public GxwElem UnderEl } public void TargetElem_set(GfuiElem v) {moveBinding.TargetElem_set(v);} - final GfuiMoveElemBnd moveBinding = GfuiMoveElemBnd.new_(); + final GfuiMoveElemBnd moveBinding = GfuiMoveElemBnd.new_(); public static GfuiMoveElemBtn new_() { GfuiMoveElemBtn rv = new GfuiMoveElemBtn(); rv.ctor_GfuiBox_base(GfuiElem_.init_focusAble_true_()); @@ -37,7 +38,7 @@ public class GfuiMoveElemBtn extends GfuiBtn { @Override public GxwElem UnderEl } class GfuiResizeFormBnd implements IptBnd { public String Key() {return "gplx.gfui.resizeForm";} - public List_adp Ipts() {return args;} List_adp args = List_adp_.new_(); + public List_adp Ipts() {return args;} List_adp args = List_adp_.New(); public IptEventType EventTypes() {return IptEventType_.KeyDown.Add(IptEventType_.MouseDown).Add(IptEventType_.MouseUp).Add(IptEventType_.MouseMove);} public void Exec(IptEventData iptData) { int val = iptData.EventType().Val(); @@ -75,7 +76,7 @@ class GfuiResizeFormBnd implements IptBnd { static SizeAdp Op_add(SizeAdp lhs, SizeAdp rhs) {return SizeAdp_.new_(lhs.Width() + rhs.Width(), lhs.Height() + rhs.Height());} public Object Srl(GfoMsg owner) {return IptBnd_.Srl(owner, this);} - boolean active = false; PointAdp lastPos = PointAdp_.Zero; Hash_adp hash = Hash_adp_.new_(); + boolean active = false; PointAdp lastPos = PointAdp_.Zero; Hash_adp hash = Hash_adp_.New(); public static GfuiResizeFormBnd new_() {return new GfuiResizeFormBnd();} GfuiResizeFormBnd() { args.Add_many(IptMouseBtn_.Right, IptMouseMove.AnyDirection); diff --git a/150_gfui/tst/gplx/gfui/GfuiMoveElemBtn_tst.java b/150_gfui/src/gplx/gfui/controls/customs/GfuiMoveElemBtn_tst.java similarity index 81% rename from 150_gfui/tst/gplx/gfui/GfuiMoveElemBtn_tst.java rename to 150_gfui/src/gplx/gfui/controls/customs/GfuiMoveElemBtn_tst.java index 597ff1e0d..095356162 100644 --- a/150_gfui/tst/gplx/gfui/GfuiMoveElemBtn_tst.java +++ b/150_gfui/src/gplx/gfui/controls/customs/GfuiMoveElemBtn_tst.java @@ -15,8 +15,8 @@ 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.gfui; import gplx.*; -import org.junit.*; +package gplx.gfui.controls.customs; import gplx.*; import gplx.gfui.*; import gplx.gfui.controls.*; +import org.junit.*; import gplx.gfui.ipts.*; import gplx.gfui.controls.windows.*; import gplx.gfui.controls.standards.*; import gplx.gfui.controls.customs.*; public class GfuiMoveElemBtn_tst { @Before public void setup() { form = GfuiWin_.app_("form"); form.Size_(100, 100); diff --git a/150_gfui/src_430_box_custom/gplx/gfui/GfuiStatusBar.java b/150_gfui/src/gplx/gfui/controls/customs/GfuiStatusBar.java similarity index 86% rename from 150_gfui/src_430_box_custom/gplx/gfui/GfuiStatusBar.java rename to 150_gfui/src/gplx/gfui/controls/customs/GfuiStatusBar.java index f23be298e..9feea65fa 100644 --- a/150_gfui/src_430_box_custom/gplx/gfui/GfuiStatusBar.java +++ b/150_gfui/src/gplx/gfui/controls/customs/GfuiStatusBar.java @@ -15,7 +15,8 @@ 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.gfui; import gplx.*; +package gplx.gfui.controls.customs; import gplx.*; import gplx.gfui.*; import gplx.gfui.controls.*; +import gplx.gfui.layouts.*; import gplx.gfui.kits.core.*; import gplx.gfui.controls.elems.*; public class GfuiStatusBar extends GfuiElemBase { public GfuiStatusBox Box() {return statusBox;} GfuiStatusBox statusBox; public GfuiMoveElemBtn MoveButton() {return moveBtn;} GfuiMoveElemBtn moveBtn; @@ -28,7 +29,7 @@ public class GfuiStatusBar extends GfuiElemBase { if (ctx.Match(k, StatusBarFocus_cmd)) StatusBar_Focus(); else return super.Invk(ctx, ikey, k, m); return this; - } public static final String StatusBarFocus_cmd = "StatusBarFocus"; + } public static final String StatusBarFocus_cmd = "StatusBarFocus"; @Override public void ctor_GfuiBox_base(Keyval_hash ctorArgs) { super.ctor_GfuiBox_base(ctorArgs); moveBtn = GfuiMoveElemBtn.new_(); diff --git a/150_gfui/src_430_box_custom/gplx/gfui/GfuiStatusBarBnd.java b/150_gfui/src/gplx/gfui/controls/customs/GfuiStatusBarBnd.java similarity index 88% rename from 150_gfui/src_430_box_custom/gplx/gfui/GfuiStatusBarBnd.java rename to 150_gfui/src/gplx/gfui/controls/customs/GfuiStatusBarBnd.java index d26fc8c2b..e71cb8c66 100644 --- a/150_gfui/src_430_box_custom/gplx/gfui/GfuiStatusBarBnd.java +++ b/150_gfui/src/gplx/gfui/controls/customs/GfuiStatusBarBnd.java @@ -15,8 +15,9 @@ 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.gfui; import gplx.*; +package gplx.gfui.controls.customs; import gplx.*; import gplx.gfui.*; import gplx.gfui.controls.*; import gplx.core.interfaces.*; +import gplx.gfui.ipts.*; import gplx.gfui.controls.windows.*; public class GfuiStatusBarBnd implements InjectAble { public GfuiStatusBar Bar() {return statusBar;} GfuiStatusBar statusBar = GfuiStatusBar.new_(); public void Inject(Object owner) { diff --git a/150_gfui/src_430_box_custom/gplx/gfui/GfuiStatusBox.java b/150_gfui/src/gplx/gfui/controls/customs/GfuiStatusBox.java similarity index 83% rename from 150_gfui/src_430_box_custom/gplx/gfui/GfuiStatusBox.java rename to 150_gfui/src/gplx/gfui/controls/customs/GfuiStatusBox.java index 2d69bacfc..5e442185a 100644 --- a/150_gfui/src_430_box_custom/gplx/gfui/GfuiStatusBox.java +++ b/150_gfui/src/gplx/gfui/controls/customs/GfuiStatusBox.java @@ -15,8 +15,8 @@ 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.gfui; import gplx.*; -import gplx.core.envs.*; +package gplx.gfui.controls.customs; import gplx.*; import gplx.gfui.*; import gplx.gfui.controls.*; +import gplx.core.envs.*; import gplx.gfui.kits.core.*; import gplx.gfui.envs.*; import gplx.gfui.controls.gxws.*; import gplx.gfui.controls.standards.*; public class GfuiStatusBox extends GfuiTextBox implements UsrMsgWkr { public GfuiStatusBox Active_(boolean v) {active = v; return this;} private boolean active = true; public GfuiStatusBox VisibilityDuration_(int v) {timer.Interval_(v); visibilityDuration = v; return this;} int visibilityDuration; @Override public void Opened_cbk() { @@ -31,7 +31,7 @@ public class GfuiStatusBox extends GfuiTextBox implements UsrMsgWkr { public Gf this.CreateControlIfNeeded(); // WORKAROUND.WINFORMS: else will sometimes throw: Cannot call Invoke or InvokeAsync on a control until the window handle has been created this.VisibilityDuration_(umsg.VisibilityDuration()); String text = String_.Replace(umsg.To_str(), Op_sys.Cur().Nl_str(), " "); // replace NewLine with " " since TextBox cannot show NewLine - Invoke(GfoInvkAbleCmd.arg_(this, Invk_WriteText, text)); + Invoke(Gfo_invk_cmd.New_by_val(this, Invk_WriteText, text)); } public void WriteText(String text) { if (!this.Visible()) { @@ -66,7 +66,7 @@ public class GfuiStatusBox extends GfuiTextBox implements UsrMsgWkr { public Gf else if (ctx.Match(k, Invk_WriteText)) WriteText(m.ReadStr("v")); else return super.Invk(ctx, ikey, k, m); return this; - } static final String Invk_HideWindow = "HideWindow", Invk_WriteText = "WriteText", Invk_Text_empty = "Text_empty"; + } static final String Invk_HideWindow = "HideWindow", Invk_WriteText = "WriteText", Invk_Text_empty = "Text_empty"; TimerAdp timer; @Override public void ctor_GfuiBox_base(Keyval_hash ctorArgs) { super.ctor_GfuiBox_base(ctorArgs); @@ -92,16 +92,3 @@ public class GfuiStatusBox extends GfuiTextBox implements UsrMsgWkr { public Gf // timer = TimerAdp.new_(timerCmd, GfuiInvkCmd_.Invk_sync, 2000, false); } } -class GfuiStatusBox_ { - public static GfuiStatusBox new_(String key) { - GfuiStatusBox rv = new GfuiStatusBox(); - rv.ctor_GfuiBox_base(GfuiElem_.init_focusAble_false_()); - rv.Key_of_GfuiElem_(key); - return rv; - } - public static GfuiStatusBox kit_(Gfui_kit kit, String key, GxwElem underElem) { - GfuiStatusBox rv = new GfuiStatusBox(); - rv.ctor_kit_GfuiElemBase(kit, key, underElem, GfuiElem_.init_focusAble_false_()); - return rv; - } -} diff --git a/150_gfui/src_430_box_custom/gplx/gfui/GfuiStatusBoxBnd.java b/150_gfui/src/gplx/gfui/controls/customs/GfuiStatusBoxBnd.java similarity index 80% rename from 150_gfui/src_430_box_custom/gplx/gfui/GfuiStatusBoxBnd.java rename to 150_gfui/src/gplx/gfui/controls/customs/GfuiStatusBoxBnd.java index 9b8963b66..939223f55 100644 --- a/150_gfui/src_430_box_custom/gplx/gfui/GfuiStatusBoxBnd.java +++ b/150_gfui/src/gplx/gfui/controls/customs/GfuiStatusBoxBnd.java @@ -15,17 +15,18 @@ 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.gfui; import gplx.*; -public class GfuiStatusBoxBnd implements GfoInvkAble { +package gplx.gfui.controls.customs; import gplx.*; import gplx.gfui.*; import gplx.gfui.controls.*; +import gplx.gfui.draws.*; import gplx.gfui.ipts.*; import gplx.gfui.layouts.*; import gplx.gfui.controls.windows.*; +public class GfuiStatusBoxBnd implements Gfo_invk { public GfuiStatusBox Box() {return statusBox;} GfuiStatusBox statusBox = GfuiStatusBox_.new_("statusBox"); void ShowTime() { statusBox.ExecUsrMsg(UsrMsgWkr_.Type_Note, UsrMsg.new_(DateAdp_.Now().XtoStr_gplx_long())); } public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_ShowTime)) ShowTime(); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; - } public static final String Invk_ShowTime = "ShowTime"; + } public static final String Invk_ShowTime = "ShowTime"; public static GfuiStatusBoxBnd gft_(GfuiWin owner) { GfuiStatusBoxBnd rv = new GfuiStatusBoxBnd(); rv.ctor_GfuiStatusBoxBnd(owner); diff --git a/150_gfui/src/gplx/gfui/controls/customs/GfuiStatusBox_.java b/150_gfui/src/gplx/gfui/controls/customs/GfuiStatusBox_.java new file mode 100644 index 000000000..e825951fc --- /dev/null +++ b/150_gfui/src/gplx/gfui/controls/customs/GfuiStatusBox_.java @@ -0,0 +1,32 @@ +/* +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.gfui.controls.customs; import gplx.*; import gplx.gfui.*; import gplx.gfui.controls.*; +import gplx.gfui.kits.core.*; import gplx.gfui.controls.gxws.*; import gplx.gfui.controls.elems.*; +public class GfuiStatusBox_ { + public static GfuiStatusBox new_(String key) { + GfuiStatusBox rv = new GfuiStatusBox(); + rv.ctor_GfuiBox_base(GfuiElem_.init_focusAble_false_()); + rv.Key_of_GfuiElem_(key); + return rv; + } + public static GfuiStatusBox kit_(Gfui_kit kit, String key, GxwElem underElem) { + GfuiStatusBox rv = new GfuiStatusBox(); + rv.ctor_kit_GfuiElemBase(kit, key, underElem, GfuiElem_.init_focusAble_false_()); + return rv; + } +} diff --git a/150_gfui/src_410_box_core/gplx/gfui/GfuiElem.java b/150_gfui/src/gplx/gfui/controls/elems/GfuiElem.java similarity index 83% rename from 150_gfui/src_410_box_core/gplx/gfui/GfuiElem.java rename to 150_gfui/src/gplx/gfui/controls/elems/GfuiElem.java index 46f2e43e6..199e07b2c 100644 --- a/150_gfui/src_410_box_core/gplx/gfui/GfuiElem.java +++ b/150_gfui/src/gplx/gfui/controls/elems/GfuiElem.java @@ -15,9 +15,10 @@ 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.gfui; import gplx.*; +package gplx.gfui.controls.elems; import gplx.*; import gplx.gfui.*; import gplx.gfui.controls.*; +import gplx.gfui.draws.*; import gplx.gfui.gfxs.*; import gplx.gfui.ipts.*; import gplx.gfui.layouts.*; import gplx.gfui.imgs.*; import gplx.gfui.controls.gxws.*; import gplx.gfui.controls.*; import gplx.gfui.controls.windows.*; import gplx.core.interfaces.*; -public interface GfuiElem extends GfoInvkAble, GxwCbkHost, IptBndsOwner, GftItem, GfoEvObj { +public interface GfuiElem extends Gfo_invk, GxwCbkHost, IptBndsOwner, GftItem, Gfo_evt_itm { //% Layout int X(); GfuiElem X_(int val); int Y(); GfuiElem Y_(int val); @@ -72,5 +73,5 @@ public interface GfuiElem extends GfoInvkAble, GxwCbkHost, IptBndsOwner, GftItem GxwElem UnderElem(); GxwElem UnderElem_make(Keyval_hash ctorArgs); void ctor_GfuiBox_base(Keyval_hash ctorArgs); - void Invoke(GfoInvkAbleCmd cmd); + void Invoke(Gfo_invk_cmd cmd); } diff --git a/150_gfui/src_410_box_core/gplx/gfui/GfuiElemBase.java b/150_gfui/src/gplx/gfui/controls/elems/GfuiElemBase.java similarity index 90% rename from 150_gfui/src_410_box_core/gplx/gfui/GfuiElemBase.java rename to 150_gfui/src/gplx/gfui/controls/elems/GfuiElemBase.java index 0657763eb..328a55a5b 100644 --- a/150_gfui/src_410_box_core/gplx/gfui/GfuiElemBase.java +++ b/150_gfui/src/gplx/gfui/controls/elems/GfuiElemBase.java @@ -15,12 +15,14 @@ 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.gfui; import gplx.*; +package gplx.gfui.controls.elems; import gplx.*; import gplx.gfui.*; import gplx.gfui.controls.*; +import gplx.gfui.draws.*; import gplx.gfui.gfxs.*; import gplx.gfui.ipts.*; import gplx.gfui.layouts.*; import gplx.gfui.imgs.*; import gplx.gfui.kits.core.*; +import gplx.gfui.controls.*; import gplx.gfui.controls.gxws.*; import gplx.gfui.controls.standards.*; import gplx.gfui.controls.windows.*; import gplx.core.strings.*; import gplx.core.interfaces.*; public class GfuiElemBase implements GfuiElem { //% Layout - public GfoEvMgr EvMgr() {if (evMgr == null) evMgr = GfoEvMgr.new_(this); return evMgr;} GfoEvMgr evMgr; - public GfoInvkCmdMgr InvkMgr() {return invkMgr;} GfoInvkCmdMgr invkMgr = GfoInvkCmdMgr.new_(); + public Gfo_evt_mgr Evt_mgr() {if (evt_mgr == null) evt_mgr = new Gfo_evt_mgr(this); return evt_mgr;} Gfo_evt_mgr evt_mgr; + public Gfo_invk_cmd_mgr InvkMgr() {return invkMgr;} Gfo_invk_cmd_mgr invkMgr = Gfo_invk_cmd_mgr.new_(); public int X() {return underMgr.X();} public GfuiElem X_(int val) {underMgr.X_set(val); return this;} public int Y() {return underMgr.Y();} public GfuiElem Y_(int val) {underMgr.Y_set(val); return this;} public int X_max() {return underMgr.X() + underMgr.Width();} public int Y_max() {return underMgr.Y() + underMgr.Height();} @@ -143,7 +145,7 @@ public class GfuiElemBase implements GfuiElem { } } public void Dispose() { - GfoEvMgr_.RlsSub(this); + Gfo_evt_mgr_.Rls_sub(this); underMgr.Dispose(); } @@ -245,19 +247,19 @@ public class GfuiElemBase implements GfuiElem { } else { Object rv = this.InvkMgr().Invk(ctx, ikey, k, m, this); - if (rv != GfoInvkAble_.Rv_unhandled) return rv; + if (rv != Gfo_invk_.Rv_unhandled) return rv; Object findObj = injected.Get_by(k); if (findObj == null) findObj = this.subElems.Get_by(k); - if (findObj == null) return GfoInvkAble_.Rv_unhandled; + if (findObj == null) return Gfo_invk_.Rv_unhandled; return findObj; // necessary for gplx.images } } return this; - } public static final String Invk_OwnerWin_cmd = "ownerWin"; + } public static final String Invk_OwnerWin_cmd = "ownerWin"; - public void Invoke(GfoInvkAbleCmd cmd) { - cmd.Invk(); + public void Invoke(Gfo_invk_cmd cmd) { + cmd.Exec(); } public Gfui_kit Kit() {return kit;} private Gfui_kit kit = Gfui_kit_.Mem(); @@ -286,19 +288,7 @@ public class GfuiElemBase implements GfuiElem { public Object SubItms_getObj(String key) {return injected.Get_by(key);} public GfuiElemBase SubItms_add(String key, Object v) {injected.Add(key, v); return this;} public Ordered_hash XtnAtrs() {return xtnAtrs;} Ordered_hash xtnAtrs = Ordered_hash_.New(); - Hash_adp injected = Hash_adp_.new_(); + Hash_adp injected = Hash_adp_.New(); GxwCore_base underMgr; @gplx.Internal protected static boolean SizeChanged_ignore = false; } -class GfuiFocusMgr implements GfoEvMgrOwner { - public static final String FocusChanged_evt = "focusChanged_evt"; - public GfoEvMgr EvMgr() {if (evMgr == null) evMgr = GfoEvMgr.new_(this); return evMgr;} GfoEvMgr evMgr; - public GfuiElem FocusedElem() {return focusedElem;} GfuiElem focusedElem; - public GfuiElem FocusedElemPrev() {return focusedElemPrev;} GfuiElem focusedElemPrev; - public void FocusedElem_set(GfuiElem focused) { - focusedElemPrev = focusedElem; - this.focusedElem = focused; - GfoEvMgr_.PubVal(this, FocusChanged_evt, focused); - } - public static final GfuiFocusMgr Instance = new GfuiFocusMgr(); GfuiFocusMgr() {} -} diff --git a/150_gfui/src_410_box_core/gplx/gfui/GfuiElemBase_.java b/150_gfui/src/gplx/gfui/controls/elems/GfuiElemBase_.java similarity index 90% rename from 150_gfui/src_410_box_core/gplx/gfui/GfuiElemBase_.java rename to 150_gfui/src/gplx/gfui/controls/elems/GfuiElemBase_.java index 54d279b2b..176e84155 100644 --- a/150_gfui/src_410_box_core/gplx/gfui/GfuiElemBase_.java +++ b/150_gfui/src/gplx/gfui/controls/elems/GfuiElemBase_.java @@ -15,7 +15,7 @@ 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.gfui; import gplx.*; +package gplx.gfui.controls.elems; import gplx.*; import gplx.gfui.*; import gplx.gfui.controls.*; public class GfuiElemBase_ { public static GfuiElemBase as_(Object obj) {return obj instanceof GfuiElemBase ? (GfuiElemBase)obj : null;} public static GfuiElemBase cast(Object obj) {try {return (GfuiElemBase)obj;} catch(Exception exc) {throw Err_.new_type_mismatch_w_exc(exc, GfuiElemBase.class, obj);}} diff --git a/150_gfui/src_410_box_core/gplx/gfui/GfuiElemKeys.java b/150_gfui/src/gplx/gfui/controls/elems/GfuiElemKeys.java similarity index 86% rename from 150_gfui/src_410_box_core/gplx/gfui/GfuiElemKeys.java rename to 150_gfui/src/gplx/gfui/controls/elems/GfuiElemKeys.java index b0c1b1293..776120a8e 100644 --- a/150_gfui/src_410_box_core/gplx/gfui/GfuiElemKeys.java +++ b/150_gfui/src/gplx/gfui/controls/elems/GfuiElemKeys.java @@ -15,9 +15,9 @@ 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.gfui; import gplx.*; +package gplx.gfui.controls.elems; import gplx.*; import gplx.gfui.*; import gplx.gfui.controls.*; public class GfuiElemKeys { - public static final String + public static final String ActionExec_cmd = "actionExec" , Focus_cmd = "focus" , Redraw_cmd = "redraw" @@ -26,7 +26,7 @@ public class GfuiElemKeys { , IptRcvd_evt = "IptRcvd_evt" , Evt_menu_detected = "menu_detected" ; - @gplx.Internal protected static final String + @gplx.Internal protected static final String Key_set = "Key_" , TipText = "TipText" , TipText_ = "TipText_" diff --git a/150_gfui/src_410_box_core/gplx/gfui/GfuiElemList.java b/150_gfui/src/gplx/gfui/controls/elems/GfuiElemList.java similarity index 90% rename from 150_gfui/src_410_box_core/gplx/gfui/GfuiElemList.java rename to 150_gfui/src/gplx/gfui/controls/elems/GfuiElemList.java index 310e64ee6..cefeb7c79 100644 --- a/150_gfui/src_410_box_core/gplx/gfui/GfuiElemList.java +++ b/150_gfui/src/gplx/gfui/controls/elems/GfuiElemList.java @@ -15,7 +15,7 @@ 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.gfui; import gplx.*; +package gplx.gfui.controls.elems; import gplx.*; import gplx.gfui.*; import gplx.gfui.controls.*; public class GfuiElemList { public int Count() {return hash.Count();} public GfuiElem Get_at(int idx) {return (GfuiElem)hash.Get_at(idx);} @@ -35,7 +35,7 @@ public class GfuiElemList { hash.Add(key, box); owner.UnderElem().Core().Controls_add(box.UnderElem()); box.OwnerElem_(owner).OwnerWin_(owner.OwnerWin()); // needed b/c box may be added after form is loaded - GfoEvMgr_.SubSame(box, GfuiElemKeys.IptRcvd_evt, owner); // bubble iptEvts to owner + Gfo_evt_mgr_.Sub_same(box, GfuiElemKeys.IptRcvd_evt, owner); // bubble iptEvts to owner } void Del_exec(GfuiElem box) { String key = box.Key_of_GfuiElem(); if (!hash.Has(key)) throw Err_.new_missing_key(key); diff --git a/150_gfui/src_410_box_core/gplx/gfui/GfuiElem_.java b/150_gfui/src/gplx/gfui/controls/elems/GfuiElem_.java similarity index 91% rename from 150_gfui/src_410_box_core/gplx/gfui/GfuiElem_.java rename to 150_gfui/src/gplx/gfui/controls/elems/GfuiElem_.java index dd60c95f2..6195ecbbb 100644 --- a/150_gfui/src_410_box_core/gplx/gfui/GfuiElem_.java +++ b/150_gfui/src/gplx/gfui/controls/elems/GfuiElem_.java @@ -15,9 +15,9 @@ 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.gfui; import gplx.*; +package gplx.gfui.controls.elems; import gplx.*; import gplx.gfui.*; import gplx.gfui.controls.*; public class GfuiElem_ { - public static final String + public static final String InitKey_focusAble = "focusAble" , InitKey_ownerWin = "ownerForm"; public static GfuiElem as_(Object obj) {return obj instanceof GfuiElem ? (GfuiElem)obj : null;} diff --git a/150_gfui/src_300_gxw/gplx/gfui/GxwBoxListener.java b/150_gfui/src/gplx/gfui/controls/gxws/GxwBoxListener.java similarity index 93% rename from 150_gfui/src_300_gxw/gplx/gfui/GxwBoxListener.java rename to 150_gfui/src/gplx/gfui/controls/gxws/GxwBoxListener.java index ea968afb7..8d2881307 100644 --- a/150_gfui/src_300_gxw/gplx/gfui/GxwBoxListener.java +++ b/150_gfui/src/gplx/gfui/controls/gxws/GxwBoxListener.java @@ -15,7 +15,7 @@ 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.gfui; import gplx.*; +package gplx.gfui.controls.gxws; import gplx.*; import gplx.gfui.*; import gplx.gfui.controls.*; import java.awt.event.ComponentEvent; import java.awt.event.ComponentListener; import java.awt.event.FocusEvent; diff --git a/150_gfui/src_300_gxw/gplx/gfui/GxwCbkHost.java b/150_gfui/src/gplx/gfui/controls/gxws/GxwCbkHost.java similarity index 88% rename from 150_gfui/src_300_gxw/gplx/gfui/GxwCbkHost.java rename to 150_gfui/src/gplx/gfui/controls/gxws/GxwCbkHost.java index afe419c5d..f65d25303 100644 --- a/150_gfui/src_300_gxw/gplx/gfui/GxwCbkHost.java +++ b/150_gfui/src/gplx/gfui/controls/gxws/GxwCbkHost.java @@ -15,7 +15,8 @@ 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.gfui; import gplx.*; +package gplx.gfui.controls.gxws; import gplx.*; import gplx.gfui.*; import gplx.gfui.controls.*; +import gplx.gfui.ipts.*; import gplx.gfui.gfxs.*; public interface GxwCbkHost { boolean KeyDownCbk(IptEvtDataKey data); boolean KeyHeldCbk(IptEvtDataKeyHeld data); diff --git a/150_gfui/src_300_gxw/gplx/gfui/GxwCbkHost_.java b/150_gfui/src/gplx/gfui/controls/gxws/GxwCbkHost_.java similarity index 93% rename from 150_gfui/src_300_gxw/gplx/gfui/GxwCbkHost_.java rename to 150_gfui/src/gplx/gfui/controls/gxws/GxwCbkHost_.java index 3ce583cdf..f13efb41f 100644 --- a/150_gfui/src_300_gxw/gplx/gfui/GxwCbkHost_.java +++ b/150_gfui/src/gplx/gfui/controls/gxws/GxwCbkHost_.java @@ -15,13 +15,14 @@ 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.gfui; import gplx.*; +package gplx.gfui.controls.gxws; import gplx.*; import gplx.gfui.*; import gplx.gfui.controls.*; import java.awt.KeyboardFocusManager; import java.awt.event.KeyEvent; import java.awt.event.MouseEvent; import java.awt.event.MouseWheelEvent; +import gplx.gfui.ipts.*; import gplx.gfui.gfxs.*; public class GxwCbkHost_ { - public static final GxwCbkHost Null = new GfuiHost_cls_null(); + public static final GxwCbkHost Null = new GfuiHost_cls_null(); public static final boolean ExecKeyEvent(GxwCbkHost host, KeyEvent e) { boolean rv = true; int id = e.getID(), val = e.getKeyCode(); boolean isAltF4 = false; diff --git a/150_gfui/src_300_gxw/gplx/gfui/GxwCheckListBox.java b/150_gfui/src/gplx/gfui/controls/gxws/GxwCheckListBox.java similarity index 90% rename from 150_gfui/src_300_gxw/gplx/gfui/GxwCheckListBox.java rename to 150_gfui/src/gplx/gfui/controls/gxws/GxwCheckListBox.java index 35ff306e5..5227a4126 100644 --- a/150_gfui/src_300_gxw/gplx/gfui/GxwCheckListBox.java +++ b/150_gfui/src/gplx/gfui/controls/gxws/GxwCheckListBox.java @@ -15,7 +15,7 @@ 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.gfui; import gplx.*; +package gplx.gfui.controls.gxws; import gplx.*; import gplx.gfui.*; import gplx.gfui.controls.*; public interface GxwCheckListBox extends GxwElem { int Items_count(); List_adp Items_getAll(); diff --git a/150_gfui/src_300_gxw/gplx/gfui/GxwCheckListBox_lang.java b/150_gfui/src/gplx/gfui/controls/gxws/GxwCheckListBox_lang.java similarity index 95% rename from 150_gfui/src_300_gxw/gplx/gfui/GxwCheckListBox_lang.java rename to 150_gfui/src/gplx/gfui/controls/gxws/GxwCheckListBox_lang.java index 6ddc76f3c..c170cb084 100644 --- a/150_gfui/src_300_gxw/gplx/gfui/GxwCheckListBox_lang.java +++ b/150_gfui/src/gplx/gfui/controls/gxws/GxwCheckListBox_lang.java @@ -15,7 +15,7 @@ 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.gfui; import gplx.*; +package gplx.gfui.controls.gxws; import gplx.*; import gplx.gfui.*; import gplx.gfui.controls.*; import java.awt.AWTEvent; import java.awt.Color; import java.awt.Component; @@ -33,7 +33,7 @@ import java.util.Vector; import javax.swing.*; import javax.swing.border.Border; import javax.swing.border.EmptyBorder; -import gplx.gfui.*; +import gplx.gfui.ipts.*; import gplx.gfui.gfxs.*; import gplx.gfui.controls.windows.*; public class GxwCheckListBox_lang extends JScrollPane implements GxwCheckListBox, GxwElem { Vector internalItems; GxwListBox_lang listBox; @@ -77,7 +77,7 @@ public class GxwCheckListBox_lang extends JScrollPane implements GxwCheckListBox public List_adp Items_getChecked() {return Items_get(Mode_Selected);} static final int Mode_All = 1, Mode_Selected = 2; List_adp Items_get(int mode) { - List_adp list = List_adp_.new_(); + List_adp list = List_adp_.New(); for (CheckListItem data: internalItems) { boolean add = (mode == Mode_All) || (mode == Mode_Selected) && data.Selected(); if (add) diff --git a/150_gfui/src_300_gxw/gplx/gfui/GxwComboBox.java b/150_gfui/src/gplx/gfui/controls/gxws/GxwComboBox.java similarity index 92% rename from 150_gfui/src_300_gxw/gplx/gfui/GxwComboBox.java rename to 150_gfui/src/gplx/gfui/controls/gxws/GxwComboBox.java index 1f00117ee..d98b15e13 100644 --- a/150_gfui/src_300_gxw/gplx/gfui/GxwComboBox.java +++ b/150_gfui/src/gplx/gfui/controls/gxws/GxwComboBox.java @@ -15,7 +15,7 @@ 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.gfui; import gplx.*; +package gplx.gfui.controls.gxws; import gplx.*; import gplx.gfui.*; import gplx.gfui.controls.*; public interface GxwComboBox extends GxwElem { int SelBgn(); void SelBgn_set(int v); int SelLen(); void SelLen_set(int v); diff --git a/150_gfui/src_300_gxw/gplx/gfui/GxwComboBox_lang.java b/150_gfui/src/gplx/gfui/controls/gxws/GxwComboBox_lang.java similarity index 95% rename from 150_gfui/src_300_gxw/gplx/gfui/GxwComboBox_lang.java rename to 150_gfui/src/gplx/gfui/controls/gxws/GxwComboBox_lang.java index 942341c97..45af70caa 100644 --- a/150_gfui/src_300_gxw/gplx/gfui/GxwComboBox_lang.java +++ b/150_gfui/src/gplx/gfui/controls/gxws/GxwComboBox_lang.java @@ -15,11 +15,12 @@ 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.gfui; import gplx.*; +package gplx.gfui.controls.gxws; import gplx.*; import gplx.gfui.*; import gplx.gfui.controls.*; import java.awt.*; import java.awt.event.*; import javax.swing.*; +import gplx.gfui.ipts.*; import gplx.gfui.gfxs.*; public class GxwComboBox_lang extends JComboBox implements GxwComboBox, GxwElem, ActionListener { public String[] DataSource_as_str_ary() {return String_.Ary_empty;} public void DataSource_set(Object... ary) { diff --git a/150_gfui/src_300_gxw/gplx/gfui/GxwCore_base.java b/150_gfui/src/gplx/gfui/controls/gxws/GxwCore_base.java similarity index 93% rename from 150_gfui/src_300_gxw/gplx/gfui/GxwCore_base.java rename to 150_gfui/src/gplx/gfui/controls/gxws/GxwCore_base.java index be5ac955c..ec8ff813f 100644 --- a/150_gfui/src_300_gxw/gplx/gfui/GxwCore_base.java +++ b/150_gfui/src/gplx/gfui/controls/gxws/GxwCore_base.java @@ -15,7 +15,8 @@ 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.gfui; import gplx.*; +package gplx.gfui.controls.gxws; import gplx.*; import gplx.gfui.*; import gplx.gfui.controls.*; +import gplx.gfui.draws.*; public abstract class GxwCore_base { public abstract void Controls_add(GxwElem sub); public abstract void Controls_del(GxwElem sub); diff --git a/150_gfui/src_300_gxw/gplx/gfui/GxwCore_lang.java b/150_gfui/src/gplx/gfui/controls/gxws/GxwCore_lang.java similarity index 96% rename from 150_gfui/src_300_gxw/gplx/gfui/GxwCore_lang.java rename to 150_gfui/src/gplx/gfui/controls/gxws/GxwCore_lang.java index 9f76ae3aa..0cb4d61d8 100644 --- a/150_gfui/src_300_gxw/gplx/gfui/GxwCore_lang.java +++ b/150_gfui/src/gplx/gfui/controls/gxws/GxwCore_lang.java @@ -15,7 +15,7 @@ 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.gfui; import gplx.*; +package gplx.gfui.controls.gxws; import gplx.*; import gplx.gfui.*; import gplx.gfui.controls.*; import javax.swing.JComponent; import javax.swing.JWindow; import javax.swing.RootPaneContainer; @@ -27,6 +27,7 @@ import java.awt.Component; import java.awt.Container; import java.awt.Font; import java.awt.Graphics2D; +import gplx.gfui.draws.*; import gplx.gfui.controls.gxws.*; public class GxwCore_lang extends GxwCore_base { @Override public int Width() {return control.getWidth();} @Override public void Width_set(int v) {control.setSize(v, control.getHeight());} @Override public int Height() {return control.getHeight();} @Override public void Height_set(int v) {control.setSize(control.getWidth(), v);} diff --git a/150_gfui/src_300_gxw/gplx/gfui/GxwCore_mock.java b/150_gfui/src/gplx/gfui/controls/gxws/GxwCore_mock.java similarity index 93% rename from 150_gfui/src_300_gxw/gplx/gfui/GxwCore_mock.java rename to 150_gfui/src/gplx/gfui/controls/gxws/GxwCore_mock.java index aa6feebea..0ff9ee038 100644 --- a/150_gfui/src_300_gxw/gplx/gfui/GxwCore_mock.java +++ b/150_gfui/src/gplx/gfui/controls/gxws/GxwCore_mock.java @@ -15,7 +15,8 @@ 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.gfui; import gplx.*; +package gplx.gfui.controls.gxws; import gplx.*; import gplx.gfui.*; import gplx.gfui.controls.*; +import gplx.gfui.draws.*; import gplx.gfui.ipts.*; public class GxwCore_mock extends GxwCore_base { @Override public int Width() {return size.Width();} @Override public void Width_set(int v) {size = SizeAdp_.new_(v, size.Height());} @Override public int Height() {return size.Height();} @Override public void Height_set(int v) {size = SizeAdp_.new_(size.Width(), v);} @@ -41,5 +42,5 @@ public class GxwCore_mock extends GxwCore_base { @Override public void Invalidate() {} @Override public void Dispose() {} public void SendKey(IptKey key) {} - List_adp list = List_adp_.new_(); + List_adp list = List_adp_.New(); } diff --git a/150_gfui/src_300_gxw/gplx/gfui/GxwElem.java b/150_gfui/src/gplx/gfui/controls/gxws/GxwElem.java similarity index 85% rename from 150_gfui/src_300_gxw/gplx/gfui/GxwElem.java rename to 150_gfui/src/gplx/gfui/controls/gxws/GxwElem.java index cba064593..21807c42e 100644 --- a/150_gfui/src_300_gxw/gplx/gfui/GxwElem.java +++ b/150_gfui/src/gplx/gfui/controls/gxws/GxwElem.java @@ -15,8 +15,8 @@ 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.gfui; import gplx.*; -public interface GxwElem extends GfoInvkAble { +package gplx.gfui.controls.gxws; import gplx.*; import gplx.gfui.*; import gplx.gfui.controls.*; +public interface GxwElem extends Gfo_invk { GxwCore_base Core(); GxwCbkHost Host(); void Host_set(GxwCbkHost host); String TextVal(); void TextVal_set(String v); diff --git a/150_gfui/src/gplx/gfui/controls/gxws/GxwElemFactory_.java b/150_gfui/src/gplx/gfui/controls/gxws/GxwElemFactory_.java new file mode 100644 index 000000000..1c8eb99aa --- /dev/null +++ b/150_gfui/src/gplx/gfui/controls/gxws/GxwElemFactory_.java @@ -0,0 +1,23 @@ +/* +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.gfui.controls.gxws; import gplx.*; import gplx.gfui.*; import gplx.gfui.controls.*; +public class GxwElemFactory_ { + public static GxwElemFactory_base Instance = new GxwElemFactory_cls_mock(); + public static void winForms_() {Instance = new GxwElemFactory_cls_lang();} + public static void swt_(org.eclipse.swt.widgets.Display display) {Instance = new GxwElemFactory_swt(display);} + } diff --git a/150_gfui/src/gplx/gfui/controls/gxws/GxwElemFactory_base.java b/150_gfui/src/gplx/gfui/controls/gxws/GxwElemFactory_base.java new file mode 100644 index 000000000..2ed32d33a --- /dev/null +++ b/150_gfui/src/gplx/gfui/controls/gxws/GxwElemFactory_base.java @@ -0,0 +1,32 @@ +/* +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.gfui.controls.gxws; import gplx.*; import gplx.gfui.*; import gplx.gfui.controls.*; +public abstract class GxwElemFactory_base { + public abstract GxwElem control_(); + public abstract GxwWin win_app_(); + public abstract GxwWin win_tool_(Keyval_hash ctorArgs); + public abstract GxwWin win_toaster_(Keyval_hash ctorArgs); + public abstract GxwElem lbl_(); + public abstract GxwTextFld text_fld_(); + public abstract GxwTextFld text_memo_(); + public abstract GxwTextHtml text_html_(); + public abstract GxwCheckListBox checkListBox_(Keyval_hash ctorArgs); + public abstract GxwComboBox comboBox_(); + public abstract GxwListBox listBox_(); + // @gplx.Internal protected GxwElem spacer_() {return MockControl.new_();} + } diff --git a/150_gfui/src/gplx/gfui/controls/gxws/GxwElemFactory_cls_lang.java b/150_gfui/src/gplx/gfui/controls/gxws/GxwElemFactory_cls_lang.java new file mode 100644 index 000000000..e1780ced1 --- /dev/null +++ b/150_gfui/src/gplx/gfui/controls/gxws/GxwElemFactory_cls_lang.java @@ -0,0 +1,43 @@ +/* +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.gfui.controls.gxws; import gplx.*; import gplx.gfui.*; import gplx.gfui.controls.*; +import gplx.gfui.controls.elems.*; import gplx.gfui.controls.windows.*; +public class GxwElemFactory_cls_lang extends GxwElemFactory_base { + @Override public GxwElem control_() {return new GxwElem_lang();} + @Override public GxwWin win_tool_(Keyval_hash ctorArgs) { + GfuiWin ownerForm = (GfuiWin)ctorArgs.Get_val_or(GfuiElem_.InitKey_ownerWin, null); + GxwWin ownerElem = ownerForm == null ? null : (GxwWin)ownerForm.UnderElem(); + return GxwWin_jdialog.new_(ownerElem); +// return GxwWin_lang.new_(); + } + @Override public GxwWin win_toaster_(Keyval_hash ctorArgs) { + GfsCtx ctx = GfsCtx.new_(); ctx.Match("", ""); + GfuiWin ownerForm = (GfuiWin)ctorArgs.Get_val_or(GfuiElem_.InitKey_ownerWin, null); + GxwWin ownerElem = ownerForm == null ? null : (GxwWin)ownerForm.UnderElem(); + return GxwWin_jwindow.new_(ownerElem); +// return GxwWin_lang.new_(); + } + @Override public GxwWin win_app_() {return GxwWin_lang.new_();} + @Override public GxwElem lbl_() {return new GxwElem_lang();} + @Override public GxwTextFld text_fld_() {return GxwTextBox_lang_.fld_();} + @Override public GxwTextFld text_memo_() {return GxwTextBox_lang_.memo_();} + @Override public GxwTextHtml text_html_() {return new GxwTextHtml_lang().ctor();} + @Override public GxwCheckListBox checkListBox_(Keyval_hash ctorArgs) {return new GxwCheckListBox_lang();} + @Override public GxwComboBox comboBox_() {return GxwComboBox_lang.new_();} + @Override public GxwListBox listBox_() {return GxwListBox_lang.new_();} +} diff --git a/150_gfui/src/gplx/gfui/controls/gxws/GxwElemFactory_cls_mock.java b/150_gfui/src/gplx/gfui/controls/gxws/GxwElemFactory_cls_mock.java new file mode 100644 index 000000000..439a885bd --- /dev/null +++ b/150_gfui/src/gplx/gfui/controls/gxws/GxwElemFactory_cls_mock.java @@ -0,0 +1,31 @@ +/* +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.gfui.controls.gxws; import gplx.*; import gplx.gfui.*; import gplx.gfui.controls.*; +public class GxwElemFactory_cls_mock extends GxwElemFactory_base { + @Override public GxwElem control_() {return GxwElem_mock_base.new_();} + @Override public GxwWin win_app_() {return MockForm.Instance;} + @Override public GxwWin win_tool_(Keyval_hash ctorArgs) {return MockForm.Instance;} + @Override public GxwWin win_toaster_(Keyval_hash ctorArgs) {return MockForm.Instance;} + @Override public GxwElem lbl_() {return GxwElem_mock_base.new_();} + @Override public GxwTextFld text_fld_() {return new MockTextBox();} + @Override public GxwTextFld text_memo_() {return new MockTextBoxMulti();} + @Override public GxwTextHtml text_html_() {return new MockTextBoxMulti();} + @Override public GxwCheckListBox checkListBox_(Keyval_hash ctorArgs) {throw Err_.new_unimplemented();} + @Override public GxwComboBox comboBox_() {return new MockComboBox();} + @Override public GxwListBox listBox_() {return new MockListBox();} +} diff --git a/150_gfui/src_300_gxw/gplx/gfui/GxwElem_lang.java b/150_gfui/src/gplx/gfui/controls/gxws/GxwElem_lang.java similarity index 95% rename from 150_gfui/src_300_gxw/gplx/gfui/GxwElem_lang.java rename to 150_gfui/src/gplx/gfui/controls/gxws/GxwElem_lang.java index 5b28b501b..ce1756947 100644 --- a/150_gfui/src_300_gxw/gplx/gfui/GxwElem_lang.java +++ b/150_gfui/src/gplx/gfui/controls/gxws/GxwElem_lang.java @@ -15,7 +15,7 @@ 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.gfui; import gplx.*; +package gplx.gfui.controls.gxws; import gplx.*; import gplx.gfui.*; import gplx.gfui.controls.*; import java.awt.AWTEvent; import java.awt.Graphics; import java.awt.Graphics2D; @@ -27,6 +27,7 @@ import java.awt.event.KeyEvent; import java.awt.event.MouseEvent; import java.awt.event.MouseWheelEvent; import javax.swing.JComponent; +import gplx.gfui.ipts.*; import gplx.gfui.gfxs.*; public class GxwElem_lang extends JComponent implements GxwElem { public static final String AlignH_cmd = "AlignH"; public GxwCbkHost Host() {return host;} public void Host_set(GxwCbkHost host) {this.host = host;} GxwCbkHost host = GxwCbkHost_.Null; diff --git a/150_gfui/src_300_gxw/gplx/gfui/GxwElem_mock_base.java b/150_gfui/src/gplx/gfui/controls/gxws/GxwElem_mock_base.java similarity index 95% rename from 150_gfui/src_300_gxw/gplx/gfui/GxwElem_mock_base.java rename to 150_gfui/src/gplx/gfui/controls/gxws/GxwElem_mock_base.java index ad2e85faa..7c0e155f9 100644 --- a/150_gfui/src_300_gxw/gplx/gfui/GxwElem_mock_base.java +++ b/150_gfui/src/gplx/gfui/controls/gxws/GxwElem_mock_base.java @@ -15,7 +15,8 @@ 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.gfui; import gplx.*; +package gplx.gfui.controls.gxws; import gplx.*; import gplx.gfui.*; import gplx.gfui.controls.*; +import gplx.gfui.ipts.*; public class GxwElem_mock_base implements GxwElem { public GxwCore_base Core() {return ctrlMgr;} final GxwCore_mock ctrlMgr = new GxwCore_mock(); public GxwCbkHost Host() {return host;} public void Host_set(GxwCbkHost host) {this.host = host;} GxwCbkHost host = GxwCbkHost_.Null; @@ -26,7 +27,7 @@ public class GxwElem_mock_base implements GxwElem { return this; } - List_adp list = List_adp_.new_(); + List_adp list = List_adp_.New(); public static GxwElem_mock_base new_() {return new GxwElem_mock_base();} protected GxwElem_mock_base() {} } class MockTextBox extends GxwElem_mock_base implements GxwTextFld { diff --git a/150_gfui/src_300_gxw/gplx/gfui/GxwListBox.java b/150_gfui/src/gplx/gfui/controls/gxws/GxwListBox.java similarity index 89% rename from 150_gfui/src_300_gxw/gplx/gfui/GxwListBox.java rename to 150_gfui/src/gplx/gfui/controls/gxws/GxwListBox.java index 31734ef23..45aea3d88 100644 --- a/150_gfui/src_300_gxw/gplx/gfui/GxwListBox.java +++ b/150_gfui/src/gplx/gfui/controls/gxws/GxwListBox.java @@ -15,7 +15,7 @@ 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.gfui; import gplx.*; +package gplx.gfui.controls.gxws; import gplx.*; import gplx.gfui.*; import gplx.gfui.controls.*; public interface GxwListBox extends GxwElem { void Items_Add(Object item); void Items_Clear(); diff --git a/150_gfui/src_300_gxw/gplx/gfui/GxwListBox_lang.java b/150_gfui/src/gplx/gfui/controls/gxws/GxwListBox_lang.java similarity index 95% rename from 150_gfui/src_300_gxw/gplx/gfui/GxwListBox_lang.java rename to 150_gfui/src/gplx/gfui/controls/gxws/GxwListBox_lang.java index a795cc8d4..fbb68983e 100644 --- a/150_gfui/src_300_gxw/gplx/gfui/GxwListBox_lang.java +++ b/150_gfui/src/gplx/gfui/controls/gxws/GxwListBox_lang.java @@ -15,12 +15,13 @@ 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.gfui; import gplx.*; +package gplx.gfui.controls.gxws; import gplx.*; import gplx.gfui.*; import gplx.gfui.controls.*; import java.awt.*; import java.awt.event.*; import java.util.Vector; import javax.swing.*; +import gplx.gfui.ipts.*; import gplx.gfui.gfxs.*; class GxwListBox_lang extends JList implements GxwListBox { void ctor_() { ctrlMgr = GxwCore_lang.new_(this); diff --git a/150_gfui/src_300_gxw/gplx/gfui/GxwTextBox_lang.java b/150_gfui/src/gplx/gfui/controls/gxws/GxwTextBox_lang.java similarity index 96% rename from 150_gfui/src_300_gxw/gplx/gfui/GxwTextBox_lang.java rename to 150_gfui/src/gplx/gfui/controls/gxws/GxwTextBox_lang.java index 053436f85..aaec3eebe 100644 --- a/150_gfui/src_300_gxw/gplx/gfui/GxwTextBox_lang.java +++ b/150_gfui/src/gplx/gfui/controls/gxws/GxwTextBox_lang.java @@ -15,7 +15,7 @@ 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.gfui; import gplx.*; +package gplx.gfui.controls.gxws; import gplx.*; import gplx.gfui.*; import gplx.gfui.controls.*; import java.awt.AWTEvent; import java.awt.Color; import java.awt.Graphics; @@ -33,6 +33,7 @@ import javax.swing.KeyStroke; import javax.swing.border.BevelBorder; import javax.swing.border.Border; import javax.swing.text.JTextComponent; +import gplx.gfui.ipts.*; import gplx.gfui.gfxs.*; import gplx.gfui.controls.elems.*; public class GxwTextBox_lang extends JTextArea implements GxwTextFld { public Object UnderElem() {return this;} public GxwCore_base Core() {return ctrlMgr;} GxwCore_base ctrlMgr; diff --git a/150_gfui/src/gplx/gfui/controls/gxws/GxwTextFld.java b/150_gfui/src/gplx/gfui/controls/gxws/GxwTextFld.java new file mode 100644 index 000000000..7cce37150 --- /dev/null +++ b/150_gfui/src/gplx/gfui/controls/gxws/GxwTextFld.java @@ -0,0 +1,26 @@ +/* +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.gfui.controls.gxws; import gplx.*; import gplx.gfui.*; import gplx.gfui.controls.*; +public interface GxwTextFld extends GxwElem { + boolean Border_on(); void Border_on_(boolean v); + int SelBgn(); void SelBgn_set(int v); + int SelLen(); void SelLen_set(int v); + void CreateControlIfNeeded(); + boolean OverrideTabKey(); void OverrideTabKey_(boolean v); + void Margins_set(int left, int top, int right, int bot); +} diff --git a/150_gfui/src_300_gxw/gplx/gfui/GxwTextHtml.java b/150_gfui/src/gplx/gfui/controls/gxws/GxwTextHtml.java similarity index 84% rename from 150_gfui/src_300_gxw/gplx/gfui/GxwTextHtml.java rename to 150_gfui/src/gplx/gfui/controls/gxws/GxwTextHtml.java index 5e54e238e..b61a0b5c7 100644 --- a/150_gfui/src_300_gxw/gplx/gfui/GxwTextHtml.java +++ b/150_gfui/src/gplx/gfui/controls/gxws/GxwTextHtml.java @@ -15,8 +15,8 @@ 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.gfui; import gplx.*; -interface GxwTextHtml extends GxwTextMemo { +package gplx.gfui.controls.gxws; import gplx.*; import gplx.gfui.*; import gplx.gfui.controls.*; +public interface GxwTextHtml extends GxwTextMemo { Keyval[] Html_sel_atrs(); void Html_enabled(boolean v); String Html_doc_html(); diff --git a/150_gfui/src_300_gxw/gplx/gfui/GxwTextHtml_lang.java b/150_gfui/src/gplx/gfui/controls/gxws/GxwTextHtml_lang.java similarity index 96% rename from 150_gfui/src_300_gxw/gplx/gfui/GxwTextHtml_lang.java rename to 150_gfui/src/gplx/gfui/controls/gxws/GxwTextHtml_lang.java index 62ccee2f5..792295f35 100644 --- a/150_gfui/src_300_gxw/gplx/gfui/GxwTextHtml_lang.java +++ b/150_gfui/src/gplx/gfui/controls/gxws/GxwTextHtml_lang.java @@ -15,7 +15,7 @@ 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.gfui; import gplx.*; +package gplx.gfui.controls.gxws; import gplx.*; import gplx.gfui.*; import gplx.gfui.controls.*; import gplx.core.strings.*; import java.awt.Color; import java.awt.Component; @@ -62,6 +62,7 @@ import javax.swing.text.html.HTMLEditorKit; import javax.swing.text.html.HTMLEditorKit.HTMLFactory; import javax.swing.text.html.InlineView; import javax.swing.text.html.StyleSheet; +import gplx.gfui.ipts.*; import gplx.gfui.gfxs.*; public class GxwTextHtml_lang extends JScrollPane implements GxwTextHtml { @Override public GxwCore_base Core() {return core;} GxwCore_host core; public GxwCbkHost Host() {return host;} public void Host_set(GxwCbkHost host) {this.host = host; editor.Host_set(host);} GxwCbkHost host; @@ -214,7 +215,7 @@ class GxwTextHtml_editor extends JEditorPane implements GxwTextHtml { public Keyval[] Html_sel_atrs() { if (String_.Eq(this.getContentType(), "text/plain")) return Keyval_.Ary_empty; Element elm = Html_sel_elm(); if (elm == null) return Keyval_.Ary_empty; - List_adp sel_atrs_list = List_adp_.new_(); + List_adp sel_atrs_list = List_adp_.New(); Html_sel_atrs(elm.getAttributes(), sel_atrs_list, null, "."); return (Keyval[])sel_atrs_list.To_ary(Keyval.class); } diff --git a/150_gfui/src_300_gxw/gplx/gfui/GxwTextFld.java b/150_gfui/src/gplx/gfui/controls/gxws/GxwTextMemo.java similarity index 72% rename from 150_gfui/src_300_gxw/gplx/gfui/GxwTextFld.java rename to 150_gfui/src/gplx/gfui/controls/gxws/GxwTextMemo.java index 621b7ce87..8a399c105 100644 --- a/150_gfui/src_300_gxw/gplx/gfui/GxwTextFld.java +++ b/150_gfui/src/gplx/gfui/controls/gxws/GxwTextMemo.java @@ -15,16 +15,8 @@ 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.gfui; import gplx.*; -public interface GxwTextFld extends GxwElem { - boolean Border_on(); void Border_on_(boolean v); - int SelBgn(); void SelBgn_set(int v); - int SelLen(); void SelLen_set(int v); - void CreateControlIfNeeded(); - boolean OverrideTabKey(); void OverrideTabKey_(boolean v); - void Margins_set(int left, int top, int right, int bot); -} -interface GxwTextMemo extends GxwTextFld { +package gplx.gfui.controls.gxws; import gplx.*; import gplx.gfui.*; import gplx.gfui.controls.*; +public interface GxwTextMemo extends GxwTextFld { int LinesPerScreen(); int LinesTotal(); int ScreenCount(); diff --git a/150_gfui/src_300_gxw/gplx/gfui/GxwTextMemo_lang.java b/150_gfui/src/gplx/gfui/controls/gxws/GxwTextMemo_lang.java similarity index 95% rename from 150_gfui/src_300_gxw/gplx/gfui/GxwTextMemo_lang.java rename to 150_gfui/src/gplx/gfui/controls/gxws/GxwTextMemo_lang.java index a1c16dbdc..61b423c94 100644 --- a/150_gfui/src_300_gxw/gplx/gfui/GxwTextMemo_lang.java +++ b/150_gfui/src/gplx/gfui/controls/gxws/GxwTextMemo_lang.java @@ -15,7 +15,7 @@ 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.gfui; import gplx.*; +package gplx.gfui.controls.gxws; import gplx.*; import gplx.gfui.*; import gplx.gfui.controls.*; import java.awt.AWTKeyStroke; import java.awt.Color; import java.awt.Font; @@ -37,6 +37,16 @@ import javax.swing.text.Document; import javax.swing.undo.CannotRedoException; import javax.swing.undo.CannotUndoException; import javax.swing.undo.UndoManager; + +import gplx.gfui.GfuiAlign; +import gplx.gfui.GfuiAlign_; +import gplx.gfui.PointAdp; +import gplx.gfui.PointAdp_; +import gplx.gfui.RectAdp; +import gplx.gfui.SizeAdp; +import gplx.gfui.controls.elems.GfuiElem; +import gplx.gfui.draws.*; +import gplx.gfui.ipts.*; import gplx.gfui.controls.windows.*; public class GxwTextMemo_lang extends JScrollPane implements GxwTextMemo { public JTextArea Inner() {return txt_box;} GxwTextBox_lang txt_box; public GxwCore_base Core() {return core;} GxwCore_base core; @@ -56,7 +66,7 @@ public class GxwTextMemo_lang extends JScrollPane implements GxwTextMemo { else { // txt_box.setBorder(BasicBorders.getTextFieldBorder()); // txt_box.setMargin(new Insets(0, l, 0, r)); - txt_box.setFont(new Font("Courier New", FontStyleAdp_.Plain.val, 12)); + txt_box.setFont(new Font("Courier New", FontStyleAdp_.Plain.Val(), 12)); txt_box.setBorder(BorderFactory.createCompoundBorder(BorderFactory.createLineBorder(Color.BLACK), BorderFactory.createEmptyBorder(top, left, bot, right))); } } diff --git a/150_gfui/src_300_gxw/gplx/gfui/GxwWin.java b/150_gfui/src/gplx/gfui/controls/gxws/GxwWin.java similarity index 86% rename from 150_gfui/src_300_gxw/gplx/gfui/GxwWin.java rename to 150_gfui/src/gplx/gfui/controls/gxws/GxwWin.java index 69e24c59b..95f955a38 100644 --- a/150_gfui/src_300_gxw/gplx/gfui/GxwWin.java +++ b/150_gfui/src/gplx/gfui/controls/gxws/GxwWin.java @@ -15,7 +15,8 @@ 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.gfui; import gplx.*; +package gplx.gfui.controls.gxws; import gplx.*; import gplx.gfui.*; import gplx.gfui.controls.*; +import gplx.gfui.imgs.*; public interface GxwWin extends GxwElem { IconAdp IconWin(); void IconWin_set(IconAdp v); @@ -26,7 +27,7 @@ public interface GxwWin extends GxwElem { void CloseWin(); boolean Pin(); void Pin_set(boolean val); - void OpenedCmd_set(GfoInvkAbleCmd v); + void OpenedCmd_set(Gfo_invk_cmd v); void TaskbarVisible_set(boolean val); void TaskbarParkingWindowFix(GxwElem form); } diff --git a/150_gfui/src_300_gxw/gplx/gfui/GxwWin_lang.java b/150_gfui/src/gplx/gfui/controls/gxws/GxwWin_lang.java similarity index 88% rename from 150_gfui/src_300_gxw/gplx/gfui/GxwWin_lang.java rename to 150_gfui/src/gplx/gfui/controls/gxws/GxwWin_lang.java index 0a00a2b58..02df0153b 100644 --- a/150_gfui/src_300_gxw/gplx/gfui/GxwWin_lang.java +++ b/150_gfui/src/gplx/gfui/controls/gxws/GxwWin_lang.java @@ -15,7 +15,7 @@ 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.gfui; import gplx.*; +package gplx.gfui.controls.gxws; import gplx.*; import gplx.gfui.*; import gplx.gfui.controls.*; import javax.swing.JDesktopPane; import javax.swing.JDialog; import javax.swing.JFrame; @@ -43,6 +43,7 @@ import java.awt.event.MouseEvent; import java.awt.event.MouseWheelEvent; import java.awt.event.WindowEvent; import java.awt.event.WindowListener; +import gplx.gfui.draws.*; import gplx.gfui.ipts.*; import gplx.gfui.gfxs.*; import gplx.gfui.imgs.*; import gplx.gfui.kits.swts.*; public class GxwWin_lang extends JFrame implements GxwWin, WindowListener { public void ShowWin() {this.setVisible(true);} public void HideWin() {this.setVisible(false);} @@ -58,7 +59,7 @@ public class GxwWin_lang extends JFrame implements GxwWin, WindowListener { icon = i; this.setIconImage(i.XtoImage()); } - public void OpenedCmd_set(GfoInvkAbleCmd v) {whenLoadedCmd = v;} GfoInvkAbleCmd whenLoadedCmd = GfoInvkAbleCmd.Null; + public void OpenedCmd_set(Gfo_invk_cmd v) {whenLoadedCmd = v;} Gfo_invk_cmd whenLoadedCmd = Gfo_invk_cmd.Noop; public GxwCore_base Core() {return ctrlMgr;} GxwCore_base ctrlMgr; public GxwCbkHost Host() {return host;} public void Host_set(GxwCbkHost host) {this.host = host;} GxwCbkHost host = GxwCbkHost_.Null; public String TextVal() {return this.getTitle();} public void TextVal_set(String v) {this.setTitle(v);} @@ -72,7 +73,7 @@ public class GxwWin_lang extends JFrame implements GxwWin, WindowListener { public void windowDeactivated(WindowEvent e) {} public void windowDeiconified(WindowEvent e) {host.SizeChangedCbk();} public void windowIconified(WindowEvent e) {host.SizeChangedCbk();} - public void windowOpened(WindowEvent e) {whenLoadedCmd.Invk();} + public void windowOpened(WindowEvent e) {whenLoadedCmd.Exec();} @Override public void processKeyEvent(KeyEvent e) {if (GxwCbkHost_.ExecKeyEvent(host, e)) super.processKeyEvent(e);} @Override public void processMouseEvent(MouseEvent e) {if (GxwCbkHost_.ExecMouseEvent(host, e)) super.processMouseEvent(e);} @Override public void processMouseWheelEvent(MouseWheelEvent e) {if (GxwCbkHost_.ExecMouseWheel(host, e)) super.processMouseWheelEvent(e);} @@ -115,7 +116,7 @@ class GxwWin_jdialog extends JDialog implements GxwWin, WindowListener { icon = i; this.setIconImage(i.XtoImage()); } - public void OpenedCmd_set(GfoInvkAbleCmd v) {whenLoadedCmd = v;} GfoInvkAbleCmd whenLoadedCmd = GfoInvkAbleCmd.Null; + public void OpenedCmd_set(Gfo_invk_cmd v) {whenLoadedCmd = v;} Gfo_invk_cmd whenLoadedCmd = Gfo_invk_cmd.Noop; public GxwCore_base Core() {return ctrlMgr;} GxwCore_base ctrlMgr; public GxwCbkHost Host() {return host;} public void Host_set(GxwCbkHost host) {this.host = host;} GxwCbkHost host = GxwCbkHost_.Null; public String TextVal() {return "";} public void TextVal_set(String v) {} @@ -129,7 +130,7 @@ class GxwWin_jdialog extends JDialog implements GxwWin, WindowListener { public void windowDeactivated(WindowEvent e) {} public void windowDeiconified(WindowEvent e) {host.SizeChangedCbk();} public void windowIconified(WindowEvent e) {host.SizeChangedCbk();} - public void windowOpened(WindowEvent e) {whenLoadedCmd.Invk();} + public void windowOpened(WindowEvent e) {whenLoadedCmd.Exec();} @Override public void processKeyEvent(KeyEvent e) {if (GxwCbkHost_.ExecKeyEvent(host, e)) super.processKeyEvent(e);} @Override public void processMouseEvent(MouseEvent e) {if (GxwCbkHost_.ExecMouseEvent(host, e)) super.processMouseEvent(e);} @Override public void processMouseWheelEvent(MouseWheelEvent e) {if (GxwCbkHost_.ExecMouseWheel(host, e)) super.processMouseWheelEvent(e);} @@ -172,7 +173,7 @@ class GxwWin_jwindow extends JWindow implements GxwWin, WindowListener { icon = i; this.setIconImage(i.XtoImage()); } - public void OpenedCmd_set(GfoInvkAbleCmd v) {whenLoadedCmd = v;} GfoInvkAbleCmd whenLoadedCmd = GfoInvkAbleCmd.Null; + public void OpenedCmd_set(Gfo_invk_cmd v) {whenLoadedCmd = v;} Gfo_invk_cmd whenLoadedCmd = Gfo_invk_cmd.Noop; public GxwCore_base Core() {return ctrlMgr;} GxwCore_base ctrlMgr; public GxwCbkHost Host() {return host;} public void Host_set(GxwCbkHost host) {this.host = host;} GxwCbkHost host = GxwCbkHost_.Null; public String TextVal() {return "";} public void TextVal_set(String v) {}// this.setTitle(v); @@ -186,7 +187,7 @@ class GxwWin_jwindow extends JWindow implements GxwWin, WindowListener { public void windowDeactivated(WindowEvent e) {} public void windowDeiconified(WindowEvent e) {host.SizeChangedCbk();} public void windowIconified(WindowEvent e) {host.SizeChangedCbk();} - public void windowOpened(WindowEvent e) {whenLoadedCmd.Invk();} + public void windowOpened(WindowEvent e) {whenLoadedCmd.Exec();} @Override public void processKeyEvent(KeyEvent e) {if (GxwCbkHost_.ExecKeyEvent(host, e)) super.processKeyEvent(e);} @Override public void processMouseEvent(MouseEvent e) {if (GxwCbkHost_.ExecMouseEvent(host, e)) super.processMouseEvent(e);} @Override public void processMouseWheelEvent(MouseWheelEvent e) {if (GxwCbkHost_.ExecMouseWheel(host, e)) super.processMouseWheelEvent(e);} @@ -242,30 +243,26 @@ class GxwCore_form extends GxwCore_lang { } GxwCore_form() {} } - - class GxwElemFactory_swt extends GxwElemFactory_base { public GxwElemFactory_swt(org.eclipse.swt.widgets.Display display) { this.display = display; } Display display; -@gplx.Internal @Override protected GxwElem control_() {return null;} -@gplx.Internal @Override protected GxwWin win_app_() { - return new Swt_win(display); + public GxwElem control_() {return null;} + public GxwWin win_app_() { + return new Swt_win(display); + } + public GxwWin win_tool_(Keyval_hash ctorArgs) { + return null; + } + public GxwWin win_toaster_(Keyval_hash ctorArgs) { + return null; + } + public GxwElem lbl_() {return null;} + public GxwTextFld text_fld_() {return null;} + public GxwTextFld text_memo_() {return null;} + public GxwTextHtml text_html_() {return null;} + public GxwCheckListBox checkListBox_(Keyval_hash ctorArgs) {throw Err_.new_unimplemented();} + public GxwComboBox comboBox_() {return null;} + public GxwListBox listBox_() {return null;} } -@gplx.Internal @Override protected GxwWin win_tool_(Keyval_hash ctorArgs) { - return null; -} -@gplx.Internal @Override protected GxwWin win_toaster_(Keyval_hash ctorArgs) { - return null; -} -@gplx.Internal @Override protected GxwElem lbl_() {return null;} -@gplx.Internal @Override protected GxwTextFld text_fld_() {return null;} -@gplx.Internal @Override protected GxwTextFld text_memo_() {return null;} -@gplx.Internal @Override protected GxwTextHtml text_html_() {return null;} -@gplx.Internal @Override protected GxwCheckListBox checkListBox_(Keyval_hash ctorArgs) {throw Err_.new_unimplemented();} -@gplx.Internal @Override protected GxwComboBox comboBox_() {return null;} -@gplx.Internal @Override protected GxwListBox listBox_() {return null;} -} - - //#} \ No newline at end of file diff --git a/150_gfui/src_300_gxw/gplx/gfui/Gxw_html.java b/150_gfui/src/gplx/gfui/controls/gxws/Gxw_html.java similarity index 82% rename from 150_gfui/src_300_gxw/gplx/gfui/Gxw_html.java rename to 150_gfui/src/gplx/gfui/controls/gxws/Gxw_html.java index 658704d1d..bba7c5f9e 100644 --- a/150_gfui/src_300_gxw/gplx/gfui/Gxw_html.java +++ b/150_gfui/src/gplx/gfui/controls/gxws/Gxw_html.java @@ -15,7 +15,7 @@ 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.gfui; import gplx.*; +package gplx.gfui.controls.gxws; import gplx.*; import gplx.gfui.*; import gplx.gfui.controls.*; public interface Gxw_html extends GxwElem { void Html_doc_html_load_by_mem(String html); void Html_doc_html_load_by_url(Io_url path, String html); @@ -24,8 +24,9 @@ public interface Gxw_html extends GxwElem { String Html_js_eval_proc_as_str (String name, Object... args); boolean Html_js_eval_proc_as_bool (String name, Object... args); String Html_js_eval_script (String script); - void Html_js_cbks_add (String js_func_name, GfoInvkAble invk); + Object Html_js_eval_script_as_obj (String script); + void Html_js_cbks_add (String js_func_name, Gfo_invk invk); String Html_js_send_json (String name, String data); - void Html_invk_src_(GfoEvObj v); + void Html_invk_src_(Gfo_evt_itm v); void Html_dispose(); } diff --git a/150_gfui/src_300_gxw/gplx/gfui/Gxw_html_load_tid_.java b/150_gfui/src/gplx/gfui/controls/gxws/Gxw_html_load_tid_.java similarity index 92% rename from 150_gfui/src_300_gxw/gplx/gfui/Gxw_html_load_tid_.java rename to 150_gfui/src/gplx/gfui/controls/gxws/Gxw_html_load_tid_.java index 0a1d09f61..c3d75e4f0 100644 --- a/150_gfui/src_300_gxw/gplx/gfui/Gxw_html_load_tid_.java +++ b/150_gfui/src/gplx/gfui/controls/gxws/Gxw_html_load_tid_.java @@ -15,7 +15,7 @@ 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.gfui; import gplx.*; +package gplx.gfui.controls.gxws; import gplx.*; import gplx.gfui.*; import gplx.gfui.controls.*; public class Gxw_html_load_tid_ { public static final byte Tid_mem = 0, Tid_url = 1; public static final String Key_mem = "mem", Key_url = "url"; diff --git a/150_gfui/src_300_gxw/gplx/gfui/Gxw_tab_itm.java b/150_gfui/src/gplx/gfui/controls/gxws/Gxw_tab_itm.java similarity index 83% rename from 150_gfui/src_300_gxw/gplx/gfui/Gxw_tab_itm.java rename to 150_gfui/src/gplx/gfui/controls/gxws/Gxw_tab_itm.java index 572e85693..c4b4933aa 100644 --- a/150_gfui/src_300_gxw/gplx/gfui/Gxw_tab_itm.java +++ b/150_gfui/src/gplx/gfui/controls/gxws/Gxw_tab_itm.java @@ -15,7 +15,8 @@ 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.gfui; import gplx.*; +package gplx.gfui.controls.gxws; import gplx.*; import gplx.gfui.*; import gplx.gfui.controls.*; +import gplx.gfui.controls.elems.*; import gplx.gfui.controls.standards.*; public interface Gxw_tab_itm extends GxwElem { void Subs_add(GfuiElem sub); Gfui_tab_itm_data Tab_data(); diff --git a/150_gfui/src_300_gxw/gplx/gfui/Gxw_tab_mgr.java b/150_gfui/src/gplx/gfui/controls/gxws/Gxw_tab_mgr.java similarity index 88% rename from 150_gfui/src_300_gxw/gplx/gfui/Gxw_tab_mgr.java rename to 150_gfui/src/gplx/gfui/controls/gxws/Gxw_tab_mgr.java index ec263c6c9..5f7a88706 100644 --- a/150_gfui/src_300_gxw/gplx/gfui/Gxw_tab_mgr.java +++ b/150_gfui/src/gplx/gfui/controls/gxws/Gxw_tab_mgr.java @@ -15,7 +15,8 @@ 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.gfui; import gplx.*; +package gplx.gfui.controls.gxws; import gplx.*; import gplx.gfui.*; import gplx.gfui.controls.*; +import gplx.gfui.draws.*; import gplx.gfui.controls.standards.*; public interface Gxw_tab_mgr extends GxwElem { ColorAdp Btns_selected_color(); void Btns_selected_color_(ColorAdp v); ColorAdp Btns_unselected_color(); void Btns_unselected_color_(ColorAdp v); diff --git a/150_gfui/src_300_gxw/gplx/gfui/MockForm.java b/150_gfui/src/gplx/gfui/controls/gxws/MockForm.java similarity index 83% rename from 150_gfui/src_300_gxw/gplx/gfui/MockForm.java rename to 150_gfui/src/gplx/gfui/controls/gxws/MockForm.java index 3c85bed76..d35be9c9d 100644 --- a/150_gfui/src_300_gxw/gplx/gfui/MockForm.java +++ b/150_gfui/src/gplx/gfui/controls/gxws/MockForm.java @@ -15,7 +15,8 @@ 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.gfui; import gplx.*; +package gplx.gfui.controls.gxws; import gplx.*; import gplx.gfui.*; import gplx.gfui.controls.*; +import gplx.gfui.imgs.*; public class MockForm extends GxwElem_mock_base implements GxwWin { public IconAdp IconWin() {return null;} public void IconWin_set(IconAdp v) {} public void ShowWin() {} @@ -24,8 +25,8 @@ public class MockForm extends GxwElem_mock_base implements GxwWin { public boolean Maximized() {return false;} public void Maximized_(boolean v) {} public boolean Minimized() {return false;} public void Minimized_(boolean v) {} public boolean Pin() {return pin;} public void Pin_set(boolean val) {pin = val;} private boolean pin; - public void OpenedCmd_set(GfoInvkAbleCmd v) {} + public void OpenedCmd_set(Gfo_invk_cmd v) {} public void TaskbarVisible_set(boolean val) {} public void TaskbarParkingWindowFix(GxwElem form) {} - public static final MockForm Instance = new MockForm(); MockForm() {} + public static final MockForm Instance = new MockForm(); MockForm() {} } diff --git a/150_gfui/src_420_box_basic/gplx/gfui/GfuiBtn.java b/150_gfui/src/gplx/gfui/controls/standards/GfuiBtn.java similarity index 79% rename from 150_gfui/src_420_box_basic/gplx/gfui/GfuiBtn.java rename to 150_gfui/src/gplx/gfui/controls/standards/GfuiBtn.java index 71662724d..ce94c2382 100644 --- a/150_gfui/src_420_box_basic/gplx/gfui/GfuiBtn.java +++ b/150_gfui/src/gplx/gfui/controls/standards/GfuiBtn.java @@ -15,13 +15,14 @@ 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.gfui; import gplx.*; +package gplx.gfui.controls.standards; import gplx.*; import gplx.gfui.*; import gplx.gfui.controls.*; import gplx.langs.gfs.*; +import gplx.gfui.draws.*; import gplx.gfui.gfxs.*; import gplx.gfui.imgs.*; import gplx.gfui.kits.core.*; import gplx.gfui.controls.gxws.*; import gplx.gfui.controls.elems.*; import gplx.gfui.controls.windows.*; public class GfuiBtn extends GfuiElemBase { @Override public boolean Click_able() {return true;} @Override public void Click() {GfuiBtn.DoThis(this, clickMsg, clickInvkCmd);} - @gplx.Internal protected GfuiBtn Click_msg_(GfoMsg v) {clickMsg = v; return this;} GfoMsg clickMsg; - @gplx.Internal protected GfuiBtn Click_invk(GfoInvkAbleCmd v) {clickInvkCmd = v; return this;} GfoInvkAbleCmd clickInvkCmd; + public GfuiBtn Click_msg_(GfoMsg v) {clickMsg = v; return this;} GfoMsg clickMsg; + public GfuiBtn Click_invk(Gfo_invk_cmd v) {clickInvkCmd = v; return this;} Gfo_invk_cmd clickInvkCmd; @Override public boolean PaintCbk(PaintArgs args) { super.PaintCbk(args); if (this.Focus_has()) focusBorder.DrawData(args.Graphics()); @@ -32,9 +33,9 @@ public class GfuiBtn extends GfuiElemBase { @Override public boolean FocusGotCbk() {super.FocusGotCbk(); this.Redraw(); return true;} // Redraw for focusBorder @Override public boolean FocusLostCbk() {super.FocusLostCbk(); this.Redraw(); return true;} // Redraw for focusBorder public ImageAdp Btn_img() { - Object o = GfoInvkAble_.InvkCmd(UnderElem(), Invk_btn_img); + Object o = Gfo_invk_.Invk_by_key(UnderElem(), Invk_btn_img); return o == UnderElem() ? null : (ImageAdp)o; // NOTE: lgc guard - } public GfuiBtn Btn_img_(ImageAdp v) {GfoInvkAble_.InvkCmd_val(UnderElem(), Invk_btn_img_, v); return this;} + } public GfuiBtn Btn_img_(ImageAdp v) {Gfo_invk_.Invk_by_val(UnderElem(), Invk_btn_img_, v); return this;} @Override public GxwElem UnderElem_make(Keyval_hash ctorArgs) {return GxwElemFactory_.Instance.control_();} @Override public void ctor_GfuiBox_base(Keyval_hash ctorArgs) { focusBorder = GfuiBorderMgr.new_().All_(PenAdp_.new_(ColorAdp_.Gray, 1)); @@ -53,11 +54,11 @@ public class GfuiBtn extends GfuiElemBase { Inject_(GfuiBtnClickBnd.Instance); Inject_(GfuiFocusXferBnd.Instance); } Gfui_kit kit; - @gplx.Internal protected static void DoThis(GfuiElem click, GfoMsg clickMsg, GfoInvkAbleCmd clickInvkCmd) { + @gplx.Internal protected static void DoThis(GfuiElem click, GfoMsg clickMsg, Gfo_invk_cmd clickInvkCmd) { try { if (clickInvkCmd != null) { GfsCtx ctx = GfsCtx.new_().MsgSrc_(click); - clickInvkCmd.InvkAble().Invk(ctx, 0, clickInvkCmd.Cmd(), GfoMsg_.Null); + clickInvkCmd.Exec_by_ctx(ctx, GfoMsg_.Null); } else if (clickMsg != null && clickMsg != GfoMsg_.Null) { GfsCtx ctx = GfsCtx.new_().MsgSrc_(click); diff --git a/150_gfui/src_420_box_basic/gplx/gfui/GfuiBtnClickBnd.java b/150_gfui/src/gplx/gfui/controls/standards/GfuiBtnClickBnd.java similarity index 78% rename from 150_gfui/src_420_box_basic/gplx/gfui/GfuiBtnClickBnd.java rename to 150_gfui/src/gplx/gfui/controls/standards/GfuiBtnClickBnd.java index 969611883..a2ae8926e 100644 --- a/150_gfui/src_420_box_basic/gplx/gfui/GfuiBtnClickBnd.java +++ b/150_gfui/src/gplx/gfui/controls/standards/GfuiBtnClickBnd.java @@ -15,9 +15,10 @@ 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.gfui; import gplx.*; +package gplx.gfui.controls.standards; import gplx.*; import gplx.gfui.*; import gplx.gfui.controls.*; +import gplx.gfui.ipts.*; import gplx.gfui.controls.elems.*; import gplx.core.interfaces.*; -class GfuiBtnClickBnd implements InjectAble, GfoInvkAble { +class GfuiBtnClickBnd implements InjectAble, Gfo_invk { public void Inject(Object owner) { GfuiElem elem = GfuiElem_.cast(owner); IptBnd_.cmd_(IptCfg_.Null, elem, GfuiElemKeys.ActionExec_cmd, IptKey_.Enter, IptKey_.Space); @@ -34,8 +35,8 @@ class GfuiBtnClickBnd implements InjectAble, GfoInvkAble { } public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, ExecMouseUp_cmd)) ExecMouseUp(IptEventData.ctx_(ctx, m)); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; - } static final String ExecMouseUp_cmd = "ExecMouseUp"; - public static final GfuiBtnClickBnd Instance = new GfuiBtnClickBnd(); GfuiBtnClickBnd() {} + } static final String ExecMouseUp_cmd = "ExecMouseUp"; + public static final GfuiBtnClickBnd Instance = new GfuiBtnClickBnd(); GfuiBtnClickBnd() {} } diff --git a/150_gfui/src_420_box_basic/gplx/gfui/GfuiBtn_.java b/150_gfui/src/gplx/gfui/controls/standards/GfuiBtn_.java similarity index 79% rename from 150_gfui/src_420_box_basic/gplx/gfui/GfuiBtn_.java rename to 150_gfui/src/gplx/gfui/controls/standards/GfuiBtn_.java index 38ea3a62a..26c80c412 100644 --- a/150_gfui/src_420_box_basic/gplx/gfui/GfuiBtn_.java +++ b/150_gfui/src/gplx/gfui/controls/standards/GfuiBtn_.java @@ -15,7 +15,8 @@ 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.gfui; import gplx.*; +package gplx.gfui.controls.standards; import gplx.*; import gplx.gfui.*; import gplx.gfui.controls.*; +import gplx.gfui.imgs.*; import gplx.gfui.kits.core.*; import gplx.gfui.controls.gxws.*; import gplx.gfui.controls.elems.*; public class GfuiBtn_ { public static GfuiBtn as_(Object obj) {return obj instanceof GfuiBtn ? (GfuiBtn)obj : null;} public static GfuiBtn cast(Object obj) {try {return (GfuiBtn)obj;} catch(Exception exc) {throw Err_.new_type_mismatch_w_exc(exc, GfuiBtn.class, obj);}} @@ -25,9 +26,9 @@ public class GfuiBtn_ { rv.Click_msg_(msg); return rv; } - public static GfuiBtn invk_(String key, GfuiElem owner, GfoInvkAble invk, String m) { + public static GfuiBtn invk_(String key, GfuiElem owner, Gfo_invk invk, String m) { GfuiBtn rv = new_(key); rv.Owner_(owner); - rv.Click_invk(GfoInvkAbleCmd.new_(invk, m)); + rv.Click_invk(Gfo_invk_cmd.New_by_key(invk, m)); return rv; } public static GfuiBtn kit_(Gfui_kit kit, String key, GxwElem elm, Keyval_hash ctorArgs) { @@ -35,7 +36,7 @@ public class GfuiBtn_ { rv.ctor_kit_GfuiElemBase(kit, key, elm, ctorArgs); return rv; } - @gplx.Internal protected static GfuiBtn new_(String key) { + public static GfuiBtn new_(String key) { GfuiBtn rv = new GfuiBtn(); rv.ctor_GfuiBox_base(GfuiElem_.init_focusAble_true_()); rv.Key_of_GfuiElem_(key); diff --git a/150_gfui/src_420_box_basic/gplx/gfui/GfuiChkBox.java b/150_gfui/src/gplx/gfui/controls/standards/GfuiChkBox.java similarity index 84% rename from 150_gfui/src_420_box_basic/gplx/gfui/GfuiChkBox.java rename to 150_gfui/src/gplx/gfui/controls/standards/GfuiChkBox.java index da4d52def..5ae919bbe 100644 --- a/150_gfui/src_420_box_basic/gplx/gfui/GfuiChkBox.java +++ b/150_gfui/src/gplx/gfui/controls/standards/GfuiChkBox.java @@ -15,12 +15,13 @@ 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.gfui; import gplx.*; +package gplx.gfui.controls.standards; import gplx.*; import gplx.gfui.*; import gplx.gfui.controls.*; +import gplx.gfui.draws.*; import gplx.gfui.gfxs.*; import gplx.gfui.imgs.*; import gplx.gfui.controls.gxws.*; import gplx.gfui.controls.elems.*; import gplx.gfui.controls.windows.*; public class GfuiChkBox extends GfuiElemBase { public boolean Val() {return val;} private boolean val; public void Val_set(boolean val) { this.val = val; - GfoEvMgr_.PubVal(this, "Check_end", val); + Gfo_evt_mgr_.Pub_val(this, "Check_end", val); GfuiBtn.DoThis(this, clickMsg, clickInvkCmd); } public void Val_sync(boolean val) { @@ -28,7 +29,7 @@ public class GfuiChkBox extends GfuiElemBase { this.Redraw(); } @gplx.Internal protected void Click_msg_(GfoMsg v) {clickMsg = v;} GfoMsg clickMsg; - @gplx.Internal protected GfuiChkBox Click_invk(GfoInvkAbleCmd v) {clickInvkCmd = v; return this;} GfoInvkAbleCmd clickInvkCmd; + @gplx.Internal protected GfuiChkBox Click_invk(Gfo_invk_cmd v) {clickInvkCmd = v; return this;} Gfo_invk_cmd clickInvkCmd; public GfuiBorderMgr FocusBorder() {return focusBorder;} GfuiBorderMgr focusBorder = GfuiBorderMgr.new_(); @Override public boolean Click_able() {return true;} @Override public void Click() { diff --git a/150_gfui/src_420_box_basic/gplx/gfui/GfuiChkBox_.java b/150_gfui/src/gplx/gfui/controls/standards/GfuiChkBox_.java similarity index 91% rename from 150_gfui/src_420_box_basic/gplx/gfui/GfuiChkBox_.java rename to 150_gfui/src/gplx/gfui/controls/standards/GfuiChkBox_.java index ddf0e1ad7..8ff48f00d 100644 --- a/150_gfui/src_420_box_basic/gplx/gfui/GfuiChkBox_.java +++ b/150_gfui/src/gplx/gfui/controls/standards/GfuiChkBox_.java @@ -15,7 +15,8 @@ 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.gfui; import gplx.*; +package gplx.gfui.controls.standards; import gplx.*; import gplx.gfui.*; import gplx.gfui.controls.*; +import gplx.gfui.gfxs.*; import gplx.gfui.controls.elems.*; public class GfuiChkBox_ { public static GfuiChkBox as_(Object obj) {return obj instanceof GfuiChkBox ? (GfuiChkBox)obj : null;} public static GfuiChkBox cast(Object obj) {try {return (GfuiChkBox)obj;} catch(Exception exc) {throw Err_.new_type_mismatch_w_exc(exc, GfuiChkBox.class, obj);}} @@ -30,9 +31,9 @@ public class GfuiChkBox_ { rv.Click_msg_(msg); return rv; } - public static GfuiChkBox invk_(String key, GfuiElem owner, String text, GfoInvkAble invk, String m) { + public static GfuiChkBox invk_(String key, GfuiElem owner, String text, Gfo_invk invk, String m) { GfuiChkBox rv = new_(); rv.Owner_(owner, key).Text_any_(text); - rv.Click_invk(GfoInvkAbleCmd.new_(invk, m)); + rv.Click_invk(Gfo_invk_cmd.New_by_key(invk, m)); return rv; } public static GfuiChkBox noop_(String key, GfuiElem owner, String text) { diff --git a/150_gfui/src_420_box_basic/gplx/gfui/GfuiComboBox.java b/150_gfui/src/gplx/gfui/controls/standards/GfuiComboBox.java similarity index 89% rename from 150_gfui/src_420_box_basic/gplx/gfui/GfuiComboBox.java rename to 150_gfui/src/gplx/gfui/controls/standards/GfuiComboBox.java index 4561fa2a9..286055e86 100644 --- a/150_gfui/src_420_box_basic/gplx/gfui/GfuiComboBox.java +++ b/150_gfui/src/gplx/gfui/controls/standards/GfuiComboBox.java @@ -15,14 +15,15 @@ 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.gfui; import gplx.*; +package gplx.gfui.controls.standards; import gplx.*; import gplx.gfui.*; import gplx.gfui.controls.*; +import gplx.gfui.kits.core.*; import gplx.gfui.controls.gxws.*; import gplx.gfui.controls.elems.*; public class GfuiComboBox extends GfuiElemBase { @Override public void ctor_GfuiBox_base(Keyval_hash ctorArgs) { super.ctor_GfuiBox_base(ctorArgs); this.combo = (GxwComboBox)this.UnderElem(); } @Override public GxwElem UnderElem_make(Keyval_hash ctorArgs) {return GxwElemFactory_.Instance.comboBox_();} private GxwComboBox combo; - public int SelBgn() {return combo.SelBgn();} public void SelBgn_set(int v) {combo.SelBgn_set(v); GfoEvMgr_.Pub(this, Evt__selection_start_changed);} + public int SelBgn() {return combo.SelBgn();} public void SelBgn_set(int v) {combo.SelBgn_set(v); Gfo_evt_mgr_.Pub(this, Evt__selection_start_changed);} public int SelLen() {return combo.SelLen();} public void SelLen_set(int v) {combo.SelLen_set(v);} public void Sel_(int bgn, int len) {combo.Sel_(bgn, len);} public Object SelectedItm() {return combo.SelectedItm();} public void SelectedItm_set(Object v) {combo.SelectedItm_set(v);} diff --git a/150_gfui/src_420_box_basic/gplx/gfui/GfuiLbl.java b/150_gfui/src/gplx/gfui/controls/standards/GfuiLbl.java similarity index 85% rename from 150_gfui/src_420_box_basic/gplx/gfui/GfuiLbl.java rename to 150_gfui/src/gplx/gfui/controls/standards/GfuiLbl.java index 8a751cc7a..70984c331 100644 --- a/150_gfui/src_420_box_basic/gplx/gfui/GfuiLbl.java +++ b/150_gfui/src/gplx/gfui/controls/standards/GfuiLbl.java @@ -15,7 +15,8 @@ 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.gfui; import gplx.*; +package gplx.gfui.controls.standards; import gplx.*; import gplx.gfui.*; import gplx.gfui.controls.*; +import gplx.gfui.gfxs.*; import gplx.gfui.imgs.*; import gplx.gfui.kits.core.*; import gplx.gfui.controls.gxws.*; import gplx.gfui.controls.elems.*; public class GfuiLbl extends GfuiElemBase { // standard label does not support tooltips @Override public void Click() { int focusOrder = this.OwnerElem().SubElems().IndexOfA(this); diff --git a/150_gfui/src_420_box_basic/gplx/gfui/GfuiLbl_.java b/150_gfui/src/gplx/gfui/controls/standards/GfuiLbl_.java similarity index 84% rename from 150_gfui/src_420_box_basic/gplx/gfui/GfuiLbl_.java rename to 150_gfui/src/gplx/gfui/controls/standards/GfuiLbl_.java index 0c5f244eb..8ab9b7e07 100644 --- a/150_gfui/src_420_box_basic/gplx/gfui/GfuiLbl_.java +++ b/150_gfui/src/gplx/gfui/controls/standards/GfuiLbl_.java @@ -15,7 +15,8 @@ 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.gfui; import gplx.*; +package gplx.gfui.controls.standards; import gplx.*; import gplx.gfui.*; import gplx.gfui.controls.*; +import gplx.gfui.draws.*; import gplx.gfui.kits.core.*; import gplx.gfui.controls.gxws.*; import gplx.gfui.controls.elems.*; public class GfuiLbl_ { public static GfuiLbl sub_(String key, GfuiElem owner) { GfuiLbl rv = new_(); @@ -42,7 +43,7 @@ public class GfuiLbl_ { rv.Border().All_(PenAdp_.black_()); return rv; } - public static final String Text_Null = null; + public static final String Text_Null = null; @gplx.Internal protected static GfuiLbl new_() { GfuiLbl rv = new GfuiLbl(); rv.ctor_GfuiBox_base(GfuiElem_.init_focusAble_false_()); diff --git a/150_gfui/src_420_box_basic/gplx/gfui/GfuiListBox.java b/150_gfui/src/gplx/gfui/controls/standards/GfuiListBox.java similarity index 89% rename from 150_gfui/src_420_box_basic/gplx/gfui/GfuiListBox.java rename to 150_gfui/src/gplx/gfui/controls/standards/GfuiListBox.java index e51c42b51..5873adf22 100644 --- a/150_gfui/src_420_box_basic/gplx/gfui/GfuiListBox.java +++ b/150_gfui/src/gplx/gfui/controls/standards/GfuiListBox.java @@ -15,8 +15,9 @@ 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.gfui; import gplx.*; +package gplx.gfui.controls.standards; import gplx.*; import gplx.gfui.*; import gplx.gfui.controls.*; import gplx.core.lists.*; /*EnumerAble*/ +import gplx.gfui.controls.gxws.*; import gplx.gfui.controls.elems.*; public class GfuiListBox extends GfuiElemBase { @Override public GxwElem UnderElem_make(Keyval_hash ctorArgs) {return GxwElemFactory_.Instance.listBox_();} @Override public void ctor_GfuiBox_base(Keyval_hash ctorArgs) { diff --git a/150_gfui/src_420_box_basic/gplx/gfui/GfuiTextBox.java b/150_gfui/src/gplx/gfui/controls/standards/GfuiTextBox.java similarity index 86% rename from 150_gfui/src_420_box_basic/gplx/gfui/GfuiTextBox.java rename to 150_gfui/src/gplx/gfui/controls/standards/GfuiTextBox.java index 0675d8de8..ec3b9b689 100644 --- a/150_gfui/src_420_box_basic/gplx/gfui/GfuiTextBox.java +++ b/150_gfui/src/gplx/gfui/controls/standards/GfuiTextBox.java @@ -15,12 +15,13 @@ 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.gfui; import gplx.*; +package gplx.gfui.controls.standards; import gplx.*; import gplx.gfui.*; import gplx.gfui.controls.*; +import gplx.gfui.kits.core.*; import gplx.gfui.controls.gxws.*; import gplx.gfui.controls.elems.*; public class GfuiTextBox extends GfuiElemBase { - public static final String SelectionStartChanged_evt = "SelectionStartChanged"; + public static final String SelectionStartChanged_evt = "SelectionStartChanged"; public boolean Border_on() {return textBox.Border_on();} public void Border_on_(boolean v) {BorderOn_set(v);} - public int SelBgn() {return textBox.SelBgn();} public void SelBgn_set(int v) {textBox.SelBgn_set(v); GfoEvMgr_.Pub(this, SelectionStartChanged_evt);} + public int SelBgn() {return textBox.SelBgn();} public void SelBgn_set(int v) {textBox.SelBgn_set(v); Gfo_evt_mgr_.Pub(this, SelectionStartChanged_evt);} public int SelLen() {return textBox.SelLen();} public void SelLen_set(int v) {textBox.SelLen_set(v);} public String SelText() { return String_.MidByLen(this.TextMgr().Val(), this.SelBgn(), this.SelLen()); @@ -53,7 +54,7 @@ public class GfuiTextBox extends GfuiElemBase { @gplx.Internal @Override protected void Click_key_set_(String v) {}// TextBox's shouldn't have clickKeys; among other things, .Text is used to set ClickKey, which for textBox may be very large @gplx.Internal protected void SetTextBox(GxwTextFld textBox) {this.textBox = textBox;} - @gplx.Internal protected void CreateControlIfNeeded() {textBox.CreateControlIfNeeded();} + public void CreateControlIfNeeded() {textBox.CreateControlIfNeeded();} @Override public GxwElem UnderElem_make(Keyval_hash ctorArgs) {return GxwElemFactory_.Instance.text_fld_();} @Override public void ctor_GfuiBox_base(Keyval_hash ctorArgs) { super.ctor_GfuiBox_base(ctorArgs); diff --git a/150_gfui/src_420_box_basic/gplx/gfui/GfuiTextBox_.java b/150_gfui/src/gplx/gfui/controls/standards/GfuiTextBox_.java similarity index 83% rename from 150_gfui/src_420_box_basic/gplx/gfui/GfuiTextBox_.java rename to 150_gfui/src/gplx/gfui/controls/standards/GfuiTextBox_.java index 3a347627d..e9da8752a 100644 --- a/150_gfui/src_420_box_basic/gplx/gfui/GfuiTextBox_.java +++ b/150_gfui/src/gplx/gfui/controls/standards/GfuiTextBox_.java @@ -15,12 +15,13 @@ 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.gfui; import gplx.*; +package gplx.gfui.controls.standards; import gplx.*; import gplx.gfui.*; import gplx.gfui.controls.*; +import gplx.gfui.kits.core.*; import gplx.gfui.controls.gxws.*; import gplx.gfui.controls.elems.*; public class GfuiTextBox_ { public static GfuiTextBox as_(Object obj) {return obj instanceof GfuiTextBox ? (GfuiTextBox)obj : null;} public static GfuiTextBox cast(Object obj) {try {return (GfuiTextBox)obj;} catch(Exception exc) {throw Err_.new_type_mismatch_w_exc(exc, GfuiTextBox.class, obj);}} - public static final String NewLine = "\n"; - public static final String Ctor_Memo = "TextBox_Memo"; + public static final String NewLine = "\n"; + public static final String Ctor_Memo = "TextBox_Memo"; public static GfuiTextBox new_() { GfuiTextBox rv = new GfuiTextBox(); diff --git a/150_gfui/src_420_box_basic/gplx/gfui/GfuiTextMemo.java b/150_gfui/src/gplx/gfui/controls/standards/GfuiTextMemo.java similarity index 90% rename from 150_gfui/src_420_box_basic/gplx/gfui/GfuiTextMemo.java rename to 150_gfui/src/gplx/gfui/controls/standards/GfuiTextMemo.java index 88029ad51..ff9001401 100644 --- a/150_gfui/src_420_box_basic/gplx/gfui/GfuiTextMemo.java +++ b/150_gfui/src/gplx/gfui/controls/standards/GfuiTextMemo.java @@ -15,7 +15,8 @@ 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.gfui; import gplx.*; +package gplx.gfui.controls.standards; import gplx.*; import gplx.gfui.*; import gplx.gfui.controls.*; +import gplx.gfui.controls.gxws.*; public class GfuiTextMemo extends GfuiTextBox { public int LinesPerScreen() {return textBox.LinesPerScreen();} public int LinesTotal() {return textBox.LinesTotal();} public int ScreenCount() {return Int_.DivAndRoundUp(this.LinesTotal(), this.LinesPerScreen());} @@ -29,7 +30,7 @@ public class GfuiTextMemo extends GfuiTextBox { public int LinesPerScreen() {re public void ScrollLineDown() {textBox.ScrollLineDown();} public void ScrollScreenUp() {textBox.ScrollScreenUp();} public void ScrollScreenDown() {textBox.ScrollScreenDown();} - public void SelectionStart_toFirstChar() {textBox.SelectionStart_toFirstChar(); GfoEvMgr_.Pub(this, SelectionStartChanged_evt);} + public void SelectionStart_toFirstChar() {textBox.SelectionStart_toFirstChar(); Gfo_evt_mgr_.Pub(this, SelectionStartChanged_evt);} public void ScrollTillSelectionStartIsFirstLine() {textBox.ScrollTillSelectionStartIsFirstLine();} @Override public GxwElem UnderElem_make(Keyval_hash ctorArgs) {return GxwElemFactory_.Instance.text_memo_();} diff --git a/150_gfui/src_420_box_basic/gplx/gfui/Gfui_html.java b/150_gfui/src/gplx/gfui/controls/standards/Gfui_html.java similarity index 81% rename from 150_gfui/src_420_box_basic/gplx/gfui/Gfui_html.java rename to 150_gfui/src/gplx/gfui/controls/standards/Gfui_html.java index 0fa9d599c..01d088493 100644 --- a/150_gfui/src_420_box_basic/gplx/gfui/Gfui_html.java +++ b/150_gfui/src/gplx/gfui/controls/standards/Gfui_html.java @@ -15,7 +15,8 @@ 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.gfui; import gplx.*; +package gplx.gfui.controls.standards; import gplx.*; import gplx.gfui.*; import gplx.gfui.controls.*; +import gplx.gfui.kits.core.*; import gplx.gfui.controls.gxws.*; import gplx.gfui.controls.elems.*; public class Gfui_html extends GfuiElemBase { public void Under_html_(Gxw_html v) {under = v;} private Gxw_html under; public void Html_doc_html_load_by_mem(String html) {under.Html_doc_html_load_by_mem(html);} @@ -26,9 +27,10 @@ public class Gfui_html extends GfuiElemBase { @gplx.Virtual public String Html_js_eval_proc_as_str(String name, Object... args) {return under.Html_js_eval_proc_as_str(name, args);} @gplx.Virtual public boolean Html_js_eval_proc_as_bool(String name, Object... args) {return under.Html_js_eval_proc_as_bool(name, args);} public String Html_js_eval_script(String script) {return under.Html_js_eval_script(script);} + public Object Html_js_eval_script_as_obj(String script) {return under.Html_js_eval_script_as_obj(script);} public String Html_js_send_json(String name, String data) {return under.Html_js_send_json(name, data);} - public void Html_js_cbks_add(String js_func_name, GfoInvkAble invk) {under.Html_js_cbks_add(js_func_name, invk);} - public void Html_invk_src_(GfoEvObj v) {under.Html_invk_src_(v);} + public void Html_js_cbks_add(String js_func_name, Gfo_invk invk) {under.Html_js_cbks_add(js_func_name, invk);} + public void Html_invk_src_(Gfo_evt_itm v) {under.Html_invk_src_(v);} public void Html_dispose() {under.Html_dispose();} @Override public GfuiElem Text_(String v) { this.Html_doc_html_load_by_mem(v); @@ -46,9 +48,9 @@ public class Gfui_html extends GfuiElemBase { rv.under = under; return rv; } - public static Object Js_args_exec(GfoInvkAble invk, Object[] args) { + public static Object Js_args_exec(Gfo_invk invk, Object[] args) { GfoMsg m = Js_args_to_msg(args); - return GfoInvkAble_.InvkCmd_msg(invk, m.Key(), m); + return Gfo_invk_.Invk_by_msg(invk, m.Key(), m); } public static GfoMsg Js_args_to_msg(Object[] args) { String proc = (String)args[0]; diff --git a/150_gfui/src_420_box_basic/gplx/gfui/Gfui_tab_itm.java b/150_gfui/src/gplx/gfui/controls/standards/Gfui_tab_itm.java similarity index 86% rename from 150_gfui/src_420_box_basic/gplx/gfui/Gfui_tab_itm.java rename to 150_gfui/src/gplx/gfui/controls/standards/Gfui_tab_itm.java index a033d44cb..e2cb5e3f0 100644 --- a/150_gfui/src_420_box_basic/gplx/gfui/Gfui_tab_itm.java +++ b/150_gfui/src/gplx/gfui/controls/standards/Gfui_tab_itm.java @@ -15,7 +15,8 @@ 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.gfui; import gplx.*; +package gplx.gfui.controls.standards; import gplx.*; import gplx.gfui.*; import gplx.gfui.controls.*; +import gplx.gfui.kits.core.*; import gplx.gfui.controls.gxws.*; import gplx.gfui.controls.elems.*; public class Gfui_tab_itm extends GfuiElemBase { private Gxw_tab_itm under; public String Tab_name() {return under.Tab_name();} public void Tab_name_(String v) {under.Tab_name_(v);} diff --git a/150_gfui/src_420_box_basic/gplx/gfui/Gfui_tab_itm_data.java b/150_gfui/src/gplx/gfui/controls/standards/Gfui_tab_itm_data.java similarity index 94% rename from 150_gfui/src_420_box_basic/gplx/gfui/Gfui_tab_itm_data.java rename to 150_gfui/src/gplx/gfui/controls/standards/Gfui_tab_itm_data.java index 780030a63..5020d8739 100644 --- a/150_gfui/src_420_box_basic/gplx/gfui/Gfui_tab_itm_data.java +++ b/150_gfui/src/gplx/gfui/controls/standards/Gfui_tab_itm_data.java @@ -15,7 +15,7 @@ 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.gfui; import gplx.*; +package gplx.gfui.controls.standards; import gplx.*; import gplx.gfui.*; import gplx.gfui.controls.*; public class Gfui_tab_itm_data { public Gfui_tab_itm_data(String key, int idx) {this.key = key; this.idx = idx;} public String Key() {return key;} private String key; diff --git a/150_gfui/src_420_box_basic/gplx/gfui/Gfui_tab_itm_data_tst.java b/150_gfui/src/gplx/gfui/controls/standards/Gfui_tab_itm_data_tst.java similarity index 91% rename from 150_gfui/src_420_box_basic/gplx/gfui/Gfui_tab_itm_data_tst.java rename to 150_gfui/src/gplx/gfui/controls/standards/Gfui_tab_itm_data_tst.java index f763b97d6..21aebb89c 100644 --- a/150_gfui/src_420_box_basic/gplx/gfui/Gfui_tab_itm_data_tst.java +++ b/150_gfui/src/gplx/gfui/controls/standards/Gfui_tab_itm_data_tst.java @@ -15,7 +15,7 @@ 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.gfui; import gplx.*; +package gplx.gfui.controls.standards; import gplx.*; import gplx.gfui.*; import gplx.gfui.controls.*; import org.junit.*; public class Gfui_tab_itm_data_tst { @Before public void init() {} private Gfui_tab_itm_data_fxt fxt = new Gfui_tab_itm_data_fxt(); diff --git a/150_gfui/src_420_box_basic/gplx/gfui/Gfui_tab_mgr.java b/150_gfui/src/gplx/gfui/controls/standards/Gfui_tab_mgr.java similarity index 91% rename from 150_gfui/src_420_box_basic/gplx/gfui/Gfui_tab_mgr.java rename to 150_gfui/src/gplx/gfui/controls/standards/Gfui_tab_mgr.java index 3ee31e179..b04da6dd4 100644 --- a/150_gfui/src_420_box_basic/gplx/gfui/Gfui_tab_mgr.java +++ b/150_gfui/src/gplx/gfui/controls/standards/Gfui_tab_mgr.java @@ -15,7 +15,8 @@ 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.gfui; import gplx.*; +package gplx.gfui.controls.standards; import gplx.*; import gplx.gfui.*; import gplx.gfui.controls.*; +import gplx.gfui.draws.*; import gplx.gfui.kits.core.*; import gplx.gfui.controls.gxws.*; import gplx.gfui.controls.elems.*; public class Gfui_tab_mgr extends GfuiElemBase { public void Under_tab_mgr_(Gxw_tab_mgr v) {under = v;} private Gxw_tab_mgr under; public ColorAdp Btns_selected_color() {return under.Btns_selected_color();} public void Btns_selected_color_(ColorAdp v) {under.Btns_selected_color_(v);} diff --git a/150_gfui/src_500_tab/gplx/gfui/TabBnd.java b/150_gfui/src/gplx/gfui/controls/tabs/TabBnd.java similarity index 85% rename from 150_gfui/src_500_tab/gplx/gfui/TabBnd.java rename to 150_gfui/src/gplx/gfui/controls/tabs/TabBnd.java index 3f5ea869c..36b9ed798 100644 --- a/150_gfui/src_500_tab/gplx/gfui/TabBnd.java +++ b/150_gfui/src/gplx/gfui/controls/tabs/TabBnd.java @@ -15,12 +15,13 @@ 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.gfui; import gplx.*; +package gplx.gfui.controls.tabs; import gplx.*; import gplx.gfui.*; import gplx.gfui.controls.*; import gplx.core.interfaces.*; +import gplx.gfui.ipts.*; import gplx.gfui.controls.standards.*; class TabBoxEvt_nameChange { public static String Key = "TabBoxEvt_nameChange"; public static void Send(TabBoxMgr mgr, TabPnlItm itm) { - GfoEvMgr_.PubVal(mgr, Key, itm); + Gfo_evt_mgr_.Pub_val(mgr, Key, itm); } public static void Rcvd(TabBox tabBox, GfsCtx ctx, GfoMsg m) { TabPnlItm itm = (TabPnlItm)m.CastObj("v"); @@ -38,7 +39,7 @@ class TabBoxEvt_tabSelectByBtn { mgr.Select(mgr.Get_by(key)); } } -class TabBnd_selectTab implements InjectAble, GfoInvkAble { +class TabBnd_selectTab implements InjectAble, Gfo_invk { public void Inject(Object obj) { tabBox = TabBox_.cast(obj); IptBnd_.cmd_to_(IptCfg_.Null, tabBox, this, SelectNext_cmd, IptKey_.add_(IptKey_.Ctrl, IptKey_.Tab), IptKey_.add_(IptKey_.Ctrl, IptKey_.PageDown)); @@ -52,13 +53,13 @@ class TabBnd_selectTab implements InjectAble, GfoInvkAble { public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, SelectNext_cmd)) Select(m, 1); else if (ctx.Match(k, SelectPrev_cmd)) Select(m, -1); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; - } static final String SelectNext_cmd = "SelectNext", SelectPrev_cmd = "SelectPrev"; + } static final String SelectNext_cmd = "SelectNext", SelectPrev_cmd = "SelectPrev"; TabBox tabBox; public static TabBnd_selectTab new_() {return new TabBnd_selectTab();} TabBnd_selectTab() {} } -class TabBnd_reorderTab implements InjectAble, GfoInvkAble { +class TabBnd_reorderTab implements InjectAble, Gfo_invk { public void Inject(Object owner) { GfuiBtn btn = GfuiBtn_.cast(owner); IptBnd_.cmd_to_(IptCfg_.Null, btn, this, MovePrev_cmd, IptKey_.add_(IptKey_.Ctrl, IptKey_.Left)); @@ -78,9 +79,9 @@ class TabBnd_reorderTab implements InjectAble, GfoInvkAble { public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, MoveNext_cmd)) MoveTab(GfuiBtn_.cast(ctx.MsgSrc()), 1); else if (ctx.Match(k, MovePrev_cmd)) MoveTab(GfuiBtn_.cast(ctx.MsgSrc()), -1); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; - } public static final String MoveNext_cmd = "MoveNext", MovePrev_cmd = "MovePrev"; + } public static final String MoveNext_cmd = "MoveNext", MovePrev_cmd = "MovePrev"; public static TabBnd_reorderTab new_(TabBox tabBox) { TabBnd_reorderTab rv = new TabBnd_reorderTab(); rv.tabBox = tabBox; diff --git a/150_gfui/src_500_tab/gplx/gfui/TabBox.java b/150_gfui/src/gplx/gfui/controls/tabs/TabBox.java similarity index 90% rename from 150_gfui/src_500_tab/gplx/gfui/TabBox.java rename to 150_gfui/src/gplx/gfui/controls/tabs/TabBox.java index f013bc001..6bc2a32cf 100644 --- a/150_gfui/src_500_tab/gplx/gfui/TabBox.java +++ b/150_gfui/src/gplx/gfui/controls/tabs/TabBox.java @@ -15,7 +15,8 @@ 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.gfui; import gplx.*; +package gplx.gfui.controls.tabs; import gplx.*; import gplx.gfui.*; import gplx.gfui.controls.*; +import gplx.gfui.draws.*; import gplx.gfui.layouts.*; import gplx.gfui.controls.elems.*; import gplx.gfui.controls.standards.*; public class TabBox extends GfuiElemBase { public int Tabs_Count() {return mgr.Count();} public TabPnlItm Tabs_SelectedItm() {return mgr.CurTab();} @@ -35,7 +36,7 @@ public class TabBox extends GfuiElemBase { mgr.Del_at(idx); } @gplx.Internal protected TabBoxMgr Mgr() {return mgr;} TabBoxMgr mgr = TabBoxMgr.new_(); - @gplx.Internal protected GfuiElem BtnBox() {return btnBox;} GfuiElem btnBox; + public GfuiElem BtnBox() {return btnBox;} GfuiElem btnBox; @gplx.Internal protected GfuiElem PnlBox() {return pnlBox;} GfuiElem pnlBox; @Override public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, TabBoxEvt_tabSelectByBtn.Key)) TabBoxEvt_tabSelectByBtn.Rcvd(ctx.MsgSrc(), this); @@ -49,8 +50,8 @@ public class TabBox extends GfuiElemBase { btnBox = TabBtnAreaMgr.new_("btnBox", this); pnlBox = TabPnlAreaMgr.new_("pnlBox", this); this.Inject_(TabBnd_selectTab.new_()); - GfoEvMgr_.SubSame(mgr, TabBoxEvt_tabSelect.Key, this); - GfoEvMgr_.SubSame(mgr, TabBoxEvt_nameChange.Key, this); + Gfo_evt_mgr_.Sub_same(mgr, TabBoxEvt_tabSelect.Key, this); + Gfo_evt_mgr_.Sub_same(mgr, TabBoxEvt_nameChange.Key, this); this.Lyt_activate(); this.Lyt().Bands_add(GftBand.fillWidth_()); @@ -69,7 +70,7 @@ class TabBtnAreaMgr { GfuiBtn btn = GfuiBtn_.new_(itm.Key()); btn.TipText_(itm.Name()).Text_(itm.Name()).Width_(80); btn.TextMgr().Font_(btn.TextMgr().Font().Size_(8)); - btn.Click_invk(GfoInvkAbleCmd.new_(tabBox, TabBoxEvt_tabSelectByBtn.Key)); + btn.Click_invk(Gfo_invk_cmd.New_by_key(tabBox, TabBoxEvt_tabSelectByBtn.Key)); btn.Inject_(TabBnd_reorderTab.new_(tabBox)); if (btnBox.SubElems().Count() > 0) { // place button after last GfuiElem lastBtn = btnBox.SubElems().Get_at(btnBox.SubElems().Count() - 1); diff --git a/150_gfui/src_500_tab/gplx/gfui/TabBoxEvt_orderChanged.java b/150_gfui/src/gplx/gfui/controls/tabs/TabBoxEvt_orderChanged.java similarity index 81% rename from 150_gfui/src_500_tab/gplx/gfui/TabBoxEvt_orderChanged.java rename to 150_gfui/src/gplx/gfui/controls/tabs/TabBoxEvt_orderChanged.java index c75069d27..592d8c0f1 100644 --- a/150_gfui/src_500_tab/gplx/gfui/TabBoxEvt_orderChanged.java +++ b/150_gfui/src/gplx/gfui/controls/tabs/TabBoxEvt_orderChanged.java @@ -15,14 +15,14 @@ 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.gfui; import gplx.*; +package gplx.gfui.controls.tabs; import gplx.*; import gplx.gfui.*; import gplx.gfui.controls.*; public class TabBoxEvt_orderChanged { public int CurIdx() {return curIdx;} public TabBoxEvt_orderChanged CurIdx_(int v) {curIdx = v; return this;} int curIdx; public int NewIdx() {return newIdx;} public TabBoxEvt_orderChanged NewIdx_(int v) {newIdx = v; return this;} int newIdx; - public static final String OrderChanged_evt = "OrderChanged_evt"; + public static final String OrderChanged_evt = "OrderChanged_evt"; public static void Publish(TabBox tabBox, int curIdx, int newIdx) { - GfoEvMgr_.PubVals(tabBox, OrderChanged_evt, Keyval_.new_("curIdx", curIdx), Keyval_.new_("newIdx", newIdx)); + Gfo_evt_mgr_.Pub_vals(tabBox, OrderChanged_evt, Keyval_.new_("curIdx", curIdx), Keyval_.new_("newIdx", newIdx)); } public static TabBoxEvt_orderChanged Handle(GfsCtx ctx, GfoMsg m) { TabBoxEvt_orderChanged rv = new TabBoxEvt_orderChanged(); diff --git a/150_gfui/src_500_tab/gplx/gfui/TabBoxEvt_tabSelect.java b/150_gfui/src/gplx/gfui/controls/tabs/TabBoxEvt_tabSelect.java similarity index 80% rename from 150_gfui/src_500_tab/gplx/gfui/TabBoxEvt_tabSelect.java rename to 150_gfui/src/gplx/gfui/controls/tabs/TabBoxEvt_tabSelect.java index 23e47f813..5e7156aeb 100644 --- a/150_gfui/src_500_tab/gplx/gfui/TabBoxEvt_tabSelect.java +++ b/150_gfui/src/gplx/gfui/controls/tabs/TabBoxEvt_tabSelect.java @@ -15,12 +15,12 @@ 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.gfui; import gplx.*; +package gplx.gfui.controls.tabs; import gplx.*; import gplx.gfui.*; import gplx.gfui.controls.*; public class TabBoxEvt_tabSelect { public static String Key = "TabBoxEvt_tabSelect"; - public static final String SelectedChanged_evt = "SelectedChanged_evt"; + public static final String SelectedChanged_evt = "SelectedChanged_evt"; public static void Send(TabBoxMgr tabBoxMgr, TabPnlItm oldTab, TabPnlItm newTab) { - GfoEvMgr_.PubVal(tabBoxMgr, Key, new TabPnlItm[] {oldTab, newTab}); + Gfo_evt_mgr_.Pub_val(tabBoxMgr, Key, new TabPnlItm[] {oldTab, newTab}); } @gplx.Internal protected static void Select(TabBox tabBox, GfsCtx ctx, GfoMsg m) { TabPnlItm[] ary = (TabPnlItm[])m.CastObj("v"); @@ -29,7 +29,7 @@ public class TabBoxEvt_tabSelect { @gplx.Internal protected static void Select(TabBox tabBox, TabPnlItm curTabItm, TabPnlItm newTabItm) { TabPnlAreaMgr.Select(tabBox, curTabItm, newTabItm); TabBtnAreaMgr.Select(tabBox, curTabItm, newTabItm); - GfoEvMgr_.PubVal(tabBox, SelectedChanged_evt, newTabItm.Idx()); + Gfo_evt_mgr_.Pub_val(tabBox, SelectedChanged_evt, newTabItm.Idx()); } public static int Handle(GfsCtx ctx, GfoMsg m) { return m.ReadInt("v"); diff --git a/150_gfui/src_500_tab/gplx/gfui/TabBoxMgr.java b/150_gfui/src/gplx/gfui/controls/tabs/TabBoxMgr.java similarity index 83% rename from 150_gfui/src_500_tab/gplx/gfui/TabBoxMgr.java rename to 150_gfui/src/gplx/gfui/controls/tabs/TabBoxMgr.java index e3eb6c931..20b5c2f18 100644 --- a/150_gfui/src_500_tab/gplx/gfui/TabBoxMgr.java +++ b/150_gfui/src/gplx/gfui/controls/tabs/TabBoxMgr.java @@ -15,9 +15,9 @@ 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.gfui; import gplx.*; -public class TabBoxMgr implements GfoEvMgrOwner { - public GfoEvMgr EvMgr() {if (evMgr == null) evMgr = GfoEvMgr.new_(this); return evMgr;} GfoEvMgr evMgr; +package gplx.gfui.controls.tabs; import gplx.*; import gplx.gfui.*; import gplx.gfui.controls.*; +public class TabBoxMgr implements Gfo_evt_mgr_owner { + public Gfo_evt_mgr Evt_mgr() {if (evt_mgr == null) evt_mgr = new Gfo_evt_mgr(this); return evt_mgr;} Gfo_evt_mgr evt_mgr; public int Count() {return itms.Count();} public TabPnlItm Get_by(String k) {return (TabPnlItm)itms.Get_by(k);} public TabPnlItm Get_at(int i) {return (TabPnlItm)itms.Get_at(i);} @@ -33,7 +33,7 @@ public class TabBoxMgr implements GfoEvMgrOwner { itms.Del(itm.Key()); this.Reorder(i); if (isCur) { - curTab = null; // must null out curTab since it has been deleted from itms; TODO: should raise Deleted event to delete btn,pnl,view; wait for rewrite of view + curTab = null; // must null out curTab since it has been deleted from itms; TODO_OLD: should raise Deleted event to delete btn,pnl,view; wait for rewrite of view if (isLast) i--; // last was dropped; select prev; otherwise re-select idx (effectively, whatever tab drops into slot) if (i >=0) this.Select(i); diff --git a/150_gfui/src_500_tab/gplx/gfui/TabBox_.java b/150_gfui/src/gplx/gfui/controls/tabs/TabBox_.java similarity index 89% rename from 150_gfui/src_500_tab/gplx/gfui/TabBox_.java rename to 150_gfui/src/gplx/gfui/controls/tabs/TabBox_.java index c0f7ac1e7..6995315d1 100644 --- a/150_gfui/src_500_tab/gplx/gfui/TabBox_.java +++ b/150_gfui/src/gplx/gfui/controls/tabs/TabBox_.java @@ -15,7 +15,8 @@ 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.gfui; import gplx.*; +package gplx.gfui.controls.tabs; import gplx.*; import gplx.gfui.*; import gplx.gfui.controls.*; +import gplx.gfui.controls.elems.*; public class TabBox_ { public static TabBox as_(Object obj) {return obj instanceof TabBox ? (TabBox)obj : null;} public static TabBox cast(Object obj) {try {return (TabBox)obj;} catch(Exception exc) {throw Err_.new_type_mismatch_w_exc(exc, TabBox.class, obj);}} diff --git a/150_gfui/tst/gplx/gfui/TabBox_tst.java b/150_gfui/src/gplx/gfui/controls/tabs/TabBox_tst.java similarity index 91% rename from 150_gfui/tst/gplx/gfui/TabBox_tst.java rename to 150_gfui/src/gplx/gfui/controls/tabs/TabBox_tst.java index aec34782d..da6d4949c 100644 --- a/150_gfui/tst/gplx/gfui/TabBox_tst.java +++ b/150_gfui/src/gplx/gfui/controls/tabs/TabBox_tst.java @@ -15,8 +15,8 @@ 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.gfui; import gplx.*; -import org.junit.*; +package gplx.gfui.controls.tabs; import gplx.*; import gplx.gfui.*; import gplx.gfui.controls.*; +import org.junit.*; import gplx.gfui.controls.tabs.*; import gplx.gfui.controls.elems.*; import gplx.gfui.controls.standards.*; public class TabBox_tst { // @Before public void setup() { // fx = TabBoxFxt.new_(); @@ -64,7 +64,7 @@ class GfuiElemFxt { return rv; } GfuiElemFxt() {} } -class TabBoxFxt implements GfoInvkAble { +class TabBoxFxt implements Gfo_invk { @gplx.Internal protected TabBox TabBox() {return tabBox;} @gplx.Internal protected TabBoxFxt Make(int count) { for (int i = 0; i < tabBox.Tabs_Count(); i++) @@ -117,9 +117,9 @@ class TabBoxFxt implements GfoInvkAble { // } public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, OrderChangedReceived_cmd)) OrderChangedReceived(m); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; - } public static final String OrderChangedReceived_cmd = "OrderChangedReceived"; + } public static final String OrderChangedReceived_cmd = "OrderChangedReceived"; TabBox tabBox; public static TabBoxFxt new_() { TabBoxFxt rv = new TabBoxFxt(); diff --git a/150_gfui/src_500_tab/gplx/gfui/TabPnlItm.java b/150_gfui/src/gplx/gfui/controls/tabs/TabPnlItm.java similarity index 91% rename from 150_gfui/src_500_tab/gplx/gfui/TabPnlItm.java rename to 150_gfui/src/gplx/gfui/controls/tabs/TabPnlItm.java index a196cb84e..c4c17ba46 100644 --- a/150_gfui/src_500_tab/gplx/gfui/TabPnlItm.java +++ b/150_gfui/src/gplx/gfui/controls/tabs/TabPnlItm.java @@ -15,7 +15,7 @@ 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.gfui; import gplx.*; +package gplx.gfui.controls.tabs; import gplx.*; import gplx.gfui.*; import gplx.gfui.controls.*; public class TabPnlItm { public String Key() {return key;} private String key; public String Name() {return name;} diff --git a/150_gfui/src_400_win/gplx/gfui/GfoConsoleWin.java b/150_gfui/src/gplx/gfui/controls/windows/GfoConsoleWin.java similarity index 88% rename from 150_gfui/src_400_win/gplx/gfui/GfoConsoleWin.java rename to 150_gfui/src/gplx/gfui/controls/windows/GfoConsoleWin.java index 9f9fba73e..a9c845498 100644 --- a/150_gfui/src_400_win/gplx/gfui/GfoConsoleWin.java +++ b/150_gfui/src/gplx/gfui/controls/windows/GfoConsoleWin.java @@ -15,10 +15,11 @@ 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.gfui; import gplx.*; +package gplx.gfui.controls.windows; import gplx.*; import gplx.gfui.*; import gplx.gfui.controls.*; +import gplx.gfui.draws.*; import gplx.gfui.ipts.*; import gplx.gfui.layouts.*; import gplx.gfui.envs.*; import gplx.gfui.controls.elems.*; import gplx.gfui.controls.standards.*; import gplx.gfui.controls.customs.*; import gplx.core.envs.*; import gplx.gfml.*; import gplx.langs.gfs.*; -public class GfoConsoleWin implements GfoInvkAble, UsrMsgWkr { +public class GfoConsoleWin implements Gfo_invk, UsrMsgWkr { GfuiWin win; GfoConsoleWinCmds cmds; GfuiTextBox statusBox, resultBox; GfuiTextBoxLogger logger; public boolean Enabled() {return enabled;} public GfoConsoleWin Enabled_(boolean v) {enabled = v; return this;} private boolean enabled = true; public GfuiWin Win() {return win;} @@ -79,13 +80,13 @@ public class GfoConsoleWin implements GfoInvkAble, UsrMsgWkr { } public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_Show)) Show(); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; - } public static final String Invk_Show = "Show" + } public static final String Invk_Show = "Show" ; - public static final GfoConsoleWin Instance = new GfoConsoleWin(); GfoConsoleWin() {} + public static final GfoConsoleWin Instance = new GfoConsoleWin(); GfoConsoleWin() {} } -class GfoConsoleWinCmds implements GfoInvkAble { +class GfoConsoleWinCmds implements Gfo_invk { GfuiWin win; GfuiTextBox consoleFilBox, consoleBox, statusBox, resultBox; public void Owner_set(GfuiElem elem) {win = (GfuiWin)elem;} public void Init() { @@ -122,7 +123,7 @@ class GfoConsoleWinCmds implements GfoInvkAble { GfsCtx ctx = GfsCtx.new_(); try { Object rv = GfsCore.Instance.ExecOne(ctx, runMsg); - if (rv != GfoInvkAble_.Rv_handled && rv != GfoInvkAble_.Rv_unhandled) { + if (rv != Gfo_invk_.Rv_handled && rv != Gfo_invk_.Rv_unhandled) { UsrDlg_.Instance.Note(Object_.Xto_str_strict_or_empty(rv)); } // Results_add(FixNewLines(ctx.Results_XtoStr())); @@ -198,13 +199,13 @@ class GfoConsoleWinCmds implements GfoInvkAble { } else return win.Invk(ctx, ikey, k, m); return this; - } public static final String Invk_Exec = "Exec", Invk_Hide = "Hide", Invk_Save = "Save", Invk_Load = "Load", Invk_Help = "Help", Invk_Clear = "Clear" + } public static final String Invk_Exec = "Exec", Invk_Hide = "Hide", Invk_Save = "Save", Invk_Load = "Load", Invk_Help = "Help", Invk_Clear = "Clear" , Invk_X_ = "X_", Invk_Y_ = "Y_", Invk_Width_ = "Width_", Invk_Height_ = "Height_", Invk_Enabled_ = "Enabled_", Invk_SaveUrl_ = "SaveUrl_" ; GfoConsoleWin owner; public GfoConsoleWinCmds(GfoConsoleWin owner) {this.owner = owner;} } -class GfuiTextBoxLogger implements GfoInvkAble { +class GfuiTextBoxLogger implements Gfo_invk { public GfuiTextBoxLogger Init(GfuiTextBox tbox) { this.tbox = tbox; win = tbox.OwnerWin(); @@ -228,7 +229,7 @@ class GfuiTextBoxLogger implements GfoInvkAble { void WriteText(String text) { if (!win.Visible()) return; // StatusForm not visible; return; otherwise .CreateControl will be called tbox.CreateControlIfNeeded(); // otherwise will occasionally throw: Cannot call Invoke or InvokeAsync on a control until the window handle has been created - tbox.Invoke(GfoInvkAbleCmd.arg_(this, Invk_WriteText_cmd, text)); + tbox.Invoke(Gfo_invk_cmd.New_by_val(this, Invk_WriteText_cmd, text)); } void Invk_WriteText(String text) { tbox.Text_(text); @@ -243,7 +244,7 @@ class GfuiTextBoxLogger implements GfoInvkAble { public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Tmr_cmd)) WhenTick(); else if (ctx.Match(k, Invk_WriteText_cmd)) Invk_WriteText(m.ReadStr("v")); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } String Invk_WriteText_cmd = "Invk_WriteText", Tmr_cmd = "Tmr"; diff --git a/150_gfui/src_400_win/gplx/gfui/GfuiBnd_win_host.java b/150_gfui/src/gplx/gfui/controls/windows/GfuiBnd_win_host.java similarity index 89% rename from 150_gfui/src_400_win/gplx/gfui/GfuiBnd_win_host.java rename to 150_gfui/src/gplx/gfui/controls/windows/GfuiBnd_win_host.java index 3dfd35339..a758b75d2 100644 --- a/150_gfui/src_400_win/gplx/gfui/GfuiBnd_win_host.java +++ b/150_gfui/src/gplx/gfui/controls/windows/GfuiBnd_win_host.java @@ -15,7 +15,8 @@ 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.gfui; import gplx.*; +package gplx.gfui.controls.windows; import gplx.*; import gplx.gfui.*; import gplx.gfui.controls.*; +import gplx.gfui.ipts.*; import gplx.gfui.controls.elems.*; public class GfuiBnd_win_host { public GfuiWin HosterWin() {return hosterWin;} GfuiWin hosterWin; public GfuiElem HosteeBox() {return hosteeBox;} GfuiElem hosteeBox; diff --git a/150_gfui/src_400_win/gplx/gfui/GfuiCmdForm.java b/150_gfui/src/gplx/gfui/controls/windows/GfuiCmdForm.java similarity index 83% rename from 150_gfui/src_400_win/gplx/gfui/GfuiCmdForm.java rename to 150_gfui/src/gplx/gfui/controls/windows/GfuiCmdForm.java index adcf47593..d189f8118 100644 --- a/150_gfui/src_400_win/gplx/gfui/GfuiCmdForm.java +++ b/150_gfui/src/gplx/gfui/controls/windows/GfuiCmdForm.java @@ -15,9 +15,10 @@ 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.gfui; import gplx.*; +package gplx.gfui.controls.windows; import gplx.*; import gplx.gfui.*; import gplx.gfui.controls.*; import gplx.core.interfaces.*; -public class GfuiCmdForm implements GfoInvkAble, InjectAble { +import gplx.gfui.ipts.*; import gplx.gfui.controls.elems.*; +public class GfuiCmdForm implements Gfo_invk, InjectAble { public void Inject(Object ownerObj) { GfuiElem owner = (GfuiElem)ownerObj; GfuiCmdForm.host_(key, cmdElem, owner); @@ -39,11 +40,11 @@ public class GfuiCmdForm implements GfoInvkAble, InjectAble { } GfuiWin cmdForm; - static final String DoStuff = "doStuff", HideMe_cmd = "HideMe"; + static final String DoStuff = "doStuff", HideMe_cmd = "HideMe"; public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, DoStuff)) ActivateMe((GfuiElem)ctx.MsgSrc()); else if (ctx.Match(k, HideMe_cmd)) ((GfuiWin)ctx.MsgSrc()).Hide(); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } void ActivateMe(GfuiElem elem) { diff --git a/150_gfui/src/gplx/gfui/controls/windows/GfuiFocusMgr.java b/150_gfui/src/gplx/gfui/controls/windows/GfuiFocusMgr.java new file mode 100644 index 000000000..cf5ac102b --- /dev/null +++ b/150_gfui/src/gplx/gfui/controls/windows/GfuiFocusMgr.java @@ -0,0 +1,31 @@ +/* +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.gfui.controls.windows; import gplx.*; import gplx.gfui.*; import gplx.gfui.controls.*; +import gplx.gfui.controls.elems.*; +public class GfuiFocusMgr implements Gfo_evt_mgr_owner { + public static final String FocusChanged_evt = "focusChanged_evt"; + public Gfo_evt_mgr Evt_mgr() {if (evt_mgr == null) evt_mgr = new Gfo_evt_mgr(this); return evt_mgr;} Gfo_evt_mgr evt_mgr; + public GfuiElem FocusedElem() {return focusedElem;} GfuiElem focusedElem; + public GfuiElem FocusedElemPrev() {return focusedElemPrev;} GfuiElem focusedElemPrev; + public void FocusedElem_set(GfuiElem focused) { + focusedElemPrev = focusedElem; + this.focusedElem = focused; + Gfo_evt_mgr_.Pub_val(this, FocusChanged_evt, focused); + } + public static final GfuiFocusMgr Instance = new GfuiFocusMgr(); GfuiFocusMgr() {} +} diff --git a/150_gfui/src_400_win/gplx/gfui/GfuiFocusOrderer.java b/150_gfui/src/gplx/gfui/controls/windows/GfuiFocusOrderer.java similarity index 88% rename from 150_gfui/src_400_win/gplx/gfui/GfuiFocusOrderer.java rename to 150_gfui/src/gplx/gfui/controls/windows/GfuiFocusOrderer.java index 8d6a3d50b..e8cd2fd3f 100644 --- a/150_gfui/src_400_win/gplx/gfui/GfuiFocusOrderer.java +++ b/150_gfui/src/gplx/gfui/controls/windows/GfuiFocusOrderer.java @@ -15,13 +15,14 @@ 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.gfui; import gplx.*; +package gplx.gfui.controls.windows; import gplx.*; import gplx.gfui.*; import gplx.gfui.controls.*; import gplx.core.lists.*; /*ComparerAble*/ -class GfuiFocusOrderer { +import gplx.gfui.controls.elems.*; +public class GfuiFocusOrderer { public static void OrderByX(GfuiElem owner) {Order(owner, xcomparer, 0);} public static void OrderByY(GfuiElem owner) {Order(owner, ycomparer, 0);} static int Order(GfuiElem owner, ComparerAble comparer, int order) { - List_adp list = List_adp_.new_(); + List_adp list = List_adp_.New(); for (int i = 0; i < owner.SubElems().Count(); i++) { GfuiElem sub = (GfuiElem)owner.SubElems().Get_at(i); if (sub.Focus_idx() != NullVal) continue; @@ -38,7 +39,7 @@ class GfuiFocusOrderer { return order; } static GfuiFocusOrderer_cls_x xcomparer = new GfuiFocusOrderer_cls_x(); static GfuiFocusOrderer_cls_y ycomparer = new GfuiFocusOrderer_cls_y(); - public static final int NullVal = -1; + public static final int NullVal = -1; } class GfuiFocusOrderer_cls_x implements ComparerAble { public int compare(Object lhsObj, Object rhsObj) { diff --git a/150_gfui/tst/gplx/gfui/GfuiFocusOrderer_tst.java b/150_gfui/src/gplx/gfui/controls/windows/GfuiFocusOrderer_tst.java similarity index 91% rename from 150_gfui/tst/gplx/gfui/GfuiFocusOrderer_tst.java rename to 150_gfui/src/gplx/gfui/controls/windows/GfuiFocusOrderer_tst.java index 81a40ac4b..de507de7f 100644 --- a/150_gfui/tst/gplx/gfui/GfuiFocusOrderer_tst.java +++ b/150_gfui/src/gplx/gfui/controls/windows/GfuiFocusOrderer_tst.java @@ -15,12 +15,12 @@ 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.gfui; import gplx.*; -import org.junit.*; +package gplx.gfui.controls.windows; import gplx.*; import gplx.gfui.*; import gplx.gfui.controls.*; +import org.junit.*; import gplx.gfui.controls.elems.*; public class GfuiFocusOrderer_tst { @Before public void setup() { owner = GfuiElem_.new_(); - list = List_adp_.new_(); // list of all controls + list = List_adp_.New(); // list of all controls } @Test public void Horizontal() { ini_Subs(owner, list, xy_(40, 0), xy_(20, 0), xy_(0, 0)); diff --git a/150_gfui/src_400_win/gplx/gfui/GfuiFocusXferBnd.java b/150_gfui/src/gplx/gfui/controls/windows/GfuiFocusXferBnd.java similarity index 76% rename from 150_gfui/src_400_win/gplx/gfui/GfuiFocusXferBnd.java rename to 150_gfui/src/gplx/gfui/controls/windows/GfuiFocusXferBnd.java index 0ca636cb8..21a3cd7ff 100644 --- a/150_gfui/src_400_win/gplx/gfui/GfuiFocusXferBnd.java +++ b/150_gfui/src/gplx/gfui/controls/windows/GfuiFocusXferBnd.java @@ -15,16 +15,17 @@ 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.gfui; import gplx.*; +package gplx.gfui.controls.windows; import gplx.*; import gplx.gfui.*; import gplx.gfui.controls.*; import gplx.core.interfaces.*; -class GfuiFocusXferBnd implements InjectAble, GfoInvkAble { +import gplx.gfui.ipts.*; import gplx.gfui.controls.elems.*; import gplx.gfui.controls.tabs.*; +public class GfuiFocusXferBnd implements InjectAble, Gfo_invk { public void Inject(Object owner) { GfuiElem elem = GfuiElem_.cast(owner); IptBnd_.cmd_to_(IptCfg_.Null, elem, this, Invk_FocusNext, IptKey_.Down); IptBnd_.cmd_to_(IptCfg_.Null, elem, this, Invk_FocusPrev, IptKey_.Up); } @gplx.Internal protected void Focus(GfuiElem cur, boolean fwd) { - List_adp allElemsInOwnerWin = List_adp_.new_(); AddSubs(cur.OwnerWin(), allElemsInOwnerWin); + List_adp allElemsInOwnerWin = List_adp_.New(); AddSubs(cur.OwnerWin(), allElemsInOwnerWin); int curIdx = allElemsInOwnerWin.Idx_of(cur); GfuiElem target = cur; while (true) { // find next visible elem @@ -46,8 +47,8 @@ class GfuiFocusXferBnd implements InjectAble, GfoInvkAble { public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_FocusNext)) Focus(GfuiElem_.cast(ctx.MsgSrc()), true); else if (ctx.Match(k, Invk_FocusPrev)) Focus(GfuiElem_.cast(ctx.MsgSrc()), false); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; - } public static final String Invk_FocusNext = "FocusNext", Invk_FocusPrev = "FocusPrev"; - public static final GfuiFocusXferBnd Instance = new GfuiFocusXferBnd(); GfuiFocusXferBnd() {} + } public static final String Invk_FocusNext = "FocusNext", Invk_FocusPrev = "FocusPrev"; + public static final GfuiFocusXferBnd Instance = new GfuiFocusXferBnd(); GfuiFocusXferBnd() {} } \ No newline at end of file diff --git a/150_gfui/src_400_win/gplx/gfui/GfuiForm_menu.java b/150_gfui/src/gplx/gfui/controls/windows/GfuiForm_menu.java similarity index 85% rename from 150_gfui/src_400_win/gplx/gfui/GfuiForm_menu.java rename to 150_gfui/src/gplx/gfui/controls/windows/GfuiForm_menu.java index 612aff5c9..b95a47925 100644 --- a/150_gfui/src_400_win/gplx/gfui/GfuiForm_menu.java +++ b/150_gfui/src/gplx/gfui/controls/windows/GfuiForm_menu.java @@ -15,8 +15,9 @@ 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.gfui; import gplx.*; -public class GfuiForm_menu implements GfoInvkAble { +package gplx.gfui.controls.windows; import gplx.*; import gplx.gfui.*; import gplx.gfui.controls.*; +import gplx.gfui.ipts.*; import gplx.gfui.controls.elems.*; +public class GfuiForm_menu implements Gfo_invk { public GfuiWin Form() {return form;} GfuiWin form; void Visible_toggle(GfoMsg msg) { GfuiElem ownerForm = owner.OwnerWin(); @@ -51,15 +52,15 @@ public class GfuiForm_menu implements GfoInvkAble { form.TaskbarParkingWindowFix(owner.OwnerWin()); // else ContextMenu shows up as WindowsFormsParkingWindow form.QuitMode_(GfuiQuitMode.Suspend); } - public static final String Msg_menu_Visible_toggle = "menu.visible_toggle"; + public static final String Msg_menu_Visible_toggle = "menu.visible_toggle"; public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Visible_hide_cmd)) Visible_hide(m); else if (ctx.Match(k, Visible_toggle_cmd)) Visible_toggle(m); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; - } public static final String Visible_hide_cmd = "Visible_hide", Visible_toggle_cmd = "Visible_toggle"; + } public static final String Visible_hide_cmd = "Visible_hide", Visible_toggle_cmd = "Visible_toggle"; public static GfuiWin new_(GfuiElem owner, GfuiElem sub, SizeAdp size) { GfuiForm_menu rv = new GfuiForm_menu(); rv.ctor_GfuiForm_menu(owner, sub, size); diff --git a/150_gfui/src_400_win/gplx/gfui/GfuiMenuBar.java b/150_gfui/src/gplx/gfui/controls/windows/GfuiMenuBar.java similarity index 87% rename from 150_gfui/src_400_win/gplx/gfui/GfuiMenuBar.java rename to 150_gfui/src/gplx/gfui/controls/windows/GfuiMenuBar.java index a6377892b..767ada577 100644 --- a/150_gfui/src_400_win/gplx/gfui/GfuiMenuBar.java +++ b/150_gfui/src/gplx/gfui/controls/windows/GfuiMenuBar.java @@ -15,7 +15,7 @@ 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.gfui; import gplx.*; +package gplx.gfui.controls.windows; import gplx.*; import gplx.gfui.*; import gplx.gfui.controls.*; import java.awt.Color; import java.awt.Font; import java.awt.event.ActionEvent; @@ -29,8 +29,9 @@ import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.JSeparator; import javax.swing.border.EmptyBorder; +import gplx.gfui.draws.*; import gplx.gfui.ipts.*; import gplx.gfui.layouts.*; import gplx.gfui.kits.core.*; import gplx.gfui.controls.gxws.*; import gplx.langs.gfs.*; -public class GfuiMenuBar implements GfoInvkAble { +public class GfuiMenuBar implements Gfo_invk { public Object Under() {return winMenu;} public boolean Visible() {return visible;} private boolean visible; public void Visible_set(boolean v) { @@ -97,9 +98,9 @@ public class GfuiMenuBar implements GfoInvkAble { itm.Key_(curOwnerItm.Key() + "." + text); itm.ExecProps(); } - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; - } public static final String Invk_visible_toggle = "MenuBar_toggle" + } public static final String Invk_visible_toggle = "MenuBar_toggle" , Invk_Visible_ = "Visible_", Invk_SeparatorText_ = "SeparatorText_", Invk_MnemonicPrefix_ = "MnemonicPrefix_" , Invk_RegTop = "RegTop", Invk_RegCmd = "RegCmd", Invk_RegSpr = "RegSpr" ; @@ -134,8 +135,8 @@ public class GfuiMenuBar implements GfoInvkAble { IptBnd_.cmd_to_(GfuiEnv_.IptBndMgr_win, win, this, Invk_visible_toggle, IptKey_.add_(IptKey_.Ctrl, IptKey_.Shift, IptKey_.F12)); win.SubItms_add(SubItms_key, this); } - Hash_adp itms = Hash_adp_.new_(); GfuiWin win; - public static final String SubItms_key = "menuBar"; + Hash_adp itms = Hash_adp_.New(); GfuiWin win; + public static final String SubItms_key = "menuBar"; public static GfuiMenuBar new_(GfuiWin win) { GfuiMenuBar rv = new GfuiMenuBar(); rv.Init(win); @@ -246,28 +247,10 @@ class GfuiMenuBarItmType { try {return (GfuiMenuBarItmType)regy.Get_by(raw);} catch (Exception e) {Err_.Noop(e); throw Err_.new_parse("GfuiMenuBarItmType", raw);} } - static Hash_adp regy = Hash_adp_.new_(); - public static final GfuiMenuBarItmType Root = new GfuiMenuBarItmType(1, "root"); - public static final GfuiMenuBarItmType Top = new GfuiMenuBarItmType(2, "top"); - public static final GfuiMenuBarItmType Mnu = new GfuiMenuBarItmType(3, "mnu"); - public static final GfuiMenuBarItmType Cmd = new GfuiMenuBarItmType(4, "cmd"); - public static final GfuiMenuBarItmType Spr = new GfuiMenuBarItmType(5, "spr"); -} -class GxwBorderFactory { - public static final javax.swing.border.Border Empty = new EmptyBorder(0, 0, 1, 0); -} -class GfuiMenuBarItmCmd implements ActionListener { - public void actionPerformed(ActionEvent ev) { - try { - GfsCore.Instance.ExecOne(GfsCtx.Instance, GfuiMenuBarItm.CmdMsg(itm)); - } - catch (Exception e) { - GfuiEnv_.ShowMsg(Err_.Message_gplx_full(e)); - } - } - public static GfuiMenuBarItmCmd new_(GfuiMenuBarItm itm) { - GfuiMenuBarItmCmd cmd = new GfuiMenuBarItmCmd(); - cmd.itm = itm; - return cmd; - } GfuiMenuBarItm itm; + static Hash_adp regy = Hash_adp_.New(); + public static final GfuiMenuBarItmType Root = new GfuiMenuBarItmType(1, "root"); + public static final GfuiMenuBarItmType Top = new GfuiMenuBarItmType(2, "top"); + public static final GfuiMenuBarItmType Mnu = new GfuiMenuBarItmType(3, "mnu"); + public static final GfuiMenuBarItmType Cmd = new GfuiMenuBarItmType(4, "cmd"); + public static final GfuiMenuBarItmType Spr = new GfuiMenuBarItmType(5, "spr"); } diff --git a/150_gfui/src_400_win/gplx/gfui/GfuiMenuFormUtl.java b/150_gfui/src/gplx/gfui/controls/windows/GfuiMenuFormUtl.java similarity index 91% rename from 150_gfui/src_400_win/gplx/gfui/GfuiMenuFormUtl.java rename to 150_gfui/src/gplx/gfui/controls/windows/GfuiMenuFormUtl.java index 4554d072c..00a673b8b 100644 --- a/150_gfui/src_400_win/gplx/gfui/GfuiMenuFormUtl.java +++ b/150_gfui/src/gplx/gfui/controls/windows/GfuiMenuFormUtl.java @@ -15,7 +15,8 @@ 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.gfui; import gplx.*; +package gplx.gfui.controls.windows; import gplx.*; import gplx.gfui.*; import gplx.gfui.controls.*; +import gplx.gfui.envs.*; public class GfuiMenuFormUtl { public static PointAdp CalcShowPos(RectAdp ownerRect, SizeAdp elemSize) { //#if plat_wce diff --git a/150_gfui/src_400_win/gplx/gfui/GfuiQuitMode.java b/150_gfui/src/gplx/gfui/controls/windows/GfuiQuitMode.java similarity index 56% rename from 150_gfui/src_400_win/gplx/gfui/GfuiQuitMode.java rename to 150_gfui/src/gplx/gfui/controls/windows/GfuiQuitMode.java index 845fdb478..aaf06eae2 100644 --- a/150_gfui/src_400_win/gplx/gfui/GfuiQuitMode.java +++ b/150_gfui/src/gplx/gfui/controls/windows/GfuiQuitMode.java @@ -15,22 +15,23 @@ 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.gfui; import gplx.*; +package gplx.gfui.controls.windows; import gplx.*; import gplx.gfui.*; import gplx.gfui.controls.*; +import gplx.gfui.kits.core.*; public class GfuiQuitMode { public int Val() {return val;} int val; GfuiQuitMode(int val) {this.val = val;} - public static final GfuiQuitMode ExitApp = new GfuiQuitMode(1); - public static final GfuiQuitMode Destroy = new GfuiQuitMode(2); - public static final GfuiQuitMode Suspend = new GfuiQuitMode(3); - public static final String + public static final GfuiQuitMode ExitApp = new GfuiQuitMode(1); + public static final GfuiQuitMode Destroy = new GfuiQuitMode(2); + public static final GfuiQuitMode Suspend = new GfuiQuitMode(3); + public static final String Destroy_cmd = "destroy" , Suspend_cmd = "suspend" - , SuspendApp_cmd = "suspendApp" // TODO: merge with suspend; needs Msg Addressing (*.suspend vs app.suspend) + , SuspendApp_cmd = "suspendApp" // TODO_OLD: merge with suspend; needs Msg Addressing (*.suspend vs app.suspend) ; - public static void Exec(GfoInvkAble invk, GfuiQuitMode stopMode) { + public static void Exec(Gfo_invk invk, GfuiQuitMode stopMode) { int val = stopMode.Val(); - if (val == GfuiQuitMode.Destroy.Val()) GfoInvkAble_.InvkCmd(invk, GfuiQuitMode.Destroy_cmd); - else if (val == GfuiQuitMode.Suspend.Val()) GfoInvkAble_.InvkCmd(invk, GfuiQuitMode.Suspend_cmd); + if (val == GfuiQuitMode.Destroy.Val()) Gfo_invk_.Invk_by_key(invk, GfuiQuitMode.Destroy_cmd); + else if (val == GfuiQuitMode.Suspend.Val()) Gfo_invk_.Invk_by_key(invk, GfuiQuitMode.Suspend_cmd); else if (val == GfuiQuitMode.ExitApp.Val()) GfuiEnv_.Exit(); } } diff --git a/150_gfui/src_400_win/gplx/gfui/GfuiTipTextMgr.java b/150_gfui/src/gplx/gfui/controls/windows/GfuiTipTextMgr.java similarity index 80% rename from 150_gfui/src_400_win/gplx/gfui/GfuiTipTextMgr.java rename to 150_gfui/src/gplx/gfui/controls/windows/GfuiTipTextMgr.java index 11e98f58d..e018ade73 100644 --- a/150_gfui/src_400_win/gplx/gfui/GfuiTipTextMgr.java +++ b/150_gfui/src/gplx/gfui/controls/windows/GfuiTipTextMgr.java @@ -15,19 +15,20 @@ 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.gfui; import gplx.*; +package gplx.gfui.controls.windows; import gplx.*; import gplx.gfui.*; import gplx.gfui.controls.*; import javax.swing.JComponent; import javax.swing.ToolTipManager; +import gplx.gfui.controls.elems.*; class GfuiTipTextMgr implements GfuiWinOpenAble { public void Open_exec(GfuiWin form, GfuiElemBase owner, GfuiElemBase sub) { - if (!(sub.underElem instanceof JComponent)) return; + if (!(sub.UnderElem() instanceof JComponent)) return; if (String_.Eq(sub.TipText(), "")) return; // don't register components without tooltips; will leave blue dots (blue tool tip windows with 1x1 size) - JComponent jcomp = (JComponent)sub.underElem; + JComponent jcomp = (JComponent)sub.UnderElem(); ToolTipManager.sharedInstance().registerComponent(jcomp); ToolTipManager.sharedInstance().setInitialDelay(0); ToolTipManager.sharedInstance().setDismissDelay(1000); ToolTipManager.sharedInstance().setReshowDelay(0); jcomp.setToolTipText(sub.TipText()); } - public static final GfuiTipTextMgr Instance = new GfuiTipTextMgr(); + public static final GfuiTipTextMgr Instance = new GfuiTipTextMgr(); } diff --git a/150_gfui/src_400_win/gplx/gfui/GfuiWin.java b/150_gfui/src/gplx/gfui/controls/windows/GfuiWin.java similarity index 82% rename from 150_gfui/src_400_win/gplx/gfui/GfuiWin.java rename to 150_gfui/src/gplx/gfui/controls/windows/GfuiWin.java index 7ec79dcd4..689c35cb2 100644 --- a/150_gfui/src_400_win/gplx/gfui/GfuiWin.java +++ b/150_gfui/src/gplx/gfui/controls/windows/GfuiWin.java @@ -15,11 +15,12 @@ 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.gfui; import gplx.*; +package gplx.gfui.controls.windows; import gplx.*; import gplx.gfui.*; import gplx.gfui.controls.*; import java.awt.Window; -import gplx.core.envs.*; +import gplx.gfui.ipts.*; import gplx.gfui.layouts.*; import gplx.gfui.kits.core.*; import gplx.gfui.controls.gxws.*; import gplx.gfui.controls.elems.*; import gplx.gfui.controls.customs.*; +import gplx.core.envs.*; import gplx.gfui.imgs.*; public class GfuiWin extends GfuiElemBase { - private GxwWin win; private List_adp loadList = List_adp_.new_(); + private GxwWin win; private List_adp loadList = List_adp_.New(); public void Show() {win.ShowWin();} public void Hide() {win.HideWin();} public void Close() {win.CloseWin();} @@ -31,9 +32,9 @@ public class GfuiWin extends GfuiElemBase { public boolean Minimized() {return win.Minimized();} public void Minimized_(boolean v) {win.Minimized_(v);} public GfuiQuitMode QuitMode() {return quitMode;} public GfuiWin QuitMode_(GfuiQuitMode val) {quitMode = val; return this;} private GfuiQuitMode quitMode = GfuiQuitMode.ExitApp; // easier to debug @Override public boolean Opened_done() {return opened;} private boolean opened; - @Override public GfuiWin OwnerWin() {return this;} // TODO: null + @Override public GfuiWin OwnerWin() {return this;} // TODO_OLD: null @gplx.Internal protected GfuiWinKeyCmdMgr KeyCmdMgr() {return keyCmdMgr;} private GfuiWinKeyCmdMgr keyCmdMgr = GfuiWinKeyCmdMgr.new_(); - @gplx.Internal protected GfuiWinFocusMgr FocusMgr() {return focusMgr;} private GfuiWinFocusMgr focusMgr; + public GfuiWinFocusMgr FocusMgr() {return focusMgr;} private GfuiWinFocusMgr focusMgr; @gplx.New public GfuiWin Size_(SizeAdp size) { super.Size_(size); if (!opened && (size.Width() < 112 || size.Height() < 27)) // WORKAROUND/WINFORMS: Form.Size must be > 112,27 if Form is not Visible @@ -43,8 +44,8 @@ public class GfuiWin extends GfuiElemBase { @Override public void ctor_kit_GfuiElemBase(Gfui_kit kit, String key, GxwElem underElem, Keyval_hash ctorArgs) { super.ctor_kit_GfuiElemBase(kit, key, underElem, ctorArgs); win = (GxwWin)underElem; - win.OpenedCmd_set(GfoInvkAbleCmd.new_(this, Evt_Opened)); - GfoEvMgr_.Sub(this, GfuiElemKeys.IptRcvd_evt, keyCmdMgr, GfuiWinKeyCmdMgr.CheckForHotKey_cmd); + win.OpenedCmd_set(Gfo_invk_cmd.New_by_key(this, Evt_Opened)); + Gfo_evt_mgr_.Sub(this, GfuiElemKeys.IptRcvd_evt, keyCmdMgr, GfuiWinKeyCmdMgr.CheckForHotKey_cmd); IptBnd_.cmd_(IptCfg_.Null, this, StopAppByAltF4_evt, IptKey_.Alt.Add(IptKey_.F4)); // IptBnd_.cmd_to_(IptCfg_.Null, this, GfoConsoleWin.Instance, GfoConsoleWin.Invk_Show, IptKey_.Ctrl.Add(IptKey_.Alt).Add(IptKey_.E)); IptBnd_.cmd_(IptCfg_.Null, this, Invk_ShowFocusOwner, IptKey_.add_(IptKey_.Ctrl, IptKey_.Alt, IptKey_.F12)); @@ -54,8 +55,8 @@ public class GfuiWin extends GfuiElemBase { @Override public void ctor_GfuiBox_base(Keyval_hash ctorArgs) { super.ctor_GfuiBox_base(ctorArgs); win = (GxwWin)this.UnderElem(); - win.OpenedCmd_set(GfoInvkAbleCmd.new_(this, Evt_Opened)); - GfoEvMgr_.Sub(this, GfuiElemKeys.IptRcvd_evt, keyCmdMgr, GfuiWinKeyCmdMgr.CheckForHotKey_cmd); + win.OpenedCmd_set(Gfo_invk_cmd.New_by_key(this, Evt_Opened)); + Gfo_evt_mgr_.Sub(this, GfuiElemKeys.IptRcvd_evt, keyCmdMgr, GfuiWinKeyCmdMgr.CheckForHotKey_cmd); IptBnd_.cmd_(IptCfg_.Null, this, StopAppByAltF4_evt, IptKey_.Alt.Add(IptKey_.F4)); IptBnd_.cmd_to_(IptCfg_.Null, this, GfoConsoleWin.Instance, GfoConsoleWin.Invk_Show, IptKey_.Ctrl.Add(IptKey_.Alt).Add(IptKey_.E)); IptBnd_.cmd_(IptCfg_.Null, this, Invk_ShowFocusOwner, IptKey_.add_(IptKey_.Ctrl, IptKey_.Alt, IptKey_.F12)); @@ -79,11 +80,11 @@ public class GfuiWin extends GfuiElemBase { ((Window)win).setFocusTraversalPolicy(new FocusTraversalPolicy_cls_base(focusMgr)); this.Focus(); super.Opened_cbk(); - GfoEvMgr_.Pub(this, Evt_Opened); + Gfo_evt_mgr_.Pub(this, Evt_Opened); } @Override public boolean VisibleChangedCbk() { boolean rv = super.VisibleChangedCbk(); - GfoEvMgr_.PubVal(this, Evt_VisibleChanged, this.Visible()); + Gfo_evt_mgr_.Pub_val(this, Evt_VisibleChanged, this.Visible()); return rv; } @Override public boolean DisposeCbk() { @@ -101,7 +102,7 @@ public class GfuiWin extends GfuiElemBase { // GfoFwd_.Send_event(this, GfuiWin.Invk_Quit); // NOTE: no longer relying on Invk_Quit; // NOTE: must call send in order to execute other commands added to Cmds() (ex: DVD AppForm) } @Override public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { - if (ctx.Match(k, Invk_Quit)) {Quit(); GfoEvMgr_.Pub(this, Evt_Quited);} + if (ctx.Match(k, Invk_Quit)) {Quit(); Gfo_evt_mgr_.Pub(this, Evt_Quited);} else if (ctx.Match(k, Invk_Zorder_front)) Zorder_front(); else if (ctx.Match(k, Invk_Minimize)) {win.Minimized_(true); return this;} else if (ctx.Match(k, Invk_Pin_toggle)) Pin_toggle(); @@ -114,10 +115,10 @@ public class GfuiWin extends GfuiElemBase { else if (ctx.MatchIn(k, Invk_Hide, GfuiQuitMode.Suspend_cmd)) Hide(); else { Object rv = this.InvkMgr().Invk(ctx, ikey, k, m, this); - return (rv == GfoInvkCmdMgr.Unhandled) ? super.Invk(ctx, ikey, k, m) : rv; + return (rv == Gfo_invk_cmd_mgr.Unhandled) ? super.Invk(ctx, ikey, k, m) : rv; } return this; - } public static final String Invk_Show = "Show", Invk_Hide = "Hide", Invk_Close = "Close", Invk_Quit = "Quit", Invk_Minimize = "Minimize" + } public static final String Invk_Show = "Show", Invk_Hide = "Hide", Invk_Close = "Close", Invk_Quit = "Quit", Invk_Minimize = "Minimize" , Invk_Pin_toggle = "Pin_toggle", Invk_Zorder_front = "Zorder_front", Invk_ShowFocusOwner = "ShowFocusOwner" , Evt_VisibleChanged = "VisibleChanged", Evt_Opened = "Opened_evt", Evt_Quited = "Quited_evt" , StopAppByAltF4_evt = "StopAppByAltF4_evt"; diff --git a/150_gfui/src_400_win/gplx/gfui/GfuiWinFocusMgr.java b/150_gfui/src/gplx/gfui/controls/windows/GfuiWinFocusMgr.java similarity index 94% rename from 150_gfui/src_400_win/gplx/gfui/GfuiWinFocusMgr.java rename to 150_gfui/src/gplx/gfui/controls/windows/GfuiWinFocusMgr.java index 86c5e5449..8bee05d61 100644 --- a/150_gfui/src_400_win/gplx/gfui/GfuiWinFocusMgr.java +++ b/150_gfui/src/gplx/gfui/controls/windows/GfuiWinFocusMgr.java @@ -15,12 +15,13 @@ 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.gfui; import gplx.*; +package gplx.gfui.controls.windows; import gplx.*; import gplx.gfui.*; import gplx.gfui.controls.*; import java.awt.Component; import java.awt.Container; import java.awt.FocusTraversalPolicy; +import gplx.gfui.controls.gxws.*; import gplx.gfui.controls.elems.*; public class GfuiWinFocusMgr { - public List_adp SubElems() {return subElems;} List_adp subElems = List_adp_.new_(); + public List_adp SubElems() {return subElems;} List_adp subElems = List_adp_.New(); public void InitForm() {this.Init(win);} public void Init(GfuiWin win) { subElems.Clear(); diff --git a/150_gfui/src_400_win/gplx/gfui/GfuiWinKeyCmdMgr.java b/150_gfui/src/gplx/gfui/controls/windows/GfuiWinKeyCmdMgr.java similarity index 84% rename from 150_gfui/src_400_win/gplx/gfui/GfuiWinKeyCmdMgr.java rename to 150_gfui/src/gplx/gfui/controls/windows/GfuiWinKeyCmdMgr.java index 297d0698d..b87793607 100644 --- a/150_gfui/src_400_win/gplx/gfui/GfuiWinKeyCmdMgr.java +++ b/150_gfui/src/gplx/gfui/controls/windows/GfuiWinKeyCmdMgr.java @@ -15,11 +15,12 @@ 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.gfui; import gplx.*; +package gplx.gfui.controls.windows; import gplx.*; import gplx.gfui.*; import gplx.gfui.controls.*; +import gplx.gfui.ipts.*; import gplx.gfui.controls.elems.*; import gplx.gfui.controls.standards.*; import gplx.core.lists.*; import gplx.core.bits.*; -class GfuiWinKeyCmdMgr implements GfuiWinOpenAble, GfoInvkAble, GfoEvObj { +public class GfuiWinKeyCmdMgr implements GfuiWinOpenAble, Gfo_invk, Gfo_evt_itm { private Hash_adp_list listHash = Hash_adp_list.new_(); - public GfoEvMgr EvMgr() {if (evMgr == null) evMgr = GfoEvMgr.new_(this); return evMgr;} private GfoEvMgr evMgr; + public Gfo_evt_mgr Evt_mgr() {if (evt_mgr == null) evt_mgr = new Gfo_evt_mgr(this); return evt_mgr;} private Gfo_evt_mgr evt_mgr; public void Open_exec(GfuiWin form, GfuiElemBase owner, GfuiElemBase sub) { int keyVal = sub.Click_key().Val(); if (sub.Click_key().Eq(IptKey_.None)) return; listHash.AddInList(keyVal, sub); @@ -45,7 +46,7 @@ class GfuiWinKeyCmdMgr implements GfuiWinOpenAble, GfoInvkAble, GfoEvObj { CheckForHotKey(IptEventData.ctx_(ctx, m)); //boolean handled = CheckForHotKey(IptEventData.cast(msg.Val())); msg.Fwd_set(!handled); // TOMBSTONE: somehow cause alt-F4 to continue processing and dispose form return this; - } @gplx.Internal protected static final String CheckForHotKey_cmd = "CheckForHotKey_cmd"; + } @gplx.Internal protected static final String CheckForHotKey_cmd = "CheckForHotKey_cmd"; public static GfuiWinKeyCmdMgr new_() {return new GfuiWinKeyCmdMgr();} GfuiWinKeyCmdMgr() {} public static int ExtractPosFromText(String raw) { diff --git a/150_gfui/src_400_win/gplx/gfui/GfuiWin_.java b/150_gfui/src/gplx/gfui/controls/windows/GfuiWin_.java similarity index 91% rename from 150_gfui/src_400_win/gplx/gfui/GfuiWin_.java rename to 150_gfui/src/gplx/gfui/controls/windows/GfuiWin_.java index 168578274..d57c741be 100644 --- a/150_gfui/src_400_win/gplx/gfui/GfuiWin_.java +++ b/150_gfui/src/gplx/gfui/controls/windows/GfuiWin_.java @@ -15,9 +15,10 @@ 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.gfui; import gplx.*; +package gplx.gfui.controls.windows; import gplx.*; import gplx.gfui.*; import gplx.gfui.controls.*; +import gplx.gfui.kits.core.*; import gplx.gfui.controls.gxws.*; import gplx.gfui.controls.elems.*; public class GfuiWin_ { - public static final String + public static final String InitKey_winType = "winType" , InitKey_winType_toaster = "toaster" , InitKey_winType_app = "app" diff --git a/150_gfui/src_400_win/gplx/gfui/GfuiWin_toaster.java b/150_gfui/src/gplx/gfui/controls/windows/GfuiWin_toaster.java similarity index 91% rename from 150_gfui/src_400_win/gplx/gfui/GfuiWin_toaster.java rename to 150_gfui/src/gplx/gfui/controls/windows/GfuiWin_toaster.java index 9d7b6519e..8b7f2e7f1 100644 --- a/150_gfui/src_400_win/gplx/gfui/GfuiWin_toaster.java +++ b/150_gfui/src/gplx/gfui/controls/windows/GfuiWin_toaster.java @@ -15,8 +15,9 @@ 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.gfui; import gplx.*; +package gplx.gfui.controls.windows; import gplx.*; import gplx.gfui.*; import gplx.gfui.controls.*; import gplx.core.envs.*; +import gplx.gfui.draws.*; import gplx.gfui.envs.*; import gplx.gfui.controls.gxws.*; import gplx.gfui.controls.elems.*; import gplx.gfui.controls.standards.*; import gplx.gfui.controls.windows.*; public class GfuiWin_toaster extends GfuiWin { public void ShowPopup(GfuiWin owner, String text, int interval) { this.TaskbarParkingWindowFix(owner); ShowPopup(text, interval); @@ -119,7 +120,7 @@ public class GfuiWin_toaster extends GfuiWin { public void ShowPopup(GfuiWin own } } } - static final int PopupAnchorTop = -1; // HACK: wxp1 showed obvious flickering with top edge + static final int PopupAnchorTop = -1; // HACK: wxp1 showed obvious flickering with top edge void ChangeBounds(boolean isGrowing, int increment) { increment = isGrowing ? increment : -increment; this.Pos_(this.X(), PopupAnchorTop); //this.Top - increment @@ -150,7 +151,7 @@ public class GfuiWin_toaster extends GfuiWin { public void ShowPopup(GfuiWin own if (ctx.Match(k, Tmr_cmd)) WhenTick(); else super.Invk(ctx, ikey, k, m); return this; - } public static final String Tmr_cmd = "Tmr"; + } public static final String Tmr_cmd = "Tmr"; GfuiTextMemo messageLabel; TimerAdp timer; SizeAdp fullyGrown = SizeAdp_.Zero; @@ -172,7 +173,7 @@ public class GfuiWin_toaster extends GfuiWin { public void ShowPopup(GfuiWin own class PopupState { public int Val() {return val;} int val; public PopupState(int v) {this.val = v;} - public static final PopupState + public static final PopupState FullyShrunk = new PopupState(1) , Growing = new PopupState(2) , FullyGrown = new PopupState(3) diff --git a/150_gfui/src/gplx/gfui/controls/windows/GxwBorderFactory.java b/150_gfui/src/gplx/gfui/controls/windows/GxwBorderFactory.java new file mode 100644 index 000000000..2a2b2ea4c --- /dev/null +++ b/150_gfui/src/gplx/gfui/controls/windows/GxwBorderFactory.java @@ -0,0 +1,42 @@ +/* +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.gfui.controls.windows; import gplx.*; import gplx.gfui.*; import gplx.gfui.controls.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import javax.swing.border.EmptyBorder; +import gplx.*; import gplx.gfui.*; +import gplx.gfui.kits.core.GfuiEnv_; +import gplx.langs.gfs.GfsCore; +public class GxwBorderFactory { + public static final javax.swing.border.Border Empty = new EmptyBorder(0, 0, 1, 0); +} +class GfuiMenuBarItmCmd implements ActionListener { + public void actionPerformed(ActionEvent ev) { + try { + GfsCore.Instance.ExecOne(GfsCtx.Instance, GfuiMenuBarItm.CmdMsg(itm)); + } + catch (Exception e) { + GfuiEnv_.ShowMsg(Err_.Message_gplx_full(e)); + } + } + public static GfuiMenuBarItmCmd new_(GfuiMenuBarItm itm) { + GfuiMenuBarItmCmd cmd = new GfuiMenuBarItmCmd(); + cmd.itm = itm; + return cmd; + } GfuiMenuBarItm itm; +} diff --git a/150_gfui/src_400_win/gplx/gfui/GxwWinNpi.java b/150_gfui/src/gplx/gfui/controls/windows/GxwWinNpi.java similarity index 87% rename from 150_gfui/src_400_win/gplx/gfui/GxwWinNpi.java rename to 150_gfui/src/gplx/gfui/controls/windows/GxwWinNpi.java index 638aeb1bb..1e15d29ce 100644 --- a/150_gfui/src_400_win/gplx/gfui/GxwWinNpi.java +++ b/150_gfui/src/gplx/gfui/controls/windows/GxwWinNpi.java @@ -15,6 +15,6 @@ 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.gfui; import gplx.*; +package gplx.gfui.controls.windows; import gplx.*; import gplx.gfui.*; import gplx.gfui.controls.*; class GxwWinNpi { } diff --git a/150_gfui/src_110_draw_core/gplx/gfui/ColorAdp.java b/150_gfui/src/gplx/gfui/draws/ColorAdp.java similarity index 76% rename from 150_gfui/src_110_draw_core/gplx/gfui/ColorAdp.java rename to 150_gfui/src/gplx/gfui/draws/ColorAdp.java index c9a2ec790..bb1c2a3b5 100644 --- a/150_gfui/src_110_draw_core/gplx/gfui/ColorAdp.java +++ b/150_gfui/src/gplx/gfui/draws/ColorAdp.java @@ -15,7 +15,7 @@ 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.gfui; import gplx.*; +package gplx.gfui.draws; import gplx.*; import gplx.gfui.*; import gplx.core.strings.*; import gplx.core.encoders.*; public class ColorAdp { public int Value() {return val;} int val; @@ -38,19 +38,9 @@ public class ColorAdp { } @Override public String toString() {return XtoHexStr();} public Object CloneNew() {return this;} // NOTE: 'return this' works b/c ColorAdp is read-only class; needed for comparisons; ex: ColorAdp_.Null == ColorAdp_.Null.CloneNew(); alternative would fail: return ColorAdp.new_(this.Alpha(), this.Red(), this.Green(), this.Blue());} - @gplx.Internal protected static ColorAdp new_(int alpha, int red, int green, int blue) { + public static ColorAdp new_(int alpha, int red, int green, int blue) { ColorAdp rv = new ColorAdp(); rv.val = (int)((alpha << 24) | (red << 16) | (green << 8) | (blue)); return rv; } ColorAdp() {} } -class ColorAdpCache { - public java.awt.Color GetNativeColor(ColorAdp color) { - Object rv = hash.Get_by(color.Value()); if (rv != null) return (java.awt.Color)rv; - rv = new java.awt.Color(color.Red(), color.Green(), color.Blue(), color.Alpha()); - hash.Add(color.Value(), rv); - return (java.awt.Color)rv; - } - Hash_adp hash = Hash_adp_.new_(); - public static final ColorAdpCache Instance = new ColorAdpCache(); ColorAdpCache() {} -} diff --git a/150_gfui/src/gplx/gfui/draws/ColorAdpCache.java b/150_gfui/src/gplx/gfui/draws/ColorAdpCache.java new file mode 100644 index 000000000..bc50b103f --- /dev/null +++ b/150_gfui/src/gplx/gfui/draws/ColorAdpCache.java @@ -0,0 +1,28 @@ +/* +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.gfui.draws; import gplx.*; import gplx.gfui.*; +public class ColorAdpCache { + public java.awt.Color GetNativeColor(ColorAdp color) { + Object rv = hash.Get_by(color.Value()); if (rv != null) return (java.awt.Color)rv; + rv = new java.awt.Color(color.Red(), color.Green(), color.Blue(), color.Alpha()); + hash.Add(color.Value(), rv); + return (java.awt.Color)rv; + } + Hash_adp hash = Hash_adp_.New(); + public static final ColorAdpCache Instance = new ColorAdpCache(); ColorAdpCache() {} +} diff --git a/150_gfui/src_110_draw_core/gplx/gfui/ColorAdp_.java b/150_gfui/src/gplx/gfui/draws/ColorAdp_.java similarity index 96% rename from 150_gfui/src_110_draw_core/gplx/gfui/ColorAdp_.java rename to 150_gfui/src/gplx/gfui/draws/ColorAdp_.java index 5d864927b..3a57b3ce1 100644 --- a/150_gfui/src_110_draw_core/gplx/gfui/ColorAdp_.java +++ b/150_gfui/src/gplx/gfui/draws/ColorAdp_.java @@ -15,7 +15,7 @@ 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.gfui; import gplx.*; +package gplx.gfui.draws; import gplx.*; import gplx.gfui.*; import gplx.core.encoders.*; import gplx.core.interfaces.*; public class ColorAdp_ implements ParseAble { public static ColorAdp as_(Object obj) {return obj instanceof ColorAdp ? (ColorAdp)obj : null;} diff --git a/150_gfui/src_110_draw_core/gplx/gfui/ColorAdp__tst.java b/150_gfui/src/gplx/gfui/draws/ColorAdp__tst.java similarity index 95% rename from 150_gfui/src_110_draw_core/gplx/gfui/ColorAdp__tst.java rename to 150_gfui/src/gplx/gfui/draws/ColorAdp__tst.java index 90033221f..fb61c14f1 100644 --- a/150_gfui/src_110_draw_core/gplx/gfui/ColorAdp__tst.java +++ b/150_gfui/src/gplx/gfui/draws/ColorAdp__tst.java @@ -15,7 +15,7 @@ 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.gfui; import gplx.*; +package gplx.gfui.draws; import gplx.*; import gplx.gfui.*; import org.junit.*; public class ColorAdp__tst { @Test public void parse_hex_() { diff --git a/150_gfui/src_110_draw_core/gplx/gfui/FontAdp.java b/150_gfui/src/gplx/gfui/draws/FontAdp.java similarity index 66% rename from 150_gfui/src_110_draw_core/gplx/gfui/FontAdp.java rename to 150_gfui/src/gplx/gfui/draws/FontAdp.java index e2b3f071f..234492da9 100644 --- a/150_gfui/src_110_draw_core/gplx/gfui/FontAdp.java +++ b/150_gfui/src/gplx/gfui/draws/FontAdp.java @@ -15,21 +15,21 @@ 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.gfui; import gplx.*; +package gplx.gfui.draws; import gplx.*; import gplx.gfui.*; import java.awt.Font; import java.awt.Toolkit; -import gplx.core.strings.*; import gplx.core.envs.*; -public class FontAdp implements GfoInvkAble { +import gplx.core.strings.*; import gplx.core.envs.*; import gplx.gfui.controls.gxws.*; +public class FontAdp implements Gfo_invk { public String Name() {return name;} public FontAdp Name_(String val) {name = val; InitUnder(); return this;} private String name; public float Size() {return size;} public FontAdp Size_(float val) {size = val; InitUnder(); return this;} float size; public FontStyleAdp Style() {return style;} public FontAdp Style_(FontStyleAdp val) {style = val; InitUnder(); return this;} FontStyleAdp style; - @gplx.Internal protected Font UnderFont() {if (font == null) InitUnder(); return font;} Font font = null; + public Font UnderFont() {if (font == null) InitUnder(); return font;} Font font = null; void InitUnder() { if (Env_.Mode_testing()) return; // WORKAROUND/.NET: NUnit will randomlyly throw exceptions font = FontAdpCache.Instance.GetNativeFont(this); if (ownerGxwCore != null) ownerGxwCore.TextFont_set(this); } - @gplx.Internal protected FontAdp OwnerGxwCore_(GxwCore_base v) {ownerGxwCore = v; return this;} GxwCore_base ownerGxwCore; + public FontAdp OwnerGxwCore_(GxwCore_base v) {ownerGxwCore = v; return this;} GxwCore_base ownerGxwCore; public boolean Eq(Object obj) { FontAdp comp = FontAdp.as_(obj); if (comp == null) return false; return name == comp.name && size == comp.size && style == comp.style; @@ -50,11 +50,11 @@ public class FontAdp implements GfoInvkAble { Object v = m.CastObj("v"); return ctx.Deny() ? (Object)this : Style_(FontStyleAdp_.read_(v)); } - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; } static final String Invk_name_ = "name_", Invk_size_ = "size_", Invk_style_ = "style_"; @Override public String toString() {return String_bldr_.new_().Add_kv("name", name).Add_kv_obj("size", size).Add_kv_obj("style", style).To_str();} - public static final FontAdp NullPtr = null; + public static final FontAdp NullPtr = null; public static FontAdp as_(Object obj) {return obj instanceof FontAdp ? (FontAdp)obj : null;} public static FontAdp cast(Object obj) {try {return (FontAdp)obj;} catch(Exception exc) {throw Err_.new_type_mismatch_w_exc(exc, FontAdp.class, obj);}} public static FontAdp new_(String name, float size, FontStyleAdp style) { @@ -63,19 +63,3 @@ public class FontAdp implements GfoInvkAble { return rv; } } -class FontAdpCache { - public Font GetNativeFont(FontAdp fontAdp) { - String key = fontAdp.toString(); - Font rv = (Font)hash.Get_by(key); if (rv != null) return rv; - if (screenResolutionInDpi == -1) ScreenResolution_set(); - int fontSize = XtoJavaDpi(fontAdp.Size()); - rv = new Font(fontAdp.Name(), fontAdp.Style().Val(), fontSize); - hash.Add(key, rv); - return rv; - } Hash_adp hash = Hash_adp_.new_(); - public static void ScreenResolution_set() {screenResolutionInDpi = Toolkit.getDefaultToolkit().getScreenResolution();} // usually either 96 or 120 - public static int XtoOsDpi(float v) {return Math.round((v * 72) / screenResolutionInDpi);} // WORKAROUND/JAVA: Java needs 72 dpi screen resolution; wnt uses 96 or 120 dpi - public static int XtoJavaDpi(float v) {return Math.round((v * screenResolutionInDpi) / 72);} - static int screenResolutionInDpi = -1; - public static final FontAdpCache Instance = new FontAdpCache(); FontAdpCache() {} -} diff --git a/150_gfui/src/gplx/gfui/draws/FontAdpCache.java b/150_gfui/src/gplx/gfui/draws/FontAdpCache.java new file mode 100644 index 000000000..6806defbe --- /dev/null +++ b/150_gfui/src/gplx/gfui/draws/FontAdpCache.java @@ -0,0 +1,36 @@ +/* +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.gfui.draws; import gplx.*; import gplx.gfui.*; +import java.awt.Font; +import java.awt.Toolkit; +public class FontAdpCache { + public Font GetNativeFont(FontAdp fontAdp) { + String key = fontAdp.toString(); + Font rv = (Font)hash.Get_by(key); if (rv != null) return rv; + if (screenResolutionInDpi == -1) ScreenResolution_set(); + int fontSize = XtoJavaDpi(fontAdp.Size()); + rv = new Font(fontAdp.Name(), fontAdp.Style().Val(), fontSize); + hash.Add(key, rv); + return rv; + } Hash_adp hash = Hash_adp_.New(); + public static void ScreenResolution_set() {screenResolutionInDpi = Toolkit.getDefaultToolkit().getScreenResolution();} // usually either 96 or 120 + public static int XtoOsDpi(float v) {return Math.round((v * 72) / screenResolutionInDpi);} // WORKAROUND/JAVA: Java needs 72 dpi screen resolution; wnt uses 96 or 120 dpi + public static int XtoJavaDpi(float v) {return Math.round((v * screenResolutionInDpi) / 72);} + static int screenResolutionInDpi = -1; + public static final FontAdpCache Instance = new FontAdpCache(); FontAdpCache() {} +} diff --git a/150_gfui/src_110_draw_core/gplx/gfui/FontStyleAdp.java b/150_gfui/src/gplx/gfui/draws/FontStyleAdp.java similarity index 89% rename from 150_gfui/src_110_draw_core/gplx/gfui/FontStyleAdp.java rename to 150_gfui/src/gplx/gfui/draws/FontStyleAdp.java index 600152103..bc0074a52 100644 --- a/150_gfui/src_110_draw_core/gplx/gfui/FontStyleAdp.java +++ b/150_gfui/src/gplx/gfui/draws/FontStyleAdp.java @@ -15,9 +15,9 @@ 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.gfui; import gplx.*; +package gplx.gfui.draws; import gplx.*; import gplx.gfui.*; public class FontStyleAdp { public int Val() {return val;} int val; @Override public String toString() {return FontStyleAdp_.XtoStr_(this);} - @gplx.Internal protected FontStyleAdp(int v) {val = v;} + public FontStyleAdp(int v) {val = v;} } diff --git a/150_gfui/src_110_draw_core/gplx/gfui/FontStyleAdp_.java b/150_gfui/src/gplx/gfui/draws/FontStyleAdp_.java similarity index 93% rename from 150_gfui/src_110_draw_core/gplx/gfui/FontStyleAdp_.java rename to 150_gfui/src/gplx/gfui/draws/FontStyleAdp_.java index bf31b58b7..0f9e5a326 100644 --- a/150_gfui/src_110_draw_core/gplx/gfui/FontStyleAdp_.java +++ b/150_gfui/src/gplx/gfui/draws/FontStyleAdp_.java @@ -15,16 +15,16 @@ 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.gfui; import gplx.*; +package gplx.gfui.draws; import gplx.*; import gplx.gfui.*; import gplx.core.primitives.*; import gplx.core.interfaces.*; public class FontStyleAdp_ implements ParseAble { - public static final FontStyleAdp + public static final FontStyleAdp Plain = new FontStyleAdp(0) , Bold = new FontStyleAdp(1) , Italic = new FontStyleAdp(2) , BoldItalic = new FontStyleAdp(3) ; - public static final FontStyleAdp_ Parser = new FontStyleAdp_(); + public static final FontStyleAdp_ Parser = new FontStyleAdp_(); public Object ParseAsObj(String raw) {return FontStyleAdp_.parse(raw);} public static FontStyleAdp cast(Object obj) {try {return (FontStyleAdp)obj;} catch(Exception exc) {throw Err_.new_type_mismatch_w_exc(exc, FontStyleAdp.class, obj);}} diff --git a/150_gfui/src_110_draw_core/gplx/gfui/PenAdp.java b/150_gfui/src/gplx/gfui/draws/PenAdp.java similarity index 86% rename from 150_gfui/src_110_draw_core/gplx/gfui/PenAdp.java rename to 150_gfui/src/gplx/gfui/draws/PenAdp.java index acef354a5..99f11f0e0 100644 --- a/150_gfui/src_110_draw_core/gplx/gfui/PenAdp.java +++ b/150_gfui/src/gplx/gfui/draws/PenAdp.java @@ -15,11 +15,11 @@ 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.gfui; import gplx.*; +package gplx.gfui.draws; import gplx.*; import gplx.gfui.*; import java.awt.BasicStroke; import java.awt.Stroke; import gplx.core.strings.*; -public class PenAdp implements GfoInvkAble { +public class PenAdp implements Gfo_invk { public float Width() {return width;} public void Width_set(float v) {width = v; InitUnder();} float width; public ColorAdp Color() {return color;} public void Color_set(ColorAdp v) {color = v; InitUnder();} ColorAdp color; public BasicStroke UnderStroke() {if (underStroke == null) InitUnder(); return underStroke;} BasicStroke underStroke; @@ -28,9 +28,9 @@ public class PenAdp implements GfoInvkAble { public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_Width_)) Width_set(m.ReadFloat(Invk_Width_)); else if (ctx.Match(k, Invk_Color_)) Color_set((ColorAdp)m.ReadObj(Invk_Color_, ColorAdp_.Parser)); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; - } static final String Invk_Width_ = "Width_", Invk_Color_ = "Color_"; + } static final String Invk_Width_ = "Width_", Invk_Color_ = "Color_"; @Override public String toString() {return String_bldr_.new_().Add_kv_obj("width", width).Add_kv("color", color.XtoHexStr()).To_str();} @Override public int hashCode() {return color.Value() ^ (int)width;} @Override public boolean equals(Object obj) { // cannot use Eq b/c of difficulty in comparing null instances @@ -48,6 +48,6 @@ class PenAdpCache { } return (BasicStroke)rv; } - Hash_adp hash = Hash_adp_.new_(); - public static final PenAdpCache Instance = new PenAdpCache(); PenAdpCache() {} + Hash_adp hash = Hash_adp_.New(); + public static final PenAdpCache Instance = new PenAdpCache(); PenAdpCache() {} } diff --git a/150_gfui/src_110_draw_core/gplx/gfui/PenAdp_.java b/150_gfui/src/gplx/gfui/draws/PenAdp_.java similarity index 94% rename from 150_gfui/src_110_draw_core/gplx/gfui/PenAdp_.java rename to 150_gfui/src/gplx/gfui/draws/PenAdp_.java index de473a721..0455b1424 100644 --- a/150_gfui/src_110_draw_core/gplx/gfui/PenAdp_.java +++ b/150_gfui/src/gplx/gfui/draws/PenAdp_.java @@ -15,7 +15,7 @@ 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.gfui; import gplx.*; +package gplx.gfui.draws; import gplx.*; import gplx.gfui.*; public class PenAdp_ { public static PenAdp as_(Object obj) {return obj instanceof PenAdp ? (PenAdp)obj : null;} public static PenAdp cast(Object obj) {try {return (PenAdp)obj;} catch(Exception exc) {throw Err_.new_type_mismatch_w_exc(exc, PenAdp.class, obj);}} diff --git a/150_gfui/src_110_draw_core/gplx/gfui/SolidBrushAdp.java b/150_gfui/src/gplx/gfui/draws/SolidBrushAdp.java similarity index 94% rename from 150_gfui/src_110_draw_core/gplx/gfui/SolidBrushAdp.java rename to 150_gfui/src/gplx/gfui/draws/SolidBrushAdp.java index 271d25eee..3a114e6b9 100644 --- a/150_gfui/src_110_draw_core/gplx/gfui/SolidBrushAdp.java +++ b/150_gfui/src/gplx/gfui/draws/SolidBrushAdp.java @@ -15,7 +15,7 @@ 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.gfui; import gplx.*; +package gplx.gfui.draws; import gplx.*; import gplx.gfui.*; public class SolidBrushAdp { public ColorAdp Color() {return color;} ColorAdp color; @Override public String toString() {return color.XtoHexStr();} diff --git a/150_gfui/src_110_draw_core/gplx/gfui/SolidBrushAdp_.java b/150_gfui/src/gplx/gfui/draws/SolidBrushAdp_.java similarity index 76% rename from 150_gfui/src_110_draw_core/gplx/gfui/SolidBrushAdp_.java rename to 150_gfui/src/gplx/gfui/draws/SolidBrushAdp_.java index 752fdfb2f..b1fbcb1ab 100644 --- a/150_gfui/src_110_draw_core/gplx/gfui/SolidBrushAdp_.java +++ b/150_gfui/src/gplx/gfui/draws/SolidBrushAdp_.java @@ -15,13 +15,13 @@ 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.gfui; import gplx.*; +package gplx.gfui.draws; import gplx.*; import gplx.gfui.*; public class SolidBrushAdp_ { public static SolidBrushAdp as_(Object obj) {return obj instanceof SolidBrushAdp ? (SolidBrushAdp)obj : null;} public static SolidBrushAdp cast(Object obj) {try {return (SolidBrushAdp)obj;} catch(Exception exc) {throw Err_.new_type_mismatch_w_exc(exc, SolidBrushAdp.class, obj);}} - public static final SolidBrushAdp Black = new_(ColorAdp_.Black); - public static final SolidBrushAdp White = new_(ColorAdp_.White); - public static final SolidBrushAdp Null = new_(ColorAdp_.Null); + public static final SolidBrushAdp Black = new_(ColorAdp_.Black); + public static final SolidBrushAdp White = new_(ColorAdp_.White); + public static final SolidBrushAdp Null = new_(ColorAdp_.Null); public static SolidBrushAdp new_(ColorAdp color) {return SolidBrushAdpCache.Instance.Get_by(color);} } class SolidBrushAdpCache { @@ -33,6 +33,6 @@ class SolidBrushAdpCache { } return rv; } - Hash_adp hash = Hash_adp_.new_(); - public static final SolidBrushAdpCache Instance = new SolidBrushAdpCache(); SolidBrushAdpCache() {} + Hash_adp hash = Hash_adp_.New(); + public static final SolidBrushAdpCache Instance = new SolidBrushAdpCache(); SolidBrushAdpCache() {} } diff --git a/150_gfui/src_600_adp/gplx/gfui/ClipboardAdp_.java b/150_gfui/src/gplx/gfui/envs/ClipboardAdp_.java similarity index 95% rename from 150_gfui/src_600_adp/gplx/gfui/ClipboardAdp_.java rename to 150_gfui/src/gplx/gfui/envs/ClipboardAdp_.java index 65f062d89..0cec27b64 100644 --- a/150_gfui/src_600_adp/gplx/gfui/ClipboardAdp_.java +++ b/150_gfui/src/gplx/gfui/envs/ClipboardAdp_.java @@ -15,7 +15,7 @@ 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.gfui; import gplx.*; +package gplx.gfui.envs; import gplx.*; import gplx.gfui.*; import java.awt.Toolkit; import java.awt.datatransfer.Clipboard; import java.awt.datatransfer.DataFlavor; diff --git a/150_gfui/tst/gplx/gfui/ClipboardAdp__tst.java b/150_gfui/src/gplx/gfui/envs/ClipboardAdp__tst.java similarity index 88% rename from 150_gfui/tst/gplx/gfui/ClipboardAdp__tst.java rename to 150_gfui/src/gplx/gfui/envs/ClipboardAdp__tst.java index 560b1a90d..98aebf0b0 100644 --- a/150_gfui/tst/gplx/gfui/ClipboardAdp__tst.java +++ b/150_gfui/src/gplx/gfui/envs/ClipboardAdp__tst.java @@ -15,8 +15,8 @@ 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.gfui; import gplx.*; -import org.junit.*; +package gplx.gfui.envs; import gplx.*; import gplx.gfui.*; +import org.junit.*; import gplx.gfui.envs.*; public class ClipboardAdp__tst { @Test public void Basic() { ClipboardAdp_.SetText("test"); diff --git a/150_gfui/src_600_adp/gplx/gfui/CursorAdp.java b/150_gfui/src/gplx/gfui/envs/CursorAdp.java similarity index 92% rename from 150_gfui/src_600_adp/gplx/gfui/CursorAdp.java rename to 150_gfui/src/gplx/gfui/envs/CursorAdp.java index ebacc9e96..2de9e6c3a 100644 --- a/150_gfui/src_600_adp/gplx/gfui/CursorAdp.java +++ b/150_gfui/src/gplx/gfui/envs/CursorAdp.java @@ -15,7 +15,8 @@ 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.gfui; import gplx.*; +package gplx.gfui.envs; import gplx.*; import gplx.gfui.*; +import gplx.gfui.controls.gxws.*; public class CursorAdp { public static PointAdp Pos() { if (testing) return testing_pos; diff --git a/150_gfui/src_600_adp/gplx/gfui/ScreenAdp.java b/150_gfui/src/gplx/gfui/envs/ScreenAdp.java similarity index 94% rename from 150_gfui/src_600_adp/gplx/gfui/ScreenAdp.java rename to 150_gfui/src/gplx/gfui/envs/ScreenAdp.java index 3cdfdc00e..d19bd50c7 100644 --- a/150_gfui/src_600_adp/gplx/gfui/ScreenAdp.java +++ b/150_gfui/src/gplx/gfui/envs/ScreenAdp.java @@ -15,7 +15,7 @@ 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.gfui; import gplx.*; +package gplx.gfui.envs; import gplx.*; import gplx.gfui.*; public class ScreenAdp { public int Index() {return index;} int index; public RectAdp Rect() {return bounds;} RectAdp bounds = RectAdp_.Zero; diff --git a/150_gfui/src_600_adp/gplx/gfui/ScreenAdp_.java b/150_gfui/src/gplx/gfui/envs/ScreenAdp_.java similarity index 93% rename from 150_gfui/src_600_adp/gplx/gfui/ScreenAdp_.java rename to 150_gfui/src/gplx/gfui/envs/ScreenAdp_.java index 8b1afbc9c..43475b003 100644 --- a/150_gfui/src_600_adp/gplx/gfui/ScreenAdp_.java +++ b/150_gfui/src/gplx/gfui/envs/ScreenAdp_.java @@ -15,13 +15,14 @@ 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.gfui; import gplx.*; +package gplx.gfui.envs; import gplx.*; import gplx.gfui.*; import java.awt.GraphicsConfiguration; import java.awt.GraphicsDevice; import java.awt.GraphicsEnvironment; import java.awt.Toolkit; +import gplx.gfui.controls.gxws.*; public class ScreenAdp_ { - public static final ScreenAdp Primary = screen_(0); + public static final ScreenAdp Primary = screen_(0); public static ScreenAdp as_(Object obj) {return obj instanceof ScreenAdp ? (ScreenAdp)obj : null;} public static ScreenAdp cast(Object obj) {try {return (ScreenAdp)obj;} catch(Exception exc) {throw Err_.new_type_mismatch_w_exc(exc, ScreenAdp.class, obj);}} public static ScreenAdp parse(String raw) { // ex: {screen{1} diff --git a/150_gfui/tst/gplx/gfui/ScreenAdp_tst.java b/150_gfui/src/gplx/gfui/envs/ScreenAdp_tst.java similarity index 89% rename from 150_gfui/tst/gplx/gfui/ScreenAdp_tst.java rename to 150_gfui/src/gplx/gfui/envs/ScreenAdp_tst.java index c51ad3bc8..eeacefdfa 100644 --- a/150_gfui/tst/gplx/gfui/ScreenAdp_tst.java +++ b/150_gfui/src/gplx/gfui/envs/ScreenAdp_tst.java @@ -15,8 +15,8 @@ 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.gfui; import gplx.*; -import org.junit.*; +package gplx.gfui.envs; import gplx.*; import gplx.gfui.*; +import org.junit.*; import gplx.gfui.envs.*; public class ScreenAdp_tst { @Test public void parse() { ScreenAdp actl = ScreenAdp_.parse("{screen{0}"); diff --git a/150_gfui/src_600_adp/gplx/gfui/TimerAdp.java b/150_gfui/src/gplx/gfui/envs/TimerAdp.java similarity index 84% rename from 150_gfui/src_600_adp/gplx/gfui/TimerAdp.java rename to 150_gfui/src/gplx/gfui/envs/TimerAdp.java index 2b5b51a09..6fc00e6f3 100644 --- a/150_gfui/src_600_adp/gplx/gfui/TimerAdp.java +++ b/150_gfui/src/gplx/gfui/envs/TimerAdp.java @@ -15,7 +15,7 @@ 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.gfui; import gplx.*; +package gplx.gfui.envs; import gplx.*; import gplx.gfui.*; import javax.swing.Timer; import java.awt.event.ActionListener; import gplx.core.envs.*; @@ -36,7 +36,7 @@ public class TimerAdp implements Rls_able { public void Rls() {underTimer.stop();} Timer underTimer; - public static TimerAdp new_(GfoInvkAble invk, String msgKey, int interval, boolean enabled) { + public static TimerAdp new_(Gfo_invk invk, String msgKey, int interval, boolean enabled) { TimerAdp rv = new TimerAdp(); rv.underTimer = new Timer(interval, new TimerActionListener(invk, msgKey)); rv.Interval_(interval).Enabled_(enabled); @@ -45,10 +45,10 @@ public class TimerAdp implements Rls_able { } class TimerActionListener implements ActionListener { public void actionPerformed(java.awt.event.ActionEvent arg0) { - GfoInvkAble_.InvkCmd(invk, key); + Gfo_invk_.Invk_by_key(invk, key); } - GfoInvkAble invk; String key; - public TimerActionListener(GfoInvkAble invk, String key) { + Gfo_invk invk; String key; + public TimerActionListener(Gfo_invk invk, String key) { this.invk = invk; this.key = key; } } diff --git a/150_gfui/src_120_draw_objs/gplx/gfui/GfxAdp.java b/150_gfui/src/gplx/gfui/gfxs/GfxAdp.java similarity index 92% rename from 150_gfui/src_120_draw_objs/gplx/gfui/GfxAdp.java rename to 150_gfui/src/gplx/gfui/gfxs/GfxAdp.java index e0159389b..4a6951f9f 100644 --- a/150_gfui/src_120_draw_objs/gplx/gfui/GfxAdp.java +++ b/150_gfui/src/gplx/gfui/gfxs/GfxAdp.java @@ -15,7 +15,8 @@ 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.gfui; import gplx.*; +package gplx.gfui.gfxs; import gplx.*; import gplx.gfui.*; +import gplx.gfui.draws.*; import gplx.gfui.imgs.*; public interface GfxAdp extends Rls_able { void DrawLine(PenAdp pen, PointAdp src, PointAdp trg); void DrawRect(PenAdp pen, int x, int y, int width, int height); diff --git a/150_gfui/src_120_draw_objs/gplx/gfui/GfxAdpBase.java b/150_gfui/src/gplx/gfui/gfxs/GfxAdpBase.java similarity index 95% rename from 150_gfui/src_120_draw_objs/gplx/gfui/GfxAdpBase.java rename to 150_gfui/src/gplx/gfui/gfxs/GfxAdpBase.java index fd4a12684..3973c8681 100644 --- a/150_gfui/src_120_draw_objs/gplx/gfui/GfxAdpBase.java +++ b/150_gfui/src/gplx/gfui/gfxs/GfxAdpBase.java @@ -15,13 +15,14 @@ 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.gfui; import gplx.*; +package gplx.gfui.gfxs; import gplx.*; import gplx.gfui.*; import java.awt.FontMetrics; import java.awt.Graphics2D; import java.awt.RenderingHints; import java.awt.geom.Rectangle2D; import javax.swing.JComponent; +import gplx.gfui.draws.*; import gplx.gfui.imgs.*; import gplx.gfui.controls.gxws.*; public class GfxAdpBase implements GfxAdp { public void DrawLine(PenAdp pen, PointAdp src, PointAdp trg) { gfx.setColor(ColorAdpCache.Instance.GetNativeColor(pen.Color())); @@ -99,7 +100,7 @@ public class GfxAdpBase implements GfxAdp { public void Rls() {gfx.dispose();} public Object Under() {return gfx;} Graphics2D gfx; - @gplx.Internal protected static GfxAdpBase new_(Graphics2D gfx) { + public static GfxAdpBase new_(Graphics2D gfx) { GfxAdpBase rv = new GfxAdpBase(); rv.gfx = gfx; return rv; diff --git a/150_gfui/tst/gplx/gfui/GfxAdpMok.java b/150_gfui/src/gplx/gfui/gfxs/GfxAdpMok.java similarity index 94% rename from 150_gfui/tst/gplx/gfui/GfxAdpMok.java rename to 150_gfui/src/gplx/gfui/gfxs/GfxAdpMok.java index f68836a65..54101dd46 100644 --- a/150_gfui/tst/gplx/gfui/GfxAdpMok.java +++ b/150_gfui/src/gplx/gfui/gfxs/GfxAdpMok.java @@ -15,7 +15,8 @@ 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.gfui; import gplx.*; +package gplx.gfui.gfxs; import gplx.*; import gplx.gfui.*; +import gplx.gfui.draws.*; import gplx.gfui.imgs.*; public class GfxAdpMok implements GfxAdp { public GfxItmList SubItms() {return subItms;} GfxItmList subItms = new GfxItmList(); public void DrawStringXtn(String s, FontAdp font, SolidBrushAdp brush, float x, float y, float width, float height, GfxStringData sd) { diff --git a/150_gfui/src_120_draw_objs/gplx/gfui/GfxAdp_.java b/150_gfui/src/gplx/gfui/gfxs/GfxAdp_.java similarity index 91% rename from 150_gfui/src_120_draw_objs/gplx/gfui/GfxAdp_.java rename to 150_gfui/src/gplx/gfui/gfxs/GfxAdp_.java index 3d14caffc..37a7d04a9 100644 --- a/150_gfui/src_120_draw_objs/gplx/gfui/GfxAdp_.java +++ b/150_gfui/src/gplx/gfui/gfxs/GfxAdp_.java @@ -15,8 +15,9 @@ 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.gfui; import gplx.*; +package gplx.gfui.gfxs; import gplx.*; import gplx.gfui.*; import java.awt.Graphics2D; +import gplx.gfui.imgs.*; public class GfxAdp_ { @gplx.Internal protected static GfxAdp new_(Graphics2D graphics) {return GfxAdpBase.new_(graphics);} public static GfxAdp image_(ImageAdp image) { diff --git a/150_gfui/tst/gplx/gfui/GfxItm.java b/150_gfui/src/gplx/gfui/gfxs/GfxItm.java similarity index 92% rename from 150_gfui/tst/gplx/gfui/GfxItm.java rename to 150_gfui/src/gplx/gfui/gfxs/GfxItm.java index 103fe0678..7f7dcecc8 100644 --- a/150_gfui/tst/gplx/gfui/GfxItm.java +++ b/150_gfui/src/gplx/gfui/gfxs/GfxItm.java @@ -15,5 +15,5 @@ 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.gfui; import gplx.*; +package gplx.gfui.gfxs; import gplx.*; import gplx.gfui.*; public interface GfxItm {} diff --git a/150_gfui/tst/gplx/gfui/GfxItmList.java b/150_gfui/src/gplx/gfui/gfxs/GfxItmList.java similarity index 94% rename from 150_gfui/tst/gplx/gfui/GfxItmList.java rename to 150_gfui/src/gplx/gfui/gfxs/GfxItmList.java index c29be7192..cfd7110bb 100644 --- a/150_gfui/tst/gplx/gfui/GfxItmList.java +++ b/150_gfui/src/gplx/gfui/gfxs/GfxItmList.java @@ -15,7 +15,7 @@ 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.gfui; import gplx.*; +package gplx.gfui.gfxs; import gplx.*; import gplx.gfui.*; public class GfxItmList extends List_adp_base { @gplx.New public GfxItm Get_at(int i) {return (GfxItm)Get_at_base(i);} public void Add(GfxItm gfxItm) {Add_base(gfxItm);} diff --git a/150_gfui/tst/gplx/gfui/GfxItm_base.java b/150_gfui/src/gplx/gfui/gfxs/GfxItm_base.java similarity index 95% rename from 150_gfui/tst/gplx/gfui/GfxItm_base.java rename to 150_gfui/src/gplx/gfui/gfxs/GfxItm_base.java index 4b207fc43..35dca8eb6 100644 --- a/150_gfui/tst/gplx/gfui/GfxItm_base.java +++ b/150_gfui/src/gplx/gfui/gfxs/GfxItm_base.java @@ -15,7 +15,7 @@ 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.gfui; import gplx.*; +package gplx.gfui.gfxs; import gplx.*; import gplx.gfui.*; import gplx.core.strings.*; public abstract class GfxItm_base implements GfxItm { public PointAdp Pos() {return pos;} PointAdp pos = PointAdp_.Zero; diff --git a/150_gfui/tst/gplx/gfui/GfxLineItm.java b/150_gfui/src/gplx/gfui/gfxs/GfxLineItm.java similarity index 94% rename from 150_gfui/tst/gplx/gfui/GfxLineItm.java rename to 150_gfui/src/gplx/gfui/gfxs/GfxLineItm.java index ec57b1c03..bce99b111 100644 --- a/150_gfui/tst/gplx/gfui/GfxLineItm.java +++ b/150_gfui/src/gplx/gfui/gfxs/GfxLineItm.java @@ -15,8 +15,9 @@ 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.gfui; import gplx.*; +package gplx.gfui.gfxs; import gplx.*; import gplx.gfui.*; import gplx.core.strings.*; +import gplx.gfui.draws.*; public class GfxLineItm implements GfxItm { public PointAdp Src() {return src;} PointAdp src = PointAdp_.Zero; public PointAdp Trg() {return trg;} PointAdp trg = PointAdp_.Zero; diff --git a/150_gfui/tst/gplx/gfui/GfxRectItm.java b/150_gfui/src/gplx/gfui/gfxs/GfxRectItm.java similarity index 94% rename from 150_gfui/tst/gplx/gfui/GfxRectItm.java rename to 150_gfui/src/gplx/gfui/gfxs/GfxRectItm.java index 3d679463d..d1a524509 100644 --- a/150_gfui/tst/gplx/gfui/GfxRectItm.java +++ b/150_gfui/src/gplx/gfui/gfxs/GfxRectItm.java @@ -15,8 +15,9 @@ 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.gfui; import gplx.*; +package gplx.gfui.gfxs; import gplx.*; import gplx.gfui.*; import gplx.core.strings.*; +import gplx.gfui.draws.*; public class GfxRectItm extends GfxItm_base { public float Width() {return width;} float width; public ColorAdp Color() {return color;} ColorAdp color; diff --git a/150_gfui/src_120_draw_objs/gplx/gfui/GfxStringData.java b/150_gfui/src/gplx/gfui/gfxs/GfxStringData.java similarity index 91% rename from 150_gfui/src_120_draw_objs/gplx/gfui/GfxStringData.java rename to 150_gfui/src/gplx/gfui/gfxs/GfxStringData.java index de7808b08..26e90669a 100644 --- a/150_gfui/src_120_draw_objs/gplx/gfui/GfxStringData.java +++ b/150_gfui/src/gplx/gfui/gfxs/GfxStringData.java @@ -15,10 +15,11 @@ 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.gfui; import gplx.*; +package gplx.gfui.gfxs; import gplx.*; import gplx.gfui.*; import java.awt.font.TextAttribute; import java.text.AttributedString; import gplx.core.envs.*; +import gplx.gfui.draws.*; import gplx.gfui.controls.gxws.*; import gplx.gfui.controls.elems.*; import gplx.gfui.controls.windows.*; public class GfxStringData { public String Val() { if (ownerElem == null) return val; @@ -28,7 +29,7 @@ public class GfxStringData { public GfuiAlign AlignH() {return alignH;} GfuiAlign alignH; public GfxStringData AlignH_(GfuiAlign val) { alignH = val; - if (ownerElem != null) GfoInvkAble_.InvkCmd_val(ownerElem, GxwElem_lang.AlignH_cmd, alignH); // needed for TextBox, since its Paint is not overriden + if (ownerElem != null) Gfo_invk_.Invk_by_val(ownerElem, GxwElem_lang.AlignH_cmd, alignH); // needed for TextBox, since its Paint is not overriden TextRect_setNull(); return this; } @@ -74,7 +75,7 @@ public class GfxStringData { if (textRect.Eq(RectAdpF.Null)) {textRect = TextRect_calc(gfx);} gfx.DrawStringXtn(this.Val(), font, brush, textRect.X(), textRect.Y(), textRect.Width(), textRect.Height(), this); } - @gplx.Internal protected void Text_set(String v) { + public void Text_set(String v) { if (this.Val() == v) return; if (ownerElem != null) { ownerElem.TextVal_set(v); @@ -112,5 +113,5 @@ public class GfxStringData { rv.Font_(FontAdp.new_("Arial", 8, FontStyleAdp_.Plain)); // needed for TextBox, since its Paint is not overriden, and .Font property must be set return rv; } GfxStringData() {} - public static final GfxStringData Null = null; + public static final GfxStringData Null = null; } diff --git a/150_gfui/tst/gplx/gfui/GfxStringItm.java b/150_gfui/src/gplx/gfui/gfxs/GfxStringItm.java similarity index 94% rename from 150_gfui/tst/gplx/gfui/GfxStringItm.java rename to 150_gfui/src/gplx/gfui/gfxs/GfxStringItm.java index 92e9d5b0c..cbb4700ad 100644 --- a/150_gfui/tst/gplx/gfui/GfxStringItm.java +++ b/150_gfui/src/gplx/gfui/gfxs/GfxStringItm.java @@ -15,7 +15,8 @@ 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.gfui; import gplx.*; +package gplx.gfui.gfxs; import gplx.*; import gplx.gfui.*; +import gplx.gfui.draws.*; public class GfxStringItm extends GfxItm_base { public String Text() {return text;} private String text; public FontAdp Font() {return font;} FontAdp font; diff --git a/150_gfui/src_120_draw_objs/gplx/gfui/PaintArgs.java b/150_gfui/src/gplx/gfui/gfxs/PaintArgs.java similarity index 94% rename from 150_gfui/src_120_draw_objs/gplx/gfui/PaintArgs.java rename to 150_gfui/src/gplx/gfui/gfxs/PaintArgs.java index 3db0596d6..c8320a7f7 100644 --- a/150_gfui/src_120_draw_objs/gplx/gfui/PaintArgs.java +++ b/150_gfui/src/gplx/gfui/gfxs/PaintArgs.java @@ -15,7 +15,7 @@ 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.gfui; import gplx.*; +package gplx.gfui.gfxs; import gplx.*; import gplx.gfui.*; public class PaintArgs { public GfxAdp Graphics() {return graphics;} GfxAdp graphics; public RectAdp ClipRect() {return clipRect;} RectAdp clipRect; diff --git a/150_gfui/src_600_adp/gplx/gfui/IconAdp.java b/150_gfui/src/gplx/gfui/imgs/IconAdp.java similarity index 92% rename from 150_gfui/src_600_adp/gplx/gfui/IconAdp.java rename to 150_gfui/src/gplx/gfui/imgs/IconAdp.java index 53f8efb50..cfe3f25c1 100644 --- a/150_gfui/src_600_adp/gplx/gfui/IconAdp.java +++ b/150_gfui/src/gplx/gfui/imgs/IconAdp.java @@ -15,7 +15,7 @@ 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.gfui; import gplx.*; +package gplx.gfui.imgs; import gplx.*; import gplx.gfui.*; import javax.swing.Icon; import javax.swing.ImageIcon; import java.awt.Image; @@ -23,7 +23,7 @@ import java.net.MalformedURLException; import java.net.URL; import gplx.core.gfo_regys.*; public class IconAdp { - public Icon UnderIcon() {return icon;} private final Icon icon; + public Icon UnderIcon() {return icon;} private final Icon icon; public Image XtoImage() {return ((ImageIcon)icon).getImage();} public Io_url Url() {return url;} private Io_url url = Io_url_.Empty; IconAdp(Icon icon) {this.icon = icon;} diff --git a/150_gfui/src_600_adp/gplx/gfui/ImageAdp.java b/150_gfui/src/gplx/gfui/imgs/ImageAdp.java similarity index 95% rename from 150_gfui/src_600_adp/gplx/gfui/ImageAdp.java rename to 150_gfui/src/gplx/gfui/imgs/ImageAdp.java index a6748974f..a45b84828 100644 --- a/150_gfui/src_600_adp/gplx/gfui/ImageAdp.java +++ b/150_gfui/src/gplx/gfui/imgs/ImageAdp.java @@ -15,8 +15,9 @@ 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.gfui; import gplx.*; +package gplx.gfui.imgs; import gplx.*; import gplx.gfui.*; import java.awt.Image; +import gplx.gfui.kits.core.*; public interface ImageAdp extends Rls_able { Gfui_kit Kit(); SizeAdp Size(); diff --git a/150_gfui/src_600_adp/gplx/gfui/ImageAdp_.java b/150_gfui/src/gplx/gfui/imgs/ImageAdp_.java similarity index 94% rename from 150_gfui/src_600_adp/gplx/gfui/ImageAdp_.java rename to 150_gfui/src/gplx/gfui/imgs/ImageAdp_.java index 908116a8b..46d61d6c0 100644 --- a/150_gfui/src_600_adp/gplx/gfui/ImageAdp_.java +++ b/150_gfui/src/gplx/gfui/imgs/ImageAdp_.java @@ -15,9 +15,9 @@ 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.gfui; import gplx.*; +package gplx.gfui.imgs; import gplx.*; import gplx.gfui.*; import gplx.core.primitives.*; -import gplx.core.ios.*; /*IoStream*/ +import gplx.core.ios.*; /*IoStream*/ import gplx.core.ios.streams.*; import java.io.File; import java.io.FileInputStream; import java.io.IOException; @@ -32,7 +32,7 @@ import javax.imageio.ImageIO; public class ImageAdp_ { public static ImageAdp as_(Object obj) {return obj instanceof ImageAdp ? (ImageAdp)obj : null;} public static ImageAdp cast(Object obj) {try {return (ImageAdp)obj;} catch(Exception exc) {throw Err_.new_type_mismatch_w_exc(exc, ImageAdp.class, obj);}} - public static final ImageAdp Null = new_(10, 10); + public static final ImageAdp Null = new_(10, 10); public static ImageAdp new_(int width, int height) { // BufferedImage img = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); // JAVA: must be TYPE_INT_RGB or else ImageIO.write("bmp") will fail BufferedImage img = getCompatibleImage(width, height); @@ -106,7 +106,7 @@ class Gfui_svg_util { // NOTE: not using XmlDoc b/c invalid doctypes can cause xml to hang; . */ -package gplx.gfui; import gplx.*; +package gplx.gfui.imgs; import gplx.*; import gplx.gfui.*; import java.awt.Graphics2D; import java.awt.Image; import java.awt.geom.AffineTransform; @@ -24,6 +24,7 @@ import java.awt.image.RenderedImage; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; +import gplx.gfui.gfxs.*; import gplx.gfui.kits.core.*; public class ImageAdp_base implements ImageAdp, Rls_able { @gplx.Internal protected ImageAdp_base(Image img) {this.under = img;} public Gfui_kit Kit() {return kit;} public void Kit_(Gfui_kit v) {this.kit = v;} Gfui_kit kit; @@ -57,7 +58,7 @@ public class ImageAdp_base implements ImageAdp, Rls_able { } public ImageAdp Extract_image(RectAdp src_rect, SizeAdp trg_size) {return Extract_image(src_rect.X(), src_rect.Y(), src_rect.Width(), src_rect.Height(), trg_size.Width(), trg_size.Height());} public ImageAdp Extract_image(int src_x, int src_y, int src_w, int src_h, int trg_w, int trg_h) { - if (this == ImageAdp_.Null) return ImageAdp_.Null; // TODO: create ImageAdpNull class (along with ImageAdp interface) + if (this == ImageAdp_.Null) return ImageAdp_.Null; // TODO_OLD: create ImageAdpNull class (along with ImageAdp interface) if (disposed) return ImageAdp_.new_(1, 1); ImageAdp rv = ImageAdp_.new_(trg_w, trg_h); GfxAdp gfx = GfxAdp_.image_(rv); diff --git a/150_gfui/src_600_adp/gplx/gfui/ImageAdp_null.java b/150_gfui/src/gplx/gfui/imgs/ImageAdp_null.java similarity index 89% rename from 150_gfui/src_600_adp/gplx/gfui/ImageAdp_null.java rename to 150_gfui/src/gplx/gfui/imgs/ImageAdp_null.java index 6806a5691..c43d17843 100644 --- a/150_gfui/src_600_adp/gplx/gfui/ImageAdp_null.java +++ b/150_gfui/src/gplx/gfui/imgs/ImageAdp_null.java @@ -15,7 +15,8 @@ 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.gfui; import gplx.*; +package gplx.gfui.imgs; import gplx.*; import gplx.gfui.*; +import gplx.gfui.kits.core.*; public class ImageAdp_null implements ImageAdp { public Gfui_kit Kit() {return Gfui_kit_.Mem();} public SizeAdp Size() {return SizeAdp_.Zero;} @@ -30,5 +31,5 @@ public class ImageAdp_null implements ImageAdp { public ImageAdp Extract_image(RectAdp src_rect, SizeAdp trg_size) {return Extract_image(src_rect.X(), src_rect.Y(), src_rect.Width(), src_rect.Height(), trg_size.Width(), trg_size.Height());} public ImageAdp Extract_image(int src_x, int src_y, int src_w, int src_h, int trg_w, int trg_h) {return this;} public ImageAdp Resize(int width, int height) {return this;} - public static final ImageAdp_null Instance = new ImageAdp_null(); ImageAdp_null() {} + public static final ImageAdp_null Instance = new ImageAdp_null(); ImageAdp_null() {} } diff --git a/150_gfui/tst/gplx/gfui/ImageAdp_tst.java b/150_gfui/src/gplx/gfui/imgs/ImageAdp_tst.java similarity index 94% rename from 150_gfui/tst/gplx/gfui/ImageAdp_tst.java rename to 150_gfui/src/gplx/gfui/imgs/ImageAdp_tst.java index 5d7b232d3..7c2072b36 100644 --- a/150_gfui/tst/gplx/gfui/ImageAdp_tst.java +++ b/150_gfui/src/gplx/gfui/imgs/ImageAdp_tst.java @@ -15,11 +15,12 @@ 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.gfui; import gplx.*; +package gplx.gfui.imgs; import gplx.*; import gplx.gfui.*; import org.junit.*; import gplx.core.consoles.*; import gplx.core.ios.*; import gplx.core.security.*; +import gplx.gfui.imgs.*; public class ImageAdp_tst { @Before public void setup() { load = Tfds.RscDir.GenSubFil_nest("150_gfui", "imgs", "strawberry_java.bmp"); diff --git a/150_gfui/tst/gplx/gfui/GfuiClickKeyMgr_tst.java b/150_gfui/src/gplx/gfui/ipts/GfuiClickKeyMgr_tst.java similarity index 87% rename from 150_gfui/tst/gplx/gfui/GfuiClickKeyMgr_tst.java rename to 150_gfui/src/gplx/gfui/ipts/GfuiClickKeyMgr_tst.java index 834f0267b..2a279bf58 100644 --- a/150_gfui/tst/gplx/gfui/GfuiClickKeyMgr_tst.java +++ b/150_gfui/src/gplx/gfui/ipts/GfuiClickKeyMgr_tst.java @@ -15,8 +15,8 @@ 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.gfui; import gplx.*; -import org.junit.*; +package gplx.gfui.ipts; import gplx.*; import gplx.gfui.*; +import org.junit.*; import gplx.gfui.ipts.*; import gplx.gfui.controls.windows.*; public class GfuiClickKeyMgr_tst { @Test public void ExtractKeyFromText() { tst_ExtractKey("&click", IptKey_.C); diff --git a/150_gfui/src_200_ipt/gplx/gfui/IptArg.java b/150_gfui/src/gplx/gfui/ipts/IptArg.java similarity index 95% rename from 150_gfui/src_200_ipt/gplx/gfui/IptArg.java rename to 150_gfui/src/gplx/gfui/ipts/IptArg.java index 72f2bb5c6..1a262a24c 100644 --- a/150_gfui/src_200_ipt/gplx/gfui/IptArg.java +++ b/150_gfui/src/gplx/gfui/ipts/IptArg.java @@ -15,7 +15,7 @@ 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.gfui; import gplx.*; +package gplx.gfui.ipts; import gplx.*; import gplx.gfui.*; import gplx.core.strings.*; public interface IptArg { String Key(); diff --git a/150_gfui/src_200_ipt/gplx/gfui/IptArgChainMgr_tst.java b/150_gfui/src/gplx/gfui/ipts/IptArgChainMgr_tst.java similarity index 95% rename from 150_gfui/src_200_ipt/gplx/gfui/IptArgChainMgr_tst.java rename to 150_gfui/src/gplx/gfui/ipts/IptArgChainMgr_tst.java index e2f508fe1..ca26ee994 100644 --- a/150_gfui/src_200_ipt/gplx/gfui/IptArgChainMgr_tst.java +++ b/150_gfui/src/gplx/gfui/ipts/IptArgChainMgr_tst.java @@ -15,7 +15,7 @@ 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.gfui; import gplx.*; +package gplx.gfui.ipts; import gplx.*; import gplx.gfui.*; import org.junit.*; public class IptArgChainMgr_tst { @Before public void setup() { diff --git a/150_gfui/src_200_ipt/gplx/gfui/IptArg_.java b/150_gfui/src/gplx/gfui/ipts/IptArg_.java similarity index 93% rename from 150_gfui/src_200_ipt/gplx/gfui/IptArg_.java rename to 150_gfui/src/gplx/gfui/ipts/IptArg_.java index 456c6ebbd..d7304f8f0 100644 --- a/150_gfui/src_200_ipt/gplx/gfui/IptArg_.java +++ b/150_gfui/src/gplx/gfui/ipts/IptArg_.java @@ -15,10 +15,10 @@ 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.gfui; import gplx.*; +package gplx.gfui.ipts; import gplx.*; import gplx.gfui.*; public class IptArg_ { - public static final IptArg[] Ary_empty = new IptArg[0]; - public static final IptArg Null = null; + public static final IptArg[] Ary_empty = new IptArg[0]; + public static final IptArg Null = null; public static final String Wildcard_key = "wildcard"; public static IptArg Wildcard = new IptKey(Int_.Max_value, Wildcard_key); public static boolean Is_null_or_none(IptArg arg) {return arg == Null || arg == IptKey_.None;} @@ -114,5 +114,5 @@ class IptMacro { } Ordered_hash regy; static Err parse_err(String raw, String loc) {return Err_.new_("gfui", "could not parse IptArg", "raw", raw, "loc", loc).Trace_ignore_add_1_();} - public static final IptMacro Instance = new IptMacro(); IptMacro() {} + public static final IptMacro Instance = new IptMacro(); IptMacro() {} } diff --git a/150_gfui/tst/gplx/gfui/IptArg_parser_tst.java b/150_gfui/src/gplx/gfui/ipts/IptArg_parser_tst.java similarity index 95% rename from 150_gfui/tst/gplx/gfui/IptArg_parser_tst.java rename to 150_gfui/src/gplx/gfui/ipts/IptArg_parser_tst.java index 5453ebe85..22139f0ba 100644 --- a/150_gfui/tst/gplx/gfui/IptArg_parser_tst.java +++ b/150_gfui/src/gplx/gfui/ipts/IptArg_parser_tst.java @@ -15,8 +15,8 @@ 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.gfui; import gplx.*; -import org.junit.*; +package gplx.gfui.ipts; import gplx.*; import gplx.gfui.*; +import org.junit.*; import gplx.gfui.ipts.*; public class IptArg_parser_tst { @Test public void KeyBasic() { tst_parse_Key_("key.a", IptKey_.A); diff --git a/150_gfui/src_200_ipt/gplx/gfui/IptBnd.java b/150_gfui/src/gplx/gfui/ipts/IptBnd.java similarity index 93% rename from 150_gfui/src_200_ipt/gplx/gfui/IptBnd.java rename to 150_gfui/src/gplx/gfui/ipts/IptBnd.java index 5336be905..0ca5ea0cb 100644 --- a/150_gfui/src_200_ipt/gplx/gfui/IptBnd.java +++ b/150_gfui/src/gplx/gfui/ipts/IptBnd.java @@ -15,7 +15,7 @@ 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.gfui; import gplx.*; +package gplx.gfui.ipts; import gplx.*; import gplx.gfui.*; import gplx.core.interfaces.*; public interface IptBnd extends SrlAble { String Key(); diff --git a/150_gfui/src_200_ipt/gplx/gfui/IptBndMgr.java b/150_gfui/src/gplx/gfui/ipts/IptBndMgr.java similarity index 92% rename from 150_gfui/src_200_ipt/gplx/gfui/IptBndMgr.java rename to 150_gfui/src/gplx/gfui/ipts/IptBndMgr.java index 07ce2ec4c..c4f7d6c03 100644 --- a/150_gfui/src_200_ipt/gplx/gfui/IptBndMgr.java +++ b/150_gfui/src/gplx/gfui/ipts/IptBndMgr.java @@ -15,13 +15,13 @@ 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.gfui; import gplx.*; +package gplx.gfui.ipts; import gplx.*; import gplx.gfui.*; import gplx.core.interfaces.*; public class IptBndMgr implements SrlAble { - @gplx.Internal protected IptEventType EventsToFwd() {return eventsToFwd;} + public IptEventType EventsToFwd() {return eventsToFwd;} public void EventsToFwd_set(IptEventType v) {eventsToFwd = v;} IptEventType eventsToFwd = IptEventType_.KeyDown; public void EventsToFwd_add(IptEventType v) {eventsToFwd = eventsToFwd.Add(v);} - @gplx.Internal protected boolean Has(IptEventType type) {return IptEventType_.Has(curTypes, type);} + public boolean Has(IptEventType type) {return IptEventType_.Has(curTypes, type);} public void Clear() {hash.Clear(); curTypes = IptEventType_.None; ClearLists(); chainMgr.Clear();} public void Add(IptBnd bnd) { for (IptBndHash list : regy) @@ -32,9 +32,9 @@ public class IptBndMgr implements SrlAble { chainMgr.Add(arg); } } - @gplx.Internal protected List_adp Cfgs() {return cfgs;} List_adp cfgs = List_adp_.new_(); - @gplx.Internal protected void Cfgs_delAll() { - List_adp del = List_adp_.new_(); + public List_adp Cfgs() {return cfgs;} List_adp cfgs = List_adp_.New(); + public void Cfgs_delAll() { + List_adp del = List_adp_.New(); for (int i = 0; i < cfgs.Count(); i++) { IptCfgPtr ptr = (IptCfgPtr)cfgs.Get_at(i); IptCfg cfg = IptCfgRegy.Instance.GetOrNew(ptr.CfgKey()); @@ -85,7 +85,7 @@ public class IptBndMgr implements SrlAble { } private void Del_by(boolean del_by_key, String del_key) { int regy_len = regy.length; - List_adp deleted = List_adp_.new_(); + List_adp deleted = List_adp_.New(); for (int i = 0; i < regy_len; i++) { IptBndHash list = regy[i]; int list_len = list.Count(); @@ -126,7 +126,7 @@ public class IptBndMgr implements SrlAble { chainMgr.Del(arg); } } - @gplx.Internal protected boolean Process(IptEventData evData) { + public boolean Process(IptEventData evData) { IptBndHash list = regy[AryIdx(evData.EventType())]; String key = evData.EventArg().Key(); if (!String_.Eq(chainMgr.ActiveKey(), "")) key = chainMgr.ActiveKey() + key; @@ -233,7 +233,7 @@ class IptBndListItm implements SrlAble { ((IptBnd)list.Get_at(i)).Srl(m); return this; } - List_adp list = List_adp_.new_(); + List_adp list = List_adp_.New(); public IptBndListItm(String iptKey) {this.iptKey = iptKey;} } class IptArgChainMgr { @@ -271,7 +271,7 @@ class IptArgChainMgr { IptArg ipt = ary[i]; Hash_adp next = (Hash_adp)cur.Get_by(ipt.Key()); if (next == null) { - next = Hash_adp_.new_(); + next = Hash_adp_.New(); cur.Add(ipt.Key(), next); } Add_recur(next, ary, i + 1); @@ -290,5 +290,5 @@ class IptArgChainMgr { if (cur.Count() == 1) cur.Clear(); } - Hash_adp regy = Hash_adp_.new_(); + Hash_adp regy = Hash_adp_.New(); } diff --git a/150_gfui/src_200_ipt/gplx/gfui/IptBndMgr_tst.java b/150_gfui/src/gplx/gfui/ipts/IptBndMgr_tst.java similarity index 95% rename from 150_gfui/src_200_ipt/gplx/gfui/IptBndMgr_tst.java rename to 150_gfui/src/gplx/gfui/ipts/IptBndMgr_tst.java index 9fd061d60..c6a575ef1 100644 --- a/150_gfui/src_200_ipt/gplx/gfui/IptBndMgr_tst.java +++ b/150_gfui/src/gplx/gfui/ipts/IptBndMgr_tst.java @@ -15,7 +15,7 @@ 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.gfui; import gplx.*; +package gplx.gfui.ipts; import gplx.*; import gplx.gfui.*; import org.junit.*; import gplx.core.strings.*; public class IptBndMgr_tst { @Before public void setup() { @@ -36,7 +36,7 @@ public class IptBndMgr_tst { public IptBndMgr_fx ini_Clear() {under.Clear(); return this;} public IptBndMgr_fx run_Add(String raw) { IptArg[] args = IptArg_.parse_ary_(raw); - List_adp list = List_adp_.new_(); + List_adp list = List_adp_.New(); for (IptArg arg : args) list.Add(arg); diff --git a/150_gfui/src_200_ipt/gplx/gfui/IptBnd_.java b/150_gfui/src/gplx/gfui/ipts/IptBnd_.java similarity index 64% rename from 150_gfui/src_200_ipt/gplx/gfui/IptBnd_.java rename to 150_gfui/src/gplx/gfui/ipts/IptBnd_.java index c72a33302..da6588a94 100644 --- a/150_gfui/src_200_ipt/gplx/gfui/IptBnd_.java +++ b/150_gfui/src/gplx/gfui/ipts/IptBnd_.java @@ -15,19 +15,19 @@ 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.gfui; import gplx.*; +package gplx.gfui.ipts; import gplx.*; import gplx.gfui.*; import gplx.core.strings.*; public class IptBnd_ { - public static void msg_(IptCfg cfg, IptBndsOwner box, String bndKey, GfoMsg m, IptArg... ipt) {bld_(cfg, box, GfoInvkAble_.as_(box), bndKey, m, ipt);} - public static void msg_to_(IptCfg cfg, IptBndsOwner box, GfoInvkAble invk, String bndKey, GfoMsg m, IptArg... ipt) { + public static void msg_(IptCfg cfg, IptBndsOwner box, String bndKey, GfoMsg m, IptArg... ipt) {bld_(cfg, box, (Gfo_invk)box, bndKey, m, ipt);} + public static void msg_to_(IptCfg cfg, IptBndsOwner box, Gfo_invk invk, String bndKey, GfoMsg m, IptArg... ipt) { bld_(cfg, box, invk, bndKey, m, ipt); } - public static void cmd_(IptCfg cfg, IptBndsOwner box, String key, IptArg... ipt) {bld_(cfg, box, GfoInvkAble_.as_(box), key, GfoMsg_.new_cast_(key), ipt);} - public static void cmd_to_(IptCfg cfg, IptBndsOwner box, GfoInvkAble invk, String key, IptArg... ipt) {bld_(cfg, box, invk, key, GfoMsg_.new_cast_(key), ipt);} - public static void ipt_to_(IptCfg cfg, IptBndsOwner box, GfoInvkAble invk, String key, IptEventType eventType, IptArg... ipt) {bld_(cfg, box, invk, key, GfoMsg_.new_cast_(key), eventType, ipt);} + public static void cmd_(IptCfg cfg, IptBndsOwner box, String key, IptArg... ipt) {bld_(cfg, box, (Gfo_invk)box, key, GfoMsg_.new_cast_(key), ipt);} + public static void cmd_to_(IptCfg cfg, IptBndsOwner box, Gfo_invk invk, String key, IptArg... ipt) {bld_(cfg, box, invk, key, GfoMsg_.new_cast_(key), ipt);} + public static void ipt_to_(IptCfg cfg, IptBndsOwner box, Gfo_invk invk, String key, IptEventType eventType, IptArg... ipt) {bld_(cfg, box, invk, key, GfoMsg_.new_cast_(key), eventType, ipt);} - static void bld_(IptCfg cfg, IptBndsOwner box, GfoInvkAble invk, String bndKey, GfoMsg m, IptArg... ipt) {bld_(cfg, box, invk, bndKey, m, IptEventType_.default_(ipt), ipt);} - static void bld_(IptCfg cfg, IptBndsOwner box, GfoInvkAble invk, String bnd_key, GfoMsg m, IptEventType ev_type, IptArg... ipt) { + static void bld_(IptCfg cfg, IptBndsOwner box, Gfo_invk invk, String bndKey, GfoMsg m, IptArg... ipt) {bld_(cfg, box, invk, bndKey, m, IptEventType_.default_(ipt), ipt);} + static void bld_(IptCfg cfg, IptBndsOwner box, Gfo_invk invk, String bnd_key, GfoMsg m, IptEventType ev_type, IptArg... ipt) { IptCfgItm itm = cfg.GetOrDefaultArgs(bnd_key, m, ipt); IptBnd bnd = IptBnd_invk.new_(box, invk, itm, ev_type); cfg.Owners_add(bnd_key, box); @@ -51,9 +51,9 @@ class IptBnd_invk implements IptBnd { GfsCtx ctx = GfsCtx.new_().MsgSrc_(owner); invk.Invk(ctx, 0, m.Key(), newMsg); iptData.Handled_on(); // NOTE: treat invk as SingleDispatch - } IptBndsOwner owner; GfoInvkAble invk; IptCfgItm itm; GfoMsg m; + } IptBndsOwner owner; Gfo_invk invk; IptCfgItm itm; GfoMsg m; public Object Srl(GfoMsg owner) {return IptBnd_.Srl(owner, this);} - public static IptBnd_invk new_(IptBndsOwner owner, GfoInvkAble invk, IptCfgItm itm, IptEventType evType) { + public static IptBnd_invk new_(IptBndsOwner owner, Gfo_invk invk, IptCfgItm itm, IptEventType evType) { IptBnd_invk rv = new IptBnd_invk(); rv.owner = owner; rv.invk = invk; rv.itm = itm; rv.key = itm.Key(); rv.ipts = itm.Ipt(); rv.m = itm.Msg(); rv.eventTypes = evType; diff --git a/150_gfui/src_200_ipt/gplx/gfui/IptBnd_chkBox.java b/150_gfui/src/gplx/gfui/ipts/IptBnd_chkBox.java similarity index 56% rename from 150_gfui/src_200_ipt/gplx/gfui/IptBnd_chkBox.java rename to 150_gfui/src/gplx/gfui/ipts/IptBnd_chkBox.java index eb8a67e31..e8ab97c46 100644 --- a/150_gfui/src_200_ipt/gplx/gfui/IptBnd_chkBox.java +++ b/150_gfui/src/gplx/gfui/ipts/IptBnd_chkBox.java @@ -15,29 +15,29 @@ 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.gfui; import gplx.*; -import gplx.core.interfaces.*; -public class IptBnd_chkBox implements InjectAble, GfoEvObj { - public GfoEvMgr EvMgr() {if (evMgr == null) evMgr = GfoEvMgr.new_(this); return evMgr;} GfoEvMgr evMgr; +package gplx.gfui.ipts; import gplx.*; import gplx.gfui.*; +import gplx.core.interfaces.*; import gplx.gfui.controls.standards.*; +public class IptBnd_chkBox implements InjectAble, Gfo_evt_itm { + public Gfo_evt_mgr Evt_mgr() {if (evt_mgr == null) evt_mgr = new Gfo_evt_mgr(this); return evt_mgr;} Gfo_evt_mgr evt_mgr; public void Inject(Object owner) { chkBox = GfuiChkBox_.cast(owner); - GfoEvMgr_.Sub(chkBox, "Check_end", this, setCmd); - GfoEvMgr_.SubSame(fwd, setEvt, this); + Gfo_evt_mgr_.Sub(chkBox, "Check_end", this, setCmd); + Gfo_evt_mgr_.Sub_same(fwd, setEvt, this); } public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, setCmd)) - GfoInvkAble_.InvkCmd_val(invkAble, setCmd, chkBox.Val()); + Gfo_invk_.Invk_by_val(invkAble, setCmd, chkBox.Val()); else if (ctx.Match(k, setEvt)) { boolean v = m.ReadBool(msgArg); chkBox.Val_sync(v); } - else return GfoInvkAble_.Rv_unhandled; - return GfoInvkAble_.Rv_handled; + else return Gfo_invk_.Rv_unhandled; + return Gfo_invk_.Rv_handled; } - GfoEvObj fwd; GfoInvkAble invkAble; String setCmd, setEvt, msgArg; GfuiChkBox chkBox; - public static IptBnd_chkBox new_(GfoEvObj src, String setCmd, String setEvt, String msgArg) { + Gfo_evt_itm fwd; Gfo_invk invkAble; String setCmd, setEvt, msgArg; GfuiChkBox chkBox; + public static IptBnd_chkBox new_(Gfo_evt_itm src, String setCmd, String setEvt, String msgArg) { IptBnd_chkBox rv = new IptBnd_chkBox(); - rv.fwd = src; rv.invkAble = GfoInvkAble_.cast(src); rv.setCmd = setCmd; rv.setEvt = setEvt; rv.msgArg = msgArg; + rv.fwd = src; rv.invkAble = (Gfo_invk)src; rv.setCmd = setCmd; rv.setEvt = setEvt; rv.msgArg = msgArg; return rv; } } diff --git a/150_gfui/src_200_ipt/gplx/gfui/IptBnd_txt_cmd.java b/150_gfui/src/gplx/gfui/ipts/IptBnd_txt_cmd.java similarity index 61% rename from 150_gfui/src_200_ipt/gplx/gfui/IptBnd_txt_cmd.java rename to 150_gfui/src/gplx/gfui/ipts/IptBnd_txt_cmd.java index 135896e6c..65167b6b4 100644 --- a/150_gfui/src_200_ipt/gplx/gfui/IptBnd_txt_cmd.java +++ b/150_gfui/src/gplx/gfui/ipts/IptBnd_txt_cmd.java @@ -15,29 +15,30 @@ 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.gfui; import gplx.*; +package gplx.gfui.ipts; import gplx.*; import gplx.gfui.*; import gplx.core.type_xtns.*; import gplx.core.interfaces.*; -public class IptBnd_txt_cmd implements InjectAble, GfoInvkAble, GfoEvObj { - public GfoEvMgr EvMgr() {if (evMgr == null) evMgr = GfoEvMgr.new_(this); return evMgr;} GfoEvMgr evMgr; +import gplx.gfui.controls.standards.*; +public class IptBnd_txt_cmd implements InjectAble, Gfo_invk, Gfo_evt_itm { + public Gfo_evt_mgr Evt_mgr() {if (evt_mgr == null) evt_mgr = new Gfo_evt_mgr(this); return evt_mgr;} Gfo_evt_mgr evt_mgr; public void Inject(Object owner) { txtBox = GfuiTextBox_.cast(owner); txtBox.TextAlignH_center_(); IptBnd_.cmd_to_(IptCfg_.Null, txtBox, this, TxtBox_exec, IptKey_.Enter); - GfoEvMgr_.SubSame(fwd, setEvt, this); + Gfo_evt_mgr_.Sub_same(fwd, setEvt, this); } public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { - if (ctx.Match(k, TxtBox_exec)) GfoInvkAble_.InvkCmd_val(src, setCmd, cls.ParseOrNull(txtBox.Text())); + if (ctx.Match(k, TxtBox_exec)) Gfo_invk_.Invk_by_val(src, setCmd, cls.ParseOrNull(txtBox.Text())); else if (ctx.Match(k, setEvt)) { int v = m.ReadInt("v"); txtBox.Text_(cls.XtoUi(v, ClassXtnPool.Format_null)); } - else return GfoInvkAble_.Rv_unhandled; - return GfoInvkAble_.Rv_handled; - } static final String TxtBox_exec = "TxtBox_exec"; - GfuiTextBox txtBox; GfoInvkAble src; GfoEvObj fwd; String setCmd, setEvt; ClassXtn cls; - public static IptBnd_txt_cmd new_(GfoEvObj fwd, String setCmd, String setEvt, ClassXtn cls) { + else return Gfo_invk_.Rv_unhandled; + return Gfo_invk_.Rv_handled; + } static final String TxtBox_exec = "TxtBox_exec"; + GfuiTextBox txtBox; Gfo_invk src; Gfo_evt_itm fwd; String setCmd, setEvt; ClassXtn cls; + public static IptBnd_txt_cmd new_(Gfo_evt_itm fwd, String setCmd, String setEvt, ClassXtn cls) { IptBnd_txt_cmd rv = new IptBnd_txt_cmd(); - rv.fwd = fwd; rv.src = GfoInvkAble_.cast(fwd); + rv.fwd = fwd; rv.src = (Gfo_invk)fwd; rv.setCmd = setCmd; rv.setEvt = setEvt; rv.cls = cls; return rv; } diff --git a/150_gfui/src_200_ipt/gplx/gfui/IptBnd_txt_range.java b/150_gfui/src/gplx/gfui/ipts/IptBnd_txt_range.java similarity index 70% rename from 150_gfui/src_200_ipt/gplx/gfui/IptBnd_txt_range.java rename to 150_gfui/src/gplx/gfui/ipts/IptBnd_txt_range.java index 1416cbfbf..509be2c50 100644 --- a/150_gfui/src_200_ipt/gplx/gfui/IptBnd_txt_range.java +++ b/150_gfui/src/gplx/gfui/ipts/IptBnd_txt_range.java @@ -15,11 +15,12 @@ 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.gfui; import gplx.*; +package gplx.gfui.ipts; import gplx.*; import gplx.gfui.*; import gplx.core.interfaces.*; -public class IptBnd_txt_range implements InjectAble, GfoInvkAble, GfoEvObj { - public GfoEvMgr EvMgr() {if (evMgr == null) evMgr = GfoEvMgr.new_(this); return evMgr;} GfoEvMgr evMgr; - public IptBnd_txt_range InitSrc_(GfoEvObj initSrc) {this.initSrc = initSrc; return this;} +import gplx.gfui.controls.standards.*; +public class IptBnd_txt_range implements InjectAble, Gfo_invk, Gfo_evt_itm { + public Gfo_evt_mgr Evt_mgr() {if (evt_mgr == null) evt_mgr = new Gfo_evt_mgr(this); return evt_mgr;} Gfo_evt_mgr evt_mgr; + public IptBnd_txt_range InitSrc_(Gfo_evt_itm initSrc) {this.initSrc = initSrc; return this;} public IptBnd_txt_range InitEvt_(String initEvt) {this.initEvt = initEvt; return this;} String initEvt; public IptBnd_txt_range PropSrc_(String getListCmd, String getCmd, String setCmd, String setEvt) { this.getListCmd = getListCmd; this.getCmd = getCmd; this.setCmd = setCmd; this.setEvt = setEvt; @@ -35,18 +36,18 @@ public class IptBnd_txt_range implements InjectAble, GfoInvkAble, GfoEvObj { IptBnd_.cmd_to_(IptCfg_.Null, txtBox, this, Invk_dec, IptKey_.Down, IptMouseWheel_.Down); IptBnd_.cmd_to_(IptCfg_.Null, txtBox, this, Invk_inc, IptKey_.Up, IptMouseWheel_.Up); IptBnd_.cmd_to_(IptCfg_.Null, txtBox, this, Invk_upd, IptKey_.Enter, IptMouseBtn_.Middle); - GfoEvMgr_.SubSame(initSrc, initEvt, this); - GfoEvMgr_.SubSame(propSrc, setEvt, this); - } GfuiTextBox txtBox; int previewIdx; GfoEvObj propSrc, initSrc; GfoInvkAble propInvk; + Gfo_evt_mgr_.Sub_same(initSrc, initEvt, this); + Gfo_evt_mgr_.Sub_same(propSrc, setEvt, this); + } GfuiTextBox txtBox; int previewIdx; Gfo_evt_itm propSrc, initSrc; Gfo_invk propInvk; public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.MatchPriv(k, Invk_dec)) PreviewCmd(-1); else if (ctx.MatchPriv(k, Invk_inc)) PreviewCmd( 1); else if (ctx.MatchPriv(k, Invk_upd)) return UpdateCmd(); else if (ctx.MatchPriv(k, setEvt)) WhenEvtCmd(m.CastObj("v")); else if (ctx.MatchPriv(k, initEvt)) ReadyEvtCmd(); - else return GfoInvkAble_.Rv_unhandled; - return GfoInvkAble_.Rv_handled; - } static final String Invk_dec = "txtBox_dec", Invk_inc = "txtBox_inc", Invk_upd = "txtBox_exec"; + else return Gfo_invk_.Rv_unhandled; + return Gfo_invk_.Rv_handled; + } static final String Invk_dec = "txtBox_dec", Invk_inc = "txtBox_inc", Invk_upd = "txtBox_exec"; void PreviewCmd(int delta) { int newVal = previewIdx + delta; if (!Int_.RangeCheck(newVal, list.length)) return; @@ -59,16 +60,16 @@ public class IptBnd_txt_range implements InjectAble, GfoInvkAble, GfoEvObj { if (String_.Eq(find, (String)list[i].Val())) idx = i; } if (idx == Int_.Min_value) { // try to find .Text in list.Keys - int key = Int_.parse_or(txtBox.Text(), Int_.Min_value); if (key == Int_.Min_value) return GfoInvkAble_.Rv_unhandled; - idx = GetByKey(key); if (idx == Int_.Min_value) return GfoInvkAble_.Rv_unhandled; + int key = Int_.parse_or(txtBox.Text(), Int_.Min_value); if (key == Int_.Min_value) return Gfo_invk_.Rv_unhandled; + idx = GetByKey(key); if (idx == Int_.Min_value) return Gfo_invk_.Rv_unhandled; } ExecCmd(setCmd, idx); - return GfoInvkAble_.Rv_handled; + return Gfo_invk_.Rv_handled; } void ReadyEvtCmd() { if (getListCmd != null) - list = (Keyval[])GfoInvkAble_.InvkCmd(propInvk, getListCmd); - Object curId = GfoInvkAble_.InvkCmd(propInvk, getCmd); + list = (Keyval[])Gfo_invk_.Invk_by_key(propInvk, getListCmd); + Object curId = Gfo_invk_.Invk_by_key(propInvk, getCmd); WhenEvtCmd(curId); } void WhenEvtCmd(Object id) { @@ -78,7 +79,7 @@ public class IptBnd_txt_range implements InjectAble, GfoInvkAble, GfoEvObj { } void ExecCmd(String c, int idx) { if (!Int_.RangeCheck(idx, list.length)) return; - GfoInvkAble_.InvkCmd_val(propInvk, setCmd, list[idx].Key_as_obj()); + Gfo_invk_.Invk_by_val(propInvk, setCmd, list[idx].Key_as_obj()); } int GetByKey(Object find) { if (list == null) ReadyEvtCmd(); @@ -87,11 +88,10 @@ public class IptBnd_txt_range implements InjectAble, GfoInvkAble, GfoEvObj { } return Int_.Min_value; } - public static IptBnd_txt_range new_(GfoEvObj propSrc) { + public static IptBnd_txt_range new_(Gfo_evt_itm propSrc) { IptBnd_txt_range rv = new IptBnd_txt_range(); - rv.propSrc = propSrc; rv.propInvk = GfoInvkAble_.as_(propSrc); + rv.propSrc = propSrc; rv.propInvk = (Gfo_invk)propSrc; rv.initSrc = propSrc; return rv; } IptBnd_txt_range() {} -// public static IptBnd_txt_range new_() {return new IptBnd_txt_range();} } diff --git a/150_gfui/src_200_ipt/gplx/gfui/IptBnd_upDownRange.java b/150_gfui/src/gplx/gfui/ipts/IptBnd_upDownRange.java similarity index 69% rename from 150_gfui/src_200_ipt/gplx/gfui/IptBnd_upDownRange.java rename to 150_gfui/src/gplx/gfui/ipts/IptBnd_upDownRange.java index e663e83c7..2e47de0f1 100644 --- a/150_gfui/src_200_ipt/gplx/gfui/IptBnd_upDownRange.java +++ b/150_gfui/src/gplx/gfui/ipts/IptBnd_upDownRange.java @@ -15,10 +15,11 @@ 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.gfui; import gplx.*; +package gplx.gfui.ipts; import gplx.*; import gplx.gfui.*; import gplx.core.type_xtns.*; import gplx.core.interfaces.*; -public class IptBnd_upDownRange implements InjectAble, GfoInvkAble, GfoEvObj { - public GfoEvMgr EvMgr() {if (evMgr == null) evMgr = GfoEvMgr.new_(this); return evMgr;} GfoEvMgr evMgr; +import gplx.gfui.controls.standards.*; +public class IptBnd_upDownRange implements InjectAble, Gfo_invk, Gfo_evt_itm { + public Gfo_evt_mgr Evt_mgr() {if (evt_mgr == null) evt_mgr = new Gfo_evt_mgr(this); return evt_mgr;} Gfo_evt_mgr evt_mgr; public void Inject(Object owner) { txtBox = GfuiTextBox_.cast(owner); txtBox.TextAlignH_center_(); @@ -26,7 +27,7 @@ public class IptBnd_upDownRange implements InjectAble, GfoInvkAble, GfoEvObj { IptBnd_.cmd_to_(bndCfg, txtBox, this, Invk_TxtBox_dec, IptKey_.Down, IptMouseWheel_.Down); IptBnd_.cmd_to_(bndCfg, txtBox, this, Invk_TxtBox_inc, IptKey_.Up, IptMouseWheel_.Up); IptBnd_.cmd_to_(bndCfg, txtBox, this, Invk_TxtBox_exec, IptKey_.Enter, IptMouseBtn_.Middle); - GfoEvMgr_.SubSame(fwd, evt, this); + Gfo_evt_mgr_.Sub_same(fwd, evt, this); } static IptCfg bndCfg; public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_TxtBox_dec)) ExecCmd(cmd, curVal - 1); @@ -36,23 +37,23 @@ public class IptBnd_upDownRange implements InjectAble, GfoInvkAble, GfoEvObj { ExecCmd(doIt, Int_.cast(valObj)); } else if (ctx.Match(k, evt)) WhenEvt(ctx, m); - else return GfoInvkAble_.Rv_unhandled; - return GfoInvkAble_.Rv_handled; - } static final String Invk_TxtBox_dec = "txtBox_dec", Invk_TxtBox_inc = "txtBox_inc", Invk_TxtBox_exec = "txtBox_exec"; + else return Gfo_invk_.Rv_unhandled; + return Gfo_invk_.Rv_handled; + } static final String Invk_TxtBox_dec = "txtBox_dec", Invk_TxtBox_inc = "txtBox_inc", Invk_TxtBox_exec = "txtBox_exec"; public int Adj() {return adj;} public IptBnd_upDownRange Adj_(int v) {adj = v; return this;} int adj; void WhenEvt(GfsCtx ctx, GfoMsg m) { curVal = m.ReadInt(arg) + adj; txtBox.Text_(Int_.To_str(curVal)); } void ExecCmd(String c, int val) { - GfoInvkAble_.InvkCmd_val(src, c, val - adj); + Gfo_invk_.Invk_by_val(src, c, val - adj); } int curVal; - GfuiTextBox txtBox; GfoInvkAble src; GfoEvObj fwd; String cmd, evt, doIt, arg; - public static IptBnd_upDownRange new_(GfoEvObj fwd, String cmd, String evt, String arg) {return exec_(fwd, cmd, evt, cmd, arg);} - public static IptBnd_upDownRange exec_(GfoEvObj fwd, String cmd, String evt, String doIt, String arg) { + GfuiTextBox txtBox; Gfo_invk src; Gfo_evt_itm fwd; String cmd, evt, doIt, arg; + public static IptBnd_upDownRange new_(Gfo_evt_itm fwd, String cmd, String evt, String arg) {return exec_(fwd, cmd, evt, cmd, arg);} + public static IptBnd_upDownRange exec_(Gfo_evt_itm fwd, String cmd, String evt, String doIt, String arg) { IptBnd_upDownRange rv = new IptBnd_upDownRange(); - rv.fwd = fwd; rv.src = GfoInvkAble_.cast(fwd); + rv.fwd = fwd; rv.src = (Gfo_invk)fwd; rv.cmd = cmd; rv.evt = evt; rv.doIt = doIt; rv.arg = arg; return rv; } diff --git a/150_gfui/src_200_ipt/gplx/gfui/IptBndsOwner.java b/150_gfui/src/gplx/gfui/ipts/IptBndsOwner.java similarity index 86% rename from 150_gfui/src_200_ipt/gplx/gfui/IptBndsOwner.java rename to 150_gfui/src/gplx/gfui/ipts/IptBndsOwner.java index 6e5643eba..04c24eb4e 100644 --- a/150_gfui/src_200_ipt/gplx/gfui/IptBndsOwner.java +++ b/150_gfui/src/gplx/gfui/ipts/IptBndsOwner.java @@ -15,7 +15,7 @@ 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.gfui; import gplx.*; -public interface IptBndsOwner extends GfoEvObj { +package gplx.gfui.ipts; import gplx.*; import gplx.gfui.*; +public interface IptBndsOwner extends Gfo_evt_itm { IptBndMgr IptBnds(); } diff --git a/150_gfui/src_200_ipt/gplx/gfui/IptCfg.java b/150_gfui/src/gplx/gfui/ipts/IptCfg.java similarity index 85% rename from 150_gfui/src_200_ipt/gplx/gfui/IptCfg.java rename to 150_gfui/src/gplx/gfui/ipts/IptCfg.java index 7e61861c0..46935f240 100644 --- a/150_gfui/src_200_ipt/gplx/gfui/IptCfg.java +++ b/150_gfui/src/gplx/gfui/ipts/IptCfg.java @@ -15,8 +15,8 @@ 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.gfui; import gplx.*; -public interface IptCfg extends GfoInvkAble { +package gplx.gfui.ipts; import gplx.*; import gplx.gfui.*; +public interface IptCfg extends Gfo_invk { String CfgKey(); Object NewByKey(Object o); IptCfgItm GetOrDefaultArgs(String key, GfoMsg m, IptArg[] argAry); @@ -28,7 +28,7 @@ class IptCfg_base implements IptCfg { public IptCfgItm GetOrDefaultArgs(String bndKey, GfoMsg defaultMsg, IptArg[] defaultArgs) { IptCfgItm rv = (IptCfgItm)hash.Get_by(bndKey); if (rv == null) { // no cfg - rv = IptCfgItm.new_().Key_(bndKey).Ipt_(List_adp_.many_((Object[])defaultArgs)).Msg_(defaultMsg); + rv = IptCfgItm.new_().Key_(bndKey).Ipt_(List_adp_.New_by_many((Object[])defaultArgs)).Msg_(defaultMsg); hash.Add(bndKey, rv); } else { // cfg exists @@ -40,7 +40,7 @@ class IptCfg_base implements IptCfg { IptCfgItm rv = GetOrDefaultArgs(bndKey, m, argAry); rv.Msg_(m); // always overwrite msg if (Dif(rv.Ipt(), argAry)) { - rv.Ipt_(List_adp_.many_((Object[])argAry)); + rv.Ipt_(List_adp_.New_by_many((Object[])argAry)); this.Change(bndKey, argAry); } return rv; @@ -66,7 +66,7 @@ class IptCfg_base implements IptCfg { public void Owners_add(String bndKey, IptBndsOwner owner) { List_adp list = (List_adp)owners.Get_by(bndKey); if (list == null) { - list = List_adp_.new_(); + list = List_adp_.New(); owners.Add(bndKey, list); } list.Add(owner); @@ -81,10 +81,10 @@ class IptCfg_base implements IptCfg { Set(bndKey, gplx.gfml.GfmlDataNde.XtoMsgNoRoot(cmd), IptArg_.parse_ary_(iptStr)); } return this; - } public static final String Invk_Add = "Add", Invk_set = "set"; + } public static final String Invk_Add = "Add", Invk_set = "set"; public IptCfg_base(String cfgKey) {this.cfgKey = cfgKey;} Ordered_hash hash = Ordered_hash_.New(); - public Object NewByKey(Object o) {return new IptCfg_base((String)o);} @gplx.Internal protected static final IptCfg HashProto = new IptCfg_base(); @gplx.Internal protected IptCfg_base() {} + public Object NewByKey(Object o) {return new IptCfg_base((String)o);} @gplx.Internal protected static final IptCfg HashProto = new IptCfg_base(); @gplx.Internal protected IptCfg_base() {} } class IptCfgPtr { public String CfgKey() {return cfgKey;} private String cfgKey; diff --git a/150_gfui/src_200_ipt/gplx/gfui/IptCfgItm.java b/150_gfui/src/gplx/gfui/ipts/IptCfgItm.java similarity index 94% rename from 150_gfui/src_200_ipt/gplx/gfui/IptCfgItm.java rename to 150_gfui/src/gplx/gfui/ipts/IptCfgItm.java index 4cf80cc4a..e5eb5a357 100644 --- a/150_gfui/src_200_ipt/gplx/gfui/IptCfgItm.java +++ b/150_gfui/src/gplx/gfui/ipts/IptCfgItm.java @@ -15,7 +15,7 @@ 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.gfui; import gplx.*; +package gplx.gfui.ipts; import gplx.*; import gplx.gfui.*; public class IptCfgItm { public String Key() {return key;} public IptCfgItm Key_(String v) {key = v; return this;} private String key; public List_adp Ipt() {return ipt;} public IptCfgItm Ipt_(List_adp v) {ipt = v; return this;} List_adp ipt; diff --git a/150_gfui/src_200_ipt/gplx/gfui/IptCfgRegy.java b/150_gfui/src/gplx/gfui/ipts/IptCfgRegy.java similarity index 82% rename from 150_gfui/src_200_ipt/gplx/gfui/IptCfgRegy.java rename to 150_gfui/src/gplx/gfui/ipts/IptCfgRegy.java index 24971b847..7967f93e1 100644 --- a/150_gfui/src_200_ipt/gplx/gfui/IptCfgRegy.java +++ b/150_gfui/src/gplx/gfui/ipts/IptCfgRegy.java @@ -15,8 +15,8 @@ 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.gfui; import gplx.*; -public class IptCfgRegy implements GfoInvkAble { +package gplx.gfui.ipts; import gplx.*; import gplx.gfui.*; +public class IptCfgRegy implements Gfo_invk { public void Clear() {hash.Clear();} public IptCfg GetOrNew(String k) { IptCfg rv = (IptCfg)hash.Get_by(k); @@ -33,8 +33,8 @@ public class IptCfgRegy implements GfoInvkAble { return GetOrNew(key); } return this; - } public static final String Invk_Get = "Get", Invk_get = "get"; + } public static final String Invk_Get = "Get", Invk_get = "get"; Ordered_hash hash = Ordered_hash_.New(); - public static final IptCfgRegy Instance = new IptCfgRegy(); + public static final IptCfgRegy Instance = new IptCfgRegy(); public IptCfgRegy() {} } diff --git a/150_gfui/src_200_ipt/gplx/gfui/IptCfg_.java b/150_gfui/src/gplx/gfui/ipts/IptCfg_.java similarity index 81% rename from 150_gfui/src_200_ipt/gplx/gfui/IptCfg_.java rename to 150_gfui/src/gplx/gfui/ipts/IptCfg_.java index 6b1d98847..d3811f95c 100644 --- a/150_gfui/src_200_ipt/gplx/gfui/IptCfg_.java +++ b/150_gfui/src/gplx/gfui/ipts/IptCfg_.java @@ -15,17 +15,17 @@ 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.gfui; import gplx.*; +package gplx.gfui.ipts; import gplx.*; import gplx.gfui.*; public class IptCfg_ { - public static final IptCfg Null = IptCfg_null.Instance; + public static final IptCfg Null = IptCfg_null.Instance; public static IptCfg new_(String key) {return IptCfgRegy.Instance.GetOrNew(key);} } class IptCfg_null implements IptCfg { public String CfgKey() {return "<>";} - public IptCfgItm GetOrDefaultArgs(String bndKey, GfoMsg m, IptArg[] argAry) {return IptCfgItm.new_().Key_(bndKey).Ipt_(List_adp_.many_((Object[])argAry)).Msg_(m);} + public IptCfgItm GetOrDefaultArgs(String bndKey, GfoMsg m, IptArg[] argAry) {return IptCfgItm.new_().Key_(bndKey).Ipt_(List_adp_.New_by_many((Object[])argAry)).Msg_(m);} public void Owners_add(String key, IptBndsOwner owner) {} public void Owners_del(String key) {} public Object NewByKey(Object o) {return this;} - public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {return GfoInvkAble_.Rv_unhandled;} - public static final IptCfg_null Instance = new IptCfg_null(); IptCfg_null() {} + public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {return Gfo_invk_.Rv_unhandled;} + public static final IptCfg_null Instance = new IptCfg_null(); IptCfg_null() {} } diff --git a/150_gfui/src_200_ipt/gplx/gfui/IptCfg_tst.java b/150_gfui/src/gplx/gfui/ipts/IptCfg_tst.java similarity index 90% rename from 150_gfui/src_200_ipt/gplx/gfui/IptCfg_tst.java rename to 150_gfui/src/gplx/gfui/ipts/IptCfg_tst.java index d88555388..782e45ca2 100644 --- a/150_gfui/src_200_ipt/gplx/gfui/IptCfg_tst.java +++ b/150_gfui/src/gplx/gfui/ipts/IptCfg_tst.java @@ -15,7 +15,7 @@ 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.gfui; import gplx.*; +package gplx.gfui.ipts; import gplx.*; import gplx.gfui.*; import org.junit.*; public class IptCfg_tst { @Before public void setup() { @@ -69,7 +69,7 @@ public class IptCfg_tst { } class IptBndsOwner_mok implements IptBndsOwner { public IptBndMgr IptBnds() {return iptBnds;} IptBndMgr iptBnds = IptBndMgr.new_(); - public GfoEvMgr EvMgr() {if (evMgr == null) evMgr = GfoEvMgr.new_(this); return evMgr;} GfoEvMgr evMgr; + public Gfo_evt_mgr Evt_mgr() {if (evt_mgr == null) evt_mgr = new Gfo_evt_mgr(this); return evt_mgr;} Gfo_evt_mgr evt_mgr; public void tst_SendKey(IptKey key, int expd) { iptBnds.Process(IptEventData.new_(null, IptEventType_.KeyDown, key, IptEvtDataKey.new_(key), IptEvtDataMouse.Null)); Tfds.Eq(expd, actl); @@ -77,8 +77,8 @@ public class IptCfg_tst { } int actl; public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_Reg)) {actl = m.ReadIntOr("val", 0);} - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; - } public static final String Invk_Reg = "Reg"; + } public static final String Invk_Reg = "Reg"; } } diff --git a/150_gfui/src_200_ipt/gplx/gfui/IptEventData.java b/150_gfui/src/gplx/gfui/ipts/IptEventData.java similarity index 95% rename from 150_gfui/src_200_ipt/gplx/gfui/IptEventData.java rename to 150_gfui/src/gplx/gfui/ipts/IptEventData.java index e68f7eb7b..913a96ff7 100644 --- a/150_gfui/src_200_ipt/gplx/gfui/IptEventData.java +++ b/150_gfui/src/gplx/gfui/ipts/IptEventData.java @@ -15,7 +15,8 @@ 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.gfui; import gplx.*; +package gplx.gfui.ipts; import gplx.*; import gplx.gfui.*; +import gplx.gfui.controls.elems.*; public class IptEventData { public GfuiElem Sender() {return sender;} GfuiElem sender; public IptArg EventArg() {return eventArg;} IptArg eventArg; diff --git a/150_gfui/src_200_ipt/gplx/gfui/IptEventMgr.java b/150_gfui/src/gplx/gfui/ipts/IptEventMgr.java similarity index 78% rename from 150_gfui/src_200_ipt/gplx/gfui/IptEventMgr.java rename to 150_gfui/src/gplx/gfui/ipts/IptEventMgr.java index 5c6b04a45..e558500e6 100644 --- a/150_gfui/src_200_ipt/gplx/gfui/IptEventMgr.java +++ b/150_gfui/src/gplx/gfui/ipts/IptEventMgr.java @@ -15,9 +15,10 @@ 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.gfui; import gplx.*; -class IptEventMgr implements GfoInvkAble { - @gplx.Internal protected static void ExecKeyDown(GfuiElem sender, IptEvtDataKey keyState) { +package gplx.gfui.ipts; import gplx.*; import gplx.gfui.*; +import gplx.gfui.envs.*; import gplx.gfui.controls.elems.*; +public class IptEventMgr implements Gfo_invk { + public static void ExecKeyDown(GfuiElem sender, IptEvtDataKey keyState) { keyHandled = false; keyStateCur = keyState; // cache for simultaneous ipt events (ex: key.ctrl + mouse.left) IptEventData iptData = IptEventData.new_(sender, IptEventType_.KeyDown, keyState.Key(), keyState, mouseStateCur); // if (keyState.Key().Eq(IptKey_.add_(IptKey_.F1))) { @@ -27,21 +28,21 @@ class IptEventMgr implements GfoInvkAble { SendData(iptData); keyHandled = keyState.Handled(); // WORKAROUND (WinForms): cache keyHandled b/c KeyDown.Handled=true does not make KeyPress.Handled=true; } - @gplx.Internal protected static void ExecKeyPress(GfuiElem sender, IptEvtDataKeyHeld keyPressState) { + public static void ExecKeyPress(GfuiElem sender, IptEvtDataKeyHeld keyPressState) { // Tfds.Write(keyPressState.KeyChar()); if (keyHandled) {keyPressState.Handled_set(true); return;} IptEventData iptData = IptEventData.new_(sender, IptEventType_.KeyPress, IptKeyStrMgr.Instance.FetchByKeyPress((int)(byte)keyPressState.KeyChar()), keyStateCur, keyPressState, mouseStateCur); sender.IptBnds().Process(iptData); SendData(iptData); } - @gplx.Internal protected static void ExecKeyUp(GfuiElem sender, IptEvtDataKey keyState) { + public static void ExecKeyUp(GfuiElem sender, IptEvtDataKey keyState) { keyStateCur = IptEvtDataKey.Null; // keyStateCur no longer needed; set to Null if (keyHandled) {keyState.Handled_set(true); return;} IptEventData iptData = IptEventData.new_(sender, IptEventType_.KeyUp, keyState.Key(), keyState, mouseStateCur); sender.IptBnds().Process(iptData); SendData(iptData); } - @gplx.Internal protected static void ExecMouseDown(GfuiElem sender, IptEvtDataMouse mouseState) { + public static void ExecMouseDown(GfuiElem sender, IptEvtDataMouse mouseState) { mouseStateCur = mouseState; // cache for simultaneous ipt events (ex: key.ctrl + mouse.left) if (sender.IptBnds().Has(IptEventType_.MousePress)) { if (mousePressTimer == null) mousePressTimer = TimerAdp.new_(EventSink2, Tmr_cmd, 100, false); @@ -51,12 +52,12 @@ class IptEventMgr implements GfoInvkAble { sender.IptBnds().Process(iptData); SendData(iptData); } - @gplx.Internal protected static void ExecMouseMove(GfuiElem sender, IptEvtDataMouse mouseState) { + public static void ExecMouseMove(GfuiElem sender, IptEvtDataMouse mouseState) { IptEventData iptData = IptEventData.new_(sender, IptEventType_.MouseMove, IptMouseMove.AnyDirection, keyStateCur, mouseState); sender.IptBnds().Process(iptData); // SendData(iptData); // TOMBSTONE: do not send mouseMove events for PERF and DESIGN reasons } - @gplx.Internal protected static void ExecMouseUp(GfuiElem sender, IptEvtDataMouse mouseState) { + public static void ExecMouseUp(GfuiElem sender, IptEvtDataMouse mouseState) { mouseStateCur = IptEvtDataMouse.Null; // mouseStateCur no longer needed; set to Null if (mousePressTimer != null) mousePressTimer.Enabled_off(); @@ -64,12 +65,12 @@ class IptEventMgr implements GfoInvkAble { sender.IptBnds().Process(iptData); SendData(iptData); } - @gplx.Internal protected static void ExecMouseWheel(GfuiElem sender, IptEvtDataMouse mouseState) { + public static void ExecMouseWheel(GfuiElem sender, IptEvtDataMouse mouseState) { IptEventData iptData = IptEventData.new_(sender, IptEventType_.MouseWheel, mouseState.Wheel(), keyStateCur, mouseState); sender.IptBnds().Process(iptData); SendData(iptData); } - @gplx.Internal protected static void ExecMousePress(GfuiElem sender, IptEvtDataMouse mouseState) { + public static void ExecMousePress(GfuiElem sender, IptEvtDataMouse mouseState) { IptEventData iptData = IptEventData.new_(sender, IptEventType_.MousePress, mouseState.Button(), keyStateCur, mouseState); sender.IptBnds().Process(iptData); SendData(iptData); @@ -81,7 +82,7 @@ class IptEventMgr implements GfoInvkAble { if (StopFwd(iptData)) return; GfsCtx ctx = GfsCtx.new_(); GfoMsg m = GfoMsg_.new_cast_(GfuiElemKeys.IptRcvd_evt).Add("iptData", iptData); - GfoEvMgr_.PubMsg(iptData.Sender(), ctx, GfuiElemKeys.IptRcvd_evt, m); + Gfo_evt_mgr_.Pub_msg(iptData.Sender(), ctx, GfuiElemKeys.IptRcvd_evt, m); } public static boolean StopFwd(IptEventData iptData) { // check if (a) control bubbles event; (b) iptData.Handled return !IptEventType_.Has(iptData.Sender().IptBnds().EventsToFwd(), iptData.EventType()) @@ -89,10 +90,10 @@ class IptEventMgr implements GfoInvkAble { } static boolean keyHandled = false; static IptEvtDataKey keyStateCur = IptEvtDataKey.Null; static IptEvtDataMouse mouseStateCur = IptEvtDataMouse.Null; static TimerAdp mousePressTimer; static GfuiElem senderCur; - public static final IptEventMgr EventSink2 = new IptEventMgr(); IptEventMgr() {} + public static final IptEventMgr EventSink2 = new IptEventMgr(); IptEventMgr() {} public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Tmr_cmd)) MousePressTick(); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; - } public static final String Tmr_cmd = "Tmr"; + } public static final String Tmr_cmd = "Tmr"; } diff --git a/150_gfui/src_200_ipt/gplx/gfui/IptEventType.java b/150_gfui/src/gplx/gfui/ipts/IptEventType.java similarity index 86% rename from 150_gfui/src_200_ipt/gplx/gfui/IptEventType.java rename to 150_gfui/src/gplx/gfui/ipts/IptEventType.java index 2324d966b..b97119fb8 100644 --- a/150_gfui/src_200_ipt/gplx/gfui/IptEventType.java +++ b/150_gfui/src/gplx/gfui/ipts/IptEventType.java @@ -15,7 +15,8 @@ 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.gfui; import gplx.*; +package gplx.gfui.ipts; import gplx.*; import gplx.gfui.*; +import gplx.gfui.controls.elems.*; public class IptEventType { public int Val() {return val;} int val; public String Name() {return name;} private String name; @@ -28,8 +29,8 @@ public class IptEventType { if (processed || IptEventMgr.StopFwd(iptData)) { // NOTE: IptMsgs are single-dispatch; } else { - GfoEvMgr_.PubMsg(owner, ctx, GfuiElemKeys.IptRcvd_evt, m); + Gfo_evt_mgr_.Pub_msg(owner, ctx, GfuiElemKeys.IptRcvd_evt, m); } - return GfoInvkAble_.Rv_handled; + return Gfo_invk_.Rv_handled; } } diff --git a/150_gfui/src_200_ipt/gplx/gfui/IptEventType_.java b/150_gfui/src/gplx/gfui/ipts/IptEventType_.java similarity index 91% rename from 150_gfui/src_200_ipt/gplx/gfui/IptEventType_.java rename to 150_gfui/src/gplx/gfui/ipts/IptEventType_.java index 4f1e0f700..6d0535bdb 100644 --- a/150_gfui/src_200_ipt/gplx/gfui/IptEventType_.java +++ b/150_gfui/src/gplx/gfui/ipts/IptEventType_.java @@ -15,11 +15,11 @@ 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.gfui; import gplx.*; +package gplx.gfui.ipts; import gplx.*; import gplx.gfui.*; import gplx.core.bits.*; import gplx.core.primitives.*; public class IptEventType_ { static EnmMgr enmMgr = EnmMgr.new_().BitRngEnd_(128); - public static final IptEventType + public static final IptEventType None = new_( 0, "none") , KeyDown = new_( 1, "keyDown") , KeyUp = new_( 2, "keyUp") @@ -45,7 +45,7 @@ public class IptEventType_ { enmMgr.RegObj(val, name, rv); return rv; } - @gplx.Internal protected static boolean Has(IptEventType val, IptEventType find) { + public static boolean Has(IptEventType val, IptEventType find) { if (find == IptEventType_.None && val != IptEventType_.None) return false; // check .None manually b/c 0 is identity when BitShifting return Bitmask_.Has_int(val.Val(), find.Val()); } diff --git a/150_gfui/tst/gplx/gfui/IptEventType_tst.java b/150_gfui/src/gplx/gfui/ipts/IptEventType_tst.java similarity index 93% rename from 150_gfui/tst/gplx/gfui/IptEventType_tst.java rename to 150_gfui/src/gplx/gfui/ipts/IptEventType_tst.java index a40c5d84b..fe7913875 100644 --- a/150_gfui/tst/gplx/gfui/IptEventType_tst.java +++ b/150_gfui/src/gplx/gfui/ipts/IptEventType_tst.java @@ -15,8 +15,8 @@ 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.gfui; import gplx.*; -import org.junit.*; +package gplx.gfui.ipts; import gplx.*; import gplx.gfui.*; +import org.junit.*; import gplx.gfui.ipts.*; public class IptEventType_tst { @Test public void Has() { tst_Has(IptEventType_.KeyDown, IptEventType_.KeyDown, true); diff --git a/150_gfui/src_200_ipt/gplx/gfui/IptEvtDataKey.java b/150_gfui/src/gplx/gfui/ipts/IptEvtDataKey.java similarity index 82% rename from 150_gfui/src_200_ipt/gplx/gfui/IptEvtDataKey.java rename to 150_gfui/src/gplx/gfui/ipts/IptEvtDataKey.java index f92ec03c0..ec09a4ce7 100644 --- a/150_gfui/src_200_ipt/gplx/gfui/IptEvtDataKey.java +++ b/150_gfui/src/gplx/gfui/ipts/IptEvtDataKey.java @@ -15,16 +15,16 @@ 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.gfui; import gplx.*; +package gplx.gfui.ipts; import gplx.*; import gplx.gfui.*; public class IptEvtDataKey { public IptKey Key() {return key;} IptKey key; public boolean Handled() {return handled;} public void Handled_set(boolean v) {handled = v;} private boolean handled; public static IptEvtDataKey as_(Object obj) {return obj instanceof IptEvtDataKey ? (IptEvtDataKey)obj : null;} public static IptEvtDataKey cast(Object obj) {try {return (IptEvtDataKey)obj;} catch(Exception exc) {throw Err_.new_type_mismatch_w_exc(exc, IptEvtDataKey.class, obj);}} - @gplx.Internal protected static final IptEvtDataKey Null = new_(IptKey_.None); - @gplx.Internal protected static IptEvtDataKey test_(IptKey keyArg) {return new_(keyArg);} - @gplx.Internal protected static IptEvtDataKey int_(int val) { + public static final IptEvtDataKey Null = new_(IptKey_.None); + public static IptEvtDataKey test_(IptKey keyArg) {return new_(keyArg);} + public static IptEvtDataKey int_(int val) { IptKey keyArg = IptKey_.api_(val); return new_(keyArg); } diff --git a/150_gfui/src_200_ipt/gplx/gfui/IptEvtDataKeyHeld.java b/150_gfui/src/gplx/gfui/ipts/IptEvtDataKeyHeld.java similarity index 87% rename from 150_gfui/src_200_ipt/gplx/gfui/IptEvtDataKeyHeld.java rename to 150_gfui/src/gplx/gfui/ipts/IptEvtDataKeyHeld.java index ca46c6b91..13219f9bb 100644 --- a/150_gfui/src_200_ipt/gplx/gfui/IptEvtDataKeyHeld.java +++ b/150_gfui/src/gplx/gfui/ipts/IptEvtDataKeyHeld.java @@ -15,15 +15,15 @@ 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.gfui; import gplx.*; +package gplx.gfui.ipts; import gplx.*; import gplx.gfui.*; public class IptEvtDataKeyHeld { public char KeyChar() {return c;} char c; public boolean Handled() {return handled;} public void Handled_set(boolean v) {handled = v;} private boolean handled; public static IptEvtDataKeyHeld as_(Object obj) {return obj instanceof IptEvtDataKeyHeld ? (IptEvtDataKeyHeld)obj : null;} public static IptEvtDataKeyHeld cast(Object obj) {try {return (IptEvtDataKeyHeld)obj;} catch(Exception exc) {throw Err_.new_type_mismatch_w_exc(exc, IptEvtDataKeyHeld.class, obj);}} - @gplx.Internal protected static final IptEvtDataKeyHeld Null = char_((char)0); - @gplx.Internal protected static IptEvtDataKeyHeld char_(char c) { + public static final IptEvtDataKeyHeld Null = char_((char)0); + public static IptEvtDataKeyHeld char_(char c) { IptEvtDataKeyHeld rv = new IptEvtDataKeyHeld(); rv.c = c; return rv; diff --git a/150_gfui/src_200_ipt/gplx/gfui/IptEvtDataMouse.java b/150_gfui/src/gplx/gfui/ipts/IptEvtDataMouse.java similarity index 88% rename from 150_gfui/src_200_ipt/gplx/gfui/IptEvtDataMouse.java rename to 150_gfui/src/gplx/gfui/ipts/IptEvtDataMouse.java index fbd12513c..6458fba12 100644 --- a/150_gfui/src_200_ipt/gplx/gfui/IptEvtDataMouse.java +++ b/150_gfui/src/gplx/gfui/ipts/IptEvtDataMouse.java @@ -15,7 +15,7 @@ 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.gfui; import gplx.*; +package gplx.gfui.ipts; import gplx.*; import gplx.gfui.*; public class IptEvtDataMouse { public IptMouseBtn Button() {return button;} IptMouseBtn button; public IptMouseWheel Wheel() {return wheel;} IptMouseWheel wheel; @@ -23,7 +23,7 @@ public class IptEvtDataMouse { public static IptEvtDataMouse as_(Object obj) {return obj instanceof IptEvtDataMouse ? (IptEvtDataMouse)obj : null;} public static IptEvtDataMouse cast(Object obj) {try {return (IptEvtDataMouse)obj;} catch(Exception exc) {throw Err_.new_type_mismatch_w_exc(exc, IptEvtDataMouse.class, obj);}} - @gplx.Internal protected static final IptEvtDataMouse Null = IptEvtDataMouse.new_(IptMouseBtn_.None, IptMouseWheel_.None, 0, 0); + public static final IptEvtDataMouse Null = IptEvtDataMouse.new_(IptMouseBtn_.None, IptMouseWheel_.None, 0, 0); public static IptEvtDataMouse new_(IptMouseBtn button, IptMouseWheel wheel, int x, int y) { IptEvtDataMouse rv = new IptEvtDataMouse(); rv.button = button; diff --git a/150_gfui/src_200_ipt/gplx/gfui/IptKey.java b/150_gfui/src/gplx/gfui/ipts/IptKey.java similarity index 86% rename from 150_gfui/src_200_ipt/gplx/gfui/IptKey.java rename to 150_gfui/src/gplx/gfui/ipts/IptKey.java index 5ab080fdf..e84ef7a35 100644 --- a/150_gfui/src_200_ipt/gplx/gfui/IptKey.java +++ b/150_gfui/src/gplx/gfui/ipts/IptKey.java @@ -15,12 +15,12 @@ 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.gfui; import gplx.*; +package gplx.gfui.ipts; import gplx.*; import gplx.gfui.*; import gplx.core.bits.*; public class IptKey implements IptArg { @gplx.Internal protected IptKey(int val, String key) {this.val = val; this.key = key;} - public String Key() {return key;} private final String key; - public int Val() {return val;} private final int val; + public String Key() {return key;} private final String key; + public int Val() {return val;} private final int val; public boolean Eq(IptArg comp) {return String_.Eq(key, comp.Key());} public String XtoUiStr() {return IptKeyStrMgr.Instance.To_str(this);} public IptKey Add(IptKey comp) {return IptKey_.add_(this, comp);} diff --git a/150_gfui/src_200_ipt/gplx/gfui/IptKeyStrMgr.java b/150_gfui/src/gplx/gfui/ipts/IptKeyStrMgr.java similarity index 94% rename from 150_gfui/src_200_ipt/gplx/gfui/IptKeyStrMgr.java rename to 150_gfui/src/gplx/gfui/ipts/IptKeyStrMgr.java index ad2748f16..905c4cdbc 100644 --- a/150_gfui/src_200_ipt/gplx/gfui/IptKeyStrMgr.java +++ b/150_gfui/src/gplx/gfui/ipts/IptKeyStrMgr.java @@ -15,7 +15,7 @@ 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.gfui; import gplx.*; +package gplx.gfui.ipts; import gplx.*; import gplx.gfui.*; class IptKeyStrMgr { public IptKey FetchByKeyPress(int charVal) { if (literals == null) Init(); @@ -33,7 +33,7 @@ class IptKeyStrMgr { list.Add((IptKey)keys.Get_at(i)); } void Init() {// default to US style keyboard - literals = Hash_adp_.new_(); + literals = Hash_adp_.New(); charKeys = new IptKey[256]; RegLtr(IptKey_.A, 'a'); RegLtr(IptKey_.B, 'b'); RegLtr(IptKey_.C, 'c'); RegLtr(IptKey_.D, 'd'); RegLtr(IptKey_.E, 'e'); RegLtr(IptKey_.F, 'f'); RegLtr(IptKey_.G, 'g'); RegLtr(IptKey_.H, 'h'); RegLtr(IptKey_.I, 'i'); RegLtr(IptKey_.J, 'j'); @@ -71,5 +71,5 @@ class IptKeyStrMgr { } IptKey[] charKeys; Hash_adp literals; Ordered_hash keys = Ordered_hash_.New(); - public static final IptKeyStrMgr Instance = new IptKeyStrMgr(); IptKeyStrMgr() {} + public static final IptKeyStrMgr Instance = new IptKeyStrMgr(); IptKeyStrMgr() {} } diff --git a/150_gfui/src_200_ipt/gplx/gfui/IptKeyStrMgr_tst.java b/150_gfui/src/gplx/gfui/ipts/IptKeyStrMgr_tst.java similarity index 96% rename from 150_gfui/src_200_ipt/gplx/gfui/IptKeyStrMgr_tst.java rename to 150_gfui/src/gplx/gfui/ipts/IptKeyStrMgr_tst.java index ed4baecb3..75d9ce004 100644 --- a/150_gfui/src_200_ipt/gplx/gfui/IptKeyStrMgr_tst.java +++ b/150_gfui/src/gplx/gfui/ipts/IptKeyStrMgr_tst.java @@ -15,7 +15,7 @@ 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.gfui; import gplx.*; +package gplx.gfui.ipts; import gplx.*; import gplx.gfui.*; import org.junit.*; public class IptKeyStrMgr_tst { @Test public void KeyBasic() { diff --git a/150_gfui/src_200_ipt/gplx/gfui/IptKey_.java b/150_gfui/src/gplx/gfui/ipts/IptKey_.java similarity index 95% rename from 150_gfui/src_200_ipt/gplx/gfui/IptKey_.java rename to 150_gfui/src/gplx/gfui/ipts/IptKey_.java index 68931968b..c57a50ffb 100644 --- a/150_gfui/src_200_ipt/gplx/gfui/IptKey_.java +++ b/150_gfui/src/gplx/gfui/ipts/IptKey_.java @@ -15,7 +15,7 @@ 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.gfui; import gplx.*; +package gplx.gfui.ipts; import gplx.*; import gplx.gfui.*; import java.awt.event.KeyEvent; import gplx.core.primitives.*; import gplx.core.stores.*; import gplx.core.bits.*; public class IptKey_ { @@ -41,7 +41,7 @@ public class IptKey_ { return (String_.Eq(val, "")) ? or : parse(val); } public static List_adp printableKeys2_(IptKey[] add, IptKey[] del) { - List_adp list = List_adp_.new_(); + List_adp list = List_adp_.New(); for (IptKey key : add) list.Add(key); IptKeyStrMgr.Instance.XtoIptKeyAry(list); @@ -50,7 +50,7 @@ public class IptKey_ { return list; } public static IptKey[] printableKeys_(IptKey[] add, IptKey[] del) { - List_adp list = List_adp_.new_(); + List_adp list = List_adp_.New(); for (IptKey key : add) list.Add(key); IptKeyStrMgr.Instance.XtoIptKeyAry(list); @@ -133,7 +133,7 @@ public class IptKey_ { int len = ary.length; for (int i = 0; i < len; ++i) { IptKey key = ary[i]; - hash.Add_if_dupe_use_nth(Int_obj_ref.new_(key.Val()), key); + hash.Add_if_dupe_use_nth(Int_obj_ref.New(key.Val()), key); } } public static String To_str(int val) { @@ -146,7 +146,7 @@ public class IptKey_ { if (val == 0) return rv; // handle modifiers only, like "mod.cs"; else will be "mod.cs+key.#0" rv += "+"; } - IptKey key = (IptKey)IptKey_.Ui_str_hash().Get_by(Int_obj_ref.new_(val)); + IptKey key = (IptKey)IptKey_.Ui_str_hash().Get_by(Int_obj_ref.New(val)); String key_str = key == null ? "key.#" + Int_.To_str(val) : key.Key(); return rv + key_str; } diff --git a/150_gfui/src_200_ipt/gplx/gfui/IptKey__tst.java b/150_gfui/src/gplx/gfui/ipts/IptKey__tst.java similarity index 89% rename from 150_gfui/src_200_ipt/gplx/gfui/IptKey__tst.java rename to 150_gfui/src/gplx/gfui/ipts/IptKey__tst.java index 8f31a9652..56963c79a 100644 --- a/150_gfui/src_200_ipt/gplx/gfui/IptKey__tst.java +++ b/150_gfui/src/gplx/gfui/ipts/IptKey__tst.java @@ -15,10 +15,10 @@ 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.gfui; import gplx.*; +package gplx.gfui.ipts; import gplx.*; import gplx.gfui.*; import org.junit.*; public class IptKey__tst { - private final IptKey__fxt fxt = new IptKey__fxt(); + private final IptKey__fxt fxt = new IptKey__fxt(); @Test public void To_str() { fxt.Test_to_str(196608, "mod.cs"); } diff --git a/150_gfui/src_200_ipt/gplx/gfui/IptMouseBtn.java b/150_gfui/src/gplx/gfui/ipts/IptMouseBtn.java similarity index 82% rename from 150_gfui/src_200_ipt/gplx/gfui/IptMouseBtn.java rename to 150_gfui/src/gplx/gfui/ipts/IptMouseBtn.java index 80aa33245..0ed572ed3 100644 --- a/150_gfui/src_200_ipt/gplx/gfui/IptMouseBtn.java +++ b/150_gfui/src/gplx/gfui/ipts/IptMouseBtn.java @@ -15,10 +15,10 @@ 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.gfui; import gplx.*; +package gplx.gfui.ipts; import gplx.*; import gplx.gfui.*; public class IptMouseBtn implements IptArg { - @gplx.Internal protected IptMouseBtn(int val, String key) {this.val = val; this.key = key;} + public IptMouseBtn(int val, String key) {this.val = val; this.key = key;} public String Key() {return key;} private String key; - @gplx.Internal protected int Val() {return val;} int val; + public int Val() {return val;} int val; public boolean Eq(IptArg comp) {return String_.Eq(key, comp.Key());} } diff --git a/150_gfui/src_200_ipt/gplx/gfui/IptMouseBtn_.java b/150_gfui/src/gplx/gfui/ipts/IptMouseBtn_.java similarity index 90% rename from 150_gfui/src_200_ipt/gplx/gfui/IptMouseBtn_.java rename to 150_gfui/src/gplx/gfui/ipts/IptMouseBtn_.java index 8c72e8e61..5c831b31d 100644 --- a/150_gfui/src_200_ipt/gplx/gfui/IptMouseBtn_.java +++ b/150_gfui/src/gplx/gfui/ipts/IptMouseBtn_.java @@ -15,7 +15,7 @@ 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.gfui; import gplx.*; +package gplx.gfui.ipts; import gplx.*; import gplx.gfui.*; public class IptMouseBtn_ { public static final int Tid_none = 0x00000000 @@ -25,7 +25,7 @@ public class IptMouseBtn_ { , Tid_x1 = 0x00400000 , Tid_x2 = 0x01000000 ; - public static final IptMouseBtn // REF: System.Windows.Forms.MouseButtons + public static final IptMouseBtn // REF: System.Windows.Forms.MouseButtons None = new IptMouseBtn(Tid_none , "mouse.none") , Left = new IptMouseBtn(Tid_left , "mouse.left") , Right = new IptMouseBtn(Tid_right , "mouse.right") @@ -42,7 +42,7 @@ public class IptMouseBtn_ { else if (String_.Eq(raw, X2.Key())) return X2; else throw Err_.new_parse_type(IptMouseBtn.class, raw); } - @gplx.Internal protected static IptMouseBtn api_(int val) { + public static IptMouseBtn api_(int val) { if (val == None.Val()) return None; else if (val == Left.Val()) return Left; else if (val == Right.Val()) return Right; diff --git a/150_gfui/src_200_ipt/gplx/gfui/IptMouseMove.java b/150_gfui/src/gplx/gfui/ipts/IptMouseMove.java similarity index 85% rename from 150_gfui/src_200_ipt/gplx/gfui/IptMouseMove.java rename to 150_gfui/src/gplx/gfui/ipts/IptMouseMove.java index 2d585b94b..3938e9fb0 100644 --- a/150_gfui/src_200_ipt/gplx/gfui/IptMouseMove.java +++ b/150_gfui/src/gplx/gfui/ipts/IptMouseMove.java @@ -15,9 +15,9 @@ 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.gfui; import gplx.*; +package gplx.gfui.ipts; import gplx.*; import gplx.gfui.*; public class IptMouseMove implements IptArg { public String Key() {return key;} private String key = "move.any"; public boolean Eq(IptArg comp) {return String_.Eq(this.Key(), comp.Key());} - public static final IptMouseMove AnyDirection = new IptMouseMove(); IptMouseMove() {} + public static final IptMouseMove AnyDirection = new IptMouseMove(); IptMouseMove() {} } diff --git a/150_gfui/src_200_ipt/gplx/gfui/IptMouseWheel.java b/150_gfui/src/gplx/gfui/ipts/IptMouseWheel.java similarity index 88% rename from 150_gfui/src_200_ipt/gplx/gfui/IptMouseWheel.java rename to 150_gfui/src/gplx/gfui/ipts/IptMouseWheel.java index 0b5b5dc2a..08e455764 100644 --- a/150_gfui/src_200_ipt/gplx/gfui/IptMouseWheel.java +++ b/150_gfui/src/gplx/gfui/ipts/IptMouseWheel.java @@ -15,9 +15,9 @@ 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.gfui; import gplx.*; +package gplx.gfui.ipts; import gplx.*; import gplx.gfui.*; public class IptMouseWheel implements IptArg { public String Key() {return key;} private String key; public boolean Eq(IptArg comp) {return String_.Eq(key, comp.Key());} - @gplx.Internal protected IptMouseWheel(String key) {this.key = key;} + public IptMouseWheel(String key) {this.key = key;} } diff --git a/150_gfui/src_200_ipt/gplx/gfui/IptMouseWheel_.java b/150_gfui/src/gplx/gfui/ipts/IptMouseWheel_.java similarity index 88% rename from 150_gfui/src_200_ipt/gplx/gfui/IptMouseWheel_.java rename to 150_gfui/src/gplx/gfui/ipts/IptMouseWheel_.java index 6376805dd..6f63bbcc2 100644 --- a/150_gfui/src_200_ipt/gplx/gfui/IptMouseWheel_.java +++ b/150_gfui/src/gplx/gfui/ipts/IptMouseWheel_.java @@ -15,9 +15,9 @@ 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.gfui; import gplx.*; +package gplx.gfui.ipts; import gplx.*; import gplx.gfui.*; public class IptMouseWheel_ { - public static final IptMouseWheel + public static final IptMouseWheel None = new IptMouseWheel("wheel.none") , Up = new IptMouseWheel("wheel.up") , Down = new IptMouseWheel("wheel.down"); @@ -27,7 +27,7 @@ public class IptMouseWheel_ { else if (String_.Eq(raw, Down.Key())) return Down; else throw Err_.new_parse_type(IptMouseWheel.class, raw); } - @gplx.Internal protected static IptMouseWheel api_(Object obj) { + public static IptMouseWheel api_(Object obj) { int delta = Int_.cast(obj); if (delta > 0) return Up; else if (delta < 0) return Down; diff --git a/150_gfui/src_700_env/gplx/gfui/GfoFactory_gfui.java b/150_gfui/src/gplx/gfui/kits/core/GfoFactory_gfui.java similarity index 83% rename from 150_gfui/src_700_env/gplx/gfui/GfoFactory_gfui.java rename to 150_gfui/src/gplx/gfui/kits/core/GfoFactory_gfui.java index 71c959bfa..68dcb18f6 100644 --- a/150_gfui/src_700_env/gplx/gfui/GfoFactory_gfui.java +++ b/150_gfui/src/gplx/gfui/kits/core/GfoFactory_gfui.java @@ -15,7 +15,8 @@ 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.gfui; import gplx.*; +package gplx.gfui.kits.core; import gplx.*; import gplx.gfui.*; import gplx.gfui.kits.*; +import gplx.gfui.controls.windows.*; import gplx.gfui.controls.elems.*; import gplx.gfui.controls.standards.*; import gplx.gfui.controls.customs.*; public class GfoFactory_gfui { public static void Btn_MinWin(GfuiElem owner, GfoMsg appWinMsg) { GfuiBtn_.msg_("minWin", owner, GfoMsg_.chain_(appWinMsg, GfuiWin.Invk_Minimize)).Text_("_").TipText_("minmize window").Width_(20); @@ -35,5 +36,5 @@ public class GfoFactory_gfui { public static void Btn_QuitWin2(GfuiElem owner, GfoMsg quitMsg) { GfuiBtn_.msg_("quitWin", owner, quitMsg).Text_("X").TipText_("quit win").Width_(20); } - public static final GfoFactory_gfui Instance = new GfoFactory_gfui(); GfoFactory_gfui() {} + public static final GfoFactory_gfui Instance = new GfoFactory_gfui(); GfoFactory_gfui() {} } diff --git a/150_gfui/src_700_env/gplx/gfui/GfsLibIni_gfui.java b/150_gfui/src/gplx/gfui/kits/core/GfsLibIni_gfui.java similarity index 80% rename from 150_gfui/src_700_env/gplx/gfui/GfsLibIni_gfui.java rename to 150_gfui/src/gplx/gfui/kits/core/GfsLibIni_gfui.java index a0108b60c..c90ecbff2 100644 --- a/150_gfui/src_700_env/gplx/gfui/GfsLibIni_gfui.java +++ b/150_gfui/src/gplx/gfui/kits/core/GfsLibIni_gfui.java @@ -15,11 +15,12 @@ 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.gfui; import gplx.*; +package gplx.gfui.kits.core; import gplx.*; import gplx.gfui.*; import gplx.gfui.kits.*; import gplx.langs.gfs.*; +import gplx.gfui.ipts.*; public class GfsLibIni_gfui implements GfsLibIni { public void Ini(GfsCore core) { core.AddCmd(IptCfgRegy.Instance, "IptBndMgr_"); } - public static final GfsLibIni_gfui Instance = new GfsLibIni_gfui(); GfsLibIni_gfui() {} + public static final GfsLibIni_gfui Instance = new GfsLibIni_gfui(); GfsLibIni_gfui() {} } diff --git a/150_gfui/src_700_env/gplx/gfui/GfuiEnv_.java b/150_gfui/src/gplx/gfui/kits/core/GfuiEnv_.java similarity index 87% rename from 150_gfui/src_700_env/gplx/gfui/GfuiEnv_.java rename to 150_gfui/src/gplx/gfui/kits/core/GfuiEnv_.java index 95d3c33e0..a0a5b9995 100644 --- a/150_gfui/src_700_env/gplx/gfui/GfuiEnv_.java +++ b/150_gfui/src/gplx/gfui/kits/core/GfuiEnv_.java @@ -15,7 +15,8 @@ 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.gfui; import gplx.*; +package gplx.gfui.kits.core; import gplx.*; import gplx.gfui.*; import gplx.gfui.kits.*; +import gplx.gfui.draws.*; import gplx.gfui.ipts.*; import gplx.gfui.controls.gxws.*; import gplx.gfui.controls.windows.*; import gplx.gfml.*; import gplx.langs.gfs.*; import gplx.core.envs.*; import gplx.core.envs.Env_; import gplx.core.envs.Op_sys; @@ -40,7 +41,7 @@ public class GfuiEnv_ { public static void Init(String[] args, String appNameAndExt, Class type) {Init(args, appNameAndExt, type, true);} public static void Init(String[] args, String appNameAndExt, Class type, boolean swingHack) { Env_.Init(args, appNameAndExt, type); - if (swingHack) { // TODO: move to kit dependent functionality; WHEN: swing kit + if (swingHack) { // TODO_OLD: move to kit dependent functionality; WHEN: swing kit if (Op_sys.Cur().Tid_is_wnt()) { try {UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");} catch (ClassNotFoundException e) {e.printStackTrace();} @@ -57,7 +58,7 @@ public class GfuiEnv_ { GxwElemFactory_.winForms_(); // reg interruptLnr - if (swingHack) { // TODO: move to kit dependent functionality; WHEN: swing kit + if (swingHack) { // TODO_OLD: move to kit dependent functionality; WHEN: swing kit UsrDlg_.Instance.Reg(UsrMsgWkr_.Type_Warn, GfoConsoleWin.Instance); UsrDlg_.Instance.Reg(UsrMsgWkr_.Type_Stop, GfuiInterruptLnr.new_()); } @@ -96,8 +97,8 @@ public class GfuiEnv_ { return system_font; } catch (Exception e) {return FontAdp.new_("Arial", 8, FontStyleAdp_.Plain);} } - public static final String Quit_commit_evt = "quit_commit_evt", Quit_notify_evt = "quit_notify_evt"; - public static final String Err_GfuiException = "gplx.dbs.GfuiException"; // TODO: used in JAVA. move + public static final String Quit_commit_evt = "quit_commit_evt", Quit_notify_evt = "quit_notify_evt"; + public static final String Err_GfuiException = "gplx.dbs.GfuiException"; // TODO_OLD: used in JAVA. move } class GfuiInterruptLnr implements UsrMsgWkr { public void ExecUsrMsg(int type, UsrMsg umsg) {GfuiEnv_.ShowMsg(umsg.To_str());} diff --git a/150_gfui/src_700_env/gplx/gfui/GfuiInvkCmd.java b/150_gfui/src/gplx/gfui/kits/core/GfuiInvkCmd.java similarity index 80% rename from 150_gfui/src_700_env/gplx/gfui/GfuiInvkCmd.java rename to 150_gfui/src/gplx/gfui/kits/core/GfuiInvkCmd.java index 8ec52ead7..8ca6de051 100644 --- a/150_gfui/src_700_env/gplx/gfui/GfuiInvkCmd.java +++ b/150_gfui/src/gplx/gfui/kits/core/GfuiInvkCmd.java @@ -15,9 +15,6 @@ 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.gfui; import gplx.*; -public interface GfuiInvkCmd extends GfoInvkAble, Rls_able { -} -class GfuiInvkCmd_ { - public static final String Invk_sync = "Sync"; +package gplx.gfui.kits.core; import gplx.*; import gplx.gfui.*; import gplx.gfui.kits.*; +public interface GfuiInvkCmd extends Gfo_invk, Rls_able { } diff --git a/150_gfui/src/gplx/gfui/kits/core/GfuiInvkCmd_.java b/150_gfui/src/gplx/gfui/kits/core/GfuiInvkCmd_.java new file mode 100644 index 000000000..087b8db62 --- /dev/null +++ b/150_gfui/src/gplx/gfui/kits/core/GfuiInvkCmd_.java @@ -0,0 +1,21 @@ +/* +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.gfui.kits.core; import gplx.*; import gplx.gfui.*; import gplx.gfui.kits.*; +public class GfuiInvkCmd_ { + public static final String Invk_sync = "Sync"; +} diff --git a/150_gfui/src_700_env/gplx/gfui/Gfui_clipboard.java b/150_gfui/src/gplx/gfui/kits/core/Gfui_clipboard.java similarity index 85% rename from 150_gfui/src_700_env/gplx/gfui/Gfui_clipboard.java rename to 150_gfui/src/gplx/gfui/kits/core/Gfui_clipboard.java index 3facc9a64..f6b31ea5b 100644 --- a/150_gfui/src_700_env/gplx/gfui/Gfui_clipboard.java +++ b/150_gfui/src/gplx/gfui/kits/core/Gfui_clipboard.java @@ -15,8 +15,8 @@ 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.gfui; import gplx.*; -public interface Gfui_clipboard extends GfoInvkAble, Rls_able { +package gplx.gfui.kits.core; import gplx.*; import gplx.gfui.*; import gplx.gfui.kits.*; +public interface Gfui_clipboard extends Gfo_invk, Rls_able { void Copy(String s); } class Gfui_clipboard_null implements Gfui_clipboard { diff --git a/150_gfui/src_700_env/gplx/gfui/Gfui_clipboard_.java b/150_gfui/src/gplx/gfui/kits/core/Gfui_clipboard_.java similarity index 83% rename from 150_gfui/src_700_env/gplx/gfui/Gfui_clipboard_.java rename to 150_gfui/src/gplx/gfui/kits/core/Gfui_clipboard_.java index 154cb5cb6..e6ab69dda 100644 --- a/150_gfui/src_700_env/gplx/gfui/Gfui_clipboard_.java +++ b/150_gfui/src/gplx/gfui/kits/core/Gfui_clipboard_.java @@ -15,8 +15,8 @@ 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.gfui; import gplx.*; +package gplx.gfui.kits.core; import gplx.*; import gplx.gfui.*; import gplx.gfui.kits.*; public class Gfui_clipboard_ { - public static final Gfui_clipboard Null = new Gfui_clipboard_null(); + public static final Gfui_clipboard Null = new Gfui_clipboard_null(); public static final String Invk_copy = "copy", Invk_select_all = "select_all"; } diff --git a/150_gfui/src_700_env/gplx/gfui/Gfui_dlg_file.java b/150_gfui/src/gplx/gfui/kits/core/Gfui_dlg_file.java similarity index 90% rename from 150_gfui/src_700_env/gplx/gfui/Gfui_dlg_file.java rename to 150_gfui/src/gplx/gfui/kits/core/Gfui_dlg_file.java index 5aec473b1..868db530c 100644 --- a/150_gfui/src_700_env/gplx/gfui/Gfui_dlg_file.java +++ b/150_gfui/src/gplx/gfui/kits/core/Gfui_dlg_file.java @@ -15,7 +15,7 @@ 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.gfui; import gplx.*; +package gplx.gfui.kits.core; import gplx.*; import gplx.gfui.*; import gplx.gfui.kits.*; public interface Gfui_dlg_file { Gfui_dlg_file Init_msg_(String v); Gfui_dlg_file Init_file_(String v); diff --git a/150_gfui/src_700_env/gplx/gfui/Gfui_dlg_file_.java b/150_gfui/src/gplx/gfui/kits/core/Gfui_dlg_file_.java similarity index 86% rename from 150_gfui/src_700_env/gplx/gfui/Gfui_dlg_file_.java rename to 150_gfui/src/gplx/gfui/kits/core/Gfui_dlg_file_.java index b7105fd3c..a28887a53 100644 --- a/150_gfui/src_700_env/gplx/gfui/Gfui_dlg_file_.java +++ b/150_gfui/src/gplx/gfui/kits/core/Gfui_dlg_file_.java @@ -15,9 +15,9 @@ 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.gfui; import gplx.*; +package gplx.gfui.kits.core; import gplx.*; import gplx.gfui.*; import gplx.gfui.kits.*; public class Gfui_dlg_file_ { - public static final Gfui_dlg_file Noop = new Gfui_dlg_file_noop(); + public static final Gfui_dlg_file Noop = new Gfui_dlg_file_noop(); } class Gfui_dlg_file_noop implements Gfui_dlg_file { public Gfui_dlg_file Init_msg_(String v) {return this;} diff --git a/150_gfui/src_700_env/gplx/gfui/Gfui_dlg_msg.java b/150_gfui/src/gplx/gfui/kits/core/Gfui_dlg_msg.java similarity index 90% rename from 150_gfui/src_700_env/gplx/gfui/Gfui_dlg_msg.java rename to 150_gfui/src/gplx/gfui/kits/core/Gfui_dlg_msg.java index 32bf56ede..cca2528d3 100644 --- a/150_gfui/src_700_env/gplx/gfui/Gfui_dlg_msg.java +++ b/150_gfui/src/gplx/gfui/kits/core/Gfui_dlg_msg.java @@ -15,7 +15,7 @@ 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.gfui; import gplx.*; +package gplx.gfui.kits.core; import gplx.*; import gplx.gfui.*; import gplx.gfui.kits.*; public interface Gfui_dlg_msg { Gfui_dlg_msg Init_msg_(String v); Gfui_dlg_msg Init_ico_(int v); diff --git a/150_gfui/src_700_env/gplx/gfui/Gfui_dlg_msg_.java b/150_gfui/src/gplx/gfui/kits/core/Gfui_dlg_msg_.java similarity index 80% rename from 150_gfui/src_700_env/gplx/gfui/Gfui_dlg_msg_.java rename to 150_gfui/src/gplx/gfui/kits/core/Gfui_dlg_msg_.java index 268a796fe..a1c609d35 100644 --- a/150_gfui/src_700_env/gplx/gfui/Gfui_dlg_msg_.java +++ b/150_gfui/src/gplx/gfui/kits/core/Gfui_dlg_msg_.java @@ -15,10 +15,10 @@ 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.gfui; import gplx.*; +package gplx.gfui.kits.core; import gplx.*; import gplx.gfui.*; import gplx.gfui.kits.*; public class Gfui_dlg_msg_ { - public static final Gfui_dlg_msg Noop = new Gfui_dlg_msg_noop(); - public static final int Ico_error = 0, Ico_information = 1, Ico_question = 2, Ico_warning = 3, Ico_working = 4; + public static final Gfui_dlg_msg Noop = new Gfui_dlg_msg_noop(); + public static final int Ico_error = 0, Ico_information = 1, Ico_question = 2, Ico_warning = 3, Ico_working = 4; public static final int Btn_ok = 0, Btn_cancel = 1, Btn_yes = 2, Btn_no = 3, Retry = 4, Btn_abort = 5, Btn_ignore = 6; } class Gfui_dlg_msg_noop implements Gfui_dlg_msg { diff --git a/150_gfui/src_700_env/gplx/gfui/Gfui_kit.java b/150_gfui/src/gplx/gfui/kits/core/Gfui_kit.java similarity index 83% rename from 150_gfui/src_700_env/gplx/gfui/Gfui_kit.java rename to 150_gfui/src/gplx/gfui/kits/core/Gfui_kit.java index f88ad05f0..29bf51fe1 100644 --- a/150_gfui/src_700_env/gplx/gfui/Gfui_kit.java +++ b/150_gfui/src/gplx/gfui/kits/core/Gfui_kit.java @@ -15,8 +15,9 @@ 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.gfui; import gplx.*; -public interface Gfui_kit extends GfoInvkAble { +package gplx.gfui.kits.core; import gplx.*; import gplx.gfui.*; import gplx.gfui.kits.*; +import gplx.gfui.imgs.*; import gplx.gfui.controls.windows.*; import gplx.gfui.controls.elems.*; import gplx.gfui.controls.standards.*; +public interface Gfui_kit extends Gfo_invk { byte Tid(); String Key(); void Cfg_set(String type, String key, Object val); @@ -24,14 +25,14 @@ public interface Gfui_kit extends GfoInvkAble { void Kit_init(Gfo_usr_dlg gui_wtr); void Kit_run(); void Kit_term(); - void Kit_term_cbk_(GfoInvkAbleCmd cmd); + void Kit_term_cbk_(Gfo_invk_cmd cmd); Gfui_clipboard Clipboard(); void Ask_ok(String grp_key, String msg_key, String fmt, Object... args); boolean Ask_yes_no(String grp_key, String msg_key, String fmt, Object... args); boolean Ask_ok_cancel(String grp_key, String msg_key, String fmt, Object... args); int Ask_yes_no_cancel(String grp_key, String msg_key, String fmt, Object... args); - GfuiInvkCmd New_cmd_sync(GfoInvkAble invk); - GfuiInvkCmd New_cmd_async(GfoInvkAble invk); + GfuiInvkCmd New_cmd_sync(Gfo_invk invk); + GfuiInvkCmd New_cmd_async(Gfo_invk invk); GfuiWin New_win_app(String key, Keyval... args); GfuiWin New_win_utl(String key, GfuiWin owner, Keyval... args); Gfui_html New_html(String key, GfuiElem owner, Keyval... args); diff --git a/150_gfui/src_700_env/gplx/gfui/Gfui_kit_.java b/150_gfui/src/gplx/gfui/kits/core/Gfui_kit_.java similarity index 88% rename from 150_gfui/src_700_env/gplx/gfui/Gfui_kit_.java rename to 150_gfui/src/gplx/gfui/kits/core/Gfui_kit_.java index 6f982a1ff..975bbebd9 100644 --- a/150_gfui/src_700_env/gplx/gfui/Gfui_kit_.java +++ b/150_gfui/src/gplx/gfui/kits/core/Gfui_kit_.java @@ -15,10 +15,10 @@ 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.gfui; import gplx.*; +package gplx.gfui.kits.core; import gplx.*; import gplx.gfui.*; import gplx.gfui.kits.*; public class Gfui_kit_ { public static final byte Mem_tid = 0, Swing_tid = 1, Swt_tid = 2, Android_tid = 3; - public static Gfui_kit Mem() {return mem_kit;} private static final Gfui_kit mem_kit = Mem_kit.Instance; + public static Gfui_kit Mem() {return mem_kit;} private static final Gfui_kit mem_kit = Mem_kit.Instance; public static Gfui_kit Swt() {if (swt_kit == null) swt_kit = Swt_kit.Instance; return swt_kit;} private static Gfui_kit swt_kit; // NOTE: late-binding else swing apps will fail (since swt jar is not deployed) public static Gfui_kit Swing() {if (swing_kit == null) swing_kit = Swing_kit.Instance; return swing_kit;} private static Gfui_kit swing_kit; public static Gfui_kit Get_by_key(String key) { @@ -27,6 +27,6 @@ public class Gfui_kit_ { else if (String_.Eq(key, Swing().Key())) return Swing(); else throw Err_.new_unhandled(key); } - public static final String Cfg_HtmlBox = "HtmlBox"; + public static final String Cfg_HtmlBox = "HtmlBox"; public static final byte File_dlg_type_open = 0, File_dlg_type_save = 1; } diff --git a/150_gfui/src_700_env/gplx/gfui/Gfui_kit_base.java b/150_gfui/src/gplx/gfui/kits/core/Gfui_kit_base.java similarity index 84% rename from 150_gfui/src_700_env/gplx/gfui/Gfui_kit_base.java rename to 150_gfui/src/gplx/gfui/kits/core/Gfui_kit_base.java index 27977c763..884633b9b 100644 --- a/150_gfui/src_700_env/gplx/gfui/Gfui_kit_base.java +++ b/150_gfui/src/gplx/gfui/kits/core/Gfui_kit_base.java @@ -15,7 +15,8 @@ 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.gfui; import gplx.*; +package gplx.gfui.kits.core; import gplx.*; import gplx.gfui.*; import gplx.gfui.kits.*; +import gplx.gfui.imgs.*; import gplx.gfui.controls.gxws.*; import gplx.gfui.controls.elems.*; import gplx.gfui.controls.standards.*; import gplx.gfui.controls.customs.*; import gplx.gfui.controls.windows.*; public abstract class Gfui_kit_base implements Gfui_kit { private Keyval_hash ctor_args = new Keyval_hash(); public abstract byte Tid(); @@ -23,19 +24,19 @@ public abstract class Gfui_kit_base implements Gfui_kit { public abstract GxwElemFactory_base Factory(); public GfuiWin Main_win() {return main_win;} public Gfui_kit Main_win_(GfuiWin v) {main_win = v; return this;} private GfuiWin main_win; public Gfui_clipboard Clipboard() {return Gfui_clipboard_.Null;} - public GfoInvkAbleCmd Kit_term_cbk() {return kit_term_cbk;} public void Kit_term_cbk_(GfoInvkAbleCmd v) {kit_term_cbk = v;} private GfoInvkAbleCmd kit_term_cbk; + public Gfo_invk_cmd Kit_term_cbk() {return kit_term_cbk;} public void Kit_term_cbk_(Gfo_invk_cmd v) {kit_term_cbk = v;} private Gfo_invk_cmd kit_term_cbk; public void Cfg_set(String type, String key, Object val) {} public boolean Kit_mode__ready() {return true;} public void Kit_init(Gfo_usr_dlg gui_wtr) {} @gplx.Virtual public void Kit_run() {} - @gplx.Virtual public void Kit_term() {kit_term_cbk.Invk();} + @gplx.Virtual public void Kit_term() {kit_term_cbk.Exec();} @gplx.Virtual public void Ask_ok(String grp_key, String msg_key, String fmt, Object... args) {} public boolean Ask_yes_no(String grp_key, String msg_key, String fmt, Object... args) {return false;} public int Ask_yes_no_cancel(String grp_key, String msg_key, String fmt, Object... args) {return Gfui_dlg_msg_.Btn_cancel;} public boolean Ask_ok_cancel(String grp_key, String msg_key, String fmt, Object... args) {return false;} public void Btn_img_(GfuiBtn btn, IconAdp v) {} - public GfuiInvkCmd New_cmd_sync(GfoInvkAble invk) {return new Gfui_kit_cmd_sync(invk);} - public GfuiInvkCmd New_cmd_async(GfoInvkAble invk) {return new Gfui_kit_cmd_async(invk);} + public GfuiInvkCmd New_cmd_sync(Gfo_invk invk) {return new Gfui_kit_cmd_sync(invk);} + public GfuiInvkCmd New_cmd_async(Gfo_invk invk) {return new Gfui_kit_cmd_async(invk);} public GfuiWin New_win_app(String key, Keyval... args) { GfuiWin rv = GfuiWin_.kit_(this, key, this.Factory().win_app_(), ctor_args); main_win = rv; @@ -100,14 +101,14 @@ public abstract class Gfui_kit_base implements Gfui_kit { } } class Gfui_kit_cmd_sync implements GfuiInvkCmd { - public Gfui_kit_cmd_sync(GfoInvkAble target) {this.target = target;} private GfoInvkAble target; + public Gfui_kit_cmd_sync(Gfo_invk target) {this.target = target;} private Gfo_invk target; public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { return target.Invk(ctx, ikey, k, m); } public void Rls() {target = null;} } class Gfui_kit_cmd_async implements GfuiInvkCmd { - public Gfui_kit_cmd_async(GfoInvkAble target) {this.target = target;} private GfoInvkAble target; + public Gfui_kit_cmd_async(Gfo_invk target) {this.target = target;} private Gfo_invk target; public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { return target.Invk(ctx, ikey, k, m); } diff --git a/150_gfui/src_700_env/gplx/gfui/Gfui_mnu_grp.java b/150_gfui/src/gplx/gfui/kits/core/Gfui_mnu_grp.java similarity index 61% rename from 150_gfui/src_700_env/gplx/gfui/Gfui_mnu_grp.java rename to 150_gfui/src/gplx/gfui/kits/core/Gfui_mnu_grp.java index 010826e60..4bc95314b 100644 --- a/150_gfui/src_700_env/gplx/gfui/Gfui_mnu_grp.java +++ b/150_gfui/src/gplx/gfui/kits/core/Gfui_mnu_grp.java @@ -15,15 +15,16 @@ 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.gfui; import gplx.*; +package gplx.gfui.kits.core; import gplx.*; import gplx.gfui.*; import gplx.gfui.kits.*; +import gplx.gfui.imgs.*; public interface Gfui_mnu_grp extends Gfui_mnu_itm { String Root_key(); void Itms_clear(); boolean Disposed(); - Gfui_mnu_itm Itms_add_btn_cmd (String txt, ImageAdp img, GfoInvkAble invk, String invk_cmd); - Gfui_mnu_itm Itms_add_btn_msg (String txt, ImageAdp img, GfoInvkAble invk, GfoInvkRootWkr root_wkr, GfoMsg msg); - Gfui_mnu_itm Itms_add_chk_msg (String txt, ImageAdp img, GfoInvkAble invk, GfoInvkRootWkr root_wkr, GfoMsg msg_n, GfoMsg msg_y); - Gfui_mnu_itm Itms_add_rdo_msg (String txt, ImageAdp img, GfoInvkAble invk, GfoInvkRootWkr root_wkr, GfoMsg msg); + Gfui_mnu_itm Itms_add_btn_cmd (String txt, ImageAdp img, Gfo_invk invk, String invk_cmd); + Gfui_mnu_itm Itms_add_btn_msg (String txt, ImageAdp img, Gfo_invk invk, Gfo_invk_root_wkr root_wkr, GfoMsg msg); + Gfui_mnu_itm Itms_add_chk_msg (String txt, ImageAdp img, Gfo_invk invk, Gfo_invk_root_wkr root_wkr, GfoMsg msg_n, GfoMsg msg_y); + Gfui_mnu_itm Itms_add_rdo_msg (String txt, ImageAdp img, Gfo_invk invk, Gfo_invk_root_wkr root_wkr, GfoMsg msg); Gfui_mnu_grp Itms_add_grp (String txt, ImageAdp img); Gfui_mnu_itm Itms_add_separator(); } diff --git a/150_gfui/src_700_env/gplx/gfui/Gfui_mnu_grp_.java b/150_gfui/src/gplx/gfui/kits/core/Gfui_mnu_grp_.java similarity index 79% rename from 150_gfui/src_700_env/gplx/gfui/Gfui_mnu_grp_.java rename to 150_gfui/src/gplx/gfui/kits/core/Gfui_mnu_grp_.java index b5be95f66..f2a3eac3c 100644 --- a/150_gfui/src_700_env/gplx/gfui/Gfui_mnu_grp_.java +++ b/150_gfui/src/gplx/gfui/kits/core/Gfui_mnu_grp_.java @@ -15,9 +15,10 @@ 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.gfui; import gplx.*; +package gplx.gfui.kits.core; import gplx.*; import gplx.gfui.*; import gplx.gfui.kits.*; +import gplx.gfui.imgs.*; public class Gfui_mnu_grp_ { - public static final Gfui_mnu_grp Noop = new Gfui_mnu_grp_noop(); + public static final Gfui_mnu_grp Noop = new Gfui_mnu_grp_noop(); } class Gfui_mnu_grp_noop implements Gfui_mnu_grp { public String Uid() {return "";} @@ -30,10 +31,10 @@ class Gfui_mnu_grp_noop implements Gfui_mnu_grp { public String Root_key() {return "null";} public Object Under() {return null;} public void Itms_clear() {} - public Gfui_mnu_itm Itms_add_btn_cmd (String txt, ImageAdp img, GfoInvkAble invk, String invk_cmd) {return Gfui_mnu_itm_null.Null;} - public Gfui_mnu_itm Itms_add_btn_msg (String txt, ImageAdp img, GfoInvkAble invk, GfoInvkRootWkr root_wkr, GfoMsg invk_msg) {return Gfui_mnu_itm_null.Null;} - public Gfui_mnu_itm Itms_add_chk_msg (String txt, ImageAdp img, GfoInvkAble invk, GfoInvkRootWkr root_wkr, GfoMsg msg_n, GfoMsg msg_y) {return Gfui_mnu_itm_null.Null;} - public Gfui_mnu_itm Itms_add_rdo_msg (String txt, ImageAdp img, GfoInvkAble invk, GfoInvkRootWkr root_wkr, GfoMsg msg) {return Gfui_mnu_itm_null.Null;} + public Gfui_mnu_itm Itms_add_btn_cmd (String txt, ImageAdp img, Gfo_invk invk, String invk_cmd) {return Gfui_mnu_itm_null.Null;} + public Gfui_mnu_itm Itms_add_btn_msg (String txt, ImageAdp img, Gfo_invk invk, Gfo_invk_root_wkr root_wkr, GfoMsg invk_msg) {return Gfui_mnu_itm_null.Null;} + public Gfui_mnu_itm Itms_add_chk_msg (String txt, ImageAdp img, Gfo_invk invk, Gfo_invk_root_wkr root_wkr, GfoMsg msg_n, GfoMsg msg_y) {return Gfui_mnu_itm_null.Null;} + public Gfui_mnu_itm Itms_add_rdo_msg (String txt, ImageAdp img, Gfo_invk invk, Gfo_invk_root_wkr root_wkr, GfoMsg msg) {return Gfui_mnu_itm_null.Null;} public Gfui_mnu_grp Itms_add_grp(String txt, ImageAdp img) {return Gfui_mnu_grp_.Noop;} public Gfui_mnu_itm Itms_add_separator() {return Gfui_mnu_itm_null.Null;} } diff --git a/150_gfui/src_700_env/gplx/gfui/Gfui_mnu_itm.java b/150_gfui/src/gplx/gfui/kits/core/Gfui_mnu_itm.java similarity index 86% rename from 150_gfui/src_700_env/gplx/gfui/Gfui_mnu_itm.java rename to 150_gfui/src/gplx/gfui/kits/core/Gfui_mnu_itm.java index 9b4e8e8e6..6190ad8c3 100644 --- a/150_gfui/src_700_env/gplx/gfui/Gfui_mnu_itm.java +++ b/150_gfui/src/gplx/gfui/kits/core/Gfui_mnu_itm.java @@ -15,7 +15,8 @@ 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.gfui; import gplx.*; +package gplx.gfui.kits.core; import gplx.*; import gplx.gfui.*; import gplx.gfui.kits.*; +import gplx.gfui.imgs.*; public interface Gfui_mnu_itm { int Tid(); String Uid(); @@ -33,5 +34,5 @@ class Gfui_mnu_itm_null implements Gfui_mnu_itm { public ImageAdp Img() {return img;} public void Img_(ImageAdp v) {img = v;} private ImageAdp img; public boolean Selected() {return true;} public void Selected_(boolean v) {} public Object Under() {return null;} - public static final Gfui_mnu_itm_null Null = new Gfui_mnu_itm_null(); Gfui_mnu_itm_null() {} + public static final Gfui_mnu_itm_null Null = new Gfui_mnu_itm_null(); Gfui_mnu_itm_null() {} } diff --git a/150_gfui/src_700_env/gplx/gfui/Gfui_mnu_itm_.java b/150_gfui/src/gplx/gfui/kits/core/Gfui_mnu_itm_.java similarity index 91% rename from 150_gfui/src_700_env/gplx/gfui/Gfui_mnu_itm_.java rename to 150_gfui/src/gplx/gfui/kits/core/Gfui_mnu_itm_.java index 61edf86b0..b0954b991 100644 --- a/150_gfui/src_700_env/gplx/gfui/Gfui_mnu_itm_.java +++ b/150_gfui/src/gplx/gfui/kits/core/Gfui_mnu_itm_.java @@ -15,7 +15,7 @@ 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.gfui; import gplx.*; +package gplx.gfui.kits.core; import gplx.*; import gplx.gfui.*; import gplx.gfui.kits.*; public class Gfui_mnu_itm_ { public static String Gen_uid() {return "mnu_" + Int_.To_str(++uid_next);} private static int uid_next = 0; public static final int Tid_nil = 0, Tid_grp = 1, Tid_spr = 2, Tid_btn = 3, Tid_chk = 4, Tid_rdo = 5; diff --git a/150_gfui/src_700_env/gplx/gfui/Mem_html.java b/150_gfui/src/gplx/gfui/kits/core/Mem_html.java similarity index 89% rename from 150_gfui/src_700_env/gplx/gfui/Mem_html.java rename to 150_gfui/src/gplx/gfui/kits/core/Mem_html.java index 35f50546e..bfd537497 100644 --- a/150_gfui/src_700_env/gplx/gfui/Mem_html.java +++ b/150_gfui/src/gplx/gfui/kits/core/Mem_html.java @@ -15,8 +15,9 @@ 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.gfui; import gplx.*; -class Mem_html extends GxwTextMemo_lang implements Gxw_html { public void Html_invk_src_(GfoEvObj v) {} +package gplx.gfui.kits.core; import gplx.*; import gplx.gfui.*; import gplx.gfui.kits.*; +import gplx.gfui.draws.*; import gplx.gfui.controls.gxws.*; import gplx.gfui.controls.elems.*; import gplx.gfui.controls.standards.*; +class Mem_html extends GxwTextMemo_lang implements Gxw_html { public void Html_invk_src_(Gfo_evt_itm v) {} public void Html_doc_html_load_by_mem(String s) { // this.Core().ForeColor_set(plainText ? ColorAdp_.Black : ColorAdp_.Gray); s = String_.Replace(s, "\r", ""); @@ -31,6 +32,7 @@ class Mem_html extends GxwTextMemo_lang implements Gxw_html { public void Html_ public byte Html_doc_html_load_tid() {return html_doc_html_load_tid;} private byte html_doc_html_load_tid; public void Html_doc_html_load_tid_(byte v) {html_doc_html_load_tid = v;} public String Html_js_eval_script(String script) {return "";} + public Object Html_js_eval_script_as_obj(String script) {return "";} public String Html_js_send_json(String name, String data) {return "";} String ExtractAtr(String key, String txt, int pos) { int key_pos = String_.FindBwd(txt, key, pos); if (key_pos == String_.Find_none) return null; @@ -42,7 +44,7 @@ class Mem_html extends GxwTextMemo_lang implements Gxw_html { public void Html_ public void Html_js_enabled_(boolean v) {} public String Html_js_eval_proc_as_str(String proc, Object... args) {return "not implemented by mem_html";} public boolean Html_js_eval_proc_as_bool(String proc, Object... args) {return false;} - public void Html_js_cbks_add(String js_func_name, GfoInvkAble invk) {} + public void Html_js_cbks_add(String js_func_name, Gfo_invk invk) {} public void Html_dispose() {} public Mem_html() { this.ctor_MsTextBoxMultiline_(); diff --git a/150_gfui/src_700_env/gplx/gfui/Mem_kit.java b/150_gfui/src/gplx/gfui/kits/core/Mem_kit.java similarity index 85% rename from 150_gfui/src_700_env/gplx/gfui/Mem_kit.java rename to 150_gfui/src/gplx/gfui/kits/core/Mem_kit.java index 2d1e9df3f..13d0532f3 100644 --- a/150_gfui/src_700_env/gplx/gfui/Mem_kit.java +++ b/150_gfui/src/gplx/gfui/kits/core/Mem_kit.java @@ -15,7 +15,8 @@ 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.gfui; import gplx.*; +package gplx.gfui.kits.core; import gplx.*; import gplx.gfui.*; import gplx.gfui.kits.*; +import gplx.gfui.imgs.*; import gplx.gfui.controls.gxws.*; import gplx.gfui.controls.elems.*; import gplx.gfui.controls.standards.*; public class Mem_kit extends Gfui_kit_base { @Override public byte Tid() {return Gfui_kit_.Mem_tid;} @Override public String Key() {return "mem";} @@ -35,5 +36,5 @@ public class Mem_kit extends Gfui_kit_base { @Override protected GxwElem New_btn_impl() {return factory.control_();} @Override protected GxwElem New_combo_impl() {return factory.comboBox_();} @Override public ImageAdp New_img_load(Io_url url) {return ImageAdp_null.Instance;} - public static final Mem_kit Instance = new Mem_kit(); Mem_kit() {} + public static final Mem_kit Instance = new Mem_kit(); Mem_kit() {} } diff --git a/150_gfui/src_700_env/gplx/gfui/Swing_kit.java b/150_gfui/src/gplx/gfui/kits/core/Swing_kit.java similarity index 84% rename from 150_gfui/src_700_env/gplx/gfui/Swing_kit.java rename to 150_gfui/src/gplx/gfui/kits/core/Swing_kit.java index 42f06365e..e44cc4424 100644 --- a/150_gfui/src_700_env/gplx/gfui/Swing_kit.java +++ b/150_gfui/src/gplx/gfui/kits/core/Swing_kit.java @@ -15,21 +15,22 @@ 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.gfui; import gplx.*; +package gplx.gfui.kits.core; import gplx.*; import gplx.gfui.*; import gplx.gfui.kits.*; +import gplx.gfui.imgs.*; import gplx.gfui.controls.gxws.*; import gplx.core.brys.fmtrs.*; public class Swing_kit extends Gfui_kit_base { - private Bry_fmtr ask_fmtr = Bry_fmtr.new_(); private Bry_bfr ask_bfr = Bry_bfr.new_(); + private Bry_fmtr ask_fmtr = Bry_fmtr.new_(); private Bry_bfr ask_bfr = Bry_bfr_.New(); @Override public byte Tid() {return Gfui_kit_.Swing_tid;} @Override public String Key() {return "swing";} @Override public GxwElemFactory_base Factory() {return factory;} private GxwElemFactory_cls_lang factory = new GxwElemFactory_cls_lang(); @Override public void Ask_ok(String grp_key, String msg_key, String fmt, Object... args) {GfuiEnv_.ShowMsg(ask_fmtr.Bld_str_many(ask_bfr, fmt, args));} @Override public void Kit_run() {GfuiEnv_.Run(this.Main_win());} - @Override public void Kit_term() {this.Kit_term_cbk().Invk(); GfuiEnv_.Exit();} + @Override public void Kit_term() {this.Kit_term_cbk().Exec(); GfuiEnv_.Exit();} @Override public ImageAdp New_img_load(Io_url url) {return ImageAdp_.file_(url);} @Override protected Gxw_html New_html_impl() {return new Mem_html();} @Override protected Gxw_tab_mgr New_tab_mgr_impl() {return new Mem_tab_mgr();} @Override protected Gxw_tab_itm New_tab_itm_impl() {return new Mem_tab_itm();} @Override protected GxwElem New_btn_impl() {return factory.control_();} @Override protected GxwElem New_combo_impl() {return factory.control_();} - public static final Swing_kit Instance = new Swing_kit(); Swing_kit() {} + public static final Swing_kit Instance = new Swing_kit(); Swing_kit() {} } diff --git a/150_gfui/src_700_env/gplx/gfui/Swt_kit.java b/150_gfui/src/gplx/gfui/kits/core/Swt_kit.java similarity index 87% rename from 150_gfui/src_700_env/gplx/gfui/Swt_kit.java rename to 150_gfui/src/gplx/gfui/kits/core/Swt_kit.java index ca19f71ad..8dd4ab9a8 100644 --- a/150_gfui/src_700_env/gplx/gfui/Swt_kit.java +++ b/150_gfui/src/gplx/gfui/kits/core/Swt_kit.java @@ -15,8 +15,10 @@ 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.gfui; import gplx.*; +package gplx.gfui.kits.core; import gplx.*; import gplx.gfui.*; import gplx.gfui.kits.*; import gplx.core.brys.fmtrs.*; +import gplx.gfui.imgs.*; import gplx.gfui.controls.elems.*; import gplx.gfui.controls.standards.*; import gplx.gfui.controls.customs.*; import gplx.gfui.controls.windows.*; +import gplx.gfui.kits.swts.*; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Display; @@ -44,12 +46,24 @@ import org.eclipse.swt.graphics.Rectangle; import org.eclipse.swt.widgets.Button; import org.omg.PortableServer.THREAD_POLICY_ID; + import gplx.core.threads.*; +import gplx.gfui.controls.customs.GfuiStatusBox; +import gplx.gfui.controls.customs.GfuiStatusBox_; +import gplx.gfui.controls.elems.GfuiElem; +import gplx.gfui.controls.gxws.GxwCore_base; +import gplx.gfui.controls.gxws.GxwTextFld; +import gplx.gfui.controls.standards.*; +import gplx.gfui.controls.windows.GfoConsoleWin; +import gplx.gfui.controls.windows.GfuiWin; +import gplx.gfui.controls.windows.GfuiWin_; +import gplx.gfui.draws.*; +import gplx.gfui.imgs.*; public class Swt_kit implements Gfui_kit { private final Keyval_hash ctor_args = new Keyval_hash(); private final Keyval_hash ctor_args_null = new Keyval_hash(); - private final Hash_adp kit_args = Hash_adp_.new_(); private Swt_msg_wkr_stop msg_wkr_stop; + private final Hash_adp kit_args = Hash_adp_.New(); private Swt_msg_wkr_stop msg_wkr_stop; private Gfo_usr_dlg gui_wtr; private String xul_runner_path = null; - private final Bry_fmtr ask_fmtr = Bry_fmtr.new_().Fail_when_invalid_escapes_(false); private final Bry_bfr ask_bfr = Bry_bfr.new_(); + private final Bry_fmtr ask_fmtr = Bry_fmtr.new_().Fail_when_invalid_escapes_(false); private final Bry_bfr ask_bfr = Bry_bfr_.New(); private final Object thread_lock = new Object(); public byte Tid() {return Gfui_kit_.Swt_tid;} public String Key() {return "swt";} @@ -60,10 +74,10 @@ public class Swt_kit implements Gfui_kit { public void Kit_mode_(int v) {synchronized (thread_lock) {mode = v;}} public boolean Kit_mode__ready() {return Kit_mode() == Swt_kit_mode.Tid_ready;} public boolean Kit_mode__term() {return Kit_mode() == Swt_kit_mode.Tid_term;} - public boolean Kit_sync_cmd_exists() {synchronized (thread_lock) {return sync_cmd_list.Count() != 0;}} private final List_adp sync_cmd_list = List_adp_.new_(); + public boolean Kit_sync_cmd_exists() {synchronized (thread_lock) {return sync_cmd_list.Count() != 0;}} private final List_adp sync_cmd_list = List_adp_.New(); public void Kit_sync_cmd_add(Swt_gui_cmd cmd) {synchronized (thread_lock) {sync_cmd_list.Add(cmd);}} public void Kit_sync_cmd_del(Swt_gui_cmd cmd) {synchronized (thread_lock) {sync_cmd_list.Del(cmd);}} - public GfoInvkAbleCmd Kit_term_cbk() {return term_cbk;} public void Kit_term_cbk_(GfoInvkAbleCmd v) {this.term_cbk = v;} private GfoInvkAbleCmd term_cbk = GfoInvkAbleCmd.Null; + public Gfo_invk_cmd Kit_term_cbk() {return term_cbk;} public void Kit_term_cbk_(Gfo_invk_cmd v) {this.term_cbk = v;} private Gfo_invk_cmd term_cbk = Gfo_invk_cmd.Noop; public void Kit_init(Gfo_usr_dlg gui_wtr) { this.gui_wtr = gui_wtr; this.msg_wkr_stop = new Swt_msg_wkr_stop(this, gui_wtr); @@ -131,8 +145,8 @@ public class Swt_kit implements Gfui_kit { Swt_dlg_msg dlg = (Swt_dlg_msg)New_dlg_msg(ask_fmtr.Bld_str_many(ask_bfr, fmt, args)).Init_btns_(Gfui_dlg_msg_.Btn_ok).Init_ico_(Gfui_dlg_msg_.Ico_information); display.syncExec(dlg); } - public GfuiInvkCmd New_cmd_sync (GfoInvkAble invk) {return new Swt_gui_cmd(this, gui_wtr, display, invk, Bool_.N);} - public GfuiInvkCmd New_cmd_async(GfoInvkAble invk) {return new Swt_gui_cmd(this, gui_wtr, display, invk, Bool_.Y);} + public GfuiInvkCmd New_cmd_sync (Gfo_invk invk) {return new Swt_gui_cmd(this, gui_wtr, display, invk, Bool_.N);} + public GfuiInvkCmd New_cmd_async(Gfo_invk invk) {return new Swt_gui_cmd(this, gui_wtr, display, invk, Bool_.Y);} public GfuiWin New_win_utl(String key, GfuiWin owner, Keyval... args) { return GfuiWin_.kit_(this, key, new Swt_win(shell), ctor_args_null); } @@ -172,7 +186,7 @@ public class Swt_kit implements Gfui_kit { Swt_tab_mgr rv_swt = new Swt_tab_mgr(this, Swt_control_.cast_or_fail(owner), ctor_args); Gfui_tab_mgr rv = Gfui_tab_mgr.kit_(this, key, rv_swt, ctor_args); rv.Owner_(owner); - rv_swt.EvMgr_(rv.EvMgr()); + rv_swt.Evt_mgr_(rv.Evt_mgr()); return rv; } public GfuiTextBox New_text_box(String key, GfuiElem owner, Keyval... args) { @@ -191,7 +205,7 @@ public class Swt_kit implements Gfui_kit { Swt_combo_ctrl rv_swt = new Swt_combo_ctrl(Swt_control_.cast_or_fail(owner), this.New_color(ColorAdp_.LightGray), ctor_args); GfuiComboBox rv = GfuiComboBox.kit_(this, key, rv_swt, ctor_args); rv.Owner_(owner); - rv_swt.EvMgr_(rv.EvMgr()); + rv_swt.Evt_mgr_(rv.Evt_mgr()); return rv; } public GfuiStatusBox New_status_box(String key, GfuiElem owner, Keyval... args) { @@ -265,18 +279,18 @@ public class Swt_kit implements Gfui_kit { } public static void Control_font_set(FontAdp font, GxwCore_base owner, Control control) { font.OwnerGxwCore_(owner); - FontData fontData = new FontData(font.Name(), (int)font.size, font.Style().Val()); + FontData fontData = new FontData(font.Name(), (int)font.Size(), font.Style().Val()); Font rv = new Font(control.getDisplay(), fontData); control.setFont(rv); } } -class Swt_shell_close_lnr implements Listener, GfoInvkAble { +class Swt_shell_close_lnr implements Listener, Gfo_invk { private final Swt_kit kit; private final Gfo_usr_dlg usr_dlg; public Swt_shell_close_lnr(Swt_kit kit, Gfo_usr_dlg usr_dlg) {this.kit = kit; this.usr_dlg = usr_dlg;} @Override public void handleEvent(Event event) { if (kit.Kit_mode__term()) return; // NOTE: will be term if called again from wait_for_sync_cmd kit.Kit_mode_(Swt_kit_mode.Tid_term); // NOTE: must mark kit as shutting down, else writing to status_bar will create stack overflow; DATE:2014-05-05 - boolean rslt = Bool_.cast(kit.Kit_term_cbk().Invk()); // call bgn term + boolean rslt = Bool_.cast(kit.Kit_term_cbk().Exec()); // call bgn term if (!rslt) { event.doit = false; // cbk canceled term; stop close kit.Kit_mode_(Swt_kit_mode.Tid_ready); // reset kit back to "running" mode; @@ -284,7 +298,7 @@ class Swt_shell_close_lnr implements Listener, GfoInvkAble { } if (kit.Kit_sync_cmd_exists()) { // sync cmd is running; cannot shut down app else app just hangs; DATE:2015-04-13 event.doit = false; // cancel shutdown - Thread_adp_.invk_(this, Invk_wait_for_sync_cmd).Start(); // wait for sync_cmd to end in background thread; call shutdown again when it does + Thread_adp_.Start_by_key(Invk_wait_for_sync_cmd, this, Invk_wait_for_sync_cmd); // wait for sync_cmd to end in background thread; call shutdown again when it does } } private void Wait_for_sync_cmd() { // THREAD:non-GUI @@ -300,11 +314,11 @@ class Swt_shell_close_lnr implements Listener, GfoInvkAble { } if (loop_count == loop_max) usr_dlg.Log_many("", "", "swt:sync_wait failed", loop_count); - GfoInvkAble_.InvkCmd(kit.New_cmd_sync(kit), Swt_kit.Invk_shell_close); // shutdown again; note that cmd must be called on GUI thread + Gfo_invk_.Invk_by_key(kit.New_cmd_sync(kit), Swt_kit.Invk_shell_close); // shutdown again; note that cmd must be called on GUI thread } public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_wait_for_sync_cmd)) Wait_for_sync_cmd(); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String Invk_wait_for_sync_cmd = "wait_for_sync_cmd"; } @@ -316,10 +330,10 @@ class Swt_kit_mode { ; } class Swt_gui_cmd implements GfuiInvkCmd, Runnable { - private final Swt_kit kit; private final Gfo_usr_dlg usr_dlg; private final Display display; private final GfoInvkAble target; private final boolean async; + private final Swt_kit kit; private final Gfo_usr_dlg usr_dlg; private final Display display; private final Gfo_invk target; private final boolean async; private GfsCtx invk_ctx; private int invk_ikey; private String invk_key; private GfoMsg invk_msg; private Object rv_obj; - public Swt_gui_cmd(Swt_kit kit, Gfo_usr_dlg usr_dlg, Display display, GfoInvkAble target, boolean async) { + public Swt_gui_cmd(Swt_kit kit, Gfo_usr_dlg usr_dlg, Display display, Gfo_invk target, boolean async) { this.kit = kit; this.usr_dlg = usr_dlg; this.display = display; this.target = target; this.async = async; } public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { diff --git a/150_gfui/src_700_env/gplx/gfui/TxtFindMgr.java b/150_gfui/src/gplx/gfui/kits/core/TxtFindMgr.java similarity index 94% rename from 150_gfui/src_700_env/gplx/gfui/TxtFindMgr.java rename to 150_gfui/src/gplx/gfui/kits/core/TxtFindMgr.java index e0dfc7cbe..131e46d0d 100644 --- a/150_gfui/src_700_env/gplx/gfui/TxtFindMgr.java +++ b/150_gfui/src/gplx/gfui/kits/core/TxtFindMgr.java @@ -15,7 +15,7 @@ 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.gfui; import gplx.*; +package gplx.gfui.kits.core; import gplx.*; import gplx.gfui.*; import gplx.gfui.kits.*; public class TxtFindMgr { public String Text() {return text;} public TxtFindMgr Text_(String v) { diff --git a/150_gfui/xtn/gplx/gfui/Swt_app_browser.java b/150_gfui/src/gplx/gfui/kits/swts/Swt_app_browser.java similarity index 96% rename from 150_gfui/xtn/gplx/gfui/Swt_app_browser.java rename to 150_gfui/src/gplx/gfui/kits/swts/Swt_app_browser.java index 4a884cf77..e2d07bd9a 100644 --- a/150_gfui/xtn/gplx/gfui/Swt_app_browser.java +++ b/150_gfui/src/gplx/gfui/kits/swts/Swt_app_browser.java @@ -15,7 +15,7 @@ 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.gfui; +package gplx.gfui.kits.swts; import gplx.*; import gplx.gfui.*; import gplx.gfui.kits.*; import gplx.*; import gplx.core.envs.Env_; diff --git a/150_gfui/xtn/gplx/gfui/Swt_app_main.java b/150_gfui/src/gplx/gfui/kits/swts/Swt_app_main.java similarity index 96% rename from 150_gfui/xtn/gplx/gfui/Swt_app_main.java rename to 150_gfui/src/gplx/gfui/kits/swts/Swt_app_main.java index 12de696eb..baa01bfdd 100644 --- a/150_gfui/xtn/gplx/gfui/Swt_app_main.java +++ b/150_gfui/src/gplx/gfui/kits/swts/Swt_app_main.java @@ -15,7 +15,7 @@ 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.gfui; +package gplx.gfui.kits.swts; import gplx.*; import gplx.gfui.*; import gplx.gfui.kits.*; import gplx.Byte_ascii; import gplx.String_; diff --git a/150_gfui/xtn/gplx/gfui/Swt_btn.java b/150_gfui/src/gplx/gfui/kits/swts/Swt_btn.java similarity index 58% rename from 150_gfui/xtn/gplx/gfui/Swt_btn.java rename to 150_gfui/src/gplx/gfui/kits/swts/Swt_btn.java index 9585eeb75..db1e2aa70 100644 --- a/150_gfui/xtn/gplx/gfui/Swt_btn.java +++ b/150_gfui/src/gplx/gfui/kits/swts/Swt_btn.java @@ -15,7 +15,11 @@ 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.gfui; import gplx.*; +package gplx.gfui.kits.swts; import gplx.*; import gplx.gfui.*; import gplx.gfui.kits.*; +import gplx.gfui.controls.gxws.GxwCbkHost; +import gplx.gfui.controls.gxws.GxwCore_base; +import gplx.gfui.controls.gxws.GxwElem; + import org.eclipse.swt.SWT; import org.eclipse.swt.custom.CLabel; import org.eclipse.swt.events.FocusListener; @@ -39,7 +43,7 @@ import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Text; import org.eclipse.swt.widgets.ToolBar; import org.eclipse.swt.widgets.ToolItem; -class Swt_btn implements GxwElem, Swt_control { +public class Swt_btn implements GxwElem, Swt_control { private Button btn; public Swt_btn(Swt_control owner, Keyval_hash ctorArgs) { btn = new Button(owner.Under_composite(), SWT.FLAT | SWT.PUSH); @@ -56,45 +60,10 @@ class Swt_btn implements GxwElem, Swt_control { @Override public void EnableDoubleBuffering() {} @Override public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {return null;} } -class Swt_btn_no_border implements GxwElem, Swt_control { - private ImageAdp btn_img; private Composite box_grp; private Label box_btn; - public Swt_btn_no_border(Swt_control owner_control, Keyval_hash ctorArgs) { - Composite owner = owner_control.Under_composite(); - Make_btn_no_border(owner.getDisplay(), owner.getShell(), owner); - this.core = new Swt_core_cmds(box_btn); - box_btn.addKeyListener(new Swt_lnr_key(this)); - box_btn.addMouseListener(new Swt_lnr_mouse(this)); - } - @Override public Control Under_control() {return box_btn;} - @Override public Control Under_menu_control() {return box_btn;} - @Override public String TextVal() {return box_btn.getText();} @Override public void TextVal_set(String v) {box_btn.setText(v);} - @Override public GxwCore_base Core() {return core;} private final Swt_core_cmds core; - @Override public GxwCbkHost Host() {return host;} @Override public void Host_set(GxwCbkHost host) {this.host = host;} private GxwCbkHost host; - @Override public Composite Under_composite() {return null;} - @Override public void EnableDoubleBuffering() {} - @Override public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { - if (ctx.Match(k, GfuiBtn.Invk_btn_img)) return btn_img; - else if (ctx.Match(k, GfuiBtn.Invk_btn_img_)) Btn_img_((ImageAdp)m.CastObj("v")); - return null; - } - void Btn_img_(ImageAdp v) { - if (box_btn == null || v == null) return; - SizeAdp size = core.Size(); - int dif = 6; - box_btn.setImage((Image)v.Resize(size.Width() - dif, size.Height() - dif).Under()); - } - void Make_btn_no_border(Display display, Shell shell, Control owner) { - box_grp = new Composite(shell, SWT.FLAT); - box_btn = new Label(shell, SWT.FLAT); - box_btn.setSize(25, 25); - box_btn.setBackground(display.getSystemColor(SWT.COLOR_WHITE)); - box_btn.addFocusListener(new Swt_clabel_lnr_focus(box_grp)); - } -} class Swt_clabel_lnr_focus implements FocusListener { public Swt_clabel_lnr_focus(Control v) {this.surrogate = v;} Control surrogate; @Override public void focusGained(org.eclipse.swt.events.FocusEvent e) { surrogate.forceFocus(); } @Override public void focusLost(org.eclipse.swt.events.FocusEvent arg0) {} -} \ No newline at end of file +} diff --git a/150_gfui/src/gplx/gfui/kits/swts/Swt_btn_no_border.java b/150_gfui/src/gplx/gfui/kits/swts/Swt_btn_no_border.java new file mode 100644 index 000000000..46cc48fbd --- /dev/null +++ b/150_gfui/src/gplx/gfui/kits/swts/Swt_btn_no_border.java @@ -0,0 +1,71 @@ +/* +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.gfui.kits.swts; import gplx.*; import gplx.gfui.*; import gplx.gfui.kits.*; +import gplx.GfoMsg; +import gplx.GfsCtx; +import gplx.Keyval_hash; +import gplx.gfui.SizeAdp; +import gplx.gfui.controls.gxws.GxwCbkHost; +import gplx.gfui.controls.gxws.GxwCore_base; +import gplx.gfui.controls.gxws.GxwElem; +import gplx.gfui.controls.standards.GfuiBtn; +import gplx.gfui.imgs.ImageAdp; + +import org.eclipse.swt.SWT; +import org.eclipse.swt.graphics.Image; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.swt.widgets.Display; +import org.eclipse.swt.widgets.Label; +import org.eclipse.swt.widgets.Shell; + +public class Swt_btn_no_border implements GxwElem, Swt_control { + private ImageAdp btn_img; private Composite box_grp; private Label box_btn; + public Swt_btn_no_border(Swt_control owner_control, Keyval_hash ctorArgs) { + Composite owner = owner_control.Under_composite(); + Make_btn_no_border(owner.getDisplay(), owner.getShell(), owner); + this.core = new Swt_core_cmds(box_btn); + box_btn.addKeyListener(new Swt_lnr_key(this)); + box_btn.addMouseListener(new Swt_lnr_mouse(this)); + } + @Override public Control Under_control() {return box_btn;} + @Override public Control Under_menu_control() {return box_btn;} + @Override public String TextVal() {return box_btn.getText();} @Override public void TextVal_set(String v) {box_btn.setText(v);} + @Override public GxwCore_base Core() {return core;} private final Swt_core_cmds core; + @Override public GxwCbkHost Host() {return host;} @Override public void Host_set(GxwCbkHost host) {this.host = host;} private GxwCbkHost host; + @Override public Composite Under_composite() {return null;} + @Override public void EnableDoubleBuffering() {} + @Override public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { + if (ctx.Match(k, GfuiBtn.Invk_btn_img)) return btn_img; + else if (ctx.Match(k, GfuiBtn.Invk_btn_img_)) Btn_img_((ImageAdp)m.CastObj("v")); + return null; + } + void Btn_img_(ImageAdp v) { + if (box_btn == null || v == null) return; + SizeAdp size = core.Size(); + int dif = 6; + box_btn.setImage((Image)v.Resize(size.Width() - dif, size.Height() - dif).Under()); + } + void Make_btn_no_border(Display display, Shell shell, Control owner) { + box_grp = new Composite(shell, SWT.FLAT); + box_btn = new Label(shell, SWT.FLAT); + box_btn.setSize(25, 25); + box_btn.setBackground(display.getSystemColor(SWT.COLOR_WHITE)); + box_btn.addFocusListener(new Swt_clabel_lnr_focus(box_grp)); + } +} diff --git a/150_gfui/xtn/gplx/gfui/Swt_clipboard.java b/150_gfui/src/gplx/gfui/kits/swts/Swt_clipboard.java similarity index 86% rename from 150_gfui/xtn/gplx/gfui/Swt_clipboard.java rename to 150_gfui/src/gplx/gfui/kits/swts/Swt_clipboard.java index 8df569968..af497194d 100644 --- a/150_gfui/xtn/gplx/gfui/Swt_clipboard.java +++ b/150_gfui/src/gplx/gfui/kits/swts/Swt_clipboard.java @@ -15,14 +15,18 @@ 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.gfui; import gplx.*; +package gplx.gfui.kits.swts; import gplx.*; import gplx.gfui.*; import gplx.gfui.kits.*; +import gplx.gfui.ipts.*; +import gplx.gfui.kits.core.Gfui_clipboard; +import gplx.gfui.kits.core.Gfui_clipboard_; + import org.eclipse.swt.SWT; import org.eclipse.swt.dnd.Clipboard; import org.eclipse.swt.dnd.TextTransfer; import org.eclipse.swt.dnd.Transfer; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Event; -class Swt_clipboard implements Gfui_clipboard { +public class Swt_clipboard implements Gfui_clipboard { public Swt_clipboard(Display display) { this.display = display; clipboard = new Clipboard(display); @@ -35,7 +39,7 @@ class Swt_clipboard implements Gfui_clipboard { public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Gfui_clipboard_.Invk_copy)) Send_key(IptKey_.Ctrl, 'C'); else if (ctx.Match(k, Gfui_clipboard_.Invk_select_all)) Send_key(IptKey_.Ctrl, 'A'); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } @Override public void Rls() {clipboard.dispose();} diff --git a/150_gfui/xtn/gplx/gfui/Swt_combo.java b/150_gfui/src/gplx/gfui/kits/swts/Swt_combo.java similarity index 86% rename from 150_gfui/xtn/gplx/gfui/Swt_combo.java rename to 150_gfui/src/gplx/gfui/kits/swts/Swt_combo.java index 53faa917d..cfe85f284 100644 --- a/150_gfui/xtn/gplx/gfui/Swt_combo.java +++ b/150_gfui/src/gplx/gfui/kits/swts/Swt_combo.java @@ -15,11 +15,10 @@ 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.gfui; - -import gplx.GfoEvMgr; -import gplx.GfoEvMgrOwner; -import gplx.GfoEvMgr_; +package gplx.gfui.kits.swts; import gplx.*; import gplx.gfui.*; import gplx.gfui.kits.*; +import gplx.Gfo_evt_mgr; +import gplx.Gfo_evt_mgr_owner; +import gplx.Gfo_evt_mgr_; import gplx.GfoMsg; import gplx.GfsCtx; import gplx.Keyval_hash; @@ -27,6 +26,11 @@ import gplx.String_; import gplx.Tfds; import gplx.core.threads.Thread_adp; import gplx.core.threads.Thread_adp_; +import gplx.gfui.controls.gxws.GxwCbkHost; +import gplx.gfui.controls.gxws.GxwComboBox; +import gplx.gfui.controls.gxws.GxwCore_base; +import gplx.gfui.controls.gxws.GxwElem; +import gplx.gfui.controls.standards.GfuiComboBox; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionEvent; @@ -35,7 +39,8 @@ import org.eclipse.swt.graphics.Point; import org.eclipse.swt.widgets.Combo; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; -class Swt_combo implements GxwElem, GxwComboBox, Swt_control, GfoEvMgrOwner { + +class Swt_combo implements GxwElem, GxwComboBox, Swt_control, Gfo_evt_mgr_owner { private final Combo combo; public Swt_combo(Swt_control owner, Keyval_hash ctorArgs) { combo = new Combo(owner.Under_composite(), SWT.DROP_DOWN); @@ -44,7 +49,7 @@ class Swt_combo implements GxwElem, GxwComboBox, Swt_control, GfoEvMgrOwner { combo.addMouseListener(new Swt_lnr_mouse(this)); combo.addSelectionListener(new Swt_combo__selection_listener(this)); } - @Override public GfoEvMgr EvMgr() {return ev_mgr;} private GfoEvMgr ev_mgr; public void EvMgr_(GfoEvMgr v) {ev_mgr = v;} + @Override public Gfo_evt_mgr Evt_mgr() {return ev_mgr;} private Gfo_evt_mgr ev_mgr; public void Evt_mgr_(Gfo_evt_mgr v) {ev_mgr = v;} @Override public Control Under_control() {return combo;} @Override public Control Under_menu_control() {return combo;} @Override public String TextVal() {return combo.getText();} @Override public void TextVal_set(String v) {combo.setText(v);} @@ -93,7 +98,7 @@ class Swt_combo__selection_listener implements SelectionListener { private final Swt_combo combo; public Swt_combo__selection_listener(Swt_combo combo) {this.combo = combo;} @Override public void widgetSelected(SelectionEvent arg0) { - GfoEvMgr_.Pub(combo, GfuiComboBox.Evt__selected_changed); + Gfo_evt_mgr_.Pub(combo, GfuiComboBox.Evt__selected_changed); } @Override public void widgetDefaultSelected(SelectionEvent arg0) {} } diff --git a/150_gfui/xtn/gplx/gfui/Swt_combo_ctrl.java b/150_gfui/src/gplx/gfui/kits/swts/Swt_combo_ctrl.java similarity index 92% rename from 150_gfui/xtn/gplx/gfui/Swt_combo_ctrl.java rename to 150_gfui/src/gplx/gfui/kits/swts/Swt_combo_ctrl.java index 70a6c01cc..a491c8ac2 100644 --- a/150_gfui/xtn/gplx/gfui/Swt_combo_ctrl.java +++ b/150_gfui/src/gplx/gfui/kits/swts/Swt_combo_ctrl.java @@ -15,12 +15,14 @@ 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.gfui; - +package gplx.gfui.kits.swts; import gplx.*; import gplx.gfui.*; import gplx.gfui.kits.*; import gplx.*; import gplx.core.envs.Op_sys; import gplx.core.envs.Op_sys_; import gplx.core.threads.Thread_adp_; +import gplx.gfui.controls.gxws.GxwComboBox; +import gplx.gfui.controls.gxws.GxwElem; +import gplx.gfui.controls.standards.GfuiComboBox; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionEvent; @@ -40,7 +42,7 @@ import org.eclipse.swt.widgets.Table; import org.eclipse.swt.widgets.TableItem; import org.eclipse.swt.widgets.Text; -public class Swt_combo_ctrl extends Swt_text_w_border implements GxwElem, GxwComboBox, Swt_control, GfoEvMgrOwner { // REF: https://www.eclipse.org/forums/index.php/t/351029/; http://git.eclipse.org/c/platform/eclipse.platform.swt.git/tree/examples/org.eclipse.swt.snippets/src/org/eclipse/swt/snippets/Snippet320.java +public class Swt_combo_ctrl extends Swt_text_w_border implements GxwElem, GxwComboBox, Swt_control, Gfo_evt_mgr_owner { // REF: https://www.eclipse.org/forums/index.php/t/351029/; http://git.eclipse.org/c/platform/eclipse.platform.swt.git/tree/examples/org.eclipse.swt.snippets/src/org/eclipse/swt/snippets/Snippet320.java private final Text swt_text; private final Swt_combo_list list; public Swt_combo_ctrl(Swt_control owner, Color color, Keyval_hash ctorArgs) { @@ -67,7 +69,7 @@ public class Swt_combo_ctrl extends Swt_text_w_border implements GxwElem, GxwCom swt_list.addListener(SWT.FocusIn, new Swt_combo_ctrl__focus_in(display, list, list_hide_cmd)); shell.addListener(SWT.Move, new Swt_combo_shell__move(list)); } - @Override public GfoEvMgr EvMgr() {return ev_mgr;} private GfoEvMgr ev_mgr; public void EvMgr_(GfoEvMgr v) {ev_mgr = v;} + @Override public Gfo_evt_mgr Evt_mgr() {return ev_mgr;} private Gfo_evt_mgr ev_mgr; public void Evt_mgr_(Gfo_evt_mgr v) {ev_mgr = v;} @Override public Object SelectedItm() {return null;} @Override public void SelectedItm_set(Object v) {} @Override public void Sel_(int bgn, int end) {swt_text.setSelection(new Point(bgn, end));} @@ -191,7 +193,7 @@ class Swt_combo_list { ctrl.Text_(sel_text); ctrl.Sel_(sel_text.length(), sel_text.length()); } - GfoEvMgr_.Pub(ctrl, GfuiComboBox.Evt__selected_changed); + Gfo_evt_mgr_.Pub(ctrl, GfuiComboBox.Evt__selected_changed); } public boolean Visible() {return shell.isVisible();} public void Visible_(boolean v) { @@ -321,8 +323,8 @@ class Swt_combo_list__mouse_down implements Listener { // left-click on list-b @Override public void handleEvent(Event event) { if (event.button == 1) { // left-click ctrl.Text_(list.Sel_itm(0).getText()); - GfoEvMgr_.Pub(ctrl, GfuiComboBox.Evt__selected_changed); - GfoEvMgr_.Pub(ctrl, GfuiComboBox.Evt__selected_accepted); + Gfo_evt_mgr_.Pub(ctrl, GfuiComboBox.Evt__selected_changed); + Gfo_evt_mgr_.Pub(ctrl, GfuiComboBox.Evt__selected_accepted); } } } @@ -391,4 +393,4 @@ class Swt_combo_ctrl__list_hider_cmd implements Runnable { // hide list-box; can if (Active) list.Visible_(false); } -} \ No newline at end of file +} diff --git a/150_gfui/src/gplx/gfui/kits/swts/Swt_control.java b/150_gfui/src/gplx/gfui/kits/swts/Swt_control.java new file mode 100644 index 000000000..4df6e782c --- /dev/null +++ b/150_gfui/src/gplx/gfui/kits/swts/Swt_control.java @@ -0,0 +1,29 @@ +/* +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.gfui.kits.swts; import gplx.*; import gplx.gfui.*; import gplx.gfui.kits.*; +import gplx.gfui.controls.gxws.GxwElem; + +import org.eclipse.swt.graphics.Point; +import org.eclipse.swt.graphics.Rectangle; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +public interface Swt_control extends GxwElem { + Control Under_control(); + Composite Under_composite(); + Control Under_menu_control(); +} diff --git a/150_gfui/xtn/gplx/gfui/Swt_control.java b/150_gfui/src/gplx/gfui/kits/swts/Swt_control_.java similarity index 89% rename from 150_gfui/xtn/gplx/gfui/Swt_control.java rename to 150_gfui/src/gplx/gfui/kits/swts/Swt_control_.java index c69da862b..4aff9ed16 100644 --- a/150_gfui/xtn/gplx/gfui/Swt_control.java +++ b/150_gfui/src/gplx/gfui/kits/swts/Swt_control_.java @@ -15,18 +15,17 @@ 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.gfui; +package gplx.gfui.kits.swts; import gplx.*; import gplx.gfui.*; import gplx.gfui.kits.*; +import gplx.gfui.PointAdp; +import gplx.gfui.RectAdp; +import gplx.gfui.SizeAdp; +import gplx.gfui.controls.elems.GfuiElem; import org.eclipse.swt.graphics.Point; import org.eclipse.swt.graphics.Rectangle; -import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; -interface Swt_control extends GxwElem { - Control Under_control(); - Composite Under_composite(); - Control Under_menu_control(); -} -class Swt_control_ { + +public class Swt_control_ { public static void X_set(Control c, int v) {Point point = c.getLocation(); c.setLocation(v, point.y);} public static void Y_set(Control c, int v) {Point point = c.getLocation(); c.setLocation(point.x, v);} public static void W_set(Control c, int v) {Point point = c.getSize(); c.setSize(v, point.y);} @@ -41,4 +40,4 @@ class Swt_control_ { public static Rectangle Xto_rectangle(int x, int y, int w, int h) {return new Rectangle(x, y, w, h);} public static Rectangle Xto_rectangle(RectAdp v) {return new Rectangle(v.X(), v.Y(), v.Width(), v.Height());} public static Swt_control cast_or_fail(GfuiElem elem) {return (Swt_control)elem.UnderElem();} -} \ No newline at end of file +} diff --git a/150_gfui/xtn/gplx/gfui/Swt_core_cmds.java b/150_gfui/src/gplx/gfui/kits/swts/Swt_core_cmds.java similarity index 95% rename from 150_gfui/xtn/gplx/gfui/Swt_core_cmds.java rename to 150_gfui/src/gplx/gfui/kits/swts/Swt_core_cmds.java index edc53f778..e00b67234 100644 --- a/150_gfui/xtn/gplx/gfui/Swt_core_cmds.java +++ b/150_gfui/src/gplx/gfui/kits/swts/Swt_core_cmds.java @@ -15,7 +15,17 @@ 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.gfui; import gplx.*; +package gplx.gfui.kits.swts; import gplx.*; import gplx.gfui.*; import gplx.gfui.kits.*; +import gplx.gfui.PointAdp; +import gplx.gfui.PointAdp_; +import gplx.gfui.RectAdp; +import gplx.gfui.RectAdp_; +import gplx.gfui.SizeAdp; +import gplx.gfui.SizeAdp_; +import gplx.gfui.controls.gxws.GxwCore_base; +import gplx.gfui.controls.gxws.GxwElem; +import gplx.gfui.draws.*; +import gplx.gfui.kits.core.Swt_kit; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Color; @@ -25,6 +35,7 @@ import org.eclipse.swt.graphics.Point; import org.eclipse.swt.graphics.Rectangle; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; + class Swt_core_cmds extends GxwCore_base { Control control; private boolean compositeAble = false; public Swt_core_cmds(Control control) { diff --git a/150_gfui/xtn/gplx/gfui/Swt_core_lnrs.java b/150_gfui/src/gplx/gfui/kits/swts/Swt_core_lnrs.java similarity index 93% rename from 150_gfui/xtn/gplx/gfui/Swt_core_lnrs.java rename to 150_gfui/src/gplx/gfui/kits/swts/Swt_core_lnrs.java index 22c5b5fb9..66abfa2a0 100644 --- a/150_gfui/xtn/gplx/gfui/Swt_core_lnrs.java +++ b/150_gfui/src/gplx/gfui/kits/swts/Swt_core_lnrs.java @@ -15,16 +15,21 @@ 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.gfui; +package gplx.gfui.kits.swts; import gplx.*; import gplx.gfui.*; import gplx.gfui.kits.*; import gplx.Byte_ascii; + import gplx.Enm_; -import gplx.GfoEvMgr_; -import gplx.GfoInvkAble_; +import gplx.Gfo_evt_mgr_; +import gplx.Gfo_invk_; import gplx.GfoMsg_; import gplx.GfsCtx; import gplx.String_; import gplx.Tfds; import gplx.core.bits.Bitmask_; +import gplx.gfui.controls.gxws.GxwElem; +import gplx.gfui.controls.standards.Gfui_html; +import gplx.gfui.controls.windows.GfuiWin; +import gplx.gfui.ipts.*; import org.eclipse.swt.SWT; import org.eclipse.swt.events.KeyEvent; @@ -37,6 +42,7 @@ import org.eclipse.swt.graphics.Rectangle; import org.eclipse.swt.widgets.Event; import org.eclipse.swt.widgets.Listener; import org.eclipse.swt.widgets.ToolItem; + class Swt_lnr_show implements Listener { boolean shown = false; @Override public void handleEvent(Event ev) { @@ -48,7 +54,7 @@ class Swt_lnr_show implements Listener { class Swt_lnr_resize implements Listener { @Override public void handleEvent(Event ev) { // win.Host().SizeChangedCbk(); - GfoEvMgr_.Pub((GfuiWin)win.Host(), Gfui_html.Evt_win_resized); + Gfo_evt_mgr_.Pub((GfuiWin)win.Host(), Gfui_html.Evt_win_resized); } public Swt_lnr_resize(Swt_win win) {this.win = win;} Swt_win win; } @@ -163,4 +169,4 @@ class Swt_lnr_toolitem implements Listener { Rectangle rect = itm.getBounds(); elem.Host().MouseUpCbk(IptEvtDataMouse.new_(IptMouseBtn_.Left, IptMouseWheel_.None, rect.x, rect.y)); } -} \ No newline at end of file +} diff --git a/150_gfui/src/gplx/gfui/kits/swts/Swt_dlg_file.java b/150_gfui/src/gplx/gfui/kits/swts/Swt_dlg_file.java new file mode 100644 index 000000000..2e855eb11 --- /dev/null +++ b/150_gfui/src/gplx/gfui/kits/swts/Swt_dlg_file.java @@ -0,0 +1,40 @@ +/* +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.gfui.kits.swts; import gplx.*; import gplx.gfui.*; import gplx.gfui.kits.*; +import gplx.gfui.kits.*; +import gplx.gfui.kits.core.Gfui_dlg_file; +import gplx.gfui.kits.core.Gfui_kit_; + +import org.eclipse.swt.widgets.*; +import org.eclipse.swt.SWT; +public class Swt_dlg_file implements Gfui_dlg_file { + private FileDialog under; + public Swt_dlg_file(byte type, Shell shell) { + int file_dialog_type + = type == Gfui_kit_.File_dlg_type_save + ? SWT.SAVE + : SWT.OPEN + ; + under = new FileDialog(shell, file_dialog_type); + } + public Gfui_dlg_file Init_msg_(String v) {under.setText(v); return this;} + public Gfui_dlg_file Init_file_(String v) {under.setFileName(v); return this;} + public Gfui_dlg_file Init_dir_(Io_url v) {under.setFilterPath(v.Xto_api()); return this;} + public Gfui_dlg_file Init_exts_(String... v) {under.setFilterExtensions(v); return this;} + public String Ask() {return under.open();} +} diff --git a/150_gfui/xtn/gplx/gfui/Swt_dlg_msg.java b/150_gfui/src/gplx/gfui/kits/swts/Swt_dlg_msg.java similarity index 77% rename from 150_gfui/xtn/gplx/gfui/Swt_dlg_msg.java rename to 150_gfui/src/gplx/gfui/kits/swts/Swt_dlg_msg.java index 550a2eabe..aa44ea48d 100644 --- a/150_gfui/xtn/gplx/gfui/Swt_dlg_msg.java +++ b/150_gfui/src/gplx/gfui/kits/swts/Swt_dlg_msg.java @@ -15,26 +15,16 @@ 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.gfui; import gplx.*; +package gplx.gfui.kits.swts; import gplx.*; import gplx.gfui.*; import gplx.gfui.kits.*; +import gplx.*; +import gplx.gfui.kits.*; +import gplx.gfui.kits.core.Gfui_dlg_msg; +import gplx.gfui.kits.core.Gfui_dlg_msg_; + import org.eclipse.swt.widgets.*; import org.eclipse.swt.SWT; -class Swt_dlg_file implements Gfui_dlg_file { - private FileDialog under; - public Swt_dlg_file(byte type, Shell shell) { - int file_dialog_type - = type == Gfui_kit_.File_dlg_type_save - ? SWT.SAVE - : SWT.OPEN - ; - under = new FileDialog(shell, file_dialog_type); - } - public Gfui_dlg_file Init_msg_(String v) {under.setText(v); return this;} - public Gfui_dlg_file Init_file_(String v) {under.setFileName(v); return this;} - public Gfui_dlg_file Init_dir_(Io_url v) {under.setFilterPath(v.Xto_api()); return this;} - public Gfui_dlg_file Init_exts_(String... v) {under.setFilterExtensions(v); return this;} - public String Ask() {return under.open();} -} -class Swt_dlg_msg implements Gfui_dlg_msg, Runnable { + +public class Swt_dlg_msg implements Gfui_dlg_msg, Runnable { public Swt_dlg_msg(Shell shell) {this.shell = shell;} Shell shell; public Gfui_dlg_msg Init_msg_(String v) {msg = v; return this;} String msg; public Gfui_dlg_msg Init_ico_(int v) {ico = Xto_swt_ico(v); return this;} int ico = -1; diff --git a/150_gfui/xtn/gplx/gfui/Swt_html.java b/150_gfui/src/gplx/gfui/kits/swts/Swt_html.java similarity index 88% rename from 150_gfui/xtn/gplx/gfui/Swt_html.java rename to 150_gfui/src/gplx/gfui/kits/swts/Swt_html.java index 807e396e5..6a513c231 100644 --- a/150_gfui/xtn/gplx/gfui/Swt_html.java +++ b/150_gfui/src/gplx/gfui/kits/swts/Swt_html.java @@ -15,10 +15,19 @@ 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.gfui; +package gplx.gfui.kits.swts; import gplx.*; import gplx.gfui.*; import gplx.gfui.kits.*; import gplx.core.envs.Env_; import gplx.core.primitives.*; import gplx.core.threads.Thread_adp_; +import gplx.gfui.controls.elems.GfuiElem; +import gplx.gfui.controls.gxws.GxwCbkHost; +import gplx.gfui.controls.gxws.GxwCore_base; +import gplx.gfui.controls.gxws.GxwElem; +import gplx.gfui.controls.gxws.Gxw_html; +import gplx.gfui.controls.gxws.Gxw_html_load_tid_; +import gplx.gfui.controls.standards.Gfui_html; +import gplx.gfui.ipts.*; +import gplx.gfui.kits.core.Swt_kit; import java.security.acl.Owner; import gplx.*; @@ -35,7 +44,8 @@ import org.eclipse.swt.browser.*; import org.eclipse.swt.events.*; import org.eclipse.swt.graphics.*; import org.eclipse.swt.widgets.*; -class Swt_html implements Gxw_html, Swt_control, FocusListener { + +public class Swt_html implements Gxw_html, Swt_control, FocusListener { private Swt_html_lnr_location lnr_location; private Swt_html_lnr_status lnr_status; public Swt_html(Swt_kit kit, Swt_control owner_control, Keyval_hash ctorArgs) { this.kit = kit; @@ -75,8 +85,9 @@ class Swt_html implements Gxw_html, Swt_control, FocusListener { public byte Html_doc_html_load_tid() {return html_doc_html_load_tid;} private byte html_doc_html_load_tid; public void Html_doc_html_load_tid_(byte v) {html_doc_html_load_tid = v;} public void Html_js_enabled_(boolean v) {browser.setJavascriptEnabled(v);} - public void Html_js_cbks_add(String func_name, GfoInvkAble invk) {new Swt_html_func(browser, func_name, invk);} + public void Html_js_cbks_add(String func_name, Gfo_invk invk) {new Swt_html_func(browser, func_name, invk);} public String Html_js_eval_script(String script) {return Eval_script_as_str(script);} + public Object Html_js_eval_script_as_obj(String script) {return Eval_script(script);} public boolean Html_js_eval_proc_as_bool(String proc, Object... args) {return Bool_.cast(Html_js_eval_proc_as_obj(proc, args));} public String Html_js_eval_proc_as_str(String proc, Object... args) {return Object_.Xto_str_strict_or_null(Html_js_eval_proc_as_obj(proc, args));} public String Html_js_send_json(String name, String data) { @@ -84,7 +95,7 @@ class Swt_html implements Gxw_html, Swt_control, FocusListener { return (String)Eval_script(script); } private Object Html_js_eval_proc_as_obj(String proc, Object... args) { - Bry_bfr bfr = Bry_bfr.new_(); + Bry_bfr bfr = Bry_bfr_.New(); bfr.Add_str_a7("return ").Add_str_u8(proc).Add_byte(Byte_ascii.Paren_bgn); int args_len = args.length; for (int i = 0; i < args_len; ++i) { @@ -114,7 +125,7 @@ class Swt_html implements Gxw_html, Swt_control, FocusListener { rv = String_.Replace(rv, "\n", "\\n"); return rv; } - public void Html_invk_src_(GfoEvObj invk) {lnr_location.Host_set(invk); lnr_status.Host_set(invk);} + public void Html_invk_src_(Gfo_evt_itm invk) {lnr_location.Host_set(invk); lnr_status.Host_set(invk);} public void Html_dispose() { browser.dispose(); delete_owner.SubElems().DelOrFail(delete_cur); // NOTE: must delete cur from owner, else new tab will fail after closing one; DATE:2014-07-09 @@ -127,7 +138,7 @@ class Swt_html implements Gxw_html, Swt_control, FocusListener { @Override public String TextVal() {return browser.getText();} @Override public void TextVal_set(String v) {browser.setText(v);} @Override public void EnableDoubleBuffering() {} - @Override public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {return GfoInvkAble_.Rv_unhandled;} + @Override public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {return Gfo_invk_.Rv_unhandled;} private String Eval_script_as_str(String script) {return (String)Eval_script(script);} public Object Eval_script(String script) { eval_rslt.Clear(); @@ -168,14 +179,14 @@ class Swt_html_lnr_title implements TitleListener { } } class Swt_html_func extends BrowserFunction { - private GfoInvkAble invk; - public Swt_html_func(Browser browser, String name, GfoInvkAble invk) { + private Gfo_invk invk; + public Swt_html_func(Browser browser, String name, Gfo_invk invk) { super (browser, name); this.invk = invk; } public Object function (Object[] args) { try { - return gplx.gfui.Gfui_html.Js_args_exec(invk, args); + return gplx.gfui.controls.standards.Gfui_html.Js_args_exec(invk, args); } catch (Exception e) { return Err_.Message_gplx_full(e); @@ -184,14 +195,14 @@ class Swt_html_func extends BrowserFunction { } class Swt_html_lnr_status implements StatusTextListener { public Swt_html_lnr_status(Swt_html html_box) {this.html_box = html_box;} private Swt_html html_box; - public void Host_set(GfoEvObj host) {this.host = host;} GfoEvObj host; + public void Host_set(Gfo_evt_itm host) {this.host = host;} Gfo_evt_itm host; @Override public void changed(StatusTextEvent ev) { if (html_box.Kit().Kit_mode__term()) return; // shutting down raises status changed events; ignore, else SWT exception thrown; DATE:2014-05-29 String ev_text = ev.text; String load_by_url_path = html_box.Load_by_url_path(); if (load_by_url_path != null) ev_text = String_.Replace(ev_text, load_by_url_path, ""); // remove "C:/xowa/tab_1.html" // if (String_.Has(ev_text, "Loading [MathJax]")) return; // suppress MathJax messages; // NOTE: disabled for 2.1 (which no longer outputs messages to status); DATE:2013-05-03 - try {if (host != null) GfoEvMgr_.PubObj(host, Gfui_html.Evt_link_hover, "v", ev_text);} + try {if (host != null) Gfo_evt_mgr_.Pub_obj(host, Gfui_html.Evt_link_hover, "v", ev_text);} catch (Exception e) {html_box.Kit().Ask_ok("xowa.gui.html_box", "status.fail", Err_.Message_gplx_full(e));} // NOTE: must catch error or will cause app to lock; currently called inside displaySync } } @@ -204,7 +215,7 @@ class Swt_html_lnr_progress implements ProgressListener { } class Swt_html_lnr_location implements LocationListener { public Swt_html_lnr_location(Swt_html html_box) {this.html_box = html_box;} private Swt_html html_box; - public void Host_set(GfoEvObj host) {this.host = host;} private GfoEvObj host; + public void Host_set(Gfo_evt_itm host) {this.host = host;} private Gfo_evt_itm host; @Override public void changed(LocationEvent arg) {Pub_evt(arg, Gfui_html.Evt_location_changed);} @Override public void changing(LocationEvent arg) {Pub_evt(arg, Gfui_html.Evt_location_changing);} private void Pub_evt(LocationEvent arg, String evt) { @@ -220,7 +231,7 @@ class Swt_html_lnr_location implements LocationListener { ) return; try { - GfoEvMgr_.PubObj(host, evt, "v", location); + Gfo_evt_mgr_.Pub_obj(host, evt, "v", location); arg.doit = false; // cancel navigation event, else there will be an error when trying to go to invalid location } catch (Exception e) {html_box.Kit().Ask_ok("xowa.gui.html_box", evt, Err_.Message_gplx_full(e));} // NOTE: must catch error or will cause app to lock; currently called inside displaySync diff --git a/150_gfui/xtn/gplx/gfui/Swt_html_eval_rslt.java b/150_gfui/src/gplx/gfui/kits/swts/Swt_html_eval_rslt.java similarity index 92% rename from 150_gfui/xtn/gplx/gfui/Swt_html_eval_rslt.java rename to 150_gfui/src/gplx/gfui/kits/swts/Swt_html_eval_rslt.java index a2662d8de..7a7d43ddc 100644 --- a/150_gfui/xtn/gplx/gfui/Swt_html_eval_rslt.java +++ b/150_gfui/src/gplx/gfui/kits/swts/Swt_html_eval_rslt.java @@ -15,8 +15,7 @@ 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.gfui; - +package gplx.gfui.kits.swts; import gplx.*; import gplx.gfui.*; import gplx.gfui.kits.*; public class Swt_html_eval_rslt { public void Clear() {error = null; result = null;} public boolean Result_pass() {return error == null;} diff --git a/150_gfui/xtn/gplx/gfui/Swt_img.java b/150_gfui/src/gplx/gfui/kits/swts/Swt_img.java similarity index 88% rename from 150_gfui/xtn/gplx/gfui/Swt_img.java rename to 150_gfui/src/gplx/gfui/kits/swts/Swt_img.java index 0d7f93e20..beaa13280 100644 --- a/150_gfui/xtn/gplx/gfui/Swt_img.java +++ b/150_gfui/src/gplx/gfui/kits/swts/Swt_img.java @@ -15,13 +15,19 @@ 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.gfui; import gplx.*; +package gplx.gfui.kits.swts; import gplx.*; import gplx.gfui.*; import gplx.gfui.kits.*; +import gplx.gfui.RectAdp; +import gplx.gfui.SizeAdp; +import gplx.gfui.SizeAdp_; +import gplx.gfui.imgs.ImageAdp; +import gplx.gfui.kits.core.Gfui_kit; + import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.GC; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.widgets.Display; -class Swt_img implements ImageAdp { +public class Swt_img implements ImageAdp { public Swt_img(Gfui_kit kit, Image under, int w, int h) {this.kit = kit; this.under = under; this.width = w; this.height = h;} public Gfui_kit Kit() {return kit;} Gfui_kit kit; public SizeAdp Size() {if (size == null) size = SizeAdp_.new_(width, height); return size;} SizeAdp size; diff --git a/150_gfui/xtn/gplx/gfui/Swt_lbl.java b/150_gfui/src/gplx/gfui/kits/swts/Swt_lbl.java similarity index 85% rename from 150_gfui/xtn/gplx/gfui/Swt_lbl.java rename to 150_gfui/src/gplx/gfui/kits/swts/Swt_lbl.java index 57b2d730d..57ae5992f 100644 --- a/150_gfui/xtn/gplx/gfui/Swt_lbl.java +++ b/150_gfui/src/gplx/gfui/kits/swts/Swt_lbl.java @@ -15,7 +15,10 @@ 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.gfui; import gplx.*; +package gplx.gfui.kits.swts; import gplx.*; import gplx.gfui.*; import gplx.gfui.kits.*; +import gplx.gfui.controls.gxws.GxwCbkHost; +import gplx.gfui.controls.gxws.GxwCore_base; +import gplx.gfui.controls.gxws.GxwElem; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Button; @@ -23,7 +26,7 @@ import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Label; -class Swt_lbl implements GxwElem, Swt_control { +public class Swt_lbl implements GxwElem, Swt_control { private Label lbl; public Swt_lbl(Swt_control owner, Keyval_hash ctorArgs) { lbl = new Label(owner.Under_composite(), SWT.CENTER); diff --git a/150_gfui/src/gplx/gfui/kits/swts/Swt_lnr__menu_detect.java b/150_gfui/src/gplx/gfui/kits/swts/Swt_lnr__menu_detect.java new file mode 100644 index 000000000..85f398a5b --- /dev/null +++ b/150_gfui/src/gplx/gfui/kits/swts/Swt_lnr__menu_detect.java @@ -0,0 +1,37 @@ +/* +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.gfui.kits.swts; import gplx.*; import gplx.gfui.*; import gplx.gfui.kits.*; +import gplx.Err_; +import gplx.Gfo_evt_mgr_; +import gplx.gfui.controls.elems.GfuiElem; +import gplx.gfui.controls.elems.GfuiElemKeys; +import gplx.gfui.kits.core.Swt_kit; + +import org.eclipse.swt.events.MenuDetectEvent; +import org.eclipse.swt.events.MenuDetectListener; + +public class Swt_lnr__menu_detect implements MenuDetectListener { + private final Swt_kit kit; private final GfuiElem elem; + public Swt_lnr__menu_detect(Swt_kit kit, GfuiElem elem) {this.kit = kit; this.elem = elem;} + @Override public void menuDetected(MenuDetectEvent arg0) { + try {Gfo_evt_mgr_.Pub(elem, GfuiElemKeys.Evt_menu_detected);} + catch (Exception e) { + kit.Ask_ok("", "", "error during right-click; err=~{0}", Err_.Message_gplx_full(e)); + } + } +} diff --git a/150_gfui/xtn/gplx/gfui/Swt_popup_grp.java b/150_gfui/src/gplx/gfui/kits/swts/Swt_popup_grp.java similarity index 82% rename from 150_gfui/xtn/gplx/gfui/Swt_popup_grp.java rename to 150_gfui/src/gplx/gfui/kits/swts/Swt_popup_grp.java index f0051e3f8..fd72782b5 100644 --- a/150_gfui/xtn/gplx/gfui/Swt_popup_grp.java +++ b/150_gfui/src/gplx/gfui/kits/swts/Swt_popup_grp.java @@ -15,9 +15,16 @@ 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.gfui; import java.security.acl.Owner; - +package gplx.gfui.kits.swts; import gplx.*; import gplx.gfui.*; import gplx.gfui.kits.*; import gplx.*; +import gplx.gfui.controls.elems.GfuiElem; +import gplx.gfui.controls.windows.GfuiWin; +import gplx.gfui.imgs.ImageAdp; +import gplx.gfui.imgs.ImageAdp_; +import gplx.gfui.kits.core.Gfui_mnu_grp; +import gplx.gfui.kits.core.Gfui_mnu_itm; +import gplx.gfui.kits.core.Gfui_mnu_itm_; +import gplx.gfui.kits.core.Swt_kit; import org.eclipse.swt.SWT; import org.eclipse.swt.browser.Browser; @@ -62,28 +69,28 @@ public class Swt_popup_grp implements Gfui_mnu_grp { owner_box.setMenu(menu); } } - @Override public Gfui_mnu_itm Itms_add_btn_cmd(String txt, ImageAdp img, GfoInvkAble invk, String cmd) { + @Override public Gfui_mnu_itm Itms_add_btn_cmd(String txt, ImageAdp img, Gfo_invk invk, String cmd) { Swt_popup_itm itm = new Swt_popup_itm(menu); itm.Text_(txt); if (img != null) itm.Img_(img); itm.Invk_set_cmd(invk, cmd); return itm; } - @Override public Gfui_mnu_itm Itms_add_btn_msg(String txt, ImageAdp img, GfoInvkAble invk, GfoInvkRootWkr root_wkr, GfoMsg invk_msg) { + @Override public Gfui_mnu_itm Itms_add_btn_msg(String txt, ImageAdp img, Gfo_invk invk, Gfo_invk_root_wkr root_wkr, GfoMsg invk_msg) { Swt_popup_itm itm = new Swt_popup_itm(menu); itm.Text_(txt); if (img != null) itm.Img_(img); itm.Invk_set_msg(root_wkr, invk, invk_msg); return itm; } - @Override public Gfui_mnu_itm Itms_add_chk_msg(String txt, ImageAdp img, GfoInvkAble invk, GfoInvkRootWkr root_wkr, GfoMsg msg_n, GfoMsg msg_y) { + @Override public Gfui_mnu_itm Itms_add_chk_msg(String txt, ImageAdp img, Gfo_invk invk, Gfo_invk_root_wkr root_wkr, GfoMsg msg_n, GfoMsg msg_y) { Swt_popup_itm itm = new Swt_popup_itm(menu, SWT.CHECK); itm.Text_(txt); if (img != null) itm.Img_(img); itm.Invk_set_chk(root_wkr, invk, msg_n, msg_y); return itm; } - @Override public Gfui_mnu_itm Itms_add_rdo_msg(String txt, ImageAdp img, GfoInvkAble invk, GfoInvkRootWkr root_wkr, GfoMsg msg) { + @Override public Gfui_mnu_itm Itms_add_rdo_msg(String txt, ImageAdp img, Gfo_invk invk, Gfo_invk_root_wkr root_wkr, GfoMsg msg) { Swt_popup_itm itm = new Swt_popup_itm(menu, SWT.RADIO); itm.Text_(txt); if (img != null) itm.Img_(img); @@ -135,16 +142,6 @@ public class Swt_popup_grp implements Gfui_mnu_grp { return ((Swt_win)win.UnderElem()).UnderShell(); } } -class Swt_lnr__menu_detect implements MenuDetectListener { - private final Swt_kit kit; private final GfuiElem elem; - public Swt_lnr__menu_detect(Swt_kit kit, GfuiElem elem) {this.kit = kit; this.elem = elem;} - @Override public void menuDetected(MenuDetectEvent arg0) { - try {GfoEvMgr_.Pub(elem, GfuiElemKeys.Evt_menu_detected);} - catch (Exception e) { - kit.Ask_ok("", "", "error during right-click; err=~{0}", Err_.Message_gplx_full(e)); - } - } -} class Swt_popup_itm implements Gfui_mnu_itm { private Menu menu; public Swt_popup_itm(Menu menu) { @@ -178,26 +175,26 @@ class Swt_popup_itm implements Gfui_mnu_itm { public boolean Selected_changing() {return selected_changing;} private boolean selected_changing; @Override public Object Under() {return menu;} public MenuItem Under_menu_item() {return itm;} private MenuItem itm; - public void Invk_set_cmd(GfoInvkAble invk, String cmd) { + public void Invk_set_cmd(Gfo_invk invk, String cmd) { itm.addListener(SWT.Selection, new Swt_lnr__menu_btn_cmd(invk, cmd)); } - public void Invk_set_msg(GfoInvkRootWkr root_wkr, GfoInvkAble invk, GfoMsg msg) { + public void Invk_set_msg(Gfo_invk_root_wkr root_wkr, Gfo_invk invk, GfoMsg msg) { itm.addListener(SWT.Selection, new Swt_lnr__menu_btn_msg(root_wkr, invk, msg)); } - public void Invk_set_chk(GfoInvkRootWkr root_wkr, GfoInvkAble invk, GfoMsg msg_n, GfoMsg msg_y) { + public void Invk_set_chk(Gfo_invk_root_wkr root_wkr, Gfo_invk invk, GfoMsg msg_n, GfoMsg msg_y) { itm.addListener(SWT.Selection, new Swt_lnr__menu_chk_msg(this, root_wkr, invk, msg_n, msg_y)); } } class Swt_lnr__menu_btn_cmd implements Listener { - public Swt_lnr__menu_btn_cmd(GfoInvkAble invk, String cmd) {this.invk = invk; this.cmd = cmd;} GfoInvkAble invk; String cmd; + public Swt_lnr__menu_btn_cmd(Gfo_invk invk, String cmd) {this.invk = invk; this.cmd = cmd;} Gfo_invk invk; String cmd; public void handleEvent(Event ev) { - try {GfoInvkAble_.InvkCmd(invk, cmd);} + try {Gfo_invk_.Invk_by_key(invk, cmd);} catch (Exception e) {Swt_kit.Instance.Ask_ok("", "", "error while invoking command: cmd=~{0} err=~{1}", cmd, Err_.Message_gplx_full(e));} } } class Swt_lnr__menu_btn_msg implements Listener { - private GfoInvkRootWkr root_wkr; private GfoInvkAble invk; private GfoMsg msg; - public Swt_lnr__menu_btn_msg(GfoInvkRootWkr root_wkr, GfoInvkAble invk, GfoMsg msg) {this.root_wkr = root_wkr; this.invk = invk; this.msg = msg;} + private Gfo_invk_root_wkr root_wkr; private Gfo_invk invk; private GfoMsg msg; + public Swt_lnr__menu_btn_msg(Gfo_invk_root_wkr root_wkr, Gfo_invk invk, GfoMsg msg) {this.root_wkr = root_wkr; this.invk = invk; this.msg = msg;} public void handleEvent(Event ev) { try { msg.Args_reset(); @@ -207,8 +204,8 @@ class Swt_lnr__menu_btn_msg implements Listener { } } class Swt_lnr__menu_chk_msg implements Listener { - private Swt_popup_itm mnu_itm; private GfoInvkRootWkr root_wkr; private GfoInvkAble invk; private GfoMsg msg_n, msg_y; - public Swt_lnr__menu_chk_msg(Swt_popup_itm mnu_itm, GfoInvkRootWkr root_wkr, GfoInvkAble invk, GfoMsg msg_n, GfoMsg msg_y) { + private Swt_popup_itm mnu_itm; private Gfo_invk_root_wkr root_wkr; private Gfo_invk invk; private GfoMsg msg_n, msg_y; + public Swt_lnr__menu_chk_msg(Swt_popup_itm mnu_itm, Gfo_invk_root_wkr root_wkr, Gfo_invk invk, GfoMsg msg_n, GfoMsg msg_y) { this.mnu_itm = mnu_itm; this.root_wkr = root_wkr; this.invk = invk; this.msg_n = msg_n; this.msg_y = msg_y; } diff --git a/150_gfui/xtn/gplx/gfui/Swt_tab_itm.java b/150_gfui/src/gplx/gfui/kits/swts/Swt_tab_itm.java similarity index 86% rename from 150_gfui/xtn/gplx/gfui/Swt_tab_itm.java rename to 150_gfui/src/gplx/gfui/kits/swts/Swt_tab_itm.java index 99e1e8203..093b7c8e0 100644 --- a/150_gfui/xtn/gplx/gfui/Swt_tab_itm.java +++ b/150_gfui/src/gplx/gfui/kits/swts/Swt_tab_itm.java @@ -15,13 +15,21 @@ 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.gfui; +package gplx.gfui.kits.swts; import gplx.*; import gplx.gfui.*; import gplx.gfui.kits.*; import gplx.*; +import gplx.gfui.controls.elems.GfuiElem; +import gplx.gfui.controls.gxws.GxwCbkHost; +import gplx.gfui.controls.gxws.GxwCore_base; +import gplx.gfui.controls.gxws.Gxw_tab_itm; +import gplx.gfui.controls.standards.Gfui_tab_itm_data; +import gplx.gfui.kits.core.Swt_kit; + import org.eclipse.swt.*; import org.eclipse.swt.custom.*; import org.eclipse.swt.events.*; import org.eclipse.swt.graphics.*; import org.eclipse.swt.widgets.*; + public class Swt_tab_itm implements Gxw_tab_itm, Swt_control, FocusListener { public CTabFolder Tab_mgr() {return tab_mgr;} private CTabFolder tab_mgr; public Swt_tab_mgr Tab_mgr_swt() {return tab_mgr_swt;} private Swt_tab_mgr tab_mgr_swt; @@ -48,8 +56,7 @@ public class Swt_tab_itm implements Gxw_tab_itm, Swt_control, FocusListener { @Override public String TextVal() {return "not implemented";} @Override public void TextVal_set(String v) {} @Override public void EnableDoubleBuffering() {} - @Override public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {return GfoInvkAble_.Rv_unhandled;} + @Override public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {return Gfo_invk_.Rv_unhandled;} @Override public void focusGained(FocusEvent arg0) {} @Override public void focusLost(FocusEvent arg0) {} } -//#} \ No newline at end of file diff --git a/150_gfui/xtn/gplx/gfui/Swt_tab_mgr.java b/150_gfui/src/gplx/gfui/kits/swts/Swt_tab_mgr.java similarity index 91% rename from 150_gfui/xtn/gplx/gfui/Swt_tab_mgr.java rename to 150_gfui/src/gplx/gfui/kits/swts/Swt_tab_mgr.java index 9292b61ac..156102aaa 100644 --- a/150_gfui/xtn/gplx/gfui/Swt_tab_mgr.java +++ b/150_gfui/src/gplx/gfui/kits/swts/Swt_tab_mgr.java @@ -15,7 +15,7 @@ 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.gfui; +package gplx.gfui.kits.swts; import gplx.*; import gplx.gfui.*; import gplx.gfui.kits.*; import gplx.*; import gplx.core.threads.Thread_adp_; @@ -25,7 +25,19 @@ import org.eclipse.swt.events.*; import org.eclipse.swt.graphics.*; import org.eclipse.swt.layout.*; import org.eclipse.swt.widgets.*; -public class Swt_tab_mgr implements Gxw_tab_mgr, Swt_control, FocusListener, GfoEvMgrOwner { + + +import gplx.gfui.controls.gxws.GxwCbkHost; +import gplx.gfui.controls.gxws.GxwCore_base; +import gplx.gfui.controls.gxws.Gxw_tab_itm; +import gplx.gfui.controls.gxws.Gxw_tab_mgr; +import gplx.gfui.controls.standards.Gfui_tab_itm_data; +import gplx.gfui.controls.standards.Gfui_tab_mgr; +import gplx.gfui.draws.*; +import gplx.gfui.kits.core.GfuiInvkCmd; +import gplx.gfui.kits.core.Swt_kit; + +public class Swt_tab_mgr implements Gxw_tab_mgr, Swt_control, FocusListener, Gfo_evt_mgr_owner { private GfuiInvkCmd cmd_sync; // private GfuiInvkCmd cmd_async; // NOTE: async needed for some actions like responding to key_down and calling .setSelection; else app hangs; DATE:2014-04-30 public Swt_tab_mgr(Swt_kit kit, Swt_control owner_control, Keyval_hash ctorArgs) { @@ -48,8 +60,8 @@ public class Swt_tab_mgr implements Gxw_tab_mgr, Swt_control, FocusListener, Gfo @Override public Control Under_control() {return tab_folder;} private CTabFolder tab_folder; @Override public Composite Under_composite() {return tab_folder;} @Override public Control Under_menu_control() {return tab_folder;} - public GfoEvMgr EvMgr() {return ev_mgr;} private GfoEvMgr ev_mgr; - public void EvMgr_(GfoEvMgr v) {ev_mgr = v;} + public Gfo_evt_mgr Evt_mgr() {return ev_mgr;} private Gfo_evt_mgr ev_mgr; + public void Evt_mgr_(Gfo_evt_mgr v) {ev_mgr = v;} public ColorAdp Btns_selected_color() {return btns_selected_color;} private ColorAdp btns_selected_color; public void Btns_selected_color_(ColorAdp v) { btns_selected_color = v; @@ -113,7 +125,7 @@ public class Swt_tab_mgr implements Gxw_tab_mgr, Swt_control, FocusListener, Gfo Gfui_tab_itm_data trg_tab_data = Get_tab_data(trg_tab_itm); int src_tab_idx = src_tab_data.Idx(), trg_tab_idx = trg_tab_data.Idx(); tab_folder.setSelection(trg_tab_itm); - GfoEvMgr_.PubVals(this, Gfui_tab_mgr.Evt_tab_switched, Keyval_.new_("src", src_tab_data.Key()), Keyval_.new_("trg", trg_tab_data.Key())); + Gfo_evt_mgr_.Pub_vals(this, Gfui_tab_mgr.Evt_tab_switched, Keyval_.new_("src", src_tab_data.Key()), Keyval_.new_("trg", trg_tab_data.Key())); return src_tab_idx < trg_tab_idx; } public void Tabs_select_by_itm(CTabItem itm) { @@ -136,10 +148,10 @@ public class Swt_tab_mgr implements Gxw_tab_mgr, Swt_control, FocusListener, Gfo return next_idx == Gfui_tab_itm_data.Idx_null ? null : tab_folder.getItem(next_idx); } public void Pub_tab_selected(String key) { - GfoEvMgr_.PubObj(this, Gfui_tab_mgr.Evt_tab_selected, "key", key); + Gfo_evt_mgr_.Pub_obj(this, Gfui_tab_mgr.Evt_tab_selected, "key", key); } public void Pub_tab_closed(String key) { - GfoEvMgr_.PubObj(this, Gfui_tab_mgr.Evt_tab_closed, "key", key); + Gfo_evt_mgr_.Pub_obj(this, Gfui_tab_mgr.Evt_tab_closed, "key", key); } @Override public GxwCore_base Core() {return core;} GxwCore_base core; @Override public GxwCbkHost Host() {return host;} @Override public void Host_set(GxwCbkHost host) {this.host = host;} GxwCbkHost host; @@ -149,7 +161,7 @@ public class Swt_tab_mgr implements Gxw_tab_mgr, Swt_control, FocusListener, Gfo @Override public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (String_.Eq(k, Invk_tabs_select_by_idx_swt)) Tabs_select_by_idx_swt(m.ReadInt("v")); else if (String_.Eq(k, Invk_tabs_select_by_itm_swt)) Tabs_select_by_itm_swt((CTabItem)m.ReadObj("v", null)); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } @Override public void focusGained(FocusEvent arg0) {} @@ -269,4 +281,3 @@ class Swt_tab_mgr_lnr_drag_drop implements Listener { return null; } } -//#} \ No newline at end of file diff --git a/150_gfui/xtn/gplx/gfui/Swt_text.java b/150_gfui/src/gplx/gfui/kits/swts/Swt_text.java similarity index 88% rename from 150_gfui/xtn/gplx/gfui/Swt_text.java rename to 150_gfui/src/gplx/gfui/kits/swts/Swt_text.java index f710921e5..30215012c 100644 --- a/150_gfui/xtn/gplx/gfui/Swt_text.java +++ b/150_gfui/src/gplx/gfui/kits/swts/Swt_text.java @@ -15,7 +15,12 @@ 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.gfui; import gplx.*; +package gplx.gfui.kits.swts; import gplx.*; import gplx.gfui.*; import gplx.gfui.kits.*; +import gplx.gfui.controls.gxws.GxwCbkHost; +import gplx.gfui.controls.gxws.GxwCore_base; +import gplx.gfui.controls.gxws.GxwTextFld; +import gplx.gfui.controls.standards.GfuiTextBox_; + import org.eclipse.swt.SWT; import org.eclipse.swt.events.KeyEvent; import org.eclipse.swt.events.KeyListener; @@ -30,7 +35,8 @@ import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Text; -class Swt_text implements GxwTextFld, Swt_control { + +public class Swt_text implements GxwTextFld, Swt_control { private Text text_box; public Swt_text(Swt_control owner_control, Keyval_hash ctorArgs) { int text_box_args = ctorArgs.Has(GfuiTextBox_.Ctor_Memo) diff --git a/150_gfui/xtn/gplx/gfui/Swt_text_w_border.java b/150_gfui/src/gplx/gfui/kits/swts/Swt_text_w_border.java similarity index 93% rename from 150_gfui/xtn/gplx/gfui/Swt_text_w_border.java rename to 150_gfui/src/gplx/gfui/kits/swts/Swt_text_w_border.java index 880b10f89..82bdfb79d 100644 --- a/150_gfui/xtn/gplx/gfui/Swt_text_w_border.java +++ b/150_gfui/src/gplx/gfui/kits/swts/Swt_text_w_border.java @@ -15,7 +15,11 @@ 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.gfui; import gplx.*; +package gplx.gfui.kits.swts; import gplx.*; import gplx.gfui.*; import gplx.gfui.kits.*; +import gplx.gfui.controls.gxws.GxwCbkHost; +import gplx.gfui.controls.gxws.GxwCore_base; +import gplx.gfui.controls.gxws.GxwTextFld; +import gplx.gfui.controls.standards.GfuiTextBox_; import org.eclipse.swt.SWT; import org.eclipse.swt.events.TraverseEvent; @@ -30,6 +34,7 @@ import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Text; + public class Swt_text_w_border implements GxwTextFld, Swt_control { private Composite text_host; private Composite text_margin; @@ -86,4 +91,4 @@ class Swt_lnr_traverse_ignore_ctrl implements TraverseListener { if (Swt_lnr_key.Has_ctrl(e.stateMask)) e.doit = false; } public static final Swt_lnr_traverse_ignore_ctrl Instance = new Swt_lnr_traverse_ignore_ctrl(); -} \ No newline at end of file +} diff --git a/150_gfui/xtn/gplx/gfui/Swt_win.java b/150_gfui/src/gplx/gfui/kits/swts/Swt_win.java similarity index 88% rename from 150_gfui/xtn/gplx/gfui/Swt_win.java rename to 150_gfui/src/gplx/gfui/kits/swts/Swt_win.java index 2215411b3..2acaaa1d7 100644 --- a/150_gfui/xtn/gplx/gfui/Swt_win.java +++ b/150_gfui/src/gplx/gfui/kits/swts/Swt_win.java @@ -15,24 +15,29 @@ 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.gfui; - +package gplx.gfui.kits.swts; import gplx.*; import gplx.gfui.*; import gplx.gfui.kits.*; import java.io.FileInputStream; import java.io.FileNotFoundException; import gplx.Bool_; -import gplx.GfoInvkAbleCmd; +import gplx.Gfo_invk_cmd; import gplx.GfoMsg; import gplx.GfsCtx; import gplx.Io_url_; - +import gplx.gfui.controls.gxws.GxwCbkHost; +import gplx.gfui.controls.gxws.GxwCbkHost_; +import gplx.gfui.controls.gxws.GxwCore_base; +import gplx.gfui.controls.gxws.GxwElem; +import gplx.gfui.controls.gxws.GxwWin; +import gplx.gfui.imgs.IconAdp; +import gplx.gfui.ipts.*; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; -class Swt_win implements GxwWin, Swt_control { +public class Swt_win implements GxwWin, Swt_control { private Swt_lnr_resize resize_lnr; private Swt_lnr_show show_lnr; // use ptr to dispose later void ctor(boolean window_is_dialog, Shell shell, Display display) { this.shell = shell; @@ -73,8 +78,8 @@ class Swt_win implements GxwWin, Swt_control { } catch (FileNotFoundException e1) {e1.printStackTrace();} shell.setImage(image); } - public void OpenedCmd_set(GfoInvkAbleCmd v) {when_loaded_cmd = v;} private GfoInvkAbleCmd when_loaded_cmd = GfoInvkAbleCmd.Null; - public void Opened() {when_loaded_cmd.Invk();} + public void OpenedCmd_set(Gfo_invk_cmd v) {when_loaded_cmd = v;} private Gfo_invk_cmd when_loaded_cmd = Gfo_invk_cmd.Noop; + public void Opened() {when_loaded_cmd.Exec();} public GxwCore_base Core() {return ctrl_mgr;} private GxwCore_base ctrl_mgr; public GxwCbkHost Host() {return host;} public void Host_set(GxwCbkHost host) {this.host = host;} private GxwCbkHost host = GxwCbkHost_.Null; public String TextVal() {return shell.getText();} diff --git a/150_gfui/src_210_lyt/gplx/gfui/GftBand.java b/150_gfui/src/gplx/gfui/layouts/GftBand.java similarity index 94% rename from 150_gfui/src_210_lyt/gplx/gfui/GftBand.java rename to 150_gfui/src/gplx/gfui/layouts/GftBand.java index 97d643763..a6390ef8f 100644 --- a/150_gfui/src_210_lyt/gplx/gfui/GftBand.java +++ b/150_gfui/src/gplx/gfui/layouts/GftBand.java @@ -15,7 +15,8 @@ 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.gfui; import gplx.*; +package gplx.gfui.layouts; import gplx.*; import gplx.gfui.*; +import gplx.gfui.controls.elems.*; public class GftBand { public String Key() {return key;} public GftBand Key_(String v) {key = v; return this;} private String key; public int Idx() {return idx;} public GftBand Idx_(int v) {idx = v; return this;} int idx; @@ -23,7 +24,7 @@ public class GftBand { public GftBand Len1_pct_(float val) {return Len1_(new GftSizeCalc_pct(val));} public GftBand Len1_abs_(int v) {return Len1_(new GftSizeCalc_abs(v));} public GftCell Cell_dfl() {return cell_dfl;} GftCell cell_dfl = new GftCell(); - public List_adp Cells() {return cells;} List_adp cells = List_adp_.new_(); + public List_adp Cells() {return cells;} List_adp cells = List_adp_.New(); public GftBand Cells_var_(int count) { for (int i = 0; i < count; i++) cells.Add(new GftCell().Len0_(new GftSizeCalc_var(count))); @@ -37,7 +38,7 @@ public class GftBand { cells.Add(new GftCell().Len0_(new GftSizeCalc_num(num))); return this; } - public List_adp Items() {return items;} List_adp items = List_adp_.new_(); + public List_adp Items() {return items;} List_adp items = List_adp_.New(); public void Items_add(GftItem item) {items.Add(item);} public void Calc(GftItem owner, int y, int h) { int x = 0; diff --git a/150_gfui/src_210_lyt/gplx/gfui/GftBand_tst.java b/150_gfui/src/gplx/gfui/layouts/GftBand_tst.java similarity index 96% rename from 150_gfui/src_210_lyt/gplx/gfui/GftBand_tst.java rename to 150_gfui/src/gplx/gfui/layouts/GftBand_tst.java index d75464e75..61e414b36 100644 --- a/150_gfui/src_210_lyt/gplx/gfui/GftBand_tst.java +++ b/150_gfui/src/gplx/gfui/layouts/GftBand_tst.java @@ -15,7 +15,7 @@ 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.gfui; import gplx.*; +package gplx.gfui.layouts; import gplx.*; import gplx.gfui.*; import org.junit.*; public class GftBand_tst { @Before public void setup() { diff --git a/150_gfui/src_210_lyt/gplx/gfui/GftCell.java b/150_gfui/src/gplx/gfui/layouts/GftCell.java similarity index 93% rename from 150_gfui/src_210_lyt/gplx/gfui/GftCell.java rename to 150_gfui/src/gplx/gfui/layouts/GftCell.java index 04740d7d6..8ce00830e 100644 --- a/150_gfui/src_210_lyt/gplx/gfui/GftCell.java +++ b/150_gfui/src/gplx/gfui/layouts/GftCell.java @@ -15,7 +15,7 @@ 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.gfui; import gplx.*; +package gplx.gfui.layouts; import gplx.*; import gplx.gfui.*; public class GftCell { public GftSizeCalc Len0() {return len0;} public GftCell Len0_(GftSizeCalc c) {len0 = c; return this;} GftSizeCalc len0 = new GftSizeCalc_num(1); public GftCell Clone() { diff --git a/150_gfui/src_210_lyt/gplx/gfui/GftGrid.java b/150_gfui/src/gplx/gfui/layouts/GftGrid.java similarity index 90% rename from 150_gfui/src_210_lyt/gplx/gfui/GftGrid.java rename to 150_gfui/src/gplx/gfui/layouts/GftGrid.java index d58774e63..cae32e5ad 100644 --- a/150_gfui/src_210_lyt/gplx/gfui/GftGrid.java +++ b/150_gfui/src/gplx/gfui/layouts/GftGrid.java @@ -15,11 +15,12 @@ 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.gfui; import gplx.*; +package gplx.gfui.layouts; import gplx.*; import gplx.gfui.*; +import gplx.gfui.controls.elems.*; public class GftGrid { public String Key() {return key;} public GftGrid Key_(String v) {key = v; return this;} private String key; - public List_adp Bands() {return bands;} List_adp bands = List_adp_.new_(); - public List_adp SubLyts() {return subLyts;} List_adp subLyts = List_adp_.new_(); + public List_adp Bands() {return bands;} List_adp bands = List_adp_.New(); + public List_adp SubLyts() {return subLyts;} List_adp subLyts = List_adp_.New(); public void Clear() {bands.Clear(); subLyts.Clear(); bandDir = DirInt.Fwd;} public DirInt Bands_dir() {return bandDir;} public GftGrid Bands_dir_(DirInt v) {bandDir = v; return this;} DirInt bandDir = DirInt.Fwd; public GftGrid SubLyts_get(String key) { @@ -48,13 +49,13 @@ public class GftGrid { return this; } @gplx.Internal protected void Bands_delAt(int i) {bands.Del_at(i);} - @gplx.Internal protected boolean Bands_has(String key) {return Bands_indexOf(key) != List_adp_.NotFound;} - @gplx.Internal protected void Bands_del(String key) { + public boolean Bands_has(String key) {return Bands_indexOf(key) != List_adp_.Not_found;} + public void Bands_del(String key) { int idx = Bands_indexOf(key); - if (idx != List_adp_.NotFound) bands.Del_at(idx); + if (idx != List_adp_.Not_found) bands.Del_at(idx); } int Bands_indexOf(String key) { - int curIdx = List_adp_.NotFound; + int curIdx = List_adp_.Not_found; for (int i = 0; i < bands.Count(); i++) { GftBand band = (GftBand)bands.Get_at(i); if (String_.Eq(key, band.Key())) { diff --git a/150_gfui/src_210_lyt/gplx/gfui/GftGrid_fx.java b/150_gfui/src/gplx/gfui/layouts/GftGrid_fx.java similarity index 95% rename from 150_gfui/src_210_lyt/gplx/gfui/GftGrid_fx.java rename to 150_gfui/src/gplx/gfui/layouts/GftGrid_fx.java index c7a5daf6e..c04cd7304 100644 --- a/150_gfui/src_210_lyt/gplx/gfui/GftGrid_fx.java +++ b/150_gfui/src/gplx/gfui/layouts/GftGrid_fx.java @@ -15,7 +15,7 @@ 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.gfui; import gplx.*; +package gplx.gfui.layouts; import gplx.*; import gplx.gfui.*; class GftGrid_fx { public GftItem Owner() {return owner;} GftItem owner; public GftGrid_fx Clear() { @@ -89,5 +89,5 @@ class GftGrid_fx { return rv; } GftGrid grid = GftGrid.new_(), curGrid; - List_adp itms = List_adp_.new_(); + List_adp itms = List_adp_.New(); } \ No newline at end of file diff --git a/150_gfui/src_210_lyt/gplx/gfui/GftItem.java b/150_gfui/src/gplx/gfui/layouts/GftItem.java similarity index 95% rename from 150_gfui/src_210_lyt/gplx/gfui/GftItem.java rename to 150_gfui/src/gplx/gfui/layouts/GftItem.java index 73399e285..518795f93 100644 --- a/150_gfui/src_210_lyt/gplx/gfui/GftItem.java +++ b/150_gfui/src/gplx/gfui/layouts/GftItem.java @@ -15,7 +15,7 @@ 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.gfui; import gplx.*; +package gplx.gfui.layouts; import gplx.*; import gplx.gfui.*; public interface GftItem { String Key_of_GfuiElem(); int Gft_h(); GftItem Gft_h_(int v); diff --git a/150_gfui/src_210_lyt/gplx/gfui/GftSizeCalc.java b/150_gfui/src/gplx/gfui/layouts/GftSizeCalc.java similarity index 84% rename from 150_gfui/src_210_lyt/gplx/gfui/GftSizeCalc.java rename to 150_gfui/src/gplx/gfui/layouts/GftSizeCalc.java index ed345a9df..5176e4089 100644 --- a/150_gfui/src_210_lyt/gplx/gfui/GftSizeCalc.java +++ b/150_gfui/src/gplx/gfui/layouts/GftSizeCalc.java @@ -15,14 +15,15 @@ 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.gfui; import gplx.*; +package gplx.gfui.layouts; import gplx.*; import gplx.gfui.*; +import gplx.gfui.controls.elems.*; public interface GftSizeCalc { int Key(); int Calc(GftGrid grid, GftBand band, GftItem owner, GftItem item, int ownerWidth); GftSizeCalc Clone(); } class GftSizeCalc_pct implements GftSizeCalc { - public int Key() {return KEY;} public static final int KEY = 1; + public int Key() {return KEY;} public static final int KEY = 1; public float Val() {return pct;} float pct; public int Calc(GftGrid grid, GftBand band, GftItem owner, GftItem item, int ownerWidth) { return Int_.Mult(ownerWidth, pct / 100); @@ -31,7 +32,7 @@ class GftSizeCalc_pct implements GftSizeCalc { public GftSizeCalc_pct(float v) {pct = v;} } class GftSizeCalc_abs implements GftSizeCalc { - public int Key() {return KEY;} public static final int KEY = 2; + public int Key() {return KEY;} public static final int KEY = 2; public int Val() {return abs;} int abs; public int Calc(GftGrid grid, GftBand band, GftItem owner, GftItem item, int ownerWidth) { return abs; @@ -40,7 +41,7 @@ class GftSizeCalc_abs implements GftSizeCalc { public GftSizeCalc_abs(int v) {abs = v;} } class GftSizeCalc_num implements GftSizeCalc { - public int Key() {return KEY;} public static final int KEY = 3; + public int Key() {return KEY;} public static final int KEY = 3; public int Val() {return num;} int num; public int Calc(GftGrid grid, GftBand band, GftItem owner, GftItem item, int ownerWidth) { return owner.Gft_w() / num; @@ -49,7 +50,7 @@ class GftSizeCalc_num implements GftSizeCalc { public GftSizeCalc_num(int num) {this.num = num;} } class GftSizeCalc_var implements GftSizeCalc { - public int Key() {return KEY;} public static final int KEY = 4; + public int Key() {return KEY;} public static final int KEY = 4; public int Val() {return num;} int num; public int Calc(GftGrid grid, GftBand band, GftItem owner, GftItem item, int ownerWidth) { GfuiElem elem = GfuiElem_.as_(item); diff --git a/150_gfui/src_300_gxw/gplx/gfui/GxwElemFactory_base.java b/150_gfui/src_300_gxw/gplx/gfui/GxwElemFactory_base.java deleted file mode 100644 index db81065e2..000000000 --- a/150_gfui/src_300_gxw/gplx/gfui/GxwElemFactory_base.java +++ /dev/null @@ -1,74 +0,0 @@ -/* -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.gfui; import gplx.*; -public abstract class GxwElemFactory_base { - @gplx.Internal protected abstract GxwElem control_(); - @gplx.Internal protected abstract GxwWin win_app_(); - @gplx.Internal protected abstract GxwWin win_tool_(Keyval_hash ctorArgs); - @gplx.Internal protected abstract GxwWin win_toaster_(Keyval_hash ctorArgs); - @gplx.Internal protected abstract GxwElem lbl_(); - @gplx.Internal protected abstract GxwTextFld text_fld_(); - @gplx.Internal protected abstract GxwTextFld text_memo_(); - @gplx.Internal protected abstract GxwTextHtml text_html_(); - @gplx.Internal protected abstract GxwCheckListBox checkListBox_(Keyval_hash ctorArgs); - @gplx.Internal protected abstract GxwComboBox comboBox_(); - @gplx.Internal protected abstract GxwListBox listBox_(); - // @gplx.Internal protected GxwElem spacer_() {return MockControl.new_();} - } -class GxwElemFactory_ { - public static GxwElemFactory_base Instance = new GxwElemFactory_cls_mock(); - public static void winForms_() {Instance = new GxwElemFactory_cls_lang();} - public static void swt_(org.eclipse.swt.widgets.Display display) {Instance = new GxwElemFactory_swt(display);} - } -class GxwElemFactory_cls_lang extends GxwElemFactory_base { - @gplx.Internal @Override protected GxwElem control_() {return new GxwElem_lang();} - @gplx.Internal @Override protected GxwWin win_tool_(Keyval_hash ctorArgs) { - GfuiWin ownerForm = (GfuiWin)ctorArgs.Get_val_or(GfuiElem_.InitKey_ownerWin, null); - GxwWin ownerElem = ownerForm == null ? null : (GxwWin)ownerForm.UnderElem(); - return GxwWin_jdialog.new_(ownerElem); -// return GxwWin_lang.new_(); - } - @gplx.Internal @Override protected GxwWin win_toaster_(Keyval_hash ctorArgs) { - GfsCtx ctx = GfsCtx.new_(); ctx.Match("", ""); - GfuiWin ownerForm = (GfuiWin)ctorArgs.Get_val_or(GfuiElem_.InitKey_ownerWin, null); - GxwWin ownerElem = ownerForm == null ? null : (GxwWin)ownerForm.UnderElem(); - return GxwWin_jwindow.new_(ownerElem); -// return GxwWin_lang.new_(); - } - @gplx.Internal @Override protected GxwWin win_app_() {return GxwWin_lang.new_();} - @gplx.Internal @Override protected GxwElem lbl_() {return new GxwElem_lang();} - @gplx.Internal @Override protected GxwTextFld text_fld_() {return GxwTextBox_lang_.fld_();} - @gplx.Internal @Override protected GxwTextFld text_memo_() {return GxwTextBox_lang_.memo_();} - @gplx.Internal @Override protected GxwTextHtml text_html_() {return new GxwTextHtml_lang().ctor();} - @gplx.Internal @Override protected GxwCheckListBox checkListBox_(Keyval_hash ctorArgs) {return new GxwCheckListBox_lang();} - @gplx.Internal @Override protected GxwComboBox comboBox_() {return GxwComboBox_lang.new_();} - @gplx.Internal @Override protected GxwListBox listBox_() {return GxwListBox_lang.new_();} -} -class GxwElemFactory_cls_mock extends GxwElemFactory_base { - @gplx.Internal @Override protected GxwElem control_() {return GxwElem_mock_base.new_();} - @gplx.Internal @Override protected GxwWin win_app_() {return MockForm.Instance;} - @gplx.Internal @Override protected GxwWin win_tool_(Keyval_hash ctorArgs) {return MockForm.Instance;} - @gplx.Internal @Override protected GxwWin win_toaster_(Keyval_hash ctorArgs) {return MockForm.Instance;} - @gplx.Internal @Override protected GxwElem lbl_() {return GxwElem_mock_base.new_();} - @gplx.Internal @Override protected GxwTextFld text_fld_() {return new MockTextBox();} - @gplx.Internal @Override protected GxwTextFld text_memo_() {return new MockTextBoxMulti();} - @gplx.Internal @Override protected GxwTextHtml text_html_() {return new MockTextBoxMulti();} - @gplx.Internal @Override protected GxwCheckListBox checkListBox_(Keyval_hash ctorArgs) {throw Err_.new_unimplemented();} - @gplx.Internal @Override protected GxwComboBox comboBox_() {return new MockComboBox();} - @gplx.Internal @Override protected GxwListBox listBox_() {return new MockListBox();} -} diff --git a/400_xowa/src/gplx/core/brys/Bit_heap_wtr.java b/400_xowa/src/gplx/core/brys/Bit_heap_wtr.java index 174971bd9..43a976b00 100644 --- a/400_xowa/src/gplx/core/brys/Bit_heap_wtr.java +++ b/400_xowa/src/gplx/core/brys/Bit_heap_wtr.java @@ -17,11 +17,11 @@ along with this program. If not, see . */ package gplx.core.brys; import gplx.*; import gplx.core.*; public class Bit_heap_wtr { - private final gplx.xowa.htmls.core.hzips.Xoh_hzip_int hzip_int = new gplx.xowa.htmls.core.hzips.Xoh_hzip_int().Mode_is_b256_(true); - private final Bry_bfr hzip_int_bfr = Bry_bfr.reset_(5); + private final gplx.xowa.htmls.core.hzips.Xoh_hzip_int hzip_int = new gplx.xowa.htmls.core.hzips.Xoh_hzip_int().Mode_is_b256_(true); + private final Bry_bfr hzip_int_bfr = Bry_bfr_.Reset(5); public int Cur() {return cur;} private int cur; public int Cur_bits() {return cur_bits;} private int cur_bits; - public Bry_bfr Heap() {return heap;} private final Bry_bfr heap = Bry_bfr.new_(); + public Bry_bfr Heap() {return heap;} private final Bry_bfr heap = Bry_bfr_.New(); public void Clear() {heap.Clear(); cur = 0; cur_bits = 0;} public void Add_bool(boolean v) { if (v) @@ -67,5 +67,5 @@ public class Bit_heap_wtr { hzip_int_bfr.Clear(); } public void Save(Bry_bfr bfr) {} - public static final int[] Pow_ary = new int[] {1, 2, 4, 8, 16, 32, 64, 128, 256}; + public static final int[] Pow_ary = new int[] {1, 2, 4, 8, 16, 32, 64, 128, 256}; } diff --git a/400_xowa/src/gplx/core/brys/evals/Bry_eval_mgr.java b/400_xowa/src/gplx/core/brys/evals/Bry_eval_mgr.java new file mode 100644 index 000000000..f6d3eadaa --- /dev/null +++ b/400_xowa/src/gplx/core/brys/evals/Bry_eval_mgr.java @@ -0,0 +1,108 @@ +/* +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.core.brys.evals; import gplx.*; import gplx.core.*; import gplx.core.brys.*; +public class Bry_eval_mgr { + private final Hash_adp_bry hash = Hash_adp_bry.cs(); + private final byte sym_escape, sym_key_end, sym_grp_bgn, sym_grp_end; + public Bry_eval_mgr(byte sym_escape, byte sym_key_end, byte sym_grp_bgn, byte sym_grp_end) { + this.sym_escape = sym_escape; + this.sym_key_end = sym_key_end; + this.sym_grp_bgn = sym_grp_bgn; + this.sym_grp_end = sym_grp_end; + } + public Bry_eval_mgr Add_many(Bry_eval_wkr... ary) { + for (Bry_eval_wkr itm : ary) + hash.Add(Bry_.new_u8(itm.Key()), itm); + return this; + } + public byte[] Eval(byte[] src) { + Bry_eval_rslt rv = Eval_txt(0, src, 0, src.length); + return rv == null ? src : rv.Bry(); + } + private Bry_eval_rslt Eval_txt(int depth, byte[] src, int src_bgn, int src_end) { + Bry_bfr cur_bfr = null; + int cur_pos = src_bgn; + while (true) { + if (cur_pos == src_end) break; + byte cur_byte = src[cur_pos]; + // cur_byte is ~ + if (cur_byte == sym_escape) { + // create cur_bfr + if (cur_bfr == null) {cur_bfr = Bry_bfr_.New(); cur_bfr.Add_mid(src, src_bgn, cur_pos);} + + // eval nxt_byte + int nxt_pos = cur_pos + 1; + if (nxt_pos == src_end) throw Err_.new_wo_type("bry_eval:escape at eos", "src", src); + byte nxt_byte = src[nxt_pos]; + if (nxt_byte == sym_grp_bgn) { // ~{key|} -> eval; + Bry_eval_rslt sub = Eval_txt(depth + 1, src, nxt_pos + 1, src_end); // get "}" + cur_bfr.Add(Eval_grp(sub.Bry())); + cur_pos = sub.Pos(); + continue; + } + else if (nxt_byte == sym_escape) { + cur_bfr.Add_byte(nxt_byte); + cur_pos = nxt_pos + 1; + continue; + } + } + else if (depth > 0 && cur_byte == sym_grp_end) { + return cur_bfr == null + ? new Bry_eval_rslt(Bry_.Mid(src, src_bgn, cur_pos), cur_pos + 1) + : new Bry_eval_rslt(cur_bfr.To_bry_and_clear(), cur_pos + 1); + } + if (cur_bfr != null) cur_bfr.Add_byte(cur_byte); + ++cur_pos; + } + return cur_bfr == null ? null : new Bry_eval_rslt(cur_bfr.To_bry_and_clear(), src_end); + } + private byte[] Eval_grp(byte[] src) { + // search for "|" or "}" + boolean args_is_empty = true; + int src_end = src.length; + int key_bgn = 0, key_end = src_end; + for (int i = key_bgn; i < src_end; ++i) { + int key_end_byte = src[i]; + if (key_end_byte == sym_key_end) { + key_end = i; + args_is_empty = false; + break; + } + } + + // get wkr + Bry_eval_wkr wkr = (Bry_eval_wkr)hash.Get_by_mid(src, key_bgn, key_end); + if (wkr == null) throw Err_.new_wo_type("bry_eval:key not found", "src", src); + Bry_bfr bfr = Bry_bfr_.New(); + if (args_is_empty) { + wkr.Resolve(bfr, src, -1, -1); + } + else { + wkr.Resolve(bfr, src, key_end + 1, src_end); + } + return bfr.To_bry_and_clear(); + } + public static Bry_eval_mgr Dflt() {return new Bry_eval_mgr(Byte_ascii.Tilde, Byte_ascii.Pipe, Byte_ascii.Curly_bgn, Byte_ascii.Curly_end);} +} +class Bry_eval_rslt { + public Bry_eval_rslt(byte[] bry, int pos) { + this.bry = bry; this.pos = pos; + } + public byte[] Bry() {return bry;} private final byte[] bry; + public int Pos() {return pos;} private final int pos; +} diff --git a/400_xowa/src/gplx/core/brys/evals/Bry_eval_mgr__tst.java b/400_xowa/src/gplx/core/brys/evals/Bry_eval_mgr__tst.java new file mode 100644 index 000000000..8d0fca712 --- /dev/null +++ b/400_xowa/src/gplx/core/brys/evals/Bry_eval_mgr__tst.java @@ -0,0 +1,52 @@ +/* +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.core.brys.evals; import gplx.*; import gplx.core.*; import gplx.core.brys.*; +import org.junit.*; import gplx.core.tests.*; +public class Bry_eval_mgr__tst { + private final Bry_eval_mgr__fxt fxt = new Bry_eval_mgr__fxt(); + @Test public void Text() {fxt.Test__eval("abc" , "abc");} + @Test public void Args_0() {fxt.Test__eval("abc~{test}xyz" , "abctestxyz");} + @Test public void Args_n() {fxt.Test__eval("abc~{concat|d|e|f}xyz" , "abcdefxyz");} + @Test public void Recur_1() {fxt.Test__eval("abc~{~{test}}xyz" , "abctestxyz");} + @Test public void Recur_2() {fxt.Test__eval("abc~{t~{concat|e|s}t}xyz" , "abctestxyz");} + @Test public void Grp_end() {fxt.Test__eval("a}b" , "a}b");} + @Test public void Escape() {fxt.Test__eval("a~~b" , "a~b");} + // @Test public void Eos() {fxt.Test__eval("a~" , "a~");} +} +class Bry_eval_mgr__fxt { + private final Bry_eval_mgr mgr = Bry_eval_mgr.Dflt().Add_many(new Bry_eval_wkr__test(), new Bry_eval_wkr__concat()); + public Bry_eval_mgr__fxt Test__eval(String raw, String expd) { + Gftest.Eq__bry(Bry_.new_u8(expd), mgr.Eval(Bry_.new_u8(raw))); + return this; + } +} +class Bry_eval_wkr__test implements Bry_eval_wkr { + public String Key() {return "test";} + public void Resolve(Bry_bfr rv, byte[] src, int src_bgn, int src_end) { + rv.Add_str_a7("test"); + } +} +class Bry_eval_wkr__concat implements Bry_eval_wkr { + public String Key() {return "concat";} + public void Resolve(Bry_bfr rv, byte[] src, int src_bgn, int src_end) { + byte[][] ary = Bry_split_.Split(src, src_bgn, src_end, Byte_ascii.Pipe, false); + for (byte[] itm : ary) { + rv.Add(itm); + } + } +} \ No newline at end of file diff --git a/400_xowa/src/gplx/core/gfobjs/Gfobj_ary_.java b/400_xowa/src/gplx/core/brys/evals/Bry_eval_wkr.java similarity index 77% rename from 400_xowa/src/gplx/core/gfobjs/Gfobj_ary_.java rename to 400_xowa/src/gplx/core/brys/evals/Bry_eval_wkr.java index 05cfbc42d..537cf5e7d 100644 --- a/400_xowa/src/gplx/core/gfobjs/Gfobj_ary_.java +++ b/400_xowa/src/gplx/core/brys/evals/Bry_eval_wkr.java @@ -15,12 +15,8 @@ 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.core.gfobjs; import gplx.*; import gplx.core.*; -public class Gfobj_ary_ { - public static final byte - Ary_tid__ary = 0 - , Ary_tid__nde = 1 - , Ary_tid__str = 2 - , Ary_tid__int = 3 - ; +package gplx.core.brys.evals; import gplx.*; import gplx.core.*; import gplx.core.brys.*; +public interface Bry_eval_wkr { + String Key(); + void Resolve(Bry_bfr rv, byte[] src, int args_bgn, int args_end); } diff --git a/400_xowa/src/gplx/core/caches/Gfo_cache_mgr.java b/400_xowa/src/gplx/core/caches/Gfo_cache_mgr.java index 0e3978412..1c37b49f8 100644 --- a/400_xowa/src/gplx/core/caches/Gfo_cache_mgr.java +++ b/400_xowa/src/gplx/core/caches/Gfo_cache_mgr.java @@ -77,7 +77,7 @@ public class Gfo_cache_mgr { Console_adp__sys.Instance.Write_str_w_nl("compacting:"); // hash.Sort(); // int len = hash.Count(); -// List_adp deleted = List_adp_.new_(); +// List_adp deleted = List_adp_.New(); // int deleted_size = 0, deleted_count = 0; // for (int i = 0; i < len; i++) { // Gfo_cache_data itm = (Gfo_cache_data)hash.Get_at(i); diff --git a/400_xowa/src/gplx/core/caches/Gfo_cache_mgr_base.java b/400_xowa/src/gplx/core/caches/Gfo_cache_mgr_base.java index 1c3a5eac7..244313755 100644 --- a/400_xowa/src/gplx/core/caches/Gfo_cache_mgr_base.java +++ b/400_xowa/src/gplx/core/caches/Gfo_cache_mgr_base.java @@ -35,7 +35,7 @@ public class Gfo_cache_mgr_base { public void Compress() { hash.Sort_by(Gfo_cache_itm_comparer.Touched_asc); int del_len = hash.Count() - compress_to; - List_adp del_list = List_adp_.new_(); + List_adp del_list = List_adp_.New(); for (int i = 0; i < del_len; i++) { Gfo_cache_itm itm = (Gfo_cache_itm)hash.Get_at(i); del_list.Add(itm); diff --git a/400_xowa/src/gplx/core/consoles/Gfo_cmd_arg_mgr.java b/400_xowa/src/gplx/core/consoles/Gfo_cmd_arg_mgr.java index 78b2422a3..d1e4a89ab 100644 --- a/400_xowa/src/gplx/core/consoles/Gfo_cmd_arg_mgr.java +++ b/400_xowa/src/gplx/core/consoles/Gfo_cmd_arg_mgr.java @@ -17,8 +17,8 @@ along with this program. If not, see . */ package gplx.core.consoles; import gplx.*; import gplx.core.*; public class Gfo_cmd_arg_mgr { - private final Ordered_hash hash = Ordered_hash_.New(); - private final List_adp err_list = List_adp_.new_(), tmp_vals = List_adp_.new_(); + private final Ordered_hash hash = Ordered_hash_.New(); + private final List_adp err_list = List_adp_.New(), tmp_vals = List_adp_.New(); public String[] Orig_ary() {return orig_ary;} private String[] orig_ary; public void Reset() { hash.Clear(); diff --git a/400_xowa/src/gplx/core/consoles/Gfo_cmd_arg_mgr_printer.java b/400_xowa/src/gplx/core/consoles/Gfo_cmd_arg_mgr_printer.java index f885c6a5b..b21ece746 100644 --- a/400_xowa/src/gplx/core/consoles/Gfo_cmd_arg_mgr_printer.java +++ b/400_xowa/src/gplx/core/consoles/Gfo_cmd_arg_mgr_printer.java @@ -17,8 +17,8 @@ along with this program. If not, see . */ package gplx.core.consoles; import gplx.*; import gplx.core.*; public class Gfo_cmd_arg_mgr_printer { - private final Gfo_cmd_arg_mgr arg_mgr; - private final Bry_bfr tmp_bfr = Bry_bfr.new_(); + private final Gfo_cmd_arg_mgr arg_mgr; + private final Bry_bfr tmp_bfr = Bry_bfr_.New(); public Gfo_cmd_arg_mgr_printer(Gfo_cmd_arg_mgr arg_mgr) {this.arg_mgr = arg_mgr;} public boolean Print(Gfo_usr_dlg usr_dlg, String header, String app_name, String key__print_help, String key__print_header, String key__print_args) { if (arg_mgr.Get_by_as_bool(key__print_header)) diff --git a/400_xowa/src/gplx/core/flds/Gfo_fld_rdr.java b/400_xowa/src/gplx/core/flds/Gfo_fld_rdr.java index 8ea52bce7..40e361897 100644 --- a/400_xowa/src/gplx/core/flds/Gfo_fld_rdr.java +++ b/400_xowa/src/gplx/core/flds/Gfo_fld_rdr.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.core.flds; import gplx.*; import gplx.core.*; import gplx.core.encoders.*; public class Gfo_fld_rdr extends Gfo_fld_base { - private Bry_bfr bfr = Bry_bfr.new_(); private static final byte[] Bry_nil = Bry_.new_a7("\\0"); + private Bry_bfr bfr = Bry_bfr_.New(); private static final byte[] Bry_nil = Bry_.new_a7("\\0"); public byte[] Data() {return data;} public Gfo_fld_rdr Data_(byte[] v) {data = v; data_len = v.length; pos = 0; return this;} private byte[] data; int data_len; public int Pos() {return pos;} public Gfo_fld_rdr Pos_(int v) {pos = v; return this;} private int pos; public int Fld_bgn() {return fld_bgn;} public Gfo_fld_rdr Fld_bgn_(int v) {fld_bgn = v; return this;} private int fld_bgn; diff --git a/400_xowa/src/gplx/core/flds/Gfo_fld_rdr_tst.java b/400_xowa/src/gplx/core/flds/Gfo_fld_rdr_tst.java index 452b1ed88..7d9996272 100644 --- a/400_xowa/src/gplx/core/flds/Gfo_fld_rdr_tst.java +++ b/400_xowa/src/gplx/core/flds/Gfo_fld_rdr_tst.java @@ -52,5 +52,5 @@ class Gfo_fld_rdr_fxt { wtr.Write_bry_escape_fld(bry); Tfds.Eq(expd, bfr.To_str()); return this; - } private Bry_bfr bfr = Bry_bfr.new_(); + } private Bry_bfr bfr = Bry_bfr_.New(); } diff --git a/400_xowa/src/gplx/core/flds/Gfo_fld_wtr.java b/400_xowa/src/gplx/core/flds/Gfo_fld_wtr.java index 07ba28880..180586731 100644 --- a/400_xowa/src/gplx/core/flds/Gfo_fld_wtr.java +++ b/400_xowa/src/gplx/core/flds/Gfo_fld_wtr.java @@ -19,7 +19,7 @@ package gplx.core.flds; import gplx.*; import gplx.core.*; import gplx.core.ios.*; import gplx.core.encoders.*; public class Gfo_fld_wtr extends Gfo_fld_base { public Bry_bfr Bfr() {return bfr;} public Gfo_fld_wtr Bfr_(Bry_bfr v) {bfr = v; return this;} Bry_bfr bfr; - public Gfo_fld_wtr() {this.bfr = Bry_bfr.new_();} + public Gfo_fld_wtr() {this.bfr = Bry_bfr_.New();} public Gfo_fld_wtr Write_int_base85_len5_fld(int v) {bfr.Add_base85(v, Base85_.Len_int); bfr.Add_byte(fld_dlm); return this;} public Gfo_fld_wtr Write_int_base85_lenN_fld(int v, int len) {bfr.Add_base85(v, len); bfr.Add_byte(fld_dlm); return this;} public Gfo_fld_wtr Write_int_variable_fld(int v) {bfr.Add_int_variable(v); bfr.Add_byte(fld_dlm); return this;} diff --git a/400_xowa/src/gplx/core/gfobjs/Gfobj_ary.java b/400_xowa/src/gplx/core/gfobjs/Gfobj_ary.java index 1d2426bde..1afe3d5eb 100644 --- a/400_xowa/src/gplx/core/gfobjs/Gfobj_ary.java +++ b/400_xowa/src/gplx/core/gfobjs/Gfobj_ary.java @@ -16,31 +16,16 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.core.gfobjs; import gplx.*; import gplx.core.*; -public interface Gfobj_ary extends Gfobj_grp { - byte Ary_tid(); - int Len(); -} -class Gfo_ary_str implements Gfobj_ary { - public Gfo_ary_str(String[] ary) {this.ary = ary;} - public byte Grp_tid() {return Gfobj_grp_.Grp_tid__ary;} - public byte Ary_tid() {return Gfobj_ary_.Ary_tid__str;} - public int Len() {return ary.length;} - public Object Get_at(int i) {return ary[i];} - public String[] Ary_str() {return ary;} private final String[] ary; -} -class Gfo_ary_int implements Gfobj_ary { - public Gfo_ary_int(int[] ary) {this.ary = ary;} - public byte Grp_tid() {return Gfobj_grp_.Grp_tid__ary;} - public byte Ary_tid() {return Gfobj_ary_.Ary_tid__int;} - public int Len() {return ary.length;} - public Object Get_at(int i) {return ary[i];} - public int[] Ary_int() {return ary;} private final int[] ary; -} -class Gfo_ary_ary implements Gfobj_ary { - public Gfo_ary_ary(Gfobj_ary[] ary) {this.ary = ary;} - public byte Grp_tid() {return Gfobj_grp_.Grp_tid__ary;} - public byte Ary_tid() {return Gfobj_ary_.Ary_tid__ary;} - public int Len() {return ary.length;} - public Object Get_at(int i) {return ary[i];} - public Gfobj_ary[] Ary_ary() {return ary;} private Gfobj_ary[] ary; +public class Gfobj_ary implements Gfobj_grp { // NOTE: items in array can vary in types; EX:['a', 1, false] + public Gfobj_ary(Object[] ary) {this.ary = ary;} + public byte Grp_tid() {return Gfobj_grp_.Grp_tid__ary;} + public int Len() {return ary.length;} + public Object Get_at(int i) {return ary[i];} + public Object[] Ary_obj() {return ary;} private Object[] ary; + public Gfobj_ary Ary_(Object[] v) {this.ary = v; return this;} + public Gfobj_nde New_nde_at(int i) { + Gfobj_nde rv = Gfobj_nde.New(); + ary[i] = rv; + return rv; + } } diff --git a/400_xowa/src/gplx/core/gfobjs/Gfobj_ary_nde.java b/400_xowa/src/gplx/core/gfobjs/Gfobj_ary_nde.java deleted file mode 100644 index d802ba998..000000000 --- a/400_xowa/src/gplx/core/gfobjs/Gfobj_ary_nde.java +++ /dev/null @@ -1,27 +0,0 @@ -/* -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.core.gfobjs; import gplx.*; import gplx.core.*; -public class Gfobj_ary_nde implements Gfobj_ary { - public Gfobj_ary_nde(Gfobj_nde[] ary) {this.ary = ary;} - public byte Grp_tid() {return Gfobj_grp_.Grp_tid__ary;} - public byte Ary_tid() {return Gfobj_ary_.Ary_tid__nde;} - public int Len() {return ary.length;} - public Object Get_at(int i) {return ary[i];} - public Gfobj_nde[] Ary_nde() {return ary;} private Gfobj_nde[] ary; - public void Ary_nde_(Gfobj_nde[] v) {this.ary = v;} -} diff --git a/400_xowa/src/gplx/core/gfobjs/Gfobj_fld.java b/400_xowa/src/gplx/core/gfobjs/Gfobj_fld.java index 7b7cafb0f..b85b6e8bc 100644 --- a/400_xowa/src/gplx/core/gfobjs/Gfobj_fld.java +++ b/400_xowa/src/gplx/core/gfobjs/Gfobj_fld.java @@ -25,9 +25,11 @@ class Gfobj_fld_ { public static final byte Fld_tid__ary = 0 , Fld_tid__nde = 1 - , Fld_tid__int = 2 - , Fld_tid__long = 3 - , Fld_tid__str = 4 + , Fld_tid__bool = 2 + , Fld_tid__int = 3 + , Fld_tid__long = 4 + , Fld_tid__double = 5 + , Fld_tid__str = 6 ; } class Gfobj_fld_str implements Gfobj_fld { @@ -37,6 +39,13 @@ class Gfobj_fld_str implements Gfobj_fld { public Object As_obj() {return val;} public String As_str() {return val;} private String val; } +class Gfobj_fld_bool implements Gfobj_fld { + public Gfobj_fld_bool(String key, boolean val) {this.key = key; this.val = val;} + public String Key() {return key;} private final String key; + public byte Fld_tid() {return Gfobj_fld_.Fld_tid__bool;} + public Object As_obj() {return val;} + public boolean As_bool() {return val;} private boolean val; +} class Gfobj_fld_int implements Gfobj_fld { public Gfobj_fld_int(String key, int val) {this.key = key; this.val = val;} public String Key() {return key;} private final String key; @@ -51,6 +60,13 @@ class Gfobj_fld_long implements Gfobj_fld { public Object As_obj() {return val;} public long As_long() {return val;} private long val; } +class Gfobj_fld_double implements Gfobj_fld { + public Gfobj_fld_double(String key, double val) {this.key = key; this.val = val;} + public String Key() {return key;} private final String key; + public byte Fld_tid() {return Gfobj_fld_.Fld_tid__double;} + public Object As_obj() {return val;} + public double As_double() {return val;} private double val; +} class Gfobj_fld_nde implements Gfobj_fld { public Gfobj_fld_nde(String key, Gfobj_nde val) {this.key = key; this.val = val;} public String Key() {return key;} private final String key; diff --git a/400_xowa/src/gplx/core/gfobjs/Gfobj_grp.java b/400_xowa/src/gplx/core/gfobjs/Gfobj_grp.java index 564abeb2a..12da4c1a6 100644 --- a/400_xowa/src/gplx/core/gfobjs/Gfobj_grp.java +++ b/400_xowa/src/gplx/core/gfobjs/Gfobj_grp.java @@ -17,5 +17,5 @@ along with this program. If not, see . */ package gplx.core.gfobjs; import gplx.*; import gplx.core.*; public interface Gfobj_grp { - byte Grp_tid(); + byte Grp_tid(); } diff --git a/400_xowa/src/gplx/core/gfobjs/Gfobj_nde.java b/400_xowa/src/gplx/core/gfobjs/Gfobj_nde.java index d8486a519..75d8f108e 100644 --- a/400_xowa/src/gplx/core/gfobjs/Gfobj_nde.java +++ b/400_xowa/src/gplx/core/gfobjs/Gfobj_nde.java @@ -22,13 +22,39 @@ public class Gfobj_nde implements Gfobj_grp { public int Len() {return subs == null ? 0 : subs.Len();} public Gfobj_fld Get_at(int i) {return subs == null ? null : (Gfobj_fld)subs.Get_at(i);} public Gfobj_fld Get_by(String k) {return subs == null ? null : (Gfobj_fld)subs.Get_by(k);} + public Gfobj_ary Get_ary(String k) {return ((Gfobj_fld_ary)Get_by(k)).As_ary();} + public Gfobj_nde Get_nde(int i) {return ((Gfobj_fld_nde)Get_at(i)).As_nde();} + public Gfobj_nde Get_nde(String k) {return ((Gfobj_fld_nde)Get_by(k)).As_nde();} + public long Get_long(String k) { + Gfobj_fld fld = Get_by(k); + switch (fld.Fld_tid()) { + case Gfobj_fld_.Fld_tid__long: return ((Gfobj_fld_long)fld).As_long(); + case Gfobj_fld_.Fld_tid__int : return ((Gfobj_fld_int )fld).As_int(); + default: throw Err_.new_unhandled_default(fld.Fld_tid()); + } + } + public int Get_int(String k) { + Gfobj_fld fld = Get_by(k); + switch (fld.Fld_tid()) { + case Gfobj_fld_.Fld_tid__int : return ((Gfobj_fld_int )fld).As_int(); + default: throw Err_.new_unhandled_default(fld.Fld_tid()); + } + } + public byte Get_byte(String k) {return (byte)Get_int(k);} + public String Get_str(String k) {return ((Gfobj_fld_str)Get_by(k)).As_str();} + public Io_url Get_url(String k) {return Io_url_.new_any_(((Gfobj_fld_str)Get_by(k)).As_str());} public Gfobj_nde Add_fld(Gfobj_fld fld) {if (subs == null) subs = Ordered_hash_.New(); subs.Add(fld.Key(), fld); return this;} + public Gfobj_nde Add_bool(String key, boolean val) {return Add_fld(new Gfobj_fld_bool(key, val));} + public Gfobj_nde Add_byte(String key, byte val) {return Add_fld(new Gfobj_fld_int(key, val));} public Gfobj_nde Add_int(String key, int val) {return Add_fld(new Gfobj_fld_int(key, val));} public Gfobj_nde Add_long(String key, long val) {return Add_fld(new Gfobj_fld_long(key, val));} public Gfobj_nde Add_str(String key, String val) {return Add_fld(new Gfobj_fld_str(key, val));} + public Gfobj_nde Add_url(String key, Io_url val) {return Add_fld(new Gfobj_fld_str(key, val.Raw()));} + public Gfobj_nde Add_double(String key, double val) {return Add_fld(new Gfobj_fld_double(key, val));} public Gfobj_nde Add_nde(String key, Gfobj_nde val) {return Add_fld(new Gfobj_fld_nde(key, val));} public Gfobj_nde Add_ary(String key, Gfobj_ary val) {return Add_fld(new Gfobj_fld_ary(key, val));} - public Gfobj_nde New_nde(String key) {Gfobj_nde rv = new Gfobj_nde(); Add_fld(new Gfobj_fld_nde(key, rv)); return rv;} - public Gfobj_ary_nde New_ary_nde(String key) {Gfobj_ary_nde rv = new Gfobj_ary_nde(null); Add_fld(new Gfobj_fld_ary(key, rv)); return rv;} + public Gfobj_nde New_nde(String key) {Gfobj_nde rv = new Gfobj_nde(); Add_fld(new Gfobj_fld_nde(key, rv)); return rv;} + public Gfobj_ary New_ary(String key) {Gfobj_ary rv = new Gfobj_ary(null); Add_fld(new Gfobj_fld_ary(key, rv)); return rv;} + public Gfobj_ary New_ary(String key, int subs_len) {return New_ary(key).Ary_(new Object[subs_len]);} public static Gfobj_nde New() {return new Gfobj_nde();} } diff --git a/400_xowa/src/gplx/core/gfobjs/Gfobj_rdr__json.java b/400_xowa/src/gplx/core/gfobjs/Gfobj_rdr__json.java new file mode 100644 index 000000000..f977b3477 --- /dev/null +++ b/400_xowa/src/gplx/core/gfobjs/Gfobj_rdr__json.java @@ -0,0 +1,92 @@ +/* +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.core.gfobjs; import gplx.*; import gplx.core.*; +import gplx.langs.jsons.*; +public class Gfobj_rdr__json { + private final Json_parser parser = new Json_parser(); + public Gfobj_grp Load(Io_url url) { + byte[] src = Io_mgr.Instance.LoadFilBryOrNull(url); if (src == null) return null; + return this.Parse(src); + } + public Gfobj_grp Parse(byte[] src) { + Json_doc jdoc = parser.Parse(src); + if (jdoc.Root_grp().Tid() == Json_itm_.Tid__nde) { + Gfobj_nde rv_nde = Gfobj_nde.New(); + Parse_nde((Json_nde)jdoc.Root_grp(), rv_nde); + return rv_nde; + } + else { + Gfobj_ary rv_ary = new Gfobj_ary(null); + Parse_ary((Json_ary)jdoc.Root_grp(), rv_ary); + return rv_ary; + } + } + private void Parse_nde(Json_nde jnde, Gfobj_nde gnde) { + int len = jnde.Len(); + for (int i = 0; i < len; ++i) { + Json_kv kv = jnde.Get_at_as_kv(i); + String key_str = kv.Key_as_str(); + Json_itm val = kv.Val(); + byte val_tid = val.Tid(); + switch (val_tid) { + case Json_itm_.Tid__str: gnde.Add_str (key_str, ((Json_itm_str)val).Data_as_str()); break; + case Json_itm_.Tid__bool: gnde.Add_bool (key_str, ((Json_itm_bool)val).Data_as_bool()); break; + case Json_itm_.Tid__int: gnde.Add_int (key_str, ((Json_itm_int)val).Data_as_int()); break; + case Json_itm_.Tid__long: gnde.Add_long (key_str, ((Json_itm_long)val).Data_as_long()); break; + case Json_itm_.Tid__decimal: gnde.Add_double (key_str, ((Json_itm_decimal)val).Data_as_decimal().To_double()); break; + case Json_itm_.Tid__null: gnde.Add_str (key_str, null); break; + case Json_itm_.Tid__ary: + Gfobj_ary sub_ary = new Gfobj_ary(null); + gnde.Add_ary(key_str, sub_ary); + Parse_ary(Json_ary.cast(val), sub_ary); + break; + case Json_itm_.Tid__nde: + Gfobj_nde sub_gnde = Gfobj_nde.New(); + gnde.Add_nde(key_str, sub_gnde); + Parse_nde(Json_nde.cast(val), sub_gnde); + break; + default: throw Err_.new_unhandled_default(val_tid); + } + } + } + private void Parse_ary(Json_ary jry, Gfobj_ary gry) { + int len = jry.Len(); + Object[] ary = new Object[len]; + gry.Ary_(ary); + for (int i = 0; i < len; ++i) { + Json_itm jsub = jry.Get_at(i); + switch (jsub.Tid()) { + case Json_itm_.Tid__ary: { + Gfobj_ary sub_ary = new Gfobj_ary(null); + Parse_ary(Json_ary.cast(jsub), sub_ary); + ary[i] = sub_ary; + break; + } + case Json_itm_.Tid__nde: { + Gfobj_nde sub_ary = Gfobj_nde.New(); + Parse_nde(Json_nde.cast(jsub), sub_ary); + ary[i] = sub_ary; + break; + } + default: + ary[i] = jsub.Data(); + break; + } + } + } +} diff --git a/400_xowa/src/gplx/core/gfobjs/Gfobj_rdr__json_tst.java b/400_xowa/src/gplx/core/gfobjs/Gfobj_rdr__json_tst.java new file mode 100644 index 000000000..f1b1e7759 --- /dev/null +++ b/400_xowa/src/gplx/core/gfobjs/Gfobj_rdr__json_tst.java @@ -0,0 +1,88 @@ +/* +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.core.gfobjs; import gplx.*; import gplx.core.*; +import org.junit.*; import gplx.core.tests.*; +import gplx.langs.jsons.*; +public class Gfobj_rdr__json_tst { + private final Gfobj_wtr__json_fxt fxt = new Gfobj_wtr__json_fxt(); + @Test public void Type() { + fxt.Test__parse(String_.Concat_lines_nl_skip_last + ( "{ 'k1':true" + , ", 'k2':123" + , ", 'k3':9876543210" + , ", 'k4':1.23" + , ", 'k5':null" + , ", 'k6':'abc'" + , "}" + ) + , fxt.Make__nde + ( fxt.Make__fld_bool ("k1", true) + , fxt.Make__fld_int ("k2", 123) + , fxt.Make__fld_long ("k3", 9876543210L) + , fxt.Make__fld_double ("k4", 1.23) + , fxt.Make__fld_str ("k5", null) + , fxt.Make__fld_str ("k6", "abc") + )); + } + @Test public void Nested() { + fxt.Test__parse(String_.Concat_lines_nl_skip_last + ( "{ 'a1':'1a'" + , ", 'a2':" + , " { 'b1':'1b'" + , " , 'b2':" + , " { 'c1':'1c'" + , " }" + , " }" + , ", 'a3':[1, 2, 3]" + , "}" + ) + , fxt.Make__nde + ( fxt.Make__fld_str ("a1", "1a") + , fxt.Make__fld_nde ("a2" + , fxt.Make__fld_str("b1", "1b") + , fxt.Make__fld_nde("b2" + , fxt.Make__fld_str("c1", "1c")) + ) + , fxt.Make__fld_ary ("a3", 1, 2, 3) + )); + } + @Test public void Array() { + fxt.Test__parse(String_.Concat_lines_nl_skip_last + ( "[" + , " [1, 2, 3]" + , ", ['a', 'b', 'c']" + , ", [true, false]" + , ", [9876543210, 9876543211, 9876543212]" + //, ", [1.23, 1.24, 1.25]" + , ", [{'a':1}, {'b':2}, {'c':3}]" + , "]" + ) + , fxt.Make__ary + ( fxt.Make__ary (1, 2, 3) + , fxt.Make__ary ("a", "b", "c") + , fxt.Make__ary (true, false) + , fxt.Make__ary (9876543210L, 9876543211L, 9876543212L) + // , fxt.Make__ary (1.23, 1.24, 1.25) + , fxt.Make__ary + ( fxt.Make__nde(fxt.Make__fld_int("a", 1)) + , fxt.Make__nde(fxt.Make__fld_int("b", 2)) + , fxt.Make__nde(fxt.Make__fld_int("c", 3)) + ) + )); + } +} diff --git a/400_xowa/src/gplx/core/gfobjs/Gfobj_wtr__json.java b/400_xowa/src/gplx/core/gfobjs/Gfobj_wtr__json.java index 10403c216..6b743e4a7 100644 --- a/400_xowa/src/gplx/core/gfobjs/Gfobj_wtr__json.java +++ b/400_xowa/src/gplx/core/gfobjs/Gfobj_wtr__json.java @@ -20,8 +20,12 @@ import gplx.langs.jsons.*; public class Gfobj_wtr__json { private final Json_wtr wtr = new Json_wtr(); public Gfobj_wtr__json Opt_ws_(boolean v) {wtr.Opt_ws_(v); return this;} + public Gfobj_wtr__json Opt_backslash_2x_(boolean v) {wtr.Opt_backslash_2x_(v); return this;} public Bry_bfr Bfr() {return wtr.Bfr();} public String To_str() {return wtr.To_str_and_clear();} + public void Save(Io_url url) { + Io_mgr.Instance.SaveFilBry(url, wtr.To_bry_and_clear()); + } public Gfobj_wtr__json Write(Gfobj_grp root) { switch (root.Grp_tid()) { case Gfobj_grp_.Grp_tid__nde: @@ -51,6 +55,8 @@ public class Gfobj_wtr__json { case Gfobj_fld_.Fld_tid__str: wtr.Kv_str(itm.Key() , ((Gfobj_fld_str)itm).As_str()); break; case Gfobj_fld_.Fld_tid__int: wtr.Kv_int(itm.Key() , ((Gfobj_fld_int)itm).As_int()); break; case Gfobj_fld_.Fld_tid__long: wtr.Kv_long(itm.Key() , ((Gfobj_fld_long)itm).As_long()); break; + case Gfobj_fld_.Fld_tid__bool: wtr.Kv_bool(itm.Key() , ((Gfobj_fld_bool)itm).As_bool()); break; + case Gfobj_fld_.Fld_tid__double: wtr.Kv_double(itm.Key() , ((Gfobj_fld_double)itm).As_double()); break; case Gfobj_fld_.Fld_tid__nde: wtr.Nde_bgn(itm.Key()); Write_nde(((Gfobj_fld_nde)itm).As_nde()); wtr.Nde_end();break; case Gfobj_fld_.Fld_tid__ary: wtr.Ary_bgn(itm.Key()); Write_ary(((Gfobj_fld_ary)itm).As_ary()); wtr.Ary_end();break; default: throw Err_.new_unhandled_default(itm.Fld_tid()); @@ -58,35 +64,22 @@ public class Gfobj_wtr__json { } private void Write_ary(Gfobj_ary ary) { int len = ary.Len(); - byte ary_tid = ary.Ary_tid(); - switch (ary_tid) { - case Gfobj_ary_.Ary_tid__str: - String[] ary_str = ((Gfo_ary_str)ary).Ary_str(); - for (int i = 0; i < len; ++i) - wtr.Ary_itm_str(ary_str[i]); - break; - case Gfobj_ary_.Ary_tid__int: - int[] ary_int = ((Gfo_ary_int)ary).Ary_int(); - for (int i = 0; i < len; ++i) - wtr.Ary_itm_obj(ary_int[i]); - break; - case Gfobj_ary_.Ary_tid__nde: - Gfobj_nde[] ary_nde = ((Gfobj_ary_nde)ary).Ary_nde(); - for (int i = 0; i < len; ++i) { - wtr.Nde_bgn_ary(); - Write_nde(ary_nde[i]); - wtr.Nde_end(); - } - break; - case Gfobj_ary_.Ary_tid__ary: - Gfobj_ary[] ary_ary = ((Gfo_ary_ary)ary).Ary_ary(); - for (int i = 0; i < len; ++i) { - wtr.Ary_bgn_ary(); - Write_ary(ary_ary[i]); - wtr.Ary_end(); - } - break; - default: throw Err_.new_unhandled_default(ary_tid); + Object[] ary_obj = ((Gfobj_ary)ary).Ary_obj(); + for (int i = 0; i < len; ++i) { + Object sub_itm = ary_obj[i]; + Class sub_itm_type = Type_adp_.ClassOf_obj(sub_itm); + if (Type_adp_.Eq(sub_itm_type, Gfobj_ary.class)) { + wtr.Ary_bgn_ary(); + Write_ary((Gfobj_ary)sub_itm); + wtr.Ary_end(); + } + else if (Type_adp_.Eq(sub_itm_type, Gfobj_nde.class)) { + wtr.Nde_bgn_ary(); + Write_nde((Gfobj_nde)sub_itm); + wtr.Nde_end(); + } + else + wtr.Ary_itm_obj(sub_itm); } } } diff --git a/400_xowa/src/gplx/core/gfobjs/Gfobj_wtr__json_fxt.java b/400_xowa/src/gplx/core/gfobjs/Gfobj_wtr__json_fxt.java index bd77d4547..d13aef73d 100644 --- a/400_xowa/src/gplx/core/gfobjs/Gfobj_wtr__json_fxt.java +++ b/400_xowa/src/gplx/core/gfobjs/Gfobj_wtr__json_fxt.java @@ -28,22 +28,27 @@ public class Gfobj_wtr__json_fxt { } return nde; } - public Gfobj_fld Make__fld_str(String key, String val) {return new Gfobj_fld_str(key, val);} - public Gfobj_fld Make__fld_int(String key, int val) {return new Gfobj_fld_int(key, val);} - public Gfobj_fld Make__fld_long(String key, long val) {return new Gfobj_fld_long(key, val);} + public Gfobj_fld Make__fld_bool (String key, boolean val) {return new Gfobj_fld_bool(key, val);} + public Gfobj_fld Make__fld_str (String key, String val) {return new Gfobj_fld_str(key, val);} + public Gfobj_fld Make__fld_int (String key, int val) {return new Gfobj_fld_int(key, val);} + public Gfobj_fld Make__fld_long (String key, long val) {return new Gfobj_fld_long(key, val);} + public Gfobj_fld Make__fld_double (String key, double val) {return new Gfobj_fld_double(key, val);} public Gfobj_fld Make__fld_nde(String key, Gfobj_fld... ary) { Gfobj_nde nde = Make__nde(Gfobj_nde.New(), ary); Gfobj_fld_nde rv = new Gfobj_fld_nde(key, nde); return rv; } - public Gfobj_fld Make__fld_ary_str(String key, String... ary) {return new Gfobj_fld_ary(key, new Gfo_ary_str(ary));} - public Gfobj_fld Make__fld_ary_int(String key, int... ary) {return new Gfobj_fld_ary(key, new Gfo_ary_int(ary));} - public Gfobj_fld Make__fld_ary_ary(String key, Gfobj_ary... ary) {return new Gfobj_fld_ary(key, new Gfo_ary_ary(ary));} - public Gfobj_fld Make__fld_ary_nde(String key, Gfobj_nde... ary) {return new Gfobj_fld_ary(key, new Gfobj_ary_nde(ary));} - public Gfobj_ary Make__ary_int(int... ary) {return new Gfo_ary_int(ary);} + public Gfobj_fld Make__fld_ary (String key, Object... ary) {return new Gfobj_fld_ary(key, new Gfobj_ary(ary));} + public Gfobj_ary Make__ary (Object... ary) {return new Gfobj_ary(ary);} public Gfobj_wtr__json_fxt Test__write(Gfobj_grp root, String... lines) { String[] expd = Json_doc.Make_str_ary_by_apos(lines); Gftest.Eq__ary(expd, Bry_.Ary(String_.SplitLines_nl(mgr.Write(root).To_str())), "json_write"); return this; } + public Gfobj_wtr__json_fxt Test__parse(String src, Gfobj_grp expd) { + Gfobj_rdr__json rdr = new Gfobj_rdr__json(); + Gfobj_grp actl = rdr.Parse(Bry_.new_u8(Json_doc.Make_str_by_apos(src))); + Gftest.Eq__ary(Bry_.Ary(String_.SplitLines_nl(mgr.Write(expd).To_str())), Bry_.Ary(String_.SplitLines_nl(mgr.Write(actl).To_str())), "json_write"); + return this; + } } diff --git a/400_xowa/src/gplx/core/gfobjs/Gfobj_wtr__json_tst.java b/400_xowa/src/gplx/core/gfobjs/Gfobj_wtr__json_tst.java index e56ac9d2c..05f19e513 100644 --- a/400_xowa/src/gplx/core/gfobjs/Gfobj_wtr__json_tst.java +++ b/400_xowa/src/gplx/core/gfobjs/Gfobj_wtr__json_tst.java @@ -58,7 +58,7 @@ public class Gfobj_wtr__json_tst { fxt.Test__write ( fxt.Make__nde ( fxt.Make__fld_str ("k1", "v1") - , fxt.Make__fld_ary_str ("k2", "a1", "a2", "a3") + , fxt.Make__fld_ary ("k2", "a1", "a2", "a3") , fxt.Make__fld_int ("k3", 3) ) , "{ 'k1':'v1'" @@ -76,7 +76,7 @@ public class Gfobj_wtr__json_tst { fxt.Test__write ( fxt.Make__nde ( fxt.Make__fld_str ("k1", "v1") - , fxt.Make__fld_ary_int ("k2", 1, 2, 3) + , fxt.Make__fld_ary ("k2", 1, 2, 3) , fxt.Make__fld_int ("k3", 3) ) , "{ 'k1':'v1'" @@ -94,7 +94,7 @@ public class Gfobj_wtr__json_tst { fxt.Test__write ( fxt.Make__nde ( fxt.Make__fld_str ("k1", "v1") - , fxt.Make__fld_ary_nde ("k2" + , fxt.Make__fld_ary ("k2" , fxt.Make__nde (fxt.Make__fld_str("k21", "v21")) , fxt.Make__nde (fxt.Make__fld_str("k22", "v22")) ) @@ -118,9 +118,9 @@ public class Gfobj_wtr__json_tst { fxt.Test__write ( fxt.Make__nde ( fxt.Make__fld_str ("k1", "v1") - , fxt.Make__fld_ary_ary ("k2" - , fxt.Make__ary_int (1, 2, 3) - , fxt.Make__ary_int (4, 5, 6) + , fxt.Make__fld_ary ("k2" + , fxt.Make__ary (1, 2, 3) + , fxt.Make__ary (4, 5, 6) ) , fxt.Make__fld_int ("k3", 3) ) @@ -144,7 +144,7 @@ public class Gfobj_wtr__json_tst { } @Test public void Root_ary() { fxt.Test__write - ( fxt.Make__ary_int(1, 2, 3) + ( fxt.Make__ary(1, 2, 3) , "[ 1" , ", 2" , ", 3" diff --git a/400_xowa/src/gplx/core/intls/Gfo_i18n_itm.java b/400_xowa/src/gplx/core/intls/Gfo_i18n_itm.java index 07459c30e..701e295e8 100644 --- a/400_xowa/src/gplx/core/intls/Gfo_i18n_itm.java +++ b/400_xowa/src/gplx/core/intls/Gfo_i18n_itm.java @@ -21,11 +21,11 @@ class Gfo_i18n_itm { public Gfo_i18n_itm(int src, byte[] key, byte[] val, boolean val_fmt_exists, Gfo_i18n_val_cmd val_cmd) { this.src = src; this.key = key; this.val = val; this.val_fmt_exists = val_fmt_exists; this.val_cmd = val_cmd; } - public int Src() {return src;} private final int src; - public byte[] Key() {return key;} private final byte[] key; - public byte[] Val() {return val;} private final byte[] val; - public boolean Val_fmt_exists() {return val_fmt_exists;} private final boolean val_fmt_exists; - public Gfo_i18n_val_cmd Val_cmd() {return val_cmd;} private final Gfo_i18n_val_cmd val_cmd; + public int Src() {return src;} private final int src; + public byte[] Key() {return key;} private final byte[] key; + public byte[] Val() {return val;} private final byte[] val; + public boolean Val_fmt_exists() {return val_fmt_exists;} private final boolean val_fmt_exists; + public Gfo_i18n_val_cmd Val_cmd() {return val_cmd;} private final Gfo_i18n_val_cmd val_cmd; public byte[] Bld_none() { return val_cmd == null ? val : val_cmd.Process(src, key, val); } @@ -38,6 +38,6 @@ class Gfo_i18n_itm { } return val_cmd == null ? rv : val_cmd.Process(src, key, rv); } - private static final Bry_fmtr tmp_fmtr = Bry_fmtr.new_(); - private static final Bry_bfr tmp_bfr = Bry_bfr.reset_(255); + private static final Bry_fmtr tmp_fmtr = Bry_fmtr.new_(); + private static final Bry_bfr tmp_bfr = Bry_bfr_.Reset(255); } diff --git a/400_xowa/src/gplx/core/ios/Io_buffer_rdr.java b/400_xowa/src/gplx/core/ios/Io_buffer_rdr.java index 87980287b..07757e345 100644 --- a/400_xowa/src/gplx/core/ios/Io_buffer_rdr.java +++ b/400_xowa/src/gplx/core/ios/Io_buffer_rdr.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.core.ios; import gplx.*; import gplx.core.*; -import gplx.core.ios.*;/*IoStream*/ +import gplx.core.ios.streams.*;/*IoStream*/ public class Io_buffer_rdr implements Rls_able { private Io_stream_rdr rdr; Io_buffer_rdr(Io_stream_rdr rdr, Io_url url, int bfr_len) { @@ -43,7 +43,7 @@ public class Io_buffer_rdr implements Rls_able { } private boolean Bfr_load(int bgn, int len) { int read = rdr.Read(bfr, bgn, len); - if (read == gplx.core.ios.Io_stream_rdr_.Read_done) {fil_eof = true; return false;} + if (read == gplx.core.ios.streams.Io_stream_rdr_.Read_done) {fil_eof = true; return false;} fil_pos += read; bfr_len = bgn + read; if (read < len) fil_eof = true; @@ -69,5 +69,5 @@ public class Io_buffer_rdr implements Rls_able { rv.Bfr_load(0, bfr_len); return rv; } - public static final Io_buffer_rdr Null = new Io_buffer_rdr(); Io_buffer_rdr() {} + public static final Io_buffer_rdr Null = new Io_buffer_rdr(); Io_buffer_rdr() {} } diff --git a/400_xowa/src/gplx/core/ios/Io_buffer_rdr_tst.java b/400_xowa/src/gplx/core/ios/Io_buffer_rdr_tst.java index 4173add93..cd8479868 100644 --- a/400_xowa/src/gplx/core/ios/Io_buffer_rdr_tst.java +++ b/400_xowa/src/gplx/core/ios/Io_buffer_rdr_tst.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.core.ios; import gplx.*; import gplx.core.*; -import org.junit.*; import gplx.core.ios.*; +import org.junit.*; import gplx.core.ios.*; import gplx.core.ios.streams.*; public class Io_buffer_rdr_tst { @Before public void init() { Io_mgr.Instance.InitEngine_mem(); diff --git a/400_xowa/src/gplx/core/ios/Io_line_rdr.java b/400_xowa/src/gplx/core/ios/Io_line_rdr.java index b52c976ac..01ae40aed 100644 --- a/400_xowa/src/gplx/core/ios/Io_line_rdr.java +++ b/400_xowa/src/gplx/core/ios/Io_line_rdr.java @@ -16,6 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.core.ios; import gplx.*; import gplx.core.*; +import gplx.core.ios.streams.*; public class Io_line_rdr { public Io_line_rdr (Gfo_usr_dlg usr_dlg, Io_url... urls) {this.usr_dlg = usr_dlg; this.urls = urls; if (urls.length == 0) bfr_state = Bfr_state_end;} Gfo_usr_dlg usr_dlg; public int Url_idx() {return url_idx;} private int url_idx; @@ -141,7 +142,7 @@ public class Io_line_rdr { stream_bry = Bry_.Empty; else stream_bry = Bry_.Mid(stream_bry, nl_pos + 1, stream_bry_len); - stream = gplx.core.ios.IoStream_.ary_(stream_bry); + stream = gplx.core.ios.streams.IoStream_.ary_(stream_bry); } else { stream = Io_mgr.Instance.OpenStreamRead(url); diff --git a/400_xowa/src/gplx/core/ios/Io_line_rdr_tst.java b/400_xowa/src/gplx/core/ios/Io_line_rdr_tst.java index 662c5a0a5..a2844dd5a 100644 --- a/400_xowa/src/gplx/core/ios/Io_line_rdr_tst.java +++ b/400_xowa/src/gplx/core/ios/Io_line_rdr_tst.java @@ -48,7 +48,7 @@ public class Io_line_rdr_tst { } class Io_line_rdr_fxt { Io_line_rdr rdr; - List_adp lines = List_adp_.new_(); Bry_bfr tmp = Bry_bfr.new_(); + List_adp lines = List_adp_.New(); Bry_bfr tmp = Bry_bfr_.New(); public Io_line_rdr_fxt(Io_url... urls) {rdr = new Io_line_rdr(Gfo_usr_dlg_.Test(), urls);} public Io_line_rdr_fxt Load_len_lines_(int v) {return Load_len_(v * 3);} // 3: 2=##, 1=\n public Io_line_rdr_fxt Load_len_(int v) {rdr.Load_len_(v); return this;} diff --git a/400_xowa/src/gplx/core/ios/Io_sort.java b/400_xowa/src/gplx/core/ios/Io_sort.java index da0dd65d5..9183dc17e 100644 --- a/400_xowa/src/gplx/core/ios/Io_sort.java +++ b/400_xowa/src/gplx/core/ios/Io_sort.java @@ -23,9 +23,9 @@ public class Io_sort { public Io_url[] Split(Gfo_usr_dlg usr_dlg, Io_url_gen src_fil_gen, Io_url_gen trg_fil_gen, Io_line_rdr_key_gen key_gen) {return Split(usr_dlg, src_fil_gen, trg_fil_gen, Io_sort_split_itm_sorter.Instance, key_gen);} public Io_url[] Split(Gfo_usr_dlg usr_dlg, Io_url_gen src_fil_gen, Io_url_gen trg_fil_gen, ComparerAble row_comparer, Io_line_rdr_key_gen key_gen) { Io_line_rdr rdr = new Io_line_rdr(usr_dlg, src_fil_gen.Prv_urls()).Load_len_(4 * Io_mgr.Len_kb).Key_gen_(key_gen); // NOTE: do not set load_len to memory_max; only want to load in increments - List_adp rv = List_adp_.new_(); - Bry_bfr bfr = Bry_bfr.reset_(Const_bfr_max); int size_cur = 0; - List_adp row_list = List_adp_.new_(); + List_adp rv = List_adp_.New(); + Bry_bfr bfr = Bry_bfr_.Reset(Const_bfr_max); int size_cur = 0; + List_adp row_list = List_adp_.New(); while (true) { boolean reading = rdr.Read_next(); int size_row = rdr.Itm_pos_end() - rdr.Itm_pos_bgn(); diff --git a/400_xowa/src/gplx/core/ios/Io_sort_fil_basic.java b/400_xowa/src/gplx/core/ios/Io_sort_fil_basic.java index fc0c7510d..a47a76b6a 100644 --- a/400_xowa/src/gplx/core/ios/Io_sort_fil_basic.java +++ b/400_xowa/src/gplx/core/ios/Io_sort_fil_basic.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.core.ios; import gplx.*; import gplx.core.*; public class Io_sort_fil_basic implements Io_sort_cmd { // 123|bgn|end|1 - public Io_sort_fil_basic(Gfo_usr_dlg usr_dlg, Io_url_gen url_gen, int flush_len) {this.usr_dlg = usr_dlg; this.url_gen = url_gen; this.flush_len = flush_len;} Io_url_gen url_gen; Bry_bfr bfr = Bry_bfr.new_(); int flush_len; Gfo_usr_dlg usr_dlg; + public Io_sort_fil_basic(Gfo_usr_dlg usr_dlg, Io_url_gen url_gen, int flush_len) {this.usr_dlg = usr_dlg; this.url_gen = url_gen; this.flush_len = flush_len;} Io_url_gen url_gen; Bry_bfr bfr = Bry_bfr_.New(); int flush_len; Gfo_usr_dlg usr_dlg; public void Sort_bgn() {} public void Sort_do(Io_line_rdr rdr) { int bgn = rdr.Itm_pos_bgn(), end = rdr.Itm_pos_end(); diff --git a/400_xowa/src/gplx/core/ios/Io_sort_misc_tst.java b/400_xowa/src/gplx/core/ios/Io_sort_misc_tst.java index 4bdd2388f..1c7a984ef 100644 --- a/400_xowa/src/gplx/core/ios/Io_sort_misc_tst.java +++ b/400_xowa/src/gplx/core/ios/Io_sort_misc_tst.java @@ -25,7 +25,7 @@ public class Io_sort_misc_tst { } private void tst_Io_url_gen_dir(String dir_str, String fmt, int digits, int calls, String... expd) { Io_url dir = Io_url_.mem_dir_(dir_str); - List_adp actl_list = List_adp_.new_(); + List_adp actl_list = List_adp_.New(); Io_url_gen wkr = Io_url_gen_.dir_(dir, fmt, digits); for (int i = 0; i < calls; i++) actl_list.Add(wkr.Nxt_url().Raw()); diff --git a/400_xowa/src/gplx/core/ios/Io_sort_tst.java b/400_xowa/src/gplx/core/ios/Io_sort_tst.java index c0b733f15..ac19397a9 100644 --- a/400_xowa/src/gplx/core/ios/Io_sort_tst.java +++ b/400_xowa/src/gplx/core/ios/Io_sort_tst.java @@ -48,7 +48,7 @@ class Io_sort_fxt { Tfds.Eq_ary_str(String_.SplitLines_nl(sorted), String_.SplitLines_nl(actl)); } public String GenRandom(int rows, int pad) { - List_adp list = List_adp_.new_(); + List_adp list = List_adp_.New(); for (int i = 0; i < rows; i++) list.Add(Int_.To_str_pad_bgn_zero(i, pad) + "|"); list.Shuffle(); diff --git a/400_xowa/src/gplx/core/ios/Io_stream_rdr_process.java b/400_xowa/src/gplx/core/ios/Io_stream_rdr_process.java index 90c2c24a3..bacc6d9f3 100644 --- a/400_xowa/src/gplx/core/ios/Io_stream_rdr_process.java +++ b/400_xowa/src/gplx/core/ios/Io_stream_rdr_process.java @@ -17,6 +17,7 @@ along with this program. If not, see . */ package gplx.core.ios; import gplx.*; import gplx.core.*; import java.io.InputStream; +import gplx.core.ios.streams.*; public class Io_stream_rdr_process implements Io_stream_rdr { private Process process; private InputStream stream_read; diff --git a/400_xowa/src/gplx/core/ios/Io_stream_zip_mgr.java b/400_xowa/src/gplx/core/ios/Io_stream_zip_mgr.java index 82fa5ecbe..1cde9e2d1 100644 --- a/400_xowa/src/gplx/core/ios/Io_stream_zip_mgr.java +++ b/400_xowa/src/gplx/core/ios/Io_stream_zip_mgr.java @@ -16,8 +16,9 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.core.ios; import gplx.*; import gplx.core.*; +import gplx.core.ios.streams.*; public class Io_stream_zip_mgr { - private final Bry_bfr bfr = Bry_bfr.reset_(256); + private final Bry_bfr bfr = Bry_bfr_.Reset(256); private Io_stream_wtr wtr_gzip, wtr_zip, wtr_bzip2; private Io_stream_rdr rdr_gzip, rdr_zip, rdr_bzip2; public byte[] Zip(byte type, byte[] val) { diff --git a/400_xowa/src/gplx/core/lists/hashs/Hash_adp__int.java b/400_xowa/src/gplx/core/lists/hashs/Hash_adp__int.java new file mode 100644 index 000000000..853306f0a --- /dev/null +++ b/400_xowa/src/gplx/core/lists/hashs/Hash_adp__int.java @@ -0,0 +1,30 @@ +/* +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.core.lists.hashs; import gplx.*; import gplx.core.*; import gplx.core.lists.*; +import gplx.core.primitives.*; +public class Hash_adp__int { + private final Hash_adp hash = Hash_adp_.New(); + private final Int_obj_ref tmp_key = Int_obj_ref.New_neg1(); + public void Clear() {hash.Clear();} + public Object Get_by(int key) {return hash.Get_by_or_fail(tmp_key.Val_(key));} + public Object Get_by_or_null(int key) {return hash.Get_by(tmp_key.Val_(key));} + public void Add(int key, Object obj) {hash.Add(Int_obj_ref.New(key), obj);} + public void Add(Int_obj_ref key, Object obj) {hash.Add(key, obj);} + public void Add_if_dupe_use_1st(int key, Object obj) {hash.Add_if_dupe_use_1st(Int_obj_ref.New(key), obj);} + public void Add_if_dupe_use_nth(Int_obj_ref key, Object obj) {hash.Add_if_dupe_use_nth(key, obj);} +} diff --git a/400_xowa/src/gplx/core/logs/Gfo_log_fil.java b/400_xowa/src/gplx/core/logs/Gfo_log_fil.java deleted file mode 100644 index 881ee07cc..000000000 --- a/400_xowa/src/gplx/core/logs/Gfo_log_fil.java +++ /dev/null @@ -1,55 +0,0 @@ -/* -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.core.logs; import gplx.*; import gplx.core.*; -public class Gfo_log_fil { - private final Bry_bfr fil_bfr = Bry_bfr.new_(), msg_bfr = Bry_bfr.new_(); - private final String key; - private final Io_url dir; - private final long size_max; - private int file_idx; - private Io_url fil_cur; - private final Gfo_log_fmtr fmtr = new Gfo_log_fmtr(); - private final Gfo_log_fil session; - public Gfo_log_fil(Gfo_log_fil session, String key, Io_url dir, long size_max) { - this.session = session; - this.key = key; - this.dir = dir; - this.size_max = size_max; - this.fil_cur = Fil_new(); - } - public void Add(String msg, Object... vals) { - fmtr.Add(msg_bfr, msg, vals); - Add_by_bfr(msg_bfr); - msg_bfr.Clear(); - } - public void Add_by_bfr(Bry_bfr msg_bfr) { - if (msg_bfr.Len() + fil_bfr.Len() > size_max) { - this.Flush(); - fil_cur = Fil_new(); - } - fil_bfr.Add_bfr_and_preserve(msg_bfr); - if (session != null) session.Add_by_bfr(msg_bfr); - } - public void Flush() { - Io_mgr.Instance.AppendFilBfr(fil_cur, fil_bfr); - } - private Io_url Fil_new() { - String part = size_max == -1 ? "" : "-" + Int_.To_str(++file_idx); - return dir.OwnerDir().GenSubFil_ary(key, part, ".log"); - } -} diff --git a/400_xowa/src/gplx/core/logs/Gfo_log_fmtr.java b/400_xowa/src/gplx/core/logs/Gfo_log_fmtr.java deleted file mode 100644 index b3696ab05..000000000 --- a/400_xowa/src/gplx/core/logs/Gfo_log_fmtr.java +++ /dev/null @@ -1,58 +0,0 @@ -/* -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.core.logs; import gplx.*; import gplx.core.*; -import gplx.core.btries.*; -class Gfo_log_fmtr { - private final Btrie_fast_mgr trie = Btrie_fast_mgr.cs() - .Add("~|" , Bry_.new_a7("~|<")) - .Add("|" , Bry_.new_a7("~||")) - .Add("\n" , Bry_.new_a7("~|n")) - .Add("\t" , Bry_.new_a7("~|t")) - ; - public void Add(Bry_bfr bfr, String msg, Object... vals) { - Add_bry(bfr, Bry_.new_u8(msg)); - int len = vals.length; - for (int i = 0; i < len; ++i) { - bfr.Add_byte(Byte_ascii.Pipe); - byte[] val_bry = Bry_.new_u8(Object_.Xto_str_strict_or_empty(vals[i])); - Add_bry(bfr, val_bry); - } - bfr.Add_byte_nl(); - } - private void Add_bry(Bry_bfr bfr, byte[] src) { - if (src == null) return; - int len = src.length; if (len == 0) return; - int pos = 0; - int add_bgn = -1; - while (true) { - if (pos == len) break; - byte b = src[pos]; - Object o = trie.Match_bgn_w_byte(b, src, pos, len); - if (o == null) { - if (add_bgn == -1) add_bgn = pos; - } - else { - if (add_bgn != -1) bfr.Add_mid(src, add_bgn, pos); - byte[] repl = (byte[])o; - bfr.Add(repl); - pos = trie.Match_pos(); - } - } - if (add_bgn != -1) bfr.Add_mid(src, add_bgn, len); - } -} diff --git a/400_xowa/src/gplx/core/logs/Gfo_log_mgr.java b/400_xowa/src/gplx/core/logs/Gfo_log_mgr.java deleted file mode 100644 index 3b4e5f599..000000000 --- a/400_xowa/src/gplx/core/logs/Gfo_log_mgr.java +++ /dev/null @@ -1,55 +0,0 @@ -/* -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.core.logs; import gplx.*; import gplx.core.*; -public class Gfo_log_mgr { - private final Ordered_hash fil_list = Ordered_hash_.New(); - private final Gfo_log_fil session_fil; - private final Io_url dir; - private final long size_dflt = Io_mgr.Len_mb * 2; - public Gfo_log_mgr(Io_url dir) { - this.dir = dir; - this.session_fil = new Gfo_log_fil(null, "session", dir, -1); - } - public Gfo_log_fil Fils__get_or_new(String key) { - Gfo_log_fil rv = (Gfo_log_fil)fil_list.Get_by(key); - if (rv == null) { - rv = new Gfo_log_fil(session_fil, key, dir, size_dflt); - fil_list.Add(key, rv); - } - return rv; - } - public void Msgs__add(String fil_key, String msg, Object... vals) { - Gfo_log_fil fil = (Gfo_log_fil)Fils__get_or_new(fil_key); - fil.Add(msg, vals); - } -} -// class Some_log_cls { -// private final Gfo_log_mgr log_mgr = new Gfo_log_mgr(); -// public void Init() { -// } -// private Gfo_log_fil dedicated; -// public void Init_dedicated() { -// dedicated = log_mgr.Fil_get_or_new("parse"); -// } -// public void Proc_w_dedicate() { -// dedicated.Add("file download failed", "url", "msg"); -// } -// public void Proc_dynamic() { -// log_mgr.Msg_add("parse", "file download failed", "url", "msg"); -// } -// } diff --git a/400_xowa/src/gplx/core/net/Gfo_inet_conn_.java b/400_xowa/src/gplx/core/net/Gfo_inet_conn_.java index 94c2b589a..90235bfcb 100644 --- a/400_xowa/src/gplx/core/net/Gfo_inet_conn_.java +++ b/400_xowa/src/gplx/core/net/Gfo_inet_conn_.java @@ -32,14 +32,14 @@ public class Gfo_inet_conn_ { public static void new_prototype_(int v) {new_prototype = v;} private static int new_prototype = Tid__http; } class Gfo_inet_conn__mem__hash implements Gfo_inet_conn { - private final Hash_adp hash = Hash_adp_.new_(); + private final Hash_adp hash = Hash_adp_.New(); public int Tid() {return Gfo_inet_conn_.Tid__mem__hash;} public void Clear() {hash.Clear();} public void Upload_by_bytes(String url, byte[] data) {hash.Add(url, data);} public byte[] Download_as_bytes_or_null(String url) {return (byte[])hash.Get_by(url);} } class Gfo_inet_conn__mem__pile implements Gfo_inet_conn { - private final List_adp pile = List_adp_.new_(); + private final List_adp pile = List_adp_.New(); public int Tid() {return Gfo_inet_conn_.Tid__mem__hash;} public void Clear() {pile.Clear();} public void Upload_by_bytes(String url, byte[] data) {pile.Add(data);} diff --git a/400_xowa/src/gplx/core/net/Gfo_url.java b/400_xowa/src/gplx/core/net/Gfo_url.java index 02d1ce8a1..1cf8eb573 100644 --- a/400_xowa/src/gplx/core/net/Gfo_url.java +++ b/400_xowa/src/gplx/core/net/Gfo_url.java @@ -16,6 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.core.net; import gplx.*; import gplx.core.*; +import gplx.core.net.qargs.*; public class Gfo_url { public byte[] Raw() {return raw;} private byte[] raw; public byte Protocol_tid() {return protocol_tid;} private byte protocol_tid; @@ -34,5 +35,5 @@ public class Gfo_url { this.anch = anch; return this; } - public static final Gfo_url Empty = new Gfo_url().Ctor(Bry_.Empty, Gfo_protocol_itm.Tid_unknown, Bry_.Empty, Bry_.Ary_empty, null, null); + public static final Gfo_url Empty = new Gfo_url().Ctor(Bry_.Empty, Gfo_protocol_itm.Tid_unknown, Bry_.Empty, Bry_.Ary_empty, null, null); } diff --git a/400_xowa/src/gplx/core/net/Gfo_url_parser.java b/400_xowa/src/gplx/core/net/Gfo_url_parser.java index fed49741c..b8b01a941 100644 --- a/400_xowa/src/gplx/core/net/Gfo_url_parser.java +++ b/400_xowa/src/gplx/core/net/Gfo_url_parser.java @@ -17,10 +17,11 @@ along with this program. If not, see . */ package gplx.core.net; import gplx.*; import gplx.core.*; import gplx.core.primitives.*; import gplx.core.btries.*; +import gplx.core.net.qargs.*; public class Gfo_url_parser { - private final Btrie_slim_mgr protocols = Btrie_slim_mgr.ci_a7(); // ASCII:url_protocol; EX:"http:", "ftp:", etc - private final Bry_ary segs_ary = new Bry_ary(4), qargs = new Bry_ary(4); - private final Bry_bfr tmp_bfr = Bry_bfr.reset_(500); + private final Btrie_slim_mgr protocols = Btrie_slim_mgr.ci_a7(); // ASCII:url_protocol; EX:"http:", "ftp:", etc + private final Bry_ary segs_ary = new Bry_ary(4), qargs = new Bry_ary(4); + private final Bry_bfr tmp_bfr = Bry_bfr_.Reset(500); public byte[] Relative_url_protocol_bry() {return Gfo_protocol_itm.Itm_https.Key_w_colon_bry();} // NOTE: https b/c any WMF wiki will now default to WMF; DATE:2015-07-26 public Gfo_url_parser() { Init_protocols(Gfo_protocol_itm.Ary()); @@ -254,5 +255,5 @@ public class Gfo_url_parser { qargs.Clear(); segs_ary.Set_at_last(tmp_bfr.To_bry_and_clear()); } - public static final byte[] Bry_double_slash = new byte[] {Byte_ascii.Slash, Byte_ascii.Slash}; + public static final byte[] Bry_double_slash = new byte[] {Byte_ascii.Slash, Byte_ascii.Slash}; } diff --git a/400_xowa/src/gplx/core/net/Gfo_url_parser_fxt.java b/400_xowa/src/gplx/core/net/Gfo_url_parser_fxt.java index e3cf4b572..0af251c54 100644 --- a/400_xowa/src/gplx/core/net/Gfo_url_parser_fxt.java +++ b/400_xowa/src/gplx/core/net/Gfo_url_parser_fxt.java @@ -16,8 +16,9 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.core.net; import gplx.*; import gplx.core.*; +import gplx.core.net.qargs.*; class Gfo_url_parser_fxt { - private final Gfo_url_parser parser = new Gfo_url_parser(); + private final Gfo_url_parser parser = new Gfo_url_parser(); private Gfo_url actl; public Gfo_url_parser_fxt Chk_protocol_tid(byte v) {Tfds.Eq_byte(v, actl.Protocol_tid(), "protocol_tid"); return this;} public Gfo_url_parser_fxt Chk_protocol_bry(String v) {Tfds.Eq_str(v, actl.Protocol_bry(), "protocol_bry"); return this;} @@ -35,5 +36,5 @@ class Gfo_url_parser_fxt { parser.Parse_site_fast(site_data, raw_bry, 0, raw_bry.length); String actl = String_.new_u8(raw_bry, site_data.Site_bgn(), site_data.Site_end()); Tfds.Eq(expd, actl); - } private final Gfo_url_site_data site_data = new Gfo_url_site_data(); + } private final Gfo_url_site_data site_data = new Gfo_url_site_data(); } diff --git a/400_xowa/src/gplx/core/net/Http_client_wtr.java b/400_xowa/src/gplx/core/net/Http_client_wtr.java index 5b60c6995..3267bf881 100644 --- a/400_xowa/src/gplx/core/net/Http_client_wtr.java +++ b/400_xowa/src/gplx/core/net/Http_client_wtr.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.core.net; import gplx.*; import gplx.core.*; -import gplx.core.ios.*; +import gplx.core.ios.*; import gplx.core.ios.streams.*; public interface Http_client_wtr { void Stream_(Object o); void Write_bry(byte[] bry); diff --git a/400_xowa/src/gplx/core/net/Http_client_wtr__stream.java b/400_xowa/src/gplx/core/net/Http_client_wtr__stream.java index 85afb5275..10c1b9b13 100644 --- a/400_xowa/src/gplx/core/net/Http_client_wtr__stream.java +++ b/400_xowa/src/gplx/core/net/Http_client_wtr__stream.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.core.net; import gplx.*; import gplx.core.*; -import gplx.core.ios.*; +import gplx.core.ios.*; import gplx.core.ios.streams.*; import java.io.*; class Http_client_wtr__stream implements Http_client_wtr { - private final byte[] tmp_stream_bry = new byte[1024]; + private final byte[] tmp_stream_bry = new byte[1024]; private DataOutputStream stream; public void Stream_(Object o) { this.stream = new DataOutputStream((OutputStream)o); diff --git a/400_xowa/src/gplx/core/net/Http_request_parser.java b/400_xowa/src/gplx/core/net/Http_request_parser.java index 5a9544705..6853940f5 100644 --- a/400_xowa/src/gplx/core/net/Http_request_parser.java +++ b/400_xowa/src/gplx/core/net/Http_request_parser.java @@ -22,7 +22,7 @@ public class Http_request_parser { private int type, content_length; private byte[] url, protocol, host, user_agent, accept, accept_language, accept_encoding, x_requested_with, cookie, referer, content_type, content_type_boundary, connection, pragma, cache_control, origin; private Http_post_data_hash post_data_hash; - private final Bry_bfr tmp_bfr = Bry_bfr.new_(255); + private final Bry_bfr tmp_bfr = Bry_bfr_.New_w_size(255); private final Http_server_wtr server_wtr; private final boolean log; public Http_request_parser(Http_server_wtr server_wtr, boolean log) {this.server_wtr = server_wtr; this.log = log;} public void Clear() { diff --git a/400_xowa/src/gplx/core/net/downloads/Http_download_wkr.java b/400_xowa/src/gplx/core/net/downloads/Http_download_wkr.java new file mode 100644 index 000000000..179a21491 --- /dev/null +++ b/400_xowa/src/gplx/core/net/downloads/Http_download_wkr.java @@ -0,0 +1,25 @@ +/* +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.core.net.downloads; import gplx.*; import gplx.core.*; import gplx.core.net.*; +public interface Http_download_wkr { + String Fail_msg(); + Http_download_wkr Make_new(); + long Checkpoint__load_by_trg_fil(Io_url trg_url); + byte Exec(gplx.core.progs.Gfo_prog_ui prog_ui, String src_str, Io_url trg_url, long expd_size); + void Exec_cleanup(); +} diff --git a/400_xowa/src/gplx/core/net/downloads/Http_download_wkr_.java b/400_xowa/src/gplx/core/net/downloads/Http_download_wkr_.java new file mode 100644 index 000000000..cbda1c385 --- /dev/null +++ b/400_xowa/src/gplx/core/net/downloads/Http_download_wkr_.java @@ -0,0 +1,21 @@ +/* +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.core.net.downloads; import gplx.*; import gplx.core.*; import gplx.core.net.*; +public class Http_download_wkr_ { + public static Http_download_wkr Proto = new Http_download_wkr__jre(); +} diff --git a/400_xowa/src/gplx/core/net/downloads/Http_download_wkr__base.java b/400_xowa/src/gplx/core/net/downloads/Http_download_wkr__base.java new file mode 100644 index 000000000..685cb46a5 --- /dev/null +++ b/400_xowa/src/gplx/core/net/downloads/Http_download_wkr__base.java @@ -0,0 +1,74 @@ +/* +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.core.net.downloads; import gplx.*; import gplx.core.*; import gplx.core.net.*; +import gplx.core.progs.*; +public abstract class Http_download_wkr__base implements Http_download_wkr { + private long expd_size; + private Io_url tmp_url, checkpoint_url; + private long downloaded; + private long checkpoint_interval = 1024 * 1024, checkpoint_nxt = 0; + public String Fail_msg() {return fail_msg;} private String fail_msg; + public abstract Http_download_wkr Make_new(); + public byte Exec(gplx.core.progs.Gfo_prog_ui prog_ui, String src_str, Io_url trg_url, long expd_size_val) { + this.downloaded = this.Checkpoint__load_by_trg_fil(trg_url); + this.checkpoint_nxt = downloaded + checkpoint_interval; + this.expd_size = expd_size_val; + this.fail_msg = null; + + byte status = this.Exec_hook(prog_ui, src_str, tmp_url, downloaded); + switch (status) { + case Gfo_prog_ui_.Status__done: { + if (expd_size_val != -1) { + long actl_size = Io_mgr.Instance.QueryFil(tmp_url).Size(); + if (expd_size != actl_size) { + this.fail_msg = String_.Format("bad size: bad={0} good={1}", actl_size, expd_size); + return Gfo_prog_ui_.Status__fail; + } + } + Io_mgr.Instance.MoveFil_args(tmp_url, trg_url, true).Exec(); + this.Exec_cleanup(); + break; + } + case Gfo_prog_ui_.Status__suspended: + case Gfo_prog_ui_.Status__fail: { + break; + } + } + return status; + } + protected abstract byte Exec_hook(gplx.core.progs.Gfo_prog_ui prog_ui, String src_str, Io_url trg_url, long downloaded); + public void Exec_cleanup() { + if (tmp_url != null) Io_mgr.Instance.DeleteFil(tmp_url); + if (checkpoint_url != null) Io_mgr.Instance.DeleteFil(checkpoint_url); + } + public long Checkpoint__load_by_trg_fil(Io_url trg_url) { + this.tmp_url = trg_url.GenNewExt(".tmp"); + this.checkpoint_url = trg_url.GenNewExt(".checkpoint"); + return this.Checkpoint__load(); + } + private long Checkpoint__load() { + byte[] data = Io_mgr.Instance.LoadFilBryOrNull(checkpoint_url); + return data == null ? 0 : Long_.parse_or(String_.new_a7(data), 0); + } + public void Checkpoint__save(long new_val) { + if (new_val < checkpoint_nxt) return; + Io_mgr.Instance.SaveFilStr(checkpoint_url, Long_.To_str(new_val)); + downloaded = new_val; + checkpoint_nxt += checkpoint_interval; + } +} diff --git a/400_xowa/src/gplx/core/net/downloads/Http_download_wkr__jre.java b/400_xowa/src/gplx/core/net/downloads/Http_download_wkr__jre.java new file mode 100644 index 000000000..d5aa9149f --- /dev/null +++ b/400_xowa/src/gplx/core/net/downloads/Http_download_wkr__jre.java @@ -0,0 +1,89 @@ +/* +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.core.net.downloads; import gplx.*; import gplx.core.*; import gplx.core.net.*; +import java.io.*; +import java.net.*; +import gplx.core.progs.*; +public class Http_download_wkr__jre extends Http_download_wkr__base { + public Http_download_wkr Make_new() {return this;} + @Override public byte Exec_hook(Gfo_prog_ui prog_ui, String src_url, Io_url trg_url, long downloaded) { + long prog_data_cur = downloaded; + boolean prog_resumed = prog_data_cur > 0; + + // get trg stream first to handle bad paths / permission errors + Io_mgr.Instance.CreateDirIfAbsent(trg_url.OwnerDir()); + if (prog_resumed) + Io_mgr.Instance.Truncate_fil(trg_url, downloaded); + File trg_fil = new File(trg_url.Xto_api()); + FileOutputStream trg_stream = null; + try {trg_stream = new FileOutputStream(trg_fil.getPath(), prog_resumed);} // pass true for append + catch (FileNotFoundException e) {throw Err_.new_("download_file", "write failed; permission error?", "trg", trg_url, "err", e.toString());} + + // open src stream + InputStream src_stream = null; + URL src_url_itm = null; + try {src_url_itm = new URL(src_url);} + catch (MalformedURLException e) {throw Err_.new_("download_file", "bad url", "src", src_url, "err" + e.toString());} + HttpURLConnection src_conn = null; + try { + // open connection + src_conn = (HttpURLConnection)src_url_itm.openConnection(); + if (prog_resumed) + src_conn.addRequestProperty("Range", "bytes=" + Long_.To_str(prog_data_cur) + "-"); + src_conn.connect(); + + // check response code + int response_code = src_conn.getResponseCode(); + if (prog_resumed) { + if (response_code != HttpURLConnection.HTTP_PARTIAL) + throw Err_.new_("download_file", "server returned non-partial response code", "src", src_url, "code", src_conn.getResponseCode(), "msg", src_conn.getResponseMessage()); + } + else { + if (response_code != HttpURLConnection.HTTP_OK) + throw Err_.new_("download_file", "server returned non-OK response code", "src", src_url, "code", src_conn.getResponseCode(), "msg", src_conn.getResponseMessage()); + } + src_stream = src_conn.getInputStream(); + } catch (Exception e) { + throw Err_.new_("download_file", "src connection failed", "src", src_url, "err",e.toString()); + } + + // do downloading + try { + long prog_data_end = prog_ui.Prog_data_end(); + if (prog_data_end == -1) prog_data_end = src_conn.getContentLength(); // NOTE: may be -1 if server does not report the length + byte data[] = new byte[4096]; + int read = 0; + while ((read = src_stream.read(data)) != -1) { + prog_data_cur += read; + trg_stream.write(data, 0, read); + this.Checkpoint__save(prog_data_cur); + if (prog_ui.Prog_notify_and_chk_if_suspended(prog_data_cur, prog_data_end)) return Gfo_prog_ui_.Status__suspended; + } + } catch (Exception e) { + throw Err_.new_("download_file", "downloading failed", "src", src_url, "trg_url", trg_url, "err", e.toString()); + } + finally { + try { + if (trg_stream != null) trg_stream.close(); + if (src_stream != null) src_stream.close(); + } catch (IOException e) {} + if (src_conn != null) src_conn.disconnect(); + } + return Gfo_prog_ui_.Status__done; + } + } diff --git a/400_xowa/src/gplx/core/net/emails/Gfo_email_mgr.java b/400_xowa/src/gplx/core/net/emails/Gfo_email_mgr.java new file mode 100644 index 000000000..97df0e4d5 --- /dev/null +++ b/400_xowa/src/gplx/core/net/emails/Gfo_email_mgr.java @@ -0,0 +1,24 @@ +/* +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.core.net.emails; import gplx.*; import gplx.core.*; import gplx.core.net.*; +public interface Gfo_email_mgr { + void Send(String to, String subject, String body); +} +class Gfo_email_mgr__noop implements Gfo_email_mgr { + public void Send(String to, String subject, String body) {} +} diff --git a/400_xowa/src/gplx/core/net/emails/Gfo_email_mgr_.java b/400_xowa/src/gplx/core/net/emails/Gfo_email_mgr_.java new file mode 100644 index 000000000..843cbb7d4 --- /dev/null +++ b/400_xowa/src/gplx/core/net/emails/Gfo_email_mgr_.java @@ -0,0 +1,21 @@ +/* +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.core.net.emails; import gplx.*; import gplx.core.*; import gplx.core.net.*; +public class Gfo_email_mgr_ { + public static Gfo_email_mgr Instance = new Gfo_email_mgr__noop(); +} diff --git a/400_xowa/src/gplx/core/net/emails/Gfo_email_mgr__apache.java b/400_xowa/src/gplx/core/net/emails/Gfo_email_mgr__apache.java new file mode 100644 index 000000000..03aeecd39 --- /dev/null +++ b/400_xowa/src/gplx/core/net/emails/Gfo_email_mgr__apache.java @@ -0,0 +1,22 @@ +/* +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.core.net.emails; import gplx.*; import gplx.core.*; import gplx.core.net.*; +class Gfo_email_mgr__apache implements Gfo_email_mgr { +public void Send(String to, String subject, String body) { +} +} diff --git a/400_xowa/src/gplx/xowa/addons/apps/file_browsers/Xoa_url_enum_itm.java b/400_xowa/src/gplx/core/net/qargs/Gfo_qarg_enum_itm.java similarity index 76% rename from 400_xowa/src/gplx/xowa/addons/apps/file_browsers/Xoa_url_enum_itm.java rename to 400_xowa/src/gplx/core/net/qargs/Gfo_qarg_enum_itm.java index bfa8547fe..f38d98f63 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/file_browsers/Xoa_url_enum_itm.java +++ b/400_xowa/src/gplx/core/net/qargs/Gfo_qarg_enum_itm.java @@ -15,12 +15,13 @@ 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.addons.apps.file_browsers; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; -public class Xoa_url_enum_itm { +package gplx.core.net.qargs; import gplx.*; import gplx.core.*; import gplx.core.net.*; +public class Gfo_qarg_enum_itm { private final Hash_adp_bry hash = Hash_adp_bry.cs(); - public Xoa_url_enum_itm(byte[] key) {this.key = key;} + public Gfo_qarg_enum_itm(String key) {this.key = Bry_.new_u8(key);} + public Gfo_qarg_enum_itm(byte[] key) {this.key = key;} public byte[] Key() {return key;} private final byte[] key; - public Xoa_url_enum_itm Add(String key, int val) { + public Gfo_qarg_enum_itm Add(String key, int val) { hash.Add_bry_int(Bry_.new_u8(key), val); return this; } diff --git a/400_xowa/src/gplx/xowa/addons/apps/file_browsers/Xoa_url_enum_mgr.java b/400_xowa/src/gplx/core/net/qargs/Gfo_qarg_enum_mgr.java similarity index 71% rename from 400_xowa/src/gplx/xowa/addons/apps/file_browsers/Xoa_url_enum_mgr.java rename to 400_xowa/src/gplx/core/net/qargs/Gfo_qarg_enum_mgr.java index bc2ba0d58..297014d48 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/file_browsers/Xoa_url_enum_mgr.java +++ b/400_xowa/src/gplx/core/net/qargs/Gfo_qarg_enum_mgr.java @@ -15,15 +15,15 @@ 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.addons.apps.file_browsers; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; -public class Xoa_url_enum_mgr { +package gplx.core.net.qargs; import gplx.*; import gplx.core.*; import gplx.core.net.*; +public class Gfo_qarg_enum_mgr { private final Hash_adp_bry hash = Hash_adp_bry.cs(); - public Xoa_url_enum_mgr(Xoa_url_enum_itm... ary) { + public Gfo_qarg_enum_mgr(Gfo_qarg_enum_itm... ary) { int len = ary.length; for (int i = 0; i < len; ++i) { - Xoa_url_enum_itm itm = ary[i]; + Gfo_qarg_enum_itm itm = ary[i]; hash.Add_bry_obj(itm.Key(), itm); } } - public Xoa_url_enum_itm Get(byte[] key) {return (Xoa_url_enum_itm)hash.Get_by_bry(key);} + public Gfo_qarg_enum_itm Get(byte[] key) {return (Gfo_qarg_enum_itm)hash.Get_by_bry(key);} } diff --git a/400_xowa/src/gplx/core/net/Gfo_qarg_itm.java b/400_xowa/src/gplx/core/net/qargs/Gfo_qarg_itm.java similarity index 88% rename from 400_xowa/src/gplx/core/net/Gfo_qarg_itm.java rename to 400_xowa/src/gplx/core/net/qargs/Gfo_qarg_itm.java index cfd3c4ea0..f37b4f5d3 100644 --- a/400_xowa/src/gplx/core/net/Gfo_qarg_itm.java +++ b/400_xowa/src/gplx/core/net/qargs/Gfo_qarg_itm.java @@ -15,13 +15,13 @@ 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.core.net; import gplx.*; import gplx.core.*; +package gplx.core.net.qargs; import gplx.*; import gplx.core.*; import gplx.core.net.*; public class Gfo_qarg_itm { public Gfo_qarg_itm(byte[] key_bry, byte[] val_bry) {this.key_bry = key_bry; this.val_bry = val_bry;} public byte[] Key_bry() {return key_bry;} private byte[] key_bry; public byte[] Val_bry() {return val_bry;} private byte[] val_bry; public Gfo_qarg_itm Val_bry_(byte[] v) {val_bry = v; return this;} - public static final Gfo_qarg_itm[] Ary_empty = new Gfo_qarg_itm[0]; + public static final Gfo_qarg_itm[] Ary_empty = new Gfo_qarg_itm[0]; public static Gfo_qarg_itm new_key_(String key) {return new Gfo_qarg_itm(Bry_.new_u8(key), Bry_.Empty);} public static Gfo_qarg_itm[] Ary(String... kvs) { int len = kvs.length; @@ -38,7 +38,7 @@ public class Gfo_qarg_itm { } public static String To_str(Gfo_qarg_itm[] ary) { int len = ary.length; - Bry_bfr bfr = Bry_bfr.new_(); + Bry_bfr bfr = Bry_bfr_.New(); for (int i = 0; i < len; ++i) { Gfo_qarg_itm itm = ary[i]; bfr.Add(itm.Key_bry()).Add_byte_eq(); diff --git a/400_xowa/src/gplx/core/net/qargs/Gfo_qarg_mgr.java b/400_xowa/src/gplx/core/net/qargs/Gfo_qarg_mgr.java new file mode 100644 index 000000000..1da11be1b --- /dev/null +++ b/400_xowa/src/gplx/core/net/qargs/Gfo_qarg_mgr.java @@ -0,0 +1,62 @@ +/* +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.core.net.qargs; import gplx.*; import gplx.core.*; import gplx.core.net.*; +public class Gfo_qarg_mgr { + private final Hash_adp_bry hash = Hash_adp_bry.cs(); + public Gfo_qarg_mgr Init(Gfo_qarg_itm[] args) { + hash.Clear(); + int len = args.length; + for (int i = 0; i < len; ++i) { + Gfo_qarg_itm arg = args[i]; + hash.Add_bry_obj(arg.Key_bry(), arg); + } + return this; + } + public byte[] Read_bry_or_fail(String key) {return Read_bry_or_fail(Bry_.new_u8(key));} + public byte[] Read_bry_or_fail(byte[] key) {byte[] rv = Read_bry_or_null(key); if (rv == null) Fail_when_missing(String_.new_u8(key)); return rv;} + public byte[] Read_bry_or_empty(byte[] key) {return Read_bry_or(key, Bry_.Empty);} + public byte[] Read_bry_or_null(String key) {return Read_bry_or(Bry_.new_u8(key), null);} + public byte[] Read_bry_or_null(byte[] key) {return Read_bry_or(key, null);} + public byte[] Read_bry_or(byte[] key, byte[] or) { + Gfo_qarg_itm arg = (Gfo_qarg_itm)hash.Get_by_bry(key); + return arg == null ? or : arg.Val_bry(); + } + public String Read_str_or_fail(String key) {String rv = Read_str_or_null(Bry_.new_u8(key)); if (rv == null) Fail_when_missing(key); return rv;} + public String Read_str_or_null(String key) {return Read_str_or_null(Bry_.new_u8(key));} + public String Read_str_or_null(byte[] key) { + Gfo_qarg_itm arg = (Gfo_qarg_itm)hash.Get_by_bry(key); + return arg == null ? null : String_.new_u8(arg.Val_bry()); + } + public int Read_int_or(String key, int or) {return Read_int_or(Bry_.new_u8(key), or);} + public int Read_int_or(byte[] key, int or) { + byte[] val = Read_bry_or(key, null); + return val == null ? or : Int_.parse_or(String_.new_a7(val), or); + } + public int Read_enm_as_int_or(Gfo_qarg_enum_itm enm, int or) { + Gfo_qarg_itm arg = (Gfo_qarg_itm)hash.Get_by_bry(enm.Key()); + return arg == null ? or : enm.Get_as_int_or(arg.Val_bry(), or); + } + private void Fail_when_missing(String key) {throw Err_.new_("", "url_arg missing", "key", key);} + // if (url_args.Read_enm(Enm_cmd.Itm) == Enm_cmd.Tid__add) {} + +// public int Read_enm_or_neg1(byte[] key) { +// Gfo_qarg_enum_itm enm = enm_mgr.Get(key); if (enm == null) return -1; +// Gfo_qarg_itm arg = (Gfo_qarg_itm)hash.Get_by_bry(key); if (arg == null) return -1; +// return enm.Get_as_int_or(arg.Val_bry(), -1); +// } +} diff --git a/400_xowa/src/gplx/core/net/Gfo_qarg_mgr.java b/400_xowa/src/gplx/core/net/qargs/Gfo_qarg_mgr_old.java similarity index 91% rename from 400_xowa/src/gplx/core/net/Gfo_qarg_mgr.java rename to 400_xowa/src/gplx/core/net/qargs/Gfo_qarg_mgr_old.java index 7df5f715a..2e1996e09 100644 --- a/400_xowa/src/gplx/core/net/Gfo_qarg_mgr.java +++ b/400_xowa/src/gplx/core/net/qargs/Gfo_qarg_mgr_old.java @@ -15,11 +15,11 @@ 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.core.net; import gplx.*; import gplx.core.*; +package gplx.core.net.qargs; import gplx.*; import gplx.core.*; import gplx.core.net.*; import gplx.langs.htmls.encoders.*; -public class Gfo_qarg_mgr { - private final List_adp list = List_adp_.new_(); - private final Hash_adp hash = Hash_adp_bry.cs(); +public class Gfo_qarg_mgr_old { + private final List_adp list = List_adp_.New(); + private final Hash_adp hash = Hash_adp_bry.cs(); public int Len() {return list.Count();} public boolean Match(byte[] key, byte[] val) { Gfo_qarg_itm arg = (Gfo_qarg_itm)hash.Get_by(key); @@ -49,7 +49,7 @@ public class Gfo_qarg_mgr { } arg.Val_bry_(val); } - public Gfo_qarg_mgr Load(Gfo_qarg_itm[] ary) { + public Gfo_qarg_mgr_old Load(Gfo_qarg_itm[] ary) { hash.Clear(); list.Clear(); int len = ary.length; @@ -72,7 +72,7 @@ public class Gfo_qarg_mgr { } public byte[] To_bry() { int len = list.Count(); if (len == 0) return Bry_.Empty; - Bry_bfr bfr = Bry_bfr.new_(); + Bry_bfr bfr = Bry_bfr_.New(); To_bry(bfr, gplx.langs.htmls.encoders.Gfo_url_encoder_.Href, false); return bfr.To_bry_and_clear(); } diff --git a/400_xowa/src/gplx/core/primitives/Bry_cache.java b/400_xowa/src/gplx/core/primitives/Bry_cache.java index 72119a237..8f69f6c11 100644 --- a/400_xowa/src/gplx/core/primitives/Bry_cache.java +++ b/400_xowa/src/gplx/core/primitives/Bry_cache.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.core.primitives; import gplx.*; import gplx.core.*; import gplx.core.brys.*; public class Bry_cache { - private final Hash_adp hash = Hash_adp_.new_(); private final Bry_obj_ref hash_ref = Bry_obj_ref.New_empty(); + private final Hash_adp hash = Hash_adp_.New(); private final Bry_obj_ref hash_ref = Bry_obj_ref.New_empty(); public byte[] Get_or_new(String v) {return Get_or_new(Bry_.new_u8(v));} public byte[] Get_or_new(byte[] v) { if (v.length == 0) return Bry_.Empty; @@ -31,5 +31,5 @@ public class Bry_cache { else return ((Bry_obj_ref)rv).Val(); } - public static final Bry_cache Instance = new Bry_cache(); Bry_cache() {} + public static final Bry_cache Instance = new Bry_cache(); Bry_cache() {} } diff --git a/400_xowa/src/gplx/core/primitives/Int_pool.java b/400_xowa/src/gplx/core/primitives/Int_pool.java index 1ff7482bf..04c76e43a 100644 --- a/400_xowa/src/gplx/core/primitives/Int_pool.java +++ b/400_xowa/src/gplx/core/primitives/Int_pool.java @@ -17,8 +17,8 @@ along with this program. If not, see . */ package gplx.core.primitives; import gplx.*; import gplx.core.*; public class Int_pool { - private final List_adp available_list = List_adp_.new_(); private int available_len; - // private final Bry_bfr dbg_bfr = Bry_bfr.new_(); + private final List_adp available_list = List_adp_.New(); private int available_len; + // private final Bry_bfr dbg_bfr = Bry_bfr_.New(); private int uid_max = -1; public void Clear() { synchronized (available_list) { diff --git a/400_xowa/src/gplx/core/primitives/Number_parser.java b/400_xowa/src/gplx/core/primitives/Number_parser.java index 812fe387a..faba8ca66 100644 --- a/400_xowa/src/gplx/core/primitives/Number_parser.java +++ b/400_xowa/src/gplx/core/primitives/Number_parser.java @@ -17,10 +17,12 @@ along with this program. If not, see . */ package gplx.core.primitives; import gplx.*; import gplx.core.*; public class Number_parser { - public int Rv_as_int() {return (int)int_val;} private long int_val = 0; - public Decimal_adp Rv_as_dec() {return dec_val == null ? Decimal_adp_.long_(int_val) : dec_val;} private Decimal_adp dec_val = null; - public boolean Has_err() {return has_err;} private boolean has_err; - public boolean Has_frac() {return has_frac;} private boolean has_frac; + public int Rv_as_int() {return (int)num_val;} private long num_val = 0; + public long Rv_as_long() {return num_val;} + public Decimal_adp Rv_as_dec() {return dec_val == null ? Decimal_adp_.long_(num_val) : dec_val;} private Decimal_adp dec_val = null; + public boolean Is_int() {return dec_val == null && (num_val >= Int_.Min_value && num_val <= Int_.Max_value);} + public boolean Has_err() {return has_err;} private boolean has_err; + public boolean Has_frac() {return has_frac;} private boolean has_frac; public boolean Hex_enabled() {return hex_enabled;} public Number_parser Hex_enabled_(boolean v) {hex_enabled = v; return this;} private boolean hex_enabled; public Number_parser Ignore_chars_(byte[] v) {this.ignore_chars = v; return this;} private byte[] ignore_chars; public Number_parser Ignore_space_at_end_y_() {this.ignore_space_at_end = true; return this;} private boolean ignore_space_at_end; @@ -31,7 +33,7 @@ public class Number_parser { public Number_parser Parse(byte[] ary, int bgn, int end) { int loop_bgn = end - 1, loop_end = bgn - 1, exp_multiplier = 1, factor = 10; long multiplier = 1, frc_multiplier = 1; - int_val = 0; dec_val = null; boolean comma_nil = true; + num_val = 0; dec_val = null; boolean comma_nil = true; long frc_int = 0; has_err = false; has_frac = false; boolean has_exp = false, has_neg = false, exp_neg = false, has_plus = false, has_num = false; boolean input_is_hex = false; @@ -64,14 +66,14 @@ public class Number_parser { case Byte_ascii.Num_7: case Byte_ascii.Num_8: case Byte_ascii.Num_9: - int_val += (cur - Byte_ascii.Num_0) * multiplier; + num_val += (cur - Byte_ascii.Num_0) * multiplier; multiplier *= factor; has_num = true; break; case Byte_ascii.Dot: if (has_frac) return Has_err_y_(); - frc_int = int_val; - int_val = 0; + frc_int = num_val; + num_val = 0; frc_multiplier = multiplier; multiplier = 1; has_frac = true; @@ -99,15 +101,15 @@ public class Number_parser { case Byte_ascii.Ltr_e: case Byte_ascii.Ltr_E: if (input_is_hex) { - int_val += 14 * multiplier; // NOTE: 14=value of e/E + num_val += 14 * multiplier; // NOTE: 14=value of e/E multiplier *= factor; has_num = true; } else { if (has_exp) return Has_err_y_(); exp_neg = has_neg; - exp_multiplier = (int)Math_.Pow(10, int_val); - int_val = 0; + exp_multiplier = (int)Math_.Pow(10, num_val); + num_val = 0; multiplier = 1; has_exp = true; has_neg = false; @@ -120,7 +122,7 @@ public class Number_parser { case Byte_ascii.Ltr_D: case Byte_ascii.Ltr_F: if (input_is_hex) { - int_val += (cur - Byte_ascii.Ltr_A + 10) * multiplier; + num_val += (cur - Byte_ascii.Ltr_A + 10) * multiplier; multiplier *= factor; has_num = true; } @@ -133,7 +135,7 @@ public class Number_parser { case Byte_ascii.Ltr_d: case Byte_ascii.Ltr_f: if (input_is_hex) { - int_val += (cur - Byte_ascii.Ltr_a + 10) * multiplier; + num_val += (cur - Byte_ascii.Ltr_a + 10) * multiplier; multiplier *= factor; has_num = true; } @@ -163,7 +165,7 @@ public class Number_parser { } if (!has_num) return Has_err_y_(); // handles situations wherein just symbols; EX: "+", ".", "-.", " , " etc. if (has_frac) { - long full_val = (((int_val * frc_multiplier) + frc_int)); + long full_val = (((num_val * frc_multiplier) + frc_int)); if (has_neg) full_val *= -1; if (has_exp) { if (exp_neg) frc_multiplier *= exp_multiplier; // divide, so apply to frc @@ -172,8 +174,12 @@ public class Number_parser { dec_val = Decimal_adp_.divide_(full_val, frc_multiplier); } else { - if (has_neg) int_val *= -1; - if (has_exp) int_val = exp_neg ? int_val / exp_multiplier : int_val * exp_multiplier; + if (has_neg) num_val *= -1; + if (has_exp) { + num_val = exp_neg + ? num_val / exp_multiplier + : num_val * exp_multiplier; + } } return this; } diff --git a/400_xowa/src/gplx/core/primitives/Number_parser_tst.java b/400_xowa/src/gplx/core/primitives/Number_parser_tst.java index b736d6770..d802fd632 100644 --- a/400_xowa/src/gplx/core/primitives/Number_parser_tst.java +++ b/400_xowa/src/gplx/core/primitives/Number_parser_tst.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.core.primitives; import gplx.*; import gplx.core.*; import org.junit.*; public class Number_parser_tst { - private final Number_parser_fxt fxt = new Number_parser_fxt(); + private final Number_parser_fxt fxt = new Number_parser_fxt(); @Before public void init() {fxt.Clear();} @Test public void Integer() { fxt.Test_int("1", 1); @@ -28,6 +28,9 @@ public class Number_parser_tst { fxt.Test_int("+1", 1); fxt.Test_int("00001", 1); } + @Test public void Long() { + fxt.Test_long("9876543210", 9876543210L); + } @Test public void Decimal() { fxt.Test_dec("1.23", Decimal_adp_.parse("1.23")); fxt.Test_dec("1.023", Decimal_adp_.parse("1.023")); @@ -69,7 +72,7 @@ public class Number_parser_tst { } } class Number_parser_fxt { - private final Number_parser parser = new Number_parser(); + private final Number_parser parser = new Number_parser(); public void Clear() {parser.Clear();} public void Init_ignore(String chars) {parser.Ignore_chars_(Bry_.new_a7(chars));} public void Test_int(String raw, int expd) { @@ -77,6 +80,10 @@ class Number_parser_fxt { int actl = parser.Parse(raw_bry, 0, raw_bry.length).Rv_as_int(); Tfds.Eq(expd, actl, raw); } + public void Test_long(String raw, long expd) { + byte[] raw_bry = Bry_.new_a7(raw); + Tfds.Eq(expd, parser.Parse(raw_bry, 0, raw_bry.length).Rv_as_long(), raw); + } public void Test_dec(String raw, Decimal_adp expd) { byte[] raw_bry = Bry_.new_a7(raw); Decimal_adp actl = parser.Parse(raw_bry, 0, raw_bry.length).Rv_as_dec(); diff --git a/400_xowa/src/gplx/core/progs/rates/Gfo_rate_list.java b/400_xowa/src/gplx/core/progs/rates/Gfo_rate_list.java new file mode 100644 index 000000000..0ca326e9f --- /dev/null +++ b/400_xowa/src/gplx/core/progs/rates/Gfo_rate_list.java @@ -0,0 +1,46 @@ +/* +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.core.progs.rates; import gplx.*; import gplx.core.*; import gplx.core.progs.*; +import gplx.core.lists.rings.*; +public class Gfo_rate_list { + private final Ring__long ring; + public Gfo_rate_list(int size) { + this.ring = new Ring__long(size * 2); // *2 to store both data and time + } + public void Clear() {ring.Clear(); cur_rate = cur_delta = 0;} + public double Cur_rate() {return cur_rate;} private double cur_rate = 0; + public double Cur_delta() {return cur_delta;} private double cur_delta; + public double Add(long data, long time) { + ring.Add(data); + ring.Add(time); + double new_rate = Cur_calc(data, time); + cur_delta = cur_rate == 0 ? new_rate : Math_.Abs_double((new_rate - cur_rate) / cur_rate); + cur_rate = new_rate; + return cur_rate; + } + private double Cur_calc(long cur_data, long cur_time) { + int len = ring.Len(); + long data_all = 0; + long time_all = 0; + for (int i = 0; i < len; i += 2) { + data_all += ring.Get_at(i); + time_all += ring.Get_at(i + 1); + } + return data_all / (time_all == 0 ? .001 : time_all); + } +} diff --git a/400_xowa/src/gplx/core/progs/rates/Gfo_rate_list_tst.java b/400_xowa/src/gplx/core/progs/rates/Gfo_rate_list_tst.java new file mode 100644 index 000000000..c388eaea2 --- /dev/null +++ b/400_xowa/src/gplx/core/progs/rates/Gfo_rate_list_tst.java @@ -0,0 +1,36 @@ +/* +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.core.progs.rates; import gplx.*; import gplx.core.*; import gplx.core.progs.*; +import org.junit.*; import gplx.core.tests.*; +public class Gfo_rate_list_tst { + private final Gfo_rate_list_fxt fxt = new Gfo_rate_list_fxt(); + @Before public void init() {fxt.Clear();} + @Test public void Add__1() {fxt.Add(100, 20).Test(5, 5);} + @Test public void Add__2() {fxt.Add(100, 20).Add(100, 30).Test(4, .20d);} + @Test public void Add__3() {fxt.Add(100, 20).Add(100, 30).Add(100, 50).Test(3, .25d);} + @Test public void Add__4() {fxt.Add(100, 20).Add(100, 30).Add(100, 50).Add(600, 0).Test(9, 2);} +} +class Gfo_rate_list_fxt { + private final Gfo_rate_list list = new Gfo_rate_list(6); + public void Clear() {list.Clear();} + public Gfo_rate_list_fxt Add(long data, long time) {list.Add(data, time); return this;} + public void Test(double expd_rate, double expd_delta) { + Gftest.Eq__double(expd_rate , list.Cur_rate() , "cur_rate"); + Gftest.Eq__double(expd_delta, list.Cur_delta() , "cur_delta"); + } +} \ No newline at end of file diff --git a/400_xowa/src/gplx/core/progs/rates/Gfo_rate_mgr.java b/400_xowa/src/gplx/core/progs/rates/Gfo_rate_mgr.java new file mode 100644 index 000000000..ca498369a --- /dev/null +++ b/400_xowa/src/gplx/core/progs/rates/Gfo_rate_mgr.java @@ -0,0 +1,39 @@ +/* +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.core.progs.rates; import gplx.*; import gplx.core.*; import gplx.core.progs.*; +public class Gfo_rate_mgr { + private final Hash_adp hash = Hash_adp_.New(); + private final int dflt_size; + public Gfo_rate_mgr(int dflt_size) {this.dflt_size = dflt_size;} + public void Clear() {hash.Clear();} + public int Len() {return hash.Count();} + public Gfo_rate_list Get_or_new(String k) { + Gfo_rate_list rv = (Gfo_rate_list)hash.Get_by(k); + if (rv == null) { + rv = new Gfo_rate_list(dflt_size); + rv.Add(1024 * 1024, 1); // add default rate of 1 MB per second + hash.Add(k, rv); + } + return rv; + } + public Gfo_rate_mgr Add_new(String key) { + Gfo_rate_list rv = new Gfo_rate_list(dflt_size); + hash.Add(key, rv); + return this; + } +} diff --git a/400_xowa/src/gplx/core/security/files/Cksum_itm.java b/400_xowa/src/gplx/core/security/files/Cksum_itm.java new file mode 100644 index 000000000..b95db2880 --- /dev/null +++ b/400_xowa/src/gplx/core/security/files/Cksum_itm.java @@ -0,0 +1,31 @@ +/* +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.core.security.files; import gplx.*; import gplx.core.*; import gplx.core.security.*; +public class Cksum_itm implements gplx.core.brys.Bry_bfr_able { + public Cksum_itm(byte[] hash, Io_url file_url, long file_size) { + this.Hash = hash; this.File_url = file_url; this.File_size = file_size; + } + public final byte[] Hash; + public final Io_url File_url; + public final long File_size; + public void To_bfr(Bry_bfr bfr) { + bfr.Add(Hash).Add_byte_pipe(); + bfr.Add_str_u8(File_url.Raw()).Add_byte_pipe(); + bfr.Add_long_variable(File_size); + } +} diff --git a/400_xowa/src/gplx/core/security/files/Cksum_list.java b/400_xowa/src/gplx/core/security/files/Cksum_list.java new file mode 100644 index 000000000..a988dc72b --- /dev/null +++ b/400_xowa/src/gplx/core/security/files/Cksum_list.java @@ -0,0 +1,84 @@ +/* +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.core.security.files; import gplx.*; import gplx.core.*; import gplx.core.security.*; +public class Cksum_list { + public Cksum_list(byte type, Cksum_itm[] itms, long itms_size) { + this.Type = type; this.Itms = itms; this.Itms_size = itms_size; + } + public final byte Type; + public final Cksum_itm[] Itms; + public long Itms_size; + public Io_url[] Itms_ary() { + int len = Itms.length; + Io_url[] rv = new Io_url[len]; + for (int i = 0; i < len; ++i) + rv[i] = Itms[i].File_url; + return rv; + } + + public static Cksum_list Parse_by_fil(Io_url url) { + byte tid = Get_hash_tid_by_ext(url.Ext()); + return Cksum_list.Parse(tid, url.OwnerDir(), Io_mgr.Instance.LoadFilBry(url)); + } + public static Cksum_list Parse(byte type, Io_url owner_dir, byte[] bry) { + List_adp list = List_adp_.New(); + + byte[][] lines = Bry_split_.Split_lines(bry); + int len = lines.length; + long itms_size = 0; + for (int i = 0; i < len; ++i) { + byte[] line = lines[i]; // EX: "d41d8cd98f00b204e9800998ecf8427e *file.txt" + + // get hash + int space_pos = Bry_find_.Find_fwd(line, Byte_ascii.Space); + if (space_pos == Bry_find_.Not_found) throw Err_.new_("chsum", "checksum line does not have space", "line", line); + byte[] hash = Bry_.Mid(line, 0, space_pos); + + // get file + int file_bgn = space_pos + 1; + if (line[file_bgn] == Byte_ascii.Star) ++file_bgn; // ignore leading *; EX: "*file.txt" -> "file.txt" + byte[] file = Bry_.Mid(line, file_bgn); + Io_url file_url = GenSubFil_nest(owner_dir, file); + long file_size = Io_mgr.Instance.QueryFil(file_url).Size(); + itms_size += file_size; + + // add to list + Cksum_itm itm = new Cksum_itm(hash, file_url, file_size); + list.Add(itm); + } + return new Cksum_list(type, (Cksum_itm[])list.To_ary_and_clear(Cksum_itm.class), itms_size); + } + private static Io_url GenSubFil_nest(Io_url dir, byte[] src) { // split "a/b/c" or "a\b\c" -> [a, b, c] + byte dir_spr = gplx.core.envs.Op_sys.Lnx.Fsys_dir_spr_byte(); + int dir_pos = Bry_find_.Find_fwd(src, dir_spr); + if (dir_pos == Bry_find_.Not_found) { + dir_spr = gplx.core.envs.Op_sys.Wnt.Fsys_dir_spr_byte(); + dir_pos = Bry_find_.Find_fwd(src, dir_spr); + if (dir_pos == Bry_find_.Not_found) + return dir.GenSubFil(String_.new_u8(src)); + } + byte[][] parts = Bry_split_.Split(src, dir_spr); + return dir.GenSubFil_nest(String_.Ary(parts)); + } + private static byte Get_hash_tid_by_ext(String ext) { + if (String_.Eq(ext, ".md5")) return Hash_algo_.Tid__md5; + else if (String_.Eq(ext, ".sha1")) return Hash_algo_.Tid__sha1; + else if (String_.Eq(ext, ".sha256")) return Hash_algo_.Tid__sha2_256; + else throw Err_.new_unhandled_default(ext); + } +} diff --git a/400_xowa/src/gplx/core/security/files/Cksum_list_tst.java b/400_xowa/src/gplx/core/security/files/Cksum_list_tst.java new file mode 100644 index 000000000..7259d2a4a --- /dev/null +++ b/400_xowa/src/gplx/core/security/files/Cksum_list_tst.java @@ -0,0 +1,50 @@ +/* +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.core.security.files; import gplx.*; import gplx.core.*; import gplx.core.security.*; +import org.junit.*; import gplx.core.tests.*; +public class Cksum_list_tst { + private final Cksum_list_fxt fxt = new Cksum_list_fxt(); + @Test public void Basic() { + fxt.Init__file("a.txt").Init__file("ab.txt"); + fxt.Test__parse(String_.Concat_lines_nl_skip_last + ( "a5e54d1fd7bb69a228ef0dcd2431367e *a.txt" + , "90f15b7ca11bd4c70d9047cd29a80040 *ab.txt" + ), 11 + , fxt.Make__itm("a5e54d1fd7bb69a228ef0dcd2431367e", "a.txt", 5) + , fxt.Make__itm("90f15b7ca11bd4c70d9047cd29a80040", "ab.txt", 6) + ); + } +} +class Cksum_list_fxt { + private final Io_url dir = Io_url_.mem_dir_("mem/dir/"); + public Cksum_list_fxt() { + Io_mgr.Instance.InitEngine_mem(); + } + public Cksum_list_fxt Init__file(String fil_name) { + Io_url fil_url = dir.GenSubFil(fil_name); + Io_mgr.Instance.SaveFilStr(fil_url, fil_name); + return this; + } + public Cksum_itm Make__itm(String hash, String file_name, long size) {return new Cksum_itm(Bry_.new_u8(hash), dir.GenSubFil(file_name), size);} + public Cksum_list_fxt Test__parse(String raw, long expd_size, Cksum_itm... expd_itms) { + Cksum_list actl_list = Cksum_list.Parse(gplx.core.security.Hash_algo_.Tid__md5, dir, Bry_.new_u8(raw)); + Gftest.Eq__long(expd_size, actl_list.Itms_size); + Gftest.Eq__ary(expd_itms, actl_list.Itms); + return this; + } +} diff --git a/400_xowa/src/gplx/core/tests/Tst_mgr.java b/400_xowa/src/gplx/core/tests/Tst_mgr.java index 7b0364284..dce0b7ba4 100644 --- a/400_xowa/src/gplx/core/tests/Tst_mgr.java +++ b/400_xowa/src/gplx/core/tests/Tst_mgr.java @@ -19,7 +19,7 @@ package gplx.core.tests; import gplx.*; import gplx.core.*; import gplx.core.strings.*; public class Tst_mgr { public Tst_mgr ThrowError_n_() {throwError = false; return this;} private boolean throwError = true; - public List_adp Results() {return results;} List_adp results = List_adp_.new_(); + public List_adp Results() {return results;} List_adp results = List_adp_.New(); public Keyval_hash Vars() {return vars;} Keyval_hash vars = new Keyval_hash(); public Object Vars_get_by_key(String key) {return vars.Get_val_or(key, null);} public String Vars_get_bry_as_str(String key, int bgn, int end) { @@ -107,7 +107,7 @@ public class Tst_mgr { return sb.To_str_and_clear(); } int Max(int max, String s) {int len = String_.Len(s); return len > max ? len : max;} - public static final Tst_chkr Null_chkr = new Tst_chkr_null(); + public static final Tst_chkr Null_chkr = new Tst_chkr_null(); } class Tst_itm { public boolean Pass() {return pass;} private boolean pass; diff --git a/400_xowa/src/gplx/core/threads/Gfo_async_cmd_itm.java b/400_xowa/src/gplx/core/threads/Gfo_async_cmd_itm.java index 8363645e4..921054603 100644 --- a/400_xowa/src/gplx/core/threads/Gfo_async_cmd_itm.java +++ b/400_xowa/src/gplx/core/threads/Gfo_async_cmd_itm.java @@ -16,9 +16,9 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.core.threads; import gplx.*; import gplx.core.*; -public class Gfo_async_cmd_itm implements GfoInvkAble { - private GfoInvkAble invk; private String invk_key; private GfoMsg msg = GfoMsg_.new_cast_(""); - public Gfo_async_cmd_itm Init(GfoInvkAble invk, String invk_key, Object... args) { +public class Gfo_async_cmd_itm implements Gfo_invk { + private Gfo_invk invk; private String invk_key; private GfoMsg msg = GfoMsg_.new_cast_(""); + public Gfo_async_cmd_itm Init(Gfo_invk invk, String invk_key, Object... args) { this.invk = invk; this.invk_key = invk_key; msg.Args_reset(); msg.Clear(); @@ -31,12 +31,12 @@ public class Gfo_async_cmd_itm implements GfoInvkAble { return this; } public void Exec() { - GfoInvkAble_.InvkCmd_msg(invk, invk_key, msg); + Gfo_invk_.Invk_by_msg(invk, invk_key, msg); } public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_exec)) Exec(); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String Invk_exec = "exec"; - public static final Gfo_async_cmd_itm[] Ary_empty = new Gfo_async_cmd_itm[0]; + public static final Gfo_async_cmd_itm[] Ary_empty = new Gfo_async_cmd_itm[0]; } diff --git a/400_xowa/src/gplx/core/threads/Gfo_async_cmd_mkr.java b/400_xowa/src/gplx/core/threads/Gfo_async_cmd_mkr.java index 655ab5a46..d1e74e669 100644 --- a/400_xowa/src/gplx/core/threads/Gfo_async_cmd_mkr.java +++ b/400_xowa/src/gplx/core/threads/Gfo_async_cmd_mkr.java @@ -24,7 +24,7 @@ class Gfo_async_cmd_mkr { // used = (Gfo_async_cmd_itm[])Array_.Resize(used, v); // ary_len = v; // } - public Gfo_async_cmd_itm Get(GfoInvkAble invk, String invk_key, Object... args) { + public Gfo_async_cmd_itm Get(Gfo_invk invk, String invk_key, Object... args) { Gfo_async_cmd_itm rv = new Gfo_async_cmd_itm(); rv.Init(invk, invk_key, args); return rv; diff --git a/400_xowa/src/gplx/core/threads/Gfo_async_mgr.java b/400_xowa/src/gplx/core/threads/Gfo_async_mgr.java index 483ddfd83..627e822de 100644 --- a/400_xowa/src/gplx/core/threads/Gfo_async_mgr.java +++ b/400_xowa/src/gplx/core/threads/Gfo_async_mgr.java @@ -17,11 +17,11 @@ along with this program. If not, see . */ package gplx.core.threads; import gplx.*; import gplx.core.*; import gplx.core.primitives.*; -public class Gfo_async_mgr implements GfoInvkAble { - private List_adp queue = List_adp_.new_(); +public class Gfo_async_mgr implements Gfo_invk { + private List_adp queue = List_adp_.New(); private Bool_obj_ref running = Bool_obj_ref.n_(); private Gfo_async_cmd_mkr cmd_mkr = new Gfo_async_cmd_mkr(); - public void Queue(GfoInvkAble invk, String invk_key, Object... args) { + public void Queue(Gfo_invk invk, String invk_key, Object... args) { Gfo_async_cmd_itm cmd = cmd_mkr.Get(invk, invk_key, args); synchronized (queue) { queue.Add(cmd); @@ -29,7 +29,7 @@ public class Gfo_async_mgr implements GfoInvkAble { synchronized (running) { if (running.Val_n()) { running.Val_y_(); - gplx.core.threads.Thread_adp_.invk_(Invk_run, this, Invk_run).Start(); + Thread_adp_.Start_by_key(Invk_run, this, Invk_run); } } } @@ -52,7 +52,7 @@ public class Gfo_async_mgr implements GfoInvkAble { } public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_run)) Run(); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String Invk_run = "run"; } diff --git a/400_xowa/src/gplx/core/threads/Gfo_thread_cmd.java b/400_xowa/src/gplx/core/threads/Gfo_thread_cmd.java index 1c92e8abd..bbfe3c396 100644 --- a/400_xowa/src/gplx/core/threads/Gfo_thread_cmd.java +++ b/400_xowa/src/gplx/core/threads/Gfo_thread_cmd.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.core.threads; import gplx.*; import gplx.core.*; -public interface Gfo_thread_cmd extends GfoInvkAble { +public interface Gfo_thread_cmd extends Gfo_invk { void Cmd_ctor(); String Async_key(); int Async_sleep_interval(); diff --git a/400_xowa/src/gplx/core/threads/Gfo_thread_cmd_base.java b/400_xowa/src/gplx/core/threads/Gfo_thread_cmd_base.java index ddbe2cfe4..ef219d6ec 100644 --- a/400_xowa/src/gplx/core/threads/Gfo_thread_cmd_base.java +++ b/400_xowa/src/gplx/core/threads/Gfo_thread_cmd_base.java @@ -17,12 +17,12 @@ along with this program. If not, see . */ package gplx.core.threads; import gplx.*; import gplx.core.*; import gplx.core.brys.fmtrs.*; -import gplx.gfui.*; +import gplx.gfui.*; import gplx.gfui.kits.core.*; public class Gfo_thread_cmd_base implements Gfo_thread_cmd { @gplx.Virtual public String Async_key() {return "undefined";} public void Cmd_ctor() {} public Gfo_thread_cmd_base Ctor(Gfo_usr_dlg usr_dlg, Gfui_kit kit) {this.usr_dlg = usr_dlg; this.kit = kit; return this;} protected Gfo_usr_dlg usr_dlg; protected Gfui_kit kit; - public GfoInvkAble Owner() {return owner;} public Gfo_thread_cmd_base Owner_(GfoInvkAble v) {owner = v; return this;} GfoInvkAble owner; + public Gfo_invk Owner() {return owner;} public Gfo_thread_cmd_base Owner_(Gfo_invk v) {owner = v; return this;} Gfo_invk owner; public Bry_fmtr_eval_mgr Url_eval_mgr() {return url_eval_mgr;} public Gfo_thread_cmd_base Url_eval_mgr_(Bry_fmtr_eval_mgr v) {url_eval_mgr = v; return this;} Bry_fmtr_eval_mgr url_eval_mgr; public Gfo_thread_cmd Async_next_cmd() {return next_cmd;} public void Async_next_cmd_(Gfo_thread_cmd v) {next_cmd = v;} Gfo_thread_cmd next_cmd; @gplx.Virtual public int Async_sleep_interval() {return Gfo_thread_cmd_.Async_sleep_interval_1_second;} @@ -36,7 +36,7 @@ public class Gfo_thread_cmd_base implements Gfo_thread_cmd { @gplx.Virtual public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_owner)) return owner; else if (ctx.Match(k, Invk_async_bgn)) Async_bgn(); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String Invk_owner = "owner", Invk_async_bgn = "async_bgn"; } diff --git a/400_xowa/src/gplx/core/threads/Gfo_thread_cmd_download.java b/400_xowa/src/gplx/core/threads/Gfo_thread_cmd_download.java index 391da9985..54b8c0704 100644 --- a/400_xowa/src/gplx/core/threads/Gfo_thread_cmd_download.java +++ b/400_xowa/src/gplx/core/threads/Gfo_thread_cmd_download.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.core.threads; import gplx.*; import gplx.core.*; import gplx.core.brys.fmtrs.*; -import gplx.gfui.*; +import gplx.gfui.*; import gplx.gfui.kits.core.*; public class Gfo_thread_cmd_download implements Gfo_thread_cmd { public Gfo_thread_cmd Ctor(Gfo_usr_dlg usr_dlg, Gfui_kit kit) {this.usr_dlg = usr_dlg; this.kit = kit; xrg.Prog_dlg_(usr_dlg); return this;} public Gfo_thread_cmd_download Init(String prog_fmt_hdr, String src, Io_url trg) { @@ -25,7 +25,7 @@ public class Gfo_thread_cmd_download implements Gfo_thread_cmd { xrg.Prog_fmt_hdr_(prog_fmt_hdr).Init(src, trg); return this; } String src; protected Gfui_kit kit; Gfo_usr_dlg usr_dlg; Io_url trg; - public GfoInvkAble Owner() {return owner;} public Gfo_thread_cmd_download Owner_(GfoInvkAble v) {owner = v; return this;} GfoInvkAble owner; + public Gfo_invk Owner() {return owner;} public Gfo_thread_cmd_download Owner_(Gfo_invk v) {owner = v; return this;} Gfo_invk owner; public Bry_fmtr_eval_mgr Url_eval_mgr() {return url_eval_mgr;} public Gfo_thread_cmd_download Url_eval_mgr_(Bry_fmtr_eval_mgr v) {url_eval_mgr = v; return this;} Bry_fmtr_eval_mgr url_eval_mgr; public void Cmd_ctor() {} public Gfo_thread_cmd Async_next_cmd() {return next_cmd;} public void Async_next_cmd_(Gfo_thread_cmd v) {next_cmd = v;} Gfo_thread_cmd next_cmd; @@ -51,7 +51,7 @@ public class Gfo_thread_cmd_download implements Gfo_thread_cmd { } public void Async_prog_run(int async_sleep_sum) {} public boolean Async_running() {return xrg.Prog_running();} - public void Async_run() {Thread_adp_.invk_(gplx.xowa.apps.Xoa_thread_.Key_bldr_download, this, Invk_async_bgn).Start();} + public void Async_run() {Thread_adp_.Start_by_key(gplx.xowa.apps.Xoa_thread_.Key_bldr_download, this, Invk_async_bgn);} private void Download() { download_pass = true; if (!xrg.Exec()) { @@ -66,7 +66,7 @@ public class Gfo_thread_cmd_download implements Gfo_thread_cmd { else if (ctx.Match(k, Invk_owner)) return owner; else if (ctx.Match(k, Invk_src_)) src = m.ReadStr("v"); else if (ctx.Match(k, Invk_trg_)) trg = Bry_fmtr_eval_mgr_.Eval_url(url_eval_mgr, m.ReadBry("v")); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String Invk_async_bgn = "async_bgn", Invk_owner = "owner", Invk_src_ = "src_", Invk_trg_ = "trg_"; static final String GRP_KEY = "gfo.thread.file.download"; diff --git a/400_xowa/src/gplx/core/threads/Gfo_thread_cmd_replace.java b/400_xowa/src/gplx/core/threads/Gfo_thread_cmd_replace.java index 96d809b89..b8c3b0f46 100644 --- a/400_xowa/src/gplx/core/threads/Gfo_thread_cmd_replace.java +++ b/400_xowa/src/gplx/core/threads/Gfo_thread_cmd_replace.java @@ -17,13 +17,13 @@ along with this program. If not, see . */ package gplx.core.threads; import gplx.*; import gplx.core.*; import gplx.core.brys.fmtrs.*; -import gplx.gfui.*; +import gplx.gfui.*; import gplx.gfui.kits.core.*; public class Gfo_thread_cmd_replace implements Gfo_thread_cmd { public Gfo_thread_cmd Init(Gfo_usr_dlg usr_dlg, Gfui_kit kit, Io_url fil) { this.usr_dlg = usr_dlg; this.kit = kit; this.fil = fil; return this; } Gfui_kit kit; Gfo_usr_dlg usr_dlg; Io_url fil; - public GfoInvkAble Owner() {return owner;} public Gfo_thread_cmd_replace Owner_(GfoInvkAble v) {owner = v; return this;} GfoInvkAble owner; + public Gfo_invk Owner() {return owner;} public Gfo_thread_cmd_replace Owner_(Gfo_invk v) {owner = v; return this;} Gfo_invk owner; public Bry_fmtr_eval_mgr Url_eval_mgr() {return url_eval_mgr;} public Gfo_thread_cmd_replace Url_eval_mgr_(Bry_fmtr_eval_mgr v) {url_eval_mgr = v; return this;} Bry_fmtr_eval_mgr url_eval_mgr; public String Async_key() {return KEY;} public void Cmd_ctor() {} @@ -48,13 +48,13 @@ public class Gfo_thread_cmd_replace implements Gfo_thread_cmd { Io_mgr.Instance.SaveFilStr(fil, raw); usr_dlg.Prog_many(GRP_KEY, "done", "replace completed: ~{0} ~{1}", fil.Raw(), pairs_len); } - public List_adp pairs = List_adp_.new_(); + public List_adp pairs = List_adp_.New(); @gplx.Virtual public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_async_bgn)) Exec_find_replace(); else if (ctx.Match(k, Invk_owner)) return owner; else if (ctx.Match(k, Invk_fil_)) fil = Bry_fmtr_eval_mgr_.Eval_url(url_eval_mgr, m.ReadBry("v")); else if (ctx.Match(k, Invk_add)) pairs.Add(Keyval_.new_(m.ReadStr("find"), m.ReadStr("replace"))); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String Invk_async_bgn = "async_bgn", Invk_owner = "owner", Invk_fil_ = "fil_", Invk_add = "add"; static final String GRP_KEY = "gfo.thread.file.download"; diff --git a/400_xowa/src/gplx/core/threads/Gfo_thread_cmd_unzip.java b/400_xowa/src/gplx/core/threads/Gfo_thread_cmd_unzip.java index f62a32fd7..4871aa8b9 100644 --- a/400_xowa/src/gplx/core/threads/Gfo_thread_cmd_unzip.java +++ b/400_xowa/src/gplx/core/threads/Gfo_thread_cmd_unzip.java @@ -17,14 +17,14 @@ along with this program. If not, see . */ package gplx.core.threads; import gplx.*; import gplx.core.*; import gplx.core.brys.fmtrs.*; import gplx.core.envs.*; -import gplx.gfui.*; import gplx.xowa.bldrs.cmds.utils.*; +import gplx.gfui.*; import gplx.gfui.kits.core.*; import gplx.xowa.bldrs.cmds.utils.*; public class Gfo_thread_cmd_unzip implements Gfo_thread_cmd { public Gfo_thread_cmd_unzip Init(Gfo_usr_dlg usr_dlg, Gfui_kit kit, Process_adp bzip2_process, Process_adp zip_process, Process_adp gz_process, Io_url src, Io_url trg) { this.src = src; this.trg = trg; this.kit = kit; this.usr_dlg = usr_dlg; unzip_wkr = new Xob_unzip_wkr().Init(bzip2_process, zip_process, gz_process).Process_run_mode_(Process_adp.Run_mode_async); return this; } private Io_url src, trg; private Gfui_kit kit; private Gfo_usr_dlg usr_dlg; private Xob_unzip_wkr unzip_wkr; - public GfoInvkAble Owner() {return owner;} public Gfo_thread_cmd_unzip Owner_(GfoInvkAble v) {owner = v; return this;} GfoInvkAble owner; + public Gfo_invk Owner() {return owner;} public Gfo_thread_cmd_unzip Owner_(Gfo_invk v) {owner = v; return this;} Gfo_invk owner; public void Cmd_ctor() {} @gplx.Virtual public String Async_key() {return KEY;} public Gfo_thread_cmd Async_next_cmd() {return next_cmd;} public void Async_next_cmd_(Gfo_thread_cmd v) {next_cmd = v;} Gfo_thread_cmd next_cmd; @@ -102,7 +102,7 @@ public class Gfo_thread_cmd_unzip implements Gfo_thread_cmd { else if (ctx.Match(k, Invk_rename_dir_)) rename_dir = m.ReadYn("v"); else if (ctx.Match(k, Invk_delete_trg_if_exists_)) delete_trg_if_exists = m.ReadYn("v"); else if (ctx.Match(k, Invk_term_cmd_for_src_)) term_cmd_for_src = Term_cmd_for_src_parse_(m.ReadStr("v")); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String Invk_owner = "owner", Invk_src_ = "src_", Invk_trg_ = "trg_", Invk_rename_dir_ = "rename_dir_", Invk_delete_trg_if_exists_ = "delete_trg_if_exists_", Invk_term_cmd_for_src_ = "term_cmd_for_src_"; private static byte Term_cmd_for_src_parse_(String s) { diff --git a/400_xowa/src/gplx/core/threads/Gfo_thread_pool.java b/400_xowa/src/gplx/core/threads/Gfo_thread_pool.java index c5a8c1b82..a4d952ddc 100644 --- a/400_xowa/src/gplx/core/threads/Gfo_thread_pool.java +++ b/400_xowa/src/gplx/core/threads/Gfo_thread_pool.java @@ -16,9 +16,9 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.core.threads; import gplx.*; import gplx.core.*; -public class Gfo_thread_pool implements GfoInvkAble { +public class Gfo_thread_pool implements Gfo_invk { private Object thread_lock = new Object(); - private List_adp queue = List_adp_.new_(); + private List_adp queue = List_adp_.New(); private GfoMsg run_msg = GfoMsg_.new_cast_(Invk_run_wkr); private boolean running = false; public Gfo_usr_dlg Usr_dlg() {return usr_dlg;} public Gfo_thread_pool Usr_dlg_(Gfo_usr_dlg v) {usr_dlg = v; return this;} private Gfo_usr_dlg usr_dlg = Gfo_usr_dlg_.Noop; @@ -41,21 +41,21 @@ public class Gfo_thread_pool implements GfoInvkAble { running = true; wkr = (Gfo_thread_wkr)List_adp_.Pop_first(queue); } - Thread_adp_.Run_invk_msg(wkr.Name(), this, run_msg.Clear().Add("v", wkr)); + Thread_adp_.Start_by_msg(wkr.Thread__name(), this, run_msg.Clear().Add("v", wkr)); } private void Run_wkr(Gfo_thread_wkr wkr) { - try {wkr.Exec();} + try {wkr.Thread__exec();} catch (Exception e) { - usr_dlg.Warn_many("", "", "uncaught exception while running thread; name=~{0} err=~{1}", wkr.Name(), Err_.Message_gplx_full(e)); + usr_dlg.Warn_many("", "", "uncaught exception while running thread; name=~{0} err=~{1}", wkr.Thread__name(), Err_.Message_gplx_full(e)); } finally { - if (wkr.Resume()) + if (wkr.Thread__resume()) this.Resume(); } } public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_run_wkr)) Run_wkr((Gfo_thread_wkr)m.ReadObj("v")); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String Invk_run_wkr = "run_wkr"; diff --git a/400_xowa/src/gplx/core/threads/Gfo_thread_wkr.java b/400_xowa/src/gplx/core/threads/Gfo_thread_wkr.java index 49e273c9a..9ab54cac1 100644 --- a/400_xowa/src/gplx/core/threads/Gfo_thread_wkr.java +++ b/400_xowa/src/gplx/core/threads/Gfo_thread_wkr.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.core.threads; import gplx.*; import gplx.core.*; public interface Gfo_thread_wkr { - String Name(); - void Exec(); - boolean Resume(); + String Thread__name(); + boolean Thread__resume(); + void Thread__exec(); } diff --git a/400_xowa/src/gplx/dbs/Db_diff_bldr.java b/400_xowa/src/gplx/dbs/Db_diff_bldr.java index 508d30b95..dc22ff5fd 100644 --- a/400_xowa/src/gplx/dbs/Db_diff_bldr.java +++ b/400_xowa/src/gplx/dbs/Db_diff_bldr.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.dbs; import gplx.*; import gplx.dbs.metas.*; import gplx.dbs.sqls.*; import gplx.dbs.sqls.wtrs.*; class Db_diff_bldr { - private final Bry_bfr bfr = Bry_bfr.new_(); + private final Bry_bfr bfr = Bry_bfr_.New(); private final Sql_schema_wtr sql_bldr = new Sql_schema_wtr(); public Db_diff_bldr() {sql_bldr.Bfr_(bfr);} public String Compare_db(String src_str, String trg_str) { diff --git a/400_xowa/src/gplx/dbs/bulks/Db_bulk_exec_.java b/400_xowa/src/gplx/dbs/bulks/Db_bulk_exec_.java new file mode 100644 index 000000000..70a37b739 --- /dev/null +++ b/400_xowa/src/gplx/dbs/bulks/Db_bulk_exec_.java @@ -0,0 +1,88 @@ +/* +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.dbs.bulks; import gplx.*; import gplx.dbs.*; +import gplx.dbs.metas.*; +public class Db_bulk_exec_ { + public static void Insert(Db_bulk_prog prog_wkr, String msg, Dbmeta_fld_itm[] flds, Db_rdr src, Db_stmt trg, Db_conn trg_conn) { + // init + int flds_len = flds.length; + String[] fld_names = Db_bulk_exec_utl_.To_fld_names(flds, flds_len); + int[] fld_types = Db_bulk_exec_utl_.To_fld_types(flds, flds_len); + + // loop all rows + Gfo_log_.Instance.Prog(msg); + trg_conn.Txn_bgn("bulk_insert"); + try { + while (src.Move_next()) { + // fill insert + trg.Clear(); + int row_size = 0; + for (int i = 0; i < flds_len; ++i) { + String fld_name = fld_names[i]; + switch (fld_types[i]) { + case Dbmeta_fld_tid.Tid__bool : trg.Val_bool_as_byte (fld_name, src.Read_bool_by_byte (fld_name)); row_size += 1; break; + case Dbmeta_fld_tid.Tid__byte : trg.Val_byte (fld_name, src.Read_byte (fld_name)); row_size += 1; break; + case Dbmeta_fld_tid.Tid__int : trg.Val_int (fld_name, src.Read_int (fld_name)); row_size += 4; break; + case Dbmeta_fld_tid.Tid__long : trg.Val_long (fld_name, src.Read_long (fld_name)); row_size += 8; break; + case Dbmeta_fld_tid.Tid__float : trg.Val_float (fld_name, src.Read_float (fld_name)); row_size += 4; break; + case Dbmeta_fld_tid.Tid__double : trg.Val_double (fld_name, src.Read_double (fld_name)); row_size += 8; break; + case Dbmeta_fld_tid.Tid__str : String src_str = src.Read_str(fld_name); trg.Val_str(fld_name, src_str); row_size += src_str == null ? 0 : String_.Len(src_str); break; + case Dbmeta_fld_tid.Tid__bry : byte[] src_bry = src.Read_bry(fld_name); trg.Val_bry(fld_name, src_bry); row_size += src_bry == null ? 0 : src_bry.length; break; + default : throw Err_.new_unhandled_default(fld_types[i]); + } + } + + // exec insert + try {trg.Exec_insert();} + catch (Exception e) {throw Db_bulk_exec_utl_.New_err(e, src, flds_len, fld_names, fld_types);} + + // commit and notify if applicable + if (prog_wkr.Prog__insert_and_stop_if_suspended(row_size)) break; + } + } + catch (Exception e) {throw Err_.new_wo_type("dbs.bulk:insert failed", "err", e);} + finally { + trg_conn.Txn_end(); + } + } + public static final String Invk__bulk_insert_err = "bulk.insert.err", Invk__bulk_insert_prog = "bulk.insert.prog"; +} +class Db_bulk_exec_utl_ { + public static String[] To_fld_names(Dbmeta_fld_itm[] flds, int flds_len) { + String[] rv = new String[flds_len]; + for (int i = 0; i < flds_len; ++i) + rv[i] = flds[i].Name(); + return rv; + } + public static int[] To_fld_types(Dbmeta_fld_itm[] flds, int flds_len) { + int[] rv = new int[flds_len]; + for (int i = 0; i < flds_len; ++i) + rv[i] = flds[i].Type().Tid_ansi(); + return rv; + } + public static Err New_err(Exception e, Db_rdr rdr, int flds_len, String[] fld_names, int[] fld_types) { + Object[] args = new Object[(flds_len * 2) + 2]; + for (int i = 0; i < flds_len; i += 2) { + args[i ] = fld_names[i]; + args[i + 1] = rdr.Read_at(i); + } + args[flds_len - 2] = "err"; + args[flds_len - 1] = Err_.Message_gplx_log(e); + return Err_.new_wo_type("dbs.bulk:insert row failed", args); + } +} diff --git a/400_xowa/src/gplx/dbs/bulks/Db_bulk_prog.java b/400_xowa/src/gplx/dbs/bulks/Db_bulk_prog.java new file mode 100644 index 000000000..3f16653dc --- /dev/null +++ b/400_xowa/src/gplx/dbs/bulks/Db_bulk_prog.java @@ -0,0 +1,21 @@ +/* +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.dbs.bulks; import gplx.*; import gplx.dbs.*; +public interface Db_bulk_prog { + boolean Prog__insert_and_stop_if_suspended(int row_size); +} diff --git a/400_xowa/src/gplx/dbs/bulks/Db_tbl_copy.java b/400_xowa/src/gplx/dbs/bulks/Db_tbl_copy.java new file mode 100644 index 000000000..bb117e1a7 --- /dev/null +++ b/400_xowa/src/gplx/dbs/bulks/Db_tbl_copy.java @@ -0,0 +1,56 @@ +/* +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.dbs.bulks; import gplx.*; import gplx.dbs.*; +import gplx.dbs.*; import gplx.dbs.metas.*; +public class Db_tbl_copy { + private final Bry_bfr bfr = Bry_bfr_.New(); + private final Db_attach_mgr attach_mgr = new Db_attach_mgr(); + public void Copy_many(Db_conn src_conn, Db_conn trg_conn, String... tbl_names) { + for (String tbl_name : tbl_names) + Copy_one(src_conn, trg_conn, tbl_name, tbl_name); + } + public void Copy_one(Db_conn src_conn, Db_conn trg_conn, String src_tbl, String trg_tbl) { + Dbmeta_tbl_itm tbl = src_conn.Meta_mgr().Get_by(src_tbl); if (tbl == null) throw Err_.new_wo_type("tbl does not exist", "tbl_name", src_tbl); + trg_conn.Meta_tbl_remake(Dbmeta_tbl_itm.New(trg_tbl, tbl.Flds().To_ary(), tbl.Idxs().To_ary())); + + // do copy + attach_mgr.Conn_main_(trg_conn).Conn_others_(new Db_attach_itm("src_db", src_conn)); + attach_mgr.Exec_sql(Bld_sql(tbl, src_tbl, trg_tbl)); + } + public String Bld_sql(Dbmeta_tbl_itm tbl, String src_tbl, String trg_tbl) { + Dbmeta_fld_mgr flds = tbl.Flds(); + int flds_len = flds.Len(); + bfr.Add_str_a7("INSERT INTO ").Add_str_a7(trg_tbl).Add_byte_nl(); + bfr.Add_byte(Byte_ascii.Paren_bgn); + for (int i = 0; i < flds_len; ++i) { + Dbmeta_fld_itm fld = flds.Get_at(i); + if (i != 0) bfr.Add_str_a7(", "); + bfr.Add_str_a7(fld.Name()); + } + bfr.Add_byte(Byte_ascii.Paren_end).Add_byte_nl(); + bfr.Add_str_a7("SELECT").Add_byte_nl().Add_byte_space(); + for (int i = 0; i < flds_len; ++i) { + Dbmeta_fld_itm fld = flds.Get_at(i); + if (i != 0) bfr.Add_str_a7(", "); + bfr.Add_str_a7(fld.Name()); + } + bfr.Add_byte_nl(); + bfr.Add_str_a7("FROM ").Add_str_a7(src_tbl); + return bfr.To_str_and_clear(); + } +} diff --git a/400_xowa/src/gplx/dbs/bulks/Db_tbl_copy_tst.java b/400_xowa/src/gplx/dbs/bulks/Db_tbl_copy_tst.java new file mode 100644 index 000000000..3eec20d4a --- /dev/null +++ b/400_xowa/src/gplx/dbs/bulks/Db_tbl_copy_tst.java @@ -0,0 +1,39 @@ +/* +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.dbs.bulks; import gplx.*; import gplx.dbs.*; +import org.junit.*; import gplx.core.tests.*; import gplx.dbs.metas.*; +public class Db_tbl_copy_tst { + private final Db_tbl_copy_fxt fxt = new Db_tbl_copy_fxt(); + @Test public void Basic() { + fxt.Test__bld_sql(fxt.Make_tbl("tbl_1", Dbmeta_fld_itm.new_int("fld_1"), Dbmeta_fld_itm.new_int("fld_2")), + String_.Concat_lines_nl_skip_last + ( "INSERT INTO trg" + , "(fld_1, fld_2)" + , "SELECT" + , " fld_1, fld_2" + , "FROM src" + )); + } +} +class Db_tbl_copy_fxt { + private final Db_tbl_copy mgr = new Db_tbl_copy(); + public Dbmeta_tbl_itm Make_tbl(String name, Dbmeta_fld_itm... flds) {return Dbmeta_tbl_itm.New(name, flds);} + public void Test__bld_sql(Dbmeta_tbl_itm tbl, String expd) { + Gftest.Eq__ary__lines(expd, mgr.Bld_sql(tbl, "src", "trg"), "sql"); + } +} diff --git a/400_xowa/src/gplx/dbs/cfgs/Db_cfg_itm.java b/400_xowa/src/gplx/dbs/cfgs/Db_cfg_itm.java index bfc2bae0f..75ddd0819 100644 --- a/400_xowa/src/gplx/dbs/cfgs/Db_cfg_itm.java +++ b/400_xowa/src/gplx/dbs/cfgs/Db_cfg_itm.java @@ -18,8 +18,8 @@ along with this program. If not, see . package gplx.dbs.cfgs; import gplx.*; import gplx.dbs.*; public class Db_cfg_itm { public Db_cfg_itm(String grp, String key, String val) {this.grp = grp; this.key = key; this.val = val;} - public String Grp() {return grp;} private final String grp; - public String Key() {return key;} private final String key; + public String Grp() {return grp;} private final String grp; + public String Key() {return key;} private final String key; public String Val() {return val;} public Db_cfg_itm Val_(String v) {val = v; return this;} private String val; public String To_str_or(String or) {return val == null ? or : val;} public byte[] To_bry_or(byte[] or) {try {return val == null ? or : Bry_.new_u8(val) ;} catch (Exception e) {throw err_parse(e, Bry_.Cls_val_name);}} @@ -29,7 +29,7 @@ public class Db_cfg_itm { public boolean To_yn_or_n() {return To_yn_or(Bool_.N);} public boolean To_yn_or(boolean or) {try {return val == null ? or : Yn.parse_by_char_or(val, or);} catch (Exception e) {throw err_parse(e, Bool_.Cls_val_name);}} public DateAdp To_date_or(DateAdp or) {try {return val == null ? or : DateAdp_.parse_gplx(val) ;} catch (Exception e) {throw err_parse(e, DateAdp_.Cls_ref_name);}} - public Guid_adp To_guid_or(Guid_adp or) {try {return val == null ? or : Guid_adp_.parse(val) ;} catch (Exception e) {throw err_parse(e, Guid_adp_.Cls_ref_name);}} + public Guid_adp To_guid_or(Guid_adp or) {try {return val == null ? or : Guid_adp_.Parse(val) ;} catch (Exception e) {throw err_parse(e, Guid_adp_.Cls_ref_name);}} public boolean To_bool() {Fail_if_null(); try {return Yn.parse(val) ;} catch (Exception e) {throw err_parse(e, Bool_.Cls_val_name);}} public byte To_byte() {Fail_if_null(); try {return Byte_.parse(val) ;} catch (Exception e) {throw err_parse(e, Byte_.Cls_val_name);}} public int To_int() {Fail_if_null(); try {return Int_.parse(val) ;} catch (Exception e) {throw err_parse(e, Int_.Cls_val_name);}} @@ -53,5 +53,5 @@ public class Db_cfg_itm { public static Db_cfg_itm new_DateAdp (String grp, String key, DateAdp val) {return new Db_cfg_itm(grp , key, val.XtoStr_fmt_yyyyMMdd_HHmmss());} public static Db_cfg_itm new_guid (String key, Guid_adp val) {return new Db_cfg_itm(Grp_none , key, val.To_str());} public static Db_cfg_itm new_guid (String grp, String key, Guid_adp val) {return new Db_cfg_itm(grp , key, val.To_str());} - public static final Db_cfg_itm Empty = new Db_cfg_itm("empty", "empty", null); + public static final Db_cfg_itm Empty = new Db_cfg_itm("empty", "empty", null); } diff --git a/400_xowa/src/gplx/dbs/cfgs/Db_cfg_tbl.java b/400_xowa/src/gplx/dbs/cfgs/Db_cfg_tbl.java index 51c559d2e..f406289b0 100644 --- a/400_xowa/src/gplx/dbs/cfgs/Db_cfg_tbl.java +++ b/400_xowa/src/gplx/dbs/cfgs/Db_cfg_tbl.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.dbs.cfgs; import gplx.*; import gplx.dbs.*; import gplx.core.primitives.*; public class Db_cfg_tbl implements Rls_able { - private final String tbl_name; private final Dbmeta_fld_list flds = Dbmeta_fld_list.new_(); + private final String tbl_name; private final Dbmeta_fld_list flds = new Dbmeta_fld_list(); private final String fld_grp, fld_key, fld_val; private Db_stmt stmt_insert, stmt_update, stmt_select; public Db_conn Conn() {return conn;} private final Db_conn conn; @@ -72,14 +72,14 @@ public class Db_cfg_tbl implements Rls_able { if (cur_val == null) this.Insert_str(grp, key, val); else this.Update_str(grp, key, val); } - public boolean Select_yn (String grp, String key) {String val = Select_str(grp, key); return Parse_yn (grp, key, val);} + public boolean Select_yn (String grp, String key) {String val = Select_str(grp, key); return Parse_yn (grp, key, val);} public byte Select_byte (String grp, String key) {String val = Select_str(grp, key); return Parse_byte (grp, key, val);} public int Select_int (String grp, String key) {String val = Select_str(grp, key); return Parse_int (grp, key, val);} public long Select_long (String grp, String key) {String val = Select_str(grp, key); return Parse_long (grp, key, val);} public byte[] Select_bry (String grp, String key) {String val = Select_str(grp, key); return Parse_bry (grp, key, val);} public DateAdp Select_date (String grp, String key) {String val = Select_str(grp, key); return Parse_date (grp, key, val);} public Guid_adp Select_guid (String grp, String key) {String val = Select_str(grp, key); return Parse_guid (grp, key, val);} - public boolean Select_yn_or (String grp, String key, boolean or) {String val = Select_str_or(grp, key, null) ; return val == null ? or : Parse_yn (grp, key, val);} + public boolean Select_yn_or (String grp, String key, boolean or) {String val = Select_str_or(grp, key, null) ; return val == null ? or : Parse_yn (grp, key, val);} public byte Select_byte_or (String grp, String key, byte or) {String val = Select_str_or(grp, key, null) ; return val == null ? or : Parse_byte (grp, key, val);} public int Select_int_or (String grp, String key, int or) {String val = Select_str_or(grp, key, null) ; return val == null ? or : Parse_int (grp, key, val);} public long Select_long_or (String grp, String key, long or) {String val = Select_str_or(grp, key, null) ; return val == null ? or : Parse_long (grp, key, val);} @@ -131,6 +131,6 @@ public class Db_cfg_tbl implements Rls_able { private long Parse_long (String grp, String key, String val) {try {return Long_.parse(val) ;} catch (Exception e) {throw err_parse(e, grp, key, val, Long_.Cls_val_name);}} private byte[] Parse_bry (String grp, String key, String val) {try {return Bry_.new_u8(val) ;} catch (Exception e) {throw err_parse(e, grp, key, val, Bry_.Cls_val_name);}} private DateAdp Parse_date (String grp, String key, String val) {try {return DateAdp_.parse_gplx(val) ;} catch (Exception e) {throw err_parse(e, grp, key, val, DateAdp_.Cls_ref_name);}} - private Guid_adp Parse_guid (String grp, String key, String val) {try {return Guid_adp_.parse(val) ;} catch (Exception e) {throw err_parse(e, grp, key, val, Guid_adp_.Cls_ref_name);}} + private Guid_adp Parse_guid (String grp, String key, String val) {try {return Guid_adp_.Parse(val) ;} catch (Exception e) {throw err_parse(e, grp, key, val, Guid_adp_.Cls_ref_name);}} private Err err_parse(Exception e, String grp, String key, String val, String type) {return Err_.new_exc(e, "db", "cfg.val is not parseable", "grp", grp, "key", key, "val", val, "type", type);} } diff --git a/400_xowa/src/gplx/dbs/metas/updates/Schema_update_mgr.java b/400_xowa/src/gplx/dbs/metas/updates/Schema_update_mgr.java index 81079011f..db776e617 100644 --- a/400_xowa/src/gplx/dbs/metas/updates/Schema_update_mgr.java +++ b/400_xowa/src/gplx/dbs/metas/updates/Schema_update_mgr.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.dbs.metas.updates; import gplx.*; import gplx.dbs.*; import gplx.dbs.metas.*; public class Schema_update_mgr { - private List_adp cmds = List_adp_.new_(); + private List_adp cmds = List_adp_.New(); public void Add(Schema_update_cmd cmd) {cmds.Add(cmd);} public void Update(Schema_db_mgr schema_mgr, Db_conn conn) { int cmds_len = cmds.Count(); diff --git a/400_xowa/src/gplx/dbs/percentiles/Log_tbl_fmtr.java b/400_xowa/src/gplx/dbs/percentiles/Log_tbl_fmtr.java index c59a3b227..143938563 100644 --- a/400_xowa/src/gplx/dbs/percentiles/Log_tbl_fmtr.java +++ b/400_xowa/src/gplx/dbs/percentiles/Log_tbl_fmtr.java @@ -17,8 +17,8 @@ along with this program. If not, see . */ package gplx.dbs.percentiles; import gplx.*; import gplx.dbs.*; class Log_tbl_fmtr { - private final Bry_bfr bfr = Bry_bfr.new_(); - private final List_adp itms = List_adp_.new_(); + private final Bry_bfr bfr = Bry_bfr_.New(); + private final List_adp itms = List_adp_.New(); private Log_fld_itm[] ary; public Log_tbl_fmtr Add_str(String key, int len) {ary = null; itms.Add(new Log_fld_itm__bry(Type_adp_.Tid__bry, key, len)); return this;} public Log_tbl_fmtr Add_int(String key, int bgn, int end) {ary = null; itms.Add(new Log_fld_itm__int(Type_adp_.Tid__int, key, bgn, end)); return this;} @@ -43,8 +43,8 @@ abstract class Log_fld_itm__base implements Log_fld_itm { public Log_fld_itm__base(int tid, String key, int len) { this.tid = tid; this.key = key; this.len = len; } - public int Tid() {return tid;} private final int tid; - public String Key() {return key;} private final String key; + public int Tid() {return tid;} private final int tid; + public String Key() {return key;} private final String key; public int Len() {return len;} protected int len; public abstract void Fmt(Bry_bfr bfr, Object val); } @@ -64,8 +64,8 @@ class Log_fld_itm__int extends Log_fld_itm__base { this.bgn = bgn; this.end = end; this.len = Int_.DigitCount(end); } - public int Bgn() {return bgn;} private final int bgn; - public int End() {return end;} private final int end; + public int Bgn() {return bgn;} private final int bgn; + public int End() {return end;} private final int end; @Override public void Fmt(Bry_bfr bfr, Object val) { int val_int = Int_.cast(val); String val_str = String_.PadBgn(Int_.To_str(val_int), this.Len(), " "); diff --git a/400_xowa/src/gplx/fsdb/Fsdb_db_mgr_.java b/400_xowa/src/gplx/fsdb/Fsdb_db_mgr_.java index 4fce4edcf..ce53cefb2 100644 --- a/400_xowa/src/gplx/fsdb/Fsdb_db_mgr_.java +++ b/400_xowa/src/gplx/fsdb/Fsdb_db_mgr_.java @@ -33,16 +33,16 @@ public class Fsdb_db_mgr_ { } String domain_str = wiki.Domain_str(); Fsdb_db_mgr rv = null; - rv = load_or_null(Xowd_db_layout.Itm_few, usr_dlg, wiki_dir, wiki, domain_str); if (rv != null) return rv; - rv = load_or_null(Xowd_db_layout.Itm_lot, usr_dlg, wiki_dir, wiki, domain_str); if (rv != null) return rv; - rv = load_or_null(Xowd_db_layout.Itm_all, usr_dlg, wiki_dir, wiki, domain_str); if (rv != null) return rv; + rv = load_or_null(Xow_db_layout.Itm_few, usr_dlg, wiki_dir, wiki, domain_str); if (rv != null) return rv; + rv = load_or_null(Xow_db_layout.Itm_lot, usr_dlg, wiki_dir, wiki, domain_str); if (rv != null) return rv; + rv = load_or_null(Xow_db_layout.Itm_all, usr_dlg, wiki_dir, wiki, domain_str); if (rv != null) return rv; usr_dlg.Log_many("", "", "fsdb.db_core.none: wiki_dir=~{0} file_dir=~{1}", wiki_dir.Raw(), file_dir.Raw()); return null; } - private static Fsdb_db_mgr load_or_null(Xowd_db_layout layout, Gfo_usr_dlg usr_dlg, Io_url wiki_dir, Xow_wiki wiki, String domain_str) { + private static Fsdb_db_mgr load_or_null(Xow_db_layout layout, Gfo_usr_dlg usr_dlg, Io_url wiki_dir, Xow_wiki wiki, String domain_str) { Io_url main_core_url = wiki_dir.GenSubFil(Fsdb_db_mgr__v2_bldr.Main_core_name(layout, domain_str)); if (!Db_conn_bldr.Instance.Exists(main_core_url)) return null; - usr_dlg.Log_many("", "", "fsdb.db_core.v2: type=~{0} url=~{1}", layout.Name(), main_core_url.Raw()); + usr_dlg.Log_many("", "", "fsdb.db_core.v2: type=~{0} url=~{1}", layout.Key(), main_core_url.Raw()); Db_conn main_core_conn = Db_conn_bldr.Instance.Get(main_core_url); if (wiki.Data__core_mgr().Props().Layout_file().Tid_is_all()) { return new Fsdb_db_mgr__v2(Fsdb_db_mgr__v2.Cfg__layout_file__get(main_core_conn), wiki_dir, new Fsdb_db_file(main_core_url, main_core_conn), new Fsdb_db_file(main_core_url, main_core_conn)); diff --git a/400_xowa/src/gplx/fsdb/Fsdb_db_mgr__v2.java b/400_xowa/src/gplx/fsdb/Fsdb_db_mgr__v2.java index 664893534..dcb24b5e8 100644 --- a/400_xowa/src/gplx/fsdb/Fsdb_db_mgr__v2.java +++ b/400_xowa/src/gplx/fsdb/Fsdb_db_mgr__v2.java @@ -18,10 +18,10 @@ along with this program. If not, see . package gplx.fsdb; import gplx.*; import gplx.dbs.*; import gplx.dbs.cfgs.*; import gplx.fsdb.meta.*; import gplx.xowa.files.origs.*; import gplx.xowa.wikis.data.*; public class Fsdb_db_mgr__v2 implements Fsdb_db_mgr { - private final Xowd_db_layout layout; private final Io_url wiki_dir; + private final Xow_db_layout layout; private final Io_url wiki_dir; private final Fsdb_db_file file_main_core, file_user_core; private final Xof_orig_tbl[] orig_tbl_ary; - public Fsdb_db_mgr__v2(Xowd_db_layout layout, Io_url wiki_dir, Fsdb_db_file file_main_core, Fsdb_db_file file_user_core) { + public Fsdb_db_mgr__v2(Xow_db_layout layout, Io_url wiki_dir, Fsdb_db_file file_main_core, Fsdb_db_file file_user_core) { this.layout = layout; this.wiki_dir = wiki_dir; this.file_main_core = file_main_core; this.file_user_core = file_user_core; this.orig_tbl_ary = new Xof_orig_tbl[] @@ -55,12 +55,12 @@ public class Fsdb_db_mgr__v2 implements Fsdb_db_mgr { gplx.xowa.wikis.data.Xowd_cfg_tbl_.New(conn).Create_tbl(); return Fsdb_db_mgr__v2_bldr.Make_bin_tbl(new Fsdb_db_file(url, conn)); } - public static Xowd_db_layout Cfg__layout_file__get(Db_conn main_core_conn) { + public static Xow_db_layout Cfg__layout_file__get(Db_conn main_core_conn) { Db_cfg_tbl cfg_tbl = gplx.xowa.wikis.data.Xowd_cfg_tbl_.New(main_core_conn); - return Xowd_db_layout.get_(cfg_tbl.Select_str_or(gplx.xowa.wikis.Xow_cfg_consts.Grp__bldr_fsdb, Cfg_key__layout_file, Xowd_db_layout.Name_few)); + return Xow_db_layout.Get_by_name(cfg_tbl.Select_str_or(gplx.xowa.wikis.Xow_cfg_consts.Grp__bldr_fsdb, Cfg_key__layout_file, Xow_db_layout.Key__few)); } - public static void Cfg__layout_file__set(Db_cfg_tbl cfg_tbl, Xowd_db_layout v) { - cfg_tbl.Insert_str(gplx.xowa.wikis.Xow_cfg_consts.Grp__bldr_fsdb, Cfg_key__layout_file, v.Name()); + public static void Cfg__layout_file__set(Db_cfg_tbl cfg_tbl, Xow_db_layout v) { + cfg_tbl.Insert_str(gplx.xowa.wikis.Xow_cfg_consts.Grp__bldr_fsdb, Cfg_key__layout_file, v.Key()); } private static final String Cfg_key__layout_file = "layout_file"; } diff --git a/400_xowa/src/gplx/fsdb/Fsdb_db_mgr__v2_bldr.java b/400_xowa/src/gplx/fsdb/Fsdb_db_mgr__v2_bldr.java index d01d902ad..1608b9aa5 100644 --- a/400_xowa/src/gplx/fsdb/Fsdb_db_mgr__v2_bldr.java +++ b/400_xowa/src/gplx/fsdb/Fsdb_db_mgr__v2_bldr.java @@ -20,7 +20,7 @@ import gplx.dbs.*; import gplx.dbs.cfgs.*; import gplx.fsdb.meta.*; import gplx. import gplx.xowa.*; import gplx.xowa.wikis.data.*; import gplx.xowa.bldrs.infos.*; public class Fsdb_db_mgr__v2_bldr { public static Fsdb_db_mgr__v2 Get_or_make(Xow_wiki wiki, boolean delete_if_exists) { // NOTE: must check if file exists else imports with existing v2 dbs will fail; DATE:2015-05-23 - Xowd_db_layout layout = wiki.Data__core_mgr().Props().Layout_file(); + Xow_db_layout layout = wiki.Data__core_mgr().Props().Layout_file(); String domain_str = wiki.Domain_str(); Io_url wiki_dir = wiki.Fsys_mgr().Root_dir(); String main_core_name = Main_core_name(layout, domain_str); @@ -38,7 +38,7 @@ public class Fsdb_db_mgr__v2_bldr { return new Fsdb_db_mgr__v2(layout, wiki_dir, main_core_file, user_core_file); } private static Fsdb_db_file Load_core_file(Io_url url) {return new Fsdb_db_file(url, Db_conn_bldr.Instance.Get(url));} - private static Fsdb_db_file Make_core_file_main(Xow_wiki wiki, Io_url main_core_url, String main_core_name, Xowd_db_layout layout) { + private static Fsdb_db_file Make_core_file_main(Xow_wiki wiki, Io_url main_core_url, String main_core_name, Xow_db_layout layout) { Db_conn conn = layout.Tid_is_all() ? Db_conn_bldr.Instance.Get(main_core_url) : Db_conn_bldr.Instance.New(main_core_url); // if all, use existing (assumes same file name); else, create new conn.Txn_bgn("fsdb__core_file"); Fsdb_db_file rv = Make_core_file(main_core_url, conn, schema_is_1, Fsm_mnt_mgr.Mnt_idx_main); @@ -54,7 +54,7 @@ public class Fsdb_db_mgr__v2_bldr { Fsdb_db_file rv = Make_core_file(user_core_url, conn, schema_is_1, Fsm_mnt_mgr.Mnt_idx_user); Fsm_bin_tbl dbb_tbl = new Fsm_bin_tbl(conn, schema_is_1, Fsm_mnt_mgr.Mnt_idx_user); dbb_tbl.Insert(0, user_file_name); Make_bin_tbl(rv); - Make_cfg_data(wiki, main_core_name, rv, Xowd_db_file_.Tid_file_user, -1); + Make_cfg_data(wiki, main_core_name, rv, Xow_db_file_.Tid__file_user, -1); conn.Txn_end(); return rv; } @@ -81,27 +81,27 @@ public class Fsdb_db_mgr__v2_bldr { Fsd_bin_tbl bin_tbl = new Fsd_bin_tbl(file.Conn(), schema_is_1); bin_tbl.Create_tbl(); return file; } - public static String Main_core_name(Xowd_db_layout layout, String wiki_domain) { + public static String Main_core_name(Xow_db_layout layout, String wiki_domain) { switch (layout.Tid()) { - case Xowd_db_layout.Const_all: return Main_core_name_all(wiki_domain); - case Xowd_db_layout.Const_few: return Main_core_name_few(wiki_domain); - case Xowd_db_layout.Const_lot: return Main_core_name_lot(wiki_domain); + case Xow_db_layout.Tid__all: return Main_core_name_all(wiki_domain); + case Xow_db_layout.Tid__few: return Main_core_name_few(wiki_domain); + case Xow_db_layout.Tid__lot: return Main_core_name_lot(wiki_domain); default: throw Err_.new_unimplemented(); } } - private static byte Main_core_tid(Xowd_db_layout layout) { + private static byte Main_core_tid(Xow_db_layout layout) { switch (layout.Tid()) { - case Xowd_db_layout.Const_all: return Xowd_db_file_.Tid_core; - case Xowd_db_layout.Const_few: return Xowd_db_file_.Tid_file_solo; - case Xowd_db_layout.Const_lot: return Xowd_db_file_.Tid_file_core; + case Xow_db_layout.Tid__all: return Xow_db_file_.Tid__core; + case Xow_db_layout.Tid__few: return Xow_db_file_.Tid__file_solo; + case Xow_db_layout.Tid__lot: return Xow_db_file_.Tid__file_core; default: throw Err_.new_unimplemented(); } } public static void Make_cfg_data(Xow_wiki wiki, String file_core_name, Fsdb_db_file file, byte file_tid, int part_id) { Db_cfg_tbl cfg_tbl = file.Tbl__cfg(); - Xowd_db_file core_db = wiki.Data__core_mgr().Db__core(); + Xow_db_file core_db = wiki.Data__core_mgr().Db__core(); core_db.Info_session().Save(cfg_tbl); - Xob_info_file info_file = new Xob_info_file(-1, Xowd_db_file_.To_key(file_tid), Xob_info_file.Ns_ids_empty, part_id, Guid_adp_.new_(), 2, file_core_name, file.Url().NameAndExt()); + Xob_info_file info_file = new Xob_info_file(-1, Xow_db_file_.To_key(file_tid), Xob_info_file.Ns_ids_empty, part_id, Guid_adp_.New(), 2, file_core_name, file.Url().NameAndExt()); info_file.Save(cfg_tbl); } private static String Main_core_name_all(String wiki_domain) {return wiki_domain + ".xowa";} // EX: en.wikipedia.org.xowa diff --git a/400_xowa/src/gplx/fsdb/data/Fsd_bin_itm.java b/400_xowa/src/gplx/fsdb/data/Fsd_bin_itm.java new file mode 100644 index 000000000..f0908a8dd --- /dev/null +++ b/400_xowa/src/gplx/fsdb/data/Fsd_bin_itm.java @@ -0,0 +1,34 @@ +/* +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.fsdb.data; import gplx.*; import gplx.fsdb.*; +public class Fsd_bin_itm { + public Fsd_bin_itm(int bin_owner_id, byte bin_owner_tid, int bin_part_id, String bin_data_url, byte[] bin_data) { + this.bin_owner_id = bin_owner_id; + this.bin_owner_tid = bin_owner_tid; + this.bin_part_id = bin_part_id; + this.bin_data_url = bin_data_url; + this.bin_data = bin_data; + } + public int Bin_owner_id() {return bin_owner_id;} private final int bin_owner_id; + public byte Bin_owner_tid() {return bin_owner_tid;} private final byte bin_owner_tid; + public int Bin_part_id() {return bin_part_id;} private final int bin_part_id; + public String Bin_data_url() {return bin_data_url;} private final String bin_data_url; + public byte[] Bin_data() {return bin_data;} private final byte[] bin_data; + + public static final int Db_row_size_fixed = (3 * 4); // bin_owner_id, bin_part_id, bin_owner_tid (assume byte saved as int in SQLITE) +} diff --git a/400_xowa/src/gplx/fsdb/data/Fsd_bin_tbl.java b/400_xowa/src/gplx/fsdb/data/Fsd_bin_tbl.java index 2561b5713..5c5b99ad5 100644 --- a/400_xowa/src/gplx/fsdb/data/Fsd_bin_tbl.java +++ b/400_xowa/src/gplx/fsdb/data/Fsd_bin_tbl.java @@ -17,13 +17,12 @@ along with this program. If not, see . */ package gplx.fsdb.data; import gplx.*; import gplx.fsdb.*; import gplx.core.primitives.*; import gplx.core.envs.*; -import gplx.dbs.*; import gplx.core.ios.*; +import gplx.dbs.*; import gplx.core.ios.*; import gplx.core.ios.streams.*; import gplx.dbs.engines.sqlite.*; -public class Fsd_bin_tbl implements Rls_able { - private final String tbl_name = "fsdb_bin"; private final Dbmeta_fld_list flds = Dbmeta_fld_list.new_(); - private final String fld_owner_id, fld_owner_tid, fld_part_id, fld_data_url, fld_data; - private Db_conn conn; private Db_stmt stmt_insert, stmt_select; private Bry_bfr tmp_bfr; - private final Bool_obj_ref saved_in_parts = Bool_obj_ref.n_(); +public class Fsd_bin_tbl implements Rls_able { + private final String fld_owner_id, fld_owner_tid, fld_part_id, fld_data_url, fld_data; + private Db_conn conn; private Db_stmt stmt_insert, stmt_select, stmt_select_itm; private Bry_bfr tmp_bfr; + private final Bool_obj_ref saved_in_parts = Bool_obj_ref.n_(); public Fsd_bin_tbl(Db_conn conn, boolean schema_is_1) { this.conn = conn; fld_owner_id = flds.Add_int_pkey ("bin_owner_id"); @@ -33,9 +32,12 @@ public class Fsd_bin_tbl implements Rls_able { fld_data = flds.Add_bry ("bin_data"); // mediumblob conn.Rls_reg(this); } + public String Tbl_name() {return tbl_name;} private final String tbl_name = "fsdb_bin"; + public Dbmeta_fld_list Flds() {return flds;} private final Dbmeta_fld_list flds = new Dbmeta_fld_list(); public void Rls() { stmt_insert = Db_stmt_.Rls(stmt_insert); stmt_select = Db_stmt_.Rls(stmt_select); + stmt_select_itm = Db_stmt_.Rls(stmt_select_itm); } public void Create_tbl() {conn.Meta_tbl_create(Dbmeta_tbl_itm.New(tbl_name, flds));} public void Insert_bgn() {conn.Txn_bgn("fsdb_bin__insert"); stmt_insert = conn.Stmt_insert(tbl_name, flds);} @@ -44,7 +46,7 @@ public class Fsd_bin_tbl implements Rls_able { public void Insert_rdr(int id, byte tid, long bin_len, Io_stream_rdr bin_rdr) { if (stmt_insert == null) { stmt_insert = conn.Stmt_insert(tbl_name, flds); - tmp_bfr = Bry_bfr.reset_(Io_mgr.Len_kb); + tmp_bfr = Bry_bfr_.Reset(Io_mgr.Len_kb); } byte[] bin_ary = null; bin_ary = Io_stream_rdr_.Load_all_as_bry(tmp_bfr, bin_rdr); @@ -78,7 +80,7 @@ public class Fsd_bin_tbl implements Rls_able { byte[] rv = null; try {rv = rdr.Read_bry(fld_data);} catch (Exception e) { - if ( Op_sys.Cur().Tid_is_drd() + if ( Op_sys.Cur().Tid_is_drd() // drd error when selecting large blobs (> 4 MB?) && url != null // called by Select_to_url && String_.Has(Err_.Message_lang(e), "get field slot from row") // get field slot from row 0 col 0 failed ) { @@ -93,6 +95,24 @@ public class Fsd_bin_tbl implements Rls_able { } finally {rdr.Rls();} } + public Fsd_bin_itm Select_as_itm(int owner_id) { + if (stmt_select_itm == null) stmt_select_itm = conn.Stmt_select(tbl_name, flds, fld_owner_id); + Db_rdr rdr = stmt_select_itm.Clear().Crt_int(fld_owner_id, owner_id).Exec_select__rls_manual(); + try { + if (rdr.Move_next()) { + return new Fsd_bin_itm + ( rdr.Read_int(fld_owner_id) + , rdr.Read_byte(fld_owner_tid) + , rdr.Read_int(fld_part_id) + , rdr.Read_str(fld_data_url) + , rdr.Read_bry(fld_data) + ); + } + else + return null; + } + finally {rdr.Rls();} + } public static final byte Owner_tid_fil = 1, Owner_tid_thm = 2; public static final int Bin_db_id_null = -1, Size_null = -1; private static final int Part_id_null = -1; diff --git a/400_xowa/src/gplx/fsdb/data/Fsd_dir_itm.java b/400_xowa/src/gplx/fsdb/data/Fsd_dir_itm.java index a4fc6d280..20d4643f1 100644 --- a/400_xowa/src/gplx/fsdb/data/Fsd_dir_itm.java +++ b/400_xowa/src/gplx/fsdb/data/Fsd_dir_itm.java @@ -18,9 +18,9 @@ along with this program. If not, see . package gplx.fsdb.data; import gplx.*; import gplx.fsdb.*; public class Fsd_dir_itm { public Fsd_dir_itm(int dir_id, int owner, byte[] name) {this.dir_id = dir_id; this.owner = owner; this.name = name;} - public int Dir_id() {return dir_id;} private final int dir_id; - public int Owner() {return owner;} private final int owner; - public byte[] Name() {return name;} private final byte[] name; + public int Dir_id() {return dir_id;} private final int dir_id; + public int Owner() {return owner;} private final int owner; + public byte[] Name() {return name;} private final byte[] name; public static final int Owner_root = 0; - public static final Fsd_dir_itm Null = null; + public static final Fsd_dir_itm Null = null; } diff --git a/400_xowa/src/gplx/fsdb/data/Fsd_dir_tbl.java b/400_xowa/src/gplx/fsdb/data/Fsd_dir_tbl.java index db7001938..cedbcd047 100644 --- a/400_xowa/src/gplx/fsdb/data/Fsd_dir_tbl.java +++ b/400_xowa/src/gplx/fsdb/data/Fsd_dir_tbl.java @@ -18,9 +18,9 @@ along with this program. If not, see . package gplx.fsdb.data; import gplx.*; import gplx.fsdb.*; import gplx.dbs.*; public class Fsd_dir_tbl implements Rls_able { - private final String tbl_name = "fsdb_dir"; private final Dbmeta_fld_list flds = Dbmeta_fld_list.new_(); - private final String fld_id, fld_owner_id, fld_name; - private final Db_conn conn; private Db_stmt stmt_insert, stmt_update, stmt_select_by_name; + private final String tbl_name = "fsdb_dir"; private final Dbmeta_fld_list flds = new Dbmeta_fld_list(); + private final String fld_id, fld_owner_id, fld_name; + private final Db_conn conn; private Db_stmt stmt_insert, stmt_update, stmt_select_by_name; public Fsd_dir_tbl(Db_conn conn, boolean schema_is_1) { this.conn = conn; this.fld_id = flds.Add_int_pkey ("dir_id"); diff --git a/400_xowa/src/gplx/fsdb/data/Fsd_fil_itm.java b/400_xowa/src/gplx/fsdb/data/Fsd_fil_itm.java index 23abc38ef..6b8d45bef 100644 --- a/400_xowa/src/gplx/fsdb/data/Fsd_fil_itm.java +++ b/400_xowa/src/gplx/fsdb/data/Fsd_fil_itm.java @@ -17,17 +17,35 @@ along with this program. If not, see . */ package gplx.fsdb.data; import gplx.*; import gplx.fsdb.*; public class Fsd_fil_itm { + public int Mnt_id() {return mnt_id;} private int mnt_id; + public int Fil_id() {return fil_id;} private int fil_id; + public int Dir_id() {return dir_id;} private int dir_id; + public int Xtn_id() {return xtn_id;} private int xtn_id; + public int Ext_id() {return ext_id;} private int ext_id; + public byte[] Name() {return name;} private byte[] name; + public int Bin_db_id() {return bin_db_id;} private int bin_db_id; + public long Size() {return size;} private long size; + public String Modified_on() {return modified_on;} private String modified_on; + public String Hash_md5() {return hash_md5;} private String hash_md5; + public Fsd_fil_itm Ctor(int mnt_id, int dir_id, int fil_id, int bin_db_id, byte[] name, int ext_id) { this.mnt_id = mnt_id; this.dir_id = dir_id; this.fil_id = fil_id; this.bin_db_id = bin_db_id; this.name = name; this.ext_id = ext_id; return this; } - public int Mnt_id() {return mnt_id;} private int mnt_id; - public int Fil_id() {return fil_id;} private int fil_id; - public int Dir_id() {return dir_id;} private int dir_id; - public int Bin_db_id() {return bin_db_id;} private int bin_db_id; - public byte[] Name() {return name;} private byte[] name; - public int Ext_id() {return ext_id;} private int ext_id; - public static final Fsd_fil_itm Null = null; + public Fsd_fil_itm Load_by_rdr__full(int mnt_id, int dir_id, int fil_id, int xtn_id, int ext_id, byte[] name, long size, String modified_on, String hash_md5, int bin_db_id) { + this.mnt_id = mnt_id; this.dir_id = dir_id; this.fil_id = fil_id; this.xtn_id = xtn_id; this.ext_id = ext_id; + this.name = name; this.size = size; this.modified_on = modified_on; this.hash_md5 = hash_md5; this.bin_db_id = bin_db_id; + return this; + } + public int Db_row_size() {return Db_row_size_fixed + name.length;} + private static final int Db_row_size_fixed = + (7 * 4) // 6 int fields + 1 byte field + + 8 // 1 long field + + 32 // hash_md5 + + 14 // modified_on + ; + + public static final Fsd_fil_itm Null = null; public static byte[] Gen_cache_key(Bry_bfr bfr, int dir_id, byte[] name) { return bfr.Add_int_variable(dir_id).Add_byte_pipe().Add(name).To_bry_and_clear(); } diff --git a/400_xowa/src/gplx/fsdb/data/Fsd_fil_tbl.java b/400_xowa/src/gplx/fsdb/data/Fsd_fil_tbl.java index 402496c23..88d20f386 100644 --- a/400_xowa/src/gplx/fsdb/data/Fsd_fil_tbl.java +++ b/400_xowa/src/gplx/fsdb/data/Fsd_fil_tbl.java @@ -18,10 +18,10 @@ along with this program. If not, see . package gplx.fsdb.data; import gplx.*; import gplx.fsdb.*; import gplx.dbs.*; import gplx.dbs.qrys.*; import gplx.dbs.engines.sqlite.*; public class Fsd_fil_tbl implements Rls_able { - private final String tbl_name = "fsdb_fil"; private final Dbmeta_fld_list flds = Dbmeta_fld_list.new_(); - private final String fld_id, fld_owner_id, fld_name, fld_xtn_id, fld_ext_id, fld_size, fld_modified, fld_hash, fld_bin_db_id; - private final String idx_owner; - private Db_conn conn; private Db_stmt stmt_insert, stmt_update, stmt_select_by_name; private int mnt_id; + public final String tbl_name = "fsdb_fil"; public final Dbmeta_fld_list flds = new Dbmeta_fld_list(); + public final String fld_id, fld_owner_id, fld_name, fld_xtn_id, fld_ext_id, fld_size, fld_modified, fld_hash, fld_bin_db_id; + private final String idx_owner; + public final Db_conn conn; private Db_stmt stmt_insert, stmt_update, stmt_select_by_name; private int mnt_id; public Fsd_fil_tbl(Db_conn conn, boolean schema_is_1, int mnt_id) { this.conn = conn; this.mnt_id = mnt_id; this.fld_id = flds.Add_int_pkey ("fil_id"); @@ -48,7 +48,10 @@ public class Fsd_fil_tbl implements Rls_able { } public void Insert(int id, int owner_id, byte[] name, int xtn_id, int ext_id, long size, int bin_db_id) { if (stmt_insert == null) stmt_insert = conn.Stmt_insert(tbl_name, flds); - stmt_insert.Clear() + Insert(stmt_insert, id, owner_id, name, xtn_id, ext_id, size, bin_db_id, String_.Empty, String_.Empty); + } + public void Insert(Db_stmt stmt, int id, int owner_id, byte[] name, int xtn_id, int ext_id, long size, int bin_db_id, String modified_on, String hash_md5) { + stmt.Clear() .Val_int(fld_id, id) .Val_int(fld_owner_id, owner_id) .Val_int(fld_xtn_id, xtn_id) @@ -56,8 +59,8 @@ public class Fsd_fil_tbl implements Rls_able { .Val_int(fld_bin_db_id, bin_db_id) .Val_bry_as_str(fld_name, name) .Val_long(fld_size, size) - .Val_str(fld_modified, String_.Empty) - .Val_str(fld_hash, String_.Empty) + .Val_str(fld_modified, modified_on) + .Val_str(fld_hash, hash_md5) .Exec_insert(); } public void Update(int id, int owner_id, byte[] name, int xtn_id, int ext_id, long size, int bin_db_id) { @@ -84,7 +87,7 @@ public class Fsd_fil_tbl implements Rls_able { .Crt_bry_as_str(fld_name, fil_name) .Exec_select__rls_manual(); try { - return rdr.Move_next() ? new_(mnt_id, rdr) : Fsd_fil_itm.Null; + return rdr.Move_next() ? Load_by_rdr(mnt_id, rdr) : Fsd_fil_itm.Null; } finally {rdr.Rls();} } @@ -92,14 +95,28 @@ public class Fsd_fil_tbl implements Rls_able { Db_rdr rdr = conn.Stmt_select(tbl_name, flds, Dbmeta_fld_itm.Str_ary_empty).Exec_select__rls_auto(); try { while (rdr.Move_next()) { - Fsd_fil_itm fil = new_(mnt_id, rdr); + Fsd_fil_itm fil = Load_by_rdr(mnt_id, rdr); byte[] cache_key = Fsd_fil_itm.Gen_cache_key(key_bfr, fil.Dir_id(), fil.Name()); cache.Add(cache_key, fil); } } finally {rdr.Rls();} } - private Fsd_fil_itm new_(int mnt_id, Db_rdr rdr) { + public Fsd_fil_itm Load_by_rdr(int mnt_id, Db_rdr rdr) { return new Fsd_fil_itm().Ctor(mnt_id, rdr.Read_int(fld_owner_id), rdr.Read_int(fld_id), rdr.Read_int(fld_bin_db_id), rdr.Read_bry_by_str(fld_name), rdr.Read_int(fld_ext_id)); } + public Fsd_fil_itm Load_by_rdr__full(int mnt_id, Db_rdr rdr) { + return new Fsd_fil_itm() + .Load_by_rdr__full(mnt_id + , rdr.Read_int(fld_owner_id) + , rdr.Read_int(fld_id) + , rdr.Read_int(fld_xtn_id) + , rdr.Read_int(fld_ext_id) + , rdr.Read_bry_by_str(fld_name) + , rdr.Read_long(fld_size) + , rdr.Read_str(fld_modified) + , rdr.Read_str(fld_hash) + , rdr.Read_int(fld_bin_db_id) + ); + } } diff --git a/400_xowa/src/gplx/fsdb/data/Fsd_thm_itm.java b/400_xowa/src/gplx/fsdb/data/Fsd_thm_itm.java index 40c7fae2b..8707ed19b 100644 --- a/400_xowa/src/gplx/fsdb/data/Fsd_thm_itm.java +++ b/400_xowa/src/gplx/fsdb/data/Fsd_thm_itm.java @@ -44,8 +44,16 @@ public class Fsd_thm_itm { this.w = comp.w; this.h = comp.h; this.time = comp.time; this.page = comp.page; this.size = comp.size; this.modified = comp.modified; this.hash = comp.hash; } - public static final Fsd_thm_itm Null = null; - public static final Fsd_thm_itm[] Ary_empty = new Fsd_thm_itm[0]; + public int Db_row_size() {return Db_row_size_fixed;} + private static final int Db_row_size_fixed = + (7 * 4) // 7 ints + + (2 * 8) // 1 long; 1 double + + 32 // hash_md5 + + 14 // modified_on + ; + + public static final Fsd_thm_itm Null = null; + public static final Fsd_thm_itm[] Ary_empty = new Fsd_thm_itm[0]; public static Fsd_thm_itm new_() {return new Fsd_thm_itm();} Fsd_thm_itm() {} } class Fsdb_thm_itm_sorter implements gplx.core.lists.ComparerAble { @@ -56,5 +64,5 @@ class Fsdb_thm_itm_sorter implements gplx.core.lists.ComparerAble { comp = Double_.Compare (lhs.Time() , rhs.Time()); if (comp != CompareAble_.Same) return comp; // sort by increasing time return Int_.Compare (lhs.Page() , rhs.Page()); // sort by increasing page } - public static final Fsdb_thm_itm_sorter Instance = new Fsdb_thm_itm_sorter(); Fsdb_thm_itm_sorter() {} + public static final Fsdb_thm_itm_sorter Instance = new Fsdb_thm_itm_sorter(); Fsdb_thm_itm_sorter() {} } diff --git a/400_xowa/src/gplx/fsdb/data/Fsd_thm_tbl.java b/400_xowa/src/gplx/fsdb/data/Fsd_thm_tbl.java index 24f26361c..867fe32ae 100644 --- a/400_xowa/src/gplx/fsdb/data/Fsd_thm_tbl.java +++ b/400_xowa/src/gplx/fsdb/data/Fsd_thm_tbl.java @@ -18,9 +18,9 @@ along with this program. If not, see . package gplx.fsdb.data; import gplx.*; import gplx.fsdb.*; import gplx.dbs.*; import gplx.fsdb.meta.*; import gplx.xowa.files.*; public class Fsd_thm_tbl implements Rls_able { - private final String tbl_name; private final Dbmeta_fld_list flds = Dbmeta_fld_list.new_(); - private final String fld_id, fld_owner_id, fld_w, fld_h, fld_time, fld_page, fld_bin_db_id, fld_size, fld_modified, fld_hash; - private final Db_conn conn; private Db_stmt stmt_insert, stmt_select_by_fil_exact, stmt_select_by_fil_near; private int mnt_id; private boolean schema_thm_page; + public final String tbl_name; public final Dbmeta_fld_list flds = new Dbmeta_fld_list(); + public final String fld_id, fld_owner_id, fld_w, fld_h, fld_time, fld_page, fld_bin_db_id, fld_size, fld_modified, fld_hash; + public final Db_conn conn; private Db_stmt stmt_insert, stmt_select_by_fil_exact, stmt_select_by_fil_near; private int mnt_id; private boolean schema_thm_page; public Fsd_thm_tbl(Db_conn conn, boolean schema_is_1, int mnt_id, boolean schema_thm_page) { this.conn = conn; this.mnt_id = mnt_id; this.schema_thm_page = schema_thm_page; this.tbl_name = schema_is_1 ? "fsdb_xtn_thm" : "fsdb_thm"; @@ -54,22 +54,25 @@ public class Fsd_thm_tbl implements Rls_able { } public void Insert(int id, int thm_owner_id, int width, int height, double thumbtime, int page, int bin_db_id, long size) { if (stmt_insert == null) stmt_insert = conn.Stmt_insert(tbl_name, flds); - stmt_insert.Clear() + this.Insert(stmt_insert, id, thm_owner_id, width, height, thumbtime, page, bin_db_id, size, Modified_null_str, Hash_null); + } + public void Insert(Db_stmt stmt, int id, int thm_owner_id, int width, int height, double thumbtime, int page, int bin_db_id, long size, String modified, String hash_md5) { + stmt.Clear() .Val_int(fld_id, id) .Val_int(fld_owner_id, thm_owner_id) .Val_int(fld_w, width) .Val_int(fld_h, height); if (schema_thm_page) { - stmt_insert.Val_double (fld_time, Xof_lnki_time.Db_save_double(thumbtime)); - stmt_insert.Val_int (fld_page, Xof_lnki_page.Db_save_int(page)); + stmt.Val_double (fld_time, Xof_lnki_time.Db_save_double(thumbtime)); + stmt.Val_int (fld_page, Xof_lnki_page.Db_save_int(page)); } else - stmt_insert.Val_int (fld_time, Xof_lnki_time.Db_save_int(thumbtime)); - stmt_insert + stmt.Val_int (fld_time, Xof_lnki_time.Db_save_int(thumbtime)); + stmt .Val_int(fld_bin_db_id, bin_db_id) .Val_long(fld_size, size) - .Val_str(fld_modified, Modified_null_str) - .Val_str(fld_hash, Hash_null) + .Val_str(fld_modified, modified) + .Val_str(fld_hash, hash_md5) .Exec_insert(); } public boolean Select_itm_by_w_exact(int dir_id, int fil_id, Fsd_thm_itm thm) { @@ -92,7 +95,7 @@ public class Fsd_thm_tbl implements Rls_able { } public boolean Select_itm_by_w_near(int dir_id, int fil_id, Fsd_thm_itm thm) { if (stmt_select_by_fil_near == null) stmt_select_by_fil_near = conn.Stmt_select(tbl_name, flds, fld_owner_id); - List_adp list = List_adp_.new_(); + List_adp list = List_adp_.New(); Db_rdr rdr = stmt_select_by_fil_near.Clear().Crt_int(fld_owner_id, fil_id).Exec_select__rls_manual(); try { while (rdr.Move_next()) { @@ -104,7 +107,7 @@ public class Fsd_thm_tbl implements Rls_able { } finally {rdr.Rls();} } - private boolean Ctor_by_load(Fsd_thm_itm itm, Db_rdr rdr, int dir_id) { + public boolean Ctor_by_load(Fsd_thm_itm itm, Db_rdr rdr, int dir_id) { int thm_id = rdr.Read_int(fld_id); int fil_id = rdr.Read_int(fld_owner_id); int w = rdr.Read_int(fld_w); @@ -126,7 +129,7 @@ public class Fsd_thm_tbl implements Rls_able { itm.Ctor(mnt_id, dir_id, fil_id, thm_id, bin_db_id, w, h, time, page, size, modified, hash); return true; } - public static final DateAdp Modified_null = null; + public static final DateAdp Modified_null = null; public static final String Hash_null = "", Modified_null_str = ""; public static boolean Match_nearest(List_adp list, Fsd_thm_itm thm, boolean schema_thm_page) { int len = list.Count(); if (len == 0) return Bool_.N; diff --git a/400_xowa/src/gplx/fsdb/data/Fsd_thm_tbl_tst.java b/400_xowa/src/gplx/fsdb/data/Fsd_thm_tbl_tst.java index 6594fbd08..1f2b55fe5 100644 --- a/400_xowa/src/gplx/fsdb/data/Fsd_thm_tbl_tst.java +++ b/400_xowa/src/gplx/fsdb/data/Fsd_thm_tbl_tst.java @@ -34,7 +34,7 @@ public class Fsd_thm_tbl_tst { } } class Fsd_thm_tbl_fxt { - private final List_adp list = List_adp_.new_(); + private final List_adp list = List_adp_.New(); public void Clear() {list.Clear();} public Fsd_thm_itm Make(int w) { double time = gplx.xowa.files.Xof_lnki_time.Null; diff --git a/400_xowa/src/gplx/fsdb/meta/Fsm_atr_fil.java b/400_xowa/src/gplx/fsdb/meta/Fsm_atr_fil.java index 6ba6ba3f7..a9577d2ff 100644 --- a/400_xowa/src/gplx/fsdb/meta/Fsm_atr_fil.java +++ b/400_xowa/src/gplx/fsdb/meta/Fsm_atr_fil.java @@ -16,12 +16,12 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.fsdb.meta; import gplx.*; import gplx.fsdb.*; -import gplx.core.primitives.*; import gplx.core.caches.*; import gplx.core.ios.*; +import gplx.core.primitives.*; import gplx.core.caches.*; import gplx.core.ios.*; import gplx.core.ios.streams.*; import gplx.dbs.*; import gplx.dbs.engines.sqlite.*; import gplx.fsdb.data.*; public class Fsm_atr_fil { - private final Fsm_mnt_itm mnt_itm; private final int mnt_id; + private final Fsm_mnt_itm mnt_itm; private final int mnt_id; private Fsd_dir_tbl tbl_dir; private Fsd_fil_tbl tbl_fil; private Fsd_thm_tbl tbl_thm; - private final Gfo_cache_mgr_bry dir_cache = new Gfo_cache_mgr_bry(); private Gfo_cache_mgr_bry fil_cache; private Bry_bfr fil_cache_key_bfr; + private final Gfo_cache_mgr_bry dir_cache = new Gfo_cache_mgr_bry(); private Gfo_cache_mgr_bry fil_cache; private Bry_bfr fil_cache_key_bfr; public Fsm_atr_fil(Fsm_mnt_itm mnt_itm, int id, String url_rel, Db_conn conn, boolean schema_is_1, boolean schema_thm_page) { this.mnt_itm = mnt_itm; this.mnt_id = mnt_itm.Id(); this.id = id; this.url_rel = url_rel; this.conn = conn; @@ -29,9 +29,9 @@ public class Fsm_atr_fil { this.tbl_fil = new Fsd_fil_tbl(conn, schema_is_1, mnt_id); this.tbl_thm = new Fsd_thm_tbl(conn, schema_is_1, mnt_id, schema_thm_page); } - public int Id() {return id;} private final int id; - public String Url_rel() {return url_rel;} private final String url_rel; - public Db_conn Conn() {return conn;} private final Db_conn conn; + public int Id() {return id;} private final int id; + public String Url_rel() {return url_rel;} private final String url_rel; + public Db_conn Conn() {return conn;} private final Db_conn conn; public Fsd_fil_itm Select_fil_or_null(byte[] dir, byte[] fil) { int dir_id = Get_dir_id_or_neg1(dir); return dir_id == Int_.Neg1 ? Fsd_fil_itm.Null : tbl_fil.Select_or_null(dir_id, fil); @@ -61,7 +61,7 @@ public class Fsm_atr_fil { } public void Fil_cache_enabled_y_() { fil_cache = new Gfo_cache_mgr_bry(); - fil_cache_key_bfr = Bry_bfr.reset_(255); + fil_cache_key_bfr = Bry_bfr_.Reset(255); tbl_fil.Select_all(fil_cache_key_bfr, fil_cache); } private int Get_dir_id_or_neg1(byte[] dir_bry) { @@ -70,7 +70,7 @@ public class Fsm_atr_fil { Fsd_dir_itm itm = tbl_dir.Select_or_null(dir_bry); // try db if (itm == Fsd_dir_itm.Null) return -1; // not in db int dir_id = itm.Dir_id(); - dir_cache.Add(dir_bry, Int_obj_ref.new_(dir_id)); // add to mem + dir_cache.Add(dir_bry, Int_obj_ref.New(dir_id)); // add to mem return dir_id; } else @@ -81,7 +81,7 @@ public class Fsm_atr_fil { if (rv == -1) { rv = mnt_itm.Next_id(); tbl_dir.Insert(rv, dir_bry, Fsd_dir_itm.Owner_root); - dir_cache.Add(dir_bry, Int_obj_ref.new_(rv)); + dir_cache.Add(dir_bry, Int_obj_ref.New(rv)); } return rv; } diff --git a/400_xowa/src/gplx/fsdb/meta/Fsm_atr_tbl.java b/400_xowa/src/gplx/fsdb/meta/Fsm_atr_tbl.java index 839364173..1af8c3d32 100644 --- a/400_xowa/src/gplx/fsdb/meta/Fsm_atr_tbl.java +++ b/400_xowa/src/gplx/fsdb/meta/Fsm_atr_tbl.java @@ -18,9 +18,9 @@ along with this program. If not, see . package gplx.fsdb.meta; import gplx.*; import gplx.fsdb.*; import gplx.dbs.*; import gplx.dbs.qrys.*; public class Fsm_atr_tbl { - private final String tbl_name; private final Dbmeta_fld_list flds = Dbmeta_fld_list.new_(); - private final String fld_uid, fld_url; - private final Db_conn conn; + public final String tbl_name; public final Dbmeta_fld_list flds = new Dbmeta_fld_list(); + private final String fld_uid, fld_url; + private final Db_conn conn; public Fsm_atr_tbl(Db_conn conn, boolean schema_is_1) { this.conn = conn; String fld_prefix = ""; diff --git a/400_xowa/src/gplx/fsdb/meta/Fsm_bin_fil.java b/400_xowa/src/gplx/fsdb/meta/Fsm_bin_fil.java index 82ee08652..309018bd4 100644 --- a/400_xowa/src/gplx/fsdb/meta/Fsm_bin_fil.java +++ b/400_xowa/src/gplx/fsdb/meta/Fsm_bin_fil.java @@ -16,25 +16,26 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.fsdb.meta; import gplx.*; import gplx.fsdb.*; -import gplx.core.ios.*; import gplx.dbs.*; +import gplx.core.ios.*; import gplx.core.ios.streams.*; import gplx.dbs.*; import gplx.fsdb.data.*; public class Fsm_bin_fil { - private final Fsd_bin_tbl tbl; + private final Fsd_bin_tbl tbl; public Fsm_bin_fil(boolean schema_is_1, int id, Io_url url, String url_rel, Db_conn conn, long bin_len) { this.id = id; this.url = url; this.url_rel = url_rel; this.conn = conn; this.bin_len = bin_len; this.tbl = new Fsd_bin_tbl(conn, schema_is_1); } - public int Id() {return id;} private final int id; + public int Id() {return id;} private final int id; public Io_url Url() {return url;} private Io_url url; - public String Url_rel() {return url_rel;} private final String url_rel; + public String Url_rel() {return url_rel;} private final String url_rel; public long Bin_len() {return bin_len;} public void Bin_len_(long v) {bin_len = v;} private long bin_len; - public Db_conn Conn() {return conn;} private final Db_conn conn; - public boolean Select_to_url(int id, Io_url url) {return tbl.Select_to_url(id, url);} + public Db_conn Conn() {return conn;} private final Db_conn conn; + public boolean Select_to_url(int id, Io_url url) {return tbl.Select_to_url(id, url);} public Io_stream_rdr Select_as_rdr(int id) {return tbl.Select_as_rdr(id);} - public void Insert(int bin_id, byte owner_tid, long rdr_len, gplx.core.ios.Io_stream_rdr rdr) { + public Fsd_bin_itm Select_as_itm(int id) {return tbl.Select_as_itm(id);} + public void Insert(int bin_id, byte owner_tid, long rdr_len, gplx.core.ios.streams.Io_stream_rdr rdr) { tbl.Insert_rdr(bin_id, owner_tid, rdr_len, rdr); Bin_len_(bin_len + rdr_len); } - public static final Fsm_bin_fil[] Ary_empty = new Fsm_bin_fil[0]; + public static final Fsm_bin_fil[] Ary_empty = new Fsm_bin_fil[0]; public static final long Bin_len_null = 0; } diff --git a/400_xowa/src/gplx/fsdb/meta/Fsm_bin_mgr.java b/400_xowa/src/gplx/fsdb/meta/Fsm_bin_mgr.java index b64948a6d..7ebd27d93 100644 --- a/400_xowa/src/gplx/fsdb/meta/Fsm_bin_mgr.java +++ b/400_xowa/src/gplx/fsdb/meta/Fsm_bin_mgr.java @@ -16,45 +16,50 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.fsdb.meta; import gplx.*; import gplx.fsdb.*; -import gplx.core.ios.*; import gplx.dbs.*; +import gplx.core.ios.*; import gplx.core.ios.streams.*; import gplx.dbs.*; public class Fsm_bin_mgr { - private final Fsdb_db_mgr core_mgr; private final int mnt_id; private final Fsm_bin_tbl tbl; - private Fsm_bin_fil[] dbs__ary = Fsm_bin_fil.Ary_empty; private int dbs__ary_len = 0; private Fsm_bin_fil nth_db; + private final Fsdb_db_mgr core_mgr; private final int mnt_id; private final Fsm_bin_tbl tbl; + private final Ordered_hash db_hash = Ordered_hash_.New(); + private Fsm_bin_fil nth_db; public Fsm_bin_mgr(Fsdb_db_mgr core_mgr, Db_conn conn, int mnt_id) { this.core_mgr = core_mgr; this.mnt_id = mnt_id; this.tbl = new Fsm_bin_tbl(conn, core_mgr.File__schema_is_1(), mnt_id); } public void Ctor_by_load() { - this.dbs__ary = tbl.Select_all(core_mgr); - this.dbs__ary_len = dbs__ary.length; - if (dbs__ary_len > 0) this.nth_db = dbs__ary[dbs__ary_len - 1]; + Fsm_bin_fil[] db_ary = tbl.Select_all(core_mgr); + int len = db_ary.length; + for (int i = 0; i < len; ++i) { + Fsm_bin_fil db_fil = db_ary[i]; + db_hash.Add(db_fil.Id(), db_fil); + } + if (len > 0) this.nth_db = db_ary[len - 1]; } - public int Dbs__len() {return dbs__ary_len;} - public Fsm_bin_fil Dbs__get_nth() {return nth_db;} - public Fsm_bin_fil Dbs__get_at(int i) {return dbs__ary[i];} - public Fsm_bin_fil Dbs__make(String file_name) { + public int Dbs__len() {return db_hash.Len();} + public Fsm_bin_fil Dbs__get_nth() {return nth_db;} + public Fsm_bin_fil Dbs__get_at(int i) {return (Fsm_bin_fil)db_hash.Get_at(i);} + public Fsm_bin_fil Dbs__get_by_or_null(int i) {return (Fsm_bin_fil)db_hash.Get_by(i);} + public Fsm_bin_fil Dbs__make(String file_name) {return Dbs__make(db_hash.Len(), file_name);} + public Fsm_bin_fil Dbs__make(int id, String file_name) { Fsdb_db_file db = core_mgr.File__bin_file__new(mnt_id, file_name); - Fsm_bin_fil rv = new Fsm_bin_fil(core_mgr.File__schema_is_1(), dbs__ary_len, db.Url(), db.Url().NameAndExt(), db.Conn(), Fsm_bin_fil.Bin_len_null); - tbl.Insert(rv.Id(), rv.Url_rel()); - Dbs__add(rv); + Fsm_bin_fil rv = new Fsm_bin_fil(core_mgr.File__schema_is_1(), id, db.Url(), db.Url().NameAndExt(), db.Conn(), Fsm_bin_fil.Bin_len_null); + tbl.Insert(id, rv.Url_rel()); + db_hash.Add(id, rv); + this.nth_db = rv; return rv; } public void Insert(int db_id, int bin_id, byte owner_tid, long bin_len, Io_stream_rdr bin_rdr) { - Fsm_bin_fil fil = dbs__ary[db_id]; + Fsm_bin_fil fil = (Fsm_bin_fil)db_hash.Get_by(db_id); + fil.Insert(bin_id, owner_tid, bin_len, bin_rdr); fil.Insert(bin_id, owner_tid, bin_len, bin_rdr); - dbs__ary[db_id].Insert(bin_id, owner_tid, bin_len, bin_rdr); } public void Txn_bgn() { - for (int i = 0; i < dbs__ary_len; ++i) - dbs__ary[i].Conn().Txn_bgn("fsdb__meta__bin"); + int len = db_hash.Len(); + for (int i = 0; i < len; ++i) + this.Dbs__get_at(i).Conn().Txn_bgn("fsdb__meta__bin"); } public void Txn_end() { - for (int i = 0; i < dbs__ary_len; ++i) - dbs__ary[i].Conn().Txn_end(); - } - private void Dbs__add(Fsm_bin_fil fil) { - this.dbs__ary = (Fsm_bin_fil[])Array_.Resize(dbs__ary, dbs__ary_len + 1); - this.dbs__ary[dbs__ary_len++] = fil; - this.nth_db = fil; + int len = db_hash.Len(); + for (int i = 0; i < len; ++i) + this.Dbs__get_at(i).Conn().Txn_end(); } } diff --git a/400_xowa/src/gplx/fsdb/meta/Fsm_bin_tbl.java b/400_xowa/src/gplx/fsdb/meta/Fsm_bin_tbl.java index 75c3945ea..77e26ed09 100644 --- a/400_xowa/src/gplx/fsdb/meta/Fsm_bin_tbl.java +++ b/400_xowa/src/gplx/fsdb/meta/Fsm_bin_tbl.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.fsdb.meta; import gplx.*; import gplx.fsdb.*; import gplx.dbs.*; import gplx.dbs.qrys.*; public class Fsm_bin_tbl { - private final String tbl_name; private final Dbmeta_fld_list flds = Dbmeta_fld_list.new_(); + private final String tbl_name; private final Dbmeta_fld_list flds = new Dbmeta_fld_list(); private final String fld_uid, fld_url, fld_bin_len, fld_bin_max; private final Db_conn conn; private int mnt_id; public Fsm_bin_tbl(Db_conn conn, boolean schema_is_1, int mnt_id) { @@ -42,7 +42,7 @@ public class Fsm_bin_tbl { conn.Stmt_insert(tbl_name, flds).Crt_int(fld_uid, id).Val_str(fld_url, url_rel).Val_long(fld_bin_len, 0).Val_long(fld_bin_max, 0).Exec_insert(); } public Fsm_bin_fil[] Select_all(Fsdb_db_mgr db_conn_mgr) { - List_adp rv = List_adp_.new_(); + List_adp rv = List_adp_.New(); Db_rdr rdr = conn.Stmt_select_order(tbl_name, flds, Dbmeta_fld_itm.Str_ary_empty, fld_uid).Clear().Exec_select__rls_auto(); try { while (rdr.Move_next()) { diff --git a/400_xowa/src/gplx/fsdb/meta/Fsm_cfg_mgr.java b/400_xowa/src/gplx/fsdb/meta/Fsm_cfg_mgr.java index 185be80f8..1ebe9434e 100644 --- a/400_xowa/src/gplx/fsdb/meta/Fsm_cfg_mgr.java +++ b/400_xowa/src/gplx/fsdb/meta/Fsm_cfg_mgr.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.fsdb.meta; import gplx.*; import gplx.fsdb.*; import gplx.dbs.*; import gplx.dbs.cfgs.*; import gplx.fsdb.meta.*; public class Fsm_cfg_mgr { - private final Db_cfg_tbl tbl; private final Hash_adp grp_hash = Hash_adp_.new_(); + private final Db_cfg_tbl tbl; private final Hash_adp grp_hash = Hash_adp_.New(); public Fsm_cfg_mgr(Fsdb_db_mgr db_conn_mgr, Db_conn conn) { this.tbl = new Db_cfg_tbl(conn, db_conn_mgr.File__cfg_tbl_name()); } diff --git a/400_xowa/src/gplx/fsdb/meta/Fsm_mnt_itm.java b/400_xowa/src/gplx/fsdb/meta/Fsm_mnt_itm.java index fb88fa12b..6e8c40768 100644 --- a/400_xowa/src/gplx/fsdb/meta/Fsm_mnt_itm.java +++ b/400_xowa/src/gplx/fsdb/meta/Fsm_mnt_itm.java @@ -16,12 +16,12 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.fsdb.meta; import gplx.*; import gplx.fsdb.*; -import gplx.core.ios.*; import gplx.dbs.*; import gplx.fsdb.data.*; +import gplx.core.ios.*; import gplx.core.ios.streams.*; import gplx.dbs.*; import gplx.fsdb.data.*; public class Fsm_mnt_itm { public Fsm_mnt_itm(int id, String name, String url_rel) {this.id = id; this.name = name; this.url_rel = url_rel;} - public int Id() {return id;} private final int id; - public String Name() {return name;} private final String name; - public String Url_rel() {return url_rel;} private final String url_rel; + public int Id() {return id;} private final int id; + public String Name() {return name;} private final String name; + public String Url_rel() {return url_rel;} private final String url_rel; public Fsm_atr_mgr Atr_mgr() {return atr_mgr;} private Fsm_atr_mgr atr_mgr; public Fsm_bin_mgr Bin_mgr() {return bin_mgr;} private Fsm_bin_mgr bin_mgr; public Fsm_cfg_mgr Cfg_mgr() {return cfg_mgr;} private Fsm_cfg_mgr cfg_mgr; @@ -47,7 +47,7 @@ public class Fsm_mnt_itm { int fil_id = atr_fil.Insert_img(rv, dir, fil, ext_id, img_w, img_h, bin_fil.Id(), bin_len, bin_rdr); bin_fil.Insert(fil_id, Fsd_bin_tbl.Owner_tid_fil, bin_len, bin_rdr); } - public void Insert_fil(Fsd_fil_itm rv, Fsm_atr_fil atr_fil, Fsm_bin_fil bin_fil, byte[] dir, byte[] fil, int ext_id, long bin_len, gplx.core.ios.Io_stream_rdr bin_rdr) { + public void Insert_fil(Fsd_fil_itm rv, Fsm_atr_fil atr_fil, Fsm_bin_fil bin_fil, byte[] dir, byte[] fil, int ext_id, long bin_len, gplx.core.ios.streams.Io_stream_rdr bin_rdr) { int fil_id = atr_fil.Insert_fil(rv, dir, fil, ext_id, bin_fil.Id(), bin_len, bin_rdr); bin_fil.Insert(fil_id, Fsd_bin_tbl.Owner_tid_fil, bin_len, bin_rdr); } diff --git a/400_xowa/src/gplx/fsdb/meta/Fsm_mnt_mgr.java b/400_xowa/src/gplx/fsdb/meta/Fsm_mnt_mgr.java index 8b763af0a..d746d8284 100644 --- a/400_xowa/src/gplx/fsdb/meta/Fsm_mnt_mgr.java +++ b/400_xowa/src/gplx/fsdb/meta/Fsm_mnt_mgr.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.fsdb.meta; import gplx.*; import gplx.fsdb.*; import gplx.dbs.*; import gplx.dbs.cfgs.*; import gplx.xowa.files.*; import gplx.xowa.files.fsdb.*; -public class Fsm_mnt_mgr implements GfoInvkAble { +public class Fsm_mnt_mgr implements Gfo_invk { private Db_cfg_tbl cfg_tbl; private Fsm_mnt_tbl mnt_tbl; private Fsm_mnt_itm[] mnt_ary; private int mnt_ary_len = 0; public void Ctor_by_load(Fsdb_db_mgr db_core) { @@ -39,9 +39,9 @@ public class Fsm_mnt_mgr implements GfoInvkAble { public Fsm_mnt_itm Mnts__get_at(int i) {return mnt_ary[i];} public Fsm_mnt_itm Mnts__get_main() {return mnt_ary[Mnt_idx_main];} public Fsm_mnt_itm Mnts__get_insert() {return mnt_ary[insert_idx];} public void Mnts__get_insert_idx_(int v) {insert_idx = v;} private int insert_idx = Mnt_idx_user; - public Fsm_bin_fil Bins__at(int mnt_id, int bin_db_id) {return mnt_ary[mnt_id].Bin_mgr().Dbs__get_at(bin_db_id);} + public Fsm_bin_fil Bins__at(int mnt_id, int bin_db_id) {return mnt_ary[mnt_id].Bin_mgr().Dbs__get_by_or_null(bin_db_id);} public int Patch_upright() {return patch_upright_tid;} private int patch_upright_tid = Xof_patch_upright_tid_.Tid_all; - public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {return GfoInvkAble_.Rv_unhandled;} + public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {return Gfo_invk_.Rv_unhandled;} public static final int Mnt_idx_main = 0, Mnt_idx_user = 1, Insert_to_bin_null = -1; public static void Patch(Db_cfg_tbl cfg_tbl) { cfg_tbl.Upsert_str(Xof_fsdb_mgr_cfg.Grp_xowa, Xof_fsdb_mgr_cfg.Key_gallery_fix_defaults , "y"); diff --git a/400_xowa/src/gplx/fsdb/meta/Fsm_mnt_tbl.java b/400_xowa/src/gplx/fsdb/meta/Fsm_mnt_tbl.java index 1d362bc9a..a292aa4ce 100644 --- a/400_xowa/src/gplx/fsdb/meta/Fsm_mnt_tbl.java +++ b/400_xowa/src/gplx/fsdb/meta/Fsm_mnt_tbl.java @@ -18,9 +18,9 @@ along with this program. If not, see . package gplx.fsdb.meta; import gplx.*; import gplx.fsdb.*; import gplx.dbs.*; public class Fsm_mnt_tbl implements Rls_able { - private final String tbl_name = "fsdb_mnt"; private final Dbmeta_fld_list flds = Dbmeta_fld_list.new_(); - private final String fld_id, fld_name, fld_url; - private final Db_conn conn; + private final String tbl_name = "fsdb_mnt"; private final Dbmeta_fld_list flds = new Dbmeta_fld_list(); + private final String fld_id, fld_name, fld_url; + private final Db_conn conn; public Fsm_mnt_tbl(Db_conn conn, boolean schema_is_1) { this.conn = conn; fld_id = flds.Add_int_pkey ("mnt_id"); @@ -44,7 +44,7 @@ public class Fsm_mnt_tbl implements Rls_able { stmt.Clear().Val_str(fld_name, name).Val_str(fld_url, url).Crt_int(fld_id, id).Exec_update(); } public Fsm_mnt_itm[] Select_all() { - List_adp list = List_adp_.new_(); + List_adp list = List_adp_.New(); Db_rdr rdr = conn.Stmt_select(tbl_name, flds, Dbmeta_fld_itm.Str_ary_empty).Clear().Exec_select__rls_auto(); try { while (rdr.Move_next()) { diff --git a/400_xowa/src/gplx/gfui/Gfui_bnd_parser.java b/400_xowa/src/gplx/gfui/Gfui_bnd_parser.java index 90f62d6f4..c5e2abfd0 100644 --- a/400_xowa/src/gplx/gfui/Gfui_bnd_parser.java +++ b/400_xowa/src/gplx/gfui/Gfui_bnd_parser.java @@ -18,19 +18,19 @@ along with this program. If not, see . package gplx.gfui; import gplx.*; import gplx.core.bits.*; public class Gfui_bnd_parser { - private Bry_bfr tmp_bfr = Bry_bfr.reset_(32); + private Bry_bfr tmp_bfr = Bry_bfr_.Reset(32); private Hash_adp_bry gfui_regy = Hash_adp_bry.ci_a7() , norm_regy = Hash_adp_bry.ci_a7() ; - private static final Gfui_bnd_tkn + private static final Gfui_bnd_tkn Itm_sym_plus = new_sym_(Gfui_bnd_tkn.Tid_sym_plus , new byte[] {Byte_ascii.Plus}) , Itm_sym_pipe = new_sym_(Gfui_bnd_tkn.Tid_sym_pipe , new byte[] {Byte_ascii.Pipe}) , Itm_sym_comma = new_sym_(Gfui_bnd_tkn.Tid_sym_comma , new byte[] {Byte_ascii.Comma}) // , Itm_sym_ws = new_sym_(Gfui_bnd_tkn.Tid_sym_ws , Bry_.Empty) , Itm_sym_eos = new_sym_(Gfui_bnd_tkn.Tid_sym_eos , Bry_.Empty) ; - private static final Gfui_bnd_tkn[] Mod_ary = new Gfui_bnd_tkn[] + private static final Gfui_bnd_tkn[] Mod_ary = new Gfui_bnd_tkn[] { null , new_mod_(Gfui_bnd_tkn.Tid_mod_c , "mod.c" , "Ctrl") , new_mod_(Gfui_bnd_tkn.Tid_mod_a , "mod.a" , "Alt") @@ -41,7 +41,7 @@ public class Gfui_bnd_parser { , new_mod_(Gfui_bnd_tkn.Tid_mod_cas , "mod.cas" , "Ctrl + Alt + Shift") }; private byte[] src; private int src_len; - private List_adp tkns = List_adp_.new_(); private int mod_val = Mod_val_null; + private List_adp tkns = List_adp_.New(); private int mod_val = Mod_val_null; public String Xto_norm(String src_str) {return Convert(Bool_.Y, src_str);} public String Xto_gfui(String src_str) {return Convert(Bool_.N, src_str);} private String Convert(boolean src_is_gfui, String src_str) { @@ -265,10 +265,10 @@ class Gfui_bnd_tkn { public Gfui_bnd_tkn(byte tid, int keycode, byte[] gfui, byte[] norm) { this.tid = tid; this.keycode = keycode; ; this.bry_gfui = gfui; this.bry_norm = norm; } - public byte Tid() {return tid;} private final byte tid; - public int Keycode() {return keycode;} private final int keycode; - public byte[] Bry_gfui() {return bry_gfui;} private final byte[] bry_gfui; - public byte[] Bry_norm() {return bry_norm;} private final byte[] bry_norm; + public byte Tid() {return tid;} private final byte tid; + public int Keycode() {return keycode;} private final int keycode; + public byte[] Bry_gfui() {return bry_gfui;} private final byte[] bry_gfui; + public byte[] Bry_norm() {return bry_norm;} private final byte[] bry_norm; public void Write(Bry_bfr bfr, boolean src_is_gfui) { if (keycode != Gfui_bnd_tkn.Keycode_null) { if (src_is_gfui) @@ -313,5 +313,5 @@ class Gfui_bnd_tkn { , Tid_key = 12 ; public static final int Keycode_null = 0; - private static final byte[] Bry_key_prefix = Bry_.new_a7("key."); + private static final byte[] Bry_key_prefix = Bry_.new_a7("key."); } diff --git a/400_xowa/src/gplx/langs/dsvs/Dsv_tbl_parser.java b/400_xowa/src/gplx/langs/dsvs/Dsv_tbl_parser.java index 4119cc0b1..822759080 100644 --- a/400_xowa/src/gplx/langs/dsvs/Dsv_tbl_parser.java +++ b/400_xowa/src/gplx/langs/dsvs/Dsv_tbl_parser.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.langs.dsvs; import gplx.*; import gplx.langs.*; -public class Dsv_tbl_parser implements GfoInvkAble, Rls_able { +public class Dsv_tbl_parser implements Gfo_invk, Rls_able { private Dsv_wkr_base mgr; private Dsv_fld_parser[] fld_parsers = new Dsv_fld_parser[2]; private int fld_parsers_len = 2; public byte[] Src() {return src;} private byte[] src; @@ -77,7 +77,7 @@ public class Dsv_tbl_parser implements GfoInvkAble, Rls_able { } public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_load_by_str)) Parse(m.ReadBry("v")); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String Invk_load_by_str = "load_by_str"; } diff --git a/400_xowa/src/gplx/langs/dsvs/Dsv_tbl_parser_int_tst.java b/400_xowa/src/gplx/langs/dsvs/Dsv_tbl_parser_int_tst.java index 7b68d27df..6d3b663cf 100644 --- a/400_xowa/src/gplx/langs/dsvs/Dsv_tbl_parser_int_tst.java +++ b/400_xowa/src/gplx/langs/dsvs/Dsv_tbl_parser_int_tst.java @@ -38,7 +38,7 @@ class Mok_int_itm implements To_str_able { } class Mok_int_mgr extends Mok_mgr_base { public void Clear() {itms.Clear();} - @Override public To_str_able[] Itms() {return (To_str_able[])itms.To_ary(To_str_able.class);} private List_adp itms = List_adp_.new_(); + @Override public To_str_able[] Itms() {return (To_str_able[])itms.To_ary(To_str_able.class);} private List_adp itms = List_adp_.New(); private String fld_0; private int fld_1, fld_2; @Override public Dsv_fld_parser[] Fld_parsers() { diff --git a/400_xowa/src/gplx/langs/dsvs/Dsv_tbl_parser_str_tst.java b/400_xowa/src/gplx/langs/dsvs/Dsv_tbl_parser_str_tst.java index e7e53b014..7e8404fac 100644 --- a/400_xowa/src/gplx/langs/dsvs/Dsv_tbl_parser_str_tst.java +++ b/400_xowa/src/gplx/langs/dsvs/Dsv_tbl_parser_str_tst.java @@ -90,8 +90,8 @@ class Mok_str_mgr extends Mok_mgr_base { this.flds_len = flds_len; } public void Clear() {itms.Clear();} - @Override public To_str_able[] Itms() {return (To_str_able[])itms.To_ary(To_str_able.class);} private List_adp itms = List_adp_.new_(); - private List_adp flds = List_adp_.new_(); + @Override public To_str_able[] Itms() {return (To_str_able[])itms.To_ary(To_str_able.class);} private List_adp itms = List_adp_.New(); + private List_adp flds = List_adp_.New(); @Override public boolean Write_bry(Dsv_tbl_parser parser, int fld_idx, byte[] src, int bgn, int end) { flds.Add(String_.new_u8(src, bgn, end)); return true; diff --git a/400_xowa/src/gplx/langs/dsvs/Dsv_wkr_base.java b/400_xowa/src/gplx/langs/dsvs/Dsv_wkr_base.java index a5244e682..0dce73daa 100644 --- a/400_xowa/src/gplx/langs/dsvs/Dsv_wkr_base.java +++ b/400_xowa/src/gplx/langs/dsvs/Dsv_wkr_base.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.langs.dsvs; import gplx.*; import gplx.langs.*; -public abstract class Dsv_wkr_base implements GfoInvkAble { +public abstract class Dsv_wkr_base implements Gfo_invk { public abstract Dsv_fld_parser[] Fld_parsers(); public byte[] Src() {return src;} private byte[] src; public abstract void Commit_itm(Dsv_tbl_parser parser, int pos); @@ -35,7 +35,7 @@ public abstract class Dsv_wkr_base implements GfoInvkAble { @gplx.Virtual public void Load_by_bry_end() {} public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_load_by_str)) Load_by_bry(m.ReadBry("v")); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } public static final String Invk_load_by_str = "load_by_str"; diff --git a/400_xowa/src/gplx/langs/gfs/Gfs_parser_ctx.java b/400_xowa/src/gplx/langs/gfs/Gfs_parser_ctx.java index 7c8d0631c..16eb0eb7e 100644 --- a/400_xowa/src/gplx/langs/gfs/Gfs_parser_ctx.java +++ b/400_xowa/src/gplx/langs/gfs/Gfs_parser_ctx.java @@ -26,7 +26,7 @@ class Gfs_parser_ctx { public Gfs_nde Cur_nde() {return cur_nde;} Gfs_nde cur_nde; public int Nxt_pos() {return nxt_pos;} private int nxt_pos; public Gfs_lxr Nxt_lxr() {return nxt_lxr;} Gfs_lxr nxt_lxr; - public Bry_bfr Tmp_bfr() {return tmp_bfr;} private Bry_bfr tmp_bfr = Bry_bfr.new_(); + public Bry_bfr Tmp_bfr() {return tmp_bfr;} private Bry_bfr tmp_bfr = Bry_bfr_.New(); public void Process_eos() {} public void Process_lxr(int nxt_pos, Gfs_lxr nxt_lxr) {this.nxt_pos = nxt_pos; this.nxt_lxr = nxt_lxr;} public void Process_null(int cur_pos) {this.nxt_pos = cur_pos; this.nxt_lxr = null;} @@ -55,10 +55,10 @@ class Gfs_parser_ctx { return nde; } public void Cur_nde_from_stack() {cur_nde = (Gfs_nde)nodes.Get_at_last();} - public void Stack_add() {nodes.Add(cur_nde);} List_adp nodes = List_adp_.new_(); + public void Stack_add() {nodes.Add(cur_nde);} List_adp nodes = List_adp_.New(); public void Stack_pop(int pos) { if (nodes.Count() < 2) err_mgr.Fail_nde_stack_empty(this, pos); // NOTE: need at least 2 items; 1 to pop and 1 to set as current - List_adp_.DelAt_last(nodes); + List_adp_.Del_at_last(nodes); Cur_nde_from_stack(); } public Gfs_err_mgr Err_mgr() {return err_mgr;} Gfs_err_mgr err_mgr = new Gfs_err_mgr(); @@ -85,7 +85,7 @@ class Gfs_err_mgr { tmp_fail_args.Add("excerpt_end", Fail_excerpt_end(src, src_len, pos)); tmp_fail_args.Add("pos" , pos); } - public static final String Fail_msg_invalid_lxr = "invalid character", Fail_msg_unknown_char = "unknown char", Fail_msg_eos = "end of stream", Fail_msg_nde_stack_empty = "node stack empty"; + public static final String Fail_msg_invalid_lxr = "invalid character", Fail_msg_unknown_char = "unknown char", Fail_msg_eos = "end of stream", Fail_msg_nde_stack_empty = "node stack empty"; String Fail_msg(String type, Keyval_list fail_args) { tmp_fail_bfr.Add_str_u8(type).Add_byte(Byte_ascii.Colon); int len = fail_args.Count(); @@ -98,7 +98,7 @@ class Gfs_err_mgr { } return tmp_fail_bfr.To_str_and_clear(); } - Bry_bfr tmp_fail_bfr = Bry_bfr.reset_(255); + Bry_bfr tmp_fail_bfr = Bry_bfr_.Reset(255); Keyval_list tmp_fail_args = new Keyval_list(); private static int excerpt_len = 50; String Fail_excerpt_bgn(byte[] src, int src_len, int pos) { @@ -121,5 +121,5 @@ class Gfs_err_mgr { default: bfr.Add_byte(b); break; } } - } static final byte[] Esc_nl = Bry_.new_a7("\\n"), Esc_cr = Bry_.new_a7("\\r"), Esc_tab = Bry_.new_a7("\\t"); + } static final byte[] Esc_nl = Bry_.new_a7("\\n"), Esc_cr = Bry_.new_a7("\\r"), Esc_tab = Bry_.new_a7("\\t"); } diff --git a/400_xowa/src/gplx/langs/gfs/Gfs_parser_tst.java b/400_xowa/src/gplx/langs/gfs/Gfs_parser_tst.java index 5aa1c927b..c54851ef2 100644 --- a/400_xowa/src/gplx/langs/gfs/Gfs_parser_tst.java +++ b/400_xowa/src/gplx/langs/gfs/Gfs_parser_tst.java @@ -140,7 +140,7 @@ class Gfs_parser_fxt { byte[] src_bry = Bry_.new_u8(src_str); Gfs_nde root = parser.Parse(src_bry); Tfds.Eq_str_lines(To_str(null, expd), To_str(src_bry, root.Subs_to_ary())); - } private Bry_bfr tmp_bfr = Bry_bfr.new_(), path_bfr = Bry_bfr.new_(); Gfs_parser parser = new Gfs_parser(); + } private Bry_bfr tmp_bfr = Bry_bfr_.New(), path_bfr = Bry_bfr_.New(); Gfs_parser parser = new Gfs_parser(); public void Test_parse_fail(String src_str, String expd_err) { byte[] src_bry = Bry_.new_u8(src_str); try {parser.Parse(src_bry);} @@ -192,5 +192,5 @@ class Gfs_parser_fxt { bfr.Add(val); bfr.Add_byte_nl(); } - private static final byte[] Atr_name = Bry_.new_a7("name="); + private static final byte[] Atr_name = Bry_.new_a7("name="); } diff --git a/400_xowa/src/gplx/langs/gfs/Gfs_wtr.java b/400_xowa/src/gplx/langs/gfs/Gfs_wtr.java index 9ce824a7a..8713c9f82 100644 --- a/400_xowa/src/gplx/langs/gfs/Gfs_wtr.java +++ b/400_xowa/src/gplx/langs/gfs/Gfs_wtr.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.langs.gfs; import gplx.*; import gplx.langs.*; public class Gfs_wtr { public byte Quote_char() {return quote_char;} public Gfs_wtr Quote_char_(byte v) {quote_char = v; return this;} private byte quote_char = Byte_ascii.Apos; - public Bry_bfr Bfr() {return bfr;} private Bry_bfr bfr = Bry_bfr.reset_(255); + public Bry_bfr Bfr() {return bfr;} private Bry_bfr bfr = Bry_bfr_.Reset(255); public void Add_grp_bgn(byte[] key) { bfr.Add(key); // key bfr.Add_byte(Byte_ascii.Curly_bgn); // { diff --git a/400_xowa/src/gplx/langs/htmls/Gfh_nde.java b/400_xowa/src/gplx/langs/htmls/Gfh_nde.java index 9615d5a59..c907a2af2 100644 --- a/400_xowa/src/gplx/langs/htmls/Gfh_nde.java +++ b/400_xowa/src/gplx/langs/htmls/Gfh_nde.java @@ -51,7 +51,7 @@ public class Gfh_nde { return null; } byte[] Atrs_vals_by_pos(byte[] src, int quote_byte, int bgn, int end) { - Bry_bfr tmp_bfr = Bry_bfr.new_(); + Bry_bfr tmp_bfr = Bry_bfr_.New(); boolean dirty = false; for (int i = bgn; i < end; i++) { byte b = src[i]; diff --git a/400_xowa/src/gplx/langs/htmls/Gfh_parser.java b/400_xowa/src/gplx/langs/htmls/Gfh_parser.java index cc3a042f6..73cbe52c1 100644 --- a/400_xowa/src/gplx/langs/htmls/Gfh_parser.java +++ b/400_xowa/src/gplx/langs/htmls/Gfh_parser.java @@ -29,7 +29,7 @@ public class Gfh_parser { public Gfh_nde[] Parse_as_ary(byte[] src, int bgn, int end) {return Parse_as_ary(src, bgn, end, Wildcard, Wildcard);} public Gfh_nde[] Parse_as_ary(byte[] src, int bgn, int end, byte[] find_key, byte[] find_val) { // flattens html into a list of hndes; only used for Options this.src = src; pos = bgn; this.end = end; - List_adp rv = List_adp_.new_(); + List_adp rv = List_adp_.New(); while (pos < end) { byte b = src[pos++]; switch (b) { @@ -159,7 +159,7 @@ public class Gfh_parser { } return Scan_invalid; } - private static final byte Scan_invalid = 0, Scan_valid = 1, Scan_stop = 2; - public static final byte[] Wildcard = null; - public static final String Wildcard_str = null; + private static final byte Scan_invalid = 0, Scan_valid = 1, Scan_stop = 2; + public static final byte[] Wildcard = null; + public static final String Wildcard_str = null; } diff --git a/400_xowa/src/gplx/langs/htmls/Gfh_selecter.java b/400_xowa/src/gplx/langs/htmls/Gfh_selecter.java index 4184001cf..3087332d2 100644 --- a/400_xowa/src/gplx/langs/htmls/Gfh_selecter.java +++ b/400_xowa/src/gplx/langs/htmls/Gfh_selecter.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.langs.htmls; import gplx.*; import gplx.langs.*; public class Gfh_selecter { public static Gfh_nde[] Select(byte[] src, Gfh_nde[] ary, Hash_adp_bry hash) { - List_adp list = List_adp_.new_(); + List_adp list = List_adp_.New(); int xndes_len = ary.length; for (int i = 0; i < xndes_len; i++) { Gfh_nde hnde = ary[i]; diff --git a/400_xowa/src/gplx/langs/htmls/Gfh_utl.java b/400_xowa/src/gplx/langs/htmls/Gfh_utl.java index fde3f9400..38bbfc4c4 100644 --- a/400_xowa/src/gplx/langs/htmls/Gfh_utl.java +++ b/400_xowa/src/gplx/langs/htmls/Gfh_utl.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.langs.htmls; import gplx.*; import gplx.langs.*; import gplx.core.primitives.*; import gplx.core.btries.*; import gplx.langs.htmls.encoders.*; public class Gfh_utl { - private static final Gfo_url_encoder encoder_id = Gfo_url_encoder_.Id; private static final Bry_bfr tmp_bfr = Bry_bfr.reset_(255); + private static final Gfo_url_encoder encoder_id = Gfo_url_encoder_.Id; private static final Bry_bfr tmp_bfr = Bry_bfr_.Reset(255); public static String Encode_id_as_str(byte[] key) {return String_.new_u8(Encode_id_as_bry(key));} public static byte[] Encode_id_as_bry(byte[] key) { byte[] escaped = Escape_html_as_bry(tmp_bfr, key, Bool_.N, Bool_.N, Bool_.N, Bool_.Y, Bool_.Y); @@ -102,7 +102,7 @@ public class Gfh_utl { else return dirty ? bfr.To_bry_and_clear() : bry; } - private static final Btrie_slim_mgr unescape_trie = Btrie_slim_mgr.ci_a7() + private static final Btrie_slim_mgr unescape_trie = Btrie_slim_mgr.ci_a7() .Add_bry_byte(Gfh_entity_.Lt_bry , Byte_ascii.Lt) .Add_bry_byte(Gfh_entity_.Gt_bry , Byte_ascii.Gt) .Add_bry_byte(Gfh_entity_.Amp_bry , Byte_ascii.Amp) @@ -110,7 +110,7 @@ public class Gfh_utl { .Add_bry_byte(Gfh_entity_.Apos_num_bry , Byte_ascii.Apos) ; public static String Unescape_as_str(String src) { - Bry_bfr bfr = Bry_bfr.reset_(255); + Bry_bfr bfr = Bry_bfr_.Reset(255); byte[] bry = Bry_.new_u8(src); Unescape(Bool_.Y, bfr, bry, 0, bry.length, Bool_.Y, Bool_.Y, Bool_.Y, Bool_.Y, Bool_.Y); return bfr.To_str_and_clear(); @@ -178,7 +178,7 @@ public class Gfh_utl { } public static String Replace_apos(String s) {return String_.Replace(s, "'", "\"");} public static String Replace_apos_concat_lines(String... lines) { - Bry_bfr bfr = Bry_bfr.new_(); + Bry_bfr bfr = Bry_bfr_.New(); int len = lines.length; for (int i = 0; i < len; ++i) { String line_str = lines[i]; diff --git a/400_xowa/src/gplx/langs/htmls/Gfh_utl_tst.java b/400_xowa/src/gplx/langs/htmls/Gfh_utl_tst.java index 08bed497f..2265c2e9d 100644 --- a/400_xowa/src/gplx/langs/htmls/Gfh_utl_tst.java +++ b/400_xowa/src/gplx/langs/htmls/Gfh_utl_tst.java @@ -38,7 +38,7 @@ public class Gfh_utl_tst { } } class Gfh_class_fxt { - private Bry_bfr tmp_bfr = Bry_bfr.reset_(255); + private Bry_bfr tmp_bfr = Bry_bfr_.Reset(255); public void Clear() { tmp_bfr.Clear(); } diff --git a/400_xowa/src/gplx/langs/htmls/Gfh_wtr.java b/400_xowa/src/gplx/langs/htmls/Gfh_wtr.java index dd74a5407..fef428a2a 100644 --- a/400_xowa/src/gplx/langs/htmls/Gfh_wtr.java +++ b/400_xowa/src/gplx/langs/htmls/Gfh_wtr.java @@ -17,8 +17,8 @@ along with this program. If not, see . */ package gplx.langs.htmls; import gplx.*; import gplx.langs.*; public class Gfh_wtr { - private Bry_bfr bfr = Bry_bfr.reset_(255); - private List_adp nde_stack = List_adp_.new_(); + private Bry_bfr bfr = Bry_bfr_.Reset(255); + private List_adp nde_stack = List_adp_.New(); public byte Atr_quote() {return atr_quote;} public Gfh_wtr Atr_quote_(byte v) {atr_quote = v; return this;} private byte atr_quote = Byte_ascii.Quote; public Gfh_wtr Nde_full_atrs(byte[] tag, byte[] text, boolean text_escape, byte[]... atrs) { Nde_bgn(tag); diff --git a/400_xowa/src/gplx/langs/htmls/clses/Gfh_class_parser__tst.java b/400_xowa/src/gplx/langs/htmls/clses/Gfh_class_parser__tst.java index 022073b3b..9cfd71a08 100644 --- a/400_xowa/src/gplx/langs/htmls/clses/Gfh_class_parser__tst.java +++ b/400_xowa/src/gplx/langs/htmls/clses/Gfh_class_parser__tst.java @@ -18,12 +18,12 @@ along with this program. If not, see . package gplx.langs.htmls.clses; import gplx.*; import gplx.langs.*; import gplx.langs.htmls.*; import org.junit.*; public class Gfh_class_parser__tst { - private final Gfh_class_parser__fxt fxt = new Gfh_class_parser__fxt(); + private final Gfh_class_parser__fxt fxt = new Gfh_class_parser__fxt(); @Test public void Basic() {fxt.Test__parse("v1" , "v1");} @Test public void Many() {fxt.Test__parse("v1 v2" , "v1", "v2");} } class Gfh_class_parser__fxt { - private final Gfh_class_wkr__list wkr = new Gfh_class_wkr__list(); + private final Gfh_class_wkr__list wkr = new Gfh_class_wkr__list(); public void Test__parse(String src_str, String... expd) { byte[] src_bry = Bry_.new_u8(src_str); String[] actl = wkr.Parse(src_bry, 0, src_bry.length); @@ -31,7 +31,7 @@ class Gfh_class_parser__fxt { } } class Gfh_class_wkr__list implements Gfh_class_parser_wkr { - private final List_adp list = List_adp_.new_(); + private final List_adp list = List_adp_.New(); public boolean On_cls(byte[] src, int atr_idx, int atr_bgn, int atr_end, int val_bgn, int val_end) { String s = String_.new_u8(src, val_bgn, val_end); list.Add(s); // diff --git a/400_xowa/src/gplx/langs/htmls/docs/Gfh_tag.java b/400_xowa/src/gplx/langs/htmls/docs/Gfh_tag.java index 5458da909..bb4acc884 100644 --- a/400_xowa/src/gplx/langs/htmls/docs/Gfh_tag.java +++ b/400_xowa/src/gplx/langs/htmls/docs/Gfh_tag.java @@ -78,7 +78,7 @@ public class Gfh_tag implements Mwh_atr_wkr { byte rv = Gfh_class_.Find_1st(src, cls_atr.Val_bgn(), cls_atr.Val_end(), hash); if (rv == Byte_.Max_value_127) return or; return rv; } - private static final Gfh_style_wkr__val_as_int style_wkr = new Gfh_style_wkr__val_as_int(); + private static final Gfh_style_wkr__val_as_int style_wkr = new Gfh_style_wkr__val_as_int(); public int Atrs__style_get_as_int(byte[] key) { if (atrs_null) Atrs__make(); Gfh_atr rv = (Gfh_atr)atrs_hash.Get_by(Gfh_atr_.Bry__style); if (rv == null) return -1; @@ -117,7 +117,7 @@ public class Gfh_tag implements Mwh_atr_wkr { } public String Atrs__print() { if (atrs_null) Atrs__make(); - Bry_bfr bfr = Bry_bfr.new_(); + Bry_bfr bfr = Bry_bfr_.New(); int len = atrs_hash.Count(); for (int i = 0; i < len; ++i) { Gfh_atr atr = (Gfh_atr)atrs_hash.Get_at(i); diff --git a/400_xowa/src/gplx/langs/htmls/docs/Gfh_tag_rdr.java b/400_xowa/src/gplx/langs/htmls/docs/Gfh_tag_rdr.java index e57d46e22..43cd46b93 100644 --- a/400_xowa/src/gplx/langs/htmls/docs/Gfh_tag_rdr.java +++ b/400_xowa/src/gplx/langs/htmls/docs/Gfh_tag_rdr.java @@ -22,7 +22,7 @@ public class Gfh_tag_rdr { private final Hash_adp_bry name_hash; private final Mwh_atr_parser atr_parser = new Mwh_atr_parser(); private final Gfh_tag tag__tmp__move = new Gfh_tag(), tag__tmp__peek = new Gfh_tag(), tag__eos = new Gfh_tag(), tag__comment = new Gfh_tag(); - private final Int_obj_ref tmp_depth = Int_obj_ref.zero_(); + private final Int_obj_ref tmp_depth = Int_obj_ref.New_zero(); Gfh_tag_rdr(Hash_adp_bry name_hash) {this.name_hash = name_hash;} public byte[] Src() {return src;} private byte[] src; public int Src_end() {return src_end;} private int src_end; diff --git a/400_xowa/src/gplx/langs/htmls/encoders/Gfo_url_encoder_tst.java b/400_xowa/src/gplx/langs/htmls/encoders/Gfo_url_encoder_tst.java index 8034391b7..a98639c33 100644 --- a/400_xowa/src/gplx/langs/htmls/encoders/Gfo_url_encoder_tst.java +++ b/400_xowa/src/gplx/langs/htmls/encoders/Gfo_url_encoder_tst.java @@ -28,7 +28,7 @@ public class Gfo_url_encoder_tst { @Test public void Id__space() {fxt.Encoder_id().Test__bicode("a b", "a_b");} @Test public void Id__err() { byte[] raw = Bry_.new_a7("0%.jpg"); - Bry_bfr tmp_bfr = Bry_bfr.new_(); + Bry_bfr tmp_bfr = Bry_bfr_.New(); fxt.Encoder_id().Encoder().Decode(tmp_bfr, Bool_.N, raw, 0, raw.length); Tfds.Eq("0%.jpg", tmp_bfr.To_str_and_clear()); } diff --git a/400_xowa/src/gplx/langs/htmls/styles/Gfh_style_wkr__ary.java b/400_xowa/src/gplx/langs/htmls/styles/Gfh_style_wkr__ary.java index aba512243..d4c4fa338 100644 --- a/400_xowa/src/gplx/langs/htmls/styles/Gfh_style_wkr__ary.java +++ b/400_xowa/src/gplx/langs/htmls/styles/Gfh_style_wkr__ary.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.langs.htmls.styles; import gplx.*; import gplx.langs.*; import gplx.langs.htmls.*; public class Gfh_style_wkr__ary implements Gfh_style_wkr { - private final List_adp list = List_adp_.new_(); + private final List_adp list = List_adp_.New(); public boolean On_atr(byte[] src, int atr_idx, int atr_val_bgn, int atr_val_end, int itm_bgn, int itm_End, int key_bgn, int key_end, int val_bgn, int val_end) { byte[] key = Bry_.Mid(src, key_bgn, key_end); byte[] val = Bry_.Mid(src, val_bgn, val_end); @@ -28,5 +28,5 @@ public class Gfh_style_wkr__ary implements Gfh_style_wkr { Gfh_style_parser_.Parse(src, src_bgn, src_end, this); return (Gfh_style_itm[])list.To_ary_and_clear(Gfh_style_itm.class); } - public static final Gfh_style_wkr__ary Instance = new Gfh_style_wkr__ary(); Gfh_style_wkr__ary() {} + public static final Gfh_style_wkr__ary Instance = new Gfh_style_wkr__ary(); Gfh_style_wkr__ary() {} } diff --git a/400_xowa/src/gplx/langs/jsons/Json_doc.java b/400_xowa/src/gplx/langs/jsons/Json_doc.java index 41ce3523d..6151c8d83 100644 --- a/400_xowa/src/gplx/langs/jsons/Json_doc.java +++ b/400_xowa/src/gplx/langs/jsons/Json_doc.java @@ -32,7 +32,7 @@ public class Json_doc { public Json_grp Root_grp() {return root_grp;} private Json_grp root_grp; public Json_nde Root_nde() {return root_nde;} private Json_nde root_nde; public Json_ary Root_ary() {return root_ary;} private Json_ary root_ary; - public Bry_bfr Bfr() {return bfr;} private final Bry_bfr bfr = Bry_bfr.new_(); + public Bry_bfr Bfr() {return bfr;} private final Bry_bfr bfr = Bry_bfr_.New(); public Number_parser Utl_num_parser() {return utl_num_parser;} private final Number_parser utl_num_parser = new Number_parser(); public byte[] Tmp_u8_bry() {return tmp_u8_bry;} private final byte[] tmp_u8_bry = new byte[6]; // tmp bry[] for decoding sequences like \u0008 public byte[] Get_val_as_bry_or(byte[] qry_bry, byte[] or) {tmp_qry_bry[0] = qry_bry; return Get_val_as_bry_or(tmp_qry_bry, or);} diff --git a/400_xowa/src/gplx/langs/jsons/Json_doc_srl.java b/400_xowa/src/gplx/langs/jsons/Json_doc_srl.java index 4c6bd298c..03eb9ae91 100644 --- a/400_xowa/src/gplx/langs/jsons/Json_doc_srl.java +++ b/400_xowa/src/gplx/langs/jsons/Json_doc_srl.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.langs.jsons; import gplx.*; import gplx.langs.*; public class Json_doc_srl { private int indent = -1; - private Bry_bfr bfr = Bry_bfr.reset_(255); + private Bry_bfr bfr = Bry_bfr_.Reset(255); public boolean Ws_enabled() {return ws_enabled;} public void Ws_enabled_(boolean v) {ws_enabled = v;} private boolean ws_enabled = false; public byte[] Bld() {return bfr.To_bry_and_clear();} public String Bld_as_str() {return bfr.To_str_and_clear();} diff --git a/400_xowa/src/gplx/langs/jsons/Json_doc_wtr.java b/400_xowa/src/gplx/langs/jsons/Json_doc_wtr.java index 56959ccd7..195258eb1 100644 --- a/400_xowa/src/gplx/langs/jsons/Json_doc_wtr.java +++ b/400_xowa/src/gplx/langs/jsons/Json_doc_wtr.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.langs.jsons; import gplx.*; import gplx.langs.*; public class Json_doc_wtr { private int indent = -2; - private Bry_bfr bfr = Bry_bfr.reset_(255); + private Bry_bfr bfr = Bry_bfr_.Reset(255); public Json_doc_wtr Indent() {return Indent(indent);} private Json_doc_wtr Indent(int v) {if (v > 0) bfr.Add_byte_repeat(Byte_ascii.Space, v); return this;} public Json_doc_wtr Indent_add() {indent += 2; return this;} diff --git a/400_xowa/src/gplx/langs/jsons/Json_factory.java b/400_xowa/src/gplx/langs/jsons/Json_factory.java index 06747899a..419fb7e62 100644 --- a/400_xowa/src/gplx/langs/jsons/Json_factory.java +++ b/400_xowa/src/gplx/langs/jsons/Json_factory.java @@ -17,13 +17,14 @@ along with this program. If not, see . */ package gplx.langs.jsons; import gplx.*; import gplx.langs.*; public class Json_factory { - public Json_itm Null() {return Json_itm_null.Null;} - public Json_itm Bool_n() {return Json_itm_bool.Bool_n;} - public Json_itm Bool_y() {return Json_itm_bool.Bool_y;} - 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_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);} + public Json_itm Null() {return Json_itm_null.Null;} + public Json_itm Bool_n() {return Json_itm_bool.Bool_n;} + public Json_itm Bool_y() {return Json_itm_bool.Bool_y;} + public Json_itm_int Int(Json_doc doc, int bgn, int end) {return new Json_itm_int(doc, bgn, end);} + public Json_itm_long Long(Json_doc doc, int bgn, int end) {return new Json_itm_long(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_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/langs/jsons/Json_itm.java b/400_xowa/src/gplx/langs/jsons/Json_itm.java index c5dad47d5..4f4904cda 100644 --- a/400_xowa/src/gplx/langs/jsons/Json_itm.java +++ b/400_xowa/src/gplx/langs/jsons/Json_itm.java @@ -31,29 +31,5 @@ class Json_itm_null extends Json_itm_base { @Override public Object Data() {return null;} @Override public void Print_as_json(Bry_bfr bfr, int depth) {bfr.Add(Object_.Bry__null);} @Override public byte[] Data_bry() {return Object_.Bry__null;} - public static final Json_itm_null Null = new Json_itm_null(); -} -class Json_itm_bool extends Json_itm_base { - private boolean data; - public Json_itm_bool(boolean data) {this.data = data; this.Ctor(-1, -1);} - @Override public byte Tid() {return Json_itm_.Tid__bool;} - @Override public Object Data() {return data;} - @Override public byte[] Data_bry() {return data ? Json_itm_.Bry__true : Json_itm_.Bry__false;} - @Override public void Print_as_json(Bry_bfr bfr, int depth) {bfr.Add(data ? Json_itm_.Bry__true: Json_itm_.Bry__false);} - public static final Json_itm_bool Bool_n = new Json_itm_bool(false), Bool_y = new Json_itm_bool(true); -} -class Json_itm_decimal extends Json_itm_base { - private final Json_doc doc; private Decimal_adp data; private byte[] data_bry; - public Json_itm_decimal(Json_doc doc, int src_bgn, int src_end) {this.Ctor(src_bgn, src_end); this.doc = doc;} - @Override public byte Tid() {return Json_itm_.Tid__decimal;} - @Override public Object Data() { - if (data == null) - data = Decimal_adp_.parse(String_.new_a7(this.Data_bry())); - return data; - } - @Override public byte[] Data_bry() { - if (data_bry == null) data_bry = Bry_.Mid(doc.Src(), this.Src_bgn(), this.Src_end()); - return data_bry; - } - @Override public void Print_as_json(Bry_bfr bfr, int depth) {bfr.Add_mid(doc.Src(), this.Src_bgn(), this.Src_end());} + public static final Json_itm_null Null = new Json_itm_null(); } diff --git a/400_xowa/src/gplx/langs/jsons/Json_itm_.java b/400_xowa/src/gplx/langs/jsons/Json_itm_.java index 2d9522f3d..c197f3b5e 100644 --- a/400_xowa/src/gplx/langs/jsons/Json_itm_.java +++ b/400_xowa/src/gplx/langs/jsons/Json_itm_.java @@ -17,9 +17,9 @@ along with this program. If not, see . */ package gplx.langs.jsons; import gplx.*; import gplx.langs.*; public class Json_itm_ { - public static final Json_itm[] Ary_empty = new Json_itm[0]; - public static final byte Tid__unknown = 0, Tid__null = 1, Tid__bool = 2, Tid__int = 3, Tid__decimal = 4, Tid__str = 5, Tid__kv = 6, Tid__ary = 7, Tid__nde = 8; - public static final byte[] Bry__true = Bool_.True_bry, Bry__false = Bool_.False_bry, Bry__null = Object_.Bry__null; + public static final Json_itm[] Ary_empty = new Json_itm[0]; + public static final byte Tid__unknown = 0, Tid__null = 1, Tid__bool = 2, Tid__int = 3, Tid__long = 4, Tid__decimal = 5, Tid__str = 6, Tid__kv = 7, Tid__ary = 8, Tid__nde = 9; + public static final byte[] Bry__true = Bool_.True_bry, Bry__false = Bool_.False_bry, Bry__null = Object_.Bry__null; public static byte[] To_bry(Bry_bfr bfr, Json_itm itm) { if (itm == null) return Bry_.Empty; itm.Print_as_json(bfr, 0); diff --git a/400_xowa/src/gplx/langs/jsons/Json_itm_base.java b/400_xowa/src/gplx/langs/jsons/Json_itm_base.java index 684ea39e8..920213d75 100644 --- a/400_xowa/src/gplx/langs/jsons/Json_itm_base.java +++ b/400_xowa/src/gplx/langs/jsons/Json_itm_base.java @@ -23,7 +23,7 @@ public abstract class Json_itm_base implements Json_itm { public int Src_end() {return src_end;} protected int src_end; public abstract Object Data(); public abstract byte[] Data_bry(); - public String Print_as_json() {Bry_bfr bfr = Bry_bfr.new_(); Print_as_json(bfr, 0); return bfr.To_str_and_clear();} + public String Print_as_json() {Bry_bfr bfr = Bry_bfr_.New(); Print_as_json(bfr, 0); return bfr.To_str_and_clear();} public abstract void Print_as_json(Bry_bfr bfr, int depth); @gplx.Virtual public boolean Data_eq(byte[] comp) {return false;} } diff --git a/400_xowa/src/gplx/langs/jsons/Json_itm_bool.java b/400_xowa/src/gplx/langs/jsons/Json_itm_bool.java new file mode 100644 index 000000000..2c2587ffa --- /dev/null +++ b/400_xowa/src/gplx/langs/jsons/Json_itm_bool.java @@ -0,0 +1,28 @@ +/* +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.langs.jsons; import gplx.*; import gplx.langs.*; +public class Json_itm_bool extends Json_itm_base { + private boolean data; + public Json_itm_bool(boolean data) {this.data = data; this.Ctor(-1, -1);} + @Override public byte Tid() {return Json_itm_.Tid__bool;} + public boolean Data_as_bool() {return data;} + @Override public Object Data() {return data;} + @Override public byte[] Data_bry() {return data ? Json_itm_.Bry__true : Json_itm_.Bry__false;} + @Override public void Print_as_json(Bry_bfr bfr, int depth) {bfr.Add(data ? Json_itm_.Bry__true: Json_itm_.Bry__false);} + public static final Json_itm_bool Bool_n = new Json_itm_bool(false), Bool_y = new Json_itm_bool(true); +} diff --git a/400_xowa/src/gplx/langs/jsons/Json_itm_decimal.java b/400_xowa/src/gplx/langs/jsons/Json_itm_decimal.java new file mode 100644 index 000000000..5761dbcc1 --- /dev/null +++ b/400_xowa/src/gplx/langs/jsons/Json_itm_decimal.java @@ -0,0 +1,34 @@ +/* +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.langs.jsons; import gplx.*; import gplx.langs.*; +public class Json_itm_decimal extends Json_itm_base { + private final Json_doc doc; private Decimal_adp data; private byte[] data_bry; + public Json_itm_decimal(Json_doc doc, int src_bgn, int src_end) {this.Ctor(src_bgn, src_end); this.doc = doc;} + @Override public byte Tid() {return Json_itm_.Tid__decimal;} + @Override public Object Data() {return this.Data_as_decimal();} + @Override public byte[] Data_bry() { + if (data_bry == null) data_bry = Bry_.Mid(doc.Src(), this.Src_bgn(), this.Src_end()); + return data_bry; + } + public Decimal_adp Data_as_decimal() { + if (data == null) + data = Decimal_adp_.parse(String_.new_a7(this.Data_bry())); + return data; + } + @Override public void Print_as_json(Bry_bfr bfr, int depth) {bfr.Add_mid(doc.Src(), this.Src_bgn(), this.Src_end());} +} diff --git a/400_xowa/src/gplx/langs/jsons/Json_itm_long.java b/400_xowa/src/gplx/langs/jsons/Json_itm_long.java new file mode 100644 index 000000000..fb1de77e3 --- /dev/null +++ b/400_xowa/src/gplx/langs/jsons/Json_itm_long.java @@ -0,0 +1,35 @@ +/* +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.langs.jsons; import gplx.*; import gplx.langs.*; +public class Json_itm_long extends Json_itm_base { + private final Json_doc doc; + private byte[] data_bry; private long data; private boolean data_is_null = true; + public Json_itm_long(Json_doc doc, int src_bgn, int src_end) {this.Ctor(src_bgn, src_end); this.doc = doc;} + @Override public byte Tid() {return Json_itm_.Tid__long;} + public long Data_as_long() { + if (data_is_null) { + data = doc.Utl_num_parser().Parse(doc.Src(), Src_bgn(), Src_end()).Rv_as_long(); + data_is_null = false; + } + return data; + } + @Override public Object Data() {return Data_as_long();} + @Override public byte[] Data_bry() {if (data_bry == null) data_bry = Bry_.Mid(doc.Src(), this.Src_bgn(), this.Src_end()); return data_bry;} + @Override public void Print_as_json(Bry_bfr bfr, int depth) {bfr.Add_mid(doc.Src(), this.Src_bgn(), this.Src_end());} + public static Json_itm_long cast(Json_itm v) {return v == null || v.Tid() != Json_itm_.Tid__long ? null : (Json_itm_long)v;} +} diff --git a/400_xowa/src/gplx/langs/jsons/Json_itm_str.java b/400_xowa/src/gplx/langs/jsons/Json_itm_str.java index 1cb3ad66c..4f9c87b89 100644 --- a/400_xowa/src/gplx/langs/jsons/Json_itm_str.java +++ b/400_xowa/src/gplx/langs/jsons/Json_itm_str.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.langs.jsons; import gplx.*; import gplx.langs.*; -class Json_itm_str extends Json_itm_base { +public class Json_itm_str extends Json_itm_base { private final boolean exact; private final Json_doc doc; private String data_str; private byte[] data_bry = null; public Json_itm_str(Json_doc doc, int src_bgn, int src_end, boolean exact) {this.Ctor(src_bgn + 1, src_end - 1); this.doc = doc; this.exact = exact;} @@ -26,7 +26,8 @@ class Json_itm_str extends Json_itm_base { gplx.langs.htmls.Gfh_utl.Escape_html_to_bfr(bfr, doc.Src(), this.Src_bgn(), this.Src_end(), true, true, true, true, false); // false to apos for backwards compatibility bfr.Add_byte(Byte_ascii.Quote); } - @Override public Object Data() { + @Override public Object Data() {return this.Data_as_str();} + public String Data_as_str() { if (data_str == null) { if (data_bry == null) data_bry = Data_make_bry(); diff --git a/400_xowa/src/gplx/langs/jsons/Json_nde.java b/400_xowa/src/gplx/langs/jsons/Json_nde.java index e29758291..64f69c15a 100644 --- a/400_xowa/src/gplx/langs/jsons/Json_nde.java +++ b/400_xowa/src/gplx/langs/jsons/Json_nde.java @@ -29,6 +29,7 @@ public class Json_nde extends Json_itm_base implements Json_grp { public Json_itm Get_at(int i) {return subs[i];} public Json_itm Get_as_itm_or_null(byte[] key) {if (subs_hash == null) subs_hash = subs_hash_init(); return (Json_itm)subs_hash.Get_by_bry(key);} public Json_ary Get_as_ary(int idx) {return Json_ary.cast(Get_at(idx));} + public Json_nde Get_as_nde(String key) {return Json_nde.cast(Get_as_itm_or_null(Bry_.new_u8(key)));} public Json_nde Get_as_nde(int idx) {return Json_nde.cast(Get_at(idx));} public Json_ary Get_as_ary(String key) {return Get_as_ary(Bry_.new_u8(key));} public Json_ary Get_as_ary(byte[] key) { @@ -66,6 +67,11 @@ public class Json_nde extends Json_itm_base implements Json_grp { byte[] rv = Get_as_bry_or(key, null); return rv == null ? or : Bry_.To_long_or(rv, or); } + public boolean Get_as_bool_or(String key, boolean or) {return Get_as_bool_or(Bry_.new_u8(key), or);} + public boolean Get_as_bool_or(byte[] key, boolean or) { + byte[] rv = Get_as_bry_or(key, null); + return rv == null ? or : Bry_.Eq(rv, Bool_.True_bry); + } // to convert public boolean Has(byte[] key) {return Get_bry(key, null) != null;} diff --git a/400_xowa/src/gplx/langs/jsons/Json_parser.java b/400_xowa/src/gplx/langs/jsons/Json_parser.java index 2e30c17fe..17b3664d8 100644 --- a/400_xowa/src/gplx/langs/jsons/Json_parser.java +++ b/400_xowa/src/gplx/langs/jsons/Json_parser.java @@ -18,8 +18,8 @@ along with this program. If not, see . package gplx.langs.jsons; import gplx.*; import gplx.langs.*; import gplx.core.primitives.*; public class Json_parser { - private byte[] src; private int src_len, pos; private final Number_parser num_parser = new Number_parser(); - public Json_factory Factory() {return factory;} private final Json_factory factory = new Json_factory(); + private byte[] src; private int src_len, pos; private final Number_parser num_parser = new Number_parser(); + public Json_factory Factory() {return factory;} private final Json_factory factory = new Json_factory(); public Json_doc Parse_by_apos_ary(String... ary) {return Parse_by_apos(String_.Concat_lines_nl(ary));} public Json_doc Parse_by_apos(String s) {return Parse(Bry_.Replace(Bry_.new_u8(s), Byte_ascii.Apos, Byte_ascii.Quote));} public Json_doc Parse(String src) {return Parse(Bry_.new_u8(src));} @@ -140,9 +140,14 @@ public class Json_parser { } } num_parser.Parse(src, num_bgn, pos); - return num_parser.Has_frac() - ? factory.Decimal(doc, num_bgn, pos) - : factory.Int(doc, num_bgn, pos); + if (num_parser.Has_frac()) + return factory.Decimal(doc, num_bgn, pos); + else { + if (num_parser.Is_int()) + return factory.Int(doc, num_bgn, pos); + else + return factory.Long(doc, num_bgn, pos); + } } private Json_ary Make_ary(Json_doc doc) { Json_ary rv = factory.Ary(pos++, pos); // brack_bgn @@ -177,5 +182,5 @@ public class Json_parser { String msg = String_.Format(fmt, args) + " " + Int_.To_str(bgn) + " " + String_.new_u8__by_len(src, bgn, 20); return Err_.new_wo_type(msg); } - private static final byte[] Bry_bool_rue = Bry_.new_a7("rue"), Bry_bool_alse = Bry_.new_a7("alse"), Bry_null_ull = Bry_.new_a7("ull"); + private static final byte[] Bry_bool_rue = Bry_.new_a7("rue"), Bry_bool_alse = Bry_.new_a7("alse"), Bry_null_ull = Bry_.new_a7("ull"); } diff --git a/400_xowa/src/gplx/langs/jsons/Json_parser__itm__base.java b/400_xowa/src/gplx/langs/jsons/Json_parser__itm__base.java index 47a7e1d98..f32064e0b 100644 --- a/400_xowa/src/gplx/langs/jsons/Json_parser__itm__base.java +++ b/400_xowa/src/gplx/langs/jsons/Json_parser__itm__base.java @@ -19,8 +19,8 @@ package gplx.langs.jsons; import gplx.*; import gplx.langs.*; import gplx.core.primitives.*; public abstract class Json_parser__itm__base { protected String context; - protected final Hash_adp_bry hash = Hash_adp_bry.cs(); - protected final Bry_bfr tmp_bfr = Bry_bfr.new_(255); + protected final Hash_adp_bry hash = Hash_adp_bry.cs(); + protected final Bry_bfr tmp_bfr = Bry_bfr_.New_w_size(255); protected String[] keys; protected Json_kv[] atrs; protected Json_itm cur_itm; diff --git a/400_xowa/src/gplx/langs/jsons/Json_parser_tst.java b/400_xowa/src/gplx/langs/jsons/Json_parser_tst.java index 178c4df42..c5252d583 100644 --- a/400_xowa/src/gplx/langs/jsons/Json_parser_tst.java +++ b/400_xowa/src/gplx/langs/jsons/Json_parser_tst.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.langs.jsons; import gplx.*; import gplx.langs.*; import org.junit.*; public class Json_parser_tst { - private final Json_parser_fxt fxt = new Json_parser_fxt(); + private final Json_parser_fxt fxt = new Json_parser_fxt(); @Before public void init() {fxt.Clear();} @Test public void Null() {fxt.Test_parse_val0("{'k0':null}" , null);} @Test public void Bool_n() {fxt.Test_parse_val0("{'k0':false}" , false);} @@ -50,7 +50,7 @@ class Json_parser_fxt { parser = new Json_parser(); factory = parser.Factory(); } - } Json_parser parser; Json_factory factory; Bry_bfr tmp_bfr = Bry_bfr.reset_(255); + } Json_parser parser; Json_factory factory; Bry_bfr tmp_bfr = Bry_bfr_.Reset(255); public 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_ary itm_ary_() {return factory.Ary(-1, -1);} diff --git a/400_xowa/src/gplx/langs/jsons/Json_wtr.java b/400_xowa/src/gplx/langs/jsons/Json_wtr.java index 344fbe38c..926182b8f 100644 --- a/400_xowa/src/gplx/langs/jsons/Json_wtr.java +++ b/400_xowa/src/gplx/langs/jsons/Json_wtr.java @@ -18,13 +18,14 @@ along with this program. If not, see . package gplx.langs.jsons; import gplx.*; import gplx.langs.*; import gplx.core.primitives.*; public class Json_wtr { - private final Bry_bfr bfr = Bry_bfr.new_(255); + private final Bry_bfr bfr = Bry_bfr_.New_w_size(255); private final Int_ary idx_stack = new Int_ary(4); private int idx = 0; public Bry_bfr Bfr() {return bfr;} public void Indent_(int v) {this.indent = v;} private int indent; public byte Opt_quote_byte() {return opt_quote_byte;} public Json_wtr Opt_quote_byte_(byte v) {opt_quote_byte = v; return this;} private byte opt_quote_byte = Byte_ascii.Quote; public boolean Opt_ws() {return opt_ws;} public Json_wtr Opt_ws_(boolean v) {opt_ws = v; return this;} private boolean opt_ws = true; + public boolean Opt_backslash_2x() {return opt_backslash_2x;} public Json_wtr Opt_backslash_2x_(boolean v) {opt_backslash_2x = v; return this;} private boolean opt_backslash_2x = false; public byte[] To_bry_and_clear() {return bfr.To_bry_and_clear();} public String To_str_and_clear() {return bfr.To_str_and_clear();} public Json_wtr () {this.Clear();} @@ -101,7 +102,7 @@ public class Json_wtr { Write_nl(); return this; } - public Json_wtr Kv_str(String key, String val) {return Kv_bry(Bry_.new_u8(key), Bry_.new_u8(val));} + public Json_wtr Kv_str(String key, String val) {return Kv_bry(Bry_.new_u8(key), val == null ? null : Bry_.new_u8(val));} public Json_wtr Kv_str(byte[] key, String val) {return Kv_bry(key, Bry_.new_u8(val));} public Json_wtr Kv_bry(String key, byte[] val) {return Kv_bry(Bry_.new_u8(key), val);} public Json_wtr Kv_bry(byte[] key, byte[] val) { @@ -254,14 +255,15 @@ public class Json_wtr { private void Write_str(byte[] bry) { if (bry == null) {bfr.Add(Object_.Bry__null); return;} int len = bry.length; + int backslash_count = opt_backslash_2x ? 3 : 1; // NOTE: 3 handles backslashes usurped by javascript; EX: '{"val":"\\\\"}' --javascript--> '{"val":"\\"}' --json--> '{"val":"\"}' bfr.Add_byte(opt_quote_byte); for (int i = 0; i < len; ++i) { byte b = bry[i]; switch (b) { - case Byte_ascii.Backslash: bfr.Add_byte(Byte_ascii.Backslash).Add_byte(b); break; // "\" -> "\\"; needed else js will usurp \ as escape; EX: "\&" -> "&"; DATE:2014-06-24 - case Byte_ascii.Quote: bfr.Add_byte(Byte_ascii.Backslash).Add_byte(b); break; - case Byte_ascii.Apos: bfr.Add_byte(b); break; + case Byte_ascii.Backslash: bfr.Add_byte_repeat(Byte_ascii.Backslash, backslash_count).Add_byte(b); break; // "\" -> "\\"; needed else js will usurp \ as escape; EX: "\&" -> "&"; DATE:2014-06-24 + case Byte_ascii.Quote: bfr.Add_byte_repeat(Byte_ascii.Backslash, backslash_count).Add_byte(b); break; case Byte_ascii.Nl: bfr.Add_byte_repeat(Byte_ascii.Backslash, 2).Add_byte(Byte_ascii.Ltr_n); break; // "\n" -> "\\n" + case Byte_ascii.Apos: bfr.Add_byte(b); break; case Byte_ascii.Cr: break;// skip default: bfr.Add_byte(b); break; } diff --git a/400_xowa/src/gplx/langs/mustaches/Mustache_bfr.java b/400_xowa/src/gplx/langs/mustaches/Mustache_bfr.java index 2e38f68da..9eb34e9b2 100644 --- a/400_xowa/src/gplx/langs/mustaches/Mustache_bfr.java +++ b/400_xowa/src/gplx/langs/mustaches/Mustache_bfr.java @@ -35,6 +35,6 @@ public class Mustache_bfr { } public byte[] To_bry_and_clear() {return bfr.To_bry_and_clear();} public String To_str_and_clear() {return bfr.To_str_and_clear();} - public static Mustache_bfr New() {return new Mustache_bfr(Bry_bfr.new_());} + public static Mustache_bfr New() {return new Mustache_bfr(Bry_bfr_.New());} public static Mustache_bfr New_bfr(Bry_bfr v) {return new Mustache_bfr(v);} } diff --git a/400_xowa/src/gplx/langs/mustaches/Mustache_itm_render_tst.java b/400_xowa/src/gplx/langs/mustaches/Mustache_itm_render_tst.java index 85c9dcebb..b31ff9b00 100644 --- a/400_xowa/src/gplx/langs/mustaches/Mustache_itm_render_tst.java +++ b/400_xowa/src/gplx/langs/mustaches/Mustache_itm_render_tst.java @@ -128,7 +128,7 @@ class Mustache_itm_render_fxt { } } class Mustache_doc_itm__mock implements Mustache_doc_itm { - private final Hash_adp hash_prop = Hash_adp_.new_(), hash_bool = Hash_adp_.new_(), hash_subs = Hash_adp_.new_(); + private final Hash_adp hash_prop = Hash_adp_.New(), hash_bool = Hash_adp_.New(), hash_subs = Hash_adp_.New(); public Mustache_doc_itm__mock(int id) {this.id = id;} public int id; public Mustache_doc_itm__mock Add_prop(String key, String val) {hash_prop.Add(key, Bry_.new_u8(val)); return this;} diff --git a/400_xowa/src/gplx/langs/mustaches/Mustache_render_ctx.java b/400_xowa/src/gplx/langs/mustaches/Mustache_render_ctx.java index 530372678..6cfae3c5b 100644 --- a/400_xowa/src/gplx/langs/mustaches/Mustache_render_ctx.java +++ b/400_xowa/src/gplx/langs/mustaches/Mustache_render_ctx.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.langs.mustaches; import gplx.*; import gplx.langs.*; public class Mustache_render_ctx { - private final List_adp stack = List_adp_.new_(); + private final List_adp stack = List_adp_.New(); private Mustache_doc_itm cur; private Mustache_doc_itm[] subs; private int subs_idx, subs_len; private byte cur_is_bool; public Mustache_render_ctx Init(Mustache_doc_itm cur) { @@ -32,7 +32,7 @@ public class Mustache_render_ctx { while (itm != Mustache_doc_itm_.Null_itm) { boolean resolved = cur.Mustache__write(key, bfr); if (resolved) {rv = true; break;} - else break; // TODO: itm = itm.Get_owner(); + else break; // TODO_OLD: itm = itm.Get_owner(); } return rv; } diff --git a/400_xowa/src/gplx/langs/mustaches/Mustache_tkn_parser.java b/400_xowa/src/gplx/langs/mustaches/Mustache_tkn_parser.java index 119d5ce9a..d7bc47700 100644 --- a/400_xowa/src/gplx/langs/mustaches/Mustache_tkn_parser.java +++ b/400_xowa/src/gplx/langs/mustaches/Mustache_tkn_parser.java @@ -27,7 +27,7 @@ public class Mustache_tkn_parser { return root; } private int Parse_grp(Mustache_tkn_itm owner, int src_bgn) { - List_adp subs_list = List_adp_.new_(); + List_adp subs_list = List_adp_.New(); int txt_bgn = src_bgn; boolean end_grp = false; while (true) {// loop for "{{" @@ -83,7 +83,7 @@ public class Mustache_tkn_parser { case Mustache_tkn_def.Variable: tkn = new Mustache_tkn_variable(val_bry); break; case Mustache_tkn_def.Comment: tkn = new Mustache_tkn_comment(); break; case Mustache_tkn_def.Partial: tkn = new Mustache_tkn_partial(val_bry); break; - case Mustache_tkn_def.Delimiter_bgn: tkn = new Mustache_tkn_delimiter(val_bry); break; // TODO: implement delimiter; EX: {{=<% %>=}} + case Mustache_tkn_def.Delimiter_bgn: tkn = new Mustache_tkn_delimiter(val_bry); break; // TODO_OLD: implement delimiter; EX: {{=<% %>=}} case Mustache_tkn_def.Escape_bgn: tkn = new Mustache_tkn_escape(val_bry); break; case Mustache_tkn_def.Section: tkn = new Mustache_tkn_section(val_bry); break; case Mustache_tkn_def.Inverted: tkn = new Mustache_tkn_inverted(val_bry); break; @@ -145,7 +145,7 @@ class Mustache_tkn_data { case Mustache_tkn_def.Comment: case Mustache_tkn_def.Partial: case Mustache_tkn_def.Grp_end: ws_ignore = true; break; - case Mustache_tkn_def.Delimiter_bgn: rhs_bgn_chk = Mustache_tkn_def.Delimiter_end; break; // check for "=}}"; TODO: implement delimiter; EX: {{=<% %>=}} + case Mustache_tkn_def.Delimiter_bgn: rhs_bgn_chk = Mustache_tkn_def.Delimiter_end; break; // check for "=}}"; TODO_OLD: implement delimiter; EX: {{=<% %>=}} case Mustache_tkn_def.Escape_bgn: rhs_bgn_chk = Mustache_tkn_def.Escape_end; break; // check for "" case Mustache_tkn_def.Section: case Mustache_tkn_def.Inverted: ws_ignore = true; parse_grp = true; break; diff --git a/400_xowa/src/gplx/langs/mustaches/Mustache_wtr_.java b/400_xowa/src/gplx/langs/mustaches/Mustache_wtr_.java index 71b351b35..30136bbb8 100644 --- a/400_xowa/src/gplx/langs/mustaches/Mustache_wtr_.java +++ b/400_xowa/src/gplx/langs/mustaches/Mustache_wtr_.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.langs.mustaches; import gplx.*; import gplx.langs.*; public class Mustache_wtr_ { - public static byte[] Write_to_bry(byte[] src, Mustache_doc_itm itm) {return Write_to_bry(Bry_bfr.new_(), src, itm);} + public static byte[] Write_to_bry(byte[] src, Mustache_doc_itm itm) {return Write_to_bry(Bry_bfr_.New(), src, itm);} public static byte[] Write_to_bry(Bry_bfr bfr, byte[] src, Mustache_doc_itm itm) { Mustache_tkn_parser parser = new Mustache_tkn_parser(); Mustache_tkn_itm root = parser.Parse(src, 0, src.length); diff --git a/400_xowa/src/gplx/langs/phps/Php_evaluator.java b/400_xowa/src/gplx/langs/phps/Php_evaluator.java index 40392c1d1..4a239dc4e 100644 --- a/400_xowa/src/gplx/langs/phps/Php_evaluator.java +++ b/400_xowa/src/gplx/langs/phps/Php_evaluator.java @@ -26,10 +26,10 @@ NOTE: naive implementation of PHP evaluator. intended only for parsing Messages* public class Php_evaluator implements Php_tkn_wkr { byte mode = Mode_key_bgn, next_tid = 0, next_mode = 0; Php_line_assign cur_line; Php_itm_ary cur_ary; Php_key cur_kv_key; - List_adp frame_stack = List_adp_.new_(); + List_adp frame_stack = List_adp_.New(); public Php_evaluator(Gfo_msg_log msg_log) {this.msg_log = msg_log;} Gfo_msg_log msg_log; public void Init(Php_ctx ctx) {src = ctx.Src(); frame_stack.Clear();} private byte[] src; - public List_adp List() {return lines;} List_adp lines = List_adp_.new_(); + public List_adp List() {return lines;} List_adp lines = List_adp_.New(); public Gfo_msg_log Msg_log() {return msg_log;} public void Clear() { lines.Clear(); msg_log.Clear(); @@ -249,7 +249,7 @@ public class Php_evaluator implements Php_tkn_wkr { public void Msg_many(byte[] src, int bgn, int end, Gfo_msg_itm itm, Object... args) { msg_log.Add_itm_many(itm, src, bgn, end, args); } - public static final Gfo_msg_itm Expecting_itm_failed = Gfo_msg_itm_.new_warn_(Php_parser.Log_nde, "expecting_itm_failed", "expecting_itm ~{0} but got ~{1} instead"); + public static final Gfo_msg_itm Expecting_itm_failed = Gfo_msg_itm_.new_warn_(Php_parser.Log_nde, "expecting_itm_failed", "expecting_itm ~{0} but got ~{1} instead"); private static final byte Mode_key_bgn = 1, Mode_key_end = 2, Mode_expect = 3, Mode_suspend = 4, Mode_val = 5, Mode_ary_subs = 6, Mode_ary_dlm = 7, Mode_ary_term = 8, Mode_brack_itm = 9; } class Php_scanner_frame { @@ -258,6 +258,6 @@ class Php_scanner_frame { public void Rls() {ary = null;} } class Php_parser_interrupt { - public static final Php_parser_interrupt Char = new Php_parser_interrupt(); + public static final Php_parser_interrupt Char = new Php_parser_interrupt(); } diff --git a/400_xowa/src/gplx/langs/phps/Php_parser.java b/400_xowa/src/gplx/langs/phps/Php_parser.java index 503e3dc80..829472126 100644 --- a/400_xowa/src/gplx/langs/phps/Php_parser.java +++ b/400_xowa/src/gplx/langs/phps/Php_parser.java @@ -24,7 +24,7 @@ public class Php_parser { byte[] src; int src_len; Php_tkn_wkr tkn_wkr; Php_tkn_factory tkn_factory = new Php_tkn_factory(); Php_ctx ctx = new Php_ctx(); Php_parser_interrupt[] parser_interrupts = new Php_parser_interrupt[256]; public Php_parser() { - List_adp list = List_adp_.new_(); + List_adp list = List_adp_.New(); Init_lxr(list, new Php_lxr_declaration()); Init_lxr(list, new Php_lxr_ws(Php_tkn_ws.Tid_space)); Init_lxr(list, new Php_lxr_ws(Php_tkn_ws.Tid_nl)); @@ -117,5 +117,5 @@ public class Php_parser { return end; } public static final int NotFound = -1; - public static final Gfo_msg_grp Log_nde = Gfo_msg_grp_.new_(Gfo_msg_grp_.Root_gplx, "php_parser"); + public static final Gfo_msg_grp Log_nde = Gfo_msg_grp_.new_(Gfo_msg_grp_.Root_gplx, "php_parser"); } diff --git a/400_xowa/src/gplx/langs/phps/Php_parser_tst.java b/400_xowa/src/gplx/langs/phps/Php_parser_tst.java index bfb5b4165..29e82710d 100644 --- a/400_xowa/src/gplx/langs/phps/Php_parser_tst.java +++ b/400_xowa/src/gplx/langs/phps/Php_parser_tst.java @@ -197,7 +197,7 @@ abstract class Php_tkn_chkr_base implements Tst_chkr { class Php_tkn_declaration_chkr extends Php_tkn_chkr_base { @Override public Class TypeOf() {return Php_tkn_declaration.class;} @Override public byte Tkn_tid() {return Php_tkn_.Tid_declaration;} - public static final Php_tkn_declaration_chkr Instance = new Php_tkn_declaration_chkr(); + public static final Php_tkn_declaration_chkr Instance = new Php_tkn_declaration_chkr(); } class Php_tkn_txt_chkr extends Php_tkn_chkr_base { public Php_tkn_txt_chkr(int src_bgn, int src_end) {this.Src_rng_(src_bgn, src_end);} @@ -295,7 +295,7 @@ abstract class Php_itm_chkr_base implements Tst_chkr { return rv; } @gplx.Virtual public int Chk_itm(Tst_mgr mgr, String path, Php_itm actl_obj) {return 0;} - public static final Php_itm_chkr_base[] Ary_empty = new Php_itm_chkr_base[0]; + public static final Php_itm_chkr_base[] Ary_empty = new Php_itm_chkr_base[0]; } class Php_itm_generic_chkr extends Php_itm_chkr_base { public Php_itm_generic_chkr(byte itm_tid) {this.itm_tid = itm_tid;} private byte itm_tid; @@ -365,7 +365,7 @@ class Php_itm_kv_chkr extends Php_itm_chkr_base { } } class Gfo_msg_log_chkr implements Tst_chkr { - List_adp itms = List_adp_.new_(); + List_adp itms = List_adp_.New(); public Class TypeOf() {return Gfo_msg_log.class;} public void Clear() {itms.Clear();} public void Add_itm(Gfo_msg_itm itm, int bgn, int end) { diff --git a/400_xowa/src/gplx/langs/phps/Php_srl_parser_tst.java b/400_xowa/src/gplx/langs/phps/Php_srl_parser_tst.java index d1c669e55..d2f4b2600 100644 --- a/400_xowa/src/gplx/langs/phps/Php_srl_parser_tst.java +++ b/400_xowa/src/gplx/langs/phps/Php_srl_parser_tst.java @@ -82,7 +82,7 @@ class Php_srl_parser_fxt { public void Clear() { parser = new Php_srl_parser(); factory = parser.Factory(); - } Php_srl_parser parser; Php_srl_factory factory; Bry_bfr tmp_bfr = Bry_bfr.reset_(255); + } Php_srl_parser parser; Php_srl_factory factory; Bry_bfr tmp_bfr = Bry_bfr_.Reset(255); public Php_srl_itm itm_nil_() {return factory.Nil();} public Php_srl_itm itm_bool_n_() {return factory.Bool_n();} public Php_srl_itm itm_bool_y_() {return factory.Bool_y();} diff --git a/400_xowa/src/gplx/langs/phps/Php_text_itm_tst.java b/400_xowa/src/gplx/langs/phps/Php_text_itm_tst.java index 028d69de8..ddb91e881 100644 --- a/400_xowa/src/gplx/langs/phps/Php_text_itm_tst.java +++ b/400_xowa/src/gplx/langs/phps/Php_text_itm_tst.java @@ -39,10 +39,10 @@ class Php_text_itm_fxt { public Php_text_itm_fxt Init_q1() {parser.Quote_is_single_(Bool_.Y); return this;} public Php_text_itm_fxt Init_q2() {parser.Quote_is_single_(Bool_.N); return this;} public void Test_parse(String raw_str, String expd) { - List_adp list = List_adp_.new_(); + List_adp list = List_adp_.New(); byte[] raw = Bry_.new_u8(raw_str); parser.Parse(list, raw); - Bry_bfr bfr = Bry_bfr.reset_(255); + Bry_bfr bfr = Bry_bfr_.Reset(255); int list_len = list.Count(); for (int i = 0; i < list_len; i++) { Php_text_itm itm = (Php_text_itm)list.Get_at(i); diff --git a/400_xowa/src/gplx/langs/phps/Php_tkn_wkr.java b/400_xowa/src/gplx/langs/phps/Php_tkn_wkr.java index 35c19cec1..b6702a7d8 100644 --- a/400_xowa/src/gplx/langs/phps/Php_tkn_wkr.java +++ b/400_xowa/src/gplx/langs/phps/Php_tkn_wkr.java @@ -24,7 +24,7 @@ public interface Php_tkn_wkr { } class Php_tkn_wkr_tkn implements Php_tkn_wkr { public void Init(Php_ctx ctx) {} - public List_adp List() {return lines;} List_adp lines = List_adp_.new_(); + public List_adp List() {return lines;} List_adp lines = List_adp_.New(); public Gfo_msg_log Msg_log() {return msg_log;} Gfo_msg_log msg_log = new Gfo_msg_log("gplx.langs.phps"); public void Clear() {lines.Clear(); msg_log.Clear();} public void Process(Php_tkn tkn) { diff --git a/400_xowa/src/gplx/langs/regxs/Gfo_pattern_itm_.java b/400_xowa/src/gplx/langs/regxs/Gfo_pattern_itm_.java index 0c66da7ac..577c21ed9 100644 --- a/400_xowa/src/gplx/langs/regxs/Gfo_pattern_itm_.java +++ b/400_xowa/src/gplx/langs/regxs/Gfo_pattern_itm_.java @@ -19,7 +19,7 @@ package gplx.langs.regxs; import gplx.*; import gplx.langs.*; public class Gfo_pattern_itm_ { public static final byte Tid_text = 0, Tid_wild = 1; public static Gfo_pattern_itm[] Compile(byte[] raw) { - List_adp rv = List_adp_.new_(); + List_adp rv = List_adp_.New(); int raw_len = raw.length; int itm_bgn = -1; Gfo_pattern_itm itm = null; diff --git a/400_xowa/src/gplx/langs/xmls/Gfo_xml_wtr.java b/400_xowa/src/gplx/langs/xmls/Gfo_xml_wtr.java index efdc01da3..01629d582 100644 --- a/400_xowa/src/gplx/langs/xmls/Gfo_xml_wtr.java +++ b/400_xowa/src/gplx/langs/xmls/Gfo_xml_wtr.java @@ -17,10 +17,10 @@ along with this program. If not, see . */ package gplx.langs.xmls; import gplx.*; import gplx.langs.*; public class Gfo_xml_wtr { - private final Bry_bfr bfr = Bry_bfr.reset_(255), txt_bfr = Bry_bfr.reset_(32); + private final Bry_bfr bfr = Bry_bfr_.Reset(255), txt_bfr = Bry_bfr_.Reset(32); private byte quote_byte = Byte_ascii.Apos; private byte[] quote_escape = Bry_quote_1_escape; - private List_adp nde_stack = List_adp_.new_(); + private List_adp nde_stack = List_adp_.New(); private Gfo_xml_nde nde_cur = null; private int indent = 0; public void Quote_(boolean apos) { @@ -134,7 +134,7 @@ public class Gfo_xml_wtr { } public Gfo_xml_wtr Txt_str_u8(String txt) {return Txt_bry(Bry_.new_u8(txt));} public String Bld_str() {return bfr.To_str_and_clear();} - private static final byte[] + private static final byte[] Bry_nde_rhs_bgn = Bry_.new_a7("") , Bry_quote_1_escape = Bry_.new_a7("'") @@ -146,6 +146,6 @@ public class Gfo_xml_wtr { } class Gfo_xml_nde { public Gfo_xml_nde(boolean grp, String name) {this.grp = grp; this.name = name;} - public boolean Grp() {return grp;} private final boolean grp; - public String Name() {return name;} private final String name; + public boolean Grp() {return grp;} private final boolean grp; + public String Name() {return name;} private final String name; } diff --git a/400_xowa/src/gplx/xowa/Xoa_app.java b/400_xowa/src/gplx/xowa/Xoa_app.java index 072f6fbd5..c432733bf 100644 --- a/400_xowa/src/gplx/xowa/Xoa_app.java +++ b/400_xowa/src/gplx/xowa/Xoa_app.java @@ -22,15 +22,15 @@ import gplx.xowa.apps.*; import gplx.xowa.apps.fsys.*; import gplx.xowa.apps.sit import gplx.xowa.apps.gfs.*; import gplx.xowa.bldrs.css.*; import gplx.xowa.files.caches.*; import gplx.xowa.files.imgs.*; -import gplx.xowa.guis.cbks.*; +import gplx.xowa.guis.cbks.*; import gplx.xowa.guis.tabs.*; import gplx.xowa.htmls.hrefs.*; import gplx.xowa.htmls.core.htmls.utls.*; import gplx.xowa.htmls.js.*; import gplx.xowa.htmls.bridges.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.xwikis.*; import gplx.xowa.wikis.xwikis.parsers.*; import gplx.xowa.wikis.xwikis.sitelinks.*; import gplx.xowa.langs.*; import gplx.xowa.bldrs.wms.*; import gplx.xowa.users.*; import gplx.xowa.bldrs.*; -import gplx.xowa.addons.*; import gplx.xowa.addons.apps.specials.*; -public interface Xoa_app extends GfoInvkAble { +import gplx.xowa.addons.*; import gplx.xowa.specials.mgrs.*; +public interface Xoa_app extends Gfo_invk { boolean Tid_is_edit(); Xoa_app_mode Mode(); Xoapi_root Api_root(); @@ -47,6 +47,7 @@ public interface Xoa_app extends GfoInvkAble { Xoa_css_extractor Html__css_installer(); Xoh_bridge_mgr Html__bridge_mgr(); Xog_cbk_mgr Gui__cbk_mgr(); + Xog_tab_mgr Gui__tab_mgr(); Xou_user User(); Xowmf_mgr Wmf_mgr(); boolean Xwiki_mgr__missing(byte[] domain); diff --git a/400_xowa/src/gplx/xowa/Xoa_app_.java b/400_xowa/src/gplx/xowa/Xoa_app_.java index 68eacd4c9..5375d304f 100644 --- a/400_xowa/src/gplx/xowa/Xoa_app_.java +++ b/400_xowa/src/gplx/xowa/Xoa_app_.java @@ -34,7 +34,7 @@ public class Xoa_app_ { } } public static final String Name = "xowa"; - public static final String Version = "3.5.1.1"; + public static final String Version = "3.6.3.1"; public static String Build_date = "2012-12-30 00:00:00"; public static String Op_sys_str; public static String User_agent = ""; diff --git a/400_xowa/src/gplx/xowa/Xoa_app_fxt.java b/400_xowa/src/gplx/xowa/Xoa_app_fxt.java index fd0ba14fd..7f2fb6f43 100644 --- a/400_xowa/src/gplx/xowa/Xoa_app_fxt.java +++ b/400_xowa/src/gplx/xowa/Xoa_app_fxt.java @@ -17,6 +17,7 @@ along with this program. If not, see . */ package gplx.xowa; import gplx.*; import gplx.core.envs.*; +import gplx.gfui.kits.core.*; import gplx.langs.gfs.*; import gplx.dbs.*; import gplx.xowa.bldrs.*; @@ -24,6 +25,7 @@ import gplx.xowa.langs.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.nss.*; import gplx.xowa.apps.*; import gplx.xowa.files.exts.*; import gplx.xowa.wikis.domains.*; +import gplx.xowa.guis.tabs.*; public class Xoa_app_fxt { public static Xoae_app Make__app__edit() { Io_mgr.Instance.InitEngine_mem(); @@ -34,7 +36,7 @@ public class Xoa_app_fxt { Io_url user_dir = root_dir.GenSubDir_nest("user", "test_user"); Gfo_usr_dlg__log_base.Instance.Log_dir_(user_dir.GenSubDir_nest("tmp", "current")); Xoae_app app = new Xoae_app(Gfo_usr_dlg_.Test(), Xoa_app_mode.Itm_cmd, root_dir, root_dir.GenSubDir("wiki"), root_dir.GenSubDir("file"), user_dir, root_dir.GenSubDir_nest("user", "anonymous", "wiki"), op_sys); - app.Setup_mgr().Dump_mgr().Data_storage_format_(gplx.core.ios.Io_stream_.Tid_raw); // TEST: set data_storage_format to file, else bldr tests will fails (expects plain text) + app.Setup_mgr().Dump_mgr().Data_storage_format_(gplx.core.ios.streams.Io_stream_.Tid_raw); // TEST: set data_storage_format to file, else bldr tests will fails (expects plain text) GfsCore.Instance.Clear(); // NOTE: must clear GfsCore.Instance.AddCmd(app, Xoae_app.Invk_app); // NOTE: must add app to GfsCore; app.Gfs_mgr() always adds current app to GfsCore; note this causes old test to leave behind GfsCore for new test GfsCore.Instance.AddCmd(app, Xoae_app.Invk_xowa); // add alias for app; DATE:2014-06-09 @@ -48,7 +50,7 @@ public class Xoa_app_fxt { public static Xoav_app Make__app__view(String op_sys, Io_url root_dir) { Io_url user_dir = root_dir.GenSubDir_nest("user", "test_user"); Gfo_usr_dlg__log_base.Instance.Log_dir_(user_dir.GenSubDir_nest("tmp", "current")); - Xoav_app rv = new Xoav_app(Gfo_usr_dlg_.Test(), Xoa_app_mode.Itm_gui, op_sys, root_dir, root_dir.GenSubDir("file"), root_dir.GenSubDir("css")); + Xoav_app rv = new Xoav_app(Gfo_usr_dlg_.Test(), Xoa_app_mode.Itm_gui, Xog_tab_mgr_.New_mem(), op_sys, root_dir, root_dir.GenSubDir("file"), root_dir.GenSubDir("css"), root_dir); rv.Init_by_app(user_dir); rv.Wiki_mgr().Add(new Xowv_wiki(rv, Xow_domain_itm_.Bry__home, user_dir)); return rv; @@ -94,7 +96,7 @@ public class Xoa_app_fxt { wiki.File_mgr().Repo_mgr().Add_repo(Bry_.new_a7("src:comm"), Bry_.new_a7("trg:comm")); } public static void Init_gui(Xoae_app app, Xowe_wiki wiki) { - app.Gui_mgr().Browser_win().Init_by_kit(gplx.gfui.Mem_kit.Instance); + app.Gui_mgr().Browser_win().Init_by_kit(Mem_kit.Instance); app.Gui_mgr().Browser_win().Tab_mgr().Tabs_new_init(wiki, Xoae_page.Empty); } public static Xob_bldr bldr_(Xoae_app app) { @@ -102,5 +104,5 @@ public class Xoa_app_fxt { rv.Sort_mem_len_(Io_mgr.Len_kb).Dump_fil_len_(Io_mgr.Len_kb).Make_fil_len_(Io_mgr.Len_kb); return rv; } - public static final Io_url Root_dir = Op_sys.Cur().Tid_is_lnx() ? Io_url_.new_dir_("/xowa/") : Io_url_.new_dir_("C:\\xowa\\"); + public static final Io_url Root_dir = Op_sys.Cur().Tid_is_lnx() ? Io_url_.new_dir_("/xowa/") : Io_url_.new_dir_("C:\\xowa\\"); } diff --git a/400_xowa/src/gplx/xowa/Xoa_page.java b/400_xowa/src/gplx/xowa/Xoa_page.java index 5b4fa2c8f..d2fb0437b 100644 --- a/400_xowa/src/gplx/xowa/Xoa_page.java +++ b/400_xowa/src/gplx/xowa/Xoa_page.java @@ -25,6 +25,7 @@ public interface Xoa_page { boolean Exists(); Xopg_revision_data Revision_data(); Xopg_html_data Html_data(); + byte[] Redirect_to_ttl(); void Redirect_to_ttl_(byte[] v); Xoa_page__commons_mgr Commons_mgr(); void Xtn_gallery_packed_exists_y_(); diff --git a/400_xowa/src/gplx/xowa/Xoa_ttl.java b/400_xowa/src/gplx/xowa/Xoa_ttl.java index b8e3557ec..0bbf466b3 100644 --- a/400_xowa/src/gplx/xowa/Xoa_ttl.java +++ b/400_xowa/src/gplx/xowa/Xoa_ttl.java @@ -290,7 +290,7 @@ public class Xoa_ttl { // PAGE:en.w:http://en.wikipedia.org/wiki/Help:Link; REF. if (anch_bgn != -1) { if (anchor_encoder == null) { anchor_encoder = Gfo_url_encoder_.Id; - anchor_encoder_bfr = Bry_bfr.reset_(32); + anchor_encoder_bfr = Bry_bfr_.Reset(32); } anchor_encoder.Encode(anchor_encoder_bfr, src, cur, cur + 1); b_ary = anchor_encoder_bfr.To_bry_and_clear(); @@ -303,7 +303,7 @@ public class Xoa_ttl { // PAGE:en.w:http://en.wikipedia.org/wiki/Help:Link; REF. if (anch_bgn != -1) { if (anchor_encoder == null) { anchor_encoder = Gfo_url_encoder_.Id; - anchor_encoder_bfr = Bry_bfr.reset_(32); + anchor_encoder_bfr = Bry_bfr_.Reset(32); } anchor_encoder.Encode(anchor_encoder_bfr, src, cur, cur + 1); b_ary = anchor_encoder_bfr.To_bry_and_clear(); @@ -375,6 +375,7 @@ public class Xoa_ttl { // PAGE:en.w:http://en.wikipedia.org/wiki/Help:Link; REF. } Xow_ns tors_ns = ns.Id_is_talk() ? ns_mgr.Ords_get_at(ns.Ord_subj_id()) : ns_mgr.Ords_get_at(ns.Ord_talk_id()); tors_txt = tors_ns.Name_ui_w_colon(); + // tors_txt = tors_ns == null ? Bry_.Empty : tors_ns.Name_ui_w_colon(); return true; } public static byte[] Replace_spaces(byte[] raw) {return Bry_.Replace(raw, Byte_ascii.Space, Byte_ascii.Underline);} diff --git a/400_xowa/src/gplx/xowa/Xoa_url.java b/400_xowa/src/gplx/xowa/Xoa_url.java index 69361b768..40a596f4d 100644 --- a/400_xowa/src/gplx/xowa/Xoa_url.java +++ b/400_xowa/src/gplx/xowa/Xoa_url.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa; import gplx.*; -import gplx.core.net.*; import gplx.xowa.apps.urls.*; +import gplx.core.net.*; import gplx.core.net.qargs.*; import gplx.xowa.apps.urls.*; import gplx.xowa.htmls.hrefs.*; public class Xoa_url { public int Tid() {return tid;} private int tid; @@ -27,7 +27,7 @@ public class Xoa_url { public String Anch_str() {return anch_bry == null ? null : String_.new_u8(anch_bry);} public byte[][] Segs_ary() {return segs_ary;} private byte[][] segs_ary; public Gfo_qarg_itm[] Qargs_ary() {return qargs_ary;} public Xoa_url Qargs_ary_(Gfo_qarg_itm[] v) {qargs_ary = v; return this;} private Gfo_qarg_itm[] qargs_ary = Gfo_qarg_itm.Ary_empty; - public Gfo_qarg_mgr Qargs_mgr() {if (qargs_mgr == null) qargs_mgr = new Gfo_qarg_mgr().Load(qargs_ary); return qargs_mgr;} private Gfo_qarg_mgr qargs_mgr; + public Gfo_qarg_mgr_old Qargs_mgr() {if (qargs_mgr == null) qargs_mgr = new Gfo_qarg_mgr_old().Load(qargs_ary); return qargs_mgr;} private Gfo_qarg_mgr_old qargs_mgr; public byte Protocol_tid() {return protocol_tid;} private byte protocol_tid; public byte[] Protocol_bry() {return protocol_bry;} private byte[] protocol_bry; public boolean Protocol_is_relative() {return protocol_is_relative;} private boolean protocol_is_relative; @@ -100,13 +100,13 @@ public class Xoa_url { if (show_qargs || qargs_ary.length > 0) { Bry_bfr bfr = Xoa_app_.Utl__bfr_mkr().Get_b128(); bfr.Add(rv); - Gfo_qarg_mgr.Concat_bfr(bfr, gplx.langs.htmls.encoders.Gfo_url_encoder_.Href, qargs_ary); + Gfo_qarg_mgr_old.Concat_bfr(bfr, gplx.langs.htmls.encoders.Gfo_url_encoder_.Href, qargs_ary); return bfr.To_bry_and_rls(); } else return rv; } - public static final Xoa_url Null = null; + public static final Xoa_url Null = null; public static Xoa_url blank() {return new Xoa_url();} public static Xoa_url new_(byte[] wiki, byte[] page) { Xoa_url rv = new Xoa_url(); diff --git a/400_xowa/src/gplx/xowa/Xoae_app.java b/400_xowa/src/gplx/xowa/Xoae_app.java index 8d8c5a800..bb8319860 100644 --- a/400_xowa/src/gplx/xowa/Xoae_app.java +++ b/400_xowa/src/gplx/xowa/Xoae_app.java @@ -21,7 +21,7 @@ import gplx.xowa.apps.*; import gplx.xowa.apps.fsys.*; import gplx.xowa.apps.sit import gplx.xowa.langs.*; import gplx.xowa.specials.*; import gplx.xowa.apps.cfgs.old.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.css.*; import gplx.xowa.bldrs.installs.*; import gplx.xowa.files.*; import gplx.xowa.files.caches.*; import gplx.xowa.files.imgs.*; -import gplx.xowa.guis.cbks.*; +import gplx.xowa.guis.cbks.*; import gplx.xowa.guis.tabs.*; import gplx.xowa.wikis.*; import gplx.xowa.users.*; import gplx.xowa.guis.*; import gplx.xowa.apps.cfgs.*; import gplx.xowa.wikis.ctgs.*; import gplx.xowa.htmls.tocs.*; import gplx.xowa.apps.fmtrs.*; import gplx.xowa.htmls.*; import gplx.xowa.wikis.xwikis.sitelinks.*; import gplx.xowa.wikis.xwikis.parsers.*; import gplx.xowa.htmls.hrefs.*; import gplx.xowa.htmls.core.htmls.utls.*; import gplx.xowa.htmls.ns_files.*; import gplx.xowa.htmls.bridges.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.amps.*; import gplx.xowa.parsers.tblws.*; import gplx.xowa.parsers.xndes.*; @@ -29,13 +29,13 @@ import gplx.xowa.xtns.*; import gplx.xowa.xtns.scribunto.*; import gplx.xowa.xtn import gplx.xowa.parsers.utils.*; import gplx.xowa.parsers.logs.*; import gplx.xowa.apps.servers.tcp.*; import gplx.xowa.apps.servers.http.*; import gplx.xowa.bldrs.wms.*; import gplx.xowa.wikis.tdbs.*; import gplx.xowa.wikis.tdbs.hives.*; import gplx.xowa.wikis.xwikis.*; -import gplx.xowa.addons.*; import gplx.xowa.addons.apps.specials.*; -public class Xoae_app implements Xoa_app, GfoInvkAble { +import gplx.xowa.addons.*; import gplx.xowa.specials.mgrs.*; +public class Xoae_app implements Xoa_app, Gfo_invk { public Xoae_app(Gfo_usr_dlg usr_dlg, Xoa_app_mode mode, Io_url root_dir, Io_url wiki_dir, Io_url file_dir, Io_url user_dir, Io_url css_dir, String bin_dir_name) { Xoa_app_.Usr_dlg_(usr_dlg); this.mode = mode; Io_url.Http_file_str_encoder = gplx.langs.htmls.encoders.Gfo_url_encoder_.Fsys_lnx; - fsys_mgr = new Xoa_fsys_mgr(bin_dir_name, root_dir, wiki_dir, file_dir, css_dir); + fsys_mgr = new Xoa_fsys_mgr(bin_dir_name, root_dir, wiki_dir, file_dir, css_dir, root_dir); log_wtr = usr_dlg.Log_wkr(); cfg_mgr = new Xoa_cfg_mgr(this); api_root = new Xoapi_root(this); @@ -47,6 +47,7 @@ public class Xoae_app implements Xoa_app, GfoInvkAble { lang_mgr = new Xoa_lang_mgr(this); wiki_mgr = new Xoae_wiki_mgr(this); gui_mgr = new Xoa_gui_mgr(this); + this.gui__tab_mgr = new Xog_tab_mgr__swt(gui_mgr); bldr = new Xob_bldr(this); file_mgr.Ctor_by_app(this); sanitizer = new Xop_sanitizer(parser_amp_mgr, msg_log); @@ -83,7 +84,7 @@ public class Xoae_app implements Xoa_app, GfoInvkAble { public Bry_bfr_mkr Utl__bfr_mkr() {return Xoa_app_.Utl__bfr_mkr();} public Json_parser Utl__json_parser() {return utl__json_parser;} private final Json_parser utl__json_parser = new Json_parser(); public Gfo_inet_conn Utl__inet_conn() {return inet_conn;} private final Gfo_inet_conn inet_conn = Gfo_inet_conn_.new_(); - public Xoa_meta_mgr Dbmeta_mgr() {return meta_mgr;} private final Xoa_meta_mgr meta_mgr; + public Xoa_meta_mgr Dbmeta_mgr() {return meta_mgr;} private final Xoa_meta_mgr meta_mgr; public boolean Bldr__running() {return bldr__running;} public void Bldr__running_(boolean v) {this.bldr__running = v;} private boolean bldr__running; public Xoa_parser_mgr Parser_mgr() {return parser_mgr;} private final Xoa_parser_mgr parser_mgr = new Xoa_parser_mgr(); public Xoa_site_cfg_mgr Site_cfg_mgr() {return site_cfg_mgr;} private final Xoa_site_cfg_mgr site_cfg_mgr; @@ -94,7 +95,8 @@ public class Xoae_app implements Xoa_app, GfoInvkAble { public Xoax_addon_mgr Addon_mgr() {return addon_mgr;} private final Xoax_addon_mgr addon_mgr = new Xoax_addon_mgr(); public Xoa_special_regy Special_regy() {return special_regy;} private final Xoa_special_regy special_regy = new Xoa_special_regy(); public Xob_bldr Bldr() {return bldr;} private Xob_bldr bldr; - public Xog_cbk_mgr Gui__cbk_mgr() {return gui__cbk_mgr;} private final Xog_cbk_mgr gui__cbk_mgr = new Xog_cbk_mgr(); + public Xog_cbk_mgr Gui__cbk_mgr() {return gui__cbk_mgr;} private final Xog_cbk_mgr gui__cbk_mgr = new Xog_cbk_mgr(); + public Xog_tab_mgr Gui__tab_mgr() {return gui__tab_mgr;} private final Xog_tab_mgr gui__tab_mgr; public Xoae_wiki_mgr Wiki_mgr() {return wiki_mgr;} private Xoae_wiki_mgr wiki_mgr; @@ -226,7 +228,7 @@ public class Xoae_app implements Xoa_app, GfoInvkAble { else if (ctx.Match(k, Invk_fmtrs)) return fmtr_mgr; else if (ctx.Match(k, Invk_cfg)) return cfg_regy; else if (ctx.Match(k, Invk_xwiki_langs_load)) xwiki_mgr__sitelink_mgr.Parse(m.ReadBry("v")); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } public static final String Invk_gui = "gui", Invk_bldr = "bldr", Invk_wikis = "wikis", Invk_files = "files", Invk_langs = "langs", Invk_users = "users" diff --git a/400_xowa/src/gplx/xowa/Xoae_page.java b/400_xowa/src/gplx/xowa/Xoae_page.java index 41d568e70..9973d478b 100644 --- a/400_xowa/src/gplx/xowa/Xoae_page.java +++ b/400_xowa/src/gplx/xowa/Xoae_page.java @@ -37,6 +37,7 @@ public class Xoae_page implements Xoa_page { public void Xtn_gallery_packed_exists_y_() {html_data.Xtn_gallery_packed_exists_y_();} public Xopg_revision_data Revision_data() {return revision_data;} private Xopg_revision_data revision_data = new Xopg_revision_data(); public Xopg_html_data Html_data() {return html_data;} private Xopg_html_data html_data = new Xopg_html_data(); + public byte[] Redirect_to_ttl() {return redirect_to_ttl;} private byte[] redirect_to_ttl; public void Redirect_to_ttl_(byte[] v) {this.redirect_to_ttl = v;} public Xoa_page__commons_mgr Commons_mgr() {return commons_mgr;} private final Xoa_page__commons_mgr commons_mgr = new Xoa_page__commons_mgr(); public Xowe_wiki Wikie() {return wiki;} private Xowe_wiki wiki; @@ -46,7 +47,7 @@ public class Xoae_page implements Xoa_page { public Xopg_hdump_data Hdump_data() {return hdump_data;} private final Xopg_hdump_data hdump_data = new Xopg_hdump_data(); public boolean Missing() {return missing;} public Xoae_page Missing_() {return Missing_(true);} public Xoae_page Missing_(boolean v) {missing = v; return this;} private boolean missing; public boolean Redirected() {return redirected;} public Xoae_page Redirected_(boolean v) {redirected = v; return this;} private boolean redirected; - public List_adp Redirected_ttls() {return redirected_ttls;} private List_adp redirected_ttls = List_adp_.new_(); + public List_adp Redirected_ttls() {return redirected_ttls;} private List_adp redirected_ttls = List_adp_.New(); public byte[] Redirected_ttls__itm_0() {return (byte[])redirected_ttls.Get_at(0);} public byte[] Redirected_src() {return redirected_src;} public void Redirected_src_(byte[] v) {this.redirected_src = v;} private byte[] redirected_src; public byte Edit_mode() {return edit_mode;} private byte edit_mode; public void Edit_mode_update_() {edit_mode = Xoa_page_.Edit_mode_update;} @@ -55,12 +56,12 @@ public class Xoae_page implements Xoa_page { public Xow_hdr_mgr Hdr_mgr() {return hdr_mgr;} private Xow_hdr_mgr hdr_mgr; public Xoh_cmd_mgr Html_cmd_mgr() {return html_cmd_mgr;} private Xoh_cmd_mgr html_cmd_mgr = new Xoh_cmd_mgr(); public byte[][] Category_list() {return category_list;} public Xoae_page Category_list_(byte[][] v) {category_list = v; return this;} private byte[][] category_list = new byte[0][]; - public List_adp Lnki_list() {return lnki_list;} public void Lnki_list_(List_adp v) {this.lnki_list = v;} private List_adp lnki_list = List_adp_.new_(); + public List_adp Lnki_list() {return lnki_list;} public void Lnki_list_(List_adp v) {this.lnki_list = v;} private List_adp lnki_list = List_adp_.New(); public Xof_xfer_queue File_queue() {return file_queue;} private Xof_xfer_queue file_queue = new Xof_xfer_queue(); - public List_adp File_math() {return file_math;} private List_adp file_math = List_adp_.new_(); + public List_adp File_math() {return file_math;} private List_adp file_math = List_adp_.New(); public Ref_itm_mgr Ref_mgr() {return ref_mgr;} private Ref_itm_mgr ref_mgr = new Ref_itm_mgr(); public void Ref_mgr_(Ref_itm_mgr v) {this.ref_mgr = v;} public Xopg_popup_mgr Popup_mgr() {return popup_mgr;} private Xopg_popup_mgr popup_mgr = new Xopg_popup_mgr(); - public List_adp Slink_list() {return slink_list;} private List_adp slink_list = List_adp_.new_(); + public List_adp Slink_list() {return slink_list;} private List_adp slink_list = List_adp_.New(); public Wdata_external_lang_links_data Wdata_external_lang_links() {return wdata_external_lang_links;} private Wdata_external_lang_links_data wdata_external_lang_links = new Wdata_external_lang_links_data(); public boolean Pages_recursed() {return pages_recursed;} public void Pages_recursed_(boolean v) {pages_recursed = v; } private boolean pages_recursed; public int Bldr__ns_ord() {return bldr__ns_ord;} public void Bldr__ns_ord_(int v) {bldr__ns_ord = v;} private int bldr__ns_ord; diff --git a/400_xowa/src/gplx/xowa/Xop_fxt.java b/400_xowa/src/gplx/xowa/Xop_fxt.java index 4e22c5ca8..b3732d5ce 100644 --- a/400_xowa/src/gplx/xowa/Xop_fxt.java +++ b/400_xowa/src/gplx/xowa/Xop_fxt.java @@ -166,7 +166,7 @@ public class Xop_fxt { } public Xop_fxt Init_para_y_() {ctx.Para().Enabled_y_(); return this;} public Xop_fxt Init_para_n_() {ctx.Para().Enabled_n_(); return this;} - public Xop_fxt Init_log_(Gfo_msg_itm... itms) {for (Gfo_msg_itm itm : itms) log_itms.Add(itm); return this;} List_adp log_itms = List_adp_.new_(); + public Xop_fxt Init_log_(Gfo_msg_itm... itms) {for (Gfo_msg_itm itm : itms) log_itms.Add(itm); return this;} List_adp log_itms = List_adp_.New(); public void Init_defn_add(String name, String text) {Init_defn_add(name, text, Xow_ns_case_.Tid__all);} public void Init_defn_add(String name, String text, byte case_match) { Xot_defn_tmpl itm = run_Parse_tmpl(Bry_.new_a7(name), Bry_.new_u8(text)); @@ -190,7 +190,7 @@ public class Xop_fxt { public Xop_fxt Init_page_update(Xowe_wiki wiki, String ttl, String txt) { Xoa_ttl page_ttl = Xoa_ttl.parse(wiki, Bry_.new_u8(ttl)); byte[] page_raw = Bry_.new_u8(txt); - Xoae_page page = wiki.Data_mgr().Get_page(page_ttl, false); + Xoae_page page = wiki.Data_mgr().Load_page_by_ttl(page_ttl); wiki.Db_mgr().Save_mgr().Data_update(page, page_raw); return this; } @@ -285,8 +285,8 @@ public class Xop_fxt { } public String Exec_parse_page_all_as_str(String raw) { Xop_root_tkn root = Exec_parse_page_all_as_root(Bry_.new_u8(raw)); - Bry_bfr actl_bfr = Bry_bfr.new_(); - hdom_wtr.Write_all(actl_bfr, ctx, root.Root_src(), root); + Bry_bfr actl_bfr = Bry_bfr_.New(); + hdom_wtr.Write_all(actl_bfr, ctx, hctx, root.Root_src(), root); return actl_bfr.To_str_and_clear(); } public void Hctx_(Xoh_wtr_ctx v) {hctx = v;} private Xoh_wtr_ctx hctx = Xoh_wtr_ctx.Basic; @@ -294,7 +294,7 @@ public class Xop_fxt { byte[] raw_bry = Bry_.new_u8(raw); Xop_root_tkn root = tkn_mkr.Root(raw_bry); parser.Parse_wtxt_to_wdom(root, ctx, tkn_mkr, raw_bry, Xop_parser_.Doc_bgn_bos); - Bry_bfr actl_bfr = Bry_bfr.new_(); + Bry_bfr actl_bfr = Bry_bfr_.New(); hdom_wtr.Write_all(actl_bfr, ctx, hctx, raw_bry, root); return actl_bfr.To_str_and_clear(); } @@ -316,7 +316,7 @@ public class Xop_fxt { public String[] Log_xtoAry() { Gfo_msg_log msg_log = app.Msg_log(); int len = msg_log.Ary_len(); - List_adp actl_list = List_adp_.new_(); + List_adp actl_list = List_adp_.New(); for (int i = 0; i < len; i++) { Gfo_msg_data eny = msg_log.Ary_get(i); if (eny.Item().Cmd() > Gfo_msg_itm_.Cmd_note) { @@ -353,7 +353,7 @@ public class Xop_fxt { byte[] ttl_bry = Bry_.new_u8(ttl_str); Xoa_url page_url = Xoa_url.new_(wiki.Domain_bry(), ttl_bry); Xoa_ttl ttl = Xoa_ttl.parse(wiki, ttl_bry); - return wiki.Data_mgr().Load_page_by_ttl(page_url, ttl).Data_raw(); + return wiki.Data_mgr().Load_page_and_parse(page_url, ttl).Data_raw(); } public static void Reg_xwiki_alias(Xowe_wiki wiki, String alias, String domain) { byte[] domain_bry = Bry_.new_a7(domain); @@ -431,7 +431,7 @@ public class Xop_fxt { Xoae_app app = Xoa_app_fxt.Make__app__edit(); return new Xop_fxt(app, Xoa_app_fxt.Make__wiki__edit__nonwmf(app, "nethackwiki")); } - private final Bry_bfr tmp_bfr = Bry_bfr.new_(255); + private final Bry_bfr tmp_bfr = Bry_bfr_.New_w_size(255); public String Exec__parse_to_hdump(String src_str) { byte[] src_bry = Bry_.new_u8(src_str); Xop_root_tkn root = Exec_parse_page_all_as_root(src_bry); diff --git a/400_xowa/src/gplx/xowa/Xow_wiki.java b/400_xowa/src/gplx/xowa/Xow_wiki.java index 10b199dd8..5fb993278 100644 --- a/400_xowa/src/gplx/xowa/Xow_wiki.java +++ b/400_xowa/src/gplx/xowa/Xow_wiki.java @@ -23,7 +23,7 @@ import gplx.xowa.files.*; import gplx.xowa.files.repos.*; import gplx.xowa.files import gplx.xowa.htmls.*; import gplx.xowa.htmls.core.htmls.utls.*; import gplx.xowa.htmls.core.hzips.*; import gplx.xowa.htmls.core.*; import gplx.xowa.htmls.bridges.dbuis.tbls.*; import gplx.xowa.parsers.*; import gplx.xowa.apps.urls.*; -public interface Xow_wiki extends Xow_ttl_parser, GfoInvkAble { +public interface Xow_wiki extends Xow_ttl_parser, Gfo_invk { boolean Type_is_edit(); Xoa_app App(); Xol_lang_itm Lang(); @@ -34,7 +34,7 @@ public interface Xow_wiki extends Xow_ttl_parser, GfoInvkAble { byte[] Domain_abrv(); // enwiki Xow_domain_itm Domain_itm(); Xow_fsys_mgr Fsys_mgr(); - Xowd_db_mgr Data__core_mgr(); + Xow_db_mgr Data__core_mgr(); Xof_fsdb_mode File__fsdb_mode(); Fsdb_db_mgr File__fsdb_core(); Xow_repo_mgr File__repo_mgr(); @@ -50,6 +50,8 @@ public interface Xow_wiki extends Xow_ttl_parser, GfoInvkAble { Xow_wiki_props Props(); Xow_site_stats_mgr Stats(); void Init_by_wiki(); + void Init_by_wiki__force(); // HACK: force init for drd wiki Xow_url_parser Utl__url_parser(); Xoax_addon_mgr Addon_mgr(); + void Init_needed_y_(); } diff --git a/400_xowa/src/gplx/xowa/Xow_wiki_.java b/400_xowa/src/gplx/xowa/Xow_wiki_.java index f539048e5..66e8e9c43 100644 --- a/400_xowa/src/gplx/xowa/Xow_wiki_.java +++ b/400_xowa/src/gplx/xowa/Xow_wiki_.java @@ -16,10 +16,17 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa; import gplx.*; +import gplx.xowa.wikis.*; public class Xow_wiki_ { - public static void Rls_mem(Xowe_wiki wiki, boolean clear_ctx) { - wiki.Appe().Free_mem(clear_ctx); - wiki.Cache_mgr().Free_mem_all(); - gplx.xowa.xtns.scribunto.Scrib_core.Core_invalidate(); + public static void Create_sql_backend(Xow_wiki wiki, gplx.xowa.wikis.data.Xowd_core_db_props core_db_props, gplx.xowa.bldrs.infos.Xob_info_session session) { + if (wiki.Type_is_edit()) { + Xowe_wiki wikie = (Xowe_wiki)wiki; + wikie.Db_mgr_create_as_sql(); // edit-wikis are created with text-backend; convert to sql + wiki.Data__core_mgr().Init_by_make(core_db_props, session); // make core_db + } + else { + Xowv_wiki wikiv = (Xowv_wiki)wiki; + wikiv.Init_by_make(core_db_props, session); // make core_db + } } } diff --git a/400_xowa/src/gplx/xowa/Xowe_wiki.java b/400_xowa/src/gplx/xowa/Xowe_wiki.java index 396d207a8..f2a6a0662 100644 --- a/400_xowa/src/gplx/xowa/Xowe_wiki.java +++ b/400_xowa/src/gplx/xowa/Xowe_wiki.java @@ -19,20 +19,21 @@ package gplx.xowa; import gplx.*; import gplx.core.brys.*; import gplx.core.primitives.*; import gplx.core.brys.fmtrs.*; import gplx.xowa.apps.*; import gplx.xowa.apps.fsys.*; import gplx.xowa.apps.cfgs.*; import gplx.xowa.apps.cfgs.gui.*; import gplx.xowa.apps.urls.*; import gplx.xowa.langs.*; import gplx.xowa.langs.msgs.*; import gplx.xowa.langs.cases.*; -import gplx.xowa.wikis.*; import gplx.xowa.wikis.domains.*; import gplx.xowa.wikis.xwikis.*; import gplx.xowa.wikis.nss.*; import gplx.xowa.wikis.metas.*; import gplx.xowa.wikis.data.site_stats.*; import gplx.xowa.wikis.ttls.*; import gplx.xowa.wikis.data.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.wikis.caches.*; import gplx.xowa.addons.*; +import gplx.xowa.wikis.*; import gplx.xowa.wikis.domains.*; import gplx.xowa.wikis.xwikis.*; import gplx.xowa.wikis.nss.*; import gplx.xowa.wikis.pages.*; import gplx.xowa.wikis.metas.*; import gplx.xowa.wikis.data.site_stats.*; import gplx.xowa.wikis.ttls.*; import gplx.xowa.wikis.data.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.wikis.caches.*; import gplx.xowa.users.*; import gplx.xowa.htmls.*; import gplx.xowa.users.history.*; import gplx.xowa.specials.*; import gplx.xowa.xtns.*; import gplx.xowa.wikis.dbs.*; import gplx.xowa.files.*; import gplx.xowa.files.repos.*; import gplx.xowa.files.origs.*; import gplx.xowa.files.bins.*; import gplx.fsdb.*; import gplx.fsdb.meta.*; import gplx.xowa.files.exts.*; -import gplx.xowa.htmls.heads.*; import gplx.xowa.htmls.core.htmls.utls.*; import gplx.xowa.htmls.core.hzips.*; import gplx.xowa.htmls.core.*; import gplx.xowa.htmls.css.*; import gplx.xowa.htmls.ns_files.*; import gplx.xowa.htmls.bridges.dbuis.tbls.*; +import gplx.xowa.htmls.heads.*; import gplx.xowa.htmls.core.htmls.utls.*; import gplx.xowa.htmls.core.hzips.*; import gplx.xowa.htmls.core.*; import gplx.xowa.htmls.ns_files.*; import gplx.xowa.htmls.bridges.dbuis.tbls.*; import gplx.xowa.bldrs.xmls.*; import gplx.xowa.bldrs.installs.*; import gplx.xowa.bldrs.setups.maints.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.utils.*; import gplx.xowa.wikis.ctgs.*; import gplx.xowa.guis.cbks.*; import gplx.xowa.guis.views.*; import gplx.xowa.xtns.gallery.*; import gplx.xowa.xtns.pfuncs.*; import gplx.xowa.wikis.tdbs.*; import gplx.xowa.wikis.tdbs.hives.*; -public class Xowe_wiki implements Xow_wiki, GfoInvkAble, GfoEvObj { +import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.htmls.css.mgrs.*; +public class Xowe_wiki implements Xow_wiki, Gfo_invk, Gfo_evt_itm { private boolean init_in_process = false; public Xowe_wiki(Xoae_app app, Xol_lang_itm lang, Xow_ns_mgr ns_mgr, Xow_domain_itm domain_itm, Io_url wiki_dir) { - this.ev_mgr = GfoEvMgr.new_(this); + this.ev_mgr = new Gfo_evt_mgr(this); this.app = app; this.lang = lang; this.ns_mgr = ns_mgr; this.domain_itm = domain_itm; this.domain_str = domain_itm.Domain_str(); this.domain_bry = domain_itm.Domain_bry(); this.domain_tid = domain_itm.Domain_type_id(); this.domain_abrv = Xow_abrv_wm_.To_abrv(domain_itm); this.fsys_mgr = new Xow_fsys_mgr(wiki_dir, app.Fsys_mgr().File_dir().GenSubDir(domain_str)); @@ -40,10 +41,11 @@ public class Xowe_wiki implements Xow_wiki, GfoInvkAble, GfoEvObj { this.xwiki_mgr = new Xow_xwiki_mgr(this); this.html__hdump_mgr = new Xow_hdump_mgr(this); this.html_mgr = new Xow_html_mgr(this); + this.page_mgr = new Xowe_page_mgr(this); tdb_fsys_mgr = new Xotdb_fsys_mgr(wiki_dir, ns_mgr); redirect_mgr = new Xop_redirect_mgr(this); - data_mgr = new Xow_data_mgr(this); + data_mgr = new Xow_page_mgr(this); file_mgr = new Xow_file_mgr(this); parser_mgr = new Xow_parser_mgr(this); cfg_parser = new Xowc_parser(this); @@ -51,7 +53,7 @@ public class Xowe_wiki implements Xow_wiki, GfoInvkAble, GfoEvObj { props.ContentLanguage_(lang.Key_bry()); stats = new Xow_site_stats_mgr(this); Pf_func_.Reg(domain_itm, lang.Func_regy(), lang); - special_mgr = new Xows_mgr(this, lang); + special_mgr = new Xow_special_mgr(this, lang); sys_cfg = new Xow_sys_cfg(this); hive_mgr = new Xob_hive_mgr(this); util = new Xow_html_util(this); @@ -75,7 +77,7 @@ public class Xowe_wiki implements Xow_wiki, GfoInvkAble, GfoEvObj { cache_mgr = new Xow_cache_mgr(this); /*if (Bry_.Eq(domain_bry, Xow_domain_itm_.Bry__home))*/ xwiki_mgr.Add_by_atrs(domain_bry, domain_bry); // add full name to xwiki_mgr; needed for lookup in home ns; EX: [[home:Help/Contents]] } - public GfoEvMgr EvMgr() {return ev_mgr;} private final GfoEvMgr ev_mgr; + public Gfo_evt_mgr Evt_mgr() {return ev_mgr;} private final Gfo_evt_mgr ev_mgr; public Xow_ns_mgr Ns_mgr() {return ns_mgr;} private final Xow_ns_mgr ns_mgr; public Xoa_ttl Ttl_parse(byte[] ttl) {return Xoa_ttl.parse(this, ttl);} public Xoa_ttl Ttl_parse(byte[] src, int src_bgn, int src_end) {return Xoa_ttl.new_(this, app.Msg_log(), src, src_bgn, src_end);} @@ -90,7 +92,7 @@ public class Xowe_wiki implements Xow_wiki, GfoInvkAble, GfoEvObj { public byte[] Domain_abrv() {return domain_abrv;} private final byte[] domain_abrv; public Xow_domain_itm Domain_itm() {return domain_itm;} private final Xow_domain_itm domain_itm; public Xow_fsys_mgr Fsys_mgr() {return fsys_mgr;} private final Xow_fsys_mgr fsys_mgr; - public Xowd_db_mgr Data__core_mgr() {if (db_mgr == null) return null; return db_mgr.Tid() == Xodb_mgr_txt.Tid_txt ? null : this.Db_mgr_as_sql().Core_data_mgr();} // TEST: + public Xow_db_mgr Data__core_mgr() {if (db_mgr == null) return null; return db_mgr.Tid() == Xodb_mgr_txt.Tid_txt ? null : this.Db_mgr_as_sql().Core_data_mgr();} // TEST: public Xof_fsdb_mode File__fsdb_mode() {return file_mgr.Fsdb_mode();} public Fsdb_db_mgr File__fsdb_core() {return file_mgr.Db_core();} public Xow_repo_mgr File__repo_mgr() {return file_mgr.Repo_mgr();} @@ -108,15 +110,16 @@ public class Xowe_wiki implements Xow_wiki, GfoInvkAble, GfoEvObj { public Xow_parser_mgr Parser_mgr() {return parser_mgr;} private final Xow_parser_mgr parser_mgr; public Xoax_addon_mgr Addon_mgr() {return addon_mgr;} private final Xoax_addon_mgr addon_mgr = new Xoax_addon_mgr(); public Xog_cbk_mgr Gui__cbk_mgr() {return gui__cbk_mgr;} private final Xog_cbk_mgr gui__cbk_mgr = new Xog_cbk_mgr(); + public Xowe_page_mgr Page_mgr() {return page_mgr;} private final Xowe_page_mgr page_mgr; public Xow_hdump_mgr Html__hdump_mgr() {return html__hdump_mgr;} private final Xow_hdump_mgr html__hdump_mgr; public Xoae_app Appe() {return app;} private Xoae_app app; public Xow_gui_mgr Gui_mgr() {return gui_mgr;} private final Xow_gui_mgr gui_mgr = new Xow_gui_mgr(); public Xow_user User() {return user;} private Xow_user user = new Xow_user(); - public Xow_data_mgr Data_mgr() {return data_mgr;} private Xow_data_mgr data_mgr; + public Xow_page_mgr Data_mgr() {return data_mgr;} private Xow_page_mgr data_mgr; public Xodb_mgr Db_mgr() {return db_mgr;} private Xodb_mgr db_mgr; public Xodb_mgr_sql Db_mgr_as_sql() {return (Xodb_mgr_sql)db_mgr;} - public Xows_mgr Special_mgr() {return special_mgr;} private Xows_mgr special_mgr; + public Xow_special_mgr Special_mgr() {return special_mgr;} private Xow_special_mgr special_mgr; public Xow_html_mgr Html_mgr() {return html_mgr;} private Xow_html_mgr html_mgr; public Xow_xtn_mgr Xtn_mgr() {return xtn_mgr;} private Xow_xtn_mgr xtn_mgr; public Xow_cache_mgr Cache_mgr() {return cache_mgr;} private Xow_cache_mgr cache_mgr; @@ -132,13 +135,13 @@ public class Xowe_wiki implements Xow_wiki, GfoInvkAble, GfoEvObj { public byte[] Wdata_wiki_abrv() {return wdata_wiki_abrv;} private byte[] wdata_wiki_abrv; private int wdata_wiki_tid; private void Wdata_wiki_abrv_() { Bry_bfr bfr = app.Utl__bfr_mkr().Get_b128(); - Xow_abrv_wm_.To_abrv(bfr, wdata_wiki_lang, Int_obj_ref.new_(wdata_wiki_tid)); + Xow_abrv_wm_.To_abrv(bfr, wdata_wiki_lang, Int_obj_ref.New(wdata_wiki_tid)); wdata_wiki_abrv = bfr.To_bry_and_rls(); } private Xow_html_util util; public boolean Init_needed() {return init_needed;} public Xowe_wiki Init_needed_(boolean v) {init_needed = v; return this;} private boolean init_needed = true; public Xop_redirect_mgr Redirect_mgr() {return redirect_mgr;} private Xop_redirect_mgr redirect_mgr; - public List_adp Rls_list() {if (rls_list == null) rls_list = List_adp_.new_(); return rls_list;} private List_adp rls_list; + public List_adp Rls_list() {if (rls_list == null) rls_list = List_adp_.New(); return rls_list;} private List_adp rls_list; public Xow_file_mgr File_mgr() {return file_mgr;} private Xow_file_mgr file_mgr; public Xow_cfg_wiki_core Cfg_wiki_core() {return cfg_wiki_core;} private Xow_cfg_wiki_core cfg_wiki_core; public Xob_import_cfg Import_cfg() {return import_cfg;} private Xob_import_cfg import_cfg; @@ -156,10 +159,11 @@ public class Xowe_wiki implements Xow_wiki, GfoInvkAble, GfoEvObj { db_mgr.Load_mgr().Clear(); } public Xodb_mgr_sql Db_mgr_create_as_sql() {Xodb_mgr_sql rv = new Xodb_mgr_sql(this); db_mgr = rv; return rv;} + public void Init_by_wiki__force() {init_needed = true; Init_by_wiki();} public void Init_by_wiki() {Init_assert();} public Xowe_wiki Init_assert() {if (init_needed) Init_wiki(app.Usere()); return this;} public void Init_db_mgr() { - Io_url core_db_url = gplx.xowa.wikis.Xow_fsys_mgr.Find_core_fil(this); + Io_url core_db_url = gplx.xowa.wikis.data.Xow_db_file__core_.Find_core_fil(this); if (core_db_url == null) { tdb_fsys_mgr.Scan_dirs(); } @@ -173,7 +177,7 @@ public class Xowe_wiki implements Xow_wiki, GfoInvkAble, GfoEvObj { private void Init_wiki(Xoue_user user) { // NOTE: (a) one-time initialization for all wikis; (b) not called by tests if (init_in_process) { app.Usr_dlg().Log_many("", "", "wiki.init: circular call canceled: ~{0}", domain_str); - return; // NOTE: may be called multiple times due to "if (app.Stage() == Xoa_stage_.Tid_launch) init_needed = false;"; TODO: call this only once; DATE:2014-06-07 + return; // NOTE: may be called multiple times due to "if (app.Stage() == Xoa_stage_.Tid_launch) init_needed = false;"; TODO_OLD: call this only once; DATE:2014-06-07 } init_in_process = true; if (app.Stage() == Xoa_stage_.Tid_launch) init_needed = false; // NOTE: only mark inited if app fully launched; otherwise statements in xowa.gfs can fire and prematurely set home to inited; DATE:2013-03-24 @@ -190,6 +194,7 @@ public class Xowe_wiki implements Xow_wiki, GfoInvkAble, GfoEvObj { if (lang.Init_by_load()) { if (domain_tid == Xow_domain_tid_.Int__wikipedia) // NOTE: if type is wikipedia, add "Wikipedia" as an alias; PAGE:en.w:pt.wikipedia.org/wiki/Página principal which redirects to Wikipedia:Página principal ns_mgr.Aliases_add(Xow_ns_.Tid__project, Xow_ns_.Alias__wikipedia); + special_mgr.Evt_lang_changed(lang); } app.Gfs_mgr().Run_url_for(this, app.Fsys_mgr().Cfg_wiki_core_dir().GenSubFil(domain_str + ".gfs")); // NOTE: must be run after lang.Init_by_load b/c lang will reload ns_mgr; DATE:2015-04-17run cfg for wiki by user ; EX: /xowa/user/anonymous/wiki/en.wikipedia.org/cfg/user_wiki.gfs cfg_parser.Xtns().Itm_pages().Init(ns_mgr); // init ns_mgr for Page / Index ns just before rebuild; usually set by #cfg file @@ -220,6 +225,7 @@ public class Xowe_wiki implements Xow_wiki, GfoInvkAble, GfoEvObj { rls.Rls(); } } + public void Init_needed_y_() {this.init_needed = true;} private void Copy_cfg(Xowe_wiki wiki) {html_mgr.Copy_cfg(wiki.Html_mgr());} public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_files)) return file_mgr; @@ -249,7 +255,7 @@ public class Xowe_wiki implements Xow_wiki, GfoInvkAble, GfoEvObj { else if (ctx.Match(k, Invk_xtns)) return xtn_mgr; else if (ctx.Match(k, Invk_hdump_enabled_)) this.html_mgr__hdump_enabled = m.ReadYn("v"); else if (ctx.Match(k, gplx.xowa.apps.apis.xowa.wikis.langs.Xoap_lang_variants.Evt_current_changed)) lang.Vnt_mgr().Cur_itm_(m.ReadBry("v")); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } public static final String diff --git a/400_xowa/src/gplx/xowa/Xowe_wiki_.java b/400_xowa/src/gplx/xowa/Xowe_wiki_.java index ed51e6a2f..5ac98b09e 100644 --- a/400_xowa/src/gplx/xowa/Xowe_wiki_.java +++ b/400_xowa/src/gplx/xowa/Xowe_wiki_.java @@ -23,6 +23,18 @@ public class Xowe_wiki_ { Xoapi_import import_api = wiki.Appe().Api_root().Bldr().Wiki().Import(); Xowd_core_db_props db_mgr_props = import_api.New_props(wiki.Domain_str(), src_fil_len); Xob_info_session info_session = Xob_info_session.new_(import_api.User_name(), wiki.Domain_str(), src_fil_name); - wiki.Db_mgr_as_sql().Core_data_mgr().Init_by_make(db_mgr_props, info_session); // make core_db + wiki.Data__core_mgr().Init_by_make(db_mgr_props, info_session); // make core_db + } + public static void Rls_mem_if_needed(Xowe_wiki wiki) { + Xoae_app app = wiki.Appe(); + if (gplx.core.envs.Env_.System_memory_free() < app.Sys_cfg().Free_mem_when()) // check if low in memory + Xowe_wiki_.Rls_mem(wiki, false); // clear caches (which will clear bry_bfr_mkr) + else // not low in memory + app.Utl__bfr_mkr().Clear(); // clear bry_bfr_mkr only; NOTE: call before page parse, not when page is first added, else threading errors; DATE:2014-05-30 + } + public static void Rls_mem(Xowe_wiki wiki, boolean clear_ctx) { + wiki.Appe().Free_mem(clear_ctx); + wiki.Cache_mgr().Free_mem_all(); + gplx.xowa.xtns.scribunto.Scrib_core.Core_invalidate(); } } diff --git a/400_xowa/src/gplx/xowa/addons/Xoax_addon_itm.java b/400_xowa/src/gplx/xowa/addons/Xoax_addon_itm.java index 96d1a5954..b0e04ef35 100644 --- a/400_xowa/src/gplx/xowa/addons/Xoax_addon_itm.java +++ b/400_xowa/src/gplx/xowa/addons/Xoax_addon_itm.java @@ -17,5 +17,5 @@ along with this program. If not, see . */ package gplx.xowa.addons; import gplx.*; import gplx.xowa.*; public interface Xoax_addon_itm { - byte[] Addon__key(); + String Addon__key(); } diff --git a/400_xowa/src/gplx/xowa/addons/Xoax_addon_itm__bldr.java b/400_xowa/src/gplx/xowa/addons/Xoax_addon_itm__bldr.java index 2869ac4ac..89b69885f 100644 --- a/400_xowa/src/gplx/xowa/addons/Xoax_addon_itm__bldr.java +++ b/400_xowa/src/gplx/xowa/addons/Xoax_addon_itm__bldr.java @@ -18,5 +18,5 @@ along with this program. If not, see . package gplx.xowa.addons; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.wkrs.*; public interface Xoax_addon_itm__bldr { - Xob_cmd[] Cmds_ary(); + Xob_cmd[] Bldr_cmds(); } diff --git a/400_xowa/src/gplx/xowa/addons/Xoax_addon_itm__json.java b/400_xowa/src/gplx/xowa/addons/Xoax_addon_itm__json.java index 4ac7246c2..e07305294 100644 --- a/400_xowa/src/gplx/xowa/addons/Xoax_addon_itm__json.java +++ b/400_xowa/src/gplx/xowa/addons/Xoax_addon_itm__json.java @@ -17,5 +17,5 @@ along with this program. If not, see . */ package gplx.xowa.addons; import gplx.*; import gplx.xowa.*; public interface Xoax_addon_itm__json { - gplx.xowa.htmls.bridges.Bridge_cmd_itm[] Json__cmds(); + gplx.xowa.htmls.bridges.Bridge_cmd_itm[] Json_cmds(); } diff --git a/400_xowa/src/gplx/xowa/addons/Xoax_addon_itm__special.java b/400_xowa/src/gplx/xowa/addons/Xoax_addon_itm__special.java index dc9899e59..a435bb1df 100644 --- a/400_xowa/src/gplx/xowa/addons/Xoax_addon_itm__special.java +++ b/400_xowa/src/gplx/xowa/addons/Xoax_addon_itm__special.java @@ -16,7 +16,6 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.addons; import gplx.*; import gplx.xowa.*; -import gplx.xowa.bldrs.wkrs.*; public interface Xoax_addon_itm__special { - gplx.xowa.specials.Xows_page[] Pages_ary(); + gplx.xowa.specials.Xow_special_page[] Special_pages(); } diff --git a/400_xowa/src/gplx/xowa/addons/Xoax_addon_mgr.java b/400_xowa/src/gplx/xowa/addons/Xoax_addon_mgr.java index 98ffbeb4d..f4d8afcfe 100644 --- a/400_xowa/src/gplx/xowa/addons/Xoax_addon_mgr.java +++ b/400_xowa/src/gplx/xowa/addons/Xoax_addon_mgr.java @@ -17,17 +17,18 @@ along with this program. If not, see . */ package gplx.xowa.addons; import gplx.*; import gplx.xowa.*; public class Xoax_addon_mgr { - private final Ordered_hash hash = Ordered_hash_.New_bry(); + private final Ordered_hash hash = Ordered_hash_.New(); // THREAD: must synchronized else two search tabs will fail on startup - public Xoax_addon_itm Itms__get_or_null(byte[] key) {synchronized (hash) {return (Xoax_addon_itm)hash.Get_by(key);}} + public Xoax_addon_itm Itms__get_or_null(String key) {synchronized (hash) {return (Xoax_addon_itm)hash.Get_by(key);}} public void Itms__add_many(Xoax_addon_itm... ary) { for (Xoax_addon_itm itm : ary) Itms__add(itm); } public void Itms__add(Xoax_addon_itm itm) { synchronized (hash) { - Xoa_app_.Usr_dlg().Log_many("", "", "addons.init: ~{0}", itm.Addon__key()); - hash.Add(itm.Addon__key(), itm); + String addon_key = itm.Addon__key(); + Xoa_app_.Usr_dlg().Log_many("", "", "addons.init: ~{0}", addon_key); + hash.Add(addon_key, itm); } } public Xoax_addon_mgr Add_dflts_by_app(Xoa_app app) { @@ -36,16 +37,20 @@ public class Xoax_addon_mgr { ); app.Addon_mgr().Itms__add_many // bldrs - ( new gplx.xowa.addons.builds.files .Xoax_builds_files_addon() - , new gplx.xowa.addons.builds.pagelinks .Xoax_builds_pagelinks_addon() - , new gplx.xowa.addons.builds.utils_rankings .Xoax_builds_utils_rankings_addon() - , new gplx.xowa.addons.apps.searchs .Xoax_builds_search_addon() - , new gplx.xowa.addons.updates.files .Xoax_updates_files_addon() - , new gplx.xowa.addons.builds.htmls .Html__dump_to_fsys__addon() + ( new gplx.xowa.addons.bldrs.files .Xoax_builds_files_addon() + , new gplx.xowa.addons.bldrs.pagelinks .Xoax_builds_pagelinks_addon() + , new gplx.xowa.addons.bldrs.utils_rankings .Xoax_builds_utils_rankings_addon() + , new gplx.xowa.addons.wikis.searchs .Xoax_builds_search_addon() + , new gplx.xowa.addons.bldrs.updates.files .Xoax_updates_files_addon() + , new gplx.xowa.addons.bldrs.htmls .Html__dump_to_fsys__addon() + , new gplx.xowa.addons.bldrs.exports .Export_addon() + , new gplx.xowa.addons.wikis.pages.randoms .Rndm_addon() // specials - , new gplx.xowa.addons.apps.file_browsers .Fbrow_addon() - , new gplx.xowa.addons.builds.centrals .Xoax_downloads_addon() + , new gplx.xowa.addons.wikis.registrys .Wiki_registry_addon() + , new gplx.xowa.addons.wikis.imports .Xow_import_addon() + , new gplx.xowa.addons.bldrs.centrals .Xobc_task_addon() + , new gplx.xowa.addons.apps.helps.logs .Xolog_addon() // jsons , new gplx.xowa.addons.servers.https .Xoax_long_poll_addon() @@ -56,23 +61,28 @@ public class Xoax_addon_mgr { int len = hash.Len(); for (int i = 0; i < len; ++i) { Xoax_addon_itm addon = (Xoax_addon_itm)hash.Get_at(i); + // add bldr cmds if (Type_adp_.Implements_intf_obj(addon, Xoax_addon_itm__bldr.class)) { Xoax_addon_itm__bldr addon_bldr = (Xoax_addon_itm__bldr)addon; - app.Bldr().Cmd_regy().Add_many(addon_bldr.Cmds_ary()); + app.Bldr().Cmd_regy().Add_many(addon_bldr.Bldr_cmds()); } + + // add special pages if (Type_adp_.Implements_intf_obj(addon, Xoax_addon_itm__special.class)) { Xoax_addon_itm__special addon_sp = (Xoax_addon_itm__special)addon; - app.Special_regy().Add_many(addon_sp.Pages_ary()); + app.Special_regy().Add_many(addon_sp.Special_pages()); } + + // add json mgrs if (Type_adp_.Implements_intf_obj(addon, Xoax_addon_itm__json.class)) { Xoax_addon_itm__json addon_json = (Xoax_addon_itm__json)addon; - gplx.xowa.htmls.bridges.Bridge_cmd_itm[] json_cmds = addon_json.Json__cmds(); + gplx.xowa.htmls.bridges.Bridge_cmd_itm[] json_cmds = addon_json.Json_cmds(); for (gplx.xowa.htmls.bridges.Bridge_cmd_itm json_cmd : json_cmds) { json_cmd.Init_by_app(app); app.Html__bridge_mgr().Cmd_mgr().Add(json_cmd); } } } - app.Gui__cbk_mgr().Reg(gplx.xowa.addons.servers.https.Xog_cbk_wkr__http.Instance); + // app.Gui__cbk_mgr().Reg(gplx.xowa.addons.servers.https.Xog_cbk_wkr__http.Instance); } } diff --git a/400_xowa/src/gplx/xowa/addons/apps/file_browsers/Fbrow_special_page.java b/400_xowa/src/gplx/xowa/addons/apps/file_browsers/Fbrow_special_page.java deleted file mode 100644 index b3b576e1c..000000000 --- a/400_xowa/src/gplx/xowa/addons/apps/file_browsers/Fbrow_special_page.java +++ /dev/null @@ -1,50 +0,0 @@ -/* -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.addons.apps.file_browsers; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; -import gplx.xowa.specials.*; import gplx.core.net.*; import gplx.xowa.wikis.pages.*; -import gplx.core.ios.*; -public class Fbrow_special_page implements Xows_page { - public void Special__gen(Xow_wiki wiki, Xoa_page page, Xoa_url url, Xoa_ttl ttl) { - Xopage_html_data html_data = Write_html(wiki.App(), url.Qargs_ary()); - html_data.Apply(page); - } - private static Xopage_html_data Write_html(Xoa_app app, Gfo_qarg_itm[] args_ary) { - // scan owner_dir - Xoa_url_arg_mgr arg_mgr = new Xoa_url_arg_mgr(null).Init(args_ary); - String owner_str = arg_mgr.Read_str_or_null("path"); if (owner_str == null) return Xopage_html_data.err_("url has unknown path"); - IoItmDir owner_dir = Io_mgr.Instance.QueryDir_args(Io_url_.new_any_(owner_str)).DirInclude_(true).ExecAsDir(); - Fbrow_file_itm owner_itm = Fbrow_file_itm.New(owner_dir); - - // write body - Io_url addon_dir = app.Fsys_mgr().Bin_addon_dir().GenSubDir_nest("import", "file_browser"); - byte[] template_src = Io_mgr.Instance.LoadFilBry(addon_dir.GenSubFil_nest("bin", "file_browser.mustache.html")); - Bry_bfr tmp_bfr = Bry_bfr.new_(); - byte[] body = gplx.langs.mustaches.Mustache_wtr_.Write_to_bry(tmp_bfr, template_src, owner_itm); - - // write head - Xopage_html_data rv = new Xopage_html_data(Display_ttl, body); - rv.Head_tags().Add(Xopg_tag_itm.New_css_file(addon_dir.GenSubFil_nest("bin", "file_browser.css"))); - return rv; - } - - public static final String SPECIAL_KEY = "XowaFileBrowser"; - public static final byte[] Display_ttl = Bry_.new_a7("Import XOWA Wikis"); - public Xows_special_meta Special__meta() {return new Xows_special_meta(Xows_special_meta_.Src__xowa, SPECIAL_KEY);} - public static final Xows_page Prototype = new Fbrow_special_page(); - public Xows_page Special__clone() {return this;} -} diff --git a/400_xowa/src/gplx/xowa/addons/apps/file_browsers/Wikis_list_page.java b/400_xowa/src/gplx/xowa/addons/apps/file_browsers/Wikis_list_page.java deleted file mode 100644 index 1691bb6b6..000000000 --- a/400_xowa/src/gplx/xowa/addons/apps/file_browsers/Wikis_list_page.java +++ /dev/null @@ -1,49 +0,0 @@ -/* -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.addons.apps.file_browsers; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; -import gplx.xowa.specials.*; import gplx.core.net.*; import gplx.xowa.wikis.pages.*; -public class Wikis_list_page implements Xows_page { - public void Special__gen(Xow_wiki wiki, Xoa_page page, Xoa_url url, Xoa_ttl ttl) { - Xoa_url_arg_mgr arg_mgr = new Xoa_url_arg_mgr(null).Init(url.Qargs_ary()); - Wikis_list_wtr wtr = new Wikis_list_wtr(); - byte[] cmd = arg_mgr.Read_bry_or_null("cmd"); - if (cmd == null) { - Xopage_html_data html_data = wtr.Write(wiki.App(), url.Qargs_ary(), GfoInvkAble_.Null); - html_data.Apply(page); - } - else { - if (Bry_.Eq(cmd, Bry_.new_a7("add"))) { - byte[] file = arg_mgr.Read_bry_or_null("file"); - if (file != null) { - if (wiki.App().Tid_is_edit()) { - wiki.App().User().User_db_mgr().Init_site_mgr(); - } - wiki.App().Wiki_mgri().Import_by_url(Io_url_.new_fil_(String_.new_u8(file))); - Xopage_html_data html_data = wtr.Write(wiki.App(), url.Qargs_ary(), GfoInvkAble_.Null); - html_data.Apply(page); - } - } - } - } - - public static final String SPECIAL_KEY = "XowaWikis"; - public static final byte[] Display_ttl = Bry_.new_a7("XOWA Wikis"); - public Xows_special_meta Special__meta() {return new Xows_special_meta(Xows_special_meta_.Src__xowa, SPECIAL_KEY);} - public static final Xows_page Prototype = new Wikis_list_page(); - public Xows_page Special__clone() {return this;} -} diff --git a/400_xowa/src/gplx/xowa/addons/apps/file_browsers/Wikis_list_wtr.java b/400_xowa/src/gplx/xowa/addons/apps/file_browsers/Wikis_list_wtr.java deleted file mode 100644 index e095e36bb..000000000 --- a/400_xowa/src/gplx/xowa/addons/apps/file_browsers/Wikis_list_wtr.java +++ /dev/null @@ -1,57 +0,0 @@ -/* -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.addons.apps.file_browsers; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; -import gplx.core.net.*; -import gplx.xowa.wikis.xwikis.*; -import gplx.langs.mustaches.*; -import gplx.xowa.users.data.*; import gplx.xowa.wikis.pages.*; -class Wikis_list_wtr { - public Xopage_html_data Write(Xoa_app app, Gfo_qarg_itm[] args, GfoInvkAble select_invkable) { - // scan wikis - List_adp list = List_adp_.new_(); - app.User().User_db_mgr().Init_site_mgr(); - Xoud_site_row[] site_ary = app.User().User_db_mgr().Site_mgr().Get_all(); - int len = site_ary.length; - for (int i = 0; i < len; ++i) { - Xoud_site_row site_itm = site_ary[i]; - if (String_.Eq(site_itm.Domain(), gplx.xowa.wikis.domains.Xow_domain_itm_.Str__home)) continue; - list.Add(new Wikis_list_itm(Bry_.new_u8(site_itm.Domain()), Bry_.new_a7("2016-03-05"))); - } - Wikis_list_mgr mgr = new Wikis_list_mgr(Get_root_url(), (Wikis_list_itm[])list.To_ary_and_clear(Wikis_list_itm.class)); - - // write body - Io_url addon_dir = app.Fsys_mgr().Bin_addon_dir().GenSubDir_nest("app", "wiki_list"); - byte[] template_src = Io_mgr.Instance.LoadFilBry(addon_dir.GenSubFil_nest("bin", "wiki_list.mustache.html")); - Bry_bfr tmp_bfr = Bry_bfr.new_(); - byte[] body = gplx.langs.mustaches.Mustache_wtr_.Write_to_bry(tmp_bfr, template_src, mgr); - - // write to html - Xopage_html_data rv = new Xopage_html_data(Wikis_list_page.Display_ttl, body); - rv.Head_tags().Add(Xopg_tag_itm.New_css_file(addon_dir.GenSubFil_nest("bin", "wiki_list.css"))); - return rv; - } - private static byte[] Get_root_url() { - byte tid = gplx.core.envs.Op_sys.Cur().Tid(); - byte[] rv = Bry_.new_a7("/"); - switch (tid) { - case gplx.core.envs.Op_sys.Tid_wnt : rv = Bry_.new_a7("C:\\"); break; - } - rv = gplx.langs.htmls.encoders.Gfo_url_encoder_.Href.Encode(rv); - return rv; - } -} diff --git a/400_xowa/src/gplx/xowa/addons/apps/file_browsers/Xoa_url_arg_mgr.java b/400_xowa/src/gplx/xowa/addons/apps/file_browsers/Xoa_url_arg_mgr.java deleted file mode 100644 index 3ae63a747..000000000 --- a/400_xowa/src/gplx/xowa/addons/apps/file_browsers/Xoa_url_arg_mgr.java +++ /dev/null @@ -1,50 +0,0 @@ -/* -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.addons.apps.file_browsers; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; -import gplx.core.primitives.*; import gplx.core.net.*; -public class Xoa_url_arg_mgr { - private final Hash_adp_bry hash = Hash_adp_bry.cs(); - private final Xoa_url_enum_mgr enm_mgr; - public Xoa_url_arg_mgr(Xoa_url_enum_mgr enm_mgr) {this.enm_mgr = enm_mgr;} - public Xoa_url_arg_mgr Init(Gfo_qarg_itm[] args) { - hash.Clear(); - int len = args.length; - for (int i = 0; i < len; ++i) { - Gfo_qarg_itm arg = args[i]; - hash.Add_bry_obj(arg.Key_bry(), arg); - } - return this; - } - public int Read_enm_or_neg1(byte[] key) { - Xoa_url_enum_itm enm = enm_mgr.Get(key); if (enm == null) return -1; - Gfo_qarg_itm arg = (Gfo_qarg_itm)hash.Get_by_bry(key); if (arg == null) return -1; - return enm.Get_as_int_or(arg.Val_bry(), -1); - } - public byte[] Read_bry_or_empty(byte[] key) {return Read_bry_or(key, Bry_.Empty);} - public byte[] Read_bry_or_null(String key) {return Read_bry_or_null(Bry_.new_u8(key));} - public byte[] Read_bry_or_null(byte[] key) {return Read_bry_or(key, null);} - public byte[] Read_bry_or(byte[] key, byte[] or) { - Gfo_qarg_itm arg = (Gfo_qarg_itm)hash.Get_by_bry(key); - return arg == null ? or : arg.Val_bry(); - } - public String Read_str_or_null(String key) {return Read_str_or_null(Bry_.new_u8(key));} - public String Read_str_or_null(byte[] key) { - Gfo_qarg_itm arg = (Gfo_qarg_itm)hash.Get_by_bry(key); - return arg == null ? null : String_.new_u8(arg.Val_bry()); - } -} diff --git a/400_xowa/src/gplx/xowa/addons/builds/centrals/Xoax_downloads_addon.java b/400_xowa/src/gplx/xowa/addons/apps/helps/logs/Xolog_addon.java similarity index 59% rename from 400_xowa/src/gplx/xowa/addons/builds/centrals/Xoax_downloads_addon.java rename to 400_xowa/src/gplx/xowa/addons/apps/helps/logs/Xolog_addon.java index 7c29c57dc..bca0b89de 100644 --- a/400_xowa/src/gplx/xowa/addons/builds/centrals/Xoax_downloads_addon.java +++ b/400_xowa/src/gplx/xowa/addons/apps/helps/logs/Xolog_addon.java @@ -15,20 +15,14 @@ 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.addons.builds.centrals; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.builds.*; +package gplx.xowa.addons.apps.helps.logs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; import gplx.xowa.addons.apps.helps.*; import gplx.xowa.specials.*; import gplx.xowa.htmls.bridges.*; -public class Xoax_downloads_addon implements Xoax_addon_itm, Xoax_addon_itm__special, Xoax_addon_itm__json { - public Xows_page[] Pages_ary() { - return new Xows_page[] - { Xoa_dashboard_special.Prototype - }; - } - public Bridge_cmd_itm[] Json__cmds() { - return new Bridge_cmd_itm[] - { gplx.xowa.addons.builds.centrals.Xoa_dashboard_bridge.Prototype +public class Xolog_addon implements Xoax_addon_itm, Xoax_addon_itm__special { + public Xow_special_page[] Special_pages() { + return new Xow_special_page[] + { Xolog_special.Prototype }; } - public static final byte[] ADDON_KEY = Bry_.new_a7("xowa.imports.downloads"); - public byte[] Addon__key() {return ADDON_KEY;} + public String Addon__key() {return "xowa.apps.helps.logs";} } diff --git a/400_xowa/src/gplx/xowa/addons/apps/helps/logs/Xolog_doc.java b/400_xowa/src/gplx/xowa/addons/apps/helps/logs/Xolog_doc.java new file mode 100644 index 000000000..8f81baf96 --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/apps/helps/logs/Xolog_doc.java @@ -0,0 +1,87 @@ +/* +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.addons.apps.helps.logs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; import gplx.xowa.addons.apps.helps.*; +import gplx.langs.mustaches.*; +class Xolog_doc implements Mustache_doc_itm { + public Xolog_doc(String log_file, String log_name, byte[] log_data, Xolog_doc_file[] log_files) { + this.log_file = log_file; this.log_name = log_name; + this.log_data = log_data; this.log_files = log_files; + } + public String Log_file() {return log_file;} private final String log_file; // EX: 20160613_165025 + public String Log_name() {return log_name;} private final String log_name; // EX: 2016-06-13 16:50:25 + public byte[] Log_data() {return log_data;} private final byte[] log_data; + public Xolog_doc_file[] Log_files() {return log_files;} private final Xolog_doc_file[] log_files; + public boolean Mustache__write(String key, Mustache_bfr bfr) { + if (String_.Eq(key, "log_name")) bfr.Add_str_u8(log_name); + else if (String_.Eq(key, "log_file")) bfr.Add_str_u8(log_file); + else if (String_.Eq(key, "log_data")) bfr.Add_bry(log_data); + return false; + } + public Mustache_doc_itm[] Mustache__subs(String key) { + if (String_.Eq(key, "log_files")) return log_files; + return Mustache_doc_itm_.Ary__empty; + } +} +class Xolog_doc_ { + public static Xolog_doc New(Io_url log_dir, String log_file) { + // read fsys + Io_url[] fils = Io_mgr.Instance.QueryDir_fils(log_dir); + int len = fils.length; + + // get log_files + Ordered_hash hash = Ordered_hash_.New(); + for (int i = 0; i < len; ++i) { + Io_url fil = fils[i]; + String file = fil.NameOnly(); + String name = Xolog_file_utl.To_name(file); + hash.Add(file, new Xolog_doc_file(file, name)); + } + + // determine cur_file + String cur_file = log_file; + if ( cur_file == null // cur_file is null; happens for plain "Special:XowaLog" + || !hash.Has(cur_file) // cur_file deleted (accessed from history) + ) { + cur_file = hash.Len() == 0 + ? null + : ((Xolog_doc_file)hash.Get_at(len - 1)).File(); + } + if (cur_file != null) + hash.Del(cur_file); // don't bother showing current item in list + Xolog_doc_file[] log_files = (Xolog_doc_file[])hash.To_ary_and_clear(Xolog_doc_file.class); + + // get body + byte[] cur_body = Io_mgr.Instance.LoadFilBry(Xolog_file_utl.To_url_by_file(log_dir, cur_file)); + String cur_name = cur_file == null ? null : Xolog_file_utl.To_name(cur_file); + return new Xolog_doc(cur_file, cur_name, cur_body, log_files); + } +} +class Xolog_doc_file implements Mustache_doc_itm { + public Xolog_doc_file(String file, String name) { + this.file = file; this.name = name; + } + public String File() {return file;} private final String file; + public String Name() {return name;} private final String name; + public boolean Mustache__write(String key, Mustache_bfr bfr) { + if (String_.Eq(key, "file")) bfr.Add_str_u8(file); + else if (String_.Eq(key, "name")) bfr.Add_str_u8(name); + else return false; + return true; + } + public Mustache_doc_itm[] Mustache__subs(String key) {return Mustache_doc_itm_.Ary__empty;} +} diff --git a/400_xowa/src/gplx/xowa/addons/apps/helps/logs/Xolog_html.java b/400_xowa/src/gplx/xowa/addons/apps/helps/logs/Xolog_html.java new file mode 100644 index 000000000..70e289ea0 --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/apps/helps/logs/Xolog_html.java @@ -0,0 +1,38 @@ +/* +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.addons.apps.helps.logs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; import gplx.xowa.addons.apps.helps.*; +import gplx.xowa.specials.*; import gplx.langs.mustaches.*; import gplx.xowa.wikis.pages.*; import gplx.xowa.wikis.pages.tags.*; +class Xolog_html extends Xow_special_wtr__base { + private final Xolog_doc log_doc; + public Xolog_html(Xolog_doc log_doc) { + this.log_doc = log_doc; + } + @Override protected Io_url Get_addon_dir(Xoa_app app) {return app.Fsys_mgr().Http_root().GenSubDir_nest("bin", "any", "xowa", "addon", "app", "help", "log");} + @Override protected Io_url Get_mustache_fil(Io_url addon_dir) {return addon_dir.GenSubFil_nest("bin", "xolog.mustache.html");} + @Override protected Mustache_doc_itm Bld_mustache_root(Xoa_app app) { + return log_doc; + } + @Override protected void Bld_tags(Xoa_app app, Io_url addon_dir, Xopage_html_data page_data) { + Xopg_tag_mgr head_tags = page_data.Head_tags(); + Xopg_tag_wtr_.Add__xocss (head_tags, app.Fsys_mgr().Http_root()); + Xopg_tag_wtr_.Add__xohelp (head_tags, app.Fsys_mgr().Http_root()); + Xopg_alertify_.Add_tags (head_tags, app.Fsys_mgr().Http_root()); + page_data.Head_tags().Add(Xopg_tag_itm.New_css_file(addon_dir.GenSubFil_nest("bin", "xolog.css"))); + page_data.Head_tags().Add(Xopg_tag_itm.New_js_file(addon_dir.GenSubFil_nest("bin", "xolog.js"))); + } +} diff --git a/400_xowa/src/gplx/xowa/addons/apps/helps/logs/Xolog_special.java b/400_xowa/src/gplx/xowa/addons/apps/helps/logs/Xolog_special.java new file mode 100644 index 000000000..332c9da73 --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/apps/helps/logs/Xolog_special.java @@ -0,0 +1,78 @@ +/* +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.addons.apps.helps.logs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; import gplx.xowa.addons.apps.helps.*; +import gplx.xowa.specials.*; import gplx.core.net.*; import gplx.core.net.qargs.*; import gplx.xowa.wikis.pages.*; +import gplx.core.net.emails.*; +public class Xolog_special implements Xow_special_page { + public void Special__gen(Xow_wiki wiki, Xoa_page page, Xoa_url url, Xoa_ttl ttl) { + // init + Gfo_qarg_mgr url_args = new Gfo_qarg_mgr().Init(url.Qargs_ary()); + Xoa_app app = wiki.App(); + Gfo_log_.Instance.Flush(); // flush log to write all memory itms to disk + + // get file + String file = url_args.Read_str_or_null("file"); + Io_url log_dir = app.Fsys_mgr().Root_dir().GenSubDir_nest("user", "anonymous", "app", "tmp", "xolog"); + Xolog_doc log_doc = Xolog_doc_.New(log_dir, file); + if (log_doc.Log_file() == null) return; // occurs when all logs are deleted + + // get cmd + int cmd_tid = url_args.Read_enm_as_int_or(Enm_cmd.Itm, Enm_cmd.Tid__view); + boolean redirect = true, redirect_to_same_file = false;; + switch (cmd_tid) { + case Enm_cmd.Tid__view: redirect = false; break; + case Enm_cmd.Tid__email: redirect_to_same_file = true; Gfo_email_mgr_.Instance.Send("gnosygnu+xowa_xologs@gmail.com", "XOWA Log", String_.new_u8(log_doc.Log_data())); break; + case Enm_cmd.Tid__delete_one: Io_mgr.Instance.DeleteFil(Xolog_file_utl.To_url_by_file(log_dir, log_doc.Log_file())); break; + case Enm_cmd.Tid__delete_all: Io_mgr.Instance.DeleteDirDeep(log_dir); break; + } + + if (redirect) { + String redirect_ttl = special__meta.Ttl_str() + "?cmd=view"; + if (redirect_to_same_file && file != null) + redirect_ttl += "&file=" + file; + page.Redirect_to_ttl_(Bry_.new_u8(redirect_ttl)); + return; + } + else + new Xolog_html(log_doc).Bld_page_by_mustache(app, page, this); + } + static class Enm_cmd {//#*nested + public static final int Tid__view = 0, Tid__email = 1, Tid__delete_one = 2, Tid__delete_all = 3; + public static final Gfo_qarg_enum_itm Itm = new Gfo_qarg_enum_itm("cmd") + .Add("view" , Tid__view) + .Add("email" , Tid__email) + .Add("delete_one" , Tid__delete_one) + .Add("delete_all" , Tid__delete_all) + ; + } + Xolog_special(Xow_special_meta special__meta) {this.special__meta = special__meta;} + public Xow_special_meta Special__meta() {return special__meta;} private final Xow_special_meta special__meta; + public Xow_special_page Special__clone() {return this;} + public static final Xow_special_page Prototype = new Xolog_special(Xow_special_meta.New_xo("XowaLog", "Logs")); +} +class Xolog_file_utl {// yyyyMMdd_HHmmss.log + private static final String Gui__date_fmt = "yyyy-MM-dd HH:mm:ss"; + public static String To_name(Io_url url) {return To_name(url.NameOnly());} + public static String To_name(String file) { + DateAdp date = DateAdp_.parse_fmt(file, Gfo_log_.File__fmt); + return date.XtoStr_fmt(Gui__date_fmt); + } + public static Io_url To_url_by_file(Io_url dir, String file) { + return dir.GenSubFil(file + Gfo_log_.File__ext); + } +} diff --git a/400_xowa/src/gplx/xowa/addons/apps/searchs/searchers/cbks/Srch_suggest_cmd__page_tbl.java b/400_xowa/src/gplx/xowa/addons/apps/searchs/searchers/cbks/Srch_suggest_cmd__page_tbl.java deleted file mode 100644 index a15781af3..000000000 --- a/400_xowa/src/gplx/xowa/addons/apps/searchs/searchers/cbks/Srch_suggest_cmd__page_tbl.java +++ /dev/null @@ -1,51 +0,0 @@ -/* -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 . -*/ -//namespace gplx.xowa.addons.apps.searchs.searchers.cbks { -// class Srch_suggest_cmd__page_tbl { -// private boolean Search_by_all_pages_v2() { -// rslts_2.Clear(); -// Xoa_ttl search_ttl = Xoa_ttl.parse(wiki, search_bry); if (search_ttl == null) return false; -// byte[] search_ttl_bry = search_ttl.Page_db(); -// wiki.Db_mgr().Load_mgr().Load_ttls_for_search_suggest(this, rslts_2, search_ttl.Ns(), search_ttl_bry, max_results, all_pages_min, all_pages_extend, true, false); -// return true; -// } -// private boolean Search_by_all_pages_v1() { -// rslts_2.Clear(); -// Xowd_page_itm rslt_nxt = new Xowd_page_itm(); -// Xowd_page_itm rslt_prv = new Xowd_page_itm(); -// Xoa_ttl search_ttl = Xoa_ttl.parse(wiki, search_bry); if (search_ttl == null) return false; -// byte[] search_ttl_bry = search_ttl.Page_db(); -// List_adp page_list = List_adp_.new_(); -// wiki.Db_mgr().Load_mgr().Load_ttls_for_all_pages(this, page_list, rslt_nxt, rslt_prv, Int_obj_ref.zero_(), wiki.Ns_mgr().Ns_main(), search_ttl_bry, max_results, all_pages_min, all_pages_extend, true, false); -// Xowd_page_itm[] page_ary = (Xowd_page_itm[])page_list.To_ary_and_clear(typeof(Xowd_page_itm)); -// int idx = 0, page_ary_len = page_ary.length; -// for (int i = 0; i < page_ary_len; i++) { -// Xowd_page_itm page = page_ary[i]; -// if (page != null) { -// if (!Bry_.Has_at_bgn(page.Ttl_page_db(), search_ttl_bry)) continue; // look-ahead may return other titles that don't begin with search; ignore -// if (page.Text_len() > all_pages_min) { -// rslts_2.Add(page); -// idx++; -// } -// } -// if (idx == max_results) break; -// } -// return true; -// } -// } -//} diff --git a/400_xowa/src/gplx/xowa/addons/apps/searchs/searchers/rslts/Hash_adp__int.java b/400_xowa/src/gplx/xowa/addons/apps/searchs/searchers/rslts/Hash_adp__int.java deleted file mode 100644 index 042d1c333..000000000 --- a/400_xowa/src/gplx/xowa/addons/apps/searchs/searchers/rslts/Hash_adp__int.java +++ /dev/null @@ -1,27 +0,0 @@ -/* -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.addons.apps.searchs.searchers.rslts; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; import gplx.xowa.addons.apps.searchs.*; import gplx.xowa.addons.apps.searchs.searchers.*; -import gplx.core.primitives.*; -class Hash_adp__int { - private final Hash_adp hash = Hash_adp_.new_(); - private final Int_obj_ref tmp_key = Int_obj_ref.neg1_(); - public void Clear() {hash.Clear();} - public Object Get_by(int key) {return hash.Get_by(tmp_key.Val_(key));} - public void Add(int key, Object obj) {hash.Add(Int_obj_ref.new_(key), obj);} - public void Add_if_dupe_use_1st(int key, Object obj) {hash.Add_if_dupe_use_1st(Int_obj_ref.new_(key), obj);} -} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/centrals/Xobc_task_addon.java b/400_xowa/src/gplx/xowa/addons/bldrs/centrals/Xobc_task_addon.java new file mode 100644 index 000000000..cdcf06bed --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/centrals/Xobc_task_addon.java @@ -0,0 +1,33 @@ +/* +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.addons.bldrs.centrals; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; +import gplx.xowa.specials.*; import gplx.xowa.htmls.bridges.*; +public class Xobc_task_addon implements Xoax_addon_itm, Xoax_addon_itm__special, Xoax_addon_itm__json { + public Xow_special_page[] Special_pages() { + return new Xow_special_page[] + { Xobc_task_special.Prototype + }; + } + public Bridge_cmd_itm[] Json_cmds() { + return new Bridge_cmd_itm[] + { gplx.xowa.addons.bldrs.centrals.Xobc_task_bridge.Prototype + }; + } + + public String Addon__key() {return "xowa.imports.downloads";} +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/centrals/Xobc_task_bridge.java b/400_xowa/src/gplx/xowa/addons/bldrs/centrals/Xobc_task_bridge.java new file mode 100644 index 000000000..417a38c6a --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/centrals/Xobc_task_bridge.java @@ -0,0 +1,55 @@ +/* +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.addons.bldrs.centrals; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; +import gplx.langs.jsons.*; +import gplx.xowa.addons.bldrs.centrals.cmds.*; +public class Xobc_task_bridge implements gplx.xowa.htmls.bridges.Bridge_cmd_itm { + public void Init_by_app(Xoa_app app) {} + public String Exec(Json_nde data) { + Xobc_task_mgr task_mgr = Xobc_task_special.Task_mgr; + byte proc_id = proc_hash.Get_as_byte_or(data.Get_as_bry_or(Msg__proc, null), Byte_ascii.Max_7_bit); + Json_nde args = data.Get_kv(Msg__args).Val_as_nde(); + switch (proc_id) { + case Proc__reload: task_mgr.Reload(); break; + case Proc__add_work: task_mgr.Todo_mgr().Add_work(args.Get_as_int("task_id")); break; + case Proc__del_work: task_mgr.Work_mgr().Del_work(args.Get_as_int("task_id")); break; + case Proc__del_done: task_mgr.Done_mgr().Del_done(args.Get_as_int("task_id")); break; + case Proc__run_next: task_mgr.Work_mgr().Run_next(); break; + case Proc__stop_cur: task_mgr.Work_mgr().Stop_cur(); break; + case Proc__redo_cur: task_mgr.Work_mgr().Redo_cur(); break; + case Proc__download_db: gplx.xowa.addons.bldrs.centrals.dbs.Xobc_data_db_upgrader.Check_for_updates(task_mgr); break; + default: throw Err_.new_unhandled_default(proc_id); + } + return ""; + } + private static final byte[] Msg__proc = Bry_.new_a7("proc"), Msg__args = Bry_.new_a7("args"); + private static final byte Proc__reload = 0, Proc__add_work = 1, Proc__del_work = 2, Proc__del_done = 3, Proc__run_next = 4, Proc__stop_cur = 5, Proc__redo_cur = 6, Proc__download_db = 7; + private static final Hash_adp_bry proc_hash = Hash_adp_bry.cs() + .Add_str_byte("reload" , Proc__reload) + .Add_str_byte("add_work" , Proc__add_work) + .Add_str_byte("del_work" , Proc__del_work) + .Add_str_byte("del_done" , Proc__del_done) + .Add_str_byte("run_next" , Proc__run_next) + .Add_str_byte("stop_cur" , Proc__stop_cur) + .Add_str_byte("redo_cur" , Proc__redo_cur) + .Add_str_byte("download_db" , Proc__download_db) + ; + + public byte[] Key() {return BRIDGE_KEY;} public static final byte[] BRIDGE_KEY = Bry_.new_a7("builder_central.exec"); + public static final Xobc_task_bridge Prototype = new Xobc_task_bridge(); Xobc_task_bridge() {} +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/centrals/Xobc_task_doc.java b/400_xowa/src/gplx/xowa/addons/bldrs/centrals/Xobc_task_doc.java new file mode 100644 index 000000000..36ba7208c --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/centrals/Xobc_task_doc.java @@ -0,0 +1,34 @@ +/* +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.addons.bldrs.centrals; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; +import gplx.langs.mustaches.*; +class Xobc_task_doc implements Mustache_doc_itm { + private final boolean app_is_drd; + private final String link_help; + public Xobc_task_doc(boolean app_is_drd, String link_help) { + this.app_is_drd = app_is_drd; this.link_help = link_help; + } + public boolean Mustache__write(String key, Mustache_bfr bfr) { + if (String_.Eq(key, "link_help")) bfr.Add_str_u8(link_help); + return false; + } + public Mustache_doc_itm[] Mustache__subs(String key) { + if (String_.Eq(key, "app_is_drd")) return Mustache_doc_itm_.Ary__bool(app_is_drd); + return Mustache_doc_itm_.Ary__empty; + } +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/centrals/Xobc_task_html.java b/400_xowa/src/gplx/xowa/addons/bldrs/centrals/Xobc_task_html.java new file mode 100644 index 000000000..5948181c6 --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/centrals/Xobc_task_html.java @@ -0,0 +1,48 @@ +/* +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.addons.bldrs.centrals; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; +import gplx.xowa.specials.*; import gplx.langs.mustaches.*; import gplx.xowa.wikis.pages.*; import gplx.xowa.wikis.pages.tags.*; +class Xobc_task_html extends Xow_special_wtr__base { + @Override protected Io_url Get_addon_dir(Xoa_app app) {return app.Fsys_mgr().Http_root().GenSubDir_nest("bin", "any", "xowa", "addon", "bldr", "central");} + @Override protected Io_url Get_mustache_fil(Io_url addon_dir) {return addon_dir.GenSubFil_nest("bin", "xobc.main.mustache.html");} + @Override protected Mustache_doc_itm Bld_mustache_root(Xoa_app app) { + return new Xobc_task_doc(gplx.core.envs.Op_sys.Cur().Tid_is_drd(), "/site/home/wiki/App/Import/Download_Central"); + } + @Override protected void Bld_tags(Xoa_app app, Io_url addon_dir, Xopage_html_data page_data) { + Xopg_tag_mgr head_tags = page_data.Head_tags(); + Xopg_alertify_.Add_tags (head_tags, app.Fsys_mgr().Http_root()); + Xopg_tag_wtr_.Add__xocss (head_tags, app.Fsys_mgr().Http_root()); + Xopg_tag_wtr_.Add__xohelp (head_tags, app.Fsys_mgr().Http_root()); + Xopg_tag_wtr_.Add__mustache (head_tags, app.Fsys_mgr().Http_root()); + Xopg_tag_wtr_.Add__jquery (head_tags, app.Fsys_mgr().Http_root()); + Xopg_tag_wtr_.Add__notifyjs (head_tags, app.Fsys_mgr().Http_root()); + + head_tags.Add(Xopg_tag_itm.New_css_file(addon_dir.GenSubFil_nest("js", "xo.log.css"))); + head_tags.Add(Xopg_tag_itm.New_css_file(addon_dir.GenSubFil_nest("bin", "xobc.css"))); + head_tags.Add(Xopg_tag_itm.New_htm_frag(addon_dir.GenSubFil_nest("bin", "xobc.row.mustache.html"), "xobc.row")); + head_tags.Add(Xopg_tag_itm.New_js_file(addon_dir.GenSubFil_nest("js", "xo.log.js"))); + head_tags.Add(Xopg_tag_itm.New_js_file(addon_dir.GenSubFil_nest("js", "xo.app.js"))); + head_tags.Add(Xopg_tag_itm.New_js_file(addon_dir.GenSubFil_nest("js", "xo.app." + (gplx.core.envs.Op_sys.Cur().Tid_is_drd() ? "drd" : "swt") + ".js"))); + head_tags.Add(Xopg_tag_itm.New_js_file(addon_dir.GenSubFil_nest("js", "xo.elem.js"))); + head_tags.Add(Xopg_tag_itm.New_js_file(addon_dir.GenSubFil_nest("js", "xo.tmpl.js"))); + head_tags.Add(Xopg_tag_itm.New_js_file(addon_dir.GenSubFil_nest("js", "xo.notify.js"))); + head_tags.Add(Xopg_tag_itm.New_js_file(addon_dir.GenSubFil_nest("js", "xo.server.js"))); + head_tags.Add(Xopg_tag_itm.New_js_file(addon_dir.GenSubFil_nest("js", "xobc.util.js"))); + head_tags.Add(Xopg_tag_itm.New_js_file(addon_dir.GenSubFil_nest("js", "xobc.js"))); + } +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/centrals/Xobc_task_mgr.java b/400_xowa/src/gplx/xowa/addons/bldrs/centrals/Xobc_task_mgr.java new file mode 100644 index 000000000..d86ae4626 --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/centrals/Xobc_task_mgr.java @@ -0,0 +1,70 @@ +/* +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.addons.bldrs.centrals; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; +import gplx.core.brys.evals.*; import gplx.core.gfobjs.*; import gplx.core.progs.rates.*; import gplx.core.threads.*; +import gplx.xowa.addons.bldrs.centrals.tasks.*; import gplx.xowa.addons.bldrs.centrals.steps.*; import gplx.xowa.addons.bldrs.centrals.cmds.*; import gplx.xowa.addons.bldrs.centrals.dbs.*; +import gplx.xowa.guis.cbks.*; +public class Xobc_task_mgr implements Xog_json_wkr { + private final Xog_cbk_trg cbk_trg = Xog_cbk_trg.New(Xobc_task_special.Prototype.Special__meta().Ttl_bry()); + public Xobc_task_mgr(Xoa_app app, Io_url data_db_url) { + this.app = app; + this.cbk_mgr = app.Gui__cbk_mgr(); + this.user_db = new Xobc_user_db(app.User().User_db_mgr().Conn()); + this.data_db = new Xobc_data_db(data_db_url); + this.work_mgr = new Xobc_task_regy__work(this, app); + this.todo_mgr = new Xobc_task_regy__todo(this); + this.done_mgr = new Xobc_task_regy__done(this); + this.step_mgr = new Xobc_step_factory(this, data_db, app.Fsys_mgr().Wiki_dir()); + this.ary = new Xobc_task_regy__base[] {work_mgr, todo_mgr, done_mgr}; + this.rate_mgr = Xobc_cmd__base.New_rate_mgr(); + } + public Xoa_app App() {return app;} private final Xoa_app app; + public Xog_cbk_mgr Cbk_mgr() {return cbk_mgr;} private final Xog_cbk_mgr cbk_mgr; + public Xobc_task_regy__work Work_mgr() {return work_mgr;} private final Xobc_task_regy__work work_mgr; + public Xobc_task_regy__todo Todo_mgr() {return todo_mgr;} private final Xobc_task_regy__todo todo_mgr; + public Xobc_task_regy__done Done_mgr() {return done_mgr;} private final Xobc_task_regy__done done_mgr; + public Xobc_task_regy__base Get_at(int i) {return ary[i];} private final Xobc_task_regy__base[] ary; + public Xobc_data_db Data_db() {return data_db;} private final Xobc_data_db data_db; + public Xobc_user_db User_db() {return user_db;} private final Xobc_user_db user_db; + public Gfo_rate_mgr Rate_mgr() {return rate_mgr;} private final Gfo_rate_mgr rate_mgr; + public Xobc_step_factory Step_mgr() {return step_mgr;} private final Xobc_step_factory step_mgr; + public void Send_json(String func, Gfobj_nde data) {cbk_mgr.Send_json(cbk_trg, func, data);} + public Xobc_task_mgr Load_or_init() { + Gfo_log_.Instance.Info("task_mgr.load_or_init.bgn"); + data_db.Tbl__task_regy().Select_all(todo_mgr); + user_db.Work_task_tbl().Select_all(this, todo_mgr, work_mgr); + user_db.Done_task_tbl().Select_all(todo_mgr, done_mgr); + return this; + } + public void Reload() { + Gfo_log_.Instance.Info("task_mgr.reload.bgn"); + Gfobj_nde root = Gfobj_nde.New(); + Gfobj_nde lists_nde = root.New_nde("lists"); + work_mgr.Save_to(lists_nde.New_ary("work")); + todo_mgr.Save_to(lists_nde.New_ary("todo")); + done_mgr.Save_to(lists_nde.New_ary("done")); + cbk_mgr.Send_json(cbk_trg, "xo.bldr.core.reload__recv", root); + } + public void Transfer(Xobc_task_regy__base src, Xobc_task_regy__base trg, Xobc_task_itm task) { + Gfo_log_.Instance.Info("task_mgr.transfer.bgn", "task_uid", task.Task_id(), "src", src.Name(), "trg", trg.Name()); + src.Del_by(task.Task_id()); + trg.Add(task); + cbk_mgr.Send_json(cbk_trg, "xo.bldr.core.transfer__recv", Gfobj_nde.New().Add_str("src", src.Name()).Add_str("trg", trg.Name()).Add_nde("task", task.Save_to(Gfobj_nde.New()))); + } + public static final int Lists_len = 3; +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/centrals/Xobc_task_special.java b/400_xowa/src/gplx/xowa/addons/bldrs/centrals/Xobc_task_special.java new file mode 100644 index 000000000..b4337d4d0 --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/centrals/Xobc_task_special.java @@ -0,0 +1,41 @@ +/* +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.addons.bldrs.centrals; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; +import gplx.xowa.specials.*; import gplx.core.net.*; import gplx.core.net.qargs.*; import gplx.xowa.wikis.pages.*; +public class Xobc_task_special implements Xow_special_page { + public static Xobc_task_mgr Task_mgr; + public void Special__gen(Xow_wiki wiki, Xoa_page page, Xoa_url url, Xoa_ttl ttl) { + // init task_mgr + page.Html_data().Cbk_enabled_(true); // apply cbk_enabled early to capture logging statements + Xoa_app app = wiki.App(); + if (Task_mgr == null) Task_mgr = New_task_mgr(app); + Task_mgr.Load_or_init(); + + new Xobc_task_html().Bld_page_by_mustache(app, page, this); + } + private static Xobc_task_mgr New_task_mgr(Xoa_app app) { + Io_url data_db_url = app.Fsys_mgr().Bin_addon_dir().GenSubFil_nest("bldr", "central", "bldr_central.data_db.xowa"); + app.User().User_db_mgr().Init_site_mgr(); + return new Xobc_task_mgr(app, data_db_url); + } + + Xobc_task_special(Xow_special_meta special__meta) {this.special__meta = special__meta;} + public Xow_special_meta Special__meta() {return special__meta;} private final Xow_special_meta special__meta; + public Xow_special_page Special__clone() {return this;} + public static final Xow_special_page Prototype = new Xobc_task_special(Xow_special_meta.New_xo("XowaDownloadCentral", "Download Central")); +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/centrals/cmds/Xobc_cmd__base.java b/400_xowa/src/gplx/xowa/addons/bldrs/centrals/cmds/Xobc_cmd__base.java new file mode 100644 index 000000000..6f5c57acc --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/centrals/cmds/Xobc_cmd__base.java @@ -0,0 +1,133 @@ +/* +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.addons.bldrs.centrals.cmds; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.centrals.*; +import gplx.core.gfobjs.*; import gplx.core.progs.*; import gplx.core.progs.rates.*; +public abstract class Xobc_cmd__base implements Xobc_cmd_itm { + private final Xobc_task_mgr task_mgr; + private final Gfo_rate_list rate_list; private final long notify_delay = 1000; + private final double delta_threshold = .25d; // allow variance of up to 25% before updating rate + private long time_prv; + private double rate_cur; + public Xobc_cmd__base(Xobc_task_mgr task_mgr, int task_id, int step_id, int cmd_id) { + this.task_mgr = task_mgr; this.task_id = task_id; this.step_id = step_id; this.cmd_id = cmd_id; + this.cmd_uid = String_.Concat_with_str(":", Int_.To_str(task_id), Int_.To_str(step_id), Int_.To_str(cmd_id)); + this.rate_list = task_mgr == null ? null : task_mgr.Rate_mgr().Get_or_new(this.Cmd_type()); + } + public long Prog_data_cur() {return data_cur;} private long data_cur; public void Prog_data_cur_(long v) {this.data_cur = v;} + public long Prog_data_end() {return data_end;} private long data_end; public void Prog_data_end_(long v) {this.data_end = v;} + public byte Prog_status() {return status;} private byte status = Gfo_prog_ui_.Status__init; public void Prog_status_(byte v) {status = v;} + public boolean Canceled() {return status == Gfo_prog_ui_.Status__suspended;} + public void Cancel() {status = Gfo_prog_ui_.Status__suspended;} + + public int Task_id() {return task_id;} private final int task_id; + public int Step_id() {return step_id;} private final int step_id; + public int Cmd_id() {return cmd_id;} private final int cmd_id; + public abstract String Cmd_type(); + public abstract String Cmd_name(); + @gplx.Virtual public boolean Cmd_suspendable() {return false;} + public String Cmd_uid() {return cmd_uid;} private final String cmd_uid; + @gplx.Virtual public String Cmd_fallback() {return this.Cmd_type();} + @gplx.Virtual public void Cmd_clear() {// called when restarting failed task + this.status = Gfo_prog_ui_.Status__init; + this.cmd_exec_err = null; + } + + public void Cmd_exec(Xobc_cmd_ctx ctx) { + // rate_list.Clear(); + // this.rate_cur = 0; + this.time_prv = gplx.core.envs.Env_.TickCount(); + this.status = Gfo_prog_ui_.Status__working; + this.Cmd_exec_hook(ctx); + switch (status) { + case Gfo_prog_ui_.Status__suspended: task_mgr.Work_mgr().On_suspended(this); break; + case Gfo_prog_ui_.Status__fail: task_mgr.Work_mgr().On_fail(this, cmd_exec_err); break; + case Gfo_prog_ui_.Status__working: + this.Prog_notify_and_chk_if_suspended(data_end, data_end); // fire one more time for 100%; note that 100% may not fire due to timer logic below + task_mgr.Work_mgr().On_done(this); + break; + } + } + protected abstract void Cmd_exec_hook(Xobc_cmd_ctx ctx); + protected void Cmd_exec_err_(String v) {this.status = Gfo_prog_ui_.Status__fail; this.cmd_exec_err = v;} private String cmd_exec_err; + @gplx.Virtual public void Cmd_cleanup() {} + + public Gfobj_nde Save_to(Gfobj_nde nde) { + nde.Add_int ("task_id" , task_id); + nde.Add_int ("step_id" , step_id); + nde.Add_int ("cmd_id" , cmd_id); + nde.Add_str ("cmd_type" , this.Cmd_type()); + nde.Add_str ("cmd_name" , this.Cmd_name()); + nde.Add_bool("cmd_suspendable" , this.Cmd_suspendable()); + nde.Add_byte("prog_status" , this.Prog_status()); + nde.Add_long("prog_data_cur" , this.Prog_data_cur()); + nde.Add_long("prog_data_end" , this.Prog_data_end()); + nde.Add_long("prog_time_end" , 0); + return nde; + } + public void Load_checkpoint() { + long data_cur = this.Load_checkpoint_hook(); + this.Prog_data_cur_(data_cur); + if (data_cur > 0) + this.Prog_status_(Gfo_prog_ui_.Status__working); // set status to working, else js won't warn about accidental removal + } + @gplx.Virtual protected long Load_checkpoint_hook() {return 0;} + + public boolean Prog_notify_and_chk_if_suspended(long new_data_cur, long new_data_end) { + if (status == Gfo_prog_ui_.Status__suspended) return true; // task paused by ui; exit now; + long time_cur = gplx.core.envs.Env_.TickCount(); + if (time_cur < time_prv + notify_delay) return false; // message came too soon. ignore it + + // update rate + double rate_now = (rate_list.Add(new_data_cur - data_cur, (time_cur - time_prv))) * 1000; + double delta = Math_.Abs_double((rate_now - rate_cur) / rate_cur); + if ( rate_cur == 0 // rate not set + || delta > delta_threshold) { // rate_now is at least 25% different than rate_prv + if (delta > delta_threshold * 2) // rate_now is > 50% different + rate_cur = rate_now; // update it now + else { + double rate_new = ((rate_now - rate_cur) * .05) + rate_cur; // calc new rate as 5% of difference + Tfds.Dbg(delta, rate_now, rate_cur, rate_new); + rate_cur = rate_new; + } + } + + // update prog vals + this.time_prv = time_cur; + this.data_cur = new_data_cur; + this.data_end = new_data_end; + + task_mgr.Send_json("xo.bldr.work.prog__update__recv", Gfobj_nde.New() + .Add_int ("task_id", task_id).Add_long("prog_data_cur", data_cur).Add_long("prog_data_end", data_end).Add_int("prog_rate", (int)rate_cur)); + return false; + } + public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { + if (ctx.Match(k, Invk__exec)) Cmd_exec((Xobc_cmd_ctx)m.ReadObj("v")); + else return Gfo_invk_.Rv_unhandled; + return this; + } + public static final String Invk__exec = "exec"; + public static final int Seqn__0 = 0; + public static Gfo_rate_mgr New_rate_mgr() { + Gfo_rate_mgr rv = new Gfo_rate_mgr(128); + rv.Add_new(Xobc_cmd__verify_dir.CMD_TYPE); + rv.Add_new(Xobc_cmd__verify_fil.CMD_TYPE); + rv.Add_new(Xobc_cmd__download.CMD_TYPE); + rv.Add_new(Xobc_cmd__unzip.CMD_TYPE); + return rv; + } +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/centrals/cmds/Xobc_cmd__download.java b/400_xowa/src/gplx/xowa/addons/bldrs/centrals/cmds/Xobc_cmd__download.java new file mode 100644 index 000000000..8a11c5e18 --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/centrals/cmds/Xobc_cmd__download.java @@ -0,0 +1,43 @@ +/* +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.addons.bldrs.centrals.cmds; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.centrals.*; +import gplx.core.progs.*; import gplx.core.net.downloads.*; +public class Xobc_cmd__download extends Xobc_cmd__base { + private final String src_url; private final Io_url trg_url; + private final long expd_size; + private final Http_download_wkr wkr; + public Xobc_cmd__download(Xobc_task_mgr task_mgr, int task_id, int step_id, int cmd_id, String src_url, Io_url trg_url, long file_size_zip) {super(task_mgr, task_id, step_id, cmd_id); + this.src_url = src_url; this.trg_url = trg_url; this.expd_size = file_size_zip; + this.wkr = Http_download_wkr_.Proto.Make_new(); + this.Prog_data_end_(expd_size); + } + @Override public String Cmd_type() {return CMD_TYPE;} public static final String CMD_TYPE = "xowa.core.download"; + @Override public String Cmd_name() {return "download";} + @Override public boolean Cmd_suspendable() {return true;} + + @Override protected void Cmd_exec_hook(Xobc_cmd_ctx ctx) { + if (wkr.Exec(this, src_url, trg_url, expd_size) == Gfo_prog_ui_.Status__fail) + this.Cmd_exec_err_(wkr.Fail_msg()); + } + @Override public void Cmd_cleanup() { + wkr.Exec_cleanup(); + } + @Override protected long Load_checkpoint_hook() { + return wkr.Checkpoint__load_by_trg_fil(trg_url); + } +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/centrals/cmds/Xobc_cmd__move_fils.java b/400_xowa/src/gplx/xowa/addons/bldrs/centrals/cmds/Xobc_cmd__move_fils.java new file mode 100644 index 000000000..fa4c45c59 --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/centrals/cmds/Xobc_cmd__move_fils.java @@ -0,0 +1,41 @@ +/* +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.addons.bldrs.centrals.cmds; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.centrals.*; +public class Xobc_cmd__move_fils extends Xobc_cmd__base { + private final Io_url src_dir, trg_dir; + private final List_adp trg_fils = List_adp_.New(); + public Xobc_cmd__move_fils(Xobc_task_mgr task_mgr, int task_id, int step_id, int cmd_idx, Io_url src_dir, Io_url trg_dir) {super(task_mgr, task_id, step_id, cmd_idx); + this.src_dir = src_dir; this.trg_dir = trg_dir; + } + @Override public String Cmd_type() {return CMD_TYPE;} public static final String CMD_TYPE = "xowa.core.move_fil"; + @Override public String Cmd_name() {return "move";} + @Override protected void Cmd_exec_hook(Xobc_cmd_ctx ctx) { + Io_url[] src_fils = Io_mgr.Instance.QueryDir_fils(src_dir); + int len = src_fils.length; + for (int i = 0; i < len; ++i) { + Io_url src_fil = src_fils[i]; + if (String_.Eq(src_fil.Ext(), ".md5")) continue; + Io_url trg_fil = trg_dir.GenSubFil(src_fil.NameAndExt()); + Io_mgr.Instance.MoveFil_args(src_fil, trg_fil, true).Exec(); + trg_fils.Add(trg_fil); + } + } + @Override public void Cmd_cleanup() { + Io_mgr.Instance.Delete_dir_empty(trg_dir.GenSubDir("tmp")); // deletes dir only if empty + } +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/centrals/cmds/Xobc_cmd__unzip.java b/400_xowa/src/gplx/xowa/addons/bldrs/centrals/cmds/Xobc_cmd__unzip.java new file mode 100644 index 000000000..f2bed0896 --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/centrals/cmds/Xobc_cmd__unzip.java @@ -0,0 +1,45 @@ +/* +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.addons.bldrs.centrals.cmds; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.centrals.*; +import gplx.core.ios.zips.*; import gplx.core.progs.*; +public class Xobc_cmd__unzip extends Xobc_cmd__base { + private final Io_url src_fil, trg_dir; + private final Io_zip_decompress_cmd wkr; + private final List_adp trg_fils = List_adp_.New(); + public Xobc_cmd__unzip(Xobc_task_mgr task_mgr, int task_id, int step_id, int cmd_id, Io_url src_fil, Io_url trg_dir, long prog_data_end) {super(task_mgr, task_id, step_id, cmd_id); + this.src_fil = src_fil; this.trg_dir = trg_dir; + this.Prog_data_end_(prog_data_end); + this.wkr = Io_zip_decompress_cmd_.Proto.Make_new(); + } + @Override public String Cmd_type() {return CMD_TYPE;} public static final String CMD_TYPE = "xowa.core.ios.zips.zip_unzip"; + @Override public String Cmd_name() {return "unzip";} + @Override public boolean Cmd_suspendable() {return true;} + + @Override protected void Cmd_exec_hook(Xobc_cmd_ctx ctx) { + if (wkr.Exec(this, src_fil, trg_dir, trg_fils) == Gfo_prog_ui_.Status__fail) + this.Cmd_exec_err_(wkr.Fail_msg()); + } + @Override public void Cmd_cleanup() { + wkr.Exec_cleanup(); + Io_mgr.Instance.DeleteFil(src_fil); + Io_mgr.Instance.DeleteDirDeep(trg_dir); + } + @Override protected long Load_checkpoint_hook() { + return wkr.Checkpoint__load_by_src_fil(src_fil); + } +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/centrals/cmds/Xobc_cmd__verify_dir.java b/400_xowa/src/gplx/xowa/addons/bldrs/centrals/cmds/Xobc_cmd__verify_dir.java new file mode 100644 index 000000000..7fb41ff69 --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/centrals/cmds/Xobc_cmd__verify_dir.java @@ -0,0 +1,60 @@ +/* +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.addons.bldrs.centrals.cmds; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.centrals.*; +import gplx.core.progs.*; +import gplx.core.security.*; import gplx.core.security.files.*; +public class Xobc_cmd__verify_dir extends Xobc_cmd__base { + private final Io_url delete_fil, checksum_fil; + public Xobc_cmd__verify_dir(Xobc_task_mgr task_mgr, int task_id, int step_id, int cmd_idx, Io_url dir_url, String checksum_fil_name, Io_url delete_fil) {super(task_mgr, task_id, step_id, cmd_idx); + this.delete_fil = delete_fil; + this.checksum_fil = dir_url.GenSubFil(checksum_fil_name); + } + @Override public String Cmd_type() {return CMD_TYPE;} public static final String CMD_TYPE = "xowa.core.hash_dir"; + @Override public String Cmd_name() {return "verify";} + @Override public String Cmd_fallback() {return Xobc_cmd__unzip.CMD_TYPE;} + + @Override protected void Cmd_exec_hook(Xobc_cmd_ctx ctx) { + // parse file + Cksum_list list = Cksum_list.Parse_by_fil(checksum_fil); + this.Prog_data_end_(list.Itms_size); + + // verify itms + Hash_algo algo = Hash_algo_.New_by_tid(list.Type); + Cksum_itm[] itms = list.Itms; + int len = itms.length; + long prog_data_cur = 0; + for (int i = 0; i < len; ++i) { + Cksum_itm itm = itms[i]; + gplx.core.ios.streams.IoStream stream = Io_mgr.Instance.OpenStreamRead(itm.File_url); + byte[] actl_hash = Bry_.Empty; + this.Prog_data_cur_(prog_data_cur); + try {actl_hash = algo.Hash_stream_as_bry(this, stream);} + finally {stream.Rls();} + prog_data_cur += itm.File_size; + if (this.Prog_notify_and_chk_if_suspended(prog_data_cur, Prog_data_end())) return; + if (this.Prog_status() != Gfo_prog_ui_.Status__suspended && !Bry_.Eq(itm.Hash, actl_hash)) { + this.Cmd_exec_err_(String_.Format("bad hash; file={0} bad={1} good={2}", itm.File_url.Raw(), actl_hash, itm.Hash)); + return; + } + } + } + @Override public void Cmd_cleanup() { + Io_mgr.Instance.DeleteFil(checksum_fil); + Io_mgr.Instance.DeleteFil(delete_fil); + } +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/centrals/cmds/Xobc_cmd__verify_fil.java b/400_xowa/src/gplx/xowa/addons/bldrs/centrals/cmds/Xobc_cmd__verify_fil.java new file mode 100644 index 000000000..26080fbd5 --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/centrals/cmds/Xobc_cmd__verify_fil.java @@ -0,0 +1,42 @@ +/* +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.addons.bldrs.centrals.cmds; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.centrals.*; +import gplx.core.progs.*; import gplx.core.security.*; +public class Xobc_cmd__verify_fil extends Xobc_cmd__base { + private final Io_url src_url; private final byte[] expd_hash; + public Xobc_cmd__verify_fil(Xobc_task_mgr task_mgr, int task_id, int step_id, int cmd_id, Io_url src_url, String expd_hash_str, long prog_data_end) {super(task_mgr, task_id, step_id, cmd_id); + this.src_url = src_url; + this.expd_hash = Bry_.new_a7(expd_hash_str); + this.Prog_data_end_(prog_data_end); + } + @Override public String Cmd_type() {return CMD_TYPE;} public static final String CMD_TYPE = "xowa.core.hash_fil"; + @Override public String Cmd_name() {return "verify";} + @Override public String Cmd_fallback() {return Xobc_cmd__download.CMD_TYPE;} + + @Override protected void Cmd_exec_hook(Xobc_cmd_ctx ctx) { + Hash_algo algo = Hash_algo_.New__md5(); + gplx.core.ios.streams.IoStream stream = Io_mgr.Instance.OpenStreamRead(src_url); + byte[] actl_hash = Bry_.Empty; + try {actl_hash = algo.Hash_stream_as_bry(this, stream);} + finally {stream.Rls();} + if (this.Prog_status() != Gfo_prog_ui_.Status__suspended && !Bry_.Eq(expd_hash, actl_hash)) + this.Cmd_exec_err_(Xobc_cmd__verify_fil.Err_make(actl_hash, expd_hash)); + } + + public static String Err_make(byte[] actl, byte[] expd) {return String_.Format("bad hash: bad={0} good={1}", String_.new_u8(actl), String_.new_u8(expd));} +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/centrals/cmds/Xobc_cmd__wiki_merge.java b/400_xowa/src/gplx/xowa/addons/bldrs/centrals/cmds/Xobc_cmd__wiki_merge.java new file mode 100644 index 000000000..d1a8978cb --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/centrals/cmds/Xobc_cmd__wiki_merge.java @@ -0,0 +1,57 @@ +/* +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.addons.bldrs.centrals.cmds; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.centrals.*; +import gplx.dbs.*; +import gplx.xowa.wikis.*; import gplx.xowa.wikis.data.*; import gplx.xowa.wikis.data.tbls.*; +import gplx.xowa.addons.bldrs.exports.splits.mgrs.*; import gplx.xowa.addons.bldrs.exports.merges.*; +public class Xobc_cmd__wiki_merge extends Xobc_cmd__base { + private final String wiki_domain; + private final Io_url src_dir; + private final Merge2_mgr merge_mgr; + private final Merge_prog_wkr prog_wkr; + private final int idx_cur; + public Xobc_cmd__wiki_merge(Xobc_task_mgr task_mgr, int task_id, int step_id, int cmd_idx, Merge2_mgr merge_mgr, String wiki_domain, Io_url src_dir + , long prog_size_end, int prog_count_end, int idx_cur) {super(task_mgr, task_id, step_id, cmd_idx); + this.merge_mgr = merge_mgr; + this.wiki_domain = wiki_domain; + this.src_dir = src_dir; + this.prog_wkr = new Merge_prog_wkr(this, src_dir.GenSubFil("merge.checkpoint"), prog_count_end, prog_size_end); + merge_mgr.Prog_wkr_(prog_wkr); + this.Prog_data_end_(prog_count_end); + this.idx_cur = idx_cur; + } + @Override public String Cmd_type() {return CMD_TYPE;} public static final String CMD_TYPE = "xowa.wiki.merge"; + @Override public String Cmd_name() {return "merge";} + @Override public boolean Cmd_suspendable() {return true;} + @Override protected void Cmd_exec_hook(Xobc_cmd_ctx ctx) { + Xow_wiki wiki = ctx.App().Wiki_mgri().Make(Bry_.new_u8(wiki_domain), ctx.App().Fsys_mgr().Wiki_dir().GenSubDir(wiki_domain)); + Io_url[] fils = Io_mgr.Instance.QueryDir_fils(src_dir); + for (Io_url fil : fils) { + if (prog_wkr.Checkpoint__skip_fil(fil)) continue; + switch (Split_file_tid_.To_tid(fil)) { + case Split_file_tid_.Tid__core: merge_mgr.ctx.Idx_cur_add_(); merge_mgr.Merge_core(wiki, fil); break; + case Split_file_tid_.Tid__data: merge_mgr.ctx.Idx_cur_add_(); merge_mgr.Merge_data(wiki, fil, idx_cur); break; + } + } + prog_wkr.Checkpoint__delete(); + } + @Override public void Cmd_cleanup() { + Io_mgr.Instance.DeleteDirDeep(src_dir.OwnerDir()); // src_dir is "unzip" dir; owner dir is actual archive dir + } + @Override protected long Load_checkpoint_hook() {return prog_wkr.Checkpoint__load();} +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/centrals/cmds/Xobc_cmd__wiki_reg.java b/400_xowa/src/gplx/xowa/addons/bldrs/centrals/cmds/Xobc_cmd__wiki_reg.java new file mode 100644 index 000000000..f25df6e13 --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/centrals/cmds/Xobc_cmd__wiki_reg.java @@ -0,0 +1,53 @@ +/* +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.addons.bldrs.centrals.cmds; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.centrals.*; +import gplx.core.security.*; +import gplx.xowa.wikis.*; +public class Xobc_cmd__wiki_reg extends Xobc_cmd__base { + private final Io_url wiki_dir; + private final String wiki_domain; + public Xobc_cmd__wiki_reg(Xobc_task_mgr task_mgr, int task_id, int step_id, int cmd_idx, Io_url wiki_dir, String wiki_domain) {super(task_mgr, task_id, step_id, cmd_idx); + this.wiki_dir = wiki_dir; + this.wiki_domain = wiki_domain; + } + @Override public String Cmd_type() {return CMD_TYPE;} public static final String CMD_TYPE = "xowa.wiki.reg"; + @Override public String Cmd_name() {return "import";} + @Override protected void Cmd_exec_hook(Xobc_cmd_ctx ctx) { + ctx.App().User().User_db_mgr().Init_site_mgr(); // must init for wiki.register cmd + + // get wiki_core_url + Io_url[] wiki_fils = Io_mgr.Instance.QueryDir_fils(wiki_dir); + Io_url wiki_core_url = null; + int len = wiki_fils.length; + for (int i = 0; i < len; ++i) { + Io_url url = wiki_fils[i]; + if (gplx.xowa.wikis.data.Xow_db_file__core_.Is_core_fil_name(wiki_domain, url.NameAndExt())) { + wiki_core_url = url; + break; + } + } + if (wiki_core_url == null) throw Err_.new_("wiki_import", "import_url not found", "domain", wiki_domain); + + // import; open + Xoa_wiki_mgr wiki_mgr = ctx.App().Wiki_mgri(); + Gfo_invk_.Invk_by_val(wiki_mgr, gplx.xowa.wikis.Xoa_wiki_mgr_.Invk__import_by_url, wiki_core_url); + // COMMENTED: do not auto-open wiki; wait for true-pack mode + // Xow_wiki wiki = wiki_mgr.Get_by_or_null(Bry_.new_u8(wiki_domain)); + // Gfo_invk_.Invk_by_msg(ctx.App().Gui__tab_mgr() , gplx.xowa.guis.tabs.Xog_tab_mgr_.Invk__new_tab, GfoMsg_.new_cast_("").Add("focus", true).Add("site", wiki_domain).Add("page", String_.new_u8(wiki.Props().Main_page()))); + } +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/centrals/cmds/Xobc_cmd_ctx.java b/400_xowa/src/gplx/xowa/addons/bldrs/centrals/cmds/Xobc_cmd_ctx.java new file mode 100644 index 000000000..f21d5cdf3 --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/centrals/cmds/Xobc_cmd_ctx.java @@ -0,0 +1,22 @@ +/* +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.addons.bldrs.centrals.cmds; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.centrals.*; +public class Xobc_cmd_ctx { + public Xobc_cmd_ctx(Xoa_app app) {this.app = app;} + public Xoa_app App() {return app;} private final Xoa_app app; +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/centrals/cmds/Xobc_cmd_itm.java b/400_xowa/src/gplx/xowa/addons/bldrs/centrals/cmds/Xobc_cmd_itm.java new file mode 100644 index 000000000..b51f3b17e --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/centrals/cmds/Xobc_cmd_itm.java @@ -0,0 +1,34 @@ +/* +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.addons.bldrs.centrals.cmds; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.centrals.*; +import gplx.core.progs.*; import gplx.core.gfobjs.*; +public interface Xobc_cmd_itm extends Gfo_prog_ui, Gfo_invk { + int Task_id(); + int Step_id(); + int Cmd_id(); + String Cmd_type(); // "xowa.core.http_download" + String Cmd_name(); // "download" + boolean Cmd_suspendable(); // "true" + String Cmd_uid(); // for thread_pool_mgr: "0:0:0" + void Cmd_cleanup(); + String Cmd_fallback(); + void Cmd_clear(); + + Gfobj_nde Save_to(Gfobj_nde nde); + void Load_checkpoint(); +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/centrals/dbs/Xobc_data_db.java b/400_xowa/src/gplx/xowa/addons/bldrs/centrals/dbs/Xobc_data_db.java new file mode 100644 index 000000000..4c6115698 --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/centrals/dbs/Xobc_data_db.java @@ -0,0 +1,67 @@ +/* +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.addons.bldrs.centrals.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.centrals.*; +import gplx.dbs.*; +import gplx.xowa.addons.bldrs.centrals.dbs.datas.*; import gplx.xowa.addons.bldrs.centrals.dbs.datas.imports.*; +public class Xobc_data_db { + public Xobc_data_db(Io_url db_url) { + this.url = db_url; + this.conn = Db_conn_bldr.Instance.Get_or_autocreate(true, db_url); + this.tbl__task_regy = new Xobc_task_regy_tbl(conn); + this.tbl__step_regy = new Xobc_step_regy_tbl(conn); + this.tbl__step_map = new Xobc_step_map_tbl(conn); + this.tbl__import_step = new Xobc_import_step_tbl(conn); + this.tbl__host_regy = new Xobc_host_regy_tbl(conn); + this.tbl__version_regy = new Xobc_version_regy_tbl(conn); + conn.Meta_tbl_assert(tbl__task_regy, tbl__step_regy, tbl__step_map, tbl__import_step, tbl__host_regy, tbl__version_regy); + } + public Db_conn Conn() {return conn;} private final Db_conn conn; + public Io_url Url() {return url;} private final Io_url url; + public Xobc_task_regy_tbl Tbl__task_regy() {return tbl__task_regy;} private final Xobc_task_regy_tbl tbl__task_regy; + public Xobc_step_regy_tbl Tbl__step_regy() {return tbl__step_regy;} private final Xobc_step_regy_tbl tbl__step_regy; + public Xobc_step_map_tbl Tbl__step_map() {return tbl__step_map;} private final Xobc_step_map_tbl tbl__step_map; + public Xobc_import_step_tbl Tbl__import_step() {return tbl__import_step;} private final Xobc_import_step_tbl tbl__import_step; + public Xobc_host_regy_tbl Tbl__host_regy() {return tbl__host_regy;} private final Xobc_host_regy_tbl tbl__host_regy; + public Xobc_version_regy_tbl Tbl__version_regy() {return tbl__version_regy;} private final Xobc_version_regy_tbl tbl__version_regy; + + public void Delete_by_import(byte[] wiki_abrv, String wiki_date) { + // get all step ids from import_regy + Xobc_task_step_hash task_step_hash = new Xobc_task_step_hash(); + tbl__import_step.Select_tasks_steps(task_step_hash, tbl__step_map, wiki_abrv, wiki_date); + for (int i = 0; i < task_step_hash.Tasks__len(); ++i) { + int task_id = task_step_hash.Tasks__get_at(i); + tbl__task_regy.Delete(task_id); + tbl__step_map.Delete_by_task_id(task_id); + } + for (int i = 0; i < task_step_hash.Steps__len(); ++i) { + int step_id = task_step_hash.Steps__get_at(i); + tbl__step_regy.Delete(step_id); + tbl__import_step.Delete(step_id); + } + } + private final gplx.core.lists.hashs.Hash_adp__int host_hash = new gplx.core.lists.hashs.Hash_adp__int(); + public String Bld_src_http_url(gplx.core.brys.evals.Bry_eval_mgr eval_mgr, int host_id, String file_name) { + Xobc_host_regy_itm host_itm = (Xobc_host_regy_itm)host_hash.Get_by_or_null(host_id); + if (host_itm == null) { + host_itm = tbl__host_regy.Select(host_id); + host_hash.Add(host_id, host_itm); + } + String host_dir = String_.new_u8(eval_mgr.Eval(Bry_.new_u8(host_itm.Host_data_dir()))); + return String_.Format("http://{0}/{1}/{2}", host_itm.Host_domain(), host_dir, file_name); + } +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/centrals/dbs/Xobc_data_db_upgrader.java b/400_xowa/src/gplx/xowa/addons/bldrs/centrals/dbs/Xobc_data_db_upgrader.java new file mode 100644 index 000000000..480becaed --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/centrals/dbs/Xobc_data_db_upgrader.java @@ -0,0 +1,89 @@ +/* +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.addons.bldrs.centrals.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.centrals.*; +import gplx.dbs.*; +import gplx.core.progs.*; import gplx.core.net.downloads.*; import gplx.core.gfobjs.*; +import gplx.xowa.users.data.*; import gplx.xowa.addons.bldrs.centrals.dbs.datas.*; +import gplx.xowa.wikis.pages.tags.*; +public class Xobc_data_db_upgrader { + private static final String + Cfg__last_check_date = "xowa.bldr_central.data_db.last_check_date" + // , Cfg__next_check_interval = "xowa.bldr_central.data_db.next_check_interval" + , Date_fmt = "yyyy-MM-dd HH:mm" + ; + public static void Check_for_updates(Xobc_task_mgr task_mgr) { + Io_url data_db_url = task_mgr.Data_db().Url(); + Xoud_cfg_mgr cfg_mgr = task_mgr.App().User().User_db_mgr().Cfg_mgr(); + + // check if update needed + //String last_check_str = cfg_mgr.Select_str_or("", Cfg__last_check_date, ""); + //int next_check_interval = cfg_mgr.Select_int_or("", Cfg__next_check_interval, 24 * 7); + //DateAdp last_check = DateAdp_.parse_fmt_or(last_check_str, Date_fmt, null); + //if (last_check != null) { // check if last_check_str exists + // Time_span span = DateAdp_.Now().Diff(last_check); + // if (span.Total_hours().To_double() < next_check_interval) { // check if enough time passed + // Gfo_log_.Instance.Info("xobc_db update not needed", "last_check", last_check_str, "next_check_interval", next_check_interval); + // return; + // } + // else + // Gfo_log_.Instance.Info("xobc_db update needed b/c of last_check", "last_check", last_check_str); + //} + //else + // Gfo_log_.Instance.Info("xobc_db update needed b/c of missing or invalid last_check_str", "last_check", last_check_str); + + // update needed; first, update cfg_key, then get host + cfg_mgr.Upsert_str("", Cfg__last_check_date, DateAdp_.Now().XtoStr_fmt(Date_fmt)); + Xobc_data_db bc_db = task_mgr.Data_db(); + Xobc_host_regy_itm host_itm = bc_db.Tbl__host_regy().Select(Xobc_host_regy_tbl.Host_id__archive_org); + + // download manifest + Http_download_wkr download_wkr = Http_download_wkr_.Proto.Make_new(); + Io_url manifest_url = data_db_url.GenNewExt(".txt"); + download_wkr.Exec(Gfo_prog_ui_.Always + , String_.Format("http://{0}/{1}/bldr_central.data_db.txt", host_itm.Host_domain(), host_itm.Host_update_dir()) + , manifest_url, -1); + + // parse manifest and get version_id + byte[] manifest_txt = Io_mgr.Instance.LoadFilBry(manifest_url); + byte[][] manifest_data = Bry_split_.Split(manifest_txt, Byte_ascii.Pipe); + int expd_version_id = Bry_.To_int(manifest_data[0]); + Xobc_version_regy_itm actl_version = bc_db.Tbl__version_regy().Select_latest(); + + // cleanup + Io_mgr.Instance.DeleteFil(manifest_url); + bc_db.Conn().Rls_conn(); + if (expd_version_id == actl_version.Id()) { + Gfo_log_.Instance.Info("xobc_db update not needed", "version", expd_version_id); + Xopg_alertify_.Exec_log(task_mgr, "Wikis are up-to-date"); + return; // version matches; exit + } + + // version doesn't match; download new + // next_check_interval = Bry_.To_int(manifest_data[2]); + // cfg_mgr.Upsert_int("", Cfg__next_check_interval, next_check_interval); + // Gfo_log_.Instance.Info("xobc_db update needed", "version", expd_version_id, "next_check_interval", next_check_interval); + byte[] new_db_url = manifest_data[1]; + String note = String_.new_u8(manifest_data[3]); + download_wkr.Exec(Gfo_prog_ui_.Always + , String_.new_u8(new_db_url) + , data_db_url, -1); + Xopg_alertify_.Exec_log(task_mgr, "Wikis have been updated:
" + note); + task_mgr.Load_or_init(); + task_mgr.Reload(); + } +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/centrals/dbs/Xobc_task_step_hash.java b/400_xowa/src/gplx/xowa/addons/bldrs/centrals/dbs/Xobc_task_step_hash.java new file mode 100644 index 000000000..059eaaa55 --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/centrals/dbs/Xobc_task_step_hash.java @@ -0,0 +1,31 @@ +/* +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.addons.bldrs.centrals.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.centrals.*; +public class Xobc_task_step_hash { + private final Ordered_hash tasks_hash = Ordered_hash_.New(); + private final Ordered_hash steps_hash = Ordered_hash_.New(); + public int Tasks__len() {return tasks_hash.Len();} + public int Tasks__get_at(int i) {return Int_.cast(tasks_hash.Get_at(i));} + public int Steps__len() {return steps_hash.Len();} + public int Steps__get_at(int i) {return Int_.cast(steps_hash.Get_at(i));} + public void Clear() {tasks_hash.Clear(); steps_hash.Clear();} + public void Add(int task_id, int step_id) { + tasks_hash.Add_if_dupe_use_nth(task_id, task_id); + steps_hash.Add_if_dupe_use_nth(step_id, step_id); + } +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/centrals/dbs/Xobc_user_db.java b/400_xowa/src/gplx/xowa/addons/bldrs/centrals/dbs/Xobc_user_db.java new file mode 100644 index 000000000..75d86f5de --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/centrals/dbs/Xobc_user_db.java @@ -0,0 +1,31 @@ +/* +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.addons.bldrs.centrals.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.centrals.*; +import gplx.dbs.*; +import gplx.xowa.addons.bldrs.centrals.dbs.users.*; +public class Xobc_user_db { + public Xobc_user_db(Db_conn conn) { + this.work_task_tbl = new Xobc_work_task_tbl(conn); + this.done_task_tbl = new Xobc_done_task_tbl(conn); + this.done_step_tbl = new Xobc_done_step_tbl(conn); + conn.Meta_tbl_assert(work_task_tbl, done_task_tbl, done_step_tbl); + } + public Xobc_work_task_tbl Work_task_tbl() {return work_task_tbl;} private final Xobc_work_task_tbl work_task_tbl; + public Xobc_done_task_tbl Done_task_tbl() {return done_task_tbl;} private final Xobc_done_task_tbl done_task_tbl; + public Xobc_done_step_tbl Done_step_tbl() {return done_step_tbl;} private final Xobc_done_step_tbl done_step_tbl; +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/centrals/dbs/datas/Xobc_host_regy_itm.java b/400_xowa/src/gplx/xowa/addons/bldrs/centrals/dbs/datas/Xobc_host_regy_itm.java new file mode 100644 index 000000000..10e0b44db --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/centrals/dbs/datas/Xobc_host_regy_itm.java @@ -0,0 +1,30 @@ +/* +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.addons.bldrs.centrals.dbs.datas; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.centrals.*; import gplx.xowa.addons.bldrs.centrals.dbs.*; +public class Xobc_host_regy_itm { + public Xobc_host_regy_itm(int host_id, String host_domain, String host_data_dir, String host_update_dir) { + this.host_id = host_id; + this.host_domain = host_domain; + this.host_data_dir = host_data_dir; + this.host_update_dir = host_update_dir; + } + public int Host_id() {return host_id;} private final int host_id; + public String Host_domain() {return host_domain;} private final String host_domain; + public String Host_data_dir() {return host_data_dir;} private final String host_data_dir; + public String Host_update_dir() {return host_update_dir;} private final String host_update_dir; +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/centrals/dbs/datas/Xobc_host_regy_tbl.java b/400_xowa/src/gplx/xowa/addons/bldrs/centrals/dbs/datas/Xobc_host_regy_tbl.java new file mode 100644 index 000000000..d98696d03 --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/centrals/dbs/datas/Xobc_host_regy_tbl.java @@ -0,0 +1,51 @@ +/* +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.addons.bldrs.centrals.dbs.datas; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.centrals.*; import gplx.xowa.addons.bldrs.centrals.dbs.*; +import gplx.dbs.*; +public class Xobc_host_regy_tbl implements Db_tbl { + private final Dbmeta_fld_list flds = new Dbmeta_fld_list(); + private final String fld_host_id, fld_host_domain, fld_host_data_dir, fld_host_update_dir; + private final Db_conn conn; + public Xobc_host_regy_tbl(Db_conn conn) { + this.conn = conn; + this.tbl_name = "host_regy"; + this.fld_host_id = flds.Add_int_pkey("host_id"); + this.fld_host_domain = flds.Add_str("host_domain", 255); // EX: archive.org + this.fld_host_data_dir = flds.Add_str("host_data_dir", 255); // EX: download/Xowa_~{host_regy|wiki_abrv}_latest + this.fld_host_update_dir = flds.Add_str("host_update_dir", 255); // EX: download/Xowa_app_support + conn.Rls_reg(this); + } + public String Tbl_name() {return tbl_name;} private final String tbl_name; + public void Create_tbl() { + conn.Meta_tbl_create(Dbmeta_tbl_itm.New(tbl_name, flds)); + conn.Stmt_insert(tbl_name, flds) + .Val_int(fld_host_id, Host_id__archive_org).Val_str(fld_host_domain, "archive.org") + .Val_str(fld_host_data_dir, "download/Xowa_~{host_regy|wiki_abrv}_latest").Val_str(fld_host_update_dir, "download/Xowa_app_support") + .Exec_insert(); + } + public Xobc_host_regy_itm Select(int host_id) { + Db_rdr rdr = conn.Stmt_select(tbl_name, flds, fld_host_id).Crt_int(fld_host_id, host_id).Exec_select__rls_auto(); + try {return rdr.Move_next() ? Load_itm(rdr) : null;} + finally {rdr.Rls();} + } + private Xobc_host_regy_itm Load_itm(Db_rdr rdr) { + return new Xobc_host_regy_itm(rdr.Read_int(fld_host_id), rdr.Read_str(fld_host_domain), rdr.Read_str(fld_host_data_dir), rdr.Read_str(fld_host_update_dir)); + } + public void Rls() {} + public static final int Host_id__archive_org = 1; +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/centrals/dbs/datas/Xobc_step_map_itm.java b/400_xowa/src/gplx/xowa/addons/bldrs/centrals/dbs/datas/Xobc_step_map_itm.java new file mode 100644 index 000000000..a89eabc01 --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/centrals/dbs/datas/Xobc_step_map_itm.java @@ -0,0 +1,30 @@ +/* +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.addons.bldrs.centrals.dbs.datas; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.centrals.*; import gplx.xowa.addons.bldrs.centrals.dbs.*; +public class Xobc_step_map_itm { + public Xobc_step_map_itm(int sm_id, int task_id, int step_id, int step_seqn) { + this.Sm_id = sm_id; + this.Task_id = task_id; + this.Step_id = step_id; + this.Step_seqn = step_seqn; + } + public final int Sm_id; + public final int Task_id; + public final int Step_id; + public final int Step_seqn; +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/centrals/dbs/datas/Xobc_step_map_tbl.java b/400_xowa/src/gplx/xowa/addons/bldrs/centrals/dbs/datas/Xobc_step_map_tbl.java new file mode 100644 index 000000000..ee6edb657 --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/centrals/dbs/datas/Xobc_step_map_tbl.java @@ -0,0 +1,82 @@ +/* +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.addons.bldrs.centrals.dbs.datas; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.centrals.*; import gplx.xowa.addons.bldrs.centrals.dbs.*; +import gplx.dbs.*; +public class Xobc_step_map_tbl implements Db_tbl { + private final Dbmeta_fld_list flds = new Dbmeta_fld_list(); + private final String fld_sm_id, fld_step_seqn, fld_task_id, fld_step_id; + private final Db_conn conn; private Db_stmt insert_stmt; + public Xobc_step_map_tbl(Db_conn conn) { + this.conn = conn; + this.tbl_name = "step_map"; + this.fld_sm_id = flds.Add_int_pkey("sm_id"); + this.fld_task_id = flds.Add_int("task_id"); + this.fld_step_id = flds.Add_int("step_id"); + this.fld_step_seqn = flds.Add_int("step_seqn"); + conn.Rls_reg(this); + } + public String Tbl_name() {return tbl_name;} private final String tbl_name; + public void Create_tbl() {conn.Meta_tbl_create(Dbmeta_tbl_itm.New(tbl_name, flds));} + public int Select_step_id(int task_id, int step_seqn) { + Db_rdr rdr = conn.Stmt_select(tbl_name, flds, fld_task_id, fld_step_seqn).Crt_int(fld_task_id, task_id).Crt_int(fld_step_seqn, step_seqn).Exec_select__rls_auto(); + try { + if (rdr.Move_next()) + return rdr.Read_int(fld_step_id); + else + throw Err_.new_("", "xobc:could not find step_id", "task_id", task_id, "step_seqn", step_seqn); + } + finally {rdr.Rls();} + } + public Xobc_step_map_itm Select_one(int task_id, int step_id) { + Db_rdr rdr = conn.Stmt_select(tbl_name, flds, fld_task_id, fld_step_id).Crt_int(fld_task_id, task_id).Crt_int(fld_step_id, step_id).Exec_select__rls_auto(); + try { + if (rdr.Move_next()) + return new Xobc_step_map_itm + ( rdr.Read_int(fld_sm_id) + , rdr.Read_int(fld_task_id) + , rdr.Read_int(fld_step_id) + , rdr.Read_int(fld_step_seqn) + ); + else + throw Err_.new_("", "bldr.central:could not find step_id", "task_id", task_id, "step_id", step_id); + } + finally {rdr.Rls();} + } + public int Select_seqn_but_skip_done(int task_id, Hash_adp step_ids) { + Db_rdr rdr = conn.Stmt_select_order(tbl_name, flds, String_.Ary(fld_task_id), fld_step_seqn).Crt_int(fld_task_id, task_id).Exec_select__rls_auto(); + try { + while (rdr.Move_next()) { + int step_id = rdr.Read_int("step_id"); + if (step_ids.Has(step_id)) + return rdr.Read_int("step_seqn"); + } + } finally {rdr.Rls();} + throw Err_.new_("", "xobc:could not find next sort", "task_id", task_id); + } + public void Insert(int sm_id, int task_id, int step_id, int step_seqn) { + if (insert_stmt == null) insert_stmt = conn.Stmt_insert(tbl_name, flds); + insert_stmt.Clear().Val_int(fld_sm_id, sm_id).Val_int(fld_task_id, task_id).Val_int(fld_step_id, step_id).Val_int(fld_step_seqn, step_seqn) + .Exec_insert(); + } + public void Delete_by_task_id(int task_id) { + conn.Stmt_delete(tbl_name, fld_task_id).Crt_int(fld_task_id, task_id).Exec_delete(); + } + public void Rls() { + insert_stmt = Db_stmt_.Rls(insert_stmt); + } +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/centrals/dbs/datas/Xobc_step_regy_tbl.java b/400_xowa/src/gplx/xowa/addons/bldrs/centrals/dbs/datas/Xobc_step_regy_tbl.java new file mode 100644 index 000000000..bb160f9c5 --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/centrals/dbs/datas/Xobc_step_regy_tbl.java @@ -0,0 +1,55 @@ +/* +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.addons.bldrs.centrals.dbs.datas; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.centrals.*; import gplx.xowa.addons.bldrs.centrals.dbs.*; +import gplx.dbs.*; +import gplx.xowa.addons.bldrs.centrals.cmds.*; import gplx.xowa.addons.bldrs.centrals.tasks.*; +public class Xobc_step_regy_tbl implements Db_tbl { + private final Dbmeta_fld_list flds = new Dbmeta_fld_list(); + private final String fld_step_id, fld_step_type; + private final Db_conn conn; private Db_stmt insert_stmt; + public Xobc_step_regy_tbl(Db_conn conn) { + this.conn = conn; + this.tbl_name = "step_regy"; + this.fld_step_id = flds.Add_int_pkey("step_id"); + this.fld_step_type = flds.Add_int("step_type"); + conn.Rls_reg(this); + } + public String Tbl_name() {return tbl_name;} private final String tbl_name; + public void Create_tbl() {conn.Meta_tbl_create(Dbmeta_tbl_itm.New(tbl_name, flds));} + public int Select_type(int step_id) { + Db_rdr rdr = conn.Stmt_select(tbl_name, flds, fld_step_id).Crt_int(fld_step_id, step_id).Exec_select__rls_auto(); + try { + if (rdr.Move_next()) + return rdr.Read_int(fld_step_type); + else + throw Err_.new_("", "bldr.central:could not find step_type", "step_id", step_id); + } + finally {rdr.Rls();} + } + public void Insert(int step_id, int step_type) { + if (insert_stmt == null) insert_stmt = conn.Stmt_insert(tbl_name, flds); + insert_stmt.Clear().Val_int(fld_step_id, step_id).Val_int(fld_step_type, step_type) + .Exec_insert(); + } + public void Delete(int step_id) { + conn.Stmt_delete(tbl_name, fld_step_id).Crt_int(fld_step_id, step_id).Exec_delete(); + } + public void Rls() { + insert_stmt = Db_stmt_.Rls(insert_stmt); + } +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/centrals/dbs/datas/Xobc_task_regy_tbl.java b/400_xowa/src/gplx/xowa/addons/bldrs/centrals/dbs/datas/Xobc_task_regy_tbl.java new file mode 100644 index 000000000..0da2d429d --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/centrals/dbs/datas/Xobc_task_regy_tbl.java @@ -0,0 +1,71 @@ +/* +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.addons.bldrs.centrals.dbs.datas; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.centrals.*; import gplx.xowa.addons.bldrs.centrals.dbs.*; +import gplx.dbs.*; +import gplx.xowa.addons.bldrs.centrals.cmds.*; import gplx.xowa.addons.bldrs.centrals.tasks.*; +public class Xobc_task_regy_tbl implements Db_tbl { + private final Dbmeta_fld_list flds = new Dbmeta_fld_list(); + private final String fld_task_id, fld_task_seqn, fld_step_count, fld_task_key, fld_task_name; + private final Db_conn conn; private Db_stmt insert_stmt; + public Xobc_task_regy_tbl(Db_conn conn) { + this.conn = conn; + this.tbl_name = "task_regy"; + this.fld_task_id = flds.Add_int_pkey("task_id"); + this.fld_task_seqn = flds.Add_int("task_seqn"); + this.fld_step_count = flds.Add_int("step_count"); + this.fld_task_key = flds.Add_str("task_key", 255); + this.fld_task_name = flds.Add_str("task_name", 255); + conn.Rls_reg(this); + } + public String Tbl_name() {return tbl_name;} private final String tbl_name; + public void Create_tbl() { + conn.Meta_tbl_create(Dbmeta_tbl_itm.New(tbl_name, flds)); + conn.Meta_idx_create(Dbmeta_idx_itm.new_normal_by_tbl(tbl_name, "task_seqn", fld_task_seqn)); + } + public void Select_all(Xobc_task_regy__base todo_regy) { + todo_regy.Clear(); + Db_rdr rdr = conn.Stmt_select_order(tbl_name, flds, String_.Ary_empty, fld_task_seqn).Exec_select__rls_auto(); + try { + while (rdr.Move_next()) { + int task_id = rdr.Read_int(fld_task_id); + int task_seqn = rdr.Read_int(fld_task_seqn); + int step_count = rdr.Read_int(fld_step_count); + String task_key = rdr.Read_str(fld_task_name); + String task_name = rdr.Read_str(fld_task_name); + todo_regy.Add(new Xobc_task_itm(task_id, task_seqn, step_count, task_key, task_name)); + } + } finally {rdr.Rls();} + } + public int Select_by_key(String key) { + Db_rdr rdr = conn.Stmt_select(tbl_name, flds, fld_task_key).Exec_select__rls_auto(); + try {return rdr.Move_next() ? rdr.Read_int(fld_task_id) : -1;} + finally {rdr.Rls();} + } + public void Insert(int task_id, int task_seqn, int step_count, String task_key, String task_name) { + if (insert_stmt == null) insert_stmt = conn.Stmt_insert(tbl_name, flds); + insert_stmt.Clear().Val_int(fld_task_id, task_id).Val_int(fld_task_seqn, task_seqn).Val_int(fld_step_count, step_count) + .Val_str(fld_task_key, task_key).Val_str(fld_task_name, task_name) + .Exec_insert(); + } + public void Delete(int task_id) { + conn.Stmt_delete(tbl_name, fld_task_id).Crt_int(fld_task_id, task_id).Exec_delete(); + } + public void Rls() { + insert_stmt = Db_stmt_.Rls(insert_stmt); + } +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/centrals/dbs/datas/Xobc_version_regy_itm.java b/400_xowa/src/gplx/xowa/addons/bldrs/centrals/dbs/datas/Xobc_version_regy_itm.java new file mode 100644 index 000000000..df5944bf7 --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/centrals/dbs/datas/Xobc_version_regy_itm.java @@ -0,0 +1,28 @@ +/* +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.addons.bldrs.centrals.dbs.datas; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.centrals.*; import gplx.xowa.addons.bldrs.centrals.dbs.*; +public class Xobc_version_regy_itm { + public Xobc_version_regy_itm(int id, String date, String note) { + this.id = id; + this.date = date; + this.note = note; + } + public int Id() {return id;} private final int id; + public String Date() {return date;} private final String date; + public String Note() {return note;} private final String note; +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/centrals/dbs/datas/Xobc_version_regy_tbl.java b/400_xowa/src/gplx/xowa/addons/bldrs/centrals/dbs/datas/Xobc_version_regy_tbl.java new file mode 100644 index 000000000..0a6926b35 --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/centrals/dbs/datas/Xobc_version_regy_tbl.java @@ -0,0 +1,50 @@ +/* +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.addons.bldrs.centrals.dbs.datas; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.centrals.*; import gplx.xowa.addons.bldrs.centrals.dbs.*; +import gplx.dbs.*; +public class Xobc_version_regy_tbl implements Db_tbl { + private final Dbmeta_fld_list flds = new Dbmeta_fld_list(); + private final String fld_version_id, fld_version_date, fld_version_note; + private final Db_conn conn; + public Xobc_version_regy_tbl(Db_conn conn) { + this.conn = conn; + this.tbl_name = "version_regy"; + this.fld_version_id = flds.Add_int_pkey("version_id"); + this.fld_version_date = flds.Add_str("version_date", 16); + this.fld_version_note = flds.Add_str("version_note", 255); + conn.Rls_reg(this); + } + public String Tbl_name() {return tbl_name;} private final String tbl_name; + public void Create_tbl() { + conn.Meta_tbl_create(Dbmeta_tbl_itm.New(tbl_name, flds)); + conn.Stmt_insert(tbl_name, flds) + .Val_int(fld_version_id, 1).Val_str(fld_version_date, DateAdp_.Now().XtoStr_fmt_yyyy_MM_dd_HH_mm()).Val_str(fld_version_note, "initial") + .Exec_insert(); + } + public Xobc_version_regy_itm Select_latest() { + Db_rdr rdr = conn.Stmt_select(tbl_name, flds).Exec_select__rls_auto(); + try { + if (rdr.Move_next()) + return new Xobc_version_regy_itm(rdr.Read_int(fld_version_id), rdr.Read_str(fld_version_date), rdr.Read_str(fld_version_note)); + else + throw Err_.new_("", "version_regy does not have version"); + } + finally {rdr.Rls();} + } + public void Rls() {} +} diff --git a/400_xowa/src/gplx/xowa/bldrs/servers/jobs/Xob_job_mgr.java b/400_xowa/src/gplx/xowa/addons/bldrs/centrals/dbs/datas/imports/Xobc_import_date.java similarity index 60% rename from 400_xowa/src/gplx/xowa/bldrs/servers/jobs/Xob_job_mgr.java rename to 400_xowa/src/gplx/xowa/addons/bldrs/centrals/dbs/datas/imports/Xobc_import_date.java index 1d3659736..c6501b467 100644 --- a/400_xowa/src/gplx/xowa/bldrs/servers/jobs/Xob_job_mgr.java +++ b/400_xowa/src/gplx/xowa/addons/bldrs/centrals/dbs/datas/imports/Xobc_import_date.java @@ -15,13 +15,9 @@ 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.servers.jobs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.servers.*; -public class Xob_job_mgr { - private Ordered_hash jobs = Ordered_hash_.New(); - public int Count() {return jobs.Count();} - public Xob_job_itm Get_at(int i) {return (Xob_job_itm)jobs.Get_at(i);} - public Xob_job_itm Get(String k) {return (Xob_job_itm)jobs.Get_by(k);} - public void Load(String text) { - jobs.Add(null, null); +package gplx.xowa.addons.bldrs.centrals.dbs.datas.imports; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.centrals.*; import gplx.xowa.addons.bldrs.centrals.dbs.*; import gplx.xowa.addons.bldrs.centrals.dbs.datas.*; +public class Xobc_import_date { + public static String To_str__yyyy_mm(String raw, String dlm) { + return String_.Mid(raw, 0, 4) + dlm + String_.Mid(raw, 4, 6); } } diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/centrals/dbs/datas/imports/Xobc_import_step_itm.java b/400_xowa/src/gplx/xowa/addons/bldrs/centrals/dbs/datas/imports/Xobc_import_step_itm.java new file mode 100644 index 000000000..33287e6ca --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/centrals/dbs/datas/imports/Xobc_import_step_itm.java @@ -0,0 +1,52 @@ +/* +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.addons.bldrs.centrals.dbs.datas.imports; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.centrals.*; import gplx.xowa.addons.bldrs.centrals.dbs.*; import gplx.xowa.addons.bldrs.centrals.dbs.datas.*; +import gplx.dbs.*; +public class Xobc_import_step_itm { + public Xobc_import_step_itm(int step_id, int host_id, byte[] wiki_abrv, String wiki_date + , String import_name, int import_type, byte import_zip_type, long import_size_zip, long import_size_raw, String import_md5 + , long import_prog_data_max, int import_prog_row_max + ) { + this.Step_id = step_id; + this.Host_id = host_id; + this.wiki_abrv = wiki_abrv; + this.Wiki_date = wiki_date; + this.Import_name = import_name; + this.Import_type = import_type; + this.Import_zip_type = import_zip_type; + this.Import_size_zip = import_size_zip; + this.Import_size_raw = import_size_raw; + this.Import_md5 = import_md5; + this.Import_prog_data_max = import_prog_data_max; + this.Import_prog_row_max = import_prog_row_max; + } + public final int Step_id; + public final int Host_id; + public byte[] Wiki_abrv() {return wiki_abrv;} private final byte[] wiki_abrv; + public final String Wiki_date; + public final String Import_name; + public final int Import_type; + public final byte Import_zip_type; + public final long Import_size_zip; + public final long Import_size_raw; + public final String Import_md5; + public final long Import_prog_data_max; + public final int Import_prog_row_max; + + public static final Xobc_import_step_itm Null = null; +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/centrals/dbs/datas/imports/Xobc_import_step_tbl.java b/400_xowa/src/gplx/xowa/addons/bldrs/centrals/dbs/datas/imports/Xobc_import_step_tbl.java new file mode 100644 index 000000000..b8aabe3db --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/centrals/dbs/datas/imports/Xobc_import_step_tbl.java @@ -0,0 +1,101 @@ +/* +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.addons.bldrs.centrals.dbs.datas.imports; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.centrals.*; import gplx.xowa.addons.bldrs.centrals.dbs.*; import gplx.xowa.addons.bldrs.centrals.dbs.datas.*; +import gplx.dbs.*; +public class Xobc_import_step_tbl implements Db_tbl { + private final Dbmeta_fld_list flds = new Dbmeta_fld_list(); + private final String fld_step_id, fld_host_id, fld_wiki_abrv, fld_wiki_date, fld_import_name, fld_import_type, fld_import_zip, fld_import_md5, fld_import_size_zip, fld_import_size_raw, fld_prog_size_end, fld_prog_count_end; + public final Db_conn conn; private Db_stmt insert_stmt; + public Xobc_import_step_tbl(Db_conn conn) { + this.conn = conn; + this.tbl_name = "import_step"; + this.fld_step_id = flds.Add_int_pkey("step_id"); + this.fld_host_id = flds.Add_int("host_id"); + this.fld_wiki_abrv = flds.Add_str("wiki_abrv", 255); + this.fld_wiki_date = flds.Add_str("wiki_date", 8); + this.fld_import_name = flds.Add_str("import_name", 255); + this.fld_import_type = flds.Add_int("import_type"); + this.fld_import_zip = flds.Add_byte("import_zip"); + this.fld_import_size_zip = flds.Add_long("import_size_zip"); + this.fld_import_size_raw = flds.Add_long("import_size_raw"); + this.fld_import_md5 = flds.Add_str("import_md5", 48); + this.fld_prog_size_end = flds.Add_long("prog_size_end"); + this.fld_prog_count_end = flds.Add_long("prog_count_end"); + conn.Rls_reg(this); + } + public String Tbl_name() {return tbl_name;} private final String tbl_name; + public void Create_tbl() {conn.Meta_tbl_create(Dbmeta_tbl_itm.New(tbl_name, flds));} + public Xobc_import_step_itm Select_one(int step_id) { + Db_rdr rdr = conn.Stmt_select(tbl_name, flds, fld_step_id).Crt_int(fld_step_id, step_id).Exec_select__rls_auto(); + try { + return (rdr.Move_next()) + ? new Xobc_import_step_itm + ( rdr.Read_int(fld_step_id) + , rdr.Read_int(fld_host_id) + , rdr.Read_bry_by_str(fld_wiki_abrv) + , rdr.Read_str(fld_wiki_date) + , rdr.Read_str(fld_import_name) + , rdr.Read_int(fld_import_type) + , rdr.Read_byte(fld_import_zip) + , rdr.Read_long(fld_import_size_zip) + , rdr.Read_long(fld_import_size_raw) + , rdr.Read_str(fld_import_md5) + , rdr.Read_long(fld_prog_size_end) + , rdr.Read_int(fld_prog_count_end) + ) + : Xobc_import_step_itm.Null; + } + finally {rdr.Rls();} + } + public void Delete(int step_id) { + conn.Stmt_delete(tbl_name, fld_step_id).Crt_int(fld_step_id, step_id).Exec_delete(); + } + public void Insert(int step_id, int host_id, byte[] wiki_abrv, String wiki_date, String import_name, int import_type, byte zip_type, byte[] md5, long size_zip, long size_raw + , long prog_size_end, int prog_count_end) { + if (insert_stmt == null) insert_stmt = conn.Stmt_insert(tbl_name, flds); + insert_stmt.Clear().Val_int(fld_step_id, step_id).Val_int(fld_host_id, host_id) + .Val_bry_as_str(fld_wiki_abrv, wiki_abrv).Val_str(fld_wiki_date, wiki_date) + .Val_str(fld_import_name, import_name) + .Val_int(fld_import_type, import_type).Val_byte(fld_import_zip, zip_type) + .Val_long(fld_import_size_zip, size_zip).Val_long(fld_import_size_raw, size_raw).Val_bry_as_str(fld_import_md5, md5) + .Val_long(fld_prog_size_end, prog_size_end).Val_int(fld_prog_count_end, prog_count_end) + .Exec_insert(); + } + public void Select_tasks_steps(Xobc_task_step_hash task_step_hash, Xobc_step_map_tbl step_map_tbl, byte[] wiki_abrv, String wiki_date) { + task_step_hash.Clear(); + Db_rdr rdr = conn.Stmt_sql(String_.Concat_lines_nl_skip_last + ( "SELECT DISTINCT sm.task_id, sm.step_id" + , "FROM " + tbl_name + " imps" + , " JOIN " + step_map_tbl.Tbl_name() + " sm ON sm.step_id = imps.step_id" + , "WHERE imps.wiki_abrv = ?" + , "AND imps.wiki_date = ?" + )) + .Crt_bry_as_str(fld_wiki_abrv, wiki_abrv) + .Crt_str(fld_wiki_date, wiki_date) + .Exec_select__rls_auto() + ; + try { + while (rdr.Move_next()) { + task_step_hash.Add(rdr.Read_int("task_id"), rdr.Read_int("step_id")); + } + } finally {rdr.Rls();} + } + public void Rls() { + insert_stmt = Db_stmt_.Rls(insert_stmt); + } +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/centrals/dbs/datas/imports/Xobc_import_type.java b/400_xowa/src/gplx/xowa/addons/bldrs/centrals/dbs/datas/imports/Xobc_import_type.java new file mode 100644 index 000000000..eb7d92eab --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/centrals/dbs/datas/imports/Xobc_import_type.java @@ -0,0 +1,30 @@ +/* +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.addons.bldrs.centrals.dbs.datas.imports; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.centrals.*; import gplx.xowa.addons.bldrs.centrals.dbs.*; import gplx.xowa.addons.bldrs.centrals.dbs.datas.*; +public class Xobc_import_type { + public static final int // SERIALIZED: bc_db; import_step + Tid__ignore = 0 + , Tid__pack = 1 + , Tid__wiki__core = 2 + , Tid__wiki__srch = 3 + , Tid__wiki__html = 4 + , Tid__wiki__text = 5 + , Tid__file__core = 6 + , Tid__file__data = 7 + ; +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/centrals/dbs/datas/imports/Xobc_zip_type.java b/400_xowa/src/gplx/xowa/addons/bldrs/centrals/dbs/datas/imports/Xobc_zip_type.java new file mode 100644 index 000000000..6159c5634 --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/centrals/dbs/datas/imports/Xobc_zip_type.java @@ -0,0 +1,27 @@ +/* +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.addons.bldrs.centrals.dbs.datas.imports; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.centrals.*; import gplx.xowa.addons.bldrs.centrals.dbs.*; import gplx.xowa.addons.bldrs.centrals.dbs.datas.*; +public class Xobc_zip_type { + public static String To_str(byte type) { + switch (type) { + case Type__zip: return "zip"; + default: throw Err_.new_unhandled_default(type); + } + } + public static final byte Type__zip = 1; // SERIALIZED +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/centrals/dbs/users/Xobc_done_step_tbl.java b/400_xowa/src/gplx/xowa/addons/bldrs/centrals/dbs/users/Xobc_done_step_tbl.java new file mode 100644 index 000000000..b03b5fd8d --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/centrals/dbs/users/Xobc_done_step_tbl.java @@ -0,0 +1,55 @@ +/* +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.addons.bldrs.centrals.dbs.users; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.centrals.*; import gplx.xowa.addons.bldrs.centrals.dbs.*; +import gplx.dbs.*; +import gplx.xowa.addons.bldrs.centrals.cmds.*; import gplx.xowa.addons.bldrs.centrals.tasks.*; +public class Xobc_done_step_tbl implements Db_tbl { + private final Dbmeta_fld_list flds = new Dbmeta_fld_list(); + private final String fld_task_id, fld_step_id; + private final Db_conn conn; + public Xobc_done_step_tbl(Db_conn conn) { + this.conn = conn; + this.tbl_name = "xobc_done_step"; + this.fld_task_id = flds.Add_int("task_id"); + this.fld_step_id = flds.Add_int("step_id"); + conn.Rls_reg(this); + } + public String Tbl_name() {return tbl_name;} private final String tbl_name; + public void Create_tbl() { + conn.Meta_tbl_create(Dbmeta_tbl_itm.New(tbl_name, flds)); + conn.Meta_idx_create(Dbmeta_idx_itm.new_normal_by_tbl(tbl_name, "main", fld_task_id, fld_step_id)); + } + public void Insert(int task_id, int step_id) { + conn.Stmt_insert(tbl_name, fld_task_id, fld_step_id) + .Val_int(fld_task_id, task_id).Val_int(fld_step_id, step_id) + .Exec_insert(); + } + public Hash_adp Select_all(int task_id) { + Hash_adp rv = null; + Db_rdr rdr = conn.Stmt_select(tbl_name, String_.Ary(fld_step_id), fld_task_id).Crt_int(fld_task_id, task_id).Exec_select__rls_auto(); + try { + if (rdr.Move_next()) { + if (rv == null) rv = Hash_adp_.New(); + rv.Add_as_key_and_val(rdr.Read_int("step_id")); + } + } + finally {rdr.Rls();} + return null; + } + public void Rls() {} +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/centrals/dbs/users/Xobc_done_task_tbl.java b/400_xowa/src/gplx/xowa/addons/bldrs/centrals/dbs/users/Xobc_done_task_tbl.java new file mode 100644 index 000000000..1d46340bb --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/centrals/dbs/users/Xobc_done_task_tbl.java @@ -0,0 +1,63 @@ +/* +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.addons.bldrs.centrals.dbs.users; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.centrals.*; import gplx.xowa.addons.bldrs.centrals.dbs.*; +import gplx.dbs.*; +import gplx.xowa.addons.bldrs.centrals.cmds.*; import gplx.xowa.addons.bldrs.centrals.tasks.*; +public class Xobc_done_task_tbl implements Db_tbl { + private final Dbmeta_fld_list flds = new Dbmeta_fld_list(); + private final String fld_task_id, fld_task_seqn; + private final Db_conn conn; + public Xobc_done_task_tbl(Db_conn conn) { + this.conn = conn; + this.tbl_name = "xobc_done_task"; + this.fld_task_id = flds.Add_int_pkey("task_id"); + this.fld_task_seqn = flds.Add_int("task_seqn"); + conn.Rls_reg(this); + } + public String Tbl_name() {return tbl_name;} private final String tbl_name; + public void Create_tbl() {conn.Meta_tbl_create(Dbmeta_tbl_itm.New(tbl_name, flds));} + public void Insert(int task_id, int task_seqn) { + conn.Stmt_insert(tbl_name, fld_task_id, fld_task_seqn) + .Val_int(fld_task_id, task_id).Val_int(fld_task_seqn, task_seqn) + .Exec_insert(); + } + public void Delete(int task_id) { + conn.Stmt_delete(tbl_name, fld_task_id) + .Crt_int(fld_task_id, task_id) + .Exec_delete(); + } + public void Select_all(Xobc_task_regy__base todo_regy, Xobc_task_regy__base done_regy) { + done_regy.Clear(); + Db_rdr rdr = conn.Stmt_select_all(tbl_name, flds).Exec_select__rls_auto(); + try { + while (rdr.Move_next()) { + int task_id = rdr.Read_int(fld_task_id); + int task_seqn = rdr.Read_int(fld_task_seqn); + Xobc_task_itm itm = (Xobc_task_itm)todo_regy.Get_by(task_id); + if (itm == null) { + Gfo_log_.Instance.Warn("task exists in done, but not in todo", "task_id", task_id); + continue; + } + done_regy.Add(itm); + todo_regy.Del_by(task_id); + itm.Task_seqn_(task_seqn); + } + } finally {rdr.Rls();} + } + public void Rls() {} +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/centrals/dbs/users/Xobc_work_task_tbl.java b/400_xowa/src/gplx/xowa/addons/bldrs/centrals/dbs/users/Xobc_work_task_tbl.java new file mode 100644 index 000000000..ed9c5387b --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/centrals/dbs/users/Xobc_work_task_tbl.java @@ -0,0 +1,72 @@ +/* +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.addons.bldrs.centrals.dbs.users; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.centrals.*; import gplx.xowa.addons.bldrs.centrals.dbs.*; +import gplx.dbs.*; +import gplx.xowa.addons.bldrs.centrals.cmds.*; import gplx.xowa.addons.bldrs.centrals.tasks.*; +public class Xobc_work_task_tbl implements Db_tbl { + private final Dbmeta_fld_list flds = new Dbmeta_fld_list(); + private final String fld_task_id, fld_task_seqn, fld_step_id, fld_cmd_id; + private final Db_conn conn; + public Xobc_work_task_tbl(Db_conn conn) { + this.conn = conn; + this.tbl_name = "xobc_work_task"; + this.fld_task_id = flds.Add_int_pkey("task_id"); + this.fld_task_seqn = flds.Add_int("task_seqn"); + this.fld_step_id = flds.Add_int("step_id"); + this.fld_cmd_id = flds.Add_int("cmd_id"); + conn.Rls_reg(this); + } + public String Tbl_name() {return tbl_name;} private final String tbl_name; + public void Create_tbl() {conn.Meta_tbl_create(Dbmeta_tbl_itm.New(tbl_name, flds));} + public void Select_all(Xobc_task_mgr task_mgr, Xobc_task_regy__base todo_regy, Xobc_task_regy__base work_regy) { + work_regy.Clear(); + Db_rdr rdr = conn.Stmt_select_all(tbl_name, flds).Exec_select__rls_auto(); + try { + while (rdr.Move_next()) { + int task_id = rdr.Read_int(fld_task_id); + int task_seqn = rdr.Read_int(fld_task_seqn); + int step_id = rdr.Read_int(fld_step_id); + int cmd_id = rdr.Read_int(fld_cmd_id); + Xobc_task_itm task = (Xobc_task_itm)todo_regy.Get_by(task_id); + if (task == null) { + Gfo_log_.Instance.Warn("task exists in work, but not in todo", "task_id", task_id); + continue; + } + work_regy.Add(task); + todo_regy.Del_by(task_id); + task.Task_seqn_(task_seqn); + task.Task_status_(cmd_id == Xobc_cmd__base.Seqn__0 ? gplx.core.progs.Gfo_prog_ui_.Status__init : gplx.core.progs.Gfo_prog_ui_.Status__working); + task_mgr.Step_mgr().Load(task, step_id, cmd_id); + } + } finally {rdr.Rls();} + } + public void Insert(int task_id, int task_seqn, int step_id, int cmd_id) { + conn.Stmt_insert(tbl_name, fld_task_id, fld_task_seqn, fld_step_id, fld_cmd_id) + .Val_int(fld_task_id, task_id).Val_int(fld_task_seqn, task_seqn).Val_int(fld_step_id, step_id).Val_int(fld_cmd_id, cmd_id) + .Exec_insert(); + } + public void Update(int task_id, int task_seqn, int step_id, int cmd_id) { + conn.Stmt_update_exclude(tbl_name, flds, fld_task_id) + .Val_int(fld_task_seqn, task_seqn).Val_int(fld_step_id, step_id).Val_int(fld_cmd_id, cmd_id).Crt_int(fld_task_id, task_id) + .Exec_update(); + } + public void Delete(int task_id) { + conn.Stmt_delete(tbl_name, fld_task_id).Val_int(fld_task_id, task_id).Exec_insert(); + } + public void Rls() {} +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/centrals/steps/Xobc_step_factory.java b/400_xowa/src/gplx/xowa/addons/bldrs/centrals/steps/Xobc_step_factory.java new file mode 100644 index 000000000..4f8f98f67 --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/centrals/steps/Xobc_step_factory.java @@ -0,0 +1,76 @@ +/* +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.addons.bldrs.centrals.steps; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.centrals.*; +import gplx.core.brys.evals.*; import gplx.core.primitives.*; +import gplx.xowa.addons.bldrs.centrals.tasks.*; import gplx.xowa.addons.bldrs.centrals.cmds.*; import gplx.xowa.addons.bldrs.centrals.steps.*; import gplx.xowa.addons.bldrs.centrals.utils.*; +import gplx.xowa.addons.bldrs.centrals.dbs.*; import gplx.xowa.addons.bldrs.centrals.dbs.datas.*; import gplx.xowa.addons.bldrs.centrals.dbs.datas.imports.*; +import gplx.xowa.addons.bldrs.exports.merges.*; +import gplx.xowa.wikis.domains.*; +public class Xobc_step_factory { + private final Xobc_task_mgr task_mgr; + private final Xobc_data_db data_db; + private final Bry_eval_mgr eval_mgr = Bry_eval_mgr.Dflt(), eval_mgr__host_regy = Bry_eval_mgr.Dflt(); + private final Bry_eval_wkr__host_regy eval_wkr__host_regy = new Bry_eval_wkr__host_regy(); + public Xobc_step_factory(Xobc_task_mgr task_mgr, Xobc_data_db data_db, Io_url wiki_dir) { + this.task_mgr = task_mgr; + this.data_db = data_db; + eval_mgr.Add_many(new Bry_eval_wkr__builder_central(wiki_dir)); + eval_mgr__host_regy.Add_many(eval_wkr__host_regy); + } + public void Load(Xobc_task_itm task, int step_id, int cmd_idx) { + int step_type = data_db.Tbl__step_regy().Select_type(step_id); + switch (step_type) { + case Xobc_step_itm.Type__wiki_import: Load_wiki_import(task, step_id, cmd_idx); break; + default: throw Err_.new_unhandled_default(step_type); + } + } + private void Load_wiki_import(Xobc_task_itm task, int step_id, int cmd_idx) { + int step_seqn = data_db.Tbl__step_map().Select_one(task.Task_id(), step_id).Step_seqn; + Xobc_import_step_itm import_itm = data_db.Tbl__import_step().Select_one(step_id); String_obj_ref step_name = String_obj_ref.empty_(); + Xobc_cmd_itm[] cmds = Make_wiki_import_cmds(import_itm, task.Task_id(), step_id, step_name, step_seqn); + Xobc_step_itm step = new Xobc_step_itm(step_id, step_seqn, cmds).Cmd_idx_(cmd_idx); + step.Step_name_(String_.Format("{0} ·({1}/{2})", step_name.Val(), step_seqn + List_adp_.Base1, task.Step_count())); + task.Step_(step); + step.Cmd().Load_checkpoint(); + if (step.Cmd().Prog_status() == gplx.core.progs.Gfo_prog_ui_.Status__working) + task.Task_status_(step.Cmd().Prog_status()); + } + private Xobc_cmd_itm[] Make_wiki_import_cmds(Xobc_import_step_itm import_itm, int task_id, int step_id, String_obj_ref step_name, int step_seqn) { + List_adp list = List_adp_.New(); + Xow_domain_itm domain_itm = Xow_abrv_xo_.To_itm(import_itm.Wiki_abrv()); + String wiki_domain = domain_itm.Domain_str(); + String file_name = import_itm.Import_name; + step_name.Val_(file_name); + eval_wkr__host_regy.Domain_itm_(domain_itm); + String src_http_url = data_db.Bld_src_http_url(eval_mgr__host_regy, import_itm.Host_id, file_name); + Io_url zip_file_url = Eval_url(Bry_eval_wkr__builder_central.Make_str(Bry_eval_wkr__builder_central.Type__download_fil, wiki_domain, file_name)); + Io_url unzip_dir_url = Eval_url(Bry_eval_wkr__builder_central.Make_str(Bry_eval_wkr__builder_central.Type__unzip_dir, wiki_domain, file_name)); + Io_url wiki_dir_url = Eval_url(Bry_eval_wkr__builder_central.Make_str(Bry_eval_wkr__builder_central.Type__wiki_dir, wiki_domain, file_name)); + list.Add(new Xobc_cmd__download (task_mgr, task_id, step_id, 0, src_http_url, zip_file_url, import_itm.Import_size_zip)); + list.Add(new Xobc_cmd__verify_fil (task_mgr, task_id, step_id, 1, zip_file_url, import_itm.Import_md5, import_itm.Import_size_zip)); + list.Add(new Xobc_cmd__unzip (task_mgr, task_id, step_id, 2, zip_file_url, unzip_dir_url, import_itm.Import_size_raw)); + list.Add(new Xobc_cmd__verify_dir (task_mgr, task_id, step_id, 3, unzip_dir_url, String_.Replace(file_name, ".zip", ".md5"), zip_file_url)); + // list.Add(new Xobc_cmd__wiki_merge (task_mgr, task_id, step_id, 4, merge_mgr, wiki_domain, unzip_dir_url, import_itm.Import_prog_data_max, import_itm.Import_prog_row_max, step_seqn)); + list.Add(new Xobc_cmd__move_fils (task_mgr, task_id, step_id, 4, unzip_dir_url, wiki_dir_url)); + if (import_itm.Import_type == Xobc_import_type.Tid__wiki__core) { + list.Add(new Xobc_cmd__wiki_reg (task_mgr, task_id, step_id, 5, wiki_dir_url, wiki_domain)); + } + return (Xobc_cmd_itm[])list.To_ary_and_clear(Xobc_cmd_itm.class); + } + private Io_url Eval_url(String src) {return Io_url_.new_any_(String_.new_u8(eval_mgr.Eval(Bry_.new_u8(src))));} +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/centrals/steps/Xobc_step_itm.java b/400_xowa/src/gplx/xowa/addons/bldrs/centrals/steps/Xobc_step_itm.java new file mode 100644 index 000000000..403205656 --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/centrals/steps/Xobc_step_itm.java @@ -0,0 +1,63 @@ +/* +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.addons.bldrs.centrals.steps; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.centrals.*; +import gplx.core.gfobjs.*; +import gplx.xowa.addons.bldrs.centrals.cmds.*; +public class Xobc_step_itm { + private int cmd_idx = 0; + private final Xobc_cmd_itm[] cmds; + public Xobc_step_itm(int step_id, int step_seqn, Xobc_cmd_itm[] cmds) { + this.step_id = step_id; this.step_seqn = step_seqn; this.cmds = cmds; + } + public int Step_id() {return step_id;} private final int step_id; + public int Step_seqn() {return step_seqn;} private final int step_seqn; + public String Step_name() {return step_name;} private String step_name; + public Xobc_cmd_itm Cmd() {return cmds[cmd_idx];} + public Xobc_step_itm Cmd_idx_(int v) {cmd_idx = v; return this;} + public void Cmd_idx_next_() {++cmd_idx;} + public boolean Cmd_is_last() {return cmd_idx == cmds.length - 1;} + public Xobc_cmd_itm Step_fallback_to(String fallback_id) { + int fallback_idx = 0; + int len = cmds.length; + for (int i = 0; i < len; ++i) { + Xobc_cmd_itm cmd = cmds[i]; + if (String_.Eq(cmd.Cmd_type(), fallback_id)) { + fallback_idx = cmd.Cmd_id(); + break; + } + } + cmd_idx = fallback_idx; + return Cmd(); + } + public void Step_name_(String v) {this.step_name = v;} + public void Step_cleanup() { + int len = cmds.length; + for (int i = 0; i < len; ++i) { + cmds[i].Cmd_cleanup(); + } + } + public Gfobj_nde Save_to(Gfobj_nde nde) { + nde.Add_int ("step_id", step_id); + nde.Add_str ("step_name", step_name); + this.Cmd().Save_to(nde.New_nde("cmd")); + return nde; // fluent + } + + public static final int Type__wiki_import = 1; + public static final int Seqn__0 = 0; +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/centrals/tasks/Xobc_task_itm.java b/400_xowa/src/gplx/xowa/addons/bldrs/centrals/tasks/Xobc_task_itm.java new file mode 100644 index 000000000..bcd1b61e2 --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/centrals/tasks/Xobc_task_itm.java @@ -0,0 +1,48 @@ +/* +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.addons.bldrs.centrals.tasks; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.centrals.*; +import gplx.core.gfobjs.*; +import gplx.xowa.addons.bldrs.centrals.cmds.*; import gplx.xowa.addons.bldrs.centrals.steps.*; +public class Xobc_task_itm { + public Xobc_task_itm(int task_id, int task_seqn, int step_count, String task_key, String task_name) { + this.task_id = task_id; this.task_seqn = task_seqn; + this.step_count = step_count; + this.task_key = task_key; + this.task_name = task_name; + } + public int Task_id() {return task_id;} private final int task_id; + public String Task_key() {return task_key;} private final String task_key; + public String Task_name() {return task_name;} private final String task_name; + public int Step_count() {return step_count;} private final int step_count; + public int Task_seqn() {return task_seqn;} private int task_seqn; + public byte Task_status() {return task_status;} private byte task_status; + public Xobc_step_itm Step() {return step;} public void Step_(Xobc_step_itm v) {this.step = v;} private Xobc_step_itm step; + public boolean Step_is_last() {return step.Step_seqn() == step_count - 1;} + public void Task_status_(byte v) {task_status = v;} // called when task moves from init -> working -> suspended -> done + public void Task_seqn_(int v) {this.task_seqn = v;} // called when task is init'd from db, or added to list + + public Gfobj_nde Save_to(Gfobj_nde nde) { + nde.Add_int ("task_id" , task_id); + nde.Add_str ("task_name" , task_name); + nde.Add_byte("task_status" , task_status); + if (step != null) { + step.Save_to(nde.New_nde("step")); + } + return nde; // FLUENT + } +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/centrals/tasks/Xobc_task_regy__base.java b/400_xowa/src/gplx/xowa/addons/bldrs/centrals/tasks/Xobc_task_regy__base.java new file mode 100644 index 000000000..6b956e919 --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/centrals/tasks/Xobc_task_regy__base.java @@ -0,0 +1,42 @@ +/* +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.addons.bldrs.centrals.tasks; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.centrals.*; +import gplx.core.gfobjs.*; +public abstract class Xobc_task_regy__base { + private final Ordered_hash hash = Ordered_hash_.New(); + protected final Xobc_task_mgr task_mgr; + public Xobc_task_regy__base(Xobc_task_mgr task_mgr, String name) {this.task_mgr = task_mgr; this.name = name;} + public String Name() {return name;} private final String name; + public int Len() {return hash.Len();} + public void Add(Xobc_task_itm t) {hash.Add(t.Task_id(), t);} + public void Clear() {hash.Clear();} + public Xobc_task_itm Get_at(int i) {return (Xobc_task_itm)hash.Get_at(i);} + public Xobc_task_itm Get_by(int i) {return (Xobc_task_itm)hash.Get_by(i);} + public void Del_by(int i) {hash.Del(i);} + + public void Save_to(Gfobj_ary ary) { + int len = hash.Len(); + Gfobj_nde[] sub_ndes = new Gfobj_nde[len]; + ary.Ary_(sub_ndes); + for (int i = 0; i < len; ++i) { + Gfobj_nde sub_nde = sub_ndes[i] = Gfobj_nde.New(); + Xobc_task_itm sub_task = (Xobc_task_itm)hash.Get_at(i); + sub_task.Save_to(sub_nde); + } + } +} diff --git a/400_xowa/src/gplx/xowa/addons/builds/centrals/jobs/Xobc_job_itm.java b/400_xowa/src/gplx/xowa/addons/bldrs/centrals/tasks/Xobc_task_regy__done.java similarity index 64% rename from 400_xowa/src/gplx/xowa/addons/builds/centrals/jobs/Xobc_job_itm.java rename to 400_xowa/src/gplx/xowa/addons/bldrs/centrals/tasks/Xobc_task_regy__done.java index 3c375551c..d8e74034c 100644 --- a/400_xowa/src/gplx/xowa/addons/builds/centrals/jobs/Xobc_job_itm.java +++ b/400_xowa/src/gplx/xowa/addons/bldrs/centrals/tasks/Xobc_task_regy__done.java @@ -15,11 +15,11 @@ 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.addons.builds.centrals.jobs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.builds.*; import gplx.xowa.addons.builds.centrals.*; -public interface Xobc_job_itm extends gplx.core.progs.Gfo_prog_ui, GfoInvkAble { - String Job_uid(); - String Job_name(); - void Write_to_nde(Bry_bfr tmp_bfr, gplx.core.gfobjs.Gfobj_nde itm); - Xobc_job_itm Owner(); - Xobc_job_itm[] Subs(); +package gplx.xowa.addons.bldrs.centrals.tasks; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.centrals.*; +public class Xobc_task_regy__done extends Xobc_task_regy__base { + public Xobc_task_regy__done(Xobc_task_mgr task_mgr) {super(task_mgr, "done");} + public void Del_done(int task_id) { + task_mgr.User_db().Done_task_tbl().Delete(task_id); + task_mgr.Transfer(this, task_mgr.Todo_mgr(), this.Get_by(task_id)); + } } diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/centrals/tasks/Xobc_task_regy__todo.java b/400_xowa/src/gplx/xowa/addons/bldrs/centrals/tasks/Xobc_task_regy__todo.java new file mode 100644 index 000000000..6f5d9656b --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/centrals/tasks/Xobc_task_regy__todo.java @@ -0,0 +1,43 @@ +/* +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.addons.bldrs.centrals.tasks; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.centrals.*; +import gplx.core.gfobjs.*; +import gplx.xowa.addons.bldrs.centrals.cmds.*; import gplx.xowa.addons.bldrs.centrals.steps.*; import gplx.xowa.addons.bldrs.centrals.dbs.*; +public class Xobc_task_regy__todo extends Xobc_task_regy__base { + public Xobc_task_regy__todo(Xobc_task_mgr task_mgr) {super(task_mgr, "todo");} + public void Add_work(int task_id) { + Xobc_user_db user_db = task_mgr.User_db(); + Xobc_task_itm task = task_mgr.Todo_mgr().Get_by(task_id); + task.Task_status_(gplx.core.progs.Gfo_prog_ui_.Status__init); + task.Task_seqn_(task_mgr.Work_mgr().Len()); + + // get step_id; default is 1st step with seqn=0, but skip any steps that have already been downloaded; handles user accidentally removing item from work; + int step_seqn = Xobc_step_itm.Seqn__0; + Hash_adp done_steps = user_db.Done_step_tbl().Select_all(task_id); + if (done_steps != null) + step_seqn = task_mgr.Data_db().Tbl__step_map().Select_seqn_but_skip_done(task_id, done_steps); + int step_id = task_mgr.Data_db().Tbl__step_map().Select_step_id(task_id, step_seqn); + + // load task, cur_step, and all cmds + task_mgr.Step_mgr().Load(task, step_id, Xobc_cmd__base.Seqn__0); + + // do transfer + user_db.Work_task_tbl().Insert(task_id, task.Task_seqn(), step_id, Xobc_cmd__base.Seqn__0); + task_mgr.Transfer(this, task_mgr.Work_mgr(), task); + } +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/centrals/tasks/Xobc_task_regy__work.java b/400_xowa/src/gplx/xowa/addons/bldrs/centrals/tasks/Xobc_task_regy__work.java new file mode 100644 index 000000000..428005b89 --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/centrals/tasks/Xobc_task_regy__work.java @@ -0,0 +1,139 @@ +/* +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.addons.bldrs.centrals.tasks; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.centrals.*; +import gplx.core.gfobjs.*; import gplx.core.progs.*; import gplx.core.threads.*; +import gplx.xowa.drds.powers.*; +import gplx.xowa.addons.bldrs.centrals.steps.*; import gplx.xowa.addons.bldrs.centrals.cmds.*; +public class Xobc_task_regy__work extends Xobc_task_regy__base { + private final Thread_adp_mgr thread_mgr = new Thread_adp_mgr(1000, 5000); + private final Xobc_cmd_ctx ctx; + public Xobc_task_regy__work(Xobc_task_mgr task_mgr, Xoa_app app) {super(task_mgr, "work"); + this.ctx = new Xobc_cmd_ctx(app); + } + public void Del_work(int task_id) { + Xobc_task_itm task = this.Get_by(task_id); + if (task.Step() != null) task.Step().Step_cleanup(); + this.Del_task(task, task_mgr.Todo_mgr()); + } + private void Del_task(Xobc_task_itm task, Xobc_task_regy__base trg) { + task_mgr.User_db().Work_task_tbl().Delete(task.Task_id()); + task_mgr.Transfer(this, trg, task); + } + public void Run_next() { + Xod_power_mgr_.Instance.Wake_lock__get("task_mgr"); + int len = this.Len(); + for (int i = 0; i < len; ++i) { + Xobc_task_itm task = this.Get_at(i); + Xobc_cmd_itm cmd = task.Step().Cmd(); + if (gplx.core.bits.Bitmask_.Has_byte(Gfo_prog_ui_.Status__runnable, cmd.Prog_status())) { // must be runnable + Run_task(task, cmd); + break; + } + } + } + public void Run_task(Xobc_task_itm task, Xobc_cmd_itm cmd) { + task.Task_status_(gplx.core.progs.Gfo_prog_ui_.Status__working); + task_mgr.Send_json("xo.bldr.work.prog__start__recv", task.Save_to(Gfobj_nde.New())); + thread_mgr.Add(cmd.Cmd_uid(), Thread_adp_.Start_by_val("xobc: " + cmd.Cmd_name(), cmd, cmd, Xobc_cmd__base.Invk__exec, ctx)); + } + public void Stop_cur() { + Xod_power_mgr_.Instance.Wake_lock__rls("task_mgr"); + int len = this.Len(); + for (int i = 0; i < len; ++i) { + Xobc_task_itm task = this.Get_at(i); + Xobc_cmd_itm cmd = task.Step().Cmd(); + if (gplx.core.bits.Bitmask_.Has_byte(Gfo_prog_ui_.Status__working, cmd.Prog_status())) { // must be runnable + Stop_task(cmd.Cmd_uid()); + break; + } + } + } + public void Redo_cur() { + int len = this.Len(); + for (int i = 0; i < len; ++i) { + Xobc_task_itm task = this.Get_at(i); + Xobc_step_itm step = task.Step(); + Xobc_cmd_itm cmd = step.Cmd(); + if (gplx.core.bits.Bitmask_.Has_byte(Gfo_prog_ui_.Status__fail, cmd.Prog_status())) { // must be runnable + Redo_task(task, step, cmd); + break; + } + } + } + private void Stop_task(String cmd_uid) { + thread_mgr.Halt(cmd_uid, Thread_halt_cbk_.Noop); + } + private void Redo_task(Xobc_task_itm task, Xobc_step_itm step, Xobc_cmd_itm cmd) { + cmd.Cmd_clear(); + cmd = step.Step_fallback_to(cmd.Cmd_fallback()); + task.Task_status_(gplx.core.progs.Gfo_prog_ui_.Status__working); + task_mgr.Send_json("xo.bldr.work.prog__start__recv", task.Save_to(Gfobj_nde.New())); + thread_mgr.Add(cmd.Cmd_uid(), Thread_adp_.Start_by_val("xobc: " + cmd.Cmd_name(), cmd, cmd, Xobc_cmd__base.Invk__exec, ctx)); + } + public void On_done(Xobc_cmd_itm cmd) { + Xobc_task_itm task = this.Get_by(cmd.Task_id()); + Xobc_step_itm step = task.Step(); + boolean step_is_done = step.Cmd_is_last(); + boolean task_is_done = step_is_done && task.Step_is_last(); + task_mgr.Send_json("xo.bldr.work.prog__done__recv", Gfobj_nde.New().Add_int("task_id", task.Task_id()).Add_bool("task_is_done", task_is_done)); + + // step.done -> task.done || step.next + if (step_is_done) { + step.Step_cleanup(); + task_mgr.User_db().Done_step_tbl().Insert(cmd.Task_id(), cmd.Step_id()); + // task.done + if (task_is_done) { + task.Task_status_(Gfo_prog_ui_.Status__done); + task_mgr.User_db().Done_task_tbl().Insert(cmd.Task_id(), task.Task_seqn()); // NOTE: this will order by todo's sort, not by actually completed sorted + Del_task(task, task_mgr.Done_mgr()); + } + // step.next + else { + int next_step = task_mgr.Data_db().Tbl__step_map().Select_step_id(task.Task_id(), step.Step_seqn() + 1); + task_mgr.Step_mgr().Load(task, next_step, Xobc_cmd__base.Seqn__0); + } + } + // step.work -> cmd.next + else { + step.Cmd_idx_next_(); + } + + // task_regy.done + if (task_is_done) { + if (this.Len() == 0) + Xod_power_mgr_.Instance.Wake_lock__rls("task_mgr"); + else + this.Run_next(); + } + // task_regy.work + else { + cmd = task.Step().Cmd(); + task_mgr.User_db().Work_task_tbl().Update(cmd.Task_id(), task.Task_seqn(), cmd.Step_id(), cmd.Cmd_id()); + this.Run_next(); + } + } + public void On_suspended(Xobc_cmd_itm cmd) { + Xobc_task_itm task = this.Get_by(cmd.Task_id()); + task.Task_status_(Gfo_prog_ui_.Status__suspended); + task_mgr.Send_json("xo.bldr.work.stop_cur__recv", Gfobj_nde.New().Add_int("task_id", task.Task_id())); + } + public void On_fail(Xobc_cmd_itm task, String msg) { + Xod_power_mgr_.Instance.Wake_lock__rls("task_mgr"); + task_mgr.Send_json("xo.bldr.work.prog__fail__recv", Gfobj_nde.New().Add_int("task_id", task.Task_id()).Add_str("err", msg)); + } +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/centrals/utils/Bry_eval_wkr__builder_central.java b/400_xowa/src/gplx/xowa/addons/bldrs/centrals/utils/Bry_eval_wkr__builder_central.java new file mode 100644 index 000000000..a762d54ea --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/centrals/utils/Bry_eval_wkr__builder_central.java @@ -0,0 +1,67 @@ +/* +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.addons.bldrs.centrals.utils; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.centrals.*; +import gplx.core.brys.evals.*; +public class Bry_eval_wkr__builder_central implements Bry_eval_wkr { + private final byte[] wiki_dir; + public Bry_eval_wkr__builder_central(Io_url wiki_dir) {this.wiki_dir = wiki_dir.RawBry();} + public String Key() {return "builder_central";} + public void Resolve(Bry_bfr rv, byte[] src, int args_bgn, int args_end) { + // EX: "~{builder_central|download_fil|en.wikipedia.org|en.wikipedia.org-2016.05-html-ns.000-db.001.zip}" -> "/xowa/wiki/en.wikipedia.org/tmp/bldr/en.wikipedia.org-2016.05-html-ns.000-db.001.zip/download.zip" + byte[][] args = Bry_split_.Split(src, args_bgn, args_end, Byte_ascii.Pipe, Bool_.N); + int type = hash.Get_as_byte_or(args[0], Byte_.Max_value_127); + if (type == Byte_.Max_value_127) throw Err_.new_wo_type("unknown eval type", "src", src); + byte dir_spr = gplx.core.envs.Op_sys.Cur().Fsys_dir_spr_byte(); + rv.Add(wiki_dir); // "/xowa/wiki/" + rv.Add(args[1]).Add_byte(dir_spr); // "en.wikipedia.org/" + if (type == Type__wiki_dir) return; + rv.Add_str_a7("tmp").Add_byte(dir_spr); // "tmp/" + rv.Add_str_a7("bldr").Add_byte(dir_spr); // "bldr/" + rv.Add(args[2]).Add_byte(dir_spr); // "en.wikipedia.org-2016.05-html-ns.000-db.001.zip/" + switch (type) { + case Type__download_fil: rv.Add_str_a7("download.zip"); break; + case Type__unzip_dir: rv.Add_str_a7("unzip").Add_byte(dir_spr); break; + default: throw Err_.new_unhandled_default(type); + } + } + + public static final byte Type__download_fil = 0, Type__unzip_dir = 1, Type__wiki_dir = 2; + private static final Hash_adp_bry hash = Hash_adp_bry.cs() + .Add_str_byte("download_fil", Type__download_fil) + .Add_str_byte("unzip_dir", Type__unzip_dir) + .Add_str_byte("wiki_dir", Type__wiki_dir) + ; + public static String Make_str(byte type, String domain, String file_name) { + String type_name = null; + switch (type) { + case Type__download_fil: type_name = "download_fil"; break; + case Type__unzip_dir: type_name = "unzip_dir"; break; + case Type__wiki_dir: type_name = "wiki_dir"; break; + default: throw Err_.new_unhandled_default(type); + } + return "~{" + String_.Format("builder_central|{0}|{1}|{2}", type_name, domain, file_name) + "}"; + } + public static String Make_str(byte type, String domain) { + String type_name = null; + switch (type) { + case Type__wiki_dir: type_name = "wiki_dir"; break; + default: throw Err_.new_unhandled_default(type); + } + return "~{" + String_.Format("builder_central|{0}|{1}", type_name, domain) + "}"; + } +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/centrals/utils/Bry_eval_wkr__host_regy.java b/400_xowa/src/gplx/xowa/addons/bldrs/centrals/utils/Bry_eval_wkr__host_regy.java new file mode 100644 index 000000000..df364226d --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/centrals/utils/Bry_eval_wkr__host_regy.java @@ -0,0 +1,38 @@ +/* +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.addons.bldrs.centrals.utils; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.centrals.*; +import gplx.core.brys.evals.*; +import gplx.xowa.wikis.domains.*; +public class Bry_eval_wkr__host_regy implements Bry_eval_wkr { + private Xow_domain_itm domain_itm; + public String Key() {return "host_regy";} + public Bry_eval_wkr__host_regy Domain_itm_(Xow_domain_itm domain_itm) {this.domain_itm = domain_itm; return this;} + public void Resolve(Bry_bfr rv, byte[] src, int args_bgn, int args_end) { + // EX: "~{host_regy|wiki_abrv}" -> "enwiki" + int type = hash.Get_as_byte_or(src, args_bgn, args_end, Byte_.Max_value_127); + switch (type) { + case Type__wiki_abrv: rv.Add(domain_itm.Abrv_wm()); break; + default: throw Err_.new_unhandled_default(type); + } + } + + public static final byte Type__wiki_abrv = 0; + private static final Hash_adp_bry hash = Hash_adp_bry.cs() + .Add_str_byte("wiki_abrv", Type__wiki_abrv) + ; +} diff --git a/400_xowa/src/gplx/xowa/addons/builds/centrals/jobs/Time_dhms_.java b/400_xowa/src/gplx/xowa/addons/bldrs/centrals/utils/Time_dhms_.java similarity index 93% rename from 400_xowa/src/gplx/xowa/addons/builds/centrals/jobs/Time_dhms_.java rename to 400_xowa/src/gplx/xowa/addons/bldrs/centrals/utils/Time_dhms_.java index 538861150..b850c4ec7 100644 --- a/400_xowa/src/gplx/xowa/addons/builds/centrals/jobs/Time_dhms_.java +++ b/400_xowa/src/gplx/xowa/addons/bldrs/centrals/utils/Time_dhms_.java @@ -15,7 +15,7 @@ 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.addons.builds.centrals.jobs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.builds.*; import gplx.xowa.addons.builds.centrals.*; +package gplx.xowa.addons.bldrs.centrals.utils; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.centrals.*; public class Time_dhms_ { public static String To_str(Bry_bfr bfr, long val, boolean show_unit, int max_places) {To_bfr(bfr, val, show_unit, max_places); return bfr.To_str_and_clear();} public static void To_bfr(Bry_bfr bfr, long val, boolean show_unit, int max_places) { diff --git a/400_xowa/src/gplx/xowa/addons/builds/centrals/jobs/Time_dhms__tst.java b/400_xowa/src/gplx/xowa/addons/bldrs/centrals/utils/Time_dhms__tst.java similarity index 58% rename from 400_xowa/src/gplx/xowa/addons/builds/centrals/jobs/Time_dhms__tst.java rename to 400_xowa/src/gplx/xowa/addons/bldrs/centrals/utils/Time_dhms__tst.java index 0439596e8..f966bf94d 100644 --- a/400_xowa/src/gplx/xowa/addons/builds/centrals/jobs/Time_dhms__tst.java +++ b/400_xowa/src/gplx/xowa/addons/bldrs/centrals/utils/Time_dhms__tst.java @@ -15,22 +15,22 @@ 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.addons.builds.centrals.jobs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.builds.*; import gplx.xowa.addons.builds.centrals.*; +package gplx.xowa.addons.bldrs.centrals.utils; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.centrals.*; import org.junit.*; import gplx.core.tests.*; public class Time_dhms__tst { private final Time_dhms__fxt fxt = new Time_dhms__fxt(); - @Test public void S___0() {fxt.Test__to_str( 0, 4, "0 s");} - @Test public void S___1() {fxt.Test__to_str( 1, 4, "1 s");} - @Test public void S___2() {fxt.Test__to_str( 30, 4, "30 s");} - @Test public void M___1() {fxt.Test__to_str( 60, 4, "1:00 m");} - @Test public void M___2() {fxt.Test__to_str( 600, 4, "10:00 m");} - @Test public void H___1() {fxt.Test__to_str( 3600, 4, "1:00:00 h");} - @Test public void H___2() {fxt.Test__to_str( 5025, 4, "1:23:45 h");} - @Test public void D___1() {fxt.Test__to_str( 86400, 4, "1:00:00:00 d");} + @Test public void S__0() {fxt.Test__to_str( 0, 4, "0 s");} + @Test public void S__1() {fxt.Test__to_str( 1, 4, "1 s");} + @Test public void S__2() {fxt.Test__to_str( 30, 4, "30 s");} + @Test public void M__1() {fxt.Test__to_str( 60, 4, "1:00 m");} + @Test public void M__2() {fxt.Test__to_str( 600, 4, "10:00 m");} + @Test public void H__1() {fxt.Test__to_str( 3600, 4, "1:00:00 h");} + @Test public void H__2() {fxt.Test__to_str( 5025, 4, "1:23:45 h");} + @Test public void D__1() {fxt.Test__to_str( 86400, 4, "1:00:00:00 d");} @Test public void Max_places() {fxt.Test__to_str( 86400, 2, "1:00 d");} } class Time_dhms__fxt { - private final Bry_bfr bfr = Bry_bfr.new_(); + private final Bry_bfr bfr = Bry_bfr_.New(); public Time_dhms__fxt Test__to_str(long v, int max_places, String expd) { Gftest.Eq__str(expd, Time_dhms_.To_str(bfr, v, Bool_.Y, max_places)); return this;} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/exports/Export_addon.java b/400_xowa/src/gplx/xowa/addons/bldrs/exports/Export_addon.java new file mode 100644 index 000000000..0b0487338 --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/exports/Export_addon.java @@ -0,0 +1,31 @@ +/* +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.addons.bldrs.exports; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; +import gplx.xowa.bldrs.wkrs.*; +public class Export_addon implements Xoax_addon_itm, Xoax_addon_itm__bldr { + public Xob_cmd[] Bldr_cmds() { + return new Xob_cmd[] + { gplx.xowa.addons.bldrs.exports.splits.Split_bldr_cmd.Prototype + , gplx.xowa.addons.bldrs.exports.merges.Merge_bldr_cmd.Prototype + , gplx.xowa.addons.bldrs.exports.packs.splits.Pack_split_bldr_cmd.Prototype + , gplx.xowa.addons.bldrs.exports.packs.files.Pack_file_bldr_cmd.Prototype + }; + } + + public String Addon__key() {return "xowa.builds.repacks";} +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/exports/Xow_db_file_mgr.java b/400_xowa/src/gplx/xowa/addons/bldrs/exports/Xow_db_file_mgr.java new file mode 100644 index 000000000..dc4c56b9a --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/exports/Xow_db_file_mgr.java @@ -0,0 +1,33 @@ +/* +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.addons.bldrs.exports; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; +import gplx.dbs.*; import gplx.xowa.wikis.data.*; import gplx.xowa.wikis.data.tbls.*; +public class Xow_db_file_mgr { + private final Ordered_hash hash = Ordered_hash_.New(); + public int Len() {return hash.Len();} + public Xow_db_file Get_at(int i) {return (Xow_db_file)hash.Get_at(i);} + public Xow_db_file_mgr Load_by_type(Xow_db_mgr db_mgr, int type) { + int len = db_mgr.Dbs__len(); + for (int i = 0; i < len; ++i) { + Xow_db_file db_file = db_mgr.Dbs__get_at(i); + if (db_file.Tid() != type) continue; + hash.Add(db_file.Url().Raw(), db_file); + } + return this; + } +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/exports/merges/Merge2_copy_utl.java b/400_xowa/src/gplx/xowa/addons/bldrs/exports/merges/Merge2_copy_utl.java new file mode 100644 index 000000000..8f57bffc0 --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/exports/merges/Merge2_copy_utl.java @@ -0,0 +1,112 @@ +/* +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.addons.bldrs.exports.merges; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.exports.*; +import gplx.dbs.*; +public class Merge2_copy_utl { + private final Bry_bfr bfr = Bry_bfr_.New(); + private final String tbl_name, fld_pkey, fld_blob; + private final boolean tbl_has_blob; + private Db_conn conn; + public Merge2_copy_utl(String tbl_name, String fld_pkey, String fld_blob, boolean tbl_has_blob) { + this.tbl_name = tbl_name; + this.fld_pkey = fld_pkey; + this.fld_blob = fld_blob; + this.tbl_has_blob = tbl_has_blob; + } + public void Init_conn(Db_conn conn) { + this.conn = conn; + } + public byte[] Select_blob(Db_rdr data_rdr, String fld_blob_pkey) { // NOTE: need to SELECT entire BLOB; cannot UPDATE in 1 MB increments b/c SQLite does not really concat BLOBS; REF.SQLITE: http://sqlite.1065341.n5.nabble.com/Append-data-to-a-BLOB-field-td46003.html + int id = data_rdr.Read_int(fld_blob_pkey); + int len_max = data_rdr.Read_int("blob_len"); + int len_cur = 1, len_gap = 1000000; + while (len_cur < len_max) { + // determine substr args; EX: Substr(blob_col, 1, 1000000); Substr(blob_col, 1000001, 1000000); Substr(blob_col, 2000001, 1234); + int len_new = len_cur + len_gap; + if (len_new >= len_max) len_gap = len_max - len_cur; // last SELECT; Substr remainder, not full 1 MB + + // read data; note that stmt needs to be new'd for each loop b/c SQL is different + Db_stmt stmt = conn.Stmt_sql(String_.Format(String_.Concat_lines_nl_skip_last // ANSI.N; NOTE: will only run on Android SQLite + ( "SELECT Substr({0}, {1}, {2}) AS blob_data" + , "FROM {3}" + , "WHERE {4} = {5}" + ), fld_blob, len_cur, len_gap, tbl_name, fld_pkey, id)); + Db_rdr rdr = stmt.Exec_select__rls_auto(); + try { + if (rdr.Move_next()) + bfr.Add(rdr.Read_bry("blob_data")); + else + throw Err_.new_wo_type("failed to read blob in increments", "id", id, "len_cur", len_cur); + } + finally { + rdr.Rls(); + stmt.Rls(); + } + + len_cur = len_new; + } + return bfr.To_bry_and_clear(); + } + public String Bld_sql(Dbmeta_fld_list flds, int flds_end, boolean src_is_pack, byte mode, int resume__db_id) { + bfr.Add_str_a7("SELECT"); + for (int i = 0; i < flds_end; ++i) { + bfr.Add_str_a7(i == 0 ? " " : ", "); + bfr.Add_str_u8(flds.Get_at(i).Name()); + } + bfr.Add_str_u8(Bld_select_fld(mode)); + bfr.Add_str_a7("\nFROM ").Add_str_u8(tbl_name); + if (!src_is_pack) { + } + else { + bfr.Add_str_a7("\nWHERE "); + if (src_is_pack) { + bfr.Add_str_a7("trg_db_id >= "); + bfr.Add_int_variable(resume__db_id); + if (mode != Merge2_copy_utl.Mode__all) + bfr.Add_str_a7("\nAND "); + } + bfr.Add_str_a7(Bld_where(mode)); + } + if (!src_is_pack) { + bfr.Add_str_a7("\nORDER BY "); + bfr.Add_str_u8(fld_pkey); + } + else { + bfr.Add_str_a7("\nORDER BY trg_db_id, "); + bfr.Add_str_u8(fld_pkey); + } + return bfr.To_str_and_clear(); + } + public String Bld_select_fld(byte mode) { + switch (mode) { + case Merge2_copy_utl.Mode__all: + case Merge2_copy_utl.Mode__drd__small: return tbl_has_blob ? ", " + fld_blob : ""; + case Merge2_copy_utl.Mode__drd__large: return ", blob_len"; + default: throw Err_.new_unhandled_default(mode); + } + } + public String Bld_where(byte mode) { + switch (mode) { + case Merge2_copy_utl.Mode__all: return ""; + case Merge2_copy_utl.Mode__drd__small: return "blob_len <= 1000000"; + case Merge2_copy_utl.Mode__drd__large: return "blob_len > 1000000"; + default: throw Err_.new_unhandled_default(mode); + } + } + public static final byte Mode__all = 0, Mode__drd__small = 1, Mode__drd__large = 2; +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/exports/merges/Merge2_copy_wkr__lot.java b/400_xowa/src/gplx/xowa/addons/bldrs/exports/merges/Merge2_copy_wkr__lot.java new file mode 100644 index 000000000..f54ae16de --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/exports/merges/Merge2_copy_wkr__lot.java @@ -0,0 +1,145 @@ +/* +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.addons.bldrs.exports.merges; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.exports.*; +import gplx.dbs.*; import gplx.xowa.addons.bldrs.exports.utls.*; +class Merge2_copy_wkr__lot { + private final Split_tbl tbl; + private final String tbl_name, fld_blob_pkey, fld_blob_data; + private final Merge2_copy_utl copy_utl; + private int resume__db_id; + private boolean tbl_has_blob; + public Merge2_copy_wkr__lot(Split_tbl tbl) { + this.tbl = tbl; + this.tbl_name = tbl.Tbl_name(); + this.fld_blob_pkey = tbl.Fld_pkeys()[0]; + this.fld_blob_data = tbl.Fld_blob(); + this.tbl_has_blob = Split_tbl_.Tbl_has_blob(tbl); + this.copy_utl = new Merge2_copy_utl(tbl.Tbl_name(), fld_blob_pkey, fld_blob_data, tbl_has_blob); + } + public void Copy_by_sql(String msg, Merge_ctx ctx, Merge_prog_wkr prog_wkr, Db_conn src_conn, Merge2_trg_itm trg_db, Merge2_trg_mgr trg_mgr, boolean src_is_pack) { + Xow_wiki wiki = ctx.Wiki(); + if (src_is_pack) { + int[] trg_db_idxs = Get_trg_dbs(src_conn, tbl_name); + int trg_db_idxs_len = trg_db_idxs.length; + for (int i = 0; i < trg_db_idxs_len; ++i) { + int trg_db_id = trg_db_idxs[i]; + Merge2_trg_itm trg_db_new = trg_mgr.Cur_or_new(ctx, prog_wkr, wiki, trg_db_id); + Copy_by_trg_conn(msg, prog_wkr, src_conn, trg_db_new, trg_db_id, src_is_pack); + } + } + else { + Copy_by_trg_conn(msg, prog_wkr, src_conn, trg_db, trg_db.Idx(), src_is_pack); + } + } + private void Copy_by_trg_conn(String msg, Merge_prog_wkr prog_wkr, Db_conn src_conn, Merge2_trg_itm trg_db, int trg_db_id, boolean src_is_pack) { + Dbmeta_fld_list src_flds = tbl.Flds().Clone(); // src_flds.Insert(0, Dbmeta_fld_itm.new_int("trg_db_id")); + Merge_wkr_utl.Merge_by_sql(prog_wkr, msg, tbl.Tbl_name(), src_flds, src_conn, trg_db, trg_db_id, !src_is_pack); + } + private int[] Get_trg_dbs(Db_conn conn, String tbl_name) { + List_adp list = List_adp_.New(); + Db_rdr rdr = conn.Stmt_sql(String_.Format("SELECT trg_db_id FROM {0} GROUP BY trg_db_id", tbl_name)).Exec_select__rls_auto(); + try { + while (rdr.Move_next()) { + list.Add(rdr.Read_int("trg_db_id")); + } + } + finally { + rdr.Rls(); + } + return (int[])list.To_ary_and_clear(int.class); + } + public void Copy_entire_src(Merge_ctx ctx, Merge_prog_wkr prog_wkr, Db_conn src_conn, Merge2_trg_itm trg_db, Merge2_trg_mgr trg_mgr, boolean src_is_pack) { + Xow_wiki wiki = ctx.Wiki(); + + if (gplx.core.envs.Op_sys.Cur().Tid_is_drd() && tbl_has_blob) { + Copy_rows(ctx, prog_wkr, wiki, tbl, src_conn, trg_db, trg_mgr, src_is_pack, Merge2_copy_utl.Mode__drd__small); + Copy_rows(ctx, prog_wkr, wiki, tbl, src_conn, trg_db, trg_mgr, src_is_pack, Merge2_copy_utl.Mode__drd__large); + } + else + Copy_rows(ctx, prog_wkr, wiki, tbl, src_conn, trg_db, trg_mgr, src_is_pack, Merge2_copy_utl.Mode__all); + } + private void Copy_rows(Merge_ctx ctx, Merge_prog_wkr prog_wkr, Xow_wiki wiki, Split_tbl tbl, Db_conn src_conn, Merge2_trg_itm trg_db, Merge2_trg_mgr trg_mgr, boolean src_is_pack, byte select_mode) { + // init src + Dbmeta_fld_list src_flds = tbl.Flds().Clone(); + if (src_is_pack) + src_flds.Insert(0, Dbmeta_fld_itm.new_int("trg_db_id")); + int flds_nth = src_flds.Len(); + if (tbl_has_blob) { + Split_tbl_.Flds__add_blob_len(src_flds); + flds_nth = src_flds.Len() - 1; // ignore blob which is last fld by convention + } + String src_sql = copy_utl.Bld_sql(src_flds, flds_nth, src_is_pack, select_mode, resume__db_id); + Db_rdr src_rdr = src_conn.Stmt_sql(src_sql).Exec_select__rls_auto(); + copy_utl.Init_conn(src_conn); + + Dbmeta_fld_list trg_flds = tbl.Flds().Clone(); + if (tbl_has_blob && src_is_pack) { + Split_tbl_.Flds__add_blob_len(trg_flds); + } + + Db_stmt trg_stmt = null; Db_conn trg_conn = null; int cur_trg = -1; + if (trg_db != null) { + trg_conn = trg_db.Conn(); + trg_conn.Txn_bgn("merge_" + tbl_name); + trg_stmt = trg_conn.Stmt_insert(tbl_name, trg_flds); + cur_trg = trg_db.Idx(); + } + try { + while (src_rdr.Move_next()) { + // switch trg_db if null, or diff than cur; note that trg_stmt also changes + if (src_is_pack) { + int trg_db_id = src_rdr.Read_int("trg_db_id"); + if (cur_trg != trg_db_id) { + if (trg_conn != null) trg_conn.Txn_end(); + trg_conn = trg_mgr.Cur_or_new(ctx, prog_wkr, wiki, trg_db_id).Conn(); + trg_conn.Txn_bgn("merge_" + tbl_name); + trg_stmt = trg_conn.Stmt_insert(tbl_name, trg_flds); + cur_trg = trg_db_id; + resume__db_id = trg_db_id; + prog_wkr.Checkpoint__save(); + } + } + + // read and insert + trg_stmt.Clear(); + gplx.dbs.diffs.Gfdb_rdr_utl_.Stmt_args(trg_stmt, trg_flds, 0, trg_flds.Len() - (tbl_has_blob ? 1 : 0), src_rdr); + if (tbl_has_blob) { + byte[] val_blob = select_mode == Merge2_copy_utl.Mode__drd__large + ? copy_utl.Select_blob(src_rdr, fld_blob_pkey) + : src_rdr.Read_bry(fld_blob_data); + trg_stmt.Val_bry(fld_blob_data , val_blob); + } + trg_stmt.Exec_insert(); + + if (prog_wkr.Prog__insert_and_stop_if_suspended(0)) break; + } + } + finally { + src_rdr.Rls(); + if (trg_conn != null) { + trg_conn.Txn_end(); + } + trg_stmt = Db_stmt_.Rls(trg_stmt); + } + } +} +/* +2 situations: +- pack (trg_db,blob_len,*) -> heap (blob_len,*) +- heap (blob_len,*) -> wiki (*) +*/ diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/exports/merges/Merge2_heap_db.java b/400_xowa/src/gplx/xowa/addons/bldrs/exports/merges/Merge2_heap_db.java new file mode 100644 index 000000000..7fbd934e0 --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/exports/merges/Merge2_heap_db.java @@ -0,0 +1,30 @@ +/* +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.addons.bldrs.exports.merges; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.exports.*; +import gplx.dbs.*; import gplx.xowa.addons.bldrs.exports.utls.*; +public class Merge2_heap_db implements Merge2_trg_itm { + public Merge2_heap_db(Split_tbl tbl, Dbmeta_fld_list flds, int idx, Io_url url, Db_conn conn) { + this.tbl = tbl; this.flds = flds; this.idx = idx; + this.url = url; this.conn = conn; + } + public Split_tbl Tbl() {return tbl;} private final Split_tbl tbl; + public Dbmeta_fld_list Flds() {return flds;} private final Dbmeta_fld_list flds; + public int Idx() {return idx;} private final int idx; + public Io_url Url() {return url;} private final Io_url url; + public Db_conn Conn() {return conn;} private final Db_conn conn; +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/exports/merges/Merge2_heap_mgr.java b/400_xowa/src/gplx/xowa/addons/bldrs/exports/merges/Merge2_heap_mgr.java new file mode 100644 index 000000000..9ec76f70a --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/exports/merges/Merge2_heap_mgr.java @@ -0,0 +1,113 @@ +/* +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.addons.bldrs.exports.merges; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.exports.*; +import gplx.dbs.*; import gplx.xowa.addons.bldrs.exports.utls.*; +public class Merge2_heap_mgr {// data tbls will only have 1 itms; blob tbls will have N itms + private final Split_tbl tbl; + private final List_adp list = List_adp_.New(), deleted = List_adp_.New(); + private Dbmeta_fld_list heap_flds; + public Merge2_heap_mgr(Split_tbl tbl) {this.tbl = tbl;} + public Merge2_heap_db Cur() {return cur;} private Merge2_heap_db cur; + public Merge2_heap_db Make_itm(Xow_wiki wiki, int trg_db_id) { + // clone tbl_flds; disable primary key + this.heap_flds = tbl.Flds().Clone(); + int len = heap_flds.Len(); + for (int i = 0; i < len; ++i) { + Dbmeta_fld_itm itm = heap_flds.Get_at(i); + if (itm.Primary()) itm.Primary_n_(); + } + + // if blob, add "blob_len" in penultimate pos; note that last fld is "blob_fld" +// if (Split_tbl_.Tbl_has_blob(tbl)) +// Split_tbl_.Flds__add_blob_len(heap_flds); + + // init heap_conn + String tbl_name = tbl.Tbl_name(); + Io_url heap_dir = wiki.Fsys_mgr().Root_dir().GenSubDir_nest("tmp", "merge", tbl_name); + Io_url heap_url = heap_dir.GenSubFil(String_.Format("xowa.merge.temp.{0}{1}.sqlite3", tbl_name, trg_db_id == -1 ? "" : "." + Int_.To_str_pad_bgn_zero(trg_db_id, 4))); + Db_conn_bldr_data bldr_data = Db_conn_bldr.Instance.Get_or_new(heap_url); + Db_conn heap_conn = bldr_data.Conn(); + if (bldr_data.Created()) + heap_conn.Meta_tbl_create(Dbmeta_tbl_itm.New(tbl_name, heap_flds)); + + // make itm and return it + Merge2_heap_db rv = new Merge2_heap_db(tbl, heap_flds, trg_db_id, heap_url, heap_conn); + this.Add(rv); + return rv; + } + public void Copy_to_wiki(Merge_ctx ctx, Merge_prog_wkr prog_wkr, Merge2_wkr__heap_base wkr) { + // do copy for all itms; only 1 itm for page, fsdb_fil, etc..; but many for html, fsdb_bin + int len = list.Len(); + for (int i = 0; i < len; ++i) + Copy_to_wiki__itm(ctx, prog_wkr, wkr, this.Get_at(i), i == len - 1); + + // delete any old dbs + len = deleted.Len(); + for (int i = 0; i < len; ++i) { + Merge2_heap_db itm = (Merge2_heap_db)deleted.Get_at(i); + list.Del(itm); + } + deleted.Clear(); + + // if last idx, cleanup + if (ctx.Heap__last_idx()) this.Cleanup(); + } + public void Cleanup() { + int len = list.Len(); + for (int i = 0; i < len; ++i) + Cleanup_file(this.Get_at(i)); + } + private Merge2_heap_db Get_at(int i) {return (Merge2_heap_db)list.Get_at(i);} + private void Add(Merge2_heap_db itm) { + list.Add(itm); + cur = itm; + } + private void Copy_to_wiki__itm(Merge_ctx ctx, Merge_prog_wkr prog_wkr, Merge2_wkr__heap_base wkr, Merge2_heap_db itm, boolean itm_is_cur) { + // init + Split_tbl tbl = wkr.Tbl(); + String tbl_name = tbl.Tbl_name(); + Db_conn heap_conn = itm.Conn(); + Dbmeta_fld_list tbl_flds = tbl.Flds(); + Db_conn wiki_conn = tbl.Wiki_conn__get_or_new(ctx.Wiki(), itm.Idx()); + + // index heap table + // String[] pkey_flds = tbl.Fld_pkeys(); + // heap_conn.Meta_idx_create(tbl_name, "sort", pkey_flds); + + // do bulk copy into wiki tbls; note ORDER BY + wkr.Copy_to_wiki(ctx, prog_wkr, tbl_name, tbl_flds, heap_conn, new Merge2_trg_itm__wiki(itm.Idx(), wiki_conn), String_.Ary_empty); + + // cleanup + if (itm_is_cur) { // if cur, rebuild heap table; vaccum; + // heap_conn.Meta_tbl_remake(Dbmeta_tbl_itm.New(tbl_name, heap_flds)); + // heap_conn.Env_vacuum(); + heap_conn.Rls_conn(); + Io_mgr.Instance.DeleteFil(itm.Url()); // SQLite: file delete is faster than DROP TABLE or DELETE FROM + heap_conn.Reopen_conn(); + heap_conn.Meta_tbl_remake(Dbmeta_tbl_itm.New(tbl_name, heap_flds)); + } + else { // else, delete file; EX: fsdb_bin has 2 heap files; delete 1st, but still keep 2nd + Cleanup_file(itm); + deleted.Add(itm); + } + } + private void Cleanup_file(Merge2_heap_db itm) { + itm.Conn().Rls_conn(); + Io_mgr.Instance.DeleteFil(itm.Url()); + } +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/exports/merges/Merge2_mgr.java b/400_xowa/src/gplx/xowa/addons/bldrs/exports/merges/Merge2_mgr.java new file mode 100644 index 000000000..d76682e79 --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/exports/merges/Merge2_mgr.java @@ -0,0 +1,71 @@ +/* +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.addons.bldrs.exports.merges; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.exports.*; +import gplx.dbs.*; import gplx.xowa.addons.bldrs.exports.utls.*; +public class Merge2_mgr { + public final Merge_ctx ctx; + private final Ordered_hash wkr_hash; + + public Merge2_mgr() { + this.ctx = new Merge_ctx(); + this.wkr_hash = Make_wkrs + ( new Merge2_wkr__heap_one(Split_tbl_.Page) + , new Merge2_wkr__heap_lot(Split_tbl_.Html) + , new Merge2_wkr__heap_one(Split_tbl_.Srch_word) + , new Merge2_wkr__heap_lot(Split_tbl_.Srch_link) + , new Merge2_wkr__heap_one(Split_tbl_.Fsdb_fil) + , new Merge2_wkr__heap_one(Split_tbl_.Fsdb_thm) + , new Merge2_wkr__heap_one(Split_tbl_.Fsdb_org) + , new Merge2_wkr__heap_lot(Split_tbl_.Fsdb_bin) + ); + } + public void Prog_wkr_(Merge_prog_wkr prog_wkr) {this.prog_wkr = prog_wkr;} private Merge_prog_wkr prog_wkr; + public void Merge_core(Xow_wiki wiki, Io_url src_url) { + Db_conn src_conn = Db_conn_bldr.Instance.Get_or_autocreate(false, src_url); + new Merge_wkr__core().Copy_to_temp(null, wiki, src_conn); + Gfo_invk_.Invk_by_val(wiki.App().Wiki_mgri(), gplx.xowa.wikis.Xoa_wiki_mgr_.Invk__import_by_url, src_url); + src_conn.Rls_conn(); // NOTE: must close conn else pack_conn will stay open + // fails b/c no Main_Page; Gfo_invk_.Invk_by_msg(wiki.App().Gui__tab_mgr(), gplx.xowa.guis.tabs.Xog_tab_mgr_.Invk__new_tab, GfoMsg_.new_cast_("").Add("focus", true).Add("site", wiki.Domain_str()).Add("page", String_.new_u8(wiki.Props().Main_page()))); + } + public void Merge_data(Xow_wiki wiki, Io_url src_url, int idx_cur) { + long all_time_bgn = gplx.core.envs.Env_.TickCount(); + wiki.Init_by_wiki(); + Db_conn src_conn = Db_conn_bldr.Instance.Get_or_autocreate(false, src_url); + ctx.Init(wiki, src_conn); + + // merge data + int hash_len = wkr_hash.Len(); + for (int i = 0; i < hash_len; ++i) { + if (prog_wkr.Canceled()) break; + Merge2_wkr wkr = (Merge2_wkr)wkr_hash.Get_at(i); + // if (prog_wkr.Checkpoint__skip_wkr(src_url, wkr.Tbl_name())) continue; + long wkr_time_bgn = gplx.core.envs.Env_.TickCount(); + wkr.Merge_data(ctx, prog_wkr); + Gfo_log_.Instance.Info("merge.wkr.done", "data", src_url.NameAndExt() + "|" + wkr.Tbl().Tbl_name() + "|" + gplx.core.envs.Env_.TickCount_elapsed_in_frac(wkr_time_bgn)); + } + if (ctx.Heap__copy_to_wiki()) ctx.Heap__increment_nxt(); + Gfo_log_.Instance.Info("merge.wkr.done", "data", src_url.NameAndExt() + "|-1|" + gplx.core.envs.Env_.TickCount_elapsed_in_frac(all_time_bgn)); + src_conn.Rls_conn(); // NOTE: must close conn else pack_conn will stay open + } + private static Ordered_hash Make_wkrs(Merge2_wkr... wkrs) { + Ordered_hash rv = Ordered_hash_.New(); + for (Merge2_wkr wkr : wkrs) + rv.Add(wkr.Tbl().Tbl_name(), wkr); + return rv; + } +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/exports/merges/Merge2_trg_itm.java b/400_xowa/src/gplx/xowa/addons/bldrs/exports/merges/Merge2_trg_itm.java new file mode 100644 index 000000000..429aee266 --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/exports/merges/Merge2_trg_itm.java @@ -0,0 +1,28 @@ +/* +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.addons.bldrs.exports.merges; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.exports.*; +import gplx.dbs.*; +public interface Merge2_trg_itm { + int Idx(); + Db_conn Conn(); +} +class Merge2_trg_itm__wiki implements Merge2_trg_itm { + public Merge2_trg_itm__wiki(int idx, Db_conn conn) {this.idx = idx; this.conn = conn;} + public int Idx() {return idx;} private final int idx; + public Db_conn Conn() {return conn;} private final Db_conn conn; +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/exports/merges/Merge2_trg_mgr.java b/400_xowa/src/gplx/xowa/addons/bldrs/exports/merges/Merge2_trg_mgr.java new file mode 100644 index 000000000..8e8494051 --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/exports/merges/Merge2_trg_mgr.java @@ -0,0 +1,47 @@ +/* +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.addons.bldrs.exports.merges; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.exports.*; +import gplx.dbs.*; import gplx.xowa.addons.bldrs.exports.utls.*; +interface Merge2_trg_mgr { + Merge2_trg_itm Cur(); + Merge2_trg_itm Cur_or_new(Merge_ctx ctx, Merge_prog_wkr prog_wkr, Xow_wiki wiki, int trg_db_id); +} +class Merge2_trg_mgr__heap implements Merge2_trg_mgr { + private final Merge2_heap_mgr heap_mgr; + public Merge2_trg_mgr__heap(Merge2_heap_mgr heap_mgr) {this.heap_mgr = heap_mgr;} + public Merge2_trg_itm Cur() {return heap_mgr.Cur();} + public Merge2_trg_itm Cur_or_new(Merge_ctx ctx, Merge_prog_wkr prog_wkr, Xow_wiki wiki, int trg_db_id) { + Merge2_heap_db cur = heap_mgr.Cur(); + if (cur == null || cur.Idx() != trg_db_id) { + cur = heap_mgr.Make_itm(ctx.Wiki(), trg_db_id); + } + return cur; + } +} +class Merge2_trg_mgr__wiki implements Merge2_trg_mgr { + private final Split_tbl tbl; + public Merge2_trg_mgr__wiki(Split_tbl tbl) {this.tbl = tbl;} + public Merge2_trg_itm Cur() {return cur;} private Merge2_trg_itm__wiki cur; + public Merge2_trg_itm Cur_or_new(Merge_ctx ctx, Merge_prog_wkr prog_wkr, Xow_wiki wiki, int trg_db_id) { + if (cur == null || cur.Idx() != trg_db_id) { + Db_conn conn = tbl.Wiki_conn__get_or_new(wiki, trg_db_id); + cur = new Merge2_trg_itm__wiki(trg_db_id, conn); + } + return cur; + } +} diff --git a/400_xowa/src/gplx/xowa/addons/builds/centrals/jobs/Xobc_job_itm_.java b/400_xowa/src/gplx/xowa/addons/bldrs/exports/merges/Merge2_wkr.java similarity index 72% rename from 400_xowa/src/gplx/xowa/addons/builds/centrals/jobs/Xobc_job_itm_.java rename to 400_xowa/src/gplx/xowa/addons/bldrs/exports/merges/Merge2_wkr.java index 02df44e00..ea8938609 100644 --- a/400_xowa/src/gplx/xowa/addons/builds/centrals/jobs/Xobc_job_itm_.java +++ b/400_xowa/src/gplx/xowa/addons/bldrs/exports/merges/Merge2_wkr.java @@ -15,8 +15,9 @@ 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.addons.builds.centrals.jobs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.builds.*; import gplx.xowa.addons.builds.centrals.*; -public class Xobc_job_itm_ { - public static final Xobc_job_itm[] Ary_empty = new Xobc_job_itm[0]; - public static final Xobc_job_itm Null = null; +package gplx.xowa.addons.bldrs.exports.merges; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.exports.*; +import gplx.dbs.*; import gplx.xowa.addons.bldrs.exports.utls.*; +interface Merge2_wkr { + Split_tbl Tbl(); + void Merge_data(Merge_ctx ctx, Merge_prog_wkr prog_wkr); } diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/exports/merges/Merge2_wkr__heap_base.java b/400_xowa/src/gplx/xowa/addons/bldrs/exports/merges/Merge2_wkr__heap_base.java new file mode 100644 index 000000000..0bdcfdbb4 --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/exports/merges/Merge2_wkr__heap_base.java @@ -0,0 +1,34 @@ +/* +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.addons.bldrs.exports.merges; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.exports.*; +import gplx.dbs.*; import gplx.xowa.addons.bldrs.exports.utls.*; +public abstract class Merge2_wkr__heap_base implements Merge2_wkr { + public Merge2_wkr__heap_base(Split_tbl tbl) { + this.tbl = tbl; + this.heap_mgr = new Merge2_heap_mgr(tbl); + } + public Split_tbl Tbl() {return tbl;} private final Split_tbl tbl; + protected Merge2_heap_mgr Heap_mgr() {return heap_mgr;} private final Merge2_heap_mgr heap_mgr; + public void Merge_data(Merge_ctx ctx, Merge_prog_wkr prog_wkr) { // fires once per file + this.Copy_to_heap(ctx, prog_wkr, heap_mgr, tbl); + this.Copy_to_wiki(ctx, prog_wkr, heap_mgr, tbl); + } + protected abstract void Copy_to_heap(Merge_ctx ctx, Merge_prog_wkr prog_wkr, Merge2_heap_mgr heap_mgr, Split_tbl tbl); + protected abstract void Copy_to_wiki(Merge_ctx ctx, Merge_prog_wkr prog_wkr, Merge2_heap_mgr heap_mgr, Split_tbl tbl); + public abstract void Copy_to_wiki(Merge_ctx ctx, Merge_prog_wkr prog_wkr, String tbl_name, Dbmeta_fld_list src_flds, Db_conn src_conn, Merge2_trg_itm trg_db, String[] fld_pkeys); +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/exports/merges/Merge2_wkr__heap_lot.java b/400_xowa/src/gplx/xowa/addons/bldrs/exports/merges/Merge2_wkr__heap_lot.java new file mode 100644 index 000000000..adb4234f9 --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/exports/merges/Merge2_wkr__heap_lot.java @@ -0,0 +1,39 @@ +/* +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.addons.bldrs.exports.merges; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.exports.*; +import gplx.dbs.*; import gplx.xowa.addons.bldrs.exports.utls.*; +public class Merge2_wkr__heap_lot extends Merge2_wkr__heap_base { + private final Merge2_copy_wkr__lot copy_wkr; + private final Merge2_trg_mgr trg_mgr__heap; + public Merge2_wkr__heap_lot(Split_tbl tbl) {super(tbl); + this.copy_wkr = new Merge2_copy_wkr__lot(tbl); + this.trg_mgr__heap = new Merge2_trg_mgr__heap(this.Heap_mgr()); + } + @Override protected void Copy_to_heap(Merge_ctx ctx, Merge_prog_wkr prog_wkr, Merge2_heap_mgr heap_mgr, Split_tbl tbl) { + copy_wkr.Copy_by_sql("merging " + tbl.Tbl_name(), ctx, prog_wkr, ctx.Pack_conn(), null, trg_mgr__heap, Bool_.Y); + // copy_wkr.Copy_entire_src(ctx, prog_wkr, ctx.Pack_conn(), null, trg_mgr__heap, Bool_.Y); + } + @Override protected void Copy_to_wiki(Merge_ctx ctx, Merge_prog_wkr prog_wkr, Merge2_heap_mgr heap_mgr, Split_tbl tbl) { + if (ctx.Heap__copy_to_wiki()) + heap_mgr.Copy_to_wiki(ctx, prog_wkr, this); + } + @Override public void Copy_to_wiki(Merge_ctx ctx, Merge_prog_wkr prog_wkr, String tbl_name, Dbmeta_fld_list trg_flds, Db_conn src_conn, Merge2_trg_itm trg_db, String[] fld_pkeys) { + copy_wkr.Copy_by_sql("merging " + tbl_name, ctx, prog_wkr, src_conn, trg_db, trg_mgr__heap, Bool_.N); + // copy_wkr.Copy_entire_src(ctx, prog_wkr, src_conn, trg_db, trg_mgr__heap, Bool_.N); + } +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/exports/merges/Merge2_wkr__heap_one.java b/400_xowa/src/gplx/xowa/addons/bldrs/exports/merges/Merge2_wkr__heap_one.java new file mode 100644 index 000000000..17f689cd9 --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/exports/merges/Merge2_wkr__heap_one.java @@ -0,0 +1,39 @@ +/* +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.addons.bldrs.exports.merges; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.exports.*; +import gplx.dbs.*; import gplx.xowa.addons.bldrs.exports.utls.*; +public class Merge2_wkr__heap_one extends Merge2_wkr__heap_base { + public Merge2_wkr__heap_one(Split_tbl tbl) {super(tbl);} + @Override protected void Copy_to_heap(Merge_ctx ctx, Merge_prog_wkr prog_wkr, Merge2_heap_mgr heap_mgr, Split_tbl tbl) { + // init + String tbl_name = tbl.Tbl_name(); + Dbmeta_fld_list flds = tbl.Flds(); + Merge2_heap_db heap_db = heap_mgr.Cur(); + if (heap_db == null) heap_db = heap_mgr.Make_itm(ctx.Wiki(), -1); + + // copy + Merge_wkr_utl.Merge_by_sql(prog_wkr, "merging " + tbl_name, tbl_name, flds, ctx.Pack_conn(), heap_db, -1, Bool_.N); + } + @Override protected void Copy_to_wiki(Merge_ctx ctx, Merge_prog_wkr prog_wkr, Merge2_heap_mgr heap_mgr, Split_tbl tbl) { + if (ctx.Heap__copy_to_wiki()) + heap_mgr.Copy_to_wiki(ctx, prog_wkr, this); + } + @Override public void Copy_to_wiki(Merge_ctx ctx, Merge_prog_wkr prog_wkr, String tbl_name, Dbmeta_fld_list trg_flds, Db_conn src_conn, Merge2_trg_itm trg_db, String[] fld_pkeys) { + Merge_wkr_utl.Merge_by_sql(prog_wkr, "merging " + tbl_name, tbl_name, trg_flds, src_conn, trg_db, -1, Bool_.Y); + } +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/exports/merges/Merge_bldr_cmd.java b/400_xowa/src/gplx/xowa/addons/bldrs/exports/merges/Merge_bldr_cmd.java new file mode 100644 index 000000000..c1a5fd352 --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/exports/merges/Merge_bldr_cmd.java @@ -0,0 +1,52 @@ +/* +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.addons.bldrs.exports.merges; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.exports.*; +import gplx.dbs.*; +import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wkrs.*; +import gplx.xowa.addons.bldrs.exports.splits.mgrs.*; import gplx.xowa.addons.bldrs.exports.splits.rslts.*; +public class Merge_bldr_cmd extends Xob_cmd__base { + public Merge_bldr_cmd(Xob_bldr bldr, Xowe_wiki wiki) {super(bldr, wiki);} + @Override public void Cmd_run() { + Io_mgr.Instance.DeleteDirDeep(wiki.Fsys_mgr().Root_dir()); + wiki.Init_assert(); + + Merge2_mgr merge_mgr = new Merge2_mgr(); + Io_url[] urls = Io_mgr.Instance.QueryDir_fils(Io_url_.new_fil_("C:\\xowa\\wiki\\simple.wikipedia.org\\tmp\\split\\")); + int i = 0; + for (Io_url url : urls) { +// if (++i == 5) break; + switch (Split_file_tid_.To_tid(url)) { + case Split_file_tid_.Tid__core: merge_mgr.Merge_core(wiki, url); break; + case Split_file_tid_.Tid__data: + Db_conn conn = Db_conn_bldr.Instance.Get_or_noop(url); + Wkr_stats_tbl stats_tbl = new Wkr_stats_tbl(conn); + Wkr_stats_itm summary_itm = stats_tbl.Select_all__summary(); + Merge_prog_wkr prog_wkr = new Merge_prog_wkr(gplx.core.progs.Gfo_prog_ui_.Always, url.GenNewNameAndExt("merge.checkpoint"), summary_itm.Count, summary_itm.Size); + merge_mgr.Prog_wkr_(prog_wkr); + merge_mgr.Merge_data(wiki, url, i); break; + default: continue; + } + ++i; + } + } + + public static final String BLDR_CMD_KEY = "bldr.export.merge"; + @Override public String Cmd_key() {return BLDR_CMD_KEY;} + public static final Xob_cmd Prototype = new Merge_bldr_cmd(null, null); + @Override public Xob_cmd Cmd_clone(Xob_bldr bldr, Xowe_wiki wiki) {return new Merge_bldr_cmd(bldr, wiki);} +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/exports/merges/Merge_ctx.java b/400_xowa/src/gplx/xowa/addons/bldrs/exports/merges/Merge_ctx.java new file mode 100644 index 000000000..43e0d4a79 --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/exports/merges/Merge_ctx.java @@ -0,0 +1,34 @@ +/* +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.addons.bldrs.exports.merges; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.exports.*; +import gplx.dbs.*; +public class Merge_ctx { + public void Init(Xow_wiki wiki, Db_conn pack_conn) { + this.wiki = wiki; + this.pack_conn = pack_conn; + } + public Xow_wiki Wiki() {return wiki;} private Xow_wiki wiki; + public Db_conn Pack_conn() {return pack_conn;} private Db_conn pack_conn; + public int Idx_cur() {return idx_cur;} private int idx_cur; public void Idx_cur_add_() {++idx_cur;} + public int Idx_end = 70; + public int Idx_gap = 10; + public int Idx_nxt = 10; + public boolean Heap__copy_to_wiki() {return idx_cur == Idx_nxt || idx_cur == Idx_end;} + public void Heap__increment_nxt() {Idx_nxt += Idx_gap;} + public boolean Heap__last_idx() {return idx_cur == Idx_end;} +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/exports/merges/Merge_prog_checkpoint.java b/400_xowa/src/gplx/xowa/addons/bldrs/exports/merges/Merge_prog_checkpoint.java new file mode 100644 index 000000000..8f56e0409 --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/exports/merges/Merge_prog_checkpoint.java @@ -0,0 +1,61 @@ +/* +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.addons.bldrs.exports.merges; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.exports.*; +public class Merge_prog_checkpoint { + private final Bry_bfr bfr = Bry_bfr_.New(); + private final Io_url url; + private String resume_fil; + private int resume_wkr = -1; + private int resume_db = -1; + public Merge_prog_checkpoint(Io_url url) {this.url = url;} + public int Resume_db() {return resume_db;} + public boolean Skip_fil(Io_url fil) { + if (resume_fil == null) return false; // not resume; do not skip + boolean rv = String_.Eq(fil.NameAndExt(), resume_fil); + if (rv) resume_fil = null; // null out for next call + return !rv; + } + public boolean Skip_wkr(byte wkr_tid) { + if (resume_wkr == -1) return false; // not resume; do not skip; + boolean rv = wkr_tid == resume_wkr; + if (rv) resume_wkr = -1; // null out for next call + return !rv; + } + public int Load() { + byte[] bry = Io_mgr.Instance.LoadFilBryOrNull(url); if (bry == null) return 0; + byte[][] parts = Bry_split_.Split(bry, Byte_ascii.Pipe); + this.resume_fil = String_.new_u8(parts[0]); + this.resume_wkr = Bry_.To_int(parts[1]); + this.resume_db = Bry_.To_int(parts[2]); + return Bry_.To_int(parts[3]); + } + public void Save(Io_url fil, byte wkr_tid, int db_id, int prog_count) { // EX: file.xowa|0|4|1234 + if (fil == null) return; + bfr.Add_str_u8(fil.NameAndExt()).Add_byte_pipe(); + bfr.Add_int_variable(wkr_tid).Add_byte_pipe(); + bfr.Add_int_variable(db_id).Add_byte_pipe(); + bfr.Add_int_variable(prog_count); + Io_mgr.Instance.SaveFilBry(url, bfr.To_bry_and_clear()); + } + public void Delete() { + resume_fil = null; + resume_wkr = -1; + resume_db = -1; + Io_mgr.Instance.DeleteFil(url); + } +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/exports/merges/Merge_prog_wkr.java b/400_xowa/src/gplx/xowa/addons/bldrs/exports/merges/Merge_prog_wkr.java new file mode 100644 index 000000000..841967389 --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/exports/merges/Merge_prog_wkr.java @@ -0,0 +1,64 @@ +/* +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.addons.bldrs.exports.merges; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.exports.*; +import gplx.core.progs.*; import gplx.dbs.bulks.*; +public class Merge_prog_wkr implements Db_bulk_prog { + private final Gfo_prog_ui prog_ui; + private final Merge_prog_checkpoint checkpoint; + private final int prog_count_end; + private int prog_count_cur; + private long time_nxt, time_gap = 100; + // private final int[] mergepoint_ary = new int[gplx.xowa.addons.bldrs.exports.splits.rslts.Split_rslt_tid_.Tid_max]; + public Merge_prog_wkr(Gfo_prog_ui prog_ui, Io_url checkpoint_fil, int prog_count_end, long prog_size_end) { + this.prog_ui = prog_ui; + this.checkpoint = new Merge_prog_checkpoint(checkpoint_fil); + this.prog_count_end = prog_count_end; + } + public boolean Canceled() {return prog_ui.Canceled();} + public long Checkpoint__load() { + long rv = checkpoint.Load(); + this.prog_count_cur = (int)rv; + return rv; + } + public int Checkpoint__resume_db() {return checkpoint.Resume_db();} + public void Checkpoint__delete() {checkpoint.Delete();} + public boolean Checkpoint__skip_fil(Io_url fil) {return checkpoint.Skip_fil(fil);} + private Io_url cur_fil; private byte cur_wkr_tid; + public boolean Checkpoint__skip_wkr(Io_url fil, byte wkr_tid) { + boolean rv = checkpoint.Skip_wkr(wkr_tid); + if (rv) return true; + this.cur_fil = fil; + this.cur_wkr_tid = wkr_tid; + this.Checkpoint__save(); + time_nxt = gplx.core.envs.Env_.TickCount() + time_gap; + return false; + } + public void Checkpoint__save() { + // cur_wkr.Resume__db_id() + checkpoint.Save(cur_fil, cur_wkr_tid, -1, prog_count_cur); + } + public boolean Prog__insert_and_stop_if_suspended(int row_size) { + ++prog_count_cur; + long time_cur = gplx.core.envs.Env_.TickCount(); + if (time_cur < time_nxt) return false; + // gplx.core.threads.Thread_adp_.Sleep(10); + time_nxt = time_cur + time_gap; + boolean rv = prog_ui.Prog_notify_and_chk_if_suspended(prog_count_cur, prog_count_end); + return rv; + } +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/exports/merges/Merge_wkr__core.java b/400_xowa/src/gplx/xowa/addons/bldrs/exports/merges/Merge_wkr__core.java new file mode 100644 index 000000000..f7afc72be --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/exports/merges/Merge_wkr__core.java @@ -0,0 +1,96 @@ +/* +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.addons.bldrs.exports.merges; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.exports.*; +import gplx.dbs.*; import gplx.dbs.cfgs.*; import gplx.dbs.bulks.*; +import gplx.xowa.wikis.data.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.bldrs.infos.*; +import gplx.xowa.addons.wikis.searchs.*; import gplx.xowa.addons.wikis.searchs.dbs.*; +import gplx.fsdb.*; import gplx.fsdb.meta.*; +class Merge_wkr__core { + private final Db_attach_mgr attach_mgr = new Db_attach_mgr(); + private final Db_tbl_copy copy_mgr = new Db_tbl_copy(); + public void Copy_to_temp(Merge_prog_wkr prog_wkr, Xow_wiki wiki, Db_conn src_conn) { + Create_dbs(wiki, src_conn); + Merge_core(wiki, src_conn); + Merge_srch(wiki, src_conn); + Merge_file(wiki, src_conn); + } + private void Create_dbs(Xow_wiki wiki, Db_conn src_conn) { + Db_cfg_tbl cfg_tbl = Xowd_cfg_tbl_.New(src_conn, "xowa_cfg__core"); + Xowd_core_db_props core_db_props = Xowd_core_db_props.Cfg_load(src_conn, cfg_tbl); + Xob_info_session session = Xob_info_session.Load(cfg_tbl); + + Xow_wiki_.Create_sql_backend(wiki, core_db_props, session); + } + private void Merge_core(Xow_wiki wiki, Db_conn src_conn) { + Db_conn trg_conn = wiki.Data__core_mgr().Db__core().Conn(); + copy_mgr.Copy_many(src_conn, trg_conn, "site_ns", "css_core", "css_file"); // NOTE: "xowa_db" skipped; NOTE: css_core must go before Init_by_wiki + copy_mgr.Copy_one(src_conn, trg_conn, "xowa_cfg__core", "xowa_cfg"); + wiki.Init_by_wiki(); + + // make text_db b/c page entries have Load_page_wkr will try to load from text + Xow_db_file text_db = null; + if (wiki.Data__core_mgr().Props().Layout_text().Tid_is_lot()) { + text_db = wiki.Data__core_mgr().Dbs__get_by_tid_or_null(Xow_db_file_.Tid__text); + if (text_db == null) + text_db = wiki.Data__core_mgr().Dbs__make_by_tid(Xow_db_file_.Tid__text); + } + else + text_db = wiki.Data__core_mgr().Db__core(); + text_db.Tbl__text().Create_tbl(); + + // merge at end for site_stats + copy_mgr.Copy_many(src_conn, trg_conn, "site_stats"); + } + private void Merge_srch(Xow_wiki wiki, Db_conn src_conn) { + Srch_search_addon addon = Srch_search_addon.Get(wiki); + + Srch_db_mgr srch_db_mgr = addon.Db_mgr(); + srch_db_mgr.Create_all(); + srch_db_mgr.Tbl__word().Create_idx(); + int len = srch_db_mgr.Tbl__link__len(); + for (int i = 0; i < len; ++i) + srch_db_mgr.Tbl__link__get_at(i).Create_idx__link_score(); + + Db_conn trg_conn = addon.Db_mgr().Tbl__word().conn; + // copy_mgr.Copy_many(src_conn, trg_conn, "search_link_reg"); + Merge_cfg(src_conn, trg_conn, "xowa_cfg__srch"); + } + private void Merge_file(Xow_wiki wiki, Db_conn src_conn) { + if (wiki.Type_is_edit()) + ((Xowe_wiki)wiki).File_mgr().Init_file_mgr_by_load(wiki); + else + wiki.File__mnt_mgr().Ctor_by_load(wiki.File__fsdb_core()); + Db_conn trg_conn = wiki.File__fsdb_core().File__atr_file__at(Fsm_mnt_mgr.Mnt_idx_main).Conn(); + copy_mgr.Copy_many(src_conn, trg_conn, "fsdb_dba", "fsdb_dbb", "fsdb_dir", "fsdb_mnt"); + Merge_cfg(src_conn, trg_conn, "xowa_cfg__file"); + } + private void Merge_cfg(Db_conn src_conn, Db_conn trg_conn, String src_tbl_name) { + if (trg_conn.Meta_tbl_exists("xowa_cfg")) { + attach_mgr.Conn_main_(trg_conn).Conn_others_(new Db_attach_itm("src_db", src_conn)); + attach_mgr.Exec_sql(String_.Concat_lines_nl + ( "INSERT INTO xowa_cfg" + , "SELECT s.cfg_grp, s.cfg_key, s.cfg_val" + , "FROM " + src_tbl_name + " s" + , " LEFT JOIN xowa_cfg t ON s.cfg_grp = t.cfg_grp AND s.cfg_key = t.cfg_key" + , "WHERE t.cfg_grp IS NULL" + )); + } + else + copy_mgr.Copy_one (src_conn, trg_conn, src_tbl_name, "xowa_cfg"); + } +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/exports/merges/Merge_wkr_utl.java b/400_xowa/src/gplx/xowa/addons/bldrs/exports/merges/Merge_wkr_utl.java new file mode 100644 index 000000000..5a4b4bbb3 --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/exports/merges/Merge_wkr_utl.java @@ -0,0 +1,69 @@ +/* +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.addons.bldrs.exports.merges; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.exports.*; +import gplx.dbs.*; import gplx.dbs.bulks.*; import gplx.dbs.engines.sqlite.*; +import gplx.xowa.addons.bldrs.exports.utls.*; +class Merge_wkr_utl { + public static void Merge_by_sql(Db_bulk_prog prog_wkr, String msg, String tbl_name, Dbmeta_fld_list flds, Db_conn src_conn, Merge2_trg_itm trg_db, int trg_db_id, boolean disable_synchronous) { + Bry_bfr bfr = Bry_bfr_.New(); + Db_conn trg_conn = trg_db.Conn(); + Db_attach_mgr attach_mgr = new Db_attach_mgr(trg_conn, new Db_attach_itm("src_db", src_conn)); + Io_url trg_url = Sqlite_conn_info.To_url(trg_conn); + if (disable_synchronous) { + Io_mgr.Instance.CopyFil(trg_url, trg_url.GenNewExt(".bak"), true); + trg_conn.Exec_qry(Sqlite_pragma.New__synchronous__off()); + Set_journal(trg_conn, "OFF"); + } + attach_mgr.Exec_sql(Bld_insert_into(bfr, tbl_name, flds, trg_db_id, disable_synchronous)); + if (disable_synchronous) { + trg_conn.Exec_qry(Sqlite_pragma.New__synchronous__normal()); + Io_mgr.Instance.DeleteFil(trg_url.GenNewExt(".bak")); + Set_journal(trg_conn, "DELETE"); + } + prog_wkr.Prog__insert_and_stop_if_suspended(1); + } + private static void Set_journal(Db_conn conn, String mode) { + Db_rdr rdr = conn.Stmt_sql("PRAGMA journal_mode=" + mode).Exec_select__rls_auto(); + try { + rdr.Move_next(); + rdr.Read_at(0); + } + finally { + rdr.Rls(); + } + } + private static String Bld_insert_into(Bry_bfr bfr, String tbl_name, Dbmeta_fld_list flds, int trg_db_id, boolean disable_synchronous) { + Split_tbl_.Bld_insert_by_select(bfr, tbl_name, flds); + if (trg_db_id != -1 && !disable_synchronous) + bfr.Add_str_u8_fmt("WHERE trg_db_id = {0}", trg_db_id); + return bfr.To_str_and_clear(); + } + public static void Merge_by_rows(Db_bulk_prog prog_wkr, String msg, String tbl_name, Dbmeta_fld_list flds, Db_conn src_conn, Db_conn trg_conn, String[] order_bys) { + Db_stmt src_stmt = order_bys == String_.Ary_empty + ? src_conn.Stmt_select_all(tbl_name, flds) + : src_conn.Stmt_select_order(tbl_name, flds, String_.Ary_empty, order_bys) + ; + Db_rdr src = src_stmt.Exec_select__rls_auto(); + Db_stmt trg = trg_conn.Stmt_insert(tbl_name, flds); + try {Db_bulk_exec_.Insert(prog_wkr, msg, flds.To_fld_ary(), src, trg, trg_conn);} + finally { + src.Rls(); + trg.Rls(); + } + } +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/exports/packs/files/Pack_file_bldr_cmd.java b/400_xowa/src/gplx/xowa/addons/bldrs/exports/packs/files/Pack_file_bldr_cmd.java new file mode 100644 index 000000000..41997274e --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/exports/packs/files/Pack_file_bldr_cmd.java @@ -0,0 +1,30 @@ +/* +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.addons.bldrs.exports.packs.files; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.exports.*; import gplx.xowa.addons.bldrs.exports.packs.*; +import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wkrs.*; +public class Pack_file_bldr_cmd extends Xob_cmd__base { + public Pack_file_bldr_cmd(Xob_bldr bldr, Xowe_wiki wiki) {super(bldr, wiki);} + @Override public void Cmd_run() { + new Pack_file_mgr().Exec(wiki); + } + + public static final String BLDR_CMD_KEY = "bldr.export.pack.file"; + @Override public String Cmd_key() {return BLDR_CMD_KEY;} + public static final Xob_cmd Prototype = new Pack_file_bldr_cmd(null, null); + @Override public Xob_cmd Cmd_clone(Xob_bldr bldr, Xowe_wiki wiki) {return new Pack_file_bldr_cmd(bldr, wiki);} +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/exports/packs/files/Pack_file_mgr.java b/400_xowa/src/gplx/xowa/addons/bldrs/exports/packs/files/Pack_file_mgr.java new file mode 100644 index 000000000..35d7a2249 --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/exports/packs/files/Pack_file_mgr.java @@ -0,0 +1,200 @@ +/* +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.addons.bldrs.exports.packs.files; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.exports.*; import gplx.xowa.addons.bldrs.exports.packs.*; +import gplx.core.progs.*; import gplx.core.ios.zips.*; import gplx.core.ios.streams.*; import gplx.core.security.*; +import gplx.dbs.*; import gplx.xowa.wikis.data.*; import gplx.fsdb.*; import gplx.fsdb.meta.*; +import gplx.xowa.addons.bldrs.centrals.dbs.*; import gplx.xowa.addons.bldrs.centrals.dbs.datas.*; import gplx.xowa.addons.bldrs.centrals.dbs.datas.imports.*; import gplx.xowa.addons.bldrs.centrals.steps.*; +class Pack_file_mgr { + public void Exec(Xowe_wiki wiki) { + // init + wiki.Init_assert(); + Io_url wiki_dir = wiki.Fsys_mgr().Root_dir(); + Io_url pack_dir = wiki_dir.GenSubDir_nest("tmp", "pack"); + Io_mgr.Instance.DeleteDirDeep(pack_dir); Io_mgr.Instance.CreateDirIfAbsent(pack_dir); + String wiki_date = wiki.Props().Modified_latest().XtoStr_fmt("yyyy.MM"); + Pack_hash hash = Pack_hash_bldr.Bld(wiki, wiki_dir, pack_dir, wiki_date); + + // get import_tbl + byte[] wiki_abrv = wiki.Domain_itm().Abrv_xo(); + Xobc_data_db bc_db = new Xobc_data_db(wiki.App().Fsys_mgr().Bin_addon_dir().GenSubFil_nest("bldr", "central", "bldr_central.data_db.xowa")); + Db_conn bc_conn = bc_db.Conn(); + bc_db.Delete_by_import(wiki_abrv, wiki_date); + bc_conn.Txn_bgn("xobc_import_insert"); + + // build zip packs + Hash_algo hash_algo = Hash_algo_.New__md5(); + Bry_bfr tmp_bfr = Bry_bfr_.New(); + int hash_len = hash.Len(); + for (int i = 0; i < hash_len; ++i) { + Pack_list list = (Pack_list)hash.Get_at(i); + int list_len = list.Len(); + for (int j = 0; j < list_len; ++j) { + Pack_itm itm = (Pack_itm)list.Get_at(j); + Make_pack(wiki, wiki_dir, wiki_abrv, wiki_date, bc_db, hash_algo, tmp_bfr, itm, 0); + } + } + + // build tasks + Make_task(tmp_bfr, wiki, wiki_date, bc_db, hash, "html", Xobc_import_type.Tid__wiki__core, Xobc_import_type.Tid__wiki__srch, Xobc_import_type.Tid__wiki__html); + Make_task(tmp_bfr, wiki, wiki_date, bc_db, hash, "file", Xobc_import_type.Tid__file__core, Xobc_import_type.Tid__file__data); + bc_conn.Txn_end(); + } + private static void Make_task(Bry_bfr tmp_bfr, Xow_wiki wiki, String wiki_date, Xobc_data_db bc_db, Pack_hash hash, String task_type, int... list_tids) { + // get packs + List_adp pack_list = List_adp_.New(); + int list_tids_len = list_tids.length; + long raw_len = 0; + for (int i = 0; i < list_tids_len; ++i) { + Pack_list list = hash.Get_by(list_tids[i]); + if (list == null) continue; // no lists for that tid; + int list_len = list.Len(); + for (int j = 0; j < list_len; ++j) { + Pack_itm itm = (Pack_itm)list.Get_at(j); + raw_len += itm.Raw_size(); + pack_list.Add(itm); + } + } + int pack_list_len = pack_list.Len(); + + // create task + String task_key = wiki.Domain_str() + "|" + wiki_date + "|" + task_type; + String task_name = Build_task_name(tmp_bfr, wiki, wiki_date, task_type, raw_len); + Xobc_task_regy_tbl task_regy_tbl = bc_db.Tbl__task_regy(); + int task_id = bc_db.Conn().Sys_mgr().Autonum_next("task_regy.task_id"); + task_regy_tbl.Insert(task_id, task_id, pack_list_len, task_key, task_name); + + // map steps + for (int i = 0; i < pack_list_len; ++i) { + Pack_itm itm = (Pack_itm)pack_list.Get_at(i); + int sm_id = bc_db.Conn().Sys_mgr().Autonum_next("step_map.sm_id"); + bc_db.Tbl__step_map().Insert(sm_id, task_id, itm.Step_id(), i); + } + } + public static String Build_task_name(Bry_bfr tmp_bfr, Xow_wiki wiki, String wiki_date, String task_type, long raw_len) {// Simple Wikipedia - Articles (2016-06) [420.31 MB] + byte[] lang_name = gplx.xowa.langs.Xol_lang_stub_.Get_by_key_or_null(wiki.Domain_itm().Lang_orig_key()).Canonical_name(); // EX: Deutsch + byte[] wiki_name = wiki.Domain_itm().Domain_type().Display_bry(); // EX: Wikipedia + String type_name = String_.Eq(task_type, "html") ? "Articles" : "Images"; + wiki_date = String_.Replace(wiki_date, ".", "-"); + String file_size = gplx.core.ios.Io_size_.To_str_new(tmp_bfr, raw_len, 2); + return String_.Format("{0} {1} - {2} ({3}) [{4}]", lang_name, wiki_name, type_name, wiki_date, file_size); + } + private static void Make_pack(Xowe_wiki wiki, Io_url wiki_dir, byte[] wiki_abrv, String wiki_date, Xobc_data_db bc_db, Hash_algo hash_algo, Bry_bfr tmp_bfr, Pack_itm itm, int task_id) { + // hash raws + Io_url zip_url = itm.Zip_url(); + Gfo_log_.Instance.Prog("hashing raw: " + zip_url.NameAndExt()); + Io_url md5_url = wiki_dir.GenSubFil(zip_url.NameOnly() + ".md5"); + long raw_size = 0; + Io_url[] raw_urls = itm.Raw_urls(); + int raw_urls_len = raw_urls.length; + for (int i = 0; i < raw_urls_len; ++i) { + Io_url raw_url = raw_urls[i]; + IoStream raw_stream = Io_mgr.Instance.OpenStreamRead(raw_url); + byte[] raw_md5 = null; + try {raw_md5 = hash_algo.Hash_stream_as_bry(Gfo_prog_ui_.Noop, raw_stream);} + finally {raw_stream.Rls();} + tmp_bfr.Add(raw_md5).Add_byte_space().Add_byte(Byte_ascii.Star).Add_str_a7(raw_url.NameAndExt()).Add_byte_nl(); + raw_size += raw_stream.Len(); + } + Io_mgr.Instance.SaveFilBfr(md5_url, tmp_bfr); + itm.Raw_size_(raw_size); + + // compress raws + Gfo_log_.Instance.Prog("compressing raw"); + Io_zip_compress_cmd__jre zip_cmd = new Io_zip_compress_cmd__jre(); + raw_urls = (Io_url[])Array_.Insert(raw_urls, new Io_url[] {md5_url}, 0); // add ".md5" to .zip + zip_cmd.Exec_hook(Gfo_prog_ui_.Noop, raw_urls, zip_url, "", 0, 0); + + // hash zip + Gfo_log_.Instance.Prog("hashing zip"); + IoStream zip_stream = Io_mgr.Instance.OpenStreamRead(zip_url); + byte[] zip_md5 = null; + try {zip_md5 = hash_algo.Hash_stream_as_bry(Gfo_prog_ui_.Noop, zip_stream);} + finally {zip_stream.Rls();} + long zip_len = Io_mgr.Instance.QueryFil(zip_url).Size(); + + // cleanup + Io_mgr.Instance.DeleteFil(md5_url); + + // generate import + Gfo_log_.Instance.Prog("generating tasks"); + int step_id = bc_db.Conn().Sys_mgr().Autonum_next("step_regy.step_id"); + itm.Step_id_(step_id); + bc_db.Tbl__step_regy().Insert(step_id, Xobc_step_itm.Type__wiki_import); + bc_db.Tbl__import_step().Insert(step_id, gplx.xowa.addons.bldrs.centrals.dbs.datas.Xobc_host_regy_tbl.Host_id__archive_org, wiki_abrv, wiki_date, zip_url.NameAndExt(), itm.Tid(), Xobc_zip_type.Type__zip, zip_md5, zip_len, raw_size, 0, 0); + } +} +class Pack_hash_bldr { + public static Pack_hash Bld(Xow_wiki wiki, Io_url wiki_dir, Io_url pack_dir, String wiki_date) { + Pack_hash rv = new Pack_hash(); + Pack_zip_name_bldr zip_name_bldr = new Pack_zip_name_bldr(pack_dir, wiki.Domain_str(), String_.new_a7(wiki.Domain_itm().Abrv_wm()), wiki_date); + + // bld html pack + Xow_db_mgr db_mgr = wiki.Data__core_mgr(); + int len = db_mgr.Dbs__len(); + for (int i = 0; i < len; ++i) { + Xow_db_file file = db_mgr.Dbs__get_at(i); + int pack_tid = Get_pack_tid(file.Tid()); + if (pack_tid == Xobc_import_type.Tid__ignore) continue; + rv.Add(zip_name_bldr, pack_tid, file.Url()); + } + rv.Consolidate(Xobc_import_type.Tid__wiki__srch); + + // bld file pack + Fsm_mnt_itm mnt_itm = wiki.File__mnt_mgr().Mnts__get_at(Fsm_mnt_mgr.Mnt_idx_main); + rv.Add(zip_name_bldr, Xobc_import_type.Tid__file__core, wiki_dir.GenSubFil(mnt_itm.Atr_mgr().Db__core().Url_rel())); + if (db_mgr.Props().Layout_file().Tid_is_lot()) { + Fsm_bin_mgr bin_mgr = mnt_itm.Bin_mgr(); + int bin_len = bin_mgr.Dbs__len(); + for (int i = 0; i < bin_len; ++i) { + Fsm_bin_fil bin_fil = bin_mgr.Dbs__get_at(i); + rv.Add(zip_name_bldr, Xobc_import_type.Tid__file__data, bin_fil.Url()); + } + } + return rv; + } + private static int Get_pack_tid(byte db_file_tid) { + switch (db_file_tid) { + case Xow_db_file_.Tid__core: return Xobc_import_type.Tid__wiki__core; + case Xow_db_file_.Tid__search_core: + case Xow_db_file_.Tid__search_link: return Xobc_import_type.Tid__wiki__srch; + case Xow_db_file_.Tid__html_solo: + case Xow_db_file_.Tid__html_data: return Xobc_import_type.Tid__wiki__html; + case Xow_db_file_.Tid__file_core: return Xobc_import_type.Tid__file__core; + case Xow_db_file_.Tid__file_solo: + case Xow_db_file_.Tid__file_data: return Xobc_import_type.Tid__file__data; + default: return Xobc_import_type.Tid__ignore; + } + } +} +class Pack_zip_name_bldr { // en.wikipedia.org-file-ns.000-db.001.xowa -> Xowa_enwiki_2016-05_file_ns.000_db.001.zip + private final Io_url pack_dir; + private final byte[] wiki_domain, zip_name_prefix; + + public Pack_zip_name_bldr(Io_url pack_dir, String wiki_domain_str, String wiki_abrv, String wiki_date) { + this.pack_dir = pack_dir; + this.wiki_domain = Bry_.new_u8(wiki_domain_str); + this.zip_name_prefix = Bry_.new_u8("Xowa_" + wiki_abrv + "_" + String_.Replace(wiki_date, ".", "-")); + } + public Io_url Bld(Io_url orig_url) { + String orig_str = String_.Replace(orig_url.NameAndExt(), ".xowa", ".zip"); + byte[] orig_bry = Bry_.new_u8(orig_str); + orig_bry = Bry_.Replace(orig_bry, Byte_ascii.Dash, Byte_ascii.Underline); + orig_bry = Bry_.Replace(orig_bry, wiki_domain, zip_name_prefix); + return pack_dir.GenSubFil(String_.new_u8(orig_bry)); + } +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/exports/packs/files/Pack_hash.java b/400_xowa/src/gplx/xowa/addons/bldrs/exports/packs/files/Pack_hash.java new file mode 100644 index 000000000..4bff7adbb --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/exports/packs/files/Pack_hash.java @@ -0,0 +1,49 @@ +/* +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.addons.bldrs.exports.packs.files; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.exports.*; import gplx.xowa.addons.bldrs.exports.packs.*; +class Pack_hash { + private final Ordered_hash hash = Ordered_hash_.New(); + public int Len() {return hash.Len();} + public Pack_list Get_at(int i) {return (Pack_list)hash.Get_at(i);} + public Pack_list Get_by(int tid) {return (Pack_list)hash.Get_by(tid);} + public void Add(Pack_zip_name_bldr bldr, int list_tid, Io_url file_url) { + Pack_list list = (Pack_list)hash.Get_by(list_tid); + if (list == null) { + list = new Pack_list(list_tid); + hash.Add(list_tid, list); + } + Pack_itm itm = new Pack_itm(list_tid, bldr.Bld(file_url), file_url); + list.Add(itm); + } + public void Consolidate(int... tids) { // merge n itms into 1 itm; needed for search-core + search-link -> search + int tids_len = tids.length; + for (int i = 0; i < tids_len; ++i) { + Pack_list list = (Pack_list)hash.Get_by(tids[i]); + if (list == null) continue; // tid doesn't exist; EX: search in Tid_few + int list_len = list.Len(); + Pack_itm itm_0 = (Pack_itm)list.Get_at(0); + Io_url[] urls = new Io_url[list_len]; + for (int j = 0; j < list_len; ++j) { + urls[j] = ((Pack_itm)list.Get_at(j)).Raw_urls()[0]; + } + list.Clear(); + itm_0.Raw_urls_(urls); + list.Add(itm_0); + } + } +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/exports/packs/files/Pack_itm.java b/400_xowa/src/gplx/xowa/addons/bldrs/exports/packs/files/Pack_itm.java new file mode 100644 index 000000000..3ca0d9338 --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/exports/packs/files/Pack_itm.java @@ -0,0 +1,30 @@ +/* +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.addons.bldrs.exports.packs.files; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.exports.*; import gplx.xowa.addons.bldrs.exports.packs.*; +class Pack_itm { + public Pack_itm(int tid, Io_url zip_url, Io_url... raw_urls) { + this.tid = tid; + this.zip_url = zip_url; + this.raw_urls = raw_urls; + } + public int Tid() {return tid;} private int tid; + public Io_url Zip_url() {return zip_url;} private Io_url zip_url; + public Io_url[] Raw_urls() {return raw_urls;} private Io_url[] raw_urls; public void Raw_urls_(Io_url[] v) {this.raw_urls = v;} + public long Raw_size() {return raw_size;} private long raw_size; public void Raw_size_(long v) {this.raw_size = v;} + public int Step_id() {return step_id;} private int step_id; public void Step_id_(int v) {this.step_id = v;} +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/exports/packs/files/Pack_list.java b/400_xowa/src/gplx/xowa/addons/bldrs/exports/packs/files/Pack_list.java new file mode 100644 index 000000000..153203610 --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/exports/packs/files/Pack_list.java @@ -0,0 +1,27 @@ +/* +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.addons.bldrs.exports.packs.files; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.exports.*; import gplx.xowa.addons.bldrs.exports.packs.*; +class Pack_list { + private final List_adp list = List_adp_.New(); + public Pack_list(int tid) {this.tid = tid;} + public int Tid() {return tid;} private final int tid; + public int Len() {return list.Len();} + public Pack_itm Get_at(int i) {return (Pack_itm)list.Get_at(i);} + public void Add(Pack_itm itm) {list.Add(itm);} + public void Clear() {list.Clear();} +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/exports/packs/splits/Pack_itm.java b/400_xowa/src/gplx/xowa/addons/bldrs/exports/packs/splits/Pack_itm.java new file mode 100644 index 000000000..344553f90 --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/exports/packs/splits/Pack_itm.java @@ -0,0 +1,30 @@ +/* +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.addons.bldrs.exports.packs.splits; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.exports.*; import gplx.xowa.addons.bldrs.exports.packs.*; +class Pack_itm { + public Pack_itm(int idx, int type, Io_url zip_url, Io_url[] raw_urls) { + this.idx = idx; + this.type = type; + this.zip_url = zip_url; + this.raw_urls = raw_urls; + } + public int Idx() {return idx;} private final int idx; + public int Type() {return type;} private final int type; + public Io_url[] Raw_urls() {return raw_urls;} private final Io_url[] raw_urls; + public Io_url Zip_url() {return zip_url;} private final Io_url zip_url; +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/exports/packs/splits/Pack_list.java b/400_xowa/src/gplx/xowa/addons/bldrs/exports/packs/splits/Pack_list.java new file mode 100644 index 000000000..e8cec3368 --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/exports/packs/splits/Pack_list.java @@ -0,0 +1,27 @@ +/* +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.addons.bldrs.exports.packs.splits; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.exports.*; import gplx.xowa.addons.bldrs.exports.packs.*; +import gplx.xowa.wikis.data.*; +import gplx.xowa.addons.bldrs.centrals.dbs.datas.imports.*; +import gplx.xowa.addons.bldrs.exports.splits.*; import gplx.xowa.addons.bldrs.exports.splits.mgrs.*; +class Pack_list { + private final List_adp list = List_adp_.New(); + public int Len() {return list.Len();} + public Pack_itm Get_at(int i) {return (Pack_itm)list.Get_at(i);} + public void Add(Pack_itm itm) {list.Add(itm);} +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/exports/packs/splits/Pack_mgr.java b/400_xowa/src/gplx/xowa/addons/bldrs/exports/packs/splits/Pack_mgr.java new file mode 100644 index 000000000..bc3ac2889 --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/exports/packs/splits/Pack_mgr.java @@ -0,0 +1,145 @@ +/* +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.addons.bldrs.exports.packs.splits; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.exports.*; import gplx.xowa.addons.bldrs.exports.packs.*; +import gplx.core.progs.*; import gplx.core.ios.zips.*; import gplx.core.ios.streams.*; import gplx.core.security.*; +import gplx.dbs.*; +import gplx.xowa.wikis.data.*; +import gplx.xowa.addons.bldrs.centrals.dbs.*; import gplx.xowa.addons.bldrs.centrals.dbs.datas.imports.*; import gplx.xowa.addons.bldrs.centrals.steps.*; +import gplx.xowa.addons.bldrs.exports.splits.mgrs.*; import gplx.xowa.addons.bldrs.exports.splits.rslts.*; +class Pack_mgr { + public void Exec(Xowe_wiki wiki, long pack_size_max) { + // init + Io_url wiki_dir = wiki.Fsys_mgr().Root_dir(); + wiki.Init_assert(); + String wiki_date = wiki.Props().Modified_latest().XtoStr_fmt("yyyyMMdd"); + + // build pack list + Pack_list pack_list = Make_list(wiki, wiki_date, pack_size_max); + + // get import_tbl + byte[] wiki_abrv = wiki.Domain_itm().Abrv_xo(); + Xobc_data_db bc_db = new Xobc_data_db(wiki.App().Fsys_mgr().Bin_addon_dir().GenSubFil_nest("bldr", "central", "bldr_central.data_db.xowa")); + Db_conn bc_conn = bc_db.Conn(); + bc_db.Delete_by_import(wiki_abrv, wiki_date); + bc_conn.Txn_bgn("xobc_import_insert"); + + // loop packs and (a) zip raws; (b) create entry + Hash_algo hash_algo = Hash_algo_.New__md5(); + Bry_bfr tmp_bfr = Bry_bfr_.New(); + int len = pack_list.Len(); + int task_id = bc_conn.Sys_mgr().Autonum_next("task_regy.task_id"); + bc_db.Tbl__task_regy().Insert(task_id, task_id, len, wiki.Domain_str(), wiki.Domain_str()); + for (int i = 0; i < len; ++i) + Make_pack(wiki, wiki_dir, wiki_abrv, wiki_date, bc_db, hash_algo, tmp_bfr, pack_list.Get_at(i), task_id); + bc_conn.Txn_end(); + } + private static Pack_list Make_list(Xow_wiki wiki, String wiki_date, long pack_size_max) { + // init; delete dir; + String wiki_abrv = String_.new_a7(wiki.Domain_itm().Abrv_wm()); + Io_url wiki_dir = wiki.Fsys_mgr().Root_dir(); + Io_url pack_root = wiki_dir.GenSubDir_nest("tmp", "pack"); + Io_url split_root = wiki_dir.GenSubDir_nest("tmp", "split"); + Io_mgr.Instance.DeleteDirDeep(pack_root); + Io_mgr.Instance.CreateDirIfAbsent(pack_root); + Io_url[] fils = Io_mgr.Instance.QueryDir_fils(split_root); + List_adp list = List_adp_.New(); + + // delete pack dir + Pack_list rv = new Pack_list(); + long pack_size_cur = 0; + int len = fils.length; + for (int i = 0; i < len; ++i) { + Io_url fil = fils[i]; + long fil_size = Io_mgr.Instance.QueryFil(fil).Size(); + if (Split_file_tid_.To_tid(fil) == Split_file_tid_.Tid__temp) continue; // ignore temp file + list.Add(fil); + + // calc pack size + long pack_size_new = pack_size_cur + fil_size; + if ( pack_size_new > pack_size_max + || i == len - 1) { + int pack_idx = rv.Len(); + Io_url fil_1st = (Io_url)list.Get_at(0); + int ns_id = Split_file_tid_.Get_ns_by_url(fil_1st); + Io_url zip_url = pack_root.GenSubFil(Split_file_tid_.Make_file_name(wiki_abrv, wiki_date, rv.Len(), ns_id, ".zip")); + Pack_itm itm = new Pack_itm(pack_idx, Xobc_import_type.Tid__pack, zip_url, (Io_url[])list.To_ary_and_clear(Io_url.class)); + rv.Add(itm); + pack_size_cur = 0; + } + else + pack_size_cur = pack_size_new; + } + return rv; + } + private static void Make_pack(Xowe_wiki wiki, Io_url wiki_dir, byte[] wiki_abrv, String wiki_date, Xobc_data_db bc_db, Hash_algo hash_algo, Bry_bfr tmp_bfr, Pack_itm itm, int task_id) { + // hash raws + Io_url zip_url = itm.Zip_url(); + Gfo_log_.Instance.Prog("hashing raw: " + zip_url.NameAndExt()); + Io_url md5_url = wiki_dir.GenSubFil(zip_url.NameOnly() + ".md5"); + long raw_size = 0; + Io_url[] raw_urls = itm.Raw_urls(); + int raw_urls_len = raw_urls.length; + for (int i = 0; i < raw_urls_len; ++i) { + Io_url raw_url = raw_urls[i]; + IoStream raw_stream = Io_mgr.Instance.OpenStreamRead(raw_url); + byte[] raw_md5 = null; + try {raw_md5 = hash_algo.Hash_stream_as_bry(Gfo_prog_ui_.Noop, raw_stream);} + finally {raw_stream.Rls();} + tmp_bfr.Add(raw_md5).Add_byte_space().Add_byte(Byte_ascii.Star).Add_str_a7(raw_url.NameAndExt()).Add_byte_nl(); + raw_size += raw_stream.Len(); + } + Io_mgr.Instance.SaveFilBfr(md5_url, tmp_bfr); + + // calc prog_size_end + long prog_size_end = 0; int prog_count_end =0; + for (int i = 0; i < raw_urls_len; ++i) { + Io_url raw_url = raw_urls[i]; + if (Split_file_tid_.To_tid(raw_url) != Split_file_tid_.Tid__data) continue; + Db_conn src_conn = Db_conn_bldr.Instance.Get_or_noop(raw_url); + Wkr_stats_tbl tbl = new Wkr_stats_tbl(src_conn); + Wkr_stats_itm stat = tbl.Select_all__summary(); + prog_count_end += stat.Count; + prog_size_end += stat.Size; + } + + // compress raws + Gfo_log_.Instance.Prog("compressing raw"); + Io_zip_compress_cmd__jre zip_cmd = new Io_zip_compress_cmd__jre(); + raw_urls = (Io_url[])Array_.Insert(raw_urls, new Io_url[] {md5_url}, 0); // add ".md5" to .zip + zip_cmd.Exec_hook(Gfo_prog_ui_.Noop, raw_urls, zip_url, "", 0, 0); + + // hash zip + Gfo_log_.Instance.Prog("hashing zip"); + IoStream zip_stream = Io_mgr.Instance.OpenStreamRead(zip_url); + byte[] zip_md5 = null; + try {zip_md5 = hash_algo.Hash_stream_as_bry(Gfo_prog_ui_.Noop, zip_stream);} + finally {zip_stream.Rls();} + long zip_len = Io_mgr.Instance.QueryFil(zip_url).Size(); + + // generate import + Gfo_log_.Instance.Prog("generating tasks"); + int step_id = bc_db.Conn().Sys_mgr().Autonum_next("step_regy.step_id"); + int sm_id = bc_db.Conn().Sys_mgr().Autonum_next("step_map.sm_id"); + bc_db.Tbl__step_regy().Insert(step_id, Xobc_step_itm.Type__wiki_import); + bc_db.Tbl__step_map().Insert(sm_id, task_id, step_id, itm.Idx()); + bc_db.Tbl__import_step().Insert(step_id, gplx.xowa.addons.bldrs.centrals.dbs.datas.Xobc_host_regy_tbl.Host_id__archive_org, wiki_abrv, wiki_date, zip_url.NameAndExt(), itm.Type(), Xobc_zip_type.Type__zip, zip_md5, zip_len, raw_size, prog_size_end, prog_count_end); + + // cleanup + Io_mgr.Instance.DeleteFil(md5_url); + } +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/exports/packs/splits/Pack_split_bldr_cmd.java b/400_xowa/src/gplx/xowa/addons/bldrs/exports/packs/splits/Pack_split_bldr_cmd.java new file mode 100644 index 000000000..65f0b36ef --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/exports/packs/splits/Pack_split_bldr_cmd.java @@ -0,0 +1,37 @@ +/* +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.addons.bldrs.exports.packs.splits; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.exports.*; import gplx.xowa.addons.bldrs.exports.packs.*; +import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wkrs.*; +public class Pack_split_bldr_cmd extends Xob_cmd__base { + private long pack_size_max = 30 * Io_mgr.Len_mb; + public Pack_split_bldr_cmd(Xob_bldr bldr, Xowe_wiki wiki) {super(bldr, wiki);} + @Override public void Cmd_run() { + new Pack_mgr().Exec(wiki, pack_size_max); + } + + @Override public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { + if (ctx.Match(k, Invk__pack_size_max_)) pack_size_max = m.ReadLong("v"); + return super.Invk (ctx, ikey, k, m); + } + private static final String Invk__pack_size_max_ = "pack_size_max_"; + + public static final String BLDR_CMD_KEY = "bldr.export.pack.split"; + @Override public String Cmd_key() {return BLDR_CMD_KEY;} + public static final Xob_cmd Prototype = new Pack_split_bldr_cmd(null, null); + @Override public Xob_cmd Cmd_clone(Xob_bldr bldr, Xowe_wiki wiki) {return new Pack_split_bldr_cmd(bldr, wiki);} +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/Split_bldr_cmd.java b/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/Split_bldr_cmd.java new file mode 100644 index 000000000..d92bfcf12 --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/Split_bldr_cmd.java @@ -0,0 +1,38 @@ +/* +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.addons.bldrs.exports.splits; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.exports.*; +import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wkrs.*; +import gplx.xowa.addons.bldrs.exports.splits.mgrs.*; +public class Split_bldr_cmd extends Xob_cmd__base { + private final Split_cfg cfg = new Split_cfg(); + public Split_bldr_cmd(Xob_bldr bldr, Xowe_wiki wiki) {super(bldr, wiki);} + @Override public void Cmd_run() { + wiki.Init_assert(); + new Split_mgr().Exec(wiki, cfg); + } + @Override public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { + if (ctx.Match(k, Invk__cfg)) return cfg; + return super.Invk (ctx, ikey, k, m); + } + private static final String Invk__cfg = "cfg"; + + public static final String BLDR_CMD_KEY = "bldr.export.split"; + @Override public String Cmd_key() {return BLDR_CMD_KEY;} + public static final Xob_cmd Prototype = new Split_bldr_cmd(null, null); + @Override public Xob_cmd Cmd_clone(Xob_bldr bldr, Xowe_wiki wiki) {return new Split_bldr_cmd(bldr, wiki);} +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/Split_ctx.java b/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/Split_ctx.java new file mode 100644 index 000000000..e1ee18940 --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/Split_ctx.java @@ -0,0 +1,78 @@ +/* +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.addons.bldrs.exports.splits; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.exports.*; +import gplx.dbs.*; +import gplx.xowa.addons.bldrs.exports.splits.mgrs.*; import gplx.xowa.addons.bldrs.exports.splits.metas.*; import gplx.xowa.addons.bldrs.exports.splits.rslts.*; +public class Split_ctx { + private int trg_idx = -1; + private final Split_wkr[] wkrs; + private boolean trg_make = true; + private long trg_max = 32 * Io_mgr.Len_mb; + public Split_ctx(Split_cfg cfg, Xow_wiki wiki, Split_wkr[] wkrs, Split_ns_itm[] ns_itms, Db_conn wkr_conn) { + this.cfg = cfg; this.wiki = wiki; this.wkrs = wkrs; + this.trg_max = cfg.Trg_max(); + this.ns_itms = ns_itms; this.wkr_conn = wkr_conn; + this.rslt_mgr = new Split_rslt_mgr(wkr_conn); + this.html_size_calc = new Split_db_size_calc(cfg.Html().Db_max(), cfg.Html().Db_idx()); + this.file_size_calc = new Split_db_size_calc(cfg.File().Db_max(), cfg.File().Db_idx()); + } + public Split_cfg Cfg() {return cfg;} private final Split_cfg cfg; + public Xow_wiki Wiki() {return wiki;} private final Xow_wiki wiki; + public Split_ns_itm[] Ns_itms() {return ns_itms;} private final Split_ns_itm[] ns_itms; + public Db_conn Wkr_conn() {return wkr_conn;} private final Db_conn wkr_conn; + public Db_conn Trg_conn() {return trg_conn;} private Db_conn trg_conn; + public int Trg_ns() {return trg_ns;} private int trg_ns; public void Trg_ns_(int v) {this.trg_ns = v;} + public Split_page_mgr Page_mgr() {return page_mgr;} private final Split_page_mgr page_mgr = new Split_page_mgr(); + public Split_rslt_mgr Rslt_mgr() {return rslt_mgr;} private final Split_rslt_mgr rslt_mgr; + public Split_db_size_calc Html_size_calc() {return html_size_calc;} private final Split_db_size_calc html_size_calc; + public Split_db_size_calc File_size_calc() {return file_size_calc;} private final Split_db_size_calc file_size_calc; + + public void Trg_db__completed() {trg_make = true;} + public void Trg_db__assert(int ns_id) { + if (rslt_mgr.Db_size() < trg_max && !trg_make) return; + trg_make = false; + + // term trg_conn + if (trg_conn != null) Trg_db__term(); + + // init trg_con + Io_url trg_url = this.Trg_db__make(ns_id); + for (Split_wkr wkr : wkrs) + wkr.Split__trg__nth__new(this, trg_conn); + rslt_mgr.On__nth__new(trg_idx, trg_url, ns_id); + trg_conn.Txn_bgn("split"); + } + public Io_url Trg_db__make(int ns_id) { + // create new trg_conn + String trg_name = Split_file_tid_.Make_file_name(String_.new_u8(wiki.Domain_itm().Abrv_wm()), wiki.Props().Modified_latest().XtoStr_fmt("yyyy.MM"), ++trg_idx, ns_id, ".xowa"); + Io_url trg_url = wiki.Fsys_mgr().Root_dir().GenSubFil_nest("tmp", "split", trg_name); + this.trg_conn = Db_conn_bldr.Instance.Get_or_autocreate(true, trg_url); + return trg_url; + } + public void Trg_db__null() {trg_conn = null;} // null conn, else Trg_db_assert will try to close txn + public void Term() { + Trg_db__term(); + rslt_mgr.Term(); + } + private void Trg_db__term() { + rslt_mgr.On__nth__rls(trg_conn); + trg_conn.Txn_end(); + for (Split_wkr wkr : wkrs) + wkr.Split__trg__nth__rls(this, trg_conn); + } +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/Split_mgr.java b/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/Split_mgr.java new file mode 100644 index 000000000..b624aeaf2 --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/Split_mgr.java @@ -0,0 +1,82 @@ +/* +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.addons.bldrs.exports.splits; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.exports.*; +import gplx.dbs.*; import gplx.xowa.wikis.data.tbls.*; +import gplx.xowa.addons.bldrs.exports.splits.mgrs.*; import gplx.xowa.addons.bldrs.exports.splits.rslts.*; +class Split_mgr { + public void Exec(Xow_wiki wiki, Split_cfg cfg) { + // init + Split_ns_itm[] ns_itms = cfg.Ns_itms(); + Split_wkr[] wkrs = new Split_wkr[] + { new gplx.xowa.addons.bldrs.exports.splits.srchs.Split_wkr__srch() + , new gplx.xowa.addons.bldrs.exports.splits.htmls.Split_wkr__html() + , new gplx.xowa.addons.bldrs.exports.splits.pages.Split_wkr__page() // NOTE: page needs to follow html b/c of trg_db_id + , new gplx.xowa.addons.bldrs.exports.splits.files.Split_wkr__file() + , new gplx.xowa.addons.bldrs.exports.splits.rndms.Split_wkr__rndm() + }; + + // init ctx + Io_url split_root = wiki.Fsys_mgr().Root_dir().GenSubDir_nest("tmp", "split"); + Io_mgr.Instance.DeleteDirDeep(split_root); + Io_mgr.Instance.CreateDirIfAbsent(split_root); + Db_conn wkr_conn = Db_conn_bldr.Instance.Get_or_autocreate(true, split_root.GenSubFil("xowa.split.sqlite3")); + Split_ctx ctx = new Split_ctx(cfg, wiki, wkrs, ns_itms, wkr_conn); + ctx.Trg_db__make(-1); + new Split_mgr_init().Init(ctx, ctx.Wkr_conn(), wiki.Data__core_mgr().Tbl__page().Conn()); + for (Split_wkr wkr : wkrs) { + wkr.Split__init(ctx, wiki, wkr_conn); + wkr.Split__trg__1st__new(ctx, ctx.Trg_conn()); + } + ctx.Trg_db__null(); + + // split by ns + List_adp page_list = List_adp_.New(); + Split_page_loader loader = new Split_page_loader(wiki, cfg.Loader_rows()); + for (Split_ns_itm ns_itm : ns_itms) { + int ns_id = ns_itm.Ns_id(); + loader.Init_ns(ns_id); + ctx.Trg_ns_(ns_id); + while (true) { + ctx.Trg_db__assert(ns_id); // new db will be needed when moving between ns; EX: ns.000 goes into one db; ns.004 goes into another + boolean reading = loader.Load_pages(ctx, page_list, wkrs, ns_id); + Split_pages(ctx, page_list, wkrs, ns_id); + if (!reading) {// no more rows; ns is done; stop loop and go to next ns; + ctx.Trg_db__completed(); + break; + } + } + } + + // cleanup + loader.Rls(); + ctx.Term(); + for (Split_wkr wkr : wkrs) + wkr.Split__term(ctx); + } + private void Split_pages(Split_ctx ctx, List_adp page_list, Split_wkr[] wkrs, int ns_id) { + Split_rslt_mgr rslt_mgr = ctx.Rslt_mgr(); + int len = page_list.Len(); + for (int i = 0; i < len; ++i) { + ctx.Trg_db__assert(ns_id); // new db may be needed; EX: 10,000 will be read, and 1st 100 needs 1 db; next 100 needs another db + Xowd_page_itm page = (Xowd_page_itm)page_list.Get_at(i); + int page_id = page.Id(); + for (Split_wkr wkr : wkrs) + wkr.Split__exec(ctx, rslt_mgr, page, page_id); + } + } +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/Split_wkr.java b/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/Split_wkr.java new file mode 100644 index 000000000..c0a81e0e6 --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/Split_wkr.java @@ -0,0 +1,28 @@ +/* +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.addons.bldrs.exports.splits; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.exports.*; +import gplx.dbs.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.addons.bldrs.exports.splits.rslts.*; +public interface Split_wkr { + void Split__init (Split_ctx ctx, Xow_wiki wiki, Db_conn wkr_conn); + void Split__pages_loaded (Split_ctx ctx, int ns_id, int score_bgn, int score_end); + void Split__trg__1st__new (Split_ctx ctx, Db_conn trg_conn); + void Split__trg__nth__new (Split_ctx ctx, Db_conn trg_conn); + void Split__trg__nth__rls (Split_ctx ctx, Db_conn trg_conn); + void Split__exec (Split_ctx ctx, Split_rslt_mgr rslt_mgr, Xowd_page_itm page, int page_id); + void Split__term (Split_ctx ctx); +} \ No newline at end of file diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/archives/Reindex_html_dbs_cmd.java b/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/archives/Reindex_html_dbs_cmd.java new file mode 100644 index 000000000..c62355bef --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/archives/Reindex_html_dbs_cmd.java @@ -0,0 +1,178 @@ +/* +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.addons.bldrs.exports.splits.archives; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.exports.*; import gplx.xowa.addons.bldrs.exports.splits.*; +import gplx.dbs.*; import gplx.dbs.qrys.*; import gplx.dbs.metas.*; +import gplx.xowa.wikis.data.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.htmls.core.dbs.*; +import gplx.xowa.addons.bldrs.exports.splits.htmls.*; +class Reindex_html_dbs_cmd { + private Db_conn core_conn; + private Xowd_page_tbl page_tbl; + private Xoh_src_tbl_mgr src_tbl_mgr; + private Xoh_trg_tbl_mgr trg_tbl_mgr; + private String tbl_page, fld_page_id, fld_page_ns, fld_page_len, fld_page_score, fld_page_html_db_id; + private final String Idx_name = "page__repack"; + public void Exec(Xowe_wiki wiki, long trg_db_size_max) { + // init + wiki.Init_assert(); + Xow_db_mgr db_mgr = wiki.Data__core_mgr(); + this.page_tbl = db_mgr.Tbl__page(); + this.core_conn = page_tbl.Conn(); + this.src_tbl_mgr = new Xoh_src_tbl_mgr(wiki); + this.trg_tbl_mgr = new Xoh_trg_tbl_mgr(wiki); + this.tbl_page = page_tbl.Tbl_name(); + this.fld_page_id = page_tbl.Fld_page_id(); + this.fld_page_ns = page_tbl.Fld_page_ns(); + this.fld_page_len = page_tbl.Fld_page_len(); + this.fld_page_score = page_tbl.Fld_page_score(); + this.fld_page_html_db_id = page_tbl.Fld_html_db_id(); + + Create_repack_idx_on_page(); + Create_repack_tbl(); + Insert_repack_rows(); + Move_html_data(trg_db_size_max); + Cleanup_dbs(wiki); + core_conn.Meta_idx_delete(Idx_name); + core_conn.Meta_tbl_delete("repack"); + core_conn.Env_vacuum(); + } + private void Create_repack_idx_on_page() { + // add idx: page (page_ns DESC, page_score DESC, page_len DESC) + if (!core_conn.Meta_idx_exists(Idx_name)) { + core_conn.Meta_idx_create(Dbmeta_idx_itm.new_normal_by_name(tbl_page, Idx_name + , Dbmeta_idx_fld.Dsc(fld_page_ns) + , Dbmeta_idx_fld.Dsc(fld_page_score) + , Dbmeta_idx_fld.Dsc(fld_page_len))); + } + } + private void Create_repack_tbl() { + core_conn.Meta_tbl_remake(Dbmeta_tbl_itm.New("repack" + , Dbmeta_fld_itm.new_int("sort_idx").Autonum_y_().Primary_y_() + , Dbmeta_fld_itm.new_int("page_id") + , Dbmeta_fld_itm.new_int("page_ns") + , Dbmeta_fld_itm.new_int("page_score") + , Dbmeta_fld_itm.new_int("page_len") + , Dbmeta_fld_itm.new_int("src_db") + )); + } + private void Insert_repack_rows() { + Gfo_usr_dlg_.Instance.Prog_many("", "", "inserting rows into repack table"); + Db_qry__select_cmd select_qry = (Db_qry__select_cmd)Db_qry_.select_ + ( tbl_page, fld_page_id, fld_page_ns, fld_page_len, fld_page_score, fld_page_html_db_id) + .Order_(fld_page_ns, Bool_.Y) + .Order_(fld_page_score, Bool_.N) + .Order_(fld_page_len, Bool_.N) + .Where_(Db_crt_.New_eq_not(fld_page_html_db_id, -1)); + Db_qry_.insert_("repack").Cols_("page_id", "page_ns", "page_len", "page_score", "src_db") + .Select_(select_qry) + .Exec_qry(core_conn); + } + private void Move_html_data(long trg_db_size_max) { + // read rows and move + Db_rdr rdr = core_conn.Stmt_select_order("repack", String_.Ary("sort_idx", "page_id", "page_ns", "page_len", "src_db"), String_.Ary_empty, "sort_idx").Exec_select__rls_auto(); + Db_stmt stmt_update = core_conn.Stmt_update(tbl_page, String_.Ary(fld_page_id), fld_page_html_db_id); + Xoh_page_tbl_itm trg_html_tbl = null; + try { + Xoh_page_row src_html_row = new Xoh_page_row(); + long trg_db_size = 0; + int ns_cur = -1, part_id = 0; + int trg_db = -1; + core_conn.Txn_bgn("update page"); + while (rdr.Move_next()) { + // check if ns changed + int page_ns = rdr.Read_int("page_ns"); + boolean ns_changed = false; + if (ns_cur != page_ns ) { // ns changed + ns_cur = page_ns; + part_id = 0; // reset part_id; note that 1st part will be base_1 + ns_changed = true; + } + + Xoh_page_tbl_itm src_html_tbl = src_tbl_mgr.Get_or_load(rdr.Read_int("src_db")); + int page_id = rdr.Read_int("page_id"); + if (!src_html_tbl.Html_tbl().Select_as_row(src_html_row, page_id)) throw Err_.new_wo_type("could not find html", "page_id", page_id); + + // check if new file needed + int page_size = src_html_row.Body().length; + trg_db_size += page_size; + if ( trg_html_tbl == null // will be null for 1st pass + || ns_changed // ns_changed + || trg_db_size > trg_db_size_max // file filled + ) { + if (trg_html_tbl != null) { // close trg_db if open + trg_html_tbl.Html_tbl().Insert_end(); + trg_html_tbl.Rls(); + } + trg_html_tbl = trg_tbl_mgr.Make_new(ns_cur, ++part_id); + trg_html_tbl.Html_tbl().Insert_bgn(); + trg_db = trg_html_tbl.Db_id(); + trg_db_size = page_size; + } + + // move row + trg_html_tbl.Html_tbl().Insert(src_html_row.Page_id(), src_html_row.Head_flag(), src_html_row.Body_flag() + , src_html_row.Display_ttl(), src_html_row.Content_sub(), src_html_row.Sidebar_div() + , src_html_row.Body()); + + // update page_html_db_id + stmt_update.Clear().Val_int(fld_page_html_db_id, trg_db).Crt_int(fld_page_id, page_id).Exec_update(); + } + } finally { + rdr.Rls(); + if (trg_html_tbl != null) { + trg_html_tbl.Html_tbl().Insert_end(); + trg_html_tbl.Rls(); + } + core_conn.Txn_end(); + stmt_update.Rls(); + src_tbl_mgr.Cleanup(); + } + } + private void Cleanup_dbs(Xowe_wiki wiki) { + // delete old dbs + wiki.Data__core_mgr().Rls(); + String repack_suffix = Xoh_trg_tbl_mgr.Repack_suffix; + Db_stmt delete_stmt = core_conn.Stmt_delete(Xowd_xowa_db_tbl.Tbl_name, Xowd_xowa_db_tbl.Fld_id); + Db_rdr rdr = core_conn.Stmt_select(Xowd_xowa_db_tbl.Tbl_name, String_.Ary(Xowd_xowa_db_tbl.Fld_id, Xowd_xowa_db_tbl.Fld_type, Xowd_xowa_db_tbl.Fld_url)).Exec_select__rls_auto(); + while (rdr.Move_next()) { + byte file_tid = rdr.Read_byte(Xowd_xowa_db_tbl.Fld_type); + if (file_tid != Xow_db_file_.Tid__html_data) continue; + String file_url = rdr.Read_str(Xowd_xowa_db_tbl.Fld_url); + if (String_.Has(file_url, repack_suffix)) continue; + delete_stmt.Clear().Crt_int(Xowd_xowa_db_tbl.Fld_id, rdr.Read_int(Xowd_xowa_db_tbl.Fld_id)).Exec_delete(); + Io_mgr.Instance.DeleteFil(wiki.Fsys_mgr().Root_dir().GenSubFil(file_url)); + } + rdr.Rls(); + delete_stmt.Rls(); + + // update new dbs + Db_stmt update_stmt = core_conn.Stmt_update(Xowd_xowa_db_tbl.Tbl_name, String_.Ary(Xowd_xowa_db_tbl.Fld_id), Xowd_xowa_db_tbl.Fld_url); + rdr = core_conn.Stmt_select(Xowd_xowa_db_tbl.Tbl_name, String_.Ary(Xowd_xowa_db_tbl.Fld_id, Xowd_xowa_db_tbl.Fld_type, Xowd_xowa_db_tbl.Fld_url)).Exec_select__rls_auto(); + while (rdr.Move_next()) { + byte file_tid = rdr.Read_byte(Xowd_xowa_db_tbl.Fld_type); + if (file_tid != Xow_db_file_.Tid__html_data) continue; + Io_url old_url = wiki.Fsys_mgr().Root_dir().GenSubFil(rdr.Read_str(Xowd_xowa_db_tbl.Fld_url)); + String old_raw = old_url.Raw(); + Io_url new_url = Io_url_.new_fil_(String_.Replace(old_raw, repack_suffix, "")); + if (!String_.Has(old_raw, repack_suffix)) throw Err_.new_wo_type("html db should be repack", "db_name", old_raw); + update_stmt.Clear().Val_str(Xowd_xowa_db_tbl.Fld_url, new_url.NameAndExt()).Crt_int(Xowd_xowa_db_tbl.Fld_id, rdr.Read_int(Xowd_xowa_db_tbl.Fld_id)).Exec_update(); + Io_mgr.Instance.MoveFil(old_url, new_url); + } + rdr.Rls(); + update_stmt.Rls(); + } +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/files/Bin_meta_itm.java b/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/files/Bin_meta_itm.java new file mode 100644 index 000000000..8aa033e9c --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/files/Bin_meta_itm.java @@ -0,0 +1,27 @@ +/* +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.addons.bldrs.exports.splits.files; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.exports.*; import gplx.xowa.addons.bldrs.exports.splits.*; +class Bin_meta_itm { + public Bin_meta_itm(byte bin_type, int bin_owner_id, int bin_id, int bin_db_id) { + this.bin_type = bin_type; this.bin_owner_id = bin_owner_id; this.bin_id = bin_id; this.bin_db_id = bin_db_id; + } + public byte Bin_type() {return bin_type;} private final byte bin_type; + public int Bin_owner_id() {return bin_owner_id;} private final int bin_owner_id; + public int Bin_id() {return bin_id;} private final int bin_id; + public int Bin_db_id() {return bin_db_id;} private final int bin_db_id; +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/files/Split_init__file.java b/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/files/Split_init__file.java new file mode 100644 index 000000000..e6c4c844a --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/files/Split_init__file.java @@ -0,0 +1,128 @@ +/* +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.addons.bldrs.exports.splits.files; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.exports.*; import gplx.xowa.addons.bldrs.exports.splits.*; +import gplx.dbs.*; +import gplx.xowa.addons.bldrs.exports.splits.mgrs.*; +class Split_init__file { + public void Exec(Split_ctx ctx, Xow_wiki wiki, Db_conn wkr_conn, Db_conn atr_conn) { + if (!(ctx.Cfg().Force_rebuild() || !wkr_conn.Meta_tbl_exists("fsdb_img_regy"))) return; + // get min page for each score + Gfo_log_.Instance.Prog("creating fsdb_img_regy"); + wkr_conn.Meta_tbl_remake(Dbmeta_tbl_itm.New("fsdb_img_regy" + , Dbmeta_fld_itm.new_int("img_uid").Primary_y_().Autonum_y_() + , Dbmeta_fld_itm.new_byte("img_type") + , Dbmeta_fld_itm.new_int("fil_id") + , Dbmeta_fld_itm.new_int("thm_id") + , Dbmeta_fld_itm.new_int("bin_db_id") + , Dbmeta_fld_itm.new_int("page_uid") + , Dbmeta_fld_itm.new_int("page_ns") + , Dbmeta_fld_itm.new_int("page_score") + , Dbmeta_fld_itm.new_int("page_id") + )); + Db_attach_mgr attach_mgr = new Db_attach_mgr(wkr_conn + , new Db_attach_itm("page_db", wiki.Data__core_mgr().Tbl__page().Conn()) + , new Db_attach_itm("pfm_db", gplx.xowa.bldrs.Xob_db_file.New__page_file_map(wiki).Conn()) + ); + attach_mgr.Exec_sql(String_.Concat_lines_nl // ANSI.Y + ( "INSERT INTO fsdb_img_regy (img_type, fil_id, thm_id, bin_db_id, page_uid, page_ns, page_score, page_id)" + , "SELECT CASE WHEN pfm.thm_id = -1 THEN 0 ELSE 1 END, pfm.fil_id, pfm.thm_id, -1, Min(pr.page_uid), -1, -1, -1" + , "FROM page_file_map pfm" + , " JOIN page_regy pr ON pfm.page_id = pr.page_id" + , "GROUP BY CASE WHEN pfm.thm_id = -1 THEN 0 ELSE 1 END, pfm.fil_id, pfm.thm_id" + , "ORDER BY Min(pr.page_uid)" + )); + + // update page attributes; create idx + Split_mgr_init.Update_page_cols(wkr_conn, "fsdb_img_regy"); + wkr_conn.Meta_idx_create("fsdb_img_regy", "fil_id", "fil_id"); + wkr_conn.Meta_idx_create("fsdb_img_regy", "page", "page_score", "page_ns", "img_type"); + + // update bin_db_id + wkr_conn.Meta_idx_create("fsdb_img_regy", "img", "img_type", "fil_id", "thm_id"); + Gfo_log_.Instance.Prog("updating bin_db_id"); + attach_mgr.Conn_others_(new Db_attach_itm("fsdb_db", atr_conn)); + + // update bin_db_id.fil + attach_mgr.Exec_sql(String_.Concat_lines_nl // ANSI.Y + ( "UPDATE fsdb_img_regy" + , "SET bin_db_id = Coalesce((SELECT f.fil_bin_db_id FROM fsdb_fil f WHERE fsdb_img_regy.fil_id = f.fil_id AND fsdb_img_regy.thm_id = -1), bin_db_id)" + , "WHERE img_type = 0" + )); + + // update bin_db_id.thm + attach_mgr.Exec_sql(String_.Concat_lines_nl // ANSI.Y + ( "UPDATE fsdb_img_regy" + , "SET bin_db_id = Coalesce((SELECT t.thm_bin_db_id FROM fsdb_thm t WHERE fsdb_img_regy.fil_id = t.thm_owner_id AND fsdb_img_regy.thm_id = t.thm_id), bin_db_id)" + , "WHERE img_type = 1" + )); + + // promote fil if thm shows up earlier; i.e.: if thm_id=11 is score=99 and fil_id=10 is score=80, move fil_id to 99 + Gfo_log_.Instance.Prog("creating fsdb_fil_min"); + wkr_conn.Meta_tbl_remake(Dbmeta_tbl_itm.New("fsdb_fil_min" + , Dbmeta_fld_itm.new_byte("img_uid") + , Dbmeta_fld_itm.new_int("fil_id") + , Dbmeta_fld_itm.new_int("thm_id") + )); + + // add fils via thms; for thms with multiple fils, use Min(img_uid) + wkr_conn.Exec_sql(String_.Concat_lines_nl // ANSI.Y + ( "INSERT INTO fsdb_fil_min (img_uid, fil_id, thm_id)" + // get fils directly + , "SELECT f.img_uid, f.fil_id, f.thm_id" + , "FROM fsdb_img_regy f" + , "WHERE f.img_type = 0" + , "UNION" + // get fils from thms + , "SELECT Min(f.img_uid), f.fil_id, f.thm_id" + , "FROM fsdb_img_regy t" + , " JOIN fsdb_img_regy f ON t.fil_id = f.fil_id" + , "WHERE t.img_type = 1" + , "GROUP BY f.fil_id, f.thm_id" + )); + + // dupes may still exist, so do one more group by + Gfo_log_.Instance.Prog("creating fsdb_fil_min_unique"); + wkr_conn.Meta_tbl_remake(Dbmeta_tbl_itm.New("fsdb_fil_min_unique" + , Dbmeta_fld_itm.new_byte("img_uid") + , Dbmeta_fld_itm.new_int("fil_id") + )); + wkr_conn.Exec_sql(String_.Concat_lines_nl // ANSI.Y + ( "INSERT INTO fsdb_fil_min_unique (img_uid, fil_id)" + , "SELECT Min(f.img_uid), f.fil_id" + , "FROM fsdb_fil_min f" + , "GROUP BY f.fil_id" + )); + + // create fsdb_fil_regy + Gfo_log_.Instance.Prog("creating fsdb_fil_regy"); + wkr_conn.Meta_tbl_remake(Dbmeta_tbl_itm.New("fsdb_fil_regy" + , Dbmeta_fld_itm.new_int("img_uid").Primary_y_() + , Dbmeta_fld_itm.new_int("fil_id") + , Dbmeta_fld_itm.new_int("page_ns") + , Dbmeta_fld_itm.new_int("page_score") + , Dbmeta_fld_itm.new_int("page_id") + )); + wkr_conn.Exec_sql(String_.Concat_lines_nl // ANSI.Y + ( "INSERT INTO fsdb_fil_regy (img_uid, fil_id, page_ns, page_score, page_id)" + , "SELECT fmu.img_uid, fmu.fil_id, fir.page_ns, fir.page_score, fir.page_id" + , "FROM fsdb_fil_min_unique fmu" + , " JOIN fsdb_img_regy fir ON fmu.img_uid = fir.img_uid" + )); + + } +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/files/Split_meta_wkr__bin.java b/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/files/Split_meta_wkr__bin.java new file mode 100644 index 000000000..54a8c7a87 --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/files/Split_meta_wkr__bin.java @@ -0,0 +1,108 @@ +/* +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.addons.bldrs.exports.splits.files; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.exports.*; import gplx.xowa.addons.bldrs.exports.splits.*; +import gplx.dbs.*; +import gplx.fsdb.meta.*; import gplx.fsdb.data.*; +import gplx.xowa.addons.bldrs.exports.splits.metas.*; import gplx.xowa.addons.bldrs.exports.splits.rslts.*; +class Split_meta_wkr__bin extends Split_meta_wkr_base { + private final Fsm_bin_mgr bin_mgr; + private final Split_rslt_wkr__bin rslt_wkr = new Split_rslt_wkr__bin(); + private Fsd_bin_tbl tbl; private Db_stmt stmt; + public Split_meta_wkr__bin(Split_ctx ctx, Fsm_bin_mgr bin_mgr) { + this.bin_mgr = bin_mgr; + ctx.Rslt_mgr().Reg_wkr(rslt_wkr); + } + @Override public byte Tid() {return Split_page_list_type_.Tid__fsdb_bin;} + @Override public void On_nth_new(Split_ctx ctx, Db_conn trg_conn) { + this.tbl = new Fsd_bin_tbl(trg_conn, Bool_.N); + Dbmeta_fld_list trg_flds = Make_flds_for_split(tbl.Flds()); + trg_conn.Meta_tbl_create(Dbmeta_tbl_itm.New(tbl.Tbl_name(), trg_flds)); + this.stmt = trg_conn.Stmt_insert(tbl.Tbl_name(), trg_flds); + } + @Override public void On_nth_rls(Split_ctx ctx, Db_conn trg_conn) { + this.stmt = Db_stmt_.Rls(stmt); + trg_conn.Meta_idx_create(tbl.Tbl_name(), "merge", "trg_db_id", "bin_owner_id"); + trg_conn.Meta_idx_create(tbl.Tbl_name(), "blob" , "trg_db_id", "blob_len", "bin_owner_id"); + } + @Override protected String Load_sql(Db_attach_mgr attach_mgr, int ns_id, int score_bgn, int score_end) { + return String_.Concat_lines_nl + ( "SELECT img_type" + , ", -1 AS owner_id" + , ", fil_id AS bin_id" + , ", bin_db_id" + , ", page_id" + , "FROM fsdb_img_regy" + , "WHERE page_score >= {0}" + , "AND page_score < {1}" + , "AND page_ns = {2}" + , "AND img_type = 0" + , "UNION" + , "SELECT img_type" + , ", fil_id AS owner_id" + , ", thm_id AS bin_id" + , ", bin_db_id" + , ", page_id" + , "FROM fsdb_img_regy" + , "WHERE page_score >= {0}" + , "AND page_score < {1}" + , "AND page_ns = {2}" + , "AND img_type = 1" + , "ORDER BY page_id" + ); + } + @Override protected Object Load_itm(Db_rdr rdr) { + return new Bin_meta_itm(rdr.Read_byte("img_type"), rdr.Read_int("owner_id"), rdr.Read_int("bin_id"), rdr.Read_int("bin_db_id")); + } + @Override protected void Save_itm(Split_ctx ctx, Split_rslt_mgr rslt_mgr, Object itm_obj) { + // load data + Bin_meta_itm itm = (Bin_meta_itm)itm_obj; + Fsm_bin_fil src_db = bin_mgr.Dbs__get_at(itm.Bin_db_id()); + int bin_id = itm.Bin_id(); + Fsd_bin_itm src_itm = src_db.Select_as_itm(bin_id); + byte[] bin_data = src_itm.Bin_data(); if (bin_data == null) bin_data = Bry_.Empty; // NOTE: bin_data can be NULL + int blob_len = bin_data.length; + String bin_data_url = src_itm.Bin_data_url(); + + // calc db_idx based on db_size + int db_row_size = Fsd_bin_itm.Db_row_size_fixed + blob_len + String_.Len(bin_data_url); + int trg_db_id = ctx.File_size_calc().Size_cur_add_(db_row_size); + + // do insert + stmt.Clear() + .Val_int ("bin_owner_id" , bin_id) + .Val_int ("trg_db_id" , trg_db_id) + .Val_int ("blob_len" , blob_len) + .Val_byte ("bin_owner_tid", src_itm.Bin_owner_tid()) + .Val_int ("bin_part_id" , src_itm.Bin_part_id()) + .Val_str ("bin_data_url" , bin_data_url) + .Val_bry ("bin_data" , bin_data) + .Exec_insert(); + rslt_wkr.On__nth__itm(db_row_size, bin_id); + } + private static Dbmeta_fld_list Make_flds_for_split(Dbmeta_fld_list flds) { + Dbmeta_fld_list rv = new Dbmeta_fld_list(); + rv.Add(flds.Get_by("bin_owner_id")); + rv.Add_int("trg_db_id"); + rv.Add_int("blob_len"); + rv.Add(flds.Get_by("bin_owner_tid")); + rv.Add(flds.Get_by("bin_part_id")); + rv.Add(flds.Get_by("bin_data_url")); + rv.Add(flds.Get_by("bin_data")); + return rv; + } +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/files/Split_meta_wkr__fil.java b/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/files/Split_meta_wkr__fil.java new file mode 100644 index 000000000..cd7bff11f --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/files/Split_meta_wkr__fil.java @@ -0,0 +1,58 @@ +/* +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.addons.bldrs.exports.splits.files; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.exports.*; import gplx.xowa.addons.bldrs.exports.splits.*; +import gplx.dbs.*; +import gplx.fsdb.meta.*; import gplx.fsdb.data.*; +import gplx.xowa.addons.bldrs.exports.splits.metas.*; import gplx.xowa.addons.bldrs.exports.splits.rslts.*; +class Split_meta_wkr__fil extends Split_meta_wkr_base { + private final Split_rslt_wkr__fil rslt_wkr = new Split_rslt_wkr__fil(); + private final Db_conn atr_conn; + private Fsd_fil_tbl tbl; private Db_stmt stmt; + public Split_meta_wkr__fil(Split_ctx ctx, Db_conn atr_conn) { + this.atr_conn = atr_conn; + ctx.Rslt_mgr().Reg_wkr(rslt_wkr); + } + @Override public byte Tid() {return Split_page_list_type_.Tid__fsdb_fil;} + @Override public void On_nth_new(Split_ctx ctx, Db_conn trg_conn) { + this.tbl = new Fsd_fil_tbl(trg_conn, Bool_.N, Fsm_mnt_mgr.Mnt_idx_main); + tbl.Create_tbl(); + this.stmt = trg_conn.Stmt_insert(tbl.tbl_name, tbl.flds); + } + @Override public void On_nth_rls(Split_ctx ctx, Db_conn trg_conn) {this.stmt = Db_stmt_.Rls(stmt);} + @Override protected String Load_sql(Db_attach_mgr attach_mgr, int ns_id, int score_bgn, int score_end) { + attach_mgr.Conn_others_(new Db_attach_itm("atr_db", atr_conn)); + return String_.Concat_lines_nl + ( "SELECT f.fil_id, f.fil_owner_id, f.fil_xtn_id, f.fil_ext_id, f.fil_bin_db_id, f.fil_name, f.fil_size, f.fil_modified, f.fil_hash, fir.page_id" + , "FROM fsdb_fil f" + , " JOIN fsdb_fil_regy fir ON f.fil_id = fir.fil_id" + , "WHERE fir.page_score >= {0}" + , "AND fir.page_score < {1}" + , "AND fir.page_ns = {2}" + , "ORDER BY page_id" + ); + } + @Override protected Object Load_itm(Db_rdr rdr) { + return tbl.Load_by_rdr__full(Fsm_mnt_mgr.Mnt_idx_main, rdr); + } + @Override protected void Save_itm(Split_ctx ctx, Split_rslt_mgr rslt_mgr, Object itm_obj) { + Fsd_fil_itm itm = (Fsd_fil_itm)itm_obj; + int fil_id = itm.Fil_id(); + tbl.Insert(stmt, fil_id, itm.Dir_id(), itm.Name(), itm.Xtn_id(), itm.Ext_id(), itm.Size(), ctx.File_size_calc().Idx(), itm.Modified_on(), itm.Hash_md5()); + rslt_wkr.On__nth__itm(itm.Db_row_size(), fil_id); + } +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/files/Split_meta_wkr__org.java b/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/files/Split_meta_wkr__org.java new file mode 100644 index 000000000..a0d52cc50 --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/files/Split_meta_wkr__org.java @@ -0,0 +1,56 @@ +/* +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.addons.bldrs.exports.splits.files; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.exports.*; import gplx.xowa.addons.bldrs.exports.splits.*; +import gplx.dbs.*; +import gplx.xowa.files.origs.*; +import gplx.xowa.addons.bldrs.exports.splits.metas.*; import gplx.xowa.addons.bldrs.exports.splits.rslts.*; +class Split_meta_wkr__org extends Split_meta_wkr_base { + private final Split_rslt_wkr__org rslt_wkr = new Split_rslt_wkr__org(); + private final Db_conn atr_conn; + private Xof_orig_tbl tbl; private Db_stmt stmt; + public Split_meta_wkr__org(Split_ctx ctx, Db_conn atr_conn) { + this.atr_conn = atr_conn; + ctx.Rslt_mgr().Reg_wkr(rslt_wkr); + } + @Override public byte Tid() {return Split_page_list_type_.Tid__fsdb_org;} + @Override public void On_nth_new(Split_ctx ctx, Db_conn trg_conn) { + this.tbl = new Xof_orig_tbl(trg_conn, Bool_.N); + tbl.Create_tbl(); + this.stmt = trg_conn.Stmt_insert(tbl.tbl_name, tbl.flds); + } + @Override public void On_nth_rls(Split_ctx ctx, Db_conn trg_conn) {this.stmt = Db_stmt_.Rls(stmt);} + @Override protected String Load_sql(Db_attach_mgr attach_mgr, int ns_id, int score_bgn, int score_end) { + attach_mgr.Conn_others_(new Db_attach_itm("atr_db", atr_conn)); + return String_.Concat_lines_nl + ( "SELECT o.orig_ttl, o.orig_repo, o.orig_status, o.orig_ext, o.orig_w, o.orig_h, o.orig_redirect, fir.page_id" + , "FROM orig_reg o" + , " JOIN fsdb_fil f ON o.orig_ttl = f.fil_name" + , " JOIN fsdb_fil_regy fir ON f.fil_id = fir.fil_id" + , "WHERE fir.page_score >= {0}" + , "AND fir.page_score < {1}" + , "AND fir.page_ns = {2}" + , "ORDER BY page_id" + ); + } + @Override protected Object Load_itm(Db_rdr rdr) {return tbl.Load_by_rdr(rdr);} + @Override protected void Save_itm(Split_ctx ctx, Split_rslt_mgr rslt_mgr, Object itm_obj) { + Xof_orig_itm itm = (Xof_orig_itm)itm_obj; + tbl.Insert(stmt, itm.Repo(), itm.Ttl(), itm.Ext().Id(), itm.W(), itm.H(), itm.Redirect()); + rslt_wkr.On__nth__itm(itm.Db_row_size(), String_.new_u8(itm.Ttl()), itm.Repo()); + } +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/files/Split_meta_wkr__thm.java b/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/files/Split_meta_wkr__thm.java new file mode 100644 index 000000000..ebffd9297 --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/files/Split_meta_wkr__thm.java @@ -0,0 +1,61 @@ +/* +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.addons.bldrs.exports.splits.files; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.exports.*; import gplx.xowa.addons.bldrs.exports.splits.*; +import gplx.dbs.*; +import gplx.fsdb.meta.*; import gplx.fsdb.data.*; +import gplx.xowa.addons.bldrs.exports.splits.metas.*; import gplx.xowa.addons.bldrs.exports.splits.rslts.*; +class Split_meta_wkr__thm extends Split_meta_wkr_base { + private final Split_rslt_wkr__thm rslt_wkr = new Split_rslt_wkr__thm(); + private final Db_conn atr_conn; + private Fsd_thm_tbl tbl; private Db_stmt stmt; + public Split_meta_wkr__thm(Split_ctx ctx, Db_conn atr_conn) { + this.atr_conn = atr_conn; + ctx.Rslt_mgr().Reg_wkr(rslt_wkr); + } + @Override public byte Tid() {return Split_page_list_type_.Tid__fsdb_thm;} + @Override public void On_nth_new(Split_ctx ctx, Db_conn trg_conn) { + this.tbl = new Fsd_thm_tbl(trg_conn, Bool_.N, Fsm_mnt_mgr.Mnt_idx_main, Bool_.Y); + tbl.Create_tbl(); + this.stmt = trg_conn.Stmt_insert(tbl.tbl_name, tbl.flds); + } + @Override public void On_nth_rls(Split_ctx ctx, Db_conn trg_conn) {this.stmt = Db_stmt_.Rls(stmt);} + @Override protected String Load_sql(Db_attach_mgr attach_mgr, int ns_id, int score_bgn, int score_end) { + attach_mgr.Conn_others_(new Db_attach_itm("atr_db", atr_conn)); + return String_.Concat_lines_nl + ( "SELECT t.thm_id, t.thm_owner_id, t.thm_w, t.thm_h, t.thm_time, t.thm_page, t.thm_bin_db_id, t.thm_size, t.thm_modified, t.thm_hash, fir.page_id" + , "FROM fsdb_thm t" + , " JOIN fsdb_img_regy fir ON t.thm_owner_id = fir.fil_id AND t.thm_id = fir.thm_id" + , "WHERE fir.page_score >= {0}" + , "AND fir.page_score < {1}" + , "AND fir.page_ns = {2}" + , "AND fir.img_type = 1" + , "ORDER BY page_id" + ); + } + @Override protected Object Load_itm(Db_rdr rdr) { + Fsd_thm_itm itm = Fsd_thm_itm.new_(); + tbl.Ctor_by_load(itm, rdr, rdr.Read_int("thm_owner_id")); + return itm; + } + @Override protected void Save_itm(Split_ctx ctx, Split_rslt_mgr rslt_mgr, Object itm_obj) { + Fsd_thm_itm itm = (Fsd_thm_itm)itm_obj; + int thm_id = itm.Thm_id(); + tbl.Insert(stmt, thm_id, itm.Fil_id(), itm.W(), itm.H(), itm.Time(), itm.Page(), ctx.File_size_calc().Idx(), itm.Size(), itm.Modified(), itm.Hash()); + rslt_wkr.On__nth__itm(itm.Db_row_size(), thm_id); + } +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/files/Split_rslt_wkr__bin.java b/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/files/Split_rslt_wkr__bin.java new file mode 100644 index 000000000..210090d2a --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/files/Split_rslt_wkr__bin.java @@ -0,0 +1,24 @@ +/* +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.addons.bldrs.exports.splits.files; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.exports.*; import gplx.xowa.addons.bldrs.exports.splits.*; +import gplx.xowa.addons.bldrs.exports.splits.rslts.*; +class Split_rslt_wkr__bin extends Split_rslt_wkr__int__base { + @Override public byte Tid() {return Split_rslt_tid_.Tid__fsdb_bin;} + @Override public String Tbl_name() {return "rslt_fsdb_bin";} + @Override public String Pkey_name() {return "bin_owner_id";} +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/files/Split_rslt_wkr__fil.java b/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/files/Split_rslt_wkr__fil.java new file mode 100644 index 000000000..8348a5c6d --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/files/Split_rslt_wkr__fil.java @@ -0,0 +1,24 @@ +/* +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.addons.bldrs.exports.splits.files; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.exports.*; import gplx.xowa.addons.bldrs.exports.splits.*; +import gplx.xowa.addons.bldrs.exports.splits.rslts.*; +class Split_rslt_wkr__fil extends Split_rslt_wkr__int__base { + @Override public byte Tid() {return Split_rslt_tid_.Tid__fsdb_fil;} + @Override public String Tbl_name() {return "rslt_fsdb_fil";} + @Override public String Pkey_name() {return "fil_id";} +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/files/Split_rslt_wkr__org.java b/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/files/Split_rslt_wkr__org.java new file mode 100644 index 000000000..0a060a2d5 --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/files/Split_rslt_wkr__org.java @@ -0,0 +1,27 @@ +/* +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.addons.bldrs.exports.splits.files; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.exports.*; import gplx.xowa.addons.bldrs.exports.splits.*; +import gplx.dbs.*; +import gplx.xowa.addons.bldrs.exports.splits.rslts.*; +class Split_rslt_wkr__org extends Split_rslt_wkr__objs__base { + @Override public byte Tid() {return Split_rslt_tid_.Tid__fsdb_org;} + @Override public String Tbl_name() {return "rslt_fsdb_org";} + @Override public Dbmeta_fld_itm[] Pkey_flds() { + return new Dbmeta_fld_itm[] {Dbmeta_fld_itm.new_str("orig_ttl", 255), Dbmeta_fld_itm.new_byte("orig_repo")}; + } +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/files/Split_rslt_wkr__thm.java b/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/files/Split_rslt_wkr__thm.java new file mode 100644 index 000000000..86fbf4ea8 --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/files/Split_rslt_wkr__thm.java @@ -0,0 +1,24 @@ +/* +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.addons.bldrs.exports.splits.files; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.exports.*; import gplx.xowa.addons.bldrs.exports.splits.*; +import gplx.xowa.addons.bldrs.exports.splits.rslts.*; +class Split_rslt_wkr__thm extends Split_rslt_wkr__int__base { + @Override public byte Tid() {return Split_rslt_tid_.Tid__fsdb_thm;} + @Override public String Tbl_name() {return "rslt_fsdb_thm";} + @Override public String Pkey_name() {return "thm_id";} +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/files/Split_wkr__file.java b/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/files/Split_wkr__file.java new file mode 100644 index 000000000..fe6a57fae --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/files/Split_wkr__file.java @@ -0,0 +1,57 @@ +/* +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.addons.bldrs.exports.splits.files; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.exports.*; import gplx.xowa.addons.bldrs.exports.splits.*; +import gplx.dbs.*; import gplx.dbs.bulks.*; import gplx.xowa.wikis.data.tbls.*; +import gplx.xowa.addons.bldrs.exports.splits.metas.*; import gplx.xowa.addons.bldrs.exports.splits.rslts.*; +public class Split_wkr__file implements Split_wkr { + private Split_meta_wkr_base[] meta_wkrs; + public void Split__init(Split_ctx ctx, Xow_wiki wiki, Db_conn wkr_conn) { + Db_conn atr_conn = wiki.File__fsdb_core().File__atr_file__at(gplx.fsdb.meta.Fsm_mnt_mgr.Mnt_idx_main).Conn(); + new Split_init__file().Exec(ctx, wiki, wkr_conn, atr_conn); + this.meta_wkrs = new Split_meta_wkr_base[] + { new Split_meta_wkr__bin(ctx, wiki.File__mnt_mgr().Mnts__get_main().Bin_mgr()) // NOTE: bin must go first b/c it sets trg_db + , new Split_meta_wkr__fil(ctx, atr_conn) + , new Split_meta_wkr__thm(ctx, atr_conn) + , new Split_meta_wkr__org(ctx, atr_conn) + }; + } + public void Split__trg__1st__new(Split_ctx ctx, Db_conn wkr_conn) { + Db_tbl_copy copy_mgr = new Db_tbl_copy(); + Db_conn atr_conn = ctx.Wiki().File__fsdb_core().File__atr_file__at(gplx.fsdb.meta.Fsm_mnt_mgr.Mnt_idx_main).Conn(); + copy_mgr.Copy_many(atr_conn, wkr_conn, "fsdb_dba", "fsdb_dbb", "fsdb_dir", "fsdb_mnt"); + copy_mgr.Copy_one (atr_conn, wkr_conn, "xowa_cfg", "xowa_cfg__file"); + } + public void Split__trg__nth__new(Split_ctx ctx, Db_conn wkr_conn) { + for (Split_meta_wkr_base wkr : meta_wkrs) + wkr.On_nth_new(ctx, wkr_conn); + } + public void Split__trg__nth__rls(Split_ctx ctx, Db_conn trg_conn) { + for (Split_meta_wkr_base wkr : meta_wkrs) + wkr.On_nth_rls(ctx, trg_conn); + } + public void Split__pages_loaded(Split_ctx ctx, int ns_id, int score_bgn, int score_end) { + for (Split_meta_wkr_base wkr : meta_wkrs) + wkr.Load(ctx.Wkr_conn(), ctx.Page_mgr(), ns_id, score_bgn, score_end); + } + public void Split__exec(Split_ctx ctx, Split_rslt_mgr rslt_mgr, Xowd_page_itm page, int page_id) { + Split_page_itm meta_page = ctx.Page_mgr().Get_by_or_null(page_id); if (meta_page == null) return; // NOTE: pages may not have images + for (Split_meta_wkr_base wkr : meta_wkrs) + wkr.Save(ctx, rslt_mgr, meta_page); + } + public void Split__term(Split_ctx ctx) {} +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/htmls/Split_rslt_wkr__html.java b/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/htmls/Split_rslt_wkr__html.java new file mode 100644 index 000000000..15b77abda --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/htmls/Split_rslt_wkr__html.java @@ -0,0 +1,24 @@ +/* +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.addons.bldrs.exports.splits.htmls; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.exports.*; import gplx.xowa.addons.bldrs.exports.splits.*; +import gplx.xowa.addons.bldrs.exports.splits.rslts.*; +class Split_rslt_wkr__html extends Split_rslt_wkr__int__base { + @Override public byte Tid() {return Split_rslt_tid_.Tid__html;} + @Override public String Tbl_name() {return "rslt_html";} + @Override public String Pkey_name() {return "page_id";} +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/htmls/Split_wkr__html.java b/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/htmls/Split_wkr__html.java new file mode 100644 index 000000000..cc7cbd645 --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/htmls/Split_wkr__html.java @@ -0,0 +1,82 @@ +/* +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.addons.bldrs.exports.splits.htmls; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.exports.*; import gplx.xowa.addons.bldrs.exports.splits.*; +import gplx.dbs.*; import gplx.xowa.wikis.data.tbls.*; +import gplx.xowa.addons.bldrs.exports.splits.metas.*; import gplx.xowa.addons.bldrs.exports.splits.rslts.*; +import gplx.xowa.htmls.core.dbs.*; +public class Split_wkr__html implements Split_wkr { + private Xoh_src_tbl_mgr src_tbl_mgr; + private Xoh_page_tbl tbl; private Db_stmt stmt; + private final Xoh_page_row trg_itm = new Xoh_page_row(); + private final Split_rslt_wkr__html rslt_wkr = new Split_rslt_wkr__html(); + public void Split__init(Split_ctx ctx, Xow_wiki wiki, Db_conn wkr_conn) { + this.src_tbl_mgr = new Xoh_src_tbl_mgr(wiki); + ctx.Rslt_mgr().Reg_wkr(rslt_wkr); + } + public void Split__trg__nth__new(Split_ctx ctx, Db_conn trg_conn) { + this.tbl = new Xoh_page_tbl(trg_conn); + Dbmeta_fld_list trg_flds = Make_flds_for_split(tbl.Flds()); + trg_conn.Meta_tbl_create(Dbmeta_tbl_itm.New(tbl.Tbl_name(), trg_flds)); + this.stmt = trg_conn.Stmt_insert(tbl.Tbl_name(), trg_flds); + } + public void Split__trg__nth__rls(Split_ctx ctx, Db_conn trg_conn) { + trg_conn.Meta_idx_create(tbl.Tbl_name(), "merge", "trg_db_id", "page_id"); + trg_conn.Meta_idx_create(tbl.Tbl_name(), "blob" , "trg_db_id", "blob_len", "page_id"); + tbl.Rls(); + } + public void Split__exec(Split_ctx ctx, Split_rslt_mgr rslt_mgr, Xowd_page_itm page, int page_id) { + // load data + if (page.Redirected()) return; // redirects won't have html + int html_db_id = page.Html_db_id(); if (html_db_id == -1) return; // ignore pages that don't generate html; EX: Mediawiki:Commons.css + Xoh_page_tbl_itm src_itm = src_tbl_mgr.Get_or_load(html_db_id); + if (!src_itm.Html_tbl().Select_as_row(trg_itm, page_id)) throw Err_.new_wo_type("could not find html", "page_id", page_id); + byte[] body = trg_itm.Body(); + int body_len = body.length; + byte[] display_ttl = trg_itm.Display_ttl(); + byte[] content_sub = trg_itm.Content_sub(); + byte[] sidebar_div = trg_itm.Sidebar_div(); + + // calc db_idx based on db_size + int db_row_size = Xoh_page_row.Db_row_size_fixed + display_ttl.length + content_sub.length + sidebar_div.length + body_len; + int trg_db_id = ctx.Html_size_calc().Size_cur_add_(db_row_size); + + // do insert + stmt.Clear().Val_int("page_id", page_id); + stmt.Val_int("trg_db_id", trg_db_id); + stmt.Val_int("blob_len" , body_len); + tbl.Fill_stmt(stmt, trg_itm.Head_flag(), trg_itm.Body_flag(), display_ttl, content_sub, sidebar_div, body); + stmt.Exec_insert(); + rslt_wkr.On__nth__itm(db_row_size, page_id); + } + public void Split__trg__1st__new(Split_ctx ctx, Db_conn trg_conn) {} // html_dbs have no core tables + public void Split__pages_loaded(Split_ctx ctx, int ns_id, int score_bgn, int score_end) {} // html_wkr has no caching + public void Split__term(Split_ctx ctx) {} // html_wkr has no cleanup + private static Dbmeta_fld_list Make_flds_for_split(Dbmeta_fld_list flds) { + Dbmeta_fld_list rv = new Dbmeta_fld_list(); + rv.Add(flds.Get_by("page_id")); + rv.Add_int("trg_db_id"); + rv.Add_int("blob_len"); + rv.Add(flds.Get_by("head_flag")); + rv.Add(flds.Get_by("body_flag")); + rv.Add(flds.Get_by("display_ttl")); + rv.Add(flds.Get_by("content_sub")); + rv.Add(flds.Get_by("sidebar_div")); + rv.Add(flds.Get_by("body")); + return rv; + } +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/htmls/Xoh_page_tbl_itm.java b/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/htmls/Xoh_page_tbl_itm.java new file mode 100644 index 000000000..7800bd64f --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/htmls/Xoh_page_tbl_itm.java @@ -0,0 +1,33 @@ +/* +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.addons.bldrs.exports.splits.htmls; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.exports.*; import gplx.xowa.addons.bldrs.exports.splits.*; +import gplx.dbs.*; import gplx.xowa.htmls.core.dbs.*; +public class Xoh_page_tbl_itm { + private final boolean trg; + public Xoh_page_tbl_itm(boolean trg, int db_id, Db_conn conn) { + this.trg = trg; + this.db_id = db_id; + this.html_tbl = new Xoh_page_tbl(conn); + } + public int Db_id() {return db_id;} private final int db_id; + public Xoh_page_tbl Html_tbl() {return html_tbl;} private final Xoh_page_tbl html_tbl; + public void Rls() { + html_tbl.Conn().Rls_conn(); + if (trg) html_tbl.Conn().Env_vacuum(); + } +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/htmls/Xoh_src_tbl_mgr.java b/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/htmls/Xoh_src_tbl_mgr.java new file mode 100644 index 000000000..311ef8104 --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/htmls/Xoh_src_tbl_mgr.java @@ -0,0 +1,44 @@ +/* +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.addons.bldrs.exports.splits.htmls; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.exports.*; import gplx.xowa.addons.bldrs.exports.splits.*; +import gplx.dbs.*; +import gplx.xowa.wikis.data.*; import gplx.xowa.htmls.core.dbs.*; +public class Xoh_src_tbl_mgr { + private final Xow_wiki wiki; + private final Ordered_hash hash = Ordered_hash_.New(); + public Xoh_src_tbl_mgr(Xow_wiki wiki) { + this.wiki = wiki; + } + public Xoh_page_tbl_itm Get_or_load(int id) { + Xoh_page_tbl_itm rv = (Xoh_page_tbl_itm)hash.Get_by(id); + if (rv == null) { + Xow_db_file html_db = wiki.Data__core_mgr().Dbs__get_by_id_or_fail(id); + rv = new Xoh_page_tbl_itm(Bool_.N, id, html_db.Conn()); + hash.Add(id, rv); + } + return rv; + } + public void Cleanup() { + int len = hash.Len(); + for (int i = 0; i < len; ++i) { + Xoh_page_tbl_itm itm = (Xoh_page_tbl_itm)hash.Get_at(i); + itm.Rls(); + } + hash.Clear(); + } +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/htmls/Xoh_trg_tbl_mgr.java b/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/htmls/Xoh_trg_tbl_mgr.java new file mode 100644 index 000000000..c1c816dfe --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/htmls/Xoh_trg_tbl_mgr.java @@ -0,0 +1,51 @@ +/* +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.addons.bldrs.exports.splits.htmls; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.exports.*; import gplx.xowa.addons.bldrs.exports.splits.*; +import gplx.xowa.wikis.data.*; import gplx.xowa.wikis.data.tbls.*; +public class Xoh_trg_tbl_mgr { + private final Xow_db_mgr db_mgr; + public Xoh_trg_tbl_mgr(Xowe_wiki wiki) { + this.db_mgr = wiki.Data__core_mgr(); + } + public Xoh_page_tbl_itm Make_new(int ns, int part) { + Xow_db_file db_file = db_mgr.Dbs__make_by_tid(Xow_db_file_.Tid__html_data, Int_.To_str(ns), part, Make_file_name(Repack_suffix, Xow_db_file_.Tid__html_data, ns, part)); + Xoh_page_tbl_itm rv = new Xoh_page_tbl_itm(Bool_.Y, db_file.Id(), db_file.Conn()); + rv.Html_tbl().Create_tbl(); + return rv; + } + public static String Make_file_name(String suffix, byte type, int ns, int part) { + String rv = String_.Format("{0}{1}{2}{3}.xowa" // EX: .repack-html-ns.000-001.xowa + , suffix // EX: .repack + , "-" + Xow_db_file_.To_key(type) // EX: -html + , ns < 0 ? "" : "-ns." + Int_.To_str_pad_bgn_zero(ns, 3) // EX: -ns.001 + , part < 0 ? "" : "-db." + Int_.To_str_pad_bgn_zero(part, 3) // EX: -db.001 + ); + return rv; + } + public int Get_max_id() { + int len = db_mgr.Dbs__len(); + int rv = -1; + for (int i = 0; i < len; ++i) { + Xow_db_file db_file = db_mgr.Dbs__get_at(i); + int db_id = db_file.Id(); + if (db_id > rv) rv = db_id; + } + return rv; + } + public static final String Repack_suffix = ".repack"; +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/metas/Split_meta_wkr_base.java b/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/metas/Split_meta_wkr_base.java new file mode 100644 index 000000000..bcfecae75 --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/metas/Split_meta_wkr_base.java @@ -0,0 +1,57 @@ +/* +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.addons.bldrs.exports.splits.metas; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.exports.*; import gplx.xowa.addons.bldrs.exports.splits.*; +import gplx.dbs.*; +import gplx.xowa.addons.bldrs.exports.splits.rslts.*; +public abstract class Split_meta_wkr_base { + private final Db_attach_mgr attach_mgr = new Db_attach_mgr(); + public void Load(Db_conn wkr_conn, Split_page_mgr page_mgr, int ns_id, int score_bgn, int score_end) { + attach_mgr.Conn_main_(wkr_conn); + String sql_fmt = Load_sql(attach_mgr, ns_id, score_bgn, score_end); + String sql = attach_mgr.Resolve_sql(String_.Format(sql_fmt, score_bgn, score_end, ns_id)); + attach_mgr.Attach(); + Db_rdr rdr = wkr_conn.Stmt_sql(sql).Exec_select__rls_auto(); + Split_page_itm page = null; + byte tid = this.Tid(); + while (rdr.Move_next()) { + int page_id = rdr.Read_int("page_id"); + if (page == null || page.Page_id() != page_id) { + page = page_mgr.Get_by_or_null(page_id); + if (page == null) { + page = new Split_page_itm(true, page_id); + page_mgr.Add(page); + } + } + Split_page_list list = page.Get_by_or_make(tid); + list.Add(Load_itm(rdr)); + } + attach_mgr.Detach(); + } + public void Save(Split_ctx ctx, Split_rslt_mgr rslt_mgr, Split_page_itm page_itm) { + Split_page_list list = page_itm.Get_by_or_null(this.Tid()); if (list == null) return; + int len = list.Len(); + for (int i = 0; i < len; ++i) + this.Save_itm(ctx, rslt_mgr, list.Get_at(i)); + } + public abstract byte Tid(); + public abstract void On_nth_new(Split_ctx ctx, Db_conn wkr_conn); + public abstract void On_nth_rls(Split_ctx ctx, Db_conn trg_conn); + protected abstract String Load_sql(Db_attach_mgr attach_mgr, int ns_id, int score_bgn, int score_end); // gen sql and attach_itms + protected abstract Object Load_itm(Db_rdr rdr); + protected abstract void Save_itm(Split_ctx ctx, Split_rslt_mgr rslt_mgr, Object itm); +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/metas/Split_page_itm.java b/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/metas/Split_page_itm.java new file mode 100644 index 000000000..1a941c57e --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/metas/Split_page_itm.java @@ -0,0 +1,35 @@ +/* +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.addons.bldrs.exports.splits.metas; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.exports.*; import gplx.xowa.addons.bldrs.exports.splits.*; +public class Split_page_itm { + private final Split_page_list[] lists_ary; + public Split_page_itm(boolean fsdb, int page_id) { + this.page_id = page_id; + this.lists_ary = new Split_page_list[Split_page_list_type_.Tid_max]; + } + public int Page_id() {return page_id;} private final int page_id; + public Split_page_list Get_by_or_null(byte type) {return lists_ary[type];} + public Split_page_list Get_by_or_make(byte type) { + Split_page_list rv = lists_ary[type]; + if (rv == null) { + rv = new Split_page_list(type); + lists_ary[type] = rv; + } + return rv; + } +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/metas/Split_page_list.java b/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/metas/Split_page_list.java new file mode 100644 index 000000000..413d30eae --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/metas/Split_page_list.java @@ -0,0 +1,26 @@ +/* +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.addons.bldrs.exports.splits.metas; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.exports.*; import gplx.xowa.addons.bldrs.exports.splits.*; +public class Split_page_list { + private final List_adp list = List_adp_.New(); + public Split_page_list(byte type) {this.type = type;} + public byte Type() {return type;} private final byte type; + public int Len() {return list.Count();} + public Object Get_at(int i) {return list.Get_at(i);} + public void Add(Object o) {list.Add(o);} +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/metas/Split_page_list_type_.java b/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/metas/Split_page_list_type_.java new file mode 100644 index 000000000..997381b1e --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/metas/Split_page_list_type_.java @@ -0,0 +1,24 @@ +/* +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.addons.bldrs.exports.splits.metas; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.exports.*; import gplx.xowa.addons.bldrs.exports.splits.*; +public class Split_page_list_type_ { + public static final int Tid_max = 6; + public static final byte + Tid__fsdb_bin = 0, Tid__fsdb_fil = 1, Tid__fsdb_thm = 2, Tid__fsdb_org = 3 + , Tid__srch_word = 4, Tid__srch_link = 5; +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/metas/Split_page_mgr.java b/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/metas/Split_page_mgr.java new file mode 100644 index 000000000..8f047d674 --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/metas/Split_page_mgr.java @@ -0,0 +1,27 @@ +/* +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.addons.bldrs.exports.splits.metas; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.exports.*; import gplx.xowa.addons.bldrs.exports.splits.*; +import gplx.core.lists.hashs.*; +public class Split_page_mgr { + private final Hash_adp__int hash = new Hash_adp__int(); + public void Clear() {hash.Clear();} + public Split_page_itm Get_by_or_null(int page_id) {return (Split_page_itm)hash.Get_by_or_null(page_id);} + public void Add(Split_page_itm page) { + hash.Add(page.Page_id(), page); + } +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/mgrs/Split_cfg.java b/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/mgrs/Split_cfg.java new file mode 100644 index 000000000..1f971aa02 --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/mgrs/Split_cfg.java @@ -0,0 +1,50 @@ +/* +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.addons.bldrs.exports.splits.mgrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.exports.*; import gplx.xowa.addons.bldrs.exports.splits.*; +public class Split_cfg implements Gfo_invk { + public boolean Force_rebuild() {return force_rebuild;} private boolean force_rebuild; + public long Trg_max() {return trg_max;} private long trg_max = 32 * Io_mgr.Len_mb; + public Split_ns_itm[] Ns_itms() {return ns_itms;} private Split_ns_itm[] ns_itms; + public int Loader_rows() {return loader_rows;} private int loader_rows = 10000; + public Split_type_cfg Text() {return text;} private final Split_type_cfg text = new Split_type_cfg("text", 1000); + public Split_type_cfg Html() {return html;} private final Split_type_cfg html = new Split_type_cfg("html", 2000); + public Split_type_cfg File() {return file;} private final Split_type_cfg file = new Split_type_cfg("file", 3000); + public void Ns_itms_(int[] ary) { + List_adp list = List_adp_.New(); + int len = ary.length; + for (int i = 0; i < len; ++i) { + list.Add(new Split_ns_itm(ary[i])); + } + this.ns_itms = (Split_ns_itm[])list.To_ary_and_clear(Split_ns_itm.class); + } + + public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { + if (ctx.Match(k, Invk__ns_ids_)) this.Ns_itms_(Int_.Ary_parse(m.ReadStr("v"), "|")); + else if (ctx.Match(k, Invk__loader_rows_)) this.loader_rows = m.ReadInt("v"); + else if (ctx.Match(k, Invk__force_rebuild_)) this.force_rebuild = m.ReadBool("v"); + else if (ctx.Match(k, Invk__trg_max_)) this.trg_max = m.ReadLong("v"); + else if (ctx.Match(k, Invk__text)) return text; + else if (ctx.Match(k, Invk__html)) return html; + else if (ctx.Match(k, Invk__file)) return file; + else return Gfo_invk_.Rv_unhandled; + return this; + } + private static final String Invk__ns_ids_ = "ns_ids_", Invk__loader_rows_ = "loader_rows_", Invk__trg_max_ = "trg_max_", Invk__force_rebuild_ = "force_rebuild_" + , Invk__text = "text", Invk__html = "html", Invk__file = "file" + ; +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/mgrs/Split_db_size_calc.java b/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/mgrs/Split_db_size_calc.java new file mode 100644 index 000000000..83028204a --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/mgrs/Split_db_size_calc.java @@ -0,0 +1,37 @@ +/* +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.addons.bldrs.exports.splits.mgrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.exports.*; import gplx.xowa.addons.bldrs.exports.splits.*; +public class Split_db_size_calc { + private final long size_max; + private long size_cur; + public Split_db_size_calc(long size_max, int idx) { + this.size_max = size_max; + this.idx = idx; + } + public int Idx() {return idx;} private int idx; + public int Size_cur_add_(int v) { + long size_new = size_cur + v; + if (size_new > size_max) { + ++idx; + size_cur = 0; + } + else + size_cur = size_new; + return idx; + } +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/mgrs/Split_file_tid_.java b/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/mgrs/Split_file_tid_.java new file mode 100644 index 000000000..63bbb4605 --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/mgrs/Split_file_tid_.java @@ -0,0 +1,40 @@ +/* +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.addons.bldrs.exports.splits.mgrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.exports.*; import gplx.xowa.addons.bldrs.exports.splits.*; +public class Split_file_tid_ { + public static final byte Tid__core = 0, Tid__data = 1, Tid__temp = 2; + public static byte To_tid(Io_url url) { + if (!String_.Eq(url.Ext(), ".xowa")) return Tid__temp; + String raw = url.NameAndExt(); + if (String_.Has(raw, "_core.")) return Tid__core; + else if (String_.Has(raw, ".sqlite")) return Tid__temp; + else return Tid__data; + } + public static String Make_file_name(String wiki_abrv, String wiki_date, int idx, int ns, String ext) {// EX: Xowa_simplewiki_2016-05-01_pt.0001_ns.0014.xowa + String ns_str = ns == -1 ? "_core" : String_.Format("_ns.{0}", Int_.To_str_pad_bgn_zero(ns, 4)); + return String_.Format("Xowa_{0}_{1}_part.{2}{3}{4}", wiki_abrv, wiki_date, Int_.To_str_pad_bgn_zero(idx, 4), ns_str, ext); + } + public static int Get_ns_by_url(Io_url fil) { + String raw = fil.Raw(); + if (String_.Has(raw, "_core")) return -1; + int bgn = String_.FindFwd(raw, "ns."); if (bgn == Bry_find_.Not_found) throw Err_.new_wo_type("could not find ns in url", "fil", raw); + bgn += 3; // ns. + int end = String_.FindFwd(raw, ".", bgn); if (end == Bry_find_.Not_found) throw Err_.new_wo_type("could not find ns in url", "fil", raw); + return Int_.parse(String_.Mid(raw, bgn, end)); + } +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/mgrs/Split_mgr_init.java b/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/mgrs/Split_mgr_init.java new file mode 100644 index 000000000..080eb5242 --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/mgrs/Split_mgr_init.java @@ -0,0 +1,73 @@ +/* +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.addons.bldrs.exports.splits.mgrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.exports.*; import gplx.xowa.addons.bldrs.exports.splits.*; +import gplx.dbs.*; +public class Split_mgr_init { + public void Init(Split_ctx ctx, Db_conn wkr_conn, Db_conn page_conn) { + this.Make_ns_regy (ctx.Cfg().Force_rebuild(), wkr_conn, ctx.Ns_itms()); + this.Make_page_regy (ctx.Cfg().Force_rebuild(), wkr_conn, page_conn); + ctx.Rslt_mgr().Init(); + } + private void Make_ns_regy(boolean force_rebuild, Db_conn wkr_conn, Split_ns_itm[] ns_itms) { + if (!(force_rebuild || !wkr_conn.Meta_tbl_exists("ns_regy"))) return; + Gfo_log_.Instance.Prog("creating ns_regy"); + wkr_conn.Meta_tbl_remake(Dbmeta_tbl_itm.New("ns_regy" + , Dbmeta_fld_itm.new_int("ns_id").Primary_y_() + , Dbmeta_fld_itm.new_int("ns_ord") + )); + int len = ns_itms.length; + Db_stmt stmt = wkr_conn.Stmt_insert("ns_regy", "ns_id", "ns_ord"); + for (int i = 0; i < len; ++i) + stmt.Clear().Crt_int("ns_id", ns_itms[i].Ns_id()).Crt_int("ns_ord", i).Exec_insert(); + wkr_conn.Meta_idx_create("ns_regy", "ns_ord", "ns_ord"); + } + private void Make_page_regy(boolean force_rebuild, Db_conn wkr_conn, Db_conn page_conn) { + // order pages by page_ns_ord ASC, page_score DESC, page_len DESC, page_id ASC + if (!(force_rebuild || !wkr_conn.Meta_tbl_exists("page_regy"))) return; + Gfo_log_.Instance.Prog("creating page_regy"); + wkr_conn.Meta_tbl_remake(Dbmeta_tbl_itm.New("page_regy" + , Dbmeta_fld_itm.new_int("page_uid").Primary_y_().Autonum_y_() + , Dbmeta_fld_itm.new_int("page_ns_id") + , Dbmeta_fld_itm.new_int("page_ns_ord") + , Dbmeta_fld_itm.new_int("page_score") + , Dbmeta_fld_itm.new_int("page_len") + , Dbmeta_fld_itm.new_int("page_id") + )); + page_conn.Meta_idx_create("page", "page_uid", "page_namespace", "page_score", "page_len", "page_id"); // index page table; will drop below + Db_attach_mgr attach_mgr = new Db_attach_mgr(wkr_conn, new Db_attach_itm("page_db", page_conn)); + attach_mgr.Exec_sql(String_.Concat_lines_nl // ANSI.Y + ( "INSERT INTO page_regy (page_ns_id, page_ns_ord, page_score, page_len, page_id)" + , "SELECT p.page_namespace, nm.ns_ord, p.page_score, p.page_len, p.page_id" + , "FROM page p" + , " JOIN ns_regy nm ON p.page_namespace = nm.ns_id" + , "ORDER BY nm.ns_ord, p.page_score DESC, p.page_len DESC, p.page_id" + )); + wkr_conn.Meta_idx_create("page_regy", "main" , "page_ns_id", "page_score", "page_len", "page_id"); + wkr_conn.Meta_idx_create("page_regy", "page_id" , "page_id"); + page_conn.Meta_idx_delete("page", "page_uid"); + } + + public static void Update_page_cols(Db_conn wkr_conn, String tbl_name) { + wkr_conn.Exec_sql(String_.Format(String_.Concat_lines_nl // ANSI.Y + ( "UPDATE {0}" + , "SET page_id = Coalesce((SELECT page_id FROM page_regy pr WHERE pr.page_uid = {0}.page_uid), -1)" + , ", page_ns = Coalesce((SELECT page_ns_id FROM page_regy pr WHERE pr.page_uid = {0}.page_uid), -1)" + , ", page_score = Coalesce((SELECT page_score FROM page_regy pr WHERE pr.page_uid = {0}.page_uid), -1)" + ), tbl_name)); + } +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/mgrs/Split_ns_itm.java b/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/mgrs/Split_ns_itm.java new file mode 100644 index 000000000..01edcfbc9 --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/mgrs/Split_ns_itm.java @@ -0,0 +1,24 @@ +/* +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.addons.bldrs.exports.splits.mgrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.exports.*; import gplx.xowa.addons.bldrs.exports.splits.*; +public class Split_ns_itm { + public Split_ns_itm(int ns_id) { + this.ns_id = ns_id; + } + public int Ns_id() {return ns_id;} private final int ns_id; +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/mgrs/Split_page_loader.java b/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/mgrs/Split_page_loader.java new file mode 100644 index 000000000..5b35eb612 --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/mgrs/Split_page_loader.java @@ -0,0 +1,72 @@ +/* +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.addons.bldrs.exports.splits.mgrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.exports.*; import gplx.xowa.addons.bldrs.exports.splits.*; +import gplx.dbs.*; import gplx.dbs.metas.*; +import gplx.xowa.wikis.data.tbls.*; +public class Split_page_loader { + private final int rows_to_read; + private final Xowd_page_tbl tbl; private final Db_stmt stmt; + private int score_max = Int_.Max_value; + public Split_page_loader(Xow_wiki wiki, int rows_to_read) { + this.rows_to_read = rows_to_read; + this.tbl = wiki.Data__core_mgr().Tbl__page(); + tbl.Conn().Meta_idx_assert("page", "score__len", Dbmeta_idx_fld.Dsc("page_score"), Dbmeta_idx_fld.Dsc("page_len")); + this.stmt = tbl.Conn().Stmt_sql("SELECT * FROM page WHERE page_namespace=? AND page_score < ? ORDER BY page_score DESC, page_len DESC"); // ANSI.Y + } + public void Init_ns(int ns_id) {score_max = Int_.Max_value;} + public boolean Load_pages(Split_ctx ctx, List_adp list, Split_wkr[] wkrs, int ns_id) { + boolean reading = true; + list.Clear(); + Gfo_log_.Instance.Prog("loading pages", "page_ns", ns_id, "score_max", score_max); + int score_end = score_max, score_prv = score_max; + Db_rdr rdr = stmt.Clear().Crt_int("page_namespace", ns_id).Crt_int("page_score", score_max).Exec_select__rls_manual(); + try { + int rows_count = 0; + boolean enough_rows_read = false; + while (true) { + reading = rdr.Move_next(); if (!reading) break; + + // read data from rdr + Xowd_page_itm itm = new Xowd_page_itm(); + tbl.Read_page__all(itm, rdr); + + // check if (a) enough rows read and (b) score range is done; (b) needed b/c WHERE is page_score < prv_score + int score_cur = itm.Score(); + if (enough_rows_read && score_prv != score_cur) { + score_max = score_prv; // update score_max for next call; note that (a) score_prv is used to ensure boundary between scores; (b) cur_record will be reread on next call + break; // stop reading + } + + // add to list; update variables + list.Add(itm); + if (++rows_count == rows_to_read) enough_rows_read = true; + score_prv = score_cur; + } + } finally {rdr.Rls();} + + // calls wkrs to cache rdrs + ctx.Page_mgr().Clear(); + for (Split_wkr wkr : wkrs) + wkr.Split__pages_loaded(ctx, ns_id, score_prv, score_end); + return reading; + } + public void Rls() { + stmt.Rls(); + tbl.Conn().Meta_idx_delete("page", "score_len"); + } +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/mgrs/Split_type_cfg.java b/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/mgrs/Split_type_cfg.java new file mode 100644 index 000000000..68fe49fc7 --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/mgrs/Split_type_cfg.java @@ -0,0 +1,33 @@ +/* +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.addons.bldrs.exports.splits.mgrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.exports.*; import gplx.xowa.addons.bldrs.exports.splits.*; +public class Split_type_cfg implements Gfo_invk { + public Split_type_cfg(String key, int db_idx) {this.key = key; this.db_idx = db_idx;} + public String Key() {return key;} private final String key; // NOTE: used for layout + public int Db_idx() {return db_idx;} private int db_idx = 1000; + public long Db_max() {return db_max;} private long db_max = 1500 * Io_mgr.Len_mb; + public String Layout() {return layout;} private String layout; + public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { + if (ctx.Match(k, Invk__db_max_)) this.db_max = m.ReadLong("v") * Io_mgr.Len_mb; + else if (ctx.Match(k, Invk__db_idx_)) this.db_idx = m.ReadInt("v"); + else if (ctx.Match(k, Invk__layout_)) this.layout = m.ReadStr("v"); + else return Gfo_invk_.Rv_unhandled; + return this; + } + private static final String Invk__db_max_ = "db_max_", Invk__db_idx_ = "db_idx_", Invk__layout_ = "layout_"; +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/pages/Split_rslt_wkr__page.java b/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/pages/Split_rslt_wkr__page.java new file mode 100644 index 000000000..9cd16f9f6 --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/pages/Split_rslt_wkr__page.java @@ -0,0 +1,24 @@ +/* +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.addons.bldrs.exports.splits.pages; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.exports.*; import gplx.xowa.addons.bldrs.exports.splits.*; +import gplx.xowa.addons.bldrs.exports.splits.rslts.*; +class Split_rslt_wkr__page extends Split_rslt_wkr__int__base { + @Override public byte Tid() {return Split_rslt_tid_.Tid__page;} + @Override public String Tbl_name() {return "rslt_page";} + @Override public String Pkey_name() {return "page_id";} +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/pages/Split_wkr__page.java b/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/pages/Split_wkr__page.java new file mode 100644 index 000000000..4d3b3b624 --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/pages/Split_wkr__page.java @@ -0,0 +1,57 @@ +/* +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.addons.bldrs.exports.splits.pages; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.exports.*; import gplx.xowa.addons.bldrs.exports.splits.*; +import gplx.dbs.*; import gplx.dbs.cfgs.*; import gplx.dbs.bulks.*; import gplx.xowa.wikis.data.tbls.*; +import gplx.xowa.addons.bldrs.exports.splits.metas.*; import gplx.xowa.addons.bldrs.exports.splits.rslts.*; import gplx.xowa.addons.bldrs.exports.splits.mgrs.*; +public class Split_wkr__page implements Split_wkr { + private final Split_rslt_wkr__page rslt_wkr = new Split_rslt_wkr__page(); + private Xowd_page_tbl tbl; private Db_stmt stmt; + public void Split__init(Split_ctx ctx, Xow_wiki wiki, Db_conn wkr_conn) { + ctx.Rslt_mgr().Reg_wkr(rslt_wkr); + } + public void Split__trg__1st__new(Split_ctx ctx, Db_conn trg_conn) { + Db_conn core_conn = ctx.Wiki().Data__core_mgr().Tbl__cfg().Conn(); + Db_tbl_copy copy_mgr = new Db_tbl_copy(); + copy_mgr.Copy_many(core_conn, trg_conn, "xowa_db", "site_ns", "site_stats", "css_core", "css_file"); + copy_mgr.Copy_one (core_conn, trg_conn, "xowa_cfg", "xowa_cfg__core"); + Update_layouts(trg_conn, ctx.Cfg().Text(), ctx.Cfg().Html(), ctx.Cfg().File()); + } + public void Split__trg__nth__new(Split_ctx ctx, Db_conn trg_conn) { + this.tbl = new Xowd_page_tbl(trg_conn, Bool_.N); + tbl.Create_tbl(); + stmt = trg_conn.Stmt_insert(tbl.Tbl_name(), tbl.Flds__all()); + } + public void Split__trg__nth__rls(Split_ctx ctx, Db_conn trg_conn) { + stmt.Rls(); + } + public void Split__exec(Split_ctx ctx, Split_rslt_mgr rslt_mgr, Xowd_page_itm page, int page_id) { + tbl.Insert_by_itm(stmt, page, ctx.Html_size_calc().Idx()); + rslt_wkr.On__nth__itm(Xowd_page_itm.Db_row_size_fixed + page.Ttl_page_db().length, page_id); + rslt_mgr.Score_set(page.Score()); + } + public void Split__pages_loaded(Split_ctx ctx, int ns_id, int score_bgn, int score_end) {} // page_wkr has no caching + public void Split__term(Split_ctx ctx) {} // page_wkr has no cleanup + private void Update_layouts(Db_conn trg_conn, Split_type_cfg... cfgs) { + Db_cfg_tbl cfg_tbl = new Db_cfg_tbl(trg_conn, "xowa_cfg__core"); + for (Split_type_cfg cfg : cfgs) { + String layout = cfg.Layout(); if (layout == null) continue; + cfg_tbl.Update_str("xowa.wiki.core", "layout_" + cfg.Key(), layout); + } + cfg_tbl.Rls(); + } +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/rndms/Split_rslt_wkr__rndm.java b/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/rndms/Split_rslt_wkr__rndm.java new file mode 100644 index 000000000..5e96cc8af --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/rndms/Split_rslt_wkr__rndm.java @@ -0,0 +1,26 @@ +/* +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.addons.bldrs.exports.splits.rndms; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.exports.*; import gplx.xowa.addons.bldrs.exports.splits.*; +import gplx.dbs.*; import gplx.xowa.addons.bldrs.exports.splits.rslts.*; +class Split_rslt_wkr__rndm extends Split_rslt_wkr__objs__base { + @Override public byte Tid() {return Split_rslt_tid_.Tid__rndm;} + @Override public String Tbl_name() {return "rslt_rndm";} + @Override public Dbmeta_fld_itm[] Pkey_flds() { + return new Dbmeta_fld_itm[] {Dbmeta_fld_itm.new_int("mgr_idx"), Dbmeta_fld_itm.new_int("rng_idx"), Dbmeta_fld_itm.new_int("seq_idx")}; + } +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/rndms/Split_wkr__rndm.java b/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/rndms/Split_wkr__rndm.java new file mode 100644 index 000000000..14a66d87b --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/rndms/Split_wkr__rndm.java @@ -0,0 +1,72 @@ +/* +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.addons.bldrs.exports.splits.rndms; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.exports.*; import gplx.xowa.addons.bldrs.exports.splits.*; +import gplx.dbs.*; import gplx.dbs.cfgs.*; import gplx.dbs.bulks.*; import gplx.xowa.wikis.data.tbls.*; +import gplx.xowa.addons.bldrs.exports.splits.metas.*; import gplx.xowa.addons.bldrs.exports.splits.rslts.*; import gplx.xowa.addons.bldrs.exports.splits.mgrs.*; +import gplx.xowa.addons.wikis.pages.randoms.*; import gplx.xowa.addons.wikis.pages.randoms.dbs.*; import gplx.xowa.addons.wikis.pages.randoms.bldrs.*; import gplx.xowa.addons.wikis.pages.randoms.mgrs.*; +import gplx.xowa.addons.bldrs.exports.utls.*; +public class Split_wkr__rndm implements Split_wkr { + private final Split_rslt_wkr__rndm rslt_wkr = new Split_rslt_wkr__rndm(); + private final Bry_bfr tmp_bfr = Bry_bfr_.New(); private final Db_attach_mgr attach_mgr = new Db_attach_mgr(); + private Rndm_bldr_wkr bldr; + private int cur_ns_id = -1; + public void Split__init(Split_ctx ctx, Xow_wiki wiki, Db_conn wkr_conn) { + this.bldr = Rndm_addon.Get(wiki).Mgr().New_bldr(); + ctx.Rslt_mgr().Reg_wkr(rslt_wkr); + } + public void Split__term(Split_ctx ctx) { + bldr.Exec_qry_end(); + } + public void Split__trg__1st__new(Split_ctx ctx, Db_conn trg_conn) { + Rndm_qry_tbl mgr_tbl = new Rndm_qry_tbl(trg_conn); mgr_tbl.Create_tbl(); + } + public void Split__trg__nth__new(Split_ctx ctx, Db_conn trg_conn) { + if (cur_ns_id != ctx.Trg_ns()) { + if (cur_ns_id != -1) + bldr.Exec_qry_end(); + cur_ns_id = ctx.Trg_ns(); + bldr.Exec_qry_bgn(Rndm_qry_itm.New_by_ns(ctx.Wiki(), cur_ns_id)); + } + bldr.Exec_rng_bgn(); + bldr.Conn().Txn_bgn("rndm"); + } + public void Split__trg__nth__rls(Split_ctx ctx, Db_conn trg_conn) { + // make rndm_rng and add + Rndm_rng_itm rng_itm = bldr.Exec_rng_end_or_null(); if (rng_itm == null) return; + Rndm_rng_tbl rng_tbl = new Rndm_rng_tbl(trg_conn); rng_tbl.Create_tbl(); + Db_stmt rng_stmt = rng_tbl.Insert_stmt(); + rng_tbl.Insert(rng_stmt, rng_itm.Mgr_idx(), rng_itm.Rng_idx(), rng_itm.Seq_bgn(), rng_itm.Seq_end()); + rng_stmt.Rls(); + bldr.Conn().Txn_end(); + + // make rndm_seq and bulk copy + Rndm_seq_tbl seq_tbl = new Rndm_seq_tbl(trg_conn); seq_tbl.Create_tbl(); + Split_tbl_.Bld_insert_by_select(tmp_bfr, seq_tbl.Tbl_name(), seq_tbl.Flds()); + tmp_bfr.Add_str_u8_fmt("WHERE {0} = {1} AND {2} = {3}", seq_tbl.Fld__qry_idx(), bldr.Qry_idx(), seq_tbl.Fld__rng_idx(), bldr.Rng_idx()); + attach_mgr.Conn_main_(trg_conn).Conn_others_(new Db_attach_itm("src_db", bldr.Conn())); + attach_mgr.Exec_sql(tmp_bfr.To_str_and_clear()); +// bldr.Conn().Txn_bgn("rndm"); + } + public void Split__exec(Split_ctx ctx, Split_rslt_mgr rslt_mgr, Xowd_page_itm page, int page_id) { + if (page.Ns_id() == gplx.xowa.wikis.nss.Xow_ns_.Tid__main && !page.Redirected()) { + bldr.Exec_seq_itm(page.Id()); + rslt_wkr.On__nth__itm(Rndm_seq_tbl.Db_row_size_fixed, bldr.Qry_idx(), bldr.Rng_idx(), bldr.Seq_in_qry()); + } + } + public void Split__pages_loaded(Split_ctx ctx, int ns_id, int score_bgn, int score_end) {} // rndm_wkr has no caching +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/rslts/Split_rslt_mgr.java b/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/rslts/Split_rslt_mgr.java new file mode 100644 index 000000000..e38ede7b4 --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/rslts/Split_rslt_mgr.java @@ -0,0 +1,102 @@ +/* +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.addons.bldrs.exports.splits.rslts; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.exports.*; import gplx.xowa.addons.bldrs.exports.splits.*; +import gplx.dbs.*; +public class Split_rslt_mgr { + private final Db_conn wkr_conn; + private Db_stmt rslt_type_stmt, rslt_db_stmt; + private Io_url db_url; private int db_id, ns_id; + private int score_min, score_max; + private Split_rslt_wkr[] rslt_ary = new Split_rslt_wkr[Split_rslt_tid_.Tid_max]; + public Split_rslt_mgr(Db_conn wkr_conn) { + this.wkr_conn = wkr_conn; + for (int i = 0; i < Split_rslt_tid_.Tid_max; ++i) + rslt_ary[i] = Split_rslt_wkr_.Noop; + } + public void Init() { + // init rslt_db + wkr_conn.Meta_tbl_remake(Dbmeta_tbl_itm.New("rslt_db" + , Dbmeta_fld_itm.new_int("db_id") + , Dbmeta_fld_itm.new_long("db_size") + , Dbmeta_fld_itm.new_long("obj_size") + , Dbmeta_fld_itm.new_int("ns_id") + , Dbmeta_fld_itm.new_int("score_min") + , Dbmeta_fld_itm.new_int("score_max") + )); + this.rslt_db_stmt = wkr_conn.Stmt_insert("rslt_db", "db_id", "db_size", "obj_size", "ns_id", "score_min", "score_max"); + + // init rslt_type + wkr_conn.Meta_tbl_remake(Dbmeta_tbl_itm.New("rslt_type" + , Dbmeta_fld_itm.new_int("db_id") + , Dbmeta_fld_itm.new_byte("tbl_id") + , Dbmeta_fld_itm.new_int("row_count") + , Dbmeta_fld_itm.new_long("obj_size") + )); + this.rslt_type_stmt = wkr_conn.Stmt_insert("rslt_type", "db_id", "tbl_id", "row_count", "obj_size"); + } + public void Reg_wkr(Split_rslt_wkr wkr) { + rslt_ary[wkr.Tid()] = wkr; + wkr.On__init(this, wkr_conn); + } + public long Db_size() {return db_size;} private long db_size; + public void Db_size_add_(int v) {db_size += v;} + public void On__nth__new(int db_id, Io_url db_url, int ns_id) { + this.db_id = db_id; this.db_size = 0; this.db_url = db_url; + this.ns_id = ns_id; + this.score_min = Int_.Max_value; + this.score_max = Int_.Min_value; + for (Split_rslt_wkr wkr : rslt_ary) + wkr.On__nth__new(db_id); + } + public void Score_set(int score) { + if (score < score_min) score_min = score; + if (score > score_max) score_max = score; + } + public void On__nth__rls(Db_conn trg_conn) { + Trg_stats(trg_conn, rslt_ary); + wkr_conn.Txn_bgn("wkr_rslts"); + rslt_db_stmt.Clear().Val_int("db_id", db_id) + .Val_long("db_size", Io_mgr.Instance.QueryFil(db_url).Size()) + .Val_long("obj_size", db_size) + .Val_int("ns_id", ns_id) + .Val_int("score_min", score_min).Val_int("score_max", score_max).Exec_insert(); + for (int i = 0; i < Split_rslt_tid_.Tid_max; ++i) + rslt_type_stmt.Clear().Val_int("db_id", db_id).Val_int("tbl_id", i) + .Val_int("row_count", rslt_ary[i].Row_count()) + .Val_long("obj_size", rslt_ary[i].Obj_size()) + .Exec_insert(); + for (Split_rslt_wkr wkr : rslt_ary) + wkr.On__nth__rls(); + wkr_conn.Txn_end(); + } + private static void Trg_stats(Db_conn trg_conn, Split_rslt_wkr[] rlst_ary) { + Wkr_stats_tbl tbl = new Wkr_stats_tbl(trg_conn); + tbl.Create_tbl(); + Db_stmt stmt = tbl.Insert_stmt(); + for (int i = 0 ; i < Split_rslt_tid_.Tid_max; ++i) { + Split_rslt_wkr rslt_wkr = rlst_ary[i]; + tbl.Insert(stmt, rslt_wkr.Tid(), rslt_wkr.Row_count(), rslt_wkr.Obj_size()); + } + } + public void Term() { + rslt_db_stmt = Db_stmt_.Rls(rslt_db_stmt); + rslt_type_stmt = Db_stmt_.Rls(rslt_type_stmt); + for (Split_rslt_wkr wkr : rslt_ary) + wkr.On_term(); + } +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/rslts/Split_rslt_tid_.java b/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/rslts/Split_rslt_tid_.java new file mode 100644 index 000000000..f8e7f19a2 --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/rslts/Split_rslt_tid_.java @@ -0,0 +1,28 @@ +/* +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.addons.bldrs.exports.splits.rslts; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.exports.*; import gplx.xowa.addons.bldrs.exports.splits.*; +public class Split_rslt_tid_ { + public static final int Tid_max = 9; + public static final int Tid__page = 0, Tid__html = 1, Tid__srch_word = 2, Tid__srch_link = 3, Tid__fsdb_bin = 4, Tid__fsdb_fil = 5, Tid__fsdb_thm = 6, Tid__fsdb_org = 7, Tid__rndm = 8; + public static String To_str(int tid) { + switch (tid) { + case Tid__page: return "page"; + default: throw Err_.new_unhandled_default(tid); + } + } +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/rslts/Split_rslt_wkr.java b/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/rslts/Split_rslt_wkr.java new file mode 100644 index 000000000..df6beb7be --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/rslts/Split_rslt_wkr.java @@ -0,0 +1,28 @@ +/* +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.addons.bldrs.exports.splits.rslts; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.exports.*; import gplx.xowa.addons.bldrs.exports.splits.*; +import gplx.dbs.*; +public interface Split_rslt_wkr { + byte Tid(); + int Row_count(); + long Obj_size(); + void On__init(Split_rslt_mgr rslt_mgr, Db_conn wkr_conn); + void On__nth__new(int db_id); + void On__nth__rls(); + void On_term(); +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/rslts/Split_rslt_wkr_.java b/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/rslts/Split_rslt_wkr_.java new file mode 100644 index 000000000..d48604c43 --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/rslts/Split_rslt_wkr_.java @@ -0,0 +1,31 @@ +/* +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.addons.bldrs.exports.splits.rslts; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.exports.*; import gplx.xowa.addons.bldrs.exports.splits.*; +import gplx.dbs.*; +public class Split_rslt_wkr_ { + public static final Split_rslt_wkr Noop = new Split_rslt_wkr__noop(); +} +class Split_rslt_wkr__noop implements Split_rslt_wkr { + public byte Tid() {return Split_rslt_tid_.Tid_max;} + public int Row_count() {return 0;} + public long Obj_size() {return 0;} + public void On__init(Split_rslt_mgr rslt_mgr, Db_conn wkr_conn) {} + public void On__nth__new(int db_id) {} + public void On__nth__rls() {} + public void On_term() {} +} \ No newline at end of file diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/rslts/Split_rslt_wkr__int__base.java b/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/rslts/Split_rslt_wkr__int__base.java new file mode 100644 index 000000000..3ba55e012 --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/rslts/Split_rslt_wkr__int__base.java @@ -0,0 +1,65 @@ +/* +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.addons.bldrs.exports.splits.rslts; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.exports.*; import gplx.xowa.addons.bldrs.exports.splits.*; +import gplx.core.primitives.*; import gplx.dbs.*; import gplx.xowa.addons.bldrs.exports.splits.rslts.*; +public abstract class Split_rslt_wkr__int__base implements Split_rslt_wkr { + private Split_rslt_mgr rslt_mgr; + private Db_conn wkr_conn; private Db_stmt stmt; private int db_id; + private final Int_ary pkey_ary = new Int_ary(128); + private final String tbl_name, pkey_name; + public Split_rslt_wkr__int__base() { + this.tbl_name = Tbl_name(); + this.pkey_name = Pkey_name(); + } + public abstract byte Tid(); + public abstract String Tbl_name(); + public abstract String Pkey_name(); + public int Row_count() {return pkey_ary.Len();} + public long Obj_size() {return obj_size;} private long obj_size; + public void On__init(Split_rslt_mgr rslt_mgr, Db_conn wkr_conn) { + this.rslt_mgr = rslt_mgr; + this.wkr_conn = wkr_conn; + wkr_conn.Meta_tbl_remake(Dbmeta_tbl_itm.New(tbl_name + , Dbmeta_fld_itm.new_int("db_id") + , Dbmeta_fld_itm.new_int(pkey_name) + )); + this.stmt = wkr_conn.Stmt_insert(tbl_name, "db_id", pkey_name); + } + public void On__nth__new(int db_id) { + this.db_id = db_id; + this.obj_size = 0; + } + public void On__nth__itm(int size, int pkey) { + obj_size += size; + rslt_mgr.Db_size_add_(size); + pkey_ary.Add(pkey); + } + public void On__nth__rls() { + wkr_conn.Txn_bgn(tbl_name); + int len = pkey_ary.Len(); + for (int i = 0; i < len; ++i) { + stmt.Clear().Val_int("db_id", db_id).Val_int(pkey_name, pkey_ary.Get_at_or_fail(i)).Exec_insert(); + } + wkr_conn.Txn_end(); + pkey_ary.Clear(); + } + public void On_term() { + stmt = Db_stmt_.Rls(stmt); + wkr_conn.Meta_idx_create(tbl_name, "page_id", pkey_name); + } +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/rslts/Split_rslt_wkr__objs__base.java b/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/rslts/Split_rslt_wkr__objs__base.java new file mode 100644 index 000000000..9835bcf97 --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/rslts/Split_rslt_wkr__objs__base.java @@ -0,0 +1,75 @@ +/* +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.addons.bldrs.exports.splits.rslts; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.exports.*; import gplx.xowa.addons.bldrs.exports.splits.*; +import gplx.core.primitives.*; import gplx.dbs.*; import gplx.xowa.addons.bldrs.exports.splits.rslts.*; +public abstract class Split_rslt_wkr__objs__base implements Split_rslt_wkr { + private Split_rslt_mgr rslt_mgr; + private Db_conn wkr_conn; private Db_stmt stmt; private int db_id; + private final List_adp pkey_list = List_adp_.New(); + private final String tbl_name; private final int pkey_flds_len; private final Dbmeta_fld_itm[] pkey_flds; private final String[] pkey_names; + public Split_rslt_wkr__objs__base() { + this.tbl_name = Tbl_name(); + this.pkey_flds = Pkey_flds(); + this.pkey_flds_len = pkey_flds.length; + this.pkey_names = new String[pkey_flds_len]; + for (int i = 0; i < pkey_flds_len; ++i) + pkey_names[i] = pkey_flds[i].Name(); + } + public abstract byte Tid(); + public abstract String Tbl_name(); + public abstract Dbmeta_fld_itm[] Pkey_flds(); + public int Row_count() {return pkey_list.Len();} + public long Obj_size() {return obj_size;} private long obj_size; + public void On__init(Split_rslt_mgr rslt_mgr, Db_conn wkr_conn) { + this.rslt_mgr = rslt_mgr; + this.wkr_conn = wkr_conn; + Dbmeta_tbl_itm meta_tbl = Dbmeta_tbl_itm.New(tbl_name, Dbmeta_fld_itm.new_int("db_id")); + for (Dbmeta_fld_itm pkey_fld : pkey_flds ) + meta_tbl.Flds().Add(pkey_fld); + wkr_conn.Meta_tbl_remake(meta_tbl); + this.stmt = wkr_conn.Stmt_insert(tbl_name, String_.Ary_add(String_.Ary("db_id"), pkey_names)); + } + public void On__nth__new(int db_id) { + this.db_id = db_id; + this.obj_size = 0; + } + public void On__nth__itm(int size, Object... pkey_objs) { + this.obj_size += size; + rslt_mgr.Db_size_add_(size); + pkey_list.Add(pkey_objs); + } + public void On__nth__rls() { + wkr_conn.Txn_bgn(tbl_name); + int len = pkey_list.Len(); + for (int i = 0; i < len; ++i) { + stmt.Clear().Val_int("db_id", db_id); + Object[] pkey_objs = (Object[])pkey_list.Get_at(i); + for (int j = 0; j < pkey_flds_len; ++j) { + Dbmeta_fld_itm pkey_fld = pkey_flds[j]; + gplx.dbs.stmts.Db_stmt_arg_list.Fill_val(stmt, pkey_fld.Type().Tid_ansi(), pkey_fld.Name(), pkey_objs[j]); + } + stmt.Exec_insert(); + } + wkr_conn.Txn_end(); + pkey_list.Clear(); + } + public void On_term() { + stmt = Db_stmt_.Rls(stmt); + wkr_conn.Meta_idx_create(tbl_name, "pkey", pkey_names); + } +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/rslts/Wkr_stats_itm.java b/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/rslts/Wkr_stats_itm.java new file mode 100644 index 000000000..64dfc1bfc --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/rslts/Wkr_stats_itm.java @@ -0,0 +1,24 @@ +/* +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.addons.bldrs.exports.splits.rslts; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.exports.*; import gplx.xowa.addons.bldrs.exports.splits.*; +public class Wkr_stats_itm { + public Wkr_stats_itm(int id, int count, long size) {this.Id = id; this.Count = count; this.Size = size;} + public final int Id; + public final int Count; + public final long Size; +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/rslts/Wkr_stats_tbl.java b/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/rslts/Wkr_stats_tbl.java new file mode 100644 index 000000000..ebbe85dff --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/rslts/Wkr_stats_tbl.java @@ -0,0 +1,63 @@ +/* +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.addons.bldrs.exports.splits.rslts; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.exports.*; import gplx.xowa.addons.bldrs.exports.splits.*; +import gplx.dbs.*; +public class Wkr_stats_tbl implements Rls_able { + private final String tbl_name; + private final Dbmeta_fld_list flds = new Dbmeta_fld_list(); + private final String fld_wkr_id, fld_wkr_count, fld_wkr_size; + public final Db_conn conn; + public Wkr_stats_tbl(Db_conn conn) { + this.conn = conn; conn.Rls_reg(this); + this.tbl_name = "wkr_stats"; + this.fld_wkr_id = flds.Add_int_pkey("wkr_id"); + this.fld_wkr_count = flds.Add_int("wkr_count"); + this.fld_wkr_size = flds.Add_long("wkr_size"); + } + public void Create_tbl() {conn.Meta_tbl_create(Dbmeta_tbl_itm.New(tbl_name, flds));} + public Db_stmt Insert_stmt() {return conn.Stmt_insert(tbl_name, flds);} + public void Insert(Db_stmt stmt, int wkr_id, int wkr_count, long wkr_size) { + stmt.Clear() + .Val_int(fld_wkr_id , wkr_id) + .Val_int(fld_wkr_count , wkr_count) + .Val_long(fld_wkr_size , wkr_size) + .Exec_insert(); + } + public Wkr_stats_itm[] Select_all() { + List_adp list = List_adp_.New(); + Db_rdr rdr = conn.Stmt_select_all(tbl_name, flds).Exec_select__rls_auto(); + try { + while (rdr.Move_next()) { + Wkr_stats_itm itm = new Wkr_stats_itm(rdr.Read_int(fld_wkr_id), rdr.Read_int(fld_wkr_count), rdr.Read_int(fld_wkr_size)); + list.Add(itm); + } + rdr.Rls(); + } finally {rdr.Rls();} + return (Wkr_stats_itm[])list.To_ary_and_clear(Wkr_stats_itm.class); + } + public Wkr_stats_itm Select_all__summary() { + Db_rdr rdr = conn.Stmt_sql(String_.Format("SELECT Sum({0}) AS {0}, Sum({1}) AS {1} FROM {2}", fld_wkr_count, fld_wkr_size, tbl_name)).Exec_select__rls_auto(); // ANSI.Y + try { + if (rdr.Move_next()) + return new Wkr_stats_itm(-1, rdr.Read_int(fld_wkr_count), rdr.Read_long(fld_wkr_size)); + else + throw Err_.new_wo_type("failed to get sum of wkr_size", "url", conn.Conn_info().Raw()); + } finally {rdr.Rls();} + } + public void Rls() {} +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/srchs/Split_meta_wkr__link.java b/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/srchs/Split_meta_wkr__link.java new file mode 100644 index 000000000..4ac703275 --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/srchs/Split_meta_wkr__link.java @@ -0,0 +1,69 @@ +/* +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.addons.bldrs.exports.splits.srchs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.exports.*; import gplx.xowa.addons.bldrs.exports.splits.*; +import gplx.dbs.*; +import gplx.xowa.addons.bldrs.exports.splits.metas.*; import gplx.xowa.addons.bldrs.exports.splits.rslts.*; +import gplx.xowa.addons.wikis.searchs.*; import gplx.xowa.addons.wikis.searchs.dbs.*; +class Split_meta_wkr__link extends Split_meta_wkr_base { + private final Srch_db_mgr srch_db_mgr; + private Srch_link_tbl tbl; + private Db_stmt stmt; + private final Split_rslt_wkr__link rslt_wkr = new Split_rslt_wkr__link(); + public Split_meta_wkr__link(Split_ctx ctx, Srch_db_mgr srch_db_mgr) { + this.srch_db_mgr = srch_db_mgr; + ctx.Rslt_mgr().Reg_wkr(rslt_wkr); + } + @Override public byte Tid() {return Split_page_list_type_.Tid__srch_link;} + @Override public void On_nth_new(Split_ctx ctx, Db_conn trg_conn) { + this.tbl = new Srch_link_tbl(trg_conn); + Dbmeta_fld_list trg_flds = tbl.Flds().Clone().New_int("trg_db_id"); + trg_conn.Meta_tbl_create(Dbmeta_tbl_itm.New(tbl.Tbl_name(), trg_flds)); + this.stmt = trg_conn.Stmt_insert(tbl.Tbl_name(), trg_flds); + } + @Override public void On_nth_rls(Split_ctx ctx, Db_conn trg_conn) { + this.stmt = Db_stmt_.Rls(stmt); + trg_conn.Meta_idx_create(tbl.Tbl_name(), "blob" , "trg_db_id", "word_id", "page_id"); + } + @Override protected String Load_sql(Db_attach_mgr attach_mgr, int ns_id, int score_bgn, int score_end) { + int trg_db_id = srch_db_mgr.Tbl__link__get_idx(ns_id); + attach_mgr.Conn_others_(new Db_attach_itm("link_db", srch_db_mgr.Tbl__link__get_at(trg_db_id).conn)); + return String_.Concat_lines_nl + ( "SELECT sl.word_id, sl.page_id, sl.link_score, sw.page_id, " + trg_db_id + " AS trg_db_id" + , "FROM search_link sl" + , " JOIN split_search_word sw ON sw.word_id = sl.word_id" + , "WHERE sw.page_score >= {0}" + , "AND sw.page_score < {1}" + , "AND sw.page_ns = {2}" + , "GROUP BY sl.word_id, sl.page_id, sl.link_score" + , "ORDER BY sw.page_id" + ); + } + @Override protected Object Load_itm(Db_rdr rdr) { + Srch_link_row rv = tbl.New_row(rdr); + rv.Trg_db_id = rdr.Read_int("trg_db_id"); + return rv; + } + @Override protected void Save_itm(Split_ctx ctx, Split_rslt_mgr rslt_mgr, Object itm_obj) { + Srch_link_row itm = (Srch_link_row)itm_obj; + stmt.Clear(); + tbl.Fill_for_insert(stmt, itm); + stmt.Val_int("trg_db_id", itm.Trg_db_id); + stmt.Exec_insert(); + rslt_wkr.On__nth__itm(itm.Db_row_size(), itm.Word_id, itm.Page_id); + } +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/srchs/Split_meta_wkr__word.java b/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/srchs/Split_meta_wkr__word.java new file mode 100644 index 000000000..5ead9add2 --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/srchs/Split_meta_wkr__word.java @@ -0,0 +1,52 @@ +/* +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.addons.bldrs.exports.splits.srchs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.exports.*; import gplx.xowa.addons.bldrs.exports.splits.*; +import gplx.dbs.*; +import gplx.xowa.addons.bldrs.exports.splits.metas.*; import gplx.xowa.addons.bldrs.exports.splits.rslts.*; +import gplx.xowa.addons.wikis.searchs.*; import gplx.xowa.addons.wikis.searchs.dbs.*; +class Split_meta_wkr__word extends Split_meta_wkr_base { + private Srch_word_tbl tbl; + private Db_stmt stmt; + private final Split_rslt_wkr__word rslt_wkr = new Split_rslt_wkr__word(); + public Split_meta_wkr__word(Split_ctx ctx) { + ctx.Rslt_mgr().Reg_wkr(rslt_wkr); + } + @Override public byte Tid() {return Split_page_list_type_.Tid__srch_word;} + @Override public void On_nth_new(Split_ctx ctx, Db_conn trg_conn) { + this.tbl = new Srch_word_tbl(trg_conn); + tbl.Create_tbl(); + this.stmt = trg_conn.Stmt_insert(tbl.tbl_name, tbl.flds); + } + @Override public void On_nth_rls(Split_ctx ctx, Db_conn trg_conn) {this.stmt = Db_stmt_.Rls(stmt);} + @Override protected String Load_sql(Db_attach_mgr attach_mgr, int ns_id, int score_bgn, int score_end) { + return String_.Concat_lines_nl + ( "SELECT sw.word_id, sw.word_text, sw.link_count, sw.link_count_score, sw.link_score_min, sw.link_score_max, sw.page_id" + , "FROM split_search_word sw" + , "WHERE sw.page_score >= {0}" + , "AND sw.page_score < {1}" + , "AND sw.page_ns = {2}" + , "ORDER BY page_id" + ); + } + @Override protected Object Load_itm(Db_rdr rdr) {return tbl.New_row(rdr);} + @Override protected void Save_itm(Split_ctx ctx, Split_rslt_mgr rslt_mgr, Object itm_obj) { + Srch_word_row itm = (Srch_word_row)itm_obj; + tbl.Insert_by_itm(stmt, itm); + rslt_wkr.On__nth__itm(itm.Db_row_size(), itm.Id); + } +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/srchs/Split_rslt_wkr__link.java b/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/srchs/Split_rslt_wkr__link.java new file mode 100644 index 000000000..2205eb112 --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/srchs/Split_rslt_wkr__link.java @@ -0,0 +1,27 @@ +/* +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.addons.bldrs.exports.splits.srchs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.exports.*; import gplx.xowa.addons.bldrs.exports.splits.*; +import gplx.dbs.*; +import gplx.xowa.addons.bldrs.exports.splits.rslts.*; +class Split_rslt_wkr__link extends Split_rslt_wkr__objs__base { + @Override public byte Tid() {return Split_rslt_tid_.Tid__srch_link;} + @Override public String Tbl_name() {return "rslt_srch_link";} + @Override public Dbmeta_fld_itm[] Pkey_flds() { + return new Dbmeta_fld_itm[] {Dbmeta_fld_itm.new_int("word_id"), Dbmeta_fld_itm.new_int("page_id")}; + } +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/srchs/Split_rslt_wkr__word.java b/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/srchs/Split_rslt_wkr__word.java new file mode 100644 index 000000000..6b21e798a --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/srchs/Split_rslt_wkr__word.java @@ -0,0 +1,24 @@ +/* +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.addons.bldrs.exports.splits.srchs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.exports.*; import gplx.xowa.addons.bldrs.exports.splits.*; +import gplx.xowa.addons.bldrs.exports.splits.rslts.*; +class Split_rslt_wkr__word extends Split_rslt_wkr__int__base { + @Override public byte Tid() {return Split_rslt_tid_.Tid__srch_word;} + @Override public String Tbl_name() {return "rslt_srch_word";} + @Override public String Pkey_name() {return "word_id";} +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/srchs/Split_srch_init.java b/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/srchs/Split_srch_init.java new file mode 100644 index 000000000..ffee9f626 --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/srchs/Split_srch_init.java @@ -0,0 +1,61 @@ +/* +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.addons.bldrs.exports.splits.srchs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.exports.*; import gplx.xowa.addons.bldrs.exports.splits.*; +import gplx.dbs.*; import gplx.xowa.addons.wikis.searchs.dbs.*; +import gplx.xowa.addons.bldrs.exports.splits.mgrs.*; +class Split_srch_init { + public void Init(Split_ctx ctx, Xow_wiki wiki, Db_conn wkr_conn, Srch_db_mgr srch_db_mgr) { + // create search_word w/ page attributes + if (!(ctx.Cfg().Force_rebuild() || !wkr_conn.Meta_tbl_exists("split_search_word"))) return; + Gfo_log_.Instance.Prog("creating split_search_word"); + wkr_conn.Meta_tbl_remake(Dbmeta_tbl_itm.New("split_search_word" + , Dbmeta_fld_itm.new_int("word_id") + , Dbmeta_fld_itm.new_str("word_text", 255) + , Dbmeta_fld_itm.new_int("link_count") + , Dbmeta_fld_itm.new_int("link_count_score") + , Dbmeta_fld_itm.new_int("link_score_min") + , Dbmeta_fld_itm.new_int("link_score_max") + , Dbmeta_fld_itm.new_int("page_uid") + , Dbmeta_fld_itm.new_int("page_ns") + , Dbmeta_fld_itm.new_int("page_id") + , Dbmeta_fld_itm.new_int("page_score") + )); + + // insert search_word w/ Min(pr.page_uid) + Db_attach_mgr attach_mgr = new Db_attach_mgr(wkr_conn); + Db_conn word_conn = srch_db_mgr.Tbl__word().conn; + int len = srch_db_mgr.Tbl__link__len(); + for (int i = 0; i < len; ++i) { + Db_conn link_conn = srch_db_mgr.Tbl__link__get_at(i).conn; + attach_mgr.Conn_others_(new Db_attach_itm("word_db", word_conn), new Db_attach_itm("link_db", link_conn)); + attach_mgr.Exec_sql(String_.Concat_lines_nl // ANSI.Y + ( "INSERT INTO split_search_word (word_id, word_text, link_count, link_count_score, link_score_min, link_score_max, page_uid, page_ns, page_id, page_score)" + , "SELECT sw.word_id, sw.word_text, sw.link_count, sw.link_count_score, sw.link_score_min, sw.link_score_max, Min(pr.page_uid), -1, -1, -1" + , "FROM search_word sw" + , " JOIN search_link sl ON sw.word_id = sl.word_id" + , " JOIN page_regy pr ON sl.page_id = pr.page_id" + , " LEFT JOIN split_search_word ssw ON ssw.word_id = sw.word_id" + , "WHERE ssw.word_id IS NULL" + , "GROUP BY sw.word_id, sw.word_text, sw.link_count, sw.link_count_score, sw.link_score_min, sw.link_score_max" + )); + } + wkr_conn.Meta_idx_create("split_search_word", "page_id", "page_id"); + + Split_mgr_init.Update_page_cols(wkr_conn, "split_search_word"); + } +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/srchs/Split_wkr__srch.java b/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/srchs/Split_wkr__srch.java new file mode 100644 index 000000000..454723482 --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/srchs/Split_wkr__srch.java @@ -0,0 +1,59 @@ +/* +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.addons.bldrs.exports.splits.srchs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.exports.*; import gplx.xowa.addons.bldrs.exports.splits.*; +import gplx.dbs.*; import gplx.dbs.bulks.*; import gplx.xowa.wikis.data.*; import gplx.xowa.wikis.data.tbls.*; +import gplx.xowa.addons.wikis.searchs.*; import gplx.xowa.addons.wikis.searchs.dbs.*; +import gplx.xowa.addons.bldrs.exports.splits.metas.*; import gplx.xowa.addons.bldrs.exports.splits.rslts.*; +public class Split_wkr__srch implements Split_wkr { + private Srch_db_mgr srch_db_mgr; + private Split_meta_wkr_base[] meta_wkrs; + public void Split__init(Split_ctx ctx, Xow_wiki wiki, Db_conn wkr_conn) { + Srch_search_addon srch_addon = Srch_search_addon.Get(wiki); + this.srch_db_mgr = srch_addon.Db_mgr(); + new Split_srch_init().Init(ctx, wiki, ctx.Wkr_conn(), srch_db_mgr); + this.meta_wkrs = new Split_meta_wkr_base[] + { new Split_meta_wkr__word(ctx) + , new Split_meta_wkr__link(ctx, srch_db_mgr) + }; + } + public void Split__trg__1st__new(Split_ctx ctx, Db_conn trg_conn) { + Db_conn src_conn = srch_db_mgr.Tbl__word().conn; + Db_tbl_copy copy_mgr = new Db_tbl_copy(); + copy_mgr.Copy_many(src_conn, trg_conn, "search_link_reg"); + copy_mgr.Copy_one (src_conn, trg_conn, "xowa_cfg", "xowa_cfg__srch"); + } + public void Split__trg__nth__new(Split_ctx ctx, Db_conn wkr_conn) { + for (Split_meta_wkr_base wkr : meta_wkrs) + wkr.On_nth_new(ctx, wkr_conn); + } + public void Split__trg__nth__rls(Split_ctx ctx, Db_conn trg_conn) { + for (Split_meta_wkr_base wkr : meta_wkrs) + wkr.On_nth_rls(ctx, trg_conn); + } + public void Split__pages_loaded(Split_ctx ctx, int ns_id, int score_bgn, int score_end) { + for (Split_meta_wkr_base wkr : meta_wkrs) + wkr.Load(ctx.Wkr_conn(), ctx.Page_mgr(), ns_id, score_bgn, score_end); + } + public void Split__exec(Split_ctx ctx, Split_rslt_mgr rslt_mgr, Xowd_page_itm page, int page_id) { + Split_page_itm meta_page = ctx.Page_mgr().Get_by_or_null(page_id); if (meta_page == null) return; // NOTE: pages may not have images + for (Split_meta_wkr_base wkr : meta_wkrs) + wkr.Save(ctx, rslt_mgr, meta_page); + } + public void Split__term(Split_ctx ctx) { + } +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/exports/utls/Split_tbl.java b/400_xowa/src/gplx/xowa/addons/bldrs/exports/utls/Split_tbl.java new file mode 100644 index 000000000..a6e7fa80c --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/exports/utls/Split_tbl.java @@ -0,0 +1,122 @@ +/* +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.addons.bldrs.exports.utls; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.exports.*; +import gplx.dbs.*; +public interface Split_tbl { + String Tbl_name(); + boolean Layout_is_lot(); + String[] Fld_pkeys(); + String Fld_blob(); + Dbmeta_fld_list Flds(); + Db_conn Wiki_conn__get_or_new(Xow_wiki wiki, int db_id); +} +class Split_tbl__page implements Split_tbl { + public String Tbl_name() {return "page";} + public boolean Layout_is_lot() {return Bool_.N;} + public String[] Fld_pkeys() {return String_.Ary("page_id");} + public String Fld_blob() {return String_.Empty;} + public Dbmeta_fld_list Flds() {if (flds == null) flds = new gplx.xowa.wikis.data.tbls.Xowd_page_tbl(Db_conn_.Noop, Bool_.N).Flds__all(); return flds;} private Dbmeta_fld_list flds; + public Db_conn Wiki_conn__get_or_new(Xow_wiki wiki, int db_id) {return wiki.Data__core_mgr().Db__core().Conn();} +} +class Split_tbl__fsdb_fil implements Split_tbl { + public String Tbl_name() {return "fsdb_fil";} + public boolean Layout_is_lot() {return Bool_.N;} + public String[] Fld_pkeys() {return String_.Ary("fil_id");} + public String Fld_blob() {return String_.Empty;} + public Dbmeta_fld_list Flds() {if (flds == null) flds = new gplx.fsdb.data.Fsd_fil_tbl(Db_conn_.Noop, Bool_.N, gplx.fsdb.meta.Fsm_mnt_mgr.Mnt_idx_main).flds; return flds;} private Dbmeta_fld_list flds; + public Db_conn Wiki_conn__get_or_new(Xow_wiki wiki, int db_id) {return wiki.File__mnt_mgr().Mnts__get_main().Atr_mgr().Db__core().Conn();} +} +class Split_tbl__fsdb_thm implements Split_tbl { + public String Tbl_name() {return "fsdb_thm";} + public boolean Layout_is_lot() {return Bool_.N;} + public String[] Fld_pkeys() {return String_.Ary("thm_id");} + public String Fld_blob() {return String_.Empty;} + public Dbmeta_fld_list Flds() {if (flds == null) flds = new gplx.fsdb.data.Fsd_thm_tbl(Db_conn_.Noop, Bool_.N, gplx.fsdb.meta.Fsm_mnt_mgr.Mnt_idx_main, Bool_.Y).flds; return flds;} private Dbmeta_fld_list flds; + public Db_conn Wiki_conn__get_or_new(Xow_wiki wiki, int db_id) {return wiki.File__mnt_mgr().Mnts__get_main().Atr_mgr().Db__core().Conn();} +} +class Split_tbl__fsdb_reg implements Split_tbl { + public String Tbl_name() {return "orig_reg";} + public boolean Layout_is_lot() {return Bool_.N;} + public String[] Fld_pkeys() {return String_.Ary("orig_ttl");} + public String Fld_blob() {return String_.Empty;} + public Dbmeta_fld_list Flds() {if (flds == null) flds = new gplx.xowa.files.origs.Xof_orig_tbl(Db_conn_.Noop, Bool_.N).flds; return flds;} private Dbmeta_fld_list flds; + public Db_conn Wiki_conn__get_or_new(Xow_wiki wiki, int db_id) {return wiki.File__mnt_mgr().Mnts__get_main().Atr_mgr().Db__core().Conn();} +} +class Split_tbl__srch_word implements Split_tbl { + public String Tbl_name() {return "search_word";} + public boolean Layout_is_lot() {return Bool_.N;} + public String[] Fld_pkeys() {return String_.Ary("word_id");} + public String Fld_blob() {return String_.Empty;} + public Dbmeta_fld_list Flds() {if (flds == null) flds = new gplx.xowa.addons.wikis.searchs.dbs.Srch_word_tbl(Db_conn_.Noop).flds; return flds;} private Dbmeta_fld_list flds; + public Db_conn Wiki_conn__get_or_new(Xow_wiki wiki, int db_id) {return gplx.xowa.addons.wikis.searchs.Srch_search_addon.Get(wiki).Db_mgr().Tbl__word().conn;} +} +class Split_tbl__srch_link implements Split_tbl { + public String Tbl_name() {return "search_link";} + public boolean Layout_is_lot() {return Bool_.N;} + public String[] Fld_pkeys() {return String_.Ary("word_id", "page_id");} + public String Fld_blob() {return String_.Empty;} + public Dbmeta_fld_list Flds() {if (flds == null) flds = new gplx.xowa.addons.wikis.searchs.dbs.Srch_link_tbl(Db_conn_.Noop).Flds(); return flds;} private Dbmeta_fld_list flds; + public Db_conn Wiki_conn__get_or_new(Xow_wiki wiki, int db_id) {return gplx.xowa.addons.wikis.searchs.Srch_search_addon.Get(wiki).Db_mgr().Tbl__link__get_at(db_id).conn;} +} +class Split_tbl__rndm_seq implements Split_tbl { + public String Tbl_name() {return "rndm_seq";} + public boolean Layout_is_lot() {return Bool_.N;} + public String[] Fld_pkeys() {return String_.Ary("mgr_idx", "rng_idx", "seq_idx");} + public String Fld_blob() {return String_.Empty;} + public Dbmeta_fld_list Flds() {if (flds == null) flds = new gplx.xowa.addons.wikis.pages.randoms.dbs.Rndm_seq_tbl(Db_conn_.Noop).Flds(); return flds;} private Dbmeta_fld_list flds; + public Db_conn Wiki_conn__get_or_new(Xow_wiki wiki, int db_id) {return gplx.xowa.addons.wikis.pages.randoms.Rndm_addon.Get(wiki).Mgr().Db_mgr().Tbl__seq().Conn();} +} +class Split_tbl__html implements Split_tbl { + public String Tbl_name() {return "html";} + public boolean Layout_is_lot() {return Bool_.Y;} + public String[] Fld_pkeys() {return String_.Ary("page_id");} + public String Fld_blob() {return "body";} + public Dbmeta_fld_list Flds() {if (flds == null) flds = new gplx.xowa.htmls.core.dbs.Xoh_page_tbl(Db_conn_.Noop).Flds(); return flds;} private Dbmeta_fld_list flds; + public Db_conn Wiki_conn__get_or_new(Xow_wiki wiki, int db_id) { + if (db_id == -1) // HACK: return core_conn just so that bin_tbl below can be created + return wiki.Data__core_mgr().Db__core().Conn(); + else { + gplx.xowa.wikis.data.Xow_db_file db_file = wiki.Data__core_mgr().Dbs__get_by_id_or_null(db_id); + if (db_file == null) { + db_file = wiki.Data__core_mgr().Dbs__make_by_id(db_id, gplx.xowa.wikis.data.Xow_db_file_.Tid__html_data, "0", 0, "-html-db." + Int_.To_str_pad_bgn_zero(db_id, 4) + ".xowa"); + db_file.Tbl__html().Create_tbl(); + } + return db_file.Conn(); + } + } +} +class Split_tbl__fsdb_bin implements Split_tbl { + public String Tbl_name() {return "fsdb_bin";} + public boolean Layout_is_lot() {return Bool_.Y;} + public String[] Fld_pkeys() {return String_.Ary("bin_owner_id");} + public String Fld_blob() {return "bin_data";} + public Dbmeta_fld_list Flds() {if (flds == null) flds = new gplx.fsdb.data.Fsd_bin_tbl(Db_conn_.Noop, Bool_.N).Flds(); return flds;} private Dbmeta_fld_list flds; + public Db_conn Wiki_conn__get_or_new(Xow_wiki wiki, int db_id) { + if (db_id == -1) // HACK: return core_conn just so that bin_tbl below can be created + return wiki.Data__core_mgr().Db__core().Conn(); + else { + gplx.fsdb.meta.Fsm_bin_mgr bin_mgr = wiki.File__mnt_mgr().Mnts__get_main().Bin_mgr(); + gplx.fsdb.meta.Fsm_bin_fil db_file = bin_mgr.Dbs__get_by_or_null(db_id); // try to get existing + if (db_file == null) { // none exists; create new + db_file = bin_mgr.Dbs__make(db_id, wiki.Domain_str() + "-file-db." + Int_.To_str_pad_bgn_zero(db_id, 4) + ".xowa"); + new gplx.fsdb.data.Fsd_bin_tbl(db_file.Conn(), Bool_.N).Create_tbl(); + } + return db_file.Conn(); + } + } +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/exports/utls/Split_tbl_.java b/400_xowa/src/gplx/xowa/addons/bldrs/exports/utls/Split_tbl_.java new file mode 100644 index 000000000..d80748fa8 --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/exports/utls/Split_tbl_.java @@ -0,0 +1,47 @@ +/* +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.addons.bldrs.exports.utls; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.exports.*; +import gplx.dbs.*; +public class Split_tbl_ { + public static final Split_tbl + Page = new Split_tbl__page() + , Html = new Split_tbl__html() + , Srch_word = new Split_tbl__srch_word() + , Srch_link = new Split_tbl__srch_link() + , Fsdb_fil = new Split_tbl__fsdb_fil() + , Fsdb_thm = new Split_tbl__fsdb_thm() + , Fsdb_org = new Split_tbl__fsdb_reg() + , Fsdb_bin = new Split_tbl__fsdb_bin() + ; + + public static boolean Tbl_has_blob(Split_tbl tbl) {return String_.Len_gt_0(tbl.Fld_blob());} + public static void Flds__add_blob_len(Dbmeta_fld_list flds) { + flds.Insert(flds.Len() - 1, Dbmeta_fld_itm.new_int("blob_len")); // add "blob_len" in penultimate pos; note that last fld is "blob_fld" + } + public static void Bld_insert_by_select(Bry_bfr bfr, String tbl_name, Dbmeta_fld_list flds) { + int flds_len = flds.Len(); + for (int i = 0; i < flds_len; ++i) { + if (i != 0) bfr.Add_str_a7(","); + Dbmeta_fld_itm fld = flds.Get_at(i); + bfr.Add_str_a7(fld.Name()); + } + byte[] flds_bry = bfr.To_bry_and_clear(); + bfr.Add_str_u8_fmt("INSERT INTO {0}\n({1})\n", tbl_name, flds_bry); // ANSI.Y + bfr.Add_str_u8_fmt("SELECT {0}\nFROM {1}\n", flds_bry, tbl_name); + } +} diff --git a/400_xowa/src/gplx/xowa/addons/builds/files/Xoax_builds_files_addon.java b/400_xowa/src/gplx/xowa/addons/bldrs/files/Xoax_builds_files_addon.java similarity index 80% rename from 400_xowa/src/gplx/xowa/addons/builds/files/Xoax_builds_files_addon.java rename to 400_xowa/src/gplx/xowa/addons/bldrs/files/Xoax_builds_files_addon.java index be4222bb4..5f706663e 100644 --- a/400_xowa/src/gplx/xowa/addons/builds/files/Xoax_builds_files_addon.java +++ b/400_xowa/src/gplx/xowa/addons/bldrs/files/Xoax_builds_files_addon.java @@ -15,11 +15,11 @@ 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.addons.builds.files; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.builds.*; +package gplx.xowa.addons.bldrs.files; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.bldrs.wkrs.*; -import gplx.xowa.addons.builds.files.cmds.*; +import gplx.xowa.addons.bldrs.files.cmds.*; public class Xoax_builds_files_addon implements Xoax_addon_itm, Xoax_addon_itm__bldr { - public Xob_cmd[] Cmds_ary() { + public Xob_cmd[] Bldr_cmds() { return new Xob_cmd[] { Xobldr__lnki_temp__create.Prototype , Xobldr__lnki_regy__create.Prototype @@ -41,6 +41,5 @@ public class Xoax_builds_files_addon implements Xoax_addon_itm, Xoax_addon_itm__ }; } - public static final byte[] ADDON_KEY = Bry_.new_a7("xowa.builds.images"); - public byte[] Addon__key() {return ADDON_KEY;} + public String Addon__key() {return "xowa.builds.images";} } diff --git a/400_xowa/src/gplx/xowa/addons/builds/files/cmds/Xobldr__fsdb_db__create_data.java b/400_xowa/src/gplx/xowa/addons/bldrs/files/cmds/Xobldr__fsdb_db__create_data.java similarity index 95% rename from 400_xowa/src/gplx/xowa/addons/builds/files/cmds/Xobldr__fsdb_db__create_data.java rename to 400_xowa/src/gplx/xowa/addons/bldrs/files/cmds/Xobldr__fsdb_db__create_data.java index a474e0295..f6dcc10b5 100644 --- a/400_xowa/src/gplx/xowa/addons/builds/files/cmds/Xobldr__fsdb_db__create_data.java +++ b/400_xowa/src/gplx/xowa/addons/bldrs/files/cmds/Xobldr__fsdb_db__create_data.java @@ -15,14 +15,14 @@ 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.addons.builds.files.cmds; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.builds.*; import gplx.xowa.addons.builds.files.*; -import gplx.core.stores.*; import gplx.core.envs.*; +package gplx.xowa.addons.bldrs.files.cmds; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.files.*; +import gplx.core.stores.*; import gplx.core.envs.*; import gplx.core.ios.streams.*; import gplx.dbs.*; import gplx.dbs.cfgs.*; import gplx.dbs.engines.sqlite.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wkrs.*; import gplx.xowa.wikis.domains.*; import gplx.xowa.wikis.data.*; import gplx.xowa.wikis.dbs.*; import gplx.fsdb.*; import gplx.core.ios.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.files.*; import gplx.xowa.files.repos.*; import gplx.xowa.files.bins.*; import gplx.xowa.files.fsdb.*; import gplx.fsdb.data.*; import gplx.fsdb.meta.*; -import gplx.xowa.addons.builds.files.dbs.*; import gplx.xowa.addons.builds.files.utls.*; +import gplx.xowa.addons.bldrs.files.dbs.*; import gplx.xowa.addons.bldrs.files.utls.*; public class Xobldr__fsdb_db__create_data extends Xob_cmd__base implements Xob_cmd { private Db_conn bldr_conn; private Db_cfg_tbl bldr_cfg_tbl; private Xof_bin_mgr src_bin_mgr; private Xof_bin_wkr__fsdb_sql src_fsdb_wkr; private boolean src_bin_mgr__cache_enabled = Bool_.N; private String src_bin_mgr__fsdb_version; private String[] src_bin_mgr__fsdb_skip_wkrs; private boolean src_bin_mgr__wmf_enabled; @@ -92,7 +92,7 @@ public class Xobldr__fsdb_db__create_data extends Xob_cmd__base implements Xob_c int total_pending = Xob_xfer_regy_tbl.Select_total_pending(bldr_conn); // if (total_pending > 250000 && src_bin_mgr__fsdb_version == null) usr_dlg.Note_many("", "", "total pending: ~{0}", total_pending); - List_adp list = List_adp_.new_(); + List_adp list = List_adp_.New(); boolean loop = true; while (loop) { byte rslt = Select_fsdb_itms(list); @@ -250,7 +250,7 @@ public class Xobldr__fsdb_db__create_data extends Xob_cmd__base implements Xob_c if (!trg_mnt_itm.Db_mgr().File__solo_file()) { Fsdb_db_file trg_bin_db = trg_mnt_itm.Db_mgr().File__bin_file__at(trg_mnt_itm.Id(), trg_bin_fil.Id(), new_bin_db_name); if (!bin_db_mgr.Schema_is_1()) - Fsdb_db_mgr__v2_bldr.Make_cfg_data(wiki, trg_atr_fil.Url_rel(), trg_bin_db, Xowd_db_file_.Tid_file_data, trg_bin_fil.Id() + List_adp_.Base1); + Fsdb_db_mgr__v2_bldr.Make_cfg_data(wiki, trg_atr_fil.Url_rel(), trg_bin_db, Xow_db_file_.Tid__file_data, trg_bin_fil.Id() + List_adp_.Base1); } } else { // nth available; use it @@ -298,7 +298,7 @@ public class Xobldr__fsdb_db__create_data extends Xob_cmd__base implements Xob_c int time_elapsed = Env_.TickCount_elapsed_in_sec(time_bgn); usr_dlg.Prog_many("", "", "prog: num=~{0} err=~{1} time=~{2} rate=~{3} page=~{4} lnki=~{5} ttl=~{6}", exec_count, exec_fail, time_elapsed, Math_.Div_safe_as_int(exec_count, time_elapsed), page_id_val, lnki_id_val, itm.Orig_ttl()); } - private void Delete_files() {}// TODO: purge /xowa/file/ dir to free up hard disk space + private void Delete_files() {}// TODO_OLD: purge /xowa/file/ dir to free up hard disk space @Override public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_tier_id_bmk_)) tier_id_bmk = m.ReadInt("v"); else if (ctx.Match(k, Invk_page_id_bmk_)) page_id_bmk = m.ReadInt("v"); @@ -321,7 +321,7 @@ public class Xobldr__fsdb_db__create_data extends Xob_cmd__base implements Xob_c else if (ctx.Match(k, Invk_poll_mgr)) return poll_mgr; else if (ctx.Match(k, Invk_download_keep_tier_ids)) download_keep_tier_ids = Int_.Ary_parse(m.ReadStr("v"), "|"); else if (ctx.Match(k, Invk_download_size_max)) download_size_max = Io_size_.To_long_by_msg_mb(m, download_size_max); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String diff --git a/400_xowa/src/gplx/xowa/addons/builds/files/cmds/Xobldr__fsdb_db__create_orig.java b/400_xowa/src/gplx/xowa/addons/bldrs/files/cmds/Xobldr__fsdb_db__create_orig.java similarity index 95% rename from 400_xowa/src/gplx/xowa/addons/builds/files/cmds/Xobldr__fsdb_db__create_orig.java rename to 400_xowa/src/gplx/xowa/addons/bldrs/files/cmds/Xobldr__fsdb_db__create_orig.java index 9fd95cb4e..15519fad3 100644 --- a/400_xowa/src/gplx/xowa/addons/builds/files/cmds/Xobldr__fsdb_db__create_orig.java +++ b/400_xowa/src/gplx/xowa/addons/bldrs/files/cmds/Xobldr__fsdb_db__create_orig.java @@ -15,7 +15,7 @@ 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.addons.builds.files.cmds; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.builds.*; import gplx.xowa.addons.builds.files.*; +package gplx.xowa.addons.bldrs.files.cmds; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.files.*; import gplx.dbs.*; import gplx.dbs.engines.sqlite.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wkrs.*; import gplx.xowa.files.*; import gplx.fsdb.*; diff --git a/400_xowa/src/gplx/xowa/addons/builds/files/cmds/Xobldr__image__create.java b/400_xowa/src/gplx/xowa/addons/bldrs/files/cmds/Xobldr__image__create.java similarity index 94% rename from 400_xowa/src/gplx/xowa/addons/builds/files/cmds/Xobldr__image__create.java rename to 400_xowa/src/gplx/xowa/addons/bldrs/files/cmds/Xobldr__image__create.java index 6c2247a3f..e23849c74 100644 --- a/400_xowa/src/gplx/xowa/addons/builds/files/cmds/Xobldr__image__create.java +++ b/400_xowa/src/gplx/xowa/addons/bldrs/files/cmds/Xobldr__image__create.java @@ -15,11 +15,11 @@ 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.addons.builds.files.cmds; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.builds.*; import gplx.xowa.addons.builds.files.*; +package gplx.xowa.addons.bldrs.files.cmds; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.files.*; import gplx.dbs.*; import gplx.core.ios.*; import gplx.xowa.files.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wkrs.*; import gplx.xowa.bldrs.sqls.*; -import gplx.xowa.addons.builds.files.dbs.*; -public class Xobldr__image__create extends Xob_itm_dump_base implements Xob_cmd, GfoInvkAble, Sql_file_parser_cmd { +import gplx.xowa.addons.bldrs.files.dbs.*; +public class Xobldr__image__create extends Xob_itm_dump_base implements Xob_cmd, Gfo_invk, Sql_file_parser_cmd { private Db_conn conn = null; private Db_stmt stmt = null; private Xob_image_tbl tbl_image = new Xob_image_tbl(); private byte[] cur_ttl, cur_media_type, cur_minor_mime, cur_timestamp; private int cur_size, cur_width, cur_height, cur_bits, cur_ext_id; diff --git a/400_xowa/src/gplx/xowa/addons/builds/files/cmds/Xobldr__image__create_tst.java b/400_xowa/src/gplx/xowa/addons/bldrs/files/cmds/Xobldr__image__create_tst.java similarity index 93% rename from 400_xowa/src/gplx/xowa/addons/builds/files/cmds/Xobldr__image__create_tst.java rename to 400_xowa/src/gplx/xowa/addons/bldrs/files/cmds/Xobldr__image__create_tst.java index 5309a56fa..b03f7bf2f 100644 --- a/400_xowa/src/gplx/xowa/addons/builds/files/cmds/Xobldr__image__create_tst.java +++ b/400_xowa/src/gplx/xowa/addons/bldrs/files/cmds/Xobldr__image__create_tst.java @@ -15,7 +15,7 @@ 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.addons.builds.files.cmds; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.builds.*; import gplx.xowa.addons.builds.files.*; +package gplx.xowa.addons.bldrs.files.cmds; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.files.*; import org.junit.*; import gplx.core.ios.*; import gplx.xowa.files.*; public class Xobldr__image__create_tst { private Xobldr__image__create_fxt fxt = new Xobldr__image__create_fxt(); diff --git a/400_xowa/src/gplx/xowa/addons/builds/files/cmds/Xobldr__lnki_regy__create.java b/400_xowa/src/gplx/xowa/addons/bldrs/files/cmds/Xobldr__lnki_regy__create.java similarity index 85% rename from 400_xowa/src/gplx/xowa/addons/builds/files/cmds/Xobldr__lnki_regy__create.java rename to 400_xowa/src/gplx/xowa/addons/bldrs/files/cmds/Xobldr__lnki_regy__create.java index 7164e2697..ab04a386b 100644 --- a/400_xowa/src/gplx/xowa/addons/builds/files/cmds/Xobldr__lnki_regy__create.java +++ b/400_xowa/src/gplx/xowa/addons/bldrs/files/cmds/Xobldr__lnki_regy__create.java @@ -15,8 +15,8 @@ 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.addons.builds.files.cmds; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.builds.*; import gplx.xowa.addons.builds.files.*; -import gplx.dbs.*; import gplx.xowa.addons.builds.files.dbs.*; +package gplx.xowa.addons.bldrs.files.cmds; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.files.*; +import gplx.dbs.*; import gplx.xowa.addons.bldrs.files.dbs.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wkrs.*; public class Xobldr__lnki_regy__create extends Xob_cmd__base implements Xob_cmd { public Xobldr__lnki_regy__create(Xob_bldr bldr, Xowe_wiki wiki) {super(bldr, wiki);} diff --git a/400_xowa/src/gplx/xowa/addons/builds/files/cmds/Xobldr__lnki_temp__create.java b/400_xowa/src/gplx/xowa/addons/bldrs/files/cmds/Xobldr__lnki_temp__create.java similarity index 96% rename from 400_xowa/src/gplx/xowa/addons/builds/files/cmds/Xobldr__lnki_temp__create.java rename to 400_xowa/src/gplx/xowa/addons/bldrs/files/cmds/Xobldr__lnki_temp__create.java index 518fc69cf..63ec07ff3 100644 --- a/400_xowa/src/gplx/xowa/addons/builds/files/cmds/Xobldr__lnki_temp__create.java +++ b/400_xowa/src/gplx/xowa/addons/bldrs/files/cmds/Xobldr__lnki_temp__create.java @@ -15,7 +15,7 @@ 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.addons.builds.files.cmds; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.builds.*; import gplx.xowa.addons.builds.files.*; +package gplx.xowa.addons.bldrs.files.cmds; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.files.*; import gplx.dbs.*; import gplx.dbs.cfgs.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.wikis.pages.*; import gplx.xowa.files.*; import gplx.xowa.wikis.nss.*; @@ -26,7 +26,7 @@ import gplx.fsdb.meta.*; import gplx.xowa.files.fsdb.*; import gplx.fsdb.*; import gplx.xowa.langs.vnts.*; import gplx.xowa.parsers.vnts.*; import gplx.xowa.parsers.lnkis.files.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*; import gplx.xowa.bldrs.wkrs.*; -import gplx.xowa.addons.builds.files.dbs.*; +import gplx.xowa.addons.bldrs.files.dbs.*; public class Xobldr__lnki_temp__create extends Xob_dump_mgr_base implements gplx.xowa.parsers.lnkis.files.Xop_file_logger { private Xob_lnki_temp_tbl tbl; private boolean wdata_enabled = true, xtn_ref_enabled = true, gen_html, gen_hdump; private Xop_log_invoke_wkr invoke_wkr; private Xop_log_property_wkr property_wkr; diff --git a/400_xowa/src/gplx/xowa/addons/builds/files/cmds/Xobldr__lnki_temp__create_.java b/400_xowa/src/gplx/xowa/addons/bldrs/files/cmds/Xobldr__lnki_temp__create_.java similarity index 88% rename from 400_xowa/src/gplx/xowa/addons/builds/files/cmds/Xobldr__lnki_temp__create_.java rename to 400_xowa/src/gplx/xowa/addons/bldrs/files/cmds/Xobldr__lnki_temp__create_.java index 21ee97cee..10f72e7f2 100644 --- a/400_xowa/src/gplx/xowa/addons/builds/files/cmds/Xobldr__lnki_temp__create_.java +++ b/400_xowa/src/gplx/xowa/addons/bldrs/files/cmds/Xobldr__lnki_temp__create_.java @@ -15,7 +15,7 @@ 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.addons.builds.files.cmds; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.builds.*; import gplx.xowa.addons.builds.files.*; +package gplx.xowa.addons.bldrs.files.cmds; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.files.*; import gplx.xowa.wikis.nss.*; class Xobldr__lnki_temp__create_ { public static int[] Ns_ids_by_aliases(Xowe_wiki wiki, String[] aliases) { @@ -31,7 +31,7 @@ class Xobldr__lnki_temp__create_ { return rv; } private static int[] Ids_by_aliases(Xow_ns_mgr ns_mgr, String[] aliases) { - List_adp list = List_adp_.new_(); + List_adp list = List_adp_.New(); int len = aliases.length; for (int i = 0; i < len; i++) { String alias = aliases[i]; diff --git a/400_xowa/src/gplx/xowa/addons/builds/files/cmds/Xobldr__lnki_temp__create__tst.java b/400_xowa/src/gplx/xowa/addons/bldrs/files/cmds/Xobldr__lnki_temp__create__tst.java similarity index 89% rename from 400_xowa/src/gplx/xowa/addons/builds/files/cmds/Xobldr__lnki_temp__create__tst.java rename to 400_xowa/src/gplx/xowa/addons/bldrs/files/cmds/Xobldr__lnki_temp__create__tst.java index b6adb771b..beaf75816 100644 --- a/400_xowa/src/gplx/xowa/addons/builds/files/cmds/Xobldr__lnki_temp__create__tst.java +++ b/400_xowa/src/gplx/xowa/addons/bldrs/files/cmds/Xobldr__lnki_temp__create__tst.java @@ -15,7 +15,7 @@ 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.addons.builds.files.cmds; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.builds.*; import gplx.xowa.addons.builds.files.*; +package gplx.xowa.addons.bldrs.files.cmds; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.files.*; import org.junit.*; public class Xobldr__lnki_temp__create__tst { private Xobldr__lnki_temp__create__fxt fxt = new Xobldr__lnki_temp__create__fxt(); diff --git a/400_xowa/src/gplx/xowa/addons/builds/files/cmds/Xobldr__orig_regy__create.java b/400_xowa/src/gplx/xowa/addons/bldrs/files/cmds/Xobldr__orig_regy__create.java similarity index 89% rename from 400_xowa/src/gplx/xowa/addons/builds/files/cmds/Xobldr__orig_regy__create.java rename to 400_xowa/src/gplx/xowa/addons/bldrs/files/cmds/Xobldr__orig_regy__create.java index 6f5e367a6..2e381e9c7 100644 --- a/400_xowa/src/gplx/xowa/addons/builds/files/cmds/Xobldr__orig_regy__create.java +++ b/400_xowa/src/gplx/xowa/addons/bldrs/files/cmds/Xobldr__orig_regy__create.java @@ -15,8 +15,8 @@ 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.addons.builds.files.cmds; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.builds.*; import gplx.xowa.addons.builds.files.*; -import gplx.dbs.*; import gplx.xowa.addons.builds.files.dbs.*; +package gplx.xowa.addons.bldrs.files.cmds; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.files.*; +import gplx.dbs.*; import gplx.xowa.addons.bldrs.files.dbs.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wkrs.*; import gplx.xowa.wikis.domains.*; public class Xobldr__orig_regy__create extends Xob_cmd__base { diff --git a/400_xowa/src/gplx/xowa/addons/builds/files/cmds/Xobldr__page_file_map__create.java b/400_xowa/src/gplx/xowa/addons/bldrs/files/cmds/Xobldr__page_file_map__create.java similarity index 94% rename from 400_xowa/src/gplx/xowa/addons/builds/files/cmds/Xobldr__page_file_map__create.java rename to 400_xowa/src/gplx/xowa/addons/bldrs/files/cmds/Xobldr__page_file_map__create.java index 2992886f7..d8e1de95e 100644 --- a/400_xowa/src/gplx/xowa/addons/builds/files/cmds/Xobldr__page_file_map__create.java +++ b/400_xowa/src/gplx/xowa/addons/bldrs/files/cmds/Xobldr__page_file_map__create.java @@ -15,8 +15,8 @@ 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.addons.builds.files.cmds; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.builds.*; import gplx.xowa.addons.builds.files.*; -import gplx.dbs.*; import gplx.xowa.addons.builds.files.dbs.*; +package gplx.xowa.addons.bldrs.files.cmds; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.files.*; +import gplx.dbs.*; import gplx.xowa.addons.bldrs.files.dbs.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wkrs.*; public class Xobldr__page_file_map__create extends Xob_cmd__base { private Db_conn conn; diff --git a/400_xowa/src/gplx/xowa/addons/builds/files/cmds/Xobldr__page_regy__create.java b/400_xowa/src/gplx/xowa/addons/bldrs/files/cmds/Xobldr__page_regy__create.java similarity index 89% rename from 400_xowa/src/gplx/xowa/addons/builds/files/cmds/Xobldr__page_regy__create.java rename to 400_xowa/src/gplx/xowa/addons/bldrs/files/cmds/Xobldr__page_regy__create.java index 1b7f4a1b9..320e53f4f 100644 --- a/400_xowa/src/gplx/xowa/addons/builds/files/cmds/Xobldr__page_regy__create.java +++ b/400_xowa/src/gplx/xowa/addons/bldrs/files/cmds/Xobldr__page_regy__create.java @@ -15,8 +15,8 @@ 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.addons.builds.files.cmds; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.builds.*; import gplx.xowa.addons.builds.files.*; -import gplx.dbs.*; import gplx.dbs.engines.sqlite.*; import gplx.xowa.addons.builds.files.dbs.*; +package gplx.xowa.addons.bldrs.files.cmds; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.files.*; +import gplx.dbs.*; import gplx.dbs.engines.sqlite.*; import gplx.xowa.addons.bldrs.files.dbs.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wkrs.*; import gplx.xowa.wikis.domains.*; import gplx.xowa.files.repos.*; public class Xobldr__page_regy__create extends Xob_cmd__base { @@ -41,7 +41,7 @@ public class Xobldr__page_regy__create extends Xob_cmd__base { } @Override public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_build_commons_)) build_commons = m.ReadYn("v"); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String Invk_build_commons_ = "build_commons_"; diff --git a/400_xowa/src/gplx/xowa/addons/builds/files/cmds/Xobldr__redirect__create.java b/400_xowa/src/gplx/xowa/addons/bldrs/files/cmds/Xobldr__redirect__create.java similarity index 92% rename from 400_xowa/src/gplx/xowa/addons/builds/files/cmds/Xobldr__redirect__create.java rename to 400_xowa/src/gplx/xowa/addons/bldrs/files/cmds/Xobldr__redirect__create.java index c8c80932d..1335052d1 100644 --- a/400_xowa/src/gplx/xowa/addons/builds/files/cmds/Xobldr__redirect__create.java +++ b/400_xowa/src/gplx/xowa/addons/bldrs/files/cmds/Xobldr__redirect__create.java @@ -15,13 +15,13 @@ 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.addons.builds.files.cmds; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.builds.*; import gplx.xowa.addons.builds.files.*; +package gplx.xowa.addons.bldrs.files.cmds; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.files.*; import gplx.dbs.*; import gplx.dbs.cfgs.*; import gplx.xowa.wikis.dbs.*; import gplx.xowa.wikis.data.tbls.*; import gplx.langs.htmls.encoders.*; import gplx.xowa.wikis.nss.*; import gplx.xowa.parsers.utils.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*; import gplx.xowa.bldrs.wkrs.*; -import gplx.xowa.addons.builds.files.dbs.*; +import gplx.xowa.addons.bldrs.files.dbs.*; public class Xobldr__redirect__create extends Xob_dump_mgr_base { private Db_conn conn; private Xob_redirect_tbl redirect_tbl; private Xodb_mgr_sql db_mgr; private Xop_redirect_mgr redirect_mgr; private Gfo_url_encoder encoder; diff --git a/400_xowa/src/gplx/xowa/addons/builds/files/cmds/Xobldr__text_db__drop_page.java b/400_xowa/src/gplx/xowa/addons/bldrs/files/cmds/Xobldr__text_db__drop_page.java similarity index 78% rename from 400_xowa/src/gplx/xowa/addons/builds/files/cmds/Xobldr__text_db__drop_page.java rename to 400_xowa/src/gplx/xowa/addons/bldrs/files/cmds/Xobldr__text_db__drop_page.java index 41405cd31..55b8f526f 100644 --- a/400_xowa/src/gplx/xowa/addons/builds/files/cmds/Xobldr__text_db__drop_page.java +++ b/400_xowa/src/gplx/xowa/addons/bldrs/files/cmds/Xobldr__text_db__drop_page.java @@ -15,22 +15,22 @@ 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.addons.builds.files.cmds; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.builds.*; import gplx.xowa.addons.builds.files.*; +package gplx.xowa.addons.bldrs.files.cmds; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.files.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wkrs.*; import gplx.xowa.wikis.data.*; import gplx.dbs.*; import gplx.dbs.engines.sqlite.*; import gplx.xowa.wikis.dbs.*; -import gplx.xowa.addons.builds.files.dbs.*; +import gplx.xowa.addons.bldrs.files.dbs.*; public class Xobldr__text_db__drop_page extends Xob_cmd__base { public Xobldr__text_db__drop_page(Xob_bldr bldr, Xowe_wiki wiki) {super(bldr, wiki);} @Override public void Cmd_run() { wiki.Init_assert(); - Xowd_db_mgr db_mgr = wiki.Data__core_mgr(); + Xow_db_mgr db_mgr = wiki.Data__core_mgr(); int len = db_mgr.Dbs__len(); for (int i = 0; i < len; i++) { - Xowd_db_file db_file = db_mgr.Dbs__get_at(i); + Xow_db_file db_file = db_mgr.Dbs__get_at(i); switch (db_file.Tid()) { - case Xowd_db_file_.Tid_wiki_solo: - case Xowd_db_file_.Tid_text_solo: - case Xowd_db_file_.Tid_text: + case Xow_db_file_.Tid__wiki_solo: + case Xow_db_file_.Tid__text_solo: + case Xow_db_file_.Tid__text: db_file.Conn().Meta_tbl_delete(Xob_page_dump_tbl.Tbl_name); break; } diff --git a/400_xowa/src/gplx/xowa/addons/builds/files/cmds/Xobldr__text_db__make_page.java b/400_xowa/src/gplx/xowa/addons/bldrs/files/cmds/Xobldr__text_db__make_page.java similarity index 78% rename from 400_xowa/src/gplx/xowa/addons/builds/files/cmds/Xobldr__text_db__make_page.java rename to 400_xowa/src/gplx/xowa/addons/bldrs/files/cmds/Xobldr__text_db__make_page.java index 93575859f..d7d025638 100644 --- a/400_xowa/src/gplx/xowa/addons/builds/files/cmds/Xobldr__text_db__make_page.java +++ b/400_xowa/src/gplx/xowa/addons/bldrs/files/cmds/Xobldr__text_db__make_page.java @@ -15,23 +15,23 @@ 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.addons.builds.files.cmds; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.builds.*; import gplx.xowa.addons.builds.files.*; +package gplx.xowa.addons.bldrs.files.cmds; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.files.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wkrs.*; import gplx.xowa.wikis.data.*; import gplx.dbs.*; import gplx.dbs.engines.sqlite.*; import gplx.xowa.wikis.dbs.*; -import gplx.xowa.addons.builds.files.dbs.*; +import gplx.xowa.addons.bldrs.files.dbs.*; public class Xobldr__text_db__make_page extends Xob_cmd__base { public Xobldr__text_db__make_page(Xob_bldr bldr, Xowe_wiki wiki) {super(bldr, wiki);} @Override public void Cmd_run() { wiki.Init_assert(); - Xowd_db_mgr db_mgr = wiki.Data__core_mgr(); + Xow_db_mgr db_mgr = wiki.Data__core_mgr(); Io_url page_db_url = db_mgr.Db__core().Url(); int len = db_mgr.Dbs__len(); for (int i = 0; i < len; i++) { - Xowd_db_file db_file = db_mgr.Dbs__get_at(i); + Xow_db_file db_file = db_mgr.Dbs__get_at(i); switch (db_file.Tid()) { - case Xowd_db_file_.Tid_wiki_solo: - case Xowd_db_file_.Tid_text_solo: - case Xowd_db_file_.Tid_text: + case Xow_db_file_.Tid__wiki_solo: + case Xow_db_file_.Tid__text_solo: + case Xow_db_file_.Tid__text: Xob_page_dump_tbl tbl = new Xob_page_dump_tbl(db_file.Conn()); tbl.Create_data(page_db_url, db_file.Id()); break; diff --git a/400_xowa/src/gplx/xowa/addons/builds/files/cmds/Xobldr__xfer_regy__create.java b/400_xowa/src/gplx/xowa/addons/bldrs/files/cmds/Xobldr__xfer_regy__create.java similarity index 85% rename from 400_xowa/src/gplx/xowa/addons/builds/files/cmds/Xobldr__xfer_regy__create.java rename to 400_xowa/src/gplx/xowa/addons/bldrs/files/cmds/Xobldr__xfer_regy__create.java index b6b1bbd11..94691083d 100644 --- a/400_xowa/src/gplx/xowa/addons/builds/files/cmds/Xobldr__xfer_regy__create.java +++ b/400_xowa/src/gplx/xowa/addons/bldrs/files/cmds/Xobldr__xfer_regy__create.java @@ -15,8 +15,8 @@ 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.addons.builds.files.cmds; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.builds.*; import gplx.xowa.addons.builds.files.*; -import gplx.dbs.*; import gplx.xowa.addons.builds.files.dbs.*; +package gplx.xowa.addons.bldrs.files.cmds; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.files.*; +import gplx.dbs.*; import gplx.xowa.addons.bldrs.files.dbs.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wkrs.*; public class Xobldr__xfer_regy__create extends Xob_cmd__base { public Xobldr__xfer_regy__create(Xob_bldr bldr, Xowe_wiki wiki) {super(bldr, wiki);} diff --git a/400_xowa/src/gplx/xowa/addons/builds/files/cmds/Xobldr__xfer_regy__update_downloaded.java b/400_xowa/src/gplx/xowa/addons/bldrs/files/cmds/Xobldr__xfer_regy__update_downloaded.java similarity index 92% rename from 400_xowa/src/gplx/xowa/addons/builds/files/cmds/Xobldr__xfer_regy__update_downloaded.java rename to 400_xowa/src/gplx/xowa/addons/bldrs/files/cmds/Xobldr__xfer_regy__update_downloaded.java index 9aa37d780..82f7615c3 100644 --- a/400_xowa/src/gplx/xowa/addons/builds/files/cmds/Xobldr__xfer_regy__update_downloaded.java +++ b/400_xowa/src/gplx/xowa/addons/bldrs/files/cmds/Xobldr__xfer_regy__update_downloaded.java @@ -15,8 +15,8 @@ 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.addons.builds.files.cmds; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.builds.*; import gplx.xowa.addons.builds.files.*; -import gplx.dbs.*; import gplx.dbs.engines.sqlite.*; import gplx.xowa.addons.builds.files.dbs.*; +package gplx.xowa.addons.bldrs.files.cmds; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.files.*; +import gplx.dbs.*; import gplx.dbs.engines.sqlite.*; import gplx.xowa.addons.bldrs.files.dbs.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wkrs.*; import gplx.fsdb.meta.*; public class Xobldr__xfer_regy__update_downloaded extends Xob_cmd__base implements Xob_cmd { diff --git a/400_xowa/src/gplx/xowa/addons/builds/files/cmds/Xobldr__xfer_temp__insert_orig.java b/400_xowa/src/gplx/xowa/addons/bldrs/files/cmds/Xobldr__xfer_temp__insert_orig.java similarity index 94% rename from 400_xowa/src/gplx/xowa/addons/builds/files/cmds/Xobldr__xfer_temp__insert_orig.java rename to 400_xowa/src/gplx/xowa/addons/bldrs/files/cmds/Xobldr__xfer_temp__insert_orig.java index 7a56aa30e..01a5ae504 100644 --- a/400_xowa/src/gplx/xowa/addons/builds/files/cmds/Xobldr__xfer_temp__insert_orig.java +++ b/400_xowa/src/gplx/xowa/addons/bldrs/files/cmds/Xobldr__xfer_temp__insert_orig.java @@ -15,8 +15,8 @@ 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.addons.builds.files.cmds; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.builds.*; import gplx.xowa.addons.builds.files.*; -import gplx.core.stores.*; import gplx.dbs.*; import gplx.xowa.addons.builds.files.dbs.*; +package gplx.xowa.addons.bldrs.files.cmds; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.files.*; +import gplx.core.stores.*; import gplx.dbs.*; import gplx.xowa.addons.bldrs.files.dbs.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wkrs.*; import gplx.xowa.files.*; import gplx.xowa.files.exts.*; import gplx.xowa.parsers.lnkis.*; public class Xobldr__xfer_temp__insert_orig extends Xob_cmd__base { diff --git a/400_xowa/src/gplx/xowa/addons/builds/files/cmds/Xobldr__xfer_temp__insert_thm.java b/400_xowa/src/gplx/xowa/addons/bldrs/files/cmds/Xobldr__xfer_temp__insert_thm.java similarity index 89% rename from 400_xowa/src/gplx/xowa/addons/builds/files/cmds/Xobldr__xfer_temp__insert_thm.java rename to 400_xowa/src/gplx/xowa/addons/bldrs/files/cmds/Xobldr__xfer_temp__insert_thm.java index 712c2288f..e8eb0c734 100644 --- a/400_xowa/src/gplx/xowa/addons/builds/files/cmds/Xobldr__xfer_temp__insert_thm.java +++ b/400_xowa/src/gplx/xowa/addons/bldrs/files/cmds/Xobldr__xfer_temp__insert_thm.java @@ -15,9 +15,9 @@ 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.addons.builds.files.cmds; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.builds.*; import gplx.xowa.addons.builds.files.*; -import gplx.dbs.*; import gplx.xowa.addons.builds.files.dbs.*; import gplx.core.stores.*; -import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wkrs.*; import gplx.xowa.addons.builds.files.utls.*; +package gplx.xowa.addons.bldrs.files.cmds; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.files.*; +import gplx.dbs.*; import gplx.xowa.addons.bldrs.files.dbs.*; import gplx.core.stores.*; +import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wkrs.*; import gplx.xowa.addons.bldrs.files.utls.*; import gplx.xowa.files.*; public class Xobldr__xfer_temp__insert_thm extends Xob_cmd__base { public Xobldr__xfer_temp__insert_thm(Xob_bldr bldr, Xowe_wiki wiki) {super(bldr, wiki);} diff --git a/400_xowa/src/gplx/xowa/addons/builds/files/dbs/Page_file_map_tbl.java b/400_xowa/src/gplx/xowa/addons/bldrs/files/dbs/Page_file_map_tbl.java similarity index 84% rename from 400_xowa/src/gplx/xowa/addons/builds/files/dbs/Page_file_map_tbl.java rename to 400_xowa/src/gplx/xowa/addons/bldrs/files/dbs/Page_file_map_tbl.java index 9ef2511f2..4f989927c 100644 --- a/400_xowa/src/gplx/xowa/addons/builds/files/dbs/Page_file_map_tbl.java +++ b/400_xowa/src/gplx/xowa/addons/bldrs/files/dbs/Page_file_map_tbl.java @@ -15,11 +15,11 @@ 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.addons.builds.files.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.builds.*; import gplx.xowa.addons.builds.files.*; +package gplx.xowa.addons.bldrs.files.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.files.*; import gplx.dbs.*; public class Page_file_map_tbl { public final String tbl_name = "page_file_map"; - public final Dbmeta_fld_list flds = Dbmeta_fld_list.new_(); + public final Dbmeta_fld_list flds = new Dbmeta_fld_list(); public final String fld_page_id, fld_fil_id, fld_thm_id, fld_sort_id, fld_count_of; public final Db_conn conn; public Page_file_map_tbl(Db_conn conn) { diff --git a/400_xowa/src/gplx/xowa/addons/builds/files/dbs/Xob_fsdb_regy_tbl_.java b/400_xowa/src/gplx/xowa/addons/bldrs/files/dbs/Xob_fsdb_regy_tbl_.java similarity index 95% rename from 400_xowa/src/gplx/xowa/addons/builds/files/dbs/Xob_fsdb_regy_tbl_.java rename to 400_xowa/src/gplx/xowa/addons/bldrs/files/dbs/Xob_fsdb_regy_tbl_.java index 1fb2d0302..1185f8459 100644 --- a/400_xowa/src/gplx/xowa/addons/builds/files/dbs/Xob_fsdb_regy_tbl_.java +++ b/400_xowa/src/gplx/xowa/addons/bldrs/files/dbs/Xob_fsdb_regy_tbl_.java @@ -15,7 +15,7 @@ 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.addons.builds.files.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.builds.*; import gplx.xowa.addons.builds.files.*; +package gplx.xowa.addons.bldrs.files.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.files.*; import gplx.dbs.*; public class Xob_fsdb_regy_tbl_ { public static final String Tbl_name = "fsdb_regy"; diff --git a/400_xowa/src/gplx/xowa/addons/builds/files/dbs/Xob_image_tbl.java b/400_xowa/src/gplx/xowa/addons/bldrs/files/dbs/Xob_image_tbl.java similarity index 92% rename from 400_xowa/src/gplx/xowa/addons/builds/files/dbs/Xob_image_tbl.java rename to 400_xowa/src/gplx/xowa/addons/bldrs/files/dbs/Xob_image_tbl.java index 6712552a2..d6fd59987 100644 --- a/400_xowa/src/gplx/xowa/addons/builds/files/dbs/Xob_image_tbl.java +++ b/400_xowa/src/gplx/xowa/addons/bldrs/files/dbs/Xob_image_tbl.java @@ -15,7 +15,7 @@ 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.addons.builds.files.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.builds.*; import gplx.xowa.addons.builds.files.*; +package gplx.xowa.addons.bldrs.files.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.files.*; import gplx.dbs.*; import gplx.dbs.engines.sqlite.*; public class Xob_image_tbl { public Xob_image_tbl Create_table(Db_conn p) {Sqlite_engine_.Tbl_create_and_delete(p, Tbl_name, Tbl_sql); return this;} diff --git a/400_xowa/src/gplx/xowa/addons/builds/files/dbs/Xob_lnki_regy_tbl.java b/400_xowa/src/gplx/xowa/addons/bldrs/files/dbs/Xob_lnki_regy_tbl.java similarity index 94% rename from 400_xowa/src/gplx/xowa/addons/builds/files/dbs/Xob_lnki_regy_tbl.java rename to 400_xowa/src/gplx/xowa/addons/bldrs/files/dbs/Xob_lnki_regy_tbl.java index 1bfa6df18..0a3285c3a 100644 --- a/400_xowa/src/gplx/xowa/addons/builds/files/dbs/Xob_lnki_regy_tbl.java +++ b/400_xowa/src/gplx/xowa/addons/bldrs/files/dbs/Xob_lnki_regy_tbl.java @@ -15,7 +15,7 @@ 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.addons.builds.files.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.builds.*; import gplx.xowa.addons.builds.files.*; +package gplx.xowa.addons.bldrs.files.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.files.*; import gplx.dbs.*; import gplx.dbs.engines.sqlite.*; public class Xob_lnki_regy_tbl { public static void Create_table(Db_conn p) {Sqlite_engine_.Tbl_create_and_delete(p, Tbl_name, Tbl_sql);} diff --git a/400_xowa/src/gplx/xowa/addons/builds/files/dbs/Xob_lnki_temp_tbl.java b/400_xowa/src/gplx/xowa/addons/bldrs/files/dbs/Xob_lnki_temp_tbl.java similarity index 91% rename from 400_xowa/src/gplx/xowa/addons/builds/files/dbs/Xob_lnki_temp_tbl.java rename to 400_xowa/src/gplx/xowa/addons/bldrs/files/dbs/Xob_lnki_temp_tbl.java index af3e7e1c6..13b8a718d 100644 --- a/400_xowa/src/gplx/xowa/addons/builds/files/dbs/Xob_lnki_temp_tbl.java +++ b/400_xowa/src/gplx/xowa/addons/bldrs/files/dbs/Xob_lnki_temp_tbl.java @@ -15,10 +15,10 @@ 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.addons.builds.files.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.builds.*; import gplx.xowa.addons.builds.files.*; +package gplx.xowa.addons.bldrs.files.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.files.*; import gplx.dbs.*; import gplx.xowa.files.*; public class Xob_lnki_temp_tbl { - private static final Dbmeta_fld_list flds = Dbmeta_fld_list.new_(); + private static final Dbmeta_fld_list flds = new Dbmeta_fld_list(); private static final String Tbl_name = "lnki_temp"; public static final String Fld_lnki_id = flds.Add_int_pkey_autonum("lnki_id"); // NOTE: insertion order index; public b/c not used and want to bypass warning diff --git a/400_xowa/src/gplx/xowa/addons/builds/files/dbs/Xob_orig_regy_tbl.java b/400_xowa/src/gplx/xowa/addons/bldrs/files/dbs/Xob_orig_regy_tbl.java similarity index 96% rename from 400_xowa/src/gplx/xowa/addons/builds/files/dbs/Xob_orig_regy_tbl.java rename to 400_xowa/src/gplx/xowa/addons/bldrs/files/dbs/Xob_orig_regy_tbl.java index eaf6ccaf9..214ac0ed3 100644 --- a/400_xowa/src/gplx/xowa/addons/builds/files/dbs/Xob_orig_regy_tbl.java +++ b/400_xowa/src/gplx/xowa/addons/bldrs/files/dbs/Xob_orig_regy_tbl.java @@ -15,7 +15,7 @@ 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.addons.builds.files.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.builds.*; import gplx.xowa.addons.builds.files.*; +package gplx.xowa.addons.bldrs.files.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.files.*; import gplx.dbs.*; import gplx.xowa.files.repos.*; import gplx.xowa.wikis.nss.*; import gplx.xowa.wikis.domains.*; diff --git a/400_xowa/src/gplx/xowa/addons/builds/files/dbs/Xob_page_dump_tbl.java b/400_xowa/src/gplx/xowa/addons/bldrs/files/dbs/Xob_page_dump_tbl.java similarity index 89% rename from 400_xowa/src/gplx/xowa/addons/builds/files/dbs/Xob_page_dump_tbl.java rename to 400_xowa/src/gplx/xowa/addons/bldrs/files/dbs/Xob_page_dump_tbl.java index 44ae8f8d7..6e8306f2f 100644 --- a/400_xowa/src/gplx/xowa/addons/builds/files/dbs/Xob_page_dump_tbl.java +++ b/400_xowa/src/gplx/xowa/addons/bldrs/files/dbs/Xob_page_dump_tbl.java @@ -15,12 +15,12 @@ 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.addons.builds.files.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.builds.*; import gplx.xowa.addons.builds.files.*; +package gplx.xowa.addons.bldrs.files.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.files.*; import gplx.dbs.*; public class Xob_page_dump_tbl { public final static String Tbl_name = "page_dump"; private final String fld_id, fld_title, fld_namespace, fld_is_redirect; - private final Db_conn conn; private final Dbmeta_fld_list flds = Dbmeta_fld_list.new_(); + private final Db_conn conn; private final Dbmeta_fld_list flds = new Dbmeta_fld_list(); public Xob_page_dump_tbl(Db_conn conn) { this.conn = conn; this.fld_id = flds.Add_int_pkey("page_id"); diff --git a/400_xowa/src/gplx/xowa/addons/builds/files/dbs/Xob_page_regy_tbl.java b/400_xowa/src/gplx/xowa/addons/bldrs/files/dbs/Xob_page_regy_tbl.java similarity index 92% rename from 400_xowa/src/gplx/xowa/addons/builds/files/dbs/Xob_page_regy_tbl.java rename to 400_xowa/src/gplx/xowa/addons/bldrs/files/dbs/Xob_page_regy_tbl.java index 18058673e..7aab08b3a 100644 --- a/400_xowa/src/gplx/xowa/addons/builds/files/dbs/Xob_page_regy_tbl.java +++ b/400_xowa/src/gplx/xowa/addons/bldrs/files/dbs/Xob_page_regy_tbl.java @@ -15,13 +15,13 @@ 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.addons.builds.files.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.builds.*; import gplx.xowa.addons.builds.files.*; +package gplx.xowa.addons.bldrs.files.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.files.*; import gplx.dbs.*; import gplx.xowa.wikis.data.*; import gplx.xowa.files.repos.*; import gplx.dbs.engines.sqlite.*; import gplx.xowa.bldrs.*; public class Xob_page_regy_tbl { public static void Reset_table(Db_conn p) {Sqlite_engine_.Tbl_create_and_delete(p, Tbl_name, Tbl_sql);} public static void Create_data(Gfo_usr_dlg usr_dlg, Db_conn p, byte repo_tid, Xowe_wiki wiki) { - Xowd_db_file db_core = wiki.Db_mgr_as_sql().Core_data_mgr().Db__core(); + Xow_db_file db_core = wiki.Db_mgr_as_sql().Core_data_mgr().Db__core(); Create_data__insert_page(usr_dlg, p, repo_tid, db_core.Url()); Create_data__insert_redirect(usr_dlg, p, repo_tid, wiki.Fsys_mgr().Root_dir().GenSubFil(Xob_db_file.Name__wiki_redirect)); } diff --git a/400_xowa/src/gplx/xowa/addons/builds/files/dbs/Xob_redirect_tbl.java b/400_xowa/src/gplx/xowa/addons/bldrs/files/dbs/Xob_redirect_tbl.java similarity index 95% rename from 400_xowa/src/gplx/xowa/addons/builds/files/dbs/Xob_redirect_tbl.java rename to 400_xowa/src/gplx/xowa/addons/bldrs/files/dbs/Xob_redirect_tbl.java index 6f4414dc6..56aca72a4 100644 --- a/400_xowa/src/gplx/xowa/addons/builds/files/dbs/Xob_redirect_tbl.java +++ b/400_xowa/src/gplx/xowa/addons/bldrs/files/dbs/Xob_redirect_tbl.java @@ -15,7 +15,7 @@ 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.addons.builds.files.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.builds.*; import gplx.xowa.addons.builds.files.*; +package gplx.xowa.addons.bldrs.files.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.files.*; import gplx.dbs.*; import gplx.dbs.engines.sqlite.*; import gplx.langs.htmls.encoders.*; import gplx.xowa.bldrs.*; diff --git a/400_xowa/src/gplx/xowa/addons/builds/files/dbs/Xob_xfer_regy_log_tbl.java b/400_xowa/src/gplx/xowa/addons/bldrs/files/dbs/Xob_xfer_regy_log_tbl.java similarity index 90% rename from 400_xowa/src/gplx/xowa/addons/builds/files/dbs/Xob_xfer_regy_log_tbl.java rename to 400_xowa/src/gplx/xowa/addons/bldrs/files/dbs/Xob_xfer_regy_log_tbl.java index 598a833c6..bd467d091 100644 --- a/400_xowa/src/gplx/xowa/addons/builds/files/dbs/Xob_xfer_regy_log_tbl.java +++ b/400_xowa/src/gplx/xowa/addons/bldrs/files/dbs/Xob_xfer_regy_log_tbl.java @@ -15,7 +15,7 @@ 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.addons.builds.files.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.builds.*; import gplx.xowa.addons.builds.files.*; +package gplx.xowa.addons.bldrs.files.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.files.*; import gplx.dbs.*; public class Xob_xfer_regy_log_tbl { public static void Create_table(Db_conn p) {gplx.dbs.engines.sqlite.Sqlite_engine_.Tbl_create_and_delete(p, Tbl_name, Tbl_sql);} diff --git a/400_xowa/src/gplx/xowa/addons/builds/files/dbs/Xob_xfer_regy_tbl.java b/400_xowa/src/gplx/xowa/addons/bldrs/files/dbs/Xob_xfer_regy_tbl.java similarity index 96% rename from 400_xowa/src/gplx/xowa/addons/builds/files/dbs/Xob_xfer_regy_tbl.java rename to 400_xowa/src/gplx/xowa/addons/bldrs/files/dbs/Xob_xfer_regy_tbl.java index 22ffd4b51..911d2789f 100644 --- a/400_xowa/src/gplx/xowa/addons/builds/files/dbs/Xob_xfer_regy_tbl.java +++ b/400_xowa/src/gplx/xowa/addons/bldrs/files/dbs/Xob_xfer_regy_tbl.java @@ -15,7 +15,7 @@ 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.addons.builds.files.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.builds.*; import gplx.xowa.addons.builds.files.*; +package gplx.xowa.addons.bldrs.files.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.files.*; import gplx.core.stores.*; import gplx.dbs.*; import gplx.dbs.qrys.*; import gplx.dbs.engines.sqlite.*; import gplx.xowa.bldrs.*; diff --git a/400_xowa/src/gplx/xowa/addons/builds/files/dbs/Xob_xfer_temp_tbl.java b/400_xowa/src/gplx/xowa/addons/bldrs/files/dbs/Xob_xfer_temp_tbl.java similarity index 94% rename from 400_xowa/src/gplx/xowa/addons/builds/files/dbs/Xob_xfer_temp_tbl.java rename to 400_xowa/src/gplx/xowa/addons/bldrs/files/dbs/Xob_xfer_temp_tbl.java index 46664acbc..8cd87a714 100644 --- a/400_xowa/src/gplx/xowa/addons/builds/files/dbs/Xob_xfer_temp_tbl.java +++ b/400_xowa/src/gplx/xowa/addons/bldrs/files/dbs/Xob_xfer_temp_tbl.java @@ -15,7 +15,7 @@ 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.addons.builds.files.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.builds.*; import gplx.xowa.addons.builds.files.*; +package gplx.xowa.addons.bldrs.files.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.files.*; import gplx.dbs.*; import gplx.dbs.engines.sqlite.*; import gplx.xowa.wikis.dbs.*; import gplx.xowa.files.*; public class Xob_xfer_temp_tbl { public static void Create_table(Db_conn p) {Sqlite_engine_.Tbl_create_and_delete(p, Tbl_name, Tbl_sql);} diff --git a/400_xowa/src/gplx/xowa/addons/builds/files/utls/Xob_bin_db_itm.java b/400_xowa/src/gplx/xowa/addons/bldrs/files/utls/Xob_bin_db_itm.java similarity index 94% rename from 400_xowa/src/gplx/xowa/addons/builds/files/utls/Xob_bin_db_itm.java rename to 400_xowa/src/gplx/xowa/addons/bldrs/files/utls/Xob_bin_db_itm.java index a514d4acf..be58b69e2 100644 --- a/400_xowa/src/gplx/xowa/addons/builds/files/utls/Xob_bin_db_itm.java +++ b/400_xowa/src/gplx/xowa/addons/bldrs/files/utls/Xob_bin_db_itm.java @@ -15,7 +15,7 @@ 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.addons.builds.files.utls; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.builds.*; import gplx.xowa.addons.builds.files.*; +package gplx.xowa.addons.bldrs.files.utls; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.files.*; import gplx.fsdb.meta.*; public class Xob_bin_db_itm { public Xob_bin_db_itm(int id, Io_url db_url, int ns_id, int pt_id) {this.id = id; this.db_url = db_url; this.ns_id = ns_id; this.pt_id = pt_id;} diff --git a/400_xowa/src/gplx/xowa/addons/builds/files/utls/Xob_bin_db_mgr.java b/400_xowa/src/gplx/xowa/addons/bldrs/files/utls/Xob_bin_db_mgr.java similarity index 90% rename from 400_xowa/src/gplx/xowa/addons/builds/files/utls/Xob_bin_db_mgr.java rename to 400_xowa/src/gplx/xowa/addons/bldrs/files/utls/Xob_bin_db_mgr.java index 461901520..16404f05e 100644 --- a/400_xowa/src/gplx/xowa/addons/builds/files/utls/Xob_bin_db_mgr.java +++ b/400_xowa/src/gplx/xowa/addons/bldrs/files/utls/Xob_bin_db_mgr.java @@ -15,12 +15,12 @@ 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.addons.builds.files.utls; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.builds.*; import gplx.xowa.addons.builds.files.*; +package gplx.xowa.addons.bldrs.files.utls; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.files.*; import gplx.core.primitives.*; import gplx.core.ios.*; import gplx.fsdb.meta.*; public class Xob_bin_db_mgr { private final int[] ns_ids; private final int ns_ids_len; - private final Ordered_hash nth_hash = Ordered_hash_.New(); private final Int_obj_ref tier_key = Int_obj_ref.neg1_(); + private final Ordered_hash nth_hash = Ordered_hash_.New(); private final Int_obj_ref tier_key = Int_obj_ref.New_neg1(); public Xob_bin_db_mgr(int[] ns_ids) { this.ns_ids = ns_ids; this.ns_ids_len = ns_ids.length; } @@ -33,7 +33,7 @@ public class Xob_bin_db_mgr { for (int i = 0; i < len; ++i) { // iterate ns_ids and add default nth int ns_id = ns_ids[i]; Xob_bin_db_itm nth = new Xob_bin_db_itm(-1, null, ns_id, 0); - nth_hash.Add(Int_obj_ref.new_(ns_ids[i]), nth); + nth_hash.Add(Int_obj_ref.New(ns_ids[i]), nth); } len = bin_db_mgr.Dbs__len(); for (int i = 0; i < len; ++i) { // iterate bin_dbs to find max pt_id for each ns diff --git a/400_xowa/src/gplx/xowa/addons/builds/files/utls/Xob_xfer_temp_itm.java b/400_xowa/src/gplx/xowa/addons/bldrs/files/utls/Xob_xfer_temp_itm.java similarity index 95% rename from 400_xowa/src/gplx/xowa/addons/builds/files/utls/Xob_xfer_temp_itm.java rename to 400_xowa/src/gplx/xowa/addons/bldrs/files/utls/Xob_xfer_temp_itm.java index c7010780c..43867ad1b 100644 --- a/400_xowa/src/gplx/xowa/addons/builds/files/utls/Xob_xfer_temp_itm.java +++ b/400_xowa/src/gplx/xowa/addons/bldrs/files/utls/Xob_xfer_temp_itm.java @@ -15,11 +15,11 @@ 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.addons.builds.files.utls; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.builds.*; import gplx.xowa.addons.builds.files.*; +package gplx.xowa.addons.bldrs.files.utls; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.files.*; import gplx.core.stores.*; import gplx.dbs.*; import gplx.xowa.files.*; import gplx.xowa.parsers.lnkis.*; import gplx.xowa.parsers.lnkis.files.*; -import gplx.xowa.addons.builds.files.dbs.*; +import gplx.xowa.addons.bldrs.files.dbs.*; public class Xob_xfer_temp_itm { public int Lnki_id() {return lnki_id;} private int lnki_id; public int Lnki_tier_id() {return lnki_tier_id;} private int lnki_tier_id; diff --git a/400_xowa/src/gplx/xowa/addons/builds/files/utls/Xob_xfer_temp_itm_tst.java b/400_xowa/src/gplx/xowa/addons/bldrs/files/utls/Xob_xfer_temp_itm_tst.java similarity index 95% rename from 400_xowa/src/gplx/xowa/addons/builds/files/utls/Xob_xfer_temp_itm_tst.java rename to 400_xowa/src/gplx/xowa/addons/bldrs/files/utls/Xob_xfer_temp_itm_tst.java index f971c0bb9..d18b65fa8 100644 --- a/400_xowa/src/gplx/xowa/addons/builds/files/utls/Xob_xfer_temp_itm_tst.java +++ b/400_xowa/src/gplx/xowa/addons/bldrs/files/utls/Xob_xfer_temp_itm_tst.java @@ -15,12 +15,12 @@ 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.addons.builds.files.utls; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.builds.*; import gplx.xowa.addons.builds.files.*; +package gplx.xowa.addons.bldrs.files.utls; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.files.*; import org.junit.*; import gplx.core.gfo_ndes.*; import gplx.core.stores.*; import gplx.xowa.files.*; import gplx.xowa.files.repos.*; import gplx.xowa.parsers.lnkis.*; import gplx.xowa.parsers.lnkis.files.*; -import gplx.xowa.addons.builds.files.dbs.*; +import gplx.xowa.addons.bldrs.files.dbs.*; public class Xob_xfer_temp_itm_tst { private Xob_xfer_temp_itm_fxt fxt = new Xob_xfer_temp_itm_fxt(); @Before public void init() {fxt.Reset();} diff --git a/400_xowa/src/gplx/xowa/addons/builds/files/utls/Xobu_poll_mgr.java b/400_xowa/src/gplx/xowa/addons/bldrs/files/utls/Xobu_poll_mgr.java similarity index 84% rename from 400_xowa/src/gplx/xowa/addons/builds/files/utls/Xobu_poll_mgr.java rename to 400_xowa/src/gplx/xowa/addons/bldrs/files/utls/Xobu_poll_mgr.java index bc60ecad4..967d178f2 100644 --- a/400_xowa/src/gplx/xowa/addons/builds/files/utls/Xobu_poll_mgr.java +++ b/400_xowa/src/gplx/xowa/addons/bldrs/files/utls/Xobu_poll_mgr.java @@ -15,8 +15,8 @@ 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.addons.builds.files.utls; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.builds.*; import gplx.xowa.addons.builds.files.*; -public class Xobu_poll_mgr implements GfoInvkAble { +package gplx.xowa.addons.bldrs.files.utls; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.files.*; +public class Xobu_poll_mgr implements Gfo_invk { public Xobu_poll_mgr(Xoae_app app) {this.app = app;} private Xoae_app app; public int Poll_interval() {return poll_interval;} private int poll_interval = 1000; private Io_url poll_file; @@ -31,7 +31,7 @@ public class Xobu_poll_mgr implements GfoInvkAble { public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_poll_interval_)) poll_interval = m.ReadInt("v"); else if (ctx.Match(k, Invk_poll_file_)) poll_file = m.ReadIoUrl("v"); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String Invk_poll_interval_ = "poll_interval_", Invk_poll_file_ = "poll_file_"; diff --git a/400_xowa/src/gplx/xowa/addons/builds/htmls/Html__dump_to_fsys__addon.java b/400_xowa/src/gplx/xowa/addons/bldrs/htmls/Html__dump_to_fsys__addon.java similarity index 75% rename from 400_xowa/src/gplx/xowa/addons/builds/htmls/Html__dump_to_fsys__addon.java rename to 400_xowa/src/gplx/xowa/addons/bldrs/htmls/Html__dump_to_fsys__addon.java index dadda6932..c7beedc60 100644 --- a/400_xowa/src/gplx/xowa/addons/builds/htmls/Html__dump_to_fsys__addon.java +++ b/400_xowa/src/gplx/xowa/addons/bldrs/htmls/Html__dump_to_fsys__addon.java @@ -15,15 +15,14 @@ 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.addons.builds.htmls; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.builds.*; +package gplx.xowa.addons.bldrs.htmls; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.bldrs.wkrs.*; public class Html__dump_to_fsys__addon implements Xoax_addon_itm, Xoax_addon_itm__bldr { - public Xob_cmd[] Cmds_ary() { + public Xob_cmd[] Bldr_cmds() { return new Xob_cmd[] { Html__dump_to_fsys__cmd.Prototype }; } - public static final byte[] ADDON_KEY = Bry_.new_a7("xowa.builds.htmls"); - public byte[] Addon__key() {return ADDON_KEY;} + public String Addon__key() {return "xowa.builds.htmls";} } diff --git a/400_xowa/src/gplx/xowa/addons/builds/htmls/Html__dump_to_fsys__cmd.java b/400_xowa/src/gplx/xowa/addons/bldrs/htmls/Html__dump_to_fsys__cmd.java similarity index 89% rename from 400_xowa/src/gplx/xowa/addons/builds/htmls/Html__dump_to_fsys__cmd.java rename to 400_xowa/src/gplx/xowa/addons/bldrs/htmls/Html__dump_to_fsys__cmd.java index 940dceea4..a6e15abfe 100644 --- a/400_xowa/src/gplx/xowa/addons/builds/htmls/Html__dump_to_fsys__cmd.java +++ b/400_xowa/src/gplx/xowa/addons/bldrs/htmls/Html__dump_to_fsys__cmd.java @@ -15,7 +15,7 @@ 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.addons.builds.htmls; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.builds.*; +package gplx.xowa.addons.bldrs.htmls; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.dbs.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wkrs.*; import gplx.xowa.htmls.core.htmls.*; import gplx.fsdb.*; import gplx.fsdb.meta.*; import gplx.xowa.files.*; @@ -31,7 +31,7 @@ public class Html__dump_to_fsys__cmd extends Xob_cmd__base { Mustache_tkn_parser parser = new Mustache_tkn_parser(); Mustache_tkn_itm root = parser.Parse(Io_mgr.Instance.LoadFilBry(template_url)); Mustache_render_ctx ctx = new Mustache_render_ctx(); - Bry_bfr bfr = Bry_bfr.new_(); + Bry_bfr bfr = Bry_bfr_.New(); Mustache_bfr mbfr = new Mustache_bfr(bfr); Html_page_itm page_itm = new Html_page_itm(); @@ -39,7 +39,7 @@ public class Html__dump_to_fsys__cmd extends Xob_cmd__base { Xoh_wtr_ctx hctx = Xoh_wtr_ctx.File_dump(page_root, Bry_.new_a7(".html")); wiki.Init_assert(); gplx.xowa.wikis.data.tbls.Xowd_page_tbl page_tbl = wiki.Data__core_mgr().Db__core().Tbl__page(); - Db_conn conn = page_tbl.conn; + Db_conn conn = page_tbl.Conn(); Db_rdr rdr = conn.Exec_rdr("SELECT page_id, page_title, page_touched FROM page WHERE page_namespace = 0;"); while (rdr.Move_next()) { String page_ttl_str = rdr.Read_str("page_title"); @@ -51,10 +51,10 @@ public class Html__dump_to_fsys__cmd extends Xob_cmd__base { if (skip_unchanged && Io_mgr.Instance.QueryFil(dump_fil_url).ModifiedTime().Eq(page_modified_on)) continue; // parse page - Xoae_page page = wiki.Data_mgr().Load_page_by_ttl(wiki.Utl__url_parser().Parse(page_ttl.Page_db()), page_ttl); + Xoae_page page = wiki.Data_mgr().Load_page_and_parse(wiki.Utl__url_parser().Parse(page_ttl.Page_db()), page_ttl); wiki.Parser_mgr().Parse(page, true); page.Wikie().Html_mgr().Page_wtr_mgr().Page_read_fmtr().Fmt_("~{page_data}"); - page.Wikie().Html_mgr().Page_wtr_mgr().Wkr(gplx.xowa.wikis.pages.Xopg_page_.Tid_read).Write_body(bfr, hctx, page); + page.Wikie().Html_mgr().Page_wtr_mgr().Wkr(gplx.xowa.wikis.pages.Xopg_page_.Tid_read).Write_body(bfr, wiki.Parser_mgr().Ctx(), hctx, page); byte[] html_src = bfr.To_bry_and_clear();//page.Wikie().Html_mgr().Page_wtr_mgr().Gen(page, gplx.xowa.wikis.pages.Xopg_page_.Tid_read); // NOTE: must use wiki of page, not of owner tab; DATE:2015-03-05 byte[] html_head = page.Html_data().Custom_head_tags().To_html__style(bfr); @@ -74,7 +74,7 @@ public class Html__dump_to_fsys__cmd extends Xob_cmd__base { else if (ctx.Match(k, Invk__http_root_)) this.http_root = m.ReadBry("v"); else if (ctx.Match(k, Invk__page_root_)) this.page_root = m.ReadBry("v"); else if (ctx.Match(k, Invk__skip_unchanged_)) this.skip_unchanged = m.ReadYn("v"); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String Invk__template_url_ = "template_url_", Invk__fsys_root_ = "fsys_root_" diff --git a/400_xowa/src/gplx/xowa/addons/builds/htmls/Html_page_itm.java b/400_xowa/src/gplx/xowa/addons/bldrs/htmls/Html_page_itm.java similarity index 92% rename from 400_xowa/src/gplx/xowa/addons/builds/htmls/Html_page_itm.java rename to 400_xowa/src/gplx/xowa/addons/bldrs/htmls/Html_page_itm.java index fa7fd56ed..06870dce3 100644 --- a/400_xowa/src/gplx/xowa/addons/builds/htmls/Html_page_itm.java +++ b/400_xowa/src/gplx/xowa/addons/bldrs/htmls/Html_page_itm.java @@ -15,7 +15,7 @@ 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.addons.builds.htmls; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.builds.*; +package gplx.xowa.addons.bldrs.htmls; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.langs.mustaches.*; class Html_page_itm implements Mustache_doc_itm { private byte[] http_root; diff --git a/400_xowa/src/gplx/xowa/addons/builds/pagelinks/Xoax_builds_pagelinks_addon.java b/400_xowa/src/gplx/xowa/addons/bldrs/pagelinks/Xoax_builds_pagelinks_addon.java similarity index 71% rename from 400_xowa/src/gplx/xowa/addons/builds/pagelinks/Xoax_builds_pagelinks_addon.java rename to 400_xowa/src/gplx/xowa/addons/bldrs/pagelinks/Xoax_builds_pagelinks_addon.java index 1a0930c65..ebb65bf08 100644 --- a/400_xowa/src/gplx/xowa/addons/builds/pagelinks/Xoax_builds_pagelinks_addon.java +++ b/400_xowa/src/gplx/xowa/addons/bldrs/pagelinks/Xoax_builds_pagelinks_addon.java @@ -15,16 +15,15 @@ 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.addons.builds.pagelinks; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.builds.*; +package gplx.xowa.addons.bldrs.pagelinks; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.bldrs.wkrs.*; -import gplx.xowa.addons.builds.pagelinks.bldrs.*; +import gplx.xowa.addons.bldrs.pagelinks.bldrs.*; public class Xoax_builds_pagelinks_addon implements Xoax_addon_itm, Xoax_addon_itm__bldr { - public Xob_cmd[] Cmds_ary() { + public Xob_cmd[] Bldr_cmds() { return new Xob_cmd[] { Pglnk_bldr_cmd.Prototype }; } - public static final byte[] ADDON_KEY = Bry_.new_a7("xowa.builds.pagelinks"); - public byte[] Addon__key() {return ADDON_KEY;} + public String Addon__key() {return "xowa.builds.pagelinks";} } diff --git a/400_xowa/src/gplx/xowa/addons/builds/pagelinks/bldrs/Pglnk_bldr_cmd.java b/400_xowa/src/gplx/xowa/addons/bldrs/pagelinks/bldrs/Pglnk_bldr_cmd.java similarity index 92% rename from 400_xowa/src/gplx/xowa/addons/builds/pagelinks/bldrs/Pglnk_bldr_cmd.java rename to 400_xowa/src/gplx/xowa/addons/bldrs/pagelinks/bldrs/Pglnk_bldr_cmd.java index 631ef977f..392e53de3 100644 --- a/400_xowa/src/gplx/xowa/addons/builds/pagelinks/bldrs/Pglnk_bldr_cmd.java +++ b/400_xowa/src/gplx/xowa/addons/bldrs/pagelinks/bldrs/Pglnk_bldr_cmd.java @@ -15,9 +15,9 @@ 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.addons.builds.pagelinks.bldrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.builds.*; import gplx.xowa.addons.builds.pagelinks.*; +package gplx.xowa.addons.bldrs.pagelinks.bldrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.pagelinks.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wkrs.*; import gplx.xowa.bldrs.sqls.*; -import gplx.dbs.*; import gplx.dbs.qrys.*; import gplx.xowa.wikis.data.*; import gplx.xowa.addons.builds.pagelinks.dbs.*; +import gplx.dbs.*; import gplx.dbs.qrys.*; import gplx.xowa.wikis.data.*; import gplx.xowa.addons.bldrs.pagelinks.dbs.*; public class Pglnk_bldr_cmd extends Xob_sql_dump_base implements Sql_file_parser_cmd { private Db_conn conn; private Pglnk_page_link_temp_tbl temp_tbl; diff --git a/400_xowa/src/gplx/xowa/addons/builds/pagelinks/dbs/Pglnk_page_link_tbl.java b/400_xowa/src/gplx/xowa/addons/bldrs/pagelinks/dbs/Pglnk_page_link_tbl.java similarity index 87% rename from 400_xowa/src/gplx/xowa/addons/builds/pagelinks/dbs/Pglnk_page_link_tbl.java rename to 400_xowa/src/gplx/xowa/addons/bldrs/pagelinks/dbs/Pglnk_page_link_tbl.java index e8001384e..cb5babf69 100644 --- a/400_xowa/src/gplx/xowa/addons/builds/pagelinks/dbs/Pglnk_page_link_tbl.java +++ b/400_xowa/src/gplx/xowa/addons/bldrs/pagelinks/dbs/Pglnk_page_link_tbl.java @@ -15,10 +15,10 @@ 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.addons.builds.pagelinks.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.builds.*; import gplx.xowa.addons.builds.pagelinks.*; +package gplx.xowa.addons.bldrs.pagelinks.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.pagelinks.*; import gplx.core.ios.*; import gplx.dbs.*; import gplx.dbs.qrys.*; import gplx.xowa.wikis.dbs.*; import gplx.dbs.cfgs.*; public class Pglnk_page_link_tbl implements Rls_able { - private final String tbl_name = "page_link"; private final Dbmeta_fld_list flds = Dbmeta_fld_list.new_(); + private final String tbl_name = "page_link"; private final Dbmeta_fld_list flds = new Dbmeta_fld_list(); private final String fld_src_id, fld_trg_id; private final Db_conn conn; public Pglnk_page_link_tbl(Db_conn conn) { diff --git a/400_xowa/src/gplx/xowa/addons/builds/pagelinks/dbs/Pglnk_page_link_temp_tbl.java b/400_xowa/src/gplx/xowa/addons/bldrs/pagelinks/dbs/Pglnk_page_link_temp_tbl.java similarity index 89% rename from 400_xowa/src/gplx/xowa/addons/builds/pagelinks/dbs/Pglnk_page_link_temp_tbl.java rename to 400_xowa/src/gplx/xowa/addons/bldrs/pagelinks/dbs/Pglnk_page_link_temp_tbl.java index cc96217df..ddbdc81d0 100644 --- a/400_xowa/src/gplx/xowa/addons/builds/pagelinks/dbs/Pglnk_page_link_temp_tbl.java +++ b/400_xowa/src/gplx/xowa/addons/bldrs/pagelinks/dbs/Pglnk_page_link_temp_tbl.java @@ -15,10 +15,10 @@ 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.addons.builds.pagelinks.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.builds.*; import gplx.xowa.addons.builds.pagelinks.*; +package gplx.xowa.addons.bldrs.pagelinks.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.pagelinks.*; import gplx.core.ios.*; import gplx.dbs.*; import gplx.dbs.qrys.*; import gplx.xowa.wikis.dbs.*; import gplx.dbs.cfgs.*; public class Pglnk_page_link_temp_tbl implements Rls_able { - private final String tbl_name = "page_link_temp"; private final Dbmeta_fld_list flds = Dbmeta_fld_list.new_(); + private final String tbl_name = "page_link_temp"; private final Dbmeta_fld_list flds = new Dbmeta_fld_list(); private final String fld_src_id, fld_trg_ns, fld_trg_ttl; private final Db_conn conn; private Db_stmt stmt_insert; public Pglnk_page_link_temp_tbl(Db_conn conn) { diff --git a/400_xowa/src/gplx/xowa/addons/updates/files/Xoax_updates_files_addon.java b/400_xowa/src/gplx/xowa/addons/bldrs/updates/files/Xoax_updates_files_addon.java similarity index 73% rename from 400_xowa/src/gplx/xowa/addons/updates/files/Xoax_updates_files_addon.java rename to 400_xowa/src/gplx/xowa/addons/bldrs/updates/files/Xoax_updates_files_addon.java index ddbb5ea12..145e75d39 100644 --- a/400_xowa/src/gplx/xowa/addons/updates/files/Xoax_updates_files_addon.java +++ b/400_xowa/src/gplx/xowa/addons/bldrs/updates/files/Xoax_updates_files_addon.java @@ -15,11 +15,11 @@ 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.addons.updates.files; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.updates.*; +package gplx.xowa.addons.bldrs.updates.files; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.updates.*; import gplx.xowa.bldrs.wkrs.*; -import gplx.xowa.addons.builds.utils_rankings.bldrs.*; +import gplx.xowa.addons.bldrs.utils_rankings.bldrs.*; public class Xoax_updates_files_addon implements Xoax_addon_itm, Xoax_addon_itm__bldr { - public Xob_cmd[] Cmds_ary() { + public Xob_cmd[] Bldr_cmds() { return new Xob_cmd[] { Xobldr__deletion_db__make.Prototype , Xobldr__deletion_db__exec.Prototype @@ -27,6 +27,5 @@ public class Xoax_updates_files_addon implements Xoax_addon_itm, Xoax_addon_itm_ }; } - public static final byte[] ADDON_KEY = Bry_.new_a7("xowa.updates.files"); - public byte[] Addon__key() {return ADDON_KEY;} + public String Addon__key() {return "xowa.updates.files";} } diff --git a/400_xowa/src/gplx/xowa/addons/updates/files/Xobldr__deletion_db__exec.java b/400_xowa/src/gplx/xowa/addons/bldrs/updates/files/Xobldr__deletion_db__exec.java similarity index 93% rename from 400_xowa/src/gplx/xowa/addons/updates/files/Xobldr__deletion_db__exec.java rename to 400_xowa/src/gplx/xowa/addons/bldrs/updates/files/Xobldr__deletion_db__exec.java index c9dde3884..20bacda51 100644 --- a/400_xowa/src/gplx/xowa/addons/updates/files/Xobldr__deletion_db__exec.java +++ b/400_xowa/src/gplx/xowa/addons/bldrs/updates/files/Xobldr__deletion_db__exec.java @@ -15,11 +15,11 @@ 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.addons.updates.files; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.updates.*; +package gplx.xowa.addons.bldrs.updates.files; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.updates.*; import gplx.dbs.*; import gplx.dbs.cfgs.*; import gplx.fsdb.*; import gplx.fsdb.meta.*; import gplx.xowa.files.fsdb.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wkrs.*; -import gplx.xowa.addons.builds.files.cmds.*; +import gplx.xowa.addons.bldrs.files.cmds.*; public class Xobldr__deletion_db__exec extends Xob_cmd__base { private Io_url deletion_db_url; public Xobldr__deletion_db__exec(Xob_bldr bldr, Xowe_wiki wiki) {super(bldr, null);} @@ -55,7 +55,7 @@ public class Xobldr__deletion_db__exec extends Xob_cmd__base { private void Delete_by_db(Db_conn conn, Fsm_bin_fil bin_db, String dbs_len_str) { Gfo_usr_dlg usr_dlg = Xoa_app_.Usr_dlg(); // get rows to delete in db - List_adp list = List_adp_.new_(); + List_adp list = List_adp_.New(); int bin_db_id = bin_db.Id(); String bin_db_id_str = Int_.To_str(bin_db_id); usr_dlg.Prog_many("", "", "processing files for deletion in database " + bin_db_id_str + " of " + dbs_len_str); @@ -120,7 +120,7 @@ public class Xobldr__deletion_db__exec extends Xob_cmd__base { } @Override public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk__file_)) this.deletion_db_url = Io_url_.new_any_(m.ReadStr("v")); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String Invk__file_ = "file_"; diff --git a/400_xowa/src/gplx/xowa/addons/updates/files/Xobldr__deletion_db__make.java b/400_xowa/src/gplx/xowa/addons/bldrs/updates/files/Xobldr__deletion_db__make.java similarity index 90% rename from 400_xowa/src/gplx/xowa/addons/updates/files/Xobldr__deletion_db__make.java rename to 400_xowa/src/gplx/xowa/addons/bldrs/updates/files/Xobldr__deletion_db__make.java index 707c0384a..94532e842 100644 --- a/400_xowa/src/gplx/xowa/addons/updates/files/Xobldr__deletion_db__make.java +++ b/400_xowa/src/gplx/xowa/addons/bldrs/updates/files/Xobldr__deletion_db__make.java @@ -15,8 +15,8 @@ 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.addons.updates.files; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.updates.*; -import gplx.dbs.*; import gplx.dbs.cfgs.*; import gplx.dbs.engines.sqlite.*; import gplx.xowa.addons.builds.files.dbs.*; +package gplx.xowa.addons.bldrs.updates.files; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.updates.*; +import gplx.dbs.*; import gplx.dbs.cfgs.*; import gplx.dbs.engines.sqlite.*; import gplx.xowa.addons.bldrs.files.dbs.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wkrs.*; import gplx.fsdb.meta.*; public class Xobldr__deletion_db__make extends Xob_cmd__base implements Xob_cmd { @@ -73,7 +73,7 @@ public class Xobldr__deletion_db__make extends Xob_cmd__base implements Xob_cmd } class Xob_delete_regy { public final String tbl_name = "delete_regy"; - public final Dbmeta_fld_list flds = Dbmeta_fld_list.new_(); + public final Dbmeta_fld_list flds = new Dbmeta_fld_list(); public final String fld_fil_id, fld_thm_id, fld_reason; public final Db_conn conn; public Xob_delete_regy(Db_conn conn) { diff --git a/400_xowa/src/gplx/xowa/addons/updates/files/Xobldr__deletion_db__small_files.java b/400_xowa/src/gplx/xowa/addons/bldrs/updates/files/Xobldr__deletion_db__small_files.java similarity index 93% rename from 400_xowa/src/gplx/xowa/addons/updates/files/Xobldr__deletion_db__small_files.java rename to 400_xowa/src/gplx/xowa/addons/bldrs/updates/files/Xobldr__deletion_db__small_files.java index 45c1aa974..ac0e38263 100644 --- a/400_xowa/src/gplx/xowa/addons/updates/files/Xobldr__deletion_db__small_files.java +++ b/400_xowa/src/gplx/xowa/addons/bldrs/updates/files/Xobldr__deletion_db__small_files.java @@ -15,7 +15,7 @@ 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.addons.updates.files; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.updates.*; +package gplx.xowa.addons.bldrs.updates.files; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.updates.*; import gplx.dbs.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wkrs.*; import gplx.fsdb.*; import gplx.fsdb.meta.*; import gplx.xowa.files.*; diff --git a/400_xowa/src/gplx/xowa/addons/builds/utils_rankings/Xoax_builds_utils_rankings_addon.java b/400_xowa/src/gplx/xowa/addons/bldrs/utils_rankings/Xoax_builds_utils_rankings_addon.java similarity index 70% rename from 400_xowa/src/gplx/xowa/addons/builds/utils_rankings/Xoax_builds_utils_rankings_addon.java rename to 400_xowa/src/gplx/xowa/addons/bldrs/utils_rankings/Xoax_builds_utils_rankings_addon.java index 9c8a56ec5..d82a8009c 100644 --- a/400_xowa/src/gplx/xowa/addons/builds/utils_rankings/Xoax_builds_utils_rankings_addon.java +++ b/400_xowa/src/gplx/xowa/addons/bldrs/utils_rankings/Xoax_builds_utils_rankings_addon.java @@ -15,16 +15,15 @@ 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.addons.builds.utils_rankings; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.builds.*; +package gplx.xowa.addons.bldrs.utils_rankings; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.bldrs.wkrs.*; -import gplx.xowa.addons.builds.utils_rankings.bldrs.*; +import gplx.xowa.addons.bldrs.utils_rankings.bldrs.*; public class Xoax_builds_utils_rankings_addon implements Xoax_addon_itm, Xoax_addon_itm__bldr { - public Xob_cmd[] Cmds_ary() { + public Xob_cmd[] Bldr_cmds() { return new Xob_cmd[] { Sqlite_percentile_cmd.Prototype }; } - public static final byte[] ADDON_KEY = Bry_.new_a7("xowa.builds.utils_rankings"); - public byte[] Addon__key() {return ADDON_KEY;} + public String Addon__key() {return "xowa.builds.utils_rankings";} } diff --git a/400_xowa/src/gplx/xowa/addons/builds/utils_rankings/bldrs/Sqlite_percentile_cmd.java b/400_xowa/src/gplx/xowa/addons/bldrs/utils_rankings/bldrs/Sqlite_percentile_cmd.java similarity index 92% rename from 400_xowa/src/gplx/xowa/addons/builds/utils_rankings/bldrs/Sqlite_percentile_cmd.java rename to 400_xowa/src/gplx/xowa/addons/bldrs/utils_rankings/bldrs/Sqlite_percentile_cmd.java index 0f8e108b4..55baa08d0 100644 --- a/400_xowa/src/gplx/xowa/addons/builds/utils_rankings/bldrs/Sqlite_percentile_cmd.java +++ b/400_xowa/src/gplx/xowa/addons/bldrs/utils_rankings/bldrs/Sqlite_percentile_cmd.java @@ -15,7 +15,7 @@ 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.addons.builds.utils_rankings.bldrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.builds.*; import gplx.xowa.addons.builds.utils_rankings.*; +package gplx.xowa.addons.bldrs.utils_rankings.bldrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.utils_rankings.*; import gplx.dbs.*; import gplx.dbs.qrys.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wkrs.*; public class Sqlite_percentile_cmd extends Xob_cmd__base implements Xob_cmd { @@ -44,7 +44,7 @@ public class Sqlite_percentile_cmd extends Xob_cmd__base implements Xob_cmd { , Dbmeta_fld_itm.new_double("row_score").Default_(-1) )); Xoa_app_.Usr_dlg().Prog_many("", "", "filling temp_table: tbl=~{0} sql=~{1}", tbl_name, select_sql); - new Db_attach_mgr(conn, new Db_attach_itm("page_db", wiki.Data__core_mgr().Tbl__page().conn)) + new Db_attach_mgr(conn, new Db_attach_itm("page_db", wiki.Data__core_mgr().Tbl__page().Conn())) .Exec_sql(Bry_fmt.Make_str("INSERT INTO ~{tbl} (row_key, row_val) ~{select}", tbl_name, select_sql)); Xoa_app_.Usr_dlg().Prog_many("", "", "updating row_score: tbl=~{0}", tbl_name); String score_max_as_str = Dbmeta_fld_itm.To_double_str_by_int(score_max); @@ -52,8 +52,7 @@ public class Sqlite_percentile_cmd extends Xob_cmd__base implements Xob_cmd { String count_as_str = Dbmeta_fld_itm.To_double_str_by_int(count); conn.Exec_sql(Bry_fmt.Make_str("UPDATE ~{tbl} SET row_score = (row_rank * ~{score_max}) / ~{count}", tbl_name, score_max_as_str, count_as_str)); Xoa_app_.Usr_dlg().Prog_many("", "", "resolving ties: tbl=~{0}", tbl_name); - conn.Meta_tbl_delete(tbl_name + "_avg"); - conn.Meta_tbl_create + conn.Meta_tbl_remake ( Dbmeta_tbl_itm.New(tbl_name + "_avg" , Dbmeta_fld_itm.new_double("row_val").Primary_y_() , Dbmeta_fld_itm.new_double("row_score") @@ -71,6 +70,7 @@ public class Sqlite_percentile_cmd extends Xob_cmd__base implements Xob_cmd { , "SET row_score = (SELECT row_score FROM ~{tbl}_avg t2 WHERE t2.row_val = ~{tbl}.row_val)" , "WHERE row_val IN (SELECT row_val FROM ~{tbl}_avg t2)" ), tbl_name)); + conn.Meta_tbl_delete(tbl_name + "_avg"); conn.Meta_idx_create(Xoa_app_.Usr_dlg(), Dbmeta_idx_itm.new_normal_by_tbl(tbl_name, "row_score", "row_key", "row_score")); } @Override public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { @@ -78,7 +78,7 @@ public class Sqlite_percentile_cmd extends Xob_cmd__base implements Xob_cmd { else if (ctx.Match(k, Invk__select_sql_)) select_sql = m.ReadStr("v"); else if (ctx.Match(k, Invk__tbl_name_)) tbl_name = m.ReadStr("v"); else if (ctx.Match(k, Invk__score_max_)) score_max = m.ReadInt("v"); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String Invk__db_rel_url_ = "db_rel_url_", Invk__select_sql_ = "select_sql_", Invk__tbl_name_ = "tbl_name_", Invk__score_max_ = "score_max_"; diff --git a/400_xowa/src/gplx/xowa/addons/builds/utils_rankings/bldrs/Statistic_calculator.java b/400_xowa/src/gplx/xowa/addons/bldrs/utils_rankings/bldrs/Statistic_calculator.java similarity index 85% rename from 400_xowa/src/gplx/xowa/addons/builds/utils_rankings/bldrs/Statistic_calculator.java rename to 400_xowa/src/gplx/xowa/addons/bldrs/utils_rankings/bldrs/Statistic_calculator.java index e817fc4e5..191336ad2 100644 --- a/400_xowa/src/gplx/xowa/addons/builds/utils_rankings/bldrs/Statistic_calculator.java +++ b/400_xowa/src/gplx/xowa/addons/bldrs/utils_rankings/bldrs/Statistic_calculator.java @@ -15,7 +15,7 @@ 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.addons.builds.utils_rankings.bldrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.builds.*; import gplx.xowa.addons.builds.utils_rankings.*; +package gplx.xowa.addons.bldrs.utils_rankings.bldrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.utils_rankings.*; class Statistic_calculator { private int count; private double old_avg, cur_avg, old_sum, cur_sum; diff --git a/400_xowa/src/gplx/xowa/addons/builds/utils_rankings/bldrs/Str_ary_.java b/400_xowa/src/gplx/xowa/addons/bldrs/utils_rankings/bldrs/Str_ary_.java similarity index 85% rename from 400_xowa/src/gplx/xowa/addons/builds/utils_rankings/bldrs/Str_ary_.java rename to 400_xowa/src/gplx/xowa/addons/bldrs/utils_rankings/bldrs/Str_ary_.java index 945106046..e19120594 100644 --- a/400_xowa/src/gplx/xowa/addons/builds/utils_rankings/bldrs/Str_ary_.java +++ b/400_xowa/src/gplx/xowa/addons/bldrs/utils_rankings/bldrs/Str_ary_.java @@ -15,7 +15,7 @@ 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.addons.builds.utils_rankings.bldrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.builds.*; import gplx.xowa.addons.builds.utils_rankings.*; +package gplx.xowa.addons.bldrs.utils_rankings.bldrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.utils_rankings.*; class Str_ary_ { public static String[][] To_str_ary_ary(String v, String val_dlm, String row_dlm) {// "a|b|c`" String[] rows_ary = String_.Split(v, row_dlm); diff --git a/400_xowa/src/gplx/xowa/addons/builds/volumes/Volume_make_itm.java b/400_xowa/src/gplx/xowa/addons/bldrs/volumes/Volume_make_itm.java similarity index 88% rename from 400_xowa/src/gplx/xowa/addons/builds/volumes/Volume_make_itm.java rename to 400_xowa/src/gplx/xowa/addons/bldrs/volumes/Volume_make_itm.java index 343f8d800..78938c136 100644 --- a/400_xowa/src/gplx/xowa/addons/builds/volumes/Volume_make_itm.java +++ b/400_xowa/src/gplx/xowa/addons/bldrs/volumes/Volume_make_itm.java @@ -15,7 +15,7 @@ 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.addons.builds.volumes; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.builds.*; +package gplx.xowa.addons.bldrs.volumes; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.core.brys.*; class Volume_make_itm implements Bry_bfr_able { public int Uid = 0; diff --git a/400_xowa/src/gplx/xowa/addons/builds/volumes/Volume_page_loader__wiki.java b/400_xowa/src/gplx/xowa/addons/bldrs/volumes/Volume_page_loader__wiki.java similarity index 87% rename from 400_xowa/src/gplx/xowa/addons/builds/volumes/Volume_page_loader__wiki.java rename to 400_xowa/src/gplx/xowa/addons/bldrs/volumes/Volume_page_loader__wiki.java index c29795c28..a3c727f64 100644 --- a/400_xowa/src/gplx/xowa/addons/builds/volumes/Volume_page_loader__wiki.java +++ b/400_xowa/src/gplx/xowa/addons/bldrs/volumes/Volume_page_loader__wiki.java @@ -15,7 +15,7 @@ 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.addons.builds.volumes; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.builds.*; +package gplx.xowa.addons.bldrs.volumes; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.parsers.lnkis.*; import gplx.xowa.wikis.nss.*; interface Volume_page_loader { boolean Load(Volume_page_itm rv, byte[] ttl); @@ -26,7 +26,7 @@ class Volume_page_loader__wiki implements Volume_page_loader { public boolean Load(Volume_page_itm rv, byte[] ttl) { Xoa_ttl page_ttl = wiki.Ttl_parse(ttl); if (page_ttl == null) return false; Xoa_url page_url = wiki.Utl__url_parser().Parse(ttl); - Xoae_page page = wiki.Data_mgr().Load_page_by_ttl(page_url, page_ttl); + Xoae_page page = wiki.Data_mgr().Load_page_and_parse(page_url, page_ttl); Load_links(rv, page.Lnki_list()); return true; } @@ -58,6 +58,6 @@ class Volume_page_itm { } public Xoa_ttl Page_ttl() {return page_ttl;} private Xoa_ttl page_ttl; public Xoa_url Page_url() {return page_url;} private Xoa_url page_url; - public List_adp Link_list() {return link_list;} private final List_adp link_list = List_adp_.new_(); - public List_adp File_list() {return file_list;} private final List_adp file_list = List_adp_.new_(); + public List_adp Link_list() {return link_list;} private final List_adp link_list = List_adp_.New(); + public List_adp File_list() {return file_list;} private final List_adp file_list = List_adp_.New(); } diff --git a/400_xowa/src/gplx/xowa/addons/builds/volumes/Volume_prep_cmd.java b/400_xowa/src/gplx/xowa/addons/bldrs/volumes/Volume_prep_cmd.java similarity index 91% rename from 400_xowa/src/gplx/xowa/addons/builds/volumes/Volume_prep_cmd.java rename to 400_xowa/src/gplx/xowa/addons/bldrs/volumes/Volume_prep_cmd.java index b82b5e764..50b8c16d9 100644 --- a/400_xowa/src/gplx/xowa/addons/builds/volumes/Volume_prep_cmd.java +++ b/400_xowa/src/gplx/xowa/addons/bldrs/volumes/Volume_prep_cmd.java @@ -15,7 +15,7 @@ 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.addons.builds.volumes; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.builds.*; +package gplx.xowa.addons.bldrs.volumes; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.core.brys.*; import gplx.dbs.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wkrs.*; @@ -26,7 +26,7 @@ public class Volume_prep_cmd extends Xob_cmd__base { Volume_prep_itm[] page_itms = new Volume_prep_rdr().Parse(prep_url); Volume_prep_mgr prep_mgr = new Volume_prep_mgr(new Volume_page_loader__wiki(wiki)); Volume_make_itm[] make_itms = prep_mgr.Calc_makes(page_itms); - Bry_bfr bfr = Bry_bfr.new_(); + Bry_bfr bfr = Bry_bfr_.New(); for (Volume_make_itm make_itm : make_itms) { make_itm.To_bfr(bfr); bfr.Add_byte_nl(); diff --git a/400_xowa/src/gplx/xowa/addons/builds/volumes/Volume_prep_itm.java b/400_xowa/src/gplx/xowa/addons/bldrs/volumes/Volume_prep_itm.java similarity index 89% rename from 400_xowa/src/gplx/xowa/addons/builds/volumes/Volume_prep_itm.java rename to 400_xowa/src/gplx/xowa/addons/bldrs/volumes/Volume_prep_itm.java index 157a9b048..1df1ddb28 100644 --- a/400_xowa/src/gplx/xowa/addons/builds/volumes/Volume_prep_itm.java +++ b/400_xowa/src/gplx/xowa/addons/bldrs/volumes/Volume_prep_itm.java @@ -15,7 +15,7 @@ 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.addons.builds.volumes; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.builds.*; +package gplx.xowa.addons.bldrs.volumes; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.core.brys.*; class Volume_prep_itm implements Bry_bfr_able { public int Prep_id = 0; diff --git a/400_xowa/src/gplx/xowa/addons/builds/volumes/Volume_prep_mgr.java b/400_xowa/src/gplx/xowa/addons/bldrs/volumes/Volume_prep_mgr.java similarity index 91% rename from 400_xowa/src/gplx/xowa/addons/builds/volumes/Volume_prep_mgr.java rename to 400_xowa/src/gplx/xowa/addons/bldrs/volumes/Volume_prep_mgr.java index 23581b8b7..8a484482d 100644 --- a/400_xowa/src/gplx/xowa/addons/builds/volumes/Volume_prep_mgr.java +++ b/400_xowa/src/gplx/xowa/addons/bldrs/volumes/Volume_prep_mgr.java @@ -15,11 +15,11 @@ 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.addons.builds.volumes; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.builds.*; +package gplx.xowa.addons.bldrs.volumes; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; class Volume_prep_mgr { private final Volume_page_loader loader; private final Volume_page_itm tmp_page = new Volume_page_itm(); - private final List_adp list = List_adp_.new_(); + private final List_adp list = List_adp_.New(); public Volume_prep_mgr(Volume_page_loader loader) {this.loader = loader;} public Volume_make_itm[] Calc_makes(Volume_prep_itm[] ary) { Volume_prep_ctx ctx = new Volume_prep_ctx(); diff --git a/400_xowa/src/gplx/xowa/addons/builds/volumes/Volume_prep_rdr.java b/400_xowa/src/gplx/xowa/addons/bldrs/volumes/Volume_prep_rdr.java similarity index 89% rename from 400_xowa/src/gplx/xowa/addons/builds/volumes/Volume_prep_rdr.java rename to 400_xowa/src/gplx/xowa/addons/bldrs/volumes/Volume_prep_rdr.java index dea7b54ca..7e196f7ec 100644 --- a/400_xowa/src/gplx/xowa/addons/builds/volumes/Volume_prep_rdr.java +++ b/400_xowa/src/gplx/xowa/addons/bldrs/volumes/Volume_prep_rdr.java @@ -15,12 +15,12 @@ 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.addons.builds.volumes; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.builds.*; +package gplx.xowa.addons.bldrs.volumes; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; class Volume_prep_rdr { public Volume_prep_itm[] Parse(Io_url url) {return Parse(Io_mgr.Instance.LoadFilBryOr(url, null));} public Volume_prep_itm[] Parse(byte[] src) { if (src == null) return Volume_prep_itm.Ary_empty; - List_adp rv = List_adp_.new_(); + List_adp rv = List_adp_.New(); byte[][] lines = Bry_split_.Split_lines(src); int lines_len = lines.length; for (int i = 0; i < lines_len; ++i) { diff --git a/400_xowa/src/gplx/xowa/addons/builds/volumes/Volume_prep_rdr_tst.java b/400_xowa/src/gplx/xowa/addons/bldrs/volumes/Volume_prep_rdr_tst.java similarity index 89% rename from 400_xowa/src/gplx/xowa/addons/builds/volumes/Volume_prep_rdr_tst.java rename to 400_xowa/src/gplx/xowa/addons/bldrs/volumes/Volume_prep_rdr_tst.java index 764caad48..1cba659b1 100644 --- a/400_xowa/src/gplx/xowa/addons/builds/volumes/Volume_prep_rdr_tst.java +++ b/400_xowa/src/gplx/xowa/addons/bldrs/volumes/Volume_prep_rdr_tst.java @@ -15,7 +15,7 @@ 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.addons.builds.volumes; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.builds.*; +package gplx.xowa.addons.bldrs.volumes; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import org.junit.*; import gplx.core.tests.*; public class Volume_prep_rdr_tst { private final Volume_prep_rdr_fxt fxt = new Volume_prep_rdr_fxt(); diff --git a/400_xowa/src/gplx/xowa/addons/builds/centrals/Xoa_dashboard_bridge.java b/400_xowa/src/gplx/xowa/addons/builds/centrals/Xoa_dashboard_bridge.java deleted file mode 100644 index 0cf092636..000000000 --- a/400_xowa/src/gplx/xowa/addons/builds/centrals/Xoa_dashboard_bridge.java +++ /dev/null @@ -1,49 +0,0 @@ -/* -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.addons.builds.centrals; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.builds.*; -import gplx.langs.jsons.*; -public class Xoa_dashboard_bridge implements gplx.xowa.htmls.bridges.Bridge_cmd_itm { - public void Init_by_app(Xoa_app app) {} - public String Exec(Json_nde data) { - Xobc_ui_mgr dl_mgr = Xoa_dashboard_special.Download_mgr; - byte proc_id = proc_hash.Get_as_byte_or(data.Get_as_bry_or(Msg__proc, null), Byte_ascii.Max_7_bit); - Json_nde args = data.Get_kv(Msg__args).Val_as_nde(); - switch (proc_id) { - case Proc__init: dl_mgr.Init(); break; - case Proc__todo__move_to_work: dl_mgr.Todo__move_to_work(args.Get_as_str("job_uid")); break; - case Proc__work__resume: dl_mgr.Work__resume(args.Get_as_str("job_uid")); break; - case Proc__work__pause: dl_mgr.Work__pause(args.Get_as_str("job_uid")); break; - case Proc__work__cancel: dl_mgr.Work__cancel(args.Get_as_str("job_uid")); break; - default: throw Err_.new_unhandled_default(proc_id); - } - return ""; - } - private static final byte[] Msg__proc = Bry_.new_a7("proc"), Msg__args = Bry_.new_a7("args"); - private static final byte Proc__init = 0, Proc__todo__move_to_work = 1, Proc__work__resume = 2, Proc__work__pause = 3, Proc__work__cancel = 4; - private static final Hash_adp_bry proc_hash = Hash_adp_bry.cs() - .Add_str_byte("init" , Proc__init) - .Add_str_byte("todo__move_to_work" , Proc__todo__move_to_work) - .Add_str_byte("work__resume__send" , Proc__work__resume) - .Add_str_byte("work__pause__send" , Proc__work__pause) - .Add_str_byte("work__cancel__send" , Proc__work__cancel) - ; - - public byte[] Key() {return BRIDGE_KEY;} - public static final byte[] BRIDGE_KEY = Bry_.new_a7("builder_central.exec"); - public static final Xoa_dashboard_bridge Prototype = new Xoa_dashboard_bridge(); Xoa_dashboard_bridge() {} -} diff --git a/400_xowa/src/gplx/xowa/addons/builds/centrals/Xoa_dashboard_file_mgr.java b/400_xowa/src/gplx/xowa/addons/builds/centrals/Xoa_dashboard_file_mgr.java deleted file mode 100644 index 726eedd1f..000000000 --- a/400_xowa/src/gplx/xowa/addons/builds/centrals/Xoa_dashboard_file_mgr.java +++ /dev/null @@ -1,83 +0,0 @@ -/* -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.addons.builds.centrals; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.builds.*; -import gplx.core.gfobjs.*; import gplx.xowa.guis.cbks.*; -class Xoa_dashboard_file_mgr { - private final Xog_cbk_mgr cbk_mgr; - private final Ordered_hash hash = Ordered_hash_.New(); - public Xoa_dashboard_file_mgr(Xog_cbk_mgr cbk_mgr) { - this.cbk_mgr = cbk_mgr; - } - public void Add(Xobc_file_itm itm) {hash.Add(itm.Job_uid(), itm);} - public void Clear() {hash.Clear();} - public int Len() {return hash.Len();} - public Xobc_file_itm Get_at(int i) {return (Xobc_file_itm)hash.Get_at(i);} - public Xobc_file_itm Get_by(String k) {return (Xobc_file_itm)hash.Get_by(k);} - public Xobc_file_itm Del_by(String k) { - Xobc_file_itm rv = (Xobc_file_itm)hash.Get_by(k); - hash.Del(k); - return rv; - } - public void Exec_all(String invk_cmd) { - int len = hash.Len(); - for (int i = 0; i < len; ++i) { - Xobc_file_itm itm = (Xobc_file_itm)hash.Get_at(i); - GfoInvkAble_.Invk(itm, invk_cmd); - } - } - public void Exec_one(String invk_cmd, String file_id) {this.Exec_one(invk_cmd, file_id, null, null);} - public void Exec_one(String invk_cmd, String file_id, String send_func, Gfobj_nde send_data) { - Xobc_file_itm itm = (Xobc_file_itm)hash.Get_by(file_id); - GfoInvkAble_.Invk(itm, invk_cmd); - if (send_func != null) cbk_mgr.Send_json(send_func, send_data); - } - public void Move_all(Xoa_dashboard_file_mgr trg) {this.Move_all(trg, null);} - public void Move_all(Xoa_dashboard_file_mgr trg, String invk_cmd) { - List_adp tmp = List_adp_.new_(); - int len = hash.Len(); - for (int i = 0; i < len; ++i) - tmp.Add((Xobc_file_itm)hash.Get_at(i)); - for (int i = 0; i < len; ++i) { - Xobc_file_itm itm = (Xobc_file_itm)tmp.Get_at(i); - if (invk_cmd != null) GfoInvkAble_.Invk(itm, invk_cmd); - hash.Del(itm.Job_uid()); - trg.Add(itm); - } - } - public void Move_one(String file_id, Xoa_dashboard_file_mgr trg) {this.Move_one(file_id, trg, null, null, null);} - public void Move_one(String file_id, Xoa_dashboard_file_mgr trg, String invk_cmd) {this.Move_one(file_id, trg, invk_cmd, null, null);} - public void Move_one(String file_id, Xoa_dashboard_file_mgr trg, String invk_cmd, String send_func, Gfobj_nde send_data) { - Xobc_file_itm itm = (Xobc_file_itm)hash.Get_by(file_id); - if (invk_cmd != null) GfoInvkAble_.Invk(itm, invk_cmd); - hash.Del(file_id); - trg.Add(itm); - if (send_func != null) cbk_mgr.Send_json(send_func, send_data); - } - public void To_nde(Bry_bfr tmp_bfr, Gfobj_ary ary_obj) { - Gfobj_ary_nde ary = (Gfobj_ary_nde)ary_obj; - List_adp list = List_adp_.new_(); - int len = hash.Len(); - for (int i = 0; i < len; ++i) { - Xobc_file_itm sub_itm = (Xobc_file_itm)hash.Get_at(i); - Gfobj_nde sub_nde = Gfobj_nde.New(); - sub_itm.Write_to_nde(tmp_bfr, sub_nde); - list.Add(sub_nde); - } - ary.Ary_nde_((Gfobj_nde[])list.To_ary_and_clear(Gfobj_nde.class)); - } -} diff --git a/400_xowa/src/gplx/xowa/addons/builds/centrals/Xoa_dashboard_special.java b/400_xowa/src/gplx/xowa/addons/builds/centrals/Xoa_dashboard_special.java deleted file mode 100644 index 407c306bf..000000000 --- a/400_xowa/src/gplx/xowa/addons/builds/centrals/Xoa_dashboard_special.java +++ /dev/null @@ -1,63 +0,0 @@ -/* -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.addons.builds.centrals; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.builds.*; -import gplx.xowa.specials.*; import gplx.core.net.*; import gplx.xowa.wikis.pages.*; -import gplx.xowa.addons.builds.centrals.itms.*; import gplx.xowa.addons.builds.centrals.*; -import gplx.xowa.addons.apps.file_browsers.*; -import gplx.core.security.*; import gplx.core.progs.*; import gplx.xowa.guis.cbks.*; -public class Xoa_dashboard_special implements Xows_page { - public static Xobc_ui_mgr Download_mgr; - private static boolean init = true; - public void Special__gen(Xow_wiki wiki, Xoa_page page, Xoa_url url, Xoa_ttl ttl) { - if (init) { - init = false; - Download_mgr = new Xobc_ui_mgr(wiki.App().Gui__cbk_mgr()); - wiki.App().Gui__cbk_mgr().Reg(new gplx.xowa.guis.cbks.swts.Xog_cbk_wkr__swt(((Xoae_app)wiki.App()).Gui_mgr())); - } - Download_mgr.Clear(); - Io_url addon_dir = wiki.App().Fsys_mgr().Bin_addon_dir().GenSubDir_nest("bldr", "central"); - Xopage_html_data html_data = Write_html(wiki.App(), addon_dir); - html_data.Apply(page); - } - private static Xopage_html_data Write_html(Xoa_app app, Io_url addon_dir) { - // write body - Xodl_itm_regy owner_itm = new Xodl_itm_regy(); - byte[] template_src = Io_mgr.Instance.LoadFilBry(addon_dir.GenSubFil_nest("tmpl", "bldr.central.main.mustache.html")); - Bry_bfr tmp_bfr = Bry_bfr.new_(); - byte[] body = gplx.langs.mustaches.Mustache_wtr_.Write_to_bry(tmp_bfr, template_src, owner_itm); - - // write head - Xopage_html_data rv = new Xopage_html_data(Display_ttl, body); - rv.Head_tags().Add(Xopg_tag_itm.New_css_file(addon_dir.GenSubFil_nest("css", "bldr.central.css"))); - rv.Head_tags().Add(Xopg_tag_itm.New_js_file(addon_dir.GenSubFil_nest("js", "lib", "mustache.js"))); - rv.Head_tags().Add(Xopg_tag_itm.New_html_code(addon_dir.GenSubFil_nest("tmpl", "bldr.central.row.mustache.html"), "bldr.central.row")); - rv.Tail_tags().Add(Xopg_tag_itm.New_js_file(addon_dir.GenSubFil_nest("js", "xo.elem.js"))); - rv.Tail_tags().Add(Xopg_tag_itm.New_js_file(addon_dir.GenSubFil_nest("js", "xo.tmpl.js"))); - rv.Tail_tags().Add(Xopg_tag_itm.New_js_file(addon_dir.GenSubFil_nest("js", "xo.notify.js"))); - rv.Tail_tags().Add(Xopg_tag_itm.New_js_file(addon_dir.GenSubFil_nest("js", "xo.server.js"))); - rv.Tail_tags().Add(Xopg_tag_itm.New_js_file(addon_dir.GenSubFil_nest("js", "bldr.central.util.js"))); - rv.Tail_tags().Add(Xopg_tag_itm.New_js_file(addon_dir.GenSubFil_nest("js", "bldr.central.js"))); - return rv; - } - - public static final String SPECIAL_KEY = "XowaWikiDownload"; - public static final byte[] Display_ttl = Bry_.new_a7("Download Central"); - public Xows_special_meta Special__meta() {return new Xows_special_meta(Xows_special_meta_.Src__xowa, SPECIAL_KEY);} - public static final Xows_page Prototype = new Xoa_dashboard_special(); - public Xows_page Special__clone() {return this;} -} diff --git a/400_xowa/src/gplx/xowa/addons/builds/centrals/Xobc_file_itm.java b/400_xowa/src/gplx/xowa/addons/builds/centrals/Xobc_file_itm.java deleted file mode 100644 index 39bfcb93c..000000000 --- a/400_xowa/src/gplx/xowa/addons/builds/centrals/Xobc_file_itm.java +++ /dev/null @@ -1,117 +0,0 @@ -/* -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.addons.builds.centrals; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.builds.*; -import gplx.core.gfobjs.*; import gplx.xowa.guis.cbks.*; -import gplx.xowa.addons.builds.centrals.jobs.*; -class Xobc_file_itm implements GfoInvkAble { - public Xobc_file_itm(Xog_cbk_mgr cbk_mgr, String job_uid, String job_name) { - this.job_uid = job_uid; - this.job_name = job_name; - this.tasks = new Xobc_job_itm[] - { new Xobc_job_itm__verify(cbk_mgr, "77801297-db0a-47b4-af95-0db1eb63a192", Io_url_.new_fil_("C:\\xowa\\wiki\\en.wikipedia.org\\en.wikipedia.org-core.xowa")) - }; - this.tasks_len = tasks.length; - } - public String Job_uid() {return job_uid;} private final String job_uid; // guid - public String Job_name() {return job_name;} private final String job_name; // Simple Wikipedia: html - public String Job_type() {return job_type;} private final String job_type = "gplx.xowa.bldr.wikis.copy_part"; - public Xobc_job_itm[] Tasks() {return tasks;} private Xobc_job_itm[] tasks; private int tasks_len = 0; - public void Pause() { - for (int i = 0; i < tasks_len; ++i) { - Xobc_job_itm task = tasks[i]; - if ( !task.Prog__paused() // ignore already paused tasks - && task.Prog__started() // only pause tasks if started; don't pause inited tasks - ) - task.Prog__pause(); - } - } - public void Resume() { - for (int i = 0; i < tasks_len; ++i) { - Xobc_job_itm task = tasks[i]; - if (task.Prog__paused()) - task.Prog__resume(); - else { - gplx.core.threads.Thread_adp_.invk_("job: " + task.Job_name(), task, "").Start(); - break; // only start one - } - } - } - public void Cancel() { - for (int i = 0; i < tasks_len; ++i) { - Xobc_job_itm task = tasks[i]; - task.Prog__cancel(); - } - } - public void Write_to_nde(Bry_bfr tmp_bfr, Gfobj_nde itm) { - itm.Add_str ("job_uid" , job_uid); - itm.Add_str ("job_name" , job_name); - Gfobj_ary_nde ary_nde = itm.New_ary_nde("subs"); - Gfobj_nde[] ary = new Gfobj_nde[tasks_len]; - ary_nde.Ary_nde_(ary); - long prog_time_end = 0; - long prog_data_end = 0; - for (int i = 0; i < tasks_len; ++i) { - Xobc_job_itm sub_itm = tasks[i]; - Gfobj_nde sub_nde = Gfobj_nde.New(); - ary[i] = sub_nde; - sub_itm.Write_to_nde(tmp_bfr, sub_nde); - prog_time_end += sub_itm.Prog__end(); - } - itm.Add_str ("prog_data_end_str" , gplx.core.ios.Io_size_.To_str_new(tmp_bfr, prog_data_end, 2)); - itm.Add_str ("prog_time_end_str" , Time_dhms_.To_str(tmp_bfr, prog_time_end, true, 2)); - } - public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { - if (String_.Eq(k, Invk__pause)) this.Pause(); - else if (String_.Eq(k, Invk__resume)) this.Resume(); - else if (String_.Eq(k, Invk__cancel)) this.Cancel(); - else return GfoInvkAble_.Rv_unhandled; - return this; - } - public static final String Invk__pause = "pause", Invk__resume = "resume", Invk__cancel = "cancel"; -} -/* - { prog_finished : 0 - , prog_data_cur : 0 - , prog_data_end : 10 - , prog_data_end_str : '1.81 gb' - , prog_time_cur : 0 - , prog_time_end : 30 - , prog_time_end_str : '30' - , jobs: - [ - { job_type : 'gplx.xowa.core.security.verify' - , job_name : 'verifying' - , job_sort : 0 - , job_uid : '77801297-db0a-47b4-af95-0db1eb63a192' - , prog_data_cur : 0 - , prog_data_end : 1819264175 - , prog_time_cur : 0 - , prog_time_end : 10 - } - , { job_type : 'gplx.xowa.core.ios.zips.zip_decompress' - , job_name : 'unzipping' - , job_sort : 1 - , job_uid : '79fbfebe-0165-42b0-b71a-c66f95cb7fd1' - , prog_data_cur : 0 - , prog_data_end : 1819264175 - , prog_time_cur : 0 - , prog_time_end : 20 - } - ] - } -*/ diff --git a/400_xowa/src/gplx/xowa/addons/builds/centrals/Xobc_rate_mgr.java b/400_xowa/src/gplx/xowa/addons/builds/centrals/Xobc_rate_mgr.java deleted file mode 100644 index e186536ee..000000000 --- a/400_xowa/src/gplx/xowa/addons/builds/centrals/Xobc_rate_mgr.java +++ /dev/null @@ -1,31 +0,0 @@ -/* -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.addons.builds.centrals; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.builds.*; -class Xobc_rate_mgr { - private final Ordered_hash hash = Ordered_hash_.New(); - public int Len() {return hash.Len();} - public Xobc_rate_itm Get_at(int i) {return (Xobc_rate_itm)hash.Get_at(i);} - public Xobc_rate_itm Get_by(String k) {return (Xobc_rate_itm)hash.Get_by(k);} - public void Add(Xobc_rate_itm rate) {hash.Add_if_dupe_use_nth(rate.Key(), rate);} -} -class Xobc_rate_itm { - public Xobc_rate_itm(String type, String key, long rate) {this.type = type; this.key = key; this.rate = rate;} - public String Type() {return type;} private final String type; // EX: download - public String Key() {return key;} private final String key; // EX: http://archive.org|C:\xowa\wiki\ - public long Rate() {return rate;} private final long rate; // EX: 4000000 -} diff --git a/400_xowa/src/gplx/xowa/addons/builds/centrals/Xobc_ui_mgr.java b/400_xowa/src/gplx/xowa/addons/builds/centrals/Xobc_ui_mgr.java deleted file mode 100644 index 019c31321..000000000 --- a/400_xowa/src/gplx/xowa/addons/builds/centrals/Xobc_ui_mgr.java +++ /dev/null @@ -1,74 +0,0 @@ -/* -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.addons.builds.centrals; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.builds.*; -import gplx.xowa.guis.cbks.*; import gplx.core.gfobjs.*; -public class Xobc_ui_mgr { - private final Xoa_dashboard_file_mgr work_mgr, todo_mgr, done_mgr; - private final Xog_cbk_mgr cbk_mgr; - public Xobc_ui_mgr(Xog_cbk_mgr cbk_mgr) { - this.cbk_mgr = cbk_mgr; - work_mgr = new Xoa_dashboard_file_mgr(cbk_mgr); - todo_mgr = new Xoa_dashboard_file_mgr(cbk_mgr); - done_mgr = new Xoa_dashboard_file_mgr(cbk_mgr); - } - public void Init() { - todo_mgr.Clear(); - todo_mgr.Add(new Xobc_file_itm(cbk_mgr, "0", "Simple Wikipedia: html")); - - Bry_bfr tmp_bfr = Bry_bfr.new_(); - Gfobj_nde root = Gfobj_nde.New(); - Gfobj_nde lists_nde = root.New_nde("lists"); - Gfobj_ary todo_ary = lists_nde.New_ary_nde("todo"); - todo_mgr.To_nde(tmp_bfr, todo_ary); - cbk_mgr.Send_json("xo.bldr.core.init__recv", root); - } - public void Clear() { - work_mgr.Clear(); - todo_mgr.Clear(); - done_mgr.Clear(); - } - public void Todo__move_to_work(String job_uid) {todo_mgr.Move_one(job_uid, work_mgr, null, "xo.bldr.todo.move_to_work__recv", Gfobj_nde.New().Add_str("job_uid", job_uid));} - public void Work__resume(String job_uid) {work_mgr.Exec_one(Xobc_file_itm.Invk__resume, job_uid, "xo.bldr.work.resume__recv", Gfobj_nde.New().Add_str("job_uid", job_uid));} - public void Work__pause(String job_uid) {work_mgr.Exec_one(Xobc_file_itm.Invk__pause, job_uid, "xo.bldr.work.pause__recv", Gfobj_nde.New().Add_str("job_uid", job_uid));} - public void Work__cancel(String job_uid) {work_mgr.Move_one(job_uid, todo_mgr, Xobc_file_itm.Invk__cancel, "xo.bldr.work.cancel__recv", Gfobj_nde.New().Add_str("job_uid", job_uid));} - public void Work__pause_all() {work_mgr.Exec_all(Xobc_file_itm.Invk__pause);} - public void Work__resume_all() { - int len = work_mgr.Len(); - for (int i = 0; i < len; ++i) { - Xobc_file_itm itm = work_mgr.Get_at(i); - itm.Resume(); - } - if (len > 0) { // TODO: if multiple items paused; send back notify for each paused item - Xobc_file_itm itm = work_mgr.Get_at(0); - itm.Resume(); - cbk_mgr.Send_json("work__resume__recv", Gfobj_nde.New().Add_str("file_id", itm.Job_uid())); - } - } - public void Work__cancel_all() {work_mgr.Move_all(todo_mgr, Xobc_file_itm.Invk__cancel);} - public void Work__complete(String file_id) {work_mgr.Move_one(file_id, done_mgr);} // not called by ui called by task wkr - public void Todo__load(String url) { - // Xobc_job_itm - } - - /* - public void User__rates__load() {} - public void User__rates__save() {} - public void Done__save() {} - public void Done__load() {} - */ -} diff --git a/400_xowa/src/gplx/xowa/addons/builds/centrals/itms/Xodl_itm_pack.java b/400_xowa/src/gplx/xowa/addons/builds/centrals/itms/Xodl_itm_pack.java deleted file mode 100644 index ae2dfc776..000000000 --- a/400_xowa/src/gplx/xowa/addons/builds/centrals/itms/Xodl_itm_pack.java +++ /dev/null @@ -1,81 +0,0 @@ -/* -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.addons.builds.centrals.itms; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.builds.*; import gplx.xowa.addons.builds.centrals.*; -import gplx.langs.jsons.*; import gplx.langs.mustaches.*; -public class Xodl_itm_pack implements Mustache_doc_itm { - public int Id = -1; // EX: 1 - public String Wiki = ""; // EX: 'simple.wikipedia.org' - public String Date = ""; // EX: '2016-04-07' - public String Type = ""; // EX: 'html' or 'file' - public String Name = ""; // EX: 'html: complete' - public long Size = 0; // EX: 1234 - public String Url = ""; // EX: https://archive.org/download/Xowa_simplewiki_latest/Xowa_simplewiki_2016-04-06_html.7z - public int Ns = -1; // EX: 0 - public int Part = -1; // EX: 1, 2 - public Xodl_itm_pack() {} - public Xodl_itm_pack(int id, String wiki, String date, String type, int ns, int part, String name, long size, String url) { - this.Id = id; - this.Wiki = wiki; - this.Date = date; - this.Type = type; - this.Ns = ns; - this.Part = part; - this.Name = name; - this.Size = size; - this.Url = url; - } - public String Download__src() {return Url;} - public Io_url Download__trg() {return trg;} private Io_url trg; public void Download__trg_(Io_url v) {this.trg = v;} - public void To_json(Json_wtr wtr) { - wtr.Kv_int("id", Id); - wtr.Kv_str("wiki", Wiki); - wtr.Kv_str("date", Date); - wtr.Kv_str("type", Type); - wtr.Kv_str("name", Name); - wtr.Kv_long("size", Size); - wtr.Kv_str("url", Url); - if (Ns != -1) wtr.Kv_int("ns", Ns); - if (Part != -1) wtr.Kv_int("part", Part); - } - public void By_json(Json_nde nde) { - this.Id = nde.Get_as_int("id"); - this.Wiki = nde.Get_as_str("wiki"); - this.Date = nde.Get_as_str("date"); - this.Type = nde.Get_as_str("type"); - this.Name = nde.Get_as_str("name"); - this.Size = nde.Get_as_long("size"); - this.Url = nde.Get_as_str("url"); - this.Ns = nde.Get_as_int_or("ns", -1); - this.Part = nde.Get_as_int_or("part", -1); - } - public boolean Mustache__write(String key, Mustache_bfr bfr) { - if (String_.Eq(key, "id")) bfr.Add_int(Id); - else if (String_.Eq(key, "wiki")) bfr.Add_str_u8(Wiki); - else if (String_.Eq(key, "date")) bfr.Add_str_u8(Date); - else if (String_.Eq(key, "type")) bfr.Add_str_u8(Type); - else if (String_.Eq(key, "name")) bfr.Add_str_u8(Name); - else if (String_.Eq(key, "size")) bfr.Add_long(Size); - else if (String_.Eq(key, "url")) bfr.Add_str_u8(Url); - else if (String_.Eq(key, "ns")) bfr.Add_int(Ns); - else if (String_.Eq(key, "part")) bfr.Add_int(Part); - else return false; - return true; - } - public Mustache_doc_itm[] Mustache__subs(String key) {return Mustache_doc_itm_.Ary__empty;} - public static final Xodl_itm_pack[] Ary_empty = new Xodl_itm_pack[0]; -} diff --git a/400_xowa/src/gplx/xowa/addons/builds/centrals/itms/Xodl_itm_regy.java b/400_xowa/src/gplx/xowa/addons/builds/centrals/itms/Xodl_itm_regy.java deleted file mode 100644 index 65c37fd6f..000000000 --- a/400_xowa/src/gplx/xowa/addons/builds/centrals/itms/Xodl_itm_regy.java +++ /dev/null @@ -1,76 +0,0 @@ -/* -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.addons.builds.centrals.itms; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.builds.*; import gplx.xowa.addons.builds.centrals.*; -import gplx.langs.jsons.*; import gplx.langs.mustaches.*; -public class Xodl_itm_regy implements Mustache_doc_itm { - public Xodl_itm_pack[] Packs = Xodl_itm_pack.Ary_empty; - public Xodl_itm_regy() {} - public Xodl_itm_regy(Xodl_itm_pack[] pack_ary) {this.Packs = pack_ary;} - public Xodl_itm_pack[] Packs__select(int[] ids) { - Hash_adp packs_hash = Hash_adp_.new_(); - int packs_len = Packs.length; - for (int i = 0; i < packs_len; ++i) { - Xodl_itm_pack pack = Packs[i]; - packs_hash.Add(pack.Id, pack); - } - - List_adp rv = List_adp_.new_(); - int ids_len = ids.length; - for (int i = 0; i < ids_len; ++i) { - int id = ids[i]; - Xodl_itm_pack pack = (Xodl_itm_pack)packs_hash.Get_by(id); - if (pack != null) - rv.Add(pack); - } - return (Xodl_itm_pack[])rv.To_ary_and_clear(Xodl_itm_pack.class); - } - public void To_json(Json_wtr wtr) { - wtr.Doc_ary_bgn(); - int wikis_len = Packs.length; - for (int i = 0; i < wikis_len; ++i) { - wtr.Nde_bgn_ary(); - Xodl_itm_pack wiki = Packs[i]; - wiki.To_json(wtr); - wtr.Nde_end(); - } - wtr.Doc_ary_end(); - } - public void By_json(Json_grp ary) { - int len = ary.Len(); - Packs = new Xodl_itm_pack[len]; - for (int i = 0; i < len; ++i) { - Json_nde sub_nde = ary.Get_as_nde(i); - Xodl_itm_pack sub_itm = new Xodl_itm_pack(); - Packs[i] = sub_itm; - sub_itm.By_json(sub_nde); - } - } - public boolean Mustache__write(String key, Mustache_bfr bfr) {return false;} - public Mustache_doc_itm[] Mustache__subs(String key) { - if (String_.Eq(key, "packs")) return Packs; - return Mustache_doc_itm_.Ary__empty; - } - public static Xodl_itm_regy Load_by_json(Io_url url) {return Load_by_json(Io_mgr.Instance.LoadFilBry(url));} - public static Xodl_itm_regy Load_by_json(byte[] bry) { - Xodl_itm_regy rv = new Xodl_itm_regy(); - Json_parser parser = new Json_parser(); - Json_doc jdoc = parser.Parse(bry); - rv.By_json(jdoc.Root_grp()); - return rv; - } -} diff --git a/400_xowa/src/gplx/xowa/addons/builds/centrals/itms/Xodl_itm_regy_tst.java b/400_xowa/src/gplx/xowa/addons/builds/centrals/itms/Xodl_itm_regy_tst.java deleted file mode 100644 index b8c4ad9d4..000000000 --- a/400_xowa/src/gplx/xowa/addons/builds/centrals/itms/Xodl_itm_regy_tst.java +++ /dev/null @@ -1,68 +0,0 @@ -/* -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.addons.builds.centrals.itms; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.builds.*; import gplx.xowa.addons.builds.centrals.*; -import org.junit.*; import gplx.core.tests.*; -import gplx.langs.jsons.*; -public class Xodl_itm_regy_tst { - private final Xodl_itm_regy_fxt fxt = new Xodl_itm_regy_fxt(); - @Test public void Basic() { - fxt.Test__srl - ( Json_doc.Make_str_ary_by_apos - ( "[" - , " { 'id':1" - , " , 'wiki':'simple.wikipedia.org'" - , " , 'date':'2016-04-07'" - , " , 'type':'html'" - , " , 'name':'html: complete'" - , " , 'size':1234" - , " , 'url':'http://archive.org/Xowa_simplewiki_latest/Xowa_simplewiki_2016-04-07_html.zip'" - , " }" - , "," - , " { 'id':2" - , " , 'wiki':'simple.wikipedia.org'" - , " , 'date':'2016-04-07'" - , " , 'type':'file'" - , " , 'name':'file: complete'" - , " , 'size':4321" - , " , 'url':'http://archive.org/Xowa_simplewiki_latest/Xowa_simplewiki_2016-04-07_file.zip'" - , " }" - , "]" - ) - , fxt.Make__regy - ( fxt.Make__pack(1, "simple.wikipedia.org", "2016-04-07", "html", -1, -1, "html: complete", 1234, "http://archive.org/Xowa_simplewiki_latest/Xowa_simplewiki_2016-04-07_html.zip") - , fxt.Make__pack(2, "simple.wikipedia.org", "2016-04-07", "file", -1, -1, "file: complete", 4321, "http://archive.org/Xowa_simplewiki_latest/Xowa_simplewiki_2016-04-07_file.zip") - ) - ); - } -} -class Xodl_itm_regy_fxt { - private final Json_wtr wtr = new Json_wtr(); - public Xodl_itm_regy Make__regy(Xodl_itm_pack... pack_ary) {return new Xodl_itm_regy(pack_ary);} - public Xodl_itm_pack Make__pack(int id, String wiki, String date, String type, int ns, int part, String name, long size, String url) {return new Xodl_itm_pack(id, wiki, date, type, ns, part, name, size, url);} - public Xodl_itm_regy_fxt Test__srl(String[] json, Xodl_itm_regy regy) { - regy.To_json(wtr); - byte[][] json_bry = wtr.Bfr().To_bry_ary_and_clear(); - Gftest.Eq__ary(json, json_bry, "to_json"); - - regy = Xodl_itm_regy.Load_by_json(Bry_.Add(json_bry)); - regy.To_json(wtr); - json_bry = wtr.Bfr().To_bry_ary_and_clear(); - Gftest.Eq__ary(json, json_bry, "by_json"); - return this; - } -} diff --git a/400_xowa/src/gplx/xowa/addons/builds/centrals/jobs/Xobc_job_itm__unzip.java b/400_xowa/src/gplx/xowa/addons/builds/centrals/jobs/Xobc_job_itm__unzip.java deleted file mode 100644 index 92edb7536..000000000 --- a/400_xowa/src/gplx/xowa/addons/builds/centrals/jobs/Xobc_job_itm__unzip.java +++ /dev/null @@ -1,60 +0,0 @@ -/* -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.addons.builds.centrals.jobs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.builds.*; import gplx.xowa.addons.builds.centrals.*; -import gplx.core.progs.*; import gplx.core.gfobjs.*; -import gplx.core.ios.zips.*; import gplx.xowa.guis.cbks.*; -public class Xobc_job_itm__unzip extends Gfo_prog_ui_base implements Xobc_job_itm { - private final Xog_cbk_mgr cbk_mgr; - private long nxt_time; - public Xobc_job_itm__unzip(Xog_cbk_mgr cbk_mgr, String job_uid, Io_url url) { - this.cbk_mgr = cbk_mgr; this.job_uid = job_uid; - this.Prog__end_(10); - } - public String Job_uid() {return job_uid;} private final String job_uid; - public String Job_name() {return job_name;} private final String job_name = "unzipping"; - public Xobc_job_itm Owner() {return Xobc_job_itm_.Null;} - public Xobc_job_itm[] Subs() {return Xobc_job_itm_.Ary_empty;} - public void Task__exec() { - } - public void Write_to_nde(Bry_bfr tmp_bfr, gplx.core.gfobjs.Gfobj_nde nde) { - nde.Add_str ("job_uid" , job_uid); - nde.Add_str ("job_name" , job_name); - nde.Add_long("prog_data_cur" , this.Prog__cur()); - nde.Add_long("prog_data_end" , this.Prog__end()); - nde.Add_long("prog_time_cur" , 0); - nde.Add_long("prog_time_end" , this.Prog__end()); - } - @Override public byte Prog__notify__working(long cur, long end) { - long cur_time = gplx.core.envs.Env_.TickCount(); - if (cur_time < nxt_time) return Gfo_prog_ui_.State__started; // message came too soon. ignore it - nxt_time = cur_time + 200; - - Gfobj_nde nde = Gfobj_nde.New(); - nde.Add_str("job_uid", job_uid); - nde.Add_str("task_type", "verify"); - nde.Add_long("prog_cur", cur); - nde.Add_long("prog_end", end); - cbk_mgr.Send_json("work__update_progress", nde); - - return super.Prog__notify__working(cur, end); - } - public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { - Task__exec(); - return this; - } -} diff --git a/400_xowa/src/gplx/xowa/addons/builds/centrals/jobs/Xobc_job_itm__verify.java b/400_xowa/src/gplx/xowa/addons/builds/centrals/jobs/Xobc_job_itm__verify.java deleted file mode 100644 index 13014df72..000000000 --- a/400_xowa/src/gplx/xowa/addons/builds/centrals/jobs/Xobc_job_itm__verify.java +++ /dev/null @@ -1,65 +0,0 @@ -/* -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.addons.builds.centrals.jobs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.builds.*; import gplx.xowa.addons.builds.centrals.*; -import gplx.core.progs.*; import gplx.core.gfobjs.*; -import gplx.core.security.*; import gplx.xowa.guis.cbks.*; -public class Xobc_job_itm__verify extends Gfo_prog_ui_base implements Xobc_job_itm { - private final Xog_cbk_mgr cbk_mgr; private final Io_url url; - private long nxt_time; - public Xobc_job_itm__verify(Xog_cbk_mgr cbk_mgr, String job_uid, Io_url url) { - this.cbk_mgr = cbk_mgr; this.job_uid = job_uid; this.url = url; - this.Prog__end_(10); - } - public String Job_uid() {return job_uid;} private final String job_uid; - public String Job_name() {return job_name;} private final String job_name = "verifying"; - public Xobc_job_itm Owner() {return Xobc_job_itm_.Null;} - public Xobc_job_itm[] Subs() {return Xobc_job_itm_.Ary_empty;} - public byte[] Hash() {return hash;} private byte[] hash; - public void Task__exec() { - Hash_algo algo = Hash_algo_.New__md5(); - gplx.core.ios.IoStream stream = Io_mgr.Instance.OpenStreamRead(url); - try {this.hash = algo.Hash_stream_as_bry(this, stream);} - finally {stream.Rls();} - } - public void Write_to_nde(Bry_bfr tmp_bfr, gplx.core.gfobjs.Gfobj_nde nde) { - nde.Add_str ("job_uid" , job_uid); - nde.Add_str ("job_name" , job_name); - nde.Add_long("prog_data_cur" , this.Prog__cur()); - nde.Add_long("prog_data_end" , this.Prog__end()); - nde.Add_long("prog_time_cur" , 0); - nde.Add_long("prog_time_end" , this.Prog__end()); - } - @Override public byte Prog__notify__working(long cur, long end) { - long cur_time = gplx.core.envs.Env_.TickCount(); - if (cur_time < nxt_time) return Gfo_prog_ui_.State__started; // message came too soon. ignore it - nxt_time = cur_time + 200; - - Gfobj_nde nde = Gfobj_nde.New(); - nde.Add_str("job_uid", job_uid); - nde.Add_str("task_type", "verify"); - nde.Add_long("prog_cur", cur); - nde.Add_long("prog_end", end); - cbk_mgr.Send_json("work__update_progress", nde); - - return super.Prog__notify__working(cur, end); - } - public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { - Task__exec(); - return this; - } -} diff --git a/400_xowa/src/gplx/xowa/addons/servers/https/Http_long_poll_cmd.java b/400_xowa/src/gplx/xowa/addons/servers/https/Http_long_poll_cmd.java index d1b37fd04..1649098d5 100644 --- a/400_xowa/src/gplx/xowa/addons/servers/https/Http_long_poll_cmd.java +++ b/400_xowa/src/gplx/xowa/addons/servers/https/Http_long_poll_cmd.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.addons.servers.https; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.servers.*; public class Http_long_poll_cmd implements gplx.xowa.htmls.bridges.Bridge_cmd_itm { - private final List_adp msgs = List_adp_.new_(); + private final List_adp msgs = List_adp_.New(); private long send_time_prv = 0; public int Sleep_interval = 100; public int Send_interval = 1000; diff --git a/400_xowa/src/gplx/xowa/addons/servers/https/Xoax_long_poll_addon.java b/400_xowa/src/gplx/xowa/addons/servers/https/Xoax_long_poll_addon.java index 584481fe4..8d2399213 100644 --- a/400_xowa/src/gplx/xowa/addons/servers/https/Xoax_long_poll_addon.java +++ b/400_xowa/src/gplx/xowa/addons/servers/https/Xoax_long_poll_addon.java @@ -19,13 +19,12 @@ package gplx.xowa.addons.servers.https; import gplx.*; import gplx.xowa.*; impor import gplx.xowa.bldrs.wkrs.*; import gplx.xowa.htmls.bridges.*; public class Xoax_long_poll_addon implements Xoax_addon_itm, Xoax_addon_itm__json { - public Bridge_cmd_itm[] Json__cmds() { + public Bridge_cmd_itm[] Json_cmds() { return new Bridge_cmd_itm[] { Http_long_poll_cmd.Instance , new Http_send_msg_cmd() }; } - public static final byte[] ADDON_KEY = Bry_.new_a7("xowa.servers.https.long_poll"); - public byte[] Addon__key() {return ADDON_KEY;} + public String Addon__key() {return "xowa.servers.https.long_poll";} } diff --git a/400_xowa/src/gplx/xowa/addons/servers/https/Xog_cbk_wkr__http.java b/400_xowa/src/gplx/xowa/addons/servers/https/Xog_cbk_wkr__http.java index d92b32001..eb1de8422 100644 --- a/400_xowa/src/gplx/xowa/addons/servers/https/Xog_cbk_wkr__http.java +++ b/400_xowa/src/gplx/xowa/addons/servers/https/Xog_cbk_wkr__http.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.xowa.addons.servers.https; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.servers.*; import gplx.xowa.guis.cbks.*; import gplx.core.gfobjs.*; public class Xog_cbk_wkr__http implements Xog_cbk_wkr { - public Object Send_json(String func, Gfobj_nde data) {return null;} + public Object Send_json(Xog_cbk_trg trg, String func, Gfobj_nde data) {return null;} public void Send_prog(String head) { Http_long_poll_cmd.Instance.Send_msg(head); } diff --git a/400_xowa/src/gplx/xowa/addons/apps/ctgs/Xoax_ctg_addon.java b/400_xowa/src/gplx/xowa/addons/wikis/ctgs/Xoax_ctg_addon.java similarity index 87% rename from 400_xowa/src/gplx/xowa/addons/apps/ctgs/Xoax_ctg_addon.java rename to 400_xowa/src/gplx/xowa/addons/wikis/ctgs/Xoax_ctg_addon.java index 567a3cd3b..9046d9b78 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/ctgs/Xoax_ctg_addon.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/ctgs/Xoax_ctg_addon.java @@ -15,9 +15,9 @@ 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.addons.apps.ctgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; +package gplx.xowa.addons.wikis.ctgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.wikis.data.tbls.*; -public class Xoax_ctg_addon implements Xoax_addon_itm { // TODO:mem_mgr +public class Xoax_ctg_addon implements Xoax_addon_itm { // TODO_OLD:mem_mgr private final Xow_wiki wiki; private final Hash_adp_bry hash = Hash_adp_bry.cs(); public Xoax_ctg_addon(Xow_wiki wiki) {this.wiki = wiki;} @@ -52,6 +52,5 @@ public class Xoax_ctg_addon implements Xoax_addon_itm { // TODO:mem_mgr return rv; } - public static final byte[] ADDON_KEY = Bry_.new_a7("xowa.apps.category"); - public byte[] Addon__key() {return ADDON_KEY;} + public String Addon__key() {return ADDON_KEY;} private static final String ADDON_KEY = "xowa.apps.category"; } diff --git a/400_xowa/src/gplx/xowa/addons/apps/ctgs/Xoctg_ctg_itm.java b/400_xowa/src/gplx/xowa/addons/wikis/ctgs/Xoctg_ctg_itm.java similarity index 88% rename from 400_xowa/src/gplx/xowa/addons/apps/ctgs/Xoctg_ctg_itm.java rename to 400_xowa/src/gplx/xowa/addons/wikis/ctgs/Xoctg_ctg_itm.java index d8a825467..f2f3c10fe 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/ctgs/Xoctg_ctg_itm.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/ctgs/Xoctg_ctg_itm.java @@ -15,7 +15,7 @@ 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.addons.apps.ctgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; +package gplx.xowa.addons.wikis.ctgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; public class Xoctg_ctg_itm { public Xoctg_ctg_itm(byte[] ttl_wo_ns, int pages, int subcs, int files) { this.Ttl_wo_ns = ttl_wo_ns; diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/sqls/Xob_css_cmd.java b/400_xowa/src/gplx/xowa/addons/wikis/htmls/css/bldrs/Xob_css_cmd.java similarity index 79% rename from 400_xowa/src/gplx/xowa/bldrs/cmds/texts/sqls/Xob_css_cmd.java rename to 400_xowa/src/gplx/xowa/addons/wikis/htmls/css/bldrs/Xob_css_cmd.java index e62684dd6..789bb56ab 100644 --- a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/sqls/Xob_css_cmd.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/htmls/css/bldrs/Xob_css_cmd.java @@ -15,8 +15,9 @@ 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.cmds.texts.sqls; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*; import gplx.xowa.bldrs.cmds.texts.*; -import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wkrs.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.data.*; import gplx.xowa.htmls.css.*; +package gplx.xowa.addons.wikis.htmls.css.bldrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.htmls.*; import gplx.xowa.addons.wikis.htmls.css.*; +import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wkrs.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.data.*; +import gplx.xowa.addons.wikis.htmls.css.mgrs.*; public class Xob_css_cmd implements Xob_cmd { private final Xob_bldr bldr; private final Xowe_wiki wiki; private final Gfo_usr_dlg usr_dlg; private Io_url css_dir; private String css_key; @@ -32,12 +33,12 @@ public class Xob_css_cmd implements Xob_cmd { bldr.App().Html__css_installer().Install(wiki, null); // download from wmf usr_dlg.Plog_many("", "", Cmd_key() + ":css_dir; dir=~{0}", css_dir.Raw()); wiki.Init_db_mgr(); // NOTE: must follow Install b/c Init_assert also calls Install; else will download any css from db - Xowd_db_file core_db = wiki.Db_mgr_as_sql().Core_data_mgr().Db__core(); + Xow_db_file core_db = wiki.Db_mgr_as_sql().Core_data_mgr().Db__core(); core_db.Conn().Txn_bgn("bldr__css"); core_db.Tbl__css_core().Create_tbl(); core_db.Tbl__css_file().Create_tbl(); - gplx.xowa.htmls.css.Xowd_css_core_mgr.Set(core_db.Tbl__css_core(), core_db.Tbl__css_file(), css_dir, css_key); - core_db.Tbl__cfg().Upsert_yn(Xow_cfg_consts.Grp__wiki_schema, Xowd_db_file_schema_props.Key__tbl_css_core, Bool_.Y); + gplx.xowa.addons.wikis.htmls.css.mgrs.Xowd_css_core_mgr.Set(core_db.Tbl__css_core(), core_db.Tbl__css_file(), css_dir, css_key); + core_db.Tbl__cfg().Upsert_yn(Xow_cfg_consts.Grp__wiki_schema, Xow_db_file_schema_props.Key__tbl_css_core, Bool_.Y); core_db.Conn().Txn_end(); usr_dlg.Plog_many("", "", Cmd_key() + ":end;"); } @@ -47,7 +48,7 @@ public class Xob_css_cmd implements Xob_cmd { public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_css_dir_)) css_dir = m.ReadIoUrl("v"); else if (ctx.Match(k, Invk_css_key_)) css_key = m.ReadStr("v"); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String Invk_css_dir_ = "css_dir_", Invk_css_key_ = "css_key_"; } diff --git a/400_xowa/src/gplx/xowa/addons/wikis/htmls/css/dbs/Css_db_mgr.java b/400_xowa/src/gplx/xowa/addons/wikis/htmls/css/dbs/Css_db_mgr.java new file mode 100644 index 000000000..2fc730655 --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/wikis/htmls/css/dbs/Css_db_mgr.java @@ -0,0 +1,50 @@ +/* +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.addons.wikis.htmls.css.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.htmls.*; import gplx.xowa.addons.wikis.htmls.css.*; +import gplx.dbs.*; import gplx.xowa.wikis.data.*; +public class Css_db_mgr { + private final Xow_wiki wiki; + public Css_db_mgr(Xow_wiki wiki) { + this.wiki = wiki; + } + public Db_conn Conn() {return conn;} private Db_conn conn; + public Xowd_css_core_tbl Tbl__core() {return tbl__core;} private Xowd_css_core_tbl tbl__core; + public Xowd_css_file_tbl Tbl__file() {return tbl__file;} private Xowd_css_file_tbl tbl__file; + public Css_db_mgr Init() { + this.conn = Get_or_new(wiki); + this.tbl__core = new Xowd_css_core_tbl(conn); + this.tbl__file = new Xowd_css_file_tbl(conn); + if (!conn.Meta_tbl_exists(tbl__core.Tbl_name())) { + tbl__core.Create_tbl(); + tbl__file.Create_tbl(); + } + return this; + } + + private static Db_conn Get_or_new(Xow_wiki wiki) { + int layout_text = wiki.Data__core_mgr().Db__core().Db_props().Layout_text().Tid(); + Io_url url = null; + switch (layout_text) { + case Xow_db_layout.Tid__all: url = wiki.Data__core_mgr().Db__core().Url(); break; + case Xow_db_layout.Tid__few: url = wiki.Fsys_mgr().Root_dir().GenSubFil(String_.Format("{0}-data.xowa", wiki.Domain_str())); break; + case Xow_db_layout.Tid__lot: url = wiki.Fsys_mgr().Root_dir().GenSubFil(String_.Format("{0}-xtn.css.xowa", wiki.Domain_str())); break; + default: throw Err_.new_unhandled(layout_text); + } + return Db_conn_bldr.Instance.Get_or_autocreate(true, url); + } +} diff --git a/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_css_core_itm.java b/400_xowa/src/gplx/xowa/addons/wikis/htmls/css/dbs/Xowd_css_core_itm.java similarity index 71% rename from 400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_css_core_itm.java rename to 400_xowa/src/gplx/xowa/addons/wikis/htmls/css/dbs/Xowd_css_core_itm.java index 8788cadf4..7bf492135 100644 --- a/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_css_core_itm.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/htmls/css/dbs/Xowd_css_core_itm.java @@ -15,12 +15,12 @@ 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.wikis.data.tbls; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.data.*; +package gplx.xowa.addons.wikis.htmls.css.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.htmls.*; import gplx.xowa.addons.wikis.htmls.css.*; public class Xowd_css_core_itm { public Xowd_css_core_itm(int id, String key, DateAdp updated_on) { this.id = id; this.key = key; this.updated_on = updated_on; } - public int Id() {return id;} private final int id; - public String Key() {return key;} private final String key; - public DateAdp Updated_on() {return updated_on;} private final DateAdp updated_on; + public int Id() {return id;} private final int id; + public String Key() {return key;} private final String key; + public DateAdp Updated_on() {return updated_on;} private final DateAdp updated_on; } diff --git a/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_css_core_tbl.java b/400_xowa/src/gplx/xowa/addons/wikis/htmls/css/dbs/Xowd_css_core_tbl.java similarity index 83% rename from 400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_css_core_tbl.java rename to 400_xowa/src/gplx/xowa/addons/wikis/htmls/css/dbs/Xowd_css_core_tbl.java index 85b9489ee..131c3ef0a 100644 --- a/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_css_core_tbl.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/htmls/css/dbs/Xowd_css_core_tbl.java @@ -15,11 +15,11 @@ 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.wikis.data.tbls; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.data.*; +package gplx.xowa.addons.wikis.htmls.css.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.htmls.*; import gplx.xowa.addons.wikis.htmls.css.*; import gplx.dbs.*; public class Xowd_css_core_tbl implements Rls_able { - private final String tbl_name = "css_core"; private final Dbmeta_fld_list flds = Dbmeta_fld_list.new_(); - private final String fld_id, fld_key, fld_updated_on; + private final Dbmeta_fld_list flds = new Dbmeta_fld_list(); + private final String fld_id, fld_key, fld_updated_on; public Xowd_css_core_tbl(Db_conn conn) { this.conn = conn; this.fld_id = flds.Add_int_pkey_autonum("css_id"); @@ -27,8 +27,8 @@ public class Xowd_css_core_tbl implements Rls_able { this.fld_updated_on = flds.Add_str("css_updated_on", 20); conn.Rls_reg(this); } - public Db_conn Conn() {return conn;} private final Db_conn conn; - public String Tbl_name() {return tbl_name;} + public Db_conn Conn() {return conn;} private final Db_conn conn; + public String Tbl_name() {return tbl_name;} private final String tbl_name = "css_core"; public void Create_tbl() {conn.Meta_tbl_create(Dbmeta_tbl_itm.New(tbl_name, flds, Dbmeta_idx_itm.new_unique_by_tbl(tbl_name, "main", fld_key)));} public void Rls() {} public int Insert(String key, DateAdp updated_on) { @@ -55,7 +55,7 @@ public class Xowd_css_core_tbl implements Rls_able { return Select_by_stmt(stmt); } private Xowd_css_core_itm[] Select_by_stmt(Db_stmt stmt) { - List_adp rv = List_adp_.new_(); + List_adp rv = List_adp_.New(); Db_rdr rdr = stmt.Exec_select__rls_auto(); try { while (rdr.Move_next()) diff --git a/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_css_file_itm.java b/400_xowa/src/gplx/xowa/addons/wikis/htmls/css/dbs/Xowd_css_file_itm.java similarity index 67% rename from 400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_css_file_itm.java rename to 400_xowa/src/gplx/xowa/addons/wikis/htmls/css/dbs/Xowd_css_file_itm.java index be10aab3e..98541c587 100644 --- a/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_css_file_itm.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/htmls/css/dbs/Xowd_css_file_itm.java @@ -15,10 +15,10 @@ 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.wikis.data.tbls; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.data.*; +package gplx.xowa.addons.wikis.htmls.css.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.htmls.*; import gplx.xowa.addons.wikis.htmls.css.*; public class Xowd_css_file_itm { public Xowd_css_file_itm(int css_id, String path, byte[] data) {this.css_id = css_id; this.path = path; this.data = data;} - public int Css_id() {return css_id;} private final int css_id; - public String Path() {return path;} private final String path; - public byte[] Data() {return data;} private final byte[] data; + public int Css_id() {return css_id;} private final int css_id; + public String Path() {return path;} private final String path; + public byte[] Data() {return data;} private final byte[] data; } diff --git a/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_css_file_tbl.java b/400_xowa/src/gplx/xowa/addons/wikis/htmls/css/dbs/Xowd_css_file_tbl.java similarity index 81% rename from 400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_css_file_tbl.java rename to 400_xowa/src/gplx/xowa/addons/wikis/htmls/css/dbs/Xowd_css_file_tbl.java index b257bd764..10f18cb7d 100644 --- a/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_css_file_tbl.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/htmls/css/dbs/Xowd_css_file_tbl.java @@ -15,12 +15,12 @@ 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.wikis.data.tbls; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.data.*; +package gplx.xowa.addons.wikis.htmls.css.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.htmls.*; import gplx.xowa.addons.wikis.htmls.css.*; import gplx.dbs.*; public class Xowd_css_file_tbl implements Rls_able { - private final String tbl_name = "css_file"; private final Dbmeta_fld_list flds = Dbmeta_fld_list.new_(); - private final String fld_css_id, fld_path, fld_data; - private final Db_conn conn; private Db_stmt stmt_insert; + private final String tbl_name = "css_file"; private final Dbmeta_fld_list flds = new Dbmeta_fld_list(); + private final String fld_css_id, fld_path, fld_data; + private final Db_conn conn; private Db_stmt stmt_insert; public Xowd_css_file_tbl(Db_conn conn) { this.conn = conn; fld_css_id = flds.Add_int("css_id"); @@ -48,7 +48,7 @@ public class Xowd_css_file_tbl implements Rls_able { return Select_by_stmt(stmt); } private Xowd_css_file_itm[] Select_by_stmt(Db_stmt stmt) { - List_adp rv = List_adp_.new_(); + List_adp rv = List_adp_.New(); Db_rdr rdr = stmt.Exec_select__rls_auto(); try { while (rdr.Move_next()) diff --git a/400_xowa/src/gplx/xowa/htmls/css/Xob_css_status.java b/400_xowa/src/gplx/xowa/addons/wikis/htmls/css/mgrs/Xob_css_status.java similarity index 89% rename from 400_xowa/src/gplx/xowa/htmls/css/Xob_css_status.java rename to 400_xowa/src/gplx/xowa/addons/wikis/htmls/css/mgrs/Xob_css_status.java index caf68f132..bcc89d44e 100644 --- a/400_xowa/src/gplx/xowa/htmls/css/Xob_css_status.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/htmls/css/mgrs/Xob_css_status.java @@ -15,7 +15,7 @@ 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.htmls.css; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; +package gplx.xowa.addons.wikis.htmls.css.mgrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.htmls.*; import gplx.xowa.addons.wikis.htmls.css.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.data.*; import gplx.xowa.bldrs.css.*; public class Xob_css_status { @@ -47,11 +47,11 @@ public class Xob_css_status { rv.Fs_exists_(exists, css_dir); } private static void Chk_db(Xob_css_status rv, Xow_wiki wiki, Io_url css_dir) { - Xowd_db_mgr core_db_mgr = wiki.Data__core_mgr(); + Xow_db_mgr core_db_mgr = wiki.Data__core_mgr(); if ( core_db_mgr == null || core_db_mgr.Props() != null || !core_db_mgr.Props().Schema_is_1() - || core_db_mgr.Tbl__cfg().Select_yn_or(Xow_cfg_consts.Grp__wiki_schema, Xowd_db_file_schema_props.Key__tbl_css_core, Bool_.N) + || core_db_mgr.Tbl__cfg().Select_yn_or(Xow_cfg_consts.Grp__wiki_schema, Xow_db_file_schema_props.Key__tbl_css_core, Bool_.N) ) { rv.Db_exists_(false); if (rv.Fs_exists()) diff --git a/400_xowa/src/gplx/xowa/htmls/css/Xow_css_mgr.java b/400_xowa/src/gplx/xowa/addons/wikis/htmls/css/mgrs/Xow_css_mgr.java similarity index 83% rename from 400_xowa/src/gplx/xowa/htmls/css/Xow_css_mgr.java rename to 400_xowa/src/gplx/xowa/addons/wikis/htmls/css/mgrs/Xow_css_mgr.java index a8c4af267..1c51c5c52 100644 --- a/400_xowa/src/gplx/xowa/htmls/css/Xow_css_mgr.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/htmls/css/mgrs/Xow_css_mgr.java @@ -15,8 +15,9 @@ 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.htmls.css; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; +package gplx.xowa.addons.wikis.htmls.css.mgrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.htmls.*; import gplx.xowa.addons.wikis.htmls.css.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.data.*; import gplx.xowa.wikis.data.tbls.*; +import gplx.xowa.addons.wikis.htmls.css.dbs.*; public class Xow_css_mgr { private final Xow_wiki wiki; private boolean db_css_exists; @@ -24,7 +25,7 @@ public class Xow_css_mgr { public Xow_css_mgr(Xow_wiki wiki) {this.wiki = wiki;} public void Init_by_wiki() { Gfo_usr_dlg usr_dlg = Xoa_app_.Usr_dlg(); - Xowd_db_mgr core_db_mgr = wiki.Data__core_mgr(); + Xow_db_mgr core_db_mgr = wiki.Data__core_mgr(); if (core_db_mgr == null) { usr_dlg.Log_many("", "", "db.css.exists; css_missing b/c tdb; wiki=~{0}", wiki.Domain_str()); return; @@ -34,7 +35,7 @@ public class Xow_css_mgr { usr_dlg.Log_many("", "", "db.css.exists; css_missing b/c v1; wiki=~{0}", wiki.Domain_str()); return; } - Xowd_db_file core_db = core_db_mgr.Db__core(); + Xow_db_file core_db = core_db_mgr.Db__core(); this.css_core_tbl = core_db.Tbl__css_core(); this.css_file_tbl = core_db.Tbl__css_file(); if ( core_db == null diff --git a/400_xowa/src/gplx/xowa/htmls/css/Xowd_css_core_mgr.java b/400_xowa/src/gplx/xowa/addons/wikis/htmls/css/mgrs/Xowd_css_core_mgr.java similarity index 90% rename from 400_xowa/src/gplx/xowa/htmls/css/Xowd_css_core_mgr.java rename to 400_xowa/src/gplx/xowa/addons/wikis/htmls/css/mgrs/Xowd_css_core_mgr.java index 898d9c754..4c4dd1c23 100644 --- a/400_xowa/src/gplx/xowa/htmls/css/Xowd_css_core_mgr.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/htmls/css/mgrs/Xowd_css_core_mgr.java @@ -15,11 +15,11 @@ 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.htmls.css; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; +package gplx.xowa.addons.wikis.htmls.css.mgrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.htmls.*; import gplx.xowa.addons.wikis.htmls.css.*; import gplx.core.envs.*; import gplx.dbs.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.data.*; import gplx.xowa.wikis.data.tbls.*; -import gplx.xowa.bldrs.css.*; +import gplx.xowa.addons.wikis.htmls.css.dbs.*; public class Xowd_css_core_mgr { public static void Set(Xowd_css_core_tbl core_tbl, Xowd_css_file_tbl file_tbl, Io_url css_dir, String key) { Db_conn conn = core_tbl.Conn(); diff --git a/400_xowa/src/gplx/xowa/htmls/css/Xowd_css_core_mgr_tst.java b/400_xowa/src/gplx/xowa/addons/wikis/htmls/css/mgrs/Xowd_css_core_mgr_tst.java similarity index 90% rename from 400_xowa/src/gplx/xowa/htmls/css/Xowd_css_core_mgr_tst.java rename to 400_xowa/src/gplx/xowa/addons/wikis/htmls/css/mgrs/Xowd_css_core_mgr_tst.java index 08931eea4..64af10be7 100644 --- a/400_xowa/src/gplx/xowa/htmls/css/Xowd_css_core_mgr_tst.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/htmls/css/mgrs/Xowd_css_core_mgr_tst.java @@ -15,8 +15,8 @@ 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.htmls.css; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; -import org.junit.*; import gplx.core.ios.*; import gplx.dbs.*; import gplx.xowa.wikis.data.tbls.*; +package gplx.xowa.addons.wikis.htmls.css.mgrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.htmls.*; import gplx.xowa.addons.wikis.htmls.css.*; +import org.junit.*; import gplx.core.ios.*; import gplx.dbs.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.addons.wikis.htmls.css.dbs.*; public class Xowd_css_core_mgr_tst { @Before public void init() {fxt.Clear();} private Xowd_css_core_mgr_fxt fxt = new Xowd_css_core_mgr_fxt(); @Test public void Basic() { @@ -61,7 +61,7 @@ public class Xowd_css_core_mgr_tst { } } class Xowd_css_core_mgr_fxt { - private final Bry_bfr bfr = Bry_bfr.reset_(32); + private final Bry_bfr bfr = Bry_bfr_.Reset(32); private Xowd_css_core_tbl core_tbl; private Xowd_css_file_tbl file_tbl; public void Clear() { Tfds.Now_enabled_y_(); @@ -109,7 +109,7 @@ class Xowd_css_core_mgr_fxt { return bfr.To_str_and_clear(); } private String To_str(Xowd_css_core_itm[] ary) { - Bry_bfr bfr = Bry_bfr.new_(); + Bry_bfr bfr = Bry_bfr_.New(); int len = ary.length; for (int i = 0; i < len; ++i) { Xowd_css_core_itm itm = ary[i]; diff --git a/400_xowa/src/gplx/xowa/addons/wikis/imports/Xow_import_addon.java b/400_xowa/src/gplx/xowa/addons/wikis/imports/Xow_import_addon.java new file mode 100644 index 000000000..3a3c9b779 --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/wikis/imports/Xow_import_addon.java @@ -0,0 +1,28 @@ +/* +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.addons.wikis.imports; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; +import gplx.xowa.specials.*; +public class Xow_import_addon implements Xoax_addon_itm, Xoax_addon_itm__special { + public Xow_special_page[] Special_pages() { + return new Xow_special_page[] + { Xow_import_special.Prototype + }; + } + + public String Addon__key() {return "xowa.apps.file_browsers";} +} diff --git a/400_xowa/src/gplx/xowa/addons/apps/file_browsers/Fbrow_file_itm.java b/400_xowa/src/gplx/xowa/addons/wikis/imports/Xow_import_doc.java similarity index 75% rename from 400_xowa/src/gplx/xowa/addons/apps/file_browsers/Fbrow_file_itm.java rename to 400_xowa/src/gplx/xowa/addons/wikis/imports/Xow_import_doc.java index b1bfac073..49ae0b31b 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/file_browsers/Fbrow_file_itm.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/imports/Xow_import_doc.java @@ -15,14 +15,14 @@ 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.addons.apps.file_browsers; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; +package gplx.xowa.addons.wikis.imports; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.core.ios.*; import gplx.langs.mustaches.*; -class Fbrow_file_itm implements Mustache_doc_itm { +class Xow_import_doc implements Mustache_doc_itm { private final boolean is_dir, is_core_xowa; private final byte[] owner_dir_enc, path, name, date, size, color; - private final Fbrow_file_itm[] subs; - public Fbrow_file_itm(boolean is_dir, boolean is_core_xowa, int color, byte[] owner_dir, byte[] path, byte[] name, byte[] date, byte[] size, Fbrow_file_itm[] subs) { + private final Xow_import_doc[] subs; + public Xow_import_doc(boolean is_dir, boolean is_core_xowa, int color, byte[] owner_dir, byte[] path, byte[] name, byte[] date, byte[] size, Xow_import_doc[] subs) { this.is_dir = is_dir; this.is_core_xowa = is_core_xowa; this.color = color % 2 == 0 ? Byte_ascii.Num_0_bry : Byte_ascii.Num_1_bry; this.owner_dir_enc = gplx.langs.htmls.encoders.Gfo_url_encoder_.Href.Encode(owner_dir); @@ -46,13 +46,13 @@ class Fbrow_file_itm implements Mustache_doc_itm { else if (String_.Eq(key, "subs")) return subs; return Mustache_doc_itm_.Ary__empty; } - public static final Fbrow_file_itm[] Ary_empty = new Fbrow_file_itm[0]; - public static Fbrow_file_itm New(IoItmDir owner_dir) { - List_adp sub_list = List_adp_.new_(); + public static final Xow_import_doc[] Ary_empty = new Xow_import_doc[0]; + public static Xow_import_doc New(IoItmDir owner_dir) { + List_adp sub_list = List_adp_.New(); New_subs(owner_dir.Url(), sub_list, owner_dir.SubDirs()); New_subs(owner_dir.Url(), sub_list, owner_dir.SubFils()); - Fbrow_file_itm[] subs = (Fbrow_file_itm[])sub_list.To_ary_and_clear(Fbrow_file_itm.class); - return new Fbrow_file_itm(Bool_.Y, Bool_.N, 0, owner_dir.Url().OwnerDir().RawBry(), owner_dir.Url().RawBry(), Bry_.new_u8(owner_dir.Name()), Bry_.Empty, Bry_.Empty, subs); + Xow_import_doc[] subs = (Xow_import_doc[])sub_list.To_ary_and_clear(Xow_import_doc.class); + return new Xow_import_doc(Bool_.Y, Bool_.N, 0, owner_dir.Url().OwnerDir().RawBry(), owner_dir.Url().RawBry(), Bry_.new_u8(owner_dir.Name()), Bry_.Empty, Bry_.Empty, subs); } private static void New_subs(Io_url owner_dir, List_adp list, IoItmList subs) { subs.Sort(); @@ -61,16 +61,16 @@ class Fbrow_file_itm implements Mustache_doc_itm { byte[] owner_dir_bry = owner_dir.RawBry(); for (int i = 0; i < len; ++i) { IoItm_base src = (IoItm_base)subs.Get_at(i); - Fbrow_file_itm trg = null; + Xow_import_doc trg = null; if (src.Type_dir()) { byte[] trg_url = src.Url().RawBry(); - trg = new Fbrow_file_itm(Bool_.Y, Bool_.N, list_total + i, owner_dir_bry, trg_url, Bry_.new_u8(src.Url().NameAndExt_noDirSpr()), Bry_.Empty, Bry_.Empty, Ary_empty); + trg = new Xow_import_doc(Bool_.Y, Bool_.N, list_total + i, owner_dir_bry, trg_url, Bry_.new_u8(src.Url().NameAndExt_noDirSpr()), Bry_.Empty, Bry_.Empty, Ary_empty); } else { IoItmFil src_as_fil = (IoItmFil)src; String size_str = Io_size_.To_str(src_as_fil.Size(), "#,###"); - boolean is_xowa_core = gplx.xowa.wikis.data.Xowd_db_mgr.Maybe_core(owner_dir.NameOnly(), src.Url().NameAndExt()); - trg = new Fbrow_file_itm(Bool_.N, is_xowa_core, list_total + i, owner_dir_bry, src.Url().RawBry(), Bry_.new_u8(src.Name()), Bry_.new_u8(src_as_fil.ModifiedTime().XtoStr_fmt("yyyy-MM-dd")), Bry_.new_u8(size_str), Ary_empty); + boolean is_xowa_core = gplx.xowa.wikis.data.Xow_db_file__core_.Is_core_fil_name(owner_dir.NameOnly(), src.Url().NameAndExt()); + trg = new Xow_import_doc(Bool_.N, is_xowa_core, list_total + i, owner_dir_bry, src.Url().RawBry(), Bry_.new_u8(src.Name()), Bry_.new_u8(src_as_fil.ModifiedTime().XtoStr_fmt("yyyy-MM-dd")), Bry_.new_u8(size_str), Ary_empty); } list.Add(trg); } diff --git a/400_xowa/src/gplx/xowa/addons/wikis/imports/Xow_import_html.java b/400_xowa/src/gplx/xowa/addons/wikis/imports/Xow_import_html.java new file mode 100644 index 000000000..72305deec --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/wikis/imports/Xow_import_html.java @@ -0,0 +1,36 @@ +/* +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.addons.wikis.imports; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; +import gplx.xowa.specials.*; import gplx.langs.mustaches.*; import gplx.xowa.wikis.pages.*; import gplx.xowa.wikis.pages.tags.*; +import gplx.core.ios.*; +class Xow_import_html extends Xow_special_wtr__base { + private final Io_url owner_url; + public Xow_import_html(Io_url owner_url) {this.owner_url = owner_url;} + @Override protected Io_url Get_addon_dir(Xoa_app app) {return app.Fsys_mgr().Http_root().GenSubDir_nest("bin", "any", "xowa", "addon", "wiki", "import");} + @Override protected Io_url Get_mustache_fil(Io_url addon_dir) {return addon_dir.GenSubFil_nest("bin", "xow_import.mustache.html");} + @Override protected Mustache_doc_itm Bld_mustache_root(Xoa_app app) { + IoItmDir owner_dir = Io_mgr.Instance.QueryDir_args(owner_url).DirInclude_(true).ExecAsDir(); + return Xow_import_doc.New(owner_dir); + } + @Override protected void Bld_tags(Xoa_app app, Io_url addon_dir, Xopage_html_data page_data) { + Xopg_tag_mgr head_tags = page_data.Head_tags(); + Xopg_tag_wtr_.Add__xocss (head_tags, app.Fsys_mgr().Http_root()); + Xopg_tag_wtr_.Add__xohelp (head_tags, app.Fsys_mgr().Http_root()); + head_tags.Add(Xopg_tag_itm.New_css_file(addon_dir.GenSubFil_nest("bin", "xow_import.css"))); + } +} diff --git a/400_xowa/src/gplx/xowa/addons/wikis/imports/Xow_import_special.java b/400_xowa/src/gplx/xowa/addons/wikis/imports/Xow_import_special.java new file mode 100644 index 000000000..8bec57af3 --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/wikis/imports/Xow_import_special.java @@ -0,0 +1,39 @@ +/* +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.addons.wikis.imports; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; +import gplx.xowa.specials.*; import gplx.core.net.*; import gplx.core.net.qargs.*; import gplx.xowa.wikis.pages.*; +import gplx.core.ios.*; +public class Xow_import_special implements Xow_special_page { + public void Special__gen(Xow_wiki wiki, Xoa_page page, Xoa_url url, Xoa_ttl ttl) { + Gfo_qarg_mgr url_args = new Gfo_qarg_mgr().Init(url.Qargs_ary()); + + // get path + String owner_str = url_args.Read_str_or_null("path"); + if (owner_str == null) { + Xopage_html_data.err_("url has unknown path").Apply(page); + return; + } + + new Xow_import_html(Io_url_.new_dir_(owner_str)).Bld_page_by_mustache(wiki.App(), page, this); + } + + Xow_import_special(Xow_special_meta special__meta) {this.special__meta = special__meta;} + public Xow_special_meta Special__meta() {return special__meta;} private final Xow_special_meta special__meta; + public Xow_special_page Special__clone() {return this;} + public static final Xow_special_page Prototype = new Xow_import_special(Xow_special_meta.New_xo("XowaWikiImport", "Import wiki", "XowaFileBrowser")); +} diff --git a/400_xowa/src/gplx/xowa/addons/wikis/pages/randoms/Rndm_addon.java b/400_xowa/src/gplx/xowa/addons/wikis/pages/randoms/Rndm_addon.java new file mode 100644 index 000000000..ce9ea6999 --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/wikis/pages/randoms/Rndm_addon.java @@ -0,0 +1,49 @@ +/* +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.addons.wikis.pages.randoms; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.pages.*; +import gplx.xowa.bldrs.wkrs.*; import gplx.xowa.addons.wikis.pages.randoms.bldrs.*; +import gplx.xowa.specials.*; import gplx.xowa.addons.wikis.pages.randoms.specials.*; +import gplx.xowa.addons.wikis.pages.randoms.mgrs.*; +public class Rndm_addon implements Xoax_addon_itm, Xoax_addon_itm__bldr, Xoax_addon_itm__special { + public Rndm_addon() {this.mgr = null;} // prototype + public Rndm_addon(Xow_wiki wiki) {this.mgr = new Rndm_mgr(wiki);} + public Rndm_mgr Mgr() {return mgr;} private final Rndm_mgr mgr; + public Xob_cmd[] Bldr_cmds() { + return new Xob_cmd[] + { Rndm_bldr_cmd.Prototype + }; + } + public Xow_special_page[] Special_pages() { + return new Xow_special_page[] + { Rndm_root_special.Prototype + , Rndm_page_special.Prototype + }; + } + + public static Rndm_addon Get(Xow_wiki wiki) { + Rndm_addon rv = (Rndm_addon)wiki.Addon_mgr().Itms__get_or_null(ADDON_KEY); + if (rv == null) { + rv = new Rndm_addon(wiki); + wiki.Addon_mgr().Itms__add(rv); + } + return rv; + } + + public String Addon__key() {return ADDON_KEY;} private static final String ADDON_KEY = "xowa.builds.randoms"; + +} diff --git a/400_xowa/src/gplx/xowa/addons/wikis/randoms/bldrs/Rndm_bldr_cmd.java b/400_xowa/src/gplx/xowa/addons/wikis/pages/randoms/bldrs/Rndm_bldr_cmd.java similarity index 59% rename from 400_xowa/src/gplx/xowa/addons/wikis/randoms/bldrs/Rndm_bldr_cmd.java rename to 400_xowa/src/gplx/xowa/addons/wikis/pages/randoms/bldrs/Rndm_bldr_cmd.java index 081fbba55..bf6bf8954 100644 --- a/400_xowa/src/gplx/xowa/addons/wikis/randoms/bldrs/Rndm_bldr_cmd.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/pages/randoms/bldrs/Rndm_bldr_cmd.java @@ -15,22 +15,20 @@ 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.addons.wikis.randoms.bldrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.randoms.*; +package gplx.xowa.addons.wikis.pages.randoms.bldrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.pages.*; import gplx.xowa.addons.wikis.pages.randoms.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wkrs.*; public class Rndm_bldr_cmd extends Xob_cmd__base { - private int rndm_uid = 0; private String rndm_where_sql = "AND ~{page_namespace} = 0 AND ~{page_is_redirect} = 0"; private int rndm_interval = 1000; + private int rndm_interval = 1000; public Rndm_bldr_cmd(Xob_bldr bldr, Xowe_wiki wiki) {super(bldr, wiki);} @Override public void Cmd_run() { - // wiki.Special_mgr().Page_random().Mgr().Rebuild(rndm_uid, rndm_where_sql, rndm_interval); - Tfds.Write(rndm_uid, rndm_where_sql, rndm_interval); + wiki.Init_assert(); + new Rndm_ns_rebuilder().Exec(wiki, rndm_interval); } @Override public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { - if (ctx.Match(k, Invk_rndm_uid_)) rndm_uid = m.ReadInt("v"); - else if (ctx.Match(k, Invk_rndm_where_sql_)) rndm_where_sql = m.ReadStr("v"); - else if (ctx.Match(k, Invk_rndm_interval_)) rndm_interval = m.ReadInt("v"); - else return GfoInvkAble_.Rv_unhandled; + if (ctx.Match(k, Invk_rndm_interval_)) rndm_interval = m.ReadInt("v"); + else return Gfo_invk_.Rv_unhandled; return this; - } private static final String Invk_rndm_uid_ = "rndm_uid_", Invk_rndm_where_sql_ = "rndm_where_sql_", Invk_rndm_interval_ = "rndm_interval_"; + } private static final String Invk_rndm_interval_ = "rndm_interval_"; public static final String BLDR_CMD_KEY = "wiki.random"; @Override public String Cmd_key() {return BLDR_CMD_KEY;} diff --git a/400_xowa/src/gplx/xowa/addons/wikis/pages/randoms/bldrs/Rndm_bldr_wkr.java b/400_xowa/src/gplx/xowa/addons/wikis/pages/randoms/bldrs/Rndm_bldr_wkr.java new file mode 100644 index 000000000..65401f57e --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/wikis/pages/randoms/bldrs/Rndm_bldr_wkr.java @@ -0,0 +1,72 @@ +/* +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.addons.wikis.pages.randoms.bldrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.pages.*; import gplx.xowa.addons.wikis.pages.randoms.*; +import gplx.dbs.*; import gplx.xowa.addons.wikis.pages.randoms.dbs.*; +public class Rndm_bldr_wkr { + private final Rndm_qry_tbl qry_tbl; private final Rndm_rng_tbl rng_tbl; private final Rndm_seq_tbl seq_tbl; + private Rndm_qry_itm qry_itm; + private Db_stmt rng_stmt, seq_stmt; + private int rng_seq_bgn, seq_in_rng; + private int qry_idx_max = 0; + public Rndm_bldr_wkr(Db_conn conn, Rndm_qry_tbl qry_tbl, Rndm_rng_tbl rng_tbl, Rndm_seq_tbl seq_tbl) { + this.conn = conn; + this.qry_tbl = qry_tbl; this.rng_tbl = rng_tbl; this.seq_tbl = seq_tbl; + qry_idx_max = qry_tbl.Select_qry_max(); + } + public Db_conn Conn() {return conn;} private final Db_conn conn; + public int Qry_idx() {return qry_idx;} private int qry_idx; + public int Rng_idx() {return rng_idx;} private int rng_idx; + public int Seq_in_qry() {return seq_in_qry;} private int seq_in_qry; + public void Exec_qry_bgn(Rndm_qry_itm qry_itm) { + this.qry_itm = qry_itm; + + qry_idx = qry_tbl.Select_by_key(qry_itm.Qry_key()); + if (qry_idx == -1) + qry_idx = ++qry_idx_max; + else { + // delete all + qry_tbl.Delete_by_qry_idx(qry_idx); + rng_tbl.Delete_by_qry_idx(qry_idx); + seq_tbl.Delete_by_qry_idx(qry_idx); + } + + rng_idx = seq_in_rng = seq_in_qry = 0; + rng_stmt = rng_tbl.Insert_stmt(); + seq_stmt = seq_tbl.Insert_stmt(); + } + public void Exec_qry_end() { + if (seq_in_qry == 0) return; // no sequences added + qry_tbl.Insert(qry_idx, rng_idx, qry_itm.Qry_key(), qry_itm.Qry_data(), qry_itm.Qry_name()); + } + public void Exec_rng_bgn() { + rng_seq_bgn = seq_in_qry; + ++rng_idx; + seq_in_rng = 0; + } + public Rndm_rng_itm Exec_rng_end_or_null() { + if (seq_in_rng == 0) return null; // no sequences added; return null; + Rndm_rng_itm rv = new Rndm_rng_itm(qry_idx, rng_idx, rng_seq_bgn, seq_in_qry); + rng_tbl.Insert(rng_stmt, qry_idx, rng_idx, rng_seq_bgn, seq_in_qry); + return rv; + } + public void Exec_seq_itm(int page_id) { + seq_tbl.Insert(seq_stmt, qry_idx, rng_idx, seq_in_rng, page_id); + ++seq_in_qry; + ++seq_in_rng; + } +} diff --git a/400_xowa/src/gplx/xowa/addons/wikis/pages/randoms/bldrs/Rndm_ns_rebuilder.java b/400_xowa/src/gplx/xowa/addons/wikis/pages/randoms/bldrs/Rndm_ns_rebuilder.java new file mode 100644 index 000000000..6c6ca3c36 --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/wikis/pages/randoms/bldrs/Rndm_ns_rebuilder.java @@ -0,0 +1,70 @@ +/* +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.addons.wikis.pages.randoms.bldrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.pages.*; import gplx.xowa.addons.wikis.pages.randoms.*; +import gplx.dbs.*; import gplx.xowa.wikis.data.tbls.*; +import gplx.xowa.wikis.nss.*; +import gplx.xowa.addons.wikis.pages.randoms.dbs.*; +class Rndm_ns_rebuilder { + public void Exec(Xow_wiki wiki, int rndm_interval) { + // get wkr; page_tbl + Rndm_addon addon = Rndm_addon.Get(wiki); + Rndm_bldr_wkr wkr = addon.Mgr().New_bldr(); + Xowd_page_tbl page_tbl = wiki.Data__core_mgr().Db__core().Tbl__page(); + String fld_page_id = page_tbl.Fld_page_id(); + Db_conn page_conn = page_tbl.Conn(); + page_conn.Meta_idx_assert(page_tbl.Tbl_name(), "rndm_rebuild", page_tbl.Fld_page_ns(), fld_page_id); + + // loop over ns + Xow_ns_mgr ns_mgr = wiki.Ns_mgr(); + int len = ns_mgr.Ids_len(); + wkr.Conn().Txn_bgn("rndm"); + for (int i = 0; i < len; ++i) { + Xow_ns ns = ns_mgr.Ids_get_at(i); + Gfo_log_.Instance.Prog("reading ns", "ns", ns.Id()); + int page_id_cur = -1; + wkr.Exec_qry_bgn(Rndm_qry_itm.New_by_ns(wiki, ns.Id())); + + // read pages in ns where page_id > last_page_id + while (true) { + Gfo_log_.Instance.Prog("reading pages", "page_id", page_id_cur); + String sql = String_.Format("SELECT * FROM page WHERE page_namespace = {0} AND page_id > {1} ORDER BY page_id", ns.Id(), page_id_cur); // ANSI.Y + int rdr_count = 0; + wkr.Exec_rng_bgn(); + Db_rdr rdr = page_conn.Stmt_sql(sql).Exec_select__rls_auto(); + try { + // read pages until rndm_interval + while (rdr.Move_next()) { + int page_id = rdr.Read_int(fld_page_id); + wkr.Exec_seq_itm(page_id); + if (++rdr_count == rndm_interval) { + page_id_cur = page_id; + break; + } + } + } + finally {rdr.Rls();} + wkr.Exec_rng_end_or_null(); + if (rdr_count != rndm_interval) + break; + } + wkr.Exec_qry_end(); + } + wkr.Conn().Txn_end(); + page_conn.Meta_idx_delete("page", "rndm_rebuild"); + } +} diff --git a/400_xowa/src/gplx/xowa/addons/wikis/pages/randoms/dbs/Rndm_db_mgr.java b/400_xowa/src/gplx/xowa/addons/wikis/pages/randoms/dbs/Rndm_db_mgr.java new file mode 100644 index 000000000..455a2214b --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/wikis/pages/randoms/dbs/Rndm_db_mgr.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.addons.wikis.pages.randoms.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.pages.*; import gplx.xowa.addons.wikis.pages.randoms.*; +import gplx.dbs.*; +import gplx.xowa.wikis.data.*; +public class Rndm_db_mgr { + private final Xow_wiki wiki; + public Rndm_db_mgr(Xow_wiki wiki) { + this.wiki = wiki; + } + public Db_conn Conn() {return conn;} private Db_conn conn; + public Rndm_qry_tbl Tbl__qry() {return tbl__qry;} private Rndm_qry_tbl tbl__qry; + public Rndm_rng_tbl Tbl__rng() {return tbl__rng;} private Rndm_rng_tbl tbl__rng; + public Rndm_seq_tbl Tbl__seq() {return tbl__seq;} private Rndm_seq_tbl tbl__seq; + public Rndm_db_mgr Init() { + this.conn = Get_or_new(wiki); + this.tbl__qry = new Rndm_qry_tbl(conn); + this.tbl__rng = new Rndm_rng_tbl(conn); + this.tbl__seq = new Rndm_seq_tbl(conn); + if (!conn.Meta_tbl_exists(tbl__qry.Tbl_name())) { + tbl__qry.Create_tbl(); + tbl__rng.Create_tbl(); + tbl__seq.Create_tbl(); + } + return this; + } + + private static Db_conn Get_or_new(Xow_wiki wiki) { + int layout_text = wiki.Data__core_mgr().Db__core().Db_props().Layout_text().Tid(); + Io_url url = null; + switch (layout_text) { + case Xow_db_layout.Tid__all: url = wiki.Data__core_mgr().Db__core().Url(); break; + case Xow_db_layout.Tid__few: url = wiki.Fsys_mgr().Root_dir().GenSubFil(String_.Format("{0}-data.xowa", wiki.Domain_str())); break; + case Xow_db_layout.Tid__lot: url = wiki.Fsys_mgr().Root_dir().GenSubFil(String_.Format("{0}-xtn.random.core.xowa", wiki.Domain_str())); break; + default: throw Err_.new_unhandled(layout_text); + } + return Db_conn_bldr.Instance.Get_or_autocreate(true, url); + } +} diff --git a/400_xowa/src/gplx/xowa/addons/wikis/pages/randoms/dbs/Rndm_qry_itm.java b/400_xowa/src/gplx/xowa/addons/wikis/pages/randoms/dbs/Rndm_qry_itm.java new file mode 100644 index 000000000..ab10f3227 --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/wikis/pages/randoms/dbs/Rndm_qry_itm.java @@ -0,0 +1,41 @@ +/* +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.addons.wikis.pages.randoms.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.pages.*; import gplx.xowa.addons.wikis.pages.randoms.*; +public class Rndm_qry_itm { + public Rndm_qry_itm(int qry_idx, int rng_end, String qry_key, String qry_data, String qry_name) { + this.qry_idx = qry_idx; + this.rng_end = rng_end; + this.qry_key = qry_key; + this.qry_data = qry_data; + this.qry_name = qry_name; + } + public int Qry_idx() {return qry_idx;} private final int qry_idx; + public int Rng_end() {return rng_end;} private final int rng_end; + public String Qry_key() {return qry_key;} private final String qry_key; + public String Qry_data() {return qry_data;} private final String qry_data; + public String Qry_name() {return qry_name;} private final String qry_name; + public int Seq_max() {return seq_max;} private int seq_max; public void Seq_max_(int v) {this.seq_max = v;} + + public static Rndm_qry_itm New_by_ns(Xow_wiki wiki, int ns_id) { + String ns_str = Int_.To_str(ns_id); + String qry_key = "xowa.ns." + ns_str; // xowa.ns.0 + String qry_data = "type=ns;ns=" + ns_str; // type=ns;ns=0 + String qry_name = "Namespace " + ns_str + " - All"; + return new Rndm_qry_itm(-1, -1, qry_key, qry_data, qry_name); + } +} diff --git a/400_xowa/src/gplx/xowa/addons/wikis/pages/randoms/dbs/Rndm_qry_tbl.java b/400_xowa/src/gplx/xowa/addons/wikis/pages/randoms/dbs/Rndm_qry_tbl.java new file mode 100644 index 000000000..72d729d61 --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/wikis/pages/randoms/dbs/Rndm_qry_tbl.java @@ -0,0 +1,56 @@ +/* +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.addons.wikis.pages.randoms.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.pages.*; import gplx.xowa.addons.wikis.pages.randoms.*; +import gplx.core.ios.*; import gplx.dbs.*; import gplx.dbs.utls.*; +public class Rndm_qry_tbl implements Rls_able { + private final String tbl_name = "rndm_qry"; private final Dbmeta_fld_list flds = new Dbmeta_fld_list(); + private final String fld_qry_idx, fld_rng_end, fld_qry_key, fld_qry_data, fld_qry_name; + private final Db_conn conn; + public Rndm_qry_tbl(Db_conn conn) { + this.conn = conn; + fld_qry_idx = flds.Add_int_pkey("qry_idx"); // EX: 0 + fld_rng_end = flds.Add_int("rng_end"); // EX: 123 + fld_qry_key = flds.Add_str("qry_key", 255); // EX: xowa.ns.0 + fld_qry_data = flds.Add_str("qry_data", 255); // EX: type=ns;ns=0 + fld_qry_name = flds.Add_str("qry_name", 255); // EX: Main Namespace - All + conn.Rls_reg(this); + } + public String Tbl_name() {return tbl_name;} + public void Create_tbl() {conn.Meta_tbl_create(Dbmeta_tbl_itm.New(tbl_name, flds));} + public int Select_rng_end(int qry_idx) { + Db_rdr rdr = conn.Stmt_select(tbl_name, flds, fld_qry_idx).Exec_select__rls_auto(); + try {return rdr.Move_next() ? rdr.Read_int(fld_rng_end) : 0;} + finally {rdr.Rls();} + } + public int Select_qry_max() { + Db_rdr rdr = conn.Stmt_sql("SELECT Coalesce(Max(qry_idx), 0) AS qry_idx FROM rndm_qry").Exec_select__rls_auto(); // ANSI.Y + try {return rdr.Move_next() ? rdr.Read_int(fld_qry_idx) : 0;} + finally {rdr.Rls();} + } + public int Select_by_key(String key) { + Db_rdr rdr = conn.Stmt_select(tbl_name, flds, fld_qry_key).Crt_str(fld_qry_key, key).Exec_select__rls_auto(); + try {return rdr.Move_next() ? rdr.Read_int(fld_qry_idx) : -1;} + finally {rdr.Rls();} + } + public void Insert(int qry_idx, int rng_end, String qry_key, String qry_data, String qry_name) { + conn.Stmt_insert(tbl_name, flds).Val_int(fld_qry_idx, qry_idx).Val_int(fld_rng_end, rng_end) + .Val_str(fld_qry_key, qry_key).Val_str(fld_qry_data, qry_data).Val_str(fld_qry_name, qry_name).Exec_insert(); + } + public void Delete_by_qry_idx(int qry_idx) {conn.Stmt_delete(tbl_name, fld_qry_idx).Crt_int(fld_qry_idx, qry_idx).Exec_delete();} + public void Rls() {} +} diff --git a/400_xowa/src/gplx/xowa/addons/wikis/pages/randoms/dbs/Rndm_rng_itm.java b/400_xowa/src/gplx/xowa/addons/wikis/pages/randoms/dbs/Rndm_rng_itm.java new file mode 100644 index 000000000..7e1ab5079 --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/wikis/pages/randoms/dbs/Rndm_rng_itm.java @@ -0,0 +1,30 @@ +/* +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.addons.wikis.pages.randoms.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.pages.*; import gplx.xowa.addons.wikis.pages.randoms.*; +public class Rndm_rng_itm { + public Rndm_rng_itm(int mgr_idx, int rng_idx, int seq_bgn, int seq_end) { + this.mgr_idx = mgr_idx; this.rng_idx = rng_idx; + this.seq_bgn = seq_bgn; this.seq_end = seq_end; + } + public int Mgr_idx() {return mgr_idx;} private final int mgr_idx; + public int Rng_idx() {return rng_idx;} private final int rng_idx; + public int Seq_bgn() {return seq_bgn;} private final int seq_bgn; + public int Seq_end() {return seq_end;} private final int seq_end; + + public static Rndm_rng_itm Noop() {return new Rndm_rng_itm(-1, -1, 0, 0);} +} diff --git a/400_xowa/src/gplx/xowa/addons/wikis/pages/randoms/dbs/Rndm_rng_tbl.java b/400_xowa/src/gplx/xowa/addons/wikis/pages/randoms/dbs/Rndm_rng_tbl.java new file mode 100644 index 000000000..97b6cc0d6 --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/wikis/pages/randoms/dbs/Rndm_rng_tbl.java @@ -0,0 +1,55 @@ +/* +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.addons.wikis.pages.randoms.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.pages.*; import gplx.xowa.addons.wikis.pages.randoms.*; +import gplx.core.ios.*; import gplx.dbs.*; import gplx.dbs.utls.*; +public class Rndm_rng_tbl implements Rls_able { + private final String tbl_name = "rndm_rng"; private final Dbmeta_fld_list flds = new Dbmeta_fld_list(); + private final String fld_qry_idx, fld_rng_idx, fld_seq_bgn, fld_seq_end; + private final Db_conn conn; + public Rndm_rng_tbl(Db_conn conn) { + this.conn = conn; + fld_qry_idx = flds.Add_int("qry_idx"); + fld_rng_idx = flds.Add_int("rng_idx"); + fld_seq_bgn = flds.Add_int("seq_bgn"); + fld_seq_end = flds.Add_int("seq_end"); + conn.Rls_reg(this); + } + public void Create_tbl() {conn.Meta_tbl_create(Dbmeta_tbl_itm.New(tbl_name, flds));} + public void Create_idx() {conn.Meta_idx_create(tbl_name, "core", fld_qry_idx, fld_seq_bgn, fld_seq_end);} + public Rndm_rng_itm Select_by_rng_idx_or_noop(int qry_idx, int rng_idx) { + Db_rdr rdr = conn.Stmt_select(tbl_name, flds, fld_rng_idx).Crt_int(fld_rng_idx, rng_idx).Exec_select__rls_auto(); + try {return Load_or_noop(rdr);} + finally {rdr.Rls();} + } + public Rndm_rng_itm Select_by_rndm_num_or_noop(int qry_idx, int rndm_num) { + Db_rdr rdr = conn.Stmt_sql(String_.Format("SELECT * FROM rndm_rng WHERE qry_idx = {0} AND seq_bgn <= {1} AND seq_end > {2}", qry_idx, rndm_num)).Exec_select__rls_auto(); // ANSI.Y + try {return Load_or_noop(rdr);} + finally {rdr.Rls();} + } + private Rndm_rng_itm Load_or_noop(Db_rdr rdr) { + return (rdr.Move_next()) + ? new Rndm_rng_itm(rdr.Read_int(fld_qry_idx), rdr.Read_int(fld_rng_idx), rdr.Read_int(fld_seq_bgn), rdr.Read_int(fld_seq_end)) + : Rndm_rng_itm.Noop(); + } + public Db_stmt Insert_stmt() {return conn.Stmt_insert(tbl_name, flds);} + public void Insert(Db_stmt stmt, int qry_idx, int rng_idx, int seq_bgn, int seq_end) { + stmt.Clear().Val_int(fld_qry_idx, qry_idx).Val_int(fld_rng_idx, rng_idx).Val_int(fld_seq_bgn, seq_bgn).Val_int(fld_seq_end, seq_end).Exec_insert(); + } + public void Delete_by_qry_idx(int qry_idx) {conn.Stmt_delete(tbl_name, fld_qry_idx).Crt_int(fld_qry_idx, qry_idx).Exec_delete();} + public void Rls() {} +} diff --git a/400_xowa/src/gplx/xowa/addons/wikis/pages/randoms/dbs/Rndm_seq_tbl.java b/400_xowa/src/gplx/xowa/addons/wikis/pages/randoms/dbs/Rndm_seq_tbl.java new file mode 100644 index 000000000..787babef7 --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/wikis/pages/randoms/dbs/Rndm_seq_tbl.java @@ -0,0 +1,52 @@ +/* +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.addons.wikis.pages.randoms.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.pages.*; import gplx.xowa.addons.wikis.pages.randoms.*; +import gplx.core.ios.*; import gplx.dbs.*; import gplx.dbs.utls.*; +public class Rndm_seq_tbl implements Rls_able { // list of page_ids w/ random_idx; EX: 0,123|1,23|2,31|... + private final String fld_qry_idx, fld_rng_idx, fld_seq_idx, fld_page_id; + private final Db_conn conn; + public Rndm_seq_tbl(Db_conn conn) { + this.conn = conn; + fld_qry_idx = flds.Add_int("qry_idx"); + fld_rng_idx = flds.Add_int("rng_idx"); + fld_seq_idx = flds.Add_int("seq_idx"); + fld_page_id = flds.Add_int("page_id"); + } + public Db_conn Conn() {return conn;} + public String Tbl_name() {return tbl_name;} private final String tbl_name = "rndm_seq"; + public Dbmeta_fld_list Flds() {return flds;} private final Dbmeta_fld_list flds = new Dbmeta_fld_list(); + public String Fld__qry_idx() {return fld_qry_idx;} + public String Fld__rng_idx() {return fld_rng_idx;} + public void Create_tbl() {conn.Meta_tbl_create(Dbmeta_tbl_itm.New(tbl_name, flds));} + public void Create_idx() {conn.Meta_idx_create(tbl_name, "core", fld_qry_idx, fld_rng_idx, fld_seq_idx);} + public int Select_or_neg_1(int qry_idx, int rng_idx, int seq_idx) { + Db_stmt stmt = conn.Stmt_select(tbl_name, flds, fld_qry_idx, fld_rng_idx, fld_seq_idx); + Db_rdr rdr = stmt.Clear().Crt_int(fld_qry_idx, qry_idx).Crt_int(fld_rng_idx, rng_idx).Val_int(fld_seq_idx, seq_idx).Exec_select__rls_auto(); + try {return rdr.Move_next() ? rdr.Read_int(fld_page_id) : -1;} + catch (Exception e) {Gfo_usr_dlg_.Instance.Warn_many("", "", "failed to get seq_idx; url=~{0} qry_idx=~{1} rng_idx=~{2} seq_idx=~{3} err=~{4}", conn.Conn_info().Db_api(), qry_idx, rng_idx, seq_idx, Err_.Message_gplx_log(e)); return -1;} + finally {rdr.Rls();} + } + public Db_stmt Insert_stmt() {return conn.Stmt_insert(tbl_name, flds);} + public void Insert(Db_stmt stmt, int qry_idx, int rng_idx, int seq_idx, int page_id) { + stmt.Clear().Val_int(fld_qry_idx, qry_idx).Val_int(fld_rng_idx, rng_idx).Val_int(fld_seq_idx, seq_idx).Val_int(fld_page_id, page_id).Exec_insert(); + } + public void Delete_by_qry_idx(int qry_idx) {conn.Stmt_delete(tbl_name, fld_qry_idx).Crt_int(fld_qry_idx, qry_idx).Exec_delete();} + public void Rls() {} + + public static final int Db_row_size_fixed = 4 * 4; +} diff --git a/400_xowa/src/gplx/xowa/addons/wikis/pages/randoms/mgrs/Rndm_mgr.java b/400_xowa/src/gplx/xowa/addons/wikis/pages/randoms/mgrs/Rndm_mgr.java new file mode 100644 index 000000000..507fea2ea --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/wikis/pages/randoms/mgrs/Rndm_mgr.java @@ -0,0 +1,41 @@ +/* +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.addons.wikis.pages.randoms.mgrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.pages.*; import gplx.xowa.addons.wikis.pages.randoms.*; +import gplx.dbs.*; import gplx.xowa.wikis.data.tbls.*; +import gplx.xowa.addons.wikis.pages.randoms.dbs.*; import gplx.xowa.addons.wikis.pages.randoms.bldrs.*; +public class Rndm_mgr { + public Rndm_mgr(Xow_wiki wiki) { + this.db_mgr = new Rndm_db_mgr(wiki).Init(); + } + public Rndm_db_mgr Db_mgr() {return db_mgr;} private Rndm_db_mgr db_mgr; + + public int Get_rndm_page(int qry_idx) { + // 0|type:ns,ns_id:123,text:123|123 + int rng_end = db_mgr.Tbl__qry().Select_rng_end(qry_idx); + Rndm_rng_itm rng_end_itm = db_mgr.Tbl__rng().Select_by_rng_idx_or_noop(qry_idx, rng_end); + int rndm_num = RandomAdp_.new_().Next(rng_end_itm.Seq_end()); + Rndm_rng_itm rng_itm = db_mgr.Tbl__rng().Select_by_rndm_num_or_noop(qry_idx, rndm_num); + int seq_idx = rndm_num - rng_itm.Seq_bgn(); + int page_id = db_mgr.Tbl__seq().Select_or_neg_1(qry_idx, rng_itm.Rng_idx(), seq_idx); + Gfo_log_.Instance.Info("get_random_page", "qry_idx", qry_idx, "rng_end", rng_end, "rndm_num", rndm_num, "rng_idx", rng_itm.Rng_idx(), "seq_idx", seq_idx, "page_id", page_id); + return page_id; + } + public Rndm_bldr_wkr New_bldr() {return new Rndm_bldr_wkr(db_mgr.Conn(), db_mgr.Tbl__qry(), db_mgr.Tbl__rng(), db_mgr.Tbl__seq());} + + public static final int Qry_idx__main = 0; // all +} diff --git a/400_xowa/src/gplx/xowa/addons/wikis/pages/randoms/mgrs/Rndm_ns_mgr.java b/400_xowa/src/gplx/xowa/addons/wikis/pages/randoms/mgrs/Rndm_ns_mgr.java new file mode 100644 index 000000000..3fdf60014 --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/wikis/pages/randoms/mgrs/Rndm_ns_mgr.java @@ -0,0 +1,29 @@ +/* +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.addons.wikis.pages.randoms.mgrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.pages.*; import gplx.xowa.addons.wikis.pages.randoms.*; +import gplx.core.lists.hashs.*; +class Rndm_ns_mgr { +// private final Hash_adp__int hash = new Hash_adp__int(); +// public Rndm_ns_itm Get_by_ns(int ns_id) {return (Rndm_ns_itm)hash.Get_by_or_null(ns_id);} + public void Add() { // rndm; + /* + for (mgr : rndm_mgr) + hash.Add(mgr,); + */ + } +} diff --git a/400_xowa/src/gplx/xowa/specials/randoms/Xows_page_random.java b/400_xowa/src/gplx/xowa/addons/wikis/pages/randoms/specials/Rndm_page_special.java similarity index 55% rename from 400_xowa/src/gplx/xowa/specials/randoms/Xows_page_random.java rename to 400_xowa/src/gplx/xowa/addons/wikis/pages/randoms/specials/Rndm_page_special.java index efbacd84b..cdaa15581 100644 --- a/400_xowa/src/gplx/xowa/specials/randoms/Xows_page_random.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/pages/randoms/specials/Rndm_page_special.java @@ -15,18 +15,21 @@ 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.specials.randoms; import gplx.*; import gplx.xowa.*; import gplx.xowa.specials.*; -import gplx.xowa.wikis.nss.*; -public class Xows_page_random implements Xows_page { - public Xows_page_random(Xowe_wiki wiki) {} - // public Rndm_mgr Mgr() {return mgr;} private final Rndm_mgr mgr = new Rndm_mgr(); - public Xows_special_meta Special__meta() {return Xows_special_meta_.Itm__random;} +package gplx.xowa.addons.wikis.pages.randoms.specials; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.pages.*; import gplx.xowa.addons.wikis.pages.randoms.*; +import gplx.xowa.specials.*; import gplx.xowa.wikis.nss.*; +public class Rndm_page_special implements Xow_special_page { public void Special__gen(Xow_wiki wikii, Xoa_page pagei, Xoa_url url, Xoa_ttl ttl) { Xowe_wiki wiki = (Xowe_wiki)wikii; Xoae_page page = (Xoae_page)pagei; Xow_ns ns = wiki.Ns_mgr().Names_get_or_main(ttl.Rest_txt()); + // Rndm_addon.Get(wiki).Mgr().Get_rndm_page_by_ns(ns); + byte[] random_ttl_bry = wiki.Db_mgr().Load_mgr().Find_random_ttl(ns); wiki.Data_mgr().Redirect(page, ns.Gen_ttl(random_ttl_bry)); } - public Xows_page Special__clone() {return this;} + public static final String SPECIAL_KEY = "Randompage"; // NOTE: needs to match lang.gfs + public static final byte[] Display_ttl = Bry_.new_a7("Random Page"); + public Xow_special_meta Special__meta() {return new Xow_special_meta(Xow_special_meta_.Src__mw, SPECIAL_KEY, "random");} + public static final Xow_special_page Prototype = new Rndm_page_special(); + public Xow_special_page Special__clone() {return this;} } diff --git a/400_xowa/src/gplx/xowa/specials/randoms/Xop_randomRootPage_page.java b/400_xowa/src/gplx/xowa/addons/wikis/pages/randoms/specials/Rndm_root_special.java similarity index 58% rename from 400_xowa/src/gplx/xowa/specials/randoms/Xop_randomRootPage_page.java rename to 400_xowa/src/gplx/xowa/addons/wikis/pages/randoms/specials/Rndm_root_special.java index 15406b5ea..a6c028402 100644 --- a/400_xowa/src/gplx/xowa/specials/randoms/Xop_randomRootPage_page.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/pages/randoms/specials/Rndm_root_special.java @@ -15,17 +15,21 @@ 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.specials.randoms; import gplx.*; import gplx.xowa.*; import gplx.xowa.specials.*; -import gplx.xowa.wikis.nss.*; -public class Xop_randomRootPage_page implements Xows_page { - public Xows_special_meta Special__meta() {return Xows_special_meta_.Itm__random_root_page;} +package gplx.xowa.addons.wikis.pages.randoms.specials; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.pages.*; import gplx.xowa.addons.wikis.pages.randoms.*; +import gplx.xowa.wikis.nss.*; import gplx.xowa.specials.*; +public class Rndm_root_special implements Xow_special_page { public void Special__gen(Xow_wiki wikii, Xoa_page pagei, Xoa_url url, Xoa_ttl ttl) { Xowe_wiki wiki = (Xowe_wiki)wikii; Xoae_page page = (Xoae_page)pagei; Xow_ns ns = wiki.Ns_mgr().Names_get_or_main(ttl.Rest_txt()); + // Rndm_addon.Get(wiki).Mgr().Regy().Get_rndm_page_by_ns(ns); byte[] random_ttl_bry = wiki.Db_mgr().Load_mgr().Find_random_ttl(ns); byte[] root_bry = Xoa_ttl.parse(wiki, random_ttl_bry).Root_txt(); wiki.Data_mgr().Redirect(page, ns.Gen_ttl(root_bry)); } - public Xows_page Special__clone() {return this;} + public static final String SPECIAL_KEY = "RandomRootPage"; + public static final byte[] Display_ttl = Bry_.new_a7("Random Root Page"); + public Xow_special_meta Special__meta() {return new Xow_special_meta(Xow_special_meta_.Src__mw, SPECIAL_KEY);} + public static final Xow_special_page Prototype = new Rndm_root_special(); + public Xow_special_page Special__clone() {return this;} } diff --git a/400_xowa/src/gplx/xowa/specials/randoms/Xop_randomRootPage_page_tst.java b/400_xowa/src/gplx/xowa/addons/wikis/pages/randoms/specials/Rndm_root_special_tst.java similarity index 65% rename from 400_xowa/src/gplx/xowa/specials/randoms/Xop_randomRootPage_page_tst.java rename to 400_xowa/src/gplx/xowa/addons/wikis/pages/randoms/specials/Rndm_root_special_tst.java index 6dc26dfc2..3c32cd014 100644 --- a/400_xowa/src/gplx/xowa/specials/randoms/Xop_randomRootPage_page_tst.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/pages/randoms/specials/Rndm_root_special_tst.java @@ -15,14 +15,14 @@ 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.specials.randoms; import gplx.*; import gplx.xowa.*; import gplx.xowa.specials.*; -import org.junit.*; -public class Xop_randomRootPage_page_tst { - @Before public void init() {fxt.Clear();} private Xop_randomRootPage_page_fxt fxt = new Xop_randomRootPage_page_fxt(); +package gplx.xowa.addons.wikis.pages.randoms.specials; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.pages.*; import gplx.xowa.addons.wikis.pages.randoms.*; +import org.junit.*; import gplx.xowa.specials.*; +public class Rndm_root_special_tst { + @Before public void init() {fxt.Clear();} private Rndm_root_special_fxt fxt = new Rndm_root_special_fxt(); @Test public void Ns_main() { fxt.Init_create_page("A"); fxt.Init_create_page("A/B/C"); - fxt.Test_open("Special:RandomRootPage/Main", "A"); + fxt.Test_open("Special:RandomRootPage/Main", "A"); // NOTE: result will always be "A"; "A" -> "A"; "A/B/C" -> "A" } @Test public void Ns_help() { fxt.Init_create_page("Help:A"); @@ -30,20 +30,21 @@ public class Xop_randomRootPage_page_tst { fxt.Test_open("Special:RandomRootPage/Help", "Help:A"); } } -class Xop_randomRootPage_page_fxt { +class Rndm_root_special_fxt { + private Xop_fxt parser_fxt; private Rndm_root_special special_page; private Xowe_wiki wiki; public void Clear() { parser_fxt = new Xop_fxt(); parser_fxt.Reset(); wiki = parser_fxt.Wiki(); - special_page = wiki.Special_mgr().Page_randomRootPage(); - } private Xop_fxt parser_fxt; private Xop_randomRootPage_page special_page; private Xowe_wiki wiki; + special_page = new gplx.xowa.addons.wikis.pages.randoms.specials.Rndm_root_special(); + } public void Init_create_page(String page) {parser_fxt.Init_page_create(page, page);} public void Test_open(String special_url, String expd) { Xoae_page page = Test_special_open(wiki, special_page, special_url); Tfds.Eq(expd, String_.new_a7(page.Url().Page_bry())); Tfds.Eq(expd, String_.new_a7(page.Data_raw())); } - public static Xoae_page Test_special_open(Xowe_wiki wiki, Xows_page special_page, String special_url) { + public static Xoae_page Test_special_open(Xowe_wiki wiki, Xow_special_page special_page, String special_url) { Xoae_page page = wiki.Parser_mgr().Ctx().Page(); Xoa_url url = wiki.Utl__url_parser().Parse(Bry_.new_u8(special_url)); page.Url_(url); diff --git a/400_xowa/src/gplx/xowa/addons/wikis/randoms/Rndm_mgr.java b/400_xowa/src/gplx/xowa/addons/wikis/randoms/Rndm_mgr.java deleted file mode 100644 index a9825e182..000000000 --- a/400_xowa/src/gplx/xowa/addons/wikis/randoms/Rndm_mgr.java +++ /dev/null @@ -1,91 +0,0 @@ -/* -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.addons.wikis.randoms; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; -import gplx.core.primitives.*; import gplx.core.brys.fmtrs.*; -import gplx.dbs.*; import gplx.xowa.wikis.data.tbls.*; -import gplx.xowa.addons.wikis.randoms.dbs.*; -public class Rndm_mgr implements Rls_able { - private Rndm_core_tbl core_tbl; private final Rndm_core_row core_row = new Rndm_core_row(); - private Rndm_range_tbl rng_tbl; - private Xowd_page_tbl page_tbl; private Db_stmt stmt__page__random; - public void Init(Db_conn conn, Xowd_page_tbl page_tbl) { - core_tbl = new Rndm_core_tbl(conn); - rng_tbl = new Rndm_range_tbl(conn); - this.page_tbl = page_tbl; - conn.Rls_reg(this); - } - public void Rebuild(int uid, String where_sql, int interval) { - int total_count = 0; List_adp rng_list = List_adp_.new_(); - Db_conn conn = page_tbl.conn; - Db_stmt stmt = conn.Stmt_select_order(page_tbl.Tbl_name(), String_.Ary(page_tbl.Fld_page_id()), String_.Ary_empty, page_tbl.Fld_page_id()); - Db_rdr rdr = stmt.Exec_select__rls_auto(); - try { - while (rdr.Move_next()) { - ++total_count; // add to total count first so (total_count % interval) is never 0 for total_count = 0 - if (total_count % interval == 0) { - int cur_page_id = rdr.Read_int(page_tbl.Fld_page_id()); - rng_list.Add(Int_obj_ref.new_(cur_page_id)); - } - } - } - finally {rdr.Rls();} - conn.Txn_bgn("rndm_rebuild"); - core_tbl.Upsert(uid, where_sql, total_count, interval); - int rng_ary_len = rng_list.Count(); - rng_tbl.Insert_bgn(uid); - for (int i = 0; i < rng_ary_len; ++i) { - Int_obj_ref rng_itm = (Int_obj_ref)rng_list.Get_at(i); - rng_tbl.Insert_itm(uid, i + 1, rng_itm.Val()); - } - rng_tbl.Insert_end(); - conn.Txn_end(); - } - public int Get_rndm_page(int uid) { // EX: ns=0;type_is_redirect=0 - synchronized (core_row) {core_tbl.Select(core_row, uid);} - int rndm_num = RandomAdp_.new_().Next(core_row.total); - int rng_idx = rndm_num / core_row.interval; - int itm_idx = rndm_num % core_row.interval; - int page_id_bgn = rng_idx == 0 ? 0 : rng_tbl.Select_or_neg_1(uid, rng_idx); - int rv = Select_by_offset(core_row.where_sql, page_id_bgn, itm_idx); - return rv; - } - private int Select_by_offset(String where_sql, int page_id_bgn, int offset) { - Bry_bfr bfr = Bry_bfr.new_(); - where_sql = fmt_where.Fmt_(where_sql).Bld_many_to_str(bfr, page_tbl.Fld_page_ns(), page_tbl.Fld_is_redirect()); - String sql = fmt_sql.Bld_many_to_str(bfr, page_tbl.Tbl_name(), page_tbl.Fld_page_id(), where_sql, page_id_bgn, offset); - Db_rdr rdr = Db_rdr_.Empty; - try { - rdr = page_tbl.conn.Exec_rdr(sql); - return rdr.Move_next() ? rdr.Read_int(page_tbl.Fld_page_id()) : -1; - } - finally {rdr.Rls();} - } - public void Rls() { - stmt__page__random = Db_stmt_.Rls(stmt__page__random); - } - private static final Bry_fmt fmt_sql = Bry_fmt.New(String_.Concat_lines_nl_skip_last - ( "SELECT p.~{page_id}" - , "FROM ~{page} p" - , "WHERE p.~{~page_id} > ~{page_id_bgn}" - , "~{where_sql}" - , "ORDER BY ~{page_id}" - , "LIMIT 1" - , "OFFSET ~{offset};" - ), "page", "page_id", "where_sql", "page_id_bgn", "offset"); - private static final Bry_fmt fmt_where = Bry_fmt.New("", "page_namespace", "page_is_redirect"); -} diff --git a/400_xowa/src/gplx/xowa/addons/wikis/randoms/dbs/Rndm_core_tbl.java b/400_xowa/src/gplx/xowa/addons/wikis/randoms/dbs/Rndm_core_tbl.java deleted file mode 100644 index 880914145..000000000 --- a/400_xowa/src/gplx/xowa/addons/wikis/randoms/dbs/Rndm_core_tbl.java +++ /dev/null @@ -1,52 +0,0 @@ -/* -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.addons.wikis.randoms.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.randoms.*; -import gplx.core.ios.*; import gplx.dbs.*; import gplx.dbs.utls.*; -public class Rndm_core_tbl implements Rls_able { - private final String tbl_name = "rndm_core"; private final Dbmeta_fld_list flds = Dbmeta_fld_list.new_(); - private final String fld_uid, fld_where_sql, fld_total, fld_interval; - private final Db_conn conn; private Db_stmt stmt_select; - public Rndm_core_tbl(Db_conn conn) { - this.conn = conn; - fld_uid = flds.Add_int_pkey("rndm_uid"); - fld_where_sql = flds.Add_str("rndm_where_sql", 1024); - fld_total = flds.Add_int("rndm_total"); - fld_interval = flds.Add_int("rndm_interval"); - conn.Rls_reg(this); - } - public void Create_tbl() {conn.Meta_tbl_create(Dbmeta_tbl_itm.New(tbl_name, flds, Dbmeta_idx_itm.new_unique_by_name(tbl_name, "core", fld_uid)));} - public void Upsert(int uid, String where_sql, int total, int interval) { - conn.Stmt_delete(tbl_name, fld_uid).Crt_int(fld_uid, uid).Exec_delete(); - conn.Stmt_insert(tbl_name, flds).Val_int(fld_uid, uid).Val_str(fld_where_sql, where_sql).Val_int(fld_total, total).Val_int(fld_interval, interval).Exec_insert(); - } - public void Select(Rndm_core_row rv, int uid) { - if (stmt_select == null) stmt_select = conn.Stmt_select(tbl_name, flds, fld_uid); - Db_rdr rdr = stmt_select.Clear().Val_int(fld_uid, uid).Exec_select__rls_manual(); - try { - if (rdr.Move_next()) { - String where_sql = rdr.Read_str(fld_where_sql); - int total = rdr.Read_int(fld_total); - int interval = rdr.Read_int(fld_interval); - rv.Load(uid, where_sql, total, interval); - } - } finally {rdr.Rls();} - } - public void Rls() { - stmt_select = Db_stmt_.Rls(stmt_select); - } -} diff --git a/400_xowa/src/gplx/xowa/addons/wikis/randoms/dbs/Rndm_range_tbl.java b/400_xowa/src/gplx/xowa/addons/wikis/randoms/dbs/Rndm_range_tbl.java deleted file mode 100644 index c243c693b..000000000 --- a/400_xowa/src/gplx/xowa/addons/wikis/randoms/dbs/Rndm_range_tbl.java +++ /dev/null @@ -1,52 +0,0 @@ -/* -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.addons.wikis.randoms.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.randoms.*; -import gplx.core.ios.*; import gplx.dbs.*; import gplx.dbs.utls.*; -public class Rndm_range_tbl implements Rls_able { - private final String tbl_name = "rndm_range"; private final Dbmeta_fld_list flds = Dbmeta_fld_list.new_(); - private final String fld_rng_uid, fld_rng_idx, fld_rng_page_id; - private final Db_conn conn; private Db_stmt stmt_select, stmt_insert; - public Rndm_range_tbl(Db_conn conn) { - this.conn = conn; - fld_rng_uid = flds.Add_int("rng_uid"); - fld_rng_idx = flds.Add_int("rng_idx"); - fld_rng_page_id = flds.Add_int("rng_page_id"); - conn.Rls_reg(this); - } - public void Create_tbl() {conn.Meta_tbl_create(Dbmeta_tbl_itm.New(tbl_name, flds, Dbmeta_idx_itm.new_unique_by_name(tbl_name, "core", fld_rng_uid, fld_rng_idx)));} - public void Insert_bgn(int uid) { - conn.Stmt_delete(tbl_name, fld_rng_uid).Crt_int(fld_rng_uid, uid).Exec_delete(); - stmt_insert = conn.Stmt_insert(tbl_name, flds); - } - public void Insert_itm(int uid, int idx, int page_id) { - stmt_insert.Clear().Val_int(fld_rng_uid, uid).Val_int(fld_rng_idx, idx).Val_int(fld_rng_page_id, page_id).Exec_insert(); - } - public void Insert_end() { - stmt_insert = Db_stmt_.Rls(stmt_insert); - } - public int Select_or_neg_1(int core_uid, int rng_idx) { - if (stmt_select == null) stmt_select = conn.Stmt_select(tbl_name, flds, fld_rng_uid, fld_rng_idx); - Db_rdr rdr = stmt_select.Clear().Val_int(fld_rng_uid, core_uid).Val_int(fld_rng_idx, rng_idx).Exec_select__rls_manual(); - try {return rdr.Move_next() ? rdr.Read_int(fld_rng_page_id) : -1;} - catch (Exception e) {Gfo_usr_dlg_.Instance.Warn_many("", "", "failed to get rndm_idx; url=~{0} core_uid=~{1} rng_idx=~{2} err=~{3}", conn.Conn_info().Db_api(), core_uid, rng_idx, Err_.Message_gplx_log(e)); return -1;} - finally {rdr.Rls();} - } - public void Rls() { - stmt_select = Db_stmt_.Rls(stmt_select); - } -} diff --git a/400_xowa/src/gplx/xowa/addons/apps/file_browsers/Fbrow_addon.java b/400_xowa/src/gplx/xowa/addons/wikis/registrys/Wiki_registry_addon.java similarity index 59% rename from 400_xowa/src/gplx/xowa/addons/apps/file_browsers/Fbrow_addon.java rename to 400_xowa/src/gplx/xowa/addons/wikis/registrys/Wiki_registry_addon.java index 4c6d7a2eb..257c4179b 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/file_browsers/Fbrow_addon.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/registrys/Wiki_registry_addon.java @@ -15,16 +15,15 @@ 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.addons.apps.file_browsers; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; +package gplx.xowa.addons.wikis.registrys; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.specials.*; -public class Fbrow_addon implements Xoax_addon_itm, Xoax_addon_itm__special { - public Xows_page[] Pages_ary() { - return new Xows_page[] - { Fbrow_special_page.Prototype - , Wikis_list_page.Prototype +public class Wiki_registry_addon implements Xoax_addon_itm, Xoax_addon_itm__special { + public Xow_special_page[] Special_pages() { + return new Xow_special_page[] + { gplx.xowa.addons.wikis.registrys.lists.Xow_list_special.Prototype + , gplx.xowa.addons.wikis.registrys.infos.Xow_info_special.Prototype }; } - public static final byte[] ADDON_KEY = Bry_.new_a7("xowa.apps.file_browsers"); - public byte[] Addon__key() {return ADDON_KEY;} + public String Addon__key() {return "xowa.apps.wikis.registrys";} } diff --git a/400_xowa/src/gplx/xowa/addons/wikis/registrys/infos/Xow_info_doc.java b/400_xowa/src/gplx/xowa/addons/wikis/registrys/infos/Xow_info_doc.java new file mode 100644 index 000000000..5fcdcbfe1 --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/wikis/registrys/infos/Xow_info_doc.java @@ -0,0 +1,44 @@ +/* +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.addons.wikis.registrys.infos; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.registrys.*; +import gplx.langs.mustaches.*; +class Xow_info_doc implements Mustache_doc_itm { + private final Mustache_doc_itm[] ary; + public Xow_info_doc(Xow_info_doc_wiki itm) {this.ary = new Mustache_doc_itm[] {itm};} + public boolean Mustache__write(String key, Mustache_bfr bfr) {return false;} + public Mustache_doc_itm[] Mustache__subs(String key) { + if (String_.Eq(key, "wiki_info")) return ary; + return Mustache_doc_itm_.Ary__empty; + } +} +class Xow_info_doc_wiki implements Mustache_doc_itm { + private final byte[] domain; + private final String date, size, dir; + public Xow_info_doc_wiki(byte[] domain, String date, String dir, String size) { + this.domain = domain; this.date = date; this.dir = dir; this.size = size; + } + public boolean Mustache__write(String key, Mustache_bfr bfr) { + if (String_.Eq(key, "wiki_domain")) bfr.Add_bry(domain); + else if (String_.Eq(key, "wiki_date")) bfr.Add_str_u8(date); + else if (String_.Eq(key, "wiki_dir")) bfr.Add_str_u8(dir); + else if (String_.Eq(key, "wiki_size")) bfr.Add_str_u8(size); + else return false; + return true; + } + public Mustache_doc_itm[] Mustache__subs(String key) {return Mustache_doc_itm_.Ary__empty;} +} diff --git a/400_xowa/src/gplx/xowa/addons/wikis/registrys/infos/Xow_info_html.java b/400_xowa/src/gplx/xowa/addons/wikis/registrys/infos/Xow_info_html.java new file mode 100644 index 000000000..119bd2df5 --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/wikis/registrys/infos/Xow_info_html.java @@ -0,0 +1,64 @@ +/* +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.addons.wikis.registrys.infos; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.registrys.*; +import gplx.xowa.specials.*; import gplx.langs.mustaches.*; import gplx.xowa.wikis.pages.*; import gplx.xowa.wikis.pages.tags.*; +import gplx.xowa.users.data.*; +class Xow_info_html extends Xow_special_wtr__base { + private final byte[] wiki_domain; + public Xow_info_html(byte[] wiki_domain) {this.wiki_domain = wiki_domain;} + @Override protected Io_url Get_addon_dir(Xoa_app app) {return app.Fsys_mgr().Http_root().GenSubDir_nest("bin", "any", "xowa", "addon", "wiki", "registry", "info");} + @Override protected Io_url Get_mustache_fil(Io_url addon_dir) {return addon_dir.GenSubFil_nest("bin", "xow_info.mustache.html");} + @Override protected Mustache_doc_itm Bld_mustache_root(Xoa_app app) { + // load itm from db + app.User().User_db_mgr().Init_site_mgr(); // HACK.USER_DB: init site_mgr for desktop + Xoud_site_row site_itm = app.User().User_db_mgr().Site_mgr().Select_by_domain(wiki_domain); + if (site_itm == null) return null; // handle deleted wikis + String wiki_dir = site_itm.Path(); + if (String_.Eq(site_itm.Date(), "")) { + Xow_wiki wiki = app.Wiki_mgri().Get_by_or_make_init_n(wiki_domain); + wiki.Init_by_wiki(); // force init to load Modified_latest + site_itm.Date_(wiki.Props().Modified_latest__yyyy_MM_dd()); + app.User().User_db_mgr().Site_mgr().Update(site_itm); + } + return new Xow_info_doc + ( new Xow_info_doc_wiki(wiki_domain, site_itm.Date(), wiki_dir + , Calc_file_size(Io_url_.new_dir_(wiki_dir))) + ); + } + @Override protected void Bld_tags(Xoa_app app, Io_url addon_dir, Xopage_html_data page_data) { + Xopg_tag_mgr head_tags = page_data.Head_tags(); + Xopg_tag_wtr_.Add__xocss (head_tags, app.Fsys_mgr().Http_root()); + Xopg_tag_wtr_.Add__xohelp (head_tags, app.Fsys_mgr().Http_root()); + Xopg_alertify_.Add_tags (head_tags, app.Fsys_mgr().Http_root()); + head_tags.Add(Xopg_tag_itm.New_css_file(addon_dir.GenSubFil_nest("bin", "xow_info.css"))); + } + @Override protected void Handle_invalid(Xoa_app app, Xoa_page page, Xow_special_page special) { + new Xopage_html_data(special.Special__meta().Display_ttl(), Bry_.Add(wiki_domain, Bry_.new_a7(" has been deleted"))).Apply(page); + } + + private static String Calc_file_size(Io_url dir) { + Io_url[] urls = Io_mgr.Instance.QueryDir_fils(dir); + int len = urls.length; + long size = 0; + for (int i = 0; i < len; ++i) { + Io_url url = urls[i]; + size += Io_mgr.Instance.QueryFil(url).Size(); + } + return gplx.core.ios.Io_size_.To_str_new(Bry_bfr_.New(), size, 2); + } +} diff --git a/400_xowa/src/gplx/xowa/addons/wikis/registrys/infos/Xow_info_special.java b/400_xowa/src/gplx/xowa/addons/wikis/registrys/infos/Xow_info_special.java new file mode 100644 index 000000000..761fe798d --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/wikis/registrys/infos/Xow_info_special.java @@ -0,0 +1,61 @@ +/* +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.addons.wikis.registrys.infos; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.registrys.*; +import gplx.xowa.specials.*; import gplx.core.net.*; import gplx.core.net.qargs.*; import gplx.xowa.wikis.pages.*; +public class Xow_info_special implements Xow_special_page { + public void Special__gen(Xow_wiki wiki, Xoa_page page, Xoa_url url, Xoa_ttl ttl) { + Gfo_qarg_mgr url_args = new Gfo_qarg_mgr().Init(url.Qargs_ary()); + + // if cmd=delete passed; delete "wiki" + byte[] wiki_domain = url_args.Read_bry_or_fail("wiki"); + if (url_args.Read_enm_as_int_or(Enm_cmd.Itm, -1) == Enm_cmd.Tid__delete) { + wiki.App().User().User_db_mgr().Site_mgr().Delete_by_domain(wiki_domain); + Xow_wiki delete_wiki = wiki.App().Wiki_mgri().Get_by_or_make_init_n(wiki_domain); + if (delete_wiki != null) { // guard against revisiting url for deleted wiki + if (delete_wiki.Data__core_mgr() != null) // null check needed in case wiki is not loaded + delete_wiki.Data__core_mgr().Rls(); // release connection if open + Delete_wiki_files(delete_wiki.Fsys_mgr().Root_dir()); + } + page.Redirect_to_ttl_(gplx.xowa.addons.wikis.registrys.lists.Xow_list_special.Prototype.Special__meta().Ttl_bry()); + return; + } + + // show info of wikis + new Xow_info_html(wiki_domain).Bld_page_by_mustache(wiki.App(), page, this); + } + private static void Delete_wiki_files(Io_url root_dir) { + Io_url[] urls = Io_mgr.Instance.QueryDir_fils(root_dir); + for (Io_url url : urls) { + try { + Io_mgr.Instance.DeleteFil(url); + } catch (Exception e) { + Gfo_log_.Instance.Warn("failed to delete wiki file", "wiki", url.Raw(), "err", Err_.Message_gplx_log(e)); + } + } + } + + static class Enm_cmd {//#*nested + public static final int Tid__delete = 0; + public static final Gfo_qarg_enum_itm Itm = new Gfo_qarg_enum_itm("cmd").Add("delete", Tid__delete); + } + + Xow_info_special(Xow_special_meta special__meta) {this.special__meta = special__meta;} + public Xow_special_meta Special__meta() {return special__meta;} private final Xow_special_meta special__meta; + public Xow_special_page Special__clone() {return this;} + public static final Xow_special_page Prototype = new Xow_info_special(Xow_special_meta.New_xo("XowaWikiInfo", "Wiki Info")); +} diff --git a/400_xowa/src/gplx/xowa/addons/apps/file_browsers/Wikis_list_itm.java b/400_xowa/src/gplx/xowa/addons/wikis/registrys/lists/Xow_list_doc.java similarity index 67% rename from 400_xowa/src/gplx/xowa/addons/apps/file_browsers/Wikis_list_itm.java rename to 400_xowa/src/gplx/xowa/addons/wikis/registrys/lists/Xow_list_doc.java index a04216659..267c970b3 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/file_browsers/Wikis_list_itm.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/registrys/lists/Xow_list_doc.java @@ -15,13 +15,12 @@ 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.addons.apps.file_browsers; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; -import gplx.core.ios.*; +package gplx.xowa.addons.wikis.registrys.lists; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.registrys.*; import gplx.langs.mustaches.*; -class Wikis_list_mgr implements Mustache_doc_itm { +class Xow_list_doc implements Mustache_doc_itm { private final byte[] import_root; - private final Wikis_list_itm[] subs; - public Wikis_list_mgr(byte[] import_root, Wikis_list_itm[] subs) {this.import_root = import_root; this.subs = subs;} + private final Xow_list_doc_wiki[] subs; + public Xow_list_doc(byte[] import_root, Xow_list_doc_wiki[] subs) {this.import_root = import_root; this.subs = subs;} public boolean Mustache__write(String key, Mustache_bfr bfr) { if (String_.Eq(key, "import_root")) bfr.Add_bry(import_root); return false; @@ -31,14 +30,15 @@ class Wikis_list_mgr implements Mustache_doc_itm { return Mustache_doc_itm_.Ary__empty; } } -class Wikis_list_itm implements Mustache_doc_itm { - private final byte[] domain, date; - public Wikis_list_itm(byte[] domain, byte[] date) { +class Xow_list_doc_wiki implements Mustache_doc_itm { + private final byte[] domain; + private final String date; + public Xow_list_doc_wiki(byte[] domain, String date) { this.domain = domain; this.date = date; } public boolean Mustache__write(String key, Mustache_bfr bfr) { if (String_.Eq(key, "domain")) bfr.Add_bry(domain); - else if (String_.Eq(key, "date")) bfr.Add_bry(date); + else if (String_.Eq(key, "date")) bfr.Add_str_u8(date); else return false; return true; } diff --git a/400_xowa/src/gplx/xowa/addons/wikis/registrys/lists/Xow_list_html.java b/400_xowa/src/gplx/xowa/addons/wikis/registrys/lists/Xow_list_html.java new file mode 100644 index 000000000..1a9648a7d --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/wikis/registrys/lists/Xow_list_html.java @@ -0,0 +1,53 @@ +/* +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.addons.wikis.registrys.lists; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.registrys.*; +import gplx.xowa.specials.*; import gplx.langs.mustaches.*; import gplx.xowa.wikis.pages.*; import gplx.xowa.wikis.pages.tags.*; +import gplx.xowa.wikis.xwikis.*; +import gplx.xowa.users.data.*; +class Xow_list_html extends Xow_special_wtr__base { + @Override protected Io_url Get_addon_dir(Xoa_app app) {return app.Fsys_mgr().Http_root().GenSubDir_nest("bin", "any", "xowa", "addon", "wiki", "registry", "list");} + @Override protected Io_url Get_mustache_fil(Io_url addon_dir) {return addon_dir.GenSubFil_nest("bin", "xow_list.mustache.html");} + @Override protected Mustache_doc_itm Bld_mustache_root(Xoa_app app) { + // make list_mgr based on site_wikis + List_adp list = List_adp_.New(); + app.User().User_db_mgr().Init_site_mgr(); + Xoud_site_row[] site_ary = app.User().User_db_mgr().Site_mgr().Get_all(); + int len = site_ary.length; + for (int i = 0; i < len; ++i) { + Xoud_site_row site_itm = site_ary[i]; + if (String_.Eq(site_itm.Domain(), gplx.xowa.wikis.domains.Xow_domain_itm_.Str__home)) continue; + list.Add(new Xow_list_doc_wiki(Bry_.new_u8(site_itm.Domain()), site_itm.Date())); + } + return new Xow_list_doc(Get_root_url(), (Xow_list_doc_wiki[])list.To_ary_and_clear(Xow_list_doc_wiki.class)); + } + @Override protected void Bld_tags(Xoa_app app, Io_url addon_dir, Xopage_html_data page_data) { + Xopg_tag_mgr head_tags = page_data.Head_tags(); + Xopg_tag_wtr_.Add__xocss (head_tags, app.Fsys_mgr().Http_root()); + Xopg_tag_wtr_.Add__xohelp (head_tags, app.Fsys_mgr().Http_root()); + head_tags.Add(Xopg_tag_itm.New_css_file(addon_dir.GenSubFil_nest("bin", "xow_list.css"))); + } + private static byte[] Get_root_url() { + byte tid = gplx.core.envs.Op_sys.Cur().Tid(); + byte[] rv = Bry_.new_a7("/"); + switch (tid) { + case gplx.core.envs.Op_sys.Tid_wnt : rv = Bry_.new_a7("C:\\"); break; + } + rv = gplx.langs.htmls.encoders.Gfo_url_encoder_.Href.Encode(rv); + return rv; + } +} diff --git a/400_xowa/src/gplx/xowa/addons/wikis/registrys/lists/Xow_list_special.java b/400_xowa/src/gplx/xowa/addons/wikis/registrys/lists/Xow_list_special.java new file mode 100644 index 000000000..105ca543e --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/wikis/registrys/lists/Xow_list_special.java @@ -0,0 +1,44 @@ +/* +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.addons.wikis.registrys.lists; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.registrys.*; +import gplx.xowa.specials.*; import gplx.core.net.*; import gplx.core.net.qargs.*; import gplx.xowa.wikis.pages.*; +public class Xow_list_special implements Xow_special_page { + public void Special__gen(Xow_wiki wiki, Xoa_page page, Xoa_url url, Xoa_ttl ttl) { + Gfo_qarg_mgr url_args = new Gfo_qarg_mgr().Init(url.Qargs_ary()); + + // if cmd=add passed; import "file"; occurs when "file" is selected by file_browser + if (url_args.Read_enm_as_int_or(Enm_cmd.Itm, -1) == Enm_cmd.Tid__add) { + byte[] file = url_args.Read_bry_or_fail("file"); + if (wiki.App().Tid_is_edit()) wiki.App().User().User_db_mgr().Init_site_mgr(); // HACK.USER_DB: init site_mgr for desktop + wiki.App().Wiki_mgri().Import_by_url(Io_url_.new_fil_(String_.new_u8(file))); + } + + // show list of wikis + new Xow_list_html().Bld_page_by_mustache(wiki.App(), page, this); + } + + static class Enm_cmd {//#*nested + public static final int Tid__add = 0; + public static final Gfo_qarg_enum_itm Itm = new Gfo_qarg_enum_itm("cmd").Add("add", Tid__add); + } + + Xow_list_special(Xow_special_meta special__meta) {this.special__meta = special__meta;} + public Xow_special_meta Special__meta() {return special__meta;} private final Xow_special_meta special__meta; + public Xow_special_page Special__clone() {return this;} + public static final Xow_special_page Prototype = new Xow_list_special(Xow_special_meta.New_xo("XowaWikiList", "Wikis", "XowaWikis")); +} diff --git a/400_xowa/src/gplx/xowa/addons/apps/searchs/Srch_search_addon.java b/400_xowa/src/gplx/xowa/addons/wikis/searchs/Srch_search_addon.java similarity index 78% rename from 400_xowa/src/gplx/xowa/addons/apps/searchs/Srch_search_addon.java rename to 400_xowa/src/gplx/xowa/addons/wikis/searchs/Srch_search_addon.java index 72bfd1b99..82d3a55c1 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/searchs/Srch_search_addon.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/searchs/Srch_search_addon.java @@ -15,8 +15,8 @@ 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.addons.apps.searchs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; -import gplx.xowa.addons.apps.searchs.dbs.*; import gplx.xowa.addons.apps.searchs.searchers.*; import gplx.xowa.addons.apps.searchs.parsers.*; import gplx.xowa.addons.apps.searchs.searchers.rslts.*; import gplx.xowa.addons.apps.searchs.searchers.cbks.*; +package gplx.xowa.addons.wikis.searchs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; +import gplx.xowa.addons.wikis.searchs.dbs.*; import gplx.xowa.addons.wikis.searchs.searchers.*; import gplx.xowa.addons.wikis.searchs.parsers.*; import gplx.xowa.addons.wikis.searchs.searchers.rslts.*; import gplx.xowa.addons.wikis.searchs.searchers.cbks.*; import gplx.xowa.langs.cases.*; public class Srch_search_addon implements Xoax_addon_itm, Srch_search_addon_api { private final Srch_search_mgr search_mgr; @@ -43,7 +43,6 @@ public class Srch_search_addon implements Xoax_addon_itm, Srch_search_addon_api } return rv; } - - public static final byte[] ADDON_KEY = Bry_.new_a7("xowa.apps.search"); - public byte[] Addon__key() {return ADDON_KEY;} + + public String Addon__key() {return ADDON_KEY;} private static final String ADDON_KEY = "xowa.apps.search"; } diff --git a/400_xowa/src/gplx/xowa/addons/apps/searchs/Srch_search_addon_api.java b/400_xowa/src/gplx/xowa/addons/wikis/searchs/Srch_search_addon_api.java similarity index 76% rename from 400_xowa/src/gplx/xowa/addons/apps/searchs/Srch_search_addon_api.java rename to 400_xowa/src/gplx/xowa/addons/wikis/searchs/Srch_search_addon_api.java index a36ad9ea0..6fead750c 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/searchs/Srch_search_addon_api.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/searchs/Srch_search_addon_api.java @@ -15,9 +15,9 @@ 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.addons.apps.searchs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; -import gplx.xowa.addons.apps.searchs.searchers.*; -import gplx.xowa.addons.apps.searchs.searchers.rslts.*; +package gplx.xowa.addons.wikis.searchs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; +import gplx.xowa.addons.wikis.searchs.searchers.*; +import gplx.xowa.addons.wikis.searchs.searchers.rslts.*; public interface Srch_search_addon_api { void Search(Srch_search_qry qry, Srch_rslt_cbk cbk); } diff --git a/400_xowa/src/gplx/xowa/addons/apps/searchs/Srch_search_cfg.java b/400_xowa/src/gplx/xowa/addons/wikis/searchs/Srch_search_cfg.java similarity index 92% rename from 400_xowa/src/gplx/xowa/addons/apps/searchs/Srch_search_cfg.java rename to 400_xowa/src/gplx/xowa/addons/wikis/searchs/Srch_search_cfg.java index 4ad9d025d..a5a4eee03 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/searchs/Srch_search_cfg.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/searchs/Srch_search_cfg.java @@ -15,11 +15,11 @@ 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.addons.apps.searchs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; -import gplx.core.net.*; +package gplx.xowa.addons.wikis.searchs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; +import gplx.core.net.*; import gplx.core.net.qargs.*; import gplx.xowa.wikis.nss.*; -import gplx.xowa.addons.apps.searchs.searchers.cbks.*; import gplx.xowa.addons.apps.searchs.searchers.*; -public class Srch_search_cfg implements GfoInvkAble { +import gplx.xowa.addons.wikis.searchs.searchers.cbks.*; import gplx.xowa.addons.wikis.searchs.searchers.*; +public class Srch_search_cfg implements Gfo_invk { private final Xoae_app app; private String args_default_str = "";// default args for search private byte search_mode = Tid_search_mode_all_pages_v2; @@ -76,7 +76,7 @@ public class Srch_search_cfg implements GfoInvkAble { else if (ctx.Match(k, Invk_log_enabled_)) log_enabled = m.ReadYn("v"); else if (ctx.Match(k, Invk_args_default)) return args_default_str; else if (ctx.Match(k, Invk_args_default_)) Args_default_str_(m.ReadStr("v")); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } public static final String diff --git a/400_xowa/src/gplx/xowa/addons/apps/searchs/Xoax_builds_search_addon.java b/400_xowa/src/gplx/xowa/addons/wikis/searchs/Xoax_builds_search_addon.java similarity index 71% rename from 400_xowa/src/gplx/xowa/addons/apps/searchs/Xoax_builds_search_addon.java rename to 400_xowa/src/gplx/xowa/addons/wikis/searchs/Xoax_builds_search_addon.java index 383356aef..7617b164b 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/searchs/Xoax_builds_search_addon.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/searchs/Xoax_builds_search_addon.java @@ -15,10 +15,10 @@ 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.addons.apps.searchs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; -import gplx.xowa.bldrs.wkrs.*; import gplx.xowa.addons.apps.searchs.bldrs.cmds.*; +package gplx.xowa.addons.wikis.searchs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; +import gplx.xowa.bldrs.wkrs.*; import gplx.xowa.addons.wikis.searchs.bldrs.cmds.*; public class Xoax_builds_search_addon implements Xoax_addon_itm, Xoax_addon_itm__bldr { - public Xob_cmd[] Cmds_ary() { + public Xob_cmd[] Bldr_cmds() { return new Xob_cmd[] { Xobldr__link__link_score.Prototype , Xobldr__page__page_score.Prototype @@ -26,6 +26,5 @@ public class Xoax_builds_search_addon implements Xoax_addon_itm, Xoax_addon_itm_ }; } - public static final byte[] ADDON_KEY = Bry_.new_a7("xowa.builds.search"); - public byte[] Addon__key() {return ADDON_KEY;} + public String Addon__key() {return "xowa.builds.search";} } diff --git a/400_xowa/src/gplx/xowa/addons/apps/searchs/bldrs/Srch_bldr_cmd.java b/400_xowa/src/gplx/xowa/addons/wikis/searchs/bldrs/Srch_bldr_cmd.java similarity index 87% rename from 400_xowa/src/gplx/xowa/addons/apps/searchs/bldrs/Srch_bldr_cmd.java rename to 400_xowa/src/gplx/xowa/addons/wikis/searchs/bldrs/Srch_bldr_cmd.java index 5a0249cb3..8a3321f8d 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/searchs/bldrs/Srch_bldr_cmd.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/searchs/bldrs/Srch_bldr_cmd.java @@ -15,7 +15,7 @@ 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.addons.apps.searchs.bldrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; import gplx.xowa.addons.apps.searchs.*; +package gplx.xowa.addons.wikis.searchs.bldrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.searchs.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wkrs.*; public class Srch_bldr_cmd extends Xob_cmd__base implements Xob_cmd { private int commit_interval = 100000, progress_interval = 10000; @@ -28,7 +28,7 @@ public class Srch_bldr_cmd extends Xob_cmd__base implements Xob_cmd { @Override public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_commit_interval_)) commit_interval = m.ReadInt("v"); else if (ctx.Match(k, Invk_progress_interval_)) progress_interval = m.ReadInt("v"); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String Invk_progress_interval_ = "progress_interval_", Invk_commit_interval_ = "commit_interval_"; } diff --git a/400_xowa/src/gplx/xowa/addons/apps/searchs/bldrs/Srch_bldr_mgr_.java b/400_xowa/src/gplx/xowa/addons/wikis/searchs/bldrs/Srch_bldr_mgr_.java similarity index 78% rename from 400_xowa/src/gplx/xowa/addons/apps/searchs/bldrs/Srch_bldr_mgr_.java rename to 400_xowa/src/gplx/xowa/addons/wikis/searchs/bldrs/Srch_bldr_mgr_.java index 5568f1702..caaf0dddd 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/searchs/bldrs/Srch_bldr_mgr_.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/searchs/bldrs/Srch_bldr_mgr_.java @@ -15,9 +15,9 @@ 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.addons.apps.searchs.bldrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; import gplx.xowa.addons.apps.searchs.*; +package gplx.xowa.addons.wikis.searchs.bldrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.searchs.*; import gplx.xowa.bldrs.*; -import gplx.xowa.addons.apps.searchs.bldrs.cmds.*; +import gplx.xowa.addons.wikis.searchs.bldrs.cmds.*; public class Srch_bldr_mgr_ { public static void Setup(Xowe_wiki wiki) { Xoae_app app = wiki.Appe(); @@ -27,8 +27,8 @@ public class Srch_bldr_mgr_ { int page_rank_iterations = app.Api_root().Bldr().Wiki().Import().Page_rank().Iteration_max(); boolean page_rank_enabled = page_rank_iterations > 0; if (page_rank_enabled) { - bldr.Cmd_mgr().Add(new gplx.xowa.bldrs.cmds.utils.Xob_download_cmd(bldr, wiki).Dump_type_(gplx.xowa.addons.builds.pagelinks.bldrs.Pglnk_bldr_cmd.Dump_type_key)); - bldr.Cmd_mgr().Add_many(wiki, gplx.xowa.addons.builds.pagelinks.bldrs.Pglnk_bldr_cmd.BLDR_CMD_KEY); + bldr.Cmd_mgr().Add(new gplx.xowa.bldrs.cmds.utils.Xob_download_cmd(bldr, wiki).Dump_type_(gplx.xowa.addons.bldrs.pagelinks.bldrs.Pglnk_bldr_cmd.Dump_type_key)); + bldr.Cmd_mgr().Add_many(wiki, gplx.xowa.addons.bldrs.pagelinks.bldrs.Pglnk_bldr_cmd.BLDR_CMD_KEY); } bldr.Cmd_mgr().Add(new Xobldr__page__page_score(bldr, wiki).Iteration_max_(page_rank_iterations)); bldr.Cmd_mgr().Add(new Xobldr__link__link_score(bldr, wiki).Page_rank_enabled_(page_rank_enabled).Delete_plink_db_(Bool_.Y)); diff --git a/400_xowa/src/gplx/xowa/addons/apps/searchs/bldrs/Srch_bldr_wkr.java b/400_xowa/src/gplx/xowa/addons/wikis/searchs/bldrs/Srch_bldr_wkr.java similarity index 88% rename from 400_xowa/src/gplx/xowa/addons/apps/searchs/bldrs/Srch_bldr_wkr.java rename to 400_xowa/src/gplx/xowa/addons/wikis/searchs/bldrs/Srch_bldr_wkr.java index 3018efcc4..5c743fae5 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/searchs/bldrs/Srch_bldr_wkr.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/searchs/bldrs/Srch_bldr_wkr.java @@ -15,7 +15,7 @@ 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.addons.apps.searchs.bldrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; import gplx.xowa.addons.apps.searchs.*; +package gplx.xowa.addons.wikis.searchs.bldrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.searchs.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wkrs.*; public class Srch_bldr_wkr implements Xob_page_wkr { private final Xowe_wiki wiki; diff --git a/400_xowa/src/gplx/xowa/addons/apps/searchs/bldrs/Srch_temp_tbl_wkr.java b/400_xowa/src/gplx/xowa/addons/wikis/searchs/bldrs/Srch_temp_tbl_wkr.java similarity index 92% rename from 400_xowa/src/gplx/xowa/addons/apps/searchs/bldrs/Srch_temp_tbl_wkr.java rename to 400_xowa/src/gplx/xowa/addons/wikis/searchs/bldrs/Srch_temp_tbl_wkr.java index 539898799..950872499 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/searchs/bldrs/Srch_temp_tbl_wkr.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/searchs/bldrs/Srch_temp_tbl_wkr.java @@ -15,11 +15,11 @@ 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.addons.apps.searchs.bldrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; import gplx.xowa.addons.apps.searchs.*; +package gplx.xowa.addons.wikis.searchs.bldrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.searchs.*; import gplx.dbs.*; import gplx.xowa.wikis.data.*; import gplx.xowa.wikis.data.tbls.*; -import gplx.xowa.addons.apps.searchs.dbs.*; import gplx.xowa.addons.apps.searchs.parsers.*; +import gplx.xowa.addons.wikis.searchs.dbs.*; import gplx.xowa.addons.wikis.searchs.parsers.*; class Srch_temp_tbl_wkr implements Srch_text_parser_wkr { - private Xowe_wiki wiki; private Xowd_db_mgr core_data_mgr; private Srch_search_addon search_addon; + private Xowe_wiki wiki; private Xow_db_mgr core_data_mgr; private Srch_search_addon search_addon; private Srch_text_parser title_parser; private Srch_temp_tbl search_temp_tbl; private int word_id, page_id; // needed for Parse_done public Srch_temp_tbl_wkr Init(boolean cmd, Xowe_wiki wiki) { @@ -56,7 +56,7 @@ class Srch_temp_tbl_wkr implements Srch_text_parser_wkr { // Srch_db_mgr.Optimize_unsafe_(word_conn, Bool_.N); // create search_link - Db_conn page_conn = wiki.Data__core_mgr().Tbl__page().conn; + Db_conn page_conn = wiki.Data__core_mgr().Tbl__page().Conn(); if (search_db_mgr.Tbl__link__len() == 1) { // single_db; just run sql; Xoa_app_.Usr_dlg().Plog_many("", "", "creating search_link"); @@ -85,7 +85,7 @@ class Srch_temp_tbl_wkr implements Srch_text_parser_wkr { page_conn.Meta_idx_create(Dbmeta_idx_itm.new_normal_by_name("page", "page_ns__page_id", "page_namespace", "page_id")); Srch_db_mgr.Optimize_unsafe_(word_conn, Bool_.Y); word_conn.Meta_tbl_remake(Dbmeta_tbl_itm.New("search_link_temp", Dbmeta_fld_itm.new_int("word_id"), Dbmeta_fld_itm.new_int("page_id"), Dbmeta_fld_itm.new_int("page_namespace"))); - attach_mgr.Main_conn_(word_conn).Init(new Db_attach_itm("page_db", page_conn)); + attach_mgr.Conn_main_(word_conn).Conn_others_(new Db_attach_itm("page_db", page_conn)); attach_mgr.Exec_sql_w_msg ( "filling search_link_temp (please wait)", String_.Concat_lines_nl_skip_last ( "INSERT INTO search_link_temp (word_id, page_id, page_namespace)" @@ -105,7 +105,7 @@ class Srch_temp_tbl_wkr implements Srch_text_parser_wkr { Xoa_app_.Usr_dlg().Plog_many("", "", "creating search_link_temp: ~{0}", i); Srch_link_tbl link_tbl = search_db_mgr.Tbl__link__ary()[i]; Srch_db_mgr.Optimize_unsafe_(link_tbl.conn, Bool_.Y); - attach_mgr.Main_conn_(link_tbl.conn).Init(new Db_attach_itm("word_db", word_conn)); + attach_mgr.Conn_main_(link_tbl.conn).Conn_others_(new Db_attach_itm("word_db", word_conn)); attach_mgr.Exec_sql_w_msg ( Bry_fmt.Make_str("filling search_link: ~{idx} of ~{len}", i, len), String_.Concat_lines_nl_skip_last ( "INSERT INTO search_link (word_id, page_id)" diff --git a/400_xowa/src/gplx/xowa/addons/apps/searchs/bldrs/cmds/Xobldr__link__link_score.java b/400_xowa/src/gplx/xowa/addons/wikis/searchs/bldrs/cmds/Xobldr__link__link_score.java similarity index 82% rename from 400_xowa/src/gplx/xowa/addons/apps/searchs/bldrs/cmds/Xobldr__link__link_score.java rename to 400_xowa/src/gplx/xowa/addons/wikis/searchs/bldrs/cmds/Xobldr__link__link_score.java index 96c8cbd19..f2ebf7bb5 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/searchs/bldrs/cmds/Xobldr__link__link_score.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/searchs/bldrs/cmds/Xobldr__link__link_score.java @@ -15,15 +15,18 @@ 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.addons.apps.searchs.bldrs.cmds; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; import gplx.xowa.addons.apps.searchs.*; import gplx.xowa.addons.apps.searchs.bldrs.*; +package gplx.xowa.addons.wikis.searchs.bldrs.cmds; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.searchs.*; import gplx.xowa.addons.wikis.searchs.bldrs.*; import gplx.dbs.*; import gplx.xowa.wikis.data.tbls.*; -import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wkrs.*; import gplx.xowa.addons.builds.utils_rankings.bldrs.*; -import gplx.xowa.addons.apps.searchs.dbs.*; +import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wkrs.*; import gplx.xowa.addons.bldrs.utils_rankings.bldrs.*; import gplx.xowa.addons.wikis.searchs.bldrs.cmds.adjustments.*; +import gplx.xowa.addons.wikis.searchs.dbs.*; public class Xobldr__link__link_score extends Xob_cmd__base { private int score_multiplier = 100000000; private boolean page_rank_enabled = false; private boolean delete_plink_db = false; - public Xobldr__link__link_score(Xob_bldr bldr, Xowe_wiki wiki) {super(bldr, wiki);} + private final Adjustment_cmd score_adjustment_mgr; + public Xobldr__link__link_score(Xob_bldr bldr, Xowe_wiki wiki) {super(bldr, wiki); + this.score_adjustment_mgr = new Adjustment_cmd(wiki); + } public Xobldr__link__link_score Page_rank_enabled_(boolean v) {this.page_rank_enabled = v; return this;} public Xobldr__link__link_score Delete_plink_db_(boolean v) {this.delete_plink_db = v; return this;} @Override public void Cmd_run() { @@ -32,18 +35,12 @@ public class Xobldr__link__link_score extends Xob_cmd__base { String page_rank_tbl = Xobldr__page__page_score.Pagerank__tbl_name; String log_module = "search.page.score"; Xoa_app_.Plog_none(log_module, "adding fields to page_rank_temp"); - plink_conn.Meta_fld_assert(page_rank_tbl, "page_len" , Dbmeta_fld_tid.Itm__int, 0); plink_conn.Meta_fld_assert(page_rank_tbl, "page_len_score" , Dbmeta_fld_tid.Itm__int, 0); plink_conn.Meta_fld_assert(page_rank_tbl, "page_rank_score" , Dbmeta_fld_tid.Itm__double, 0); plink_conn.Meta_fld_assert(page_rank_tbl, "page_score" , Dbmeta_fld_tid.Itm__int, 0); int link_score_max = Srch_search_addon.Score_max; // percentize page_len_score to 0 : 100,000,000; NOTE: 100,000,000 so that no individual score should have 2+ page; i.e.: score_range > page_count - new Db_attach_mgr(plink_conn, new Db_attach_itm("page_db", wiki.Data__core_mgr().Tbl__page().conn)) - .Exec_sql_w_msg("filling page_rank_temp.page_len", String_.Concat_lines_nl_skip_last - ( "UPDATE page_rank_temp" - , "SET page_len = (SELECT page_len FROM page p WHERE p.page_id = page_rank_temp.page_id)" - )); new Sqlite_percentile_cmd(bldr, wiki).Init_by_rel_url(Xob_db_file.Name__page_link, "temp_page_len", link_score_max, String_.Concat_lines_nl_skip_last ( "SELECT p.page_id, p.page_len" , "FROM page p" @@ -72,15 +69,6 @@ public class Xobldr__link__link_score extends Xob_cmd__base { , page_rank_tbl, Double_.To_str(page_rank_rng), score_multiplier_as_str) ); - // adjust for page_len where pages in lower 60% will get penalized; EX: page_rank = 100; page_len = 50,000,000 -> 100 * (50 M / 100 M) -> 50 - String page_len_cutoff = Dbmeta_fld_itm.To_double_str_by_int((int)(score_multiplier * .6)); - plink_conn.Exec_sql - ( "penalizing short pages" - , Bry_fmt.Make_str(String_.Concat_lines_nl_skip_last - ( "UPDATE page_rank_temp" - , "SET page_rank_score = (page_rank_score * CASE WHEN page_len_score < ~{page_len_cutoff} THEN (page_len_score / ~{score_multiplier}) ELSE 1 END)" - ), page_len_cutoff, score_multiplier_as_str)); - // percentize page_rank_score to 0 : 100,000 new Sqlite_percentile_cmd(bldr, wiki).Init_by_rel_url(Xob_db_file.Name__page_link, "temp_page_score", link_score_max, String_.Concat_lines_nl_skip_last ( "SELECT prt.page_id, prt.page_rank_score" @@ -93,6 +81,9 @@ public class Xobldr__link__link_score extends Xob_cmd__base { ( "UPDATE page_rank_temp" , "SET page_score = Cast((SELECT tmp.row_score FROM temp_page_score tmp WHERE tmp.row_key = page_rank_temp.page_id) AS int)" )); + + // adjust pages; NOTE: must happen after percentize b/c adjustment is based on percentized 0 : 100,000, not the raw page_rank (0.5 : 146.5) + score_adjustment_mgr.Exec(); } else { plink_conn.Exec_sql @@ -106,7 +97,7 @@ public class Xobldr__link__link_score extends Xob_cmd__base { // update page table Xowd_page_tbl page_tbl = wiki.Data__core_mgr().Tbl__page(); - Db_conn page_conn = page_tbl.conn; + Db_conn page_conn = page_tbl.Conn(); if (page_tbl.Fld_page_score() == Dbmeta_fld_itm.Key_null) { page_conn.Meta_fld_append(page_tbl.Tbl_name(), Dbmeta_fld_itm.new_int(Xowd_page_tbl.Fld__page_score__key).Default_(0)); page_tbl = wiki.Data__core_mgr().Db__core().Tbl__page__rebind(); @@ -120,14 +111,14 @@ public class Xobldr__link__link_score extends Xob_cmd__base { // update link tables Srch_db_mgr search_db_mgr = Srch_search_addon.Get(wiki).Db_mgr(); Srch_word_tbl word_tbl = search_db_mgr.Tbl__word(); - if (!page_tbl.conn.Eq(word_tbl.conn)) page_tbl.conn.Env_vacuum(); // don't vacuum if single-db + if (!page_tbl.Conn().Eq(word_tbl.conn)) page_tbl.Conn().Env_vacuum(); // don't vacuum if single-db // Srch_db_mgr.Optimize_unsafe_(word_tbl.conn, Bool_.Y); word_tbl.conn.Meta_tbl_remake(Dbmeta_tbl_itm.New("link_score_mnx", Dbmeta_fld_itm.new_int("word_id"), Dbmeta_fld_itm.new_int("mnx_val"))); int link_tbls_len = search_db_mgr.Tbl__link__len(); for (int i = 0; i < link_tbls_len; ++i) { Srch_link_tbl link_tbl = search_db_mgr.Tbl__link__get_at(i); // update search_link.link_score - link_tbl.conn.Meta_fld_assert(link_tbl.tbl_name, Srch_link_tbl.Fld_link_score, Dbmeta_fld_tid.Itm__int, 0); + link_tbl.conn.Meta_fld_assert(link_tbl.Tbl_name(), Srch_link_tbl.Fld_link_score, Dbmeta_fld_tid.Itm__int, 0); new Db_attach_mgr(link_tbl.conn , new Db_attach_itm("page_db", page_conn) ).Exec_sql_w_msg @@ -181,15 +172,21 @@ public class Xobldr__link__link_score extends Xob_cmd__base { , " SELECT mnx_val" , " FROM link_score_mnx lsm" , " WHERE lsm.word_id = search_word.word_id" + , " AND lsm.mnx_val " + (min ? "<" : ">") + " search_word." + fld_name , " ), " + fld_name + ")" ); } @Override public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk__page_rank_enabled_)) page_rank_enabled = m.ReadYn("v"); else if (ctx.Match(k, Invk__delete_plink_db_)) delete_plink_db = m.ReadYn("v"); - else return GfoInvkAble_.Rv_unhandled; + else if (ctx.Match(k, Invk__delete_plink_db_)) delete_plink_db = m.ReadYn("v"); + else if (ctx.Match(k, Invk__score_adjustment_mgr)) return score_adjustment_mgr; + else return Gfo_invk_.Rv_unhandled; return this; - } private static final String Invk__page_rank_enabled_ = "page_rank_enabled_", Invk__delete_plink_db_ = "delete_plink_db_"; + } + private static final String Invk__page_rank_enabled_ = "page_rank_enabled_", Invk__delete_plink_db_ = "delete_plink_db_" + , Invk__score_adjustment_mgr = "score_adjustment_mgr" + ; public static final String BLDR_CMD_KEY = "search.link__link_score"; @Override public String Cmd_key() {return BLDR_CMD_KEY;} diff --git a/400_xowa/src/gplx/xowa/addons/apps/searchs/bldrs/cmds/Xobldr__page__page_score.java b/400_xowa/src/gplx/xowa/addons/wikis/searchs/bldrs/cmds/Xobldr__page__page_score.java similarity index 84% rename from 400_xowa/src/gplx/xowa/addons/apps/searchs/bldrs/cmds/Xobldr__page__page_score.java rename to 400_xowa/src/gplx/xowa/addons/wikis/searchs/bldrs/cmds/Xobldr__page__page_score.java index aac5f31fc..a14f6bea6 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/searchs/bldrs/cmds/Xobldr__page__page_score.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/searchs/bldrs/cmds/Xobldr__page__page_score.java @@ -15,9 +15,9 @@ 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.addons.apps.searchs.bldrs.cmds; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; import gplx.xowa.addons.apps.searchs.*; import gplx.xowa.addons.apps.searchs.bldrs.*; +package gplx.xowa.addons.wikis.searchs.bldrs.cmds; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.searchs.*; import gplx.xowa.addons.wikis.searchs.bldrs.*; import gplx.dbs.*; import gplx.dbs.qrys.*; -import gplx.xowa.wikis.data.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.addons.builds.pagelinks.dbs.*; +import gplx.xowa.wikis.data.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.addons.bldrs.pagelinks.dbs.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wkrs.*; public class Xobldr__page__page_score extends Xob_cmd__base implements Xob_cmd { // create page_rank in page_db; drop and vaccuum later; avoid cross db for now private double damping_factor = .85; @@ -47,16 +47,21 @@ public class Xobldr__page__page_score extends Xob_cmd__base implements Xob_cmd { , Dbmeta_fld_itm.new_int (Pagerank__fld_link_count) , Dbmeta_fld_itm.new_int (Pagerank__fld_has_converged).Default_(0) , Dbmeta_fld_itm.new_double (Pagerank__fld_page_rank).Default_(1) + , Dbmeta_fld_itm.new_int ("page_namespace").Default_(Int_.Min_value) + , Dbmeta_fld_itm.new_byte ("page_is_redirect").Default_(0) + , Dbmeta_fld_itm.new_int ("page_len").Default_(0) )); new Db_attach_mgr(plink_conn, new Db_attach_itm("page_db", page_conn)) .Exec_sql_w_msg("generating list of pages", String_.Concat_lines_nl_skip_last - ( "INSERT INTO page_rank_temp (page_id, link_count)" - , "SELECT page_id" + ( "INSERT INTO page_rank_temp (page_id, link_count, page_namespace, page_is_redirect, page_len)" + , "SELECT p.page_id" , ", Coalesce(Count(pl.trg_id), {0}) AS link_count" + , ", p.page_namespace" + , ", p.page_is_redirect" + , ", p.page_len" , "FROM page p" // NOTE: JOIN needed to filter out [[User:]] pages which are in pagelinks.sql, but not in pages-articles.xml , " LEFT JOIN page_link pl ON p.page_id = pl.src_id" - // , "WHERE p.page_namespace = 0" , "GROUP BY p.page_id" ), page_count); } @@ -70,11 +75,14 @@ public class Xobldr__page__page_score extends Xob_cmd__base implements Xob_cmd { new Db_attach_mgr(plink_conn, new Db_attach_itm("page_db", page_conn)) .Exec_sql_w_msg(String_.Format("calculating page_rank; iteration={0} unconverged={1}", iteration_idx, converged_count) , String_.Concat_lines_nl_skip_last - ( "REPLACE INTO page_rank_temp (page_id, page_rank, link_count, has_converged)" + ( "REPLACE INTO page_rank_temp (page_id, page_rank, link_count, has_converged, page_namespace, page_is_redirect, page_len)" , "SELECT pr.page_id" , ", {1} + ({0} * Coalesce(w.page_rank, 0)) AS page_rank" , ", pr.link_count" , ", CASE WHEN Abs(pr.page_rank - ({1} + ({0} * Coalesce(w.page_rank, 0)))) < {2} THEN 1 ELSE 0 END AS has_converged" + , ", pr.page_namespace" + , ", pr.page_is_redirect" + , ", pr.page_len" , "FROM page_rank_temp pr" , " LEFT JOIN" , " (SELECT lnk.trg_id" @@ -102,7 +110,7 @@ public class Xobldr__page__page_score extends Xob_cmd__base implements Xob_cmd { if (ctx.Match(k, Invk__damping_factor_)) damping_factor = m.ReadDouble("v"); else if (ctx.Match(k, Invk__error_margin_)) error_margin = m.ReadDouble("v"); else if (ctx.Match(k, Invk__iteration_max_)) iteration_max = m.ReadInt("v"); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String Invk__damping_factor_ = "damping_factor_", Invk__error_margin_ = "error_margin_", Invk__iteration_max_ = "iteration_max_"; diff --git a/400_xowa/src/gplx/xowa/addons/apps/searchs/bldrs/cmds/Xobldr__word__link_count.java b/400_xowa/src/gplx/xowa/addons/wikis/searchs/bldrs/cmds/Xobldr__word__link_count.java similarity index 84% rename from 400_xowa/src/gplx/xowa/addons/apps/searchs/bldrs/cmds/Xobldr__word__link_count.java rename to 400_xowa/src/gplx/xowa/addons/wikis/searchs/bldrs/cmds/Xobldr__word__link_count.java index b4d8cd830..ffacdb6f5 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/searchs/bldrs/cmds/Xobldr__word__link_count.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/searchs/bldrs/cmds/Xobldr__word__link_count.java @@ -15,10 +15,10 @@ 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.addons.apps.searchs.bldrs.cmds; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; import gplx.xowa.addons.apps.searchs.*; import gplx.xowa.addons.apps.searchs.bldrs.*; +package gplx.xowa.addons.wikis.searchs.bldrs.cmds; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.searchs.*; import gplx.xowa.addons.wikis.searchs.bldrs.*; import gplx.dbs.*; import gplx.xowa.wikis.data.tbls.*; -import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wkrs.*; import gplx.xowa.addons.builds.utils_rankings.bldrs.*; -import gplx.xowa.addons.apps.searchs.dbs.*; +import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wkrs.*; import gplx.xowa.addons.bldrs.utils_rankings.bldrs.*; +import gplx.xowa.addons.wikis.searchs.dbs.*; public class Xobldr__word__link_count extends Xob_cmd__base implements Xob_cmd { private int score_multiplier = Srch_search_addon.Score_max; public Xobldr__word__link_count(Xob_bldr bldr, Xowe_wiki wiki) {super(bldr, wiki);} @@ -38,7 +38,7 @@ public class Xobldr__word__link_count extends Xob_cmd__base implements Xob_cmd { word_conn.Exec_sql("finalizing search_word.link_count_score", String_.Concat_lines_nl_skip_last ( "UPDATE search_word" - , "SET link_count_score = (SELECT tpl.row_score FROM search_word__link_count tpl WHERE tpl.row_key = search_word.word_id)" + , "SET link_count_score = Cast((SELECT tpl.row_score FROM search_word__link_count tpl WHERE tpl.row_key = search_word.word_id) AS int)" )); word_conn.Meta_tbl_delete(percentile_tbl); word_conn.Meta_idx_create(Dbmeta_idx_itm.new_normal_by_tbl(word_tbl.tbl_name, "link_count_score__word_text", word_tbl.fld_link_count_score, word_tbl.fld_text)); diff --git a/400_xowa/src/gplx/xowa/addons/wikis/searchs/bldrs/cmds/adjustments/Adjustment_cmd.java b/400_xowa/src/gplx/xowa/addons/wikis/searchs/bldrs/cmds/adjustments/Adjustment_cmd.java new file mode 100644 index 000000000..be0ebfc9c --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/wikis/searchs/bldrs/cmds/adjustments/Adjustment_cmd.java @@ -0,0 +1,165 @@ +/* +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.addons.wikis.searchs.bldrs.cmds.adjustments; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.searchs.*; import gplx.xowa.addons.wikis.searchs.bldrs.*; import gplx.xowa.addons.wikis.searchs.bldrs.cmds.*; +import gplx.dbs.*; import gplx.xowa.bldrs.*; +import gplx.xowa.wikis.nss.*; +public class Adjustment_cmd implements Gfo_invk { + private final Xow_wiki wiki; + private final Page_matcher_mgr matcher_mgr; + private boolean enabled = true; + private double median_factor = .001d; + public Adjustment_cmd(Xow_wiki wiki) { + this.wiki = wiki; + this.matcher_mgr = new Page_matcher_mgr(wiki); + } + public void Exec() { + // init + if (!enabled) return; + wiki.Init_by_wiki(); + Xob_db_file pl_db = Xob_db_file.New__page_link(wiki); + Db_conn pl_conn = pl_db.Conn(); + + // add fields to page_rank_tbl + String page_rank_tbl = Xobldr__page__page_score.Pagerank__tbl_name; + pl_conn.Meta_fld_assert(page_rank_tbl, "score_old" , Dbmeta_fld_tid.Itm__int, 0); + pl_conn.Meta_fld_assert(page_rank_tbl, "len_avg" , Dbmeta_fld_tid.Itm__int, 0); + + // create penalty summary tbl + pl_conn.Meta_tbl_remake(Dbmeta_tbl_itm.New("penalty_summary" + , Dbmeta_fld_itm.new_int("page_ns") + , Dbmeta_fld_itm.new_int("score_bgn") + , Dbmeta_fld_itm.new_int("score_end") + , Dbmeta_fld_itm.new_int("len_avg") + , Dbmeta_fld_itm.new_int("page_count") + )); + Db_stmt summary_stmt = pl_conn.Stmt_insert("penalty_summary", "page_ns", "score_bgn", "score_end", "len_avg", "page_count"); + Db_stmt detail_stmt = pl_conn.Stmt_update(page_rank_tbl, String_.Ary("page_id"), "page_score", "score_old", "len_avg"); + + // iterate namespaces + pl_conn.Meta_idx_create("page_rank_temp", "adjustment", "page_namespace", "page_score"); + Db_stmt page_select = pl_conn.Stmt_sql("SELECT pr.page_id, pr.page_is_redirect, pr.page_len, pr.page_score FROM page_rank_temp pr WHERE pr.page_namespace = ? ORDER BY pr.page_score DESC");// ANSI.Y + int ns_len = wiki.Ns_mgr().Ords_len(); + for (int i = 0; i < ns_len; ++i) { + Xow_ns ns = wiki.Ns_mgr().Ords_get_at(i); + if (ns.Count() > 0) { + Page_matcher_wkr matcher_wkr = matcher_mgr.Get_by(ns.Id()).Load_all(); + pl_conn.Txn_bgn("pl_penalty"); + Calc_for_ns(wiki, matcher_wkr, page_select, summary_stmt, detail_stmt, ns); + pl_conn.Txn_end(); + } + } + + // cleanup + detail_stmt.Rls(); + summary_stmt.Rls(); + page_select.Rls(); + } + private void Calc_for_ns(Xow_wiki wiki, Page_matcher_wkr wkr, Db_stmt page_select, Db_stmt summary_stmt, Db_stmt detail_stmt, Xow_ns ns) { + // calc sample + int sample_len = (int)(ns.Count() * .0001); // 12,000,000 * .0001 -> 1200 + if (sample_len < 100) sample_len = 100; // if < 100, default to 100; else small sample sizes like 5 will create strange medians + Page_stub[] page_ary = new Page_stub[sample_len]; + + // loop + Gfo_log_.Instance.Prog("loading pages for ns", "ns_id", ns.Id()); + Db_rdr rdr = page_select.Clear().Crt_int("page_namespace", ns.Id()).Exec_select__rls_manual(); // ANSI.Y + int page_count = 0; + int score_end = -1, score_cur = -1; + int range_count = 0; + while (rdr.Move_next()) { + int page_id = rdr.Read_int("page_id"); + boolean page_is_redirect = rdr.Read_bool_by_byte("page_is_redirect"); + int page_len = rdr.Read_int("page_len"); + score_cur = rdr.Read_int("page_score"); + if (score_end == -1) score_end = score_cur; + + page_ary[page_count] = new Page_stub(page_id, page_is_redirect, page_len, score_cur); + ++page_count; + if (page_count == sample_len) { + if ((++range_count % 100) == 0) Gfo_log_.Instance.Prog("updating range", "ns", ns.Id(), "score_cur", score_cur, "score_end", score_end); + Save_sample(page_ary, wkr, wiki.Domain_bry(), ns.Id(), score_cur, score_end, summary_stmt, detail_stmt); + + // reset + page_count = 0; + score_end = -1; + } + } + page_ary = (Page_stub[])Array_.Resize(page_ary, page_count); + Save_sample(page_ary, wkr, wiki.Domain_bry(), ns.Id(), score_cur, score_end, summary_stmt, detail_stmt); + rdr.Rls(); + } + private void Save_sample(Page_stub[] page_ary, Page_matcher_wkr wkr, byte[] domain_bry, int ns_id, int score_cur, int score_end, Db_stmt summary_stmt, Db_stmt detail_stmt) { + // calc median + Array_.Sort(page_ary); + int ary_len = page_ary.length; if (ary_len == 0) return; // occurs when ns has exact multiple of .01% pages; EX: 10,000 pages (but not 10,001, 10,002, etc..) + int median = Calc_median(page_ary); + + // insert + for (int i = 0; i < ary_len; ++i) { + Page_stub page = page_ary[i]; + int score_old = page.Score; + int score_new = score_old; + Page_matcher_itm itm = wkr.Get_by_or_null(page.Id); + if (itm != null) { + score_new = itm.Calc(score_old); + } + // if len < median, penalize by .01 of difference; + /* + EX: score=1000; page_len=80; median_len=100 + .8 <- 80 / 100 + .2 <- 1 - .8 + .002 <- .2 * .01 + 2 <- 1000 * .002 + 998 <- 1000 - 2 + */ + else if (page.Len < median) + score_new = (int)((1 - (1 - ((double)page.Len / median)) * median_factor) * score_old); + + detail_stmt.Clear() + .Val_int("page_score" , score_new) + .Val_int("score_old" , score_old) + .Val_int("len_avg" , median) + .Crt_int("page_id" , page.Id) + .Exec_update(); + } + summary_stmt.Clear().Val_int("page_ns", ns_id).Val_int("score_bgn", score_cur).Val_int("score_end", score_end) + .Val_int("len_avg", median).Val_int("page_count", ary_len) + .Exec_insert(); + } + public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { + if (ctx.Match(k, Invk__enabled_)) enabled = m.ReadBool("v"); + else if (ctx.Match(k, Invk__median_factor_)) median_factor = m.ReadDouble("v"); + else if (ctx.Match(k, Invk__match_mgr)) return matcher_mgr; + else return Gfo_invk_.Rv_unhandled; + return this; + } private static final String Invk__match_mgr = "match_mgr", Invk__enabled_ = "enabled_", Invk__median_factor_ = "median_factor_"; + + private static int Calc_median(Page_stub[] ary) { + int len = ary.length; + int redirect_end = 0; + for (int i = 0; i < len; ++i) { + Page_stub itm = ary[i]; + if (!itm.Is_redirect) { + redirect_end = i; + break; + } + } + int median_idx = (len - redirect_end) / 2; + return ary[median_idx].Len; + } +} diff --git a/400_xowa/src/gplx/xowa/addons/wikis/searchs/bldrs/cmds/adjustments/Page_matcher_itm.java b/400_xowa/src/gplx/xowa/addons/wikis/searchs/bldrs/cmds/adjustments/Page_matcher_itm.java new file mode 100644 index 000000000..1dc8db8e0 --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/wikis/searchs/bldrs/cmds/adjustments/Page_matcher_itm.java @@ -0,0 +1,58 @@ +/* +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.addons.wikis.searchs.bldrs.cmds.adjustments; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.searchs.*; import gplx.xowa.addons.wikis.searchs.bldrs.*; import gplx.xowa.addons.wikis.searchs.bldrs.cmds.*; +import gplx.core.primitives.*; +class Page_matcher_itm { + public Page_matcher_itm(byte match_type, byte calc_type, double val, String page_filter) { + this.Match_type = match_type; + this.Calc_type = calc_type; + this.Val = val; + this.Page_filter = page_filter; + } + public final byte Match_type; + public final byte Calc_type; + public final double Val; + public final String Page_filter; + public Int_obj_ref[] Page_ids; + public int Calc(int score_old) { + switch (this.Calc_type) { + case Page_matcher__calc_type.Type__set : return (int)Val; + case Page_matcher__calc_type.Type__mult : return (int)(score_old * Val); + case Page_matcher__calc_type.Type__add : return score_old + (int)Val; + default: throw Err_.new_unhandled_default(this.Calc_type); + } + } +} +class Page_matcher__match_type { + public static final byte Type__bgn = 0, Type__end = 1, Type__all = 2, Type__any = 3; + public static byte To_tid(String s) { + if (String_.Eq(s, "bgn")) return Type__bgn; + else if (String_.Eq(s, "end")) return Type__end; + else if (String_.Eq(s, "all")) return Type__all; + else throw Err_.new_unhandled_default(s); + } +} +class Page_matcher__calc_type { + public static final byte Type__set = 0, Type__mult = 1, Type__add = 2; + public static byte To_tid(String s) { + if (String_.Eq(s, "set")) return Type__set; + else if (String_.Eq(s, "mult")) return Type__mult; + else if (String_.Eq(s, "add")) return Type__add; + else throw Err_.new_unhandled_default(s); + } +} diff --git a/400_xowa/src/gplx/xowa/addons/wikis/searchs/bldrs/cmds/adjustments/Page_matcher_mgr.java b/400_xowa/src/gplx/xowa/addons/wikis/searchs/bldrs/cmds/adjustments/Page_matcher_mgr.java new file mode 100644 index 000000000..cc989d450 --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/wikis/searchs/bldrs/cmds/adjustments/Page_matcher_mgr.java @@ -0,0 +1,37 @@ +/* +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.addons.wikis.searchs.bldrs.cmds.adjustments; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.searchs.*; import gplx.xowa.addons.wikis.searchs.bldrs.*; import gplx.xowa.addons.wikis.searchs.bldrs.cmds.*; +import gplx.core.lists.hashs.*; import gplx.core.primitives.*; +import gplx.dbs.*; import gplx.xowa.wikis.data.tbls.*; +class Page_matcher_mgr implements Gfo_invk { + private final Xow_wiki wiki; + public Page_matcher_mgr(Xow_wiki wiki) {this.wiki = wiki;} + private final Hash_adp__int hash = new Hash_adp__int(); + public Page_matcher_wkr Get_by(int ns_id) { + Page_matcher_wkr rv = (Page_matcher_wkr)hash.Get_by_or_null(ns_id); + if (rv == null) { + rv = new Page_matcher_wkr(wiki, ns_id); + hash.Add(ns_id, rv); + } + return rv; + } + public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { + if (ctx.Match(k, Invk__get)) return Get_by(m.ReadInt("v")); + else return Gfo_invk_.Rv_unhandled; + } private static final String Invk__get = "get"; +} diff --git a/400_xowa/src/gplx/xowa/addons/wikis/searchs/bldrs/cmds/adjustments/Page_matcher_wkr.java b/400_xowa/src/gplx/xowa/addons/wikis/searchs/bldrs/cmds/adjustments/Page_matcher_wkr.java new file mode 100644 index 000000000..b1972905a --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/wikis/searchs/bldrs/cmds/adjustments/Page_matcher_wkr.java @@ -0,0 +1,73 @@ +/* +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.addons.wikis.searchs.bldrs.cmds.adjustments; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.searchs.*; import gplx.xowa.addons.wikis.searchs.bldrs.*; import gplx.xowa.addons.wikis.searchs.bldrs.cmds.*; +import gplx.core.lists.hashs.*; import gplx.core.primitives.*; +import gplx.dbs.*; import gplx.xowa.wikis.data.tbls.*; +class Page_matcher_wkr implements Gfo_invk {// NOTE: tries would use less memory, but would be slower, especially for Has*() + private final Xow_wiki wiki; + private final List_adp rule_list = List_adp_.New(); + private final Hash_adp__int page_hash = new Hash_adp__int(); + public Page_matcher_wkr(Xow_wiki wiki, int ns_id) { + this.wiki = wiki; + this.ns_id = ns_id; + } + public int Ns_id() {return ns_id;} private final int ns_id; + public Page_matcher_itm Get_by_or_null(int page_id) {return (Page_matcher_itm)page_hash.Get_by_or_null(page_id);} + public Page_matcher_wkr Load_all() { + int len = rule_list.Len(); + for (int i = 0; i < len; ++i) { + Load((Page_matcher_itm)rule_list.Get_at(i)); + } + return this; + } + private void Load(Page_matcher_itm itm) { + Gfo_log_.Instance.Prog("loading filter", "filter", itm.Page_filter); + List_adp page_ids = List_adp_.New(); + String sql = "", filter_arg = itm.Page_filter; + switch (itm.Match_type) { + case Page_matcher__match_type.Type__bgn: sql = "SELECT page_id FROM page WHERE page_namespace = ? AND page_title LIKE ?"; filter_arg = filter_arg + "%"; break; // ANSI.Y + case Page_matcher__match_type.Type__end: sql = "SELECT page_id FROM page WHERE page_namespace = ? AND page_title LIKE ?"; filter_arg = "%" + filter_arg; break; // ANSI.Y + case Page_matcher__match_type.Type__all: sql = "SELECT page_id FROM page WHERE page_namespace = ? AND page_title = ?"; break; // ANSI.Y + } + Db_stmt stmt = wiki.Data__core_mgr().Db__core().Tbl__page().Conn().Stmt_sql(sql); + Db_rdr rdr = stmt.Clear().Crt_int("page_namespace", ns_id).Crt_str("page_title", filter_arg).Exec_select__rls_manual(); + try { + while (rdr.Move_next()) { + Int_obj_ref page_id = Int_obj_ref.New(rdr.Read_int("page_id")); + page_ids.Add(page_id); + page_hash.Add_if_dupe_use_nth(page_id, itm); + } + } finally {rdr.Rls();} + itm.Page_ids = (Int_obj_ref[])page_ids.To_ary_and_clear(Int_obj_ref.class); + stmt.Rls(); + } + public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { + if (ctx.Match(k, Invk__add)) Add_by_msg(m); + else return Gfo_invk_.Rv_unhandled; + return this; + } private static final String Invk__add = "add"; + private void Add_by_msg(GfoMsg m) { + byte match_type = Page_matcher__match_type.To_tid(m.Args_getAt(0).Val_to_str_or_empty()); + byte calc_type = Page_matcher__calc_type.To_tid(m.Args_getAt(1).Val_to_str_or_empty()); + double val = Double_.parse(m.Args_getAt(2).Val_to_str_or_empty()); + int args_len = m.Args_count(); + for (int i = 3; i < args_len; ++i) { + rule_list.Add(new Page_matcher_itm(match_type, calc_type, val, m.Args_getAt(i).Val_to_str_or_empty())); + } + } +} diff --git a/400_xowa/src/gplx/xowa/addons/wikis/searchs/bldrs/cmds/adjustments/Page_stub.java b/400_xowa/src/gplx/xowa/addons/wikis/searchs/bldrs/cmds/adjustments/Page_stub.java new file mode 100644 index 000000000..11bbc82bf --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/wikis/searchs/bldrs/cmds/adjustments/Page_stub.java @@ -0,0 +1,40 @@ +/* +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.addons.wikis.searchs.bldrs.cmds.adjustments; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.searchs.*; import gplx.xowa.addons.wikis.searchs.bldrs.*; import gplx.xowa.addons.wikis.searchs.bldrs.cmds.*; +class Page_stub implements CompareAble { + public Page_stub(int id, boolean is_redirect, int len, int score) { + this.Id = id; + this.Is_redirect = is_redirect; + this.Len = len; + this.Score = score; + } + public final int Id; + public final boolean Is_redirect; + public final int Len; + public final int Score; + + public int compareTo(Object obj) { + Page_stub comp = (Page_stub)obj; + // sort redirects and small pages to bottom + int is_redirect_compare = -Bool_.Compare(Is_redirect, comp.Is_redirect); + if (is_redirect_compare == CompareAble_.Same) + return Int_.Compare(Len, comp.Len); + else + return is_redirect_compare; + } +} diff --git a/400_xowa/src/gplx/xowa/addons/apps/searchs/dbs/Srch_db_cfg.java b/400_xowa/src/gplx/xowa/addons/wikis/searchs/dbs/Srch_db_cfg.java similarity index 86% rename from 400_xowa/src/gplx/xowa/addons/apps/searchs/dbs/Srch_db_cfg.java rename to 400_xowa/src/gplx/xowa/addons/wikis/searchs/dbs/Srch_db_cfg.java index c54f0f00d..68b09d4c2 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/searchs/dbs/Srch_db_cfg.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/searchs/dbs/Srch_db_cfg.java @@ -15,7 +15,7 @@ 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.addons.apps.searchs.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; import gplx.xowa.addons.apps.searchs.*; +package gplx.xowa.addons.wikis.searchs.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.searchs.*; public class Srch_db_cfg { public Srch_db_cfg(int version_id, long page_count, int word_count, int link_count_score_max, int link_count_score_cutoff, int link_score_max) { this.version_id = version_id; @@ -26,7 +26,7 @@ public class Srch_db_cfg { this.link_score_max = link_score_max; } public int Version_id() {return version_id;} private int version_id; - public boolean Version_id__needs_upgrade() {return version_id < Srch_db_upgrade.Version__link_score;} + public boolean Version_id__needs_upgrade() {return version_id < Srch_db_upgrade.Version__link_score;} public long Page_count() {return page_count;} private long page_count; public int Word_count() {return word_count;} private int word_count; public int Link_count_score_max() {return link_count_score_max;} private int link_count_score_max; diff --git a/400_xowa/src/gplx/xowa/addons/apps/searchs/dbs/Srch_db_cfg_.java b/400_xowa/src/gplx/xowa/addons/wikis/searchs/dbs/Srch_db_cfg_.java similarity index 93% rename from 400_xowa/src/gplx/xowa/addons/apps/searchs/dbs/Srch_db_cfg_.java rename to 400_xowa/src/gplx/xowa/addons/wikis/searchs/dbs/Srch_db_cfg_.java index c5de6458b..a4b36cf8e 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/searchs/dbs/Srch_db_cfg_.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/searchs/dbs/Srch_db_cfg_.java @@ -15,7 +15,7 @@ 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.addons.apps.searchs.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; import gplx.xowa.addons.apps.searchs.*; +package gplx.xowa.addons.wikis.searchs.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.searchs.*; import gplx.dbs.cfgs.*; public class Srch_db_cfg_ { public static Srch_db_cfg New(Db_cfg_tbl cfg_tbl, long page_count, int version_id) { // NOTE: dflt values are for old search dbs diff --git a/400_xowa/src/gplx/xowa/addons/apps/searchs/dbs/Srch_db_mgr.java b/400_xowa/src/gplx/xowa/addons/wikis/searchs/dbs/Srch_db_mgr.java similarity index 83% rename from 400_xowa/src/gplx/xowa/addons/apps/searchs/dbs/Srch_db_mgr.java rename to 400_xowa/src/gplx/xowa/addons/wikis/searchs/dbs/Srch_db_mgr.java index 942b3ddc0..eca806638 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/searchs/dbs/Srch_db_mgr.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/searchs/dbs/Srch_db_mgr.java @@ -15,7 +15,7 @@ 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.addons.apps.searchs.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; import gplx.xowa.addons.apps.searchs.*; +package gplx.xowa.addons.wikis.searchs.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.searchs.*; import gplx.dbs.cfgs.*; import gplx.xowa.wikis.data.*; public class Srch_db_mgr { @@ -30,11 +30,12 @@ public class Srch_db_mgr { public Srch_word_tbl Tbl__word() {return tbl__word;} private Srch_word_tbl tbl__word; public int Tbl__link__len() {return tbl__link__ary.length;} public Srch_link_tbl Tbl__link__get_at(int i) {return tbl__link__ary[i];} + public int Tbl__link__get_idx(int ns) {return ns == gplx.xowa.wikis.nss.Xow_ns_.Tid__main ? 0 : tbl__link__ary.length - 1;} public Srch_link_tbl[] Tbl__link__ary() {return tbl__link__ary;} private Srch_link_tbl[] tbl__link__ary = Srch_link_tbl.Ary_empty; public Srch_db_mgr Init() { - Xowd_db_mgr db_mgr = wiki.Data__core_mgr(); + Xow_db_mgr db_mgr = wiki.Data__core_mgr(); Xowd_core_db_props db_props = db_mgr.Db__core().Db_props(); - Xowd_db_file word_db = null; + Xow_db_file word_db = null; if ( db_props.Schema() == 1 || db_props.Layout_text().Tid_is_all_or_few()) { // single_db; core_db has search_word and search_link @@ -57,7 +58,7 @@ public class Srch_db_mgr { int dbs_len = hash.Count(); tbl__link__ary = new Srch_link_tbl[dbs_len]; for (int i = 0; i < dbs_len; ++i) { - Xowd_db_file db_file = (Xowd_db_file)hash.Get_at(i); + Xow_db_file db_file = (Xow_db_file)hash.Get_at(i); Tbl__link__ary__set(tbl__link__ary, i, db_file); } } @@ -65,7 +66,7 @@ public class Srch_db_mgr { cfg = Srch_db_cfg_.New(tbl__cfg, wiki.Stats().Num_pages(), Srch_db_cfg_.Select__version_id(tbl__cfg, tbl__word)); return this; } - public void Delete_all(Xowd_db_mgr core_data_mgr) { + public void Delete_all(Xow_db_mgr core_data_mgr) { tbl__word.conn.Meta_tbl_delete(Srch_link_reg_tbl.Tbl_name); Xowd_core_db_props db_props = wiki.Data__core_mgr().Db__core().Db_props(); if ( db_props.Schema() == 1 @@ -73,20 +74,20 @@ public class Srch_db_mgr { // single_db; just drop tables tbl__word.conn.Meta_tbl_delete(tbl__word.tbl_name); Srch_link_tbl link_tbl = tbl__link__ary[0]; - link_tbl.conn.Meta_tbl_delete(link_tbl.tbl_name); + link_tbl.conn.Meta_tbl_delete(link_tbl.Tbl_name()); } else { // many_db; drop databases - core_data_mgr.Dbs__delete_by_tid(Xowd_db_file_.Tid_search_core); - core_data_mgr.Dbs__delete_by_tid(Xowd_db_file_.Tid_search_link); + core_data_mgr.Dbs__delete_by_tid(Xow_db_file_.Tid__search_core); + core_data_mgr.Dbs__delete_by_tid(Xow_db_file_.Tid__search_link); } } public void Create_all() { - Xowd_db_mgr db_mgr = wiki.Data__core_mgr(); + Xow_db_mgr db_mgr = wiki.Data__core_mgr(); Xowd_core_db_props db_props = wiki.Data__core_mgr().Db__core().Db_props(); if ( db_props.Schema() == 1 || db_props.Layout_text().Tid_is_all_or_few()) { // single_db; put both in core_db - Xowd_db_file search_db = db_mgr.Db__core(); + Xow_db_file search_db = db_mgr.Db__core(); tbl__word = new Srch_word_tbl(search_db.Conn()); tbl__word.Create_tbl(); Srch_link_tbl tbl__link = new Srch_link_tbl(search_db.Conn()); tbl__link.Create_tbl(); tbl__link__ary = new Srch_link_tbl[] {tbl__link}; @@ -94,7 +95,7 @@ public class Srch_db_mgr { Tbl__link__ary__new(tbl__lreg, tbl__link__ary, db_mgr, 0, Bool_.N, search_db); } else { // many_db: put in 3 db; - Xowd_db_file word_db = db_mgr.Dbs__make_by_tid(Srch_db_mgr_.Dbtid__search_core); + Xow_db_file word_db = db_mgr.Dbs__make_by_tid(Srch_db_mgr_.Dbtid__search_core); tbl__word = new Srch_word_tbl(word_db.Conn()); tbl__word.Create_tbl(); tbl__link__ary = new Srch_link_tbl[2]; Srch_link_reg_tbl tbl__lreg = new Srch_link_reg_tbl(word_db.Conn()); tbl__lreg.Create_tbl(); @@ -102,12 +103,12 @@ public class Srch_db_mgr { Tbl__link__ary__new(tbl__lreg, tbl__link__ary, db_mgr, 1, Bool_.N, null); } } - private static Srch_link_tbl Tbl__link__ary__set(Srch_link_tbl[] ary, int idx, Xowd_db_file db) { + private static Srch_link_tbl Tbl__link__ary__set(Srch_link_tbl[] ary, int idx, Xow_db_file db) { Srch_link_tbl tbl = new Srch_link_tbl(db.Conn()); ary[idx] = tbl; return tbl; } - private static void Tbl__link__ary__new(Srch_link_reg_tbl lreg_tbl, Srch_link_tbl[] ary, Xowd_db_mgr db_mgr, int idx, boolean ns_ids_is_main, Xowd_db_file db) { + private static void Tbl__link__ary__new(Srch_link_reg_tbl lreg_tbl, Srch_link_tbl[] ary, Xow_db_mgr db_mgr, int idx, boolean ns_ids_is_main, Xow_db_file db) { if (db == null) { String ns_ids = (ns_ids_is_main ? "000" : "999"); String suffix = "-xtn.search.link-title-ns." + ns_ids + "-db.001.xowa"; // -xtn.search.link-title-ns.main-db.001.xowa diff --git a/400_xowa/src/gplx/xowa/addons/apps/searchs/dbs/Srch_db_mgr_.java b/400_xowa/src/gplx/xowa/addons/wikis/searchs/dbs/Srch_db_mgr_.java similarity index 79% rename from 400_xowa/src/gplx/xowa/addons/apps/searchs/dbs/Srch_db_mgr_.java rename to 400_xowa/src/gplx/xowa/addons/wikis/searchs/dbs/Srch_db_mgr_.java index aa9bf679b..263648493 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/searchs/dbs/Srch_db_mgr_.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/searchs/dbs/Srch_db_mgr_.java @@ -15,8 +15,8 @@ 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.addons.apps.searchs.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; import gplx.xowa.addons.apps.searchs.*; +package gplx.xowa.addons.wikis.searchs.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.searchs.*; import gplx.xowa.wikis.data.*; public class Srch_db_mgr_ { - public static final byte Dbtid__search_core = 4, Dbtid__search_link = 16; // SYNC:Xowd_db_file_ + public static final byte Dbtid__search_core = 4, Dbtid__search_link = 16; // SYNC:Xow_db_file_ } diff --git a/400_xowa/src/gplx/xowa/addons/apps/searchs/dbs/Srch_db_upgrade.java b/400_xowa/src/gplx/xowa/addons/wikis/searchs/dbs/Srch_db_upgrade.java similarity index 84% rename from 400_xowa/src/gplx/xowa/addons/apps/searchs/dbs/Srch_db_upgrade.java rename to 400_xowa/src/gplx/xowa/addons/wikis/searchs/dbs/Srch_db_upgrade.java index 12ecab843..bdc8930d2 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/searchs/dbs/Srch_db_upgrade.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/searchs/dbs/Srch_db_upgrade.java @@ -15,7 +15,7 @@ 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.addons.apps.searchs.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; import gplx.xowa.addons.apps.searchs.*; +package gplx.xowa.addons.wikis.searchs.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.searchs.*; import gplx.dbs.*; import gplx.dbs.cfgs.*; public class Srch_db_upgrade { private final Xow_wiki wiki; @@ -41,10 +41,10 @@ public class Srch_db_upgrade { )); if (!ok) return; Xowe_wiki wikie = (Xowe_wiki)wiki; - gplx.xowa.addons.apps.searchs.bldrs.Srch_bldr_mgr_.Setup(wikie); + gplx.xowa.addons.wikis.searchs.bldrs.Srch_bldr_mgr_.Setup(wikie); gplx.xowa.bldrs.Xob_bldr bldr = app.Bldr(); bldr.Cmd_mgr().Add(new gplx.xowa.bldrs.cmds.utils.Xob_alert_cmd(bldr, wikie).Msg_("search upgrade finished")); - gplx.core.threads.Thread_adp_.invk_("search_upgrade", app.Bldr(), gplx.xowa.bldrs.Xob_bldr.Invk_run).Start(); + gplx.core.threads.Thread_adp_.Start_by_key("search_upgrade", app.Bldr(), gplx.xowa.bldrs.Xob_bldr.Invk_run); } public static final int Version__link_score_alpha = 0 // in 2016-02 android alpha diff --git a/400_xowa/src/gplx/xowa/addons/apps/searchs/dbs/Srch_link_reg_tbl.java b/400_xowa/src/gplx/xowa/addons/wikis/searchs/dbs/Srch_link_reg_tbl.java similarity index 90% rename from 400_xowa/src/gplx/xowa/addons/apps/searchs/dbs/Srch_link_reg_tbl.java rename to 400_xowa/src/gplx/xowa/addons/wikis/searchs/dbs/Srch_link_reg_tbl.java index 26659c287..f5d19e8d3 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/searchs/dbs/Srch_link_reg_tbl.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/searchs/dbs/Srch_link_reg_tbl.java @@ -15,10 +15,10 @@ 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.addons.apps.searchs.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; import gplx.xowa.addons.apps.searchs.*; +package gplx.xowa.addons.wikis.searchs.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.searchs.*; import gplx.dbs.*; public class Srch_link_reg_tbl implements Rls_able { - private final String tbl_name; public final Dbmeta_fld_list flds = Dbmeta_fld_list.new_(); + private final String tbl_name; public final Dbmeta_fld_list flds = new Dbmeta_fld_list(); private final String fld_id, fld_db_id, fld_db_type, fld_ns_ids, fld_sub_id, fld_score_min, fld_score_max; private final Db_conn conn; public Srch_link_reg_tbl(Db_conn conn) { diff --git a/400_xowa/src/gplx/xowa/addons/wikis/randoms/dbs/Rndm_core_row.java b/400_xowa/src/gplx/xowa/addons/wikis/searchs/dbs/Srch_link_row.java similarity index 58% rename from 400_xowa/src/gplx/xowa/addons/wikis/randoms/dbs/Rndm_core_row.java rename to 400_xowa/src/gplx/xowa/addons/wikis/searchs/dbs/Srch_link_row.java index 8316ee972..ee3ebcea5 100644 --- a/400_xowa/src/gplx/xowa/addons/wikis/randoms/dbs/Rndm_core_row.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/searchs/dbs/Srch_link_row.java @@ -15,11 +15,18 @@ 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.addons.wikis.randoms.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.randoms.*; -public class Rndm_core_row { - public void Load(int uid, String where_sql, int total, int interval) {this.uid = uid; this.where_sql = where_sql; this.total = total; this.interval = interval;} - public int uid; - public String where_sql; - public int total; - public int interval; +package gplx.xowa.addons.wikis.searchs.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.searchs.*; +public class Srch_link_row { + public Srch_link_row(int word_id, int page_id, int link_score) { + this.Word_id = word_id; + this.Page_id = page_id; + this.Link_score = link_score; + } + public final int Word_id; + public final int Page_id; + public final int Link_score; + public int Trg_db_id; + + public int Db_row_size() {return Db_row_size_fixed;} + private static final int Db_row_size_fixed = (3 * 4); // 5 ints } diff --git a/400_xowa/src/gplx/xowa/addons/apps/searchs/dbs/Srch_link_tbl.java b/400_xowa/src/gplx/xowa/addons/wikis/searchs/dbs/Srch_link_tbl.java similarity index 62% rename from 400_xowa/src/gplx/xowa/addons/apps/searchs/dbs/Srch_link_tbl.java rename to 400_xowa/src/gplx/xowa/addons/wikis/searchs/dbs/Srch_link_tbl.java index cd726403d..01a6a73fa 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/searchs/dbs/Srch_link_tbl.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/searchs/dbs/Srch_link_tbl.java @@ -15,11 +15,9 @@ 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.addons.apps.searchs.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; import gplx.xowa.addons.apps.searchs.*; +package gplx.xowa.addons.wikis.searchs.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.searchs.*; import gplx.dbs.*; public class Srch_link_tbl { - public final String tbl_name; - public final Dbmeta_fld_list flds = Dbmeta_fld_list.new_(); public final String fld_word_id, fld_page_id, fld_link_score; public final Db_conn conn; public Srch_link_tbl(Db_conn conn) { @@ -29,10 +27,20 @@ public class Srch_link_tbl { fld_page_id = flds.Add_int("page_id"); fld_link_score = flds.Add_int_dflt(Fld_link_score, 0); } + public String Tbl_name() {return tbl_name;} private final String tbl_name; + public Dbmeta_fld_list Flds() {return flds;} private final Dbmeta_fld_list flds = new Dbmeta_fld_list(); + public int Id; public void Create_tbl() {conn.Meta_tbl_create(Dbmeta_tbl_itm.New(tbl_name, flds));} - public void Create_idx__page_id() {} // TODO: conn.Meta_idx_create(Dbmeta_idx_itm.new_normal_by_tbl(tbl_name, "page_id", fld_page_id));} + public void Create_idx__page_id() {} // TODO_OLD: conn.Meta_idx_create(Dbmeta_idx_itm.new_normal_by_tbl(tbl_name, "page_id", fld_page_id));} public void Create_idx__link_score() {conn.Meta_idx_create(Dbmeta_idx_itm.new_normal_by_tbl(tbl_name, "word_id__link_score", fld_word_id, Fld_link_score));} + public Srch_link_row New_row(Db_rdr rdr) { + return new Srch_link_row(rdr.Read_int(fld_word_id), rdr.Read_int(fld_page_id), rdr.Read_int(fld_link_score)); + } + public void Fill_for_insert(Db_stmt stmt, Srch_link_row row) { + stmt.Val_int(fld_word_id, row.Word_id).Val_int(fld_page_id, row.Page_id).Val_int(fld_link_score, row.Link_score); + } + public static final Srch_link_tbl[] Ary_empty = new Srch_link_tbl[0]; public static final String Fld_link_score = "link_score"; } diff --git a/400_xowa/src/gplx/xowa/addons/apps/searchs/dbs/Srch_temp_tbl.java b/400_xowa/src/gplx/xowa/addons/wikis/searchs/dbs/Srch_temp_tbl.java similarity index 88% rename from 400_xowa/src/gplx/xowa/addons/apps/searchs/dbs/Srch_temp_tbl.java rename to 400_xowa/src/gplx/xowa/addons/wikis/searchs/dbs/Srch_temp_tbl.java index 2587a9c69..d68fe7578 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/searchs/dbs/Srch_temp_tbl.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/searchs/dbs/Srch_temp_tbl.java @@ -15,11 +15,11 @@ 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.addons.apps.searchs.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; import gplx.xowa.addons.apps.searchs.*; +package gplx.xowa.addons.wikis.searchs.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.searchs.*; import gplx.dbs.*; public class Srch_temp_tbl { public final String tbl_name = "search_temp"; - private final Dbmeta_fld_list flds = Dbmeta_fld_list.new_(); + private final Dbmeta_fld_list flds = new Dbmeta_fld_list(); private final String fld_word_id, fld_page_id, fld_word_text; public final Db_conn conn; private Db_stmt stmt_insert; public Srch_temp_tbl(Db_conn conn) { diff --git a/400_xowa/src/gplx/xowa/addons/apps/searchs/dbs/Srch_word_row.java b/400_xowa/src/gplx/xowa/addons/wikis/searchs/dbs/Srch_word_row.java similarity index 66% rename from 400_xowa/src/gplx/xowa/addons/apps/searchs/dbs/Srch_word_row.java rename to 400_xowa/src/gplx/xowa/addons/wikis/searchs/dbs/Srch_word_row.java index 24070fd3f..013d0270c 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/searchs/dbs/Srch_word_row.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/searchs/dbs/Srch_word_row.java @@ -15,17 +15,22 @@ 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.addons.apps.searchs.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; import gplx.xowa.addons.apps.searchs.*; +package gplx.xowa.addons.wikis.searchs.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.searchs.*; public class Srch_word_row { - public Srch_word_row(int id, byte[] text, int link_count, int link_score_min, int link_score_max) { - this.Id = id; this.Text = text; this.Link_count = link_count; + public Srch_word_row(int id, byte[] text, int link_count, int link_count_score, int link_score_min, int link_score_max) { + this.Id = id; this.Text = text; + this.Link_count = link_count; this.Link_count_score = link_count_score; this.Link_score_min = link_score_min; this.Link_score_max = link_score_max; } public final int Id; public final byte[] Text; public final int Link_count; + public final int Link_count_score; public final int Link_score_min; public final int Link_score_max; - public static final Srch_word_row Empty = new Srch_word_row(-1, Bry_.Empty, 0, 0, 0); + public int Db_row_size() {return Db_row_size_fixed + Text.length;} + private static final int Db_row_size_fixed = (5 * 4); // 5 ints + + public static final Srch_word_row Empty = new Srch_word_row(-1, Bry_.Empty, 0, 0, 0, 0); } diff --git a/400_xowa/src/gplx/xowa/addons/apps/searchs/dbs/Srch_word_tbl.java b/400_xowa/src/gplx/xowa/addons/wikis/searchs/dbs/Srch_word_tbl.java similarity index 70% rename from 400_xowa/src/gplx/xowa/addons/apps/searchs/dbs/Srch_word_tbl.java rename to 400_xowa/src/gplx/xowa/addons/wikis/searchs/dbs/Srch_word_tbl.java index 002aed8b3..b1b00d5f9 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/searchs/dbs/Srch_word_tbl.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/searchs/dbs/Srch_word_tbl.java @@ -15,11 +15,11 @@ 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.addons.apps.searchs.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; import gplx.xowa.addons.apps.searchs.*; +package gplx.xowa.addons.wikis.searchs.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.searchs.*; import gplx.dbs.*; public class Srch_word_tbl implements Rls_able { public final String tbl_name; - public final Dbmeta_fld_list flds = Dbmeta_fld_list.new_(); + public final Dbmeta_fld_list flds = new Dbmeta_fld_list(); public final String fld_id, fld_text, fld_link_count, fld_link_count_score, fld_link_score_min, fld_link_score_max; public final Db_conn conn; private Db_stmt stmt_insert, stmt_select_by; public Srch_word_tbl(Db_conn conn) { @@ -43,7 +43,15 @@ public class Srch_word_tbl implements Rls_able { } public void Insert_bgn() {conn.Txn_bgn("schema__search_word__insert"); stmt_insert = conn.Stmt_insert(tbl_name, flds);} public void Insert_end() {conn.Txn_end(); stmt_insert = Db_stmt_.Rls(stmt_insert);} - public void Insert_cmd_by_batch(int id, byte[] word, int page_count) {stmt_insert.Clear().Val_int(fld_id, id).Val_bry_as_str(fld_text, word).Val_int(fld_link_count, page_count).Exec_insert();} + public void Insert_cmd_by_batch(int id, byte[] word, int page_count) { + stmt_insert.Clear().Val_int(fld_id, id).Val_bry_as_str(fld_text, word).Val_int(fld_link_count, page_count).Exec_insert(); + } + public void Insert_by_itm(Db_stmt stmt, Srch_word_row row) { + stmt.Clear() + .Val_int(fld_id, row.Id).Val_bry_as_str(fld_text, row.Text).Val_int(fld_link_count, row.Link_count) + .Val_int(fld_link_count_score, row.Link_count_score).Val_int(fld_link_score_min, row.Link_score_min).Val_int(fld_link_score_max, row.Link_score_max) + .Exec_insert(); + } public Srch_word_row Select_or_empty(byte[] word) { if (stmt_select_by == null) stmt_select_by = conn.Stmt_select(tbl_name, flds, fld_text); Db_rdr rdr = stmt_select_by.Clear().Crt_bry_as_str(fld_text, word).Exec_select__rls_manual(); @@ -51,10 +59,11 @@ public class Srch_word_tbl implements Rls_able { finally {rdr.Rls();} } public Srch_word_row New_row(Db_rdr rdr) { - int page_count = fld_link_count == Dbmeta_fld_itm.Key_null ? 0 : rdr.Read_int(fld_link_count); - int link_score_min = fld_link_score_min == Dbmeta_fld_itm.Key_null ? page_count : rdr.Read_int(fld_link_score_min); - int link_score_max = fld_link_score_max == Dbmeta_fld_itm.Key_null ? page_count : rdr.Read_int(fld_link_score_max); - return new Srch_word_row(rdr.Read_int(fld_id), rdr.Read_bry_by_str(fld_text), page_count, link_score_min, link_score_max); + int page_count = fld_link_count == Dbmeta_fld_itm.Key_null ? 0 : rdr.Read_int(fld_link_count); + int link_count_score = fld_link_count_score == Dbmeta_fld_itm.Key_null ? 0 : rdr.Read_int(fld_link_count_score); + int link_score_min = fld_link_score_min == Dbmeta_fld_itm.Key_null ? page_count : rdr.Read_int(fld_link_score_min); + int link_score_max = fld_link_score_max == Dbmeta_fld_itm.Key_null ? page_count : rdr.Read_int(fld_link_score_max); + return new Srch_word_row(rdr.Read_int(fld_id), rdr.Read_bry_by_str(fld_text), page_count, link_count_score, link_score_min, link_score_max); } public void Rls() { stmt_insert = Db_stmt_.Rls(stmt_insert); diff --git a/400_xowa/src/gplx/xowa/addons/apps/searchs/parsers/Srch_highlight_mgr.java b/400_xowa/src/gplx/xowa/addons/wikis/searchs/parsers/Srch_highlight_mgr.java similarity index 93% rename from 400_xowa/src/gplx/xowa/addons/apps/searchs/parsers/Srch_highlight_mgr.java rename to 400_xowa/src/gplx/xowa/addons/wikis/searchs/parsers/Srch_highlight_mgr.java index 2096d9589..9d8c53cba 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/searchs/parsers/Srch_highlight_mgr.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/searchs/parsers/Srch_highlight_mgr.java @@ -15,12 +15,12 @@ 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.addons.apps.searchs.parsers; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; import gplx.xowa.addons.apps.searchs.*; +package gplx.xowa.addons.wikis.searchs.parsers; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.searchs.*; import gplx.core.btries.*; import gplx.xowa.langs.cases.*; public class Srch_highlight_mgr { private final Xol_case_mgr case_mgr; - private final Bry_bfr tmp_bfr = Bry_bfr.new_(32); + private final Bry_bfr tmp_bfr = Bry_bfr_.New_w_size(32); private Srch_highlight_itm[] srch_lc_itms; private int srch_words_len; public Srch_highlight_mgr(Xol_case_mgr case_mgr) {this.case_mgr = case_mgr;} diff --git a/400_xowa/src/gplx/xowa/addons/apps/searchs/parsers/Srch_highlight_mgr_tst.java b/400_xowa/src/gplx/xowa/addons/wikis/searchs/parsers/Srch_highlight_mgr_tst.java similarity index 92% rename from 400_xowa/src/gplx/xowa/addons/apps/searchs/parsers/Srch_highlight_mgr_tst.java rename to 400_xowa/src/gplx/xowa/addons/wikis/searchs/parsers/Srch_highlight_mgr_tst.java index e6eccc6b4..bbbecf51e 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/searchs/parsers/Srch_highlight_mgr_tst.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/searchs/parsers/Srch_highlight_mgr_tst.java @@ -15,7 +15,7 @@ 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.addons.apps.searchs.parsers; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; import gplx.xowa.addons.apps.searchs.*; +package gplx.xowa.addons.wikis.searchs.parsers; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.searchs.*; import org.junit.*; import gplx.xowa.langs.cases.*; public class Srch_highlight_mgr_tst { private final Srch_highlight_mgr_tstr tstr = new Srch_highlight_mgr_tstr(); diff --git a/400_xowa/src/gplx/xowa/addons/apps/searchs/parsers/Srch_sym_parser.java b/400_xowa/src/gplx/xowa/addons/wikis/searchs/parsers/Srch_sym_parser.java similarity index 96% rename from 400_xowa/src/gplx/xowa/addons/apps/searchs/parsers/Srch_sym_parser.java rename to 400_xowa/src/gplx/xowa/addons/wikis/searchs/parsers/Srch_sym_parser.java index bf5059211..d12dcb5fd 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/searchs/parsers/Srch_sym_parser.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/searchs/parsers/Srch_sym_parser.java @@ -15,7 +15,7 @@ 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.addons.apps.searchs.parsers; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; import gplx.xowa.addons.apps.searchs.*; +package gplx.xowa.addons.wikis.searchs.parsers; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.searchs.*; import gplx.core.btries.*; import gplx.core.primitives.*; interface Srch_sym_parser { int Tid(); diff --git a/400_xowa/src/gplx/xowa/addons/apps/searchs/parsers/Srch_text_parser.java b/400_xowa/src/gplx/xowa/addons/wikis/searchs/parsers/Srch_text_parser.java similarity index 94% rename from 400_xowa/src/gplx/xowa/addons/apps/searchs/parsers/Srch_text_parser.java rename to 400_xowa/src/gplx/xowa/addons/wikis/searchs/parsers/Srch_text_parser.java index 22aa22f64..83d44db62 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/searchs/parsers/Srch_text_parser.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/searchs/parsers/Srch_text_parser.java @@ -15,12 +15,12 @@ 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.addons.apps.searchs.parsers; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; import gplx.xowa.addons.apps.searchs.*; +package gplx.xowa.addons.wikis.searchs.parsers; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.searchs.*; import gplx.core.btries.*; import gplx.xowa.langs.cases.*; public class Srch_text_parser { private Btrie_slim_mgr parser_trie = Btrie_slim_mgr.cs(); public Btrie_slim_mgr word_end_trie = Btrie_slim_mgr.cs(); private Btrie_slim_mgr word_bgn_trie = Btrie_slim_mgr.cs(); private Xol_case_mgr case_mgr; - public final Bry_bfr Tmp_bfr = Bry_bfr.new_(32); + public final Bry_bfr Tmp_bfr = Bry_bfr_.New_w_size(32); private byte[] src; private int end; private Srch_sym_parser__split parser__ws; private Srch_sym_parser__dash parser__dash; public Srch_word_hash word_hash = new Srch_word_hash(); diff --git a/400_xowa/src/gplx/xowa/addons/apps/searchs/parsers/Srch_text_parser_tst.java b/400_xowa/src/gplx/xowa/addons/wikis/searchs/parsers/Srch_text_parser_tst.java similarity index 97% rename from 400_xowa/src/gplx/xowa/addons/apps/searchs/parsers/Srch_text_parser_tst.java rename to 400_xowa/src/gplx/xowa/addons/wikis/searchs/parsers/Srch_text_parser_tst.java index cbddb5e3a..595d5f58c 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/searchs/parsers/Srch_text_parser_tst.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/searchs/parsers/Srch_text_parser_tst.java @@ -15,7 +15,7 @@ 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.addons.apps.searchs.parsers; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; import gplx.xowa.addons.apps.searchs.*; +package gplx.xowa.addons.wikis.searchs.parsers; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.searchs.*; import org.junit.*; import gplx.xowa.langs.cases.*; public class Srch_text_parser_tst { private final Srch_text_parser_fxt fxt = new Srch_text_parser_fxt(); @@ -103,7 +103,7 @@ public class Srch_text_parser_tst { } class Srch_text_parser_fxt { private final Srch_text_parser word_parser = new Srch_text_parser(); - private final Bry_bfr tmp_bfr = Bry_bfr.new_(32); + private final Bry_bfr tmp_bfr = Bry_bfr_.New_w_size(32); private Xol_case_mgr case_mgr; public void Init() { case_mgr = Xol_case_mgr_.A7(); diff --git a/400_xowa/src/gplx/xowa/addons/apps/searchs/parsers/Srch_text_parser_wkr.java b/400_xowa/src/gplx/xowa/addons/wikis/searchs/parsers/Srch_text_parser_wkr.java similarity index 84% rename from 400_xowa/src/gplx/xowa/addons/apps/searchs/parsers/Srch_text_parser_wkr.java rename to 400_xowa/src/gplx/xowa/addons/wikis/searchs/parsers/Srch_text_parser_wkr.java index e04b661d6..d970f44a6 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/searchs/parsers/Srch_text_parser_wkr.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/searchs/parsers/Srch_text_parser_wkr.java @@ -15,7 +15,7 @@ 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.addons.apps.searchs.parsers; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; import gplx.xowa.addons.apps.searchs.*; +package gplx.xowa.addons.wikis.searchs.parsers; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.searchs.*; public interface Srch_text_parser_wkr { void Parse_done(Srch_word_itm word); } diff --git a/400_xowa/src/gplx/xowa/addons/apps/searchs/parsers/Srch_word_hash.java b/400_xowa/src/gplx/xowa/addons/wikis/searchs/parsers/Srch_word_hash.java similarity index 86% rename from 400_xowa/src/gplx/xowa/addons/apps/searchs/parsers/Srch_word_hash.java rename to 400_xowa/src/gplx/xowa/addons/wikis/searchs/parsers/Srch_word_hash.java index 6b9c70289..64249fcf5 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/searchs/parsers/Srch_word_hash.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/searchs/parsers/Srch_word_hash.java @@ -15,7 +15,7 @@ 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.addons.apps.searchs.parsers; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; import gplx.xowa.addons.apps.searchs.*; +package gplx.xowa.addons.wikis.searchs.parsers; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.searchs.*; public class Srch_word_hash { private final Ordered_hash hash = Ordered_hash_.New_bry(); public void Clear() {hash.Clear();} diff --git a/400_xowa/src/gplx/xowa/addons/apps/searchs/parsers/Srch_word_itm.java b/400_xowa/src/gplx/xowa/addons/wikis/searchs/parsers/Srch_word_itm.java similarity index 84% rename from 400_xowa/src/gplx/xowa/addons/apps/searchs/parsers/Srch_word_itm.java rename to 400_xowa/src/gplx/xowa/addons/wikis/searchs/parsers/Srch_word_itm.java index 816fba42b..024e6ab44 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/searchs/parsers/Srch_word_itm.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/searchs/parsers/Srch_word_itm.java @@ -15,7 +15,7 @@ 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.addons.apps.searchs.parsers; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; import gplx.xowa.addons.apps.searchs.*; +package gplx.xowa.addons.wikis.searchs.parsers; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.searchs.*; public class Srch_word_itm { public Srch_word_itm(byte[] word) { this.Word = word; diff --git a/400_xowa/src/gplx/xowa/addons/apps/searchs/searchers/Srch_ns_mgr.java b/400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/Srch_ns_mgr.java similarity index 88% rename from 400_xowa/src/gplx/xowa/addons/apps/searchs/searchers/Srch_ns_mgr.java rename to 400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/Srch_ns_mgr.java index 2153eb77b..2d4c516aa 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/searchs/searchers/Srch_ns_mgr.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/Srch_ns_mgr.java @@ -15,12 +15,12 @@ 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.addons.apps.searchs.searchers; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; import gplx.xowa.addons.apps.searchs.*; +package gplx.xowa.addons.wikis.searchs.searchers; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.searchs.*; import gplx.core.primitives.*; import gplx.xowa.wikis.nss.*; public class Srch_ns_mgr { - private final Ordered_hash ns_hash = Ordered_hash_.New(); private final Int_obj_ref tmp_ns_id = Int_obj_ref.neg1_(); - private final Bry_bfr tmp_bfr = Bry_bfr.reset_(32); + private final Ordered_hash ns_hash = Ordered_hash_.New(); private final Int_obj_ref tmp_ns_id = Int_obj_ref.New_neg1(); + private final Bry_bfr tmp_bfr = Bry_bfr_.Reset(32); private boolean ns_all, ns_main; public void Clear() { ns_hash.Clear(); @@ -36,7 +36,7 @@ public class Srch_ns_mgr { public Srch_ns_mgr Add_main_if_empty() {if (ns_hash.Count() == 0) ns_main = true; return this;} public void Add_by_id(int ns_id) { if (ns_hash.Has(tmp_ns_id.Val_(ns_id))) ns_hash.Del(tmp_ns_id); - ns_hash.Add_as_key_and_val(Int_obj_ref.new_(ns_id)); + ns_hash.Add_as_key_and_val(Int_obj_ref.New(ns_id)); } public void Add_by_name(byte[] ns_name) { int id = Xow_ns_canonical_.To_id(ns_name); diff --git a/400_xowa/src/gplx/xowa/addons/apps/searchs/searchers/Srch_search_cmd.java b/400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/Srch_search_cmd.java similarity index 81% rename from 400_xowa/src/gplx/xowa/addons/apps/searchs/searchers/Srch_search_cmd.java rename to 400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/Srch_search_cmd.java index d7de18884..c018b167a 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/searchs/searchers/Srch_search_cmd.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/Srch_search_cmd.java @@ -15,10 +15,10 @@ 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.addons.apps.searchs.searchers; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; import gplx.xowa.addons.apps.searchs.*; -import gplx.xowa.addons.apps.searchs.searchers.rslts.*; -import gplx.xowa.addons.apps.searchs.searchers.crts.*; -public class Srch_search_cmd implements Cancelable, GfoInvkAble { +package gplx.xowa.addons.wikis.searchs.searchers; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.searchs.*; +import gplx.xowa.addons.wikis.searchs.searchers.rslts.*; +import gplx.xowa.addons.wikis.searchs.searchers.crts.*; +public class Srch_search_cmd implements Cancelable, Gfo_invk { private final Srch_search_mgr search_mgr; public final Srch_search_qry qry; public final Srch_crt_mgr crt_mgr; @@ -32,7 +32,7 @@ public class Srch_search_cmd implements Cancelable, GfoInvkAble { canceled = true; rslt_cbk.On_cancel(); } - private void Search() { + public void Search() { try { search_mgr.Search_async(this, qry, crt_mgr, rslt_cbk, rslts_list); // NOTE: must handle any errors in async mode } @@ -42,7 +42,7 @@ public class Srch_search_cmd implements Cancelable, GfoInvkAble { } public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk__search)) Search(); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } public static final String Invk__search = "search"; diff --git a/400_xowa/src/gplx/xowa/addons/apps/searchs/searchers/Srch_search_ctx.java b/400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/Srch_search_ctx.java similarity index 83% rename from 400_xowa/src/gplx/xowa/addons/apps/searchs/searchers/Srch_search_ctx.java rename to 400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/Srch_search_ctx.java index b1665006e..2534f029a 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/searchs/searchers/Srch_search_ctx.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/Srch_search_ctx.java @@ -15,11 +15,11 @@ 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.addons.apps.searchs.searchers; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; import gplx.xowa.addons.apps.searchs.*; +package gplx.xowa.addons.wikis.searchs.searchers; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.searchs.*; import gplx.xowa.langs.cases.*; -import gplx.xowa.wikis.data.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.addons.apps.searchs.dbs.*; -import gplx.xowa.addons.apps.searchs.searchers.crts.*; import gplx.xowa.addons.apps.searchs.searchers.rslts.*; import gplx.dbs.percentiles.*; import gplx.xowa.addons.apps.searchs.searchers.wkrs.*; -import gplx.xowa.addons.apps.searchs.parsers.*; +import gplx.xowa.wikis.data.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.addons.wikis.searchs.dbs.*; +import gplx.xowa.addons.wikis.searchs.searchers.crts.*; import gplx.xowa.addons.wikis.searchs.searchers.rslts.*; import gplx.dbs.percentiles.*; import gplx.xowa.addons.wikis.searchs.searchers.wkrs.*; +import gplx.xowa.addons.wikis.searchs.parsers.*; public class Srch_search_ctx { public Srch_search_ctx(Cancelable cxl, Xow_wiki wiki, Srch_search_addon addon , Srch_rslt_list cache__page, Hash_adp_bry cache__word_counts @@ -54,7 +54,7 @@ public class Srch_search_ctx { public final Xol_case_mgr Case_mgr; public final Srch_rslt_list Cache__page; public final Hash_adp_bry Cache__word_counts; - public final Xowd_db_file Db__core; + public final Xow_db_file Db__core; public final Xowd_page_tbl Tbl__page; public final Srch_word_tbl Tbl__word; public final Srch_link_tbl[] Tbl__link__ary; diff --git a/400_xowa/src/gplx/xowa/addons/apps/searchs/searchers/Srch_search_mgr.java b/400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/Srch_search_mgr.java similarity index 79% rename from 400_xowa/src/gplx/xowa/addons/apps/searchs/searchers/Srch_search_mgr.java rename to 400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/Srch_search_mgr.java index ae03b8708..9ad9f3f80 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/searchs/searchers/Srch_search_mgr.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/Srch_search_mgr.java @@ -15,9 +15,9 @@ 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.addons.apps.searchs.searchers; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; import gplx.xowa.addons.apps.searchs.*; -import gplx.xowa.addons.apps.searchs.searchers.rslts.*; import gplx.xowa.addons.apps.searchs.searchers.wkrs.*; import gplx.xowa.addons.apps.searchs.parsers.*; import gplx.xowa.addons.apps.searchs.searchers.crts.*; -import gplx.xowa.addons.apps.searchs.searchers.crts.visitors.*; +package gplx.xowa.addons.wikis.searchs.searchers; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.searchs.*; +import gplx.xowa.addons.wikis.searchs.searchers.rslts.*; import gplx.xowa.addons.wikis.searchs.searchers.wkrs.*; import gplx.xowa.addons.wikis.searchs.parsers.*; import gplx.xowa.addons.wikis.searchs.searchers.crts.*; +import gplx.xowa.addons.wikis.searchs.searchers.crts.visitors.*; public class Srch_search_mgr { private final Srch_search_addon addon; private final Xow_wiki wiki; @@ -43,7 +43,7 @@ public class Srch_search_mgr { public void Search_cancel() { cur_cmds[Srch_search_qry.Tid__suggest_box].Cancel(); } - public void Search(Srch_search_qry qry, Srch_rslt_cbk cbk) { + public void Search(Srch_search_qry qry, Srch_rslt_cbk cbk) { // NOTE: main entry point for search if (qry.Phrase.Orig.length == 0) return; // handle obsolete search dbs; @@ -62,7 +62,10 @@ public class Srch_search_mgr { Srch_rslt_list rslts_list = cache__rslts.Get_or_new(crt_mgr.Key); cur_cmd = new Srch_search_cmd(this, qry, crt_mgr, cbk, rslts_list); cur_cmds[qry.Tid] = cur_cmd; - gplx.core.threads.Thread_adp_.invk_(gplx.xowa.apps.Xoa_thread_.Key_special_suggest, cur_cmd, Srch_search_cmd.Invk__search).Start(); + if (wiki.App().Mode().Tid_is_http()) // FUTURE: use api async flag instead; WHEN: long polling support + cur_cmd.Search(); + else + gplx.core.threads.Thread_adp_.Start_by_key(gplx.xowa.apps.Xoa_thread_.Key_special_suggest, cur_cmd, Srch_search_cmd.Invk__search); } public void Search_async(Cancelable cxl, Srch_search_qry qry, Srch_crt_mgr crt_mgr, Srch_rslt_cbk rslt_cbk, Srch_rslt_list rslts_list) { synchronized (mutex) { // force only one search at a time; do not (a) place around Thread_sleep; (b) reuse for any other locks diff --git a/400_xowa/src/gplx/xowa/addons/apps/searchs/searchers/Srch_search_phrase.java b/400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/Srch_search_phrase.java similarity index 91% rename from 400_xowa/src/gplx/xowa/addons/apps/searchs/searchers/Srch_search_phrase.java rename to 400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/Srch_search_phrase.java index 33b252403..b5ddb48c8 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/searchs/searchers/Srch_search_phrase.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/Srch_search_phrase.java @@ -15,9 +15,9 @@ 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.addons.apps.searchs.searchers; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; import gplx.xowa.addons.apps.searchs.*; +package gplx.xowa.addons.wikis.searchs.searchers; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.searchs.*; import gplx.core.btries.*; -import gplx.xowa.addons.apps.searchs.searchers.crts.*; +import gplx.xowa.addons.wikis.searchs.searchers.crts.*; public class Srch_search_phrase { public Srch_search_phrase(boolean wildcard, byte[] orig, byte[] compiled) { this.Orig = orig; diff --git a/400_xowa/src/gplx/xowa/addons/apps/searchs/searchers/Srch_search_phrase_tst.java b/400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/Srch_search_phrase_tst.java similarity index 87% rename from 400_xowa/src/gplx/xowa/addons/apps/searchs/searchers/Srch_search_phrase_tst.java rename to 400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/Srch_search_phrase_tst.java index de0336743..fbad02d60 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/searchs/searchers/Srch_search_phrase_tst.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/Srch_search_phrase_tst.java @@ -15,8 +15,8 @@ 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.addons.apps.searchs.searchers; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; import gplx.xowa.addons.apps.searchs.*; -import org.junit.*; import gplx.xowa.addons.apps.searchs.parsers.*; import gplx.xowa.addons.apps.searchs.searchers.crts.*; +package gplx.xowa.addons.wikis.searchs.searchers; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.searchs.*; +import org.junit.*; import gplx.xowa.addons.wikis.searchs.parsers.*; import gplx.xowa.addons.wikis.searchs.searchers.crts.*; public class Srch_search_phrase_tst { private final Srch_search_phrase_fxt fxt = new Srch_search_phrase_fxt(); @Test public void Word() {fxt.Test__auto_wildcard("a" , "a*");} diff --git a/400_xowa/src/gplx/xowa/addons/apps/searchs/searchers/Srch_search_qry.java b/400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/Srch_search_qry.java similarity index 92% rename from 400_xowa/src/gplx/xowa/addons/apps/searchs/searchers/Srch_search_qry.java rename to 400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/Srch_search_qry.java index c180580c0..a72a73618 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/searchs/searchers/Srch_search_qry.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/Srch_search_qry.java @@ -15,7 +15,7 @@ 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.addons.apps.searchs.searchers; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; import gplx.xowa.addons.apps.searchs.*; +package gplx.xowa.addons.wikis.searchs.searchers; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.searchs.*; import gplx.xowa.wikis.domains.*; public class Srch_search_qry { public Srch_search_qry(byte tid, Srch_ns_mgr ns_mgr, Srch_search_phrase phrase, int slab_bgn, int slab_end) { diff --git a/400_xowa/src/gplx/xowa/addons/apps/searchs/searchers/cbks/Srch_rslt_cbk__suggest_box.java b/400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/cbks/Srch_rslt_cbk__suggest_box.java similarity index 80% rename from 400_xowa/src/gplx/xowa/addons/apps/searchs/searchers/cbks/Srch_rslt_cbk__suggest_box.java rename to 400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/cbks/Srch_rslt_cbk__suggest_box.java index 5edba5cea..83a035e9d 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/searchs/searchers/cbks/Srch_rslt_cbk__suggest_box.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/cbks/Srch_rslt_cbk__suggest_box.java @@ -15,10 +15,10 @@ 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.addons.apps.searchs.searchers.cbks; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; import gplx.xowa.addons.apps.searchs.*; import gplx.xowa.addons.apps.searchs.searchers.*; +package gplx.xowa.addons.wikis.searchs.searchers.cbks; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.searchs.*; import gplx.xowa.addons.wikis.searchs.searchers.*; import gplx.core.js.*; -import gplx.xowa.addons.apps.searchs.searchers.*; import gplx.xowa.addons.apps.searchs.searchers.rslts.*; -public class Srch_rslt_cbk__suggest_box implements Srch_rslt_cbk, GfoInvkAble { +import gplx.xowa.addons.wikis.searchs.searchers.*; import gplx.xowa.addons.wikis.searchs.searchers.rslts.*; +public class Srch_rslt_cbk__suggest_box implements Srch_rslt_cbk, Gfo_invk { private final Js_wtr js_wtr = new Js_wtr(); private final Xoae_app app; private final byte[] cbk_func; @@ -43,15 +43,15 @@ public class Srch_rslt_cbk__suggest_box implements Srch_rslt_cbk, GfoInvkAble { } js_wtr.Ary_term(); js_wtr.Func_term(); - GfoInvkAble_.InvkCmd(app.Gui_mgr().Kit().New_cmd_sync(this), Srch_rslt_cbk__suggest_box.Invk__notify); + Gfo_invk_.Invk_by_key(app.Gui_mgr().Kit().New_cmd_sync(this), Srch_rslt_cbk__suggest_box.Invk__notify); } private void Notify() { app.Gui_mgr().Browser_win().Active_html_box().Html_js_eval_script(js_wtr.To_str_and_clear()); } public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk__notify)) Notify(); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } public static final String Invk__notify = "notify"; -} +} diff --git a/400_xowa/src/gplx/xowa/addons/apps/searchs/searchers/cbks/Srch_rslt_cbk__url_bar.java b/400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/cbks/Srch_rslt_cbk__url_bar.java similarity index 82% rename from 400_xowa/src/gplx/xowa/addons/apps/searchs/searchers/cbks/Srch_rslt_cbk__url_bar.java rename to 400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/cbks/Srch_rslt_cbk__url_bar.java index 99203eb04..2233b6b45 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/searchs/searchers/cbks/Srch_rslt_cbk__url_bar.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/cbks/Srch_rslt_cbk__url_bar.java @@ -15,11 +15,11 @@ 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.addons.apps.searchs.searchers.cbks; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; import gplx.xowa.addons.apps.searchs.*; import gplx.xowa.addons.apps.searchs.searchers.*; -import gplx.gfui.*; -import gplx.xowa.addons.apps.searchs.searchers.rslts.*; +package gplx.xowa.addons.wikis.searchs.searchers.cbks; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.searchs.*; import gplx.xowa.addons.wikis.searchs.searchers.*; +import gplx.gfui.*; import gplx.gfui.controls.standards.*; +import gplx.xowa.addons.wikis.searchs.searchers.rslts.*; import gplx.xowa.apps.apis.xowa.addons.searchs.*; -public class Srch_rslt_cbk__url_bar implements Srch_rslt_cbk, GfoInvkAble { +public class Srch_rslt_cbk__url_bar implements Srch_rslt_cbk, Gfo_invk { private final Xoae_app app; private final GfuiComboBox url_bar; private final Xoapi_url_bar url_bar_api; @@ -59,7 +59,7 @@ public class Srch_rslt_cbk__url_bar implements Srch_rslt_cbk, GfoInvkAble { cbo_ary[i] = cbo_itm; } - GfoInvkAble_.InvkCmd(app.Gui_mgr().Kit().New_cmd_sync(this), Srch_rslt_cbk__url_bar.Invk__items__update); // NOTE: needs to be sync, b/c page_wkr and link_wkr must execute in order; EX:"Portal:Science" does not show; DATE:2016-03-24 + Gfo_invk_.Invk_by_key(app.Gui_mgr().Kit().New_cmd_sync(this), Srch_rslt_cbk__url_bar.Invk__items__update); // NOTE: needs to be sync, b/c page_wkr and link_wkr must execute in order; EX:"Portal:Science" does not show; DATE:2016-03-24 } private void Items__update() { url_bar.Items__update(cbo_ary); @@ -80,7 +80,7 @@ public class Srch_rslt_cbk__url_bar implements Srch_rslt_cbk, GfoInvkAble { } public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk__items__update)) Items__update(); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String Invk__items__update = "items__update"; } diff --git a/400_xowa/src/gplx/xowa/addons/apps/searchs/searchers/crts/Srch_crt_itm.java b/400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/crts/Srch_crt_itm.java similarity index 89% rename from 400_xowa/src/gplx/xowa/addons/apps/searchs/searchers/crts/Srch_crt_itm.java rename to 400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/crts/Srch_crt_itm.java index ebe6180df..aff12b5f1 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/searchs/searchers/crts/Srch_crt_itm.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/crts/Srch_crt_itm.java @@ -15,7 +15,7 @@ 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.addons.apps.searchs.searchers.crts; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; import gplx.xowa.addons.apps.searchs.*; import gplx.xowa.addons.apps.searchs.searchers.*; +package gplx.xowa.addons.wikis.searchs.searchers.crts; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.searchs.*; import gplx.xowa.addons.wikis.searchs.searchers.*; import gplx.langs.regxs.*; public class Srch_crt_itm { public Srch_crt_itm(int idx, int tid, Srch_crt_itm[] subs, byte[] raw, Srch_crt_sql raw_data) { diff --git a/400_xowa/src/gplx/xowa/addons/apps/searchs/searchers/crts/Srch_crt_mgr.java b/400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/crts/Srch_crt_mgr.java similarity index 85% rename from 400_xowa/src/gplx/xowa/addons/apps/searchs/searchers/crts/Srch_crt_mgr.java rename to 400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/crts/Srch_crt_mgr.java index 7c921cf44..33dfd7e67 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/searchs/searchers/crts/Srch_crt_mgr.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/crts/Srch_crt_mgr.java @@ -15,7 +15,7 @@ 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.addons.apps.searchs.searchers.crts; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; import gplx.xowa.addons.apps.searchs.*; import gplx.xowa.addons.apps.searchs.searchers.*; +package gplx.xowa.addons.wikis.searchs.searchers.crts; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.searchs.*; import gplx.xowa.addons.wikis.searchs.searchers.*; public class Srch_crt_mgr { public Srch_crt_mgr(byte[] key, Srch_crt_tkn[] tkns, Srch_crt_itm root, byte words_tid, Srch_crt_itm[] words_ary, Srch_crt_itm words_nth) { this.Key = key; diff --git a/400_xowa/src/gplx/xowa/addons/apps/searchs/searchers/crts/Srch_crt_parser.java b/400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/crts/Srch_crt_parser.java similarity index 91% rename from 400_xowa/src/gplx/xowa/addons/apps/searchs/searchers/crts/Srch_crt_parser.java rename to 400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/crts/Srch_crt_parser.java index ad1311863..0fd8288f8 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/searchs/searchers/crts/Srch_crt_parser.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/crts/Srch_crt_parser.java @@ -15,8 +15,8 @@ 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.addons.apps.searchs.searchers.crts; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; import gplx.xowa.addons.apps.searchs.*; import gplx.xowa.addons.apps.searchs.searchers.*; -import gplx.xowa.addons.apps.searchs.searchers.crts.visitors.*; +package gplx.xowa.addons.wikis.searchs.searchers.crts; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.searchs.*; import gplx.xowa.addons.wikis.searchs.searchers.*; +import gplx.xowa.addons.wikis.searchs.searchers.crts.visitors.*; public class Srch_crt_parser { private final Srch_crt_scanner scanner; private final Srch_crt_visitor__words words_visitor = new Srch_crt_visitor__words(); @@ -92,7 +92,7 @@ class Srch_crt_parser_frame { } private int join_tid = Srch_crt_tkn.Tid__null; private boolean notted = false; - private final List_adp subs = List_adp_.new_(); + private final List_adp subs = List_adp_.New(); private final Srch_crt_parser parser; public int Next_uid() {return parser.Next_uid();} public void Notted_y_() { diff --git a/400_xowa/src/gplx/xowa/addons/apps/searchs/searchers/crts/Srch_crt_parser_tst.java b/400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/crts/Srch_crt_parser_tst.java similarity index 90% rename from 400_xowa/src/gplx/xowa/addons/apps/searchs/searchers/crts/Srch_crt_parser_tst.java rename to 400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/crts/Srch_crt_parser_tst.java index b04bf9daf..7b5232b91 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/searchs/searchers/crts/Srch_crt_parser_tst.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/crts/Srch_crt_parser_tst.java @@ -15,8 +15,8 @@ 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.addons.apps.searchs.searchers.crts; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; import gplx.xowa.addons.apps.searchs.*; import gplx.xowa.addons.apps.searchs.searchers.*; -import org.junit.*; import gplx.xowa.addons.apps.searchs.parsers.*; import gplx.xowa.addons.apps.searchs.searchers.crts.visitors.*; +package gplx.xowa.addons.wikis.searchs.searchers.crts; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.searchs.*; import gplx.xowa.addons.wikis.searchs.searchers.*; +import org.junit.*; import gplx.xowa.addons.wikis.searchs.parsers.*; import gplx.xowa.addons.wikis.searchs.searchers.crts.visitors.*; public class Srch_crt_parser_tst { private final Srch_crt_parser_fxt fxt = new Srch_crt_parser_fxt(); @Test public void Word__one() {fxt.Test__parse("a" , "a");} diff --git a/400_xowa/src/gplx/xowa/addons/apps/searchs/searchers/crts/Srch_crt_scanner.java b/400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/crts/Srch_crt_scanner.java similarity index 89% rename from 400_xowa/src/gplx/xowa/addons/apps/searchs/searchers/crts/Srch_crt_scanner.java rename to 400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/crts/Srch_crt_scanner.java index 6a27605dd..b17398954 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/searchs/searchers/crts/Srch_crt_scanner.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/crts/Srch_crt_scanner.java @@ -15,13 +15,13 @@ 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.addons.apps.searchs.searchers.crts; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; import gplx.xowa.addons.apps.searchs.*; import gplx.xowa.addons.apps.searchs.searchers.*; +package gplx.xowa.addons.wikis.searchs.searchers.crts; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.searchs.*; import gplx.xowa.addons.wikis.searchs.searchers.*; import gplx.core.btries.*; import gplx.xowa.langs.cases.*; -import gplx.xowa.addons.apps.searchs.parsers.*; +import gplx.xowa.addons.wikis.searchs.parsers.*; class Srch_crt_scanner { - private final List_adp tkns = List_adp_.new_(); private byte[] src; private int src_len, pos, txt_bgn; + private final List_adp tkns = List_adp_.New(); private byte[] src; private int src_len, pos, txt_bgn; private final Srch_crt_scanner_syms trie_bldr; private final Btrie_slim_mgr trie; - private final Bry_bfr word_bfr = Bry_bfr.new_(); private boolean word_is_dirty; + private final Bry_bfr word_bfr = Bry_bfr_.New(); private boolean word_is_dirty; public Srch_crt_scanner(Srch_crt_scanner_syms trie_bldr) { this.trie_bldr = trie_bldr; this.trie = trie_bldr.Trie(); diff --git a/400_xowa/src/gplx/xowa/addons/apps/searchs/searchers/crts/Srch_crt_scanner_syms.java b/400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/crts/Srch_crt_scanner_syms.java similarity index 93% rename from 400_xowa/src/gplx/xowa/addons/apps/searchs/searchers/crts/Srch_crt_scanner_syms.java rename to 400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/crts/Srch_crt_scanner_syms.java index b6f71cc76..659a79676 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/searchs/searchers/crts/Srch_crt_scanner_syms.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/crts/Srch_crt_scanner_syms.java @@ -15,7 +15,7 @@ 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.addons.apps.searchs.searchers.crts; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; import gplx.xowa.addons.apps.searchs.*; import gplx.xowa.addons.apps.searchs.searchers.*; +package gplx.xowa.addons.wikis.searchs.searchers.crts; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.searchs.*; import gplx.xowa.addons.wikis.searchs.searchers.*; import gplx.core.btries.*; public class Srch_crt_scanner_syms { public Srch_crt_scanner_syms(byte escape, byte space, byte quote, byte not, byte and, byte or, byte paren_bgn, byte paren_end, byte wild) { @@ -38,7 +38,7 @@ public class Srch_crt_scanner_syms { public byte Wild() {return wild;} private byte wild; public Btrie_slim_mgr Trie() {return trie;} private final Btrie_slim_mgr trie; public byte[] To_bry() { - Bry_bfr bfr = Bry_bfr.new_(); + Bry_bfr bfr = Bry_bfr_.New(); To_bry__add(bfr, "wild" , wild); To_bry__add(bfr, "not" , not); To_bry__add(bfr, "or" , or); diff --git a/400_xowa/src/gplx/xowa/addons/apps/searchs/searchers/crts/Srch_crt_scanner_tst.java b/400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/crts/Srch_crt_scanner_tst.java similarity index 92% rename from 400_xowa/src/gplx/xowa/addons/apps/searchs/searchers/crts/Srch_crt_scanner_tst.java rename to 400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/crts/Srch_crt_scanner_tst.java index cb164cba5..9d3566b66 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/searchs/searchers/crts/Srch_crt_scanner_tst.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/crts/Srch_crt_scanner_tst.java @@ -15,8 +15,8 @@ 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.addons.apps.searchs.searchers.crts; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; import gplx.xowa.addons.apps.searchs.*; import gplx.xowa.addons.apps.searchs.searchers.*; -import org.junit.*; import gplx.xowa.addons.apps.searchs.parsers.*; +package gplx.xowa.addons.wikis.searchs.searchers.crts; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.searchs.*; import gplx.xowa.addons.wikis.searchs.searchers.*; +import org.junit.*; import gplx.xowa.addons.wikis.searchs.parsers.*; public class Srch_crt_scanner_tst { private final Srch_crt_scanner_fxt fxt = new Srch_crt_scanner_fxt(); @Test public void Word() {fxt.Test__scan("abc" , "abc");} diff --git a/400_xowa/src/gplx/xowa/addons/apps/searchs/searchers/crts/Srch_crt_sql.java b/400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/crts/Srch_crt_sql.java similarity index 87% rename from 400_xowa/src/gplx/xowa/addons/apps/searchs/searchers/crts/Srch_crt_sql.java rename to 400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/crts/Srch_crt_sql.java index 6a4de5f43..1d285cf17 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/searchs/searchers/crts/Srch_crt_sql.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/crts/Srch_crt_sql.java @@ -15,7 +15,7 @@ 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.addons.apps.searchs.searchers.crts; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; import gplx.xowa.addons.apps.searchs.*; import gplx.xowa.addons.apps.searchs.searchers.*; +package gplx.xowa.addons.wikis.searchs.searchers.crts; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.searchs.*; import gplx.xowa.addons.wikis.searchs.searchers.*; import gplx.langs.regxs.*; public class Srch_crt_sql { public Srch_crt_sql(int tid, String eq, String rng_bgn, String rng_end, String like, Gfo_pattern pattern) { @@ -64,7 +64,7 @@ public class Srch_crt_sql { break; case Srch_crt_sql.Tid__like: like = String_.new_u8(Bry_.Replace(raw, wildcard_byte, gplx.dbs.sqls.Sql_qry_wtr_.Like_wildcard)); - byte like_escape_byte = gplx.xowa.addons.apps.searchs.searchers.wkrs.Srch_link_wkr_sql.Like_escape_byte; + byte like_escape_byte = gplx.xowa.addons.wikis.searchs.searchers.wkrs.Srch_link_wkr_sql.Like_escape_byte; Bry_bfr tmp_bfr = Bry_bfr_.Get(); try {pattern_raw = Bry_.Resolve_escape(tmp_bfr, like_escape_byte, raw, 0, raw.length);} finally {tmp_bfr.Mkr_rls();} diff --git a/400_xowa/src/gplx/xowa/addons/apps/searchs/searchers/crts/Srch_crt_sql_tst.java b/400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/crts/Srch_crt_sql_tst.java similarity index 89% rename from 400_xowa/src/gplx/xowa/addons/apps/searchs/searchers/crts/Srch_crt_sql_tst.java rename to 400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/crts/Srch_crt_sql_tst.java index 23693bd40..8e0bcdcc8 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/searchs/searchers/crts/Srch_crt_sql_tst.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/crts/Srch_crt_sql_tst.java @@ -15,7 +15,7 @@ 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.addons.apps.searchs.searchers.crts; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; import gplx.xowa.addons.apps.searchs.*; import gplx.xowa.addons.apps.searchs.searchers.*; +package gplx.xowa.addons.wikis.searchs.searchers.crts; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.searchs.*; import gplx.xowa.addons.wikis.searchs.searchers.*; import org.junit.*; public class Srch_crt_sql_tst { private final Srch_crt_sql_fxt fxt = new Srch_crt_sql_fxt(); diff --git a/400_xowa/src/gplx/xowa/addons/apps/searchs/searchers/crts/Srch_crt_tkn.java b/400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/crts/Srch_crt_tkn.java similarity index 82% rename from 400_xowa/src/gplx/xowa/addons/apps/searchs/searchers/crts/Srch_crt_tkn.java rename to 400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/crts/Srch_crt_tkn.java index 1c3c94d6f..a95229788 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/searchs/searchers/crts/Srch_crt_tkn.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/crts/Srch_crt_tkn.java @@ -15,7 +15,7 @@ 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.addons.apps.searchs.searchers.crts; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; import gplx.xowa.addons.apps.searchs.*; import gplx.xowa.addons.apps.searchs.searchers.*; +package gplx.xowa.addons.wikis.searchs.searchers.crts; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.searchs.*; import gplx.xowa.addons.wikis.searchs.searchers.*; public class Srch_crt_tkn { public Srch_crt_tkn(byte tid, byte[] val) {this.Tid = tid; this.Val = val;} public final byte Tid; diff --git a/400_xowa/src/gplx/xowa/addons/apps/searchs/searchers/crts/Srch_crt_visitor.java b/400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/crts/Srch_crt_visitor.java similarity index 76% rename from 400_xowa/src/gplx/xowa/addons/apps/searchs/searchers/crts/Srch_crt_visitor.java rename to 400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/crts/Srch_crt_visitor.java index c9d435f76..034b5c91e 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/searchs/searchers/crts/Srch_crt_visitor.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/crts/Srch_crt_visitor.java @@ -15,7 +15,7 @@ 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.addons.apps.searchs.searchers.crts; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; import gplx.xowa.addons.apps.searchs.*; import gplx.xowa.addons.apps.searchs.searchers.*; +package gplx.xowa.addons.wikis.searchs.searchers.crts; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.searchs.*; import gplx.xowa.addons.wikis.searchs.searchers.*; public interface Srch_crt_visitor { void Visit(Srch_crt_itm node); } diff --git a/400_xowa/src/gplx/xowa/addons/apps/searchs/searchers/crts/visitors/Srch_crt_visitor__print.java b/400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/crts/visitors/Srch_crt_visitor__print.java similarity index 81% rename from 400_xowa/src/gplx/xowa/addons/apps/searchs/searchers/crts/visitors/Srch_crt_visitor__print.java rename to 400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/crts/visitors/Srch_crt_visitor__print.java index d4d0c8329..616de59cd 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/searchs/searchers/crts/visitors/Srch_crt_visitor__print.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/crts/visitors/Srch_crt_visitor__print.java @@ -15,9 +15,9 @@ 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.addons.apps.searchs.searchers.crts.visitors; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; import gplx.xowa.addons.apps.searchs.*; import gplx.xowa.addons.apps.searchs.searchers.*; import gplx.xowa.addons.apps.searchs.searchers.crts.*; +package gplx.xowa.addons.wikis.searchs.searchers.crts.visitors; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.searchs.*; import gplx.xowa.addons.wikis.searchs.searchers.*; import gplx.xowa.addons.wikis.searchs.searchers.crts.*; public class Srch_crt_visitor__print implements Srch_crt_visitor { - private final Bry_bfr bfr = Bry_bfr.new_(); + private final Bry_bfr bfr = Bry_bfr_.New(); public byte[] Print(Srch_crt_itm root) { Visit(root); return bfr.To_bry_and_clear(); diff --git a/400_xowa/src/gplx/xowa/addons/apps/searchs/searchers/crts/visitors/Srch_crt_visitor__words.java b/400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/crts/visitors/Srch_crt_visitor__words.java similarity index 84% rename from 400_xowa/src/gplx/xowa/addons/apps/searchs/searchers/crts/visitors/Srch_crt_visitor__words.java rename to 400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/crts/visitors/Srch_crt_visitor__words.java index ab7369c74..4fa6a63e2 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/searchs/searchers/crts/visitors/Srch_crt_visitor__words.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/crts/visitors/Srch_crt_visitor__words.java @@ -15,9 +15,9 @@ 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.addons.apps.searchs.searchers.crts.visitors; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; import gplx.xowa.addons.apps.searchs.*; import gplx.xowa.addons.apps.searchs.searchers.*; import gplx.xowa.addons.apps.searchs.searchers.crts.*; +package gplx.xowa.addons.wikis.searchs.searchers.crts.visitors; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.searchs.*; import gplx.xowa.addons.wikis.searchs.searchers.*; import gplx.xowa.addons.wikis.searchs.searchers.crts.*; public class Srch_crt_visitor__words implements Srch_crt_visitor { - private final List_adp words_list = List_adp_.new_(); + private final List_adp words_list = List_adp_.New(); public byte Words_tid() {return words_tid;} private byte words_tid; public Srch_crt_itm Words_nth() {return words_nth;} private Srch_crt_itm words_nth; public Srch_crt_itm[] Words_ary() {return (Srch_crt_itm[])words_list.To_ary_and_clear(Srch_crt_itm.class);} diff --git a/400_xowa/src/gplx/xowa/addons/apps/searchs/searchers/rslts/Srch_rslt_cache.java b/400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/rslts/Srch_rslt_cache.java similarity index 81% rename from 400_xowa/src/gplx/xowa/addons/apps/searchs/searchers/rslts/Srch_rslt_cache.java rename to 400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/rslts/Srch_rslt_cache.java index dab9dfc3d..d1b5b5775 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/searchs/searchers/rslts/Srch_rslt_cache.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/rslts/Srch_rslt_cache.java @@ -15,7 +15,7 @@ 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.addons.apps.searchs.searchers.rslts; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; import gplx.xowa.addons.apps.searchs.*; import gplx.xowa.addons.apps.searchs.searchers.*; +package gplx.xowa.addons.wikis.searchs.searchers.rslts; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.searchs.*; import gplx.xowa.addons.wikis.searchs.searchers.*; public class Srch_rslt_cache { private final Hash_adp_bry hash = Hash_adp_bry.cs(); public void Clear() {hash.Clear();} diff --git a/400_xowa/src/gplx/xowa/addons/apps/searchs/searchers/rslts/Srch_rslt_cbk.java b/400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/rslts/Srch_rslt_cbk.java similarity index 77% rename from 400_xowa/src/gplx/xowa/addons/apps/searchs/searchers/rslts/Srch_rslt_cbk.java rename to 400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/rslts/Srch_rslt_cbk.java index 26c6abd9e..ec9ee4270 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/searchs/searchers/rslts/Srch_rslt_cbk.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/rslts/Srch_rslt_cbk.java @@ -15,7 +15,7 @@ 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.addons.apps.searchs.searchers.rslts; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; import gplx.xowa.addons.apps.searchs.*; import gplx.xowa.addons.apps.searchs.searchers.*; +package gplx.xowa.addons.wikis.searchs.searchers.rslts; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.searchs.*; import gplx.xowa.addons.wikis.searchs.searchers.*; public interface Srch_rslt_cbk { void On_rslts_found(Srch_search_qry qry, Srch_rslt_list rslts_list, int rslts_bgn, int rslts_end); void On_cancel(); diff --git a/400_xowa/src/gplx/xowa/addons/apps/searchs/searchers/rslts/Srch_rslt_cbk_.java b/400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/rslts/Srch_rslt_cbk_.java similarity index 80% rename from 400_xowa/src/gplx/xowa/addons/apps/searchs/searchers/rslts/Srch_rslt_cbk_.java rename to 400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/rslts/Srch_rslt_cbk_.java index 45d593593..80ea34837 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/searchs/searchers/rslts/Srch_rslt_cbk_.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/rslts/Srch_rslt_cbk_.java @@ -15,7 +15,7 @@ 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.addons.apps.searchs.searchers.rslts; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; import gplx.xowa.addons.apps.searchs.*; import gplx.xowa.addons.apps.searchs.searchers.*; +package gplx.xowa.addons.wikis.searchs.searchers.rslts; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.searchs.*; import gplx.xowa.addons.wikis.searchs.searchers.*; public class Srch_rslt_cbk_ { public static final Srch_rslt_cbk Noop = new Srch_rslt_cbk__noop(); } diff --git a/400_xowa/src/gplx/xowa/addons/apps/searchs/searchers/rslts/Srch_rslt_list.java b/400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/rslts/Srch_rslt_list.java similarity index 85% rename from 400_xowa/src/gplx/xowa/addons/apps/searchs/searchers/rslts/Srch_rslt_list.java rename to 400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/rslts/Srch_rslt_list.java index 7af34ea5b..b230820d8 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/searchs/searchers/rslts/Srch_rslt_list.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/rslts/Srch_rslt_list.java @@ -15,7 +15,8 @@ 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.addons.apps.searchs.searchers.rslts; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; import gplx.xowa.addons.apps.searchs.*; import gplx.xowa.addons.apps.searchs.searchers.*; +package gplx.xowa.addons.wikis.searchs.searchers.rslts; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.searchs.*; import gplx.xowa.addons.wikis.searchs.searchers.*; +import gplx.core.lists.hashs.*; public class Srch_rslt_list { private final Ordered_hash key_hash = Ordered_hash_.New_bry(); private final Hash_adp__int id_hash = new Hash_adp__int(); @@ -31,8 +32,8 @@ public class Srch_rslt_list { public void Clear() {key_hash.Clear(); id_hash.Clear();} public void Add(Srch_rslt_row row) {key_hash.Add(row.Key, row);} public void Sort() {key_hash.Sort_by(Srch_rslt_row_sorter.Score_dsc);} - public boolean Ids__has(int id) {return (Srch_rslt_row)id_hash.Get_by(id) != null;} - public Srch_rslt_row Ids__get(int id) {return (Srch_rslt_row)id_hash.Get_by(id);} + public boolean Ids__has(int id) {return (Srch_rslt_row)id_hash.Get_by_or_null(id) != null;} + public Srch_rslt_row Ids__get_or_null(int id) {return (Srch_rslt_row)id_hash.Get_by_or_null(id);} public void Ids__add(int id, Srch_rslt_row r) {id_hash.Add(id, r);} public void Merge(Srch_rslt_list list) { list.Sort(); diff --git a/400_xowa/src/gplx/xowa/addons/apps/searchs/searchers/rslts/Srch_rslt_list_.java b/400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/rslts/Srch_rslt_list_.java similarity index 89% rename from 400_xowa/src/gplx/xowa/addons/apps/searchs/searchers/rslts/Srch_rslt_list_.java rename to 400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/rslts/Srch_rslt_list_.java index 819a20ecf..954805c40 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/searchs/searchers/rslts/Srch_rslt_list_.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/rslts/Srch_rslt_list_.java @@ -15,7 +15,7 @@ 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.addons.apps.searchs.searchers.rslts; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; import gplx.xowa.addons.apps.searchs.*; import gplx.xowa.addons.apps.searchs.searchers.*; +package gplx.xowa.addons.wikis.searchs.searchers.rslts; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.searchs.*; import gplx.xowa.addons.wikis.searchs.searchers.*; import gplx.xowa.wikis.data.tbls.*; public class Srch_rslt_list_ { public static boolean Add_if_new(Srch_search_ctx ctx, Srch_rslt_list rslts, Srch_rslt_row row) { @@ -41,7 +41,7 @@ public class Srch_rslt_list_ { if (trg_id == Srch_rslt_row.Page_redirect_id_null) { // src_page is not redirect return false; } else { // src_page is redirect - Srch_rslt_row trg_row = rslts.Ids__get(trg_id); + Srch_rslt_row trg_row = rslts.Ids__get_or_null(trg_id); if (trg_row == null) { // trg_page has not been seen before rslts.Ids__add(trg_id, cur_row); // add trg_id to known ids; handles double-redirects; 1 -> 2 -> 3; return false; diff --git a/400_xowa/src/gplx/xowa/addons/apps/searchs/searchers/rslts/Srch_rslt_row.java b/400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/rslts/Srch_rslt_row.java similarity index 90% rename from 400_xowa/src/gplx/xowa/addons/apps/searchs/searchers/rslts/Srch_rslt_row.java rename to 400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/rslts/Srch_rslt_row.java index fbab1a124..28bc43c5d 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/searchs/searchers/rslts/Srch_rslt_row.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/rslts/Srch_rslt_row.java @@ -15,7 +15,7 @@ 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.addons.apps.searchs.searchers.rslts; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; import gplx.xowa.addons.apps.searchs.*; import gplx.xowa.addons.apps.searchs.searchers.*; +package gplx.xowa.addons.wikis.searchs.searchers.rslts; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.searchs.*; import gplx.xowa.addons.wikis.searchs.searchers.*; public class Srch_rslt_row { public Srch_rslt_row(byte[] key, byte[] wiki_bry, Xoa_ttl page_ttl, int page_ns, byte[] page_ttl_wo_ns, int page_id, int page_len, int page_score, int page_redirect_id) { this.Key = key; diff --git a/400_xowa/src/gplx/xowa/addons/apps/searchs/searchers/slabs/Srch_slab_itm.java b/400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/slabs/Srch_slab_itm.java similarity index 80% rename from 400_xowa/src/gplx/xowa/addons/apps/searchs/searchers/slabs/Srch_slab_itm.java rename to 400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/slabs/Srch_slab_itm.java index 6d3c7c0d7..94789e7cf 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/searchs/searchers/slabs/Srch_slab_itm.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/slabs/Srch_slab_itm.java @@ -15,7 +15,7 @@ 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.addons.apps.searchs.searchers.slabs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; import gplx.xowa.addons.apps.searchs.*; import gplx.xowa.addons.apps.searchs.searchers.*; +package gplx.xowa.addons.wikis.searchs.searchers.slabs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.searchs.*; import gplx.xowa.addons.wikis.searchs.searchers.*; public class Srch_slab_itm { public Srch_slab_itm(byte[] wiki, int bgn, int end) {this.wiki = wiki; this.bgn = bgn; this.end = end;} public byte[] Wiki() {return wiki;} private final byte[] wiki; diff --git a/400_xowa/src/gplx/xowa/addons/apps/searchs/searchers/slabs/Srch_slab_itm_parser.java b/400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/slabs/Srch_slab_itm_parser.java similarity index 80% rename from 400_xowa/src/gplx/xowa/addons/apps/searchs/searchers/slabs/Srch_slab_itm_parser.java rename to 400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/slabs/Srch_slab_itm_parser.java index 45d4684eb..e64a2f316 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/searchs/searchers/slabs/Srch_slab_itm_parser.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/slabs/Srch_slab_itm_parser.java @@ -15,10 +15,10 @@ 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.addons.apps.searchs.searchers.slabs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; import gplx.xowa.addons.apps.searchs.*; import gplx.xowa.addons.apps.searchs.searchers.*; +package gplx.xowa.addons.wikis.searchs.searchers.slabs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.searchs.*; import gplx.xowa.addons.wikis.searchs.searchers.*; import gplx.core.brys.*; public class Srch_slab_itm_parser { - private final List_adp itm_list = List_adp_.new_(); + private final List_adp itm_list = List_adp_.New(); private final Bry_rdr rdr = new Bry_rdr(); public Srch_slab_itm[] Parse(byte[] raw) { // EX: en.wikipedia.org|41|60;en.wiktionary.org|21|40; rdr.Init_by_src(raw); diff --git a/400_xowa/src/gplx/xowa/addons/apps/searchs/searchers/wkrs/Srch_link_wkr.java b/400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/wkrs/Srch_link_wkr.java similarity index 88% rename from 400_xowa/src/gplx/xowa/addons/apps/searchs/searchers/wkrs/Srch_link_wkr.java rename to 400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/wkrs/Srch_link_wkr.java index 630013ba0..5886f57f7 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/searchs/searchers/wkrs/Srch_link_wkr.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/wkrs/Srch_link_wkr.java @@ -15,10 +15,10 @@ 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.addons.apps.searchs.searchers.wkrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; import gplx.xowa.addons.apps.searchs.*; import gplx.xowa.addons.apps.searchs.searchers.*; +package gplx.xowa.addons.wikis.searchs.searchers.wkrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.searchs.*; import gplx.xowa.addons.wikis.searchs.searchers.*; import gplx.dbs.*; import gplx.xowa.wikis.data.tbls.*; -import gplx.xowa.addons.apps.searchs.dbs.*; import gplx.xowa.addons.apps.searchs.searchers.crts.*; import gplx.xowa.addons.apps.searchs.searchers.rslts.*; import gplx.dbs.percentiles.*; -import gplx.xowa.langs.cases.*; import gplx.xowa.addons.apps.searchs.parsers.*; +import gplx.xowa.addons.wikis.searchs.dbs.*; import gplx.xowa.addons.wikis.searchs.searchers.crts.*; import gplx.xowa.addons.wikis.searchs.searchers.rslts.*; import gplx.dbs.percentiles.*; +import gplx.xowa.langs.cases.*; import gplx.xowa.addons.wikis.searchs.parsers.*; public class Srch_link_wkr extends Percentile_select_base { private final Srch_link_wkr_sql sql_mkr = new Srch_link_wkr_sql(); private final Db_attach_mgr attach_mgr = new Db_attach_mgr(); @@ -52,7 +52,7 @@ public class Srch_link_wkr extends Percentile_select_base { this.link_tbl_idx = 0; this.link_tbl_nth = ctx.Tbl__link__ary.length - 1; sql_root = Srch_link_wkr_.Find_sql_root(ctx); - attach_mgr.Init(new Db_attach_itm("page_db", ctx.Db__core.Conn()), new Db_attach_itm("word_db", ctx.Tbl__word.conn)); + attach_mgr.Conn_others_(new Db_attach_itm("page_db", ctx.Db__core.Conn()), new Db_attach_itm("word_db", ctx.Tbl__word.conn)); super.Select(); } finally { @@ -69,7 +69,7 @@ public class Srch_link_wkr extends Percentile_select_base { @Override protected Db_rdr Rdr__init() { try { Db_conn link_tbl_conn = ctx.Tbl__link__ary[link_tbl_idx].conn; - attach_mgr.Main_conn_(link_tbl_conn); + attach_mgr.Conn_main_(link_tbl_conn); sql_mkr.Init(ctx, attach_mgr, sql_root); if (stmt == null) stmt = sql_mkr.Make(ctx, attach_mgr, link_tbl_conn); sql_mkr.Fill(stmt); diff --git a/400_xowa/src/gplx/xowa/addons/apps/searchs/searchers/wkrs/Srch_link_wkr_.java b/400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/wkrs/Srch_link_wkr_.java similarity index 89% rename from 400_xowa/src/gplx/xowa/addons/apps/searchs/searchers/wkrs/Srch_link_wkr_.java rename to 400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/wkrs/Srch_link_wkr_.java index 85eda7c6c..bf7491840 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/searchs/searchers/wkrs/Srch_link_wkr_.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/wkrs/Srch_link_wkr_.java @@ -15,9 +15,9 @@ 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.addons.apps.searchs.searchers.wkrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; import gplx.xowa.addons.apps.searchs.*; import gplx.xowa.addons.apps.searchs.searchers.*; -import gplx.xowa.addons.apps.searchs.parsers.*; import gplx.xowa.langs.cases.*; -import gplx.xowa.addons.apps.searchs.dbs.*; import gplx.xowa.addons.apps.searchs.searchers.crts.*; +package gplx.xowa.addons.wikis.searchs.searchers.wkrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.searchs.*; import gplx.xowa.addons.wikis.searchs.searchers.*; +import gplx.xowa.addons.wikis.searchs.parsers.*; import gplx.xowa.langs.cases.*; +import gplx.xowa.addons.wikis.searchs.dbs.*; import gplx.xowa.addons.wikis.searchs.searchers.crts.*; class Srch_link_wkr_ { private static final Srch_word_count_wkr word_count_wkr = new Srch_word_count_wkr(); public static Srch_crt_itm Find_sql_root(Srch_search_ctx ctx) { @@ -57,8 +57,8 @@ class Srch_link_wkr_ { return rv; } private static Srch_word_row[] Find_sql_root__quoted(Srch_search_ctx ctx, byte[] raw) { - List_adp tmp_list = List_adp_.new_(); - byte[][] ary = Bry_split_.Split(raw, Byte_ascii.Space, Bool_.Y); // TODO: splitting by space is simplistic; should call Srch2_split_words + List_adp tmp_list = List_adp_.New(); + byte[][] ary = Bry_split_.Split(raw, Byte_ascii.Space, Bool_.Y); // TODO_OLD: splitting by space is simplistic; should call Srch2_split_words int words_len = ary.length; for (int i = 0; i < words_len; ++i) { byte[] word = ary[i]; diff --git a/400_xowa/src/gplx/xowa/addons/apps/searchs/searchers/wkrs/Srch_link_wkr_sql.java b/400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/wkrs/Srch_link_wkr_sql.java similarity index 92% rename from 400_xowa/src/gplx/xowa/addons/apps/searchs/searchers/wkrs/Srch_link_wkr_sql.java rename to 400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/wkrs/Srch_link_wkr_sql.java index a1b1bc26b..48004f09e 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/searchs/searchers/wkrs/Srch_link_wkr_sql.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/wkrs/Srch_link_wkr_sql.java @@ -15,9 +15,9 @@ 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.addons.apps.searchs.searchers.wkrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; import gplx.xowa.addons.apps.searchs.*; import gplx.xowa.addons.apps.searchs.searchers.*; +package gplx.xowa.addons.wikis.searchs.searchers.wkrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.searchs.*; import gplx.xowa.addons.wikis.searchs.searchers.*; import gplx.dbs.*; import gplx.dbs.stmts.*; import gplx.xowa.wikis.data.tbls.*; -import gplx.xowa.addons.apps.searchs.searchers.crts.*; import gplx.xowa.addons.apps.searchs.dbs.*; import gplx.xowa.addons.apps.searchs.searchers.rslts.*; +import gplx.xowa.addons.wikis.searchs.searchers.crts.*; import gplx.xowa.addons.wikis.searchs.dbs.*; import gplx.xowa.addons.wikis.searchs.searchers.rslts.*; public class Srch_link_wkr_sql { private final Db_stmt_mgr stmt_mgr = new Db_stmt_mgr(); public void Clear() {stmt_mgr.Clear();} diff --git a/400_xowa/src/gplx/xowa/addons/apps/searchs/searchers/wkrs/Srch_link_wkr_sql_tst.java b/400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/wkrs/Srch_link_wkr_sql_tst.java similarity index 75% rename from 400_xowa/src/gplx/xowa/addons/apps/searchs/searchers/wkrs/Srch_link_wkr_sql_tst.java rename to 400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/wkrs/Srch_link_wkr_sql_tst.java index 2a41c7f35..6b714b2f9 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/searchs/searchers/wkrs/Srch_link_wkr_sql_tst.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/wkrs/Srch_link_wkr_sql_tst.java @@ -15,8 +15,8 @@ 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.addons.apps.searchs.searchers.wkrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; import gplx.xowa.addons.apps.searchs.*; import gplx.xowa.addons.apps.searchs.searchers.*; -import org.junit.*; import gplx.xowa.addons.apps.searchs.parsers.*; import gplx.xowa.addons.apps.searchs.searchers.crts.*; import gplx.xowa.addons.apps.searchs.searchers.crts.visitors.*; +package gplx.xowa.addons.wikis.searchs.searchers.wkrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.searchs.*; import gplx.xowa.addons.wikis.searchs.searchers.*; +import org.junit.*; import gplx.xowa.addons.wikis.searchs.parsers.*; import gplx.xowa.addons.wikis.searchs.searchers.crts.*; import gplx.xowa.addons.wikis.searchs.searchers.crts.visitors.*; public class Srch_link_wkr_sql_tst { private final Srch_link_wkr_sql_fxt fxt = new Srch_link_wkr_sql_fxt(); @Test public void Rng() { diff --git a/400_xowa/src/gplx/xowa/addons/apps/searchs/searchers/wkrs/Srch_page_tbl_wkr.java b/400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/wkrs/Srch_page_tbl_wkr.java similarity index 85% rename from 400_xowa/src/gplx/xowa/addons/apps/searchs/searchers/wkrs/Srch_page_tbl_wkr.java rename to 400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/wkrs/Srch_page_tbl_wkr.java index 1d54e5290..93093d1a3 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/searchs/searchers/wkrs/Srch_page_tbl_wkr.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/wkrs/Srch_page_tbl_wkr.java @@ -15,13 +15,13 @@ 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.addons.apps.searchs.searchers.wkrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; import gplx.xowa.addons.apps.searchs.*; import gplx.xowa.addons.apps.searchs.searchers.*; +package gplx.xowa.addons.wikis.searchs.searchers.wkrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.searchs.*; import gplx.xowa.addons.wikis.searchs.searchers.*; import gplx.xowa.wikis.data.tbls.*; -import gplx.xowa.addons.apps.searchs.searchers.rslts.*; -import gplx.xowa.addons.apps.searchs.searchers.crts.*; +import gplx.xowa.addons.wikis.searchs.searchers.rslts.*; +import gplx.xowa.addons.wikis.searchs.searchers.crts.*; public class Srch_page_tbl_wkr { private final Xowd_page_itm tmp_page_row = new Xowd_page_itm(); - private final Bry_bfr tmp_bfr = Bry_bfr.new_(); + private final Bry_bfr tmp_bfr = Bry_bfr_.New(); public void Search(Srch_search_ctx ctx, Srch_rslt_cbk cbk) { byte[] search_raw = To_bry_or_null(tmp_bfr, ctx.Scanner_syms.Wild(), ctx.Crt_mgr); // build up search String but handle escapes "\+" -> "+" if (search_raw == null) return; // search-term has not or symbols; EX: "earth -history"; "(earth & history)" diff --git a/400_xowa/src/gplx/xowa/addons/apps/searchs/searchers/wkrs/Srch_page_tbl_wkr_tst.java b/400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/wkrs/Srch_page_tbl_wkr_tst.java similarity index 81% rename from 400_xowa/src/gplx/xowa/addons/apps/searchs/searchers/wkrs/Srch_page_tbl_wkr_tst.java rename to 400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/wkrs/Srch_page_tbl_wkr_tst.java index 2c6c39299..b82481640 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/searchs/searchers/wkrs/Srch_page_tbl_wkr_tst.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/wkrs/Srch_page_tbl_wkr_tst.java @@ -15,8 +15,8 @@ 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.addons.apps.searchs.searchers.wkrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; import gplx.xowa.addons.apps.searchs.*; import gplx.xowa.addons.apps.searchs.searchers.*; -import org.junit.*; import gplx.xowa.addons.apps.searchs.parsers.*; import gplx.xowa.addons.apps.searchs.searchers.crts.*; import gplx.xowa.addons.apps.searchs.searchers.crts.visitors.*; +package gplx.xowa.addons.wikis.searchs.searchers.wkrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.searchs.*; import gplx.xowa.addons.wikis.searchs.searchers.*; +import org.junit.*; import gplx.xowa.addons.wikis.searchs.parsers.*; import gplx.xowa.addons.wikis.searchs.searchers.crts.*; import gplx.xowa.addons.wikis.searchs.searchers.crts.visitors.*; public class Srch_page_tbl_wkr_tst { private final Srch_page_tbl_wkr_fxt fxt = new Srch_page_tbl_wkr_fxt(); @Test public void Word__one() {fxt.Test__to_bry_or_null("a" , "a");} @@ -33,7 +33,7 @@ public class Srch_page_tbl_wkr_tst { } class Srch_page_tbl_wkr_fxt { private final Srch_crt_parser crt_parser; - private final Bry_bfr tmp_bfr = Bry_bfr.new_(); + private final Bry_bfr tmp_bfr = Bry_bfr_.New(); public Srch_page_tbl_wkr_fxt() { crt_parser = new Srch_crt_parser(Srch_crt_scanner_syms.Dflt); Srch_text_parser text_parser = new Srch_text_parser(); diff --git a/400_xowa/src/gplx/xowa/addons/apps/searchs/searchers/wkrs/Srch_word_count_wkr.java b/400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/wkrs/Srch_word_count_wkr.java similarity index 89% rename from 400_xowa/src/gplx/xowa/addons/apps/searchs/searchers/wkrs/Srch_word_count_wkr.java rename to 400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/wkrs/Srch_word_count_wkr.java index 579f9ea5a..fbb24e5fa 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/searchs/searchers/wkrs/Srch_word_count_wkr.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/wkrs/Srch_word_count_wkr.java @@ -15,9 +15,9 @@ 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.addons.apps.searchs.searchers.wkrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; import gplx.xowa.addons.apps.searchs.*; import gplx.xowa.addons.apps.searchs.searchers.*; +package gplx.xowa.addons.wikis.searchs.searchers.wkrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.searchs.*; import gplx.xowa.addons.wikis.searchs.searchers.*; import gplx.dbs.*; import gplx.dbs.stmts.*; import gplx.dbs.percentiles.*; -import gplx.xowa.addons.apps.searchs.dbs.*; import gplx.xowa.addons.apps.searchs.searchers.crts.*; +import gplx.xowa.addons.wikis.searchs.dbs.*; import gplx.xowa.addons.wikis.searchs.searchers.crts.*; class Srch_word_count_wkr extends Percentile_select_base { private Srch_word_tbl word_tbl; private Srch_db_cfg db_cfg; private Srch_crt_itm sub; diff --git a/400_xowa/src/gplx/xowa/addons/apps/searchs/specials/Srch_qarg_mgr.java b/400_xowa/src/gplx/xowa/addons/wikis/searchs/specials/Srch_qarg_mgr.java similarity index 88% rename from 400_xowa/src/gplx/xowa/addons/apps/searchs/specials/Srch_qarg_mgr.java rename to 400_xowa/src/gplx/xowa/addons/wikis/searchs/specials/Srch_qarg_mgr.java index 24dd97423..0a8fb1cc9 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/searchs/specials/Srch_qarg_mgr.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/searchs/specials/Srch_qarg_mgr.java @@ -15,9 +15,9 @@ 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.addons.apps.searchs.specials; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; import gplx.xowa.addons.apps.searchs.*; -import gplx.core.net.*; -import gplx.xowa.addons.apps.searchs.searchers.*; import gplx.xowa.addons.apps.searchs.searchers.rslts.*; +package gplx.xowa.addons.wikis.searchs.specials; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.searchs.*; +import gplx.core.net.*; import gplx.core.net.qargs.*; +import gplx.xowa.addons.wikis.searchs.searchers.*; import gplx.xowa.addons.wikis.searchs.searchers.rslts.*; public class Srch_qarg_mgr { public Srch_qarg_mgr(Srch_ns_mgr ns_mgr) {this.ns_mgr = ns_mgr;} public Srch_ns_mgr Ns_mgr() {return ns_mgr;} private final Srch_ns_mgr ns_mgr; diff --git a/400_xowa/src/gplx/xowa/addons/apps/searchs/specials/Srch_special_cmd.java b/400_xowa/src/gplx/xowa/addons/wikis/searchs/specials/Srch_special_cmd.java similarity index 85% rename from 400_xowa/src/gplx/xowa/addons/apps/searchs/specials/Srch_special_cmd.java rename to 400_xowa/src/gplx/xowa/addons/wikis/searchs/specials/Srch_special_cmd.java index 044988e75..65899bb3e 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/searchs/specials/Srch_special_cmd.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/searchs/specials/Srch_special_cmd.java @@ -15,11 +15,11 @@ 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.addons.apps.searchs.specials; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; import gplx.xowa.addons.apps.searchs.*; +package gplx.xowa.addons.wikis.searchs.specials; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.searchs.*; import gplx.core.threads.*; import gplx.xowa.files.gui.*; import gplx.xowa.guis.views.*; -import gplx.xowa.addons.apps.searchs.specials.htmls.*; import gplx.xowa.addons.apps.searchs.searchers.*; import gplx.xowa.addons.apps.searchs.searchers.rslts.*; -public class Srch_special_cmd implements GfoInvkAble, Srch_rslt_cbk, Xog_tab_close_lnr { +import gplx.xowa.addons.wikis.searchs.specials.htmls.*; import gplx.xowa.addons.wikis.searchs.searchers.*; import gplx.xowa.addons.wikis.searchs.searchers.rslts.*; +public class Srch_special_cmd implements Gfo_invk, Srch_rslt_cbk, Xog_tab_close_lnr { private final Srch_special_searcher mgr; private final Srch_search_qry qry; public final Xow_wiki wiki; private final Xog_tab_close_mgr tab_close_mgr; private final Xog_js_wkr js_wkr; private Srch_html_row_wkr html_row_wkr; private final boolean async; @@ -37,7 +37,7 @@ public class Srch_special_cmd implements GfoInvkAble, Srch_rslt_cbk, Xog_tab_clo if (async) { // NOTE: async useful with multiple wikis; allows parallel searches; Srch_html_row_bldr html_row_bldr = new Srch_html_row_bldr(new gplx.xowa.htmls.core.htmls.utls.Xoh_lnki_bldr(wiki.App(), wiki.App().Html__href_wtr())); html_row_wkr = new Srch_html_row_wkr(html_row_bldr, js_wkr, qry.Slab_end - qry.Slab_bgn, wiki.Domain_bry()); - Thread_adp_.invk_(gplx.xowa.apps.Xoa_thread_.Key_special_search_db, this, Invk_search_db).Start(); + Thread_adp_.Start_by_key(gplx.xowa.apps.Xoa_thread_.Key_special_search_db, this, Invk_search_db); } else Search_db(); @@ -57,7 +57,7 @@ public class Srch_special_cmd implements GfoInvkAble, Srch_rslt_cbk, Xog_tab_clo } Xoa_app_.Usr_dlg().Prog_many("", "", ""); } - private void Hide_cancel_btn() {Thread_adp_.invk_(gplx.xowa.apps.Xoa_thread_.Key_special_search_cancel, this, Invk_hide_cancel).Start();} + private void Hide_cancel_btn() {Thread_adp_.Start_by_key(gplx.xowa.apps.Xoa_thread_.Key_special_search_cancel, this, Invk_hide_cancel);} private void Hide_cancel_btn_async() {js_wkr.Html_atr_set("xowa_cancel_" + wiki.Domain_str(), "style", "display:none;");} public void On_rslts_found(Srch_search_qry qry, Srch_rslt_list rslts_list, int rslts_bgn, int rslts_end) { if (rslts_list.Rslts_are_first) { @@ -86,7 +86,7 @@ public class Srch_special_cmd implements GfoInvkAble, Srch_rslt_cbk, Xog_tab_clo public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_search_db)) Search_db(); else if (ctx.Match(k, Invk_hide_cancel)) Hide_cancel_btn_async(); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String Invk_search_db = "search_db", Invk_hide_cancel = "hide_cancel"; diff --git a/400_xowa/src/gplx/xowa/addons/apps/searchs/specials/Srch_special_page.java b/400_xowa/src/gplx/xowa/addons/wikis/searchs/specials/Srch_special_page.java similarity index 81% rename from 400_xowa/src/gplx/xowa/addons/apps/searchs/specials/Srch_special_page.java rename to 400_xowa/src/gplx/xowa/addons/wikis/searchs/specials/Srch_special_page.java index b56a6d433..11a9db306 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/searchs/specials/Srch_special_page.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/searchs/specials/Srch_special_page.java @@ -15,25 +15,25 @@ 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.addons.apps.searchs.specials; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; import gplx.xowa.addons.apps.searchs.*; +package gplx.xowa.addons.wikis.searchs.specials; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.searchs.*; import gplx.core.primitives.*; import gplx.xowa.apps.apis.xowa.specials.*; import gplx.xowa.wikis.domains.*; import gplx.xowa.wikis.domains.crts.*; -import gplx.xowa.specials.*; import gplx.xowa.addons.apps.searchs.searchers.*; import gplx.xowa.addons.apps.searchs.searchers.cbks.*; -public class Srch_special_page implements Xows_page, GfoInvkAble, GfoEvObj { +import gplx.xowa.specials.*; import gplx.xowa.addons.wikis.searchs.searchers.*; import gplx.xowa.addons.wikis.searchs.searchers.cbks.*; +public class Srch_special_page implements Xow_special_page, Gfo_invk, Gfo_evt_itm { private final Xoae_app app; private final Xow_domain_itm wiki_domain; private final Xoapi_search search_api; private final Srch_special_searcher search_mgr; private final Srch_qarg_mgr qargs_mgr; private Xow_domain_itm[] search_domain_ary; public Srch_special_page(Xowe_wiki wiki) { - this.ev_mgr = GfoEvMgr.new_(this); + this.ev_mgr = new Gfo_evt_mgr(this); this.app = wiki.Appe(); this.wiki_domain = wiki.Domain_itm(); this.search_mgr = new Srch_special_searcher(wiki.Appe().Wiki_mgr()); this.search_api = wiki.Appe().Api_root().Special().Search(); this.qargs_mgr = new Srch_qarg_mgr(app.Gui_mgr().Search_cfg().Ns_mgr()); - GfoEvMgr_.SubSame_many(search_api, this, Xoapi_search.Evt_multi_wikis_changed, Xoapi_search.Evt_multi_wikis_changed); + Gfo_evt_mgr_.Sub_same_many(search_api, this, Xoapi_search.Evt_multi_wikis_changed, Xoapi_search.Evt_multi_wikis_changed); } - public GfoEvMgr EvMgr() {return ev_mgr;} private final GfoEvMgr ev_mgr; - public Xows_special_meta Special__meta() {return Xows_special_meta_.Itm__search;} + public Gfo_evt_mgr Evt_mgr() {return ev_mgr;} private final Gfo_evt_mgr ev_mgr; + public Xow_special_meta Special__meta() {return Xow_special_meta_.Itm__search;} public void Special__gen(Xow_wiki wikii, Xoa_page pagei, Xoa_url url, Xoa_ttl ttl) { Xowe_wiki wiki = (Xowe_wiki)wikii; Xoae_page page = (Xoae_page)pagei; if (search_domain_ary == null) Multi_wikis_changed(); @@ -63,8 +63,8 @@ public class Srch_special_page implements Xows_page, GfoInvkAble, GfoEvObj { Xoa_ttl search_ttl = Xoa_ttl.parse(wiki, search_raw); Xoae_page search_page = page; if ( !fulltext_invoked - && !Bry_.Eq(search_raw, Xows_special_meta_.Itm__search.Ttl_bry())) // do not lookup self else stack overflow; happens when going directly to Special:Search (from history) - search_page = wiki.Data_mgr().Get_page(search_ttl, false); // try to find page; EX:Special:Search?search=Earth -> en.w:Earth; needed for search suggest + && !Bry_.Eq(search_raw, Xow_special_meta_.Itm__search.Ttl_bry())) // do not lookup self else stack overflow; happens when going directly to Special:Search (from history) + search_page = wiki.Data_mgr().Load_page_by_ttl(search_ttl); // try to find page; EX:Special:Search?search=Earth -> en.w:Earth; needed for search suggest // page not found, or explicit_search invoked if (search_page.Missing() || fulltext_invoked) { @@ -102,14 +102,14 @@ public class Srch_special_page implements Xows_page, GfoInvkAble, GfoEvObj { public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Xoapi_search.Evt_multi_wikis_changed)) Multi_wikis_changed(); else if (ctx.Match(k, Xoapi_search.Evt_multi_sorts_changed)) Multi_sorts_changed(); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } public static final byte Match_tid_all = 0, Match_tid_bgn = 1; public static final byte Version_null = 0, Version_1 = 1, Version_2 = 2; private static final byte[] Qarg__fulltext = Bry_.new_a7("fulltext"), Qarg__fulltext__y = Bry_.new_a7("y"); private static Xow_domain_itm[] Get_by_crt(gplx.xowa.wikis.xwikis.Xow_xwiki_mgr xwiki_mgr, Xow_domain_itm cur, gplx.xowa.wikis.domains.crts.Xow_domain_crt_itm crt) { - List_adp rv = List_adp_.new_(); + List_adp rv = List_adp_.New(); int len = xwiki_mgr.Len(); for (int i = 0; i < len; ++i) { gplx.xowa.wikis.xwikis.Xow_xwiki_itm xwiki = xwiki_mgr.Get_at(i); @@ -122,5 +122,5 @@ public class Srch_special_page implements Xows_page, GfoInvkAble, GfoEvObj { return (Xow_domain_itm[])rv.To_ary_and_clear(Xow_domain_itm.class); } - public Xows_page Special__clone() {return this;} + public Xow_special_page Special__clone() {return this;} } diff --git a/400_xowa/src/gplx/xowa/addons/apps/searchs/specials/Srch_special_searcher.java b/400_xowa/src/gplx/xowa/addons/wikis/searchs/specials/Srch_special_searcher.java similarity index 60% rename from 400_xowa/src/gplx/xowa/addons/apps/searchs/specials/Srch_special_searcher.java rename to 400_xowa/src/gplx/xowa/addons/wikis/searchs/specials/Srch_special_searcher.java index ea2281e1d..6f0876421 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/searchs/specials/Srch_special_searcher.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/searchs/specials/Srch_special_searcher.java @@ -15,27 +15,37 @@ 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.addons.apps.searchs.specials; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; import gplx.xowa.addons.apps.searchs.*; +package gplx.xowa.addons.wikis.searchs.specials; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.searchs.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.domains.*; -import gplx.xowa.addons.apps.searchs.searchers.*; import gplx.xowa.addons.apps.searchs.specials.htmls.*; import gplx.xowa.addons.apps.searchs.searchers.rslts.*; +import gplx.xowa.addons.wikis.searchs.searchers.*; import gplx.xowa.addons.wikis.searchs.specials.htmls.*; import gplx.xowa.addons.wikis.searchs.searchers.rslts.*; public class Srch_special_searcher { private final Xoae_wiki_mgr wiki_mgr; private final Ordered_hash cancel_hash = Ordered_hash_.New_bry(); private final Srch_html_page_bldr html_page_bldr = new Srch_html_page_bldr(); public Srch_special_searcher(Xoae_wiki_mgr wiki_mgr) {this.wiki_mgr = wiki_mgr;} public void Search(Xow_wiki search_wiki, Xoae_page page, boolean search_is_async, Xow_domain_itm[] domains_ary, Srch_search_qry qry) { - Bry_bfr tmp_bfr = Bry_bfr.new_(); + Bry_bfr tmp_bfr = Bry_bfr_.New(); html_page_bldr.Init_by_wiki(search_wiki, search_wiki.Lang().Num_mgr(), qry); + cancel_hash.Clear(); int domains_len = domains_ary.length; for (int i = 0; i < domains_len; ++i) { Xow_domain_itm domain = domains_ary[i]; try { Xowe_wiki wiki = wiki_mgr.Get_by_or_make(domain.Domain_bry()); wiki.Init_assert(); byte[] key = gplx.langs.htmls.Gfh_utl.Encode_id_as_bry(Bry_.Add(qry.Phrase.Orig, Byte_ascii.Pipe_bry, qry.Ns_mgr.To_hash_key(), Byte_ascii.Pipe_bry, wiki.Domain_bry())); - Srch_special_cmd cmd = new Srch_special_cmd(this, qry, wiki, page.Tab_data().Close_mgr(), page.Tab_data().Tab().Html_itm(), key, search_is_async); - cancel_hash.Add(key, cmd); - cmd.Search(); // do search; note if async, will return immediately - html_page_bldr.Bld_tbl(tmp_bfr, new Srch_rslt_list(), key, cmd.wiki.Domain_bry(), search_is_async, qry.Slab_bgn, qry.Slab_end); + Srch_rslt_list rslt_list; + if (wiki.App().Mode().Tid_is_http()) { + Srch_rslt_cbk__synchronous cbk_synchronous = new Srch_rslt_cbk__synchronous(); + Srch_search_addon.Get(wiki).Search(qry, cbk_synchronous); + rslt_list = cbk_synchronous.Rslts(); + } + else { + Srch_special_cmd cmd = new Srch_special_cmd(this, qry, wiki, page.Tab_data().Close_mgr(), page.Tab_data().Tab().Html_itm(), key, search_is_async); + cancel_hash.Add(key, cmd); + cmd.Search(); // do search; will return immediately b/c async + rslt_list = new Srch_rslt_list(); // NOTE: create an empty rslt which will be populated by async calls + } + html_page_bldr.Bld_tbl(tmp_bfr, rslt_list, key, wiki.Domain_bry(), search_is_async, qry.Slab_bgn, qry.Slab_end); } catch (Exception e) {Xoa_app_.Usr_dlg().Warn_many("", "", "search:wiki failed; wiki=~{0} err=~{1}", domain.Domain_str(), Err_.Message_lang(e));} // handle bad wikis, like "en.wikipedia.org-old"; DATE:2015-04-24 } @@ -51,3 +61,10 @@ public class Srch_special_searcher { cancel_hash.Del(cmd.key); } } +class Srch_rslt_cbk__synchronous implements Srch_rslt_cbk { + public Srch_rslt_list Rslts() {return rslts;} private Srch_rslt_list rslts; + public void On_rslts_found(Srch_search_qry qry, Srch_rslt_list rslts_list, int rslts_bgn, int rslts_end) { + this.rslts = rslts_list; // just assign it + } + public void On_cancel() {} // synchronous cannot be canceled +} diff --git a/400_xowa/src/gplx/xowa/addons/apps/searchs/specials/Srch_special_searcher_tst.java b/400_xowa/src/gplx/xowa/addons/wikis/searchs/specials/Srch_special_searcher_tst.java similarity index 96% rename from 400_xowa/src/gplx/xowa/addons/apps/searchs/specials/Srch_special_searcher_tst.java rename to 400_xowa/src/gplx/xowa/addons/wikis/searchs/specials/Srch_special_searcher_tst.java index 8b27560be..0de492ef9 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/searchs/specials/Srch_special_searcher_tst.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/searchs/specials/Srch_special_searcher_tst.java @@ -15,7 +15,7 @@ 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 . */ -//namespace gplx.xowa.addons.apps.searchs.v1s { +//namespace gplx.xowa.addons.wikis.searchs.v1s { // import org.junit.*; using gplx.xowa.wikis.tdbs; using gplx.xowa.wikis.data.tbls; // public class Xosrh_core_tst { // @Before public void Init() {fxt.Clear();} private Xos_search_mgr_fxt fxt = new Xos_search_mgr_fxt(); @@ -95,7 +95,7 @@ along with this program. If not, see . // } // } // class Xos_search_mgr_fxt { -// Xoae_app app; Xowe_wiki wiki; Bry_bfr bfr = Bry_bfr.reset_(500); Srch_special_page search_mgr; +// Xoae_app app; Xowe_wiki wiki; Bry_bfr bfr = Bry_bfr_.Reset(500); Srch_special_page search_mgr; // public Xoae_app App() {return app;} // public Xowe_wiki Wiki() {return wiki;} // public Xobl_regy_itm regy_itm_(int id, String bgn, String end, int count) {return new Xobl_regy_itm(id, Bry_.new_u8(bgn), Bry_.new_u8(end), count);} @@ -122,7 +122,7 @@ along with this program. If not, see . // itm.Srl_save(tmp_bfr); // } // Io_mgr.Instance.SaveFilBfr(url, tmp_bfr); -// } private Bry_bfr tmp_bfr = Bry_bfr.reset_(255); +// } private Bry_bfr tmp_bfr = Bry_bfr_.Reset(255); // public void Init_data(Io_url fil, params Xobl_data_itm[] ary) { // Xob_xdat_file xdat_file = new Xob_xdat_file(); // int ary_len = ary.length; diff --git a/400_xowa/src/gplx/xowa/addons/apps/searchs/specials/Xow_domain_sorter__manual.java b/400_xowa/src/gplx/xowa/addons/wikis/searchs/specials/Xow_domain_sorter__manual.java similarity index 87% rename from 400_xowa/src/gplx/xowa/addons/apps/searchs/specials/Xow_domain_sorter__manual.java rename to 400_xowa/src/gplx/xowa/addons/wikis/searchs/specials/Xow_domain_sorter__manual.java index a9ac0d1b9..8722f3e35 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/searchs/specials/Xow_domain_sorter__manual.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/searchs/specials/Xow_domain_sorter__manual.java @@ -15,7 +15,7 @@ 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.addons.apps.searchs.specials; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; import gplx.xowa.addons.apps.searchs.*; +package gplx.xowa.addons.wikis.searchs.specials; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.searchs.*; import gplx.core.primitives.*; import gplx.xowa.langs.*; import gplx.xowa.wikis.domains.*; import gplx.xowa.wikis.domains.crts.*; public class Xow_domain_sorter__manual implements gplx.core.lists.ComparerAble { @@ -52,12 +52,12 @@ public class Xow_domain_sorter__manual implements gplx.core.lists.ComparerAble { } } class Xow_domain_sorter__manual_tid implements gplx.core.lists.ComparerAble { - private final Hash_adp sort_hash = Hash_adp_.new_(); private final Int_obj_ref sort_key = Int_obj_ref.neg1_(); + private final Hash_adp sort_hash = Hash_adp_.New(); private final Int_obj_ref sort_key = Int_obj_ref.New_neg1(); public Xow_domain_sorter__manual_tid(int[] id_ary) { int len = id_ary.length; for (int i = 0; i < len; ++i) { int id_itm = id_ary[i]; - sort_hash.Add_if_dupe_use_nth(Int_obj_ref.new_(id_itm), Int_obj_ref.new_(i)); + sort_hash.Add_if_dupe_use_nth(Int_obj_ref.New(id_itm), Int_obj_ref.New(i)); } } public int compare(Object lhsObj, Object rhsObj) { @@ -86,12 +86,12 @@ class Xow_domain_sorter__manual_tid implements gplx.core.lists.ComparerAble { } } class Xow_domain_sorter__manual_lang implements gplx.core.lists.ComparerAble { - private final Hash_adp sort_hash = Hash_adp_.new_(); private final Int_obj_ref sort_key = Int_obj_ref.neg1_(); + private final Hash_adp sort_hash = Hash_adp_.New(); private final Int_obj_ref sort_key = Int_obj_ref.New_neg1(); public Xow_domain_sorter__manual_lang(int[] id_ary) { int len = id_ary.length; for (int i = 0; i < len; ++i) { int id_int = id_ary[i]; - sort_hash.Add_if_dupe_use_nth(Int_obj_ref.new_(id_int), Int_obj_ref.new_(i)); + sort_hash.Add_if_dupe_use_nth(Int_obj_ref.New(id_int), Int_obj_ref.New(i)); } } public int compare(Object lhsObj, Object rhsObj) { diff --git a/400_xowa/src/gplx/xowa/addons/apps/searchs/specials/htmls/Srch_html_page_bldr.java b/400_xowa/src/gplx/xowa/addons/wikis/searchs/specials/htmls/Srch_html_page_bldr.java similarity index 82% rename from 400_xowa/src/gplx/xowa/addons/apps/searchs/specials/htmls/Srch_html_page_bldr.java rename to 400_xowa/src/gplx/xowa/addons/wikis/searchs/specials/htmls/Srch_html_page_bldr.java index b2531987c..bbb91865e 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/searchs/specials/htmls/Srch_html_page_bldr.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/searchs/specials/htmls/Srch_html_page_bldr.java @@ -15,12 +15,12 @@ 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.addons.apps.searchs.specials.htmls; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; import gplx.xowa.addons.apps.searchs.*; import gplx.xowa.addons.apps.searchs.specials.*; +package gplx.xowa.addons.wikis.searchs.specials.htmls; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.searchs.*; import gplx.xowa.addons.wikis.searchs.specials.*; import gplx.core.brys.fmtrs.*; import gplx.langs.htmls.*; import gplx.xowa.htmls.core.htmls.utls.*; import gplx.xowa.langs.numbers.*; -import gplx.xowa.addons.apps.searchs.specials.*; import gplx.xowa.addons.apps.searchs.searchers.*; import gplx.xowa.addons.apps.searchs.searchers.rslts.*; +import gplx.xowa.addons.wikis.searchs.specials.*; import gplx.xowa.addons.wikis.searchs.searchers.*; import gplx.xowa.addons.wikis.searchs.searchers.rslts.*; public class Srch_html_page_bldr { - private final Bry_bfr tmp_bfr = Bry_bfr.new_(255); + private final Bry_bfr tmp_bfr = Bry_bfr_.New_w_size(255); private Srch_search_qry qry; private Xow_wiki wiki; private Xol_num_mgr num_mgr; private int slab_idx; private Xoh_lnki_bldr lnki_bldr; private Xoh_anchor_kv_bldr self_lnkr = new Xoh_anchor_kv_bldr(); private Srch_html_row_bldr html_row_bldr; @@ -43,12 +43,13 @@ public class Srch_html_page_bldr { byte[] search_link = lnki_bldr.Href_(wiki_domain, wiki.Ttl_parse(self_lnkr.Bld_to_bry())).Caption_(wiki_domain).Img_16x16(Xoh_img_path.Img_search).Img_pos_is_left_(Bool_.Y).Bld_to_bry(); fmtr_tbl.Bld_bfr_many(bfr, search_link, searching_db ? Bld_cancel_link(wiki_domain, cmd_key) : Bry_.Empty, Bry_hdr_len, Bry_hdr_ttl, Srch_html_row_wkr.Gen_insert_key(wiki_domain), html_row_bldr); } - private byte[] Bld_cancel_link(byte[] domain, byte[] cmd_key) { - lnki_bldr.Id_(Bry_.Add(Bry_.new_a7("xowa_cancel_"), domain)); - lnki_bldr.Href_(wiki, self_lnkr.Add_int(Srch_qarg_mgr.Bry__slab_idx, slab_idx).Add_bry(Srch_qarg_mgr.Bry__cancel, cmd_key).Bld_to_bry()); - lnki_bldr.Title_(Bry_cancel); - lnki_bldr.Img_16x16(Xoh_img_path.Img_cancel); - return lnki_bldr.Bld_to_bry(); + private byte[] Bld_cancel_link(byte[] domain, byte[] cmd_key) { // DELETE: remove cancel link; clicking will blank out results; DATE:2016-06-14 + // lnki_bldr.Id_(Bry_.Add(Bry_.new_a7("xowa_cancel_"), domain)); + // lnki_bldr.Href_(wiki, self_lnkr.Add_int(Srch_qarg_mgr.Bry__slab_idx, slab_idx).Add_bry(Srch_qarg_mgr.Bry__cancel, cmd_key).Bld_to_bry()); + // lnki_bldr.Title_(Bry_cancel); + // lnki_bldr.Img_16x16(Xoh_img_path.Img_cancel); + // return lnki_bldr.Bld_to_bry(); + return Bry_.Empty; } public byte[] Bld_paging_link(boolean fwd) { byte[] title = null, img_path = Bry_.Empty; @@ -91,7 +92,7 @@ public class Srch_html_page_bldr { , "" ), "wiki", "cancel", "hdr_len", "hdr_ttl", "insert_key", "rows"); private static final Bry_fmtr fmtr_rslts = Bry_fmtr.new_("Results ~{bgn} of ~{end} for ~{raw}", "bgn", "end", "raw"); - private static final byte[] Bry_paging_fwd = Bry_.new_a7("Next"), Bry_paging_bwd = Bry_.new_a7("Previous"), Bry_cancel = Bry_.new_a7("Stop searching") + private static final byte[] Bry_paging_fwd = Bry_.new_a7("Next"), Bry_paging_bwd = Bry_.new_a7("Previous")// , Bry_cancel = Bry_.new_a7("Stop searching") , Bry_hdr_len = Bry_.new_a7("Page score"), Bry_hdr_ttl = Bry_.new_a7("Page title") ; private final byte[] Bry__special_search = Bry_.new_a7("Special:Search/"), Bry__fulltext = Bry_.new_a7("?fulltext=y"); diff --git a/400_xowa/src/gplx/xowa/addons/apps/searchs/specials/htmls/Srch_html_page_bldr_tst.java b/400_xowa/src/gplx/xowa/addons/wikis/searchs/specials/htmls/Srch_html_page_bldr_tst.java similarity index 89% rename from 400_xowa/src/gplx/xowa/addons/apps/searchs/specials/htmls/Srch_html_page_bldr_tst.java rename to 400_xowa/src/gplx/xowa/addons/wikis/searchs/specials/htmls/Srch_html_page_bldr_tst.java index ab9880a0f..b3f2f955c 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/searchs/specials/htmls/Srch_html_page_bldr_tst.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/searchs/specials/htmls/Srch_html_page_bldr_tst.java @@ -15,11 +15,11 @@ 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.addons.apps.searchs.specials.htmls; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; import gplx.xowa.addons.apps.searchs.*; import gplx.xowa.addons.apps.searchs.specials.*; +package gplx.xowa.addons.wikis.searchs.specials.htmls; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.searchs.*; import gplx.xowa.addons.wikis.searchs.specials.*; import org.junit.*; import gplx.xowa.htmls.core.htmls.utls.*; import gplx.xowa.wikis.tdbs.*; import gplx.xowa.wikis.domains.*; import gplx.xowa.wikis.data.tbls.*; -import gplx.xowa.addons.apps.searchs.searchers.*; import gplx.xowa.addons.apps.searchs.searchers.rslts.*; +import gplx.xowa.addons.wikis.searchs.searchers.*; import gplx.xowa.addons.wikis.searchs.searchers.rslts.*; public class Srch_html_page_bldr_tst { @Before public void init() {fxt.Clear();} private Srch_html_page_bldr_fxt fxt = new Srch_html_page_bldr_fxt(); @Test public void Paging() { @@ -47,7 +47,7 @@ public class Srch_html_page_bldr_tst { } } class Srch_html_page_bldr_fxt { - private Xoae_app app; private Xowe_wiki wiki; private Srch_html_page_bldr html_mgr; private final Bry_bfr tmp_bfr = Bry_bfr.new_(255); + private Xoae_app app; private Xowe_wiki wiki; private Srch_html_page_bldr html_mgr; private final Bry_bfr tmp_bfr = Bry_bfr_.New_w_size(255); private int page_id; public Srch_html_page_bldr_fxt Clear() { if (app == null) { diff --git a/400_xowa/src/gplx/xowa/addons/apps/searchs/specials/htmls/Srch_html_row_bldr.java b/400_xowa/src/gplx/xowa/addons/wikis/searchs/specials/htmls/Srch_html_row_bldr.java similarity index 87% rename from 400_xowa/src/gplx/xowa/addons/apps/searchs/specials/htmls/Srch_html_row_bldr.java rename to 400_xowa/src/gplx/xowa/addons/wikis/searchs/specials/htmls/Srch_html_row_bldr.java index 3eb42c59f..dafcc18be 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/searchs/specials/htmls/Srch_html_row_bldr.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/searchs/specials/htmls/Srch_html_row_bldr.java @@ -15,9 +15,9 @@ 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.addons.apps.searchs.specials.htmls; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; import gplx.xowa.addons.apps.searchs.*; import gplx.xowa.addons.apps.searchs.specials.*; +package gplx.xowa.addons.wikis.searchs.specials.htmls; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.searchs.*; import gplx.xowa.addons.wikis.searchs.specials.*; import gplx.xowa.htmls.core.htmls.utls.*; import gplx.langs.htmls.*; -import gplx.xowa.addons.apps.searchs.searchers.rslts.*; +import gplx.xowa.addons.wikis.searchs.searchers.rslts.*; public class Srch_html_row_bldr implements gplx.core.brys.Bfr_arg { private final Xoh_lnki_bldr lnki_bldr; private Srch_rslt_list rslt_list; private int slab_bgn, slab_end; diff --git a/400_xowa/src/gplx/xowa/addons/apps/searchs/specials/htmls/Srch_html_row_wkr.java b/400_xowa/src/gplx/xowa/addons/wikis/searchs/specials/htmls/Srch_html_row_wkr.java similarity index 86% rename from 400_xowa/src/gplx/xowa/addons/apps/searchs/specials/htmls/Srch_html_row_wkr.java rename to 400_xowa/src/gplx/xowa/addons/wikis/searchs/specials/htmls/Srch_html_row_wkr.java index 8748a17bd..e5d0968ab 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/searchs/specials/htmls/Srch_html_row_wkr.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/searchs/specials/htmls/Srch_html_row_wkr.java @@ -15,13 +15,13 @@ 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.addons.apps.searchs.specials.htmls; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; import gplx.xowa.addons.apps.searchs.*; import gplx.xowa.addons.apps.searchs.specials.*; +package gplx.xowa.addons.wikis.searchs.specials.htmls; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.searchs.*; import gplx.xowa.addons.wikis.searchs.specials.*; import gplx.langs.htmls.*; import gplx.xowa.files.gui.*; -import gplx.xowa.addons.apps.searchs.searchers.*; import gplx.xowa.addons.apps.searchs.searchers.rslts.*; +import gplx.xowa.addons.wikis.searchs.searchers.*; import gplx.xowa.addons.wikis.searchs.searchers.rslts.*; public class Srch_html_row_wkr { private final Srch_html_row_bldr html_row_bldr; private final Xog_js_wkr js_wkr; private final Srch_rslt_row[] rows; private final int rows_len; - private final Bry_bfr bfr = Bry_bfr.new_(255); + private final Bry_bfr bfr = Bry_bfr_.New_w_size(255); private final byte[] insert_new_key; public Srch_html_row_wkr(Srch_html_row_bldr html_row_bldr, Xog_js_wkr js_wkr, int slab_len, byte[] wiki) { this.html_row_bldr = html_row_bldr; this.js_wkr = js_wkr; diff --git a/400_xowa/src/gplx/xowa/addons/apps/searchs/specials/htmls/Srch_rslt_cbk_tst.java b/400_xowa/src/gplx/xowa/addons/wikis/searchs/specials/htmls/Srch_rslt_cbk_tst.java similarity index 90% rename from 400_xowa/src/gplx/xowa/addons/apps/searchs/specials/htmls/Srch_rslt_cbk_tst.java rename to 400_xowa/src/gplx/xowa/addons/wikis/searchs/specials/htmls/Srch_rslt_cbk_tst.java index 98df648ad..2830c6979 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/searchs/specials/htmls/Srch_rslt_cbk_tst.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/searchs/specials/htmls/Srch_rslt_cbk_tst.java @@ -15,8 +15,8 @@ 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.addons.apps.searchs.specials.htmls; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; import gplx.xowa.addons.apps.searchs.*; import gplx.xowa.addons.apps.searchs.specials.*; -import org.junit.*; import gplx.xowa.htmls.core.htmls.utls.*; import gplx.xowa.files.gui.*; import gplx.xowa.addons.apps.searchs.searchers.rslts.*; +package gplx.xowa.addons.wikis.searchs.specials.htmls; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.searchs.*; import gplx.xowa.addons.wikis.searchs.specials.*; +import org.junit.*; import gplx.xowa.htmls.core.htmls.utls.*; import gplx.xowa.files.gui.*; import gplx.xowa.addons.wikis.searchs.searchers.rslts.*; public class Srch_rslt_cbk_tst { @Before public void init() {fxt.Clear();} private Srch_rslt_cbk_fxt fxt = new Srch_rslt_cbk_fxt(); @Test public void Basic() { diff --git a/400_xowa/src/gplx/xowa/apps/Xoa_cur.java b/400_xowa/src/gplx/xowa/apps/Xoa_cur.java index 835c4aea9..eaed1aba8 100644 --- a/400_xowa/src/gplx/xowa/apps/Xoa_cur.java +++ b/400_xowa/src/gplx/xowa/apps/Xoa_cur.java @@ -17,15 +17,15 @@ along with this program. If not, see . */ package gplx.xowa.apps; import gplx.*; import gplx.xowa.*; import gplx.xowa.guis.views.*; -public class Xoa_cur implements GfoInvkAble { +public class Xoa_cur implements Gfo_invk { public Xoa_cur(Xoae_app app) {this.app = app;} private Xoae_app app; public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_wiki)) { Xog_win_itm win = app.Gui_mgr().Browser_win(); - return win.Active_tab() == null ? GfoInvkAble_.Null : win.Active_page().Wikie(); // null check when called from mass html gen; DATE:2014-06-04 + return win.Active_tab() == null ? Gfo_invk_.Noop : win.Active_page().Wikie(); // null check when called from mass html gen; DATE:2014-06-04 } else if (ctx.Match(k, Invk_win)) return app.Gui_mgr().Browser_win(); else if (ctx.Match(k, Invk_user)) return app.Usere(); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; } private static final String Invk_wiki = "wiki", Invk_win = "win", Invk_user = "user"; } diff --git a/400_xowa/src/gplx/xowa/apps/Xoa_shell.java b/400_xowa/src/gplx/xowa/apps/Xoa_shell.java index 5e3d7cf17..8f5b9993a 100644 --- a/400_xowa/src/gplx/xowa/apps/Xoa_shell.java +++ b/400_xowa/src/gplx/xowa/apps/Xoa_shell.java @@ -19,14 +19,14 @@ package gplx.xowa.apps; import gplx.*; import gplx.xowa.*; import gplx.core.consoles.*; import gplx.xowa.wikis.*; import gplx.xowa.htmls.hrefs.*; -public class Xoa_shell implements GfoInvkAble { +public class Xoa_shell implements Gfo_invk { public Xoa_shell(Xoae_app app) {this.app = app;} private Xoae_app app; public boolean Fetch_page_exec_async() {return fetch_page_exec_async;} private boolean fetch_page_exec_async = true; public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_fetch_page)) return Fetch_page(m); else if (ctx.Match(k, Invk_chars_per_line_max_)) Console_adp__sys.Instance.Chars_per_line_max_(m.ReadInt("v")); else if (ctx.Match(k, Invk_backspace_by_bytes_)) Console_adp__sys.Instance.Backspace_by_bytes_(m.ReadYn("v")); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private String Fetch_page(GfoMsg m) { diff --git a/400_xowa/src/gplx/xowa/apps/Xoa_sys_cfg.java b/400_xowa/src/gplx/xowa/apps/Xoa_sys_cfg.java index 48cc17eb9..281c09453 100644 --- a/400_xowa/src/gplx/xowa/apps/Xoa_sys_cfg.java +++ b/400_xowa/src/gplx/xowa/apps/Xoa_sys_cfg.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.apps; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*; -public class Xoa_sys_cfg implements GfoInvkAble { +public class Xoa_sys_cfg implements Gfo_invk { private Xoae_app app; public Xoa_sys_cfg(Xoae_app app) {this.app = app;} public byte[] Lang() {return lang_key;} @@ -42,7 +42,7 @@ public class Xoa_sys_cfg implements GfoInvkAble { else if (ctx.Match(k, Invk_lang_list)) return Options_lang_list(); else if (ctx.Match(k, Invk_options_version)) return options_version; else if (ctx.Match(k, Invk_options_version_)) options_version = m.ReadInt("v"); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String Invk_version = "version", Invk_build_date = "build_date", Invk_free_mem_when_ = "free_mem_when_", Invk_options_version = "options_version", Invk_options_version_ = "options_version_" @@ -51,7 +51,7 @@ public class Xoa_sys_cfg implements GfoInvkAble { class Options_list_lang_ { public static Keyval[] new_() { Ordered_hash translated = Ordered_hash_.New_bry(); - List_adp untranslated = List_adp_.new_(); + List_adp untranslated = List_adp_.New(); Add_itm_many(translated, Xol_lang_stub_.Id_en, Xol_lang_stub_.Id_de, Xol_lang_stub_.Id_pl, Xol_lang_stub_.Id_zh_hans, Xol_lang_stub_.Id_zh_hant); // add langs with translations first, so they alphabetize to top of list int len = Xol_lang_stub_.Id__max; for (int i = 0; i < len; i++) { // add rest of langs, but sort by code diff --git a/400_xowa/src/gplx/xowa/apps/Xoav_app.java b/400_xowa/src/gplx/xowa/apps/Xoav_app.java index c99213189..9806dea35 100644 --- a/400_xowa/src/gplx/xowa/apps/Xoav_app.java +++ b/400_xowa/src/gplx/xowa/apps/Xoav_app.java @@ -25,16 +25,16 @@ import gplx.xowa.apps.gfs.*; import gplx.xowa.htmls.hrefs.*; import gplx.xowa.htmls.core.htmls.utls.*; import gplx.xowa.htmls.bridges.*; import gplx.xowa.users.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.xwikis.*; import gplx.xowa.wikis.xwikis.parsers.*; import gplx.xowa.wikis.xwikis.sitelinks.*; -import gplx.xowa.guis.cbks.*; +import gplx.xowa.guis.cbks.*; import gplx.xowa.guis.tabs.*; import gplx.xowa.langs.*; import gplx.xowa.bldrs.wms.*; import gplx.langs.htmls.encoders.*; import gplx.xowa.bldrs.*; -import gplx.xowa.addons.*; import gplx.xowa.addons.apps.specials.*; -public class Xoav_app implements Xoa_app, GfoInvkAble { - public Xoav_app(Gfo_usr_dlg usr_dlg, Xoa_app_mode mode, String plat_name, Io_url root_dir, Io_url file_dir, Io_url css_dir) { +import gplx.xowa.addons.*; import gplx.xowa.specials.mgrs.*; +public class Xoav_app implements Xoa_app, Gfo_invk { + public Xoav_app(Gfo_usr_dlg usr_dlg, Xoa_app_mode mode, Xog_tab_mgr tab_mgr, String plat_name, Io_url root_dir, Io_url file_dir, Io_url css_dir, Io_url http_root) { Xoa_app_.Usr_dlg_(usr_dlg); this.usr_dlg = usr_dlg; this.mode = mode; - this.fsys_mgr = new Xoa_fsys_mgr(plat_name, root_dir, root_dir.GenSubDir("wiki"), file_dir, css_dir); + this.fsys_mgr = new Xoa_fsys_mgr(plat_name, root_dir, root_dir.GenSubDir("wiki"), file_dir, css_dir, http_root); this.lang_mgr = new Xoa_lang_mgr(this); this.meta_mgr = new Xoa_meta_mgr(this); this.gfs_mgr = new Xoa_gfs_mgr(this, fsys_mgr, null); @@ -44,6 +44,7 @@ public class Xoav_app implements Xoa_app, GfoInvkAble { this.utl_msg_log = Gfo_msg_log.Test(); this.html__lnki_bldr = new Xoh_lnki_bldr(this, html__href_wtr); this.html__bridge_mgr = new Xoh_bridge_mgr(utl__json_parser); + this.gui__tab_mgr = tab_mgr; this.user = new Xouv_user("anonymous"); this.api_root = null; this.site_cfg_mgr = new Xoa_site_cfg_mgr(this); @@ -66,7 +67,7 @@ public class Xoav_app implements Xoa_app, GfoInvkAble { public Xoh_lnki_bldr Html__lnki_bldr() {return html__lnki_bldr;} private final Xoh_lnki_bldr html__lnki_bldr; public Xoa_css_extractor Html__css_installer() {return html__css_installer;} private final Xoa_css_extractor html__css_installer = new Xoa_css_extractor(); public Xoh_bridge_mgr Html__bridge_mgr() {return html__bridge_mgr;} private final Xoh_bridge_mgr html__bridge_mgr; - public Xoa_meta_mgr Dbmeta_mgr() {return meta_mgr;} private final Xoa_meta_mgr meta_mgr; + public Xoa_meta_mgr Dbmeta_mgr() {return meta_mgr;} private final Xoa_meta_mgr meta_mgr; public Gfo_inet_conn Utl__inet_conn() {return inet_conn;} private final Gfo_inet_conn inet_conn = Gfo_inet_conn_.new_(); public Xoa_site_cfg_mgr Site_cfg_mgr() {return site_cfg_mgr;} private final Xoa_site_cfg_mgr site_cfg_mgr; public boolean Xwiki_mgr__missing(byte[] domain) {return wiki_mgr.Get_by_or_null(domain) == null;} @@ -75,7 +76,8 @@ public class Xoav_app implements Xoa_app, GfoInvkAble { public Xoax_addon_mgr Addon_mgr() {return addon_mgr;} private final Xoax_addon_mgr addon_mgr = new Xoax_addon_mgr(); public Xob_bldr Bldr() {return bldr;} private final Xob_bldr bldr; public Xoa_special_regy Special_regy() {return special_regy;} private final Xoa_special_regy special_regy = new Xoa_special_regy(); - public Xog_cbk_mgr Gui__cbk_mgr() {return gui__cbk_mgr;} private final Xog_cbk_mgr gui__cbk_mgr = new Xog_cbk_mgr(); + public Xog_cbk_mgr Gui__cbk_mgr() {return gui__cbk_mgr;} private final Xog_cbk_mgr gui__cbk_mgr = new Xog_cbk_mgr(); + public Xog_tab_mgr Gui__tab_mgr() {return gui__tab_mgr;} private final Xog_tab_mgr gui__tab_mgr; public Xowmf_mgr Wmf_mgr() {return wmf_mgr;} private final Xowmf_mgr wmf_mgr = new Xowmf_mgr(); public Gfo_usr_dlg Usr_dlg() {return usr_dlg;} public void Usr_dlg_(Gfo_usr_dlg v) {usr_dlg = v; Xoa_app_.Usr_dlg_(usr_dlg);} private Gfo_usr_dlg usr_dlg = Gfo_usr_dlg_.Noop; @@ -93,4 +95,12 @@ public class Xoav_app implements Xoa_app, GfoInvkAble { user.Init_db(this, wiki_mgr, user_db_url); this.Addon_mgr().Add_dflts_by_app(this).Run_by_app(this); } + public static Xoav_app New_by_drd(gplx.xowa.drds.files.Xod_fsys_mgr fsys_mgr, Xog_tab_mgr tab_mgr) { + // create log + Gfo_usr_dlg__log_base log = new Gfo_usr_dlg__log_base(); log.Log_dir_(Io_url_.mem_dir_("mem/tmp")); + Gfo_usr_dlg usr_dlg = new Gfo_usr_dlg_base(log, Gfo_usr_dlg__gui_.Console); + Xoa_app_.Usr_dlg_(usr_dlg); + + return new Xoav_app(usr_dlg, Xoa_app_mode.Itm_gui, tab_mgr, "drd", fsys_mgr.App_root_dir(), fsys_mgr.Usr_data_dir(), fsys_mgr.Usr_data_dir().GenSubDir("temp"), Io_url_.new_any_("/android_asset/xowa/")); + } } diff --git a/400_xowa/src/gplx/xowa/apps/Xoav_wiki_mgr.java b/400_xowa/src/gplx/xowa/apps/Xoav_wiki_mgr.java index a0dc3316f..bbbb4f8d9 100644 --- a/400_xowa/src/gplx/xowa/apps/Xoav_wiki_mgr.java +++ b/400_xowa/src/gplx/xowa/apps/Xoav_wiki_mgr.java @@ -22,12 +22,12 @@ public class Xoav_wiki_mgr implements Xoa_wiki_mgr { private final Xoav_app app; private final Ordered_hash hash = Ordered_hash_.New_bry(); public Xoav_wiki_mgr(Xoav_app app, Xol_case_mgr case_mgr) {this.app = app;} public int Count() {return hash.Count();} - public boolean Has(byte[] key) {return hash.Has(key);} + public boolean Has(byte[] key) {return hash.Has(key);} public Xow_wiki Get_at(int idx) {return (Xow_wiki)hash.Get_at(idx);} public Xow_wiki Get_by_or_null(byte[] key) {return (Xow_wiki)hash.Get_by(key);} public Xow_wiki Get_by_or_make_init_y(byte[] key) { Xow_wiki rv = this.Get_by_or_null(key); - // if (rv == null) rv = New_wiki(key); // TODO: must init wiki, but need wiki_url; DATE:2015-05-23 + rv.Init_by_wiki(); return rv; } public Xow_wiki Get_by_or_make_init_n(byte[] key) {return Get_by_or_make_init_y(key);} @@ -43,4 +43,8 @@ public class Xoav_wiki_mgr implements Xoa_wiki_mgr { this.Add(wiki); } } + public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { + if (ctx.Match(k, Xoa_wiki_mgr_.Invk__import_by_url)) return this.Import_by_url(m.ReadIoUrl("v")); + else return Gfo_invk_.Rv_unhandled; + } } diff --git a/400_xowa/src/gplx/xowa/apps/apis/Xoapi_root.java b/400_xowa/src/gplx/xowa/apps/apis/Xoapi_root.java index b7f4763e4..9723c324e 100644 --- a/400_xowa/src/gplx/xowa/apps/apis/Xoapi_root.java +++ b/400_xowa/src/gplx/xowa/apps/apis/Xoapi_root.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.apps.apis; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.xowa.*; import gplx.xowa.guis.cmds.*; -public class Xoapi_root implements GfoInvkAble { +public class Xoapi_root implements Gfo_invk { private Xoae_app app; public Xoapi_root(Xoae_app app) { app_api.Ctor_by_app(app); @@ -50,6 +50,7 @@ public class Xoapi_root implements GfoInvkAble { public Xoapi_usr Usr() {return usr_api;} private final Xoapi_usr usr_api = new Xoapi_usr(); public Xoapi_special Special() {return special_api;} private final Xoapi_special special_api = new Xoapi_special(); public Xoapi_xtns Xtns() {return xtns_api;} private final Xoapi_xtns xtns_api = new Xoapi_xtns(); + public Xoapi_wiki Wiki() {return wiki;} private final Xoapi_wiki wiki = new Xoapi_wiki(); public Xoapi_app_wikis Wikis() {return app_wikis;} private final Xoapi_app_wikis app_wikis = new Xoapi_app_wikis(); public String Test_str() {return test_str;} public void Test_str_(String v) {test_str = v;} private String test_str; // TEST private void Exec(String key) { @@ -69,6 +70,7 @@ public class Xoapi_root implements GfoInvkAble { else if (ctx.Match(k, Invk_special)) return special_api; else if (ctx.Match(k, Invk_xtns)) return xtns_api; else if (ctx.Match(k, Invk_exec)) Exec(m.ReadStr("v")); + else if (ctx.Match(k, Invk_wiki)) return wiki; else if (ctx.Match(k, Invk_wikis)) return app_wikis; else if (ctx.Match(k, Invk_test_str)) return test_str; else if (ctx.Match(k, Invk_test_str_)) test_str = m.ReadStr("v"); @@ -79,6 +81,6 @@ public class Xoapi_root implements GfoInvkAble { , Invk_app = "app", Invk_addon = "addon" , Invk_bldr = "bldr", Invk_nav = "nav", Invk_gui = "gui", Invk_html = "html", Invk_net = "net", Invk_usr = "usr", Invk_special = "special", Invk_xtns = "xtns" , Invk_test_str = "test_str", Invk_test_str_ = "test_str_" - , Invk_wikis = "wikis" + , Invk_wiki = "wiki", Invk_wikis = "wikis" ; } diff --git a/400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_addon.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_addon.java index befc0c863..54e22c50c 100644 --- a/400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_addon.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_addon.java @@ -17,12 +17,12 @@ along with this program. If not, see . */ package gplx.xowa.apps.apis.xowa; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.addons.*; -public class Xoapi_addon implements GfoInvkAble { +public class Xoapi_addon implements Gfo_invk { public void Ctor_by_app(Xoa_app app) {} public Xoapi_search_addon Search() {return search;} private final Xoapi_search_addon search = new Xoapi_search_addon(); public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk__search)) return search; - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; } private static final String Invk__search = "search"; } diff --git a/400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_app.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_app.java index cf287c10b..1bdb2d699 100644 --- a/400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_app.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_app.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.xowa.apps.apis.xowa; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.guis.views.*; import gplx.xowa.apps.apis.xowa.apps.*; import gplx.xowa.apps.apis.xowa.envs.*; import gplx.xowa.apps.apis.xowa.startups.*; -public class Xoapi_app implements GfoInvkAble { +public class Xoapi_app implements Gfo_invk { private Xog_win_itm win; public void Ctor_by_app(Xoae_app app) { fsys.Ctor_by_app(app); @@ -35,7 +35,7 @@ public class Xoapi_app implements GfoInvkAble { else if (ctx.Match(k, Invk_fsys)) return fsys; else if (ctx.Match(k, Invk_startup)) return startup; else if (ctx.Match(k, Invk_env)) return env; - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String Invk_exit = "exit", Invk_startup = "startup", Invk_env = "env", Invk_fsys = "fsys"; diff --git a/400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_app_wiki.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_app_wiki.java index 81381d8b9..b0baa0e21 100644 --- a/400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_app_wiki.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_app_wiki.java @@ -17,13 +17,15 @@ along with this program. If not, see . */ package gplx.xowa.apps.apis.xowa; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.wikis.*; -public class Xoapi_app_wiki implements GfoInvkAble { - public Xoapi_wiki_lang Lang() {return lang;} private final Xoapi_wiki_lang lang = new Xoapi_wiki_lang(); - public void Subscribe(GfoEvObj sub) {lang.Subscribe(sub);} +public class Xoapi_app_wiki implements Gfo_invk { + public Xoapi_wiki_lang Lang() {return lang;} private final Xoapi_wiki_lang lang = new Xoapi_wiki_lang(); + public Xoapi_hdump Hdump() {return hdump;} private final Xoapi_hdump hdump = new Xoapi_hdump(); + public void Subscribe(Gfo_evt_itm sub) {lang.Subscribe(sub);} public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { - if (ctx.Match(k, Invk_lang)) return lang; - else return GfoInvkAble_.Rv_unhandled; + if (ctx.Match(k, Invk_lang)) return lang; + else if (ctx.Match(k, Invk_hdump)) return hdump; + else return Gfo_invk_.Rv_unhandled; } - private static final String Invk_lang = "lang"; - public static final Xoapi_app_wiki Dflt = new Xoapi_app_wiki(); + private static final String Invk_lang = "lang", Invk_hdump = "hdump"; + public static final Xoapi_app_wiki Dflt = new Xoapi_app_wiki(); } diff --git a/400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_app_wikis.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_app_wikis.java index 80ae00b4d..90e80473d 100644 --- a/400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_app_wikis.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_app_wikis.java @@ -16,8 +16,8 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.apps.apis.xowa; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; -public class Xoapi_app_wikis implements GfoInvkAble { - private final Ordered_hash hash = Ordered_hash_.New_bry(); +public class Xoapi_app_wikis implements Gfo_invk { + private final Ordered_hash hash = Ordered_hash_.New_bry(); public Xoapi_app_wiki Get(byte[] domain) { Xoapi_app_wiki rv = (Xoapi_app_wiki)hash.Get_by(domain); if (rv == null) { @@ -28,7 +28,7 @@ public class Xoapi_app_wikis implements GfoInvkAble { } public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_get)) return Get(m.ReadBry("v")); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; } private static final String Invk_get = "get"; } diff --git a/400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_bldr.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_bldr.java index ad47ce134..62d34dbb4 100644 --- a/400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_bldr.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_bldr.java @@ -17,12 +17,12 @@ along with this program. If not, see . */ package gplx.xowa.apps.apis.xowa; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.bldrs.*; -public class Xoapi_bldr implements GfoInvkAble { +public class Xoapi_bldr implements Gfo_invk { public void Ctor_by_app(Xoa_app app) {wiki.Ctor_by_app(app);} - public Xoapi_bldr_wiki Wiki() {return wiki;} private final Xoapi_bldr_wiki wiki = new Xoapi_bldr_wiki(); + public Xoapi_bldr_wiki Wiki() {return wiki;} private final Xoapi_bldr_wiki wiki = new Xoapi_bldr_wiki(); public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_wiki)) return wiki; - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; } private static final String Invk_wiki = "wiki"; } diff --git a/400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_gui.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_gui.java index 8394e9a69..100c7e906 100644 --- a/400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_gui.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_gui.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.apps.apis.xowa; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.gui.*; -public class Xoapi_gui implements GfoInvkAble { +public class Xoapi_gui implements Gfo_invk { public void Init_by_kit(Xoae_app app) { browser.Init_by_kit(app); font.Init_by_kit(app); diff --git a/400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_html.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_html.java index 744c92c9d..db10ebe19 100644 --- a/400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_html.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_html.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.apps.apis.xowa; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.html.*; -public class Xoapi_html implements GfoInvkAble { +public class Xoapi_html implements Gfo_invk { public void Ctor_by_app(Xoae_app app) { page.Ctor_by_app(app); } @@ -25,16 +25,16 @@ public class Xoapi_html implements GfoInvkAble { tidy.Init_by_kit(app); modules.Init_by_kit(app); } - public Xoapi_tidy Tidy() {return tidy;} private final Xoapi_tidy tidy = new Xoapi_tidy(); - public Xoapi_modules Modules() {return modules;} private final Xoapi_modules modules = new Xoapi_modules(); - public Xoapi_skins Skins() {return skins;} private final Xoapi_skins skins = new Xoapi_skins(); - public Xoapi_page Page() {return page;} private final Xoapi_page page = new Xoapi_page(); + public Xoapi_tidy Tidy() {return tidy;} private final Xoapi_tidy tidy = new Xoapi_tidy(); + public Xoapi_modules Modules() {return modules;} private final Xoapi_modules modules = new Xoapi_modules(); + public Xoapi_skins Skins() {return skins;} private final Xoapi_skins skins = new Xoapi_skins(); + public Xoapi_page Page() {return page;} private final Xoapi_page page = new Xoapi_page(); public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_tidy)) return tidy; else if (ctx.Match(k, Invk_modules)) return modules; else if (ctx.Match(k, Invk_skins)) return skins; else if (ctx.Match(k, Invk_page)) return page; - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; } private static final String Invk_tidy = "tidy", Invk_modules = "modules", Invk_skins = "skins", Invk_page = "page"; } diff --git a/400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_nav.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_nav.java index 06a3a43ba..ff70da70b 100644 --- a/400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_nav.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_nav.java @@ -18,13 +18,13 @@ along with this program. If not, see . package gplx.xowa.apps.apis.xowa; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.guis.views.*; import gplx.xowa.apps.apis.xowa.navs.*; -public class Xoapi_nav implements GfoInvkAble { +public class Xoapi_nav implements Gfo_invk { private Xog_win_itm win; public void Init_by_kit(Xoae_app app) { win = app.Gui_mgr().Browser_win(); wiki.Init_by_kit(app); } - public Xoapi_wiki Wiki() {return wiki;} private Xoapi_wiki wiki = new Xoapi_wiki(); + public Xoapi_nav_wiki Wiki() {return wiki;} private Xoapi_nav_wiki wiki = new Xoapi_nav_wiki(); public void Goto(String page) {win.Page__navigate_by_url_bar(page);} public void Go_bwd() {win.Page__navigate_by_history(Bool_.N);} public void Go_fwd() {win.Page__navigate_by_history(Bool_.Y);} @@ -33,7 +33,7 @@ public class Xoapi_nav implements GfoInvkAble { else if (ctx.Match(k, Invk_go_fwd)) this.Go_fwd(); else if (ctx.Match(k, Invk_goto)) this.Goto(m.ReadStr("v")); else if (ctx.Match(k, Invk_wiki)) return wiki; - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String Invk_go_bwd = "go_bwd", Invk_go_fwd = "go_fwd", Invk_goto = "goto", Invk_wiki = "wiki"; diff --git a/400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_net.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_net.java index bcb3c52da..395c644c6 100644 --- a/400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_net.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_net.java @@ -16,23 +16,23 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.apps.apis.xowa; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; -public class Xoapi_net implements GfoInvkAble, GfoEvObj { - public Xoapi_net() {this.ev_mgr = GfoEvMgr.new_(this);} - public GfoEvMgr EvMgr() {return ev_mgr;} private GfoEvMgr ev_mgr; +public class Xoapi_net implements Gfo_invk, Gfo_evt_itm { + public Xoapi_net() {this.ev_mgr = new Gfo_evt_mgr(this);} + public Gfo_evt_mgr Evt_mgr() {return ev_mgr;} private Gfo_evt_mgr ev_mgr; public void Init_by_kit(Xoae_app app) { } public boolean Enabled() {return enabled;} private boolean enabled = true; public void Enabled_(boolean v) { this.enabled = v; gplx.core.ios.IoEngine_system.Web_access_enabled = v; - GfoEvMgr_.PubVal(this, gplx.xowa.guis.menus.dom.Xog_mnu_evt_mgr.Evt_selected_changed, v); + Gfo_evt_mgr_.Pub_val(this, gplx.xowa.guis.menus.dom.Xog_mnu_evt_mgr.Evt_selected_changed, v); } public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_enabled)) return this.Enabled(); else if (ctx.Match(k, Invk_enabled_n_)) this.Enabled_(Bool_.N); else if (ctx.Match(k, Invk_enabled_y_)) this.Enabled_(Bool_.Y); else if (ctx.Match(k, Invk_enabled_x_)) this.Enabled_(this.Enabled()); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String diff --git a/400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_special.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_special.java index 2acc10f48..5e652bd41 100644 --- a/400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_special.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_special.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.apps.apis.xowa; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.specials.*; -public class Xoapi_special implements GfoInvkAble { +public class Xoapi_special implements Gfo_invk { public void Ctor_by_app(Xoae_app app) { } public void Init_by_kit(Xoae_app app) { @@ -25,7 +25,7 @@ public class Xoapi_special implements GfoInvkAble { public Xoapi_search Search() {return search;} private Xoapi_search search = new Xoapi_search(); public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_search)) return search; - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; } private static final String Invk_search = "search"; } diff --git a/400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_usr.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_usr.java index 73df37498..862196b0a 100644 --- a/400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_usr.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_usr.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.apps.apis.xowa; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.usrs.*; -public class Xoapi_usr implements GfoInvkAble { +public class Xoapi_usr implements Gfo_invk { public void Ctor_by_app(Xoae_app app) { bookmarks.Ctor_by_app(app); history.Ctor_by_app(app); @@ -30,16 +30,16 @@ public class Xoapi_usr implements GfoInvkAble { bookmarks.Init_by_kit(app); history.Init_by_kit(app); } - public Xoapi_bookmarks Bookmarks() {return bookmarks;} private final Xoapi_bookmarks bookmarks = new Xoapi_bookmarks(); - public Xoapi_history History() {return history;} private final Xoapi_history history = new Xoapi_history(); - public Xoapi_logs Logs() {return logs;} private final Xoapi_logs logs = new Xoapi_logs(); - public Xoapi_cache Cache() {return cache;} private final Xoapi_cache cache = new Xoapi_cache(); + public Xoapi_bookmarks Bookmarks() {return bookmarks;} private final Xoapi_bookmarks bookmarks = new Xoapi_bookmarks(); + public Xoapi_history History() {return history;} private final Xoapi_history history = new Xoapi_history(); + public Xoapi_logs Logs() {return logs;} private final Xoapi_logs logs = new Xoapi_logs(); + public Xoapi_cache Cache() {return cache;} private final Xoapi_cache cache = new Xoapi_cache(); public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_bookmarks)) return bookmarks; else if (ctx.Match(k, Invk_history)) return history; else if (ctx.Match(k, Invk_logs)) return logs; else if (ctx.Match(k, Invk_cache)) return cache; - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; } private static final String Invk_bookmarks = "bookmarks", Invk_history = "history", Invk_logs = "logs", Invk_cache = "cache"; } diff --git a/400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_wiki.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_wiki.java new file mode 100644 index 000000000..2a93ddf63 --- /dev/null +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_wiki.java @@ -0,0 +1,27 @@ +/* +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.apps.apis.xowa; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; +import gplx.xowa.apps.apis.xowa.wikis.*; +public class Xoapi_wiki implements Gfo_invk { + public Xoapi_hdump Hdump() {return hdump;} private final Xoapi_hdump hdump = new Xoapi_hdump(); + public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { + if (ctx.Match(k, Invk_hdump)) return hdump; + else return Gfo_invk_.Rv_unhandled; + } + private static final String Invk_hdump = "hdump"; +} diff --git a/400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_xtns.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_xtns.java index 9e58447c6..139fd3828 100644 --- a/400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_xtns.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_xtns.java @@ -17,16 +17,16 @@ along with this program. If not, see . */ package gplx.xowa.apps.apis.xowa; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.xtns.*; -public class Xoapi_xtns implements GfoInvkAble { +public class Xoapi_xtns implements Gfo_invk { public void Init_by_kit(Xoae_app app) { scribunto.Init_by_kit(app); } - public Xoapi_scribunto Scribunto() {return scribunto;} private final Xoapi_scribunto scribunto = new Xoapi_scribunto(); - public Xoapi_wikibase Wikibase() {return wikibase;} private final Xoapi_wikibase wikibase = new Xoapi_wikibase(); + public Xoapi_scribunto Scribunto() {return scribunto;} private final Xoapi_scribunto scribunto = new Xoapi_scribunto(); + public Xoapi_wikibase Wikibase() {return wikibase;} private final Xoapi_wikibase wikibase = new Xoapi_wikibase(); public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_scribunto)) return scribunto; else if (ctx.Match(k, Invk_wikibase)) return wikibase; - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; } private static final String Invk_scribunto = "scribunto" diff --git a/400_xowa/src/gplx/xowa/apps/apis/xowa/addons/Xoapi_search_addon.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/addons/Xoapi_search_addon.java index 4d1d79fd9..e78422612 100644 --- a/400_xowa/src/gplx/xowa/apps/apis/xowa/addons/Xoapi_search_addon.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/addons/Xoapi_search_addon.java @@ -18,21 +18,21 @@ along with this program. If not, see . package gplx.xowa.apps.apis.xowa.addons; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.*; import gplx.xowa.wikis.domains.*; import gplx.xowa.wikis.domains.crts.*; import gplx.xowa.apps.apis.xowa.addons.searchs.*; -public class Xoapi_search_addon implements GfoInvkAble { +public class Xoapi_search_addon implements Gfo_invk { public Xoapi_search_addon() {} public Xoapi_url_bar Url_bar() {return url_bar;} private final Xoapi_url_bar url_bar = new Xoapi_url_bar(); @gplx.Internal protected Xoapi_search_box Search_box() {return search_box;} private final Xoapi_search_box search_box = new Xoapi_search_box(); public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk__url_bar)) return url_bar; else if (ctx.Match(k, Invk__search_box)) return search_box; - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; } private static final String Invk__url_bar = "url_bar" , Invk__search_box = "search_box" ; } -class Xoapi_search_box implements GfoInvkAble { +class Xoapi_search_box implements Gfo_invk { public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { return null; } diff --git a/400_xowa/src/gplx/xowa/apps/apis/xowa/addons/searchs/Xoapi_url_bar.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/addons/searchs/Xoapi_url_bar.java index e35dbd385..6185d8d1b 100644 --- a/400_xowa/src/gplx/xowa/apps/apis/xowa/addons/searchs/Xoapi_url_bar.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/addons/searchs/Xoapi_url_bar.java @@ -16,12 +16,12 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.apps.apis.xowa.addons.searchs; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.*; import gplx.xowa.apps.apis.xowa.addons.*; -import gplx.xowa.addons.apps.searchs.searchers.*; import gplx.xowa.addons.apps.searchs.searchers.crts.*; -public class Xoapi_url_bar implements GfoInvkAble, GfoEvMgrOwner { +import gplx.xowa.addons.wikis.searchs.searchers.*; import gplx.xowa.addons.wikis.searchs.searchers.crts.*; +public class Xoapi_url_bar implements Gfo_invk, Gfo_evt_mgr_owner { public Xoapi_url_bar() { - this.evMgr = GfoEvMgr.new_(this); + this.evt_mgr = new Gfo_evt_mgr(this); } - public GfoEvMgr EvMgr() {return evMgr;} private final GfoEvMgr evMgr; + public Gfo_evt_mgr Evt_mgr() {return evt_mgr;} private final Gfo_evt_mgr evt_mgr; public boolean Enabled() {return enabled;} private boolean enabled = true; public int Search_mode() {return search_mode;} private int search_mode = Xoapi_search_mode_.Tid__title_word; public int Max_results() {return max_results;} private int max_results = 10; @@ -38,7 +38,7 @@ public class Xoapi_url_bar implements GfoInvkAble, GfoEvMgrOwner { ns_ids = Int_.Ary_parse(s, ","); } ns_mgr.Add_by_int_ids(ns_ids); - GfoEvMgr_.Pub(this, Evt__ns_ids_changed); + Gfo_evt_mgr_.Pub(this, Evt__ns_ids_changed); } public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk__enabled)) return Yn.To_str(enabled); @@ -54,10 +54,10 @@ public class Xoapi_url_bar implements GfoInvkAble, GfoEvMgrOwner { else if (ctx.Match(k, Invk__symbols)) return String_.new_u8(syms.To_bry()); else if (ctx.Match(k, Invk__symbols_)) syms.Parse(m.ReadBry("v")); else if (ctx.Match(k, Invk__visible_rows)) return Int_.To_str(visible_rows); - else if (ctx.Match(k, Invk__visible_rows_)) {visible_rows = m.ReadInt("v"); GfoEvMgr_.PubVal(this, Evt__visible_rows_changed, visible_rows);} + else if (ctx.Match(k, Invk__visible_rows_)) {visible_rows = m.ReadInt("v"); Gfo_evt_mgr_.Pub_val(this, Evt__visible_rows_changed, visible_rows);} else if (ctx.Match(k, Invk__jump_len)) return Int_.To_str(jump_len); - else if (ctx.Match(k, Invk__jump_len_)) {jump_len = m.ReadInt("v"); GfoEvMgr_.PubVal(this, Evt__jump_len_changed, jump_len);} - else return GfoInvkAble_.Rv_unhandled; + else if (ctx.Match(k, Invk__jump_len_)) {jump_len = m.ReadInt("v"); Gfo_evt_mgr_.Pub_val(this, Evt__jump_len_changed, jump_len);} + else return Gfo_invk_.Rv_unhandled; return this; } private static final String diff --git a/400_xowa/src/gplx/xowa/apps/apis/xowa/apps/Xoapi_fsys.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/apps/Xoapi_fsys.java index d6b103eca..739c249a3 100644 --- a/400_xowa/src/gplx/xowa/apps/apis/xowa/apps/Xoapi_fsys.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/apps/Xoapi_fsys.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.apps.apis.xowa.apps; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.*; import gplx.core.envs.*; -public class Xoapi_fsys implements GfoInvkAble { +public class Xoapi_fsys implements Gfo_invk { public void Ctor_by_app(Xoae_app app) { this.plat_jar = Env_.AppUrl(); this.root_dir = app.Fsys_mgr().Root_dir(); @@ -27,7 +27,7 @@ public class Xoapi_fsys implements GfoInvkAble { public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_plat_jar)) return plat_jar; else if (ctx.Match(k, Invk_plat_url)) return Plat_url(m.ReadStr("v")); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; } private static final String Invk_plat_jar = "plat_jar", Invk_plat_url = "plat_url"; } diff --git a/400_xowa/src/gplx/xowa/apps/apis/xowa/bldrs/Xoapi_bldr_wiki.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/bldrs/Xoapi_bldr_wiki.java index 9dec18951..0d4d9baeb 100644 --- a/400_xowa/src/gplx/xowa/apps/apis/xowa/bldrs/Xoapi_bldr_wiki.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/bldrs/Xoapi_bldr_wiki.java @@ -19,7 +19,7 @@ package gplx.xowa.apps.apis.xowa.bldrs; import gplx.*; import gplx.xowa.*; impor import gplx.xowa.apps.apis.xowa.bldrs.filters.*; import gplx.xowa.apps.apis.xowa.bldrs.imports.*; import gplx.xowa.apps.apis.xowa.bldrs.runners.*; -public class Xoapi_bldr_wiki implements GfoInvkAble { +public class Xoapi_bldr_wiki implements Gfo_invk { public void Ctor_by_app(Xoa_app app) { filter.Ctor_by_app(app); runner.Ctor_by_app(app); @@ -31,7 +31,7 @@ public class Xoapi_bldr_wiki implements GfoInvkAble { if (ctx.Match(k, Invk_filter)) return filter; else if (ctx.Match(k, Invk_import)) return import_api; else if (ctx.Match(k, Invk_runner)) return runner; - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; } private static final String Invk_filter = "filter", Invk_import = "import", Invk_runner = "runner"; } diff --git a/400_xowa/src/gplx/xowa/apps/apis/xowa/bldrs/filters/Xoapi_filter.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/bldrs/filters/Xoapi_filter.java index 78779a86d..47c0a9b5e 100644 --- a/400_xowa/src/gplx/xowa/apps/apis/xowa/bldrs/filters/Xoapi_filter.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/bldrs/filters/Xoapi_filter.java @@ -17,12 +17,12 @@ along with this program. If not, see . */ package gplx.xowa.apps.apis.xowa.bldrs.filters; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.*; import gplx.xowa.apps.apis.xowa.bldrs.*; import gplx.xowa.apps.apis.xowa.bldrs.filters.dansguardians.*; -public class Xoapi_filter implements GfoInvkAble { +public class Xoapi_filter implements Gfo_invk { public void Ctor_by_app(Xoa_app app) {dansguardian.Ctor_by_app(app);} - public Xoapi_dansguardian Dansguardian() {return dansguardian;} private final Xoapi_dansguardian dansguardian = new Xoapi_dansguardian(); + public Xoapi_dansguardian Dansguardian() {return dansguardian;} private final Xoapi_dansguardian dansguardian = new Xoapi_dansguardian(); public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_dansguardian)) return dansguardian; - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; } private static final String Invk_dansguardian = "dansguardian"; } diff --git a/400_xowa/src/gplx/xowa/apps/apis/xowa/bldrs/filters/dansguardians/Xoapi_dansguardian.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/bldrs/filters/dansguardians/Xoapi_dansguardian.java index 9682fcf4a..4592615b6 100644 --- a/400_xowa/src/gplx/xowa/apps/apis/xowa/bldrs/filters/dansguardians/Xoapi_dansguardian.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/bldrs/filters/dansguardians/Xoapi_dansguardian.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.apps.apis.xowa.bldrs.filters.dansguardians; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.*; import gplx.xowa.apps.apis.xowa.bldrs.*; import gplx.xowa.apps.apis.xowa.bldrs.filters.*; import gplx.core.ios.*; import gplx.xowa.bldrs.filters.dansguardians.*; -public class Xoapi_dansguardian implements GfoInvkAble { +public class Xoapi_dansguardian implements Gfo_invk { public void Ctor_by_app(Xoa_app app) { root_dir = app.Fsys_mgr().Bin_xowa_dir().GenSubDir_nest("cfg", "bldr", "filter"); } @@ -58,7 +58,7 @@ public class Xoapi_dansguardian implements GfoInvkAble { else if (ctx.Match(k, Invk_target_tid_)) target_tid = m.ReadInt("v"); else if (ctx.Match(k, Invk_log_enabled)) return Yn.To_str(log_enabled); else if (ctx.Match(k, Invk_log_enabled_)) log_enabled = m.ReadYn("v"); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String diff --git a/400_xowa/src/gplx/xowa/apps/apis/xowa/bldrs/filters/titles/Xoapi_title.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/bldrs/filters/titles/Xoapi_title.java index 891cc226b..0fa499996 100644 --- a/400_xowa/src/gplx/xowa/apps/apis/xowa/bldrs/filters/titles/Xoapi_title.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/bldrs/filters/titles/Xoapi_title.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.apps.apis.xowa.bldrs.filters.titles; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.*; import gplx.xowa.apps.apis.xowa.bldrs.*; import gplx.xowa.apps.apis.xowa.bldrs.filters.*; -public class Xoapi_title implements GfoInvkAble { +public class Xoapi_title implements Gfo_invk { public void Init_by_kit(Xoae_app app) { // wordlist_dir = app.Fsys_mgr().Bin_xtns_dir().GenSubDir_nest("xowa", "DansGuardian"); } @@ -36,7 +36,7 @@ public class Xoapi_title implements GfoInvkAble { else if (ctx.Match(k, Invk_score_pass_)) score_pass = m.ReadInt("v"); else if (ctx.Match(k, Invk_log_enabled)) return Yn.To_str(enabled); else if (ctx.Match(k, Invk_log_enabled_)) log_enabled = m.ReadYn("v"); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String diff --git a/400_xowa/src/gplx/xowa/apps/apis/xowa/bldrs/imports/Xoapi_import.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/bldrs/imports/Xoapi_import.java index 7fd1a2dae..09370360e 100644 --- a/400_xowa/src/gplx/xowa/apps/apis/xowa/bldrs/imports/Xoapi_import.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/bldrs/imports/Xoapi_import.java @@ -16,9 +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.apps.apis.xowa.bldrs.imports; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.*; import gplx.xowa.apps.apis.xowa.bldrs.*; -import gplx.core.ios.*; import gplx.xowa.wikis.data.*; import gplx.xowa.apps.apis.xowa.bldrs.imports.page_ranks.*; -public class Xoapi_import implements GfoInvkAble { - public Xoapi_page_rank Page_rank() {return page_rank;} private final Xoapi_page_rank page_rank = new Xoapi_page_rank(); +import gplx.core.ios.*; import gplx.core.ios.streams.*; +import gplx.xowa.wikis.data.*; import gplx.xowa.apps.apis.xowa.bldrs.imports.page_ranks.*; +public class Xoapi_import implements Gfo_invk { + public Xoapi_page_rank Page_rank() {return page_rank;} private final Xoapi_page_rank page_rank = new Xoapi_page_rank(); public long Layout_all_max() {return layout_all_max;} private long layout_all_max = 0; // disable by default; may set to 200 MB in future public long Layout_text_max() {return layout_text_max;} private long layout_text_max = Io_size_.To_long_by_int_mb(1500); // 1.5 GB public long Layout_html_max() {return layout_html_max;} private long layout_html_max = Io_size_.To_long_by_int_mb(1500); // 1.5 GB @@ -34,18 +35,21 @@ public class Xoapi_import implements GfoInvkAble { public boolean Hzip_mode_is_b256() {return hzip_mode_is_b256;} private boolean hzip_mode_is_b256 = Bool_.Y; public String User_name() {return user_name;} private String user_name = "anonymous"; public Xowd_core_db_props New_props(String domain_str, long dump_file_size) { - Xowd_db_layout layout_text, layout_html, layout_file; + Xow_db_layout layout_text, layout_html, layout_file; if (dump_file_size < layout_all_max) - layout_text = layout_html = layout_file = Xowd_db_layout.Itm_all; + layout_text = layout_html = layout_file = Xow_db_layout.Itm_all; else { - layout_text = dump_file_size < layout_text_max ? Xowd_db_layout.Itm_few : Xowd_db_layout.Itm_lot; - layout_html = dump_file_size < layout_html_max ? Xowd_db_layout.Itm_few : Xowd_db_layout.Itm_lot; - layout_file = dump_file_size < layout_file_max ? Xowd_db_layout.Itm_few : Xowd_db_layout.Itm_lot; + layout_text = dump_file_size < layout_text_max ? Xow_db_layout.Itm_few : Xow_db_layout.Itm_lot; + layout_html = dump_file_size < layout_html_max ? Xow_db_layout.Itm_few : Xow_db_layout.Itm_lot; + layout_file = dump_file_size < layout_file_max ? Xow_db_layout.Itm_few : Xow_db_layout.Itm_lot; } return new Xowd_core_db_props(2, layout_text, layout_html, layout_file, zip_tid_text, zip_tid_html, hzip_enabled, hzip_mode_is_b256); } public byte[] New_ns_file_map(long dump_file_size) { - return dump_file_size < layout_text_max ? Bry_.Empty : Ns_file_map__each; + return dump_file_size < layout_text_max + ? gplx.xowa.bldrs.cmds.Xob_ns_file_itm_parser.Ns_file_map__few + : gplx.xowa.bldrs.cmds.Xob_ns_file_itm_parser.Ns_file_map__each; // DB.FEW: DATE:2016-06-07 + // return dump_file_size < layout_text_max ? Bry_.Empty : Ns_file_map__each; } public void Zip_tid_text_raw_() {zip_tid_text = Io_stream_.Tid_raw;} // TEST: public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { @@ -79,10 +83,10 @@ public class Xoapi_import implements GfoInvkAble { else if (ctx.Match(k, Invk_user_name)) return user_name; else if (ctx.Match(k, Invk_user_name_)) user_name = m.ReadStr("v"); else if (ctx.Match(k, Invk_page_rank)) return page_rank; - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } - private static Keyval[] Options_zip_tid__list = Keyval_.Ary(Keyval_.new_("raw", "text"), Keyval_.new_("gzip"), Keyval_.new_("bzip2")); + private static final Keyval[] Options_zip_tid__list = Keyval_.Ary(Keyval_.new_("raw", "text"), Keyval_.new_("gzip"), Keyval_.new_("bzip2")); private static final String Invk_layout_all_max = "layout_all_max" , Invk_layout_all_max_ = "layout_all_max_" , Invk_layout_text_max = "layout_text_max" , Invk_layout_text_max_ = "layout_text_max_" @@ -100,5 +104,5 @@ public class Xoapi_import implements GfoInvkAble { , Invk_hzip_mode_is_b256 = "hzip_mode_is_b256" , Invk_hzip_mode_is_b256_ = "hzip_mode_is_b256_" , Invk_page_rank = "page_rank" ; - public static final byte[] Ns_file_map__each = Bry_.new_a7(""); + public static final byte[] Ns_file_map__each = Bry_.new_a7(""); } diff --git a/400_xowa/src/gplx/xowa/apps/apis/xowa/bldrs/imports/page_ranks/Xoapi_page_rank.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/bldrs/imports/page_ranks/Xoapi_page_rank.java index 03f99190b..c0f773bc4 100644 --- a/400_xowa/src/gplx/xowa/apps/apis/xowa/bldrs/imports/page_ranks/Xoapi_page_rank.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/bldrs/imports/page_ranks/Xoapi_page_rank.java @@ -16,12 +16,12 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.apps.apis.xowa.bldrs.imports.page_ranks; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.*; import gplx.xowa.apps.apis.xowa.bldrs.*; import gplx.xowa.apps.apis.xowa.bldrs.imports.*; -public class Xoapi_page_rank implements GfoInvkAble { +public class Xoapi_page_rank implements Gfo_invk { public int Iteration_max() {return iteration_max;} private int iteration_max = 0; public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_iteration_max)) return Int_.To_str(iteration_max); else if (ctx.Match(k, Invk_iteration_max_)) iteration_max = m.ReadInt("v"); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String diff --git a/400_xowa/src/gplx/xowa/apps/apis/xowa/bldrs/runners/Xoapi_runner.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/bldrs/runners/Xoapi_runner.java index 1f7bc9a30..861bf7cfc 100644 --- a/400_xowa/src/gplx/xowa/apps/apis/xowa/bldrs/runners/Xoapi_runner.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/bldrs/runners/Xoapi_runner.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.apps.apis.xowa.bldrs.runners; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.*; import gplx.xowa.apps.apis.xowa.bldrs.*; -public class Xoapi_runner implements GfoInvkAble { +public class Xoapi_runner implements Gfo_invk { // private Xoa_app app; public void Ctor_by_app(Xoa_app app) {}//this.app = app;} private void Exec(GfoMsg msg) { @@ -36,7 +36,7 @@ public class Xoapi_runner implements GfoInvkAble { } public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_exec)) Exec(m); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String Invk_exec = "exec"; diff --git a/400_xowa/src/gplx/xowa/apps/apis/xowa/envs/Xoapi_env.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/envs/Xoapi_env.java index 538ced8fa..b640381dc 100644 --- a/400_xowa/src/gplx/xowa/apps/apis/xowa/envs/Xoapi_env.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/envs/Xoapi_env.java @@ -16,13 +16,13 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.apps.apis.xowa.envs; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.*; -public class Xoapi_env implements GfoInvkAble { +public class Xoapi_env implements Gfo_invk { public void Init_by_kit(Xoae_app app) {} public String Version_previous() {return version_previous;} private String version_previous = ""; public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_version_previous)) return version_previous; else if (ctx.Match(k, Invk_version_previous_)) version_previous = m.ReadStr("v"); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String Invk_version_previous = "version_previous", Invk_version_previous_ = "version_previous_"; diff --git a/400_xowa/src/gplx/xowa/apps/apis/xowa/gui/Xoapi_browser.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/gui/Xoapi_browser.java index 4a8af27a3..7123acded 100644 --- a/400_xowa/src/gplx/xowa/apps/apis/xowa/gui/Xoapi_browser.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/gui/Xoapi_browser.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.apps.apis.xowa.gui; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.*; import gplx.xowa.apps.apis.xowa.gui.browsers.*; -public class Xoapi_browser implements GfoInvkAble { +public class Xoapi_browser implements Gfo_invk { public void Init_by_kit(Xoae_app app) { url.Init_by_kit(app); search.Init_by_kit(app); @@ -45,7 +45,7 @@ public class Xoapi_browser implements GfoInvkAble { else if (ctx.Match(k, Invk_prog)) return prog; else if (ctx.Match(k, Invk_info)) return info; else if (ctx.Match(k, Invk_prog_log)) return prog_log; - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; } private static final String Invk_url = "url", Invk_search = "search", Invk_tabs = "tabs", Invk_html = "html" diff --git a/400_xowa/src/gplx/xowa/apps/apis/xowa/gui/Xoapi_font.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/gui/Xoapi_font.java index d6a70c9c6..a28df971a 100644 --- a/400_xowa/src/gplx/xowa/apps/apis/xowa/gui/Xoapi_font.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/gui/Xoapi_font.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.apps.apis.xowa.gui; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.*; import gplx.xowa.apps.cfgs.gui.*; import gplx.xowa.htmls.*; -public class Xoapi_font implements GfoInvkAble { +public class Xoapi_font implements Gfo_invk { private Xoae_app app; public void Init_by_kit(Xoae_app app) { this.app = app; @@ -46,7 +46,7 @@ public class Xoapi_font implements GfoInvkAble { if (ctx.Match(k, Invk_increase)) this.Increase(); else if (ctx.Match(k, Invk_decrease)) this.Decrease(); else if (ctx.Match(k, Invk_reset)) this.Reset(); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String diff --git a/400_xowa/src/gplx/xowa/apps/apis/xowa/gui/Xoapi_page.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/gui/Xoapi_page.java index 00d372598..9da04b9ec 100644 --- a/400_xowa/src/gplx/xowa/apps/apis/xowa/gui/Xoapi_page.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/gui/Xoapi_page.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.apps.apis.xowa.gui; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.*; import gplx.xowa.apps.apis.xowa.gui.pages.*; -public class Xoapi_page implements GfoInvkAble { +public class Xoapi_page implements Gfo_invk { public void Init_by_kit(Xoae_app app) { view.Init_by_kit(app); selection.Init_by_kit(app); @@ -30,7 +30,7 @@ public class Xoapi_page implements GfoInvkAble { if (ctx.Match(k, Invk_view)) return view; else if (ctx.Match(k, Invk_selection)) return selection; else if (ctx.Match(k, Invk_edit)) return edit; - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; } private static final String Invk_view = "view", Invk_selection = "selection", Invk_edit = "edit"; } diff --git a/400_xowa/src/gplx/xowa/apps/apis/xowa/gui/browsers/Xoapi_find.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/gui/browsers/Xoapi_find.java index 701ad8535..48b6c483b 100644 --- a/400_xowa/src/gplx/xowa/apps/apis/xowa/gui/browsers/Xoapi_find.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/gui/browsers/Xoapi_find.java @@ -16,8 +16,9 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.apps.apis.xowa.gui.browsers; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.*; import gplx.xowa.apps.apis.xowa.gui.*; -import gplx.gfui.*; import gplx.xowa.wikis.pages.*; import gplx.xowa.guis.*; import gplx.xowa.guis.views.*; -public class Xoapi_find implements GfoInvkAble { +import gplx.gfui.*; import gplx.gfui.controls.standards.*; +import gplx.xowa.wikis.pages.*; import gplx.xowa.guis.*; import gplx.xowa.guis.views.*; +public class Xoapi_find implements Gfo_invk { private Xog_find_box find_box; public void Init_by_kit(Xoae_app app) { find_box = new Xog_find_box(app); @@ -32,7 +33,7 @@ public class Xoapi_find implements GfoInvkAble { else if (ctx.Match(k, Invk_case_toggle)) find_box.Case_toggle(); else if (ctx.Match(k, Invk_wrap_toggle)) find_box.Wrap_toggle(); else if (ctx.Match(k, Invk_hide)) find_box.Hide(); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String Invk_show = "show", Invk_show_by_paste = "show_by_paste", Invk_hide = "hide", Invk_exec = "exec", Invk_type = "type" diff --git a/400_xowa/src/gplx/xowa/apps/apis/xowa/gui/browsers/Xoapi_html_box.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/gui/browsers/Xoapi_html_box.java index ba4ccac49..39a126e32 100644 --- a/400_xowa/src/gplx/xowa/apps/apis/xowa/gui/browsers/Xoapi_html_box.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/gui/browsers/Xoapi_html_box.java @@ -16,13 +16,14 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.apps.apis.xowa.gui.browsers; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.*; import gplx.xowa.apps.apis.xowa.gui.*; -import gplx.gfui.*; import gplx.xowa.wikis.pages.*; import gplx.xowa.guis.*; import gplx.xowa.guis.views.*; -public class Xoapi_html_box implements GfoInvkAble, GfoEvMgrOwner { +import gplx.gfui.*; import gplx.gfui.controls.gxws.*; import gplx.gfui.controls.standards.*; +import gplx.xowa.wikis.pages.*; import gplx.xowa.guis.*; import gplx.xowa.guis.views.*; +public class Xoapi_html_box implements Gfo_invk, Gfo_evt_mgr_owner { private Xog_win_itm win; public Xoapi_html_box() { - evMgr = GfoEvMgr.new_(this); + evt_mgr = new Gfo_evt_mgr(this); } - public GfoEvMgr EvMgr() {return evMgr;} private GfoEvMgr evMgr; + public Gfo_evt_mgr Evt_mgr() {return evt_mgr;} private Gfo_evt_mgr evt_mgr; public void Init_by_kit(Xoae_app app) {this.win = app.Gui_mgr().Browser_win();} public byte Load_tid() {return load_tid;} private byte load_tid; public void Focus() { @@ -41,9 +42,9 @@ public class Xoapi_html_box implements GfoInvkAble, GfoEvMgrOwner { if (ctx.Match(k, Invk_focus)) this.Focus(); else if (ctx.Match(k, Invk_selection_focus_toggle)) this.Selection_focus(); else if (ctx.Match(k, Invk_load_tid)) return Gxw_html_load_tid_.Xto_key(load_tid); - else if (ctx.Match(k, Invk_load_tid_)) {load_tid = Gxw_html_load_tid_.Xto_tid(m.ReadStr("v")); GfoEvMgr_.PubVal(this, Evt_load_tid_changed, load_tid);} + else if (ctx.Match(k, Invk_load_tid_)) {load_tid = Gxw_html_load_tid_.Xto_tid(m.ReadStr("v")); Gfo_evt_mgr_.Pub_val(this, Evt_load_tid_changed, load_tid);} else if (ctx.Match(k, Invk_load_tid_list)) return Gxw_html_load_tid_.Options__list; - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String Invk_focus = "focus", Invk_selection_focus_toggle = "selection_focus_toggle" diff --git a/400_xowa/src/gplx/xowa/apps/apis/xowa/gui/browsers/Xoapi_info.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/gui/browsers/Xoapi_info.java index 39ef6b8e2..2272e9a4a 100644 --- a/400_xowa/src/gplx/xowa/apps/apis/xowa/gui/browsers/Xoapi_info.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/gui/browsers/Xoapi_info.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.apps.apis.xowa.gui.browsers; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.*; import gplx.xowa.apps.apis.xowa.gui.*; import gplx.gfui.*; import gplx.xowa.guis.views.*; -public class Xoapi_info implements Gfo_usr_dlg__gui__opt, GfoInvkAble { +public class Xoapi_info implements Gfo_usr_dlg__gui__opt, Gfo_invk { public void Init_by_kit(Xoae_app app) {this.app = app;} private Xoae_app app; private Xog_win_itm Win() {return app.Gui_mgr().Browser_win();} public void Focus() {this.Win().Info_box().Focus();} @@ -36,7 +36,7 @@ public class Xoapi_info implements Gfo_usr_dlg__gui__opt, GfoInvkAble { else if (ctx.Match(k, Invk_warn_enabled_)) warn_enabled = m.ReadYn("v"); else if (ctx.Match(k, Invk_note_enabled)) return Yn.To_str(note_enabled); else if (ctx.Match(k, Invk_note_enabled_)) note_enabled = m.ReadYn("v"); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String Invk_focus = "focus", Invk_clear = "clear", Invk_launch = "launch" diff --git a/400_xowa/src/gplx/xowa/apps/apis/xowa/gui/browsers/Xoapi_prog.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/gui/browsers/Xoapi_prog.java index 24860dbd2..0f157db6c 100644 --- a/400_xowa/src/gplx/xowa/apps/apis/xowa/gui/browsers/Xoapi_prog.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/gui/browsers/Xoapi_prog.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.apps.apis.xowa.gui.browsers; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.*; import gplx.xowa.apps.apis.xowa.gui.*; import gplx.gfui.*; import gplx.xowa.guis.views.*; -public class Xoapi_prog implements GfoInvkAble { +public class Xoapi_prog implements Gfo_invk { public void Init_by_kit(Xoae_app app) {this.app = app;} private Xoae_app app; private Xog_win_itm Win() {return app.Gui_mgr().Browser_win();} public boolean Show_short_url() {return show_short_url;} private boolean show_short_url; @@ -27,7 +27,7 @@ public class Xoapi_prog implements GfoInvkAble { if (ctx.Match(k, Invk_focus)) this.Focus(); else if (ctx.Match(k, Invk_show_short_url)) return Yn.To_str(show_short_url); else if (ctx.Match(k, Invk_show_short_url_)) show_short_url = m.ReadBool("v"); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String Invk_focus = "focus", Invk_show_short_url = "show_short_url", Invk_show_short_url_ = "show_short_url_"; diff --git a/400_xowa/src/gplx/xowa/apps/apis/xowa/gui/browsers/Xoapi_prog_log.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/gui/browsers/Xoapi_prog_log.java index a30fadbe3..6640c8e77 100644 --- a/400_xowa/src/gplx/xowa/apps/apis/xowa/gui/browsers/Xoapi_prog_log.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/gui/browsers/Xoapi_prog_log.java @@ -17,12 +17,12 @@ along with this program. If not, see . */ package gplx.xowa.apps.apis.xowa.gui.browsers; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.*; import gplx.xowa.apps.apis.xowa.gui.*; import gplx.gfui.*; import gplx.xowa.guis.views.*; -public class Xoapi_prog_log implements GfoInvkAble { +public class Xoapi_prog_log implements Gfo_invk { public void Init_by_kit(Xoae_app app) {this.app = app;} private Xoae_app app; public void Show() {app.Gui_mgr().Show_prog();} public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_show)) this.Show(); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String Invk_show = "show"; diff --git a/400_xowa/src/gplx/xowa/apps/apis/xowa/gui/browsers/Xoapi_search.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/gui/browsers/Xoapi_search.java index 508d90256..da9fe685c 100644 --- a/400_xowa/src/gplx/xowa/apps/apis/xowa/gui/browsers/Xoapi_search.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/gui/browsers/Xoapi_search.java @@ -16,8 +16,8 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.apps.apis.xowa.gui.browsers; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.*; import gplx.xowa.apps.apis.xowa.gui.*; -import gplx.gfui.*; import gplx.xowa.guis.views.*; -public class Xoapi_search implements GfoInvkAble { +import gplx.gfui.*; import gplx.gfui.controls.standards.*; import gplx.xowa.guis.views.*; +public class Xoapi_search implements Gfo_invk { public void Init_by_kit(Xoae_app app) {this.app = app;} private Xoae_app app; private GfuiTextBox Search_box() {return app.Gui_mgr().Browser_win().Search_box();} private Xog_win_itm Win() {return app.Gui_mgr().Browser_win();} @@ -26,7 +26,7 @@ public class Xoapi_search implements GfoInvkAble { public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_focus)) this.Focus(); else if (ctx.Match(k, Invk_exec)) this.Exec(); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String Invk_focus = "focus"; diff --git a/400_xowa/src/gplx/xowa/apps/apis/xowa/gui/browsers/Xoapi_tabs.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/gui/browsers/Xoapi_tabs.java index 8a97b27df..bfb73bc73 100644 --- a/400_xowa/src/gplx/xowa/apps/apis/xowa/gui/browsers/Xoapi_tabs.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/gui/browsers/Xoapi_tabs.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.apps.apis.xowa.gui.browsers; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.*; import gplx.xowa.apps.apis.xowa.gui.*; import gplx.xowa.guis.views.*; -public class Xoapi_tabs implements GfoInvkAble { +public class Xoapi_tabs implements Gfo_invk { private Xog_tab_mgr tab_mgr; public void Init_by_kit(Xoae_app app) { this.tab_mgr = app.Gui_mgr().Browser_win().Tab_mgr(); @@ -70,7 +70,7 @@ public class Xoapi_tabs implements GfoInvkAble { else if (ctx.Match(k, Invk_select_by_idx_7)) this.Select_by_idx(7); else if (ctx.Match(k, Invk_select_by_idx_8)) this.Select_by_idx(8); else if (ctx.Match(k, Invk_select_by_idx_9)) this.Select_by_idx(9); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String diff --git a/400_xowa/src/gplx/xowa/apps/apis/xowa/gui/browsers/Xoapi_url.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/gui/browsers/Xoapi_url.java index 2af2bc08e..7e49793ed 100644 --- a/400_xowa/src/gplx/xowa/apps/apis/xowa/gui/browsers/Xoapi_url.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/gui/browsers/Xoapi_url.java @@ -16,8 +16,9 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.apps.apis.xowa.gui.browsers; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.*; import gplx.xowa.apps.apis.xowa.gui.*; -import gplx.gfui.*; import gplx.xowa.guis.views.*; import gplx.core.envs.*; -public class Xoapi_url implements GfoInvkAble { +import gplx.gfui.*; import gplx.gfui.envs.*; import gplx.gfui.controls.standards.*; +import gplx.xowa.guis.views.*; import gplx.core.envs.*; +public class Xoapi_url implements Gfo_invk { private Xoae_app app; private Xoapi_url_searcher url_searcher; public void Init_by_kit(Xoae_app app) { @@ -74,7 +75,7 @@ public class Xoapi_url implements GfoInvkAble { else if (ctx.Match(k, Invk_exec_new_tab_by_paste)) this.Exec_new_tab_by_paste(); else if (ctx.Match(k, Invk_restore)) this.Restore(); else if (ctx.Match(k, Invk_type)) this.Type(); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String Invk_focus = "focus", Invk_exec_by_paste = "exec_by_paste", Invk_exec_new_tab_by_paste = "exec_new_tab_by_paste", Invk_restore = "restore", Invk_type = "type"; diff --git a/400_xowa/src/gplx/xowa/apps/apis/xowa/gui/browsers/Xoapi_url_searcher.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/gui/browsers/Xoapi_url_searcher.java index 8b0e7bb6e..2c54be3d3 100644 --- a/400_xowa/src/gplx/xowa/apps/apis/xowa/gui/browsers/Xoapi_url_searcher.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/gui/browsers/Xoapi_url_searcher.java @@ -16,24 +16,24 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.apps.apis.xowa.gui.browsers; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.*; import gplx.xowa.apps.apis.xowa.gui.*; -import gplx.gfui.*; -import gplx.xowa.addons.apps.searchs.*; import gplx.xowa.addons.apps.searchs.searchers.*; import gplx.xowa.addons.apps.searchs.searchers.cbks.*; +import gplx.gfui.*; import gplx.gfui.controls.standards.*; +import gplx.xowa.addons.wikis.searchs.*; import gplx.xowa.addons.wikis.searchs.searchers.*; import gplx.xowa.addons.wikis.searchs.searchers.cbks.*; import gplx.xowa.apps.apis.xowa.addons.searchs.*; import gplx.xowa.guis.views.*; -class Xoapi_url_searcher implements GfoEvObj { +class Xoapi_url_searcher implements Gfo_evt_itm { private final Xoae_app app; private final Xoapi_url_bar url_bar_api; private Srch_search_addon addon; private final GfuiComboBox url_bar; public Xoapi_url_searcher(Xoae_app app) { // called by Init_by_kit this.app = app; - this.evMgr = GfoEvMgr.new_(this); + this.evt_mgr = new Gfo_evt_mgr(this); this.url_bar = app.Gui_mgr().Browser_win().Url_box(); this.url_bar_api = app.Api_root().Addon().Search().Url_bar(); - GfoEvMgr_.SubSame_many(url_bar_api, this, Xoapi_url_bar.Evt__jump_len_changed, Xoapi_url_bar.Evt__visible_rows_changed, Xoapi_url_bar.Evt__ns_ids_changed); + Gfo_evt_mgr_.Sub_same_many(url_bar_api, this, Xoapi_url_bar.Evt__jump_len_changed, Xoapi_url_bar.Evt__visible_rows_changed, Xoapi_url_bar.Evt__ns_ids_changed); url_bar.Items__jump_len_(url_bar_api.Jump_len()); url_bar.Items__visible_rows_(url_bar_api.Visible_rows()); } - public GfoEvMgr EvMgr() {return evMgr;} private final GfoEvMgr evMgr; + public Gfo_evt_mgr Evt_mgr() {return evt_mgr;} private final Gfo_evt_mgr evt_mgr; public void Search() { if (!url_bar_api.Enabled()) return; Xog_tab_itm active_tab = app.Gui_mgr().Browser_win().Tab_mgr().Active_tab(); if (active_tab == null) return; diff --git a/400_xowa/src/gplx/xowa/apps/apis/xowa/gui/pages/Xoapi_edit.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/gui/pages/Xoapi_edit.java index 33d87e5df..d5421fd27 100644 --- a/400_xowa/src/gplx/xowa/apps/apis/xowa/gui/pages/Xoapi_edit.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/gui/pages/Xoapi_edit.java @@ -16,8 +16,9 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.apps.apis.xowa.gui.pages; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.*; import gplx.xowa.apps.apis.xowa.gui.*; +import gplx.gfui.kits.core.*; import gplx.xowa.guis.*; import gplx.xowa.guis.views.*; import gplx.xowa.wikis.pages.*; -public class Xoapi_edit implements GfoInvkAble { +public class Xoapi_edit implements Gfo_invk { private Xog_win_itm win; public void Init_by_kit(Xoae_app app) { win = app.Gui_mgr().Browser_win(); @@ -25,7 +26,7 @@ public class Xoapi_edit implements GfoInvkAble { private boolean Active_tab_is_null() {return win.Tab_mgr().Active_tab_is_null();} private boolean Active_tab_is_edit() {return !win.Tab_mgr().Active_tab_is_null() && win.Tab_mgr().Active_tab().View_mode() == Xopg_page_.Tid_edit;} public void Copy() {if (Active_tab_is_null()) return; win.Kit().Clipboard().Copy(win.Active_html_itm().Html_selected_get_text_or_href());} - public void Select_all() {if (Active_tab_is_null()) return; GfoInvkAble_.InvkCmd(win.Win_box().Kit().Clipboard(), gplx.gfui.Gfui_clipboard_.Invk_select_all);} + public void Select_all() {if (Active_tab_is_null()) return; Gfo_invk_.Invk_by_key(win.Win_box().Kit().Clipboard(), Gfui_clipboard_.Invk_select_all);} public void Save() {if (!Active_tab_is_edit()) return; Xog_tab_itm_edit_mgr.Save(win.Active_tab(), false);} public void Save_draft() {if (!Active_tab_is_edit()) return; Xog_tab_itm_edit_mgr.Save(win.Active_tab(), true);} public void Preview() {if (!Active_tab_is_edit()) return; Xog_tab_itm_edit_mgr.Preview(win.Active_tab());} @@ -44,7 +45,7 @@ public class Xoapi_edit implements GfoInvkAble { else if (ctx.Match(k, Invk_dbg_tmpl)) this.Dbg_tmpl(); else if (ctx.Match(k, Invk_dbg_html)) this.Dbg_html(); else if (ctx.Match(k, Invk_exec)) this.Exec(); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String diff --git a/400_xowa/src/gplx/xowa/apps/apis/xowa/gui/pages/Xoapi_selection.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/gui/pages/Xoapi_selection.java index e16e9267c..f34adaf76 100644 --- a/400_xowa/src/gplx/xowa/apps/apis/xowa/gui/pages/Xoapi_selection.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/gui/pages/Xoapi_selection.java @@ -16,8 +16,8 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.apps.apis.xowa.gui.pages; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.*; import gplx.xowa.apps.apis.xowa.gui.*; -import gplx.gfui.*; import gplx.xowa.guis.*; import gplx.xowa.guis.views.*; import gplx.core.envs.*; -public class Xoapi_selection implements GfoInvkAble { +import gplx.gfui.*; import gplx.gfui.kits.core.*; import gplx.xowa.guis.*; import gplx.xowa.guis.views.*; import gplx.core.envs.*; +public class Xoapi_selection implements Gfo_invk { private Xoae_app app; private Xog_win_itm win; public void Init_by_kit(Xoae_app app) { this.app = app; @@ -25,7 +25,7 @@ public class Xoapi_selection implements GfoInvkAble { } private boolean Active_tab_is_null() {return win.Tab_mgr().Active_tab_is_null();} public void Copy() {if (Active_tab_is_null()) return; win.Kit().Clipboard().Copy(win.Active_html_itm().Html_selected_get_text_or_href());} - public void Select_all() {if (Active_tab_is_null()) return; GfoInvkAble_.InvkCmd(win.Win_box().Kit().Clipboard(), gplx.gfui.Gfui_clipboard_.Invk_select_all);} + public void Select_all() {if (Active_tab_is_null()) return; Gfo_invk_.Invk_by_key(win.Win_box().Kit().Clipboard(), Gfui_clipboard_.Invk_select_all);} public void Save_file_as() { if (this.Active_tab_is_null()) return; Xog_html_itm html_itm = win.Tab_mgr().Active_tab().Html_itm(); @@ -43,7 +43,7 @@ public class Xoapi_selection implements GfoInvkAble { if (ctx.Match(k, Invk_copy)) this.Copy(); else if (ctx.Match(k, Invk_select_all)) this.Select_all(); else if (ctx.Match(k, Invk_save_file_as)) this.Save_file_as(); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String diff --git a/400_xowa/src/gplx/xowa/apps/apis/xowa/gui/pages/Xoapi_view.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/gui/pages/Xoapi_view.java index 54baeb0f6..f7a81dcfb 100644 --- a/400_xowa/src/gplx/xowa/apps/apis/xowa/gui/pages/Xoapi_view.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/gui/pages/Xoapi_view.java @@ -16,8 +16,8 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.apps.apis.xowa.gui.pages; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.*; import gplx.xowa.apps.apis.xowa.gui.*; -import gplx.gfui.*; import gplx.xowa.guis.*; import gplx.xowa.guis.views.*; import gplx.xowa.wikis.pages.*; -public class Xoapi_view implements GfoInvkAble { +import gplx.gfui.*; import gplx.gfui.kits.core.*; import gplx.xowa.guis.*; import gplx.xowa.guis.views.*; import gplx.xowa.wikis.pages.*; +public class Xoapi_view implements Gfo_invk { private Xoae_app app; private Xog_win_itm win; public void Init_by_kit(Xoae_app app) { this.app = app; this.win = app.Gui_mgr().Browser_win(); @@ -50,7 +50,7 @@ public class Xoapi_view implements GfoInvkAble { else if (ctx.Match(k, Invk_refresh)) this.Refresh(); else if (ctx.Match(k, Invk_print)) this.Print(); else if (ctx.Match(k, Invk_save_as)) this.Save_as(); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String diff --git a/400_xowa/src/gplx/xowa/apps/apis/xowa/html/Xoapi_modules.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/html/Xoapi_modules.java index 1e6a16d5a..4d8b11d67 100644 --- a/400_xowa/src/gplx/xowa/apps/apis/xowa/html/Xoapi_modules.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/html/Xoapi_modules.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.apps.apis.xowa.html; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.*; import gplx.xowa.apps.apis.xowa.html.modules.*; -public class Xoapi_modules implements GfoInvkAble { +public class Xoapi_modules implements Gfo_invk { public void Init_by_kit(Xoae_app app) { popups.Init_by_app(app); } @@ -30,7 +30,7 @@ public class Xoapi_modules implements GfoInvkAble { else if (ctx.Match(k, Invk_navframe)) return navframe; else if (ctx.Match(k, Invk_toc)) return toc; else if (ctx.Match(k, Invk_popups)) return popups; - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; } private static final String Invk_collapsible = "collapsible", Invk_navframe = "navframe", Invk_toc = "toc", Invk_popups = "popups"; } diff --git a/400_xowa/src/gplx/xowa/apps/apis/xowa/html/Xoapi_page.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/html/Xoapi_page.java index 93eb94b5f..297dd5713 100644 --- a/400_xowa/src/gplx/xowa/apps/apis/xowa/html/Xoapi_page.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/html/Xoapi_page.java @@ -16,18 +16,14 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.apps.apis.xowa.html; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.*; -import gplx.core.btries.*; -public class Xoapi_page implements GfoInvkAble { +public class Xoapi_page implements Gfo_invk { public void Ctor_by_app(Xoae_app app) { toggle_mgr.Ctor_by_app(app); } - public boolean View_html_generates_hdump() {return view_html_generates_hdump;} private boolean view_html_generates_hdump = false; - public Xoapi_toggle_mgr Toggle_mgr() {return toggle_mgr;} private final Xoapi_toggle_mgr toggle_mgr = new Xoapi_toggle_mgr(); + public Xoapi_toggle_mgr Toggle_mgr() {return toggle_mgr;} private final Xoapi_toggle_mgr toggle_mgr = new Xoapi_toggle_mgr(); public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_toggles)) return toggle_mgr; - else if (ctx.Match(k, Invk_view_html_generates_hdump_)) view_html_generates_hdump = m.ReadYn("v"); - else return GfoInvkAble_.Rv_unhandled; - return this; + else return Gfo_invk_.Rv_unhandled; } - private static final String Invk_toggles = "toggles", Invk_view_html_generates_hdump_ = "view_html_generates_hdump_"; + private static final String Invk_toggles = "toggles"; } diff --git a/400_xowa/src/gplx/xowa/apps/apis/xowa/html/Xoapi_skins.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/html/Xoapi_skins.java index 96c3dc526..7a90dc8a6 100644 --- a/400_xowa/src/gplx/xowa/apps/apis/xowa/html/Xoapi_skins.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/html/Xoapi_skins.java @@ -17,8 +17,8 @@ along with this program. If not, see . */ package gplx.xowa.apps.apis.xowa.html; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.*; import gplx.xowa.apps.apis.xowa.html.skins.*; -public class Xoapi_skins implements GfoInvkAble { - private Hash_adp hash = Hash_adp_.new_(); +public class Xoapi_skins implements Gfo_invk { + private Hash_adp hash = Hash_adp_.New(); public Xoapi_skins() { server.Sidebar_home_enabled_(true); hash.Add("desktop", desktop); @@ -26,7 +26,7 @@ public class Xoapi_skins implements GfoInvkAble { } public Xoapi_skin_app_base Desktop() {return desktop;} private Xoapi_skin_app_base desktop = new Xoapi_skin_app_base(); public Xoapi_skin_app_base Server () {return server ;} private Xoapi_skin_app_base server = new Xoapi_skin_app_base(); - private GfoInvkAble Get(String key) {return (GfoInvkAble)hash.Get_by(key);} + private Gfo_invk Get(String key) {return (Gfo_invk)hash.Get_by(key);} public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_get)) return Get(m.ReadStr("v")); return this; diff --git a/400_xowa/src/gplx/xowa/apps/apis/xowa/html/Xoapi_tidy.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/html/Xoapi_tidy.java index c58cdc1b9..618abefd1 100644 --- a/400_xowa/src/gplx/xowa/apps/apis/xowa/html/Xoapi_tidy.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/html/Xoapi_tidy.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.apps.apis.xowa.html; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.*; import gplx.xowa.htmls.core.htmls.tidy.*; -public class Xoapi_tidy implements GfoInvkAble { +public class Xoapi_tidy implements Gfo_invk { private Xoae_app app; public void Init_by_kit(Xoae_app app) { this.app = app; @@ -33,7 +33,7 @@ public class Xoapi_tidy implements GfoInvkAble { if (ctx.Match(k, Invk_toggle)) this.Toggle(); else if (ctx.Match(k, Invk_engine_tidy_)) Engine_(Xoh_tidy_wkr_.Tid_tidy); else if (ctx.Match(k, Invk_engine_jtidy_)) Engine_(Xoh_tidy_wkr_.Tid_jtidy); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String Invk_toggle = "toggle", Invk_engine_tidy_ = "engine_tidy_", Invk_engine_jtidy_ = "engine_jtidy_"; diff --git a/400_xowa/src/gplx/xowa/apps/apis/xowa/html/Xoapi_toggle_itm.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/html/Xoapi_toggle_itm.java index 2911ed6df..7dee1f804 100644 --- a/400_xowa/src/gplx/xowa/apps/apis/xowa/html/Xoapi_toggle_itm.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/html/Xoapi_toggle_itm.java @@ -17,13 +17,13 @@ along with this program. If not, see . */ package gplx.xowa.apps.apis.xowa.html; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.*; import gplx.core.brys.fmtrs.*; -public class Xoapi_toggle_itm implements GfoInvkAble { - private final Xoae_app app; // NOTE: needed to get "img_dir" below +public class Xoapi_toggle_itm implements Gfo_invk { + private final Xoae_app app; // NOTE: needed to get "img_dir" below private byte[] img_title_val_y, img_title_val_n; public Xoapi_toggle_itm(Xoae_app app, byte[] key_bry) { this.app = app; this.key_bry = key_bry; } - public byte[] Key_bry() {return key_bry;} private final byte[] key_bry; + public byte[] Key_bry() {return key_bry;} private final byte[] key_bry; public byte[] Heading_bry() {return heading_bry;} private byte[] heading_bry; public byte[] Icon_src() {return icon_src;} private byte[] icon_src = Bry_.Empty; public byte[] Icon_title() {return icon_title;} private byte[] icon_title = Bry_.Empty; @@ -69,7 +69,7 @@ public class Xoapi_toggle_itm implements GfoInvkAble { icon_title = img_title_val_n; elem_display = Img_display_n; } - Bry_fmtr fmtr = Bry_fmtr.new_(); Bry_bfr bfr = Bry_bfr.new_(8); + Bry_fmtr fmtr = Bry_fmtr.new_(); Bry_bfr bfr = Bry_bfr_.New_w_size(8); html_toggle_btn = fmtr.Fmt_("~{heading}") .Keys_("key", "src", "title", "heading").Bld_bry_many(bfr, key_bry, icon_src, icon_title, heading_bry) @@ -82,12 +82,12 @@ public class Xoapi_toggle_itm implements GfoInvkAble { public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_visible)) return Yn.To_str(visible); else if (ctx.Match(k, Invk_visible_)) this.visible = m.ReadYn("v"); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String Invk_visible = "visible", Invk_visible_ = "visible_"; private static byte[] Img_src_y, Img_src_n; // assume these are the same for all itms - private static final byte[] + private static final byte[] Img_title_msg_y = Bry_.new_a7("hide"), Img_title_msg_n = Bry_.new_a7("show") , Img_display_y = Bry_.new_a7("display:;"), Img_display_n = Bry_.new_a7("display:none;") ; diff --git a/400_xowa/src/gplx/xowa/apps/apis/xowa/html/Xoapi_toggle_mgr.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/html/Xoapi_toggle_mgr.java index c1a7c5bb7..c7fae2c7e 100644 --- a/400_xowa/src/gplx/xowa/apps/apis/xowa/html/Xoapi_toggle_mgr.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/html/Xoapi_toggle_mgr.java @@ -17,9 +17,9 @@ along with this program. If not, see . */ package gplx.xowa.apps.apis.xowa.html; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.*; import gplx.xowa.apps.cfgs.*; -public class Xoapi_toggle_mgr implements GfoInvkAble { +public class Xoapi_toggle_mgr implements Gfo_invk { private Xoae_app app; - private final Ordered_hash hash = Ordered_hash_.New_bry(); + private final Ordered_hash hash = Ordered_hash_.New_bry(); public void Ctor_by_app(Xoae_app app) {this.app = app;} public Xoapi_toggle_itm Get_or_new(String key_str) { byte[] key_bry = Bry_.new_u8(key_str); @@ -46,7 +46,7 @@ public class Xoapi_toggle_mgr implements GfoInvkAble { } public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_get)) return this.Get_or_new(m.ReadStr("key")); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; } private static final String Invk_get = "get"; } diff --git a/400_xowa/src/gplx/xowa/apps/apis/xowa/html/modules/Xoapi_collapsible.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/html/modules/Xoapi_collapsible.java index 4bc92977d..cf91907d5 100644 --- a/400_xowa/src/gplx/xowa/apps/apis/xowa/html/modules/Xoapi_collapsible.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/html/modules/Xoapi_collapsible.java @@ -16,14 +16,14 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.apps.apis.xowa.html.modules; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.*; import gplx.xowa.apps.apis.xowa.html.*; -public class Xoapi_collapsible implements GfoInvkAble { +public class Xoapi_collapsible implements Gfo_invk { public void Init_by_kit(Xoae_app app) { } public boolean Collapsed() {return collapsed;} private boolean collapsed; public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_collapsed)) return Yn.To_str(collapsed); else if (ctx.Match(k, Invk_collapsed_)) collapsed = m.ReadYn("v"); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String diff --git a/400_xowa/src/gplx/xowa/apps/apis/xowa/html/modules/Xoapi_navframe.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/html/modules/Xoapi_navframe.java index ae742f2d2..1cf210b87 100644 --- a/400_xowa/src/gplx/xowa/apps/apis/xowa/html/modules/Xoapi_navframe.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/html/modules/Xoapi_navframe.java @@ -16,14 +16,14 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.apps.apis.xowa.html.modules; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.*; import gplx.xowa.apps.apis.xowa.html.*; -public class Xoapi_navframe implements GfoInvkAble { +public class Xoapi_navframe implements Gfo_invk { public void Init_by_kit(Xoae_app app) { } public boolean Collapsed() {return collapsed;} private boolean collapsed; public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_collapsed)) return Yn.To_str(collapsed); else if (ctx.Match(k, Invk_collapsed_)) collapsed = m.ReadYn("v"); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String diff --git a/400_xowa/src/gplx/xowa/apps/apis/xowa/html/modules/Xoapi_popups.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/html/modules/Xoapi_popups.java index e96682613..d53cb2ea7 100644 --- a/400_xowa/src/gplx/xowa/apps/apis/xowa/html/modules/Xoapi_popups.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/html/modules/Xoapi_popups.java @@ -17,12 +17,12 @@ along with this program. If not, see . */ package gplx.xowa.apps.apis.xowa.html.modules; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.*; import gplx.xowa.apps.apis.xowa.html.*; import gplx.xowa.htmls.modules.popups.*; -public class Xoapi_popups implements GfoInvkAble, GfoEvMgrOwner { +public class Xoapi_popups implements Gfo_invk, Gfo_evt_mgr_owner { private Xoae_app app; public Xoapi_popups() { - evMgr = GfoEvMgr.new_(this); + evt_mgr = new Gfo_evt_mgr(this); } - public GfoEvMgr EvMgr() {return evMgr;} private GfoEvMgr evMgr; + public Gfo_evt_mgr Evt_mgr() {return evt_mgr;} private Gfo_evt_mgr evt_mgr; public void Init_by_app(Xoae_app app) {this.app = app;} public boolean Enabled() {return enabled;} public void Enabled_(boolean v) {enabled = v;} private boolean enabled = true; public int Show_init_word_count() {return show_init_word_count;} private int show_init_word_count = Dflt_show_init_word_count; @@ -83,51 +83,51 @@ public class Xoapi_popups implements GfoInvkAble, GfoEvMgrOwner { else if (ctx.Match(k, Invk_win_bind_focus_blur)) return Yn.To_str(win_bind_focus_blur); else if (ctx.Match(k, Invk_win_bind_focus_blur_)) win_bind_focus_blur = m.ReadYn("v"); else if (ctx.Match(k, Invk_xnde_ignore_ids)) return String_.new_u8(xnde_ignore_ids); - else if (ctx.Match(k, Invk_xnde_ignore_ids_)) {xnde_ignore_ids = m.ReadBry("v"); GfoEvMgr_.PubVal(this, Evt_xnde_ignore_ids_changed, xnde_ignore_ids);} + else if (ctx.Match(k, Invk_xnde_ignore_ids_)) {xnde_ignore_ids = m.ReadBry("v"); Gfo_evt_mgr_.Pub_val(this, Evt_xnde_ignore_ids_changed, xnde_ignore_ids);} else if (ctx.Match(k, Invk_scan_len)) return scan_len; else if (ctx.Match(k, Invk_scan_len_)) {scan_len = Set_int_gt_0(m, scan_len, Evt_scan_len_changed);} else if (ctx.Match(k, Invk_scan_max)) return scan_max; else if (ctx.Match(k, Invk_scan_max_)) {scan_max = Set_int_gt_0(m, scan_max, Evt_scan_max_changed);} else if (ctx.Match(k, Invk_read_til_stop_fwd)) return read_til_stop_fwd; - else if (ctx.Match(k, Invk_read_til_stop_fwd_)) {read_til_stop_fwd = m.ReadInt("v"); GfoEvMgr_.PubVal(this, Evt_read_til_stop_fwd_changed, read_til_stop_fwd);} + else if (ctx.Match(k, Invk_read_til_stop_fwd_)) {read_til_stop_fwd = m.ReadInt("v"); Gfo_evt_mgr_.Pub_val(this, Evt_read_til_stop_fwd_changed, read_til_stop_fwd);} else if (ctx.Match(k, Invk_read_til_stop_bwd)) return read_til_stop_bwd; - else if (ctx.Match(k, Invk_read_til_stop_bwd_)) {read_til_stop_bwd = m.ReadInt("v"); GfoEvMgr_.PubVal(this, Evt_read_til_stop_bwd_changed, read_til_stop_bwd);} + else if (ctx.Match(k, Invk_read_til_stop_bwd_)) {read_til_stop_bwd = m.ReadInt("v"); Gfo_evt_mgr_.Pub_val(this, Evt_read_til_stop_bwd_changed, read_til_stop_bwd);} else if (ctx.Match(k, Invk_stop_if_hdr_after)) return stop_if_hdr_after; - else if (ctx.Match(k, Invk_stop_if_hdr_after_)) {stop_if_hdr_after = m.ReadInt("v"); GfoEvMgr_.PubVal(this, Evt_stop_if_hdr_after_changed, stop_if_hdr_after);} + else if (ctx.Match(k, Invk_stop_if_hdr_after_)) {stop_if_hdr_after = m.ReadInt("v"); Gfo_evt_mgr_.Pub_val(this, Evt_stop_if_hdr_after_changed, stop_if_hdr_after);} else if (ctx.Match(k, Invk_ns_allowed)) return String_.new_u8(ns_allowed); - else if (ctx.Match(k, Invk_ns_allowed_)) {ns_allowed = m.ReadBry("v"); GfoEvMgr_.PubVal(this, Evt_ns_allowed_changed, ns_allowed);} + else if (ctx.Match(k, Invk_ns_allowed_)) {ns_allowed = m.ReadBry("v"); Gfo_evt_mgr_.Pub_val(this, Evt_ns_allowed_changed, ns_allowed);} else if (ctx.Match(k, Invk_tmpl_tkn_max)) return tmpl_tkn_max; - else if (ctx.Match(k, Invk_tmpl_tkn_max_)) {tmpl_tkn_max = m.ReadInt("v"); GfoEvMgr_.PubVal(this, Evt_tmpl_tkn_max_changed, tmpl_tkn_max);} + else if (ctx.Match(k, Invk_tmpl_tkn_max_)) {tmpl_tkn_max = m.ReadInt("v"); Gfo_evt_mgr_.Pub_val(this, Evt_tmpl_tkn_max_changed, tmpl_tkn_max);} else if (ctx.Match(k, Invk_tmpl_keeplist)) return String_.new_u8(tmpl_keeplist); - else if (ctx.Match(k, Invk_tmpl_keeplist_)) {tmpl_keeplist = m.ReadBry("v"); GfoEvMgr_.PubVal(this, Evt_tmpl_keeplist_changed, tmpl_keeplist);} + else if (ctx.Match(k, Invk_tmpl_keeplist_)) {tmpl_keeplist = m.ReadBry("v"); Gfo_evt_mgr_.Pub_val(this, Evt_tmpl_keeplist_changed, tmpl_keeplist);} else if (ctx.Match(k, Invk_html_fmtr_popup)) return String_.new_u8(html_fmtr_popup); - else if (ctx.Match(k, Invk_html_fmtr_popup_)) {html_fmtr_popup = m.ReadBry("v"); GfoEvMgr_.PubVal(this, Evt_html_fmtr_popup_changed, html_fmtr_popup);} + else if (ctx.Match(k, Invk_html_fmtr_popup_)) {html_fmtr_popup = m.ReadBry("v"); Gfo_evt_mgr_.Pub_val(this, Evt_html_fmtr_popup_changed, html_fmtr_popup);} else if (ctx.Match(k, Invk_html_fmtr_popup_dflt)) return String_.new_u8(html_fmtr_popup_dflt); else if (ctx.Match(k, Invk_html_fmtr_popup_dflt_)) {html_fmtr_popup_dflt = m.ReadBry("v");} else if (ctx.Match(k, Invk_html_fmtr_viewed)) return String_.new_u8(html_fmtr_viewed); - else if (ctx.Match(k, Invk_html_fmtr_viewed_)) {html_fmtr_viewed = m.ReadBry("v"); GfoEvMgr_.PubVal(this, Evt_html_fmtr_viewed_changed, html_fmtr_viewed);} + else if (ctx.Match(k, Invk_html_fmtr_viewed_)) {html_fmtr_viewed = m.ReadBry("v"); Gfo_evt_mgr_.Pub_val(this, Evt_html_fmtr_viewed_changed, html_fmtr_viewed);} else if (ctx.Match(k, Invk_html_fmtr_viewed_dflt)) return String_.new_u8(html_fmtr_viewed_dflt); else if (ctx.Match(k, Invk_html_fmtr_viewed_dflt_)) {html_fmtr_viewed_dflt = m.ReadBry("v");} else if (ctx.Match(k, Invk_html_fmtr_wiki)) return String_.new_u8(html_fmtr_wiki); - else if (ctx.Match(k, Invk_html_fmtr_wiki_)) {html_fmtr_wiki = m.ReadBry("v"); GfoEvMgr_.PubVal(this, Evt_html_fmtr_wiki_changed, html_fmtr_wiki);} + else if (ctx.Match(k, Invk_html_fmtr_wiki_)) {html_fmtr_wiki = m.ReadBry("v"); Gfo_evt_mgr_.Pub_val(this, Evt_html_fmtr_wiki_changed, html_fmtr_wiki);} else if (ctx.Match(k, Invk_html_fmtr_wiki_dflt)) return String_.new_u8(html_fmtr_wiki_dflt); else if (ctx.Match(k, Invk_html_fmtr_wiki_dflt_)) {html_fmtr_wiki_dflt = m.ReadBry("v");} else if (ctx.Match(k, Invk_html_fmtr_next_sect)) return String_.new_u8(html_fmtr_next_sect); - else if (ctx.Match(k, Invk_html_fmtr_next_sect_)) {html_fmtr_next_sect = m.ReadBry("v"); GfoEvMgr_.PubVal(this, Evt_html_fmtr_next_sect_changed, html_fmtr_next_sect);} + else if (ctx.Match(k, Invk_html_fmtr_next_sect_)) {html_fmtr_next_sect = m.ReadBry("v"); Gfo_evt_mgr_.Pub_val(this, Evt_html_fmtr_next_sect_changed, html_fmtr_next_sect);} else if (ctx.Match(k, Invk_html_fmtr_next_sect_dflt)) return String_.new_u8(html_fmtr_next_sect_dflt); else if (ctx.Match(k, Invk_html_fmtr_next_sect_dflt_)) {html_fmtr_next_sect_dflt = m.ReadBry("v");} - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private int Set_int_gt_0(GfoMsg m, int cur_val, String evt) { int tmp = m.ReadInt("v"); if (tmp < 1) return cur_val; - GfoEvMgr_.PubVal(this, evt, tmp); + Gfo_evt_mgr_.Pub_val(this, evt, tmp); return tmp; } private int Set_int(GfoMsg m, int cur_val, String evt) { int tmp = m.ReadInt("v"); - GfoEvMgr_.PubVal(this, evt, tmp); + Gfo_evt_mgr_.Pub_val(this, evt, tmp); return tmp; } private static final String diff --git a/400_xowa/src/gplx/xowa/apps/apis/xowa/html/modules/Xoapi_toc.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/html/modules/Xoapi_toc.java index 0442b64ac..c7706bb8c 100644 --- a/400_xowa/src/gplx/xowa/apps/apis/xowa/html/modules/Xoapi_toc.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/html/modules/Xoapi_toc.java @@ -16,14 +16,14 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.apps.apis.xowa.html.modules; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.*; import gplx.xowa.apps.apis.xowa.html.*; -public class Xoapi_toc implements GfoInvkAble { +public class Xoapi_toc implements Gfo_invk { public void Init_by_kit(Xoae_app app) { } public boolean Collapsed() {return collapsed;} private boolean collapsed = false; public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_collapsed)) return Yn.To_str(collapsed); else if (ctx.Match(k, Invk_collapsed_)) collapsed = m.ReadYn("v"); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String diff --git a/400_xowa/src/gplx/xowa/apps/apis/xowa/html/skins/Xoapi_skin_app_base.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/html/skins/Xoapi_skin_app_base.java index bfb2b8225..0a7930013 100644 --- a/400_xowa/src/gplx/xowa/apps/apis/xowa/html/skins/Xoapi_skin_app_base.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/html/skins/Xoapi_skin_app_base.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.apps.apis.xowa.html.skins; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.*; import gplx.xowa.apps.apis.xowa.html.*; -public class Xoapi_skin_app_base implements GfoInvkAble { +public class Xoapi_skin_app_base implements Gfo_invk { public void Init_by_kit(Xoae_app app) { } public boolean Sidebar_home_enabled() {return sidebar_home_enabled;} public void Sidebar_home_enabled_(boolean v) {sidebar_home_enabled = v;} private boolean sidebar_home_enabled; diff --git a/400_xowa/src/gplx/xowa/apps/apis/xowa/navs/Xoapi_wiki.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/navs/Xoapi_nav_wiki.java similarity index 94% rename from 400_xowa/src/gplx/xowa/apps/apis/xowa/navs/Xoapi_wiki.java rename to 400_xowa/src/gplx/xowa/apps/apis/xowa/navs/Xoapi_nav_wiki.java index 61c99da7f..61ba56230 100644 --- a/400_xowa/src/gplx/xowa/apps/apis/xowa/navs/Xoapi_wiki.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/navs/Xoapi_nav_wiki.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.xowa.apps.apis.xowa.navs; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.*; import gplx.xowa.guis.views.*; import gplx.xowa.htmls.hrefs.*; -public class Xoapi_wiki implements GfoInvkAble { +public class Xoapi_nav_wiki implements Gfo_invk { private Xog_win_itm win; public void Init_by_kit(Xoae_app app) { win = app.Gui_mgr().Browser_win(); @@ -33,7 +33,7 @@ public class Xoapi_wiki implements GfoInvkAble { if (ctx.Match(k, Invk_main_page)) this.Main_page(); else if (ctx.Match(k, Invk_random)) this.Random(); else if (ctx.Match(k, Invk_sandbox)) this.Sandbox(); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String Invk_main_page = "main_page", Invk_random = "random", Invk_sandbox = "sandbox"; diff --git a/400_xowa/src/gplx/xowa/apps/apis/xowa/specials/Xoapi_search.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/specials/Xoapi_search.java index 4118cfb4a..c51a476e6 100644 --- a/400_xowa/src/gplx/xowa/apps/apis/xowa/specials/Xoapi_search.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/specials/Xoapi_search.java @@ -17,21 +17,21 @@ along with this program. If not, see . */ package gplx.xowa.apps.apis.xowa.specials; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.*; import gplx.xowa.wikis.domains.*; import gplx.xowa.wikis.domains.crts.*; -public class Xoapi_search implements GfoInvkAble, GfoEvMgrOwner { +public class Xoapi_search implements Gfo_invk, Gfo_evt_mgr_owner { private final Xow_domain_crt_kv_itm_mgr multi_wikis_mgr = new Xow_domain_crt_kv_itm_mgr(); private byte[] multi_wikis_bry = Dflt_multi_wikis_bry; private final Xow_domain_crt_kv_itm_mgr multi_sorts_mgr = new Xow_domain_crt_kv_itm_mgr(); private byte[] multi_sorts_bry = Dflt_multi_sorts_bry; public Xoapi_search() { - this.evMgr = GfoEvMgr.new_(this); + this.evt_mgr = new Gfo_evt_mgr(this); multi_wikis_mgr.Parse_as_itms(multi_wikis_bry); multi_sorts_mgr.Parse_as_arys(multi_sorts_bry); } - public GfoEvMgr EvMgr() {return evMgr;} private GfoEvMgr evMgr; + public Gfo_evt_mgr Evt_mgr() {return evt_mgr;} private Gfo_evt_mgr evt_mgr; public int Results_per_page() {return results_per_page;} private int results_per_page = 100; public boolean Async_db() {return async_db;} private boolean async_db = true; public void Multi_wikis_bry_(byte[] v) { if (!multi_wikis_mgr.Parse_as_itms(v)) return; this.multi_wikis_bry = v; - GfoEvMgr_.PubVal(this, Evt_multi_wikis_changed, v); + Gfo_evt_mgr_.Pub_val(this, Evt_multi_wikis_changed, v); } public Xow_domain_crt_itm Multi_wikis_crt(Xow_domain_itm cur_domain) { return multi_wikis_mgr.Find_itm(cur_domain, cur_domain); @@ -39,7 +39,7 @@ public class Xoapi_search implements GfoInvkAble, GfoEvMgrOwner { public void Multi_sorts_bry_(byte[] v) { if (!multi_sorts_mgr.Parse_as_arys(v)) return; this.multi_sorts_bry = v; - GfoEvMgr_.PubVal(this, Evt_multi_sorts_changed, v); + Gfo_evt_mgr_.Pub_val(this, Evt_multi_sorts_changed, v); } public Xow_domain_crt_itm[] Multi_sorts_crt(Xow_domain_itm cur_domain) { return multi_sorts_mgr.Find_ary(cur_domain, cur_domain); @@ -53,7 +53,7 @@ public class Xoapi_search implements GfoInvkAble, GfoEvMgrOwner { else if (ctx.Match(k, Invk_multi_wikis_)) Multi_wikis_bry_(m.ReadBry("v")); else if (ctx.Match(k, Invk_multi_sorts)) return String_.new_u8(multi_sorts_bry); else if (ctx.Match(k, Invk_multi_sorts_)) Multi_sorts_bry_(m.ReadBry("v")); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String diff --git a/400_xowa/src/gplx/xowa/apps/apis/xowa/startups/Xoapi_startups.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/startups/Xoapi_startups.java index a25d4094c..ddcb7f678 100644 --- a/400_xowa/src/gplx/xowa/apps/apis/xowa/startups/Xoapi_startups.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/startups/Xoapi_startups.java @@ -17,13 +17,13 @@ along with this program. If not, see . */ package gplx.xowa.apps.apis.xowa.startups; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.*; import gplx.xowa.apps.apis.xowa.startups.tabs.*; -public class Xoapi_startups implements GfoInvkAble { +public class Xoapi_startups implements Gfo_invk { public void Init_by_kit(Xoae_app app) { } public Xoapi_startup_tabs Tabs() {return tabs;} private Xoapi_startup_tabs tabs = new Xoapi_startup_tabs(); public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_tabs)) return tabs; - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; } private static final String Invk_tabs = "tabs"; } diff --git a/400_xowa/src/gplx/xowa/apps/apis/xowa/startups/tabs/Xoapi_startup_tabs.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/startups/tabs/Xoapi_startup_tabs.java index c6a08519d..70f7403d7 100644 --- a/400_xowa/src/gplx/xowa/apps/apis/xowa/startups/tabs/Xoapi_startup_tabs.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/startups/tabs/Xoapi_startup_tabs.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.apps.apis.xowa.startups.tabs; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.*; import gplx.xowa.apps.apis.xowa.startups.*; import gplx.xowa.specials.*; -public class Xoapi_startup_tabs implements GfoInvkAble { +public class Xoapi_startup_tabs implements Gfo_invk { public String Custom() {return custom;} private String custom; public boolean Custom_is_expr() {return custom_is_expr;} private boolean custom_is_expr; public String Previous() {return previous;} private String previous; @@ -33,7 +33,7 @@ public class Xoapi_startup_tabs implements GfoInvkAble { else if (ctx.Match(k, Invk_custom_)) custom = m.ReadStr("v"); else if (ctx.Match(k, Invk_custom_is_expr)) return Yn.To_str(custom_is_expr); else if (ctx.Match(k, Invk_custom_is_expr_)) custom_is_expr = m.ReadYn("v"); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String @@ -43,11 +43,11 @@ public class Xoapi_startup_tabs implements GfoInvkAble { , Invk_custom_is_expr = "custom_is_expr", Invk_custom_is_expr_ = "custom_is_expr_" ; public String[] Calc_startup_strs(Xoae_app app) { - List_adp rv = List_adp_.new_(); + List_adp rv = List_adp_.New(); String xowa_home = gplx.xowa.users.Xouc_pages_mgr.Page_xowa; if (manual == null) { switch (type) { - case Xoapi_startup_tabs_tid_.Tid_blank: rv.Add(Xows_special_meta_.Itm__default_tab.Ttl_str()); break; + case Xoapi_startup_tabs_tid_.Tid_blank: rv.Add(Xow_special_meta_.Itm__default_tab.Ttl_str()); break; case Xoapi_startup_tabs_tid_.Tid_xowa: rv.Add(xowa_home); break; case Xoapi_startup_tabs_tid_.Tid_custom: Add_ary(rv, custom); break; case Xoapi_startup_tabs_tid_.Tid_previous: Add_ary(rv, previous); break; diff --git a/400_xowa/src/gplx/xowa/apps/apis/xowa/usrs/Xoapi_bookmarks.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/usrs/Xoapi_bookmarks.java index d41c58857..083e38b24 100644 --- a/400_xowa/src/gplx/xowa/apps/apis/xowa/usrs/Xoapi_bookmarks.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/usrs/Xoapi_bookmarks.java @@ -19,7 +19,7 @@ package gplx.xowa.apps.apis.xowa.usrs; import gplx.*; import gplx.xowa.*; import import gplx.xowa.guis.history.*; import gplx.xowa.guis.views.*; import gplx.xowa.users.bmks.*; import gplx.xowa.wikis.*; -public class Xoapi_bookmarks implements GfoInvkAble { +public class Xoapi_bookmarks implements Gfo_invk { private Xoae_app app; private Xog_win_itm win; public void Ctor_by_app(Xoae_app app) {this.app = app;} public void Init_by_kit(Xoae_app app) {this.win = app.Gui_mgr().Browser_win();} @@ -49,7 +49,7 @@ public class Xoapi_bookmarks implements GfoInvkAble { else if (ctx.Match(k, Invk_delete_confirm_)) delete_confirm = m.ReadYn("v"); else if (ctx.Match(k, Invk_add)) return this.Add(m.ReadStrOr("v", null)); else if (ctx.Match(k, Invk_show)) this.Show(); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String diff --git a/400_xowa/src/gplx/xowa/apps/apis/xowa/usrs/Xoapi_cache.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/usrs/Xoapi_cache.java index 113948d9a..925651bdf 100644 --- a/400_xowa/src/gplx/xowa/apps/apis/xowa/usrs/Xoapi_cache.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/usrs/Xoapi_cache.java @@ -17,12 +17,12 @@ along with this program. If not, see . */ package gplx.xowa.apps.apis.xowa.usrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.*; import gplx.core.ios.*; import gplx.xowa.files.caches.*; -public class Xoapi_cache implements GfoInvkAble { +public class Xoapi_cache implements Gfo_invk { private Xou_cache_mgr cache_mgr; public void Init_by_app(Xoa_app app) {this.cache_mgr = app.User().User_db_mgr().Cache_mgr();} private String Info() { cache_mgr.Page_bgn(); - Bry_bfr bfr = Bry_bfr.new_(255); + Bry_bfr bfr = Bry_bfr_.New_w_size(255); Keyval[] ary = cache_mgr.Info(); int len = ary.length; for (int i = 0; i < len; ++i) { @@ -39,7 +39,7 @@ public class Xoapi_cache implements GfoInvkAble { else if (ctx.Match(k, Invk_info)) return Info(); else if (ctx.Match(k, Invk_reduce_to_min)) cache_mgr.Reduce(cache_mgr.Fsys_size_min()); else if (ctx.Match(k, Invk_reduce_to_zero)) cache_mgr.Reduce(0); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String diff --git a/400_xowa/src/gplx/xowa/apps/apis/xowa/usrs/Xoapi_history.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/usrs/Xoapi_history.java index ad6989431..86fe27033 100644 --- a/400_xowa/src/gplx/xowa/apps/apis/xowa/usrs/Xoapi_history.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/usrs/Xoapi_history.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.apps.apis.xowa.usrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.*; import gplx.xowa.guis.views.*; -public class Xoapi_history implements GfoInvkAble { +public class Xoapi_history implements Gfo_invk { private Xoae_app app; private Xog_win_itm win; public void Ctor_by_app(Xoae_app app) {this.app = app;} public void Init_by_kit(Xoae_app app) {this.win = app.Gui_mgr().Browser_win();} @@ -30,7 +30,7 @@ public class Xoapi_history implements GfoInvkAble { else if (ctx.Match(k, Invk_enabled_)) Enabled_(m.ReadYn("v")); else if (ctx.Match(k, Invk_goto_recent)) this.Goto_recent(); else if (ctx.Match(k, Invk_show)) this.Show(); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String Invk_enabled = "enabled", Invk_enabled_ = "enabled_", Invk_goto_recent = "goto_recent", Invk_show = "show"; diff --git a/400_xowa/src/gplx/xowa/apps/apis/xowa/usrs/Xoapi_logs.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/usrs/Xoapi_logs.java index c820ad1b3..c26046ae8 100644 --- a/400_xowa/src/gplx/xowa/apps/apis/xowa/usrs/Xoapi_logs.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/usrs/Xoapi_logs.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.apps.apis.xowa.usrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.*; import gplx.xowa.guis.views.*; -public class Xoapi_logs implements GfoInvkAble { +public class Xoapi_logs implements Gfo_invk { private Xoae_app app; public void Ctor_by_app(Xoae_app app) {this.app = app;} public void Init_by_kit(Xoae_app app) {} @@ -30,7 +30,7 @@ public class Xoapi_logs implements GfoInvkAble { public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_enabled)) return Yn.To_str(this.Enabled()); else if (ctx.Match(k, Invk_enabled_)) Enabled_(m.ReadYn("v")); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String Invk_enabled = "enabled", Invk_enabled_ = "enabled_"; diff --git a/400_xowa/src/gplx/xowa/apps/apis/xowa/wikis/Hdump_html_mode.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/wikis/Hdump_html_mode.java new file mode 100644 index 000000000..4c2257ce7 --- /dev/null +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/wikis/Hdump_html_mode.java @@ -0,0 +1,41 @@ +/* +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.apps.apis.xowa.wikis; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.*; +public class Hdump_html_mode { + public Hdump_html_mode(int tid, String key, String gui) { + this.tid = (byte)tid; this.key = key; this.gui = gui; + } + public byte Tid() {return tid;} private final byte tid; + public String Key() {return key;} private final String key; + public String Gui() {return gui;} private final String gui; + public Keyval Opt() {return Keyval_.new_(key, gui);} + public boolean Tid_is_hdump_save() {return tid == Hdump_save.tid;} + + public static final Hdump_html_mode + Shown = new Hdump_html_mode(0, "shown" , "Shown") + , Hdump_save = new Hdump_html_mode(1, "hdump_save" , "Saved for HTML DB") + , Hdump_load = new Hdump_html_mode(2, "hdump_load" , "Loaded by HTML DB") + ; + public static Hdump_html_mode Parse(String v) { + if (String_.Eq(v, Shown.key)) return Shown; + else if (String_.Eq(v, Hdump_save.key)) return Hdump_save; + else if (String_.Eq(v, Hdump_load.key)) return Hdump_load; + else throw Err_.new_unhandled(v); + } + public static Keyval[] Opt_list() {return new Keyval[] {Shown.Opt(), Hdump_save.Opt()};} +} diff --git a/400_xowa/src/gplx/xowa/apps/apis/xowa/wikis/Xoapi_hdump.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/wikis/Xoapi_hdump.java new file mode 100644 index 000000000..4c7c0df1e --- /dev/null +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/wikis/Xoapi_hdump.java @@ -0,0 +1,34 @@ +/* +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.apps.apis.xowa.wikis; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.*; +public class Xoapi_hdump implements Gfo_invk { + public boolean Read_preferred() {return read_preferred;} private boolean read_preferred = true; + public Hdump_html_mode Html_mode() {return html_mode;} private Hdump_html_mode html_mode = Hdump_html_mode.Shown; + public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { + if (ctx.Match(k, Invk__read_preferred)) return Yn.To_str(read_preferred); + else if (ctx.Match(k, Invk__read_preferred_)) read_preferred = m.ReadYn("v"); + else if (ctx.Match(k, Invk__html_mode)) return html_mode.Key(); + else if (ctx.Match(k, Invk__html_mode_)) html_mode = Hdump_html_mode.Parse(m.ReadStr("v")); + else if (ctx.Match(k, Invk__html_mode_list)) return Hdump_html_mode.Opt_list(); + return this; + } + private static final String + Invk__read_preferred = "read_preferred" , Invk__read_preferred_ = "read_preferred_" + , Invk__html_mode = "html_mode" , Invk__html_mode_ = "html_mode_", Invk__html_mode_list = "html_mode_list" + ; +} diff --git a/400_xowa/src/gplx/xowa/apps/apis/xowa/wikis/Xoapi_wiki_lang.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/wikis/Xoapi_wiki_lang.java index 4efead908..98bdb6ab7 100644 --- a/400_xowa/src/gplx/xowa/apps/apis/xowa/wikis/Xoapi_wiki_lang.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/wikis/Xoapi_wiki_lang.java @@ -17,12 +17,12 @@ along with this program. If not, see . */ package gplx.xowa.apps.apis.xowa.wikis; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.*; import gplx.xowa.apps.apis.xowa.wikis.langs.*; -public class Xoapi_wiki_lang implements GfoInvkAble { - public Xoap_lang_variants Variants() {return variants;} private final Xoap_lang_variants variants = new Xoap_lang_variants(); - public void Subscribe(GfoEvObj sub) {variants.Subscribe(sub);} +public class Xoapi_wiki_lang implements Gfo_invk { + public Xoap_lang_variants Variants() {return variants;} private final Xoap_lang_variants variants = new Xoap_lang_variants(); + public void Subscribe(Gfo_evt_itm sub) {variants.Subscribe(sub);} public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_variants)) return variants; - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; } private static final String Invk_variants = "variants"; } diff --git a/400_xowa/src/gplx/xowa/apps/apis/xowa/wikis/langs/Xoap_lang_variants.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/wikis/langs/Xoap_lang_variants.java index 46550aadf..365331b5c 100644 --- a/400_xowa/src/gplx/xowa/apps/apis/xowa/wikis/langs/Xoap_lang_variants.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/wikis/langs/Xoap_lang_variants.java @@ -16,24 +16,24 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.apps.apis.xowa.wikis.langs; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.*; import gplx.xowa.apps.apis.xowa.wikis.*; -public class Xoap_lang_variants implements GfoInvkAble, GfoEvMgrOwner { +public class Xoap_lang_variants implements Gfo_invk, Gfo_evt_mgr_owner { public Xoap_lang_variants() { - this.ev_mgr = GfoEvMgr.new_(this); + this.ev_mgr = new Gfo_evt_mgr(this); } - public GfoEvMgr EvMgr() {return ev_mgr;} private final GfoEvMgr ev_mgr; + public Gfo_evt_mgr Evt_mgr() {return ev_mgr;} private final Gfo_evt_mgr ev_mgr; public byte[] Current() {return current;} private byte[] current; public void Current_(byte[] v) { this.current = v; - GfoEvMgr_.PubVal(this, Evt_current_changed, v); + Gfo_evt_mgr_.Pub_val(this, Evt_current_changed, v); } - public void Subscribe(GfoEvObj sub) { - GfoEvMgr_.SubSame(this, Evt_current_changed, sub); - if (current != null) GfoInvkAble_.InvkCmd_val(sub, Evt_current_changed, current); + public void Subscribe(Gfo_evt_itm sub) { + Gfo_evt_mgr_.Sub_same(this, Evt_current_changed, sub); + if (current != null) Gfo_invk_.Invk_by_val(sub, Evt_current_changed, current); } public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_current)) return String_.new_u8(current); else if (ctx.Match(k, Invk_current_)) Current_(m.ReadBry("v")); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String Invk_current = "current", Invk_current_ = "current_"; diff --git a/400_xowa/src/gplx/xowa/apps/apis/xowa/xtns/Xoapi_scribunto.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/xtns/Xoapi_scribunto.java index 53331ec39..347ca781d 100644 --- a/400_xowa/src/gplx/xowa/apps/apis/xowa/xtns/Xoapi_scribunto.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/xtns/Xoapi_scribunto.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.apps.apis.xowa.xtns; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.*; import gplx.xowa.xtns.scribunto.*; import gplx.xowa.xtns.scribunto.engines.*; -public class Xoapi_scribunto implements GfoInvkAble { +public class Xoapi_scribunto implements Gfo_invk { private Xoae_app app; public void Init_by_kit(Xoae_app app) { this.app = app; @@ -29,7 +29,7 @@ public class Xoapi_scribunto implements GfoInvkAble { public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_engine_lua_)) Engine_(Scrib_engine_type.Type_lua); else if (ctx.Match(k, Invk_engine_luaj_)) Engine_(Scrib_engine_type.Type_luaj); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String diff --git a/400_xowa/src/gplx/xowa/apps/apis/xowa/xtns/Xoapi_wikibase.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/xtns/Xoapi_wikibase.java index 704e1f861..896ebc61d 100644 --- a/400_xowa/src/gplx/xowa/apps/apis/xowa/xtns/Xoapi_wikibase.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/xtns/Xoapi_wikibase.java @@ -17,22 +17,22 @@ along with this program. If not, see . */ package gplx.xowa.apps.apis.xowa.xtns; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.*; import gplx.xowa.xtns.wdatas.*; -public class Xoapi_wikibase implements GfoInvkAble, GfoEvMgrOwner { +public class Xoapi_wikibase implements Gfo_invk, Gfo_evt_mgr_owner { public Xoapi_wikibase() { - evMgr = GfoEvMgr.new_(this); + evt_mgr = new Gfo_evt_mgr(this); } - public GfoEvMgr EvMgr() {return evMgr;} private GfoEvMgr evMgr; + public Gfo_evt_mgr Evt_mgr() {return evt_mgr;} private Gfo_evt_mgr evt_mgr; public byte[][] Core_langs() {return core_langs;} private byte[][] core_langs = Bry_.Ary("en"); public byte[][] Sort_langs() {return sort_langs;} private byte[][] sort_langs = Bry_.Ary("en", "de", "es", "fr", "it", "nl", "pl", "ru", "sv"); public byte[] Link_wikis() {return link_wikis;} private byte[] link_wikis = Bry_.new_a7("enwiki"); public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_core_langs)) return Bry_.Add_w_dlm(Byte_ascii.Semic, core_langs); - else if (ctx.Match(k, Invk_core_langs_)) {core_langs = m.ReadBryAry(k, Byte_ascii.Semic); GfoEvMgr_.PubVal(this, Evt_core_langs_changed, core_langs);} + else if (ctx.Match(k, Invk_core_langs_)) {core_langs = m.ReadBryAry(k, Byte_ascii.Semic); Gfo_evt_mgr_.Pub_val(this, Evt_core_langs_changed, core_langs);} else if (ctx.Match(k, Invk_sort_langs)) return Bry_.Add_w_dlm(Byte_ascii.Semic, sort_langs); - else if (ctx.Match(k, Invk_sort_langs_)) {sort_langs = m.ReadBryAry(k, Byte_ascii.Semic); GfoEvMgr_.PubVal(this, Evt_sort_langs_changed, sort_langs);} + else if (ctx.Match(k, Invk_sort_langs_)) {sort_langs = m.ReadBryAry(k, Byte_ascii.Semic); Gfo_evt_mgr_.Pub_val(this, Evt_sort_langs_changed, sort_langs);} else if (ctx.Match(k, Invk_link_wikis)) return String_.new_u8(link_wikis); - else if (ctx.Match(k, Invk_link_wikis_)) {link_wikis = m.ReadBry(k); GfoEvMgr_.PubVal(this, Evt_link_wikis_changed, link_wikis);} - else return GfoInvkAble_.Rv_unhandled; + else if (ctx.Match(k, Invk_link_wikis_)) {link_wikis = m.ReadBry(k); Gfo_evt_mgr_.Pub_val(this, Evt_link_wikis_changed, link_wikis);} + else return Gfo_invk_.Rv_unhandled; return this; } private static final String diff --git a/400_xowa/src/gplx/xowa/apps/boots/Xoa_boot_mgr.java b/400_xowa/src/gplx/xowa/apps/boots/Xoa_boot_mgr.java index 7f5499bbb..4d359669c 100644 --- a/400_xowa/src/gplx/xowa/apps/boots/Xoa_boot_mgr.java +++ b/400_xowa/src/gplx/xowa/apps/boots/Xoa_boot_mgr.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.xowa.apps.boots; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.core.consoles.*; import gplx.core.envs.*; import gplx.dbs.*; -import gplx.gfui.*; import gplx.xowa.guis.views.boots.*; +import gplx.gfui.*; import gplx.gfui.kits.core.*; import gplx.xowa.guis.views.boots.*; import gplx.xowa.langs.*; import gplx.xowa.users.*; public class Xoa_boot_mgr { @@ -39,6 +39,7 @@ public class Xoa_boot_mgr { } private void Init_env(String[] args) { Gfo_usr_dlg_.Instance = usr_dlg = Xoa_app_.usr_dlg_console_(); + Gfo_log_.Instance__set(new gplx.xowa.apps.shells.Gfo_log__console()); log_wtr = usr_dlg.Log_wkr(); log_wtr.Log_to_session_fmt("env.init: version=~{0}", Xoa_app_.Version); GfuiEnv_.Init_swt(args, Xoa_app_.class); Io_url jar_url = Env_.AppUrl(); diff --git a/400_xowa/src/gplx/xowa/apps/cfgs/Xoa_cfg_db_txt.java b/400_xowa/src/gplx/xowa/apps/cfgs/Xoa_cfg_db_txt.java index e4f09c23b..c90849cc3 100644 --- a/400_xowa/src/gplx/xowa/apps/cfgs/Xoa_cfg_db_txt.java +++ b/400_xowa/src/gplx/xowa/apps/cfgs/Xoa_cfg_db_txt.java @@ -33,7 +33,7 @@ public class Xoa_cfg_db_txt implements Xoa_cfg_db { } public void Cfg_save_bgn(Xoa_cfg_mgr cfg_mgr) { bfr.ClearAndReset(); - } private Bry_bfr bfr = Bry_bfr.new_(); + } private Bry_bfr bfr = Bry_bfr_.New(); public void Cfg_save_end(Xoa_cfg_mgr cfg_mgr) { Xoa_app_.Usr_dlg().Log_many("", "", "shutting down app; saving cfg: len=~{0}", bfr.Len()); Io_mgr.Instance.SaveFilBfr(Cfg_url(cfg_mgr), bfr); diff --git a/400_xowa/src/gplx/xowa/apps/cfgs/Xoa_cfg_itm.java b/400_xowa/src/gplx/xowa/apps/cfgs/Xoa_cfg_itm.java index f3a6d9177..ed2e35554 100644 --- a/400_xowa/src/gplx/xowa/apps/cfgs/Xoa_cfg_itm.java +++ b/400_xowa/src/gplx/xowa/apps/cfgs/Xoa_cfg_itm.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.apps.cfgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; -public class Xoa_cfg_itm implements GfoInvkAble { +public class Xoa_cfg_itm implements Gfo_invk { public Xoa_cfg_itm(Xoa_cfg_grp grp, byte[] key) {this.grp = grp; this.key = key;} - public Xoa_cfg_grp Grp() {return grp;} private final Xoa_cfg_grp grp; - public byte[] Key() {return key;} private final byte[] key; + public Xoa_cfg_grp Grp() {return grp;} private final Xoa_cfg_grp grp; + public byte[] Key() {return key;} private final byte[] key; public String Val() {return val;} private String val; public boolean Val_is_dirty() {return val_is_dirty;} private boolean val_is_dirty; public boolean Val_is_customized() {return val_is_customized;} private boolean val_is_customized; // false if value is system default; true if changed by user @@ -37,7 +37,7 @@ public class Xoa_cfg_itm implements GfoInvkAble { public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_val)) return val; else if (ctx.Match(k, Invk_val_)) Val_(m.ReadStr("v")); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String Invk_val = "val", Invk_val_ = "val_"; } diff --git a/400_xowa/src/gplx/xowa/apps/cfgs/Xoa_cfg_mgr.java b/400_xowa/src/gplx/xowa/apps/cfgs/Xoa_cfg_mgr.java index eb31b96e7..8e474835c 100644 --- a/400_xowa/src/gplx/xowa/apps/cfgs/Xoa_cfg_mgr.java +++ b/400_xowa/src/gplx/xowa/apps/cfgs/Xoa_cfg_mgr.java @@ -17,10 +17,10 @@ along with this program. If not, see . */ package gplx.xowa.apps.cfgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.wikis.domains.*; -public class Xoa_cfg_mgr implements GfoInvkAble { - private final Ordered_hash hash = Ordered_hash_.New_bry(); +public class Xoa_cfg_mgr implements Gfo_invk { + private final Ordered_hash hash = Ordered_hash_.New_bry(); public Xoa_cfg_mgr(Xoa_app app) {this.app = app;} - public Xoa_app App() {return app;} private final Xoa_app app; + public Xoa_app App() {return app;} private final Xoa_app app; public Xoa_cfg_itm Get_itm_or_null(byte[] grp_key, byte[] itm_key) { Xoa_cfg_grp grp = (Xoa_cfg_grp)hash.Get_by(grp_key); return grp == null ? null : grp.Get_by_or_null(itm_key); @@ -95,7 +95,7 @@ public class Xoa_cfg_mgr implements GfoInvkAble { grp.Db_load_end(); } } - public void Db_save_txt() {Db_save(db_txt);} private final Xoa_cfg_db_txt db_txt = new Xoa_cfg_db_txt(); + public void Db_save_txt() {Db_save(db_txt);} private final Xoa_cfg_db_txt db_txt = new Xoa_cfg_db_txt(); public void Db_save(Xoa_cfg_db db) { int len = hash.Count(); db.Cfg_save_bgn(this); @@ -105,19 +105,19 @@ public class Xoa_cfg_mgr implements GfoInvkAble { } db.Cfg_save_end(this); } - private boolean Eval_set(GfoInvkAble invk, String key, String val) { + private boolean Eval_set(Gfo_invk invk, String key, String val) { String msg_str = key + "_(<:['\n" + val + "\n']:>);"; Object rslt = app.Gfs_mgr().Run_str_for(invk, msg_str); - return rslt != GfoInvkAble_.Rv_error; + return rslt != Gfo_invk_.Rv_error; } - public Object Eval_get(GfoInvkAble invk, String key) { + public Object Eval_get(Gfo_invk invk, String key) { String msg_str = key + ";"; return app.Gfs_mgr().Run_str_for(invk, msg_str); } public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_get)) return Get_itm_or_make(m.ReadBry("itm_key"), m.ReadBry("grp_key")); else if (ctx.Match(k, Invk_reset_all)) Reset_all(); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String Invk_get = "get", Invk_reset_all = "reset_all"; } diff --git a/400_xowa/src/gplx/xowa/apps/cfgs/Xoa_cfg_mgr_tst.java b/400_xowa/src/gplx/xowa/apps/cfgs/Xoa_cfg_mgr_tst.java index 50488cd8d..49b1ed07d 100644 --- a/400_xowa/src/gplx/xowa/apps/cfgs/Xoa_cfg_mgr_tst.java +++ b/400_xowa/src/gplx/xowa/apps/cfgs/Xoa_cfg_mgr_tst.java @@ -67,7 +67,7 @@ class Xoa_cfg_mgr_fxt { Xowe_wiki wiki = Exec_make_wiki(wiki_key_bry); Test_cfg_get(wiki, prop_key, expd_val); } - private void Test_cfg_get(GfoInvkAble invk, String prop, String expd) { + private void Test_cfg_get(Gfo_invk invk, String prop, String expd) { Tfds.Eq(expd, Object_.Xto_str_strict_or_null_mark(app.Cfg_mgr().Eval_get(invk, prop))); } public void Test_cfg_itm(String wiki, String prop, boolean expd_customized, boolean expd_dirty) { diff --git a/400_xowa/src/gplx/xowa/apps/cfgs/Xowc_parser.java b/400_xowa/src/gplx/xowa/apps/cfgs/Xowc_parser.java index db442d861..a029cffb9 100644 --- a/400_xowa/src/gplx/xowa/apps/cfgs/Xowc_parser.java +++ b/400_xowa/src/gplx/xowa/apps/cfgs/Xowc_parser.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.apps.cfgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.parsers.lnkis.cfgs.*; -public class Xowc_parser implements GfoInvkAble { +public class Xowc_parser implements Gfo_invk { public Xowc_parser(Xowe_wiki wiki) { lnki_cfg = new Xoc_lnki_cfg(wiki); if (wiki.Domain_tid() == gplx.xowa.wikis.domains.Xow_domain_tid_.Int__home) @@ -31,7 +31,7 @@ public class Xowc_parser implements GfoInvkAble { else if (ctx.Match(k, Invk_lnki)) return lnki_cfg; else if (ctx.Match(k, Invk_display_title_restrict)) return display_title_restrict; else if (ctx.Match(k, Invk_display_title_restrict_)) display_title_restrict = m.ReadYn("v"); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String Invk_xtns = "xtns", Invk_lnki = "lnki", Invk_display_title_restrict = "display_title_restrict", Invk_display_title_restrict_ = "display_title_restrict_"; diff --git a/400_xowa/src/gplx/xowa/apps/cfgs/Xowc_xtn_pages.java b/400_xowa/src/gplx/xowa/apps/cfgs/Xowc_xtn_pages.java index cd0feaad4..26ee326a3 100644 --- a/400_xowa/src/gplx/xowa/apps/cfgs/Xowc_xtn_pages.java +++ b/400_xowa/src/gplx/xowa/apps/cfgs/Xowc_xtn_pages.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.apps.cfgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.wikis.nss.*; -public class Xowc_xtn_pages implements GfoInvkAble { +public class Xowc_xtn_pages implements Gfo_invk { public boolean Init_needed() {return init_needed;} private boolean init_needed = true; public int Ns_page_id() {return ns_page_id;} private int ns_page_id = Int_.Min_value; public int Ns_page_talk_id() {return ns_page_talk_id;} private int ns_page_talk_id = Int_.Min_value; @@ -69,13 +69,13 @@ public class Xowc_xtn_pages implements GfoInvkAble { } public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_ns_names_)) Ns_names_(m.ReadBry("page"), m.ReadBry("page_talk"), m.ReadBry("index"), m.ReadBry("index_talk")); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String Invk_ns_names_ = "ns_names_"; - public static final byte[] Xtn_key = Bry_.new_a7("pages"); + public static final byte[] Xtn_key = Bry_.new_a7("pages"); public static final int Ns_index_id_default = 102, Ns_page_id_default = 104; - private static final byte[] + private static final byte[] Default_ns_page_name = Bry_.new_a7("Page") , Default_ns_page_talk_name = Bry_.new_a7("Page_talk") , Default_ns_index_name = Bry_.new_a7("Index") diff --git a/400_xowa/src/gplx/xowa/apps/cfgs/Xowc_xtns.java b/400_xowa/src/gplx/xowa/apps/cfgs/Xowc_xtns.java index 7ea8ddbed..89cb619bd 100644 --- a/400_xowa/src/gplx/xowa/apps/cfgs/Xowc_xtns.java +++ b/400_xowa/src/gplx/xowa/apps/cfgs/Xowc_xtns.java @@ -16,13 +16,13 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.apps.cfgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; -public class Xowc_xtns implements GfoInvkAble { +public class Xowc_xtns implements Gfo_invk { private Hash_adp_bry hash = Hash_adp_bry.ci_a7(); public Xowc_xtns() {hash.Add(Xowc_xtn_pages.Xtn_key, itm_pages);} public Xowc_xtn_pages Itm_pages() {return itm_pages;} private Xowc_xtn_pages itm_pages = new Xowc_xtn_pages(); public Object Get_by_key(byte[] key) {return hash.Get_by_bry(key);} public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { - if (ctx.Match(k, Invk_get)) return (GfoInvkAble)hash.Get_by_bry(m.ReadBry("v")); - else return GfoInvkAble_.Rv_unhandled; + if (ctx.Match(k, Invk_get)) return (Gfo_invk)hash.Get_by_bry(m.ReadBry("v")); + else return Gfo_invk_.Rv_unhandled; } private static final String Invk_get = "get"; } diff --git a/400_xowa/src/gplx/xowa/apps/cfgs/dbs/Xocfg_data_itm.java b/400_xowa/src/gplx/xowa/apps/cfgs/dbs/Xocfg_data_itm.java new file mode 100644 index 000000000..1b0d5a296 --- /dev/null +++ b/400_xowa/src/gplx/xowa/apps/cfgs/dbs/Xocfg_data_itm.java @@ -0,0 +1,25 @@ +/* +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.apps.cfgs.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.cfgs.*; +public class Xocfg_data_itm { + public Xocfg_data_itm(String key, String usr, String ctx, String val) {this.key = key; this.usr = usr; this.ctx = ctx; this.val = val;} + public String Key() {return key;} private final String key; + public String Usr() {return usr;} private final String usr; + public String Ctx() {return ctx;} private String ctx; + public String Val() {return val;} private String val; +} diff --git a/400_xowa/src/gplx/xowa/apps/cfgs/dbs/Xocfg_data_tbl.java b/400_xowa/src/gplx/xowa/apps/cfgs/dbs/Xocfg_data_tbl.java new file mode 100644 index 000000000..663897a1a --- /dev/null +++ b/400_xowa/src/gplx/xowa/apps/cfgs/dbs/Xocfg_data_tbl.java @@ -0,0 +1,50 @@ +/* +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.apps.cfgs.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.cfgs.*; +import gplx.dbs.*; +public class Xocfg_data_tbl implements Rls_able { + private final String tbl_name; public final Dbmeta_fld_list flds = new Dbmeta_fld_list(); + private final String fld_key, fld_usr, fld_ctx, fld_val; + private final Db_conn conn; + public Xocfg_data_tbl(Db_conn conn) { + this.conn = conn; + tbl_name = Tbl_name; + fld_key = flds.Add_str_pkey ("cfg_key", 1024); // EX: "xowa.net.web_enabled" + fld_usr = flds.Add_str ("cfg_usr", 1024); // EX: "xowa_user" + fld_ctx = flds.Add_str ("cfg_ctx", 1024); // EX: "app" + fld_val = flds.Add_str ("cfg_val", 4096); // EX: "y" + } + public void Create_tbl() {conn.Meta_tbl_create(Dbmeta_tbl_itm.New(tbl_name, flds));} + public void Insert(String key, String usr, String ctx, String val) { + Db_stmt stmt_insert = conn.Stmt_insert(tbl_name, flds); + stmt_insert.Clear().Val_str(fld_key, key).Val_str(fld_usr, usr).Val_str(fld_ctx, ctx).Val_str(fld_val, val) + .Exec_insert(); + } + public Xocfg_data_itm Select(String key, String usr, String ctx) { + Db_stmt stmt_select = conn.Stmt_select(tbl_name, flds, fld_key, fld_usr, fld_ctx); + Db_rdr rdr = stmt_select.Clear().Crt_str(fld_key, key).Crt_str(fld_usr, usr).Crt_str(fld_ctx, ctx).Exec_select__rls_auto(); + try { + if (rdr.Move_next()) + return new Xocfg_data_itm(key, usr, ctx, rdr.Read_str(fld_val)); + else + return null; + } finally {rdr.Rls();} + } + public void Rls() {conn.Rls_conn();} + public static final String Tbl_name = "cfg_data"; +} diff --git a/400_xowa/src/gplx/xowa/apps/cfgs/dbs/Xocfg_meta_itm.java b/400_xowa/src/gplx/xowa/apps/cfgs/dbs/Xocfg_meta_itm.java new file mode 100644 index 000000000..37813eee9 --- /dev/null +++ b/400_xowa/src/gplx/xowa/apps/cfgs/dbs/Xocfg_meta_itm.java @@ -0,0 +1,27 @@ +/* +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.apps.cfgs.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.cfgs.*; +public class Xocfg_meta_itm { + public Xocfg_meta_itm(String key, String type, String dflt, String version) { + this.key = key; this.type = type; this.dflt = dflt; this.version = version; + } + public String Key() {return key;} private final String key; + public String Type() {return type;} private String type; + public String Dflt() {return dflt;} private String dflt; + public String Version() {return version;} private String version; +} diff --git a/400_xowa/src/gplx/xowa/apps/cfgs/dbs/Xocfg_meta_tbl.java b/400_xowa/src/gplx/xowa/apps/cfgs/dbs/Xocfg_meta_tbl.java new file mode 100644 index 000000000..15bd2fc75 --- /dev/null +++ b/400_xowa/src/gplx/xowa/apps/cfgs/dbs/Xocfg_meta_tbl.java @@ -0,0 +1,40 @@ +/* +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.apps.cfgs.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.cfgs.*; +import gplx.dbs.*; +public class Xocfg_meta_tbl implements Rls_able { + private final String tbl_name; public final Dbmeta_fld_list flds = new Dbmeta_fld_list(); + private final String fld_key, fld_type, fld_dflt, fld_version; + private final Db_conn conn; + public Xocfg_meta_tbl(Db_conn conn) { + this.conn = conn; + tbl_name = Tbl_name; + fld_key = flds.Add_str_pkey ("cfg_key" , 1024); // EX: "xowa.net.web_enabled" + fld_type = flds.Add_str ("cfg_type" , 255); // EX: "yn" + fld_dflt = flds.Add_str ("cfg_dflt" , 1024); // EX: "n" + fld_version = flds.Add_str ("cfg_version" , 16); // EX: "v1.1.1.1" + } + public void Create_tbl() {conn.Meta_tbl_create(Dbmeta_tbl_itm.New(tbl_name, flds));} + public void Insert(String key, String type, String dflt, String version) { + Db_stmt stmt_insert = conn.Stmt_insert(tbl_name, flds); + stmt_insert.Clear().Val_str(fld_key, key).Val_str(fld_type, type).Val_str(fld_dflt, dflt).Val_str(fld_version, version) + .Exec_insert(); + } + public void Rls() {} + public static final String Tbl_name = "cfg_meta"; +} diff --git a/400_xowa/src/gplx/xowa/apps/cfgs/gui/Xocfg_gui_mgr.java b/400_xowa/src/gplx/xowa/apps/cfgs/gui/Xocfg_gui_mgr.java index 8ae5f5157..2e8b80b24 100644 --- a/400_xowa/src/gplx/xowa/apps/cfgs/gui/Xocfg_gui_mgr.java +++ b/400_xowa/src/gplx/xowa/apps/cfgs/gui/Xocfg_gui_mgr.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.apps.cfgs.gui; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.cfgs.*; -public class Xocfg_gui_mgr implements GfoInvkAble { +public class Xocfg_gui_mgr implements Gfo_invk { public Xocfg_gui_mgr(Xoae_app app) { win_cfg = new Xocfg_win(app); } @@ -25,7 +25,7 @@ public class Xocfg_gui_mgr implements GfoInvkAble { public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_win)) return win_cfg; else if (ctx.Match(k, Invk_html)) return html_cfg; - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; } private static final String Invk_win = "win", Invk_html = "html"; } diff --git a/400_xowa/src/gplx/xowa/apps/cfgs/gui/Xocfg_html.java b/400_xowa/src/gplx/xowa/apps/cfgs/gui/Xocfg_html.java index 35429486a..e95238147 100644 --- a/400_xowa/src/gplx/xowa/apps/cfgs/gui/Xocfg_html.java +++ b/400_xowa/src/gplx/xowa/apps/cfgs/gui/Xocfg_html.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.apps.cfgs.gui; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.cfgs.*; -public class Xocfg_html implements GfoInvkAble { +public class Xocfg_html implements Gfo_invk { public Xocfg_html() { this.content_editable = false; // CFG: default to false for general user } @@ -24,7 +24,7 @@ public class Xocfg_html implements GfoInvkAble { public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_content_editable)) return Yn.To_str(content_editable); else if (ctx.Match(k, Invk_content_editable_)) content_editable = m.ReadYn_toggle("v", content_editable); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String Invk_content_editable = "content_editable", Invk_content_editable_ = "content_editable_"; diff --git a/400_xowa/src/gplx/xowa/apps/cfgs/gui/Xocfg_pref_mgr.java b/400_xowa/src/gplx/xowa/apps/cfgs/gui/Xocfg_pref_mgr.java index c9669e814..cda435760 100644 --- a/400_xowa/src/gplx/xowa/apps/cfgs/gui/Xocfg_pref_mgr.java +++ b/400_xowa/src/gplx/xowa/apps/cfgs/gui/Xocfg_pref_mgr.java @@ -16,19 +16,19 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.apps.cfgs.gui; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.cfgs.*; -class Test_api implements GfoInvkAble { +class Test_api implements Gfo_invk { public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_meta)) return meta_mgr.Get_or_null(m.ReadStr("v")); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; // return this; } private static final String Invk_meta = "meta"; - private static final String Invk_prop_1 = "prop_1", Invk_prop_2 = "prop_2", Invk_prop_3 = "prop_3", Invk_prop_bry = "bry", Invk_prop_enm = "enm"; - private static final boolean Dflt_prop_1 = false; - private static final int Dflt_prop_2 = 2; - private static final String Dflt_prop_3 = "3"; - private static final byte[] Dflt_prop_bry = Bry_.new_a7("bry"); - private static final int Dflt_prop_enm = 5; - private static final Xocfg_meta_mgr meta_mgr = new Xocfg_meta_mgr().Add + private static final String Invk_prop_1 = "prop_1", Invk_prop_2 = "prop_2", Invk_prop_3 = "prop_3", Invk_prop_bry = "bry", Invk_prop_enm = "enm"; + private static final boolean Dflt_prop_1 = false; + private static final int Dflt_prop_2 = 2; + private static final String Dflt_prop_3 = "3"; + private static final byte[] Dflt_prop_bry = Bry_.new_a7("bry"); + private static final int Dflt_prop_enm = 5; + private static final Xocfg_meta_mgr meta_mgr = new Xocfg_meta_mgr().Add ( Xocfg_meta_itm_.bool_ (Invk_prop_1, Dflt_prop_1) , Xocfg_meta_itm_.int_ (Invk_prop_2, Dflt_prop_2).Rng_bgn_(-1) , Xocfg_meta_itm_.str_ (Invk_prop_3, Dflt_prop_3) @@ -52,7 +52,7 @@ class Xocfg_gui_itm_memo implements Xocfg_gui_itm { public int Box_h() {return box_h;} private int box_h; } class Xocfg_meta_mgr { - private Hash_adp hash = Hash_adp_.new_(); + private Hash_adp hash = Hash_adp_.New(); public Xocfg_meta_mgr Add(Xocfg_meta_itm_base... ary) { int len = ary.length; for (int i = 0; i < len; i++) { diff --git a/400_xowa/src/gplx/xowa/apps/cfgs/gui/Xocfg_win.java b/400_xowa/src/gplx/xowa/apps/cfgs/gui/Xocfg_win.java index 99c76d480..a2cc57431 100644 --- a/400_xowa/src/gplx/xowa/apps/cfgs/gui/Xocfg_win.java +++ b/400_xowa/src/gplx/xowa/apps/cfgs/gui/Xocfg_win.java @@ -17,15 +17,16 @@ along with this program. If not, see . */ package gplx.xowa.apps.cfgs.gui; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.cfgs.*; import gplx.core.brys.fmtrs.*; +import gplx.gfui.draws.*; import gplx.xowa.guis.langs.*; -public class Xocfg_win implements GfoInvkAble { +public class Xocfg_win implements Gfo_invk { public Xocfg_win(Xoae_app app) {} - public Xol_font_info Font() {return font;} private Xol_font_info font = new Xol_font_info("Arial", 8, gplx.gfui.FontStyleAdp_.Plain); + public Xol_font_info Font() {return font;} private Xol_font_info font = new Xol_font_info("Arial", 8, FontStyleAdp_.Plain); public Bry_fmtr Search_box_fmtr() {return search_box_fmtr;} private Bry_fmtr search_box_fmtr = Bry_fmtr.new_("Special:Allpages?from=", "search"); public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_font)) return font; else if (ctx.Match(k, Invk_search_box_fmt_)) search_box_fmtr.Fmt_(m.ReadBry("v")); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String Invk_search_box_fmt_ = "search_box_fmt_", Invk_font = "font"; diff --git a/400_xowa/src/gplx/xowa/apps/cfgs/gui/Xow_gui_mgr.java b/400_xowa/src/gplx/xowa/apps/cfgs/gui/Xow_gui_mgr.java index 5c494e15a..3e9458a79 100644 --- a/400_xowa/src/gplx/xowa/apps/cfgs/gui/Xow_gui_mgr.java +++ b/400_xowa/src/gplx/xowa/apps/cfgs/gui/Xow_gui_mgr.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.apps.cfgs.gui; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.cfgs.*; -public class Xow_gui_mgr implements GfoInvkAble { +public class Xow_gui_mgr implements Gfo_invk { public Xocfg_html Cfg_browser() {return cfg_browser;} private Xocfg_html cfg_browser = new Xocfg_html(); public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_cfg_browser)) return cfg_browser; - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; } private static final String Invk_cfg_browser = "cfg_browser"; } diff --git a/400_xowa/src/gplx/xowa/apps/cfgs/old/Xocfg_bnd_itm.java b/400_xowa/src/gplx/xowa/apps/cfgs/old/Xocfg_bnd_itm.java index afaad0bd1..ee255fe3a 100644 --- a/400_xowa/src/gplx/xowa/apps/cfgs/old/Xocfg_bnd_itm.java +++ b/400_xowa/src/gplx/xowa/apps/cfgs/old/Xocfg_bnd_itm.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.xowa.apps.cfgs.old; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.cfgs.*; import gplx.gfui.*; import gplx.xowa.guis.bnds.*; import gplx.xowa.guis.cmds.*; import gplx.langs.gfs.*; import gplx.xowa.apps.*; -public class Xocfg_bnd_itm implements GfoInvkAble { +public class Xocfg_bnd_itm implements Gfo_invk { private Xocfg_bnd_mgr mgr; public Xocfg_bnd_itm(Xocfg_bnd_mgr mgr, Xog_cmd_itm cmd, Xog_bnd_itm bnd) { this.mgr = mgr; this.cmd = cmd; this.bnd = bnd; @@ -39,7 +39,7 @@ public class Xocfg_bnd_itm implements GfoInvkAble { else if (ctx.Match(k, Invk_bnd_box)) return Xog_bnd_box_.Xto_gui_str(bnd.Box()); else if (ctx.Match(k, Invk_bnd_box_idx)) return bnd.Box(); else if (ctx.Match(k, Invk_bnd_ipt)) return mgr.Bnd_mgr().Bnd_parser().Xto_norm(bnd.Ipt().Key()); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String diff --git a/400_xowa/src/gplx/xowa/apps/cfgs/old/Xocfg_bnd_itm_srl.java b/400_xowa/src/gplx/xowa/apps/cfgs/old/Xocfg_bnd_itm_srl.java index 0baa78704..2f18ad679 100644 --- a/400_xowa/src/gplx/xowa/apps/cfgs/old/Xocfg_bnd_itm_srl.java +++ b/400_xowa/src/gplx/xowa/apps/cfgs/old/Xocfg_bnd_itm_srl.java @@ -16,9 +16,9 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.apps.cfgs.old; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.cfgs.*; -import gplx.gfui.*; import gplx.xowa.guis.bnds.*; +import gplx.gfui.*; import gplx.gfui.ipts.*; import gplx.xowa.guis.bnds.*; import gplx.langs.gfs.*; import gplx.xowa.apps.gfs.*; -public class Xocfg_bnd_itm_srl implements GfoInvkAble { +public class Xocfg_bnd_itm_srl implements Gfo_invk { private Xoae_app app; public Xocfg_bnd_itm_srl(Xoae_app app, String key) { this.app = app; @@ -31,7 +31,7 @@ public class Xocfg_bnd_itm_srl implements GfoInvkAble { if (ctx.Match(k, Invk_src_)) Src_(app, this, m.ReadStr("v")); else if (ctx.Match(k, Invk_box_)) box = Xog_bnd_box_.Xto_sys_int(m.ReadStr("v")); else if (ctx.Match(k, Invk_ipt_)) ipt = IptArg_.parse(m.ReadStr("v")); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String Invk_src_ = "src_", Invk_box_ = "box_", Invk_ipt_ = "ipt_"; @@ -40,7 +40,7 @@ public class Xocfg_bnd_itm_srl implements GfoInvkAble { wtr.Add_set_eq(Key_box, Bry_.new_a7(Xog_bnd_box_.Xto_sys_str(box))); wtr.Add_set_eq(Key_ipt, Bry_.new_a7(ipt.Key())); return wtr.Bfr().To_str_and_clear(); - } private static final byte[] Key_box = Bry_.new_a7("box"), Key_ipt = Bry_.new_a7("ipt"); + } private static final byte[] Key_box = Bry_.new_a7("box"), Key_ipt = Bry_.new_a7("ipt"); public static void Src_(Xoae_app app, Xocfg_bnd_itm_srl itm, String v) { Xoa_gfs_mgr gfs_mgr = app.Gfs_mgr(); gfs_mgr.Run_str_for(itm, v); diff --git a/400_xowa/src/gplx/xowa/apps/cfgs/old/Xocfg_bnd_mgr.java b/400_xowa/src/gplx/xowa/apps/cfgs/old/Xocfg_bnd_mgr.java index fb3949852..7bd6be59b 100644 --- a/400_xowa/src/gplx/xowa/apps/cfgs/old/Xocfg_bnd_mgr.java +++ b/400_xowa/src/gplx/xowa/apps/cfgs/old/Xocfg_bnd_mgr.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.xowa.apps.cfgs.old; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.cfgs.*; import gplx.gfui.*; import gplx.xowa.guis.bnds.*; import gplx.xowa.guis.cmds.*; import gplx.xowa.apps.fmtrs.*; -public class Xocfg_bnd_mgr implements GfoInvkAble, Gfo_sort_able { +public class Xocfg_bnd_mgr implements Gfo_invk, Gfo_sort_able { private Xog_bnd_mgr_srl bnd_mgr_srl; private Xog_cmd_mgr cmd_mgr; private Xoa_fmtr_sort_mgr sorter; public Xocfg_bnd_mgr(Xoae_app app) { @@ -65,7 +65,7 @@ public class Xocfg_bnd_mgr implements GfoInvkAble, Gfo_sort_able { else if (ctx.Match(k, Invk_set_bulk)) Set_bulk(m.ReadBry("v")); else if (ctx.Match(k, Invk_init)) return Init(m.ReadStr("v")); else if (ctx.Match(k, Invk_show_shortcut_win)) Show_shortcut_win(m.ReadStr("uid"), m.ReadStr("name"), m.ReadStr("binding")); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String Invk_set_bulk = "set_bulk", Invk_init = "init", Invk_show_shortcut_win = "show_shortcut_win"; diff --git a/400_xowa/src/gplx/xowa/apps/cfgs/old/Xocfg_gui_mgr.java b/400_xowa/src/gplx/xowa/apps/cfgs/old/Xocfg_gui_mgr.java index 73369f385..dd8f78cb8 100644 --- a/400_xowa/src/gplx/xowa/apps/cfgs/old/Xocfg_gui_mgr.java +++ b/400_xowa/src/gplx/xowa/apps/cfgs/old/Xocfg_gui_mgr.java @@ -16,14 +16,14 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.apps.cfgs.old; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.cfgs.*; -public class Xocfg_gui_mgr implements GfoInvkAble { +public class Xocfg_gui_mgr implements Gfo_invk { public Xocfg_gui_mgr(Xoae_app app) {bnd_mgr = new Xocfg_bnd_mgr(app);} public Xocfg_tab_mgr Tab_mgr() {return tab_mgr;} private Xocfg_tab_mgr tab_mgr = new Xocfg_tab_mgr(); public Xocfg_bnd_mgr Bnd_mgr() {return bnd_mgr;} private Xocfg_bnd_mgr bnd_mgr; public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_tabs)) return tab_mgr; else if (ctx.Match(k, Invk_bnds)) return bnd_mgr; - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; } private static final String Invk_tabs = "tabs", Invk_bnds = "bnds"; } diff --git a/400_xowa/src/gplx/xowa/apps/cfgs/old/Xocfg_regy.java b/400_xowa/src/gplx/xowa/apps/cfgs/old/Xocfg_regy.java index 6ac7dd434..470dbd6e0 100644 --- a/400_xowa/src/gplx/xowa/apps/cfgs/old/Xocfg_regy.java +++ b/400_xowa/src/gplx/xowa/apps/cfgs/old/Xocfg_regy.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.apps.cfgs.old; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.cfgs.*; -public class Xocfg_regy implements GfoInvkAble { +public class Xocfg_regy implements Gfo_invk { public Xocfg_regy(Xoae_app app) { app_cfg = new Xocfg_root(app, Xocfg_root_.Tid_app); } @@ -27,7 +27,7 @@ public class Xocfg_regy implements GfoInvkAble { } public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_get)) return Get_or_null(m.ReadStrOr("v", Key_app)); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; } private static final String Invk_get = "get"; public static final String Key_app = null; diff --git a/400_xowa/src/gplx/xowa/apps/cfgs/old/Xocfg_root.java b/400_xowa/src/gplx/xowa/apps/cfgs/old/Xocfg_root.java index 7746a5cef..59e154d06 100644 --- a/400_xowa/src/gplx/xowa/apps/cfgs/old/Xocfg_root.java +++ b/400_xowa/src/gplx/xowa/apps/cfgs/old/Xocfg_root.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.apps.cfgs.old; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.cfgs.*; -public class Xocfg_root implements GfoInvkAble { +public class Xocfg_root implements Gfo_invk { public Xocfg_root(Xoae_app app, byte tid) { this.tid = tid; this.gui_mgr = new Xocfg_gui_mgr(app); @@ -25,7 +25,7 @@ public class Xocfg_root implements GfoInvkAble { public Xocfg_gui_mgr Gui_mgr() {return gui_mgr;} private Xocfg_gui_mgr gui_mgr; public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_gui)) return gui_mgr; - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; } private static final String Invk_gui = "gui"; } diff --git a/400_xowa/src/gplx/xowa/apps/cfgs/old/Xocfg_tab_btn_mgr.java b/400_xowa/src/gplx/xowa/apps/cfgs/old/Xocfg_tab_btn_mgr.java index 2e9414d77..5e4da1149 100644 --- a/400_xowa/src/gplx/xowa/apps/cfgs/old/Xocfg_tab_btn_mgr.java +++ b/400_xowa/src/gplx/xowa/apps/cfgs/old/Xocfg_tab_btn_mgr.java @@ -17,11 +17,11 @@ along with this program. If not, see . */ package gplx.xowa.apps.cfgs.old; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.cfgs.*; import gplx.xowa.guis.views.*; -public class Xocfg_tab_btn_mgr implements GfoInvkAble, GfoEvMgrOwner { +public class Xocfg_tab_btn_mgr implements Gfo_invk, Gfo_evt_mgr_owner { public Xocfg_tab_btn_mgr() { - evMgr = GfoEvMgr.new_(this); + evt_mgr = new Gfo_evt_mgr(this); } - public GfoEvMgr EvMgr() {return evMgr;} private GfoEvMgr evMgr; + public Gfo_evt_mgr Evt_mgr() {return evt_mgr;} private Gfo_evt_mgr evt_mgr; public int Height() {return height;} private int height = 20; public boolean Place_on_top() {return place_on_top;} private boolean place_on_top = true; public boolean Curved() {return curved;} private boolean curved = false; @@ -32,22 +32,22 @@ public class Xocfg_tab_btn_mgr implements GfoInvkAble, GfoEvMgrOwner { public boolean Hide_if_one() {return hide_if_one;} public Xocfg_tab_btn_mgr Hide_if_one_(boolean v) {hide_if_one = v; return this;} private boolean hide_if_one; public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_place_on_top)) return Yn.To_str(place_on_top); - else if (ctx.Match(k, Invk_place_on_top_)) {place_on_top = m.ReadYn("v"); GfoEvMgr_.PubVal(this, Evt_place_on_top_changed, place_on_top);} + else if (ctx.Match(k, Invk_place_on_top_)) {place_on_top = m.ReadYn("v"); Gfo_evt_mgr_.Pub_val(this, Evt_place_on_top_changed, place_on_top);} else if (ctx.Match(k, Invk_curved)) return Yn.To_str(curved); - else if (ctx.Match(k, Invk_curved_)) {curved = m.ReadYn("v"); GfoEvMgr_.PubVal(this, Evt_curved_changed, curved);} + else if (ctx.Match(k, Invk_curved_)) {curved = m.ReadYn("v"); Gfo_evt_mgr_.Pub_val(this, Evt_curved_changed, curved);} else if (ctx.Match(k, Invk_height)) return height; - else if (ctx.Match(k, Invk_height_)) {height = m.ReadInt("v"); GfoEvMgr_.PubVal(this, Evt_height_changed, height);} + else if (ctx.Match(k, Invk_height_)) {height = m.ReadInt("v"); Gfo_evt_mgr_.Pub_val(this, Evt_height_changed, height);} else if (ctx.Match(k, Invk_close_visible)) return Yn.To_str(close_visible); - else if (ctx.Match(k, Invk_close_visible_)) {close_visible = m.ReadYn("v"); GfoEvMgr_.PubVal(this, Evt_close_visible_changed, close_visible);} + else if (ctx.Match(k, Invk_close_visible_)) {close_visible = m.ReadYn("v"); Gfo_evt_mgr_.Pub_val(this, Evt_close_visible_changed, close_visible);} else if (ctx.Match(k, Invk_unselected_close_visible)) return Yn.To_str(unselected_close_visible); - else if (ctx.Match(k, Invk_unselected_close_visible_)) {unselected_close_visible = m.ReadYn("v"); GfoEvMgr_.PubVal(this, Evt_unselected_close_visible_changed, unselected_close_visible);} + else if (ctx.Match(k, Invk_unselected_close_visible_)) {unselected_close_visible = m.ReadYn("v"); Gfo_evt_mgr_.Pub_val(this, Evt_unselected_close_visible_changed, unselected_close_visible);} else if (ctx.Match(k, Invk_text_min_chars)) return text_min_chars; - else if (ctx.Match(k, Invk_text_min_chars_)) {text_min_chars = m.ReadInt("v"); GfoEvMgr_.PubVal(this, Evt_text_min_chars_changed, text_min_chars);} + else if (ctx.Match(k, Invk_text_min_chars_)) {text_min_chars = m.ReadInt("v"); Gfo_evt_mgr_.Pub_val(this, Evt_text_min_chars_changed, text_min_chars);} else if (ctx.Match(k, Invk_text_max_chars)) return text_max_chars; - else if (ctx.Match(k, Invk_text_max_chars_)) {text_max_chars = m.ReadInt("v"); GfoEvMgr_.PubVal(this, Evt_text_max_chars_changed, text_max_chars);} + else if (ctx.Match(k, Invk_text_max_chars_)) {text_max_chars = m.ReadInt("v"); Gfo_evt_mgr_.Pub_val(this, Evt_text_max_chars_changed, text_max_chars);} else if (ctx.Match(k, Invk_hide_if_one)) return Yn.To_str(hide_if_one); - else if (ctx.Match(k, Invk_hide_if_one_)) {hide_if_one = m.ReadYn("v"); GfoEvMgr_.PubVal(this, Evt_hide_if_one_changed, hide_if_one);} - else return GfoInvkAble_.Rv_unhandled; + else if (ctx.Match(k, Invk_hide_if_one_)) {hide_if_one = m.ReadYn("v"); Gfo_evt_mgr_.Pub_val(this, Evt_hide_if_one_changed, hide_if_one);} + else return Gfo_invk_.Rv_unhandled; return this; } private static final String diff --git a/400_xowa/src/gplx/xowa/apps/cfgs/old/Xocfg_tab_mgr.java b/400_xowa/src/gplx/xowa/apps/cfgs/old/Xocfg_tab_mgr.java index 6ae281f4f..6d18fdc8e 100644 --- a/400_xowa/src/gplx/xowa/apps/cfgs/old/Xocfg_tab_mgr.java +++ b/400_xowa/src/gplx/xowa/apps/cfgs/old/Xocfg_tab_mgr.java @@ -16,12 +16,12 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.apps.cfgs.old; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.cfgs.*; -public class Xocfg_tab_mgr implements GfoInvkAble { +public class Xocfg_tab_mgr implements Gfo_invk { public Xocfg_tab_new_mgr New_mgr() {return new_mgr;} private Xocfg_tab_new_mgr new_mgr = new Xocfg_tab_new_mgr(); public Xocfg_tab_btn_mgr Btn_mgr() {return btn_mgr;} private Xocfg_tab_btn_mgr btn_mgr = new Xocfg_tab_btn_mgr(); public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_new)) return new_mgr; else if (ctx.Match(k, Invk_btns)) return btn_mgr; - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; } private static final String Invk_new = "new", Invk_btns = "btns"; } diff --git a/400_xowa/src/gplx/xowa/apps/cfgs/old/Xocfg_tab_new_mgr.java b/400_xowa/src/gplx/xowa/apps/cfgs/old/Xocfg_tab_new_mgr.java index 06bb13389..c1fe91563 100644 --- a/400_xowa/src/gplx/xowa/apps/cfgs/old/Xocfg_tab_new_mgr.java +++ b/400_xowa/src/gplx/xowa/apps/cfgs/old/Xocfg_tab_new_mgr.java @@ -16,13 +16,13 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.apps.cfgs.old; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.cfgs.*; -public class Xocfg_tab_new_mgr implements GfoInvkAble { +public class Xocfg_tab_new_mgr implements Gfo_invk { public byte Insert_pos() {return insert_pos;} private byte insert_pos = Xocfg_new_tab_pos.Tid_cur_nxt; public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_insert_pos)) return Xocfg_new_tab_pos.Xto_str(insert_pos); else if (ctx.Match(k, Invk_insert_pos_)) insert_pos = Xocfg_new_tab_pos.Xto_tid(m.ReadStr("v")); else if (ctx.Match(k, Invk_insert_pos_list)) return Xocfg_new_tab_pos.Options__all; - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String Invk_insert_pos = "insert_pos", Invk_insert_pos_ = "insert_pos_", Invk_insert_pos_list = "insert_pos_list"; diff --git a/400_xowa/src/gplx/xowa/apps/fmtrs/Xoa_fmtr_itm.java b/400_xowa/src/gplx/xowa/apps/fmtrs/Xoa_fmtr_itm.java index dc82ae2e7..df1ddab6e 100644 --- a/400_xowa/src/gplx/xowa/apps/fmtrs/Xoa_fmtr_itm.java +++ b/400_xowa/src/gplx/xowa/apps/fmtrs/Xoa_fmtr_itm.java @@ -17,22 +17,22 @@ along with this program. If not, see . */ package gplx.xowa.apps.fmtrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.core.brys.fmtrs.*; -public class Xoa_fmtr_itm implements GfoInvkAble { +public class Xoa_fmtr_itm implements Gfo_invk { public Xoa_fmtr_itm(Xoae_app app) {this.app = app;} private Xoae_app app; public String Src() {return src;} public Xoa_fmtr_itm Src_(String v) {this.src = v; return this;} private String src; public byte[] Fmt() {return fmt;} public Xoa_fmtr_itm Fmt_(byte[] v) {this.fmt = v; return this;} private byte[] fmt; public Object Sorter() { - GfoInvkAble src_invk = (GfoInvkAble)app.Gfs_mgr().Run_str(src); - return GfoInvkAble_.InvkCmd(src_invk, Invk_sorter); + Gfo_invk src_invk = (Gfo_invk)app.Gfs_mgr().Run_str(src); + return Gfo_invk_.Invk_by_key(src_invk, Invk_sorter); } public String Run() { - GfoInvkAble src_invk = (GfoInvkAble)app.Gfs_mgr().Run_str(src); - int len = Int_.cast(GfoInvkAble_.InvkCmd(src_invk, Invk_len)); - Bry_bfr bfr = Bry_bfr.new_(); + Gfo_invk src_invk = (Gfo_invk)app.Gfs_mgr().Run_str(src); + int len = Int_.cast(Gfo_invk_.Invk_by_key(src_invk, Invk_len)); + Bry_bfr bfr = Bry_bfr_.New(); Bfmtr_eval_invk eval_mgr = new Bfmtr_eval_invk(app); Bry_fmtr fmtr = Bry_fmtr.new_bry_(fmt).Eval_mgr_(eval_mgr); for (int i = 0; i < len; i++) { - GfoInvkAble itm_invk = (GfoInvkAble)GfoInvkAble_.InvkCmd_val(src_invk, Invk_get_at, i); + Gfo_invk itm_invk = (Gfo_invk)Gfo_invk_.Invk_by_val(src_invk, Invk_get_at, i); eval_mgr.Invk_(itm_invk); fmtr.Bld_bfr(bfr, Bry_.Ary_empty); } @@ -45,19 +45,19 @@ public class Xoa_fmtr_itm implements GfoInvkAble { else if (ctx.Match(k, Invk_fmt_)) fmt = m.ReadBry("v"); else if (ctx.Match(k, Invk_sorter)) return this.Sorter(); else if (ctx.Match(k, Invk_run)) return Run(); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } - private static final String Invk_src = "src", Invk_src_ = "src_", Invk_fmt = "fmt", Invk_fmt_ = "fmt_" + private static final String Invk_src = "src", Invk_src_ = "src_", Invk_fmt = "fmt", Invk_fmt_ = "fmt_" , Invk_run = "run" ; - public static final String Invk_get_at = "get_at", Invk_len = "len" + public static final String Invk_get_at = "get_at", Invk_len = "len" , Invk_sorter = "sorter" ; } class Bfmtr_eval_invk implements Bry_fmtr_eval_mgr { public Bfmtr_eval_invk(Xoae_app app) {this.app = app;} private Xoae_app app; - public Bfmtr_eval_invk Invk_(GfoInvkAble invk) {this.invk = invk; return this;} private GfoInvkAble invk; + public Bfmtr_eval_invk Invk_(Gfo_invk invk) {this.invk = invk; return this;} private Gfo_invk invk; public boolean Enabled() {return enabled;} public void Enabled_(boolean v) {enabled = v;} private boolean enabled = true; public byte[] Eval(byte[] cmd) { Object rslt = app.Gfs_mgr().Run_str_for(invk, String_.new_u8(cmd)); diff --git a/400_xowa/src/gplx/xowa/apps/fmtrs/Xoa_fmtr_mgr.java b/400_xowa/src/gplx/xowa/apps/fmtrs/Xoa_fmtr_mgr.java index de4d98dc2..70d748d15 100644 --- a/400_xowa/src/gplx/xowa/apps/fmtrs/Xoa_fmtr_mgr.java +++ b/400_xowa/src/gplx/xowa/apps/fmtrs/Xoa_fmtr_mgr.java @@ -17,10 +17,10 @@ along with this program. If not, see . */ package gplx.xowa.apps.fmtrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.core.ios.*; -public class Xoa_fmtr_mgr implements GfoInvkAble { +public class Xoa_fmtr_mgr implements Gfo_invk { public Xoa_fmtr_mgr(Xoae_app app) {this.app = app;} private Xoae_app app; public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_new_grp)) return new Xoa_fmtr_itm(app); - else return GfoInvkAble_.Rv_unhandled; - } private static final String Invk_new_grp = "new_grp"; + else return Gfo_invk_.Rv_unhandled; + } private static final String Invk_new_grp = "new_grp"; } diff --git a/400_xowa/src/gplx/xowa/apps/fmtrs/Xoa_fmtr_sort_mgr.java b/400_xowa/src/gplx/xowa/apps/fmtrs/Xoa_fmtr_sort_mgr.java index 0bdf46f5f..5fb754aa6 100644 --- a/400_xowa/src/gplx/xowa/apps/fmtrs/Xoa_fmtr_sort_mgr.java +++ b/400_xowa/src/gplx/xowa/apps/fmtrs/Xoa_fmtr_sort_mgr.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.apps.fmtrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; -public class Xoa_fmtr_sort_mgr implements GfoInvkAble { +public class Xoa_fmtr_sort_mgr implements Gfo_invk { private Ordered_hash itms = Ordered_hash_.New(); private Xoa_fmtr_sort_wkr wkr = new Xoa_fmtr_sort_wkr(); private Gfo_sort_able sort_able; @@ -37,7 +37,7 @@ public class Xoa_fmtr_sort_mgr implements GfoInvkAble { if (ctx.Match(k, Invk_clear)) this.Clear(); else if (ctx.Match(k, Invk_add_many)) this.Add_many(m.ReadStrAry("k", "|")); else if (ctx.Match(k, Invk_exec)) this.Exec(); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } public static final String Invk_clear = "clear", Invk_add_many = "add_many", Invk_exec = "exec"; @@ -50,13 +50,13 @@ class Xoa_fmtr_sort_itm { class Xoa_fmtr_sort_wkr implements gplx.core.lists.ComparerAble { public Xoa_fmtr_sort_itm[] Itms() {return itms;} public void Itms_(Xoa_fmtr_sort_itm[] v) {itms = v; itms_len = v.length;} private Xoa_fmtr_sort_itm[] itms; private int itms_len; public int compare(Object lhsObj, Object rhsObj) { - GfoInvkAble lhs_invk = (GfoInvkAble)lhsObj; - GfoInvkAble rhs_invk = (GfoInvkAble)rhsObj; + Gfo_invk lhs_invk = (Gfo_invk)lhsObj; + Gfo_invk rhs_invk = (Gfo_invk)rhsObj; for (int i = 0; i < itms_len; i++) { Xoa_fmtr_sort_itm itm = itms[i]; String itm_key = itm.Key(); - Object lhs_val = GfoInvkAble_.InvkCmd(lhs_invk, itm_key); - Object rhs_val = GfoInvkAble_.InvkCmd(rhs_invk, itm_key); + Object lhs_val = Gfo_invk_.Invk_by_key(lhs_invk, itm_key); + Object rhs_val = Gfo_invk_.Invk_by_key(rhs_invk, itm_key); int compare = CompareAble_.Compare_obj(lhs_val, rhs_val) * itm.Comp_mult(); if (compare != CompareAble_.Same) return compare; diff --git a/400_xowa/src/gplx/xowa/apps/fsys/Xoa_fsys_mgr.java b/400_xowa/src/gplx/xowa/apps/fsys/Xoa_fsys_mgr.java index 6f25031a0..808066e4f 100644 --- a/400_xowa/src/gplx/xowa/apps/fsys/Xoa_fsys_mgr.java +++ b/400_xowa/src/gplx/xowa/apps/fsys/Xoa_fsys_mgr.java @@ -18,12 +18,9 @@ along with this program. If not, see . package gplx.xowa.apps.fsys; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.gfs.*; import gplx.xowa.wikis.domains.*; -public class Xoa_fsys_mgr implements GfoInvkAble { - public Xoa_fsys_mgr(String plat_name, Io_url root_dir, Io_url wiki_dir, Io_url file_dir, Io_url css_dir) { - this.root_dir = root_dir; - this.wiki_dir = wiki_dir; - this.file_dir = file_dir; - this.css_dir = css_dir; +public class Xoa_fsys_mgr implements Gfo_invk { + public Xoa_fsys_mgr(String plat_name, Io_url root_dir, Io_url wiki_dir, Io_url file_dir, Io_url css_dir, Io_url http_root) { + this.root_dir = root_dir; this.wiki_dir = wiki_dir; this.file_dir = file_dir; this.css_dir = css_dir; this.http_root = http_root; this.bin_plat_dir = root_dir.GenSubDir("bin").GenSubDir(plat_name); this.bin_any_dir = root_dir.GenSubDir("bin").GenSubDir("any"); this.bin_xowa_dir = bin_any_dir.GenSubDir("xowa"); @@ -36,12 +33,12 @@ public class Xoa_fsys_mgr implements GfoInvkAble { this.cfg_site_meta_fil = bin_xowa_dir.GenSubFil_nest("cfg", "wiki", "site_meta.sqlite3"); this.home_wiki_dir = bin_xowa_dir.GenSubDir_nest("wiki", Xow_domain_itm_.Str__home); } - public Io_url Root_dir() {return root_dir;} private final Io_url root_dir; - public Io_url Wiki_dir() {return wiki_dir;} private final Io_url wiki_dir; - public Io_url File_dir() {return file_dir;} private final Io_url file_dir; - public Io_url Css_dir() {return css_dir;} private final Io_url css_dir; - public Io_url Bin_plat_dir() {return bin_plat_dir;} private final Io_url bin_plat_dir; - public Io_url Bin_any_dir() {return bin_any_dir;} private final Io_url bin_any_dir; + public Io_url Root_dir() {return root_dir;} private final Io_url root_dir; // EX: /xowa/ + public Io_url Wiki_dir() {return wiki_dir;} private final Io_url wiki_dir; // EX: /xowa/wiki/ + public Io_url File_dir() {return file_dir;} private final Io_url file_dir; // EX: /xowa/file/ + public Io_url Css_dir() {return css_dir;} private final Io_url css_dir; // EX: /xowa/user/anonymous/wiki/ + public Io_url Bin_plat_dir() {return bin_plat_dir;} private final Io_url bin_plat_dir; // EX: /xowa/bin/lnx_64/ + public Io_url Bin_any_dir() {return bin_any_dir;} private final Io_url bin_any_dir; // EX: /xowa/bin/any public Io_url Bin_xowa_dir() {return bin_xowa_dir;} private final Io_url bin_xowa_dir; public Io_url Bin_xowa_file_dir() {return bin_xowa_file_dir;} private final Io_url bin_xowa_file_dir; public Io_url Bin_xtns_dir() {return bin_xtns_dir;} private final Io_url bin_xtns_dir; @@ -50,15 +47,16 @@ public class Xoa_fsys_mgr implements GfoInvkAble { public Io_url Cfg_wiki_core_dir() {return cfg_wiki_core_dir;} private final Io_url cfg_wiki_core_dir; public Io_url Cfg_site_meta_fil() {return cfg_site_meta_fil;} private final Io_url cfg_site_meta_fil; public Io_url Bin_data_os_cfg_fil() {return bin_plat_dir.GenSubFil_nest("xowa", "cfg", Xoa_gfs_mgr.Cfg_os);} - public Io_url Wiki_css_dir(String wiki) {return css_dir.GenSubDir_nest(wiki, "html");} // EX: /xowa/temp/simple.wikipedia.org/html/xowa_common.css - public Io_url Wiki_file_dir(String wiki) {return file_dir.GenSubDir_nest(wiki);} // EX: /xowa/temp/simple.wikipedia.org/orig/ + public Io_url Wiki_css_dir(String wiki) {return css_dir.GenSubDir_nest(wiki, "html");} // EX: /xowa/temp/simple.wikipedia.org/html/xowa_common.css + public Io_url Wiki_file_dir(String wiki) {return file_dir.GenSubDir_nest(wiki);} // EX: /xowa/temp/simple.wikipedia.org/orig/ public Io_url Home_wiki_dir() {return home_wiki_dir;} private final Io_url home_wiki_dir; public Io_url Cfg_app_fil() {return cfg_app_fil;} private final Io_url cfg_app_fil; - public void Init_by_app(GfoInvkAble app_mgr_invk) {this.app_mgr_invk = app_mgr_invk;} private GfoInvkAble app_mgr_invk; // for gfs and app.launcher + public Io_url Http_root() {return http_root;} private final Io_url http_root; // EX: file:///xowa/ or file:///android_asset/xowa/ + public void Init_by_app(Gfo_invk app_mgr_invk) {this.app_mgr_invk = app_mgr_invk;} private Gfo_invk app_mgr_invk; // for gfs and app.launcher public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_apps)) return app_mgr_invk; else if (ctx.Match(k, Invk_root_dir)) return root_dir; - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; } private static final String Invk_apps = "apps", Invk_root_dir = "root_dir"; } diff --git a/400_xowa/src/gplx/xowa/apps/gfs/Xoa_gfs_bldr.java b/400_xowa/src/gplx/xowa/apps/gfs/Xoa_gfs_bldr.java index abc535562..4bf6a0b17 100644 --- a/400_xowa/src/gplx/xowa/apps/gfs/Xoa_gfs_bldr.java +++ b/400_xowa/src/gplx/xowa/apps/gfs/Xoa_gfs_bldr.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.apps.gfs; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; public class Xoa_gfs_bldr { - public Bry_bfr Bfr() {return bfr;} private Bry_bfr bfr = Bry_bfr.new_(); + public Bry_bfr Bfr() {return bfr;} private Bry_bfr bfr = Bry_bfr_.New(); public byte[] Xto_bry() {return bfr.To_bry_and_clear();} public Xoa_gfs_bldr Add_byte(byte b) {bfr.Add_byte(b); return this;} public Xoa_gfs_bldr Add_blob(byte[] bry) {bfr.Add(bry); return this;} @@ -71,7 +71,7 @@ public class Xoa_gfs_bldr { bfr.Add(Bry_semic_nl); return this; } - private static final byte[] Bry_eq = Bry_.new_a7(" = "), Bry_semic_nl = Bry_.new_a7(";\n"); + private static final byte[] Bry_eq = Bry_.new_a7(" = "), Bry_semic_nl = Bry_.new_a7(";\n"); private void Add_str_escape_apos(Bry_bfr bfr, byte[] src) { int len = src.length; for (int i = 0; i < len; i++) { @@ -82,7 +82,7 @@ public class Xoa_gfs_bldr { bfr.Add_byte(b); } } - public static final byte[] + public static final byte[] Bry_xquote_bgn = Bry_.new_a7("<:['\n") , Bry_xquote_end = Bry_.new_a7("']:>\n") ; diff --git a/400_xowa/src/gplx/xowa/apps/gfs/Xoa_gfs_mgr.java b/400_xowa/src/gplx/xowa/apps/gfs/Xoa_gfs_mgr.java index 3855ad6e0..d40b1c990 100644 --- a/400_xowa/src/gplx/xowa/apps/gfs/Xoa_gfs_mgr.java +++ b/400_xowa/src/gplx/xowa/apps/gfs/Xoa_gfs_mgr.java @@ -18,28 +18,28 @@ along with this program. If not, see . package gplx.xowa.apps.gfs; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.langs.gfs.*; import gplx.xowa.users.*; import gplx.xowa.apps.fsys.*; -public class Xoa_gfs_mgr implements GfoInvkAble, GfoInvkRootWkr { - private final Xou_fsys_mgr usr_fsys_mgr; - public Xoa_gfs_mgr(GfoInvkAble root_invk, Xoa_fsys_mgr app_fsys_mgr, Xou_fsys_mgr usr_fsys_mgr) { +public class Xoa_gfs_mgr implements Gfo_invk, Gfo_invk_root_wkr { + private final Xou_fsys_mgr usr_fsys_mgr; + public Xoa_gfs_mgr(Gfo_invk root_invk, Xoa_fsys_mgr app_fsys_mgr, Xou_fsys_mgr usr_fsys_mgr) { this.root_invk = root_invk; this.app_fsys_mgr = app_fsys_mgr; this.usr_fsys_mgr = usr_fsys_mgr; GfsCore.Instance.AddCmd(root_invk, Xoae_app.Invk_app); GfsCore.Instance.AddCmd(root_invk, Xoae_app.Invk_xowa); } - public GfoInvkAble Root_invk() {return root_invk;} private final GfoInvkAble root_invk; - public Xoa_fsys_mgr App_fsys_mgr() {return app_fsys_mgr;} private final Xoa_fsys_mgr app_fsys_mgr; - public Xoa_app_eval Eval_mgr() {return eval_mgr;} private final Xoa_app_eval eval_mgr = new Xoa_app_eval(); - public Gfs_wtr Wtr() {return wtr;} private final Gfs_wtr wtr = new Gfs_wtr(); + public Gfo_invk Root_invk() {return root_invk;} private final Gfo_invk root_invk; + public Xoa_fsys_mgr App_fsys_mgr() {return app_fsys_mgr;} private final Xoa_fsys_mgr app_fsys_mgr; + public Xoa_app_eval Eval_mgr() {return eval_mgr;} private final Xoa_app_eval eval_mgr = new Xoa_app_eval(); + public Gfs_wtr Wtr() {return wtr;} private final Gfs_wtr wtr = new Gfs_wtr(); public void Run_url(Io_url url) { Run_url_for(GfsCore.Instance.Root(), url); Gfo_usr_dlg_.Instance.Log_wkr().Log_to_session_fmt("gfs.done: ~{0}", url.Raw()); } - public void Run_url_for(GfoInvkAble invk, Io_url url) { + public void Run_url_for(Gfo_invk invk, Io_url url) { String raw = Io_mgr.Instance.LoadFilStr_args(url).MissingIgnored_().Exec(); if (String_.Len_eq_0(raw)) return; Run_str_for(invk, raw); } public Object Run_str(String raw) {return Run_str_for(GfsCore.Instance.Root(), raw);} - public Object Run_str_for(GfoInvkAble invk, String raw) {return Run_str_for(invk, Xoa_gfs_mgr_.Parse_to_msg(raw));} - public Object Run_str_for(GfoInvkAble invk, GfoMsg root_msg) { + public Object Run_str_for(Gfo_invk invk, String raw) {return Run_str_for(invk, Xoa_gfs_mgr_.Parse_to_msg(raw));} + public Object Run_str_for(Gfo_invk invk, GfoMsg root_msg) { try { Object rv = null; GfsCtx ctx = GfsCtx.new_().Fail_if_unhandled_(Fail_if_unhandled).Usr_dlg_(Gfo_usr_dlg_.Instance); @@ -49,7 +49,7 @@ public class Xoa_gfs_mgr implements GfoInvkAble, GfoInvkRootWkr { return rv; // return rv from last call } catch (Exception e) { Gfo_usr_dlg_.Instance.Warn_many("", "", "error while executing script: err=~{0}", Err_.Message_gplx_full(e)); - return GfoInvkAble_.Rv_error; + return Gfo_invk_.Rv_error; } } private void Run_url_by_type(String type) { @@ -71,8 +71,8 @@ public class Xoa_gfs_mgr implements GfoInvkAble, GfoInvkRootWkr { public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_run_file_by_type)) Run_url_by_type(m.ReadStr("v")); else if (ctx.Match(k, Invk_fail_if_unhandled_)) {Fail_if_unhandled = m.ReadYn("v"); ctx.Fail_if_unhandled_(Fail_if_unhandled);} - else if (ctx.Match(k, Invk_txns)) {return GfoInvkAble_.Null;} // FUTURE: handle version for upgrades - else return GfoInvkAble_.Rv_unhandled; + else if (ctx.Match(k, Invk_txns)) {return Gfo_invk_.Noop;} // FUTURE: handle version for upgrades + else return Gfo_invk_.Rv_unhandled; return this; } private static final String Invk_run_file_by_type = "run_file_by_type", Invk_fail_if_unhandled_ = "fail_if_unhandled_", Invk_txns = "txns"; public static void Msg_parser_init() {GfsCore.Instance.MsgParser_(gplx.langs.gfs.Gfs_msg_bldr.Instance);} diff --git a/400_xowa/src/gplx/xowa/apps/gfs/Xoa_gfs_php_mgr_tst.java b/400_xowa/src/gplx/xowa/apps/gfs/Xoa_gfs_php_mgr_tst.java index c770d6d3a..05f143004 100644 --- a/400_xowa/src/gplx/xowa/apps/gfs/Xoa_gfs_php_mgr_tst.java +++ b/400_xowa/src/gplx/xowa/apps/gfs/Xoa_gfs_php_mgr_tst.java @@ -35,7 +35,7 @@ public class Xoa_gfs_php_mgr_tst { } } class Xoa_gfs_php_mgr_fxt { - private Bry_bfr bfr = Bry_bfr.new_(); + private Bry_bfr bfr = Bry_bfr_.New(); public void Clear() {} public void Test_Xto_gfs(String raw, String expd) { byte[] actl = Xoa_gfs_php_mgr.Xto_gfs(bfr, Bry_.new_u8(raw)); diff --git a/400_xowa/src/gplx/xowa/apps/progs/Xoa_prog_mgr.java b/400_xowa/src/gplx/xowa/apps/progs/Xoa_prog_mgr.java index 90028d115..57515d889 100644 --- a/400_xowa/src/gplx/xowa/apps/progs/Xoa_prog_mgr.java +++ b/400_xowa/src/gplx/xowa/apps/progs/Xoa_prog_mgr.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.apps.progs; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.fsys.*; import gplx.xowa.files.*; import gplx.core.envs.*; -public class Xoa_prog_mgr implements GfoInvkAble { +public class Xoa_prog_mgr implements Gfo_invk { public void Init_by_app(Xoa_fsys_eval cmd_eval) { Gfo_usr_dlg usr_dlg = Xoa_app_.Usr_dlg(); Process_adp.ini_(this, usr_dlg, app_query_img_size , cmd_eval, Process_adp.Run_mode_sync_timeout , 10 * 60, "~{<>bin_plat_dir<>}imagemagick\\identify", "-ping -format \"<{%w,%h}>\" \"~{file}\"", "file"); @@ -87,7 +87,7 @@ public class Xoa_prog_mgr implements GfoInvkAble { else if (ctx.Match(k, Invk_pdf)) return Init_by_exts("pdf"); else if (ctx.Match(k, Invk_djvu)) return Init_by_exts("djvu"); else if (ctx.Match(k, Invk_view_by_ext)) Exec_view_by_ext(m.ReadStr("exts"), m.ReadStr("cmd"), m.ReadStr("args")); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } public void Exec_view_web(byte[] url) { @@ -95,7 +95,7 @@ public class Xoa_prog_mgr implements GfoInvkAble { String url_str = String_.new_u8(url); url_str = Process_adp.Escape_ampersands_if_process_is_cmd(Op_sys.Cur().Tid_is_wnt(), app_view_web.Exe_url().Raw(), url_str); // escape ampersands; DATE:2014-05-20 app_view_web.Run(url_str); - } private static final byte[] Quote_normal = new byte[] {Byte_ascii.Quote}, Quote_escape = new byte[] {Byte_ascii.Quote, Byte_ascii.Quote}; + } private static final byte[] Quote_normal = new byte[] {Byte_ascii.Quote}, Quote_escape = new byte[] {Byte_ascii.Quote, Byte_ascii.Quote}; private Process_adp App_by_ext_key(String ext) {return cmds_view_file_by_ext[Xof_ext_.Get_id_by_ext_(Bry_.new_a7(ext))];} public void Exec_view_by_ext(String exts_raw, String cmd, String args) { String[] exts_ary = String_.Split(exts_raw, '|'); diff --git a/400_xowa/src/gplx/xowa/apps/servers/Gxw_html_server.java b/400_xowa/src/gplx/xowa/apps/servers/Gxw_html_server.java index cfd1321c9..d76c6bee1 100644 --- a/400_xowa/src/gplx/xowa/apps/servers/Gxw_html_server.java +++ b/400_xowa/src/gplx/xowa/apps/servers/Gxw_html_server.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.apps.servers; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.core.primitives.*; import gplx.core.js.*; -import gplx.gfui.*; +import gplx.gfui.*; import gplx.gfui.kits.core.*; import gplx.gfui.controls.gxws.*; import gplx.xowa.apps.servers.tcp.*; import gplx.xowa.apps.servers.http.*; import gplx.xowa.guis.views.*; public class Gxw_html_server implements Gxw_html { @@ -32,12 +32,13 @@ public class Gxw_html_server implements Gxw_html { public void Html_doc_html_load_tid_(byte v) {html_doc_html_load_tid = v;} public void Html_dispose() {} public void Html_js_enabled_(boolean v) {} - public String Html_js_eval_proc_as_str(String name, Object... args) {return Exec_as_str(js_wtr.Write_statement_return_func(name, args).To_str_and_clear());} // TODO: add other params + public String Html_js_eval_proc_as_str(String name, Object... args) {return Exec_as_str(js_wtr.Write_statement_return_func(name, args).To_str_and_clear());} // TODO_OLD: add other params public boolean Html_js_eval_proc_as_bool(String name, Object... args) {return Exec_as_bool(js_wtr.Write_statement_return_func(name, args).To_str_and_clear());} public String Html_js_eval_script(String script) {return Exec_as_str(script);} - public void Html_js_cbks_add(String js_func_name, GfoInvkAble invk) {} + public Object Html_js_eval_script_as_obj(String script) {return Exec_as_str(script);} + public void Html_js_cbks_add(String js_func_name, Gfo_invk invk) {} public String Html_js_send_json(String name, String data) {throw Err_.new_unimplemented();} - public void Html_invk_src_(GfoEvObj v) {} + public void Html_invk_src_(Gfo_evt_itm v) {} public GxwCore_base Core() {throw Err_.new_unimplemented();} public GxwCbkHost Host() {throw Err_.new_unimplemented();} public void Host_set(GxwCbkHost host) {throw Err_.new_unimplemented();} public Object UnderElem() {throw Err_.new_unimplemented();} @@ -58,19 +59,28 @@ public class Gxw_html_server implements Gxw_html { } public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_set)) {} - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String Invk_set = "set"; public static void Init_gui_for_server(Xoae_app app, Xosrv_socket_wtr wtr) { - Mem_kit mem_kit = (Mem_kit)gplx.gfui.Gfui_kit_.Mem(); + Mem_kit mem_kit = (Mem_kit)Gfui_kit_.Mem(); mem_kit.New_html_impl_prototype_(new Gxw_html_server(app.Usr_dlg(), wtr)); // NOTE: set prototype before calling Kit_ app.Gui_mgr().Kit_(mem_kit); } public static void Assert_tab(Xoae_app app, Xoae_page page) { Xog_win_itm browser_win = app.Gui_mgr().Browser_win(); - if (browser_win.Active_tab() == null) { // no active tab - Xowe_wiki wiki = page.Wikie(); // take wiki from current page; NOTE: do not take from browser_win.Active_tab().Wiki(); DATE:2015-02-23 - browser_win.Tab_mgr().Tabs_new_init(wiki, page); // create at least one active tab; DATE:2014-07-30 + if (browser_win.Active_tab() == null) { // no active tab + Xowe_wiki wiki = page.Wikie(); // take wiki from current page; NOTE: do not take from browser_win.Active_tab().Wiki(); DATE:2015-02-23 + browser_win.Tab_mgr().Tabs_new_init(wiki, page); // create at least one active tab; DATE:2014-07-30 } } + public static Xog_tab_itm Assert_tab2(Xoae_app app, Xowe_wiki wiki) { + Xog_win_itm browser_win = app.Gui_mgr().Browser_win(); + Xog_tab_itm rv = browser_win.Active_tab(); + if (rv == null) { // no active tab + Xoae_page page = Xoae_page.New(wiki, wiki.Ttl_parse(Bry_.new_a7("Empty_tab"))); + rv = browser_win.Tab_mgr().Tabs_new_init(wiki, page); // create at least one active tab; DATE:2014-07-30 + } + return rv; + } } diff --git a/400_xowa/src/gplx/xowa/apps/servers/http/Http_server_mgr.java b/400_xowa/src/gplx/xowa/apps/servers/http/Http_server_mgr.java index 1233ecdc7..df5dcdda4 100644 --- a/400_xowa/src/gplx/xowa/apps/servers/http/Http_server_mgr.java +++ b/400_xowa/src/gplx/xowa/apps/servers/http/Http_server_mgr.java @@ -36,30 +36,25 @@ package gplx.xowa.apps.servers.http; import gplx.*; import gplx.xowa.*; import g import gplx.core.threads.*; import gplx.core.net.*; import gplx.core.primitives.*; import gplx.core.envs.*; import gplx.langs.jsons.*; import gplx.langs.htmls.encoders.*; import gplx.xowa.wikis.pages.*; -public class Http_server_mgr implements GfoInvkAble { - private final Object thread_lock = new Object(); - private final Gfo_usr_dlg usr_dlg; +public class Http_server_mgr implements Gfo_invk { + private final Object thread_lock = new Object(); + private final Gfo_usr_dlg usr_dlg; private Http_server_socket wkr; private byte retrieve_mode = File_retrieve_mode.Mode_wait; - private boolean running, init_gui_done; + private boolean running, init_gui_needed = true; public Http_server_mgr(Xoae_app app) { this.app = app; this.usr_dlg = app.Usr_dlg(); this.request_parser = new Http_request_parser(server_wtr, false); } - public Xoae_app App() {return app;} private final Xoae_app app; - public Http_server_wtr Server_wtr() {return server_wtr;} private final Http_server_wtr server_wtr = Http_server_wtr_.new_console(); - public Http_request_parser Request_parser() {return request_parser;} private final Http_request_parser request_parser; - public Gfo_url_encoder Encoder() {return encoder;} private final Gfo_url_encoder encoder = Gfo_url_encoder_.New__http_url().Make(); + public Xoae_app App() {return app;} private final Xoae_app app; + public Http_server_wtr Server_wtr() {return server_wtr;} private final Http_server_wtr server_wtr = Http_server_wtr_.new_console(); + public Http_request_parser Request_parser() {return request_parser;} private final Http_request_parser request_parser; + public Gfo_url_encoder Encoder() {return encoder;} private final Gfo_url_encoder encoder = Gfo_url_encoder_.New__http_url().Make(); public int Port() {return port;} public Http_server_mgr Port_(int v) {port = v; return this;} private int port = 8080; - public Http_server_wkr_pool Wkr_pool() {return wkr_pool;} private final Http_server_wkr_pool wkr_pool = new Http_server_wkr_pool(); - public Int_pool Uid_pool() {return uid_pool;} private final Int_pool uid_pool = new Int_pool(); + public Http_server_wkr_pool Wkr_pool() {return wkr_pool;} private final Http_server_wkr_pool wkr_pool = new Http_server_wkr_pool(); + public Int_pool Uid_pool() {return uid_pool;} private final Int_pool uid_pool = new Int_pool(); public byte[] Home() {return home;} public void Home_(byte[] v) {home = Bry_.Add(Byte_ascii.Slash_bry, v);} private byte[] home = Bry_.new_a7("/home/wiki/Main_Page"); - private void Init_gui() { // create a shim gui to automatically handle default XOWA gui JS calls - if (init_gui_done) return; - init_gui_done = true; - Gxw_html_server.Init_gui_for_server(app, null); - } private void Running_(boolean val) { if (val) { if (running) @@ -81,7 +76,7 @@ public class Http_server_mgr implements GfoInvkAble { } public void Run() { if (wkr == null) wkr = new Http_server_socket(this); - Thread_adp_.invk_("thread:xowa.http_server.server", wkr, Http_server_socket.Invk_run).Start(); + Thread_adp_.Start_by_key("thread:xowa.http_server.server", wkr, Http_server_socket.Invk_run); Note("HTTP Server started: Navigate to http://localhost:" + Int_.To_str(port)); } public void Run_xowa_cmd(Xoae_app app, String url_encoded_str) { @@ -89,34 +84,43 @@ public class Http_server_mgr implements GfoInvkAble { String cmd = url_converter.Decode_str(url_encoded_str); app.Gfs_mgr().Run_str(cmd); } - public String Parse_page_to_html(Http_data__client data__client, byte[] wiki_domain, byte[] page_ttl) { + public String Parse_page_to_html(Http_data__client data__client, byte[] wiki_domain, byte[] ttl_bry) { synchronized (thread_lock) { - Init_gui(); - Xowe_wiki wiki = (Xowe_wiki)app.Wiki_mgr().Get_by_or_make_init_y(wiki_domain); // get the wiki; assert init for Main_Page; EX:click zh.w on wiki sidebar; DATE:2015-07-19 - if (Env_.System_memory_total() > Io_mgr.Len_gb) Xow_wiki_.Rls_mem(wiki, true); // release memory at 1 GB; DATE:2015-09-11 - if (Bry_.Len_eq_0(page_ttl)) page_ttl = wiki.Props().Main_page(); - Xoa_url page_url = wiki.Utl__url_parser().Parse(page_ttl); // get the url (needed for query args) - Xoa_ttl ttl = Xoa_ttl.parse(wiki, page_ttl); // get the ttl - Xoae_page page = wiki.Data_mgr().Load_page_by_ttl(page_url, ttl); // get page and parse it - Gxw_html_server.Assert_tab(app, page); // HACK: assert at least 1 tab - app.Gui_mgr().Browser_win().Active_page_(page); // HACK: init gui_mgr's page for output (which server ordinarily doesn't need) - if (page.Missing()) { // if page does not exist, replace with message; else null_ref error; DATE:2014-03-08 + // create a shim gui to automatically handle default XOWA gui JS calls + if (init_gui_needed) { + init_gui_needed = false; + Gxw_html_server.Init_gui_for_server(app, null); + } + + // get the wiki + Xowe_wiki wiki = (Xowe_wiki)app.Wiki_mgr().Get_by_or_make_init_y(wiki_domain); // assert init for Main_Page; EX:click zh.w on wiki sidebar; DATE:2015-07-19 + if (Env_.System_memory_total() > Io_mgr.Len_gb) Xowe_wiki_.Rls_mem(wiki, true); // release memory at 1 GB; DATE:2015-09-11 + + // get the url / ttl + if (Bry_.Len_eq_0(ttl_bry)) ttl_bry = wiki.Props().Main_page(); + Xoa_url url = wiki.Utl__url_parser().Parse(ttl_bry); + Xoa_ttl ttl = Xoa_ttl.parse(wiki, ttl_bry); + + // get the page + gplx.xowa.guis.views.Xog_tab_itm tab = Gxw_html_server.Assert_tab2(app, wiki); // HACK: assert tab exists + Xoae_page page = wiki.Page_mgr().Load_page(url, ttl, tab); + app.Gui_mgr().Browser_win().Active_page_(page); // HACK: init gui_mgr's page for output (which server ordinarily doesn't need) + if (page.Missing()) { // if page does not exist, replace with message; else null_ref error; DATE:2014-03-08 page.Data_raw_(Bry_.new_a7("'''Page not found.'''")); wiki.Parser_mgr().Parse(page, false); } page.Html_data().Head_mgr().Itm__server().Init_by_http(data__client).Enabled_y_(); - byte[] output_html = wiki.Html_mgr().Page_wtr_mgr().Gen(page, Xopg_page_.Tid_read); // write html from page data + + // generate html switch (retrieve_mode) { case File_retrieve_mode.Mode_skip: break; // noop - case File_retrieve_mode.Mode_async_server: app.Gui_mgr().Browser_win().Page__async__bgn(page.Tab_data().Tab()); break; - case File_retrieve_mode.Mode_wait: - if (page.File_queue().Count() > 0) { - app.Gui_mgr().Browser_win().Active_tab().Async(); - output_html = wiki.Html_mgr().Page_wtr_mgr().Gen(page, Xopg_page_.Tid_read); - } + case File_retrieve_mode.Mode_async_server: app.Gui_mgr().Browser_win().Page__async__bgn(tab); break; + case File_retrieve_mode.Mode_wait: + gplx.xowa.guis.views.Xog_async_wkr.Async(page, tab.Html_itm()); + page = wiki.Page_mgr().Load_page(url, ttl, tab); // HACK: fetch page again so that HTML will now include img data break; } - return String_.new_u8(output_html); + return String_.new_u8(wiki.Html_mgr().Page_wtr_mgr().Gen(page, Xopg_page_.Tid_read)); } } private void Note(String s) { @@ -131,7 +135,7 @@ public class Http_server_mgr implements GfoInvkAble { else if (ctx.Match(k, Invk_retrieve_mode)) return File_retrieve_mode.Xto_str(retrieve_mode); else if (ctx.Match(k, Invk_retrieve_mode_)) retrieve_mode = File_retrieve_mode.Xto_byte(m.ReadStr("v")); else if (ctx.Match(k, Invk_retrieve_mode_list)) return File_retrieve_mode.Options__list; - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String diff --git a/400_xowa/src/gplx/xowa/apps/servers/http/Http_server_socket.java b/400_xowa/src/gplx/xowa/apps/servers/http/Http_server_socket.java index 0109bc2e2..ad4435cf3 100644 --- a/400_xowa/src/gplx/xowa/apps/servers/http/Http_server_socket.java +++ b/400_xowa/src/gplx/xowa/apps/servers/http/Http_server_socket.java @@ -17,8 +17,8 @@ along with this program. If not, see . */ package gplx.xowa.apps.servers.http; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.servers.*; import gplx.core.net.*; import gplx.core.threads.*; import gplx.core.primitives.*; -class Http_server_socket implements GfoInvkAble { - private final Http_server_mgr server_mgr; +class Http_server_socket implements Gfo_invk { + private final Http_server_mgr server_mgr; private Server_socket_adp server_socket; public Http_server_socket(Http_server_mgr server_mgr) {this.server_mgr = server_mgr;} public boolean Canceled() {return canceled;} @@ -53,12 +53,12 @@ class Http_server_socket implements GfoInvkAble { } Http_server_wkr_v2 wkr = new Http_server_wkr_v2(server_mgr, wkr_uid); wkr.Init_by_thread(client_socket); - Thread_adp_.invk_("thread:xowa.http_server.client", wkr, Http_server_wkr_v2.Invk_run).Start(); + Thread_adp_.Start_by_key("thread:xowa.http_server.client", wkr, Http_server_wkr_v2.Invk_run); } } public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_run)) this.Run(); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } public static final String Invk_run = "run"; } diff --git a/400_xowa/src/gplx/xowa/apps/servers/http/Http_server_wkr_pool.java b/400_xowa/src/gplx/xowa/apps/servers/http/Http_server_wkr_pool.java index 6670c9bb5..7937c1442 100644 --- a/400_xowa/src/gplx/xowa/apps/servers/http/Http_server_wkr_pool.java +++ b/400_xowa/src/gplx/xowa/apps/servers/http/Http_server_wkr_pool.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.xowa.apps.servers.http; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.servers.*; import gplx.core.primitives.*; public class Http_server_wkr_pool { - private final Ordered_hash hash = Ordered_hash_.New(); private final Int_obj_ref hash_key = Int_obj_ref.neg1_(); + private final Ordered_hash hash = Ordered_hash_.New(); private final Int_obj_ref hash_key = Int_obj_ref.New_neg1(); public boolean Enabled() {return max != 0;} public int Max() {return max;} private int max; public int Timeout() {return timeout;} private int timeout; @@ -28,7 +28,7 @@ public class Http_server_wkr_pool { public void Add(int uid) { if (max == 0) return; // disabled synchronized (hash) { - Int_obj_ref wkr_key = Int_obj_ref.new_(uid); + Int_obj_ref wkr_key = Int_obj_ref.New(uid); hash.Add(wkr_key, wkr_key); ++len; } diff --git a/400_xowa/src/gplx/xowa/apps/servers/http/Http_server_wkr_v2.java b/400_xowa/src/gplx/xowa/apps/servers/http/Http_server_wkr_v2.java index ac92311b5..4ecf0c49f 100644 --- a/400_xowa/src/gplx/xowa/apps/servers/http/Http_server_wkr_v2.java +++ b/400_xowa/src/gplx/xowa/apps/servers/http/Http_server_wkr_v2.java @@ -16,11 +16,11 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.apps.servers.http; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.servers.*; -import gplx.core.ios.*; +import gplx.core.ios.*; import gplx.core.ios.streams.*; import gplx.core.primitives.*; import gplx.core.net.*; import gplx.langs.htmls.encoders.*; import gplx.xowa.apps.*; import gplx.xowa.htmls.js.*; -class Http_server_wkr_v2 implements GfoInvkAble { +class Http_server_wkr_v2 implements Gfo_invk { private final int uid; private final Http_server_mgr server_mgr; private final Http_server_wtr server_wtr; @@ -31,7 +31,7 @@ class Http_server_wkr_v2 implements GfoInvkAble { private final Xoae_app app; private final String root_dir_http; private final byte[] root_dir_fsys; - private final Bry_bfr tmp_bfr = Bry_bfr.new_(64); + private final Bry_bfr tmp_bfr = Bry_bfr_.New_w_size(64); private Socket_adp socket; private Http_data__client data__client; public Http_server_wkr_v2(Http_server_mgr server_mgr, int uid){ @@ -149,7 +149,7 @@ class Http_server_wkr_v2 implements GfoInvkAble { } public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_run)) {this.Run();} - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } public static final String Invk_run = "run"; private static final byte[] @@ -163,7 +163,7 @@ class Xosrv_http_wkr_ { public static void Write_response_as_html(Http_client_wtr client_wtr, boolean cross_domain, byte[] html) { try{ client_wtr.Write_bry(Rsp__http_ok); - // TODO: add command-line argument to allow testing from local file + // TODO_OLD: add command-line argument to allow testing from local file // if (cross_domain) // client_wtr.Write_str("Access-Control-Allow-Origin: *\n"); // No 'Access-Control-Allow-Origin' header is present on the requested resource. client_wtr.Write_bry(Rsp__content_type_html); diff --git a/400_xowa/src/gplx/xowa/apps/servers/tcp/Socket_rdr.java b/400_xowa/src/gplx/xowa/apps/servers/tcp/Socket_rdr.java index 003c5c427..dabb6bdf9 100644 --- a/400_xowa/src/gplx/xowa/apps/servers/tcp/Socket_rdr.java +++ b/400_xowa/src/gplx/xowa/apps/servers/tcp/Socket_rdr.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.apps.servers.tcp; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.servers.*; -import gplx.core.ios.*; +import gplx.core.ios.*; import gplx.core.ios.streams.*; public class Socket_rdr { private java.net.ServerSocket server; private java.net.Socket client; diff --git a/400_xowa/src/gplx/xowa/apps/servers/tcp/Xosrv_msg_rdr.java b/400_xowa/src/gplx/xowa/apps/servers/tcp/Xosrv_msg_rdr.java index c4782d4ff..2c9c5503a 100644 --- a/400_xowa/src/gplx/xowa/apps/servers/tcp/Xosrv_msg_rdr.java +++ b/400_xowa/src/gplx/xowa/apps/servers/tcp/Xosrv_msg_rdr.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.apps.servers.tcp; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.servers.*; import gplx.core.primitives.*; -import gplx.core.ios.*; import gplx.core.texts.*; +import gplx.core.ios.*; import gplx.core.ios.streams.*; import gplx.core.texts.*; public class Xosrv_msg_rdr { public Xosrv_msg_rdr(byte[] default_body_bry, IoStream rdr) {this.default_body_bry = default_body_bry; default_body_bry_len = default_body_bry.length; this.rdr = rdr;} private byte[] header_bry = new byte[24], default_body_bry; int default_body_bry_len; public IoStream Rdr() {return rdr;} private IoStream rdr; @@ -34,7 +34,7 @@ public class Xosrv_msg_rdr { if (cksum != (body_len * 2) + 1) return Xosrv_msg.fail_("checksum failed; body_len:{0} chksum:{1}", body_len, cksum); byte[] body_bry = body_len > default_body_bry_len ? new byte[body_len] : default_body_bry; rdr.Read(body_bry, 0, body_len); - Int_obj_ref fld_bgn = Int_obj_ref.zero_(); Bool_obj_ref fail_ref = Bool_obj_ref.n_(); String_obj_ref fld_ref = String_obj_ref.null_(); + Int_obj_ref fld_bgn = Int_obj_ref.New_zero(); Bool_obj_ref fail_ref = Bool_obj_ref.n_(); String_obj_ref fld_ref = String_obj_ref.null_(); byte[] cmd_name = Read_fld(body_bry, body_len, fld_bgn, fail_ref, fld_ref.Val_("cmd_name")); if (fail_ref.Val()) return Read_fld_fail(fld_ref, body_bry); byte[] msg_id = Read_fld(body_bry, body_len, fld_bgn, fail_ref, fld_ref.Val_("msg_id")); if (fail_ref.Val()) return Read_fld_fail(fld_ref, body_bry); byte[] sender = Read_fld(body_bry, body_len, fld_bgn, fail_ref, fld_ref.Val_("sender")); if (fail_ref.Val()) return Read_fld_fail(fld_ref, body_bry); diff --git a/400_xowa/src/gplx/xowa/apps/servers/tcp/Xosrv_msg_rdr_tst.java b/400_xowa/src/gplx/xowa/apps/servers/tcp/Xosrv_msg_rdr_tst.java index eb5f8eb09..c9a28171e 100644 --- a/400_xowa/src/gplx/xowa/apps/servers/tcp/Xosrv_msg_rdr_tst.java +++ b/400_xowa/src/gplx/xowa/apps/servers/tcp/Xosrv_msg_rdr_tst.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.apps.servers.tcp; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.servers.*; import org.junit.*; -import gplx.core.ios.*; +import gplx.core.ios.*; import gplx.core.ios.streams.*; public class Xosrv_msg_rdr_tst { @Before public void init() {fxt.Clear();} private Xosrv_msg_rdr_fxt fxt = new Xosrv_msg_rdr_fxt(); @Test public void Parse() { @@ -58,7 +58,7 @@ class Xosrv_msg_rdr_fxt { Tfds.Eq_true(String_.Has_at_bgn(msg_text, expd_err), msg_text); } public void Test_print(Xosrv_msg msg, String expd) { - Bry_bfr bfr = Bry_bfr.new_(); + Bry_bfr bfr = Bry_bfr_.New(); msg.Print(bfr); Tfds.Eq(expd, bfr.To_str_and_clear()); } diff --git a/400_xowa/src/gplx/xowa/apps/servers/tcp/Xosrv_server.java b/400_xowa/src/gplx/xowa/apps/servers/tcp/Xosrv_server.java index 06f92b251..6b40eb115 100644 --- a/400_xowa/src/gplx/xowa/apps/servers/tcp/Xosrv_server.java +++ b/400_xowa/src/gplx/xowa/apps/servers/tcp/Xosrv_server.java @@ -17,8 +17,9 @@ along with this program. If not, see . */ package gplx.xowa.apps.servers.tcp; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.servers.*; import gplx.core.primitives.*; import gplx.core.ios.*; import gplx.core.envs.*; import gplx.core.threads.*; +import gplx.gfui.controls.standards.*; import gplx.langs.jsons.*; -public class Xosrv_server implements GfoInvkAble { +public class Xosrv_server implements Gfo_invk { private long last_cmd; public Xosrv_socket_rdr Rdr() {return rdr;} private Xosrv_socket_rdr rdr = new Xosrv_socket_rdr(); public Xosrv_socket_wtr Wtr() {return wtr;} private Xosrv_socket_wtr wtr = new Xosrv_socket_wtr(); @@ -34,7 +35,7 @@ public class Xosrv_server implements GfoInvkAble { rdr.Init(this, rdr_port); wtr.Init(wtr_host, wtr_port); Gxw_html_server.Init_gui_for_server(app, wtr); - Thread_adp_.invk_(gplx.xowa.apps.Xoa_thread_.Key_http_server_main, rdr, Xosrv_socket_rdr.Invk_start).Start(); + Thread_adp_.Start_by_key(gplx.xowa.apps.Xoa_thread_.Key_http_server_main, rdr, Xosrv_socket_rdr.Invk_start); app.Usr_dlg().Note_many("", "", "server started: listening on ~{0}. Press Ctrl+C to exit", rdr_port); last_cmd = Env_.TickCount(); Running_(true); @@ -76,7 +77,7 @@ public class Xosrv_server implements GfoInvkAble { trace.Val_("js_args"); // xowa_exec_args = (Object[])Array_.Resize(xowa_exec_args, xowa_exec_args.length + 1); // xowa_exec_args[xowa_exec_args.length - 1] = sender; - Object rv_obj = gplx.gfui.Gfui_html.Js_args_exec(app.Gui_mgr().Browser_win().Active_html_itm().Js_cbk(), xowa_exec_args); + Object rv_obj = Gfui_html.Js_args_exec(app.Gui_mgr().Browser_win().Active_html_itm().Js_cbk(), xowa_exec_args); trace.Val_("json_write: " + Object_.Xto_str_strict_or_null_mark(rv_obj)); return json_wtr.Write_root(Bry_xowa_js_result, rv_obj).Bld_as_str(); } catch (Exception e) {throw Err_.new_exc(e, "http", "exec_js error", "trace", trace, "msg", msg_text);} @@ -91,7 +92,7 @@ public class Xosrv_server implements GfoInvkAble { else if (ctx.Match(k, Invk_shutdown_interval)) return shutdown_interval; else if (ctx.Match(k, Invk_shutdown_interval_)) shutdown_interval = m.ReadInt("v"); else if (ctx.Match(k, Invk_stop)) running = false; - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } public static final String Invk_stop = "stop", Invk_rdr_port = "rdr_port", Invk_rdr_port_ = "rdr_port_", Invk_wtr_port = "wtr_port", Invk_wtr_port_ = "wtr_port_", Invk_wtr_host = "wtr_host", Invk_wtr_host_ = "wtr_host_" diff --git a/400_xowa/src/gplx/xowa/apps/servers/tcp/Xosrv_socket_rdr.java b/400_xowa/src/gplx/xowa/apps/servers/tcp/Xosrv_socket_rdr.java index 351afbb60..d83355f63 100644 --- a/400_xowa/src/gplx/xowa/apps/servers/tcp/Xosrv_socket_rdr.java +++ b/400_xowa/src/gplx/xowa/apps/servers/tcp/Xosrv_socket_rdr.java @@ -16,8 +16,8 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.apps.servers.tcp; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.servers.*; -import gplx.core.ios.*; -public class Xosrv_socket_rdr implements GfoInvkAble { +import gplx.core.ios.*; import gplx.core.ios.streams.*; +public class Xosrv_socket_rdr implements Gfo_invk { private Socket_rdr rdr = new Socket_rdr(); public int Port() {return port;} private int port; public void Init(Xosrv_server server, int port) {this.server = server; this.port = port;} private Xosrv_server server; @@ -42,7 +42,7 @@ public class Xosrv_socket_rdr implements GfoInvkAble { } public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_start)) this.Start(); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; - } public static final String Invk_start = "start"; + } public static final String Invk_start = "start"; } diff --git a/400_xowa/src/gplx/xowa/apps/servers/tcp/Xosrv_socket_wtr.java b/400_xowa/src/gplx/xowa/apps/servers/tcp/Xosrv_socket_wtr.java index f03db81f1..cba51a88d 100644 --- a/400_xowa/src/gplx/xowa/apps/servers/tcp/Xosrv_socket_wtr.java +++ b/400_xowa/src/gplx/xowa/apps/servers/tcp/Xosrv_socket_wtr.java @@ -19,7 +19,7 @@ package gplx.xowa.apps.servers.tcp; import gplx.*; import gplx.xowa.*; import gp public class Xosrv_socket_wtr { public String Host() {return host;} private String host = "localhost"; public int Port() {return port;} private int port; - private Socket_wtr wtr; private Bry_bfr msg_bfr = Bry_bfr.reset_(4 * Io_mgr.Len_kb); + private Socket_wtr wtr; private Bry_bfr msg_bfr = Bry_bfr_.Reset(4 * Io_mgr.Len_kb); public void Init(String host, int port) {this.host = host; this.port = port; wtr = new Socket_wtr().Ctor(host, port);} public void Write(Xosrv_msg msg) { wtr.Open(); diff --git a/400_xowa/src/gplx/xowa/apps/shells/Gfo_log__console.java b/400_xowa/src/gplx/xowa/apps/shells/Gfo_log__console.java new file mode 100644 index 000000000..9af371834 --- /dev/null +++ b/400_xowa/src/gplx/xowa/apps/shells/Gfo_log__console.java @@ -0,0 +1,32 @@ +/* +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.apps.shells; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; +import gplx.core.logs.*; +public class Gfo_log__console extends Gfo_log__base { + @Override public void Exec(byte type, long time, long elapsed, String msg, Object[] args) { + switch (type) { + case Gfo_log_itm.Type__prog: Gfo_usr_dlg_.Instance.Prog_many("", "", gplx.core.errs.Err_msg.To_str(msg, args)); break; + case Gfo_log_itm.Type__warn: Gfo_usr_dlg_.Instance.Warn_many("", "", gplx.core.errs.Err_msg.To_str(msg, args)); break; + case Gfo_log_itm.Type__note: Gfo_usr_dlg_.Instance.Note_many("", "", gplx.core.errs.Err_msg.To_str(msg, args)); break; + case Gfo_log_itm.Type__info: Gfo_usr_dlg_.Instance.Log_many ("", "", gplx.core.errs.Err_msg.To_str(msg, args)); break; + default: throw Err_.new_unhandled_default(type); + } + } + @Override public List_adp Itms() {return itms;} @Override public Gfo_log Itms_(List_adp v) {itms = v; return this;} private List_adp itms; + @Override public void Flush() {itms.Clear();} +} diff --git a/400_xowa/src/gplx/xowa/apps/site_cfgs/Xoa_site_cfg_itm__interwikimap.java b/400_xowa/src/gplx/xowa/apps/site_cfgs/Xoa_site_cfg_itm__interwikimap.java index 66f0800e7..aeb964452 100644 --- a/400_xowa/src/gplx/xowa/apps/site_cfgs/Xoa_site_cfg_itm__interwikimap.java +++ b/400_xowa/src/gplx/xowa/apps/site_cfgs/Xoa_site_cfg_itm__interwikimap.java @@ -20,8 +20,8 @@ import gplx.core.net.*; import gplx.langs.jsons.*; import gplx.xowa.apps.gfs.*; import gplx.xowa.langs.*; import gplx.xowa.wikis.domains.*; import gplx.xowa.wikis.xwikis.*; class Xoa_site_cfg_itm__interwikimap extends Xoa_site_cfg_itm__base { - private final Bry_bfr tmp_bfr = Bry_bfr.new_(); - private final Gfo_url_parser url_parser = new Gfo_url_parser(); private final Gfo_url url = new Gfo_url(); + private final Bry_bfr tmp_bfr = Bry_bfr_.New(); + private final Gfo_url_parser url_parser = new Gfo_url_parser(); private final Gfo_url url = new Gfo_url(); public Xoa_site_cfg_itm__interwikimap() {this.Ctor(Xoa_site_cfg_loader__inet.Qarg__interwikimap);} @Override public void Parse_json_ary_itm(Bry_bfr bfr, Xow_wiki wiki, int i, Json_itm itm) { Json_nde nde = Json_nde.cast(itm); @@ -75,7 +75,7 @@ class Xoa_site_cfg_itm__interwikimap extends Xoa_site_cfg_itm__base { if (Bry_.Eq(wiki.Domain_bry(), Xow_domain_itm_.Bry__simplewiki)) xwiki_mgr.Add_by_csv(Csv__enwiki); } - private static final byte[] + private static final byte[] Csv__manual = Bry_.new_a7(String_.Concat_lines_nl_skip_last ( "1|commons;c|commons.wikimedia.org|Commons" , "1|m;metawikipedia|meta.wikipedia.org" diff --git a/400_xowa/src/gplx/xowa/apps/urls/Xoa_url_encoder.java b/400_xowa/src/gplx/xowa/apps/urls/Xoa_url_encoder.java index f2137917a..4ed8879fb 100644 --- a/400_xowa/src/gplx/xowa/apps/urls/Xoa_url_encoder.java +++ b/400_xowa/src/gplx/xowa/apps/urls/Xoa_url_encoder.java @@ -33,10 +33,10 @@ public class Xoa_url_encoder { } return bb.To_bry_and_clear(); } - private static final byte[] Bry_amp = Bry_.new_a7("%26"), Bry_eq = Bry_.new_a7("%3D") + private static final byte[] Bry_amp = Bry_.new_a7("%26"), Bry_eq = Bry_.new_a7("%3D") , Bry_plus = Bry_.new_a7("%2B"), Bry_apos = Bry_.new_a7("%27") , Bry_underline = new byte[] {Byte_ascii.Underline} ; - Bry_bfr bb = Bry_bfr.new_(); - public static final Xoa_url_encoder Instance = new Xoa_url_encoder(); Xoa_url_encoder() {} + Bry_bfr bb = Bry_bfr_.New(); + public static final Xoa_url_encoder Instance = new Xoa_url_encoder(); Xoa_url_encoder() {} } diff --git a/400_xowa/src/gplx/xowa/apps/urls/Xow_url_parser.java b/400_xowa/src/gplx/xowa/apps/urls/Xow_url_parser.java index 5a96d0b51..172ab0d9f 100644 --- a/400_xowa/src/gplx/xowa/apps/urls/Xow_url_parser.java +++ b/400_xowa/src/gplx/xowa/apps/urls/Xow_url_parser.java @@ -16,14 +16,14 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.apps.urls; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; -import gplx.core.primitives.*; import gplx.core.net.*; import gplx.langs.htmls.encoders.*; +import gplx.core.primitives.*; import gplx.core.net.*; import gplx.core.net.qargs.*; import gplx.langs.htmls.encoders.*; import gplx.xowa.htmls.hrefs.*; import gplx.xowa.langs.*; import gplx.xowa.langs.vnts.*; import gplx.xowa.wikis.nss.*; import gplx.xowa.wikis.domains.*; import gplx.xowa.wikis.xwikis.*; import gplx.xowa.files.*; public class Xow_url_parser { private final Gfo_url_encoder encoder; - private final Bry_bfr tmp_bfr = Bry_bfr.reset_(255); + private final Bry_bfr tmp_bfr = Bry_bfr_.Reset(255); private final Gfo_url_parser url_parser = new Gfo_url_parser(); private final Gfo_url gfo_url = new Gfo_url(); private final Xoa_app app; private final Xow_wiki wiki; private final byte[] domain_bry; private byte tmp_protocol_tid; diff --git a/400_xowa/src/gplx/xowa/bldrs/Db_mgr_fxt.java b/400_xowa/src/gplx/xowa/bldrs/Db_mgr_fxt.java index c848aecfb..329c56a70 100644 --- a/400_xowa/src/gplx/xowa/bldrs/Db_mgr_fxt.java +++ b/400_xowa/src/gplx/xowa/bldrs/Db_mgr_fxt.java @@ -63,7 +63,7 @@ public class Db_mgr_fxt { public void Test_load_page(int ns_id, int page_id, String expd) { Xowe_wiki wiki = bldr_fxt.Wiki(); Xow_ns ns = wiki.Ns_mgr().Ids_get_or_null(ns_id); - wiki.Db_mgr_as_sql().Load_mgr().Load_page(actl.Id_(page_id), ns, false); + wiki.Db_mgr_as_sql().Load_mgr().Load_page(actl.Id_(page_id), ns); Tfds.Eq(expd, String_.new_a7(actl.Text())); } int[] Xto_int_ary(List_adp rslts) { @@ -83,7 +83,7 @@ public class Db_mgr_fxt { Tfds.Eq_ary(expd, Xto_int_ary(ctg)); } int[] Xto_int_ary(Xoctg_view_ctg ctg) { - List_adp list = List_adp_.new_(); + List_adp list = List_adp_.New(); byte tid_max = Xoa_ctg_mgr.Tid__max; for (byte tid = 0; tid < tid_max; tid++) { Xoctg_view_grp grp = ctg.Grp_by_tid(tid); if (grp == null) continue; @@ -107,7 +107,7 @@ public class Db_mgr_fxt { Tfds.Eq_str_lines(expd, actl); } int[] Xto_int_ary(Xoctg_data_ctg ctg) { - List_adp list = List_adp_.new_(); + List_adp list = List_adp_.New(); byte tid_max = Xoa_ctg_mgr.Tid__max; for (byte tid = 0; tid < tid_max; tid++) { Xoctg_idx_mgr grp = ctg.Grp_by_tid(tid); if (grp == null) continue; diff --git a/400_xowa/src/gplx/xowa/bldrs/Xob_base_fxt.java b/400_xowa/src/gplx/xowa/bldrs/Xob_base_fxt.java index f91fd37c3..b4e0c098c 100644 --- a/400_xowa/src/gplx/xowa/bldrs/Xob_base_fxt.java +++ b/400_xowa/src/gplx/xowa/bldrs/Xob_base_fxt.java @@ -34,7 +34,7 @@ public class Xob_base_fxt { public Xoae_app App() {return app;} private Xoae_app app; public Xob_bldr Bldr() {return bldr;} private Xob_bldr bldr; public Xowe_wiki Wiki() {return wiki;} private Xowe_wiki wiki; - public GfoInvkAble Bldr_itm() {return bldr_itm;} GfoInvkAble bldr_itm; + public Gfo_invk Bldr_itm() {return bldr_itm;} Gfo_invk bldr_itm; public Xowd_page_itm page_(String ttl) {return page_(ttl, "");} public Xowd_page_itm page_(String ttl, String text) {return new Xowd_page_itm().Ttl_(Bry_.new_u8(ttl), wiki.Ns_mgr()).Text_(Bry_.new_u8(text));} public Io_fil_chkr meta_(String url, String data) {return new Io_fil_chkr(Io_url_.mem_fil_(url), data);} diff --git a/400_xowa/src/gplx/xowa/bldrs/Xob_bldr.java b/400_xowa/src/gplx/xowa/bldrs/Xob_bldr.java index a2820b27f..9a4d5f405 100644 --- a/400_xowa/src/gplx/xowa/bldrs/Xob_bldr.java +++ b/400_xowa/src/gplx/xowa/bldrs/Xob_bldr.java @@ -20,7 +20,7 @@ import gplx.core.consoles.*; import gplx.core.envs.*; import gplx.xowa.apps.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.xmls.*; import gplx.xowa.bldrs.cfgs.*; import gplx.xowa.langs.bldrs.*; import gplx.xowa.bldrs.wkrs.*; import gplx.langs.jsons.*; -public class Xob_bldr implements GfoInvkAble { +public class Xob_bldr implements Gfo_invk { private boolean pause_at_end = false; private long prv_prog_time; private Xob_xml_parser dump_parser; public Xob_bldr(Xoae_app app) { this.app = app; @@ -67,11 +67,11 @@ public class Xob_bldr implements GfoInvkAble { if ( String_.Eq(atr_key, "key") || String_.Eq(atr_key, "wiki")) continue; byte[] atr_val = atr_kv.Val_as_bry(); - GfoInvkAble_.InvkCmd_val(clone, atr_key + GfoInvkAble_.Mutator_suffix, String_.new_u8(atr_val)); + Gfo_invk_.Invk_by_val(clone, atr_key + Gfo_invk_.Mutator_suffix, String_.new_u8(atr_val)); } cmd_mgr.Add(clone); } - gplx.core.threads.Thread_adp_.invk_("bldr_by_json", this, Invk_run_by_kit).Start(); + gplx.core.threads.Thread_adp_.Start_by_key("bldr_by_json", this, Invk_run_by_kit); } catch (Exception e) { app.Gui_mgr().Kit().Ask_ok("", "", "error: ~{0}", Err_.Message_gplx_log(e)); } @@ -140,7 +140,7 @@ public class Xob_bldr implements GfoInvkAble { else if (ctx.Match(k, Invk_run)) Run(); else if (ctx.Match(k, Invk_run_by_kit)) Run_by_kit(); else if (ctx.Match(k, Invk_cancel)) Cancel(); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String @@ -155,7 +155,7 @@ public class Xob_bldr implements GfoInvkAble { . make_fil_len: max size of made file; EX: /id/..../0000000001.csv will have max len of 64 KB . dump_fil_len: max size of temp file; EX: /tmp/.../0000000001.csv will have max len of 1 MB . sort_mem_len: max size of memory for external merge process; note the following -.. a continguous range of memory of that size will be needed: "Bry_bfr.new_(sort_mem_len)" will be called +.. a continguous range of memory of that size will be needed: "Bry_bfr_.New(sort_mem_len)" will be called .. large sort_mem_len will result in smaller number of merge files ... EX: 16 MB will take en.wikipedia.org's 640 MB title files and generate 40 temp files of 8 MB each .. number of merge files is number of open file channels during merge process diff --git a/400_xowa/src/gplx/xowa/bldrs/Xob_cmd_mgr.java b/400_xowa/src/gplx/xowa/bldrs/Xob_cmd_mgr.java index 24aabb7c3..6d6c426c8 100644 --- a/400_xowa/src/gplx/xowa/bldrs/Xob_cmd_mgr.java +++ b/400_xowa/src/gplx/xowa/bldrs/Xob_cmd_mgr.java @@ -18,19 +18,20 @@ along with this program. If not, see . package gplx.xowa.bldrs; import gplx.*; import gplx.xowa.*; import gplx.core.primitives.*; import gplx.xowa.wikis.*; import gplx.xowa.xtns.wdatas.imports.*; -import gplx.xowa.bldrs.wkrs.*; import gplx.xowa.bldrs.cmds.texts.*; import gplx.xowa.bldrs.cmds.texts.sqls.*; import gplx.xowa.bldrs.cmds.texts.tdbs.*; import gplx.xowa.addons.builds.files.*; import gplx.xowa.bldrs.cmds.ctgs.*; import gplx.xowa.bldrs.cmds.utils.*; +import gplx.xowa.bldrs.wkrs.*; import gplx.xowa.bldrs.cmds.texts.*; import gplx.xowa.bldrs.cmds.texts.sqls.*; import gplx.xowa.bldrs.cmds.texts.tdbs.*; import gplx.xowa.addons.bldrs.files.*; import gplx.xowa.bldrs.cmds.ctgs.*; import gplx.xowa.bldrs.cmds.utils.*; import gplx.xowa.bldrs.cmds.diffs.*; import gplx.xowa.files.origs.*; import gplx.xowa.htmls.core.bldrs.*; -import gplx.xowa.addons.apps.searchs.bldrs.*; import gplx.xowa.addons.builds.files.cmds.*; -public class Xob_cmd_mgr implements GfoInvkAble { +import gplx.xowa.addons.wikis.searchs.bldrs.*; +import gplx.xowa.addons.bldrs.files.cmds.*; import gplx.xowa.addons.wikis.htmls.css.bldrs.*; +public class Xob_cmd_mgr implements Gfo_invk { private final Xob_bldr bldr; public final Xob_cmd_regy cmd_regy; public Xob_cmd_mgr(Xob_bldr bldr, Xob_cmd_regy cmd_regy) {this.bldr = bldr; this.cmd_regy = cmd_regy;} public void Clear() {list.Clear(); dump_rdrs.Clear();} - public int Len() {return list.Count();} private final List_adp list = List_adp_.new_(); + public int Len() {return list.Count();} private final List_adp list = List_adp_.New(); public Xob_cmd Get_at(int i) {return (Xob_cmd)list.Get_at(i);} public Xob_cmd Add(Xob_cmd cmd) {list.Add(cmd); return cmd;} - public GfoInvkAble Add_cmd(Xowe_wiki wiki, String cmd_key) { + public Gfo_invk Add_cmd(Xowe_wiki wiki, String cmd_key) { Xob_cmd prime = cmd_regy.Get_or_null(cmd_key); if (prime != null) { Xob_cmd clone = prime.Cmd_clone(bldr, wiki); @@ -40,7 +41,7 @@ public class Xob_cmd_mgr implements GfoInvkAble { if (String_.Eq(cmd_key, Xob_cmd_keys.Key_text_init)) return Add(new Xob_init_cmd(bldr, wiki)); else if (String_.Eq(cmd_key, Xob_cmd_keys.Key_text_page)) return Xml_rdr_direct_add(wiki, new Xob_page_cmd(bldr, wiki)); else if (String_.Eq(cmd_key, Xob_cmd_keys.Key_text_css)) return Add(new Xob_css_cmd(bldr, wiki)); - else if (String_.Eq(cmd_key, Xob_cmd_keys.Key_text_search_wkr)) return Xml_rdr_direct_add(wiki, new gplx.xowa.addons.apps.searchs.bldrs.Srch_bldr_wkr(bldr, wiki)); + else if (String_.Eq(cmd_key, Xob_cmd_keys.Key_text_search_wkr)) return Xml_rdr_direct_add(wiki, new gplx.xowa.addons.wikis.searchs.bldrs.Srch_bldr_wkr(bldr, wiki)); else if (String_.Eq(cmd_key, Xob_cmd_keys.Key_text_search_cmd)) return Add(new Srch_bldr_cmd(bldr, wiki)); else if (String_.Eq(cmd_key, Xob_cmd_keys.Key_text_cat_core_v1)) return Xml_rdr_parser_add(wiki, new Xob_ctg_v1_sql().Ctor(bldr, wiki)); else if (String_.Eq(cmd_key, Xob_cmd_keys.Key_text_cat_core)) return Add(new Xob_category_registry_sql(bldr, wiki)); @@ -99,13 +100,13 @@ public class Xob_cmd_mgr implements GfoInvkAble { } return rv; } - private Hash_adp dump_rdrs = Hash_adp_.new_(); private Bry_obj_ref dump_rdrs_ref = Bry_obj_ref.New_empty(); + private Hash_adp dump_rdrs = Hash_adp_.New(); private Bry_obj_ref dump_rdrs_ref = Bry_obj_ref.New_empty(); public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_add)) return Add_cmd(Wiki_get_or_make(m), m.ReadStr("v")); else if (ctx.Match(k, Invk_add_many)) return Add_many(m); else if (ctx.Match(k, Invk_get_first)) return Get_first(m); else if (ctx.Match(k, Invk_new_batch)) return new Xob_core_batch_utl(bldr, m.ReadBry("v")); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; } private static final String Invk_add = "add", Invk_add_many = "add_many", Invk_new_batch = "new_batch", Invk_get_first = "get_first"; private Object Get_first(GfoMsg m) { diff --git a/400_xowa/src/gplx/xowa/bldrs/Xob_db_file.java b/400_xowa/src/gplx/xowa/bldrs/Xob_db_file.java index fbe96391f..b805696e8 100644 --- a/400_xowa/src/gplx/xowa/bldrs/Xob_db_file.java +++ b/400_xowa/src/gplx/xowa/bldrs/Xob_db_file.java @@ -32,6 +32,7 @@ public class Xob_db_file { public static Xob_db_file New__temp_log(Io_url dir) {return New(dir, Name__temp_log);} public static Xob_db_file New__redlink(Io_url dir) {return New(dir, Name__redlink);} public static Xob_db_file New__page_link(Xow_wiki wiki) {return New(wiki.Fsys_mgr().Root_dir(), Name__page_link);} + public static Xob_db_file New__page_file_map(Xow_wiki wiki) {return New(wiki.Fsys_mgr().Root_dir(), wiki.Domain_str() + "-file-page_map.xowa");} public static Xob_db_file New__deletion_db(Xow_wiki wiki) { String name = String_.Format("{0}-file-core-deletion_db-{1}.xowa", wiki.Domain_str(), DateAdp_.Now().XtoStr_fmt("yyyy.MM")); return New(wiki.Fsys_mgr().Root_dir(), name); diff --git a/400_xowa/src/gplx/xowa/bldrs/Xob_fxt.java b/400_xowa/src/gplx/xowa/bldrs/Xob_fxt.java index aa489ecf2..f4687000a 100644 --- a/400_xowa/src/gplx/xowa/bldrs/Xob_fxt.java +++ b/400_xowa/src/gplx/xowa/bldrs/Xob_fxt.java @@ -46,12 +46,12 @@ public class Xob_fxt { String text = String_.Concat_lines_nl_skip_last(expd); // skipLast b/c if trailing line wanted, easier to pass in extra argument for "" expd_list.Add(new Io_fil_chkr(url, text)); return this; - } List_adp expd_list = List_adp_.new_(); + } List_adp expd_list = List_adp_.New(); public Xob_fxt Fil_skip(Io_url... urls) { for (int i = 0; i < urls.length; i++) skip_list.Add(urls[i]); return this; - } List_adp skip_list = List_adp_.new_(); + } List_adp skip_list = List_adp_.New(); public Xob_fxt doc_ary_(Xowd_page_itm... v) {doc_ary = v; return this;} private Xowd_page_itm[] doc_ary; public Xowd_page_itm doc_wo_date_(int id, String title, String text) {return doc_(id, "2012-01-02 13:14", title, text);} public Xowd_page_itm doc_(int id, String date, String title, String text) { @@ -144,7 +144,7 @@ public class Xob_fxt { } } Io_fil[] wiki_() { - List_adp rv = List_adp_.new_(); + List_adp rv = List_adp_.New(); wiki_fil_add(rv, wiki.Tdb_fsys_mgr().Ns_dir()); wiki_fil_add(rv, wiki.Tdb_fsys_mgr().Site_dir()); rv.Sort(); diff --git a/400_xowa/src/gplx/xowa/bldrs/Xob_ns_to_db_mgr.java b/400_xowa/src/gplx/xowa/bldrs/Xob_ns_to_db_mgr.java index 5ec298c95..66a04e790 100644 --- a/400_xowa/src/gplx/xowa/bldrs/Xob_ns_to_db_mgr.java +++ b/400_xowa/src/gplx/xowa/bldrs/Xob_ns_to_db_mgr.java @@ -18,21 +18,21 @@ along with this program. If not, see . package gplx.xowa.bldrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.data.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.bldrs.cmds.*; public class Xob_ns_to_db_mgr { - private final Xob_ns_to_db_wkr wkr; private final Xowd_db_mgr db_mgr; private final long db_max; private boolean one_file_conn_init = true; - private final Ordered_hash db_list = Ordered_hash_.New(); - public Xob_ns_to_db_mgr(Xob_ns_to_db_wkr wkr, Xowd_db_mgr db_mgr, long db_max) { + private final Xob_ns_to_db_wkr wkr; private final Xow_db_mgr db_mgr; private final long db_max; private boolean one_file_conn_init = true; + private final Ordered_hash db_list = Ordered_hash_.New(); + public Xob_ns_to_db_mgr(Xob_ns_to_db_wkr wkr, Xow_db_mgr db_mgr, long db_max) { this.wkr = wkr; this.db_mgr = db_mgr; this.db_max = db_max; } - public Xowd_db_file Get_by_ns(Xob_ns_file_itm ns_file_itm, int data_len) { - Xowd_db_file rv = null; - if (wkr.Db_tid() == Xowd_db_file_.Tid_text && db_mgr.Props().Layout_text().Tid_is_all_or_few()) { + public Xow_db_file Get_by_ns(Xob_ns_file_itm ns_file_itm, int data_len) { + Xow_db_file rv = null; + if (db_mgr.Props().Layout_text().Tid_is_all()) { rv = db_mgr.Db__core(); if (one_file_conn_init) { one_file_conn_init = false; Init_tbl(rv); } } - else if (wkr.Db_tid() == Xowd_db_file_.Tid_html_data && db_mgr.Props().Layout_html().Tid_is_all_or_few()) { + else if (wkr.Db_tid() == Xow_db_file_.Tid__html_data && db_mgr.Props().Layout_html().Tid_is_all_or_few()) { if (one_file_conn_init) { one_file_conn_init = false; rv = db_mgr.Dbs__make_by_tid(wkr.Db_tid()); @@ -46,7 +46,7 @@ public class Xob_ns_to_db_mgr { if (db_id == Xob_ns_file_itm.Nth_db_id_null) // ns not assigned yet to db rv = Init_db(ns_file_itm); else - rv = db_mgr.Dbs__get_by_id(db_id); + rv = db_mgr.Dbs__get_by_id_or_fail(db_id); long file_len = rv.File_len(); if (file_len + data_len > db_max) { // file is "full" Term_tbl(rv); @@ -56,32 +56,32 @@ public class Xob_ns_to_db_mgr { rv.File_len_add(data_len); return rv; } - private Xowd_db_file Init_db(Xob_ns_file_itm ns_file_itm) { - Xowd_db_file rv = db_mgr.Dbs__make_by_tid(ns_file_itm.Db_file_tid(), Int_.To_str(ns_file_itm.Ns_ids(), "|"), ns_file_itm.Nth_db_idx(), ns_file_itm.Make_file_name()); + private Xow_db_file Init_db(Xob_ns_file_itm ns_file_itm) { + Xow_db_file rv = db_mgr.Dbs__make_by_tid(ns_file_itm.Db_file_tid(), Int_.To_str(ns_file_itm.Ns_ids(), "|"), ns_file_itm.Nth_db_idx(), ns_file_itm.Make_file_name()); ns_file_itm.Nth_db_id_(rv.Id()); Init_tbl(rv); return rv; } - private void Init_tbl(Xowd_db_file db) { + private void Init_tbl(Xow_db_file db) { wkr.Tbl_init(db); db_list.Add(db.Id(), db); } - private void Term_tbl(Xowd_db_file db) { + private void Term_tbl(Xow_db_file db) { wkr.Tbl_term(db); db_list.Del(db.Id()); } public void Rls_all() { - Xowd_db_file[] ary = (Xowd_db_file[])db_list.To_ary(Xowd_db_file.class); + Xow_db_file[] ary = (Xow_db_file[])db_list.To_ary(Xow_db_file.class); int len = ary.length; for (int i = 0; i < len; ++i) { - Xowd_db_file db = (Xowd_db_file)ary[i]; + Xow_db_file db = (Xow_db_file)ary[i]; Term_tbl(db); // SQLITE:1_TXN; may call close on db where txn is already closed } } public void Commit() { int len = db_list.Count(); for (int i = 0; i < len; ++i) { - Xowd_db_file db = (Xowd_db_file)db_list.Get_at(i); + Xow_db_file db = (Xow_db_file)db_list.Get_at(i); db.Conn().Txn_sav(); } } diff --git a/400_xowa/src/gplx/xowa/bldrs/Xob_ns_to_db_wkr.java b/400_xowa/src/gplx/xowa/bldrs/Xob_ns_to_db_wkr.java index 6324d8cad..b1da642c3 100644 --- a/400_xowa/src/gplx/xowa/bldrs/Xob_ns_to_db_wkr.java +++ b/400_xowa/src/gplx/xowa/bldrs/Xob_ns_to_db_wkr.java @@ -19,6 +19,6 @@ package gplx.xowa.bldrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.data.*; public interface Xob_ns_to_db_wkr { byte Db_tid(); - void Tbl_init(Xowd_db_file db); - void Tbl_term(Xowd_db_file db); + void Tbl_init(Xow_db_file db); + void Tbl_term(Xow_db_file db); } diff --git a/400_xowa/src/gplx/xowa/bldrs/Xob_page_wkr_cmd.java b/400_xowa/src/gplx/xowa/bldrs/Xob_page_wkr_cmd.java index e2b02b485..7d2857553 100644 --- a/400_xowa/src/gplx/xowa/bldrs/Xob_page_wkr_cmd.java +++ b/400_xowa/src/gplx/xowa/bldrs/Xob_page_wkr_cmd.java @@ -33,10 +33,10 @@ public class Xob_page_wkr_cmd implements Xob_cmd { long fil_len = 0; Gfo_usr_dlg usr_dlg = bldr.App().Usr_dlg(); try { - gplx.core.ios.Io_stream_rdr src_rdr = wiki.Import_cfg().Src_rdr(); + gplx.core.ios.streams.Io_stream_rdr src_rdr = wiki.Import_cfg().Src_rdr(); fil = Io_buffer_rdr.new_(src_rdr, optRdrBfrSize); fil_len = fil.Fil_len(); - if (src_rdr.Tid() == gplx.core.ios.Io_stream_.Tid_bzip2) fil_len = (fil_len * 100) / 18; // HACK: no way to get actual file progress; assume 18% compression + if (src_rdr.Tid() == gplx.core.ios.streams.Io_stream_.Tid_bzip2) fil_len = (fil_len * 100) / 18; // HACK: no way to get actual file progress; assume 18% compression // fil.Seek(bldr.Opts().ResumeAt()); int prv_pos = 0; while (true) { diff --git a/400_xowa/src/gplx/xowa/bldrs/Xobd_parser.java b/400_xowa/src/gplx/xowa/bldrs/Xobd_parser.java index 701a99a7f..78f801f34 100644 --- a/400_xowa/src/gplx/xowa/bldrs/Xobd_parser.java +++ b/400_xowa/src/gplx/xowa/bldrs/Xobd_parser.java @@ -21,7 +21,7 @@ import gplx.xowa.wikis.data.tbls.*; public class Xobd_parser implements Xob_page_wkr { private final Xob_bldr bldr; private final Btrie_slim_mgr trie = Btrie_slim_mgr.ci_a7(); // NOTE:ci.ascii:MW_const.en; ctg.v1 assumes [[Category: - private final List_adp wkr_list = List_adp_.new_(); + private final List_adp wkr_list = List_adp_.New(); public String Page_wkr__key() {return KEY;} static final String KEY = "page_parser"; public Xobd_parser(Xob_bldr bldr) {this.bldr = bldr;} public void Wkr_add(Xobd_parser_wkr wkr) {wkr_list.Add(wkr);} diff --git a/400_xowa/src/gplx/xowa/bldrs/Xobd_parser_wkr.java b/400_xowa/src/gplx/xowa/bldrs/Xobd_parser_wkr.java index bdd47859a..1aaa23662 100644 --- a/400_xowa/src/gplx/xowa/bldrs/Xobd_parser_wkr.java +++ b/400_xowa/src/gplx/xowa/bldrs/Xobd_parser_wkr.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.bldrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.data.tbls.*; -public interface Xobd_parser_wkr extends GfoInvkAble { +public interface Xobd_parser_wkr extends Gfo_invk { Ordered_hash Wkr_hooks(); void Wkr_bgn(Xob_bldr bldr); int Wkr_run(Xowd_page_itm page, byte[] src, int src_len, int bgn, int end); diff --git a/400_xowa/src/gplx/xowa/bldrs/Xobdc_utl.java b/400_xowa/src/gplx/xowa/bldrs/Xobdc_utl.java index 4adcf30a8..90f054617 100644 --- a/400_xowa/src/gplx/xowa/bldrs/Xobdc_utl.java +++ b/400_xowa/src/gplx/xowa/bldrs/Xobdc_utl.java @@ -36,7 +36,7 @@ class Io_sort_filCmd_reg implements Io_sort_filCmd { // 123|bgn|end|1 } public void Flush(Io_url fil) { Io_mgr.Instance.SaveFilBry(fil, bfr.Bfr(), bfr.Len()); - } private Bry_bfr bfr = Bry_bfr.new_(); int fil_idx = 0; int itm_count = 0; + } private Bry_bfr bfr = Bry_bfr_.New(); int fil_idx = 0; int itm_count = 0; } class Io_url_gen_nest implements gplx.core.ios.Io_url_gen { public Io_url Cur_url() {return cur_url;} Io_url cur_url; diff --git a/400_xowa/src/gplx/xowa/bldrs/aria2/Aria2_lib_mgr.java b/400_xowa/src/gplx/xowa/bldrs/aria2/Aria2_lib_mgr.java index b7bb268be..19ffa6b67 100644 --- a/400_xowa/src/gplx/xowa/bldrs/aria2/Aria2_lib_mgr.java +++ b/400_xowa/src/gplx/xowa/bldrs/aria2/Aria2_lib_mgr.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.xowa.bldrs.aria2; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.core.envs.*; import gplx.xowa.apps.fsys.*; import gplx.xowa.bldrs.wms.dumps.*; -public class Aria2_lib_mgr implements GfoInvkAble { +public class Aria2_lib_mgr implements Gfo_invk { public Process_adp Lib() {return lib;} private Process_adp lib = new Process_adp(); public void Init_by_app(Xoae_app app) { Xoa_fsys_eval cmd_eval = app.Url_cmd_eval(); @@ -27,7 +27,7 @@ public class Aria2_lib_mgr implements GfoInvkAble { , Lib_args_fmt , "wiki_abrv", "wiki_date", "wiki_type"); } - // private Bry_bfr tmp_bfr = Bry_bfr.reset_(255); + // private Bry_bfr tmp_bfr = Bry_bfr_.Reset(255); public void Exec(Xowm_dump_file dump_file) { // byte[] args_bry = lib.Args_fmtr().Bld_bry_many(tmp_bfr, dump_file.Wiki_alias(), dump_file.Dump_date(), dump_file.Dump_file_type()); // Process_adp process = new Process_adp().Exe_url_(lib.Exe_url()).Args_str_(String_.new_u8(args_bry)); @@ -35,10 +35,10 @@ public class Aria2_lib_mgr implements GfoInvkAble { } public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_lib)) return lib; - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; } - private static final String Invk_lib = "lib"; - private static final String Lib_args_fmt = String_.Concat + private static final String Invk_lib = "lib"; + private static final String Lib_args_fmt = String_.Concat ( "--max-connection-per-server=2" , " --max-concurrent-downloads=20" , " --split=4" diff --git a/400_xowa/src/gplx/xowa/bldrs/aria2/Gfui_process_win.java b/400_xowa/src/gplx/xowa/bldrs/aria2/Gfui_process_win.java index fa695aefb..16f373561 100644 --- a/400_xowa/src/gplx/xowa/bldrs/aria2/Gfui_process_win.java +++ b/400_xowa/src/gplx/xowa/bldrs/aria2/Gfui_process_win.java @@ -18,19 +18,19 @@ along with this program. If not, see . package gplx.xowa.bldrs.aria2; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.gfui.*; class Gfui_process_win { - public void Exec_async(String process, String args, GfoInvkAbleCmd done_cbk) { + public void Exec_async(String process, String args, Gfo_invk_cmd done_cbk) { // Gfo_process process = new Gfo_process().Init_process_(process, args).Init_async_(done_cbk).Init_strm_out_err_(output_box).Exec(); } } class Gfo_process { -// private GfoInvkAbleCmd done_cbk; +// private Gfo_invk_cmd done_cbk; // private Gfo_process_wtr out_wtr, err_wtr; public String Cmd_path() {return cmd_path;} private String cmd_path; public String Cmd_args() {return cmd_args;} private String cmd_args; public byte Mode() {return mode;} private byte mode; public Gfo_process Init_cmd_(String cmd_path, String cmd_args) {this.cmd_path = cmd_path; this.cmd_args = cmd_args; return this;} public Gfo_process Init_mode_async_() {mode = Gfo_process_.Mode_async; return this;} -// public Gfo_process Init_mode_async_(GfoInvkAbleCmd done_cbk) {this.done_cbk = done_cbk; return this.Init_mode_async_();} +// public Gfo_process Init_mode_async_(Gfo_invk_cmd done_cbk) {this.done_cbk = done_cbk; return this.Init_mode_async_();} // public Gfo_process Init_wtr_out_err_(Gfo_process_wtr wtr) {out_wtr = err_wtr = wtr; return this;} } class Gfo_process_wtr {} diff --git a/400_xowa/src/gplx/xowa/bldrs/cfgs/Xoac_wiki_cfg_bldr_fil.java b/400_xowa/src/gplx/xowa/bldrs/cfgs/Xoac_wiki_cfg_bldr_fil.java index b749e4335..db61bde34 100644 --- a/400_xowa/src/gplx/xowa/bldrs/cfgs/Xoac_wiki_cfg_bldr_fil.java +++ b/400_xowa/src/gplx/xowa/bldrs/cfgs/Xoac_wiki_cfg_bldr_fil.java @@ -16,14 +16,14 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.bldrs.cfgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; -public class Xoac_wiki_cfg_bldr_fil implements GfoInvkAble { +public class Xoac_wiki_cfg_bldr_fil implements Gfo_invk { public Xoac_wiki_cfg_bldr_fil(String wiki) {this.wiki = wiki;} public String Wiki() {return wiki;} private String wiki; public int Itms_count() {return list.Count();} public Xoac_wiki_cfg_bldr_cmd Itms_get_at(int i) {return (Xoac_wiki_cfg_bldr_cmd)list.Get_at(i);} public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_new_cmd_)) {Itms_add(m.ReadStr("id"), m.ReadStr("text"));} - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String Invk_new_cmd_ = "new_cmd_"; public Xoac_wiki_cfg_bldr_cmd Itms_add(String key, String text) { @@ -31,5 +31,5 @@ public class Xoac_wiki_cfg_bldr_fil implements GfoInvkAble { list.Add(rv); return rv; } - List_adp list = List_adp_.new_(); + List_adp list = List_adp_.New(); } diff --git a/400_xowa/src/gplx/xowa/bldrs/cfgs/Xob_wiki_cfg_bldr.java b/400_xowa/src/gplx/xowa/bldrs/cfgs/Xob_wiki_cfg_bldr.java index 96c2a9f0f..26028ad51 100644 --- a/400_xowa/src/gplx/xowa/bldrs/cfgs/Xob_wiki_cfg_bldr.java +++ b/400_xowa/src/gplx/xowa/bldrs/cfgs/Xob_wiki_cfg_bldr.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.bldrs.cfgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.core.strings.*; -public class Xob_wiki_cfg_bldr implements GfoInvkAble { +public class Xob_wiki_cfg_bldr implements Gfo_invk { public Xob_wiki_cfg_bldr(Xob_bldr bldr) {this.app = bldr.App();} private Xoae_app app; public void Exec() { int len = hash.Count(); @@ -41,7 +41,7 @@ public class Xob_wiki_cfg_bldr implements GfoInvkAble { public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_get)) return Itms_get_or_new(m.ReadStr("v")); else if (ctx.Match(k, Invk_run)) Exec(); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String Invk_get = "get", Invk_run = "run"; public void Clear() {hash.Clear();} diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/Xob_dump_mgr_base.java b/400_xowa/src/gplx/xowa/bldrs/cmds/Xob_dump_mgr_base.java index 8669c6858..e14326e98 100644 --- a/400_xowa/src/gplx/xowa/bldrs/cmds/Xob_dump_mgr_base.java +++ b/400_xowa/src/gplx/xowa/bldrs/cmds/Xob_dump_mgr_base.java @@ -17,16 +17,16 @@ along with this program. If not, see . */ package gplx.xowa.bldrs.cmds; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.core.envs.*; -import gplx.dbs.*; import gplx.xowa.wikis.caches.*; import gplx.xowa.addons.builds.files.*; import gplx.xowa.files.origs.*; +import gplx.dbs.*; import gplx.xowa.wikis.caches.*; import gplx.xowa.addons.bldrs.files.*; import gplx.xowa.files.origs.*; import gplx.xowa.bldrs.wkrs.*; import gplx.xowa.wikis.nss.*; import gplx.xowa.wikis.data.*; import gplx.xowa.wikis.dbs.*; import gplx.xowa.wikis.data.tbls.*; -import gplx.xowa.addons.builds.files.utls.*; +import gplx.xowa.addons.bldrs.files.utls.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.tmpls.*; -public abstract class Xob_dump_mgr_base extends Xob_itm_basic_base implements Xob_cmd, GfoInvkAble { +public abstract class Xob_dump_mgr_base extends Xob_itm_basic_base implements Xob_cmd, Gfo_invk { private Xob_dump_src_id page_src; - private Xowd_db_mgr db_fsys_mgr; protected Xop_parser parser; protected Xop_ctx ctx; protected Xop_root_tkn root; - private int[] ns_ary; private Xowd_db_file[] db_ary; + private Xow_db_mgr db_fsys_mgr; protected Xop_parser parser; protected Xop_ctx ctx; protected Xop_root_tkn root; + private int[] ns_ary; private Xow_db_file[] db_ary; private int ns_bgn = -1, db_bgn = -1, pg_bgn = -1; private int ns_end = -1, db_end = -1, pg_end = Int_.Max_value; private int commit_interval = 1000, progress_interval = 250, cleanup_interval = 2500, select_size = 10 * Io_mgr.Len_mb; @@ -45,7 +45,7 @@ public abstract class Xob_dump_mgr_base extends Xob_itm_basic_base implements Xo ctx = wiki.Parser_mgr().Ctx(); root = ctx.Tkn_mkr().Root(Bry_.Empty); wiki.Init_assert(); // NOTE: must init wiki for db_mgr_as_sql - wiki.Db_mgr_as_sql().Core_data_mgr().Init_by_load(gplx.xowa.wikis.Xow_fsys_mgr.Find_core_fil(wiki)); // NOTE: must reinit providers as previous steps may have rls'd (and left member variable conn which is closed) + wiki.Db_mgr_as_sql().Core_data_mgr().Init_by_load(gplx.xowa.wikis.data.Xow_db_file__core_.Find_core_fil(wiki)); // NOTE: must reinit providers as previous steps may have rls'd (and left member variable conn which is closed) wiki.File__orig_mgr().Wkrs_del(Xof_orig_wkr_.Tid_wmf_api); db_fsys_mgr = wiki.Db_mgr_as_sql().Core_data_mgr(); db_ary = Xob_dump_mgr_base_.Init_text_files_ary(db_fsys_mgr); @@ -110,7 +110,7 @@ public abstract class Xob_dump_mgr_base extends Xob_itm_basic_base implements Xo } } private void Exec_db_itm(Xob_dump_bmk dump_bmk, int ns_ord, int ns_id, int db_id) { - List_adp pages = List_adp_.new_(); + List_adp pages = List_adp_.New(); Xow_ns ns = wiki.Ns_mgr().Ids_get_or_null(ns_id); int pg_id = pg_bgn; while (true) { @@ -183,7 +183,7 @@ public abstract class Xob_dump_mgr_base extends Xob_itm_basic_base implements Xo usr_dlg.Note_many("", "", "done: ~{0} ~{1}", exec_count, Decimal_adp_.divide_safe_(exec_count, Env_.TickCount_elapsed_in_sec(time_bgn)).To_str("#,###.000")); } private void Free() { - Xow_wiki_.Rls_mem(wiki, true); + Xowe_wiki_.Rls_mem(wiki, true); } protected void Reset_db_y_() {this.reset_db = true;} @Override public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { @@ -204,7 +204,7 @@ public abstract class Xob_dump_mgr_base extends Xob_itm_basic_base implements Xo else if (ctx.Match(k, Invk_exec_count_max_)) exec_count_max = m.ReadInt("v"); else if (ctx.Match(k, Invk_exit_now_)) exit_now = m.ReadYn("v"); else if (ctx.Match(k, Invk_exit_after_commit_)) exit_after_commit = m.ReadYn("v"); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private void Notify_restoring(String itm, int val) { @@ -222,7 +222,7 @@ public abstract class Xob_dump_mgr_base extends Xob_itm_basic_base implements Xo } class Xob_dump_mgr_base_ { public static void Load_all_tmpls(Gfo_usr_dlg usr_dlg, Xowe_wiki wiki, Xob_dump_src_id page_src) { - List_adp pages = List_adp_.new_(); + List_adp pages = List_adp_.New(); Xow_ns ns_tmpl = wiki.Ns_mgr().Ns_template(); Xow_defn_cache defn_cache = wiki.Cache_mgr().Defn_cache(); int cur_page_id = -1; @@ -245,24 +245,24 @@ class Xob_dump_mgr_base_ { } usr_dlg.Note_many("", "", "tmpl_load done: ~{0}", load_count); } - public static Xowd_db_file[] Init_text_files_ary(Xowd_db_mgr core_data_mgr) { - List_adp text_files_list = List_adp_.new_(); + public static Xow_db_file[] Init_text_files_ary(Xow_db_mgr core_data_mgr) { + List_adp text_files_list = List_adp_.New(); int len = core_data_mgr.Dbs__len(); - if (len == 1) return new Xowd_db_file[] {core_data_mgr.Dbs__get_at(0)}; // single file: return core; note that there are no Tid = Text + if (len == 1) return new Xow_db_file[] {core_data_mgr.Dbs__get_at(0)}; // single file: return core; note that there are no Tid = Text for (int i = 0; i < len; i++) { - Xowd_db_file file = core_data_mgr.Dbs__get_at(i); + Xow_db_file file = core_data_mgr.Dbs__get_at(i); switch (file.Tid()) { - case Xowd_db_file_.Tid_text: - case Xowd_db_file_.Tid_text_solo: + case Xow_db_file_.Tid__text: + case Xow_db_file_.Tid__text_solo: text_files_list.Add(file); break; } } - return (Xowd_db_file[])text_files_list.To_ary_and_clear(Xowd_db_file.class); + return (Xow_db_file[])text_files_list.To_ary_and_clear(Xow_db_file.class); } } class Xob_dump_bmk_mgr { - private Bry_bfr save_bfr = Bry_bfr.reset_(1024); + private Bry_bfr save_bfr = Bry_bfr_.Reset(1024); public Io_url Cfg_url() {return cfg_url;} public Xob_dump_bmk_mgr Cfg_url_(Io_url v) {cfg_url = v; return this;} private Io_url cfg_url; public void Reset() {Io_mgr.Instance.DeleteFil(cfg_url);} public void Load(Xoae_app app, Xob_dump_mgr_base dump_mgr) { @@ -283,7 +283,7 @@ class Xob_dump_bmk_mgr { class Xob_rate_mgr { private long time_bgn; private int item_len; - private Bry_bfr save_bfr = Bry_bfr.reset_(255); + private Bry_bfr save_bfr = Bry_bfr_.Reset(255); public int Reset_interval() {return reset_interval;} public Xob_rate_mgr Reset_interval_(int v) {reset_interval = v; return this;} private int reset_interval = 10000; public Io_url Log_file_url() {return log_file;} public Xob_rate_mgr Log_file_(Io_url v) {log_file = v; return this;} private Io_url log_file; public void Init() {time_bgn = Env_.TickCount();} diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/Xob_ns_file_itm.java b/400_xowa/src/gplx/xowa/bldrs/cmds/Xob_ns_file_itm.java index 8f8f7cf4d..a43a63f28 100644 --- a/400_xowa/src/gplx/xowa/bldrs/cmds/Xob_ns_file_itm.java +++ b/400_xowa/src/gplx/xowa/bldrs/cmds/Xob_ns_file_itm.java @@ -23,14 +23,14 @@ public class Xob_ns_file_itm { this.db_file_tid = db_file_tid; this.file_name = file_name; this.ns_ids = ns_ids; this.nth_db_id = Nth_db_id_null; this.nth_db_idx = 1; } - public byte Db_file_tid() {return db_file_tid;} private final byte db_file_tid; - public String File_name() {return file_name;} private final String file_name; - public int[] Ns_ids() {return ns_ids;} private final int[] ns_ids; + public byte Db_file_tid() {return db_file_tid;} private final byte db_file_tid; + public String File_name() {return file_name;} private final String file_name; + public int[] Ns_ids() {return ns_ids;} private final int[] ns_ids; public int Nth_db_id() {return nth_db_id;} public void Nth_db_id_(int v) {nth_db_id = v;} private int nth_db_id; public int Nth_db_idx() {return nth_db_idx;} private int nth_db_idx; public String Make_file_name() { // EX: en.wikipedia.org-text-ns.000-001.xowa String rv = String_.Format("-{0}{1}{2}.xowa" // EX: -text-ns.000-db.001.xowa - , Xowd_db_file_.To_key(db_file_tid) // text + , Xow_db_file_.To_key(db_file_tid) // text , String_.Len_eq_0(file_name) ? "" : "-" + file_name // if empty, don't add "ns.000" segment; produces en.wikipedia.org-text-001.xowa , nth_db_idx == 1 ? "" : "-db." + Int_.To_str_pad_bgn_zero(nth_db_idx, 3) // "-db.001" ); diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/Xob_ns_file_itm_parser.java b/400_xowa/src/gplx/xowa/bldrs/cmds/Xob_ns_file_itm_parser.java index af759251f..465a42b2d 100644 --- a/400_xowa/src/gplx/xowa/bldrs/cmds/Xob_ns_file_itm_parser.java +++ b/400_xowa/src/gplx/xowa/bldrs/cmds/Xob_ns_file_itm_parser.java @@ -19,7 +19,7 @@ package gplx.xowa.bldrs.cmds; import gplx.*; import gplx.xowa.*; import gplx.xow import gplx.langs.dsvs.*; import gplx.xowa.wikis.nss.*; public class Xob_ns_file_itm_parser extends Dsv_wkr_base { - private byte[] ns_ids_bry; private String name; private final List_adp rslts = List_adp_.new_(); + private byte[] ns_ids_bry; private String name; private final List_adp rslts = List_adp_.New(); private Xow_ns_mgr ns_mgr; private byte db_file_tid; private boolean mode_each = false; public void Ctor(byte db_file_tid, Xow_ns_mgr ns_mgr) { this.db_file_tid = db_file_tid; this.ns_mgr = ns_mgr; @@ -36,7 +36,9 @@ public class Xob_ns_file_itm_parser extends Dsv_wkr_base { @Override public void Commit_itm(Dsv_tbl_parser parser, int pos) { if (ns_ids_bry == null) throw parser.Err_row_bgn("ns_itm missing ns_ids", pos); if (mode_each) return; - if (Bry_.Eq(ns_ids_bry, ns_ids_bry_each)) { + + // mode is ; create map with each ns in separate file + if (Bry_.Eq(ns_ids_bry, Ns_file_map__each)) { mode_each = true; int len = ns_mgr.Ords_len(); for (int i = 0; i < len; ++i) { @@ -46,6 +48,17 @@ public class Xob_ns_file_itm_parser extends Dsv_wkr_base { } return; } + // mode is ; create map with each ns in one file; // DB.FEW: DATE:2016-06-07 + else if (Bry_.Eq(ns_ids_bry, Ns_file_map__few)) { + int len = ns_mgr.Ords_len(); + int[] ns_ary_for_few = new int[len]; + for (int i = 0; i < len; ++i) { + ns_ary_for_few[i] = ns_mgr.Ords_get_at(i).Id(); + } + rslts.Add(new Xob_ns_file_itm(db_file_tid, String_.Empty, ns_ary_for_few)); + return; + } + int[] ns_ids = null; if (ns_ids_bry.length == 1 && ns_ids_bry[0] == Byte_ascii.Star) { // "*" int len = ns_mgr.Ords_len(); @@ -69,7 +82,7 @@ public class Xob_ns_file_itm_parser extends Dsv_wkr_base { this.Load_by_bry(bry); return (Xob_ns_file_itm[])rslts.To_ary(Xob_ns_file_itm.class); } - private static final byte[] ns_ids_bry_each = Bry_.new_a7(""); + public static final byte[] Ns_file_map__few = Bry_.new_a7("few"), Ns_file_map__each = Bry_.new_a7(""); /* "" -> no rules; return "default"; generates "text-001" and lumps all ns into it "*||3700|2" -> auto-generate per ns diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/Xob_parse_all_src_sql.java b/400_xowa/src/gplx/xowa/bldrs/cmds/Xob_parse_all_src_sql.java index 82848a145..5a9f152ce 100644 --- a/400_xowa/src/gplx/xowa/bldrs/cmds/Xob_parse_all_src_sql.java +++ b/400_xowa/src/gplx/xowa/bldrs/cmds/Xob_parse_all_src_sql.java @@ -47,7 +47,7 @@ class Xob_dump_src_id { private DataRdr New_rdr(Xodb_mgr_sql db_mgr, String page_db_url, int text_db_idx, int cur_ns, int prv_id, byte redirect) { if (cur_text_db_idx != text_db_idx) { cur_text_db_idx = text_db_idx; - Xowd_db_file text_db = db_mgr.Core_data_mgr().Dbs__get_by_id(text_db_idx); + Xow_db_file text_db = db_mgr.Core_data_mgr().Dbs__get_by_id_or_fail(text_db_idx); Db_conn conn = text_db.Conn(); String sql = String_.Format(Sql_select_clause, New_rdr__redirect_clause(redirect)); text_stmt = conn.Stmt_sql(sql); @@ -75,7 +75,7 @@ class Xob_dump_src_id { default: throw Err_.new_unhandled(redirect); } } - private static final String Sql_select_clause = String_.Concat_lines_nl + private static final String Sql_select_clause = String_.Concat_lines_nl ( "SELECT p.page_id" , ", p.page_title" , ", t.text_data" diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Uca_trie_tst.java b/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Uca_trie_tst.java index e6cb3aac3..caa3bf024 100644 --- a/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Uca_trie_tst.java +++ b/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Uca_trie_tst.java @@ -33,7 +33,7 @@ class Uca_trie_fxt { public void Clear() { if (trie == null) { trie = new Uca_trie(); - bfr = Bry_bfr.new_(); + bfr = Bry_bfr_.New(); } trie.Clear(); } Uca_trie trie; Bry_bfr bfr; diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xob_category_registry_sql.java b/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xob_category_registry_sql.java index 0347eeb53..0f3780f7a 100644 --- a/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xob_category_registry_sql.java +++ b/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xob_category_registry_sql.java @@ -34,7 +34,7 @@ public class Xob_category_registry_sql implements Xob_cmd { Gfo_usr_dlg usr_dlg = wiki.Appe().Usr_dlg(); wiki.Init_db_mgr(); Xowd_page_tbl page_core_tbl = wiki.Db_mgr_as_sql().Core_data_mgr().Tbl__page(); - Db_rdr rdr = page_core_tbl.conn.Stmt_select_order(page_core_tbl.Tbl_name(), String_.Ary(page_core_tbl.Fld_page_title(), page_core_tbl.Fld_page_id()), String_.Ary(page_core_tbl.Fld_page_ns()), page_core_tbl.Fld_page_title()) + Db_rdr rdr = page_core_tbl.Conn().Stmt_select_order(page_core_tbl.Tbl_name(), String_.Ary(page_core_tbl.Fld_page_title(), page_core_tbl.Fld_page_id()), String_.Ary(page_core_tbl.Fld_page_ns()), page_core_tbl.Fld_page_title()) .Crt_int(page_core_tbl.Fld_page_ns(), Xow_ns_.Tid__category) .Exec_select__rls_auto(); try { @@ -53,6 +53,6 @@ public class Xob_category_registry_sql implements Xob_cmd { public void Cmd_bgn(Xob_bldr bldr) {} public void Cmd_run() {} public void Cmd_term() {} - public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {return GfoInvkAble_.Rv_unhandled;} + public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {return Gfo_invk_.Rv_unhandled;} public static Io_url Tmp_dir(Xowe_wiki wiki) {return wiki.Fsys_mgr().Tmp_dir().GenSubDir(Xob_cmd_keys.Key_text_cat_core);} } diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xob_category_registry_sql_tst.java b/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xob_category_registry_sql_tst.java index bc4583570..93c386844 100644 --- a/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xob_category_registry_sql_tst.java +++ b/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xob_category_registry_sql_tst.java @@ -28,7 +28,7 @@ public class Xob_category_registry_sql_tst { } } class Xob_category_registry_sql_fxt { - Db_mgr_fxt fxt; Xowe_wiki wiki; Xoae_app app; Int_obj_ref page_id_next = Int_obj_ref.new_(1); + Db_mgr_fxt fxt; Xowe_wiki wiki; Xoae_app app; Int_obj_ref page_id_next = Int_obj_ref.New(1); public void Clear() { if (fxt == null) { fxt = new Db_mgr_fxt().Ctor_fsys(); @@ -53,7 +53,7 @@ class Xob_category_registry_sql_fxt { } int[] Parse_rslts_txt(String rslts_txt) { String[] lines = String_.SplitLines_nl(rslts_txt); - List_adp list = List_adp_.new_(); + List_adp list = List_adp_.New(); int len = lines.length; for (int i = 0; i < len; i++) { String line = lines[i]; diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xob_categorylinks_base.java b/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xob_categorylinks_base.java index 2c174ffbb..8f61cde43 100644 --- a/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xob_categorylinks_base.java +++ b/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xob_categorylinks_base.java @@ -19,7 +19,7 @@ package gplx.xowa.bldrs.cmds.ctgs; import gplx.*; import gplx.xowa.*; import gpl import gplx.core.brys.*; import gplx.core.ios.*; import gplx.core.times.*; import gplx.xowa.wikis.ctgs.*; import gplx.xowa.bldrs.wkrs.*; import gplx.xowa.bldrs.sqls.*; public abstract class Xob_categorylinks_base extends Xob_sql_dump_base implements Sql_file_parser_cmd { - private DateAdp_parser date_parser = DateAdp_parser.new_(); private Sql_file_parser sql_parser; Uca_trie trie; private Bry_bfr uca_bfr = Bry_bfr.reset_(255); + private DateAdp_parser date_parser = DateAdp_parser.new_(); private Sql_file_parser sql_parser; Uca_trie trie; private Bry_bfr uca_bfr = Bry_bfr_.Reset(255); public abstract Io_sort_cmd Make_sort_cmd(Sql_file_parser sql_parser); @Override public String Sql_file_name() {return "categorylinks";} @Override public void Cmd_bgn_hook(Xob_bldr bldr, Sql_file_parser parser) { @@ -70,8 +70,8 @@ public abstract class Xob_categorylinks_base extends Xob_sql_dump_base implement Xobdc_merger.Basic(bldr.Usr_dlg(), dump_url_gen, temp_dir.GenSubDir("sort"), sort_mem_len, Xoctg_link_sql_sorter.Instance, Io_line_rdr_key_gen_.noop, Make_sort_cmd(sql_parser)); wiki.Html_mgr().Importing_ctgs_(Bool_.N); } - private static final byte[] Fld_cl_from = Bry_.new_a7("cl_from"), Fld_cl_to = Bry_.new_a7("cl_to"), Fld_cl_timestamp = Bry_.new_a7("cl_timestamp"), Fld_cl_collation = Bry_.new_a7("cl_collation"), Fld_cl_sortkey = Bry_.new_a7("cl_sortkey"), Fld_cl_type = Bry_.new_a7("cl_type"); - private static final byte[] Collation_uca = Bry_.new_a7("uca"), Sortkey_space = new byte[] {Byte_ascii.Space}; + private static final byte[] Fld_cl_from = Bry_.new_a7("cl_from"), Fld_cl_to = Bry_.new_a7("cl_to"), Fld_cl_timestamp = Bry_.new_a7("cl_timestamp"), Fld_cl_collation = Bry_.new_a7("cl_collation"), Fld_cl_sortkey = Bry_.new_a7("cl_sortkey"), Fld_cl_type = Bry_.new_a7("cl_type"); + private static final byte[] Collation_uca = Bry_.new_a7("uca"), Sortkey_space = new byte[] {Byte_ascii.Space}; } class Xoctg_link_sql_sorter implements gplx.core.lists.ComparerAble { public int compare(Object lhsObj, Object rhsObj) { @@ -86,5 +86,5 @@ class Xoctg_link_sql_sorter implements gplx.core.lists.ComparerAble { } return CompareAble_.Same; } - public static final Xoctg_link_sql_sorter Instance = new Xoctg_link_sql_sorter(); Xoctg_link_sql_sorter() {} + public static final Xoctg_link_sql_sorter Instance = new Xoctg_link_sql_sorter(); Xoctg_link_sql_sorter() {} } diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xob_categorylinks_sql_make.java b/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xob_categorylinks_sql_make.java index 2fcdae97d..a0c524e96 100644 --- a/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xob_categorylinks_sql_make.java +++ b/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xob_categorylinks_sql_make.java @@ -20,8 +20,8 @@ import gplx.core.flds.*; import gplx.core.ios.*; import gplx.core.encoders.*; im import gplx.xowa.bldrs.sqls.*; import gplx.xowa.wikis.data.*; import gplx.xowa.wikis.data.tbls.*; public class Xob_categorylinks_sql_make implements Io_make_cmd { - private Gfo_usr_dlg usr_dlg; private final Xowe_wiki wiki; private final Db_idx_mode idx_mode; private Xowd_db_mgr core_db_mgr; - private final Sql_file_parser sql_parser; private final Gfo_fld_rdr fld_rdr = Gfo_fld_rdr.xowa_(); private Io_line_rdr name_id_rdr; + private Gfo_usr_dlg usr_dlg; private final Xowe_wiki wiki; private final Db_idx_mode idx_mode; private Xow_db_mgr core_db_mgr; + private final Sql_file_parser sql_parser; private final Gfo_fld_rdr fld_rdr = Gfo_fld_rdr.xowa_(); private Io_line_rdr name_id_rdr; private Xowd_cat_core_tbl cat_core_tbl; private Xowd_cat_link_tbl cat_link_tbl; private long cat_db_size, cat_db_max; private int cur_row_count; private int[] cur_cat_counts = new int[Xoa_ctg_mgr.Tid__max]; private byte[] cur_cat_ttl = Ttl_first; private int cur_cat_id; private int cur_cat_file_idx; @@ -34,7 +34,7 @@ public class Xob_categorylinks_sql_make implements Io_make_cmd { this.cat_db_max = wiki.Appe().Api_root().Bldr().Wiki().Import().Cat_link_db_max(); boolean one_file = core_db_mgr.Props().Layout_text().Tid_is_all_or_few(); if (!one_file) // cat is in its own dbs: delete dbs - core_db_mgr.Dbs__delete_by_tid(Xowd_db_file_.Tid_cat, Xowd_db_file_.Tid_cat_core, Xowd_db_file_.Tid_cat_link); // delete existing category files else upgrade won't work + core_db_mgr.Dbs__delete_by_tid(Xow_db_file_.Tid__cat, Xow_db_file_.Tid__cat_core, Xow_db_file_.Tid__cat_link); // delete existing category files else upgrade won't work Db_make(Bool_.Y); if (one_file) { // cat is in single db; delete tbls; cat_core_tbl.Delete_all(); @@ -86,10 +86,10 @@ public class Xob_categorylinks_sql_make implements Io_make_cmd { private void Db_make(boolean first) { boolean one_file = core_db_mgr.Props().Layout_text().Tid_is_all_or_few(); if (first) { // create cat_core - Xowd_db_file cat_core_db = one_file ? core_db_mgr.Db__cat_core() : core_db_mgr.Dbs__make_by_tid(Xowd_db_file_.Tid_cat_core); + Xow_db_file cat_core_db = one_file ? core_db_mgr.Db__cat_core() : core_db_mgr.Dbs__make_by_tid(Xow_db_file_.Tid__cat_core); this.cat_core_tbl = cat_core_db.Tbl__cat_core().Create_tbl(); } - Xowd_db_file cat_link_db = one_file ? core_db_mgr.Db__core() : core_db_mgr.Dbs__make_by_tid(Xowd_db_file_.Tid_cat_link); + Xow_db_file cat_link_db = one_file ? core_db_mgr.Db__core() : core_db_mgr.Dbs__make_by_tid(Xow_db_file_.Tid__cat_link); this.cat_link_tbl = cat_link_db.Tbl__cat_link(); if ( (one_file && first) || !one_file) @@ -134,7 +134,7 @@ public class Xob_categorylinks_sql_make implements Io_make_cmd { Io_url[] urls = Io_mgr.Instance.QueryDir_args(make_dir).ExecAsUrlAry(); return new Io_line_rdr(usr_dlg, urls).Key_gen_(Io_line_rdr_key_gen_.first_pipe); } - private static final byte[] Ttl_last = null, Ttl_first = Bry_.Empty; + private static final byte[] Ttl_last = null, Ttl_first = Bry_.Empty; } /* NOTE_1: categorylinks row size: 34 + 20 + 12 + (cat_sortkey.length * 2) diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xob_categorylinks_sql_tst.java b/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xob_categorylinks_sql_tst.java index b50c19c2d..718c6634c 100644 --- a/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xob_categorylinks_sql_tst.java +++ b/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xob_categorylinks_sql_tst.java @@ -23,7 +23,7 @@ public class Xob_categorylinks_sql_tst { @Test public void Basic() { if (Xoa_test_.Db_skip()) return; fxt.Init_db_sqlite(); - fxt.Init_page_insert(Int_obj_ref.new_(1), Xow_ns_.Tid__category, String_.Ary("Ctg_1", "Ctg_2")); + fxt.Init_page_insert(Int_obj_ref.New(1), Xow_ns_.Tid__category, String_.Ary("Ctg_1", "Ctg_2")); fxt.Init_fil(Xoa_test_.Url_wiki_enwiki().GenSubFil("xowa_categorylinks.sql"), String_.Concat ( Xob_categorylinks_sql.Sql_categorylinks , "INSERT INTO `categorylinks` VALUES" @@ -54,7 +54,7 @@ class Db_tst_val { public String Key() {return key;} public Db_tst_val Key_(String v) {this.key = v; return this;} private String key; public Object Val() {return val;} public Db_tst_val Val_(Object v) {this.val = v; return this;} Object val; public static final int Idx_null = -1; - public static final String Key_null = null; + public static final String Key_null = null; } class Db_tst_row { public int Idx() {return idx;} public Db_tst_row Idx_(int val) {idx = val; return this;} private int idx = -1; @@ -86,7 +86,7 @@ class Db_tst_row { class Db_tst_qry { public Db_qry Qry() {return qry;} Db_qry qry; public String[] Cols() {return cols;} public Db_tst_qry Cols_(String... v) {this.cols = v; return this;} private String[] cols; - public List_adp Rows() {return rows;} List_adp rows = List_adp_.new_(); + public List_adp Rows() {return rows;} List_adp rows = List_adp_.New(); public Db_tst_qry Rows_add_vals(Object... ary) { Db_tst_row row = Db_tst_row.kvs_(cols, ary); rows.Add(row); @@ -94,7 +94,7 @@ class Db_tst_qry { } public void Test(Db_conn conn) { DataRdr rdr = DataRdr_.Null; - Bry_bfr bfr = Bry_bfr.new_(); + Bry_bfr bfr = Bry_bfr_.New(); try { rdr = conn.Exec_qry_as_old_rdr(qry); int expd_row_idx = 0, expd_row_max = rows.Count(); @@ -130,7 +130,7 @@ class Db_tst_qry { bfr.Add_str_u8(qry.To_sql__exec(gplx.dbs.sqls.Sql_qry_wtr_.Sqlite)).Add_byte(Byte_ascii.Semic); throw Err_.new_wo_type(bfr.To_str_and_clear()); } - } static final byte[] Lbl_row_hdr = Bry_.new_a7("row: "), Lbl_eq_y = Bry_.new_a7(" == "), Lbl_eq_n = Bry_.new_a7(" != "); + } static final byte[] Lbl_row_hdr = Bry_.new_a7("row: "), Lbl_eq_y = Bry_.new_a7(" == "), Lbl_eq_n = Bry_.new_a7(" != "); public static Db_tst_qry tbl_(String tbl_name, String order_by) {return new_(Db_qry_.select_tbl_(tbl_name).Order_asc_(order_by));} public static Db_tst_qry new_(Db_qry qry) { Db_tst_qry rv = new Db_tst_qry(); diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xob_ctg_v1_base.java b/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xob_ctg_v1_base.java index 20248fdbb..3a451f409 100644 --- a/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xob_ctg_v1_base.java +++ b/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xob_ctg_v1_base.java @@ -21,7 +21,7 @@ import gplx.xowa.bldrs.wkrs.*; import gplx.xowa.langs.*; import gplx.xowa.langs.bldrs.*; import gplx.xowa.wikis.nss.*; import gplx.xowa.wikis.data.tbls.*; -public abstract class Xob_ctg_v1_base extends Xob_itm_dump_base implements Xobd_parser_wkr, GfoInvkAble { +public abstract class Xob_ctg_v1_base extends Xob_itm_dump_base implements Xobd_parser_wkr, Gfo_invk { protected Xob_ctg_v1_base() {} // TEST:needed for fxt public Xob_ctg_v1_base Ctor(Xob_bldr bldr, Xowe_wiki wiki) {this.Cmd_ctor(bldr, wiki); return this;} public abstract String Wkr_key(); @@ -83,7 +83,7 @@ public abstract class Xob_ctg_v1_base extends Xob_itm_dump_base implements Xobd_ private Gfo_fld_wtr fld_wtr = Gfo_fld_wtr.xowa_(); Btrie_fast_mgr trie = Btrie_fast_mgr.cs().Add_stub(Tid_brack_end, "]]").Add_stub(Tid_pipe, "|").Add_stub(Tid_nl, "\n").Add_stub(Tid_brack_bgn, "[["); static final int row_fixed_len = 5 + 1 + 1; // 5=rowId; 1=|; 1=\n - List_adp category_list = List_adp_.new_(); Int_obj_ref cur_pos = Int_obj_ref.zero_(); + List_adp category_list = List_adp_.New(); Int_obj_ref cur_pos = Int_obj_ref.New_zero(); static final byte Tid_eos = 0, Tid_brack_end = 1, Tid_pipe = 2, Tid_nl = 3, Tid_brack_bgn = 4; private static int Move_fwd_while_space(byte[] src, int src_len, int pos) { while (true) { diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xob_ctg_v1_base_tst.java b/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xob_ctg_v1_base_tst.java index f1452face..1d99085cb 100644 --- a/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xob_ctg_v1_base_tst.java +++ b/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xob_ctg_v1_base_tst.java @@ -52,7 +52,7 @@ class Xowd_page_wkr_ctg_fxt { return this; } } -class Xobd_parser_wkr_ctg_tstr extends Xob_ctg_v1_txt { public List_adp Found() {return found;} List_adp found = List_adp_.new_(); +class Xobd_parser_wkr_ctg_tstr extends Xob_ctg_v1_txt { public List_adp Found() {return found;} List_adp found = List_adp_.New(); @Override public void Process_ctg(Xowd_page_itm page, byte[] src, int src_len, int bgn, int end) { found.Add(Bry_.Mid(src, bgn, end)); } diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xoctg_hiddencat_ttl_wkr.java b/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xoctg_hiddencat_ttl_wkr.java index 7da460479..e70aae735 100644 --- a/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xoctg_hiddencat_ttl_wkr.java +++ b/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xoctg_hiddencat_ttl_wkr.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.xowa.bldrs.cmds.ctgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*; import gplx.core.ios.*; import gplx.xowa.wikis.tdbs.*; import gplx.xowa.bldrs.wkrs.*; -public class Xoctg_hiddencat_ttl_wkr extends Xob_itm_dump_base implements Xob_cmd, GfoInvkAble { +public class Xoctg_hiddencat_ttl_wkr extends Xob_itm_dump_base implements Xob_cmd, Gfo_invk { public Xoctg_hiddencat_ttl_wkr(Xob_bldr bldr, Xowe_wiki wiki) {this.Cmd_ctor(bldr, wiki); this.make_fil_len = Io_mgr.Len_mb;} private Xob_sql_join_wkr_ctg_hidden join_wkr; public String Cmd_key() {return Xob_cmd_keys.Key_tdb_cat_hidden_ttl;} public void Cmd_init(Xob_bldr bldr) {} @@ -62,7 +62,7 @@ class Xob_sql_join_wkr_ctg_hidden implements Xob_sql_join_wkr { if (pipe_pos == Bry_find_.Not_found) throw Err_.new_wo_type("failed to find pipe for name", "excerpt", String_.new_u8(src, join.Itm_pos_bgn(), join.Itm_pos_end())); file_bfr.Add_mid(src, pipe_pos + 1, itm_end - 1).Add_byte_pipe(); file_bfr.Add(key_bry).Add_byte_nl(); - } private Bry_bfr file_bfr = Bry_bfr.new_(); + } private Bry_bfr file_bfr = Bry_bfr_.New(); public void Flush() { Io_mgr.Instance.SaveFilBfr(dump_url_gen.Nxt_url(), file_bfr); } diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xoctg_link_idx_wkr.java b/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xoctg_link_idx_wkr.java index fc69af2f3..19758e8a6 100644 --- a/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xoctg_link_idx_wkr.java +++ b/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xoctg_link_idx_wkr.java @@ -78,7 +78,7 @@ class Xoctg_make_link_mgr { subc_grp = new Xoctg_make_link_grp(Xoa_ctg_mgr.Tid_subc, make_fil_max); file_grp = new Xoctg_make_link_grp(Xoa_ctg_mgr.Tid_file, make_fil_max); page_grp = new Xoctg_make_link_grp(Xoa_ctg_mgr.Tid_page, make_fil_max); - make_fil_bfr = Bry_bfr.reset_(make_fil_max); + make_fil_bfr = Bry_bfr_.Reset(make_fil_max); make_fld_wtr = Gfo_fld_wtr.xowa_().Bfr_(make_fil_bfr); make_dir = fsys_mgr.Url_site_dir(Xotdb_dir_info_.Tid_category2_link); make_cmd = new Xob_make_cmd_site(usr_dlg, make_dir, make_fil_max); @@ -126,7 +126,7 @@ class Xoctg_make_link_mgr { ; } class Xoctg_make_link_grp { - public Xoctg_make_link_grp(byte tid, int bfr_max) {this.tid = tid; bfr = Bry_bfr.reset_(bfr_max);} Gfo_fld_wtr fld_wtr = Gfo_fld_wtr.xowa_(); + public Xoctg_make_link_grp(byte tid, int bfr_max) {this.tid = tid; bfr = Bry_bfr_.Reset(bfr_max);} Gfo_fld_wtr fld_wtr = Gfo_fld_wtr.xowa_(); public byte Tid() {return tid;} private byte tid; public int Bfr_len() {return bfr.Len();} public Bry_bfr Bfr() {return bfr;} Bry_bfr bfr; @@ -157,7 +157,7 @@ class Xoctg_idx_data_link { class Xoctg_make_main_mgr { public Xoctg_make_main_mgr(Gfo_usr_dlg usr_dlg, int make_fil_max, Xotdb_fsys_mgr fsys_mgr) { this.make_fil_max = make_fil_max; - make_fil_bfr = Bry_bfr.reset_(make_fil_max); + make_fil_bfr = Bry_bfr_.Reset(make_fil_max); make_fld_wtr = Gfo_fld_wtr.xowa_().Bfr_(make_fil_bfr); make_dir = fsys_mgr.Url_site_dir(Xotdb_dir_info_.Tid_category2_main); make_cmd = new Xob_make_cmd_site(usr_dlg, make_dir, make_fil_max); diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/diffs/Xob_diff_build_cmd.java b/400_xowa/src/gplx/xowa/bldrs/cmds/diffs/Xob_diff_build_cmd.java index 1802297f9..3874a4af6 100644 --- a/400_xowa/src/gplx/xowa/bldrs/cmds/diffs/Xob_diff_build_cmd.java +++ b/400_xowa/src/gplx/xowa/bldrs/cmds/diffs/Xob_diff_build_cmd.java @@ -34,7 +34,7 @@ public class Xob_diff_build_cmd implements Xob_cmd { else if (ctx.Match(k, Invk__commit_interval_)) commit_interval = m.ReadInt("v"); else if (ctx.Match(k, Invk__db_ids_)) db_ids = Int_.Ary_parse(m.ReadStr("v"), "|"); else if (ctx.Match(k, Invk__bld_name_)) bld_name = m.ReadStr("v"); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } public void Cmd_init(Xob_bldr bldr) {} diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/diffs/Xob_diff_build_wkr.java b/400_xowa/src/gplx/xowa/bldrs/cmds/diffs/Xob_diff_build_wkr.java index caaa53022..ee9022578 100644 --- a/400_xowa/src/gplx/xowa/bldrs/cmds/diffs/Xob_diff_build_wkr.java +++ b/400_xowa/src/gplx/xowa/bldrs/cmds/diffs/Xob_diff_build_wkr.java @@ -28,7 +28,7 @@ class Xob_diff_build_wkr { this.wiki = wiki; wiki.Init_by_wiki(); Bry_fmt url_fmt = Bry_fmt.New("").Args_(New_url_args(wiki, tbl_mapr.Name)); - Bry_bfr tmp_bfr = Bry_bfr.new_(); + Bry_bfr tmp_bfr = Bry_bfr_.New(); old_conn = New_conn(tmp_bfr, wiki, url_fmt, Bool_.N, old_url); new_conn = New_conn(tmp_bfr, wiki, url_fmt, Bool_.N, new_url); dif_conn = New_conn(tmp_bfr, wiki, url_fmt, Bool_.Y, dif_url); @@ -45,10 +45,10 @@ class Xob_diff_build_wkr { dif_wkr.Init_conn(dif_db, 1000); dif_bldr.Init(dif_wkr); // wiki.Data__core_mgr().Db__core().Conn().Conn_info(); - Xowd_db_file[] db_files = wiki.Data__core_mgr().Db__core().Tbl__db().Select_all(wiki.Data__core_mgr().Props(), Io_url_.Empty); - int db_files_len = db_files.length; + Xow_db_file[] db_file_ary = wiki.Data__core_mgr().Db__core().Tbl__db().Select_all(wiki.Data__core_mgr().Props(), Io_url_.Empty); + int db_files_len = db_file_ary.length; for (int i = 0; i < db_files_len; ++i) { - Xowd_db_file db_file = db_files[i]; + Xow_db_file db_file = db_file_ary[i]; if (tbl_mapr.Db_ids__has(db_file.Tid())) Compare(ctx); } diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/diffs/Xowd_tbl_mapr.java b/400_xowa/src/gplx/xowa/bldrs/cmds/diffs/Xowd_tbl_mapr.java index 199fcd541..56d3312ec 100644 --- a/400_xowa/src/gplx/xowa/bldrs/cmds/diffs/Xowd_tbl_mapr.java +++ b/400_xowa/src/gplx/xowa/bldrs/cmds/diffs/Xowd_tbl_mapr.java @@ -22,12 +22,12 @@ class Xowd_tbl_mapr { this.Name = name; this.Db_ids = db_ids; } - public final String Name; - public final int[] Db_ids; + public final String Name; + public final int[] Db_ids; public boolean Db_ids__has(int id) {return true;} // private static List_adp Fill_tbl_names(List_adp rv, int db_tid) { // switch (db_tid) { -// case Xowd_db_file_.Tid_cat: +// case Xow_db_file_.Tid__cat: // return // break; // } diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/Xob_init_base.java b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/Xob_init_base.java index ca788ce9c..86d3e9b0d 100644 --- a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/Xob_init_base.java +++ b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/Xob_init_base.java @@ -19,7 +19,7 @@ package gplx.xowa.bldrs.cmds.texts; import gplx.*; import gplx.xowa.*; import gp import gplx.xowa.xtns.wdatas.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wkrs.*; import gplx.xowa.bldrs.xmls.*; import gplx.xowa.bldrs.cmds.texts.xmls.*; import gplx.xowa.bldrs.css.*; import gplx.xowa.wikis.domains.*; -public abstract class Xob_init_base implements Xob_cmd, GfoInvkAble { +public abstract class Xob_init_base implements Xob_cmd, Gfo_invk { private Xob_bldr bldr; private Xowe_wiki wiki; private Gfo_usr_dlg usr_dlg; private byte wbase_enabled = Bool_.__byte; public Xob_init_base Ctor(Xob_bldr bldr, Xowe_wiki wiki) {this.bldr = bldr; this.wiki = wiki; this.usr_dlg = wiki.Appe().Usr_dlg(); return this;} @@ -35,7 +35,7 @@ public abstract class Xob_init_base implements Xob_cmd, GfoInvkAble { } public void Cmd_bgn(Xob_bldr bldr) {} public void Cmd_run() { // parse site_info - gplx.core.ios.Io_stream_rdr src_rdr = wiki.Import_cfg().Src_rdr(); usr_dlg.Plog_many("", "", "reading dump header: ~{0}", src_rdr.Url().Raw()); + gplx.core.ios.streams.Io_stream_rdr src_rdr = wiki.Import_cfg().Src_rdr(); usr_dlg.Plog_many("", "", "reading dump header: ~{0}", src_rdr.Url().Raw()); Xob_siteinfo_parser_.Parse(Xob_siteinfo_parser_.Extract(src_rdr), wiki); this.Cmd_run_end(wiki); // save site info } @@ -53,7 +53,7 @@ public abstract class Xob_init_base implements Xob_cmd, GfoInvkAble { else if (ctx.Match(k, Invk_src_bz2_fil_)) wiki.Import_cfg().Src_fil_bz2_(m.ReadIoUrl("v")); else if (ctx.Match(k, Invk_wdata_enabled_)) wbase_enabled = m.ReadYn("v") ? Bool_.Y_byte : Bool_.N_byte; else if (ctx.Match(k, Invk_owner)) return bldr.Cmd_mgr(); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String Invk_src_xml_fil_ = "src_xml_fil_", Invk_src_bz2_fil_ = "src_bz2_fil_", Invk_owner = "owner", Invk_wdata_enabled_ = "wdata_enabled_"; } diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/Xob_term_base.java b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/Xob_term_base.java index fb83fbb03..f4ed47cc3 100644 --- a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/Xob_term_base.java +++ b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/Xob_term_base.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.bldrs.cmds.texts; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*; import gplx.xowa.bldrs.wkrs.*; import gplx.xowa.bldrs.xmls.*; import gplx.xowa.xtns.wdatas.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.wikis.dbs.*; -public abstract class Xob_term_base implements Xob_cmd, GfoInvkAble { +public abstract class Xob_term_base implements Xob_cmd, Gfo_invk { public Xob_term_base Ctor(Xob_bldr bldr, Xowe_wiki wiki) {this.wiki = wiki; return this;} private Xowe_wiki wiki; public abstract String Cmd_key(); public Xob_cmd Cmd_clone(Xob_bldr bldr, Xowe_wiki wiki) {return null;} diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/sqls/Xob_init_cmd.java b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/sqls/Xob_init_cmd.java index 003e791c7..ea62a272e 100644 --- a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/sqls/Xob_init_cmd.java +++ b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/sqls/Xob_init_cmd.java @@ -31,7 +31,7 @@ public class Xob_init_cmd extends Xob_init_base { } @Override public void Cmd_run_end(Xowe_wiki wiki) { - if (gplx.xowa.wikis.Xow_fsys_mgr.Find_core_fil(wiki) != null) + if (gplx.xowa.wikis.data.Xow_db_file__core_.Find_core_fil(wiki) != null) throw wiki.Appe().Bldr().Usr_dlg().Fail_many("", "", "directory must not contain any .xowa or .sqlite3 files: dir=~{0}", wiki.Fsys_mgr().Root_dir().Raw()); Xowe_wiki_.Create(wiki, wiki.Import_cfg().Src_rdr_len(), wiki.Import_cfg().Src_fil().NameOnly()); } diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/sqls/Xob_ns_to_db_wkr__text.java b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/sqls/Xob_ns_to_db_wkr__text.java index e7bac059a..3186965cb 100644 --- a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/sqls/Xob_ns_to_db_wkr__text.java +++ b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/sqls/Xob_ns_to_db_wkr__text.java @@ -18,13 +18,13 @@ along with this program. If not, see . package gplx.xowa.bldrs.cmds.texts.sqls; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*; import gplx.xowa.bldrs.cmds.texts.*; import gplx.xowa.wikis.data.*; import gplx.xowa.wikis.data.tbls.*; public class Xob_ns_to_db_wkr__text implements Xob_ns_to_db_wkr { - public byte Db_tid() {return Xowd_db_file_.Tid_text;} - public void Tbl_init(Xowd_db_file db) { + public byte Db_tid() {return Xow_db_file_.Tid__text;} + public void Tbl_init(Xow_db_file db) { Xowd_text_tbl tbl = db.Tbl__text(); tbl.Create_tbl(); tbl.Insert_bgn(); } - public void Tbl_term(Xowd_db_file db) { + public void Tbl_term(Xow_db_file db) { db.Tbl__text().Insert_end(); } } diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/sqls/Xob_page_cmd.java b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/sqls/Xob_page_cmd.java index 3cb1d23dc..547443ed8 100644 --- a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/sqls/Xob_page_cmd.java +++ b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/sqls/Xob_page_cmd.java @@ -21,9 +21,9 @@ import gplx.xowa.bldrs.wkrs.*; import gplx.xowa.wikis.nss.*; import gplx.xowa.wikis.data.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.wikis.dbs.*; import gplx.xowa.wikis.*; import gplx.xowa.bldrs.filters.dansguardians.*; import gplx.xowa.apps.apis.xowa.bldrs.imports.*; -import gplx.xowa.parsers.utils.*; import gplx.xowa.addons.builds.files.cmds.*; import gplx.xowa.addons.builds.files.dbs.*; -public class Xob_page_cmd extends Xob_itm_basic_base implements Xob_page_wkr, GfoInvkAble { - private Xowd_db_mgr db_mgr; private Db_idx_mode idx_mode = Db_idx_mode.Itm_end; private Xowd_page_tbl page_core_tbl; private Io_stream_zip_mgr text_zip_mgr; private byte text_zip_tid; +import gplx.xowa.parsers.utils.*; import gplx.xowa.addons.bldrs.files.cmds.*; import gplx.xowa.addons.bldrs.files.dbs.*; +public class Xob_page_cmd extends Xob_itm_basic_base implements Xob_page_wkr, Gfo_invk { + private Xow_db_mgr db_mgr; private Db_idx_mode idx_mode = Db_idx_mode.Itm_end; private Xowd_page_tbl page_core_tbl; private Io_stream_zip_mgr text_zip_mgr; private byte text_zip_tid; private Xop_redirect_mgr redirect_mgr; private Xob_redirect_tbl redirect_tbl; private boolean redirect_id_enabled; private DateAdp modified_latest = DateAdp_.MinValue; private int page_count_all, page_count_main = 0; private int commit_interval = 100000; // 100 k private Dg_match_mgr dg_match_mgr; private Xob_ns_to_db_mgr ns_to_db_mgr; @@ -45,8 +45,8 @@ public class Xob_page_cmd extends Xob_itm_basic_base implements Xob_page_wkr, Gf } app.Bldr().Dump_parser().Trie_tab_del_(); // disable swapping for \t byte[] ns_file_map = import_cfg.New_ns_file_map(wiki.Import_cfg().Src_rdr_len()); - Xob_ns_file_itm.Init_ns_bldr_data(Xowd_db_file_.Tid_text, wiki.Ns_mgr(), ns_file_map); - if (idx_mode.Tid_is_bgn()) page_core_tbl.Create_index(); + Xob_ns_file_itm.Init_ns_bldr_data(Xow_db_file_.Tid__text, wiki.Ns_mgr(), ns_file_map); + if (idx_mode.Tid_is_bgn()) page_core_tbl.Create_idx(); page_core_tbl.Insert_bgn(); usr_dlg.Prog_many("", "", "import.page.bgn"); } @@ -62,7 +62,7 @@ public class Xob_page_cmd extends Xob_itm_basic_base implements Xob_page_wkr, Gf if (dg_match_mgr.Match(1, id, ns.Id(), page.Ttl_page_db(), page.Ttl_full_db(), wiki.Lang(), text_raw)) return; } byte[] text_zip = text_zip_mgr.Zip(text_zip_tid, text_raw); - Xowd_db_file text_db = ns_to_db_mgr.Get_by_ns(ns.Bldr_data(), text_zip.length); + Xow_db_file text_db = ns_to_db_mgr.Get_by_ns(ns.Bldr_data(), text_zip.length); try {db_mgr.Create_page(page_core_tbl, text_db.Tbl__text(), id, page.Ns_id(), page.Ttl_page_db(), redirect, modified, text_zip, text_raw_len, random_int, text_db.Id(), -1);} catch (Exception e) { throw Err_.new_exc(e, "bldr", "create page in db failed; skipping page", "id", id, "ns", page.Ns_id(), "name", page.Ttl_page_db(), "redirect", redirect, "modified", modified, "text_len", text_raw_len, "text_db_id", text_db.Id()); @@ -72,7 +72,7 @@ public class Xob_page_cmd extends Xob_itm_basic_base implements Xob_page_wkr, Gf ++page_count_all; if (ns.Id_is_main() && !page.Redirected()) ++page_count_main; if (page_count_all % commit_interval == 0) { - page_core_tbl.conn.Txn_sav(); text_db.Conn().Txn_sav(); + page_core_tbl.Conn().Txn_sav(); text_db.Conn().Txn_sav(); if (redirect_id_enabled) redirect_tbl.Conn().Txn_sav(); if (dg_match_mgr != null) dg_match_mgr.Commit(); } @@ -86,15 +86,15 @@ public class Xob_page_cmd extends Xob_itm_basic_base implements Xob_page_wkr, Gf if (dg_match_mgr != null) dg_match_mgr.Rls(); usr_dlg.Log_many("", "", "import.page: updating core stats"); Xow_ns_mgr ns_mgr = wiki.Ns_mgr(); - Xowd_db_file db_core = db_mgr.Db__core(); + Xow_db_file db_core = db_mgr.Db__core(); db_core.Tbl__site_stats().Update(page_count_main, page_count_all, ns_mgr.Ns_file().Count()); // save page stats db_core.Tbl__ns().Insert(ns_mgr); // save ns db_mgr.Tbl__cfg().Insert_str(Xow_cfg_consts.Grp__wiki_init, Xow_cfg_consts.Key__init__modified_latest, modified_latest.XtoStr_fmt(DateAdp_.Fmt_iso8561_date_time)); - if (idx_mode.Tid_is_end()) page_core_tbl.Create_index(); + if (idx_mode.Tid_is_end()) page_core_tbl.Create_idx(); if (redirect_id_enabled) { redirect_tbl.Conn().Txn_end(); redirect_tbl.Update_trg_redirect_id(db_core.Url(), 1); - redirect_tbl.Update_src_redirect_id(db_core.Url(), page_core_tbl.conn); + redirect_tbl.Update_src_redirect_id(db_core.Url(), page_core_tbl.Conn()); } } @Override public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/sqls/Xob_page_delete_cmd.java b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/sqls/Xob_page_delete_cmd.java index da22b39dd..f68bf8a7a 100644 --- a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/sqls/Xob_page_delete_cmd.java +++ b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/sqls/Xob_page_delete_cmd.java @@ -24,7 +24,7 @@ public class Xob_page_delete_cmd extends Xob_cmd_base { @Override public String Cmd_key() {return Xob_cmd_keys.Key_text_delete_page;} @Override public void Cmd_run() { wiki.Init_by_wiki(); - Xowd_db_file core_db = wiki.Data__core_mgr().Db__core(); + Xow_db_file core_db = wiki.Data__core_mgr().Db__core(); Db_conn core_db_conn = core_db.Conn(); Gfo_usr_dlg usr_dlg = Gfo_usr_dlg_.Instance; usr_dlg.Plog_many("", "", "creating page_filter"); @@ -53,18 +53,18 @@ public class Xob_page_delete_cmd extends Xob_cmd_base { , ";" )); try { - Xowd_db_file[] db_files = core_db.Tbl__db().Select_all(wiki.Data__core_mgr().Props(), wiki.Fsys_mgr().Root_dir()); - int len = db_files.length; + Xow_db_file[] db_file_ary = core_db.Tbl__db().Select_all(wiki.Data__core_mgr().Props(), wiki.Fsys_mgr().Root_dir()); + int len = db_file_ary.length; for (int i = 0; i < len; ++i) { boolean db_file_is_text = Bool_.N, db_file_is_cat = Bool_.N, db_file_is_search = Bool_.N; - Xowd_db_file db_file = db_files[i]; + Xow_db_file db_file = db_file_ary[i]; switch (db_file.Tid()) { - case Xowd_db_file_.Tid_core: case Xowd_db_file_.Tid_wiki_solo: case Xowd_db_file_.Tid_text_solo: + case Xow_db_file_.Tid__core: case Xow_db_file_.Tid__wiki_solo: case Xow_db_file_.Tid__text_solo: if (wiki.Data__core_mgr().Props().Layout_text().Tid_is_lot()) continue; // if mode is lot, then "core" db does not have text, cat, search; skip; DATE:2016-01-31 db_file_is_text = db_file_is_cat = db_file_is_search = Bool_.Y; break; - case Xowd_db_file_.Tid_text: db_file_is_text = Bool_.Y; break; - case Xowd_db_file_.Tid_cat: db_file_is_cat = Bool_.Y; break; - case Xowd_db_file_.Tid_search_core: db_file_is_search = Bool_.Y; break; + case Xow_db_file_.Tid__text: db_file_is_text = Bool_.Y; break; + case Xow_db_file_.Tid__cat: db_file_is_cat = Bool_.Y; break; + case Xow_db_file_.Tid__search_core: db_file_is_search = Bool_.Y; break; } int db_id = db_file.Id(); if (db_file_is_text) Run_sql(core_db_conn, db_file.Url(), db_id, "deleting text: " + db_id, "DELETE FROM text WHERE page_id IN (SELECT page_id FROM page_filter WHERE page_text_db_id = {0});"); diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/tdbs/Io_sort_cmd_ns.java b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/tdbs/Io_sort_cmd_ns.java index 508da2fc1..be742f2a6 100644 --- a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/tdbs/Io_sort_cmd_ns.java +++ b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/tdbs/Io_sort_cmd_ns.java @@ -19,7 +19,7 @@ package gplx.xowa.bldrs.cmds.texts.tdbs; import gplx.*; import gplx.xowa.*; impo import gplx.core.ios.*; import gplx.xowa.wikis.tdbs.*; import gplx.xowa.wikis.tdbs.xdats.*; public class Io_sort_cmd_ns implements Io_make_cmd { - Xob_xdat_file_wtr fil_wtr; Bry_bfr reg_bfr = Bry_bfr.new_(), key_bfr_0 = Bry_bfr.new_(512), key_bfr_n = Bry_bfr.new_(512); + Xob_xdat_file_wtr fil_wtr; Bry_bfr reg_bfr = Bry_bfr_.New(), key_bfr_0 = Bry_bfr_.New_w_size(512), key_bfr_n = Bry_bfr_.New_w_size(512); int fil_count = 0, itm_count = 0; public Io_sort_cmd_ns(Gfo_usr_dlg usr_dlg) {this.usr_dlg = usr_dlg;} Gfo_usr_dlg usr_dlg; public int Trg_fil_max() {return trg_fil_max;} public Io_sort_cmd_ns Trg_fil_max_(int v) {trg_fil_max = v; return this;} private int trg_fil_max = 65 * Io_mgr.Len_kb; diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/tdbs/Xob_calc_stats_cmd.java b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/tdbs/Xob_calc_stats_cmd.java index db2f8ede7..dc390ac0c 100644 --- a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/tdbs/Xob_calc_stats_cmd.java +++ b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/tdbs/Xob_calc_stats_cmd.java @@ -39,7 +39,7 @@ public class Xob_calc_stats_cmd extends Xob_itm_basic_base implements Xob_cmd { } int count_main = Calc_count_articles(wiki.Ns_mgr().Ns_main()); int count_file = Calc_count_articles(wiki.Ns_mgr().Ns_file()); - Bry_bfr bfr = Bry_bfr.new_(); + Bry_bfr bfr = Bry_bfr_.New(); Gen_call(Bool_.Y, bfr, Xowe_wiki.Invk_stats); Gen_call(Bool_.N, bfr, Xow_site_stats_mgr.Invk_number_of_articles_, count_main); Gen_call(Bool_.N, bfr, Xow_site_stats_mgr.Invk_number_of_files_, count_file); diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/tdbs/Xob_make_cmd_site.java b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/tdbs/Xob_make_cmd_site.java index c01de67f9..50ebe5fab 100644 --- a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/tdbs/Xob_make_cmd_site.java +++ b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/tdbs/Xob_make_cmd_site.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.bldrs.cmds.texts.tdbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*; import gplx.xowa.bldrs.cmds.texts.*; -import gplx.core.ios.*; +import gplx.core.ios.*; import gplx.core.ios.streams.*; import gplx.xowa.wikis.tdbs.*; import gplx.xowa.wikis.tdbs.xdats.*; public class Xob_make_cmd_site implements Io_make_cmd { - Xob_xdat_file_wtr fil_wtr; Bry_bfr cur_bfr = Bry_bfr.new_(), reg_bfr = Bry_bfr.new_(), reg_key_0 = Bry_bfr.new_(512), reg_key_n = Bry_bfr.new_(512); + Xob_xdat_file_wtr fil_wtr; Bry_bfr cur_bfr = Bry_bfr_.New(), reg_bfr = Bry_bfr_.New(), reg_key_0 = Bry_bfr_.New_w_size(512), reg_key_n = Bry_bfr_.New_w_size(512); int make_fil_max = 65 * Io_mgr.Len_kb, fil_count = 0, itm_count = 0, itm_key_end = 0; Io_url reg_url; public Xob_make_cmd_site(Gfo_usr_dlg usr_dlg, Io_url make_dir, int make_fil_max) {this.usr_dlg = usr_dlg; this.make_dir = make_dir; this.make_fil_max = make_fil_max;} Gfo_usr_dlg usr_dlg; public Io_sort_cmd Make_dir_(Io_url v) {make_dir = v; return this;} Io_url make_dir; diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/tdbs/Xob_make_id_wkr.java b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/tdbs/Xob_make_id_wkr.java index 4480f6604..42fb4e5c4 100644 --- a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/tdbs/Xob_make_id_wkr.java +++ b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/tdbs/Xob_make_id_wkr.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.xowa.bldrs.cmds.texts.tdbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*; import gplx.xowa.bldrs.cmds.texts.*; import gplx.core.ios.*; import gplx.xowa.wikis.tdbs.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.bldrs.wkrs.*; -public class Xob_make_id_wkr extends Xob_itm_dump_base implements Xob_page_wkr, GfoInvkAble { +public class Xob_make_id_wkr extends Xob_itm_dump_base implements Xob_page_wkr, Gfo_invk { public Xob_make_id_wkr(Xob_bldr bldr, Xowe_wiki wiki) {this.Cmd_ctor(bldr, wiki);} public String Page_wkr__key() {return KEY;} public static final String KEY = "core.make_id"; public void Page_wkr__bgn() { diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/tdbs/Xob_page_txt.java b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/tdbs/Xob_page_txt.java index 6f7129d25..f73c0e992 100644 --- a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/tdbs/Xob_page_txt.java +++ b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/tdbs/Xob_page_txt.java @@ -21,7 +21,7 @@ import gplx.xowa.bldrs.wkrs.*; import gplx.xowa.bldrs.wtrs.*; import gplx.xowa.wikis.nss.*; import gplx.xowa.parsers.utils.*; import gplx.xowa.wikis.tdbs.*; import gplx.xowa.wikis.tdbs.xdats.*; import gplx.xowa.wikis.tdbs.stats.*; -public class Xob_page_txt extends Xob_itm_dump_base implements Xob_page_wkr, GfoInvkAble { +public class Xob_page_txt extends Xob_itm_dump_base implements Xob_page_wkr, Gfo_invk { public Xob_page_txt(Xob_bldr bldr, Xowe_wiki wiki) {this.Cmd_ctor(bldr, wiki);} public String Page_wkr__key() {return Xob_cmd_keys.Key_tdb_make_page;} public void Page_wkr__bgn() { @@ -49,7 +49,7 @@ public class Xob_page_txt extends Xob_itm_dump_base implements Xob_page_wkr, Gfo // idx: EX: 00100|aB64|Ttl; Xob_tmp_wtr ttl_wtr = ttl_wtr_mgr.Get_or_new(ns); - int file_idx = page_wtr.Fil_idx(), row_idx = page_wtr.Idx_pos() - List_adp_.LastIdxOffset; + int file_idx = page_wtr.Fil_idx(), row_idx = page_wtr.Idx_pos() - 1; // 1=Last_idx_offset page.Text_db_id_(file_idx).Tdb_row_idx_(row_idx); if (ttl_wtr.FlushNeeded(Xotdb_page_itm_.Txt_ttl_len__fixed + ttl_len)) ttl_wtr.Flush(bldr.Usr_dlg()); Xotdb_page_itm_.Txt_ttl_save(ttl_wtr.Bfr(), id, file_idx, row_idx, redirect, text_len, ttl_wo_ns); diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/tdbs/Xob_parse_dump_templates_cmd.java b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/tdbs/Xob_parse_dump_templates_cmd.java index 1ff521d35..3c145738e 100644 --- a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/tdbs/Xob_parse_dump_templates_cmd.java +++ b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/tdbs/Xob_parse_dump_templates_cmd.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.xowa.bldrs.cmds.texts.tdbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*; import gplx.xowa.bldrs.cmds.texts.*; import gplx.core.ios.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.wikis.tdbs.*; import gplx.xowa.wikis.nss.*; import gplx.xowa.bldrs.wkrs.*; -public class Xob_parse_dump_templates_cmd extends Xob_itm_dump_base implements Xob_page_wkr, GfoInvkAble { +public class Xob_parse_dump_templates_cmd extends Xob_itm_dump_base implements Xob_page_wkr, Gfo_invk { public Xob_parse_dump_templates_cmd(Xob_bldr bldr, Xowe_wiki wiki) {this.Cmd_ctor(bldr, wiki);} public String Page_wkr__key() {return KEY;} public static final String KEY = "parse.dump_templates"; public static final int FixedLen_page = 1 + 5 + 1 + 5 + 1 + 1 + 1; // \tid|date|title|text\n diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/tdbs/Xob_search_base_tst.java b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/tdbs/Xob_search_base_tst.java index 9b916d148..cea92b96f 100644 --- a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/tdbs/Xob_search_base_tst.java +++ b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/tdbs/Xob_search_base_tst.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.bldrs.cmds.texts.tdbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*; import gplx.xowa.bldrs.cmds.texts.*; import org.junit.*; import gplx.xowa.wikis.tdbs.*; import gplx.xowa.bldrs.*; import gplx.xowa.wikis.nss.*; -import gplx.xowa.addons.apps.searchs.bldrs.*; +import gplx.xowa.addons.wikis.searchs.bldrs.*; public class Xob_search_base_tst { @Test public void Split() { tst_Split("a", "a"); @@ -47,7 +47,7 @@ public class Xob_search_base_tst { ; } private Xob_fxt fxt = new Xob_fxt().Ctor_mem(); private void tst_Split(String raw, String... expd) { - Ordered_hash list = Ordered_hash_.New(); Bry_bfr bfr = Bry_bfr.new_(); + Ordered_hash list = Ordered_hash_.New(); Bry_bfr bfr = Bry_bfr_.New(); byte[][] actl_bry = Srch_bldr_wkr_base.Split_ttl_into_words(fxt.App().Lang_mgr().Lang_en(), list, bfr, Bry_.new_u8(raw)); String[] actl = new String[actl_bry.length]; for (int i = 0; i < actl_bry.length; i++) diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/tdbs/Xob_search_tdb.java b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/tdbs/Xob_search_tdb.java index 908a7c0d5..6cee09509 100644 --- a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/tdbs/Xob_search_tdb.java +++ b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/tdbs/Xob_search_tdb.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.bldrs.cmds.texts.tdbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*; import gplx.xowa.bldrs.cmds.texts.*; -import gplx.xowa.addons.apps.searchs.bldrs.*; +import gplx.xowa.addons.wikis.searchs.bldrs.*; public class Xob_search_tdb extends Srch_bldr_wkr_base { public Xob_search_tdb(Xob_bldr bldr, Xowe_wiki wiki) {this.Cmd_ctor(bldr, wiki);} @Override public String Page_wkr__key() {return Xob_cmd_keys.Key_tdb_make_search_title;} diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/tdbs/Xob_tst.java b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/tdbs/Xob_tst.java index 9b78cb72e..b56ef8cf5 100644 --- a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/tdbs/Xob_tst.java +++ b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/tdbs/Xob_tst.java @@ -176,7 +176,7 @@ public class Xob_tst { Xotdb_page_raw_parser parser = new Xotdb_page_raw_parser(); Xowe_wiki wiki = Xoa_app_fxt.Make__wiki__edit(app); parser.Load(Gfo_usr_dlg_.Test(), wiki, new Xow_ns(Xow_ns_.Tid__template, Xow_ns_case_.Tid__1st, Bry_.new_a7("Template"), false), new Io_url[] {url}, 1 * Io_mgr.Len_kb); - List_adp actl = List_adp_.new_(); + List_adp actl = List_adp_.New(); Xowd_page_itm page = new Xowd_page_itm(); while (parser.Read(page)) { actl.Add(String_.new_u8(page.Text())); diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/xmls/Xob_siteinfo_parser_.java b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/xmls/Xob_siteinfo_parser_.java index d4330628c..326a21ec6 100644 --- a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/xmls/Xob_siteinfo_parser_.java +++ b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/xmls/Xob_siteinfo_parser_.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.bldrs.cmds.texts.xmls; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*; import gplx.xowa.bldrs.cmds.texts.*; -import gplx.core.ios.*; import gplx.langs.xmls.*; // NOTE: gplx.langs.xmls does not support Android; DATE:2013-01-17 +import gplx.core.ios.*; import gplx.core.ios.streams.*; import gplx.langs.xmls.*; // NOTE: gplx.langs.xmls does not support Android; DATE:2013-01-17 import gplx.xowa.wikis.nss.*; public class Xob_siteinfo_parser_ { public static byte[] Extract(Io_stream_rdr src_rdr) { @@ -34,7 +34,7 @@ public class Xob_siteinfo_parser_ { Xob_siteinfo_nde nde = Parse(String_.new_u8(siteinfo_bry), wiki.Ns_mgr()); wiki.Props().Bldr_version_(Bry_.new_a7(Xoa_app_.Version)); wiki.Props().Main_page_(nde.Main_page()); - Bry_bfr bfr = Bry_bfr.new_().Add_str_u8(nde.Site_name()).Add_byte_pipe().Add_str_u8(nde.Generator()).Add_byte_pipe().Add_str_u8(nde.Case_dflt()).Add_byte_pipe(); + Bry_bfr bfr = Bry_bfr_.New().Add_str_u8(nde.Site_name()).Add_byte_pipe().Add_str_u8(nde.Generator()).Add_byte_pipe().Add_str_u8(nde.Case_dflt()).Add_byte_pipe(); wiki.Props().Siteinfo_misc_(bfr.To_bry_and_clear()); } public static Xob_siteinfo_nde Parse(String xdoc_src, Xow_ns_mgr ns_mgr) { @@ -76,5 +76,5 @@ public class Xob_siteinfo_parser_ { } ns_mgr.Init_w_defaults(); } - private static final byte[] Bry_siteinfo_bgn = Bry_.new_a7(""), Bry_siteinfo_end = Bry_.new_a7(""); + private static final byte[] Bry_siteinfo_bgn = Bry_.new_a7(""), Bry_siteinfo_end = Bry_.new_a7(""); } diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/xmls/Xob_siteinfo_parser__tst.java b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/xmls/Xob_siteinfo_parser__tst.java index b098f8541..590387cfe 100644 --- a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/xmls/Xob_siteinfo_parser__tst.java +++ b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/xmls/Xob_siteinfo_parser__tst.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.xowa.bldrs.cmds.texts.xmls; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*; import gplx.xowa.bldrs.cmds.texts.*; import org.junit.*; import gplx.xowa.wikis.nss.*; public class Xob_siteinfo_parser__tst { - private final Xob_siteinfo_parser__fxt fxt = new Xob_siteinfo_parser__fxt(); + private final Xob_siteinfo_parser__fxt fxt = new Xob_siteinfo_parser__fxt(); @Test public void Basic__simplewikt() { // PURPOSE: basic test of siteinfo parse; DATE:2015-11-01 fxt.Test__parse(String_.Concat_lines_nl_skip_last ( " " @@ -100,8 +100,8 @@ public class Xob_siteinfo_parser__tst { } } class Xob_siteinfo_parser__fxt { - private final Xow_ns_mgr ns_mgr = new Xow_ns_mgr(gplx.xowa.langs.cases.Xol_case_mgr_.U8()); - private final Bry_bfr bfr = Bry_bfr.new_(); + private final Xow_ns_mgr ns_mgr = new Xow_ns_mgr(gplx.xowa.langs.cases.Xol_case_mgr_.U8()); + private final Bry_bfr bfr = Bry_bfr_.New(); public void Test__parse(String src_str, String expd) { Xob_siteinfo_nde nde = Xob_siteinfo_parser_.Parse(src_str, ns_mgr); nde.To_bfr(bfr); diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/utils/Xob_alert_cmd.java b/400_xowa/src/gplx/xowa/bldrs/cmds/utils/Xob_alert_cmd.java index 9b6f56de8..18e0f7862 100644 --- a/400_xowa/src/gplx/xowa/bldrs/cmds/utils/Xob_alert_cmd.java +++ b/400_xowa/src/gplx/xowa/bldrs/cmds/utils/Xob_alert_cmd.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.bldrs.cmds.utils; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*; import gplx.xowa.bldrs.wkrs.*; -import gplx.gfui.*; +import gplx.gfui.*; import gplx.gfui.kits.core.*; public class Xob_alert_cmd extends Xob_cmd__base implements Xob_cmd { public Xob_alert_cmd(Xob_bldr bldr, Xowe_wiki wiki) {super(bldr, wiki);} public Xob_alert_cmd Msg_(String v) {this.msg = v; return this;} private String msg = "no message specified"; @@ -29,7 +29,7 @@ public class Xob_alert_cmd extends Xob_cmd__base implements Xob_cmd { } @Override public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk__text_)) this.msg = m.ReadStr("v"); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String Invk__text_ = "text_"; diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/utils/Xob_core_batch_utl.java b/400_xowa/src/gplx/xowa/bldrs/cmds/utils/Xob_core_batch_utl.java index 77fcecbd1..3a6d76fd6 100644 --- a/400_xowa/src/gplx/xowa/bldrs/cmds/utils/Xob_core_batch_utl.java +++ b/400_xowa/src/gplx/xowa/bldrs/cmds/utils/Xob_core_batch_utl.java @@ -19,13 +19,13 @@ package gplx.xowa.bldrs.cmds.utils; import gplx.*; import gplx.xowa.*; import gp import gplx.core.brys.fmtrs.*; import gplx.xowa.wikis.domains.*; import gplx.xowa.bldrs.wms.dumps.*; -public class Xob_core_batch_utl implements GfoInvkAble { - private final Xob_bldr bldr; - private final Bry_fmtr fmtr = Bry_fmtr.keys_("bz2_fil", "wiki_key"); +public class Xob_core_batch_utl implements Gfo_invk { + private final Xob_bldr bldr; + private final Bry_fmtr fmtr = Bry_fmtr.keys_("bz2_fil", "wiki_key"); public Xob_core_batch_utl(Xob_bldr bldr, byte[] raw) {this.bldr = bldr; fmtr.Fmt_(raw);} private void Run() { Io_url[] bz2_fils = Io_mgr.Instance.QueryDir_fils(bldr.App().Fsys_mgr().Wiki_dir().GenSubDir_nest(Dir_dump, "todo")); - Bry_bfr bfr = Bry_bfr.reset_(Io_mgr.Len_kb); + Bry_bfr bfr = Bry_bfr_.Reset(Io_mgr.Len_kb); int bz2_fils_len = bz2_fils.length; for (int i = 0; i < bz2_fils_len; i++) { Io_url bz2_fil_url = bz2_fils[i]; diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/utils/Xob_delete_cmd.java b/400_xowa/src/gplx/xowa/bldrs/cmds/utils/Xob_delete_cmd.java index 66834f1f2..1e5ac5f9d 100644 --- a/400_xowa/src/gplx/xowa/bldrs/cmds/utils/Xob_delete_cmd.java +++ b/400_xowa/src/gplx/xowa/bldrs/cmds/utils/Xob_delete_cmd.java @@ -27,7 +27,7 @@ public class Xob_delete_cmd extends Xob_cmd__base implements Xob_cmd { int len = patterns_ary.length; if (len == 0) return; // build filter EX: '*.xml|*.txt' - Bry_bfr bfr = Bry_bfr.new_(); + Bry_bfr bfr = Bry_bfr_.New(); for (int i = 0; i < len; ++i) { String pattern = patterns_ary[i]; if (i != 0) bfr.Add_byte_pipe(); @@ -45,5 +45,5 @@ public class Xob_delete_cmd extends Xob_cmd__base implements Xob_cmd { Io_mgr.Instance.DeleteFil(file); } } - @Override public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {return GfoInvkAble_.Null;} + @Override public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {return Gfo_invk_.Noop;} } diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/utils/Xob_deploy_copy_cmd.java b/400_xowa/src/gplx/xowa/bldrs/cmds/utils/Xob_deploy_copy_cmd.java index 7ef2c23d1..fcd474e79 100644 --- a/400_xowa/src/gplx/xowa/bldrs/cmds/utils/Xob_deploy_copy_cmd.java +++ b/400_xowa/src/gplx/xowa/bldrs/cmds/utils/Xob_deploy_copy_cmd.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.bldrs.cmds.utils; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*; import gplx.xowa.bldrs.wkrs.*; import gplx.xowa.wikis.tdbs.*; -public class Xob_deploy_copy_cmd extends Xob_itm_basic_base implements Xob_cmd, GfoInvkAble { +public class Xob_deploy_copy_cmd extends Xob_itm_basic_base implements Xob_cmd, Gfo_invk { public Xob_deploy_copy_cmd(Xob_bldr bldr, Xowe_wiki wiki) {this.Cmd_ctor(bldr, wiki);} public String Cmd_key() {return Xob_cmd_keys.Key_deploy_copy;} public void Cmd_init(Xob_bldr bldr) {} diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/utils/Xob_download_cmd.java b/400_xowa/src/gplx/xowa/bldrs/cmds/utils/Xob_download_cmd.java index 8ebcd85a6..be263fab3 100644 --- a/400_xowa/src/gplx/xowa/bldrs/cmds/utils/Xob_download_cmd.java +++ b/400_xowa/src/gplx/xowa/bldrs/cmds/utils/Xob_download_cmd.java @@ -57,7 +57,7 @@ public class Xob_download_cmd extends Xob_cmd__base implements Xob_cmd { else if (String_.Eq(k, Invk_dump_trg_zip_)) dump_trg_zip = m.ReadIoUrl("v"); else if (String_.Eq(k, Invk_dump_trg_bin_)) dump_trg_bin = m.ReadIoUrl("v"); else if (String_.Eq(k, Invk_unzip_)) unzip = m.ReadYn("v"); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/utils/Xob_exec_sql_cmd.java b/400_xowa/src/gplx/xowa/bldrs/cmds/utils/Xob_exec_sql_cmd.java index c7faf1d6c..75f67cba2 100644 --- a/400_xowa/src/gplx/xowa/bldrs/cmds/utils/Xob_exec_sql_cmd.java +++ b/400_xowa/src/gplx/xowa/bldrs/cmds/utils/Xob_exec_sql_cmd.java @@ -27,8 +27,8 @@ public class Xob_exec_sql_cmd implements Xob_cmd { Xoae_app app = wiki.Appe(); wiki.Init_assert(); // force load; needed to pick up MediaWiki ns for MediaWiki:mainpage Xodb_mgr_sql db_mgr = wiki.Db_mgr_as_sql(); - Xowd_db_mgr fsys_mgr = db_mgr.Core_data_mgr(); - Xowd_db_file file = fsys_mgr.Dbs__get_by_id(file_idx); + Xow_db_mgr fsys_mgr = db_mgr.Core_data_mgr(); + Xow_db_file file = fsys_mgr.Dbs__get_by_id_or_fail(file_idx); app.Usr_dlg().Plog_many("", "", "exec_sql: running sql; file_idx=~{0} sql=~{1}", file_idx, sql); file.Conn().Exec_sql(sql); } diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/utils/Xob_site_meta_cmd.java b/400_xowa/src/gplx/xowa/bldrs/cmds/utils/Xob_site_meta_cmd.java index 970eddb14..717974aa5 100644 --- a/400_xowa/src/gplx/xowa/bldrs/cmds/utils/Xob_site_meta_cmd.java +++ b/400_xowa/src/gplx/xowa/bldrs/cmds/utils/Xob_site_meta_cmd.java @@ -86,7 +86,7 @@ public class Xob_site_meta_cmd implements Xob_cmd { if (ctx.Match(k, Invk_db_url_)) this.db_url = m.ReadIoUrl("v"); else if (ctx.Match(k, Invk_wikis_)) this.wikis = m.ReadStrAry("v", "\n"); else if (ctx.Match(k, Invk_cutoff_time_)) this.cutoff_time = m.ReadDate("v"); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static String Invk_db_url_ = "db_url_", Invk_wikis_ = "wikis_", Invk_cutoff_time_ = "cutoff_time_"; diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/utils/Xob_unzip_wkr.java b/400_xowa/src/gplx/xowa/bldrs/cmds/utils/Xob_unzip_wkr.java index c43a8fe80..ccb9e45f2 100644 --- a/400_xowa/src/gplx/xowa/bldrs/cmds/utils/Xob_unzip_wkr.java +++ b/400_xowa/src/gplx/xowa/bldrs/cmds/utils/Xob_unzip_wkr.java @@ -30,9 +30,9 @@ public class Xob_unzip_wkr { } public void Decompress(Io_url src, Io_url trg) { String src_ext = src.Ext(); - if (String_.Eq(src_ext, gplx.core.ios.Io_stream_.Ext_bz2)) process = decompress_bz2; - else if (String_.Eq(src_ext, gplx.core.ios.Io_stream_.Ext_zip)) process = decompress_zip; - else if (String_.Eq(src_ext, gplx.core.ios.Io_stream_.Ext_gz)) process = decompress_gz; + if (String_.Eq(src_ext, gplx.core.ios.streams.Io_stream_.Ext_bz2)) process = decompress_bz2; + else if (String_.Eq(src_ext, gplx.core.ios.streams.Io_stream_.Ext_zip)) process = decompress_zip; + else if (String_.Eq(src_ext, gplx.core.ios.streams.Io_stream_.Ext_gz)) process = decompress_gz; else throw Err_.new_unhandled(src_ext); Io_url trg_owner_dir = trg.OwnerDir(); Io_mgr.Instance.CreateDirIfAbsent(trg_owner_dir); diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/utils/Xob_xml_dumper_cmd.java b/400_xowa/src/gplx/xowa/bldrs/cmds/utils/Xob_xml_dumper_cmd.java index 56247022a..00db1d636 100644 --- a/400_xowa/src/gplx/xowa/bldrs/cmds/utils/Xob_xml_dumper_cmd.java +++ b/400_xowa/src/gplx/xowa/bldrs/cmds/utils/Xob_xml_dumper_cmd.java @@ -33,7 +33,7 @@ public class Xob_xml_dumper_cmd implements Xob_cmd { usr_dlg.Plog_many("", "", Cmd_key() + ":bgn;"); String wiki_abrv = ""; String main_page = String_.Format("https://{0}/wiki/{1}", wiki.Domain_str(), String_.new_u8(wiki.Props().Main_page())); - String ns_case = "first-letter"; // TODO: + String ns_case = "first-letter"; // TODO_OLD: xml_dumper.Write_root_bgn(wiki.Ns_mgr(), wiki.Domain_itm(), wiki_abrv, main_page, ns_case, "XOWA " + Xoa_app_.Version); Xodb_page_rdr page_rdr = wiki.Db_mgr().Load_mgr().Get_page_rdr(wiki); Xowd_page_itm page = new Xowd_page_itm(); @@ -60,7 +60,7 @@ public class Xob_xml_dumper_cmd implements Xob_cmd { public void Cmd_term() {} public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_commit_interval_)) commit_interval = m.ReadInt("v"); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String Invk_commit_interval_ = "commit_interval_"; } diff --git a/400_xowa/src/gplx/xowa/bldrs/css/Xoa_css_extractor.java b/400_xowa/src/gplx/xowa/bldrs/css/Xoa_css_extractor.java index 978e9ce36..fc2fa72d1 100644 --- a/400_xowa/src/gplx/xowa/bldrs/css/Xoa_css_extractor.java +++ b/400_xowa/src/gplx/xowa/bldrs/css/Xoa_css_extractor.java @@ -22,6 +22,8 @@ import gplx.xowa.wikis.nss.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.domains.*; import gplx.xowa.wikis.data.*; import gplx.xowa.files.downloads.*; import gplx.core.net.*; +import gplx.xowa.addons.wikis.htmls.css.bldrs.*; import gplx.xowa.addons.wikis.htmls.css.mgrs.*; +import gplx.xowa.wikis.data.fetchers.*; public class Xoa_css_extractor { public IoEngine_xrg_downloadFil Download_xrg() {return download_xrg;} private IoEngine_xrg_downloadFil download_xrg = Io_mgr.Instance.DownloadFil_args("", Io_url_.Empty); public Xoa_css_extractor Wiki_domain_(byte[] v) {wiki_domain = v; return this;} private byte[] wiki_domain; @@ -36,7 +38,7 @@ public class Xoa_css_extractor { public Xoa_css_extractor Url_encoder_(Gfo_url_encoder v) {url_encoder = v; return this;} private Gfo_url_encoder url_encoder; public Xoa_css_extractor Wiki_code_(byte[] v) {this.wiki_code = v; return this;} private byte[] wiki_code = null; private byte[] mainpage_html; private boolean lang_is_ltr = true; - private final Gfo_url_parser url_parser = new Gfo_url_parser(); + private final Gfo_url_parser url_parser = new Gfo_url_parser(); public void Init_by_app(Xoae_app app) { this.usr_dlg = app.Usr_dlg(); Xof_download_wkr download_wkr = app.Wmf_mgr().Download_wkr(); @@ -85,17 +87,17 @@ public class Xoa_css_extractor { Logo_setup(); } private boolean Install_by_db(Xow_wiki wiki, Io_url wiki_html_dir, String css_key) { - Xowd_db_mgr core_db_mgr = wiki.Data__core_mgr(); + Xow_db_mgr core_db_mgr = wiki.Data__core_mgr(); if ( core_db_mgr == null || core_db_mgr.Props() == null || core_db_mgr.Props().Schema_is_1() - || !core_db_mgr.Tbl__cfg().Select_yn_or(Xow_cfg_consts.Grp__wiki_schema, Xowd_db_file_schema_props.Key__tbl_css_core, Bool_.N) + || !core_db_mgr.Tbl__cfg().Select_yn_or(Xow_cfg_consts.Grp__wiki_schema, Xow_db_file_schema_props.Key__tbl_css_core, Bool_.N) ) { Xoa_app_.Usr_dlg().Warn_many("", "", "css.db not found; wiki=~{0} css_dir=~{1}", wiki.Domain_str(), wiki_html_dir.Raw()); return false; } - Xowd_db_file core_db = core_db_mgr.Db__core(); - return gplx.xowa.htmls.css.Xowd_css_core_mgr.Get(core_db.Tbl__css_core(), core_db.Tbl__css_file(), wiki_html_dir, css_key); + Xow_db_file core_db = core_db_mgr.Db__core(); + return Xowd_css_core_mgr.Get(core_db.Tbl__css_core(), core_db.Tbl__css_file(), wiki_html_dir, css_key); } public void Css_common_setup() { if (opt_download_css_common) @@ -133,14 +135,14 @@ public class Xoa_css_extractor { css_img_downloader.Chk(wiki_domain, trg_fil); } private boolean Css_wiki_generate(Io_url trg_fil) { - Bry_bfr bfr = Bry_bfr.new_(); + Bry_bfr bfr = Bry_bfr_.New(); Css_wiki_generate_section(bfr, Ttl_common_css); Css_wiki_generate_section(bfr, Ttl_vector_css); byte[] bry = bfr.To_bry_and_clear(); bry = Bry_.Replace(bry, gplx.xowa.bldrs.xmls.Xob_xml_parser_.Bry_tab_ent, gplx.xowa.bldrs.xmls.Xob_xml_parser_.Bry_tab); Io_mgr.Instance.SaveFilBry(trg_fil, bry); return true; - } private static final byte[] Ttl_common_css = Bry_.new_a7("Common.css"), Ttl_vector_css = Bry_.new_a7("Vector.css"); + } private static final byte[] Ttl_common_css = Bry_.new_a7("Common.css"), Ttl_vector_css = Bry_.new_a7("Vector.css"); private boolean Css_wiki_generate_section(Bry_bfr bfr, byte[] ttl) { byte[] page = page_fetcher.Get_by(Xow_ns_.Tid__mediawiki, ttl); if (page == null) return false; @@ -148,7 +150,7 @@ public class Xoa_css_extractor { Css_wiki_section_hdr.Bld_bfr_many(bfr, ttl); // add "/*XOWA:MediaWiki:Common.css*/\n" bfr.Add(page); // add page return true; - } static final Bry_fmtr Css_wiki_section_hdr = Bry_fmtr.new_("/*XOWA:MediaWiki:~{ttl}*/\n", "ttl"); + } static final Bry_fmtr Css_wiki_section_hdr = Bry_fmtr.new_("/*XOWA:MediaWiki:~{ttl}*/\n", "ttl"); public void Logo_setup() { boolean logo_missing = true; Io_url logo_url = wiki_html_dir.GenSubFil("logo.png"); @@ -183,7 +185,7 @@ public class Xoa_css_extractor { Io_url src_fil = wiki_html_dir.GenSubFil(String_.new_u8(src_bry)); Io_mgr.Instance.CopyFil(src_fil, trg_fil, true); return true; - } private static final byte[] Bry_mw_wiki_logo = Bry_.new_a7(".mw-wiki-logo{background-image:url(\""); + } private static final byte[] Bry_mw_wiki_logo = Bry_.new_a7(".mw-wiki-logo{background-image:url(\""); private String Logo_find_src() { if (mainpage_html == null) return null; int main_page_html_len = mainpage_html.length; @@ -195,7 +197,7 @@ public class Xoa_css_extractor { byte[] logo_bry = Bry_.Mid(mainpage_html, logo_bgn, logo_end); return protocol_prefix + String_.new_u8(logo_bry); } - private static final byte[] Logo_find_bgn = Bry_.new_a7("
. */ package gplx.xowa.bldrs.css; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import org.junit.*; import gplx.core.ios.*; import gplx.langs.htmls.encoders.*; import gplx.xowa.wikis.data.*; import gplx.xowa.files.downloads.*; +import gplx.xowa.wikis.data.fetchers.*; public class Xoa_css_extractor_basic_tst { @Before public void init() {fxt.Clear();} private Xoa_css_extractor_fxt fxt = new Xoa_css_extractor_fxt(); @Test public void Logo_download() { diff --git a/400_xowa/src/gplx/xowa/bldrs/css/Xoa_css_img_downloader.java b/400_xowa/src/gplx/xowa/bldrs/css/Xoa_css_img_downloader.java index c2e6f1ef3..fdd4bcf11 100644 --- a/400_xowa/src/gplx/xowa/bldrs/css/Xoa_css_img_downloader.java +++ b/400_xowa/src/gplx/xowa/bldrs/css/Xoa_css_img_downloader.java @@ -26,7 +26,7 @@ public class Xoa_css_img_downloader { public Xoa_css_img_downloader Stylesheet_prefix_(byte[] v) {stylesheet_prefix = v; return this;} private byte[] stylesheet_prefix; // TEST: setter exposed b/c tests can handle "mem/" but not "//mem" public void Chk(byte[] wiki_domain, Io_url css_fil) { this.wiki_domain = wiki_domain; - List_adp img_list = List_adp_.new_(); + List_adp img_list = List_adp_.New(); byte[] old_bry = Io_mgr.Instance.LoadFilBry(css_fil); byte[] rel_url_prefix = Bry_.Add(Bry_fwd_slashes, wiki_domain); byte[] new_bry = Convert_to_local_urls(rel_url_prefix, old_bry, img_list); @@ -38,7 +38,7 @@ public class Xoa_css_img_downloader { try { int src_len = src.length; int prv_pos = 0; - Bry_bfr bfr = Bry_bfr.new_(src_len); + Bry_bfr bfr = Bry_bfr_.New_w_size(src_len); Hash_adp img_hash = Hash_adp_bry.cs(); while (true) { int url_pos = Bry_find_.Find_fwd(src, Bry_url, prv_pos); @@ -134,7 +134,7 @@ public class Xoa_css_img_downloader { int semic_pos = Bry_find_.Find_fwd(src, Byte_ascii.Semic, find_bgn + url_raw.length, src_len); return semic_pos + Int_.Const_dlm_len; } - private static final byte[] + private static final byte[] Wikisource_dynimg_ttl = Bry_.new_a7("en.wikisource.org/w/index.php?title=MediaWiki:Dynimg.css") , Wikisource_dynimg_find = Bry_.new_a7(".freedImg img[src*=\"wikipedia\"], .freedImg img[src*=\"wikisource\"], .freedImg img[src*=\"score\"], .freedImg img[src*=\"math\"] {") , Wikisource_dynimg_repl = Bry_.new_a7(".freedImg img[src*=\"wikipedia\"], .freedImg img[src*=\"wikisource\"], /*XOWA:handle file:// paths which will have /commons.wikimedia.org/ but not /wikipedia/ */ .freedImg img[src*=\"wikimedia\"], .freedImg img[src*=\"score\"], .freedImg img[src*=\"math\"] {") @@ -179,13 +179,13 @@ public class Xoa_css_img_downloader { } return raw_bry; } - private static final byte[] + private static final byte[] Bry_url = Bry_.new_a7("url("), Bry_data_image = Bry_.new_a7("data:image/") , Bry_http = Bry_.new_a7("http://"), Bry_fwd_slashes = Bry_.new_a7("//"), Bry_import = Bry_.new_a7("@import ") , Bry_http_protocol = Bry_.new_a7("http") ; - public static final byte[] + public static final byte[] Bry_comment_bgn = Bry_.new_a7("/*XOWA:"), Bry_comment_end = Bry_.new_a7("*/"); - private static final int Bry_url_len = Bry_url.length, Bry_import_len = Bry_import.length; + private static final int Bry_url_len = Bry_url.length, Bry_import_len = Bry_import.length; static final String GRP_KEY = "xowa.wikis.init.css"; } diff --git a/400_xowa/src/gplx/xowa/bldrs/css/Xoa_css_img_downloader_tst.java b/400_xowa/src/gplx/xowa/bldrs/css/Xoa_css_img_downloader_tst.java index a1242b6f5..9de5aa578 100644 --- a/400_xowa/src/gplx/xowa/bldrs/css/Xoa_css_img_downloader_tst.java +++ b/400_xowa/src/gplx/xowa/bldrs/css/Xoa_css_img_downloader_tst.java @@ -166,7 +166,7 @@ class Xoa_css_img_downloader_fxt { downloader.Ctor(Gfo_usr_dlg_.Test(), new Xof_download_wkr_test(), Bry_.Empty); } public void Test_css_convert(String raw, String expd, String... expd_img_ary) { - List_adp actl_img_list = List_adp_.new_(); + List_adp actl_img_list = List_adp_.New(); byte[] actl_bry = downloader.Convert_to_local_urls(Bry_.new_a7("mem/en.wikipedia.org"), Bry_.new_u8(raw), actl_img_list); Tfds.Eq_str_lines(expd, String_.new_u8(actl_bry)); Tfds.Eq_ary_str(expd_img_ary, actl_img_list.To_str_ary()); diff --git a/400_xowa/src/gplx/xowa/bldrs/css/Xob_css_parser.java b/400_xowa/src/gplx/xowa/bldrs/css/Xob_css_parser.java index dec56cb3c..d7aaff6c2 100644 --- a/400_xowa/src/gplx/xowa/bldrs/css/Xob_css_parser.java +++ b/400_xowa/src/gplx/xowa/bldrs/css/Xob_css_parser.java @@ -18,9 +18,9 @@ along with this program. If not, see . package gplx.xowa.bldrs.css; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.core.btries.*; import gplx.core.primitives.*; class Xob_css_parser { - private final Bry_bfr bfr = Bry_bfr.new_(255); - private final Xob_mirror_mgr mgr; - private final Xob_css_parser__url url_parser; private final Xob_css_parser__import import_parser; + private final Bry_bfr bfr = Bry_bfr_.New_w_size(255); + private final Xob_mirror_mgr mgr; + private final Xob_css_parser__url url_parser; private final Xob_css_parser__import import_parser; public Xob_css_parser(Xob_mirror_mgr mgr) { this.mgr = mgr; this.url_parser = new Xob_css_parser__url(mgr.Site_url()); @@ -49,7 +49,7 @@ class Xob_css_parser { } } private static final byte Tkn_import = 1, Tkn_url = 2; - private static final Btrie_slim_mgr tkns_trie = Btrie_slim_mgr.ci_a7() + private static final Btrie_slim_mgr tkns_trie = Btrie_slim_mgr.ci_a7() .Add_str_byte("@import" , Tkn_import) .Add_str_byte(" url(" , Tkn_url) ; diff --git a/400_xowa/src/gplx/xowa/bldrs/css/Xob_css_parser__url_tst.java b/400_xowa/src/gplx/xowa/bldrs/css/Xob_css_parser__url_tst.java index 2195b00ea..8292c7e3b 100644 --- a/400_xowa/src/gplx/xowa/bldrs/css/Xob_css_parser__url_tst.java +++ b/400_xowa/src/gplx/xowa/bldrs/css/Xob_css_parser__url_tst.java @@ -30,7 +30,7 @@ public class Xob_css_parser__url_tst { @Test public void Warn_site() {fxt.Test_parse_warn(" url('//site')" , " url('//site')" , "invalid");} } class Xob_css_parser__url_fxt { - protected Xob_css_parser__url url_parser; private final Bry_bfr bfr = Bry_bfr.new_(32); + protected Xob_css_parser__url url_parser; private final Bry_bfr bfr = Bry_bfr_.New_w_size(32); protected Xob_css_tkn__base cur_frag; protected byte[] src_bry; @gplx.Virtual public void Clear() { url_parser = new Xob_css_parser__url(Bry_.new_a7("site")); diff --git a/400_xowa/src/gplx/xowa/bldrs/css/Xob_url_fixer.java b/400_xowa/src/gplx/xowa/bldrs/css/Xob_url_fixer.java index 57754501b..4799e21f3 100644 --- a/400_xowa/src/gplx/xowa/bldrs/css/Xob_url_fixer.java +++ b/400_xowa/src/gplx/xowa/bldrs/css/Xob_url_fixer.java @@ -48,10 +48,10 @@ class Xob_url_fixer { case Xob_url_fixer_tkn.Tid_mid_question: end = pos; pos = src_len; break; case Xob_url_fixer_tkn.Tid_mid_rel_1: case Xob_url_fixer_tkn.Tid_mid_rel_2: - Bry_bfr tmp_bfr = Bry_bfr.new_(src_len); + Bry_bfr tmp_bfr = Bry_bfr_.New_w_size(src_len); byte[] to_rel_root = Bry_.Mid(src, bgn, pos); byte[] to_rel_qry = Bry_.Mid(src, pos, src_len); - src = gplx.xowa.xtns.pfuncs.ttls.Pfunc_rel2abs.Rel2abs(tmp_bfr, to_rel_qry, to_rel_root, Int_obj_ref.neg1_()); + src = gplx.xowa.xtns.pfuncs.ttls.Pfunc_rel2abs.Rel2abs(tmp_bfr, to_rel_qry, to_rel_root, Int_obj_ref.New_neg1()); bgn = pos = 0; end = src_len = src.length; no_slashes = true; diff --git a/400_xowa/src/gplx/xowa/bldrs/filters/dansguardians/Dg_file.java b/400_xowa/src/gplx/xowa/bldrs/filters/dansguardians/Dg_file.java index 2c22b41cc..d1e5cfc95 100644 --- a/400_xowa/src/gplx/xowa/bldrs/filters/dansguardians/Dg_file.java +++ b/400_xowa/src/gplx/xowa/bldrs/filters/dansguardians/Dg_file.java @@ -19,12 +19,12 @@ package gplx.xowa.bldrs.filters.dansguardians; import gplx.*; import gplx.xowa.* import gplx.core.primitives.*; class Dg_file { public Dg_file(int id, String rel_path, Dg_rule[] lines) {this.id = id; this.rel_path = rel_path; this.lines = lines;} - public int Id() {return id;} private final int id; - public String Rel_path() {return rel_path;} private final String rel_path; // EX: goodphrases/weighted_general - public Dg_rule[] Lines() {return lines;} private final Dg_rule[] lines; + public int Id() {return id;} private final int id; + public String Rel_path() {return rel_path;} private final String rel_path; // EX: goodphrases/weighted_general + public Dg_rule[] Lines() {return lines;} private final Dg_rule[] lines; } class Dg_rule {// EX: < wikipedia ><-30> - private final Hash_adp_bry word_idx_hash = Hash_adp_bry.cs(); + private final Hash_adp_bry word_idx_hash = Hash_adp_bry.cs(); public Dg_rule(int file_id, int id, int idx, int tid, byte[] key, int score, Dg_word[] words) { this.file_id = file_id; this.id = id; this.idx = idx; this.tid = tid; this.key = key; this.score = score; this.words = words; @@ -32,25 +32,25 @@ class Dg_rule {// EX: < wikipedia ><-30> int words_len = words.length; for (int i = 0; i < words_len; ++i) { Dg_word word = words[i]; - word_idx_hash.Add_bry_obj(word.Raw(), Int_obj_ref.new_(i)); + word_idx_hash.Add_bry_obj(word.Raw(), Int_obj_ref.New(i)); } } } - public int File_id() {return file_id;} private final int file_id; - public int Id() {return id;} private final int id; - public int Idx() {return idx;} private final int idx; - public int Tid() {return tid;} private final int tid; - public byte[] Key() {return key;} private final byte[] key; - public Dg_word[] Words() {return words;} private final Dg_word[] words; + public int File_id() {return file_id;} private final int file_id; + public int Id() {return id;} private final int id; + public int Idx() {return idx;} private final int idx; + public int Tid() {return tid;} private final int tid; + public byte[] Key() {return key;} private final byte[] key; + public Dg_word[] Words() {return words;} private final Dg_word[] words; public Hash_adp_bry Word_idx_hash() {return word_idx_hash;} - public int Score() {return score;} private final int score; + public int Score() {return score;} private final int score; public static final int Tid_rule = 0 , Tid_comment = 1 , Tid_blank = 3 , Tid_invalid = 4 ; - public static final Dg_rule + public static final Dg_rule Itm_comment = new Dg_rule(-1, -1, -1, Tid_comment, null, -1, null) , Itm_blank = new Dg_rule(-1, -1, -1, Tid_blank, null, -1, null) , Itm_invalid = new Dg_rule(-1, -1, -1, Tid_invalid, null, -1, null) @@ -59,7 +59,7 @@ class Dg_rule {// EX: < wikipedia ><-30> } class Dg_word { public Dg_word(byte[] raw) {this.raw = raw;} - public byte[] Raw() {return raw;} private final byte[] raw; + public byte[] Raw() {return raw;} private final byte[] raw; public static String Ary_concat(Dg_word[] ary, Bry_bfr bfr, byte dlm) { if (ary == null) return String_.Empty; int len = ary.length; diff --git a/400_xowa/src/gplx/xowa/bldrs/filters/dansguardians/Dg_log_mgr.java b/400_xowa/src/gplx/xowa/bldrs/filters/dansguardians/Dg_log_mgr.java index 867313783..bd0b83d93 100644 --- a/400_xowa/src/gplx/xowa/bldrs/filters/dansguardians/Dg_log_mgr.java +++ b/400_xowa/src/gplx/xowa/bldrs/filters/dansguardians/Dg_log_mgr.java @@ -19,11 +19,11 @@ package gplx.xowa.bldrs.filters.dansguardians; import gplx.*; import gplx.xowa.* import gplx.dbs.*; class Dg_log_mgr { private Db_conn conn; - private final Dg_file_tbl tbl_file = new Dg_file_tbl(); - private final Dg_rule_tbl tbl_rule = new Dg_rule_tbl(); - private final Dg_page_score_tbl tbl_page_score = new Dg_page_score_tbl(); - private final Dg_page_rule_tbl tbl_page_rule = new Dg_page_rule_tbl(); - private final Bry_bfr tmp_bfr = Bry_bfr.reset_(16); + private final Dg_file_tbl tbl_file = new Dg_file_tbl(); + private final Dg_rule_tbl tbl_rule = new Dg_rule_tbl(); + private final Dg_page_score_tbl tbl_page_score = new Dg_page_score_tbl(); + private final Dg_page_rule_tbl tbl_page_rule = new Dg_page_rule_tbl(); + private final Bry_bfr tmp_bfr = Bry_bfr_.Reset(16); public void Init(Io_url db_url) { Db_conn_bldr_data conn_data = Db_conn_bldr.Instance.Get_or_new(db_url); conn = conn_data.Conn(); boolean created = conn_data.Created(); @@ -43,7 +43,7 @@ class Dg_log_mgr { public void Rls() {conn.Txn_end();} } class Dg_file_tbl { - private String tbl_name = "dg_file"; private final Dbmeta_fld_list flds = Dbmeta_fld_list.new_(); + private String tbl_name = "dg_file"; private final Dbmeta_fld_list flds = new Dbmeta_fld_list(); private String fld_file_id, fld_file_path, fld_rule_count; private Db_conn conn; private Db_stmt stmt_insert; public void Conn_(Db_conn new_conn, boolean created) { @@ -69,7 +69,7 @@ class Dg_file_tbl { } } class Dg_rule_tbl implements Rls_able { - private String tbl_name = "dg_rule"; private final Dbmeta_fld_list flds = Dbmeta_fld_list.new_(); + private String tbl_name = "dg_rule"; private final Dbmeta_fld_list flds = new Dbmeta_fld_list(); private String fld_file_id, fld_rule_id, fld_rule_idx, fld_rule_score, fld_rule_text; private Db_conn conn; private Db_stmt stmt_insert; public void Conn_(Db_conn new_conn, boolean created) { @@ -102,7 +102,7 @@ class Dg_rule_tbl implements Rls_able { } } class Dg_page_score_tbl implements Rls_able { - private String tbl_name = "dg_page_score"; private final Dbmeta_fld_list flds = Dbmeta_fld_list.new_(); + private String tbl_name = "dg_page_score"; private final Dbmeta_fld_list flds = new Dbmeta_fld_list(); private String fld_log_tid, fld_page_id, fld_page_ns, fld_page_ttl, fld_page_len, fld_page_score, fld_page_rule_count, fld_clude_type; private Db_conn conn; private Db_stmt stmt_insert; public void Conn_(Db_conn new_conn, boolean created) { @@ -142,7 +142,7 @@ class Dg_page_score_tbl implements Rls_able { } } class Dg_page_rule_tbl implements Rls_able { - private String tbl_name = "dg_page_rule"; private final Dbmeta_fld_list flds = Dbmeta_fld_list.new_(); + private String tbl_name = "dg_page_rule"; private final Dbmeta_fld_list flds = new Dbmeta_fld_list(); private String fld_log_tid, fld_page_id, fld_rule_id, fld_rule_score_total; private Db_conn conn; private Db_stmt stmt_insert; public void Conn_(Db_conn new_conn, boolean created) { diff --git a/400_xowa/src/gplx/xowa/bldrs/filters/dansguardians/Dg_match_mgr.java b/400_xowa/src/gplx/xowa/bldrs/filters/dansguardians/Dg_match_mgr.java index 8e7cda4af..7aae743c8 100644 --- a/400_xowa/src/gplx/xowa/bldrs/filters/dansguardians/Dg_match_mgr.java +++ b/400_xowa/src/gplx/xowa/bldrs/filters/dansguardians/Dg_match_mgr.java @@ -21,12 +21,12 @@ import gplx.xowa.langs.*; import gplx.xowa.bldrs.filters.core.*; public class Dg_match_mgr { private int score_init, score_fail; private boolean log_enabled, case_match; - private final Btrie_slim_mgr btrie = Btrie_slim_mgr.cs(); - private final Ordered_hash rules = Ordered_hash_.New_bry(); - private final Ordered_hash rule_group_hash = Ordered_hash_.New_bry(), rule_tally_hash = Ordered_hash_.New_bry(); - private final Dg_parser parser = new Dg_parser(); - private final Xob_ttl_filter_mgr ttl_filter_mgr = new Xob_ttl_filter_mgr(); - private final Dg_log_mgr log_mgr = new Dg_log_mgr(); + private final Btrie_slim_mgr btrie = Btrie_slim_mgr.cs(); + private final Ordered_hash rules = Ordered_hash_.New_bry(); + private final Ordered_hash rule_group_hash = Ordered_hash_.New_bry(), rule_tally_hash = Ordered_hash_.New_bry(); + private final Dg_parser parser = new Dg_parser(); + private final Xob_ttl_filter_mgr ttl_filter_mgr = new Xob_ttl_filter_mgr(); + private final Dg_log_mgr log_mgr = new Dg_log_mgr(); public Dg_match_mgr(Io_url root_dir, int score_init, int score_fail, boolean case_match, boolean log_enabled, Io_url log_url) { this.score_init = score_init; this.score_fail = score_fail; this.case_match = case_match; this.log_enabled = log_enabled; if (log_enabled) log_mgr.Init(log_url); @@ -132,8 +132,8 @@ public class Dg_match_mgr { } class Dg_rule_group { public Dg_rule_group(byte[] word) {this.word = word;} - public byte[] Word() {return word;} private final byte[] word; - public List_adp Rules_list() {return rules_list;} private final List_adp rules_list = List_adp_.new_(); + public byte[] Word() {return word;} private final byte[] word; + public List_adp Rules_list() {return rules_list;} private final List_adp rules_list = List_adp_.New(); public Dg_rule[] Rules_ary() { if (rules_ary == null) rules_ary = (Dg_rule[])rules_list.To_ary_and_clear(Dg_rule.class); @@ -147,8 +147,8 @@ class Dg_rule_tally { this.results_len = words.length; this.results = new int[results_len]; } - public Dg_rule Rule() {return rule;} private final Dg_rule rule; - public int[] Results() {return results;} private final int[] results; private final int results_len; + public Dg_rule Rule() {return rule;} private final Dg_rule rule; + public int[] Results() {return results;} private final int[] results; private final int results_len; public void Process(byte[] word) { Int_obj_ref idx = (Int_obj_ref)rule.Word_idx_hash().Get_by_bry(word); int idx_val = idx.Val(); diff --git a/400_xowa/src/gplx/xowa/bldrs/filters/dansguardians/Dg_match_mgr_tst.java b/400_xowa/src/gplx/xowa/bldrs/filters/dansguardians/Dg_match_mgr_tst.java index d4210a63f..93ed6d3f9 100644 --- a/400_xowa/src/gplx/xowa/bldrs/filters/dansguardians/Dg_match_mgr_tst.java +++ b/400_xowa/src/gplx/xowa/bldrs/filters/dansguardians/Dg_match_mgr_tst.java @@ -27,7 +27,7 @@ public class Dg_match_mgr_tst { } class Dg_match_mgr_fxt { private Dg_match_mgr match_mgr; - private final List_adp rule_list = List_adp_.new_(); + private final List_adp rule_list = List_adp_.New(); public void Clear() { Db_conn_bldr.Instance.Reg_default_mem(); Io_url root_dir = Io_url_.mem_dir_("mem/dg/"); diff --git a/400_xowa/src/gplx/xowa/bldrs/filters/dansguardians/Dg_parser.java b/400_xowa/src/gplx/xowa/bldrs/filters/dansguardians/Dg_parser.java index 5258e30fc..9729afc67 100644 --- a/400_xowa/src/gplx/xowa/bldrs/filters/dansguardians/Dg_parser.java +++ b/400_xowa/src/gplx/xowa/bldrs/filters/dansguardians/Dg_parser.java @@ -17,8 +17,8 @@ along with this program. If not, see . */ package gplx.xowa.bldrs.filters.dansguardians; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.filters.*; class Dg_parser { - private Gfo_usr_dlg usr_dlg = Gfo_usr_dlg_.Instance; private final Bry_bfr key_bldr = Bry_bfr.reset_(32); - private final List_adp files = List_adp_.new_(), lines = List_adp_.new_(), words = List_adp_.new_(); + private Gfo_usr_dlg usr_dlg = Gfo_usr_dlg_.Instance; private final Bry_bfr key_bldr = Bry_bfr_.Reset(32); + private final List_adp files = List_adp_.New(), lines = List_adp_.New(), words = List_adp_.New(); private int next_id = 0; public Dg_file[] Parse_dir(Io_url dir) { Io_url[] fil_urls = Io_mgr.Instance.QueryDir_args(dir).Recur_(true).ExecAsUrlAry(); diff --git a/400_xowa/src/gplx/xowa/bldrs/filters/dansguardians/Dg_parser_tst.java b/400_xowa/src/gplx/xowa/bldrs/filters/dansguardians/Dg_parser_tst.java index c31ea8802..8f9a99339 100644 --- a/400_xowa/src/gplx/xowa/bldrs/filters/dansguardians/Dg_parser_tst.java +++ b/400_xowa/src/gplx/xowa/bldrs/filters/dansguardians/Dg_parser_tst.java @@ -39,8 +39,8 @@ public class Dg_parser_tst { // } } class Dg_parser_fxt { - private final Dg_parser parser = new Dg_parser(); private final Bry_bfr bfr = Bry_bfr.reset_(32); - private final Bry_bfr tmp_bfr = Bry_bfr.reset_(16); + private final Dg_parser parser = new Dg_parser(); private final Bry_bfr bfr = Bry_bfr_.Reset(32); + private final Bry_bfr tmp_bfr = Bry_bfr_.Reset(16); public void Init() {} public Dg_rule Make_line(int score, String... words) {return new Dg_rule(-1, -1, -1, Dg_rule.Tid_rule, null, score, Dg_word.Ary_new_by_str_ary(words));} public void Test_parse_line(String str, Dg_rule expd) { diff --git a/400_xowa/src/gplx/xowa/bldrs/infos/Xob_info_session.java b/400_xowa/src/gplx/xowa/bldrs/infos/Xob_info_session.java index 345729ab4..5f6832630 100644 --- a/400_xowa/src/gplx/xowa/bldrs/infos/Xob_info_session.java +++ b/400_xowa/src/gplx/xowa/bldrs/infos/Xob_info_session.java @@ -56,6 +56,6 @@ public class Xob_info_session { , Cfg_key__time = "time" // EX: 20150102 030405 , Cfg_key__guid = "guid" // EX: 00000000-0000-0000-0000-000000000000 ; - public static Xob_info_session new_(String user, String wiki_domain, String dump_name) {return new Xob_info_session(user, Xoa_app_.Version, wiki_domain, dump_name, DateAdp_.Now(), Guid_adp_.new_());} + public static Xob_info_session new_(String user, String wiki_domain, String dump_name) {return new Xob_info_session(user, Xoa_app_.Version, wiki_domain, dump_name, DateAdp_.Now(), Guid_adp_.New());} public static final Xob_info_session Test = new_("anonymous", "en.wikipedia.org", "enwiki-latest-pages-articles"); } diff --git a/400_xowa/src/gplx/xowa/bldrs/installs/Xoi_cmd_base.java b/400_xowa/src/gplx/xowa/bldrs/installs/Xoi_cmd_base.java index 0fe6f603e..b9b0d5267 100644 --- a/400_xowa/src/gplx/xowa/bldrs/installs/Xoi_cmd_base.java +++ b/400_xowa/src/gplx/xowa/bldrs/installs/Xoi_cmd_base.java @@ -34,12 +34,12 @@ abstract class Xoi_cmd_base implements Gfo_thread_cmd { // install_mgr.App().Gui_wtr().Log_many(GRP_KEY, "import.end", "import.end ~{0} ~{1} ~{2}", wiki_key, wiki_date, dump_type); return true; } - public GfoInvkAble Owner() {return owner;} public Xoi_cmd_base Owner_(GfoInvkAble v) {owner = v; return this;} GfoInvkAble owner; + public Gfo_invk Owner() {return owner;} public Xoi_cmd_base Owner_(Gfo_invk v) {owner = v; return this;} Gfo_invk owner; public Gfo_thread_cmd Async_next_cmd() {return next_cmd;} public void Async_next_cmd_(Gfo_thread_cmd v) {next_cmd = v;} Gfo_thread_cmd next_cmd; public void Async_run() { running = true; // install_mgr.App().Gui_wtr().Log_many(GRP_KEY, "import.bgn", "import.bgn ~{0} ~{1} ~{2}", wiki_key, wiki_date, dump_type); - Thread_adp_.invk_(this.Async_key(), this, Invk_process_async).Start(); + Thread_adp_.Start_by_key(this.Async_key(), this, Invk_process_async); } public boolean Async_running() {return running;} private boolean running; public void Process_async() { @@ -66,7 +66,7 @@ abstract class Xoi_cmd_base implements Gfo_thread_cmd { public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_process_async)) Process_async(); else if (ctx.Match(k, Invk_owner)) return owner; - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String Invk_process_async = "run_async", Invk_owner = "owner"; } @@ -103,7 +103,7 @@ class Xoi_cmd_search2_build extends Xoi_cmd_base { @Override public void Process_async_init(Xoae_app app, Xowe_wiki wiki, Xob_bldr bldr) { if (app.Setup_mgr().Dump_mgr().Wiki_storage_type_is_sql()) { wiki.Db_mgr_as_sql().Category_version_update(false); - gplx.xowa.addons.apps.searchs.bldrs.Srch_bldr_mgr_.Setup(wiki); + gplx.xowa.addons.wikis.searchs.bldrs.Srch_bldr_mgr_.Setup(wiki); } } @Override public void Process_async_done(Xoae_app app, Xowe_wiki wiki, Xob_bldr bldr) { diff --git a/400_xowa/src/gplx/xowa/bldrs/installs/Xoi_cmd_imageMagick_download.java b/400_xowa/src/gplx/xowa/bldrs/installs/Xoi_cmd_imageMagick_download.java index 5fe2fd465..ec56cbda7 100644 --- a/400_xowa/src/gplx/xowa/bldrs/installs/Xoi_cmd_imageMagick_download.java +++ b/400_xowa/src/gplx/xowa/bldrs/installs/Xoi_cmd_imageMagick_download.java @@ -16,9 +16,9 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.bldrs.installs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; -import gplx.gfui.*; +import gplx.gfui.*; import gplx.gfui.kits.core.*; import gplx.core.threads.*; -class Xoi_cmd_imageMagick_download extends Gfo_thread_cmd_download implements Gfo_thread_cmd {// private static final byte[] Bry_windows_zip = Bry_.new_a7("-windows.zip"); +class Xoi_cmd_imageMagick_download extends Gfo_thread_cmd_download implements Gfo_thread_cmd {// private static final byte[] Bry_windows_zip = Bry_.new_a7("-windows.zip"); // static final String Src_imageMagick = "ftp://ftp.sunet.se/pub/multimedia/graphics/ImageMagick/binaries/"; public Xoi_cmd_imageMagick_download(Gfo_usr_dlg usr_dlg, Gfui_kit kit, Io_url trg) {this.Ctor(usr_dlg, kit); this.trg = trg;} Io_url trg; @Override public byte Async_init() { // diff --git a/400_xowa/src/gplx/xowa/bldrs/installs/Xoi_cmd_mgr.java b/400_xowa/src/gplx/xowa/bldrs/installs/Xoi_cmd_mgr.java index 48928e268..fd51cb694 100644 --- a/400_xowa/src/gplx/xowa/bldrs/installs/Xoi_cmd_mgr.java +++ b/400_xowa/src/gplx/xowa/bldrs/installs/Xoi_cmd_mgr.java @@ -17,8 +17,8 @@ along with this program. If not, see . */ package gplx.xowa.bldrs.installs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.core.brys.fmtrs.*; import gplx.core.threads.*; -public class Xoi_cmd_mgr implements GfoInvkAble { - List_adp cmds = List_adp_.new_(); +public class Xoi_cmd_mgr implements Gfo_invk { + List_adp cmds = List_adp_.New(); public Xoi_cmd_mgr(Xoi_setup_mgr install_mgr) {this.app = install_mgr.App(); this.install_mgr = install_mgr;} private Xoae_app app; Xoi_setup_mgr install_mgr; public Xoae_app App() {return app;} public void Canceled_y_() {canceled = true;} private boolean canceled = false; @@ -47,7 +47,7 @@ public class Xoi_cmd_mgr implements GfoInvkAble { else this.Working_(Bool_.N); } - private void Run_async(Gfo_thread_cmd cmd) {Thread_adp_.invk_msg_(cmd.Async_key(), this, GfoMsg_.new_cast_(Invk_process_async).Add("v", cmd)).Start();} + private void Run_async(Gfo_thread_cmd cmd) {Thread_adp_.Start_by_val(cmd.Async_key(), this, Invk_process_async, cmd);} private void Cmds_run() { if (working) { app.Gui_mgr().Kit().Ask_ok("", "", "An import is in progress. Please wait for it to complete. If you want to do multiple imports at once, see Dashboard/Import/Offline."); // HOME @@ -142,7 +142,7 @@ public class Xoi_cmd_mgr implements GfoInvkAble { else if (ctx.Match(k, Invk_dump_add_many)) return Dump_add_many(m); else if (ctx.Match(k, Invk_cmd_add)) return Cmd_add(m); else if (ctx.Match(k, Invk_run)) Cmds_run(); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String Invk_process_async = "process_async", Invk_dump_add_many = "dump_add_many", Invk_run = "run", Invk_cmd_add = "cmd_add"; static final String GRP_KEY = "xowa.install_mgr.cmd_mgr"; diff --git a/400_xowa/src/gplx/xowa/bldrs/installs/Xoi_cmd_wiki_import.java b/400_xowa/src/gplx/xowa/bldrs/installs/Xoi_cmd_wiki_import.java index 95a78ba1e..4dd7705a1 100644 --- a/400_xowa/src/gplx/xowa/bldrs/installs/Xoi_cmd_wiki_import.java +++ b/400_xowa/src/gplx/xowa/bldrs/installs/Xoi_cmd_wiki_import.java @@ -31,12 +31,12 @@ class Xoi_cmd_wiki_import implements Gfo_thread_cmd { install_mgr.App().Usr_dlg().Log_many(GRP_KEY, "import.end", "import.end ~{0} ~{1} ~{2}", wiki_key, wiki_date, dump_type); return true; } - public GfoInvkAble Owner() {return owner;} public Xoi_cmd_wiki_import Owner_(GfoInvkAble v) {owner = v; return this;} GfoInvkAble owner; + public Gfo_invk Owner() {return owner;} public Xoi_cmd_wiki_import Owner_(Gfo_invk v) {owner = v; return this;} Gfo_invk owner; public Gfo_thread_cmd Async_next_cmd() {return next_cmd;} public void Async_next_cmd_(Gfo_thread_cmd v) {next_cmd = v;} Gfo_thread_cmd next_cmd; public void Async_run() { running = true; install_mgr.App().Usr_dlg().Log_many(GRP_KEY, "import.bgn", "import.bgn ~{0} ~{1} ~{2}", wiki_key, wiki_date, dump_type); - Thread_adp_.invk_(this.Async_key(), this, Invk_process_async).Start(); + Thread_adp_.Start_by_key(this.Async_key(), this, Invk_process_async); } public boolean Async_running() { return running; @@ -64,8 +64,8 @@ class Xoi_cmd_wiki_import implements Gfo_thread_cmd { bldr.Cmd_mgr().Add_cmd(wiki, Xob_cmd_keys.Key_text_cat_core); bldr.Cmd_mgr().Add_cmd(wiki, Xob_cmd_keys.Key_text_cat_link); } - if (wiki.Appe().Setup_mgr().Dump_mgr().Search_version() == gplx.xowa.addons.apps.searchs.specials.Srch_special_page.Version_2) - gplx.xowa.addons.apps.searchs.bldrs.Srch_bldr_mgr_.Setup(wiki); + if (wiki.Appe().Setup_mgr().Dump_mgr().Search_version() == gplx.xowa.addons.wikis.searchs.specials.Srch_special_page.Version_2) + gplx.xowa.addons.wikis.searchs.bldrs.Srch_bldr_mgr_.Setup(wiki); bldr.Cmd_mgr().Add_cmd(wiki, Xob_cmd_keys.Key_text_term); } private void Process_async() { @@ -110,7 +110,7 @@ class Xoi_cmd_wiki_import implements Gfo_thread_cmd { if (ctx.Match(k, Invk_process_async)) Process_async(); else if (ctx.Match(k, Invk_owner)) return owner; else if (ctx.Match(k, Invk_open_wiki)) Open_wiki(wiki_key); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String Invk_process_async = "run_async", Invk_owner = "owner", Invk_open_wiki = "open_wiki"; static final String GRP_KEY = "xowa.thread.op.build"; diff --git a/400_xowa/src/gplx/xowa/bldrs/installs/Xoi_cmd_wiki_tst.java b/400_xowa/src/gplx/xowa/bldrs/installs/Xoi_cmd_wiki_tst.java index 9cbe966fa..79102e11e 100644 --- a/400_xowa/src/gplx/xowa/bldrs/installs/Xoi_cmd_wiki_tst.java +++ b/400_xowa/src/gplx/xowa/bldrs/installs/Xoi_cmd_wiki_tst.java @@ -23,12 +23,12 @@ import gplx.xowa.wikis.domains.*; import gplx.xowa.bldrs.wms.*; import gplx.xowa.bldrs.wms.dumps.*; public class Xoi_cmd_wiki_tst { @Test public void Run() { // MAINT - Bld_import_list(Xow_domain_regy.All); +// Bld_import_list(Xow_domain_regy.All); // Bld_cfg_files(Xow_domain_regy.All); // NOTE: remember to carry over the wikisource / page / index commands from the existing xowa_build_cfg.gfs; also, only run the xowa_build_cfg.gfs once; DATE:2013-10-15; last run: DATE:2014-09-09 } public void Bld_import_list(String... ary) { int ary_len = ary.length; - Bry_bfr bfr = Bry_bfr.reset_(255); + Bry_bfr bfr = Bry_bfr_.Reset(255); Wmf_latest_parser parser = new Wmf_latest_parser(); Bfr_arg__time time_fmtr = new Bfr_arg__time(); for (int i = 0; i < ary_len; i++) @@ -55,7 +55,7 @@ public class Xoi_cmd_wiki_tst { byte[] pages_articles_key = Bry_.new_a7(wmf_key + "-latest-pages-articles.xml.bz2"); Wmf_latest_itm latest_itm = parser.Get_by(pages_articles_key); if (latest_itm == null) {Tfds.Dbg("missing|" + domain_str + "|" + url); return;} // NOTE: commonswiki missing entry for commonswiki-latest-pages-articles.xml.bz2 DATE:2016-05-01 - Tfds.Dbg("pass|" + url); + Tfds.Dbg("pass|" + domain_str + "|" + url); bfr.Add(domain_bry).Add_byte_pipe(); bfr.Add_str_u8(dump_file.File_url()).Add_byte_pipe(); bfr.Add(Xow_domain_tid_.Get_type_as_bry(domain_itm.Domain_type_id())).Add_byte_pipe(); @@ -108,7 +108,7 @@ public class Xoi_cmd_wiki_tst { } */ public void Bld_cfg_files(String... ary) { - Bry_bfr bfr = Bry_bfr.reset_(255); + Bry_bfr bfr = Bry_bfr_.Reset(255); gplx.xowa.bldrs.wiki_cfgs.Xoi_wiki_props_api api = new gplx.xowa.bldrs.wiki_cfgs.Xoi_wiki_props_api(); gplx.xowa.bldrs.wiki_cfgs.Xoi_wiki_props_wiki wiki = new gplx.xowa.bldrs.wiki_cfgs.Xoi_wiki_props_wiki(); int ary_len = ary.length; diff --git a/400_xowa/src/gplx/xowa/bldrs/installs/Xoi_cmd_wiki_unzip.java b/400_xowa/src/gplx/xowa/bldrs/installs/Xoi_cmd_wiki_unzip.java index fa5d2981c..e22019de6 100644 --- a/400_xowa/src/gplx/xowa/bldrs/installs/Xoi_cmd_wiki_unzip.java +++ b/400_xowa/src/gplx/xowa/bldrs/installs/Xoi_cmd_wiki_unzip.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.bldrs.installs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; -import gplx.gfui.*; +import gplx.gfui.*; import gplx.gfui.kits.core.*; import gplx.core.threads.*; class Xoi_cmd_wiki_unzip extends Gfo_thread_cmd_unzip implements Gfo_thread_cmd { public static final String KEY_dump = "wiki.unzip"; public Xoi_cmd_wiki_unzip(Xoi_setup_mgr install_mgr, String wiki_key, String dump_date, String dump_type) {this.install_mgr = install_mgr; this.Owner_(install_mgr); this.wiki_key = wiki_key; this.dump_date = dump_date; this.dump_type = dump_type;} private Xoi_setup_mgr install_mgr; String wiki_key, dump_date, dump_type; diff --git a/400_xowa/src/gplx/xowa/bldrs/installs/Xoi_cmd_wiki_zip.java b/400_xowa/src/gplx/xowa/bldrs/installs/Xoi_cmd_wiki_zip.java index 1fe25328a..747ddf82f 100644 --- a/400_xowa/src/gplx/xowa/bldrs/installs/Xoi_cmd_wiki_zip.java +++ b/400_xowa/src/gplx/xowa/bldrs/installs/Xoi_cmd_wiki_zip.java @@ -20,7 +20,7 @@ import gplx.core.threads.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.utils.*; class Xoi_cmd_wiki_zip implements Gfo_thread_cmd { public Xoi_cmd_wiki_zip(Xoi_setup_mgr install_mgr, String wiki_key, String wiki_date, String dump_type) {this.install_mgr = install_mgr; this.Owner_(install_mgr); this.wiki_key = wiki_key; this.wiki_date = wiki_date; this.dump_type = dump_type;} private Xoi_setup_mgr install_mgr; String wiki_key, wiki_date, dump_type; - public static final String KEY = "wiki.zip"; + public static final String KEY = "wiki.zip"; public void Cmd_ctor() {} public String Async_key() {return KEY;} public int Async_sleep_interval() {return Gfo_thread_cmd_.Async_sleep_interval_1_second;} @@ -33,12 +33,12 @@ class Xoi_cmd_wiki_zip implements Gfo_thread_cmd { install_mgr.App().Usr_dlg().Prog_many(GRP_KEY, "zip.done", "zip done"); return true; } - public GfoInvkAble Owner() {return owner;} public Xoi_cmd_wiki_zip Owner_(GfoInvkAble v) {owner = v; return this;} GfoInvkAble owner; + public Gfo_invk Owner() {return owner;} public Xoi_cmd_wiki_zip Owner_(Gfo_invk v) {owner = v; return this;} Gfo_invk owner; public Gfo_thread_cmd Async_next_cmd() {return next_cmd;} public void Async_next_cmd_(Gfo_thread_cmd v) {next_cmd = v;} Gfo_thread_cmd next_cmd; public void Async_run() { running = true; install_mgr.App().Usr_dlg().Log_many(GRP_KEY, "zip.bgn", "zip.bgn ~{0}", wiki_key); - Thread_adp_.invk_(this.Async_key(), this, Invk_process_async).Start(); + Thread_adp_.Start_by_key(this.Async_key(), this, Invk_process_async); } public boolean Async_running() { return running; @@ -62,8 +62,8 @@ class Xoi_cmd_wiki_zip implements Gfo_thread_cmd { else if (ctx.Match(k, Invk_owner)) return owner; else if (ctx.Match(k, Invk_delete_dirs_page_)) delete_dirs_page = m.ReadYn("v"); else if (ctx.Match(k, Invk_notify_done_)) notify_done = m.ReadYn("v"); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String Invk_process_async = "run_async", Invk_owner = "owner", Invk_delete_dirs_page_ = "delete_dirs_page_", Invk_notify_done_ = "notify_done_"; - private static final String GRP_KEY = "xowa.thread.op.wiki.zip"; + private static final String GRP_KEY = "xowa.thread.op.wiki.zip"; } diff --git a/400_xowa/src/gplx/xowa/bldrs/installs/Xoi_dump_mgr.java b/400_xowa/src/gplx/xowa/bldrs/installs/Xoi_dump_mgr.java index 30197f09d..c3fe62189 100644 --- a/400_xowa/src/gplx/xowa/bldrs/installs/Xoi_dump_mgr.java +++ b/400_xowa/src/gplx/xowa/bldrs/installs/Xoi_dump_mgr.java @@ -16,12 +16,12 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.bldrs.installs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; -import gplx.core.ios.*; +import gplx.core.ios.*; import gplx.core.ios.streams.*; import gplx.xowa.bldrs.wms.dumps.*; -public class Xoi_dump_mgr implements GfoInvkAble { +public class Xoi_dump_mgr implements Gfo_invk { public String[] Server_urls() {return server_urls;} private String[] server_urls = String_.Ary(Xowm_dump_file_.Server_wmf_https, Xowm_dump_file_.Server_your_org, Xowm_dump_file_.Server_c3sl, Xowm_dump_file_.Server_masaryk); public String[] Custom_cmds() {return custom_cmds;} private String[] custom_cmds = String_.Ary(Xoi_cmd_wiki_download.Key_wiki_download, Xoi_cmd_wiki_import.KEY); - public byte Data_storage_format() {return data_storage_format;} public Xoi_dump_mgr Data_storage_format_(byte v) {data_storage_format = v; return this;} private byte data_storage_format = gplx.core.ios.Io_stream_.Tid_gzip; + public byte Data_storage_format() {return data_storage_format;} public Xoi_dump_mgr Data_storage_format_(byte v) {data_storage_format = v; return this;} private byte data_storage_format = gplx.core.ios.streams.Io_stream_.Tid_gzip; public long Db_text_max() {return db_text_max;} private long db_text_max = (long)3000 * Io_mgr.Len_mb; public long Db_categorylinks_max() {return db_categorylinks_max;} private long db_categorylinks_max = (long)3600 * Io_mgr.Len_mb; public long Db_wikidata_max() {return db_wikidata_max;} private long db_wikidata_max = (long)3600 * Io_mgr.Len_mb; @@ -31,7 +31,7 @@ public class Xoi_dump_mgr implements GfoInvkAble { public boolean Css_wiki_update() {return css_wiki_update;} private boolean css_wiki_update = true; public boolean Css_commons_download() {return css_commons_download;} private boolean css_commons_download = true; // changed from false to true; DATE:2014-10-19 public boolean Delete_xml_file() {return delete_xml_file;} private boolean delete_xml_file = true; - public byte Search_version() {return search_version;} private byte search_version = gplx.xowa.addons.apps.searchs.specials.Srch_special_page.Version_2; + public byte Search_version() {return search_version;} private byte search_version = gplx.xowa.addons.wikis.searchs.specials.Srch_special_page.Version_2; public boolean Import_bz2_by_stdout() {return import_bz2_by_stdout;} private boolean import_bz2_by_stdout = true; public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_server_urls)) return String_.Concat_with_str(",\n", server_urls); @@ -63,7 +63,7 @@ public class Xoi_dump_mgr implements GfoInvkAble { else if (ctx.Match(k, Invk_search_version_list)) return Options_search_version_list; else if (ctx.Match(k, Invk_import_bz2_by_stdout)) return Yn.To_str(import_bz2_by_stdout); else if (ctx.Match(k, Invk_import_bz2_by_stdout_)) import_bz2_by_stdout = m.ReadYn("v"); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String Invk_server_urls = "server_urls", Invk_server_urls_ = "server_urls_", Invk_custom_cmds = "custom_cmds", Invk_custom_cmds_ = "custom_cmds_" diff --git a/400_xowa/src/gplx/xowa/bldrs/installs/Xoi_mirror_parser.java b/400_xowa/src/gplx/xowa/bldrs/installs/Xoi_mirror_parser.java index 4381cc1fb..ca0729e7a 100644 --- a/400_xowa/src/gplx/xowa/bldrs/installs/Xoi_mirror_parser.java +++ b/400_xowa/src/gplx/xowa/bldrs/installs/Xoi_mirror_parser.java @@ -20,7 +20,7 @@ public class Xoi_mirror_parser { public String[] Parse(String raw_str) { if (String_.Len_eq_0(raw_str)) return String_.Ary_empty; byte[] raw = Bry_.new_u8(raw_str); - List_adp rv = List_adp_.new_(); + List_adp rv = List_adp_.New(); int pos = 0; while (true) { int bgn = Bry_find_.Find_fwd(raw, CONST_href_bgn, pos); if (bgn == Bry_find_.Not_found) break; @@ -35,7 +35,7 @@ public class Xoi_mirror_parser { rv.Add(String_.new_u8(date)); } return rv.To_str_ary(); - } static final byte[] CONST_href_bgn = Bry_.new_a7(" -1; i--) { diff --git a/400_xowa/src/gplx/xowa/bldrs/installs/Xoi_setup_mgr.java b/400_xowa/src/gplx/xowa/bldrs/installs/Xoi_setup_mgr.java index 9afd2a5d2..90a153351 100644 --- a/400_xowa/src/gplx/xowa/bldrs/installs/Xoi_setup_mgr.java +++ b/400_xowa/src/gplx/xowa/bldrs/installs/Xoi_setup_mgr.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.xowa.bldrs.installs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.gfui.*; import gplx.xowa.bldrs.setups.addons.*; import gplx.xowa.bldrs.setups.maints.*; -public class Xoi_setup_mgr implements GfoInvkAble { +public class Xoi_setup_mgr implements Gfo_invk { public Xoi_setup_mgr(Xoae_app app) { this.app = app; cmd_mgr = new Xoi_cmd_mgr(this); @@ -37,7 +37,7 @@ public class Xoi_setup_mgr implements GfoInvkAble { else if (ctx.Match(k, Invk_dumps)) return dump_mgr; else if (ctx.Match(k, Invk_addons)) return addon_mgr; else if (ctx.Match(k, Invk_maint)) return maint_mgr; - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; } static final String Invk_cmds = "cmds", Invk_dumps = "dumps", Invk_addons = "addons", Invk_maint = "maint"; static final String GRP_KEY = "xowa.setup"; diff --git a/400_xowa/src/gplx/xowa/bldrs/servers/Xob_core_server.java b/400_xowa/src/gplx/xowa/bldrs/servers/Xob_core_server.java deleted file mode 100644 index f35059025..000000000 --- a/400_xowa/src/gplx/xowa/bldrs/servers/Xob_core_server.java +++ /dev/null @@ -1,48 +0,0 @@ -/* -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.servers; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; -import gplx.xowa.bldrs.setups.maints.*; -import gplx.xowa.bldrs.servers.jobs.*; -public class Xob_core_server { - private Xob_wmf_mgr wmf_mgr; - public Xob_core_server(Xoae_app app) { - wmf_mgr = new Xob_wmf_mgr(app); - } - public void Server_init() { - // load cmds bld_all - // load cses wiki_updated,commons_updated,wikidata_update - // load jobs bld_all,en.wikipedia.org - } - public void Server_bgn() { - while (true) { - if ( wmf_mgr.Sync() // new wmf_stats -// || jar_mgr.Updated() // new jar - ) { -// RunJobs(); - } - } - /* - check wikimedia - if (change) - check jobs - run jobs - */ - } - public void Server_end() { - } -} diff --git a/400_xowa/src/gplx/xowa/bldrs/servers/Xob_wmf_mgr.java b/400_xowa/src/gplx/xowa/bldrs/servers/Xob_wmf_mgr.java deleted file mode 100644 index d2fc80bb8..000000000 --- a/400_xowa/src/gplx/xowa/bldrs/servers/Xob_wmf_mgr.java +++ /dev/null @@ -1,35 +0,0 @@ -/* -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.servers; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; -import gplx.xowa.bldrs.setups.maints.*; -public class Xob_wmf_mgr { - private Xoa_maint_mgr maint_mgr; - public Xob_wmf_mgr(Xoae_app app) { - maint_mgr = new Xoa_maint_mgr(app); - } - public int Sync_interval() {return sync_interval;} public Xob_wmf_mgr Sync_interval_(int v) {sync_interval = v; return this;} private int sync_interval = 60 * 24; // in minutes - public DateAdp Sync_previous() {return sync_previous;} public Xob_wmf_mgr Sync_previous_(DateAdp v) {sync_previous = v; return this;} private DateAdp sync_previous = DateAdp_.MinValue; - public boolean Sync() { - maint_mgr.Wmf_status_update(); - /* - download dumps - calculate times - */ - return false; - } -} diff --git a/400_xowa/src/gplx/xowa/bldrs/servers/jobs/Xob_job_itm.java b/400_xowa/src/gplx/xowa/bldrs/servers/jobs/Xob_job_itm.java deleted file mode 100644 index 85c56db7e..000000000 --- a/400_xowa/src/gplx/xowa/bldrs/servers/jobs/Xob_job_itm.java +++ /dev/null @@ -1,24 +0,0 @@ -/* -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.servers.jobs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.servers.*; -public class Xob_job_itm { - public String Key() {return key;} public Xob_job_itm Key_(String v) {key = v; return this;} private String key; - public String Owner() {return owner;} public Xob_job_itm Owner_(String v) {owner = v; return this;} private String owner; - public String Ctg() {return ctg;} public Xob_job_itm Ctg_(String v) {ctg = v; return this;} private String ctg; - public String Text() {return text;} public Xob_job_itm Text_(String v) {text = v; return this;} private String text; -} diff --git a/400_xowa/src/gplx/xowa/bldrs/setups/addons/Xoi_addon_mgr.java b/400_xowa/src/gplx/xowa/bldrs/setups/addons/Xoi_addon_mgr.java index 009c14f0a..3c0f2df4b 100644 --- a/400_xowa/src/gplx/xowa/bldrs/setups/addons/Xoi_addon_mgr.java +++ b/400_xowa/src/gplx/xowa/bldrs/setups/addons/Xoi_addon_mgr.java @@ -16,13 +16,13 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.bldrs.setups.addons; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.setups.*; -public class Xoi_addon_mgr implements GfoInvkAble { +public class Xoi_addon_mgr implements Gfo_invk { public Xoi_firefox_installer Firefox() {return firefox;} private Xoi_firefox_installer firefox = new Xoi_firefox_installer(); public void Init_by_app(Xoae_app app) { firefox.Init_by_app(app); } public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_firefox)) return firefox; - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; } private static final String Invk_firefox = "firefox"; } diff --git a/400_xowa/src/gplx/xowa/bldrs/setups/addons/Xoi_firefox_installer.java b/400_xowa/src/gplx/xowa/bldrs/setups/addons/Xoi_firefox_installer.java index d9464d972..72c638383 100644 --- a/400_xowa/src/gplx/xowa/bldrs/setups/addons/Xoi_firefox_installer.java +++ b/400_xowa/src/gplx/xowa/bldrs/setups/addons/Xoi_firefox_installer.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.xowa.bldrs.setups.addons; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.setups.*; import gplx.core.ios.zips.*; import gplx.core.envs.*; import gplx.xowa.apps.fsys.*; -public class Xoi_firefox_installer implements GfoInvkAble { +public class Xoi_firefox_installer implements Gfo_invk { private Io_url src_xpi, trg_xpi; private Io_url trg_xpi_package; private Process_adp program = new Process_adp(); @@ -59,7 +59,7 @@ public class Xoi_firefox_installer implements GfoInvkAble { public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_program)) return program; if (ctx.Match(k, Invk_install)) Install_via_process(); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String Invk_program = "program", Invk_install = "install"; } diff --git a/400_xowa/src/gplx/xowa/bldrs/setups/maints/Wmf_dump_list_parser_tst.java b/400_xowa/src/gplx/xowa/bldrs/setups/maints/Wmf_dump_list_parser_tst.java index 74ab2b5c9..38e355a06 100644 --- a/400_xowa/src/gplx/xowa/bldrs/setups/maints/Wmf_dump_list_parser_tst.java +++ b/400_xowa/src/gplx/xowa/bldrs/setups/maints/Wmf_dump_list_parser_tst.java @@ -51,8 +51,8 @@ public class Wmf_dump_list_parser_tst { // ); // Wmf_dump_itm[] itms = new Wmf_dump_list_parser().Parse(Io_mgr.Instance.LoadFilBry("C:\\xowa\\bin\\any\\xowa\\xtns\\xowa\\maintenance\\backup-index.html")); // Array_.Sort(itms); -// Bry_bfr sql_bfr = Bry_bfr.new_(); -// Bry_bfr bld_bfr = Bry_bfr.new_(); +// Bry_bfr sql_bfr = Bry_bfr_.New(); +// Bry_bfr bld_bfr = Bry_bfr_.New(); // int itms_len = itms.length; // int counter = 1; // for (int i = 0; i < itms_len; i++) { diff --git a/400_xowa/src/gplx/xowa/bldrs/setups/maints/Wmf_latest_parser.java b/400_xowa/src/gplx/xowa/bldrs/setups/maints/Wmf_latest_parser.java index 606d3d147..15801d419 100644 --- a/400_xowa/src/gplx/xowa/bldrs/setups/maints/Wmf_latest_parser.java +++ b/400_xowa/src/gplx/xowa/bldrs/setups/maints/Wmf_latest_parser.java @@ -25,7 +25,7 @@ public class Wmf_latest_parser { public Wmf_latest_itm[] To_ary() {return (Wmf_latest_itm[])hash.To_ary(Wmf_latest_itm.class);} public void Parse(byte[] src) { hash.Clear(); - Bry_bfr tmp_bfr = Bry_bfr.reset_(255); + Bry_bfr tmp_bfr = Bry_bfr_.Reset(255); byte[] name_bgn_bry = Bry_.new_a7("\n"); byte[] date_end_bry = Bry_.new_a7(" "); diff --git a/400_xowa/src/gplx/xowa/bldrs/setups/maints/Xoa_maint_mgr.java b/400_xowa/src/gplx/xowa/bldrs/setups/maints/Xoa_maint_mgr.java index 1cdb6a7d2..4357f00d3 100644 --- a/400_xowa/src/gplx/xowa/bldrs/setups/maints/Xoa_maint_mgr.java +++ b/400_xowa/src/gplx/xowa/bldrs/setups/maints/Xoa_maint_mgr.java @@ -19,7 +19,7 @@ package gplx.xowa.bldrs.setups.maints; import gplx.*; import gplx.xowa.*; import import gplx.core.ios.*; import gplx.xowa.wikis.domains.*; import gplx.xowa.files.downloads.*; -public class Xoa_maint_mgr implements GfoInvkAble { +public class Xoa_maint_mgr implements Gfo_invk { public Xoa_maint_mgr(Xoae_app app) { this.app = app; wmf_dump_status_url = Wmf_dump_status_url(app); @@ -76,7 +76,7 @@ public class Xoa_maint_mgr implements GfoInvkAble { public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_wmf_status_update)) Wmf_status_update(); else if (ctx.Match(k, Invk_wikis)) return wiki_mgr; - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String Invk_wmf_status_update = "wmf_status_update", Invk_wikis = "wikis"; public static Io_url Wmf_dump_status_url(Xoae_app app) {return app.Fsys_mgr().Bin_xowa_dir().GenSubDir_nest("xtns", "xowa", "maintenance", "backup-index.html");} diff --git a/400_xowa/src/gplx/xowa/bldrs/setups/maints/Xoa_maint_wikis_mgr.java b/400_xowa/src/gplx/xowa/bldrs/setups/maints/Xoa_maint_wikis_mgr.java index 5f4c65643..06fde34c2 100644 --- a/400_xowa/src/gplx/xowa/bldrs/setups/maints/Xoa_maint_wikis_mgr.java +++ b/400_xowa/src/gplx/xowa/bldrs/setups/maints/Xoa_maint_wikis_mgr.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.bldrs.setups.maints; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.setups.*; -public class Xoa_maint_wikis_mgr implements GfoInvkAble { +public class Xoa_maint_wikis_mgr implements Gfo_invk { private final Ordered_hash hash = Ordered_hash_.New_bry(); public Xoa_maint_wikis_mgr(Xoae_app app) {this.app = app;} private Xoae_app app; public int Len() {return hash.Count();} @@ -41,7 +41,7 @@ public class Xoa_maint_wikis_mgr implements GfoInvkAble { public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_len)) return this.Len(); else if (ctx.Match(k, Invk_get_at)) return this.Get_at(m.ReadInt("v")); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; // return this; } private static final String Invk_len = "len", Invk_get_at = "get_at"; } \ No newline at end of file diff --git a/400_xowa/src/gplx/xowa/bldrs/setups/maints/Xow_maint_mgr.java b/400_xowa/src/gplx/xowa/bldrs/setups/maints/Xow_maint_mgr.java index 981beba7f..2dffe56a7 100644 --- a/400_xowa/src/gplx/xowa/bldrs/setups/maints/Xow_maint_mgr.java +++ b/400_xowa/src/gplx/xowa/bldrs/setups/maints/Xow_maint_mgr.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.bldrs.setups.maints; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.setups.*; -public class Xow_maint_mgr implements GfoInvkAble { +public class Xow_maint_mgr implements Gfo_invk { public Xow_maint_mgr(Xowe_wiki wiki) { this.wiki = wiki; maint_mgr = wiki.Appe().Setup_mgr().Maint_mgr(); @@ -48,10 +48,10 @@ public class Xow_maint_mgr implements GfoInvkAble { else if (ctx.Match(k, Invk_wiki_dump_date_)) wiki_dump_date = m.ReadDate("v"); else if (ctx.Match(k, Invk_wiki_update_needed)) return Yn.To_str(Wiki_update_needed()); else if (ctx.Match(k, Invk_wiki_dump_date_)) wiki_dump_date = m.ReadDate("v"); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } - private static final String Invk_wmf_dump_date = "wmf_dump_date", Invk_wmf_dump_date_ = "wmf_dump_date_", Invk_wmf_dump_done = "wmf_dump_done", Invk_wmf_dump_done_ = "wmf_dump_done_" + private static final String Invk_wmf_dump_date = "wmf_dump_date", Invk_wmf_dump_date_ = "wmf_dump_date_", Invk_wmf_dump_done = "wmf_dump_done", Invk_wmf_dump_done_ = "wmf_dump_done_" , Invk_wmf_dump_status = "wmf_dump_status", Invk_wmf_dump_status_ = "wmf_dump_status_", Invk_wiki_dump_date = "wiki_dump_date", Invk_wiki_dump_date_ = "wiki_dump_date_" , Invk_wiki_update_needed = "wiki_update_needed" ; diff --git a/400_xowa/src/gplx/xowa/bldrs/sqls/Sql_file_parser.java b/400_xowa/src/gplx/xowa/bldrs/sqls/Sql_file_parser.java index 45eee19b4..a79ede8fb 100644 --- a/400_xowa/src/gplx/xowa/bldrs/sqls/Sql_file_parser.java +++ b/400_xowa/src/gplx/xowa/bldrs/sqls/Sql_file_parser.java @@ -54,8 +54,8 @@ public class Sql_file_parser { public void Parse(Gfo_usr_dlg usr_dlg) { Io_buffer_rdr rdr = Io_buffer_rdr.Null; try { - rdr = Io_buffer_rdr.new_(gplx.core.ios.Io_stream_rdr_.new_by_url_(src_fil), src_len); - Bry_bfr fil_bfr = Bry_bfr.new_(), val_bfr = Bry_bfr.new_(); + rdr = Io_buffer_rdr.new_(gplx.core.ios.streams.Io_stream_rdr_.new_by_url_(src_fil), src_len); + Bry_bfr fil_bfr = Bry_bfr_.New(), val_bfr = Bry_bfr_.New(); byte[] bfr = rdr.Bfr(); int bfr_len = rdr.Bfr_len(), fld_idx = 0, cur_pos = 0; if (flds_req != null) Identify_flds(bfr); byte mode = Mode_sql_bgn; byte[] decode_regy = sql_parser.Escape_decode(); @@ -157,6 +157,6 @@ public class Sql_file_parser { } val_bfr.Clear(); } - private static final byte[] Bry_insert_into = Bry_.new_a7("INSERT INTO "), Bry_values = Bry_.new_a7(" VALUES ("); - private static final String GRP_KEY = "xowa.bldr.sql"; + private static final byte[] Bry_insert_into = Bry_.new_a7("INSERT INTO "), Bry_values = Bry_.new_a7(" VALUES ("); + private static final String GRP_KEY = "xowa.bldr.sql"; } diff --git a/400_xowa/src/gplx/xowa/bldrs/sqls/Sql_file_parser_cmd.java b/400_xowa/src/gplx/xowa/bldrs/sqls/Sql_file_parser_cmd.java index 63e0334e2..d565c737a 100644 --- a/400_xowa/src/gplx/xowa/bldrs/sqls/Sql_file_parser_cmd.java +++ b/400_xowa/src/gplx/xowa/bldrs/sqls/Sql_file_parser_cmd.java @@ -39,5 +39,5 @@ class Sql_file_parser_cmd_max_len implements Sql_file_parser_cmd { } file_bfr.Add_mid(src, fld_bgn, fld_end).Add_byte(Byte_ascii.Pipe); } - List_adp log = List_adp_.new_(); + List_adp log = List_adp_.New(); } diff --git a/400_xowa/src/gplx/xowa/bldrs/wiki_cfgs/Xob_subpage_parser.java b/400_xowa/src/gplx/xowa/bldrs/wiki_cfgs/Xob_subpage_parser.java index abb1c8d14..c3ace2701 100644 --- a/400_xowa/src/gplx/xowa/bldrs/wiki_cfgs/Xob_subpage_parser.java +++ b/400_xowa/src/gplx/xowa/bldrs/wiki_cfgs/Xob_subpage_parser.java @@ -21,7 +21,7 @@ import gplx.langs.phps.*; import gplx.xowa.langs.bldrs.*; class Xob_subpage_parser { public Xob_subpage_wiki[] Parse(byte[] src) { src = Bry_.Add(Bry_.new_a7("$a = array("), src, Bry_.new_a7(");")); - List_adp wikis_list = List_adp_.new_(); + List_adp wikis_list = List_adp_.New(); try { Php_parser php_parser = new Php_parser(); Php_evaluator eval = new Php_evaluator(new Gfo_msg_log("test")); @@ -85,5 +85,5 @@ class Xob_subpage_ns { } class Xob_subpage_wiki { public byte[] Name() {return name;} public Xob_subpage_wiki Name_(byte[] v) {this.name = v; return this;} private byte[] name; - public List_adp Ns_list() {return ns_list;} private List_adp ns_list = List_adp_.new_(); + public List_adp Ns_list() {return ns_list;} private List_adp ns_list = List_adp_.New(); } diff --git a/400_xowa/src/gplx/xowa/bldrs/wiki_cfgs/Xoi_wiki_props_api.java b/400_xowa/src/gplx/xowa/bldrs/wiki_cfgs/Xoi_wiki_props_api.java index 6cf9e483f..fe04bd210 100644 --- a/400_xowa/src/gplx/xowa/bldrs/wiki_cfgs/Xoi_wiki_props_api.java +++ b/400_xowa/src/gplx/xowa/bldrs/wiki_cfgs/Xoi_wiki_props_api.java @@ -61,7 +61,7 @@ public class Xoi_wiki_props_api { } private Xoi_wiki_props_alias[] Parse_alias_ary(XmlNde xnde) { int xndes_len = xnde.SubNdes().Count(); - List_adp list = List_adp_.new_(); + List_adp list = List_adp_.New(); for (int i = 0; i < xndes_len; i++) { XmlNde sub_nde = xnde.SubNdes().Get_at(i); if (!String_.Eq(sub_nde.Name(), "ns")) continue; @@ -73,7 +73,7 @@ public class Xoi_wiki_props_api { } private Xoi_wiki_props_ns[] Parse_ns_ary(XmlNde xnde) { int xndes_len = xnde.SubNdes().Count(); - List_adp list = List_adp_.new_(); + List_adp list = List_adp_.New(); for (int i = 0; i < xndes_len; i++) { XmlNde sub_nde = xnde.SubNdes().Get_at(i); if (!String_.Eq(sub_nde.Name(), "ns")) continue; diff --git a/400_xowa/src/gplx/xowa/bldrs/wiki_cfgs/Xoi_wiki_props_api_tst.java b/400_xowa/src/gplx/xowa/bldrs/wiki_cfgs/Xoi_wiki_props_api_tst.java index ac88867d0..190342e1e 100644 --- a/400_xowa/src/gplx/xowa/bldrs/wiki_cfgs/Xoi_wiki_props_api_tst.java +++ b/400_xowa/src/gplx/xowa/bldrs/wiki_cfgs/Xoi_wiki_props_api_tst.java @@ -63,7 +63,7 @@ public class Xoi_wiki_props_api_tst { } class Xoi_wiki_props_fxt { private Xoi_wiki_props_api api = new Xoi_wiki_props_api(); - private Bry_bfr bfr = Bry_bfr.new_(); + private Bry_bfr bfr = Bry_bfr_.New(); public Xoi_wiki_props_wiki wiki_() {return wiki_("domain_doesnt_matter");} public Xoi_wiki_props_wiki wiki_(String wiki_domain) {return new Xoi_wiki_props_wiki().Wiki_domain_(Bry_.new_a7(wiki_domain));} public Xoi_wiki_props_alias alias_(int id, String alias) {return new Xoi_wiki_props_alias().Init_by_ctor(id, alias);} diff --git a/400_xowa/src/gplx/xowa/bldrs/wkrs/Xob_cmd.java b/400_xowa/src/gplx/xowa/bldrs/wkrs/Xob_cmd.java index 26ce79875..e84c5e436 100644 --- a/400_xowa/src/gplx/xowa/bldrs/wkrs/Xob_cmd.java +++ b/400_xowa/src/gplx/xowa/bldrs/wkrs/Xob_cmd.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.bldrs.wkrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; -public interface Xob_cmd extends GfoInvkAble { +public interface Xob_cmd extends Gfo_invk { String Cmd_key(); Xob_cmd Cmd_clone(Xob_bldr bldr, Xowe_wiki wiki); void Cmd_init(Xob_bldr bldr); diff --git a/400_xowa/src/gplx/xowa/bldrs/wkrs/Xob_cmd__base.java b/400_xowa/src/gplx/xowa/bldrs/wkrs/Xob_cmd__base.java index a55eac7cd..e460c4c14 100644 --- a/400_xowa/src/gplx/xowa/bldrs/wkrs/Xob_cmd__base.java +++ b/400_xowa/src/gplx/xowa/bldrs/wkrs/Xob_cmd__base.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.bldrs.wkrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; -public abstract class Xob_cmd__base implements Xob_cmd, GfoInvkAble { +public abstract class Xob_cmd__base implements Xob_cmd, Gfo_invk { protected final Xoae_app app; protected final Xob_bldr bldr; protected Xowe_wiki wiki; protected final Gfo_usr_dlg usr_dlg; public Xob_cmd__base(Xob_bldr bldr, Xowe_wiki wiki) { this.bldr = bldr; @@ -31,5 +31,5 @@ public abstract class Xob_cmd__base implements Xob_cmd, GfoInvkAble { @gplx.Virtual public void Cmd_bgn(Xob_bldr bldr) {} @gplx.Virtual public void Cmd_end() {} @gplx.Virtual public void Cmd_term() {} - @gplx.Virtual public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {return GfoInvkAble_.Rv_unhandled;} + @gplx.Virtual public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {return Gfo_invk_.Rv_unhandled;} } diff --git a/400_xowa/src/gplx/xowa/bldrs/wkrs/Xob_cmd_base.java b/400_xowa/src/gplx/xowa/bldrs/wkrs/Xob_cmd_base.java index 79ccd2cd7..6f9455c36 100644 --- a/400_xowa/src/gplx/xowa/bldrs/wkrs/Xob_cmd_base.java +++ b/400_xowa/src/gplx/xowa/bldrs/wkrs/Xob_cmd_base.java @@ -24,5 +24,5 @@ public abstract class Xob_cmd_base implements Xob_cmd { @gplx.Virtual public void Cmd_run() {} @gplx.Virtual public void Cmd_end() {} @gplx.Virtual public void Cmd_term() {} - @gplx.Virtual public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {return GfoInvkAble_.Rv_unhandled;} + @gplx.Virtual public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {return Gfo_invk_.Rv_unhandled;} } diff --git a/400_xowa/src/gplx/xowa/bldrs/wkrs/Xob_idx_base.java b/400_xowa/src/gplx/xowa/bldrs/wkrs/Xob_idx_base.java index 126d8f184..1e6cc085c 100644 --- a/400_xowa/src/gplx/xowa/bldrs/wkrs/Xob_idx_base.java +++ b/400_xowa/src/gplx/xowa/bldrs/wkrs/Xob_idx_base.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.bldrs.wkrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.core.flds.*; import gplx.core.ios.*; -public abstract class Xob_idx_base extends Xob_itm_basic_base implements Xob_cmd, GfoInvkAble { +public abstract class Xob_idx_base extends Xob_itm_basic_base implements Xob_cmd, Gfo_invk { public abstract String Cmd_key(); public Gfo_fld_wtr Fld_wtr() {return fld_wtr;} Gfo_fld_wtr fld_wtr = Gfo_fld_wtr.xowa_(); public Gfo_fld_rdr Fld_rdr() {return fld_rdr;} Gfo_fld_rdr fld_rdr = Gfo_fld_rdr.xowa_(); diff --git a/400_xowa/src/gplx/xowa/bldrs/wkrs/Xob_itm_basic_base.java b/400_xowa/src/gplx/xowa/bldrs/wkrs/Xob_itm_basic_base.java index d4a1d1466..c6c8525ad 100644 --- a/400_xowa/src/gplx/xowa/bldrs/wkrs/Xob_itm_basic_base.java +++ b/400_xowa/src/gplx/xowa/bldrs/wkrs/Xob_itm_basic_base.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.bldrs.wkrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; -public abstract class Xob_itm_basic_base implements GfoInvkAble { +public abstract class Xob_itm_basic_base implements Gfo_invk { protected Xoae_app app; protected Xob_bldr bldr; protected Xowe_wiki wiki; protected Gfo_usr_dlg usr_dlg; public void Cmd_ctor(Xob_bldr bldr, Xowe_wiki wiki) { this.bldr = bldr; @@ -30,6 +30,6 @@ public abstract class Xob_itm_basic_base implements GfoInvkAble { @gplx.Virtual protected void Cmd_ctor_end(Xob_bldr bldr, Xowe_wiki wiki) {} @gplx.Virtual public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_owner)) return bldr.Cmd_mgr(); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; } private static final String Invk_owner = "owner"; } diff --git a/400_xowa/src/gplx/xowa/bldrs/wkrs/Xob_itm_dump_base.java b/400_xowa/src/gplx/xowa/bldrs/wkrs/Xob_itm_dump_base.java index 8965d8928..f1282a184 100644 --- a/400_xowa/src/gplx/xowa/bldrs/wkrs/Xob_itm_dump_base.java +++ b/400_xowa/src/gplx/xowa/bldrs/wkrs/Xob_itm_dump_base.java @@ -31,7 +31,7 @@ public abstract class Xob_itm_dump_base extends Xob_itm_basic_base { if (sort_mem_len == Int_.Neg1) sort_mem_len = bldr.Sort_mem_len(); if (dump_fil_len == Int_.Neg1) dump_fil_len = bldr.Dump_fil_len(); if (make_fil_len == Int_.Neg1) make_fil_len = bldr.Make_fil_len(); - dump_bfr = Bry_bfr.new_(dump_fil_len); + dump_bfr = Bry_bfr_.New_w_size(dump_fil_len); temp_dir = wiki.Fsys_mgr().Tmp_dir().GenSubDir(tmp_dir_key); if (make_dir_val == null) make_dir = temp_dir.GenSubDir("make"); else make_dir = make_dir_val; diff --git a/400_xowa/src/gplx/xowa/bldrs/wkrs/Xob_page_wkr.java b/400_xowa/src/gplx/xowa/bldrs/wkrs/Xob_page_wkr.java index 57c869eaf..da6a526e8 100644 --- a/400_xowa/src/gplx/xowa/bldrs/wkrs/Xob_page_wkr.java +++ b/400_xowa/src/gplx/xowa/bldrs/wkrs/Xob_page_wkr.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.bldrs.wkrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; -public interface Xob_page_wkr extends GfoInvkAble { +public interface Xob_page_wkr extends Gfo_invk { String Page_wkr__key(); void Page_wkr__bgn(); void Page_wkr__run(gplx.xowa.wikis.data.tbls.Xowd_page_itm page); diff --git a/400_xowa/src/gplx/xowa/bldrs/wkrs/Xob_sql_dump_base.java b/400_xowa/src/gplx/xowa/bldrs/wkrs/Xob_sql_dump_base.java index fccecb9d6..5159f53f5 100644 --- a/400_xowa/src/gplx/xowa/bldrs/wkrs/Xob_sql_dump_base.java +++ b/400_xowa/src/gplx/xowa/bldrs/wkrs/Xob_sql_dump_base.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.xowa.bldrs.wkrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.core.flds.*; import gplx.core.ios.*; import gplx.xowa.wikis.tdbs.*; import gplx.xowa.bldrs.sqls.*; import gplx.xowa.wikis.tdbs.bldrs.*; -public abstract class Xob_sql_dump_base extends Xob_itm_dump_base implements Xob_cmd, GfoInvkAble { +public abstract class Xob_sql_dump_base extends Xob_itm_dump_base implements Xob_cmd, Gfo_invk { private final Sql_file_parser parser = new Sql_file_parser(); protected boolean fail = false; public abstract String Cmd_key(); public Io_url Src_fil() {return src_fil;} private Io_url src_fil; diff --git a/400_xowa/src/gplx/xowa/bldrs/wms/Xoa_wmf_mgr.java b/400_xowa/src/gplx/xowa/bldrs/wms/Xoa_wmf_mgr.java index 092e055cf..9eda882d3 100644 --- a/400_xowa/src/gplx/xowa/bldrs/wms/Xoa_wmf_mgr.java +++ b/400_xowa/src/gplx/xowa/bldrs/wms/Xoa_wmf_mgr.java @@ -17,8 +17,8 @@ along with this program. If not, see . */ package gplx.xowa.bldrs.wms; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wms.apis.*; import gplx.xowa.wikis.*; -public class Xoa_wmf_mgr implements GfoInvkAble { - private final Xoae_wiki_mgr wiki_mgr; +public class Xoa_wmf_mgr implements Gfo_invk { + private final Xoae_wiki_mgr wiki_mgr; public Xoa_wmf_mgr(Gfo_usr_dlg usr_dlg, Xoae_wiki_mgr wiki_mgr) { this.wiki_mgr = wiki_mgr; } @@ -34,7 +34,7 @@ public class Xoa_wmf_mgr implements GfoInvkAble { public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_enabled)) return Yn.To_str(enabled); else if (ctx.Match(k, Invk_enabled_)) Enabled_(m.ReadYn("v")); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; - } private static final String Invk_enabled = "enabled", Invk_enabled_ = "enabled_"; + } private static final String Invk_enabled = "enabled", Invk_enabled_ = "enabled_"; } diff --git a/400_xowa/src/gplx/xowa/bldrs/wms/apis/Xoapi_orig_wmf.java b/400_xowa/src/gplx/xowa/bldrs/wms/apis/Xoapi_orig_wmf.java index 4ea45ab02..463daa5c5 100644 --- a/400_xowa/src/gplx/xowa/bldrs/wms/apis/Xoapi_orig_wmf.java +++ b/400_xowa/src/gplx/xowa/bldrs/wms/apis/Xoapi_orig_wmf.java @@ -82,8 +82,8 @@ public class Xoapi_orig_wmf extends Xoapi_orig_base { } } private static Gfo_url_encoder tmp_encoder = Gfo_url_encoder_.New__http_url().Init__diff__one(Byte_ascii.Space, Byte_ascii.Underline).Make(); - private static final Bry_bfr tmp_bfr = Bry_bfr.new_(); - private static final byte[] + private static final Bry_bfr tmp_bfr = Bry_bfr_.New(); + private static final byte[] Bry_api = Bry_.new_a7("/w/api.php?action=query&format=xml&prop=imageinfo&iiprop=size|url&redirects&titles=File:") // NOTE: using File b/c it should be canonical , Bry_width = Bry_.new_a7("&iiurlwidth=") , Bry_height = Bry_.new_a7("&iiurlheight=") diff --git a/400_xowa/src/gplx/xowa/bldrs/wms/dump_pages/Xowmf_wiki_dump_dirs_parser.java b/400_xowa/src/gplx/xowa/bldrs/wms/dump_pages/Xowmf_wiki_dump_dirs_parser.java index 18e886afb..ffc6c20b5 100644 --- a/400_xowa/src/gplx/xowa/bldrs/wms/dump_pages/Xowmf_wiki_dump_dirs_parser.java +++ b/400_xowa/src/gplx/xowa/bldrs/wms/dump_pages/Xowmf_wiki_dump_dirs_parser.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.xowa.bldrs.wms.dump_pages; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wms.*; public class Xowmf_wiki_dump_dirs_parser { public static String[] Parse(byte[] wiki, byte[] src) { - List_adp rv = List_adp_.new_(); + List_adp rv = List_adp_.New(); int pos = 0; while (true) { int href_bgn = Bry_find_.Move_fwd(src, Tkn_href , pos); if (href_bgn == Bry_find_.Not_found) break; @@ -31,5 +31,5 @@ public class Xowmf_wiki_dump_dirs_parser { } return (String[])rv.To_ary_and_clear(String.class); } - private static final byte[] Tkn_href = Bry_.new_a7(" href=\""), Tkn_owner = Bry_.new_a7(".."); + private static final byte[] Tkn_href = Bry_.new_a7(" href=\""), Tkn_owner = Bry_.new_a7(".."); } diff --git a/400_xowa/src/gplx/xowa/bldrs/wms/revs/Xowm_rev_sync.java b/400_xowa/src/gplx/xowa/bldrs/wms/revs/Xowm_rev_sync.java index 2277e4573..a7992d2da 100644 --- a/400_xowa/src/gplx/xowa/bldrs/wms/revs/Xowm_rev_sync.java +++ b/400_xowa/src/gplx/xowa/bldrs/wms/revs/Xowm_rev_sync.java @@ -18,8 +18,8 @@ along with this program. If not, see . package gplx.xowa.bldrs.wms.revs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wms.*; import gplx.xowa.bldrs.wms.*; class Xowm_rev_sync { - private final Ordered_hash cur_hash = Ordered_hash_.New_bry(), new_hash = Ordered_hash_.New_bry(); - private final List_adp del_list = List_adp_.new_(); + private final Ordered_hash cur_hash = Ordered_hash_.New_bry(), new_hash = Ordered_hash_.New_bry(); + private final List_adp del_list = List_adp_.New(); public int Batch_size() {return batch_size;} public void Batch_size_(int v) {batch_size = v;} private int batch_size = 50; public Xowm_rev_wkr__meta Wkr__cur_meta() {return wkr__cur_meta;} private Xowm_rev_wkr__meta wkr__cur_meta; public Xowm_rev_wkr__meta Wkr__new_meta() {return wkr__new_meta;} private Xowm_rev_wkr__meta wkr__new_meta; diff --git a/400_xowa/src/gplx/xowa/bldrs/wms/revs/Xowm_rev_wkr__meta__wm.java b/400_xowa/src/gplx/xowa/bldrs/wms/revs/Xowm_rev_wkr__meta__wm.java index cbf7e6d7d..bf8354b0d 100644 --- a/400_xowa/src/gplx/xowa/bldrs/wms/revs/Xowm_rev_wkr__meta__wm.java +++ b/400_xowa/src/gplx/xowa/bldrs/wms/revs/Xowm_rev_wkr__meta__wm.java @@ -18,10 +18,10 @@ along with this program. If not, see . package gplx.xowa.bldrs.wms.revs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wms.*; import gplx.langs.jsons.*; import gplx.core.net.*; class Xowm_rev_wkr__meta__wm implements Xowm_rev_wkr__meta { - private final Json_parser json_parser = new Json_parser(); - private final Xowm_json_parser__page json_page_parser = new Xowm_json_parser__page(); - private final Bry_bfr tmp_bfr = Bry_bfr.new_(255); - private final Wmapi_itm__pge tmp_pge = new Wmapi_itm__pge(); + private final Json_parser json_parser = new Json_parser(); + private final Xowm_json_parser__page json_page_parser = new Xowm_json_parser__page(); + private final Bry_bfr tmp_bfr = Bry_bfr_.New_w_size(255); + private final Wmapi_itm__pge tmp_pge = new Wmapi_itm__pge(); public Xowm_rev_wkr__meta__wm() { tmp_pge.Rvn_ary_(new Wmapi_itm__rvn()); } @@ -51,5 +51,5 @@ class Xowm_rev_wkr__meta__wm implements Xowm_rev_wkr__meta { hash_itm.Rvn_ary_(new Wmapi_itm__rvn()); hash_itm.Rvn_itm_last().Init(tmp_rvn.Rvn_id(), tmp_rvn.Rvn_len(), tmp_rvn.Rvn_time(), tmp_rvn.Rvn_user(), tmp_rvn.Rvn_note()); } - private static final byte[][] Jpath__query_pages = Bry_.Ary("query", "pages"); + private static final byte[][] Jpath__query_pages = Bry_.Ary("query", "pages"); } diff --git a/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_core_tbl.java b/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_core_tbl.java index f5cb4bc0f..6e91d82ca 100644 --- a/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_core_tbl.java +++ b/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_core_tbl.java @@ -18,9 +18,9 @@ along with this program. If not, see . package gplx.xowa.bldrs.wms.sites; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wms.*; import gplx.dbs.*; public class Site_core_tbl implements Db_tbl { - private static final String tbl_name = "site_core"; private final Dbmeta_fld_list flds = new Dbmeta_fld_list(); - private final String fld_site_abrv, fld_site_domain, fld_json_completed, fld_json_date, fld_json_text; - private final Db_conn conn; + private final Dbmeta_fld_list flds = new Dbmeta_fld_list(); + private final String fld_site_abrv, fld_site_domain, fld_json_completed, fld_json_date, fld_json_text; + private final Db_conn conn; private Db_stmt stmt_select, stmt_insert, stmt_delete, stmt_update; public Site_core_tbl(Db_conn conn) { this.conn = conn; @@ -32,6 +32,7 @@ public class Site_core_tbl implements Db_tbl { conn.Rls_reg(this); } public Db_conn Conn() {return conn;} + public String Tbl_name() {return tbl_name;} private static final String tbl_name = "site_core"; public void Create_tbl() {conn.Meta_tbl_create(Dbmeta_tbl_itm.New(tbl_name, flds, Dbmeta_idx_itm.new_unique_by_name(tbl_name, Dbmeta_idx_itm.Bld_idx_name(tbl_name, "main"), fld_site_abrv)));} public void Rls() { stmt_select = Db_stmt_.Rls(stmt_select); @@ -69,7 +70,7 @@ public class Site_core_tbl implements Db_tbl { finally {rdr.Rls();} } public Site_core_itm[] Select_all_downloaded(DateAdp cutoff) { - List_adp list = List_adp_.new_(); + List_adp list = List_adp_.New(); Db_rdr rdr = conn.Stmt_select(tbl_name, flds).Clear().Exec_select__rls_auto(); try { while (rdr.Move_next()) { diff --git a/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_extension_tbl.java b/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_extension_tbl.java index 056e6a6eb..8196b08d6 100644 --- a/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_extension_tbl.java +++ b/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_extension_tbl.java @@ -18,10 +18,10 @@ along with this program. If not, see . package gplx.xowa.bldrs.wms.sites; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wms.*; import gplx.dbs.*; class Site_extension_tbl implements Db_tbl { - private static final String tbl_name = "site_extension"; private final Dbmeta_fld_list flds = new Dbmeta_fld_list(); - private final String fld_site_abrv, fld_type, fld_name, fld_namemsg, fld_description, fld_descriptionmsg, fld_author, fld_url, fld_version + private final Dbmeta_fld_list flds = new Dbmeta_fld_list(); + private final String fld_site_abrv, fld_type, fld_name, fld_namemsg, fld_description, fld_descriptionmsg, fld_author, fld_url, fld_version , fld_vcs_system, fld_vcs_version, fld_vcs_url, fld_vcs_date, fld_license_name, fld_license, fld_credits; - private final Db_conn conn; + private final Db_conn conn; private Db_stmt stmt_select, stmt_insert, stmt_delete; public Site_extension_tbl(Db_conn conn) { this.conn = conn; @@ -43,6 +43,7 @@ class Site_extension_tbl implements Db_tbl { this.fld_credits = flds.Add_str("credits", 255); conn.Rls_reg(this); } + public String Tbl_name() {return tbl_name;} private static final String tbl_name = "site_extension"; public void Create_tbl() {conn.Meta_tbl_create(Dbmeta_tbl_itm.New(tbl_name, flds, Dbmeta_idx_itm.new_unique_by_name(tbl_name, Dbmeta_idx_itm.Bld_idx_name(tbl_name, "main"), fld_site_abrv, fld_type, fld_name)));} public void Delete_all() {conn.Stmt_delete(tbl_name, Dbmeta_fld_itm.Str_ary_empty).Exec_delete();} public void Rls() { diff --git a/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_interwikimap_tbl.java b/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_interwikimap_tbl.java index efec497f8..cbe6928ac 100644 --- a/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_interwikimap_tbl.java +++ b/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_interwikimap_tbl.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.xowa.bldrs.wms.sites; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wms.*; import gplx.dbs.*; class Site_interwikimap_tbl implements Db_tbl { - private static final String tbl_name = "site_interwikimap"; private final Dbmeta_fld_list flds = new Dbmeta_fld_list(); + private final Dbmeta_fld_list flds = new Dbmeta_fld_list(); private final String fld_site_abrv, fld_prefix, fld_local, fld_extralanglink, fld_linktext, fld_sitename, fld_language, fld_localinterwiki, fld_url, fld_protorel; private final Db_conn conn; private Db_stmt stmt_select, stmt_insert, stmt_delete; @@ -36,6 +36,7 @@ class Site_interwikimap_tbl implements Db_tbl { this.fld_protorel = flds.Add_bool("protorel"); conn.Rls_reg(this); } + public String Tbl_name() {return tbl_name;} private static final String tbl_name = "site_interwikimap"; public void Create_tbl() {conn.Meta_tbl_create(Dbmeta_tbl_itm.New(tbl_name, flds, Dbmeta_idx_itm.new_unique_by_name(tbl_name, Dbmeta_idx_itm.Bld_idx_name(tbl_name, "main"), fld_site_abrv, fld_prefix)));} public void Delete_all() {conn.Stmt_delete(tbl_name, Dbmeta_fld_itm.Str_ary_empty).Exec_delete();} public void Rls() { diff --git a/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_kv_tbl.java b/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_kv_tbl.java index a8d9038e6..c5cd83bcf 100644 --- a/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_kv_tbl.java +++ b/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_kv_tbl.java @@ -18,9 +18,9 @@ along with this program. If not, see . package gplx.xowa.bldrs.wms.sites; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wms.*; import gplx.dbs.*; class Site_kv_tbl implements Db_tbl { - private String tbl_name; private final Dbmeta_fld_list flds = new Dbmeta_fld_list(); - private final String fld_site_abrv, fld_key, fld_val; - private final Db_conn conn; + private final Dbmeta_fld_list flds = new Dbmeta_fld_list(); + private final String fld_site_abrv, fld_key, fld_val; + private final Db_conn conn; private Db_stmt stmt_select, stmt_insert, stmt_delete; public Site_kv_tbl(Db_conn conn, String tbl_name) { this.conn = conn; this.tbl_name = tbl_name; @@ -29,6 +29,7 @@ class Site_kv_tbl implements Db_tbl { this.fld_val = flds.Add_str("val", 255); conn.Rls_reg(this); } + public String Tbl_name() {return tbl_name;} private final String tbl_name; public void Create_tbl() {conn.Meta_tbl_create(Dbmeta_tbl_itm.New(tbl_name, flds, Dbmeta_idx_itm.new_unique_by_name(tbl_name, Dbmeta_idx_itm.Bld_idx_name(tbl_name, "main"), fld_site_abrv, fld_key)));} public void Delete_all() {conn.Stmt_delete(tbl_name, Dbmeta_fld_itm.Str_ary_empty).Exec_delete();} public void Rls() { diff --git a/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_language_tbl.java b/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_language_tbl.java index 276531890..7b795ffe5 100644 --- a/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_language_tbl.java +++ b/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_language_tbl.java @@ -18,9 +18,9 @@ along with this program. If not, see . package gplx.xowa.bldrs.wms.sites; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wms.*; import gplx.dbs.*; class Site_language_tbl implements Db_tbl { - private static final String tbl_name = "site_language"; private final Dbmeta_fld_list flds = new Dbmeta_fld_list(); - private final String fld_site_abrv, fld_code, fld_name; - private final Db_conn conn; + private final Dbmeta_fld_list flds = new Dbmeta_fld_list(); + private final String fld_site_abrv, fld_code, fld_name; + private final Db_conn conn; private Db_stmt stmt_select, stmt_insert, stmt_delete; public Site_language_tbl(Db_conn conn) { this.conn = conn; @@ -29,6 +29,7 @@ class Site_language_tbl implements Db_tbl { this.fld_name = flds.Add_str("name", 255); conn.Rls_reg(this); } + public String Tbl_name() {return tbl_name;} private static final String tbl_name = "site_language"; public void Create_tbl() {conn.Meta_tbl_create(Dbmeta_tbl_itm.New(tbl_name, flds, Dbmeta_idx_itm.new_unique_by_name(tbl_name, Dbmeta_idx_itm.Bld_idx_name(tbl_name, "main"), fld_site_abrv, fld_code)));} public void Delete_all() {conn.Stmt_delete(tbl_name, Dbmeta_fld_itm.Str_ary_empty).Exec_delete();} public void Rls() { diff --git a/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_library_tbl.java b/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_library_tbl.java index 9376b5975..5f6242877 100644 --- a/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_library_tbl.java +++ b/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_library_tbl.java @@ -18,9 +18,9 @@ along with this program. If not, see . package gplx.xowa.bldrs.wms.sites; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wms.*; import gplx.dbs.*; class Site_library_tbl implements Db_tbl { - private static final String tbl_name = "site_library"; private final Dbmeta_fld_list flds = new Dbmeta_fld_list(); - private final String fld_site_abrv, fld_name, fld_version; - private final Db_conn conn; + private final Dbmeta_fld_list flds = new Dbmeta_fld_list(); + private final String fld_site_abrv, fld_name, fld_version; + private final Db_conn conn; private Db_stmt stmt_select, stmt_insert, stmt_delete; public Site_library_tbl(Db_conn conn) { this.conn = conn; @@ -29,6 +29,7 @@ class Site_library_tbl implements Db_tbl { this.fld_version = flds.Add_str("version", 255); conn.Rls_reg(this); } + public String Tbl_name() {return tbl_name;} private static final String tbl_name = "site_library"; public void Create_tbl() {conn.Meta_tbl_create(Dbmeta_tbl_itm.New(tbl_name, flds, Dbmeta_idx_itm.new_unique_by_name(tbl_name, Dbmeta_idx_itm.Bld_idx_name(tbl_name, "main"), fld_site_abrv, fld_name)));} public void Delete_all() {conn.Stmt_delete(tbl_name, Dbmeta_fld_itm.Str_ary_empty).Exec_delete();} public void Rls() { diff --git a/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_magicword_tbl.java b/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_magicword_tbl.java index da47c2619..34ae84af8 100644 --- a/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_magicword_tbl.java +++ b/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_magicword_tbl.java @@ -18,9 +18,9 @@ along with this program. If not, see . package gplx.xowa.bldrs.wms.sites; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wms.*; import gplx.dbs.*; class Site_magicword_tbl implements Db_tbl { - private static final String tbl_name = "site_magicword"; private final Dbmeta_fld_list flds = new Dbmeta_fld_list(); - private final String fld_site_abrv, fld_name, fld_case_match, fld_aliases; - private final Db_conn conn; + private final Dbmeta_fld_list flds = new Dbmeta_fld_list(); + private final String fld_site_abrv, fld_name, fld_case_match, fld_aliases; + private final Db_conn conn; private Db_stmt stmt_select, stmt_insert, stmt_delete; public Site_magicword_tbl(Db_conn conn) { this.conn = conn; @@ -30,6 +30,7 @@ class Site_magicword_tbl implements Db_tbl { this.fld_aliases = flds.Add_str("aliases", 2048); conn.Rls_reg(this); } + public String Tbl_name() {return tbl_name;} private static final String tbl_name = "site_magicword"; public void Create_tbl() {conn.Meta_tbl_create(Dbmeta_tbl_itm.New(tbl_name, flds, Dbmeta_idx_itm.new_unique_by_name(tbl_name, Dbmeta_idx_itm.Bld_idx_name(tbl_name, "main"), fld_site_abrv, fld_name)));} public void Delete_all() {conn.Stmt_delete(tbl_name, Dbmeta_fld_itm.Str_ary_empty).Exec_delete();} public void Rls() { diff --git a/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_meta_itm.java b/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_meta_itm.java index 3c4f21308..432b1bfc3 100644 --- a/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_meta_itm.java +++ b/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_meta_itm.java @@ -17,22 +17,22 @@ along with this program. If not, see . */ package gplx.xowa.bldrs.wms.sites; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wms.*; public class Site_meta_itm { - public Ordered_hash General_list() {return general_list;} private final Ordered_hash general_list = Ordered_hash_.New_bry(); - public Ordered_hash Namespace_list() {return namespace_list;} private final Ordered_hash namespace_list = Ordered_hash_.New(); - public Site_statistic_itm Statistic_itm() {return statistic_itm;} private final Site_statistic_itm statistic_itm = new Site_statistic_itm(); - public Ordered_hash Interwikimap_list() {return interwikimap_list;} private final Ordered_hash interwikimap_list = Ordered_hash_.New_bry(); - public List_adp Namespacealias_list() {return namespacealias_list;} private final List_adp namespacealias_list = List_adp_.new_(); - public Ordered_hash Specialpagealias_list() {return specialpagealias_list;} private final Ordered_hash specialpagealias_list = Ordered_hash_.New_bry(); - public Ordered_hash Library_list() {return library_list;} private final Ordered_hash library_list = Ordered_hash_.New_bry(); - public Ordered_hash Extension_list() {return extension_list;} private final Ordered_hash extension_list = Ordered_hash_.New_bry(); - public Ordered_hash Skin_list() {return skin_list;} private final Ordered_hash skin_list = Ordered_hash_.New_bry(); - public Ordered_hash Magicword_list() {return magicword_list;} private final Ordered_hash magicword_list = Ordered_hash_.New_bry(); - public Ordered_hash Functionhook_list() {return functionhook_list;} private final Ordered_hash functionhook_list = Ordered_hash_.New_bry(); - public Ordered_hash Showhook_list() {return showhook_list;} private final Ordered_hash showhook_list = Ordered_hash_.New_bry(); - public Ordered_hash Extensiontag_list() {return extensiontag_list;} private final Ordered_hash extensiontag_list = Ordered_hash_.New_bry(); - public Ordered_hash Protocol_list() {return protocol_list;} private final Ordered_hash protocol_list = Ordered_hash_.New_bry(); - public Ordered_hash Defaultoption_list() {return defaultoption_list;} private final Ordered_hash defaultoption_list = Ordered_hash_.New(); - public Ordered_hash Language_list() {return language_list;} private final Ordered_hash language_list = Ordered_hash_.New_bry(); + public Ordered_hash General_list() {return general_list;} private final Ordered_hash general_list = Ordered_hash_.New_bry(); + public Ordered_hash Namespace_list() {return namespace_list;} private final Ordered_hash namespace_list = Ordered_hash_.New(); + public Site_statistic_itm Statistic_itm() {return statistic_itm;} private final Site_statistic_itm statistic_itm = new Site_statistic_itm(); + public Ordered_hash Interwikimap_list() {return interwikimap_list;} private final Ordered_hash interwikimap_list = Ordered_hash_.New_bry(); + public List_adp Namespacealias_list() {return namespacealias_list;} private final List_adp namespacealias_list = List_adp_.New(); + public Ordered_hash Specialpagealias_list() {return specialpagealias_list;} private final Ordered_hash specialpagealias_list = Ordered_hash_.New_bry(); + public Ordered_hash Library_list() {return library_list;} private final Ordered_hash library_list = Ordered_hash_.New_bry(); + public Ordered_hash Extension_list() {return extension_list;} private final Ordered_hash extension_list = Ordered_hash_.New_bry(); + public Ordered_hash Skin_list() {return skin_list;} private final Ordered_hash skin_list = Ordered_hash_.New_bry(); + public Ordered_hash Magicword_list() {return magicword_list;} private final Ordered_hash magicword_list = Ordered_hash_.New_bry(); + public Ordered_hash Functionhook_list() {return functionhook_list;} private final Ordered_hash functionhook_list = Ordered_hash_.New_bry(); + public Ordered_hash Showhook_list() {return showhook_list;} private final Ordered_hash showhook_list = Ordered_hash_.New_bry(); + public Ordered_hash Extensiontag_list() {return extensiontag_list;} private final Ordered_hash extensiontag_list = Ordered_hash_.New_bry(); + public Ordered_hash Protocol_list() {return protocol_list;} private final Ordered_hash protocol_list = Ordered_hash_.New_bry(); + public Ordered_hash Defaultoption_list() {return defaultoption_list;} private final Ordered_hash defaultoption_list = Ordered_hash_.New(); + public Ordered_hash Language_list() {return language_list;} private final Ordered_hash language_list = Ordered_hash_.New_bry(); public Site_meta_itm Clear() { general_list.Clear(); namespace_list.Clear(); diff --git a/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_namespace_tbl.java b/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_namespace_tbl.java index 2fea84c4c..2c887c624 100644 --- a/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_namespace_tbl.java +++ b/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_namespace_tbl.java @@ -18,9 +18,9 @@ along with this program. If not, see . package gplx.xowa.bldrs.wms.sites; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wms.*; import gplx.dbs.*; public class Site_namespace_tbl implements Db_tbl { - private static final String tbl_name = "site_namespace"; private final Dbmeta_fld_list flds = new Dbmeta_fld_list(); - private final String fld_site_abrv, fld_id, fld_case_tid, fld_canonical, fld_localized, fld_subpages, fld_content, fld_defaultcontentmodel; - private final Db_conn conn; + private final Dbmeta_fld_list flds = new Dbmeta_fld_list(); + private final String fld_site_abrv, fld_id, fld_case_tid, fld_canonical, fld_localized, fld_subpages, fld_content, fld_defaultcontentmodel; + private final Db_conn conn; private Db_stmt stmt_select, stmt_insert, stmt_delete; public Site_namespace_tbl(Db_conn conn) { this.conn = conn; @@ -34,6 +34,7 @@ public class Site_namespace_tbl implements Db_tbl { this.fld_defaultcontentmodel = flds.Add_str("defaultcontentmodel", 255); conn.Rls_reg(this); } + public String Tbl_name() {return tbl_name;} private static final String tbl_name = "site_namespace"; public void Create_tbl() {conn.Meta_tbl_create(Dbmeta_tbl_itm.New(tbl_name, flds, Dbmeta_idx_itm.new_unique_by_name(tbl_name, Dbmeta_idx_itm.Bld_idx_name(tbl_name, "main"), fld_site_abrv, fld_id)));} public void Delete_all() {conn.Stmt_delete(tbl_name, Dbmeta_fld_itm.Str_ary_empty).Exec_delete();} public void Rls() { diff --git a/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_namespacealias_tbl.java b/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_namespacealias_tbl.java index 8e8f3454a..c7796a7ce 100644 --- a/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_namespacealias_tbl.java +++ b/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_namespacealias_tbl.java @@ -18,9 +18,9 @@ along with this program. If not, see . package gplx.xowa.bldrs.wms.sites; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wms.*; import gplx.dbs.*; class Site_namespacealias_tbl implements Db_tbl { - private static final String tbl_name = "site_namespacealias"; private final Dbmeta_fld_list flds = new Dbmeta_fld_list(); - private final String fld_site_abrv, fld_id, fld_alias; - private final Db_conn conn; + private final Dbmeta_fld_list flds = new Dbmeta_fld_list(); + private final String fld_site_abrv, fld_id, fld_alias; + private final Db_conn conn; private Db_stmt stmt_select, stmt_insert, stmt_delete; public Site_namespacealias_tbl(Db_conn conn) { this.conn = conn; @@ -29,6 +29,7 @@ class Site_namespacealias_tbl implements Db_tbl { this.fld_alias = flds.Add_str("alias", 2048); conn.Rls_reg(this); } + public String Tbl_name() {return tbl_name;} private static final String tbl_name = "site_namespacealias"; public void Create_tbl() {conn.Meta_tbl_create(Dbmeta_tbl_itm.New(tbl_name, flds, Dbmeta_idx_itm.new_normal_by_name(tbl_name, Dbmeta_idx_itm.Bld_idx_name(tbl_name, "main"), fld_site_abrv, fld_id, fld_alias)));} // NOTE: kk.w has duplicate entries in json public void Delete_all() {conn.Stmt_delete(tbl_name, Dbmeta_fld_itm.Str_ary_empty).Exec_delete();} public void Rls() { diff --git a/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_showhook_tbl.java b/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_showhook_tbl.java index 21ed1f5b6..4bc8e416a 100644 --- a/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_showhook_tbl.java +++ b/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_showhook_tbl.java @@ -18,9 +18,9 @@ along with this program. If not, see . package gplx.xowa.bldrs.wms.sites; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wms.*; import gplx.dbs.*; class Site_showhook_tbl implements Db_tbl { - private static final String tbl_name = "site_showhook"; private final Dbmeta_fld_list flds = new Dbmeta_fld_list(); - private final String fld_site_abrv, fld_name, fld_scribunto, fld_subscribers; - private final Db_conn conn; + private final Dbmeta_fld_list flds = new Dbmeta_fld_list(); + private final String fld_site_abrv, fld_name, fld_scribunto, fld_subscribers; + private final Db_conn conn; private Db_stmt stmt_select, stmt_insert, stmt_delete; public Site_showhook_tbl(Db_conn conn) { this.conn = conn; @@ -30,6 +30,7 @@ class Site_showhook_tbl implements Db_tbl { this.fld_subscribers = flds.Add_str("subscribers", 2048); conn.Rls_reg(this); } + public String Tbl_name() {return tbl_name;} private static final String tbl_name = "site_showhook"; public void Create_tbl() {conn.Meta_tbl_create(Dbmeta_tbl_itm.New(tbl_name, flds, Dbmeta_idx_itm.new_unique_by_name(tbl_name, Dbmeta_idx_itm.Bld_idx_name(tbl_name, "main"), fld_site_abrv, fld_name)));} public void Delete_all() {conn.Stmt_delete(tbl_name, Dbmeta_fld_itm.Str_ary_empty).Exec_delete();} public void Rls() { diff --git a/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_skin_tbl.java b/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_skin_tbl.java index 73d5b6e55..2eca2ecf5 100644 --- a/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_skin_tbl.java +++ b/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_skin_tbl.java @@ -18,9 +18,9 @@ along with this program. If not, see . package gplx.xowa.bldrs.wms.sites; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wms.*; import gplx.dbs.*; class Site_skin_tbl implements Db_tbl { - private static final String tbl_name = "site_skin"; private final Dbmeta_fld_list flds = new Dbmeta_fld_list(); - private final String fld_site_abrv, fld_code, fld_dflt, fld_name, fld_unusable; - private final Db_conn conn; + private final Dbmeta_fld_list flds = new Dbmeta_fld_list(); + private final String fld_site_abrv, fld_code, fld_dflt, fld_name, fld_unusable; + private final Db_conn conn; private Db_stmt stmt_select, stmt_insert, stmt_delete; public Site_skin_tbl(Db_conn conn) { this.conn = conn; @@ -31,6 +31,7 @@ class Site_skin_tbl implements Db_tbl { this.fld_unusable = flds.Add_bool("unusable"); conn.Rls_reg(this); } + public String Tbl_name() {return tbl_name;} private static final String tbl_name = "site_skin"; public void Create_tbl() {conn.Meta_tbl_create(Dbmeta_tbl_itm.New(tbl_name, flds, Dbmeta_idx_itm.new_unique_by_name(tbl_name, Dbmeta_idx_itm.Bld_idx_name(tbl_name, "main"), fld_site_abrv, fld_code)));} public void Delete_all() {conn.Stmt_delete(tbl_name, Dbmeta_fld_itm.Str_ary_empty).Exec_delete();} public void Rls() { diff --git a/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_specialpagealias_tbl.java b/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_specialpagealias_tbl.java index 3dff6b4ba..82102fea2 100644 --- a/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_specialpagealias_tbl.java +++ b/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_specialpagealias_tbl.java @@ -18,9 +18,9 @@ along with this program. If not, see . package gplx.xowa.bldrs.wms.sites; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wms.*; import gplx.dbs.*; class Site_specialpagealias_tbl implements Db_tbl { - private static final String tbl_name = "site_specialpagealias"; private final Dbmeta_fld_list flds = new Dbmeta_fld_list(); - private final String fld_site_abrv, fld_realname, fld_aliases; - private final Db_conn conn; + private final Dbmeta_fld_list flds = new Dbmeta_fld_list(); + private final String fld_site_abrv, fld_realname, fld_aliases; + private final Db_conn conn; private Db_stmt stmt_select, stmt_insert, stmt_delete; public Site_specialpagealias_tbl(Db_conn conn) { this.conn = conn; @@ -29,6 +29,7 @@ class Site_specialpagealias_tbl implements Db_tbl { this.fld_aliases = flds.Add_str("aliases", 2048); conn.Rls_reg(this); } + public String Tbl_name() {return tbl_name;} private static final String tbl_name = "site_specialpagealias"; public void Create_tbl() {conn.Meta_tbl_create(Dbmeta_tbl_itm.New(tbl_name, flds, Dbmeta_idx_itm.new_unique_by_name(tbl_name, Dbmeta_idx_itm.Bld_idx_name(tbl_name, Dbmeta_idx_itm.Bld_idx_name(tbl_name, "main")), fld_site_abrv, fld_realname)));} public void Delete_all() {conn.Stmt_delete(tbl_name, Dbmeta_fld_itm.Str_ary_empty).Exec_delete();} public void Rls() { diff --git a/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_statistic_tbl.java b/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_statistic_tbl.java index c14604667..6cfac411d 100644 --- a/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_statistic_tbl.java +++ b/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_statistic_tbl.java @@ -18,9 +18,9 @@ along with this program. If not, see . package gplx.xowa.bldrs.wms.sites; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wms.*; import gplx.dbs.*; class Site_statistic_tbl implements Db_tbl { - private static final String tbl_name = "site_statistic"; private final Dbmeta_fld_list flds = new Dbmeta_fld_list(); - private final String fld_site_abrv, fld_pages, fld_articles, fld_edits, fld_images, fld_users, fld_activeusers, fld_admins, fld_jobs, fld_queued_massmessages; - private final Db_conn conn; + private final Dbmeta_fld_list flds = new Dbmeta_fld_list(); + private final String fld_site_abrv, fld_pages, fld_articles, fld_edits, fld_images, fld_users, fld_activeusers, fld_admins, fld_jobs, fld_queued_massmessages; + private final Db_conn conn; private Db_stmt stmt_select, stmt_insert, stmt_delete; public Site_statistic_tbl(Db_conn conn) { this.conn = conn; @@ -36,6 +36,7 @@ class Site_statistic_tbl implements Db_tbl { this.fld_queued_massmessages = flds.Add_long("queued_massmessages"); conn.Rls_reg(this); } + public String Tbl_name() {return tbl_name;} private static final String tbl_name = "site_statistic"; public void Create_tbl() {conn.Meta_tbl_create(Dbmeta_tbl_itm.New(tbl_name, flds, Dbmeta_idx_itm.new_unique_by_name(tbl_name, Dbmeta_idx_itm.Bld_idx_name(tbl_name, "main"), fld_site_abrv)));} public void Delete_all() {conn.Stmt_delete(tbl_name, Dbmeta_fld_itm.Str_ary_empty).Exec_delete();} public void Rls() { diff --git a/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_val_tbl.java b/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_val_tbl.java index 46a28fbf1..544a7ac8a 100644 --- a/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_val_tbl.java +++ b/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_val_tbl.java @@ -18,9 +18,9 @@ along with this program. If not, see . package gplx.xowa.bldrs.wms.sites; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wms.*; import gplx.dbs.*; class Site_val_tbl implements Db_tbl { - private String tbl_name; private final Dbmeta_fld_list flds = new Dbmeta_fld_list(); - private final String fld_site_abrv, fld_val; - private final Db_conn conn; + private final Dbmeta_fld_list flds = new Dbmeta_fld_list(); + private final String fld_site_abrv, fld_val; + private final Db_conn conn; private Db_stmt stmt_select, stmt_insert, stmt_delete; public Site_val_tbl(Db_conn conn, String tbl_name) { this.conn = conn; @@ -29,6 +29,7 @@ class Site_val_tbl implements Db_tbl { this.fld_val = flds.Add_str("val", 255); conn.Rls_reg(this); } + public String Tbl_name() {return tbl_name;} private final String tbl_name; public void Create_tbl() {conn.Meta_tbl_create(Dbmeta_tbl_itm.New(tbl_name, flds, Dbmeta_idx_itm.new_unique_by_name(tbl_name, Dbmeta_idx_itm.Bld_idx_name(tbl_name, "main"), fld_site_abrv, fld_val)));} public void Delete_all() {conn.Stmt_delete(tbl_name, Dbmeta_fld_itm.Str_ary_empty).Exec_delete();} public void Rls() { diff --git a/400_xowa/src/gplx/xowa/bldrs/wtrs/Xob_tmp_wtr.java b/400_xowa/src/gplx/xowa/bldrs/wtrs/Xob_tmp_wtr.java index 165d3e15a..b61dfde2f 100644 --- a/400_xowa/src/gplx/xowa/bldrs/wtrs/Xob_tmp_wtr.java +++ b/400_xowa/src/gplx/xowa/bldrs/wtrs/Xob_tmp_wtr.java @@ -23,7 +23,7 @@ public class Xob_tmp_wtr { this.ns_itm = ns_itm; this.url_gen = url_gen; this.fil_max = fil_max; - bfr = Bry_bfr.reset_(fil_max); + bfr = Bry_bfr_.Reset(fil_max); } int fil_max; public Bry_bfr Bfr() {return bfr;} Bry_bfr bfr; public Io_url_gen Url_gen() {return url_gen;} Io_url_gen url_gen; diff --git a/400_xowa/src/gplx/xowa/bldrs/xmls/Xob_import_cfg.java b/400_xowa/src/gplx/xowa/bldrs/xmls/Xob_import_cfg.java index 9a5fe73c5..e13cb3f09 100644 --- a/400_xowa/src/gplx/xowa/bldrs/xmls/Xob_import_cfg.java +++ b/400_xowa/src/gplx/xowa/bldrs/xmls/Xob_import_cfg.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.bldrs.xmls; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; -import gplx.core.ios.*; import gplx.core.envs.*; +import gplx.core.ios.*; import gplx.core.ios.streams.*; import gplx.core.envs.*; import gplx.xowa.wikis.ctgs.*; import gplx.xowa.wikis.tdbs.*; public class Xob_import_cfg { public Xob_import_cfg(Xowe_wiki wiki) {this.wiki = wiki;} private Xowe_wiki wiki; private boolean src_fil_is_bz2 = true; diff --git a/400_xowa/src/gplx/xowa/bldrs/xmls/Xob_import_marker.java b/400_xowa/src/gplx/xowa/bldrs/xmls/Xob_import_marker.java index 62288e124..a441d5793 100644 --- a/400_xowa/src/gplx/xowa/bldrs/xmls/Xob_import_marker.java +++ b/400_xowa/src/gplx/xowa/bldrs/xmls/Xob_import_marker.java @@ -16,9 +16,9 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.bldrs.xmls; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; -import gplx.gfui.*; import gplx.xowa.bldrs.cmds.utils.*; +import gplx.gfui.*; import gplx.gfui.kits.core.*; import gplx.xowa.bldrs.cmds.utils.*; public class Xob_import_marker { - private final Hash_adp_bry in_progress_hash = Hash_adp_bry.cs(); + private final Hash_adp_bry in_progress_hash = Hash_adp_bry.cs(); public void Bgn(Xowe_wiki wiki) { in_progress_hash.Add_as_key_and_val(wiki.Domain_bry()); Io_mgr.Instance.SaveFilStr(url_(wiki), "XOWA has created this file to indicate that an import is in progress. This file will be deleted once the import is completed."); diff --git a/400_xowa/src/gplx/xowa/bldrs/xmls/Xob_xml_page_bldr.java b/400_xowa/src/gplx/xowa/bldrs/xmls/Xob_xml_page_bldr.java index 11772673b..40a14a4ff 100644 --- a/400_xowa/src/gplx/xowa/bldrs/xmls/Xob_xml_page_bldr.java +++ b/400_xowa/src/gplx/xowa/bldrs/xmls/Xob_xml_page_bldr.java @@ -23,9 +23,9 @@ public class Xob_xml_page_bldr { public Io_buffer_rdr XtoByteStreamRdr(int bfr_len) { Io_url url = Io_url_.mem_fil_("mem/byteStreamRdr.txt"); Io_mgr.Instance.SaveFilBry(url, bfr.To_bry_and_clear()); - return Io_buffer_rdr.new_(gplx.core.ios.Io_stream_rdr_.file_(url), bfr_len); + return Io_buffer_rdr.new_(gplx.core.ios.streams.Io_stream_rdr_.file_(url), bfr_len); } - public Bry_bfr Bfr() {return bfr;} Bry_bfr bfr = Bry_bfr.new_(); + public Bry_bfr Bfr() {return bfr;} Bry_bfr bfr = Bry_bfr_.New(); public Xob_xml_page_bldr Upd(String find, String repl) { String all = bfr.To_str_and_clear(); all = String_.Replace(all, find, repl); @@ -56,9 +56,9 @@ public class Xob_xml_page_bldr { bfr.Add(Indent_2).Add(Xob_xml_parser_.Bry_page_end).Add_byte_nl(); return this; } - private static final byte[] Nde_inline = Bry_.new_a7(" />"), Indent_2 = Bry_.Repeat_space(2), Indent_4 = Bry_.Repeat_space(4), Indent_6 = Bry_.Repeat_space(6), Indent_8 = Bry_.Repeat_space(8); - private static final int Revision_id = 1234, Contributor_id = 9876; - private static final byte[] Contributor_username = Bry_.new_a7("contributor_username"), Revision_comment = Bry_.new_a7("revision_comment"); + private static final byte[] Nde_inline = Bry_.new_a7(" />"), Indent_2 = Bry_.Repeat_space(2), Indent_4 = Bry_.Repeat_space(4), Indent_6 = Bry_.Repeat_space(6), Indent_8 = Bry_.Repeat_space(8); + private static final int Revision_id = 1234, Contributor_id = 9876; + private static final byte[] Contributor_username = Bry_.new_a7("contributor_username"), Revision_comment = Bry_.new_a7("revision_comment"); } /* diff --git a/400_xowa/src/gplx/xowa/bldrs/xmls/Xob_xml_parser.java b/400_xowa/src/gplx/xowa/bldrs/xmls/Xob_xml_parser.java index 116d435bd..e6c3b8eaa 100644 --- a/400_xowa/src/gplx/xowa/bldrs/xmls/Xob_xml_parser.java +++ b/400_xowa/src/gplx/xowa/bldrs/xmls/Xob_xml_parser.java @@ -19,7 +19,7 @@ package gplx.xowa.bldrs.xmls; import gplx.*; import gplx.xowa.*; import gplx.xow import gplx.core.btries.*; import gplx.core.ios.*; import gplx.core.times.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.wikis.nss.*; public class Xob_xml_parser { - Btrie_fast_mgr trie = Xob_xml_parser_.trie_(); Bry_bfr data_bfr = Bry_bfr.new_(); DateAdp_parser date_parser = DateAdp_parser.new_(); + Btrie_fast_mgr trie = Xob_xml_parser_.trie_(); Bry_bfr data_bfr = Bry_bfr_.New(); DateAdp_parser date_parser = DateAdp_parser.new_(); public Xob_xml_parser Tag_len_max_(int v) {tag_len_max = v; return this;} private int tag_len_max = 255; // max size of any (a) xml tag, (b) int or (c) date; everything else goes into a data_bfr public Xob_xml_parser Data_bfr_len_(int v) {data_bfr.Resize(v); return this;} // PERF: resize data_bfr once to large size, rather than grow incremently to it public Xob_xml_parser Trie_tab_del_() {trie.Del(Xob_xml_parser_.Bry_tab); return this;} diff --git a/400_xowa/src/gplx/xowa/bldrs/xmls/Xob_xml_parser_tst.java b/400_xowa/src/gplx/xowa/bldrs/xmls/Xob_xml_parser_tst.java index 1ce92b69b..e0debe049 100644 --- a/400_xowa/src/gplx/xowa/bldrs/xmls/Xob_xml_parser_tst.java +++ b/400_xowa/src/gplx/xowa/bldrs/xmls/Xob_xml_parser_tst.java @@ -114,8 +114,8 @@ public class Xob_xml_parser_tst { fil = page_bldr.XtoByteStreamRdr(); tst_parse(fil, doc, 0); } - private static final String Date_1 = "2012-01-01T01:01:01Z", Date_2 = "2012-02-02T02:02:02Z"; DateAdp_parser dateParser = DateAdp_parser.new_(); - Bry_bfr bfr = Bry_bfr.new_(); + private static final String Date_1 = "2012-01-01T01:01:01Z", Date_2 = "2012-02-02T02:02:02Z"; DateAdp_parser dateParser = DateAdp_parser.new_(); + Bry_bfr bfr = Bry_bfr_.New(); Xob_xml_page_bldr page_bldr = new Xob_xml_page_bldr(); Io_buffer_rdr fil; Xob_xml_parser page_parser = new Xob_xml_parser(); Xob_bldr bldr; Gfo_usr_dlg usr_dlg = Gfo_usr_dlg_.Test(); int tst_parse(Io_buffer_rdr fil, Xowd_page_itm expd, int cur_pos) { diff --git a/400_xowa/src/gplx/xowa/drds/Xod_app.java b/400_xowa/src/gplx/xowa/drds/Xod_app.java index 77bf1cbe7..c448e2993 100644 --- a/400_xowa/src/gplx/xowa/drds/Xod_app.java +++ b/400_xowa/src/gplx/xowa/drds/Xod_app.java @@ -19,9 +19,9 @@ package gplx.xowa.drds; import gplx.*; import gplx.xowa.*; import gplx.xowa.drds.pages.*; import gplx.xowa.drds.files.*; import gplx.xowa.apps.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.wikis.domains.*; import gplx.xowa.wikis.nss.*; import gplx.xowa.files.gui.*; -import gplx.xowa.addons.apps.searchs.searchers.rslts.*; import gplx.xowa.specials.randoms.*; +import gplx.xowa.addons.wikis.searchs.searchers.rslts.*; import gplx.langs.htmls.encoders.*; import gplx.xowa.htmls.hrefs.*; -import gplx.xowa.addons.apps.searchs.*; import gplx.xowa.addons.apps.searchs.searchers.*; +import gplx.xowa.addons.wikis.searchs.*; import gplx.xowa.addons.wikis.searchs.searchers.*; import gplx.xowa.langs.cases.*; public class Xod_app { private final Xoav_app app; diff --git a/400_xowa/src/gplx/xowa/drds/Xod_app_tst.java b/400_xowa/src/gplx/xowa/drds/Xod_app_tst.java index c587af535..40fbdb845 100644 --- a/400_xowa/src/gplx/xowa/drds/Xod_app_tst.java +++ b/400_xowa/src/gplx/xowa/drds/Xod_app_tst.java @@ -20,11 +20,12 @@ import org.junit.*; import gplx.xowa.drds.pages.*; import gplx.xowa.wikis.*; imp public class Xod_app_tst { private final Xod_app_tstr tstr = new Xod_app_tstr(); @Before public void init() {tstr.Init_mem();} - @Test public void Get() { - tstr.Data_mgr().Page__insert(1, "A", "2015-10-19 00:01:02"); - tstr.Data_mgr().Html__insert(1, "abc"); - tstr.Test__get("A", tstr.Make_page(1, "A", "2015-10-19T00:01:02Z", tstr.Make_section(0, 2, "", "", "abc"))); - } + // COMMENTED: broke from changes to auto-init wiki; DATE:2016-06-16 +// @Test public void Get() { +// tstr.Data_mgr().Page__insert(1, "A", "2015-10-19 00:01:02"); +// tstr.Data_mgr().Html__insert(1, "abc"); +// tstr.Test__get("A", tstr.Make_page(1, "A", "2015-10-19T00:01:02Z", tstr.Make_section(0, 2, "", "", "abc"))); +// } @Test public void To_page_db() { tstr.Test__to_page_url("http://en.wikipedia.org/wiki/A" , "A"); tstr.Test__to_page_url("http://en.wikipedia.org/wiki/A:B" , "A:B"); diff --git a/400_xowa/src/gplx/xowa/drds/Xowd_data_tstr.java b/400_xowa/src/gplx/xowa/drds/Xowd_data_tstr.java index fba268a8a..7a838d253 100644 --- a/400_xowa/src/gplx/xowa/drds/Xowd_data_tstr.java +++ b/400_xowa/src/gplx/xowa/drds/Xowd_data_tstr.java @@ -26,7 +26,7 @@ public class Xowd_data_tstr { wiki.Data__core_mgr().Tbl__page().Insert(page_id, ttl.Ns().Id(), ttl.Page_db(), page_is_redirect, DateAdp_.parse_iso8561(modified_on), page_len, page_id, text_db_id, html_db_id); } public void Html__insert(int page_id, String html) { - Xowd_db_file html_db = wiki.Data__core_mgr().Db__html(); + Xow_db_file html_db = wiki.Data__core_mgr().Db__html(); if (html_db == null) { html_db = wiki.Data__core_mgr().Db__core(); html_db.Tbl__html().Create_tbl(); @@ -35,6 +35,6 @@ public class Xowd_data_tstr { Xoh_page gui_page = new Xoh_page(); gui_page.Body_(html_bry); byte[] data = html_bry; - html_db.Tbl__html().Insert(page_id, 0, gplx.core.ios.Io_stream_.Tid_raw, gplx.xowa.htmls.core.hzips.Xoh_hzip_dict_.Hzip__none, Bry_.Empty, Bry_.Empty, Bry_.Empty, data); + html_db.Tbl__html().Insert(page_id, 0, gplx.core.ios.streams.Io_stream_.Tid_raw, gplx.xowa.htmls.core.hzips.Xoh_hzip_dict_.Hzip__none, Bry_.Empty, Bry_.Empty, Bry_.Empty, data); } } diff --git a/400_xowa/src/gplx/xowa/drds/files/Xod_activity_adp.java b/400_xowa/src/gplx/xowa/drds/files/Xod_activity_adp.java new file mode 100644 index 000000000..df64fc3c1 --- /dev/null +++ b/400_xowa/src/gplx/xowa/drds/files/Xod_activity_adp.java @@ -0,0 +1,23 @@ +/* +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.drds.files; import gplx.*; import gplx.xowa.*; import gplx.xowa.drds.*; +public interface Xod_activity_adp { + String Fsys__files_dir(); + String Fsys__cache_dir(); + String Fsys__sdcard_rw_or_null(); +} diff --git a/400_xowa/src/gplx/xowa/drds/files/Xod_file_mgr.java b/400_xowa/src/gplx/xowa/drds/files/Xod_file_mgr.java index f9cf57e0c..12d575ad5 100644 --- a/400_xowa/src/gplx/xowa/drds/files/Xod_file_mgr.java +++ b/400_xowa/src/gplx/xowa/drds/files/Xod_file_mgr.java @@ -21,7 +21,7 @@ import gplx.xowa.drds.pages.*; import gplx.xowa.files.*; import gplx.xowa.files.gui.*; import gplx.xowa.htmls.*; public class Xod_file_mgr { - private final Gfo_thread_pool thread_pool = new Gfo_thread_pool(); + private final Gfo_thread_pool thread_pool = new Gfo_thread_pool(); public void Load_files(Xow_wiki wiki, Xod_page_itm pg, Xog_js_wkr js_wkr) { Xoh_page hpg = pg.Hpg(); List_adp img_list = To_img_list(hpg.Img_mgr()); @@ -30,7 +30,7 @@ public class Xod_file_mgr { thread_pool.Run(); } private static List_adp To_img_list(Xoh_img_mgr img_mgr) { - List_adp rv = List_adp_.new_(); + List_adp rv = List_adp_.New(); int len = img_mgr.Len(); for (int i = 0; i < len; ++i) rv.Add(img_mgr.Get_at(i)); diff --git a/400_xowa/src/gplx/xowa/drds/files/Xod_fsys_mgr.java b/400_xowa/src/gplx/xowa/drds/files/Xod_fsys_mgr.java new file mode 100644 index 000000000..105139dcb --- /dev/null +++ b/400_xowa/src/gplx/xowa/drds/files/Xod_fsys_mgr.java @@ -0,0 +1,35 @@ +/* +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.drds.files; import gplx.*; import gplx.xowa.*; import gplx.xowa.drds.*; +public class Xod_fsys_mgr { + public Xod_fsys_mgr(Gfo_log log, Xod_activity_adp activity) { + this.usr_data_dir = Io_url_.lnx_dir_(activity.Fsys__files_dir() + "/"); + // this.usr_temp_dir = Io_url_.lnx_dir_(activity.Fsys__cache_dir() + "/"); + this.usr_data_fil = usr_data_dir.GenSubFil_nest("usr-anonymous.sqlite3"); // should go to /xowa/usr/usr-anonymous.sqlite3 + this.app_root_dir = usr_data_dir.GenSubDir_nest("files", "xowa"); + String sdcard_rw = activity.Fsys__sdcard_rw_or_null(); + if (sdcard_rw != null) { + app_root_dir = Io_url_.lnx_dir_(sdcard_rw + "/files/xowa/"); + } + log.Info("fsys_mgr:root_dir", "root", app_root_dir.Xto_api()); + } + public Io_url Usr_data_dir() {return usr_data_dir;} private Io_url usr_data_dir; // cleared by "Clear data"; maps to both @gplx.Internal protected and external storage + // private Io_url Usr_temp_dir() {return usr_temp_dir;} private Io_url usr_temp_dir; // cleared by "Clear cache" + public Io_url Usr_data_fil() {return usr_data_fil;} private Io_url usr_data_fil; + public Io_url App_root_dir() {return app_root_dir;} private Io_url app_root_dir; +} diff --git a/400_xowa/src/gplx/xowa/drds/ios/assets/Xod_asset_mgr.java b/400_xowa/src/gplx/xowa/drds/ios/assets/Xod_asset_mgr.java new file mode 100644 index 000000000..7b3e90691 --- /dev/null +++ b/400_xowa/src/gplx/xowa/drds/ios/assets/Xod_asset_mgr.java @@ -0,0 +1,21 @@ +/* +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.drds.ios.assets; import gplx.*; import gplx.xowa.*; import gplx.xowa.drds.*; import gplx.xowa.drds.ios.*; +public interface Xod_asset_mgr extends gplx.core.ios.loaders.Io_loader { + String[] List_as_str_ary (Io_url dir); +} diff --git a/400_xowa/src/gplx/xowa/drds/ios/media_scanners/Xod_media_scanner.java b/400_xowa/src/gplx/xowa/drds/ios/media_scanners/Xod_media_scanner.java new file mode 100644 index 000000000..3b206a1f8 --- /dev/null +++ b/400_xowa/src/gplx/xowa/drds/ios/media_scanners/Xod_media_scanner.java @@ -0,0 +1,22 @@ +/* +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.drds.ios.media_scanners; import gplx.*; import gplx.xowa.*; import gplx.xowa.drds.*; import gplx.xowa.drds.ios.*; +public interface Xod_media_scanner extends Gfo_evt_itm { + Xod_media_scanner Add(Io_url url); + void Scan(); +} diff --git a/400_xowa/src/gplx/xowa/drds/ios/media_scanners/Xod_media_scanner__base.java b/400_xowa/src/gplx/xowa/drds/ios/media_scanners/Xod_media_scanner__base.java new file mode 100644 index 000000000..51a6f756a --- /dev/null +++ b/400_xowa/src/gplx/xowa/drds/ios/media_scanners/Xod_media_scanner__base.java @@ -0,0 +1,43 @@ +/* +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.drds.ios.media_scanners; import gplx.*; import gplx.xowa.*; import gplx.xowa.drds.*; import gplx.xowa.drds.ios.*; +public abstract class Xod_media_scanner__base implements Xod_media_scanner { + private final List_adp list = List_adp_.New(); + public Xod_media_scanner__base() { + this.evt_mgr = new Gfo_evt_mgr(this); + Gfo_evt_mgr_.Sub_same(Io_mgr.Instance, Io_mgr.Evt__fil_created, this); + } + public Gfo_evt_mgr Evt_mgr() {return evt_mgr;} private final Gfo_evt_mgr evt_mgr; + public Xod_media_scanner Add(Io_url url) {list.Add(url.Xto_api()); return this;} + public void Scan() { + String[] urls = list.To_str_ary_and_clear(); + Gfo_log_.Instance.Info("xo.io:media scan", "urls", String_.Concat_with_str(":", urls)); + this.Scan__hook(urls); + } + protected abstract void Scan__hook(String[] urls); + private void On_fil_created(Io_url[] ary) { + for (Io_url itm : ary) + this.Add(itm); + this.Scan(); + } + public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { + if (ctx.Match(k, Io_mgr.Evt__fil_created)) On_fil_created((Io_url[])m.ReadObj("v")); + else return Gfo_invk_.Rv_unhandled; + return this; + } +} diff --git a/400_xowa/src/gplx/xowa/drds/pages/Xod_page_itm.java b/400_xowa/src/gplx/xowa/drds/pages/Xod_page_itm.java index 8b8a2f34d..17a15e251 100644 --- a/400_xowa/src/gplx/xowa/drds/pages/Xod_page_itm.java +++ b/400_xowa/src/gplx/xowa/drds/pages/Xod_page_itm.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.xowa.drds.pages; import gplx.*; import gplx.xowa.*; import gplx.xowa.drds.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.sections.*; import gplx.xowa.wikis.data.tbls.*; -import gplx.xowa.wikis.pages.*; +import gplx.xowa.wikis.pages.*; import gplx.xowa.wikis.pages.tags.*; public class Xod_page_itm { public int Page_id() {return page_id;} private int page_id; public long Rev_id() {return rev_id;} private long rev_id; @@ -35,10 +35,10 @@ public class Xod_page_itm { public String Head_url() {return head_url;} private String head_url; public String Head_name() {return head_ttl;} private String head_ttl; public String First_allowed_editor_role() {return first_allowed_editor_role;} private String first_allowed_editor_role; - public List_adp Section_list() {return section_list;} private List_adp section_list = List_adp_.new_(); + public List_adp Section_list() {return section_list;} private List_adp section_list = List_adp_.New(); public Xoh_page Hpg() {return hpg;} private Xoh_page hpg; - public Xopg_tag_mgr Head_tags() {return head_tags;} private final Xopg_tag_mgr head_tags = new Xopg_tag_mgr(); - public Xopg_tag_mgr Tail_tags() {return tail_tags;} private final Xopg_tag_mgr tail_tags = new Xopg_tag_mgr(); + public Xopg_tag_mgr Head_tags() {return head_tags;} private final Xopg_tag_mgr head_tags = new Xopg_tag_mgr(Bool_.Y); + public Xopg_tag_mgr Tail_tags() {return tail_tags;} private final Xopg_tag_mgr tail_tags = new Xopg_tag_mgr(Bool_.N); public void Init(int page_id, int rev_id , String ttl_text, String ttl_db, String redirected, String description, String modified_on , boolean is_editable, boolean is_main_page, boolean is_disambiguation, int lang_count @@ -70,7 +70,7 @@ public class Xod_page_itm { this.hpg = hpg; } public String To_str() { - Bry_bfr bfr = Bry_bfr.new_(); + Bry_bfr bfr = Bry_bfr_.New(); bfr .Add_int_variable(page_id).Add_byte_pipe() .Add_long_variable(rev_id).Add_byte_pipe() .Add_str_u8(ttl_text).Add_byte_pipe() diff --git a/400_xowa/src/gplx/xowa/drds/pages/Xod_page_mgr.java b/400_xowa/src/gplx/xowa/drds/pages/Xod_page_mgr.java index 6e64bcce9..946d40394 100644 --- a/400_xowa/src/gplx/xowa/drds/pages/Xod_page_mgr.java +++ b/400_xowa/src/gplx/xowa/drds/pages/Xod_page_mgr.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.xowa.drds.pages; import gplx.*; import gplx.xowa.*; import gplx.xowa.drds.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.sections.*; -import gplx.core.net.*; import gplx.xowa.addons.apps.file_browsers.*; +import gplx.core.net.*; import gplx.xowa.addons.wikis.imports.*; public class Xod_page_mgr { public Xod_page_itm Get_page(Xow_wiki wiki, Xoa_url page_url) { Xod_page_itm rv = new Xod_page_itm(); @@ -27,7 +27,10 @@ public class Xod_page_mgr { Xoa_ttl ttl = wiki.Ttl_parse(page_url.Page_bry()); if (ttl.Ns().Id_is_special()) return Load_special(rv, wiki, page_url, ttl); Xowd_page_itm dbpg = new Xowd_page_itm(); - wiki.Data__core_mgr().Tbl__page().Select_by_ttl(dbpg, ttl.Ns(), ttl.Page_db()); + try {wiki.Data__core_mgr().Tbl__page().Select_by_ttl(dbpg, ttl.Ns(), ttl.Page_db());} + catch (Exception e) {// throw detailed exception to track down page_score exception + throw Err_.new_("", "failed to retrieve page", "wiki", wiki.Domain_str(), "page_url", page_url.Page_bry(), "err", Err_.Message_lang(e)); + } rv.Init_by_dbpg(ttl, dbpg); // load page data @@ -47,10 +50,23 @@ public class Xod_page_mgr { } } private Xod_page_itm Load_special(Xod_page_itm rv, Xow_wiki wiki, Xoa_url url, Xoa_ttl ttl) { - gplx.xowa.specials.Xows_page prime = wiki.App().Special_regy().Get_by_or_null(ttl.Page_txt()); - if (prime == null) return rv; + // get prototype + gplx.xowa.specials.Xow_special_page proto = wiki.App().Special_regy().Get_by_or_null(ttl.Page_txt_wo_qargs()); + if (proto == null) return rv; // invalid url + + // generate special Xoh_page page = new Xoh_page(); - prime.Special__clone().Special__gen(wiki, page, url, ttl); + try {proto.Special__clone().Special__gen(wiki, page, url, ttl);} + catch (Exception e) {Gfo_log_.Instance.Warn("failed to generate special page", "url", url.To_str(), "err", Err_.Message_gplx_log(e)); return rv;} + + // handle redirects; EX: Special:XowaWikiInfo + byte[] redirect_to_ttl = page.Redirect_to_ttl(); + if (redirect_to_ttl != null) { + ttl = wiki.Ttl_parse(redirect_to_ttl); + url = Xoa_url.new_(wiki.Domain_bry(), redirect_to_ttl); + return Get_page(wiki, url); + } + rv.Init(-1, -1, String_.new_u8(ttl.Page_txt()), String_.new_u8(ttl.Page_db()), null, null, DateAdp_.Now().XtoStr_fmt_iso_8561(), false, false, false, 0, "", "", ""); rv.Init_by_hpg(page); Xoh_section_itm section = new Xoh_section_itm(1, 1, Bry_.Empty, Bry_.Empty); diff --git a/400_xowa/src/gplx/xowa/drds/powers/Xod_power_mgr.java b/400_xowa/src/gplx/xowa/drds/powers/Xod_power_mgr.java new file mode 100644 index 000000000..1a9a9e233 --- /dev/null +++ b/400_xowa/src/gplx/xowa/drds/powers/Xod_power_mgr.java @@ -0,0 +1,22 @@ +/* +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.drds.powers; import gplx.*; import gplx.xowa.*; import gplx.xowa.drds.*; +public interface Xod_power_mgr { + void Wake_lock__get(String name); + void Wake_lock__rls(String name); +} diff --git a/400_xowa/src/gplx/xowa/drds/powers/Xod_power_mgr_.java b/400_xowa/src/gplx/xowa/drds/powers/Xod_power_mgr_.java new file mode 100644 index 000000000..bf97f6c71 --- /dev/null +++ b/400_xowa/src/gplx/xowa/drds/powers/Xod_power_mgr_.java @@ -0,0 +1,32 @@ +/* +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.drds.powers; import gplx.*; import gplx.xowa.*; import gplx.xowa.drds.*; +public class Xod_power_mgr_ { + public static Xod_power_mgr Instance = new Xod_power_mgr__shim(); +} +class Xod_power_mgr__shim implements Xod_power_mgr { + // private final Ordered_hash hash = Ordered_hash_.New(); + public void Wake_lock__get(String name) { + // if (hash.Has(name)) {hash.Clear(); throw Err_.new_("itm exists", "name", name);} + // hash.Add(name, name); + } + public void Wake_lock__rls(String name) { + // if (!hash.Has(name)) throw Err_.new_("itm missing", "name", name); + // hash.Del(name); + } +} diff --git a/400_xowa/src/gplx/xowa/files/Xoa_file_mgr.java b/400_xowa/src/gplx/xowa/files/Xoa_file_mgr.java index c7d3b0270..22280727b 100644 --- a/400_xowa/src/gplx/xowa/files/Xoa_file_mgr.java +++ b/400_xowa/src/gplx/xowa/files/Xoa_file_mgr.java @@ -18,7 +18,7 @@ along with this program. If not, see . //namespace gplx.xowa.files { // using gplx.xowa.files.caches; // public class Xoa_file_mgr { -// private final List_adp list = List_adp_.new_(); +// private final List_adp list = List_adp_.New(); // public void Clear() {list.Clear();} // public boolean Check_cache(Xow_wiki wiki, byte[] page_url, Xof_fsdb_itm fsdb_itm) { // fsdb_itm.Init_at_cache(0, 0, null); diff --git a/400_xowa/src/gplx/xowa/files/Xoa_repo_mgr.java b/400_xowa/src/gplx/xowa/files/Xoa_repo_mgr.java index 6227b03d9..2d19ce12b 100644 --- a/400_xowa/src/gplx/xowa/files/Xoa_repo_mgr.java +++ b/400_xowa/src/gplx/xowa/files/Xoa_repo_mgr.java @@ -17,8 +17,8 @@ along with this program. If not, see . */ package gplx.xowa.files; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.fsys.*; import gplx.xowa.files.exts.*; import gplx.xowa.files.repos.*; -public class Xoa_repo_mgr implements GfoInvkAble { - private final Xoa_fsys_mgr app_fsys; private final Xof_rule_mgr ext_rule_mgr; +public class Xoa_repo_mgr implements Gfo_invk { + private final Xoa_fsys_mgr app_fsys; private final Xof_rule_mgr ext_rule_mgr; public Xoa_repo_mgr(Xoa_fsys_mgr app_fsys, Xof_rule_mgr ext_rule_mgr) {this.app_fsys = app_fsys; this.ext_rule_mgr = ext_rule_mgr;} public int Count() {return hash.Count();} public Xof_repo_itm Get_at(int i) {return (Xof_repo_itm)hash.Get_at(i);} @@ -50,7 +50,7 @@ public class Xoa_repo_mgr implements GfoInvkAble { public Xof_repo_itm Add(Xof_repo_itm itm) {hash.Add(itm.Key(), itm); return itm;} private Ordered_hash hash = Ordered_hash_.New_bry(); public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_set)) return Set(m.ReadStr("key"), m.ReadStr("url"), m.ReadStr("wiki")); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; } private static final String Invk_set = "set"; public Xof_repo_itm Set(String key, String url_str, String wiki) { byte[] key_bry = Bry_.new_u8(key); diff --git a/400_xowa/src/gplx/xowa/files/Xof_bin_updater.java b/400_xowa/src/gplx/xowa/files/Xof_bin_updater.java index 3f64fae9c..476756445 100644 --- a/400_xowa/src/gplx/xowa/files/Xof_bin_updater.java +++ b/400_xowa/src/gplx/xowa/files/Xof_bin_updater.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.files; import gplx.*; import gplx.xowa.*; -import gplx.core.ios.*; +import gplx.core.ios.*; import gplx.core.ios.streams.*; import gplx.fsdb.data.*; import gplx.fsdb.meta.*; import gplx.xowa.files.fsdb.*; public class Xof_bin_updater { - private final Fsd_img_itm tmp_img_itm = new Fsd_img_itm(); private final Fsd_thm_itm tmp_thm_itm = Fsd_thm_itm.new_(); private final Fsd_fil_itm tmp_fil_itm = new Fsd_fil_itm(); + private final Fsd_img_itm tmp_img_itm = new Fsd_img_itm(); private final Fsd_thm_itm tmp_thm_itm = Fsd_thm_itm.new_(); private final Fsd_fil_itm tmp_fil_itm = new Fsd_fil_itm(); public int Save_bin(Fsm_mnt_itm mnt, Fsm_atr_fil atr_fil, Fsm_bin_fil bin_fil, Xof_fsdb_itm fsdb, Io_stream_rdr rdr, long rdr_len) { int db_uid = -1; int orig_ext_id = fsdb.Orig_ext().Id(); diff --git a/400_xowa/src/gplx/xowa/files/Xof_cfg_download.java b/400_xowa/src/gplx/xowa/files/Xof_cfg_download.java index fcf6dc0e1..29ea1d348 100644 --- a/400_xowa/src/gplx/xowa/files/Xof_cfg_download.java +++ b/400_xowa/src/gplx/xowa/files/Xof_cfg_download.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.files; import gplx.*; import gplx.xowa.*; -public class Xof_cfg_download implements GfoInvkAble { +public class Xof_cfg_download implements Gfo_invk { public Xof_cfg_download() { this.enabled = true; // CFG: set to false b/c some tests only do parsing [[File:A.png]] and repos are not set up this.redownload = Redownload_none; // CFG: set to none to be as conservative as possible @@ -29,7 +29,7 @@ public class Xof_cfg_download implements GfoInvkAble { else if (ctx.Match(k, Invk_redownload)) return Redownload_to_str_(redownload); else if (ctx.Match(k, Invk_redownload_)) redownload = Redownload_parse_(m.ReadStr("v")); else if (ctx.Match(k, Invk_redownload_toggle)) redownload = redownload == Redownload_none ? Redownload_missing : Redownload_none; - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String Invk_enabled_ = "enabled_", Invk_redownload = "redownload", Invk_redownload_ = "redownload_", Invk_redownload_toggle = "redownload_toggle"; byte Redownload_parse_(String s) { diff --git a/400_xowa/src/gplx/xowa/files/Xof_file_mgr.java b/400_xowa/src/gplx/xowa/files/Xof_file_mgr.java index 6b0d9e024..ef18026ac 100644 --- a/400_xowa/src/gplx/xowa/files/Xof_file_mgr.java +++ b/400_xowa/src/gplx/xowa/files/Xof_file_mgr.java @@ -20,12 +20,12 @@ import gplx.dbs.*; import gplx.xowa.files.commons.*; import gplx.xowa.files.exts.*; import gplx.xowa.files.caches.*; import gplx.xowa.files.imgs.*; import gplx.xowa.bldrs.wms.*; import gplx.xowa.xtns.math.*; -public class Xof_file_mgr implements GfoInvkAble { +public class Xof_file_mgr implements Gfo_invk { public Xoa_repo_mgr Repo_mgr() {return repo_mgr;} private Xoa_repo_mgr repo_mgr; - public Xof_img_mgr Img_mgr() {return img_mgr;} private final Xof_img_mgr img_mgr = new Xof_img_mgr(); + public Xof_img_mgr Img_mgr() {return img_mgr;} private final Xof_img_mgr img_mgr = new Xof_img_mgr(); public Xof_cache_mgr Cache_mgr() {return cache_mgr;} private Xof_cache_mgr cache_mgr; - public Xof_math_mgr Math_mgr() {return math_mgr;} private final Xof_math_mgr math_mgr = new Xof_math_mgr(); - public Xof_rule_mgr Ext_rules() {return ext_rules;} private final Xof_rule_mgr ext_rules = new Xof_rule_mgr(); + public Xof_math_mgr Math_mgr() {return math_mgr;} private final Xof_math_mgr math_mgr = new Xof_math_mgr(); + public Xof_rule_mgr Ext_rules() {return ext_rules;} private final Xof_rule_mgr ext_rules = new Xof_rule_mgr(); public Xoa_wmf_mgr Wmf_mgr() {return wmf_mgr;} private Xoa_wmf_mgr wmf_mgr; public void Ctor_by_app(Xoae_app app) { Gfo_usr_dlg usr_dlg = app.Usr_dlg(); @@ -42,6 +42,6 @@ public class Xof_file_mgr implements GfoInvkAble { else if (ctx.Match(k, Invk_math)) return math_mgr; else if (ctx.Match(k, Invk_download)) return wmf_mgr; // NOTE: do not rename "download" to wmf_mgr else if (ctx.Match(k, Invk_cache_mgr)) return cache_mgr; - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; } private static final String Invk_repos = "repos", Invk_img_mgr= "img_mgr", Invk_ext_rules = "ext_rules", Invk_math = "math", Invk_download = "download", Invk_cache_mgr = "cache_mgr"; } diff --git a/400_xowa/src/gplx/xowa/files/Xof_file_wkr.java b/400_xowa/src/gplx/xowa/files/Xof_file_wkr.java index deb78c3fb..cc1478be1 100644 --- a/400_xowa/src/gplx/xowa/files/Xof_file_wkr.java +++ b/400_xowa/src/gplx/xowa/files/Xof_file_wkr.java @@ -16,40 +16,28 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.files; import gplx.*; import gplx.xowa.*; -import gplx.core.threads.*; import gplx.core.ios.*; +import gplx.core.threads.*; import gplx.core.ios.*; import gplx.core.ios.streams.*; import gplx.fsdb.*; import gplx.fsdb.meta.*; import gplx.fsdb.data.*; import gplx.xowa.files.fsdb.*; import gplx.xowa.files.repos.*; import gplx.xowa.files.origs.*; import gplx.xowa.files.bins.*; import gplx.xowa.files.caches.*; import gplx.xowa.files.gui.*; import gplx.xowa.htmls.core.makes.imgs.*; public class Xof_file_wkr implements Gfo_thread_wkr { - private final Xof_orig_mgr orig_mgr; private final Xof_bin_mgr bin_mgr; private final Fsm_mnt_mgr mnt_mgr; private final Xou_cache_mgr cache_mgr; - private final Gfo_usr_dlg usr_dlg; private final Xow_repo_mgr repo_mgr; private final Xog_js_wkr js_wkr; - private final Xof_url_bldr url_bldr = Xof_url_bldr.new_v2(); private final Xof_img_size img_size = new Xof_img_size(); - private final Xoa_page hpg; private final List_adp imgs; + private final Xof_orig_mgr orig_mgr; private final Xof_bin_mgr bin_mgr; private final Fsm_mnt_mgr mnt_mgr; private final Xou_cache_mgr cache_mgr; + private final Gfo_usr_dlg usr_dlg; private final Xow_repo_mgr repo_mgr; private final Xog_js_wkr js_wkr; + private final Xof_url_bldr url_bldr = Xof_url_bldr.new_v2(); private final Xof_img_size img_size = new Xof_img_size(); + private final Xoa_page hpg; private final List_adp imgs; public Xof_file_wkr(Xof_orig_mgr orig_mgr, Xof_bin_mgr bin_mgr, Fsm_mnt_mgr mnt_mgr, Xou_cache_mgr cache_mgr, Xow_repo_mgr repo_mgr, Xog_js_wkr js_wkr, Xoa_page hpg, List_adp imgs) { this.orig_mgr = orig_mgr; this.bin_mgr = bin_mgr; this.mnt_mgr = mnt_mgr; this.cache_mgr = cache_mgr; this.usr_dlg = Gfo_usr_dlg_.Instance; this.repo_mgr = repo_mgr; this.js_wkr = js_wkr; this.hpg = hpg; this.imgs = imgs; } - public String Name() {return "xowa.load_imgs";} - public boolean Resume() {return true;} - public void Exec() { + public String Thread__name() {return "xowa.load_imgs";} + public boolean Thread__resume() {return true;} + public void Thread__exec() { int len = imgs.Count(); for (int i = 0; i < len; ++i) Exec_by_fsdb((Xof_fsdb_itm)imgs.Get_at(i)); Xoa_app_.Usr_dlg().Prog_none("", "", ""); } - public void Exec_old() { - int len = imgs.Count(); - for (int i = 0; i < len; ++i) - Ctor_by_hdump(hpg, (Xohd_img_itm__base)imgs.Get_at(i)); - Xoa_app_.Usr_dlg().Prog_none("", "", ""); - } - private void Ctor_by_hdump(Xoa_page hpg, Xohd_img_itm__base hdump) { - Xof_fsdb_itm fsdb = new Xof_fsdb_itm(); - fsdb.Init_at_lnki(Xof_exec_tid.Tid_wiki_page, hpg.Wiki().Domain_itm().Abrv_xo(), hdump.Lnki_ttl(), hdump.Lnki_type(), hdump.Lnki_upright(), hdump.Lnki_w(), hdump.Lnki_h(), hdump.Lnki_time(), hdump.Lnki_page(), Xof_patch_upright_tid_.Tid_all); - fsdb.Init_at_hdoc(hdump.Html_uid(), hdump.Html_elem_tid()); - Exec_by_fsdb(fsdb); - } private void Exec_by_fsdb(Xof_fsdb_itm fsdb) { try { if (fsdb.File_exists_in_cache()) return; @@ -85,7 +73,7 @@ public class Xof_file_wkr implements Gfo_thread_wkr { if (!pass) { usr_dlg.Warn_many("", "", "file.missing.bin: file=~{0} width=~{1} page=~{2}", fsdb.Orig_ttl(), fsdb.Lnki_w(), page.Ttl().Full_db()); fsdb.File_exists_n_(); - // gplx.xowa.files.gui.Js_img_mgr.Update_img_missing(usr_dlg, fsdb.Html_uid()); // TODO: update caption with "" if image is missing + // gplx.xowa.files.gui.Js_img_mgr.Update_img_missing(usr_dlg, fsdb.Html_uid()); // TODO_OLD: update caption with "" if image is missing return false; } } @@ -132,7 +120,7 @@ public class Xof_file_wkr implements Gfo_thread_wkr { } public static void Save_bin(Xof_fsdb_itm itm, Fsm_mnt_mgr mnt_mgr, Io_url html_url) { long rdr_len = Io_mgr.Instance.QueryFil(html_url).Size(); - Io_stream_rdr rdr = gplx.core.ios.Io_stream_rdr_.file_(html_url); + Io_stream_rdr rdr = gplx.core.ios.streams.Io_stream_rdr_.file_(html_url); try { rdr.Open(); Fsm_mnt_itm mnt_itm = mnt_mgr.Mnts__get_insert(); diff --git a/400_xowa/src/gplx/xowa/files/Xof_redlink_wkr.java b/400_xowa/src/gplx/xowa/files/Xof_redlink_wkr.java index 32e5803fb..71ebea6c3 100644 --- a/400_xowa/src/gplx/xowa/files/Xof_redlink_wkr.java +++ b/400_xowa/src/gplx/xowa/files/Xof_redlink_wkr.java @@ -23,9 +23,9 @@ class Xof_redlink_wkr implements Gfo_thread_wkr { public Xof_redlink_wkr(Xog_js_wkr js_wkr, int[] uids) { this.js_wkr = js_wkr; this.uids = uids; } - public String Name() {return "xowa.redlinks";} - public boolean Resume() {return true;} - public void Exec() { + public String Thread__name() {return "xowa.redlinks";} + public boolean Thread__resume() {return true;} + public void Thread__exec() { int len = uids.length; for (int i = 0; i < len; ++i) { int uid = uids[i]; diff --git a/400_xowa/src/gplx/xowa/files/Xof_url_bldr.java b/400_xowa/src/gplx/xowa/files/Xof_url_bldr.java index ffb9016ac..6c72bfcd2 100644 --- a/400_xowa/src/gplx/xowa/files/Xof_url_bldr.java +++ b/400_xowa/src/gplx/xowa/files/Xof_url_bldr.java @@ -20,7 +20,7 @@ import gplx.core.envs.*; import gplx.langs.htmls.encoders.*; import gplx.xowa.files.repos.*; import gplx.xowa.files.fsdb.*; public class Xof_url_bldr { - private final Bry_bfr bfr = Bry_bfr.reset_(400); + private final Bry_bfr bfr = Bry_bfr_.Reset(400); private byte[] ttl; private byte[] md5; private Xof_ext ext; private boolean file_is_thumb; private int file_w; private double time = Xof_lnki_time.Null; private int page = Xof_lnki_page.Null; private byte time_dlm = Byte_ascii.At; private byte[] root; private byte dir_spr; private boolean fsys_tid_is_wnt; private boolean wmf_dir_hive; private boolean wmf_protocol_is_file; private int md5_dir_depth; private byte[] area; @@ -195,17 +195,17 @@ public class Xof_url_bldr { bfr.Clear(); return this; } - public static final byte[] + public static final byte[] Bry_reg = Bry_.new_a7("reg.csv") , Bry_px = Bry_.new_a7("px"), Bry_px_dash = Bry_.new_a7("px-") , Bry_thumb = Bry_.new_a7("thumb") , Bry_thumnbail_w_dot = Bry_.new_a7("thumbnail.") ; - private static final byte[] + private static final byte[] Bry_lossy_page = Bry_.new_a7("lossy-page"), Bry_page = Bry_.new_a7("page") , Bry_lossy_page1 = Bry_.new_a7("lossy-page1-"), Bry_page1 = Bry_.new_a7("page1-"), Bry_seek = Bry_.new_a7("seek%3D"); - public static final Xof_url_bldr Temp = new Xof_url_bldr(); - private static final Gfo_url_encoder encoder_src_http = Gfo_url_encoder_.Http_url; // NOTE: changed from new_html_href_mw_ to new_url_ on 2012-11-19; issues with A%2Cb becoming A%252Cb + public static final Xof_url_bldr Temp = new Xof_url_bldr(); + private static final Gfo_url_encoder encoder_src_http = Gfo_url_encoder_.Http_url; // NOTE: changed from new_html_href_mw_ to new_url_ on 2012-11-19; issues with A%2Cb becoming A%252Cb public static Xof_url_bldr new_v2() { Xof_url_bldr rv = new Xof_url_bldr(); rv.time_dlm = Byte_ascii.Dash; diff --git a/400_xowa/src/gplx/xowa/files/Xof_url_bldr_tst.java b/400_xowa/src/gplx/xowa/files/Xof_url_bldr_tst.java index 331702ec7..1bc2c073e 100644 --- a/400_xowa/src/gplx/xowa/files/Xof_url_bldr_tst.java +++ b/400_xowa/src/gplx/xowa/files/Xof_url_bldr_tst.java @@ -22,7 +22,7 @@ public class Xof_url_bldr_tst { @Before public void init() {fxt.Clear();} @Test public void Ogv() {fxt.Dir_spr_http_().Root_("http://test/").Md5_("d0").Ttl_("A.ogv").W_(220).Expd_src_("http://test/thumb/d/d0/A.ogv/220px--A.ogv.jpg").Test();} @Test public void Ogv__seek() {fxt.Dir_spr_http_().Root_("http://test/").Md5_("d0").Ttl_("A.ogv").W_(220).Expd_src_("http://test/thumb/d/d0/A.ogv/220px-seek%3D5-A.ogv.jpg").Seek_(5).Test();} - @Test public void Ogv__no_w() {fxt.Dir_spr_http_().Root_("http://test/").Md5_("d0").Ttl_("A.ogv").W_( -1).Expd_src_("http://test/thumb/d/d0/A.ogv/-1px--A.ogv.jpg").Test();} // TODO: use orig_w, not -1 + @Test public void Ogv__no_w() {fxt.Dir_spr_http_().Root_("http://test/").Md5_("d0").Ttl_("A.ogv").W_( -1).Expd_src_("http://test/thumb/d/d0/A.ogv/-1px--A.ogv.jpg").Test();} // TODO_OLD: use orig_w, not -1 @Test public void Xcf() {fxt.Dir_spr_http_().Root_("http://test/").Md5_("44").Ttl_("A.xcf").W_(220).Expd_src_("http://test/thumb/4/44/A.xcf/220px-A.xcf.png").Test();} @Test public void Bmp() {fxt.Dir_spr_http_().Root_("http://test/").Md5_("70").Ttl_("A.bmp").W_(220).Expd_src_("http://test/thumb/7/70/A.bmp/220px-A.bmp.png").Test();} @Test public void Pdf() {fxt.Dir_spr_http_().Root_("http://test/").Md5_("ef").Ttl_("A.pdf").W_(220).Expd_src_("http://test/thumb/e/ef/A.pdf/page1-220px-A.pdf.jpg").Test();} @@ -36,7 +36,7 @@ public class Xof_url_bldr_tst { } } class Xof_url_bldr_fxt { - private final Xof_url_bldr url_bldr = new Xof_url_bldr(); + private final Xof_url_bldr url_bldr = new Xof_url_bldr(); public Xof_url_bldr_fxt Clear() { dir_spr = Byte_.Zero; ext = null; root = md5 = ttl = expd_src = null; seek = Xof_lnki_time.Null; diff --git a/400_xowa/src/gplx/xowa/files/Xof_wkr_mgr.java b/400_xowa/src/gplx/xowa/files/Xof_wkr_mgr.java index ce353df42..01bfa7174 100644 --- a/400_xowa/src/gplx/xowa/files/Xof_wkr_mgr.java +++ b/400_xowa/src/gplx/xowa/files/Xof_wkr_mgr.java @@ -17,12 +17,12 @@ along with this program. If not, see . */ package gplx.xowa.files; import gplx.*; import gplx.xowa.*; import gplx.xowa.files.fsdb.*; -class Xof_wkr_mgr implements GfoInvkAble { +class Xof_wkr_mgr implements Gfo_invk { private Xow_file_mgr file_mgr; public Xof_wkr_mgr(Xow_file_mgr file_mgr) {this.file_mgr = file_mgr;} public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_get)) return Get_or_new(m.ReadStr("v")); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; } private static final String Invk_get = "get"; private Xof_fsdb_mgr Get_or_new(String key) { diff --git a/400_xowa/src/gplx/xowa/files/Xofv_repo_mgr.java b/400_xowa/src/gplx/xowa/files/Xofv_repo_mgr.java index 48b35a260..e2ad02571 100644 --- a/400_xowa/src/gplx/xowa/files/Xofv_repo_mgr.java +++ b/400_xowa/src/gplx/xowa/files/Xofv_repo_mgr.java @@ -18,8 +18,8 @@ along with this program. If not, see . package gplx.xowa.files; import gplx.*; import gplx.xowa.*; import gplx.core.primitives.*; public class Xofv_repo_mgr { - private final Hash_adp_bry key_regy = Hash_adp_bry.cs(); - private final Hash_adp tid_regy = Hash_adp_.new_(); private final Byte_obj_ref tid_key = Byte_obj_ref.zero_(); + private final Hash_adp_bry key_regy = Hash_adp_bry.cs(); + private final Hash_adp tid_regy = Hash_adp_.New(); private final Byte_obj_ref tid_key = Byte_obj_ref.zero_(); public Xofv_repo_mgr Add(Xofv_repo_itm itm) { key_regy.Add(itm.Key(), itm); tid_regy.Add(Byte_obj_ref.new_(itm.Tid()), itm); diff --git a/400_xowa/src/gplx/xowa/files/Xog_redlink_thread.java b/400_xowa/src/gplx/xowa/files/Xog_redlink_thread.java index abf4dbf80..bbcb0b359 100644 --- a/400_xowa/src/gplx/xowa/files/Xog_redlink_thread.java +++ b/400_xowa/src/gplx/xowa/files/Xog_redlink_thread.java @@ -18,11 +18,11 @@ along with this program. If not, see . package gplx.xowa.files; import gplx.*; import gplx.xowa.*; import gplx.core.threads.*; import gplx.xowa.files.gui.*; public class Xog_redlink_thread implements Gfo_thread_wkr { - private final int[] redlink_ary; private final Xog_js_wkr js_wkr; + private final int[] redlink_ary; private final Xog_js_wkr js_wkr; public Xog_redlink_thread(int[] redlink_ary, Xog_js_wkr js_wkr) {this.redlink_ary = redlink_ary; this.js_wkr = js_wkr;} - public String Name() {return "xowa.gui.html.redlinks.set";} - public boolean Resume() {return true;} - public void Exec() { + public String Thread__name() {return "xowa.gui.html.redlinks.set";} + public boolean Thread__resume() {return true;} + public void Thread__exec() { int len = redlink_ary.length; for (int i = 0; i < len; ++i) { js_wkr.Html_redlink(gplx.xowa.parsers.lnkis.redlinks.Xopg_redlink_lnki_list.Lnki_id_prefix + Int_.To_str(redlink_ary[i])); diff --git a/400_xowa/src/gplx/xowa/files/Xow_file_mgr.java b/400_xowa/src/gplx/xowa/files/Xow_file_mgr.java index f56096675..4dbd4839f 100644 --- a/400_xowa/src/gplx/xowa/files/Xow_file_mgr.java +++ b/400_xowa/src/gplx/xowa/files/Xow_file_mgr.java @@ -20,7 +20,7 @@ import gplx.dbs.*; import gplx.dbs.cfgs.*; import gplx.xowa.files.repos.*; import gplx.xowa.files.origs.*; import gplx.fsdb.*; import gplx.fsdb.meta.*; import gplx.xowa.files.fsdb.*; import gplx.xowa.wikis.tdbs.metas.*; -public class Xow_file_mgr implements GfoInvkAble { +public class Xow_file_mgr implements Gfo_invk { private Xof_wkr_mgr wkr_mgr; public Xow_file_mgr(Xowe_wiki wiki) { this.wiki = wiki; @@ -71,7 +71,7 @@ public class Xow_file_mgr implements GfoInvkAble { public Xof_meta_mgr Dbmeta_mgr() {return meta_mgr;} private Xof_meta_mgr meta_mgr; public Xof_cfg_download Cfg_download() {return cfg_download;} private Xof_cfg_download cfg_download = new Xof_cfg_download(); public void Cfg_set(String grp, String key, String val) { // TEST: should only be called by tests - if (test_grps == null) test_grps = Hash_adp_.new_(); + if (test_grps == null) test_grps = Hash_adp_.New(); Db_cfg_hash grp_itm = (Db_cfg_hash)test_grps.Get_by(grp); if (grp_itm == null) { grp_itm = new Db_cfg_hash(grp); @@ -138,6 +138,6 @@ public class Xow_file_mgr implements GfoInvkAble { else if (ctx.Match(k, Invk_cfg_download)) return cfg_download; // NOTE: documented for Schnark; https://sourceforge.net/p/xowa/tickets/344/ else if (ctx.Match(k, Invk_fsdb)) return fsdb_mgr; else if (ctx.Match(k, Invk_wkrs)) return wkr_mgr; - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; } private static final String Invk_repos = "repos", Invk_metas = "metas", Invk_cfg_download = "cfg_download", Invk_fsdb = "fsdb", Invk_wkrs = "wkrs"; } diff --git a/400_xowa/src/gplx/xowa/files/bins/Io_download_mgr.java b/400_xowa/src/gplx/xowa/files/bins/Io_download_mgr.java index 82d222d09..1ec40f1f8 100644 --- a/400_xowa/src/gplx/xowa/files/bins/Io_download_mgr.java +++ b/400_xowa/src/gplx/xowa/files/bins/Io_download_mgr.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.files.bins; import gplx.*; import gplx.xowa.*; import gplx.xowa.files.*; -import gplx.core.ios.*; +import gplx.core.ios.*; import gplx.core.ios.streams.*; public interface Io_download_mgr { Io_stream_rdr Download_as_rdr(String src); } diff --git a/400_xowa/src/gplx/xowa/files/bins/Io_download_mgr_.java b/400_xowa/src/gplx/xowa/files/bins/Io_download_mgr_.java index 5d5c9c5b9..d407878e4 100644 --- a/400_xowa/src/gplx/xowa/files/bins/Io_download_mgr_.java +++ b/400_xowa/src/gplx/xowa/files/bins/Io_download_mgr_.java @@ -16,13 +16,13 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.files.bins; import gplx.*; import gplx.xowa.*; import gplx.xowa.files.*; -import gplx.core.ios.*; +import gplx.core.ios.*; import gplx.core.ios.streams.*; public class Io_download_mgr_ { public static Io_download_mgr new_system() {return new Io_download_mgr__system();} public static Io_download_mgr__memory new_memory() {return new Io_download_mgr__memory();} } class Io_download_mgr__system implements Io_download_mgr { - private final IoEngine_xrg_downloadFil download_wkr = IoEngine_xrg_downloadFil.new_("", Io_url_.Empty); + private final IoEngine_xrg_downloadFil download_wkr = IoEngine_xrg_downloadFil.new_("", Io_url_.Empty); public void Upload_data(String url, byte[] data) {throw Err_.new_unimplemented();} public Io_stream_rdr Download_as_rdr(String url) { download_wkr.Init(url, Io_url_.Empty); diff --git a/400_xowa/src/gplx/xowa/files/bins/Io_download_mgr__memory.java b/400_xowa/src/gplx/xowa/files/bins/Io_download_mgr__memory.java index 4636e8b80..64daf8e14 100644 --- a/400_xowa/src/gplx/xowa/files/bins/Io_download_mgr__memory.java +++ b/400_xowa/src/gplx/xowa/files/bins/Io_download_mgr__memory.java @@ -16,9 +16,9 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.files.bins; import gplx.*; import gplx.xowa.*; import gplx.xowa.files.*; -import gplx.core.ios.*; +import gplx.core.ios.*; import gplx.core.ios.streams.*; public class Io_download_mgr__memory implements Io_download_mgr { - private final Ordered_hash hash = Ordered_hash_.New(); + private final Ordered_hash hash = Ordered_hash_.New(); public void Clear() {hash.Clear();} public void Upload_data(String url, byte[] data) {hash.Add(url, data);} public Io_stream_rdr Download_as_rdr(String url) { diff --git a/400_xowa/src/gplx/xowa/files/bins/Xof_bin_mgr.java b/400_xowa/src/gplx/xowa/files/bins/Xof_bin_mgr.java index 038057851..b64ab6bea 100644 --- a/400_xowa/src/gplx/xowa/files/bins/Xof_bin_mgr.java +++ b/400_xowa/src/gplx/xowa/files/bins/Xof_bin_mgr.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.files.bins; import gplx.*; import gplx.xowa.*; import gplx.xowa.files.*; -import gplx.core.primitives.*; import gplx.core.ios.*; +import gplx.core.primitives.*; import gplx.core.ios.*; import gplx.core.ios.streams.*; import gplx.fsdb.meta.*; import gplx.xowa.files.repos.*; import gplx.xowa.files.fsdb.*; import gplx.xowa.files.cnvs.*; import gplx.xowa.files.caches.*; import gplx.xowa.bldrs.wms.*; @@ -34,7 +34,7 @@ public class Xof_bin_mgr { } public void Resizer_(Xof_img_wkr_resize_img v) {resizer = v;} private Xof_img_wkr_resize_img resizer; public void Wkrs__del(String key) { - List_adp list = List_adp_.new_(); + List_adp list = List_adp_.New(); for (Xof_bin_wkr wkr : wkrs) { if (String_.Eq(key, wkr.Key())) continue; list.Add(wkr); diff --git a/400_xowa/src/gplx/xowa/files/bins/Xof_bin_skip_mgr.java b/400_xowa/src/gplx/xowa/files/bins/Xof_bin_skip_mgr.java index a56b46de0..3d0fd4e1b 100644 --- a/400_xowa/src/gplx/xowa/files/bins/Xof_bin_skip_mgr.java +++ b/400_xowa/src/gplx/xowa/files/bins/Xof_bin_skip_mgr.java @@ -16,12 +16,12 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.files.bins; import gplx.*; import gplx.xowa.*; import gplx.xowa.files.*; -import gplx.core.ios.*; +import gplx.core.ios.*; import gplx.core.ios.streams.*; import gplx.fsdb.meta.*; import gplx.xowa.files.fsdb.*; public class Xof_bin_skip_mgr { private Xof_bin_skip_wkr[] wkrs = new Xof_bin_skip_wkr[0]; private int wkrs_len; public Xof_bin_skip_mgr(Fsm_cfg_mgr cfg_mgr, String[] wkr_keys) { - List_adp list = List_adp_.new_(); + List_adp list = List_adp_.New(); for (int i = 0; i < wkrs_len; ++i) { Xof_bin_skip_wkr wkr = New_wkr(cfg_mgr, wkr_keys[i]); if (wkr != null) list.Add(wkr); @@ -69,7 +69,7 @@ class Xof_bin_skip_wkr__page_gt_1 implements Xof_bin_skip_wkr { // prior to v2.4 public void Skip_term(Fsm_cfg_mgr cfg_mgr) { cfg_mgr.Patch__save(Fsm_cfg_mgr.Key_patch__page_gt_1); } - public static final Xof_bin_skip_wkr__page_gt_1 Instance = new Xof_bin_skip_wkr__page_gt_1(); Xof_bin_skip_wkr__page_gt_1() {} + public static final Xof_bin_skip_wkr__page_gt_1 Instance = new Xof_bin_skip_wkr__page_gt_1(); Xof_bin_skip_wkr__page_gt_1() {} } class Xof_bin_skip_wkr__small_size implements Xof_bin_skip_wkr {// downloads can randomly be broken; assume that anything with a small size is broken and redownload again; DATE:2015-04-21 public String Key() {return Xof_bin_skip_wkr_.Key__small_size;} @@ -85,5 +85,5 @@ class Xof_bin_skip_wkr__small_size implements Xof_bin_skip_wkr {// downloads can return rv; } public void Skip_term(Fsm_cfg_mgr cfg_mgr) {} - public static final Xof_bin_skip_wkr__small_size Instance = new Xof_bin_skip_wkr__small_size(); Xof_bin_skip_wkr__small_size() {} + public static final Xof_bin_skip_wkr__small_size Instance = new Xof_bin_skip_wkr__small_size(); Xof_bin_skip_wkr__small_size() {} } diff --git a/400_xowa/src/gplx/xowa/files/bins/Xof_bin_wkr.java b/400_xowa/src/gplx/xowa/files/bins/Xof_bin_wkr.java index e71c0e338..2856b23b2 100644 --- a/400_xowa/src/gplx/xowa/files/bins/Xof_bin_wkr.java +++ b/400_xowa/src/gplx/xowa/files/bins/Xof_bin_wkr.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.files.bins; import gplx.*; import gplx.xowa.*; import gplx.xowa.files.*; -import gplx.core.ios.*; +import gplx.core.ios.*; import gplx.core.ios.streams.*; import gplx.xowa.files.fsdb.*; public interface Xof_bin_wkr { byte Tid(); diff --git a/400_xowa/src/gplx/xowa/files/bins/Xof_bin_wkr__fsdb_sql.java b/400_xowa/src/gplx/xowa/files/bins/Xof_bin_wkr__fsdb_sql.java index c549f0a60..d06800385 100644 --- a/400_xowa/src/gplx/xowa/files/bins/Xof_bin_wkr__fsdb_sql.java +++ b/400_xowa/src/gplx/xowa/files/bins/Xof_bin_wkr__fsdb_sql.java @@ -16,15 +16,15 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.files.bins; import gplx.*; import gplx.xowa.*; import gplx.xowa.files.*; -import gplx.dbs.*; import gplx.core.ios.*; import gplx.core.caches.*; import gplx.xowa.files.fsdb.*; +import gplx.dbs.*; import gplx.core.ios.*; import gplx.core.ios.streams.*; import gplx.core.caches.*; import gplx.xowa.files.fsdb.*; import gplx.fsdb.*; import gplx.fsdb.data.*; import gplx.fsdb.meta.*; public class Xof_bin_wkr__fsdb_sql implements Xof_bin_wkr { - private final Xof_bin_wkr_ids tmp_ids = new Xof_bin_wkr_ids(); + private final Xof_bin_wkr_ids tmp_ids = new Xof_bin_wkr_ids(); private Xof_bin_skip_mgr skip_mgr; Xof_bin_wkr__fsdb_sql(Fsm_mnt_mgr mnt_mgr) {this.mnt_mgr = mnt_mgr;} public byte Tid() {return Xof_bin_wkr_.Tid_fsdb_xowa;} public String Key() {return Xof_bin_wkr_.Key_fsdb_wiki;} - public Fsm_mnt_mgr Mnt_mgr() {return mnt_mgr;} private final Fsm_mnt_mgr mnt_mgr; + public Fsm_mnt_mgr Mnt_mgr() {return mnt_mgr;} private final Fsm_mnt_mgr mnt_mgr; public boolean Resize_allowed() {return bin_wkr_resize;} public void Resize_allowed_(boolean v) {bin_wkr_resize = v;} private boolean bin_wkr_resize = false; public Xof_bin_skip_mgr Skip_mgr() {return skip_mgr;} public void Skip_mgr_init(Fsm_cfg_mgr cfg_mgr, String[] wkrs) {this.skip_mgr = new Xof_bin_skip_mgr(cfg_mgr, wkrs);} diff --git a/400_xowa/src/gplx/xowa/files/bins/Xof_bin_wkr__fsys_base.java b/400_xowa/src/gplx/xowa/files/bins/Xof_bin_wkr__fsys_base.java index a42a0bee3..63bd90e77 100644 --- a/400_xowa/src/gplx/xowa/files/bins/Xof_bin_wkr__fsys_base.java +++ b/400_xowa/src/gplx/xowa/files/bins/Xof_bin_wkr__fsys_base.java @@ -16,16 +16,16 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.files.bins; import gplx.*; import gplx.xowa.*; import gplx.xowa.files.*; -import gplx.core.ios.*; import gplx.core.envs.*; +import gplx.core.ios.*; import gplx.core.ios.streams.*; import gplx.core.envs.*; import gplx.xowa.files.fsdb.*; import gplx.xowa.files.repos.*; -public abstract class Xof_bin_wkr__fsys_base implements Xof_bin_wkr, GfoInvkAble { +public abstract class Xof_bin_wkr__fsys_base implements Xof_bin_wkr, Gfo_invk { public Xof_bin_wkr__fsys_base() {} public abstract byte Tid(); public abstract String Key(); public boolean Resize_allowed() {return resize_allowed;} public void Resize_allowed_(boolean v) {resize_allowed = v;} private boolean resize_allowed = false; public Io_stream_rdr Get_as_rdr(Xof_fsdb_itm itm, boolean is_thumb, int w) { Io_url src_url = this.Get_src_url(Xof_repo_itm_.Mode_by_bool(is_thumb), String_.new_u8(itm.Orig_repo_name()), itm.Orig_ttl(), itm.Orig_ttl_md5(), itm.Orig_ext(), w, itm.Lnki_time(), itm.Lnki_page()); - return (src_url == Io_url_.Empty) ? gplx.core.ios.Io_stream_rdr_.Noop : gplx.core.ios.Io_stream_rdr_.file_(src_url); + return (src_url == Io_url_.Empty) ? gplx.core.ios.streams.Io_stream_rdr_.Noop : gplx.core.ios.streams.Io_stream_rdr_.file_(src_url); } public boolean Get_to_fsys(Xof_fsdb_itm itm, boolean is_thumb, int w, Io_url bin_url) { return Get_to_fsys(itm.Orig_repo_name(), itm.Orig_ttl(), itm.Orig_ttl_md5(), itm.Orig_ext(), is_thumb, w, itm.Lnki_time(), itm.Lnki_page(), bin_url); @@ -40,7 +40,7 @@ public abstract class Xof_bin_wkr__fsys_base implements Xof_bin_wkr, GfoInvkAble public abstract void Url_(Io_url v); public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_url_)) this.Url_(m.ReadIoUrl("v")); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String Invk_url_ = "url_"; } diff --git a/400_xowa/src/gplx/xowa/files/bins/Xof_bin_wkr__http_wmf.java b/400_xowa/src/gplx/xowa/files/bins/Xof_bin_wkr__http_wmf.java index b56aeef1d..534565f44 100644 --- a/400_xowa/src/gplx/xowa/files/bins/Xof_bin_wkr__http_wmf.java +++ b/400_xowa/src/gplx/xowa/files/bins/Xof_bin_wkr__http_wmf.java @@ -16,14 +16,14 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.files.bins; import gplx.*; import gplx.xowa.*; import gplx.xowa.files.*; -import gplx.core.ios.*; import gplx.core.threads.*; +import gplx.core.ios.*; import gplx.core.ios.streams.*; import gplx.core.threads.*; import gplx.xowa.apps.*; import gplx.xowa.files.fsdb.*; import gplx.xowa.files.repos.*; import gplx.xowa.wikis.domains.*; public class Xof_bin_wkr__http_wmf implements Xof_bin_wkr { - private final Xow_repo_mgr repo_mgr; private final IoEngine_xrg_downloadFil download_wkr; - private final Io_download_mgr download_mgr; - private final Xof_url_bldr url_bldr = new Xof_url_bldr(); + private final Xow_repo_mgr repo_mgr; private final IoEngine_xrg_downloadFil download_wkr; + private final Io_download_mgr download_mgr; + private final Xof_url_bldr url_bldr = new Xof_url_bldr(); public Xof_bin_wkr__http_wmf(Xow_repo_mgr repo_mgr, Io_download_mgr download_mgr, IoEngine_xrg_downloadFil download_wkr) { this.repo_mgr = repo_mgr; this.download_mgr = download_mgr; this.download_wkr = download_wkr; } @@ -78,7 +78,7 @@ public class Xof_bin_wkr__http_wmf implements Xof_bin_wkr { } public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_fail_timeout_)) fail_timeout = m.ReadInt("v"); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String Invk_fail_timeout_ = "fail_timeout_"; public static Xof_bin_wkr__http_wmf new_(Xow_wiki wiki) {return new_(wiki, Io_download_mgr_.new_system());} diff --git a/400_xowa/src/gplx/xowa/files/bins/Xof_bin_wkr__http_wmf__tst.java b/400_xowa/src/gplx/xowa/files/bins/Xof_bin_wkr__http_wmf__tst.java index 4174886cd..1ff6238dc 100644 --- a/400_xowa/src/gplx/xowa/files/bins/Xof_bin_wkr__http_wmf__tst.java +++ b/400_xowa/src/gplx/xowa/files/bins/Xof_bin_wkr__http_wmf__tst.java @@ -16,9 +16,9 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.files.bins; import gplx.*; import gplx.xowa.*; import gplx.xowa.files.*; -import org.junit.*; import gplx.core.ios.*; import gplx.xowa.files.repos.*; +import org.junit.*; import gplx.core.ios.*; import gplx.core.ios.streams.*; import gplx.xowa.files.repos.*; public class Xof_bin_wkr__http_wmf__tst { - private final Xof_bin_wkr__http_wmf__fxt fxt = new Xof_bin_wkr__http_wmf__fxt(); + private final Xof_bin_wkr__http_wmf__fxt fxt = new Xof_bin_wkr__http_wmf__fxt(); @Before public void init() {fxt.Clear();} @Test public void Basic() { fxt.Init__Http("mem/http/commons.wikimedia.org/thumb/7/70/A.png/220px-A.png", "test_data"); @@ -42,10 +42,10 @@ public class Xof_bin_wkr__http_wmf__tst { } } class Xof_bin_wkr__http_wmf__fxt { - private final Xof_bin_wkr__http_wmf wkr; - private final Io_download_mgr__memory download_mgr; + private final Xof_bin_wkr__http_wmf wkr; + private final Io_download_mgr__memory download_mgr; private Io_stream_rdr get_as_rdr__rdr; - public Xof_fsdb_itm_fxt Fsdb_itm_mkr() {return fsdb_itm_mkr;} private final Xof_fsdb_itm_fxt fsdb_itm_mkr = new Xof_fsdb_itm_fxt(); + public Xof_fsdb_itm_fxt Fsdb_itm_mkr() {return fsdb_itm_mkr;} private final Xof_fsdb_itm_fxt fsdb_itm_mkr = new Xof_fsdb_itm_fxt(); public Xof_bin_wkr__http_wmf__fxt() { Xoae_app app = Xoa_app_fxt.Make__app__edit(); Xowe_wiki wiki = Xoa_app_fxt.Make__wiki__edit(app); diff --git a/400_xowa/src/gplx/xowa/files/caches/Xof_cache_mgr.java b/400_xowa/src/gplx/xowa/files/caches/Xof_cache_mgr.java index 50e539072..f83a242f4 100644 --- a/400_xowa/src/gplx/xowa/files/caches/Xof_cache_mgr.java +++ b/400_xowa/src/gplx/xowa/files/caches/Xof_cache_mgr.java @@ -19,10 +19,10 @@ package gplx.xowa.files.caches; import gplx.*; import gplx.xowa.*; import gplx.x import gplx.core.primitives.*; import gplx.core.envs.*; import gplx.dbs.*; import gplx.xowa.files.fsdb.*; import gplx.xowa.wikis.*; -public class Xof_cache_mgr implements GfoInvkAble { - private final Gfo_usr_dlg usr_dlg; private final Xoae_wiki_mgr wiki_mgr; private final Xoa_repo_mgr repo_mgr; - private final Xofc_cfg_mgr cfg_mgr = new Xofc_cfg_mgr(); private final Xofc_dir_mgr dir_mgr; private final Xofc_fil_mgr fil_mgr; - private final Bool_obj_ref fil_created = Bool_obj_ref.n_(); +public class Xof_cache_mgr implements Gfo_invk { + private final Gfo_usr_dlg usr_dlg; private final Xoae_wiki_mgr wiki_mgr; private final Xoa_repo_mgr repo_mgr; + private final Xofc_cfg_mgr cfg_mgr = new Xofc_cfg_mgr(); private final Xofc_dir_mgr dir_mgr; private final Xofc_fil_mgr fil_mgr; + private final Bool_obj_ref fil_created = Bool_obj_ref.n_(); public Xof_cache_mgr(Gfo_usr_dlg usr_dlg, Xoae_wiki_mgr wiki_mgr, Xoa_repo_mgr repo_mgr) { this.usr_dlg = usr_dlg; this.wiki_mgr = wiki_mgr; this.repo_mgr = repo_mgr; this.dir_mgr = new Xofc_dir_mgr(this); @@ -75,7 +75,7 @@ public class Xof_cache_mgr implements GfoInvkAble { else if (ctx.Match(k, Invk_cache_max)) return cfg_mgr.Cache_max() / Io_mgr.Len_mb; else if (ctx.Match(k, Invk_cache_max_)) cfg_mgr.Cache_max_(m.ReadLong("v") * Io_mgr.Len_mb); else if (ctx.Match(k, Invk_cache_compress)) fil_mgr.Compress(usr_dlg, wiki_mgr, repo_mgr, dir_mgr, cfg_mgr); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String Invk_cache_min = "cache_min", Invk_cache_min_ = "cache_min_", Invk_cache_max = "cache_max", Invk_cache_max_ = "cache_max_", Invk_cache_compress = "cache_compress"; } diff --git a/400_xowa/src/gplx/xowa/files/caches/Xof_cache_mgr_tst.java b/400_xowa/src/gplx/xowa/files/caches/Xof_cache_mgr_tst.java index 437a513fc..53813c3a9 100644 --- a/400_xowa/src/gplx/xowa/files/caches/Xof_cache_mgr_tst.java +++ b/400_xowa/src/gplx/xowa/files/caches/Xof_cache_mgr_tst.java @@ -42,7 +42,7 @@ public class Xof_cache_mgr_tst { // private int lnki_site; private byte[] lnki_ttl; private int lnki_type; private double lnki_upright; private int lnki_w; private int lnki_h; private double lnki_time; private int lnki_page; // private int orig_wiki; private byte[] orig_ttl; private int orig_ext; private int file_w; private int file_h; private double file_time; private int file_page; // private long temp_file_size; private int temp_view_count; private long temp_view_date; private int temp_w; -// private Bry_bfr key_bfr = Bry_bfr.new_(); +// private Bry_bfr key_bfr = Bry_bfr_.New(); // public Xof_cache_itm_mkr() {this.Reset();} // private void Reset() { // db_state = Db_cmd_mode.Tid_ignore; diff --git a/400_xowa/src/gplx/xowa/files/caches/Xofc_dir_mgr.java b/400_xowa/src/gplx/xowa/files/caches/Xofc_dir_mgr.java index 95d65fd86..db3b045a4 100644 --- a/400_xowa/src/gplx/xowa/files/caches/Xofc_dir_mgr.java +++ b/400_xowa/src/gplx/xowa/files/caches/Xofc_dir_mgr.java @@ -18,8 +18,8 @@ along with this program. If not, see . package gplx.xowa.files.caches; import gplx.*; import gplx.xowa.*; import gplx.xowa.files.*; import gplx.dbs.*; class Xofc_dir_mgr { - private final Xofc_dir_tbl tbl = new Xofc_dir_tbl(); - private final Ordered_hash hash_by_names = Ordered_hash_.New_bry(); private final Hash_adp hash_by_ids = Hash_adp_.new_(); + private final Xofc_dir_tbl tbl = new Xofc_dir_tbl(); + private final Ordered_hash hash_by_names = Ordered_hash_.New_bry(); private final Hash_adp hash_by_ids = Hash_adp_.New(); private Xof_cache_mgr cache_mgr; public Xofc_dir_mgr(Xof_cache_mgr v) {this.cache_mgr = v;} public void Conn_(Db_conn v, boolean created, boolean schema_is_1) {tbl.Conn_(v, created, schema_is_1);} @@ -66,7 +66,7 @@ class Xofc_dir_mgr { } } public void Load_all() { - List_adp list = List_adp_.new_(); + List_adp list = List_adp_.New(); tbl.Select_all(list); int len = list.Count(); hash_by_ids.Clear(); diff --git a/400_xowa/src/gplx/xowa/files/caches/Xofc_dir_tbl.java b/400_xowa/src/gplx/xowa/files/caches/Xofc_dir_tbl.java index 4b21f8441..c0fe6f4c3 100644 --- a/400_xowa/src/gplx/xowa/files/caches/Xofc_dir_tbl.java +++ b/400_xowa/src/gplx/xowa/files/caches/Xofc_dir_tbl.java @@ -18,9 +18,9 @@ along with this program. If not, see . package gplx.xowa.files.caches; import gplx.*; import gplx.xowa.*; import gplx.xowa.files.*; import gplx.dbs.*; import gplx.dbs.engines.sqlite.*; class Xofc_dir_tbl implements Rls_able { - private String tbl_name = "file_cache_dir"; private final Dbmeta_fld_list flds = Dbmeta_fld_list.new_(); + private String tbl_name = "file_cache_dir"; private final Dbmeta_fld_list flds = new Dbmeta_fld_list(); private String fld_id, fld_name; - private Db_conn conn; private final Db_stmt_bldr stmt_bldr = new Db_stmt_bldr(); private Db_stmt select_stmt; + private Db_conn conn; private final Db_stmt_bldr stmt_bldr = new Db_stmt_bldr(); private Db_stmt select_stmt; public void Conn_(Db_conn new_conn, boolean created, boolean schema_is_1) { this.conn = new_conn; flds.Clear(); String fld_prefix = ""; diff --git a/400_xowa/src/gplx/xowa/files/caches/Xofc_fil_mgr.java b/400_xowa/src/gplx/xowa/files/caches/Xofc_fil_mgr.java index 9ca0453fa..9ac5794c7 100644 --- a/400_xowa/src/gplx/xowa/files/caches/Xofc_fil_mgr.java +++ b/400_xowa/src/gplx/xowa/files/caches/Xofc_fil_mgr.java @@ -20,7 +20,7 @@ import gplx.core.primitives.*; import gplx.dbs.*; import gplx.fsdb.*; import gplx.xowa.wikis.*; import gplx.xowa.files.repos.*; class Xofc_fil_mgr { private Xof_cache_mgr cache_mgr; - private final Xofc_fil_tbl tbl = new Xofc_fil_tbl(); private final Ordered_hash hash = Ordered_hash_.New_bry(); private final Bry_bfr key_bldr = Bry_bfr.reset_(255); + private final Xofc_fil_tbl tbl = new Xofc_fil_tbl(); private final Ordered_hash hash = Ordered_hash_.New_bry(); private final Bry_bfr key_bldr = Bry_bfr_.Reset(255); public Xofc_fil_mgr(Xof_cache_mgr v) {this.cache_mgr = v;} public void Conn_(Db_conn v, boolean created, boolean schema_is_1) {tbl.Conn_(v, created, schema_is_1);} public void Save_all() { @@ -84,7 +84,7 @@ class Xofc_fil_mgr { int len = hash.Count(); long cur_size = 0, actl_size = 0; Xof_url_bldr url_bldr = new Xof_url_bldr(); - List_adp deleted = List_adp_.new_(); + List_adp deleted = List_adp_.New(); tbl.Conn().Txn_bgn("user__file_cache__compress"); long compress_to = cfg_mgr.Cache_min(); for (int i = 0; i < len; ++i) { diff --git a/400_xowa/src/gplx/xowa/files/caches/Xofc_fil_tbl.java b/400_xowa/src/gplx/xowa/files/caches/Xofc_fil_tbl.java index 845e23606..b53d57614 100644 --- a/400_xowa/src/gplx/xowa/files/caches/Xofc_fil_tbl.java +++ b/400_xowa/src/gplx/xowa/files/caches/Xofc_fil_tbl.java @@ -18,9 +18,9 @@ along with this program. If not, see . package gplx.xowa.files.caches; import gplx.*; import gplx.xowa.*; import gplx.xowa.files.*; import gplx.dbs.*; import gplx.dbs.engines.sqlite.*; class Xofc_fil_tbl implements Rls_able { - private String tbl_name = "file_cache_fil"; private final Dbmeta_fld_list flds = Dbmeta_fld_list.new_(); + private String tbl_name = "file_cache_fil"; private final Dbmeta_fld_list flds = new Dbmeta_fld_list(); private String fld_uid, fld_dir_id, fld_name, fld_is_orig, fld_w, fld_h, fld_time, fld_page, fld_ext, fld_size, fld_cache_time; - private Db_conn conn; private final Db_stmt_bldr stmt_bldr = new Db_stmt_bldr(); private Db_stmt select_itm_stmt, select_itm_v2_stmt; + private Db_conn conn; private final Db_stmt_bldr stmt_bldr = new Db_stmt_bldr(); private Db_stmt select_itm_stmt, select_itm_v2_stmt; public Db_conn Conn() {return conn;} public void Conn_(Db_conn new_conn, boolean created, boolean schema_is_1) { this.conn = new_conn; flds.Clear(); diff --git a/400_xowa/src/gplx/xowa/files/caches/Xou_cache_finder_.java b/400_xowa/src/gplx/xowa/files/caches/Xou_cache_finder_.java index 3771b24dd..35d79d612 100644 --- a/400_xowa/src/gplx/xowa/files/caches/Xou_cache_finder_.java +++ b/400_xowa/src/gplx/xowa/files/caches/Xou_cache_finder_.java @@ -18,8 +18,8 @@ along with this program. If not, see . package gplx.xowa.files.caches; import gplx.*; import gplx.xowa.*; import gplx.xowa.files.*; import gplx.xowa.files.repos.*; public class Xou_cache_finder_ { - public static final Xou_cache_finder Noop = new Xou_cache_finder_noop(); - public static Xou_cache_finder New_mem() {return new Xou_cache_finder_mem();} + public static final Xou_cache_finder Noop = new Xou_cache_finder_noop(); + public static Xou_cache_finder_mem New_mem() {return new Xou_cache_finder_mem();} public static Xou_cache_finder New_db(Xou_cache_mgr cache_mgr) {return new Xou_cache_finder_db(cache_mgr);} } class Xou_cache_finder_noop implements Xou_cache_finder { @@ -30,32 +30,9 @@ class Xou_cache_finder_noop implements Xou_cache_finder { public void Clear() {} public void Add(Xof_fsdb_itm fsdb_itm) {} } -class Xou_cache_finder_mem implements Xou_cache_finder { - private final Ordered_hash hash = Ordered_hash_.New_bry(); - private final Bry_bfr tmp_bfr = Bry_bfr.new_(255); - private final Xof_img_size img_size = new Xof_img_size(); - private final Xof_url_bldr url_bldr = Xof_url_bldr.new_v2(); - public boolean Find(Xow_wiki wiki, byte[] page_url, Xof_fsdb_itm cur) { - byte[] key = Xou_cache_itm.Key_gen(tmp_bfr, cur.Lnki_wiki_abrv(), cur.Lnki_ttl(), cur.Lnki_type(), cur.Lnki_upright(), cur.Lnki_w(), cur.Lnki_h(), cur.Lnki_time(), cur.Lnki_page(), cur.User_thumb_w()); - Xof_fsdb_itm mem = (Xof_fsdb_itm)hash.Get_by(key); - if (mem == null) { - cur.Init_at_cache(false, 0, 0, Io_url_.Empty); - return false; - } - Xof_repo_itm repo = wiki.File__repo_mgr().Get_trg_by_id_or_null(mem.Orig_repo_id(), mem.Lnki_ttl(), page_url); - mem.Init_at_html(Xof_exec_tid.Tid_wiki_page, img_size, repo, url_bldr); - cur.Init_at_cache(true, mem.Html_w(), mem.Html_h(), mem.Html_view_url()); - return true; - } - public void Clear() {} - public void Add(Xof_fsdb_itm cur) { - byte[] key = Xou_cache_itm.Key_gen(tmp_bfr, cur.Lnki_wiki_abrv(), cur.Lnki_ttl(), cur.Lnki_type(), cur.Lnki_upright(), cur.Lnki_w(), cur.Lnki_h(), cur.Lnki_time(), cur.Lnki_page(), cur.User_thumb_w()); - hash.Add(key, cur); - } -} class Xou_cache_finder_db implements Xou_cache_finder { - private final Xou_cache_mgr cache_mgr; - private final Xof_img_size img_size = new Xof_img_size(); private final Xof_url_bldr url_bldr = Xof_url_bldr.new_v2(); + private final Xou_cache_mgr cache_mgr; + private final Xof_img_size img_size = new Xof_img_size(); private final Xof_url_bldr url_bldr = Xof_url_bldr.new_v2(); public Xou_cache_finder_db(Xou_cache_mgr cache_mgr) {this.cache_mgr = cache_mgr;} public boolean Find(Xow_wiki wiki, byte[] page_url, Xof_fsdb_itm cur) { Xou_cache_itm cache_itm = cache_mgr.Get_or_null(cur); diff --git a/400_xowa/src/gplx/xowa/files/caches/Xou_cache_finder_mem.java b/400_xowa/src/gplx/xowa/files/caches/Xou_cache_finder_mem.java new file mode 100644 index 000000000..c1bc3d125 --- /dev/null +++ b/400_xowa/src/gplx/xowa/files/caches/Xou_cache_finder_mem.java @@ -0,0 +1,43 @@ +/* +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.files.caches; import gplx.*; import gplx.xowa.*; import gplx.xowa.files.*; +import gplx.xowa.files.repos.*; +public class Xou_cache_finder_mem implements Xou_cache_finder { + private final Ordered_hash hash = Ordered_hash_.New_bry(); + private final Bry_bfr tmp_bfr = Bry_bfr_.New_w_size(255); + private final Xof_img_size img_size = new Xof_img_size(); + private final Xof_url_bldr url_bldr = Xof_url_bldr.new_v2(); + public boolean Find(Xow_wiki wiki, byte[] page_url, Xof_fsdb_itm cur) { + byte[] key = Xou_cache_itm.Key_gen(tmp_bfr, cur.Lnki_wiki_abrv(), cur.Lnki_ttl(), cur.Lnki_type(), cur.Lnki_upright(), cur.Lnki_w(), cur.Lnki_h(), cur.Lnki_time(), cur.Lnki_page(), cur.User_thumb_w()); + Xof_fsdb_itm mem = (Xof_fsdb_itm)hash.Get_by(key); + if (mem == null) { + cur.Init_at_cache(false, 0, 0, Io_url_.Empty); + return false; + } + Xof_repo_itm repo = wiki.File__repo_mgr().Get_trg_by_id_or_null(mem.Orig_repo_id(), mem.Lnki_ttl(), page_url); + if (repo != null) // HACK: ignore null repo for tests that don't create repos; DATE:2016-06-18 + mem.Init_at_html(Xof_exec_tid.Tid_wiki_page, img_size, repo, url_bldr); + cur.Init_at_cache(true, mem.Html_w(), mem.Html_h(), mem.Html_view_url()); + return true; + } + public void Clear() {} + public void Add(Xof_fsdb_itm cur) { + byte[] key = Xou_cache_itm.Key_gen(tmp_bfr, cur.Lnki_wiki_abrv(), cur.Lnki_ttl(), cur.Lnki_type(), cur.Lnki_upright(), cur.Lnki_w(), cur.Lnki_h(), cur.Lnki_time(), cur.Lnki_page(), cur.User_thumb_w()); + hash.Add(key, cur); + } +} diff --git a/400_xowa/src/gplx/xowa/files/caches/Xou_cache_mgr.java b/400_xowa/src/gplx/xowa/files/caches/Xou_cache_mgr.java index f87316476..e79101c7b 100644 --- a/400_xowa/src/gplx/xowa/files/caches/Xou_cache_mgr.java +++ b/400_xowa/src/gplx/xowa/files/caches/Xou_cache_mgr.java @@ -20,9 +20,9 @@ import gplx.core.primitives.*; import gplx.dbs.*; import gplx.dbs.cfgs.*; import gplx.xowa.files.fsdb.*; import gplx.xowa.files.repos.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.domains.*; import gplx.xowa.users.data.*; public class Xou_cache_mgr { - private final Xoa_wiki_mgr wiki_mgr; private final Xou_cache_tbl cache_tbl; private final Db_cfg_tbl cfg_tbl; private final Bry_bfr key_bfr = Bry_bfr.reset_(512); - private final Ordered_hash hash = Ordered_hash_.New_bry(); private final Xof_url_bldr url_bldr = Xof_url_bldr.new_v2(); private final Object thread_lock = new Object(); - private final Io_url cache_dir; private boolean db_load_needed = true; + private final Xoa_wiki_mgr wiki_mgr; private final Xou_cache_tbl cache_tbl; private final Db_cfg_tbl cfg_tbl; private final Bry_bfr key_bfr = Bry_bfr_.Reset(512); + private final Ordered_hash hash = Ordered_hash_.New_bry(); private final Xof_url_bldr url_bldr = Xof_url_bldr.new_v2(); private final Object thread_lock = new Object(); + private final Io_url cache_dir; private boolean db_load_needed = true; public Xou_cache_mgr(Xoa_wiki_mgr wiki_mgr, Io_url cache_dir, Xou_db_file db_file) { this.wiki_mgr = wiki_mgr; this.cache_dir = cache_dir; this.cfg_tbl = db_file.Tbl__cfg(); @@ -132,7 +132,7 @@ public class Xou_cache_mgr { grp_hash.Sort_by(Xou_cache_grp_sorter.Instance); // sorts by cache_time desc len = grp_hash.Count(); long fsys_size_calc = 0, fsys_size_temp = 0; - List_adp deleted = List_adp_.new_(); + List_adp deleted = List_adp_.New(); for (int i = 0; i < len; ++i) { // iterate and find items to delete Xou_cache_grp grp = (Xou_cache_grp)grp_hash.Get_at(i); fsys_size_temp = fsys_size_calc + grp.File_size(); @@ -175,11 +175,11 @@ public class Xou_cache_mgr { } } class Xou_cache_grp { - private final List_adp list = List_adp_.new_(); + private final List_adp list = List_adp_.New(); public Xou_cache_grp(Io_url file_url) {this.file_url = file_url;} public long View_date() {return view_date;} private long view_date; public long File_size() {return file_size;} private long file_size; - public Io_url File_url() {return file_url;} private final Io_url file_url; + public Io_url File_url() {return file_url;} private final Io_url file_url; public int Len() {return list.Count();} public void Add(Xou_cache_itm itm) { if (itm.View_date() > view_date) view_date = itm.View_date(); @@ -213,5 +213,5 @@ class Xou_cache_grp_sorter implements gplx.core.lists.ComparerAble { Xou_cache_grp rhs = (Xou_cache_grp)rhsObj; return -Long_.Compare(lhs.View_date(), rhs.View_date()); // - for DESC sort } - public static final Xou_cache_grp_sorter Instance = new Xou_cache_grp_sorter(); Xou_cache_grp_sorter() {} + public static final Xou_cache_grp_sorter Instance = new Xou_cache_grp_sorter(); Xou_cache_grp_sorter() {} } diff --git a/400_xowa/src/gplx/xowa/files/caches/Xou_cache_tbl.java b/400_xowa/src/gplx/xowa/files/caches/Xou_cache_tbl.java index 58f937546..13ff1c03f 100644 --- a/400_xowa/src/gplx/xowa/files/caches/Xou_cache_tbl.java +++ b/400_xowa/src/gplx/xowa/files/caches/Xou_cache_tbl.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.xowa.files.caches; import gplx.*; import gplx.xowa.*; import gplx.xowa.files.*; import gplx.dbs.*; public class Xou_cache_tbl implements Rls_able { - private String tbl_name = "file_cache"; private final Dbmeta_fld_list flds = Dbmeta_fld_list.new_(); + private String tbl_name = "file_cache"; private final Dbmeta_fld_list flds = new Dbmeta_fld_list(); private String fld_lnki_wiki_abrv, fld_lnki_ttl, fld_lnki_type, fld_lnki_upright, fld_lnki_w, fld_lnki_h, fld_lnki_time, fld_lnki_page, fld_user_thumb_w , fld_orig_repo, fld_orig_ttl, fld_orig_ext, fld_orig_w, fld_orig_h @@ -28,8 +28,8 @@ public class Xou_cache_tbl implements Rls_able { ; public String Tbl_name() {return tbl_name;} public String Fld_orig_ttl() {return fld_orig_ttl;} - private final Db_conn conn; private final Db_stmt_bldr stmt_bldr = new Db_stmt_bldr(); private Db_stmt select_stmt; - private final Bry_bfr lnki_key_bfr = Bry_bfr.reset_(255); + private final Db_conn conn; private final Db_stmt_bldr stmt_bldr = new Db_stmt_bldr(); private Db_stmt select_stmt; + private final Bry_bfr lnki_key_bfr = Bry_bfr_.Reset(255); public Db_conn Conn() {return conn;} public Xou_cache_tbl(Db_conn conn) { this.conn = conn; diff --git a/400_xowa/src/gplx/xowa/files/caches/Xou_cache_tbl_tst.java b/400_xowa/src/gplx/xowa/files/caches/Xou_cache_tbl_tst.java index 3ffb7ee76..e696ca91e 100644 --- a/400_xowa/src/gplx/xowa/files/caches/Xou_cache_tbl_tst.java +++ b/400_xowa/src/gplx/xowa/files/caches/Xou_cache_tbl_tst.java @@ -18,12 +18,12 @@ along with this program. If not, see . package gplx.xowa.files.caches; import gplx.*; import gplx.xowa.*; import gplx.xowa.files.*; import org.junit.*; import gplx.dbs.*; public class Xou_cache_tbl_tst { - @Before public void init() {fxt.Clear();} private final Xou_cache_tbl_fxt fxt = new Xou_cache_tbl_fxt(); + @Before public void init() {fxt.Clear();} private final Xou_cache_tbl_fxt fxt = new Xou_cache_tbl_fxt(); @Test public void Orig_ttl__same() {fxt.Test_save_orig_ttl("A.png", "A.png", "");} @Test public void Orig_ttl__redirect() {fxt.Test_save_orig_ttl("A.png", "B.png", "B.png");} } class Xou_cache_tbl_fxt { - private final Bry_bfr lnki_key_bfr = Bry_bfr.new_(255); + private final Bry_bfr lnki_key_bfr = Bry_bfr_.New_w_size(255); private Xou_cache_tbl tbl; public void Clear() { Io_mgr.Instance.InitEngine_mem(); diff --git a/400_xowa/src/gplx/xowa/files/cnvs/Xof_img_wkr_resize_img_mok.java b/400_xowa/src/gplx/xowa/files/cnvs/Xof_img_wkr_resize_img_mok.java index 6f6ca1d43..703dfb432 100644 --- a/400_xowa/src/gplx/xowa/files/cnvs/Xof_img_wkr_resize_img_mok.java +++ b/400_xowa/src/gplx/xowa/files/cnvs/Xof_img_wkr_resize_img_mok.java @@ -16,7 +16,9 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.files.cnvs; import gplx.*; import gplx.xowa.*; import gplx.xowa.files.*; -import gplx.core.primitives.*; import gplx.gfui.*; import gplx.xowa.files.cnvs.*; +import gplx.core.primitives.*; +import gplx.gfui.*; import gplx.gfui.imgs.*; +import gplx.xowa.files.cnvs.*; public class Xof_img_wkr_resize_img_mok implements Xof_img_wkr_resize_img { public boolean Resize_exec(Io_url src, Io_url trg, int trg_w, int trg_h, int ext_id, String_obj_ref rslt_val) { SizeAdp src_size = ImageAdp_.txt_fil_(src).Size(); @@ -26,5 +28,5 @@ public class Xof_img_wkr_resize_img_mok implements Xof_img_wkr_resize_img { Io_mgr.Instance.SaveFilStr(trg, SizeAdp_.new_(trg_w, trg_h).To_str()); return true; } - public static final Xof_img_wkr_resize_img_mok Instance = new Xof_img_wkr_resize_img_mok(); Xof_img_wkr_resize_img_mok() {} + public static final Xof_img_wkr_resize_img_mok Instance = new Xof_img_wkr_resize_img_mok(); Xof_img_wkr_resize_img_mok() {} } diff --git a/400_xowa/src/gplx/xowa/files/commons/Xof_commons_image_tbl.java b/400_xowa/src/gplx/xowa/files/commons/Xof_commons_image_tbl.java index e0dd3555e..a4814afe4 100644 --- a/400_xowa/src/gplx/xowa/files/commons/Xof_commons_image_tbl.java +++ b/400_xowa/src/gplx/xowa/files/commons/Xof_commons_image_tbl.java @@ -52,8 +52,8 @@ public class Xof_commons_image_tbl implements Rls_able { ); } finally {rdr.Rls();} } - private static final String tbl_name = "image"; private static final Dbmeta_fld_list flds = Dbmeta_fld_list.new_(); - private static final String + private static final String tbl_name = "image"; private static final Dbmeta_fld_list flds = new Dbmeta_fld_list(); + private static final String fld_img_name = flds.Add_str("img_name", 255) // varbinary(255) , fld_img_media_type = flds.Add_str("img_media_type", 255) // enum('UNKNOWN','BITMAP','DRAWING','AUDIO','VIDEO','MULTIMEDIA','OFFICE','TEXT','EXECUTABLE','ARCHIVE')" , fld_img_minor_mime = flds.Add_str("img_minor_mime", 255) // DEFAULT 'unknown'" diff --git a/400_xowa/src/gplx/xowa/files/exts/Xof_rule_grp.java b/400_xowa/src/gplx/xowa/files/exts/Xof_rule_grp.java index 1ab4648de..dcd131c52 100644 --- a/400_xowa/src/gplx/xowa/files/exts/Xof_rule_grp.java +++ b/400_xowa/src/gplx/xowa/files/exts/Xof_rule_grp.java @@ -17,11 +17,11 @@ along with this program. If not, see . */ package gplx.xowa.files.exts; import gplx.*; import gplx.xowa.*; import gplx.xowa.files.*; import gplx.core.primitives.*; -public class Xof_rule_grp implements GfoInvkAble { - private final Hash_adp_bry hash = Hash_adp_bry.cs(); +public class Xof_rule_grp implements Gfo_invk { + private final Hash_adp_bry hash = Hash_adp_bry.cs(); public Xof_rule_grp(Xof_rule_mgr owner, byte[] key) {this.owner = owner; this.key = key;} - public Xof_rule_mgr Owner() {return owner;} private final Xof_rule_mgr owner; - public byte[] Key() {return key;} private final byte[] key; + public Xof_rule_mgr Owner() {return owner;} private final Xof_rule_mgr owner; + public byte[] Key() {return key;} private final byte[] key; public Xof_rule_itm Get_or_null(byte[] ext_bry) {return (Xof_rule_itm)hash.Get_by_bry(ext_bry);} public Xof_rule_itm Get_or_new(byte[] ext_bry) { Xof_rule_itm rv = Get_or_null(ext_bry); @@ -35,7 +35,7 @@ public class Xof_rule_grp implements GfoInvkAble { public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_owner)) return owner; else if (ctx.Match(k, Invk_set)) return Get_or_new(Bry_.new_u8(m.ReadStr("v"))); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; } private static final String Invk_owner = "owner", Invk_set = "set"; private static final String Grp_app_default_str = "app_default"; public static byte[] Grp_app_default = Bry_.new_u8(Grp_app_default_str); diff --git a/400_xowa/src/gplx/xowa/files/exts/Xof_rule_itm.java b/400_xowa/src/gplx/xowa/files/exts/Xof_rule_itm.java index 3da2b6a18..8976d0609 100644 --- a/400_xowa/src/gplx/xowa/files/exts/Xof_rule_itm.java +++ b/400_xowa/src/gplx/xowa/files/exts/Xof_rule_itm.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.files.exts; import gplx.*; import gplx.xowa.*; import gplx.xowa.files.*; import gplx.xowa.apps.*; -public class Xof_rule_itm implements GfoInvkAble { +public class Xof_rule_itm implements Gfo_invk { public Xof_rule_itm(Xof_rule_grp owner, Xof_ext ext) {this.owner = owner;} // NOTE: ext currently not used; may want to set as property in future; DATE:2015-02-14 public Xof_rule_grp Owner() {return owner;} private Xof_rule_grp owner; public long Make_max() {return make_max;} public Xof_rule_itm Make_max_(long v) {make_max = v; return this;} long make_max = Max_wildcard; @@ -26,7 +26,7 @@ public class Xof_rule_itm implements GfoInvkAble { if (ctx.Match(k, Invk_owner)) return owner; else if (ctx.Match(k, Invk_make_max_)) make_max = gplx.core.ios.Io_size_.Load_int_(m); else if (ctx.Match(k, Invk_view_max_)) view_max = gplx.core.ios.Io_size_.Load_int_(m); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String Invk_owner = "owner", Invk_make_max_ = "make_max_", Invk_view_max_ = "view_max_"; public static final long Max_wildcard = -1; diff --git a/400_xowa/src/gplx/xowa/files/exts/Xof_rule_mgr.java b/400_xowa/src/gplx/xowa/files/exts/Xof_rule_mgr.java index 549c6283e..e0938758d 100644 --- a/400_xowa/src/gplx/xowa/files/exts/Xof_rule_mgr.java +++ b/400_xowa/src/gplx/xowa/files/exts/Xof_rule_mgr.java @@ -17,8 +17,8 @@ along with this program. If not, see . */ package gplx.xowa.files.exts; import gplx.*; import gplx.xowa.*; import gplx.xowa.files.*; import gplx.xowa.apps.*; -public class Xof_rule_mgr implements GfoInvkAble { - private final Hash_adp_bry hash = Hash_adp_bry.cs(); +public class Xof_rule_mgr implements Gfo_invk { + private final Hash_adp_bry hash = Hash_adp_bry.cs(); public Xof_rule_mgr() { Xof_rule_grp app_default = new Xof_rule_grp(this, Xof_rule_grp.Grp_app_default); Set_app_default(app_default, Io_mgr.Len_gb, Xof_ext_.Bry__ary); @@ -40,6 +40,6 @@ public class Xof_rule_mgr implements GfoInvkAble { } public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_set)) return Get_or_new(Bry_.new_u8(m.ReadStr("v"))); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; } private static final String Invk_set = "set"; } diff --git a/400_xowa/src/gplx/xowa/files/fsdb/Xof_fsdb_mgr__sql.java b/400_xowa/src/gplx/xowa/files/fsdb/Xof_fsdb_mgr__sql.java index a0ae964cd..38f1050f8 100644 --- a/400_xowa/src/gplx/xowa/files/fsdb/Xof_fsdb_mgr__sql.java +++ b/400_xowa/src/gplx/xowa/files/fsdb/Xof_fsdb_mgr__sql.java @@ -21,7 +21,7 @@ import gplx.core.ios.*; import gplx.dbs.*; import gplx.xowa.wikis.data.*; import gplx.fsdb.*; import gplx.fsdb.meta.*; import gplx.xowa.files.*; import gplx.xowa.files.repos.*; import gplx.xowa.files.imgs.*; import gplx.xowa.files.origs.*; import gplx.xowa.files.bins.*; import gplx.xowa.files.caches.*; import gplx.xowa.files.gui.*; -public class Xof_fsdb_mgr__sql implements Xof_fsdb_mgr, GfoInvkAble { +public class Xof_fsdb_mgr__sql implements Xof_fsdb_mgr, Gfo_invk { private boolean init = false; private boolean fsdb_enabled = false; private Xow_repo_mgr repo_mgr; private Xof_url_bldr url_bldr; private final Xof_img_size img_size = new Xof_img_size(); public Xof_bin_mgr Bin_mgr() {return bin_mgr;} private Xof_bin_mgr bin_mgr; @@ -64,6 +64,6 @@ public class Xof_fsdb_mgr__sql implements Xof_fsdb_mgr, GfoInvkAble { } public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_mnt_mgr)) return mnt_mgr; - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; } private static final String Invk_mnt_mgr = "mnt_mgr"; } diff --git a/400_xowa/src/gplx/xowa/files/fsdb/fs_roots/Fs_root_fsdb_mgr.java b/400_xowa/src/gplx/xowa/files/fsdb/fs_roots/Fs_root_fsdb_mgr.java index e314aa35f..a9a3f329d 100644 --- a/400_xowa/src/gplx/xowa/files/fsdb/fs_roots/Fs_root_fsdb_mgr.java +++ b/400_xowa/src/gplx/xowa/files/fsdb/fs_roots/Fs_root_fsdb_mgr.java @@ -19,7 +19,7 @@ package gplx.xowa.files.fsdb.fs_roots; import gplx.*; import gplx.xowa.*; import import gplx.core.ios.*; import gplx.core.brys.fmtrs.*; import gplx.core.envs.*; import gplx.fsdb.*; import gplx.fsdb.data.*; import gplx.fsdb.meta.*; import gplx.xowa.files.gui.*; import gplx.xowa.files.origs.*; import gplx.xowa.files.bins.*; import gplx.xowa.files.caches.*; -public class Fs_root_fsdb_mgr implements Xof_fsdb_mgr, GfoInvkAble { // read images from file-system dir +public class Fs_root_fsdb_mgr implements Xof_fsdb_mgr, Gfo_invk { // read images from file-system dir private Xowe_wiki wiki; private Fs_root_wkr_fsdb fsdb_wkr; public Fs_root_fsdb_mgr(Xowe_wiki wiki) {this.Init_by_wiki(wiki); fsdb_wkr = new Fs_root_wkr_fsdb(wiki);} public void Init_by_wiki(Xow_wiki wiki) {this.wiki = (Xowe_wiki)wiki;} @@ -44,7 +44,7 @@ public class Fs_root_fsdb_mgr implements Xof_fsdb_mgr, GfoInvkAble { // read ima if (ctx.Match(k, Invk_root_dir_)) fsdb_wkr.Root_dir_(Xto_url(m.ReadBry("v"))); else if (ctx.Match(k, Invk_orig_dir_)) fsdb_wkr.Orig_dir_(Xto_url(m.ReadBry("v"))); else if (ctx.Match(k, Invk_thumb_dir_)) fsdb_wkr.Thumb_dir_(Xto_url(m.ReadBry("v"))); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String Invk_root_dir_ = "root_dir_", Invk_orig_dir_ = "orig_dir_", Invk_thumb_dir_ = "thumb_dir_"; public Xof_bin_mgr Bin_mgr() {throw Err_.new_unimplemented();} diff --git a/400_xowa/src/gplx/xowa/files/fsdb/fs_roots/Orig_fil_tbl.java b/400_xowa/src/gplx/xowa/files/fsdb/fs_roots/Orig_fil_tbl.java index 344d90b1c..0295fad90 100644 --- a/400_xowa/src/gplx/xowa/files/fsdb/fs_roots/Orig_fil_tbl.java +++ b/400_xowa/src/gplx/xowa/files/fsdb/fs_roots/Orig_fil_tbl.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.xowa.files.fsdb.fs_roots; import gplx.*; import gplx.xowa.*; import gplx.xowa.files.*; import gplx.xowa.files.fsdb.*; import gplx.dbs.*; public class Orig_fil_tbl implements Rls_able { - private String tbl_name = "orig_fil"; private final Dbmeta_fld_list flds = Dbmeta_fld_list.new_(); + private String tbl_name = "orig_fil"; private final Dbmeta_fld_list flds = new Dbmeta_fld_list(); private String fld_uid, fld_name, fld_ext_id, fld_w, fld_h, fld_dir_url; private Db_conn conn; private Db_stmt stmt_insert, stmt_select; public void Conn_(Db_conn new_conn, boolean created, boolean schema_is_1) { diff --git a/400_xowa/src/gplx/xowa/files/fsdb/tsts/Xof_file_fxt.java b/400_xowa/src/gplx/xowa/files/fsdb/tsts/Xof_file_fxt.java index b28f5e945..ed1389048 100644 --- a/400_xowa/src/gplx/xowa/files/fsdb/tsts/Xof_file_fxt.java +++ b/400_xowa/src/gplx/xowa/files/fsdb/tsts/Xof_file_fxt.java @@ -37,7 +37,7 @@ class Xof_file_fxt { this.orig_mgr = wiki.File__orig_mgr(); Xof_repo_fxt.Repos_init(app.File_mgr(), true, wiki); Xowe_wiki_.Create(wiki, 1, "dump.xml"); - Xowd_db_file text_db = wiki.Data__core_mgr().Dbs__make_by_tid(Xowd_db_file_.Tid_text); text_db.Tbl__text().Create_tbl(); + Xow_db_file text_db = wiki.Data__core_mgr().Dbs__make_by_tid(Xow_db_file_.Tid__text); text_db.Tbl__text().Create_tbl(); Fsdb_db_mgr__v2 fsdb_core = Fsdb_db_mgr__v2_bldr.Get_or_make(wiki, Bool_.Y); fsdb_mgr.Mnt_mgr().Ctor_by_load(fsdb_core); fsdb_mgr.Mnt_mgr().Mnts__get_main().Bin_mgr().Dbs__make("temp.xowa"); @@ -59,15 +59,15 @@ class Xof_file_fxt { Fsm_atr_fil atr_fil = mnt_itm.Atr_mgr().Db__core(); Fsm_bin_fil bin_fil = mnt_itm.Bin_mgr().Dbs__get_nth(); if (arg.Is_thumb()) - mnt_itm.Insert_thm(tmp_thm, atr_fil, bin_fil, arg.Wiki(), arg.Ttl(), arg.Ext(), arg.W(), arg.H(), arg.Time(), arg.Page(), arg.Bin().length, gplx.core.ios.Io_stream_rdr_.mem_(arg.Bin())); + mnt_itm.Insert_thm(tmp_thm, atr_fil, bin_fil, arg.Wiki(), arg.Ttl(), arg.Ext(), arg.W(), arg.H(), arg.Time(), arg.Page(), arg.Bin().length, gplx.core.ios.streams.Io_stream_rdr_.mem_(arg.Bin())); else - mnt_itm.Insert_img(tmp_img, atr_fil, bin_fil, arg.Wiki(), arg.Ttl(), arg.Ext(), arg.W(), arg.H(), arg.Bin().length, gplx.core.ios.Io_stream_rdr_.mem_(arg.Bin())); + mnt_itm.Insert_img(tmp_img, atr_fil, bin_fil, arg.Wiki(), arg.Ttl(), arg.Ext(), arg.W(), arg.H(), arg.Bin().length, gplx.core.ios.streams.Io_stream_rdr_.mem_(arg.Bin())); } public void Exec_get(Xof_exec_arg arg) { byte[] ttl_bry = arg.Ttl(); Xof_fsdb_itm itm = new Xof_fsdb_itm(); itm.Init_at_lnki(arg.Exec_tid(), wiki.Domain_itm().Abrv_xo(), ttl_bry, arg.Lnki_type(), arg.Lnki_upright(), arg.Lnki_w(), arg.Lnki_h(), arg.Lnki_time(), Xof_lnki_page.Null, Xof_patch_upright_tid_.Tid_all); - List_adp itms_list = List_adp_.new_(); itms_list.Add(itm); + List_adp itms_list = List_adp_.New(); itms_list.Add(itm); orig_mgr.Find_by_list(Ordered_hash_.New_bry(), itms_list, Xof_exec_tid.Tid_wiki_page); Xoa_ttl ttl = Xoa_ttl.parse(wiki, Xow_ns_.Tid__main, ttl_bry); Xoae_page page = Xoae_page.New(wiki, ttl); diff --git a/400_xowa/src/gplx/xowa/files/gui/Js_img_mgr.java b/400_xowa/src/gplx/xowa/files/gui/Js_img_mgr.java index ce950facf..4113b47e0 100644 --- a/400_xowa/src/gplx/xowa/files/gui/Js_img_mgr.java +++ b/400_xowa/src/gplx/xowa/files/gui/Js_img_mgr.java @@ -30,7 +30,7 @@ public class Js_img_mgr { if (!page.Wiki().App().Mode().Tid_supports_js()) return; // do not update html widget unless app is gui; null ref on http server; DATE:2014-09-17 switch (elem_tid) { case Xof_html_elem.Tid_gallery_v2: - img_wkr.Html_update(page, js_wkr, uid, html_w, html_h, html_view_url, orig_w, orig_h, html_orig_url, lnki_ttl); + img_wkr.Js_wkr__update_hdoc(page, js_wkr, uid, html_w, html_h, html_view_url, orig_w, orig_h, html_orig_url, lnki_ttl); return; } String html_id = To_doc_uid(uid); @@ -44,7 +44,7 @@ public class Js_img_mgr { js_wkr.Html_atr_set("xowa_gallery_div3_" + uid, "style", "margin:" + Gallery_html_wtr_utl.Calc_vpad(gallery_mgr_h, html_h) + "px auto;"); break; case Xof_html_elem.Tid_imap: - img_wkr.Html_update(page, js_wkr, uid, html_w, html_h, html_view_url, orig_w, orig_h, html_orig_url, lnki_ttl); + img_wkr.Js_wkr__update_hdoc(page, js_wkr, uid, html_w, html_h, html_view_url, orig_w, orig_h, html_orig_url, lnki_ttl); break; case Xof_html_elem.Tid_vid: String html_id_vid = "xowa_file_play_" + uid; diff --git a/400_xowa/src/gplx/xowa/files/gui/Js_img_wkr.java b/400_xowa/src/gplx/xowa/files/gui/Js_img_wkr.java index 74839083c..389897471 100644 --- a/400_xowa/src/gplx/xowa/files/gui/Js_img_wkr.java +++ b/400_xowa/src/gplx/xowa/files/gui/Js_img_wkr.java @@ -18,5 +18,5 @@ along with this program. If not, see . package gplx.xowa.files.gui; import gplx.*; import gplx.xowa.*; import gplx.xowa.files.*; import gplx.xowa.guis.views.*; public interface Js_img_wkr { - void Html_update(Xoa_page page, Xog_js_wkr js_wkr, int html_uid, int html_w, int html_h, Io_url html_view_url, int orig_w, int orig_h, Io_url html_orig_url, byte[] lnki_ttl); + void Js_wkr__update_hdoc(Xoa_page page, Xog_js_wkr js_wkr, int html_uid, int html_w, int html_h, Io_url html_view_url, int orig_w, int orig_h, Io_url html_orig_url, byte[] lnki_ttl); } diff --git a/400_xowa/src/gplx/xowa/files/gui/Xog_js_wkr.java b/400_xowa/src/gplx/xowa/files/gui/Xog_js_wkr.java index 12c9e0f8e..524cdbf7b 100644 --- a/400_xowa/src/gplx/xowa/files/gui/Xog_js_wkr.java +++ b/400_xowa/src/gplx/xowa/files/gui/Xog_js_wkr.java @@ -17,10 +17,13 @@ along with this program. If not, see . */ package gplx.xowa.files.gui; import gplx.*; import gplx.xowa.*; import gplx.xowa.files.*; public interface Xog_js_wkr { - void Html_img_update (String uid, String src, int w, int h); - void Html_redlink (String html_uid); + void Html_img_update (String uid, String src, int w, int h); + void Html_redlink (String html_uid); - void Html_atr_set (String uid, String key, String val); - void Html_elem_replace_html (String uid, String html); - void Html_elem_append_above (String uid, String html); + void Html_atr_set (String uid, String key, String val); + void Html_elem_replace_html (String uid, String html); + void Html_elem_append_above (String uid, String html); + void Html_elem_delete (String elem_id); + void Html_gallery_packed_exec (); + void Html_popups_bind_hover_to_doc (); } diff --git a/400_xowa/src/gplx/xowa/files/gui/Xog_js_wkr_.java b/400_xowa/src/gplx/xowa/files/gui/Xog_js_wkr_.java index 6c16c679c..5d95ee5d8 100644 --- a/400_xowa/src/gplx/xowa/files/gui/Xog_js_wkr_.java +++ b/400_xowa/src/gplx/xowa/files/gui/Xog_js_wkr_.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.files.gui; import gplx.*; import gplx.xowa.*; import gplx.xowa.files.*; public class Xog_js_wkr_ { - public static final Xog_js_wkr Noop = new Xog_js_wkr__noop(); + public static final Xog_js_wkr Noop = new Xog_js_wkr__noop(); } class Xog_js_wkr__noop implements Xog_js_wkr { public void Html_img_update (String uid, String src, int w, int h) {} @@ -25,4 +25,7 @@ class Xog_js_wkr__noop implements Xog_js_wkr { public void Html_elem_replace_html (String uid, String html) {} public void Html_elem_append_above (String uid, String html) {} public void Html_redlink (String html_uid) {} + public void Html_elem_delete (String elem_id) {} + public void Html_gallery_packed_exec() {} + public void Html_popups_bind_hover_to_doc() {} } diff --git a/400_xowa/src/gplx/xowa/files/gui/Xog_js_wkr__log.java b/400_xowa/src/gplx/xowa/files/gui/Xog_js_wkr__log.java index 3cdd26486..300d8e7c3 100644 --- a/400_xowa/src/gplx/xowa/files/gui/Xog_js_wkr__log.java +++ b/400_xowa/src/gplx/xowa/files/gui/Xog_js_wkr__log.java @@ -17,18 +17,22 @@ along with this program. If not, see . */ package gplx.xowa.files.gui; import gplx.*; import gplx.xowa.*; import gplx.xowa.files.*; public class Xog_js_wkr__log implements Xog_js_wkr { - private final List_adp log_list = List_adp_.new_(); + private final List_adp log_list = List_adp_.New(); public void Html_img_update (String uid, String src, int w, int h) {log_list.Add(Object_.Ary(Proc_img_update, uid, src, w, h));} public void Html_atr_set (String uid, String key, String val) {log_list.Add(Object_.Ary(Proc_atr_set, uid, key, val));} public void Html_redlink (String uid) {log_list.Add(Object_.Ary(Proc_redlink, uid));} public void Html_elem_replace_html (String uid, String html) {log_list.Add(Object_.Ary(Proc_replace_html, uid, html));} public void Html_elem_append_above (String uid, String html) {log_list.Add(Object_.Ary(Proc_append_above, uid, html));} + public void Html_elem_delete (String elem_id) {log_list.Add(Object_.Ary(Proc_delete, elem_id));} + public void Html_gallery_packed_exec() {log_list.Add(Object_.Ary(Proc_gallery_packed_exec));} + public void Html_popups_bind_hover_to_doc() {log_list.Add(Object_.Ary(Proc_popups_bind_hover_to_doc));} public void Log__clear() {log_list.Clear();} public int Log__len() {return log_list.Count();} public Object[] Log__get_at(int i) {return (Object[])log_list.Get_at(i);} public static final String - Proc_img_update = "img_update", Proc_atr_set = "atr_set", Proc_redlink = "redlink", Proc_replace_html = "replace_html", Proc_append_above = "append_above" + Proc_img_update = "img_update", Proc_atr_set = "atr_set", Proc_redlink = "redlink", Proc_replace_html = "replace_html" + , Proc_append_above = "append_above", Proc_delete = "delete", Proc_gallery_packed_exec = "gallery_packed_exec", Proc_popups_bind_hover_to_doc = "popups_bind_hover_to_doc" ; } diff --git a/400_xowa/src/gplx/xowa/files/imgs/Xof_img_wkr_query_img_size_test.java b/400_xowa/src/gplx/xowa/files/imgs/Xof_img_wkr_query_img_size_test.java index f163f33c5..d5ab99a89 100644 --- a/400_xowa/src/gplx/xowa/files/imgs/Xof_img_wkr_query_img_size_test.java +++ b/400_xowa/src/gplx/xowa/files/imgs/Xof_img_wkr_query_img_size_test.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.files.imgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.files.*; -import gplx.gfui.*; +import gplx.gfui.*; import gplx.gfui.imgs.*; public class Xof_img_wkr_query_img_size_test implements Xof_img_wkr_query_img_size { public SizeAdp Exec(Io_url url) { ImageAdp image = ImageAdp_.txt_fil_(url); diff --git a/400_xowa/src/gplx/xowa/files/origs/Xof_orig_itm.java b/400_xowa/src/gplx/xowa/files/origs/Xof_orig_itm.java index 9032fb875..bcfff4bfa 100644 --- a/400_xowa/src/gplx/xowa/files/origs/Xof_orig_itm.java +++ b/400_xowa/src/gplx/xowa/files/origs/Xof_orig_itm.java @@ -38,13 +38,16 @@ public class Xof_orig_itm { this.w = w; this.h = h; this.redirect = redirect; return this; } + + public int Db_row_size() {return Db_row_size_fixed + redirect.length + ttl.length;} + private static final int Db_row_size_fixed = (5 * 4); // 3 ints; 2 bytes public static final byte Repo_comm = 0, Repo_wiki = 1, Repo_null = Byte_.Max_value_127; // SERIALIZED: "wiki_orig.orig_repo" - public static final Xof_orig_itm Null = null; + public static final Xof_orig_itm Null = null; public static final int File_len_null = -1; // file_len used for filters (EX: don't download ogg > 1 MB) public static String dump(Xof_orig_itm itm) { if (itm == null) return "NULL"; - Bry_bfr bfr = Bry_bfr.new_(255); + Bry_bfr bfr = Bry_bfr_.New_w_size(255); bfr.Add_str_a7("repo").Add_byte_eq().Add_int_variable((int)itm.repo).Add_byte_semic(); bfr.Add_str_a7("ttl").Add_byte_eq().Add(itm.ttl).Add_byte_semic(); bfr.Add_str_a7("ext_id").Add_byte_eq().Add_int_variable(itm.ext_id).Add_byte_semic(); diff --git a/400_xowa/src/gplx/xowa/files/origs/Xof_orig_mgr.java b/400_xowa/src/gplx/xowa/files/origs/Xof_orig_mgr.java index c534b31fd..e86c8aea1 100644 --- a/400_xowa/src/gplx/xowa/files/origs/Xof_orig_mgr.java +++ b/400_xowa/src/gplx/xowa/files/origs/Xof_orig_mgr.java @@ -20,7 +20,7 @@ import gplx.core.primitives.*; import gplx.dbs.*; import gplx.xowa.files.repos.*; import gplx.xowa.files.fsdb.*; import gplx.xowa.bldrs.wms.apis.*; import gplx.xowa.files.downloads.*; public class Xof_orig_mgr { private Xof_orig_wkr[] wkrs; private int wkrs_len; - private Xof_url_bldr url_bldr; private Xow_repo_mgr repo_mgr; private final Xof_img_size img_size = new Xof_img_size(); + private Xof_url_bldr url_bldr; private Xow_repo_mgr repo_mgr; private final Xof_img_size img_size = new Xof_img_size(); public Xof_orig_mgr() {this.Wkrs__clear();} public void Init_by_wiki(Xow_wiki wiki, Xof_fsdb_mode fsdb_mode, Xof_orig_tbl[] orig_tbls, Xof_url_bldr url_bldr) { this.repo_mgr = wiki.File__repo_mgr(); this.url_bldr = url_bldr; @@ -82,7 +82,7 @@ public class Xof_orig_mgr { wkrs_len += v.length; } public void Wkrs_del(byte tid) { - List_adp list = List_adp_.new_(); + List_adp list = List_adp_.New(); for (int i = 0; i < wkrs_len; ++i) { Xof_orig_wkr wkr = wkrs[i]; if (wkr.Tid() == tid) continue; // do not add deleted wkr diff --git a/400_xowa/src/gplx/xowa/files/origs/Xof_orig_tbl.java b/400_xowa/src/gplx/xowa/files/origs/Xof_orig_tbl.java index 1f83e1473..b911ebb41 100644 --- a/400_xowa/src/gplx/xowa/files/origs/Xof_orig_tbl.java +++ b/400_xowa/src/gplx/xowa/files/origs/Xof_orig_tbl.java @@ -20,9 +20,9 @@ import gplx.core.primitives.*; import gplx.dbs.*; import gplx.dbs.utls.*; import gplx.xowa.files.fsdb.*; import gplx.xowa.files.repos.*; public class Xof_orig_tbl implements Rls_able { - private final String tbl_name; private final Dbmeta_fld_list flds = Dbmeta_fld_list.new_(); - private final String fld_repo, fld_ttl, fld_status, fld_ext, fld_w, fld_h, fld_redirect; - private final Db_conn conn; private final Xof_orig_tbl__in_wkr select_in_wkr = new Xof_orig_tbl__in_wkr(); + public final String tbl_name; public final Dbmeta_fld_list flds = new Dbmeta_fld_list(); + public final String fld_repo, fld_ttl, fld_status, fld_ext, fld_w, fld_h, fld_redirect; + public final Db_conn conn; private final Xof_orig_tbl__in_wkr select_in_wkr = new Xof_orig_tbl__in_wkr(); public Db_conn Conn() {return conn;} public Xof_orig_tbl(Db_conn conn, boolean schema_is_1) { this.conn = conn; @@ -47,7 +47,7 @@ public class Xof_orig_tbl implements Rls_able { Db_rdr rdr = conn.Stmt_select(tbl_name, flds, fld_ttl).Clear().Crt_bry_as_str(fld_ttl, ttl).Exec_select__rls_auto(); try { if (rdr.Move_next()) - rv = Make_itm(rdr); + rv = Load_by_rdr(rdr); } finally {rdr.Rls();} return rv; @@ -59,6 +59,9 @@ public class Xof_orig_tbl implements Rls_able { } public void Insert(byte repo, byte[] ttl, int ext, int w, int h, byte[] redirect) { Db_stmt stmt = conn.Stmt_insert(tbl_name, flds); + this.Insert(stmt, repo, ttl, ext, w, h, redirect); + } + public void Insert(Db_stmt stmt, byte repo, byte[] ttl, int ext, int w, int h, byte[] redirect) { stmt.Clear() .Val_bry_as_str(fld_ttl, ttl).Val_byte(fld_repo, repo).Val_byte(fld_status, Status_found) .Val_int(fld_ext, ext).Val_int(fld_w, w).Val_int(fld_h, h).Val_bry_as_str(fld_redirect, redirect) @@ -72,7 +75,7 @@ public class Xof_orig_tbl implements Rls_able { .Crt_byte(fld_repo, repo).Crt_bry_as_str(fld_ttl, ttl) .Exec_update(); } - public Xof_orig_itm Make_itm(Db_rdr rdr) { + public Xof_orig_itm Load_by_rdr(Db_rdr rdr) { byte repo = rdr.Read_byte(fld_repo); Xof_orig_itm rv = new Xof_orig_itm().Init ( repo @@ -106,7 +109,7 @@ class Xof_orig_tbl__in_wkr extends Db_in_wkr__base { @Override protected void Read_data(Cancelable cancelable, Db_rdr rdr) { while (rdr.Move_next()) { if (cancelable.Canceled()) return; - Xof_orig_itm itm = tbl.Make_itm(rdr); + Xof_orig_itm itm = tbl.Load_by_rdr(rdr); if (itm == Xof_orig_itm.Null) continue; byte[] itm_ttl = itm.Ttl(); rv.Add_if_dupe_use_1st(itm_ttl, itm); // guard against dupes; fails on en.w:Paris; DATE:2015-03-08 diff --git a/400_xowa/src/gplx/xowa/files/origs/Xof_orig_tbl_tst.java b/400_xowa/src/gplx/xowa/files/origs/Xof_orig_tbl_tst.java index 0184c79ce..573307350 100644 --- a/400_xowa/src/gplx/xowa/files/origs/Xof_orig_tbl_tst.java +++ b/400_xowa/src/gplx/xowa/files/origs/Xof_orig_tbl_tst.java @@ -46,7 +46,7 @@ class Xof_orig_tbl_fxt { } public void Test_select_in(String[] itms, Xof_orig_itm... expd) { Ordered_hash rv = Ordered_hash_.New(); - List_adp list = List_adp_.new_(); + List_adp list = List_adp_.New(); int itms_len = itms.length; for (int i = 0; i < itms_len; ++i) { String itm = itms[i]; @@ -58,7 +58,7 @@ class Xof_orig_tbl_fxt { Tfds.Eq_str_lines(To_str_ary(expd), To_str_ary((Xof_orig_itm[])rv.To_ary(Xof_orig_itm.class))); } private static String To_str_ary(Xof_orig_itm... ary) { - Bry_bfr bfr = Bry_bfr.reset_(255); + Bry_bfr bfr = Bry_bfr_.Reset(255); int len = ary.length; for (int i = 0; i < len; ++i) { Xof_orig_itm itm = ary[i]; diff --git a/400_xowa/src/gplx/xowa/files/origs/Xof_orig_wkr__xo_meta.java b/400_xowa/src/gplx/xowa/files/origs/Xof_orig_wkr__xo_meta.java index d7a7e5936..bd1042903 100644 --- a/400_xowa/src/gplx/xowa/files/origs/Xof_orig_wkr__xo_meta.java +++ b/400_xowa/src/gplx/xowa/files/origs/Xof_orig_wkr__xo_meta.java @@ -20,8 +20,8 @@ import gplx.core.flds.*; import gplx.dbs.*; import gplx.xowa.files.fsdb.*; import gplx.xowa.wikis.tdbs.metas.*; public class Xof_orig_wkr__xo_meta implements Xof_orig_wkr { - private final Io_url wiki_meta_dir; private final byte dir_spr_byte; private final Bry_bfr url_bfr = Bry_bfr.new_(255); - private final Gfo_fld_rdr meta_rdr = Gfo_fld_rdr.xowa_(); private final Xof_meta_thumb_parser parser = new Xof_meta_thumb_parser(); + private final Io_url wiki_meta_dir; private final byte dir_spr_byte; private final Bry_bfr url_bfr = Bry_bfr_.New_w_size(255); + private final Gfo_fld_rdr meta_rdr = Gfo_fld_rdr.xowa_(); private final Xof_meta_thumb_parser parser = new Xof_meta_thumb_parser(); public Xof_orig_wkr__xo_meta(Io_url wiki_meta_dir) {this.wiki_meta_dir = wiki_meta_dir; this.dir_spr_byte = wiki_meta_dir.Info().DirSpr_byte();} public byte Tid() {return Xof_orig_wkr_.Tid_xowa_meta;} public void Find_by_list(Ordered_hash rv, List_adp itms) {Xof_orig_wkr_.Find_by_list(this, rv, itms);} diff --git a/400_xowa/src/gplx/xowa/files/origs/Xof_wiki_finder.java b/400_xowa/src/gplx/xowa/files/origs/Xof_wiki_finder.java index 6c56d1a6f..773ff7563 100644 --- a/400_xowa/src/gplx/xowa/files/origs/Xof_wiki_finder.java +++ b/400_xowa/src/gplx/xowa/files/origs/Xof_wiki_finder.java @@ -33,7 +33,7 @@ class Xof_wiki_finder { // UNUSED private Xoae_page Get_page__by_wiki(Xowe_wiki wiki, int ns_id, byte[] ttl_bry) { Xoa_ttl ttl = Xoa_ttl.parse(wiki, ns_id, ttl_bry) ; Xoa_url url = Xoa_url.new_(wiki.Domain_bry(), ttl_bry); - return wiki.Data_mgr().Load_page_by_ttl(url, ttl); + return wiki.Data_mgr().Load_page_and_parse(url, ttl); } private int qry_count, qry_count_max = 1000; public boolean Find_page(Xof_wiki_finder_itm itm, int ns_id, byte[] ttl_bry) { @@ -65,7 +65,7 @@ class Xof_wiki_finder { // UNUSED } private boolean Find_page__by_wiki(Xowd_page_itm db_page, Xowe_wiki wiki, int ns_id, byte[] ttl_bry) { Xow_ns ns = wiki.Ns_mgr().Ids_get_or_null(ns_id); - wiki.Db_mgr().Load_mgr().Load_page(db_page, ns, false); + wiki.Db_mgr().Load_mgr().Load_page(db_page, ns); return db_page.Exists(); } } diff --git a/400_xowa/src/gplx/xowa/files/repos/Xof_repo_itm.java b/400_xowa/src/gplx/xowa/files/repos/Xof_repo_itm.java index fbd57c811..74e0c0dc5 100644 --- a/400_xowa/src/gplx/xowa/files/repos/Xof_repo_itm.java +++ b/400_xowa/src/gplx/xowa/files/repos/Xof_repo_itm.java @@ -19,13 +19,13 @@ package gplx.xowa.files.repos; import gplx.*; import gplx.xowa.*; import gplx.xo import gplx.core.btries.*; import gplx.core.consoles.*; import gplx.xowa.apps.fsys.*; import gplx.xowa.files.exts.*; import gplx.xowa.wikis.domains.*; -public class Xof_repo_itm implements GfoInvkAble { - private final Xoa_fsys_mgr app_fsys; private final Xof_rule_mgr ext_rule_mgr; private final Bry_bfr tmp_bfr = Bry_bfr.reset_(300); +public class Xof_repo_itm implements Gfo_invk { + private final Xoa_fsys_mgr app_fsys; private final Xof_rule_mgr ext_rule_mgr; private final Bry_bfr tmp_bfr = Bry_bfr_.Reset(300); public Xof_repo_itm(byte[] key, Xoa_fsys_mgr app_fsys, Xof_rule_mgr ext_rule_mgr, byte[] wiki_domain) { this.key = key; this.app_fsys = app_fsys; this.ext_rule_mgr = ext_rule_mgr; Wiki_domain_(wiki_domain); } - public byte[] Key() {return key;} private final byte[] key; + public byte[] Key() {return key;} private final byte[] key; public byte[] Wiki_domain() {return wiki_domain;} private byte[] wiki_domain; public byte[] Wiki_abrv_xo() {return wiki_abrv_xo;} private byte[] wiki_abrv_xo; public byte[] Root_bry() {return root_bry;} private byte[] root_bry; @@ -80,7 +80,7 @@ public class Xof_repo_itm implements GfoInvkAble { else if (ctx.Match(k, Invk_ext_rules_)) Ext_rules_(m.ReadBry("v")); else if (ctx.Match(k, Invk_wmf_api_)) wmf_api = m.ReadYn("v"); else if (ctx.Match(k, Invk_tarball_)) tarball = m.ReadYn("v"); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String Invk_owner = "owner", Invk_fsys_ = "fsys_", Invk_ext_rules_ = "ext_rules_", Invk_primary_ = "primary_", Invk_wmf_api_ = "wmf_api_", Invk_tarball_ = "tarball_"; diff --git a/400_xowa/src/gplx/xowa/files/repos/Xof_repo_pair.java b/400_xowa/src/gplx/xowa/files/repos/Xof_repo_pair.java index 01bc502de..4d938b2d3 100644 --- a/400_xowa/src/gplx/xowa/files/repos/Xof_repo_pair.java +++ b/400_xowa/src/gplx/xowa/files/repos/Xof_repo_pair.java @@ -16,17 +16,17 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.files.repos; import gplx.*; import gplx.xowa.*; import gplx.xowa.files.*; -public class Xof_repo_pair implements GfoInvkAble { +public class Xof_repo_pair implements Gfo_invk { public Xof_repo_pair(byte repo_idx, byte[] wiki_domain, Xof_repo_itm src, Xof_repo_itm trg) { this.repo_idx = repo_idx; this.wiki_domain = wiki_domain; this.src = src; this.trg = trg; } public byte Repo_idx() {return repo_idx;} private byte repo_idx; - public byte[] Wiki_domain() {return wiki_domain;} private final byte[] wiki_domain; - public Xof_repo_itm Src() {return src;} private final Xof_repo_itm src; - public Xof_repo_itm Trg() {return trg;} private final Xof_repo_itm trg; + public byte[] Wiki_domain() {return wiki_domain;} private final byte[] wiki_domain; + public Xof_repo_itm Src() {return src;} private final Xof_repo_itm src; + public Xof_repo_itm Trg() {return trg;} private final Xof_repo_itm trg; public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_repo_id_)) repo_idx = m.ReadByte("v"); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String Invk_repo_id_ = "repo_id_"; } diff --git a/400_xowa/src/gplx/xowa/files/repos/Xofw_wiki_wkr_base.java b/400_xowa/src/gplx/xowa/files/repos/Xofw_wiki_wkr_base.java index abb3db31b..0135a84e8 100644 --- a/400_xowa/src/gplx/xowa/files/repos/Xofw_wiki_wkr_base.java +++ b/400_xowa/src/gplx/xowa/files/repos/Xofw_wiki_wkr_base.java @@ -60,7 +60,7 @@ public class Xofw_wiki_wkr_base implements Xofw_wiki_finder { } private byte[] Get_redirect(Xowe_wiki wiki, Xow_ns file_ns, Xowd_page_itm db_page) { if (db_page.Redirected()) { - wiki.Db_mgr().Load_mgr().Load_page(db_page, file_ns, false); + wiki.Db_mgr().Load_mgr().Load_page(db_page, file_ns); byte[] src = db_page.Text(); Xoa_ttl redirect_ttl = wiki.Redirect_mgr().Extract_redirect(src); return redirect_ttl == Xop_redirect_mgr.Redirect_null_ttl ? Xop_redirect_mgr.Redirect_null_bry : redirect_ttl.Page_db(); @@ -68,5 +68,5 @@ public class Xofw_wiki_wkr_base implements Xofw_wiki_finder { else return Xop_redirect_mgr.Redirect_null_bry; } - private static final Xowd_page_itm tmp_db_page = Xowd_page_itm.new_tmp(); + private static final Xowd_page_itm tmp_db_page = Xowd_page_itm.new_tmp(); } diff --git a/400_xowa/src/gplx/xowa/files/repos/Xowe_repo_mgr.java b/400_xowa/src/gplx/xowa/files/repos/Xowe_repo_mgr.java index 58c62c21f..6fb22538e 100644 --- a/400_xowa/src/gplx/xowa/files/repos/Xowe_repo_mgr.java +++ b/400_xowa/src/gplx/xowa/files/repos/Xowe_repo_mgr.java @@ -20,8 +20,8 @@ import gplx.xowa.files.xfers.*; import gplx.xowa.wikis.domains.*; import gplx.xowa.parsers.utils.*; import gplx.xowa.wikis.tdbs.metas.*; -public class Xowe_repo_mgr implements Xow_repo_mgr, GfoInvkAble { - private Xowe_wiki wiki; private final List_adp repos = List_adp_.new_(); +public class Xowe_repo_mgr implements Xow_repo_mgr, Gfo_invk { + private Xowe_wiki wiki; private final List_adp repos = List_adp_.New(); public Xowe_repo_mgr(Xowe_wiki wiki) { this.wiki = wiki; Xoae_app app = wiki.Appe(); @@ -187,7 +187,7 @@ public class Xowe_repo_mgr implements Xow_repo_mgr, GfoInvkAble { public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_add)) return Add_repo(m.ReadBry("src"), m.ReadBry("trg")); else if (ctx.Match(k, Invk_clear)) {repos.Clear(); repos_ary = null;} // reset repos_ary variable - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String Invk_add = "add", Invk_clear = "clear"; public Xof_repo_pair Add_repo(byte[] src_repo_key, byte[] trg_repo_key) { diff --git a/400_xowa/src/gplx/xowa/files/xfers/Xof_xfer_queue.java b/400_xowa/src/gplx/xowa/files/xfers/Xof_xfer_queue.java index e1de14e3e..984cd1775 100644 --- a/400_xowa/src/gplx/xowa/files/xfers/Xof_xfer_queue.java +++ b/400_xowa/src/gplx/xowa/files/xfers/Xof_xfer_queue.java @@ -21,8 +21,8 @@ import gplx.xowa.files.*; import gplx.xowa.files.fsdb.*; import gplx.xowa.files. import gplx.xowa.files.gui.*; import gplx.xowa.wikis.tdbs.metas.*; public class Xof_xfer_queue { - private final List_adp xfer_list = List_adp_.new_(); private final Ordered_hash dirty_meta_mgrs = Ordered_hash_.New_bry(); - public Int_obj_ref Html_uid() {return html_uid;} private Int_obj_ref html_uid = Int_obj_ref.neg1_(); + private final List_adp xfer_list = List_adp_.New(); private final Ordered_hash dirty_meta_mgrs = Ordered_hash_.New_bry(); + public Int_obj_ref Html_uid() {return html_uid;} private Int_obj_ref html_uid = Int_obj_ref.New_neg1(); public int Count() {return xfer_list.Count();} public void Clear() { dirty_meta_mgrs.Clear(); @@ -70,7 +70,7 @@ public class Xof_xfer_queue { wiki.File_mgr().Fsdb_mgr().Fsdb_search_by_list(Xfer_itms_to_fsdb_itms(wiki, page, xfer_list, wiki.File_mgr().Patch_upright()), wiki, page, js_wkr); } private List_adp Xfer_itms_to_fsdb_itms(Xowe_wiki cur_wiki, Xoae_page page, List_adp xfer_list, int upright_patch) { - List_adp rv = List_adp_.new_(); + List_adp rv = List_adp_.New(); int list_len = xfer_list.Count(); for (int i = 0; i < list_len; i++) { Xof_file_itm xfer = (Xof_file_itm)xfer_list.Get_at(i); diff --git a/400_xowa/src/gplx/xowa/guis/Xoa_gui_mgr.java b/400_xowa/src/gplx/xowa/guis/Xoa_gui_mgr.java index 9e4c98ba7..5b492ad81 100644 --- a/400_xowa/src/gplx/xowa/guis/Xoa_gui_mgr.java +++ b/400_xowa/src/gplx/xowa/guis/Xoa_gui_mgr.java @@ -17,13 +17,14 @@ along with this program. If not, see . */ package gplx.xowa.guis; import gplx.*; import gplx.xowa.*; import gplx.core.brys.fmtrs.*; import gplx.core.envs.*; -import gplx.gfui.*; import gplx.xowa.addons.apps.searchs.*; import gplx.xowa.guis.menus.*; import gplx.xowa.guis.cmds.*; import gplx.xowa.apps.cfgs.gui.*; import gplx.xowa.users.*; +import gplx.gfui.*; import gplx.gfui.ipts.*; import gplx.gfui.kits.core.*; import gplx.gfui.controls.windows.*; import gplx.gfui.controls.standards.*; +import gplx.xowa.addons.wikis.searchs.*; import gplx.xowa.guis.menus.*; import gplx.xowa.guis.cmds.*; import gplx.xowa.apps.cfgs.gui.*; import gplx.xowa.users.*; import gplx.xowa.langs.*; import gplx.xowa.guis.bnds.*; import gplx.xowa.guis.views.*; import gplx.xowa.guis.urls.url_macros.*; import gplx.xowa.guis.views.boots.*; -public class Xoa_gui_mgr implements GfoEvObj, GfoInvkAble { +public class Xoa_gui_mgr implements Gfo_evt_itm, Gfo_invk { public Xoa_gui_mgr(Xoae_app app) { - this.ev_mgr = GfoEvMgr.new_(this); + this.ev_mgr = new Gfo_evt_mgr(this); this.app = app; this.browser_win = new Xog_win_itm(app, this); bnd_mgr = new Xog_bnd_mgr(browser_win); @@ -32,7 +33,7 @@ public class Xoa_gui_mgr implements GfoEvObj, GfoInvkAble { menu_mgr = new Xog_menu_mgr(this); search_cfg = new Srch_search_cfg(app); } - public GfoEvMgr EvMgr() {return ev_mgr;} private GfoEvMgr ev_mgr; + public Gfo_evt_mgr Evt_mgr() {return ev_mgr;} private Gfo_evt_mgr ev_mgr; public Xoae_app App() {return app;} private Xoae_app app; public Xog_win_itm Browser_win() {return browser_win;} private final Xog_win_itm browser_win; public IptCfgRegy Ipt_cfgs() {return ipt_cfgs;} IptCfgRegy ipt_cfgs = new IptCfgRegy(); @@ -59,11 +60,17 @@ public class Xoa_gui_mgr implements GfoEvObj, GfoInvkAble { layout_Init(); bnd_mgr.Init(); menu_mgr.Init_by_app(app); + if (app.Mode().Tid_is_gui()) { + app.Gui__cbk_mgr().Reg(new gplx.xowa.guis.cbks.swts.Xog_cbk_wkr__swt(this)); + Gfo_log_.Instance__set(new gplx.xowa.guis.cbks.swts.Gfo_log__swt(app.Gui__cbk_mgr() + , Gfo_log_.New_url(app.Fsys_mgr().Root_dir().GenSubDir_nest("user", "anonymous", "app", "tmp", "xolog")) + , new gplx.core.logs.Gfo_log_itm_wtr__csv())); + } } public void Kit_(Gfui_kit kit) { this.kit = kit; kit.Kit_init(browser_win.Usr_dlg()); - kit.Kit_term_cbk_(GfoInvkAbleCmd.new_(app, Xoae_app.Invk_term_cbk)); + kit.Kit_term_cbk_(Gfo_invk_cmd.New_by_key(app, Xoae_app.Invk_term_cbk)); browser_win.Init_by_kit(kit); layout.Init(browser_win); cmd_mgr.Init_by_kit(app); @@ -71,7 +78,7 @@ public class Xoa_gui_mgr implements GfoEvObj, GfoInvkAble { menu_mgr.Menu_bldr().Init_by_kit(app, kit, app.Fsys_mgr().Bin_xowa_file_dir().GenSubDir_nest("app.menu")); menu_mgr.Init_by_kit(); bnd_mgr.Init_by_kit(app); - GfoEvMgr_.SubSame_many(app.Usere(), this, Xoue_user.Evt_lang_changed); + Gfo_evt_mgr_.Sub_same_many(app.Usere(), this, Xoue_user.Evt_lang_changed); app.Sys_cfg().Lang_(app.Sys_cfg().Lang()); // NOTE: force refresh of lang. must occur after after gui_mgr init, else menu lbls will break } public void Lang_changed(Xol_lang_itm lang) { @@ -82,7 +89,7 @@ public class Xoa_gui_mgr implements GfoEvObj, GfoInvkAble { if (ctx.Match(k, Invk_kit)) return kit; else if (ctx.Match(k, Invk_kit_)) this.kit = Gfui_kit_.Get_by_key(m.ReadStrOr("v", Gfui_kit_.Swt().Key())); else if (ctx.Match(k, Invk_run)) Run(Rls_able_.Null); - else if (ctx.Match(k, Invk_browser_type)) kit.Cfg_set("HtmlBox", "BrowserType", gplx.gfui.Swt_kit.Cfg_Html_BrowserType_parse(m.ReadStr("v"))); + else if (ctx.Match(k, Invk_browser_type)) kit.Cfg_set("HtmlBox", "BrowserType", Swt_kit.Cfg_Html_BrowserType_parse(m.ReadStr("v"))); else if (ctx.Match(k, Invk_xul_runner_path_)) kit.Cfg_set("HtmlBox", "XulRunnerPath", Bry_fmtr_eval_mgr_.Eval_url(app.Url_cmd_eval(), m.ReadBry("v")).Xto_api()); else if (ctx.Match(k, Invk_bnds)) return bnd_mgr; else if (ctx.Match(k, Invk_bindings)) return ipt_cfgs; diff --git a/400_xowa/src/gplx/xowa/guis/Xog_html_mgr.java b/400_xowa/src/gplx/xowa/guis/Xog_html_mgr.java index bd42d63bd..b4d3a298e 100644 --- a/400_xowa/src/gplx/xowa/guis/Xog_html_mgr.java +++ b/400_xowa/src/gplx/xowa/guis/Xog_html_mgr.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.guis; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.portal.*; -public class Xog_html_mgr implements GfoInvkAble { +public class Xog_html_mgr implements Gfo_invk { public Xog_html_mgr(Xoae_app app) {this.app = app; portal_mgr = new Xoa_portal_mgr(app);} private Xoae_app app; public Xoa_portal_mgr Portal_mgr() {return portal_mgr;} private Xoa_portal_mgr portal_mgr; public boolean Javascript_enabled() {return javascript_enabled;} private boolean javascript_enabled = true; @@ -34,7 +34,7 @@ public class Xog_html_mgr implements GfoInvkAble { else if (ctx.Match(k, Invk_css_xtn)) return css_xtn; else if (ctx.Match(k, Invk_css_xtn_)) css_xtn = m.ReadBry("v"); else if (ctx.Match(k, Invk_portal)) return portal_mgr; - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String Invk_javascript_enabled = "javascript_enabled", Invk_javascript_enabled_ = "javascript_enabled_", Invk_auto_focus_id_ = "auto_focus_id_", Invk_css_xtn = "css_xtn", Invk_css_xtn_ = "css_xtn_", Invk_portal = "portal"; } diff --git a/400_xowa/src/gplx/xowa/guis/Xog_resizer.java b/400_xowa/src/gplx/xowa/guis/Xog_resizer.java index f45536447..54aa30d86 100644 --- a/400_xowa/src/gplx/xowa/guis/Xog_resizer.java +++ b/400_xowa/src/gplx/xowa/guis/Xog_resizer.java @@ -17,7 +17,8 @@ along with this program. If not, see . */ package gplx.xowa.guis; import gplx.*; import gplx.xowa.*; import gplx.core.envs.*; -import gplx.gfui.*; import gplx.xowa.users.*; import gplx.xowa.guis.views.*; +import gplx.gfui.*; import gplx.gfui.controls.elems.*; import gplx.gfui.controls.standards.*; +import gplx.xowa.users.*; import gplx.xowa.guis.views.*; public class Xog_resizer { public void Exec_win_resize(Xoae_app app, int main_w, int main_h) { Xog_layout layout = app.Gui_mgr().Layout(); diff --git a/400_xowa/src/gplx/xowa/guis/Xogv_page_load_wkr.java b/400_xowa/src/gplx/xowa/guis/Xogv_page_load_wkr.java index 25de7aacc..da69aacd2 100644 --- a/400_xowa/src/gplx/xowa/guis/Xogv_page_load_wkr.java +++ b/400_xowa/src/gplx/xowa/guis/Xogv_page_load_wkr.java @@ -20,15 +20,15 @@ import gplx.core.threads.*; import gplx.core.net.*; import gplx.xowa.guis.history.*; import gplx.xowa.apps.*; import gplx.xowa.wikis.*; import gplx.xowa.htmls.*; -class Xogv_page_load_wkr implements Gfo_thread_wkr, GfoInvkAble { - private final Xoav_wiki_mgr wiki_mgr; private final Gfo_url_parser url_parser; - private final Xogv_tab_base tab; private final Xog_history_itm old_itm, new_itm; +class Xogv_page_load_wkr implements Gfo_thread_wkr, Gfo_invk { + private final Xoav_wiki_mgr wiki_mgr; private final Gfo_url_parser url_parser; + private final Xogv_tab_base tab; private final Xog_history_itm old_itm, new_itm; public Xogv_page_load_wkr(Xoav_wiki_mgr wiki_mgr, Gfo_url_parser url_parser, Xogv_tab_base tab, Xog_history_itm old_itm, Xog_history_itm new_itm) { this.wiki_mgr = wiki_mgr; this.url_parser = url_parser; this.tab = tab; this.old_itm = old_itm; this.new_itm = new_itm; } - public String Name() {return Thread_name;} public static final String Thread_name = "xowa.page_load"; - public boolean Resume() {return true;} - public void Exec() { + public String Thread__name() {return Thread_name;} public static final String Thread_name = "xowa.page_load"; + public boolean Thread__resume() {return true;} + public void Thread__exec() { Xoh_page new_hpg = Fetch_page(new_itm.Wiki(), new_itm.Page(), new_itm.Qarg()); tab.Show_page(old_itm, new_itm, new_hpg); } @@ -42,8 +42,8 @@ class Xogv_page_load_wkr implements Gfo_thread_wkr, GfoInvkAble { return rv; } public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { - if (ctx.Match(k, Invk_exec)) this.Exec(); - else return GfoInvkAble_.Rv_unhandled; + if (ctx.Match(k, Invk_exec)) this.Thread__exec(); + else return Gfo_invk_.Rv_unhandled; return this; } public static final String Invk_exec = "exec"; } diff --git a/400_xowa/src/gplx/xowa/guis/Xogv_tab_base.java b/400_xowa/src/gplx/xowa/guis/Xogv_tab_base.java index 39fb0e6cd..9539f6a2d 100644 --- a/400_xowa/src/gplx/xowa/guis/Xogv_tab_base.java +++ b/400_xowa/src/gplx/xowa/guis/Xogv_tab_base.java @@ -25,7 +25,7 @@ public abstract class Xogv_tab_base { private Xoav_wiki_mgr wiki_mgr; private Gfo_thread_pool thread_pool; public void Ctor(Xoav_wiki_mgr wiki_mgr, Gfo_thread_pool thread_pool, Gfo_url_parser url_parser) {this.wiki_mgr = wiki_mgr; this.thread_pool = thread_pool; this.url_parser = url_parser;} - public Xog_history_stack History_stack() {return history_stack;} private final Xog_history_stack history_stack = new Xog_history_stack(); + public Xog_history_stack History_stack() {return history_stack;} private final Xog_history_stack history_stack = new Xog_history_stack(); public Xog_history_itm Cur_itm() {return history_stack.Cur_itm();} public Xow_wiki Get_wiki_or_null(byte[] key) {return wiki_mgr.Get_by_or_null(key);} public Xoh_page Go_to(byte[] page) {return Go_to(history_stack.Cur_itm().Wiki(), page, Bry_.Empty, Bry_.Empty, false, "");} @@ -50,7 +50,7 @@ public abstract class Xogv_tab_base { if (new_itm == Xog_history_itm.Null) return new Xoh_page().Exists_n_(); Fetch_page__bgn(new_itm.Wiki(), new_itm.Page(), new_itm.Qarg()); Xoh_page new_hpg = new Xoh_page(); - // Thread_adp_.invk_(Xogv_page_load_wkr.Thread_name, new Xogv_page_load_wkr(wiki_mgr, url_parser, this, old_itm, new_itm), Xogv_page_load_wkr.Invk_exec).Start(); + // Thread_adp_.Start_by_key(Xogv_page_load_wkr.Thread_name, new Xogv_page_load_wkr(wiki_mgr, url_parser, this, old_itm, new_itm), Xogv_page_load_wkr.Invk_exec); thread_pool.Add_at_end(new Xogv_page_load_wkr(wiki_mgr, url_parser, this, old_itm, new_itm)); thread_pool.Run(); return new_hpg; diff --git a/400_xowa/src/gplx/xowa/guis/bnds/Xog_bnd_box_.java b/400_xowa/src/gplx/xowa/guis/bnds/Xog_bnd_box_.java index 43f94ee11..8ccf6e686 100644 --- a/400_xowa/src/gplx/xowa/guis/bnds/Xog_bnd_box_.java +++ b/400_xowa/src/gplx/xowa/guis/bnds/Xog_bnd_box_.java @@ -16,10 +16,11 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.guis.bnds; import gplx.*; import gplx.xowa.*; import gplx.xowa.guis.*; -import gplx.gfui.*; import gplx.xowa.guis.views.*; import gplx.xowa.guis.cmds.*; +import gplx.gfui.*; import gplx.gfui.ipts.*; import gplx.gfui.controls.elems.*; +import gplx.xowa.guis.views.*; import gplx.xowa.guis.cmds.*; public class Xog_bnd_box_ { - public static final String Key_browser = "browser", Key_browser_url = "browser.url", Key_browser_search = "browser.search", Key_browser_html = "browser.html", Key_browser_find = "browser.find", Key_browser_prog = "browser.prog", Key_browser_info = "browser.info"; - public static final String Gui_browser = "Window", Gui_browser_url = "Url bar", Gui_browser_search = "Search box", Gui_browser_html = "HTML browser", Gui_browser_find = "Find box", Gui_browser_prog = "Status bar", Gui_browser_info = "System Messages box"; + public static final String Key_browser = "browser", Key_browser_url = "browser.url", Key_browser_search = "browser.search", Key_browser_html = "browser.html", Key_browser_find = "browser.find", Key_browser_prog = "browser.prog", Key_browser_info = "browser.info"; + public static final String Gui_browser = "Window", Gui_browser_url = "Url bar", Gui_browser_search = "Search box", Gui_browser_html = "HTML browser", Gui_browser_find = "Find box", Gui_browser_prog = "Status bar", Gui_browser_info = "System Messages box"; public static final int Tid__max = 7, Tid_browser = 0, Tid_browser_url = 1, Tid_browser_search = 2, Tid_browser_html = 3, Tid_browser_find = 4, Tid_browser_prog = 5, Tid_browser_info = 6; public static final int Ary_len = Tid__max; public static Xog_bnd_box[] Ary() { diff --git a/400_xowa/src/gplx/xowa/guis/bnds/Xog_bnd_itm.java b/400_xowa/src/gplx/xowa/guis/bnds/Xog_bnd_itm.java index 06ec08e81..d61b45fc7 100644 --- a/400_xowa/src/gplx/xowa/guis/bnds/Xog_bnd_itm.java +++ b/400_xowa/src/gplx/xowa/guis/bnds/Xog_bnd_itm.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.guis.bnds; import gplx.*; import gplx.xowa.*; import gplx.xowa.guis.*; -import gplx.gfui.*; +import gplx.gfui.*; import gplx.gfui.ipts.*; public class Xog_bnd_itm { public Xog_bnd_itm(String key, boolean sys, String cmd, int box, IptArg ipt) { this.key = key; this.sys = sys; this.cmd = cmd; this.box = box; this.ipt = ipt; diff --git a/400_xowa/src/gplx/xowa/guis/bnds/Xog_bnd_itm_srl_tst.java b/400_xowa/src/gplx/xowa/guis/bnds/Xog_bnd_itm_srl_tst.java index 88c2b72ed..caf0dc501 100644 --- a/400_xowa/src/gplx/xowa/guis/bnds/Xog_bnd_itm_srl_tst.java +++ b/400_xowa/src/gplx/xowa/guis/bnds/Xog_bnd_itm_srl_tst.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.guis.bnds; import gplx.*; import gplx.xowa.*; import gplx.xowa.guis.*; -import org.junit.*; import gplx.gfui.*; import gplx.xowa.apps.cfgs.old.*; +import org.junit.*; import gplx.gfui.*; import gplx.gfui.ipts.*; import gplx.xowa.apps.cfgs.old.*; public class Xog_bnd_itm_srl_tst { @Before public void init() {fxt.Reset();} private Xog_bnd_itm_srl_fxt fxt = new Xog_bnd_itm_srl_fxt(); @Test public void Src_get() { diff --git a/400_xowa/src/gplx/xowa/guis/bnds/Xog_bnd_mgr.java b/400_xowa/src/gplx/xowa/guis/bnds/Xog_bnd_mgr.java index dda7a1a37..d652dcaf9 100644 --- a/400_xowa/src/gplx/xowa/guis/bnds/Xog_bnd_mgr.java +++ b/400_xowa/src/gplx/xowa/guis/bnds/Xog_bnd_mgr.java @@ -16,12 +16,12 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.guis.bnds; import gplx.*; import gplx.xowa.*; import gplx.xowa.guis.*; -import gplx.gfui.*; import gplx.xowa.guis.views.*; -import gplx.xowa.guis.cmds.*; import gplx.xowa.guis.menus.dom.*; +import gplx.gfui.*; import gplx.gfui.ipts.*; import gplx.gfui.controls.elems.*; +import gplx.xowa.guis.views.*; import gplx.xowa.guis.cmds.*; import gplx.xowa.guis.menus.dom.*; public class Xog_bnd_mgr { private Xog_win_itm win; private Xog_cmd_mgr_invk invk_mgr; private Xog_bnd_box[] boxs = Xog_bnd_box_.Ary(); - private List_adp startup_itms = List_adp_.new_(); + private List_adp startup_itms = List_adp_.New(); private Ordered_hash regy = Ordered_hash_.New(); public Xog_bnd_mgr(Xog_win_itm win) {this.win = win; invk_mgr = win.Gui_mgr().Cmd_mgr().Invk_mgr();} public Gfui_bnd_parser Bnd_parser() {if (bnd_parser == null) bnd_parser = Gfui_bnd_parser.new_en_(); return bnd_parser;} private Gfui_bnd_parser bnd_parser; @@ -47,7 +47,7 @@ public class Xog_bnd_mgr { } public void Del(Xog_bnd_itm itm, IptArg new_ipt) { boolean itm_has_ipt = !IptArg_.Is_null_or_none(new_ipt); - List_adp deleted = List_adp_.new_(); + List_adp deleted = List_adp_.New(); for (int i = 0; i < Xog_bnd_box_.Ary_len; i++) { Xog_bnd_box old_box = boxs[i]; int old_itms_len = old_box.Len(); @@ -101,6 +101,7 @@ public class Xog_bnd_mgr { Init_itm(Xog_cmd_itm_.Key_nav_help_about , Xog_bnd_box_.Tid_browser , ""); Init_itm(Xog_cmd_itm_.Key_nav_help_xowa_main , Xog_bnd_box_.Tid_browser , ""); Init_itm(Xog_cmd_itm_.Key_nav_help_xowa_blog , Xog_bnd_box_.Tid_browser , ""); + Init_itm(Xog_cmd_itm_.Key_nav_setup_download_central , Xog_bnd_box_.Tid_browser , ""); Init_itm(Xog_cmd_itm_.Key_nav_setup_import_from_list , Xog_bnd_box_.Tid_browser , ""); Init_itm(Xog_cmd_itm_.Key_nav_setup_import_from_script , Xog_bnd_box_.Tid_browser , ""); Init_itm(Xog_cmd_itm_.Key_nav_setup_maintenance , Xog_bnd_box_.Tid_browser , ""); diff --git a/400_xowa/src/gplx/xowa/guis/bnds/Xog_bnd_mgr_srl.java b/400_xowa/src/gplx/xowa/guis/bnds/Xog_bnd_mgr_srl.java index 4f9f11fb8..c8feedb36 100644 --- a/400_xowa/src/gplx/xowa/guis/bnds/Xog_bnd_mgr_srl.java +++ b/400_xowa/src/gplx/xowa/guis/bnds/Xog_bnd_mgr_srl.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.guis.bnds; import gplx.*; import gplx.xowa.*; import gplx.xowa.guis.*; -import gplx.core.primitives.*; import gplx.langs.dsvs.*; import gplx.gfui.*; import gplx.xowa.apps.cfgs.old.*; +import gplx.core.primitives.*; import gplx.langs.dsvs.*; import gplx.gfui.*; import gplx.gfui.ipts.*; import gplx.xowa.apps.cfgs.old.*; public class Xog_bnd_mgr_srl extends Dsv_wkr_base { private Xoae_app app; private Xog_bnd_mgr bnd_mgr; diff --git a/400_xowa/src/gplx/xowa/guis/bnds/Xog_bnd_win.java b/400_xowa/src/gplx/xowa/guis/bnds/Xog_bnd_win.java index c75e56082..e376e2c91 100644 --- a/400_xowa/src/gplx/xowa/guis/bnds/Xog_bnd_win.java +++ b/400_xowa/src/gplx/xowa/guis/bnds/Xog_bnd_win.java @@ -16,8 +16,8 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.guis.bnds; import gplx.*; import gplx.xowa.*; import gplx.xowa.guis.*; -import gplx.gfui.*; -public class Xog_bnd_win implements GfoInvkAble { +import gplx.gfui.*; import gplx.gfui.draws.*; import gplx.gfui.ipts.*; import gplx.gfui.kits.core.*; import gplx.gfui.envs.*; import gplx.gfui.controls.windows.*; import gplx.gfui.controls.elems.*; import gplx.gfui.controls.standards.*; +public class Xog_bnd_win implements Gfo_invk { private GfuiWin win; private GfuiTextBox shortcut_txt, binding_txt, keycode_txt; private GfuiBtn ok_btn, cxl_btn; @@ -81,7 +81,7 @@ public class Xog_bnd_win implements GfoInvkAble { else if (ctx.Match(k, Invk_when_key_up)) When_key_up(m); else if (ctx.Match(k, Invk_when_ok)) {win.Close();} else if (ctx.Match(k, Invk_when_cxl)) {win.Close();} - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String Invk_when_key_down = "when_key_down", Invk_when_key_press = "when_key_press", Invk_when_key_up = "when_key_up" diff --git a/400_xowa/src/gplx/xowa/guis/cbks/Xog_cbk_mgr.java b/400_xowa/src/gplx/xowa/guis/cbks/Xog_cbk_mgr.java index 51a43554e..b57fe7b29 100644 --- a/400_xowa/src/gplx/xowa/guis/cbks/Xog_cbk_mgr.java +++ b/400_xowa/src/gplx/xowa/guis/cbks/Xog_cbk_mgr.java @@ -23,10 +23,10 @@ public class Xog_cbk_mgr { // INSTANCE:app this.wkrs = (Xog_cbk_wkr[])Array_.Resize_add_one(wkrs, wkrs_len, wkr); ++wkrs_len; } - public void Send_json(String func, Gfobj_nde data) { + public void Send_json(Xog_cbk_trg trg, String func, Gfobj_nde data) { for (int i = 0; i < wkrs_len; ++i) { Xog_cbk_wkr wkr = wkrs[i]; - wkr.Send_json(func, data); + wkr.Send_json(trg, func, data); } } } diff --git a/400_xowa/src/gplx/xowa/guis/cbks/Xog_cbk_trg.java b/400_xowa/src/gplx/xowa/guis/cbks/Xog_cbk_trg.java new file mode 100644 index 000000000..0ce149264 --- /dev/null +++ b/400_xowa/src/gplx/xowa/guis/cbks/Xog_cbk_trg.java @@ -0,0 +1,27 @@ +/* +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.guis.cbks; import gplx.*; import gplx.xowa.*; import gplx.xowa.guis.*; +public class Xog_cbk_trg { + Xog_cbk_trg(byte tid, byte[] page_ttl) {this.tid = tid; this.page_ttl = page_ttl;} + public byte Tid() {return tid;} private final byte tid; + public byte[] Page_ttl() {return page_ttl;} private final byte[] page_ttl; // same as ttl.Full_db(); EX: Special:XowaDownloadCentral + + public static final byte Tid__cbk_enabled = 0, Tid__specific_page = 1; + public static final Xog_cbk_trg Any = new Xog_cbk_trg(Tid__cbk_enabled, null); + public static Xog_cbk_trg New(byte[] page_ttl) {return new Xog_cbk_trg(Tid__specific_page, page_ttl);} +} diff --git a/400_xowa/src/gplx/xowa/guis/cbks/Xog_cbk_wkr.java b/400_xowa/src/gplx/xowa/guis/cbks/Xog_cbk_wkr.java index ac137f195..3200ae6ca 100644 --- a/400_xowa/src/gplx/xowa/guis/cbks/Xog_cbk_wkr.java +++ b/400_xowa/src/gplx/xowa/guis/cbks/Xog_cbk_wkr.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.xowa.guis.cbks; import gplx.*; import gplx.xowa.*; import gplx.xowa.guis.*; import gplx.core.gfobjs.*; public interface Xog_cbk_wkr { - Object Send_json(String func, Gfobj_nde data); + Object Send_json(Xog_cbk_trg trg, String func, Gfobj_nde data); } class Xog_cbk_wkr_ { public static final Xog_cbk_wkr[] Ary_empty = new Xog_cbk_wkr[0]; diff --git a/400_xowa/src/gplx/xowa/guis/cbks/Xog_json_wkr.java b/400_xowa/src/gplx/xowa/guis/cbks/Xog_json_wkr.java new file mode 100644 index 000000000..2d94c4633 --- /dev/null +++ b/400_xowa/src/gplx/xowa/guis/cbks/Xog_json_wkr.java @@ -0,0 +1,22 @@ +/* +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.guis.cbks; import gplx.*; import gplx.xowa.*; import gplx.xowa.guis.*; +import gplx.core.gfobjs.*; +public interface Xog_json_wkr { + void Send_json(String func, Gfobj_nde data); +} diff --git a/400_xowa/src/gplx/xowa/guis/cbks/swts/Gfo_log__swt.java b/400_xowa/src/gplx/xowa/guis/cbks/swts/Gfo_log__swt.java new file mode 100644 index 000000000..87accc2cf --- /dev/null +++ b/400_xowa/src/gplx/xowa/guis/cbks/swts/Gfo_log__swt.java @@ -0,0 +1,34 @@ +/* +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.guis.cbks.swts; import gplx.*; import gplx.xowa.*; import gplx.xowa.guis.*; import gplx.xowa.guis.cbks.*; +import gplx.core.logs.*; import gplx.core.gfobjs.*; import gplx.xowa.guis.cbks.*; +public class Gfo_log__swt extends Gfo_log__file { private final Xog_cbk_mgr cbk_mgr; + public Gfo_log__swt(Xog_cbk_mgr cbk_mgr, Io_url url, Gfo_log_itm_wtr fmtr) {super(url, fmtr);this.cbk_mgr = cbk_mgr;} + @Override public void Exec(byte type, long time, long elapsed, String msg, Object[] args) { + if (type == Gfo_log_itm.Type__prog) return; + super.Exec(type, time, elapsed, msg, args); + Gfobj_nde nde = Gfobj_nde.New().Add_str("msg", msg); + int args_len = args.length; + for (int i = 0; i < args_len; i += 2) { + String key = Object_.Xto_str_strict_or_null_mark(args[i]); + Object val = i + 1 < args_len ? args[i + 1] : "<>"; + nde.Add_str(key, Object_.Xto_str_strict_or_null_mark(val)); + } + cbk_mgr.Send_json(Xog_cbk_trg.Any, "xo.log.add__recv", nde); + } +} diff --git a/400_xowa/src/gplx/xowa/guis/cbks/swts/Gfobj_wtr__json__swt.java b/400_xowa/src/gplx/xowa/guis/cbks/swts/Gfobj_wtr__json__browser.java similarity index 63% rename from 400_xowa/src/gplx/xowa/guis/cbks/swts/Gfobj_wtr__json__swt.java rename to 400_xowa/src/gplx/xowa/guis/cbks/swts/Gfobj_wtr__json__browser.java index f5a6ac3db..9888c6daf 100644 --- a/400_xowa/src/gplx/xowa/guis/cbks/swts/Gfobj_wtr__json__swt.java +++ b/400_xowa/src/gplx/xowa/guis/cbks/swts/Gfobj_wtr__json__browser.java @@ -17,13 +17,15 @@ along with this program. If not, see . */ package gplx.xowa.guis.cbks.swts; import gplx.*; import gplx.xowa.*; import gplx.xowa.guis.*; import gplx.xowa.guis.cbks.*; import gplx.core.gfobjs.*; -public class Gfobj_wtr__json__swt extends Gfobj_wtr__json { private final Bry_bfr bfr; - public Gfobj_wtr__json__swt() { - this.Opt_ws_(Bool_.N); +public class Gfobj_wtr__json__browser extends Gfobj_wtr__json { private final Bry_bfr bfr; + public Gfobj_wtr__json__browser() { + this.Opt_ws_(Bool_.N).Opt_backslash_2x_(Bool_.Y); this.bfr = this.Bfr(); } - public String Write_as_func(String func_name, Gfobj_grp root) { - bfr.Add(Bry__func_bgn); + public String Write_as_func__swt(String func_name, Gfobj_grp root) {return Write_as_func(Bool_.Y, func_name, root);} + public String Write_as_func__drd(String func_name, Gfobj_grp root) {return Write_as_func(Bool_.N, func_name, root);} + private String Write_as_func(boolean write_return, String func_name, Gfobj_grp root) { + if (write_return) bfr.Add(Bry__func_bgn); // NOTE: Android WebView fails if return is passed; EX: "return 'true'" works on SWT.Browser, but not WebView bfr.Add_str_u8(func_name); bfr.Add(Bry__args_bgn); this.Write(root); diff --git a/400_xowa/src/gplx/xowa/guis/cbks/swts/Gfobj_wtr__json__swt_tst.java b/400_xowa/src/gplx/xowa/guis/cbks/swts/Gfobj_wtr__json__browser__tst.java similarity index 75% rename from 400_xowa/src/gplx/xowa/guis/cbks/swts/Gfobj_wtr__json__swt_tst.java rename to 400_xowa/src/gplx/xowa/guis/cbks/swts/Gfobj_wtr__json__browser__tst.java index 2ed66e3e7..538c70a39 100644 --- a/400_xowa/src/gplx/xowa/guis/cbks/swts/Gfobj_wtr__json__swt_tst.java +++ b/400_xowa/src/gplx/xowa/guis/cbks/swts/Gfobj_wtr__json__browser__tst.java @@ -18,8 +18,8 @@ along with this program. If not, see . package gplx.xowa.guis.cbks.swts; import gplx.*; import gplx.xowa.*; import gplx.xowa.guis.*; import gplx.xowa.guis.cbks.*; import org.junit.*; import gplx.core.tests.*; import gplx.core.gfobjs.*; -public class Gfobj_wtr__json__swt_tst { - private final Gfobj_wtr__json__swt_fxt fxt = new Gfobj_wtr__json__swt_fxt(); +public class Gfobj_wtr__json__browser__tst { + private final Gfobj_wtr__json__browser__fxt fxt = new Gfobj_wtr__json__browser__fxt(); @Test public void Json_proc() { fxt.Test__json_proc ( "proc_name" @@ -32,10 +32,10 @@ public class Gfobj_wtr__json__swt_tst { ); } } -class Gfobj_wtr__json__swt_fxt extends Gfobj_wtr__json_fxt { public Gfobj_wtr__json__swt_fxt Test__json_proc() {return this;} +class Gfobj_wtr__json__browser__fxt extends Gfobj_wtr__json_fxt { public Gfobj_wtr__json__browser__fxt Test__json_proc() {return this;} public void Test__json_proc(String proc_name, Gfobj_nde root, String expd) { - Gfobj_wtr__json__swt wtr = new Gfobj_wtr__json__swt(); - String actl = wtr.Write_as_func(proc_name, root); + Gfobj_wtr__json__browser wtr = new Gfobj_wtr__json__browser(); + String actl = wtr.Write_as_func__swt(proc_name, root); Gftest.Eq__str(expd, actl, "json_write"); } } diff --git a/400_xowa/src/gplx/xowa/guis/cbks/swts/Xog_cbk_wkr__swt.java b/400_xowa/src/gplx/xowa/guis/cbks/swts/Xog_cbk_wkr__swt.java index 42009cd92..1e2530c38 100644 --- a/400_xowa/src/gplx/xowa/guis/cbks/swts/Xog_cbk_wkr__swt.java +++ b/400_xowa/src/gplx/xowa/guis/cbks/swts/Xog_cbk_wkr__swt.java @@ -17,32 +17,48 @@ along with this program. If not, see . */ package gplx.xowa.guis.cbks.swts; import gplx.*; import gplx.xowa.*; import gplx.xowa.guis.*; import gplx.xowa.guis.cbks.*; import gplx.core.gfobjs.*; -import gplx.gfui.*; import gplx.xowa.guis.*; +import gplx.gfui.*; import gplx.gfui.kits.core.*; import gplx.xowa.guis.*; import gplx.xowa.guis.views.*; public class Xog_cbk_wkr__swt implements Xog_cbk_wkr { private final Xoa_gui_mgr gui_mgr; private final Xog_browser_func browser_func; - private final Gfobj_wtr__json__swt json_wtr = new Gfobj_wtr__json__swt(); + private final Gfobj_wtr__json__browser json_wtr = new Gfobj_wtr__json__browser(); public Xog_cbk_wkr__swt(Xoa_gui_mgr gui_mgr) { this.gui_mgr = gui_mgr; - this.browser_func = new Xog_browser_func(gui_mgr.Browser_win().Active_tab().Html_box()); + this.browser_func = new Xog_browser_func(); } - public Object Send_json(String func, Gfobj_nde data) { - String script = json_wtr.Write_as_func(func, data); - GfuiInvkCmd swt_cmd = gui_mgr.Kit().New_cmd_sync(browser_func.Init(script)); - return GfoInvkAble_.Invk(swt_cmd); + public Object Send_json(Xog_cbk_trg trg, String func, Gfobj_nde data) { + if (gui_mgr.Kit().Tid() != Gfui_kit_.Swt_tid) return null; // guard against calling when HTTP_server + String script = json_wtr.Write_as_func__swt(func, data); + GfuiInvkCmd swt_cmd = gui_mgr.Kit().New_cmd_sync(browser_func.Script_(script)); + Xog_tab_mgr tab_mgr = gui_mgr.Browser_win().Tab_mgr(); + int tabs_len = tab_mgr.Tabs_len(); + Object rv = null; + for (int i = 0; i < tabs_len; ++i) { + Xog_tab_itm tab = tab_mgr.Tabs_get_at(i); + Xoa_page page = tab.Page(); + boolean match = false; + switch (trg.Tid()) { + case Xog_cbk_trg.Tid__cbk_enabled: + match = page.Html_data().Cbk_enabled(); + break; + case Xog_cbk_trg.Tid__specific_page: + match = Bry_.Eq(trg.Page_ttl(), page.Ttl().Full_db()); + break; + } + if (match) { + browser_func.Tab_(tab); + rv = Gfo_invk_.Invk_no_key(swt_cmd); + if (rv == null && !String_.Eq(func, "xo.log.add__recv")) throw Err_.new_("gplx.swt", "send_json was not acknowledged", "func", func, "script", script); + } + } + return rv; } } -class Xog_browser_func implements GfoInvkAble { - private final Gfui_html html_box; +class Xog_browser_func implements Gfo_invk { private String script; - public Xog_browser_func(Gfui_html html_box) { - this.html_box = html_box; - } - public Xog_browser_func Init(String script) { - this.script = script; - return this; - } + public Xog_browser_func Script_(String v) {this.script = v; return this;} + public void Tab_(Xog_tab_itm v) {this.tab = v;} private Xog_tab_itm tab; public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { - return html_box.Html_js_eval_script(script); + return tab.Html_box().Html_js_eval_script_as_obj(script); } } diff --git a/400_xowa/src/gplx/xowa/guis/cmds/Xog_cmd_itm_.java b/400_xowa/src/gplx/xowa/guis/cmds/Xog_cmd_itm_.java index a4e0d93a9..518d6cfef 100644 --- a/400_xowa/src/gplx/xowa/guis/cmds/Xog_cmd_itm_.java +++ b/400_xowa/src/gplx/xowa/guis/cmds/Xog_cmd_itm_.java @@ -38,6 +38,7 @@ public class Xog_cmd_itm_ { , Key_nav_help_xowa_main = new_page_(Xog_ctg_itm_.Tid_nav_pages , "xowa.nav.help.xowa_main" , "home/wiki/Main_Page") // HOME , Key_nav_help_xowa_blog = new_page_(Xog_ctg_itm_.Tid_nav_pages , "xowa.nav.help.xowa_blog" , "home/wiki/Blog") // HOME + , Key_nav_setup_download_central = new_page_(Xog_ctg_itm_.Tid_nav_pages , "xowa.nav.setup.download_central" , "home/wiki/Special:XowaDownloadCentral") // HOME , Key_nav_setup_import_from_list = new_page_(Xog_ctg_itm_.Tid_nav_pages , "xowa.nav.setup.import_from_list" , "home/wiki/Dashboard/Import/Online") // HOME , Key_nav_setup_import_from_script = new_page_(Xog_ctg_itm_.Tid_nav_pages , "xowa.nav.setup.import_from_script" , "home/wiki/Dashboard/Import/Offline") // HOME , Key_nav_setup_maintenance = new_page_(Xog_ctg_itm_.Tid_nav_pages , "xowa.nav.setup.maintenance" , "home/wiki/Dashboard/Wiki_maintenance") // HOME diff --git a/400_xowa/src/gplx/xowa/guis/cmds/Xog_cmd_mgr_invk.java b/400_xowa/src/gplx/xowa/guis/cmds/Xog_cmd_mgr_invk.java index 6b27d2d7b..25bea9394 100644 --- a/400_xowa/src/gplx/xowa/guis/cmds/Xog_cmd_mgr_invk.java +++ b/400_xowa/src/gplx/xowa/guis/cmds/Xog_cmd_mgr_invk.java @@ -16,12 +16,12 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.guis.cmds; import gplx.*; import gplx.xowa.*; import gplx.xowa.guis.*; -public class Xog_cmd_mgr_invk implements GfoInvkAble { +public class Xog_cmd_mgr_invk implements Gfo_invk { private Xoae_app app; private Xog_cmd_mgr cmd_mgr; public void Ctor(Xoae_app app, Xog_cmd_mgr cmd_mgr) {this.app = app; this.cmd_mgr = cmd_mgr;} public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { Xog_cmd_itm cmd_itm = cmd_mgr.Get_or_null(k); - if (cmd_itm == null) return GfoInvkAble_.Rv_unhandled; + if (cmd_itm == null) return Gfo_invk_.Rv_unhandled; return app.Gfs_mgr().Run_str(cmd_itm.Cmd()); } } diff --git a/400_xowa/src/gplx/xowa/guis/history/Xog_history_mgr.java b/400_xowa/src/gplx/xowa/guis/history/Xog_history_mgr.java index 82f816700..3815e3948 100644 --- a/400_xowa/src/gplx/xowa/guis/history/Xog_history_mgr.java +++ b/400_xowa/src/gplx/xowa/guis/history/Xog_history_mgr.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.guis.history; import gplx.*; import gplx.xowa.*; import gplx.xowa.guis.*; public class Xog_history_mgr { - private final Ordered_hash hash = Ordered_hash_.New_bry(); private final Xog_history_stack stack = new Xog_history_stack(); + private final Ordered_hash hash = Ordered_hash_.New_bry(); private final Xog_history_stack stack = new Xog_history_stack(); public int Count() {return hash.Count();} public Xoae_page Cur_page(Xowe_wiki wiki) {return Get_or_fetch(wiki, stack.Cur_itm());} public Xoae_page Go_bwd(Xowe_wiki wiki) {return Go_by_dir(wiki, Bool_.N);} @@ -60,7 +60,7 @@ public class Xog_history_mgr { Xoae_page rv = (Xoae_page)hash.Get_by(page_key); if (rv != null) return rv; Xoa_ttl ttl = Xoa_ttl.parse(wiki, itm.Page()); - return wiki.Data_mgr().Get_page(ttl, false); + return wiki.Data_mgr().Load_page_by_ttl(ttl); } private static byte[] Build_page_key(Xoae_page page) {return Build_page_key(page.Wiki().Domain_bry(), page.Ttl().Full_url(), page.Url().Qargs_mgr().To_bry());} private static byte[] Build_page_key(byte[] wiki_key, byte[] page_key, byte[] args_key) {return Bry_.Add_w_dlm(Byte_ascii.Pipe, wiki_key, page_key, args_key);} diff --git a/400_xowa/src/gplx/xowa/guis/history/Xog_history_stack.java b/400_xowa/src/gplx/xowa/guis/history/Xog_history_stack.java index 7102c8cfe..407f9c5dc 100644 --- a/400_xowa/src/gplx/xowa/guis/history/Xog_history_stack.java +++ b/400_xowa/src/gplx/xowa/guis/history/Xog_history_stack.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.guis.history; import gplx.*; import gplx.xowa.*; import gplx.xowa.guis.*; public class Xog_history_stack { - private final List_adp list = List_adp_.new_(); + private final List_adp list = List_adp_.New(); public int Len() {return list.Count();} public void Clear() {list.Clear(); cur_pos = 0;} public Xog_history_itm Get_at(int i) {return (Xog_history_itm)list.Get_at(i);} diff --git a/400_xowa/src/gplx/xowa/guis/langs/Xol_font_info.java b/400_xowa/src/gplx/xowa/guis/langs/Xol_font_info.java index 94d9eae8b..96c9210ce 100644 --- a/400_xowa/src/gplx/xowa/guis/langs/Xol_font_info.java +++ b/400_xowa/src/gplx/xowa/guis/langs/Xol_font_info.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.guis.langs; import gplx.*; import gplx.xowa.*; import gplx.xowa.guis.*; -import gplx.gfui.*; -public class Xol_font_info implements GfoInvkAble, GfoEvMgrOwner { +import gplx.gfui.*; import gplx.gfui.draws.*; +public class Xol_font_info implements Gfo_invk, Gfo_evt_mgr_owner { public Xol_font_info(String name, float size, FontStyleAdp style) {this.name = name; this.size = size; this.style = style;} - public GfoEvMgr EvMgr() {if (evMgr == null) evMgr = GfoEvMgr.new_(this); return evMgr;} GfoEvMgr evMgr; + public Gfo_evt_mgr Evt_mgr() {if (evt_mgr == null) evt_mgr = new Gfo_evt_mgr(this); return evt_mgr;} Gfo_evt_mgr evt_mgr; public String Name() {return name;} public Xol_font_info Name_(String v) {name = v; Font_changed_pub(); return this;} private String name; public float Size() {return size;} public Xol_font_info Size_(float v) {size = v; Font_changed_pub(); return this;} private float size; public FontStyleAdp Style() {return style;} public Xol_font_info Style_(FontStyleAdp v) {style = v; Font_changed_pub(); return this;} private FontStyleAdp style; @@ -32,10 +32,10 @@ public class Xol_font_info implements GfoInvkAble, GfoEvMgrOwner { else if (ctx.Match(k, Invk_size)) return size; else if (ctx.Match(k, Invk_size_)) Size_(m.ReadFloat("v")); else if (ctx.Match(k, Invk_style_)) Style_(FontStyleAdp_.parse(m.ReadStr("v"))); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String Invk_name = "name", Invk_name_ = "name_", Invk_size = "size", Invk_size_ = "size_", Invk_style_ = "style_"; public static final String Font_changed = "font_changed"; - private void Font_changed_pub() {GfoEvMgr_.PubObj(this, Font_changed, "font", this);} + private void Font_changed_pub() {Gfo_evt_mgr_.Pub_obj(this, Font_changed, "font", this);} } diff --git a/400_xowa/src/gplx/xowa/guis/menus/Xog_menu_mgr.java b/400_xowa/src/gplx/xowa/guis/menus/Xog_menu_mgr.java index 98ebde452..701a9bf26 100644 --- a/400_xowa/src/gplx/xowa/guis/menus/Xog_menu_mgr.java +++ b/400_xowa/src/gplx/xowa/guis/menus/Xog_menu_mgr.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.xowa.guis.menus; import gplx.*; import gplx.xowa.*; import gplx.xowa.guis.*; import gplx.xowa.guis.menus.dom.*; import gplx.xowa.langs.*; -public class Xog_menu_mgr implements GfoInvkAble { +public class Xog_menu_mgr implements Gfo_invk { private Xoae_app app; public Xog_menu_mgr(Xoa_gui_mgr gui_mgr) { menu_bldr = new Xog_mnu_bldr(); @@ -52,6 +52,6 @@ public class Xog_menu_mgr implements GfoInvkAble { public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_contexts)) return popup_mnu_mgr; else if (ctx.Match(k, Invk_windows)) return window_mnu_mgr; - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; } private static final String Invk_contexts = "contexts", Invk_windows = "windows"; } diff --git a/400_xowa/src/gplx/xowa/guis/menus/Xog_menu_mnu_src.java b/400_xowa/src/gplx/xowa/guis/menus/Xog_menu_mnu_src.java index 45622d8a1..e3931d8fa 100644 --- a/400_xowa/src/gplx/xowa/guis/menus/Xog_menu_mnu_src.java +++ b/400_xowa/src/gplx/xowa/guis/menus/Xog_menu_mnu_src.java @@ -62,6 +62,8 @@ class Xog_menu_mgr_src { . Add_grp_bgn(Xog_cmd_itm_.Key_gui_menus_group_tools) . Add_btn(Xog_cmd_itm_.Key_nav_cfg_main) . Add_spr() + . Add_btn(Xog_cmd_itm_.Key_nav_setup_download_central) + . Add_spr() . Add_btn(Xog_cmd_itm_.Key_nav_setup_import_from_list) . Add_btn(Xog_cmd_itm_.Key_nav_setup_import_from_script) . Add_spr() @@ -142,6 +144,8 @@ class Xog_menu_mgr_src { . Add_grp_bgn(Xog_cmd_itm_.Key_gui_menus_group_tools) . Add_btn(Xog_cmd_itm_.Key_nav_cfg_main) . Add_spr() + . Add_btn(Xog_cmd_itm_.Key_nav_setup_download_central) + . Add_spr() . Add_btn(Xog_cmd_itm_.Key_nav_setup_import_from_list) . Add_btn(Xog_cmd_itm_.Key_nav_setup_import_from_script) . Add_spr() @@ -203,7 +207,7 @@ class Xog_menu_mgr_src { } class Xog_menu_bldr { private int indent = 0; - private Bry_bfr bfr = Bry_bfr.reset_(0); + private Bry_bfr bfr = Bry_bfr_.Reset(0); public String Gen_str() {return bfr.To_str_and_clear();} private Xog_menu_bldr Indent_add() {indent += 2; return this;} private Xog_menu_bldr Indent_del() {indent -= 2; return this;} diff --git a/400_xowa/src/gplx/xowa/guis/menus/Xog_popup_mnu_mgr.java b/400_xowa/src/gplx/xowa/guis/menus/Xog_popup_mnu_mgr.java index c3a495098..5d67ae8ad 100644 --- a/400_xowa/src/gplx/xowa/guis/menus/Xog_popup_mnu_mgr.java +++ b/400_xowa/src/gplx/xowa/guis/menus/Xog_popup_mnu_mgr.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.xowa.guis.menus; import gplx.*; import gplx.xowa.*; import gplx.xowa.guis.*; import gplx.xowa.guis.menus.dom.*; import gplx.xowa.langs.*; -public class Xog_popup_mnu_mgr implements GfoInvkAble { +public class Xog_popup_mnu_mgr implements Gfo_invk { private Ordered_hash hash = Ordered_hash_.New(); private Xoa_gui_mgr gui_mgr; private Xog_mnu_grp[] mnus = new Xog_mnu_grp[6]; @@ -55,7 +55,7 @@ public class Xog_popup_mnu_mgr implements GfoInvkAble { } public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_get)) return Get_or_new(m.ReadStr("v")); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; } private static final String Invk_get = "get"; public static final String Root_key_tabs_btns = "browser.tabs.btns" , Root_key_html_page = "html_box", Root_key_html_link = "browser.html.link", Root_key_html_file = "browser.html.file" diff --git a/400_xowa/src/gplx/xowa/guis/menus/Xog_window_mnu_mgr.java b/400_xowa/src/gplx/xowa/guis/menus/Xog_window_mnu_mgr.java index 3d37b7b35..d3035293c 100644 --- a/400_xowa/src/gplx/xowa/guis/menus/Xog_window_mnu_mgr.java +++ b/400_xowa/src/gplx/xowa/guis/menus/Xog_window_mnu_mgr.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.xowa.guis.menus; import gplx.*; import gplx.xowa.*; import gplx.xowa.guis.*; import gplx.xowa.guis.menus.dom.*; import gplx.xowa.langs.*; -public class Xog_window_mnu_mgr implements GfoInvkAble { +public class Xog_window_mnu_mgr implements Gfo_invk { private Ordered_hash hash = Ordered_hash_.New(); public Xog_mnu_grp Browser() {return browser;} private Xog_mnu_grp browser; public Xog_window_mnu_mgr(Xoa_gui_mgr gui_mgr, Xog_menu_mgr menu_mgr) { @@ -41,7 +41,7 @@ public class Xog_window_mnu_mgr implements GfoInvkAble { } public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_get)) return Get_or_new(m.ReadStr("v")); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; } private static final String Invk_get = "get"; public static final String Root_key_browser_win = "main_win"; } diff --git a/400_xowa/src/gplx/xowa/guis/menus/dom/Xog_mnu_base.java b/400_xowa/src/gplx/xowa/guis/menus/dom/Xog_mnu_base.java index 945bc2ce7..523af46c9 100644 --- a/400_xowa/src/gplx/xowa/guis/menus/dom/Xog_mnu_base.java +++ b/400_xowa/src/gplx/xowa/guis/menus/dom/Xog_mnu_base.java @@ -16,9 +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.guis.menus.dom; import gplx.*; import gplx.xowa.*; import gplx.xowa.guis.*; import gplx.xowa.guis.menus.*; -import gplx.gfui.*; import gplx.xowa.langs.*; import gplx.xowa.guis.cmds.*; -public abstract class Xog_mnu_base implements GfoInvkAble { - private List_adp list = List_adp_.new_(); +import gplx.gfui.*; import gplx.gfui.imgs.*; +import gplx.xowa.langs.*; import gplx.xowa.guis.cmds.*; +public abstract class Xog_mnu_base implements Gfo_invk { + private List_adp list = List_adp_.New(); public Xog_mnu_base() {evt_mgr = new Xog_mnu_evt_mgr(this);} public Xog_mnu_evt_mgr Evt_mgr() {return evt_mgr;} private Xog_mnu_evt_mgr evt_mgr; public void Evt_mgr_(Xog_mnu_evt_mgr v) {this.evt_mgr = v;} @@ -86,7 +87,7 @@ public abstract class Xog_mnu_base implements GfoInvkAble { else if (ctx.Match(k, Invk_add_chk)) return Add_chk(m.ReadStr("key"), m.ReadStr("text"), m.ReadStr("shortcut"), m.ReadStr("img"), m.ReadStr("cmd")); else if (ctx.Match(k, Invk_add_rdo_default)) return Add_rdo_default(m.ReadStr("v")); else if (ctx.Match(k, Invk_add_rdo)) return Add_rdo(m.ReadStr("key"), m.ReadStr("text"), m.ReadStr("shortcut"), m.ReadStr("img"), m.ReadStr("cmd")); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String diff --git a/400_xowa/src/gplx/xowa/guis/menus/dom/Xog_mnu_bldr.java b/400_xowa/src/gplx/xowa/guis/menus/dom/Xog_mnu_bldr.java index 5b778c24a..4e9d5cc7b 100644 --- a/400_xowa/src/gplx/xowa/guis/menus/dom/Xog_mnu_bldr.java +++ b/400_xowa/src/gplx/xowa/guis/menus/dom/Xog_mnu_bldr.java @@ -16,7 +16,8 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.guis.menus.dom; import gplx.*; import gplx.xowa.*; import gplx.xowa.guis.*; import gplx.xowa.guis.menus.*; -import gplx.gfui.*; import gplx.xowa.guis.cmds.*; import gplx.xowa.apps.gfs.*; +import gplx.gfui.*; import gplx.gfui.kits.core.*; import gplx.gfui.imgs.*; +import gplx.xowa.guis.cmds.*; import gplx.xowa.apps.gfs.*; public class Xog_mnu_bldr { private Xoae_app app; private Gfui_kit kit; private Io_url img_dir; public void Init_by_kit(Xoae_app app, Gfui_kit kit, Io_url img_dir) { @@ -73,8 +74,8 @@ public class Xog_mnu_bldr { // private void Add_chk(String key, String text, String shortcut, String img) { // Xog_mnu_itm rv = Add_itm(Xog_mnu_itm.Tid_chk, key, text, shortcut, img); // Xog_cmd_itm cmd = gui_mgr.Cmd_mgr().Regy().Get_or_null(key); if (cmd == null) throw Err_.new_wo_type("unknown cmd; key={0}", key); -// GfoEvObj pub = gui_mgr.App().Gfs_mgr().Get_owner_as_event_obj(cmd.Cmd()); -// GfoEvMgr_.SubSame(pub, Xog_mnu_evt_mgr.Evt_selected_changed, rv.Evt_mgr()); +// Gfo_evt_itm pub = gui_mgr.App().Gfs_mgr().Get_owner_as_event_obj(cmd.Cmd()); +// Gfo_evt_mgr_.Sub_same(pub, Xog_mnu_evt_mgr.Evt_selected_changed, rv.Evt_mgr()); // } private Gfui_mnu_itm Add_rdo(Gfui_mnu_grp owner_gui, Xog_mnu_itm sub, String sub_text, String sub_shortcut) { ImageAdp img = Get_img(sub.Img_nest()); diff --git a/400_xowa/src/gplx/xowa/guis/menus/dom/Xog_mnu_evt_mgr.java b/400_xowa/src/gplx/xowa/guis/menus/dom/Xog_mnu_evt_mgr.java index d60c0f669..e8bfa7103 100644 --- a/400_xowa/src/gplx/xowa/guis/menus/dom/Xog_mnu_evt_mgr.java +++ b/400_xowa/src/gplx/xowa/guis/menus/dom/Xog_mnu_evt_mgr.java @@ -16,11 +16,11 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.guis.menus.dom; import gplx.*; import gplx.xowa.*; import gplx.xowa.guis.*; import gplx.xowa.guis.menus.*; -import gplx.gfui.*; import gplx.xowa.guis.cmds.*; -public class Xog_mnu_evt_mgr implements GfoEvObj { +import gplx.gfui.*; import gplx.gfui.kits.core.*; import gplx.xowa.guis.cmds.*; +public class Xog_mnu_evt_mgr implements Gfo_evt_itm { private Ordered_hash itms = Ordered_hash_.New(); - public Xog_mnu_evt_mgr(Xog_mnu_base owner) {this.ev_mgr = GfoEvMgr.new_(this);} - public GfoEvMgr EvMgr() {return ev_mgr;} private GfoEvMgr ev_mgr; + public Xog_mnu_evt_mgr(Xog_mnu_base owner) {this.ev_mgr = new Gfo_evt_mgr(this);} + public Gfo_evt_mgr Evt_mgr() {return ev_mgr;} private Gfo_evt_mgr ev_mgr; public void Sub(Gfui_mnu_itm mnu_itm) { itms.Add(mnu_itm.Uid(), mnu_itm); } diff --git a/400_xowa/src/gplx/xowa/guis/menus/dom/Xog_mnu_grp.java b/400_xowa/src/gplx/xowa/guis/menus/dom/Xog_mnu_grp.java index 90842b5c6..52cd7e1e3 100644 --- a/400_xowa/src/gplx/xowa/guis/menus/dom/Xog_mnu_grp.java +++ b/400_xowa/src/gplx/xowa/guis/menus/dom/Xog_mnu_grp.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.guis.menus.dom; import gplx.*; import gplx.xowa.*; import gplx.xowa.guis.*; import gplx.xowa.guis.menus.*; -import gplx.gfui.*; +import gplx.gfui.*; import gplx.gfui.kits.core.*; import gplx.gfui.controls.standards.*; import gplx.xowa.apps.*; import gplx.xowa.apps.gfs.*; import gplx.xowa.guis.views.*; public class Xog_mnu_grp extends Xog_mnu_base { @@ -40,19 +40,19 @@ public class Xog_mnu_grp extends Xog_mnu_base { else this.Clear(); if (!mnu_is_popup && app.Gui_mgr().Browser_win().Win_box() != null) - GfoInvkAble_.InvkCmd(app.Gui_mgr().Browser_win(), gplx.gfui.Gfui_html.Evt_win_resized); + Gfo_invk_.Invk_by_key(app.Gui_mgr().Browser_win(), Gfui_html.Evt_win_resized); } public String Source() {return source;} private String source; public String Source_default() {return source_default;} public Xog_mnu_grp Source_default_(String v) {source_default = source = v; return this;} private String source_default; private Xog_mnu_grp Source_(Xoa_gfs_mgr gfs_mgr, String v) { Object rslt = Source_exec(gfs_mgr, v); - if (rslt != GfoInvkAble_.Rv_error) + if (rslt != Gfo_invk_.Rv_error) source = v; return this; } public Object Source_exec(Xoa_gfs_mgr gfs_mgr) {return Source_exec(gfs_mgr, source);} private Object Source_exec(Xoa_gfs_mgr gfs_mgr, String v) { - if (!enabled) return GfoInvkAble_.Rv_handled; + if (!enabled) return Gfo_invk_.Rv_handled; String script = "clear;\n" + v + "build;"; return gfs_mgr.Run_str_for(this, script); } diff --git a/400_xowa/src/gplx/xowa/guis/menus/dom/Xog_mnu_itm.java b/400_xowa/src/gplx/xowa/guis/menus/dom/Xog_mnu_itm.java index acbc3af60..504e02e95 100644 --- a/400_xowa/src/gplx/xowa/guis/menus/dom/Xog_mnu_itm.java +++ b/400_xowa/src/gplx/xowa/guis/menus/dom/Xog_mnu_itm.java @@ -16,7 +16,8 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.guis.menus.dom; import gplx.*; import gplx.xowa.*; import gplx.xowa.guis.*; import gplx.xowa.guis.menus.*; -import gplx.gfui.*; import gplx.xowa.langs.*; import gplx.xowa.guis.cmds.*; import gplx.xowa.langs.msgs.*; +import gplx.gfui.*; import gplx.gfui.kits.core.*; +import gplx.xowa.langs.*; import gplx.xowa.guis.cmds.*; import gplx.xowa.langs.msgs.*; public class Xog_mnu_itm extends Xog_mnu_base { private Xoa_gui_mgr gui_mgr; public Xog_mnu_itm(Xoa_gui_mgr gui_mgr, String key) { @@ -79,9 +80,9 @@ public class Xog_mnu_itm extends Xog_mnu_base { else return super.Invk(ctx, ikey, k, m); return this; } - private static final String Invk_text = "text", Invk_text_ = "text_", Invk_shortcut = "shortcut", Invk_shortcut_ = "shortcut_", Invk_cmd = "cmd", Invk_cmd_ = "cmd_", Invk_img = "img", Invk_img_ = "img_" + private static final String Invk_text = "text", Invk_text_ = "text_", Invk_shortcut = "shortcut", Invk_shortcut_ = "shortcut_", Invk_cmd = "cmd", Invk_cmd_ = "cmd_", Invk_img = "img", Invk_img_ = "img_" ; public static final byte Tid_nil = 0, Tid_grp = 1, Tid_spr = 2, Tid_btn = 3, Tid_chk = 4, Tid_rdo = 5; private static String[] Img_nest_of(String img) {return String_.Len_eq_0(img) ? String_.Ary_empty : String_.Split(img, "/");} - public static final Xog_mnu_itm Null = new Xog_mnu_itm(null, "null"); + public static final Xog_mnu_itm Null = new Xog_mnu_itm(null, "null"); } diff --git a/400_xowa/src/gplx/xowa/guis/tabs/Xog_tab_mgr.java b/400_xowa/src/gplx/xowa/guis/tabs/Xog_tab_mgr.java new file mode 100644 index 000000000..27af43761 --- /dev/null +++ b/400_xowa/src/gplx/xowa/guis/tabs/Xog_tab_mgr.java @@ -0,0 +1,21 @@ +/* +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.guis.tabs; import gplx.*; import gplx.xowa.*; import gplx.xowa.guis.*; +public interface Xog_tab_mgr extends Gfo_invk { + void New_tab(boolean focus, String site, String page); +} diff --git a/400_xowa/src/gplx/xowa/guis/tabs/Xog_tab_mgr_.java b/400_xowa/src/gplx/xowa/guis/tabs/Xog_tab_mgr_.java new file mode 100644 index 000000000..d49fee35b --- /dev/null +++ b/400_xowa/src/gplx/xowa/guis/tabs/Xog_tab_mgr_.java @@ -0,0 +1,26 @@ +/* +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.guis.tabs; import gplx.*; import gplx.xowa.*; import gplx.xowa.guis.*; +public class Xog_tab_mgr_ { + public static Xog_tab_mgr New_mem() {return new Xog_tab_mgr__mem();} + public static final String Invk__new_tab = "new_tab"; +} +class Xog_tab_mgr__mem implements Xog_tab_mgr { + public void New_tab(boolean focus, String site, String page) {} + public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {return this;} +} diff --git a/400_xowa/src/gplx/xowa/guis/tabs/Xog_tab_mgr__swt.java b/400_xowa/src/gplx/xowa/guis/tabs/Xog_tab_mgr__swt.java new file mode 100644 index 000000000..eaee3107e --- /dev/null +++ b/400_xowa/src/gplx/xowa/guis/tabs/Xog_tab_mgr__swt.java @@ -0,0 +1,32 @@ +/* +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.guis.tabs; import gplx.*; import gplx.xowa.*; import gplx.xowa.guis.*; +public class Xog_tab_mgr__swt implements Xog_tab_mgr { + private final Xoa_gui_mgr gui_mgr; + public Xog_tab_mgr__swt(Xoa_gui_mgr gui_mgr) {this.gui_mgr = gui_mgr;} + public void New_tab(boolean focus, String site, String page) { + // gui_mgr.Browser_win().Tab_mgr().Tabs_new_link(url, focus); // TODO_OLD: handle html dumps + } + public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { + if (ctx.Match(k, Xog_tab_mgr_.Invk__new_tab)) gui_mgr.Kit().New_cmd_sync(this).Invk(ctx, ikey, Invk__new_tab_async, m); + else if (ctx.Match(k, Invk__new_tab_async)) this.New_tab(m.ReadYn("focus"), m.ReadStr("site"), m.ReadStr("page")); + else return Gfo_invk_.Rv_unhandled; + return this; + } + private static final String Invk__new_tab_async = "new_tab_async"; +} diff --git a/400_xowa/src/gplx/xowa/guis/urls/Xog_url_wkr.java b/400_xowa/src/gplx/xowa/guis/urls/Xog_url_wkr.java index 194d1f02f..0a5fae2db 100644 --- a/400_xowa/src/gplx/xowa/guis/urls/Xog_url_wkr.java +++ b/400_xowa/src/gplx/xowa/guis/urls/Xog_url_wkr.java @@ -16,14 +16,15 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.guis.urls; import gplx.*; import gplx.xowa.*; import gplx.xowa.guis.*; -import gplx.core.net.*; import gplx.core.envs.*; +import gplx.core.net.*; import gplx.core.net.qargs.*; import gplx.core.envs.*; +import gplx.gfui.controls.standards.*; import gplx.xowa.files.*; import gplx.xowa.files.repos.*; import gplx.xowa.files.origs.*; import gplx.langs.htmls.encoders.*; import gplx.xowa.htmls.hrefs.*; import gplx.xowa.htmls.doms.*; import gplx.xowa.guis.views.*; public class Xog_url_wkr { - private final Xoa_url tmp_url = Xoa_url.blank(); + private final Xoa_url tmp_url = Xoa_url.blank(); private Xoae_app app; private Xog_win_itm win; private Xowe_wiki wiki; private Xoae_page page; - private final Xof_img_size img_size = new Xof_img_size(); private final Xof_url_bldr url_bldr = Xof_url_bldr.new_v2(); + private final Xof_img_size img_size = new Xof_img_size(); private final Xof_url_bldr url_bldr = Xof_url_bldr.new_v2(); public Xog_url_wkr Parse(Xog_win_itm win, String href_str) { if (href_str == null) return this; // text is not link; return; byte[] href_bry = Bry_.new_u8(href_str); @@ -61,7 +62,7 @@ public class Xog_url_wkr { private Xoa_url Exec_url_file(Xoae_app app, Xowe_wiki cur_wiki, Xoae_page page, Xog_win_itm win, byte[] href_bry) { // EX: file:///xowa/A.png Xowe_wiki wiki = (Xowe_wiki)page.Commons_mgr().Source_wiki_or(cur_wiki); Io_url href_url = Io_url_.http_any_(String_.new_u8(Gfo_url_encoder_.Http_url.Decode(href_bry)), Op_sys.Cur().Tid_is_wnt()); - gplx.gfui.Gfui_html html_box = win.Active_html_box(); + Gfui_html html_box = win.Active_html_box(); byte[] href_bry_encoded = Gfo_url_encoder_.Fsys_lnx.Encode(href_bry); // encode to href_bry; note must encode to same href_bry as Xof_url_bldr, which uses Gfo_url_encoder_.Fsys_lnx; PAGE:en.w:File:Volc�n_Chimborazo,_"El_Taita_Chimborazo".jpg DATE:2015-12-06 String xowa_ttl = wiki.Gui_mgr().Cfg_browser().Content_editable() ? html_box.Html_js_eval_proc_as_str(Xog_js_procs.Selection__get_active_for_editable_mode, gplx.xowa.htmls.Xoh_consts.Atr_xowa_title_str, null) diff --git a/400_xowa/src/gplx/xowa/guis/urls/url_macros/Xog_url_macro_grp.java b/400_xowa/src/gplx/xowa/guis/urls/url_macros/Xog_url_macro_grp.java index 104b6bd5c..355fcf6d1 100644 --- a/400_xowa/src/gplx/xowa/guis/urls/url_macros/Xog_url_macro_grp.java +++ b/400_xowa/src/gplx/xowa/guis/urls/url_macros/Xog_url_macro_grp.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.guis.urls.url_macros; import gplx.*; import gplx.xowa.*; import gplx.xowa.guis.*; import gplx.xowa.guis.urls.*; import gplx.core.btries.*; import gplx.core.brys.fmtrs.*; -public class Xog_url_macro_grp implements GfoInvkAble { +public class Xog_url_macro_grp implements Gfo_invk { public Btrie_slim_mgr Trie() {return trie;} private Btrie_slim_mgr trie = Btrie_slim_mgr.cs(); public void Del(byte[] abrv) {trie.Del(abrv);} public void Set(String abrv, String fmt) {Set(Bry_.new_u8(abrv), Bry_.new_u8(fmt));} @@ -26,7 +26,7 @@ public class Xog_url_macro_grp implements GfoInvkAble { if (ctx.Match(k, Invk_clear)) trie.Clear(); else if (ctx.Match(k, Invk_set)) Set(m.ReadBry("abrv"), m.ReadBry("fmt")); else if (ctx.Match(k, Invk_del)) Del(m.ReadBry("abrv")); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String Invk_clear = "clear", Invk_set = "set", Invk_del = "del"; diff --git a/400_xowa/src/gplx/xowa/guis/urls/url_macros/Xog_url_macro_mgr.java b/400_xowa/src/gplx/xowa/guis/urls/url_macros/Xog_url_macro_mgr.java index b657942c1..5066f3c4a 100644 --- a/400_xowa/src/gplx/xowa/guis/urls/url_macros/Xog_url_macro_mgr.java +++ b/400_xowa/src/gplx/xowa/guis/urls/url_macros/Xog_url_macro_mgr.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.guis.urls.url_macros; import gplx.*; import gplx.xowa.*; import gplx.xowa.guis.*; import gplx.xowa.guis.urls.*; public class Xog_url_macro_mgr { - private Bry_bfr bfr = Bry_bfr.reset_(255); + private Bry_bfr bfr = Bry_bfr_.Reset(255); public Xog_url_macro_mgr() { this.Init(); } @@ -84,9 +84,9 @@ public class Xog_url_macro_mgr { else if (ctx.Match(k, Invk_lang_default_)) lang_default = m.ReadBry("v"); else if (ctx.Match(k, Invk_types)) return types_mgr; else if (ctx.Match(k, Invk_custom)) return custom_mgr; - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String Invk_lang_default = "lang_default", Invk_lang_default_ = "lang_default_", Invk_types = "types", Invk_custom = "custom"; - public static final byte[] Unhandled = null; + public static final byte[] Unhandled = null; } diff --git a/400_xowa/src/gplx/xowa/guis/views/Gfo_usr_dlg__gui__swt.java b/400_xowa/src/gplx/xowa/guis/views/Gfo_usr_dlg__gui__swt.java index 12c3eaf26..01f026566 100644 --- a/400_xowa/src/gplx/xowa/guis/views/Gfo_usr_dlg__gui__swt.java +++ b/400_xowa/src/gplx/xowa/guis/views/Gfo_usr_dlg__gui__swt.java @@ -16,29 +16,30 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.guis.views; import gplx.*; import gplx.xowa.*; import gplx.xowa.guis.*; -import gplx.core.strings.*; import gplx.gfui.*; -public class Gfo_usr_dlg__gui__swt implements Gfo_usr_dlg__gui, GfoInvkAble { - private final GfuiInvkCmd cmd_sync; private final GfuiTextBox prog_box, info_box; private final Gfo_usr_dlg__gui__opt opt; +import gplx.core.lists.rings.*; +import gplx.gfui.*; import gplx.gfui.draws.*; import gplx.gfui.kits.core.*; import gplx.gfui.controls.standards.*; +public class Gfo_usr_dlg__gui__swt implements Gfo_usr_dlg__gui, Gfo_invk { + private final GfuiInvkCmd cmd_sync; private final GfuiTextBox prog_box, info_box; private final Gfo_usr_dlg__gui__opt opt; public Gfo_usr_dlg__gui__swt(Gfui_kit kit, GfuiTextBox prog_box, GfuiTextBox info_box, GfuiTextBox warn_box, Gfo_usr_dlg__gui__opt opt) { this.cmd_sync = kit.New_cmd_sync(this); // NOTE: cmd_sync needed else progress messages may be sent out of order this.prog_box = prog_box; this.info_box = info_box; this.opt = opt; } public void Clear() {Write(Invk_write_prog, ""); info_box.Text_(""); info_box.ForeColor_(ColorAdp_.Black); info_box.BackColor_(ColorAdp_.White); info_box.Redraw(); info_box_is_warn = false;} - public String_ring Prog_msgs() {return prog_msgs;} String_ring prog_msgs = new String_ring().Max_(128); + public Ring__string Prog_msgs() {return prog_msgs;} Ring__string prog_msgs = new Ring__string().Max_(128); public void Write_prog(String text) {Write(Invk_write_prog, text);} public void Write_note(String text) {if (opt.Note_enabled()) Write(Invk_write_note, text);} public void Write_warn(String text) {if (opt.Warn_enabled()) Write(Invk_write_warn, text);} public void Write_stop(String text) {Write(Invk_write_stop, text);} private void Write(String invk, String text) { GfoMsg m = GfoMsg_.new_cast_(invk).Add("v", text); - GfoInvkAble_.InvkCmd_msg(cmd_sync, invk, m); + Gfo_invk_.Invk_by_msg(cmd_sync, invk, m); } public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_write_prog)) {String v = m.ReadStr("v"); prog_box.Text_(v); prog_box.Redraw(); if (!String_.Eq(v, "")) prog_msgs.Push(v);} else if (ctx.Match(k, Invk_write_note)) {Info_box_write(m.ReadStr("v"), false); info_box.Redraw();} else if (ctx.Match(k, Invk_write_warn)) {Info_box_write(m.ReadStr("v"), true); info_box.ForeColor_(ColorAdp_.White); info_box.BackColor_(ColorAdp_.Red); info_box.Redraw();} - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private void Info_box_write(String v, boolean warn) { diff --git a/400_xowa/src/gplx/xowa/guis/views/Load_page_wkr.java b/400_xowa/src/gplx/xowa/guis/views/Load_page_wkr.java index 477ad2f6b..abd904402 100644 --- a/400_xowa/src/gplx/xowa/guis/views/Load_page_wkr.java +++ b/400_xowa/src/gplx/xowa/guis/views/Load_page_wkr.java @@ -18,50 +18,53 @@ along with this program. If not, see . package gplx.xowa.guis.views; import gplx.*; import gplx.xowa.*; import gplx.xowa.guis.*; import gplx.core.threads.*; import gplx.core.envs.*; public class Load_page_wkr implements Gfo_thread_wkr { - private static final Object thread_lock = new Object(); private static boolean running = false; - private final Xog_tab_itm tab; + private final Xog_tab_itm tab; public Load_page_wkr(Xog_tab_itm tab, Xowe_wiki wiki, Xoa_url url, Xoa_ttl ttl) {this.tab = tab; this.wiki = wiki; this.url = url; this.ttl = ttl;} - public String Name() {return "xowa.load_page_wkr";} - public boolean Resume() {return false;} - public Xowe_wiki Wiki() {return wiki;} private final Xowe_wiki wiki; - public Xoa_url Url() {return url;} private final Xoa_url url; - public Xoa_ttl Ttl() {return ttl;} private final Xoa_ttl ttl; - public Xoae_page Page() {return page;} private Xoae_page page; - public boolean Hdump_enabled() {return hdump_enabled;} private boolean hdump_enabled; - public Exception Exec_err() {return exec_err;} private Exception exec_err; - public void Exec() { + public String Thread__name() {return "xowa.load_page_wkr";} + public boolean Thread__resume() {return false;} + public Xowe_wiki Wiki() {return wiki;} private final Xowe_wiki wiki; + public Xoa_url Url() {return url;} private final Xoa_url url; + public Xoa_ttl Ttl() {return ttl;} private final Xoa_ttl ttl; + public Xoae_page Page() {return page;} private Xoae_page page; + public Exception Exec_err() {return exec_err;} private Exception exec_err; + public void Thread__exec() { try { Running_(true); - int wait_count = 0; - while (gplx.xowa.htmls.modules.popups.Xow_popup_mgr.Running() && ++wait_count < 100) - Thread_adp_.Sleep(10); - Xoae_app app = wiki.Appe(); - app.Usr_dlg().Log_many("", "", "page.load: url=~{0}", url.To_str()); - if (Env_.System_memory_free() < app.Sys_cfg().Free_mem_when()) // check if low in memory - Xow_wiki_.Rls_mem(wiki, false); // clear caches (which will clear bry_bfr_mkr) - else // not low in memory - app.Utl__bfr_mkr().Clear(); // clear bry_bfr_mkr only; NOTE: call before page parse, not when page is first added, else threading errors; DATE:2014-05-30 - this.page = wiki.Data_mgr().Load_page_by_ttl(url, ttl, wiki.Lang(), tab, false); - this.hdump_enabled = wiki.Html__hdump_enabled(); - wait_count = 0; - while (gplx.xowa.htmls.modules.popups.Xow_popup_mgr.Running() && ++wait_count < 100) - Thread_adp_.Sleep(10); - if (hdump_enabled && page.Revision_data().Html_db_id() != -1) { - // wiki.Parser_mgr().Parse(page, false); - wiki.Html__hdump_mgr().Load_mgr().Load(page); - } + + // wait_for_popups; free mem check; + Xoa_app_.Usr_dlg().Log_many("", "", "page.load: url=~{0}", url.To_str()); + Wait_for_popups(); + Xowe_wiki_.Rls_mem_if_needed(wiki); + + // load page meta; wait_for_popups + this.page = wiki.Data_mgr().Load_page_and_parse(url, ttl, wiki.Lang(), tab, false); + boolean hdump_exists = page.Revision_data().Html_db_id() != -1 && wiki.Appe().Api_root().Wiki().Hdump().Read_preferred(); + page.Html_data().Hdump_exists_(hdump_exists); + Wait_for_popups(); + + // load page text + if (hdump_exists) + wiki.Html__hdump_mgr().Load_mgr().Load_by_edit(page); else wiki.Parser_mgr().Parse(page, false); - GfoInvkAble_.InvkCmd_val(tab.Cmd_sync(), Xog_tab_itm.Invk_show_url_loaded_swt, this); + + // launch thread to show page + Gfo_invk_.Invk_by_val(tab.Cmd_sync(), Xog_tab_itm.Invk_show_url_loaded_swt, this); } catch (Exception e) { this.exec_err = e; - GfoInvkAble_.InvkCmd_val(tab.Cmd_sync(), Xog_tab_itm.Invk_show_url_failed_swt, this); + Gfo_invk_.Invk_by_val(tab.Cmd_sync(), Xog_tab_itm.Invk_show_url_failed_swt, this); } finally { Running_(false); } } + private static void Wait_for_popups() {// HACK: wait for popups to finish, else thread errors due to popups and loader mutating cached items + int wait_count = 0; + while (gplx.xowa.htmls.modules.popups.Xow_popup_mgr.Running() && ++wait_count < 100) + Thread_adp_.Sleep(10); + } + private static final Object thread_lock = new Object(); private static boolean running = false; public static boolean Running() { boolean rv = false; synchronized (thread_lock) { diff --git a/400_xowa/src/gplx/xowa/guis/views/Xog_async_wkr.java b/400_xowa/src/gplx/xowa/guis/views/Xog_async_wkr.java new file mode 100644 index 000000000..51fc4e1b8 --- /dev/null +++ b/400_xowa/src/gplx/xowa/guis/views/Xog_async_wkr.java @@ -0,0 +1,101 @@ +/* +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.guis.views; import gplx.*; import gplx.xowa.*; import gplx.xowa.guis.*; +import gplx.core.threads.*; +import gplx.xowa.parsers.lnkis.redlinks.*; +import gplx.xowa.files.gui.*; +public class Xog_async_wkr { + public static void Async(Xoae_page page, Xog_html_itm js_wkr) { + if (page == null) return; // TEST: occurs during Xog_win_mgr_tst + + // get wiki + Xowe_wiki wiki = page.Wikie(); Xoae_app app = wiki.Appe(); Gfo_usr_dlg usr_dlg = app.Usr_dlg(); + app.Usr_dlg().Log_many("", "", "page.async: url=~{0}", page.Url().To_str()); + if (page.Url().Anch_str() != null) + js_wkr.Scroll_page_by_id_gui(page.Url().Anch_str()); + if (usr_dlg.Canceled()) { + usr_dlg.Prog_none("", "", ""); + app.Log_wtr().Queue_enabled_(false); + return; + } + + Async_imgs(usr_dlg, app, wiki, page, js_wkr); + Async_math(usr_dlg, app, page, js_wkr); + Async_score(usr_dlg, app, page); + Async_redlinks(usr_dlg, app, page, js_wkr); + + // cache maintenance + usr_dlg.Prog_none("", "imgs.done", ""); + try {app.File_mgr().Cache_mgr().Compress_check();} + catch (Exception e) {usr_dlg.Warn_many("", "", "page.thread.cache: page=~{0} err=~{1}", page.Ttl().Raw(), Err_.Message_gplx_full(e));} + app.Usere().User_db_mgr().Cache_mgr().Page_end(app.Wiki_mgr()); + app.Log_wtr().Queue_enabled_(false); // flush queue + } + private static void Async_imgs(Gfo_usr_dlg usr_dlg, Xoae_app app, Xowe_wiki wiki, Xoae_page page, Xog_js_wkr js_wkr) { + // get images + int len = page.File_queue().Count(); if (len == 0) return; + usr_dlg.Prog_one("", "", "downloading images: ~{0}", len); + try {page.File_queue().Exec(wiki, page);} + catch (Exception e) {usr_dlg.Warn_many("", "", "page.thread.image: page=~{0} err=~{1}", page.Ttl().Raw(), Err_.Message_gplx_full(e));} + + // handle packed_gallery and imap + if (page.Html_data().Xtn_gallery_packed_exists()) // packed_gallery exists; fire js once; PAGE:en.w:National_Sculpture_Museum_(Valladolid); DATE:2014-07-21 + js_wkr.Html_gallery_packed_exec(); + if ( page.Html_data().Xtn_imap_exists() // imap exists; DATE:2014-08-07 + && page.Html_data().Head_mgr().Itm__popups().Enabled() + ) + js_wkr.Html_popups_bind_hover_to_doc(); // rebind all elements to popup + } + private static void Async_math(Gfo_usr_dlg usr_dlg, Xoae_app app, Xoae_page page, Xog_js_wkr js_wkr) { + // make png from latex + int len = page.File_math().Count(); + if (len == 0) return; + try { + usr_dlg.Prog_one("", "", "page.async.math; count=~{0}", len); + for (int i = 0; i < len; ++i) { + if (usr_dlg.Canceled()) { + usr_dlg.Prog_none("", "", ""); + app.Log_wtr().Queue_enabled_(false); + return; + } + gplx.xowa.xtns.math.Xof_math_itm itm = (gplx.xowa.xtns.math.Xof_math_itm)page.File_math().Get_at(i); + String queue_msg = usr_dlg.Prog_many("", "", "generating math ~{0} of ~{1}: ~{2}", i + List_adp_.Base1, len, itm.Math()); + app.File_mgr().Math_mgr().MakePng(itm.Math(), itm.Hash(), itm.Png_url(), queue_msg); + gplx.gfui.SizeAdp size = app.File_mgr().Img_mgr().Wkr_query_img_size().Exec(itm.Png_url()); + js_wkr.Html_img_update("xowa_math_img_" + itm.Id(), itm.Png_url().To_http_file_str(), size.Width(), size.Height()); + js_wkr.Html_elem_delete("xowa_math_txt_" + itm.Id()); + } + page.File_math().Clear(); + } + catch (Exception e) {usr_dlg.Warn_many("", "", "page.async.math: page=~{0} err=~{1}", page.Ttl().Raw(), Err_.Message_gplx_log(e));} + } + private static void Async_score(Gfo_usr_dlg usr_dlg, Xoae_app app, Xoae_page page) { + // run other cmds + if (page.Html_cmd_mgr().Count() > 0) { + try {page.Html_cmd_mgr().Exec(app, page);} + catch (Exception e) {usr_dlg.Warn_many("", "", "page.thread.cmds: page=~{0} err=~{1}", page.Ttl().Raw(), Err_.Message_gplx_full(e));} + } + } + private static void Async_redlinks(Gfo_usr_dlg usr_dlg, Xoae_app app, Xoae_page page, Xog_js_wkr js_wkr) { + if (page.Tab_data().Tab() == null) return; // needed b/c Preview has page.Tab of null which causes null_ref error in redlinks + try { + Xog_redlink_mgr redlinks_wkr = new Xog_redlink_mgr(page); + Thread_adp_.Start_by_key(gplx.xowa.apps.Xoa_thread_.Key_page_redlink, redlinks_wkr, gplx.xowa.parsers.lnkis.redlinks.Xog_redlink_mgr.Invk_run); + } catch (Exception e) {usr_dlg.Warn_many("", "", "page.thread.redlinks: page=~{0} err=~{1}", page.Ttl().Raw(), Err_.Message_gplx_full(e));} + } +} diff --git a/400_xowa/src/gplx/xowa/guis/views/Xog_html_itm.java b/400_xowa/src/gplx/xowa/guis/views/Xog_html_itm.java index 15bee4156..9d1636e3f 100644 --- a/400_xowa/src/gplx/xowa/guis/views/Xog_html_itm.java +++ b/400_xowa/src/gplx/xowa/guis/views/Xog_html_itm.java @@ -17,11 +17,12 @@ along with this program. If not, see . */ package gplx.xowa.guis.views; import gplx.*; import gplx.xowa.*; import gplx.xowa.guis.*; import gplx.core.primitives.*; import gplx.core.btries.*; -import gplx.gfui.*; import gplx.xowa.guis.menus.*; import gplx.xowa.guis.menus.dom.*; import gplx.xowa.files.gui.*; +import gplx.gfui.*; import gplx.gfui.kits.core.*; import gplx.gfui.controls.elems.*; import gplx.gfui.controls.standards.*; +import gplx.xowa.guis.menus.*; import gplx.xowa.guis.menus.dom.*; import gplx.xowa.files.gui.*; import gplx.langs.htmls.*; import gplx.xowa.htmls.hrefs.*; import gplx.xowa.htmls.js.*; import gplx.xowa.htmls.heads.*; import gplx.xowa.wikis.pages.*; -public class Xog_html_itm implements Xog_js_wkr, GfoInvkAble, GfoEvObj { - private Xoae_app app; private final Object thread_lock = new Object(); - private final String_obj_ref scroll_top = String_obj_ref.null_(), node_path = String_obj_ref.null_(); +public class Xog_html_itm implements Xog_js_wkr, Gfo_invk, Gfo_evt_itm { + private Xoae_app app; private final Object thread_lock = new Object(); + private final String_obj_ref scroll_top = String_obj_ref.null_(), node_path = String_obj_ref.null_(); protected Xog_html_itm() {} // TEST: for prefs_mgr public Xog_html_itm(Xog_tab_itm owner_tab) { this.owner_tab = owner_tab; @@ -30,14 +31,14 @@ public class Xog_html_itm implements Xog_js_wkr, GfoInvkAble, GfoEvObj { Gfui_kit kit = owner_tab.Tab_mgr().Win().Kit(); cmd_sync = kit.New_cmd_sync(this); // NOTE: always use sync; async will cause some images to be "lost" in update; cmd_async = kit.New_cmd_async(this); - ev_mgr = GfoEvMgr.new_(this); + ev_mgr = new Gfo_evt_mgr(this); } - public GfoEvMgr EvMgr() {return ev_mgr;} private GfoEvMgr ev_mgr; + public Gfo_evt_mgr Evt_mgr() {return ev_mgr;} private Gfo_evt_mgr ev_mgr; public Xog_tab_itm Owner_tab() {return owner_tab;} private Xog_tab_itm owner_tab; public Gfui_html Html_box() {return html_box;} private Gfui_html html_box; public Xoh_js_cbk Js_cbk() {return js_cbk;} private Xoh_js_cbk js_cbk; - public GfoInvkAble Cmd_sync() {return cmd_sync;} private GfoInvkAble cmd_sync; - public GfoInvkAble Cmd_async() {return cmd_async;} private GfoInvkAble cmd_async; + public Gfo_invk Cmd_sync() {return cmd_sync;} private Gfo_invk cmd_sync; + public Gfo_invk Cmd_async() {return cmd_async;} private Gfo_invk cmd_async; public void Switch_mem(Xog_html_itm comp) { Xog_tab_itm temp_owner_tab = owner_tab; // NOTE: reparent owner_tab, since owner_tab will be switching its html_itm this.owner_tab = comp.owner_tab; @@ -96,11 +97,11 @@ public class Xog_html_itm implements Xog_js_wkr, GfoInvkAble, GfoEvObj { public String Get_elem_value(String elem_id) {return Html_elem_atr_get_str(elem_id, Gfui_html.Atr_value);} public void Html_img_update(String elem_id, String elem_src, int elem_width, int elem_height) { GfoMsg m = GfoMsg_.new_cast_(Invk_html_img_update).Add("elem_id", elem_id).Add("elem_src", elem_src).Add("elem_width", elem_width).Add("elem_height", elem_height); - GfoInvkAble_.InvkCmd_msg(cmd_sync, Invk_html_img_update, m); + Gfo_invk_.Invk_by_msg(cmd_sync, Invk_html_img_update, m); } public void Html_elem_delete(String elem_id) { GfoMsg m = GfoMsg_.new_cast_(Invk_html_elem_delete).Add("elem_id", elem_id); - GfoInvkAble_.InvkCmd_msg(cmd_sync, Invk_html_elem_delete, m); + Gfo_invk_.Invk_by_msg(cmd_sync, Invk_html_elem_delete, m); } @gplx.Virtual public String Html_elem_atr_get_str(String id, String atr_key) {return html_box.Html_js_eval_proc_as_str(Xog_js_procs.Doc__atr_get_as_obj, id, atr_key);} @gplx.Virtual public boolean Html_elem_atr_get_bool(String id, String atr_key) {return Bool_.parse(html_box.Html_js_eval_proc_as_str(Xog_js_procs.Doc__atr_get_to_str, id, atr_key));} @@ -109,36 +110,36 @@ public class Xog_html_itm implements Xog_js_wkr, GfoInvkAble, GfoEvObj { public void Html_atr_set(String elem_id, String atr_key, String atr_val) { synchronized (thread_lock) { // needed for Special:Search and async cancel; DATE:2015-05-02 GfoMsg m = GfoMsg_.new_cast_(Invk_html_elem_atr_set).Add("elem_id", elem_id).Add("atr_key", atr_key).Add("atr_val", atr_val); - GfoInvkAble_.InvkCmd_msg(cmd_sync, Invk_html_elem_atr_set, m); + Gfo_invk_.Invk_by_msg(cmd_sync, Invk_html_elem_atr_set, m); } } public void Html_redlink(String html_uid) {Html_doc_atr_append_or_set(html_uid, "class", gplx.xowa.htmls.core.wkrs.lnkis.htmls.Xoh_redlink_utl.New_str);} private void Html_doc_atr_append_or_set(String elem_id, String atr_key, String atr_val) { GfoMsg m = GfoMsg_.new_cast_(Invk_html_doc_atr_append_or_set).Add("elem_id", elem_id).Add("atr_key", atr_key).Add("atr_val", atr_val); - GfoInvkAble_.InvkCmd_msg(cmd_sync, Invk_html_doc_atr_append_or_set, m); + Gfo_invk_.Invk_by_msg(cmd_sync, Invk_html_doc_atr_append_or_set, m); } public void Html_elem_replace_html(String id, String html) { synchronized (thread_lock) { // needed for Special:Search and async; DATE:2015-04-23 GfoMsg m = GfoMsg_.new_cast_(Invk_html_elem_replace_html).Add("id", id).Add("html", html); - GfoInvkAble_.InvkCmd_msg(cmd_sync, Invk_html_elem_replace_html, m); + Gfo_invk_.Invk_by_msg(cmd_sync, Invk_html_elem_replace_html, m); } } public void Html_elem_append_above(String id, String html) { synchronized (thread_lock) { // needed for Special:Search and async; DATE:2015-04-23 GfoMsg m = GfoMsg_.new_cast_(Invk_html_elem_append_above).Add("id", id).Add("html", html); - GfoInvkAble_.InvkCmd_msg(cmd_sync, Invk_html_elem_append_above, m); + Gfo_invk_.Invk_by_msg(cmd_sync, Invk_html_elem_append_above, m); } } public void Html_gallery_packed_exec() { if (!String_.Eq(owner_tab.Tab_key(), owner_tab.Tab_mgr().Active_tab().Tab_key())) return; // do not exec unless active; GfoMsg m = GfoMsg_.new_cast_(Invk_html_gallery_packed_exec); - GfoInvkAble_.InvkCmd_msg(cmd_sync, Invk_html_gallery_packed_exec, m); + Gfo_invk_.Invk_by_msg(cmd_sync, Invk_html_gallery_packed_exec, m); module_packed_done = true; } public void Html_popups_bind_hover_to_doc() { if (!String_.Eq(owner_tab.Tab_key(), owner_tab.Tab_mgr().Active_tab().Tab_key())) return; // do not exec unless active; GfoMsg m = GfoMsg_.new_cast_(Invk_html_popups_bind_hover_to_doc); - GfoInvkAble_.InvkCmd_msg(cmd_sync, Invk_html_popups_bind_hover_to_doc, m); + Gfo_invk_.Invk_by_msg(cmd_sync, Invk_html_popups_bind_hover_to_doc, m); module_popups_done = true; } private boolean module_packed_done = false, module_popups_done = false; @@ -149,7 +150,7 @@ public class Xog_html_itm implements Xog_js_wkr, GfoInvkAble, GfoEvObj { if (module_mgr.Itm__popups().Enabled() && !module_popups_done) this.Html_popups_bind_hover_to_doc(); } - public void Scroll_page_by_bmk_gui() {GfoInvkAble_.InvkCmd(cmd_async, Invk_scroll_page_by_bmk);} + public void Scroll_page_by_bmk_gui() {Gfo_invk_.Invk_by_key(cmd_async, Invk_scroll_page_by_bmk);} private void Scroll_page_by_bmk() { if (!String_.Eq(owner_tab.Tab_key(), owner_tab.Tab_mgr().Active_tab().Tab_key())) return; // only set html page position on active tab; otherwise, page "scrolls down" mysteriously on unseen tab; DATE:2014-05-02 String html_doc_pos = owner_tab.Page().Html_data().Bmk_pos(); @@ -168,7 +169,7 @@ public class Xog_html_itm implements Xog_js_wkr, GfoInvkAble, GfoEvObj { html_box.Html_js_eval_proc_as_str(Xog_js_procs.Win__vpos_set, node_path.Val(), scroll_top.Val()); } } - public void Scroll_page_by_id_gui(String id) {GfoInvkAble_.InvkCmd_val(cmd_async, Invk_scroll_page_by_id, id);} + public void Scroll_page_by_id_gui(String id) {Gfo_invk_.Invk_by_val(cmd_async, Invk_scroll_page_by_id, id);} private boolean Scroll_page_by_id(String id) { return (id == null) ? false @@ -200,7 +201,7 @@ public class Xog_html_itm implements Xog_js_wkr, GfoInvkAble, GfoEvObj { else if (ctx.Match(k, Invk_scroll_page_by_id)) Scroll_page_by_id(m.ReadStr("v")); else if (ctx.Match(k, Invk_html_elem_focus)) html_box.Html_js_eval_proc_as_str(Xog_js_procs.Doc__elem_focus, m.ReadStr("v")); else if (ctx.Match(k, GfuiElemKeys.Evt_menu_detected)) When_menu_detected(); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String diff --git a/400_xowa/src/gplx/xowa/guis/views/Xog_layout.java b/400_xowa/src/gplx/xowa/guis/views/Xog_layout.java index 7ccf204dd..b6104bacf 100644 --- a/400_xowa/src/gplx/xowa/guis/views/Xog_layout.java +++ b/400_xowa/src/gplx/xowa/guis/views/Xog_layout.java @@ -16,8 +16,8 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.guis.views; import gplx.*; import gplx.xowa.*; import gplx.xowa.guis.*; -import gplx.gfui.*; import gplx.xowa.guis.views.*; -public class Xog_layout implements GfoInvkAble { +import gplx.gfui.*; import gplx.gfui.kits.core.*; import gplx.gfui.controls.elems.*; import gplx.gfui.controls.standards.*; import gplx.xowa.guis.views.*; +public class Xog_layout implements Gfo_invk { public Xog_layout() { go_bwd_btn.Owner_(this); go_fwd_btn.Owner_(this); @@ -102,7 +102,7 @@ public class Xog_layout implements GfoInvkAble { else if (ctx.Match(k, Invk_prog_box)) return prog_box; else if (ctx.Match(k, Invk_note_box)) return note_box; else if (ctx.Match(k, Invk_main_win)) return main_win; - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; } static final String Invk_coord_mode_ = "coord_mode_", Invk_go_fwd_btn = "go_fwd_btn", Invk_go_bwd_btn = "go_bwd_btn", Invk_url_box = "url_box", Invk_search_box = "search_box", Invk_html_box = "html_box", Invk_find_box = "find_box", Invk_prog_box = "prog_box", Invk_note_box = "note_box" , Invk_main_win = "main_win", Invk_find_fwd_btn = "find_fwd_btn", Invk_find_bwd_btn = "find_bwd_btn", Invk_url_exec_btn = "url_exec_btn", Invk_search_exec_btn = "search_exec_btn", Invk_find_close_btn = "find_close_btn"; diff --git a/400_xowa/src/gplx/xowa/guis/views/Xog_layout_box.java b/400_xowa/src/gplx/xowa/guis/views/Xog_layout_box.java index 7ea56c450..1c45fae27 100644 --- a/400_xowa/src/gplx/xowa/guis/views/Xog_layout_box.java +++ b/400_xowa/src/gplx/xowa/guis/views/Xog_layout_box.java @@ -16,9 +16,9 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.guis.views; import gplx.*; import gplx.xowa.*; import gplx.xowa.guis.*; -import gplx.gfui.*; -public class Xog_layout_box implements GfoInvkAble { - public GfoInvkAble Owner() {return owner;} public Xog_layout_box Owner_(GfoInvkAble v) {owner = v; return this;} GfoInvkAble owner; +import gplx.gfui.*; import gplx.gfui.draws.*; import gplx.gfui.controls.elems.*; +public class Xog_layout_box implements Gfo_invk { + public Gfo_invk Owner() {return owner;} public Xog_layout_box Owner_(Gfo_invk v) {owner = v; return this;} Gfo_invk owner; public int X_abs() {return x_abs;} public Xog_layout_box X_abs_(int v) {x_abs = v; return this;} private int x_abs = Int_.Min_value; public int Y_abs() {return y_abs;} public Xog_layout_box Y_abs_(int v) {y_abs = v; return this;} private int y_abs = Int_.Min_value; public int W_abs() {return w_abs;} public Xog_layout_box W_abs_(int v) {w_abs = v; return this;} private int w_abs = Int_.Min_value; @@ -66,7 +66,7 @@ public class Xog_layout_box implements GfoInvkAble { else if (ctx.Match(k, Invk_font_style_)) font_style = FontStyleAdp_.parse(m.ReadStr("v")); else if (ctx.Match(k, Invk_mode_)) mode = String_.Eq(m.ReadStr("v"), "abs") ? Mode_abs : Mode_rel; else if (ctx.Match(k, Invk_owner)) return owner; - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } public static final byte Mode_abs = 0, Mode_rel = 1; diff --git a/400_xowa/src/gplx/xowa/guis/views/Xog_tab_close_mgr.java b/400_xowa/src/gplx/xowa/guis/views/Xog_tab_close_mgr.java index c3526ab8d..3a28ccec0 100644 --- a/400_xowa/src/gplx/xowa/guis/views/Xog_tab_close_mgr.java +++ b/400_xowa/src/gplx/xowa/guis/views/Xog_tab_close_mgr.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.guis.views; import gplx.*; import gplx.xowa.*; import gplx.xowa.guis.*; public class Xog_tab_close_mgr { - private List_adp list = List_adp_.new_(); + private List_adp list = List_adp_.New(); public void Clear() {list.Clear();} public void Add(Xog_tab_close_lnr lnr) {list.Add(lnr);} public int Len() {return list.Count();} diff --git a/400_xowa/src/gplx/xowa/guis/views/Xog_tab_itm.java b/400_xowa/src/gplx/xowa/guis/views/Xog_tab_itm.java index 2d3278c0e..246218175 100644 --- a/400_xowa/src/gplx/xowa/guis/views/Xog_tab_itm.java +++ b/400_xowa/src/gplx/xowa/guis/views/Xog_tab_itm.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.xowa.guis.views; import gplx.*; import gplx.xowa.*; import gplx.xowa.guis.*; -import gplx.core.threads.*; import gplx.core.envs.*; import gplx.gfui.*; import gplx.xowa.guis.history.*; import gplx.xowa.guis.bnds.*; +import gplx.core.threads.*; import gplx.core.envs.*; +import gplx.gfui.*; import gplx.gfui.ipts.*; import gplx.gfui.kits.core.*; import gplx.gfui.controls.elems.*; import gplx.gfui.controls.standards.*; +import gplx.xowa.guis.history.*; import gplx.xowa.guis.bnds.*; import gplx.xowa.files.*; import gplx.xowa.files.fsdb.*; import gplx.xowa.langs.vnts.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.lnkis.redlinks.*; import gplx.xowa.apps.cfgs.old.*; import gplx.xowa.wikis.pages.*; import gplx.xowa.wikis.pages.skins.*; -public class Xog_tab_itm implements GfoInvkAble { +public class Xog_tab_itm implements Gfo_invk { private Xog_win_itm win; private Xocfg_tab_mgr cfg_tab_mgr; public Xog_tab_itm(Xog_tab_mgr tab_mgr, Gfui_tab_itm_data tab_data, Xowe_wiki wiki, Xoae_page page) { this.tab_mgr = tab_mgr; this.tab_data = tab_data; this.wiki = wiki; this.page = page; @@ -30,7 +32,7 @@ public class Xog_tab_itm implements GfoInvkAble { cmd_sync = win.Kit().New_cmd_sync(this); } public Xowe_wiki Wiki() {return wiki;} public void Wiki_(Xowe_wiki v) {this.wiki = v;} private Xowe_wiki wiki; - public GfoInvkAble Cmd_sync() {return cmd_sync;} private GfoInvkAble cmd_sync; + public Gfo_invk Cmd_sync() {return cmd_sync;} private Gfo_invk cmd_sync; public void Make_html_box(int uid, Gfui_tab_itm tab_box, Xog_win_itm win, GfuiElem owner) { this.tab_box = tab_box; Xoae_app app = win.App(); Xoa_gui_mgr gui_mgr = win.Gui_mgr(); Gfui_kit kit = win.Kit(); @@ -42,7 +44,7 @@ public class Xog_tab_itm implements GfoInvkAble { html_box.Html_doc_html_load_by_mem(""); // NOTE: must set source, else control will be empty, and key events will not be raised; DATE:2014-04-30 IptBnd_.ipt_to_(IptCfg_.Null, html_box, this, "popup", IptEventType_.MouseDown, IptMouseBtn_.Right); IptBnd_.cmd_to_(IptCfg_.Null, html_box, win, Xog_win_itm.Invk_exit, IptKey_.add_(IptKey_.Alt, IptKey_.F4)); // WORKAROUND:SWT: xulrunner_v24 no longer sends Alt+F4 to SwtShell; must manually subscribe it to quit; DATE:2015-07-31 - GfoEvMgr_.SubSame(html_box, GfuiElemKeys.Evt_menu_detected, html_itm); + Gfo_evt_mgr_.Sub_same(html_box, GfuiElemKeys.Evt_menu_detected, html_itm); gui_mgr.Bnd_mgr().Bind(Xog_bnd_box_.Tid_browser_html, html_box); if (!Env_.Mode_testing()) kit.Set_mnu_popup(html_box, gui_mgr.Menu_mgr().Popup().Html_page().Under_mnu()); @@ -76,9 +78,12 @@ public class Xog_tab_itm implements GfoInvkAble { public Xog_html_itm Html_itm() {return html_itm;} private Xog_html_itm html_itm; public Gfui_html Html_box() {return html_itm.Html_box();} public Xoae_page Page() {return page;} - public void Page_(Xoae_page page) { - this.page = page; + public void Page_ref_(Xoae_page v) { + this.page = v; this.wiki = page.Wikie(); // NOTE: must update wiki else back doesn't work; DATE:2015-03-05 + } + public void Page_(Xoae_page page) { + Page_ref_(page); this.Page_update_ui(); // force tab button to update when page changes } private Xoae_page page; public void Page_update_ui() { @@ -171,7 +176,7 @@ public class Xog_tab_itm implements GfoInvkAble { // html_itm.Html_box().Size_(tab_mgr.Tab_mgr().Size()); // COMMENTED: causes clicks on macosx to be off by 4 px; NOTE: must resize tab here, else scrolling to anchor in background tab doesn't work (html_box has size of 0, 0) DATE:2015-05-03 // win.Page__async__bgn(this); Gfo_thread_wkr async_wkr = null; - if (wkr.Hdump_enabled()) { + if (page.Html_data().Hdump_exists()) { wiki.File_mgr().Init_file_mgr_by_load(wiki); Xof_fsdb_mgr fsdb_mgr = wiki.File_mgr().Fsdb_mgr(); async_wkr = new Xof_file_wkr(wiki.File__orig_mgr(), fsdb_mgr.Bin_mgr(), fsdb_mgr.Mnt_mgr(), app.Usere().User_db_mgr().Cache_mgr(), wiki.File__repo_mgr(), html_itm, page, page.Hdump_data().Imgs()); @@ -257,8 +262,8 @@ public class Xog_tab_itm implements GfoInvkAble { } try { if (page.Tab_data().Tab() != null) { // needed b/c Preview has page.Tab of null which causes null_ref error in redlinks - Xog_redlink_mgr redlinks_wkr = new Xog_redlink_mgr(win_itm, page, app.Usere().Cfg_mgr().Log_mgr().Log_redlinks()); - Thread_adp_.invk_(gplx.xowa.apps.Xoa_thread_.Key_page_redlink, redlinks_wkr, gplx.xowa.parsers.lnkis.redlinks.Xog_redlink_mgr.Invk_run).Start(); + Xog_redlink_mgr redlinks_wkr = new Xog_redlink_mgr(page); + Thread_adp_.Start_by_key(gplx.xowa.apps.Xoa_thread_.Key_page_redlink, redlinks_wkr, gplx.xowa.parsers.lnkis.redlinks.Xog_redlink_mgr.Invk_run); usr_dlg.Prog_none("", "imgs.done", ""); } } catch (Exception e) {usr_dlg.Warn_many("", "", "page.thread.redlinks: page=~{0} err=~{1}", page_ttl_str, Err_.Message_gplx_full(e));} @@ -270,7 +275,7 @@ public class Xog_tab_itm implements GfoInvkAble { public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_show_url_loaded_swt)) this.Show_url_loaded((Load_page_wkr)m.ReadObj("v")); else if (ctx.Match(k, Invk_show_url_failed_swt)) this.Show_url_failed((Load_page_wkr)m.ReadObj("v")); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } public static final String Invk_show_url_loaded_swt = "show_url_loaded_swt", Invk_show_url_failed_swt = "show_url_failed_swt"; @@ -278,9 +283,9 @@ public class Xog_tab_itm implements GfoInvkAble { class Load_files_wkr implements Gfo_thread_wkr { private Xog_tab_itm tab; public Load_files_wkr(Xog_tab_itm tab) {this.tab = tab;} - public String Name() {return "xowa.load_files_wkr";} - public boolean Resume() {return true;} - public void Exec() { + public String Thread__name() {return "xowa.load_files_wkr";} + public boolean Thread__resume() {return true;} + public void Thread__exec() { try {tab.Async();} catch (Exception e) { tab.Tab_mgr().Win().App().Usr_dlg().Warn_many("error while running file wkr; page=~{0} err=~{1}", tab.Page().Url().To_str(), Err_.Message_gplx_full(e)); diff --git a/400_xowa/src/gplx/xowa/guis/views/Xog_tab_itm_.java b/400_xowa/src/gplx/xowa/guis/views/Xog_tab_itm_.java index 238c32124..67f090a3a 100644 --- a/400_xowa/src/gplx/xowa/guis/views/Xog_tab_itm_.java +++ b/400_xowa/src/gplx/xowa/guis/views/Xog_tab_itm_.java @@ -26,5 +26,5 @@ public class Xog_tab_itm_ { return max == Tab_name_max_disabled || name_len <= max ? name : String_.Mid(name, 0, max) + "..."; } public static final int Tab_name_min_disabled = -1, Tab_name_max_disabled = -1; - public static final Xog_tab_itm Null = null; + public static final Xog_tab_itm Null = null; } diff --git a/400_xowa/src/gplx/xowa/guis/views/Xog_tab_itm_edit_mgr.java b/400_xowa/src/gplx/xowa/guis/views/Xog_tab_itm_edit_mgr.java index 1b4e9b809..3f65e284c 100644 --- a/400_xowa/src/gplx/xowa/guis/views/Xog_tab_itm_edit_mgr.java +++ b/400_xowa/src/gplx/xowa/guis/views/Xog_tab_itm_edit_mgr.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.guis.views; import gplx.*; import gplx.xowa.*; import gplx.xowa.guis.*; -import gplx.gfui.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.core.htmls.*; import gplx.xowa.wikis.pages.*; +import gplx.gfui.*; import gplx.gfui.controls.standards.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.core.htmls.*; import gplx.xowa.wikis.pages.*; import gplx.xowa.wikis.nss.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.tmpls.*; public class Xog_tab_itm_edit_mgr { @@ -61,7 +61,7 @@ public class Xog_tab_itm_edit_mgr { Bry_bfr tmp_bfr = wiki.Utl__bfr_mkr().Get_m001(); Xoh_page_wtr_wkr wkr = wiki.Html_mgr().Page_wtr_mgr().Wkr(Xopg_page_.Tid_read); - wkr.Write_body(tmp_bfr, Xoh_wtr_ctx.Basic, new_page); + wkr.Write_body(tmp_bfr, wiki.Parser_mgr().Ctx(), Xoh_wtr_ctx.Basic, new_page); byte[] new_html = tmp_bfr.To_bry_and_rls(); new_page.Html_data().Edit_preview_(new_html); @@ -100,7 +100,7 @@ public class Xog_tab_itm_edit_mgr { public static void Debug(Xog_win_itm win, byte view_tid) { Xog_tab_itm tab = win.Tab_mgr().Active_tab(); Xoae_page page = tab.Page(); Xowe_wiki wiki = tab.Wiki(); Xop_ctx ctx = wiki.Parser_mgr().Ctx(); - ctx.Defn_trace().Clear(); // TODO: move_me + ctx.Defn_trace().Clear(); // TODO_OLD: move_me ctx.Defn_trace_(Xot_defn_trace_dbg.Instance); Xoa_ttl ttl = page.Ttl(); Xoae_page new_page = Xoae_page.New(wiki, ttl); diff --git a/400_xowa/src/gplx/xowa/guis/views/Xog_tab_itm_read_mgr.java b/400_xowa/src/gplx/xowa/guis/views/Xog_tab_itm_read_mgr.java index 469954a95..9f1bafd86 100644 --- a/400_xowa/src/gplx/xowa/guis/views/Xog_tab_itm_read_mgr.java +++ b/400_xowa/src/gplx/xowa/guis/views/Xog_tab_itm_read_mgr.java @@ -17,10 +17,9 @@ along with this program. If not, see . */ package gplx.xowa.guis.views; import gplx.*; import gplx.xowa.*; import gplx.xowa.guis.*; import gplx.core.threads.*; -import gplx.gfui.*; import gplx.xowa.guis.langs.*; import gplx.xowa.guis.history.*; +import gplx.gfui.*; import gplx.gfui.controls.standards.*; import gplx.xowa.guis.langs.*; import gplx.xowa.guis.history.*; import gplx.xowa.parsers.lnkis.redlinks.*; import gplx.xowa.wikis.pages.*; public class Xog_tab_itm_read_mgr { - public static void Async(Xog_tab_itm tab) {tab.Async();} public static void Show_page(Xog_tab_itm tab, Xoae_page new_page, boolean reset_to_read) {Show_page(tab, new_page, reset_to_read, false, false, Xog_history_stack.Nav_fwd);} public static void Show_page(Xog_tab_itm tab, Xoae_page new_page, boolean reset_to_read, boolean new_page_is_same, boolean show_is_err, byte history_nav_type) { if (reset_to_read) tab.View_mode_(Xopg_page_.Tid_read); @@ -36,7 +35,7 @@ public class Xog_tab_itm_read_mgr { try {tab.Html_itm().Show(new_page);} catch (Exception e) { if (String_.Eq(Err_.Message_lang(e), "class org.eclipse.swt.SWTException Widget is disposed")) return; // ignore errors caused by user closing tab early; DATE:2014-07-26 - if (show_is_err) { // trying to show error page, but failed; don't show again, else recursion until out of memory; TODO:always load error page; no reason it should fail; WHEN:html_skin; DATE:2014-06-08 + if (show_is_err) { // trying to show error page, but failed; don't show again, else recursion until out of memory; TODO_OLD:always load error page; no reason it should fail; WHEN:html_skin; DATE:2014-06-08 Gfo_usr_dlg_.Instance.Warn_many("", "", "fatal error trying to load error page; page=~{0} err=~{1}" + new_page.Url().To_str(), Err_.Message_gplx_full(e)); return; } @@ -56,7 +55,7 @@ public class Xog_tab_itm_read_mgr { if (tab.View_mode() == Xopg_page_.Tid_read) html_itm.Scroll_page_by_bmk_gui(); else - GfoInvkAble_.InvkCmd_val(tab.Html_itm().Cmd_async(), Xog_html_itm.Invk_html_elem_focus, Xog_html_itm.Elem_id__xowa_edit_data_box); // NOTE: must be async, else won't work; DATE:2014-06-05 + Gfo_invk_.Invk_by_val(tab.Html_itm().Cmd_async(), Xog_html_itm.Invk_html_elem_focus, Xog_html_itm.Elem_id__xowa_edit_data_box); // NOTE: must be async, else won't work; DATE:2014-06-05 } public static void Update_selected_tab_blank(Xog_win_itm win) {Update_selected_tab(win, null, null);} // called when all tabs are null public static void Update_selected_tab(Xog_win_itm win, Xoa_url url, Xoa_ttl ttl) { @@ -73,7 +72,7 @@ public class Xog_tab_itm_read_mgr { String err_msg = String_.Format("page_load fail: page={0} err={1}", String_.new_u8(url.Raw()), Err_.Message_gplx_full(e)); win.Usr_dlg().Warn_many("", "", err_msg); win.App().Log_wtr().Queue_enabled_(false); - Xoae_page fail_page = wiki.Data_mgr().Get_page(ttl, false); + Xoae_page fail_page = wiki.Data_mgr().Load_page_by_ttl(ttl); tab.View_mode_(Xopg_page_.Tid_edit); Update_selected_tab(win, url, ttl); Show_page(tab, fail_page, false, false, true, Xog_history_stack.Nav_fwd); diff --git a/400_xowa/src/gplx/xowa/guis/views/Xog_tab_mgr.java b/400_xowa/src/gplx/xowa/guis/views/Xog_tab_mgr.java index be5e7c7ea..71fadc479 100644 --- a/400_xowa/src/gplx/xowa/guis/views/Xog_tab_mgr.java +++ b/400_xowa/src/gplx/xowa/guis/views/Xog_tab_mgr.java @@ -16,15 +16,16 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.guis.views; import gplx.*; import gplx.xowa.*; import gplx.xowa.guis.*; -import gplx.gfui.*; import gplx.xowa.apps.cfgs.old.*; import gplx.xowa.apps.apis.xowa.gui.browsers.*; import gplx.xowa.specials.*; +import gplx.gfui.*; import gplx.gfui.kits.core.*; import gplx.gfui.draws.*; import gplx.gfui.controls.gxws.*; import gplx.gfui.controls.tabs.*; import gplx.gfui.controls.standards.*; +import gplx.xowa.apps.cfgs.old.*; import gplx.xowa.apps.apis.xowa.gui.browsers.*; import gplx.xowa.specials.*; import gplx.xowa.apps.urls.*; -public class Xog_tab_mgr implements GfoEvObj { +public class Xog_tab_mgr implements Gfo_evt_itm { private Ordered_hash tab_regy = Ordered_hash_.New(); private int tab_uid = 0; public Xog_tab_mgr(Xog_win_itm win) { this.win = win; - ev_mgr = GfoEvMgr.new_(this); + ev_mgr = new Gfo_evt_mgr(this); } - public GfoEvMgr EvMgr() {return ev_mgr;} private GfoEvMgr ev_mgr; + public Gfo_evt_mgr Evt_mgr() {return ev_mgr;} private Gfo_evt_mgr ev_mgr; public Xog_win_itm Win() {return win;} private Xog_win_itm win; public Gfui_tab_mgr Tab_mgr() {return tab_mgr;} private Gfui_tab_mgr tab_mgr; public byte Html_load_tid() {return html_load_tid;} private byte html_load_tid; @@ -34,21 +35,21 @@ public class Xog_tab_mgr implements GfoEvObj { active_tab = Xog_tab_itm_.Null; tab_mgr.Btns_selected_color_(ColorAdp_.White); tab_mgr.Btns_unselected_color_(ColorAdp_.LightGray); - GfoEvMgr_.SubSame_many(tab_mgr, this, Gfui_tab_mgr.Evt_tab_selected, Gfui_tab_mgr.Evt_tab_closed, Gfui_tab_mgr.Evt_tab_switched); + Gfo_evt_mgr_.Sub_same_many(tab_mgr, this, Gfui_tab_mgr.Evt_tab_selected, Gfui_tab_mgr.Evt_tab_closed, Gfui_tab_mgr.Evt_tab_switched); Xocfg_tab_btn_mgr btn_mgr = win.App().Cfg_regy().App().Gui_mgr().Tab_mgr().Btn_mgr(); Btns_place_on_top_(btn_mgr.Place_on_top()); Btns_curved_(btn_mgr.Curved()); Btns_close_visible_(btn_mgr.Close_visible()); Btns_unselected_close_visible_(btn_mgr.Unselected_close_visible()); Btns_height_(btn_mgr.Height()); - GfoEvMgr_.SubSame_many(btn_mgr, this + Gfo_evt_mgr_.Sub_same_many(btn_mgr, this , Xocfg_tab_btn_mgr.Evt_place_on_top_changed, Xocfg_tab_btn_mgr.Evt_height_changed, Xocfg_tab_btn_mgr.Evt_curved_changed , Xocfg_tab_btn_mgr.Evt_close_visible_changed, Xocfg_tab_btn_mgr.Evt_unselected_close_visible_changed , Xocfg_tab_btn_mgr.Evt_text_min_chars_changed, Xocfg_tab_btn_mgr.Evt_text_max_chars_changed , Xocfg_tab_btn_mgr.Evt_hide_if_one_changed ); html_load_tid = win.App().Api_root().Gui().Browser().Html().Load_tid(); - GfoEvMgr_.SubSame_many(win.App().Api_root().Gui().Browser().Html(), this + Gfo_evt_mgr_.Sub_same_many(win.App().Api_root().Gui().Browser().Html(), this , Xoapi_html_box.Evt_load_tid_changed ); } @@ -77,7 +78,7 @@ public class Xog_tab_mgr implements GfoEvObj { public Xog_tab_itm Tabs_new_dflt(boolean focus) { boolean active_tab_is_null = this.Active_tab_is_null(); Xowe_wiki cur_wiki = active_tab_is_null ? win.App().Usere().Wiki() : active_tab.Wiki(); - Xoa_ttl ttl = Xoa_ttl.parse(cur_wiki, Xows_special_meta_.Itm__default_tab.Ttl_bry()); + Xoa_ttl ttl = Xoa_ttl.parse(cur_wiki, Xow_special_meta_.Itm__default_tab.Ttl_bry()); Xoa_url url = cur_wiki.Utl__url_parser().Parse_by_urlbar_or_null(ttl.Full_db_as_str()); if (url == null) throw Err_.new_("url", "invalid url", "url", url); Xog_tab_itm rv = Tabs_new(focus, active_tab_is_null, cur_wiki, Xoae_page.New(cur_wiki, ttl)); rv.Page_update_ui(); @@ -158,7 +159,7 @@ public class Xog_tab_mgr implements GfoEvObj { Tabs_new_dflt(true); win.Page__navigate_by_url_bar(url); } - private List_adp closed_undo_list = List_adp_.new_(); + private List_adp closed_undo_list = List_adp_.New(); private void Tabs_closed(String key) { Xog_tab_itm itm = Tabs_get_by_key_or_warn(key); if (itm == null) return; itm.Html_box().Html_dispose(); @@ -208,7 +209,7 @@ public class Xog_tab_mgr implements GfoEvObj { src_itm.Switch_mem(trg_itm); active_tab = trg_itm; // NOTE: src_itm initiated switch, but trg_itm is now active b/c everything in src_itm has now been reparented to trg_itm; DATE:2014-05-12 } - public void Tabs_new_link(boolean focus, String link) { + public void Tabs_new_link(boolean focus, String link) { // handle empty link if (String_.Len_eq_0(link)) { if (this.Active_tab_is_null()) return; link = active_tab.Html_itm().Html_selected_get_active_or_selection(); @@ -256,7 +257,7 @@ public class Xog_tab_mgr implements GfoEvObj { else if (ctx.Match(k, Xocfg_tab_btn_mgr.Evt_text_min_chars_changed)) Btns_text_recalc(); else if (ctx.Match(k, Xocfg_tab_btn_mgr.Evt_text_max_chars_changed)) Btns_text_recalc(); else if (ctx.Match(k, Xoapi_html_box.Evt_load_tid_changed)) html_load_tid = m.ReadByte("v"); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } public static final String diff --git a/400_xowa/src/gplx/xowa/guis/views/Xog_win_itm.java b/400_xowa/src/gplx/xowa/guis/views/Xog_win_itm.java index 866a7e3f8..742403660 100644 --- a/400_xowa/src/gplx/xowa/guis/views/Xog_win_itm.java +++ b/400_xowa/src/gplx/xowa/guis/views/Xog_win_itm.java @@ -17,13 +17,14 @@ along with this program. If not, see . */ package gplx.xowa.guis.views; import gplx.*; import gplx.xowa.*; import gplx.xowa.guis.*; import gplx.core.threads.*; import gplx.core.envs.*; -import gplx.gfui.*; import gplx.xowa.guis.*; import gplx.xowa.guis.history.*; import gplx.xowa.guis.langs.*; import gplx.xowa.guis.urls.*; import gplx.xowa.guis.views.*; +import gplx.gfui.*; import gplx.gfui.draws.*; import gplx.gfui.kits.core.*; import gplx.gfui.controls.windows.*; import gplx.gfui.controls.standards.*; +import gplx.xowa.guis.*; import gplx.xowa.guis.history.*; import gplx.xowa.guis.langs.*; import gplx.xowa.guis.urls.*; import gplx.xowa.guis.views.*; import gplx.xowa.langs.*; import gplx.xowa.langs.msgs.*; import gplx.xowa.wikis.pages.*; import gplx.xowa.apps.urls.*; import gplx.xowa.files.*; import gplx.xowa.htmls.hrefs.*; import gplx.xowa.parsers.lnkis.redlinks.*; import gplx.xowa.specials.*; import gplx.xowa.xtns.math.*; -public class Xog_win_itm implements GfoInvkAble, GfoEvObj { - private GfoInvkAble sync_cmd; +public class Xog_win_itm implements Gfo_invk, Gfo_evt_itm { + private Gfo_invk sync_cmd; private Xog_url_box__selection_changed url_box__selection_changed; public Xog_win_itm(Xoae_app app, Xoa_gui_mgr gui_mgr) { this.app = app; this.gui_mgr = gui_mgr; @@ -44,7 +45,7 @@ public class Xog_win_itm implements GfoInvkAble, GfoEvObj { public GfuiBtn Find_bwd_btn() {return find_bwd_btn;} private GfuiBtn find_bwd_btn; public GfuiTextBox Prog_box() {return prog_box;} private GfuiTextBox prog_box; public GfuiTextBox Info_box() {return info_box;} private GfuiTextBox info_box; - public GfoEvMgr EvMgr() {if (evMgr == null) evMgr = GfoEvMgr.new_(this); return evMgr;} private GfoEvMgr evMgr; + public Gfo_evt_mgr Evt_mgr() {if (evt_mgr == null) evt_mgr = new Gfo_evt_mgr(this); return evt_mgr;} private Gfo_evt_mgr evt_mgr; public Xoae_app App() {return app;} private Xoae_app app; public Xog_tab_mgr Tab_mgr() {return tab_mgr;} private Xog_tab_mgr tab_mgr; public Xog_tab_itm Active_tab() {return tab_mgr.Active_tab();} @@ -66,7 +67,7 @@ public class Xog_win_itm implements GfoInvkAble, GfoEvObj { else if (ctx.Match(k, Gfui_html.Evt_location_changing)) Page__navigate_by_href(tab_mgr.Active_tab(), Xoh_href_gui_utl.Standardize_xowa_link(m.ReadStr("v"))); else if (ctx.Match(k, Gfui_html.Evt_win_resized)) Refresh_win_size(); else if (ctx.Match(k, Invk_page_refresh)) Page__refresh(); - else if (ctx.Match(k, Invk_page_async_exec)) Xog_tab_itm_read_mgr.Async((Xog_tab_itm)m.ReadObj("v")); + else if (ctx.Match(k, Invk_page_async_exec)) ((Xog_tab_itm)m.ReadObj("v")).Async(); else if (ctx.Match(k, Invk_page_view_read)) Page__mode_(Xopg_page_.Tid_read); else if (ctx.Match(k, Invk_page_view_edit)) Page__mode_(Xopg_page_.Tid_edit); else if (ctx.Match(k, Invk_page_view_html)) Page__mode_(Xopg_page_.Tid_html); @@ -91,7 +92,7 @@ public class Xog_win_itm implements GfoInvkAble, GfoEvObj { else if (ctx.Match(k, Invk_page)) return this.Active_page(); else if (ctx.Match(k, Invk_wiki)) return this.Active_tab().Wiki(); else if (ctx.Match(k, Invk_exit)) App__exit(); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String @@ -187,7 +188,7 @@ public class Xog_win_itm implements GfoInvkAble, GfoEvObj { Xoae_page new_page = tab.History_mgr().Go_by_dir(cur_wiki, fwd); if (new_page.Missing()) return; if (new_page.Ttl().Ns().Id_is_special()) // if Special, reload page; needed for Special:Search (DATE:2015-04-19; async loading) and Special:XowaBookmarks DATE:2015-10-05 - new_page = new_page.Wikie().Data_mgr().Load_page_by_ttl(new_page.Url(), new_page.Ttl()); // NOTE: must reparse page if (a) Edit -> Read; or (b) "Options" save + new_page = new_page.Wikie().Data_mgr().Load_page_and_parse(new_page.Url(), new_page.Ttl()); // NOTE: must reparse page if (a) Edit -> Read; or (b) "Options" save byte history_nav_type = fwd ? Xog_history_stack.Nav_fwd : Xog_history_stack.Nav_bwd; boolean new_page_is_same = Bry_.Eq(cur_page.Ttl().Full_txt_by_orig(), new_page.Ttl().Full_txt_by_orig()); Xog_tab_itm_read_mgr.Show_page(tab, new_page, true, new_page_is_same, false, history_nav_type); @@ -211,25 +212,26 @@ public class Xog_win_itm implements GfoInvkAble, GfoEvObj { Page__async__bgn(tab); } public void Page__async__bgn(Xog_tab_itm tab) { - page__async__thread = Thread_adp_.invk_msg_(gplx.xowa.apps.Xoa_thread_.Key_page_async, this, GfoMsg_.new_cast_(Invk_page_async_exec).Add("v", tab)).Start(); - } private Thread_adp page__async__thread = Thread_adp.Null; + page__async__thread = Thread_adp_.Start_by_val(gplx.xowa.apps.Xoa_thread_.Key_page_async, this, Invk_page_async_exec, tab); + page__async__thread.Thread__start(); + } private Thread_adp page__async__thread = Thread_adp.Noop; public boolean Page__async__working(Xoa_url url) { - if (page__async__thread.IsAlive()) { // cancel pending image downloads + if (page__async__thread.Thread__is_alive()) { // cancel pending image downloads page__async__restart_url = url; this.Usr_dlg().Canceled_y_(); app.Wmf_mgr().Download_wkr().Download_xrg().Prog_cancel_y_(); - Thread_adp_.invk_(this, Invk_page_async_cancel_wait).Start(); + Thread_adp_.Start_by_key(Invk_page_async_cancel_wait, this, Invk_page_async_cancel_wait); return true; } return false; } private void Page__async__cancel__wait() { - while (page__async__thread.IsAlive()) { + while (page__async__thread.Thread__is_alive()) { Thread_adp_.Sleep(10); } this.Active_page().File_queue().Clear(); this.Usr_dlg().Canceled_n_(); // NOTE: must mark "uncanceled", else one cancelation will stop all future downloads; DATE:2014-05-04 - GfoInvkAble_.InvkCmd(sync_cmd, Invk_page_async_restart); + Gfo_invk_.Invk_by_key(sync_cmd, Invk_page_async_restart); } private void Page__async__restart() { tab_mgr.Active_tab().Show_url_bgn(page__async__restart_url); @@ -256,7 +258,7 @@ public class Xog_win_itm implements GfoInvkAble, GfoEvObj { Xoa_url url = home_wiki.Utl__url_parser().Parse_by_urlbar_or_null(url_str); if (url == null) return Bry_.Empty; Xowe_wiki wiki = (Xowe_wiki)app.Wiki_mgr().Get_by_or_make_init_y(url.Wiki_bry()); Xoa_ttl ttl = Xoa_ttl.parse(wiki, url.Page_bry()); - Xoae_page new_page = wiki.Data_mgr().Load_page_by_ttl(url, ttl); + Xoae_page new_page = wiki.Data_mgr().Load_page_and_parse(url, ttl); if (new_page.Missing()) {return Bry_.Empty;} gplx.xowa.apps.servers.Gxw_html_server.Assert_tab(app, new_page); // HACK: assert at least 1 tab for Firefox addon; DATE:2015-01-23 Xog_tab_itm tab = tab_mgr.Active_tab(); @@ -291,12 +293,12 @@ public class Xog_win_itm implements GfoInvkAble, GfoEvObj { tab_mgr.Init_by_kit(kit); this.Lang_changed(app.Usere().Lang()); - GfoEvMgr_.SubSame_many(this, this, Gfui_html.Evt_location_changed, Gfui_html.Evt_location_changing, Gfui_html.Evt_link_hover); - GfoEvMgr_.SubSame(win_box, Gfui_html.Evt_win_resized, this); - GfoEvMgr_.Sub(app.Gui_mgr().Win_cfg().Font(), Xol_font_info.Font_changed, this, Invk_window_font_changed); + Gfo_evt_mgr_.Sub_same_many(this, this, Gfui_html.Evt_location_changed, Gfui_html.Evt_location_changing, Gfui_html.Evt_link_hover); + Gfo_evt_mgr_.Sub_same(win_box, Gfui_html.Evt_win_resized, this); + Gfo_evt_mgr_.Sub(app.Gui_mgr().Win_cfg().Font(), Xol_font_info.Font_changed, this, Invk_window_font_changed); url_box__selection_changed = new Xog_url_box__selection_changed(app, url_box); - GfoEvMgr_.SubSame(url_box, GfuiComboBox.Evt__selected_changed, url_box__selection_changed); - GfoEvMgr_.SubSame(url_box, GfuiComboBox.Evt__selected_accepted, url_box__selection_changed); + Gfo_evt_mgr_.Sub_same(url_box, GfuiComboBox.Evt__selected_changed, url_box__selection_changed); + Gfo_evt_mgr_.Sub_same(url_box, GfuiComboBox.Evt__selected_accepted, url_box__selection_changed); if ( !Env_.Mode_testing() && app.Mode().Tid_is_gui()) // only run for gui; do not run for tcp/http server; DATE:2014-05-03 @@ -304,18 +306,18 @@ public class Xog_win_itm implements GfoInvkAble, GfoEvObj { } public static String Remove_redirect_if_exists(String text) { // remove redirect target; EX: "A -> B" -> "A" - int redirect_pos = String_.FindFwd(text, gplx.xowa.addons.apps.searchs.searchers.rslts.Srch_rslt_row.Str__redirect__text); + int redirect_pos = String_.FindFwd(text, gplx.xowa.addons.wikis.searchs.searchers.rslts.Srch_rslt_row.Str__redirect__text); if (redirect_pos != Bry_find_.Not_found) { text = String_.Mid(text, 0, redirect_pos); } return text; } } -class Xog_url_box__selection_changed implements GfoEvObj { +class Xog_url_box__selection_changed implements Gfo_evt_itm { private final GfuiComboBox url_box; private final Xoae_app app; - public Xog_url_box__selection_changed(Xoae_app app, GfuiComboBox url_box) {this.app = app; this.url_box = url_box; this.ev_mgr = GfoEvMgr.new_(this);} - public GfoEvMgr EvMgr() {return ev_mgr;} private final GfoEvMgr ev_mgr; + public Xog_url_box__selection_changed(Xoae_app app, GfuiComboBox url_box) {this.app = app; this.url_box = url_box; this.ev_mgr = new Gfo_evt_mgr(this);} + public Gfo_evt_mgr Evt_mgr() {return ev_mgr;} private final Gfo_evt_mgr ev_mgr; private void On_selection_changed() { String text = url_box.Text(); text = Xog_win_itm.Remove_redirect_if_exists(text); @@ -329,7 +331,7 @@ class Xog_url_box__selection_changed implements GfoEvObj { public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, GfuiComboBox.Evt__selected_changed)) On_selection_changed(); else if (ctx.Match(k, GfuiComboBox.Evt__selected_accepted)) On_selection_accepted(); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } } diff --git a/400_xowa/src/gplx/xowa/guis/views/Xog_win_itm_.java b/400_xowa/src/gplx/xowa/guis/views/Xog_win_itm_.java index 72fef97f6..f9994e787 100644 --- a/400_xowa/src/gplx/xowa/guis/views/Xog_win_itm_.java +++ b/400_xowa/src/gplx/xowa/guis/views/Xog_win_itm_.java @@ -16,7 +16,8 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.guis.views; import gplx.*; import gplx.xowa.*; import gplx.xowa.guis.*; -import gplx.gfui.*; import gplx.xowa.guis.bnds.*; import gplx.xowa.guis.cmds.*; +import gplx.gfui.*; import gplx.gfui.draws.*; import gplx.gfui.kits.core.*; import gplx.gfui.imgs.*; import gplx.gfui.controls.windows.*; import gplx.gfui.controls.elems.*; import gplx.gfui.controls.standards.*; +import gplx.xowa.guis.bnds.*; import gplx.xowa.guis.cmds.*; import gplx.xowa.guis.langs.*; public class Xog_win_itm_ { public static void Show_win(Xog_win_itm win) { diff --git a/400_xowa/src/gplx/xowa/guis/views/Xog_win_itm__prog_href_mgr.java b/400_xowa/src/gplx/xowa/guis/views/Xog_win_itm__prog_href_mgr.java index 35e8422ef..8486312c5 100644 --- a/400_xowa/src/gplx/xowa/guis/views/Xog_win_itm__prog_href_mgr.java +++ b/400_xowa/src/gplx/xowa/guis/views/Xog_win_itm__prog_href_mgr.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.guis.views; import gplx.*; import gplx.xowa.*; import gplx.xowa.guis.*; -import gplx.gfui.*; import gplx.xowa.htmls.hrefs.*; +import gplx.gfui.*; import gplx.gfui.controls.standards.*; import gplx.xowa.htmls.hrefs.*; public class Xog_win_itm__prog_href_mgr { public static void Print(Xog_win_itm win) { // PURPOSE: print href in prog box when in content editable mode String href = win.Active_html_box().Html_js_eval_proc_as_str(Xog_js_procs.Selection__get_active_for_editable_mode, Gfui_html.Atr_href, "");// get selected href from html_box diff --git a/400_xowa/src/gplx/xowa/guis/views/boots/Xog_error_win.java b/400_xowa/src/gplx/xowa/guis/views/boots/Xog_error_win.java index 3cdbb5924..3083a236c 100644 --- a/400_xowa/src/gplx/xowa/guis/views/boots/Xog_error_win.java +++ b/400_xowa/src/gplx/xowa/guis/views/boots/Xog_error_win.java @@ -23,7 +23,7 @@ import java.io.IOException; import java.net.*; import java.awt.*; import java.awt.event.*; import javax.swing.*; -public class Xog_error_win extends JFrame implements GfoInvkAble { +public class Xog_error_win extends JFrame implements Gfo_invk { private Xog_error_data error_data; public Xog_error_win(Xog_error_data error_data) { super("XOWA Error"); @@ -64,11 +64,11 @@ public class Xog_error_win extends JFrame implements GfoInvkAble { text_scroll_pane.setLocation(10, 10); return text_scroll_pane; } - private static JLabel new_link_lbl(GfoInvkAble invk, JPanel owner, int x, int y, String invk_cmd, String text) { + private static JLabel new_link_lbl(Gfo_invk invk, JPanel owner, int x, int y, String invk_cmd, String text) { JLabel rv = new JLabel(); rv.setText(text); rv.setCursor(new Cursor(Cursor.HAND_CURSOR)); - rv.addMouseListener(new Swing_mouse_adapter(GfoInvkAbleCmd.new_(invk, invk_cmd))); + rv.addMouseListener(new Swing_mouse_adapter(Gfo_invk_cmd.New_by_key(invk, invk_cmd))); rv.setLocation(x, y); rv.setSize(80, 20); owner.add(rv); @@ -90,7 +90,7 @@ public class Xog_error_win extends JFrame implements GfoInvkAble { } catch (URISyntaxException | IOException ex) { } } - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String Invk_send_mail = "send_mail", Invk_open_site = "open_site"; public static void Run(String err_msg, String err_trace) { @@ -103,10 +103,10 @@ public class Xog_error_win extends JFrame implements GfoInvkAble { } } class Swing_mouse_adapter extends MouseAdapter { - private final GfoInvkAbleCmd cmd; - public Swing_mouse_adapter(GfoInvkAbleCmd cmd) {this.cmd = cmd;} + private final Gfo_invk_cmd cmd; + public Swing_mouse_adapter(Gfo_invk_cmd cmd) {this.cmd = cmd;} @Override public void mouseClicked(MouseEvent ev) { - try {cmd.Invk();} + try {cmd.Exec();} catch (Exception e) { System.out.println(Err_.Message_gplx_full(e)); } diff --git a/400_xowa/src/gplx/xowa/htmls/Xoh_cmd_mgr.java b/400_xowa/src/gplx/xowa/htmls/Xoh_cmd_mgr.java index 0a3132948..8800a97c1 100644 --- a/400_xowa/src/gplx/xowa/htmls/Xoh_cmd_mgr.java +++ b/400_xowa/src/gplx/xowa/htmls/Xoh_cmd_mgr.java @@ -19,7 +19,7 @@ package gplx.xowa.htmls; import gplx.*; import gplx.xowa.*; public class Xoh_cmd_mgr { public int Count() {return cmds.Count();} public void Clear() {cmds.Clear();} - public void Add(Xoh_cmd_itm itm) {cmds.Add(itm);} List_adp cmds = List_adp_.new_(); + public void Add(Xoh_cmd_itm itm) {cmds.Add(itm);} List_adp cmds = List_adp_.New(); public void Exec(Xoae_app app, Xoae_page page) { int len = cmds.Count(); if (len == 0) return; diff --git a/400_xowa/src/gplx/xowa/htmls/Xoh_html_mgr.java b/400_xowa/src/gplx/xowa/htmls/Xoh_html_mgr.java index 3ef20f8d8..d88d4dc1c 100644 --- a/400_xowa/src/gplx/xowa/htmls/Xoh_html_mgr.java +++ b/400_xowa/src/gplx/xowa/htmls/Xoh_html_mgr.java @@ -18,22 +18,22 @@ along with this program. If not, see . package gplx.xowa.htmls; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.core.htmls.tidy.*; import gplx.xowa.htmls.js.*; import gplx.xowa.htmls.skins.*; import gplx.xowa.parsers.xndes.*; -public class Xoh_html_mgr implements GfoInvkAble { +public class Xoh_html_mgr implements Gfo_invk { public Xoh_html_mgr(Xoae_app app) { js_cleaner = new Xoh_js_cleaner(app); } public void Init_by_app(Xoae_app app) { tidy_mgr.Init_by_app(app); } - public Xop_xatr_whitelist_mgr Whitelist_mgr() {return whitelist_mgr;} private final Xop_xatr_whitelist_mgr whitelist_mgr = new Xop_xatr_whitelist_mgr().Ini(); - public Xoh_page_mgr Page_mgr() {return page_mgr;} private final Xoh_page_mgr page_mgr = new Xoh_page_mgr(); - public Xoh_tidy_mgr Tidy_mgr() {return tidy_mgr;} private final Xoh_tidy_mgr tidy_mgr = new Xoh_tidy_mgr(); - public Xoh_js_cleaner Js_cleaner() {return js_cleaner;} private final Xoh_js_cleaner js_cleaner; - public Xoh_skin_mgr Skin_mgr() {return skin_mgr;} private final Xoh_skin_mgr skin_mgr = new Xoh_skin_mgr(); + public Xop_xatr_whitelist_mgr Whitelist_mgr() {return whitelist_mgr;} private final Xop_xatr_whitelist_mgr whitelist_mgr = new Xop_xatr_whitelist_mgr().Ini(); + public Xoh_page_mgr Page_mgr() {return page_mgr;} private final Xoh_page_mgr page_mgr = new Xoh_page_mgr(); + public Xoh_tidy_mgr Tidy_mgr() {return tidy_mgr;} private final Xoh_tidy_mgr tidy_mgr = new Xoh_tidy_mgr(); + public Xoh_js_cleaner Js_cleaner() {return js_cleaner;} private final Xoh_js_cleaner js_cleaner; + public Xoh_skin_mgr Skin_mgr() {return skin_mgr;} private final Xoh_skin_mgr skin_mgr = new Xoh_skin_mgr(); public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_page)) return page_mgr; else if (ctx.Match(k, Invk_tidy)) return tidy_mgr; else if (ctx.Match(k, Invk_skins)) return skin_mgr; - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; } private static final String Invk_page = "page", Invk_tidy = "tidy", Invk_skins = "skins"; } diff --git a/400_xowa/src/gplx/xowa/htmls/Xoh_img_mgr.java b/400_xowa/src/gplx/xowa/htmls/Xoh_img_mgr.java index de415896f..896bcd23a 100644 --- a/400_xowa/src/gplx/xowa/htmls/Xoh_img_mgr.java +++ b/400_xowa/src/gplx/xowa/htmls/Xoh_img_mgr.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.xowa.htmls; import gplx.*; import gplx.xowa.*; import gplx.xowa.files.*; public class Xoh_img_mgr { - private final List_adp list = List_adp_.new_(); + private final List_adp list = List_adp_.New(); private int uid_nxt = -1; public void Clear() { this.uid_nxt = -1; @@ -40,5 +40,5 @@ public class Xoh_img_mgr { } } public static final String Str__html_uid = "xoimg_"; - public static final byte[] Bry__html_uid = Bry_.new_a7(Str__html_uid); + public static final byte[] Bry__html_uid = Bry_.new_a7(Str__html_uid); } diff --git a/400_xowa/src/gplx/xowa/htmls/Xoh_imgs_mgr.java b/400_xowa/src/gplx/xowa/htmls/Xoh_imgs_mgr.java index f09a2ebe7..1d8641230 100644 --- a/400_xowa/src/gplx/xowa/htmls/Xoh_imgs_mgr.java +++ b/400_xowa/src/gplx/xowa/htmls/Xoh_imgs_mgr.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.xowa.htmls; import gplx.*; import gplx.xowa.*; import gplx.core.primitives.*; import gplx.xowa.wikis.domains.*; -public class Xoh_imgs_mgr implements GfoInvkAble { +public class Xoh_imgs_mgr implements Gfo_invk { public Xoh_imgs_mgr(Xow_html_mgr html_mgr) {wiki_is_default = html_mgr.Wiki().Domain_tid() == Xow_domain_tid_.Int__home;} private boolean wiki_is_default; public Bool_obj_ref Alt_in_caption() {return alt_in_caption;} Bool_obj_ref alt_in_caption = Bool_obj_ref.y_(); public Bool_obj_ref Alt_defaults_to_caption() {return alt_defaults_to_caption;} Bool_obj_ref alt_defaults_to_caption = Bool_obj_ref.y_(); @@ -28,7 +28,7 @@ public class Xoh_imgs_mgr implements GfoInvkAble { else if (ctx.Match(k, Invk_alt_in_caption_)) alt_in_caption = Modify(wiki_is_default, alt_in_caption, m.ReadYn("v")); else if (ctx.Match(k, Invk_alt_defaults_to_caption)) return Yn.To_str(alt_defaults_to_caption.Val()); else if (ctx.Match(k, Invk_alt_defaults_to_caption_)) alt_defaults_to_caption = Modify(wiki_is_default, alt_defaults_to_caption, m.ReadYn("v")); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } public static final String Invk_alt_in_caption = "alt_in_caption", Invk_alt_in_caption_ = "alt_in_caption_", Invk_alt_defaults_to_caption = "alt_defaults_to_caption", Invk_alt_defaults_to_caption_ = "alt_defaults_to_caption_"; diff --git a/400_xowa/src/gplx/xowa/htmls/Xoh_page.java b/400_xowa/src/gplx/xowa/htmls/Xoh_page.java index fa3fbd9f4..320a57993 100644 --- a/400_xowa/src/gplx/xowa/htmls/Xoh_page.java +++ b/400_xowa/src/gplx/xowa/htmls/Xoh_page.java @@ -23,6 +23,7 @@ public class Xoh_page implements Xoa_page { public Xow_wiki Wiki() {return wiki;} private Xow_wiki wiki; public Xoa_url Url() {return page_url;} private Xoa_url page_url; public Xoa_ttl Ttl() {return page_ttl;} private Xoa_ttl page_ttl; + // props public boolean Exists() {return exists;} public Xoh_page Exists_n_() {exists = false; return this;} private boolean exists = true; public int Page_id() {return page_id;} private int page_id; @@ -41,6 +42,8 @@ public class Xoh_page implements Xoa_page { public void Xtn_gallery_packed_exists_y_() {} public Xopg_revision_data Revision_data() {return revision_data;} private Xopg_revision_data revision_data = new Xopg_revision_data(); public Xopg_html_data Html_data() {return html_data;} private Xopg_html_data html_data = new Xopg_html_data(); + public byte[] Redirect_to_ttl() {return redirect_to_ttl;} private byte[] redirect_to_ttl; public void Redirect_to_ttl_(byte[] v) {this.redirect_to_ttl = v;} + // util public Xoa_page__commons_mgr Commons_mgr() {return commons_mgr;} private final Xoa_page__commons_mgr commons_mgr = new Xoa_page__commons_mgr(); diff --git a/400_xowa/src/gplx/xowa/htmls/Xoh_page_mgr.java b/400_xowa/src/gplx/xowa/htmls/Xoh_page_mgr.java index 94fbd6697..4f199c889 100644 --- a/400_xowa/src/gplx/xowa/htmls/Xoh_page_mgr.java +++ b/400_xowa/src/gplx/xowa/htmls/Xoh_page_mgr.java @@ -18,8 +18,8 @@ along with this program. If not, see . package gplx.xowa.htmls; import gplx.*; import gplx.xowa.*; import gplx.core.brys.fmtrs.*; import gplx.xowa.htmls.portal.*; -public class Xoh_page_mgr implements GfoInvkAble { - public Xoh_subpages_bldr Subpages_bldr() {return subpages_bldr;} private final Xoh_subpages_bldr subpages_bldr = new Xoh_subpages_bldr(); +public class Xoh_page_mgr implements Gfo_invk { + public Xoh_subpages_bldr Subpages_bldr() {return subpages_bldr;} private final Xoh_subpages_bldr subpages_bldr = new Xoh_subpages_bldr(); public boolean Font_enabled() {return font_enabled;} private boolean font_enabled = false; public void Font_enabled_(boolean v) {font_enabled = v;} public String Font_name() {return font_name;} private String font_name = "Arial"; @@ -28,15 +28,15 @@ public class Xoh_page_mgr implements GfoInvkAble { font_size = v; this.Font_css_bry_update(); } - public Bry_fmtr Font_css_fmtr() {return font_css_fmtr;} private final Bry_fmtr font_css_fmtr = Bry_fmtr.new_("body {font-family: ~{font_name}; font-size: ~{font_size}px;}", "font_name", "font_size"); - public Bry_fmtr Content_code_fmtr() {return content_code_fmtr;} private final Bry_fmtr content_code_fmtr = Bry_fmtr.new_("
~{page_text}
", "page_text"); + public Bry_fmtr Font_css_fmtr() {return font_css_fmtr;} private final Bry_fmtr font_css_fmtr = Bry_fmtr.new_("body {font-family: ~{font_name}; font-size: ~{font_size}px;}", "font_name", "font_size"); + public Bry_fmtr Content_code_fmtr() {return content_code_fmtr;} private final Bry_fmtr content_code_fmtr = Bry_fmtr.new_("
~{page_text}
", "page_text"); private void Font_css_fmtr_(byte[] bry) { font_css_fmtr.Fmt_(bry); Font_css_bry_update(); } public byte[] Font_css_bry() {return font_css_bry;} public void Font_css_bry_update() { - font_css_bry = font_css_fmtr.Bld_bry_many(Bry_bfr.new_(), font_name, font_size); + font_css_bry = font_css_fmtr.Bld_bry_many(Bry_bfr_.New(), font_name, font_size); } private byte[] font_css_bry = Bry_.Empty; public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_font_name)) return font_name; @@ -49,7 +49,7 @@ public class Xoh_page_mgr implements GfoInvkAble { else if (ctx.Match(k, Invk_font_enabled_)) font_enabled = m.ReadYn("v"); else if (ctx.Match(k, Invk_content_code_fmt)) return String_.new_u8(content_code_fmtr.Fmt()); else if (ctx.Match(k, Invk_content_code_fmt_)) content_code_fmtr.Fmt_(m.ReadBry("v")); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String Invk_font_name = "font_name", Invk_font_name_ = "font_name_", Invk_font_size = "font_size", Invk_font_size_ = "font_size_" diff --git a/400_xowa/src/gplx/xowa/htmls/Xoh_page_wtr_mgr.java b/400_xowa/src/gplx/xowa/htmls/Xoh_page_wtr_mgr.java index ee055a03f..94ffe7c3e 100644 --- a/400_xowa/src/gplx/xowa/htmls/Xoh_page_wtr_mgr.java +++ b/400_xowa/src/gplx/xowa/htmls/Xoh_page_wtr_mgr.java @@ -18,8 +18,8 @@ along with this program. If not, see . package gplx.xowa.htmls; import gplx.*; import gplx.xowa.*; import gplx.core.brys.fmtrs.*; import gplx.xowa.wikis.pages.*; -public class Xoh_page_wtr_mgr implements GfoInvkAble { - private final Bry_bfr tmp_bfr = Bry_bfr.reset_(255); +public class Xoh_page_wtr_mgr implements Gfo_invk { + private final Bry_bfr tmp_bfr = Bry_bfr_.Reset(255); private Xoh_page_wtr_wkr edit_wtr, html_wtr, read_wtr; public Xoh_page_wtr_mgr(boolean html_capable) { this.html_capable = html_capable; @@ -66,7 +66,7 @@ public class Xoh_page_wtr_mgr implements GfoInvkAble { else if (ctx.Match(k, Invk_page_edit_)) page_edit_fmtr.Fmt_(m.ReadBry("v")); else if (ctx.Match(k, Invk_page_html_)) page_html_fmtr.Fmt_(m.ReadBry("v")); else if (ctx.Match(k, Invk_xowa_div_edit_rename_)) div_edit_rename_fmtr.Fmt_(m.ReadBry("v")); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private Bry_fmtr div_edit_rename_fmtr = Bry_fmtr.new_(String_.Concat_lines_nl diff --git a/400_xowa/src/gplx/xowa/htmls/Xoh_page_wtr_mgr_tst.java b/400_xowa/src/gplx/xowa/htmls/Xoh_page_wtr_mgr_tst.java index a374fa6af..e89916fc8 100644 --- a/400_xowa/src/gplx/xowa/htmls/Xoh_page_wtr_mgr_tst.java +++ b/400_xowa/src/gplx/xowa/htmls/Xoh_page_wtr_mgr_tst.java @@ -24,7 +24,7 @@ public class Xoh_page_wtr_mgr_tst { Xoae_app app = Xoa_app_fxt.Make__app__edit(); Xowe_wiki wiki = Xoa_app_fxt.Make__wiki__edit(app); Xow_portal_mgr portal_mgr = wiki.Html_mgr().Portal_mgr(); - GfoInvkAble_.InvkCmd_val(portal_mgr, Xow_portal_mgr.Invk_div_logo_, Bry_.new_a7("~{portal_nav_main_href}")); + Gfo_invk_.Invk_by_val(portal_mgr, Xow_portal_mgr.Invk_div_logo_, Bry_.new_a7("~{portal_nav_main_href}")); portal_mgr.Init_assert(); Xoh_page_wtr_mgr page_wtr_mgr = new Xoh_page_wtr_mgr(true); page_wtr_mgr.Gen(wiki.Parser_mgr().Ctx().Page(), Xopg_page_.Tid_read); diff --git a/400_xowa/src/gplx/xowa/htmls/Xoh_page_wtr_wkr.java b/400_xowa/src/gplx/xowa/htmls/Xoh_page_wtr_wkr.java index 82140d7b9..ea5f63ee8 100644 --- a/400_xowa/src/gplx/xowa/htmls/Xoh_page_wtr_wkr.java +++ b/400_xowa/src/gplx/xowa/htmls/Xoh_page_wtr_wkr.java @@ -22,15 +22,15 @@ import gplx.xowa.wikis.pages.*; import gplx.xowa.wikis.pages.skins.*; import gplx.xowa.wikis.nss.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.domains.*; import gplx.xowa.parsers.*; import gplx.xowa.xtns.wdatas.*; import gplx.xowa.apps.gfs.*; import gplx.xowa.htmls.portal.*; public class Xoh_page_wtr_wkr { - private final Bry_bfr tmp_bfr = Bry_bfr.reset_(255); private final Object thread_lock_1 = new Object(), thread_lock_2 = new Object(); + private final Bry_bfr tmp_bfr = Bry_bfr_.Reset(255); private final Object thread_lock_1 = new Object(), thread_lock_2 = new Object(); private final Xoh_page_wtr_mgr mgr; private final byte page_mode; private final Wdata_xwiki_link_wtr wdata_lang_wtr = new Wdata_xwiki_link_wtr(); // In other languages - private Xoae_app app; private Xowe_wiki wiki; private Xop_ctx ctx; private Xoae_page page; private byte[] root_dir_bry; + private Xoae_app app; private Xowe_wiki wiki; private Xoae_page page; private byte[] root_dir_bry; public Xoh_page_wtr_wkr(Xoh_page_wtr_mgr mgr, byte page_mode) {this.mgr = mgr; this.page_mode = page_mode;} public Xoh_page_wtr_wkr Ctgs_enabled_(boolean v) {ctgs_enabled = v; return this;} private boolean ctgs_enabled = true; public byte[] Write_page(Xoae_page page, Xop_ctx ctx, Bry_bfr bfr) { synchronized (thread_lock_1) { - this.page = page; this.ctx = ctx; this.wiki = page.Wikie(); this.app = wiki.Appe(); + this.page = page; this.wiki = page.Wikie(); this.app = wiki.Appe(); ctx.Page_(page); // HACK: must update page for toc_mgr; WHEN: Xoae_page rewrite Bry_fmtr fmtr = null; if (mgr.Html_capable()) { @@ -45,27 +45,27 @@ public class Xoh_page_wtr_wkr { } Bry_bfr page_bfr = Xoa_app_.Utl__bfr_mkr().Get_m001(); // NOTE: get separate page bfr to output page; do not reuse tmp_bfr b/c it will be used inside Fmt_do Xoh_wtr_ctx hctx = null; - if (page_mode == Xopg_page_.Tid_html && wiki.App().Api_root().Html().Page().View_html_generates_hdump()) { + if (page_mode == Xopg_page_.Tid_html && wiki.App().Api_root().Wiki().Hdump().Html_mode().Tid_is_hdump_save()) { hctx = Xoh_wtr_ctx.Hdump; - Write_body(page_bfr, hctx, page); - Write_page_by_tid(hctx, page_mode, bfr, mgr.Page_html_fmtr(), Gfh_utl.Escape_html_as_bry(page_bfr.To_bry_and_clear())); + Write_body(page_bfr, ctx, hctx, page); + Write_page_by_tid(ctx, hctx, page_mode, bfr, mgr.Page_html_fmtr(), Gfh_utl.Escape_html_as_bry(page_bfr.To_bry_and_clear())); } else { hctx = Xoh_wtr_ctx.Basic; - Write_body(page_bfr, hctx, page); - Write_page_by_tid(hctx, view_mode, bfr, fmtr, page_bfr.To_bry_and_rls()); + Write_body(page_bfr, ctx, hctx, page); + Write_page_by_tid(ctx, hctx, view_mode, bfr, fmtr, page_bfr.To_bry_and_rls()); if (page_mode == Xopg_page_.Tid_html) // if html, write page again, but wrap it in html skin this time - Write_page_by_tid(hctx, page_mode, bfr, mgr.Page_html_fmtr(), Gfh_utl.Escape_html_as_bry(bfr.To_bry_and_clear())); + Write_page_by_tid(ctx, hctx, page_mode, bfr, mgr.Page_html_fmtr(), Gfh_utl.Escape_html_as_bry(bfr.To_bry_and_clear())); wdata_lang_wtr.Page_(null); } } else - Write_body(bfr, Xoh_wtr_ctx.Basic, page); + Write_body(bfr, ctx, Xoh_wtr_ctx.Basic, page); this.page = null; return bfr.To_bry_and_clear(); } } - private void Write_page_by_tid(Xoh_wtr_ctx hctx, byte html_gen_tid, Bry_bfr bfr, Bry_fmtr fmtr, byte[] page_data) { + private void Write_page_by_tid(Xop_ctx ctx, Xoh_wtr_ctx hctx, byte html_gen_tid, Bry_bfr bfr, Bry_fmtr fmtr, byte[] page_data) { // if custom_html, use it and exit; needed for Default_tab byte[] custom_html = page.Html_data().Custom_html(); if (custom_html != null) {bfr.Add(custom_html); return;} @@ -105,7 +105,7 @@ public class Xoh_page_wtr_wkr { Xoh_page_wtr_wkr_.Bld_head_end(bfr, tmp_bfr, page); // add after Xoh_page_wtr_wkr_.Bld_html_end(bfr, tmp_bfr, page); // add after } - public void Write_body(Bry_bfr bfr, Xoh_wtr_ctx hctx, Xoae_page page) { + public void Write_body(Bry_bfr bfr, Xop_ctx ctx, Xoh_wtr_ctx hctx, Xoae_page page) { synchronized (thread_lock_2) { this.page = page; this.wiki = page.Wikie(); this.app = wiki.Appe(); Xoa_ttl page_ttl = page.Ttl(); int page_ns_id = page_ttl.Ns().Id(); @@ -121,7 +121,7 @@ public class Xoh_page_wtr_wkr { case Xow_page_tid.Tid_css: case Xow_page_tid.Tid_lua: Write_body_pre (bfr, app, wiki, data_raw, tmp_bfr); page_tid_uses_pre = true; break; case Xow_page_tid.Tid_json: app.Wiki_mgr().Wdata_mgr().Write_json_as_html(bfr, page_ttl.Full_db(), data_raw); break; - case Xow_page_tid.Tid_wikitext: Write_body_wikitext (bfr, app, wiki, data_raw, hctx, page, page_tid, page_ns_id); break; + case Xow_page_tid.Tid_wikitext: Write_body_wikitext (bfr, app, wiki, data_raw, ctx, hctx, page, page_tid, page_ns_id); break; } } if ( wiki.Domain_tid() != Xow_domain_tid_.Int__home // allow home wiki to use javascript @@ -130,7 +130,7 @@ public class Xoh_page_wtr_wkr { } } } - private void Write_body_wikitext(Bry_bfr bfr, Xoae_app app, Xowe_wiki wiki, byte[] data_raw, Xoh_wtr_ctx hctx, Xoae_page page, byte page_tid, int ns_id) { + private void Write_body_wikitext(Bry_bfr bfr, Xoae_app app, Xowe_wiki wiki, byte[] data_raw, Xop_ctx ctx, Xoh_wtr_ctx hctx, Xoae_page page, byte page_tid, int ns_id) { // dump and exit if pre-generated html from html dumps byte[] hdump_data = page.Hdump_data().Body(); if (Bry_.Len_gt_0(hdump_data)) { diff --git a/400_xowa/src/gplx/xowa/htmls/Xoh_page_wtr_wkr_.java b/400_xowa/src/gplx/xowa/htmls/Xoh_page_wtr_wkr_.java index d05e66413..c079e8a24 100644 --- a/400_xowa/src/gplx/xowa/htmls/Xoh_page_wtr_wkr_.java +++ b/400_xowa/src/gplx/xowa/htmls/Xoh_page_wtr_wkr_.java @@ -17,8 +17,8 @@ along with this program. If not, see . */ package gplx.xowa.htmls; import gplx.*; import gplx.xowa.*; import gplx.langs.htmls.*; import gplx.xowa.xtns.relatedSites.*; -import gplx.xowa.wikis.nss.*; -import gplx.xowa.parsers.utils.*; +import gplx.xowa.wikis.nss.*; import gplx.xowa.wikis.pages.*; import gplx.xowa.wikis.pages.tags.*; +import gplx.xowa.parsers.utils.*; public class Xoh_page_wtr_wkr_ { public static byte[] Bld_page_content_sub(Xoae_app app, Xowe_wiki wiki, Xoae_page page, Bry_bfr tmp_bfr) { byte[] subpages = app.Html_mgr().Page_mgr().Subpages_bldr().Bld(wiki.Ns_mgr(), page.Ttl()); @@ -27,8 +27,8 @@ public class Xoh_page_wtr_wkr_ { return Bry_.Add(subpages, page_content_sub, redirect_msg); } public static byte[] Bld_page_name(Bry_bfr tmp_bfr, Xoa_ttl ttl, byte[] display_ttl) { - if (display_ttl != null) return display_ttl; // display_ttl explicitly set; use it - if (ttl.Ns().Id() == Xow_ns_.Tid__special) { // special: omit query args, else excessively long titles: EX:"Special:Search/earth?fulltext=y&xowa page index=1" + if (Bry_.Len_gt_0(display_ttl)) return display_ttl; // display_ttl explicitly set; use it + if (ttl.Ns().Id() == Xow_ns_.Tid__special) { // special: omit query args, else excessively long titles: EX:"Special:Search/earth?fulltext=y&xowa page index=1" tmp_bfr.Add(ttl.Ns().Name_ui_w_colon()).Add(ttl.Page_txt_wo_qargs()); return tmp_bfr.To_bry_and_clear(); } @@ -36,7 +36,7 @@ public class Xoh_page_wtr_wkr_ { return ttl.Full_txt_w_ttl_case(); // NOTE: include ns with ttl as per defect d88a87b3 } public static void Bld_head_end(Bry_bfr html_bfr, Bry_bfr tmp_bfr, Xoae_page page) { - byte[] head_end = page.Html_data().Custom_head_tags().To_html(tmp_bfr); + byte[] head_end = Xopg_tag_wtr.Write(tmp_bfr, Bool_.Y, Xopg_tag_wtr_cbk_.Basic, page.Html_data().Custom_head_tags()); if (Bry_.Len_eq_0(head_end)) return; int insert_pos = Bry_find_.Find_fwd(html_bfr.Bfr(), Gfh_tag_.Head_rhs); if (insert_pos == Bry_find_.Not_found) { @@ -46,7 +46,7 @@ public class Xoh_page_wtr_wkr_ { html_bfr.Insert_at(insert_pos, head_end); } public static void Bld_html_end(Bry_bfr html_bfr, Bry_bfr tmp_bfr, Xoae_page page) { - byte[] html_end = page.Html_data().Custom_tail_tags().To_html(tmp_bfr); + byte[] html_end = Xopg_tag_wtr.Write(tmp_bfr, Bool_.Y, Xopg_tag_wtr_cbk_.Basic, page.Html_data().Custom_tail_tags()); if (html_end == null) return; int insert_pos = Bry_find_.Find_bwd(html_bfr.Bfr(), Gfh_tag_.Html_rhs, html_bfr.Len()); if (insert_pos == Bry_find_.Not_found) { diff --git a/400_xowa/src/gplx/xowa/htmls/Xoh_page_wtr_wkr_tst.java b/400_xowa/src/gplx/xowa/htmls/Xoh_page_wtr_wkr_tst.java index dc6f35f65..520da287f 100644 --- a/400_xowa/src/gplx/xowa/htmls/Xoh_page_wtr_wkr_tst.java +++ b/400_xowa/src/gplx/xowa/htmls/Xoh_page_wtr_wkr_tst.java @@ -46,7 +46,7 @@ class Xoh_page_wtr_fxt { app = Xoa_app_fxt.Make__app__edit(); wiki = Xoa_app_fxt.Make__wiki__edit(app); } - } private Bry_bfr tmp_bfr = Bry_bfr.reset_(255); private Xowe_wiki wiki; + } private Bry_bfr tmp_bfr = Bry_bfr_.Reset(255); private Xowe_wiki wiki; public Xoae_app App() {return app;} private Xoae_app app; public void Test_page_name_by_display(String ttl, String display, String expd) { Tfds.Eq(expd, String_.new_a7(Xoh_page_wtr_wkr_.Bld_page_name(tmp_bfr, Xoa_ttl.parse(wiki, Bry_.new_a7(ttl)), Bry_.new_a7(display)))); @@ -60,7 +60,7 @@ class Xoh_page_wtr_fxt { page.Data_raw_(Bry_.new_u8(raw)); Xoh_page_wtr_mgr mgr = wiki.Html_mgr().Page_wtr_mgr(); Xoh_page_wtr_wkr wkr = mgr.Wkr(Xopg_page_.Tid_edit); - wkr.Write_body(tmp_bfr, Xoh_wtr_ctx.Basic, page); + wkr.Write_body(tmp_bfr, wiki.Parser_mgr().Ctx(), Xoh_wtr_ctx.Basic, page); Tfds.Eq(expd, tmp_bfr.To_str_and_clear()); } public void Test_read(String page_name, String page_text, String expd) { @@ -70,7 +70,7 @@ class Xoh_page_wtr_fxt { page.Data_raw_(Bry_.new_u8(page_text)); Xoh_page_wtr_mgr mgr = wiki.Html_mgr().Page_wtr_mgr(); Xoh_page_wtr_wkr wkr = mgr.Wkr(Xopg_page_.Tid_read); - wkr.Write_body(tmp_bfr, Xoh_wtr_ctx.Basic, page); + wkr.Write_body(tmp_bfr, wiki.Parser_mgr().Ctx(), Xoh_wtr_ctx.Basic, page); Tfds.Eq(expd, tmp_bfr.To_str_and_clear()); } } diff --git a/400_xowa/src/gplx/xowa/htmls/Xohp_ctg_grp_mgr_tst.java b/400_xowa/src/gplx/xowa/htmls/Xohp_ctg_grp_mgr_tst.java index 9a7b77509..13658a224 100644 --- a/400_xowa/src/gplx/xowa/htmls/Xohp_ctg_grp_mgr_tst.java +++ b/400_xowa/src/gplx/xowa/htmls/Xohp_ctg_grp_mgr_tst.java @@ -44,7 +44,7 @@ class Xoh_ctg_mgr_fxt { wiki = Xoa_app_fxt.Make__wiki__edit(app); ctg_grp_mgr = new Xohp_ctg_grp_mgr(); return this; - } private Xohp_ctg_grp_mgr ctg_grp_mgr; Xoae_app app; Xowe_wiki wiki; Bry_bfr tmp_bfr = Bry_bfr.new_(); + } private Xohp_ctg_grp_mgr ctg_grp_mgr; Xoae_app app; Xowe_wiki wiki; Bry_bfr tmp_bfr = Bry_bfr_.New(); public Xoh_ctg_mgr_fxt Init_ctgs(String... v) {init_ctgs = v; return this;} private String[] init_ctgs; public void Test_html(String expd) { byte[][] ctgs_bry_ary = Bry_.Ary(init_ctgs); diff --git a/400_xowa/src/gplx/xowa/htmls/Xow_html_mgr.java b/400_xowa/src/gplx/xowa/htmls/Xow_html_mgr.java index 57bf92383..3422ef4e6 100644 --- a/400_xowa/src/gplx/xowa/htmls/Xow_html_mgr.java +++ b/400_xowa/src/gplx/xowa/htmls/Xow_html_mgr.java @@ -16,15 +16,16 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.htmls; import gplx.*; import gplx.xowa.*; +import gplx.gfui.kits.core.*; import gplx.xowa.langs.*; import gplx.xowa.wikis.ctgs.*; import gplx.xowa.xtns.gallery.*; import gplx.xowa.htmls.portal.*; import gplx.xowa.htmls.tocs.*; import gplx.xowa.wikis.modules.*; import gplx.xowa.htmls.core.htmls.*; import gplx.xowa.htmls.core.hzips.*; -public class Xow_html_mgr implements GfoInvkAble { +public class Xow_html_mgr implements Gfo_invk { public Xow_html_mgr(Xowe_wiki wiki) { this.wiki = wiki; html_wtr = new Xoh_html_wtr(wiki, this); Xoae_app app = wiki.Appe(); - page_wtr_mgr = new Xoh_page_wtr_mgr(app.Gui_mgr().Kit().Tid() != gplx.gfui.Gfui_kit_.Swing_tid); // reverse logic to handle swt,drd but not mem + page_wtr_mgr = new Xoh_page_wtr_mgr(app.Gui_mgr().Kit().Tid() != Gfui_kit_.Swing_tid); // reverse logic to handle swt,drd but not mem Io_url file_dir = app.Fsys_mgr().Bin_xowa_file_dir().GenSubDir_nest("mediawiki.file"); img_media_play_btn = gplx.langs.htmls.encoders.Gfo_url_encoder_.Fsys_lnx.Encode_to_file_protocol(file_dir.GenSubFil("play.png")); img_media_info_btn = gplx.langs.htmls.encoders.Gfo_url_encoder_.Fsys_lnx.Encode_to_file_protocol(file_dir.GenSubFil("info.png")); @@ -64,7 +65,7 @@ public class Xow_html_mgr implements GfoInvkAble { else if (ctx.Match(k, Invk_imgs)) return imgs_mgr; else if (ctx.Match(k, Invk_ns_ctg)) return ns_ctg; else if (ctx.Match(k, Invk_modules)) return module_mgr; - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; } public static final String Invk_article = "article" diff --git a/400_xowa/src/gplx/xowa/htmls/bridges/dbuis/fmtrs/Dbui_tbl_fmtr.java b/400_xowa/src/gplx/xowa/htmls/bridges/dbuis/fmtrs/Dbui_tbl_fmtr.java index f0f370751..1f5529bec 100644 --- a/400_xowa/src/gplx/xowa/htmls/bridges/dbuis/fmtrs/Dbui_tbl_fmtr.java +++ b/400_xowa/src/gplx/xowa/htmls/bridges/dbuis/fmtrs/Dbui_tbl_fmtr.java @@ -19,12 +19,12 @@ package gplx.xowa.htmls.bridges.dbuis.fmtrs; import gplx.*; import gplx.xowa.*; import gplx.core.brys.fmtrs.*; import gplx.xowa.htmls.bridges.dbuis.tbls.*; public class Dbui_tbl_fmtr { - private final Dbui_head_cell_fmtr head_cell_fmtr = new Dbui_head_cell_fmtr(); - private final Dbui_row_fmtr row_fmtr = new Dbui_row_fmtr(); + private final Dbui_head_cell_fmtr head_cell_fmtr = new Dbui_head_cell_fmtr(); + private final Dbui_row_fmtr row_fmtr = new Dbui_row_fmtr(); public void Write(Bry_bfr bfr, Dbui_tbl_itm tbl, byte[] origin_html, byte[] delete_confirm_msg, Dbui_row_itm[] rows) { tbl_fmtr.Bld_bfr_many(bfr, tbl.Key(), Dbui_tbl_itm_.Calc_width(tbl), origin_html, delete_confirm_msg, head_cell_fmtr.Init(tbl), row_fmtr.Init(tbl, rows)); } - private static final Bry_fmtr tbl_fmtr = Bry_fmtr.new_(String_.Concat_lines_nl_skip_last + private static final Bry_fmtr tbl_fmtr = Bry_fmtr.new_(String_.Concat_lines_nl_skip_last ( "" , "
" , "
" @@ -44,15 +44,15 @@ class Dbui_head_cell_fmtr implements gplx.core.brys.Bfr_arg { } bfr.Add_str_a7("\n
 
"); // btns headers } - private static final Bry_fmtr fmtr = Bry_fmtr.new_(String_.Concat_lines_nl_skip_last + private static final Bry_fmtr fmtr = Bry_fmtr.new_(String_.Concat_lines_nl_skip_last ( "" , "
~{display}
" ), "width", "display"); } class Dbui_row_fmtr implements gplx.core.brys.Bfr_arg { - private final Dbui_cells_fmtr cells_fmtr = new Dbui_cells_fmtr(); - private final Dbui_val_fmtr val_fmtr = Dbui_val_fmtr_.new_view(); - private final Bry_bfr row_key_bfr = Bry_bfr.new_(255); + private final Dbui_cells_fmtr cells_fmtr = new Dbui_cells_fmtr(); + private final Dbui_val_fmtr val_fmtr = Dbui_val_fmtr_.new_view(); + private final Bry_bfr row_key_bfr = Bry_bfr_.New_w_size(255); private Dbui_tbl_itm tbl; private Dbui_row_itm[] rows; public Dbui_row_fmtr Init(Dbui_tbl_itm tbl, Dbui_row_itm[] rows) {this.tbl = tbl; this.rows = rows; return this;} public void Bfr_arg__add(Bry_bfr bfr) { @@ -66,7 +66,7 @@ class Dbui_row_fmtr implements gplx.core.brys.Bfr_arg { fmtr.Bld_bfr_many(bfr, row_key, row.Pkey(), cells_fmtr.Init(row_key, row)); } } - private static final Bry_fmtr fmtr = Bry_fmtr.new_(String_.Concat_lines_nl_skip_last + private static final Bry_fmtr fmtr = Bry_fmtr.new_(String_.Concat_lines_nl_skip_last ( "" , "
~{cells}" , "
" diff --git a/400_xowa/src/gplx/xowa/htmls/bridges/dbuis/fmtrs/Dbui_tbl_fmtr_tst.java b/400_xowa/src/gplx/xowa/htmls/bridges/dbuis/fmtrs/Dbui_tbl_fmtr_tst.java index d497e0215..28cfa3b52 100644 --- a/400_xowa/src/gplx/xowa/htmls/bridges/dbuis/fmtrs/Dbui_tbl_fmtr_tst.java +++ b/400_xowa/src/gplx/xowa/htmls/bridges/dbuis/fmtrs/Dbui_tbl_fmtr_tst.java @@ -19,7 +19,7 @@ package gplx.xowa.htmls.bridges.dbuis.fmtrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.bridges.dbuis.tbls.*; import org.junit.*; public class Dbui_tbl_fmtr_tst { - @Before public void init() {fxt.Clear();} private final Dbui_tbl_fmtr_fxt fxt = new Dbui_tbl_fmtr_fxt(); + @Before public void init() {fxt.Clear();} private final Dbui_tbl_fmtr_fxt fxt = new Dbui_tbl_fmtr_fxt(); @Test public void Basic() { // fxt.Test_write // ( fxt.Make_tbl() @@ -28,8 +28,8 @@ public class Dbui_tbl_fmtr_tst { } } class Dbui_tbl_fmtr_fxt { - private final Bry_bfr bfr = Bry_bfr.new_(255); - private final Dbui_tbl_fmtr tbl_fmtr = new Dbui_tbl_fmtr(); + private final Bry_bfr bfr = Bry_bfr_.New_w_size(255); + private final Dbui_tbl_fmtr tbl_fmtr = new Dbui_tbl_fmtr(); public void Clear() {} public Dbui_tbl_itm Make_tbl() { return null; diff --git a/400_xowa/src/gplx/xowa/htmls/core/Xow_hdump_mgr.java b/400_xowa/src/gplx/xowa/htmls/core/Xow_hdump_mgr.java index bb38eb175..af6d0dbf4 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/Xow_hdump_mgr.java +++ b/400_xowa/src/gplx/xowa/htmls/core/Xow_hdump_mgr.java @@ -20,17 +20,17 @@ import gplx.core.ios.*; import gplx.xowa.htmls.core.hzips.*; import gplx.xowa.wikis.data.*; public class Xow_hdump_mgr { - private final Xoh_page tmp_hpg = new Xoh_page(); private final Bry_bfr tmp_bfr = Bry_bfr.reset_(255); - private final Io_stream_zip_mgr zip_mgr = new Io_stream_zip_mgr(); + private final Xoh_page tmp_hpg = new Xoh_page(); private final Bry_bfr tmp_bfr = Bry_bfr_.Reset(255); + private final Io_stream_zip_mgr zip_mgr = new Io_stream_zip_mgr(); public Xow_hdump_mgr(Xow_wiki wiki) { this.save_mgr = new Xow_hdump_mgr__save(wiki, hzip_mgr, zip_mgr, tmp_hpg); this.load_mgr = new Xow_hdump_mgr__load(wiki, hzip_mgr, zip_mgr, tmp_hpg, tmp_bfr); } public Xow_hdump_mgr__save Save_mgr() {return save_mgr;} private Xow_hdump_mgr__save save_mgr; public Xow_hdump_mgr__load Load_mgr() {return load_mgr;} private Xow_hdump_mgr__load load_mgr; - public Xoh_hzip_mgr Hzip_mgr() {return hzip_mgr;} private final Xoh_hzip_mgr hzip_mgr = new Xoh_hzip_mgr(); + public Xoh_hzip_mgr Hzip_mgr() {return hzip_mgr;} private final Xoh_hzip_mgr hzip_mgr = new Xoh_hzip_mgr(); public void Init_by_db(Xow_wiki wiki) { - byte dflt_zip_tid = gplx.core.ios.Io_stream_.Tid_raw; + byte dflt_zip_tid = gplx.core.ios.streams.Io_stream_.Tid_raw; boolean dflt_hzip_enable = false; boolean mode_is_b256 = false; if (wiki.Data__core_mgr() != null) { // TEST: handle null data mgr diff --git a/400_xowa/src/gplx/xowa/htmls/core/Xow_hdump_mgr__load.java b/400_xowa/src/gplx/xowa/htmls/core/Xow_hdump_mgr__load.java index ba53d5966..304322761 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/Xow_hdump_mgr__load.java +++ b/400_xowa/src/gplx/xowa/htmls/core/Xow_hdump_mgr__load.java @@ -29,10 +29,11 @@ public class Xow_hdump_mgr__load { this.make_mgr = new Xoh_make_mgr(wiki.App().Usr_dlg(), wiki.App().Fsys_mgr(), gplx.langs.htmls.encoders.Gfo_url_encoder_.Fsys_lnx, wiki.Domain_bry()); } public Xoh_make_mgr Make_mgr() {return make_mgr;} private final Xoh_make_mgr make_mgr; - public void Load(Xoae_page wpg) { + public void Load_by_edit(Xoae_page wpg) { + tmp_hpg.Init(wpg.Wiki(), wpg.Url(), wpg.Ttl(), wpg.Revision_data().Id()); Load(tmp_hpg, wpg.Ttl()); wpg.Hdump_data().Body_(tmp_hpg.Body()); - // wpg.Root_(new Xop_root_tkn()); + wpg.Root_(new gplx.xowa.parsers.Xop_root_tkn()); // HACK: set root, else load page will fail Fill_page(wpg, tmp_hpg); } public boolean Load(Xoh_page hpg, Xoa_ttl ttl) { @@ -50,7 +51,7 @@ public class Xow_hdump_mgr__load { hpg.Body_(page_override); return true; } - Xowd_db_file html_db = wiki.Data__core_mgr().Dbs__get_by_id(tmp_dbpg.Html_db_id()); + Xow_db_file html_db = wiki.Data__core_mgr().Dbs__get_by_id_or_fail(tmp_dbpg.Html_db_id()); if (!html_db.Tbl__html().Select_by_page(hpg)) return Load__fail(hpg); // nothing in "html" table byte[] src = Parse(hpg, hpg.Body_zip_tid(), hpg.Body_hzip_tid(), hpg.Body()); hpg.Body_(src); @@ -59,7 +60,7 @@ public class Xow_hdump_mgr__load { } public byte[] Decode_as_bry(Bry_bfr bfr, Xoh_page hpg, byte[] src, boolean mode_is_diff) {hzip_mgr.Hctx().Mode_is_diff_(mode_is_diff); hzip_mgr.Decode(bfr, wiki, hpg, src); return bfr.To_bry_and_clear();} private byte[] Parse(Xoh_page hpg, int zip_tid, int hzip_tid, byte[] src) { - if (zip_tid > gplx.core.ios.Io_stream_.Tid_raw) + if (zip_tid > gplx.core.ios.streams.Io_stream_.Tid_raw) src = zip_mgr.Unzip((byte)zip_tid, src); if (hzip_tid == Xoh_hzip_dict_.Hzip__v1) { src = override_mgr__html.Get_or_same(hpg.Ttl().Page_db(), src); @@ -82,6 +83,15 @@ public class Xow_hdump_mgr__load { wpg_head.Itm__popups().Bind_hover_area_ (hpg_head.Imap_exists()); wpg_head.Itm__gallery().Enabled_ (hpg_head.Gallery_packed_exists()); wpg_head.Itm__hiero().Enabled_ (hpg_head.Hiero_exists()); + + // transfer images from Xoh_page to Xoae_page + Xoh_img_mgr src_imgs = hpg.Img_mgr(); + int len = src_imgs.Len(); + for (int i = 0; i < len; ++i) { + gplx.xowa.files.Xof_fsdb_itm itm = src_imgs.Get_at(i); + wpg.Hdump_data().Imgs().Add(itm); + wpg.File_queue().Add(itm); // add to file_queue for http_server + } } private static boolean Load__fail(Xoh_page hpg) {hpg.Exists_n_(); return false;} private static boolean Load__dbpg(Xow_wiki wiki, Xowd_page_itm dbpg, Xoh_page hpg, Xoa_ttl ttl) { diff --git a/400_xowa/src/gplx/xowa/htmls/core/Xow_hdump_mgr__load_tst.java b/400_xowa/src/gplx/xowa/htmls/core/Xow_hdump_mgr__load_tst.java index c1dfb7bff..a98331d56 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/Xow_hdump_mgr__load_tst.java +++ b/400_xowa/src/gplx/xowa/htmls/core/Xow_hdump_mgr__load_tst.java @@ -107,7 +107,7 @@ public class Xow_hdump_mgr__load_tst { // } } class Xodb_hdump_mgr__base_fxt { - protected Bry_bfr bfr = Bry_bfr.reset_(255); + protected Bry_bfr bfr = Bry_bfr_.Reset(255); protected Xowe_wiki wiki; protected Xoae_page page; private Xow_hdump_mgr hdump_mgr; public Xop_fxt Fxt() {return fxt;} protected Xop_fxt fxt; @@ -117,7 +117,7 @@ class Xodb_hdump_mgr__base_fxt { wiki = fxt.Wiki(); page = wiki.Parser_mgr().Ctx().Page(); hdump_mgr = wiki.Html__hdump_mgr(); - hdump_mgr.Init_by_db(gplx.core.ios.Io_stream_.Tid_raw, false, false); + hdump_mgr.Init_by_db(gplx.core.ios.streams.Io_stream_.Tid_raw, false, false); } fxt.Reset(); page.Revision_data().Id_(0); @@ -135,7 +135,7 @@ class Xodb_hdump_mgr__base_fxt { } } class Xohd_hdump_wtr_fxt extends Xodb_hdump_mgr__base_fxt { - private List_adp expd_itms_xfers = List_adp_.new_(); + private List_adp expd_itms_xfers = List_adp_.New(); @Override public void Clear_end() {expd_itms_xfers.Clear();} public void Expd_itms_xfers(Xohd_img_itm__base... itms) {expd_itms_xfers.Add_many((Object[])itms);} public void Test_write_all (String raw, String expd_html) {Test_write(Bool_.N, raw, expd_html);} diff --git a/400_xowa/src/gplx/xowa/htmls/core/Xow_hdump_mgr__save.java b/400_xowa/src/gplx/xowa/htmls/core/Xow_hdump_mgr__save.java index dd3577c9c..c78673da3 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/Xow_hdump_mgr__save.java +++ b/400_xowa/src/gplx/xowa/htmls/core/Xow_hdump_mgr__save.java @@ -19,8 +19,8 @@ package gplx.xowa.htmls.core; import gplx.*; import gplx.xowa.*; import gplx.xow import gplx.xowa.htmls.core.htmls.*; import gplx.xowa.htmls.core.wkrs.*; import gplx.xowa.htmls.core.hzips.*; import gplx.xowa.htmls.heads.*; import gplx.core.ios.*; import gplx.core.primitives.*; import gplx.xowa.wikis.data.*; import gplx.xowa.wikis.pages.*; public class Xow_hdump_mgr__save { - private final Xow_wiki wiki; private final Xoh_hzip_mgr hzip_mgr; private final Io_stream_zip_mgr zip_mgr; - private final Xoh_page tmp_hpg; private final Xoh_hzip_bfr tmp_bfr = Xoh_hzip_bfr.New_txt(32); private Bool_obj_ref html_db_is_new = Bool_obj_ref.n_(); + private final Xow_wiki wiki; private final Xoh_hzip_mgr hzip_mgr; private final Io_stream_zip_mgr zip_mgr; + private final Xoh_page tmp_hpg; private final Xoh_hzip_bfr tmp_bfr = Xoh_hzip_bfr.New_txt(32); private Bool_obj_ref html_db_is_new = Bool_obj_ref.n_(); private int dflt_zip_tid, dflt_hzip_tid; public Xow_hdump_mgr__save(Xow_wiki wiki, Xoh_hzip_mgr hzip_mgr, Io_stream_zip_mgr zip_mgr, Xoh_page tmp_hpg) { this.wiki = wiki; this.hzip_mgr = hzip_mgr; this.zip_mgr = zip_mgr; this.tmp_hpg = tmp_hpg; @@ -33,11 +33,11 @@ public class Xow_hdump_mgr__save { synchronized (tmp_hpg) { Bld_hdump(page); tmp_hpg.Ctor_by_page(tmp_bfr, page); - Xowd_db_file html_db = Get_html_db(wiki, page, html_db_is_new.Val_n_()); + Xow_db_file html_db = Get_html_db(wiki, page, html_db_is_new.Val_n_()); return Save(tmp_hpg, html_db, html_db_is_new.Val()); } } - public int Save(Xoh_page hpg, Xowd_db_file html_db, boolean insert) { + public int Save(Xoh_page hpg, Xow_db_file html_db, boolean insert) { byte[] db_body = Write(tmp_bfr, wiki, hpg, hzip_mgr, zip_mgr, dflt_zip_tid, dflt_hzip_tid, hpg.Body()); if (insert) html_db.Tbl__html().Insert(hpg, dflt_zip_tid, dflt_hzip_tid, db_body); else html_db.Tbl__html().Update(hpg, dflt_zip_tid, dflt_hzip_tid, db_body); @@ -45,30 +45,30 @@ public class Xow_hdump_mgr__save { } public void Bld_hdump(Xoae_page page) { page.File_queue().Clear(); // need to reset uid to 0, else xowa_file_# will keep incrementing upwards - wiki.Html__wtr_mgr().Wkr(Xopg_page_.Tid_read).Write_body(tmp_bfr, Xoh_wtr_ctx.Hdump, page); // save as hdump_fmt + wiki.Html__wtr_mgr().Wkr(Xopg_page_.Tid_read).Write_body(tmp_bfr, page.Wikie().Parser_mgr().Ctx(), Xoh_wtr_ctx.Hdump, page); // save as hdump_fmt page.Hdump_data().Body_(tmp_bfr.To_bry_and_clear()); } private byte[] Write(Xoh_hzip_bfr bfr, Xow_wiki wiki, Xoh_page hpg, Xoh_hzip_mgr hzip_mgr, Io_stream_zip_mgr zip_mgr, int zip_tid, int hzip_tid, byte[] src) { if (hzip_tid != Xoh_hzip_dict_.Hzip__none) src = hzip_mgr.Encode_as_bry((Xoh_hzip_bfr)bfr.Clear(), wiki, hpg, src); src_as_hzip = src; - if (zip_tid > gplx.core.ios.Io_stream_.Tid_raw) + if (zip_tid > gplx.core.ios.streams.Io_stream_.Tid_raw) src = zip_mgr.Zip((byte)zip_tid, src); return src; } - private static Xowd_db_file Get_html_db(Xow_wiki wiki, Xoae_page page, Bool_obj_ref html_db_is_new) { - Xowd_db_file rv = Xowd_db_file.Null; - Xowd_db_mgr core_data_mgr = wiki.Data__core_mgr(); + private static Xow_db_file Get_html_db(Xow_wiki wiki, Xoae_page page, Bool_obj_ref html_db_is_new) { + Xow_db_file rv = Xow_db_file.Null; + Xow_db_mgr core_data_mgr = wiki.Data__core_mgr(); int html_db_id = page.Revision_data().Html_db_id(); if (html_db_id == -1) { html_db_is_new.Val_y_(); rv = core_data_mgr.Db__html(); - if (rv == null) rv = core_data_mgr.Dbs__make_by_tid(Xowd_db_file_.Tid_html_data); + if (rv == null) rv = core_data_mgr.Dbs__make_by_tid(Xow_db_file_.Tid__html_data); html_db_id = rv.Id(); page.Revision_data().Html_db_id_(html_db_id); core_data_mgr.Tbl__page().Update__html_db_id(page.Revision_data().Id(), html_db_id); } else { - rv = core_data_mgr.Dbs__get_by_id(html_db_id); + rv = core_data_mgr.Dbs__get_by_id_or_fail(html_db_id); } return rv; } diff --git a/400_xowa/src/gplx/xowa/htmls/core/bldrs/Xob_hdump_bldr.java b/400_xowa/src/gplx/xowa/htmls/core/bldrs/Xob_hdump_bldr.java index 6fedea827..b5501151e 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/bldrs/Xob_hdump_bldr.java +++ b/400_xowa/src/gplx/xowa/htmls/core/bldrs/Xob_hdump_bldr.java @@ -21,12 +21,12 @@ import gplx.dbs.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*; import gplx.xowa.htmls.core.*; import gplx.xowa.htmls.core.htmls.*; import gplx.xowa.htmls.core.dbs.*; import gplx.xowa.htmls.core.hzips.*; import gplx.xowa.wikis.nss.*; import gplx.xowa.wikis.pages.*; import gplx.xowa.wikis.dbs.*; import gplx.xowa.wikis.data.*; import gplx.xowa.apps.apis.xowa.bldrs.imports.*; -public class Xob_hdump_bldr implements GfoInvkAble { +public class Xob_hdump_bldr implements Gfo_invk { private boolean enabled, hzip_enabled, hzip_diff, hzip_b256; private byte zip_tid = Byte_.Max_value_127; private Xowe_wiki wiki; private Xow_hdump_mgr hdump_mgr; private Xob_ns_to_db_mgr ns_to_db_mgr; int prv_row_len = 0; private Xoh_stat_tbl stats_tbl; private Xoh_stat_itm tmp_stat_itm; - private final Xoh_page tmp_hpg = new Xoh_page(); private final Bry_bfr tmp_bfr = Bry_bfr.new_(); + private final Xoh_page tmp_hpg = new Xoh_page(); private final Bry_bfr tmp_bfr = Bry_bfr_.New(); private boolean op_sys_is_wnt; public boolean Init(Xowe_wiki wiki, Db_conn make_conn) { if (!enabled) return false; @@ -36,18 +36,18 @@ public class Xob_hdump_bldr implements GfoInvkAble { Xoapi_import import_cfg = wiki.Appe().Api_root().Bldr().Wiki().Import(); if (zip_tid == Byte_.Max_value_127) zip_tid = import_cfg.Zip_tid_html(); hdump_mgr.Init_by_db(zip_tid, hzip_enabled, hzip_b256); - Xowd_db_mgr core_data_mgr = wiki.Db_mgr_as_sql().Core_data_mgr(); + Xow_db_mgr core_data_mgr = wiki.Db_mgr_as_sql().Core_data_mgr(); this.ns_to_db_mgr = new Xob_ns_to_db_mgr(new Xob_ns_to_db_wkr__html(core_data_mgr.Db__core()), core_data_mgr, import_cfg.Html_db_max()); - Xob_ns_file_itm.Init_ns_bldr_data(Xowd_db_file_.Tid_html_data, wiki.Ns_mgr(), gplx.xowa.apps.apis.xowa.bldrs.imports.Xoapi_import.Ns_file_map__each); + Xob_ns_file_itm.Init_ns_bldr_data(Xow_db_file_.Tid__html_data, wiki.Ns_mgr(), gplx.xowa.apps.apis.xowa.bldrs.imports.Xoapi_import.Ns_file_map__each); return true; } public void Insert(Xoae_page page) { tmp_hpg.Clear(); // NOTE: must clear tmp_hpg or else will leak memory during mass build; DATE:2016-01-09 page.File_queue().Clear(); // need to reset uid to 0, else xowa_file_# will resume from last - wiki.Html_mgr().Page_wtr_mgr().Wkr(Xopg_page_.Tid_read).Write_body(tmp_bfr, Xoh_wtr_ctx.Hdump, page); // write to html in hdump mode + wiki.Html_mgr().Page_wtr_mgr().Wkr(Xopg_page_.Tid_read).Write_body(tmp_bfr, wiki.Parser_mgr().Ctx(), Xoh_wtr_ctx.Hdump, page); // write to html in hdump mode byte[] orig_bry = tmp_bfr.To_bry_and_clear(); page.Hdump_data().Body_(orig_bry); // write to body bry - Xowd_db_file html_db = ns_to_db_mgr.Get_by_ns(page.Ttl().Ns().Bldr_data(), prv_row_len); // get html_db + Xow_db_file html_db = ns_to_db_mgr.Get_by_ns(page.Ttl().Ns().Bldr_data(), prv_row_len); // get html_db this.prv_row_len = hdump_mgr.Save_mgr().Save(tmp_hpg.Ctor_by_page(tmp_bfr, page), html_db, true); // save to db if (hzip_diff) Hzip_exec(orig_bry); stats_tbl.Insert(tmp_hpg, tmp_stat_itm, page.Root().Root_src().length, tmp_hpg.Body().length, prv_row_len); // save stats @@ -70,7 +70,7 @@ public class Xob_hdump_bldr implements GfoInvkAble { else if (ctx.Match(k, Invk_hzip_enabled_)) hzip_enabled = m.ReadYn("v"); else if (ctx.Match(k, Invk_hzip_diff_)) hzip_diff = m.ReadYn("v"); else if (ctx.Match(k, Invk_hzip_b256_)) hzip_b256 = m.ReadYn("v"); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String Invk_enabled_ = "enabled_", Invk_zip_tid_ = "zip_tid_", Invk_hzip_enabled_ = "hzip_enabled_", Invk_hzip_diff_ = "hzip_diff_", Invk_hzip_b256_ = "hzip_b256_"; diff --git a/400_xowa/src/gplx/xowa/htmls/core/bldrs/Xob_hdump_img_cmd.java b/400_xowa/src/gplx/xowa/htmls/core/bldrs/Xob_hdump_img_cmd.java index 1609b47f4..1115ae002 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/bldrs/Xob_hdump_img_cmd.java +++ b/400_xowa/src/gplx/xowa/htmls/core/bldrs/Xob_hdump_img_cmd.java @@ -22,14 +22,14 @@ import gplx.xowa.files.*; import gplx.xowa.guis.*; class Xob_hdump_img_cmd extends Xob_itm_basic_base implements Xob_cmd { public Xob_hdump_img_cmd(Xob_bldr bldr, Xowe_wiki wiki) {this.Cmd_ctor(bldr, wiki);} - public String Cmd_key() {return Key_const;} public static final String Key_const = "hdump.make.imgs"; + public String Cmd_key() {return Key_const;} public static final String Key_const = "hdump.make.imgs"; public void Cmd_init(Xob_bldr bldr) {} public void Cmd_bgn(Xob_bldr bldr) {} public void Cmd_run() {Exec_main();} public void Cmd_end() {} public void Cmd_term() {} private void Exec_main() { - Bry_bfr bfr = Bry_bfr.reset_(Io_mgr.Len_mb); + Bry_bfr bfr = Bry_bfr_.Reset(Io_mgr.Len_mb); Db_conn conn = Xob_db_file.New__file_make(wiki.Fsys_mgr().Root_dir()).Conn(); Db_rdr rdr = conn.Stmt_sql(Sql_select_clause).Exec_select__rls_auto(); // html_tbl = new Xowd_html_tbl(conn, wiki.Db_mgr_as_sql().Core_data_mgr().Props().Zip_tid_text()); @@ -57,7 +57,7 @@ class Xob_hdump_img_cmd extends Xob_itm_basic_base implements Xob_cmd { if (page_id == -1 || data.length == 0) return; // html_tbl.Insert(page_id, Xohd_img_tid.Tid_img, data); } - private static final String Sql_select_clause = String_.Concat_lines_nl_skip_last + private static final String Sql_select_clause = String_.Concat_lines_nl_skip_last ( "SELECT lt.lnki_page_id" , ", lt.html_uid" , ", lt.lnki_ttl" @@ -83,7 +83,7 @@ interface Page_async_cmd { } // class Page_async_cmd__img : Page_async_cmd { // private Xoh_page hpg; -// private List_adp missing = List_adp_.new_(); +// private List_adp missing = List_adp_.New(); // public Page_async_cmd__img(Xoh_page hpg) {this.hpg = hpg;} // public void Prep() { //// int len = hpg.Img_count(); diff --git a/400_xowa/src/gplx/xowa/htmls/core/bldrs/Xob_link_dump_tbl.java b/400_xowa/src/gplx/xowa/htmls/core/bldrs/Xob_link_dump_tbl.java index 2bea9ad27..3b0ad5516 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/bldrs/Xob_link_dump_tbl.java +++ b/400_xowa/src/gplx/xowa/htmls/core/bldrs/Xob_link_dump_tbl.java @@ -18,8 +18,8 @@ along with this program. If not, see . package gplx.xowa.htmls.core.bldrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.core.*; import gplx.dbs.*; class Xob_link_dump_tbl implements Rls_able { - public static final String Tbl_name = "link_dump"; private static final Dbmeta_fld_list flds = Dbmeta_fld_list.new_(); - public static final String + public static final String Tbl_name = "link_dump"; private static final Dbmeta_fld_list flds = new Dbmeta_fld_list(); + public static final String Fld_uid = flds.Add_int_pkey_autonum("uid") , Fld_src_page_id = flds.Add_int("src_page_id") , Fld_src_html_uid = flds.Add_int("src_html_uid") @@ -32,7 +32,7 @@ class Xob_link_dump_tbl implements Rls_able { this.conn = conn; conn.Rls_reg(this); } - public Db_conn Conn() {return conn;} private final Db_conn conn; + public Db_conn Conn() {return conn;} private final Db_conn conn; public void Create_tbl() {conn.Meta_tbl_create(Dbmeta_tbl_itm.New(Tbl_name, flds));} public void Create_idx_1() { conn.Meta_idx_create diff --git a/400_xowa/src/gplx/xowa/htmls/core/bldrs/Xob_ns_to_db_wkr__html.java b/400_xowa/src/gplx/xowa/htmls/core/bldrs/Xob_ns_to_db_wkr__html.java index 23b7cd3a7..6f1d4067e 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/bldrs/Xob_ns_to_db_wkr__html.java +++ b/400_xowa/src/gplx/xowa/htmls/core/bldrs/Xob_ns_to_db_wkr__html.java @@ -19,15 +19,15 @@ package gplx.xowa.htmls.core.bldrs; import gplx.*; import gplx.xowa.*; import gp import gplx.dbs.*; import gplx.xowa.bldrs.*; import gplx.xowa.wikis.data.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.htmls.core.dbs.*; class Xob_ns_to_db_wkr__html implements Xob_ns_to_db_wkr { - private final Xowd_db_file page_db; - public Xob_ns_to_db_wkr__html(Xowd_db_file page_db) {this.page_db = page_db;} - public byte Db_tid() {return Xowd_db_file_.Tid_html_data;} - public void Tbl_init(Xowd_db_file db) { + private final Xow_db_file page_db; + public Xob_ns_to_db_wkr__html(Xow_db_file page_db) {this.page_db = page_db;} + public byte Db_tid() {return Xow_db_file_.Tid__html_data;} + public void Tbl_init(Xow_db_file db) { Xoh_page_tbl tbl = db.Tbl__html(); tbl.Create_tbl(); tbl.Insert_bgn(); } - public void Tbl_term(Xowd_db_file db) { + public void Tbl_term(Xow_db_file db) { db.Tbl__text().Insert_end(); Db_conn db_conn = db.Conn(); new Db_attach_mgr(page_db.Conn(), new Db_attach_itm("html_db", db.Url())) diff --git a/400_xowa/src/gplx/xowa/htmls/core/bldrs/Xob_redlink_mkr_cmd.java b/400_xowa/src/gplx/xowa/htmls/core/bldrs/Xob_redlink_mkr_cmd.java index 61de7bd06..c6f905ee5 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/bldrs/Xob_redlink_mkr_cmd.java +++ b/400_xowa/src/gplx/xowa/htmls/core/bldrs/Xob_redlink_mkr_cmd.java @@ -26,16 +26,16 @@ public class Xob_redlink_mkr_cmd extends Xob_itm_basic_base implements Xob_cmd { public String Cmd_key() {return Xob_cmd_keys.Key_html_redlinks;} public void Cmd_run() {Read_data();} private void Read_data() { - Bry_bfr bfr = Bry_bfr.reset_(255); + Bry_bfr bfr = Bry_bfr_.Reset(255); wiki.Init_assert(); - Xowd_db_file core_db = wiki.Data__core_mgr().Db__core(); + Xow_db_file core_db = wiki.Data__core_mgr().Db__core(); Xob_db_file link_dump_db = Xob_db_file.New__redlink(wiki.Fsys_mgr().Root_dir()); Db_attach_mgr attach_mgr = new Db_attach_mgr(link_dump_db.Conn(), new Db_attach_itm("page_db", wiki.Data__core_mgr().Db__core().Conn())); String attach_sql = attach_mgr.Resolve_sql(Sql_select_clause); attach_mgr.Attach(); Xowd_page_tbl page_tbl = core_db.Tbl__page(); int cur_html_db_id = -1, cur_page_id = -1; - Xoh_redlink_tbl redlink_tbl = new Xoh_redlink_tbl(page_tbl.conn); + Xoh_redlink_tbl redlink_tbl = new Xoh_redlink_tbl(page_tbl.Conn()); Db_rdr rdr = link_dump_db.Conn().Exec_rdr(attach_sql); try { while (rdr.Move_next()) { @@ -70,7 +70,7 @@ public class Xob_redlink_mkr_cmd extends Xob_itm_basic_base implements Xob_cmd { if ((commit_count % commit_interval ) == 0) redlink_tbl.Conn().Txn_sav(); } - private static final String Sql_select_clause = String_.Concat_lines_nl_skip_last + private static final String Sql_select_clause = String_.Concat_lines_nl_skip_last ( "SELECT p.page_html_db_id" , ", p.page_id" , ", ld.src_html_uid" @@ -86,7 +86,7 @@ public class Xob_redlink_mkr_cmd extends Xob_itm_basic_base implements Xob_cmd { public void Cmd_term() {} @Override public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_commit_interval_)) commit_interval = m.ReadInt("v"); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String Invk_commit_interval_ = "commit_interval_"; } diff --git a/400_xowa/src/gplx/xowa/htmls/core/dbs/Xoh_page_row.java b/400_xowa/src/gplx/xowa/htmls/core/dbs/Xoh_page_row.java new file mode 100644 index 000000000..633c195bb --- /dev/null +++ b/400_xowa/src/gplx/xowa/htmls/core/dbs/Xoh_page_row.java @@ -0,0 +1,38 @@ +/* +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.htmls.core.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.core.*; +public class Xoh_page_row { + public void Load(int page_id, int head_flag, int body_flag, byte[] display_ttl, byte[] content_sub, byte[] sidebar_div, byte[] body) { + this.page_id = page_id; + this.head_flag = head_flag; + this.body_flag = body_flag; + this.display_ttl = display_ttl; + this.content_sub = content_sub; + this.sidebar_div = sidebar_div; + this.body = body; + } + public int Page_id() {return page_id;} private int page_id; + public int Head_flag() {return head_flag;} private int head_flag; + public int Body_flag() {return body_flag;} private int body_flag; + public byte[] Display_ttl() {return display_ttl;} private byte[] display_ttl; + public byte[] Content_sub() {return content_sub;} private byte[] content_sub; + public byte[] Sidebar_div() {return sidebar_div;} private byte[] sidebar_div; + public byte[] Body() {return body;} private byte[] body; + + public static final int Db_row_size_fixed = (3 * 4); // page_id, head_flag, body_flag +} diff --git a/400_xowa/src/gplx/xowa/htmls/core/dbs/Xoh_page_tbl.java b/400_xowa/src/gplx/xowa/htmls/core/dbs/Xoh_page_tbl.java index d82b4c632..19598bab9 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/dbs/Xoh_page_tbl.java +++ b/400_xowa/src/gplx/xowa/htmls/core/dbs/Xoh_page_tbl.java @@ -18,10 +18,9 @@ along with this program. If not, see . package gplx.xowa.htmls.core.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.core.*; import gplx.dbs.*; import gplx.core.brys.*; public class Xoh_page_tbl implements Rls_able { - private final String tbl_name = "html"; private final Dbmeta_fld_list flds = Dbmeta_fld_list.new_(); - private final String fld_page_id, fld_head_flag, fld_body_flag, fld_display_ttl, fld_content_sub, fld_sidebar_div, fld_body; - private final Db_conn conn; private Db_stmt stmt_select, stmt_insert, stmt_delete, stmt_update; - private final Int_flag_bldr body_flag_bldr = new Int_flag_bldr().Pow_ary_bld_(3, 2); // 8 different zip types; 4 different hzip types + private final String fld_page_id, fld_head_flag, fld_body_flag, fld_display_ttl, fld_content_sub, fld_sidebar_div, fld_body; + private Db_stmt stmt_select, stmt_insert, stmt_delete, stmt_update; + private final Int_flag_bldr body_flag_bldr = new Int_flag_bldr().Pow_ary_bld_(3, 2); // 8 different zip types; 4 different hzip types public Xoh_page_tbl(Db_conn conn) { this.conn = conn; this.fld_page_id = flds.Add_int_pkey("page_id"); @@ -33,14 +32,19 @@ public class Xoh_page_tbl implements Rls_able { this.fld_body = flds.Add_bry("body"); conn.Rls_reg(this); } - public Db_conn Conn() {return conn;} + public Db_conn Conn() {return conn;} private final Db_conn conn; + public String Tbl_name() {return tbl_name;} private final String tbl_name = "html"; + public Dbmeta_fld_list Flds() {return flds;} private final Dbmeta_fld_list flds = new Dbmeta_fld_list(); public void Create_tbl() {conn.Meta_tbl_create(Dbmeta_tbl_itm.New(tbl_name, flds));} public void Insert_bgn() {conn.Txn_bgn("html__insert"); stmt_insert = conn.Stmt_insert(tbl_name, flds);} public void Insert_end() {conn.Txn_end(); stmt_insert = Db_stmt_.Rls(stmt_insert);} public void Insert(Xoh_page hpg, int zip_tid, int hzip_tid, byte[] body) {Insert(hpg.Page_id(), hpg.Head_mgr().Flag(), zip_tid, hzip_tid, hpg.Display_ttl(), hpg.Content_sub(), hpg.Sidebar_div(), body);} public void Insert(int page_id, int head_flag, int zip_tid, int hzip_tid, byte[] display_ttl, byte[] content_sub, byte[] sidebar_div, byte[] body) { - if (stmt_insert == null) stmt_insert = conn.Stmt_insert(tbl_name, flds); int body_flag = body_flag_bldr.Set(0, zip_tid).Set(1, hzip_tid).Encode(); + Insert(page_id, head_flag, body_flag, display_ttl, content_sub, sidebar_div, body); + } + public void Insert(int page_id, int head_flag, int body_flag, byte[] display_ttl, byte[] content_sub, byte[] sidebar_div, byte[] body) { + if (stmt_insert == null) stmt_insert = conn.Stmt_insert(tbl_name, flds); stmt_insert.Clear().Val_int(fld_page_id, page_id); Fill_stmt(stmt_insert, head_flag, body_flag, display_ttl, content_sub, sidebar_div, body); stmt_insert.Exec_insert(); @@ -71,13 +75,33 @@ public class Xoh_page_tbl implements Rls_able { } finally {rdr.Rls();} } + public boolean Select_as_row(Xoh_page_row rv, int page_id) { + if (stmt_select == null) stmt_select = conn.Stmt_select(tbl_name, flds, fld_page_id); + Db_rdr rdr = stmt_select.Clear().Crt_int(fld_page_id, page_id).Exec_select__rls_manual(); + try { + if (rdr.Move_next()) { + rv.Load + ( page_id + , rdr.Read_int(fld_head_flag) + , rdr.Read_int(fld_body_flag) + , rdr.Read_bry_by_str(fld_display_ttl) + , rdr.Read_bry_by_str(fld_content_sub) + , rdr.Read_bry_by_str(fld_sidebar_div) + , rdr.Read_bry(fld_body) + ); + return true; + } + return false; + } + finally {rdr.Rls();} + } public void Rls() { stmt_insert = Db_stmt_.Rls(stmt_insert); stmt_delete = Db_stmt_.Rls(stmt_delete); stmt_select = Db_stmt_.Rls(stmt_select); stmt_update = Db_stmt_.Rls(stmt_update); } - private void Fill_stmt(Db_stmt stmt, int head_flag, int body_flag, byte[] display_ttl, byte[] content_sub, byte[] sidebar_div, byte[] body) { + public void Fill_stmt(Db_stmt stmt, int head_flag, int body_flag, byte[] display_ttl, byte[] content_sub, byte[] sidebar_div, byte[] body) { stmt.Val_int(fld_head_flag, head_flag).Val_int(fld_body_flag, body_flag) .Val_bry_as_str(fld_display_ttl, Bry_.Coalesce_to_empty(display_ttl)).Val_bry_as_str(fld_content_sub, Bry_.Coalesce_to_empty(content_sub)).Val_bry_as_str(fld_sidebar_div, Bry_.Coalesce_to_empty(sidebar_div)).Val_bry(fld_body, body); } diff --git a/400_xowa/src/gplx/xowa/htmls/core/dbs/Xoh_redlink_tbl.java b/400_xowa/src/gplx/xowa/htmls/core/dbs/Xoh_redlink_tbl.java index 9a7759c5f..91b2530a5 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/dbs/Xoh_redlink_tbl.java +++ b/400_xowa/src/gplx/xowa/htmls/core/dbs/Xoh_redlink_tbl.java @@ -18,9 +18,9 @@ along with this program. If not, see . package gplx.xowa.htmls.core.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.core.*; import gplx.dbs.*; public class Xoh_redlink_tbl implements Rls_able { - private final String tbl_name = "html_redlink"; private final Dbmeta_fld_list flds = Dbmeta_fld_list.new_(); - private final String fld_page_id, fld_redlink_uids; - private final Db_conn conn; private Db_stmt stmt_select, stmt_insert, stmt_delete, stmt_update; + private final String tbl_name = "html_redlink"; private final Dbmeta_fld_list flds = new Dbmeta_fld_list(); + private final String fld_page_id, fld_redlink_uids; + private final Db_conn conn; private Db_stmt stmt_select, stmt_insert, stmt_delete, stmt_update; public Xoh_redlink_tbl(Db_conn conn) { this.conn = conn; this.fld_page_id = flds.Add_int_pkey("page_id"); diff --git a/400_xowa/src/gplx/xowa/htmls/core/htmls/tidy/Xoh_tidy_mgr.java b/400_xowa/src/gplx/xowa/htmls/core/htmls/tidy/Xoh_tidy_mgr.java index 1e365d149..4a7e1910b 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/htmls/tidy/Xoh_tidy_mgr.java +++ b/400_xowa/src/gplx/xowa/htmls/core/htmls/tidy/Xoh_tidy_mgr.java @@ -19,7 +19,7 @@ package gplx.xowa.htmls.core.htmls.tidy; import gplx.*; import gplx.xowa.*; impo import gplx.core.envs.*; import gplx.langs.htmls.*; import gplx.xowa.apps.fsys.*; -public class Xoh_tidy_mgr implements GfoInvkAble { +public class Xoh_tidy_mgr implements Gfo_invk { private Xoh_tidy_wkr wkr = Xoh_tidy_wkr_.Wkr_null; // TEST: set default wkr to null private Xoh_tidy_wkr_tidy wkr_tidy = new Xoh_tidy_wkr_tidy(); private Xoh_tidy_wkr_jtidy wkr_jtidy = new Xoh_tidy_wkr_jtidy(); public void Init_by_app(Xoae_app app) { @@ -52,7 +52,7 @@ public class Xoh_tidy_mgr implements GfoInvkAble { else if (ctx.Match(k, Invk_engine_type_)) Wkr_tid_(Xoh_tidy_wkr_.Xto_tid(m.ReadStr("v"))); else if (ctx.Match(k, Invk_engine_type_list)) return Xoh_tidy_wkr_.Options__list; else if (ctx.Match(k, Invk_lib)) return wkr_tidy; - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String @@ -71,7 +71,7 @@ public class Xoh_tidy_mgr implements GfoInvkAble { bfr.Delete_rng_to_end(find); return true; } - private static final byte[] // MW:includes/parser/Tidy.php|getWrapped + private static final byte[] // MW:includes/parser/Tidy.php|getWrapped Wrap_bgn = Bry_.new_a7 ( "" + "" diff --git a/400_xowa/src/gplx/xowa/htmls/core/htmls/tidy/Xoh_tidy_mgr_tst.java b/400_xowa/src/gplx/xowa/htmls/core/htmls/tidy/Xoh_tidy_mgr_tst.java index 78a8ecff7..ff505c651 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/htmls/tidy/Xoh_tidy_mgr_tst.java +++ b/400_xowa/src/gplx/xowa/htmls/core/htmls/tidy/Xoh_tidy_mgr_tst.java @@ -72,7 +72,7 @@ public class Xoh_tidy_mgr_tst { } } class Xoh_tidy_mgr_fxt { - private Bry_bfr bfr = Bry_bfr.reset_(255); + private Bry_bfr bfr = Bry_bfr_.Reset(255); public void Clear() { bfr.Clear(); } diff --git a/400_xowa/src/gplx/xowa/htmls/core/htmls/utls/Xoh_anchor_kv_bldr.java b/400_xowa/src/gplx/xowa/htmls/core/htmls/utls/Xoh_anchor_kv_bldr.java index 6f230f4aa..9e578a016 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/htmls/utls/Xoh_anchor_kv_bldr.java +++ b/400_xowa/src/gplx/xowa/htmls/core/htmls/utls/Xoh_anchor_kv_bldr.java @@ -19,7 +19,7 @@ package gplx.xowa.htmls.core.htmls.utls; import gplx.*; import gplx.xowa.*; impo import gplx.langs.htmls.*; public class Xoh_anchor_kv_bldr { private byte[] base_url; private boolean has_qarg; - private final Bry_bfr tmp_bfr = Bry_bfr.new_(16), apos_bfr = Bry_bfr.new_(16); + private final Bry_bfr tmp_bfr = Bry_bfr_.New_w_size(16), apos_bfr = Bry_bfr_.New_w_size(16); public Xoh_anchor_kv_bldr Init_w_qarg(byte[] base_url) {return Init(Bool_.Y, base_url);} public Xoh_anchor_kv_bldr Init(boolean has_qarg, byte[] base_url) { this.has_qarg = has_qarg; this.base_url = base_url; diff --git a/400_xowa/src/gplx/xowa/htmls/core/htmls/utls/Xoh_lnki_bldr.java b/400_xowa/src/gplx/xowa/htmls/core/htmls/utls/Xoh_lnki_bldr.java index 8707792e2..77ad25744 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/htmls/utls/Xoh_lnki_bldr.java +++ b/400_xowa/src/gplx/xowa/htmls/core/htmls/utls/Xoh_lnki_bldr.java @@ -19,7 +19,7 @@ package gplx.xowa.htmls.core.htmls.utls; import gplx.*; import gplx.xowa.*; impo import gplx.langs.htmls.*; import gplx.xowa.htmls.hrefs.*; public class Xoh_lnki_bldr { private final Xoa_app app; private final Xoh_href_wtr href_wtr; private final byte[] img_root_dir; - private final Bry_bfr tmp_bfr = Bry_bfr.reset_(255); + private final Bry_bfr tmp_bfr = Bry_bfr_.Reset(255); private byte[] href, title, id, caption; private byte[] img_rel_path; private int img_w, img_h; private boolean img_pos_is_left; public Xoh_lnki_bldr(Xoa_app app, Xoh_href_wtr href_wtr) { diff --git a/400_xowa/src/gplx/xowa/htmls/core/hzips/Xoh_hzip_int__tst.java b/400_xowa/src/gplx/xowa/htmls/core/hzips/Xoh_hzip_int__tst.java index d807ddc12..f7cd859e4 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/hzips/Xoh_hzip_int__tst.java +++ b/400_xowa/src/gplx/xowa/htmls/core/hzips/Xoh_hzip_int__tst.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.xowa.htmls.core.hzips; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.core.*; import org.junit.*; import gplx.core.encoders.*; public class Xoh_hzip_int__tst { - private final Xoh_hzip_int__fxt fxt = new Xoh_hzip_int__fxt(); + private final Xoh_hzip_int__fxt fxt = new Xoh_hzip_int__fxt(); @Test public void Reqd__1() { fxt.Test__encode(1, 0, "!"); fxt.Test__encode(1, 84, "u"); @@ -37,8 +37,8 @@ public class Xoh_hzip_int__tst { } } class Xoh_hzip_int__fxt { - private final Bry_bfr bfr = Bry_bfr.new_(); - private final gplx.core.primitives.Int_obj_ref count_ref = gplx.core.primitives.Int_obj_ref.neg1_(); + private final Bry_bfr bfr = Bry_bfr_.New(); + private final gplx.core.primitives.Int_obj_ref count_ref = gplx.core.primitives.Int_obj_ref.New_neg1(); public void Test__encode(int reqd, int val, String expd) { Gfo_hzip_int_.Encode(reqd, bfr, val); byte[] actl = bfr.To_bry_and_clear(); diff --git a/400_xowa/src/gplx/xowa/htmls/core/hzips/Xoh_hzip_int_tst.java b/400_xowa/src/gplx/xowa/htmls/core/hzips/Xoh_hzip_int_tst.java index c1e7f0bb8..f14f5d3f4 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/hzips/Xoh_hzip_int_tst.java +++ b/400_xowa/src/gplx/xowa/htmls/core/hzips/Xoh_hzip_int_tst.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.xowa.htmls.core.hzips; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.core.*; import org.junit.*; public class Xoh_hzip_int_tst { - private final Xoh_hzip_int_fxt fxt = new Xoh_hzip_int_fxt(); + private final Xoh_hzip_int_fxt fxt = new Xoh_hzip_int_fxt(); @Test public void B256__reqd__1() { fxt.Init__b256(); fxt.Test__b256(1, 0 , 0); @@ -65,9 +65,9 @@ public class Xoh_hzip_int_tst { } } class Xoh_hzip_int_fxt { - private final Bry_bfr bfr = Bry_bfr.new_(); - private final gplx.core.primitives.Int_obj_ref count_ref = gplx.core.primitives.Int_obj_ref.neg1_(); - private final Xoh_hzip_int hzint = new Xoh_hzip_int(); + private final Bry_bfr bfr = Bry_bfr_.New(); + private final gplx.core.primitives.Int_obj_ref count_ref = gplx.core.primitives.Int_obj_ref.New_neg1(); + private final Xoh_hzip_int hzint = new Xoh_hzip_int(); public void Init__b256() {hzint.Mode_is_b256_(Bool_.Y);} public void Init__b085() {hzint.Mode_is_b256_(Bool_.N);} public void Test__b256(int reqd, int val, int... expd_ints) { diff --git a/400_xowa/src/gplx/xowa/htmls/core/hzips/Xoh_stat_tbl.java b/400_xowa/src/gplx/xowa/htmls/core/hzips/Xoh_stat_tbl.java index 0725118c5..9bd6842ca 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/hzips/Xoh_stat_tbl.java +++ b/400_xowa/src/gplx/xowa/htmls/core/hzips/Xoh_stat_tbl.java @@ -19,8 +19,8 @@ package gplx.xowa.htmls.core.hzips; import gplx.*; import gplx.xowa.*; import gp import gplx.dbs.*; import gplx.dbs.engines.sqlite.*; import gplx.xowa.htmls.core.makes.imgs.*; import gplx.xowa.htmls.core.hzips.*; import gplx.xowa.wikis.pages.*; public class Xoh_stat_tbl implements Rls_able { - private static final String tbl_name = "hdump_stats"; private static final Dbmeta_fld_list flds = Dbmeta_fld_list.new_(); - private static final String + private static final String tbl_name = "hdump_stats"; private static final Dbmeta_fld_list flds = new Dbmeta_fld_list(); + private static final String fld_page_id = flds.Add_int_pkey("page_id"), fld_wtxt_len = flds.Add_int("wtxt_len"), fld_row_orig_len = flds.Add_int("row_orig_len"), fld_row_zip_len = flds.Add_int("row_zip_len") , fld_body_len = flds.Add_int("body_len"), fld_display_ttl_len = flds.Add_int("display_ttl_len"), fld_content_sub_len = flds.Add_int("content_sub_len"), fld_sidebar_div_len = flds.Add_int("sidebar_div_len") , fld_js_math = flds.Add_int("js_math"), fld_js_imap = flds.Add_int("js_imap"), fld_js_packed = flds.Add_int("js_packed"), fld_js_hiero = flds.Add_int("js_hiero") @@ -29,7 +29,7 @@ public class Xoh_stat_tbl implements Rls_able { , fld_hdr_1 = flds.Add_int("hdr_1"), fld_hdr_2 = flds.Add_int("hdr_2"), fld_hdr_3 = flds.Add_int("hdr_3"), fld_hdr_4 = flds.Add_int("hdr_4"), fld_hdr_5 = flds.Add_int("hdr_5"), fld_hdr_6 = flds.Add_int("hdr_6") , fld_img_full = flds.Add_int("img_full") ; - private final Db_conn conn; private Db_stmt stmt_insert; + private final Db_conn conn; private Db_stmt stmt_insert; public Xoh_stat_tbl(Db_conn conn) { this.conn = conn; this.Create_tbl(); diff --git a/400_xowa/src/gplx/xowa/htmls/core/makes/Xoh_make_mgr.java b/400_xowa/src/gplx/xowa/htmls/core/makes/Xoh_make_mgr.java index 757b91749..f48435c73 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/makes/Xoh_make_mgr.java +++ b/400_xowa/src/gplx/xowa/htmls/core/makes/Xoh_make_mgr.java @@ -23,12 +23,12 @@ import gplx.xowa.wikis.domains.*; import gplx.xowa.wikis.ttls.*; import gplx.xow import gplx.xowa.htmls.core.wkrs.*; import gplx.xowa.htmls.core.hzips.*; public class Xoh_make_mgr { - private final Xoh_hzip_bfr bfr = Xoh_hzip_bfr.New_txt(255); private final Bry_bfr tmp_bfr = Bry_bfr.reset_(255); private final Bry_rdr_old bry_rdr = new Bry_rdr_old(); private Gfo_usr_dlg usr_dlg = Gfo_usr_dlg_.Instance; - private Xoh_cfg_file cfg_file; private final Xof_url_bldr url_bldr = Xof_url_bldr.new_v2(); private Xoh_file_html_fmtr__base html_fmtr; - private final byte[] root_dir, file_dir; private byte[] file_dir_comm, file_dir_wiki, hiero_img_dir; private final byte[] wiki_domain; - private final Bry_rdr parser = new Bry_rdr(); - private final Xoh_hdoc_ctx hctx = new Xoh_hdoc_ctx(); - private final Xoh_hdoc_parser make_parser = new Xoh_hdoc_parser(new Xoh_hdoc_wkr__make()); + private final Xoh_hzip_bfr bfr = Xoh_hzip_bfr.New_txt(255); private final Bry_bfr tmp_bfr = Bry_bfr_.Reset(255); private final Bry_rdr_old bry_rdr = new Bry_rdr_old(); private Gfo_usr_dlg usr_dlg = Gfo_usr_dlg_.Instance; + private Xoh_cfg_file cfg_file; private final Xof_url_bldr url_bldr = Xof_url_bldr.new_v2(); private Xoh_file_html_fmtr__base html_fmtr; + private final byte[] root_dir, file_dir; private byte[] file_dir_comm, file_dir_wiki, hiero_img_dir; private final byte[] wiki_domain; + private final Bry_rdr parser = new Bry_rdr(); + private final Xoh_hdoc_ctx hctx = new Xoh_hdoc_ctx(); + private final Xoh_hdoc_parser make_parser = new Xoh_hdoc_parser(new Xoh_hdoc_wkr__make()); public Xoh_make_mgr(Gfo_usr_dlg usr_dlg, Xoa_fsys_mgr fsys_mgr, Gfo_url_encoder fsys_encoder, byte[] wiki_domain) { this.usr_dlg = usr_dlg; this.root_dir = fsys_mgr.Root_dir().To_http_file_bry(); @@ -139,6 +139,6 @@ public class Xoh_make_mgr { } catch (Exception e) {Xoa_app_.Usr_dlg().Warn_many("", "", "abrv.read: page=~{0} itm=~{1} err=~{2}", hpg.Url_bry_safe(), img == null ? "" : img.Data_print(), Err_.Message_gplx_full(e));} return rv; } - public static final Bry_fmtr fmtr_img = Bry_fmtr.new_("src='~{src}' width='~{w}' height='~{h}'", "src", "w", "h"); - private static final Btrie_slim_mgr trie = Xoh_make_trie_.new_trie(); + public static final Bry_fmtr fmtr_img = Bry_fmtr.new_("src='~{src}' width='~{w}' height='~{h}'", "src", "w", "h"); + private static final Btrie_slim_mgr trie = Xoh_make_trie_.new_trie(); } diff --git a/400_xowa/src/gplx/xowa/htmls/core/makes/Xoh_make_mgr_fxt.java b/400_xowa/src/gplx/xowa/htmls/core/makes/Xoh_make_mgr_fxt.java index d225b87a6..c96f34746 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/makes/Xoh_make_mgr_fxt.java +++ b/400_xowa/src/gplx/xowa/htmls/core/makes/Xoh_make_mgr_fxt.java @@ -18,8 +18,8 @@ along with this program. If not, see . package gplx.xowa.htmls.core.makes; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.core.*; import gplx.core.primitives.*; import gplx.xowa.htmls.core.makes.imgs.*; import gplx.xowa.files.*; import gplx.xowa.parsers.lnkis.*; class Xoh_make_mgr_fxt { - private final List_adp img_list = List_adp_.new_(); - private final Xoh_page hpg = new Xoh_page(); + private final List_adp img_list = List_adp_.New(); + private final Xoh_page hpg = new Xoh_page(); private Xoh_make_mgr hswap_mgr; private Xowe_wiki wiki; public void Clear() { Xoae_app app = Xoa_app_fxt.Make__app__edit(); @@ -54,7 +54,7 @@ class Xoh_make_mgr_fxt { public Xoh_make_mgr_fxt Init_data_redlink(int... uids) { int uids_len = uids.length; for (int i = 0; i < uids_len; ++i) { - Int_obj_ref redlink_uid = Int_obj_ref.new_(uids[i]); + Int_obj_ref redlink_uid = Int_obj_ref.New(uids[i]); hpg.Redlink_uids().Add(redlink_uid, redlink_uid); } return this; diff --git a/400_xowa/src/gplx/xowa/htmls/core/makes/tests/Xoh_page_chkr.java b/400_xowa/src/gplx/xowa/htmls/core/makes/tests/Xoh_page_chkr.java index fc50f12a2..67df1d7ee 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/makes/tests/Xoh_page_chkr.java +++ b/400_xowa/src/gplx/xowa/htmls/core/makes/tests/Xoh_page_chkr.java @@ -19,9 +19,9 @@ package gplx.xowa.htmls.core.makes.tests; import gplx.*; import gplx.xowa.*; imp import gplx.xowa.htmls.sections.*; import gplx.xowa.files.*; public class Xoh_page_chkr { - private final Xoh_section_mgr expd_section_mgr = new Xoh_section_mgr(); - private final Xoh_img_mgr expd_img_mgr = new Xoh_img_mgr(); - private final Bry_bfr bfr = Bry_bfr.new_(); + private final Xoh_section_mgr expd_section_mgr = new Xoh_section_mgr(); + private final Xoh_img_mgr expd_img_mgr = new Xoh_img_mgr(); + private final Bry_bfr bfr = Bry_bfr_.New(); public void Clear() { expd_img_mgr.Clear(); } diff --git a/400_xowa/src/gplx/xowa/htmls/core/wkrs/Xoh_hdoc_ctx.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/Xoh_hdoc_ctx.java index 2742ac74f..3c8e6d984 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/wkrs/Xoh_hdoc_ctx.java +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/Xoh_hdoc_ctx.java @@ -30,7 +30,7 @@ public class Xoh_hdoc_ctx { public byte[] Wiki__domain_bry() {return wiki__domain_bry;} private byte[] wiki__domain_bry; public Xow_ttl_parser Wiki__ttl_parser() {return wiki__ttl_parser;} private Xow_ttl_parser wiki__ttl_parser; public Xow_url_parser Wiki__url_parser() {return wiki__url_parser;} private Xow_url_parser wiki__url_parser; - public boolean Xwiki_mgr__missing(byte[] domain){return app.Xwiki_mgr__missing(domain);} + public boolean Xwiki_mgr__missing(byte[] domain){return app.Xwiki_mgr__missing(domain);} public Xou_cache_finder File__mgr() {return file__mgr;} private Xou_cache_finder file__mgr = Xou_cache_finder_.Noop; public Xof_url_bldr File__url_bldr() {return file__url_bldr;} private final Xof_url_bldr file__url_bldr = new Xof_url_bldr(); public byte[] Page__url() {return page__url;} private byte[] page__url; @@ -68,6 +68,8 @@ public class Xoh_hdoc_ctx { this.uid__lnki = 1; // NOTE: should be 0, but for historical reasons, 1st lnki starts at 2; EX: id='xowa_lnki_2' this.uid__gly = -1; } + + public void Test__file__mgr_(Xou_cache_finder v) {this.file__mgr = v;} public static final int Invalid = -1; private static final byte[] Fsys__res__drd = Bry_.new_a7("file:///android_asset/xowa/"); } diff --git a/400_xowa/src/gplx/xowa/htmls/core/wkrs/Xoh_hzip_fxt.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/Xoh_hzip_fxt.java index e3f2686a9..2cdc0d738 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/wkrs/Xoh_hzip_fxt.java +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/Xoh_hzip_fxt.java @@ -17,12 +17,13 @@ along with this program. If not, see . */ package gplx.xowa.htmls.core.wkrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.core.*; import gplx.langs.htmls.*; import gplx.xowa.htmls.core.hzips.*; +import gplx.xowa.files.caches.*; public class Xoh_hzip_fxt { - private final Xowe_wiki wiki; - private final Xop_fxt parser_fxt = new Xop_fxt(); - private final Xoh_hzip_bfr bfr = Xoh_hzip_bfr.New_txt(32); - private final Xoh_hzip_mgr hzip_mgr; - private final Xoh_page hpg = new Xoh_page(); + private final Xowe_wiki wiki; + private final Xop_fxt parser_fxt = new Xop_fxt(); + private final Xoh_hzip_bfr bfr = Xoh_hzip_bfr.New_txt(32); + private final Xoh_hzip_mgr hzip_mgr; + private final Xoh_page hpg = new Xoh_page(); private boolean mode_is_b256; public Xoh_hzip_fxt() { this.wiki = parser_fxt.Wiki(); @@ -36,6 +37,14 @@ public class Xoh_hzip_fxt { public Xoh_hzip_fxt Init_mode_diff_y_() {hzip_mgr.Hctx().Mode_is_diff_(Bool_.Y); return this;} public void Clear() {hpg.Clear();} public void Init_wiki_installed(String domain) {parser_fxt.Init_xwiki_add_user_(domain);} + public Xou_cache_finder_mem Init_file_mgr__mem() { + Xou_cache_finder_mem rv = Xou_cache_finder_.New_mem(); + hzip_mgr.Hctx().Test__file__mgr_(rv); + return rv; + } + public void Init_file_mgr__noop() { + hzip_mgr.Hctx().Test__file__mgr_(Xou_cache_finder_.Noop); + } public Xowe_wiki Init_wiki_alias(String alias, String domain) { Xowe_wiki rv = Xoa_app_fxt.Make__wiki__edit(parser_fxt.App(), domain); parser_fxt.Wiki().Xwiki_mgr().Add_by_atrs(Bry_.new_u8(alias), Bry_.new_u8(domain), null); diff --git a/400_xowa/src/gplx/xowa/htmls/core/wkrs/glys/Xoh_gly_grp_data.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/glys/Xoh_gly_grp_data.java index 9199fe45f..7f11ec191 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/wkrs/glys/Xoh_gly_grp_data.java +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/glys/Xoh_gly_grp_data.java @@ -21,7 +21,7 @@ import gplx.langs.htmls.*; import gplx.langs.htmls.docs.*; import gplx.langs.htm import gplx.xowa.htmls.core.hzips.*; import gplx.xowa.xtns.gallery.*; public class Xoh_gly_grp_data implements Gfh_class_parser_wkr, Gfh_style_wkr { - private final List_adp itms_list = List_adp_.new_(); + private final List_adp itms_list = List_adp_.New(); public int Src_bgn() {return src_bgn;} private int src_bgn; public int Src_end() {return src_end;} private int src_end; public int Gly_tid() {return gly_tid;} private int gly_tid; @@ -129,8 +129,8 @@ public class Xoh_gly_grp_data implements Gfh_class_parser_wkr, Gfh_style_wkr { } return true; } - public static final byte[] Atr__cls__gallery = Bry_.new_a7("gallery"); - private static final byte[] Atr__cls__mw_gallery = Bry_.new_a7("mw-gallery-"), Atr__cls__gallerybox = Bry_.new_a7("gallerybox") + public static final byte[] Atr__cls__gallery = Bry_.new_a7("gallery"); + private static final byte[] Atr__cls__mw_gallery = Bry_.new_a7("mw-gallery-"), Atr__cls__gallerybox = Bry_.new_a7("gallerybox") , Style__max_width = Bry_.new_a7("max-width"), Style___width = Bry_.new_a7("_width") ; } diff --git a/400_xowa/src/gplx/xowa/htmls/core/wkrs/glys/Xoh_gly_hzip.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/glys/Xoh_gly_hzip.java index ad8545f2f..1b8ea7dd7 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/wkrs/glys/Xoh_gly_hzip.java +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/glys/Xoh_gly_hzip.java @@ -23,7 +23,7 @@ import gplx.xowa.wikis.nss.*; import gplx.xowa.wikis.ttls.*; import gplx.xowa.files.*; import gplx.xowa.files.repos.*; import gplx.xowa.xtns.gallery.*; public class Xoh_gly_hzip implements Xoh_hzip_wkr, Gfo_poolable_itm { - private final Xoh_gly_grp_wtr grp_wtr = new Xoh_gly_grp_wtr(); + private final Xoh_gly_grp_wtr grp_wtr = new Xoh_gly_grp_wtr(); public int Tid() {return Xoh_hzip_dict_.Tid__gly;} public String Key() {return Xoh_hzip_dict_.Key__gly;} public byte[] Hook() {return hook;} private byte[] hook; @@ -94,7 +94,7 @@ public class Xoh_gly_hzip implements Xoh_hzip_wkr, Gfo_poolable_itm { } public void Pool__rls () {pool_mgr.Rls_fast(pool_idx);} private Gfo_poolable_mgr pool_mgr; private int pool_idx; public Gfo_poolable_itm Pool__make (Gfo_poolable_mgr mgr, int idx, Object[] args) {Xoh_gly_hzip rv = new Xoh_gly_hzip(); rv.pool_mgr = mgr; rv.pool_idx = idx; rv.hook = (byte[])args[0]; return rv;} - private final Int_flag_bldr flag_bldr = new Int_flag_bldr().Pow_ary_bld_(1, 1, 1, 1, 3); + private final Int_flag_bldr flag_bldr = new Int_flag_bldr().Pow_ary_bld_(1, 1, 1, 1, 3); private static final int // SERIALIZED Flag__ul__style_w_diff = 0 , Flag__ul__xtra_atr = 1 diff --git a/400_xowa/src/gplx/xowa/htmls/core/wkrs/glys/Xoh_gly_itm_data.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/glys/Xoh_gly_itm_data.java index 7aea536b6..92e50b3a4 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/wkrs/glys/Xoh_gly_itm_data.java +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/glys/Xoh_gly_itm_data.java @@ -99,9 +99,9 @@ public class Xoh_gly_itm_data { tag_rdr.Pos_(capt_tail_end); return true; } - private static final byte[] Atr__cls__gallerytext = Bry_.new_a7("gallerytext"), Bry__p__rhs = Bry_.new_a7("

\n"); + private static final byte[] Atr__cls__gallerytext = Bry_.new_a7("gallerytext"), Bry__p__rhs = Bry_.new_a7("

\n"); public static final byte Capt_tid__p = 0, Capt_tid__br = 1, Capt_tid__empty = 2, Capt_tid__null = 3; - private static final Btrie_slim_mgr Capt_tid__trie = Btrie_slim_mgr.ci_a7() + private static final Btrie_slim_mgr Capt_tid__trie = Btrie_slim_mgr.ci_a7() .Add_bry_byte(Gfh_tag_.P_lhs , Capt_tid__p) .Add_bry_byte(Gfh_tag_.Br_lhs , Capt_tid__br) ; diff --git a/400_xowa/src/gplx/xowa/htmls/core/wkrs/glys/Xoh_gly_itm_wtr_tst.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/glys/Xoh_gly_itm_wtr_tst.java index 51e4ed1a5..db43e8445 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/wkrs/glys/Xoh_gly_itm_wtr_tst.java +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/glys/Xoh_gly_itm_wtr_tst.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.xowa.htmls.core.wkrs.glys; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.core.*; import gplx.xowa.htmls.core.wkrs.*; import org.junit.*; import gplx.core.primitives.*; import gplx.xowa.htmls.core.hzips.*; public class Xoh_gly_itm_wtr_tst { - private final Xoh_gly_itm_wtr_fxt fxt = new Xoh_gly_itm_wtr_fxt(); + private final Xoh_gly_itm_wtr_fxt fxt = new Xoh_gly_itm_wtr_fxt(); @Test public void Basic() { fxt.Init__gly(0, 155, 150, 5, "caption"); fxt.Init__img("/wiki/File:A.png", "A.png", "0|120|120|-1|-1|-1"); @@ -38,8 +38,8 @@ public class Xoh_gly_itm_wtr_tst { } } class Xoh_gly_itm_wtr_fxt { - private final Xoh_gly_itm_wtr wtr = new Xoh_gly_itm_wtr(); - private final Bry_bfr tmp_bfr = Bry_bfr.new_(); + private final Xoh_gly_itm_wtr wtr = new Xoh_gly_itm_wtr(); + private final Bry_bfr tmp_bfr = Bry_bfr_.New(); public void Init__gly(int id, int itm_w, int file_div_w, int file_div_margin, String caption) { wtr.Init(Bool_.N, id, itm_w, file_div_w, file_div_margin, Xoh_gly_itm_data.Capt_tid__p, Bry_.new_a7(caption)); } diff --git a/400_xowa/src/gplx/xowa/htmls/core/wkrs/imgs/Xoh_img_hzip.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/imgs/Xoh_img_hzip.java index ce29d443b..640ad79f4 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/wkrs/imgs/Xoh_img_hzip.java +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/imgs/Xoh_img_hzip.java @@ -23,8 +23,8 @@ import gplx.xowa.htmls.core.wkrs.bfr_args.*; import gplx.xowa.htmls.core.wkrs.im import gplx.xowa.wikis.nss.*; import gplx.xowa.wikis.ttls.*; import gplx.xowa.files.*; import gplx.xowa.files.repos.*; public class Xoh_img_hzip implements Xoh_hzip_wkr, Gfo_poolable_itm { - private final Bry_bfr tmp_bfr = Bry_bfr.new_(32); - private final Xoh_img_xoimg_hzip xoimg = new Xoh_img_xoimg_hzip(); + private final Bry_bfr tmp_bfr = Bry_bfr_.New_w_size(32); + private final Xoh_img_xoimg_hzip xoimg = new Xoh_img_xoimg_hzip(); public int Tid() {return Xoh_hzip_dict_.Tid__img;} public String Key() {return Xoh_hzip_dict_.Key__img;} public byte[] Hook() {return hook;} private byte[] hook; @@ -234,7 +234,7 @@ public class Xoh_img_hzip implements Xoh_hzip_wkr, Gfo_poolable_itm { public void Pool__rls () {pool_mgr.Rls_fast(pool_idx);} private Gfo_poolable_mgr pool_mgr; private int pool_idx; public Gfo_poolable_itm Pool__make (Gfo_poolable_mgr mgr, int idx, Object[] args) {Xoh_img_hzip rv = new Xoh_img_hzip(); rv.pool_mgr = mgr; rv.pool_idx = idx; rv.hook = (byte[])args[0]; return rv;} public static int Md5_depth = 2; - private final Int_flag_bldr flag_bldr = new Int_flag_bldr().Pow_ary_bld_(1, 1, 1, 1, 1, 1 , 1 , 1, 1, 1 , 1 , 2, 1, 1 , 1, 1, 2, 2); + private final Int_flag_bldr flag_bldr = new Int_flag_bldr().Pow_ary_bld_(1, 1, 1, 1, 1, 1 , 1 , 1, 1, 1 , 1 , 2, 1, 1 , 1, 1, 2, 2); private static final int // SERIALIZED Flag__img__imap_exists = 0 , Flag__img__wo_anch = 1 diff --git a/400_xowa/src/gplx/xowa/htmls/core/wkrs/imgs/Xoh_img_hzip__dump__tst.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/imgs/Xoh_img_hzip__dump__tst.java index 01c1b9b00..dfec42aa0 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/wkrs/imgs/Xoh_img_hzip__dump__tst.java +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/imgs/Xoh_img_hzip__dump__tst.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.xowa.htmls.core.wkrs.imgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.core.*; import gplx.xowa.htmls.core.wkrs.*; import org.junit.*; import gplx.xowa.htmls.core.hzips.*; import gplx.xowa.wikis.nss.*; public class Xoh_img_hzip__dump__tst { - private final Xoh_hzip_fxt fxt = new Xoh_hzip_fxt().Init_mode_diff_y_(); + private final Xoh_hzip_fxt fxt = new Xoh_hzip_fxt().Init_mode_diff_y_(); @Before public void Clear() {fxt.Clear();} @Test public void Basic() { // [[File:A.png|border|class=other|220px|abc]] fxt.Test__bicode diff --git a/400_xowa/src/gplx/xowa/htmls/core/wkrs/imgs/Xoh_img_wtr.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/imgs/Xoh_img_wtr.java index d054c66e8..49c66c90b 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/wkrs/imgs/Xoh_img_wtr.java +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/imgs/Xoh_img_wtr.java @@ -21,11 +21,11 @@ import gplx.langs.htmls.*; import gplx.langs.htmls.docs.*; import gplx.langs.htm import gplx.xowa.htmls.core.hzips.*; import gplx.xowa.htmls.core.wkrs.bfr_args.*; import gplx.xowa.htmls.core.wkrs.imgs.atrs.*; import gplx.xowa.files.*; import gplx.xowa.xtns.imaps.*; public class Xoh_img_wtr implements Bfr_arg, Xoh_wtr_itm { - private final Bfr_arg_clearable[] arg_ary; - private final Bfr_arg__hatr_arg img_xowa_image = new Bfr_arg__hatr_arg(Xoh_img_xoimg_data.Bry__data_xowa_image); - private final Bfr_arg__hatr_id img_id = Bfr_arg__hatr_id.New_id(Xoh_img_mgr.Bry__html_uid), vid_play_id = Bfr_arg__hatr_id.New_id("xowa_file_play_"), img_imap_usemap = new Bfr_arg__hatr_id(Imap_xtn_mgr.Bry__usemap__name, Imap_xtn_mgr.Bry__usemap__prefix); - private final Bfr_arg__hatr_int img_w = new Bfr_arg__hatr_int(Gfh_atr_.Bry__width), img_h = new Bfr_arg__hatr_int(Gfh_atr_.Bry__height); - private final Bfr_arg__hatr_bry + private final Bfr_arg_clearable[] arg_ary; + private final Bfr_arg__hatr_arg img_xowa_image = new Bfr_arg__hatr_arg(Xoh_img_xoimg_data.Bry__data_xowa_image); + private final Bfr_arg__hatr_id img_id = Bfr_arg__hatr_id.New_id(Xoh_img_mgr.Bry__html_uid), vid_play_id = Bfr_arg__hatr_id.New_id("xowa_file_play_"), img_imap_usemap = new Bfr_arg__hatr_id(Imap_xtn_mgr.Bry__usemap__name, Imap_xtn_mgr.Bry__usemap__prefix); + private final Bfr_arg__hatr_int img_w = new Bfr_arg__hatr_int(Gfh_atr_.Bry__width), img_h = new Bfr_arg__hatr_int(Gfh_atr_.Bry__height); + private final Bfr_arg__hatr_bry anch_href = new Bfr_arg__hatr_bry(Gfh_atr_.Bry__href) , anch_rel = new Bfr_arg__hatr_bry(Gfh_atr_.Bry__rel) , anch_xowa_title = new Bfr_arg__hatr_bry(Xoh_img_data.Bry__atr__xowa_title) @@ -58,7 +58,7 @@ public class Xoh_img_wtr implements Bfr_arg, Xoh_wtr_itm { Init_by_decode(hpg, hctx, src, data); this.Bfr_arg__add(bfr); } - private static final byte[] Bry__qarg__esc = Bry_.new_a7("%3F"); + private static final byte[] Bry__qarg__esc = Bry_.new_a7("%3F"); public boolean Init_by_decode(Xoh_page hpg, Xoh_hdoc_ctx hctx, byte[] src, Xoh_data_itm data_itm) { Xoh_img_data data = (Xoh_img_data)data_itm; this.Clear(); @@ -113,13 +113,13 @@ public class Xoh_img_wtr implements Bfr_arg, Xoh_wtr_itm { if (img_is_vid) bfr.Add(Vid__bry__bgn); img_fmtr.Bld_bfr_many(bfr, (Object[])arg_ary); if (img_is_vid) - vid_fmtr.Bld_bfr_many(bfr, vid_play_id, anch_xowa_title, xowa_root_dir, 218, 220); // TODO: hardcode widths; need to update via js from fsdb + vid_fmtr.Bld_bfr_many(bfr, vid_play_id, anch_xowa_title, xowa_root_dir, 218, 220); // TODO_OLD: hardcode widths; need to update via js from fsdb } } public void Pool__rls () {pool_mgr.Rls_fast(pool_idx);} private Gfo_poolable_mgr pool_mgr; private int pool_idx; public Gfo_poolable_itm Pool__make (Gfo_poolable_mgr mgr, int idx, Object[] args) {Xoh_img_wtr rv = new Xoh_img_wtr(); rv.pool_mgr = mgr; rv.pool_idx = idx; return rv;} - private static final byte[] Vid__bry__bgn = Bry_.new_a7("
\n
"); - private static final Bry_fmtr + private static final byte[] Vid__bry__bgn = Bry_.new_a7("
\n
"); + private static final Bry_fmtr img_fmtr = Bry_fmtr.new_ ( "" , "anch_href", "anch_rel", "anch_cls", "anch_title", "anch_xowa_title", "img_id", "img_xowa_title", "img_xowa_image", "img_src", "img_w", "img_h", "img_cls", "img_alt") diff --git a/400_xowa/src/gplx/xowa/htmls/core/wkrs/imgs/atrs/Xoh_img_xoimg_data.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/imgs/atrs/Xoh_img_xoimg_data.java index b6619cead..5374113ce 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/wkrs/imgs/atrs/Xoh_img_xoimg_data.java +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/imgs/atrs/Xoh_img_xoimg_data.java @@ -19,7 +19,7 @@ package gplx.xowa.htmls.core.wkrs.imgs.atrs; import gplx.*; import gplx.xowa.*; import gplx.core.brys.*; import gplx.langs.htmls.*; import gplx.langs.htmls.docs.*; public class Xoh_img_xoimg_data implements Bfr_arg_clearable { - private final Bry_rdr rdr = new Bry_rdr().Dflt_dlm_(Byte_ascii.Pipe); + private final Bry_rdr rdr = new Bry_rdr().Dflt_dlm_(Byte_ascii.Pipe); public int Val_bgn() {return val_bgn;} private int val_bgn; public int Val_end() {return val_end;} private int val_end; public boolean Val_dat_exists() {return val_dat_exists;} private boolean val_dat_exists; @@ -88,7 +88,7 @@ public class Xoh_img_xoimg_data implements Bfr_arg_clearable { bfr.Add_double(lnki_time).Add_byte_pipe(); bfr.Add_int_variable(lnki_page); } - public static final byte[] + public static final byte[] Bry__data_xowa_image = Bry_.new_a7("data-xoimg") , Bry__data_xowa_title = Bry_.new_a7("data-xowa-title") ; diff --git a/400_xowa/src/gplx/xowa/htmls/core/wkrs/imgs/atrs/Xoh_img_xoimg_hzip.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/imgs/atrs/Xoh_img_xoimg_hzip.java index ef4adb6e9..d5430824c 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/wkrs/imgs/atrs/Xoh_img_xoimg_hzip.java +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/imgs/atrs/Xoh_img_xoimg_hzip.java @@ -55,7 +55,7 @@ public class Xoh_img_xoimg_hzip { int page = page_exists ? rdr.Read_hzip_int(2) : Xof_lnki_page.Null; arg.Set(tid, w, h, upright, time, page); } - private final Int_flag_bldr flag_bldr = new Int_flag_bldr().Pow_ary_bld_( 1, 1 , 1, 1, 1, 3); + private final Int_flag_bldr flag_bldr = new Int_flag_bldr().Pow_ary_bld_( 1, 1 , 1, 1, 1, 3); private static final int // SERIALIZED Flag__page_exists = 0 , Flag__time_exists = 1 diff --git a/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkes/Xoh_lnke_html.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkes/Xoh_lnke_html.java index baf7808c5..34d00a602 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkes/Xoh_lnke_html.java +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkes/Xoh_lnke_html.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.htmls.core.wkrs.lnkes; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.core.*; import gplx.xowa.htmls.core.wkrs.*; -import gplx.core.btries.*; import gplx.core.net.*; import gplx.langs.htmls.encoders.*; import gplx.xowa.apps.urls.*; +import gplx.core.btries.*; import gplx.core.net.*; import gplx.core.net.qargs.*; import gplx.langs.htmls.encoders.*; import gplx.xowa.apps.urls.*; import gplx.langs.htmls.*; import gplx.xowa.htmls.hrefs.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.lnkes.*; import gplx.xowa.htmls.core.htmls.*; @@ -72,7 +72,7 @@ public class Xoh_lnke_html { bfr.Add(Xoh_href_.Bry__site).Add(lnke_xwiki_wiki).Add(Xoh_href_.Bry__wiki) .Add(href_encoder.Encode(lnke.Lnke_xwiki_page())); // NOTE: must encode page; EX:%22%3D -> '">' which will end attribute; PAGE:en.w:List_of_Category_A_listed_buildings_in_West_Lothian DATE:2014-07-15 if (lnke.Lnke_xwiki_qargs() != null) - Gfo_qarg_mgr.Concat_bfr(bfr, href_encoder, lnke.Lnke_xwiki_qargs()); // NOTE: must encode args + Gfo_qarg_mgr_old.Concat_bfr(bfr, href_encoder, lnke.Lnke_xwiki_qargs()); // NOTE: must encode args return ctx.Wiki().App().Xwiki_mgr__missing(lnke_xwiki_wiki); // write "external" if hdump or xwiki is missing } } diff --git a/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/Xoh_lnki_hzip.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/Xoh_lnki_hzip.java index 2816bebf0..59136d5b8 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/Xoh_lnki_hzip.java +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/Xoh_lnki_hzip.java @@ -21,7 +21,7 @@ import gplx.xowa.htmls.core.hzips.*; import gplx.xowa.htmls.core.wkrs.lnkis.anch import gplx.langs.htmls.*; import gplx.xowa.htmls.hrefs.*; import gplx.xowa.wikis.ttls.*; import gplx.xowa.wikis.nss.*; import gplx.xowa.parsers.lnkis.*; public class Xoh_lnki_hzip implements Xoh_hzip_wkr, Gfo_poolable_itm { - private final Bry_bfr tmp_bfr = Bry_bfr.new_(32); + private final Bry_bfr tmp_bfr = Bry_bfr_.New_w_size(32); public int Tid() {return Xoh_hzip_dict_.Tid__lnki;} public String Key() {return Xoh_hzip_dict_.Key__lnki;} public byte[] Hook() {return hook;} private byte[] hook; diff --git a/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/htmls/Xoh_file_html_fmtr__base.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/htmls/Xoh_file_html_fmtr__base.java index fac3c0041..7eb2fc0f0 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/htmls/Xoh_file_html_fmtr__base.java +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/htmls/Xoh_file_html_fmtr__base.java @@ -22,9 +22,9 @@ import gplx.xowa.files.*; import gplx.xowa.htmls.core.makes.*; import gplx.xowa. import gplx.xowa.htmls.core.htmls.*; import gplx.xowa.parsers.lnkis.*; public class Xoh_file_html_fmtr__base implements Xoh_file_img_wkr { - protected final Xoh_arg_img_core arg_img_core; - private Bry_bfr scratch_bfr = Bry_bfr.reset_(128); - private final Bfr_arg__hatr_id thm_file_id = Bfr_arg__hatr_id.New_id("xowa_file_div_"), thm_play_id = Bfr_arg__hatr_id.New_id("xowa_file_play_"); + protected final Xoh_arg_img_core arg_img_core; + private Bry_bfr scratch_bfr = Bry_bfr_.Reset(128); + private final Bfr_arg__hatr_id thm_file_id = Bfr_arg__hatr_id.New_id("xowa_file_div_"), thm_play_id = Bfr_arg__hatr_id.New_id("xowa_file_play_"); public Xoh_file_html_fmtr__base() { arg_img_core = New_arg_img_core(); } @@ -33,7 +33,7 @@ public class Xoh_file_html_fmtr__base implements Xoh_file_img_wkr { if (mode_is_hdump) a_href = Bry_.Empty; fmtr_full_media.Bld_bfr_many(tmp_bfr, a_href, a_title, html); } - private final Bry_fmtr fmtr_full_media = Bry_fmtr.new_(String_.Concat_lines_nl_skip_last + private final Bry_fmtr fmtr_full_media = Bry_fmtr.new_(String_.Concat_lines_nl_skip_last ( "~{html}" , "" ), "a_href", "a_xowa_title", "html" @@ -75,7 +75,7 @@ public class Xoh_file_html_fmtr__base implements Xoh_file_img_wkr { thm_file_id.Set(uid); fmtr_thumb_core.Bld_bfr_many(tmp_bfr, thm_file_id, div1_halign, scratch_bfr.To_bry_and_clear(), div2_content); } - private static final byte[] Bry_style_bgn = Bry_.new_a7("style=\"width:"), Bry_style_end = Bry_.new_a7("px;\""); + private static final byte[] Bry_style_bgn = Bry_.new_a7("style=\"width:"), Bry_style_end = Bry_.new_a7("px;\""); protected Bry_fmtr fmtr_thumb_core = Bry_fmtr.new_(String_.Concat_lines_nl_skip_last // REF.MW: Linker.php|makeImageLink2 ( "
" , " " @@ -93,7 +93,7 @@ public class Xoh_file_html_fmtr__base implements Xoh_file_img_wkr { ), "magnify_btn", "caption"); public void Html_thumb_file_image(Bry_bfr tmp_bfr, byte[] thumb_image, byte[] caption, byte[] alt) {fmtr_thumb_file_image.Bld_bfr_many(tmp_bfr, thumb_image, caption, alt);} - private final Bry_fmtr fmtr_thumb_file_image = Bry_fmtr.new_(" ~{thumb_image}~{caption}~{alt}", "thumb_image", "caption", "alt"); + private final Bry_fmtr fmtr_thumb_file_image = Bry_fmtr.new_(" ~{thumb_image}~{caption}~{alt}", "thumb_image", "caption", "alt"); public void Html_thumb_file_audio(Bry_bfr tmp_bfr, byte[] caption, byte[] alt, byte[] play_btn, byte[] audio_info) {fmtr_thumb_file_audio.Bld_bfr_many(tmp_bfr, caption, alt, play_btn, audio_info);} private Bry_fmtr fmtr_thumb_file_audio = Bry_fmtr.new_(String_.Concat_lines_nl_skip_last @@ -102,7 +102,7 @@ public class Xoh_file_html_fmtr__base implements Xoh_file_img_wkr { ), "caption", "alt", "play_btn", "audio_info"); public void Html_thumb_file_video(Bry_bfr tmp_bfr, byte[] play_btn, byte[] video_thumb, byte[] caption, byte[] alt) {fmtr_thumb_file_video.Bld_bfr_many(tmp_bfr, caption, alt, play_btn, video_thumb);} - private final Bry_fmtr fmtr_thumb_file_video = Bry_fmtr.new_(String_.Concat_lines_nl_skip_last + private final Bry_fmtr fmtr_thumb_file_video = Bry_fmtr.new_(String_.Concat_lines_nl_skip_last ( "
" , "
~{video_thumb}" , "
~{play_btn}" @@ -121,7 +121,7 @@ public class Xoh_file_html_fmtr__base implements Xoh_file_img_wkr { @gplx.Virtual public void Html_thumb_part_magnify(Bry_bfr tmp_bfr, int uid, byte[] a_href, byte[] a_title, byte[] img_src) { fmtr_thumb_part_magnify.Bld_bfr_many(tmp_bfr, a_href, a_title); } - private final Bry_fmtr fmtr_thumb_part_magnify = Bry_fmtr.new_(String_.Concat_lines_nl_skip_last + private final Bry_fmtr fmtr_thumb_part_magnify = Bry_fmtr.new_(String_.Concat_lines_nl_skip_last ( "" , "
" ), "a_href", "a_title"); @@ -131,7 +131,7 @@ public class Xoh_file_html_fmtr__base implements Xoh_file_img_wkr { img_src = Bry_.Empty; fmtr_thumb_part_info.Bld_bfr_many(tmp_bfr, a_href, img_src); } - private final Bry_fmtr fmtr_thumb_part_info = Bry_fmtr.new_(String_.Concat_lines_nl_skip_last + private final Bry_fmtr fmtr_thumb_part_info = Bry_fmtr.new_(String_.Concat_lines_nl_skip_last ( "" , "
" ), "a_href", "img_src"); @@ -146,12 +146,12 @@ public class Xoh_file_html_fmtr__base implements Xoh_file_img_wkr { thm_play_id.Set(uid); fmtr_thumb_part_play.Bld_bfr_many(tmp_bfr, thm_play_id, a_width, a_max_width, a_href, a_xowa_title); } - private final Bry_fmtr fmtr_thumb_part_play = Bry_fmtr.new_(String_.Concat_lines_nl_skip_last + private final Bry_fmtr fmtr_thumb_part_play = Bry_fmtr.new_(String_.Concat_lines_nl_skip_last ( "" , "
" ), "id", "a_width", "a_max_width", "a_href", "a_xowa_title"); - public static final Xoh_file_html_fmtr__base Base = new Xoh_file_html_fmtr__base(); + public static final Xoh_file_html_fmtr__base Base = new Xoh_file_html_fmtr__base(); public static byte[] Escape_xowa_title(byte[] lnki_ttl) { return Xoa_ttl.Replace_spaces(gplx.langs.htmls.encoders.Gfo_url_encoder_.Href_quotes.Encode(lnki_ttl)); // must encode xowa_title, particularly quotes; EX: xowa_title="A"b.png"; PAGE:en.w:Earth DATE:2015-11-27 } diff --git a/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/htmls/Xoh_file_html_fmtr__hdump.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/htmls/Xoh_file_html_fmtr__hdump.java index de8fe44b4..98bac105b 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/htmls/Xoh_file_html_fmtr__hdump.java +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/htmls/Xoh_file_html_fmtr__hdump.java @@ -22,7 +22,7 @@ import gplx.xowa.files.*; import gplx.xowa.htmls.core.makes.*; import gplx.xowa.htmls.core.wkrs.imgs.atrs.*; import gplx.xowa.parsers.lnkis.*; public class Xoh_file_html_fmtr__hdump extends Xoh_file_html_fmtr__base { - private final Bry_bfr tmp_bfr = Bry_bfr.reset_(128); + private final Bry_bfr tmp_bfr = Bry_bfr_.Reset(128); @Override public void Html_full_img(Bry_bfr bfr, gplx.xowa.htmls.core.htmls.Xoh_wtr_ctx hctx, Xoae_page page, byte[] src, Xof_file_itm xfer_itm , int uid, byte[] a_href, boolean a_href_is_file, byte a_cls, byte a_rel, byte[] a_title, byte[] a_xowa_title , int img_w, int img_h, byte[] img_src, byte[] img_alt, byte img_cls, byte[] img_cls_other) { @@ -58,12 +58,12 @@ public class Xoh_file_html_fmtr__hdump extends Xoh_file_html_fmtr__base { , "a_href", "a_class", "a_rel", "a_title", "a_xowa_title", "img_alt", "img_xoimg", "data_xowa_title", "data_xowa_image", "img_class" ) ; - private static final Bry_fmt fmtr_anch_n = Bry_fmt.New + private static final Bry_fmt fmtr_anch_n = Bry_fmt.New ( "" , "data_xowa_title", "data_xowa_image", "img_class", "img_alt", "img_xtra_atrs" ); // public override void Html_full_media(Bry_bfr tmp_bfr, byte[] a_href, byte[] a_title, Bfr_arg html) { // fmtr_full_media.Bld_bfr_many(tmp_bfr, a_href, a_title, html); // } - public static final Xoh_file_html_fmtr__hdump Hdump = new Xoh_file_html_fmtr__hdump(); Xoh_file_html_fmtr__hdump() {} + public static final Xoh_file_html_fmtr__hdump Hdump = new Xoh_file_html_fmtr__hdump(); Xoh_file_html_fmtr__hdump() {} } diff --git a/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/htmls/Xoh_file_wtr__basic.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/htmls/Xoh_file_wtr__basic.java index 91a66b014..4855f2ccb 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/htmls/Xoh_file_wtr__basic.java +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/htmls/Xoh_file_wtr__basic.java @@ -22,9 +22,9 @@ import gplx.xowa.langs.*; import gplx.xowa.langs.msgs.*; import gplx.xowa.wikis.nss.*; import gplx.xowa.files.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.lnkis.*; import gplx.xowa.parsers.tmpls.*; public class Xoh_file_wtr__basic { - private final Xowe_wiki wiki; private final Xow_html_mgr html_mgr; private final Xoh_html_wtr html_wtr; private final Bry_bfr_mkr bfr_mkr; private final Bry_bfr scratch_bfr = Bry_bfr.reset_(Io_mgr.Len_kb); - private final Xoh_lnki_text_fmtr media_alt_fmtr, caption_fmtr; - private final Xop_link_parser tmp_link_parser = new Xop_link_parser(); private Xoa_url tmp_url = Xoa_url.blank(); private final Xoh_lnki_title_fmtr anchor_title_wkr = new Xoh_lnki_title_fmtr(); + private final Xowe_wiki wiki; private final Xow_html_mgr html_mgr; private final Xoh_html_wtr html_wtr; private final Bry_bfr_mkr bfr_mkr; private final Bry_bfr scratch_bfr = Bry_bfr_.Reset(Io_mgr.Len_kb); + private final Xoh_lnki_text_fmtr media_alt_fmtr, caption_fmtr; + private final Xop_link_parser tmp_link_parser = new Xop_link_parser(); private Xoa_url tmp_url = Xoa_url.blank(); private final Xoh_lnki_title_fmtr anchor_title_wkr = new Xoh_lnki_title_fmtr(); private Xoh_file_html_fmtr__base html_fmtr = Xoh_file_html_fmtr__base.Base; private Xoae_page page; private boolean cfg_alt_defaults_to_caption; public Xoh_file_wtr__basic(Xowe_wiki wiki, Xow_html_mgr html_mgr, Xoh_html_wtr html_wtr) { @@ -43,7 +43,7 @@ public class Xoh_file_wtr__basic { int div_width = xfer_itm.Html_w(); if (div_width < 1 && wiki.File_mgr().Version_2_y()) // NOTE: html_w is -1 for v2 and missing files; use lnki_w if available; primarily affects audio files with specified width; [[File:A.oga|30px]]; DATE:2014-05-03 div_width = xfer_itm.Lnki_w(); - if (div_width < 1) + if (div_width < 1) // && hctx.Mode_is_hdump() // TODO: should manually insert? div_width = wiki.Html_mgr().Img_thumb_width(); int lnki_halign = lnki.Align_h(); if (lnki_halign == Xop_lnki_align_h_.Null) @@ -55,7 +55,10 @@ public class Xoh_file_wtr__basic { byte[] lnki_ttl = lnki.Ttl().Page_txt(); Xof_ext orig_ext = xfer_itm.Orig_ext(); boolean lnki_is_thumbable = Xop_lnki_type.Id_is_thumbable(lnki.Lnki_type()); - if (lnki_is_thumbable && !xfer_itm.File_exists()) // "non-found" thumbs should default to 220; otherwise large "non-found" thumbs will create large boxes; PAGE:en.w:Wikipedia:Featured_picture_candidates/September_Morn "|1000000x260px"; DATE:2014-09-24 + if ( lnki_is_thumbable + && ( !xfer_itm.File_exists() // "non-found" thumbs should default to 220; otherwise large "non-found" thumbs will create large boxes; PAGE:en.w:Wikipedia:Featured_picture_candidates/September_Morn "|1000000x260px"; DATE:2014-09-24 + && !hctx.Mode_is_hdump()) // ignore for hdump mode b/c all images are "non-found"; DATE:2016-05-30 + ) div_width = Xof_img_size.Thumb_width_img; if ( html_mgr.Img_suppress_missing_src() // option to suppress src when file is missing && !xfer_itm.File_exists() // file is missing; wipe values and wait for "correct" info before regenerating; mostly to handle unknown redirects @@ -235,7 +238,7 @@ public class Xoh_file_wtr__basic { return tmp_bfr.To_bry_and_clear(); } public static final int Play_btn_max_width = 1024; - private static final byte[] + private static final byte[] Div_center_bgn = Bry_.new_a7("
") , Div_float_none = Bry_.new_a7("
") , Div_float_left = Bry_.new_a7("
") diff --git a/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/htmls/Xoh_lnki_title_fmtr_tst.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/htmls/Xoh_lnki_title_fmtr_tst.java index cac67a8ab..f479b3fd4 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/htmls/Xoh_lnki_title_fmtr_tst.java +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/htmls/Xoh_lnki_title_fmtr_tst.java @@ -31,8 +31,8 @@ public class Xoh_lnki_title_fmtr_tst { } } class Xoh_lnki_title_fmtr_fxt { - private final Xop_fxt fxt = new Xop_fxt(); - Bry_bfr bfr = Bry_bfr.new_(); + private final Xop_fxt fxt = new Xop_fxt(); + Bry_bfr bfr = Bry_bfr_.New(); Xoh_lnki_title_fmtr title_wkr = new Xoh_lnki_title_fmtr(); public Xoh_lnki_title_fmtr_fxt Clear() {return this;} public void Test_parse(String raw, String expd) { diff --git a/400_xowa/src/gplx/xowa/htmls/core/wkrs/thms/Xoh_thm_hzip.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/thms/Xoh_thm_hzip.java index c8e108cb4..22ad9c03f 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/wkrs/thms/Xoh_thm_hzip.java +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/thms/Xoh_thm_hzip.java @@ -19,9 +19,9 @@ package gplx.xowa.htmls.core.wkrs.thms; import gplx.*; import gplx.xowa.*; impor import gplx.core.primitives.*; import gplx.core.brys.*; import gplx.core.threads.poolables.*; import gplx.core.encoders.*; import gplx.xowa.htmls.core.hzips.*; import gplx.xowa.htmls.core.wkrs.imgs.*; import gplx.xowa.htmls.core.wkrs.thms.divs.*; public class Xoh_thm_hzip implements Xoh_hzip_wkr, Gfo_poolable_itm { - private final Xoh_img_hzip img_hzip = new Xoh_img_hzip(); - private final Xoh_thm_wtr wtr = new Xoh_thm_wtr(); - private final Bry_obj_ref capt_1 = Bry_obj_ref.New_empty(); + private final Xoh_img_hzip img_hzip = new Xoh_img_hzip(); + private final Xoh_thm_wtr wtr = new Xoh_thm_wtr(); + private final Bry_obj_ref capt_1 = Bry_obj_ref.New_empty(); public int Tid() {return Xoh_hzip_dict_.Tid__thm;} public String Key() {return Xoh_hzip_dict_.Key__thm;} public byte[] Hook() {return hook;} private byte[] hook; @@ -64,12 +64,15 @@ public class Xoh_thm_hzip implements Xoh_hzip_wkr, Gfo_poolable_itm { Xoh_img_data img_data = (Xoh_img_data)hctx.Pool_mgr__data().Get_by_tid(Xoh_hzip_dict_.Tid__img); img_hzip.Decode1(bfr, hdoc_wkr, hctx, hpg, rdr, src, rdr.Pos(), src_end, img_data); img_hzip.Wtr().Init_by_decode(hpg, hctx, src, img_data); + int fsdb_w = img_hzip.Wtr().Fsdb_itm().Html_w(); + if (fsdb_w > 0) // fsdb_w has value; this occurs when itm is found in user's file_cache; NOTE: do not do !div_1_width_exists b/c all thms have div_1_w; PAGE:en.w:Paris; DATE:2016-06-18 + div_1_width = fsdb_w; // override div_1_width, else widths will default to wrong value and not be auto-corrected by post-processing; DATE:2016-06-18 wtr.Write(bfr, hpg, hctx, src, img_data.Img_is_vid(), div_0_align, div_1_width, img_hzip.Wtr(), img_hzip.Anch_href_bry(), capt_1, capt_2_exists, capt_2_is_tidy, capt_2_bry, capt_3_exists, capt_3_bry); img_data.Pool__rls(); } public void Pool__rls () {pool_mgr.Rls_fast(pool_idx);} private Gfo_poolable_mgr pool_mgr; private int pool_idx; public Gfo_poolable_itm Pool__make (Gfo_poolable_mgr mgr, int idx, Object[] args) {Xoh_thm_hzip rv = new Xoh_thm_hzip(); rv.pool_mgr = mgr; rv.pool_idx = idx; rv.hook = (byte[])args[0]; return rv;} - private final Int_flag_bldr flag_bldr = new Int_flag_bldr().Pow_ary_bld_(1, 1, 1, 1, 3); + private final Int_flag_bldr flag_bldr = new Int_flag_bldr().Pow_ary_bld_(1, 1, 1, 1, 3); private static final int // SERIALIZED Flag__capt_3_exists = 0 , Flag__capt_2_is_tidy = 1 diff --git a/400_xowa/src/gplx/xowa/htmls/core/wkrs/thms/Xoh_thm_hzip_tst.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/thms/Xoh_thm_hzip_tst.java index a747e52f9..deec0ace9 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/wkrs/thms/Xoh_thm_hzip_tst.java +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/thms/Xoh_thm_hzip_tst.java @@ -17,6 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.htmls.core.wkrs.thms; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.core.*; import gplx.xowa.htmls.core.wkrs.*; import org.junit.*; import gplx.langs.htmls.*; import gplx.xowa.htmls.core.hzips.*; +import gplx.xowa.files.*; import gplx.xowa.files.caches.*; import gplx.xowa.parsers.lnkis.*; public class Xoh_thm_hzip_tst { private final Xoh_hzip_fxt fxt = new Xoh_hzip_fxt().Init_mode_diff_y_(); @Before public void setup() {fxt.Clear();} @@ -302,6 +303,27 @@ public class Xoh_thm_hzip_tst { , "
" )); } + @Test public void Div_width_uses_img_width() { + Xof_fsdb_itm itm = new Xof_fsdb_itm(); + itm.Init_at_lnki(Xof_exec_tid.Tid_wiki_page, Bry_.new_a7("en.w"), Bry_.new_a7("A.png"), Xop_lnki_type.Id_null, -1, 220, -1, -1, -1, 0); + itm.Init_at_cache(true, 400, 440, Io_url_.mem_fil_("mem/A.png")); + Xou_cache_finder_mem finder = fxt.Init_file_mgr__mem(); + finder.Add(itm); + + fxt.Test__decode("~&3abc~abc~!uA.png~)#Sabc~", String_.Concat_lines_nl_skip_last + ( "
" + , "
abc " + , "
" + , "
" + , "abc
" + , "
" + , "
abc
" + , "
" + , "
" + )); + + fxt.Init_file_mgr__noop(); + } // @Test public void Dump() { // Xowe_wiki en_d = fxt.Init_wiki_alias("wikt", "en.wiktionary.org"); // gplx.xowa.wikis.nss.Xow_ns_mgr ns_mgr = en_d.Ns_mgr(); diff --git a/400_xowa/src/gplx/xowa/htmls/core/wkrs/thms/Xoh_thm_wtr.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/thms/Xoh_thm_wtr.java index 0ce492019..ab9a67b8f 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/wkrs/thms/Xoh_thm_wtr.java +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/thms/Xoh_thm_wtr.java @@ -20,15 +20,15 @@ import gplx.core.primitives.*; import gplx.core.brys.*; import gplx.core.brys.fm import gplx.langs.htmls.*; import gplx.langs.htmls.docs.*; import gplx.xowa.htmls.core.wkrs.bfr_args.*; import gplx.xowa.htmls.core.wkrs.imgs.*; import gplx.xowa.htmls.core.wkrs.imgs.atrs.*; public class Xoh_thm_wtr implements gplx.core.brys.Bfr_arg { - private final Bfr_arg__bry div_0_align = Bfr_arg__bry.New_empty(); - private final Bfr_arg__int div_1_width = new Bfr_arg__int(-1); - private final Bfr_arg__hatr_id div_1_id = Bfr_arg__hatr_id.New_id("xothm_"); - private final Bfr_arg__hatr_bry div_2_href = new Bfr_arg__hatr_bry(Gfh_atr_.Bry__href); - private final Bfr_arg__bry_ary div_2_magnify = new Bfr_arg__bry_ary(); - private final Bfr_arg__bry capt_2 = Bfr_arg__bry.New(Bry_.Empty); - private final Bfr_arg__bry capt_3 = Bfr_arg__bry.New(Bry_.Empty); - private final Bfr_arg__bry enlarge = Bfr_arg__bry.New(Bry_.Empty); - private final Bry_bfr tmp_bfr = Bry_bfr.new_(255); + private final Bfr_arg__bry div_0_align = Bfr_arg__bry.New_empty(); + private final Bfr_arg__int div_1_width = new Bfr_arg__int(-1); + private final Bfr_arg__hatr_id div_1_id = Bfr_arg__hatr_id.New_id("xowa_file_div_"); // NOTE: "xowa_file_div_" used multiple times; DATE:2016-06-13 + private final Bfr_arg__hatr_bry div_2_href = new Bfr_arg__hatr_bry(Gfh_atr_.Bry__href); + private final Bfr_arg__bry_ary div_2_magnify = new Bfr_arg__bry_ary(); + private final Bfr_arg__bry capt_2 = Bfr_arg__bry.New(Bry_.Empty); + private final Bfr_arg__bry capt_3 = Bfr_arg__bry.New(Bry_.Empty); + private final Bfr_arg__bry enlarge = Bfr_arg__bry.New(Bry_.Empty); + private final Bry_bfr tmp_bfr = Bry_bfr_.New_w_size(255); private Bfr_arg div_1_img = Bfr_arg_.Noop, capt_1 = Bfr_arg_.Noop; private byte[] img_is_vid_nl, trailing_space; public Xoh_thm_wtr Clear() { @@ -74,19 +74,19 @@ public class Xoh_thm_wtr implements gplx.core.brys.Bfr_arg { public void Bfr_arg__add(Bry_bfr bfr) { fmtr.Bld_bfr_many(bfr, div_0_align, div_1_id, div_1_width, img_is_vid_nl, div_1_img, trailing_space, div_2_href, div_2_magnify, enlarge, capt_1, capt_2, capt_3); } - private static final byte[] Bry__enlarge = Bry_.new_a7("Enlarge"); - private static final Bry_fmtr fmtr = Bry_fmtr.new_(String_.Concat_lines_nl_skip_last + private static final byte[] Bry__enlarge = Bry_.new_a7("Enlarge"); + private static final Bry_fmtr fmtr = Bry_fmtr.new_(String_.Concat_lines_nl_skip_last ( "
" , "~{img_is_vid_nl}~{div_1_img}~{trailing_space}" // NOTE: trailing space is intentional; matches jtidy behavior , "
" , "
" , "~{capt_1}
~{capt_2}
~{capt_3}
" ), "div_0_align", "div_1_id", "div_1_width", "img_is_vid_nl", "div_1_img", "trailing_space", "div_2_href", "div_2_magnify", "enlarge", "capt_1", "capt_2", "capt_3"); - private static final Bry_fmtr alt_fmtr = Bry_fmtr.new_(String_.Concat_lines_nl_skip_last + private static final Bry_fmtr alt_fmtr = Bry_fmtr.new_(String_.Concat_lines_nl_skip_last ( "" , "
" , "
~{alt}
" , "" ), "alt"); - private static final byte[] bry_div_2_magnify = Bry_.new_a7("bin/any/xowa/file/mediawiki.file/magnify-clip.png"); + private static final byte[] bry_div_2_magnify = Bry_.new_a7("bin/any/xowa/file/mediawiki.file/magnify-clip.png"); } diff --git a/400_xowa/src/gplx/xowa/htmls/core/wkrs/to_delete/Xohd_page_html_mgr__load.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/to_delete/Xohd_page_html_mgr__load.java index f0d39c2a1..7e1d6b658 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/wkrs/to_delete/Xohd_page_html_mgr__load.java +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/to_delete/Xohd_page_html_mgr__load.java @@ -20,7 +20,7 @@ along with this program. If not, see . // using gplx.xowa.wikis.dbs; using gplx.xowa.wikis.pages; using gplx.xowa.htmls.core.makes.imgs; using gplx.xowa.wikis.pages.skins; // using gplx.xowa.wikis.data; using gplx.xowa.wikis.data.tbls; using gplx.xowa.guis; // public class Xohd_page_html_mgr__load { -// private final Bry_rdr_old rdr = new Bry_rdr_old(); private final List_adp rows = List_adp_.new_(), imgs = List_adp_.new_(); +// private final Bry_rdr_old rdr = new Bry_rdr_old(); private final List_adp rows = List_adp_.New(), imgs = List_adp_.New(); // public void Load_page(Xow_wiki wiki, Xoh_page hpg, Xowd_html_tbl tbl, int page_id, Xoa_ttl page_ttl) { // Xoa_app_.Usr_dlg().Plog_many("", "", "hdump.load.text: ttl=~{0}", page_ttl.Full_db_as_str()); // tbl.Select_by_page(rows, page_id); @@ -73,14 +73,14 @@ along with this program. If not, see . // private void Load_data_redlink(Xoh_page hpg) { // Ordered_hash redlink_hash = hpg.Redlink_uids(); // while (!rdr.Pos_is_eos()) { -// Int_obj_ref redlink_uid = Int_obj_ref.new_(rdr.Read_int_to_pipe()); +// Int_obj_ref redlink_uid = Int_obj_ref.New(rdr.Read_int_to_pipe()); // redlink_hash.Add(redlink_uid, redlink_uid); // } // } // private void Load_data_gallery(Xoh_page hpg) { // int uid = rdr.Read_int_to_pipe(); // int box_max = rdr.Read_int_to_pipe(); -// hpg.Gallery_itms().Add_if_dupe_use_nth(uid, new Xohd_img_itm__gallery_mgr(uid, box_max)); // TODO: temporarily added b/c last build did not add gallery uid correctly +// hpg.Gallery_itms().Add_if_dupe_use_nth(uid, new Xohd_img_itm__gallery_mgr(uid, box_max)); // TODO_OLD: temporarily added b/c last build did not add gallery uid correctly // } // } //} diff --git a/400_xowa/src/gplx/xowa/htmls/core/wkrs/xndes/atrs/Xohz_atr_regy.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/xndes/atrs/Xohz_atr_regy.java index 15f80d2bf..9d474d1a7 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/wkrs/xndes/atrs/Xohz_atr_regy.java +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/xndes/atrs/Xohz_atr_regy.java @@ -17,9 +17,9 @@ along with this program. If not, see . */ package gplx.xowa.htmls.core.wkrs.xndes.atrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.core.*; import gplx.xowa.htmls.core.wkrs.*; import gplx.xowa.htmls.core.wkrs.xndes.*; public class Xohz_atr_regy { - private final Hash_adp_bry itm_regy = Hash_adp_bry.cs(); - private final Hash_adp_bry grp_regy = Hash_adp_bry.cs(); - private final List_adp tmp_list = List_adp_.new_(); + private final Hash_adp_bry itm_regy = Hash_adp_bry.cs(); + private final Hash_adp_bry grp_regy = Hash_adp_bry.cs(); + private final List_adp tmp_list = List_adp_.New(); public Xohz_atr_regy Grps__add(byte[] grp_key, byte[]... sub_keys) { int sub_keys_len = sub_keys.length; for (int i = 0; i < sub_keys_len; ++i) { @@ -59,5 +59,5 @@ public class Xohz_atr_regy { } class Xohz_atr_grp { public Xohz_atr_grp(byte[][] subs) {this.subs = subs;} - public byte[][] Subs() {return subs;} private final byte[][] subs; + public byte[][] Subs() {return subs;} private final byte[][] subs; } diff --git a/400_xowa/src/gplx/xowa/htmls/core/wkrs/xndes/dicts/Xoh_xnde_dict_grp.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/xndes/dicts/Xoh_xnde_dict_grp.java index ba933972c..5ca7020cd 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/wkrs/xndes/dicts/Xoh_xnde_dict_grp.java +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/xndes/dicts/Xoh_xnde_dict_grp.java @@ -18,10 +18,10 @@ along with this program. If not, see . package gplx.xowa.htmls.core.wkrs.xndes.dicts; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.core.*; import gplx.xowa.htmls.core.wkrs.*; import gplx.xowa.htmls.core.wkrs.xndes.*; import gplx.core.brys.*; public class Xoh_xnde_dict_grp { - private final int id_len; + private final int id_len; private int id_next = -1; - private final Hash_adp_bry hash = Hash_adp_bry.cs(); - private final List_adp list = List_adp_.new_(); + private final Hash_adp_bry hash = Hash_adp_bry.cs(); + private final List_adp list = List_adp_.New(); public Xoh_xnde_dict_grp(int id_len) {this.id_len = id_len;} public void Clear() { id_next = -1; @@ -68,5 +68,5 @@ public class Xoh_xnde_dict_grp { list.Add(rv); return rv; } - public static final byte[] Bry__stop = Bry_.New_by_ints(255, 0); + public static final byte[] Bry__stop = Bry_.New_by_ints(255, 0); } diff --git a/400_xowa/src/gplx/xowa/htmls/core/wkrs/xndes/styles/Hz_atr_itm.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/xndes/styles/Hz_atr_itm.java index 2aeae4256..0ec4d4f89 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/wkrs/xndes/styles/Hz_atr_itm.java +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/xndes/styles/Hz_atr_itm.java @@ -66,7 +66,7 @@ import gplx.xowa.htmls.core.hzips.*; // } // } // class Hz_regy { -// private final Ordered_hash tag_hash = Ordered_hash_.New(); +// private final Ordered_hash tag_hash = Ordered_hash_.New(); // public Hz_tag_itm Tags__get_or_new(int name_id) { // return null; // } @@ -125,7 +125,7 @@ import gplx.xowa.htmls.core.hzips.*; // } // } // class Hz_tag_hzip { -// private static final byte[] Hook_tag = Bry_.new_a7("~z"); +// private static final byte[] Hook_tag = Bry_.new_a7("~z"); // public void Encode(Bry_bfr bfr, Hz_regy regy, Gfh_tag htag) { // Hz_tag_itm ztag = regy.Tags__get_or_new(htag.Name_id()); // @@ -155,7 +155,7 @@ import gplx.xowa.htmls.core.hzips.*; // public boolean Indexable() {return indexable;} private boolean indexable; // public Xohz_style_itm[] Atrs() {if (atr_ary_is_dirty) atr_ary = (Xohz_style_itm[])atr_list.To_ary(typeof(Xohz_style_itm)); return atr_ary;} private Xohz_style_itm[] atr_ary; private boolean atr_ary_is_dirty = false; // private void Add(byte[] text) { -// if (atr_list == null) atr_list = List_adp_.new_(); +// if (atr_list == null) atr_list = List_adp_.New(); // atr_list.Add(new Xohz_style_itm(atr_list.Count(), text, Bool_.Y, Bool_.Y)); // } // } @@ -170,7 +170,7 @@ import gplx.xowa.htmls.core.hzips.*; // public boolean Indexable() {return indexable;} private boolean indexable; // public Xohz_style_val[] Itms() {if (ary_is_dirty) ary = (Xohz_style_val[])list.To_ary(typeof(Xohz_style_val)); return ary;} private Xohz_style_val[] ary; private boolean ary_is_dirty = false; // private void Itms__add(byte[] key) { -// if (list == null) list = List_adp_.new_(); +// if (list == null) list = List_adp_.New(); // ary_is_dirty = true; // list.Add(new Xohz_style_val(list.Count(), key, Bool_.Y)); // } @@ -182,7 +182,7 @@ import gplx.xowa.htmls.core.hzips.*; // public Xohz_style_val(int uid, byte[] txt, boolean scope_is_doc) { // this.uid = uid; this.txt = txt; this.scope_is_doc = scope_is_doc; // } -// public int Uid() {return uid;} private final int uid; -// public byte[] Txt() {return txt;} private final byte[] txt; +// public int Uid() {return uid;} private final int uid; +// public byte[] Txt() {return txt;} private final byte[] txt; // public boolean Scope_is_doc() {return scope_is_doc;} private boolean scope_is_doc; // } diff --git a/400_xowa/src/gplx/xowa/htmls/core/wkrs/xndes/tags/Xohz_tag.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/xndes/tags/Xohz_tag.java index 7b7824d98..7c6001c80 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/wkrs/xndes/tags/Xohz_tag.java +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/xndes/tags/Xohz_tag.java @@ -20,10 +20,10 @@ import gplx.core.brys.*; import gplx.langs.htmls.*; import gplx.langs.htmls.docs.*; import gplx.xowa.htmls.core.wkrs.xndes.atrs.*; public class Xohz_tag { - private final byte[] key; private final int uid; - private final Xohz_atr_itm[] zatr_ary; private final int zatr_ary_len; private final Ordered_hash zatr_hash = Ordered_hash_.New_bry(); - private final Int_flag_bldr flag_bldr = new Int_flag_bldr(); private final int flag_len; private int flag__tag_is_inline, flag__unknown_atrs_exist; - private static final List_adp tmp_pow_ary_list = List_adp_.new_(); + private final byte[] key; private final int uid; + private final Xohz_atr_itm[] zatr_ary; private final int zatr_ary_len; private final Ordered_hash zatr_hash = Ordered_hash_.New_bry(); + private final Int_flag_bldr flag_bldr = new Int_flag_bldr(); private final int flag_len; private int flag__tag_is_inline, flag__unknown_atrs_exist; + private static final List_adp tmp_pow_ary_list = List_adp_.New(); public Xohz_tag(int uid, byte[] key, int flag_len, Xohz_atr_itm... zatr_ary) { this.uid = uid; this.key = key; this.flag_len = flag_len; diff --git a/400_xowa/src/gplx/xowa/htmls/core/wkrs/xndes/tags/Xohz_tag_regy.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/xndes/tags/Xohz_tag_regy.java index 912120d2b..1107bbabc 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/wkrs/xndes/tags/Xohz_tag_regy.java +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/xndes/tags/Xohz_tag_regy.java @@ -19,9 +19,9 @@ package gplx.xowa.htmls.core.wkrs.xndes.tags; import gplx.*; import gplx.xowa.*; import gplx.core.primitives.*; import gplx.langs.htmls.*; import gplx.xowa.htmls.core.wkrs.xndes.atrs.*; public class Xohz_tag_regy { - private final Ordered_hash keys = Ordered_hash_.New_bry(); - private final Hash_adp uids = Hash_adp_.new_(); private final Byte_obj_ref uids_ref = Byte_obj_ref.zero_(); - public Xohz_atr_regy Atr_regy() {return atr_regy;} private final Xohz_atr_regy atr_regy = new Xohz_atr_regy(); + private final Ordered_hash keys = Ordered_hash_.New_bry(); + private final Hash_adp uids = Hash_adp_.New(); private final Byte_obj_ref uids_ref = Byte_obj_ref.zero_(); + public Xohz_atr_regy Atr_regy() {return atr_regy;} private final Xohz_atr_regy atr_regy = new Xohz_atr_regy(); public Xohz_tag Get_by_key(byte[] key) {return (Xohz_tag)keys.Get_by(key);} public Xohz_tag Get_by_uid(byte uid) {return (Xohz_tag)uids.Get_by(uids_ref.Val_(uid));} public Xohz_tag_regy Add(int uid, byte[] key, int flag_len, byte[] atr_key) { diff --git a/400_xowa/src/gplx/xowa/htmls/heads/Xoh_head_mgr.java b/400_xowa/src/gplx/xowa/htmls/heads/Xoh_head_mgr.java index 81a2aeaf1..1dff1681a 100644 --- a/400_xowa/src/gplx/xowa/htmls/heads/Xoh_head_mgr.java +++ b/400_xowa/src/gplx/xowa/htmls/heads/Xoh_head_mgr.java @@ -172,7 +172,7 @@ public class Xoh_head_mgr implements gplx.core.brys.Bfr_arg { } } class Xoh_head_wkr { - private final List_adp list = List_adp_.size_(Xoh_head_itm__base.Idx__max); + private final List_adp list = List_adp_.New_w_size(Xoh_head_itm__base.Idx__max); public int Len() {return list.Count();} public void Clear() {list.Clear();} public void Add(Xoh_head_itm__base itm) {list.Add(itm);} diff --git a/400_xowa/src/gplx/xowa/htmls/heads/Xoh_head_mgr_tst.java b/400_xowa/src/gplx/xowa/htmls/heads/Xoh_head_mgr_tst.java index e25771152..49bf4bcd6 100644 --- a/400_xowa/src/gplx/xowa/htmls/heads/Xoh_head_mgr_tst.java +++ b/400_xowa/src/gplx/xowa/htmls/heads/Xoh_head_mgr_tst.java @@ -120,9 +120,9 @@ public class Xoh_head_mgr_tst { } } class Xoh_head_mgr_fxt { - private final Xop_fxt fxt = new Xop_fxt(); + private final Xop_fxt fxt = new Xop_fxt(); private Xoh_head_mgr mgr; - private Bry_bfr bfr = Bry_bfr.reset_(255); + private Bry_bfr bfr = Bry_bfr_.Reset(255); public Xowe_wiki Wiki() {return wiki;} private Xowe_wiki wiki; public Xoh_head_mgr Mgr() {return mgr;} public Xol_lang_itm Make_lang(String key) {return wiki.Appe().Lang_mgr().Get_by_or_new(Bry_.new_a7(key));} diff --git a/400_xowa/src/gplx/xowa/htmls/heads/Xoh_head_wtr_tst.java b/400_xowa/src/gplx/xowa/htmls/heads/Xoh_head_wtr_tst.java index 65923888b..9c5203325 100644 --- a/400_xowa/src/gplx/xowa/htmls/heads/Xoh_head_wtr_tst.java +++ b/400_xowa/src/gplx/xowa/htmls/heads/Xoh_head_wtr_tst.java @@ -44,7 +44,7 @@ public class Xoh_head_wtr_tst { } } class Xoh_head_wtr_fxt { - private Bry_bfr bfr = Bry_bfr.reset_(255); + private Bry_bfr bfr = Bry_bfr_.Reset(255); public Xoh_head_wtr Wtr() {return wtr;} private Xoh_head_wtr wtr = new Xoh_head_wtr(); public void Clear() { wtr.Init(bfr); diff --git a/400_xowa/src/gplx/xowa/htmls/heads/Xow_fragment_mgr.java b/400_xowa/src/gplx/xowa/htmls/heads/Xow_fragment_mgr.java index 67e67cef2..1f786c796 100644 --- a/400_xowa/src/gplx/xowa/htmls/heads/Xow_fragment_mgr.java +++ b/400_xowa/src/gplx/xowa/htmls/heads/Xow_fragment_mgr.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.xowa.htmls.heads; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.core.brys.fmtrs.*; import gplx.xowa.langs.*; import gplx.xowa.langs.msgs.*; import gplx.xowa.langs.numbers.*; -public class Xow_fragment_mgr implements GfoInvkAble { +public class Xow_fragment_mgr implements Gfo_invk { public Xow_fragment_mgr(Xowe_wiki wiki) {this.wiki = wiki;} private Xowe_wiki wiki; public byte[] Html_js_edit_toolbar() {return html_js_edit_toolbar;} private byte[] html_js_edit_toolbar; private Bry_fmtr html_js_edit_toolbar_fmtr = Bry_fmtr.new_(String_.Concat_lines_nl @@ -40,7 +40,7 @@ public class Xow_fragment_mgr implements GfoInvkAble { public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_html_js_edit_toolbar_fmt_)) html_js_edit_toolbar_fmtr.Fmt_(m.ReadBry("v")); else if (ctx.Match(k, Invk_html_js_edit_toolbar)) return html_js_edit_toolbar; - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } public static final String Invk_html_js_edit_toolbar_fmt_ = "html_js_edit_toolbar_fmt_", Invk_html_js_edit_toolbar = "html_js_edit_toolbar"; diff --git a/400_xowa/src/gplx/xowa/htmls/heads/Xow_fragment_mgr_tst.java b/400_xowa/src/gplx/xowa/htmls/heads/Xow_fragment_mgr_tst.java index 5b6d058aa..cf18cdc87 100644 --- a/400_xowa/src/gplx/xowa/htmls/heads/Xow_fragment_mgr_tst.java +++ b/400_xowa/src/gplx/xowa/htmls/heads/Xow_fragment_mgr_tst.java @@ -51,7 +51,7 @@ class Xow_fragment_mgr_fxt { public void Test_fragment(String key, String expd) {Test_fragment(wiki.Lang(), key, expd);} public void Test_fragment(Xol_lang_itm lang, String key, String expd) { wiki.Fragment_mgr().Evt_lang_changed(lang); - byte[] actl = (byte[])GfoInvkAble_.InvkCmd(wiki.Fragment_mgr(), key); + byte[] actl = (byte[])Gfo_invk_.Invk_by_key(wiki.Fragment_mgr(), key); Tfds.Eq_str_lines(expd, String_.new_u8(actl)); } } diff --git a/400_xowa/src/gplx/xowa/htmls/hrefs/Xoh_href_wtr.java b/400_xowa/src/gplx/xowa/htmls/hrefs/Xoh_href_wtr.java index c6efadf46..1db912b1b 100644 --- a/400_xowa/src/gplx/xowa/htmls/hrefs/Xoh_href_wtr.java +++ b/400_xowa/src/gplx/xowa/htmls/hrefs/Xoh_href_wtr.java @@ -20,7 +20,7 @@ import gplx.core.brys.fmtrs.*; import gplx.langs.htmls.encoders.*; import gplx.xowa.htmls.core.htmls.*; import gplx.xowa.wikis.xwikis.*; public class Xoh_href_wtr { - private final Bry_bfr encoder_bfr = Bry_bfr.reset_(255), tmp_bfr = Bry_bfr.reset_(255); + private final Bry_bfr encoder_bfr = Bry_bfr_.Reset(255), tmp_bfr = Bry_bfr_.Reset(255); private final Gfo_url_encoder encoder = Gfo_url_encoder_.Href; public byte[] Build_to_bry(Xow_wiki wiki, Xoa_ttl ttl) { synchronized (tmp_bfr) { diff --git a/400_xowa/src/gplx/xowa/htmls/hrefs/Xoh_href_wtr_tst.java b/400_xowa/src/gplx/xowa/htmls/hrefs/Xoh_href_wtr_tst.java index a14a0cf29..ae7e5f301 100644 --- a/400_xowa/src/gplx/xowa/htmls/hrefs/Xoh_href_wtr_tst.java +++ b/400_xowa/src/gplx/xowa/htmls/hrefs/Xoh_href_wtr_tst.java @@ -19,7 +19,7 @@ package gplx.xowa.htmls.hrefs; import gplx.*; import gplx.xowa.*; import gplx.xo import org.junit.*; import gplx.core.net.*; import gplx.xowa.wikis.nss.*; public class Xoh_href_wtr_tst { - private final Xoh_href_wtr_fxt fxt = new Xoh_href_wtr_fxt(); + private final Xoh_href_wtr_fxt fxt = new Xoh_href_wtr_fxt(); @Test public void Xwiki_enc() {fxt.Test_build("wikt:abc?d" , "/site/en.wiktionary.org/wiki/abc%3Fd");} @Test public void Page_quote() {fxt.Test_build("a\"b\"c" , "/wiki/A%22b%22c");} @Test public void Page() {fxt.Test_build("abc" , "/wiki/Abc");} @@ -35,16 +35,16 @@ public class Xoh_href_wtr_tst { } } class Xoh_href_wtr_fxt { - private final Xowe_wiki wiki; - private final Bry_bfr tmp_bfr = Bry_bfr.reset_(255); - private final Xoh_href_wtr href_wtr = new Xoh_href_wtr(); + private final Xowe_wiki wiki; + private final Bry_bfr tmp_bfr = Bry_bfr_.Reset(255); + private final Xoh_href_wtr href_wtr = new Xoh_href_wtr(); public Xoh_href_wtr_fxt() { this.app = Xoa_app_fxt.Make__app__edit(); this.wiki = Xoa_app_fxt.Make__wiki__edit(app); wiki.Xwiki_mgr().Add_by_csv(Bry_.new_a7("1|wikt|en.wiktionary.org")); app.Usere().Wiki().Xwiki_mgr().Add_by_csv(Bry_.new_a7("1|en.wiktionary.org|en.wiktionary.org")); } - public Xoae_app App() {return app;} private final Xoae_app app; + public Xoae_app App() {return app;} private final Xoae_app app; public Xoh_href_wtr_fxt Prep_wiki_cs(String domain) { Xow_wiki wiki = app.Wiki_mgr().Get_by_or_make_init_n(Bry_.new_u8(domain)); wiki.Ns_mgr().Ns_main().Case_match_(Xow_ns_case_.Tid__all); diff --git a/400_xowa/src/gplx/xowa/htmls/js/Xoh_js_cbk.java b/400_xowa/src/gplx/xowa/htmls/js/Xoh_js_cbk.java index d7df6ea1c..b5664edb3 100644 --- a/400_xowa/src/gplx/xowa/htmls/js/Xoh_js_cbk.java +++ b/400_xowa/src/gplx/xowa/htmls/js/Xoh_js_cbk.java @@ -21,11 +21,11 @@ import gplx.langs.jsons.*; import gplx.xowa.htmls.js.*; import gplx.xowa.guis.views.*; import gplx.xowa.parsers.*; -public class Xoh_js_cbk implements GfoInvkAble { +public class Xoh_js_cbk implements Gfo_invk { private Xoae_app app; private Xog_html_itm html_itm; private Xop_root_tkn root = new Xop_root_tkn(); - private final Bry_bfr bfr = Bry_bfr.reset_(255); + private final Bry_bfr bfr = Bry_bfr_.Reset(255); public Xoh_js_cbk(Xog_html_itm html_itm) {this.html_itm = html_itm; this.app = html_itm.Owner_tab().Tab_mgr().Win().App();} private String Xowa_exec_test(GfoMsg m) { // concat args with pipe; EX: xowa_exec('proc', 'arg0', 'arg1'); -> proc|arg0|arg1 bfr.Clear(); @@ -65,7 +65,7 @@ public class Xoh_js_cbk implements GfoInvkAble { Xowe_wiki wiki = html_itm.Owner_tab().Wiki(); try { Xoa_ttl ttl = Xoa_ttl.parse(wiki, m.Args_getAt(0).Val_to_bry()); - Xoae_page page = wiki.Data_mgr().Get_page(ttl, false); + Xoae_page page = wiki.Data_mgr().Load_page_by_ttl(ttl); return String_.new_u8(page.Data_raw()); } catch (Exception e) {Err_.Noop(e); return null;} } @@ -187,7 +187,7 @@ public class Xoh_js_cbk implements GfoInvkAble { else if (ctx.Match(k, Invk_xowa_exec_test_as_array)) return Xowa_exec_test_as_array(m); else if (ctx.Match(k, Invk_exec_json)) return app.Html__bridge_mgr().Cmd_mgr().Exec(m); else if (ctx.Match(k, Invk_bldr_exec)) return app.Bldr().Exec_json((String)m.ReadValAt(0)); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; } public static final String Invk_parse_to_html = "parse_to_html", Invk_wikidata_get_label = "wikidata_get_label", Invk_get_page = "get_page", Invk_cmd = "cmd", Invk_scripts_exec = "scripts_exec" , Invk_get_search_suggestions = "get_search_suggestions", Invk_get_titles_meta = "get_titles_meta", Invk_get_titles_exists = "get_titles_exists", Invk_get_current_url = "get_current_url" diff --git a/400_xowa/src/gplx/xowa/htmls/js/Xoh_js_cbk_tst.java b/400_xowa/src/gplx/xowa/htmls/js/Xoh_js_cbk_tst.java index 9d8019044..f4e0e8e54 100644 --- a/400_xowa/src/gplx/xowa/htmls/js/Xoh_js_cbk_tst.java +++ b/400_xowa/src/gplx/xowa/htmls/js/Xoh_js_cbk_tst.java @@ -40,7 +40,7 @@ class Xoh_js_cbk_fxt { tab.Page_(page); Xoh_js_cbk exec = tab.Html_itm().Js_cbk(); GfoMsg msg = GfoMsg_.new_cast_(Xoh_js_cbk.Invk_get_titles_meta).Add("ttl", ttl); - String[][] actl = (String[][])GfoInvkAble_.InvkCmd_msg(exec, Xoh_js_cbk.Invk_get_titles_meta, msg); + String[][] actl = (String[][])Gfo_invk_.Invk_by_msg(exec, Xoh_js_cbk.Invk_get_titles_meta, msg); Tfds.Eq_ary_str(expd, actl[0]); } } diff --git a/400_xowa/src/gplx/xowa/htmls/js/Xoh_js_cbk_wdata_labels_tst.java b/400_xowa/src/gplx/xowa/htmls/js/Xoh_js_cbk_wdata_labels_tst.java index fce0e75cd..719a833c9 100644 --- a/400_xowa/src/gplx/xowa/htmls/js/Xoh_js_cbk_wdata_labels_tst.java +++ b/400_xowa/src/gplx/xowa/htmls/js/Xoh_js_cbk_wdata_labels_tst.java @@ -57,7 +57,7 @@ public class Xoh_js_cbk_wdata_labels_tst { int args_len = args.length; for (int i = 0; i < args_len; i++) msg.Add("v", args[i]); - String[] actl = (String[])GfoInvkAble_.InvkCmd_msg(exec, Xoh_js_cbk.Invk_wikidata_get_label, msg); + String[] actl = (String[])Gfo_invk_.Invk_by_msg(exec, Xoh_js_cbk.Invk_wikidata_get_label, msg); Tfds.Eq_ary_str(expd, actl); } } diff --git a/400_xowa/src/gplx/xowa/htmls/modules/popups/Xow_popup_mgr.java b/400_xowa/src/gplx/xowa/htmls/modules/popups/Xow_popup_mgr.java index e49aa3761..fabcb7949 100644 --- a/400_xowa/src/gplx/xowa/htmls/modules/popups/Xow_popup_mgr.java +++ b/400_xowa/src/gplx/xowa/htmls/modules/popups/Xow_popup_mgr.java @@ -23,16 +23,16 @@ import gplx.xowa.guis.views.*; import gplx.xowa.htmls.hrefs.*; import gplx.xowa.specials.*; import gplx.xowa.apps.apis.xowa.html.modules.*; -public class Xow_popup_mgr implements GfoInvkAble, GfoEvObj { +public class Xow_popup_mgr implements Gfo_invk, Gfo_evt_itm { private Xoae_app app; private Xowe_wiki wiki; private Js_wtr js_wtr = new Js_wtr(); private int show_init_word_count = Xoapi_popups.Dflt_show_init_word_count, show_more_word_count = Xoapi_popups.Dflt_show_more_word_count; private Xoa_url tmp_url = Xoa_url.blank(); - private static final Object thread_lock = new Object(); private Xow_popup_itm async_itm; private GfoInvkAble async_cmd_show; private int async_id_next = 1; + private static final Object thread_lock = new Object(); private Xow_popup_itm async_itm; private Gfo_invk async_cmd_show; private int async_id_next = 1; public Xow_popup_mgr(Xowe_wiki wiki) { this.wiki = wiki; this.app = wiki.Appe(); - ev_mgr = GfoEvMgr.new_(this); + ev_mgr = new Gfo_evt_mgr(this); } - public GfoEvMgr EvMgr() {return ev_mgr;} private GfoEvMgr ev_mgr; + public Gfo_evt_mgr Evt_mgr() {return ev_mgr;} private Gfo_evt_mgr ev_mgr; public Xow_popup_parser Parser() {return parser;} private Xow_popup_parser parser = new Xow_popup_parser(); public void Init_by_wiki(Xowe_wiki wiki) { parser.Init_by_wiki(wiki); @@ -54,7 +54,7 @@ public class Xow_popup_mgr implements GfoInvkAble, GfoEvObj { parser.Html_mkr().Fmtr_viewed().Fmt_(api_popups.Html_fmtr_viewed()); parser.Html_mkr().Fmtr_wiki().Fmt_(api_popups.Html_fmtr_wiki()); parser.Html_mkr().Fmtr_next_sect().Fmt_(api_popups.Html_fmtr_next_sect_fmt()); - GfoEvMgr_.SubSame_many(api_popups, this + Gfo_evt_mgr_.Sub_same_many(api_popups, this , Xoapi_popups.Evt_show_init_word_count_changed, Xoapi_popups.Evt_show_more_word_count_changed , Xoapi_popups.Evt_show_all_if_less_than_changed , Xoapi_popups.Evt_scan_len_changed, Xoapi_popups.Evt_scan_max_changed , Xoapi_popups.Evt_read_til_stop_fwd_changed, Xoapi_popups.Evt_read_til_stop_bwd_changed, Xoapi_popups.Evt_stop_if_hdr_after_changed @@ -89,7 +89,7 @@ public class Xow_popup_mgr implements GfoInvkAble, GfoEvObj { if (async_itm != null) async_itm.Cancel(); async_itm = new Xow_popup_itm(++async_id_next, href, Bry_.Empty, show_init_word_count); String id_str = async_itm.Popup_id(); - Thread_adp_.invk_(id_str, this, Invk_show_popup_async).Start(); + Thread_adp_.Start_by_key(id_str, this, Invk_show_popup_async); return id_str; } } @@ -128,7 +128,7 @@ public class Xow_popup_mgr implements GfoInvkAble, GfoEvObj { case Xow_ns_.Tid__file: return Bry_.Empty; // do not popup for media or file case Xow_ns_.Tid__special: - if (!Xows_special_meta_.Itm__popup_history.Match_ttl(popup_ttl)) return Bry_.Empty; // do not popup for special, unless popupHistory; DATE:2015-04-20 + if (!Xow_special_meta_.Itm__popup_history.Match_ttl(popup_ttl)) return Bry_.Empty; // do not popup for special, unless popupHistory; DATE:2015-04-20 break; } if (ns_allowed_regy.Count() > 0 && !ns_allowed_regy.Has(ns_allowed_regy_key.Val_(popup_ttl.Ns().Id()))) return Bry_.Empty; @@ -137,7 +137,7 @@ public class Xow_popup_mgr implements GfoInvkAble, GfoEvObj { while (gplx.xowa.guis.views.Load_page_wkr.Running() && ++wait_count < 100) { Thread_adp_.Sleep(10); } - Xoae_page popup_page = popup_wiki.Data_mgr().Get_page(popup_ttl, false); + Xoae_page popup_page = popup_wiki.Data_mgr().Load_page_by_ttl(popup_ttl); byte[] rv = popup_wiki.Html_mgr().Head_mgr().Popup_mgr().Parser().Parse(wiki, popup_page, cur_page.Tab_data().Tab(), itm); Update_progress_bar(app, cur_wiki, cur_page, itm); return rv; @@ -170,7 +170,7 @@ public class Xow_popup_mgr implements GfoInvkAble, GfoEvObj { } if (async_cmd_show == null) async_cmd_show = app.Gui_mgr().Kit().New_cmd_sync(this); - GfoInvkAble_.InvkCmd(async_cmd_show, Invk_show_popup); + Gfo_invk_.Invk_by_key(async_cmd_show, Invk_show_popup); } catch(Exception e) { app.Usr_dlg().Warn_many("", "", "failed to get popup: href=~{0} err=~{1}", async_itm.Page_href(), Err_.Message_gplx_full(e)); @@ -190,7 +190,7 @@ public class Xow_popup_mgr implements GfoInvkAble, GfoEvObj { } } public static Int_obj_ref[] Ns_allowed_parse(Xowe_wiki wiki, byte[] raw) { - List_adp rv = List_adp_.new_(); + List_adp rv = List_adp_.New(); byte[][] ary = Bry_split_.Split(raw, Byte_ascii.Pipe); int ary_len = ary.length; Xow_ns_mgr ns_mgr = wiki.Ns_mgr(); @@ -205,11 +205,11 @@ public class Xow_popup_mgr implements GfoInvkAble, GfoEvObj { wiki.Appe().Usr_dlg().Log_many("", "", "popup.ns_allowed: ns not in wiki: ns=~{0} wiki=~{1}", String_.new_u8(bry), wiki.Domain_str()); // ns may not be in wiki; EX: Portal and www.wikidata.org continue; } - Int_obj_ref ns_id_itm = Int_obj_ref.new_(ns.Id()); + Int_obj_ref ns_id_itm = Int_obj_ref.New(ns.Id()); rv.Add(ns_id_itm); } return (Int_obj_ref[])rv.To_ary(Int_obj_ref.class); - } private Hash_adp ns_allowed_regy = Hash_adp_.new_(); private Int_obj_ref ns_allowed_regy_key = Int_obj_ref.zero_(); + } private Hash_adp ns_allowed_regy = Hash_adp_.New(); private Int_obj_ref ns_allowed_regy_key = Int_obj_ref.New_zero(); private Xoae_page Cur_page() {return app.Gui_mgr().Browser_win().Active_page();} private Xowe_wiki Cur_wiki() {return app.Gui_mgr().Browser_win().Active_tab().Wiki();} private Xow_popup_itm Itms_get_or_null(Xoae_page page, String popup_id) {return (Xow_popup_itm)page.Popup_mgr().Itms().Get_by(popup_id);} @@ -232,15 +232,15 @@ public class Xow_popup_mgr implements GfoInvkAble, GfoEvObj { else if (ctx.Match(k, Xoapi_popups.Evt_html_fmtr_viewed_changed)) parser.Html_mkr().Fmtr_viewed().Fmt_(m.ReadBry("v")); else if (ctx.Match(k, Xoapi_popups.Evt_html_fmtr_wiki_changed)) parser.Html_mkr().Fmtr_wiki().Fmt_(m.ReadBry("v")); else if (ctx.Match(k, Xoapi_popups.Evt_html_fmtr_next_sect_changed)) parser.Html_mkr().Fmtr_next_sect().Fmt_(m.ReadBry("v")); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } public static final String Invk_show_popup_async = "show_popup_async", Invk_show_popup = "show_popup"; - private static final String + private static final String Cbk_xowa_popups_show_update = "xowa_popups_show_update" , Cbk_xowa_popups_show_create = "xowa_popups_show_create" ; - private static final byte[] + private static final byte[] Mode_show_more = Bry_.new_a7("more") , Mode_show_all = Bry_.new_a7("all") ; @@ -258,17 +258,17 @@ class Xow_popup_mgr_ { class Load_popup_wkr implements Gfo_thread_wkr { private Xow_popup_itm itm; private Xoae_page cur_page; private Xoa_url tmp_url; private Hash_adp ns_allowed_regy; - private Int_obj_ref ns_allowed_regy_key = Int_obj_ref.zero_(); + private Int_obj_ref ns_allowed_regy_key = Int_obj_ref.New_zero(); public Load_popup_wkr(Xowe_wiki wiki, Xoae_page cur_page, Xow_popup_itm itm, Xoa_url tmp_url, Hash_adp ns_allowed_regy, Int_obj_ref ns_allowed_regy_key) { this.wiki = wiki; this.cur_page = cur_page; this.itm = itm; this.tmp_url = tmp_url; this.ns_allowed_regy = ns_allowed_regy; this.ns_allowed_regy_key = ns_allowed_regy_key; } - public String Name() {return "xowa.load_popup_wkr";} - public boolean Resume() {return false;} + public String Thread__name() {return "xowa.load_popup_wkr";} + public boolean Thread__resume() {return false;} public Xowe_wiki Wiki() {return wiki;} private Xowe_wiki wiki; public byte[] Rslt_bry() {return rslt_bry;} private byte[] rslt_bry; public boolean Rslt_done() {return rslt_done;} private boolean rslt_done; public void Rslt_(byte[] bry) {this.rslt_done = true; rslt_bry = bry;} - public void Exec() { + public void Thread__exec() { Xoae_app app = wiki.Appe(); try { if (itm.Canceled()) return; @@ -283,12 +283,12 @@ class Load_popup_wkr implements Gfo_thread_wkr { case Xow_ns_.Tid__file: return; // do not popup for media or file case Xow_ns_.Tid__special: - if (!Xows_special_meta_.Itm__popup_history.Match_ttl(popup_ttl)) return; // do not popup for special, unless popupHistory; DATE:2015-04-20 + if (!Xow_special_meta_.Itm__popup_history.Match_ttl(popup_ttl)) return; // do not popup for special, unless popupHistory; DATE:2015-04-20 break; } if (ns_allowed_regy.Count() > 0 && !ns_allowed_regy.Has(ns_allowed_regy_key.Val_(popup_ttl.Ns().Id()))) return; itm.Init(popup_wiki.Domain_bry(), popup_ttl); - Xoae_page popup_page = popup_wiki.Data_mgr().Get_page(popup_ttl, false); + Xoae_page popup_page = popup_wiki.Data_mgr().Load_page_by_ttl(popup_ttl); byte[] rv = popup_wiki.Html_mgr().Head_mgr().Popup_mgr().Parser().Parse(wiki, popup_page, cur_page.Tab_data().Tab(), itm); Xow_popup_mgr.Update_progress_bar(app, wiki, cur_page, itm); Rslt_(rv); diff --git a/400_xowa/src/gplx/xowa/htmls/modules/popups/Xow_popup_parser_data.java b/400_xowa/src/gplx/xowa/htmls/modules/popups/Xow_popup_parser_data.java index 0240f7e85..813e0b8c9 100644 --- a/400_xowa/src/gplx/xowa/htmls/modules/popups/Xow_popup_parser_data.java +++ b/400_xowa/src/gplx/xowa/htmls/modules/popups/Xow_popup_parser_data.java @@ -24,8 +24,8 @@ public class Xow_popup_parser_data { public int Words_needed_max() {return words_needed_max;} private int words_needed_max; private int words_needed_min; public int Words_found() {return words_found;} private int words_found; - public Bry_bfr Wrdx_bfr() {return wrdx_bfr;} private Bry_bfr wrdx_bfr = Bry_bfr.reset_(255); - public Xow_popup_word[] Words_found_ary() {return (Xow_popup_word[])words_found_list.To_ary_and_clear(Xow_popup_word.class);} private List_adp words_found_list = List_adp_.new_(); + public Bry_bfr Wrdx_bfr() {return wrdx_bfr;} private Bry_bfr wrdx_bfr = Bry_bfr_.Reset(255); + public Xow_popup_word[] Words_found_ary() {return (Xow_popup_word[])words_found_list.To_ary_and_clear(Xow_popup_word.class);} private List_adp words_found_list = List_adp_.New(); public int Tmpl_loop_count() {return tmpl_loop_count;} private int tmpl_loop_count; public void Tmpl_loop_count_add() {++tmpl_loop_count;} private Xow_popup_itm popup_itm; diff --git a/400_xowa/src/gplx/xowa/htmls/modules/popups/Xow_popup_parser_tst.java b/400_xowa/src/gplx/xowa/htmls/modules/popups/Xow_popup_parser_tst.java index f77002325..df69307c9 100644 --- a/400_xowa/src/gplx/xowa/htmls/modules/popups/Xow_popup_parser_tst.java +++ b/400_xowa/src/gplx/xowa/htmls/modules/popups/Xow_popup_parser_tst.java @@ -493,9 +493,16 @@ class Xop_popup_parser_fxt { public Xop_popup_parser_fxt Expd_tmpl_loop_count(int expd) {Tfds.Eq(expd, parser.Data().Tmpl_loop_count()); return this;} public Xop_popup_parser_fxt Test_ns_allowed(String raw, int... expd) { Int_obj_ref[] ids = Xow_popup_mgr.Ns_allowed_parse(wiki, Bry_.new_u8(raw)); - Tfds.Eq_ary(expd, Int_obj_ref.Ary_xto_int_ary(ids)); + Tfds.Eq_ary(expd, To_int_ary(ids)); return this; } + private static int[] To_int_ary(Int_obj_ref[] ary) { + int len = ary.length; + int[] rv = new int[len]; + for (int i = 0; i < len; ++i) + rv[i] = ary[i].Val(); + return rv; + } public void Test_parse(String raw, String expd) {Test_parse(raw, "Test_1", expd);} public void Test_parse(String raw, String ttl, String expd) { Xoae_page page = Xoae_page.New_edit(wiki, Xoa_ttl.parse(wiki, Bry_.new_a7(ttl))); @@ -506,7 +513,7 @@ class Xop_popup_parser_fxt { Tfds.Eq_str_lines(expd, String_.new_u8(actl)); } public void Test_Assert_at_end(String raw, String expd) { - if (test_bfr == null) test_bfr = Bry_bfr.new_(); + if (test_bfr == null) test_bfr = Bry_bfr_.New(); test_bfr.Clear().Add_str_u8(raw); Bry_bfr_.Assert_at_end(test_bfr, Byte_ascii.Nl); Tfds.Eq(expd, test_bfr.To_str_and_clear()); diff --git a/400_xowa/src/gplx/xowa/htmls/modules/popups/keeplists/Xop_keeplist_wiki.java b/400_xowa/src/gplx/xowa/htmls/modules/popups/keeplists/Xop_keeplist_wiki.java index 02ce3c56f..fe51ebbda 100644 --- a/400_xowa/src/gplx/xowa/htmls/modules/popups/keeplists/Xop_keeplist_wiki.java +++ b/400_xowa/src/gplx/xowa/htmls/modules/popups/keeplists/Xop_keeplist_wiki.java @@ -24,7 +24,7 @@ public class Xop_keeplist_wiki { public boolean Enabled() {return enabled;} public void Enabled_(boolean v) {enabled = v;} private boolean enabled = false; // NOTE: default to false, b/c wikis that are not listed in cfg will not call Rules_seal public Xop_keeplist_rule[] Rules() {return rules;} private Xop_keeplist_rule[] rules; private int rules_len; public Xop_keeplist_wiki_srl Srl() {return srl;} private Xop_keeplist_wiki_srl srl; - public void Rules_add(Xop_keeplist_rule rule) {rules_list.Add(rule);} private List_adp rules_list = List_adp_.new_(); + public void Rules_add(Xop_keeplist_rule rule) {rules_list.Add(rule);} private List_adp rules_list = List_adp_.New(); public void Rules_seal() { this.rules = (Xop_keeplist_rule[])rules_list.To_ary_and_clear(Xop_keeplist_rule.class); this.rules_len = rules.length; diff --git a/400_xowa/src/gplx/xowa/htmls/ns_files/Xoh_ns_file_page_mgr.java b/400_xowa/src/gplx/xowa/htmls/ns_files/Xoh_ns_file_page_mgr.java index a646e29a6..eb2479467 100644 --- a/400_xowa/src/gplx/xowa/htmls/ns_files/Xoh_ns_file_page_mgr.java +++ b/400_xowa/src/gplx/xowa/htmls/ns_files/Xoh_ns_file_page_mgr.java @@ -22,7 +22,7 @@ import gplx.xowa.files.*; import gplx.xowa.files.repos.*; import gplx.xowa.files import gplx.xowa.parsers.*; import gplx.xowa.parsers.lnkis.*; public class Xoh_ns_file_page_mgr implements gplx.core.brys.Bfr_arg { private Xoa_ttl ttl; private Xoh_file_page_wtr html_wtr; private final Xoh_file_page__other_resolutions alt_wtr = new Xoh_file_page__other_resolutions(); - private final Bry_bfr tmp_bfr = Bry_bfr.new_(); + private final Bry_bfr tmp_bfr = Bry_bfr_.New(); private Xow_repo_mgr repo_mgr; private Xof_file_itm xfer_itm; private byte[] file_size_bry; private byte[] play_btn_icon; private final Xof_img_size img_size = new Xof_img_size(); private final Xof_url_bldr url_bldr = Xof_url_bldr.new_v2(); diff --git a/400_xowa/src/gplx/xowa/htmls/ns_files/Xoh_ns_file_page_mgr_tst.java b/400_xowa/src/gplx/xowa/htmls/ns_files/Xoh_ns_file_page_mgr_tst.java index da5b29cd2..da2e63bd1 100644 --- a/400_xowa/src/gplx/xowa/htmls/ns_files/Xoh_ns_file_page_mgr_tst.java +++ b/400_xowa/src/gplx/xowa/htmls/ns_files/Xoh_ns_file_page_mgr_tst.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.xowa.htmls.ns_files; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import org.junit.*; import gplx.xowa.files.*; public class Xoh_ns_file_page_mgr_tst { - private final Xoh_ns_file_page_mgr_fxt fxt = new Xoh_ns_file_page_mgr_fxt(); + private final Xoh_ns_file_page_mgr_fxt fxt = new Xoh_ns_file_page_mgr_fxt(); @Before public void init() {fxt.Reset();} @Test public void Image() { fxt.Ttl_str_("Test.png").Html_src_("mem/file/cur.png").Html_orig_src_("mem/file/orig.png").Html_w_(300).Html_h_(200).Html_file_size_(100) @@ -78,9 +78,9 @@ public class Xoh_ns_file_page_mgr_tst { } } class Xoh_ns_file_page_mgr_fxt { - private final Xoh_ns_file_page_mgr wkr = new Xoh_ns_file_page_mgr(); + private final Xoh_ns_file_page_mgr wkr = new Xoh_ns_file_page_mgr(); private Xoae_app app; private Xowe_wiki wiki; private Xoh_file_page_wtr opt; - private final Xof_file_itm file = new Xof_fsdb_itm(); private final Bry_bfr bfr = Bry_bfr.new_(); + private final Xof_file_itm file = new Xof_fsdb_itm(); private final Bry_bfr bfr = Bry_bfr_.New(); public Xoh_ns_file_page_mgr_fxt Ttl_str_(String v) {this.ttl_str = v; return this;} private String ttl_str; public Xoh_ns_file_page_mgr_fxt Html_src_(String v) {this.html_src = v; return this;} private String html_src; public Xoh_ns_file_page_mgr_fxt Html_orig_src_(String v) {this.html_orig_src = v; return this;} private String html_orig_src; @@ -102,8 +102,8 @@ class Xoh_ns_file_page_mgr_fxt { file.Init_at_hdoc(0, Xof_html_elem.Tid_img); wkr.Bld_html(wiki, bfr, file, ttl, opt, Bry_.To_a7_bry(html_file_size, 0), play_btn_icon); // TEST: must pass in elem_val b/c test only uses 2nd Bld_html while app uses 1st Tfds.Eq_str_lines(expd, bfr.To_str_and_clear()); - } static final byte[] play_btn_icon = Bry_.new_a7("file:///mem/xowa/bin/any/xowa/file/mediawiki.file/play.png"); - public static final String Hdr = String_.Concat_lines_nl_skip_last + } static final byte[] play_btn_icon = Bry_.new_a7("file:///mem/xowa/bin/any/xowa/file/mediawiki.file/play.png"); + public static final String Hdr = String_.Concat_lines_nl_skip_last ( "
    " , "
  • " , " " diff --git a/400_xowa/src/gplx/xowa/htmls/portal/Xoa_available_wikis_mgr.java b/400_xowa/src/gplx/xowa/htmls/portal/Xoa_available_wikis_mgr.java index f79469709..f1b1957a0 100644 --- a/400_xowa/src/gplx/xowa/htmls/portal/Xoa_available_wikis_mgr.java +++ b/400_xowa/src/gplx/xowa/htmls/portal/Xoa_available_wikis_mgr.java @@ -19,13 +19,13 @@ package gplx.xowa.htmls.portal; import gplx.*; import gplx.xowa.*; import gplx.x import gplx.core.brys.fmtrs.*; import gplx.xowa.wikis.domains.*; import gplx.xowa.wikis.xwikis.*; import gplx.xowa.files.xfers.*; -public class Xoa_available_wikis_mgr implements GfoInvkAble { +public class Xoa_available_wikis_mgr implements Gfo_invk { private Bry_fmtr itms_as_html_fmtr = Bry_fmtr.new_("\n
  • ~{domain}
  • ", "domain", "itm_cls"); public Xoa_available_wikis_mgr(Xoae_app app) {this.app = app;} private Xoae_app app; public String Itms_as_html() { if (itms_as_html == null) { String itm_cls = app.Api_root().Html().Modules().Popups().Enabled() ? " class='xowa-hover-off'" : ""; - Bry_bfr tmp_bfr = Bry_bfr.new_(); // NOTE: do not use app.Utl__bfr_mkr().Get_k004() as it is being used simultaneously by another caller; TODO: find call + Bry_bfr tmp_bfr = Bry_bfr_.New(); // NOTE: do not use app.Utl__bfr_mkr().Get_k004() as it is being used simultaneously by another caller; TODO_OLD: find call Xow_xwiki_mgr xwiki_mgr = app.Usere().Wiki().Xwiki_mgr(); xwiki_mgr.Sort_by_key(); int len = xwiki_mgr.Len(); @@ -48,7 +48,7 @@ public class Xoa_available_wikis_mgr implements GfoInvkAble { else if (ctx.Match(k, Invk_visible_)) visible = m.ReadYn("v"); else if (ctx.Match(k, Invk_visible_toggle)) {visible = !visible; app.Gui_mgr().Browser_win().Active_html_box().Html_js_eval_proc_as_str("xowa-portal-wikis-visible-toggle", Bool_.To_str_lower(visible));} else if (ctx.Match(k, Invk_itms_as_html_fmtr_)) itms_as_html_fmtr.Fmt_(m.ReadBry("v")); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String Invk_visible = "visible", Invk_visible_ = "visible_", Invk_visible_toggle = "visible_toggle", Invk_itms_as_html = "itms_as_html", Invk_itms_as_html_fmtr_ = "itms_as_html_fmtr_", Invk_itms_refresh = "itms_refresh"; } diff --git a/400_xowa/src/gplx/xowa/htmls/portal/Xoa_portal_mgr.java b/400_xowa/src/gplx/xowa/htmls/portal/Xoa_portal_mgr.java index e5609bb4b..d02ef19be 100644 --- a/400_xowa/src/gplx/xowa/htmls/portal/Xoa_portal_mgr.java +++ b/400_xowa/src/gplx/xowa/htmls/portal/Xoa_portal_mgr.java @@ -16,11 +16,11 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.htmls.portal; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; -public class Xoa_portal_mgr implements GfoInvkAble { +public class Xoa_portal_mgr implements Gfo_invk { public Xoa_portal_mgr(Xoae_app app) {wikis = new Xoa_available_wikis_mgr(app);} public Xoa_available_wikis_mgr Wikis() {return wikis;} private Xoa_available_wikis_mgr wikis; public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_wikis)) return wikis; - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; } private static final String Invk_wikis = "wikis"; } diff --git a/400_xowa/src/gplx/xowa/htmls/portal/Xoh_page_body_cls.java b/400_xowa/src/gplx/xowa/htmls/portal/Xoh_page_body_cls.java index eaf486929..3295ddf3a 100644 --- a/400_xowa/src/gplx/xowa/htmls/portal/Xoh_page_body_cls.java +++ b/400_xowa/src/gplx/xowa/htmls/portal/Xoh_page_body_cls.java @@ -78,7 +78,7 @@ public class Xoh_page_body_cls { // REF.MW:Skin.php|getPageClasses break; case Byte_ascii.Underline: if (trg_bfr == null) { - trg_bfr = Bry_bfr.new_(src_len); + trg_bfr = Bry_bfr_.New_w_size(src_len); trg_bfr.Add_mid(src, 0, i); } if (bgn != -1) { @@ -99,7 +99,7 @@ public class Xoh_page_body_cls { // REF.MW:Skin.php|getPageClasses int next = i + 1; if (next < src_len && src[next] == -96) { if (trg_bfr == null) { - trg_bfr = Bry_bfr.new_(src_len); + trg_bfr = Bry_bfr_.New_w_size(src_len); trg_bfr.Add_mid(src, 0, i); } trg_bfr.Add_byte(Byte_ascii.Underline); @@ -118,7 +118,7 @@ public class Xoh_page_body_cls { // REF.MW:Skin.php|getPageClasses if (bgn != -1) trg_bfr.Add_mid(src, bgn, src_len); return trg_bfr == null ? src : trg_bfr.To_bry_and_clear(); } - private static final byte[] + private static final byte[] Bry_id_prefix = Bry_.new_a7("ns-") , Bry_type_special = Bry_.new_a7("ns-special") , Bry_type_talk = Bry_.new_a7("ns-talk") diff --git a/400_xowa/src/gplx/xowa/htmls/portal/Xoh_page_body_cls_tst.java b/400_xowa/src/gplx/xowa/htmls/portal/Xoh_page_body_cls_tst.java index 8b3c1960e..118c92dfd 100644 --- a/400_xowa/src/gplx/xowa/htmls/portal/Xoh_page_body_cls_tst.java +++ b/400_xowa/src/gplx/xowa/htmls/portal/Xoh_page_body_cls_tst.java @@ -45,7 +45,7 @@ class Xoh_page_body_cls_fxt { if (app == null) { app = Xoa_app_fxt.Make__app__edit(); wiki = Xoa_app_fxt.Make__wiki__edit(app); - tmp_bfr = Bry_bfr.reset_(255); + tmp_bfr = Bry_bfr_.Reset(255); wiki.Ns_mgr().Add_new(Wdata_wiki_mgr.Ns_property, Wdata_wiki_mgr.Ns_property_name); } Xoa_ttl ttl = Xoa_ttl.parse(wiki, Bry_.new_u8(ttl_str)); diff --git a/400_xowa/src/gplx/xowa/htmls/portal/Xoh_rtl_utl.java b/400_xowa/src/gplx/xowa/htmls/portal/Xoh_rtl_utl.java index 614d097a9..36a3974ba 100644 --- a/400_xowa/src/gplx/xowa/htmls/portal/Xoh_rtl_utl.java +++ b/400_xowa/src/gplx/xowa/htmls/portal/Xoh_rtl_utl.java @@ -17,8 +17,8 @@ along with this program. If not, see . */ package gplx.xowa.htmls.portal; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; public class Xoh_rtl_utl { - private static final int[] tmp_ary = new int[32]; // support no more than 16 items - private static Bry_bfr bfr = Bry_bfr.reset_(32); + private static final int[] tmp_ary = new int[32]; // support no more than 16 items + private static Bry_bfr bfr = Bry_bfr_.Reset(32); public static byte[] Reverse_li(byte[] src) { int src_len = src.length; int pos = 0; @@ -64,7 +64,7 @@ public class Xoh_rtl_utl { } bfr.Add_mid(src, li_n_end, ul_end); // add from nth "" -> "
" } - private static final byte[] + private static final byte[] Ul_bgn = Bry_.new_a7("") , Li_bgn = Bry_.new_a7("~{itms}" , "" diff --git a/400_xowa/src/gplx/xowa/htmls/portal/Xow_portal_mgr.java b/400_xowa/src/gplx/xowa/htmls/portal/Xow_portal_mgr.java index 7dccde8eb..f10ece843 100644 --- a/400_xowa/src/gplx/xowa/htmls/portal/Xow_portal_mgr.java +++ b/400_xowa/src/gplx/xowa/htmls/portal/Xow_portal_mgr.java @@ -24,9 +24,9 @@ import gplx.xowa.wikis.domains.*; import gplx.xowa.htmls.hrefs.*; import gplx.xowa.apps.apis.xowa.html.*; import gplx.xowa.apps.apis.xowa.html.skins.*; import gplx.xowa.langs.vnts.*; import gplx.xowa.htmls.portal.vnts.*; -public class Xow_portal_mgr implements GfoInvkAble { +public class Xow_portal_mgr implements Gfo_invk { private Xowe_wiki wiki; private boolean lang_is_rtl; private Xoapi_toggle_itm toggle_itm; - private final Vnt_mnu_grp_fmtr vnt_menu_fmtr = new Vnt_mnu_grp_fmtr(); + private final Vnt_mnu_grp_fmtr vnt_menu_fmtr = new Vnt_mnu_grp_fmtr(); public Xow_portal_mgr(Xowe_wiki wiki) { this.wiki = wiki; this.sidebar_mgr = new Xowh_sidebar_mgr(wiki); @@ -102,7 +102,7 @@ public class Xow_portal_mgr implements GfoInvkAble { } div_view_fmtr.Bld_bfr_many(tmp_bfr, read_cls, edit_cls, html_cls, search_text); return tmp_bfr.To_bry_and_rls(); - } public static final byte[] Cls_selected_y = Bry_.new_a7("selected"), Cls_new = Bry_.new_a7("new"), Cls_display_none = Bry_.new_a7("xowa_display_none"); + } public static final byte[] Cls_selected_y = Bry_.new_a7("selected"), Cls_new = Bry_.new_a7("new"), Cls_display_none = Bry_.new_a7("xowa_display_none"); public byte[] Div_logo_bry() {return div_logo_bry;} private byte[] div_logo_bry = Bry_.Empty; public byte[] Div_home_bry() {return api_skin != null && api_skin.Sidebar_home_enabled() ? div_home_bry : Bry_.Empty;} private byte[] div_home_bry = Bry_.Empty; public byte[] Div_wikis_bry(Bry_bfr_mkr bfr_mkr) { @@ -113,11 +113,11 @@ public class Xow_portal_mgr implements GfoInvkAble { return tmp_bfr.To_bry_and_rls(); } public byte[] Missing_ns_cls() {return missing_ns_cls;} public Xow_portal_mgr Missing_ns_cls_(byte[] v) {missing_ns_cls = v; return this;} private byte[] missing_ns_cls; // NOTE: must be null due to Init check above - private final Bry_fmtr div_personal_fmtr = Bry_fmtr.new_("~{portal_personal_subj_href};~{portal_personal_subj_text};~{portal_personal_talk_cls};~{portal_personal_talk_href};~{portal_personal_talk_cls};", "portal_personal_subj_href", "portal_personal_subj_text", "portal_personal_subj_cls", "portal_personal_talk_href", "portal_personal_talk_cls"); - private final Bry_fmtr div_ns_fmtr = Bry_fmtr.new_("~{portal_ns_subj_href};~{portal_ns_subj_cls};~{portal_ns_talk_href};~{portal_ns_talk_cls};~{portal_div_vnts}", "portal_ns_subj_href", "portal_ns_subj_cls", "portal_ns_talk_href", "portal_ns_talk_cls", "portal_div_vnts"); - private final Bry_fmtr div_view_fmtr = Bry_fmtr.new_("", "portal_view_read_cls", "portal_view_edit_cls", "portal_view_html_cls", "search_text"); - private final Bry_fmtr div_logo_fmtr = Bry_fmtr.new_("", "portal_nav_main_href", "portal_logo_url"); - private final Bry_fmtr div_wikis_fmtr = Bry_fmtr.new_("", "toggle_btn", "toggle_hdr"); + private final Bry_fmtr div_personal_fmtr = Bry_fmtr.new_("~{portal_personal_subj_href};~{portal_personal_subj_text};~{portal_personal_talk_cls};~{portal_personal_talk_href};~{portal_personal_talk_cls};", "portal_personal_subj_href", "portal_personal_subj_text", "portal_personal_subj_cls", "portal_personal_talk_href", "portal_personal_talk_cls"); + private final Bry_fmtr div_ns_fmtr = Bry_fmtr.new_("~{portal_ns_subj_href};~{portal_ns_subj_cls};~{portal_ns_talk_href};~{portal_ns_talk_cls};~{portal_div_vnts}", "portal_ns_subj_href", "portal_ns_subj_cls", "portal_ns_talk_href", "portal_ns_talk_cls", "portal_div_vnts"); + private final Bry_fmtr div_view_fmtr = Bry_fmtr.new_("", "portal_view_read_cls", "portal_view_edit_cls", "portal_view_html_cls", "search_text"); + private final Bry_fmtr div_logo_fmtr = Bry_fmtr.new_("", "portal_nav_main_href", "portal_logo_url"); + private final Bry_fmtr div_wikis_fmtr = Bry_fmtr.new_("", "toggle_btn", "toggle_hdr"); private byte[] Reverse_li(byte[] bry) { return lang_is_rtl ? Xoh_rtl_utl.Reverse_li(bry) : bry; } @@ -131,7 +131,7 @@ public class Xow_portal_mgr implements GfoInvkAble { else if (ctx.Match(k, Invk_missing_ns_cls)) return String_.new_u8(missing_ns_cls); else if (ctx.Match(k, Invk_missing_ns_cls_)) missing_ns_cls = m.ReadBry("v"); else if (ctx.Match(k, Invk_missing_ns_cls_list)) return Options_missing_ns_cls_list; - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String Invk_div_personal_ = "div_personal_", Invk_div_view_ = "div_view_", Invk_div_ns_ = "div_ns_", Invk_div_home_ = "div_home_", Invk_div_wikis_ = "div_wikis_" @@ -139,8 +139,8 @@ public class Xow_portal_mgr implements GfoInvkAble { ; public static final String Invk_div_logo_ = "div_logo_"; private static Keyval[] Options_missing_ns_cls_list = Keyval_.Ary(Keyval_.new_("", "Show as blue link"), Keyval_.new_("new", "Show as red link"), Keyval_.new_("xowa_display_none", "Hide")); - private static final byte[] Missing_ns_cls_hide = Bry_.new_a7("xowa_display_none"); - private static final Bry_fmtr Div_jump_to_fmtr = Bry_fmtr.new_ + private static final byte[] Missing_ns_cls_hide = Bry_.new_a7("xowa_display_none"); + private static final Bry_fmtr Div_jump_to_fmtr = Bry_fmtr.new_ ( "\n
~{jumpto}~{jumptonavigation}~{comma-separator}~{jumptosearch}
" , "jumpto", "jumptonavigation", "comma-separator", "jumptosearch"); } diff --git a/400_xowa/src/gplx/xowa/htmls/portal/vnts/Vnt_mnu_grp_fmtr_tst.java b/400_xowa/src/gplx/xowa/htmls/portal/vnts/Vnt_mnu_grp_fmtr_tst.java index 09095e20e..81dc00d4b 100644 --- a/400_xowa/src/gplx/xowa/htmls/portal/vnts/Vnt_mnu_grp_fmtr_tst.java +++ b/400_xowa/src/gplx/xowa/htmls/portal/vnts/Vnt_mnu_grp_fmtr_tst.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.xowa.htmls.portal.vnts; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.portal.*; import org.junit.*; import gplx.xowa.langs.vnts.*; public class Vnt_mnu_grp_fmtr_tst { - @Before public void init() {fxt.Clear();} private final Vnt_mnu_grp_fmtr_fxt fxt = new Vnt_mnu_grp_fmtr_fxt(); + @Before public void init() {fxt.Clear();} private final Vnt_mnu_grp_fmtr_fxt fxt = new Vnt_mnu_grp_fmtr_fxt(); @Test public void Basic() { // fxt.Test_to_str("Earth", "zh-hk", String_.Concat_lines_nl_skip_last // ( "" @@ -40,7 +40,7 @@ public class Vnt_mnu_grp_fmtr_tst { } } class Vnt_mnu_grp_fmtr_fxt { - private final Xol_vnt_regy mgr = new Xol_vnt_regy(); + private final Xol_vnt_regy mgr = new Xol_vnt_regy(); public void Clear() { this.Init_grp("Choose lang", "zh-hans", "Simplified", "zh-hant", "Traditional", "zh-cn", "China", "zh-hk", "Hong Kong", "zh-mo", "Macau", "zh-sg", "Singapore", "zh-tw", "Taiwan"); } @@ -59,7 +59,7 @@ class Vnt_mnu_grp_fmtr_fxt { } public void Test_to_str(String page_href, String selected_vnt, String expd) { Vnt_mnu_grp_fmtr vnt_grp_fmtr = new Vnt_mnu_grp_fmtr(); - Bry_bfr bfr = Bry_bfr.new_(); + Bry_bfr bfr = Bry_bfr_.New(); vnt_grp_fmtr.Init(mgr, Bry_.new_u8(page_href), Bry_.new_a7("zh.wikipedia.org"), Bry_.new_u8(selected_vnt)); vnt_grp_fmtr.Bfr_arg__add(bfr); Tfds.Eq_str_lines(expd, bfr.To_str_and_clear()); diff --git a/400_xowa/src/gplx/xowa/htmls/sections/Xoh_section_mgr.java b/400_xowa/src/gplx/xowa/htmls/sections/Xoh_section_mgr.java index 476a6df72..ac62aa04f 100644 --- a/400_xowa/src/gplx/xowa/htmls/sections/Xoh_section_mgr.java +++ b/400_xowa/src/gplx/xowa/htmls/sections/Xoh_section_mgr.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.htmls.sections; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; public class Xoh_section_mgr { - private final List_adp list = List_adp_.new_(); + private final List_adp list = List_adp_.New(); public void Clear() {list.Clear();} public int Len() {return list.Count();} public Xoh_section_itm Get_at(int i) {return (Xoh_section_itm)list.Get_at(i);} diff --git a/400_xowa/src/gplx/xowa/htmls/sidebar/Xowh_sidebar_itm.java b/400_xowa/src/gplx/xowa/htmls/sidebar/Xowh_sidebar_itm.java index fb976e90c..f93da4376 100644 --- a/400_xowa/src/gplx/xowa/htmls/sidebar/Xowh_sidebar_itm.java +++ b/400_xowa/src/gplx/xowa/htmls/sidebar/Xowh_sidebar_itm.java @@ -26,7 +26,7 @@ public class Xowh_sidebar_itm { public byte[] Accesskey() {return accesskey;} public Xowh_sidebar_itm Accesskey_(byte[] v) {accesskey = v; return this;} private byte[] accesskey; public byte[] Atr_accesskey_and_title() {return atr_accesskey_and_title;} public Xowh_sidebar_itm Atr_accesskey_and_title_(byte[] v) {atr_accesskey_and_title = v; return this;} private byte[] atr_accesskey_and_title = Bry_.Empty; public byte[] Text() {return text;} public Xowh_sidebar_itm Text_(byte[] v) {text = v; return this;} private byte[] text; - public int Itms_len() {return itms.Count();} List_adp itms = List_adp_.new_(); + public int Itms_len() {return itms.Count();} List_adp itms = List_adp_.New(); public Xowh_sidebar_itm Itms_get_at(int i) {return (Xowh_sidebar_itm)itms.Get_at(i);} public Xowh_sidebar_itm Itms_add(Xowh_sidebar_itm... ary) { int ary_len = ary.length; @@ -34,7 +34,7 @@ public class Xowh_sidebar_itm { itms.Add(ary[i]); return this; } - public static final byte Tid_grp = 1, Tid_itm = 2; // NOTE: values are used by parse to indicate # of asterisks + public static final byte Tid_grp = 1, Tid_itm = 2; // NOTE: values are used by parse to indicate # of asterisks } class Xowh_sidebar_grp_fmtr_arg implements gplx.core.brys.Bfr_arg { private Xowe_wiki wiki; private Xowh_sidebar_itm grp; private Bry_fmtr fmtr; diff --git a/400_xowa/src/gplx/xowa/htmls/sidebar/Xowh_sidebar_mgr.java b/400_xowa/src/gplx/xowa/htmls/sidebar/Xowh_sidebar_mgr.java index 58e03293b..8f6f73de3 100644 --- a/400_xowa/src/gplx/xowa/htmls/sidebar/Xowh_sidebar_mgr.java +++ b/400_xowa/src/gplx/xowa/htmls/sidebar/Xowh_sidebar_mgr.java @@ -19,9 +19,9 @@ package gplx.xowa.htmls.sidebar; import gplx.*; import gplx.xowa.*; import gplx. import gplx.core.btries.*; import gplx.core.brys.fmtrs.*; import gplx.langs.htmls.encoders.*; import gplx.xowa.langs.*; import gplx.xowa.langs.msgs.*; import gplx.xowa.parsers.lnkis.*; -public class Xowh_sidebar_mgr implements GfoInvkAble { +public class Xowh_sidebar_mgr implements Gfo_invk { public Xowh_sidebar_mgr(Xowe_wiki wiki) {this.wiki = wiki;} private Xowe_wiki wiki; - public int Grps_len() {return grps.Count();} List_adp grps = List_adp_.new_(); + public int Grps_len() {return grps.Count();} List_adp grps = List_adp_.New(); public Xowh_sidebar_itm Grps_get_at(int i) {return (Xowh_sidebar_itm)grps.Get_at(i);} public byte[] Html_bry() {return html_bry;} private byte[] html_bry; public void Init() { @@ -122,17 +122,17 @@ public class Xowh_sidebar_mgr implements GfoInvkAble { public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_html_grp_fmt_)) html_grp_fmtr.Fmt_(m.ReadBry("v")); else if (ctx.Match(k, Invk_html_itm_fmt_)) html_itm_fmtr.Fmt_(m.ReadBry("v")); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String Invk_html_grp_fmt_ = "html_grp_fmt_", Invk_html_itm_fmt_ = "html_itm_fmt_"; - private static final byte[] CONST_id_prefix = Bry_.new_a7("n-"); + private static final byte[] CONST_id_prefix = Bry_.new_a7("n-"); private static final byte Ignore_tid_search = 1, Ignore_tid_toolbox = 2, Ignore_tid_toolbox_end = 3, Ignore_tid_languages = 4; - private static final Btrie_slim_mgr ignore_trie = Btrie_slim_mgr.ci_a7() + private static final Btrie_slim_mgr ignore_trie = Btrie_slim_mgr.ci_a7() .Add_str_byte("SEARCH", Ignore_tid_search) .Add_str_byte("TOOLBOX", Ignore_tid_toolbox) .Add_str_byte("TOOLBOXEND", Ignore_tid_toolbox_end) .Add_str_byte("LANGUAGES", Ignore_tid_languages) ; - private static final String GRP_KEY = "xowa.wiki.gui.skin.mgr"; - private static final byte[] CONST_sidebar_ttl = Bry_.new_a7("Sidebar"); + private static final String GRP_KEY = "xowa.wiki.gui.skin.mgr"; + private static final byte[] CONST_sidebar_ttl = Bry_.new_a7("Sidebar"); } diff --git a/400_xowa/src/gplx/xowa/htmls/sidebar/Xowh_sidebar_mgr_tst.java b/400_xowa/src/gplx/xowa/htmls/sidebar/Xowh_sidebar_mgr_tst.java index 92e322e43..927667681 100644 --- a/400_xowa/src/gplx/xowa/htmls/sidebar/Xowh_sidebar_mgr_tst.java +++ b/400_xowa/src/gplx/xowa/htmls/sidebar/Xowh_sidebar_mgr_tst.java @@ -190,8 +190,8 @@ class Xowh_sidebar_mgr_fxt { app = Xoa_app_fxt.Make__app__edit(); wiki = Xoa_app_fxt.Make__wiki__edit(app); sidebar_mgr = wiki.Html_mgr().Portal_mgr().Sidebar_mgr(); - bfr = Bry_bfr.reset_(Io_mgr.Len_kb); - comment_bfr = Bry_bfr.reset_(Io_mgr.Len_kb); + bfr = Bry_bfr_.Reset(Io_mgr.Len_kb); + comment_bfr = Bry_bfr_.Reset(Io_mgr.Len_kb); Init_popups_enabled_(false); // } return this; diff --git a/400_xowa/src/gplx/xowa/htmls/skins/Xoh_skin_itm.java b/400_xowa/src/gplx/xowa/htmls/skins/Xoh_skin_itm.java index fa90feaea..100a61d74 100644 --- a/400_xowa/src/gplx/xowa/htmls/skins/Xoh_skin_itm.java +++ b/400_xowa/src/gplx/xowa/htmls/skins/Xoh_skin_itm.java @@ -17,15 +17,15 @@ along with this program. If not, see . */ package gplx.xowa.htmls.skins; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.core.brys.fmtrs.*; -public class Xoh_skin_itm implements GfoInvkAble { - private final Bry_fmtr fmtr = Bry_fmtr.new_(); +public class Xoh_skin_itm implements Gfo_invk { + private final Bry_fmtr fmtr = Bry_fmtr.new_(); public Xoh_skin_itm(String key, String fmt) {this.key = key; fmtr.Fmt_(fmt);} - public String Key() {return key;} private final String key; + public String Key() {return key;} private final String key; public void Fmt_(String v) {fmtr.Fmt_(v);} public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_fmt)) return String_.new_u8(fmtr.Fmt()); else if (ctx.Match(k, Invk_fmt_)) fmtr.Fmt_(m.ReadStr("v")); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String diff --git a/400_xowa/src/gplx/xowa/htmls/skins/Xoh_skin_mgr.java b/400_xowa/src/gplx/xowa/htmls/skins/Xoh_skin_mgr.java index 5173bd057..2d4a7c976 100644 --- a/400_xowa/src/gplx/xowa/htmls/skins/Xoh_skin_mgr.java +++ b/400_xowa/src/gplx/xowa/htmls/skins/Xoh_skin_mgr.java @@ -16,8 +16,8 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.htmls.skins; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; -public class Xoh_skin_mgr implements GfoInvkAble { - private final Xoh_skin_regy regy = new Xoh_skin_regy(); +public class Xoh_skin_mgr implements Gfo_invk { + private final Xoh_skin_regy regy = new Xoh_skin_regy(); public Xoh_skin_mgr() { read = make_and_add(regy, "read"); edit = make_and_add(regy, "edit"); @@ -34,7 +34,7 @@ public class Xoh_skin_mgr implements GfoInvkAble { else if (ctx.Match(k, Invk_html)) return html; else if (ctx.Match(k, Invk_html_)) html = regy.Get_by_key(m.ReadStr("v")); else if (ctx.Match(k, Invk_set)) regy.Set(m.ReadStr("key"), m.ReadStr("fmt")); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String diff --git a/400_xowa/src/gplx/xowa/htmls/tocs/Xow_hdr_mgr.java b/400_xowa/src/gplx/xowa/htmls/tocs/Xow_hdr_mgr.java index fad40a654..6bfc3e83d 100644 --- a/400_xowa/src/gplx/xowa/htmls/tocs/Xow_hdr_mgr.java +++ b/400_xowa/src/gplx/xowa/htmls/tocs/Xow_hdr_mgr.java @@ -20,8 +20,8 @@ import gplx.core.brys.*; import gplx.core.primitives.*; import gplx.langs.htmls. import gplx.xowa.wikis.nss.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.amps.*; import gplx.xowa.parsers.hdrs.*; import gplx.xowa.parsers.xndes.*; import gplx.xowa.parsers.lnkis.*; public class Xow_hdr_mgr { - private final Xoae_page page; - private final Hash_adp hdrs_hash = Hash_adp_.new_(); private final Bry_bfr hdrs_bfr = Bry_bfr.reset_(255); private final Bry_obj_ref hdrs_ref = Bry_obj_ref.New_empty(); + private final Xoae_page page; + private final Hash_adp hdrs_hash = Hash_adp_.New(); private final Bry_bfr hdrs_bfr = Bry_bfr_.Reset(255); private final Bry_obj_ref hdrs_ref = Bry_obj_ref.New_empty(); private Xop_hdr_tkn[] hdrs_ary = new Xop_hdr_tkn[0]; private int hdrs_max, hdrs_len; public Xow_hdr_mgr(Xoae_page page) {this.page = page;} public boolean Toc_enabled() { diff --git a/400_xowa/src/gplx/xowa/htmls/tocs/Xow_toc_mgr.java b/400_xowa/src/gplx/xowa/htmls/tocs/Xow_toc_mgr.java index 37daafa67..c28f22c81 100644 --- a/400_xowa/src/gplx/xowa/htmls/tocs/Xow_toc_mgr.java +++ b/400_xowa/src/gplx/xowa/htmls/tocs/Xow_toc_mgr.java @@ -23,7 +23,7 @@ import gplx.xowa.htmls.core.htmls.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.apos.*; import gplx.xowa.parsers.amps.*; import gplx.xowa.parsers.hdrs.*; import gplx.xowa.parsers.xndes.*; import gplx.xowa.parsers.lnkis.*; public class Xow_toc_mgr implements gplx.core.brys.Bfr_arg { private static final int Toc_levels = 32; // assume 6 max levels * 5 max heading (9999.); add 2 for good measure - private Xoae_page page; private Xop_toc_itm[] path_ary; private Bry_bfr path_bfr = Bry_bfr.reset_(Toc_levels); + private Xoae_page page; private Xop_toc_itm[] path_ary; private Bry_bfr path_bfr = Bry_bfr_.Reset(Toc_levels); public Xow_toc_mgr() { path_ary = new Xop_toc_itm[Toc_levels]; for (int i = 0; i < Toc_levels; i++) @@ -197,7 +197,7 @@ public class Xow_toc_mgr implements gplx.core.brys.Bfr_arg { byte[] bry_contents = page.Wikie().Msg_mgr().Val_by_id(Xol_msg_itm_.Id_toc); bfmtr_main.Bld_bfr_many(bfr, write_toc_cls ? Bry_toc_cls : Bry_.Empty, Bfr_arg_.New_bry(bry_contents), this); } - private static final byte[] + private static final byte[] Bry_list_bgn = Bry_.new_a7("
    \n") , Bry_list_end = Bry_.new_a7("
\n") , Bry_item_end = Bry_.new_a7(" \n") diff --git a/400_xowa/src/gplx/xowa/htmls/tocs/Xow_toc_mgr_tst.java b/400_xowa/src/gplx/xowa/htmls/tocs/Xow_toc_mgr_tst.java index 95885a30f..d201dd2a5 100644 --- a/400_xowa/src/gplx/xowa/htmls/tocs/Xow_toc_mgr_tst.java +++ b/400_xowa/src/gplx/xowa/htmls/tocs/Xow_toc_mgr_tst.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.xowa.htmls.tocs; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import org.junit.*; import gplx.xowa.parsers.*; import gplx.xowa.htmls.core.htmls.*; public class Xow_toc_mgr_tst { - @Before public void init() {fxt.Clear();} private final Xow_toc_mgr_fxt fxt = new Xow_toc_mgr_fxt(); + @Before public void init() {fxt.Clear();} private final Xow_toc_mgr_fxt fxt = new Xow_toc_mgr_fxt(); @Test public void Basic() { fxt.Test_html_toc(String_.Concat_lines_nl_skip_last ( "==a==" @@ -502,8 +502,8 @@ public class Xow_toc_mgr_tst { } class Xow_toc_mgr_fxt { private Xow_toc_mgr toc_mgr = new Xow_toc_mgr(); - private Bry_bfr tmp = Bry_bfr.new_(); - public Xop_fxt Fxt() {return fxt;} private final Xop_fxt fxt = new Xop_fxt(); + private Bry_bfr tmp = Bry_bfr_.New(); + public Xop_fxt Fxt() {return fxt;} private final Xop_fxt fxt = new Xop_fxt(); public void Clear() { fxt.Reset(); toc_mgr.Clear(); diff --git a/400_xowa/src/gplx/xowa/langs/Xoa_lang_mgr.java b/400_xowa/src/gplx/xowa/langs/Xoa_lang_mgr.java index 092b23929..0e932181d 100644 --- a/400_xowa/src/gplx/xowa/langs/Xoa_lang_mgr.java +++ b/400_xowa/src/gplx/xowa/langs/Xoa_lang_mgr.java @@ -18,14 +18,14 @@ along with this program. If not, see . package gplx.xowa.langs; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.fsys.*; import gplx.xowa.langs.bldrs.*; -public class Xoa_lang_mgr implements GfoInvkAble { - private final Ordered_hash hash = Ordered_hash_.New_bry(); - private final Xobc_utl_make_lang mw_converter; +public class Xoa_lang_mgr implements Gfo_invk { + private final Ordered_hash hash = Ordered_hash_.New_bry(); + private final Xobc_utl_make_lang mw_converter; public Xoa_lang_mgr(Xoa_app app) { this.mw_converter = new Xobc_utl_make_lang(this, app.Fsys_mgr(), app.Tid_is_edit() ? ((Xoae_app)app).Msg_log() : null); this.lang_en = Xol_lang_itm_.Lang_en_make(this); this.Add(lang_en); } - public Xol_lang_itm Lang_en() {return lang_en;} private final Xol_lang_itm lang_en; + public Xol_lang_itm Lang_en() {return lang_en;} private final Xol_lang_itm lang_en; public void Clear() {hash.Clear();} public int Len() {return hash.Count();} public void Add(Xol_lang_itm itm) {hash.Add(itm.Key_bry(), itm);} @@ -43,7 +43,7 @@ public class Xoa_lang_mgr implements GfoInvkAble { public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_get)) return Get_by_or_new(m.ReadBry("key")); else if (ctx.Match(k, Invk_mediawiki_converter)) return mw_converter; - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; } private static final String Invk_get = "get", Invk_mediawiki_converter = "mediawiki_converter"; - public static final byte[] Fallback_false = Bry_.new_a7("false"); + public static final byte[] Fallback_false = Bry_.new_a7("false"); } diff --git a/400_xowa/src/gplx/xowa/langs/Xol_lang_itm.java b/400_xowa/src/gplx/xowa/langs/Xol_lang_itm.java index 2e0dd6925..39160ba46 100644 --- a/400_xowa/src/gplx/xowa/langs/Xol_lang_itm.java +++ b/400_xowa/src/gplx/xowa/langs/Xol_lang_itm.java @@ -17,10 +17,11 @@ along with this program. If not, see . */ package gplx.xowa.langs; import gplx.*; import gplx.xowa.*; import gplx.core.envs.*; +import gplx.gfui.draws.*; import gplx.xowa.langs.cases.*; import gplx.xowa.langs.msgs.*; import gplx.xowa.langs.kwds.*; import gplx.xowa.langs.grammars.*; import gplx.xowa.langs.genders.*; import gplx.xowa.langs.plurals.*; import gplx.xowa.langs.vnts.*; import gplx.xowa.langs.vnts.converts.*; import gplx.xowa.langs.numbers.*; import gplx.xowa.langs.durations.*; import gplx.xowa.langs.lnki_trails.*; import gplx.xowa.langs.funcs.*; import gplx.xowa.langs.specials.*; import gplx.xowa.langs.bldrs.*; import gplx.xowa.apps.gfs.*; import gplx.xowa.apps.fsys.*; import gplx.core.intls.*; import gplx.xowa.wikis.nss.*; import gplx.xowa.xtns.lst.*; import gplx.xowa.wikis.caches.*; import gplx.xowa.parsers.lnkis.*; import gplx.xowa.guis.langs.*; -public class Xol_lang_itm implements GfoInvkAble { +public class Xol_lang_itm implements Gfo_invk { private boolean loaded = false; public Xol_lang_itm(Xoa_lang_mgr lang_mgr, byte[] key_bry) { this.lang_mgr = lang_mgr; this.key_bry = key_bry; this.key_str = String_.new_u8(key_bry); @@ -41,19 +42,19 @@ public class Xol_lang_itm implements GfoInvkAble { this.duration_mgr = new Xol_duration_mgr(this); if (lang_id != Xol_lang_stub_.Id_en) fallback_bry_ary = Fallback_bry_ary__en; // NOTE: do not set fallback_ary for en to en, else recursive loop } - public Xoa_lang_mgr Lang_mgr() {return lang_mgr;} private final Xoa_lang_mgr lang_mgr; - public byte[] Key_bry() {return key_bry;} private final byte[] key_bry; - public String Key_str() {return key_str;} private final String key_str; - public int Lang_id() {return lang_id;} private final int lang_id; - public Xol_ns_grp Ns_names() {return ns_names;} private final Xol_ns_grp ns_names; - public Xol_ns_grp Ns_aliases() {return ns_aliases;} private final Xol_ns_grp ns_aliases; - public Xol_kwd_mgr Kwd_mgr() {return kwd_mgr;} private final Xol_kwd_mgr kwd_mgr; + public Xoa_lang_mgr Lang_mgr() {return lang_mgr;} private final Xoa_lang_mgr lang_mgr; + public byte[] Key_bry() {return key_bry;} private final byte[] key_bry; + public String Key_str() {return key_str;} private final String key_str; + public int Lang_id() {return lang_id;} private final int lang_id; + public Xol_ns_grp Ns_names() {return ns_names;} private final Xol_ns_grp ns_names; + public Xol_ns_grp Ns_aliases() {return ns_aliases;} private final Xol_ns_grp ns_aliases; + public Xol_kwd_mgr Kwd_mgr() {return kwd_mgr;} private final Xol_kwd_mgr kwd_mgr; public boolean Kwd_mgr__strx() {return kwd_mgr__strx;} public Xol_lang_itm Kwd_mgr__strx_(boolean v) {kwd_mgr__strx = v; return this;} private boolean kwd_mgr__strx; - public Xol_msg_mgr Msg_mgr() {return msg_mgr;} private final Xol_msg_mgr msg_mgr; - public Xol_specials_mgr Specials_mgr() {return specials_mgr;} private final Xol_specials_mgr specials_mgr; + public Xol_msg_mgr Msg_mgr() {return msg_mgr;} private final Xol_msg_mgr msg_mgr; + public Xol_specials_mgr Specials_mgr() {return specials_mgr;} private final Xol_specials_mgr specials_mgr; public Xol_case_mgr Case_mgr() {return case_mgr;} private Xol_case_mgr case_mgr; public void Case_mgr_u8_() {case_mgr = Xol_case_mgr_.U8();} // TEST: - public Xol_font_info Gui_font() {return gui_font;} private final Xol_font_info gui_font = new Xol_font_info(null, 0, gplx.gfui.FontStyleAdp_.Plain); + public Xol_font_info Gui_font() {return gui_font;} private final Xol_font_info gui_font = new Xol_font_info(null, 0, FontStyleAdp_.Plain); public byte[] Fallback_bry() {return fallback_bry;} public Xol_lang_itm Fallback_bry_(byte[] v) { fallback_bry = v; @@ -67,15 +68,15 @@ public class Xol_lang_itm implements GfoInvkAble { img_thumb_halign_default = dir_ltr ? Xop_lnki_align_h_.Right : Xop_lnki_align_h_.Left; } public byte[] Dir_ltr_bry() {return dir_ltr ? Dir_bry_ltr : Dir_bry_rtl;} - public Xol_num_mgr Num_mgr() {return num_mgr;} private final Xol_num_mgr num_mgr; - public Xol_vnt_mgr Vnt_mgr() {return vnt_mgr;} private final Xol_vnt_mgr vnt_mgr; - public Xol_grammar Grammar() {return grammar;} private final Xol_grammar grammar; - public Xol_gender Gender() {return gender;} private final Xol_gender gender; - public Xol_plural Plural() {return plural;} private final Xol_plural plural; - public Xol_duration_mgr Duration_mgr() {return duration_mgr;} private final Xol_duration_mgr duration_mgr; - public Xol_lnki_trail_mgr Lnki_trail_mgr() {return lnki_trail_mgr;} private final Xol_lnki_trail_mgr lnki_trail_mgr; + public Xol_num_mgr Num_mgr() {return num_mgr;} private final Xol_num_mgr num_mgr; + public Xol_vnt_mgr Vnt_mgr() {return vnt_mgr;} private final Xol_vnt_mgr vnt_mgr; + public Xol_grammar Grammar() {return grammar;} private final Xol_grammar grammar; + public Xol_gender Gender() {return gender;} private final Xol_gender gender; + public Xol_plural Plural() {return plural;} private final Xol_plural plural; + public Xol_duration_mgr Duration_mgr() {return duration_mgr;} private final Xol_duration_mgr duration_mgr; + public Xol_lnki_trail_mgr Lnki_trail_mgr() {return lnki_trail_mgr;} private final Xol_lnki_trail_mgr lnki_trail_mgr; public Xop_lnki_arg_parser Lnki_arg_parser() {return lnki_arg_parser;} private Xop_lnki_arg_parser lnki_arg_parser = new Xop_lnki_arg_parser(); - public Xol_func_regy Func_regy() {return func_regy;} private final Xol_func_regy func_regy; + public Xol_func_regy Func_regy() {return func_regy;} private final Xol_func_regy func_regy; public int Img_thumb_halign_default() {return img_thumb_halign_default;} private int img_thumb_halign_default = Xop_lnki_align_h_.Right; public Hash_adp_bry Xatrs_section() {if (xatrs_section == null) xatrs_section = Lst_section_nde.new_xatrs_(this); return xatrs_section;} private Hash_adp_bry xatrs_section; public void Evt_lang_changed() { @@ -101,7 +102,7 @@ public class Xol_lang_itm implements GfoInvkAble { else if (ctx.Match(k, Invk_x_axis_end)) return String_.new_u8(X_axis_end()); else if (ctx.Match(k, Invk_this)) return this; else if (ctx.Match(k, Xoae_app.Invk_app)) return Xoa_app_.Gfs_mgr().Root_invk(); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } public static final String Invk_ns_names = "ns_names", Invk_ns_aliases = "ns_aliases" @@ -112,7 +113,7 @@ public class Xol_lang_itm implements GfoInvkAble { , Invk_x_axis_end = "x_axis_end" ; - private static final Hash_adp_bry fallback_dupes_regy = Hash_adp_bry.cs(); // to prevent cyclical loops during loading + private static final Hash_adp_bry fallback_dupes_regy = Hash_adp_bry.cs(); // to prevent cyclical loops during loading public Xol_lang_itm Init_by_load_assert() {if (!loaded) Init_by_load(); return this;} public boolean Init_by_load() { if (this.loaded) return false; @@ -139,7 +140,7 @@ public class Xol_lang_itm implements GfoInvkAble { gfs_mgr.Run_url_for(this, Xol_lang_itm_.xo_lang_fil_(app_fsys_mgr, String_.new_a7(v))); gfs_mgr.Run_url_for(gfs_mgr.Root_invk(), Xol_convert_regy.Bld_url(app_fsys_mgr, key_str)); } - private static final byte[] + private static final byte[] Dir_bry_ltr = Bry_.new_a7("ltr"), Dir_bry_rtl = Bry_.new_a7("rtl") , X_axis_end_right = Bry_.new_a7("right"), X_axis_end_left = Bry_.new_a7("left") ; @@ -165,5 +166,5 @@ public class Xol_lang_itm implements GfoInvkAble { } return rv; } - private static final byte[][] Fallback_bry_ary__en = new byte[][] {Xol_lang_itm_.Key_en}; + private static final byte[][] Fallback_bry_ary__en = new byte[][] {Xol_lang_itm_.Key_en}; } diff --git a/400_xowa/src/gplx/xowa/langs/Xol_lang_stub_.java b/400_xowa/src/gplx/xowa/langs/Xol_lang_stub_.java index 47c1174fb..71d4be8a3 100644 --- a/400_xowa/src/gplx/xowa/langs/Xol_lang_stub_.java +++ b/400_xowa/src/gplx/xowa/langs/Xol_lang_stub_.java @@ -814,7 +814,7 @@ Regy_add(stub_hash, Id_sh, "sh", "Srpskohrvatski / Српскохрватски" Regy_add(stub_hash, Id_shi, "shi", "Tašlḥiyt"); Regy_add(stub_hash, Id_shn, "shn", "Shan"); Regy_add(stub_hash, Id_si, "si", "Sinhalese"); -Regy_add(stub_hash, Id_simple, "simple", "Simple English"); +Regy_add(stub_hash, Id_simple, "simple", "Simple"); // NOTE: changed from "Simple English"; DATE:2016-06-11 Regy_add(stub_hash, Id_sk, "sk", "Slovenčina"); Regy_add(stub_hash, Id_sl, "sl", "Slovenščina"); Regy_add(stub_hash, Id_sli, "sli", "Schläsch"); diff --git a/400_xowa/src/gplx/xowa/langs/bldrs/Json_itm_wkr__base.java b/400_xowa/src/gplx/xowa/langs/bldrs/Json_itm_wkr__base.java index 5e6466715..3d29f6b1a 100644 --- a/400_xowa/src/gplx/xowa/langs/bldrs/Json_itm_wkr__base.java +++ b/400_xowa/src/gplx/xowa/langs/bldrs/Json_itm_wkr__base.java @@ -26,7 +26,7 @@ abstract class Json_itm_wkr__base implements Json_itm_wkr { private Json_parser json_parser = new Json_parser(); private Php_text_itm_parser php_quote_parser = new Php_text_itm_parser().Quote_is_single_(true); // assume values are equivalent to php single quote; DATE:2014-08-06 public void Exec(byte[] src) { - List_adp tmp_list = List_adp_.new_(); Byte_obj_ref tmp_result = Byte_obj_ref.zero_(); Bry_bfr tmp_bfr = Bry_bfr.reset_(16); + List_adp tmp_list = List_adp_.New(); Byte_obj_ref tmp_result = Byte_obj_ref.zero_(); Bry_bfr tmp_bfr = Bry_bfr_.Reset(16); Json_doc jdoc = json_parser.Parse(src); this.Exec_bgn(); Json_nde root = jdoc.Root_nde(); @@ -49,7 +49,7 @@ abstract class Json_itm_wkr__base implements Json_itm_wkr { @gplx.Virtual public void Exec_bgn() {} @gplx.Virtual public void Exec_end() {} public abstract void Read_kv_sub(byte[] key, byte[] val); - private static final byte[] Name_metadata = Bry_.new_a7("@metadata"); + private static final byte[] Name_metadata = Bry_.new_a7("@metadata"); } class Json_itm_wkr__gfs extends Json_itm_wkr__base { private Xoa_gfs_bldr gfs_bldr = new Xoa_gfs_bldr(); diff --git a/400_xowa/src/gplx/xowa/langs/bldrs/Xobc_utl_make_lang.java b/400_xowa/src/gplx/xowa/langs/bldrs/Xobc_utl_make_lang.java index 8aa6feb71..ff6db0044 100644 --- a/400_xowa/src/gplx/xowa/langs/bldrs/Xobc_utl_make_lang.java +++ b/400_xowa/src/gplx/xowa/langs/bldrs/Xobc_utl_make_lang.java @@ -19,16 +19,16 @@ package gplx.xowa.langs.bldrs; import gplx.*; import gplx.xowa.*; import gplx.xo import gplx.core.log_msgs.*; import gplx.xowa.apps.fsys.*; import gplx.xowa.langs.*; -public class Xobc_utl_make_lang implements GfoInvkAble { - private final Xoa_lang_mgr lang_mgr; private final Xoa_fsys_mgr fsys_mgr; Xol_mw_lang_parser lang_parser; +public class Xobc_utl_make_lang implements Gfo_invk { + private final Xoa_lang_mgr lang_mgr; private final Xoa_fsys_mgr fsys_mgr; Xol_mw_lang_parser lang_parser; public Xobc_utl_make_lang(Xoa_lang_mgr lang_mgr, Xoa_fsys_mgr fsys_mgr, Gfo_msg_log msg_log) { this.lang_mgr = lang_mgr; this.fsys_mgr = fsys_mgr; kwd_mgr = new Xobc_utl_make_lang_kwds(lang_mgr); lang_parser = new Xol_mw_lang_parser(msg_log); } public Xobc_utl_make_lang_kwds Kwd_mgr() {return kwd_mgr;} private Xobc_utl_make_lang_kwds kwd_mgr; - public Ordered_hash Manual_text_bgn_hash() {return manual_text_bgn_hash;} private final Ordered_hash manual_text_bgn_hash = Ordered_hash_.New_bry(); - public Ordered_hash Manual_text_end_hash() {return manual_text_end_hash;} private final Ordered_hash manual_text_end_hash = Ordered_hash_.New_bry(); + public Ordered_hash Manual_text_bgn_hash() {return manual_text_bgn_hash;} private final Ordered_hash manual_text_bgn_hash = Ordered_hash_.New_bry(); + public Ordered_hash Manual_text_end_hash() {return manual_text_end_hash;} private final Ordered_hash manual_text_end_hash = Ordered_hash_.New_bry(); public void Bld_all() { Io_url lang_root = fsys_mgr.Cfg_lang_core_dir().OwnerDir(); // OwnerDir to get "/lang/" in "/cfg/lang/core/" lang_parser.Parse_mediawiki(lang_mgr, lang_root.GenSubDir("mediawiki"), kwd_mgr); @@ -44,7 +44,7 @@ public class Xobc_utl_make_lang implements GfoInvkAble { else if (ctx.Match(k, Invk_build_all)) Bld_all(); else if (ctx.Match(k, Invk_manual_text_bgn)) Parse_manual_text(m.ReadBry("langs"), m.ReadBry("text"), manual_text_bgn_hash); else if (ctx.Match(k, Invk_manual_text_end)) Parse_manual_text(m.ReadBry("langs"), m.ReadBry("text"), manual_text_end_hash); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String Invk_kwds = "keywords", Invk_manual_text_bgn = "manual_text_bgn", Invk_manual_text_end = "manual_text_end", Invk_build_all = "build_all"; } diff --git a/400_xowa/src/gplx/xowa/langs/bldrs/Xobc_utl_make_lang_kwds.java b/400_xowa/src/gplx/xowa/langs/bldrs/Xobc_utl_make_lang_kwds.java index 7f55bb177..bb39d5b62 100644 --- a/400_xowa/src/gplx/xowa/langs/bldrs/Xobc_utl_make_lang_kwds.java +++ b/400_xowa/src/gplx/xowa/langs/bldrs/Xobc_utl_make_lang_kwds.java @@ -17,14 +17,14 @@ along with this program. If not, see . */ package gplx.xowa.langs.bldrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*; import gplx.xowa.langs.*; import gplx.xowa.langs.kwds.*; import gplx.xowa.langs.parsers.*; -public class Xobc_utl_make_lang_kwds implements GfoInvkAble, Xol_lang_transform { - private final Xoa_lang_mgr lang_mgr; +public class Xobc_utl_make_lang_kwds implements Gfo_invk, Xol_lang_transform { + private final Xoa_lang_mgr lang_mgr; public Xobc_utl_make_lang_kwds(Xoa_lang_mgr lang_mgr) {this.lang_mgr = lang_mgr;} public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_keep_trailing_colon)) Parse_keep_trailing_colon(m.ReadBry("langs"), m.ReadBry("text")); else if (ctx.Match(k, Invk_prepend_hash)) Parse_prepend_hash(m.ReadBry("langs"), m.ReadBry("text")); else if (ctx.Match(k, Invk_add_words)) Parse_add_words(m.ReadBry("langs"), m.ReadBry("text")); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String Invk_keep_trailing_colon = "keep_trailing_colon", Invk_prepend_hash = "prepend_hash", Invk_add_words = "add_words"; @@ -103,7 +103,7 @@ public class Xobc_utl_make_lang_kwds implements GfoInvkAble, Xol_lang_transform int src_len = src.length, pos = 0, fld_bgn = 0; byte[] cur_key = Bry_.Empty; Xol_csv_parser csv_parser = Xol_csv_parser.Instance; - List_adp rv = List_adp_.new_(); int fld_idx = 0; + List_adp rv = List_adp_.New(); int fld_idx = 0; while (true) { boolean last = pos == src_len; // NOTE: logic occurs b/c of \n}~-> dlm which gobbles up last \n byte b = last ? Byte_ascii.Nl : src[pos]; diff --git a/400_xowa/src/gplx/xowa/langs/bldrs/Xol_mw_lang_parser.java b/400_xowa/src/gplx/xowa/langs/bldrs/Xol_mw_lang_parser.java index 5b4172ce6..92700bbd0 100644 --- a/400_xowa/src/gplx/xowa/langs/bldrs/Xol_mw_lang_parser.java +++ b/400_xowa/src/gplx/xowa/langs/bldrs/Xol_mw_lang_parser.java @@ -61,7 +61,7 @@ public class Xol_mw_lang_parser { if (itm != null) bldr.Bfr().Add(itm[1]); } public void Parse_mediawiki(Xoa_lang_mgr lang_mgr, Io_url mediawiki_root, Xol_lang_transform lang_transform) { - Bry_bfr bfr = Bry_bfr.new_(); + Bry_bfr bfr = Bry_bfr_.New(); Parse_file_core_php(lang_mgr, mediawiki_root, bfr, lang_transform); Parse_file_xtns_php(lang_mgr, mediawiki_root, bfr, lang_transform); Parse_file_json(lang_mgr, bfr, lang_transform, mediawiki_root.GenSubDir("core_json")); @@ -116,7 +116,7 @@ public class Xol_mw_lang_parser { parser.Parse_tkns(text, evaluator); Php_line[] lines = (Php_line[])evaluator.List().To_ary(Php_line.class); int lines_len = lines.length; - List_adp bry_list = List_adp_.new_(); + List_adp bry_list = List_adp_.New(); for (int i = 0; i < lines_len; i++) { Php_line_assign line = (Php_line_assign)lines[i]; byte[] key = line.Key().Val_obj_bry(); @@ -172,7 +172,7 @@ public class Xol_mw_lang_parser { public void Parse_xtn(String text, Io_url url, Xoa_lang_mgr lang_mgr, Bry_bfr bfr, boolean prepend_hash, Xol_lang_transform lang_transform) { evaluator.Clear(); parser.Parse_tkns(text, evaluator); - List_adp bry_list = List_adp_.new_(); + List_adp bry_list = List_adp_.New(); Php_line[] lines = (Php_line[])evaluator.List().To_ary(Php_line.class); int lines_len = lines.length; for (int i = 0; i < lines_len; i++) { @@ -235,7 +235,7 @@ public class Xol_mw_lang_parser { byte[][] brys = (byte[][])rv.To_ary(byte[].class); int brys_len = brys.length; Xol_msg_mgr mgr = lang.Msg_mgr(); - List_adp quote_itm_list = List_adp_.new_(); Byte_obj_ref quote_parse_result = Byte_obj_ref.zero_(); + List_adp quote_itm_list = List_adp_.New(); Byte_obj_ref quote_parse_result = Byte_obj_ref.zero_(); for (int i = 0; i < brys_len; i+=2) { byte[] kv_key = brys[i]; Xol_msg_itm itm = mgr.Itm_by_key_or_new(kv_key); @@ -302,7 +302,7 @@ public class Xol_mw_lang_parser { if (line.Val().Itm_tid() == Php_itm_.Tid_null) return;// en is null; $separatorTransformTable = null; Php_itm_ary ary = (Php_itm_ary)line.Val(); int subs_len = ary.Subs_len(); - List_adp tmp_list = List_adp_.new_(); Byte_obj_ref tmp_result = Byte_obj_ref.zero_(); Bry_bfr tmp_bfr = Bry_bfr.reset_(16); + List_adp tmp_list = List_adp_.New(); Byte_obj_ref tmp_result = Byte_obj_ref.zero_(); Bry_bfr tmp_bfr = Bry_bfr_.Reset(16); for (int i = 0; i < subs_len; i++) { Php_itm_kv kv = (Php_itm_kv)ary.Subs_get(i); byte[] key_bry = Php_itm_.Parse_bry(kv.Key()), val_bry = Php_itm_.Parse_bry(kv.Val()); @@ -315,12 +315,12 @@ public class Xol_mw_lang_parser { num_mgr.Separators_mgr().Set(key_bry, val_bry); else throw Err_.new_unhandled(String_.new_u8(key_bry)); // NOTE: as of v1.22.2, all Messages only have a key of "." or "," DATE:2014-04-15 } - } private static final byte[] Bry_separatorTransformTable_comma = new byte[] {Byte_ascii.Comma}, Bry_separatorTransformTable_dot = new byte[] {Byte_ascii.Dot}; + } private static final byte[] Bry_separatorTransformTable_comma = new byte[] {Byte_ascii.Comma}, Bry_separatorTransformTable_dot = new byte[] {Byte_ascii.Dot}; private void Parse_digitTransformTable(Php_line_assign line, Xol_num_mgr num_mgr) { if (line.Val().Itm_tid() == Php_itm_.Tid_null) return;// en is null; $digitTransformTable = null; Php_itm_ary ary = (Php_itm_ary)line.Val(); int subs_len = ary.Subs_len(); - List_adp tmp_list = List_adp_.new_(); Byte_obj_ref tmp_result = Byte_obj_ref.zero_(); Bry_bfr tmp_bfr = Bry_bfr.reset_(16); + List_adp tmp_list = List_adp_.New(); Byte_obj_ref tmp_result = Byte_obj_ref.zero_(); Bry_bfr tmp_bfr = Bry_bfr_.Reset(16); for (int i = 0; i < subs_len; i++) { Php_itm_kv kv = (Php_itm_kv)ary.Subs_get(i); byte[] key_bry = Php_itm_.Parse_bry(kv.Key()), val_bry = Php_itm_.Parse_bry(kv.Val()); diff --git a/400_xowa/src/gplx/xowa/langs/bldrs/Xol_mw_lang_parser_tst.java b/400_xowa/src/gplx/xowa/langs/bldrs/Xol_mw_lang_parser_tst.java index 2c416161b..353b67ef2 100644 --- a/400_xowa/src/gplx/xowa/langs/bldrs/Xol_mw_lang_parser_tst.java +++ b/400_xowa/src/gplx/xowa/langs/bldrs/Xol_mw_lang_parser_tst.java @@ -239,7 +239,7 @@ public class Xol_mw_lang_parser_tst { } class Xol_mw_lang_parser_fxt { Xoae_app app; Xowe_wiki wiki; private Xop_fxt fxt; - Xol_mw_lang_parser parser = new Xol_mw_lang_parser(Gfo_msg_log.Test()); Bry_bfr tmp_bfr = Bry_bfr.reset_(255); + Xol_mw_lang_parser parser = new Xol_mw_lang_parser(Gfo_msg_log.Test()); Bry_bfr tmp_bfr = Bry_bfr_.Reset(255); public void Clear() { if (app == null) { app = Xoa_app_fxt.Make__app__edit(); diff --git a/400_xowa/src/gplx/xowa/langs/bldrs/Xol_ns_grp.java b/400_xowa/src/gplx/xowa/langs/bldrs/Xol_ns_grp.java index 129ab0f0d..bf430ec90 100644 --- a/400_xowa/src/gplx/xowa/langs/bldrs/Xol_ns_grp.java +++ b/400_xowa/src/gplx/xowa/langs/bldrs/Xol_ns_grp.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.xowa.langs.bldrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*; import gplx.xowa.wikis.nss.*; import gplx.xowa.langs.parsers.*; -public class Xol_ns_grp implements GfoInvkAble { +public class Xol_ns_grp implements Gfo_invk { public Xol_ns_grp(Xol_lang_itm lang) {this.lang = lang;} private Xol_lang_itm lang; public int Len() {return ary.length;} public Xow_ns Get_at(int i) {return ary[i];} private Xow_ns[] ary = Ary_empty; @@ -33,11 +33,11 @@ public class Xol_ns_grp implements GfoInvkAble { new_ary[i + old_ary_len] = add_ary[i]; this.ary = new_ary; } - private static final Xow_ns[] Ary_empty = new Xow_ns[0]; + private static final Xow_ns[] Ary_empty = new Xow_ns[0]; public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_lang)) return lang; else if (ctx.Match(k, Invk_load_text)) Exec_load_text(m.ReadBry("v")); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String Invk_lang = Xol_lang_srl.Invk_lang, Invk_load_text = Xol_lang_srl.Invk_load_text; private void Exec_load_text(byte[] bry) { diff --git a/400_xowa/src/gplx/xowa/langs/cases/Xol_case_itm_.java b/400_xowa/src/gplx/xowa/langs/cases/Xol_case_itm_.java index 75fed188c..0f17b3aa3 100644 --- a/400_xowa/src/gplx/xowa/langs/cases/Xol_case_itm_.java +++ b/400_xowa/src/gplx/xowa/langs/cases/Xol_case_itm_.java @@ -27,7 +27,7 @@ public class Xol_case_itm_ { return new Xol_case_itm_bry(tid, src, trg); } public static Xol_case_itm[] parse_xo_(byte[] src) { - List_adp list = List_adp_.new_(); + List_adp list = List_adp_.New(); int src_len = src.length, src_pos = 0, fld_bgn = 0, fld_idx = 0; byte cur_cmd = Byte_.Zero; byte[] cur_lhs = null; @@ -144,6 +144,6 @@ public class Xol_case_itm_ { ++pos; } return pos; - } private static final byte[] parse_mw_upper= Bry_.new_a7("wikiUpperChars"), parse_mw_lower= Bry_.new_a7("wikiLowerChars"), Bry_upper = Bry_.new_a7("upper"), Bry_lower = Bry_.new_a7("lower"), Bry_pipe = Bry_.new_a7("|"); + } private static final byte[] parse_mw_upper= Bry_.new_a7("wikiUpperChars"), parse_mw_lower= Bry_.new_a7("wikiLowerChars"), Bry_upper = Bry_.new_a7("upper"), Bry_lower = Bry_.new_a7("lower"), Bry_pipe = Bry_.new_a7("|"); static final String GRP_KEY = "xowa.langs.case_parser"; } diff --git a/400_xowa/src/gplx/xowa/langs/cases/Xol_case_mgr.java b/400_xowa/src/gplx/xowa/langs/cases/Xol_case_mgr.java index 5e068f659..b3d2a0018 100644 --- a/400_xowa/src/gplx/xowa/langs/cases/Xol_case_mgr.java +++ b/400_xowa/src/gplx/xowa/langs/cases/Xol_case_mgr.java @@ -17,8 +17,8 @@ along with this program. If not, see . */ package gplx.xowa.langs.cases; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*; import gplx.core.btries.*; import gplx.core.intls.*; -public class Xol_case_mgr implements GfoInvkAble, Gfo_case_mgr { - private Bry_bfr tmp_bfr = Bry_bfr.new_(); private Btrie_fast_mgr upper_trie = Btrie_fast_mgr.cs(), lower_trie = Btrie_fast_mgr.cs(); private Xol_case_itm[] itms; +public class Xol_case_mgr implements Gfo_invk, Gfo_case_mgr { + private Bry_bfr tmp_bfr = Bry_bfr_.New(); private Btrie_fast_mgr upper_trie = Btrie_fast_mgr.cs(), lower_trie = Btrie_fast_mgr.cs(); private Xol_case_itm[] itms; public Xol_case_mgr(byte tid) {this.tid = tid;} public byte Tid() {return tid;} private byte tid; public Gfo_case_itm Get_or_null(byte bgn_byte, byte[] src, int bgn, int end) { @@ -130,7 +130,7 @@ public class Xol_case_mgr implements GfoInvkAble, Gfo_case_mgr { public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_add_bulk)) Add_bulk(m.ReadBry("v")); else if (ctx.Match(k, Invk_clear)) throw Err_.new_unimplemented(); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String Invk_clear = "clear", Invk_add_bulk = "add_bulk"; } diff --git a/400_xowa/src/gplx/xowa/langs/cases/Xol_case_mgr_tst.java b/400_xowa/src/gplx/xowa/langs/cases/Xol_case_mgr_tst.java index c41636c8d..5d0a8373a 100644 --- a/400_xowa/src/gplx/xowa/langs/cases/Xol_case_mgr_tst.java +++ b/400_xowa/src/gplx/xowa/langs/cases/Xol_case_mgr_tst.java @@ -48,7 +48,7 @@ public class Xol_case_mgr_tst { } // @Test public void Hack() { // Xol_case_itm[] ary = Xol_case_mgr_.Utf_8; -// Bry_bfr bfr = Bry_bfr.new_(); +// Bry_bfr bfr = Bry_bfr_.New(); // for (int i = 0; i < ary.length; i++) { // Xol_case_itm itm = ary[i]; // bfr.Add_str_a7("xo|"); @@ -119,7 +119,7 @@ class Xol_case_mgr_fxt { } } return raw_str_(uppers_list.To_str_ary(), lowers_list.To_str_ary()); - } List_adp uppers_list = List_adp_.new_(), lowers_list = List_adp_.new_(); + } List_adp uppers_list = List_adp_.New(), lowers_list = List_adp_.New(); String raw_str_(String[] uppers, String[] lowers) { sb.Add("a:2:{s:14:\"wikiUpperChars\";a:1046:{"); raw_ary(sb, uppers); diff --git a/400_xowa/src/gplx/xowa/langs/durations/Xol_duration_itm_.java b/400_xowa/src/gplx/xowa/langs/durations/Xol_duration_itm_.java index 425f3a8cc..7716158d2 100644 --- a/400_xowa/src/gplx/xowa/langs/durations/Xol_duration_itm_.java +++ b/400_xowa/src/gplx/xowa/langs/durations/Xol_duration_itm_.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.langs.durations; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*; public class Xol_duration_itm_ { - private static final Hash_adp_bry regy = Hash_adp_bry.ci_a7(); // ASCII:MW.consts + private static final Hash_adp_bry regy = Hash_adp_bry.ci_a7(); // ASCII:MW.consts public static final byte Tid_millenia = 0 , Tid_centuries = 1 @@ -29,7 +29,7 @@ public class Xol_duration_itm_ { , Tid_minutes = 7 , Tid_seconds = 8 ; - public static final Xol_duration_itm + public static final Xol_duration_itm Itm_millenia = new_(Tid_millenia , "millenia" , 31556952000L) , Itm_centuries = new_(Tid_centuries , "centuries" , 3155695200L) , Itm_decades = new_(Tid_decades , "decades" , 315569520L) @@ -45,7 +45,7 @@ public class Xol_duration_itm_ { regy.Add(rv.Name_bry(), rv); return rv; } - public static final Xol_duration_itm[] Ary_default = new Xol_duration_itm[] + public static final Xol_duration_itm[] Ary_default = new Xol_duration_itm[] { Itm_millenia , Itm_centuries , Itm_decades @@ -58,7 +58,7 @@ public class Xol_duration_itm_ { }; public static Xol_duration_itm[] Xto_itm_ary(Keyval[] kv_ary) { if (kv_ary == null) return Xol_duration_itm_.Ary_default; - List_adp rv = List_adp_.new_(); + List_adp rv = List_adp_.New(); int len = kv_ary.length; for (int i = 0; i < len; i++) { Keyval kv = kv_ary[i]; @@ -76,5 +76,5 @@ class Xol_duration_itm_sorter implements gplx.core.lists.ComparerAble { Xol_duration_itm rhs = (Xol_duration_itm)rhsObj; return -Long_.Compare(lhs.Seconds(), rhs.Seconds()); // - to sort from largest to smallest } - public static final Xol_duration_itm_sorter Instance = new Xol_duration_itm_sorter(); Xol_duration_itm_sorter() {} + public static final Xol_duration_itm_sorter Instance = new Xol_duration_itm_sorter(); Xol_duration_itm_sorter() {} } diff --git a/400_xowa/src/gplx/xowa/langs/durations/Xol_duration_mgr.java b/400_xowa/src/gplx/xowa/langs/durations/Xol_duration_mgr.java index 720e934b5..2c0550e37 100644 --- a/400_xowa/src/gplx/xowa/langs/durations/Xol_duration_mgr.java +++ b/400_xowa/src/gplx/xowa/langs/durations/Xol_duration_mgr.java @@ -21,13 +21,13 @@ import gplx.xowa.langs.msgs.*; public class Xol_duration_mgr { private Xol_msg_itm[] interval_msgs = null; public Xol_duration_mgr(Xol_lang_itm lang) {this.lang = lang;} private Xol_lang_itm lang; - private Bry_bfr tmp_bfr = Bry_bfr.reset_(255); + private Bry_bfr tmp_bfr = Bry_bfr_.Reset(255); public Xol_interval_itm[] Get_duration_intervals(long seconds, Xol_duration_itm[] intervals) { if (intervals == null) intervals = Xol_duration_itm_.Ary_default; Array_.Sort(intervals, Xol_duration_itm_sorter.Instance); int intervals_len = intervals.length; long val = seconds; - List_adp rv = List_adp_.new_(); + List_adp rv = List_adp_.New(); for (int i = 0; i < intervals_len; i++) { Xol_duration_itm itm = intervals[i]; long itm_seconds = itm.Seconds(); @@ -65,7 +65,7 @@ public class Xol_duration_mgr { byte[] msg_key = Bry_.Add(Bry_duration, itm.Name_bry()); interval_msgs[i] = msg_mgr.Itm_by_key_or_new(msg_key); } - } private static final byte[] Bry_duration = Bry_.new_a7("duration-"); + } private static final byte[] Bry_duration = Bry_.new_a7("duration-"); private void List_to_str_init() { Xol_msg_mgr msg_mgr = lang.Msg_mgr(); Msg_and = msg_mgr.Val_by_str_or_empty("and"); diff --git a/400_xowa/src/gplx/xowa/langs/funcs/Xol_func_regy.java b/400_xowa/src/gplx/xowa/langs/funcs/Xol_func_regy.java index e45443bfe..79e3fa9d0 100644 --- a/400_xowa/src/gplx/xowa/langs/funcs/Xol_func_regy.java +++ b/400_xowa/src/gplx/xowa/langs/funcs/Xol_func_regy.java @@ -36,7 +36,7 @@ public class Xol_func_regy { if (Env_.Mode_testing()) continue; // TEST: allows partial parsing of $magicWords else - list = lang_mgr.Lang_en().Kwd_mgr().Get_at(id); // get from fallback language; TODO: allow other fallback langs besides "English" + list = lang_mgr.Lang_en().Kwd_mgr().Get_at(id); // get from fallback language; TODO_OLD: allow other fallback langs besides "English" } Reg_defn(kwd_mgr, id, Pf_func_.Get_prototype(id)); } diff --git a/400_xowa/src/gplx/xowa/langs/grammars/Xol_grammar_he.java b/400_xowa/src/gplx/xowa/langs/grammars/Xol_grammar_he.java index 3074f24b5..f626b1b4c 100644 --- a/400_xowa/src/gplx/xowa/langs/grammars/Xol_grammar_he.java +++ b/400_xowa/src/gplx/xowa/langs/grammars/Xol_grammar_he.java @@ -19,7 +19,7 @@ package gplx.xowa.langs.grammars; import gplx.*; import gplx.xowa.*; import gplx import gplx.core.btries.*; public class Xol_grammar_he implements Xol_grammar { public boolean Grammar_eval(Bry_bfr bfr, Xol_lang_itm lang, byte[] word, byte[] type) { - // if ( isset( $wgGrammarForms['he'][$case][$word] ) ) return $wgGrammarForms['he'][$case][$word]; // TODO: implement global $wgGrammarForms; WHEN: need to find he.w entries for DefaultSettings.php + // if ( isset( $wgGrammarForms['he'][$case][$word] ) ) return $wgGrammarForms['he'][$case][$word]; // TODO_OLD: implement global $wgGrammarForms; WHEN: need to find he.w entries for DefaultSettings.php if (hash.Get_as_int_or(type, -1) == Tid__prefixed) { // Duplicate the "Waw" if prefixed, but not if it is already double. if ( Bry_.Match(word, 0, 2, Bry__waw__0) // "ו" @@ -39,11 +39,11 @@ public class Xol_grammar_he implements Xol_grammar { return true; } private static final int Tid__prefixed = 1; - private static final Hash_adp_bry hash = Hash_adp_bry.ci_u8(gplx.xowa.langs.cases.Xol_case_mgr_.U8()) + private static final Hash_adp_bry hash = Hash_adp_bry.ci_u8(gplx.xowa.langs.cases.Xol_case_mgr_.U8()) .Add_str_int("prefixed" , Tid__prefixed) .Add_str_int("תחילית" , Tid__prefixed) ; - private static final byte[] + private static final byte[] Bry__waw__0 = Bry_.new_u8("ו"), Bry__waw__1 = Bry_.new_u8("וו") , Bry__he__0 = Bry_.new_u8("ה") , Bry__maqaf__0 = Bry_.new_u8("א"), Bry__maqaf__1 = Bry_.new_u8("ת"), Bry__maqaf__2 = Bry_.new_u8("־") diff --git a/400_xowa/src/gplx/xowa/langs/kwds/Xol_kwd_mgr.java b/400_xowa/src/gplx/xowa/langs/kwds/Xol_kwd_mgr.java index 14df17206..5aee1b133 100644 --- a/400_xowa/src/gplx/xowa/langs/kwds/Xol_kwd_mgr.java +++ b/400_xowa/src/gplx/xowa/langs/kwds/Xol_kwd_mgr.java @@ -18,8 +18,8 @@ along with this program. If not, see . package gplx.xowa.langs.kwds; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*; import gplx.core.btries.*; import gplx.xowa.langs.parsers.*; -public class Xol_kwd_mgr implements GfoInvkAble { - private final Xol_lang_itm lang; private final Xol_kwd_grp[] grps = new Xol_kwd_grp[Xol_kwd_grp_.Id__max]; +public class Xol_kwd_mgr implements Gfo_invk { + private final Xol_lang_itm lang; private final Xol_kwd_grp[] grps = new Xol_kwd_grp[Xol_kwd_grp_.Id__max]; private Btrie_slim_mgr kwd_default_trie; private byte[] kwd_default_key; private boolean kwd_default_init_needed = true; public Xol_kwd_mgr(Xol_lang_itm lang) {this.lang = lang;} public int Len() {return grps.length;} @@ -71,7 +71,7 @@ public class Xol_kwd_mgr implements GfoInvkAble { public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_lang)) return lang; else if (ctx.Match(k, Invk_load_text)) Xol_lang_srl.Load_keywords(this, m.ReadBry("v")); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String Invk_lang = Xol_lang_srl.Invk_lang, Invk_load_text = Xol_lang_srl.Invk_load_text; public static Btrie_slim_mgr trie_(Xol_kwd_mgr mgr, int id) { diff --git a/400_xowa/src/gplx/xowa/langs/kwds/Xol_kwd_parse_data_tst.java b/400_xowa/src/gplx/xowa/langs/kwds/Xol_kwd_parse_data_tst.java index a28e6ec44..6f372b119 100644 --- a/400_xowa/src/gplx/xowa/langs/kwds/Xol_kwd_parse_data_tst.java +++ b/400_xowa/src/gplx/xowa/langs/kwds/Xol_kwd_parse_data_tst.java @@ -29,7 +29,7 @@ public class Xol_kwd_parse_data_tst { } Xol_kwd_parse_data_tst Key_(String v) {this.key = v; return this;} private String key; Xol_kwd_parse_data_tst Tst_strip(String v) { - Bry_bfr tmp = Bry_bfr.new_(); + Bry_bfr tmp = Bry_bfr_.New(); Byte_obj_ref rslt = Byte_obj_ref.zero_(); byte[] actl = Xol_kwd_parse_data.Strip(tmp, Bry_.new_a7(v), rslt); Tfds.Eq(key, String_.new_a7(actl)); diff --git a/400_xowa/src/gplx/xowa/langs/lnki_trails/Xol_lnki_trail_mgr.java b/400_xowa/src/gplx/xowa/langs/lnki_trails/Xol_lnki_trail_mgr.java index bf5cc64b9..73abcd6b2 100644 --- a/400_xowa/src/gplx/xowa/langs/lnki_trails/Xol_lnki_trail_mgr.java +++ b/400_xowa/src/gplx/xowa/langs/lnki_trails/Xol_lnki_trail_mgr.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.langs.lnki_trails; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*; import gplx.core.btries.*; -public class Xol_lnki_trail_mgr implements GfoInvkAble { +public class Xol_lnki_trail_mgr implements Gfo_invk { public Xol_lnki_trail_mgr(Xol_lang_itm lang) {} public void Clear() {trie.Clear();} public int Count() {return trie.Count();} @@ -35,7 +35,7 @@ public class Xol_lnki_trail_mgr implements GfoInvkAble { else if (ctx.Match(k, Invk_add_many)) Add_many(m); else if (ctx.Match(k, Invk_add_bulk)) Add_bulk(m); else if (ctx.Match(k, Invk_clear)) Clear(); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String Invk_add_many = "add_many", Invk_add_range = "add_range", Invk_add_bulk = "add_bulk", Invk_clear = "clear"; private void Add_bulk(GfoMsg m) {byte[] src = m.ReadBry("bulk"); Add_bulk(src);} diff --git a/400_xowa/src/gplx/xowa/langs/msgs/Xol_msg_itm_.java b/400_xowa/src/gplx/xowa/langs/msgs/Xol_msg_itm_.java index 06aeb2cf6..1cfa0a21e 100644 --- a/400_xowa/src/gplx/xowa/langs/msgs/Xol_msg_itm_.java +++ b/400_xowa/src/gplx/xowa/langs/msgs/Xol_msg_itm_.java @@ -259,16 +259,16 @@ public static final int update_val_(rv, val); return rv; } - private static final Bry_fmtr tmp_fmtr = Bry_fmtr.tmp_().Fail_when_invalid_escapes_(false); - private static final Bry_bfr tmp_bfr = Bry_bfr.reset_(255); + private static final Bry_fmtr tmp_fmtr = Bry_fmtr.tmp_().Fail_when_invalid_escapes_(false); + private static final Bry_bfr tmp_bfr = Bry_bfr_.Reset(255); public static void update_val_(Xol_msg_itm itm, byte[] val) { boolean has_fmt_arg = tmp_fmtr.Fmt_(val).Compile().Fmt_args_exist(); boolean has_tmpl_txt = Bry_find_.Find_fwd(val, Xop_curly_bgn_lxr.Hook, 0) != -1; val = trie_space.Replace(tmp_bfr, val, 0, val.length); itm.Atrs_set(val, has_fmt_arg, has_tmpl_txt); } - public static final byte[] Bry_nbsp = Byte_.Ary_by_ints(194, 160); - private static final Btrie_slim_mgr trie_space = Btrie_slim_mgr.cs() // MW:cache/MessageCache.php|get|Fix for trailing whitespace, removed by textarea|DATE:2014-04-29 + public static final byte[] Bry_nbsp = Byte_.Ary_by_ints(194, 160); + private static final Btrie_slim_mgr trie_space = Btrie_slim_mgr.cs() // MW:cache/MessageCache.php|get|Fix for trailing whitespace, removed by textarea|DATE:2014-04-29 .Add_bry(" " , " ") .Add_bry(" " , Bry_nbsp) .Add_bry(" " , Bry_nbsp) diff --git a/400_xowa/src/gplx/xowa/langs/msgs/Xol_msg_mgr.java b/400_xowa/src/gplx/xowa/langs/msgs/Xol_msg_mgr.java index e4bcfc46f..437786a84 100644 --- a/400_xowa/src/gplx/xowa/langs/msgs/Xol_msg_mgr.java +++ b/400_xowa/src/gplx/xowa/langs/msgs/Xol_msg_mgr.java @@ -17,9 +17,9 @@ along with this program. If not, see . */ package gplx.xowa.langs.msgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*; import gplx.xowa.langs.parsers.*; -public class Xol_msg_mgr implements GfoInvkAble { - private final GfoInvkAble owner; private final boolean owner_is_lang; - public Xol_msg_mgr(GfoInvkAble owner, boolean owner_is_lang) { +public class Xol_msg_mgr implements Gfo_invk { + private final Gfo_invk owner; private final boolean owner_is_lang; + public Xol_msg_mgr(Gfo_invk owner, boolean owner_is_lang) { this.owner = owner; this.owner_is_lang = owner_is_lang; this.Clear(); } @@ -76,7 +76,7 @@ public class Xol_msg_mgr implements GfoInvkAble { public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_lang)) return owner; else if (ctx.Match(k, Invk_load_text)) Xol_lang_srl.Load_messages(this, m.ReadBry("v")); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String Invk_lang = Xol_lang_srl.Invk_lang, Invk_load_text = Xol_lang_srl.Invk_load_text; private void Itms_reg(Xol_msg_itm itm) { diff --git a/400_xowa/src/gplx/xowa/langs/msgs/Xol_msg_mgr_.java b/400_xowa/src/gplx/xowa/langs/msgs/Xol_msg_mgr_.java index a3a044adc..fea4d6b43 100644 --- a/400_xowa/src/gplx/xowa/langs/msgs/Xol_msg_mgr_.java +++ b/400_xowa/src/gplx/xowa/langs/msgs/Xol_msg_mgr_.java @@ -45,7 +45,7 @@ public class Xol_msg_mgr_ { byte[] rv = Get_msg_val(tmp_bfr, wiki, msg_itm, fmt_args); tmp_bfr.Mkr_rls(); return rv; - } private static final byte[] Missing_bry = Bry_.new_a7("$"), Slash_bry = new byte[] {Byte_ascii.Slash}; + } private static final byte[] Missing_bry = Bry_.new_a7("$"), Slash_bry = new byte[] {Byte_ascii.Slash}; public static byte[] Get_msg_val(Bry_bfr tmp_bfr, Xowe_wiki wiki, Xol_msg_itm msg_itm, byte[][] fmt_args) { byte[] msg_val = msg_itm.Val(); boolean has_fmt = msg_itm.Has_fmt_arg(), has_tmpl = msg_itm.Has_tmpl_txt(); @@ -104,14 +104,14 @@ public class Xol_msg_mgr_ { private static Xoae_page Get_msg_itm_from_db(Xowe_wiki wiki, Xol_lang_itm lang, byte[] msg_key, byte[] msg_key_sub_root) { byte[] ns_bry = wiki.Ns_mgr().Ns_mediawiki().Name_db_w_colon(); Xoa_ttl ttl = wiki.Ttl_parse(Bry_.Add(ns_bry, msg_key)); // ttl="MediaWiki:msg_key"; note that there may be "/lang"; EX:pl.d:Wikislownik:Bar/Archiwum_6 and newarticletext/pl - Xoae_page rv = ttl == null ? Xoae_page.Empty : wiki.Data_mgr().Get_page_from_msg(ttl); + Xoae_page rv = ttl == null ? Xoae_page.Empty : wiki.Data_mgr().Load_page_by_ttl_for_msg(ttl); if (rv.Missing()) { // [[MediaWiki:key]] not found; search for [[MediaWiki:key/fallback]] byte[][] fallback_ary = lang.Fallback_bry_ary(); int fallback_ary_len = fallback_ary.length; for (int i = 0; i < fallback_ary_len; i++) { byte[] fallback = fallback_ary[i]; ttl = wiki.Ttl_parse(Bry_.Add(ns_bry, msg_key_sub_root, Slash_bry, fallback)); // ttl="MediaWiki:msg_key/fallback" - rv = ttl == null ? Xoae_page.Empty : wiki.Data_mgr().Get_page_from_msg(ttl); + rv = ttl == null ? Xoae_page.Empty : wiki.Data_mgr().Load_page_by_ttl_for_msg(ttl); if (!rv.Missing()) break; } } diff --git a/400_xowa/src/gplx/xowa/langs/msgs/Xow_msg_mgr.java b/400_xowa/src/gplx/xowa/langs/msgs/Xow_msg_mgr.java index 3a81a37ec..09cf02315 100644 --- a/400_xowa/src/gplx/xowa/langs/msgs/Xow_msg_mgr.java +++ b/400_xowa/src/gplx/xowa/langs/msgs/Xow_msg_mgr.java @@ -17,8 +17,8 @@ along with this program. If not, see . */ package gplx.xowa.langs.msgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*; import gplx.xowa.htmls.sidebar.*; -public class Xow_msg_mgr implements GfoInvkAble { - private final Xowe_wiki wiki; private Xol_lang_itm lang; private final Xol_msg_mgr msg_mgr; +public class Xow_msg_mgr implements Gfo_invk { + private final Xowe_wiki wiki; private Xol_lang_itm lang; private final Xol_msg_mgr msg_mgr; public Xow_msg_mgr(Xowe_wiki wiki, Xol_lang_itm lang) { this.wiki = wiki; this.lang = lang; @@ -104,10 +104,10 @@ public class Xow_msg_mgr implements GfoInvkAble { itm.Accesskey_(accesskey_val).Title_(tooltip_val).Atr_accesskey_and_title_(rv); return null; } - } static final byte[] CONST_prefix_tooltip = Bry_.new_a7("tooltip-"), CONST_prefix_accesskey = Bry_.new_a7("accesskey-"), CONST_atr_title = Bry_.new_a7(" title=\""), CONST_atr_accesskey = Bry_.new_a7(" accesskey=\""); + } static final byte[] CONST_prefix_tooltip = Bry_.new_a7("tooltip-"), CONST_prefix_accesskey = Bry_.new_a7("accesskey-"), CONST_atr_title = Bry_.new_a7(" title=\""), CONST_atr_accesskey = Bry_.new_a7(" accesskey=\""); public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_get)) return this.Val_by_key_obj(m.ReadBry("v")); else if (ctx.Match(k, Invk_get_html_accesskey_and_title)) return this.Val_html_accesskey_and_title(m.ReadBry("v")); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; } private static final String Invk_get = "get", Invk_get_html_accesskey_and_title = "get_html_accesskey_and_title"; } diff --git a/400_xowa/src/gplx/xowa/langs/numbers/Xol_num_fmtr_base.java b/400_xowa/src/gplx/xowa/langs/numbers/Xol_num_fmtr_base.java index b69e350a5..3b1d98ffe 100644 --- a/400_xowa/src/gplx/xowa/langs/numbers/Xol_num_fmtr_base.java +++ b/400_xowa/src/gplx/xowa/langs/numbers/Xol_num_fmtr_base.java @@ -17,11 +17,11 @@ along with this program. If not, see . */ package gplx.xowa.langs.numbers; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*; import gplx.core.primitives.*; import gplx.core.btries.*; -public class Xol_num_fmtr_base implements GfoInvkAble { +public class Xol_num_fmtr_base implements Gfo_invk { private Btrie_fast_mgr dlm_trie = Btrie_fast_mgr.cs(); private Xol_num_grp[] grp_ary = Xol_num_grp.Ary_empty; int grp_ary_len; private Gfo_num_fmt_wkr[] cache; int cache_len = 16; - private Bry_bfr tmp = Bry_bfr.new_(); + private Bry_bfr tmp = Bry_bfr_.New(); public boolean Standard() {return standard;} private boolean standard = true; public byte[] Dec_dlm() {return dec_dlm;} public Xol_num_fmtr_base Dec_dlm_(byte[] v) {this.dec_dlm = v; dlm_trie.Add_bry_byte(v, Raw_tid_dec); return this;} private byte[] dec_dlm = Dec_dlm_default; private byte[] grp_dlm; @@ -136,13 +136,13 @@ public class Xol_num_fmtr_base implements GfoInvkAble { if (ctx.Match(k, Invk_dec_dlm_)) this.Dec_dlm_(m.ReadBry("v")); // NOTE: must call mutator else if (ctx.Match(k, Invk_clear)) this.Clear(); else if (ctx.Match(k, Invk_grps_add)) this.Grps_add(new Xol_num_grp(m.ReadBry("dlm"), m.ReadInt("digits"), m.ReadYn("repeat"))); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } public static final String Invk_dec_dlm_ = "dec_dlm_", Invk_clear = "clear", Invk_grps_add = "grps_add"; private static final byte Raw_tid_dec = 0, Raw_tid_grp = 1; - private static final byte[] Dec_dlm_default = new byte[] {Byte_ascii.Dot}; - public static final byte[] Grp_dlm_default = new byte[] {Byte_ascii.Comma}; + private static final byte[] Dec_dlm_default = new byte[] {Byte_ascii.Dot}; + public static final byte[] Grp_dlm_default = new byte[] {Byte_ascii.Comma}; public static final byte Tid_format = 0, Tid_raw = 1, Tid_nosep = 2; } class Gfo_num_fmt_wkr { diff --git a/400_xowa/src/gplx/xowa/langs/numbers/Xol_num_grp_fmtr_tst.java b/400_xowa/src/gplx/xowa/langs/numbers/Xol_num_grp_fmtr_tst.java index 1e07425b9..64bcea909 100644 --- a/400_xowa/src/gplx/xowa/langs/numbers/Xol_num_grp_fmtr_tst.java +++ b/400_xowa/src/gplx/xowa/langs/numbers/Xol_num_grp_fmtr_tst.java @@ -45,7 +45,7 @@ public class Xol_num_grp_fmtr_tst { } class Xol_num_grp_fmtr_fxt { private Xol_num_grp_fmtr grouper = new Xol_num_grp_fmtr(); - private Bry_bfr bfr = Bry_bfr.new_(); + private Bry_bfr bfr = Bry_bfr_.New(); public void Reset() {} public void Test_fmt_regx(String raw, String expd) { byte[] actl = grouper.Fmt_regx(bfr, Bry_.new_a7(raw)); diff --git a/400_xowa/src/gplx/xowa/langs/numbers/Xol_num_mgr.java b/400_xowa/src/gplx/xowa/langs/numbers/Xol_num_mgr.java index da2c6c66e..aa21d5aa7 100644 --- a/400_xowa/src/gplx/xowa/langs/numbers/Xol_num_mgr.java +++ b/400_xowa/src/gplx/xowa/langs/numbers/Xol_num_mgr.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.numbers; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*; -public class Xol_num_mgr implements GfoInvkAble { +public class Xol_num_mgr implements Gfo_invk { private boolean digits_translate; - protected Bry_bfr tmp_bfr = Bry_bfr.reset_(32); - private static final byte[] Comma_bry = Bry_.new_a7(","); + protected Bry_bfr tmp_bfr = Bry_bfr_.Reset(32); + private static final byte[] Comma_bry = Bry_.new_a7(","); public Xol_num_grp_fmtr Num_grp_fmtr() {return num_grp_fmtr;} private Xol_num_grp_fmtr num_grp_fmtr = new Xol_num_grp_fmtr(); public Xol_transform_mgr Separators_mgr() {return separators_mgr;} private Xol_transform_mgr separators_mgr = new Xol_transform_mgr(); public Xol_transform_mgr Digits_mgr() {return digits_mgr;} private Xol_transform_mgr digits_mgr = new Xol_transform_mgr(); @@ -62,12 +62,12 @@ public class Xol_num_mgr implements GfoInvkAble { else if (ctx.Match(k, Invk_digits)) {digits_translate = true; return digits_mgr;} // NOTE: only langes with a digit_transform_table will call digits; DATE:2014-05-28 else if (ctx.Match(k, Invk_digit_grouping_pattern)) return String_.new_u8(num_grp_fmtr.Digit_grouping_pattern()); else if (ctx.Match(k, Invk_digit_grouping_pattern_)) num_grp_fmtr.Digit_grouping_pattern_(m.ReadBry("v")); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } public static final String Invk_clear = "clear", Invk_separators = "separators" , Invk_digits = "digits", Invk_digit_grouping_pattern = "digit_grouping_pattern", Invk_digit_grouping_pattern_ = "digit_grouping_pattern_"; - public static final byte[] + public static final byte[] Separators_key__grp = new byte[]{Byte_ascii.Comma} , Separators_key__dec = new byte[]{Byte_ascii.Dot} ; diff --git a/400_xowa/src/gplx/xowa/langs/numbers/Xol_transform_mgr.java b/400_xowa/src/gplx/xowa/langs/numbers/Xol_transform_mgr.java index 3545742a6..552a477c2 100644 --- a/400_xowa/src/gplx/xowa/langs/numbers/Xol_transform_mgr.java +++ b/400_xowa/src/gplx/xowa/langs/numbers/Xol_transform_mgr.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.langs.numbers; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*; import gplx.core.btries.*; -public class Xol_transform_mgr implements GfoInvkAble { +public class Xol_transform_mgr implements Gfo_invk { private Btrie_fast_mgr trie_k_to_v = Btrie_fast_mgr.cs(); private Btrie_fast_mgr trie_v_to_k = Btrie_fast_mgr.cs(); private Ordered_hash hash = Ordered_hash_.New_bry(); @@ -47,7 +47,7 @@ public class Xol_transform_mgr implements GfoInvkAble { public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_set)) Set(m.ReadBry("k"), m.ReadBry("v")); else if (ctx.Match(k, Invk_clear)) Clear(); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } public static final String Invk_set = "set", Invk_clear = "clear"; diff --git a/400_xowa/src/gplx/xowa/langs/parsers/Xol_csv_parser.java b/400_xowa/src/gplx/xowa/langs/parsers/Xol_csv_parser.java index 98a65c130..dbb53cc87 100644 --- a/400_xowa/src/gplx/xowa/langs/parsers/Xol_csv_parser.java +++ b/400_xowa/src/gplx/xowa/langs/parsers/Xol_csv_parser.java @@ -76,7 +76,7 @@ public class Xol_csv_parser { } } } - private static final byte[] Bry_pipe = Bry_.new_a7("\\u007C"); - private static final Bry_bfr tmp_bfr = Bry_bfr.reset_(255); - public static final Xol_csv_parser Instance = new Xol_csv_parser(); Xol_csv_parser() {} + private static final byte[] Bry_pipe = Bry_.new_a7("\\u007C"); + private static final Bry_bfr tmp_bfr = Bry_bfr_.Reset(255); + public static final Xol_csv_parser Instance = new Xol_csv_parser(); Xol_csv_parser() {} } diff --git a/400_xowa/src/gplx/xowa/langs/parsers/Xol_csv_parser_tst.java b/400_xowa/src/gplx/xowa/langs/parsers/Xol_csv_parser_tst.java index f89454164..35ffe5865 100644 --- a/400_xowa/src/gplx/xowa/langs/parsers/Xol_csv_parser_tst.java +++ b/400_xowa/src/gplx/xowa/langs/parsers/Xol_csv_parser_tst.java @@ -27,7 +27,7 @@ public class Xol_csv_parser_tst { @Test public void Utf() {fxt.Tst_load(" ", "\\u00c2\\u00a0");} // NOTE: 1st String is nbsp; } class Xol_csv_parser_fxt { - Xol_csv_parser parser = Xol_csv_parser.Instance; Bry_bfr tmp_bfr = Bry_bfr.reset_(255); + Xol_csv_parser parser = Xol_csv_parser.Instance; Bry_bfr tmp_bfr = Bry_bfr_.Reset(255); public void Clear() {} public void Tst_save(String raw, String expd) { parser.Save(tmp_bfr, Bry_.new_u8(raw)); diff --git a/400_xowa/src/gplx/xowa/langs/parsers/Xol_lang_srl.java b/400_xowa/src/gplx/xowa/langs/parsers/Xol_lang_srl.java index 8309bd1e7..7213b90c0 100644 --- a/400_xowa/src/gplx/xowa/langs/parsers/Xol_lang_srl.java +++ b/400_xowa/src/gplx/xowa/langs/parsers/Xol_lang_srl.java @@ -24,7 +24,7 @@ public class Xol_lang_srl { public static Xow_ns[] Load_ns_grps(byte[] src) { int src_len = src.length, pos = 0, fld_bgn = 0; int cur_id = -1; - List_adp rv = List_adp_.new_(); Xol_csv_parser csv_parser = Xol_csv_parser.Instance; + List_adp rv = List_adp_.New(); Xol_csv_parser csv_parser = Xol_csv_parser.Instance; while (true) { boolean last = pos == src_len; // NOTE: logic occurs b/c of \n}~-> dlm which gobbles up last \n byte b = last ? Byte_ascii.Nl : src[pos]; @@ -53,7 +53,7 @@ public class Xol_lang_srl { public static void Load_keywords(Xol_kwd_mgr keyword_mgr, byte[] src) { int src_len = src.length, pos = 0, fld_bgn = 0, fld_idx = 0; boolean cur_cs = false; byte[] cur_key = Bry_.Empty; - List_adp cur_words = List_adp_.new_(); + List_adp cur_words = List_adp_.New(); Xol_csv_parser csv_parser = Xol_csv_parser.Instance; while (true) { boolean last = pos == src_len; // NOTE: logic occurs b/c of \n}~-> dlm which gobbles up last \n @@ -199,7 +199,7 @@ public class Xol_lang_srl { bldr.Add_paren_end().Add_proc_cont_one(Invk_lang).Add_nl(); // ).lang\n } public static void Save_specials(Xoa_gfs_bldr bldr, Xol_specials_mgr specials_mgr) { - int specials_len = specials_mgr.Count(); Xol_csv_parser csv_parser = Xol_csv_parser.Instance; + int specials_len = specials_mgr.Len(); Xol_csv_parser csv_parser = Xol_csv_parser.Instance; if (specials_len == 0) return; Bry_bfr bfr = bldr.Bfr(); bldr.Add_proc_cont_one(Xol_lang_itm.Invk_specials).Add_nl(); diff --git a/400_xowa/src/gplx/xowa/langs/parsers/Xol_lang_srl_tst.java b/400_xowa/src/gplx/xowa/langs/parsers/Xol_lang_srl_tst.java index 6b69c8ae1..00abb634f 100644 --- a/400_xowa/src/gplx/xowa/langs/parsers/Xol_lang_srl_tst.java +++ b/400_xowa/src/gplx/xowa/langs/parsers/Xol_lang_srl_tst.java @@ -205,7 +205,7 @@ class Xol_lang_srl_fxt { app = Xoa_app_fxt.Make__app__edit(); lang = new Xol_lang_itm(app.Lang_mgr(), Bry_.new_a7("fr")); Xoa_gfs_mgr.Msg_parser_init(); // required by fallback_load - } GfsCtx ctx = GfsCtx.new_(); Xoa_gfs_bldr bldr = new Xoa_gfs_bldr(); //Bry_bfr tmp_bfr = Bry_bfr.reset_(255); + } GfsCtx ctx = GfsCtx.new_(); Xoa_gfs_bldr bldr = new Xoa_gfs_bldr(); //Bry_bfr tmp_bfr = Bry_bfr_.Reset(255); public Xoae_app App() {return app;} private Xoae_app app; public Xol_lang_itm Lang() {return lang;} private Xol_lang_itm lang; public Xow_ns ns_(int id, String s) {return new Xow_ns(id, Xow_ns_case_.Tid__1st, Bry_.new_u8(s), false);} @@ -281,7 +281,7 @@ class Xol_lang_srl_fxt { return sb.To_str_and_clear(); } private Xol_specials_itm[] To_ary(Xol_specials_mgr specials_mgr) { - int len = specials_mgr.Count(); + int len = specials_mgr.Len(); Xol_specials_itm[] rv = new Xol_specials_itm[len]; for (int i = 0; i < len; i++) rv[i] = specials_mgr.Get_at(i); @@ -304,7 +304,7 @@ class Xol_lang_srl_fxt { } Xol_kwd_grp[] To_ary(Xol_kwd_mgr kwd_mgr) { int len = kwd_mgr.Len(); - List_adp rv = List_adp_.new_(); + List_adp rv = List_adp_.New(); for (int i = 0; i < len; i++) { Xol_kwd_grp kwd_grp = kwd_mgr.Get_at(i); if (kwd_grp == null) continue; @@ -328,7 +328,7 @@ class Xol_lang_srl_fxt { } Xol_msg_itm[] To_ary(Xol_msg_mgr msg_mgr) { int len = msg_mgr.Itms_max(); - List_adp rv = List_adp_.new_(); + List_adp rv = List_adp_.New(); for (int i = 0; i < len; i++) { Xol_msg_itm itm = msg_mgr.Itm_by_id_or_null(i); if (itm == null || !itm.Dirty()) continue; diff --git a/400_xowa/src/gplx/xowa/langs/plurals/Xol_plural_.java b/400_xowa/src/gplx/xowa/langs/plurals/Xol_plural_.java index a2af7a3ed..571957a25 100644 --- a/400_xowa/src/gplx/xowa/langs/plurals/Xol_plural_.java +++ b/400_xowa/src/gplx/xowa/langs/plurals/Xol_plural_.java @@ -37,8 +37,8 @@ class Xol_plural__default implements Xol_plural { switch (forms_len) { case 0: return Bry_.Empty; // forms is empty; do nothing case 1: return forms[0]; // only one word specified; use it; REF.MW:$pluralForm = min( $pluralForm, count( $forms ) - 1 ); - default: return count == 1 ? forms[0] : forms[1]; // TODO: incorporate plurals.xml logic + default: return count == 1 ? forms[0] : forms[1]; // TODO_OLD: incorporate plurals.xml logic } } - public static final Xol_plural__default Instance = new Xol_plural__default(); Xol_plural__default() {} + public static final Xol_plural__default Instance = new Xol_plural__default(); Xol_plural__default() {} } diff --git a/400_xowa/src/gplx/xowa/langs/specials/Xol_specials_mgr.java b/400_xowa/src/gplx/xowa/langs/specials/Xol_specials_mgr.java index 739a3c545..fd2994a1e 100644 --- a/400_xowa/src/gplx/xowa/langs/specials/Xol_specials_mgr.java +++ b/400_xowa/src/gplx/xowa/langs/specials/Xol_specials_mgr.java @@ -17,11 +17,12 @@ along with this program. If not, see . */ package gplx.xowa.langs.specials; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*; import gplx.xowa.langs.parsers.*; -public class Xol_specials_mgr implements GfoInvkAble { - private Ordered_hash hash_by_special = Ordered_hash_.New_bry(), hash_by_aliases = Ordered_hash_.New_bry(); - public Xol_specials_mgr(Xol_lang_itm lang) {this.lang = lang;} private Xol_lang_itm lang; +public class Xol_specials_mgr implements Gfo_invk { + private final Ordered_hash hash_by_special = Ordered_hash_.New_bry(), hash_by_aliases = Ordered_hash_.New_bry(); + private final Xol_lang_itm lang; + public Xol_specials_mgr(Xol_lang_itm lang) {this.lang = lang;} public void Clear() {hash_by_special.Clear();} - public int Count() {return hash_by_special.Count();} + public int Len() {return hash_by_special.Len();} public Xol_specials_itm Get_at(int i) {return (Xol_specials_itm)hash_by_special.Get_at(i);} public Xol_specials_itm Get_by_alias(byte[] alias) {return (Xol_specials_itm)hash_by_aliases.Get_by(alias);} public Xol_specials_itm Get_by_key(byte[] special) {return (Xol_specials_itm)hash_by_special.Get_by(special);} @@ -39,7 +40,7 @@ public class Xol_specials_mgr implements GfoInvkAble { if (ctx.Match(k, Invk_lang)) return lang; else if (ctx.Match(k, Invk_clear)) this.Clear(); else if (ctx.Match(k, Invk_load_text)) Xol_lang_srl.Load_specials(this, m.ReadBry("v")); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } public static final String Invk_lang = "lang", Invk_clear = "clear", Invk_load_text = "load_text"; diff --git a/400_xowa/src/gplx/xowa/langs/vnts/Xol_vnt_itm.java b/400_xowa/src/gplx/xowa/langs/vnts/Xol_vnt_itm.java index 39f927e92..2e60688d0 100644 --- a/400_xowa/src/gplx/xowa/langs/vnts/Xol_vnt_itm.java +++ b/400_xowa/src/gplx/xowa/langs/vnts/Xol_vnt_itm.java @@ -17,21 +17,21 @@ along with this program. If not, see . */ package gplx.xowa.langs.vnts; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*; import gplx.xowa.langs.vnts.converts.*; -public class Xol_vnt_itm implements GfoInvkAble { +public class Xol_vnt_itm implements Gfo_invk { public Xol_vnt_itm(int idx, byte[] key, byte[] name, int mask__vnt) { this.idx = idx; this.key = key; this.name = name; this.mask__vnt = mask__vnt; this.convert_wkr = new Xol_convert_wkr(key); } - public int Idx() {return idx;} private final int idx; // EX: 2 - public byte[] Key() {return key;} private final byte[] key; // EX: zh-cn - public byte[] Name() {return name;} private final byte[] name; // EX: 大陆简体 + public int Idx() {return idx;} private final int idx; // EX: 2 + public byte[] Key() {return key;} private final byte[] key; // EX: zh-cn + public byte[] Name() {return name;} private final byte[] name; // EX: 大陆简体 public boolean Visible() {return visible;} private boolean visible = true; // visible in menu - public int Mask__vnt() {return mask__vnt;} private final int mask__vnt; // EX: 8 + public int Mask__vnt() {return mask__vnt;} private final int mask__vnt; // EX: 8 public int Mask__fallbacks() {return mask_fallbacks;} private int mask_fallbacks; // EX: 11 for zh,zh-hans,zh-cn public int Dir() {return dir;} private int dir = Xol_vnt_dir_.Tid__bi; // EX: "bidirectional" public byte[][] Fallback_ary() {return fallback_ary;} private byte[][] fallback_ary = Bry_.Ary_empty; // EX: zh-hans|zh public byte[][] Convert_ary() {return convert_ary;} private byte[][] convert_ary = Bry_.Ary_empty; // EX: zh-hans|zh-cn - public Xol_convert_wkr Convert_wkr() {return convert_wkr;} private final Xol_convert_wkr convert_wkr; + public Xol_convert_wkr Convert_wkr() {return convert_wkr;} private final Xol_convert_wkr convert_wkr; public void Visible_(boolean v) {this.visible = v;} public void Convert_ary_(byte[][] v) {convert_ary = v;} public void Init(int dir, byte[][] fallback_ary) { @@ -44,7 +44,7 @@ public class Xol_vnt_itm implements GfoInvkAble { if (ctx.Match(k, Invk_fallbacks_)) fallback_ary = Bry_split_.Split(m.ReadBry("v"), Byte_ascii.Pipe); else if (ctx.Match(k, Invk_converts_)) Convert_ary_(Bry_split_.Split(m.ReadBry("v"), Byte_ascii.Pipe)); else if (ctx.Match(k, Invk_dir_)) dir = Xol_vnt_dir_.Parse(m.ReadBry("v")); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String Invk_fallbacks_ = "fallbacks_", Invk_converts_ = "converts_", Invk_dir_ = "dir_"; } diff --git a/400_xowa/src/gplx/xowa/langs/vnts/Xol_vnt_mgr.java b/400_xowa/src/gplx/xowa/langs/vnts/Xol_vnt_mgr.java index 37b29ddbb..b5b6bb3fe 100644 --- a/400_xowa/src/gplx/xowa/langs/vnts/Xol_vnt_mgr.java +++ b/400_xowa/src/gplx/xowa/langs/vnts/Xol_vnt_mgr.java @@ -17,15 +17,15 @@ along with this program. If not, see . */ package gplx.xowa.langs.vnts; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*; import gplx.xowa.langs.vnts.converts.*; import gplx.xowa.parsers.vnts.*; -public class Xol_vnt_mgr implements GfoInvkAble { +public class Xol_vnt_mgr implements Gfo_invk { public Xol_vnt_mgr(Xol_lang_itm lang) { this.lang = lang; this.convert_lang = new Vnt_convert_lang(convert_mgr, regy); } - public Xol_lang_itm Lang() {return lang;} private final Xol_lang_itm lang; - public Xol_convert_mgr Convert_mgr() {return convert_mgr;} private final Xol_convert_mgr convert_mgr = new Xol_convert_mgr(); - public Vnt_convert_lang Convert_lang() {return convert_lang;} private final Vnt_convert_lang convert_lang; - public Xol_vnt_regy Regy() {return regy;} private final Xol_vnt_regy regy = new Xol_vnt_regy(); // EX:zh;zh-hans;zh-hant;zh-cn;zh-hk;zh-mo;zh-sg;zh-tw + public Xol_lang_itm Lang() {return lang;} private final Xol_lang_itm lang; + public Xol_convert_mgr Convert_mgr() {return convert_mgr;} private final Xol_convert_mgr convert_mgr = new Xol_convert_mgr(); + public Vnt_convert_lang Convert_lang() {return convert_lang;} private final Vnt_convert_lang convert_lang; + public Xol_vnt_regy Regy() {return regy;} private final Xol_vnt_regy regy = new Xol_vnt_regy(); // EX:zh;zh-hans;zh-hant;zh-cn;zh-hk;zh-mo;zh-sg;zh-tw public Xol_vnt_itm Cur_itm() {return cur_itm;} private Xol_vnt_itm cur_itm; // EX:zh-cn public boolean Enabled() {return enabled;} private boolean enabled = false; public String Html__lnki_style() {return html__lnki_style;} private String html__lnki_style = ""; // style for showing vnt lnkis in different colors @@ -65,8 +65,8 @@ public class Xol_vnt_mgr implements GfoInvkAble { else if (ctx.Match(k, Invk_vnt_grp_)) Limit_visibility(m.ReadBryAry("v", Byte_ascii.Pipe)); else if (ctx.Match(k, Invk_cur_vnt_)) Cur_itm_(m.ReadBry("v")); else if (ctx.Match(k, Invk_html_style_)) html__lnki_style = m.ReadStr("v"); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String Invk_get = "get", Invk_init_end = "init_end", Invk_cur_vnt_ = "cur_vnt_", Invk_vnt_grp_ = "vnt_grp_", Invk_html_style_ = "html_style_"; - private static final byte[] Msg_variantname = Bry_.new_a7("variantname-"); + private static final byte[] Msg_variantname = Bry_.new_a7("variantname-"); } diff --git a/400_xowa/src/gplx/xowa/langs/vnts/Xol_vnt_regy.java b/400_xowa/src/gplx/xowa/langs/vnts/Xol_vnt_regy.java index 90acb6343..b4f211f77 100644 --- a/400_xowa/src/gplx/xowa/langs/vnts/Xol_vnt_regy.java +++ b/400_xowa/src/gplx/xowa/langs/vnts/Xol_vnt_regy.java @@ -19,9 +19,9 @@ package gplx.xowa.langs.vnts; import gplx.*; import gplx.xowa.*; import gplx.xow import gplx.core.btries.*; import gplx.core.bits.*; import gplx.xowa.parsers.vnts.*; public class Xol_vnt_regy { - private final Hash_adp_bry hash = Hash_adp_bry.ci_a7(); private int hash_len; - private final List_adp list = List_adp_.new_(); - public Btrie_slim_mgr Trie() {return trie;} private final Btrie_slim_mgr trie = Btrie_slim_mgr.ci_a7(); + private final Hash_adp_bry hash = Hash_adp_bry.ci_a7(); private int hash_len; + private final List_adp list = List_adp_.New(); + public Btrie_slim_mgr Trie() {return trie;} private final Btrie_slim_mgr trie = Btrie_slim_mgr.ci_a7(); public int Len() {return hash.Count();} public boolean Has(byte[] k) {return hash.Has(k);} public Xol_vnt_itm Get_at(int i) {return (Xol_vnt_itm)list.Get_at(i);} diff --git a/400_xowa/src/gplx/xowa/langs/vnts/converts/Xol_convert_grp.java b/400_xowa/src/gplx/xowa/langs/vnts/converts/Xol_convert_grp.java index a0bb4b6b2..a907216e8 100644 --- a/400_xowa/src/gplx/xowa/langs/vnts/converts/Xol_convert_grp.java +++ b/400_xowa/src/gplx/xowa/langs/vnts/converts/Xol_convert_grp.java @@ -17,16 +17,16 @@ along with this program. If not, see . */ package gplx.xowa.langs.vnts.converts; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*; import gplx.xowa.langs.vnts.*; import gplx.xowa.langs.parsers.*; -public class Xol_convert_grp implements GfoInvkAble {// group of convert_itm by vnt; EX: zh-hant {A -> A1; B -> B1} - private final Ordered_hash hash = Ordered_hash_.New_bry(); +public class Xol_convert_grp implements Gfo_invk {// group of convert_itm by vnt; EX: zh-hant {A -> A1; B -> B1} + private final Ordered_hash hash = Ordered_hash_.New_bry(); public Xol_convert_grp(byte[] key) {this.key = key;} - public byte[] Key() {return key;} private final byte[] key; + public byte[] Key() {return key;} private final byte[] key; public int Len() {return hash.Count();} public Xol_convert_itm Get_at(int i) {return (Xol_convert_itm)hash.Get_at(i);} public void Add(byte[] src, byte[] trg) {hash.Add_if_dupe_use_nth(src, new Xol_convert_itm(src, trg));} public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_add_bulk)) Add_bulk(this, m.ReadBry("v")); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String Invk_add_bulk = "add_bulk"; private static void Add_bulk(Xol_convert_grp grp, byte[] raw) { diff --git a/400_xowa/src/gplx/xowa/langs/vnts/converts/Xol_convert_mgr.java b/400_xowa/src/gplx/xowa/langs/vnts/converts/Xol_convert_mgr.java index d3aae392a..97255df22 100644 --- a/400_xowa/src/gplx/xowa/langs/vnts/converts/Xol_convert_mgr.java +++ b/400_xowa/src/gplx/xowa/langs/vnts/converts/Xol_convert_mgr.java @@ -18,8 +18,8 @@ along with this program. If not, see . package gplx.xowa.langs.vnts.converts; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*; import gplx.xowa.langs.vnts.*; import gplx.xowa.wikis.nss.*; import gplx.xowa.wikis.data.tbls.*; public class Xol_convert_mgr { - private final Ordered_hash tmp_page_list = Ordered_hash_.New_bry(); - public Xol_convert_regy Converter_regy() {return converter_regy;} private final Xol_convert_regy converter_regy = new Xol_convert_regy(); + private final Ordered_hash tmp_page_list = Ordered_hash_.New_bry(); + public Xol_convert_regy Converter_regy() {return converter_regy;} private final Xol_convert_regy converter_regy = new Xol_convert_regy(); public Xol_convert_wkr[] Converter_ary() {return wkr_ary;} private Xol_convert_wkr[] wkr_ary; private int wkr_ary_len; public void Init(Xol_vnt_regy regy) { int len = regy.Len(); @@ -48,7 +48,7 @@ public class Xol_convert_mgr { synchronized (tmp_page_list) { // THREAD: int converted = Convert_ttl__convert_each_vnt(wiki, tmp_bfr, ns, ttl_bry); // convert ttl for each vnt if (converted == 0) return Xowd_page_itm.Null; // ttl_bry has no conversions; exit; - // wiki.Data__core_mgr().Tbl__page().Select_in__ns_ttl(Cancelable_.Never, tmp_page_list, wiki.Ns_mgr(), true, 0, converted); // TODO: use this call; when defaulting test to use db_mgr, not txt_mgr + // wiki.Data__core_mgr().Tbl__page().Select_in__ns_ttl(Cancelable_.Never, tmp_page_list, wiki.Ns_mgr(), true, 0, converted); // TODO_OLD: use this call; when defaulting test to use db_mgr, not txt_mgr wiki.Db_mgr().Load_mgr().Load_by_ttls(Cancelable_.Never, tmp_page_list, Bool_.Y, 0, converted); for (int i = 0; i < converted; i++) { Xowd_page_itm page = (Xowd_page_itm)tmp_page_list.Get_at(i); diff --git a/400_xowa/src/gplx/xowa/langs/vnts/converts/Xol_convert_regy.java b/400_xowa/src/gplx/xowa/langs/vnts/converts/Xol_convert_regy.java index eab6bf7e1..f2f68562d 100644 --- a/400_xowa/src/gplx/xowa/langs/vnts/converts/Xol_convert_regy.java +++ b/400_xowa/src/gplx/xowa/langs/vnts/converts/Xol_convert_regy.java @@ -17,8 +17,8 @@ along with this program. If not, see . */ package gplx.xowa.langs.vnts.converts; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*; import gplx.xowa.langs.vnts.*; import gplx.xowa.apps.fsys.*; -public class Xol_convert_regy implements GfoInvkAble { // registry of convert_grp; EX: zh-hans;zh-hant; - private final Ordered_hash hash = Ordered_hash_.New_bry(); +public class Xol_convert_regy implements Gfo_invk { // registry of convert_grp; EX: zh-hans;zh-hant; + private final Ordered_hash hash = Ordered_hash_.New_bry(); public Xol_convert_grp Get_or_null(byte[] key) {return (Xol_convert_grp)hash.Get_by(key);} public Xol_convert_grp Get_or_make(byte[] key) { Xol_convert_grp rv = (Xol_convert_grp)hash.Get_by(key); @@ -30,7 +30,7 @@ public class Xol_convert_regy implements GfoInvkAble { // registry of convert_gr } public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_get)) return Get_or_make(m.ReadBry("v")); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; } private static final String Invk_get = "get"; public static Io_url Bld_url(Xoa_fsys_mgr app_fsys_mgr, String lang) {return Bld_url(app_fsys_mgr.Cfg_lang_core_dir(), lang);} public static Io_url Bld_url(Io_url dir, String lang) {return dir.GenSubFil_nest("variants", lang + ".gfs");} diff --git a/400_xowa/src/gplx/xowa/langs/vnts/converts/Xol_mw_parse_tst.java b/400_xowa/src/gplx/xowa/langs/vnts/converts/Xol_mw_parse_tst.java index e11dcca4b..f5971e8ac 100644 --- a/400_xowa/src/gplx/xowa/langs/vnts/converts/Xol_mw_parse_tst.java +++ b/400_xowa/src/gplx/xowa/langs/vnts/converts/Xol_mw_parse_tst.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.xowa.langs.vnts.converts; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*; import gplx.xowa.langs.vnts.*; import org.junit.*; import gplx.core.log_msgs.*; import gplx.langs.phps.*; public class Xol_mw_parse_tst { - private final Xol_mw_parse_fxt fxt = new Xol_mw_parse_fxt(); + private final Xol_mw_parse_fxt fxt = new Xol_mw_parse_fxt(); // @Test public void Basic() { // fxt.Test_convert("$zh2Hant = array('a' => 'A', 'b' => 'B',);", String_.Concat_lines_nl // ( "// zh_zh-hant" @@ -80,12 +80,12 @@ class Xol_mw_parse_itm { class Xol_mw_parse_fxt { public void Test_convert(String mw, String expd) { Xol_mw_parse_grp[] actl_ary = Parse(Bry_.new_u8(mw)); - Bry_bfr bfr = Bry_bfr.new_(); + Bry_bfr bfr = Bry_bfr_.New(); actl_ary[0].Write_as_gfs(bfr); Tfds.Eq_str_lines(expd, bfr.To_str()); } public void Test_run(Io_url src_dir, Io_url trg_dir) { - Bry_bfr bfr = Bry_bfr.new_(); + Bry_bfr bfr = Bry_bfr_.New(); Io_url[] fils = Io_mgr.Instance.QueryDir_fils(src_dir); int fils_len = fils.length; for (int i = 0; i < fils_len; i++) { @@ -103,7 +103,7 @@ class Xol_mw_parse_fxt { } } public Xol_mw_parse_grp[] Parse(byte[] src) { - List_adp list = List_adp_.new_(); + List_adp list = List_adp_.New(); Php_parser parser = new Php_parser(); Gfo_msg_log msg_log = new Gfo_msg_log("xowa"); Php_evaluator evaluator = new Php_evaluator(msg_log); @@ -117,7 +117,7 @@ class Xol_mw_parse_fxt { } return (Xol_mw_parse_grp[])list.To_ary(Xol_mw_parse_grp.class); } - private List_adp tmp_itm_list = List_adp_.new_(); + private List_adp tmp_itm_list = List_adp_.New(); private Xol_mw_parse_grp Parse_grp(Php_line_assign line) { Xol_mw_parse_grp grp = new Xol_mw_parse_grp(); byte[] key = line.Key().Val_obj_bry(); // EX: "zh2Hant" diff --git a/400_xowa/src/gplx/xowa/parsers/Xop_ctx.java b/400_xowa/src/gplx/xowa/parsers/Xop_ctx.java index 3b5af5655..0d1ccc094 100644 --- a/400_xowa/src/gplx/xowa/parsers/Xop_ctx.java +++ b/400_xowa/src/gplx/xowa/parsers/Xop_ctx.java @@ -32,25 +32,25 @@ public class Xop_ctx { this.xnde_tag_regy = wiki.Mw_parser_mgr().Xnde_tag_regy(); } // public boolean Scribunto; // CHART - public Xoae_app App() {return app;} private final Xoae_app app; - public Xowe_wiki Wiki() {return wiki;} private final Xowe_wiki wiki; - public Xol_lang_itm Lang() {return lang;} private final Xol_lang_itm lang; - public Xop_tkn_mkr Tkn_mkr() {return tkn_mkr;} private final Xop_tkn_mkr tkn_mkr; + public Xoae_app App() {return app;} private final Xoae_app app; + public Xowe_wiki Wiki() {return wiki;} private final Xowe_wiki wiki; + public Xol_lang_itm Lang() {return lang;} private final Xol_lang_itm lang; + public Xop_tkn_mkr Tkn_mkr() {return tkn_mkr;} private final Xop_tkn_mkr tkn_mkr; public Xoae_page Page() {return cur_page;} public void Page_(Xoae_page v) {cur_page = v;} private Xoae_page cur_page; public byte Parse_tid() {return parse_tid;} public Xop_ctx Parse_tid_(byte v) {parse_tid = v; xnde_names_tid = v; return this;} private byte parse_tid = Xop_parser_.Parse_tid_null; public byte Xnde_names_tid() {return xnde_names_tid;} public Xop_ctx Xnde_names_tid_(byte v) {xnde_names_tid = v; return this;} private byte xnde_names_tid = Xop_parser_.Parse_tid_null; - public Xop_amp_wkr Amp() {return amp;} private final Xop_amp_wkr amp = new Xop_amp_wkr(); - public Xop_apos_wkr Apos() {return apos;} private final Xop_apos_wkr apos = new Xop_apos_wkr(); - public Xop_lnke_wkr Lnke() {return lnke;} private final Xop_lnke_wkr lnke = new Xop_lnke_wkr(); - public Xop_lnki_wkr Lnki() {return lnki;} private final Xop_lnki_wkr lnki = new Xop_lnki_wkr(); - public Xop_hdr_wkr Hdr() {return hdr;} private final Xop_hdr_wkr hdr = new Xop_hdr_wkr(); - public Xop_para_wkr Para() {return para;} private final Xop_para_wkr para = new Xop_para_wkr(); - public Xop_list_wkr List() {return list;} private final Xop_list_wkr list = new Xop_list_wkr(); - public Xop_tblw_wkr Tblw() {return tblw;} private final Xop_tblw_wkr tblw = new Xop_tblw_wkr(); - public Xop_xnde_wkr Xnde() {return xnde;} private final Xop_xnde_wkr xnde = new Xop_xnde_wkr(); - public Xot_invk_wkr Invk() {return invk;} private final Xot_invk_wkr invk = new Xot_invk_wkr(); - public Xop_curly_wkr Curly() {return curly;} private final Xop_curly_wkr curly = new Xop_curly_wkr(); - public Xop_xnde_tag_regy Xnde_tag_regy() {return xnde_tag_regy;} private final Xop_xnde_tag_regy xnde_tag_regy; // PERF:demeter + public Xop_amp_wkr Amp() {return amp;} private final Xop_amp_wkr amp = new Xop_amp_wkr(); + public Xop_apos_wkr Apos() {return apos;} private final Xop_apos_wkr apos = new Xop_apos_wkr(); + public Xop_lnke_wkr Lnke() {return lnke;} private final Xop_lnke_wkr lnke = new Xop_lnke_wkr(); + public Xop_lnki_wkr Lnki() {return lnki;} private final Xop_lnki_wkr lnki = new Xop_lnki_wkr(); + public Xop_hdr_wkr Hdr() {return hdr;} private final Xop_hdr_wkr hdr = new Xop_hdr_wkr(); + public Xop_para_wkr Para() {return para;} private final Xop_para_wkr para = new Xop_para_wkr(); + public Xop_list_wkr List() {return list;} private final Xop_list_wkr list = new Xop_list_wkr(); + public Xop_tblw_wkr Tblw() {return tblw;} private final Xop_tblw_wkr tblw = new Xop_tblw_wkr(); + public Xop_xnde_wkr Xnde() {return xnde;} private final Xop_xnde_wkr xnde = new Xop_xnde_wkr(); + public Xot_invk_wkr Invk() {return invk;} private final Xot_invk_wkr invk = new Xot_invk_wkr(); + public Xop_curly_wkr Curly() {return curly;} private final Xop_curly_wkr curly = new Xop_curly_wkr(); + public Xop_xnde_tag_regy Xnde_tag_regy() {return xnde_tag_regy;} private final Xop_xnde_tag_regy xnde_tag_regy; // PERF:demeter public boolean Tmpl_load_enabled() {return tmpl_load_enabled;} public void Tmpl_load_enabled_(boolean v) {tmpl_load_enabled = v;} private boolean tmpl_load_enabled = true; public int Tmpl_tkn_max() {return tmpl_tkn_max;} public void Tmpl_tkn_max_(int v) {tmpl_tkn_max = v;} private int tmpl_tkn_max = Int_.Max_value; @@ -307,7 +307,7 @@ public class Xop_ctx { public static Xop_ctx new_main_page(Xowe_wiki wiki) {return new_(wiki, Xoa_page_.Main_page_bry);} // HACK: use "Main_Page" to put in valid page title public static Xop_ctx new_(Xowe_wiki wiki, byte[] ttl_bry) {return new Xop_ctx(wiki, Xoae_page.New(wiki, wiki.Ttl_parse(ttl_bry)));} public static Xop_ctx new_sub_(Xowe_wiki wiki) {return new_sub_(wiki, wiki.Parser_mgr().Ctx().cur_page);} - public static Xop_ctx new_sub_(Xowe_wiki wiki, Xoae_page page) { // TODO: new_sub_ should reuse ctx's page; callers who want new_page should call new_sub_page_; DATE:2014-04-10 + public static Xop_ctx new_sub_(Xowe_wiki wiki, Xoae_page page) { // TODO_OLD: new_sub_ should reuse ctx's page; callers who want new_page should call new_sub_page_; DATE:2014-04-10 Xop_ctx rv = new Xop_ctx(wiki, page); new_copy(wiki.Parser_mgr().Ctx(), rv); return rv; diff --git a/400_xowa/src/gplx/xowa/parsers/Xop_lxr_mgr.java b/400_xowa/src/gplx/xowa/parsers/Xop_lxr_mgr.java index d0a191747..1fb76d2cc 100644 --- a/400_xowa/src/gplx/xowa/parsers/Xop_lxr_mgr.java +++ b/400_xowa/src/gplx/xowa/parsers/Xop_lxr_mgr.java @@ -20,10 +20,10 @@ import gplx.core.btries.*; import gplx.xowa.langs.*; import gplx.xowa.parsers.apos.*; import gplx.xowa.parsers.amps.*; import gplx.xowa.parsers.lnkes.*; import gplx.xowa.parsers.hdrs.*; import gplx.xowa.parsers.lists.*; import gplx.xowa.parsers.tblws.*; import gplx.xowa.parsers.paras.*; import gplx.xowa.parsers.xndes.*; import gplx.xowa.parsers.lnkis.*; import gplx.xowa.parsers.tmpls.*; import gplx.xowa.parsers.miscs.*; public class Xop_lxr_mgr { - private final Xop_lxr[] ary; - private final List_adp page_lxr_list = List_adp_.new_(); + private final Xop_lxr[] ary; + private final List_adp page_lxr_list = List_adp_.New(); public Xop_lxr_mgr(Xop_lxr[] ary) {this.ary = ary;} - public Btrie_fast_mgr Trie() {return trie;} private final Btrie_fast_mgr trie = Btrie_fast_mgr.cs(); + public Btrie_fast_mgr Trie() {return trie;} private final Btrie_fast_mgr trie = Btrie_fast_mgr.cs(); public void Page__add(Xowe_wiki wiki, Xop_lxr... ary) { int len = ary.length; for (int i = 0; i < len; ++i) { @@ -92,7 +92,7 @@ public class Xop_lxr_mgr { , Xop_xnde_lxr.Instance }); } - public static final Xop_lxr_mgr Popup_lxr_mgr // same as orig_page, except apos_lxr added + public static final Xop_lxr_mgr Popup_lxr_mgr // same as orig_page, except apos_lxr added = new Xop_lxr_mgr(new Xop_lxr[] { Xop_pipe_lxr.Instance, new Xop_eq_lxr(true), Xop_colon_lxr.Instance, Xop_space_lxr.Instance, Xop_tab_lxr.Instance, Xop_nl_lxr.Instance , Xop_curly_bgn_lxr.Instance, Xop_curly_end_lxr.Instance diff --git a/400_xowa/src/gplx/xowa/parsers/Xop_parser__tst.java b/400_xowa/src/gplx/xowa/parsers/Xop_parser__tst.java index edde78a3d..dbd3f5f69 100644 --- a/400_xowa/src/gplx/xowa/parsers/Xop_parser__tst.java +++ b/400_xowa/src/gplx/xowa/parsers/Xop_parser__tst.java @@ -45,8 +45,8 @@ public class Xop_parser__tst { } } class Xop_parser__fxt { - private final Xop_fxt fxt = new Xop_fxt(); - private Bry_bfr bfr = Bry_bfr.reset_(255); + private final Xop_fxt fxt = new Xop_fxt(); + private Bry_bfr bfr = Bry_bfr_.Reset(255); public void Clear() { fxt.Reset(); } diff --git a/400_xowa/src/gplx/xowa/parsers/amps/Xop_amp_mgr.java b/400_xowa/src/gplx/xowa/parsers/amps/Xop_amp_mgr.java index c5d126299..f7fdf54bc 100644 --- a/400_xowa/src/gplx/xowa/parsers/amps/Xop_amp_mgr.java +++ b/400_xowa/src/gplx/xowa/parsers/amps/Xop_amp_mgr.java @@ -18,9 +18,9 @@ along with this program. If not, see . package gplx.xowa.parsers.amps; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*; import gplx.core.btries.*; public class Xop_amp_mgr { - private final Object thread_lock_1 = new Object(), thread_lock_2 = new Object(); - private final Bry_bfr tmp_bfr = Bry_bfr.reset_(32); - public Btrie_slim_mgr Amp_trie() {return amp_trie;} private final Btrie_slim_mgr amp_trie = Xop_amp_trie.Instance; + private final Object thread_lock_1 = new Object(), thread_lock_2 = new Object(); + private final Bry_bfr tmp_bfr = Bry_bfr_.Reset(32); + public Btrie_slim_mgr Amp_trie() {return amp_trie;} private final Btrie_slim_mgr amp_trie = Xop_amp_trie.Instance; public int Rslt_pos() {return rslt_pos;} private int rslt_pos; public int Rslt_val() {return rslt_val;} private int rslt_val; public Xop_tkn_itm Parse_as_tkn(Xop_tkn_mkr tkn_mkr, byte[] src, int src_len, int amp_pos, int cur_pos) { @@ -125,5 +125,5 @@ public class Xop_amp_mgr { return dirty ? tmp_bfr.To_bry_and_clear() : src; } } - public static final Xop_amp_mgr Instance = new Xop_amp_mgr(); Xop_amp_mgr() {} + public static final Xop_amp_mgr Instance = new Xop_amp_mgr(); Xop_amp_mgr() {} } diff --git a/400_xowa/src/gplx/xowa/parsers/apos/Xop_apos_wkr.java b/400_xowa/src/gplx/xowa/parsers/apos/Xop_apos_wkr.java index fad15f110..86aeba17d 100644 --- a/400_xowa/src/gplx/xowa/parsers/apos/Xop_apos_wkr.java +++ b/400_xowa/src/gplx/xowa/parsers/apos/Xop_apos_wkr.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.xowa.parsers.apos; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*; public class Xop_apos_wkr implements Xop_ctx_wkr { public Xop_apos_dat Dat() {return dat;} private Xop_apos_dat dat = new Xop_apos_dat(); - private List_adp stack = List_adp_.new_(); private int bold_count, ital_count; private Xop_apos_tkn dual_tkn = null; + private List_adp stack = List_adp_.New(); private int bold_count, ital_count; private Xop_apos_tkn dual_tkn = null; public void Ctor_ctx(Xop_ctx ctx) {} public void Page_bgn(Xop_ctx ctx, Xop_root_tkn root) { Reset(); diff --git a/400_xowa/src/gplx/xowa/parsers/htmls/Mwh_atr_parser.java b/400_xowa/src/gplx/xowa/parsers/htmls/Mwh_atr_parser.java index 64febb263..cbc21dccd 100644 --- a/400_xowa/src/gplx/xowa/parsers/htmls/Mwh_atr_parser.java +++ b/400_xowa/src/gplx/xowa/parsers/htmls/Mwh_atr_parser.java @@ -20,15 +20,15 @@ import gplx.core.primitives.*; import gplx.xowa.parsers.xndes.*; // for brys: , , , public class Mwh_atr_parser { // REF.MW:Sanitizer.php|decodeTagAttributes;MW_ATTRIBS_REGEX private static final byte Area__invalid = 0, Area__atr_limbo = 1, Area__key = 2, Area__eql_limbo = 3, Area__val_limbo = 4, Area__val_quote = 5, Area__val_naked = 6; - private final Hash_adp_bry repeated_atrs_hash = Hash_adp_bry.ci_a7(); // ASCII:xnde_atrs - private final Mwh_atr_mgr atr_mgr = new Mwh_atr_mgr(16); - private final Bry_bfr key_bfr = Bry_bfr.new_(), val_bfr = Bry_bfr.new_(); + private final Hash_adp_bry repeated_atrs_hash = Hash_adp_bry.ci_a7(); // ASCII:xnde_atrs + private final Mwh_atr_mgr atr_mgr = new Mwh_atr_mgr(16); + private final Bry_bfr key_bfr = Bry_bfr_.New(), val_bfr = Bry_bfr_.New(); private byte area = Area__atr_limbo; private int atr_bgn = -1, key_bgn = -1, key_end = -1, eql_pos = -1, val_bgn = -1, val_end = -1; private byte qte_byte = Byte_ascii.Null; private boolean key_bfr_on = false, val_bfr_on = false, ws_is_before_val = false, qte_closed = false; private int nde_uid, nde_tid; - public Bry_obj_ref Bry_obj() {return bry_ref;} private final Bry_obj_ref bry_ref = Bry_obj_ref.New_empty(); + public Bry_obj_ref Bry_obj() {return bry_ref;} private final Bry_obj_ref bry_ref = Bry_obj_ref.New_empty(); public int Nde_end_tid() {return nde_end_tid;} private int nde_end_tid; public int Parse(Mwh_atr_wkr wkr, int nde_uid, int nde_tid, byte[] src, int src_bgn, int src_end) { this.nde_uid = nde_uid; this.nde_tid = nde_tid; @@ -471,7 +471,7 @@ public class Mwh_atr_parser { // REF.MW:Sanitizer.php|decodeTagAttributes;MW_ATT } return Bry_find_.Not_found; } - private static final Hash_adp_bry xnde_hash = Hash_adp_bry.ci_a7() + private static final Hash_adp_bry xnde_hash = Hash_adp_bry.ci_a7() .Add_bry_bry(Xop_xnde_tag_.Tag__nowiki.Name_bry()) .Add_bry_bry(Xop_xnde_tag_.Tag__noinclude.Name_bry()) .Add_bry_bry(Xop_xnde_tag_.Tag__includeonly.Name_bry()) diff --git a/400_xowa/src/gplx/xowa/parsers/htmls/Mwh_atr_parser_fxt.java b/400_xowa/src/gplx/xowa/parsers/htmls/Mwh_atr_parser_fxt.java index 081926361..b338f2ba8 100644 --- a/400_xowa/src/gplx/xowa/parsers/htmls/Mwh_atr_parser_fxt.java +++ b/400_xowa/src/gplx/xowa/parsers/htmls/Mwh_atr_parser_fxt.java @@ -17,9 +17,9 @@ along with this program. If not, see . */ package gplx.xowa.parsers.htmls; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*; class Mwh_atr_parser_fxt { - private final Bry_bfr expd_bfr = Bry_bfr.new_(), actl_bfr = Bry_bfr.new_(); - private final Mwh_atr_parser parser = new Mwh_atr_parser(); - private final Mwh_doc_wkr__atr_bldr wkr = new Mwh_doc_wkr__atr_bldr(); + private final Bry_bfr expd_bfr = Bry_bfr_.New(), actl_bfr = Bry_bfr_.New(); + private final Mwh_atr_parser parser = new Mwh_atr_parser(); + private final Mwh_doc_wkr__atr_bldr wkr = new Mwh_doc_wkr__atr_bldr(); public Mwh_atr_itm Make_pair(String key, String val) {return new Mwh_atr_itm(Bry_.Empty, Bool_.Y, Bool_.N, Bool_.Y, -1, -1, -1, -1, Bry_.new_u8(key) , -1, -1, Bry_.new_u8(val) , -1, -1);} public Mwh_atr_itm Make_name(String key) {return new Mwh_atr_itm(Bry_.Empty, Bool_.Y, Bool_.N, Bool_.N, -1, -1, -1, -1, Bry_.new_u8(key) , -1, -1, Bry_.new_u8(key) , -1, -1);} public Mwh_atr_itm Make_fail(int bgn, int end) {return new Mwh_atr_itm(Bry_.Empty, Bool_.N, Bool_.N, Bool_.N, bgn, end, -1, -1, null , -1, -1, null , -1, -1);} diff --git a/400_xowa/src/gplx/xowa/parsers/htmls/Mwh_doc_parser.java b/400_xowa/src/gplx/xowa/parsers/htmls/Mwh_doc_parser.java index 5cb02a578..128247dad 100644 --- a/400_xowa/src/gplx/xowa/parsers/htmls/Mwh_doc_parser.java +++ b/400_xowa/src/gplx/xowa/parsers/htmls/Mwh_doc_parser.java @@ -19,10 +19,10 @@ package gplx.xowa.parsers.htmls; import gplx.*; import gplx.xowa.*; import gplx. import gplx.core.primitives.*; import gplx.xowa.parsers.amps.*; import gplx.xowa.parsers.xndes.*; public class Mwh_doc_parser { - private final Mwh_doc_mgr dom_mgr = new Mwh_doc_mgr(16); - private final Mwh_atr_parser atr_parser = new Mwh_atr_parser(); - private final List_adp nde_stack = List_adp_.new_(); - private final Xop_amp_mgr amp_mgr = Xop_amp_mgr.Instance; private final Xop_tkn_mkr tkn_mkr = new Xop_tkn_mkr(); + private final Mwh_doc_mgr dom_mgr = new Mwh_doc_mgr(16); + private final Mwh_atr_parser atr_parser = new Mwh_atr_parser(); + private final List_adp nde_stack = List_adp_.New(); + private final Xop_amp_mgr amp_mgr = Xop_amp_mgr.Instance; private final Xop_tkn_mkr tkn_mkr = new Xop_tkn_mkr(); private byte[] src; private int src_end; private Mwh_doc_wkr wkr; private Hash_adp_bry nde_regy; @@ -240,5 +240,5 @@ public class Mwh_doc_parser { return pos; } public static final int Nde_end_tid__invalid = 0, Nde_end_tid__gt = 1, Nde_end_tid__ws = 2, Nde_end_tid__inline = 3, Nde_end_tid__slash = 4, Nde_end_tid__backslash = 5, Nde_end_tid__comment = 6; - private static final byte[] Comment_bgn = Bry_.new_a7("--"), Comment_end = Bry_.new_a7("-->"); + private static final byte[] Comment_bgn = Bry_.new_a7("--"), Comment_end = Bry_.new_a7("-->"); } diff --git a/400_xowa/src/gplx/xowa/parsers/htmls/Mwh_doc_parser_fxt.java b/400_xowa/src/gplx/xowa/parsers/htmls/Mwh_doc_parser_fxt.java index ce5e72c28..fa5ee6fc0 100644 --- a/400_xowa/src/gplx/xowa/parsers/htmls/Mwh_doc_parser_fxt.java +++ b/400_xowa/src/gplx/xowa/parsers/htmls/Mwh_doc_parser_fxt.java @@ -17,9 +17,9 @@ along with this program. If not, see . */ package gplx.xowa.parsers.htmls; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*; class Mwh_doc_parser_fxt { - private final Bry_bfr expd_bfr = Bry_bfr.new_(), actl_bfr = Bry_bfr.new_(); - private final Mwh_doc_parser parser = new Mwh_doc_parser(); - private final Mwh_doc_wkr__itm_bldr wkr = new Mwh_doc_wkr__itm_bldr(); + private final Bry_bfr expd_bfr = Bry_bfr_.New(), actl_bfr = Bry_bfr_.New(); + private final Mwh_doc_parser parser = new Mwh_doc_parser(); + private final Mwh_doc_wkr__itm_bldr wkr = new Mwh_doc_wkr__itm_bldr(); public Mwh_doc_itm Make_txt (String raw) {return new Mwh_doc_itm(Mwh_doc_itm.Itm_tid__txt , -1, Bry_.new_u8(raw));} public Mwh_doc_itm Make_txt (String raw, int nde_tid) {return new Mwh_doc_itm(Mwh_doc_itm.Itm_tid__txt , nde_tid, Bry_.new_u8(raw));} public Mwh_doc_itm Make_comment (String raw) {return new Mwh_doc_itm(Mwh_doc_itm.Itm_tid__comment , -1, Bry_.new_u8(raw));} @@ -61,8 +61,8 @@ class Mwh_doc_parser_fxt { } } class Mwh_doc_wkr__itm_bldr implements Mwh_doc_wkr { - private final List_adp list = List_adp_.new_(); - public Hash_adp_bry Nde_regy() {return nde_regy;} private final Hash_adp_bry nde_regy = Mwh_doc_wkr_.Nde_regy__mw(); + private final List_adp list = List_adp_.New(); + public Hash_adp_bry Nde_regy() {return nde_regy;} private final Hash_adp_bry nde_regy = Mwh_doc_wkr_.Nde_regy__mw(); public void On_atr_each (Mwh_atr_parser mgr, byte[] src, int nde_tid, boolean valid, boolean repeated, boolean key_exists, byte[] key_bry, byte[] val_bry_manual, int[] itm_ary, int itm_idx) {} public void On_txt_end (Mwh_doc_parser mgr, byte[] src, int nde_tid, int itm_bgn, int itm_end) {list.Add(new Mwh_doc_itm(Mwh_doc_itm.Itm_tid__txt , nde_tid, Bry_.Mid(src, itm_bgn, itm_end)));} public void On_nde_head_bgn (Mwh_doc_parser mgr, byte[] src, int nde_tid, int key_bgn, int key_end) {} diff --git a/400_xowa/src/gplx/xowa/parsers/htmls/Mwh_doc_wkr__atr_bldr.java b/400_xowa/src/gplx/xowa/parsers/htmls/Mwh_doc_wkr__atr_bldr.java index 78f776d6d..c90d100f6 100644 --- a/400_xowa/src/gplx/xowa/parsers/htmls/Mwh_doc_wkr__atr_bldr.java +++ b/400_xowa/src/gplx/xowa/parsers/htmls/Mwh_doc_wkr__atr_bldr.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.parsers.htmls; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*; public class Mwh_doc_wkr__atr_bldr implements Mwh_doc_wkr { - private final List_adp list = List_adp_.new_(); + private final List_adp list = List_adp_.New(); public Hash_adp_bry Nde_regy() {return null;} public void On_atr_each(Mwh_atr_parser mgr, byte[] src, int nde_tid, boolean valid, boolean repeated, boolean key_exists, byte[] key_bry, byte[] val_bry_manual, int[] data_ary, int itm_idx) { int atr_bgn = data_ary[itm_idx + Mwh_atr_mgr.Idx_atr_bgn]; diff --git a/400_xowa/src/gplx/xowa/parsers/lists/Xop_colon_lxr.java b/400_xowa/src/gplx/xowa/parsers/lists/Xop_colon_lxr.java index 407235a61..73004ca9d 100644 --- a/400_xowa/src/gplx/xowa/parsers/lists/Xop_colon_lxr.java +++ b/400_xowa/src/gplx/xowa/parsers/lists/Xop_colon_lxr.java @@ -28,7 +28,7 @@ public class Xop_colon_lxr implements Xop_lxr { int prv_pos = cur_pos -1 ; if ( ctx.Cur_tkn_tid() != Xop_tkn_itm_.Tid_lnki // ignore if inside link && prv_pos > 0 - && src[prv_pos] != Byte_ascii.Nl // only consider ":" which are not preceded by \n; DATE:2014-07-11 TODO: emulate Parser.php|findColonNoLinks which does much more logic to see if ";a:b" construct should apply + && src[prv_pos] != Byte_ascii.Nl // only consider ":" which are not preceded by \n; DATE:2014-07-11 TODO_OLD: emulate Parser.php|findColonNoLinks which does much more logic to see if ";a:b" construct should apply ) { listCtx.Dd_chk_(false); return listCtx.MakeTkn_bgn(ctx, tkn_mkr, root, src, src_len, bgn_pos, cur_pos); @@ -37,5 +37,5 @@ public class Xop_colon_lxr implements Xop_lxr { ctx.Subs_add(root, tkn_mkr.Colon(bgn_pos, cur_pos)); return cur_pos; } - public static final Xop_colon_lxr Instance = new Xop_colon_lxr(); + public static final Xop_colon_lxr Instance = new Xop_colon_lxr(); } diff --git a/400_xowa/src/gplx/xowa/parsers/lnkes/Xop_lnke_tkn.java b/400_xowa/src/gplx/xowa/parsers/lnkes/Xop_lnke_tkn.java index 73ddb2d80..2a7767c60 100644 --- a/400_xowa/src/gplx/xowa/parsers/lnkes/Xop_lnke_tkn.java +++ b/400_xowa/src/gplx/xowa/parsers/lnkes/Xop_lnke_tkn.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.parsers.lnkes; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*; -import gplx.core.net.*; +import gplx.core.net.*; import gplx.core.net.qargs.*; public class Xop_lnke_tkn extends Xop_tkn_itm_base {//20111222 public static final byte Lnke_typ_null = 0, Lnke_typ_brack = 1, Lnke_typ_text = 2, Lnke_typ_brack_dangling = 3; @Override public byte Tkn_tid() {return Xop_tkn_itm_.Tid_lnke;} diff --git a/400_xowa/src/gplx/xowa/parsers/lnkes/Xop_lnke_wkr.java b/400_xowa/src/gplx/xowa/parsers/lnkes/Xop_lnke_wkr.java index e4b521cd4..131ce50aa 100644 --- a/400_xowa/src/gplx/xowa/parsers/lnkes/Xop_lnke_wkr.java +++ b/400_xowa/src/gplx/xowa/parsers/lnkes/Xop_lnke_wkr.java @@ -31,8 +31,8 @@ public class Xop_lnke_wkr implements Xop_ctx_wkr { bgn_tkn.Src_end_(bgn_tkn.Lnke_href_end()); // NOTE: endPos is lnke_end, not cur_pos or src_len; EX: "[irc://a b", lnk ends at a, not b; NOTE: still bgns at [ ctx.Msg_log().Add_itm_none(Xop_lnke_log.Dangling, src, tkn.Src_bgn(), cur_pos); } - public static final String Str_xowa_protocol = "xowa-cmd:"; - public static final byte[] Bry_xowa_protocol = Bry_.new_a7(Str_xowa_protocol); + public static final String Str_xowa_protocol = "xowa-cmd:"; + public static final byte[] Bry_xowa_protocol = Bry_.new_a7(Str_xowa_protocol); public int MakeTkn_bgn(Xop_ctx ctx, Xop_tkn_mkr tkn_mkr, Xop_root_tkn root, byte[] src, int src_len, int bgn_pos, int cur_pos, byte[] protocol, byte proto_tid, byte lnke_type) { boolean lnke_type_brack = (lnke_type == Xop_lnke_tkn.Lnke_typ_brack); if ( !lnke_type_brack // lnke doesn't have "["; EX: "ttl:" @@ -238,7 +238,7 @@ public class Xop_lnke_wkr implements Xop_ctx_wkr { private static final byte Lnki_linkMode_init = 0, Lnki_linkMode_eq = 1, Lnki_linkMode_text = 2; private static final byte End_tid_null = 0, End_tid_eos = 1, End_tid_brack = 2, End_tid_space = 3, End_tid_nl = 4, End_tid_symbol = 5, End_tid_invalid = 6; public int MakeTkn_end(Xop_ctx ctx, Xop_tkn_mkr tkn_mkr, Xop_root_tkn root, byte[] src, int src_len, int bgn_pos, int cur_pos) { -// Xop_tkn_itm last_tkn = ctx.Stack_get_last(); // BLOCK:invalid_ttl_check; // TODO: backout apos changes +// Xop_tkn_itm last_tkn = ctx.Stack_get_last(); // BLOCK:invalid_ttl_check; // TODO_OLD: backout apos changes // if ( last_tkn != null // && last_tkn.Tkn_tid() == Xop_tkn_itm_.Tid_lnki) { // Xop_lnki_tkn lnki = (Xop_lnki_tkn)last_tkn; @@ -300,7 +300,7 @@ public class Xop_lnke_wkr implements Xop_ctx_wkr { ctx.Subs_add(root, tkn); tkn.Subs_add(tkn_mkr.Txt(txt_bgn, txt_end)); return end_pos; - } private static final byte[] Bry_quote = new byte[] {Byte_ascii.Quote}; + } private static final byte[] Bry_quote = new byte[] {Byte_ascii.Quote}; } /* NOTE_1 diff --git a/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_link_parser.java b/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_link_parser.java index 377ec8ced..6e65e3d4e 100644 --- a/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_link_parser.java +++ b/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_link_parser.java @@ -54,7 +54,7 @@ public class Xop_link_parser { int proto_len = Gfo_protocol_itm.Bry_file.length; // "file:" if (proto_len + 1 < raw_len && raw[proto_len + 1] == Byte_ascii.Slash) { // next char is slash, assume xfer_itm refers to protocol; EX: file:///C/A.png int slash_pos = Bry_find_.Find_bwd(raw, Byte_ascii.Slash); - if (slash_pos != Bry_find_.Not_found) // set xowa_title to file_name; TODO: call Xoa_url.build; note that this will fail sometimes when (a) xfer_itm is very long (File:ReallyLongName will be shortened to 128 chars) or (b) xfer_itm has invalid windows characters (EX:File:a"b"c.jpg) + if (slash_pos != Bry_find_.Not_found) // set xowa_title to file_name; TODO_OLD: call Xoa_url.build; note that this will fail sometimes when (a) xfer_itm is very long (File:ReallyLongName will be shortened to 128 chars) or (b) xfer_itm has invalid windows characters (EX:File:a"b"c.jpg) html_xowa_ttl = Bry_.Mid(raw, slash_pos + Int_.Const_dlm_len, raw.length); } else // next char is not slash; assume xfer_itm refers to ns; EX:File:A.png diff --git a/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_arg_parser.java b/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_arg_parser.java index 6f8f5b004..edd64b06f 100644 --- a/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_arg_parser.java +++ b/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_arg_parser.java @@ -19,9 +19,9 @@ package gplx.xowa.parsers.lnkis; import gplx.*; import gplx.xowa.*; import gplx. import gplx.core.primitives.*; import gplx.core.btries.*; import gplx.core.envs.*; import gplx.xowa.langs.*; import gplx.xowa.langs.kwds.*; import gplx.xowa.langs.numbers.*; public class Xop_lnki_arg_parser { - private final Btrie_fast_mgr key_trie = Btrie_fast_mgr.cs(); - private final Bry_bfr int_bfr = Bry_bfr.reset_(16); - private final Btrie_bwd_mgr px_trie = Btrie_bwd_mgr.cs_(); private final Btrie_fast_mgr size_trie = Btrie_fast_mgr.cs(); + private final Btrie_fast_mgr key_trie = Btrie_fast_mgr.cs(); + private final Bry_bfr int_bfr = Bry_bfr_.Reset(16); + private final Btrie_bwd_mgr px_trie = Btrie_bwd_mgr.cs_(); private final Btrie_fast_mgr size_trie = Btrie_fast_mgr.cs(); private int lnki_w, lnki_h; public void Evt_lang_changed(Xol_lang_itm lang) { Bry_bfr tmp_bfr = int_bfr; @@ -144,7 +144,7 @@ public class Xop_lnki_arg_parser { px_trie.Add(word_bry, Byte_obj_val.new_(Tid_dim)); } } - public static final byte[] Bry_upright = Bry_.new_a7("upright"), Bry_thumbtime = Bry_.new_a7("thumbtime"), Bry_target = Bry_.new_a7("target"); + public static final byte[] Bry_upright = Bry_.new_a7("upright"), Bry_thumbtime = Bry_.new_a7("thumbtime"), Bry_target = Bry_.new_a7("target"); public static final byte Tid_unknown = 0, Tid_thumb = 1, Tid_left = 2, Tid_right = 3, Tid_none = 4, Tid_center = 5, Tid_frame = 6, Tid_frameless = 7, Tid_upright = 8, Tid_border = 9 , Tid_alt = 10, Tid_link = 11, Tid_baseline = 12, Tid_sub = 13, Tid_super = 14, Tid_top = 15, Tid_text_top = 16, Tid_middle = 17, Tid_bottom = 18, Tid_text_bottom = 19 @@ -155,13 +155,13 @@ public class Xop_lnki_arg_parser { , Tid_class = 27 , Tid_target = 28 ; - private static final byte[] X_bry = Bry_.new_a7("x"); + private static final byte[] X_bry = Bry_.new_a7("x"); private static final byte // NOTE: d0 - d9 must match 0 - 9; DATE:2015-07-18 Key_dim_d0 = 0, Key_dim_d1 = 1, Key_dim_d2 = 2, Key_dim_d3 = 3, Key_dim_d4 = 4 , Key_dim_d5 = 5, Key_dim_d6 = 6, Key_dim_d7 = 7, Key_dim_d8 = 8, Key_dim_d9 = 9 , Key_dim_num = 10, Key_dim_x = 11, Key_dim_px = 12, Key_space = 13 ; - private static final int[][] Keys_ids = new int[][] + private static final int[][] Keys_ids = new int[][] { new int[] {Xol_kwd_grp_.Id_img_thumbnail , Tid_thumb} , new int[] {Xol_kwd_grp_.Id_img_manualthumb , Tid_thumb} // RESEARCH: what is manualthumb? 'thumb=$1' vs 'thumb' , new int[] {Xol_kwd_grp_.Id_img_right , Tid_right} diff --git a/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_type.java b/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_type.java index 95d21228d..45c0b18b2 100644 --- a/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_type.java +++ b/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_type.java @@ -52,7 +52,7 @@ public class Xop_lnki_type { return true; else if ( Bitmask_.Has_int(id, Id_frame) // [[File:A.png|frame]] -> 400,200 (frame is always default size) || id == Id_null // [[File:A.png]] -> 400,200 (default to original size) - || Bitmask_.Has_int(id, Id_none) // TODO: deprecate; NOTE: still used by one test; DATE:2015-08-03 + || Bitmask_.Has_int(id, Id_none) // TODO_OLD: deprecate; NOTE: still used by one test; DATE:2015-08-03 ) return false; else // should not happen @@ -65,7 +65,7 @@ public class Xop_lnki_type { ) return true; else if ( id == Id_null // [[File:A.png|600px]] -> 600,400; uses orig file of 400,200, but tag src_width / src_height set to 600,400 - || Bitmask_.Has_int(id, Id_none) // TODO: deprecate; NOTE: leaving in b/c of above failed-deprecate; DATE:2015-08-03 + || Bitmask_.Has_int(id, Id_none) // TODO_OLD: deprecate; NOTE: leaving in b/c of above failed-deprecate; DATE:2015-08-03 ) return false; else // should not happen; diff --git a/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_wkr_.java b/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_wkr_.java index fb39e9612..6b91f6e39 100644 --- a/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_wkr_.java +++ b/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_wkr_.java @@ -22,7 +22,7 @@ import gplx.xowa.wikis.nss.*; import gplx.xowa.wikis.*; import gplx.xowa.xtns.pfuncs.ttls.*; import gplx.xowa.xtns.relatedSites.*; import gplx.xowa.parsers.tmpls.*; import gplx.xowa.parsers.lnkis.redlinks.*; public class Xop_lnki_wkr_ { - private static final Int_obj_ref rel2abs_tid = Int_obj_ref.zero_(); + private static final Int_obj_ref rel2abs_tid = Int_obj_ref.New_zero(); public static final int Invalidate_lnki_len = 128; public static int Invalidate_lnki(Xop_ctx ctx, byte[] src, Xop_root_tkn root, Xop_lnki_tkn lnki, int cur_pos) { lnki.Tkn_tid_to_txt(); // convert initial "[[" to text; note that this lnki has no pipes as pipe_lxr does similar check; EX: [[]]; DATE:2014-03-26 diff --git a/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_wkr__invalid_tst.java b/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_wkr__invalid_tst.java index 5295e61e0..21814463d 100644 --- a/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_wkr__invalid_tst.java +++ b/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_wkr__invalid_tst.java @@ -19,7 +19,7 @@ package gplx.xowa.parsers.lnkis; import gplx.*; import gplx.xowa.*; import gplx. import org.junit.*; import gplx.xowa.langs.cases.*; import gplx.xowa.wikis.ttls.*; public class Xop_lnki_wkr__invalid_tst { - @Before public void init() {fxt.Reset(); fxt.Init_para_n_();} private final Xop_fxt fxt = new Xop_fxt(); + @Before public void init() {fxt.Reset(); fxt.Init_para_n_();} private final Xop_fxt fxt = new Xop_fxt(); @Test public void Ignore_invalid_url_encodings() { // PURPOSE: if url encoding is invalid, still render lnki as ; EX: fr.w:Bordetella; fxt.Test_parse_page_all_str("[[%GC]]", "%GC"); } @@ -59,7 +59,7 @@ public class Xop_lnki_wkr__invalid_tst { @Test public void Nl_with_apos_shouldnt_fail() { // PURPOSE: apos, lnki and nl will cause parser to fail; DATE:2013-10-31 fxt.Test_parse_page_all_str("''[[\n]]", "[[\n]]"); } -// @Test public void Brack_end_invalid() { // PURPOSE: invalidate if ]; DATE:2014-04-03; // TODO: backout apos changes +// @Test public void Brack_end_invalid() { // PURPOSE: invalidate if ]; DATE:2014-04-03; // TODO_OLD: backout apos changes // fxt.Test_parse_page_all_str_and_chk("[[A] ]", "[[A] ]", Xop_lnki_log.Invalid_ttl); // } @Test public void Module() { // PURPOSE: handle lnki_wkr parsing Module text (shouldn't happen); apos, tblw, lnki, and nl will cause parser to fail; also handles scan-bwd; EX:Module:Taxobox; DATE:2013-11-10 diff --git a/400_xowa/src/gplx/xowa/parsers/lnkis/cfgs/Xoc_lnki_cfg.java b/400_xowa/src/gplx/xowa/parsers/lnkis/cfgs/Xoc_lnki_cfg.java index 17adfb682..32121f43e 100644 --- a/400_xowa/src/gplx/xowa/parsers/lnkis/cfgs/Xoc_lnki_cfg.java +++ b/400_xowa/src/gplx/xowa/parsers/lnkis/cfgs/Xoc_lnki_cfg.java @@ -16,12 +16,12 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.parsers.lnkis.cfgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.lnkis.*; -public class Xoc_lnki_cfg implements GfoInvkAble { +public class Xoc_lnki_cfg implements Gfo_invk { public Xoc_lnki_cfg(Xowe_wiki wiki) {xwiki_repo_mgr = new Xoc_xwiki_repo_mgr(wiki);} public Xoc_xwiki_repo_mgr Xwiki_repo_mgr() {return xwiki_repo_mgr;} private Xoc_xwiki_repo_mgr xwiki_repo_mgr; public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_xwiki_repos)) return xwiki_repo_mgr; - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; } private static final String Invk_xwiki_repos = "xwiki_repos"; } diff --git a/400_xowa/src/gplx/xowa/parsers/lnkis/cfgs/Xoc_xwiki_repo_mgr.java b/400_xowa/src/gplx/xowa/parsers/lnkis/cfgs/Xoc_xwiki_repo_mgr.java index f5b751c91..10fb659ac 100644 --- a/400_xowa/src/gplx/xowa/parsers/lnkis/cfgs/Xoc_xwiki_repo_mgr.java +++ b/400_xowa/src/gplx/xowa/parsers/lnkis/cfgs/Xoc_xwiki_repo_mgr.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.parsers.lnkis.cfgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.lnkis.*; -public class Xoc_xwiki_repo_mgr implements GfoInvkAble { +public class Xoc_xwiki_repo_mgr implements Gfo_invk { private Ordered_hash hash = Ordered_hash_.New_bry(); private Xowe_wiki wiki; public Xoc_xwiki_repo_mgr(Xowe_wiki wiki) {this.wiki = wiki;} @@ -34,7 +34,7 @@ public class Xoc_xwiki_repo_mgr implements GfoInvkAble { } public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_add)) Add_or_mod(m.ReadBry("xwiki")); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String Invk_add = "add"; diff --git a/400_xowa/src/gplx/xowa/parsers/lnkis/redlinks/Xog_redlink_mgr.java b/400_xowa/src/gplx/xowa/parsers/lnkis/redlinks/Xog_redlink_mgr.java index bb43b62ea..6c87adecd 100644 --- a/400_xowa/src/gplx/xowa/parsers/lnkis/redlinks/Xog_redlink_mgr.java +++ b/400_xowa/src/gplx/xowa/parsers/lnkis/redlinks/Xog_redlink_mgr.java @@ -20,38 +20,38 @@ import gplx.core.primitives.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.langs.vnts.*; import gplx.xowa.guis.views.*; import gplx.xowa.wikis.pages.*; import gplx.xowa.htmls.core.makes.imgs.*; import gplx.xowa.parsers.tmpls.*; -public class Xog_redlink_mgr implements GfoInvkAble { - private Xog_win_itm win; private Xog_html_itm html_itm; private Xowe_wiki wiki; private Xoae_page page; - private Xopg_redlink_lnki_list redlink_lnki_list; private List_adp lnki_list; private boolean log_enabled; private Gfo_usr_dlg usr_dlg; private int thread_id; - public Xog_redlink_mgr(Xog_win_itm win, Xoae_page page, boolean log_enabled) { - this.win = win; this.page = page; this.wiki = page.Wikie(); +public class Xog_redlink_mgr implements Gfo_invk { + private Gfo_usr_dlg usr_dlg; private Xog_html_itm html_itm; private Xowe_wiki wiki; private Xoae_page page; + private Xopg_redlink_lnki_list redlink_lnki_list; private List_adp lnki_list; private int thread_id; + public Xog_redlink_mgr(Xoae_page page) { + this.page = page; this.wiki = page.Wikie(); this.html_itm = page.Tab_data().Tab().Html_itm(); // NOTE: caching locally b/c page.Tab() is sometimes null this.redlink_lnki_list = page.Redlink_lnki_list(); this.lnki_list = redlink_lnki_list.Lnki_list(); this.thread_id = redlink_lnki_list.Thread_id(); - this.log_enabled = log_enabled; this.usr_dlg = log_enabled ? Gfo_usr_dlg_.Instance : Gfo_usr_dlg_.Noop; + this.usr_dlg = Gfo_usr_dlg_.Instance; } public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_run)) Redlink(); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } public static final String Invk_run = "run"; public void Redlink() { synchronized (this) { // NOTE: attempt to eliminate random IndexBounds errors; DATE:2014-09-02 if (redlink_lnki_list.Disabled()) return; - List_adp work_list = List_adp_.new_(); + List_adp work_list = List_adp_.New(); Ordered_hash page_hash = Ordered_hash_.New_bry(); page_hash.Clear(); // NOTE: do not clear in Page_bgn, else will fail b/c of threading; EX: Open Page -> Preview -> Save; DATE:2013-11-17 work_list.Clear(); int len = lnki_list.Count(); - if (log_enabled) usr_dlg.Log_many("", "", "redlink.redlink_bgn: page=~{0} total_links=~{1}", String_.new_u8(page.Ttl().Raw()), len); + usr_dlg.Log_many("", "", "redlink.redlink_bgn: page=~{0} total_links=~{1}", String_.new_u8(page.Ttl().Raw()), len); for (int i = 0; i < len; i++) { // make a copy of list else thread issues - if (win.Usr_dlg().Canceled()) return; + if (usr_dlg.Canceled()) return; if (redlink_lnki_list.Thread_id() != thread_id) return; work_list.Add(lnki_list.Get_at(i)); } for (int i = 0; i < len; i++) { - if (win.Usr_dlg().Canceled()) return; + if (usr_dlg.Canceled()) return; if (redlink_lnki_list.Thread_id() != thread_id) return; Xop_lnki_tkn lnki = (Xop_lnki_tkn)work_list.Get_at(i); Xoa_ttl ttl = lnki.Ttl(); @@ -62,14 +62,13 @@ public class Xog_redlink_mgr implements GfoInvkAble { } int page_len = page_hash.Count(); for (int i = 0; i < page_len; i += Batch_size) { - if (win.Usr_dlg().Canceled()) return; + if (usr_dlg.Canceled()) return; if (redlink_lnki_list.Thread_id() != thread_id) return; int end = i + Batch_size; if (end > page_len) end = page_len; - wiki.Db_mgr().Load_mgr().Load_by_ttls(win.Usr_dlg(), page_hash, Bool_.Y, i, end); + wiki.Db_mgr().Load_mgr().Load_by_ttls(usr_dlg, page_hash, Bool_.Y, i, end); } int redlink_count = 0; - Bry_bfr bfr = null; boolean variants_enabled = wiki.Lang().Vnt_mgr().Enabled(); Xol_vnt_mgr vnt_mgr = wiki.Lang().Vnt_mgr(); Xopg_redlink_idx_list redlink_mgr = page.Hdump_data().Redlink_mgr(); @@ -90,11 +89,7 @@ public class Xog_redlink_mgr implements GfoInvkAble { continue; } } - if (log_enabled) { - if (bfr == null) bfr = Bry_bfr.new_(); - bfr.Add_int_variable(lnki.Html_uid()).Add_byte_pipe().Add(Xop_tkn_.Lnki_bgn).Add(full_db).Add(Xop_tkn_.Lnki_end).Add_byte(Byte_ascii.Semic).Add_byte_space(); - } - if (win.Usr_dlg().Canceled()) return; + if (usr_dlg.Canceled()) return; if (redlink_lnki_list.Thread_id() != thread_id) return; int uid = lnki.Html_uid(); gplx.xowa.files.gui.Js_img_mgr.Update_link_missing(html_itm, Xopg_redlink_lnki_list.Lnki_id_prefix + Int_.To_str(uid)); @@ -102,11 +97,10 @@ public class Xog_redlink_mgr implements GfoInvkAble { ++redlink_count; } } - if (log_enabled) - usr_dlg.Log_many("", "", "redlink.redlink_end: redlinks_run=~{0} links=~{1}", redlink_count, bfr == null ? String_.Empty : bfr.To_str_and_clear()); + usr_dlg.Log_many("", "", "redlink.redlink_end: redlinks_run=~{0}", redlink_count); } } - public static final Xog_redlink_mgr Null = new Xog_redlink_mgr(); Xog_redlink_mgr() {} + public static final Xog_redlink_mgr Null = new Xog_redlink_mgr(); Xog_redlink_mgr() {} private static final int Batch_size = 32; } class Xog_redlink_wkr { diff --git a/400_xowa/src/gplx/xowa/parsers/lnkis/redlinks/Xopg_redlink_lnki_list.java b/400_xowa/src/gplx/xowa/parsers/lnkis/redlinks/Xopg_redlink_lnki_list.java index 358bd4c7b..902545942 100644 --- a/400_xowa/src/gplx/xowa/parsers/lnkis/redlinks/Xopg_redlink_lnki_list.java +++ b/400_xowa/src/gplx/xowa/parsers/lnkis/redlinks/Xopg_redlink_lnki_list.java @@ -23,8 +23,8 @@ public class Xopg_redlink_lnki_list { public Xopg_redlink_lnki_list(boolean ttl_is_module) { // never redlink in Module ns; particularly since Lua has multi-line comments for [[ ]] this.disabled = ttl_is_module; } - public boolean Disabled() {return disabled;} private final boolean disabled; - public List_adp Lnki_list() {return lnki_list;} private final List_adp lnki_list = List_adp_.new_(); + public boolean Disabled() {return disabled;} private final boolean disabled; + public List_adp Lnki_list() {return lnki_list;} private final List_adp lnki_list = List_adp_.New(); public int Thread_id() {return thread_id;} private int thread_id = 1; public void Clear() { if (disabled) return; @@ -47,5 +47,5 @@ public class Xopg_redlink_lnki_list { lnki_list.Add(lnki); } public static final String Lnki_id_prefix = "xolnki_"; - public static final int Lnki_id_prefix_len = String_.Len(Lnki_id_prefix); + public static final int Lnki_id_prefix_len = String_.Len(Lnki_id_prefix); } diff --git a/400_xowa/src/gplx/xowa/parsers/logs/Xop_log_basic_wkr.java b/400_xowa/src/gplx/xowa/parsers/logs/Xop_log_basic_wkr.java index 3530c5664..c45d70636 100644 --- a/400_xowa/src/gplx/xowa/parsers/logs/Xop_log_basic_wkr.java +++ b/400_xowa/src/gplx/xowa/parsers/logs/Xop_log_basic_wkr.java @@ -19,7 +19,7 @@ package gplx.xowa.parsers.logs; import gplx.*; import gplx.xowa.*; import gplx.x import gplx.core.envs.*; import gplx.dbs.*; import gplx.xowa.parsers.xndes.*; import gplx.xowa.parsers.htmls.*; -public class Xop_log_basic_wkr implements GfoInvkAble { +public class Xop_log_basic_wkr implements Gfo_invk { private Xop_log_mgr log_mgr; private Xop_log_basic_tbl log_tbl; private boolean save_page_ttl, save_log_time, save_args_len, save_args_str; public boolean Save_src_str() {return save_src_str;} public Xop_log_basic_wkr Save_src_str_(boolean v) {save_src_str = v; return this;} private boolean save_src_str; @@ -53,17 +53,17 @@ public class Xop_log_basic_wkr implements GfoInvkAble { else if (ctx.Match(k, Invk_save_args_len_)) save_args_len = m.ReadYn("v"); else if (ctx.Match(k, Invk_save_args_str_)) save_args_str = m.ReadYn("v"); else if (ctx.Match(k, Invk_save_src_str_)) save_src_str = m.ReadYn("v"); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String Invk_save_page_ttl_ = "save_page_ttl_", Invk_save_log_time_ = "save_log_time_" , Invk_save_args_len_ = "save_args_len_", Invk_save_args_str_ = "save_args_str_", Invk_save_src_str_ = "save_src_str_" ; - public static final Xop_log_basic_wkr Null = null; + public static final Xop_log_basic_wkr Null = null; public static final int Null_page_id = -1, Null_log_bgn = -1, Null_log_time = -1, Null_args_len = -1, Null_src_len = -1; public static final String Null_page_ttl = "", Null_args_str = "", Null_src_str = ""; - public static final byte[] Null_log_msg = null; + public static final byte[] Null_log_msg = null; public static final int Tid_gallery = 1 , Tid_imageMap = 2 diff --git a/400_xowa/src/gplx/xowa/parsers/logs/Xop_log_invoke_wkr.java b/400_xowa/src/gplx/xowa/parsers/logs/Xop_log_invoke_wkr.java index 0ef9718b4..e6a6da99e 100644 --- a/400_xowa/src/gplx/xowa/parsers/logs/Xop_log_invoke_wkr.java +++ b/400_xowa/src/gplx/xowa/parsers/logs/Xop_log_invoke_wkr.java @@ -19,12 +19,12 @@ package gplx.xowa.parsers.logs; import gplx.*; import gplx.xowa.*; import gplx.x import gplx.core.envs.*; import gplx.dbs.*; import gplx.dbs.qrys.*; import gplx.dbs.engines.sqlite.*; import gplx.xowa.parsers.logs.*; import gplx.xowa.xtns.scribunto.*; -public class Xop_log_invoke_wkr implements GfoInvkAble { +public class Xop_log_invoke_wkr implements Gfo_invk { private Xop_log_mgr log_mgr; private Db_conn conn; private Db_stmt stmt; private boolean log_enabled = true; private Hash_adp_bry exclude_mod_names = Hash_adp_bry.cs(); - public Scrib_err_filter_mgr Err_filter_mgr() {return err_filter_mgr;} private final Scrib_err_filter_mgr err_filter_mgr = new Scrib_err_filter_mgr(); + public Scrib_err_filter_mgr Err_filter_mgr() {return err_filter_mgr;} private final Scrib_err_filter_mgr err_filter_mgr = new Scrib_err_filter_mgr(); public Xop_log_invoke_wkr(Xop_log_mgr log_mgr, Db_conn conn) { this.log_mgr = log_mgr; this.conn = conn; @@ -53,7 +53,7 @@ public class Xop_log_invoke_wkr implements GfoInvkAble { if (ctx.Match(k, Invk_exclude_mod_names_add)) Exclude_mod_names_add(m.ReadStrAry("v", "|")); else if (ctx.Match(k, Invk_log_enabled_)) log_enabled = m.ReadYn("v"); else if (ctx.Match(k, Invk_err_filter)) return err_filter_mgr; - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String Invk_exclude_mod_names_add = "exclude_mod_names_add", Invk_log_enabled_ = "log_enabled_", Invk_err_filter = "err_filter"; @@ -71,7 +71,7 @@ class Xop_log_invoke_tbl { .Exec_insert(); } public static final String Tbl_name = "log_invoke_temp", Fld_invk_page_ttl = "invk_page_ttl", Fld_invk_mod_name = "invk_mod_name", Fld_invk_fnc_name = "invk_fnc_name", Fld_invk_eval_time = "invk_eval_time"; - private static final String Tbl_sql = String_.Concat_lines_nl + private static final String Tbl_sql = String_.Concat_lines_nl ( "CREATE TABLE IF NOT EXISTS log_invoke_temp" , "( invk_id integer NOT NULL PRIMARY KEY AUTOINCREMENT" , ", invk_page_ttl varchar(255) NOT NULL" diff --git a/400_xowa/src/gplx/xowa/parsers/logs/Xop_log_mgr.java b/400_xowa/src/gplx/xowa/parsers/logs/Xop_log_mgr.java index 6ea10e18f..8a8de453b 100644 --- a/400_xowa/src/gplx/xowa/parsers/logs/Xop_log_mgr.java +++ b/400_xowa/src/gplx/xowa/parsers/logs/Xop_log_mgr.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.parsers.logs; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*; import gplx.dbs.*; import gplx.xowa.bldrs.*; -public class Xop_log_mgr implements GfoInvkAble { +public class Xop_log_mgr implements Gfo_invk { private Db_conn conn; private Xoae_app app; private Xop_log_basic_tbl log_tbl; private int exec_count = 0, commit_interval = 1000; @@ -61,7 +61,7 @@ public class Xop_log_mgr implements GfoInvkAble { } public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_commit_interval_)) commit_interval = m.ReadInt("v"); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String Invk_commit_interval_ = "commit_interval_"; diff --git a/400_xowa/src/gplx/xowa/parsers/logs/Xop_log_property_wkr.java b/400_xowa/src/gplx/xowa/parsers/logs/Xop_log_property_wkr.java index b8b04eb6b..580327c1b 100644 --- a/400_xowa/src/gplx/xowa/parsers/logs/Xop_log_property_wkr.java +++ b/400_xowa/src/gplx/xowa/parsers/logs/Xop_log_property_wkr.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.xowa.parsers.logs; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*; import gplx.core.envs.*; import gplx.dbs.*; import gplx.dbs.qrys.*; import gplx.dbs.engines.sqlite.*; -public class Xop_log_property_wkr implements GfoInvkAble { +public class Xop_log_property_wkr implements Gfo_invk { private Xop_log_mgr log_mgr; private Db_conn conn; private Db_stmt stmt; private boolean log_enabled = true; private boolean include_all = true; @@ -51,7 +51,7 @@ public class Xop_log_property_wkr implements GfoInvkAble { public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_include_props_add)) Include_props_add(m.ReadStrAry("v", "|")); else if (ctx.Match(k, Invk_log_enabled_)) log_enabled = m.ReadYn("v"); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String Invk_include_props_add = "include_props_add", Invk_log_enabled_ = "log_enabled_"; } @@ -67,7 +67,7 @@ class Xob_log_property_temp_tbl { .Exec_insert(); } public static final String Tbl_name = "log_property_temp", Fld_prop_page_ttl = "prop_page_ttl", Fld_prop_prop_name = "prop_prop_name", Fld_prop_eval_time = "prop_eval_time"; - private static final String Tbl_sql = String_.Concat_lines_nl + private static final String Tbl_sql = String_.Concat_lines_nl ( "CREATE TABLE IF NOT EXISTS log_property_temp" , "( prop_id integer NOT NULL PRIMARY KEY AUTOINCREMENT" , ", prop_page_ttl varchar(255) NOT NULL" diff --git a/400_xowa/src/gplx/xowa/parsers/miscs/Xop_cr_tkn.java b/400_xowa/src/gplx/xowa/parsers/miscs/Xop_cr_tkn.java index 76e99b86b..211223bdf 100644 --- a/400_xowa/src/gplx/xowa/parsers/miscs/Xop_cr_tkn.java +++ b/400_xowa/src/gplx/xowa/parsers/miscs/Xop_cr_tkn.java @@ -31,5 +31,5 @@ NOTE_1:tabs .. note that they all need to be ws in order to be trimmed out .. note that shrinking the src[] would be (a) memory-expensive (b) complexity-expensive (many functions assume a static src size) .. note that "\t\t\t\t\t" was the 1st attempt, but this resulted in exponential growth of "\t"s with each save (1 -> 5 -> 25 -> 125). "\t\s\s\s\s" is less worse with its linear growth (1 -> 5 -> 10) -. TODO: swap out the " " at point of file-read; +. TODO_OLD: swap out the " " at point of file-read; */ \ No newline at end of file diff --git a/400_xowa/src/gplx/xowa/parsers/miscs/Xop_hr_lxr.java b/400_xowa/src/gplx/xowa/parsers/miscs/Xop_hr_lxr.java index 6aa13fbc2..ba10cd035 100644 --- a/400_xowa/src/gplx/xowa/parsers/miscs/Xop_hr_lxr.java +++ b/400_xowa/src/gplx/xowa/parsers/miscs/Xop_hr_lxr.java @@ -20,7 +20,7 @@ import gplx.core.btries.*; import gplx.xowa.langs.*; import gplx.xowa.parsers.xndes.*; public class Xop_hr_lxr implements Xop_lxr { public int Lxr_tid() {return Xop_lxr_.Tid_hr;} - public void Init_by_wiki(Xowe_wiki wiki, Btrie_fast_mgr parse_trie) {parse_trie.Add(Hook_ary, this);} static final byte[] Hook_ary = new byte[] {Byte_ascii.Nl, Byte_ascii.Dash, Byte_ascii.Dash, Byte_ascii.Dash, Byte_ascii.Dash}; + public void Init_by_wiki(Xowe_wiki wiki, Btrie_fast_mgr parse_trie) {parse_trie.Add(Hook_ary, this);} static final byte[] Hook_ary = new byte[] {Byte_ascii.Nl, Byte_ascii.Dash, Byte_ascii.Dash, Byte_ascii.Dash, Byte_ascii.Dash}; public void Init_by_lang(Xol_lang_itm lang, Btrie_fast_mgr core_trie) {} public void Term(Btrie_fast_mgr core_trie) {} public int Make_tkn(Xop_ctx ctx, Xop_tkn_mkr tkn_mkr, Xop_root_tkn root, byte[] src, int src_len, int bgn_pos, int cur_pos) { @@ -36,11 +36,11 @@ public class Xop_hr_lxr implements Xop_lxr { if (!bos) ctx.Para().Process_nl(ctx, root, src, bgn_pos, bgn_pos); // simulate \n in front of ---- ctx.Para().Process_block__bgn_y__end_n(Xop_xnde_tag_.Tag__hr); // para=n; block=y - int hr_len = cur_pos - bgn_pos + nl_adj; // TODO: syntax_check if > 4 + int hr_len = cur_pos - bgn_pos + nl_adj; // TODO_OLD: syntax_check if > 4 ctx.Subs_add(root, tkn_mkr.Hr(bgn_pos, cur_pos, hr_len)); ctx.Para().Process_block__bgn_n__end_y(Xop_xnde_tag_.Tag__hr); // block=n; para=y; return cur_pos; } private static final byte Hook_byt = Byte_ascii.Dash; public static final int Hr_len = 4; - public static final Xop_hr_lxr Instance = new Xop_hr_lxr(); Xop_hr_lxr() {} + public static final Xop_hr_lxr Instance = new Xop_hr_lxr(); Xop_hr_lxr() {} } diff --git a/400_xowa/src/gplx/xowa/parsers/miscs/Xop_tab_tkn.java b/400_xowa/src/gplx/xowa/parsers/miscs/Xop_tab_tkn.java index 439119ef2..425431829 100644 --- a/400_xowa/src/gplx/xowa/parsers/miscs/Xop_tab_tkn.java +++ b/400_xowa/src/gplx/xowa/parsers/miscs/Xop_tab_tkn.java @@ -20,7 +20,7 @@ import gplx.core.btries.*; public class Xop_tab_tkn extends Xop_tkn_itm_base { public Xop_tab_tkn(int bgn, int end) {this.Tkn_ini_pos(false, bgn, end);} @Override public byte Tkn_tid() {return Xop_tkn_itm_.Tid_tab;} - public static final byte[] Bry_tab_ent = Bry_.new_a7(" "); + public static final byte[] Bry_tab_ent = Bry_.new_a7(" "); } /* NOTE_1:tabs @@ -33,5 +33,5 @@ NOTE_1:tabs .. note that they all need to be ws in order to be trimmed out .. note that shrinking the src[] would be (a) memory-expensive (b) complexity-expensive (many functions assume a static src size) .. note that "\t\t\t\t\t" was the 1st attempt, but this resulted in exponential growth of "\t"s with each save (1 -> 5 -> 25 -> 125). "\t\s\s\s\s" is less worse with its linear growth (1 -> 5 -> 10) -. TODO: swap out the " " at point of file-read; +. TODO_OLD: swap out the " " at point of file-read; */ \ No newline at end of file diff --git a/400_xowa/src/gplx/xowa/parsers/mws/wkrs/Xomw_hdr_wkr_tst.java b/400_xowa/src/gplx/xowa/parsers/mws/wkrs/Xomw_hdr_wkr_tst.java index 6213eadb4..c66b1938d 100644 --- a/400_xowa/src/gplx/xowa/parsers/mws/wkrs/Xomw_hdr_wkr_tst.java +++ b/400_xowa/src/gplx/xowa/parsers/mws/wkrs/Xomw_hdr_wkr_tst.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.xowa.parsers.mws.wkrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.mws.*; import org.junit.*; public class Xomw_hdr_wkr_tst { - private final Xomw_hdr_wkr_fxt fxt = new Xomw_hdr_wkr_fxt(); + private final Xomw_hdr_wkr_fxt fxt = new Xomw_hdr_wkr_fxt(); @Test public void Basic() { fxt.Test__parse("==A==" , "

A

"); fxt.Test__parse("abc\n==A==\ndef" , "abc\n

A

\ndef"); @@ -29,8 +29,8 @@ public class Xomw_hdr_wkr_tst { } } class Xomw_hdr_wkr_fxt { - private final Xomw_hdr_wkr wkr = new Xomw_hdr_wkr(); - private final Bry_bfr bfr = Bry_bfr.new_(); private final Xomw_parser_ctx pctx = new Xomw_parser_ctx(); + private final Xomw_hdr_wkr wkr = new Xomw_hdr_wkr(); + private final Bry_bfr bfr = Bry_bfr_.New(); private final Xomw_parser_ctx pctx = new Xomw_parser_ctx(); public void Test__parse(String src_str, String expd) { byte[] src_bry = Bry_.new_u8(src_str); wkr.Parse(bfr, pctx, src_bry, -1, src_bry.length); diff --git a/400_xowa/src/gplx/xowa/parsers/tblws/Xop_tblw_lxr.java b/400_xowa/src/gplx/xowa/parsers/tblws/Xop_tblw_lxr.java index 716a35138..e42ed0b18 100644 --- a/400_xowa/src/gplx/xowa/parsers/tblws/Xop_tblw_lxr.java +++ b/400_xowa/src/gplx/xowa/parsers/tblws/Xop_tblw_lxr.java @@ -41,7 +41,7 @@ public class Xop_tblw_lxr implements Xop_lxr { int lnki_pos = ctx.Stack_idx_typ(Xop_tkn_itm_.Tid_lnki); if (lnki_pos != Xop_ctx.Stack_not_found && wlxr_type == Xop_tblw_wkr.Tblw_type_td) {// lnki present;// NOTE: added Xop_tblw_wkr.Tblw_type_td b/c th should not apply when tkn_mkr.Pipe() is called below; DATE:2013-04-24 Xop_tkn_itm lnki_tkn = ctx.Stack_pop_til(root, src, lnki_pos, false, bgn_pos, cur_pos, Xop_tkn_itm_.Tid_tblw_td); // pop any intervening nodes until lnki - ctx.Stack_add(lnki_tkn); // push lnki back onto stack; TODO: combine these 2 lines into 1 + ctx.Stack_add(lnki_tkn); // push lnki back onto stack; TODO_OLD: combine these 2 lines into 1 // NOTE: this is a "\n|" inside a [[ ]]; must create two tokens for lnki to build correctly; ctx.Subs_add(root, tkn_mkr.NewLine(bgn_pos, bgn_pos + 1, Xop_nl_tkn.Tid_char, 1)); return Xop_pipe_lxr.Instance.Make_tkn(ctx, tkn_mkr, root, src, src_len, bgn_pos, cur_pos); // NOTE: need to call pipe_lxr in order to invalidate if lnki; DATE:2014-06-06 @@ -118,7 +118,7 @@ public class Xop_tblw_lxr implements Xop_lxr { return Continue; } public Xop_tblw_lxr(byte wlxr_type) {this.wlxr_type = wlxr_type;} private byte wlxr_type; - public static final Xop_tblw_lxr Instance = new Xop_tblw_lxr(); Xop_tblw_lxr() {} + public static final Xop_tblw_lxr Instance = new Xop_tblw_lxr(); Xop_tblw_lxr() {} public void Init_by_wiki(Xowe_wiki wiki, Btrie_fast_mgr core_trie) { core_trie.Add(Hook_tb, new Xop_tblw_lxr(Xop_tblw_wkr.Tblw_type_tb)); core_trie.Add(Hook_te, new Xop_tblw_lxr(Xop_tblw_wkr.Tblw_type_te)); @@ -131,7 +131,7 @@ public class Xop_tblw_lxr implements Xop_lxr { } public void Init_by_lang(Xol_lang_itm lang, Btrie_fast_mgr core_trie) {} public void Term(Btrie_fast_mgr core_trie) {} - public static final byte[] Hook_tb = Bry_.new_a7("\n{|"), Hook_te = Bry_.new_a7("\n|}"), Hook_tr = Bry_.new_a7("\n|-") + public static final byte[] Hook_tb = Bry_.new_a7("\n{|"), Hook_te = Bry_.new_a7("\n|}"), Hook_tr = Bry_.new_a7("\n|-") , Hook_td = Bry_.new_a7("\n|"), Hook_th = Bry_.new_a7("\n!"), Hook_tc = Bry_.new_a7("\n|+") , Hook_td2 = Bry_.new_a7("||"), Hook_th2 = Bry_.new_a7("!!"); } diff --git a/400_xowa/src/gplx/xowa/parsers/tblws/Xop_tblw_wkr.java b/400_xowa/src/gplx/xowa/parsers/tblws/Xop_tblw_wkr.java index 871663e1e..071a860c4 100644 --- a/400_xowa/src/gplx/xowa/parsers/tblws/Xop_tblw_wkr.java +++ b/400_xowa/src/gplx/xowa/parsers/tblws/Xop_tblw_wkr.java @@ -281,7 +281,7 @@ public class Xop_tblw_wkr implements Xop_ctx_wkr { case Tblw_type_tc: // switch (prv_tid) { case Xop_tkn_itm_.Tid_tblw_tb: break; // noop;
- case Xop_tkn_itm_.Tid_tblw_tr: // fix;
->
TODO: caption should be ignored and placed in quarantine + case Xop_tkn_itm_.Tid_tblw_tr: // fix;
->
TODO_OLD: caption should be ignored and placed in quarantine ctx.Stack_pop_til(root, src, ctx.Stack_idx_typ(Xop_tkn_itm_.Tid_tblw_tr), true, bgn_pos, bgn_pos, Xop_tkn_itm_.Tid_tblw_td); break; case Xop_tkn_itm_.Tid_tblw_td: // fix;
->
diff --git a/400_xowa/src/gplx/xowa/parsers/tblws/Xop_tblw_wkr__basic_tst.java b/400_xowa/src/gplx/xowa/parsers/tblws/Xop_tblw_wkr__basic_tst.java index f8e2efe06..4e84e722d 100644 --- a/400_xowa/src/gplx/xowa/parsers/tblws/Xop_tblw_wkr__basic_tst.java +++ b/400_xowa/src/gplx/xowa/parsers/tblws/Xop_tblw_wkr__basic_tst.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.xowa.parsers.tblws; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*; import org.junit.*; public class Xop_tblw_wkr__basic_tst { - private final Xop_fxt fxt = new Xop_fxt(); + private final Xop_fxt fxt = new Xop_fxt(); @Test public void Td() { // Tb_tr_td_te fxt.Test_parse_page_wiki("{|\n|-\n|a\n|}" , fxt.tkn_tblw_tb_(0, 11).Subs_ @@ -725,7 +725,7 @@ public class Xop_tblw_wkr__basic_tst { )); } } -// @Test public void Tb_under_tr_is_ignored() { // PURPOSE: table directly under tr is ignored; PAGE:en.w:Category:Dessert stubs; TODO: complicated, especially to handle 2nd |} +// @Test public void Tb_under_tr_is_ignored() { // PURPOSE: table directly under tr is ignored; PAGE:en.w:Category:Dessert stubs; TODO_OLD: complicated, especially to handle 2nd |} // fxt.Test_parse_page_wiki_str(String_.Concat_lines_nl_skip_last // ( "{|" // , "|-id='a'" diff --git a/400_xowa/src/gplx/xowa/parsers/tmpls/Xop_tkn_print_tst.java b/400_xowa/src/gplx/xowa/parsers/tmpls/Xop_tkn_print_tst.java index 5661a11da..7953baaa9 100644 --- a/400_xowa/src/gplx/xowa/parsers/tmpls/Xop_tkn_print_tst.java +++ b/400_xowa/src/gplx/xowa/parsers/tmpls/Xop_tkn_print_tst.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.xowa.parsers.tmpls; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*; import org.junit.*; public class Xop_tkn_print_tst { - private final Xop_fxt fxt = new Xop_fxt(); + private final Xop_fxt fxt = new Xop_fxt(); @Test public void Text() {tst_Print("a ''b'' c [[d]] e");} @Test public void Prm() {tst_Print("{{{1}}}");} @Test public void Prm_dflt() {tst_Print("{{{1|a}}}");} @@ -36,5 +36,5 @@ public class Xop_tkn_print_tst { defn.Root().Tmpl_fmt(ctx, raw_bry, raw_fmtr); raw_fmtr.Print(tst_Print_bb); Tfds.Eq(raw, tst_Print_bb.To_str_and_clear()); - } private Bry_bfr tst_Print_bb = Bry_bfr.new_(); + } private Bry_bfr tst_Print_bb = Bry_bfr_.New(); } diff --git a/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_defn_tmpl_.java b/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_defn_tmpl_.java index 684b7731a..209bcb3b1 100644 --- a/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_defn_tmpl_.java +++ b/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_defn_tmpl_.java @@ -46,7 +46,7 @@ public class Xot_defn_tmpl_ { } private static Arg_itm_tkn Make_itm(boolean val_tkn, Xop_ctx ctx, Xop_tkn_mkr tkn_mkr, byte[] src, Arg_itm_tkn orig, Xot_invk caller, Arg_nde_tkn orig_arg) { int subs_len = orig.Subs_len(); - Bry_bfr arg_bfr = Bry_bfr.new_(); + Bry_bfr arg_bfr = Bry_bfr_.New(); for (int i = 0; i < subs_len; i++) orig.Subs_get(i).Tmpl_evaluate(ctx, src, caller, arg_bfr); Arg_itm_tkn rv = tkn_mkr.ArgItm(-1, -1); // NOTE: was -1, 0; DATE:2013-04-10 diff --git a/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_defn_trace_brief_tst.java b/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_defn_trace_brief_tst.java index 54206161d..dc4458520 100644 --- a/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_defn_trace_brief_tst.java +++ b/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_defn_trace_brief_tst.java @@ -30,7 +30,7 @@ public class Xot_defn_trace_brief_tst { @Test public void Basic_a_b() {fxt.tst_("{{leaf_a}} {{leaf_b}}" , "0001 leaf_a", "0001 leaf_b");} } class Xot_defn_trace_fxt { - private final Xop_fxt fxt = new Xop_fxt(); + private final Xop_fxt fxt = new Xop_fxt(); public Xop_ctx Ctx() {return fxt.Ctx();} public void Init_defn_clear() {fxt.Init_defn_clear();} public void Init_defn_add(String name, String raw) {fxt.Init_defn_add(name, raw);} @@ -44,7 +44,7 @@ class Xot_defn_trace_fxt { ctx.Defn_trace().Print(src, tmp); String[] actl_ary = String_.Split(tmp.To_str_and_clear(), (char)Byte_ascii.Nl); Tfds.Eq_ary(expd_ary, actl_ary); - } private Bry_bfr tmp = Bry_bfr.new_(); + } private Bry_bfr tmp = Bry_bfr_.New(); String[] To_str(Xot_defn_trace_itm_brief[] ary) { String[] rv = new String[ary.length]; for (int i = 0; i < rv.length; i++) { diff --git a/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_defn_trace_dbg.java b/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_defn_trace_dbg.java index eb15961d9..ef1658704 100644 --- a/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_defn_trace_dbg.java +++ b/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_defn_trace_dbg.java @@ -107,7 +107,7 @@ public class Xot_defn_trace_dbg implements Xot_defn_trace { // Fmt(ctx, defn_tmpl.Src(), root, Ary_fmt_lbl , invk, true); Fmt(ctx, defn_tmpl.Data_raw(), root, Ary_eval_lbl, invk, false); } - } private Bry_bfr bfr = Bry_bfr.new_(128); List_adp argKeys = List_adp_.new_(); Xot_fmtr_prm prm_fmtr = new Xot_fmtr_prm(); + } private Bry_bfr bfr = Bry_bfr_.New_w_size(128); List_adp argKeys = List_adp_.New(); Xot_fmtr_prm prm_fmtr = new Xot_fmtr_prm(); private void Fmt(Xop_ctx ctx, byte[] src, Xop_tkn_itm root, byte[] lbl, Xot_invk caller, boolean newLineArgs) { bfr.Add_byte_repeat(Byte_ascii.Space, indent).Add(lbl); bfr.Add_byte_repeat(Byte_ascii.Space, indent); @@ -133,8 +133,8 @@ public class Xot_defn_trace_dbg implements Xot_defn_trace { } public void Clear() {bfr.Clear(); indent = 0; count = 0;} int indent = 0, count = 0; - public static final Xot_defn_trace_dbg Instance = new Xot_defn_trace_dbg(); Xot_defn_trace_dbg() {} - private static final byte[] Ary_invk_lbl = Bry_.new_a7("*invk\n"), Ary_lnk_lbl = Bry_.new_a7("*lnk: "), Ary_args_lbl = Bry_.new_a7("*args\n") + public static final Xot_defn_trace_dbg Instance = new Xot_defn_trace_dbg(); Xot_defn_trace_dbg() {} + private static final byte[] Ary_invk_lbl = Bry_.new_a7("*invk\n"), Ary_lnk_lbl = Bry_.new_a7("*lnk: "), Ary_args_lbl = Bry_.new_a7("*args\n") , Ary_result_lbl = Bry_.new_a7("*result\n") , Ary_eval_lbl = Bry_.new_a7("*eval\n") , Ary_source_lbl = Bry_.new_a7("*source\n"); diff --git a/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_fmtr.java b/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_fmtr.java index 3c2cf8e25..1f177a00c 100644 --- a/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_fmtr.java +++ b/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_fmtr.java @@ -43,7 +43,7 @@ class Xot_fmtr_prm implements Xot_fmtr { } else // invk mode self.Tmpl_evaluate(ctx, src, caller, trg); - } static final byte[] Bry_bgn = new byte[] {Byte_ascii.Curly_bgn, Byte_ascii.Curly_bgn, Byte_ascii.Curly_bgn}, Bry_end = new byte[] {Byte_ascii.Curly_end, Byte_ascii.Curly_end, Byte_ascii.Curly_end}; + } static final byte[] Bry_bgn = new byte[] {Byte_ascii.Curly_bgn, Byte_ascii.Curly_bgn, Byte_ascii.Curly_bgn}, Bry_end = new byte[] {Byte_ascii.Curly_end, Byte_ascii.Curly_end, Byte_ascii.Curly_end}; public void Reg_tmpl(Xop_ctx ctx, byte[] src, Xop_tkn_itm name_tkn, int args_len, Arg_nde_tkn[] args) { trg.Add(Xop_curly_bgn_lxr.Hook); ++depth; @@ -70,6 +70,6 @@ class Xot_fmtr_prm implements Xot_fmtr { self_tkn.Val_tkn().Tmpl_fmt(ctx, src, this); } public void Print(Bry_bfr bb) {bb.Add_bfr_and_preserve(trg); trg.Clear(); depth = 0;} - Bry_bfr trg = Bry_bfr.new_(); int depth = 0; - public static final Xot_fmtr_prm Instance = new Xot_fmtr_prm(); + Bry_bfr trg = Bry_bfr_.New(); int depth = 0; + public static final Xot_fmtr_prm Instance = new Xot_fmtr_prm(); } diff --git a/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_invk_temp.java b/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_invk_temp.java index e4e4b5c57..296ea3c18 100644 --- a/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_invk_temp.java +++ b/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_invk_temp.java @@ -19,7 +19,7 @@ package gplx.xowa.parsers.tmpls; import gplx.*; import gplx.xowa.*; import gplx. import gplx.core.primitives.*; import gplx.xowa.xtns.scribunto.*; public class Xot_invk_temp implements Xot_invk { - private List_adp list = List_adp_.new_(); + private List_adp list = List_adp_.New(); private Hash_adp_bry arg_key_hash; private Hash_adp arg_idx_hash; private Int_obj_ref arg_idx_ref; Xot_invk_temp() {} @@ -59,12 +59,12 @@ public class Xot_invk_temp implements Xot_invk { public void Args_add_by_idx(Arg_nde_tkn arg) {Arg_idx_hash_add(++args_add_by_idx, arg);} private int args_add_by_idx = -1; // NOTE: args_add_by_idx needs to be a separate variable; keeps track of args which don't have a key; private void Arg_idx_hash_add(int int_key, Arg_nde_tkn arg) { if (arg_idx_hash == null) { - arg_idx_hash = Hash_adp_.new_(); - arg_idx_ref = Int_obj_ref.neg1_(); + arg_idx_hash = Hash_adp_.New(); + arg_idx_ref = Int_obj_ref.New_neg1(); } - arg_idx_hash.Add_if_dupe_use_nth(Int_obj_ref.new_(int_key), arg); // Add_if_dupe_use_nth to keep latest version; needed for {{A|1=a|1=b}} DATE:2014-07-23 + arg_idx_hash.Add_if_dupe_use_nth(Int_obj_ref.New(int_key), arg); // Add_if_dupe_use_nth to keep latest version; needed for {{A|1=a|1=b}} DATE:2014-07-23 } - public static final Xot_invk_temp Page_is_caller = new Xot_invk_temp(true); // SEE NOTE_2 + public static final Xot_invk_temp Page_is_caller = new Xot_invk_temp(true); // SEE NOTE_2 } /* NOTE_1: diff --git a/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_invk_tkn.java b/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_invk_tkn.java index e0c6919ff..ab553cd35 100644 --- a/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_invk_tkn.java +++ b/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_invk_tkn.java @@ -58,7 +58,7 @@ public class Xot_invk_tkn extends Xop_tkn_itm_base implements Xot_invk { boolean name_had_subst = false; if (defn == Xot_defn_.Null) { // tmpl_name is not exact match; may be dynamic, subst, transclusion, etc.. if (name_key_tkn.Itm_static() == Bool_.N_byte) { // tmpl is dynamic; EX:{{{{{1}}}|a}} - Bry_bfr name_tkn_bfr = Bry_bfr.new_(name_tkn.Src_end() - name_tkn.Src_bgn()); + Bry_bfr name_tkn_bfr = Bry_bfr_.New_w_size(name_tkn.Src_end() - name_tkn.Src_bgn()); if (defn_tid == Xot_defn_.Tid_subst) name_tkn_bfr.Add(Get_first_subst_itm(lang.Kwd_mgr())); name_tkn.Tmpl_evaluate(ctx, src, caller, name_tkn_bfr); @@ -311,7 +311,7 @@ public class Xot_invk_tkn extends Xop_tkn_itm_base implements Xot_invk { defn_func.Eval_argx(ctx, src, caller, invk); if (defn_func_id == Xol_kwd_grp_.Id_invoke) // NOTE: if #invoke, set frame_ttl to argx, not name; EX:{{#invoke:A}} invk.Frame_ttl_(Bry_.Add(Xow_ns_.Bry__module_w_colon, Xoa_ttl.Replace_unders(defn_func.Argx_dat()))); // NOTE: always prepend "Module:" to frame_ttl; DATE:2014-06-13; NOTE: always use spaces; DATE:2014-08-14; always use canonical English "Module"; DATE:2015-11-09 - Bry_bfr bfr_func = Bry_bfr.new_(); + Bry_bfr bfr_func = Bry_bfr_.New(); defn_func.Func_evaluate(bfr_func, ctx, caller, invk, src); if (caller.Rslt_is_redirect()) // do not prepend if page is redirect; EX:"#REDIRECT" x> "\n#REDIRECT" DATE:2014-07-11 caller.Rslt_is_redirect_(false); // reset flag; needed for TEST; kludgy, but Rslt_is_redirect is intended for single use @@ -363,7 +363,7 @@ public class Xot_invk_tkn extends Xop_tkn_itm_base implements Xot_invk { private boolean Eval_sub(Xop_ctx ctx, Xot_defn_tmpl transclude_tmpl, Xot_invk caller, byte[] src, Bry_bfr doc) { boolean rv = false; Xot_invk tmp_tmpl = Xot_defn_tmpl_.CopyNew(ctx, transclude_tmpl, this, caller, src, transclude_tmpl.Name()); - Bry_bfr tmp_bfr = Bry_bfr.new_(); + Bry_bfr tmp_bfr = Bry_bfr_.New(); Xopg_tmpl_prepend_mgr prepend_mgr = ctx.Page().Tmpl_prepend_mgr().Bgn(doc); rv = transclude_tmpl.Tmpl_evaluate(ctx, tmp_tmpl, tmp_bfr); prepend_mgr.End(ctx, doc, tmp_bfr.Bfr(), tmp_bfr.Len(), Bool_.Y); diff --git a/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_prm_tkn.java b/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_prm_tkn.java index 598e2b83c..705122ae2 100644 --- a/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_prm_tkn.java +++ b/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_prm_tkn.java @@ -44,7 +44,7 @@ public class Xot_prm_tkn extends Xop_tkn_itm_base { @Override public boolean Tmpl_evaluate(Xop_ctx ctx, byte[] src, Xot_invk caller, Bry_bfr bfr) { if (!find_tkn_static) { int subs_len = find_tkn.Subs_len(); - Bry_bfr find_bfr = Bry_bfr.new_(); + Bry_bfr find_bfr = Bry_bfr_.New(); for (int i = 0; i < subs_len; i++) find_tkn.Subs_get(i).Tmpl_evaluate(ctx, src, caller, find_bfr); prm_idx = Bry_.To_int_or__trim_ws(find_bfr.Bfr(), 0, find_bfr.Len(), -1); // parse as number first; NOTE: trim needed to transform "{{{ 1 }}}" to "1"; it.w:Portale:Giochi_da_tavolo; DATE:2014-02-09 @@ -67,7 +67,7 @@ public class Xot_prm_tkn extends Xop_tkn_itm_base { if (arg_val.Itm_static() == Bool_.Y_byte) bfr.Add_mid(src, arg_val.Dat_bgn(), arg_val.Dat_end()); else {// compile arg if dynamic; EX: [[MESSENGER]] "{{About|the NASA space mission||Messenger (disambiguation){{!}}Messenger}}"; {{!}} causes {{{2}}} to be dynamic and its dat_ary will be an empty-String ("") - Bry_bfr arg_val_bfr = Bry_bfr.new_(); + Bry_bfr arg_val_bfr = Bry_bfr_.New(); arg_val.Tmpl_evaluate(ctx, src, caller, arg_val_bfr); bfr.Add_bfr_and_clear(arg_val_bfr); } diff --git a/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_tmpl_wtr.java b/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_tmpl_wtr.java index 7c6086c42..038e3efeb 100644 --- a/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_tmpl_wtr.java +++ b/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_tmpl_wtr.java @@ -55,7 +55,7 @@ public class Xot_tmpl_wtr { switch (xnde_tag_id) { case Xop_xnde_tag_.Tid__onlyinclude: { // NOTE: originally "if (ctx.Parse_tid() == Xop_parser_.Parse_tid_page_tmpl) {" but if not needed; Xot_tmpl_wtr should not be called for tmpls and should not make it to page_wiki - Bry_bfr tmp_bfr = Bry_bfr.new_(); + Bry_bfr tmp_bfr = Bry_bfr_.New(); ctx.Only_include_evaluate_(true); xnde.Tmpl_evaluate(ctx, src, Xot_invk_temp.Page_is_caller, tmp_bfr); ctx.Only_include_evaluate_(false); @@ -110,5 +110,5 @@ public class Xot_tmpl_wtr { } } public static String Err_string = ""; - public static final Xot_tmpl_wtr Instance = new Xot_tmpl_wtr(); Xot_tmpl_wtr() {} + public static final Xot_tmpl_wtr Instance = new Xot_tmpl_wtr(); Xot_tmpl_wtr() {} } diff --git a/400_xowa/src/gplx/xowa/parsers/uniqs/Xop_uniq_mgr.java b/400_xowa/src/gplx/xowa/parsers/uniqs/Xop_uniq_mgr.java index ab4b7de28..84b9c60f2 100644 --- a/400_xowa/src/gplx/xowa/parsers/uniqs/Xop_uniq_mgr.java +++ b/400_xowa/src/gplx/xowa/parsers/uniqs/Xop_uniq_mgr.java @@ -18,8 +18,8 @@ along with this program. If not, see . package gplx.xowa.parsers.uniqs; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*; import gplx.core.btries.*; public class Xop_uniq_mgr { // REF.MW:/parser/StripState.php - private final Btrie_slim_mgr general_trie = Btrie_slim_mgr.cs(); - private final Bry_bfr key_bfr = Bry_bfr.new_(32); + private final Btrie_slim_mgr general_trie = Btrie_slim_mgr.cs(); + private final Bry_bfr key_bfr = Bry_bfr_.New_w_size(32); private int idx = -1; public void Clear() {idx = -1; general_trie.Clear();} public byte[] Add(byte[] val) { // "" -> "\u007fUNIQ-item-1--QINU\u007f" @@ -46,7 +46,7 @@ public class Xop_uniq_mgr { // REF.MW:/parser/StripState.php else { byte[] val = (byte[])o; int new_pos = trie.Match_pos(); // NOTE: since trie is reused, must capture pos here - val = Parse(Bry_bfr.new_(), trie, val); + val = Parse(Bry_bfr_.New(), trie, val); // val = gplx.xowa.parsers.xndes.Xop_xnde_tkn.Hack_ctx.Wiki().Parser_mgr().Main().Parse_text_to_html(gplx.xowa.parsers.xndes.Xop_xnde_tkn.Hack_ctx, val); // CHART bfr.Add_mid(src, mark_bgn, pos); bfr.Add(val); @@ -68,7 +68,7 @@ public class Xop_uniq_mgr { // REF.MW:/parser/StripState.php } public void Random_int_ary_(int... v) {random_int_ary = v;} private int[] random_int_ary; // TEST: public byte[] Random_bry_new(int len) { - Bry_bfr key_bfr = Bry_bfr.new_(); + Bry_bfr key_bfr = Bry_bfr_.New(); RandomAdp random_gen = RandomAdp_.new_(); for (int i = 0; i < len; i += 7) { int rand = random_int_ary == null ? random_gen.Next(Int_.Max_value) : random_int_ary[i / 7]; @@ -79,7 +79,7 @@ public class Xop_uniq_mgr { // REF.MW:/parser/StripState.php key_bfr.Clear(); return rv; } - private final static byte[] + private final static byte[] Bry__uniq__bgn = Bry_.new_a7("\u007fUNIQ") // , Bry__uniq__end = Bry_.new_a7("-QINU\u007f") , Bry__uniq__add__bgn = Bry_.new_a7("\u007fUNIQ-item-") diff --git a/400_xowa/src/gplx/xowa/parsers/utils/TstObj_tst.java b/400_xowa/src/gplx/xowa/parsers/utils/TstObj_tst.java index 03578ebfe..c7cd7fd5b 100644 --- a/400_xowa/src/gplx/xowa/parsers/utils/TstObj_tst.java +++ b/400_xowa/src/gplx/xowa/parsers/utils/TstObj_tst.java @@ -52,7 +52,7 @@ class Xop_rule_mgr implements TstRuleMgr { } public String Reg() {return typeKey;} Ordered_hash hash = Ordered_hash_.New(); - public static final Xop_rule_mgr Instance = new Xop_rule_mgr(); + public static final Xop_rule_mgr Instance = new Xop_rule_mgr(); } class Xop_rule_dat { public String AtrKey() {return atrKey;} private String atrKey; @@ -78,7 +78,7 @@ public class TstObj_tst { } private static int Add(int[] ary) {int rv = 0; for (int i = 0; i < ary.length; i++) rv += ary[i]; return rv;} @gplx.Internal protected static void Eval(String raw, TstObj expdChk, TstObj actlChk, TstRuleMgr ruleMgr) { - List_adp rslts = List_adp_.new_(); + List_adp rslts = List_adp_.New(); Eval(rslts, ruleMgr, Ordered_hash_.New(), "", expdChk, actlChk); String_bldr sb = String_bldr_.new_(); @@ -204,13 +204,13 @@ class TstObj implements SrlMgr { public List_adp Subs() {return subs;} List_adp subs = List_adp_.Noop; public SrlMgr SrlMgr_new(Object o) {return Subs_new();} public TstObj Subs_new() { - if (subs == List_adp_.Noop) subs = List_adp_.new_(); + if (subs == List_adp_.Noop) subs = List_adp_.New(); TstObj rv = TstObj.new_(); subs.Add(rv); return rv; } public static TstObj new_() {return new TstObj();} TstObj() {} - public static final TstObj Null = new TstObj(); + public static final TstObj Null = new TstObj(); } class TstAtr { public String TypeKey() {return typeKey;} public TstAtr TypeKey_(String v) {typeKey = v; return this;} private String typeKey; @@ -229,5 +229,5 @@ class TstRslt { public String Key() {return key;} public TstRslt Key_(String v) {key = v; return this;} private String key; public String ActlStr() {return actlStr;} public TstRslt ActlStr_(String v) {actlStr = v; return this;} private String actlStr; public String ExpdStr() {return expdStr;} public TstRslt ExpdStr_(String v) {expdStr = v; return this;} private String expdStr; - public static final Object Ignore_null = new Object(); + public static final Object Ignore_null = new Object(); } \ No newline at end of file diff --git a/400_xowa/src/gplx/xowa/parsers/utils/Xop_redirect_mgr_tst.java b/400_xowa/src/gplx/xowa/parsers/utils/Xop_redirect_mgr_tst.java index ee73d2c5b..46ad46f07 100644 --- a/400_xowa/src/gplx/xowa/parsers/utils/Xop_redirect_mgr_tst.java +++ b/400_xowa/src/gplx/xowa/parsers/utils/Xop_redirect_mgr_tst.java @@ -76,7 +76,7 @@ class Xop_redirect_mgr_fxt { Tfds.Eq(expd_str, String_.new_u8(actl_bry)); } public void Test__redirected_html(String page_str, String expd_str) { - List_adp list = List_adp_.new_(); + List_adp list = List_adp_.New(); list.Add(Bry_.new_u8(page_str)); byte[] actl_bry = Xop_redirect_mgr.Bld_redirect_msg(fxt.App(), fxt.Wiki(), list); Tfds.Eq_str(expd_str, String_.new_u8(actl_bry)); diff --git a/400_xowa/src/gplx/xowa/parsers/utils/Xop_sanitizer.java b/400_xowa/src/gplx/xowa/parsers/utils/Xop_sanitizer.java index d6cb7f8f9..0056e042a 100644 --- a/400_xowa/src/gplx/xowa/parsers/utils/Xop_sanitizer.java +++ b/400_xowa/src/gplx/xowa/parsers/utils/Xop_sanitizer.java @@ -20,7 +20,7 @@ import gplx.core.btries.*; import gplx.xowa.parsers.amps.*; import gplx.core.log public class Xop_sanitizer { private Btrie_slim_mgr trie = Btrie_slim_mgr.cs(), amp_trie; private Xop_amp_mgr amp_mgr; - private Bry_bfr tmp_bfr = Bry_bfr.reset_(255); + private Bry_bfr tmp_bfr = Bry_bfr_.Reset(255); public Xop_sanitizer(Xop_amp_mgr amp_mgr, Gfo_msg_log msg_log) { this.amp_mgr = amp_mgr; this.amp_trie = amp_mgr.Amp_trie(); trie_add("&" , Tid_amp); diff --git a/400_xowa/src/gplx/xowa/parsers/vnts/Vnt_convert_lang.java b/400_xowa/src/gplx/xowa/parsers/vnts/Vnt_convert_lang.java index bd4c111f5..804f70250 100644 --- a/400_xowa/src/gplx/xowa/parsers/vnts/Vnt_convert_lang.java +++ b/400_xowa/src/gplx/xowa/parsers/vnts/Vnt_convert_lang.java @@ -20,9 +20,9 @@ import gplx.core.btries.*; import gplx.core.primitives.*; import gplx.dbs.*; import gplx.xowa.langs.vnts.*; import gplx.xowa.langs.vnts.converts.*; import gplx.xowa.parsers.htmls.*; public class Vnt_convert_lang { - private final Xol_convert_mgr convert_mgr; private final Xol_vnt_regy vnt_regy; - private final Vnt_convert_rule converter_rule; private final Vnt_html_doc_wkr html_convert_wkr; private final Mwh_doc_parser doc_parser = new Mwh_doc_parser(); - private final Bry_bfr bfr = Bry_bfr.new_(255), tmp_frame_bfr = Bry_bfr.new_(255), tmp_convert_bfr = Bry_bfr.new_(255); + private final Xol_convert_mgr convert_mgr; private final Xol_vnt_regy vnt_regy; + private final Vnt_convert_rule converter_rule; private final Vnt_html_doc_wkr html_convert_wkr; private final Mwh_doc_parser doc_parser = new Mwh_doc_parser(); + private final Bry_bfr bfr = Bry_bfr_.New_w_size(255), tmp_frame_bfr = Bry_bfr_.New_w_size(255), tmp_convert_bfr = Bry_bfr_.New_w_size(255); private byte[] src; private int src_len; private int pos; private Vnt_log_mgr log_mgr; private int tag_bgn, tag_end; public Vnt_convert_lang(Xol_convert_mgr convert_mgr, Xol_vnt_regy vnt_regy) { @@ -82,7 +82,7 @@ public class Vnt_convert_lang { } if (tag_bgn == -1) return false; // no "<" found; loop = true; - cur = curly_bgn + 1; // TODO: resume at }- + cur = curly_bgn + 1; // TODO_OLD: resume at }- while (loop) { // scan fwd for > byte b = src[cur]; switch (b) { @@ -121,7 +121,7 @@ public class Vnt_convert_lang { } continue; } - frame_bfr.Add(Parse_recursive(Bry_bfr.new_(16), vnt_itm, depth + 1)); // Recursively parse another rule + frame_bfr.Add(Parse_recursive(Bry_bfr_.New_w_size(16), vnt_itm, depth + 1)); // Recursively parse another rule bgn_pos = pos; break; case Tid__curly_end: @@ -180,10 +180,10 @@ public class Vnt_convert_lang { } } private static final byte Tid__curly_bgn = 1, Tid__curly_end = 2; - private static final byte[] Bry__curly_bgn = Bry_.new_a7("-{"), Bry__curly_end = Bry_.new_a7("}-"); - private static final Btrie_fast_mgr trie = Btrie_fast_mgr.cs() + private static final byte[] Bry__curly_bgn = Bry_.new_a7("-{"), Bry__curly_end = Bry_.new_a7("}-"); + private static final Btrie_fast_mgr trie = Btrie_fast_mgr.cs() .Add_bry_byte(Bry__curly_bgn, Tid__curly_bgn) .Add_bry_byte(Bry__curly_end, Tid__curly_end); - public static final byte[] Bry__armor_bgn = Bry_.new_a7("-{R|"), Bry__armor_end = Bry_.new_a7("}-"); + public static final byte[] Bry__armor_bgn = Bry_.new_a7("-{R|"), Bry__armor_end = Bry_.new_a7("}-"); private static final int max_depth = 32; } diff --git a/400_xowa/src/gplx/xowa/parsers/vnts/Vnt_convert_rule.java b/400_xowa/src/gplx/xowa/parsers/vnts/Vnt_convert_rule.java index 83cb10772..6f6f37ec8 100644 --- a/400_xowa/src/gplx/xowa/parsers/vnts/Vnt_convert_rule.java +++ b/400_xowa/src/gplx/xowa/parsers/vnts/Vnt_convert_rule.java @@ -19,10 +19,10 @@ package gplx.xowa.parsers.vnts; import gplx.*; import gplx.xowa.*; import gplx.x import gplx.core.btries.*; import gplx.core.primitives.*; import gplx.xowa.langs.vnts.*; class Vnt_convert_rule { // REF.MW: /languages/LanguageConverter.php|ConverterRule - private final Vnt_flag_parser flag_parser = new Vnt_flag_parser(); private final Vnt_flag_code_mgr flag_codes = new Vnt_flag_code_mgr(); private final Vnt_flag_lang_mgr flag_langs = new Vnt_flag_lang_mgr(); - private final Vnt_rule_parser rule_parser = new Vnt_rule_parser(); private final Vnt_rule_undi_mgr rule_undis = new Vnt_rule_undi_mgr(); private final Vnt_rule_bidi_mgr rule_bidis = new Vnt_rule_bidi_mgr(); - private final Bry_bfr tmp_bfr = Bry_bfr.new_(); - private final Ordered_hash cnv_marked_hash = Ordered_hash_.New_bry(); + private final Vnt_flag_parser flag_parser = new Vnt_flag_parser(); private final Vnt_flag_code_mgr flag_codes = new Vnt_flag_code_mgr(); private final Vnt_flag_lang_mgr flag_langs = new Vnt_flag_lang_mgr(); + private final Vnt_rule_parser rule_parser = new Vnt_rule_parser(); private final Vnt_rule_undi_mgr rule_undis = new Vnt_rule_undi_mgr(); private final Vnt_rule_bidi_mgr rule_bidis = new Vnt_rule_bidi_mgr(); + private final Bry_bfr tmp_bfr = Bry_bfr_.New(); + private final Ordered_hash cnv_marked_hash = Ordered_hash_.New_bry(); private Vnt_convert_lang converter; private Xol_vnt_regy vnt_regy; private byte[] vnt_key; private Vnt_log_mgr log_mgr; @@ -30,7 +30,7 @@ class Vnt_convert_rule { // REF.MW: /languages/LanguageConverter.php|ConverterRu public byte[] Display() {return display;} private byte[] display; public byte[] Title() {return title;} private byte[] title; public byte Action() {return action;} private byte action; - public Vnt_rule_undi_mgr Cnv_tbl() {return cnv_tbl;} private final Vnt_rule_undi_mgr cnv_tbl = new Vnt_rule_undi_mgr(); + public Vnt_rule_undi_mgr Cnv_tbl() {return cnv_tbl;} private final Vnt_rule_undi_mgr cnv_tbl = new Vnt_rule_undi_mgr(); public Vnt_convert_rule(Vnt_convert_lang converter, Xol_vnt_regy vnt_regy, Vnt_log_mgr log_mgr) { this.converter = converter; this.log_mgr = log_mgr; this.vnt_regy = vnt_regy; @@ -181,7 +181,7 @@ class Vnt_convert_rule { // REF.MW: /languages/LanguageConverter.php|ConverterRu } return rv; } - private final static byte[] + private final static byte[] Bry__error_bgn = Bry_.new_a7("vnt error") , Bry__error_end = Bry_.new_a7("") , Bry__undi_spr = Bry_.new_u8("⇒") diff --git a/400_xowa/src/gplx/xowa/parsers/vnts/Vnt_flag_parser_tst.java b/400_xowa/src/gplx/xowa/parsers/vnts/Vnt_flag_parser_tst.java index 125e825e6..4e7e2bba2 100644 --- a/400_xowa/src/gplx/xowa/parsers/vnts/Vnt_flag_parser_tst.java +++ b/400_xowa/src/gplx/xowa/parsers/vnts/Vnt_flag_parser_tst.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.xowa.parsers.vnts; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*; import org.junit.*; import gplx.xowa.langs.vnts.*; public class Vnt_flag_parser_tst { - private final Vnt_flag_parser_fxt fxt = new Vnt_flag_parser_fxt(); + private final Vnt_flag_parser_fxt fxt = new Vnt_flag_parser_fxt(); @Test public void Basic() {fxt.Test_parse("D" , "D");} @Test public void Multiple() {fxt.Test_parse("+;S;E" , "+;S;E");} @Test public void Ws() {fxt.Test_parse(" + ; S ; E " , "+;S;E");} @@ -42,10 +42,10 @@ public class Vnt_flag_parser_tst { @Test public void Lang__zap__codes() {fxt.Test_parse("+;S;zh-hans;" , "zh-hans");} } class Vnt_flag_parser_fxt { - private final Vnt_flag_parser parser = new Vnt_flag_parser(); - private final Vnt_flag_code_mgr codes = new Vnt_flag_code_mgr(); private final Vnt_flag_lang_mgr langs = new Vnt_flag_lang_mgr(); - private final Xol_vnt_regy vnt_regy = Xol_vnt_regy_fxt.new_chinese(); - private final Bry_bfr bfr = Bry_bfr.new_(); + private final Vnt_flag_parser parser = new Vnt_flag_parser(); + private final Vnt_flag_code_mgr codes = new Vnt_flag_code_mgr(); private final Vnt_flag_lang_mgr langs = new Vnt_flag_lang_mgr(); + private final Xol_vnt_regy vnt_regy = Xol_vnt_regy_fxt.new_chinese(); + private final Bry_bfr bfr = Bry_bfr_.New(); public void Test_parse(String raw, String expd) { byte[] src = Bry_.new_u8(raw); parser.Parse(codes, langs, vnt_regy, src, 0, src.length); diff --git a/400_xowa/src/gplx/xowa/parsers/vnts/Vnt_log_tbl.java b/400_xowa/src/gplx/xowa/parsers/vnts/Vnt_log_tbl.java index 84a913dd7..533076472 100644 --- a/400_xowa/src/gplx/xowa/parsers/vnts/Vnt_log_tbl.java +++ b/400_xowa/src/gplx/xowa/parsers/vnts/Vnt_log_tbl.java @@ -18,8 +18,8 @@ along with this program. If not, see . package gplx.xowa.parsers.vnts; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*; import gplx.dbs.*; public class Vnt_log_tbl implements Rls_able { - private final String tbl_name = "log_vnt"; private final Dbmeta_fld_list flds = Dbmeta_fld_list.new_(); - private final String fld_uid, fld_page_id, fld_rule_idx + private final String tbl_name = "log_vnt"; private final Dbmeta_fld_list flds = new Dbmeta_fld_list(); + private final String fld_uid, fld_page_id, fld_rule_idx , fld_flag_count, fld_lang_count, fld_undi_count, fld_bidi_count , fld_flag_add, fld_flag_del, fld_flag_aout, fld_flag_hide, fld_flag_raw, fld_flag_show, fld_flag_descrip, fld_flag_name, fld_flag_title, fld_flag_err , fld_vnt_0, fld_vnt_1, fld_vnt_2, fld_vnt_3, fld_vnt_4, fld_vnt_5, fld_vnt_6, fld_vnt_7, fld_vnt_8, fld_vnt_9 @@ -59,7 +59,7 @@ public class Vnt_log_tbl implements Rls_able { this.fld_src_txt = flds.Add_text("src_txt"); conn.Rls_reg(this); } - public Db_conn Conn() {return conn;} private final Db_conn conn; + public Db_conn Conn() {return conn;} private final Db_conn conn; public void Rls() { stmt_insert = Db_stmt_.Rls(stmt_insert); } diff --git a/400_xowa/src/gplx/xowa/parsers/vnts/Vnt_rule_parser_fxt.java b/400_xowa/src/gplx/xowa/parsers/vnts/Vnt_rule_parser_fxt.java index 760a2c53c..0a456d3b3 100644 --- a/400_xowa/src/gplx/xowa/parsers/vnts/Vnt_rule_parser_fxt.java +++ b/400_xowa/src/gplx/xowa/parsers/vnts/Vnt_rule_parser_fxt.java @@ -18,8 +18,8 @@ along with this program. If not, see . package gplx.xowa.parsers.vnts; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*; import gplx.xowa.langs.vnts.*; class Vnt_rule_parser_fxt { - private final Vnt_rule_parser parser = new Vnt_rule_parser(); private final Vnt_rule_undi_mgr undis = new Vnt_rule_undi_mgr(); private final Vnt_rule_bidi_mgr bidis = new Vnt_rule_bidi_mgr(); - private final Bry_bfr bfr = Bry_bfr.new_(255); + private final Vnt_rule_parser parser = new Vnt_rule_parser(); private final Vnt_rule_undi_mgr undis = new Vnt_rule_undi_mgr(); private final Vnt_rule_bidi_mgr bidis = new Vnt_rule_bidi_mgr(); + private final Bry_bfr bfr = Bry_bfr_.New_w_size(255); public Vnt_rule_parser_fxt() { Xol_vnt_regy vnt_regy = new Xol_vnt_regy(); vnt_regy.Add(Bry_.new_a7("x1"), Bry_.new_a7("lang1")); diff --git a/400_xowa/src/gplx/xowa/parsers/xndes/Xop_xatr_whitelist_mgr.java b/400_xowa/src/gplx/xowa/parsers/xndes/Xop_xatr_whitelist_mgr.java index c722ced63..6ea7a7cfa 100644 --- a/400_xowa/src/gplx/xowa/parsers/xndes/Xop_xatr_whitelist_mgr.java +++ b/400_xowa/src/gplx/xowa/parsers/xndes/Xop_xatr_whitelist_mgr.java @@ -133,7 +133,7 @@ public class Xop_xatr_whitelist_mgr { grp_hash.Add_bry_obj(key, itms); } private void Ini_nde(int tag_tid, String... key_strs) { - List_adp keys = List_adp_.new_(); + List_adp keys = List_adp_.New(); int len = key_strs.length; for (int i = 0; i < len; i++) { byte[] key = Bry_.new_a7(key_strs[i]); @@ -253,7 +253,7 @@ public class Xop_xatr_whitelist_mgr { .Add_str_byte("image-set" , Style_image_set) .Add_str_byte("/*" , Style_comment) ; - private static final byte[] Val_role_presentation = Bry_.new_a7("presentation"); + private static final byte[] Val_role_presentation = Bry_.new_a7("presentation"); } class Xop_xatr_whitelist_itm { public Xop_xatr_whitelist_itm(byte[] key, byte key_tid, boolean exact) {this.key = key; this.key_tid = key_tid; this.exact = exact;} diff --git a/400_xowa/src/gplx/xowa/parsers/xndes/Xop_xnde_tag.java b/400_xowa/src/gplx/xowa/parsers/xndes/Xop_xnde_tag.java index 92f878f4a..061b6ae63 100644 --- a/400_xowa/src/gplx/xowa/parsers/xndes/Xop_xnde_tag.java +++ b/400_xowa/src/gplx/xowa/parsers/xndes/Xop_xnde_tag.java @@ -27,13 +27,13 @@ public class Xop_xnde_tag { this.xtn_end_tag = Bry_.Add(Xop_xnde_tag_.Bry__end_tag_bgn, name_bry); // always force endtag; needed for this.xtn_end_tag_tmp = new byte[xtn_end_tag.length]; Array_.Copy(xtn_end_tag, xtn_end_tag_tmp); } - public int Id() {return id;} private final int id; - public byte[] Name_bry() {return name_bry;} private final byte[] name_bry; - public String Name_str() {return name_str;} private final String name_str; - public int Name_len() {return name_len;} private final int name_len; - public byte[] Xtn_bgn_tag() {return xtn_bgn_tag;} private final byte[] xtn_bgn_tag; - public byte[] Xtn_end_tag() {return xtn_end_tag;} private final byte[] xtn_end_tag; - public byte[] Xtn_end_tag_tmp() {return xtn_end_tag_tmp;} private final byte[] xtn_end_tag_tmp; + public int Id() {return id;} private final int id; + public byte[] Name_bry() {return name_bry;} private final byte[] name_bry; + public String Name_str() {return name_str;} private final String name_str; + public int Name_len() {return name_len;} private final int name_len; + public byte[] Xtn_bgn_tag() {return xtn_bgn_tag;} private final byte[] xtn_bgn_tag; + public byte[] Xtn_end_tag() {return xtn_end_tag;} private final byte[] xtn_end_tag; + public byte[] Xtn_end_tag_tmp() {return xtn_end_tag_tmp;} private final byte[] xtn_end_tag_tmp; public boolean Xtn() {return xtn;} public Xop_xnde_tag Xtn_() {xtn = true; return this;} private boolean xtn; public boolean Xtn_mw() {return xtn_mw;} public Xop_xnde_tag Xtn_mw_() {xtn_mw = true; xtn = true; return this;} private boolean xtn_mw; // NOTE: Xtn_mw_() marks both xtn and xtn_mw as true public int Bgn_mode() {return bgn_nde_mode;} private int bgn_nde_mode = Xop_xnde_tag_.Bgn_mode__normal; @@ -64,7 +64,7 @@ public class Xop_xnde_tag { public Xop_xnde_tag Langs_(int lang_code, String name) { if (langs == null) { langs = Ordered_hash_.New(); - langs_key = Int_obj_ref.neg1_(); + langs_key = Int_obj_ref.New_neg1(); } Xop_xnde_tag_lang lang_tag = new Xop_xnde_tag_lang(lang_code, name); langs.Add(lang_tag.Lang_code(), lang_tag); diff --git a/400_xowa/src/gplx/xowa/parsers/xndes/Xop_xnde_tag_lang.java b/400_xowa/src/gplx/xowa/parsers/xndes/Xop_xnde_tag_lang.java index 1d6bc41b9..5da276cbd 100644 --- a/400_xowa/src/gplx/xowa/parsers/xndes/Xop_xnde_tag_lang.java +++ b/400_xowa/src/gplx/xowa/parsers/xndes/Xop_xnde_tag_lang.java @@ -19,7 +19,7 @@ package gplx.xowa.parsers.xndes; import gplx.*; import gplx.xowa.*; import gplx. import gplx.core.primitives.*; public class Xop_xnde_tag_lang { public Xop_xnde_tag_lang(int lang_code_int, String name_str) { - lang_code = Int_obj_ref.new_(lang_code_int); + lang_code = Int_obj_ref.New(lang_code_int); this.name_str = name_str; this.name_bry = Bry_.new_u8(name_str); this.xtnEndTag_tmp = Bry_.Add(Xop_xnde_tag_.Bry__end_tag_bgn, name_bry); @@ -28,5 +28,5 @@ public class Xop_xnde_tag_lang { public String Name_str() {return name_str;} private String name_str; public byte[] Name_bry() {return name_bry;} private byte[] name_bry; public byte[] Xtn_end_tag_tmp() {return xtnEndTag_tmp;} private byte[] xtnEndTag_tmp; - public static final Xop_xnde_tag_lang Instance = new Xop_xnde_tag_lang(-1, String_.Empty); + public static final Xop_xnde_tag_lang Instance = new Xop_xnde_tag_lang(-1, String_.Empty); } diff --git a/400_xowa/src/gplx/xowa/parsers/xndes/Xop_xnde_tag_regy.java b/400_xowa/src/gplx/xowa/parsers/xndes/Xop_xnde_tag_regy.java index 603db97d4..6e45f52b5 100644 --- a/400_xowa/src/gplx/xowa/parsers/xndes/Xop_xnde_tag_regy.java +++ b/400_xowa/src/gplx/xowa/parsers/xndes/Xop_xnde_tag_regy.java @@ -19,7 +19,7 @@ package gplx.xowa.parsers.xndes; import gplx.*; import gplx.xowa.*; import gplx. import gplx.core.btries.*; public class Xop_xnde_tag_regy { private boolean init_needed = true; - private final Btrie_slim_mgr // NOTE:ci.utf8; he.s and
alias DATE:2014-07-18 + private final Btrie_slim_mgr // NOTE:ci.utf8; he.s and
alias DATE:2014-07-18 trie_tmpl = Btrie_slim_mgr.ci_u8() , trie_wtxt_main = Btrie_slim_mgr.ci_u8() , trie_wtxt_tmpl = Btrie_slim_mgr.ci_u8(); @@ -29,7 +29,7 @@ public class Xop_xnde_tag_regy { case Xop_parser_.Parse_tid_tmpl: return trie_tmpl; case Xop_parser_.Parse_tid_page_tmpl: return trie_wtxt_tmpl; case Xop_parser_.Parse_tid_page_wiki: return trie_wtxt_main; - case Xop_parser_.Parse_tid_null: default: return trie_wtxt_tmpl; // TODO: should throw Err_.new_unhandled(i); + case Xop_parser_.Parse_tid_null: default: return trie_wtxt_tmpl; // TODO_OLD: should throw Err_.new_unhandled(i); } } public void Init_by_meta(Hash_adp_bry xtn_hash) {Init_by_hash(xtn_hash);} @@ -59,7 +59,7 @@ public class Xop_xnde_tag_regy { return xtn_hash != null // xtn_hash is null during tests or when wiki is not in site_meta_db && xnde.Xtn_mw() // only apply filter to xtn_xnde, not basic_xnde; EX: not && !xtn_hash.Has(xnde.Name_bry()) // xtn_xnde is not in xtn_hash - && !Int_.In(xnde.Id(), Xop_xnde_tag_.Tid__translate, Xop_xnde_tag_.Tid__languages) // always include and ; TODO:filter out when extensions supported in site_cfg; DATE:2015-10-13 + && !Int_.In(xnde.Id(), Xop_xnde_tag_.Tid__translate, Xop_xnde_tag_.Tid__languages) // always include and ; TODO_OLD:filter out when extensions supported in site_cfg; DATE:2015-10-13 ; // skip; xtn is not defined in site_meta_db } private void Add_itm(Btrie_slim_mgr trie, Xop_xnde_tag xnde) { diff --git a/400_xowa/src/gplx/xowa/parsers/xndes/Xop_xnde_tag_stack.java b/400_xowa/src/gplx/xowa/parsers/xndes/Xop_xnde_tag_stack.java index db3945efd..18e3f468a 100644 --- a/400_xowa/src/gplx/xowa/parsers/xndes/Xop_xnde_tag_stack.java +++ b/400_xowa/src/gplx/xowa/parsers/xndes/Xop_xnde_tag_stack.java @@ -30,6 +30,6 @@ public class Xop_xnde_tag_stack { xmlTags[i] = 0; xmlTagsStack.Clear(); } - List_adp xmlTagsStack = List_adp_.new_(); + List_adp xmlTagsStack = List_adp_.New(); int[] xmlTags = new int[Xop_xnde_tag_.Tid__len]; } diff --git a/400_xowa/src/gplx/xowa/parsers/xndes/Xop_xnde_wkr.java b/400_xowa/src/gplx/xowa/parsers/xndes/Xop_xnde_wkr.java index 43f3aae49..d70b4846a 100644 --- a/400_xowa/src/gplx/xowa/parsers/xndes/Xop_xnde_wkr.java +++ b/400_xowa/src/gplx/xowa/parsers/xndes/Xop_xnde_wkr.java @@ -76,7 +76,7 @@ public class Xop_xnde_wkr implements Xop_ctx_wkr { ++tag_end_pos; break; case Byte_ascii.Dollar: // handles ; - default: // allow all other symbols by defaults; TODO: need to filter out some like + default: // allow all other symbols by defaults; TODO_OLD: need to filter out some like break; // letters / numbers after tag; tag is invalid; EX: ". */ package gplx.xowa.specials; import gplx.*; import gplx.xowa.*; -public class Xoa_special_mgr implements GfoInvkAble { +public class Xoa_special_mgr implements Gfo_invk { private Ordered_hash hash = Ordered_hash_.New(); public Xoa_special_mgr() { hash.Add(gplx.xowa.xtns.wdatas.specials.Wdata_itemByTitle_cfg.Key, new gplx.xowa.xtns.wdatas.specials.Wdata_itemByTitle_cfg()); } - public void Add(String key, GfoInvkAble cfg) {hash.Add(key, cfg);} - public GfoInvkAble Get_or_null(String key) {return (GfoInvkAble)hash.Get_by(key);} + public void Add(String key, Gfo_invk cfg) {hash.Add(key, cfg);} + public Gfo_invk Get_or_null(String key) {return (Gfo_invk)hash.Get_by(key);} public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { - if (ctx.Match(k, Invk_get)) return Get_or_null(m.ReadStr("v")); - else return GfoInvkAble_.Rv_unhandled; + if (ctx.Match(k, Invk_get)) return Get_or_null(m.ReadStr("v")); + else return Gfo_invk_.Rv_unhandled; } private static final String Invk_get = "get"; } diff --git a/400_xowa/src/gplx/xowa/specials/Xow_special_meta.java b/400_xowa/src/gplx/xowa/specials/Xow_special_meta.java new file mode 100644 index 000000000..5a577d68c --- /dev/null +++ b/400_xowa/src/gplx/xowa/specials/Xow_special_meta.java @@ -0,0 +1,42 @@ +/* +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.specials; import gplx.*; import gplx.xowa.*; +public class Xow_special_meta { + public Xow_special_meta(int src, String key_str, String... aliases) { + this.src = src; this.key_str = key_str; + this.key_bry = Bry_.new_u8(key_str); + this.ttl_bry = Bry_.Add(gplx.xowa.wikis.nss.Xow_ns_.Bry__special, Byte_ascii.Colon_bry, key_bry); + this.ttl_str = String_.new_u8(ttl_bry); + this.aliases = Bry_.Ary(aliases); + } + public int Src() {return src;} private final int src; // either MW or XOWA + public String Key_str() {return key_str;} private final String key_str; // EX: AllPages + public byte[] Key_bry() {return key_bry;} private final byte[] key_bry; + public String Ttl_str() {return ttl_str;} private final String ttl_str; // EX: Special:AllPages + public byte[] Ttl_bry() {return ttl_bry;} private final byte[] ttl_bry; + public byte[][] Aliases() {return aliases;} private final byte[][] aliases; // EX: Special:RandomPage has Special:Random as alias + public byte[] Display_ttl() {return display_ttl;} private byte[] display_ttl; public Xow_special_meta Display_ttl_(String v) {display_ttl = Bry_.new_u8(v); return this;} + + public boolean Match_ttl(Xoa_ttl ttl) { + return ttl.Ns().Id_is_special() && Bry_.Eq(ttl.Root_txt(), key_bry); + } + + public static Xow_special_meta New_xo(String key, String display, String... aliases) { + return new Xow_special_meta(Xow_special_meta_.Src__xowa, key, aliases).Display_ttl_(display); + } +} diff --git a/400_xowa/src/gplx/xowa/specials/Xows_special_meta_.java b/400_xowa/src/gplx/xowa/specials/Xow_special_meta_.java similarity index 53% rename from 400_xowa/src/gplx/xowa/specials/Xows_special_meta_.java rename to 400_xowa/src/gplx/xowa/specials/Xow_special_meta_.java index 22ded3e84..f7bb3dc9c 100644 --- a/400_xowa/src/gplx/xowa/specials/Xows_special_meta_.java +++ b/400_xowa/src/gplx/xowa/specials/Xow_special_meta_.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.specials; import gplx.*; import gplx.xowa.*; -public class Xows_special_meta_ { +public class Xow_special_meta_ { public static final int Src__mw = 1, Src__xowa = 2; public static final String Ttl__all_pages = "AllPages" @@ -35,21 +35,21 @@ public class Xows_special_meta_ { , Ttl__bookmarks = "XowaBookmarks" , Ttl__diag = "XowaDiag" ; - public static final Xows_special_meta - Itm__all_pages = new Xows_special_meta(Src__mw , Ttl__all_pages) - , Itm__random = new Xows_special_meta(Src__mw , Ttl__random) - , Itm__random_root_page = new Xows_special_meta(Src__mw , Ttl__random_root_page) - , Itm__search = new Xows_special_meta(Src__mw , Ttl__search) - , Itm__statistics = new Xows_special_meta(Src__mw , Ttl__statistics) - , Itm__move_page = new Xows_special_meta(Src__xowa , Ttl__move_page) - , Itm__my_language = new Xows_special_meta(Src__xowa , Ttl__my_language) - , Itm__item_by_title = new Xows_special_meta(Src__xowa , Ttl__item_by_title) - , Itm__default_tab = new Xows_special_meta(Src__xowa , Ttl__default_tab) - , Itm__popup_history = new Xows_special_meta(Src__xowa , Ttl__popup_history) - , Itm__system_data = new Xows_special_meta(Src__xowa , Ttl__system_data) - , Itm__nearby = new Xows_special_meta(Src__xowa , Ttl__nearby) - , Itm__page_history = new Xows_special_meta(Src__xowa , Ttl__page_history) - , Itm__bookmarks = new Xows_special_meta(Src__xowa , Ttl__bookmarks) - , Itm__diag = new Xows_special_meta(Src__xowa , Ttl__diag) + public static final Xow_special_meta + Itm__all_pages = new Xow_special_meta(Src__mw , Ttl__all_pages) + , Itm__random = new Xow_special_meta(Src__mw , Ttl__random) + , Itm__random_root_page = new Xow_special_meta(Src__mw , Ttl__random_root_page) + , Itm__search = new Xow_special_meta(Src__mw , Ttl__search) + , Itm__statistics = new Xow_special_meta(Src__mw , Ttl__statistics) + , Itm__move_page = new Xow_special_meta(Src__xowa , Ttl__move_page) + , Itm__my_language = new Xow_special_meta(Src__xowa , Ttl__my_language) + , Itm__item_by_title = new Xow_special_meta(Src__xowa , Ttl__item_by_title) + , Itm__default_tab = new Xow_special_meta(Src__xowa , Ttl__default_tab) + , Itm__popup_history = new Xow_special_meta(Src__xowa , Ttl__popup_history) + , Itm__system_data = new Xow_special_meta(Src__xowa , Ttl__system_data) + , Itm__nearby = new Xow_special_meta(Src__xowa , Ttl__nearby) + , Itm__page_history = new Xow_special_meta(Src__xowa , Ttl__page_history) + , Itm__bookmarks = new Xow_special_meta(Src__xowa , Ttl__bookmarks) + , Itm__diag = new Xow_special_meta(Src__xowa , Ttl__diag) ; } diff --git a/400_xowa/src/gplx/xowa/specials/Xows_mgr.java b/400_xowa/src/gplx/xowa/specials/Xow_special_mgr.java similarity index 59% rename from 400_xowa/src/gplx/xowa/specials/Xows_mgr.java rename to 400_xowa/src/gplx/xowa/specials/Xow_special_mgr.java index 7b7f8e257..b7623b8f9 100644 --- a/400_xowa/src/gplx/xowa/specials/Xows_mgr.java +++ b/400_xowa/src/gplx/xowa/specials/Xow_special_mgr.java @@ -19,24 +19,23 @@ package gplx.xowa.specials; import gplx.*; import gplx.xowa.*; import gplx.xowa.users.history.*; import gplx.xowa.langs.*; import gplx.xowa.langs.specials.*; import gplx.xowa.specials.*; -import gplx.xowa.specials.allPages.*; import gplx.xowa.specials.nearby.*; import gplx.xowa.specials.randoms.*; import gplx.xowa.specials.statistics.*; import gplx.xowa.xtns.translates.*; import gplx.xowa.specials.movePage.*; -import gplx.xowa.specials.xowa.system_data.*; import gplx.xowa.specials.xowa.default_tab.*; import gplx.xowa.specials.xowa.popup_history.*; import gplx.xowa.addons.apps.file_browsers.*; import gplx.xowa.specials.xowa.diags.*; +import gplx.xowa.specials.allPages.*; import gplx.xowa.specials.nearby.*; import gplx.xowa.specials.statistics.*; import gplx.xowa.xtns.translates.*; import gplx.xowa.specials.movePage.*; +import gplx.xowa.specials.xowa.system_data.*; import gplx.xowa.specials.xowa.default_tab.*; import gplx.xowa.specials.xowa.popup_history.*; import gplx.xowa.addons.wikis.imports.*; import gplx.xowa.specials.xowa.diags.*; import gplx.xowa.xtns.wdatas.specials.*; -import gplx.xowa.addons.apps.searchs.specials.*; import gplx.xowa.users.data.*; import gplx.xowa.users.bmks.*; -public class Xows_mgr { +import gplx.xowa.specials.mgrs.*; import gplx.xowa.addons.wikis.searchs.specials.*; +public class Xow_special_mgr { private final Hash_adp_bry hash; - public Xows_mgr(Xowe_wiki wiki, Xol_lang_itm lang) { + private Xoa_app app; + public Xow_special_mgr(Xowe_wiki wiki, Xol_lang_itm lang) { + this.app = wiki.App(); hash = Hash_adp_bry.ci_u8(lang.Case_mgr()); page_allpages = new Xows_page_allpages(wiki); page_search = new Srch_special_page(wiki); - page_random = new Xows_page_random(wiki); Evt_lang_changed(wiki.Lang()); } public Xows_page_allpages Page_allpages() {return page_allpages;} private final Xows_page_allpages page_allpages; public Srch_special_page Page_search() {return page_search;} private final Srch_special_page page_search; - public Xows_page_random Page_random() {return page_random;} private final Xows_page_random page_random; - public Xop_randomRootPage_page Page_randomRootPage() {return page_randomRootPage;} private final Xop_randomRootPage_page page_randomRootPage = new Xop_randomRootPage_page(); public Xou_history_html Page_history() {return page_history;} private final Xou_history_html page_history = new Xou_history_html(); public Xoud_history_special Page_history2() {return page_history2;} private final Xoud_history_special page_history2 = new Xoud_history_special(); public Nearby_mgr Page_nearby() {return page_nearby;} private final Nearby_mgr page_nearby = new Nearby_mgr(); @@ -50,50 +49,62 @@ public class Xows_mgr { public Xows_bmk_page Page_bmk() {return page_bmk;} private final Xows_bmk_page page_bmk = new Xows_bmk_page(); public Xows_diag_page Page_diag() {return page_diag;} private final Xows_diag_page page_diag = new Xows_diag_page(); public void Evt_lang_changed(Xol_lang_itm lang) { + // add special pages by old manual method; DEPRECATED hash.Clear(); - hash.Add_str_obj(Xows_special_meta_.Ttl__search , page_search); - hash.Add_str_obj(Xows_special_meta_.Ttl__all_pages , page_allpages); + hash.Add_str_obj(Xow_special_meta_.Ttl__search , page_search); + hash.Add_str_obj(Xow_special_meta_.Ttl__all_pages , page_allpages); hash.Add_str_obj("prefixindex" , page_allpages); - hash.Add_str_obj(Xows_special_meta_.Ttl__random , page_random); - hash.Add_str_obj("random" , page_random); - hash.Add_str_obj(Xows_special_meta_.Ttl__random_root_page , page_randomRootPage); hash.Add_bry_obj(Xou_history_mgr.Ttl_name , page_history); - hash.Add_str_obj(Xows_special_meta_.Ttl__page_history , page_history2); - hash.Add_str_obj(Xows_special_meta_.Ttl__nearby , page_nearby); - hash.Add_str_obj(Xows_special_meta_.Ttl__my_language , page_mylanguage); - hash.Add_str_obj(Xows_special_meta_.Ttl__item_by_title , page_itemByTitle); - hash.Add_str_obj(Xows_special_meta_.Ttl__statistics , page_statistics); - hash.Add_str_obj(Xows_special_meta_.Ttl__move_page , page_movePage); - hash.Add_str_obj(Xows_special_meta_.Ttl__system_data , page_system_data); - hash.Add_str_obj(Xows_special_meta_.Ttl__default_tab , page_default_tab); - hash.Add_str_obj(Xows_special_meta_.Ttl__popup_history , page_popup_history); - hash.Add_str_obj(Xows_special_meta_.Ttl__bookmarks , page_bmk); - hash.Add_str_obj(Xows_special_meta_.Ttl__diag , page_diag); + hash.Add_str_obj(Xow_special_meta_.Ttl__page_history , page_history2); + hash.Add_str_obj(Xow_special_meta_.Ttl__nearby , page_nearby); + hash.Add_str_obj(Xow_special_meta_.Ttl__my_language , page_mylanguage); + hash.Add_str_obj(Xow_special_meta_.Ttl__item_by_title , page_itemByTitle); + hash.Add_str_obj(Xow_special_meta_.Ttl__statistics , page_statistics); + hash.Add_str_obj(Xow_special_meta_.Ttl__move_page , page_movePage); + hash.Add_str_obj(Xow_special_meta_.Ttl__system_data , page_system_data); + hash.Add_str_obj(Xow_special_meta_.Ttl__default_tab , page_default_tab); + hash.Add_str_obj(Xow_special_meta_.Ttl__popup_history , page_popup_history); + hash.Add_str_obj(Xow_special_meta_.Ttl__bookmarks , page_bmk); + hash.Add_str_obj(Xow_special_meta_.Ttl__diag , page_diag); + + // add app's Special_regy to hash table; needed for case insensitivity by wiki's lang; EX: Special:rANDom; NOTE: needs to go before lang aliases + Xoa_special_regy special_regy = app.Special_regy(); + int len = special_regy.Len(); + for (int i = 0; i < len; ++i) { + Xow_special_page proto = special_regy.Get_at(i); + Xow_special_meta proto_meta = proto.Special__meta(); + hash.Add_if_dupe_use_1st(proto_meta.Key_bry(), proto); + for (byte[] alias : proto_meta.Aliases()) + hash.Add_if_dupe_use_1st(alias, proto); + } + + // add lang's special aliases to hash table; EX: Special:Recherche + Xol_specials_mgr lang_mgr = lang.Specials_mgr(); + len = lang_mgr.Len(); + for (int i = 0; i < len; ++i) { + Xol_specials_itm lang_itm = lang_mgr.Get_at(i); + Xow_special_page page = (Xow_special_page)hash.Get_by_bry(lang_itm.Special()); + if (page == null) continue; // NOTE: ignore specials that are not in XOWA; EX: Special:ChangeEmail + for (byte[] alias : lang_itm.Aliases()) + hash.Add_if_dupe_use_1st(alias, page); + } } public void Special__gen(Xoa_app app, Xow_wiki wiki, Xoa_page page, Xoa_url url, Xoa_ttl ttl) { int slash_pos = Bry_find_.Find_fwd(ttl.Page_txt_wo_qargs(), Xoa_ttl.Subpage_spr); // check for slash byte[] special_name = slash_pos == Bry_find_.Not_found ? ttl.Base_txt_wo_qarg() // no slash found; use base_txt; ignore qry args and just get page_names; EX: Search/Earth?fulltext=y; Allpages?from=Earth... : Bry_.Mid(ttl.Page_txt_wo_qargs(), 0, slash_pos); // slash found; use root page; EX: Special:ItemByTitle/enwiki/Earth - Xows_page special = app.Special_regy().Get_by_or_null(special_name); - if (special == null) { // special_name not in app_regy; try wiki_regy - special = (Xows_page)hash.Get_by_bry(special_name); - if (special == null) { // special_name not in wiki_regy; try alias; - Xol_specials_itm special_itm = wiki.Lang().Specials_mgr().Get_by_alias(special_name); - if (special_itm != null) - special = (Xows_page)hash.Get_by_bry(special_itm.Special()); - } - } - else { - special = special.Special__clone(); - } + special_name = Xoa_ttl.Replace_spaces(special_name); // handle spaces; EX:Spezial:Zufällige_Seite + Xow_special_page special = (Xow_special_page)hash.Get_by_bry(special_name); if (special != null) { // special found; generate it; + special = special.Special__clone(); page.Revision_data().Modified_on_(DateAdp_.Now()); - special.Special__gen(wiki, page, url, ttl); + try {special.Special__gen(wiki, page, url, ttl);} + catch (Exception e) {Gfo_log_.Instance.Warn("failed to generate special page", "url", url.To_str(), "err", Err_.Message_gplx_log(e));} } } public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_search)) return page_search; - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; } private static final String Invk_search = "search"; } diff --git a/400_xowa/src/gplx/xowa/specials/Xows_page.java b/400_xowa/src/gplx/xowa/specials/Xow_special_page.java similarity index 88% rename from 400_xowa/src/gplx/xowa/specials/Xows_page.java rename to 400_xowa/src/gplx/xowa/specials/Xow_special_page.java index 0f1e59fdf..7d25a4d11 100644 --- a/400_xowa/src/gplx/xowa/specials/Xows_page.java +++ b/400_xowa/src/gplx/xowa/specials/Xow_special_page.java @@ -16,8 +16,8 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.specials; import gplx.*; import gplx.xowa.*; -public interface Xows_page { - Xows_special_meta Special__meta(); - Xows_page Special__clone(); +public interface Xow_special_page { + Xow_special_meta Special__meta(); + Xow_special_page Special__clone(); void Special__gen(Xow_wiki wikii, Xoa_page pagei, Xoa_url url, Xoa_ttl ttl); } diff --git a/400_xowa/src/gplx/xowa/specials/Xow_special_wtr__base.java b/400_xowa/src/gplx/xowa/specials/Xow_special_wtr__base.java new file mode 100644 index 000000000..0ca4921b1 --- /dev/null +++ b/400_xowa/src/gplx/xowa/specials/Xow_special_wtr__base.java @@ -0,0 +1,45 @@ +/* +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.specials; import gplx.*; import gplx.xowa.*; +import gplx.langs.mustaches.*; import gplx.xowa.wikis.pages.*; +public abstract class Xow_special_wtr__base { + public void Bld_page_by_mustache(Xoa_app app, Xoa_page page, Xow_special_page special) { + Mustache_doc_itm mustache_root = Bld_mustache_root(app); + if (mustache_root == null) { // handle invalid urls; EX: Special:XowaWikiInfo?wiki=deleted_wiki + Handle_invalid(app, page, special); + return; + } + Io_url addon_dir = this.Get_addon_dir(app); + byte[] body = Bld_html_body(addon_dir, mustache_root); + Xopage_html_data page_data = new Xopage_html_data(special.Special__meta().Display_ttl(), body); + Bld_tags(app, addon_dir, page_data); + page_data.Apply(page); + } + @gplx.Virtual protected byte[] Bld_html_body(Io_url addon_dir, gplx.langs.mustaches.Mustache_doc_itm itm) { + byte[] tmpl = Io_mgr.Instance.LoadFilBry(this.Get_mustache_fil(addon_dir)); + return gplx.langs.mustaches.Mustache_wtr_.Write_to_bry(Bry_bfr_.New(), tmpl, itm); + } + + protected abstract Io_url Get_addon_dir(Xoa_app app); + protected abstract Io_url Get_mustache_fil(Io_url addon_dir); + protected abstract Mustache_doc_itm Bld_mustache_root(Xoa_app app); + protected abstract void Bld_tags(Xoa_app app, Io_url addon_dir, Xopage_html_data data); + @gplx.Virtual protected void Handle_invalid(Xoa_app app, Xoa_page page, Xow_special_page special) { + new Xopage_html_data(special.Special__meta().Display_ttl(), Bry_.new_a7("Not available")).Apply(page); + } +} diff --git a/400_xowa/src/gplx/xowa/specials/Xows_special_meta.java b/400_xowa/src/gplx/xowa/specials/Xows_special_meta.java deleted file mode 100644 index 2f72a0a30..000000000 --- a/400_xowa/src/gplx/xowa/specials/Xows_special_meta.java +++ /dev/null @@ -1,34 +0,0 @@ -/* -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.specials; import gplx.*; import gplx.xowa.*; -public class Xows_special_meta { - public Xows_special_meta(int src, String key_str) { - this.src = src; this.key_str = key_str; - this.key_bry = Bry_.new_u8(key_str); - this.ttl_str = "Special:" + key_str; // canonical name - this.ttl_bry = Bry_.new_u8(ttl_str); - } - public int Src() {return src;} private final int src; - public String Key_str() {return key_str;} private final String key_str; - public byte[] Key_bry() {return key_bry;} private final byte[] key_bry; - public String Ttl_str() {return ttl_str;} private final String ttl_str; - public byte[] Ttl_bry() {return ttl_bry;} private final byte[] ttl_bry; - public boolean Match_ttl(Xoa_ttl ttl) { - return ttl.Ns().Id_is_special() && Bry_.Eq(ttl.Root_txt(), key_bry); - } -} diff --git a/400_xowa/src/gplx/xowa/specials/allPages/Xows_page_allpages.java b/400_xowa/src/gplx/xowa/specials/allPages/Xows_page_allpages.java index e64b69507..0f8b1a70c 100644 --- a/400_xowa/src/gplx/xowa/specials/allPages/Xows_page_allpages.java +++ b/400_xowa/src/gplx/xowa/specials/allPages/Xows_page_allpages.java @@ -16,18 +16,18 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.specials.allPages; import gplx.*; import gplx.xowa.*; import gplx.xowa.specials.*; -import gplx.core.primitives.*; import gplx.core.net.*; import gplx.core.brys.fmtrs.*; +import gplx.core.primitives.*; import gplx.core.net.*; import gplx.core.net.qargs.*; import gplx.core.brys.fmtrs.*; import gplx.xowa.langs.*; import gplx.xowa.langs.msgs.*; import gplx.xowa.wikis.nss.*; import gplx.xowa.htmls.core.htmls.*; import gplx.xowa.htmls.hrefs.*; import gplx.xowa.htmls.core.wkrs.lnkis.htmls.*; import gplx.xowa.wikis.domains.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.apps.urls.*; -public class Xows_page_allpages implements gplx.core.brys.Bfr_arg, GfoInvkAble, Xows_page { +public class Xows_page_allpages implements gplx.core.brys.Bfr_arg, Gfo_invk, Xow_special_page { public Xows_page_allpages(Xowe_wiki wiki) { this.wiki = wiki; html_itm_fmtr = new Xos_pagelist_html_itm_fmtr(this, wiki); } private Xos_pagelist_html_itm_fmtr html_itm_fmtr; - public Xows_special_meta Special__meta() {return Xows_special_meta_.Itm__all_pages;} + public Xow_special_meta Special__meta() {return Xow_special_meta_.Itm__all_pages;} public Xowe_wiki Wiki() {return wiki;} private Xowe_wiki wiki; public Bry_fmtr Html_all() {return html_all;} Bry_fmtr html_all = Bry_fmtr.new_(String_.Concat_lines_nl ( "
" @@ -81,7 +81,7 @@ public class Xows_page_allpages implements gplx.core.brys.Bfr_arg, GfoInvkAble, boolean found = Build_data(url, ttl); if (!found) return; Build_html(page); } - private static byte[] Get_from(Gfo_qarg_mgr arg_hash, Xowe_wiki wiki, Xoa_url url, Xoa_ttl ttl) { + private static byte[] Get_from(Gfo_qarg_mgr_old arg_hash, Xowe_wiki wiki, Xoa_url url, Xoa_ttl ttl) { return ttl.Leaf_bgn() == -1 ? arg_hash.Get_val_bry_or(Bry_arg_from, null) : ttl.Leaf_url() @@ -105,11 +105,11 @@ public class Xows_page_allpages implements gplx.core.brys.Bfr_arg, GfoInvkAble, arg_hash.Set_val_by_bry(Bry_arg_from, from_ttl.Page_db()); url.Qargs_ary_(arg_hash.To_ary()); } - Int_obj_ref rslt_len = Int_obj_ref.new_(rslt_list_len); + Int_obj_ref rslt_len = Int_obj_ref.New(rslt_list_len); Xowd_page_itm rslt_nxt2 = new Xowd_page_itm(); Xowd_page_itm rslt_prv2 = new Xowd_page_itm(); int all_pages_min = 0;// no minimum for all pages - List_adp rslt_list = List_adp_.new_(); + List_adp rslt_list = List_adp_.New(); wiki.Db_mgr().Load_mgr().Load_ttls_for_all_pages(Cancelable_.Never, rslt_list, rslt_nxt2, rslt_prv2, rslt_len, init_ns, from_ttl.Page_db(), itms_per_page, all_pages_min, itms_per_page, !hide_redirects_val, true); rslt_list_len = rslt_len.Val(); for (int i = 0; i < rslt_list_len; i++) @@ -117,7 +117,7 @@ public class Xows_page_allpages implements gplx.core.brys.Bfr_arg, GfoInvkAble, rslt_nxt = rslt_nxt2; rslt_prv = rslt_prv2; return true; - } private Gfo_qarg_mgr arg_hash = new Gfo_qarg_mgr(); + } private Gfo_qarg_mgr_old arg_hash = new Gfo_qarg_mgr_old(); private static final byte[] Bry_arg_from = Bry_.new_a7("from"), Bry_arg_ns = Bry_.new_a7("namespace"), Bry_arg_hideredirects = Bry_.new_a7("hideredirects"); public Xow_ns Init_ns() {return init_ns;} private Xow_ns init_ns; public void Build_html(Xoae_page page) { @@ -161,14 +161,14 @@ public class Xows_page_allpages implements gplx.core.brys.Bfr_arg, GfoInvkAble, else if (ctx.Match(k, Invk_itms_per_page_)) Itms_per_page_(m.ReadInt("v")); else if (ctx.Match(k, Invk_itms_per_grp_)) itms_per_grp = m.ReadInt("v"); else if (ctx.Match(k, Invk_show_redirects_)) show_redirects = m.ReadYn("v"); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } public static final String Invk_html_all_ = "html_all_", Invk_html_list_grp_ = "html_list_grp_", Invk_html_list_itm_normal_ = "html_list_itm_normal_", Invk_html_list_itm_redirect_ = "html_list_itm_redirect_" , Invk_itms_per_page_ = "itms_per_page_", Invk_itms_per_grp_ = "itms_per_grp_", Invk_show_redirects_ = "show_redirects_"; public static final String GRP_KEY = "xowa.special.allpages"; - public Xows_page Special__clone() {return this;} + public Xow_special_page Special__clone() {return this;} } class Xos_pagelist_html_itm_fmtr implements gplx.core.brys.Bfr_arg { public Xos_pagelist_html_itm_fmtr(Xows_page_allpages mgr, Xowe_wiki wiki) { diff --git a/400_xowa/src/gplx/xowa/specials/allPages/Xows_page_allpages_tst.java b/400_xowa/src/gplx/xowa/specials/allPages/Xows_page_allpages_tst.java index 112e2927a..953189bac 100644 --- a/400_xowa/src/gplx/xowa/specials/allPages/Xows_page_allpages_tst.java +++ b/400_xowa/src/gplx/xowa/specials/allPages/Xows_page_allpages_tst.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.specials.allPages; import gplx.*; import gplx.xowa.*; import gplx.xowa.specials.*; -import org.junit.*; import gplx.core.net.*; import gplx.xowa.wikis.data.tbls.*; +import org.junit.*; import gplx.core.net.*; import gplx.core.net.qargs.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.wikis.nss.*; import gplx.xowa.wikis.tdbs.hives.*; public class Xows_page_allpages_tst { @@ -127,7 +127,7 @@ class Xows_page_allpages_fxt { app = Xoa_app_fxt.Make__app__edit(); wiki = Xoa_app_fxt.Make__wiki__edit(app); allpages = wiki.Special_mgr().Page_allpages(); - GfoInvkAble_.InvkCmd_val(allpages, Xows_page_allpages.Invk_itms_per_page_, 5); + Gfo_invk_.Invk_by_val(allpages, Xows_page_allpages.Invk_itms_per_page_, 5); } init_ttl_leaf = ""; expd_prv = expd_nxt = null; @@ -136,10 +136,10 @@ class Xows_page_allpages_fxt { return this; } private Xoae_app app; public Xowe_wiki Wiki() {return wiki;} private Xowe_wiki wiki; Xows_page_allpages allpages; - public Xows_page_allpages_fxt Init_arg(String key, String val) {init_args.Add(new Gfo_qarg_itm(Bry_.new_a7(key), Bry_.new_a7(val))); return this;} private List_adp init_args = List_adp_.new_(); + public Xows_page_allpages_fxt Init_arg(String key, String val) {init_args.Add(new Gfo_qarg_itm(Bry_.new_a7(key), Bry_.new_a7(val))); return this;} private List_adp init_args = List_adp_.New(); public Xows_page_allpages_fxt Init_ttl_leaf(String val) {init_ttl_leaf = val; return this;} private String init_ttl_leaf; public Xows_page_allpages_fxt Init_itms_per_page(int v) {init_itms_per_page = v; return this;} private int init_itms_per_page = 5; - public Xows_page_allpages_fxt Expd_arg(String key, String val) {expd_args.Add(new Gfo_qarg_itm(Bry_.new_a7(key), Bry_.new_a7(val))); return this;} private List_adp expd_args = List_adp_.new_(); + public Xows_page_allpages_fxt Expd_arg(String key, String val) {expd_args.Add(new Gfo_qarg_itm(Bry_.new_a7(key), Bry_.new_a7(val))); return this;} private List_adp expd_args = List_adp_.New(); public Xows_page_allpages_fxt Expd_prv(String v) {expd_prv = v; return this;} private String expd_prv; public Xows_page_allpages_fxt Expd_nxt(String v) {expd_nxt = v; return this;} private String expd_nxt; public Xows_page_allpages_fxt Expd_ttls(String... v) {expd_ttls = v; return this;} private String[] expd_ttls; @@ -171,7 +171,7 @@ class Xows_page_allpages_fxt { return rv; } public Xows_page_allpages_fxt Test_special_gen() { - init_url = app.User().Wikii().Utl__url_parser().Parse(Xows_special_meta_.Itm__all_pages.Ttl_bry()); + init_url = app.User().Wikii().Utl__url_parser().Parse(Xow_special_meta_.Itm__all_pages.Ttl_bry()); Xoa_ttl init_ttl = Make_init_ttl(); allpages.Special__gen(wiki, wiki.Parser_mgr().Ctx().Page(), init_url, init_ttl); if (expd_display_ttl != null) Tfds.Eq(expd_display_ttl, String_.new_u8(wiki.Parser_mgr().Ctx().Page().Html_data().Display_ttl())); @@ -202,5 +202,5 @@ class Xows_page_allpages_fxt { Xoa_ttl init_ttl = Make_init_ttl(); allpages.Build_data(init_url, init_ttl); } - private Xoa_ttl Make_init_ttl() {return Xoa_ttl.parse(wiki, Bry_.new_u8(Xows_special_meta_.Itm__all_pages.Ttl_str() + init_ttl_leaf));} + private Xoa_ttl Make_init_ttl() {return Xoa_ttl.parse(wiki, Bry_.new_u8(Xow_special_meta_.Itm__all_pages.Ttl_str() + init_ttl_leaf));} } diff --git a/400_xowa/src/gplx/xowa/addons/apps/specials/Xoa_special_regy.java b/400_xowa/src/gplx/xowa/specials/mgrs/Xoa_special_regy.java similarity index 54% rename from 400_xowa/src/gplx/xowa/addons/apps/specials/Xoa_special_regy.java rename to 400_xowa/src/gplx/xowa/specials/mgrs/Xoa_special_regy.java index 4c5058170..1730e2565 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/specials/Xoa_special_regy.java +++ b/400_xowa/src/gplx/xowa/specials/mgrs/Xoa_special_regy.java @@ -15,11 +15,18 @@ 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.addons.apps.specials; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; +package gplx.xowa.specials.mgrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.specials.*; import gplx.xowa.specials.*; public class Xoa_special_regy { - private final Ordered_hash hash = Ordered_hash_.New_bry(); // NOTE: case-sensitive; case-insensitive requires lang - public void Add(Xows_page page) {hash.Add(page.Special__meta().Key_bry(), page);} - public void Add_many(Xows_page... ary) {for (Xows_page itm : ary) Add(itm);} - public Xows_page Get_by_or_null(byte[] key) {return (Xows_page)hash.Get_by(key);} + private final Ordered_hash hash = Ordered_hash_.New_bry(); // NOTE: case-sensitive; case-insensitive requires lang, but regy is at app level + public int Len() {return hash.Len();} + public Xow_special_page Get_at(int i) {return (Xow_special_page)hash.Get_at(i);} + public Xow_special_page Get_by_or_null(byte[] key) {return (Xow_special_page)hash.Get_by(key);} + public void Add(Xow_special_page page) { + hash.Add(page.Special__meta().Key_bry(), page); + byte[][] aliases = page.Special__meta().Aliases(); + for (byte[] alias : aliases) + hash.Add(alias, page); + } + public void Add_many(Xow_special_page... ary) {for (Xow_special_page itm : ary) Add(itm);} } diff --git a/400_xowa/src/gplx/xowa/addons/apps/specials/Xosp_special_mgr.java b/400_xowa/src/gplx/xowa/specials/mgrs/Xosp_special_mgr.java similarity index 85% rename from 400_xowa/src/gplx/xowa/addons/apps/specials/Xosp_special_mgr.java rename to 400_xowa/src/gplx/xowa/specials/mgrs/Xosp_special_mgr.java index 2bf84bb48..082a7666b 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/specials/Xosp_special_mgr.java +++ b/400_xowa/src/gplx/xowa/specials/mgrs/Xosp_special_mgr.java @@ -15,7 +15,7 @@ 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.addons.apps.specials; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; +package gplx.xowa.specials.mgrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.specials.*; import gplx.core.net.*; import gplx.xowa.htmls.*; import gplx.xowa.wikis.*; @@ -25,7 +25,7 @@ public class Xosp_special_mgr { private final Hash_adp_bry hash; public Xosp_special_mgr(Xowv_wiki wiki) { // this.wiki = wiki; - // hash.Add_str_obj(Xows_special_meta_.Ttl__statistics , page_statistics); + // hash.Add_str_obj(Xow_special_meta_.Ttl__statistics , page_statistics); this.hash = Hash_adp_bry.cs(); } public void Get_by_ttl(Xoh_page rv, Gfo_url url, Xoa_ttl ttl) { @@ -34,7 +34,7 @@ public class Xosp_special_mgr { // rv.Body_(rslt.Html_body()); // rv.Html_head_xtn_(rslt.Html_head()); } - public void Get_by_url(Xow_wiki wiki, Xoa_page page, Xoa_url url, Xoa_ttl ttl) { + public void Get_by_url1(Xow_wiki wiki, Xoa_page page, Xoa_url url, Xoa_ttl ttl) { int slash_pos = Bry_find_.Find_fwd(ttl.Page_txt_wo_qargs(), Xoa_ttl.Subpage_spr); // check for slash byte[] special_name = slash_pos == Bry_find_.Not_found ? ttl.Base_txt_wo_qarg() // no slash found; use base_txt; ignore qry args and just get page_names; EX: Search/Earth?fulltext=y; Allpages?from=Earth... @@ -46,7 +46,7 @@ public class Xosp_special_mgr { o = hash.Get_by_bry(special_itm.Special()); } if (o != null) { - // Xows_page special = (Xows_page)o; + // Xow_special_page special = (Xow_special_page)o; // page.Revision_data().Modified_on_(DateAdp_.Now()); // special.Special__gen(wiki, page, url, ttl); } diff --git a/400_xowa/src/gplx/xowa/specials/movePage/Move_page.java b/400_xowa/src/gplx/xowa/specials/movePage/Move_page.java index 5ed7b2281..8fa7dd859 100644 --- a/400_xowa/src/gplx/xowa/specials/movePage/Move_page.java +++ b/400_xowa/src/gplx/xowa/specials/movePage/Move_page.java @@ -16,16 +16,16 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.specials.movePage; import gplx.*; import gplx.xowa.*; import gplx.xowa.specials.*; -import gplx.core.primitives.*; import gplx.core.brys.fmtrs.*; import gplx.core.net.*; import gplx.xowa.wikis.data.tbls.*; +import gplx.core.primitives.*; import gplx.core.brys.fmtrs.*; import gplx.core.net.*; import gplx.core.net.qargs.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.langs.msgs.*; import gplx.xowa.htmls.hrefs.*; import gplx.xowa.wikis.nss.*; import gplx.xowa.parsers.utils.*; -public class Move_page implements Xows_page { +public class Move_page implements Xow_special_page { private Move_trg_ns_list_fmtr ns_list_fmtr = new Move_trg_ns_list_fmtr(); private Move_url_args args = new Move_url_args(); private Xoa_ttl src_ttl; - public Xows_special_meta Special__meta() {return Xows_special_meta_.Itm__move_page;} + public Xow_special_meta Special__meta() {return Xow_special_meta_.Itm__move_page;} public void Special__gen(Xow_wiki wikii, Xoa_page pagei, Xoa_url url, Xoa_ttl ttl) { Xowe_wiki wiki = (Xowe_wiki)wikii; Xoae_page page = (Xoae_page)pagei; args.Parse(url); @@ -121,7 +121,7 @@ public class Move_page implements Xows_page { , "" ), "move-page-legend", "src_href", "src_title", "src_text", "newtitle", "trg_ns_list", "trg_title", "move-leave-redirect", "movepagebtn"); - public Xows_page Special__clone() {return this;} + public Xow_special_page Special__clone() {return this;} } class Move_trg_ns_list_fmtr implements gplx.core.brys.Bfr_arg { private Xowe_wiki wiki; private Xoa_ttl ttl; diff --git a/400_xowa/src/gplx/xowa/specials/nearby/Nearby_mgr.java b/400_xowa/src/gplx/xowa/specials/nearby/Nearby_mgr.java index 7473322c7..dee00cb69 100644 --- a/400_xowa/src/gplx/xowa/specials/nearby/Nearby_mgr.java +++ b/400_xowa/src/gplx/xowa/specials/nearby/Nearby_mgr.java @@ -18,18 +18,18 @@ along with this program. If not, see . package gplx.xowa.specials.nearby; import gplx.*; import gplx.xowa.*; import gplx.xowa.specials.*; import gplx.core.brys.fmtrs.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.lnkis.*; -public class Nearby_mgr implements Xows_page { +public class Nearby_mgr implements Xow_special_page { Xowe_wiki wiki; byte[] trg; private Hash_adp_bry excluded = Hash_adp_bry.ci_a7(); private Hash_adp_bry visited = Hash_adp_bry.ci_a7(); - List_adp trail = List_adp_.new_(); - List_adp results = List_adp_.new_(); + List_adp trail = List_adp_.New(); + List_adp results = List_adp_.New(); int results_cur = 0; // int depth_max = 5; // int pages_count = 0; - Bry_bfr tmp_bfr = Bry_bfr.new_(); + Bry_bfr tmp_bfr = Bry_bfr_.New(); public int Results_max() {return results_max;} public Nearby_mgr Results_max_(int v) {results_max = v; return this;} private int results_max = 1; - public Xows_special_meta Special__meta() {return Xows_special_meta_.Itm__nearby;} + public Xow_special_meta Special__meta() {return Xow_special_meta_.Itm__nearby;} public void Special__gen(Xow_wiki wikii, Xoa_page pagei, Xoa_url url, Xoa_ttl ttl) { Xowe_wiki wiki = (Xowe_wiki)wikii; Xoae_page page = (Xoae_page)pagei; page.Data_raw_(Bld_html(wiki)); @@ -94,7 +94,7 @@ public class Nearby_mgr implements Xows_page { if (excluded.Has(ttl_bry)) continue; if (visited.Has(ttl_bry)) continue; visited.Add_bry_bry(ttl_bry); - Xoae_page page = wiki.Data_mgr().Get_page(ttl, false); + Xoae_page page = wiki.Data_mgr().Load_page_by_ttl(ttl); if (page.Missing()) continue; wiki.Parser_mgr().Parse(page, true); Ordered_hash lnkis = Ordered_hash_.New_bry(); @@ -124,7 +124,7 @@ public class Nearby_mgr implements Xows_page { // if (Bry_.Eq(lnki_ttl.Page_db(), trg)) continue; // skip trg page // trail.Add(lnki_ttl); // Examine_page(wiki, lnki_ttl, trail); -// List_adp_.DelAt_last(trail); +// List_adp_.Del_at_last(trail); // if (results_cur == results_max) return; // } } @@ -151,7 +151,7 @@ public class Nearby_mgr implements Xows_page { // if (Bry_.Eq(lnki_ttl.Page_db(), trg)) continue; // skip trg page // trail.Add(lnki_ttl); // Examine_page(wiki, lnki_ttl, trail); -// List_adp_.DelAt_last(trail); +// List_adp_.Del_at_last(trail); // if (results_cur == results_max) return; // } // } @@ -171,7 +171,7 @@ public class Nearby_mgr implements Xows_page { } } - public Xows_page Special__clone() {return this;} + public Xow_special_page Special__clone() {return this;} } class Nearby_rslt { public Nearby_rslt(List_adp trail, Xoa_ttl trg_ttl) { @@ -184,7 +184,7 @@ class Nearby_rslt { } public int Len() {return list.Count();} public Xoa_ttl Get_at(int i) {return (Xoa_ttl)list.Get_at(i);} - List_adp list = List_adp_.new_(); + List_adp list = List_adp_.New(); } class Nearby_itmx { public Nearby_itmx(List_adp v, Xoa_ttl ttl) { @@ -197,5 +197,5 @@ class Nearby_itmx { this.ttl = ttl; } public Xoa_ttl Ttl() {return ttl;} private Xoa_ttl ttl; - public List_adp Trail() {return trail;} List_adp trail = List_adp_.new_(); + public List_adp Trail() {return trail;} List_adp trail = List_adp_.New(); } diff --git a/400_xowa/src/gplx/xowa/specials/nearby/Nearby_mgr_tst.java b/400_xowa/src/gplx/xowa/specials/nearby/Nearby_mgr_tst.java index 31633771c..9ecf0328c 100644 --- a/400_xowa/src/gplx/xowa/specials/nearby/Nearby_mgr_tst.java +++ b/400_xowa/src/gplx/xowa/specials/nearby/Nearby_mgr_tst.java @@ -47,7 +47,7 @@ class Nearby_mgr_fxt { fxt = new Xop_fxt(); nearby_mgr = new Nearby_mgr(); excluded = Hash_adp_bry.ci_a7(); - tmp_bfr = Bry_bfr.new_(); + tmp_bfr = Bry_bfr_.New(); } fxt.Reset(); Io_mgr.Instance.InitEngine_mem(); diff --git a/400_xowa/src/gplx/xowa/specials/statistics/Xop_statistics_page.java b/400_xowa/src/gplx/xowa/specials/statistics/Xop_statistics_page.java index a0508a83d..54d646973 100644 --- a/400_xowa/src/gplx/xowa/specials/statistics/Xop_statistics_page.java +++ b/400_xowa/src/gplx/xowa/specials/statistics/Xop_statistics_page.java @@ -19,11 +19,11 @@ package gplx.xowa.specials.statistics; import gplx.*; import gplx.xowa.*; import import gplx.core.brys.fmtrs.*; import gplx.xowa.langs.*; import gplx.xowa.langs.msgs.*; import gplx.xowa.langs.numbers.*; import gplx.xowa.wikis.nss.*; -public class Xop_statistics_page implements Xows_page { +public class Xop_statistics_page implements Xow_special_page { private Xop_statistics_stats_page_grp stats_page = new Xop_statistics_stats_page_grp(); // private Xop_statistics_stats_wiki_grp stats_wiki = new Xop_statistics_stats_wiki_grp(); private Xop_statistics_stats_ns_grp stats_ns = new Xop_statistics_stats_ns_grp(); - public Xows_special_meta Special__meta() {return Xows_special_meta_.Itm__statistics;} + public Xow_special_meta Special__meta() {return Xow_special_meta_.Itm__statistics;} public void Special__gen(Xow_wiki wikii, Xoa_page pagei, Xoa_url url, Xoa_ttl ttl) { Xowe_wiki wiki = (Xowe_wiki)wikii; Xoae_page page = (Xoae_page)pagei; byte[] html = Build_html(wiki); @@ -45,7 +45,7 @@ public class Xop_statistics_page implements Xows_page { , "" ), "page_stats", "ns_stats"); - public Xows_page Special__clone() {return this;} + public Xow_special_page Special__clone() {return this;} } class Xop_statistics_stats_page_grp implements gplx.core.brys.Bfr_arg { public void Wiki_(Xowe_wiki v) {this.wiki = v;} private Xowe_wiki wiki; diff --git a/400_xowa/src/gplx/xowa/specials/xowa/default_tab/Default_tab_page.java b/400_xowa/src/gplx/xowa/specials/xowa/default_tab/Default_tab_page.java index 31a1cdeec..27a5f21eb 100644 --- a/400_xowa/src/gplx/xowa/specials/xowa/default_tab/Default_tab_page.java +++ b/400_xowa/src/gplx/xowa/specials/xowa/default_tab/Default_tab_page.java @@ -16,8 +16,8 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.specials.xowa.default_tab; import gplx.*; import gplx.xowa.*; import gplx.xowa.specials.*; import gplx.xowa.specials.xowa.*; -public class Default_tab_page implements Xows_page { - public Xows_special_meta Special__meta() {return Xows_special_meta_.Itm__default_tab;} +public class Default_tab_page implements Xow_special_page { + public Xow_special_meta Special__meta() {return Xow_special_meta_.Itm__default_tab;} public void Special__gen(Xow_wiki wiki, Xoa_page pagei, Xoa_url url, Xoa_ttl ttl) { Xoae_page page = (Xoae_page)pagei; page.Data_raw_(Bry_.Empty); @@ -26,5 +26,5 @@ public class Default_tab_page implements Xows_page { } public static final byte[] Tab_name_bry = Bry_.new_a7("New Tab"); - public Xows_page Special__clone() {return this;} + public Xow_special_page Special__clone() {return this;} } diff --git a/400_xowa/src/gplx/xowa/specials/xowa/diags/Db_rdr_utl.java b/400_xowa/src/gplx/xowa/specials/xowa/diags/Db_rdr_utl.java index 0864160b3..7fc48accd 100644 --- a/400_xowa/src/gplx/xowa/specials/xowa/diags/Db_rdr_utl.java +++ b/400_xowa/src/gplx/xowa/specials/xowa/diags/Db_rdr_utl.java @@ -41,7 +41,7 @@ class Db_rdr_utl { return qry_set; } public static Object[][] Load(Db_conn conn, String sql) { - List_adp list = List_adp_.new_(); + List_adp list = List_adp_.New(); DataRdr rdr = conn.Exec_sql_as_old_rdr(sql); try { int fld_count = rdr.FieldCount(); diff --git a/400_xowa/src/gplx/xowa/specials/xowa/diags/Xows_cmd__file_check.java b/400_xowa/src/gplx/xowa/specials/xowa/diags/Xows_cmd__file_check.java index 4c0060a8d..ce805d867 100644 --- a/400_xowa/src/gplx/xowa/specials/xowa/diags/Xows_cmd__file_check.java +++ b/400_xowa/src/gplx/xowa/specials/xowa/diags/Xows_cmd__file_check.java @@ -16,13 +16,13 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.specials.xowa.diags; import gplx.*; import gplx.xowa.*; import gplx.xowa.specials.*; import gplx.xowa.specials.xowa.*; -import gplx.core.net.*; import gplx.core.envs.*; +import gplx.core.net.*; import gplx.core.net.qargs.*; import gplx.core.envs.*; import gplx.fsdb.*; import gplx.fsdb.meta.*; import gplx.xowa.files.origs.*; import gplx.xowa.apps.urls.*; class Xows_cmd__file_check { private Io_url tmp_dir; - public void Exec(Bry_bfr bfr, Xoa_app app, Xoa_url url, Gfo_qarg_mgr arg_hash) { + public void Exec(Bry_bfr bfr, Xoa_app app, Xoa_url url, Gfo_qarg_mgr_old arg_hash) { byte[] wiki_bry = arg_hash.Get_val_bry_or(Arg_wiki, null); if (wiki_bry == null) {Xoa_app_.Usr_dlg().Warn_many("", "", "special.cmd; no wiki: url=~{0}", url.Raw()); return;} byte[] file_bry = arg_hash.Get_val_bry_or(Arg_file, null); if (file_bry == null) {Xoa_app_.Usr_dlg().Warn_many("", "", "special.cmd; no file: url=~{0}", url.Raw()); return;} Xow_wiki wiki = app.Wiki_mgri().Get_by_or_make_init_y(wiki_bry); @@ -89,7 +89,7 @@ class Xows_cmd__file_check { } private void Export_bins(Bry_bfr bfr, byte[] file_bry, Object[][] rows, int owner_id_ordinal, int bin_data_ordinal) { int rows_len = rows.length; - Bry_bfr tmp_bfr = Bry_bfr.new_(); + Bry_bfr tmp_bfr = Bry_bfr_.New(); for (int i = 0; i < rows_len; ++i) { Object[] row = rows[i]; int owner_id = Int_.cast(row[owner_id_ordinal]); @@ -114,8 +114,8 @@ class Xows_cmd__file_check { bfr.Add_str_u8(key).Add_str_a7(": ").Add_obj(val).Add_byte_nl(); bfr.Add_str_u8("------------------------------------------------------").Add_byte_nl(); } - private static final byte[] Arg_wiki = Bry_.new_a7("wiki"), Arg_file = Bry_.new_a7("file"); - public static final Xows_cmd__file_check Instance = new Xows_cmd__file_check(); Xows_cmd__file_check() {} + private static final byte[] Arg_wiki = Bry_.new_a7("wiki"), Arg_file = Bry_.new_a7("file"); + public static final Xows_cmd__file_check Instance = new Xows_cmd__file_check(); Xows_cmd__file_check() {} } interface Fsdb_sql_mkr { String Orig_by_ttl(byte[] ttl); @@ -130,10 +130,10 @@ abstract class Fsdb_sql_mkr__base { class Fsdb_sql_mkr__v1 extends Fsdb_sql_mkr__base implements Fsdb_sql_mkr { public String Orig_by_ttl(byte[] ttl) {return String_.Format("SELECT * FROM wiki_orig WHERE orig_ttl = '{0}';", ttl);} public String Thm_by_id(int id) {return String_.Format("SELECT * FROM fsdb_xtn_thm WHERE thm_owner_id = {0};", id);} - public static final Fsdb_sql_mkr Instance = new Fsdb_sql_mkr__v1(); Fsdb_sql_mkr__v1() {} + public static final Fsdb_sql_mkr Instance = new Fsdb_sql_mkr__v1(); Fsdb_sql_mkr__v1() {} } class Fsdb_sql_mkr__v2 extends Fsdb_sql_mkr__base implements Fsdb_sql_mkr { public String Orig_by_ttl(byte[] ttl) {return String_.Format("SELECT * FROM orig_reg WHERE orig_ttl = '{0}';", ttl);} public String Thm_by_id(int id) {return String_.Format("SELECT * FROM fsdb_thm WHERE thm_owner_id = {0};", id);} - public static final Fsdb_sql_mkr Instance = new Fsdb_sql_mkr__v2(); Fsdb_sql_mkr__v2() {} + public static final Fsdb_sql_mkr Instance = new Fsdb_sql_mkr__v2(); Fsdb_sql_mkr__v2() {} } diff --git a/400_xowa/src/gplx/xowa/specials/xowa/diags/Xows_cmd__fs_check.java b/400_xowa/src/gplx/xowa/specials/xowa/diags/Xows_cmd__fs_check.java index 1d85d5e80..c4d02fdf0 100644 --- a/400_xowa/src/gplx/xowa/specials/xowa/diags/Xows_cmd__fs_check.java +++ b/400_xowa/src/gplx/xowa/specials/xowa/diags/Xows_cmd__fs_check.java @@ -16,11 +16,11 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.specials.xowa.diags; import gplx.*; import gplx.xowa.*; import gplx.xowa.specials.*; import gplx.xowa.specials.xowa.*; -import gplx.core.ios.*; import gplx.core.net.*; +import gplx.core.ios.*; import gplx.core.net.*; import gplx.core.net.qargs.*; import gplx.fsdb.meta.*; import gplx.xowa.apps.urls.*; class Xows_cmd__fs_check { - public void Exec(Bry_bfr bfr, Xoa_app app, Xoa_url url, Gfo_qarg_mgr arg_hash) { + public void Exec(Bry_bfr bfr, Xoa_app app, Xoa_url url, Gfo_qarg_mgr_old arg_hash) { byte[] dir_bry = arg_hash.Get_val_bry_or(Arg_dir, null); if (dir_bry != null) { Write_dir(bfr, Io_url_.new_dir_(String_.new_u8(dir_bry))); @@ -55,6 +55,6 @@ class Xows_cmd__fs_check { } catch (Exception e) {bfr.Add_str_u8(Err_.Message_gplx_full(e));} } } - public static final Xows_cmd__fs_check Instance = new Xows_cmd__fs_check(); Xows_cmd__fs_check() {} - private static final byte[] Arg_wiki = Bry_.new_a7("wiki"), Arg_dir = Bry_.new_a7("dir"); + public static final Xows_cmd__fs_check Instance = new Xows_cmd__fs_check(); Xows_cmd__fs_check() {} + private static final byte[] Arg_wiki = Bry_.new_a7("wiki"), Arg_dir = Bry_.new_a7("dir"); } diff --git a/400_xowa/src/gplx/xowa/specials/xowa/diags/Xows_cmd__sql_dump.java b/400_xowa/src/gplx/xowa/specials/xowa/diags/Xows_cmd__sql_dump.java index 77dc1ed17..61fcd5d3e 100644 --- a/400_xowa/src/gplx/xowa/specials/xowa/diags/Xows_cmd__sql_dump.java +++ b/400_xowa/src/gplx/xowa/specials/xowa/diags/Xows_cmd__sql_dump.java @@ -16,12 +16,12 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.specials.xowa.diags; import gplx.*; import gplx.xowa.*; import gplx.xowa.specials.*; import gplx.xowa.specials.xowa.*; -import gplx.core.ios.*; import gplx.core.primitives.*; import gplx.core.net.*; +import gplx.core.ios.*; import gplx.core.primitives.*; import gplx.core.net.*; import gplx.core.net.qargs.*; import gplx.dbs.*; import gplx.fsdb.meta.*; import gplx.xowa.apps.urls.*; class Xows_cmd__sql_dump { - public void Exec(Bry_bfr bfr, Xoa_app app, Xoa_url url, Gfo_qarg_mgr arg_hash) { + public void Exec(Bry_bfr bfr, Xoa_app app, Xoa_url url, Gfo_qarg_mgr_old arg_hash) { Db_conn conn = null; byte[] sql_bry = arg_hash.Get_val_bry_or(Arg_sql, null); if (sql_bry == null) {Xoa_app_.Usr_dlg().Warn_many("", "", "special.cmd; no sql: url=~{0}", url.Raw()); return;} byte[] wiki_bry = arg_hash.Get_val_bry_or(Arg_wiki, null); @@ -41,10 +41,10 @@ class Xows_cmd__sql_dump { } Db_rdr_utl.Load_and_write(conn, String_.new_u8(sql_bry), bfr); } - public static final Xows_cmd__sql_dump Instance = new Xows_cmd__sql_dump(); Xows_cmd__sql_dump() {} - private static final byte[] Arg_wiki = Bry_.new_a7("wiki"), Arg_db_file = Bry_.new_a7("db_file"), Arg_db_type = Bry_.new_a7("db_type"), Arg_sql = Bry_.new_a7("sql"); + public static final Xows_cmd__sql_dump Instance = new Xows_cmd__sql_dump(); Xows_cmd__sql_dump() {} + private static final byte[] Arg_wiki = Bry_.new_a7("wiki"), Arg_db_file = Bry_.new_a7("db_file"), Arg_db_type = Bry_.new_a7("db_type"), Arg_sql = Bry_.new_a7("sql"); private static final byte Db_type_fsdb_abc = 1, Db_type_fsdb_atr = 2, Db_type_wiki_core = 3; - private static final Hash_adp_bry db_type_hash = Hash_adp_bry.cs() + private static final Hash_adp_bry db_type_hash = Hash_adp_bry.cs() .Add_str_byte("fsdb.abc" , Db_type_fsdb_abc) .Add_str_byte("fsdb.atr" , Db_type_fsdb_atr) .Add_str_byte("wiki.core" , Db_type_wiki_core) diff --git a/400_xowa/src/gplx/xowa/specials/xowa/diags/Xows_diag_page.java b/400_xowa/src/gplx/xowa/specials/xowa/diags/Xows_diag_page.java index ebd0a655d..65f378db6 100644 --- a/400_xowa/src/gplx/xowa/specials/xowa/diags/Xows_diag_page.java +++ b/400_xowa/src/gplx/xowa/specials/xowa/diags/Xows_diag_page.java @@ -16,11 +16,11 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.specials.xowa.diags; import gplx.*; import gplx.xowa.*; import gplx.xowa.specials.*; import gplx.xowa.specials.xowa.*; -import gplx.core.primitives.*; import gplx.core.net.*; +import gplx.core.primitives.*; import gplx.core.net.*; import gplx.core.net.qargs.*; import gplx.xowa.apps.urls.*; -public class Xows_diag_page implements Xows_page { - private Gfo_qarg_mgr arg_hash = new Gfo_qarg_mgr(); - public Xows_special_meta Special__meta() {return Xows_special_meta_.Itm__diag;} +public class Xows_diag_page implements Xow_special_page { + private Gfo_qarg_mgr_old arg_hash = new Gfo_qarg_mgr_old(); + public Xow_special_meta Special__meta() {return Xow_special_meta_.Itm__diag;} public void Special__gen(Xow_wiki wikii, Xoa_page pagei, Xoa_url url, Xoa_ttl ttl) { Xowe_wiki wiki = (Xowe_wiki)wikii; Xoae_page page = (Xoae_page)pagei; arg_hash.Load(url.Qargs_ary()); @@ -44,5 +44,5 @@ public class Xows_diag_page implements Xows_page { .Add_str_byte("sql.dump" , Type_sql_dump) ; - public Xows_page Special__clone() {return this;} + public Xow_special_page Special__clone() {return this;} } diff --git a/400_xowa/src/gplx/xowa/specials/xowa/popup_history/Popup_history_page.java b/400_xowa/src/gplx/xowa/specials/xowa/popup_history/Popup_history_page.java index 79acd0bba..0b3f95718 100644 --- a/400_xowa/src/gplx/xowa/specials/xowa/popup_history/Popup_history_page.java +++ b/400_xowa/src/gplx/xowa/specials/xowa/popup_history/Popup_history_page.java @@ -18,8 +18,8 @@ along with this program. If not, see . package gplx.xowa.specials.xowa.popup_history; import gplx.*; import gplx.xowa.*; import gplx.xowa.specials.*; import gplx.xowa.specials.xowa.*; import gplx.core.brys.fmtrs.*; import gplx.xowa.htmls.modules.popups.*; -public class Popup_history_page implements Xows_page { - public Xows_special_meta Special__meta() {return Xows_special_meta_.Itm__popup_history;} +public class Popup_history_page implements Xow_special_page { + public Xow_special_meta Special__meta() {return Xow_special_meta_.Itm__popup_history;} public void Special__gen(Xow_wiki wikii, Xoa_page pagei, Xoa_url url, Xoa_ttl ttl) { Xowe_wiki wiki = (Xowe_wiki)wikii; Xoae_page page = (Xoae_page)pagei; Xoae_page cur_page = wiki.Appe().Gui_mgr().Browser_win().Active_page(); if (cur_page == null) return; @@ -37,8 +37,8 @@ public class Popup_history_page implements Xows_page { private Bry_fmtr fmtr_main = Bry_fmtr.new_("~{ttl}\n\n", "href", "ttl"); // NOTE: need to use anchor (as opposed to lnki or lnke) b/c xwiki will not work on all wikis public static boolean Ttl_chk(Xoa_ttl ttl) { return ttl.Ns().Id_is_special() - && Bry_.Eq(ttl.Page_db(), Xows_special_meta_.Itm__popup_history.Key_bry()); + && Bry_.Eq(ttl.Page_db(), Xow_special_meta_.Itm__popup_history.Key_bry()); } - public Xows_page Special__clone() {return this;} + public Xow_special_page Special__clone() {return this;} } diff --git a/400_xowa/src/gplx/xowa/specials/xowa/system_data/System_data_page.java b/400_xowa/src/gplx/xowa/specials/xowa/system_data/System_data_page.java index 1ea6bb798..e295b851b 100644 --- a/400_xowa/src/gplx/xowa/specials/xowa/system_data/System_data_page.java +++ b/400_xowa/src/gplx/xowa/specials/xowa/system_data/System_data_page.java @@ -16,12 +16,12 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.specials.xowa.system_data; import gplx.*; import gplx.xowa.*; import gplx.xowa.specials.*; import gplx.xowa.specials.xowa.*; -import gplx.core.primitives.*; import gplx.core.brys.fmtrs.*; import gplx.core.net.*; +import gplx.core.primitives.*; import gplx.core.brys.fmtrs.*; import gplx.core.net.*; import gplx.core.net.qargs.*; import gplx.xowa.langs.*; import gplx.xowa.apps.urls.*; -public class System_data_page implements Xows_page { - private Gfo_qarg_mgr arg_hash = new Gfo_qarg_mgr(); - public Xows_special_meta Special__meta() {return Xows_special_meta_.Itm__system_data;} +public class System_data_page implements Xow_special_page { + private Gfo_qarg_mgr_old arg_hash = new Gfo_qarg_mgr_old(); + public Xow_special_meta Special__meta() {return Xow_special_meta_.Itm__system_data;} public void Special__gen(Xow_wiki wikii, Xoa_page pagei, Xoa_url url, Xoa_ttl ttl) { Xowe_wiki wiki = (Xowe_wiki)wikii; Xoae_page page = (Xoae_page)pagei; arg_hash.Load(url.Qargs_ary()); @@ -64,5 +64,5 @@ public class System_data_page implements Xows_page { , "~{text}" ), "path", "text"); - public Xows_page Special__clone() {return this;} + public Xow_special_page Special__clone() {return this;} } diff --git a/400_xowa/src/gplx/xowa/users/Xoc_layout_mgr.java b/400_xowa/src/gplx/xowa/users/Xoc_layout_mgr.java index f63e3f836..e1534fb07 100644 --- a/400_xowa/src/gplx/xowa/users/Xoc_layout_mgr.java +++ b/400_xowa/src/gplx/xowa/users/Xoc_layout_mgr.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.users; import gplx.*; import gplx.xowa.*; import gplx.core.primitives.*; import gplx.core.envs.*; import gplx.gfui.*; -public class Xoc_layout_mgr implements GfoInvkAble { +public class Xoc_layout_mgr implements Gfo_invk { public Xoc_layout_mgr(Xoae_app app) { this.app = app; Ctor_by_os(); @@ -35,11 +35,11 @@ public class Xoc_layout_mgr implements GfoInvkAble { private void Refresh_window() { app.Gui_mgr().Browser_win().Refresh_win_size(); } - public static final String + public static final String Invk_html_box_adj_type = "html_box_adj_type", Invk_html_box_adj_type_ = "html_box_adj_type_", Invk_html_box_adj_type_list = "html_box_adj_type_list" , Invk_html_box_adj_rect = "html_box_adj_rect", Invk_html_box_adj_rect_ = "html_box_adj_rect_"; public static final byte Html_box_adj_type_none_byte = 0, Html_box_adj_type_rel_byte = 1, Html_box_adj_type_abs_byte = 2; - private static final Enm_mgr html_box_adj_type_enm = new Enm_mgr().Add(Html_box_adj_type_none_byte, "none").Add(Html_box_adj_type_rel_byte, "relative").Add(Html_box_adj_type_abs_byte, "absolute"); + private static final Enm_mgr html_box_adj_type_enm = new Enm_mgr().Add(Html_box_adj_type_none_byte, "none").Add(Html_box_adj_type_rel_byte, "relative").Add(Html_box_adj_type_abs_byte, "absolute"); private void Ctor_by_os() { if (Op_sys.Cur().Tid_is_osx()) { html_box_adj_type = Html_box_adj_type_rel_byte; @@ -48,10 +48,10 @@ public class Xoc_layout_mgr implements GfoInvkAble { } } class Enm_mgr { - private Ordered_hash str_hash = Ordered_hash_.New(); private Hash_adp val_hash = Hash_adp_.new_(); - private Int_obj_ref tmp_val_ref = Int_obj_ref.zero_(); + private Ordered_hash str_hash = Ordered_hash_.New(); private Hash_adp val_hash = Hash_adp_.New(); + private Int_obj_ref tmp_val_ref = Int_obj_ref.New_zero(); public Enm_mgr Add(byte val, String str) { - Int_obj_ref val_ref = Int_obj_ref.new_(val); + Int_obj_ref val_ref = Int_obj_ref.New(val); Keyval kv = Keyval_.new_(str, val_ref); str_hash.Add(str, kv); val_hash.Add(val_ref, kv); diff --git a/400_xowa/src/gplx/xowa/users/Xou_cfg.java b/400_xowa/src/gplx/xowa/users/Xou_cfg.java index 92289f428..0340fdbd6 100644 --- a/400_xowa/src/gplx/xowa/users/Xou_cfg.java +++ b/400_xowa/src/gplx/xowa/users/Xou_cfg.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.users; import gplx.*; import gplx.xowa.*; -public class Xou_cfg implements GfoInvkAble { +public class Xou_cfg implements Gfo_invk { public Xou_cfg(Xoue_user user) { this.user = user; pages_mgr = new Xouc_pages_mgr(this); startup_mgr = new Xouc_startup_mgr(this); setup_mgr = new Xouc_setup_mgr(user); @@ -29,7 +29,7 @@ public class Xou_cfg implements GfoInvkAble { public Xouc_setup_mgr Setup_mgr() {return setup_mgr;} private Xouc_setup_mgr setup_mgr; public Xoc_layout_mgr Layout_mgr() {return layout_mgr;} private Xoc_layout_mgr layout_mgr; public Xou_security_mgr Security_mgr() {return security_mgr;} private Xou_security_mgr security_mgr; - public Xou_log_mgr Log_mgr() {return log_mgr;} private final Xou_log_mgr log_mgr = new Xou_log_mgr(); + public Xou_log_mgr Log_mgr() {return log_mgr;} private final Xou_log_mgr log_mgr = new Xou_log_mgr(); public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_pages)) return pages_mgr; else if (ctx.Match(k, Invk_startup)) return startup_mgr; @@ -39,7 +39,7 @@ public class Xou_cfg implements GfoInvkAble { else if (ctx.Match(k, Invk_log)) return log_mgr; return this; } - public static final String + public static final String Invk_pages = "pages", Invk_startup = "startup", Invk_setup = "setup", Invk_layout = "layout", Invk_security = "security", Invk_log = "log" ; } diff --git a/400_xowa/src/gplx/xowa/users/Xou_fsys_mgr.java b/400_xowa/src/gplx/xowa/users/Xou_fsys_mgr.java index 6b658f335..205bf73a6 100644 --- a/400_xowa/src/gplx/xowa/users/Xou_fsys_mgr.java +++ b/400_xowa/src/gplx/xowa/users/Xou_fsys_mgr.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.users; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.gfs.*; import gplx.xowa.wikis.*; -public class Xou_fsys_mgr implements GfoInvkAble { +public class Xou_fsys_mgr implements Gfo_invk { private Io_url app_root_dir; private Io_url wiki_root_dir; private Io_url cur_root; public Xou_fsys_mgr(Xoae_app app, Xoue_user usr, Io_url user_dir) { this.cur_root = user_dir; @@ -40,6 +40,6 @@ public class Xou_fsys_mgr implements GfoInvkAble { public static final String Name_user_system_cfg = "user_system_cfg.gfs"; public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_root_dir)) return cur_root; - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; } private static final String Invk_root_dir = "root_dir"; } diff --git a/400_xowa/src/gplx/xowa/users/Xou_log_mgr.java b/400_xowa/src/gplx/xowa/users/Xou_log_mgr.java index 98c16b6f3..0519f091b 100644 --- a/400_xowa/src/gplx/xowa/users/Xou_log_mgr.java +++ b/400_xowa/src/gplx/xowa/users/Xou_log_mgr.java @@ -16,14 +16,14 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.users; import gplx.*; import gplx.xowa.*; -public class Xou_log_mgr implements GfoInvkAble { +public class Xou_log_mgr implements Gfo_invk { public boolean Log_redlinks() {return log_redlinks;} private boolean log_redlinks; public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_log_redlinks)) return Yn.To_str(log_redlinks); else if (ctx.Match(k, Invk_log_redlinks_)) log_redlinks = m.ReadYn("v"); return this; } - public static final String + public static final String Invk_log_redlinks = "log_redlinks", Invk_log_redlinks_ = "log_redlinks_" ; } diff --git a/400_xowa/src/gplx/xowa/users/Xou_security_mgr.java b/400_xowa/src/gplx/xowa/users/Xou_security_mgr.java index d02775182..6c38afbe1 100644 --- a/400_xowa/src/gplx/xowa/users/Xou_security_mgr.java +++ b/400_xowa/src/gplx/xowa/users/Xou_security_mgr.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.users; import gplx.*; import gplx.xowa.*; -public class Xou_security_mgr implements GfoInvkAble { +public class Xou_security_mgr implements Gfo_invk { public Xou_security_mgr(Xoae_app app) {this.app = app;} private Xoae_app app; public boolean Web_access_enabled() {return app.Api_root().Net().Enabled();} public void Web_access_enabled_(boolean v) {app.Api_root().Net().Enabled_(v);} @@ -25,6 +25,6 @@ public class Xou_security_mgr implements GfoInvkAble { else if (ctx.Match(k, Invk_web_access_enabled_)) Web_access_enabled_(m.ReadYn("v")); return this; } - public static final String + public static final String Invk_web_access_enabled = "web_access_enabled", Invk_web_access_enabled_ = "web_access_enabled_"; } diff --git a/400_xowa/src/gplx/xowa/users/Xou_session.java b/400_xowa/src/gplx/xowa/users/Xou_session.java index 4b1276072..f57029947 100644 --- a/400_xowa/src/gplx/xowa/users/Xou_session.java +++ b/400_xowa/src/gplx/xowa/users/Xou_session.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.users; import gplx.*; import gplx.xowa.*; -public class Xou_session implements GfoInvkAble { +public class Xou_session implements Gfo_invk { public Xou_session(Xoue_user user) {this.user = user; window_mgr = new Xous_window_mgr(user);} public Xoue_user User() {return user;} private Xoue_user user; public Xous_window_mgr Window_mgr() {return window_mgr;} private Xous_window_mgr window_mgr; diff --git a/400_xowa/src/gplx/xowa/users/Xou_user_mgr.java b/400_xowa/src/gplx/xowa/users/Xou_user_mgr.java index 16fee44cf..a49bb335e 100644 --- a/400_xowa/src/gplx/xowa/users/Xou_user_mgr.java +++ b/400_xowa/src/gplx/xowa/users/Xou_user_mgr.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.users; import gplx.*; import gplx.xowa.*; -public class Xou_user_mgr implements GfoInvkAble { +public class Xou_user_mgr implements Gfo_invk { public Xou_user_mgr(Xoae_app app, Xoue_user user) {this.app = app; this.Add(user);} private Xoae_app app; public void Add(Xoue_user itm) {regy.Add(itm.Key(), itm);} Xoue_user GetByKey(String key) {return (Xoue_user)regy.Get_by(key);} @@ -32,7 +32,7 @@ public class Xou_user_mgr implements GfoInvkAble { } return user; } - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; // return this; } private static final String Invk_get = "get"; } diff --git a/400_xowa/src/gplx/xowa/users/Xouc_pages_mgr.java b/400_xowa/src/gplx/xowa/users/Xouc_pages_mgr.java index f75d7f24a..2e9665c49 100644 --- a/400_xowa/src/gplx/xowa/users/Xouc_pages_mgr.java +++ b/400_xowa/src/gplx/xowa/users/Xouc_pages_mgr.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.users; import gplx.*; import gplx.xowa.*; -public class Xouc_pages_mgr implements GfoInvkAble { +public class Xouc_pages_mgr implements Gfo_invk { public Xouc_pages_mgr(Xou_cfg config) {} public String Home() {return home;} public Xouc_pages_mgr Home_(String v) {home = v; return this;} private String home = Page_xowa; public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { diff --git a/400_xowa/src/gplx/xowa/users/Xouc_setup_mgr.java b/400_xowa/src/gplx/xowa/users/Xouc_setup_mgr.java index 70f06384a..e94e78ed3 100644 --- a/400_xowa/src/gplx/xowa/users/Xouc_setup_mgr.java +++ b/400_xowa/src/gplx/xowa/users/Xouc_setup_mgr.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.users; import gplx.*; import gplx.xowa.*; import gplx.core.envs.*; -public class Xouc_setup_mgr implements GfoInvkAble { +public class Xouc_setup_mgr implements Gfo_invk { public Xouc_setup_mgr(Xoue_user user) {this.user = user;} public Xoue_user User() {return user;} private Xoue_user user; private String setup_completed = ""; diff --git a/400_xowa/src/gplx/xowa/users/Xouc_startup_mgr.java b/400_xowa/src/gplx/xowa/users/Xouc_startup_mgr.java index 63774d7e4..f737d08a7 100644 --- a/400_xowa/src/gplx/xowa/users/Xouc_startup_mgr.java +++ b/400_xowa/src/gplx/xowa/users/Xouc_startup_mgr.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.users; import gplx.*; import gplx.xowa.*; -public class Xouc_startup_mgr implements GfoInvkAble { +public class Xouc_startup_mgr implements Gfo_invk { public Xouc_startup_mgr(Xou_cfg config) {this.config = config; window_mgr = new Xouc_window_mgr(config.User());} private Xou_cfg config; public Xouc_window_mgr Window_mgr() {return window_mgr;} private Xouc_window_mgr window_mgr; public String Page() {return page;} public Xouc_startup_mgr Page_(String v) {page = v; return this;} private String page = "xowa"; @@ -54,7 +54,7 @@ public class Xouc_startup_mgr implements GfoInvkAble { private void Custom_config_(String v) { Xoae_app app = config.User().Appe(); Object rslt = app.Gfs_mgr().Run_str(v); - if (rslt == GfoInvkAble_.Rv_error) { + if (rslt == Gfo_invk_.Rv_error) { app.Usr_dlg().Warn_many("", "", "custom script failed: ~{0}", v); return; } diff --git a/400_xowa/src/gplx/xowa/users/Xouc_window_mgr.java b/400_xowa/src/gplx/xowa/users/Xouc_window_mgr.java index 990f269bf..662b26678 100644 --- a/400_xowa/src/gplx/xowa/users/Xouc_window_mgr.java +++ b/400_xowa/src/gplx/xowa/users/Xouc_window_mgr.java @@ -17,8 +17,9 @@ along with this program. If not, see . */ package gplx.xowa.users; import gplx.*; import gplx.xowa.*; import gplx.core.envs.*; -import gplx.gfui.*; import gplx.xowa.guis.views.*; -public class Xouc_window_mgr implements GfoInvkAble { +import gplx.gfui.*; import gplx.gfui.envs.*; import gplx.gfui.controls.windows.*; +import gplx.xowa.guis.views.*; +public class Xouc_window_mgr implements Gfo_invk { public Xouc_window_mgr(Xoue_user user) {this.user = user;} private Xoue_user user; public byte Mode_tid() {return mode_tid;} private byte mode_tid = Mode_tid_previous; public String Mode_str() {return mode_str;} private String mode_str = "previous"; diff --git a/400_xowa/src/gplx/xowa/users/Xoue_user.java b/400_xowa/src/gplx/xowa/users/Xoue_user.java index af0ac358e..4ed503374 100644 --- a/400_xowa/src/gplx/xowa/users/Xoue_user.java +++ b/400_xowa/src/gplx/xowa/users/Xoue_user.java @@ -22,10 +22,10 @@ import gplx.xowa.langs.*; import gplx.xowa.langs.msgs.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.xwikis.*; import gplx.xowa.users.history.*; import gplx.xowa.xtns.scribunto.*; import gplx.xowa.users.data.*; import gplx.xowa.files.*; import gplx.xowa.files.caches.*; import gplx.xowa.langs.genders.*; -public class Xoue_user implements Xou_user, GfoEvMgrOwner, GfoInvkAble { +public class Xoue_user implements Xou_user, Gfo_evt_mgr_owner, Gfo_invk { public Xoue_user(Xoae_app app, Io_url user_dir) { this.app = app; this.key = user_dir.NameOnly(); - this.ev_mgr = GfoEvMgr.new_(this); + this.ev_mgr = new Gfo_evt_mgr(this); this.fsys_mgr = new Xou_fsys_mgr(app, this, user_dir); this.user_db_mgr = new Xou_db_mgr(app); this.history_mgr = new Xou_history_mgr(fsys_mgr.App_data_history_fil()); @@ -33,7 +33,7 @@ public class Xoue_user implements Xou_user, GfoEvMgrOwner, GfoInvkAble { this.cfg_mgr = new Xou_cfg(this); this.session_mgr = new Xou_session(this); } - public GfoEvMgr EvMgr() {return ev_mgr;} private final GfoEvMgr ev_mgr; + public Gfo_evt_mgr Evt_mgr() {return ev_mgr;} private final Gfo_evt_mgr ev_mgr; public String Key() {return key;} private String key; public Xou_db_mgr User_db_mgr() {return user_db_mgr;} private final Xou_db_mgr user_db_mgr; public Xow_wiki Wikii() {return this.Wiki();} @@ -44,7 +44,7 @@ public class Xoue_user implements Xou_user, GfoEvMgrOwner, GfoInvkAble { lang = v; this.Msg_mgr().Lang_(v); wiki.Msg_mgr().Clear(); // clear home wiki msgs whenever lang changes; else messages cached from old lang will not be replaced; EX:Read/Edit; DATE:2014-05-26 - GfoEvMgr_.PubVal(this, Evt_lang_changed, lang); + Gfo_evt_mgr_.Pub_val(this, Evt_lang_changed, lang); } public Xou_fsys_mgr Fsys_mgr() {return fsys_mgr;} private Xou_fsys_mgr fsys_mgr; public Xowe_wiki Wiki() {if (wiki == null) wiki = Xou_user_.new_or_create_(this, app); return wiki;} private Xowe_wiki wiki; @@ -78,7 +78,7 @@ public class Xoue_user implements Xou_user, GfoEvMgrOwner, GfoInvkAble { bookmarks_add_fmtr.Bld_bfr_many(tmp_bfr, wiki_domain, ttl_full_txt); byte[] new_entry = tmp_bfr.To_bry_and_rls(); Xoa_ttl bookmarks_ttl = Xoa_ttl.parse(wiki, Bry_data_bookmarks); - Xoae_page bookmarks_page = wiki.Data_mgr().Get_page(bookmarks_ttl, false); + Xoae_page bookmarks_page = wiki.Data_mgr().Load_page_by_ttl(bookmarks_ttl); byte[] new_data = Bry_.Add(bookmarks_page.Data_raw(), new_entry); wiki.Db_mgr().Save_mgr().Data_update(bookmarks_page, new_data); } private Bry_fmtr bookmarks_add_fmtr = Bry_fmtr.new_("* [[~{wiki_key}:~{page_name}]]\n", "wiki_key", "page_name"); byte[] Bry_data_bookmarks = Bry_.new_a7("Data:Bookmarks"); @@ -95,7 +95,7 @@ public class Xoue_user implements Xou_user, GfoEvMgrOwner, GfoInvkAble { else if (ctx.Match(k, Invk_cfg)) return cfg_mgr; else if (ctx.Match(k, Invk_session)) return session_mgr; else if (ctx.Match(k, "name")) return key; //throw Err_.new_unhandled(k); // OBSOLETE: used to return key - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } public static final String Invk_available_from_fsys = "available_from_fsys", Invk_available_from_bulk = "available_from_bulk", Invk_bookmarks_add_fmt_ = "bookmarks_add_fmt_" diff --git a/400_xowa/src/gplx/xowa/users/Xous_window_mgr.java b/400_xowa/src/gplx/xowa/users/Xous_window_mgr.java index 409e09fee..20cae2291 100644 --- a/400_xowa/src/gplx/xowa/users/Xous_window_mgr.java +++ b/400_xowa/src/gplx/xowa/users/Xous_window_mgr.java @@ -16,16 +16,17 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.users; import gplx.*; import gplx.xowa.*; +import gplx.gfui.controls.windows.*; import gplx.xowa.guis.views.*; import gplx.xowa.apps.apis.xowa.startups.tabs.*; -public class Xous_window_mgr implements GfoInvkAble { +public class Xous_window_mgr implements Gfo_invk { public Xous_window_mgr(Xoue_user user) { this.user = user; } public Xoue_user User() {return user;} private Xoue_user user; public Rect_ref Rect() {if (rect == null) rect = Rect_new(); return rect;} Rect_ref rect; public boolean Maximized() {return maximized;} private boolean maximized = false; - public void Save_window(gplx.gfui.GfuiWin win) { + public void Save_window(GfuiWin win) { Xoae_app app = user.Appe(); gplx.xowa.apps.cfgs.Xoa_cfg_mgr cfg_mgr = app.Cfg_mgr(); if (user.Cfg_mgr().Startup_mgr().Window_mgr().Mode_tid() == Xouc_window_mgr.Mode_tid_previous) { @@ -41,7 +42,7 @@ public class Xous_window_mgr implements GfoInvkAble { cfg_mgr.Db_save_txt(); } private String Calc_previous_tabs(Xog_tab_mgr tab_mgr) { - Bry_bfr bfr = Bry_bfr.new_(); + Bry_bfr bfr = Bry_bfr_.New(); int len = tab_mgr.Tabs_len(); for (int i = 0; i < len; ++i) { if (i != 0) bfr.Add_byte_nl(); diff --git a/400_xowa/src/gplx/xowa/users/bmks/Dbui_tbl_itm__bmk.java b/400_xowa/src/gplx/xowa/users/bmks/Dbui_tbl_itm__bmk.java index 9c29b768d..3a2159848 100644 --- a/400_xowa/src/gplx/xowa/users/bmks/Dbui_tbl_itm__bmk.java +++ b/400_xowa/src/gplx/xowa/users/bmks/Dbui_tbl_itm__bmk.java @@ -24,7 +24,7 @@ public class Dbui_tbl_itm__bmk implements Dbui_tbl_itm { private final Xoa_app app; private final Xoud_bmk_itm_tbl tbl; private final Dbui_tbl_fmtr tbl_fmtr = new Dbui_tbl_fmtr(); private final Dbui_cells_fmtr cells_fmtr = new Dbui_cells_fmtr(); private final Dbui_val_fmtr edit_val_fmtr = Dbui_val_fmtr_.new_edit(); private final Dbui_val_fmtr view_val_fmtr = Dbui_val_fmtr_.new_view(); - private final Bry_bfr tmp_bfr = Bry_bfr.new_(255); + private final Bry_bfr tmp_bfr = Bry_bfr_.New_w_size(255); private final Bridge_msg_bldr msg_bldr; public Dbui_tbl_itm__bmk(Xoa_app app, Xoud_bmk_itm_tbl tbl) {this.app = app; this.tbl = tbl; this.msg_bldr = app.Html__bridge_mgr().Msg_bldr();} public byte[] Key() {return key;} private static final byte[] key = Bry_.new_a7("bmk"); diff --git a/400_xowa/src/gplx/xowa/users/bmks/Xoud_bmk_dir_tbl.java b/400_xowa/src/gplx/xowa/users/bmks/Xoud_bmk_dir_tbl.java index 5cb6c65e4..fee69b521 100644 --- a/400_xowa/src/gplx/xowa/users/bmks/Xoud_bmk_dir_tbl.java +++ b/400_xowa/src/gplx/xowa/users/bmks/Xoud_bmk_dir_tbl.java @@ -18,8 +18,8 @@ along with this program. If not, see . package gplx.xowa.users.bmks; import gplx.*; import gplx.xowa.*; import gplx.xowa.users.*; import gplx.dbs.*; import gplx.dbs.qrys.*; public class Xoud_bmk_dir_tbl implements Rls_able { - private final String tbl_name = "bmk_dir"; private final Dbmeta_fld_list flds = Dbmeta_fld_list.new_(); - private final String fld_id, fld_owner, fld_sort, fld_name; + private final String tbl_name = "bmk_dir"; private final Dbmeta_fld_list flds = new Dbmeta_fld_list(); + private final String fld_id, fld_owner, fld_sort, fld_name; public Xoud_bmk_dir_tbl(Db_conn conn) { this.conn = conn; fld_id = flds.Add_int_pkey_autonum("dir_id"); @@ -28,7 +28,7 @@ public class Xoud_bmk_dir_tbl implements Rls_able { fld_name = flds.Add_str("dir_name", 255); conn.Rls_reg(this); } - public Db_conn Conn() {return conn;} private final Db_conn conn; + public Db_conn Conn() {return conn;} private final Db_conn conn; public String Tbl_name() {return tbl_name;} public void Create_tbl() {conn.Meta_tbl_create(Dbmeta_tbl_itm.New(tbl_name, flds.To_fld_ary()));} public void Insert(int owner, int sort, byte[] name) { diff --git a/400_xowa/src/gplx/xowa/users/bmks/Xoud_bmk_itm_tbl.java b/400_xowa/src/gplx/xowa/users/bmks/Xoud_bmk_itm_tbl.java index 41988f0af..0f52c0b45 100644 --- a/400_xowa/src/gplx/xowa/users/bmks/Xoud_bmk_itm_tbl.java +++ b/400_xowa/src/gplx/xowa/users/bmks/Xoud_bmk_itm_tbl.java @@ -18,8 +18,8 @@ along with this program. If not, see . package gplx.xowa.users.bmks; import gplx.*; import gplx.xowa.*; import gplx.xowa.users.*; import gplx.dbs.*; import gplx.dbs.qrys.*; public class Xoud_bmk_itm_tbl implements Rls_able { - private final String tbl_name = "bmk_itm"; private final Dbmeta_fld_list flds = Dbmeta_fld_list.new_(); - private final String fld_id, fld_owner, fld_sort, fld_name, fld_wiki, fld_url, fld_comment; + private final String tbl_name = "bmk_itm"; private final Dbmeta_fld_list flds = new Dbmeta_fld_list(); + private final String fld_id, fld_owner, fld_sort, fld_name, fld_wiki, fld_url, fld_comment; private Db_stmt stmt_update_sort; public Xoud_bmk_itm_tbl(Db_conn conn) { this.conn = conn; @@ -32,7 +32,7 @@ public class Xoud_bmk_itm_tbl implements Rls_able { fld_comment = flds.Add_str("itm_comment" , 4096); conn.Rls_reg(this); } - public Db_conn Conn() {return conn;} private final Db_conn conn; + public Db_conn Conn() {return conn;} private final Db_conn conn; public String Tbl_name() {return tbl_name;} public void Create_tbl() {conn.Meta_tbl_create(Dbmeta_tbl_itm.New(tbl_name, flds.To_fld_ary()));} public void Insert(int owner, int sort, byte[] name, byte[] wiki, byte[] url, byte[] comment) { @@ -59,7 +59,7 @@ public class Xoud_bmk_itm_tbl implements Rls_able { stmt_delete.Clear().Crt_int(fld_id, id).Exec_delete(); } public Xoud_bmk_itm_row[] Select_grp(int owner) { - List_adp list = List_adp_.new_(); + List_adp list = List_adp_.New(); Db_rdr rdr = conn.Stmt_select_order(tbl_name, flds, String_.Ary(fld_owner), fld_sort) .Crt_int(fld_owner, owner) .Exec_select__rls_auto(); diff --git a/400_xowa/src/gplx/xowa/users/bmks/Xows_bmk_page.java b/400_xowa/src/gplx/xowa/users/bmks/Xows_bmk_page.java index 2d18dd36f..59999c5e3 100644 --- a/400_xowa/src/gplx/xowa/users/bmks/Xows_bmk_page.java +++ b/400_xowa/src/gplx/xowa/users/bmks/Xows_bmk_page.java @@ -19,8 +19,8 @@ package gplx.xowa.users.bmks; import gplx.*; import gplx.xowa.*; import gplx.xow import gplx.core.primitives.*; import gplx.xowa.htmls.bridges.dbuis.tbls.*; import gplx.xowa.users.data.*; import gplx.xowa.specials.*; -public class Xows_bmk_page implements Xows_page { - public Xows_special_meta Special__meta() {return Xows_special_meta_.Itm__bookmarks;} +public class Xows_bmk_page implements Xow_special_page { + public Xow_special_meta Special__meta() {return Xow_special_meta_.Itm__bookmarks;} public void Special__gen(Xow_wiki wikii, Xoa_page pagei, Xoa_url url, Xoa_ttl ttl) { Xowe_wiki wiki = (Xowe_wiki)wikii; Xoae_page page = (Xoae_page)pagei; Xoa_app app = wiki.App(); @@ -31,5 +31,5 @@ public class Xows_bmk_page implements Xows_page { page.Hdump_data().Body_(bfr.To_bry_and_rls()); } - public Xows_page Special__clone() {return this;} + public Xow_special_page Special__clone() {return this;} } diff --git a/400_xowa/src/gplx/xowa/users/data/Xou_db_mgr.java b/400_xowa/src/gplx/xowa/users/data/Xou_db_mgr.java index 593a7c403..0be81f79e 100644 --- a/400_xowa/src/gplx/xowa/users/data/Xou_db_mgr.java +++ b/400_xowa/src/gplx/xowa/users/data/Xou_db_mgr.java @@ -21,13 +21,13 @@ import gplx.xowa.files.caches.*; import gplx.xowa.users.bmks.*; import gplx.xowa.users.history.*; public class Xou_db_mgr { private final Xoa_app app; - private final Xoud_id_mgr id_mgr; - private Db_conn conn; + private final Xoud_id_mgr id_mgr; public Xou_db_mgr(Xoa_app app) { this.app = app; this.id_mgr = new Xoud_id_mgr(cfg_mgr); this.site_mgr = new Xoud_site_mgr(id_mgr); } + public Db_conn Conn() {return conn;} private Db_conn conn; public Xou_db_file Db_file() {return db_file;} private Xou_db_file db_file; public Xoud_cfg_mgr Cfg_mgr() {return cfg_mgr;} private final Xoud_cfg_mgr cfg_mgr = new Xoud_cfg_mgr(); public Xoud_site_mgr Site_mgr() {return site_mgr;} private final Xoud_site_mgr site_mgr; diff --git a/400_xowa/src/gplx/xowa/users/data/Xoud_cfg_mgr.java b/400_xowa/src/gplx/xowa/users/data/Xoud_cfg_mgr.java index 71d477e36..13c3b13b8 100644 --- a/400_xowa/src/gplx/xowa/users/data/Xoud_cfg_mgr.java +++ b/400_xowa/src/gplx/xowa/users/data/Xoud_cfg_mgr.java @@ -54,9 +54,18 @@ public class Xoud_cfg_mgr { else Update_int(grp, key, val); } + public void Upsert_str(String grp, String key, String val) { + String exists = Select_str_or(grp, key, null); + if (exists == null) + Insert_str(grp, key, val); + else + Update_str(grp, key, val); + } + public void Update_str(String grp, String key, String val) {Update_bry(grp, key, Bry_.new_u8(val));} public void Update_bry(String key, byte[] val) {Update_bry("", key, val);} public void Update_bry(String grp, String key, byte[] val) {tbl.Update_bry(grp, key, val);} public void Update_int(String grp, String key, int val) {tbl.Update_int(grp, key, val);} + public void Insert_str(String grp, String key, String val) {Insert_bry(grp, key, Bry_.new_u8(val));} public void Insert_bry(String key, byte[] val) {Insert_bry("", key, val);} public void Insert_bry(String grp, String key, byte[] val) {tbl.Insert_bry(grp, key, val);} public void Insert_int(String grp, String key, int val) {tbl.Insert_int(grp, key, val);} diff --git a/400_xowa/src/gplx/xowa/users/data/Xoud_opt_scope.java b/400_xowa/src/gplx/xowa/users/data/Xoud_opt_scope.java index 4bfbcc788..b765dc12e 100644 --- a/400_xowa/src/gplx/xowa/users/data/Xoud_opt_scope.java +++ b/400_xowa/src/gplx/xowa/users/data/Xoud_opt_scope.java @@ -21,18 +21,18 @@ import gplx.xowa.langs.*; import gplx.xowa.wikis.domains.*; class Xoud_opt_scope { public Xoud_opt_scope(int lang_id, int type_id) {this.lang_id = lang_id; this.type_id = type_id;} - public int Lang_id() {return lang_id;} private final int lang_id; - public int Type_id() {return type_id;} private final int type_id; + public int Lang_id() {return lang_id;} private final int lang_id; + public int Type_id() {return type_id;} private final int type_id; public String To_str() { String lang_str = lang_id == Lang_id_wildcard ? "*" : String_.new_u8(Xol_lang_stub_.Get_by_id(lang_id).Key()); String type_str = type_id == Lang_id_wildcard ? "*" : String_.new_u8(Xow_domain_tid_.Get_type_as_bry(type_id)); return lang_str + "." + type_str; } public static final int Lang_id_wildcard = -1, Type_id_wildcard = -1; - public static final Xoud_opt_scope App = new Xoud_opt_scope(Lang_id_wildcard, Type_id_wildcard); + public static final Xoud_opt_scope App = new Xoud_opt_scope(Lang_id_wildcard, Type_id_wildcard); } class Xoud_opt_scope_parser { - private Gfo_usr_dlg usr_dlg; private final List_adp list = List_adp_.new_(); + private Gfo_usr_dlg usr_dlg; private final List_adp list = List_adp_.New(); public Xoud_opt_scope[] Parse(byte[] src) { usr_dlg = Gfo_usr_dlg_.Instance; list.Clear(); @@ -63,7 +63,7 @@ class Xoud_opt_scope_parser { usr_dlg.Warn_many("", "", fmt, String_.new_u8(src, bgn, end)); return Xoud_opt_scope.App; } - private static final Btrie_slim_mgr btrie_by_type = Btrie_slim_mgr.cs() + private static final Btrie_slim_mgr btrie_by_type = Btrie_slim_mgr.cs() .Add_str_int("w" , Xow_domain_tid_.Int__wikipedia) .Add_str_int("d" , Xow_domain_tid_.Int__wiktionary) .Add_str_int("s" , Xow_domain_tid_.Int__wikisource) @@ -81,5 +81,5 @@ class Xoud_opt_scope_parser { .Add_str_int("mw" , Xow_domain_tid_.Int__mediawiki) .Add_str_int("wmf" , Xow_domain_tid_.Int__wmfblog) ; - private static final Xoud_opt_scope[] Ary_app = new Xoud_opt_scope[] {Xoud_opt_scope.App}; + private static final Xoud_opt_scope[] Ary_app = new Xoud_opt_scope[] {Xoud_opt_scope.App}; } diff --git a/400_xowa/src/gplx/xowa/users/data/Xoud_opt_scope_tst.java b/400_xowa/src/gplx/xowa/users/data/Xoud_opt_scope_tst.java index 90bb43d7e..6ee2031b3 100644 --- a/400_xowa/src/gplx/xowa/users/data/Xoud_opt_scope_tst.java +++ b/400_xowa/src/gplx/xowa/users/data/Xoud_opt_scope_tst.java @@ -30,7 +30,7 @@ public class Xoud_opt_scope_tst { } } class Xoud_opt_scope_fxt { - private final Xoud_opt_scope_parser parser = new Xoud_opt_scope_parser(); + private final Xoud_opt_scope_parser parser = new Xoud_opt_scope_parser(); public void Clear() { // Gfo_usr_dlg_.I = Xoa_app_.usr_dlg_console_(); } @@ -40,7 +40,7 @@ class Xoud_opt_scope_fxt { Tfds.Eq(To_str(expd), To_str(actl)); } private static String To_str(Xoud_opt_scope[] ary) { - Bry_bfr bfr = Bry_bfr.new_(); + Bry_bfr bfr = Bry_bfr_.New(); int len = ary.length; for (int i = 0; i < len; ++i) { Xoud_opt_scope itm = ary[i]; diff --git a/400_xowa/src/gplx/xowa/users/data/Xoud_site_mgr.java b/400_xowa/src/gplx/xowa/users/data/Xoud_site_mgr.java index fa167cba1..ed1f98745 100644 --- a/400_xowa/src/gplx/xowa/users/data/Xoud_site_mgr.java +++ b/400_xowa/src/gplx/xowa/users/data/Xoud_site_mgr.java @@ -25,21 +25,17 @@ public class Xoud_site_mgr { tbl = new Xoud_site_tbl(conn); if (created) tbl.Create_tbl(); } - public Xoud_site_row[] Get_all() {return tbl.Select_all();} - public void Import(String domain, String name, String path, String xtn) { // insert or update wiki - Xoud_site_row[] ary = tbl.Select_by_domain(domain); - int len = ary.length, update_id = -1, priority = 0; - for (int i = 0; i < len; ++i) { - Xoud_site_row itm = ary[i]; - if (priority <= itm.Priority()) priority = itm.Priority() + 1; - if (String_.Eq(path, itm.Path())) { // same domain and same path; change insert to update; - update_id = itm.Id(); - break; - } - } - if (update_id == -1) - tbl.Insert(id_mgr.Get_next_and_save("xowa.user.site"), priority, domain, name, path, xtn); + public Xoud_site_row[] Get_all() {return tbl.Select_all();} + public Xoud_site_row Select_by_domain(byte[] domain) {return tbl.Select_by_domain(domain);} + public void Delete_by_domain(byte[] domain) {tbl.Delete_by_domain(domain);} + public void Import(String domain, String name, String path, String date, String xtn) { // insert or update wiki + Xoud_site_row itm = tbl.Select_by_domain(Bry_.new_u8(domain)); + if (itm == null) + tbl.Insert(id_mgr.Get_next_and_save("xowa.user.site"), 0, domain, name, path, date, xtn); else - tbl.Update(update_id, priority, domain, name, path, xtn); + tbl.Update(itm.Id(), 0, domain, name, path, date, xtn); + } + public void Update(Xoud_site_row row) { + tbl.Update(row.Id(), row.Priority(), row.Domain(), row.Name(), row.Path(), row.Date(), row.Xtn()); } } diff --git a/400_xowa/src/gplx/xowa/users/data/Xoud_site_row.java b/400_xowa/src/gplx/xowa/users/data/Xoud_site_row.java index d351d7720..dc570b226 100644 --- a/400_xowa/src/gplx/xowa/users/data/Xoud_site_row.java +++ b/400_xowa/src/gplx/xowa/users/data/Xoud_site_row.java @@ -17,13 +17,14 @@ along with this program. If not, see . */ package gplx.xowa.users.data; import gplx.*; import gplx.xowa.*; import gplx.xowa.users.*; public class Xoud_site_row { - public Xoud_site_row(int id, int priority, String domain, String name, String path, String xtn) { - this.id = id; this.priority = priority; this.domain = domain; this.name = name; this.path = path; this.xtn = xtn; + public Xoud_site_row(int id, int priority, String domain, String name, String path, String date, String xtn) { + this.id = id; this.priority = priority; this.domain = domain; this.name = name; this.path = path; this.date = date; this.xtn = xtn; } - public int Id() {return id;} private final int id; - public int Priority() {return priority;} private final int priority; - public String Domain() {return domain;} private final String domain; - public String Name() {return name;} private final String name; - public String Path() {return path;} private final String path; + public int Id() {return id;} private final int id; + public int Priority() {return priority;} private final int priority; + public String Domain() {return domain;} private final String domain; + public String Name() {return name;} private final String name; + public String Path() {return path;} private final String path; + public String Date() {return date;} private String date; public void Date_(String v) {this.date = v;} public String Xtn() {return xtn;} private String xtn; } diff --git a/400_xowa/src/gplx/xowa/users/data/Xoud_site_tbl.java b/400_xowa/src/gplx/xowa/users/data/Xoud_site_tbl.java index 74f4827d3..df698ded9 100644 --- a/400_xowa/src/gplx/xowa/users/data/Xoud_site_tbl.java +++ b/400_xowa/src/gplx/xowa/users/data/Xoud_site_tbl.java @@ -19,8 +19,8 @@ package gplx.xowa.users.data; import gplx.*; import gplx.xowa.*; import gplx.xow import gplx.dbs.*; public class Xoud_site_tbl implements Rls_able { public static final String Tbl_name = "user_site"; - private final String tbl_name = Tbl_name; private final Dbmeta_fld_list flds = Dbmeta_fld_list.new_(); - private final String fld_site_id, fld_site_priority, fld_site_domain, fld_site_name, fld_site_path, fld_site_xtn; + private final String tbl_name = Tbl_name; private final Dbmeta_fld_list flds = new Dbmeta_fld_list(); + private final String fld_site_id, fld_site_priority, fld_site_domain, fld_site_name, fld_site_path, fld_site_xtn, fld_site_date; private final Db_conn conn; public Xoud_site_tbl(Db_conn conn) { this.conn = conn; @@ -29,54 +29,62 @@ public class Xoud_site_tbl implements Rls_able { fld_site_domain = flds.Add_str("site_domain", 255); // EX: en.wikipedia.org; NOTE: no protocol (https:) fld_site_name = flds.Add_str("site_name", 255); // EX: English Wikipedia fld_site_path = flds.Add_str("site_path", 255); // EX: ~{xowa_root}/wiki/en.wikipedia.org/ + fld_site_date = conn.Meta_fld_append_if_missing(tbl_name, flds, Dbmeta_fld_itm.new_str("site_date", 255).Default_("")); // EX: 2016-06-10 fld_site_xtn = flds.Add_text("site_xtn"); conn.Rls_reg(this); } public void Create_tbl() {conn.Meta_tbl_create(Dbmeta_tbl_itm.New(tbl_name, flds));} public void Rls() {} - public void Insert(int site_id, int priority, String domain, String name, String path, String xtn) { - Db_stmt stmt = conn.Stmt_insert(tbl_name, flds); - stmt.Val_int(fld_site_id, site_id) - .Val_int(fld_site_priority, priority).Val_str(fld_site_domain, domain).Val_str(fld_site_name, name).Val_str(fld_site_path, path).Val_str(fld_site_xtn, xtn) - .Exec_insert(); + public void Insert(int site_id, int priority, String domain, String name, String path, String date, String xtn) { + Db_stmt stmt = conn.Stmt_insert(tbl_name, flds); + Exec_stmt(stmt, Bool_.N, site_id, priority, domain, name, path, date, xtn); } - public void Update(int site_id, int priority, String domain, String name, String path, String xtn) { + public void Update(int site_id, int priority, String domain, String name, String path, String date, String xtn) { Db_stmt stmt = conn.Stmt_update_exclude(tbl_name, flds, fld_site_id); - stmt.Val_int(fld_site_priority, priority).Val_str(fld_site_domain, domain).Val_str(fld_site_name, name).Val_str(fld_site_path, path).Val_str(fld_site_xtn, xtn) - .Crt_int(fld_site_id, site_id) - .Exec_update(); + Exec_stmt(stmt, Bool_.Y, site_id, priority, domain, name, path, date, xtn); } public void Delete(int site_id) { Db_stmt stmt = conn.Stmt_delete(tbl_name, fld_site_id); stmt.Crt_int(fld_site_id, site_id).Exec_delete(); } + public void Delete_by_domain(byte[] domain) { + conn.Stmt_delete(tbl_name, fld_site_domain).Crt_bry_as_str(fld_site_domain, domain).Exec_delete(); + } public Xoud_site_row[] Select_all() { - List_adp rv = List_adp_.new_(); + List_adp rv = List_adp_.New(); Db_rdr rdr = conn.Stmt_select(tbl_name, flds).Exec_select__rls_auto(); try { while (rdr.Move_next()) - rv.Add(new_row(rdr)); + rv.Add(New_site(rdr)); return (Xoud_site_row[])rv.To_ary_and_clear(Xoud_site_row.class); } finally {rdr.Rls();} } - public Xoud_site_row[] Select_by_domain(String domain) { - List_adp rv = List_adp_.new_(); - Db_rdr rdr = conn.Stmt_select(tbl_name, flds, fld_site_domain).Crt_str(fld_site_domain, domain).Exec_select__rls_auto(); - try { - while (rdr.Move_next()) - rv.Add(new_row(rdr)); - return (Xoud_site_row[])rv.To_ary_and_clear(Xoud_site_row.class); - } + public Xoud_site_row Select_by_domain(byte[] domain) { + Db_rdr rdr = conn.Stmt_select(tbl_name, flds, fld_site_domain).Crt_bry_as_str(fld_site_domain, domain).Exec_select__rls_auto(); + try {return rdr.Move_next() ? New_site(rdr) : null;} // NOTE: old versions allowed multiple wikis with same domain; only return 1st finally {rdr.Rls();} } - private Xoud_site_row new_row(Db_rdr rdr) { + private void Exec_stmt(Db_stmt stmt, boolean update, int site_id, int priority, String domain, String name, String path, String date, String xtn) { + if (!update) + stmt.Val_int(fld_site_id, site_id); + stmt.Val_int(fld_site_priority, priority).Val_str(fld_site_domain, domain).Val_str(fld_site_name, name).Val_str(fld_site_path, path) + .Val_str(fld_site_date, date).Val_str(fld_site_xtn, xtn); + if (update) + stmt.Crt_int(fld_site_id, site_id); + if (update) + stmt.Exec_update(); + else + stmt.Exec_insert(); + } + private Xoud_site_row New_site(Db_rdr rdr) { return new Xoud_site_row ( rdr.Read_int(fld_site_id) , rdr.Read_int(fld_site_priority) , rdr.Read_str(fld_site_domain) , rdr.Read_str(fld_site_name) , rdr.Read_str(fld_site_path) + , rdr.Read_str(fld_site_date) , rdr.Read_str(fld_site_xtn) ); } diff --git a/400_xowa/src/gplx/xowa/users/data/Xoud_user_tbl.java b/400_xowa/src/gplx/xowa/users/data/Xoud_user_tbl.java index 44a35d473..37d0b5cf5 100644 --- a/400_xowa/src/gplx/xowa/users/data/Xoud_user_tbl.java +++ b/400_xowa/src/gplx/xowa/users/data/Xoud_user_tbl.java @@ -30,7 +30,7 @@ class Xoud_user_mgr { } } class Xoud_user_tbl { - private String tbl_name = "user_user_regy"; private final Dbmeta_fld_list flds = Dbmeta_fld_list.new_(); + private String tbl_name = "user_user_regy"; private final Dbmeta_fld_list flds = new Dbmeta_fld_list(); private String fld_id, fld_name; private Db_conn conn; public void Conn_(Db_conn new_conn, boolean created) { diff --git a/400_xowa/src/gplx/xowa/users/history/Dbui_tbl_itm__history.java b/400_xowa/src/gplx/xowa/users/history/Dbui_tbl_itm__history.java index 2e0037452..cb67365c2 100644 --- a/400_xowa/src/gplx/xowa/users/history/Dbui_tbl_itm__history.java +++ b/400_xowa/src/gplx/xowa/users/history/Dbui_tbl_itm__history.java @@ -23,7 +23,7 @@ import gplx.xowa.htmls.bridges.*; import gplx.xowa.htmls.bridges.dbuis.*; import public class Dbui_tbl_itm__history implements Dbui_tbl_itm { private final Xoa_app app; private final Xoud_history_tbl tbl; private final Dbui_tbl_fmtr tbl_fmtr = new Dbui_tbl_fmtr(); - private final Bry_bfr tmp_bfr = Bry_bfr.new_(255); + private final Bry_bfr tmp_bfr = Bry_bfr_.New_w_size(255); private final Bridge_msg_bldr msg_bldr; public Dbui_tbl_itm__history(Xoa_app app, Xoud_history_tbl tbl) {this.app = app; this.tbl = tbl; this.msg_bldr = app.Html__bridge_mgr().Msg_bldr();} public byte[] Key() {return key;} private static final byte[] key = Bry_.new_a7("history"); @@ -35,7 +35,7 @@ public class Dbui_tbl_itm__history implements Dbui_tbl_itm { dbui_mgr.Init_by_bridge(bridge_mgr); dbui_mgr.Add(this); } - private final List_adp select_list = List_adp_.new_(); + private final List_adp select_list = List_adp_.New(); public void Select(Bry_bfr bfr, int top) { tbl.Select_by_top(select_list, 100); Xoud_history_row[] db_rows = (Xoud_history_row[])select_list.To_ary_and_clear(Xoud_history_row.class); diff --git a/400_xowa/src/gplx/xowa/users/history/Xou_history_cfg.java b/400_xowa/src/gplx/xowa/users/history/Xou_history_cfg.java index 295ab7ec6..a0222eb51 100644 --- a/400_xowa/src/gplx/xowa/users/history/Xou_history_cfg.java +++ b/400_xowa/src/gplx/xowa/users/history/Xou_history_cfg.java @@ -16,14 +16,14 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.users.history; import gplx.*; import gplx.xowa.*; import gplx.xowa.users.*; -public class Xou_history_cfg implements GfoInvkAble { +public class Xou_history_cfg implements Gfo_invk { public Xou_history_cfg() { this.enabled = true; // CFG: default to true for general user; privacy-conscious users must disable } public boolean Enabled() {return enabled;} private boolean enabled; public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_enabled_)) enabled = m.ReadBool("v"); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String Invk_enabled_ = "enabled_"; } diff --git a/400_xowa/src/gplx/xowa/users/history/Xou_history_html.java b/400_xowa/src/gplx/xowa/users/history/Xou_history_html.java index 399f8daa4..c79633cff 100644 --- a/400_xowa/src/gplx/xowa/users/history/Xou_history_html.java +++ b/400_xowa/src/gplx/xowa/users/history/Xou_history_html.java @@ -18,8 +18,8 @@ along with this program. If not, see . package gplx.xowa.users.history; import gplx.*; import gplx.xowa.*; import gplx.xowa.users.*; import gplx.core.brys.fmtrs.*; import gplx.xowa.specials.*; -public class Xou_history_html implements gplx.core.brys.Bfr_arg, Xows_page { - public Xows_special_meta Special__meta() {return Xows_special_meta_.Itm__page_history;} +public class Xou_history_html implements gplx.core.brys.Bfr_arg, Xow_special_page { + public Xow_special_meta Special__meta() {return Xow_special_meta_.Itm__page_history;} public void Special__gen(Xow_wiki wikii, Xoa_page pagei, Xoa_url url, Xoa_ttl ttl) { Xowe_wiki wiki = (Xowe_wiki)wikii; Xoae_page page = (Xoae_page)pagei; this.app = wiki.Appe(); this.mgr = app.Usere().History_mgr(); @@ -55,5 +55,5 @@ public class Xou_history_html implements gplx.core.brys.Bfr_arg, Xows_page { , " " ), "itm_wiki", "itm_page", "itm_count", "itm_last"); - public Xows_page Special__clone() {return this;} + public Xow_special_page Special__clone() {return this;} } diff --git a/400_xowa/src/gplx/xowa/users/history/Xou_history_mgr.java b/400_xowa/src/gplx/xowa/users/history/Xou_history_mgr.java index b2c2385b2..87fd8cdb5 100644 --- a/400_xowa/src/gplx/xowa/users/history/Xou_history_mgr.java +++ b/400_xowa/src/gplx/xowa/users/history/Xou_history_mgr.java @@ -16,13 +16,13 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.users.history; import gplx.*; import gplx.xowa.*; import gplx.xowa.users.*; -import gplx.core.primitives.*; import gplx.core.net.*; import gplx.xowa.htmls.hrefs.*; -public class Xou_history_mgr implements GfoInvkAble { - private final Xou_history_html html_mgr = new Xou_history_html(); private Xou_history_sorter sorter = new Xou_history_sorter().Sort_fld_(Xou_history_itm.Fld_view_end).Ascending_(false); - private final Io_url history_fil; +import gplx.core.primitives.*; import gplx.core.net.*; import gplx.core.net.qargs.*; import gplx.xowa.htmls.hrefs.*; +public class Xou_history_mgr implements Gfo_invk { + private final Xou_history_html html_mgr = new Xou_history_html(); private Xou_history_sorter sorter = new Xou_history_sorter().Sort_fld_(Xou_history_itm.Fld_view_end).Ascending_(false); + private final Io_url history_fil; private Ordered_hash itms = Ordered_hash_.New_bry(); private boolean load_chk = false; - private final Bry_bfr tmp_bfr = Bry_bfr.new_(); + private final Bry_bfr tmp_bfr = Bry_bfr_.New(); public Xou_history_mgr(Io_url history_fil) {this.history_fil = history_fil;} public int Len() {return itms.Count();} public void Clear() {itms.Clear();} @@ -71,7 +71,7 @@ public class Xou_history_mgr implements GfoInvkAble { private byte[] To_full_db_w_qargs(Xoa_url url, Xoa_ttl ttl) { byte[] page = Xoa_ttl.Replace_spaces(ttl.Full_txt_wo_qarg()); tmp_bfr.Add(page); - Gfo_qarg_mgr qarg_mgr = url.Qargs_mgr(); + Gfo_qarg_mgr_old qarg_mgr = url.Qargs_mgr(); qarg_mgr.To_bry(tmp_bfr, gplx.langs.htmls.encoders.Gfo_url_encoder_.Href, Bool_.N); return tmp_bfr.To_bry_and_clear(); } @@ -114,12 +114,12 @@ public class Xou_history_mgr implements GfoInvkAble { else if (ctx.Match(k, Invk_html_itm_)) html_mgr.Html_itm().Fmt_(m.ReadBry("v")); else if (ctx.Match(k, Invk_current_itms_max_)) current_itms_max = m.ReadInt("v"); else if (ctx.Match(k, Invk_current_itms_reset_)) current_itms_reset = m.ReadInt("v"); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } public static final String Invk_html_grp = "html_grp", Invk_html_grp_ = "html_grp_", Invk_html_itm = "html_itm", Invk_html_itm_ = "html_itm_", Invk_current_itms_max_ = "current_itms_max_", Invk_current_itms_reset_ = "current_itms_reset_"; - public static final byte[] Ttl_name = Bry_.new_a7("XowaPageHistory"); - public static final byte[] Ttl_full = Bry_.new_a7("Special:XowaPageHistory"); + public static final byte[] Ttl_name = Bry_.new_a7("XowaPageHistory"); + public static final byte[] Ttl_full = Bry_.new_a7("Special:XowaPageHistory"); } class Xou_history_itm_srl { public static void Load(byte[] ary, Ordered_hash list) { @@ -127,7 +127,7 @@ class Xou_history_itm_srl { list.Clear(); int aryLen = ary.length; if (aryLen == 0) return; // no file - Int_obj_ref pos = Int_obj_ref.zero_(); + Int_obj_ref pos = Int_obj_ref.New_zero(); while (true) { if (pos.Val() == aryLen) break; Xou_history_itm itm = Xou_history_itm.csv_(ary, pos); @@ -142,7 +142,7 @@ class Xou_history_itm_srl { catch (Exception e) {throw Err_.new_parse_exc(e, Xou_history_itm.class, String_.new_u8(ary));} } public static byte[] Save(Ordered_hash list) { - Bry_bfr bb = Bry_bfr.new_(); + Bry_bfr bb = Bry_bfr_.New(); int listLen = list.Count(); for (int i = 0; i < listLen; i++) ((Xou_history_itm)list.Get_at(i)).Save(bb); diff --git a/400_xowa/src/gplx/xowa/users/history/Xou_history_mgr_tst.java b/400_xowa/src/gplx/xowa/users/history/Xou_history_mgr_tst.java index bf259d0ec..fec2c3c11 100644 --- a/400_xowa/src/gplx/xowa/users/history/Xou_history_mgr_tst.java +++ b/400_xowa/src/gplx/xowa/users/history/Xou_history_mgr_tst.java @@ -85,7 +85,7 @@ class Xou_history_mgr_fxt { Tfds.Eq_ary_str(expd, actl); return this; } - public Xou_history_mgr_fxt Invk(String key, Object v) {GfoInvkAble_.InvkCmd_val(under, key, v); return this;} + public Xou_history_mgr_fxt Invk(String key, Object v) {Gfo_invk_.Invk_by_val(under, key, v); return this;} public Xou_history_mgr_fxt Save() {under.Save(app); return this;} public Xou_history_mgr_fxt Fil_tst(String expd_url, String expd) { String actl = Io_mgr.Instance.LoadFilStr(expd_url); diff --git a/400_xowa/src/gplx/xowa/users/history/Xoud_history_mgr.java b/400_xowa/src/gplx/xowa/users/history/Xoud_history_mgr.java index 4cd4cf5f2..faba42546 100644 --- a/400_xowa/src/gplx/xowa/users/history/Xoud_history_mgr.java +++ b/400_xowa/src/gplx/xowa/users/history/Xoud_history_mgr.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.xowa.users.history; import gplx.*; import gplx.xowa.*; import gplx.xowa.users.*; import gplx.core.threads.*; import gplx.dbs.*; import gplx.xowa.specials.*; -public class Xoud_history_mgr implements GfoInvkAble { +public class Xoud_history_mgr implements Gfo_invk { private Xoud_history_tbl history_tbl; public void Conn_(Db_conn conn, boolean created) { this.history_tbl = new Xoud_history_tbl(conn); @@ -41,16 +41,16 @@ public class Xoud_history_mgr implements GfoInvkAble { } public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_update)) Update(m.ReadStr("wiki"), m.ReadStr("page"), m.ReadStr("qarg")); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String Invk_update = "update"; public static boolean Skip_history(Xoa_ttl ttl) { byte[] page_db = ttl.Page_db(); return ( ttl.Ns().Id_is_special() && ( Bry_.Eq(page_db, gplx.xowa.users.history.Xou_history_mgr.Ttl_name) // do not add XowaPageHistory to history - || Bry_.Eq(page_db, Xows_special_meta_.Itm__popup_history.Key_bry()) - || Bry_.Eq(page_db, Xows_special_meta_.Itm__default_tab.Key_bry()) - || Bry_.Eq(page_db, Xows_special_meta_.Itm__page_history.Key_bry()) + || Bry_.Eq(page_db, Xow_special_meta_.Itm__popup_history.Key_bry()) + || Bry_.Eq(page_db, Xow_special_meta_.Itm__default_tab.Key_bry()) + || Bry_.Eq(page_db, Xow_special_meta_.Itm__page_history.Key_bry()) ) ); } diff --git a/400_xowa/src/gplx/xowa/users/history/Xoud_history_special.java b/400_xowa/src/gplx/xowa/users/history/Xoud_history_special.java index 4f7127089..073049da8 100644 --- a/400_xowa/src/gplx/xowa/users/history/Xoud_history_special.java +++ b/400_xowa/src/gplx/xowa/users/history/Xoud_history_special.java @@ -17,8 +17,8 @@ along with this program. If not, see . */ package gplx.xowa.users.history; import gplx.*; import gplx.xowa.*; import gplx.xowa.users.*; import gplx.xowa.specials.*; -public class Xoud_history_special implements Xows_page { - public Xows_special_meta Special__meta() {return Xows_special_meta_.Itm__page_history;} +public class Xoud_history_special implements Xow_special_page { + public Xow_special_meta Special__meta() {return Xow_special_meta_.Itm__page_history;} public void Special__gen(Xow_wiki wikii, Xoa_page pagei, Xoa_url url, Xoa_ttl ttl) { Xowe_wiki wiki = (Xowe_wiki)wikii; Xoae_page page = (Xoae_page)pagei; Xoa_app app = wiki.App(); @@ -29,5 +29,5 @@ public class Xoud_history_special implements Xows_page { page.Hdump_data().Body_(bfr.To_bry_and_rls()); } - public Xows_page Special__clone() {return this;} + public Xow_special_page Special__clone() {return this;} } diff --git a/400_xowa/src/gplx/xowa/users/history/Xoud_history_tbl.java b/400_xowa/src/gplx/xowa/users/history/Xoud_history_tbl.java index 355065350..b7911c118 100644 --- a/400_xowa/src/gplx/xowa/users/history/Xoud_history_tbl.java +++ b/400_xowa/src/gplx/xowa/users/history/Xoud_history_tbl.java @@ -18,9 +18,9 @@ along with this program. If not, see . package gplx.xowa.users.history; import gplx.*; import gplx.xowa.*; import gplx.xowa.users.*; import gplx.dbs.*; import gplx.dbs.qrys.*; import gplx.dbs.metas.*; import gplx.dbs.metas.updates.*; public class Xoud_history_tbl implements Rls_able { - private final String tbl_name = "user_history"; private final Dbmeta_fld_list flds = Dbmeta_fld_list.new_(); - private final String fld_id, fld_wiki, fld_url, fld_time, fld_count; - private final Db_conn conn; private Db_stmt stmt_select_by_page, stmt_select_by_top, stmt_insert, stmt_update, stmt_delete; + private final String tbl_name = "user_history"; private final Dbmeta_fld_list flds = new Dbmeta_fld_list(); + private final String fld_id, fld_wiki, fld_url, fld_time, fld_count; + private final Db_conn conn; private Db_stmt stmt_select_by_page, stmt_select_by_top, stmt_insert, stmt_update, stmt_delete; public Xoud_history_tbl(Db_conn conn) { this.conn = conn; fld_id = flds.Add_int_pkey_autonum("hist_id"); diff --git a/400_xowa/src/gplx/xowa/users/prefs/Prefs_converter.java b/400_xowa/src/gplx/xowa/users/prefs/Prefs_converter.java index 79a4c4f11..b9b24ec53 100644 --- a/400_xowa/src/gplx/xowa/users/prefs/Prefs_converter.java +++ b/400_xowa/src/gplx/xowa/users/prefs/Prefs_converter.java @@ -18,8 +18,8 @@ along with this program. If not, see . package gplx.xowa.users.prefs; import gplx.*; import gplx.xowa.*; import gplx.xowa.users.*; import gplx.xowa.apps.cfgs.*; public class Prefs_converter { - private Bry_bfr bfr = Bry_bfr.new_(); - private List_adp list = List_adp_.new_(); + private Bry_bfr bfr = Bry_bfr_.New(); + private List_adp list = List_adp_.New(); public void Check(Xoae_app app) { int options_version = app.Sys_cfg().Options_version(); if (options_version == 1) { @@ -105,7 +105,7 @@ public class Prefs_converter { Convert_msg(m.Subs_getAt(0), depth + 1); } } - public static final Prefs_converter Instance = new Prefs_converter(); Prefs_converter() {} + public static final Prefs_converter Instance = new Prefs_converter(); Prefs_converter() {} } class Prefs_converter_itm { public String Key() {return key;} public void Key_(String v) {this.key = v;} private String key; diff --git a/400_xowa/src/gplx/xowa/users/prefs/Prefs_html_wtr.java b/400_xowa/src/gplx/xowa/users/prefs/Prefs_html_wtr.java index 217ab478b..ddfaadb35 100644 --- a/400_xowa/src/gplx/xowa/users/prefs/Prefs_html_wtr.java +++ b/400_xowa/src/gplx/xowa/users/prefs/Prefs_html_wtr.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.xowa.users.prefs; import gplx.*; import gplx.xowa.*; import gplx.xowa.users.*; import gplx.langs.htmls.*; class Prefs_html_wtr { - public Prefs_html_wtr(Prefs_mgr prefs_mgr) {this.prefs_mgr = prefs_mgr;} Prefs_mgr prefs_mgr; Bry_bfr tmp_bfr = Bry_bfr.reset_(255); + public Prefs_html_wtr(Prefs_mgr prefs_mgr) {this.prefs_mgr = prefs_mgr;} Prefs_mgr prefs_mgr; Bry_bfr tmp_bfr = Bry_bfr_.Reset(255); public void Write(Bry_bfr bfr, byte[] src, Gfh_nde hnde, int prop_idx, byte[] trg_type, byte[] trg_val) { Object prop_val = Eval_prop_get(hnde); byte elem_type = Prefs_mgr.Elem_tid_tid_of(hnde); @@ -84,7 +84,7 @@ class Prefs_html_wtr { bfr.Add_str_a7("\", \"").Add(xowa_io_msg).Add_str_a7("\");'>"); bfr.Add_str_a7("...").Add_byte_nl(); } - private static final byte[] Atr_key_xowa_prop_list = Bry_.new_a7("xowa_prop_list") + private static final byte[] Atr_key_xowa_prop_list = Bry_.new_a7("xowa_prop_list") , Atr_stub_id = Bry_.new_a7(" id='xowa_prop_") , Atr_stub_value = Bry_.new_a7(" value='") , Atr_stub_checked = Bry_.new_a7(" checked='checked'") diff --git a/400_xowa/src/gplx/xowa/users/prefs/Prefs_mgr.java b/400_xowa/src/gplx/xowa/users/prefs/Prefs_mgr.java index 4ac7e17fa..008caf250 100644 --- a/400_xowa/src/gplx/xowa/users/prefs/Prefs_mgr.java +++ b/400_xowa/src/gplx/xowa/users/prefs/Prefs_mgr.java @@ -16,11 +16,12 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.users.prefs; import gplx.*; import gplx.xowa.*; import gplx.xowa.users.*; -import gplx.core.primitives.*; import gplx.core.brys.fmtrs.*; import gplx.core.net.*; import gplx.langs.htmls.*; import gplx.gfui.*; +import gplx.core.primitives.*; import gplx.core.brys.fmtrs.*; import gplx.core.net.*; import gplx.core.net.qargs.*; import gplx.langs.htmls.*; +import gplx.gfui.*; import gplx.gfui.controls.standards.*; import gplx.xowa.guis.views.*; import gplx.xowa.apps.urls.*; import gplx.xowa.parsers.*; -public class Prefs_mgr implements GfoInvkAble { +public class Prefs_mgr implements Gfo_invk { public Prefs_mgr(Xoae_app app) { this.app = app; atrs_hash = Hash_adp_bry.cs(); @@ -36,7 +37,7 @@ public class Prefs_mgr implements GfoInvkAble { if (props_get_fmtr == null) props_get_fmtr = Bry_fmtr.keys_().Eval_mgr_(app.Gfs_mgr().Eval_mgr()); src = this.Parse_wikitext_to_html(src); props_get_fmtr.Fmt_(src); - Bry_bfr bfr = Bry_bfr.new_(); + Bry_bfr bfr = Bry_bfr_.New(); try {src = props_get_fmtr.Fmt_(src).Bld_bry_none(bfr);} catch (Exception e) {src = Bry_.Add(src, Bry_.new_u8(Err_.Message_gplx_full(e)));} Gfh_nde[] hndes = html_rdr.Parse_as_ary(src); @@ -67,7 +68,7 @@ public class Prefs_mgr implements GfoInvkAble { hndes = Gfh_selecter.Select(src, hndes, atrs_hash); int len = hndes.length; boolean tidy_enabled = app.Html_mgr().Tidy_mgr().Enabled(); - Bry_bfr cmd_bfr = Bry_bfr.reset_(255); + Bry_bfr cmd_bfr = Bry_bfr_.Reset(255); for (int i = 0; i < len; i++) { Gfh_nde hnde = hndes[i]; Props_set_by_hnde(cmd_bfr, src, hnde, i, tidy_enabled); @@ -84,8 +85,8 @@ public class Prefs_mgr implements GfoInvkAble { switch (elem_tid) { case Elem_tid_input_text: case Elem_tid_input_xowa_io: - case Elem_tid_select: hnde_val = html_itm.Html_elem_atr_get_str(hnde_key, gplx.gfui.Gfui_html.Atr_value); break; - case Elem_tid_textarea: hnde_val = Gfh_utl.Unescape_as_str(html_itm.Html_elem_atr_get_str(hnde_key, gplx.gfui.Gfui_html.Atr_value)); break; + case Elem_tid_select: hnde_val = html_itm.Html_elem_atr_get_str(hnde_key, Gfui_html.Atr_value); break; + case Elem_tid_textarea: hnde_val = Gfh_utl.Unescape_as_str(html_itm.Html_elem_atr_get_str(hnde_key, Gfui_html.Atr_value)); break; case Elem_tid_input_checkbox: hnde_val = html_itm.Html_elem_atr_get_bool(hnde_key, "checked") ? "y" : "n"; break; } byte[] get_cmd = Props_get(eval_code); @@ -112,11 +113,11 @@ public class Prefs_mgr implements GfoInvkAble { public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_exec_get)) return Props_get(m.ReadBry("v")); else if (ctx.Match(k, Invk_save)) Props_set_and_reload(); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String Invk_exec_get = "exec_get", Invk_save = "save"; private static final byte Tid_prop = 0, Tid_prop_get = 1, Tid_prop_set = 2; - public static final byte[] Bry_prop = Bry_.new_a7("xowa_prop"), Bry_prop_get = Bry_.new_a7("xowa_prop_get"), Bry_prop_set = Bry_.new_a7("xowa_prop_set"), Bry_id = Bry_.new_a7("id"); + public static final byte[] Bry_prop = Bry_.new_a7("xowa_prop"), Bry_prop_get = Bry_.new_a7("xowa_prop_get"), Bry_prop_set = Bry_.new_a7("xowa_prop_set"), Bry_id = Bry_.new_a7("id"); public static byte Elem_tid_tid_of(Gfh_nde hnde) { byte[] elem_name = Bry_.Mid(hnde.Src(), hnde.Name_bgn(), hnde.Name_end()); if (Bry_.Eq(elem_name, Nde_textarea)) return Elem_tid_textarea; @@ -131,7 +132,7 @@ public class Prefs_mgr implements GfoInvkAble { else return Elem_tid_null; } else return Elem_tid_null; - } static final byte[] Input_type = Bry_.new_a7("type"), Nde_input = Bry_.new_a7("input"), Nde_textarea = Bry_.new_a7("textarea"), Nde_select = Bry_.new_a7("select"), Type_text = Bry_.new_a7("text"), Type_checkbox = Bry_.new_a7("checkbox"), Type_combo = Bry_.new_a7("xowa_combo"), Type_xowa_io = Bry_.new_a7("xowa_io"); + } static final byte[] Input_type = Bry_.new_a7("type"), Nde_input = Bry_.new_a7("input"), Nde_textarea = Bry_.new_a7("textarea"), Nde_select = Bry_.new_a7("select"), Type_text = Bry_.new_a7("text"), Type_checkbox = Bry_.new_a7("checkbox"), Type_combo = Bry_.new_a7("xowa_combo"), Type_xowa_io = Bry_.new_a7("xowa_io"); public static String Scrub_tidy_trailing_nl_in_textarea(boolean tidy_enabled, byte elem_tid, String val) { return // if tidy_enabled and text_area and ends with \n, then remove \n; DATE:2014-06-21 ( tidy_enabled @@ -145,7 +146,7 @@ public class Prefs_mgr implements GfoInvkAble { public static final byte Elem_tid_null = 0, Elem_tid_input_text = 1, Elem_tid_textarea = 2, Elem_tid_input_checkbox = 3, Elem_tid_select = 4, Elem_tid_input_combo = 5, Elem_tid_input_xowa_io = 6; } class Prefs_trg_mgr { - private Gfo_qarg_mgr arg_hash = new Gfo_qarg_mgr(); + private Gfo_qarg_mgr_old arg_hash = new Gfo_qarg_mgr_old(); public byte[] Trg_type() {return trg_type;} private byte[] trg_type; public byte[] Trg_val() {return trg_val;} private byte[] trg_val; public void Init(Xoa_url url) { @@ -153,5 +154,5 @@ class Prefs_trg_mgr { trg_type = arg_hash.Get_val_bry_or(Prefs_trg_mgr.Arg_option_trg_type_bry, null); trg_val = arg_hash.Get_val_bry_or(Prefs_trg_mgr.Arg_option_trg_val_bry, null); } - public static final byte[] Arg_option_trg_type_bry = Bry_.new_a7("option_trg_type"), Arg_option_trg_val_bry = Bry_.new_a7("option_trg_val"); + public static final byte[] Arg_option_trg_type_bry = Bry_.new_a7("option_trg_type"), Arg_option_trg_val_bry = Bry_.new_a7("option_trg_val"); } diff --git a/400_xowa/src/gplx/xowa/users/prefs/Prefs_mgr_tst.java b/400_xowa/src/gplx/xowa/users/prefs/Prefs_mgr_tst.java index 51af0831b..64fec02c1 100644 --- a/400_xowa/src/gplx/xowa/users/prefs/Prefs_mgr_tst.java +++ b/400_xowa/src/gplx/xowa/users/prefs/Prefs_mgr_tst.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.users.prefs; import gplx.*; import gplx.xowa.*; import gplx.xowa.users.*; import org.junit.*; -import gplx.gfui.*; import gplx.xowa.apps.gfs.*; import gplx.langs.gfs.*; +import gplx.gfui.*; import gplx.gfui.controls.standards.*; import gplx.xowa.apps.gfs.*; import gplx.langs.gfs.*; import gplx.xowa.guis.views.*; public class Prefs_mgr_tst { private Prefs_mgr_fxt fxt = new Prefs_mgr_fxt(); @@ -143,7 +143,7 @@ class Prefs_mgr_fxt { } public Xop_fxt Parser_fxt() {return new Xop_fxt(app, app.Usere().Wiki());} public Prefs_mgr_fxt Init_elem_atr_val(String elem_id, String atr_val) { - html_box.Html_elem_atr_add(elem_id, gplx.gfui.Gfui_html.Atr_value, atr_val); + html_box.Html_elem_atr_add(elem_id, Gfui_html.Atr_value, atr_val); return this; } public Prefs_mgr_fxt Init_elem_atr_checked(String elem_id, String v) { @@ -151,7 +151,7 @@ class Prefs_mgr_fxt { return this; } public Prefs_mgr_fxt Init_elem_atr_innerHtml(String elem_id, String v) { - html_box.Html_elem_atr_add(elem_id, gplx.gfui.Gfui_html.Atr_innerHTML, v); + html_box.Html_elem_atr_add(elem_id, Gfui_html.Atr_innerHTML, v); return this; } public Prefs_mgr_fxt Exec_get(String src_str, String expd) { @@ -173,7 +173,7 @@ class Prefs_mgr_fxt { Tfds.Eq(expd, actl); } } -class Gfui_html_mok extends Xog_html_itm { private Hash_adp elem_atrs = Hash_adp_.new_(); +class Gfui_html_mok extends Xog_html_itm { private Hash_adp elem_atrs = Hash_adp_.New(); public void Html_elem_atr_add(String elem_id, String atr_key, Object atr_val) {elem_atrs.Add_if_dupe_use_nth(elem_id + "." + atr_key, atr_val);} @Override public String Html_elem_atr_get_str(String id, String atr_key) { return (String)elem_atrs.Get_by(id + "." + atr_key); diff --git a/400_xowa/src/gplx/xowa/users/prefs/Prefs_rename_mgr.java b/400_xowa/src/gplx/xowa/users/prefs/Prefs_rename_mgr.java index 2eef883c7..1d40e882b 100644 --- a/400_xowa/src/gplx/xowa/users/prefs/Prefs_rename_mgr.java +++ b/400_xowa/src/gplx/xowa/users/prefs/Prefs_rename_mgr.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.users.prefs; import gplx.*; import gplx.xowa.*; import gplx.xowa.users.*; public class Prefs_rename_mgr { - private List_adp list = List_adp_.new_(); + private List_adp list = List_adp_.New(); public Prefs_rename_mgr() { List_add(list, "app.cfgs.get('app.gui.html.portal.wikis.visible', 'app').val", "app.cfgs.get('xowa.api.html.page.toggles.get(''offline-wikis'').visible', 'app').val"); } @@ -38,7 +38,7 @@ public class Prefs_rename_mgr { return cur_str_changed; } private static void List_add(List_adp list, String src, String trg) {list.Add(new Prefs_rename_itm(src, trg));} - public static final Prefs_rename_mgr Instance = new Prefs_rename_mgr(); + public static final Prefs_rename_mgr Instance = new Prefs_rename_mgr(); } class Prefs_rename_itm { public Prefs_rename_itm(String src, String trg) {this.src = src; this.trg = trg;} diff --git a/400_xowa/src/gplx/xowa/users/wikis/Xofs_url_itm_parser.java b/400_xowa/src/gplx/xowa/users/wikis/Xofs_url_itm_parser.java index b0c55a245..48d8a70c8 100644 --- a/400_xowa/src/gplx/xowa/users/wikis/Xofs_url_itm_parser.java +++ b/400_xowa/src/gplx/xowa/users/wikis/Xofs_url_itm_parser.java @@ -23,9 +23,9 @@ class Xofs_url_itm { public String Url() {return url;} public void Url_(String v) {url = v;} private String url; } class Xofs_url_itm_parser { - private static final byte[] Xowa_fs_protocol = Bry_.new_a7("xowa-fs://"); - private static final int Xowa_fa_protocol_len = Xowa_fs_protocol.length; - private Bry_bfr url_bfr = Bry_bfr.reset_(16); + private static final byte[] Xowa_fs_protocol = Bry_.new_a7("xowa-fs://"); + private static final int Xowa_fa_protocol_len = Xowa_fs_protocol.length; + private Bry_bfr url_bfr = Bry_bfr_.Reset(16); private Hash_adp_bry names = Hash_adp_bry.cs(); public byte Dir_spr() {return dir_spr;} public void Dir_spr_(byte v) {dir_spr = v;} private byte dir_spr = Op_sys.Cur().Fsys_dir_spr_byte(); public void Names_add(String key_str, String val_str) { diff --git a/400_xowa/src/gplx/xowa/wikis/Xoa_wiki_mgr.java b/400_xowa/src/gplx/xowa/wikis/Xoa_wiki_mgr.java index cc2cfc0c8..7c4fb5fc5 100644 --- a/400_xowa/src/gplx/xowa/wikis/Xoa_wiki_mgr.java +++ b/400_xowa/src/gplx/xowa/wikis/Xoa_wiki_mgr.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.wikis; import gplx.*; import gplx.xowa.*; -public interface Xoa_wiki_mgr { +public interface Xoa_wiki_mgr extends Gfo_invk { int Count(); boolean Has(byte[] key); Xow_wiki Get_at(int idx); diff --git a/400_xowa/src/gplx/xowa/wikis/Xoa_wiki_mgr_.java b/400_xowa/src/gplx/xowa/wikis/Xoa_wiki_mgr_.java index 01daee82f..e8d2665ce 100644 --- a/400_xowa/src/gplx/xowa/wikis/Xoa_wiki_mgr_.java +++ b/400_xowa/src/gplx/xowa/wikis/Xoa_wiki_mgr_.java @@ -26,8 +26,12 @@ public class Xoa_wiki_mgr_ { Io_url wiki_root_dir = url.OwnerDir(); Xow_wiki rv = wiki_mgr.Make(wiki_domain, wiki_root_dir); wiki_mgr.Add(rv); - // byte[] modified_last = cfg_tbl.Select_bry(Xow_cfg_consts.Grp__wiki_init, "props.modified_latest"); - app.User().User_db_mgr().Site_mgr().Import(rv.Domain_str(), rv.Domain_str(), wiki_root_dir.Raw(), ""); + rv.Init_by_wiki(); // must init for Modified_latest + String wiki_date = rv.Props().Modified_latest__yyyy_MM_dd(); + app.User().User_db_mgr().Site_mgr().Import(rv.Domain_str(), rv.Domain_str(), wiki_root_dir.Raw(), wiki_date, ""); + conn.Rls_conn(); + rv.Init_needed_y_(); // rls wiki else noop connection will hang around return rv; } + public static final String Invk__import_by_url = "import_by_url"; } diff --git a/400_xowa/src/gplx/xowa/wikis/Xoae_wiki_mgr.java b/400_xowa/src/gplx/xowa/wikis/Xoae_wiki_mgr.java index 5dc1707fb..9fffa00eb 100644 --- a/400_xowa/src/gplx/xowa/wikis/Xoae_wiki_mgr.java +++ b/400_xowa/src/gplx/xowa/wikis/Xoae_wiki_mgr.java @@ -18,9 +18,9 @@ along with this program. If not, see . package gplx.xowa.wikis; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*; import gplx.xowa.xtns.wdatas.*; import gplx.xowa.wikis.domains.*; import gplx.xowa.wikis.domains.crts.*; import gplx.xowa.wikis.nss.*; import gplx.xowa.wikis.metas.*; -public class Xoae_wiki_mgr implements Xoa_wiki_mgr, GfoInvkAble { +public class Xoae_wiki_mgr implements Xoa_wiki_mgr, Gfo_invk { private final Xoae_app app; - private final List_adp list = List_adp_.new_(); private final Hash_adp_bry hash = Hash_adp_bry.ci_a7(); // ASCII:url_domain; EX:en.wikipedia.org + private final List_adp list = List_adp_.New(); private final Hash_adp_bry hash = Hash_adp_bry.ci_a7(); // ASCII:url_domain; EX:en.wikipedia.org public Xoae_wiki_mgr(Xoae_app app) { this.app = app; this.wiki_regy = new Xoa_wiki_regy(app); @@ -94,12 +94,13 @@ public class Xoae_wiki_mgr implements Xoa_wiki_mgr, GfoInvkAble { } } public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { - if (ctx.Match(k, Invk_get)) return Get_by_or_make(m.ReadBry("v")); - else if (ctx.Match(k, Invk_scripts)) return scripts; - else if (ctx.Match(k, Invk_wdata)) return wdata_mgr; - else if (ctx.Match(k, Invk_len)) return this.Count(); - else if (ctx.Match(k, Invk_get_at)) return this.Get_at_or_null(m.ReadInt("v")); - else return GfoInvkAble_.Rv_unhandled; + if (ctx.Match(k, Invk_get)) return Get_by_or_make(m.ReadBry("v")); + else if (ctx.Match(k, Invk_scripts)) return scripts; + else if (ctx.Match(k, Invk_wdata)) return wdata_mgr; + else if (ctx.Match(k, Invk_len)) return this.Count(); + else if (ctx.Match(k, Invk_get_at)) return this.Get_at_or_null(m.ReadInt("v")); + else if (ctx.Match(k, Xoa_wiki_mgr_.Invk__import_by_url)) return this.Import_by_url(m.ReadIoUrl("v")); + else return Gfo_invk_.Rv_unhandled; } private static final String Invk_get = "get", Invk_scripts = "scripts", Invk_wdata = "wdata"; private static final String Invk_len = "len", Invk_get_at = "get_at"; } diff --git a/400_xowa/src/gplx/xowa/wikis/Xow_fsys_mgr.java b/400_xowa/src/gplx/xowa/wikis/Xow_fsys_mgr.java index 419710f6c..3e7a31f7f 100644 --- a/400_xowa/src/gplx/xowa/wikis/Xow_fsys_mgr.java +++ b/400_xowa/src/gplx/xowa/wikis/Xow_fsys_mgr.java @@ -20,47 +20,7 @@ public class Xow_fsys_mgr { public Xow_fsys_mgr(Io_url root_dir, Io_url file_dir) { this.root_dir = root_dir; this.file_dir = file_dir; this.tmp_dir = root_dir.GenSubDir("tmp"); } - public Io_url Root_dir() {return root_dir;} private final Io_url root_dir; - public Io_url File_dir() {return file_dir;} private final Io_url file_dir; - public Io_url Tmp_dir() {return tmp_dir;} private final Io_url tmp_dir; - - public static Io_url Find_core_fil(Xow_wiki wiki) {return Find_core_fil(wiki.Fsys_mgr().Root_dir(), wiki.Domain_str());} - public static Io_url Find_core_fil(Io_url wiki_root_dir, String domain_str) { - Io_url[] ary = Io_mgr.Instance.QueryDir_fils(wiki_root_dir); - int ary_len = ary.length; if (ary.length == 0) return null; - Io_url rv = Find_core_fil__xowa(ary, ary_len, domain_str); - return rv == null ? Find_core_fil__sqlite3(wiki_root_dir, ary, ary_len, domain_str) : rv; - } - private static Io_url Find_core_fil__xowa(Io_url[] ary, int ary_len, String domain_str) { - for (int i = 0; i < ary_len; i++) { - Io_url itm = ary[i]; - if (!String_.Eq(itm.Ext(), ".xowa")) continue; - if ( String_.Eq(itm.NameOnly(), domain_str) // EX: "en.wikipedia.org" - || String_.Eq(itm.NameOnly(), domain_str + "-text") // EX: "en.wikipedia.org-text" - || String_.Eq(itm.NameOnly(), domain_str + "-core") // EX: "en.wikipedia.org-core" - ) { - Xoa_app_.Usr_dlg().Log_many("", "", "wiki.db_core.v2: url=~{0}", itm.Raw()); - return itm; - } - } - return null; - } - private static Io_url Find_core_fil__sqlite3(Io_url wiki_root_dir, Io_url[] ary, int ary_len, String domain_str) { - Io_url rv = null; - String v0_str = domain_str + ".000"; - for (int i = 0; i < ary_len; i++) { - Io_url itm = ary[i]; - if (!String_.Eq(itm.Ext(), ".sqlite3")) continue; - if (String_.Eq(itm.NameOnly(), v0_str)) { // EX: "en.wikipedia.org.000" - Xoa_app_.Usr_dlg().Log_many("", "", "wiki.db_core.v1: url=~{0}", itm.Raw()); - return itm; - } - if (ary_len == 1) { - Xoa_app_.Usr_dlg().Log_many("", "", "wiki.db_core.custom: url=~{0}", itm.Raw()); - return rv; // 1 folder and 1 sqlite file; return it; custom wikis? - } - } - Xoa_app_.Usr_dlg().Log_many("", "", "wiki.db_core.none: dir=~{0}", wiki_root_dir.Raw()); - return rv; - } + public Io_url Root_dir() {return root_dir;} private final Io_url root_dir; + public Io_url File_dir() {return file_dir;} private final Io_url file_dir; + public Io_url Tmp_dir() {return tmp_dir;} private final Io_url tmp_dir; } diff --git a/400_xowa/src/gplx/xowa/wikis/Xowv_repo_mgr.java b/400_xowa/src/gplx/xowa/wikis/Xowv_repo_mgr.java index 87a5726af..cca000765 100644 --- a/400_xowa/src/gplx/xowa/wikis/Xowv_repo_mgr.java +++ b/400_xowa/src/gplx/xowa/wikis/Xowv_repo_mgr.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.xowa.wikis; import gplx.*; import gplx.xowa.*; import gplx.xowa.files.repos.*; public class Xowv_repo_mgr implements Xow_repo_mgr { - private final List_adp repos = List_adp_.new_(); + private final List_adp repos = List_adp_.New(); public Xof_repo_pair[] Repos_ary() {return (Xof_repo_pair[])repos.To_ary(Xof_repo_pair.class);} public Xof_repo_pair Repos_get_by_wiki(byte[] wiki) { int len = repos.Count(); diff --git a/400_xowa/src/gplx/xowa/wikis/Xowv_wiki.java b/400_xowa/src/gplx/xowa/wikis/Xowv_wiki.java index 919410fc7..f131b21af 100644 --- a/400_xowa/src/gplx/xowa/wikis/Xowv_wiki.java +++ b/400_xowa/src/gplx/xowa/wikis/Xowv_wiki.java @@ -23,13 +23,14 @@ import gplx.xowa.guis.*; import gplx.xowa.langs.*; import gplx.xowa.langs.cases.*; import gplx.xowa.files.*; import gplx.xowa.files.origs.*; import gplx.xowa.files.fsdb.*; import gplx.xowa.files.bins.*; import gplx.xowa.wikis.domains.*; import gplx.xowa.wikis.metas.*; import gplx.xowa.wikis.data.site_stats.*; import gplx.xowa.wikis.data.*; import gplx.xowa.files.repos.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.wikis.xwikis.*; import gplx.xowa.wikis.ttls.*; import gplx.xowa.addons.*; -import gplx.xowa.htmls.*; import gplx.xowa.htmls.core.htmls.utls.*; import gplx.xowa.htmls.core.*; import gplx.xowa.htmls.core.hzips.*; import gplx.xowa.htmls.css.*; import gplx.xowa.htmls.bridges.dbuis.tbls.*; +import gplx.xowa.htmls.*; import gplx.xowa.htmls.core.htmls.utls.*; import gplx.xowa.htmls.core.*; import gplx.xowa.htmls.core.hzips.*; import gplx.xowa.htmls.bridges.dbuis.tbls.*; import gplx.xowa.wikis.nss.*; import gplx.xowa.parsers.*; import gplx.xowa.apps.urls.*; import gplx.fsdb.*; import gplx.fsdb.meta.*; -import gplx.xowa.addons.apps.specials.*; -public class Xowv_wiki implements Xow_wiki, Xow_ttl_parser, GfoInvkAble { +import gplx.xowa.specials.mgrs.*; +import gplx.xowa.addons.wikis.htmls.css.bldrs.*; import gplx.xowa.addons.wikis.htmls.css.mgrs.*; +public class Xowv_wiki implements Xow_wiki, Xow_ttl_parser, Gfo_invk { private final Xof_fsdb_mgr__sql fsdb_mgr; private Fsdb_db_mgr db_core_mgr; private boolean init_needed = true; public Xowv_wiki(Xoav_app app, byte[] domain_bry, Io_url wiki_root_dir) { @@ -56,7 +57,7 @@ public class Xowv_wiki implements Xow_wiki, Xow_ttl_parser, GfoInvkAble { public byte[] Domain_abrv() {return domain_abrv;} private final byte[] domain_abrv; public Xow_ns_mgr Ns_mgr() {return ns_mgr;} private final Xow_ns_mgr ns_mgr; public Xow_fsys_mgr Fsys_mgr() {return fsys_mgr;} private Xow_fsys_mgr fsys_mgr; - public Xowd_db_mgr Data__core_mgr() {return data_mgr__core_mgr;} private Xowd_db_mgr data_mgr__core_mgr; + public Xow_db_mgr Data__core_mgr() {return data_mgr__core_mgr;} private Xow_db_mgr data_mgr__core_mgr; public Xow_repo_mgr File__repo_mgr() {return file_mgr__repo_mgr;} private Xowv_repo_mgr file_mgr__repo_mgr = new Xowv_repo_mgr(); public Xof_fsdb_mode File__fsdb_mode() {return file_mgr__fsdb_mode;} private final Xof_fsdb_mode file_mgr__fsdb_mode = Xof_fsdb_mode.new_v2_gui(); public Fsdb_db_mgr File__fsdb_core() {return db_core_mgr;} @@ -74,30 +75,33 @@ public class Xowv_wiki implements Xow_wiki, Xow_ttl_parser, GfoInvkAble { public Xow_site_stats_mgr Stats() {return stats;} private final Xow_site_stats_mgr stats; public Xow_url_parser Utl__url_parser() {return url__parser;} private final Xow_url_parser url__parser; public Xoax_addon_mgr Addon_mgr() {return addon_mgr;} private final Xoax_addon_mgr addon_mgr = new Xoax_addon_mgr(); - public Xosp_special_mgr Special_mgr() {return special_mgr;} private Xosp_special_mgr special_mgr; + public Xosp_special_mgr Special_mgr() {return special_mgr;} private Xosp_special_mgr special_mgr; public Xow_xwiki_mgr Xwiki_mgr() {return xwiki_mgr;} private final Xow_xwiki_mgr xwiki_mgr; public Xoav_app Appv() {return app;} private final Xoav_app app; public void Init_by_wiki() { if (!init_needed) return; init_needed = false; - if (String_.Eq(domain_str, "xowa")) return; // FIXME: ignore "xowa" for now; WHEN:converting xowa to sqlitedb - data_mgr__core_mgr = new Xowd_db_mgr(this, fsys_mgr.Root_dir(), domain_itm); - Io_url core_url = gplx.xowa.wikis.Xow_fsys_mgr.Find_core_fil(fsys_mgr.Root_dir(), domain_str); - data_mgr__core_mgr.Init_by_load(core_url); + if (String_.Eq(domain_str, "xowa")) return; // HACK: ignore "xowa" for now; WHEN:converting xowa to sqlitedb + data_mgr__core_mgr = new Xow_db_mgr(this, fsys_mgr.Root_dir()); + data_mgr__core_mgr.Init_by_load(gplx.xowa.wikis.data.Xow_db_file__core_.Find_core_fil(this)); app.Html__css_installer().Install(this, Xowd_css_core_mgr.Key_mobile); // must init after data_mgr this.db_core_mgr = Fsdb_db_mgr_.new_detect(this, fsys_mgr.Root_dir(), fsys_mgr.File_dir()); - if (db_core_mgr != null) // will be null for xowa db + if (db_core_mgr == null) // no fsdb; occurs during merge; also, will be null for xowa_db; DATE:2016-05-31 + db_core_mgr = Fsdb_db_mgr__v2_bldr.Get_or_make(this, true); + else // fsdb exists; load it fsdb_mgr.Mnt_mgr().Ctor_by_load(db_core_mgr); file_mgr__repo_mgr.Add_repo(app, fsys_mgr.File_dir(), Xow_domain_itm_.Bry__commons, Xow_domain_itm_.Bry__commons); file_mgr__repo_mgr.Add_repo(app, fsys_mgr.File_dir(), domain_bry, domain_bry); - orig_mgr.Init_by_wiki(this, file_mgr__fsdb_mode, db_core_mgr.File__orig_tbl_ary(), Xof_url_bldr.new_v2()); + Xof_orig_tbl[] orig_tbls = db_core_mgr == null ? new Xof_orig_tbl[0] : db_core_mgr.File__orig_tbl_ary(); + orig_mgr.Init_by_wiki(this, file_mgr__fsdb_mode, orig_tbls, Xof_url_bldr.new_v2()); fsdb_mgr.Init_by_wiki(this); data_mgr__core_mgr.Db__core().Tbl__ns().Select_all(ns_mgr); data_mgr__core_mgr.Db__core().Tbl__site_stats().Select(stats); html__hdump_mgr.Init_by_db(this); } + public void Init_by_wiki__force() {init_needed = true; Init_by_wiki();} public void Init_by_make(Xowd_core_db_props props, gplx.xowa.bldrs.infos.Xob_info_session info_session) { - data_mgr__core_mgr = new Xowd_db_mgr(this, fsys_mgr.Root_dir(), domain_itm); + data_mgr__core_mgr = new Xow_db_mgr(this, fsys_mgr.Root_dir()); data_mgr__core_mgr.Init_by_make(props, info_session); html__hdump_mgr.Init_by_db(this); } @@ -115,5 +119,6 @@ public class Xowv_wiki implements Xow_wiki, Xow_ttl_parser, GfoInvkAble { byte[] raw = Bry_.Add(ns.Name_db_w_colon(), ttl); return Xoa_ttl.parse(app.Utl__bfr_mkr(), app.Utl_amp_mgr(), app.Utl_case_mgr(), xwiki_mgr, ns_mgr, app.Utl_msg_log(), raw, 0, raw.length); } + public void Init_needed_y_() {this.init_needed = true;} public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {throw Err_.new_unimplemented_w_msg("implemented for Xoa_cfg_mgr");} } diff --git a/400_xowa/src/gplx/xowa/wikis/caches/Xow_cache_mgr.java b/400_xowa/src/gplx/xowa/wikis/caches/Xow_cache_mgr.java index 99cf9df43..59863bc77 100644 --- a/400_xowa/src/gplx/xowa/wikis/caches/Xow_cache_mgr.java +++ b/400_xowa/src/gplx/xowa/wikis/caches/Xow_cache_mgr.java @@ -29,10 +29,10 @@ public class Xow_cache_mgr { public Xow_page_cache Page_cache() {return page_cache;} private Xow_page_cache page_cache; public Xow_defn_cache Defn_cache() {return defn_cache;} private Xow_defn_cache defn_cache; public Xow_defn_cache Lst_cache() {return lst_cache;} private Xow_defn_cache lst_cache; - public Hash_adp Misc_cache() {return misc_cache;} private final Hash_adp misc_cache = Hash_adp_.new_(); + public Hash_adp Misc_cache() {return misc_cache;} private final Hash_adp misc_cache = Hash_adp_.New(); public Keyval[] Scrib_lang_names() { if (scrib_lang_names == null) { - List_adp list = List_adp_.new_(); + List_adp list = List_adp_.New(); Xoa_sitelink_itm_mgr itm_mgr = wiki.App().Xwiki_mgr__sitelink_mgr().Itm_mgr(); int len = itm_mgr.Len(); for (int i = 0; i < len; ++i) { diff --git a/400_xowa/src/gplx/xowa/wikis/caches/Xow_defn_cache.java b/400_xowa/src/gplx/xowa/wikis/caches/Xow_defn_cache.java index dd341f279..6b7b275f3 100644 --- a/400_xowa/src/gplx/xowa/wikis/caches/Xow_defn_cache.java +++ b/400_xowa/src/gplx/xowa/wikis/caches/Xow_defn_cache.java @@ -22,7 +22,7 @@ import gplx.xowa.wikis.nss.*; import gplx.xowa.parsers.tmpls.*; public class Xow_defn_cache { // stores compiled Xot_defn private Xol_lang_itm lang; // needed to lowercase names; - private Bry_bfr upper_1st_bfr = Bry_bfr.reset_(255); + private Bry_bfr upper_1st_bfr = Bry_bfr_.Reset(255); private Gfo_cache_mgr cache = new Gfo_cache_mgr().Max_size_(64 * 1024 * 1024).Reduce_by_(32 * 1024 * 1024); public Xow_defn_cache(Xol_lang_itm lang) {this.lang = lang;} public Xot_defn Get_by_key(byte[] name) {return (Xot_defn)cache.Get_by_key(name);} diff --git a/400_xowa/src/gplx/xowa/wikis/caches/Xow_page_cache.java b/400_xowa/src/gplx/xowa/wikis/caches/Xow_page_cache.java index 06c4de494..d37c065f8 100644 --- a/400_xowa/src/gplx/xowa/wikis/caches/Xow_page_cache.java +++ b/400_xowa/src/gplx/xowa/wikis/caches/Xow_page_cache.java @@ -28,7 +28,7 @@ public class Xow_page_cache { byte[] ttl_full_db = ttl.Full_db(); Xow_page_cache_itm rv = (Xow_page_cache_itm)cache.Get_by_bry(ttl_full_db); if (rv == null) { - Xoae_page page = wiki.Data_mgr().Get_page(ttl, true); // NOTE: do not call Db_mgr.Load_page; need to handle redirects + Xoae_page page = wiki.Data_mgr().Load_page_by_ttl(ttl); // NOTE: do not call Db_mgr.Load_page; need to handle redirects if (!page.Missing()) { rv = new Xow_page_cache_itm(page.Ttl(), page.Data_raw(), page.Redirected_src()); cache.Add_bry_obj(ttl_full_db, rv); @@ -36,5 +36,18 @@ public class Xow_page_cache { } return rv; } + public Xow_page_cache_itm Get_or_load_as_itm_2(Xoa_ttl ttl) { // NOTE: same as Get_or_load_as_itm, but handles redirects to missing pages; DATE:2016-05-02 + byte[] ttl_full_db = ttl.Full_db(); + Xow_page_cache_itm rv = (Xow_page_cache_itm)cache.Get_by_bry(ttl_full_db); + if (rv == null) { + Xoae_page page = wiki.Data_mgr().Load_page_by_ttl(ttl); // NOTE: do not call Db_mgr.Load_page; need to handle redirects + if ( !page.Missing() // page exists + || page.Redirected_src() != null) { // page redirects to missing page; note that page.Missing == true and page.Redirected_src() != null; PAGE: en.w:Shah_Rukh_Khan; DATE:2016-05-02 + rv = new Xow_page_cache_itm(page.Ttl(), page.Data_raw(), page.Redirected_src()); + cache.Add_bry_obj(ttl_full_db, rv); + } + } + return rv; + } public void Free_mem_all() {cache.Clear();} } diff --git a/400_xowa/src/gplx/xowa/wikis/ctgs/Xoa_ctg_mgr.java b/400_xowa/src/gplx/xowa/wikis/ctgs/Xoa_ctg_mgr.java index e49a274e2..81181aac7 100644 --- a/400_xowa/src/gplx/xowa/wikis/ctgs/Xoa_ctg_mgr.java +++ b/400_xowa/src/gplx/xowa/wikis/ctgs/Xoa_ctg_mgr.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.wikis.ctgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; -public class Xoa_ctg_mgr implements GfoInvkAble { +public class Xoa_ctg_mgr implements Gfo_invk { public void Init_by_app(Xoae_app app) { pagectgs_wtr = new Xoctg_pagelist_wtr().Init_by_app(app); } @@ -37,13 +37,13 @@ public class Xoa_ctg_mgr implements GfoInvkAble { else if (ctx.Match(k, Invk_missing_ctg_cls_list)) return Options_missing_ctg_cls_list; else if (ctx.Match(k, Invk_pagecats_grouping_enabled)) return Yn.To_str(pagecats_grouping_enabled); else if (ctx.Match(k, Invk_pagecats_grouping_enabled_)) pagecats_grouping_enabled = m.ReadYn("v"); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String Invk_missing_ctg_cls = "missing_ctg_cls", Invk_missing_ctg_cls_ = "missing_ctg_cls_", Invk_missing_ctg_cls_list = "missing_ctg_cls_list", Invk_pagecats_grouping_enabled = "pagecats_grouping_enabled", Invk_pagecats_grouping_enabled_ = "pagecats_grouping_enabled_"; private static final byte Missing_ctg_cls_normal_tid = 0, Missing_ctg_cls_hide_tid = 1, Missing_ctg_cls_red_tid = 2; private static final String Missing_ctg_cls_normal_str = "normal", Missing_ctg_cls_hide_str = "hide", Missing_ctg_cls_red_str = "red_link"; - private static final byte[] Missing_ctg_cls_normal_css = Bry_.new_a7(".xowa-missing-category-entry {}"), Missing_ctg_cls_hide_css = Bry_.new_a7(".xowa-missing-category-entry {display: none;}"), Missing_ctg_cls_red_css = Bry_.new_a7(".xowa-missing-category-entry {color: red;}"); + private static final byte[] Missing_ctg_cls_normal_css = Bry_.new_a7(".xowa-missing-category-entry {}"), Missing_ctg_cls_hide_css = Bry_.new_a7(".xowa-missing-category-entry {display: none;}"), Missing_ctg_cls_red_css = Bry_.new_a7(".xowa-missing-category-entry {color: red;}"); private static Keyval[] Options_missing_ctg_cls_list = Keyval_.Ary(Keyval_.new_(Missing_ctg_cls_normal_str), Keyval_.new_(Missing_ctg_cls_hide_str), Keyval_.new_(Missing_ctg_cls_red_str)); private static byte Missing_ctg_cls_tid_parse(String v) { if (String_.Eq(v, Missing_ctg_cls_normal_str)) return Missing_ctg_cls_normal_tid; @@ -63,5 +63,5 @@ public class Xoa_ctg_mgr implements GfoInvkAble { public static final byte Tid_null = Byte_.Max_value_127, Tid_subc = 0, Tid_file = 1, Tid_page = 2, Tid__max = 3; public static final byte Hidden_n = Byte_.Zero, Hidden_y = (byte)1; public static final String Html__cls__str = "CategoryTreeLabel CategoryTreeLabelNs14 CategoryTreeLabelCategory"; - public static final byte[] Html__cls__bry = Bry_.new_a7(Html__cls__str); + public static final byte[] Html__cls__bry = Bry_.new_a7(Html__cls__str); } diff --git a/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_html_mgr.java b/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_html_mgr.java index b84df4f0c..c56df1395 100644 --- a/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_html_mgr.java +++ b/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_html_mgr.java @@ -19,7 +19,7 @@ package gplx.xowa.wikis.ctgs; import gplx.*; import gplx.xowa.*; import gplx.xow import gplx.xowa.wikis.dbs.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.langs.*; import gplx.xowa.langs.msgs.*; import gplx.xowa.htmls.core.htmls.*; import gplx.xowa.wikis.nss.*; -public class Xoctg_html_mgr implements GfoInvkAble { +public class Xoctg_html_mgr implements Gfo_invk { @gplx.Internal protected Xoctg_fmtr_grp Fmtr_grp() {return fmtr_grp;} private Xoctg_fmtr_grp fmtr_grp = new Xoctg_fmtr_grp(); private final Xoctg_fmtr_all mgr_subcs = new Xoctg_fmtr_all(Xoa_ctg_mgr.Tid_subc); private final Xoctg_fmtr_all mgr_pages = new Xoctg_fmtr_all(Xoa_ctg_mgr.Tid_page); @@ -72,7 +72,7 @@ public class Xoctg_html_mgr implements GfoInvkAble { } 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"); + } 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) { int len = grp.Itms().length; for (int i = 0; i < len; i++) { @@ -114,7 +114,7 @@ public class Xoctg_html_mgr implements GfoInvkAble { public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_grp_max)) return mgr_subcs.Grp_max(); else if (ctx.Match(k, Invk_grp_max_)) {int grp_max = m.ReadInt("v"); mgr_subcs.Grp_max_(grp_max); mgr_files.Grp_max_(grp_max); mgr_pages.Grp_max_(grp_max);} - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String Invk_grp_max = "grp_max", Invk_grp_max_ = "grp_max_"; } diff --git a/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_idx_mgr.java b/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_idx_mgr.java index 0605c6903..3b3fbdf83 100644 --- a/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_idx_mgr.java +++ b/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_idx_mgr.java @@ -17,8 +17,8 @@ along with this program. If not, see . */ package gplx.xowa.wikis.ctgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.core.primitives.*; import gplx.core.flds.*; -public class Xoctg_idx_mgr implements GfoInvkAble { - List_adp itms = List_adp_.new_(); +public class Xoctg_idx_mgr implements Gfo_invk { + List_adp itms = List_adp_.New(); public int Block_len() {return block_len;} public Xoctg_idx_mgr Block_len_(int v) {this.block_len = v; return this;} private int block_len = Io_mgr.Len_mb; public int Itms_len() {return itms.Count();} public Xoctg_idx_itm Itms_get_at(int i) {return (Xoctg_idx_itm)itms.Get_at(i);} @@ -147,11 +147,11 @@ public class Xoctg_idx_mgr implements GfoInvkAble { last_plus_one.Parse(fld_rdr.Pos_(tmp_pos), tmp_pos); } } - } Int_obj_ref find_rslt = Int_obj_ref.zero_(); + } Int_obj_ref find_rslt = Int_obj_ref.New_zero(); public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_block_len)) return block_len; else if (ctx.Match(k, Invk_block_len_)) block_len = m.ReadInt("v"); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String Invk_block_len = "block_len", Invk_block_len_ = "block_len_"; } diff --git a/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_idx_mgr_tst.java b/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_idx_mgr_tst.java index 646d69fc4..f504e6822 100644 --- a/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_idx_mgr_tst.java +++ b/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_idx_mgr_tst.java @@ -74,7 +74,7 @@ class Xoctg_idx_mgr_fxt { idx_mgr = new Xoctg_idx_mgr(); } return this; - } private Xoae_app app; Xowe_wiki wiki; Xoctg_idx_mgr idx_mgr; static final byte[] Ctg_name = Bry_.new_a7("Ctg_test"); + } private Xoae_app app; Xowe_wiki wiki; Xoctg_idx_mgr idx_mgr; static final byte[] Ctg_name = Bry_.new_a7("Ctg_test"); public byte[] Make_src(int len) { Bry_bfr bfr = wiki.Utl__bfr_mkr().Get_k004().Mkr_rls(); bfr.Add_byte_pipe(); // always have leading pipe @@ -108,7 +108,7 @@ class Xoctg_idx_mgr_fxt { Tfds.Eq(expd, String_.new_a7(rslt.Sortkey())); Tfds.Eq(expd_comp, comp_rslt.Val()); return this; - } Int_obj_ref comp_rslt = Int_obj_ref.zero_(); + } Int_obj_ref comp_rslt = Int_obj_ref.New_zero(); public Xoctg_idx_mgr_fxt Test_find_itm_near_bmk(int idx_bgn, String find, int bmk_comp, boolean find_dir, String expd) { int idx_pos = (idx_bgn * Xoctg_idx_mgr_tst.Itm_len) + (bmk_comp == CompareAble_.Less ? 1 : 0); Xoctg_idx_itm rslt = idx_mgr.Find_itm_near_bmk(src, src_len, Bry_.new_a7(find), find_dir, bmk_comp, idx_pos); @@ -117,7 +117,7 @@ class Xoctg_idx_mgr_fxt { return this; } public Xoctg_idx_mgr_fxt Test_find(String find, boolean fill_at_bgn, String[] expd_ary, String last_plus_one) { - if (tmp_list == null) tmp_list = List_adp_.new_(); + if (tmp_list == null) tmp_list = List_adp_.New(); idx_mgr.Index(Gfo_usr_dlg_.Test(), Bry_.Empty, src); tmp_list.Clear(); idx_mgr.Find(tmp_list, src, fill_at_bgn, Bry_.new_a7(find), 3, tmp_last_plus_one); diff --git a/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_pagelist_itms.java b/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_pagelist_itms.java index cbdabc1bc..afb4dab7a 100644 --- a/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_pagelist_itms.java +++ b/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_pagelist_itms.java @@ -28,7 +28,7 @@ public class Xoctg_pagelist_itms implements gplx.core.brys.Bfr_arg { this.fmtr_itm = fmtr_itm; } 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_clear() {itms.Clear();} private List_adp itms = List_adp_.New(); public void Itms_add(Xowd_page_itm page) {itms.Add(page);} public void Bfr_arg__add(Bry_bfr bfr) { int len = itms.Count(); diff --git a/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_pagelist_wtr_tst.java b/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_pagelist_wtr_tst.java index c8089bda4..027c3c765 100644 --- a/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_pagelist_wtr_tst.java +++ b/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_pagelist_wtr_tst.java @@ -76,9 +76,9 @@ class Xoctg_pagelist_mgr_fxt { page.Ttl_page_db_(Bry_.new_a7(ttl)); init_ctgs.Add_many(page); } - } private List_adp init_ctgs = List_adp_.new_(); + } private List_adp init_ctgs = List_adp_.New(); public void Test_print_hidden(String expd) { - Bry_bfr bfr = Bry_bfr.new_(); + 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, gplx.xowa.htmls.core.htmls.Xoh_wtr_ctx.Basic); Tfds.Eq_str_lines(expd, bfr.To_str_and_clear()); diff --git a/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_url.java b/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_url.java index b22abb5b4..4d248bccc 100644 --- a/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_url.java +++ b/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_url.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.wikis.ctgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; -import gplx.core.primitives.*; import gplx.core.net.*; +import gplx.core.primitives.*; import gplx.core.net.*; import gplx.core.net.qargs.*; public class Xoctg_url { public byte[][] Grp_idxs() {return grp_idxs;} private byte[][] grp_idxs = new byte[3][]; public byte[] Grp_fwds() {return grp_fwds;} private byte[] grp_fwds = new byte[3]; @@ -59,7 +59,7 @@ public class Xoctg_url { } } public static final byte Tid_all_bgn = 0, Tid_subc_bgn = 1, Tid_subc_end = 2, Tid_file_bgn = 3, Tid_file_end = 4, Tid_page_bgn = 5, Tid_page_end = 6, Tid_all_end = 8; - public static final Hash_adp_bry Arg_keys = Hash_adp_bry.ci_a7() + public static final Hash_adp_bry Arg_keys = Hash_adp_bry.ci_a7() .Add_bry_byte(Xoctg_fmtr_all.Url_arg_from, Tid_all_bgn) .Add_bry_byte(Xoctg_fmtr_all.Url_arg_until, Tid_all_end) .Add_bry_byte(Xoctg_fmtr_all.Url_arg_subc_bgn, Tid_subc_bgn) diff --git a/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_view_grp.java b/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_view_grp.java index 574689c17..072f0ef62 100644 --- a/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_view_grp.java +++ b/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_view_grp.java @@ -35,7 +35,7 @@ public class Xoctg_view_grp { return rv; } public void Itms_add(Xoctg_view_itm sub) {tmp_list.Add(sub);} - public List_adp Itms_list() {return tmp_list;} List_adp tmp_list = List_adp_.new_(); + public List_adp Itms_list() {return tmp_list;} List_adp tmp_list = List_adp_.New(); public void Itms_make() {itms = (Xoctg_view_itm[])tmp_list.To_ary(Xoctg_view_itm.class);} public byte[] Itms_last_sortkey() {return itms_last_sortkey;} public Xoctg_view_grp Itms_last_sortkey_(byte[] v) {itms_last_sortkey = v; return this;} private byte[] itms_last_sortkey; } diff --git a/400_xowa/src/gplx/xowa/wikis/data/Xow_data_mgr.java b/400_xowa/src/gplx/xowa/wikis/data/Xow_data_mgr.java deleted file mode 100644 index d7159265c..000000000 --- a/400_xowa/src/gplx/xowa/wikis/data/Xow_data_mgr.java +++ /dev/null @@ -1,146 +0,0 @@ -/* -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.wikis.data; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; -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.*; -import gplx.xowa.wikis.dbs.*; import gplx.xowa.wikis.*; import gplx.xowa.langs.msgs.*; -import gplx.xowa.parsers.utils.*; -import gplx.xowa.wikis.data.tbls.*; -public class Xow_data_mgr implements GfoInvkAble { - private Xop_redirect_mgr redirect_mgr; - private Xoa_url tmp_url = Xoa_url.blank(); - public Xow_data_mgr(Xowe_wiki wiki) {this.wiki = wiki; this.redirect_mgr = wiki.Redirect_mgr();} - public Xowe_wiki Wiki() {return wiki;} private Xowe_wiki wiki; - public boolean Version_is_1() {return Bool_.Y;} - public Xoae_page Get_page(Xoa_ttl ttl, boolean called_from_tmpl) {tmp_url = wiki.Utl__url_parser().Parse(ttl.Raw()); return Get_page(tmp_url, ttl, called_from_tmpl, false);} - public Xoae_page Get_page_from_msg(Xoa_ttl ttl) {tmp_url = wiki.Utl__url_parser().Parse(ttl.Raw()); return Get_page(tmp_url, ttl, false, true);} - public Xoae_page Get_page(Xoa_url url, Xoa_ttl ttl, boolean called_from_tmpl, boolean called_from_msg) { - Xoae_page rv = Xoae_page.New(wiki, ttl); - return Get_page(rv, url, ttl, called_from_tmpl, called_from_msg); - } - public Xoae_page Get_page(Xoae_page rv, Xoa_url url, Xoa_ttl ttl, boolean called_from_tmpl, boolean called_from_msg) { - rv.Url_(url); // NOTE: must update page.Url(); should combine with Xoae_page.New() - Xow_ns ns = ttl.Ns(); - switch (ns.Id()) { - case Xow_ns_.Tid__special: - wiki.Special_mgr().Special__gen(wiki.App(), wiki, rv, url, ttl); - return rv; - case Xow_ns_.Tid__mediawiki: - if ( !called_from_msg // if called from msg, fall through to actual data retrieval below, else infinite loop; DATE:2014-05-09 - && Xow_page_tid.Identify_by_ttl(ttl.Page_db()) == Xow_page_tid.Tid_wikitext // skip ".js" and ".css" pages in MediaWiki; DATE:2014-06-13 - ) { - Xol_lang_itm lang = wiki.Lang(); - byte[] msg_key = ttl.Page_db(); - Bry_bfr tmp_bfr = wiki.Utl__bfr_mkr().Get_b512(); - msg_key = lang.Case_mgr().Case_build_1st_lower(tmp_bfr, msg_key, 0, msg_key.length); - byte[] msg_val = Xol_msg_mgr_.Get_msg_itm(tmp_bfr, wiki, wiki.Lang(), msg_key).Val(); // NOTE: do not change to Get_msg_val; Get_msg_val, also replaces $1 with values, and $1 needs to be preserved for callers; - rv.Data_raw_(msg_val); - tmp_bfr.Mkr_rls(); - return rv; - } - break; - } - return Get_page(rv, ns, ttl, called_from_tmpl, url.Qargs_mgr().Match(Xoa_url_.Qarg__redirect, Xoa_url_.Qarg__redirect__no)); - } - public Xoae_page Get_page(Xoae_page rv, Xow_ns ns, Xoa_ttl ttl, boolean called_from_tmpl, boolean redirect_force) { - int redirects = 0; - Xowd_page_itm db_page = Xowd_page_itm.new_tmp(); - while (true) { - boolean exists = wiki.Db_mgr().Load_mgr().Load_by_ttl(db_page, ns, ttl.Page_db()); - if (!exists) return rv.Missing_(); - if (wiki.App().Mode().Tid_is_gui()) // NOTE: must check if gui, else will write during mass build; DATE:2014-05-03 - wiki.Appe().Usr_dlg().Prog_many(GRP_KEY, "file_load", "loading page for ~{0}", String_.new_u8(ttl.Raw())); - wiki.Db_mgr().Load_mgr().Load_page(db_page, ns, !called_from_tmpl); - byte[] bry = db_page.Text(); - rv.Data_raw_(bry).Revision_data().Modified_on_(db_page.Modified_on()).Id_(db_page.Id()).Html_db_id_(db_page.Html_db_id()); - if (redirect_force) return rv; - Xoa_ttl redirect_ttl = redirect_mgr.Extract_redirect(bry); - if ( redirect_ttl == null // not a redirect - || redirects++ > 4) // too many redirects; something went wrong - break; - rv.Redirected_ttls().Add(ttl.Full_url()); // NOTE: must be url_encoded; EX: "en.wikipedia.org/?!" should generate link of "en.wikipedia.org/%3F!?redirect=no" - if (rv.Redirected_src() == null) rv.Redirected_src_(bry); // only add src for first redirect; DATE:2014-07-11 - rv.Ttl_(redirect_ttl); - ns = redirect_ttl.Ns(); - ttl = redirect_ttl; - } - return rv; - } - public Xoae_page Load_page_by_ttl(Xoa_url url, Xoa_ttl ttl) {return Load_page_by_ttl(url, ttl, wiki.Lang(), wiki.Appe().Gui_mgr().Browser_win().Active_tab(), true);} - public Xoae_page Load_page_by_ttl(Xoa_url url, Xoa_ttl ttl, Xog_tab_itm tab) {return Load_page_by_ttl(url, ttl, wiki.Lang(), tab, true);} - public Xoae_page Load_page_by_ttl(Xoa_url url, Xoa_ttl ttl, Xol_lang_itm lang, Xog_tab_itm tab, boolean parse_page) { - wiki.Init_assert(); - Xoae_page page = Xoae_page.New(wiki, ttl); page.Tab_data().Tab_(tab); - this.Get_page(page, url, ttl, false, false); // get page from data_mgr - if (page.Missing()) { // page doesn't exist - boolean vnt_missing = true; - Xol_vnt_mgr vnt_mgr = lang.Vnt_mgr(); - if (vnt_mgr.Enabled()) { // if vnt enabled, then try to load by vnt form; DATE:2015-09-15 - gplx.xowa.wikis.data.tbls.Xowd_page_itm page_itm = vnt_mgr.Convert_mgr().Convert_ttl(wiki, ttl); - if (page_itm != null && page_itm.Exists()) { - Xoa_ttl vnt_ttl = Xoa_ttl.parse(wiki, ttl.Ns().Id(), page_itm.Ttl_page_db()); - page = this.Get_page(vnt_ttl, false); - vnt_missing = page.Missing(); - } - } - if (vnt_missing) { - if (ttl.Ns().Id_is_file()) { - Xowe_wiki commons_wiki = (Xowe_wiki)wiki.Appe().Wiki_mgr().Get_by_or_null(wiki.Commons_wiki_key()); - if (commons_wiki != null) { // commons exists - if (!Bry_.Eq(wiki.Domain_bry(), commons_wiki.Domain_bry())) { // !Bry_.Eq is recursion guard - Xoae_page rv = commons_wiki.Data_mgr().Load_page_by_ttl(url, ttl, wiki.Lang(), tab, true); - if (rv.Exists()) { - rv.Commons_mgr().Source_wiki_(wiki); - return rv; - } - else { - page.Missing_(false); - page.Commons_mgr().Xowa_mockup_(true); - return page; - } - } - } - } - else - return page.Missing_(); - } - } - if (page.Missing()) return page; // NOTE: commons can return null page - page.Tab_data().Tab_(tab); - page.Lang_(lang); - if (parse_page) - wiki.Parser_mgr().Parse(page, false); // NOTE: do not clear page b/c reused for search - return page; - } - public Xoae_page Redirect(Xoae_page page, byte[] page_bry) { - Xoa_ttl trg_ttl = Xoa_ttl.parse(wiki, page_bry); - Xoa_url trg_url = Xoa_url.new_(wiki.Domain_bry(), page_bry); - page.Ttl_(trg_ttl).Url_(trg_url).Redirected_(true); - return wiki.Data_mgr().Get_page(page, trg_ttl.Ns(), trg_ttl, false, trg_url.Qargs_mgr().Match(Xoa_url_.Qarg__redirect, Xoa_url_.Qarg__redirect__no)); - } - public static final int File_idx_unknown = -1; - static final String GRP_KEY = "xowa.wiki.data"; - public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { - if (ctx.Match(k, Invk_create_enabled_)) wiki.Db_mgr().Save_mgr().Create_enabled_(m.ReadYn("v")); - else if (ctx.Match(k, Invk_update_modified_on_enabled_)) wiki.Db_mgr().Save_mgr().Update_modified_on_enabled_(m.ReadYn("v")); - else return GfoInvkAble_.Rv_unhandled; - return this; - } private static final String Invk_create_enabled_ = "create_enabled_", Invk_update_modified_on_enabled_ = "update_modified_on_enabled_"; -} diff --git a/400_xowa/src/gplx/xowa/wikis/data/Xow_data_mgr_tst.java b/400_xowa/src/gplx/xowa/wikis/data/Xow_data_mgr_tst.java index 46fe2db75..1a8420e6a 100644 --- a/400_xowa/src/gplx/xowa/wikis/data/Xow_data_mgr_tst.java +++ b/400_xowa/src/gplx/xowa/wikis/data/Xow_data_mgr_tst.java @@ -62,7 +62,7 @@ public class Xow_data_mgr_tst { ; } @Test public void Update_zip() { -// fxt.Wiki().Fsys_mgr().Dir_regy()[Xow_ns_.Tid__main].Ext_tid_(gplx.core.ios.Io_stream_.Tid_zip); +// fxt.Wiki().Fsys_mgr().Dir_regy()[Xow_ns_.Tid__main].Ext_tid_(gplx.core.ios.streams.Io_stream_.Tid_zip); // fxt.Wiki().Data_mgr().Zip_mgr_(new Io_zip_mgr_mok()); // fxt .Create("A1", "A1 data") // .Create("B12", "B12 data") diff --git a/400_xowa/src/gplx/xowa/wikis/data/Xowd_db_file.java b/400_xowa/src/gplx/xowa/wikis/data/Xow_db_file.java similarity index 61% rename from 400_xowa/src/gplx/xowa/wikis/data/Xowd_db_file.java rename to 400_xowa/src/gplx/xowa/wikis/data/Xow_db_file.java index 5bcb146b8..63c48b0cd 100644 --- a/400_xowa/src/gplx/xowa/wikis/data/Xowd_db_file.java +++ b/400_xowa/src/gplx/xowa/wikis/data/Xow_db_file.java @@ -18,10 +18,11 @@ along with this program. If not, see . package gplx.xowa.wikis.data; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.dbs.*; import gplx.dbs.cfgs.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.bldrs.infos.*; import gplx.xowa.wikis.data.site_stats.*; -import gplx.xowa.htmls.core.dbs.*; import gplx.xowa.addons.apps.searchs.dbs.*; -public class Xowd_db_file { - Xowd_db_file(Db_cfg_tbl cfg_tbl, Xob_info_session info_session, Xob_info_file info_file, Xowd_core_db_props props, Xowd_db_file_schema_props schema_props, int id, byte tid, Io_url url, String ns_ids, int part_id, Guid_adp guid, Db_conn conn, byte cmd_mode) { - this.id = id; this.tid = tid; this.url = url; this.ns_ids = ns_ids; this.part_id = part_id; this.guid = guid; this.db_props = props; this.schema_props = schema_props; +import gplx.xowa.htmls.core.dbs.*; import gplx.xowa.addons.wikis.searchs.dbs.*; +import gplx.xowa.addons.wikis.htmls.css.dbs.*; +public class Xow_db_file { + protected Xow_db_file(Db_cfg_tbl cfg_tbl, Xowd_core_db_props props, Xob_info_session info_session, Xob_info_file info_file, Xow_db_file_schema_props schema_props, int id, byte tid, Io_url url, String ns_ids, int part_id, Guid_adp guid, Db_conn conn, byte cmd_mode) { + this.id = id; this.tid = tid; this.url = url; this.ns_ids = ns_ids; this.part_id = part_id; this.guid = guid; this.db_props = props; this.conn = conn; this.cmd_mode = cmd_mode; this.url_rel = url.NameAndExt(); boolean schema_is_1 = props.Schema_is_1(); @@ -36,10 +37,11 @@ public class Xowd_db_file { this.tbl__css_file = new Xowd_css_file_tbl(conn); this.tbl__cat_core = new Xowd_cat_core_tbl(conn, schema_is_1); this.tbl__cat_link = new Xowd_cat_link_tbl(conn, schema_is_1); - this.tbl__wbase_qid = new Xowd_wbase_qid_tbl(conn, schema_is_1, schema_props.Wbase__qid__src_ttl_has_spaces()); + this.tbl__wbase_qid = new Xowd_wbase_qid_tbl(conn, schema_is_1, schema_props == null ? Bool_.N : schema_props.Wbase__qid__src_ttl_has_spaces()); this.tbl__wbase_pid = new Xowd_wbase_pid_tbl(conn, schema_is_1); this.info_session = info_session; this.info_file = info_file; + this.schema_props = schema_props; } public int Id() {return id;} private final int id; // unique id in xowa_db public byte Tid() {return tid;} private final byte tid; @@ -47,15 +49,13 @@ public class Xowd_db_file { public Io_url Url() {return url;} private final Io_url url; public String Url_rel() {return url_rel;} private final String url_rel; public Xowd_core_db_props Db_props() {return db_props;} private final Xowd_core_db_props db_props; - public Xowd_db_file_schema_props Schema_props() {return schema_props;} private final Xowd_db_file_schema_props schema_props; public String Ns_ids() {return ns_ids;} private final String ns_ids; + public int Ns_id_or_fail() {return Int_.parse(ns_ids);} public int Part_id() {return part_id;} private final int part_id; public Guid_adp Guid() {return guid;} private final Guid_adp guid; - public byte Cmd_mode() {return cmd_mode;} public Xowd_db_file Cmd_mode_(byte v) {cmd_mode = v; return this;} private byte cmd_mode; - public long File_len() {return file_len;} public Xowd_db_file File_len_add(int v) {file_len += v; return this;} private long file_len; - public long File_max() {return file_max;} public Xowd_db_file File_max_(long v) {file_max = v; return this;} private long file_max; - public Xob_info_session Info_session() {return info_session;} private final Xob_info_session info_session; - public Xob_info_file Info_file() {return info_file;} private final Xob_info_file info_file; + public byte Cmd_mode() {return cmd_mode;} public Xow_db_file Cmd_mode_(byte v) {cmd_mode = v; return this;} private byte cmd_mode; + public long File_len() {return file_len;} public Xow_db_file File_len_add(int v) {file_len += v; return this;} private long file_len; + public long File_max() {return file_max;} public Xow_db_file File_max_(long v) {file_max = v; return this;} private long file_max; public Db_cfg_tbl Tbl__cfg() {return tbl__cfg;} private final Db_cfg_tbl tbl__cfg; public Xowd_xowa_db_tbl Tbl__db() {return tbl__db;} private final Xowd_xowa_db_tbl tbl__db; public Xowd_site_ns_tbl Tbl__ns() {return tbl__ns;} private final Xowd_site_ns_tbl tbl__ns; @@ -69,27 +69,44 @@ public class Xowd_db_file { public Xow_site_stats_tbl Tbl__site_stats() {return tbl__site_stats;} private final Xow_site_stats_tbl tbl__site_stats; public Xowd_wbase_qid_tbl Tbl__wbase_qid() {return tbl__wbase_qid;} private final Xowd_wbase_qid_tbl tbl__wbase_qid; public Xowd_wbase_pid_tbl Tbl__wbase_pid() {return tbl__wbase_pid;} private final Xowd_wbase_pid_tbl tbl__wbase_pid; - public void Rls() {conn.Rls_conn();} - public Xowd_page_tbl Tbl__page__rebind() {this.tbl__page = new Xowd_page_tbl(tbl__page.conn, tbl__page.schema_is_1); return tbl__page;} + public Xob_info_session Info_session() { + if (info_session == null) // NOTE: null when load; !null when make + info_session = Xob_info_session.Load(tbl__cfg); + return info_session; + } private Xob_info_session info_session; + public Xob_info_file Info_file() { + if (info_file == null) // NOTE: null when load; !null when make + info_file = Xob_info_file.Load(tbl__cfg); + return info_file; + } private Xob_info_file info_file; + public Xow_db_file_schema_props Schema_props() { + if (schema_props == null) + schema_props = Xow_db_file_schema_props.load_(tbl__cfg, tid, this.Info_session().Version()); // NOTE: must call .Info_session + return schema_props; + } private Xow_db_file_schema_props schema_props; - public static final Xowd_db_file Null = null; - public static Xowd_db_file make_(Xob_info_session info_session, Xowd_core_db_props props, int id, byte tid, Io_url url, String ns_ids, int part_id, String core_file_name, Db_conn conn) { - Guid_adp guid = Guid_adp_.new_(); - Xob_info_file info_file = new Xob_info_file(id, Xowd_db_file_.To_key(tid), ns_ids, part_id, guid, props.Schema(), core_file_name, url.NameAndExt()); + public void Rls() {conn.Rls_conn();} + public Xowd_page_tbl Tbl__page__rebind() { + this.tbl__page = new Xowd_page_tbl(tbl__page.Conn(), tbl__page.schema_is_1); + return tbl__page; + } + + public static final Xow_db_file Null = null; + public static Xow_db_file make_(Xob_info_session info_session, Xowd_core_db_props props, int id, byte tid, Io_url url, String ns_ids, int part_id, String core_file_name, Db_conn conn) { + Guid_adp guid = Guid_adp_.New(); + Xob_info_file info_file = new Xob_info_file(id, Xow_db_file_.To_key(tid), ns_ids, part_id, guid, props.Schema(), core_file_name, url.NameAndExt()); Db_cfg_tbl cfg_tbl = gplx.xowa.wikis.data.Xowd_cfg_tbl_.New(conn); - Xowd_db_file rv = new Xowd_db_file(cfg_tbl, info_session, info_file, props, Xowd_db_file_schema_props.make_(), id, tid, url, ns_ids, part_id, guid, conn, Db_cmd_mode.Tid_create); + Xow_db_file rv = new Xow_db_file(cfg_tbl, props, info_session, info_file, Xow_db_file_schema_props.make_(), id, tid, url, ns_ids, part_id, guid, conn, Db_cmd_mode.Tid_create); cfg_tbl.Create_tbl(); // always create cfg in each db return rv; } - public static Xowd_db_file load_(Xowd_core_db_props props, int id, byte tid, Io_url url, String ns_ids, int part_id, Guid_adp guid) { + public static Xow_db_file load_(Xowd_core_db_props props, int id, byte tid, Io_url url, String ns_ids, int part_id, Guid_adp guid) { Db_conn conn = Db_conn_bldr.Instance.Get(url); if (conn == null) { - Xoa_app_.Usr_dlg().Warn_many("", "", "wiki.db:missing db; tid=~{0} url=~{1}", Xowd_db_file_.To_key(tid), url.Raw()); + Xoa_app_.Usr_dlg().Warn_many("", "", "wiki.db:missing db; tid=~{0} url=~{1}", Xow_db_file_.To_key(tid), url.Raw()); conn = Db_conn_.Noop; } Db_cfg_tbl cfg_tbl = gplx.xowa.wikis.data.Xowd_cfg_tbl_.New(conn); // NOTE: this loads the cfg tbl for the current db, not the core db - Xob_info_session info_session = Xob_info_session.Load(cfg_tbl); - Xob_info_file info_file = Xob_info_file.Load(cfg_tbl); - return new Xowd_db_file(cfg_tbl, info_session, info_file, props, Xowd_db_file_schema_props.load_(cfg_tbl, tid, info_session.Version()), id, tid, url, ns_ids, part_id, guid, conn, Db_cmd_mode.Tid_ignore); + return new Xow_db_file(cfg_tbl, props, null, null, null, id, tid, url, ns_ids, part_id, guid, conn, Db_cmd_mode.Tid_ignore); } } diff --git a/400_xowa/src/gplx/xowa/wikis/data/Xow_db_file_.java b/400_xowa/src/gplx/xowa/wikis/data/Xow_db_file_.java new file mode 100644 index 000000000..445e1c5a6 --- /dev/null +++ b/400_xowa/src/gplx/xowa/wikis/data/Xow_db_file_.java @@ -0,0 +1,60 @@ +/* +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.wikis.data; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; +public class Xow_db_file_ { + public static final int Uid__core = 0; + public static final byte + Tid__core = 1, Tid__text = 2, Tid__cat = 3, Tid__search_core = 4, Tid__wbase = 5 // SERIALIZED:v1 + , Tid__cat_core = 6, Tid__cat_link = 7 // SERIALIZED:v2 + , Tid__wiki_solo = 8, Tid__text_solo = 9 + , Tid__html_solo = 10, Tid__html_data = 11 + , Tid__file_solo = 12, Tid__file_core = 13, Tid__file_data = 14, Tid__file_user = 15 + , Tid__search_link = 16, Tid__random = 17, Tid__css = 18 + ; + private static final String + Key__core = "core", Key__text = "text", Key__cat = "xtn.category", Key__search_core = "xtn.search.core", Key__wbase = "core.wbase" + , Key__cat_core = "xtn.category.core", Key__cat_link = "xtn.category.link" + , Key__text_solo = "text.solo", Key__wiki_solo = "wiki.solo" + , Key__html_solo = "html.solo", Key__html_data = "html" + , Key__file_solo = "file.solo", Key__file_core = "file.core", Key__file_data = "file.data", Key__file_user = "file.user" + , Key__search_link = "xtn.search.link", Key__random = "xtn.random", Key__css = "xtn.css" + ; + public static String To_key(byte v) { + switch (v) { + case Tid__core: return Key__core; + case Tid__text: return Key__text; + case Tid__cat: return Key__cat; + case Tid__search_core: return Key__search_core; + case Tid__wbase: return Key__wbase; + case Tid__cat_core: return Key__cat_core; + case Tid__cat_link: return Key__cat_link; + case Tid__wiki_solo: return Key__wiki_solo; + case Tid__text_solo: return Key__text_solo; + case Tid__html_solo: return Key__html_solo; + case Tid__html_data: return Key__html_data; + case Tid__file_solo: return Key__file_solo; + case Tid__file_core: return Key__file_core; + case Tid__file_data: return Key__file_data; + case Tid__file_user: return Key__file_user; + case Tid__search_link: return Key__search_link; + case Tid__random: return Key__random; + case Tid__css: return Key__css; + default: throw Err_.new_unhandled(v); + } + } +} diff --git a/400_xowa/src/gplx/xowa/wikis/data/Xow_db_file__core_.java b/400_xowa/src/gplx/xowa/wikis/data/Xow_db_file__core_.java new file mode 100644 index 000000000..76369eeaf --- /dev/null +++ b/400_xowa/src/gplx/xowa/wikis/data/Xow_db_file__core_.java @@ -0,0 +1,117 @@ +/* +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.wikis.data; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; +import gplx.dbs.*; +import gplx.xowa.wikis.domains.*; import gplx.xowa.bldrs.infos.*; +public class Xow_db_file__core_ { + public static Io_url Find_core_fil(Xow_wiki wiki) { + Io_url wiki_root_dir = wiki.Fsys_mgr().Root_dir(); + String domain_str = wiki.Domain_str(); + Io_url[] ary = Io_mgr.Instance.QueryDir_fils(wiki_root_dir); + int ary_len = ary.length; if (ary.length == 0) return null; + Io_url rv = Find_core_fil__xowa(ary, ary_len, domain_str); + return rv == null ? Find_core_fil__sqlite3(wiki_root_dir, ary, ary_len, domain_str) : rv; + } + private static Io_url Find_core_fil__xowa(Io_url[] ary, int ary_len, String domain_str) { + for (int i = 0; i < ary_len; i++) { + Io_url itm = ary[i]; + if (!String_.Eq(itm.Ext(), ".xowa")) continue; + if ( String_.Eq(itm.NameOnly(), domain_str) // EX: "en.wikipedia.org" + || String_.Eq(itm.NameOnly(), domain_str + "-core") // EX: "en.wikipedia.org-core" + ) { + Xoa_app_.Usr_dlg().Log_many("", "", "wiki.db_core.v2: url=~{0}", itm.Raw()); + return itm; + } + } + for (int i = 0; i < ary_len; i++) { // DB.FEW: DATE:2016-06-07 + Io_url itm = ary[i]; + if (!String_.Eq(itm.Ext(), ".xowa")) continue; + if ( String_.Eq(itm.NameOnly(), domain_str + "-text") // EX: "en.wikipedia.org-text" + ) { + Xoa_app_.Usr_dlg().Log_many("", "", "wiki.db_core.v2: url=~{0}", itm.Raw()); + return itm; + } + } + return null; + } + private static Io_url Find_core_fil__sqlite3(Io_url wiki_root_dir, Io_url[] ary, int ary_len, String domain_str) { + Io_url rv = null; + String v0_str = domain_str + ".000"; + for (int i = 0; i < ary_len; i++) { + Io_url itm = ary[i]; + if (!String_.Eq(itm.Ext(), ".sqlite3")) continue; + if (String_.Eq(itm.NameOnly(), v0_str)) { // EX: "en.wikipedia.org.000" + Xoa_app_.Usr_dlg().Log_many("", "", "wiki.db_core.v1: url=~{0}", itm.Raw()); + return itm; + } + if (ary_len == 1) { + Xoa_app_.Usr_dlg().Log_many("", "", "wiki.db_core.custom: url=~{0}", itm.Raw()); + return rv; // 1 folder and 1 sqlite file; return it; custom wikis? + } + } + Xoa_app_.Usr_dlg().Log_many("", "", "wiki.db_core.none: dir=~{0}", wiki_root_dir.Raw()); + return rv; + } + + public static boolean Is_core_fil_name(String domain_name, String fil_name) { + Xow_domain_itm domain_itm = Xow_domain_itm_.parse(Bry_.new_u8(domain_name)); + if (domain_itm.Domain_type_id() == Xow_domain_tid_.Int__other) { + return String_.Has_at_end(fil_name, ".xowa"); + } + String domain_str = domain_itm.Domain_str(); + return ( String_.Eq(fil_name, domain_str + "-text.xowa") + || String_.Eq(fil_name, domain_str + "-core.xowa") + || String_.Eq(fil_name, domain_str + ".xowa") + ); + } + + public static Xow_db_file Make_core_db(Xowd_core_db_props props, Xob_info_session info_session, Io_url wiki_root_dir, String domain_str) { + String core_file_name = Xow_db_file__core_.Core_file_name(props.Layout_text(), domain_str); + byte core_db_tid = Xow_db_file__core_.Core_db_tid(props.Layout_text()); + Io_url core_db_url = wiki_root_dir.GenSubFil(core_file_name); + Db_conn core_conn = Db_conn_bldr.Instance.New(core_db_url); + + // make tbls + Xow_db_file rv = Xow_db_file.make_(info_session, props, Xow_db_file_.Uid__core, core_db_tid, core_db_url, Xob_info_file.Ns_ids_empty, Xob_info_file.Part_id_1st, core_file_name, core_conn); + rv.Tbl__db().Create_tbl(); + rv.Tbl__ns().Create_tbl(); + rv.Tbl__site_stats().Create_tbl(); + rv.Tbl__page().Create_tbl(); + if (props.Layout_text().Tid_is_all_or_few()) { // create in advance else will fail for v2; import wiki -> wiki loads and tries to load categories; v2 category processes and builds tbl; DATE:2015-03-22 + rv.Tbl__cat_core().Create_tbl(); + rv.Tbl__cat_link().Create_tbl(); + } + return rv; + } + private static String Core_file_name(Xow_db_layout layout, String domain_name) { + switch (layout.Tid()) { + case Xow_db_layout.Tid__all: return domain_name + ".xowa"; // EX: en.wikipedia.org.xowa + case Xow_db_layout.Tid__few: //return domain_name + "-text.xowa"; // EX: en.wikipedia.org-text.xowa // DB.FEW: DATE:2016-06-07 + case Xow_db_layout.Tid__lot: return domain_name + "-core.xowa"; // EX: en.wikipedia.org-core.xowa + default: throw Err_.new_unimplemented(); + } + } + public static byte Core_db_tid(Xow_db_layout layout) { + switch (layout.Tid()) { + case Xow_db_layout.Tid__all: return Xow_db_file_.Tid__wiki_solo; + case Xow_db_layout.Tid__few: // return Xow_db_file_.Tid__core; // DB.FEW: DATE:2016-06-07 + case Xow_db_layout.Tid__lot: return Xow_db_file_.Tid__core; + default: throw Err_.new_unimplemented(); + } + } +} diff --git a/400_xowa/src/gplx/xowa/wikis/data/Xowd_db_file_hash.java b/400_xowa/src/gplx/xowa/wikis/data/Xow_db_file_hash.java similarity index 89% rename from 400_xowa/src/gplx/xowa/wikis/data/Xowd_db_file_hash.java rename to 400_xowa/src/gplx/xowa/wikis/data/Xow_db_file_hash.java index d03c1039a..cef332622 100644 --- a/400_xowa/src/gplx/xowa/wikis/data/Xowd_db_file_hash.java +++ b/400_xowa/src/gplx/xowa/wikis/data/Xow_db_file_hash.java @@ -16,19 +16,12 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.wikis.data; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; -class Xowd_db_file_hash { - private final Ordered_hash hash = Ordered_hash_.New(); +class Xow_db_file_hash { + private final Ordered_hash hash = Ordered_hash_.New(); public int Count_total() {return count_total;} private int count_total; public void Clear() {hash.Clear(); count_total = 0;} - public void Del(Xowd_db_file file) { - Ordered_hash tids = (Ordered_hash)hash.Get_by(file.Tid()); - if (tids == null) throw Err_.new_wo_type("unknown file.tid", "url", file.Url()); - if (!tids.Has(file.Id())) throw Err_.new_wo_type("unknown file.id", "url", file.Url()); - tids.Del(file.Id()); - --count_total; - } public Ordered_hash Get_by_tid_or_null(byte tid) {return (Ordered_hash)hash.Get_by(tid);} - public void Add_or_new(Xowd_db_file file) { + public void Add_or_new(Xow_db_file file) { byte tid = file.Tid(); Ordered_hash tids = (Ordered_hash)hash.Get_by(tid); if (tids == null) { @@ -38,6 +31,13 @@ class Xowd_db_file_hash { tids.Add(file.Id(), file); ++count_total; } + public void Del(Xow_db_file file) { + Ordered_hash tids = (Ordered_hash)hash.Get_by(file.Tid()); + if (tids == null) throw Err_.new_wo_type("unknown file.tid", "url", file.Url()); + if (!tids.Has(file.Id())) throw Err_.new_wo_type("unknown file.id", "url", file.Url()); + tids.Del(file.Id()); + --count_total; + } public int Count_of_tid(byte tid) { Ordered_hash tids = (Ordered_hash)hash.Get_by(tid); return tids == null ? 0 : tids.Count(); diff --git a/400_xowa/src/gplx/xowa/wikis/data/Xowd_db_file_schema_props.java b/400_xowa/src/gplx/xowa/wikis/data/Xow_db_file_schema_props.java similarity index 71% rename from 400_xowa/src/gplx/xowa/wikis/data/Xowd_db_file_schema_props.java rename to 400_xowa/src/gplx/xowa/wikis/data/Xow_db_file_schema_props.java index 0bc1a3655..f6b99c808 100644 --- a/400_xowa/src/gplx/xowa/wikis/data/Xowd_db_file_schema_props.java +++ b/400_xowa/src/gplx/xowa/wikis/data/Xow_db_file_schema_props.java @@ -17,18 +17,18 @@ along with this program. If not, see . */ package gplx.xowa.wikis.data; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.dbs.cfgs.*; import gplx.xowa.bldrs.infos.*; -public class Xowd_db_file_schema_props { - Xowd_db_file_schema_props(boolean search__word__page_count_exists, boolean wbase__qid__src_ttl_has_spaces) { +public class Xow_db_file_schema_props { + Xow_db_file_schema_props(boolean search__word__page_count_exists, boolean wbase__qid__src_ttl_has_spaces) { this.search__word__page_count_exists = search__word__page_count_exists; this.wbase__qid__src_ttl_has_spaces = wbase__qid__src_ttl_has_spaces; } - public boolean Search__word__page_count_exists() {return search__word__page_count_exists;} private final boolean search__word__page_count_exists; - public boolean Wbase__qid__src_ttl_has_spaces() {return wbase__qid__src_ttl_has_spaces;} private final boolean wbase__qid__src_ttl_has_spaces; - public static Xowd_db_file_schema_props make_() {return new Xowd_db_file_schema_props(Bool_.Y, Bool_.N);} - public static Xowd_db_file_schema_props load_(Db_cfg_tbl tbl, int tid, String version) { + public boolean Search__word__page_count_exists() {return search__word__page_count_exists;} private final boolean search__word__page_count_exists; + public boolean Wbase__qid__src_ttl_has_spaces() {return wbase__qid__src_ttl_has_spaces;} private final boolean wbase__qid__src_ttl_has_spaces; + public static Xow_db_file_schema_props make_() {return new Xow_db_file_schema_props(Bool_.Y, Bool_.N);} + public static Xow_db_file_schema_props load_(Db_cfg_tbl tbl, int tid, String version) { boolean search__word__page_count_exists = tbl.Select_yn_or(Grp, Key__col_search_word_page_count, Bool_.N); boolean wbase__qid__src_ttl_has_spaces = String_.In(version, "2.4.2.1", "2.4.3.1", "2.4.3.2"); - return new Xowd_db_file_schema_props(search__word__page_count_exists, wbase__qid__src_ttl_has_spaces); + return new Xow_db_file_schema_props(search__word__page_count_exists, wbase__qid__src_ttl_has_spaces); } public static final String Grp = Xow_cfg_consts.Grp__wiki_schema; public static final String diff --git a/400_xowa/src/gplx/xowa/wikis/data/Xow_db_layout.java b/400_xowa/src/gplx/xowa/wikis/data/Xow_db_layout.java new file mode 100644 index 000000000..6382106af --- /dev/null +++ b/400_xowa/src/gplx/xowa/wikis/data/Xow_db_layout.java @@ -0,0 +1,47 @@ +/* +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.wikis.data; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; +public class Xow_db_layout { + public Xow_db_layout(int tid) {this.tid = tid;} + public int Tid() {return tid;} private final int tid; + public boolean Tid_is_all() {return tid == Tid__all;} + public boolean Tid_is_all_or_few() {return tid != Tid__lot;} + public boolean Tid_is_lot() {return tid == Tid__lot;} + public String Key() { + switch (tid) { + case Xow_db_layout.Tid__all: return Key__all; + case Xow_db_layout.Tid__few: return Key__few; + case Xow_db_layout.Tid__lot: return Key__lot; + default: throw Err_.new_unimplemented(); + } + } + + public static final int Tid__all = 1, Tid__few = 2, Tid__lot = 3; + public static final String Key__all = "all", Key__few = "few", Key__lot = "lot"; + public static final Xow_db_layout + Itm_all = new Xow_db_layout(Tid__all) + , Itm_few = new Xow_db_layout(Tid__few) + , Itm_lot = new Xow_db_layout(Tid__lot) + ; + public static Xow_db_layout Get_by_name(String v) { + if (String_.Eq(v, Key__all)) return Itm_all; + else if (String_.Eq(v, Key__few)) return Itm_few; + else if (String_.Eq(v, Key__lot)) return Itm_lot; + else throw Err_.new_unimplemented(); + } +} diff --git a/400_xowa/src/gplx/xowa/wikis/data/Xow_db_mgr.java b/400_xowa/src/gplx/xowa/wikis/data/Xow_db_mgr.java new file mode 100644 index 000000000..87d718b0d --- /dev/null +++ b/400_xowa/src/gplx/xowa/wikis/data/Xow_db_mgr.java @@ -0,0 +1,166 @@ +/* +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.wikis.data; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; +import gplx.dbs.*; import gplx.dbs.cfgs.*; import gplx.core.lists.hashs.*; +import gplx.xowa.wikis.dbs.*; import gplx.xowa.wikis.data.tbls.*; +import gplx.xowa.wikis.domains.*; import gplx.xowa.bldrs.infos.*; +public class Xow_db_mgr { + private final Ordered_hash hash_by_id = Ordered_hash_.New(); private final Xow_db_file_hash hash_by_tids = new Xow_db_file_hash(); + private int db_id_next = 0; + private final Xow_wiki wiki; private final Io_url wiki_root_dir; private final String domain_str; // needed for generating new files; EX: en.wikipedia.org-text.ns.001.xowa + public Xow_db_mgr(Xow_wiki wiki, Io_url wiki_root_dir) { + this.wiki = wiki; + this.wiki_root_dir = wiki_root_dir; + this.domain_str = wiki.Domain_str(); + } + public Xowd_core_db_props Props() {return props;} private Xowd_core_db_props props = Xowd_core_db_props.Test; + public Db_cfg_tbl Tbl__cfg() {return db__core.Tbl__cfg();} + public Xowd_page_tbl Tbl__page() {return db__core.Tbl__page();} + public Xow_db_file Db__core() {return db__core;} private Xow_db_file db__core; + public Xow_db_file Db__text() {return db__text;} private Xow_db_file db__text; + public Xow_db_file Db__html() {return db__html;} private Xow_db_file db__html; + public Xow_db_file Db__cat_core() {return db__cat_core;} private Xow_db_file db__cat_core; + public Xow_db_file Db__wbase() {return db__wbase;} private Xow_db_file db__wbase; public void Db__wbase_(Xow_db_file v) {db__wbase = v;} + public void Init_by_load(Io_url core_url) { + // clear lists + hash_by_id.Clear(); + hash_by_tids.Clear(); + + // create core_conn / core_db + Db_conn core_conn = Db_conn_bldr.Instance.Get(core_url); + props = Xowd_core_db_props.Cfg_load(core_conn); // load props to get layout_text + Dbs__set_by_tid(Xow_db_file.load_(props, Xow_db_file_.Uid__core, Xow_db_file__core_.Core_db_tid(props.Layout_text()), core_url, Xob_info_file.Ns_ids_empty, Xob_info_file.Part_id_1st, Guid_adp_.Empty)); + wiki.Props().Init_by_load(wiki.App(), Tbl__cfg()); // load Main_page + + // load dbs from "xowa_db" tbl + Xow_db_file[] ary = db__core.Tbl__db().Select_all(props, core_url.OwnerDir()); + int len = ary.length; + for (int i = 0; i < len; i++) { + Xow_db_file db = ary[i]; + Dbs__set_by_tid(db); + Dbs__add(db); + } + } + public void Init_by_make(Xowd_core_db_props props, Xob_info_session info_session) { + this.props = props; + + // save data + Xow_db_file core_db = Xow_db_file__core_.Make_core_db(props, info_session, wiki_root_dir, domain_str); + Dbs__set_by_tid(core_db); + Dbs__add_and_save(core_db); + props.Cfg_save(db__core.Tbl__cfg()); // NOTE: must save cfg now, especially zip_tid; latter will be reloaded after import is done; + } + public void Rls() { + int len = hash_by_id.Len(); + for (int i = 0; i < len; i++) { + Xow_db_file db_file = (Xow_db_file)hash_by_id.Get_at(i); + db_file.Rls(); + } + } + + public int Dbs__len() {return hash_by_id.Len();} + public Xow_db_file Dbs__get_at(int i) {return (Xow_db_file)hash_by_id.Get_at(i);} + public Xow_db_file Dbs__get_by_id_or_fail(int id) {return (Xow_db_file)hash_by_id.Get_by_or_fail(id);} + public Xow_db_file Dbs__get_by_id_or_null(int id) {return (Xow_db_file)hash_by_id.Get_by(id);} + public Xow_db_file Dbs__get_by_tid_or_core(byte... tids_ary) {Xow_db_file rv = Dbs__get_by_tid_or_null(tids_ary); return rv == null ? db__core : rv;} + public Xow_db_file Dbs__get_by_tid_or_null(byte... tids_ary) { + int tids_len = tids_ary.length; + for (int i = 0; i < tids_len; ++i) { + byte tid = tids_ary[i]; + Ordered_hash tid_dbs = hash_by_tids.Get_by_tid_or_null(tid); if (tid_dbs == null) continue; + int tid_dbs_len = tid_dbs.Len(); + if (tid_dbs_len != 1) { // NOTE: occurs when multiple search imports fail; DATE:2016-04-04 + Xoa_app_.Usr_dlg().Warn_many("", "", "expecting only 1 db for tid; tid=~{0} len=~{1} db_api=~{2}", tid, tid_dbs.Len(), db__core.Conn().Conn_info().Db_api()); + } + return (Xow_db_file)tid_dbs.Get_at(tid_dbs_len - 1); // get last idx; + } + return null; + } + public Ordered_hash Dbs__get_hash_by_tid(int tid) {return hash_by_tids.Get_by_tid_or_null((byte)tid);} + public Xow_db_file Dbs__make_by_tid(byte tid) { + int tid_idx = Get_tid_idx(hash_by_tids, tid); + return Dbs__make_by_tid(tid, Xob_info_file.Ns_ids_empty, tid_idx, Get_tid_name(tid_idx, tid)); + } + public Xow_db_file Dbs__make_by_tid(byte tid, String ns_ids, int part_id, String file_name_suffix) { + return Dbs__make_by_id(db_id_next++, tid, ns_ids, part_id, file_name_suffix); + } + public Xow_db_file Dbs__make_by_id(int id, byte tid, String ns_ids, int part_id, String file_name_suffix) { + Io_url url = wiki_root_dir.GenSubFil(domain_str + file_name_suffix); + Xow_db_file rv = Xow_db_file.make_(db__core.Info_session(), props, id, tid, url, ns_ids, part_id, db__core.Url().NameAndExt(), Db_conn_bldr.Instance.New(url)); + Dbs__add_and_save(rv); + Dbs__set_by_tid(rv); + return rv; + } + public Xow_db_file Dbs__remake_by_tid(byte tid) { + Dbs__delete_by_tid(tid); + return Dbs__make_by_tid(tid); + } + public void Dbs__delete_by_tid(byte... tids) { + int len = hash_by_id.Len(); + for (int i = 0; i < len; ++i) { + Xow_db_file db = (Xow_db_file)hash_by_id.Get_at(i); + if (!Byte_.In(db.Tid(), tids)) continue; + db.Rls(); + Io_mgr.Instance.DeleteFil_args(db.Url()).MissingFails_off().Exec(); + db.Cmd_mode_(Db_cmd_mode.Tid_delete); + } + db__core.Tbl__db().Commit_all(this); + this.Init_by_load(db__core.Url()); + } + public void Create_page(Xowd_page_tbl core_tbl, Xowd_text_tbl text_tbl, int page_id, int ns_id, byte[] ttl_wo_ns, boolean redirect, DateAdp modified_on, byte[] text_zip_data, int text_raw_len, int random_int, int text_db_id, int html_db_id) { + core_tbl.Insert_cmd_by_batch(page_id, ns_id, ttl_wo_ns, redirect, modified_on, text_raw_len, random_int, text_db_id, html_db_id); + text_tbl.Insert_cmd_by_batch(page_id, text_zip_data); + } + private void Dbs__set_by_tid(Xow_db_file db) { + switch (db.Tid()) { + case Xow_db_file_.Tid__wiki_solo: + case Xow_db_file_.Tid__text_solo: + case Xow_db_file_.Tid__core : {db__core = db; if (props.Layout_text().Tid_is_all_or_few()) db__cat_core = db__text = db; break;} + case Xow_db_file_.Tid__text : {db__text = db; break;} + case Xow_db_file_.Tid__html_data : {db__html = db; break;} + case Xow_db_file_.Tid__wbase : {if (db__wbase == null) db__wbase = db; break;} + case Xow_db_file_.Tid__cat_core : + case Xow_db_file_.Tid__cat : {if (db__cat_core == null) db__cat_core = db; break;} + } + } + private void Dbs__add(Xow_db_file db_file) { + int db_id = db_file.Id(); + hash_by_id.Add(db_id, db_file); + hash_by_tids.Add_or_new(db_file); + if (db_id >= db_id_next) // always set db_id_next to largest value in given set of dbs; EX: dbs=[0,1,10]; db_id_next should be 11 + db_id_next = db_id + 1; + } + private void Dbs__add_and_save(Xow_db_file db_file) { + Dbs__add(db_file); + + db__core.Tbl__db().Commit_all(this); + db_file.Info_file().Save(db_file.Tbl__cfg()); + db_file.Info_session().Save(db_file.Tbl__cfg()); + } + private int Get_tid_idx(Xow_db_file_hash hash, byte tid) {return hash.Count_of_tid(tid) + Int_.Base1;} + private static String Get_tid_name(int tid_idx, byte tid) { + String tid_name = Xow_db_file_.To_key(tid); + String tid_idx_str = ""; + switch (tid) { + case Xow_db_file_.Tid__cat_core : break; + case Xow_db_file_.Tid__cat_link : tid_idx_str = "-db." + Int_.To_str_pad_bgn_zero(tid_idx, 3); break; + default : tid_idx_str = tid_idx == 1 ? "" : "-db." + Int_.To_str_pad_bgn_zero(tid_idx, 3); break; + } + return String_.Format("-{0}{1}.xowa", tid_name, tid_idx_str); // EX: en.wikipedia.org-text-001.sqlite3 + } +} diff --git a/400_xowa/src/gplx/xowa/wikis/data/Xowd_cfg_tbl_.java b/400_xowa/src/gplx/xowa/wikis/data/Xowd_cfg_tbl_.java index 9a9f9ef5a..3c16b7915 100644 --- a/400_xowa/src/gplx/xowa/wikis/data/Xowd_cfg_tbl_.java +++ b/400_xowa/src/gplx/xowa/wikis/data/Xowd_cfg_tbl_.java @@ -19,9 +19,8 @@ package gplx.xowa.wikis.data; import gplx.*; import gplx.xowa.*; import gplx.xow import gplx.dbs.*; import gplx.dbs.cfgs.*; public class Xowd_cfg_tbl_ { public static final String Tbl_name = "xowa_cfg"; - public static Db_cfg_tbl New(gplx.dbs.Db_conn conn) { - return new Db_cfg_tbl(conn, Tbl_name); - } + public static Db_cfg_tbl New(gplx.dbs.Db_conn conn) {return New(conn, Tbl_name);} + public static Db_cfg_tbl New(gplx.dbs.Db_conn conn, String tbl_name) {return new Db_cfg_tbl(conn, tbl_name);} public static Db_cfg_tbl Get_or_null(gplx.dbs.Db_conn conn) { return conn.Meta_tbl_exists(Tbl_name) ? new Db_cfg_tbl(conn, Tbl_name) : null; } diff --git a/400_xowa/src/gplx/xowa/wikis/data/Xowd_core_db_props.java b/400_xowa/src/gplx/xowa/wikis/data/Xowd_core_db_props.java index eab1d0d1b..b624795c1 100644 --- a/400_xowa/src/gplx/xowa/wikis/data/Xowd_core_db_props.java +++ b/400_xowa/src/gplx/xowa/wikis/data/Xowd_core_db_props.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.wikis.data; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; -import gplx.core.ios.*; import gplx.dbs.*; import gplx.dbs.cfgs.*; +import gplx.core.ios.*; import gplx.core.ios.streams.*; import gplx.dbs.*; import gplx.dbs.cfgs.*; import gplx.dbs.metas.*; import gplx.xowa.bldrs.cmds.*; import gplx.xowa.wikis.dbs.*; public class Xowd_core_db_props { - public Xowd_core_db_props(int schema, Xowd_db_layout layout_text, Xowd_db_layout layout_html, Xowd_db_layout layout_file + public Xowd_core_db_props(int schema, Xow_db_layout layout_text, Xow_db_layout layout_html, Xow_db_layout layout_file , byte zip_tid_text, byte zip_tid_html, boolean hzip_enabled, boolean hzip_mode_is_b256) { this.schema = schema; this.layout_text = layout_text; this.layout_html = layout_html; this.layout_file = layout_file; @@ -28,9 +28,9 @@ public class Xowd_core_db_props { } public int Schema() {return schema;} private final int schema; public boolean Schema_is_1() {return schema == 1;} - public Xowd_db_layout Layout_text() {return layout_text;} private final Xowd_db_layout layout_text; - public Xowd_db_layout Layout_html() {return layout_html;} private final Xowd_db_layout layout_html; - public Xowd_db_layout Layout_file() {return layout_file;} private final Xowd_db_layout layout_file; + public Xow_db_layout Layout_text() {return layout_text;} private final Xow_db_layout layout_text; + public Xow_db_layout Layout_html() {return layout_html;} private final Xow_db_layout layout_html; + public Xow_db_layout Layout_file() {return layout_file;} private final Xow_db_layout layout_file; public byte Zip_tid_text() {return zip_tid_text;} private final byte zip_tid_text; public byte Zip_tid_html() {return zip_tid_html;} private final byte zip_tid_html; public boolean Hzip_enabled() {return hzip_enabled;} private final boolean hzip_enabled; @@ -38,20 +38,20 @@ public class Xowd_core_db_props { public void Cfg_save(Db_cfg_tbl tbl) { tbl.Conn().Txn_bgn("make__core__cfg__save"); tbl.Insert_int (Cfg_grp, Cfg_key__schema_version , schema); - tbl.Insert_str (Cfg_grp, Cfg_key__layout_text , layout_text.Name()); - tbl.Insert_str (Cfg_grp, Cfg_key__layout_html , layout_html.Name()); - tbl.Insert_str (Cfg_grp, Cfg_key__layout_file , layout_file.Name()); + tbl.Insert_str (Cfg_grp, Cfg_key__layout_text , layout_text.Key()); + tbl.Insert_str (Cfg_grp, Cfg_key__layout_html , layout_html.Key()); + tbl.Insert_str (Cfg_grp, Cfg_key__layout_file , layout_file.Key()); tbl.Insert_byte (Cfg_grp, Cfg_key__zip_tid_text , zip_tid_text); tbl.Insert_byte (Cfg_grp, Cfg_key__zip_tid_html , zip_tid_html); tbl.Insert_yn (Cfg_grp, Cfg_key__hzip_enabled , hzip_enabled); tbl.Insert_yn (Cfg_grp, Cfg_key__hzip_mode_is_b256 , hzip_mode_is_b256); tbl.Conn().Txn_end(); } - public static Xowd_core_db_props Cfg_load(Io_url url, Db_conn conn) { - Db_cfg_tbl cfg_tbl = gplx.xowa.wikis.data.Xowd_cfg_tbl_.New(conn); + public static Xowd_core_db_props Cfg_load(Db_conn conn) {return Cfg_load(conn, gplx.xowa.wikis.data.Xowd_cfg_tbl_.New(conn));} + public static Xowd_core_db_props Cfg_load(Db_conn conn, Db_cfg_tbl cfg_tbl) { return cfg_tbl.Select_int_or(Cfg_grp, Cfg_key__schema_version, 1) == 1 ? new Xowd_core_db_props - ( 1, Xowd_db_layout.Itm_lot, Xowd_db_layout.Itm_lot, Xowd_db_layout.Itm_lot, cfg_tbl.Select_byte_or(Xowe_wiki.Invk_db_mgr, Xodb_mgr_sql.Invk_data_storage_format + ( 1, Xow_db_layout.Itm_lot, Xow_db_layout.Itm_lot, Xow_db_layout.Itm_lot, cfg_tbl.Select_byte_or(Xowe_wiki.Invk_db_mgr, Xodb_mgr_sql.Invk_data_storage_format , Io_stream_.Tid_gzip), Io_stream_.Tid_gzip, Bool_.Y, Bool_.N) : Cfg_load(cfg_tbl); } @@ -59,9 +59,9 @@ public class Xowd_core_db_props { Db_cfg_hash cfg_hash = tbl.Select_as_hash(Cfg_grp); return new Xowd_core_db_props ( cfg_hash.Get_by(Cfg_key__schema_version).To_int() - , Xowd_db_layout.get_(cfg_hash.Get_by(Cfg_key__layout_text).To_str()) - , Xowd_db_layout.get_(cfg_hash.Get_by(Cfg_key__layout_html).To_str()) - , Xowd_db_layout.get_(cfg_hash.Get_by(Cfg_key__layout_file).To_str()) + , Xow_db_layout.Get_by_name(cfg_hash.Get_by(Cfg_key__layout_text).To_str()) + , Xow_db_layout.Get_by_name(cfg_hash.Get_by(Cfg_key__layout_html).To_str()) + , Xow_db_layout.Get_by_name(cfg_hash.Get_by(Cfg_key__layout_file).To_str()) , cfg_hash.Get_by(Cfg_key__zip_tid_text).To_byte() , cfg_hash.Get_by(Cfg_key__zip_tid_html).To_byte() , cfg_hash.Get_by(Cfg_key__hzip_enabled).To_yn_or(Bool_.N) @@ -78,5 +78,5 @@ public class Xowd_core_db_props { , Cfg_key__hzip_enabled = "hzip_enabled" , Cfg_key__hzip_mode_is_b256 = "hzip_mode_is_b256" ; - public static final Xowd_core_db_props Test = new Xowd_core_db_props(2, Xowd_db_layout.Itm_few, Xowd_db_layout.Itm_few, Xowd_db_layout.Itm_few, Io_stream_.Tid_raw, Io_stream_.Tid_raw, Bool_.Y, Bool_.Y); + public static final Xowd_core_db_props Test = new Xowd_core_db_props(2, Xow_db_layout.Itm_few, Xow_db_layout.Itm_few, Xow_db_layout.Itm_few, Io_stream_.Tid_raw, Io_stream_.Tid_raw, Bool_.Y, Bool_.Y); } diff --git a/400_xowa/src/gplx/xowa/wikis/data/Xowd_db_file_.java b/400_xowa/src/gplx/xowa/wikis/data/Xowd_db_file_.java deleted file mode 100644 index 0ff19c408..000000000 --- a/400_xowa/src/gplx/xowa/wikis/data/Xowd_db_file_.java +++ /dev/null @@ -1,59 +0,0 @@ -/* -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.wikis.data; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; -public class Xowd_db_file_ { - public static final int Id_core = 0; - public static final byte - Tid_core = 1, Tid_text = 2, Tid_cat = 3, Tid_search_core = 4, Tid_wbase = 5 // SERIALIZED:v1 - , Tid_cat_core = 6, Tid_cat_link = 7 // SERIALIZED:v2 - , Tid_wiki_solo = 8, Tid_text_solo = 9 - , Tid_html_solo = 10, Tid_html_data = 11 - , Tid_file_solo = 12, Tid_file_core = 13, Tid_file_data = 14, Tid_file_user = 15 - , Tid_search_link = 16, Tid_random = 17 - ; - private static final String - Key_core = "core", Key_text = "text", Key_cat = "xtn.category", Key_search_core = "xtn.search.core", Key_wbase = "core.wbase" - , Key_cat_core = "xtn.category.core", Key_cat_link = "xtn.category.link" - , Key_text_solo = "text.solo", Key_wiki_solo = "wiki.solo" - , Key_html_solo = "html.solo", Key_html_data = "html" - , Key_file_solo = "file.solo", Key_file_core = "file.core", Key_file_data = "file.data", Key_file_user = "file.user" - , Key_search_link = "xtn.search.link", Key_random = "xtn.random" - ; - public static String To_key(byte v) { - switch (v) { - case Tid_core: return Key_core; - case Tid_text: return Key_text; - case Tid_cat: return Key_cat; - case Tid_search_core: return Key_search_core; - case Tid_wbase: return Key_wbase; - case Tid_cat_core: return Key_cat_core; - case Tid_cat_link: return Key_cat_link; - case Tid_wiki_solo: return Key_wiki_solo; - case Tid_text_solo: return Key_text_solo; - case Tid_html_solo: return Key_html_solo; - case Tid_html_data: return Key_html_data; - case Tid_file_solo: return Key_file_solo; - case Tid_file_core: return Key_file_core; - case Tid_file_data: return Key_file_data; - case Tid_file_user: return Key_file_user; - case Tid_search_link: return Key_search_link; - case Tid_random: return Key_random; - default: throw Err_.new_unhandled(v); - } - } -} diff --git a/400_xowa/src/gplx/xowa/wikis/data/Xowd_db_layout.java b/400_xowa/src/gplx/xowa/wikis/data/Xowd_db_layout.java deleted file mode 100644 index d1279b4ca..000000000 --- a/400_xowa/src/gplx/xowa/wikis/data/Xowd_db_layout.java +++ /dev/null @@ -1,46 +0,0 @@ -/* -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.wikis.data; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; -public class Xowd_db_layout { - public Xowd_db_layout(int tid) {this.tid = tid;} - public int Tid() {return tid;} private final int tid; - public boolean Tid_is_all() {return tid == Const_all;} - public boolean Tid_is_all_or_few() {return tid != Const_lot;} - public boolean Tid_is_lot() {return tid == Const_lot;} - public String Name() { - switch (tid) { - case Const_all: return Name_all; - case Const_few: return Name_few; - case Const_lot: return Name_lot; - default: throw Err_.new_unimplemented(); - } - } - public static final String Name_all = "all", Name_few = "few", Name_lot = "lot"; - public static final int Const_all = 1, Const_few = 2, Const_lot = 3; - public static final Xowd_db_layout - Itm_all = new Xowd_db_layout(Const_all) - , Itm_few = new Xowd_db_layout(Const_few) - , Itm_lot = new Xowd_db_layout(Const_lot) - ; - public static Xowd_db_layout get_(String v) { - if (String_.Eq(v, Name_all)) return Itm_all; - else if (String_.Eq(v, Name_few)) return Itm_few; - else if (String_.Eq(v, Name_lot)) return Itm_lot; - else throw Err_.new_unimplemented(); - } -} diff --git a/400_xowa/src/gplx/xowa/wikis/data/Xowd_db_mgr.java b/400_xowa/src/gplx/xowa/wikis/data/Xowd_db_mgr.java deleted file mode 100644 index 06c8944a5..000000000 --- a/400_xowa/src/gplx/xowa/wikis/data/Xowd_db_mgr.java +++ /dev/null @@ -1,185 +0,0 @@ -/* -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.wikis.data; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; -import gplx.dbs.*; import gplx.dbs.cfgs.*; -import gplx.xowa.wikis.dbs.*; import gplx.xowa.wikis.data.tbls.*; -import gplx.xowa.wikis.domains.*; import gplx.xowa.bldrs.infos.*; -public class Xowd_db_mgr { - private Xowd_db_file[] dbs__ary = new Xowd_db_file[0]; private int dbs__ary_len = 0; private final Xowd_db_file_hash db_file_hash = new Xowd_db_file_hash(); - private final Hash_adp id_hash = Hash_adp_.new_(); private final gplx.core.primitives.Int_obj_ref id_hash_ref = gplx.core.primitives.Int_obj_ref.neg1_(); - private final Xow_wiki wiki; private final Io_url wiki_root_dir; private final Xow_domain_itm domain_itm; - public Xowd_db_mgr(Xow_wiki wiki, Io_url wiki_root_dir, Xow_domain_itm domain_itm) {this.wiki = wiki; this.wiki_root_dir = wiki_root_dir; this.domain_itm = domain_itm;} - public Xowd_core_db_props Props() {return props;} private Xowd_core_db_props props = Xowd_core_db_props.Test; - public Db_cfg_tbl Tbl__cfg() {return db__core.Tbl__cfg();} - public Xowd_page_tbl Tbl__page() {return db__core.Tbl__page();} - public Xowd_db_file Db__core() {return db__core;} private Xowd_db_file db__core; - public Xowd_db_file Db__text() {return db__text;} private Xowd_db_file db__text; - public Xowd_db_file Db__html() {return db__html;} private Xowd_db_file db__html; - public Xowd_db_file Db__cat_core() {return db__cat_core;} private Xowd_db_file db__cat_core; - public Xowd_db_file Db__wbase() {return db__wbase;} private Xowd_db_file db__wbase; - public int Dbs__len() {return dbs__ary.length;} - public void Db__wbase_(Xowd_db_file v) {db__wbase = v;} - public Ordered_hash Dbs__get_hash_by_tid(int tid) {return db_file_hash.Get_by_tid_or_null((byte)tid);} - public Xowd_db_file Dbs__get_at(int i) {return dbs__ary[i];} - public Xowd_db_file Dbs__get_by_id(int id) {return (Xowd_db_file)id_hash.Get_by_or_fail(id_hash_ref.Val_(id));} - public Xowd_db_file Dbs__get_by_tid_or_core(byte... tids_ary) {Xowd_db_file rv = Dbs__get_by_tid_or_null(tids_ary); return rv == null ? db__core : rv;} - public Xowd_db_file Dbs__get_by_tid_or_null(byte... tids_ary) { - int tids_len = tids_ary.length; - for (int i = 0; i < tids_len; ++i) { - byte tid = tids_ary[i]; - Ordered_hash tid_dbs = db_file_hash.Get_by_tid_or_null(tid); if (tid_dbs == null) continue; - int tid_dbs_len = tid_dbs.Len(); - if (tid_dbs_len != 1) { // NOTE: occurs when multiple search imports fail; DATE:2016-04-04 - Xoa_app_.Usr_dlg().Warn_many("", "", "expecting only 1 db for tid; tid=~{0} len=~{1} db_api=~{2}", tid, tid_dbs.Len(), db__core.Conn().Conn_info().Db_api()); - } - return (Xowd_db_file)tid_dbs.Get_at(tid_dbs_len - 1); // get last idx; - } - return null; - } - public Xowd_db_file Dbs__make_by_tid(byte tid) { - int tid_idx = Get_tid_idx(db_file_hash, tid); - return Dbs__make_by_tid(tid, Xob_info_file.Ns_ids_empty, tid_idx, Get_tid_name(db_file_hash, tid_idx, tid)); - } - public Xowd_db_file Dbs__make_by_tid(byte tid, String ns_ids, int part_id, String file_name_suffix) { - Io_url url = wiki_root_dir.GenSubFil(domain_itm.Domain_str() + file_name_suffix); - int next_id = Dbs__get_at(dbs__ary_len - 1).Id() + 1; - Xowd_db_file rv = Xowd_db_file.make_(db__core.Info_session(), props, next_id, tid, url, ns_ids, part_id, db__core.Url().NameAndExt(), Db_conn_bldr.Instance.New(url)); - Dbs__add_and_save(rv); - Dbs__set_by_tid(rv); - return rv; - } - public Xowd_db_file Dbs__remake_by_tid(byte tid) { - Dbs__delete_by_tid(tid); - return Dbs__make_by_tid(tid); - } - public void Dbs__delete_by_tid(byte... tids) { - int len = dbs__ary_len; - for (int i = 0; i < len; ++i) { - Xowd_db_file db = dbs__ary[i]; - if (!Byte_.In(db.Tid(), tids)) continue; - db.Rls(); - Io_mgr.Instance.DeleteFil_args(db.Url()).MissingFails_off().Exec(); - db.Cmd_mode_(Db_cmd_mode.Tid_delete); - } - db__core.Tbl__db().Commit_all(this); - this.Init_by_load(db__core.Url()); - } - public void Init_by_load(Io_url core_url) { - db_file_hash.Clear(); - id_hash.Clear(); - Db_conn core_conn = Db_conn_bldr.Instance.Get(core_url); - props = Xowd_core_db_props.Cfg_load(core_url, core_conn); - Dbs__set_by_tid(Xowd_db_file.load_(props, Xowd_db_file_.Id_core, Core_db_tid(props.Layout_text()), core_url, Xob_info_file.Ns_ids_empty, Xob_info_file.Part_id_1st, Guid_adp_.Empty)); - dbs__ary = db__core.Tbl__db().Select_all(props, core_url.OwnerDir()); - dbs__ary_len = dbs__ary.length; - for (int i = 0; i < dbs__ary_len; i++) { - Xowd_db_file db = dbs__ary[i]; - Dbs__set_by_tid(db); - db_file_hash.Add_or_new(db); - id_hash.Add(gplx.core.primitives.Int_obj_ref.new_(db.Id()), db); - } - wiki.Props().Init_by_load(wiki.App(), Tbl__cfg()); - } - public void Init_by_make(Xowd_core_db_props props, Xob_info_session info_session) { - this.props = props; - String core_file_name = Core_file_name(props.Layout_text(), domain_itm.Domain_str()); - byte core_db_tid = Core_db_tid(props.Layout_text()); - Io_url core_db_url = wiki_root_dir.GenSubFil(core_file_name); - Db_conn conn = Db_conn_bldr.Instance.New(core_db_url); - conn.Txn_bgn("make__core__tbls"); - Dbs__set_by_tid(Xowd_db_file.make_(info_session, props, Xowd_db_file_.Id_core, core_db_tid, core_db_url, Xob_info_file.Ns_ids_empty, Xob_info_file.Part_id_1st, core_file_name, conn)); - db__core.Tbl__db().Create_tbl(); - db__core.Tbl__ns().Create_tbl(); - db__core.Tbl__site_stats().Create_tbl(); - db__core.Tbl__page().Create_tbl(); - if (props.Layout_text().Tid_is_all_or_few()) { // create in advance else will fail for v2; import wiki -> wiki loads and tries to load categories; v2 category processes and builds tbl; DATE:2015-03-22 - db__core.Tbl__cat_core().Create_tbl(); - db__core.Tbl__cat_link().Create_tbl(); - } - Dbs__add_and_save(db__core); - props.Cfg_save(db__core.Tbl__cfg()); // NOTE: must save cfg now, especially zip_tid; latter will be reloaded after import is done; - conn.Txn_end(); - } - public void Create_page(Xowd_page_tbl core_tbl, Xowd_text_tbl text_tbl, int page_id, int ns_id, byte[] ttl_wo_ns, boolean redirect, DateAdp modified_on, byte[] text_zip_data, int text_raw_len, int random_int, int text_db_id, int html_db_id) { - core_tbl.Insert_cmd_by_batch(page_id, ns_id, ttl_wo_ns, redirect, modified_on, text_raw_len, random_int, text_db_id, html_db_id); - text_tbl.Insert_cmd_by_batch(page_id, text_zip_data); - } - private void Dbs__set_by_tid(Xowd_db_file db) { - switch (db.Tid()) { - case Xowd_db_file_.Tid_wiki_solo: - case Xowd_db_file_.Tid_text_solo: - case Xowd_db_file_.Tid_core : {db__core = db; if (props.Layout_text().Tid_is_all_or_few()) db__cat_core = db__text = db; break;} - case Xowd_db_file_.Tid_text : {db__text = db; break;} - case Xowd_db_file_.Tid_html_data : {db__html = db; break;} - case Xowd_db_file_.Tid_wbase : {if (db__wbase == null) db__wbase = db; break;} - case Xowd_db_file_.Tid_cat_core : - case Xowd_db_file_.Tid_cat : {if (db__cat_core == null) db__cat_core = db; break;} - } - } - private void Dbs__add_and_save(Xowd_db_file rv) { - dbs__ary = (Xowd_db_file[])Array_.Resize(dbs__ary, dbs__ary_len + 1); - dbs__ary[dbs__ary_len++] = rv; - db__core.Tbl__db().Commit_all(this); - rv.Info_file().Save(rv.Tbl__cfg()); - rv.Info_session().Save(rv.Tbl__cfg()); - db_file_hash.Add_or_new(rv); - id_hash.Add(gplx.core.primitives.Int_obj_ref.new_(rv.Id()), rv); - } - public void Rls() { - for (int i = 0; i < dbs__ary_len; i++) - dbs__ary[i].Rls(); - } - private int Get_tid_idx(Xowd_db_file_hash hash, byte tid) {return hash.Count_of_tid(tid) + Int_.Base1;} - private String Get_tid_name(Xowd_db_file_hash hash, int tid_idx, byte tid) { - String tid_name = Xowd_db_file_.To_key(tid); - String tid_idx_str = ""; - switch (tid) { - case Xowd_db_file_.Tid_cat_core : break; - case Xowd_db_file_.Tid_cat_link : tid_idx_str = "-db." + Int_.To_str_pad_bgn_zero(tid_idx, 3); break; - default : tid_idx_str = tid_idx == 1 ? "" : "-db." + Int_.To_str_pad_bgn_zero(tid_idx, 3); break; - } - return String_.Format("-{0}{1}.xowa", tid_name, tid_idx_str); // EX: en.wikipedia.org-text-001.sqlite3 - } - private static String Core_file_name(Xowd_db_layout layout, String domain_name) { - switch (layout.Tid()) { - case Xowd_db_layout.Const_all: return domain_name + ".xowa"; // EX: en.wikipedia.org.xowa - case Xowd_db_layout.Const_few: return domain_name + "-text.xowa"; // EX: en.wikipedia.org-text.xowa - case Xowd_db_layout.Const_lot: return domain_name + "-core.xowa"; // EX: en.wikipedia.org-core.xowa - default: throw Err_.new_unimplemented(); - } - } - public static boolean Maybe_core(String domain_name, String fil_name) { - Xow_domain_itm domain_itm = Xow_domain_itm_.parse(Bry_.new_u8(domain_name)); - if (domain_itm.Domain_type_id() == Xow_domain_tid_.Int__other) { - return String_.Has_at_end(fil_name, ".xowa"); - } - String domain_str = domain_itm.Domain_str(); - return ( String_.Eq(fil_name, domain_str + "-text.xowa") - || String_.Eq(fil_name, domain_str + "-core.xowa") - || String_.Eq(fil_name, domain_str + ".xowa") - ); - } - private static byte Core_db_tid(Xowd_db_layout layout) { - switch (layout.Tid()) { - case Xowd_db_layout.Const_all: return Xowd_db_file_.Tid_wiki_solo; - case Xowd_db_layout.Const_few: return Xowd_db_file_.Tid_text_solo; - case Xowd_db_layout.Const_lot: return Xowd_db_file_.Tid_core; - default: throw Err_.new_unimplemented(); - } - } -} diff --git a/400_xowa/src/gplx/xowa/wikis/data/Xow_page_fetcher.java b/400_xowa/src/gplx/xowa/wikis/data/fetchers/Xow_page_fetcher.java similarity index 86% rename from 400_xowa/src/gplx/xowa/wikis/data/Xow_page_fetcher.java rename to 400_xowa/src/gplx/xowa/wikis/data/fetchers/Xow_page_fetcher.java index 2d0cf7138..912950940 100644 --- a/400_xowa/src/gplx/xowa/wikis/data/Xow_page_fetcher.java +++ b/400_xowa/src/gplx/xowa/wikis/data/fetchers/Xow_page_fetcher.java @@ -15,7 +15,7 @@ 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.wikis.data; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; +package gplx.xowa.wikis.data.fetchers; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.data.*; import gplx.xowa.wikis.data.tbls.*; public interface Xow_page_fetcher { Xow_page_fetcher Wiki_(Xowe_wiki v); diff --git a/400_xowa/src/gplx/xowa/wikis/data/Xow_page_fetcher_test.java b/400_xowa/src/gplx/xowa/wikis/data/fetchers/Xow_page_fetcher_test.java similarity index 89% rename from 400_xowa/src/gplx/xowa/wikis/data/Xow_page_fetcher_test.java rename to 400_xowa/src/gplx/xowa/wikis/data/fetchers/Xow_page_fetcher_test.java index d3d7d5cf9..f478b8eec 100644 --- a/400_xowa/src/gplx/xowa/wikis/data/Xow_page_fetcher_test.java +++ b/400_xowa/src/gplx/xowa/wikis/data/fetchers/Xow_page_fetcher_test.java @@ -15,11 +15,11 @@ 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.wikis.data; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; +package gplx.xowa.wikis.data.fetchers; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.data.*; import gplx.xowa.wikis.data.tbls.*; public class Xow_page_fetcher_test implements Xow_page_fetcher { public Xow_page_fetcher Wiki_(Xowe_wiki v) {return this;} - public void Clear() {pages.Clear();} private Hash_adp pages = Hash_adp_.new_(); + public void Clear() {pages.Clear();} private Hash_adp pages = Hash_adp_.New(); public void Add(int ns_id, byte[] ttl, byte[] text) { Xowd_page_itm page = new Xowd_page_itm().Ns_id_(ns_id).Ttl_page_db_(ttl).Text_(text); pages.Add(Make_key(ns_id, ttl), page); diff --git a/400_xowa/src/gplx/xowa/wikis/data/Xow_page_fetcher_wiki.java b/400_xowa/src/gplx/xowa/wikis/data/fetchers/Xow_page_fetcher_wiki.java similarity index 81% rename from 400_xowa/src/gplx/xowa/wikis/data/Xow_page_fetcher_wiki.java rename to 400_xowa/src/gplx/xowa/wikis/data/fetchers/Xow_page_fetcher_wiki.java index 43cde6039..f8741df88 100644 --- a/400_xowa/src/gplx/xowa/wikis/data/Xow_page_fetcher_wiki.java +++ b/400_xowa/src/gplx/xowa/wikis/data/fetchers/Xow_page_fetcher_wiki.java @@ -15,13 +15,13 @@ 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.wikis.data; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; +package gplx.xowa.wikis.data.fetchers; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.data.*; public class Xow_page_fetcher_wiki implements Xow_page_fetcher { public Xow_page_fetcher Wiki_(Xowe_wiki v) {this.wiki = v; return this;} private Xowe_wiki wiki; public void Clear() {} public byte[] Get_by(int ns_id, byte[] ttl_bry) { Xoa_ttl ttl = Xoa_ttl.parse(wiki, ns_id, ttl_bry); - Xoae_page page = wiki.Data_mgr().Get_page(ttl, false); // go through data_mgr in case of redirects + Xoae_page page = wiki.Data_mgr().Load_page_by_ttl(ttl); // go through data_mgr in case of redirects return page.Missing() ? null : page.Data_raw(); } } diff --git a/400_xowa/src/gplx/xowa/wikis/data/site_stats/Xow_site_stats_mgr.java b/400_xowa/src/gplx/xowa/wikis/data/site_stats/Xow_site_stats_mgr.java index e3d8fb458..15e6fbf7e 100644 --- a/400_xowa/src/gplx/xowa/wikis/data/site_stats/Xow_site_stats_mgr.java +++ b/400_xowa/src/gplx/xowa/wikis/data/site_stats/Xow_site_stats_mgr.java @@ -17,8 +17,8 @@ along with this program. If not, see . */ package gplx.xowa.wikis.data.site_stats; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.data.*; import gplx.xowa.wikis.nss.*; -public class Xow_site_stats_mgr implements GfoInvkAble { // REF.MW:https://www.mediawiki.org/wiki/Manual:Site_stats_table - private final Xow_wiki wiki; +public class Xow_site_stats_mgr implements Gfo_invk { // REF.MW:https://www.mediawiki.org/wiki/Manual:Site_stats_table + private final Xow_wiki wiki; public Xow_site_stats_mgr(Xow_wiki wiki) {this.wiki = wiki;} public long Num_pages() {return num_pages;} private long num_pages; // ss_total_pages; pages in entire wiki: 16,299,475 public long Num_articles() {return num_articles;} private long num_articles; // ss_good_articles; pages in main ns w/o redirect: 5,072,469 @@ -50,7 +50,7 @@ public class Xow_site_stats_mgr implements GfoInvkAble { // REF.MW:https://www.m else if (ctx.Match(k, Invk_number_of_articles_)) num_articles = m.ReadInt("v"); else if (ctx.Match(k, Invk_number_of_files_)) num_files = m.ReadInt("v"); else if (ctx.Match(k, Invk_number_of_articles_in_ns_)) return Number_of_articles_in_ns_(m); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } public static final String Invk_number_of_pages_ = "number_of_pages_", Invk_number_of_articles_ = "number_of_articles_", Invk_number_of_files_ = "number_of_files_", Invk_number_of_articles_in_ns_ = "number_of_articles_in_ns_"; } diff --git a/400_xowa/src/gplx/xowa/wikis/data/site_stats/Xow_site_stats_tbl.java b/400_xowa/src/gplx/xowa/wikis/data/site_stats/Xow_site_stats_tbl.java index b1b4af23d..f2cc0ddd6 100644 --- a/400_xowa/src/gplx/xowa/wikis/data/site_stats/Xow_site_stats_tbl.java +++ b/400_xowa/src/gplx/xowa/wikis/data/site_stats/Xow_site_stats_tbl.java @@ -18,9 +18,9 @@ along with this program. If not, see . package gplx.xowa.wikis.data.site_stats; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.data.*; import gplx.dbs.*; import gplx.xowa.wikis.data.site_stats.*; public class Xow_site_stats_tbl { - private final String tbl_name = "site_stats"; - private final String fld_row_id, fld_good_articles, fld_total_pages, fld_images; - private final Db_conn conn; private final Dbmeta_fld_list flds = Dbmeta_fld_list.new_(); + private final String tbl_name = "site_stats"; + private final String fld_row_id, fld_good_articles, fld_total_pages, fld_images; + private final Db_conn conn; private final Dbmeta_fld_list flds = new Dbmeta_fld_list(); public Xow_site_stats_tbl(Db_conn conn, boolean schema_is_1) { this.conn = conn; fld_row_id = flds.Add_int_pkey("ss_row_id"); diff --git a/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_cat_core_tbl.java b/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_cat_core_tbl.java index b1a4611ba..5e150f794 100644 --- a/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_cat_core_tbl.java +++ b/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_cat_core_tbl.java @@ -18,10 +18,10 @@ along with this program. If not, see . package gplx.xowa.wikis.data.tbls; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.data.*; import gplx.dbs.*; public class Xowd_cat_core_tbl implements Rls_able { - private final String tbl_name; private final Dbmeta_fld_list flds = Dbmeta_fld_list.new_(); - private final String fld_id, fld_pages, fld_subcats, fld_files, fld_hidden, fld_link_db_id; - private final Db_conn conn; private Db_stmt stmt_insert, stmt_update, stmt_select; - private final Xowd_cat_core_tbl__in_wkr in_wkr = new Xowd_cat_core_tbl__in_wkr(); + private final String tbl_name; private final Dbmeta_fld_list flds = new Dbmeta_fld_list(); + private final String fld_id, fld_pages, fld_subcats, fld_files, fld_hidden, fld_link_db_id; + private final Db_conn conn; private Db_stmt stmt_insert, stmt_update, stmt_select; + private final Xowd_cat_core_tbl__in_wkr in_wkr = new Xowd_cat_core_tbl__in_wkr(); public Db_conn Conn() {return conn;} public Xowd_cat_core_tbl(Db_conn conn, boolean schema_is_1) { this.conn = conn; diff --git a/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_cat_link_tbl.java b/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_cat_link_tbl.java index 5bfe3cc2b..4d045a7f7 100644 --- a/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_cat_link_tbl.java +++ b/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_cat_link_tbl.java @@ -18,9 +18,9 @@ along with this program. If not, see . package gplx.xowa.wikis.data.tbls; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.data.*; import gplx.dbs.*; import gplx.dbs.qrys.*; import gplx.xowa.wikis.ctgs.*; public class Xowd_cat_link_tbl implements Rls_able { - private final String tbl_name; private final Dbmeta_fld_list flds = Dbmeta_fld_list.new_(); - private final String fld_from, fld_to_id, fld_sortkey, fld_timestamp, fld_type_id; - private final Db_conn conn; private Db_stmt stmt_insert, stmt_select_in; + private final String tbl_name; private final Dbmeta_fld_list flds = new Dbmeta_fld_list(); + private final String fld_from, fld_to_id, fld_sortkey, fld_timestamp, fld_type_id; + private final Db_conn conn; private Db_stmt stmt_insert, stmt_select_in; public Db_conn Conn() {return conn;} public Xowd_cat_link_tbl(Db_conn conn, boolean schema_is_1) { this.conn = conn; diff --git a/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_page_itm.java b/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_page_itm.java index dbf805e57..855aa04a8 100644 --- a/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_page_itm.java +++ b/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_page_itm.java @@ -29,11 +29,12 @@ public class Xowd_page_itm { public int Text_len() {return text_len;} public Xowd_page_itm Text_len_(int v) {text_len = v; return this;} private int text_len; public int Text_db_id() {return text_db_id;} public Xowd_page_itm Text_db_id_(int v) {text_db_id = v; return this;} private int text_db_id; public byte[] Text() {return text;} public Xowd_page_itm Text_(byte[] v) {text = v; if (v != null) text_len = v.length; return this;} private byte[] text; + public int Random_int() {return random_int;} private int random_int; public int Html_db_id() {return html_db_id;} private int html_db_id; public int Redirect_id() {return redirect_id;} private int redirect_id; public DateAdp Modified_on() {return modified_on;} public Xowd_page_itm Modified_on_(DateAdp v) {modified_on = v; return this;} private DateAdp modified_on; public boolean Exists() {return exists;} public Xowd_page_itm Exists_(boolean v) {exists = v; return this;} private boolean exists; - public int Page_score; + public int Score() {return score;} private int score; public Xow_ns Ns() {return ns;} private Xow_ns ns; public Object Xtn() {return xtn;} public Xowd_page_itm Xtn_(Object v) {this.xtn = v; return this;} private Object xtn; public int Tdb_row_idx() {return tdb_row_idx;} public void Tdb_row_idx_(int v) {tdb_row_idx = v;} private int tdb_row_idx; @@ -44,17 +45,18 @@ public class Xowd_page_itm { id_val = null; return this; } - public void Init_by_sql(int id, int ns_id, byte[] ttl_page_db, DateAdp modified_on, boolean redirected, int text_len, int text_db_id, int html_db_id, int redirect_id, int page_score) { + public void Init_by_sql(int id, int ns_id, byte[] ttl_page_db, DateAdp modified_on, boolean redirected, int text_len, int random_int, int text_db_id, int html_db_id, int redirect_id, int score) { this.id = id; this.ns_id = ns_id; this.ttl_page_db = ttl_page_db; this.modified_on = modified_on; this.redirected = redirected; this.text_len = text_len; + this.random_int = random_int; this.text_db_id = text_db_id; this.html_db_id = html_db_id; this.redirect_id = redirect_id; - this.Page_score = page_score; + this.score = score; } public void Init_by_tdb(int id, int text_db_id, int tdb_row_idx, boolean redirected, int text_len, int ns_id, byte[] ttl_page_db) { this.id = id; @@ -128,4 +130,9 @@ public class Xowd_page_itm { public static final Xowd_page_itm Null = null; public static Xowd_page_itm new_tmp() {return new Xowd_page_itm();} public static Xowd_page_itm new_srch(int id, int text_len) {return new Xowd_page_itm().Id_(id).Text_len_(text_len);} + + public static final int Db_row_size_fixed = + (8 * 4) // page_id, page_namespace, page_random_int, page_text_db_id, page_html_db_id, page_redirect_id, page_score, page_is_redirect (assume byte saved as int in SQLITE) + + 14 // page_touched + ; } diff --git a/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_page_tbl.java b/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_page_tbl.java index e05754805..ec531df1f 100644 --- a/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_page_tbl.java +++ b/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_page_tbl.java @@ -21,28 +21,11 @@ import gplx.dbs.*; import gplx.xowa.*; import gplx.xowa.wikis.dbs.*; import gplx import gplx.xowa.wikis.nss.*; public class Xowd_page_tbl implements Rls_able { private final String tbl_name = "page"; - public final Db_conn conn; public final boolean schema_is_1; + public final boolean schema_is_1; private String fld_id, fld_ns, fld_title, fld_is_redirect, fld_touched, fld_len, fld_random_int, fld_score, fld_text_db_id, fld_html_db_id, fld_redirect_id; - private final Dbmeta_fld_list flds = Dbmeta_fld_list.new_(); + private final Dbmeta_fld_list flds = new Dbmeta_fld_list(); private Db_stmt stmt_select_all_by_ttl, stmt_select_all_by_id, stmt_select_id_by_ttl, stmt_insert; private final String[] flds_select_all, flds_select_idx; - public String Tbl_name() {return tbl_name;} - public Dbmeta_fld_list Flds__all() {return flds;} - public String Fld_page_id() {return fld_id;} - public String Fld_page_ns() {return fld_ns;} - public String Fld_page_title() {return fld_title;} - public String Fld_page_len() {return fld_len;} - public String Fld_page_score() {return fld_score;} public static final String Fld__page_score__key = "page_score"; - public String Fld_html_db_id() {return fld_html_db_id;} - public String Fld_is_redirect() {return fld_is_redirect;} - public String Fld_redirect_id() {return fld_redirect_id;} - public String[] Flds_select_idx() {return flds_select_idx;} - public String[] Flds_select_all() {return flds_select_all;} - public void Flds__assert() { - conn.Meta_fld_assert(tbl_name, this.Fld_html_db_id() , Dbmeta_fld_tid.Itm__int, -1); - conn.Meta_fld_assert(tbl_name, this.Fld_redirect_id() , Dbmeta_fld_tid.Itm__int, -1); - conn.Meta_fld_assert(tbl_name, Fld__page_score__key , Dbmeta_fld_tid.Itm__int, -1); - } public Xowd_page_tbl(Db_conn conn, boolean schema_is_1) { this.conn = conn; this.schema_is_1 = schema_is_1; String fld_text_db_id_name = ""; @@ -59,10 +42,31 @@ public class Xowd_page_tbl implements Rls_able { fld_html_db_id = flds.Add_int_dflt("page_html_db_id", -1); // MW:XOWA fld_redirect_id = flds.Add_int_dflt("page_redirect_id", -1); // MW:XOWA fld_score = flds.Add_int_dflt(Fld__page_score__key, -1); // MW:XOWA - flds_select_all = String_.Ary_wo_null(fld_id, fld_ns, fld_title, fld_touched, fld_is_redirect, fld_len, fld_text_db_id, fld_html_db_id, fld_redirect_id, fld_score); + flds_select_all = String_.Ary_wo_null(fld_id, fld_ns, fld_title, fld_touched, fld_is_redirect, fld_len, fld_random_int, fld_text_db_id, fld_html_db_id, fld_redirect_id, fld_score); flds_select_idx = String_.Ary_wo_null(fld_ns, fld_title, fld_id, fld_len, fld_score); conn.Rls_reg(this); } + public Db_conn Conn() {return conn;} private final Db_conn conn; + public String Tbl_name() {return tbl_name;} + public Dbmeta_fld_list Flds__all() {return flds;} + public String Fld_page_id() {return fld_id;} + public String Fld_page_ns() {return fld_ns;} + public String Fld_page_title() {return fld_title;} + public String Fld_page_len() {return fld_len;} + public String Fld_page_score() {return fld_score;} public static final String Fld__page_score__key = "page_score"; + public String Fld_text_db_id() {return fld_text_db_id;} + public String Fld_html_db_id() {return fld_html_db_id;} + public String Fld_is_redirect() {return fld_is_redirect;} + public String Fld_random_int() {return fld_random_int;} + public String Fld_modified_on() {return fld_touched;} + public String Fld_redirect_id() {return fld_redirect_id;} + public String[] Flds_select_idx() {return flds_select_idx;} + public String[] Flds_select_all() {return flds_select_all;} + public void Flds__assert() { + conn.Meta_fld_assert(tbl_name, this.Fld_html_db_id() , Dbmeta_fld_tid.Itm__int, -1); + conn.Meta_fld_assert(tbl_name, this.Fld_redirect_id() , Dbmeta_fld_tid.Itm__int, -1); + conn.Meta_fld_assert(tbl_name, Fld__page_score__key , Dbmeta_fld_tid.Itm__int, -1); + } public void Create_tbl() {conn.Meta_tbl_create(Dbmeta_tbl_itm.New(tbl_name, flds.To_fld_ary()));} public void Insert(int page_id, int ns_id, byte[] ttl_wo_ns, boolean page_is_redirect, DateAdp modified_on, int page_len, int random_int, int text_db_id, int html_db_id) { this.Insert_bgn(); @@ -86,6 +90,21 @@ public class Xowd_page_tbl implements Rls_able { .Val_int(fld_score, -1) .Exec_insert(); } + public void Insert_by_itm(Db_stmt stmt, Xowd_page_itm itm, int html_db_id) { + stmt.Clear() + .Val_int (fld_id , itm.Id()) + .Val_int (fld_ns , itm.Ns_id()) + .Val_bry_as_str (fld_title , itm.Ttl_page_db()) + .Val_bool_as_byte (fld_is_redirect , itm.Redirected()) + .Val_str (fld_touched , itm.Modified_on().XtoStr_fmt(Xowd_page_tbl.Page_touched_fmt)) + .Val_int (fld_len , itm.Text_len()) + .Val_int (fld_random_int , itm.Random_int()) + .Val_int (fld_text_db_id , itm.Text_db_id()) + .Val_int (fld_html_db_id , html_db_id) + .Val_int (fld_redirect_id , itm.Redirect_id()) + .Val_int (fld_score , itm.Score()) + .Exec_insert(); + } public boolean Select_by_ttl(Xowd_page_itm rv, Xow_ns ns, byte[] ttl) { if (stmt_select_all_by_ttl == null) stmt_select_all_by_ttl = conn.Stmt_select(tbl_name, flds, String_.Ary(fld_ns, fld_title)); Db_rdr rdr = stmt_select_all_by_ttl.Clear().Crt_int(fld_ns, ns.Id()).Crt_bry_as_str(fld_title, ttl).Exec_select__rls_manual(); @@ -281,6 +300,7 @@ public class Xowd_page_tbl implements Rls_able { , DateAdp_.parse_fmt(rdr.Read_str(fld_touched), Page_touched_fmt) , rdr.Read_bool_by_byte(fld_is_redirect) , page_len + , rdr.Read_int(fld_random_int) , rdr.Read_int(fld_text_db_id) , html_db_id , redirected_id @@ -314,7 +334,7 @@ public class Xowd_page_tbl implements Rls_able { .Exec_update() ; } - public void Create_index() { + public void Create_idx() { conn.Meta_idx_create(Xoa_app_.Usr_dlg() , Dbmeta_idx_itm.new_normal_by_tbl(tbl_name, "title" , fld_title, fld_ns) , Dbmeta_idx_itm.new_normal_by_tbl(tbl_name, "random" , fld_random_int) diff --git a/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_site_ns_tbl.java b/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_site_ns_tbl.java index 792523c49..55bb932a2 100644 --- a/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_site_ns_tbl.java +++ b/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_site_ns_tbl.java @@ -19,9 +19,9 @@ package gplx.xowa.wikis.data.tbls; import gplx.*; import gplx.xowa.*; import gpl import gplx.dbs.*; import gplx.dbs.qrys.*; import gplx.xowa.wikis.nss.*; public class Xowd_site_ns_tbl { - private final String tbl_name; private final Dbmeta_fld_list flds = Dbmeta_fld_list.new_(); - private final String fld_id, fld_name, fld_case, fld_count, fld_is_alias; - private final Db_conn conn; + private final String tbl_name; private final Dbmeta_fld_list flds = new Dbmeta_fld_list(); + private final String fld_id, fld_name, fld_case, fld_count, fld_is_alias; + private final Db_conn conn; public Xowd_site_ns_tbl(Db_conn conn, boolean schema_is_1) { this.conn = conn; this.tbl_name = schema_is_1 ? "xowa_ns" : "site_ns"; diff --git a/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_text_tbl.java b/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_text_tbl.java index c91c910ec..ec0d4706f 100644 --- a/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_text_tbl.java +++ b/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_text_tbl.java @@ -18,10 +18,10 @@ along with this program. If not, see . package gplx.xowa.wikis.data.tbls; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.data.*; import gplx.core.ios.*; import gplx.dbs.*; import gplx.dbs.utls.*; public class Xowd_text_tbl implements Rls_able { - private final String tbl_name = "text"; private final Dbmeta_fld_list flds = Dbmeta_fld_list.new_(); - private final String fld_page_id, fld_text_data; - private final Db_conn conn; private Db_stmt stmt_select, stmt_insert; - private final Io_stream_zip_mgr zip_mgr = Xoa_app_.Utl__zip_mgr(); private final byte zip_tid; + private final String tbl_name = "text"; private final Dbmeta_fld_list flds = new Dbmeta_fld_list(); + private final String fld_page_id, fld_text_data; + private final Db_conn conn; private Db_stmt stmt_select, stmt_insert; + private final Io_stream_zip_mgr zip_mgr = Xoa_app_.Utl__zip_mgr(); private final byte zip_tid; public String Fld_text_data() {return fld_text_data;} public Xowd_text_tbl(Db_conn conn, boolean schema_is_1, byte zip_tid) { this.conn = conn; this.zip_tid = zip_tid; @@ -46,9 +46,12 @@ public class Xowd_text_tbl implements Rls_able { if (stmt_select == null) stmt_select = conn.Stmt_select(tbl_name, flds, fld_page_id); Db_rdr rdr = stmt_select.Clear().Val_int(fld_page_id, page_id).Exec_select__rls_manual(); try { - byte[] rv = (byte[])rdr.Read_bry(fld_text_data); - if (rv == null) rv = Bry_.Empty; // NOTE: defect wherein blank page inserts null not ""; for now always convert nul to empty String; DATE:2015-11-08 - rv = zip_mgr.Unzip(zip_tid, rv); + byte[] rv = Bry_.Empty; + if (rdr.Move_next()) { + rv = rdr.Read_bry(fld_text_data); + if (rv == null) rv = Bry_.Empty; // NOTE: defect wherein blank page inserts null not ""; for now always convert null to empty String; DATE:2015-11-08 + rv = zip_mgr.Unzip(zip_tid, rv); + } return rv; } finally {rdr.Rls();} } diff --git a/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_wbase_pid_tbl.java b/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_wbase_pid_tbl.java index 62cdf1765..a2a4dca01 100644 --- a/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_wbase_pid_tbl.java +++ b/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_wbase_pid_tbl.java @@ -18,9 +18,9 @@ along with this program. If not, see . package gplx.xowa.wikis.data.tbls; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.data.*; import gplx.dbs.*; import gplx.xowa.xtns.wdatas.*; public class Xowd_wbase_pid_tbl implements Rls_able { - private final String tbl_name; private final Dbmeta_fld_list flds = Dbmeta_fld_list.new_(); - private final String fld_src_lang, fld_src_ttl, fld_trg_ttl; - private final Db_conn conn; private Db_stmt stmt_select, stmt_insert; + private final String tbl_name; private final Dbmeta_fld_list flds = new Dbmeta_fld_list(); + private final String fld_src_lang, fld_src_ttl, fld_trg_ttl; + private final Db_conn conn; private Db_stmt stmt_select, stmt_insert; public Xowd_wbase_pid_tbl(Db_conn conn, boolean schema_is_1) { this.conn = conn; String fld_prefix = ""; diff --git a/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_wbase_qid_tbl.java b/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_wbase_qid_tbl.java index b95111af9..bfd968ebb 100644 --- a/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_wbase_qid_tbl.java +++ b/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_wbase_qid_tbl.java @@ -18,9 +18,9 @@ along with this program. If not, see . package gplx.xowa.wikis.data.tbls; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.data.*; import gplx.dbs.*; public class Xowd_wbase_qid_tbl implements Rls_able { - private final String tbl_name; private final Dbmeta_fld_list flds = Dbmeta_fld_list.new_(); - private final String fld_src_wiki, fld_src_ns, fld_src_ttl, fld_trg_ttl; - private final Db_conn conn; private Db_stmt stmt_select, stmt_insert; + private final String tbl_name; private final Dbmeta_fld_list flds = new Dbmeta_fld_list(); + private final String fld_src_wiki, fld_src_ns, fld_src_ttl, fld_trg_ttl; + private final Db_conn conn; private Db_stmt stmt_select, stmt_insert; private boolean src_ttl_has_spaces; public Xowd_wbase_qid_tbl(Db_conn conn, boolean schema_is_1, boolean src_ttl_has_spaces) { this.conn = conn; this.src_ttl_has_spaces = src_ttl_has_spaces; diff --git a/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_xowa_db_tbl.java b/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_xowa_db_tbl.java index d3b4590b7..4a1b5e285 100644 --- a/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_xowa_db_tbl.java +++ b/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_xowa_db_tbl.java @@ -19,15 +19,16 @@ package gplx.xowa.wikis.data.tbls; import gplx.*; import gplx.xowa.*; import gpl import gplx.dbs.*; import gplx.dbs.qrys.*; import gplx.xowa.wikis.data.*; public class Xowd_xowa_db_tbl { - private final String tbl_name; private final Dbmeta_fld_list flds = Dbmeta_fld_list.new_(); - private final String fld_id, fld_type, fld_url, fld_ns_ids, fld_part_id, fld_guid; private boolean schema_is_1; - private final Db_conn conn; private final Db_stmt_bldr stmt_bldr = new Db_stmt_bldr(); + public static final String Tbl_name = "xowa_db", Fld_id = "db_id", Fld_type = "db_type", Fld_url = "db_url"; + private final String tbl_name; private final Dbmeta_fld_list flds = new Dbmeta_fld_list(); + private final String fld_id, fld_type, fld_url, fld_ns_ids, fld_part_id, fld_guid; private boolean schema_is_1; + private final Db_conn conn; private final Db_stmt_bldr stmt_bldr = new Db_stmt_bldr(); public Xowd_xowa_db_tbl(Db_conn conn, boolean schema_is_1) { this.conn = conn; this.schema_is_1 = schema_is_1; - this.tbl_name = "xowa_db"; - fld_id = flds.Add_int_pkey ("db_id"); - fld_type = flds.Add_byte ("db_type"); - fld_url = flds.Add_str ("db_url", 512); + this.tbl_name = Tbl_name; + fld_id = flds.Add_int_pkey (Fld_id); + fld_type = flds.Add_byte (Fld_type); + fld_url = flds.Add_str (Fld_url, 512); if (schema_is_1) { fld_ns_ids = fld_part_id = fld_guid = Dbmeta_fld_itm.Key_null; } @@ -39,8 +40,8 @@ public class Xowd_xowa_db_tbl { stmt_bldr.Conn_(conn, tbl_name, flds, fld_id); } public void Create_tbl() {conn.Meta_tbl_create(Dbmeta_tbl_itm.New(tbl_name, flds));} - public Xowd_db_file[] Select_all(Xowd_core_db_props props, Io_url wiki_root_dir) { - List_adp list = List_adp_.new_(); + public Xow_db_file[] Select_all(Xowd_core_db_props props, Io_url wiki_root_dir) { + List_adp list = List_adp_.New(); Db_rdr rdr = conn.Stmt_select(tbl_name, flds).Exec_select__rls_auto(); try { while (rdr.Move_next()) { @@ -48,15 +49,17 @@ public class Xowd_xowa_db_tbl { if (!schema_is_1) { ns_ids = rdr.Read_str(fld_ns_ids); part_id = rdr.Read_int(fld_part_id); - guid = Guid_adp_.parse(rdr.Read_str(fld_guid)); + guid = Guid_adp_.Parse(rdr.Read_str(fld_guid)); } - list.Add(Xowd_db_file.load_(props, rdr.Read_int(fld_id), rdr.Read_byte(fld_type), wiki_root_dir.GenSubFil(rdr.Read_str(fld_url)), ns_ids, part_id, guid)); + int db_id = rdr.Read_int(fld_id); + Xow_db_file db_file = Xow_db_file.load_(props, db_id, rdr.Read_byte(fld_type), wiki_root_dir.GenSubFil(rdr.Read_str(fld_url)), ns_ids, part_id, guid); + list.Add(db_file); } } finally {rdr.Rls();} - list.Sort_by(Xowd_db_file_sorter__id.Instance); - return (Xowd_db_file[])list.To_ary(Xowd_db_file.class); + list.Sort_by(Xow_db_file_sorter__id.Instance); + return (Xow_db_file[])list.To_ary_and_clear(Xow_db_file.class); } - public void Commit_all(Xowd_db_mgr core_data_mgr) { + public void Commit_all(Xow_db_mgr core_data_mgr) { stmt_bldr.Batch_bgn(); try { int len = core_data_mgr.Dbs__len(); @@ -64,7 +67,7 @@ public class Xowd_xowa_db_tbl { Commit_itm(core_data_mgr.Dbs__get_at(i)); } finally {stmt_bldr.Batch_end();} } - private void Commit_itm(Xowd_db_file itm) { + private void Commit_itm(Xow_db_file itm) { Db_stmt stmt = stmt_bldr.Get(itm.Cmd_mode()); switch (itm.Cmd_mode()) { case Db_cmd_mode.Tid_create: stmt.Clear().Val_int(fld_id, itm.Id()); Commit_itm_vals(stmt, itm); stmt.Exec_insert(); break; @@ -75,15 +78,15 @@ public class Xowd_xowa_db_tbl { } itm.Cmd_mode_(Db_cmd_mode.Tid_ignore); } - private void Commit_itm_vals(Db_stmt stmt, Xowd_db_file itm) { + private void Commit_itm_vals(Db_stmt stmt, Xow_db_file itm) { 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.core.lists.ComparerAble { +class Xow_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; + Xow_db_file lhs = (Xow_db_file)lhsObj; + Xow_db_file rhs = (Xow_db_file)rhsObj; return Int_.Compare(lhs.Id(), rhs.Id()); } - public static final Xowd_db_file_sorter__id Instance = new Xowd_db_file_sorter__id(); Xowd_db_file_sorter__id() {} + public static final Xow_db_file_sorter__id Instance = new Xow_db_file_sorter__id(); Xow_db_file_sorter__id() {} } diff --git a/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_load_mgr.java b/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_load_mgr.java index 3d5037f32..5ce0b7568 100644 --- a/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_load_mgr.java +++ b/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_load_mgr.java @@ -21,7 +21,7 @@ import gplx.xowa.wikis.nss.*; import gplx.xowa.bldrs.cmds.ctgs.*; import gplx.xowa.wikis.ctgs.*; import gplx.xowa.wikis.data.tbls.*; public interface Xodb_load_mgr { void Load_init (Xowe_wiki wiki); - void Load_page (Xowd_page_itm rv, Xow_ns ns, boolean timestamp_enabled); + void Load_page (Xowd_page_itm rv, Xow_ns ns); boolean Load_by_id (Xowd_page_itm rv, int id); void Load_by_ids (Cancelable cancelable, List_adp rv, int bgn, int end); boolean Load_by_ttl (Xowd_page_itm rv, Xow_ns ns, byte[] ttl); diff --git a/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_load_mgr_sql.java b/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_load_mgr_sql.java index 474909643..de2df945d 100644 --- a/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_load_mgr_sql.java +++ b/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_load_mgr_sql.java @@ -20,13 +20,13 @@ import gplx.core.primitives.*; import gplx.dbs.*; import gplx.dbs.cfgs.*; import gplx.xowa.apps.gfs.*; import gplx.xowa.bldrs.cmds.ctgs.*; import gplx.xowa.wikis.ctgs.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.wikis.nss.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.metas.*; import gplx.xowa.wikis.data.*; -import gplx.xowa.addons.apps.searchs.*; +import gplx.xowa.addons.wikis.searchs.*; public class Xodb_load_mgr_sql implements Xodb_load_mgr { - private Xodb_mgr_sql db_mgr; Xowd_db_mgr fsys_mgr; - public Xodb_load_mgr_sql(Xow_wiki wiki, Xodb_mgr_sql db_mgr, Xowd_db_mgr fsys_mgr) {this.db_mgr = db_mgr; this.fsys_mgr = fsys_mgr;} + private Xodb_mgr_sql db_mgr; Xow_db_mgr fsys_mgr; + public Xodb_load_mgr_sql(Xow_wiki wiki, Xodb_mgr_sql db_mgr, Xow_db_mgr fsys_mgr) {this.db_mgr = db_mgr; this.fsys_mgr = fsys_mgr;} public void Load_init(Xowe_wiki wiki) { Load_init_cfg(wiki); - Xowd_db_file db_core = wiki.Data__core_mgr().Db__core(); + Xow_db_file db_core = wiki.Data__core_mgr().Db__core(); db_core.Tbl__site_stats().Select(wiki.Stats()); db_core.Tbl__ns().Select_all(wiki.Ns_mgr()); } @@ -50,8 +50,8 @@ public class Xodb_load_mgr_sql implements Xodb_load_mgr { public void Load_by_ttls(Cancelable cancelable, Ordered_hash rv, boolean fill_idx_fields_only, int bgn, int end) { db_mgr.Core_data_mgr().Tbl__page().Select_in__ns_ttl(cancelable, rv, db_mgr.Wiki().Ns_mgr(), fill_idx_fields_only, bgn, end); } - public void Load_page(Xowd_page_itm rv, Xow_ns ns, boolean timestamp_enabled) { - Xowd_text_tbl text_tbl = db_mgr.Core_data_mgr().Dbs__get_by_id(rv.Text_db_id()).Tbl__text(); + public void Load_page(Xowd_page_itm rv, Xow_ns ns) { + Xowd_text_tbl text_tbl = db_mgr.Core_data_mgr().Dbs__get_by_id_or_fail(rv.Text_db_id()).Tbl__text(); byte[] text_bry = text_tbl.Select(rv.Id()); rv.Text_(text_bry); } @@ -66,7 +66,7 @@ public class Xodb_load_mgr_sql implements Xodb_load_mgr { public void Load_ctg_v2a(Xoctg_view_ctg rv, Xoctg_url ctg_url, byte[] ctg_ttl, int load_max) { int cat_page_id = db_mgr.Core_data_mgr().Tbl__page().Select_id(Xow_ns_.Tid__category, ctg_ttl); if (cat_page_id == Xowd_page_itm.Id_null) return; Xowd_category_itm ctg = fsys_mgr.Db__cat_core().Tbl__cat_core().Select(cat_page_id); if (ctg == Xowd_category_itm.Null) return; - List_adp list = List_adp_.new_(); + List_adp list = List_adp_.New(); Load_ctg_v2a_db_retrieve(rv, ctg_url, cat_page_id, load_max, ctg.File_idx(), list); Load_ctg_v2a_ui_sift(rv, ctg, list); } @@ -75,7 +75,7 @@ public class Xodb_load_mgr_sql implements Xodb_load_mgr { for (byte i = Xoa_ctg_mgr.Tid_subc; i < len; i++) { boolean arg_is_from = ctg_url.Grp_fwds()[i] == Bool_.N_byte; byte[] arg_sortkey = ctg_url.Grp_idxs()[i]; - Xowd_cat_link_tbl cat_link_tbl = db_mgr.Core_data_mgr().Dbs__get_by_id(cat_link_db_idx).Tbl__cat_link(); + Xowd_cat_link_tbl cat_link_tbl = db_mgr.Core_data_mgr().Dbs__get_by_id_or_fail(cat_link_db_idx).Tbl__cat_link(); int found = cat_link_tbl.Select_by_type(list, cat_page_id, i, arg_sortkey, arg_is_from, load_max); if (found > 0 && found == load_max + 1) { Xowd_page_itm last_page = (Xowd_page_itm)List_adp_.Pop(list); @@ -152,9 +152,9 @@ public class Xodb_load_mgr_sql implements Xodb_load_mgr { db_mgr.Core_data_mgr().Db__cat_core().Tbl__cat_core().Select_by_cat_id_in(Cancelable_.Never, hash2, 0, len); return (Xowd_page_itm[])hash.To_ary(Xowd_page_itm.class); } - private static boolean Ctg_select_v1(Xowe_wiki wiki, Xowd_db_mgr core_data_mgr, Xoctg_view_ctg view_ctg, int link_db_id, Xowd_category_itm ctg) { - List_adp link_list = List_adp_.new_(); - core_data_mgr.Dbs__get_by_id(link_db_id).Tbl__cat_link().Select_in(link_list, ctg.Id()); + private static boolean Ctg_select_v1(Xowe_wiki wiki, Xow_db_mgr core_data_mgr, Xoctg_view_ctg view_ctg, int link_db_id, Xowd_category_itm ctg) { + List_adp link_list = List_adp_.New(); + core_data_mgr.Dbs__get_by_id_or_fail(link_db_id).Tbl__cat_link().Select_in(link_list, ctg.Id()); int link_list_len = link_list.Count(); link_list.Sort_by(Xowd_page_itm_sorter.IdAsc); core_data_mgr.Tbl__page().Select_in__id(Cancelable_.Never, false, link_list, 0, link_list_len); diff --git a/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_load_mgr_sql_tst.java b/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_load_mgr_sql_tst.java index 71305a430..0ce9afd41 100644 --- a/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_load_mgr_sql_tst.java +++ b/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_load_mgr_sql_tst.java @@ -40,7 +40,7 @@ class Xoctg_url_mok extends Xoctg_url { public Xoctg_url_mok Page_bgn_(String v) } } class Xodb_load_mgr_sql_fxt { - Db_mgr_fxt fxt; Int_obj_ref next_id = Int_obj_ref.new_(1); Xoae_app app; Xowe_wiki wiki; + Db_mgr_fxt fxt; Int_obj_ref next_id = Int_obj_ref.New(1); Xoae_app app; Xowe_wiki wiki; public void Clear() { if (fxt == null) { fxt = new Db_mgr_fxt(); @@ -85,7 +85,7 @@ class Xodb_load_mgr_sql_fxt { Tfds.Eq_str_lines(Xto_str(ary), Xto_str(actl)); } private static String Xto_str(Xowd_page_itm[] ary) { - Bry_bfr bfr = Bry_bfr.new_(); + Bry_bfr bfr = Bry_bfr_.New(); int len = ary.length; for (int i = 0; i < len; i++) { Xowd_page_itm page = ary[i]; @@ -136,7 +136,7 @@ class Xodb_load_mgr_sql_fxt { class Xoctg_mok_grp { public byte Tid() {return tid;} public Xoctg_mok_grp Tid_(byte v) {this.tid = v; return this;} private byte tid; public byte[] Last_plus_one_sortkey() {return last_plus_one_sortkey;} public Xoctg_mok_grp Last_plus_one_sortkey_(byte[] v) {this.last_plus_one_sortkey = v; return this;} private byte[] last_plus_one_sortkey; - public List_adp Itms() {return itms;} List_adp itms = List_adp_.new_(); + public List_adp Itms() {return itms;} List_adp itms = List_adp_.New(); } class Xoctg_mok_ctg { public Xoctg_mok_ctg(Int_obj_ref next_id) {this.next_id = next_id;} Int_obj_ref next_id; diff --git a/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_load_mgr_txt.java b/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_load_mgr_txt.java index 67d84eed6..e5d3d0e16 100644 --- a/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_load_mgr_txt.java +++ b/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_load_mgr_txt.java @@ -21,7 +21,8 @@ import gplx.xowa.bldrs.cmds.ctgs.*; import gplx.xowa.wikis.ctgs.*; import gplx.c 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.*; -import gplx.xowa.addons.apps.searchs.specials.*; +import gplx.xowa.wikis.pages.*; +import gplx.xowa.addons.wikis.searchs.specials.*; import gplx.xowa.guis.views.*; public class Xodb_load_mgr_txt implements Xodb_load_mgr { private final Xob_xdat_file tmp_xdat_file = new Xob_xdat_file(); private final Xob_xdat_itm tmp_xdat_itm = new Xob_xdat_itm(); @@ -33,10 +34,10 @@ public class Xodb_load_mgr_txt implements Xodb_load_mgr { this.fsys_mgr = wiki.Tdb_fsys_mgr(); } public void Load_init (Xowe_wiki wiki) {} - public void Load_page(Xowd_page_itm rv, Xow_ns ns, boolean timestamp_enabled) {Load_page(rv, rv.Text_db_id(), rv.Tdb_row_idx(), ns, timestamp_enabled, tmp_xdat_file, tmp_xdat_itm);} + public void Load_page(Xowd_page_itm rv, Xow_ns ns) {Load_page(rv, rv.Text_db_id(), rv.Tdb_row_idx(), ns, false, tmp_xdat_file, tmp_xdat_itm);} public void Load_page(Xowd_page_itm rv, int txt_fil_idx, int txt_row_idx, Xow_ns ns, boolean timestamp_enabled, Xob_xdat_file xdat_file, Xob_xdat_itm xdat_itm) { Io_url file = fsys_mgr.Url_ns_fil(Xotdb_dir_info_.Tid_page, ns.Id(), txt_fil_idx); - byte[] bry = gplx.core.ios.Io_stream_rdr_.Load_all(file); int bry_len = bry.length; + byte[] bry = gplx.core.ios.streams.Io_stream_rdr_.Load_all(file); int bry_len = bry.length; xdat_file.Clear().Parse(bry, bry_len, file).GetAt(xdat_itm, txt_row_idx); Load_page_parse(rv, bry, bry_len, xdat_itm.Itm_bgn(), xdat_itm.Itm_end(), timestamp_enabled); } @@ -82,7 +83,7 @@ public class Xodb_load_mgr_txt implements Xodb_load_mgr { match_tid = Srch_special_page.Match_tid_bgn; } int bgn_idx = this.Find_file_idx_by_ns(Xotdb_dir_info_.Tid_search_ttl, ns, search); - if (bgn_idx == Xow_data_mgr.File_idx_unknown) return; + if (bgn_idx == Xodb_save_mgr_txt.File_idx_unknown) return; if (match_tid == Srch_special_page.Match_tid_all) { if (!this.Load_xdat_file(cancelable, tmp_xdat_file, Xotdb_dir_info_.Tid_search_ttl, ns, bgn_idx)) return; tmp_xdat_file.Find(tmp_xdat_itm, search, 0, Byte_ascii.Pipe, true); @@ -211,7 +212,7 @@ public class Xodb_load_mgr_txt implements Xodb_load_mgr { // find itm by key tmp_xdat_file.Find(xdat_itm, key, parse_bgn, parse_dlm, exact); return !xdat_itm.Missing(); - } private final Int_obj_ref tmp_len = Int_obj_ref.zero_(); + } private final Int_obj_ref tmp_len = Int_obj_ref.New_zero(); public boolean Load_xdat_file(Cancelable cancelable, Xob_xdat_file xdat_file, byte regy_tid, int fil_idx) {return Load_xdat_file(cancelable, xdat_file, regy_tid, null, fil_idx);} boolean Load_xdat_file(Cancelable cancelable, Xob_xdat_file xdat_file, byte regy_tid, Xow_ns ns, int fil_idx) { Io_url fil = ns == null ? fsys_mgr.Url_site_fil(regy_tid, fil_idx) : fsys_mgr.Url_ns_fil(regy_tid, ns.Id(), fil_idx); @@ -261,7 +262,7 @@ public class Xodb_load_mgr_txt implements Xodb_load_mgr { } public byte[] Find_random_ttl(Xow_ns ns) { Xowd_regy_mgr regy_mgr = this.Get_regy_by_ns(ns); - Int_obj_ref count = Int_obj_ref.zero_(); + Int_obj_ref count = Int_obj_ref.New_zero(); Xob_random_itm[] files = Build_random_itms(regy_mgr, count); int random_idx = RandomAdp_.new_().Next(count.Val() - 1); // get a random idx; -1 since count is super 1 (EX: count of 1 mil; random_idx of 0 - 999,999) int file_idx = CompareAble_.FindSlot(Xob_random_itm_comparer.Instance, files, new Xob_random_itm(-1, random_idx, -1)); @@ -295,7 +296,7 @@ public class Xodb_load_mgr_txt implements Xodb_load_mgr { Load_xdat_file(Cancelable_.Never, tmp_xdat_file, fil); tmp_xdat_file.Find(tmp_xdat_itm, ctg_ttl, 0, Byte_ascii.Pipe, true); if (tmp_xdat_itm.Missing()) return false; - List_adp ctgs = List_adp_.new_(); + List_adp ctgs = List_adp_.New(); Load_ctg_v1_parse(ctgs, wiki.Appe().Usr_dlg(), tmp_xdat_itm.Itm_bry()); ctgs.Sort_by(Xowd_page_itm_sorter.IdAsc); this.Load_by_ids(Cancelable_.Never, ctgs, 0, ctgs.Count()); @@ -395,7 +396,7 @@ public class Xodb_load_mgr_txt implements Xodb_load_mgr { } return rv; } private Xowd_regy_mgr[] ns_regys = new Xowd_regy_mgr[Xow_ns_mgr_.Ordinal_max]; - private Xowd_page_itm tmp_rslt_nxt = new Xowd_page_itm(), tmp_rslt_prv = new Xowd_page_itm(); private Int_obj_ref tmp_rslt_count = Int_obj_ref.zero_(); + private Xowd_page_itm tmp_rslt_nxt = new Xowd_page_itm(), tmp_rslt_prv = new Xowd_page_itm(); private Int_obj_ref tmp_rslt_count = Int_obj_ref.New_zero(); public void Load_ttls_for_search_suggest(Cancelable cancelable, List_adp rslt_list, Xow_ns ns, byte[] key, int max_results, int min_page_len, int browse_len, boolean include_redirects, boolean fetch_prv_item) { this.Load_ttls_for_all_pages(cancelable, rslt_list, tmp_rslt_nxt, tmp_rslt_prv, tmp_rslt_count, ns, key, max_results, min_page_len, browse_len, include_redirects, fetch_prv_item); } @@ -505,7 +506,7 @@ public class Xodb_load_mgr_txt implements Xodb_load_mgr { public int Load_ctg_count(byte[] ttl) {return wiki.Db_mgr().Category_version() == Xoa_ctg_mgr.Version_1 ? Load_ctg_count_v1(ttl) : Load_ctg_count_v2(ttl);} int Load_ctg_count_v1(byte[] ttl) { Xoctg_view_ctg view_ctg = new Xoctg_view_ctg(); - Int_obj_ref count = Int_obj_ref.zero_(); + Int_obj_ref count = Int_obj_ref.New_zero(); Load_ctg_v1_wkr(view_ctg, ttl, count); return count.Val(); } diff --git a/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_mgr.java b/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_mgr.java index ce11a4984..5c630bf77 100644 --- a/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_mgr.java +++ b/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_mgr.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.wikis.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.dbs.*; import gplx.xowa.wikis.data.*; import gplx.xowa.htmls.core.*; -public interface Xodb_mgr extends GfoInvkAble { +public interface Xodb_mgr extends Gfo_invk { byte Tid(); String Tid_name(); byte Category_version(); diff --git a/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_mgr_sql.java b/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_mgr_sql.java index f1d4ac63e..66a516111 100644 --- a/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_mgr_sql.java +++ b/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_mgr_sql.java @@ -16,21 +16,21 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.wikis.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; -import gplx.core.ios.*; import gplx.dbs.*; import gplx.dbs.qrys.*; import gplx.dbs.engines.sqlite.*; +import gplx.core.ios.*; import gplx.core.ios.streams.*; import gplx.dbs.*; import gplx.dbs.qrys.*; import gplx.dbs.engines.sqlite.*; import gplx.xowa.apps.gfs.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.wikis.ctgs.*; import gplx.xowa.htmls.core.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.data.*; -public class Xodb_mgr_sql implements Xodb_mgr, GfoInvkAble { +public class Xodb_mgr_sql implements Xodb_mgr, Gfo_invk { public Xodb_mgr_sql(Xowe_wiki wiki) { this.wiki = wiki; - this.core_data_mgr = new Xowd_db_mgr(wiki, wiki.Fsys_mgr().Root_dir(), wiki.Domain_itm()); + this.core_data_mgr = new Xow_db_mgr(wiki, wiki.Fsys_mgr().Root_dir()); this.load_mgr = new Xodb_load_mgr_sql(wiki, this, core_data_mgr); this.save_mgr = new Xodb_save_mgr_sql(this); } public byte Tid() {return Tid_sql;} public String Tid_name() {return "sqlite3";} public static final byte Tid_sql = 1; - public Xowd_db_mgr Core_data_mgr() {return core_data_mgr;} private final Xowd_db_mgr core_data_mgr; - public Xowe_wiki Wiki() {return wiki;} private final Xowe_wiki wiki; - public Xodb_load_mgr Load_mgr() {return load_mgr;} private final Xodb_load_mgr_sql load_mgr; - public Xodb_save_mgr Save_mgr() {return save_mgr;} private final Xodb_save_mgr_sql save_mgr; + public Xow_db_mgr Core_data_mgr() {return core_data_mgr;} private final Xow_db_mgr core_data_mgr; + public Xowe_wiki Wiki() {return wiki;} private final Xowe_wiki wiki; + public Xodb_load_mgr Load_mgr() {return load_mgr;} private final Xodb_load_mgr_sql load_mgr; + public Xodb_save_mgr Save_mgr() {return save_mgr;} private final Xodb_save_mgr_sql save_mgr; public byte Category_version() {return category_version;} private byte category_version = Xoa_ctg_mgr.Version_null; public DateAdp Dump_date_query() { DateAdp rv = wiki.Props().Modified_latest(); if (rv != null) return rv; diff --git a/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_mgr_txt.java b/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_mgr_txt.java index f8a35a9ab..f3af3bbab 100644 --- a/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_mgr_txt.java +++ b/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_mgr_txt.java @@ -16,16 +16,18 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.wikis.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; -import gplx.core.ios.*; import gplx.dbs.*; import gplx.xowa.wikis.data.*; import gplx.xowa.wikis.ctgs.*; import gplx.xowa.htmls.core.*; import gplx.xowa.wikis.tdbs.*; import gplx.xowa.wikis.nss.*; +import gplx.core.ios.*; import gplx.core.ios.streams.*; +import gplx.dbs.*; import gplx.xowa.wikis.data.*; import gplx.xowa.wikis.ctgs.*; import gplx.xowa.htmls.core.*; import gplx.xowa.wikis.tdbs.*; import gplx.xowa.wikis.nss.*; +import gplx.xowa.wikis.pages.*; public class Xodb_mgr_txt implements Xodb_mgr { - public Xodb_mgr_txt(Xowe_wiki wiki, Xow_data_mgr data_mgr) { + public Xodb_mgr_txt(Xowe_wiki wiki, Xow_page_mgr data_mgr) { this.wiki = wiki; load_mgr = new Xodb_load_mgr_txt(wiki); save_mgr = new Xodb_save_mgr_txt(wiki, load_mgr); } private Xowe_wiki wiki; public byte Tid() {return Tid_txt;} public static final byte Tid_txt = 0; public String Tid_name() {return "xdat";} - public byte Data_storage_format() {return data_storage_format;} public void Data_storage_format_(byte v) {data_storage_format = v;} private byte data_storage_format = gplx.core.ios.Io_stream_.Tid_raw; + public byte Data_storage_format() {return data_storage_format;} public void Data_storage_format_(byte v) {data_storage_format = v;} private byte data_storage_format = gplx.core.ios.streams.Io_stream_.Tid_raw; public Xodb_load_mgr Load_mgr() {return load_mgr;} private Xodb_load_mgr_txt load_mgr; public Xodb_save_mgr Save_mgr() {return save_mgr;} private Xodb_save_mgr_txt save_mgr; public DateAdp Dump_date_query() { @@ -41,7 +43,7 @@ public class Xodb_mgr_txt implements Xodb_mgr { } return category_version; } byte category_version = Xoa_ctg_mgr.Version_null; - public byte Search_version() {return gplx.xowa.addons.apps.searchs.specials.Srch_special_page.Version_2;} + public byte Search_version() {return gplx.xowa.addons.wikis.searchs.specials.Srch_special_page.Version_2;} public void Search_version_refresh() {throw Err_.new_unimplemented();} public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_data_storage_format)) return Io_stream_.Obsolete_to_str(data_storage_format); diff --git a/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_page_rdr__sql.java b/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_page_rdr__sql.java index 691a7f1d7..4af70bce0 100644 --- a/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_page_rdr__sql.java +++ b/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_page_rdr__sql.java @@ -19,8 +19,8 @@ package gplx.xowa.wikis.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa import gplx.dbs.*; import gplx.xowa.wikis.data.*; import gplx.xowa.wikis.data.tbls.*; class Xodb_page_rdr__sql implements Xodb_page_rdr { - private final Xowd_db_mgr db_mgr; - private final Xowd_page_tbl page_tbl; private final Db_rdr rdr; + private final Xow_db_mgr db_mgr; + private final Xowd_page_tbl page_tbl; private final Db_rdr rdr; public Xodb_page_rdr__sql(Xowe_wiki wiki) { this.db_mgr = wiki.Data__core_mgr(); this.page_tbl = db_mgr.Tbl__page(); @@ -29,7 +29,7 @@ class Xodb_page_rdr__sql implements Xodb_page_rdr { public boolean Move_next() {return rdr.Move_next();} public boolean Read(Xowd_page_itm page) { page_tbl.Read_page__all(page, rdr); - Xowd_text_tbl text_tbl = db_mgr.Dbs__get_by_id(page.Text_db_id()).Tbl__text(); + Xowd_text_tbl text_tbl = db_mgr.Dbs__get_by_id_or_fail(page.Text_db_id()).Tbl__text(); page.Text_(text_tbl.Select(page.Id())); return true; } diff --git a/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_page_rdr__tdb.java b/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_page_rdr__tdb.java index 614486966..111feff30 100644 --- a/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_page_rdr__tdb.java +++ b/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_page_rdr__tdb.java @@ -16,14 +16,14 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.wikis.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; -import gplx.core.ios.*; +import gplx.core.ios.*; import gplx.core.ios.streams.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.wikis.nss.*; import gplx.xowa.wikis.tdbs.*; import gplx.xowa.wikis.tdbs.hives.*; import gplx.xowa.wikis.tdbs.xdats.*; public class Xodb_page_rdr__tdb implements Xodb_page_rdr { - private final Xow_ns_mgr ns_mgr; private final Xotdb_fsys_mgr fsys_mgr; + private final Xow_ns_mgr ns_mgr; private final Xotdb_fsys_mgr fsys_mgr; private int cur_ns_ord = -1; private Xow_ns cur_ns; private Io_url[] cur_file_ary; private Io_url cur_file; private int cur_file_idx = -1; - private final Xob_xdat_file cur_xdat_file = new Xob_xdat_file(); private int cur_xdat_len, cur_xdat_idx; private final Xob_xdat_itm cur_xdat_itm = new Xob_xdat_itm(); + private final Xob_xdat_file cur_xdat_file = new Xob_xdat_file(); private int cur_xdat_len, cur_xdat_idx; private final Xob_xdat_itm cur_xdat_itm = new Xob_xdat_itm(); private int page_id = 0; public Xodb_page_rdr__tdb(Xowe_wiki wiki) { this.ns_mgr = wiki.Ns_mgr(); this.fsys_mgr = wiki.Tdb_fsys_mgr(); diff --git a/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_save_mgr_sql.java b/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_save_mgr_sql.java index a31d018cd..dfef96f8e 100644 --- a/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_save_mgr_sql.java +++ b/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_save_mgr_sql.java @@ -26,11 +26,11 @@ public class Xodb_save_mgr_sql implements Xodb_save_mgr { public int Page_id_next() {return page_id_next;} public void Page_id_next_(int v) {page_id_next = v;} private int page_id_next; public int Data_create(Xoa_ttl ttl, byte[] text_raw) { int ns_id = ttl.Ns().Id(); - Xowd_db_file db_file = db_mgr.Core_data_mgr().Db__core(); + Xow_db_file db_file = db_mgr.Core_data_mgr().Db__core(); int ns_count = db_file.Tbl__ns().Select_ns_count(ns_id) + 1; int page_id = db_file.Tbl__cfg().Select_int_or("db", "page.id_next", -1); if (page_id == -1) { // HACK: changed for tests; was dbs.qrys.Db_qry_sql.rdr_("SELECT (Max(page_id) + 1) AS max_page_id FROM page;") - Db_rdr rdr = db_mgr.Core_data_mgr().Tbl__page().conn.Stmt_select(db_file.Tbl__page().Tbl_name(), String_.Ary(db_file.Tbl__page().Fld_page_id()), Dbmeta_fld_itm.Str_ary_empty).Exec_select__rls_auto(); + Db_rdr rdr = db_mgr.Core_data_mgr().Tbl__page().Conn().Stmt_select(db_file.Tbl__page().Tbl_name(), String_.Ary(db_file.Tbl__page().Fld_page_id()), Dbmeta_fld_itm.Str_ary_empty).Exec_select__rls_auto(); try { int max_page_id = -1; while (rdr.Move_next()) { @@ -41,8 +41,8 @@ public class Xodb_save_mgr_sql implements Xodb_save_mgr { db_mgr.Core_data_mgr().Tbl__cfg().Upsert_int("db", "page.id_next", page_id + 1); } finally {rdr.Rls();} } - Xowd_db_mgr fsys_mgr = db_mgr.Core_data_mgr(); - Xowd_db_file page_text_db = fsys_mgr.Db__text(); + Xow_db_mgr fsys_mgr = db_mgr.Core_data_mgr(); + Xow_db_file page_text_db = fsys_mgr.Db__text(); Xowd_text_tbl page_text_tbl = page_text_db.Tbl__text(); byte[] text_zip = page_text_tbl.Zip(text_raw); boolean redirect = db_mgr.Wiki().Redirect_mgr().Is_redirect(text_raw, text_raw.length); @@ -66,7 +66,7 @@ public class Xodb_save_mgr_sql implements Xodb_save_mgr { db_mgr.Core_data_mgr().Tbl__page().Update__redirect__modified(page_id, redirect, modified); Xowd_page_itm db_page = new Xowd_page_itm(); db_mgr.Load_mgr().Load_by_id(db_page, page.Revision_data().Id()); - Xowd_text_tbl text_tbl = db_mgr.Core_data_mgr().Dbs__get_by_id(db_page.Text_db_id()).Tbl__text(); + Xowd_text_tbl text_tbl = db_mgr.Core_data_mgr().Dbs__get_by_id_or_fail(db_page.Text_db_id()).Tbl__text(); text_tbl.Update(page.Revision_data().Id(), text_raw); // int html_db_id = db_page.Html_db_id(); // if (html_db_id != -1) diff --git a/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_save_mgr_txt.java b/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_save_mgr_txt.java index 146c19d3d..36f1cb587 100644 --- a/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_save_mgr_txt.java +++ b/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_save_mgr_txt.java @@ -43,7 +43,7 @@ public class Xodb_save_mgr_txt implements Xodb_save_mgr { int ns_id = ttl.Ns().Id(); Xotdb_page_itm_.Txt_page_save(tmp, page_id, DateAdp_.Now(), ttl_bry, text, true); Io_url page_rdr_url = fsys_mgr.Url_ns_fil(Xotdb_dir_info_.Tid_page, ns_id, fil_idx); - byte[] page_rdr_bry = gplx.core.ios.Io_stream_rdr_.Load_all(page_rdr_url); + byte[] page_rdr_bry = gplx.core.ios.streams.Io_stream_rdr_.Load_all(page_rdr_url); Xob_xdat_file page_rdr = new Xob_xdat_file(); if (Bry_.Len_gt_0(page_rdr_bry)) page_rdr.Parse(page_rdr_bry, page_rdr_bry.length, page_rdr_url); int row_idx = page_rdr.Count(); diff --git a/400_xowa/src/gplx/xowa/wikis/domains/Xow_abrv_wm_.java b/400_xowa/src/gplx/xowa/wikis/domains/Xow_abrv_wm_.java index 21ea1b7b5..8fdc44265 100644 --- a/400_xowa/src/gplx/xowa/wikis/domains/Xow_abrv_wm_.java +++ b/400_xowa/src/gplx/xowa/wikis/domains/Xow_abrv_wm_.java @@ -95,7 +95,7 @@ public class Xow_abrv_wm_ { } public static byte[] To_abrv(Xow_domain_itm domain_itm) { int tid = domain_itm.Domain_type_id(); - byte[] suffix = (byte[])int_hash.Get_by(Int_obj_ref.new_(tid)); if (suffix == null) return null; + byte[] suffix = (byte[])int_hash.Get_by(Int_obj_ref.New(tid)); if (suffix == null) return null; switch (tid) { case Xow_domain_tid_.Int__commons: case Xow_domain_tid_.Int__species: @@ -116,10 +116,10 @@ public class Xow_abrv_wm_ { default: throw Err_.new_unhandled(tid); } } - private static final Btrie_bwd_mgr bry_trie = Init_trie(); + private static final Btrie_bwd_mgr bry_trie = Init_trie(); private static Hash_adp int_hash; private static Btrie_bwd_mgr Init_trie() { - int_hash = Hash_adp_.new_(); + int_hash = Hash_adp_.New(); Btrie_bwd_mgr rv = new Btrie_bwd_mgr(false); Init_trie_itm(rv, int_hash, "wiki" , Xow_domain_tid_.Int__wikipedia); Init_trie_itm(rv, int_hash, "wiktionary" , Xow_domain_tid_.Int__wiktionary); @@ -140,7 +140,7 @@ public class Xow_abrv_wm_ { return rv; } private static void Init_trie_itm(Btrie_bwd_mgr trie, Hash_adp hash, String str, int tid) { - Int_obj_ref itm = Int_obj_ref.new_(tid); + Int_obj_ref itm = Int_obj_ref.New(tid); trie.Add(str, itm); hash.Add(itm, Bry_.new_u8(str)); } @@ -154,7 +154,7 @@ class Xow_abrv_wm_override { Object o = lang_hash.Get_by_bry(domain_bry); return o == null ? null : (byte[])o; } - private static final Hash_adp_bry itm_hash = itm_hash__make(); + private static final Hash_adp_bry itm_hash = itm_hash__make(); private static Hash_adp_bry lang_hash; private static Hash_adp_bry itm_hash__make() { Hash_adp_bry rv = Hash_adp_bry.cs(); diff --git a/400_xowa/src/gplx/xowa/wikis/domains/Xow_abrv_wm_tst.java b/400_xowa/src/gplx/xowa/wikis/domains/Xow_abrv_wm_tst.java index 78e97c228..f7822e45e 100644 --- a/400_xowa/src/gplx/xowa/wikis/domains/Xow_abrv_wm_tst.java +++ b/400_xowa/src/gplx/xowa/wikis/domains/Xow_abrv_wm_tst.java @@ -81,8 +81,8 @@ class Xow_abrv_wm_fxt { Tfds.Eq(expd, String_.new_a7(actl)); } public void Test_to_abrv_by_lang(String lang_key, int wiki_tid, String expd) { - Bry_bfr tmp_bfr = Bry_bfr.reset_(255); - Xow_abrv_wm_.To_abrv(tmp_bfr, Bry_.new_a7(lang_key), gplx.core.primitives.Int_obj_ref.new_(wiki_tid)); + Bry_bfr tmp_bfr = Bry_bfr_.Reset(255); + Xow_abrv_wm_.To_abrv(tmp_bfr, Bry_.new_a7(lang_key), gplx.core.primitives.Int_obj_ref.New(wiki_tid)); Tfds.Eq_str(expd, tmp_bfr.To_str_and_clear(), "to_abrv"); } public void Test_to_domain_bry(String wmf_key, String expd_domain) { diff --git a/400_xowa/src/gplx/xowa/wikis/domains/Xow_domain_uid_.java b/400_xowa/src/gplx/xowa/wikis/domains/Xow_domain_uid_.java index 2272e8e7a..fc9f77d71 100644 --- a/400_xowa/src/gplx/xowa/wikis/domains/Xow_domain_uid_.java +++ b/400_xowa/src/gplx/xowa/wikis/domains/Xow_domain_uid_.java @@ -44,11 +44,11 @@ public class Xow_domain_uid_ { public static int To_int(Xow_domain_itm domain) { int domain_tid = 0; switch (domain.Domain_type_id()) { - case Xow_domain_tid_.Int__home: return Tid_xowa; + case Xow_domain_tid_.Int__home: return Tid_xowa; case Xow_domain_tid_.Int__commons: return Tid_commons; - case Xow_domain_tid_.Int__wikidata: return Tid_wikidata; + case Xow_domain_tid_.Int__wikidata: return Tid_wikidata; case Xow_domain_tid_.Int__mediawiki: return Tid_mediawiki; - case Xow_domain_tid_.Int__meta: return Tid_meta; + case Xow_domain_tid_.Int__meta: return Tid_meta; case Xow_domain_tid_.Int__incubator: return Tid_incubator; case Xow_domain_tid_.Int__wmfblog: return Tid_wmfblog; case Xow_domain_tid_.Int__species: return Tid_species; @@ -59,7 +59,7 @@ public class Xow_domain_uid_ { case Xow_domain_tid_.Int__wikiquote: domain_tid = Tid_sub_wikiquote; break; case Xow_domain_tid_.Int__wikibooks: domain_tid = Tid_sub_wikibooks; break; case Xow_domain_tid_.Int__wikiversity: domain_tid = Tid_sub_wikiversity; break; - case Xow_domain_tid_.Int__wikinews: domain_tid = Tid_sub_wikinews; break; + case Xow_domain_tid_.Int__wikinews: domain_tid = Tid_sub_wikinews; break; case Xow_domain_tid_.Int__wikimedia: domain_tid = Tid_sub_wikimedia; break; default: throw Err_.new_unhandled(domain.Domain_type_id()); } diff --git a/400_xowa/src/gplx/xowa/wikis/domains/crts/Xow_domain_crt_itm_parser.java b/400_xowa/src/gplx/xowa/wikis/domains/crts/Xow_domain_crt_itm_parser.java index a8847c20c..ac49056f5 100644 --- a/400_xowa/src/gplx/xowa/wikis/domains/crts/Xow_domain_crt_itm_parser.java +++ b/400_xowa/src/gplx/xowa/wikis/domains/crts/Xow_domain_crt_itm_parser.java @@ -27,7 +27,7 @@ class Xow_domain_crt_itm_parser { return rv == null ? null : (Xow_domain_crt_kv_ary[])rv.To_ary_and_clear(Xow_domain_crt_kv_ary.class); } public List_adp Parse_as_obj_or_null(byte[] raw, boolean is_ary) { - List_adp rv = List_adp_.new_(); + List_adp rv = List_adp_.New(); byte[][] line_ary = Bry_split_.Split_lines(raw); int line_len = line_ary.length; for (int i = 0; i < line_len; ++i) { @@ -80,12 +80,12 @@ class Xow_domain_crt_itm_parser { else return new Xow_domain_crt_itm__wiki(raw); // EX: en.wikipedia.org } - private static final Hash_adp_bry itm_hash = Hash_adp_bry.cs() + private static final Hash_adp_bry itm_hash = Hash_adp_bry.cs() .Add_str_obj("" , Xow_domain_crt_itm__self.Instance) .Add_str_obj("" , Xow_domain_crt_itm__same_type.Instance) .Add_str_obj("" , Xow_domain_crt_itm__same_lang.Instance) .Add_str_obj("" , Xow_domain_crt_itm__any_wiki.Instance) ; - private static final byte[] Wild_lang = Bry_.new_a7("*."), Wild_type = Bry_.new_a7(".*"); - public static final Xow_domain_crt_itm_parser Instance = new Xow_domain_crt_itm_parser(); Xow_domain_crt_itm_parser() {} + private static final byte[] Wild_lang = Bry_.new_a7("*."), Wild_type = Bry_.new_a7(".*"); + public static final Xow_domain_crt_itm_parser Instance = new Xow_domain_crt_itm_parser(); Xow_domain_crt_itm_parser() {} } diff --git a/400_xowa/src/gplx/xowa/wikis/domains/crts/Xow_domain_crt_kv_itm_mgr.java b/400_xowa/src/gplx/xowa/wikis/domains/crts/Xow_domain_crt_kv_itm_mgr.java index 5a90547da..9cd1a7e80 100644 --- a/400_xowa/src/gplx/xowa/wikis/domains/crts/Xow_domain_crt_kv_itm_mgr.java +++ b/400_xowa/src/gplx/xowa/wikis/domains/crts/Xow_domain_crt_kv_itm_mgr.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.wikis.domains.crts; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.domains.*; public class Xow_domain_crt_kv_itm_mgr { - private final List_adp list = List_adp_.new_(); + private final List_adp list = List_adp_.New(); public void Clear() {list.Clear();} @gplx.Internal protected void Add(Xow_domain_crt_kv_itm itm) {list.Add(itm);} public boolean Parse_as_itms(byte[] raw) { @@ -57,11 +57,11 @@ public class Xow_domain_crt_kv_itm_mgr { } class Xow_domain_crt_kv_itm { public Xow_domain_crt_kv_itm(Xow_domain_crt_itm key, Xow_domain_crt_itm val) {this.key = key; this.val = val;} - public Xow_domain_crt_itm Key() {return key;} private final Xow_domain_crt_itm key; - public Xow_domain_crt_itm Val() {return val;} private final Xow_domain_crt_itm val; + public Xow_domain_crt_itm Key() {return key;} private final Xow_domain_crt_itm key; + public Xow_domain_crt_itm Val() {return val;} private final Xow_domain_crt_itm val; } class Xow_domain_crt_kv_ary { public Xow_domain_crt_kv_ary(Xow_domain_crt_itm key, Xow_domain_crt_itm[] val) {this.key = key; this.val = val;} - public Xow_domain_crt_itm Key() {return key;} private final Xow_domain_crt_itm key; - public Xow_domain_crt_itm[] Val() {return val;} private final Xow_domain_crt_itm[] val; + public Xow_domain_crt_itm Key() {return key;} private final Xow_domain_crt_itm key; + public Xow_domain_crt_itm[] Val() {return val;} private final Xow_domain_crt_itm[] val; } diff --git a/400_xowa/src/gplx/xowa/wikis/metas/Xow_html_util.java b/400_xowa/src/gplx/xowa/wikis/metas/Xow_html_util.java index a22384927..31ed60b51 100644 --- a/400_xowa/src/gplx/xowa/wikis/metas/Xow_html_util.java +++ b/400_xowa/src/gplx/xowa/wikis/metas/Xow_html_util.java @@ -16,12 +16,12 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.wikis.metas; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; -public class Xow_html_util implements GfoInvkAble { +public class Xow_html_util implements Gfo_invk { public Xow_html_util(Xowe_wiki wiki) {this.wiki = wiki;} private Xowe_wiki wiki; public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_if_bool)) return If_bool(m.ReadStr("expr"), m.ReadStr("true_val"), m.ReadStr("false_val")); else if (ctx.Match(k, Invk_if_yn)) return If_yn(m.ReadStr("expr"), m.ReadStr("true_val"), m.ReadStr("false_val")); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; } private static final String Invk_if_bool = "if_bool", Invk_if_yn = "if_yn"; String If_bool(String expr, String true_val, String false_val) { Object o = wiki.Appe().Gfs_mgr().Run_str(expr); diff --git a/400_xowa/src/gplx/xowa/wikis/metas/Xow_script_mgr.java b/400_xowa/src/gplx/xowa/wikis/metas/Xow_script_mgr.java index 92c0cf002..fe8dc5830 100644 --- a/400_xowa/src/gplx/xowa/wikis/metas/Xow_script_mgr.java +++ b/400_xowa/src/gplx/xowa/wikis/metas/Xow_script_mgr.java @@ -18,10 +18,10 @@ along with this program. If not, see . package gplx.xowa.wikis.metas; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.core.brys.fmtrs.*; import gplx.core.envs.*; import gplx.xowa.wikis.domains.*; -public class Xow_script_mgr implements GfoInvkAble { +public class Xow_script_mgr implements Gfo_invk { public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_set)) Set(m.ReadBry("key"), m.ReadBry("wiki_type"), m.ReadBry("script")); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String Invk_set = "set"; public void Exec(Xowe_wiki wiki) { diff --git a/400_xowa/src/gplx/xowa/wikis/metas/Xow_sys_cfg.java b/400_xowa/src/gplx/xowa/wikis/metas/Xow_sys_cfg.java index 41eae66ba..274b3a452 100644 --- a/400_xowa/src/gplx/xowa/wikis/metas/Xow_sys_cfg.java +++ b/400_xowa/src/gplx/xowa/wikis/metas/Xow_sys_cfg.java @@ -16,14 +16,14 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.wikis.metas; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; -public class Xow_sys_cfg implements GfoInvkAble { +public class Xow_sys_cfg implements Gfo_invk { public Xow_sys_cfg(Xowe_wiki wiki) {} public boolean Xowa_cmd_enabled() {return xowa_cmd_enabled;} public Xow_sys_cfg Xowa_cmd_enabled_(boolean v) {xowa_cmd_enabled = v; return this;} private boolean xowa_cmd_enabled; public boolean Xowa_proto_enabled() {return xowa_proto_enabled;} public Xow_sys_cfg Xowa_proto_enabled_(boolean v) {xowa_proto_enabled = v; return this;} private boolean xowa_proto_enabled; public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_xowa_cmd_enabled_)) xowa_cmd_enabled = m.ReadYn("v"); else if (ctx.Match(k, Invk_xowa_cmd_enabled_)) xowa_proto_enabled = m.ReadYn("v"); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String Invk_xowa_cmd_enabled_ = "xowa_cmd_enabled_"; } diff --git a/400_xowa/src/gplx/xowa/wikis/metas/Xow_user.java b/400_xowa/src/gplx/xowa/wikis/metas/Xow_user.java index e2bb0f6df..6ec99caad 100644 --- a/400_xowa/src/gplx/xowa/wikis/metas/Xow_user.java +++ b/400_xowa/src/gplx/xowa/wikis/metas/Xow_user.java @@ -16,11 +16,11 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.wikis.metas; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; -public class Xow_user implements GfoInvkAble { +public class Xow_user implements Gfo_invk { public byte[] Name() {return name;} private byte[] name = Bry_.new_a7("anonymous"); public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_name_)) name = m.ReadBry("v"); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String Invk_name_ = "name_"; } diff --git a/400_xowa/src/gplx/xowa/wikis/metas/Xow_wiki_props.java b/400_xowa/src/gplx/xowa/wikis/metas/Xow_wiki_props.java index ea022704f..99c8a8918 100644 --- a/400_xowa/src/gplx/xowa/wikis/metas/Xow_wiki_props.java +++ b/400_xowa/src/gplx/xowa/wikis/metas/Xow_wiki_props.java @@ -19,7 +19,7 @@ package gplx.xowa.wikis.metas; import gplx.*; import gplx.xowa.*; import gplx.xo import gplx.xowa.langs.msgs.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.domains.*; import gplx.xowa.htmls.hrefs.*; -public class Xow_wiki_props implements GfoInvkAble { +public class Xow_wiki_props implements Gfo_invk { public byte[] Main_page() {return main_page;} private byte[] main_page = Xoa_page_.Main_page_bry; // HACK: default to Main_Page b/c some code tries to do Xoa_ttl.parse() which will not work with ""; DATE:2014-02-16 public Xow_wiki_props Main_page_(byte[] v) {main_page = v; return this;} public void Main_page_update(Xowe_wiki wiki) { @@ -42,6 +42,7 @@ public class Xow_wiki_props implements GfoInvkAble { public byte[] Siteinfo_misc() {return siteinfo_misc;} public byte[] Siteinfo_mainpage() {return siteinfo_mainpage;} private byte[] siteinfo_mainpage = Bry_.Empty; public DateAdp Modified_latest() {return modified_latest;} private DateAdp modified_latest; + public String Modified_latest__yyyy_MM_dd() {return modified_latest == null ? "" : modified_latest.XtoStr_fmt_yyyy_MM_dd();} public Xow_wiki_props Init_props(int domain_tid, byte[] domain_bry) { this.site_name = Bry_.new_a7(String_.UpperFirst(String_.new_a7(Xow_domain_tid_.Get_type_as_bry(domain_tid)))); // EX: "Wikipedia" this.server_name = domain_bry; // EX: "en.wikipedia.org" @@ -58,6 +59,7 @@ public class Xow_wiki_props implements GfoInvkAble { public void Init_by_load(Xoa_app app, gplx.dbs.cfgs.Db_cfg_tbl cfg_tbl) { if (app.Bldr__running()) return; // never load main_page during bldr; note that Init_by_load is called by bldr cmds like css; DATE:2015-07-24 this.main_page = cfg_tbl.Select_bry_or(Xow_cfg_consts.Grp__wiki_init, Xow_cfg_consts.Key__init__main_page, null); + this.modified_latest = cfg_tbl.Select_date_or(Xow_cfg_consts.Grp__wiki_init, Xow_cfg_consts.Key__init__modified_latest, null); if (main_page == null) { // main_page not found Xoa_app_.Usr_dlg().Warn_many("", "", "mw_props.load; main_page not found; conn=~{0}", cfg_tbl.Conn().Conn_info().Db_api()); this.main_page = Xoa_page_.Main_page_bry; @@ -70,7 +72,7 @@ public class Xow_wiki_props implements GfoInvkAble { else if (ctx.Match(k, Invk_siteinfo_mainpage_)) siteinfo_mainpage = m.ReadBry("v"); else if (ctx.Match(k, Invk_css_version_)) css_version = m.ReadInt("v"); else if (ctx.Match(k, Invk_modified_latest_)) modified_latest = m.ReadDate("v"); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } public static final String Invk_main_page_ = "main_page_" diff --git a/400_xowa/src/gplx/xowa/wikis/modules/Xow_module_base.java b/400_xowa/src/gplx/xowa/wikis/modules/Xow_module_base.java index d09f022e5..0b854cf21 100644 --- a/400_xowa/src/gplx/xowa/wikis/modules/Xow_module_base.java +++ b/400_xowa/src/gplx/xowa/wikis/modules/Xow_module_base.java @@ -16,14 +16,14 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.wikis.modules; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; -public class Xow_module_base implements GfoInvkAble { +public class Xow_module_base implements Gfo_invk { public byte Enabled() {return enabled;} private byte enabled = Bool_.__byte; public boolean Enabled_y() {return enabled == Bool_.Y_byte;} public boolean Enabled_n() {return enabled == Bool_.N_byte;} @gplx.Virtual public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_enabled)) return Yn.To_nullable_str(enabled); else if (ctx.Match(k, Invk_enabled_)) enabled = Yn.To_nullable_byte(m.ReadStr("v")); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String Invk_enabled = "enabled", Invk_enabled_ = "enabled_"; diff --git a/400_xowa/src/gplx/xowa/wikis/modules/Xow_module_mgr.java b/400_xowa/src/gplx/xowa/wikis/modules/Xow_module_mgr.java index 9e6ca1bb3..4c94f28ec 100644 --- a/400_xowa/src/gplx/xowa/wikis/modules/Xow_module_mgr.java +++ b/400_xowa/src/gplx/xowa/wikis/modules/Xow_module_mgr.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.wikis.modules; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.htmls.heads.*; import gplx.xowa.htmls.modules.popups.*; -public class Xow_module_mgr implements GfoInvkAble { +public class Xow_module_mgr implements Gfo_invk { private Hash_adp_bry regy = Hash_adp_bry.cs(); public Xow_module_mgr(Xowe_wiki wiki) { this.popup_mgr = new Xow_popup_mgr(wiki); @@ -35,6 +35,6 @@ public class Xow_module_mgr implements GfoInvkAble { public Xow_module_base Get(byte[] key) {return (Xow_module_base)regy.Get_by_bry(key);} public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_get)) return Get(m.ReadBry("v")); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; } private static final String Invk_get = "get"; } diff --git a/400_xowa/src/gplx/xowa/wikis/nss/Xow_ns.java b/400_xowa/src/gplx/xowa/wikis/nss/Xow_ns.java index 779cc4bf5..39bdb0ec5 100644 --- a/400_xowa/src/gplx/xowa/wikis/nss/Xow_ns.java +++ b/400_xowa/src/gplx/xowa/wikis/nss/Xow_ns.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.wikis.nss; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.bldrs.cmds.*; import gplx.xowa.apps.urls.*; -public class Xow_ns implements GfoInvkAble { +public class Xow_ns implements Gfo_invk { public Xow_ns(int id, byte case_match, byte[] name, boolean is_alias) { this.id = id; this.case_match = case_match; this.is_alias = is_alias; Name_bry_(name); @@ -99,7 +99,7 @@ public class Xow_ns implements GfoInvkAble { else if (ctx.Match(k, Invk_id)) return id; else if (ctx.Match(k, Invk_name_txt)) return name_ui; else if (ctx.Match(k, Invk_name_ui)) return Name_combo(); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String Invk_subpages_enabled_ = "subpages_enabled_", Invk_id = "id", Invk_name_txt = "name_txt", Invk_name_ui = "name_ui"; } diff --git a/400_xowa/src/gplx/xowa/wikis/nss/Xow_ns_mgr.java b/400_xowa/src/gplx/xowa/wikis/nss/Xow_ns_mgr.java index 4dd042a34..d4a26f975 100644 --- a/400_xowa/src/gplx/xowa/wikis/nss/Xow_ns_mgr.java +++ b/400_xowa/src/gplx/xowa/wikis/nss/Xow_ns_mgr.java @@ -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.core.lists.ComparerAble { +public class Xow_ns_mgr implements Gfo_invk, 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 @@ -55,11 +55,11 @@ public class Xow_ns_mgr implements GfoInvkAble, gplx.core.lists.ComparerAble { public Xow_ns Ords_get_at(int ord) {return ords[ord];} public int Ids_len() {return id_hash.Count();} public Xow_ns Ids_get_at(int idx) {return (Xow_ns)id_hash.Get_at(idx);} - public Xow_ns Ids_get_or_null(int id) {return (Xow_ns)id_hash.Get_by(ns_hash_lkp.Val_(id));} private Int_obj_ref ns_hash_lkp = Int_obj_ref.zero_(); + public Xow_ns Ids_get_or_null(int id) {return (Xow_ns)id_hash.Get_by(ns_hash_lkp.Val_(id));} private Int_obj_ref ns_hash_lkp = Int_obj_ref.New_zero(); private Xow_ns Ids_get_or_empty(int id) { Xow_ns rv = Ids_get_or_null(id); return rv == null ? Ns__empty : rv; - } private static final Xow_ns Ns__empty = new Xow_ns(Int_.Max_value, Byte_.Zero, Bry_.Empty, false); + } private static final Xow_ns Ns__empty = new Xow_ns(Int_.Max_value, Byte_.Zero, Bry_.Empty, false); public Xow_ns Names_get_or_null(byte[] name_bry) {return this.Names_get_or_null(name_bry, 0, name_bry.length);} public Xow_ns Names_get_or_null(byte[] src, int bgn, int end) { Object rv = name_hash.Get_by_mid(src, bgn, end); @@ -127,7 +127,7 @@ public class Xow_ns_mgr implements GfoInvkAble, gplx.core.lists.ComparerAble { Xow_ns project_ns = ords[ns.Ord_subj_id()]; if (project_ns == null) return; // should warn or throw error; for now just exit ns.Name_bry_(Bry_.Replace(ns_name, Project_talk_fmt_arg, project_ns.Name_db())); - } private static final byte[] Project_talk_fmt_arg = Bry_.new_a7("$1"); + } private static final byte[] Project_talk_fmt_arg = Bry_.new_a7("$1"); private void Rebuild_hashes__add(Hash_adp_bry hash, Xow_ns ns, byte[] key) { Xow_ns_mgr_name_itm ns_itm = new Xow_ns_mgr_name_itm(key, ns); hash.Add_if_dupe_use_nth(key, ns_itm); @@ -162,7 +162,7 @@ public class Xow_ns_mgr implements GfoInvkAble, gplx.core.lists.ComparerAble { } ++ns_count; if (!id_hash.Has(ns_hash_lkp.Val_(ns_id))) // NOTE: do not add if already exists; avoids alias - id_hash.Add(Int_obj_ref.new_(ns.Id()), ns); + id_hash.Add(Int_obj_ref.New(ns.Id()), ns); name_hash.Add_if_dupe_use_nth(ns.Name_db(), new Xow_ns_mgr_name_itm(ns.Name_db(), ns)); return this; } @@ -245,7 +245,7 @@ public class Xow_ns_mgr implements GfoInvkAble, gplx.core.lists.ComparerAble { else if (ctx.Match(k, Invk_clear)) this.Clear(); else if (ctx.Match(k, Invk_add_alias_bulk)) Exec_add_alias_bulk(m.ReadBry("v")); else if (ctx.Match(k, Invk_get_by_id_or_new)) return this.Ids_get_or_empty(m.ReadInt("v")); // NOTE: called by #cfg files for setting Subpages_enabled; if ns doesn't exist, returning empty is fine; DATE:2014-02-15 - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String Invk_add_alias_bulk = "add_alias_bulk", Invk_get_by_id_or_new = "get_by_id_or_new"; public static final String Invk_load = "load", Invk_clear = "clear"; diff --git a/400_xowa/src/gplx/xowa/wikis/nss/Xow_ns_mgr_.java b/400_xowa/src/gplx/xowa/wikis/nss/Xow_ns_mgr_.java index 50b74606a..b5d0ca138 100644 --- a/400_xowa/src/gplx/xowa/wikis/nss/Xow_ns_mgr_.java +++ b/400_xowa/src/gplx/xowa/wikis/nss/Xow_ns_mgr_.java @@ -37,6 +37,7 @@ public class Xow_ns_mgr_ { Xow_ns ns_name = ns_names.Get_at(i); int ns_id = ns_name.Id(); Xow_ns ns = ns_mgr.Ids_get_or_null(ns_id); + if (ns == null) continue; // ns_id of -2 will not be found in site_ns ns.Name_bry_(ns_name.Name_db()); } ns_names = lang.Ns_aliases(); diff --git a/400_xowa/src/gplx/xowa/wikis/pages/Xopage_html_data.java b/400_xowa/src/gplx/xowa/wikis/pages/Xopage_html_data.java index 08a63409d..9bd5ebbde 100644 --- a/400_xowa/src/gplx/xowa/wikis/pages/Xopage_html_data.java +++ b/400_xowa/src/gplx/xowa/wikis/pages/Xopage_html_data.java @@ -16,23 +16,27 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.wikis.pages; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; +import gplx.xowa.wikis.pages.tags.*; public class Xopage_html_data { public Xopage_html_data(byte[] display_ttl, byte[] body) { this.display_ttl = display_ttl; this.body = body; } - public byte[] Display_ttl() {return display_ttl;} private byte[] display_ttl; - public byte[] Body() {return body;} private final byte[] body; - public Xopg_tag_mgr Head_tags() {return head_tags;} private final Xopg_tag_mgr head_tags = new Xopg_tag_mgr(); - public Xopg_tag_mgr Tail_tags() {return tail_tags;} private final Xopg_tag_mgr tail_tags = new Xopg_tag_mgr(); + public byte[] Display_ttl() {return display_ttl;} private byte[] display_ttl; + public byte[] Body() {return body;} private final byte[] body; + public boolean Cbk_enabled() {return cbk_enabled;} private boolean cbk_enabled; public void Cbk_enabled_y_() {this.cbk_enabled = true;} + public Xopg_tag_mgr Head_tags() {return head_tags;} private final Xopg_tag_mgr head_tags = new Xopg_tag_mgr(Bool_.Y); + public Xopg_tag_mgr Tail_tags() {return tail_tags;} private final Xopg_tag_mgr tail_tags = new Xopg_tag_mgr(Bool_.N); public void Apply(Xoa_page page) { - page.Html_data().Html_restricted_n_(); - page.Html_data().Skip_parse_(Bool_.Y); - page.Html_data().Display_ttl_(display_ttl); - page.Html_data().Custom_body_(this.Body()); - page.Html_data().Custom_head_tags().Copy(head_tags); - page.Html_data().Custom_tail_tags().Copy(tail_tags); + Xopg_html_data html_data = page.Html_data(); + html_data.Html_restricted_n_(); + html_data.Skip_parse_(Bool_.Y); + html_data.Display_ttl_(display_ttl); + html_data.Custom_body_(this.Body()); + html_data.Custom_head_tags().Copy(head_tags); + html_data.Custom_tail_tags().Copy(tail_tags); + html_data.Cbk_enabled_(cbk_enabled); } public static Xopage_html_data err_(String msg) {return new Xopage_html_data(Bry_.Empty, Bry_.new_u8(msg));} diff --git a/400_xowa/src/gplx/xowa/wikis/pages/Xopg_hdump_data.java b/400_xowa/src/gplx/xowa/wikis/pages/Xopg_hdump_data.java index f421dabca..4b7737f7a 100644 --- a/400_xowa/src/gplx/xowa/wikis/pages/Xopg_hdump_data.java +++ b/400_xowa/src/gplx/xowa/wikis/pages/Xopg_hdump_data.java @@ -20,8 +20,8 @@ import gplx.xowa.htmls.core.makes.imgs.*; import gplx.xowa.files.*; import gplx.xowa.parsers.lnkis.redlinks.*; public class Xopg_hdump_data { public byte[] Body() {return body;} public void Body_(byte[] v) {body = v;} private byte[] body; - public Xopg_redlink_idx_list Redlink_mgr() {return redlink_mgr;} private final Xopg_redlink_idx_list redlink_mgr = new Xopg_redlink_idx_list(); - public List_adp Imgs() {return imgs;} private final List_adp imgs = List_adp_.new_(); + public Xopg_redlink_idx_list Redlink_mgr() {return redlink_mgr;} private final Xopg_redlink_idx_list redlink_mgr = new Xopg_redlink_idx_list(); + public List_adp Imgs() {return imgs;} private final List_adp imgs = List_adp_.New(); public void Imgs_add(Xohd_img_itm itm) {imgs.Add(itm);} public void Imgs_add_img(Xohd_img_itm__base img, Xof_file_itm xfer, int tid) { img.Data_init_base diff --git a/400_xowa/src/gplx/xowa/wikis/pages/Xopg_html_data.java b/400_xowa/src/gplx/xowa/wikis/pages/Xopg_html_data.java index dba9a0aef..ff61b80f1 100644 --- a/400_xowa/src/gplx/xowa/wikis/pages/Xopg_html_data.java +++ b/400_xowa/src/gplx/xowa/wikis/pages/Xopg_html_data.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.wikis.pages; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.langs.htmls.*; import gplx.xowa.htmls.heads.*; import gplx.xowa.wikis.pages.skins.*; import gplx.xowa.xtns.indicators.*; -import gplx.xowa.xtns.pagebanners.*; +import gplx.xowa.xtns.pagebanners.*; import gplx.xowa.wikis.pages.tags.*; public class Xopg_html_data { private Ordered_hash ctg_hash; public boolean Html_restricted() {return html_restricted;} private boolean html_restricted = true; @@ -31,17 +31,20 @@ public class Xopg_html_data { ? display_ttl_vnt // return variant title; DATE:2014-08-29 : display_ttl // return normal title ; - } + } public Xopg_html_data Display_ttl_(byte[] v) {display_ttl = v; return this;} private byte[] display_ttl; public boolean Mode_wtxt_shown() {synchronized (this) {return mode_wtxt_shown;}} public void Mode_wtxt_shown_y_() {synchronized (this) {this.mode_wtxt_shown = true;}} private boolean mode_wtxt_shown; public byte[] Display_ttl_vnt() {return display_ttl_vnt;} public void Display_ttl_vnt_(byte[] v) {display_ttl_vnt = v;} private byte[] display_ttl_vnt; public byte[] Content_sub() {return content_sub;} public void Content_sub_(byte[] v) {content_sub = v;} private byte[] content_sub; public Xopg_page_heading Page_heading() {return page_heading;} private final Xopg_page_heading page_heading = new Xopg_page_heading(); public String Bmk_pos() {return html_bmk_pos;} public void Bmk_pos_(String v) {html_bmk_pos = v;} private String html_bmk_pos; - public Bry_bfr Portal_div_xtn() {return portal_div_xtn;} private Bry_bfr portal_div_xtn = Bry_bfr.reset_(255); + public Bry_bfr Portal_div_xtn() {return portal_div_xtn;} private Bry_bfr portal_div_xtn = Bry_bfr_.Reset(255); public byte[] Edit_preview_w_dbg() {return Bry_.Add(xtn_scribunto_dbg, edit_preview);} public void Edit_preview_(byte[] v) {edit_preview = v;} private byte[] edit_preview = Bry_.Empty; public int Lnke_autonumber_next() {return lnke_autonumber++;} private int lnke_autonumber = 1; public int Sect_uid() {return sect_uid;} private int sect_uid = -1; public int Sect_uid_next() {return ++sect_uid;} + public boolean Cbk_enabled() {return cbk_enabled;} private boolean cbk_enabled; public void Cbk_enabled_(boolean v) {this.cbk_enabled = v;} + public boolean Hdump_exists() {return hdump_exists;} private boolean hdump_exists; public void Hdump_exists_(boolean v) {this.hdump_exists = v;} + public boolean Lang_convert_content() {return lang_convert_content;} public void Lang_convert_content_(boolean v) {lang_convert_content = v;} private boolean lang_convert_content = true; public boolean Lang_convert_title() {return lang_convert_title;} public void Lang_convert_title_(boolean v) {lang_convert_title = v;} private boolean lang_convert_title = true; public Xopg_xtn_skin_mgr Xtn_skin_mgr() {return xtn_skin_mgr;} private Xopg_xtn_skin_mgr xtn_skin_mgr = new Xopg_xtn_skin_mgr(); @@ -55,8 +58,8 @@ public class Xopg_html_data { public Pgbnr_itm Xtn_pgbnr() {return xtn_pgbnr;} public void Xtn_pgbnr_(Pgbnr_itm v) {xtn_pgbnr = v;} private Pgbnr_itm xtn_pgbnr; public Xoh_head_mgr Head_mgr() {return module_mgr;} private Xoh_head_mgr module_mgr = new Xoh_head_mgr(); public boolean Skip_parse() {return skip_parse;} public void Skip_parse_(boolean v) {skip_parse = v;} private boolean skip_parse; - public Xopg_tag_mgr Custom_head_tags() {return head_tags;} private final Xopg_tag_mgr head_tags = new Xopg_tag_mgr(); - public Xopg_tag_mgr Custom_tail_tags() {return tail_tags;} private final Xopg_tag_mgr tail_tags = new Xopg_tag_mgr(); + public Xopg_tag_mgr Custom_head_tags() {return head_tags;} private final Xopg_tag_mgr head_tags = new Xopg_tag_mgr(Bool_.Y); + public Xopg_tag_mgr Custom_tail_tags() {return tail_tags;} private final Xopg_tag_mgr tail_tags = new Xopg_tag_mgr(Bool_.N); public byte[] Custom_html() {return custom_html;} public Xopg_html_data Custom_html_(byte[] v) {custom_html = v; return this;} private byte[] custom_html; public byte[] Custom_body() {return custom_body;} public Xopg_html_data Custom_body_(byte[] v) {custom_body = v; return this;} private byte[] custom_body; public byte[] Custom_tab_name() {return custom_tab_name;} public Xopg_html_data Custom_tab_name_(byte[] v) {custom_tab_name = v; return this;} private byte[] custom_tab_name; diff --git a/400_xowa/src/gplx/xowa/wikis/pages/Xopg_tab_data.java b/400_xowa/src/gplx/xowa/wikis/pages/Xopg_tab_data.java index e5d7981f3..9ae7c7ff0 100644 --- a/400_xowa/src/gplx/xowa/wikis/pages/Xopg_tab_data.java +++ b/400_xowa/src/gplx/xowa/wikis/pages/Xopg_tab_data.java @@ -20,7 +20,7 @@ import gplx.xowa.guis.views.*; public class Xopg_tab_data { public Xog_tab_itm Tab() {return tab;} public void Tab_(Xog_tab_itm v) {this.tab = v;} private Xog_tab_itm tab; public boolean Cancel_show() {return cancel_show;} public void Cancel_show_y_() {this.cancel_show = true;} private boolean cancel_show; // used for Special:Search - public Xog_tab_close_mgr Close_mgr() {return close_mgr;} private final Xog_tab_close_mgr close_mgr = new Xog_tab_close_mgr(); + public Xog_tab_close_mgr Close_mgr() {return close_mgr;} private final Xog_tab_close_mgr close_mgr = new Xog_tab_close_mgr(); public void Clear() { this.cancel_show = false; this.tab = null; diff --git a/400_xowa/src/gplx/xowa/wikis/pages/Xopg_tag_itm.java b/400_xowa/src/gplx/xowa/wikis/pages/Xopg_tag_itm.java deleted file mode 100644 index c7197fdfa..000000000 --- a/400_xowa/src/gplx/xowa/wikis/pages/Xopg_tag_itm.java +++ /dev/null @@ -1,70 +0,0 @@ -/* -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.wikis.pages; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; -import gplx.langs.htmls.*; -public class Xopg_tag_itm { - public Xopg_tag_itm(byte[] name, byte[] text, Keyval... atrs_ary) { - this.Name = name; - this.Text = text; - this.Atrs_ary = atrs_ary; - } - public final byte[] Name; - public final byte[] Text; - public final Keyval[] Atrs_ary; - public void To_html(Bry_bfr bfr) { - bfr.Add_byte(Byte_ascii.Angle_bgn); - bfr.Add(Name); - int len = Atrs_ary.length; - for (int i = 0; i < len; ++i) { - bfr.Add_byte_space(); - Keyval atr = Atrs_ary[i]; - bfr.Add_str_a7(atr.Key()); - bfr.Add_byte(Byte_ascii.Eq); - bfr.Add_byte(Byte_ascii.Quote); - bfr.Add_str_a7(atr.Val_to_str_or_empty()); - bfr.Add_byte(Byte_ascii.Quote); - } - bfr.Add_byte(Byte_ascii.Angle_end); - if (Bry_.Eq(Name, Gfh_tag_.Bry__link)) return; - if (Text != null) { - bfr.Add_byte_nl(); - bfr.Add(Text); - bfr.Add_byte_nl(); - } - bfr.Add_byte(Byte_ascii.Angle_bgn).Add_byte(Byte_ascii.Slash); - bfr.Add(Name); - bfr.Add_byte(Byte_ascii.Angle_end); - } - - public static Xopg_tag_itm New_css_file(Io_url href) { - return new Xopg_tag_itm(Gfh_tag_.Bry__link , null, Keyval_.new_("type", "text/css"), Keyval_.new_("rel", "stylesheet"), Keyval_.new_("href", href.To_http_file_str())); - } - public static Xopg_tag_itm New_css_code(byte[] code) { - return new Xopg_tag_itm(Gfh_tag_.Bry__style , code, Keyval_.new_("type", "text/css")); - } - public static Xopg_tag_itm New_js_file(Io_url src) { - return new Xopg_tag_itm(Gfh_tag_.Bry__script , null, Keyval_.new_("type", "text/javascript"), Keyval_.new_("src", src.To_http_file_str())); - } - public static Xopg_tag_itm New_js_code(byte[] code) { - return new Xopg_tag_itm(Gfh_tag_.Bry__script , code, Keyval_.new_("type", "text/javascript")); - } - public static Xopg_tag_itm New_html_code(Io_url url, String tmpl) { - byte[] html = Io_mgr.Instance.LoadFilBry(url); - return new Xopg_tag_itm(Gfh_tag_.Bry__script , html, Keyval_.new_("type", "text/html"), Keyval_.new_("id", tmpl)); - } -} diff --git a/400_xowa/src/gplx/xowa/wikis/pages/Xow_page_mgr.java b/400_xowa/src/gplx/xowa/wikis/pages/Xow_page_mgr.java new file mode 100644 index 000000000..1411d6363 --- /dev/null +++ b/400_xowa/src/gplx/xowa/wikis/pages/Xow_page_mgr.java @@ -0,0 +1,152 @@ +/* +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.wikis.pages; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; +import gplx.xowa.wikis.nss.*; import gplx.xowa.wikis.data.tbls.*; +import gplx.xowa.langs.*; import gplx.xowa.langs.msgs.*; import gplx.xowa.langs.vnts.*; +import gplx.xowa.guis.views.*; import gplx.xowa.parsers.utils.*; +public class Xow_page_mgr implements Gfo_invk { + private final Xowe_wiki wiki; + public Xow_page_mgr(Xowe_wiki wiki) {this.wiki = wiki;} + public Xoae_page Load_page_by_ttl (Xoa_ttl ttl) {return Load_page(ttl, Bool_.N);} + public Xoae_page Load_page_by_ttl_for_msg (Xoa_ttl ttl) {return Load_page(ttl, Bool_.Y);} + private Xoae_page Load_page(Xoa_ttl ttl, boolean called_from_msg) { + Xoae_page rv = Xoae_page.New(wiki, ttl); + Load_by_ns(rv, wiki.Utl__url_parser().Parse(ttl.Raw()), ttl, called_from_msg); + return rv; + } + private void Load_by_ns(Xoae_page rv, Xoa_url url, Xoa_ttl ttl, boolean called_from_msg) { + rv.Url_(url); // NOTE: must update page.Url(); should combine with Xoae_page.New() + Xow_ns ns = ttl.Ns(); + switch (ns.Id()) { + case Xow_ns_.Tid__special: // Special pages are built (not loaded from db) + wiki.Special_mgr().Special__gen(wiki.App(), wiki, rv, url, ttl); + if (rv.Redirect_to_ttl() != null) { + ttl = wiki.Ttl_parse(rv.Redirect_to_ttl()); + url = wiki.Utl__url_parser().Parse(ttl.Raw()); + rv.Redirect_to_ttl_(null); + Load_by_ns(rv, url, ttl, called_from_msg); + } + return; + case Xow_ns_.Tid__mediawiki: // MediaWiki msgs can either be loaded from memory, or from database + if ( !called_from_msg // if called_from_msg, fall through to actual data retrieval below, else infinite loop; DATE:2014-05-09 + && Xow_page_tid.Identify_by_ttl(ttl.Page_db()) == Xow_page_tid.Tid_wikitext // skip ".js" and ".css" pages in MediaWiki; DATE:2014-06-13 + ) { + Xol_lang_itm lang = wiki.Lang(); + byte[] msg_key = ttl.Page_db(); + Bry_bfr tmp_bfr = wiki.Utl__bfr_mkr().Get_b512(); + msg_key = lang.Case_mgr().Case_build_1st_lower(tmp_bfr, msg_key, 0, msg_key.length); + byte[] msg_val = Xol_msg_mgr_.Get_msg_itm(tmp_bfr, wiki, wiki.Lang(), msg_key).Val(); // NOTE: do not change to Get_msg_val; Get_msg_val, also replaces $1 with values, and $1 needs to be preserved for callers; + rv.Data_raw_(msg_val); + tmp_bfr.Mkr_rls(); + return; + } + break; + } + Load_from_db(rv, ns, ttl, url.Qargs_mgr().Match(Xoa_url_.Qarg__redirect, Xoa_url_.Qarg__redirect__no)); + } + private void Load_from_db(Xoae_page rv, Xow_ns ns, Xoa_ttl ttl, boolean redirect_force) { + int redirects = 0; + Xowd_page_itm page_row = Xowd_page_itm.new_tmp(); + while (true) { // loop until (a) no more redirects or (b) page not found + // load from page table + boolean exists = wiki.Db_mgr().Load_mgr().Load_by_ttl(page_row, ns, ttl.Page_db()); + if (!exists) {rv.Missing_(); return;} + if (wiki.App().Mode().Tid_is_gui()) // NOTE: must check if gui, else will write during mass build; DATE:2014-05-03 + wiki.Appe().Usr_dlg().Prog_many("", "", "loading page for ~{0}", ttl.Raw()); + + // load from text table + wiki.Db_mgr().Load_mgr().Load_page(page_row, ns); + byte[] wtxt = page_row.Text(); + rv.Data_raw_(wtxt).Revision_data().Modified_on_(page_row.Modified_on()).Id_(page_row.Id()).Html_db_id_(page_row.Html_db_id()); + if (redirect_force) return; // redirect_force passed; return page now, even if page is a redirect elsewhere + + // handle redirects + Xoa_ttl redirect_ttl = wiki.Redirect_mgr().Extract_redirect(wtxt); + if ( redirect_ttl == null // not a redirect + || redirects++ > 4) // too many redirects; something went wrong + return; + + // redirect; do some bookkeeping and reset ns / ttl + rv.Redirected_ttls().Add(ttl.Full_url()); // NOTE: must be url_encoded; EX: "en.wikipedia.org/?!" should generate link of "en.wikipedia.org/%3F!?redirect=no" + if (rv.Redirected_src() == null) rv.Redirected_src_(wtxt); // only add src for first redirect; DATE:2014-07-11 + rv.Ttl_(redirect_ttl); + ns = redirect_ttl.Ns(); + ttl = redirect_ttl; + } + } + public Xoae_page Load_page_and_parse(Xoa_url url, Xoa_ttl ttl) {return Load_page_and_parse(url, ttl, wiki.Lang(), wiki.Appe().Gui_mgr().Browser_win().Active_tab(), true);} + public Xoae_page Load_page_and_parse(Xoa_url url, Xoa_ttl ttl, Xol_lang_itm lang, Xog_tab_itm tab, boolean parse_page) { + wiki.Init_assert(); + Xoae_page page = Xoae_page.New(wiki, ttl); page.Tab_data().Tab_(tab); + // COMMENT: breaks bookmark; if (tab != null) tab.Page_ref_(page); // HACK: (1) null check for http server; (2) Page_ref_(page) needed for log in xobc + this.Load_by_ns(page, url, ttl, false); + if (page.Missing()) { // page doesn't exist; try variants + boolean vnt_missing = true; + Xol_vnt_mgr vnt_mgr = lang.Vnt_mgr(); + if (vnt_mgr.Enabled()) { // if vnt enabled, then try to load by vnt form; DATE:2015-09-15 + gplx.xowa.wikis.data.tbls.Xowd_page_itm page_itm = vnt_mgr.Convert_mgr().Convert_ttl(wiki, ttl); + if (page_itm != null && page_itm.Exists()) { + Xoa_ttl vnt_ttl = Xoa_ttl.parse(wiki, ttl.Ns().Id(), page_itm.Ttl_page_db()); + page = this.Load_page(vnt_ttl, false); + vnt_missing = page.Missing(); + } + } + if (vnt_missing) { + if (ttl.Ns().Id_is_file()) { + Xowe_wiki commons_wiki = (Xowe_wiki)wiki.Appe().Wiki_mgr().Get_by_or_null(wiki.Commons_wiki_key()); + if (commons_wiki != null) { // commons exists + if (!Bry_.Eq(wiki.Domain_bry(), commons_wiki.Domain_bry())) { // !Bry_.Eq is recursion guard + Xoae_page rv = commons_wiki.Data_mgr().Load_page_and_parse(url, ttl, wiki.Lang(), tab, true); + if (rv.Exists()) { + rv.Commons_mgr().Source_wiki_(wiki); + return rv; + } + else { + page.Missing_(false); + page.Commons_mgr().Xowa_mockup_(true); + return page; + } + } + } + } + else + return page.Missing_(); + } + } + if (page.Missing()) return page; // NOTE: commons can return null page + page.Tab_data().Tab_(tab); + page.Lang_(lang); + if (parse_page) + wiki.Parser_mgr().Parse(page, false); // NOTE: do not clear page b/c reused for search + return page; + } + public void Redirect(Xoae_page page, byte[] page_bry) { + Xoa_ttl trg_ttl = Xoa_ttl.parse(wiki, page_bry); + Xoa_url trg_url = Xoa_url.new_(wiki.Domain_bry(), page_bry); + page.Ttl_(trg_ttl).Url_(trg_url).Redirected_(true); + wiki.Data_mgr().Load_from_db(page, trg_ttl.Ns(), trg_ttl, trg_url.Qargs_mgr().Match(Xoa_url_.Qarg__redirect, Xoa_url_.Qarg__redirect__no)); + } + + public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { + if (ctx.Match(k, Invk_create_enabled_)) wiki.Db_mgr().Save_mgr().Create_enabled_(m.ReadYn("v")); + else if (ctx.Match(k, Invk_update_modified_on_enabled_)) wiki.Db_mgr().Save_mgr().Update_modified_on_enabled_(m.ReadYn("v")); + else return Gfo_invk_.Rv_unhandled; + return this; + } + private static final String Invk_create_enabled_ = "create_enabled_", Invk_update_modified_on_enabled_ = "update_modified_on_enabled_"; +} diff --git a/400_xowa/src/gplx/xowa/wikis/pages/Xowe_page_mgr.java b/400_xowa/src/gplx/xowa/wikis/pages/Xowe_page_mgr.java new file mode 100644 index 000000000..f0da4686a --- /dev/null +++ b/400_xowa/src/gplx/xowa/wikis/pages/Xowe_page_mgr.java @@ -0,0 +1,46 @@ +/* +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.wikis.pages; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; +import gplx.xowa.guis.views.*; +public class Xowe_page_mgr { + private final Xowe_wiki wiki; + public Xowe_page_mgr(Xowe_wiki wiki) {this.wiki = wiki;} + public Xoae_page Load_page(Xoa_url url, Xoa_ttl ttl, Xog_tab_itm tab) { + Xoa_app_.Usr_dlg().Log_many("", "", "page.load: url=~{0}", url.To_str()); + Wait_for_popups(); + Xowe_wiki_.Rls_mem_if_needed(wiki); + + // load page meta; wait_for_popups + Xoae_page page = wiki.Data_mgr().Load_page_and_parse(url, ttl, wiki.Lang(), tab, false); + boolean hdump_exists = page.Revision_data().Html_db_id() != -1 && wiki.Appe().Api_root().Wiki().Hdump().Read_preferred(); + page.Html_data().Hdump_exists_(hdump_exists); + Wait_for_popups(); + + // load page text + if (hdump_exists) + wiki.Html__hdump_mgr().Load_mgr().Load_by_edit(page); + else + wiki.Parser_mgr().Parse(page, false); + return page; + } + private static void Wait_for_popups() {// HACK: wait for popups to finish, else thread errors due to popups and loader mutating cached items + int wait_count = 0; + while (gplx.xowa.htmls.modules.popups.Xow_popup_mgr.Running() && ++wait_count < 100) + gplx.core.threads.Thread_adp_.Sleep(10); + } +} diff --git a/400_xowa/src/gplx/xowa/wikis/pages/tags/Xopg_alertify_.java b/400_xowa/src/gplx/xowa/wikis/pages/tags/Xopg_alertify_.java new file mode 100644 index 000000000..d9fa2abb3 --- /dev/null +++ b/400_xowa/src/gplx/xowa/wikis/pages/tags/Xopg_alertify_.java @@ -0,0 +1,31 @@ +/* +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.wikis.pages.tags; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.pages.*; +import gplx.xowa.guis.cbks.*; import gplx.core.gfobjs.*; +public class Xopg_alertify_ { + public static void Add_tags(Xopg_tag_mgr head_tags, Io_url http_root) { + Io_url alertify_root = http_root.GenSubDir_nest("bin", "any", "xowa", "html", "res", "lib", "alertify"); + head_tags.Add(Xopg_tag_itm.New_css_file(alertify_root.GenSubFil_nest("themes", "alertify.core.css"))); + head_tags.Add(Xopg_tag_itm.New_css_file(alertify_root.GenSubFil_nest("themes", "alertify.bootstrap.css"))); + head_tags.Add(Xopg_tag_itm.New_js_file(alertify_root.GenSubFil_nest("lib", "alertify-0.3.11.js"))); + head_tags.Add(Xopg_tag_itm.New_js_file(alertify_root.GenSubFil_nest("lib", "xo-alertify-0.0.1.js"))); + } + public static void Exec_log(Xog_json_wkr wkr, String msg) { + wkr.Send_json("xo.alertify.log_by_str", Gfobj_nde.New().Add_str("msg", msg)); + } +} diff --git a/400_xowa/src/gplx/xowa/wikis/pages/tags/Xopg_tag_itm.java b/400_xowa/src/gplx/xowa/wikis/pages/tags/Xopg_tag_itm.java new file mode 100644 index 000000000..b9215f917 --- /dev/null +++ b/400_xowa/src/gplx/xowa/wikis/pages/tags/Xopg_tag_itm.java @@ -0,0 +1,88 @@ +/* +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.wikis.pages.tags; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.pages.*; +import gplx.langs.htmls.*; +public class Xopg_tag_itm { + Xopg_tag_itm(byte tid, byte[] node, byte[] href, byte[] body, Keyval... atrs) { + this.tid = tid; + this.node = node; + this.href = href; + this.body = body; + this.atrs = atrs; + } + public final String Source = "xowa"; + public byte Tid() {return tid;} private final byte tid; + public byte[] Node() {return node;} private final byte[] node; + public byte[] Href() {return href;} private final byte[] href; + public byte[] Body() {return body;} private final byte[] body; + public Keyval[] Atrs() {return atrs;} private final Keyval[] atrs; + public void To_html(Bry_bfr bfr) { + bfr.Add_byte(Byte_ascii.Angle_bgn); + bfr.Add(node); + To_html_atr(bfr, "data-source", "xowa"); + int len = atrs.length; + for (int i = 0; i < len; ++i) { + Keyval atr = atrs[i]; + To_html_atr(bfr, atr.Key(), atr.Val_to_str_or_empty()); + } + bfr.Add_byte(Byte_ascii.Angle_end); + if (!Bry_.Eq(node, Gfh_tag_.Bry__link)) { + if (body != null) { + bfr.Add_byte_nl(); + bfr.Add(body); + bfr.Add_byte_nl(); + } + bfr.Add_byte(Byte_ascii.Angle_bgn).Add_byte(Byte_ascii.Slash); + bfr.Add(node); + bfr.Add_byte(Byte_ascii.Angle_end); + } + bfr.Add_byte_nl(); + } + private static void To_html_atr(Bry_bfr bfr, String key, String val) { + bfr.Add_byte_space(); + bfr.Add_str_a7(key); + bfr.Add_byte(Byte_ascii.Eq); + bfr.Add_byte(Byte_ascii.Quote); + bfr.Add_str_a7(val); + bfr.Add_byte(Byte_ascii.Quote); + } + + public static final byte Tid__css_file = 0, Tid__css_code = 1, Tid__js_file = 2, Tid__js_code = 3, Tid__htm_frag = 4; + private static final Keyval + Tag__type_css = Keyval_.new_("type", "text/css"), Tag__type_js = Keyval_.new_("type", "text/javascript"), Tag__type_html = Keyval_.new_("type", "text/html") + , Tag__rel_stylesheet = Keyval_.new_("rel", "stylesheet"); + public static Xopg_tag_itm New_css_file(Io_url href_url) { + byte[] href = href_url.To_http_file_bry(); + return new Xopg_tag_itm(Tid__css_file, Gfh_tag_.Bry__link , href, null, Tag__type_css, Tag__rel_stylesheet, Keyval_.new_("href", String_.new_u8(href))); + } + public static Xopg_tag_itm New_css_code(byte[] code) { + return new Xopg_tag_itm(Tid__css_code, Gfh_tag_.Bry__style , null, code, Tag__type_css); + } + public static Xopg_tag_itm New_js_file(Io_url src_url) { + byte[] src = src_url.To_http_file_bry(); + return new Xopg_tag_itm(Tid__js_file , Gfh_tag_.Bry__script, src , null, Tag__type_js, Keyval_.new_("src", String_.new_u8(src))); + } + public static Xopg_tag_itm New_js_code(String code) {return New_js_code(Bry_.new_u8(code));} + public static Xopg_tag_itm New_js_code(byte[] code) { + return new Xopg_tag_itm(Tid__js_code , Gfh_tag_.Bry__script, null, code, Tag__type_js); + } + public static Xopg_tag_itm New_htm_frag(Io_url url, String id) { + byte[] html = Io_mgr.Instance.LoadFilBry(url); + return new Xopg_tag_itm(Tid__htm_frag, Gfh_tag_.Bry__script, null, html, Tag__type_html, Keyval_.new_("id", id)); + } +} diff --git a/400_xowa/src/gplx/xowa/wikis/pages/Xopg_tag_mgr.java b/400_xowa/src/gplx/xowa/wikis/pages/tags/Xopg_tag_mgr.java similarity index 75% rename from 400_xowa/src/gplx/xowa/wikis/pages/Xopg_tag_mgr.java rename to 400_xowa/src/gplx/xowa/wikis/pages/tags/Xopg_tag_mgr.java index f9eaf0376..ef227f930 100644 --- a/400_xowa/src/gplx/xowa/wikis/pages/Xopg_tag_mgr.java +++ b/400_xowa/src/gplx/xowa/wikis/pages/tags/Xopg_tag_mgr.java @@ -15,9 +15,11 @@ 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.wikis.pages; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; +package gplx.xowa.wikis.pages.tags; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.pages.*; public class Xopg_tag_mgr { - private final List_adp list = List_adp_.new_(); + private final List_adp list = List_adp_.New(); + public Xopg_tag_mgr(boolean pos_is_head) {this.pos_is_head = pos_is_head;} + public boolean Pos_is_head() {return pos_is_head;} private final boolean pos_is_head; public int Len() {return list.Len();} public Xopg_tag_itm Get_at(int i) {return (Xopg_tag_itm)list.Get_at(i);} public void Add(Xopg_tag_itm... ary) {for (Xopg_tag_itm itm : ary) list.Add(itm);} @@ -31,7 +33,6 @@ public class Xopg_tag_mgr { for (int i = 0; i < len; ++i) { Xopg_tag_itm tag = this.Get_at(i); tag.To_html(bfr); - bfr.Add_byte_nl(); } return bfr.To_bry_and_clear(); } @@ -39,11 +40,10 @@ public class Xopg_tag_mgr { int len = this.Len(); for (int i = 0; i < len; ++i) { Xopg_tag_itm tag = this.Get_at(i); - if ( Bry_.Eq(tag.Name, gplx.langs.htmls.Gfh_tag_.Bry__style) - && tag.Text != null + if ( Bry_.Eq(tag.Node(), gplx.langs.htmls.Gfh_tag_.Bry__style) + && tag.Body() != null ) { tag.To_html(bfr); - bfr.Add_byte_nl(); } } return bfr.To_bry_and_clear(); diff --git a/400_xowa/src/gplx/xowa/wikis/pages/tags/Xopg_tag_wtr.java b/400_xowa/src/gplx/xowa/wikis/pages/tags/Xopg_tag_wtr.java new file mode 100644 index 000000000..619f4ebe2 --- /dev/null +++ b/400_xowa/src/gplx/xowa/wikis/pages/tags/Xopg_tag_wtr.java @@ -0,0 +1,112 @@ +/* +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.wikis.pages.tags; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.pages.*; +import gplx.langs.htmls.*; +public class Xopg_tag_wtr { + public static boolean Loader_as_script_static = true; // TEST + public static byte[] Write(Bry_bfr bfr, boolean write_loader_tag, Xopg_tag_wtr_cbk cbk, Xopg_tag_mgr tag_mgr) { + boolean loader_as_script = Loader_as_script_static; // allow disabling for dekstop later + boolean embed_loader = !gplx.core.envs.Op_sys.Cur().Tid_is_drd(); // PERF: drd will embed in bundle.js + + // get files_count + int len = tag_mgr.Len(); + int files_total = 0; + for (int i = 0; i < len; ++i) { + Xopg_tag_itm itm = tag_mgr.Get_at(i); + if (loader_as_script) { + switch (itm.Tid()) { + case Xopg_tag_itm.Tid__js_file: + ++files_total; + break; + } + } + } + + // bgn loader_as_script + if (loader_as_script) { + if (write_loader_tag) bfr.Add(Gfh_tag_.Script_lhs_w_type).Add_byte_nl(); + if (embed_loader && tag_mgr.Pos_is_head()) + Wtr.Add_loader_func(bfr); + if (files_total > 0) Wtr.Add_files_bgn(bfr); + } + + // write tags + len = tag_mgr.Len(); + int files_idx = 0; + for (int i = 0; i < len; ++i) { + Xopg_tag_itm itm = tag_mgr.Get_at(i); + if (loader_as_script) { + switch (itm.Tid()) { + case Xopg_tag_itm.Tid__js_file: + Wtr.Add_files_itm(bfr, itm, files_idx++); + break; + } + continue; + } + else + cbk.Write_tag(bfr, itm); + } + + // end loader_as_script + if (loader_as_script) { + if (files_total > 0) Wtr.Add_files_end(bfr, files_total); + if (write_loader_tag) bfr.Add(Gfh_tag_.Script_rhs).Add_byte_nl(); + + for (int i = 0; i < len; ++i) { + Xopg_tag_itm itm = tag_mgr.Get_at(i); + switch (itm.Tid()) { + case Xopg_tag_itm.Tid__js_file: continue; + } + cbk.Write_tag(bfr, itm); + } + } + return bfr.To_bry_and_clear(); + } + static class Wtr { //#*nested + public static void Add_loader_func(Bry_bfr bfr) { + bfr.Add_str_a7_w_nl(" function load_files_sequentially(files, idx, done_cbk) {"); + bfr.Add_str_a7_w_nl(" if (files[idx]) { // idx is valid"); + bfr.Add_str_a7_w_nl(" var script = document.createElement('script');"); + bfr.Add_str_a7_w_nl(" script.setAttribute('type','text/javascript');"); + bfr.Add_str_a7_w_nl(" script.setAttribute('src', files[idx]);"); + bfr.Add_str_a7_w_nl(" script.onload = function(){"); + bfr.Add_str_a7_w_nl(" load_files_sequentially(files, ++idx, done_cbk); // load next file"); + bfr.Add_str_a7_w_nl(" };"); + bfr.Add_str_a7_w_nl(" document.getElementsByTagName('head')[0].appendChild(script)"); + bfr.Add_str_a7_w_nl(" }"); + bfr.Add_str_a7_w_nl(" else { // idx is not valid; finished;"); + bfr.Add_str_a7_w_nl(" done_cbk();"); + bfr.Add_str_a7_w_nl(" }"); + bfr.Add_str_a7_w_nl(" }"); + } + public static void Add_files_bgn(Bry_bfr bfr) { + bfr.Add_str_a7_w_nl(" var files ="); + } + public static void Add_files_itm(Bry_bfr bfr, Xopg_tag_itm itm, int idx) { + bfr.Add_str_a7(idx == 0 ? " [ '" : " , '"); + bfr.Add(itm.Href()); + bfr.Add_byte_apos().Add_byte_nl(); + } + public static void Add_files_end(Bry_bfr bfr, int files_count) { + bfr.Add_str_a7_w_nl(" ];"); + bfr.Add_str_a7_w_nl(" load_files_sequentially(files, 0, function() {"); + bfr.Add_str_a7_w_nl(" console.log('javascript files loaded: count=" + files_count + "');"); + bfr.Add_str_a7_w_nl(" });"); + } + } +} diff --git a/400_xowa/src/gplx/xowa/wikis/pages/tags/Xopg_tag_wtr_.java b/400_xowa/src/gplx/xowa/wikis/pages/tags/Xopg_tag_wtr_.java new file mode 100644 index 000000000..805a377e7 --- /dev/null +++ b/400_xowa/src/gplx/xowa/wikis/pages/tags/Xopg_tag_wtr_.java @@ -0,0 +1,39 @@ +/* +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.wikis.pages.tags; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.pages.*; +public class Xopg_tag_wtr_{ + public static void Add__xocss(Xopg_tag_mgr head_tags, Io_url http_root) { + Io_url css_dir = http_root.GenSubDir_nest("bin", "any", "xowa", "html", "res", "src", "xowa", "xocss", "core"); + head_tags.Add(Xopg_tag_itm.New_css_file(css_dir.GenSubFil_nest("xocss_core-0.0.1.css"))); + head_tags.Add(Xopg_tag_itm.New_css_file(css_dir.GenSubFil_nest("xoimg_core-0.0.1.css"))); + } + public static void Add__xohelp(Xopg_tag_mgr head_tags, Io_url http_root) { + Io_url css_dir = http_root.GenSubDir_nest("bin", "any", "xowa", "html", "res", "src", "xowa", "xocss", "help"); + head_tags.Add(Xopg_tag_itm.New_css_file(css_dir.GenSubFil_nest("xohelp-0.0.1.css"))); + head_tags.Add(Xopg_tag_itm.New_js_file(css_dir.GenSubFil_nest("xohelp-0.0.1.js"))); + } + public static void Add__mustache(Xopg_tag_mgr head_tags, Io_url http_root) { + head_tags.Add(Xopg_tag_itm.New_js_file(http_root.GenSubFil_nest("bin", "any", "xowa", "html", "res", "lib", "mustache", "mustache-2.2.1.js"))); + } + public static void Add__jquery(Xopg_tag_mgr head_tags, Io_url http_root) { + head_tags.Add(Xopg_tag_itm.New_js_file(http_root.GenSubFil_nest("bin", "any", "xowa", "html", "res", "lib", "jquery", "jquery-1.11.3.js"))); + } + public static void Add__notifyjs(Xopg_tag_mgr head_tags, Io_url http_root) { + head_tags.Add(Xopg_tag_itm.New_js_file(http_root.GenSubFil_nest("bin", "any", "xowa", "html", "res", "lib", "notifyjs", "notifyjs-0.3.1.js"))); + } +} diff --git a/400_xowa/src/gplx/xowa/wikis/pages/tags/Xopg_tag_wtr_cbk.java b/400_xowa/src/gplx/xowa/wikis/pages/tags/Xopg_tag_wtr_cbk.java new file mode 100644 index 000000000..031bb552a --- /dev/null +++ b/400_xowa/src/gplx/xowa/wikis/pages/tags/Xopg_tag_wtr_cbk.java @@ -0,0 +1,24 @@ +/* +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.wikis.pages.tags; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.pages.*; +public interface Xopg_tag_wtr_cbk { + void Write_tag(Bry_bfr bfr, Xopg_tag_itm itm); +} +class Xopg_tag_wtr_cbk__basic implements Xopg_tag_wtr_cbk { + public void Write_tag(Bry_bfr bfr, Xopg_tag_itm itm) {itm.To_html(bfr);} +} diff --git a/400_xowa/src/gplx/xowa/wikis/pages/tags/Xopg_tag_wtr_cbk_.java b/400_xowa/src/gplx/xowa/wikis/pages/tags/Xopg_tag_wtr_cbk_.java new file mode 100644 index 000000000..cb3dd508d --- /dev/null +++ b/400_xowa/src/gplx/xowa/wikis/pages/tags/Xopg_tag_wtr_cbk_.java @@ -0,0 +1,21 @@ +/* +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.wikis.pages.tags; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.pages.*; +public class Xopg_tag_wtr_cbk_ { + public static final Xopg_tag_wtr_cbk Basic = new Xopg_tag_wtr_cbk__basic(); +} \ No newline at end of file diff --git a/400_xowa/src/gplx/xowa/wikis/tdbs/ByteAry_fil.java b/400_xowa/src/gplx/xowa/wikis/tdbs/ByteAry_fil.java index 3748ab5d3..31a239ed6 100644 --- a/400_xowa/src/gplx/xowa/wikis/tdbs/ByteAry_fil.java +++ b/400_xowa/src/gplx/xowa/wikis/tdbs/ByteAry_fil.java @@ -18,10 +18,10 @@ along with this program. If not, see . package gplx.xowa.wikis.tdbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.core.primitives.*; public class ByteAry_fil { - public List_adp Itms() {return itms;} List_adp itms = List_adp_.new_(); + public List_adp Itms() {return itms;} List_adp itms = List_adp_.New(); public Io_url Fil() {return fil;} Io_url fil; public byte[] Raw_bry() {return raw_bry;} private byte[] raw_bry = Bry_.Empty; - public int Raw_len() {return raw_len.Val();} Int_obj_ref raw_len = Int_obj_ref.zero_(); + public int Raw_len() {return raw_len.Val();} Int_obj_ref raw_len = Int_obj_ref.New_zero(); public int Raw_max() {return raw_max;} private int raw_max = Io_mgr.Len_mb; public ByteAry_fil Ini_file(Io_url fil) { this.fil = fil; @@ -35,5 +35,5 @@ public class ByteAry_fil { raw_len.Val_zero_(); return rv; } - public static final ByteAry_fil Instance = new ByteAry_fil(); ByteAry_fil() {} + public static final ByteAry_fil Instance = new ByteAry_fil(); ByteAry_fil() {} } diff --git a/400_xowa/src/gplx/xowa/wikis/tdbs/Xotdb_dir_info.java b/400_xowa/src/gplx/xowa/wikis/tdbs/Xotdb_dir_info.java index 5b3e2e3f2..46fff6ace 100644 --- a/400_xowa/src/gplx/xowa/wikis/tdbs/Xotdb_dir_info.java +++ b/400_xowa/src/gplx/xowa/wikis/tdbs/Xotdb_dir_info.java @@ -30,24 +30,24 @@ public class Xotdb_dir_info { ext_bry = Wtr_ext(v); ext_str = String_.new_a7(ext_bry); return this; - } byte ext_tid = gplx.core.ios.Io_stream_.Tid_raw; - public static final String Wtr_xdat_str = ".xdat", Wtr_zip_str = ".zip", Wtr_gz_str = ".gz", Wtr_bz2_str = ".bz2"; - public static final byte[] Wtr_xdat_bry = Bry_.new_a7(Wtr_xdat_str), Wtr_zip_bry = Bry_.new_a7(Wtr_zip_str), Wtr_gz_bry = Bry_.new_a7(Wtr_gz_str), Wtr_bz2_bry = Bry_.new_a7(Wtr_bz2_str); + } byte ext_tid = gplx.core.ios.streams.Io_stream_.Tid_raw; + public static final String Wtr_xdat_str = ".xdat", Wtr_zip_str = ".zip", Wtr_gz_str = ".gz", Wtr_bz2_str = ".bz2"; + public static final byte[] Wtr_xdat_bry = Bry_.new_a7(Wtr_xdat_str), Wtr_zip_bry = Bry_.new_a7(Wtr_zip_str), Wtr_gz_bry = Bry_.new_a7(Wtr_gz_str), Wtr_bz2_bry = Bry_.new_a7(Wtr_bz2_str); public static String Wtr_dir(byte v) { switch (v) { - case gplx.core.ios.Io_stream_.Tid_raw : return ""; - case gplx.core.ios.Io_stream_.Tid_zip : return "_zip"; - case gplx.core.ios.Io_stream_.Tid_gzip : return "_gz"; - case gplx.core.ios.Io_stream_.Tid_bzip2 : return "_bz2"; + case gplx.core.ios.streams.Io_stream_.Tid_raw : return ""; + case gplx.core.ios.streams.Io_stream_.Tid_zip : return "_zip"; + case gplx.core.ios.streams.Io_stream_.Tid_gzip : return "_gz"; + case gplx.core.ios.streams.Io_stream_.Tid_bzip2 : return "_bz2"; default : throw Err_.new_unhandled(v); } } public static byte[] Wtr_ext(byte v) { switch (v) { - case gplx.core.ios.Io_stream_.Tid_raw : return Wtr_xdat_bry; - case gplx.core.ios.Io_stream_.Tid_zip : return Wtr_zip_bry; - case gplx.core.ios.Io_stream_.Tid_gzip : return Wtr_gz_bry; - case gplx.core.ios.Io_stream_.Tid_bzip2 : return Wtr_bz2_bry; + case gplx.core.ios.streams.Io_stream_.Tid_raw : return Wtr_xdat_bry; + case gplx.core.ios.streams.Io_stream_.Tid_zip : return Wtr_zip_bry; + case gplx.core.ios.streams.Io_stream_.Tid_gzip : return Wtr_gz_bry; + case gplx.core.ios.streams.Io_stream_.Tid_bzip2 : return Wtr_bz2_bry; default : throw Err_.new_unhandled(v); } } diff --git a/400_xowa/src/gplx/xowa/wikis/tdbs/Xotdb_fsys_mgr.java b/400_xowa/src/gplx/xowa/wikis/tdbs/Xotdb_fsys_mgr.java index 8e99fdad6..55d60f27f 100644 --- a/400_xowa/src/gplx/xowa/wikis/tdbs/Xotdb_fsys_mgr.java +++ b/400_xowa/src/gplx/xowa/wikis/tdbs/Xotdb_fsys_mgr.java @@ -20,19 +20,19 @@ import gplx.xowa.bldrs.*; import gplx.xowa.wikis.nss.*; import gplx.xowa.wikis.tdbs.utils.*; public class Xotdb_fsys_mgr { - private final Io_url root_dir; private final Xow_ns_mgr ns_mgr; + private final Io_url root_dir; private final Xow_ns_mgr ns_mgr; public Xotdb_fsys_mgr(Io_url root_dir, Xow_ns_mgr ns_mgr) { this.root_dir = root_dir; this.ns_mgr = ns_mgr; this.tmp_dir = root_dir.GenSubDir("tmp"); this.ns_dir = root_dir.GenSubDir(Xotdb_dir_info_.Name_ns); this.site_dir = root_dir.GenSubDir(Xotdb_dir_info_.Name_site); } - public Io_url Tmp_dir() {return tmp_dir;} private final Io_url tmp_dir; - public Io_url Ns_dir() {return ns_dir;} private final Io_url ns_dir; - public Io_url Site_dir() {return site_dir;} private final Io_url site_dir; + public Io_url Tmp_dir() {return tmp_dir;} private final Io_url tmp_dir; + public Io_url Ns_dir() {return ns_dir;} private final Io_url ns_dir; + public Io_url Site_dir() {return site_dir;} private final Io_url site_dir; public Io_url Cfg_wiki_core_fil() {return root_dir.GenSubFil_nest(Const_url_cfg, "wiki_core.gfs");} public Io_url Cfg_wiki_stats_fil() {return root_dir.GenSubFil_nest(Const_url_cfg, "wiki_stats.gfs");} - public Xotdb_dir_info[] Tdb_dir_regy() {return dir_regy;} private final Xotdb_dir_info[] dir_regy = Xotdb_dir_info_.regy_(); + public Xotdb_dir_info[] Tdb_dir_regy() {return dir_regy;} private final Xotdb_dir_info[] dir_regy = Xotdb_dir_info_.regy_(); public Io_url Url_ns_dir(String ns_num, byte tid) {return ns_dir.GenSubDir_nest(ns_num, Xotdb_dir_info_.Tid_name(tid));} public Io_url Url_ns_reg(String ns_num, byte tid) {return ns_dir.GenSubFil_nest(ns_num, Xotdb_dir_info_.Tid_name(tid), Xotdb_dir_info_.Name_reg_fil);} public Io_url Url_ns_fil(byte tid, int ns_id, int fil_idx) { @@ -56,21 +56,21 @@ public class Xotdb_fsys_mgr { private static void Scan_dirs_zip(Xotdb_fsys_mgr fsys_mgr, byte id) { Io_url[] dirs = Io_mgr.Instance.QueryDir_args(fsys_mgr.Ns_dir().GenSubDir_nest("000")).FilPath_("*page*").DirOnly_().Recur_(false).ExecAsUrlAry(); int len = dirs.length; - byte tid = gplx.core.ios.Io_stream_.Tid_raw; // needed for Xoa_xowa_exec_tst + byte tid = gplx.core.ios.streams.Io_stream_.Tid_raw; // needed for Xoa_xowa_exec_tst for (int i = 0; i < len; i++) { Io_url dir = dirs[i]; String dir_name = dir.NameOnly(); - if (String_.Eq(dir_name, "page")) {tid = gplx.core.ios.Io_stream_.Tid_raw; break;} - else if (String_.Eq(dir_name, "page_zip")) tid = gplx.core.ios.Io_stream_.Tid_zip; - else if (String_.Eq(dir_name, "page_gz")) tid = gplx.core.ios.Io_stream_.Tid_gzip; - else if (String_.Eq(dir_name, "page_bz2")) tid = gplx.core.ios.Io_stream_.Tid_bzip2; + if (String_.Eq(dir_name, "page")) {tid = gplx.core.ios.streams.Io_stream_.Tid_raw; break;} + else if (String_.Eq(dir_name, "page_zip")) tid = gplx.core.ios.streams.Io_stream_.Tid_zip; + else if (String_.Eq(dir_name, "page_gz")) tid = gplx.core.ios.streams.Io_stream_.Tid_gzip; + else if (String_.Eq(dir_name, "page_bz2")) tid = gplx.core.ios.streams.Io_stream_.Tid_bzip2; } fsys_mgr.Tdb_dir_regy()[id].Ext_tid_(tid); } private static Hash_adp Scan_dirs_ns(Io_url ns_dir, Xow_ns_mgr ns_mgr) { Io_url[] ns_dirs = Io_mgr.Instance.QueryDir_args(ns_dir).Recur_(false).DirOnly_().ExecAsUrlAry(); int len = ns_dirs.length; - Hash_adp rv = Hash_adp_.new_(); + Hash_adp rv = Hash_adp_.New(); for (int i = 0; i < len; i++) { int ns_int = Int_.parse_or(ns_dirs[i].NameOnly(), Int_.Min_value); if (ns_int == Int_.Min_value) continue; Xow_ns ns = ns_mgr.Ids_get_or_null(ns_int); if (ns == null) continue; diff --git a/400_xowa/src/gplx/xowa/wikis/tdbs/Xotdb_fsys_mgr_tst.java b/400_xowa/src/gplx/xowa/wikis/tdbs/Xotdb_fsys_mgr_tst.java index 51a3352bb..91597409c 100644 --- a/400_xowa/src/gplx/xowa/wikis/tdbs/Xotdb_fsys_mgr_tst.java +++ b/400_xowa/src/gplx/xowa/wikis/tdbs/Xotdb_fsys_mgr_tst.java @@ -19,7 +19,7 @@ package gplx.xowa.wikis.tdbs; import gplx.*; import gplx.xowa.*; import gplx.xow import org.junit.*; import gplx.xowa.wikis.tdbs.*; import gplx.xowa.wikis.nss.*; public class Xotdb_fsys_mgr_tst { - @Before public void init() {fxt.Clear();} private final Xow_fsys_mgr_fxt fxt = new Xow_fsys_mgr_fxt(); + @Before public void init() {fxt.Clear();} private final Xow_fsys_mgr_fxt fxt = new Xow_fsys_mgr_fxt(); @Test public void Basic() { fxt.Zip_(Xotdb_dir_info_.Tid_page, Bool_.N).Url_ns_fil(Xotdb_dir_info_.Tid_page, Xow_ns_.Tid__main, 123, "mem/xowa/wiki/en.wikipedia.org/ns/000/page/00/00/00/01/0000000123.xdat"); fxt.Zip_(Xotdb_dir_info_.Tid_page, Bool_.Y).Url_ns_fil(Xotdb_dir_info_.Tid_page, Xow_ns_.Tid__main, 123, "mem/xowa/wiki/en.wikipedia.org/ns/000/page_zip/00/00/00/01/0000000123.zip"); @@ -31,7 +31,7 @@ class Xow_fsys_mgr_fxt { wiki = Xoa_app_fxt.Make__wiki__edit(app); } Xoae_app app; Xowe_wiki wiki; - public Xow_fsys_mgr_fxt Zip_(byte tid, boolean v) {wiki.Tdb_fsys_mgr().Tdb_dir_regy()[tid].Ext_tid_(v ? gplx.core.ios.Io_stream_.Tid_zip : gplx.core.ios.Io_stream_.Tid_raw); return this;} + public Xow_fsys_mgr_fxt Zip_(byte tid, boolean v) {wiki.Tdb_fsys_mgr().Tdb_dir_regy()[tid].Ext_tid_(v ? gplx.core.ios.streams.Io_stream_.Tid_zip : gplx.core.ios.streams.Io_stream_.Tid_raw); return this;} public void Url_ns_fil(byte tid, int ns_id, int fil_idx, String expd) { Tfds.Eq(expd, wiki.Tdb_fsys_mgr().Url_ns_fil(tid, ns_id, fil_idx).Raw()); } diff --git a/400_xowa/src/gplx/xowa/wikis/tdbs/hives/Xoa_hive_mgr.java b/400_xowa/src/gplx/xowa/wikis/tdbs/hives/Xoa_hive_mgr.java index cb9dcd108..5932c65f5 100644 --- a/400_xowa/src/gplx/xowa/wikis/tdbs/hives/Xoa_hive_mgr.java +++ b/400_xowa/src/gplx/xowa/wikis/tdbs/hives/Xoa_hive_mgr.java @@ -26,7 +26,7 @@ public class Xoa_hive_mgr { if (!hive_url.Eq(regy_mgr.Fil())) regy_mgr.Init(hive_url); return regy_mgr.Files_find(ttl); - } private Xowd_regy_mgr regy_mgr = new Xowd_regy_mgr(); Int_obj_ref bry_len = Int_obj_ref.zero_(); Xob_xdat_file xdat_rdr = new Xob_xdat_file(); Xob_xdat_itm xdat_itm = new Xob_xdat_itm(); + } private Xowd_regy_mgr regy_mgr = new Xowd_regy_mgr(); Int_obj_ref bry_len = Int_obj_ref.New_zero(); Xob_xdat_file xdat_rdr = new Xob_xdat_file(); Xob_xdat_itm xdat_itm = new Xob_xdat_itm(); public Xowd_regy_mgr Regy_mgr() {return regy_mgr;} public Xob_xdat_file Get_rdr(Io_url hive_root, byte[] fil_ext_bry, int fil_idx) { Bry_bfr tmp_bfr = app.Utl__bfr_mkr().Get_m001(); diff --git a/400_xowa/src/gplx/xowa/wikis/tdbs/hives/Xob_hive_mgr.java b/400_xowa/src/gplx/xowa/wikis/tdbs/hives/Xob_hive_mgr.java index 32ac76bca..c7b460b77 100644 --- a/400_xowa/src/gplx/xowa/wikis/tdbs/hives/Xob_hive_mgr.java +++ b/400_xowa/src/gplx/xowa/wikis/tdbs/hives/Xob_hive_mgr.java @@ -37,7 +37,7 @@ public class Xob_hive_mgr { } Xob_xdat_file xdat_load_(Xob_xdat_file xdat, byte dir_tid, Xow_ns ns, int fil_idx) { Io_url xdat_url = fsys_mgr.Url_ns_fil(dir_tid, ns.Id(), fil_idx); - byte[] xdat_bry = gplx.core.ios.Io_stream_rdr_.Load_all(xdat_url); + byte[] xdat_bry = gplx.core.ios.streams.Io_stream_rdr_.Load_all(xdat_url); xdat.Parse(xdat_bry, xdat_bry.length, xdat_url); return xdat; } @@ -115,7 +115,7 @@ public class Xob_hive_mgr { byte dir_tid = Xotdb_dir_info_.Tid_ttl; int xdat_idx = Regy__find_file_ns(key, dir_tid, ns.Num_str()); Io_url xdat_url = fsys_mgr.Url_ns_fil(dir_tid, ns.Id(), xdat_idx); - byte[] xdat_bry = gplx.core.ios.Io_stream_rdr_.Load_all(xdat_url); + byte[] xdat_bry = gplx.core.ios.streams.Io_stream_rdr_.Load_all(xdat_url); xdat.Parse(xdat_bry, xdat_bry.length, xdat_url); xdat.Find(xdat_itm, key, Xotdb_page_itm_.Txt_ttl_pos, Byte_ascii.Tab, false); Find_nearby_add_fwd(list, dir_tid, ns, include_redirects, count, xdat_idx, xdat_itm.Itm_idx()); @@ -132,7 +132,7 @@ public class Xob_hive_mgr { // while (loop) { // if (fil_idx == -1) break; // Io_url xdat_url = fsys_mgr.Url_ns_fil(dir_tid, ns.Id(), fil_idx); -// byte[] xdat_bry = gplx.core.ios.Io_stream_rdr_.Load_all(xdat_url); +// byte[] xdat_bry = gplx.core.ios.streams.Io_stream_rdr_.Load_all(xdat_url); // xdat.Parse(xdat_bry, xdat_bry.length, xdat_url); // int row_idx = first && row_bgn != -1 ? row_bgn : xdat.Count() - 1; // first = false; @@ -155,7 +155,7 @@ public class Xob_hive_mgr { while (loop) { if (fil_idx == regy_len) break; Io_url xdat_url = fsys_mgr.Url_ns_fil(dir_tid, ns.Id(), fil_idx); - byte[] xdat_bry = gplx.core.ios.Io_stream_rdr_.Load_all(xdat_url); + byte[] xdat_bry = gplx.core.ios.streams.Io_stream_rdr_.Load_all(xdat_url); xdat.Parse(xdat_bry, xdat_bry.length, xdat_url); int row_idx = first ? row_bgn : 0; int rows_len = xdat.Count(); @@ -186,7 +186,7 @@ public class Xob_hive_mgr { int Regy__find_file_by_url(byte[] key, Io_url regy_url) {regy.Init(regy_url); return regy.Files_find(key);} private Xowd_regy_mgr regy = new Xowd_regy_mgr(); private void Xdat__create_row(byte dir_tid, byte[] key, byte[] row, int xdat_idx) { Io_url xdat_url = fsys_mgr.Url_site_fil(dir_tid, xdat_idx); - byte[] xdat_bry = gplx.core.ios.Io_stream_rdr_.Load_all(xdat_url); + byte[] xdat_bry = gplx.core.ios.streams.Io_stream_rdr_.Load_all(xdat_url); Xob_xdat_file xdat_fil = new Xob_xdat_file(); if (xdat_bry.length > 0) // if file is not empty, load it and parse it xdat_fil.Parse(xdat_bry, xdat_bry.length, xdat_url); diff --git a/400_xowa/src/gplx/xowa/wikis/tdbs/hives/Xow_hive_mgr_fxt.java b/400_xowa/src/gplx/xowa/wikis/tdbs/hives/Xow_hive_mgr_fxt.java index d2b08dffc..e11a9ebc3 100644 --- a/400_xowa/src/gplx/xowa/wikis/tdbs/hives/Xow_hive_mgr_fxt.java +++ b/400_xowa/src/gplx/xowa/wikis/tdbs/hives/Xow_hive_mgr_fxt.java @@ -30,7 +30,7 @@ public class Xow_hive_mgr_fxt { } private Xob_hive_mgr hive_mgr; Xoae_app app; public Xowe_wiki Wiki() {return wiki;} private Xowe_wiki wiki; public void Find_nearby(String key, int count, boolean include_redirects, String... expd) { - List_adp list = List_adp_.new_(); + List_adp list = List_adp_.New(); wiki.Hive_mgr().Find_bgn(list, wiki.Ns_mgr().Ns_main(), Bry_.new_a7(key), count, include_redirects); int actl_len = list.Count(); String[] actl = new String[actl_len]; @@ -47,7 +47,7 @@ public class Xow_hive_mgr_fxt { int id = 0; int ttl_bry_len = Int_.DigitCount(ttls_per_file); Xob_xdat_file_wtr xdat_wtr = Xob_xdat_file_wtr.new_file_(ttls_per_file * 8, wiki.Tdb_fsys_mgr().Url_ns_dir(ns.Num_str(), Xotdb_dir_info_.Tid_ttl)); - Bry_bfr tmp_bfr = Bry_bfr.new_(); + Bry_bfr tmp_bfr = Bry_bfr_.New(); byte ltr = Byte_ascii.Ltr_A; byte[] ttl_0 = Bry_.Empty, ttl_n = Bry_.Empty; for (int fil_idx = 0; fil_idx < files; fil_idx++) { for (int ttl_idx = 0; ttl_idx < ttls_per_file; ttl_idx++) { @@ -98,7 +98,7 @@ public class Xow_hive_mgr_fxt { } } class Xob_reg_wtr { - Bry_bfr bfr = Bry_bfr.new_(); int fil_count = 0; + Bry_bfr bfr = Bry_bfr_.New(); int fil_count = 0; public void Add(byte[] bgn, byte[] end, int itm_count) { bfr .Add_int_variable(fil_count++).Add_byte(Byte_ascii.Pipe) diff --git a/400_xowa/src/gplx/xowa/wikis/tdbs/hives/Xowd_hive_regy_itm.java b/400_xowa/src/gplx/xowa/wikis/tdbs/hives/Xowd_hive_regy_itm.java index 516a088c5..6dcf6e25f 100644 --- a/400_xowa/src/gplx/xowa/wikis/tdbs/hives/Xowd_hive_regy_itm.java +++ b/400_xowa/src/gplx/xowa/wikis/tdbs/hives/Xowd_hive_regy_itm.java @@ -27,7 +27,7 @@ public class Xowd_hive_regy_itm {// csv file with the format of "idx|bgn|end|cou List_adp rv = utl.Itms(); byte[] ary = utl.Raw_bry(); int ary_len = utl.Raw_len(); if (ary_len == 0) return Xowd_hive_regy_itm.Ary_empty; //throw Err_mgr.Instance.fmt_("xowa.wiki.data", "title_registry_file_not_found", "title_registry file not found: ~{0}", utl.Fil().Xto_api()); - Int_obj_ref pos = Int_obj_ref.zero_(); + Int_obj_ref pos = Int_obj_ref.New_zero(); while (pos.Val() < ary_len) { Xowd_hive_regy_itm file = new Xowd_hive_regy_itm(); file.idx = Bry_.ReadCsvInt(ary, pos, Bry_.Dlm_fld); @@ -49,5 +49,5 @@ public class Xowd_hive_regy_itm {// csv file with the format of "idx|bgn|end|cou .Add_int_variable(count).Add_byte_nl(); } public static Xowd_hive_regy_itm tmp_() {return new Xowd_hive_regy_itm();} - public static final Xowd_hive_regy_itm[] Ary_empty = new Xowd_hive_regy_itm[0]; + public static final Xowd_hive_regy_itm[] Ary_empty = new Xowd_hive_regy_itm[0]; } diff --git a/400_xowa/src/gplx/xowa/wikis/tdbs/hives/Xowd_regy_mgr.java b/400_xowa/src/gplx/xowa/wikis/tdbs/hives/Xowd_regy_mgr.java index f37292f68..18c1905de 100644 --- a/400_xowa/src/gplx/xowa/wikis/tdbs/hives/Xowd_regy_mgr.java +++ b/400_xowa/src/gplx/xowa/wikis/tdbs/hives/Xowd_regy_mgr.java @@ -64,7 +64,7 @@ public class Xowd_regy_mgr { throw Err_.new_unimplemented(); // FUTURE: note that deletes are harder; rng ends could be deleted, so would need to open file and get new rng end } public void Save() { - Bry_bfr bfr = Bry_bfr.new_(); + Bry_bfr bfr = Bry_bfr_.New(); int len = files_ary.length; for (int i = 0; i < len; i++) { Xowd_hive_regy_itm itm = files_ary[i]; diff --git a/400_xowa/src/gplx/xowa/wikis/tdbs/metas/Xof_meta_fil.java b/400_xowa/src/gplx/xowa/wikis/tdbs/metas/Xof_meta_fil.java index ccd8b36ab..c75f2657f 100644 --- a/400_xowa/src/gplx/xowa/wikis/tdbs/metas/Xof_meta_fil.java +++ b/400_xowa/src/gplx/xowa/wikis/tdbs/metas/Xof_meta_fil.java @@ -18,10 +18,10 @@ along with this program. If not, see . package gplx.xowa.wikis.tdbs.metas; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.tdbs.*; import gplx.core.flds.*; public class Xof_meta_fil { - private final Ordered_hash itms = Ordered_hash_.New_bry(); + private final Ordered_hash itms = Ordered_hash_.New_bry(); public Xof_meta_fil(Xof_meta_mgr meta_mgr, byte[] md5) {this.meta_mgr = meta_mgr; this.md5 = md5;} - public Xof_meta_mgr Owner_mgr() {return meta_mgr;} private final Xof_meta_mgr meta_mgr; - public byte[] Md5() {return md5;} private final byte[] md5; + public Xof_meta_mgr Owner_mgr() {return meta_mgr;} private final Xof_meta_mgr meta_mgr; + public byte[] Md5() {return md5;} private final byte[] md5; public void Dirty_() {meta_mgr.Dirty_(this);} public Xof_meta_itm Get_or_new(byte[] ttl) { Xof_meta_itm rv = Get_or_null(ttl); @@ -57,5 +57,5 @@ public class Xof_meta_fil { Bld_url_bfr.Add_byte(md5[i]); Bld_url_bfr.Add(Bry_url_ext); return Io_url_.new_fil_(Bld_url_bfr.To_str_and_clear()); - } static final byte[] Bry_url_ext = Bry_.new_a7(".csv"); static Bry_bfr Bld_url_bfr = Bry_bfr.new_(260); // 260 is max path of url + } static final byte[] Bry_url_ext = Bry_.new_a7(".csv"); static Bry_bfr Bld_url_bfr = Bry_bfr_.New_w_size(260); // 260 is max path of url } diff --git a/400_xowa/src/gplx/xowa/wikis/tdbs/metas/Xof_meta_mgr.java b/400_xowa/src/gplx/xowa/wikis/tdbs/metas/Xof_meta_mgr.java index fc8693800..2af4bc4f1 100644 --- a/400_xowa/src/gplx/xowa/wikis/tdbs/metas/Xof_meta_mgr.java +++ b/400_xowa/src/gplx/xowa/wikis/tdbs/metas/Xof_meta_mgr.java @@ -17,9 +17,9 @@ along with this program. If not, see . */ package gplx.xowa.wikis.tdbs.metas; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.tdbs.*; import gplx.core.flds.*; -public class Xof_meta_mgr implements GfoInvkAble { - private Object[] root = new Object[16]; private final Ordered_hash dirty_fils = Ordered_hash_.New_bry(); - private final Gfo_fld_rdr rdr = Gfo_fld_rdr.xowa_(); private final Xof_meta_thumb_parser parser = new Xof_meta_thumb_parser(); +public class Xof_meta_mgr implements Gfo_invk { + private Object[] root = new Object[16]; private final Ordered_hash dirty_fils = Ordered_hash_.New_bry(); + private final Gfo_fld_rdr rdr = Gfo_fld_rdr.xowa_(); private final Xof_meta_thumb_parser parser = new Xof_meta_thumb_parser(); public Xof_meta_mgr(Xowe_wiki wiki) {this.wiki = wiki; this.root_dir = wiki.Appe().Fsys_mgr().File_dir().GenSubDir_nest("#meta", wiki.Domain_str());} public Xowe_wiki Wiki() {return wiki;} private Xowe_wiki wiki; public Io_url Root_dir() {return root_dir;} Io_url root_dir; @@ -51,7 +51,7 @@ public class Xof_meta_mgr implements GfoInvkAble { public void Save() {Save(false);} public void Save(boolean clear) { int dirty_len = dirty_fils.Count(); - Bry_bfr tmp_bfr = Bry_bfr.new_(); + Bry_bfr tmp_bfr = Bry_bfr_.New(); wtr.Bfr_(tmp_bfr); for (int i = 0; i < dirty_len; i++) { Xof_meta_fil fil = (Xof_meta_fil)dirty_fils.Get_at(i); @@ -75,7 +75,7 @@ public class Xof_meta_mgr implements GfoInvkAble { } public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_regy_depth_)) depth = m.ReadInt("v"); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String Invk_regy_depth_ = "depth_"; static final String GRP_KEY = "xowa.file_regy."; diff --git a/400_xowa/src/gplx/xowa/wikis/tdbs/utils/Xos_url_gen.java b/400_xowa/src/gplx/xowa/wikis/tdbs/utils/Xos_url_gen.java index e40380364..2955ca280 100644 --- a/400_xowa/src/gplx/xowa/wikis/tdbs/utils/Xos_url_gen.java +++ b/400_xowa/src/gplx/xowa/wikis/tdbs/utils/Xos_url_gen.java @@ -44,5 +44,5 @@ public class Xos_url_gen implements Io_url_gen { tmp_bfr.Add(ext); return Io_url_.new_fil_(tmp_bfr.To_str_and_clear()); } - private static Bry_bfr tmp_bfr = Bry_bfr.reset_(256); + private static Bry_bfr tmp_bfr = Bry_bfr_.Reset(256); } diff --git a/400_xowa/src/gplx/xowa/wikis/tdbs/xdats/Xob_xdat_file.java b/400_xowa/src/gplx/xowa/wikis/tdbs/xdats/Xob_xdat_file.java index 1ebc28956..00bf6a8d6 100644 --- a/400_xowa/src/gplx/xowa/wikis/tdbs/xdats/Xob_xdat_file.java +++ b/400_xowa/src/gplx/xowa/wikis/tdbs/xdats/Xob_xdat_file.java @@ -16,7 +16,8 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.wikis.tdbs.xdats; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.tdbs.*; -import gplx.core.ios.*; import gplx.core.encoders.*; +import gplx.core.ios.*; import gplx.core.ios.streams.*; +import gplx.core.encoders.*; public class Xob_xdat_file { public byte[] Src() {return src;} private byte[] src; public int Src_len() {return src_len;} public Xob_xdat_file Src_len_(int v) {src_len = v; return this;} private int src_len; // NOTE: src_len can be different than src.length (occurs when reusing brys) @@ -98,9 +99,9 @@ public class Xob_xdat_file { if (insert) bfr.Add(new_itm); itm_0_bgn = (ary_len * Len_idx_itm) + Len_itm_dlm; src = bfr.To_bry_and_clear(); - } static final byte Dlm_hdr_fld = Byte_ascii.Pipe, Dlm_row = Byte_ascii.Nl; + } static final byte Dlm_hdr_fld = Byte_ascii.Pipe, Dlm_row = Byte_ascii.Nl; public void Save(Io_url url) { - Bry_bfr bfr = Bry_bfr.new_(); + Bry_bfr bfr = Bry_bfr_.New(); Srl_save_bry(bfr); Io_stream_wtr wtr = Io_stream_wtr_.new_by_url_(url); try { @@ -179,7 +180,7 @@ public class Xob_xdat_file { public static byte[] Rebuid_header(byte[] orig, byte[] dlm) { byte[][] rows = Bry_split_.Split(orig, dlm); int rows_len = rows.length; - Bry_bfr bfr = Bry_bfr.new_(); + Bry_bfr bfr = Bry_bfr_.New(); int dlm_len = dlm.length; for (int i = 1; i < rows_len; i++) { // i=1; skip 1st row (which is empty header) byte[] row = rows[i]; diff --git a/400_xowa/src/gplx/xowa/wikis/tdbs/xdats/Xob_xdat_file_tst.java b/400_xowa/src/gplx/xowa/wikis/tdbs/xdats/Xob_xdat_file_tst.java index 1905439bc..71c90f10e 100644 --- a/400_xowa/src/gplx/xowa/wikis/tdbs/xdats/Xob_xdat_file_tst.java +++ b/400_xowa/src/gplx/xowa/wikis/tdbs/xdats/Xob_xdat_file_tst.java @@ -77,7 +77,7 @@ public class Xob_xdat_file_tst { private void Rebuild_header_tst(String orig, String expd) { 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_(); + Bry_bfr tmp = Bry_bfr_.New(); private void tst_Sort(Xob_xdat_file rdr, gplx.core.lists.ComparerAble comparer, String expd) { rdr.Sort(tmp, comparer); Chk_file(rdr, expd); diff --git a/400_xowa/src/gplx/xowa/wikis/tdbs/xdats/Xob_xdat_file_wtr.java b/400_xowa/src/gplx/xowa/wikis/tdbs/xdats/Xob_xdat_file_wtr.java index a1d866b18..c5d8b3358 100644 --- a/400_xowa/src/gplx/xowa/wikis/tdbs/xdats/Xob_xdat_file_wtr.java +++ b/400_xowa/src/gplx/xowa/wikis/tdbs/xdats/Xob_xdat_file_wtr.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.wikis.tdbs.xdats; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.tdbs.*; -import gplx.core.ios.*; import gplx.core.encoders.*; import gplx.xowa.wikis.tdbs.*; +import gplx.core.ios.*; import gplx.core.ios.streams.*; import gplx.core.encoders.*; import gplx.xowa.wikis.tdbs.*; public class Xob_xdat_file_wtr { public static Xob_xdat_file_wtr new_file_(int fil_max, Io_url root_dir) {return new Xob_xdat_file_wtr(fil_max, root_dir, Io_stream_.Tid_raw);} public static Xob_xdat_file_wtr new_by_tid_(int fil_max, Io_url root_dir, byte dir_tid, byte tid) {return new Xob_xdat_file_wtr(fil_max, root_dir.GenSubDir(Xotdb_dir_info_.Tid_name(dir_tid) + Xotdb_dir_info.Wtr_dir(tid)), tid);} @@ -24,7 +24,7 @@ public class Xob_xdat_file_wtr { this.fil_max = fil_max; this.root_dir = root_dir; fil_ext = Xotdb_dir_info.Wtr_ext(wtr_tid); - bfr = Bry_bfr.new_(fil_max); + bfr = Bry_bfr_.New_w_size(fil_max); idx = new int[fil_max / 8]; // ASSUME: any given row must at least be 8 bytes long Url_gen(fil_idx); // set 1st url wtr = Io_stream_wtr_.new_by_tid_(wtr_tid); @@ -143,6 +143,6 @@ class SortAlgo_quick {// quicksort if (lo < j) Sort_recurse(lo, j); if (i < hi) Sort_recurse(i, hi); } - public static final SortAlgo_quick Instance = new SortAlgo_quick(); SortAlgo_quick() {} + public static final SortAlgo_quick Instance = new SortAlgo_quick(); SortAlgo_quick() {} } diff --git a/400_xowa/src/gplx/xowa/wikis/xwikis/bldrs/Xow_xwiki_itm_bldr.java b/400_xowa/src/gplx/xowa/wikis/xwikis/bldrs/Xow_xwiki_itm_bldr.java index 249feb9ef..42e49e1d6 100644 --- a/400_xowa/src/gplx/xowa/wikis/xwikis/bldrs/Xow_xwiki_itm_bldr.java +++ b/400_xowa/src/gplx/xowa/wikis/xwikis/bldrs/Xow_xwiki_itm_bldr.java @@ -21,8 +21,8 @@ import gplx.xowa.apps.gfs.*; import gplx.xowa.langs.*; import gplx.xowa.wikis.domains.*; public class Xow_xwiki_itm_bldr { - private final Bry_bfr tmp_bfr = Bry_bfr.new_(); - private final Gfo_url_parser url_parser = new Gfo_url_parser(); private final Gfo_url url = new Gfo_url(); + private final Bry_bfr tmp_bfr = Bry_bfr_.New(); + private final Gfo_url_parser url_parser = new Gfo_url_parser(); private final Gfo_url url = new Gfo_url(); public Xow_xwiki_itm Bld_mw(Xow_domain_itm cur_domain, byte[] key, byte[] mw_url, byte[] domain_name) {return Bld_xo(cur_domain, key, Xoa_gfs_php_mgr.Xto_gfs(tmp_bfr, mw_url), domain_name);} // EX: "//commons.wikimedia.org/wiki/Category:$1" -> "//commons.wikimedia.org/wiki/Category:~{0}" public Xow_xwiki_itm Bld_xo(Xow_domain_itm cur_domain, byte[] key, byte[] xo_url, byte[] domain_name) { byte[] domain_bry = Xow_xwiki_mgr.Get_domain_from_url(url_parser, url, xo_url); @@ -44,10 +44,10 @@ public class Xow_xwiki_itm_bldr { } return new Xow_xwiki_itm(key, xo_url, lang_id, domain_itm.Domain_type_id(), domain_bry, domain_name, cur_domain.Abrv_wm()); } - private static final Hash_adp_bry domain_name_hash = Hash_adp_bry.cs() + private static final Hash_adp_bry domain_name_hash = Hash_adp_bry.cs() .Add_str_obj("commons.wikimedia.org" , Bry_.new_a7("Wikimedia Commons")) .Add_str_obj("www.dmoz.org" , Bry_.new_a7("DMOZ")) ; - private static final byte[] Bry__domain_name__wikipedia = Bry_.new_a7("Wikipedia"); - public static final Xow_xwiki_itm_bldr Instance = new Xow_xwiki_itm_bldr(); Xow_xwiki_itm_bldr() {} + private static final byte[] Bry__domain_name__wikipedia = Bry_.new_a7("Wikipedia"); + public static final Xow_xwiki_itm_bldr Instance = new Xow_xwiki_itm_bldr(); Xow_xwiki_itm_bldr() {} } diff --git a/400_xowa/src/gplx/xowa/wikis/xwikis/parsers/Xow_xwiki_itm_parser_tst.java b/400_xowa/src/gplx/xowa/wikis/xwikis/parsers/Xow_xwiki_itm_parser_tst.java index fc3875a46..cc5f02168 100644 --- a/400_xowa/src/gplx/xowa/wikis/xwikis/parsers/Xow_xwiki_itm_parser_tst.java +++ b/400_xowa/src/gplx/xowa/wikis/xwikis/parsers/Xow_xwiki_itm_parser_tst.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.xowa.wikis.xwikis.parsers; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.xwikis.*; import org.junit.*; import gplx.xowa.wikis.domains.*; public class Xow_xwiki_itm_parser_tst { - private final Xow_xwiki_itm_parser_fxt fxt = new Xow_xwiki_itm_parser_fxt(); + private final Xow_xwiki_itm_parser_fxt fxt = new Xow_xwiki_itm_parser_fxt(); @Test public void Manual() { fxt.Exec_parse(String_.Concat_lines_nl_skip_last ( "0|a|https://a.org/~{0}|A" @@ -70,8 +70,8 @@ public class Xow_xwiki_itm_parser_tst { } } class Xow_xwiki_itm_parser_fxt { - private final Xow_xwiki_itm_parser parser = new Xow_xwiki_itm_parser(); - private final Bry_bfr tmp_bfr = Bry_bfr.new_(); + private final Xow_xwiki_itm_parser parser = new Xow_xwiki_itm_parser(); + private final Bry_bfr tmp_bfr = Bry_bfr_.New(); public Xow_xwiki_itm_parser_fxt() { parser.Init_by_wiki(Xow_domain_itm_.parse(Bry_.new_a7("en.wikipedia.org"))); } diff --git a/400_xowa/src/gplx/xowa/wikis/xwikis/parsers/Xow_xwiki_mgr_tst.java b/400_xowa/src/gplx/xowa/wikis/xwikis/parsers/Xow_xwiki_mgr_tst.java index 4ab8d33c8..52cdad137 100644 --- a/400_xowa/src/gplx/xowa/wikis/xwikis/parsers/Xow_xwiki_mgr_tst.java +++ b/400_xowa/src/gplx/xowa/wikis/xwikis/parsers/Xow_xwiki_mgr_tst.java @@ -123,7 +123,7 @@ class Xow_xwiki_mgr_fxt { public Xow_xwiki_mgr_fxt Test_len(int expd) {Tfds.Eq(expd, xwiki_mgr.Len()); return this;} Xow_xwiki_itm[] To_ary(Xow_xwiki_itm[] itms) { int len = itms.length; - List_adp rv = List_adp_.new_(); + List_adp rv = List_adp_.New(); for (int i = 0; i < len; i++) { byte[] alias = itms[i].Key_bry(); Xow_xwiki_itm itm = xwiki_mgr.Get_by_key(alias); diff --git a/400_xowa/src/gplx/xowa/wikis/xwikis/sitelinks/Xoa_sitelink_mgr_parser_tst.java b/400_xowa/src/gplx/xowa/wikis/xwikis/sitelinks/Xoa_sitelink_mgr_parser_tst.java index c3db62151..92db3dfb6 100644 --- a/400_xowa/src/gplx/xowa/wikis/xwikis/sitelinks/Xoa_sitelink_mgr_parser_tst.java +++ b/400_xowa/src/gplx/xowa/wikis/xwikis/sitelinks/Xoa_sitelink_mgr_parser_tst.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.xowa.wikis.xwikis.sitelinks; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.xwikis.*; import org.junit.*; public class Xoa_sitelink_mgr_parser_tst { - private final Xoa_sitelink_mgr_parser_fxt fxt = new Xoa_sitelink_mgr_parser_fxt(); + private final Xoa_sitelink_mgr_parser_fxt fxt = new Xoa_sitelink_mgr_parser_fxt(); @Before public void init() {fxt.Clear();} @Test public void Basic() { String raw = String_.Concat_lines_nl_skip_last @@ -51,9 +51,9 @@ public class Xoa_sitelink_mgr_parser_tst { } } class Xoa_sitelink_mgr_parser_fxt { - private final Xoa_sitelink_mgr mgr = new Xoa_sitelink_mgr(); - private final Xoa_sitelink_mgr_parser parser; - private final Bry_bfr tmp_bfr = Bry_bfr.new_(); + private final Xoa_sitelink_mgr mgr = new Xoa_sitelink_mgr(); + private final Xoa_sitelink_mgr_parser parser; + private final Bry_bfr tmp_bfr = Bry_bfr_.New(); public void Clear() {mgr.Grp_mgr().Clear();} public Xoa_sitelink_mgr_parser_fxt() { this.parser = new Xoa_sitelink_mgr_parser(mgr); diff --git a/400_xowa/src/gplx/xowa/wikis/xwikis/sitelinks/htmls/Xoa_sitelink_div_wtr_fxt.java b/400_xowa/src/gplx/xowa/wikis/xwikis/sitelinks/htmls/Xoa_sitelink_div_wtr_fxt.java index b2087d9d6..f3b6561ea 100644 --- a/400_xowa/src/gplx/xowa/wikis/xwikis/sitelinks/htmls/Xoa_sitelink_div_wtr_fxt.java +++ b/400_xowa/src/gplx/xowa/wikis/xwikis/sitelinks/htmls/Xoa_sitelink_div_wtr_fxt.java @@ -50,12 +50,12 @@ class Xoa_sitelink_div_wtr_fxt { Xop_ctx ctx = wiki.Parser_mgr().Ctx(); ctx.Page().Ttl_(Xoa_ttl.parse(wiki, Bry_.new_a7("test_page"))); byte[] raw_bry = Bry_.new_u8(raw); - Bry_bfr bfr = Bry_bfr.new_(); + Bry_bfr bfr = Bry_bfr_.New(); Xop_root_tkn root = ctx.Tkn_mkr().Root(raw_bry); wiki.Parser_mgr().Main().Parse_page_all_clear(root, ctx, ctx.Tkn_mkr(), raw_bry); wiki.Html_mgr().Html_wtr().Write_all(bfr, ctx, raw_bry, root); - Bry_bfr html_bfr = Bry_bfr.new_(); + Bry_bfr html_bfr = Bry_bfr_.New(); wiki.App().Xwiki_mgr__sitelink_mgr().Write_html(html_bfr, wiki, ctx.Page().Slink_list(), gplx.xowa.xtns.wdatas.Wdata_xwiki_link_wtr.Qid_null); Tfds.Eq_str_lines(expd, html_bfr.To_str_and_clear()); } diff --git a/400_xowa/src/gplx/xowa/wikis/xwikis/sitelinks/htmls/Xoa_sitelink_itm_wtr.java b/400_xowa/src/gplx/xowa/wikis/xwikis/sitelinks/htmls/Xoa_sitelink_itm_wtr.java index 97be1252f..2eef85b52 100644 --- a/400_xowa/src/gplx/xowa/wikis/xwikis/sitelinks/htmls/Xoa_sitelink_itm_wtr.java +++ b/400_xowa/src/gplx/xowa/wikis/xwikis/sitelinks/htmls/Xoa_sitelink_itm_wtr.java @@ -20,7 +20,7 @@ import gplx.core.brys.fmtrs.*; import gplx.xowa.htmls.hrefs.*; import gplx.xowa.wikis.domains.*; class Xoa_sitelink_itm_wtr implements gplx.core.brys.Bfr_arg { - private final Bry_bfr tmp_bfr = Bry_bfr.new_(255); + private final Bry_bfr tmp_bfr = Bry_bfr_.New_w_size(255); private Xoa_app app; private Xoa_sitelink_grp grp; public void Init_by_app(Xoa_app app) {this.app = app;} public Xoa_sitelink_itm_wtr Fmt__init(Xoa_sitelink_grp grp) {this.grp = grp; return this;} @@ -55,10 +55,10 @@ class Xoa_sitelink_itm_wtr implements gplx.core.brys.Bfr_arg { } } private static final int td_max = 3; - private static final byte[] tr_bgn = Bry_.new_a7("\n "); - private static final byte[] td_nil = Bry_.new_a7("\n "); - private static final Bry_fmtr td_fmtr = Bry_fmtr.new_(String_.Concat_lines_nl_skip_last + private static final byte[] tr_bgn = Bry_.new_a7("\n "); + private static final byte[] td_nil = Bry_.new_a7("\n "); + private static final Bry_fmtr td_fmtr = Bry_fmtr.new_(String_.Concat_lines_nl_skip_last ( "" , " " ), "lang_code", "lang_domain", "lang_name", "lang_href", "pagename_translation", "page_badge"); diff --git a/400_xowa/src/gplx/xowa/xtns/Xow_xtn_mgr.java b/400_xowa/src/gplx/xowa/xtns/Xow_xtn_mgr.java index 97e2973fd..77506dd59 100644 --- a/400_xowa/src/gplx/xowa/xtns/Xow_xtn_mgr.java +++ b/400_xowa/src/gplx/xowa/xtns/Xow_xtn_mgr.java @@ -19,7 +19,7 @@ package gplx.xowa.xtns; import gplx.*; import gplx.xowa.*; import gplx.core.primitives.*; import gplx.core.btries.*; import gplx.xowa.xtns.cites.*; import gplx.xowa.xtns.imaps.*; import gplx.xowa.xtns.relatedSites.*; import gplx.xowa.xtns.proofreadPage.*; import gplx.xowa.xtns.wdatas.*; import gplx.xowa.xtns.insiders.*; import gplx.xowa.xtns.indicators.*; import gplx.xowa.xtns.pagebanners.*; -public class Xow_xtn_mgr implements GfoInvkAble { +public class Xow_xtn_mgr implements Gfo_invk { private Ordered_hash regy = Ordered_hash_.New_bry(); public int Count() {return regy.Count();} public Cite_xtn_mgr Xtn_cite() {return xtn_cite;} private Cite_xtn_mgr xtn_cite; @@ -56,7 +56,7 @@ public class Xow_xtn_mgr implements GfoInvkAble { int regy_len = app_xtn_mgr.Count(); for (int i = 0; i < regy_len; i++) { Xox_mgr proto = (Xox_mgr)app_xtn_mgr.Get_at(i); - Xox_mgr mgr = proto.Clone_new(); + Xox_mgr mgr = proto.Xtn_clone_new(); mgr.Xtn_ctor_by_wiki(wiki); regy.Add(mgr.Xtn_key(), mgr); Set_members(mgr); @@ -101,7 +101,7 @@ public class Xow_xtn_mgr implements GfoInvkAble { } } private static final byte Tid_cite = 0, Tid_sites = 1, Tid_insider = 2, Tid_imap = 3, Tid_proofread = 4, Tid_wikibase = 5, Tid_indicator = 6, Tid_pgbnr = 7; - private static final Btrie_slim_mgr xtn_tid_trie = Btrie_slim_mgr.cs() + private static final Btrie_slim_mgr xtn_tid_trie = Btrie_slim_mgr.cs() .Add_bry_byte(Cite_xtn_mgr.XTN_KEY , Tid_cite) .Add_bry_byte(Sites_xtn_mgr.XTN_KEY , Tid_sites) .Add_bry_byte(Insider_xtn_mgr.XTN_KEY , Tid_insider) @@ -113,6 +113,6 @@ public class Xow_xtn_mgr implements GfoInvkAble { ; public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_get)) return Get_or_fail(m.ReadBry("v")); - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; } private static final String Invk_get = "get"; } diff --git a/400_xowa/src/gplx/xowa/xtns/Xox_mgr.java b/400_xowa/src/gplx/xowa/xtns/Xox_mgr.java index a966208b2..50dbfef42 100644 --- a/400_xowa/src/gplx/xowa/xtns/Xox_mgr.java +++ b/400_xowa/src/gplx/xowa/xtns/Xox_mgr.java @@ -16,11 +16,11 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.xtns; import gplx.*; import gplx.xowa.*; -public interface Xox_mgr extends GfoInvkAble { - byte[] Xtn_key(); - void Xtn_ctor_by_app(Xoae_app app); - void Xtn_ctor_by_wiki(Xowe_wiki wiki); - void Xtn_init_by_app(Xoae_app app); - void Xtn_init_by_wiki(Xowe_wiki wiki); - Xox_mgr Clone_new(); +public interface Xox_mgr extends Gfo_invk { + byte[] Xtn_key(); + void Xtn_ctor_by_app(Xoae_app app); + void Xtn_ctor_by_wiki(Xowe_wiki wiki); + void Xtn_init_by_app(Xoae_app app); + void Xtn_init_by_wiki(Xowe_wiki wiki); + Xox_mgr Xtn_clone_new(); } diff --git a/400_xowa/src/gplx/xowa/xtns/Xox_mgr_base.java b/400_xowa/src/gplx/xowa/xtns/Xox_mgr_base.java index 33f4b9651..c96cf1a80 100644 --- a/400_xowa/src/gplx/xowa/xtns/Xox_mgr_base.java +++ b/400_xowa/src/gplx/xowa/xtns/Xox_mgr_base.java @@ -22,24 +22,26 @@ public abstract class Xox_mgr_base implements Xox_mgr { public Xox_mgr_base() { this.enabled = Enabled_default(); } - public abstract byte[] Xtn_key(); - public abstract Xox_mgr Clone_new(); - public boolean Enabled() {return enabled;} private boolean enabled; - @gplx.Virtual public boolean Enabled_default() {return true;} - public void Enabled_y_() {enabled = true; enabled_manually = true;} public void Enabled_n_() {enabled = false; enabled_manually = true;} // TEST: - public void Enabled_(boolean v) {enabled = v;} - public boolean Enabled_manually() {return enabled_manually;} private boolean enabled_manually; - @gplx.Virtual public void Xtn_ctor_by_app(Xoae_app app) {} - @gplx.Virtual public void Xtn_ctor_by_wiki(Xowe_wiki wiki) {} - @gplx.Virtual public void Xtn_init_by_app(Xoae_app app) {} - @gplx.Virtual public void Xtn_init_by_wiki(Xowe_wiki wiki) {} + public abstract byte[] Xtn_key(); + public boolean Enabled() {return enabled;} private boolean enabled; + @gplx.Virtual public boolean Enabled_default() {return true;} + public void Enabled_y_() {enabled = true; enabled_manually = true;} public void Enabled_n_() {enabled = false; enabled_manually = true;} // TEST: + public void Enabled_(boolean v) {enabled = v;} + public boolean Enabled_manually() {return enabled_manually;} private boolean enabled_manually; + public abstract Xox_mgr Xtn_clone_new(); + @gplx.Virtual public void Xtn_ctor_by_app(Xoae_app app) {} + @gplx.Virtual public void Xtn_ctor_by_wiki(Xowe_wiki wiki) {} + @gplx.Virtual public void Xtn_init_by_app(Xoae_app app) {} + @gplx.Virtual public void Xtn_init_by_wiki(Xowe_wiki wiki) {} + @gplx.Virtual public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_enabled)) return Yn.To_str(enabled); else if (ctx.Match(k, Invk_enabled_)) {enabled = m.ReadYn("v"); enabled_manually = true;} - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; return this; } private static final String Invk_enabled = "enabled", Invk_enabled_ = "enabled_"; + public static void Xtn_write_escape(Xoae_app app, Bry_bfr bfr, byte[] src, Xop_xnde_tkn xnde) {Xtn_write_escape(app, bfr, src, xnde.Src_bgn(), xnde.Src_end());} public static void Xtn_write_escape(Xoae_app app, Bry_bfr bfr, byte[] src) {Xtn_write_escape(app, bfr, src, 0, src.length);} public static void Xtn_write_escape(Xoae_app app, Bry_bfr bfr, byte[] src, int bgn, int end) {Xoh_html_wtr_escaper.Escape(app.Parser_amp_mgr(), bfr, src, bgn, end, true, false);} @@ -65,6 +67,6 @@ public abstract class Xox_mgr_base implements Xox_mgr { Io_url url = app.Fsys_mgr().Bin_xtns_dir().GenSubFil_nest(String_.new_u8(xtn_key), "i18n", wiki.Lang().Key_str() + ".json"); Xob_i18n_parser.Load_msgs(false, wiki.Lang(), url); } - private static final byte[] Xowa_not_implemented = Bry_.new_a7("XOWA does not support this extension: "); + private static final byte[] Xowa_not_implemented = Bry_.new_a7("XOWA does not support this extension: "); public static final byte Parse_content_tid_none = 0, Parse_content_tid_escape = 1, Parse_content_tid_html = 2; } diff --git a/400_xowa/src/gplx/xowa/xtns/cites/Cite_xtn_mgr.java b/400_xowa/src/gplx/xowa/xtns/cites/Cite_xtn_mgr.java index 89ef22af2..a821dfbdd 100644 --- a/400_xowa/src/gplx/xowa/xtns/cites/Cite_xtn_mgr.java +++ b/400_xowa/src/gplx/xowa/xtns/cites/Cite_xtn_mgr.java @@ -17,15 +17,15 @@ along with this program. If not, see . */ package gplx.xowa.xtns.cites; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; public class Cite_xtn_mgr extends Xox_mgr_base { - @Override public byte[] Xtn_key() {return XTN_KEY;} public static final byte[] XTN_KEY = Bry_.new_a7("cite"); + @Override public byte[] Xtn_key() {return XTN_KEY;} public static final byte[] XTN_KEY = Bry_.new_a7("cite"); // public byte[] Group_default_name() {return group_default_name;} private byte[] group_default_name = Bry_.new_a7("lower-alpha"); public static byte[] Group_default_name() {return group_default_name;} private static byte[] group_default_name = Bry_.new_a7("lower-alpha"); - @Override public Xox_mgr Clone_new() {return new Cite_xtn_mgr();} + @Override public Xox_mgr Xtn_clone_new() {return new Cite_xtn_mgr();} @Override public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_group_default_name)) return String_.new_u8(group_default_name); else if (ctx.Match(k, Invk_group_default_name_)) group_default_name = m.ReadBry("v"); else return super.Invk(ctx, ikey, k, m); return this; } - private static final String Invk_group_default_name = "group_default_name", Invk_group_default_name_ = "group_default_name_"; + private static final String Invk_group_default_name = "group_default_name", Invk_group_default_name_ = "group_default_name_"; } diff --git a/400_xowa/src/gplx/xowa/xtns/cites/Ref_html_wtr.java b/400_xowa/src/gplx/xowa/xtns/cites/Ref_html_wtr.java index 1f2c3bf38..341f093fc 100644 --- a/400_xowa/src/gplx/xowa/xtns/cites/Ref_html_wtr.java +++ b/400_xowa/src/gplx/xowa/xtns/cites/Ref_html_wtr.java @@ -74,7 +74,7 @@ public class Ref_html_wtr { int itms_len = lst.Itms_len(); for (int j = 0; j < itms_len; j++) { // iterate over itms in grp Ref_nde head_itm = lst.Itms_get_at(j); - Bry_bfr tmp = Bry_bfr.new_(); + Bry_bfr tmp = Bry_bfr_.New(); int list_len = List_len(head_itm); grp_list_fmtr.Init(ctx.Wiki(), cfg, head_itm); Ref_nde text_itm = grp_list_fmtr.IdentifyTxt(); // find the item that has the text (there should only be 0 or 1) @@ -121,7 +121,7 @@ class Xoh_ref_list_fmtr implements gplx.core.brys.Bfr_arg { Ref_nde rel = itm.Related_get(i); if (HasTxt(rel)) return rel; } - return itm; // no itm has text; TODO:WARN + return itm; // no itm has text; TODO_OLD:WARN } private boolean HasTxt(Ref_nde v) {return v.Body() != null && v.Body().Root_src().length > 0;} public void Bfr_arg__add(Bry_bfr bfr) { diff --git a/400_xowa/src/gplx/xowa/xtns/cites/Ref_html_wtr_cfg.java b/400_xowa/src/gplx/xowa/xtns/cites/Ref_html_wtr_cfg.java index 70b31fd56..b883c2982 100644 --- a/400_xowa/src/gplx/xowa/xtns/cites/Ref_html_wtr_cfg.java +++ b/400_xowa/src/gplx/xowa/xtns/cites/Ref_html_wtr_cfg.java @@ -40,8 +40,8 @@ public class Ref_html_wtr_cfg { backlabels = v; backlabels_len = v.length; } - public static final byte[] Msg_backlabels_err = Bry_.new_a7("cite_error_no_link_label_group"); - private static final byte[] Msg_backlabels = Bry_.new_a7("cite_references_link_many_format_backlink_labels"); + public static final byte[] Msg_backlabels_err = Bry_.new_a7("cite_error_no_link_label_group"); + private static final byte[] Msg_backlabels = Bry_.new_a7("cite_references_link_many_format_backlink_labels"); public static Ref_html_wtr_cfg new_() { Ref_html_wtr_cfg rv = new Ref_html_wtr_cfg(); rv.Itm_html_ ("[~{grp_key}]"); @@ -59,7 +59,7 @@ public class Ref_html_wtr_cfg { rv.Backlabels_ (Ref_backlabels_default); return rv; } Ref_html_wtr_cfg() {} - private static final byte[][] Ref_backlabels_default = Ref_backlabels_xby_str_ary(String_.Ary // TEST:default backlabels for test only; actual backlabels will be overrriden by MediaWiki:Cite_references_link_many_format_backlink_labels; DATE:2014-06-07 + private static final byte[][] Ref_backlabels_default = Ref_backlabels_xby_str_ary(String_.Ary // TEST:default backlabels for test only; actual backlabels will be overrriden by MediaWiki:Cite_references_link_many_format_backlink_labels; DATE:2014-06-07 ( "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z" , "aa", "ab", "ac", "ad", "ae", "af", "ag", "ah", "ai", "aj", "ak", "al", "am", "an", "ao", "ap", "aq", "ar", "as", "at", "au", "av", "aw", "ax", "ay", "az" , "ba", "bb", "bc", "bd", "be", "bf", "bg", "bh", "bi", "bj", "bk", "bl", "bm", "bn", "bo", "bp", "bq", "br", "bs", "bt", "bu", "bv", "bw", "bx", "by", "bz" @@ -97,7 +97,7 @@ public class Ref_html_wtr_cfg { } public static byte[][] Ref_backlabels_xby_bry(byte[] raw) { if (raw == null) return Ref_backlabels_default; - List_adp list = List_adp_.new_(); + List_adp list = List_adp_.New(); int len = raw.length, pos = 0, bgn = -1; while (true) { boolean last = pos == len; diff --git a/400_xowa/src/gplx/xowa/xtns/cites/Ref_itm_grp.java b/400_xowa/src/gplx/xowa/xtns/cites/Ref_itm_grp.java index bc3119434..a3d0c7eca 100644 --- a/400_xowa/src/gplx/xowa/xtns/cites/Ref_itm_grp.java +++ b/400_xowa/src/gplx/xowa/xtns/cites/Ref_itm_grp.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.xtns.cites; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; public class Ref_itm_grp { - private List_adp lsts = List_adp_.new_(); + private List_adp lsts = List_adp_.New(); public Ref_itm_grp(byte[] grp_name) {this.grp_name = grp_name;} public byte[] Grp_name() {return grp_name;} private byte[] grp_name; public int Grp_seal() { diff --git a/400_xowa/src/gplx/xowa/xtns/cites/Ref_itm_lst.java b/400_xowa/src/gplx/xowa/xtns/cites/Ref_itm_lst.java index b652e0a71..b6d87f24f 100644 --- a/400_xowa/src/gplx/xowa/xtns/cites/Ref_itm_lst.java +++ b/400_xowa/src/gplx/xowa/xtns/cites/Ref_itm_lst.java @@ -59,5 +59,5 @@ public class Ref_itm_lst { list.Clear(); idx_major_last = 0; } - Hash_adp hash = Hash_adp_bry.cs(); List_adp list = List_adp_.new_(); + Hash_adp hash = Hash_adp_bry.cs(); List_adp list = List_adp_.New(); } diff --git a/400_xowa/src/gplx/xowa/xtns/cites/Ref_itm_mgr_tst.java b/400_xowa/src/gplx/xowa/xtns/cites/Ref_itm_mgr_tst.java index 8ca2b611e..252705fd4 100644 --- a/400_xowa/src/gplx/xowa/xtns/cites/Ref_itm_mgr_tst.java +++ b/400_xowa/src/gplx/xowa/xtns/cites/Ref_itm_mgr_tst.java @@ -52,7 +52,7 @@ class Ref_itm_mgr_fxt { actl[i] = lst.Itms_get_at(i); tst_mgr.Tst_ary("", chkr_ary, actl); return this; - } List_adp actl_list = List_adp_.new_(); + } List_adp actl_list = List_adp_.New(); } class Xtn_ref_nde_chkr implements Tst_chkr { public Class TypeOf() {return Ref_nde.class;} diff --git a/400_xowa/src/gplx/xowa/xtns/cldrs/Cldr_lang_tbl.java b/400_xowa/src/gplx/xowa/xtns/cldrs/Cldr_lang_tbl.java index 93bc332fe..764eb7993 100644 --- a/400_xowa/src/gplx/xowa/xtns/cldrs/Cldr_lang_tbl.java +++ b/400_xowa/src/gplx/xowa/xtns/cldrs/Cldr_lang_tbl.java @@ -18,9 +18,9 @@ along with this program. If not, see . package gplx.xowa.xtns.cldrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.dbs.*; class Cldr_lang_tbl implements Rls_able { - private final String tbl_name = "cldr_lang"; private final Dbmeta_fld_list flds = Dbmeta_fld_list.new_(); - private final String fld_cldr_code, fld_lang_code, fld_lang_name; - private final Db_conn conn; private Db_stmt stmt_select, stmt_insert; + private final String tbl_name = "cldr_lang"; private final Dbmeta_fld_list flds = new Dbmeta_fld_list(); + private final String fld_cldr_code, fld_lang_code, fld_lang_name; + private final Db_conn conn; private Db_stmt stmt_select, stmt_insert; public Cldr_lang_tbl(Db_conn conn) { this.conn = conn; this.fld_cldr_code = flds.Add_str("cldr_code", 32); diff --git a/400_xowa/src/gplx/xowa/xtns/dynamicPageList/Dpl_itm.java b/400_xowa/src/gplx/xowa/xtns/dynamicPageList/Dpl_itm.java index b0e025a5a..4f69089bb 100644 --- a/400_xowa/src/gplx/xowa/xtns/dynamicPageList/Dpl_itm.java +++ b/400_xowa/src/gplx/xowa/xtns/dynamicPageList/Dpl_itm.java @@ -103,8 +103,8 @@ class Dpl_itm { sub_root.Clear(); val = wiki.Parser_mgr().Main().Parse_text_to_wtxt(sub_root, sub_ctx, sub_tkn_mkr, val); switch (key_id) { - case Dpl_itm_keys.Key_category: if (ctg_includes == null) ctg_includes = List_adp_.new_(); ctg_includes.Add(Xoa_ttl.Replace_spaces(val)); break; - case Dpl_itm_keys.Key_notcategory: if (ctg_excludes == null) ctg_excludes = List_adp_.new_(); ctg_excludes.Add(Xoa_ttl.Replace_spaces(val)); break; + case Dpl_itm_keys.Key_category: if (ctg_includes == null) ctg_includes = List_adp_.New(); ctg_includes.Add(Xoa_ttl.Replace_spaces(val)); break; + case Dpl_itm_keys.Key_notcategory: if (ctg_excludes == null) ctg_excludes = List_adp_.New(); ctg_excludes.Add(Xoa_ttl.Replace_spaces(val)); break; case Dpl_itm_keys.Key_ns: {Xow_ns ns = (Xow_ns)wiki.Ns_mgr().Names_get_or_null(val, 0, val.length); ns_filter = ns == null ? Xow_ns_.Tid__main : ns.Id(); break;} case Dpl_itm_keys.Key_order: sort_ascending = Dpl_sort.Parse_as_bool_byte(val); break; case Dpl_itm_keys.Key_suppresserrors: suppress_errors = Dpl_itm_keys.Parse_as_bool(val, false); break; diff --git a/400_xowa/src/gplx/xowa/xtns/dynamicPageList/Dpl_xnde.java b/400_xowa/src/gplx/xowa/xtns/dynamicPageList/Dpl_xnde.java index 0b8413c1d..684e1c686 100644 --- a/400_xowa/src/gplx/xowa/xtns/dynamicPageList/Dpl_xnde.java +++ b/400_xowa/src/gplx/xowa/xtns/dynamicPageList/Dpl_xnde.java @@ -21,7 +21,7 @@ import gplx.langs.htmls.*; import gplx.langs.htmls.encoders.*; import gplx.xowa. import gplx.xowa.wikis.dbs.*; import gplx.xowa.wikis.ctgs.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.xndes.*; import gplx.xowa.parsers.htmls.*; import gplx.xowa.parsers.amps.*; public class Dpl_xnde implements Xox_xnde { - private Dpl_itm itm = new Dpl_itm(); private List_adp pages = List_adp_.new_(); + private Dpl_itm itm = new Dpl_itm(); private List_adp pages = List_adp_.New(); public void Xatr__set(Xowe_wiki wiki, byte[] src, Mwh_atr_itm xatr, Object xatr_id_obj) {} // NOTE: has no attributes public void Xtn_parse(Xowe_wiki wiki, Xop_ctx ctx, Xop_root_tkn root, byte[] src, Xop_xnde_tkn xnde) { itm.Parse(wiki, ctx, ctx.Page().Ttl().Full_txt_w_ttl_case(), src, xnde); @@ -65,7 +65,7 @@ public class Dpl_xnde implements Xox_xnde { bfr.Add_byte(Byte_ascii.Gt); Xoh_html_wtr_escaper.Escape(amp_mgr, bfr, ttl_page_txt, 0, ttl_page_txt.length, false, false); bfr.Add(Gfh_bldr_.Bry__a_rhs).Add(html_mode.Itm_end()).Add_byte_nl(); - // TODO: lnki_wtr.Clear().Href_wiki_(ttl).Title_(ttl).Nofollow_().Write_head(bfr).Write_text(bfr).Write_tail(bfr) + // TODO_OLD: lnki_wtr.Clear().Href_wiki_(ttl).Title_(ttl).Nofollow_().Write_head(bfr).Write_text(bfr).Write_tail(bfr) break; default: break; @@ -84,8 +84,8 @@ class Dpl_page_finder { Ordered_hash old_regy = Ordered_hash_.New(), new_regy = Ordered_hash_.New(), cur_regy = Ordered_hash_.New(); Xodb_load_mgr load_mgr = wiki.Db_mgr().Load_mgr(); Xowd_page_itm tmp_page = new Xowd_page_itm(); - Int_obj_ref tmp_id = Int_obj_ref.zero_(); - List_adp del_list = List_adp_.new_(); + Int_obj_ref tmp_id = Int_obj_ref.New_zero(); + List_adp del_list = List_adp_.New(); int ns_filter = itm.Ns_filter(); Ordered_hash exclude_pages = Ordered_hash_.New(); Find_excludes(exclude_pages, load_mgr, tmp_page, tmp_id, itm.Ctg_excludes()); @@ -126,7 +126,7 @@ class Dpl_page_finder { Xoctg_view_itm ctg_itm = ctg_mgr.Itms()[i]; int ctg_itm_id = ctg_itm.Page_id(); if (list.Has(tmp_id.Val_(ctg_itm_id))) continue; - list.Add(Int_obj_ref.new_(ctg_itm_id), ctg_itm); + list.Add(Int_obj_ref.New(ctg_itm_id), ctg_itm); // if (ctg_tid == Xoa_ctg_mgr.Tid_subc) { // recurse subcategories // load_mgr.Load_by_id(tmp_page, ctg_itm_id); // Find_pages_in_ctg(list, load_mgr, tmp_page, tmp_id, tmp_page.Ttl_wo_ns()); @@ -158,7 +158,7 @@ class Dpl_page_finder { if (i != 0) { // skip logic for first ctg (which doesn't have a predecessor) if (!old_regy.Has(tmp_id)) continue; // cur_itm not in old_regy; ignore } - new_regy.Add_as_key_and_val(Int_obj_ref.new_(cur_itm.Page_id())); + new_regy.Add_as_key_and_val(Int_obj_ref.New(cur_itm.Page_id())); } } } diff --git a/400_xowa/src/gplx/xowa/xtns/dynamicPageList/Dpl_xnde_tst.java b/400_xowa/src/gplx/xowa/xtns/dynamicPageList/Dpl_xnde_tst.java index 0e11643d1..ce1bee948 100644 --- a/400_xowa/src/gplx/xowa/xtns/dynamicPageList/Dpl_xnde_tst.java +++ b/400_xowa/src/gplx/xowa/xtns/dynamicPageList/Dpl_xnde_tst.java @@ -272,7 +272,7 @@ class Dpl_xnde_fxt { int id = page.Id(); String ttl = page.Ttl(); Xoa_ttl page_ttl = Xoa_ttl.parse(fxt.Wiki(), Bry_.new_u8(ttl)); - Xoae_page page_obj = fxt.Wiki().Data_mgr().Get_page(page_ttl, false); + Xoae_page page_obj = fxt.Wiki().Data_mgr().Load_page_by_ttl(page_ttl); if (page_obj.Missing()) { fxt.Init_page_create(ttl); fxt.Init_id_create (id, 0, 0, false, 5, Xow_ns_.Tid__main, ttl); diff --git a/400_xowa/src/gplx/xowa/xtns/flaggedRevs/Flagged_revs_xtn_mgr.java b/400_xowa/src/gplx/xowa/xtns/flaggedRevs/Flagged_revs_xtn_mgr.java index 3f1f98032..700adbcc5 100644 --- a/400_xowa/src/gplx/xowa/xtns/flaggedRevs/Flagged_revs_xtn_mgr.java +++ b/400_xowa/src/gplx/xowa/xtns/flaggedRevs/Flagged_revs_xtn_mgr.java @@ -18,8 +18,8 @@ along with this program. If not, see . package gplx.xowa.xtns.flaggedRevs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.scribunto.*; import gplx.xowa.xtns.flaggedRevs.scribunto.*; public class Flagged_revs_xtn_mgr extends Xox_mgr_base { - @Override public byte[] Xtn_key() {return XTN_KEY;} public static final byte[] XTN_KEY = Bry_.new_a7("FlaggedRevs"); - @Override public Xox_mgr Clone_new() {return new Flagged_revs_xtn_mgr();} + @Override public byte[] Xtn_key() {return XTN_KEY;} public static final byte[] XTN_KEY = Bry_.new_a7("FlaggedRevs"); + @Override public Xox_mgr Xtn_clone_new() {return new Flagged_revs_xtn_mgr();} @Override public void Xtn_init_by_app(Xoae_app app) { Scrib_xtn_mgr scrib_xtn = (Scrib_xtn_mgr)app.Xtn_mgr().Get_or_fail(Scrib_xtn_mgr.XTN_KEY); scrib_xtn.Lib_mgr().Add(new Flagged_revs_lib()); diff --git a/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_itm.java b/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_itm.java index 0ad708dda..188b0ffb9 100644 --- a/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_itm.java +++ b/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_itm.java @@ -45,7 +45,7 @@ public class Gallery_itm implements Js_img_wkr { this.xnde = xnde; this.xfer_itm = xfer_itm; this.wiki = wiki; this.ctx = ctx; this.src = src; this.gallery_li_id_bry = gallery_li_id_bry; this.gallery_itm_idx = gallery_itm_idx; } - public void Html_update(Xoa_page page, Xog_js_wkr js_wkr, int html_uid, int html_w, int html_h, Io_url html_view_url, int orig_w, int orig_h, Io_url html_orig_url, byte[] lnki_ttl) { + public void Js_wkr__update_hdoc(Xoa_page page, Xog_js_wkr js_wkr, int html_uid, int html_w, int html_h, Io_url html_view_url, int orig_w, int orig_h, Io_url html_orig_url, byte[] lnki_ttl) { Gallery_mgr_base gallery_mgr = xnde.Gallery_mgr(); Bry_bfr bfr = wiki.Utl__bfr_mkr().Get_k004(), tmp_bfr = wiki.Utl__bfr_mkr().Get_k004(); try { diff --git a/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_itm_parser.java b/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_itm_parser.java index 9c429f8fa..6da62217c 100644 --- a/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_itm_parser.java +++ b/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_itm_parser.java @@ -28,7 +28,7 @@ public class Gallery_itm_parser { private int cur_pos; private byte cur_byte; private byte cur_fld; private int itm_bgn; - private Bry_bfr caption_bfr = Bry_bfr.reset_(255); private int caption_bgn; + private Bry_bfr caption_bfr = Bry_bfr_.Reset(255); private int caption_bgn; private Xop_ctx ctx; public Gallery_itm_parser Init_by_wiki(Xowe_wiki wiki) { this.wiki = wiki; Xol_lang_itm lang = wiki.Lang(); diff --git a/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_itm_parser_tst.java b/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_itm_parser_tst.java index b752f762d..d8e10c4e8 100644 --- a/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_itm_parser_tst.java +++ b/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_itm_parser_tst.java @@ -85,7 +85,7 @@ class Gallery_itm_parser_fxt { parser.Init_by_wiki(wiki); } public void Test_parse(String raw, String[]... expd) { - List_adp actl = List_adp_.new_(); + List_adp actl = List_adp_.New(); byte[] src = Bry_.new_a7(raw); parser.Parse_all(actl, Gallery_mgr_base_.New_by_mode(Gallery_mgr_base_.Traditional_tid), new Gallery_xnde(), src, 0, src.length); Tfds.Eq_ary(String_.Ary_flatten(expd), String_.Ary_flatten(Xto_str_ary(src, actl))); diff --git a/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_mgr_base.java b/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_mgr_base.java index 2dc8a63b0..fe36daba8 100644 --- a/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_mgr_base.java +++ b/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_mgr_base.java @@ -33,6 +33,7 @@ public abstract class Gallery_mgr_base { @gplx.Virtual public int Get_gb_borders() {return 8;} // REF.MW: getGBBorders; Get how much extra space the borders around the image takes up. For this mode, it is 2px borders on each side + 2px implied padding on each side from the stylesheet, giving us 2*2+2*2 = 8. @gplx.Virtual public int Get_all_padding() {return this.Get_thumb_padding() + this.Get_gb_padding() + this.Get_gb_borders();} // REF.MW: getAllPadding; How many pixels of whitespace surround the thumbnail. @gplx.Virtual public int Get_vpad(int itm_h, int thm_h) { // REF.MW: getVPad; Get vertical padding for a thumbnail; Generally this is the total height minus how high the thumb is. + if (thm_h == -1) thm_h = itm_h; // NOTE: thm_h will be -1 on 1st pass; set to dflt_h, else will end up with 115px for hdump; PAGE:en.w:National_Gallery_of_Art DATE:2016-06-19 return (this.Get_thumb_padding() + itm_h - thm_h) / 2; } @gplx.Virtual public int Get_thumb_div_width(int thm_w) { // REF.MW: getThumbDivWidth; Get the width of the inner div that contains the thumbnail in question. This is the div with the class of "thumb". @@ -157,7 +158,7 @@ public abstract class Gallery_mgr_base { if (hctx_is_hdump) page.Hdump_data().Imgs_add_img(new Xohd_img_itm__gallery_itm().Data_init_gallery(itm_div_width, img_div_w, vpad), xfer_itm, Xohd_img_itm__gallery_itm.Tid_gallery); } - private static final byte[] + private static final byte[] Wrap_gallery_text_bgn = Bry_.new_a7("\n
") // NOTE: The newline after
is needed to accommodate htmltidy , Wrap_gallery_text_end = Bry_.new_a7("\n
") // NOTE: prepend "\n"; will cause extra \n when caption exists, but needed when caption doesn't exists; EX: "
"; \n puts ; @@ -166,7 +167,7 @@ public abstract class Gallery_mgr_base { lnki.H_(itm_default_h); } @gplx.Virtual public void Adjust_image_parameters(Xof_file_itm xfer_itm) {} // REF.MW: Adjust the image parameters for a thumbnail. Used by a subclass to insert extra high resolution images. - private static final byte[] + private static final byte[] itm_li_end_bry = Bry_.new_a7 ( "\n
" + "\n ") , box_html_end_bry = Bry_.new_a7 ( "\n") diff --git a/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_mgr_base_basic_tst.java b/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_mgr_base_basic_tst.java index 4989a337c..1642d6cb1 100644 --- a/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_mgr_base_basic_tst.java +++ b/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_mgr_base_basic_tst.java @@ -72,6 +72,7 @@ public class Gallery_mgr_base_basic_tst { @Test public void Height_fix() { fxt.Fxt().Wiki().File_mgr().Cfg_set(Xof_fsdb_mgr_cfg.Grp_xowa, Xof_fsdb_mgr_cfg.Key_gallery_fix_defaults, "y"); fxt.Test_html_frag("File:A.png|a
c
", " width=\"120\" height=\"250\""); + fxt.Test_html_frag("
"); fxt.Fxt().Wiki().File_mgr().Cfg_set(Xof_fsdb_mgr_cfg.Grp_xowa, Xof_fsdb_mgr_cfg.Key_gallery_fix_defaults, "n"); } @Test public void Alt() { @@ -154,7 +155,7 @@ public class Gallery_mgr_base_basic_tst { @Test public void Alt__quotes() { // PURPOSE: file name with quotes will cause broken alt; PAGE:en.w:en.w:Alexandria,_Romania; DATE:2015-12-27 fxt.Test_html_frag("File:A\"b.png", "alt=\"A"b.png\""); // NOTE: not 'alt="A"b.png"' } -// @Test public void Ttl_caption() { // TODO: category entries get rendered with name only (no ns) +// @Test public void Ttl_caption() { // TODO_OLD: category entries get rendered with name only (no ns) // fxt.Test_html_frag // ( "Category:A" // , "
  • B
  • " @@ -167,18 +168,23 @@ public class Gallery_mgr_base_basic_tst { , "" )); } + @Test public void Hdump__div_1_w() {// PURPOSE: handle hdump and div_1_width == 115 instead of 15; PAGE:en.w:National_Gallery_of_Art; DATE:2016-06-19 + fxt.Fxt().Hctx_(gplx.xowa.htmls.core.htmls.Xoh_wtr_ctx.Hdump); + fxt.Fxt().Wiki().File__fsdb_mode().Tid_v2_bld_y_(); // NOTE: must set to v2 mode; dflt will call old v1 img code which "guesses" at html_h; + fxt.Test_html_frag("File:A.png|a", "
    "); + } } class Gallery_mgr_base_fxt { public void Reset() { fxt.Wiki().Xtn_mgr().Init_by_wiki(fxt.Wiki()); Gallery_mgr_base.File_found_mode = Bool_.Y_byte; } - public Xop_fxt Fxt() {return fxt;} private final Xop_fxt fxt = new Xop_fxt(); + public Xop_fxt Fxt() {return fxt;} private final Xop_fxt fxt = new Xop_fxt(); public void Init_files_missing_y_() { Gallery_mgr_base.File_found_mode = Bool_.N_byte; } public void Test_html_str(String raw, String expd) {fxt.Test_html_full_str(raw, expd);} - public void Test_html_frag(String raw, String... expd_frags) {fxt.Test_html_full_frag(raw, expd_frags);} // TODO: change to wiki_str; currently uids do not get reset if wiki + public void Test_html_frag(String raw, String... expd_frags) {fxt.Test_html_full_frag(raw, expd_frags);} // TODO_OLD: change to wiki_str; currently uids do not get reset if wiki public void Test_html_frag_n(String raw, String... expd_frags) {fxt.Test_html_full_frag_n(raw, expd_frags);} public void Test_html_modules_js(String expd) { fxt.Page().Html_data().Head_mgr().Itm__globals().Enabled_n_(); diff --git a/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_mgr_base_xnde_atrs_tst.java b/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_mgr_base_xnde_atrs_tst.java index 767dea5ba..ceac450d7 100644 --- a/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_mgr_base_xnde_atrs_tst.java +++ b/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_mgr_base_xnde_atrs_tst.java @@ -57,7 +57,7 @@ public class Gallery_mgr_base_xnde_atrs_tst { , "
    ") ; public void Cartouche_bgn(Bry_bfr bfr) { bfr.Add(Cartouche_bgn_lhs_bry).Add_int_variable((Hiero_html_mgr.Cartouche_width * Hiero_html_mgr.scale) / 100).Add(Cartouche_bgn_rhs_bry); } - private static final String Tbl_bgn_str = "
    "); - private static final byte[] tr_end = Bry_.new_a7("\n
    "); + private static final byte[] tr_end = Bry_.new_a7("\n
    ~{lang_name}~{pagename_translation}") , Td_end_bry = Bry_.new_a7("\n
    "; - private static final byte[] + private static final String Tbl_bgn_str = "
    "; + private static final byte[] Cartouche_bgn_lhs_bry = Bry_.new_a7(String_.Concat_lines_nl_skip_last ( "" , " " @@ -87,7 +87,7 @@ class Hiero_html_wtr { byte[] title = bgn ? Gfh_entity_.Lt_bry : Gfh_entity_.Gt_bry; return cartouche_img_fmtr.Bld_bry_many(temp_bfr, hiero_img_dir, code, height, title); } - private static final Bry_fmtr cartouche_img_fmtr = Bry_fmtr.new_(String_.Concat + private static final Bry_fmtr cartouche_img_fmtr = Bry_fmtr.new_(String_.Concat ( "\n ~{title}" @@ -96,7 +96,7 @@ class Hiero_html_wtr { public void Tbl_inner(Bry_bfr html_bfr, Bry_bfr text_bfr) { html_bfr.Add(Tbl_inner_bgn).Add_bfr_and_clear(text_bfr).Add(Tbl_inner_end); // $html .= self::TABLE_START . "\n" . $tableContentHtml . '
    " @@ -63,7 +63,7 @@ class Hiero_html_wtr { public void Cartouche_end(Bry_bfr bfr) { bfr.Add(Cartouche_end_lhs_bry).Add_int_variable((Hiero_html_mgr.Cartouche_width * Hiero_html_mgr.scale) / 100).Add(Cartouche_end_rhs_bry); } - private static final byte[] + private static final byte[] Cartouche_end_lhs_bry = Bry_.new_a7(String_.Concat_lines_nl_skip_last ( "" , "
    '; } - private static final byte[] + private static final byte[] Tbl_inner_bgn = Bry_.new_u8(String_.Concat_lines_nl_skip_last ( " " , " " @@ -112,7 +112,7 @@ class Hiero_html_wtr { bfr.Add_bfr_and_clear(html_bfr); bfr.Add(Outer_tbl_end); } - private static final byte[] + private static final byte[] Outer_tbl_bgn = Bry_.new_a7(String_.Concat_lines_nl_skip_last ( "
    " , " " @@ -137,7 +137,7 @@ class Hiero_html_wtr { byte[] img_src = Bld_img_src(hiero_img_dir, img_src_name); return glyph_img_fmtr.Bld_bry_many(temp_bfr, img_cls, Hiero_html_mgr.Image_margin, td_height, img_src, img_title, glyph); } - private static final byte[] + private static final byte[] Tbl_eol_bry = Bry_.new_a7(String_.Concat_lines_nl_skip_last ( "" , " " @@ -145,7 +145,7 @@ class Hiero_html_wtr { , " " + Tbl_bgn_str , " " )); - private static final Bry_fmtr glyph_img_fmtr = Bry_fmtr.new_ + private static final Bry_fmtr glyph_img_fmtr = Bry_fmtr.new_ ( "\n ~{glyph}" , "img_cls", "img_margin", "option", "img_src", "img_title", "glyph"); public byte[] Void(boolean half) { // render void @@ -153,7 +153,7 @@ class Hiero_html_wtr { if (half) width /= 2; return void_fmtr.Bld_bry_many(temp_bfr, width); } - private static final Bry_fmtr void_fmtr = Bry_fmtr.new_(String_.Concat_lines_nl_skip_last + private static final Bry_fmtr void_fmtr = Bry_fmtr.new_(String_.Concat_lines_nl_skip_last ( "" , "
    " , " " @@ -165,7 +165,7 @@ class Hiero_html_wtr { private static byte[] Bld_img_src(byte[] hiero_img_dir, byte[] name) { return Bry_.Add(hiero_img_dir, Img_src_prefix, name, Img_src_ext); } - private static final byte[] Img_src_prefix = Bry_.new_a7("hiero_") + private static final byte[] Img_src_prefix = Bry_.new_a7("hiero_") , Img_src_ext = Bry_.new_a7(".png") ; } diff --git a/400_xowa/src/gplx/xowa/xtns/hieros/Hiero_mw_tables_parser.java b/400_xowa/src/gplx/xowa/xtns/hieros/Hiero_mw_tables_parser.java index 7cd9f9c26..c4a557e12 100644 --- a/400_xowa/src/gplx/xowa/xtns/hieros/Hiero_mw_tables_parser.java +++ b/400_xowa/src/gplx/xowa/xtns/hieros/Hiero_mw_tables_parser.java @@ -69,7 +69,7 @@ public class Hiero_mw_tables_parser { } } private void Parse_phonemes(Hiero_phoneme_mgr mgr, Php_line_assign line) { // $wh_phonemes = array(k => v, k => v ...); - List_adp tmp_list = List_adp_.new_(); Byte_obj_ref tmp_rslt = Byte_obj_ref.zero_(); Bry_bfr tmp_bfr = Bry_bfr.new_(); + List_adp tmp_list = List_adp_.New(); Byte_obj_ref tmp_rslt = Byte_obj_ref.zero_(); Bry_bfr tmp_bfr = Bry_bfr_.New(); Php_itm_ary ary = (Php_itm_ary)line.Val(); int subs_len = ary.Subs_len(); for (int i = 0; i < subs_len; i++) { diff --git a/400_xowa/src/gplx/xowa/xtns/hieros/Hiero_parser.java b/400_xowa/src/gplx/xowa/xtns/hieros/Hiero_parser.java index 5cc2efdee..54ffe2b10 100644 --- a/400_xowa/src/gplx/xowa/xtns/hieros/Hiero_parser.java +++ b/400_xowa/src/gplx/xowa/xtns/hieros/Hiero_parser.java @@ -19,9 +19,9 @@ package gplx.xowa.xtns.hieros; import gplx.*; import gplx.xowa.*; import gplx.xo import gplx.core.btries.*; import gplx.langs.htmls.*; import gplx.xowa.htmls.*; class Hiero_parser { private Btrie_slim_mgr trie = Btrie_slim_mgr.cs(); - private List_adp blocks = List_adp_.new_(); + private List_adp blocks = List_adp_.New(); private Hiero_block cur_block; - private Bry_bfr cur_tkn = Bry_bfr.reset_(16); + private Bry_bfr cur_tkn = Bry_bfr_.Reset(16); public Hiero_block[] Parse(byte[] src, int bgn, int end) { blocks.Clear(); this.cur_block = new Hiero_block(); @@ -125,7 +125,7 @@ class Hiero_parser_itm { public static final byte Tid_block_spr = 1, Tid_tkn_spr = 2, Tid_single_char = 3, Tid_dot = 4, Tid_comment = 5; } class Hiero_block { - private List_adp list = List_adp_.new_(); + private List_adp list = List_adp_.New(); public int Len() {return list.Count();} public byte[] Get_at(int i) {return (byte[])list.Get_at(i);} public void Add(byte[] v) {list.Add(v);} diff --git a/400_xowa/src/gplx/xowa/xtns/hieros/Hiero_phoneme_mgr.java b/400_xowa/src/gplx/xowa/xtns/hieros/Hiero_phoneme_mgr.java index ba60163a9..369c508d2 100644 --- a/400_xowa/src/gplx/xowa/xtns/hieros/Hiero_phoneme_mgr.java +++ b/400_xowa/src/gplx/xowa/xtns/hieros/Hiero_phoneme_mgr.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.xtns.hieros; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.langs.dsvs.*; -class Hiero_phoneme_mgr implements GfoInvkAble { +class Hiero_phoneme_mgr implements Gfo_invk { private Ordered_hash hash = Ordered_hash_.New_bry(); private Hiero_phoneme_srl srl; public Hiero_phoneme_mgr() {srl = new Hiero_phoneme_srl(this);} @@ -28,7 +28,7 @@ class Hiero_phoneme_mgr implements GfoInvkAble { public Hiero_phoneme_itm Get_by_key(byte[] key) {return (Hiero_phoneme_itm)hash.Get_by(key);} public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_srl)) return srl; - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; } public static final String Invk_srl = "srl"; } diff --git a/400_xowa/src/gplx/xowa/xtns/hieros/Hiero_prefab_mgr.java b/400_xowa/src/gplx/xowa/xtns/hieros/Hiero_prefab_mgr.java index e5ffe8b45..c62a1234d 100644 --- a/400_xowa/src/gplx/xowa/xtns/hieros/Hiero_prefab_mgr.java +++ b/400_xowa/src/gplx/xowa/xtns/hieros/Hiero_prefab_mgr.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.xtns.hieros; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.langs.dsvs.*; -class Hiero_prefab_mgr implements GfoInvkAble { +class Hiero_prefab_mgr implements Gfo_invk { private Ordered_hash hash = Ordered_hash_.New_bry(); private Hiero_prefab_srl srl; public Hiero_prefab_mgr() {srl = new Hiero_prefab_srl(this);} @@ -28,7 +28,7 @@ class Hiero_prefab_mgr implements GfoInvkAble { public void Clear() {hash.Clear();} public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_srl)) return srl; - else return GfoInvkAble_.Rv_unhandled; + else return Gfo_invk_.Rv_unhandled; } private static final String Invk_srl = "srl"; } class Hiero_prefab_itm { diff --git a/400_xowa/src/gplx/xowa/xtns/hieros/Hiero_xtn_mgr.java b/400_xowa/src/gplx/xowa/xtns/hieros/Hiero_xtn_mgr.java index 224d502d1..3420b594a 100644 --- a/400_xowa/src/gplx/xowa/xtns/hieros/Hiero_xtn_mgr.java +++ b/400_xowa/src/gplx/xowa/xtns/hieros/Hiero_xtn_mgr.java @@ -17,10 +17,10 @@ along with this program. If not, see . */ package gplx.xowa.xtns.hieros; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.wikis.*; import gplx.xowa.htmls.modules.*; import gplx.xowa.apps.fsys.*; -public class Hiero_xtn_mgr extends Xox_mgr_base implements GfoInvkAble { +public class Hiero_xtn_mgr extends Xox_mgr_base implements Gfo_invk { @Override public boolean Enabled_default() {return true;} - @Override public byte[] Xtn_key() {return Xtn_key_static;} public static final byte[] Xtn_key_static = Bry_.new_a7("hiero"); - @Override public Xox_mgr Clone_new() {return new Hiero_xtn_mgr();} + @Override public byte[] Xtn_key() {return Xtn_key_static;} public static final byte[] Xtn_key_static = Bry_.new_a7("hiero"); + @Override public Xox_mgr Xtn_clone_new() {return new Hiero_xtn_mgr();} public static byte[] Img_src_dir; @Override public void Xtn_init_by_wiki(Xowe_wiki wiki) {} private static boolean xtn_init_done = false; @@ -35,10 +35,10 @@ public class Hiero_xtn_mgr extends Xox_mgr_base implements GfoInvkAble { parser.Init(); xtn_init_done = true; } - @gplx.Internal protected Hiero_parser Parser() {return parser;} private static final Hiero_parser parser = new Hiero_parser(); - @gplx.Internal protected Hiero_prefab_mgr Prefab_mgr() {return prefab_mgr;} private static final Hiero_prefab_mgr prefab_mgr = new Hiero_prefab_mgr(); - @gplx.Internal protected Hiero_file_mgr File_mgr() {return file_mgr;} private static final Hiero_file_mgr file_mgr = new Hiero_file_mgr(); - @gplx.Internal protected Hiero_phoneme_mgr Phoneme_mgr() {return phoneme_mgr;} private static final Hiero_phoneme_mgr phoneme_mgr = new Hiero_phoneme_mgr(); + @gplx.Internal protected Hiero_parser Parser() {return parser;} private static final Hiero_parser parser = new Hiero_parser(); + @gplx.Internal protected Hiero_prefab_mgr Prefab_mgr() {return prefab_mgr;} private static final Hiero_prefab_mgr prefab_mgr = new Hiero_prefab_mgr(); + @gplx.Internal protected Hiero_file_mgr File_mgr() {return file_mgr;} private static final Hiero_file_mgr file_mgr = new Hiero_file_mgr(); + @gplx.Internal protected Hiero_phoneme_mgr Phoneme_mgr() {return phoneme_mgr;} private static final Hiero_phoneme_mgr phoneme_mgr = new Hiero_phoneme_mgr(); @gplx.Internal protected Hiero_html_mgr Html_wtr() {return html_wtr;} private static Hiero_html_mgr html_wtr; public void Clear() { prefab_mgr.Clear(); diff --git a/400_xowa/src/gplx/xowa/xtns/imaps/Imap_base_fxt.java b/400_xowa/src/gplx/xowa/xtns/imaps/Imap_base_fxt.java new file mode 100644 index 000000000..8ca191990 --- /dev/null +++ b/400_xowa/src/gplx/xowa/xtns/imaps/Imap_base_fxt.java @@ -0,0 +1,47 @@ +/* +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.xtns.imaps; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; +import gplx.core.primitives.*; +import gplx.xowa.parsers.*; +import gplx.xowa.xtns.imaps.itms.*; +public class Imap_base_fxt { + protected Xoae_app app; protected Xowe_wiki wiki; + @gplx.Virtual public void Reset() { + app = Xoa_app_fxt.Make__app__edit(); + wiki = Xoa_app_fxt.Make__wiki__edit(app); + wiki.Parser_mgr().Ctx().Para().Enabled_n_(); + } + public Imap_part_shape itm_rect_(String link, double... pts_ary) {return itm_shape_(Imap_part_.Tid_shape_rect, link, pts_ary);} + public Imap_part_shape itm_circle_(String link, double... pts_ary) {return itm_shape_(Imap_part_.Tid_shape_circle, link, pts_ary);} + public Imap_part_shape itm_poly_(String link, double... pts_ary) {return itm_shape_(Imap_part_.Tid_shape_poly, link, pts_ary);} + private Imap_part_shape itm_shape_(byte tid, String link, double... pts_ary) { + int pts_len = pts_ary.length; + Double_obj_val[] pts_doubles = new Double_obj_val[pts_len]; + for (int i = 0; i < pts_len; ++i) + pts_doubles[i] = Double_obj_val.new_(pts_ary[i]); + byte[] link_bry = Bry_.new_u8(link); + Imap_part_shape rv = new Imap_part_shape(tid, pts_doubles); + Imap_link_owner_.Init(rv, app, wiki, link_bry, Make_link_tkn(link_bry)); + return rv; + } + private Xop_tkn_itm Make_link_tkn(byte[] src) { + Xop_root_tkn root_tkn = new Xop_root_tkn(); + wiki.Parser_mgr().Main().Parse_text_to_wdom(root_tkn, wiki.Parser_mgr().Ctx(), app.Parser_mgr().Tkn_mkr(), src, Xop_parser_.Doc_bgn_bos); + return root_tkn.Subs_get(0); + } +} diff --git a/400_xowa/src/gplx/xowa/xtns/imaps/Imap_itm.java b/400_xowa/src/gplx/xowa/xtns/imaps/Imap_itm.java deleted file mode 100644 index 4b8525e7c..000000000 --- a/400_xowa/src/gplx/xowa/xtns/imaps/Imap_itm.java +++ /dev/null @@ -1,62 +0,0 @@ -/* -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.xtns.imaps; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; -import gplx.xowa.parsers.*; import gplx.xowa.parsers.lnkis.*; -interface Imap_itm { - byte Itm_tid(); -} -class Imap_itm_ { - public static final byte Tid_invalid = 0, Tid_img = 1, Tid_desc = 2, Tid_comment = 3, Tid_dflt = 4, Tid_shape_rect = 5, Tid_shape_circle = 6, Tid_shape_poly = 7; - public static final byte[] - Key_dflt = Bry_.new_a7("default") - , Key_shape_rect = Bry_.new_a7("rect") - , Key_shape_circle = Bry_.new_a7("circle") - , Key_shape_poly = Bry_.new_a7("poly") - ; - public static byte[] Xto_key(byte v) { - switch (v) { - case Tid_shape_rect : return Key_shape_rect; - case Tid_shape_circle : return Key_shape_circle; - case Tid_shape_poly : return Key_shape_poly; - default : throw Err_.new_unhandled(v); - } - } -} -class Imap_itm_img implements Imap_itm { - public Imap_itm_img(Xop_lnki_tkn img_link) {this.img_link = img_link;} - public byte Itm_tid() {return Imap_itm_.Tid_img;} - public Xop_lnki_tkn Img_link() {return img_link;} private Xop_lnki_tkn img_link; -} -class Imap_itm_desc implements Imap_itm { - public Imap_itm_desc(byte desc_tid) {this.desc_tid = desc_tid;} - public byte Itm_tid() {return Imap_itm_.Tid_desc;} - public byte Desc_tid() {return desc_tid;} private byte desc_tid; -} -class Imap_itm_dflt implements Imap_itm, Imap_link_owner { - public byte Itm_tid() {return Imap_itm_.Tid_dflt;} - public int Link_tid() {return link_tid;} private int link_tid; - public Xop_tkn_itm Link_tkn() {return link_tkn;} private Xop_tkn_itm link_tkn; - public void Link_tid_(int tid, Xop_tkn_itm tkn) {link_tid = tid; link_tkn = tkn;} - public byte[] Link_href() {return link_href;} public void Link_href_(byte[] v) {this.link_href = v;} private byte[] link_href; - public byte[] Link_text() {return link_text;} public void Link_text_(byte[] v) {this.link_text = v;} private byte[] link_text; -} -class Imap_err { - public Imap_err(int itm_idx, String err_key) {this.itm_idx = itm_idx; this.err_key = err_key;} - public int Itm_idx() {return itm_idx;} private int itm_idx; - public String Err_key() {return err_key;} private String err_key; -} diff --git a/400_xowa/src/gplx/xowa/xtns/imaps/Imap_map.java b/400_xowa/src/gplx/xowa/xtns/imaps/Imap_map.java index f817bc741..8d38e992a 100644 --- a/400_xowa/src/gplx/xowa/xtns/imaps/Imap_map.java +++ b/400_xowa/src/gplx/xowa/xtns/imaps/Imap_map.java @@ -16,60 +16,59 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.xtns.imaps; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; -import gplx.xowa.files.*; import gplx.xowa.htmls.core.htmls.*; import gplx.xowa.files.gui.*; import gplx.xowa.guis.views.*; -import gplx.xowa.htmls.core.makes.imgs.*; -import gplx.xowa.htmls.core.wkrs.imgs.*; import gplx.xowa.htmls.core.wkrs.imgs.atrs.*; import gplx.xowa.htmls.core.wkrs.lnkis.htmls.*; +import gplx.xowa.files.*; import gplx.xowa.files.gui.*; +import gplx.xowa.htmls.core.htmls.*; import gplx.xowa.htmls.core.wkrs.imgs.atrs.*; import gplx.xowa.htmls.core.makes.imgs.*; import gplx.xowa.htmls.core.wkrs.lnkis.htmls.*; +import gplx.xowa.xtns.imaps.itms.*; import gplx.xowa.xtns.imaps.htmls.*; public class Imap_map implements Xoh_file_img_wkr, Js_img_wkr { - private static final Imap_map_fmtr map_fmtr_arg = new Imap_map_fmtr(); + private byte img_cls_tid; private Imap_xtn_mgr xtn_mgr; + private byte[] a_href, img_alt, img_cls_other; public Imap_map(int id) {this.id = id;} - public Imap_xtn_mgr Xtn_mgr() {return xtn_mgr;} private Imap_xtn_mgr xtn_mgr; - @gplx.Internal protected void Init(Imap_xtn_mgr xtn_mgr, byte[] img_src, Imap_itm_img img, Imap_itm_dflt dflt, Imap_itm_desc desc, Imap_itm_shape[] shapes, Imap_err[] errs) { + public void Init(Imap_xtn_mgr xtn_mgr, byte[] img_src, Imap_part_img img, Imap_part_dflt dflt, Imap_part_desc desc, Imap_part_shape[] shapes, Imap_err[] errs) { this.xtn_mgr = xtn_mgr; this.img_src = img_src; this.img = img; this.dflt = dflt; this.desc = desc; this.shapes = shapes; this.errs = errs; } - public boolean Invalid() {return img == null;} // invalid if missing image; PAGE:en.w:Wikipedia:WikiProject_Games/Advert EX: |thumb;; DATE:2014-08-12 - public int Id() {return id;} private int id; - public byte[] Img_src() {return img_src;} private byte[] img_src; - @gplx.Internal protected Imap_itm_img Img() {return img;} private Imap_itm_img img; - @gplx.Internal protected Imap_itm_dflt Dflt() {return dflt;} private Imap_itm_dflt dflt; - @gplx.Internal protected Imap_itm_desc Desc() {return desc;} private Imap_itm_desc desc; - @gplx.Internal protected Imap_itm_shape[] Shapes() {return shapes;} private Imap_itm_shape[] shapes; - @gplx.Internal protected Imap_err[] Errs() {return errs;} private Imap_err[] errs; - private byte img_cls_tid; - private byte[] a_href, img_alt, img_cls_other; + public int Id() {return id;} private final int id; + public byte[] Img_src() {return img_src;} private byte[] img_src; + public Imap_part_img Img() {return img;} private Imap_part_img img; + public Imap_part_dflt Dflt() {return dflt;} private Imap_part_dflt dflt; + public Imap_part_desc Desc() {return desc;} private Imap_part_desc desc; + public Imap_part_shape[] Shapes() {return shapes;} private Imap_part_shape[] shapes; + public Imap_err[] Errs() {return errs;} private Imap_err[] errs; + public boolean Invalid() {return img == null;} // invalid if missing image; PAGE:en.w:Wikipedia:WikiProject_Games/Advert EX: |thumb;; DATE:2014-08-12 + public void Html_full_img(Bry_bfr tmp_bfr, Xoh_wtr_ctx hctx, Xoae_page page, byte[] src, Xof_file_itm xfer_itm, int uid , byte[] a_href, boolean a_href_is_file, byte a_cls, byte a_rel, byte[] a_title, byte[] a_xowa_title , int img_w, int img_h, byte[] img_src, byte[] img_alt, byte img_cls, byte[] img_cls_other ) { + this.a_href = a_href; this.img_alt = img_alt; this.img_cls_tid = img_cls; this.img_cls_other = img_cls_other; xfer_itm.Html_img_wkr_(this); xfer_itm.Html_elem_tid_(Xof_html_elem.Tid_imap); - this.a_href = a_href; this.img_alt = img_alt; this.img_cls_tid = img_cls; this.img_cls_other = img_cls_other; - Write_imap_div(tmp_bfr, page.Wikie(), hctx, src, uid, img_w, img_h, img_src, xfer_itm.Orig_w(), xfer_itm.Orig_h(), a_xowa_title); - if (hctx.Mode_is_hdump()) - page.Hdump_data().Imgs_add_img(new Xohd_img_itm__img(), xfer_itm, Xohd_img_itm__gallery_itm.Tid_basic); + if (hctx.Mode_is_hdump()) { + img_w = xfer_itm.Lnki_w(); // NOTE: hdump must dump lnki_w, not img_w; GUI will either (a) write -1 and update later thru js_wkr; (b) get correct img_w from cache; hdump can do neither (a) nor (b); DATE:2016-06-17 + img_h = xfer_itm.Lnki_h(); + page.Hdump_data().Imgs_add_img(new Xohd_img_itm__img(), xfer_itm, Xohd_img_itm__gallery_itm.Tid_basic); // DELETE: no need to add img to global collection during hdump; was here presumably to write entries to "imgs" table; DATE:2016-06-17 + } + Write_imap_div(tmp_bfr, hctx, uid, img_w, img_h, img_src, xfer_itm.Orig_w(), xfer_itm.Orig_h(), a_xowa_title); } - public void Html_update(Xoa_page page, Xog_js_wkr js_wkr, int html_uid, int html_w, int html_h, Io_url html_view_url, int orig_w, int orig_h, Io_url html_orig_url, byte[] lnki_ttl) { - Xowe_wiki wiki = xtn_mgr.Wiki(); - Bry_bfr tmp_bfr = wiki.Utl__bfr_mkr().Get_k004(); - Write_imap_div(tmp_bfr, (Xowe_wiki)page.Wiki(), Xoh_wtr_ctx.Basic, Bry_.Empty, html_uid, html_w, html_h, html_view_url.To_http_file_bry(), orig_w, orig_h, lnki_ttl); - js_wkr.Html_elem_replace_html("imap_div_" + Int_.To_str(html_uid), tmp_bfr.To_str_and_rls()); + public void Js_wkr__update_hdoc(Xoa_page page, Xog_js_wkr js_wkr, int html_uid + , int html_w, int html_h, Io_url html_view_url + , int orig_w, int orig_h, Io_url html_orig_url, byte[] lnki_ttl) { + Bry_bfr tmp_bfr = Bry_bfr_.Get(); + try { + Write_imap_div(tmp_bfr, Xoh_wtr_ctx.Basic, html_uid, html_w, html_h, html_view_url.To_http_file_bry(), orig_w, orig_h, lnki_ttl); + js_wkr.Html_elem_replace_html("imap_div_" + Int_.To_str(html_uid), tmp_bfr.To_str_and_rls()); + } finally {tmp_bfr.Mkr_rls();} } - private void Write_imap_div(Bry_bfr bfr, Xowe_wiki wiki, Xoh_wtr_ctx hctx, byte[] src, int html_uid, int html_w, int html_h, byte[] html_src, int orig_w, int orig_h, byte[] lnki_ttl) { - byte[] desc_style = Calc_desc_style(html_w, html_h); -// int shapes_len = shapes.length; -// for (int i = 0; i < shapes_len; ++i) { -// Imap_itm_shape shape = shapes[i]; -// Imap_link_owner_.Write(shape, wiki.Appe(), wiki, hctx, src); -// } - map_fmtr_arg.Init(id, shapes, Calc_scale(orig_w, orig_h, html_w, html_h)); - img_fmtr_arg.Init(hctx, xtn_mgr, this, src, html_uid, img_alt, html_src, html_w, html_h, Xoh_img_cls_.To_html(img_cls_tid, img_cls_other), a_href, lnki_ttl); - Imap_html_fmtrs.All.Bld_bfr_many(bfr, html_uid, desc_style, map_fmtr_arg, img_fmtr_arg); + private void Write_imap_div(Bry_bfr bfr, Xoh_wtr_ctx hctx, int html_uid, int html_w, int html_h, byte[] img_src, int orig_w, int orig_h, byte[] lnki_ttl) { + Imap_map_arg map_arg = new Imap_map_arg(id, shapes, Calc_scale(orig_w, orig_h, html_w, html_h)); + Imap_img_arg img_arg = new Imap_img_arg(hctx, xtn_mgr, this, html_uid, img_alt, img_src, html_w, html_h, Xoh_img_cls_.To_html(img_cls_tid, img_cls_other), a_href, lnki_ttl); + Imap_html_fmtrs.All.Bld_bfr_many(bfr, html_uid, Calc_desc_style(desc, html_w, html_h), map_arg, img_arg); } - private byte[] Calc_desc_style(int html_w, int html_h) { + private static byte[] Calc_desc_style(Imap_part_desc desc, int html_w, int html_h) { if (desc == null) return Bry_.Empty; - Bry_bfr tmp_bfr = xtn_mgr.Wiki().Utl__bfr_mkr().Get_b128().Mkr_rls(); - return Imap_html_fmtrs.Desc_style.Bld_bry_many(tmp_bfr, html_w, html_h); + Bry_bfr tmp_bfr = Bry_bfr_.Get(); + try {return Imap_html_fmtrs.Desc_style.Bld_bry_many(tmp_bfr, html_w, html_h);} + finally {tmp_bfr.Mkr_rls();} } - private static final Imap_img_fmtr_arg img_fmtr_arg = new Imap_img_fmtr_arg(); private static double Calc_scale(int orig_w, int orig_h, int html_w, int html_h) { int denominator = orig_w + orig_h; int numerator = html_w + html_h; diff --git a/400_xowa/src/gplx/xowa/xtns/imaps/Imap_map_fmtr.java b/400_xowa/src/gplx/xowa/xtns/imaps/Imap_map_fmtr.java deleted file mode 100644 index 4c5b0ea9c..000000000 --- a/400_xowa/src/gplx/xowa/xtns/imaps/Imap_map_fmtr.java +++ /dev/null @@ -1,51 +0,0 @@ -/* -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.xtns.imaps; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; -import gplx.core.brys.fmtrs.*; -class Imap_map_fmtr implements gplx.core.brys.Bfr_arg { - private int imap_id; - public void Init(int imap_id, Imap_itm_shape[] shapes, double scale) {this.imap_id = imap_id; shapes_fmtr_arg.Init(shapes, scale);} - public Imap_pts_fmtr_arg Pts_fmtr() {return shapes_fmtr_arg.Pts_fmtr();} - public void Bfr_arg__add(Bry_bfr bfr) { - Imap_html_fmtrs.Map.Bld_bfr_many(bfr, imap_id, shapes_fmtr_arg); - } - private static final Imap_shapes_fmtr shapes_fmtr_arg = new Imap_shapes_fmtr(); -} -class Imap_shapes_fmtr implements gplx.core.brys.Bfr_arg { - private Imap_itm_shape[] shapes; - public void Init(Imap_itm_shape[] shapes, double scale) {this.shapes = shapes; pts_fmtr_arg.Scale_(scale);} - public Imap_pts_fmtr_arg Pts_fmtr() {return pts_fmtr_arg;} - public void Bfr_arg__add(Bry_bfr bfr) { - int shapes_len = shapes.length; - Bry_fmtr fmtr = Imap_html_fmtrs.Area; - for (int i = 0; i < shapes_len; ++i) { - Imap_itm_shape shape = shapes[i]; - Fmt_shape(bfr, fmtr, pts_fmtr_arg, shape); - } - } - @gplx.Internal protected static void Fmt_shape(Bry_bfr bfr, Bry_fmtr fmtr, Imap_pts_fmtr_arg pts_fmtr, Imap_itm_shape shape) { - pts_fmtr_arg.Pts_(shape.Shape_pts()); - fmtr.Bld_bfr_many(bfr - , shape.Link_href() - , Imap_itm_.Xto_key(shape.Itm_tid()) - , pts_fmtr_arg - , shape.Link_text() - ); - } - private static final Imap_pts_fmtr_arg pts_fmtr_arg = new Imap_pts_fmtr_arg(); -} diff --git a/400_xowa/src/gplx/xowa/xtns/imaps/Imap_parser.java b/400_xowa/src/gplx/xowa/xtns/imaps/Imap_parser.java index cbd10b65c..98f5d97c3 100644 --- a/400_xowa/src/gplx/xowa/xtns/imaps/Imap_parser.java +++ b/400_xowa/src/gplx/xowa/xtns/imaps/Imap_parser.java @@ -18,13 +18,14 @@ along with this program. If not, see . package gplx.xowa.xtns.imaps; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.core.btries.*; import gplx.core.primitives.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.lnkis.*; import gplx.xowa.parsers.lnkis.files.*; import gplx.xowa.parsers.xndes.*; import gplx.xowa.parsers.tmpls.*; -class Imap_parser { +import gplx.xowa.xtns.imaps.itms.*; +public class Imap_parser { private Imap_xtn_mgr xtn_mgr; private Xoa_url page_url; private Gfo_usr_dlg usr_dlg = Gfo_usr_dlg_.Instance; private byte[] imap_img_src; - private Imap_itm_img imap_img; - private Imap_itm_dflt imap_dflt; - private Imap_itm_desc imap_desc; - private List_adp shapes = List_adp_.new_(), pts = List_adp_.new_(), errs = List_adp_.new_(); + private Imap_part_img imap_img; + private Imap_part_dflt imap_dflt; + private Imap_part_desc imap_desc; + private List_adp shapes = List_adp_.New(), pts = List_adp_.New(), errs = List_adp_.New(); private byte[] src; private int itm_idx; private int itm_bgn, itm_end; private Xoae_app app; private Xowe_wiki wiki; private Xop_ctx wiki_ctx, imap_ctx; private Xop_root_tkn imap_root; @@ -68,43 +69,42 @@ class Imap_parser { itm_end = Parse_img(rv, itm_bgn, itm_end, src_end); else { Object tid_obj = tid_trie.Match_bgn_w_byte(b, src, itm_bgn, itm_end); - byte tid_val = tid_obj == null ? Imap_itm_.Tid_invalid : ((Byte_obj_val)tid_obj).Val(); + byte tid_val = tid_obj == null ? Imap_part_.Tid_invalid : ((Byte_obj_val)tid_obj).Val(); int tid_end_pos = tid_trie.Match_pos(); switch (tid_val) { - case Imap_itm_.Tid_desc: Parse_desc(tid_end_pos, itm_end); break; - case Imap_itm_.Tid_dflt: Parse_dflt(tid_end_pos, itm_end); break; - case Imap_itm_.Tid_shape_rect: Parse_shape(tid_val, tid_end_pos, itm_bgn, itm_end, 4); break; - case Imap_itm_.Tid_shape_poly: Parse_shape(tid_val, tid_end_pos, itm_bgn, itm_end, Reqd_poly); break; - case Imap_itm_.Tid_shape_circle: Parse_shape(tid_val, tid_end_pos, itm_bgn, itm_end, 3); break; + case Imap_part_.Tid_desc: Parse_desc(tid_end_pos, itm_end); break; + case Imap_part_.Tid_dflt: Parse_dflt(tid_end_pos, itm_end); break; + case Imap_part_.Tid_shape_rect: Parse_shape(tid_val, tid_end_pos, itm_bgn, itm_end, 4); break; + case Imap_part_.Tid_shape_poly: Parse_shape(tid_val, tid_end_pos, itm_bgn, itm_end, Reqd_poly); break; + case Imap_part_.Tid_shape_circle: Parse_shape(tid_val, tid_end_pos, itm_bgn, itm_end, 3); break; default: - case Imap_itm_.Tid_invalid: Parse_invalid(itm_bgn, itm_end); break; + case Imap_part_.Tid_invalid: Parse_invalid(itm_bgn, itm_end); break; } } } catch (Exception e) {usr_dlg.Warn_many("", "", "imap.parse:skipping line; page=~{0} line=~{1} err=~{2}", page_url.To_str(), Bry_.Mid_safe(src, itm_bgn, itm_end), Err_.Message_gplx_log(e));} ++itm_idx; } - rv.Init(xtn_mgr, imap_img_src, imap_img, imap_dflt, imap_desc, (Imap_itm_shape[])shapes.To_ary_and_clear(Imap_itm_shape.class), (Imap_err[])errs.To_ary_and_clear(Imap_err.class)); + rv.Init(xtn_mgr, imap_img_src, imap_img, imap_dflt, imap_desc, (Imap_part_shape[])shapes.To_ary_and_clear(Imap_part_shape.class), (Imap_err[])errs.To_ary_and_clear(Imap_err.class)); } private void Parse_comment(int itm_bgn, int itm_end) {} // noop comments; EX: "# comment\n" private void Parse_invalid(int itm_bgn, int itm_end) {usr_dlg.Warn_many("", "", "imap has invalid line: page=~{0} line=~{1}", page_url.To_str(), String_.new_u8(src, itm_bgn, itm_end));} private boolean Parse_desc(int itm_bgn, int itm_end) { - xtn_mgr.Desc_assert(); Btrie_slim_mgr trie = xtn_mgr.Desc_trie(); - byte tid_desc = Imap_desc_tid.parse(trie, src, Bry_find_.Trim_fwd_space_tab(src, itm_bgn, itm_end), Bry_find_.Trim_bwd_space_tab(src, itm_end, itm_bgn)); + byte tid_desc = Imap_desc_tid.Parse_to_tid(trie, src, Bry_find_.Trim_fwd_space_tab(src, itm_bgn, itm_end), Bry_find_.Trim_bwd_space_tab(src, itm_end, itm_bgn)); switch (tid_desc) { case Imap_desc_tid.Tid_null: return Add_err(Bool_.N, itm_bgn, itm_end, "imagemap_invalid_coord"); case Imap_desc_tid.Tid_none: return true; } if (imap_img == null || imap_img.Img_link().Lnki_type() == Xop_lnki_type.Id_thumb) return true; // thumbs don't get desc - imap_desc = new Imap_itm_desc(tid_desc); + imap_desc = new Imap_part_desc(tid_desc); return true; } private void Parse_dflt(int itm_bgn, int itm_end) { - imap_dflt = new Imap_itm_dflt(); + imap_dflt = new Imap_part_dflt(); Init_link_owner(imap_dflt, src, itm_bgn, itm_end); } private boolean Parse_shape(byte shape_tid, int tid_end_pos, int itm_bgn, int itm_end, int reqd_pts) { - boolean shape_is_poly = shape_tid == Imap_itm_.Tid_shape_poly; + boolean shape_is_poly = shape_tid == Imap_part_.Tid_shape_poly; int pos = Bry_find_.Trim_fwd_space_tab(src, tid_end_pos, itm_end); // gobble any leading spaces int grp_end = Bry_find_.Find_fwd(src, Byte_ascii.Brack_bgn, pos, itm_end); // find first "["; note that this is a lazy way of detecting start of lnki / lnke; MW has complicated regex, but hopefully this will be enough; DATE:2014-10-22 if (grp_end == -1) {return Add_err(Bool_.Y, itm_bgn, itm_end, "imap_No valid link was found");} @@ -149,7 +149,7 @@ class Imap_parser { if (pts_len < reqd_pts) return Add_err(Bool_.Y, itm_bgn, itm_end, "imagemap_missing_coord"); } pos = Bry_find_.Trim_fwd_space_tab(src, pos, itm_end); - Imap_itm_shape shape_itm = new Imap_itm_shape(shape_tid, (Double_obj_val[])pts.To_ary_and_clear(Double_obj_val.class)); + Imap_part_shape shape_itm = new Imap_part_shape(shape_tid, (Double_obj_val[])pts.To_ary_and_clear(Double_obj_val.class)); Init_link_owner(shape_itm, src, pos, itm_end); shapes.Add(shape_itm); return true; @@ -194,7 +194,7 @@ class Imap_parser { Xoa_app_.Usr_dlg().Warn_many("", "", "image_map failed to find lnki; page=~{0} imageMap=~{1}", page_url.To_str(), imap_img_src); else { Xop_lnki_tkn lnki_tkn = (Xop_lnki_tkn)tkn_itm; - imap_img = new Imap_itm_img(lnki_tkn); + imap_img = new Imap_part_img(lnki_tkn); lnki_tkn.Lnki_file_wkr_(imap); wiki_ctx.Page().Lnki_list().Add(lnki_tkn); wiki_ctx.Lnki().File_logger().Log_file(wiki_ctx, lnki_tkn, Xop_file_logger_.Tid__imap); // NOTE: do not do imap_ctx.Lnki(); imap_ctx is brand new @@ -226,12 +226,12 @@ class Imap_parser { return rv; } private static Btrie_slim_mgr tid_trie = Btrie_slim_mgr.ci_a7() // names are not i18n'd; // NOTE:ci.ascii:MW_const.en - .Add_str_byte("desc" , Imap_itm_.Tid_desc) - .Add_str_byte("#" , Imap_itm_.Tid_comment) - .Add_bry_byte(Imap_itm_.Key_dflt , Imap_itm_.Tid_dflt) - .Add_bry_byte(Imap_itm_.Key_shape_rect , Imap_itm_.Tid_shape_rect) - .Add_bry_byte(Imap_itm_.Key_shape_circle , Imap_itm_.Tid_shape_circle) - .Add_bry_byte(Imap_itm_.Key_shape_poly , Imap_itm_.Tid_shape_poly) + .Add_str_byte("desc" , Imap_part_.Tid_desc) + .Add_str_byte("#" , Imap_part_.Tid_comment) + .Add_bry_byte(Imap_part_.Key_dflt , Imap_part_.Tid_dflt) + .Add_bry_byte(Imap_part_.Key_shape_rect , Imap_part_.Tid_shape_rect) + .Add_bry_byte(Imap_part_.Key_shape_circle , Imap_part_.Tid_shape_circle) + .Add_bry_byte(Imap_part_.Key_shape_poly , Imap_part_.Tid_shape_poly) ; private static final int Reqd_poly = -1; } diff --git a/400_xowa/src/gplx/xowa/xtns/imaps/Imap_parser_tst.java b/400_xowa/src/gplx/xowa/xtns/imaps/Imap_parser_tst.java index 7d5c0bd79..4c8bdcc2a 100644 --- a/400_xowa/src/gplx/xowa/xtns/imaps/Imap_parser_tst.java +++ b/400_xowa/src/gplx/xowa/xtns/imaps/Imap_parser_tst.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.xtns.imaps; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; -import org.junit.*; import gplx.core.primitives.*; import gplx.xowa.parsers.*; +import org.junit.*; import gplx.core.primitives.*; import gplx.xowa.parsers.*; import gplx.xowa.xtns.imaps.itms.*; public class Imap_parser_tst { @Before public void init() {fxt.Reset();} private Imap_parser_fxt fxt = new Imap_parser_fxt(); @Test public void Rect_pass() {fxt.Test_shape("rect 1 2 3 4 [[A]]" , fxt.itm_rect_("[[A]]", 1, 2, 3, 4));} @@ -36,33 +36,7 @@ public class Imap_parser_tst { @Test public void Poly_fail_zero() {fxt.Test_shape_err("poly [[A]]" , "imagemap_missing_coord");} @Test public void Circle_fail_invalid() {fxt.Test_shape_err("rect 1 2..3 4 [[A]]" , "imagemap_invalid_coord");} } -class Imap_fxt_base { - protected Xoae_app app; protected Xowe_wiki wiki; - @gplx.Virtual public void Reset() { - app = Xoa_app_fxt.Make__app__edit(); - wiki = Xoa_app_fxt.Make__wiki__edit(app); - wiki.Parser_mgr().Ctx().Para().Enabled_n_(); - } - public Imap_itm_shape itm_rect_(String link, double... pts_ary) {return itm_shape_(Imap_itm_.Tid_shape_rect, link, pts_ary);} - public Imap_itm_shape itm_circle_(String link, double... pts_ary) {return itm_shape_(Imap_itm_.Tid_shape_circle, link, pts_ary);} - public Imap_itm_shape itm_poly_(String link, double... pts_ary) {return itm_shape_(Imap_itm_.Tid_shape_poly, link, pts_ary);} - private Imap_itm_shape itm_shape_(byte tid, String link, double... pts_ary) { - int pts_len = pts_ary.length; - Double_obj_val[] pts_doubles = new Double_obj_val[pts_len]; - for (int i = 0; i < pts_len; ++i) - pts_doubles[i] = Double_obj_val.new_(pts_ary[i]); - byte[] link_bry = Bry_.new_u8(link); - Imap_itm_shape rv = new Imap_itm_shape(tid, pts_doubles); - Imap_link_owner_.Init(rv, app, wiki, link_bry, Make_link_tkn(link_bry)); - return rv; - } - private Xop_tkn_itm Make_link_tkn(byte[] src) { - Xop_root_tkn root_tkn = new Xop_root_tkn(); - wiki.Parser_mgr().Main().Parse_text_to_wdom(root_tkn, wiki.Parser_mgr().Ctx(), app.Parser_mgr().Tkn_mkr(), src, Xop_parser_.Doc_bgn_bos); - return root_tkn.Subs_get(0); - } -} -class Imap_parser_fxt extends Imap_fxt_base { +class Imap_parser_fxt extends Imap_base_fxt { private Imap_parser parser; private Imap_map imap; @Override public void Reset() { @@ -75,17 +49,17 @@ class Imap_parser_fxt extends Imap_fxt_base { parser.Clear(); imap = new Imap_map(1); } - public void Test_shape(String raw_str, Imap_itm_shape expd) { + public void Test_shape(String raw_str, Imap_part_shape expd) { raw_str = "File:A.png\n" + raw_str; byte[] raw = Bry_.new_u8(raw_str); parser.Parse(imap, raw, 0, raw.length); - Imap_itm_shape[] actl_ary = imap.Shapes(); - Imap_itm_shape actl = actl_ary == null | actl_ary.length != 1 ? null : (Imap_itm_shape)actl_ary[0]; + Imap_part_shape[] actl_ary = imap.Shapes(); + Imap_part_shape actl = actl_ary == null | actl_ary.length != 1 ? null : (Imap_part_shape)actl_ary[0]; if (actl == null && expd == null) {} // noop; test passed else if (actl == null && expd != null) {Tfds.Fail("actl should not be null", raw);} else if (actl != null && expd == null) {Tfds.Fail("actl should be null", raw);} else { - Tfds.Eq(expd.Itm_tid(), actl.Itm_tid(), "tid"); + Tfds.Eq(expd.Part_tid(), actl.Part_tid(), "tid"); Tfds.Eq_ary(expd.Shape_pts(), actl.Shape_pts(), "pts"); Tfds.Eq(String_.new_u8(expd.Link_href()), String_.new_u8(actl.Link_href())); Tfds.Eq(String_.new_u8(expd.Link_text()), String_.new_u8(actl.Link_text())); @@ -98,6 +72,6 @@ class Imap_parser_fxt extends Imap_fxt_base { parser.Parse(imap, raw, 0, raw.length); Imap_err[] err_ary = imap.Errs(); Tfds.Eq(1, err_ary.length, "expd 1 err"); - Tfds.Eq(expd_err, err_ary[0].Err_key()); + Tfds.Eq(expd_err, err_ary[0].Err_msg()); } } diff --git a/400_xowa/src/gplx/xowa/xtns/imaps/Imap_xnde.java b/400_xowa/src/gplx/xowa/xtns/imaps/Imap_xnde.java index 09b232923..a481992cd 100644 --- a/400_xowa/src/gplx/xowa/xtns/imaps/Imap_xnde.java +++ b/400_xowa/src/gplx/xowa/xtns/imaps/Imap_xnde.java @@ -16,22 +16,25 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.xtns.imaps; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; -import gplx.xowa.htmls.*; import gplx.xowa.htmls.core.htmls.*; +import gplx.xowa.htmls.core.htmls.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.logs.*; import gplx.xowa.parsers.xndes.*; public class Imap_xnde implements Xox_xnde { private Imap_xtn_mgr xtn_mgr; private Imap_map imap_data; public void Xtn_parse(Xowe_wiki wiki, Xop_ctx ctx, Xop_root_tkn root, byte[] src, Xop_xnde_tkn xnde) { - xtn_mgr = wiki.Xtn_mgr().Xtn_imap(); - xtn_mgr.Xtn_assert(); + // init + xtn_mgr = wiki.Xtn_mgr().Xtn_imap().Xtn_assert(); Xoae_page page = ctx.Page(); - page.Html_data().Head_mgr().Itm__popups().Bind_hover_area_(true); page.Html_data().Xtn_imap_exists_y_(); + page.Html_data().Head_mgr().Itm__popups().Bind_hover_area_(true); + + // parse imap ctx.Para().Process_block__xnde(xnde.Tag(), Xop_xnde_tag.Block_end); imap_data = xtn_mgr.Parser().Parse(wiki, ctx, root, src, xnde); ctx.Para().Process_block__xnde(xnde.Tag(), Xop_xnde_tag.Block_end); boolean log_wkr_enabled = Log_wkr != Xop_log_basic_wkr.Null; if (log_wkr_enabled) Log_wkr.Log_end_xnde(ctx.Page(), Xop_log_basic_wkr.Tid_imageMap, src, xnde); } public static Xop_log_basic_wkr Log_wkr = Xop_log_basic_wkr.Null; + public void Xtn_write(Bry_bfr bfr, Xoae_app app, Xop_ctx ctx, Xoh_html_wtr html_wtr, Xoh_wtr_ctx hctx, Xop_xnde_tkn xnde, byte[] src) { if (imap_data.Invalid()) return; html_wtr.Write_tkn(bfr, ctx, hctx, imap_data.Img_src(), xnde, Xoh_html_wtr.Sub_idx_null, imap_data.Img().Img_link()); diff --git a/400_xowa/src/gplx/xowa/xtns/imaps/Imap_xtn_mgr.java b/400_xowa/src/gplx/xowa/xtns/imaps/Imap_xtn_mgr.java index 1211dd699..6750bc83d 100644 --- a/400_xowa/src/gplx/xowa/xtns/imaps/Imap_xtn_mgr.java +++ b/400_xowa/src/gplx/xowa/xtns/imaps/Imap_xtn_mgr.java @@ -16,35 +16,34 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.xtns.imaps; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; -import gplx.core.btries.*; import gplx.xowa.wikis.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.core.wkrs.lnkis.htmls.*; -public class Imap_xtn_mgr extends Xox_mgr_base implements GfoInvkAble { +import gplx.core.btries.*; import gplx.xowa.htmls.core.wkrs.lnkis.htmls.*; +import gplx.xowa.xtns.imaps.itms.*; +public class Imap_xtn_mgr extends Xox_mgr_base implements Gfo_invk { private boolean init; - @Override public boolean Enabled_default() {return true;} - @Override public byte[] Xtn_key() {return XTN_KEY;} public static final byte[] XTN_KEY = Bry_.new_a7("imageMap"); - public Xowe_wiki Wiki() {return wiki;} private Xowe_wiki wiki; - @gplx.Internal protected Imap_parser Parser() {return parser;} private Imap_parser parser; - public void Desc_assert() { - if (desc_trie != null) return; - desc_trie = Imap_desc_tid.trie_(wiki); - desc_msg = wiki.Msg_mgr().Val_by_key_obj("imagemap_description"); - desc_icon_url = wiki.Appe().Fsys_mgr().Bin_xtns_dir().GenSubFil_nest("ImageMap", "imgs", "desc-20.png").To_http_file_bry(); + @Override public byte[] Xtn_key() {return XTN_KEY;} public static final byte[] XTN_KEY = Bry_.new_a7("imageMap"); + @Override public boolean Enabled_default() {return true;} + public Xoh_arg_img_core Img_core_arg() {return img_core_arg;} private final Xoh_arg_img_core__basic img_core_arg = new Xoh_arg_img_core__basic(); + public Imap_parser Parser() {return parser;} private Imap_parser parser; + public byte[] Desc_msg() {return desc_msg;} private byte[] desc_msg; + public byte[] Desc_icon_url() {return desc_icon_url;} private byte[] desc_icon_url; + public Btrie_slim_mgr Desc_trie() { + if (desc_trie == null) { + this.desc_trie = Imap_desc_tid.New_trie(wiki); + this.desc_msg = wiki.Msg_mgr().Val_by_key_obj("imagemap_description"); + this.desc_icon_url = wiki.Appe().Fsys_mgr().Bin_xtns_dir().GenSubFil_nest("ImageMap", "imgs", "desc-20.png").To_http_file_bry(); + } + return desc_trie; + } private Btrie_slim_mgr desc_trie; + public Imap_xtn_mgr Xtn_assert() { + if (init) return this; + this.init = true; + this.parser = new Imap_parser(this); + return this; } - public Btrie_slim_mgr Desc_trie() {return desc_trie;} private Btrie_slim_mgr desc_trie; - public byte[] Desc_msg() {return desc_msg;} private byte[] desc_msg; - public byte[] Desc_icon_url() {return desc_icon_url;} private byte[] desc_icon_url; - public final Xoh_arg_img_core Img_core_fmtr = new Xoh_arg_img_core__basic(); - public final Xoh_file_html_fmtr__hdump Img_html_hdump_bldr = Xoh_file_html_fmtr__hdump.Hdump; - public final Bry_bfr Tmp_bfr = Bry_bfr.new_(255); - @Override public Xox_mgr Clone_new() {return new Imap_xtn_mgr();} - @Override public void Xtn_init_by_wiki(Xowe_wiki wiki) { - this.wiki = wiki; - } - public void Xtn_assert() { - if (init) return; - parser = new Imap_parser(this); - init = true; - } - public static final byte[] + @Override public void Xtn_init_by_wiki(Xowe_wiki wiki) {this.wiki = wiki;} private Xowe_wiki wiki; + @Override public Xox_mgr Xtn_clone_new() {return new Imap_xtn_mgr();} + + public static final byte[] Bry__usemap__html = Bry_.new_a7(" usemap=\"#imagemap_1_") , Bry__usemap__name = Bry_.new_a7("usemap") , Bry__usemap__prefix = Bry_.new_a7("#imagemap_1_") diff --git a/400_xowa/src/gplx/xowa/xtns/imaps/htmls/Imap_html__hdump__tst.java b/400_xowa/src/gplx/xowa/xtns/imaps/htmls/Imap_html__hdump__tst.java new file mode 100644 index 000000000..d823aa9ff --- /dev/null +++ b/400_xowa/src/gplx/xowa/xtns/imaps/htmls/Imap_html__hdump__tst.java @@ -0,0 +1,48 @@ +/* +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.xtns.imaps.htmls; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.imaps.*; +import org.junit.*; +import gplx.xowa.htmls.core.htmls.*; +public class Imap_html__hdump__tst { + @Before public void init() {fxt.Reset(); fxt.Fxt().Hctx_(Xoh_wtr_ctx.Hdump);} private final Imap_xnde_html_fxt fxt = new Imap_xnde_html_fxt(); + @Test public void Basic() { + fxt.Test_html_full_str(String_.Concat_lines_nl_skip_last + ( "" + , "File:A.png|thumb|100x200px|a1" + , "circle 0 0 5 [[B|b1]]" + , "rect 0 0 4 8 [[C|c1]]" + , "desc none" + , "" + ), String_.Concat_lines_nl_skip_last + ( "
    " + , "
    " // NOTE:220px is default w for "non-found" thumb; DATE:2014-09-24 + , "
    " + , " " + , " \"b1\"" + , " \"c1\"" + , " " + , " \"\"" + , "
    " + , "
    " + , "
    a1" + , "
    " + , "
    " + , "
    " + )); + } +} diff --git a/400_xowa/src/gplx/xowa/xtns/imaps/Imap_xnde_html_all_tst.java b/400_xowa/src/gplx/xowa/xtns/imaps/htmls/Imap_html__hview__tst.java similarity index 94% rename from 400_xowa/src/gplx/xowa/xtns/imaps/Imap_xnde_html_all_tst.java rename to 400_xowa/src/gplx/xowa/xtns/imaps/htmls/Imap_html__hview__tst.java index 070cb2003..76412bdd0 100644 --- a/400_xowa/src/gplx/xowa/xtns/imaps/Imap_xnde_html_all_tst.java +++ b/400_xowa/src/gplx/xowa/xtns/imaps/htmls/Imap_html__hview__tst.java @@ -15,10 +15,10 @@ 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.xtns.imaps; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; +package gplx.xowa.xtns.imaps.htmls; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.imaps.*; import org.junit.*; import gplx.xowa.langs.*; import gplx.xowa.langs.msgs.*; -public class Imap_xnde_html_all_tst { - @Before public void init() {fxt.Reset();} private final Imap_xnde_html_fxt fxt = new Imap_xnde_html_fxt(); +public class Imap_html__hview__tst { + @Before public void init() {fxt.Reset();} private final Imap_xnde_html_fxt fxt = new Imap_xnde_html_fxt(); @Test public void Basic() { fxt.Test_html_full_str(String_.Concat_lines_nl_skip_last ( "" @@ -193,7 +193,7 @@ class Imap_xnde_html_fxt { Xol_msg_itm msg = fxt.Wiki().Msg_mgr().Get_or_make(Bry_.new_a7("imagemap_description")); msg.Atrs_set(Bry_.new_a7("click here"), false, false); } - public Xop_fxt Fxt() {return fxt;} private final Xop_fxt fxt = new Xop_fxt(); + public Xop_fxt Fxt() {return fxt;} private final Xop_fxt fxt = new Xop_fxt(); public void Test_html_full_str(String raw, String expd) {fxt.Test_html_full_str(raw, expd);} public void Test_html_full_frag(String raw, String expd) {fxt.Test_html_full_frag(raw, expd);} public String Frag_html_full() { diff --git a/400_xowa/src/gplx/xowa/xtns/imaps/Imap_html_fmtrs.java b/400_xowa/src/gplx/xowa/xtns/imaps/htmls/Imap_html_fmtrs.java similarity index 92% rename from 400_xowa/src/gplx/xowa/xtns/imaps/Imap_html_fmtrs.java rename to 400_xowa/src/gplx/xowa/xtns/imaps/htmls/Imap_html_fmtrs.java index 77a35825e..b1783c38b 100644 --- a/400_xowa/src/gplx/xowa/xtns/imaps/Imap_html_fmtrs.java +++ b/400_xowa/src/gplx/xowa/xtns/imaps/htmls/Imap_html_fmtrs.java @@ -15,10 +15,10 @@ 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.xtns.imaps; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; +package gplx.xowa.xtns.imaps.htmls; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.imaps.*; import gplx.core.brys.fmtrs.*; -class Imap_html_fmtrs { - public static final Bry_fmtr +public class Imap_html_fmtrs { + public static final Bry_fmtr All = Bry_fmtr.new_(String_.Concat_lines_nl_skip_last ( "
    ~{map}~{img}" , "
    " diff --git a/400_xowa/src/gplx/xowa/xtns/imaps/Imap_img_fmtr_arg.java b/400_xowa/src/gplx/xowa/xtns/imaps/htmls/Imap_img_arg.java similarity index 53% rename from 400_xowa/src/gplx/xowa/xtns/imaps/Imap_img_fmtr_arg.java rename to 400_xowa/src/gplx/xowa/xtns/imaps/htmls/Imap_img_arg.java index 66b5e480b..dc6de748b 100644 --- a/400_xowa/src/gplx/xowa/xtns/imaps/Imap_img_fmtr_arg.java +++ b/400_xowa/src/gplx/xowa/xtns/imaps/htmls/Imap_img_arg.java @@ -15,18 +15,20 @@ 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.xtns.imaps; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; +package gplx.xowa.xtns.imaps.htmls; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.imaps.*; import gplx.core.primitives.*; import gplx.core.brys.fmtrs.*; import gplx.xowa.files.*; import gplx.xowa.parsers.lnkis.*; import gplx.langs.htmls.*; import gplx.xowa.htmls.core.htmls.*; import gplx.xowa.htmls.core.wkrs.lnkis.htmls.*; import gplx.xowa.htmls.core.wkrs.imgs.*; import gplx.xowa.htmls.core.wkrs.imgs.atrs.*; import gplx.xowa.parsers.*; -class Imap_img_fmtr_arg implements gplx.core.brys.Bfr_arg { - private Xoh_wtr_ctx hctx; private Imap_map map; private Imap_xtn_mgr xtn_mgr; // private byte[] src; - private int img_elem_id, img_w, img_h; - private byte[] img_alt, img_src, img_cls, img_href, lnki_ttl; - private Int_2_ref margin_calc = new Int_2_ref(); - public void Init(Xoh_wtr_ctx hctx, Imap_xtn_mgr xtn_mgr, Imap_map map, byte[] src, int img_elem_id, byte[] img_alt, byte[] img_src, int img_w, int img_h, byte[] img_cls, byte[] img_href, byte[] lnki_ttl) { - this.hctx = hctx; this.map = map; this.xtn_mgr = xtn_mgr; // this.src = src; +import gplx.xowa.xtns.imaps.itms.*; +public class Imap_img_arg implements gplx.core.brys.Bfr_arg { + private final Xoh_wtr_ctx hctx; private final Imap_map map; private final Imap_xtn_mgr xtn_mgr; + private final int img_elem_id, img_w, img_h; + private final byte[] img_alt, img_src, img_cls, img_href, lnki_ttl; + private final Int_2_ref margin_calc = new Int_2_ref(); + public Imap_img_arg(Xoh_wtr_ctx hctx, Imap_xtn_mgr xtn_mgr, Imap_map map + , int img_elem_id, byte[] img_alt, byte[] img_src, int img_w, int img_h, byte[] img_cls, byte[] img_href, byte[] lnki_ttl) { + this.hctx = hctx; this.map = map; this.xtn_mgr = xtn_mgr; this.img_elem_id = img_elem_id; this.img_w = img_w; this.img_h = img_h; this.img_alt = img_alt; this.img_src = img_src; this.img_cls = img_cls; this.img_href = img_href; this.lnki_ttl = lnki_ttl; @@ -34,31 +36,31 @@ class Imap_img_fmtr_arg implements gplx.core.brys.Bfr_arg { public void Bfr_arg__add(Bry_bfr bfr) { Bry_fmtr fmtr = Imap_html_fmtrs.Img_anchor_none; byte[] anchor_href = Bry_.Empty, anchor_text = Bry_.Empty; - Imap_itm_dflt itm_dflt = map.Dflt(); + Imap_part_dflt itm_dflt = map.Dflt(); if (hctx.Mode_is_hdump()) { - Bry_bfr tmp_bfr = xtn_mgr.Tmp_bfr; - byte[] data_xowa_image = Xoh_file_html_fmtr__hdump.Bld_xowa_image_data(tmp_bfr, Xop_lnki_type.Id_none, img_w, img_h, Xop_lnki_tkn.Upright_null, Xof_lnki_time.Null, Xof_lnki_page.Null); - byte[] data_xowa_title = Gfh_atr_.Make(tmp_bfr, Xoh_img_xoimg_data.Bry__data_xowa_title, lnki_ttl); - byte[] usemap = tmp_bfr.Add(Imap_xtn_mgr.Bry__usemap__html).Add_int_variable(map.Id()).Add_byte_quote().To_bry_and_clear(); - Xoh_file_html_fmtr__hdump.Bld_anch_n(tmp_bfr, data_xowa_title, data_xowa_image, Xoh_img_cls_.Tid__thumbimage, Bry_.Empty, Bry_.Empty, usemap); - bfr.Add_bfr_and_clear(tmp_bfr); + Bry_bfr tmp_bfr = Bry_bfr_.Get(); + try { + byte[] data_xowa_image = Xoh_file_html_fmtr__hdump.Bld_xowa_image_data(tmp_bfr, Xop_lnki_type.Id_none, img_w, img_h, Xop_lnki_tkn.Upright_null, Xof_lnki_time.Null, Xof_lnki_page.Null); + byte[] data_xowa_title = Gfh_atr_.Make(tmp_bfr, Xoh_img_xoimg_data.Bry__data_xowa_title, lnki_ttl); + byte[] usemap = tmp_bfr.Add(Imap_xtn_mgr.Bry__usemap__html).Add_int_variable(map.Id()).Add_byte_quote().To_bry_and_clear(); + Xoh_file_html_fmtr__hdump.Bld_anch_n(tmp_bfr, data_xowa_title, data_xowa_image, Xoh_img_cls_.Tid__thumbimage, Bry_.Empty, Bry_.Empty, usemap); + bfr.Add_byte_nl().Add_byte_repeat(Byte_ascii.Space, 6); + bfr.Add_bfr_and_clear(tmp_bfr); + } finally {tmp_bfr.Mkr_rls();} } else { - Xoh_arg_img_core img_core_fmtr = xtn_mgr.Img_core_fmtr; + Xoh_arg_img_core img_core_fmtr = xtn_mgr.Img_core_arg(); img_core_fmtr.Init(img_elem_id, img_src, img_w, img_h); if (itm_dflt != null) { -// Xowe_wiki wiki = map.Xtn_mgr().Wiki(); -// if (src.length != 0) // imap update will pass 0 src -// Imap_link_owner_.Write(itm_dflt, wiki.Appe(), wiki, hctx, src); fmtr = itm_dflt.Link_tid() == Xop_tkn_itm_.Tid_lnki ? Imap_html_fmtrs.Img_anchor_lnki : Imap_html_fmtrs.Img_anchor_lnke; anchor_href = itm_dflt.Link_href(); anchor_text = itm_dflt.Link_text(); } fmtr.Bld_bfr_many(bfr, map.Id(), img_elem_id, img_alt, img_core_fmtr, img_cls, anchor_href, anchor_text); } - Imap_itm_desc itm_desc = map.Desc(); + Imap_part_desc itm_desc = map.Desc(); if (itm_desc != null) { - Imap_desc_tid.Calc_desc_margins(margin_calc, itm_desc.Desc_tid(), img_w, img_h); + Imap_desc_tid.Calc_margins(margin_calc, itm_desc.Desc_tid(), img_w, img_h); Imap_html_fmtrs.Desc_main.Bld_bfr_many(bfr, margin_calc.Val_0(), margin_calc.Val_1(), img_href, xtn_mgr.Desc_msg(), xtn_mgr.Desc_icon_url()); } } diff --git a/400_xowa/src/gplx/xowa/xtns/imaps/htmls/Imap_map_arg.java b/400_xowa/src/gplx/xowa/xtns/imaps/htmls/Imap_map_arg.java new file mode 100644 index 000000000..dfab1f492 --- /dev/null +++ b/400_xowa/src/gplx/xowa/xtns/imaps/htmls/Imap_map_arg.java @@ -0,0 +1,31 @@ +/* +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.xtns.imaps.htmls; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.imaps.*; +import gplx.core.brys.fmtrs.*; +import gplx.xowa.xtns.imaps.itms.*; +public class Imap_map_arg implements gplx.core.brys.Bfr_arg { + private final int imap_id; + private final Imap_shapes_arg shapes_arg; + public Imap_map_arg(int imap_id, Imap_part_shape[] shapes, double scale) { + this.imap_id = imap_id; + this.shapes_arg = new Imap_shapes_arg(shapes, scale); + } + public void Bfr_arg__add(Bry_bfr bfr) { + Imap_html_fmtrs.Map.Bld_bfr_many(bfr, imap_id, shapes_arg); + } +} diff --git a/400_xowa/src/gplx/xowa/xtns/imaps/Imap_pts_fmtr_arg.java b/400_xowa/src/gplx/xowa/xtns/imaps/htmls/Imap_shape_pts_arg.java similarity index 76% rename from 400_xowa/src/gplx/xowa/xtns/imaps/Imap_pts_fmtr_arg.java rename to 400_xowa/src/gplx/xowa/xtns/imaps/htmls/Imap_shape_pts_arg.java index c6906d68c..cb6abb149 100644 --- a/400_xowa/src/gplx/xowa/xtns/imaps/Imap_pts_fmtr_arg.java +++ b/400_xowa/src/gplx/xowa/xtns/imaps/htmls/Imap_shape_pts_arg.java @@ -15,19 +15,21 @@ 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.xtns.imaps; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; +package gplx.xowa.xtns.imaps.htmls; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.imaps.*; import gplx.core.primitives.*; -class Imap_pts_fmtr_arg implements gplx.core.brys.Bfr_arg { - private double scale = 1; private Double_obj_val[] pts; - public void Scale_(double v) {this.scale = v;} +public class Imap_shape_pts_arg implements gplx.core.brys.Bfr_arg { + private final double scale; private Double_obj_val[] pts; + public Imap_shape_pts_arg(double scale) { + this.scale = scale; + } public void Pts_(Double_obj_val[] v) {this.pts = v;} public void Bfr_arg__add(Bry_bfr bfr) { int pts_len = pts.length; for (int i = 0; i < pts_len; ++i) { Double_obj_val pt = pts[i]; - if (i != 0) bfr.Add_byte_comma(); int pt_int = (int)pt.Val(); pt_int = (int)Math_.Round(scale * pt_int, 0); + if (i != 0) bfr.Add_byte_comma(); bfr.Add_int_variable(pt_int); } } diff --git a/400_xowa/src/gplx/xowa/xtns/imaps/htmls/Imap_shapes_arg.java b/400_xowa/src/gplx/xowa/xtns/imaps/htmls/Imap_shapes_arg.java new file mode 100644 index 000000000..ed27130fc --- /dev/null +++ b/400_xowa/src/gplx/xowa/xtns/imaps/htmls/Imap_shapes_arg.java @@ -0,0 +1,42 @@ +/* +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.xtns.imaps.htmls; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.imaps.*; +import gplx.xowa.xtns.imaps.itms.*; import gplx.core.brys.fmtrs.*; +public class Imap_shapes_arg implements gplx.core.brys.Bfr_arg { + private final Imap_part_shape[] shapes; + private final Imap_shape_pts_arg pts_arg; + public Imap_shapes_arg(Imap_part_shape[] shapes, double scale) { + this.shapes = shapes; + this.pts_arg = new Imap_shape_pts_arg(scale); + } + public void Bfr_arg__add(Bry_bfr bfr) { + Bry_fmtr fmtr = Imap_html_fmtrs.Area; + int len = shapes.length; + for (int i = 0; i < len; ++i) + Fmt_shape(bfr, fmtr, pts_arg, shapes[i]); + } + public static void Fmt_shape(Bry_bfr bfr, Bry_fmtr fmtr, Imap_shape_pts_arg pts_arg, Imap_part_shape shape) { + pts_arg.Pts_(shape.Shape_pts()); + fmtr.Bld_bfr_many(bfr + , shape.Link_href() + , Imap_part_.To_shape_key(shape.Part_tid()) + , pts_arg + , shape.Link_text() + ); + } +} diff --git a/400_xowa/src/gplx/xowa/xtns/imaps/Imap_xnde_html_itm_tst.java b/400_xowa/src/gplx/xowa/xtns/imaps/htmls/Imap_shapes_arg_tst.java similarity index 67% rename from 400_xowa/src/gplx/xowa/xtns/imaps/Imap_xnde_html_itm_tst.java rename to 400_xowa/src/gplx/xowa/xtns/imaps/htmls/Imap_shapes_arg_tst.java index 37485ae3b..3f8e3372e 100644 --- a/400_xowa/src/gplx/xowa/xtns/imaps/Imap_xnde_html_itm_tst.java +++ b/400_xowa/src/gplx/xowa/xtns/imaps/htmls/Imap_shapes_arg_tst.java @@ -15,19 +15,19 @@ 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.xtns.imaps; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; -import org.junit.*; -public class Imap_xnde_html_itm_tst { - @Before public void init() {fxt.Reset();} private Imap_html_bldr_fxt fxt = new Imap_html_bldr_fxt(); +package gplx.xowa.xtns.imaps.htmls; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.imaps.*; +import org.junit.*; import gplx.xowa.xtns.imaps.itms.*; +public class Imap_shapes_arg_tst { + @Before public void init() {fxt.Reset();} private Imap_shapes_arg_fxt fxt = new Imap_shapes_arg_fxt(); @Test public void Rect() {fxt.Test_shape_html(fxt.itm_rect_("[[A|b]]", 1, 2, 3, 4), "\n \"b\"");} @Test public void Circle() {fxt.Test_shape_html(fxt.itm_circle_("[[A|b]]", 1, 2, 3 ), "\n \"b\"");} @Test public void Poly() {fxt.Test_shape_html(fxt.itm_poly_("[[A|b]]", 1, 2, 3, 4), "\n \"b\"");} } -class Imap_html_bldr_fxt extends Imap_fxt_base { - private Bry_bfr bfr = Bry_bfr.new_(); - private Imap_pts_fmtr_arg pts_fmtr_arg = new Imap_pts_fmtr_arg(); - public void Test_shape_html(Imap_itm_shape shape, String expd) { - Imap_shapes_fmtr.Fmt_shape(bfr, Imap_html_fmtrs.Area, pts_fmtr_arg, shape); +class Imap_shapes_arg_fxt extends Imap_base_fxt { + public void Test_shape_html(Imap_part_shape shape, String expd) { + Bry_bfr bfr = Bry_bfr_.New(); + Imap_shape_pts_arg pts_fmtr_arg = new Imap_shape_pts_arg(1); + Imap_shapes_arg.Fmt_shape(bfr, Imap_html_fmtrs.Area, pts_fmtr_arg, shape); Tfds.Eq(expd, bfr.To_str_and_clear()); } } diff --git a/400_xowa/src/gplx/xowa/xtns/imaps/Imap_desc_tid.java b/400_xowa/src/gplx/xowa/xtns/imaps/itms/Imap_desc_tid.java similarity index 73% rename from 400_xowa/src/gplx/xowa/xtns/imaps/Imap_desc_tid.java rename to 400_xowa/src/gplx/xowa/xtns/imaps/itms/Imap_desc_tid.java index 3e1deef4c..9e6f7b367 100644 --- a/400_xowa/src/gplx/xowa/xtns/imaps/Imap_desc_tid.java +++ b/400_xowa/src/gplx/xowa/xtns/imaps/itms/Imap_desc_tid.java @@ -15,26 +15,42 @@ 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.xtns.imaps; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; +package gplx.xowa.xtns.imaps.itms; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.imaps.*; import gplx.core.primitives.*; import gplx.core.btries.*; -class Imap_desc_tid { +public class Imap_desc_tid { public static final byte Tid_tr = 0, Tid_br = 1, Tid_bl = 2, Tid_tl = 3, Tid_none = 4, Tid_null = 5; - public static final byte[] + public static final byte[] Key_tr = Bry_.new_a7("top-right") , Key_br = Bry_.new_a7("bottom-right") , Key_bl = Bry_.new_a7("bottom-left") , Key_tl = Bry_.new_a7("top-left") , Key_none = Bry_.new_a7("none") ; - public static Btrie_slim_mgr trie_(Xowe_wiki wiki) { + + public static byte Parse_to_tid(Btrie_slim_mgr trie, byte[] src, int bgn, int end) { + Object rv = trie.Match_bgn(src, bgn, end); + return rv == null ? Tid_null : ((Byte_obj_val)rv).Val(); + } + public static void Calc_margins(Int_2_ref rv, byte tid, int html_w, int html_h) { + int margin_l + = tid == Tid_tl || tid == Tid_bl + ? 0 + : html_w - 20; + int margin_t + = tid == Tid_tl || tid == Tid_tr + ? -html_h + 1 // 1px hack for IE, to stop it poking out the top + : -20; + rv.Val_all_(margin_l, margin_t); + } + public static Btrie_slim_mgr New_trie(Xowe_wiki wiki) { Btrie_slim_mgr rv = Btrie_slim_mgr.ci_u8(); - trie_add(rv, Key_tr, Key_br, Key_bl, Key_tl, Key_none); + Add_to_trie(rv, Key_tr, Key_br, Key_bl, Key_tl, Key_none); byte[][] lang_types = Parse_lang_types(wiki); if (lang_types != null) - trie_add(rv, lang_types); + Add_to_trie(rv, lang_types); return rv; } - private static void trie_add(Btrie_slim_mgr trie, byte[]... ary) { + private static void Add_to_trie(Btrie_slim_mgr trie, byte[]... ary) { trie.Add_bry_byte(ary[0] ,Tid_tr); trie.Add_bry_byte(ary[1] ,Tid_br); trie.Add_bry_byte(ary[2] ,Tid_bl); @@ -44,28 +60,11 @@ class Imap_desc_tid { private static byte[][] Parse_lang_types(Xowe_wiki wiki) { byte[] val = wiki.Msg_mgr().Val_by_key_obj("imagemap_desc_types"); if (Bry_.Len_eq_0(val)) return null; // no msg in lang; return; - byte[][] ary = Bry_split_.Split(val, Byte_ascii.Comma); // msg is 5 words concatenated by comma: EX:top-right,bottom-right-bottom-left,top-left,none + byte[][] ary = Bry_split_.Split(val, Byte_ascii.Comma); // msg is 5 words concatenated by comma: EX:top-right,bottom-right-bottom-left,top-left,none int ary_len = ary.length; if (ary_len != 5) wiki.Appe().Usr_dlg().Warn_many("", "", "imap_desc does not have 5 items; wiki=~{0} val=~{1}", wiki.Domain_bry(), val); for (int i = 0; i < 5; ++i) ary[i] = Bry_.Trim(ary[i]); // note that items will have trailing ws; EX: "top-right, bottom-right, bottom-left, top-left, none" return ary; } - public static byte parse(Btrie_slim_mgr trie, byte[] src, int bgn, int end) { - Object rv = trie.Match_bgn(src, bgn, end); - return rv == null ? Tid_null : ((Byte_obj_val)rv).Val(); - } - public static void Calc_desc_margins(Int_2_ref rv, byte tid, int html_w, int html_h) { - int margin_l - = tid == Tid_tl || tid == Tid_bl - ? 0 - : html_w - 20 - ; - int margin_t - = tid == Tid_tl || tid == Tid_tr - ? -html_h + 1 // 1px hack for IE, to stop it poking out the top - : -20 - ; - rv.Val_all_(margin_l, margin_t); - } } diff --git a/400_xowa/src/gplx/xowa/xtns/imaps/itms/Imap_err.java b/400_xowa/src/gplx/xowa/xtns/imaps/itms/Imap_err.java new file mode 100644 index 000000000..41a3ca625 --- /dev/null +++ b/400_xowa/src/gplx/xowa/xtns/imaps/itms/Imap_err.java @@ -0,0 +1,23 @@ +/* +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.xtns.imaps.itms; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.imaps.*; +public class Imap_err { + public Imap_err(int itm_idx, String err_msg) {this.itm_idx = itm_idx; this.err_msg = err_msg;} + public int Itm_idx() {return itm_idx;} private final int itm_idx; + public String Err_msg() {return err_msg;} private final String err_msg; +} diff --git a/400_xowa/src/gplx/xowa/xtns/imaps/itms/Imap_link_owner.java b/400_xowa/src/gplx/xowa/xtns/imaps/itms/Imap_link_owner.java new file mode 100644 index 000000000..6f1120e97 --- /dev/null +++ b/400_xowa/src/gplx/xowa/xtns/imaps/itms/Imap_link_owner.java @@ -0,0 +1,25 @@ +/* +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.xtns.imaps.itms; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.imaps.*; +import gplx.xowa.parsers.*; +public interface Imap_link_owner { + int Link_tid(); void Link_tid_(int v, Xop_tkn_itm tkn); + Xop_tkn_itm Link_tkn(); + void Link_href_(byte[] v); + void Link_text_(byte[] v); +} diff --git a/400_xowa/src/gplx/xowa/xtns/imaps/Imap_itm_shape.java b/400_xowa/src/gplx/xowa/xtns/imaps/itms/Imap_link_owner_.java similarity index 74% rename from 400_xowa/src/gplx/xowa/xtns/imaps/Imap_itm_shape.java rename to 400_xowa/src/gplx/xowa/xtns/imaps/itms/Imap_link_owner_.java index ed5fb35e7..e923565b4 100644 --- a/400_xowa/src/gplx/xowa/xtns/imaps/Imap_itm_shape.java +++ b/400_xowa/src/gplx/xowa/xtns/imaps/itms/Imap_link_owner_.java @@ -15,18 +15,11 @@ 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.xtns.imaps; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; +package gplx.xowa.xtns.imaps.itms; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.imaps.*; import gplx.core.primitives.*; import gplx.core.net.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.lnkis.*; import gplx.xowa.parsers.lnkes.*; import gplx.xowa.htmls.core.htmls.*; import gplx.xowa.htmls.core.wkrs.lnkes.*; -interface Imap_link_owner { - int Link_tid(); - Xop_tkn_itm Link_tkn(); - void Link_tid_(int v, Xop_tkn_itm tkn); - void Link_href_(byte[] v); - void Link_text_(byte[] v); -} -class Imap_link_owner_ { +public class Imap_link_owner_ { public static void Init(Imap_link_owner link_owner, Xoae_app app, Xowe_wiki wiki, byte[] src, Xop_tkn_itm tkn) { Bry_bfr bfr = wiki.Utl__bfr_mkr().Get_b512(); try { @@ -82,17 +75,3 @@ class Imap_link_owner_ { finally {bfr.Mkr_rls();} // release buffer in case of null error; PAGE:de.u:PPA/Raster/TK25/51/18/12/20; DATE:2015-02-02 } } -class Imap_itm_shape implements Imap_itm, Imap_link_owner { - public Imap_itm_shape(byte shape_tid, Double_obj_val[] shape_pts) { - this.shape_tid = shape_tid; - this.shape_pts = shape_pts; - } - public byte Itm_tid() {return shape_tid;} private byte shape_tid; - public Double_obj_val[] Shape_pts() {return shape_pts;} private Double_obj_val[] shape_pts; - public int Link_tid() {return link_tid;} private int link_tid; - public Xop_tkn_itm Link_tkn() {return link_tkn;} private Xop_tkn_itm link_tkn; - public void Link_tid_(int tid, Xop_tkn_itm tkn) {link_tid = tid; link_tkn = tkn;} - public byte[] Link_href() {return link_href;} public void Link_href_(byte[] v) {this.link_href = v;} private byte[] link_href; - public byte[] Link_text() {return link_text;} public void Link_text_(byte[] v) {this.link_text = v;} private byte[] link_text; - public static final byte Tid_default = 0, Tid_rect = 4, Tid_circle = 3, Tid_poly = 5; -} diff --git a/400_xowa/src/gplx/xowa/xtns/imaps/itms/Imap_part.java b/400_xowa/src/gplx/xowa/xtns/imaps/itms/Imap_part.java new file mode 100644 index 000000000..57f7c1f58 --- /dev/null +++ b/400_xowa/src/gplx/xowa/xtns/imaps/itms/Imap_part.java @@ -0,0 +1,21 @@ +/* +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.xtns.imaps.itms; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.imaps.*; +public interface Imap_part { + byte Part_tid(); +} diff --git a/400_xowa/src/gplx/xowa/xtns/imaps/itms/Imap_part_.java b/400_xowa/src/gplx/xowa/xtns/imaps/itms/Imap_part_.java new file mode 100644 index 000000000..960916c7d --- /dev/null +++ b/400_xowa/src/gplx/xowa/xtns/imaps/itms/Imap_part_.java @@ -0,0 +1,45 @@ +/* +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.xtns.imaps.itms; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.imaps.*; +public class Imap_part_ { + public static final byte + Tid_invalid = 0 + , Tid_img = 1 + , Tid_desc = 2 + , Tid_comment = 3 + , Tid_dflt = 4 + , Tid_shape_rect = 5 + , Tid_shape_circle = 6 + , Tid_shape_poly = 7 + ; + public static final byte[] + Key_dflt = Bry_.new_a7("default") + , Key_shape_rect = Bry_.new_a7("rect") + , Key_shape_circle = Bry_.new_a7("circle") + , Key_shape_poly = Bry_.new_a7("poly") + ; + + public static byte[] To_shape_key(byte v) { + switch (v) { + case Tid_shape_rect : return Key_shape_rect; + case Tid_shape_circle : return Key_shape_circle; + case Tid_shape_poly : return Key_shape_poly; + default : throw Err_.new_unhandled(v); + } + } +} diff --git a/400_xowa/src/gplx/xowa/xtns/imaps/itms/Imap_part_desc.java b/400_xowa/src/gplx/xowa/xtns/imaps/itms/Imap_part_desc.java new file mode 100644 index 000000000..8e1aa8c3f --- /dev/null +++ b/400_xowa/src/gplx/xowa/xtns/imaps/itms/Imap_part_desc.java @@ -0,0 +1,23 @@ +/* +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.xtns.imaps.itms; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.imaps.*; +public class Imap_part_desc implements Imap_part { + public Imap_part_desc(byte desc_tid) {this.desc_tid = desc_tid;} + public byte Part_tid() {return Imap_part_.Tid_desc;} + public byte Desc_tid() {return desc_tid;} private final byte desc_tid; +} diff --git a/400_xowa/src/gplx/xowa/xtns/imaps/itms/Imap_part_dflt.java b/400_xowa/src/gplx/xowa/xtns/imaps/itms/Imap_part_dflt.java new file mode 100644 index 000000000..2489ccb1a --- /dev/null +++ b/400_xowa/src/gplx/xowa/xtns/imaps/itms/Imap_part_dflt.java @@ -0,0 +1,26 @@ +/* +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.xtns.imaps.itms; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.imaps.*; +import gplx.xowa.parsers.*; +public class Imap_part_dflt implements Imap_part, Imap_link_owner { + public byte Part_tid() {return Imap_part_.Tid_dflt;} + public Xop_tkn_itm Link_tkn() {return link_tkn;} private Xop_tkn_itm link_tkn; + public int Link_tid() {return link_tid;} private int link_tid; public void Link_tid_(int tid, Xop_tkn_itm tkn) {link_tid = tid; link_tkn = tkn;} + public byte[] Link_href() {return link_href;} private byte[] link_href; public void Link_href_(byte[] v) {this.link_href = v;} + public byte[] Link_text() {return link_text;} private byte[] link_text; public void Link_text_(byte[] v) {this.link_text = v;} +} diff --git a/400_xowa/src/gplx/xowa/xtns/imaps/itms/Imap_part_img.java b/400_xowa/src/gplx/xowa/xtns/imaps/itms/Imap_part_img.java new file mode 100644 index 000000000..6fd957a9c --- /dev/null +++ b/400_xowa/src/gplx/xowa/xtns/imaps/itms/Imap_part_img.java @@ -0,0 +1,24 @@ +/* +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.xtns.imaps.itms; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.imaps.*; +import gplx.xowa.parsers.lnkis.*; +public class Imap_part_img implements Imap_part { + public Imap_part_img(Xop_lnki_tkn img_link) {this.img_link = img_link;} + public byte Part_tid() {return Imap_part_.Tid_img;} + public Xop_lnki_tkn Img_link() {return img_link;} private final Xop_lnki_tkn img_link; +} diff --git a/400_xowa/src/gplx/xowa/xtns/imaps/itms/Imap_part_shape.java b/400_xowa/src/gplx/xowa/xtns/imaps/itms/Imap_part_shape.java new file mode 100644 index 000000000..c8b874bd1 --- /dev/null +++ b/400_xowa/src/gplx/xowa/xtns/imaps/itms/Imap_part_shape.java @@ -0,0 +1,34 @@ +/* +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.xtns.imaps.itms; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.imaps.*; +import gplx.core.primitives.*; +import gplx.xowa.parsers.*; +public class Imap_part_shape implements Imap_part, Imap_link_owner { + public Imap_part_shape(byte shape_tid, Double_obj_val[] shape_pts) { + this.shape_tid = shape_tid; + this.shape_pts = shape_pts; + } + public byte Part_tid() {return shape_tid;} private final byte shape_tid; + public Double_obj_val[] Shape_pts() {return shape_pts;} private final Double_obj_val[] shape_pts; + public int Link_tid() {return link_tid;} private int link_tid; + public Xop_tkn_itm Link_tkn() {return link_tkn;} private Xop_tkn_itm link_tkn; public void Link_tid_(int tid, Xop_tkn_itm tkn) {link_tid = tid; link_tkn = tkn;} + public byte[] Link_href() {return link_href;} private byte[] link_href; public void Link_href_(byte[] v) {this.link_href = v;} + public byte[] Link_text() {return link_text;} private byte[] link_text; public void Link_text_(byte[] v) {this.link_text = v;} + + public static final byte Tid_default = 0, Tid_rect = 4, Tid_circle = 3, Tid_poly = 5; +} diff --git a/400_xowa/src/gplx/xowa/xtns/indicators/Indicator_html_bldr_tst.java b/400_xowa/src/gplx/xowa/xtns/indicators/Indicator_html_bldr_tst.java index c830f9251..0d0061938 100644 --- a/400_xowa/src/gplx/xowa/xtns/indicators/Indicator_html_bldr_tst.java +++ b/400_xowa/src/gplx/xowa/xtns/indicators/Indicator_html_bldr_tst.java @@ -59,7 +59,7 @@ class Indicator_html_bldr_fxt { indicators.Add(xnde); } public void Test_bld(String expd) { - Bry_bfr tmp_bfr = Bry_bfr.reset_(255); + Bry_bfr tmp_bfr = Bry_bfr_.Reset(255); page.Html_data().Indicators().Bfr_arg__add(tmp_bfr); Tfds.Eq_str_lines(expd, tmp_bfr.To_str_and_clear()); } diff --git a/400_xowa/src/gplx/xowa/xtns/indicators/Indicator_xtn_mgr.java b/400_xowa/src/gplx/xowa/xtns/indicators/Indicator_xtn_mgr.java index 6eb33adaa..4482ed009 100644 --- a/400_xowa/src/gplx/xowa/xtns/indicators/Indicator_xtn_mgr.java +++ b/400_xowa/src/gplx/xowa/xtns/indicators/Indicator_xtn_mgr.java @@ -21,6 +21,6 @@ public class Indicator_xtn_mgr extends Xox_mgr_base { public Indicator_xtn_mgr() { } @Override public boolean Enabled_default() {return false;} - @Override public byte[] Xtn_key() {return XTN_KEY;} public static final byte[] XTN_KEY = Bry_.new_a7("Indicator"); - @Override public Xox_mgr Clone_new() {return new Indicator_xtn_mgr();} + @Override public byte[] Xtn_key() {return XTN_KEY;} public static final byte[] XTN_KEY = Bry_.new_a7("Indicator"); + @Override public Xox_mgr Xtn_clone_new() {return new Indicator_xtn_mgr();} } diff --git a/400_xowa/src/gplx/xowa/xtns/insiders/Insider_html_bldr.java b/400_xowa/src/gplx/xowa/xtns/insiders/Insider_html_bldr.java index 21898654c..18981adda 100644 --- a/400_xowa/src/gplx/xowa/xtns/insiders/Insider_html_bldr.java +++ b/400_xowa/src/gplx/xowa/xtns/insiders/Insider_html_bldr.java @@ -22,11 +22,11 @@ import gplx.xowa.wikis.*; import gplx.xowa.wikis.xwikis.*; import gplx.xowa.wiki import gplx.xowa.htmls.hrefs.*; import gplx.xowa.wikis.nss.*; class Insider_xtn_skin_itm implements Xopg_xtn_skin_itm { - private List_adp itms = List_adp_.new_(); + private List_adp itms = List_adp_.New(); private Insider_html_bldr html_bldr; public Insider_xtn_skin_itm(Insider_html_bldr html_bldr) {this.html_bldr = html_bldr;} public byte Tid() {return Xopg_xtn_skin_itm_tid.Tid_sidebar;} - public byte[] Key() {return KEY;} public static final byte[] KEY = Bry_.new_a7("Insider"); + public byte[] Key() {return KEY;} public static final byte[] KEY = Bry_.new_a7("Insider"); public List_adp Itms() {return itms;} public void Add(byte[] itm) {itms.Add(itm);} public void Write(Bry_bfr bfr, Xoae_page page) { @@ -35,7 +35,7 @@ class Insider_xtn_skin_itm implements Xopg_xtn_skin_itm { } public class Insider_html_bldr implements gplx.core.brys.Bfr_arg { private Insider_xtn_mgr xtn_mgr; - private Bry_bfr tmp_ttl = Bry_bfr.reset_(255); + private Bry_bfr tmp_ttl = Bry_bfr_.Reset(255); private List_adp list; private int list_len; private Hash_adp_bry hash = Hash_adp_bry.cs(); public Insider_html_bldr(Insider_xtn_mgr xtn_mgr) {this.xtn_mgr = xtn_mgr;} @@ -59,7 +59,7 @@ public class Insider_html_bldr implements gplx.core.brys.Bfr_arg { fmtr_itm.Bld_bfr(bfr, user_ttl_bry, user_ttl.Page_txt()); } } - private static final Bry_fmtr + private static final Bry_fmtr fmtr_grp = Bry_fmtr.new_(String_.Concat_lines_nl_skip_last ( "