1
0
mirror of https://github.com/gnosygnu/xowa.git synced 2026-03-02 03:49:30 +00:00

'v3.6.3.1'

This commit is contained in:
gnosygnu
2016-06-19 23:58:10 -04:00
parent 96636f3161
commit d4e8590345
1960 changed files with 20790 additions and 9272 deletions

View File

@@ -18,7 +18,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
//namespace gplx.xowa.files {
// using gplx.xowa.files.caches;
// public class Xoa_file_mgr {
// private final List_adp list = List_adp_.new_();
// private final List_adp list = List_adp_.New();
// public void Clear() {list.Clear();}
// public boolean Check_cache(Xow_wiki wiki, byte[] page_url, Xof_fsdb_itm fsdb_itm) {
// fsdb_itm.Init_at_cache(0, 0, null);

View File

@@ -17,8 +17,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package gplx.xowa.files; import gplx.*; import gplx.xowa.*;
import gplx.xowa.apps.fsys.*; import gplx.xowa.files.exts.*; import gplx.xowa.files.repos.*;
public class Xoa_repo_mgr implements GfoInvkAble {
private final Xoa_fsys_mgr app_fsys; private final Xof_rule_mgr ext_rule_mgr;
public class Xoa_repo_mgr implements Gfo_invk {
private final Xoa_fsys_mgr app_fsys; private final Xof_rule_mgr ext_rule_mgr;
public Xoa_repo_mgr(Xoa_fsys_mgr app_fsys, Xof_rule_mgr ext_rule_mgr) {this.app_fsys = app_fsys; this.ext_rule_mgr = ext_rule_mgr;}
public int Count() {return hash.Count();}
public Xof_repo_itm Get_at(int i) {return (Xof_repo_itm)hash.Get_at(i);}
@@ -50,7 +50,7 @@ public class Xoa_repo_mgr implements GfoInvkAble {
public Xof_repo_itm Add(Xof_repo_itm itm) {hash.Add(itm.Key(), itm); return itm;} private Ordered_hash hash = Ordered_hash_.New_bry();
public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {
if (ctx.Match(k, Invk_set)) return Set(m.ReadStr("key"), m.ReadStr("url"), m.ReadStr("wiki"));
else return GfoInvkAble_.Rv_unhandled;
else return Gfo_invk_.Rv_unhandled;
} private static final String Invk_set = "set";
public Xof_repo_itm Set(String key, String url_str, String wiki) {
byte[] key_bry = Bry_.new_u8(key);

View File

@@ -16,10 +16,10 @@ 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.files; import gplx.*; import gplx.xowa.*;
import gplx.core.ios.*;
import gplx.core.ios.*; import gplx.core.ios.streams.*;
import gplx.fsdb.data.*; import gplx.fsdb.meta.*; import gplx.xowa.files.fsdb.*;
public class Xof_bin_updater {
private final Fsd_img_itm tmp_img_itm = new Fsd_img_itm(); private final Fsd_thm_itm tmp_thm_itm = Fsd_thm_itm.new_(); private final Fsd_fil_itm tmp_fil_itm = new Fsd_fil_itm();
private final Fsd_img_itm tmp_img_itm = new Fsd_img_itm(); private final Fsd_thm_itm tmp_thm_itm = Fsd_thm_itm.new_(); private final Fsd_fil_itm tmp_fil_itm = new Fsd_fil_itm();
public int Save_bin(Fsm_mnt_itm mnt, Fsm_atr_fil atr_fil, Fsm_bin_fil bin_fil, Xof_fsdb_itm fsdb, Io_stream_rdr rdr, long rdr_len) {
int db_uid = -1;
int orig_ext_id = fsdb.Orig_ext().Id();

View File

@@ -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/>.
*/
package gplx.xowa.files; import gplx.*; import gplx.xowa.*;
public class Xof_cfg_download implements GfoInvkAble {
public class Xof_cfg_download implements Gfo_invk {
public Xof_cfg_download() {
this.enabled = true; // CFG: set to false b/c some tests only do parsing [[File:A.png]] and repos are not set up
this.redownload = Redownload_none; // CFG: set to none to be as conservative as possible
@@ -29,7 +29,7 @@ public class Xof_cfg_download implements GfoInvkAble {
else if (ctx.Match(k, Invk_redownload)) return Redownload_to_str_(redownload);
else if (ctx.Match(k, Invk_redownload_)) redownload = Redownload_parse_(m.ReadStr("v"));
else if (ctx.Match(k, Invk_redownload_toggle)) redownload = redownload == Redownload_none ? Redownload_missing : Redownload_none;
else return GfoInvkAble_.Rv_unhandled;
else return Gfo_invk_.Rv_unhandled;
return this;
} private static final String Invk_enabled_ = "enabled_", Invk_redownload = "redownload", Invk_redownload_ = "redownload_", Invk_redownload_toggle = "redownload_toggle";
byte Redownload_parse_(String s) {

View File

@@ -20,12 +20,12 @@ import gplx.dbs.*;
import gplx.xowa.files.commons.*; import gplx.xowa.files.exts.*; import gplx.xowa.files.caches.*; import gplx.xowa.files.imgs.*;
import gplx.xowa.bldrs.wms.*;
import gplx.xowa.xtns.math.*;
public class Xof_file_mgr implements GfoInvkAble {
public class Xof_file_mgr implements Gfo_invk {
public Xoa_repo_mgr Repo_mgr() {return repo_mgr;} private Xoa_repo_mgr repo_mgr;
public Xof_img_mgr Img_mgr() {return img_mgr;} private final Xof_img_mgr img_mgr = new Xof_img_mgr();
public Xof_img_mgr Img_mgr() {return img_mgr;} private final Xof_img_mgr img_mgr = new Xof_img_mgr();
public Xof_cache_mgr Cache_mgr() {return cache_mgr;} private Xof_cache_mgr cache_mgr;
public Xof_math_mgr Math_mgr() {return math_mgr;} private final Xof_math_mgr math_mgr = new Xof_math_mgr();
public Xof_rule_mgr Ext_rules() {return ext_rules;} private final Xof_rule_mgr ext_rules = new Xof_rule_mgr();
public Xof_math_mgr Math_mgr() {return math_mgr;} private final Xof_math_mgr math_mgr = new Xof_math_mgr();
public Xof_rule_mgr Ext_rules() {return ext_rules;} private final Xof_rule_mgr ext_rules = new Xof_rule_mgr();
public Xoa_wmf_mgr Wmf_mgr() {return wmf_mgr;} private Xoa_wmf_mgr wmf_mgr;
public void Ctor_by_app(Xoae_app app) {
Gfo_usr_dlg usr_dlg = app.Usr_dlg();
@@ -42,6 +42,6 @@ public class Xof_file_mgr implements GfoInvkAble {
else if (ctx.Match(k, Invk_math)) return math_mgr;
else if (ctx.Match(k, Invk_download)) return wmf_mgr; // NOTE: do not rename "download" to wmf_mgr
else if (ctx.Match(k, Invk_cache_mgr)) return cache_mgr;
else return GfoInvkAble_.Rv_unhandled;
else return Gfo_invk_.Rv_unhandled;
} private static final String Invk_repos = "repos", Invk_img_mgr= "img_mgr", Invk_ext_rules = "ext_rules", Invk_math = "math", Invk_download = "download", Invk_cache_mgr = "cache_mgr";
}

View File

@@ -16,40 +16,28 @@ 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.files; import gplx.*; import gplx.xowa.*;
import gplx.core.threads.*; import gplx.core.ios.*;
import gplx.core.threads.*; import gplx.core.ios.*; import gplx.core.ios.streams.*;
import gplx.fsdb.*; import gplx.fsdb.meta.*; import gplx.fsdb.data.*; import gplx.xowa.files.fsdb.*;
import gplx.xowa.files.repos.*; import gplx.xowa.files.origs.*; import gplx.xowa.files.bins.*; import gplx.xowa.files.caches.*; import gplx.xowa.files.gui.*;
import gplx.xowa.htmls.core.makes.imgs.*;
public class Xof_file_wkr implements Gfo_thread_wkr {
private final Xof_orig_mgr orig_mgr; private final Xof_bin_mgr bin_mgr; private final Fsm_mnt_mgr mnt_mgr; private final Xou_cache_mgr cache_mgr;
private final Gfo_usr_dlg usr_dlg; private final Xow_repo_mgr repo_mgr; private final Xog_js_wkr js_wkr;
private final Xof_url_bldr url_bldr = Xof_url_bldr.new_v2(); private final Xof_img_size img_size = new Xof_img_size();
private final Xoa_page hpg; private final List_adp imgs;
private final Xof_orig_mgr orig_mgr; private final Xof_bin_mgr bin_mgr; private final Fsm_mnt_mgr mnt_mgr; private final Xou_cache_mgr cache_mgr;
private final Gfo_usr_dlg usr_dlg; private final Xow_repo_mgr repo_mgr; private final Xog_js_wkr js_wkr;
private final Xof_url_bldr url_bldr = Xof_url_bldr.new_v2(); private final Xof_img_size img_size = new Xof_img_size();
private final Xoa_page hpg; private final List_adp imgs;
public Xof_file_wkr(Xof_orig_mgr orig_mgr, Xof_bin_mgr bin_mgr, Fsm_mnt_mgr mnt_mgr, Xou_cache_mgr cache_mgr, Xow_repo_mgr repo_mgr, Xog_js_wkr js_wkr, Xoa_page hpg, List_adp imgs) {
this.orig_mgr = orig_mgr; this.bin_mgr = bin_mgr; this.mnt_mgr = mnt_mgr; this.cache_mgr = cache_mgr;
this.usr_dlg = Gfo_usr_dlg_.Instance; this.repo_mgr = repo_mgr; this.js_wkr = js_wkr;
this.hpg = hpg; this.imgs = imgs;
}
public String Name() {return "xowa.load_imgs";}
public boolean Resume() {return true;}
public void Exec() {
public String Thread__name() {return "xowa.load_imgs";}
public boolean Thread__resume() {return true;}
public void Thread__exec() {
int len = imgs.Count();
for (int i = 0; i < len; ++i)
Exec_by_fsdb((Xof_fsdb_itm)imgs.Get_at(i));
Xoa_app_.Usr_dlg().Prog_none("", "", "");
}
public void Exec_old() {
int len = imgs.Count();
for (int i = 0; i < len; ++i)
Ctor_by_hdump(hpg, (Xohd_img_itm__base)imgs.Get_at(i));
Xoa_app_.Usr_dlg().Prog_none("", "", "");
}
private void Ctor_by_hdump(Xoa_page hpg, Xohd_img_itm__base hdump) {
Xof_fsdb_itm fsdb = new Xof_fsdb_itm();
fsdb.Init_at_lnki(Xof_exec_tid.Tid_wiki_page, hpg.Wiki().Domain_itm().Abrv_xo(), hdump.Lnki_ttl(), hdump.Lnki_type(), hdump.Lnki_upright(), hdump.Lnki_w(), hdump.Lnki_h(), hdump.Lnki_time(), hdump.Lnki_page(), Xof_patch_upright_tid_.Tid_all);
fsdb.Init_at_hdoc(hdump.Html_uid(), hdump.Html_elem_tid());
Exec_by_fsdb(fsdb);
}
private void Exec_by_fsdb(Xof_fsdb_itm fsdb) {
try {
if (fsdb.File_exists_in_cache()) return;
@@ -85,7 +73,7 @@ public class Xof_file_wkr implements Gfo_thread_wkr {
if (!pass) {
usr_dlg.Warn_many("", "", "file.missing.bin: file=~{0} width=~{1} page=~{2}", fsdb.Orig_ttl(), fsdb.Lnki_w(), page.Ttl().Full_db());
fsdb.File_exists_n_();
// gplx.xowa.files.gui.Js_img_mgr.Update_img_missing(usr_dlg, fsdb.Html_uid()); // TODO: update caption with "" if image is missing
// gplx.xowa.files.gui.Js_img_mgr.Update_img_missing(usr_dlg, fsdb.Html_uid()); // TODO_OLD: update caption with "" if image is missing
return false;
}
}
@@ -132,7 +120,7 @@ public class Xof_file_wkr implements Gfo_thread_wkr {
}
public static void Save_bin(Xof_fsdb_itm itm, Fsm_mnt_mgr mnt_mgr, Io_url html_url) {
long rdr_len = Io_mgr.Instance.QueryFil(html_url).Size();
Io_stream_rdr rdr = gplx.core.ios.Io_stream_rdr_.file_(html_url);
Io_stream_rdr rdr = gplx.core.ios.streams.Io_stream_rdr_.file_(html_url);
try {
rdr.Open();
Fsm_mnt_itm mnt_itm = mnt_mgr.Mnts__get_insert();

View File

@@ -23,9 +23,9 @@ class Xof_redlink_wkr implements Gfo_thread_wkr {
public Xof_redlink_wkr(Xog_js_wkr js_wkr, int[] uids) {
this.js_wkr = js_wkr; this.uids = uids;
}
public String Name() {return "xowa.redlinks";}
public boolean Resume() {return true;}
public void Exec() {
public String Thread__name() {return "xowa.redlinks";}
public boolean Thread__resume() {return true;}
public void Thread__exec() {
int len = uids.length;
for (int i = 0; i < len; ++i) {
int uid = uids[i];

View File

@@ -20,7 +20,7 @@ import gplx.core.envs.*;
import gplx.langs.htmls.encoders.*;
import gplx.xowa.files.repos.*; import gplx.xowa.files.fsdb.*;
public class Xof_url_bldr {
private final Bry_bfr bfr = Bry_bfr.reset_(400);
private final Bry_bfr bfr = Bry_bfr_.Reset(400);
private byte[] ttl; private byte[] md5; private Xof_ext ext; private boolean file_is_thumb; private int file_w;
private double time = Xof_lnki_time.Null; private int page = Xof_lnki_page.Null; private byte time_dlm = Byte_ascii.At;
private byte[] root; private byte dir_spr; private boolean fsys_tid_is_wnt; private boolean wmf_dir_hive; private boolean wmf_protocol_is_file; private int md5_dir_depth; private byte[] area;
@@ -195,17 +195,17 @@ public class Xof_url_bldr {
bfr.Clear();
return this;
}
public static final byte[]
public static final byte[]
Bry_reg = Bry_.new_a7("reg.csv")
, Bry_px = Bry_.new_a7("px"), Bry_px_dash = Bry_.new_a7("px-")
, Bry_thumb = Bry_.new_a7("thumb")
, Bry_thumnbail_w_dot = Bry_.new_a7("thumbnail.")
;
private static final byte[]
private static final byte[]
Bry_lossy_page = Bry_.new_a7("lossy-page"), Bry_page = Bry_.new_a7("page")
, Bry_lossy_page1 = Bry_.new_a7("lossy-page1-"), Bry_page1 = Bry_.new_a7("page1-"), Bry_seek = Bry_.new_a7("seek%3D");
public static final Xof_url_bldr Temp = new Xof_url_bldr();
private static final Gfo_url_encoder encoder_src_http = Gfo_url_encoder_.Http_url; // NOTE: changed from new_html_href_mw_ to new_url_ on 2012-11-19; issues with A%2Cb becoming A%252Cb
public static final Xof_url_bldr Temp = new Xof_url_bldr();
private static final Gfo_url_encoder encoder_src_http = Gfo_url_encoder_.Http_url; // NOTE: changed from new_html_href_mw_ to new_url_ on 2012-11-19; issues with A%2Cb becoming A%252Cb
public static Xof_url_bldr new_v2() {
Xof_url_bldr rv = new Xof_url_bldr();
rv.time_dlm = Byte_ascii.Dash;

View File

@@ -22,7 +22,7 @@ public class Xof_url_bldr_tst {
@Before public void init() {fxt.Clear();}
@Test public void Ogv() {fxt.Dir_spr_http_().Root_("http://test/").Md5_("d0").Ttl_("A.ogv").W_(220).Expd_src_("http://test/thumb/d/d0/A.ogv/220px--A.ogv.jpg").Test();}
@Test public void Ogv__seek() {fxt.Dir_spr_http_().Root_("http://test/").Md5_("d0").Ttl_("A.ogv").W_(220).Expd_src_("http://test/thumb/d/d0/A.ogv/220px-seek%3D5-A.ogv.jpg").Seek_(5).Test();}
@Test public void Ogv__no_w() {fxt.Dir_spr_http_().Root_("http://test/").Md5_("d0").Ttl_("A.ogv").W_( -1).Expd_src_("http://test/thumb/d/d0/A.ogv/-1px--A.ogv.jpg").Test();} // TODO: use orig_w, not -1
@Test public void Ogv__no_w() {fxt.Dir_spr_http_().Root_("http://test/").Md5_("d0").Ttl_("A.ogv").W_( -1).Expd_src_("http://test/thumb/d/d0/A.ogv/-1px--A.ogv.jpg").Test();} // TODO_OLD: use orig_w, not -1
@Test public void Xcf() {fxt.Dir_spr_http_().Root_("http://test/").Md5_("44").Ttl_("A.xcf").W_(220).Expd_src_("http://test/thumb/4/44/A.xcf/220px-A.xcf.png").Test();}
@Test public void Bmp() {fxt.Dir_spr_http_().Root_("http://test/").Md5_("70").Ttl_("A.bmp").W_(220).Expd_src_("http://test/thumb/7/70/A.bmp/220px-A.bmp.png").Test();}
@Test public void Pdf() {fxt.Dir_spr_http_().Root_("http://test/").Md5_("ef").Ttl_("A.pdf").W_(220).Expd_src_("http://test/thumb/e/ef/A.pdf/page1-220px-A.pdf.jpg").Test();}
@@ -36,7 +36,7 @@ public class Xof_url_bldr_tst {
}
}
class Xof_url_bldr_fxt {
private final Xof_url_bldr url_bldr = new Xof_url_bldr();
private final Xof_url_bldr url_bldr = new Xof_url_bldr();
public Xof_url_bldr_fxt Clear() {
dir_spr = Byte_.Zero; ext = null; root = md5 = ttl = expd_src = null;
seek = Xof_lnki_time.Null;

View File

@@ -17,12 +17,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package gplx.xowa.files; import gplx.*; import gplx.xowa.*;
import gplx.xowa.files.fsdb.*;
class Xof_wkr_mgr implements GfoInvkAble {
class Xof_wkr_mgr implements Gfo_invk {
private Xow_file_mgr file_mgr;
public Xof_wkr_mgr(Xow_file_mgr file_mgr) {this.file_mgr = file_mgr;}
public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {
if (ctx.Match(k, Invk_get)) return Get_or_new(m.ReadStr("v"));
else return GfoInvkAble_.Rv_unhandled;
else return Gfo_invk_.Rv_unhandled;
}
private static final String Invk_get = "get";
private Xof_fsdb_mgr Get_or_new(String key) {

View File

@@ -18,8 +18,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
package gplx.xowa.files; import gplx.*; import gplx.xowa.*;
import gplx.core.primitives.*;
public class Xofv_repo_mgr {
private final Hash_adp_bry key_regy = Hash_adp_bry.cs();
private final Hash_adp tid_regy = Hash_adp_.new_(); private final Byte_obj_ref tid_key = Byte_obj_ref.zero_();
private final Hash_adp_bry key_regy = Hash_adp_bry.cs();
private final Hash_adp tid_regy = Hash_adp_.New(); private final Byte_obj_ref tid_key = Byte_obj_ref.zero_();
public Xofv_repo_mgr Add(Xofv_repo_itm itm) {
key_regy.Add(itm.Key(), itm);
tid_regy.Add(Byte_obj_ref.new_(itm.Tid()), itm);

View File

@@ -18,11 +18,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
package gplx.xowa.files; import gplx.*; import gplx.xowa.*;
import gplx.core.threads.*; import gplx.xowa.files.gui.*;
public class Xog_redlink_thread implements Gfo_thread_wkr {
private final int[] redlink_ary; private final Xog_js_wkr js_wkr;
private final int[] redlink_ary; private final Xog_js_wkr js_wkr;
public Xog_redlink_thread(int[] redlink_ary, Xog_js_wkr js_wkr) {this.redlink_ary = redlink_ary; this.js_wkr = js_wkr;}
public String Name() {return "xowa.gui.html.redlinks.set";}
public boolean Resume() {return true;}
public void Exec() {
public String Thread__name() {return "xowa.gui.html.redlinks.set";}
public boolean Thread__resume() {return true;}
public void Thread__exec() {
int len = redlink_ary.length;
for (int i = 0; i < len; ++i) {
js_wkr.Html_redlink(gplx.xowa.parsers.lnkis.redlinks.Xopg_redlink_lnki_list.Lnki_id_prefix + Int_.To_str(redlink_ary[i]));

View File

@@ -20,7 +20,7 @@ import gplx.dbs.*; import gplx.dbs.cfgs.*;
import gplx.xowa.files.repos.*; import gplx.xowa.files.origs.*;
import gplx.fsdb.*; import gplx.fsdb.meta.*; import gplx.xowa.files.fsdb.*;
import gplx.xowa.wikis.tdbs.metas.*;
public class Xow_file_mgr implements GfoInvkAble {
public class Xow_file_mgr implements Gfo_invk {
private Xof_wkr_mgr wkr_mgr;
public Xow_file_mgr(Xowe_wiki wiki) {
this.wiki = wiki;
@@ -71,7 +71,7 @@ public class Xow_file_mgr implements GfoInvkAble {
public Xof_meta_mgr Dbmeta_mgr() {return meta_mgr;} private Xof_meta_mgr meta_mgr;
public Xof_cfg_download Cfg_download() {return cfg_download;} private Xof_cfg_download cfg_download = new Xof_cfg_download();
public void Cfg_set(String grp, String key, String val) { // TEST: should only be called by tests
if (test_grps == null) test_grps = Hash_adp_.new_();
if (test_grps == null) test_grps = Hash_adp_.New();
Db_cfg_hash grp_itm = (Db_cfg_hash)test_grps.Get_by(grp);
if (grp_itm == null) {
grp_itm = new Db_cfg_hash(grp);
@@ -138,6 +138,6 @@ public class Xow_file_mgr implements GfoInvkAble {
else if (ctx.Match(k, Invk_cfg_download)) return cfg_download; // NOTE: documented for Schnark; https://sourceforge.net/p/xowa/tickets/344/
else if (ctx.Match(k, Invk_fsdb)) return fsdb_mgr;
else if (ctx.Match(k, Invk_wkrs)) return wkr_mgr;
else return GfoInvkAble_.Rv_unhandled;
else return Gfo_invk_.Rv_unhandled;
} private static final String Invk_repos = "repos", Invk_metas = "metas", Invk_cfg_download = "cfg_download", Invk_fsdb = "fsdb", Invk_wkrs = "wkrs";
}

View File

@@ -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/>.
*/
package gplx.xowa.files.bins; import gplx.*; import gplx.xowa.*; import gplx.xowa.files.*;
import gplx.core.ios.*;
import gplx.core.ios.*; import gplx.core.ios.streams.*;
public interface Io_download_mgr {
Io_stream_rdr Download_as_rdr(String src);
}

View File

@@ -16,13 +16,13 @@ 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.files.bins; import gplx.*; import gplx.xowa.*; import gplx.xowa.files.*;
import gplx.core.ios.*;
import gplx.core.ios.*; import gplx.core.ios.streams.*;
public class Io_download_mgr_ {
public static Io_download_mgr new_system() {return new Io_download_mgr__system();}
public static Io_download_mgr__memory new_memory() {return new Io_download_mgr__memory();}
}
class Io_download_mgr__system implements Io_download_mgr {
private final IoEngine_xrg_downloadFil download_wkr = IoEngine_xrg_downloadFil.new_("", Io_url_.Empty);
private final IoEngine_xrg_downloadFil download_wkr = IoEngine_xrg_downloadFil.new_("", Io_url_.Empty);
public void Upload_data(String url, byte[] data) {throw Err_.new_unimplemented();}
public Io_stream_rdr Download_as_rdr(String url) {
download_wkr.Init(url, Io_url_.Empty);

View File

@@ -16,9 +16,9 @@ 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.files.bins; import gplx.*; import gplx.xowa.*; import gplx.xowa.files.*;
import gplx.core.ios.*;
import gplx.core.ios.*; import gplx.core.ios.streams.*;
public class Io_download_mgr__memory implements Io_download_mgr {
private final Ordered_hash hash = Ordered_hash_.New();
private final Ordered_hash hash = Ordered_hash_.New();
public void Clear() {hash.Clear();}
public void Upload_data(String url, byte[] data) {hash.Add(url, data);}
public Io_stream_rdr Download_as_rdr(String url) {

View File

@@ -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/>.
*/
package gplx.xowa.files.bins; import gplx.*; import gplx.xowa.*; import gplx.xowa.files.*;
import gplx.core.primitives.*; import gplx.core.ios.*;
import gplx.core.primitives.*; import gplx.core.ios.*; import gplx.core.ios.streams.*;
import gplx.fsdb.meta.*;
import gplx.xowa.files.repos.*; import gplx.xowa.files.fsdb.*; import gplx.xowa.files.cnvs.*; import gplx.xowa.files.caches.*;
import gplx.xowa.bldrs.wms.*;
@@ -34,7 +34,7 @@ public class Xof_bin_mgr {
}
public void Resizer_(Xof_img_wkr_resize_img v) {resizer = v;} private Xof_img_wkr_resize_img resizer;
public void Wkrs__del(String key) {
List_adp list = List_adp_.new_();
List_adp list = List_adp_.New();
for (Xof_bin_wkr wkr : wkrs) {
if (String_.Eq(key, wkr.Key())) continue;
list.Add(wkr);

View File

@@ -16,12 +16,12 @@ 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.files.bins; import gplx.*; import gplx.xowa.*; import gplx.xowa.files.*;
import gplx.core.ios.*;
import gplx.core.ios.*; import gplx.core.ios.streams.*;
import gplx.fsdb.meta.*; import gplx.xowa.files.fsdb.*;
public class Xof_bin_skip_mgr {
private Xof_bin_skip_wkr[] wkrs = new Xof_bin_skip_wkr[0]; private int wkrs_len;
public Xof_bin_skip_mgr(Fsm_cfg_mgr cfg_mgr, String[] wkr_keys) {
List_adp list = List_adp_.new_();
List_adp list = List_adp_.New();
for (int i = 0; i < wkrs_len; ++i) {
Xof_bin_skip_wkr wkr = New_wkr(cfg_mgr, wkr_keys[i]);
if (wkr != null) list.Add(wkr);
@@ -69,7 +69,7 @@ class Xof_bin_skip_wkr__page_gt_1 implements Xof_bin_skip_wkr { // prior to v2.4
public void Skip_term(Fsm_cfg_mgr cfg_mgr) {
cfg_mgr.Patch__save(Fsm_cfg_mgr.Key_patch__page_gt_1);
}
public static final Xof_bin_skip_wkr__page_gt_1 Instance = new Xof_bin_skip_wkr__page_gt_1(); Xof_bin_skip_wkr__page_gt_1() {}
public static final Xof_bin_skip_wkr__page_gt_1 Instance = new Xof_bin_skip_wkr__page_gt_1(); Xof_bin_skip_wkr__page_gt_1() {}
}
class Xof_bin_skip_wkr__small_size implements Xof_bin_skip_wkr {// downloads can randomly be broken; assume that anything with a small size is broken and redownload again; DATE:2015-04-21
public String Key() {return Xof_bin_skip_wkr_.Key__small_size;}
@@ -85,5 +85,5 @@ class Xof_bin_skip_wkr__small_size implements Xof_bin_skip_wkr {// downloads can
return rv;
}
public void Skip_term(Fsm_cfg_mgr cfg_mgr) {}
public static final Xof_bin_skip_wkr__small_size Instance = new Xof_bin_skip_wkr__small_size(); Xof_bin_skip_wkr__small_size() {}
public static final Xof_bin_skip_wkr__small_size Instance = new Xof_bin_skip_wkr__small_size(); Xof_bin_skip_wkr__small_size() {}
}

View File

@@ -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/>.
*/
package gplx.xowa.files.bins; import gplx.*; import gplx.xowa.*; import gplx.xowa.files.*;
import gplx.core.ios.*;
import gplx.core.ios.*; import gplx.core.ios.streams.*;
import gplx.xowa.files.fsdb.*;
public interface Xof_bin_wkr {
byte Tid();

View File

@@ -16,15 +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/>.
*/
package gplx.xowa.files.bins; import gplx.*; import gplx.xowa.*; import gplx.xowa.files.*;
import gplx.dbs.*; import gplx.core.ios.*; import gplx.core.caches.*; import gplx.xowa.files.fsdb.*;
import gplx.dbs.*; import gplx.core.ios.*; import gplx.core.ios.streams.*; import gplx.core.caches.*; import gplx.xowa.files.fsdb.*;
import gplx.fsdb.*; import gplx.fsdb.data.*; import gplx.fsdb.meta.*;
public class Xof_bin_wkr__fsdb_sql implements Xof_bin_wkr {
private final Xof_bin_wkr_ids tmp_ids = new Xof_bin_wkr_ids();
private final Xof_bin_wkr_ids tmp_ids = new Xof_bin_wkr_ids();
private Xof_bin_skip_mgr skip_mgr;
Xof_bin_wkr__fsdb_sql(Fsm_mnt_mgr mnt_mgr) {this.mnt_mgr = mnt_mgr;}
public byte Tid() {return Xof_bin_wkr_.Tid_fsdb_xowa;}
public String Key() {return Xof_bin_wkr_.Key_fsdb_wiki;}
public Fsm_mnt_mgr Mnt_mgr() {return mnt_mgr;} private final Fsm_mnt_mgr mnt_mgr;
public Fsm_mnt_mgr Mnt_mgr() {return mnt_mgr;} private final Fsm_mnt_mgr mnt_mgr;
public boolean Resize_allowed() {return bin_wkr_resize;} public void Resize_allowed_(boolean v) {bin_wkr_resize = v;} private boolean bin_wkr_resize = false;
public Xof_bin_skip_mgr Skip_mgr() {return skip_mgr;}
public void Skip_mgr_init(Fsm_cfg_mgr cfg_mgr, String[] wkrs) {this.skip_mgr = new Xof_bin_skip_mgr(cfg_mgr, wkrs);}

View File

@@ -16,16 +16,16 @@ 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.files.bins; import gplx.*; import gplx.xowa.*; import gplx.xowa.files.*;
import gplx.core.ios.*; import gplx.core.envs.*;
import gplx.core.ios.*; import gplx.core.ios.streams.*; import gplx.core.envs.*;
import gplx.xowa.files.fsdb.*; import gplx.xowa.files.repos.*;
public abstract class Xof_bin_wkr__fsys_base implements Xof_bin_wkr, GfoInvkAble {
public abstract class Xof_bin_wkr__fsys_base implements Xof_bin_wkr, Gfo_invk {
public Xof_bin_wkr__fsys_base() {}
public abstract byte Tid();
public abstract String Key();
public boolean Resize_allowed() {return resize_allowed;} public void Resize_allowed_(boolean v) {resize_allowed = v;} private boolean resize_allowed = false;
public Io_stream_rdr Get_as_rdr(Xof_fsdb_itm itm, boolean is_thumb, int w) {
Io_url src_url = this.Get_src_url(Xof_repo_itm_.Mode_by_bool(is_thumb), String_.new_u8(itm.Orig_repo_name()), itm.Orig_ttl(), itm.Orig_ttl_md5(), itm.Orig_ext(), w, itm.Lnki_time(), itm.Lnki_page());
return (src_url == Io_url_.Empty) ? gplx.core.ios.Io_stream_rdr_.Noop : gplx.core.ios.Io_stream_rdr_.file_(src_url);
return (src_url == Io_url_.Empty) ? gplx.core.ios.streams.Io_stream_rdr_.Noop : gplx.core.ios.streams.Io_stream_rdr_.file_(src_url);
}
public boolean Get_to_fsys(Xof_fsdb_itm itm, boolean is_thumb, int w, Io_url bin_url) {
return Get_to_fsys(itm.Orig_repo_name(), itm.Orig_ttl(), itm.Orig_ttl_md5(), itm.Orig_ext(), is_thumb, w, itm.Lnki_time(), itm.Lnki_page(), bin_url);
@@ -40,7 +40,7 @@ public abstract class Xof_bin_wkr__fsys_base implements Xof_bin_wkr, GfoInvkAble
public abstract void Url_(Io_url v);
public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {
if (ctx.Match(k, Invk_url_)) this.Url_(m.ReadIoUrl("v"));
else return GfoInvkAble_.Rv_unhandled;
else return Gfo_invk_.Rv_unhandled;
return this;
} private static final String Invk_url_ = "url_";
}

View File

@@ -16,14 +16,14 @@ 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.files.bins; import gplx.*; import gplx.xowa.*; import gplx.xowa.files.*;
import gplx.core.ios.*; import gplx.core.threads.*;
import gplx.core.ios.*; import gplx.core.ios.streams.*; import gplx.core.threads.*;
import gplx.xowa.apps.*;
import gplx.xowa.files.fsdb.*; import gplx.xowa.files.repos.*;
import gplx.xowa.wikis.domains.*;
public class Xof_bin_wkr__http_wmf implements Xof_bin_wkr {
private final Xow_repo_mgr repo_mgr; private final IoEngine_xrg_downloadFil download_wkr;
private final Io_download_mgr download_mgr;
private final Xof_url_bldr url_bldr = new Xof_url_bldr();
private final Xow_repo_mgr repo_mgr; private final IoEngine_xrg_downloadFil download_wkr;
private final Io_download_mgr download_mgr;
private final Xof_url_bldr url_bldr = new Xof_url_bldr();
public Xof_bin_wkr__http_wmf(Xow_repo_mgr repo_mgr, Io_download_mgr download_mgr, IoEngine_xrg_downloadFil download_wkr) {
this.repo_mgr = repo_mgr; this.download_mgr = download_mgr; this.download_wkr = download_wkr;
}
@@ -78,7 +78,7 @@ public class Xof_bin_wkr__http_wmf implements Xof_bin_wkr {
}
public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {
if (ctx.Match(k, Invk_fail_timeout_)) fail_timeout = m.ReadInt("v");
else return GfoInvkAble_.Rv_unhandled;
else return Gfo_invk_.Rv_unhandled;
return this;
} private static final String Invk_fail_timeout_ = "fail_timeout_";
public static Xof_bin_wkr__http_wmf new_(Xow_wiki wiki) {return new_(wiki, Io_download_mgr_.new_system());}

View File

@@ -16,9 +16,9 @@ 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.files.bins; import gplx.*; import gplx.xowa.*; import gplx.xowa.files.*;
import org.junit.*; import gplx.core.ios.*; import gplx.xowa.files.repos.*;
import org.junit.*; import gplx.core.ios.*; import gplx.core.ios.streams.*; import gplx.xowa.files.repos.*;
public class Xof_bin_wkr__http_wmf__tst {
private final Xof_bin_wkr__http_wmf__fxt fxt = new Xof_bin_wkr__http_wmf__fxt();
private final Xof_bin_wkr__http_wmf__fxt fxt = new Xof_bin_wkr__http_wmf__fxt();
@Before public void init() {fxt.Clear();}
@Test public void Basic() {
fxt.Init__Http("mem/http/commons.wikimedia.org/thumb/7/70/A.png/220px-A.png", "test_data");
@@ -42,10 +42,10 @@ public class Xof_bin_wkr__http_wmf__tst {
}
}
class Xof_bin_wkr__http_wmf__fxt {
private final Xof_bin_wkr__http_wmf wkr;
private final Io_download_mgr__memory download_mgr;
private final Xof_bin_wkr__http_wmf wkr;
private final Io_download_mgr__memory download_mgr;
private Io_stream_rdr get_as_rdr__rdr;
public Xof_fsdb_itm_fxt Fsdb_itm_mkr() {return fsdb_itm_mkr;} private final Xof_fsdb_itm_fxt fsdb_itm_mkr = new Xof_fsdb_itm_fxt();
public Xof_fsdb_itm_fxt Fsdb_itm_mkr() {return fsdb_itm_mkr;} private final Xof_fsdb_itm_fxt fsdb_itm_mkr = new Xof_fsdb_itm_fxt();
public Xof_bin_wkr__http_wmf__fxt() {
Xoae_app app = Xoa_app_fxt.Make__app__edit();
Xowe_wiki wiki = Xoa_app_fxt.Make__wiki__edit(app);

View File

@@ -19,10 +19,10 @@ package gplx.xowa.files.caches; import gplx.*; import gplx.xowa.*; import gplx.x
import gplx.core.primitives.*; import gplx.core.envs.*;
import gplx.dbs.*;
import gplx.xowa.files.fsdb.*; import gplx.xowa.wikis.*;
public class Xof_cache_mgr implements GfoInvkAble {
private final Gfo_usr_dlg usr_dlg; private final Xoae_wiki_mgr wiki_mgr; private final Xoa_repo_mgr repo_mgr;
private final Xofc_cfg_mgr cfg_mgr = new Xofc_cfg_mgr(); private final Xofc_dir_mgr dir_mgr; private final Xofc_fil_mgr fil_mgr;
private final Bool_obj_ref fil_created = Bool_obj_ref.n_();
public class Xof_cache_mgr implements Gfo_invk {
private final Gfo_usr_dlg usr_dlg; private final Xoae_wiki_mgr wiki_mgr; private final Xoa_repo_mgr repo_mgr;
private final Xofc_cfg_mgr cfg_mgr = new Xofc_cfg_mgr(); private final Xofc_dir_mgr dir_mgr; private final Xofc_fil_mgr fil_mgr;
private final Bool_obj_ref fil_created = Bool_obj_ref.n_();
public Xof_cache_mgr(Gfo_usr_dlg usr_dlg, Xoae_wiki_mgr wiki_mgr, Xoa_repo_mgr repo_mgr) {
this.usr_dlg = usr_dlg; this.wiki_mgr = wiki_mgr; this.repo_mgr = repo_mgr;
this.dir_mgr = new Xofc_dir_mgr(this);
@@ -75,7 +75,7 @@ public class Xof_cache_mgr implements GfoInvkAble {
else if (ctx.Match(k, Invk_cache_max)) return cfg_mgr.Cache_max() / Io_mgr.Len_mb;
else if (ctx.Match(k, Invk_cache_max_)) cfg_mgr.Cache_max_(m.ReadLong("v") * Io_mgr.Len_mb);
else if (ctx.Match(k, Invk_cache_compress)) fil_mgr.Compress(usr_dlg, wiki_mgr, repo_mgr, dir_mgr, cfg_mgr);
else return GfoInvkAble_.Rv_unhandled;
else return Gfo_invk_.Rv_unhandled;
return this;
} private static final String Invk_cache_min = "cache_min", Invk_cache_min_ = "cache_min_", Invk_cache_max = "cache_max", Invk_cache_max_ = "cache_max_", Invk_cache_compress = "cache_compress";
}

View File

@@ -42,7 +42,7 @@ public class Xof_cache_mgr_tst {
// private int lnki_site; private byte[] lnki_ttl; private int lnki_type; private double lnki_upright; private int lnki_w; private int lnki_h; private double lnki_time; private int lnki_page;
// private int orig_wiki; private byte[] orig_ttl; private int orig_ext; private int file_w; private int file_h; private double file_time; private int file_page;
// private long temp_file_size; private int temp_view_count; private long temp_view_date; private int temp_w;
// private Bry_bfr key_bfr = Bry_bfr.new_();
// private Bry_bfr key_bfr = Bry_bfr_.New();
// public Xof_cache_itm_mkr() {this.Reset();}
// private void Reset() {
// db_state = Db_cmd_mode.Tid_ignore;

View File

@@ -18,8 +18,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
package gplx.xowa.files.caches; import gplx.*; import gplx.xowa.*; import gplx.xowa.files.*;
import gplx.dbs.*;
class Xofc_dir_mgr {
private final Xofc_dir_tbl tbl = new Xofc_dir_tbl();
private final Ordered_hash hash_by_names = Ordered_hash_.New_bry(); private final Hash_adp hash_by_ids = Hash_adp_.new_();
private final Xofc_dir_tbl tbl = new Xofc_dir_tbl();
private final Ordered_hash hash_by_names = Ordered_hash_.New_bry(); private final Hash_adp hash_by_ids = Hash_adp_.New();
private Xof_cache_mgr cache_mgr;
public Xofc_dir_mgr(Xof_cache_mgr v) {this.cache_mgr = v;}
public void Conn_(Db_conn v, boolean created, boolean schema_is_1) {tbl.Conn_(v, created, schema_is_1);}
@@ -66,7 +66,7 @@ class Xofc_dir_mgr {
}
}
public void Load_all() {
List_adp list = List_adp_.new_();
List_adp list = List_adp_.New();
tbl.Select_all(list);
int len = list.Count();
hash_by_ids.Clear();

View File

@@ -18,9 +18,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
package gplx.xowa.files.caches; import gplx.*; import gplx.xowa.*; import gplx.xowa.files.*;
import gplx.dbs.*; import gplx.dbs.engines.sqlite.*;
class Xofc_dir_tbl implements Rls_able {
private String tbl_name = "file_cache_dir"; private final Dbmeta_fld_list flds = Dbmeta_fld_list.new_();
private String tbl_name = "file_cache_dir"; private final Dbmeta_fld_list flds = new Dbmeta_fld_list();
private String fld_id, fld_name;
private Db_conn conn; private final Db_stmt_bldr stmt_bldr = new Db_stmt_bldr(); private Db_stmt select_stmt;
private Db_conn conn; private final Db_stmt_bldr stmt_bldr = new Db_stmt_bldr(); private Db_stmt select_stmt;
public void Conn_(Db_conn new_conn, boolean created, boolean schema_is_1) {
this.conn = new_conn; flds.Clear();
String fld_prefix = "";

View File

@@ -20,7 +20,7 @@ import gplx.core.primitives.*;
import gplx.dbs.*; import gplx.fsdb.*; import gplx.xowa.wikis.*; import gplx.xowa.files.repos.*;
class Xofc_fil_mgr {
private Xof_cache_mgr cache_mgr;
private final Xofc_fil_tbl tbl = new Xofc_fil_tbl(); private final Ordered_hash hash = Ordered_hash_.New_bry(); private final Bry_bfr key_bldr = Bry_bfr.reset_(255);
private final Xofc_fil_tbl tbl = new Xofc_fil_tbl(); private final Ordered_hash hash = Ordered_hash_.New_bry(); private final Bry_bfr key_bldr = Bry_bfr_.Reset(255);
public Xofc_fil_mgr(Xof_cache_mgr v) {this.cache_mgr = v;}
public void Conn_(Db_conn v, boolean created, boolean schema_is_1) {tbl.Conn_(v, created, schema_is_1);}
public void Save_all() {
@@ -84,7 +84,7 @@ class Xofc_fil_mgr {
int len = hash.Count();
long cur_size = 0, actl_size = 0;
Xof_url_bldr url_bldr = new Xof_url_bldr();
List_adp deleted = List_adp_.new_();
List_adp deleted = List_adp_.New();
tbl.Conn().Txn_bgn("user__file_cache__compress");
long compress_to = cfg_mgr.Cache_min();
for (int i = 0; i < len; ++i) {

View File

@@ -18,9 +18,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
package gplx.xowa.files.caches; import gplx.*; import gplx.xowa.*; import gplx.xowa.files.*;
import gplx.dbs.*; import gplx.dbs.engines.sqlite.*;
class Xofc_fil_tbl implements Rls_able {
private String tbl_name = "file_cache_fil"; private final Dbmeta_fld_list flds = Dbmeta_fld_list.new_();
private String tbl_name = "file_cache_fil"; private final Dbmeta_fld_list flds = new Dbmeta_fld_list();
private String fld_uid, fld_dir_id, fld_name, fld_is_orig, fld_w, fld_h, fld_time, fld_page, fld_ext, fld_size, fld_cache_time;
private Db_conn conn; private final Db_stmt_bldr stmt_bldr = new Db_stmt_bldr(); private Db_stmt select_itm_stmt, select_itm_v2_stmt;
private Db_conn conn; private final Db_stmt_bldr stmt_bldr = new Db_stmt_bldr(); private Db_stmt select_itm_stmt, select_itm_v2_stmt;
public Db_conn Conn() {return conn;}
public void Conn_(Db_conn new_conn, boolean created, boolean schema_is_1) {
this.conn = new_conn; flds.Clear();

View File

@@ -18,8 +18,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
package gplx.xowa.files.caches; import gplx.*; import gplx.xowa.*; import gplx.xowa.files.*;
import gplx.xowa.files.repos.*;
public class Xou_cache_finder_ {
public static final Xou_cache_finder Noop = new Xou_cache_finder_noop();
public static Xou_cache_finder New_mem() {return new Xou_cache_finder_mem();}
public static final Xou_cache_finder Noop = new Xou_cache_finder_noop();
public static Xou_cache_finder_mem New_mem() {return new Xou_cache_finder_mem();}
public static Xou_cache_finder New_db(Xou_cache_mgr cache_mgr) {return new Xou_cache_finder_db(cache_mgr);}
}
class Xou_cache_finder_noop implements Xou_cache_finder {
@@ -30,32 +30,9 @@ class Xou_cache_finder_noop implements Xou_cache_finder {
public void Clear() {}
public void Add(Xof_fsdb_itm fsdb_itm) {}
}
class Xou_cache_finder_mem implements Xou_cache_finder {
private final Ordered_hash hash = Ordered_hash_.New_bry();
private final Bry_bfr tmp_bfr = Bry_bfr.new_(255);
private final Xof_img_size img_size = new Xof_img_size();
private final Xof_url_bldr url_bldr = Xof_url_bldr.new_v2();
public boolean Find(Xow_wiki wiki, byte[] page_url, Xof_fsdb_itm cur) {
byte[] key = Xou_cache_itm.Key_gen(tmp_bfr, cur.Lnki_wiki_abrv(), cur.Lnki_ttl(), cur.Lnki_type(), cur.Lnki_upright(), cur.Lnki_w(), cur.Lnki_h(), cur.Lnki_time(), cur.Lnki_page(), cur.User_thumb_w());
Xof_fsdb_itm mem = (Xof_fsdb_itm)hash.Get_by(key);
if (mem == null) {
cur.Init_at_cache(false, 0, 0, Io_url_.Empty);
return false;
}
Xof_repo_itm repo = wiki.File__repo_mgr().Get_trg_by_id_or_null(mem.Orig_repo_id(), mem.Lnki_ttl(), page_url);
mem.Init_at_html(Xof_exec_tid.Tid_wiki_page, img_size, repo, url_bldr);
cur.Init_at_cache(true, mem.Html_w(), mem.Html_h(), mem.Html_view_url());
return true;
}
public void Clear() {}
public void Add(Xof_fsdb_itm cur) {
byte[] key = Xou_cache_itm.Key_gen(tmp_bfr, cur.Lnki_wiki_abrv(), cur.Lnki_ttl(), cur.Lnki_type(), cur.Lnki_upright(), cur.Lnki_w(), cur.Lnki_h(), cur.Lnki_time(), cur.Lnki_page(), cur.User_thumb_w());
hash.Add(key, cur);
}
}
class Xou_cache_finder_db implements Xou_cache_finder {
private final Xou_cache_mgr cache_mgr;
private final Xof_img_size img_size = new Xof_img_size(); private final Xof_url_bldr url_bldr = Xof_url_bldr.new_v2();
private final Xou_cache_mgr cache_mgr;
private final Xof_img_size img_size = new Xof_img_size(); private final Xof_url_bldr url_bldr = Xof_url_bldr.new_v2();
public Xou_cache_finder_db(Xou_cache_mgr cache_mgr) {this.cache_mgr = cache_mgr;}
public boolean Find(Xow_wiki wiki, byte[] page_url, Xof_fsdb_itm cur) {
Xou_cache_itm cache_itm = cache_mgr.Get_or_null(cur);

View File

@@ -0,0 +1,43 @@
/*
XOWA: the XOWA Offline Wiki Application
Copyright (C) 2012 gnosygnu@gmail.com
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package gplx.xowa.files.caches; import gplx.*; import gplx.xowa.*; import gplx.xowa.files.*;
import gplx.xowa.files.repos.*;
public class Xou_cache_finder_mem implements Xou_cache_finder {
private final Ordered_hash hash = Ordered_hash_.New_bry();
private final Bry_bfr tmp_bfr = Bry_bfr_.New_w_size(255);
private final Xof_img_size img_size = new Xof_img_size();
private final Xof_url_bldr url_bldr = Xof_url_bldr.new_v2();
public boolean Find(Xow_wiki wiki, byte[] page_url, Xof_fsdb_itm cur) {
byte[] key = Xou_cache_itm.Key_gen(tmp_bfr, cur.Lnki_wiki_abrv(), cur.Lnki_ttl(), cur.Lnki_type(), cur.Lnki_upright(), cur.Lnki_w(), cur.Lnki_h(), cur.Lnki_time(), cur.Lnki_page(), cur.User_thumb_w());
Xof_fsdb_itm mem = (Xof_fsdb_itm)hash.Get_by(key);
if (mem == null) {
cur.Init_at_cache(false, 0, 0, Io_url_.Empty);
return false;
}
Xof_repo_itm repo = wiki.File__repo_mgr().Get_trg_by_id_or_null(mem.Orig_repo_id(), mem.Lnki_ttl(), page_url);
if (repo != null) // HACK: ignore null repo for tests that don't create repos; DATE:2016-06-18
mem.Init_at_html(Xof_exec_tid.Tid_wiki_page, img_size, repo, url_bldr);
cur.Init_at_cache(true, mem.Html_w(), mem.Html_h(), mem.Html_view_url());
return true;
}
public void Clear() {}
public void Add(Xof_fsdb_itm cur) {
byte[] key = Xou_cache_itm.Key_gen(tmp_bfr, cur.Lnki_wiki_abrv(), cur.Lnki_ttl(), cur.Lnki_type(), cur.Lnki_upright(), cur.Lnki_w(), cur.Lnki_h(), cur.Lnki_time(), cur.Lnki_page(), cur.User_thumb_w());
hash.Add(key, cur);
}
}

View File

@@ -20,9 +20,9 @@ import gplx.core.primitives.*; import gplx.dbs.*; import gplx.dbs.cfgs.*;
import gplx.xowa.files.fsdb.*; import gplx.xowa.files.repos.*;
import gplx.xowa.wikis.*; import gplx.xowa.wikis.domains.*; import gplx.xowa.users.data.*;
public class Xou_cache_mgr {
private final Xoa_wiki_mgr wiki_mgr; private final Xou_cache_tbl cache_tbl; private final Db_cfg_tbl cfg_tbl; private final Bry_bfr key_bfr = Bry_bfr.reset_(512);
private final Ordered_hash hash = Ordered_hash_.New_bry(); private final Xof_url_bldr url_bldr = Xof_url_bldr.new_v2(); private final Object thread_lock = new Object();
private final Io_url cache_dir; private boolean db_load_needed = true;
private final Xoa_wiki_mgr wiki_mgr; private final Xou_cache_tbl cache_tbl; private final Db_cfg_tbl cfg_tbl; private final Bry_bfr key_bfr = Bry_bfr_.Reset(512);
private final Ordered_hash hash = Ordered_hash_.New_bry(); private final Xof_url_bldr url_bldr = Xof_url_bldr.new_v2(); private final Object thread_lock = new Object();
private final Io_url cache_dir; private boolean db_load_needed = true;
public Xou_cache_mgr(Xoa_wiki_mgr wiki_mgr, Io_url cache_dir, Xou_db_file db_file) {
this.wiki_mgr = wiki_mgr; this.cache_dir = cache_dir;
this.cfg_tbl = db_file.Tbl__cfg();
@@ -132,7 +132,7 @@ public class Xou_cache_mgr {
grp_hash.Sort_by(Xou_cache_grp_sorter.Instance); // sorts by cache_time desc
len = grp_hash.Count();
long fsys_size_calc = 0, fsys_size_temp = 0;
List_adp deleted = List_adp_.new_();
List_adp deleted = List_adp_.New();
for (int i = 0; i < len; ++i) { // iterate and find items to delete
Xou_cache_grp grp = (Xou_cache_grp)grp_hash.Get_at(i);
fsys_size_temp = fsys_size_calc + grp.File_size();
@@ -175,11 +175,11 @@ public class Xou_cache_mgr {
}
}
class Xou_cache_grp {
private final List_adp list = List_adp_.new_();
private final List_adp list = List_adp_.New();
public Xou_cache_grp(Io_url file_url) {this.file_url = file_url;}
public long View_date() {return view_date;} private long view_date;
public long File_size() {return file_size;} private long file_size;
public Io_url File_url() {return file_url;} private final Io_url file_url;
public Io_url File_url() {return file_url;} private final Io_url file_url;
public int Len() {return list.Count();}
public void Add(Xou_cache_itm itm) {
if (itm.View_date() > view_date) view_date = itm.View_date();
@@ -213,5 +213,5 @@ class Xou_cache_grp_sorter implements gplx.core.lists.ComparerAble {
Xou_cache_grp rhs = (Xou_cache_grp)rhsObj;
return -Long_.Compare(lhs.View_date(), rhs.View_date()); // - for DESC sort
}
public static final Xou_cache_grp_sorter Instance = new Xou_cache_grp_sorter(); Xou_cache_grp_sorter() {}
public static final Xou_cache_grp_sorter Instance = new Xou_cache_grp_sorter(); Xou_cache_grp_sorter() {}
}

View File

@@ -18,7 +18,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
package gplx.xowa.files.caches; import gplx.*; import gplx.xowa.*; import gplx.xowa.files.*;
import gplx.dbs.*;
public class Xou_cache_tbl implements Rls_able {
private String tbl_name = "file_cache"; private final Dbmeta_fld_list flds = Dbmeta_fld_list.new_();
private String tbl_name = "file_cache"; private final Dbmeta_fld_list flds = new Dbmeta_fld_list();
private String
fld_lnki_wiki_abrv, fld_lnki_ttl, fld_lnki_type, fld_lnki_upright, fld_lnki_w, fld_lnki_h, fld_lnki_time, fld_lnki_page, fld_user_thumb_w
, fld_orig_repo, fld_orig_ttl, fld_orig_ext, fld_orig_w, fld_orig_h
@@ -28,8 +28,8 @@ public class Xou_cache_tbl implements Rls_able {
;
public String Tbl_name() {return tbl_name;}
public String Fld_orig_ttl() {return fld_orig_ttl;}
private final Db_conn conn; private final Db_stmt_bldr stmt_bldr = new Db_stmt_bldr(); private Db_stmt select_stmt;
private final Bry_bfr lnki_key_bfr = Bry_bfr.reset_(255);
private final Db_conn conn; private final Db_stmt_bldr stmt_bldr = new Db_stmt_bldr(); private Db_stmt select_stmt;
private final Bry_bfr lnki_key_bfr = Bry_bfr_.Reset(255);
public Db_conn Conn() {return conn;}
public Xou_cache_tbl(Db_conn conn) {
this.conn = conn;

View File

@@ -18,12 +18,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
package gplx.xowa.files.caches; import gplx.*; import gplx.xowa.*; import gplx.xowa.files.*;
import org.junit.*; import gplx.dbs.*;
public class Xou_cache_tbl_tst {
@Before public void init() {fxt.Clear();} private final Xou_cache_tbl_fxt fxt = new Xou_cache_tbl_fxt();
@Before public void init() {fxt.Clear();} private final Xou_cache_tbl_fxt fxt = new Xou_cache_tbl_fxt();
@Test public void Orig_ttl__same() {fxt.Test_save_orig_ttl("A.png", "A.png", "");}
@Test public void Orig_ttl__redirect() {fxt.Test_save_orig_ttl("A.png", "B.png", "B.png");}
}
class Xou_cache_tbl_fxt {
private final Bry_bfr lnki_key_bfr = Bry_bfr.new_(255);
private final Bry_bfr lnki_key_bfr = Bry_bfr_.New_w_size(255);
private Xou_cache_tbl tbl;
public void Clear() {
Io_mgr.Instance.InitEngine_mem();

View File

@@ -16,7 +16,9 @@ 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.files.cnvs; import gplx.*; import gplx.xowa.*; import gplx.xowa.files.*;
import gplx.core.primitives.*; import gplx.gfui.*; import gplx.xowa.files.cnvs.*;
import gplx.core.primitives.*;
import gplx.gfui.*; import gplx.gfui.imgs.*;
import gplx.xowa.files.cnvs.*;
public class Xof_img_wkr_resize_img_mok implements Xof_img_wkr_resize_img {
public boolean Resize_exec(Io_url src, Io_url trg, int trg_w, int trg_h, int ext_id, String_obj_ref rslt_val) {
SizeAdp src_size = ImageAdp_.txt_fil_(src).Size();
@@ -26,5 +28,5 @@ public class Xof_img_wkr_resize_img_mok implements Xof_img_wkr_resize_img {
Io_mgr.Instance.SaveFilStr(trg, SizeAdp_.new_(trg_w, trg_h).To_str());
return true;
}
public static final Xof_img_wkr_resize_img_mok Instance = new Xof_img_wkr_resize_img_mok(); Xof_img_wkr_resize_img_mok() {}
public static final Xof_img_wkr_resize_img_mok Instance = new Xof_img_wkr_resize_img_mok(); Xof_img_wkr_resize_img_mok() {}
}

View File

@@ -52,8 +52,8 @@ public class Xof_commons_image_tbl implements Rls_able {
);
} finally {rdr.Rls();}
}
private static final String tbl_name = "image"; private static final Dbmeta_fld_list flds = Dbmeta_fld_list.new_();
private static final String
private static final String tbl_name = "image"; private static final Dbmeta_fld_list flds = new Dbmeta_fld_list();
private static final String
fld_img_name = flds.Add_str("img_name", 255) // varbinary(255)
, fld_img_media_type = flds.Add_str("img_media_type", 255) // enum('UNKNOWN','BITMAP','DRAWING','AUDIO','VIDEO','MULTIMEDIA','OFFICE','TEXT','EXECUTABLE','ARCHIVE')"
, fld_img_minor_mime = flds.Add_str("img_minor_mime", 255) // DEFAULT 'unknown'"

View File

@@ -17,11 +17,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package gplx.xowa.files.exts; import gplx.*; import gplx.xowa.*; import gplx.xowa.files.*;
import gplx.core.primitives.*;
public class Xof_rule_grp implements GfoInvkAble {
private final Hash_adp_bry hash = Hash_adp_bry.cs();
public class Xof_rule_grp implements Gfo_invk {
private final Hash_adp_bry hash = Hash_adp_bry.cs();
public Xof_rule_grp(Xof_rule_mgr owner, byte[] key) {this.owner = owner; this.key = key;}
public Xof_rule_mgr Owner() {return owner;} private final Xof_rule_mgr owner;
public byte[] Key() {return key;} private final byte[] key;
public Xof_rule_mgr Owner() {return owner;} private final Xof_rule_mgr owner;
public byte[] Key() {return key;} private final byte[] key;
public Xof_rule_itm Get_or_null(byte[] ext_bry) {return (Xof_rule_itm)hash.Get_by_bry(ext_bry);}
public Xof_rule_itm Get_or_new(byte[] ext_bry) {
Xof_rule_itm rv = Get_or_null(ext_bry);
@@ -35,7 +35,7 @@ public class Xof_rule_grp implements GfoInvkAble {
public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {
if (ctx.Match(k, Invk_owner)) return owner;
else if (ctx.Match(k, Invk_set)) return Get_or_new(Bry_.new_u8(m.ReadStr("v")));
else return GfoInvkAble_.Rv_unhandled;
else return Gfo_invk_.Rv_unhandled;
} private static final String Invk_owner = "owner", Invk_set = "set";
private static final String Grp_app_default_str = "app_default";
public static byte[] Grp_app_default = Bry_.new_u8(Grp_app_default_str);

View File

@@ -17,7 +17,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package gplx.xowa.files.exts; import gplx.*; import gplx.xowa.*; import gplx.xowa.files.*;
import gplx.xowa.apps.*;
public class Xof_rule_itm implements GfoInvkAble {
public class Xof_rule_itm implements Gfo_invk {
public Xof_rule_itm(Xof_rule_grp owner, Xof_ext ext) {this.owner = owner;} // NOTE: ext currently not used; may want to set as property in future; DATE:2015-02-14
public Xof_rule_grp Owner() {return owner;} private Xof_rule_grp owner;
public long Make_max() {return make_max;} public Xof_rule_itm Make_max_(long v) {make_max = v; return this;} long make_max = Max_wildcard;
@@ -26,7 +26,7 @@ public class Xof_rule_itm implements GfoInvkAble {
if (ctx.Match(k, Invk_owner)) return owner;
else if (ctx.Match(k, Invk_make_max_)) make_max = gplx.core.ios.Io_size_.Load_int_(m);
else if (ctx.Match(k, Invk_view_max_)) view_max = gplx.core.ios.Io_size_.Load_int_(m);
else return GfoInvkAble_.Rv_unhandled;
else return Gfo_invk_.Rv_unhandled;
return this;
} private static final String Invk_owner = "owner", Invk_make_max_ = "make_max_", Invk_view_max_ = "view_max_";
public static final long Max_wildcard = -1;

View File

@@ -17,8 +17,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package gplx.xowa.files.exts; import gplx.*; import gplx.xowa.*; import gplx.xowa.files.*;
import gplx.xowa.apps.*;
public class Xof_rule_mgr implements GfoInvkAble {
private final Hash_adp_bry hash = Hash_adp_bry.cs();
public class Xof_rule_mgr implements Gfo_invk {
private final Hash_adp_bry hash = Hash_adp_bry.cs();
public Xof_rule_mgr() {
Xof_rule_grp app_default = new Xof_rule_grp(this, Xof_rule_grp.Grp_app_default);
Set_app_default(app_default, Io_mgr.Len_gb, Xof_ext_.Bry__ary);
@@ -40,6 +40,6 @@ public class Xof_rule_mgr implements GfoInvkAble {
}
public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {
if (ctx.Match(k, Invk_set)) return Get_or_new(Bry_.new_u8(m.ReadStr("v")));
else return GfoInvkAble_.Rv_unhandled;
else return Gfo_invk_.Rv_unhandled;
} private static final String Invk_set = "set";
}

View File

@@ -21,7 +21,7 @@ import gplx.core.ios.*;
import gplx.dbs.*; import gplx.xowa.wikis.data.*;
import gplx.fsdb.*; import gplx.fsdb.meta.*;
import gplx.xowa.files.*; import gplx.xowa.files.repos.*; import gplx.xowa.files.imgs.*; import gplx.xowa.files.origs.*; import gplx.xowa.files.bins.*; import gplx.xowa.files.caches.*; import gplx.xowa.files.gui.*;
public class Xof_fsdb_mgr__sql implements Xof_fsdb_mgr, GfoInvkAble {
public class Xof_fsdb_mgr__sql implements Xof_fsdb_mgr, Gfo_invk {
private boolean init = false; private boolean fsdb_enabled = false;
private Xow_repo_mgr repo_mgr; private Xof_url_bldr url_bldr; private final Xof_img_size img_size = new Xof_img_size();
public Xof_bin_mgr Bin_mgr() {return bin_mgr;} private Xof_bin_mgr bin_mgr;
@@ -64,6 +64,6 @@ public class Xof_fsdb_mgr__sql implements Xof_fsdb_mgr, GfoInvkAble {
}
public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {
if (ctx.Match(k, Invk_mnt_mgr)) return mnt_mgr;
else return GfoInvkAble_.Rv_unhandled;
else return Gfo_invk_.Rv_unhandled;
} private static final String Invk_mnt_mgr = "mnt_mgr";
}

View File

@@ -19,7 +19,7 @@ package gplx.xowa.files.fsdb.fs_roots; import gplx.*; import gplx.xowa.*; import
import gplx.core.ios.*; import gplx.core.brys.fmtrs.*; import gplx.core.envs.*;
import gplx.fsdb.*; import gplx.fsdb.data.*; import gplx.fsdb.meta.*;
import gplx.xowa.files.gui.*; import gplx.xowa.files.origs.*; import gplx.xowa.files.bins.*; import gplx.xowa.files.caches.*;
public class Fs_root_fsdb_mgr implements Xof_fsdb_mgr, GfoInvkAble { // read images from file-system dir
public class Fs_root_fsdb_mgr implements Xof_fsdb_mgr, Gfo_invk { // read images from file-system dir
private Xowe_wiki wiki; private Fs_root_wkr_fsdb fsdb_wkr;
public Fs_root_fsdb_mgr(Xowe_wiki wiki) {this.Init_by_wiki(wiki); fsdb_wkr = new Fs_root_wkr_fsdb(wiki);}
public void Init_by_wiki(Xow_wiki wiki) {this.wiki = (Xowe_wiki)wiki;}
@@ -44,7 +44,7 @@ public class Fs_root_fsdb_mgr implements Xof_fsdb_mgr, GfoInvkAble { // read ima
if (ctx.Match(k, Invk_root_dir_)) fsdb_wkr.Root_dir_(Xto_url(m.ReadBry("v")));
else if (ctx.Match(k, Invk_orig_dir_)) fsdb_wkr.Orig_dir_(Xto_url(m.ReadBry("v")));
else if (ctx.Match(k, Invk_thumb_dir_)) fsdb_wkr.Thumb_dir_(Xto_url(m.ReadBry("v")));
else return GfoInvkAble_.Rv_unhandled;
else return Gfo_invk_.Rv_unhandled;
return this;
} private static final String Invk_root_dir_ = "root_dir_", Invk_orig_dir_ = "orig_dir_", Invk_thumb_dir_ = "thumb_dir_";
public Xof_bin_mgr Bin_mgr() {throw Err_.new_unimplemented();}

View File

@@ -18,7 +18,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
package gplx.xowa.files.fsdb.fs_roots; import gplx.*; import gplx.xowa.*; import gplx.xowa.files.*; import gplx.xowa.files.fsdb.*;
import gplx.dbs.*;
public class Orig_fil_tbl implements Rls_able {
private String tbl_name = "orig_fil"; private final Dbmeta_fld_list flds = Dbmeta_fld_list.new_();
private String tbl_name = "orig_fil"; private final Dbmeta_fld_list flds = new Dbmeta_fld_list();
private String fld_uid, fld_name, fld_ext_id, fld_w, fld_h, fld_dir_url;
private Db_conn conn; private Db_stmt stmt_insert, stmt_select;
public void Conn_(Db_conn new_conn, boolean created, boolean schema_is_1) {

View File

@@ -37,7 +37,7 @@ class Xof_file_fxt {
this.orig_mgr = wiki.File__orig_mgr();
Xof_repo_fxt.Repos_init(app.File_mgr(), true, wiki);
Xowe_wiki_.Create(wiki, 1, "dump.xml");
Xowd_db_file text_db = wiki.Data__core_mgr().Dbs__make_by_tid(Xowd_db_file_.Tid_text); text_db.Tbl__text().Create_tbl();
Xow_db_file text_db = wiki.Data__core_mgr().Dbs__make_by_tid(Xow_db_file_.Tid__text); text_db.Tbl__text().Create_tbl();
Fsdb_db_mgr__v2 fsdb_core = Fsdb_db_mgr__v2_bldr.Get_or_make(wiki, Bool_.Y);
fsdb_mgr.Mnt_mgr().Ctor_by_load(fsdb_core);
fsdb_mgr.Mnt_mgr().Mnts__get_main().Bin_mgr().Dbs__make("temp.xowa");
@@ -59,15 +59,15 @@ class Xof_file_fxt {
Fsm_atr_fil atr_fil = mnt_itm.Atr_mgr().Db__core();
Fsm_bin_fil bin_fil = mnt_itm.Bin_mgr().Dbs__get_nth();
if (arg.Is_thumb())
mnt_itm.Insert_thm(tmp_thm, atr_fil, bin_fil, arg.Wiki(), arg.Ttl(), arg.Ext(), arg.W(), arg.H(), arg.Time(), arg.Page(), arg.Bin().length, gplx.core.ios.Io_stream_rdr_.mem_(arg.Bin()));
mnt_itm.Insert_thm(tmp_thm, atr_fil, bin_fil, arg.Wiki(), arg.Ttl(), arg.Ext(), arg.W(), arg.H(), arg.Time(), arg.Page(), arg.Bin().length, gplx.core.ios.streams.Io_stream_rdr_.mem_(arg.Bin()));
else
mnt_itm.Insert_img(tmp_img, atr_fil, bin_fil, arg.Wiki(), arg.Ttl(), arg.Ext(), arg.W(), arg.H(), arg.Bin().length, gplx.core.ios.Io_stream_rdr_.mem_(arg.Bin()));
mnt_itm.Insert_img(tmp_img, atr_fil, bin_fil, arg.Wiki(), arg.Ttl(), arg.Ext(), arg.W(), arg.H(), arg.Bin().length, gplx.core.ios.streams.Io_stream_rdr_.mem_(arg.Bin()));
}
public void Exec_get(Xof_exec_arg arg) {
byte[] ttl_bry = arg.Ttl();
Xof_fsdb_itm itm = new Xof_fsdb_itm();
itm.Init_at_lnki(arg.Exec_tid(), wiki.Domain_itm().Abrv_xo(), ttl_bry, arg.Lnki_type(), arg.Lnki_upright(), arg.Lnki_w(), arg.Lnki_h(), arg.Lnki_time(), Xof_lnki_page.Null, Xof_patch_upright_tid_.Tid_all);
List_adp itms_list = List_adp_.new_(); itms_list.Add(itm);
List_adp itms_list = List_adp_.New(); itms_list.Add(itm);
orig_mgr.Find_by_list(Ordered_hash_.New_bry(), itms_list, Xof_exec_tid.Tid_wiki_page);
Xoa_ttl ttl = Xoa_ttl.parse(wiki, Xow_ns_.Tid__main, ttl_bry);
Xoae_page page = Xoae_page.New(wiki, ttl);

View File

@@ -30,7 +30,7 @@ public class Js_img_mgr {
if (!page.Wiki().App().Mode().Tid_supports_js()) return; // do not update html widget unless app is gui; null ref on http server; DATE:2014-09-17
switch (elem_tid) {
case Xof_html_elem.Tid_gallery_v2:
img_wkr.Html_update(page, js_wkr, uid, html_w, html_h, html_view_url, orig_w, orig_h, html_orig_url, lnki_ttl);
img_wkr.Js_wkr__update_hdoc(page, js_wkr, uid, html_w, html_h, html_view_url, orig_w, orig_h, html_orig_url, lnki_ttl);
return;
}
String html_id = To_doc_uid(uid);
@@ -44,7 +44,7 @@ public class Js_img_mgr {
js_wkr.Html_atr_set("xowa_gallery_div3_" + uid, "style", "margin:" + Gallery_html_wtr_utl.Calc_vpad(gallery_mgr_h, html_h) + "px auto;");
break;
case Xof_html_elem.Tid_imap:
img_wkr.Html_update(page, js_wkr, uid, html_w, html_h, html_view_url, orig_w, orig_h, html_orig_url, lnki_ttl);
img_wkr.Js_wkr__update_hdoc(page, js_wkr, uid, html_w, html_h, html_view_url, orig_w, orig_h, html_orig_url, lnki_ttl);
break;
case Xof_html_elem.Tid_vid:
String html_id_vid = "xowa_file_play_" + uid;

View File

@@ -18,5 +18,5 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
package gplx.xowa.files.gui; import gplx.*; import gplx.xowa.*; import gplx.xowa.files.*;
import gplx.xowa.guis.views.*;
public interface Js_img_wkr {
void Html_update(Xoa_page page, Xog_js_wkr js_wkr, int html_uid, int html_w, int html_h, Io_url html_view_url, int orig_w, int orig_h, Io_url html_orig_url, byte[] lnki_ttl);
void Js_wkr__update_hdoc(Xoa_page page, Xog_js_wkr js_wkr, int html_uid, int html_w, int html_h, Io_url html_view_url, int orig_w, int orig_h, Io_url html_orig_url, byte[] lnki_ttl);
}

View File

@@ -17,10 +17,13 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package gplx.xowa.files.gui; import gplx.*; import gplx.xowa.*; import gplx.xowa.files.*;
public interface Xog_js_wkr {
void Html_img_update (String uid, String src, int w, int h);
void Html_redlink (String html_uid);
void Html_img_update (String uid, String src, int w, int h);
void Html_redlink (String html_uid);
void Html_atr_set (String uid, String key, String val);
void Html_elem_replace_html (String uid, String html);
void Html_elem_append_above (String uid, String html);
void Html_atr_set (String uid, String key, String val);
void Html_elem_replace_html (String uid, String html);
void Html_elem_append_above (String uid, String html);
void Html_elem_delete (String elem_id);
void Html_gallery_packed_exec ();
void Html_popups_bind_hover_to_doc ();
}

View File

@@ -17,7 +17,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package gplx.xowa.files.gui; import gplx.*; import gplx.xowa.*; import gplx.xowa.files.*;
public class Xog_js_wkr_ {
public static final Xog_js_wkr Noop = new Xog_js_wkr__noop();
public static final Xog_js_wkr Noop = new Xog_js_wkr__noop();
}
class Xog_js_wkr__noop implements Xog_js_wkr {
public void Html_img_update (String uid, String src, int w, int h) {}
@@ -25,4 +25,7 @@ class Xog_js_wkr__noop implements Xog_js_wkr {
public void Html_elem_replace_html (String uid, String html) {}
public void Html_elem_append_above (String uid, String html) {}
public void Html_redlink (String html_uid) {}
public void Html_elem_delete (String elem_id) {}
public void Html_gallery_packed_exec() {}
public void Html_popups_bind_hover_to_doc() {}
}

View File

@@ -17,18 +17,22 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package gplx.xowa.files.gui; import gplx.*; import gplx.xowa.*; import gplx.xowa.files.*;
public class Xog_js_wkr__log implements Xog_js_wkr {
private final List_adp log_list = List_adp_.new_();
private final List_adp log_list = List_adp_.New();
public void Html_img_update (String uid, String src, int w, int h) {log_list.Add(Object_.Ary(Proc_img_update, uid, src, w, h));}
public void Html_atr_set (String uid, String key, String val) {log_list.Add(Object_.Ary(Proc_atr_set, uid, key, val));}
public void Html_redlink (String uid) {log_list.Add(Object_.Ary(Proc_redlink, uid));}
public void Html_elem_replace_html (String uid, String html) {log_list.Add(Object_.Ary(Proc_replace_html, uid, html));}
public void Html_elem_append_above (String uid, String html) {log_list.Add(Object_.Ary(Proc_append_above, uid, html));}
public void Html_elem_delete (String elem_id) {log_list.Add(Object_.Ary(Proc_delete, elem_id));}
public void Html_gallery_packed_exec() {log_list.Add(Object_.Ary(Proc_gallery_packed_exec));}
public void Html_popups_bind_hover_to_doc() {log_list.Add(Object_.Ary(Proc_popups_bind_hover_to_doc));}
public void Log__clear() {log_list.Clear();}
public int Log__len() {return log_list.Count();}
public Object[] Log__get_at(int i) {return (Object[])log_list.Get_at(i);}
public static final String
Proc_img_update = "img_update", Proc_atr_set = "atr_set", Proc_redlink = "redlink", Proc_replace_html = "replace_html", Proc_append_above = "append_above"
Proc_img_update = "img_update", Proc_atr_set = "atr_set", Proc_redlink = "redlink", Proc_replace_html = "replace_html"
, Proc_append_above = "append_above", Proc_delete = "delete", Proc_gallery_packed_exec = "gallery_packed_exec", Proc_popups_bind_hover_to_doc = "popups_bind_hover_to_doc"
;
}

View File

@@ -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/>.
*/
package gplx.xowa.files.imgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.files.*;
import gplx.gfui.*;
import gplx.gfui.*; import gplx.gfui.imgs.*;
public class Xof_img_wkr_query_img_size_test implements Xof_img_wkr_query_img_size {
public SizeAdp Exec(Io_url url) {
ImageAdp image = ImageAdp_.txt_fil_(url);

View File

@@ -38,13 +38,16 @@ public class Xof_orig_itm {
this.w = w; this.h = h; this.redirect = redirect;
return this;
}
public int Db_row_size() {return Db_row_size_fixed + redirect.length + ttl.length;}
private static final int Db_row_size_fixed = (5 * 4); // 3 ints; 2 bytes
public static final byte Repo_comm = 0, Repo_wiki = 1, Repo_null = Byte_.Max_value_127; // SERIALIZED: "wiki_orig.orig_repo"
public static final Xof_orig_itm Null = null;
public static final Xof_orig_itm Null = null;
public static final int File_len_null = -1; // file_len used for filters (EX: don't download ogg > 1 MB)
public static String dump(Xof_orig_itm itm) {
if (itm == null)
return "NULL";
Bry_bfr bfr = Bry_bfr.new_(255);
Bry_bfr bfr = Bry_bfr_.New_w_size(255);
bfr.Add_str_a7("repo").Add_byte_eq().Add_int_variable((int)itm.repo).Add_byte_semic();
bfr.Add_str_a7("ttl").Add_byte_eq().Add(itm.ttl).Add_byte_semic();
bfr.Add_str_a7("ext_id").Add_byte_eq().Add_int_variable(itm.ext_id).Add_byte_semic();

View File

@@ -20,7 +20,7 @@ import gplx.core.primitives.*; import gplx.dbs.*;
import gplx.xowa.files.repos.*; import gplx.xowa.files.fsdb.*; import gplx.xowa.bldrs.wms.apis.*; import gplx.xowa.files.downloads.*;
public class Xof_orig_mgr {
private Xof_orig_wkr[] wkrs; private int wkrs_len;
private Xof_url_bldr url_bldr; private Xow_repo_mgr repo_mgr; private final Xof_img_size img_size = new Xof_img_size();
private Xof_url_bldr url_bldr; private Xow_repo_mgr repo_mgr; private final Xof_img_size img_size = new Xof_img_size();
public Xof_orig_mgr() {this.Wkrs__clear();}
public void Init_by_wiki(Xow_wiki wiki, Xof_fsdb_mode fsdb_mode, Xof_orig_tbl[] orig_tbls, Xof_url_bldr url_bldr) {
this.repo_mgr = wiki.File__repo_mgr(); this.url_bldr = url_bldr;
@@ -82,7 +82,7 @@ public class Xof_orig_mgr {
wkrs_len += v.length;
}
public void Wkrs_del(byte tid) {
List_adp list = List_adp_.new_();
List_adp list = List_adp_.New();
for (int i = 0; i < wkrs_len; ++i) {
Xof_orig_wkr wkr = wkrs[i];
if (wkr.Tid() == tid) continue; // do not add deleted wkr

View File

@@ -20,9 +20,9 @@ import gplx.core.primitives.*;
import gplx.dbs.*; import gplx.dbs.utls.*;
import gplx.xowa.files.fsdb.*; import gplx.xowa.files.repos.*;
public class Xof_orig_tbl implements Rls_able {
private final String tbl_name; private final Dbmeta_fld_list flds = Dbmeta_fld_list.new_();
private final String fld_repo, fld_ttl, fld_status, fld_ext, fld_w, fld_h, fld_redirect;
private final Db_conn conn; private final Xof_orig_tbl__in_wkr select_in_wkr = new Xof_orig_tbl__in_wkr();
public final String tbl_name; public final Dbmeta_fld_list flds = new Dbmeta_fld_list();
public final String fld_repo, fld_ttl, fld_status, fld_ext, fld_w, fld_h, fld_redirect;
public final Db_conn conn; private final Xof_orig_tbl__in_wkr select_in_wkr = new Xof_orig_tbl__in_wkr();
public Db_conn Conn() {return conn;}
public Xof_orig_tbl(Db_conn conn, boolean schema_is_1) {
this.conn = conn;
@@ -47,7 +47,7 @@ public class Xof_orig_tbl implements Rls_able {
Db_rdr rdr = conn.Stmt_select(tbl_name, flds, fld_ttl).Clear().Crt_bry_as_str(fld_ttl, ttl).Exec_select__rls_auto();
try {
if (rdr.Move_next())
rv = Make_itm(rdr);
rv = Load_by_rdr(rdr);
}
finally {rdr.Rls();}
return rv;
@@ -59,6 +59,9 @@ public class Xof_orig_tbl implements Rls_able {
}
public void Insert(byte repo, byte[] ttl, int ext, int w, int h, byte[] redirect) {
Db_stmt stmt = conn.Stmt_insert(tbl_name, flds);
this.Insert(stmt, repo, ttl, ext, w, h, redirect);
}
public void Insert(Db_stmt stmt, byte repo, byte[] ttl, int ext, int w, int h, byte[] redirect) {
stmt.Clear()
.Val_bry_as_str(fld_ttl, ttl).Val_byte(fld_repo, repo).Val_byte(fld_status, Status_found)
.Val_int(fld_ext, ext).Val_int(fld_w, w).Val_int(fld_h, h).Val_bry_as_str(fld_redirect, redirect)
@@ -72,7 +75,7 @@ public class Xof_orig_tbl implements Rls_able {
.Crt_byte(fld_repo, repo).Crt_bry_as_str(fld_ttl, ttl)
.Exec_update();
}
public Xof_orig_itm Make_itm(Db_rdr rdr) {
public Xof_orig_itm Load_by_rdr(Db_rdr rdr) {
byte repo = rdr.Read_byte(fld_repo);
Xof_orig_itm rv = new Xof_orig_itm().Init
( repo
@@ -106,7 +109,7 @@ class Xof_orig_tbl__in_wkr extends Db_in_wkr__base {
@Override protected void Read_data(Cancelable cancelable, Db_rdr rdr) {
while (rdr.Move_next()) {
if (cancelable.Canceled()) return;
Xof_orig_itm itm = tbl.Make_itm(rdr);
Xof_orig_itm itm = tbl.Load_by_rdr(rdr);
if (itm == Xof_orig_itm.Null) continue;
byte[] itm_ttl = itm.Ttl();
rv.Add_if_dupe_use_1st(itm_ttl, itm); // guard against dupes; fails on en.w:Paris; DATE:2015-03-08

View File

@@ -46,7 +46,7 @@ class Xof_orig_tbl_fxt {
}
public void Test_select_in(String[] itms, Xof_orig_itm... expd) {
Ordered_hash rv = Ordered_hash_.New();
List_adp list = List_adp_.new_();
List_adp list = List_adp_.New();
int itms_len = itms.length;
for (int i = 0; i < itms_len; ++i) {
String itm = itms[i];
@@ -58,7 +58,7 @@ class Xof_orig_tbl_fxt {
Tfds.Eq_str_lines(To_str_ary(expd), To_str_ary((Xof_orig_itm[])rv.To_ary(Xof_orig_itm.class)));
}
private static String To_str_ary(Xof_orig_itm... ary) {
Bry_bfr bfr = Bry_bfr.reset_(255);
Bry_bfr bfr = Bry_bfr_.Reset(255);
int len = ary.length;
for (int i = 0; i < len; ++i) {
Xof_orig_itm itm = ary[i];

View File

@@ -20,8 +20,8 @@ import gplx.core.flds.*;
import gplx.dbs.*; import gplx.xowa.files.fsdb.*;
import gplx.xowa.wikis.tdbs.metas.*;
public class Xof_orig_wkr__xo_meta implements Xof_orig_wkr {
private final Io_url wiki_meta_dir; private final byte dir_spr_byte; private final Bry_bfr url_bfr = Bry_bfr.new_(255);
private final Gfo_fld_rdr meta_rdr = Gfo_fld_rdr.xowa_(); private final Xof_meta_thumb_parser parser = new Xof_meta_thumb_parser();
private final Io_url wiki_meta_dir; private final byte dir_spr_byte; private final Bry_bfr url_bfr = Bry_bfr_.New_w_size(255);
private final Gfo_fld_rdr meta_rdr = Gfo_fld_rdr.xowa_(); private final Xof_meta_thumb_parser parser = new Xof_meta_thumb_parser();
public Xof_orig_wkr__xo_meta(Io_url wiki_meta_dir) {this.wiki_meta_dir = wiki_meta_dir; this.dir_spr_byte = wiki_meta_dir.Info().DirSpr_byte();}
public byte Tid() {return Xof_orig_wkr_.Tid_xowa_meta;}
public void Find_by_list(Ordered_hash rv, List_adp itms) {Xof_orig_wkr_.Find_by_list(this, rv, itms);}

View File

@@ -33,7 +33,7 @@ class Xof_wiki_finder { // UNUSED
private Xoae_page Get_page__by_wiki(Xowe_wiki wiki, int ns_id, byte[] ttl_bry) {
Xoa_ttl ttl = Xoa_ttl.parse(wiki, ns_id, ttl_bry) ;
Xoa_url url = Xoa_url.new_(wiki.Domain_bry(), ttl_bry);
return wiki.Data_mgr().Load_page_by_ttl(url, ttl);
return wiki.Data_mgr().Load_page_and_parse(url, ttl);
}
private int qry_count, qry_count_max = 1000;
public boolean Find_page(Xof_wiki_finder_itm itm, int ns_id, byte[] ttl_bry) {
@@ -65,7 +65,7 @@ class Xof_wiki_finder { // UNUSED
}
private boolean Find_page__by_wiki(Xowd_page_itm db_page, Xowe_wiki wiki, int ns_id, byte[] ttl_bry) {
Xow_ns ns = wiki.Ns_mgr().Ids_get_or_null(ns_id);
wiki.Db_mgr().Load_mgr().Load_page(db_page, ns, false);
wiki.Db_mgr().Load_mgr().Load_page(db_page, ns);
return db_page.Exists();
}
}

View File

@@ -19,13 +19,13 @@ package gplx.xowa.files.repos; import gplx.*; import gplx.xowa.*; import gplx.xo
import gplx.core.btries.*; import gplx.core.consoles.*;
import gplx.xowa.apps.fsys.*; import gplx.xowa.files.exts.*;
import gplx.xowa.wikis.domains.*;
public class Xof_repo_itm implements GfoInvkAble {
private final Xoa_fsys_mgr app_fsys; private final Xof_rule_mgr ext_rule_mgr; private final Bry_bfr tmp_bfr = Bry_bfr.reset_(300);
public class Xof_repo_itm implements Gfo_invk {
private final Xoa_fsys_mgr app_fsys; private final Xof_rule_mgr ext_rule_mgr; private final Bry_bfr tmp_bfr = Bry_bfr_.Reset(300);
public Xof_repo_itm(byte[] key, Xoa_fsys_mgr app_fsys, Xof_rule_mgr ext_rule_mgr, byte[] wiki_domain) {
this.key = key; this.app_fsys = app_fsys; this.ext_rule_mgr = ext_rule_mgr;
Wiki_domain_(wiki_domain);
}
public byte[] Key() {return key;} private final byte[] key;
public byte[] Key() {return key;} private final byte[] key;
public byte[] Wiki_domain() {return wiki_domain;} private byte[] wiki_domain;
public byte[] Wiki_abrv_xo() {return wiki_abrv_xo;} private byte[] wiki_abrv_xo;
public byte[] Root_bry() {return root_bry;} private byte[] root_bry;
@@ -80,7 +80,7 @@ public class Xof_repo_itm implements GfoInvkAble {
else if (ctx.Match(k, Invk_ext_rules_)) Ext_rules_(m.ReadBry("v"));
else if (ctx.Match(k, Invk_wmf_api_)) wmf_api = m.ReadYn("v");
else if (ctx.Match(k, Invk_tarball_)) tarball = m.ReadYn("v");
else return GfoInvkAble_.Rv_unhandled;
else return Gfo_invk_.Rv_unhandled;
return this;
}
private static final String Invk_owner = "owner", Invk_fsys_ = "fsys_", Invk_ext_rules_ = "ext_rules_", Invk_primary_ = "primary_", Invk_wmf_api_ = "wmf_api_", Invk_tarball_ = "tarball_";

View File

@@ -16,17 +16,17 @@ 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.files.repos; import gplx.*; import gplx.xowa.*; import gplx.xowa.files.*;
public class Xof_repo_pair implements GfoInvkAble {
public class Xof_repo_pair implements Gfo_invk {
public Xof_repo_pair(byte repo_idx, byte[] wiki_domain, Xof_repo_itm src, Xof_repo_itm trg) {
this.repo_idx = repo_idx; this.wiki_domain = wiki_domain; this.src = src; this.trg = trg;
}
public byte Repo_idx() {return repo_idx;} private byte repo_idx;
public byte[] Wiki_domain() {return wiki_domain;} private final byte[] wiki_domain;
public Xof_repo_itm Src() {return src;} private final Xof_repo_itm src;
public Xof_repo_itm Trg() {return trg;} private final Xof_repo_itm trg;
public byte[] Wiki_domain() {return wiki_domain;} private final byte[] wiki_domain;
public Xof_repo_itm Src() {return src;} private final Xof_repo_itm src;
public Xof_repo_itm Trg() {return trg;} private final Xof_repo_itm trg;
public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {
if (ctx.Match(k, Invk_repo_id_)) repo_idx = m.ReadByte("v");
else return GfoInvkAble_.Rv_unhandled;
else return Gfo_invk_.Rv_unhandled;
return this;
} private static final String Invk_repo_id_ = "repo_id_";
}

View File

@@ -60,7 +60,7 @@ public class Xofw_wiki_wkr_base implements Xofw_wiki_finder {
}
private byte[] Get_redirect(Xowe_wiki wiki, Xow_ns file_ns, Xowd_page_itm db_page) {
if (db_page.Redirected()) {
wiki.Db_mgr().Load_mgr().Load_page(db_page, file_ns, false);
wiki.Db_mgr().Load_mgr().Load_page(db_page, file_ns);
byte[] src = db_page.Text();
Xoa_ttl redirect_ttl = wiki.Redirect_mgr().Extract_redirect(src);
return redirect_ttl == Xop_redirect_mgr.Redirect_null_ttl ? Xop_redirect_mgr.Redirect_null_bry : redirect_ttl.Page_db();
@@ -68,5 +68,5 @@ public class Xofw_wiki_wkr_base implements Xofw_wiki_finder {
else
return Xop_redirect_mgr.Redirect_null_bry;
}
private static final Xowd_page_itm tmp_db_page = Xowd_page_itm.new_tmp();
private static final Xowd_page_itm tmp_db_page = Xowd_page_itm.new_tmp();
}

View File

@@ -20,8 +20,8 @@ import gplx.xowa.files.xfers.*;
import gplx.xowa.wikis.domains.*;
import gplx.xowa.parsers.utils.*;
import gplx.xowa.wikis.tdbs.metas.*;
public class Xowe_repo_mgr implements Xow_repo_mgr, GfoInvkAble {
private Xowe_wiki wiki; private final List_adp repos = List_adp_.new_();
public class Xowe_repo_mgr implements Xow_repo_mgr, Gfo_invk {
private Xowe_wiki wiki; private final List_adp repos = List_adp_.New();
public Xowe_repo_mgr(Xowe_wiki wiki) {
this.wiki = wiki;
Xoae_app app = wiki.Appe();
@@ -187,7 +187,7 @@ public class Xowe_repo_mgr implements Xow_repo_mgr, GfoInvkAble {
public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {
if (ctx.Match(k, Invk_add)) return Add_repo(m.ReadBry("src"), m.ReadBry("trg"));
else if (ctx.Match(k, Invk_clear)) {repos.Clear(); repos_ary = null;} // reset repos_ary variable
else return GfoInvkAble_.Rv_unhandled;
else return Gfo_invk_.Rv_unhandled;
return this;
} private static final String Invk_add = "add", Invk_clear = "clear";
public Xof_repo_pair Add_repo(byte[] src_repo_key, byte[] trg_repo_key) {

View File

@@ -21,8 +21,8 @@ import gplx.xowa.files.*; import gplx.xowa.files.fsdb.*; import gplx.xowa.files.
import gplx.xowa.files.gui.*;
import gplx.xowa.wikis.tdbs.metas.*;
public class Xof_xfer_queue {
private final List_adp xfer_list = List_adp_.new_(); private final Ordered_hash dirty_meta_mgrs = Ordered_hash_.New_bry();
public Int_obj_ref Html_uid() {return html_uid;} private Int_obj_ref html_uid = Int_obj_ref.neg1_();
private final List_adp xfer_list = List_adp_.New(); private final Ordered_hash dirty_meta_mgrs = Ordered_hash_.New_bry();
public Int_obj_ref Html_uid() {return html_uid;} private Int_obj_ref html_uid = Int_obj_ref.New_neg1();
public int Count() {return xfer_list.Count();}
public void Clear() {
dirty_meta_mgrs.Clear();
@@ -70,7 +70,7 @@ public class Xof_xfer_queue {
wiki.File_mgr().Fsdb_mgr().Fsdb_search_by_list(Xfer_itms_to_fsdb_itms(wiki, page, xfer_list, wiki.File_mgr().Patch_upright()), wiki, page, js_wkr);
}
private List_adp Xfer_itms_to_fsdb_itms(Xowe_wiki cur_wiki, Xoae_page page, List_adp xfer_list, int upright_patch) {
List_adp rv = List_adp_.new_();
List_adp rv = List_adp_.New();
int list_len = xfer_list.Count();
for (int i = 0; i < list_len; i++) {
Xof_file_itm xfer = (Xof_file_itm)xfer_list.Get_at(i);