1
0
mirror of https://github.com/gnosygnu/xowa.git synced 2024-10-27 20:34:16 +00:00

Wiki: Support renamed folders

This commit is contained in:
gnosygnu 2017-02-01 19:23:40 -05:00
parent 9c700e4b34
commit cf30fd140e
7 changed files with 38 additions and 3 deletions

View File

@ -31,7 +31,19 @@ public class Fsdb_db_mgr_ {
); );
return new Fsdb_db_mgr__v1(file_dir); return new Fsdb_db_mgr__v1(file_dir);
} }
// FOLDER.RENAME: handle renamed folders; EX:"/wiki/en.wikipedia.org-2016-12" DATE:2017-02-01
String domain_str = wiki.Domain_str(); String domain_str = wiki.Domain_str();
try {
String cfg_domain_str = wiki.Data__core_mgr().Db__core().Tbl__cfg().Select_str("xowa.bldr.session", "wiki_domain");
if (!String_.Eq(domain_str, cfg_domain_str)) {
domain_str = cfg_domain_str;
Gfo_usr_dlg_.Instance.Note_many("", "", "fsdb.db_core.init: fsys.domain doesn't match db.domain; import db.*; fsys=~{0} db=~{1}", domain_str, cfg_domain_str);
}
} catch (Exception e) {
Gfo_usr_dlg_.Instance.Warn_many("", "", "fsdb.db_core.init: failed to get domain from config; err=~{0}", Err_.Message_gplx_log(e));
}
Fsdb_db_mgr rv = null; Fsdb_db_mgr rv = null;
rv = load_or_null(Xow_db_layout.Itm_few, usr_dlg, wiki_dir, wiki, domain_str); if (rv != null) return rv; rv = load_or_null(Xow_db_layout.Itm_few, usr_dlg, wiki_dir, wiki, domain_str); if (rv != null) return rv;
rv = load_or_null(Xow_db_layout.Itm_lot, usr_dlg, wiki_dir, wiki, domain_str); if (rv != null) return rv; rv = load_or_null(Xow_db_layout.Itm_lot, usr_dlg, wiki_dir, wiki, domain_str); if (rv != null) return rv;

View File

@ -33,7 +33,7 @@ public class Xoa_app_ {
} }
public static final String Name = "xowa"; public static final String Name = "xowa";
public static final int Version_id = 512; public static final int Version_id = 512;
public static final String Version = "4.0.2.1701"; // RELEASE:2017-01-03 20:30 public static final String Version = "4.0.3.1702"; // RELEASE:2017-01-03 20:30
public static String Build_date = "2012-12-30 00:00:00"; public static String Build_date = "2012-12-30 00:00:00";
public static String Build_date_fmt = "yyyy-MM-dd HH:mm:ss"; public static String Build_date_fmt = "yyyy-MM-dd HH:mm:ss";
public static String Op_sys_str; public static String Op_sys_str;

View File

