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

'v3.8.2.1'

This commit is contained in:
gnosygnu
2016-08-07 21:36:50 -04:00
parent b0fdf78a41
commit e4a2af026b
165 changed files with 2534 additions and 1247 deletions

View File

@@ -19,7 +19,7 @@ package gplx.xowa.files; import gplx.*; import gplx.xowa.*;
import gplx.dbs.*;
import gplx.xowa.files.origs.*; import gplx.xowa.files.repos.*;
public class Xof_file_fxt {
private final Xowe_wiki wiki;
private final Xowe_wiki wiki;
Xof_file_fxt(Xowe_wiki wiki) {
this.wiki = wiki;
Io_mgr.Instance.InitEngine_mem();
@@ -40,7 +40,7 @@ public class Xof_file_fxt {
Db_conn conn = Db_conn_bldr.Instance.Get_or_new(Io_url_.mem_fil_("mem/xowa/wiki/" + wiki.Domain_str() + "/orig.xowa")).Conn();
Xof_orig_tbl orig_tbl = new Xof_orig_tbl(conn, Bool_.Y);
orig_tbl.Create_tbl();
wiki.File_mgr().Orig_mgr().Init_by_wiki(wiki, Xof_fsdb_mode.new_v2_gui(), new Xof_orig_tbl[] {orig_tbl}, Xof_url_bldr.new_v2());
wiki.File_mgr().Orig_mgr().Init_by_wiki(wiki, Xof_fsdb_mode.New__v2__gui(), new Xof_orig_tbl[] {orig_tbl}, Xof_url_bldr.new_v2());
return this;
}
public void Exec_orig_add(boolean repo_is_commons, String orig_ttl, int orig_ext_id, int orig_w, int orig_h, String orig_redirect) {

View File

@@ -19,15 +19,17 @@ package gplx.xowa.files; import gplx.*; import gplx.xowa.*;
public class Xof_fsdb_mode {
private int tid;
Xof_fsdb_mode(int tid) {this.tid = tid;}
// public boolean Tid_v0() {return tid == Tid_int_v0;}
public boolean Tid_v2_gui() {return tid == Tid_int_v2_gui;}
public boolean Tid_v2_bld() {return tid == Tid_int_v2_bld;}
public void Tid_v2_bld_y_() {tid = Tid_int_v2_bld;}
public boolean Tid__v2__bld() {return tid == TID__v2__bld;}
public void Tid__v2__bld__y_() {tid = TID__v2__bld;}
public boolean Tid__v2__mp() {return tid == TID__v2__mp;}
public void Tid__v2__mp__y_() {tid = TID__v2__mp;}
public boolean Tid__bld() {return tid > TID__v2__gui;}
private static final int
Tid_int_v0 = 1
, Tid_int_v2_gui = 2
, Tid_int_v2_bld = 3
TID__v0 = 1
, TID__v2__gui = 2
, TID__v2__bld = 3
, TID__v2__mp = 4
;
public static Xof_fsdb_mode new_v0() {return new Xof_fsdb_mode(Tid_int_v0);}
public static Xof_fsdb_mode new_v2_gui() {return new Xof_fsdb_mode(Tid_int_v2_gui);}
public static Xof_fsdb_mode New__v0() {return new Xof_fsdb_mode(TID__v0);}
public static Xof_fsdb_mode New__v2__gui() {return new Xof_fsdb_mode(TID__v2__gui);}
}

View File

@@ -17,7 +17,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package gplx.xowa.files; import gplx.*; import gplx.xowa.*;
public class Xof_html_elem {
public static final byte Tid_none = 0, Tid_img = 1, Tid_vid = 2, Tid_gallery = 3, Tid_gallery_v2 = 4, Tid_imap = 5;
public static final byte Tid_none = 0, Tid_img = 1, Tid_vid = 2, Tid_gallery = 3, Tid_gallery_v2 = 4, Tid_imap = 5, Tid_aud = 6;
public static boolean Tid_is_file(byte tid) {
switch (tid) {
case Tid_img: case Tid_vid: return true;

View File

@@ -42,11 +42,11 @@ public class Xow_file_mgr implements Gfo_invk {
Io_url file_dir = wiki.Fsys_mgr().File_dir();
if (!Io_mgr.Instance.ExistsFil(file_dir.GenSubFil(Fsdb_db_mgr__v1.Mnt_name))) {
version = Version_1;
fsdb_mode = Xof_fsdb_mode.new_v0();
fsdb_mode = Xof_fsdb_mode.New__v0();
}
else {
version = Version_2;
fsdb_mode = Xof_fsdb_mode.new_v2_gui();
fsdb_mode = Xof_fsdb_mode.New__v2__gui();
}
}
return version;
@@ -54,7 +54,7 @@ public class Xow_file_mgr implements Gfo_invk {
public boolean Version_1_y() {return this.Version() == Version_1;}
public boolean Version_2_y() {return this.Version() == Version_2;}
public void Version_1_y_() {version = Version_1;} // TEST:
public void Version_2_y_() {version = Version_2;} // TEST:
public void Version_2_y_() {version = Version_2; fsdb_mode = Xof_fsdb_mode.New__v2__gui();} // TEST:
public void Fsdb_mgr_(Xof_fsdb_mgr fsdb_mgr) {
this.fsdb_mgr = fsdb_mgr;
version = Version_2;
@@ -127,7 +127,7 @@ public class Xow_file_mgr implements Gfo_invk {
)
db_core = Fsdb_db_mgr__v2_bldr.Get_or_make(wiki, false); // make it
this.version = Version_2;
this.fsdb_mode = Xof_fsdb_mode.new_v2_gui();
this.fsdb_mode = Xof_fsdb_mode.New__v2__gui();
orig_mgr.Init_by_wiki(wiki, fsdb_mode, db_core.File__orig_tbl_ary(), Xof_url_bldr.new_v2());
fsdb_mgr.Init_by_wiki(wiki);
}

View File

@@ -25,7 +25,7 @@ public class Xou_file_itm_finder {
byte[] lnki_ttl = xfer.Lnki_ttl();
Xof_url_bldr url_bldr = wiki.Parser_mgr().Url_bldr();
try {
if (wiki.File__fsdb_mode().Tid_v2_bld()) return false; // disable during build
if (wiki.File__fsdb_mode().Tid__bld()) return false; // disable during build
Xou_cache_itm cache_itm = cache_mgr.Get_or_null(wiki.Domain_itm().Abrv_xo(), lnki_ttl, xfer.Lnki_type(), xfer.Lnki_upright(), xfer.Lnki_w(), xfer.Lnki_h(), xfer.Lnki_time(), xfer.Lnki_page(), Xof_img_size.Thumb_width_img);
Xof_repo_itm repo = null;
if (cache_itm == null) {// itm not in cache;

View File

@@ -32,7 +32,7 @@ class Xof_file_fxt {
Xoa_test_.Db_init(root_url);
app = Xoa_app_fxt.Make__app__edit(Op_sys.Cur().Os_name(), root_url);
wiki = Xoa_app_fxt.Make__wiki__edit(app);
wiki.File__fsdb_mode().Tid_v2_bld_y_();
wiki.File__fsdb_mode().Tid__v2__bld__y_();
this.fsdb_mgr = (Xof_fsdb_mgr__sql)wiki.File_mgr().Fsdb_mgr();
this.orig_mgr = wiki.File__orig_mgr();
Xof_repo_fxt.Repos_init(app.File_mgr(), true, wiki);

View File

@@ -18,26 +18,18 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
package gplx.xowa.files.origs; import gplx.*; import gplx.xowa.*; import gplx.xowa.files.*;
import gplx.xowa.wikis.*; import gplx.xowa.files.*;
public class Xof_orig_itm {
public byte Repo() {return repo;} private byte repo;
public byte[] Ttl() {return ttl;} private byte[] ttl; // without file ns; EX: "A.png" not "File:A.png"
public int Ext_id() {return ext_id;} private int ext_id;
public Xof_ext Ext() {if (ext == null) ext = Xof_ext_.new_by_id_(ext_id); return ext;} private Xof_ext ext;
public int W() {return w;} private int w;
public int H() {return h;} private int h;
public byte[] Redirect() {return redirect;} private byte[] redirect; // redirect trg; EX: A.png is redirected to B.jpg; record will have A.png|jpg|220|200|B.jpg where jpg|220|200 are the attributes of B.jpg
public boolean Insert_new() {return insert_new;} public void Insert_new_y_() {insert_new = Bool_.Y;} private boolean insert_new;
public void Clear() {
this.repo = Repo_null;
this.ttl = this.redirect = null;
this.ext_id = Xof_ext_.Id_unknown;
this.w = this.h = Xof_img_size.Null;
this.ext = null;
}
public Xof_orig_itm Init(byte repo, byte[] ttl, int ext_id, int w, int h, byte[] redirect) {
public Xof_orig_itm(byte repo, byte[] ttl, int ext_id, int w, int h, byte[] redirect) {
this.repo = repo; this.ttl = ttl; this.ext_id = ext_id;
this.w = w; this.h = h; this.redirect = redirect;
return this;
}
public byte Repo() {return repo;} private final byte repo;
public byte[] Ttl() {return ttl;} private final byte[] ttl; // without file ns; EX: "A.png" not "File:A.png"
public int Ext_id() {return ext_id;} private final int ext_id;
public Xof_ext Ext() {if (ext == null) ext = Xof_ext_.new_by_id_(ext_id); return ext;} private Xof_ext ext;
public int W() {return w;} private final int w;
public int H() {return h;} private final int h;
public byte[] Redirect() {return redirect;} private final byte[] redirect; // redirect trg; EX: A.png is redirected to B.jpg; record will have A.png|jpg|220|200|B.jpg where jpg|220|200 are the attributes of B.jpg
public boolean Insert_new() {return insert_new;} public void Insert_new_y_() {insert_new = Bool_.Y;} private boolean insert_new;
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

View File

@@ -17,7 +17,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package gplx.xowa.files.origs; import gplx.*; import gplx.xowa.*; import gplx.xowa.files.*;
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.*;
import gplx.xowa.files.repos.*; import gplx.xowa.files.fsdb.*; import gplx.xowa.files.downloads.*;
import gplx.xowa.apps.wms.apis.*; import gplx.xowa.apps.wms.apis.origs.*;
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();
@@ -28,16 +29,16 @@ public class Xof_orig_mgr {
int orig_tbls_len = orig_tbls.length;
for (int i = 0; i < orig_tbls_len; ++i) {
Xof_orig_tbl orig_tbl = orig_tbls[i];
this.Wkrs__add_many(new Xof_orig_wkr__orig_db(orig_tbl, i == orig_tbls_len - 1));
this.Wkrs__add(new Xof_orig_wkr__orig_db(orig_tbl, i == orig_tbls_len - 1));
}
// }
if (!fsdb_mode.Tid_v2_bld()) { // add if gui, but not if bld
if (!fsdb_mode.Tid__v2__bld()) { // add if gui, but not if bld
Io_url wiki_meta_dir = wiki.App().Fsys_mgr().File_dir().GenSubDir_nest("#meta", wiki.Domain_str());
if (Io_mgr.Instance.ExistsDir(wiki_meta_dir)) {
Xof_orig_wkr__xo_meta xo_meta = new Xof_orig_wkr__xo_meta(wiki_meta_dir);
this.Wkrs__add_many(xo_meta);
this.Wkrs__add(xo_meta);
}
this.Wkrs__add_many(new Xof_orig_wkr__wmf_api(new Xoapi_orig_wmf(), wiki.App().Wmf_mgr().Download_wkr(), repo_mgr, wiki.Domain_bry()));
this.Wkrs__add(new Xof_orig_wkr__wmf_api(new Xoapi_orig_wmf(), wiki.App().Wmf_mgr().Download_wkr(), repo_mgr, wiki.Domain_bry()));
}
}
public Xof_orig_itm Find_by_ttl_or_null(byte[] ttl) {return Find_by_ttl_or_null(ttl, 0, 1);}
@@ -77,11 +78,15 @@ public class Xof_orig_mgr {
}
}
private void Wkrs__clear() {wkrs = Xof_orig_wkr_.Ary_empty; wkrs_len = 0;}
private void Wkrs__add_many(Xof_orig_wkr... v) {
public void Wkrs__add(Xof_orig_wkr... v) {
wkrs = (Xof_orig_wkr[])Array_.Resize_add(wkrs, v);
wkrs_len += v.length;
}
public void Wkrs_del(byte tid) {
public void Wkrs__set(Xof_orig_wkr... v) {
wkrs = v;
wkrs_len = v.length;
}
public void Wkrs__del(byte tid) {
List_adp list = List_adp_.New();
for (int i = 0; i < wkrs_len; ++i) {
Xof_orig_wkr wkr = wkrs[i];

View File

@@ -77,7 +77,7 @@ public class Xof_orig_tbl implements Rls_able {
}
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
Xof_orig_itm rv = new Xof_orig_itm
( repo
, rdr.Read_bry_by_str(fld_ttl)
, rdr.Read_int(fld_ext)

View File

@@ -40,7 +40,7 @@ class Xof_orig_tbl_fxt {
}
public Xof_orig_itm Exec_insert(String ttl, int w, int h) {
byte[] ttl_bry = Bry_.new_u8(ttl);
Xof_orig_itm rv = new Xof_orig_itm().Init(Xof_orig_itm.Repo_comm, ttl_bry, Xof_ext_.new_by_ttl_(ttl_bry).Id(), w, h, Bry_.Empty);
Xof_orig_itm rv = new Xof_orig_itm(Xof_orig_itm.Repo_comm, ttl_bry, Xof_ext_.new_by_ttl_(ttl_bry).Id(), w, h, Bry_.Empty);
tbl.Insert(rv.Repo(), rv.Ttl(), rv.Ext_id(), rv.W(), rv.H(), rv.Redirect());
return rv;
}

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.origs; import gplx.*; import gplx.xowa.*; import gplx.xowa.files.*;
import gplx.xowa.bldrs.wms.apis.*; import gplx.xowa.files.fsdb.*;
import gplx.xowa.apps.wms.apis.*; import gplx.xowa.files.fsdb.*;
public class Xof_orig_wkr_ {
public static final Xof_orig_wkr[] Ary_empty = new Xof_orig_wkr[0];
public static final Xof_orig_wkr[] Ary_empty = new Xof_orig_wkr[0];
public static void Find_by_list(Xof_orig_wkr wkr, Ordered_hash rv, List_adp itms) {
int len = itms.Count();
for (int i = 0; i < len; ++i) {
@@ -34,5 +34,6 @@ public class Xof_orig_wkr_ {
Tid_xowa_db = 1
, Tid_wmf_api = 2
, Tid_xowa_meta = 3
, Tid_xowa_img_links = 4
;
}

View File

@@ -16,10 +16,11 @@ 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.origs; import gplx.*; import gplx.xowa.*; import gplx.xowa.files.*;
import gplx.xowa.files.repos.*; import gplx.xowa.files.fsdb.*; import gplx.xowa.bldrs.wms.apis.*; import gplx.xowa.files.downloads.*;
import gplx.xowa.files.repos.*; import gplx.xowa.files.fsdb.*; import gplx.xowa.apps.wms.apis.*; import gplx.xowa.files.downloads.*;
import gplx.xowa.apps.wms.apis.origs.*;
public class Xof_orig_wkr__wmf_api implements Xof_orig_wkr {
private final Xoapi_orig_base orig_api; private final Xof_download_wkr download_wkr; private final Xow_repo_mgr repo_mgr; private final byte[] wiki_domain;
private final Xoapi_orig_rslts api_rv = new Xoapi_orig_rslts();
private final Xoapi_orig_base orig_api; private final Xof_download_wkr download_wkr; private final Xow_repo_mgr repo_mgr; private final byte[] wiki_domain;
private final Xoapi_orig_rslts api_rv = new Xoapi_orig_rslts();
public Xof_orig_wkr__wmf_api(Xoapi_orig_base orig_api, Xof_download_wkr download_wkr, Xow_repo_mgr repo_mgr, byte[] wiki_domain) {
this.orig_api = orig_api; this.download_wkr = download_wkr; this.repo_mgr = repo_mgr; this.wiki_domain = wiki_domain;
}
@@ -35,8 +36,7 @@ public class Xof_orig_wkr__wmf_api implements Xof_orig_wkr {
int api_w = api_rv.Orig_w(), api_h = api_rv.Orig_h();
Xof_ext api_ext = Xof_ext_.new_by_ttl_(api_page); api_ext = Ext__handle_ogg(api_ext, api_w, api_h);
byte[] api_redirect = Bry_.Eq(api_page, ttl) ? Bry_.Empty : api_page; // ttl is different; must be redirect
Xof_orig_itm rv = new Xof_orig_itm();
rv.Init(api_repo, api_page, api_ext.Id(), api_w, api_h, api_redirect);
Xof_orig_itm rv = new Xof_orig_itm(api_repo, api_page, api_ext.Id(), api_w, api_h, api_redirect);
rv.Insert_new_y_();
return rv;
}

View File

@@ -38,8 +38,7 @@ public class Xof_orig_wkr__xo_meta implements Xof_orig_wkr {
Xof_meta_fil meta_fil = new Xof_meta_fil(null, md5); // NOTE: need to register file before loading it; defect wherein 2 files with same hash prefix would skip one b/c Loaded file was not registered; EX.WS: en.wikiquote.org/The Hitchhiker's Guide to the Galaxy; NMMP_dolphin_with_locator.jpeg, da6f95736ed249f371f30bf5f1205fbd; Hoags_object.jpg, daed4a54e48e4266bd2f2763b7c4018c
meta_fil.Load(meta_rdr, parser);
Xof_meta_itm meta_itm = meta_fil.Get_or_null(ttl); if (meta_itm == null) return Xof_orig_itm.Null;
Xof_orig_itm rv = new Xof_orig_itm();
rv.Init((byte)meta_itm.Vrtl_repo(), ttl, Xof_ext_.new_by_ttl_(ttl).Id(), meta_itm.Orig_w(), meta_itm.Orig_h(), meta_itm.Ptr_ttl());
Xof_orig_itm rv = new Xof_orig_itm((byte)meta_itm.Vrtl_repo(), ttl, Xof_ext_.new_by_ttl_(ttl).Id(), meta_itm.Orig_w(), meta_itm.Orig_h(), meta_itm.Ptr_ttl());
rv.Insert_new_y_();
return rv;
}

View File

@@ -41,6 +41,13 @@ public class Xowe_repo_mgr implements Xow_repo_mgr, Gfo_invk {
}
return null;
}
public void Clone(Xowe_repo_mgr src) {
int len = src.Repos_len();
for (int i = 0; i < len; ++i) {
Xof_repo_pair repo_pair = src.Repos_get_at(i);
this.Add_repo(repo_pair.Src().Key(), repo_pair.Trg().Key());
}
}
public Xof_repo_pair Repos_get_at(int i) {return (Xof_repo_pair)repos.Get_at(i);}
private Xof_repo_pair Repos_get_by_id(int id) {
int len = repos.Count();

View File

@@ -18,10 +18,10 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
package gplx.xowa.files.xfers; import gplx.*; import gplx.xowa.*; import gplx.xowa.files.*;
import gplx.core.primitives.*; import gplx.gfui.*;
import gplx.xowa.files.*; import gplx.xowa.files.repos.*; import gplx.xowa.files.exts.*; import gplx.xowa.files.downloads.*;
import gplx.xowa.bldrs.wms.*; import gplx.xowa.bldrs.wms.apis.*;
import gplx.xowa.bldrs.wms.*; import gplx.xowa.apps.wms.apis.*; import gplx.xowa.apps.wms.apis.origs.*;
import gplx.xowa.wikis.tdbs.metas.*;
public class Xof_xfer_mgr {
public Xof_xfer_mgr(Xof_file_mgr file_mgr, Xowmf_mgr wmf_mgr) {this.file_mgr = file_mgr; this.wmf_mgr = wmf_mgr;} private final Xof_file_mgr file_mgr; private final Xowmf_mgr wmf_mgr;
public Xof_xfer_mgr(Xof_file_mgr file_mgr, Xowmf_mgr wmf_mgr) {this.file_mgr = file_mgr; this.wmf_mgr = wmf_mgr;} private final Xof_file_mgr file_mgr; private final Xowmf_mgr wmf_mgr;
public Xof_xfer_rslt Rslt() {return rslt;} private Xof_xfer_rslt rslt = new Xof_xfer_rslt();
public boolean Force_orig() {return force_orig;} public Xof_xfer_mgr Force_orig_(boolean v) {force_orig = v; return this;} private boolean force_orig;
public Xof_xfer_mgr Force_orig_y_() {return Force_orig_(Bool_.Y);} public Xof_xfer_mgr Force_orig_n_() {return Force_orig_(Bool_.N);}

View File

@@ -17,8 +17,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package gplx.xowa.files.xfers; import gplx.*; import gplx.xowa.*; import gplx.xowa.files.*;
import gplx.core.ios.*;
import gplx.xowa.wikis.domains.*; import gplx.xowa.files.cnvs.*; import gplx.xowa.files.repos.*;
import gplx.xowa.bldrs.wms.apis.*; import gplx.xowa.files.exts.*; import gplx.xowa.files.imgs.*;
import gplx.xowa.wikis.domains.*;
import gplx.xowa.files.cnvs.*; import gplx.xowa.files.repos.*; import gplx.xowa.files.exts.*; import gplx.xowa.files.imgs.*;
import gplx.xowa.apps.wms.apis.*; import gplx.xowa.apps.wms.apis.origs.*;
public class Xof_xfer_queue_base_fxt {
public Xoapi_orig_mok Api_size() {return api_size;} private Xoapi_orig_mok api_size = Xoapi_orig_mok.Instance;
public Xof_repo_itm Src_commons_repo() {return src_commons_repo;} private Xof_repo_itm src_commons_repo;