mirror of
https://github.com/gnosygnu/xowa.git
synced 2024-09-28 22:40:50 +00:00
'v3.8.1.1'
This commit is contained in:
parent
8e91ac0bc4
commit
b0fdf78a41
@ -29,12 +29,12 @@ public class DateAdp_ implements Gfo_invk {
|
|||||||
public static final String Cls_ref_name = "Date";
|
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) {
|
public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {
|
||||||
if (ctx.Match(k, Invk_Now)) return Now();
|
if (ctx.Match(k, Invk_Now)) return Datetime_now.Get();
|
||||||
else return Gfo_invk_.Rv_unhandled;
|
else return Gfo_invk_.Rv_unhandled;
|
||||||
} public static final String Invk_Now = "Now";
|
} 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 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 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 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 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) {
|
public static DateAdp seg_(int[] ary) {
|
||||||
int ary_len = ary.length;
|
int ary_len = ary.length;
|
||||||
|
66
100_core/src/gplx/Datetime_now.java
Normal file
66
100_core/src/gplx/Datetime_now.java
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
/*
|
||||||
|
XOWA: the XOWA Offline Wiki Application
|
||||||
|
Copyright (C) 2012 gnosygnu@gmail.com
|
||||||
|
|
||||||
|
This program is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU Affero General Public License as
|
||||||
|
published by the Free Software Foundation, either version 3 of the
|
||||||
|
License, or (at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU Affero General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU Affero General Public License
|
||||||
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
package gplx;
|
||||||
|
import java.util.GregorianCalendar;
|
||||||
|
public class Datetime_now {
|
||||||
|
private static final DateAdp dflt = DateAdp_.parse_gplx("2001-01-01 00:00:00.000");
|
||||||
|
private static DateAdp manual;
|
||||||
|
private static boolean autoincrement = true;
|
||||||
|
public static void Manual_y_() {
|
||||||
|
manual = dflt;
|
||||||
|
}
|
||||||
|
public static void Manual_n_() {
|
||||||
|
manual = null;
|
||||||
|
autoincrement = true;
|
||||||
|
}
|
||||||
|
public static void Manual_and_freeze_(DateAdp v) {
|
||||||
|
manual = v;
|
||||||
|
autoincrement = false;
|
||||||
|
}
|
||||||
|
public static void Manual_(DateAdp v) {
|
||||||
|
manual = v;
|
||||||
|
}
|
||||||
|
public static void Autoincrement_n_() {
|
||||||
|
autoincrement = false;
|
||||||
|
}
|
||||||
|
public static DateAdp Dflt_add_min_(int v) {
|
||||||
|
return dflt.Add_minute(v);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static DateAdp Get() {
|
||||||
|
if (manual == null) return new DateAdp(new GregorianCalendar());
|
||||||
|
DateAdp rv = manual;
|
||||||
|
if (autoincrement) manual = rv.Add_minute(1); // simulate passage of manual by increasing manual by 1 minute with each call
|
||||||
|
return rv;
|
||||||
|
}
|
||||||
|
// private static final DateAdp manual_time_dflt = DateAdp_.parse_gplx("2001-01-01 00:00:00.000");
|
||||||
|
// private static DateAdp manual_time;
|
||||||
|
// static boolean Now_enabled() {return now_enabled;} private static boolean now_enabled;
|
||||||
|
// static void Now_enabled_y_() {now_enabled = Bool_.Y; manual_time = manual_time_dflt;}
|
||||||
|
// static void Now_enabled_n_() {now_enabled = Bool_.N; now_freeze = false;}
|
||||||
|
// public static void Now_set(DateAdp date) {now_enabled = true; manual_time = date;}
|
||||||
|
// public static void Now_freeze_y_() {now_freeze = true;}
|
||||||
|
// private static boolean now_freeze;
|
||||||
|
// public static DateAdp Now_time0_add_min(int minutes) {return manual_time_dflt.Add_minute(minutes);}
|
||||||
|
// @gplx.Internal protected static DateAdp Now() {
|
||||||
|
// DateAdp rv = manual_time;
|
||||||
|
// if (!now_freeze) manual_time = rv.Add_minute(1);
|
||||||
|
// return rv;
|
||||||
|
// }
|
||||||
|
|
||||||
|
}
|
@ -26,10 +26,10 @@ public class Gfo_log_ {
|
|||||||
}
|
}
|
||||||
public static final String File__fmt = "yyyyMMdd_HHmmss", File__ext = ".log";
|
public static final String File__fmt = "yyyyMMdd_HHmmss", File__ext = ".log";
|
||||||
public static Io_url New_url(Io_url dir) {
|
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);
|
return dir.GenSubFil(Datetime_now.Get().XtoUtc().XtoStr_fmt(Gfo_log_.File__fmt) + Gfo_log_.File__ext);
|
||||||
}
|
}
|
||||||
public static Gfo_log New_file(Io_url dir) {
|
public static Gfo_log New_file(Io_url dir) {
|
||||||
Io_url url = dir.GenSubFil(DateAdp_.Now().XtoStr_fmt(File__fmt) + File__ext);
|
Io_url url = dir.GenSubFil(Datetime_now.Get().XtoStr_fmt(File__fmt) + File__ext);
|
||||||
Gfo_log__file.Delete_old_files(dir, Gfo_log_.Instance);
|
Gfo_log__file.Delete_old_files(dir, Gfo_log_.Instance);
|
||||||
return new Gfo_log__file(url, new Gfo_log_itm_wtr__csv());
|
return new Gfo_log__file(url, new Gfo_log_itm_wtr__csv());
|
||||||
}
|
}
|
||||||
|
@ -19,7 +19,7 @@ package gplx;
|
|||||||
public class Gfo_log_bfr {
|
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) {
|
public Gfo_log_bfr Add(String s) {
|
||||||
bfr.Add_str_a7(DateAdp_.Now().XtoUtc().XtoStr_fmt_yyyyMMdd_HHmmss_fff());
|
bfr.Add_str_a7(Datetime_now.Get().XtoUtc().XtoStr_fmt_yyyyMMdd_HHmmss_fff());
|
||||||
bfr.Add_byte_space();
|
bfr.Add_byte_space();
|
||||||
bfr.Add_str_u8(s);
|
bfr.Add_str_u8(s);
|
||||||
bfr.Add_byte_nl();
|
bfr.Add_byte_nl();
|
||||||
|
@ -21,7 +21,7 @@ public class Gfo_usr_dlg__log_base implements Gfo_usr_dlg__log {
|
|||||||
private int archive_dirs_max = 8;
|
private int archive_dirs_max = 8;
|
||||||
private Io_url log_dir, err_fil;
|
private Io_url log_dir, err_fil;
|
||||||
private Ordered_hash queued_list = Ordered_hash_.New();
|
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.New__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 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 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;
|
public Io_url Session_dir() {return session_dir;} private Io_url session_dir;
|
||||||
@ -56,7 +56,7 @@ public class Gfo_usr_dlg__log_base implements Gfo_usr_dlg__log {
|
|||||||
this.Log_to_session("app term");
|
this.Log_to_session("app term");
|
||||||
MoveCurrentToArchive(session_dir);
|
MoveCurrentToArchive(session_dir);
|
||||||
}
|
}
|
||||||
private void MoveCurrentToArchive(Io_url dir) {Io_mgr.Instance.MoveDirDeep(dir, dir.OwnerDir().GenSubDir(DateAdp_.Now().XtoStr_fmt_yyyyMMdd_HHmmss_fff()));}
|
private void MoveCurrentToArchive(Io_url dir) {Io_mgr.Instance.MoveDirDeep(dir, dir.OwnerDir().GenSubDir(Datetime_now.Get().XtoStr_fmt_yyyyMMdd_HHmmss_fff()));}
|
||||||
public void Log_info(boolean warn, String s) {if (warn) Log_to_err(s); else Log_to_session(s);}
|
public void Log_info(boolean warn, String s) {if (warn) Log_to_err(s); else Log_to_session(s);}
|
||||||
public void Log_msg_to_url_fmt(Io_url url, String fmt, Object... args) {
|
public void Log_msg_to_url_fmt(Io_url url, String fmt, Object... args) {
|
||||||
if (!enabled) return;
|
if (!enabled) return;
|
||||||
@ -83,7 +83,7 @@ public class Gfo_usr_dlg__log_base implements Gfo_usr_dlg__log {
|
|||||||
}
|
}
|
||||||
catch (Exception e) {Err_.Noop(e);} // java.lang.StringBuilder can throw exceptions in some situations when called on a different thread; ignore errors
|
catch (Exception e) {Err_.Noop(e);} // java.lang.StringBuilder can throw exceptions in some situations when called on a different thread; ignore errors
|
||||||
} private String_bldr sb = String_bldr_.new_thread(); // NOTE: use java.lang.StringBuffer to try to avoid random exceptions when called on a different thread
|
} private String_bldr sb = String_bldr_.new_thread(); // NOTE: use java.lang.StringBuffer to try to avoid random exceptions when called on a different thread
|
||||||
private String Bld_msg(String s) {return sb.Add(DateAdp_.Now().XtoUtc().XtoStr_fmt_yyyyMMdd_HHmmss_fff()).Add(" ").Add(s).Add_char_nl().To_str_and_clear();}
|
private String Bld_msg(String s) {return sb.Add(Datetime_now.Get().XtoUtc().XtoStr_fmt_yyyyMMdd_HHmmss_fff()).Add(" ").Add(s).Add_char_nl().To_str_and_clear();}
|
||||||
private void Log_msg(Io_url url, String txt) {
|
private void Log_msg(Io_url url, String txt) {
|
||||||
if (queue_enabled) {
|
if (queue_enabled) {
|
||||||
String url_raw = url == null ? "mem" : url.Raw();
|
String url_raw = url == null ? "mem" : url.Raw();
|
||||||
|
@ -19,7 +19,7 @@ package gplx;
|
|||||||
import gplx.core.brys.fmtrs.*;
|
import gplx.core.brys.fmtrs.*;
|
||||||
public class Gfo_usr_dlg_base implements Gfo_usr_dlg {
|
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
|
private final Bry_fmtr tmp_fmtr = Bry_fmtr.New__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_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;
|
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;
|
||||||
public Gfo_usr_dlg__gui Gui_wkr() {return gui_wkr;} public void Gui_wkr_(Gfo_usr_dlg__gui v) {gui_wkr = v;} private Gfo_usr_dlg__gui gui_wkr;
|
public Gfo_usr_dlg__gui Gui_wkr() {return gui_wkr;} public void Gui_wkr_(Gfo_usr_dlg__gui v) {gui_wkr = v;} private Gfo_usr_dlg__gui gui_wkr;
|
||||||
|
@ -44,12 +44,12 @@ public class Hash_adp_bry extends gplx.core.lists.Hash_adp_base implements Hash_
|
|||||||
}
|
}
|
||||||
public Object Get_by_bry(byte[] src) {synchronized (key_ref) {return super.Fetch_base(key_ref.Init(src));}} // TS: DATE:2016-07-06
|
public Object Get_by_bry(byte[] src) {synchronized (key_ref) {return super.Fetch_base(key_ref.Init(src));}} // TS: DATE:2016-07-06
|
||||||
public Object Get_by_mid(byte[] src, int bgn, int end) {synchronized (key_ref) {return super.Fetch_base(key_ref.Init(src, bgn, end));}}// TS: DATE:2016-07-06
|
public Object Get_by_mid(byte[] src, int bgn, int end) {synchronized (key_ref) {return super.Fetch_base(key_ref.Init(src, bgn, end));}}// TS: DATE:2016-07-06
|
||||||
public Hash_adp_bry Add_byte_int(byte key, int val) {this.Add_base(new byte[]{key}, Int_obj_val.new_(val)); return this;}
|
public Hash_adp_bry Add_byte_int(byte key, int val) {this.Add_base(new byte[]{key}, new Int_obj_val(val)); return this;}
|
||||||
public Hash_adp_bry Add_bry_byte(byte[] key, byte val) {this.Add_base(key, Byte_obj_val.new_(val)); return this;}
|
public Hash_adp_bry Add_bry_byte(byte[] key, byte val) {this.Add_base(key, Byte_obj_val.new_(val)); return this;}
|
||||||
public Hash_adp_bry Add_bry_int(byte[] key, int val) {this.Add_base(key, Int_obj_val.new_(val)); return this;}
|
public Hash_adp_bry Add_bry_int(byte[] key, int val) {this.Add_base(key, new Int_obj_val(val)); return this;}
|
||||||
public Hash_adp_bry Add_bry_bry(byte[] key) {this.Add_base(key, key); return this;}
|
public Hash_adp_bry Add_bry_bry(byte[] key) {this.Add_base(key, key); return this;}
|
||||||
public Hash_adp_bry Add_str_byte(String key, byte val) {this.Add_base(Bry_.new_u8(key), Byte_obj_val.new_(val)); return this;}
|
public Hash_adp_bry Add_str_byte(String key, byte val) {this.Add_base(Bry_.new_u8(key), Byte_obj_val.new_(val)); return this;}
|
||||||
public Hash_adp_bry Add_str_int(String key, int val) {this.Add_base(Bry_.new_u8(key), Int_obj_val.new_(val)); return this;}
|
public Hash_adp_bry Add_str_int(String key, int val) {this.Add_base(Bry_.new_u8(key), new Int_obj_val(val)); return this;}
|
||||||
public Hash_adp_bry Add_str_obj(String key, Object val) {this.Add_base(Bry_.new_u8(key), val); return this;}
|
public Hash_adp_bry Add_str_obj(String key, Object val) {this.Add_base(Bry_.new_u8(key), val); return this;}
|
||||||
public Hash_adp_bry Add_bry_obj(byte[] key, Object val) {this.Add_base(key, val); return this;}
|
public Hash_adp_bry Add_bry_obj(byte[] key, Object val) {this.Add_base(key, val); return this;}
|
||||||
public Hash_adp_bry Add_many_str(String... ary) {
|
public Hash_adp_bry Add_many_str(String... ary) {
|
||||||
|
@ -141,19 +141,6 @@ public class Tfds { // URL:doc/gplx.tfds/Tfds.txt
|
|||||||
static final String EmptyStr = TfdsMsgBldr.EmptyStr;
|
static final String EmptyStr = TfdsMsgBldr.EmptyStr;
|
||||||
static TfdsMsgBldr msgBldr = TfdsMsgBldr.new_();
|
static TfdsMsgBldr msgBldr = TfdsMsgBldr.new_();
|
||||||
public static final Io_url RscDir = Io_url_.Usr().GenSubDir_nest("000", "200_dev", "190_tst");
|
public static final Io_url RscDir = Io_url_.Usr().GenSubDir_nest("000", "200_dev", "190_tst");
|
||||||
public static DateAdp Now_time0_add_min(int minutes) {return time0.Add_minute(minutes);}
|
|
||||||
@gplx.Internal protected static boolean Now_enabled() {return now_enabled;} private static boolean now_enabled; private static boolean now_freeze;
|
|
||||||
public static void Now_enabled_n_() {now_enabled = false; now_freeze = false;}
|
|
||||||
public static void Now_set(DateAdp date) {now_enabled = true; nowTime = date;}
|
|
||||||
public static void Now_enabled_y_() {now_enabled = true; nowTime = time0;}
|
|
||||||
public static void Now_freeze_y_() {now_freeze = true;}
|
|
||||||
@gplx.Internal protected static DateAdp Now() {
|
|
||||||
DateAdp rv = nowTime;
|
|
||||||
if (!now_freeze) nowTime = rv.Add_minute(1);
|
|
||||||
return rv;
|
|
||||||
}
|
|
||||||
private static final DateAdp time0 = DateAdp_.parse_gplx("2001-01-01 00:00:00.000");
|
|
||||||
private static DateAdp nowTime; // NOTE: cannot set to time0 due to static initialization;
|
|
||||||
public static void WriteText(String text) {Console_adp__sys.Instance.Write_str(text);}
|
public static void WriteText(String text) {Console_adp__sys.Instance.Write_str(text);}
|
||||||
public static void Write(byte[] s, int b, int e) {Write(Bry_.Mid(s, b, e));}
|
public static void Write(byte[] s, int b, int e) {Write(Bry_.Mid(s, b, e));}
|
||||||
public static void Write() {Write("tmp");}
|
public static void Write() {Write("tmp");}
|
||||||
@ -163,7 +150,7 @@ public class Tfds { // URL:doc/gplx.tfds/Tfds.txt
|
|||||||
int aryLen = Array_.Len(ary);
|
int aryLen = Array_.Len(ary);
|
||||||
for (int i = 0; i < aryLen; i++)
|
for (int i = 0; i < aryLen; i++)
|
||||||
sb.Add_many("'", Object_.Xto_str_strict_or_null_mark(ary[i]), "'", " ");
|
sb.Add_many("'", Object_.Xto_str_strict_or_null_mark(ary[i]), "'", " ");
|
||||||
WriteText(sb.To_str() + String_.CrLf);
|
WriteText(sb.To_str() + String_.Lf);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
class TfdsEqListItmStr_cls_default implements TfdsEqListItmStr {
|
class TfdsEqListItmStr_cls_default implements TfdsEqListItmStr {
|
||||||
|
@ -27,7 +27,7 @@ public class Bry_fmtr {
|
|||||||
else keys.Clear();
|
else keys.Clear();
|
||||||
int ary_len = ary.length;
|
int ary_len = ary.length;
|
||||||
for (int i = 0; i < ary_len; i++)
|
for (int i = 0; i < ary_len; i++)
|
||||||
keys.Add(Bry_obj_ref.New(Bry_.new_u8(ary[i])), Int_obj_val.new_(i));
|
keys.Add(Bry_obj_ref.New(Bry_.new_u8(ary[i])), new Int_obj_val(i));
|
||||||
dirty = true;
|
dirty = true;
|
||||||
return this;
|
return this;
|
||||||
} Hash_adp keys = null;
|
} Hash_adp keys = null;
|
||||||
@ -232,7 +232,7 @@ public class Bry_fmtr {
|
|||||||
int baseInt = 0;
|
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 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 Bry_fmtr Null = new Bry_fmtr().Fmt_("");
|
||||||
public static Bry_fmtr tmp_() {return new Bry_fmtr().Fmt_("").Keys_();}
|
public static Bry_fmtr New__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_(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;
|
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;
|
||||||
public static Bry_fmtr new_() {return new Bry_fmtr();}
|
public static Bry_fmtr new_() {return new Bry_fmtr();}
|
||||||
|
@ -20,7 +20,7 @@ public class Bry_fmtr_eval_mgr_ {
|
|||||||
public static Io_url Eval_url(Bry_fmtr_eval_mgr eval_mgr, byte[] fmt) {
|
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));
|
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_();
|
Bry_fmtr fmtr = Bry_fmtr.New__tmp();
|
||||||
fmtr.Eval_mgr_(eval_mgr).Fmt_(fmt).Bld_bfr_none(bfr);
|
fmtr.Eval_mgr_(eval_mgr).Fmt_(fmt).Bld_bfr_none(bfr);
|
||||||
return Io_url_.new_any_(bfr.To_str_and_clear());
|
return Io_url_.new_any_(bfr.To_str_and_clear());
|
||||||
}
|
}
|
||||||
|
@ -18,7 +18,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
package gplx.core.brys.fmtrs; import gplx.*; import gplx.core.*; import gplx.core.brys.*;
|
package gplx.core.brys.fmtrs; import gplx.*; import gplx.core.*; import gplx.core.brys.*;
|
||||||
import gplx.core.brys.*;
|
import gplx.core.brys.*;
|
||||||
public class Bry_fmtr_vals implements Bfr_arg {
|
public class Bry_fmtr_vals implements Bfr_arg {
|
||||||
private final Bry_fmtr fmtr; private Object[] vals;
|
private final Bry_fmtr fmtr; private Object[] vals;
|
||||||
Bry_fmtr_vals(Bry_fmtr fmtr) {this.fmtr = fmtr;}
|
Bry_fmtr_vals(Bry_fmtr fmtr) {this.fmtr = fmtr;}
|
||||||
public Bry_fmtr_vals Vals_(Object... v) {this.vals = v; return this;}
|
public Bry_fmtr_vals Vals_(Object... v) {this.vals = v; return this;}
|
||||||
public void Bfr_arg__add(Bry_bfr bfr) {
|
public void Bfr_arg__add(Bry_bfr bfr) {
|
||||||
|
@ -88,9 +88,9 @@ public class Btrie_slim_mgr implements Btrie_mgr {
|
|||||||
return rv_obj == null ? or : ((Byte_obj_val)rv_obj).Val();
|
return rv_obj == null ? or : ((Byte_obj_val)rv_obj).Val();
|
||||||
}
|
}
|
||||||
public Btrie_slim_mgr Add_bry_tid(byte[] bry, byte tid) {return (Btrie_slim_mgr)Add_obj(bry, Byte_obj_val.new_(tid));}
|
public Btrie_slim_mgr Add_bry_tid(byte[] bry, byte tid) {return (Btrie_slim_mgr)Add_obj(bry, Byte_obj_val.new_(tid));}
|
||||||
public Btrie_slim_mgr Add_bry_int(byte[] key, int val) {return (Btrie_slim_mgr)Add_obj(key, Int_obj_val.new_(val));}
|
public Btrie_slim_mgr Add_bry_int(byte[] key, int val) {return (Btrie_slim_mgr)Add_obj(key, new Int_obj_val(val));}
|
||||||
public Btrie_slim_mgr Add_str_byte(String key, byte val) {return (Btrie_slim_mgr)Add_obj(Bry_.new_u8(key), Byte_obj_val.new_(val));}
|
public Btrie_slim_mgr Add_str_byte(String key, byte val) {return (Btrie_slim_mgr)Add_obj(Bry_.new_u8(key), Byte_obj_val.new_(val));}
|
||||||
public Btrie_slim_mgr Add_str_int(String key, int val) {return (Btrie_slim_mgr)Add_obj(Bry_.new_u8(key), Int_obj_val.new_(val));}
|
public Btrie_slim_mgr Add_str_int(String key, int val) {return (Btrie_slim_mgr)Add_obj(Bry_.new_u8(key), new Int_obj_val(val));}
|
||||||
public Btrie_slim_mgr Add_bry(String key, String val) {return (Btrie_slim_mgr)Add_obj(Bry_.new_u8(key), Bry_.new_u8(val));}
|
public Btrie_slim_mgr Add_bry(String key, String val) {return (Btrie_slim_mgr)Add_obj(Bry_.new_u8(key), Bry_.new_u8(val));}
|
||||||
public Btrie_slim_mgr Add_bry(String key, byte[] val) {return (Btrie_slim_mgr)Add_obj(Bry_.new_u8(key), val);}
|
public Btrie_slim_mgr Add_bry(String key, byte[] val) {return (Btrie_slim_mgr)Add_obj(Bry_.new_u8(key), val);}
|
||||||
public Btrie_slim_mgr Add_bry(byte[] v) {return (Btrie_slim_mgr)Add_obj(v, v);}
|
public Btrie_slim_mgr Add_bry(byte[] v) {return (Btrie_slim_mgr)Add_obj(v, v);}
|
||||||
@ -108,7 +108,7 @@ public class Btrie_slim_mgr implements Btrie_mgr {
|
|||||||
public Btrie_slim_mgr Add_many_int(int val, String... ary) {return Add_many_int(val, Bry_.Ary(ary));}
|
public Btrie_slim_mgr Add_many_int(int val, String... ary) {return Add_many_int(val, Bry_.Ary(ary));}
|
||||||
public Btrie_slim_mgr Add_many_int(int val, byte[]... ary) {
|
public Btrie_slim_mgr Add_many_int(int val, byte[]... ary) {
|
||||||
int len = ary.length;
|
int len = ary.length;
|
||||||
Int_obj_val obj = Int_obj_val.new_(val);
|
Int_obj_val obj = new Int_obj_val(val);
|
||||||
for (int i = 0; i < len; i++)
|
for (int i = 0; i < len; i++)
|
||||||
Add_obj(ary[i], obj);
|
Add_obj(ary[i], obj);
|
||||||
return this;
|
return this;
|
||||||
|
@ -68,7 +68,7 @@ public class IoEngine_memory extends IoEngine_base {
|
|||||||
return FetchFil(args.Url()).Text();
|
return FetchFil(args.Url()).Text();
|
||||||
}
|
}
|
||||||
void SaveFilStr(Io_url url, String text) {
|
void SaveFilStr(Io_url url, String text) {
|
||||||
DateAdp time = DateAdp_.Now();
|
DateAdp time = Datetime_now.Get();
|
||||||
IoItmFil_mem fil = IoItmFil_mem.new_(url, String_.Len(text), time, text);
|
IoItmFil_mem fil = IoItmFil_mem.new_(url, String_.Len(text), time, text);
|
||||||
AddFilToDir(url.OwnerDir(), fil);
|
AddFilToDir(url.OwnerDir(), fil);
|
||||||
}
|
}
|
||||||
@ -76,7 +76,7 @@ public class IoEngine_memory extends IoEngine_base {
|
|||||||
Io_url url = args.Url(); String text = args.Text();
|
Io_url url = args.Url(); String text = args.Text();
|
||||||
if (ExistsFil_api(url)) {
|
if (ExistsFil_api(url)) {
|
||||||
IoItmFil_mem fil = FetchFil(url);
|
IoItmFil_mem fil = FetchFil(url);
|
||||||
fil.ModifiedTime_(DateAdp_.Now());
|
fil.ModifiedTime_(Datetime_now.Get());
|
||||||
fil.Text_set(fil.Text() + text);
|
fil.Text_set(fil.Text() + text);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -48,7 +48,7 @@ public class IoEngine_xrg_recycleFil extends IoEngine_xrg_fil_affects1_base {
|
|||||||
}
|
}
|
||||||
public IoEngine_xrg_recycleFil(int v) {
|
public IoEngine_xrg_recycleFil(int v) {
|
||||||
mode = v;
|
mode = v;
|
||||||
time = DateAdp_.Now();
|
time = Datetime_now.Get();
|
||||||
uuid = Guid_adp_.New();
|
uuid = Guid_adp_.New();
|
||||||
rootDirNames = List_adp_.New(); rootDirNames.Add("z_trash");
|
rootDirNames = List_adp_.New(); rootDirNames.Add("z_trash");
|
||||||
}
|
}
|
||||||
|
@ -17,16 +17,10 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
*/
|
*/
|
||||||
package gplx.core.primitives; import gplx.*; import gplx.core.*;
|
package gplx.core.primitives; import gplx.*; import gplx.core.*;
|
||||||
public class Int_obj_val implements CompareAble {
|
public class Int_obj_val implements CompareAble {
|
||||||
public int Val() {return val;} int val;
|
public Int_obj_val(int val) {this.val = val;}
|
||||||
|
public int Val() {return val;} private final int val;
|
||||||
@Override public String toString() {return Int_.To_str(val);}
|
@Override public String toString() {return Int_.To_str(val);}
|
||||||
@Override public int hashCode() {return val;}
|
@Override public int hashCode() {return val;}
|
||||||
@Override public boolean equals(Object obj) {return obj == null ? false : val == ((Int_obj_val)obj).Val();}
|
@Override public boolean equals(Object obj) {return obj == null ? false : val == ((Int_obj_val)obj).Val();}
|
||||||
public int compareTo(Object obj) {Int_obj_val comp = (Int_obj_val)obj; return Int_.Compare(val, comp.val);}
|
public int compareTo(Object obj) {Int_obj_val comp = (Int_obj_val)obj; return Int_.Compare(val, comp.val);}
|
||||||
public static Int_obj_val neg1_() {return new_(-1);}
|
|
||||||
public static Int_obj_val zero_() {return new_(0);}
|
|
||||||
public static Int_obj_val new_(int val) {
|
|
||||||
Int_obj_val rv = new Int_obj_val();
|
|
||||||
rv.val = val;
|
|
||||||
return rv;
|
|
||||||
} Int_obj_val() {}
|
|
||||||
}
|
}
|
||||||
|
@ -21,7 +21,7 @@ public class PerfLogMgr_fxt {
|
|||||||
public void Init(Io_url url, String text) {
|
public void Init(Io_url url, String text) {
|
||||||
this.url = url;
|
this.url = url;
|
||||||
entries.Resize_bounds(1000);
|
entries.Resize_bounds(1000);
|
||||||
entries.Add(new PerfLogItm(0, text + "|" + DateAdp_.Now().XtoStr_gplx()));
|
entries.Add(new PerfLogItm(0, text + "|" + Datetime_now.Get().XtoStr_gplx()));
|
||||||
tmr.Bgn();
|
tmr.Bgn();
|
||||||
}
|
}
|
||||||
public void Write(String text) {
|
public void Write(String text) {
|
||||||
|
@ -21,7 +21,7 @@ public class Gfs_Date_tst {
|
|||||||
@Before public void setup() {
|
@Before public void setup() {
|
||||||
fx = new GfsCoreFxt();
|
fx = new GfsCoreFxt();
|
||||||
fx.AddObj(DateAdp_.Gfs, "Date_");
|
fx.AddObj(DateAdp_.Gfs, "Date_");
|
||||||
Tfds.Now_enabled_y_();
|
Datetime_now.Manual_y_();
|
||||||
} GfsCoreFxt fx;
|
} GfsCoreFxt fx;
|
||||||
@Test public void Now() {
|
@Test public void Now() {
|
||||||
fx.tst_MsgStr(fx.msg_(String_.Ary("Date_", "Now")), DateAdp_.parse_gplx("2001-01-01 00:00:00.000"));
|
fx.tst_MsgStr(fx.msg_(String_.Ary("Date_", "Now")), DateAdp_.parse_gplx("2001-01-01 00:00:00.000"));
|
||||||
|
@ -132,7 +132,7 @@ public abstract class IoEngine_fil_basic_base {
|
|||||||
@Test @gplx.Virtual public void UpdateFilModifiedTime() {
|
@Test @gplx.Virtual public void UpdateFilModifiedTime() {
|
||||||
fx.run_SaveFilText(fil, "text");
|
fx.run_SaveFilText(fil, "text");
|
||||||
|
|
||||||
DateAdp time = Tfds.Now_time0_add_min(10);
|
DateAdp time = Datetime_now.Dflt_add_min_(10);
|
||||||
engine.UpdateFilModifiedTime(fil, time);
|
engine.UpdateFilModifiedTime(fil, time);
|
||||||
fx.tst_QueryFil_modifiedTime(fil, time);
|
fx.tst_QueryFil_modifiedTime(fil, time);
|
||||||
}
|
}
|
||||||
|
@ -19,23 +19,24 @@ package gplx.dbs; import gplx.*;
|
|||||||
import gplx.dbs.sqls.*; import gplx.dbs.sqls.itms.*;
|
import gplx.dbs.sqls.*; import gplx.dbs.sqls.itms.*;
|
||||||
public class Db_attach_mgr {
|
public class Db_attach_mgr {
|
||||||
private Db_conn main_conn; private Io_url main_conn_url;
|
private Db_conn main_conn; private Io_url main_conn_url;
|
||||||
private final Ordered_hash others_hash = Ordered_hash_.New();
|
private final Ordered_hash links_hash = Ordered_hash_.New();
|
||||||
private final List_adp attach_list = List_adp_.New();
|
private final List_adp attach_list = List_adp_.New();
|
||||||
public Db_attach_mgr() {}
|
public Db_attach_mgr() {}
|
||||||
public Db_attach_mgr(Db_conn main_conn, Db_attach_itm... others_ary) {
|
public Db_attach_mgr(Db_conn main_conn, Db_attach_itm... links_ary) {
|
||||||
this.Conn_main_(main_conn);
|
this.Conn_main_(main_conn);
|
||||||
this.Conn_others_(others_ary);
|
this.Conn_links_(links_ary);
|
||||||
}
|
}
|
||||||
|
public Db_conn Conn_main() {return main_conn;}
|
||||||
public Db_attach_mgr Conn_main_(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());
|
this.main_conn = conn; this.main_conn_url = Db_conn_info_.To_url(conn.Conn_info());
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
public Db_attach_mgr Conn_others_(Db_attach_itm... itms_ary) {
|
public Db_attach_mgr Conn_links_(Db_attach_itm... itms_ary) {
|
||||||
others_hash.Clear();
|
links_hash.Clear();
|
||||||
int len = itms_ary.length;
|
int len = itms_ary.length;
|
||||||
for (int i = 0; i < len; ++i) {
|
for (int i = 0; i < len; ++i) {
|
||||||
Db_attach_itm itm = itms_ary[i];
|
Db_attach_itm itm = itms_ary[i];
|
||||||
others_hash.Add(itm.Key, itm);
|
links_hash.Add(itm.Key, itm);
|
||||||
}
|
}
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
@ -56,9 +57,9 @@ public class Db_attach_mgr {
|
|||||||
}
|
}
|
||||||
public String Resolve_sql(String sql) {
|
public String Resolve_sql(String sql) {
|
||||||
attach_list.Clear();
|
attach_list.Clear();
|
||||||
int hash_len = others_hash.Count();
|
int hash_len = links_hash.Count();
|
||||||
for (int i = 0; i < hash_len; ++i) {
|
for (int i = 0; i < hash_len; ++i) {
|
||||||
Db_attach_itm attach_itm = (Db_attach_itm)others_hash.Get_at(i);
|
Db_attach_itm attach_itm = (Db_attach_itm)links_hash.Get_at(i);
|
||||||
String tkn = "<" + attach_itm.Key + ">";
|
String tkn = "<" + attach_itm.Key + ">";
|
||||||
if (String_.Has(sql, tkn)) {
|
if (String_.Has(sql, tkn)) {
|
||||||
Io_url attach_url = attach_itm.Url;
|
Io_url attach_url = attach_itm.Url;
|
||||||
@ -104,7 +105,7 @@ public class Db_attach_mgr {
|
|||||||
Sql_tbl_itm from_tbl = (Sql_tbl_itm)from_tbls.Get_at(i);
|
Sql_tbl_itm from_tbl = (Sql_tbl_itm)from_tbls.Get_at(i);
|
||||||
String from_tbl_db = from_tbl.Db;
|
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
|
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));
|
Db_attach_itm attach_itm = (Db_attach_itm)links_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"
|
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;
|
from_tbl.Db_enabled = false;
|
||||||
else
|
else
|
||||||
|
@ -19,10 +19,10 @@ package gplx.dbs.diffs; import gplx.*; import gplx.dbs.*;
|
|||||||
import gplx.dbs.diffs.itms.*;
|
import gplx.dbs.diffs.itms.*;
|
||||||
import gplx.dbs.diffs.builds.*;
|
import gplx.dbs.diffs.builds.*;
|
||||||
public class Gdif_core {
|
public class Gdif_core {
|
||||||
private final Db_conn conn;
|
private final Db_conn conn;
|
||||||
private final Gdif_job_tbl job_tbl;
|
private final Gdif_job_tbl job_tbl;
|
||||||
private final Gdif_cmd_tbl cmd_tbl;
|
private final Gdif_cmd_tbl cmd_tbl;
|
||||||
private final Gdif_txn_tbl txn_tbl;
|
private final Gdif_txn_tbl txn_tbl;
|
||||||
public Gdif_core(Db_conn conn) {
|
public Gdif_core(Db_conn conn) {
|
||||||
this.conn = conn;
|
this.conn = conn;
|
||||||
this.db = new Gdif_db(conn);
|
this.db = new Gdif_db(conn);
|
||||||
@ -30,10 +30,10 @@ public class Gdif_core {
|
|||||||
this.cmd_tbl = db.Cmd_tbl();
|
this.cmd_tbl = db.Cmd_tbl();
|
||||||
this.txn_tbl = db.Txn_tbl();
|
this.txn_tbl = db.Txn_tbl();
|
||||||
}
|
}
|
||||||
public Gdif_db Db() {return db;} private final Gdif_db db;
|
public Gdif_db Db() {return db;} private final Gdif_db db;
|
||||||
public Gdif_job_itm New_job(String name, String made_by) {
|
public Gdif_job_itm New_job(String name, String made_by) {
|
||||||
int job_id = conn.Sys_mgr().Autonum_next(job_tbl.Tbl_name(), job_tbl.Fld_job_id());
|
int job_id = conn.Sys_mgr().Autonum_next(job_tbl.Tbl_name(), job_tbl.Fld_job_id());
|
||||||
return job_tbl.Insert(job_id, name, made_by, DateAdp_.Now().XtoUtc(), "");
|
return job_tbl.Insert(job_id, name, made_by, Datetime_now.Get().XtoUtc(), "");
|
||||||
}
|
}
|
||||||
public Gdif_cmd_itm New_cmd(Gdif_bldr_ctx ctx, int tid) {
|
public Gdif_cmd_itm New_cmd(Gdif_bldr_ctx ctx, int tid) {
|
||||||
ctx.Cur_cmd_count++;
|
ctx.Cur_cmd_count++;
|
||||||
|
@ -57,7 +57,7 @@ public class Db_cmd_backup implements Gfo_invk {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
@gplx.Internal protected Db_cmd_backup InitVars() {
|
@gplx.Internal protected Db_cmd_backup InitVars() {
|
||||||
String dteStr = DateAdp_.Now().XtoStr_fmt(dteFmt);
|
String dteStr = Datetime_now.Get().XtoStr_fmt(dteFmt);
|
||||||
bkpFilName = String_.Format(bkpFilNameFmt, dbName, dteStr);
|
bkpFilName = String_.Format(bkpFilNameFmt, dbName, dteStr);
|
||||||
bkpFil = bkpDir.GenSubFil(bkpFilName);
|
bkpFil = bkpDir.GenSubFil(bkpFilName);
|
||||||
cmdText = String_.Format("\"{0}\" -u {1} -p{2} {3} > {4}", exeUrl.Xto_api(), usr, pwd, dbName, bkpFil.Xto_api());
|
cmdText = String_.Format("\"{0}\" -u {1} -p{2} {3} > {4}", exeUrl.Xto_api(), usr, pwd, dbName, bkpFil.Xto_api());
|
||||||
|
@ -19,7 +19,7 @@ package gplx.dbs.utls; import gplx.*; import gplx.dbs.*;
|
|||||||
import org.junit.*;
|
import org.junit.*;
|
||||||
public class Db_cmd_backup_tst {
|
public class Db_cmd_backup_tst {
|
||||||
@Test public void Basic() {
|
@Test public void Basic() {
|
||||||
Tfds.Now_enabled_y_();
|
Datetime_now.Manual_y_();
|
||||||
Db_cmd_backup bkpWkr = Db_cmd_backup.new_()
|
Db_cmd_backup bkpWkr = Db_cmd_backup.new_()
|
||||||
.ExeUrl_(Io_url_.new_any_("C:\\mysql\\mysqldump.exe"))
|
.ExeUrl_(Io_url_.new_any_("C:\\mysql\\mysqldump.exe"))
|
||||||
.BkpDir_(Io_url_.new_any_("C:\\bkp\\"))
|
.BkpDir_(Io_url_.new_any_("C:\\bkp\\"))
|
||||||
|
@ -163,7 +163,7 @@ public class SqliteDbMain {
|
|||||||
);
|
);
|
||||||
stat.executeUpdate(sql);
|
stat.executeUpdate(sql);
|
||||||
|
|
||||||
Console_adp__sys.Instance.Write_str_w_nl(DateAdp_.Now().XtoStr_fmt_yyyyMMdd_HHmmss_fff());
|
Console_adp__sys.Instance.Write_str_w_nl(Datetime_now.Get().XtoStr_fmt_yyyyMMdd_HHmmss_fff());
|
||||||
// stat.executeUpdate("BEGIN TRANSACTION");
|
// stat.executeUpdate("BEGIN TRANSACTION");
|
||||||
stat.executeUpdate("PRAGMA synchronous=OFF");
|
stat.executeUpdate("PRAGMA synchronous=OFF");
|
||||||
stat.executeUpdate("PRAGMA count_changes=OFF");
|
stat.executeUpdate("PRAGMA count_changes=OFF");
|
||||||
|
@ -20,7 +20,7 @@ import gplx.gfui.draws.*; import gplx.gfui.ipts.*; import gplx.gfui.layouts.*; i
|
|||||||
public class GfuiStatusBoxBnd implements Gfo_invk {
|
public class GfuiStatusBoxBnd implements Gfo_invk {
|
||||||
public GfuiStatusBox Box() {return statusBox;} GfuiStatusBox statusBox = GfuiStatusBox_.new_("statusBox");
|
public GfuiStatusBox Box() {return statusBox;} GfuiStatusBox statusBox = GfuiStatusBox_.new_("statusBox");
|
||||||
void ShowTime() {
|
void ShowTime() {
|
||||||
statusBox.ExecUsrMsg(UsrMsgWkr_.Type_Note, UsrMsg.new_(DateAdp_.Now().XtoStr_gplx_long()));
|
statusBox.ExecUsrMsg(UsrMsgWkr_.Type_Note, UsrMsg.new_(Datetime_now.Get().XtoStr_gplx_long()));
|
||||||
}
|
}
|
||||||
public 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_ShowTime)) ShowTime();
|
if (ctx.Match(k, Invk_ShowTime)) ShowTime();
|
||||||
|
@ -110,7 +110,7 @@ public class GfuiWin extends GfuiElemBase {
|
|||||||
else if (ctx.Match(k, Evt_Opened)) Opened_cbk();
|
else if (ctx.Match(k, Evt_Opened)) Opened_cbk();
|
||||||
else if (ctx.Match(k, StopAppByAltF4_evt)) StopAppByAltF4(IptEventData.ctx_(ctx, m));
|
else if (ctx.Match(k, StopAppByAltF4_evt)) StopAppByAltF4(IptEventData.ctx_(ctx, m));
|
||||||
else if (ctx.Match(k, Invk_ShowFocusOwner)) GfuiEnv_.ShowMsg(GfuiFocusMgr.Instance.FocusedElem().Key_of_GfuiElem());
|
else if (ctx.Match(k, Invk_ShowFocusOwner)) GfuiEnv_.ShowMsg(GfuiFocusMgr.Instance.FocusedElem().Key_of_GfuiElem());
|
||||||
else if (ctx.Match(k, GfuiStatusBoxBnd.Invk_ShowTime)) {UsrDlg_.Instance.Note(UsrMsg.new_(DateAdp_.Now().toString())); return this;}
|
else if (ctx.Match(k, GfuiStatusBoxBnd.Invk_ShowTime)) {UsrDlg_.Instance.Note(UsrMsg.new_(Datetime_now.Get().toString())); return this;}
|
||||||
else if (ctx.MatchIn(k, Invk_Close, GfuiQuitMode.Destroy_cmd)) Close();
|
else if (ctx.MatchIn(k, Invk_Close, GfuiQuitMode.Destroy_cmd)) Close();
|
||||||
else if (ctx.MatchIn(k, Invk_Hide, GfuiQuitMode.Suspend_cmd)) Hide();
|
else if (ctx.MatchIn(k, Invk_Hide, GfuiQuitMode.Suspend_cmd)) Hide();
|
||||||
else {
|
else {
|
||||||
|
@ -1,12 +1,12 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<classpath>
|
<classpath>
|
||||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
|
<classpathentry exported="true" kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
|
||||||
<classpathentry combineaccessrules="false" kind="src" path="/100_core"/>
|
<classpathentry combineaccessrules="false" exported="true" kind="src" path="/100_core"/>
|
||||||
<classpathentry combineaccessrules="false" kind="src" path="/140_dbs"/>
|
<classpathentry combineaccessrules="false" exported="true" kind="src" path="/140_dbs"/>
|
||||||
<classpathentry combineaccessrules="false" kind="src" path="/150_gfui"/>
|
<classpathentry combineaccessrules="false" exported="true" kind="src" path="/150_gfui"/>
|
||||||
<classpathentry kind="src" path="src"/>
|
<classpathentry kind="src" path="src"/>
|
||||||
<classpathentry kind="lib" path="lib/jtidy_xowa.jar"/>
|
<classpathentry exported="true" kind="lib" path="lib/jtidy_xowa.jar"/>
|
||||||
<classpathentry kind="lib" path="lib/luaj_xowa.jar"/>
|
<classpathentry exported="true" kind="lib" path="lib/luaj_xowa.jar"/>
|
||||||
<classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/4"/>
|
<classpathentry exported="true" kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/4"/>
|
||||||
<classpathentry kind="output" path="bin"/>
|
<classpathentry kind="output" path="bin"/>
|
||||||
</classpath>
|
</classpath>
|
||||||
|
@ -22,5 +22,5 @@ public class Bry_comparer implements ComparerAble {
|
|||||||
byte[] lhs = (byte[])lhsObj, rhs = (byte[])rhsObj;
|
byte[] lhs = (byte[])lhsObj, rhs = (byte[])rhsObj;
|
||||||
return Bry_.Compare(lhs, 0, lhs.length, rhs, 0, rhs.length);
|
return Bry_.Compare(lhs, 0, lhs.length, rhs, 0, rhs.length);
|
||||||
}
|
}
|
||||||
public static final Bry_comparer Instance = new Bry_comparer(); Bry_comparer() {}
|
public static final Bry_comparer Instance = new Bry_comparer(); Bry_comparer() {} // TS.static
|
||||||
}
|
}
|
||||||
|
@ -35,7 +35,7 @@ class Gfo_cache_itm_comparer implements gplx.core.lists.ComparerAble {
|
|||||||
Gfo_cache_itm rhs = (Gfo_cache_itm)rhsObj;
|
Gfo_cache_itm rhs = (Gfo_cache_itm)rhsObj;
|
||||||
return Long_.Compare(lhs.Touched(), rhs.Touched());
|
return Long_.Compare(lhs.Touched(), rhs.Touched());
|
||||||
}
|
}
|
||||||
public static final Gfo_cache_itm_comparer Touched_asc = new Gfo_cache_itm_comparer();
|
public static final Gfo_cache_itm_comparer Touched_asc = new Gfo_cache_itm_comparer(); // TS.static
|
||||||
}
|
}
|
||||||
class Io_url_exists_mgr {
|
class Io_url_exists_mgr {
|
||||||
private gplx.core.caches.Gfo_cache_mgr_bry cache_mgr = new gplx.core.caches.Gfo_cache_mgr_bry();
|
private gplx.core.caches.Gfo_cache_mgr_bry cache_mgr = new gplx.core.caches.Gfo_cache_mgr_bry();
|
||||||
|
@ -18,7 +18,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
package gplx.core.flds; import gplx.*; import gplx.core.*;
|
package gplx.core.flds; import gplx.*; import gplx.core.*;
|
||||||
import gplx.core.encoders.*;
|
import gplx.core.encoders.*;
|
||||||
public class Gfo_fld_rdr extends Gfo_fld_base {
|
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();
|
||||||
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 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 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;
|
public int Fld_bgn() {return fld_bgn;} public Gfo_fld_rdr Fld_bgn_(int v) {fld_bgn = v; return this;} private int fld_bgn;
|
||||||
@ -122,4 +122,5 @@ public class Gfo_fld_rdr extends Gfo_fld_base {
|
|||||||
public Gfo_fld_rdr Ctor_sql() {return (Gfo_fld_rdr)super.Ctor_sql_base();}
|
public Gfo_fld_rdr Ctor_sql() {return (Gfo_fld_rdr)super.Ctor_sql_base();}
|
||||||
public static Gfo_fld_rdr xowa_() {return new Gfo_fld_rdr().Ctor_xdat();}
|
public static Gfo_fld_rdr xowa_() {return new Gfo_fld_rdr().Ctor_xdat();}
|
||||||
public static Gfo_fld_rdr sql_() {return new Gfo_fld_rdr().Ctor_sql();}
|
public static Gfo_fld_rdr sql_() {return new Gfo_fld_rdr().Ctor_sql();}
|
||||||
|
private static final byte[] Bry_nil = Bry_.new_a7("\\0");
|
||||||
}
|
}
|
||||||
|
@ -25,5 +25,5 @@ class Io_sort_filCmd_null implements Io_sort_filCmd {
|
|||||||
public void Bfr_add(Io_line_rdr stream) {}
|
public void Bfr_add(Io_line_rdr stream) {}
|
||||||
public void Fil_bgn(Io_line_rdr stream) {}
|
public void Fil_bgn(Io_line_rdr stream) {}
|
||||||
public void Fil_end() {}
|
public void Fil_end() {}
|
||||||
public static final Io_sort_filCmd_null Instance = new Io_sort_filCmd_null(); Io_sort_filCmd_null() {}
|
public static final Io_sort_filCmd_null Instance = new Io_sort_filCmd_null(); Io_sort_filCmd_null() {} // TS.static
|
||||||
}
|
}
|
||||||
|
@ -19,8 +19,7 @@ package gplx.core.ios; import gplx.*; import gplx.core.*;
|
|||||||
public class Io_sort_split_itm_sorter implements gplx.core.lists.ComparerAble {
|
public class Io_sort_split_itm_sorter implements gplx.core.lists.ComparerAble {
|
||||||
public int compare(Object lhsObj, Object rhsObj) {
|
public int compare(Object lhsObj, Object rhsObj) {
|
||||||
Io_sort_split_itm lhs = (Io_sort_split_itm)lhsObj, rhs = (Io_sort_split_itm)rhsObj;
|
Io_sort_split_itm lhs = (Io_sort_split_itm)lhsObj, rhs = (Io_sort_split_itm)rhsObj;
|
||||||
// Tfds.Dbg(String_.new_u8(lhs.Bfr(), lhs.Key_bgn(), lhs.Key_end()), String_.new_u8(rhs.Bfr(), rhs.Key_bgn(), rhs.Key_end()));
|
|
||||||
return Bry_.Compare(lhs.Bfr(), lhs.Key_bgn(), lhs.Key_end(), rhs.Bfr(), rhs.Key_bgn(), rhs.Key_end());
|
return Bry_.Compare(lhs.Bfr(), lhs.Key_bgn(), lhs.Key_end(), rhs.Bfr(), rhs.Key_bgn(), rhs.Key_end());
|
||||||
}
|
}
|
||||||
public static final Io_sort_split_itm_sorter Instance = new Io_sort_split_itm_sorter(); Io_sort_split_itm_sorter() {}
|
public static final Io_sort_split_itm_sorter Instance = new Io_sort_split_itm_sorter(); Io_sort_split_itm_sorter() {} // TS.static
|
||||||
}
|
}
|
||||||
|
@ -16,21 +16,21 @@ You should have received a copy of the GNU Affero General Public License
|
|||||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
package gplx.core.primitives; import gplx.*; import gplx.core.*;
|
package gplx.core.primitives; import gplx.*; import gplx.core.*;
|
||||||
public class Number_parser {
|
public class Gfo_number_parser {
|
||||||
public int Rv_as_int() {return (int)num_val;} private long num_val = 0;
|
public int Rv_as_int() {return (int)num_val;} private long num_val = 0;
|
||||||
public long Rv_as_long() {return num_val;}
|
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 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 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_err() {return has_err;} private boolean has_err;
|
||||||
public boolean Has_frac() {return has_frac;} private boolean has_frac;
|
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 boolean Hex_enabled() {return hex_enabled;} public Gfo_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 Gfo_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;
|
public Gfo_number_parser Ignore_space_at_end_y_() {this.ignore_space_at_end = true; return this;} private boolean ignore_space_at_end;
|
||||||
public void Clear() {
|
public void Clear() {
|
||||||
ignore_chars = null;
|
ignore_chars = null;
|
||||||
}
|
}
|
||||||
public Number_parser Parse(byte[] src) {return Parse(src, 0, src.length);}
|
public Gfo_number_parser Parse(byte[] src) {return Parse(src, 0, src.length);}
|
||||||
public Number_parser Parse(byte[] ary, int bgn, int end) {
|
public Gfo_number_parser Parse(byte[] ary, int bgn, int end) {
|
||||||
int loop_bgn = end - 1, loop_end = bgn - 1, exp_multiplier = 1, factor = 10;
|
int loop_bgn = end - 1, loop_end = bgn - 1, exp_multiplier = 1, factor = 10;
|
||||||
long multiplier = 1, frc_multiplier = 1;
|
long multiplier = 1, frc_multiplier = 1;
|
||||||
num_val = 0; dec_val = null; boolean comma_nil = true;
|
num_val = 0; dec_val = null; boolean comma_nil = true;
|
||||||
@ -183,5 +183,5 @@ public class Number_parser {
|
|||||||
}
|
}
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
private Number_parser Has_err_y_() {has_err = true; return this;}
|
private Gfo_number_parser Has_err_y_() {has_err = true; return this;}
|
||||||
}
|
}
|
@ -17,9 +17,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
*/
|
*/
|
||||||
package gplx.core.primitives; import gplx.*; import gplx.core.*;
|
package gplx.core.primitives; import gplx.*; import gplx.core.*;
|
||||||
import org.junit.*;
|
import org.junit.*;
|
||||||
public class Number_parser_tst {
|
public class Gfo_number_parser_tst {
|
||||||
private final Number_parser_fxt fxt = new Number_parser_fxt();
|
@Before public void init() {fxt.Clear();} private final Gfo_number_parser_fxt fxt = new Gfo_number_parser_fxt();
|
||||||
@Before public void init() {fxt.Clear();}
|
|
||||||
@Test public void Integer() {
|
@Test public void Integer() {
|
||||||
fxt.Test_int("1", 1);
|
fxt.Test_int("1", 1);
|
||||||
fxt.Test_int("1234", 1234);
|
fxt.Test_int("1234", 1234);
|
||||||
@ -71,8 +70,8 @@ public class Number_parser_tst {
|
|||||||
fxt.Test_err("1\r" , true);
|
fxt.Test_err("1\r" , true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
class Number_parser_fxt {
|
class Gfo_number_parser_fxt {
|
||||||
private final Number_parser parser = new Number_parser();
|
private final Gfo_number_parser parser = new Gfo_number_parser();
|
||||||
public void Clear() {parser.Clear();}
|
public void Clear() {parser.Clear();}
|
||||||
public void Init_ignore(String chars) {parser.Ignore_chars_(Bry_.new_a7(chars));}
|
public void Init_ignore(String chars) {parser.Ignore_chars_(Bry_.new_a7(chars));}
|
||||||
public void Test_int(String raw, int expd) {
|
public void Test_int(String raw, int expd) {
|
@ -15,10 +15,15 @@ GNU Affero General Public License for more details.
|
|||||||
You should have received a copy of the GNU Affero General Public License
|
You should have received a copy of the GNU Affero General Public License
|
||||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
package gplx.xowa.wikis.ctgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*;
|
package gplx.core.primitives; import gplx.*; import gplx.core.*;
|
||||||
import org.junit.*;
|
public class Hash_adp__primitive {
|
||||||
public class Xoctg_view_ctg_tst {
|
private final Hash_adp hash = Hash_adp_.New();
|
||||||
// @Before public void init() {fxt.Clear();} private Xoctg_idx_mgr_fxt fxt = new Xoctg_idx_mgr_fxt();
|
public byte Get_by_str_or_max(String key) {
|
||||||
@Test public void Basic() {
|
Byte_obj_val rv = (Byte_obj_val)hash.Get_by(key);
|
||||||
|
return rv == null ? Byte_.Max_value_127 : rv.Val();
|
||||||
|
}
|
||||||
|
public Hash_adp__primitive Add_byte(String key, byte val) {
|
||||||
|
hash.Add(key, Byte_obj_val.new_(val));
|
||||||
|
return this;
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -17,7 +17,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
*/
|
*/
|
||||||
package gplx.core.primitives; import gplx.*; import gplx.core.*;
|
package gplx.core.primitives; import gplx.*; import gplx.core.*;
|
||||||
public class Int_ary_parser extends Obj_ary_parser_base {
|
public class Int_ary_parser extends Obj_ary_parser_base {
|
||||||
Number_parser parser = new Number_parser(); int[] ary; int ary_idx;
|
private final Gfo_number_parser parser = new Gfo_number_parser();
|
||||||
|
private int[] ary; private int ary_idx;
|
||||||
public int[] Parse_ary(String str, byte dlm) {byte[] bry = Bry_.new_u8(str); return Parse_ary(bry, 0, bry.length, dlm);}
|
public int[] Parse_ary(String str, byte dlm) {byte[] bry = Bry_.new_u8(str); return Parse_ary(bry, 0, bry.length, dlm);}
|
||||||
public int[] Parse_ary(byte[] bry, int bgn, int end, byte dlm) {
|
public int[] Parse_ary(byte[] bry, int bgn, int end, byte dlm) {
|
||||||
Parse_core(bry, bgn, end, dlm, Byte_ascii.Null);
|
Parse_core(bry, bgn, end, dlm, Byte_ascii.Null);
|
||||||
@ -35,5 +36,4 @@ public class Int_ary_parser extends Obj_ary_parser_base {
|
|||||||
parser.Parse(bry, bgn, end); if (parser.Has_err() || parser.Has_frac()) throw Err_.new_wo_type("failed to parse number", "val", String_.new_u8(bry, bgn, end));
|
parser.Parse(bry, bgn, end); if (parser.Has_err() || parser.Has_frac()) throw Err_.new_wo_type("failed to parse number", "val", String_.new_u8(bry, bgn, end));
|
||||||
ary[ary_idx++] = parser.Rv_as_int();
|
ary[ary_idx++] = parser.Rv_as_int();
|
||||||
}
|
}
|
||||||
public static final Int_ary_parser Instance = new Int_ary_parser();
|
|
||||||
}
|
}
|
||||||
|
@ -16,13 +16,15 @@ You should have received a copy of the GNU Affero General Public License
|
|||||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
package gplx.core.primitives; import gplx.*; import gplx.core.*;
|
package gplx.core.primitives; import gplx.*; import gplx.core.*;
|
||||||
import org.junit.*;
|
import org.junit.*; import gplx.core.tests.*;
|
||||||
public class Int_ary_parser_tst {
|
public class Int_ary_parser_tst {
|
||||||
@Test public void Many() {tst_ints("1,2,3,4,5" , 0, 9, Int_.Ary(1, 2, 3, 4, 5));}
|
private final Int_ary_parser_fxt fxt = new Int_ary_parser_fxt();
|
||||||
@Test public void One() {tst_ints("1" , 0, 1, Int_.Ary(1));}
|
@Test public void Many() {fxt.Test__Parse_ary("1,2,3,4,5" , 0, 9, Int_.Ary(1, 2, 3, 4, 5));}
|
||||||
@Test public void None() {tst_ints("" , 0, 0, Int_.Ary());}
|
@Test public void One() {fxt.Test__Parse_ary("1" , 0, 1, Int_.Ary(1));}
|
||||||
private void tst_ints(String raw, int bgn, int end, int[] expd) {
|
@Test public void None() {fxt.Test__Parse_ary("" , 0, 0, Int_.Ary());}
|
||||||
int[] actl = Int_ary_parser.Instance.Parse_ary(Bry_.new_a7(raw), bgn, end, Byte_ascii.Comma);
|
}
|
||||||
Tfds.Eq_ary(expd, actl);
|
class Int_ary_parser_fxt {
|
||||||
|
public void Test__Parse_ary(String raw, int bgn, int end, int[] expd) {
|
||||||
|
Gftest.Eq__ary(expd, new Int_ary_parser().Parse_ary(Bry_.new_a7(raw), bgn, end, Byte_ascii.Comma), "parse_ary failed");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -50,7 +50,7 @@ public class Int_pool {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (available_len == uid_max) {
|
if (available_len == uid_max) {
|
||||||
available_list.Add(Int_obj_val.new_(v));
|
available_list.Add(new Int_obj_val(v));
|
||||||
available_list.Sort();
|
available_list.Sort();
|
||||||
for (int i = 0; i < available_len; ++i) {
|
for (int i = 0; i < available_len; ++i) {
|
||||||
Int_obj_val itm = (Int_obj_val)available_list.Get_at(i);
|
Int_obj_val itm = (Int_obj_val)available_list.Get_at(i);
|
||||||
@ -62,7 +62,7 @@ public class Int_pool {
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
// dbg_bfr.Add_str("-:a:").Add_int_variable(v).Add_byte_nl();
|
// dbg_bfr.Add_str("-:a:").Add_int_variable(v).Add_byte_nl();
|
||||||
available_list.Add(Int_obj_val.new_(v));
|
available_list.Add(new Int_obj_val(v));
|
||||||
++available_len;
|
++available_len;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -29,7 +29,7 @@ public class Db_tbl_copy {
|
|||||||
trg_conn.Meta_tbl_remake(Dbmeta_tbl_itm.New(trg_tbl, tbl.Flds().To_ary(), tbl.Idxs().To_ary()));
|
trg_conn.Meta_tbl_remake(Dbmeta_tbl_itm.New(trg_tbl, tbl.Flds().To_ary(), tbl.Idxs().To_ary()));
|
||||||
|
|
||||||
// do copy
|
// do copy
|
||||||
attach_mgr.Conn_main_(trg_conn).Conn_others_(new Db_attach_itm("src_db", src_conn));
|
attach_mgr.Conn_main_(trg_conn).Conn_links_(new Db_attach_itm("src_db", src_conn));
|
||||||
attach_mgr.Exec_sql(Bld_sql(tbl, src_tbl, trg_tbl));
|
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) {
|
public String Bld_sql(Dbmeta_tbl_itm tbl, String src_tbl, String trg_tbl) {
|
||||||
|
@ -18,7 +18,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
package gplx.langs.gfs; import gplx.*; import gplx.langs.*;
|
package gplx.langs.gfs; import gplx.*; import gplx.langs.*;
|
||||||
import gplx.core.gfo_regys.*;
|
import gplx.core.gfo_regys.*;
|
||||||
public class Gfs_msg_bldr implements GfoMsgParser {
|
public class Gfs_msg_bldr implements GfoMsgParser {
|
||||||
private final Gfs_parser parser = new Gfs_parser();
|
private final Gfs_parser parser = new Gfs_parser();
|
||||||
public GfoMsg ParseToMsg(String s) {return Bld(s);}
|
public GfoMsg ParseToMsg(String s) {return Bld(s);}
|
||||||
public GfoMsg Bld(String src) {return Bld(Bry_.new_u8(src));}
|
public GfoMsg Bld(String src) {return Bld(Bry_.new_u8(src));}
|
||||||
public GfoMsg Bld(byte[] src) {
|
public GfoMsg Bld(byte[] src) {
|
||||||
@ -45,6 +45,6 @@ public class Gfs_msg_bldr implements GfoMsgParser {
|
|||||||
}
|
}
|
||||||
return rv;
|
return rv;
|
||||||
}
|
}
|
||||||
public static final Gfs_msg_bldr Instance = new Gfs_msg_bldr(); Gfs_msg_bldr() {}
|
public static final Gfs_msg_bldr Instance = new Gfs_msg_bldr(); Gfs_msg_bldr() {} // TS.static
|
||||||
public static final String Tkn_mutator = "_";
|
public static final String Tkn_mutator = "_";
|
||||||
}
|
}
|
||||||
|
@ -18,11 +18,14 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
package gplx.langs.htmls; import gplx.*; import gplx.langs.*;
|
package gplx.langs.htmls; import gplx.*; import gplx.langs.*;
|
||||||
import gplx.core.primitives.*; import gplx.core.btries.*; import gplx.langs.htmls.encoders.*;
|
import gplx.core.primitives.*; import gplx.core.btries.*; import gplx.langs.htmls.encoders.*;
|
||||||
public class Gfh_utl {
|
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;
|
||||||
public static String Encode_id_as_str(byte[] key) {return String_.new_u8(Encode_id_as_bry(key));}
|
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) {
|
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);
|
Bry_bfr tmp_bfr = Bry_bfr_.Get();
|
||||||
return encoder_id.Encode(escaped);
|
try {
|
||||||
|
byte[] escaped = Escape_html_as_bry(tmp_bfr, key, Bool_.N, Bool_.N, Bool_.N, Bool_.Y, Bool_.Y);
|
||||||
|
return encoder_id.Encode(escaped);
|
||||||
|
} finally {tmp_bfr.Mkr_rls();}
|
||||||
}
|
}
|
||||||
public static String Escape_for_atr_val_as_str(Bry_bfr bfr, byte quote_byte, String s) {return String_.new_u8(Escape_for_atr_val_as_bry(bfr, quote_byte, s));}
|
public static String Escape_for_atr_val_as_str(Bry_bfr bfr, byte quote_byte, String s) {return String_.new_u8(Escape_for_atr_val_as_bry(bfr, quote_byte, s));}
|
||||||
public static byte[] Escape_for_atr_val_as_bry(Bry_bfr bfr, byte quote_byte, String s) {
|
public static byte[] Escape_for_atr_val_as_bry(Bry_bfr bfr, byte quote_byte, String s) {
|
||||||
@ -58,9 +61,16 @@ public class Gfh_utl {
|
|||||||
}
|
}
|
||||||
public static String Escape_html_as_str(String v) {return String_.new_u8(Escape_html_as_bry(Bry_.new_u8(v)));}
|
public static String Escape_html_as_str(String v) {return String_.new_u8(Escape_html_as_bry(Bry_.new_u8(v)));}
|
||||||
public static byte[] Escape_html_as_bry(Bry_bfr tmp, byte[] bry) {return Escape_html(false, tmp, bry, 0, bry.length, true, true, true, true, true);}
|
public static byte[] Escape_html_as_bry(Bry_bfr tmp, byte[] bry) {return Escape_html(false, tmp, bry, 0, bry.length, true, true, true, true, true);}
|
||||||
public static byte[] Escape_html_as_bry(byte[] bry) {return Escape_html(false, tmp_bfr, bry, 0, bry.length, true, true, true, true, true);}
|
public static byte[] Escape_html_as_bry(byte[] bry) {
|
||||||
public static byte[] Escape_html_as_bry(byte[] bry, boolean lt, boolean gt, boolean amp, boolean quote, boolean apos)
|
Bry_bfr tmp_bfr = Bry_bfr_.Get();
|
||||||
{return Escape_html(false, tmp_bfr, bry, 0, bry.length, lt, gt, amp, quote, apos);}
|
try {return Escape_html(false, tmp_bfr, bry, 0, bry.length, true, true, true, true, true);}
|
||||||
|
finally {tmp_bfr.Mkr_rls();}
|
||||||
|
}
|
||||||
|
public static byte[] Escape_html_as_bry(byte[] bry, boolean lt, boolean gt, boolean amp, boolean quote, boolean apos) {
|
||||||
|
Bry_bfr tmp_bfr = Bry_bfr_.Get();
|
||||||
|
try {return Escape_html(false, tmp_bfr, bry, 0, bry.length, lt, gt, amp, quote, apos);}
|
||||||
|
finally {tmp_bfr.Mkr_rls();}
|
||||||
|
}
|
||||||
public static byte[] Escape_html_as_bry(Bry_bfr bfr, byte[] bry, boolean lt, boolean gt, boolean amp, boolean quote, boolean apos)
|
public static byte[] Escape_html_as_bry(Bry_bfr bfr, byte[] bry, boolean lt, boolean gt, boolean amp, boolean quote, boolean apos)
|
||||||
{return Escape_html(false, bfr, bry, 0, bry.length, lt, gt, amp, quote, apos);}
|
{return Escape_html(false, bfr, bry, 0, bry.length, lt, gt, amp, quote, apos);}
|
||||||
public static void Escape_html_to_bfr(Bry_bfr bfr, byte[] bry, int bgn, int end, boolean escape_lt, boolean escape_gt, boolean escape_amp, boolean escape_quote, boolean escape_apos) {
|
public static void Escape_html_to_bfr(Bry_bfr bfr, byte[] bry, int bgn, int end, boolean escape_lt, boolean escape_gt, boolean escape_amp, boolean escape_quote, boolean escape_apos) {
|
||||||
|
@ -53,7 +53,7 @@ public class Gfo_url_encoder_ {
|
|||||||
private static Gfo_url_encoder_mkr New__html_href_qarg() { // same as regular href encoder, but also do not encode qarg characters "?" and "="
|
private static Gfo_url_encoder_mkr New__html_href_qarg() { // same as regular href encoder, but also do not encode qarg characters "?" and "="
|
||||||
return New__html_href_mw(Bool_.Y).Init__same__many(Byte_ascii.Question, Byte_ascii.Eq);
|
return New__html_href_mw(Bool_.Y).Init__same__many(Byte_ascii.Question, Byte_ascii.Eq);
|
||||||
}
|
}
|
||||||
private static Gfo_url_encoder_mkr New__html_href_quotes() {// same as href encoder, but do not encode ?, =, #, +; also, don't encode "%" vals
|
public static Gfo_url_encoder_mkr New__html_href_quotes() {// same as href encoder, but do not encode ?, =, #, +; also, don't encode "%" vals
|
||||||
return new Gfo_url_encoder_mkr().Init(Byte_ascii.Percent).Init_common(Bool_.Y)
|
return new Gfo_url_encoder_mkr().Init(Byte_ascii.Percent).Init_common(Bool_.Y)
|
||||||
.Init__diff__one(Byte_ascii.Space, Byte_ascii.Underline)
|
.Init__diff__one(Byte_ascii.Space, Byte_ascii.Underline)
|
||||||
.Init__same__many
|
.Init__same__many
|
||||||
|
@ -24,7 +24,7 @@ public interface Gfo_url_encoder_itm {
|
|||||||
class Gfo_url_encoder_itm_same implements Gfo_url_encoder_itm {
|
class Gfo_url_encoder_itm_same implements Gfo_url_encoder_itm {
|
||||||
public int Encode(Bry_bfr bfr, byte[] src, int end, int idx, byte b) {bfr.Add_byte(b); return 0;}
|
public int Encode(Bry_bfr bfr, byte[] src, int end, int idx, byte b) {bfr.Add_byte(b); return 0;}
|
||||||
public int Decode(Bry_bfr bfr, byte[] src, int end, int idx, byte b, boolean fail_when_invalid) {bfr.Add_byte(b); return 0;}
|
public int Decode(Bry_bfr bfr, byte[] src, int end, int idx, byte b, boolean fail_when_invalid) {bfr.Add_byte(b); return 0;}
|
||||||
public static final Gfo_url_encoder_itm Instance = new Gfo_url_encoder_itm_same();
|
public static final Gfo_url_encoder_itm Instance = new Gfo_url_encoder_itm_same(); // TS.static
|
||||||
}
|
}
|
||||||
class Gfo_url_encoder_itm_diff implements Gfo_url_encoder_itm {
|
class Gfo_url_encoder_itm_diff implements Gfo_url_encoder_itm {
|
||||||
private final byte orig, repl;
|
private final byte orig, repl;
|
||||||
|
@ -33,7 +33,7 @@ public class Json_doc {
|
|||||||
public Json_nde Root_nde() {return root_nde;} private Json_nde root_nde;
|
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 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 Gfo_number_parser Utl_num_parser() {return utl_num_parser;} private final Gfo_number_parser utl_num_parser = new Gfo_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[] 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);}
|
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);}
|
||||||
public byte[] Get_val_as_bry_or(byte[][] qry_bry, byte[] or) {
|
public byte[] Get_val_as_bry_or(byte[][] qry_bry, byte[] or) {
|
||||||
|
@ -18,7 +18,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
package gplx.langs.jsons; import gplx.*; import gplx.langs.*;
|
package gplx.langs.jsons; import gplx.*; import gplx.langs.*;
|
||||||
import gplx.core.primitives.*;
|
import gplx.core.primitives.*;
|
||||||
public class Json_parser {
|
public class Json_parser {
|
||||||
private byte[] src; private int src_len, pos; private final Number_parser num_parser = new Number_parser();
|
private byte[] src; private int src_len, pos; private final Gfo_number_parser num_parser = new Gfo_number_parser();
|
||||||
public Json_factory Factory() {return factory;} private final Json_factory factory = new Json_factory();
|
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_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_by_apos(String s) {return Parse(Bry_.Replace(Bry_.new_u8(s), Byte_ascii.Apos, Byte_ascii.Quote));}
|
||||||
|
@ -29,7 +29,7 @@ public abstract class Json_parser__itm__base {
|
|||||||
this.keys = keys;
|
this.keys = keys;
|
||||||
this.keys_len = keys.length;
|
this.keys_len = keys.length;
|
||||||
for (int i = 0; i < keys_len; ++i)
|
for (int i = 0; i < keys_len; ++i)
|
||||||
hash.Add(Bry_.new_u8(keys[i]), Int_obj_val.new_(i));
|
hash.Add(Bry_.new_u8(keys[i]), new Int_obj_val(i));
|
||||||
this.atrs = new Json_kv[keys_len];
|
this.atrs = new Json_kv[keys_len];
|
||||||
}
|
}
|
||||||
public int Kv__int(Json_kv[] ary, int i) {return Bry_.To_int(ary[i].Val_as_bry());}
|
public int Kv__int(Json_kv[] ary, int i) {return Bry_.To_int(ary[i].Val_as_bry());}
|
||||||
|
@ -16,10 +16,8 @@ You should have received a copy of the GNU Affero General Public License
|
|||||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
package gplx.xowa; import gplx.*;
|
package gplx.xowa; import gplx.*;
|
||||||
import gplx.core.brys.*; import gplx.core.ios.*; import gplx.core.log_msgs.*;
|
import gplx.core.log_msgs.*;
|
||||||
import gplx.langs.htmls.encoders.*;
|
import gplx.xowa.guis.views.boots.*; import gplx.xowa.apps.boots.*;
|
||||||
import gplx.xowa.guis.views.boots.*;
|
|
||||||
import gplx.xowa.apps.boots.*; import gplx.xowa.apps.gfs.*;
|
|
||||||
public class Xoa_app_ {
|
public class Xoa_app_ {
|
||||||
public static void Run(String... args) {
|
public static void Run(String... args) {
|
||||||
Xoa_cmd_arg_mgr arg_mgr = Xoa_cmd_arg_mgr.new_();
|
Xoa_cmd_arg_mgr arg_mgr = Xoa_cmd_arg_mgr.new_();
|
||||||
@ -34,22 +32,17 @@ public class Xoa_app_ {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
public static final String Name = "xowa";
|
public static final String Name = "xowa";
|
||||||
public static final String Version = "3.7.4.1";
|
public static final String Version = "3.8.1.1";
|
||||||
public static String Build_date = "2012-12-30 00:00:00";
|
public static String Build_date = "2012-12-30 00:00:00";
|
||||||
public static String Op_sys_str;
|
public static String Op_sys_str;
|
||||||
public static String User_agent = "";
|
public static String User_agent = "";
|
||||||
public static final Gfo_msg_grp Nde = Gfo_msg_grp_.prj_(Name);
|
|
||||||
public static Gfo_usr_dlg Usr_dlg() {return usr_dlg;} public static void Usr_dlg_(Gfo_usr_dlg v) {usr_dlg = v;} private static Gfo_usr_dlg usr_dlg;
|
public static Gfo_usr_dlg Usr_dlg() {return usr_dlg;} public static void Usr_dlg_(Gfo_usr_dlg v) {usr_dlg = v;} private static Gfo_usr_dlg usr_dlg;
|
||||||
public static Bry_bfr_mkr Utl__bfr_mkr() {return utl__bry_bfr_mkr;} private static final Bry_bfr_mkr utl__bry_bfr_mkr = new Bry_bfr_mkr();
|
public static Gfo_usr_dlg New__usr_dlg__console() {
|
||||||
public static Io_stream_zip_mgr Utl__zip_mgr() {return utl__zip_mgr;} private static final Io_stream_zip_mgr utl__zip_mgr = new Io_stream_zip_mgr();
|
|
||||||
public static Xoa_gfs_mgr Gfs_mgr() {return gfs_mgr;} public static void Gfs_mgr_(Xoa_gfs_mgr v) {gfs_mgr = v;} private static Xoa_gfs_mgr gfs_mgr;
|
|
||||||
public static void Plog_none(String mod, String fmt) {
|
|
||||||
String msg = mod + ": " + fmt;
|
|
||||||
Xoa_app_.Usr_dlg().Plog_many("", "", msg);
|
|
||||||
}
|
|
||||||
public static Gfo_usr_dlg usr_dlg_console_() {
|
|
||||||
Gfo_usr_dlg rv = new Gfo_usr_dlg_base(new Gfo_usr_dlg__log_base(), Gfo_usr_dlg__gui_.Console);
|
Gfo_usr_dlg rv = new Gfo_usr_dlg_base(new Gfo_usr_dlg__log_base(), Gfo_usr_dlg__gui_.Console);
|
||||||
rv.Log_wkr().Queue_enabled_(true);
|
rv.Log_wkr().Queue_enabled_(true);
|
||||||
return rv;
|
return rv;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static final Gfo_msg_grp Nde = Gfo_msg_grp_.prj_(Name);
|
||||||
}
|
}
|
||||||
|
@ -22,12 +22,10 @@ public interface Xoa_page {
|
|||||||
Xoa_url Url(); byte[] Url_bry_safe();
|
Xoa_url Url(); byte[] Url_bry_safe();
|
||||||
Xoa_ttl Ttl();
|
Xoa_ttl Ttl();
|
||||||
Xopg_db_data Db();
|
Xopg_db_data Db();
|
||||||
Xopg_redirect_mgr Redirect();
|
Xopg_redirect_mgr Redirect_trail();
|
||||||
Xopg_html_data Html_data();
|
Xopg_html_data Html_data();
|
||||||
Xopg_hdump_data Hdump_mgr();
|
Xopg_hdump_data Hdump_mgr();
|
||||||
|
|
||||||
// Xopg_lnki_list Redlink_list();
|
|
||||||
|
|
||||||
Xoa_page__commons_mgr Commons_mgr();
|
Xoa_page__commons_mgr Commons_mgr();
|
||||||
void Xtn_gallery_packed_exists_y_();
|
void Xtn_gallery_packed_exists_y_();
|
||||||
boolean Xtn__timeline_exists();
|
boolean Xtn__timeline_exists();
|
||||||
|
@ -53,7 +53,11 @@ public class Xoa_ttl { // PAGE:en.w:http://en.wikipedia.org/wiki/Help:Link; REF.
|
|||||||
return rv;
|
return rv;
|
||||||
}
|
}
|
||||||
public String Page_db_as_str() {return String_.new_u8(Page_db());}
|
public String Page_db_as_str() {return String_.new_u8(Page_db());}
|
||||||
public byte[] Page_url_w_anch() {return Gfo_url_encoder_.Href.Encode(Bry_.Mid(full_txt, page_bgn, qarg_bgn == -1 ? full_txt.length : qarg_bgn - 1));}
|
public byte[] Page_url_w_anch() {
|
||||||
|
synchronized (href_encoder) { // LOCK:static-obj
|
||||||
|
return href_encoder.Encode(Bry_.Mid(full_txt, page_bgn, qarg_bgn == -1 ? full_txt.length : qarg_bgn - 1));
|
||||||
|
}
|
||||||
|
}
|
||||||
public int Leaf_bgn() {return leaf_bgn;}
|
public int Leaf_bgn() {return leaf_bgn;}
|
||||||
public byte[] Base_txt() {return leaf_bgn == -1 ? Page_txt() : Bry_.Mid(full_txt, page_bgn, leaf_bgn - 1);}
|
public byte[] Base_txt() {return leaf_bgn == -1 ? Page_txt() : Bry_.Mid(full_txt, page_bgn, leaf_bgn - 1);}
|
||||||
public byte[] Leaf_txt() {return leaf_bgn == -1 ? Page_txt() : Bry_.Mid(full_txt, leaf_bgn, anch_bgn == -1 ? full_txt.length : anch_bgn - 1);}
|
public byte[] Leaf_txt() {return leaf_bgn == -1 ? Page_txt() : Bry_.Mid(full_txt, leaf_bgn, anch_bgn == -1 ? full_txt.length : anch_bgn - 1);}
|
||||||
@ -62,17 +66,41 @@ public class Xoa_ttl { // PAGE:en.w:http://en.wikipedia.org/wiki/Help:Link; REF.
|
|||||||
public byte[] Anch_txt() {return anch_bgn == -1 ? Bry_.Empty : Bry_.Mid(full_txt, anch_bgn, full_txt.length);}
|
public byte[] Anch_txt() {return anch_bgn == -1 ? Bry_.Empty : Bry_.Mid(full_txt, anch_bgn, full_txt.length);}
|
||||||
public byte[] Talk_txt() {return ns.Id_is_talk() ? Full_txt_w_ttl_case() : Bry_.Add(tors_txt, Page_txt());}
|
public byte[] Talk_txt() {return ns.Id_is_talk() ? Full_txt_w_ttl_case() : Bry_.Add(tors_txt, Page_txt());}
|
||||||
public byte[] Subj_txt() {return ns.Id_is_subj() ? Full_txt_w_ttl_case() : Bry_.Add(tors_txt, Page_txt());}
|
public byte[] Subj_txt() {return ns.Id_is_subj() ? Full_txt_w_ttl_case() : Bry_.Add(tors_txt, Page_txt());}
|
||||||
public byte[] Full_url() {return Gfo_url_encoder_.Href.Encode(full_txt);}
|
public byte[] Full_url() {
|
||||||
|
synchronized (href_encoder) { // LOCK:static-obj
|
||||||
|
return Gfo_url_encoder_.Href.Encode(full_txt);
|
||||||
|
}
|
||||||
|
}
|
||||||
public String Full_db_as_str() {return String_.new_u8(Full_db());}
|
public String Full_db_as_str() {return String_.new_u8(Full_db());}
|
||||||
public byte[] Full_db() {return ns.Gen_ttl(this.Page_db());}
|
public byte[] Full_db() {return ns.Gen_ttl(this.Page_db());}
|
||||||
public byte[] Full_db_w_anch() {return Replace_spaces(full_txt);}
|
public byte[] Full_db_w_anch() {return Replace_spaces(full_txt);}
|
||||||
public byte[] Page_url() {return Xoa_url_encoder.Instance.Encode(this.Page_txt());}
|
public byte[] Page_url() {
|
||||||
public byte[] Leaf_url() {return Xoa_url_encoder.Instance.Encode(this.Leaf_txt());}
|
synchronized (url_encoder) { // LOCK:static-obj
|
||||||
public byte[] Base_url() {return Xoa_url_encoder.Instance.Encode(this.Base_txt());}
|
return url_encoder.Encode(this.Page_txt());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public byte[] Leaf_url() {
|
||||||
|
synchronized (url_encoder) { // LOCK:static-obj
|
||||||
|
return url_encoder.Encode(this.Leaf_txt());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public byte[] Base_url() {
|
||||||
|
synchronized (url_encoder) { // LOCK:static-obj
|
||||||
|
return url_encoder.Encode(this.Base_txt());
|
||||||
|
}
|
||||||
|
}
|
||||||
public byte[] Root_txt() {return root_bgn == -1 ? Page_txt() : Bry_.Mid(full_txt, page_bgn, root_bgn - 1);}
|
public byte[] Root_txt() {return root_bgn == -1 ? Page_txt() : Bry_.Mid(full_txt, page_bgn, root_bgn - 1);}
|
||||||
public byte[] Rest_txt() {return root_bgn == -1 ? Page_txt() : Bry_.Mid(full_txt, root_bgn, anch_bgn == -1 ? full_txt.length : anch_bgn - 1);}
|
public byte[] Rest_txt() {return root_bgn == -1 ? Page_txt() : Bry_.Mid(full_txt, root_bgn, anch_bgn == -1 ? full_txt.length : anch_bgn - 1);}
|
||||||
public byte[] Talk_url() {return Xoa_url_encoder.Instance.Encode(this.Talk_txt());}
|
public byte[] Talk_url() {
|
||||||
public byte[] Subj_url() {return Xoa_url_encoder.Instance.Encode(this.Subj_txt());}
|
synchronized (url_encoder) { // LOCK:static-obj
|
||||||
|
return url_encoder.Encode(this.Talk_txt());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public byte[] Subj_url() {
|
||||||
|
synchronized (url_encoder) { // LOCK:static-obj
|
||||||
|
return url_encoder.Encode(this.Subj_txt());
|
||||||
|
}
|
||||||
|
}
|
||||||
public int Qarg_bgn() {return qarg_bgn;} private int qarg_bgn = -1;
|
public int Qarg_bgn() {return qarg_bgn;} private int qarg_bgn = -1;
|
||||||
public byte[] Qarg_txt() {return this.Qarg_bgn() == -1 ? null : Bry_.Mid(full_txt, this.Qarg_bgn(), full_txt.length);}
|
public byte[] Qarg_txt() {return this.Qarg_bgn() == -1 ? null : Bry_.Mid(full_txt, this.Qarg_bgn(), full_txt.length);}
|
||||||
public byte[] Base_txt_wo_qarg() {
|
public byte[] Base_txt_wo_qarg() {
|
||||||
@ -110,6 +138,9 @@ public class Xoa_ttl { // PAGE:en.w:http://en.wikipedia.org/wiki/Help:Link; REF.
|
|||||||
.Add_many_int(Char__bidi , Bry_.New_by_ints(0xE2, 0x80, 0x8E), Bry_.New_by_ints(0xE2, 0x80, 0x8F), Bry_.New_by_ints(0xE2, 0x80, 0xAA), Bry_.New_by_ints(0xE2, 0x80, 0xAB), Bry_.New_by_ints(0xE2, 0x80, 0xAC), Bry_.New_by_ints(0xE2, 0x80, 0xAD), Bry_.New_by_ints(0xE2, 0x80, 0xAE))
|
.Add_many_int(Char__bidi , Bry_.New_by_ints(0xE2, 0x80, 0x8E), Bry_.New_by_ints(0xE2, 0x80, 0x8F), Bry_.New_by_ints(0xE2, 0x80, 0xAA), Bry_.New_by_ints(0xE2, 0x80, 0xAB), Bry_.New_by_ints(0xE2, 0x80, 0xAC), Bry_.New_by_ints(0xE2, 0x80, 0xAD), Bry_.New_by_ints(0xE2, 0x80, 0xAE))
|
||||||
.Add_many_int(Char__ws , "\u00A0", "\u1680", "\u180E", "\u2000", "\u2001", "\u2002", "\u2003", "\u2004", "\u2005", "\u2006", "\u2007", "\u2008", "\u2009", "\u200A", "\u2028", "\u2029", "\u202F", "\u205F", "\u3000");
|
.Add_many_int(Char__ws , "\u00A0", "\u1680", "\u180E", "\u2000", "\u2001", "\u2002", "\u2003", "\u2004", "\u2005", "\u2006", "\u2007", "\u2008", "\u2009", "\u200A", "\u2028", "\u2029", "\u202F", "\u205F", "\u3000");
|
||||||
|
|
||||||
|
private final static Gfo_url_encoder href_encoder = Gfo_url_encoder_.New__html_href_mw(Bool_.Y).Make();
|
||||||
|
private final static Xoa_url_encoder url_encoder = new Xoa_url_encoder();
|
||||||
|
|
||||||
public static byte[] Replace_spaces(byte[] raw) {return Bry_.Replace(raw, Byte_ascii.Space, Byte_ascii.Underline);}
|
public static byte[] Replace_spaces(byte[] raw) {return Bry_.Replace(raw, Byte_ascii.Space, Byte_ascii.Underline);}
|
||||||
public static byte[] Replace_unders(byte[] raw) {return Replace_unders(raw, 0, raw.length);}
|
public static byte[] Replace_unders(byte[] raw) {return Replace_unders(raw, 0, raw.length);}
|
||||||
public static byte[] Replace_unders(byte[] raw, int bgn, int end) {return Bry_.Replace(raw, bgn, end, Byte_ascii.Underline, Byte_ascii.Space);}
|
public static byte[] Replace_unders(byte[] raw, int bgn, int end) {return Bry_.Replace(raw, bgn, end, Byte_ascii.Underline, Byte_ascii.Space);}
|
||||||
|
@ -98,10 +98,12 @@ public class Xoa_url {
|
|||||||
, anch_spr, anch // add anch EX: "#", "B"
|
, anch_spr, anch // add anch EX: "#", "B"
|
||||||
);
|
);
|
||||||
if (show_qargs || qargs_ary.length > 0) {
|
if (show_qargs || qargs_ary.length > 0) {
|
||||||
Bry_bfr bfr = Xoa_app_.Utl__bfr_mkr().Get_b128();
|
Bry_bfr bfr = Bry_bfr_.New();
|
||||||
bfr.Add(rv);
|
try {
|
||||||
Gfo_qarg_mgr_old.Concat_bfr(bfr, gplx.langs.htmls.encoders.Gfo_url_encoder_.Href, qargs_ary);
|
bfr.Add(rv);
|
||||||
return bfr.To_bry_and_rls();
|
Gfo_qarg_mgr_old.Concat_bfr(bfr, gplx.langs.htmls.encoders.Gfo_url_encoder_.Href, qargs_ary);
|
||||||
|
return bfr.To_bry_and_clear();
|
||||||
|
} finally {bfr.Mkr_rls();}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
return rv;
|
return rv;
|
||||||
|
@ -45,7 +45,8 @@ public class Xoae_app implements Xoa_app, Gfo_invk {
|
|||||||
url_cmd_eval = new Xoa_fsys_eval(fsys_mgr, user.Fsys_mgr());
|
url_cmd_eval = new Xoa_fsys_eval(fsys_mgr, user.Fsys_mgr());
|
||||||
fsys_mgr.Init_by_app(prog_mgr);
|
fsys_mgr.Init_by_app(prog_mgr);
|
||||||
log_wtr.Log_dir_(user.Fsys_mgr().App_temp_dir().GenSubDir("log"));
|
log_wtr.Log_dir_(user.Fsys_mgr().App_temp_dir().GenSubDir("log"));
|
||||||
lang_mgr = new Xoa_lang_mgr(this);
|
this.gfs_mgr = new Xoa_gfs_mgr(this, fsys_mgr, user.Fsys_mgr());
|
||||||
|
lang_mgr = new Xoa_lang_mgr(this, gfs_mgr);
|
||||||
wiki_mgr = new Xoae_wiki_mgr(this);
|
wiki_mgr = new Xoae_wiki_mgr(this);
|
||||||
gui_mgr = new Xoa_gui_mgr(this);
|
gui_mgr = new Xoa_gui_mgr(this);
|
||||||
this.gui__tab_mgr = new Xog_tab_mgr__swt(gui_mgr);
|
this.gui__tab_mgr = new Xog_tab_mgr__swt(gui_mgr);
|
||||||
@ -57,7 +58,6 @@ public class Xoae_app implements Xoa_app, Gfo_invk {
|
|||||||
cur_redirect = new Xoa_cur(this);
|
cur_redirect = new Xoa_cur(this);
|
||||||
shell = new Xoa_shell(this);
|
shell = new Xoa_shell(this);
|
||||||
setup_mgr = new Xoi_setup_mgr(this);
|
setup_mgr = new Xoi_setup_mgr(this);
|
||||||
Xoa_app_.Gfs_mgr_(new Xoa_gfs_mgr(this, fsys_mgr, user.Fsys_mgr()));
|
|
||||||
xtn_mgr = new Xow_xtn_mgr().Ctor_by_app(this);
|
xtn_mgr = new Xow_xtn_mgr().Ctor_by_app(this);
|
||||||
hive_mgr = new Xoa_hive_mgr(this);
|
hive_mgr = new Xoa_hive_mgr(this);
|
||||||
tcp_server.App_ctor(this);
|
tcp_server.App_ctor(this);
|
||||||
@ -81,7 +81,7 @@ public class Xoae_app implements Xoa_app, Gfo_invk {
|
|||||||
public Xoa_css_extractor Html__css_installer() {return html__css_installer;} private final Xoa_css_extractor html__css_installer = new Xoa_css_extractor();
|
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 Xoh_bridge_mgr Html__bridge_mgr() {return html__bridge_mgr;} private final Xoh_bridge_mgr html__bridge_mgr;
|
||||||
public Xowmf_mgr Wmf_mgr() {return wmf_mgr;} private final Xowmf_mgr wmf_mgr = new Xowmf_mgr();
|
public Xowmf_mgr Wmf_mgr() {return wmf_mgr;} private final Xowmf_mgr wmf_mgr = new Xowmf_mgr();
|
||||||
public Bry_bfr_mkr Utl__bfr_mkr() {return Xoa_app_.Utl__bfr_mkr();}
|
public Bry_bfr_mkr Utl__bfr_mkr() {return utl__bry_bfr_mkr;} private final Bry_bfr_mkr utl__bry_bfr_mkr = new Bry_bfr_mkr();
|
||||||
public Json_parser Utl__json_parser() {return utl__json_parser;} private final Json_parser utl__json_parser = new Json_parser();
|
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 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;
|
||||||
@ -112,7 +112,7 @@ public class Xoae_app implements Xoa_app, Gfo_invk {
|
|||||||
public Xoapi_root Api_root() {return api_root;} private Xoapi_root api_root;
|
public Xoapi_root Api_root() {return api_root;} private Xoapi_root api_root;
|
||||||
public Gfo_usr_dlg Usr_dlg() {return Xoa_app_.Usr_dlg();}
|
public Gfo_usr_dlg Usr_dlg() {return Xoa_app_.Usr_dlg();}
|
||||||
public Gfo_usr_dlg__log Log_wtr() {return log_wtr;} private Gfo_usr_dlg__log log_wtr;
|
public Gfo_usr_dlg__log Log_wtr() {return log_wtr;} private Gfo_usr_dlg__log log_wtr;
|
||||||
public Xoa_gfs_mgr Gfs_mgr() {return Xoa_app_.Gfs_mgr();}
|
public Xoa_gfs_mgr Gfs_mgr() {return gfs_mgr;} private final Xoa_gfs_mgr gfs_mgr;
|
||||||
public Xoa_special_mgr Special_mgr() {return special_mgr;} private Xoa_special_mgr special_mgr = new gplx.xowa.specials.Xoa_special_mgr();
|
public Xoa_special_mgr Special_mgr() {return special_mgr;} private Xoa_special_mgr special_mgr = new gplx.xowa.specials.Xoa_special_mgr();
|
||||||
public Xoh_html_mgr Html_mgr() {return html_mgr;} private Xoh_html_mgr html_mgr;
|
public Xoh_html_mgr Html_mgr() {return html_mgr;} private Xoh_html_mgr html_mgr;
|
||||||
public Xop_log_mgr Log_mgr() {return log_mgr;} private Xop_log_mgr log_mgr;
|
public Xop_log_mgr Log_mgr() {return log_mgr;} private Xop_log_mgr log_mgr;
|
||||||
@ -147,7 +147,7 @@ public class Xoae_app implements Xoa_app, Gfo_invk {
|
|||||||
public Xop_amp_mgr Parser_amp_mgr() {return parser_amp_mgr;} private final Xop_amp_mgr parser_amp_mgr = Xop_amp_mgr.Instance;
|
public Xop_amp_mgr Parser_amp_mgr() {return parser_amp_mgr;} private final Xop_amp_mgr parser_amp_mgr = Xop_amp_mgr.Instance;
|
||||||
|
|
||||||
private Xoa_fmtr_mgr fmtr_mgr;
|
private Xoa_fmtr_mgr fmtr_mgr;
|
||||||
public Number_parser Utl_num_parser() {return utl_num_parser;} private Number_parser utl_num_parser = new Number_parser();
|
public Gfo_number_parser Utl_num_parser() {return utl_num_parser;} private Gfo_number_parser utl_num_parser = new Gfo_number_parser();
|
||||||
public void Init_by_app() {
|
public void Init_by_app() {
|
||||||
stage = Xoa_stage_.Tid_init;
|
stage = Xoa_stage_.Tid_init;
|
||||||
user.Init_by_app(this);
|
user.Init_by_app(this);
|
||||||
@ -216,7 +216,7 @@ public class Xoae_app implements Xoa_app, Gfo_invk {
|
|||||||
else if (ctx.Match(k, Invk_shell)) return shell;
|
else if (ctx.Match(k, Invk_shell)) return shell;
|
||||||
else if (ctx.Match(k, Invk_log)) return log_wtr;
|
else if (ctx.Match(k, Invk_log)) return log_wtr;
|
||||||
else if (ctx.Match(k, Invk_setup)) return setup_mgr;
|
else if (ctx.Match(k, Invk_setup)) return setup_mgr;
|
||||||
else if (ctx.Match(k, Invk_scripts)) return Xoa_app_.Gfs_mgr();
|
else if (ctx.Match(k, Invk_scripts)) return gfs_mgr;
|
||||||
else if (ctx.MatchPriv(k, Invk_term_cbk)) return this.Term_cbk();
|
else if (ctx.MatchPriv(k, Invk_term_cbk)) return this.Term_cbk();
|
||||||
else if (ctx.Match(k, Invk_xtns)) return xtn_mgr;
|
else if (ctx.Match(k, Invk_xtns)) return xtn_mgr;
|
||||||
else if (ctx.Match(k, Invk_ctg_mgr)) return ctg_mgr;
|
else if (ctx.Match(k, Invk_ctg_mgr)) return ctg_mgr;
|
||||||
|
@ -19,7 +19,7 @@ package gplx.xowa; import gplx.*;
|
|||||||
import gplx.xowa.langs.*; import gplx.xowa.wikis.pages.*;
|
import gplx.xowa.langs.*; import gplx.xowa.wikis.pages.*;
|
||||||
import gplx.xowa.guis.*; import gplx.xowa.guis.views.*;
|
import gplx.xowa.guis.*; import gplx.xowa.guis.views.*;
|
||||||
import gplx.xowa.files.*; import gplx.xowa.files.xfers.*;
|
import gplx.xowa.files.*; import gplx.xowa.files.xfers.*;
|
||||||
import gplx.xowa.parsers.*; import gplx.xowa.wikis.pages.lnkis.*; import gplx.xowa.xtns.cites.*; import gplx.xowa.xtns.wdatas.*; import gplx.xowa.xtns.wdatas.pfuncs.*;
|
import gplx.xowa.parsers.*; import gplx.xowa.wikis.pages.lnkis.*; import gplx.xowa.xtns.cites.*; import gplx.xowa.xtns.wbases.*; import gplx.xowa.xtns.wbases.pfuncs.*;
|
||||||
import gplx.xowa.htmls.*; import gplx.xowa.htmls.core.htmls.*; import gplx.xowa.addons.htmls.tocs.*; import gplx.xowa.htmls.modules.popups.*;
|
import gplx.xowa.htmls.*; import gplx.xowa.htmls.core.htmls.*; import gplx.xowa.addons.htmls.tocs.*; import gplx.xowa.htmls.modules.popups.*;
|
||||||
import gplx.xowa.wikis.pages.wtxts.*; import gplx.xowa.wikis.pages.dbs.*; import gplx.xowa.wikis.pages.redirects.*; import gplx.xowa.wikis.pages.hdumps.*; import gplx.xowa.wikis.pages.htmls.*;
|
import gplx.xowa.wikis.pages.wtxts.*; import gplx.xowa.wikis.pages.dbs.*; import gplx.xowa.wikis.pages.redirects.*; import gplx.xowa.wikis.pages.hdumps.*; import gplx.xowa.wikis.pages.htmls.*;
|
||||||
public class Xoae_page implements Xoa_page {
|
public class Xoae_page implements Xoa_page {
|
||||||
@ -34,10 +34,10 @@ public class Xoae_page implements Xoa_page {
|
|||||||
public Xoa_ttl Ttl() {return ttl;} public Xoae_page Ttl_(Xoa_ttl v) {ttl = v; url.Wiki_bry_(wiki.Domain_bry()).Page_bry_(v.Full_url()); return this;} private Xoa_ttl ttl;
|
public Xoa_ttl Ttl() {return ttl;} public Xoae_page Ttl_(Xoa_ttl v) {ttl = v; url.Wiki_bry_(wiki.Domain_bry()).Page_bry_(v.Full_url()); return this;} private Xoa_ttl ttl;
|
||||||
public Xoa_url Url() {return url;} public Xoae_page Url_(Xoa_url v) {url = v; return this;} private Xoa_url url = Xoa_url.blank();
|
public Xoa_url Url() {return url;} public Xoae_page Url_(Xoa_url v) {url = v; return this;} private Xoa_url url = Xoa_url.blank();
|
||||||
public byte[] Url_bry_safe() {return url == null ? Bry_.Empty : url.Raw();}
|
public byte[] Url_bry_safe() {return url == null ? Bry_.Empty : url.Raw();}
|
||||||
public Xopg_db_data Db() {return db;} private final Xopg_db_data db = new Xopg_db_data();
|
public Xopg_db_data Db() {return db;} private final Xopg_db_data db = new Xopg_db_data();
|
||||||
public Xopg_redirect_mgr Redirect() {return redirect;} private final Xopg_redirect_mgr redirect = new Xopg_redirect_mgr();
|
public Xopg_redirect_mgr Redirect_trail() {return redirect_trail;} private final Xopg_redirect_mgr redirect_trail = new Xopg_redirect_mgr();
|
||||||
public Xopg_html_data Html_data() {return html;} private final Xopg_html_data html = new Xopg_html_data();
|
public Xopg_html_data Html_data() {return html;} private final Xopg_html_data html = new Xopg_html_data();
|
||||||
public Xopg_hdump_data Hdump_mgr() {return hdump;} private final Xopg_hdump_data hdump = new Xopg_hdump_data();
|
public Xopg_hdump_data Hdump_mgr() {return hdump;} private final Xopg_hdump_data hdump = new Xopg_hdump_data();
|
||||||
|
|
||||||
public Xoa_page__commons_mgr Commons_mgr() {return commons_mgr;} private final Xoa_page__commons_mgr commons_mgr = new Xoa_page__commons_mgr();
|
public Xoa_page__commons_mgr Commons_mgr() {return commons_mgr;} private final Xoa_page__commons_mgr commons_mgr = new Xoa_page__commons_mgr();
|
||||||
public void Xtn_gallery_packed_exists_y_() {html.Xtn_gallery_packed_exists_y_();}
|
public void Xtn_gallery_packed_exists_y_() {html.Xtn_gallery_packed_exists_y_();}
|
||||||
@ -81,7 +81,7 @@ public class Xoae_page implements Xoa_page {
|
|||||||
public void Clear_all() {Clear(true);}
|
public void Clear_all() {Clear(true);}
|
||||||
public void Clear(boolean clear_scrib) { // NOTE: this is called post-fetch but pre-wtxt; do not clear items set by post-fetch, such as id, ttl, redirected_ttls, data_raw
|
public void Clear(boolean clear_scrib) { // NOTE: this is called post-fetch but pre-wtxt; do not clear items set by post-fetch, such as id, ttl, redirected_ttls, data_raw
|
||||||
db.Clear();
|
db.Clear();
|
||||||
redirect.Clear();
|
redirect_trail.Clear();
|
||||||
html.Clear();
|
html.Clear();
|
||||||
hdump.Clear();
|
hdump.Clear();
|
||||||
wtxt.Clear();
|
wtxt.Clear();
|
||||||
|
@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License
|
|||||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
package gplx.xowa; import gplx.*;
|
package gplx.xowa; import gplx.*;
|
||||||
import gplx.core.primitives.*;
|
import gplx.core.primitives.*; import gplx.core.brys.*; import gplx.core.ios.*;
|
||||||
import gplx.xowa.langs.*; import gplx.xowa.langs.cases.*;
|
import gplx.xowa.langs.*; import gplx.xowa.langs.cases.*;
|
||||||
import gplx.xowa.wikis.*; import gplx.xowa.wikis.domains.*; 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.xwikis.*; import gplx.xowa.addons.*;
|
import gplx.xowa.wikis.*; import gplx.xowa.wikis.domains.*; 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.xwikis.*; import gplx.xowa.addons.*;
|
||||||
import gplx.xowa.files.*; import gplx.xowa.files.repos.*; import gplx.xowa.files.origs.*; import gplx.xowa.files.bins.*; import gplx.fsdb.meta.*; import gplx.fsdb.*;
|
import gplx.xowa.files.*; import gplx.xowa.files.repos.*; import gplx.xowa.files.origs.*; import gplx.xowa.files.bins.*; import gplx.fsdb.meta.*; import gplx.fsdb.*;
|
||||||
@ -52,6 +52,8 @@ public interface Xow_wiki extends Xow_ttl_parser, Gfo_invk {
|
|||||||
Xow_site_stats_mgr Stats();
|
Xow_site_stats_mgr Stats();
|
||||||
void Init_by_wiki();
|
void Init_by_wiki();
|
||||||
void Init_by_wiki__force(); // HACK: force init for drd wiki
|
void Init_by_wiki__force(); // HACK: force init for drd wiki
|
||||||
|
Bry_bfr_mkr Utl__bfr_mkr();
|
||||||
|
Io_stream_zip_mgr Utl__zip_mgr();
|
||||||
Xow_url_parser Utl__url_parser();
|
Xow_url_parser Utl__url_parser();
|
||||||
Xoax_addon_mgr Addon_mgr();
|
Xoax_addon_mgr Addon_mgr();
|
||||||
void Init_needed_y_();
|
void Init_needed_y_();
|
||||||
|
@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License
|
|||||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
package gplx.xowa; import gplx.*;
|
package gplx.xowa; import gplx.*;
|
||||||
import gplx.core.brys.*; import gplx.core.primitives.*; import gplx.core.brys.fmtrs.*;
|
import gplx.core.brys.*; import gplx.core.primitives.*; import gplx.core.brys.fmtrs.*; import gplx.core.ios.*;
|
||||||
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.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.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.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.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.*;
|
||||||
@ -130,7 +130,8 @@ public class Xowe_wiki implements Xow_wiki, Gfo_invk, Gfo_evt_itm {
|
|||||||
public Xow_msg_mgr Msg_mgr() {return msg_mgr;} private Xow_msg_mgr msg_mgr;
|
public Xow_msg_mgr Msg_mgr() {return msg_mgr;} private Xow_msg_mgr msg_mgr;
|
||||||
public Xow_fragment_mgr Fragment_mgr() {return fragment_mgr;} private Xow_fragment_mgr fragment_mgr;
|
public Xow_fragment_mgr Fragment_mgr() {return fragment_mgr;} private Xow_fragment_mgr fragment_mgr;
|
||||||
public Bfmtr_eval_wiki Eval_mgr() {return eval_mgr;} private Bfmtr_eval_wiki eval_mgr;
|
public Bfmtr_eval_wiki Eval_mgr() {return eval_mgr;} private Bfmtr_eval_wiki eval_mgr;
|
||||||
public Bry_bfr_mkr Utl__bfr_mkr() {return utl__bry_bfr_mkr;} private final Bry_bfr_mkr utl__bry_bfr_mkr = new Bry_bfr_mkr();
|
public Bry_bfr_mkr Utl__bfr_mkr() {return utl__bry_bfr_mkr;} private final Bry_bfr_mkr utl__bry_bfr_mkr = new Bry_bfr_mkr();
|
||||||
|
public Io_stream_zip_mgr Utl__zip_mgr() {return utl__zip_mgr;} private final Io_stream_zip_mgr utl__zip_mgr = new Io_stream_zip_mgr();
|
||||||
public byte[] Wdata_wiki_lang() {return wdata_wiki_lang;} private byte[] wdata_wiki_lang;
|
public byte[] Wdata_wiki_lang() {return wdata_wiki_lang;} private byte[] wdata_wiki_lang;
|
||||||
public void Wdata_wiki_lang_(byte[] v) {this.wdata_wiki_lang = v; Wdata_wiki_abrv_();} // TEST:
|
public void Wdata_wiki_lang_(byte[] v) {this.wdata_wiki_lang = v; Wdata_wiki_abrv_();} // TEST:
|
||||||
public byte[] Wdata_wiki_abrv() {return wdata_wiki_abrv;} private byte[] wdata_wiki_abrv; private int wdata_wiki_tid;
|
public byte[] Wdata_wiki_abrv() {return wdata_wiki_abrv;} private byte[] wdata_wiki_abrv; private int wdata_wiki_tid;
|
||||||
|
@ -44,6 +44,7 @@ public class Xoax_addon_mgr {
|
|||||||
, new gplx.xowa.addons.bldrs.htmls .Html__dump_to_fsys__addon()
|
, new gplx.xowa.addons.bldrs.htmls .Html__dump_to_fsys__addon()
|
||||||
, new gplx.xowa.addons.bldrs.exports .Export_addon()
|
, new gplx.xowa.addons.bldrs.exports .Export_addon()
|
||||||
, new gplx.xowa.addons.wikis.pages.randoms .Rndm_addon()
|
, new gplx.xowa.addons.wikis.pages.randoms .Rndm_addon()
|
||||||
|
, new gplx.xowa.addons.bldrs.hdumps.diffs .Dumpdiff_addon()
|
||||||
|
|
||||||
// specials
|
// specials
|
||||||
, new gplx.xowa.addons.wikis.registrys .Wiki_registry_addon()
|
, new gplx.xowa.addons.wikis.registrys .Wiki_registry_addon()
|
||||||
|
@ -46,7 +46,7 @@ public class Xolog_special implements Xow_special_page {
|
|||||||
args_bldr.Add("cmd", "view");
|
args_bldr.Add("cmd", "view");
|
||||||
if (redirect_to_same_file && file != null)
|
if (redirect_to_same_file && file != null)
|
||||||
args_bldr.Add("file", file);
|
args_bldr.Add("file", file);
|
||||||
page.Redirect().Itms__add__special(wiki, Prototype.Special__meta(), args_bldr.To_ary());
|
page.Redirect_trail().Itms__add__special(wiki, Prototype.Special__meta(), args_bldr.To_ary());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -35,7 +35,7 @@ public class Xobc_data_db_upgrader {
|
|||||||
//int next_check_interval = cfg_mgr.Select_int_or("", Cfg__next_check_interval, 24 * 7);
|
//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);
|
//DateAdp last_check = DateAdp_.parse_fmt_or(last_check_str, Date_fmt, null);
|
||||||
//if (last_check != null) { // check if last_check_str exists
|
//if (last_check != null) { // check if last_check_str exists
|
||||||
// Time_span span = DateAdp_.Now().Diff(last_check);
|
// Time_span span = Datetime_now.Get().Diff(last_check);
|
||||||
// if (span.Total_hours().To_double() < next_check_interval) { // check if enough time passed
|
// 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);
|
// Gfo_log_.Instance.Info("xobc_db update not needed", "last_check", last_check_str, "next_check_interval", next_check_interval);
|
||||||
// return;
|
// return;
|
||||||
@ -47,7 +47,7 @@ public class Xobc_data_db_upgrader {
|
|||||||
// Gfo_log_.Instance.Info("xobc_db update needed b/c of missing or invalid last_check_str", "last_check", last_check_str);
|
// 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
|
// update needed; first, update cfg_key, then get host
|
||||||
cfg_mgr.Upsert_str("", Cfg__last_check_date, DateAdp_.Now().XtoStr_fmt(Date_fmt));
|
cfg_mgr.Upsert_str("", Cfg__last_check_date, Datetime_now.Get().XtoStr_fmt(Date_fmt));
|
||||||
Xobc_data_db bc_db = task_mgr.Data_db();
|
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);
|
Xobc_host_regy_itm host_itm = bc_db.Tbl__host_regy().Select(Xobc_host_regy_tbl.Host_id__archive_org);
|
||||||
|
|
||||||
|
@ -33,7 +33,7 @@ public class Xobc_version_regy_tbl implements Db_tbl {
|
|||||||
public void Create_tbl() {
|
public void Create_tbl() {
|
||||||
conn.Meta_tbl_create(Dbmeta_tbl_itm.New(tbl_name, flds));
|
conn.Meta_tbl_create(Dbmeta_tbl_itm.New(tbl_name, flds));
|
||||||
conn.Stmt_insert(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")
|
.Val_int(fld_version_id, 1).Val_str(fld_version_date, Datetime_now.Get().XtoStr_fmt_yyyy_MM_dd_HH_mm()).Val_str(fld_version_note, "initial")
|
||||||
.Exec_insert();
|
.Exec_insert();
|
||||||
}
|
}
|
||||||
public Xobc_version_regy_itm Select_latest() {
|
public Xobc_version_regy_itm Select_latest() {
|
||||||
|
@ -81,7 +81,7 @@ class Merge_wkr__core {
|
|||||||
}
|
}
|
||||||
private void Merge_cfg(Db_conn src_conn, Db_conn trg_conn, String src_tbl_name) {
|
private void Merge_cfg(Db_conn src_conn, Db_conn trg_conn, String src_tbl_name) {
|
||||||
if (trg_conn.Meta_tbl_exists("xowa_cfg")) {
|
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.Conn_main_(trg_conn).Conn_links_(new Db_attach_itm("src_db", src_conn));
|
||||||
attach_mgr.Exec_sql(String_.Concat_lines_nl
|
attach_mgr.Exec_sql(String_.Concat_lines_nl
|
||||||
( "INSERT INTO xowa_cfg"
|
( "INSERT INTO xowa_cfg"
|
||||||
, "SELECT s.cfg_grp, s.cfg_key, s.cfg_val"
|
, "SELECT s.cfg_grp, s.cfg_key, s.cfg_val"
|
||||||
|
@ -55,7 +55,7 @@ class Split_init__file {
|
|||||||
// update bin_db_id
|
// update bin_db_id
|
||||||
wkr_conn.Meta_idx_create("fsdb_img_regy", "img", "img_type", "fil_id", "thm_id");
|
wkr_conn.Meta_idx_create("fsdb_img_regy", "img", "img_type", "fil_id", "thm_id");
|
||||||
Gfo_log_.Instance.Prog("updating bin_db_id");
|
Gfo_log_.Instance.Prog("updating bin_db_id");
|
||||||
attach_mgr.Conn_others_(new Db_attach_itm("fsdb_db", atr_conn));
|
attach_mgr.Conn_links_(new Db_attach_itm("fsdb_db", atr_conn));
|
||||||
|
|
||||||
// update bin_db_id.fil
|
// update bin_db_id.fil
|
||||||
attach_mgr.Exec_sql(String_.Concat_lines_nl // ANSI.Y
|
attach_mgr.Exec_sql(String_.Concat_lines_nl // ANSI.Y
|
||||||
|
@ -35,7 +35,7 @@ class Split_meta_wkr__fil extends Split_meta_wkr_base {
|
|||||||
}
|
}
|
||||||
@Override public void On_nth_rls(Split_ctx ctx, Db_conn trg_conn) {this.stmt = Db_stmt_.Rls(stmt);}
|
@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) {
|
@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));
|
attach_mgr.Conn_links_(new Db_attach_itm("atr_db", atr_conn));
|
||||||
return String_.Concat_lines_nl
|
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"
|
( "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 <atr_db>fsdb_fil f"
|
, "FROM <atr_db>fsdb_fil f"
|
||||||
|
@ -35,7 +35,7 @@ class Split_meta_wkr__org extends Split_meta_wkr_base {
|
|||||||
}
|
}
|
||||||
@Override public void On_nth_rls(Split_ctx ctx, Db_conn trg_conn) {this.stmt = Db_stmt_.Rls(stmt);}
|
@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) {
|
@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));
|
attach_mgr.Conn_links_(new Db_attach_itm("atr_db", atr_conn));
|
||||||
return String_.Concat_lines_nl
|
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"
|
( "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 <atr_db>orig_reg o"
|
, "FROM <atr_db>orig_reg o"
|
||||||
|
@ -35,7 +35,7 @@ class Split_meta_wkr__thm extends Split_meta_wkr_base {
|
|||||||
}
|
}
|
||||||
@Override public void On_nth_rls(Split_ctx ctx, Db_conn trg_conn) {this.stmt = Db_stmt_.Rls(stmt);}
|
@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) {
|
@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));
|
attach_mgr.Conn_links_(new Db_attach_itm("atr_db", atr_conn));
|
||||||
return String_.Concat_lines_nl
|
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"
|
( "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 <atr_db>fsdb_thm t"
|
, "FROM <atr_db>fsdb_thm t"
|
||||||
|
@ -58,7 +58,7 @@ public class Split_wkr__rndm implements Split_wkr {
|
|||||||
Rndm_seq_tbl seq_tbl = new Rndm_seq_tbl(trg_conn); seq_tbl.Create_tbl();
|
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());
|
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());
|
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.Conn_main_(trg_conn).Conn_links_(new Db_attach_itm("src_db", bldr.Conn()));
|
||||||
attach_mgr.Exec_sql(tmp_bfr.To_str_and_clear());
|
attach_mgr.Exec_sql(tmp_bfr.To_str_and_clear());
|
||||||
// bldr.Conn().Txn_bgn("rndm");
|
// bldr.Conn().Txn_bgn("rndm");
|
||||||
}
|
}
|
||||||
|
@ -41,7 +41,7 @@ class Split_meta_wkr__link extends Split_meta_wkr_base {
|
|||||||
}
|
}
|
||||||
@Override protected String Load_sql(Db_attach_mgr attach_mgr, int ns_id, int score_bgn, int score_end) {
|
@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);
|
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));
|
attach_mgr.Conn_links_(new Db_attach_itm("link_db", srch_db_mgr.Tbl__link__get_at(trg_db_id).conn));
|
||||||
return String_.Concat_lines_nl
|
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"
|
( "SELECT sl.word_id, sl.page_id, sl.link_score, sw.page_id, " + trg_db_id + " AS trg_db_id"
|
||||||
, "FROM <link_db>search_link sl"
|
, "FROM <link_db>search_link sl"
|
||||||
|
@ -42,7 +42,7 @@ class Split_srch_init {
|
|||||||
int len = srch_db_mgr.Tbl__link__len();
|
int len = srch_db_mgr.Tbl__link__len();
|
||||||
for (int i = 0; i < len; ++i) {
|
for (int i = 0; i < len; ++i) {
|
||||||
Db_conn link_conn = srch_db_mgr.Tbl__link__get_at(i).conn;
|
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.Conn_links_(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
|
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)"
|
( "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"
|
, "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"
|
||||||
|
@ -21,7 +21,7 @@ import gplx.xowa.files.*;
|
|||||||
import gplx.xowa.wikis.nss.*;
|
import gplx.xowa.wikis.nss.*;
|
||||||
import gplx.xowa.wikis.*; import gplx.xowa.wikis.domains.*;
|
import gplx.xowa.wikis.*; import gplx.xowa.wikis.domains.*;
|
||||||
import gplx.xowa.parsers.*; import gplx.xowa.parsers.logs.*; import gplx.xowa.parsers.lnkis.*; import gplx.xowa.parsers.xndes.*;
|
import gplx.xowa.parsers.*; import gplx.xowa.parsers.logs.*; import gplx.xowa.parsers.lnkis.*; import gplx.xowa.parsers.xndes.*;
|
||||||
import gplx.xowa.htmls.core.bldrs.*; import gplx.xowa.xtns.scribunto.*; import gplx.xowa.xtns.wdatas.*;
|
import gplx.xowa.htmls.core.bldrs.*; import gplx.xowa.xtns.scribunto.*; import gplx.xowa.xtns.wbases.*;
|
||||||
import gplx.fsdb.meta.*; import gplx.xowa.files.fsdb.*; import gplx.fsdb.*;
|
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.langs.vnts.*; import gplx.xowa.parsers.vnts.*;
|
||||||
import gplx.xowa.parsers.lnkis.files.*;
|
import gplx.xowa.parsers.lnkis.files.*;
|
||||||
@ -112,7 +112,7 @@ public class Xobldr__lnki_temp__create extends Xob_dump_mgr_base implements gplx
|
|||||||
else {
|
else {
|
||||||
parser.Parse_page_all_clear(root, ctx, ctx.Tkn_mkr(), page_src);
|
parser.Parse_page_all_clear(root, ctx, ctx.Tkn_mkr(), page_src);
|
||||||
if ( gen_html
|
if ( gen_html
|
||||||
&& page.Redirect().Itms__len() == 0) // don't generate html for redirected pages
|
&& page.Redirect_trail().Itms__len() == 0) // don't generate html for redirected pages
|
||||||
wiki.Html_mgr().Page_wtr_mgr().Gen(ctx.Page().Root_(root), Xopg_page_.Tid_read);
|
wiki.Html_mgr().Page_wtr_mgr().Gen(ctx.Page().Root_(root), Xopg_page_.Tid_read);
|
||||||
if (gen_hdump)
|
if (gen_hdump)
|
||||||
hdump_bldr.Insert(ctx, page.Root_(root));
|
hdump_bldr.Insert(ctx, page.Root_(root));
|
||||||
|
@ -15,18 +15,14 @@ GNU Affero General Public License for more details.
|
|||||||
You should have received a copy of the GNU Affero General Public License
|
You should have received a copy of the GNU Affero General Public License
|
||||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
package gplx.xowa.xtns.wdatas.core; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*;
|
package gplx.xowa.addons.bldrs.hdumps.diffs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.hdumps.*;
|
||||||
public class Wdata_dict_value_string {
|
import gplx.xowa.bldrs.wkrs.*;
|
||||||
public static final byte
|
public class Dumpdiff_addon implements Xoax_addon_itm, Xoax_addon_itm__bldr {
|
||||||
Tid_value = 0
|
public Xob_cmd[] Bldr_cmds() {
|
||||||
, Tid_type = 1
|
return new Xob_cmd[]
|
||||||
;
|
{ Dumpdiff_cmd.Prototype
|
||||||
public static byte[]
|
};
|
||||||
Bry_value = Bry_.new_a7("value")
|
}
|
||||||
, Bry_type = Bry_.new_a7("type")
|
|
||||||
;
|
public String Addon__key() {return "xowa.builds.hdumps.diff";}
|
||||||
public static final Hash_adp_bry Dict = Hash_adp_bry.cs()
|
|
||||||
.Add_bry_byte(Bry_value , Tid_value)
|
|
||||||
.Add_bry_byte(Bry_type , Tid_type)
|
|
||||||
;
|
|
||||||
}
|
}
|
@ -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 <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
package gplx.xowa.addons.bldrs.hdumps.diffs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.hdumps.*;
|
||||||
|
class Dumpdiff_cfg implements Gfo_invk {
|
||||||
|
public Io_url Prv_dir() {return prv_dir;} private Io_url prv_dir;
|
||||||
|
public Io_url Cur_dir() {return cur_dir;} private Io_url cur_dir;
|
||||||
|
public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {
|
||||||
|
if (ctx.Match(k, Invk__cur_dir_)) this.cur_dir = m.ReadIoUrl("v");
|
||||||
|
else if (ctx.Match(k, Invk__prv_dir_)) this.prv_dir = m.ReadIoUrl("v");
|
||||||
|
else return Gfo_invk_.Rv_unhandled;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
public static final String Invk__cur_dir_ = "cur_dir_", Invk__prv_dir_ = "prv_dir_";
|
||||||
|
}
|
@ -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 <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
package gplx.xowa.addons.bldrs.hdumps.diffs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.hdumps.*;
|
||||||
|
import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wkrs.*; import gplx.xowa.htmls.core.htmls.*;
|
||||||
|
public class Dumpdiff_cmd extends Xob_cmd__base {
|
||||||
|
private final Dumpdiff_cfg cfg = new Dumpdiff_cfg();
|
||||||
|
private final Dumpdiff_mgr mgr = new Dumpdiff_mgr();
|
||||||
|
public Dumpdiff_cmd(Xob_bldr bldr, Xowe_wiki wiki) {super(bldr, wiki);}
|
||||||
|
@Override public void Cmd_run() {
|
||||||
|
wiki.Init_assert();
|
||||||
|
mgr.Exec(bldr.App(), wiki, cfg);
|
||||||
|
}
|
||||||
|
@Override public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {
|
||||||
|
if (ctx.Match(k, Invk__cfg)) return cfg;
|
||||||
|
else return Gfo_invk_.Rv_unhandled;
|
||||||
|
}
|
||||||
|
private static final String Invk__cfg = "cfg";
|
||||||
|
|
||||||
|
public static final String BLDR_CMD_KEY = "hdump.diff";
|
||||||
|
@Override public String Cmd_key() {return BLDR_CMD_KEY;}
|
||||||
|
public static final Xob_cmd Prototype = new Dumpdiff_cmd(null, null);
|
||||||
|
@Override public Xob_cmd Cmd_clone(Xob_bldr bldr, Xowe_wiki wiki) {return new Dumpdiff_cmd(bldr, wiki);}
|
||||||
|
}
|
@ -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 <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
package gplx.xowa.addons.bldrs.hdumps.diffs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.hdumps.*;
|
||||||
|
import gplx.dbs.*;
|
||||||
|
class Dumpdiff_log_tbl implements Db_tbl {
|
||||||
|
private final Dbmeta_fld_list flds = new Dbmeta_fld_list();
|
||||||
|
private final String fld__page_id, fld__cur_snip, fld__prv_snip;
|
||||||
|
private Db_stmt stmt__insert;
|
||||||
|
public Dumpdiff_log_tbl(Db_conn conn) {
|
||||||
|
this.conn = conn;
|
||||||
|
flds.Add_int_pkey("uid");
|
||||||
|
this.fld__page_id = flds.Add_int("page_id");
|
||||||
|
this.fld__cur_snip = flds.Add_str("cur_snip", 1024);
|
||||||
|
this.fld__prv_snip = flds.Add_str("prv_snip", 1024);
|
||||||
|
conn.Rls_reg(this);
|
||||||
|
}
|
||||||
|
public String Tbl_name() {return tbl_name;} private final String tbl_name = "diff_log";
|
||||||
|
public Db_conn Conn() {return conn;} private final Db_conn conn;
|
||||||
|
public void Create_tbl() {
|
||||||
|
conn.Meta_tbl_remake(Dbmeta_tbl_itm.New(tbl_name, flds, Dbmeta_idx_itm.new_normal_by_tbl(tbl_name, fld__page_id, fld__page_id)));
|
||||||
|
}
|
||||||
|
public void Insert_bgn() {
|
||||||
|
stmt__insert = conn.Stmt_insert(tbl_name, fld__page_id, fld__cur_snip, fld__prv_snip);
|
||||||
|
conn.Txn_bgn("diff_log");
|
||||||
|
}
|
||||||
|
public void Insert_by_batch(int page_id, byte[] prv_snip, byte[] cur_snip) {
|
||||||
|
stmt__insert.Clear().Val_int(fld__page_id, page_id).Val_bry_as_str(fld__cur_snip, cur_snip).Val_bry_as_str(fld__prv_snip, prv_snip).Exec_insert();
|
||||||
|
}
|
||||||
|
public void Insert_end() {
|
||||||
|
conn.Txn_end();
|
||||||
|
stmt__insert.Rls();
|
||||||
|
}
|
||||||
|
public void Rls() {}
|
||||||
|
|
||||||
|
public static Dumpdiff_log_tbl New(Xowe_wiki wiki) {
|
||||||
|
Db_conn conn = Db_conn_bldr.Instance.Get_or_autocreate(true, wiki.Fsys_mgr().Root_dir().GenSubFil("xowa.diff.sqlite3"));
|
||||||
|
Dumpdiff_log_tbl rv = new Dumpdiff_log_tbl(conn);
|
||||||
|
conn.Meta_tbl_remake(rv);
|
||||||
|
return rv;
|
||||||
|
}
|
||||||
|
}
|
@ -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 <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
package gplx.xowa.addons.bldrs.hdumps.diffs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.hdumps.*;
|
||||||
|
import gplx.core.brys.*;
|
||||||
|
import gplx.dbs.*;
|
||||||
|
import gplx.xowa.htmls.*;
|
||||||
|
import gplx.xowa.wikis.data.tbls.*;
|
||||||
|
class Dumpdiff_mgr {
|
||||||
|
public void Exec(Xoae_app app, Xowe_wiki wiki, Dumpdiff_cfg cfg) {
|
||||||
|
// init log_tbl, wikis
|
||||||
|
Dumpdiff_log_tbl log_tbl = Dumpdiff_log_tbl.New(wiki);
|
||||||
|
Xowe_wiki cur_wiki = Get_wiki_by_dir(wiki, Bool_.Y, cfg.Cur_dir());
|
||||||
|
Xowe_wiki prv_wiki = Get_wiki_by_dir(wiki, Bool_.N, cfg.Prv_dir());
|
||||||
|
|
||||||
|
// init html_loader, page_loader
|
||||||
|
Hdump_html_loader cur_html_loader = new Hdump_html_loader(cur_wiki);
|
||||||
|
Hdump_html_loader prv_html_loader = new Hdump_html_loader(prv_wiki);
|
||||||
|
Dumpdiff_page_loader page_loader = new Dumpdiff_page_loader(cur_wiki, prv_wiki, 10000);
|
||||||
|
List_adp list = List_adp_.New();
|
||||||
|
|
||||||
|
// prepare for loop
|
||||||
|
int page_count = 0, diff_count = 0;
|
||||||
|
log_tbl.Insert_bgn();
|
||||||
|
|
||||||
|
// loop page_table until no more
|
||||||
|
while (true) {
|
||||||
|
page_loader.Load(list);
|
||||||
|
int list_len = list.Count();
|
||||||
|
if (list_len == 0) break;
|
||||||
|
|
||||||
|
// loop pages, compare, and log
|
||||||
|
for (int i = 0; i < list_len; ++i) {
|
||||||
|
Dumpdiff_page_itm page = (Dumpdiff_page_itm)list.Get_at(i);
|
||||||
|
int page_id = page.Page_id();
|
||||||
|
byte[] cur_html = cur_html_loader.Load(page_id, page.Cur_db_id());
|
||||||
|
byte[] prv_html = prv_html_loader.Load(page_id, page.Prv_db_id());
|
||||||
|
byte[][] diff = Bry_diff_.Diff_1st_line(cur_html, prv_html);
|
||||||
|
++page_count;
|
||||||
|
if (diff != null) {
|
||||||
|
log_tbl.Insert_by_batch(page_id, diff[0], diff[1]);
|
||||||
|
++diff_count;
|
||||||
|
Gfo_usr_dlg_.Instance.Warn_many("", "", "hdump diff: pages=~{0} diffs=~{1} page_id=~{2} cur=~{3} prv=~{4}", page_count, diff_count, page_id, diff[0], diff[1]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
list.Clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
// cleanup
|
||||||
|
log_tbl.Insert_end();
|
||||||
|
}
|
||||||
|
private static Xowe_wiki Get_wiki_by_dir(Xowe_wiki dflt_wiki, boolean wiki_is_cur, Io_url wiki_dir) {
|
||||||
|
Xowe_wiki rv = null;
|
||||||
|
if (wiki_dir == null) {
|
||||||
|
if (wiki_is_cur)
|
||||||
|
rv = dflt_wiki;
|
||||||
|
else
|
||||||
|
throw Err_.new_("", "prv_dir not specified");
|
||||||
|
}
|
||||||
|
if (rv == null)
|
||||||
|
rv = gplx.xowa.addons.bldrs.mass_parses.parses.Xow_wiki_utl_.Clone_wiki(dflt_wiki, wiki_dir);
|
||||||
|
return rv;
|
||||||
|
}
|
||||||
|
}
|
@ -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 <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
package gplx.xowa.addons.bldrs.hdumps.diffs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.hdumps.*;
|
||||||
|
class Dumpdiff_page_itm {
|
||||||
|
public Dumpdiff_page_itm(int page_id, int ns_id, byte[] ttl_bry, int cur_db_id, int prv_db_id) {
|
||||||
|
this.page_id = page_id;
|
||||||
|
this.ns_id = ns_id;
|
||||||
|
this.ttl_bry = ttl_bry;
|
||||||
|
this.cur_db_id = cur_db_id;
|
||||||
|
this.prv_db_id = prv_db_id;
|
||||||
|
}
|
||||||
|
public int Page_id() {return page_id;} private final int page_id;
|
||||||
|
public int Ns_id() {return ns_id;} private final int ns_id;
|
||||||
|
public byte[] Ttl_bry() {return ttl_bry;} private final byte[] ttl_bry;
|
||||||
|
public int Cur_db_id() {return cur_db_id;} private final int cur_db_id;
|
||||||
|
public int Prv_db_id() {return prv_db_id;} private final int prv_db_id;
|
||||||
|
}
|
@ -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 <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
package gplx.xowa.addons.bldrs.hdumps.diffs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.hdumps.*;
|
||||||
|
import gplx.dbs.*;
|
||||||
|
class Dumpdiff_page_loader {
|
||||||
|
private final Db_attach_mgr attach_mgr = new Db_attach_mgr();
|
||||||
|
private int select_count, cutoff_page_id;
|
||||||
|
public Dumpdiff_page_loader(Xowe_wiki cur_wiki, Xowe_wiki prv_wiki, int select_count) {
|
||||||
|
this.select_count = select_count;
|
||||||
|
attach_mgr.Conn_main_(cur_wiki.Data__core_mgr().Db__core().Conn());
|
||||||
|
attach_mgr.Conn_links_(new Db_attach_itm("prv_db", prv_wiki.Data__core_mgr().Db__core().Conn()));
|
||||||
|
}
|
||||||
|
public void Load(List_adp rv) {
|
||||||
|
String sql = String_.Format(String_.Concat_lines_nl_skip_last // ANSI.Y
|
||||||
|
( "SELECT cur.page_id"
|
||||||
|
, ", cur.page_namespace AS ns_id"
|
||||||
|
, ", cur.page_title AS ttl_bry"
|
||||||
|
, ", cur.page_html_db_id AS cur_html_db_id"
|
||||||
|
, ", prv.page_html_db_id AS prv_html_db_id"
|
||||||
|
, "FROM page cur"
|
||||||
|
, " JOIN <prv_db>page prv ON cur.page_id = prv.page_id"
|
||||||
|
, "WHERE cur.page_id > {0}"
|
||||||
|
, "AND cur.page_html_db_id != -1"
|
||||||
|
, "LIMIT {1}"
|
||||||
|
), cutoff_page_id, select_count);
|
||||||
|
sql = attach_mgr.Resolve_sql(sql);
|
||||||
|
|
||||||
|
attach_mgr.Attach();
|
||||||
|
Db_rdr rdr = attach_mgr.Conn_main().Stmt_sql(sql).Exec_select__rls_auto();
|
||||||
|
while (rdr.Move_next()) {
|
||||||
|
cutoff_page_id = rdr.Read_int("page_id");
|
||||||
|
rv.Add(new Dumpdiff_page_itm(cutoff_page_id
|
||||||
|
, rdr.Read_int("ns_id"), rdr.Read_bry_by_str("ttl_bry")
|
||||||
|
, rdr.Read_int("cur_html_db_id"), rdr.Read_int("prv_html_db_id")
|
||||||
|
));
|
||||||
|
}
|
||||||
|
attach_mgr.Detach();
|
||||||
|
}
|
||||||
|
}
|
@ -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 <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
package gplx.xowa.addons.bldrs.hdumps.diffs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.hdumps.*;
|
||||||
|
import gplx.core.ios.*; import gplx.core.ios.streams.*;
|
||||||
|
import gplx.xowa.wikis.data.*; import gplx.xowa.wikis.data.tbls.*;
|
||||||
|
import gplx.xowa.htmls.*;
|
||||||
|
class Hdump_html_loader {
|
||||||
|
private final Xowe_wiki wiki;
|
||||||
|
private Io_stream_zip_mgr stream_zip_mgr = new Io_stream_zip_mgr();
|
||||||
|
private final Bry_bfr tmp_bfr = Bry_bfr_.New();
|
||||||
|
private final Xoh_page tmp_hpg = new Xoh_page();
|
||||||
|
private final Xoa_url tmp_url; private final Xoa_ttl tmp_ttl;
|
||||||
|
|
||||||
|
public Hdump_html_loader(Xowe_wiki wiki) {
|
||||||
|
this.wiki = wiki;
|
||||||
|
this.tmp_url = wiki.Utl__url_parser().Parse(Bry_.new_a7("temp"));
|
||||||
|
this.tmp_ttl = wiki.Ttl_parse(Bry_.new_a7("temp"));
|
||||||
|
}
|
||||||
|
|
||||||
|
public byte[] Load(int page_id, int html_db_id) {
|
||||||
|
// load html_bry from db
|
||||||
|
Xow_db_file html_db = wiki.Data__core_mgr().Dbs__get_by_id_or_fail(html_db_id);
|
||||||
|
tmp_hpg.Ctor_by_hview(wiki, tmp_url, tmp_ttl, page_id);
|
||||||
|
html_db.Tbl__html().Select_by_page(tmp_hpg);
|
||||||
|
|
||||||
|
// unzip it
|
||||||
|
byte[] html_hzip = stream_zip_mgr.Unzip(Io_stream_.Tid_gzip, tmp_hpg.Db().Html().Html_bry());
|
||||||
|
return wiki.Html__hdump_mgr().Load_mgr().Decode_as_bry(tmp_bfr, tmp_hpg, html_hzip, true);
|
||||||
|
}
|
||||||
|
}
|
@ -19,7 +19,7 @@ package gplx.xowa.addons.bldrs.mass_parses.makes; import gplx.*; import gplx.xow
|
|||||||
import gplx.dbs.*;
|
import gplx.dbs.*;
|
||||||
class Xob_lnki_temp_row implements CompareAble {
|
class Xob_lnki_temp_row implements CompareAble {
|
||||||
public int Xomp_uid() {return xomp_uid;} private int xomp_uid;
|
public int Xomp_uid() {return xomp_uid;} private int xomp_uid;
|
||||||
public int Make_uid() {return make_uid;} private int make_uid;
|
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;
|
public int Lnki_tier_id() {return lnki_tier_id;} private int lnki_tier_id;
|
||||||
public int Lnki_page_id() {return lnki_page_id;} private int lnki_page_id;
|
public int Lnki_page_id() {return lnki_page_id;} private int lnki_page_id;
|
||||||
public byte[] Lnki_ttl() {return lnki_ttl;} private byte[] lnki_ttl;
|
public byte[] Lnki_ttl() {return lnki_ttl;} private byte[] lnki_ttl;
|
||||||
@ -34,24 +34,24 @@ class Xob_lnki_temp_row implements CompareAble {
|
|||||||
public int Lnki_page() {return lnki_page;} private int lnki_page;
|
public int Lnki_page() {return lnki_page;} private int lnki_page;
|
||||||
public void Load(Db_rdr rdr, int xomp_uid) {
|
public void Load(Db_rdr rdr, int xomp_uid) {
|
||||||
this.xomp_uid = xomp_uid;
|
this.xomp_uid = xomp_uid;
|
||||||
this.make_uid = rdr.Read_int("lnki_make_uid");
|
this.lnki_id = rdr.Read_int("lnki_id");
|
||||||
this.lnki_tier_id = rdr.Read_int("lnki_tier_id");
|
this.lnki_tier_id = rdr.Read_int("lnki_tier_id");
|
||||||
this.lnki_page_id = rdr.Read_int("lnki_page_id");
|
this.lnki_page_id = rdr.Read_int("lnki_page_id");
|
||||||
this.lnki_ttl = rdr.Read_bry_by_str("lnki_ttl");
|
this.lnki_ttl = rdr.Read_bry_by_str("lnki_ttl");
|
||||||
this.lnki_commons_ttl = rdr.Read_bry_by_str("lnki_commons_ttl");
|
this.lnki_commons_ttl = Bry_.new_u8_safe(rdr.Read_str("lnki_commons_ttl"));
|
||||||
this.lnki_ext = rdr.Read_byte("lnki_ext");
|
this.lnki_ext = rdr.Read_byte("lnki_ext");
|
||||||
this.lnki_type = rdr.Read_byte("lnki_type");
|
this.lnki_type = rdr.Read_byte("lnki_type");
|
||||||
this.lnki_src_tid = rdr.Read_byte("lnki_src_tid");
|
this.lnki_src_tid = rdr.Read_byte("lnki_src_tid");
|
||||||
this.lnki_w = rdr.Read_int("lnki_w");
|
this.lnki_w = rdr.Read_int("lnki_w");
|
||||||
this.lnki_h = rdr.Read_int("lnki_h");
|
this.lnki_h = rdr.Read_int("lnki_h");
|
||||||
this.lnki_upright = rdr.Read_double("lnki_upright");
|
this.lnki_upright = rdr.Read_double("lnki_upright");
|
||||||
this.lnki_time = rdr.Read_int("lnki_time");
|
this.lnki_time = rdr.Read_double("lnki_time");
|
||||||
this.lnki_page = rdr.Read_int("lnki_page");
|
this.lnki_page = rdr.Read_int("lnki_page");
|
||||||
}
|
}
|
||||||
public int compareTo(Object obj) {
|
public int compareTo(Object obj) {
|
||||||
Xob_lnki_temp_row comp = (Xob_lnki_temp_row)obj;
|
Xob_lnki_temp_row comp = (Xob_lnki_temp_row)obj;
|
||||||
int rv = Int_.Compare(xomp_uid, comp.xomp_uid);
|
int rv = Int_.Compare(xomp_uid, comp.xomp_uid);
|
||||||
if (rv != CompareAble_.Same) return rv;
|
if (rv != CompareAble_.Same) return rv;
|
||||||
return Int_.Compare(make_uid, comp.make_uid);
|
return Int_.Compare(lnki_id, comp.lnki_id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -21,8 +21,8 @@ public class Xomp_make_cmd extends Xob_cmd__base {
|
|||||||
public Xomp_make_cmd(Xob_bldr bldr, Xowe_wiki wiki) {super(bldr, wiki);}
|
public Xomp_make_cmd(Xob_bldr bldr, Xowe_wiki wiki) {super(bldr, wiki);}
|
||||||
@Override public void Cmd_run() {
|
@Override public void Cmd_run() {
|
||||||
wiki.Init_assert();
|
wiki.Init_assert();
|
||||||
Xomp_make_wkr wkr = new Xomp_make_wkr(wiki);
|
new Xomp_make_wkr(wiki).Exec();
|
||||||
wkr.Exec();
|
new Xomp_make_lnki().Exec(wiki, 1000);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public String Cmd_key() {return BLDR_CMD_KEY;} private static final String BLDR_CMD_KEY = "wiki.mass_parse.make";
|
@Override public String Cmd_key() {return BLDR_CMD_KEY;} private static final String BLDR_CMD_KEY = "wiki.mass_parse.make";
|
||||||
|
@ -44,7 +44,8 @@ class Xomp_make_lnki {
|
|||||||
Xomp_wkr_db wkr_db = xomp_db.Wkr_db(Bool_.N, i);
|
Xomp_wkr_db wkr_db = xomp_db.Wkr_db(Bool_.N, i);
|
||||||
count += Load_rows(rows, xomp_db, wkr_db, uid_bgn, uid_bgn + uid_count);
|
count += Load_rows(rows, xomp_db, wkr_db, uid_bgn, uid_bgn + uid_count);
|
||||||
}
|
}
|
||||||
if (count == 0) break;
|
if (count < 0) break;
|
||||||
|
uid_bgn += count;
|
||||||
Save_rows(rows, lnki_temp_tbl);
|
Save_rows(rows, lnki_temp_tbl);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -56,7 +57,7 @@ class Xomp_make_lnki {
|
|||||||
private int Load_rows(List_adp rows, Xomp_db_core xomp_db, Xomp_wkr_db wkr_db, int uid_bgn, int uid_end) {
|
private int Load_rows(List_adp rows, Xomp_db_core xomp_db, Xomp_wkr_db wkr_db, int uid_bgn, int uid_end) {
|
||||||
// build sql
|
// build sql
|
||||||
Db_attach_mgr attach_mgr = new Db_attach_mgr(xomp_db.Conn());
|
Db_attach_mgr attach_mgr = new Db_attach_mgr(xomp_db.Conn());
|
||||||
attach_mgr.Conn_others_(new Db_attach_itm("wkr_db", wkr_db.Conn()));
|
attach_mgr.Conn_links_(new Db_attach_itm("wkr_db", wkr_db.Conn()));
|
||||||
String sql = String_.Format(String_.Concat_lines_nl_skip_last
|
String sql = String_.Format(String_.Concat_lines_nl_skip_last
|
||||||
( "SELECT mgr.xomp_uid"
|
( "SELECT mgr.xomp_uid"
|
||||||
, ", wkr.*"
|
, ", wkr.*"
|
||||||
@ -77,6 +78,7 @@ class Xomp_make_lnki {
|
|||||||
rv = rdr.Read_int("xomp_uid");
|
rv = rdr.Read_int("xomp_uid");
|
||||||
Xob_lnki_temp_row row = new Xob_lnki_temp_row();
|
Xob_lnki_temp_row row = new Xob_lnki_temp_row();
|
||||||
row.Load(rdr, rv);
|
row.Load(rdr, rv);
|
||||||
|
rows.Add(row);
|
||||||
}
|
}
|
||||||
} finally {rdr.Rls();}
|
} finally {rdr.Rls();}
|
||||||
attach_mgr.Detach();
|
attach_mgr.Detach();
|
||||||
|
@ -64,7 +64,7 @@ class Xomp_load_wkr implements Gfo_invk {
|
|||||||
, "AND mp.page_status = 0"
|
, "AND mp.page_status = 0"
|
||||||
, "LIMIT {1}"
|
, "LIMIT {1}"
|
||||||
), prv_page_id, queue.Capacity());
|
), prv_page_id, queue.Capacity());
|
||||||
this.attach_mgr.Conn_others_(new Db_attach_itm("page_db", wiki.Data__core_mgr().Db__core().Conn()));
|
this.attach_mgr.Conn_links_(new Db_attach_itm("page_db", wiki.Data__core_mgr().Db__core().Conn()));
|
||||||
sql = attach_mgr.Resolve_sql(sql);
|
sql = attach_mgr.Resolve_sql(sql);
|
||||||
|
|
||||||
// page_tbl.load_sql
|
// page_tbl.load_sql
|
||||||
|
@ -60,7 +60,7 @@ class Xomp_page_pool_loader {
|
|||||||
, "AND mp.page_status = 0"
|
, "AND mp.page_status = 0"
|
||||||
, "LIMIT {1}"
|
, "LIMIT {1}"
|
||||||
), prv_uid, num_pages_per_load);
|
), prv_uid, num_pages_per_load);
|
||||||
this.attach_mgr.Conn_others_(new Db_attach_itm("page_db", wiki.Data__core_mgr().Db__core().Conn()));
|
this.attach_mgr.Conn_links_(new Db_attach_itm("page_db", wiki.Data__core_mgr().Db__core().Conn()));
|
||||||
sql = attach_mgr.Resolve_sql(sql);
|
sql = attach_mgr.Resolve_sql(sql);
|
||||||
|
|
||||||
// run page_tbl
|
// run page_tbl
|
||||||
|
@ -34,7 +34,7 @@ class Xomp_parse_mgr {
|
|||||||
Xomp_page_pool page_pool = new Xomp_page_pool(pool_loader, cfg.Num_pages_per_wkr());
|
Xomp_page_pool page_pool = new Xomp_page_pool(pool_loader, cfg.Num_pages_per_wkr());
|
||||||
prog_mgr.Init(pool_loader.Get_pending_count(), cfg.Progress_interval());
|
prog_mgr.Init(pool_loader.Get_pending_count(), cfg.Progress_interval());
|
||||||
wiki.App().User().User_db_mgr().Cache_mgr().Enabled_n_(); // disable db lookups of cache
|
wiki.App().User().User_db_mgr().Cache_mgr().Enabled_n_(); // disable db lookups of cache
|
||||||
Xow_page_cache page_cache = Xomp_tmpl_cache_bldr.New(wiki, true);
|
Xow_page_cache page_cache = Xomp_tmpl_cache_bldr.New(wiki, cfg.Load_all_templates());
|
||||||
Gfo_cache_mgr commons_cache = new Gfo_cache_mgr().Max_size_(Int_.Max_value).Reduce_by_(Int_.Max_value);
|
Gfo_cache_mgr commons_cache = new Gfo_cache_mgr().Max_size_(Int_.Max_value).Reduce_by_(Int_.Max_value);
|
||||||
Gfo_cache_mgr ifexist_cache = new Gfo_cache_mgr().Max_size_(Int_.Max_value).Reduce_by_(Int_.Max_value);
|
Gfo_cache_mgr ifexist_cache = new Gfo_cache_mgr().Max_size_(Int_.Max_value).Reduce_by_(Int_.Max_value);
|
||||||
|
|
||||||
@ -47,8 +47,8 @@ class Xomp_parse_mgr {
|
|||||||
latch = new Gfo_countdown_latch(wkr_len);
|
latch = new Gfo_countdown_latch(wkr_len);
|
||||||
Xomp_parse_wkr[] wkrs = new Xomp_parse_wkr[wkr_len];
|
Xomp_parse_wkr[] wkrs = new Xomp_parse_wkr[wkr_len];
|
||||||
for (int i = 0; i < wkr_len; ++i) {
|
for (int i = 0; i < wkr_len; ++i) {
|
||||||
Xowe_wiki wkr_wiki = Clone_wiki(wiki);
|
Xowe_wiki wkr_wiki = Xow_wiki_utl_.Clone_wiki(wiki, wiki.Fsys_mgr().Root_dir());
|
||||||
Xomp_parse_wkr wkr = new Xomp_parse_wkr(this, wkr_wiki, page_pool, i, cfg.Cleanup_interval(), cfg.Progress_interval(), cfg.Log_file_lnkis());
|
Xomp_parse_wkr wkr = new Xomp_parse_wkr(this, wkr_wiki, page_pool, i, cfg, cfg.Cleanup_interval(), cfg.Progress_interval(), cfg.Log_file_lnkis());
|
||||||
wkr_wiki.Cache_mgr().Page_cache_(page_cache).Commons_cache_(commons_cache).Ifexist_cache_(ifexist_cache);
|
wkr_wiki.Cache_mgr().Page_cache_(page_cache).Commons_cache_(commons_cache).Ifexist_cache_(ifexist_cache);
|
||||||
// remove wmf wkr, else will try to download images during parsing
|
// remove wmf wkr, else will try to download images during parsing
|
||||||
if (wkr_wiki.File__bin_mgr() != null)
|
if (wkr_wiki.File__bin_mgr() != null)
|
||||||
@ -74,11 +74,4 @@ class Xomp_parse_mgr {
|
|||||||
}
|
}
|
||||||
Gfo_usr_dlg_.Instance.Note_many("", "", bfr.To_str_and_clear());
|
Gfo_usr_dlg_.Instance.Note_many("", "", bfr.To_str_and_clear());
|
||||||
}
|
}
|
||||||
private static Xowe_wiki Clone_wiki(Xowe_wiki wiki) {
|
|
||||||
Xol_lang_itm lang = new Xol_lang_itm(wiki.App().Lang_mgr(), wiki.Lang().Key_bry());
|
|
||||||
Xol_lang_itm_.Lang_init(lang);
|
|
||||||
Xowe_wiki rv = new Xowe_wiki(wiki.Appe(), lang, gplx.xowa.wikis.nss.Xow_ns_mgr_.default_(lang.Case_mgr()), wiki.Domain_itm(), wiki.Fsys_mgr().Root_dir());
|
|
||||||
rv.Init_by_wiki();
|
|
||||||
return rv;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -16,6 +16,7 @@ You should have received a copy of the GNU Affero General Public License
|
|||||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
package gplx.xowa.addons.bldrs.mass_parses.parses; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.mass_parses.*;
|
package gplx.xowa.addons.bldrs.mass_parses.parses; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.mass_parses.*;
|
||||||
|
import gplx.core.ios.streams.*;
|
||||||
class Xomp_parse_mgr_cfg implements Gfo_invk {
|
class Xomp_parse_mgr_cfg implements Gfo_invk {
|
||||||
public int Num_wkrs() {return num_wkrs;} private int num_wkrs = -1; // use env.available_processors
|
public int Num_wkrs() {return num_wkrs;} private int num_wkrs = -1; // use env.available_processors
|
||||||
public int Num_pages_in_pool() {return num_pages_in_pool;} private int num_pages_in_pool = 1000;
|
public int Num_pages_in_pool() {return num_pages_in_pool;} private int num_pages_in_pool = 1000;
|
||||||
@ -27,6 +28,8 @@ class Xomp_parse_mgr_cfg implements Gfo_invk {
|
|||||||
public boolean Hzip_enabled() {return hzip_enabled;} private boolean hzip_enabled = true;
|
public boolean Hzip_enabled() {return hzip_enabled;} private boolean hzip_enabled = true;
|
||||||
public boolean Hdiff_enabled() {return hdiff_enabled;} private boolean hdiff_enabled = true;
|
public boolean Hdiff_enabled() {return hdiff_enabled;} private boolean hdiff_enabled = true;
|
||||||
public boolean Log_file_lnkis() {return log_file_lnkis;} private boolean log_file_lnkis = true;
|
public boolean Log_file_lnkis() {return log_file_lnkis;} private boolean log_file_lnkis = true;
|
||||||
|
public boolean Load_all_templates() {return load_all_templates;} private boolean load_all_templates = true;
|
||||||
|
public byte Zip_tid() {return zip_tid;} private byte zip_tid = Io_stream_.Tid_gzip;
|
||||||
public void Init(Xowe_wiki wiki) {
|
public void Init(Xowe_wiki wiki) {
|
||||||
if (num_wkrs == -1) num_wkrs = gplx.core.envs.Env_.System_cpu_count();
|
if (num_wkrs == -1) num_wkrs = gplx.core.envs.Env_.System_cpu_count();
|
||||||
}
|
}
|
||||||
@ -41,12 +44,16 @@ class Xomp_parse_mgr_cfg implements Gfo_invk {
|
|||||||
else if (ctx.Match(k, Invk__hdump_enabled_)) hdump_enabled = m.ReadBool("v");
|
else if (ctx.Match(k, Invk__hdump_enabled_)) hdump_enabled = m.ReadBool("v");
|
||||||
else if (ctx.Match(k, Invk__hzip_enabled_)) hzip_enabled = m.ReadBool("v");
|
else if (ctx.Match(k, Invk__hzip_enabled_)) hzip_enabled = m.ReadBool("v");
|
||||||
else if (ctx.Match(k, Invk__hdiff_enabled_)) hdiff_enabled = m.ReadBool("v");
|
else if (ctx.Match(k, Invk__hdiff_enabled_)) hdiff_enabled = m.ReadBool("v");
|
||||||
|
else if (ctx.Match(k, Invk__zip_tid_)) zip_tid = m.ReadByte("v");
|
||||||
|
else if (ctx.Match(k, Invk__load_all_templates_)) load_all_templates = m.ReadYn("v");
|
||||||
|
else if (ctx.Match(k, Invk__manual_now_)) Datetime_now.Manual_and_freeze_(m.ReadDate("v"));
|
||||||
else return Gfo_invk_.Rv_unhandled;
|
else return Gfo_invk_.Rv_unhandled;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
private static final String
|
private static final String
|
||||||
Invk__num_wkrs_ = "num_wkrs_", Invk__num_pages_in_pool_ = "num_pages_in_pool_", Invk__num_pages_per_wkr_ = "num_pages_per_wkr_"
|
Invk__num_wkrs_ = "num_wkrs_", Invk__num_pages_in_pool_ = "num_pages_in_pool_", Invk__num_pages_per_wkr_ = "num_pages_per_wkr_"
|
||||||
, Invk__progress_interval_ = "progress_interval_", Invk__commit_interval_ = "commit_interval_", Invk__cleanup_interval_ = "cleanup_interval_"
|
, Invk__progress_interval_ = "progress_interval_", Invk__commit_interval_ = "commit_interval_", Invk__cleanup_interval_ = "cleanup_interval_"
|
||||||
, Invk__hdump_enabled_ = "hdump_enabled_", Invk__hzip_enabled_ = "hzip_enabled_", Invk__hdiff_enabled_ = "hdiff_enabled_"
|
, Invk__hdump_enabled_ = "hdump_enabled_", Invk__hzip_enabled_ = "hzip_enabled_", Invk__hdiff_enabled_ = "hdiff_enabled_", Invk__zip_tid_ = "zip_tid_"
|
||||||
|
, Invk__load_all_templates_ = "load_all_templates_", Invk__manual_now_ = "manual_now_"
|
||||||
;
|
;
|
||||||
}
|
}
|
||||||
|
@ -24,14 +24,16 @@ class Xomp_parse_wkr implements Gfo_invk {
|
|||||||
private final Xomp_page_pool page_pool;
|
private final Xomp_page_pool page_pool;
|
||||||
private final int idx;
|
private final int idx;
|
||||||
private final List_adp list = List_adp_.New(); private int list_idx = 0, list_len = 0;
|
private final List_adp list = List_adp_.New(); private int list_idx = 0, list_len = 0;
|
||||||
|
private final Xomp_parse_mgr_cfg cfg;
|
||||||
private int done_count; private long done_time;
|
private int done_count; private long done_time;
|
||||||
private Xomp_wkr_db wkr_db; private int cleanup_interval, commit_interval;
|
private Xomp_wkr_db wkr_db; private int cleanup_interval, commit_interval;
|
||||||
private boolean log_file_lnkis;
|
private boolean log_file_lnkis;
|
||||||
public Xomp_parse_wkr(Xomp_parse_mgr mgr, Xowe_wiki wiki, Xomp_page_pool page_pool, int idx, int cleanup_interval, int commit_interval, boolean log_file_lnkis) {
|
public Xomp_parse_wkr(Xomp_parse_mgr mgr, Xowe_wiki wiki, Xomp_page_pool page_pool, int idx, Xomp_parse_mgr_cfg cfg, int cleanup_interval, int commit_interval, boolean log_file_lnkis) {
|
||||||
this.mgr = mgr; this.wiki = wiki;
|
this.mgr = mgr; this.wiki = wiki;
|
||||||
this.page_pool = page_pool;
|
this.page_pool = page_pool;
|
||||||
this.idx = idx;
|
this.idx = idx;
|
||||||
this.wkr_db = mgr.Db_core().Wkr_db(Bool_.Y, idx); // NOTE: must go in ctor, or else thread issues
|
this.wkr_db = mgr.Db_core().Wkr_db(Bool_.Y, idx); // NOTE: must go in ctor, or else thread issues
|
||||||
|
this.cfg = cfg;
|
||||||
this.cleanup_interval = cleanup_interval;
|
this.cleanup_interval = cleanup_interval;
|
||||||
this.commit_interval = commit_interval;
|
this.commit_interval = commit_interval;
|
||||||
this.log_file_lnkis = log_file_lnkis;
|
this.log_file_lnkis = log_file_lnkis;
|
||||||
@ -40,7 +42,7 @@ class Xomp_parse_wkr implements Gfo_invk {
|
|||||||
public Xob_hdump_bldr Hdump_bldr() {return hdump_bldr;} private final Xob_hdump_bldr hdump_bldr = new Xob_hdump_bldr();
|
public Xob_hdump_bldr Hdump_bldr() {return hdump_bldr;} private final Xob_hdump_bldr hdump_bldr = new Xob_hdump_bldr();
|
||||||
public void Exec() {
|
public void Exec() {
|
||||||
// init
|
// init
|
||||||
Xow_parser_mgr parser_mgr = new Xow_parser_mgr(wiki);
|
Xow_parser_mgr parser_mgr = wiki.Parser_mgr();
|
||||||
|
|
||||||
// disable file download
|
// disable file download
|
||||||
wiki.File_mgr().Init_file_mgr_by_load(wiki); // must happen after fsdb.make
|
wiki.File_mgr().Init_file_mgr_by_load(wiki); // must happen after fsdb.make
|
||||||
@ -59,7 +61,7 @@ class Xomp_parse_wkr implements Gfo_invk {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// enable hdump
|
// enable hdump
|
||||||
hdump_bldr.Enabled_(true).Hzip_enabled_(true).Hzip_diff_(true).Init(wiki, wkr_db.Conn(), new Xob_hdump_tbl_retriever__xomp(wkr_db.Html_tbl()));
|
hdump_bldr.Enabled_(cfg.Hdump_enabled()).Hzip_enabled_(cfg.Hzip_enabled()).Hzip_diff_(cfg.Hzip_enabled()).Zip_tid_(cfg.Zip_tid()).Init(wiki, wkr_db.Conn(), new Xob_hdump_tbl_retriever__xomp(wkr_db.Html_tbl()));
|
||||||
wkr_db.Conn().Txn_bgn("xomp");
|
wkr_db.Conn().Txn_bgn("xomp");
|
||||||
|
|
||||||
while (true) {
|
while (true) {
|
||||||
|
@ -22,9 +22,10 @@ import gplx.xowa.wikis.data.tbls.*;
|
|||||||
class Xomp_text_db_loader {
|
class Xomp_text_db_loader {
|
||||||
private final Xow_wiki wiki;
|
private final Xow_wiki wiki;
|
||||||
private final Ordered_hash text_db_hash = Ordered_hash_.New();
|
private final Ordered_hash text_db_hash = Ordered_hash_.New();
|
||||||
private final Io_stream_zip_mgr zip_mgr = Xoa_app_.Utl__zip_mgr();
|
private final Io_stream_zip_mgr zip_mgr;
|
||||||
public Xomp_text_db_loader(Xow_wiki wiki) {
|
public Xomp_text_db_loader(Xow_wiki wiki) {
|
||||||
this.wiki = wiki;
|
this.wiki = wiki;
|
||||||
|
this.zip_mgr = wiki.Utl__zip_mgr();
|
||||||
}
|
}
|
||||||
public void Add(int text_db_id, Xowd_text_bry_owner ppg) {
|
public void Add(int text_db_id, Xowd_text_bry_owner ppg) {
|
||||||
Xomp_text_db_itm itm = (Xomp_text_db_itm)text_db_hash.Get_by(text_db_id);
|
Xomp_text_db_itm itm = (Xomp_text_db_itm)text_db_hash.Get_by(text_db_id);
|
||||||
|
@ -71,11 +71,26 @@ class Xomp_tmpl_cache_bldr {
|
|||||||
for (int i = 0; i < redirect_len; ++i) {
|
for (int i = 0; i < redirect_len; ++i) {
|
||||||
Xow_page_cache_itm src_itm = (Xow_page_cache_itm)redirect_list.Get_at(i);
|
Xow_page_cache_itm src_itm = (Xow_page_cache_itm)redirect_list.Get_at(i);
|
||||||
Xow_page_cache_itm trg_itm = (Xow_page_cache_itm)page_regy.Get_by(src_itm.Redirect_id());
|
Xow_page_cache_itm trg_itm = (Xow_page_cache_itm)page_regy.Get_by(src_itm.Redirect_id());
|
||||||
if (trg_itm == null) {
|
byte[] trg_itm_wtxt = null;
|
||||||
Gfo_usr_dlg_.Instance.Prog_many("", "", "missing redirect for tmpl: ~{0}", src_itm.Ttl().Full_db());
|
Xoa_ttl trg_ttl = null;
|
||||||
continue;
|
if (trg_itm == null) { // template can redirect to non-template pages
|
||||||
|
Xoa_ttl src_ttl = src_itm.Ttl();
|
||||||
|
Xoae_page wpg = Xoae_page.New(wiki, src_ttl);
|
||||||
|
wiki.Data_mgr().Load_from_db(wpg, src_ttl.Ns(), src_ttl, false);
|
||||||
|
if (wpg.Db().Page().Exists()) {
|
||||||
|
trg_itm_wtxt = wpg.Db().Text().Text_bry();
|
||||||
|
trg_ttl = wpg.Ttl();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
Gfo_usr_dlg_.Instance.Prog_many("", "", "missing redirect for tmpl: ~{0}", src_itm.Ttl().Full_db());
|
||||||
|
continue;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
src_itm.Set_redirect_bry(trg_itm.Wtxt__direct());
|
else {
|
||||||
|
trg_itm_wtxt = trg_itm.Wtxt__direct();
|
||||||
|
trg_ttl = trg_itm.Ttl();
|
||||||
|
}
|
||||||
|
src_itm.Set_redirect(trg_ttl, trg_itm_wtxt); // NOTE: itm must have title of redirect, not original item; EX:Template:Ifempty -> Template:If_empty; DATE:2016-07-26
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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 <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
package gplx.xowa.addons.bldrs.mass_parses.parses; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.mass_parses.*;
|
||||||
|
import gplx.xowa.langs.*; import gplx.xowa.langs.cases.*;
|
||||||
|
public class Xow_wiki_utl_ {
|
||||||
|
public static Xowe_wiki Clone_wiki(Xowe_wiki wiki, Io_url wiki_dir) {
|
||||||
|
Xol_lang_itm lang = new Xol_lang_itm(wiki.App().Lang_mgr(), wiki.Lang().Key_bry());
|
||||||
|
Xol_lang_itm_.Lang_init(lang);
|
||||||
|
Xowe_wiki rv = new Xowe_wiki(wiki.Appe(), lang, gplx.xowa.wikis.nss.Xow_ns_mgr_.default_(lang.Case_mgr()), wiki.Domain_itm(), wiki_dir);
|
||||||
|
rv.Init_by_wiki();
|
||||||
|
return rv;
|
||||||
|
}
|
||||||
|
}
|
@ -40,7 +40,7 @@ class Xow_import_dir_cbk__xodir implements Xow_import_dir_cbk {
|
|||||||
wiki.App().User().User_db_mgr().Cfg().Set_app_str("xowa.xodir.custom_dir", path);
|
wiki.App().User().User_db_mgr().Cfg().Set_app_str("xowa.xodir.custom_dir", path);
|
||||||
|
|
||||||
// redirect to import_dir
|
// redirect to import_dir
|
||||||
page.Redirect().Itms__add__special(wiki, Xobc_xodir_special.Prototype.Special__meta());
|
page.Redirect_trail().Itms__add__special(wiki, Xobc_xodir_special.Prototype.Special__meta());
|
||||||
}
|
}
|
||||||
public static Xow_import_dir_cbk__xodir Instance = new Xow_import_dir_cbk__xodir(); Xow_import_dir_cbk__xodir() {}
|
public static Xow_import_dir_cbk__xodir Instance = new Xow_import_dir_cbk__xodir(); Xow_import_dir_cbk__xodir() {}
|
||||||
}
|
}
|
||||||
|
@ -28,7 +28,7 @@ public class Xobc_xodir_special implements Xow_special_page {
|
|||||||
Xobc_xodir_cfg.Set_app_str__selected(wiki.App(), path);
|
Xobc_xodir_cfg.Set_app_str__selected(wiki.App(), path);
|
||||||
// On_path_selected.Invk(null, -1, "", null);
|
// On_path_selected.Invk(null, -1, "", null);
|
||||||
// page.Redirect().Itms__add__special(wiki, Xobc_task_special.Prototype.Special__meta());
|
// page.Redirect().Itms__add__special(wiki, Xobc_task_special.Prototype.Special__meta());
|
||||||
page.Redirect().Itms__add__special(wiki, Prototype.Special__meta());
|
page.Redirect_trail().Itms__add__special(wiki, Prototype.Special__meta());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -61,7 +61,7 @@ public class Xob_css_status {
|
|||||||
}
|
}
|
||||||
if (rv.Fs_exists()) {
|
if (rv.Fs_exists()) {
|
||||||
DateAdp fs_timestamp = Timestamp_load(css_dir);
|
DateAdp fs_timestamp = Timestamp_load(css_dir);
|
||||||
DateAdp db_timestamp = DateAdp_.Now();
|
DateAdp db_timestamp = Datetime_now.Get();
|
||||||
if (db_timestamp.compareTo(fs_timestamp) == CompareAble_.More)
|
if (db_timestamp.compareTo(fs_timestamp) == CompareAble_.More)
|
||||||
rv.Update_tid_db_y_(); // v2_db and later_version; update from db
|
rv.Update_tid_db_y_(); // v2_db and later_version; update from db
|
||||||
else
|
else
|
||||||
|
@ -27,7 +27,7 @@ public class Xowd_css_core_mgr {
|
|||||||
try {
|
try {
|
||||||
conn.Txn_bgn("schema__css_core__set");
|
conn.Txn_bgn("schema__css_core__set");
|
||||||
int css_id = core_tbl.Select_id_by_key(key);
|
int css_id = core_tbl.Select_id_by_key(key);
|
||||||
DateAdp updated_on = DateAdp_.Now().XtoUtc();
|
DateAdp updated_on = Datetime_now.Get().XtoUtc();
|
||||||
if (css_id == -1)
|
if (css_id == -1)
|
||||||
css_id = core_tbl.Insert(key, updated_on);
|
css_id = core_tbl.Insert(key, updated_on);
|
||||||
else {
|
else {
|
||||||
|
@ -64,7 +64,7 @@ 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;
|
private Xowd_css_core_tbl core_tbl; private Xowd_css_file_tbl file_tbl;
|
||||||
public void Clear() {
|
public void Clear() {
|
||||||
Tfds.Now_enabled_y_();
|
Datetime_now.Manual_y_();
|
||||||
Io_mgr.Instance.InitEngine_mem();
|
Io_mgr.Instance.InitEngine_mem();
|
||||||
Db_conn_bldr.Instance.Reg_default_mem();
|
Db_conn_bldr.Instance.Reg_default_mem();
|
||||||
Db_conn conn = Db_conn_bldr.Instance.New(Io_url_.mem_fil_("mem/db/css.sqlite3"));
|
Db_conn conn = Db_conn_bldr.Instance.New(Io_url_.mem_fil_("mem/db/css.sqlite3"));
|
||||||
|
@ -31,7 +31,7 @@ public class Xow_info_special implements Xow_special_page {
|
|||||||
delete_wiki.Data__core_mgr().Rls(); // release connection if open
|
delete_wiki.Data__core_mgr().Rls(); // release connection if open
|
||||||
Delete_wiki_files(delete_wiki.Fsys_mgr().Root_dir());
|
Delete_wiki_files(delete_wiki.Fsys_mgr().Root_dir());
|
||||||
}
|
}
|
||||||
page.Redirect().Itms__add__special(wiki, gplx.xowa.addons.wikis.registrys.lists.Xow_list_special.Prototype.Special__meta());
|
page.Redirect_trail().Itms__add__special(wiki, gplx.xowa.addons.wikis.registrys.lists.Xow_list_special.Prototype.Special__meta());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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_tbl("page", "page_ns__page_id", "page_namespace", "page_id"));
|
page_conn.Meta_idx_create(Dbmeta_idx_itm.new_normal_by_tbl("page", "page_ns__page_id", "page_namespace", "page_id"));
|
||||||
Srch_db_mgr.Optimize_unsafe_(word_conn, Bool_.Y);
|
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")));
|
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.Conn_main_(word_conn).Conn_others_(new Db_attach_itm("page_db", page_conn));
|
attach_mgr.Conn_main_(word_conn).Conn_links_(new Db_attach_itm("page_db", page_conn));
|
||||||
attach_mgr.Exec_sql_w_msg
|
attach_mgr.Exec_sql_w_msg
|
||||||
( "filling search_link_temp (please wait)", String_.Concat_lines_nl_skip_last
|
( "filling search_link_temp (please wait)", String_.Concat_lines_nl_skip_last
|
||||||
( "INSERT INTO search_link_temp (word_id, page_id, page_namespace)"
|
( "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);
|
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_link_tbl link_tbl = search_db_mgr.Tbl__link__ary()[i];
|
||||||
Srch_db_mgr.Optimize_unsafe_(link_tbl.conn, Bool_.Y);
|
Srch_db_mgr.Optimize_unsafe_(link_tbl.conn, Bool_.Y);
|
||||||
attach_mgr.Conn_main_(link_tbl.conn).Conn_others_(new Db_attach_itm("word_db", word_conn));
|
attach_mgr.Conn_main_(link_tbl.conn).Conn_links_(new Db_attach_itm("word_db", word_conn));
|
||||||
attach_mgr.Exec_sql_w_msg
|
attach_mgr.Exec_sql_w_msg
|
||||||
( Bry_fmt.Make_str("filling search_link: ~{idx} of ~{len}", i, len), String_.Concat_lines_nl_skip_last
|
( 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)"
|
( "INSERT INTO search_link (word_id, page_id)"
|
||||||
|
@ -33,8 +33,7 @@ public class Xobldr__link__link_score extends Xob_cmd__base {
|
|||||||
wiki.Init_assert();
|
wiki.Init_assert();
|
||||||
Db_conn plink_conn = Db_conn_bldr.Instance.Get_or_autocreate(false, wiki.Fsys_mgr().Root_dir().GenSubFil(Xob_db_file.Name__page_link));
|
Db_conn plink_conn = Db_conn_bldr.Instance.Get_or_autocreate(false, wiki.Fsys_mgr().Root_dir().GenSubFil(Xob_db_file.Name__page_link));
|
||||||
String page_rank_tbl = Xobldr__page__page_score.Pagerank__tbl_name;
|
String page_rank_tbl = Xobldr__page__page_score.Pagerank__tbl_name;
|
||||||
String log_module = "search.page.score";
|
Gfo_usr_dlg_.Instance.Prog_none("", "", "search.page.score:adding fields to page_rank_temp");
|
||||||
Xoa_app_.Plog_none(log_module, "adding fields to page_rank_temp");
|
|
||||||
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_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_rank_score" , Dbmeta_fld_tid.Itm__double, 0);
|
||||||
plink_conn.Meta_fld_assert(page_rank_tbl, "page_score" , Dbmeta_fld_tid.Itm__int, 0);
|
plink_conn.Meta_fld_assert(page_rank_tbl, "page_score" , Dbmeta_fld_tid.Itm__int, 0);
|
||||||
@ -54,7 +53,7 @@ public class Xobldr__link__link_score extends Xob_cmd__base {
|
|||||||
// calc page_score
|
// calc page_score
|
||||||
if (page_rank_enabled) {
|
if (page_rank_enabled) {
|
||||||
// get min / max
|
// get min / max
|
||||||
Xoa_app_.Plog_none(log_module, "calculating page_rank range");
|
Gfo_usr_dlg_.Instance.Prog_none("", "", "search.page.score:calculating page_rank range");
|
||||||
double page_rank_min = plink_conn.Exec_select_as_double("SELECT Min(page_rank) FROM " + page_rank_tbl, Double_.MinValue); if (page_rank_min == Double_.MinValue) throw Err_.new_("bldr", "failed to get min; tbl=~{0}", page_rank_tbl);
|
double page_rank_min = plink_conn.Exec_select_as_double("SELECT Min(page_rank) FROM " + page_rank_tbl, Double_.MinValue); if (page_rank_min == Double_.MinValue) throw Err_.new_("bldr", "failed to get min; tbl=~{0}", page_rank_tbl);
|
||||||
double page_rank_max = plink_conn.Exec_select_as_double("SELECT Max(page_rank) FROM " + page_rank_tbl, Double_.MinValue); if (page_rank_max == Double_.MinValue) throw Err_.new_("bldr", "failed to get max; tbl=~{0}", page_rank_tbl);
|
double page_rank_max = plink_conn.Exec_select_as_double("SELECT Max(page_rank) FROM " + page_rank_tbl, Double_.MinValue); if (page_rank_max == Double_.MinValue) throw Err_.new_("bldr", "failed to get max; tbl=~{0}", page_rank_tbl);
|
||||||
double page_rank_rng = page_rank_max - page_rank_min;
|
double page_rank_rng = page_rank_max - page_rank_min;
|
||||||
|
@ -59,7 +59,7 @@ class Srch_sym_parser__split implements Srch_sym_parser {
|
|||||||
int hooks_len = hooks_ary.length;
|
int hooks_len = hooks_ary.length;
|
||||||
for (int i = 0; i < hooks_len; ++i) {
|
for (int i = 0; i < hooks_len; ++i) {
|
||||||
byte[] hook = hooks_ary[i];
|
byte[] hook = hooks_ary[i];
|
||||||
trie.Add_obj(hook, Int_obj_val.new_(hook.length));
|
trie.Add_obj(hook, new Int_obj_val(hook.length));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
public int Tid() {return Srch_sym_parser_.Tid__split;}
|
public int Tid() {return Srch_sym_parser_.Tid__split;}
|
||||||
|
@ -21,5 +21,5 @@ public interface Srch_text_parser_wkr {
|
|||||||
}
|
}
|
||||||
class Srch_text_parser_wkr__noop implements Srch_text_parser_wkr {
|
class Srch_text_parser_wkr__noop implements Srch_text_parser_wkr {
|
||||||
public void Parse_done(Srch_word_itm word) {}
|
public void Parse_done(Srch_word_itm word) {}
|
||||||
public static final Srch_text_parser_wkr__noop Instance = new Srch_text_parser_wkr__noop(); Srch_text_parser_wkr__noop() {}
|
public static final Srch_text_parser_wkr__noop Instance = new Srch_text_parser_wkr__noop(); Srch_text_parser_wkr__noop() {} // TS.static
|
||||||
}
|
}
|
||||||
|
@ -53,7 +53,7 @@ public class Srch_link_wkr extends Percentile_select_base {
|
|||||||
this.link_tbl_idx = 0;
|
this.link_tbl_idx = 0;
|
||||||
this.link_tbl_nth = ctx.Tbl__link__ary.length - 1;
|
this.link_tbl_nth = ctx.Tbl__link__ary.length - 1;
|
||||||
sql_root = Srch_link_wkr_.Find_sql_root(ctx);
|
sql_root = Srch_link_wkr_.Find_sql_root(ctx);
|
||||||
attach_mgr.Conn_others_(new Db_attach_itm("page_db", ctx.Db__core.Conn()), new Db_attach_itm("word_db", ctx.Tbl__word.conn));
|
attach_mgr.Conn_links_(new Db_attach_itm("page_db", ctx.Db__core.Conn()), new Db_attach_itm("word_db", ctx.Tbl__word.conn));
|
||||||
super.Select();
|
super.Select();
|
||||||
}
|
}
|
||||||
finally {
|
finally {
|
||||||
|
@ -86,7 +86,7 @@ public class Srch_special_page implements Xow_special_page, Gfo_invk, Gfo_evt_it
|
|||||||
page.Root().Data_htm_(search_page.Root().Data_htm());
|
page.Root().Data_htm_(search_page.Root().Data_htm());
|
||||||
Xoa_url redirect_url = Xoa_url.New(wiki, search_ttl);
|
Xoa_url redirect_url = Xoa_url.New(wiki, search_ttl);
|
||||||
page.Ttl_(search_ttl).Url_(redirect_url);
|
page.Ttl_(search_ttl).Url_(redirect_url);
|
||||||
page.Redirect().Itms__add__article(redirect_url, search_ttl, null);
|
page.Redirect_trail().Itms__add__article(redirect_url, search_ttl, null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
private void Multi_wikis_changed() {
|
private void Multi_wikis_changed() {
|
||||||
|
@ -35,7 +35,8 @@ 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) {
|
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;
|
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, http_root);
|
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);
|
Xoa_gfs_mgr gfs_mgr = new Xoa_gfs_mgr(this, fsys_mgr, null);
|
||||||
|
this.lang_mgr = new Xoa_lang_mgr(this, gfs_mgr);
|
||||||
this.meta_mgr = new Xoa_meta_mgr(this);
|
this.meta_mgr = new Xoa_meta_mgr(this);
|
||||||
this.gfs_mgr = new Xoa_gfs_mgr(this, fsys_mgr, null);
|
this.gfs_mgr = new Xoa_gfs_mgr(this, fsys_mgr, null);
|
||||||
this.file__cache_mgr = new Xof_cache_mgr(usr_dlg, null, null);
|
this.file__cache_mgr = new Xof_cache_mgr(usr_dlg, null, null);
|
||||||
@ -83,7 +84,7 @@ public class Xoav_app implements Xoa_app, Gfo_invk {
|
|||||||
|
|
||||||
public Xowmf_mgr Wmf_mgr() {return wmf_mgr;} private final Xowmf_mgr wmf_mgr = new Xowmf_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;
|
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;
|
||||||
public Bry_bfr_mkr Utl__bfr_mkr() {return Xoa_app_.Utl__bfr_mkr();}
|
public Bry_bfr_mkr Utl__bfr_mkr() {return utl__bry_bfr_mkr;} private final Bry_bfr_mkr utl__bry_bfr_mkr = new Bry_bfr_mkr();
|
||||||
public Json_parser Utl__json_parser() {return utl__json_parser;} private final Json_parser utl__json_parser = new Json_parser();
|
public Json_parser Utl__json_parser() {return utl__json_parser;} private final Json_parser utl__json_parser = new Json_parser();
|
||||||
public boolean Bldr__running() {return bldr__running;} public void Bldr__running_(boolean v) {this.bldr__running = v;} private boolean bldr__running;
|
public boolean Bldr__running() {return bldr__running;} public void Bldr__running_(boolean v) {this.bldr__running = v;} private boolean bldr__running;
|
||||||
public Xop_amp_mgr Utl_amp_mgr() {return utl_amp_mgr;} private Xop_amp_mgr utl_amp_mgr = Xop_amp_mgr.Instance;
|
public Xop_amp_mgr Utl_amp_mgr() {return utl_amp_mgr;} private Xop_amp_mgr utl_amp_mgr = Xop_amp_mgr.Instance;
|
||||||
|
@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License
|
|||||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
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.*;
|
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.*;
|
import gplx.xowa.xtns.wbases.*;
|
||||||
public class Xoapi_wikibase implements Gfo_invk, Gfo_evt_mgr_owner {
|
public class Xoapi_wikibase implements Gfo_invk, Gfo_evt_mgr_owner {
|
||||||
public Xoapi_wikibase() {
|
public Xoapi_wikibase() {
|
||||||
evt_mgr = new Gfo_evt_mgr(this);
|
evt_mgr = new Gfo_evt_mgr(this);
|
||||||
|
@ -38,7 +38,7 @@ public class Xoa_boot_mgr {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
private void Init_env(String[] args) {
|
private void Init_env(String[] args) {
|
||||||
Gfo_usr_dlg_.Instance = usr_dlg = Xoa_app_.usr_dlg_console_();
|
Gfo_usr_dlg_.Instance = usr_dlg = Xoa_app_.New__usr_dlg__console();
|
||||||
Gfo_log_.Instance__set(new gplx.xowa.apps.shells.Gfo_log__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);
|
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);
|
GfuiEnv_.Init_swt(args, Xoa_app_.class);
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user