@ -185,6 +185,21 @@ public class Xowe_wiki implements Xow_wiki, Gfo_invk, Gfo_evt_itm {
db_mgr_sql.Core_data_mgr().Init_by_load(core_db_url); db_mgr_sql.Core_data_mgr().Init_by_load(core_db_url);
file_mgr.Init_file_mgr_by_load(this); file_mgr.Init_file_mgr_by_load(this);
db_mgr_sql.Core_data_mgr().Tbl__page().Flds__assert(); // NOTE: must go above html_mgr.Init_by_wiki b/c Page_load will be done via messages db_mgr_sql.Core_data_mgr().Tbl__page().Flds__assert(); // NOTE: must go above html_mgr.Init_by_wiki b/c Page_load will be done via messages
// FOLDER.RENAME: handle renamed folders; EX:"/wiki/en.wikipedia.org-2016-12" DATE:2017-02-01
try {
byte[] cfg_domain_bry = db_mgr_sql.Core_data_mgr().Db__core().Tbl__cfg().Select_bry("xowa.bldr.session", "wiki_domain");
if (!Bry_.Eq(cfg_domain_bry, domain_bry)) {
Xow_domain_itm cfg_domain_itm = Xow_domain_itm_.parse(cfg_domain_bry);
this.wdata_wiki_tid = cfg_domain_itm.Domain_type_id();
this.wdata_wiki_lang = cfg_domain_itm.Lang_orig_key();
Bry_bfr bfr = Bry_bfr_.New();
Xow_abrv_wm_.To_abrv(bfr, wdata_wiki_lang, Int_obj_ref.New(wdata_wiki_tid));
this.wdata_wiki_abrv = bfr.To_bry_and_rls();
}
} catch (Exception e) {
Gfo_usr_dlg_.Instance.Warn_many("", "", "db.init: failed to get domain from config; err=~{0}", Err_.Message_gplx_log(e));
}
} }
} }
private void Init_wiki(Xoue_user user) { // NOTE: (a) one-time initialization for all wikis; (b) not called by tests private void Init_wiki(Xoue_user user) { // NOTE: (a) one-time initialization for all wikis; (b) not called by tests

View File

@ -28,7 +28,7 @@ class Xof_wkr_mgr implements Gfo_invk {
private static final String Invk_get = "get"; private static final String Invk_get = "get";
private Xof_fsdb_mgr Get_or_new(String key) { private Xof_fsdb_mgr Get_or_new(String key) {
if (String_.Eq(key, "fs.dir")) { if (String_.Eq(key, "fs.dir")) {
return Fs_root_core.New(file_mgr, file_mgr.Wiki()); return Fs_root_core.Set_fsdb_mgr(file_mgr, file_mgr.Wiki());
} }
else else
throw Err_.new_unhandled(key); throw Err_.new_unhandled(key);

View File

@ -72,6 +72,12 @@ public class Xow_file_mgr implements Gfo_invk {
public Xof_cfg_download Cfg_download() {return cfg_download;} private Xof_cfg_download cfg_download = new Xof_cfg_download(); public Xof_cfg_download Cfg_download() {return cfg_download;} private Xof_cfg_download cfg_download = new Xof_cfg_download();
public void Init_by_wiki(Xow_wiki wiki) { public void Init_by_wiki(Xow_wiki wiki) {
cfg_download.Init_by_wiki(wiki); cfg_download.Init_by_wiki(wiki);
// if non-wmf, set fsdb_mgr to fs.dir; DATE:2017-02-01
if (wiki.Domain_tid() == gplx.xowa.wikis.domains.Xow_domain_tid_.Tid__other) {
gplx.xowa.files.fsdb.fs_roots.Fs_root_core fsdir_core = gplx.xowa.files.fsdb.fs_roots.Fs_root_core.Set_fsdb_mgr(this, this.wiki);
fsdir_core.Orig_dir_(wiki.Fsys_mgr().Root_dir().GenSubDir_nest("file", "orig"));
}
} }
public void Cfg_set(String grp, String key, String val) { // TEST: should only be called by tests 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();

View File

@ -34,6 +34,7 @@ public class Fs_root_core implements Xof_fsdb_mgr, Gfo_invk { // reads images fr
Orig_fil_row rv = mgr.Wkr().Get_by_ttl(lnki_ttl); Orig_fil_row rv = mgr.Wkr().Get_by_ttl(lnki_ttl);
return rv == null ? null : rv.Url(); return rv == null ? null : rv.Url();
} }
public void Orig_dir_(Io_url v) {mgr.Orig_dir_(v);}
public void Fsdb_search_by_list(List_adp itms, Xow_wiki wiki, Xoa_page page, Xog_js_wkr js_wkr) { 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(); int itms_len = itms.Count();
@ -63,7 +64,7 @@ public class Fs_root_core implements Xof_fsdb_mgr, Gfo_invk { // reads images fr
v = Bry_.Replace(v, Byte_ascii.Slash, Byte_ascii.Backslash); 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); 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) { public static Fs_root_core Set_fsdb_mgr(Xow_file_mgr file_mgr, Xowe_wiki wiki) {
Fs_root_core rv = new Fs_root_core(wiki); Fs_root_core rv = new Fs_root_core(wiki);
file_mgr.Fsdb_mgr_(rv); file_mgr.Fsdb_mgr_(rv);

1
xowa.home.version Normal file
View File

@ -0,0 +1 @@
custom_wikis