diff --git a/400_xowa/src/gplx/fsdb/Fsdb_db_mgr_.java b/400_xowa/src/gplx/fsdb/Fsdb_db_mgr_.java index ce53cefb2..d5ffd232e 100644 --- a/400_xowa/src/gplx/fsdb/Fsdb_db_mgr_.java +++ b/400_xowa/src/gplx/fsdb/Fsdb_db_mgr_.java @@ -31,7 +31,19 @@ public class Fsdb_db_mgr_ { ); 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(); + 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; 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; diff --git a/400_xowa/src/gplx/xowa/Xoa_app_.java b/400_xowa/src/gplx/xowa/Xoa_app_.java index c9b205299..ff73f9e07 100644 --- a/400_xowa/src/gplx/xowa/Xoa_app_.java +++ b/400_xowa/src/gplx/xowa/Xoa_app_.java @@ -33,7 +33,7 @@ public class Xoa_app_ { } public static final String Name = "xowa"; 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_fmt = "yyyy-MM-dd HH:mm:ss"; public static String Op_sys_str; diff --git a/400_xowa/src/gplx/xowa/Xowe_wiki.java b/400_xowa/src/gplx/xowa/Xowe_wiki.java index b40440618..34dc239f6 100644 --- a/400_xowa/src/gplx/xowa/Xowe_wiki.java +++ b/400_xowa/src/gplx/xowa/Xowe_wiki.java @@ -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); 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 + + // 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 diff --git a/400_xowa/src/gplx/xowa/files/Xof_wkr_mgr.java b/400_xowa/src/gplx/xowa/files/Xof_wkr_mgr.java index 8d58592a4..499581c03 100644 --- a/400_xowa/src/gplx/xowa/files/Xof_wkr_mgr.java +++ b/400_xowa/src/gplx/xowa/files/Xof_wkr_mgr.java @@ -28,7 +28,7 @@ class Xof_wkr_mgr implements Gfo_invk { private static final String Invk_get = "get"; private Xof_fsdb_mgr Get_or_new(String key) { 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 throw Err_.new_unhandled(key); diff --git a/400_xowa/src/gplx/xowa/files/Xow_file_mgr.java b/400_xowa/src/gplx/xowa/files/Xow_file_mgr.java index ccd9af9e3..682aba5e5 100644 --- a/400_xowa/src/gplx/xowa/files/Xow_file_mgr.java +++ b/400_xowa/src/gplx/xowa/files/Xow_file_mgr.java @@ -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 void Init_by_wiki(Xow_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 if (test_grps == null) test_grps = Hash_adp_.New(); diff --git a/400_xowa/src/gplx/xowa/files/fsdb/fs_roots/Fs_root_core.java b/400_xowa/src/gplx/xowa/files/fsdb/fs_roots/Fs_root_core.java index a47e25de5..6634441c1 100644 --- a/400_xowa/src/gplx/xowa/files/fsdb/fs_roots/Fs_root_core.java +++ b/400_xowa/src/gplx/xowa/files/fsdb/fs_roots/Fs_root_core.java @@ -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); 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) { 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); 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); file_mgr.Fsdb_mgr_(rv); diff --git a/xowa.home.version b/xowa.home.version new file mode 100644 index 000000000..fb3bcceae --- /dev/null +++ b/xowa.home.version @@ -0,0 +1 @@ +custom_wikis