mirror of
https://github.com/gnosygnu/xowa.git
synced 2024-10-27 20:34:16 +00:00
Personal_wikis: Assert name prop is in wiki.core
This commit is contained in:
parent
083ab133f7
commit
04a58326e2
@ -37,24 +37,24 @@ abstract class Xowdir_wiki_props_mgr__base implements Xowdir_wiki_props_mgr {
|
|||||||
public Xowdir_wiki_props Verify(boolean mode_is_import, String domain, Io_url core_db_url) {
|
public Xowdir_wiki_props Verify(boolean mode_is_import, String domain, Io_url core_db_url) {
|
||||||
Xowdir_wiki_props rv = new Xowdir_wiki_props();
|
Xowdir_wiki_props rv = new Xowdir_wiki_props();
|
||||||
|
|
||||||
Verify_or_fix(rv, core_db_url, Xowd_cfg_key_.Key__wiki_core__domain);
|
Verify_or_fix(rv, mode_is_import, core_db_url, Xowd_cfg_key_.Key__wiki_core__domain);
|
||||||
Verify_or_fix(rv, core_db_url, Xowd_cfg_key_.Key__init__main_page);
|
Verify_or_fix(rv, mode_is_import, core_db_url, Xowd_cfg_key_.Key__init__main_page);
|
||||||
Verify_or_fix(rv, core_db_url, Xowd_cfg_key_.Key__wiki_core__name);
|
Verify_or_fix(rv, mode_is_import, core_db_url, Xowd_cfg_key_.Key__wiki_core__name);
|
||||||
|
|
||||||
return rv;
|
return rv;
|
||||||
}
|
}
|
||||||
private String Verify_or_fix(Xowdir_wiki_props props, Io_url core_db_url, String key) {
|
private String Verify_or_fix(Xowdir_wiki_props props, boolean mode_is_import, Io_url core_db_url, String key) {
|
||||||
String val = Wiki_cfg__select_or(key, null);
|
String val = Wiki_cfg__select_or(key, null);
|
||||||
if (val == null) {
|
if (val == null) {
|
||||||
props.Dirty_y_();
|
props.Dirty_y_();
|
||||||
usr_dlg.Warn_many("", "", "xowdir: core_db.xowa_cfg does not have val; url=~{0} key=~{1}", core_db_url, key);
|
usr_dlg.Warn_many("", "", "xowdir: core_db.xowa_cfg does not have val; url=~{0} key=~{1}", core_db_url, key);
|
||||||
val = Fix(props, core_db_url, key);
|
val = Fix(props, mode_is_import, core_db_url, key);
|
||||||
Wiki_cfg__upsert(key, val);
|
Wiki_cfg__upsert(key, val);
|
||||||
}
|
}
|
||||||
props.Set(key, val);
|
props.Set(key, val);
|
||||||
return val;
|
return val;
|
||||||
}
|
}
|
||||||
private static String Fix(Xowdir_wiki_props props, Io_url core_db_url, String key) {
|
private String Fix(Xowdir_wiki_props props, boolean mode_is_import, Io_url core_db_url, String key) {
|
||||||
if (String_.Eq(key, Xowd_cfg_key_.Key__wiki_core__domain)) {
|
if (String_.Eq(key, Xowd_cfg_key_.Key__wiki_core__domain)) {
|
||||||
String rv = core_db_url.NameOnly();
|
String rv = core_db_url.NameOnly();
|
||||||
if (String_.Has_at_end(rv, "-core"))
|
if (String_.Has_at_end(rv, "-core"))
|
||||||
@ -62,7 +62,12 @@ abstract class Xowdir_wiki_props_mgr__base implements Xowdir_wiki_props_mgr {
|
|||||||
return rv;
|
return rv;
|
||||||
}
|
}
|
||||||
else if (String_.Eq(key, Xowd_cfg_key_.Key__wiki_core__name)) {
|
else if (String_.Eq(key, Xowd_cfg_key_.Key__wiki_core__name)) {
|
||||||
return props.Domain(); // NOTE: must be called after domain
|
if (mode_is_import)
|
||||||
|
return props.Domain(); // NOTE: must be called after domain
|
||||||
|
else {
|
||||||
|
Xowdir_wiki_json wiki_json = Xowdir_wiki_json.New_by_json(new Json_parser(), User_reg__select(props.Domain()));
|
||||||
|
return wiki_json.Name();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if (String_.Eq(key, Xowd_cfg_key_.Key__init__main_page)) {
|
else if (String_.Eq(key, Xowd_cfg_key_.Key__init__main_page)) {
|
||||||
return Xoa_page_.Main_page_str;
|
return Xoa_page_.Main_page_str;
|
||||||
|
@ -16,37 +16,49 @@ 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/>.
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
package gplx.xowa.addons.wikis.directorys.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.directorys.*;
|
package gplx.xowa.addons.wikis.directorys.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.directorys.*;
|
||||||
import org.junit.*; import gplx.core.tests.*; import gplx.xowa.wikis.data.*;
|
import org.junit.*; import gplx.core.tests.*;
|
||||||
|
import gplx.langs.jsons.*;
|
||||||
|
import gplx.xowa.wikis.data.*;
|
||||||
public class Xowdir_wiki_props_mgr__tst {
|
public class Xowdir_wiki_props_mgr__tst {
|
||||||
private final Xowdir_wiki_props_mgr__fxt fxt = new Xowdir_wiki_props_mgr__fxt();
|
private final Xowdir_wiki_props_mgr__fxt fxt = new Xowdir_wiki_props_mgr__fxt();
|
||||||
|
|
||||||
@Test public void Import__wiki__missing_all() {
|
@Test public void Import__wiki__missing_all() {
|
||||||
// handle all imported .xowa wikis pre v4.3
|
// handle all imported .xowa wikis pre v4.3
|
||||||
fxt.Init__props(null, null, null);
|
fxt.Init__wiki_props(null, null, null);
|
||||||
fxt.Test__verify(Bool_.Y, "/dir/test.xowa", Bool_.Y, fxt.Make__json("test", "test", "Main_Page"));
|
fxt.Test__verify(Bool_.Y, "/dir/test.xowa", Bool_.Y, fxt.Make__json("test", "test", "Main_Page"));
|
||||||
}
|
}
|
||||||
@Test public void Import__wiki__missing_domain() {
|
@Test public void Import__wiki__missing_domain() {
|
||||||
// handle personal wikis from v4.2
|
// handle personal wikis from v4.2
|
||||||
fxt.Init__props(null, null, "Main_Page");
|
fxt.Init__wiki_props(null, null, "Main_Page");
|
||||||
fxt.Test__verify(Bool_.Y, "/dir/test.xowa", Bool_.Y, fxt.Make__json("test", "test", "Main_Page"));
|
fxt.Test__verify(Bool_.Y, "/dir/test.xowa", Bool_.Y, fxt.Make__json("test", "test", "Main_Page"));
|
||||||
}
|
}
|
||||||
@Test public void Import__wiki__wmf_domain() {
|
@Test public void Import__wiki__wmf_domain() {
|
||||||
// handle wmf wikis with a core-file of "test-core.xowa"
|
// handle wmf wikis with a core-file of "test-core.xowa"
|
||||||
fxt.Init__props(null, null, "Main_Page");
|
fxt.Init__wiki_props(null, null, "Main_Page");
|
||||||
fxt.Test__verify(Bool_.Y, "/dir/test-core.xowa", Bool_.Y, fxt.Make__json("test", "test", "Main_Page"));
|
fxt.Test__verify(Bool_.Y, "/dir/test-core.xowa", Bool_.Y, fxt.Make__json("test", "test", "Main_Page"));
|
||||||
}
|
}
|
||||||
@Test public void Import__wiki__clean() {
|
@Test public void Import__wiki__clean() {
|
||||||
// handle clean wiki
|
// handle clean wiki
|
||||||
fxt.Init__props("test", "test", "Main_Page");
|
fxt.Init__wiki_props("test", "test", "Main_Page");
|
||||||
fxt.Test__verify(Bool_.Y, "/dir/test.xowa", Bool_.N, fxt.Make__json("test", "test", "Main_Page"));
|
fxt.Test__verify(Bool_.Y, "/dir/test.xowa", Bool_.N, fxt.Make__json("test", "test", "Main_Page"));
|
||||||
}
|
}
|
||||||
|
@Test public void Open__wiki__missing_name() {
|
||||||
|
// handle missing name
|
||||||
|
fxt.Init__user_json("test", "my test", "Main_Page");
|
||||||
|
fxt.Init__wiki_props(null, null, "Main_Page");
|
||||||
|
fxt.Test__verify(Bool_.N, "/dir/test.xowa", Bool_.Y, fxt.Make__json("test", "my test", "Main_Page"));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
class Xowdir_wiki_props_mgr__fxt {
|
class Xowdir_wiki_props_mgr__fxt {
|
||||||
private final Xowdir_wiki_props_mgr mgr = new Xowdir_wiki_props_mgr__mock();
|
private final Xowdir_wiki_props_mgr mgr = new Xowdir_wiki_props_mgr__mock();
|
||||||
public Xowdir_wiki_props Make__json(String domain, String name, String main_page) {
|
public Xowdir_wiki_props Make__json(String domain, String name, String main_page) {
|
||||||
return new Xowdir_wiki_props(domain, name, main_page);
|
return new Xowdir_wiki_props(domain, name, main_page);
|
||||||
}
|
}
|
||||||
public void Init__props(String domain, String name, String main_page) {
|
public void Init__user_json(String domain, String name, String main_page) {
|
||||||
|
Xowdir_wiki_json wiki_json = new Xowdir_wiki_json(name, main_page);
|
||||||
|
mgr.User_reg__upsert(domain, wiki_json.To_str(new Json_wtr()));
|
||||||
|
}
|
||||||
|
public void Init__wiki_props(String domain, String name, String main_page) {
|
||||||
mgr.Wiki_cfg__upsert(Xowd_cfg_key_.Key__wiki_core__domain, domain);
|
mgr.Wiki_cfg__upsert(Xowd_cfg_key_.Key__wiki_core__domain, domain);
|
||||||
mgr.Wiki_cfg__upsert(Xowd_cfg_key_.Key__wiki_core__name, name);
|
mgr.Wiki_cfg__upsert(Xowd_cfg_key_.Key__wiki_core__name, name);
|
||||||
mgr.Wiki_cfg__upsert(Xowd_cfg_key_.Key__init__main_page, main_page);
|
mgr.Wiki_cfg__upsert(Xowd_cfg_key_.Key__init__main_page, main_page);
|
||||||
|
@ -44,7 +44,9 @@ public class Xowdir_item_doc implements Mustache_doc_itm {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static final Xowdir_item_doc[] Ary_empty = new Xowdir_item_doc[0];
|
public static final Xowdir_item_doc[] Ary_empty = new Xowdir_item_doc[0];
|
||||||
public static Xowdir_item_doc New(Xowdir_wiki_itm itm) {return new Xowdir_item_doc(itm.Id(), itm.Domain(), itm.Json().Name(), itm.Url().OwnerDir().Xto_api(), itm.Json().Main_page());}
|
public static Xowdir_item_doc New(Xowdir_wiki_itm itm) {
|
||||||
|
return new Xowdir_item_doc(itm.Id(), itm.Domain(), itm.Json().Name(), itm.Url().OwnerDir().Xto_api(), itm.Json().Main_page());
|
||||||
|
}
|
||||||
public static Xowdir_item_doc[] New_ary(Xowdir_wiki_itm[] itms_ary) {
|
public static Xowdir_item_doc[] New_ary(Xowdir_wiki_itm[] itms_ary) {
|
||||||
int len = itms_ary.length;
|
int len = itms_ary.length;
|
||||||
Xowdir_item_doc[] rv = new Xowdir_item_doc[itms_ary.length];
|
Xowdir_item_doc[] rv = new Xowdir_item_doc[itms_ary.length];
|
||||||
|
Loading…
Reference in New Issue
Block a user