mirror of https://github.com/gnosygnu/xowa
parent
ca8017a876
commit
78526c00c6
@ -0,0 +1,69 @@
|
||||
/*
|
||||
XOWA: the XOWA Offline Wiki Application
|
||||
Copyright (C) 2012 gnosygnu@gmail.com
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Affero General Public License as
|
||||
published by the Free Software Foundation, either version 3 of the
|
||||
License, or (at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Affero General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Affero General Public License
|
||||
along with this program. If not, see <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.xowa.guis.cbks.js.*;
|
||||
public class Fs_root_core implements Xof_fsdb_mgr, Gfo_invk { // reads images from file-system dir
|
||||
private Xowe_wiki wiki;
|
||||
private final Fs_root_mgr mgr;
|
||||
public Fs_root_core(Xowe_wiki wiki) {
|
||||
this.Init_by_wiki(wiki);
|
||||
this.mgr = new Fs_root_mgr(wiki);
|
||||
}
|
||||
public gplx.xowa.files.bins.Xof_bin_mgr Bin_mgr() {throw Err_.new_unimplemented();}
|
||||
public gplx.fsdb.meta.Fsm_mnt_mgr Mnt_mgr() {return null;}
|
||||
public void Init_by_wiki(Xow_wiki wiki) {
|
||||
this.wiki = (Xowe_wiki)wiki;
|
||||
}
|
||||
public void Fsdb_search_by_list(List_adp itms, Xow_wiki wiki, Xoa_page page, Xog_js_wkr js_wkr) {
|
||||
int itms_len = itms.Count();
|
||||
|
||||
// NOTE: do not cache in /xowa/file b/c files will already exist in /xowa/wiki/wiki_name/file/thumb
|
||||
gplx.xowa.files.caches.Xou_cache_mgr cache_mgr = wiki.App().User().User_db_mgr().Cache_mgr();
|
||||
for (int i = 0; i < itms_len; i++) {
|
||||
Xof_fsdb_itm itm = (Xof_fsdb_itm)itms.Get_at(i);
|
||||
if (mgr.Find_file(itm)) {
|
||||
Js_img_mgr.Update_img(page, js_wkr, itm);
|
||||
cache_mgr.Update(itm);
|
||||
}
|
||||
}
|
||||
cache_mgr.Db_save();
|
||||
}
|
||||
public void Rls() {}
|
||||
|
||||
public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {
|
||||
if (ctx.Match(k, Invk_root_dir_)) mgr.Root_dir_(To_url(m.ReadBry("v")));
|
||||
else if (ctx.Match(k, Invk_orig_dir_)) mgr.Orig_dir_(To_url(m.ReadBry("v")));
|
||||
else if (ctx.Match(k, Invk_thumb_dir_)) mgr.Thumb_dir_(To_url(m.ReadBry("v")));
|
||||
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_";
|
||||
private Io_url To_url(byte[] v) {
|
||||
if (gplx.core.envs.Op_sys.Cur().Tid_is_wnt())
|
||||
v = Bry_.Replace(v, Byte_ascii.Slash, Byte_ascii.Backslash);
|
||||
return gplx.core.brys.fmtrs.Bry_fmtr_eval_mgr_.Eval_url(wiki.Appe().Url_cmd_eval(), v);
|
||||
}
|
||||
public static Fs_root_core New(Xow_file_mgr file_mgr, Xowe_wiki wiki) {
|
||||
Fs_root_core rv = new Fs_root_core(wiki);
|
||||
file_mgr.Fsdb_mgr_(rv);
|
||||
|
||||
file_mgr.Orig_mgr().Wkrs__del(gplx.xowa.files.origs.Xof_orig_wkr_.Tid_wmf_api);
|
||||
file_mgr.Orig_mgr().Wkrs__set(new Xof_orig_wkr__fs_root(rv.mgr.Wkr()));
|
||||
return rv;
|
||||
}
|
||||
}
|
@ -1,53 +0,0 @@
|
||||
/*
|
||||
XOWA: the XOWA Offline Wiki Application
|
||||
Copyright (C) 2012 gnosygnu@gmail.com
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Affero General Public License as
|
||||
published by the Free Software Foundation, either version 3 of the
|
||||
License, or (at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Affero General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Affero General Public License
|
||||
along with this program. If not, see <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.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.guis.cbks.js.*; 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, 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;}
|
||||
public void Fsdb_search_by_list(List_adp itms, Xow_wiki wiki, Xoa_page page, Xog_js_wkr js_wkr) {
|
||||
int itms_len = itms.Count();
|
||||
// Xou_cache_mgr cache_mgr = wiki.App().User().User_db_mgr().Cache_mgr(); // repo_id is 127; DATE:2015-08-23
|
||||
for (int i = 0; i < itms_len; i++) {
|
||||
Xof_fsdb_itm itm = (Xof_fsdb_itm)itms.Get_at(i);
|
||||
if (fsdb_wkr.Find_file(itm)) {
|
||||
Js_img_mgr.Update_img(page, js_wkr, itm);
|
||||
// cache_mgr.Update(itm);
|
||||
}
|
||||
}
|
||||
// cache_mgr.Db_save();
|
||||
}
|
||||
private Io_url Xto_url(byte[] v) {
|
||||
if (Op_sys.Cur().Tid_is_wnt())
|
||||
v = Bry_.Replace(v, Byte_ascii.Slash, Byte_ascii.Backslash);
|
||||
return Bry_fmtr_eval_mgr_.Eval_url(wiki.Appe().Url_cmd_eval(), v);
|
||||
}
|
||||
public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {
|
||||
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 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();}
|
||||
public Fsm_mnt_mgr Mnt_mgr() {return null;}
|
||||
public void Rls() {}
|
||||
}
|
@ -1,46 +0,0 @@
|
||||
/*
|
||||
XOWA: the XOWA Offline Wiki Application
|
||||
Copyright (C) 2012 gnosygnu@gmail.com
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Affero General Public License as
|
||||
published by the Free Software Foundation, either version 3 of the
|
||||
License, or (at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Affero General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Affero General Public License
|
||||
along with this program. If not, see <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.*;
|
||||
public class Orig_fil_itm {
|
||||
public Orig_fil_itm() {}
|
||||
public Orig_fil_itm(int uid, byte[] name, int ext_id, int w, int h, byte[] dir_url) {
|
||||
this.fil_uid = uid; this.fil_name = name; this.fil_ext_id = ext_id; this.fil_w = w; this.fil_h = h; this.fil_dir_url = dir_url;
|
||||
}
|
||||
public int Fil_uid() {return fil_uid;} private int fil_uid;
|
||||
public byte[] Fil_name() {return fil_name;} private byte[] fil_name;
|
||||
public int Fil_ext_id() {return fil_ext_id;} private int fil_ext_id;
|
||||
public int Fil_w() {return fil_w;} private int fil_w;
|
||||
public int Fil_h() {return fil_h;} private int fil_h;
|
||||
public byte[] Fil_dir_url() {return fil_dir_url;} private byte[] fil_dir_url;
|
||||
public Io_url Fil_url() {
|
||||
if (fil_url == null) {
|
||||
byte[] fil_url_bry = Bry_.Add(fil_dir_url, fil_name);
|
||||
fil_url = Io_url_.new_fil_(String_.new_u8(fil_url_bry));
|
||||
}
|
||||
return fil_url;
|
||||
} private Io_url fil_url;
|
||||
public Orig_fil_itm Init_by_make(Io_url url, byte[] name_bry, int ext_id) {
|
||||
this.fil_url = url;
|
||||
this.fil_name = name_bry;
|
||||
this.fil_dir_url = Bry_.new_u8(url.OwnerDir().Raw());
|
||||
this.fil_ext_id = ext_id;
|
||||
return this;
|
||||
}
|
||||
public Orig_fil_itm Init_by_size(int uid, int w, int h) {this.fil_uid = uid; this.fil_w = w; this.fil_h = h; return this;}
|
||||
public static final Orig_fil_itm Null = null;
|
||||
}
|
@ -0,0 +1,47 @@
|
||||
/*
|
||||
XOWA: the XOWA Offline Wiki Application
|
||||
Copyright (C) 2012 gnosygnu@gmail.com
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Affero General Public License as
|
||||
published by the Free Software Foundation, either version 3 of the
|
||||
License, or (at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Affero General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Affero General Public License
|
||||
along with this program. If not, see <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.*;
|
||||
class Orig_fil_row {
|
||||
Orig_fil_row(int uid, byte[] name, int ext_id, int w, int h, Io_url url) {
|
||||
this.uid = uid;
|
||||
this.name = name;
|
||||
this.ext_id = ext_id;
|
||||
this.w = w;
|
||||
this.h = h;
|
||||
this.url = url;
|
||||
}
|
||||
public int Uid() {return uid;} private int uid;
|
||||
public byte[] Name() {return name;} private final byte[] name;
|
||||
public int Ext_id() {return ext_id;} private final int ext_id;
|
||||
public int W() {return w;} private int w;
|
||||
public int H() {return h;} private int h;
|
||||
public Io_url Url() {return url;} private final Io_url url;
|
||||
|
||||
public Orig_fil_row Init_by_fs(int uid, int w, int h) {
|
||||
this.uid = uid; this.w = w; this.h = h;
|
||||
return this;
|
||||
}
|
||||
|
||||
public static final Orig_fil_row Null = null;
|
||||
public static Orig_fil_row New_by_db(int uid, byte[] name, int ext_id, int w, int h, Io_url dir) {
|
||||
return new Orig_fil_row(uid, name, ext_id, w, h, dir.GenSubFil(String_.new_u8(name)));
|
||||
}
|
||||
public static Orig_fil_row New_by_fs(Io_url url, byte[] name, int ext_id) {
|
||||
return new Orig_fil_row(0, name, ext_id, 0, 0, url);
|
||||
}
|
||||
}
|
@ -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.fsdb.fs_roots; import gplx.*; import gplx.xowa.*; import gplx.xowa.files.*; import gplx.xowa.files.fsdb.*;
|
||||
import gplx.dbs.*;
|
||||
import gplx.xowa.files.origs.*;
|
||||
class Xof_orig_wkr__fs_root implements Xof_orig_wkr {
|
||||
private final Fs_root_wkr wkr;
|
||||
public Xof_orig_wkr__fs_root(Fs_root_wkr wkr) {this.wkr = wkr;}
|
||||
public byte Tid() {return Xof_orig_wkr_.Tid_fs_root;}
|
||||
public void Find_by_list(Ordered_hash rv, List_adp itms) {Xof_orig_wkr_.Find_by_list(this, rv, itms);}
|
||||
public Xof_orig_itm Find_as_itm(byte[] ttl, int list_idx, int list_len) {
|
||||
Orig_fil_row orig_row = wkr.Get_by_ttl(ttl);
|
||||
if (orig_row == Orig_fil_row.Null) return Xof_orig_itm.Null;
|
||||
|
||||
Xof_orig_itm rv = new Xof_orig_itm
|
||||
( gplx.xowa.files.repos.Xof_repo_tid_.Tid__local
|
||||
, ttl
|
||||
, Xof_ext_.new_by_ttl_(ttl).Id()
|
||||
, orig_row.W()
|
||||
, orig_row.H()
|
||||
, null
|
||||
);
|
||||
return rv;
|
||||
}
|
||||
public boolean Add_orig(byte repo, byte[] page, int ext_id, int w, int h, byte[] redirect) {return false;}
|
||||
public void Db_txn_save() {}
|
||||
public void Db_rls() {}
|
||||
}
|
Loading…
Reference in new issue