1
0
mirror of https://github.com/gnosygnu/xowa.git synced 2026-03-02 03:49:30 +00:00
This commit is contained in:
gnosygnu
2016-01-17 23:18:07 -05:00
parent 096045614c
commit 235228976e
314 changed files with 4458 additions and 2694 deletions

View File

@@ -62,10 +62,10 @@ public class Xoav_app implements Xoa_app, GfoInvkAble {
public Xoh_lnki_bldr Html__lnki_bldr() {return html__lnki_bldr;} private final Xoh_lnki_bldr html__lnki_bldr;
public Xoa_css_extractor Html__css_installer() {return html__css_installer;} private final Xoa_css_extractor html__css_installer = new Xoa_css_extractor();
public Xoh_bridge_mgr Html__bridge_mgr() {return html__bridge_mgr;} private final Xoh_bridge_mgr html__bridge_mgr;
public Xoa_meta_mgr Meta_mgr() {return meta_mgr;} private final Xoa_meta_mgr meta_mgr;
public Xoa_meta_mgr Dbmeta_mgr() {return meta_mgr;} private final Xoa_meta_mgr meta_mgr;
public Gfo_inet_conn Utl__inet_conn() {return inet_conn;} private final Gfo_inet_conn inet_conn = Gfo_inet_conn_.new_();
public Xoa_site_cfg_mgr Site_cfg_mgr() {return site_cfg_mgr;} private final Xoa_site_cfg_mgr site_cfg_mgr;
public boolean Xwiki_mgr__missing(byte[] domain) {return wiki_mgr.Get_by_domain(domain) == null;}
public boolean Xwiki_mgr__missing(byte[] domain) {return wiki_mgr.Get_by_or_null(domain) == null;}
public Xoa_sitelink_mgr Xwiki_mgr__sitelink_mgr() {return xwiki_mgr__sitelink_mgr;} private final Xoa_sitelink_mgr xwiki_mgr__sitelink_mgr = new Xoa_sitelink_mgr();
public Xow_xwiki_itm_parser Xwiki_mgr__itm_parser() {return xwiki_mgr__itm_parser;} private final Xow_xwiki_itm_parser xwiki_mgr__itm_parser = new Xow_xwiki_itm_parser();

View File

@@ -21,16 +21,24 @@ import gplx.xowa.wikis.*;
public class Xoav_wiki_mgr implements Xoa_wiki_mgr, GfoInvkAble {
private final Xoav_app app; private final Ordered_hash hash = Ordered_hash_.New_bry();
public Xoav_wiki_mgr(Xoav_app app, Xol_case_mgr case_mgr) {this.app = app;}
public int Count() {return hash.Count();}
public Xow_wiki Get_at_i(int i) {return (Xow_wiki)hash.Get_at(i);}
public Xowv_wiki Get_by_domain(byte[] domain) {return (Xowv_wiki)hash.Get_by(domain);}
public Xowv_wiki Import_by_fil(Io_url fil) {
public int Count() {return hash.Count();}
public boolean Has(byte[] key) {return hash.Has(key);}
public Xow_wiki Get_at(int idx) {return (Xow_wiki)hash.Get_at(idx);}
public Xow_wiki Get_by_or_null(byte[] key) {return (Xow_wiki)hash.Get_by(key);}
public Xow_wiki Get_by_or_make_init_y(byte[] key) {
Xow_wiki rv = this.Get_by_or_null(key);
// if (rv == null) rv = New_wiki(key); // TODO: must init wiki, but need wiki_url; DATE:2015-05-23
return rv;
}
public Xow_wiki Get_by_or_make_init_n(byte[] key) {return Get_by_or_make_init_y(key);}
public void Add(Xow_wiki wiki) {hash.Add_if_dupe_use_nth(wiki.Domain_bry(), wiki);}
public Xow_wiki Load_by_fil(Io_url fil) {
Io_url wiki_dir = fil.OwnerDir();
Xowv_wiki rv = Load(Gen_domain_str(fil.NameOnly()), wiki_dir);
Xow_wiki rv = Load(Gen_domain_str(fil.NameOnly()), wiki_dir);
app.User().User_db_mgr().Site_mgr().Import(rv.Domain_str(), rv.Domain_str(), wiki_dir.Raw(), "");
return rv;
}
public void Load_by_user_data() {
public void Load_by_user_data() {
Xoud_site_row[] ary = app.User().User_db_mgr().Site_mgr().Get_all();
int len = ary.length;
for (int i = 0; i < len; ++i) {
@@ -38,34 +46,14 @@ public class Xoav_wiki_mgr implements Xoa_wiki_mgr, GfoInvkAble {
Load(itm.Domain(), Io_url_.new_dir_(itm.Path()));
}
}
public Xowv_wiki Load_by_fil(Io_url fil) {
return Load(Gen_domain_str(fil.NameOnly()), fil.OwnerDir());
}
public boolean Has(byte[] key) {return hash.Has(key);}
public Xow_wiki Get_by_key_or_null_i(byte[] key) {return (Xowv_wiki)hash.Get_by(key);}
public Xow_wiki Get_by_key_or_make_init_y(byte[] key) {
Xow_wiki rv = this.Get_by_domain(key);
// if (rv == null) rv = New_wiki(key); // TODO: must init wiki, but need wiki_url; DATE:2015-05-23
return rv;
}
public Xow_wiki Get_by_key_or_make_init_n(byte[] key) {return Get_by_key_or_make_init_y(key);}
public void Load_by_dir(Io_url wiki_root_dir) {
Io_url[] wiki_dirs = Io_mgr.Instance.QueryDir_args(wiki_root_dir).DirOnly_().ExecAsUrlAry();
for (Io_url wiki_dir : wiki_dirs) {
String wiki_dir_url = wiki_dir.Raw();
if (String_.Has_at_bgn(wiki_dir_url, "#")) continue;
Load(wiki_dir.NameOnly(), wiki_dir);
}
}
private Xowv_wiki Load(String domain_str, Io_url wiki_dir) {
private Xow_wiki Load(String domain_str, Io_url wiki_dir) {
byte[] domain_bry = Bry_.new_u8(domain_str);
Xowv_wiki rv = new Xowv_wiki(app, domain_bry, wiki_dir);
Xow_wiki rv = new Xowv_wiki(app, domain_bry, wiki_dir);
hash.Add_if_dupe_use_nth(domain_bry, rv);
return rv;
}
public void Add(Xow_wiki wiki) {hash.Add_if_dupe_use_nth(wiki.Domain_bry(), wiki);}
public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {
if (ctx.Match(k, Invk_import_by_fil)) return Import_by_fil(Io_url_.new_fil_(m.ReadStr("v")));
if (ctx.Match(k, Invk_import_by_fil)) return Load_by_fil(Io_url_.new_fil_(m.ReadStr("v")));
else return GfoInvkAble_.Rv_unhandled;
}
public static final String Invk_import_by_fil = "import_by_fil";

View File

@@ -63,7 +63,7 @@ public class Xoa_cfg_mgr implements GfoInvkAble {
int wiki_count = app.Wiki_mgri().Count();
boolean rv = true;
for (int i = 0; i < wiki_count; i++) {
Xow_wiki wiki = app.Wiki_mgri().Get_at_i(i);
Xow_wiki wiki = app.Wiki_mgri().Get_at(i);
if (all || wiki.Domain_tid() == grp_tid.Wiki_tid()) {
if (!Eval_set(wiki, grp.Key_str(), itm.Val()))
rv = false;
@@ -71,7 +71,7 @@ public class Xoa_cfg_mgr implements GfoInvkAble {
}
return rv;
case Xoa_cfg_grp_tid.Tid_wiki: {
Xow_wiki wiki = app.Wiki_mgri().Get_by_key_or_null_i(itm.Key());
Xow_wiki wiki = app.Wiki_mgri().Get_by_or_null(itm.Key());
if (wiki == null) return true; // wiki not installed; return true (no error)
return Eval_set(wiki, grp.Key_str(), itm.Val());
}

View File

@@ -54,7 +54,7 @@ class Xoa_cfg_mgr_fxt {
itm.Val_(val);
}
public Xowe_wiki Exec_make_wiki(String wiki_key_str) {return Exec_make_wiki(Bry_.new_a7(wiki_key_str));}
public Xowe_wiki Exec_make_wiki(byte[] wiki_key_bry) {return app.Wiki_mgr().Get_by_key_or_make(wiki_key_bry);}
public Xowe_wiki Exec_make_wiki(byte[] wiki_key_bry) {return app.Wiki_mgr().Get_by_or_make(wiki_key_bry);}
public void Test_init_wiki(String wiki_key_str, String itm_key_str, String expd_val) {
byte[] wiki_key_bry = Bry_.new_a7(wiki_key_str);
Xowe_wiki wiki = Exec_make_wiki(wiki_key_bry);

View File

@@ -92,7 +92,7 @@ public class Http_server_mgr implements GfoInvkAble {
public String Parse_page_to_html(Http_data__client data__client, byte[] wiki_domain, byte[] page_ttl) {
synchronized (thread_lock) {
Init_gui();
Xowe_wiki wiki = (Xowe_wiki)app.Wiki_mgr().Get_by_key_or_make_init_y(wiki_domain); // get the wiki; assert init for Main_Page; EX:click zh.w on wiki sidebar; DATE:2015-07-19
Xowe_wiki wiki = (Xowe_wiki)app.Wiki_mgr().Get_by_or_make_init_y(wiki_domain); // get the wiki; assert init for Main_Page; EX:click zh.w on wiki sidebar; DATE:2015-07-19
if (Env_.System_memory_total() > Io_mgr.Len_gb) Xow_wiki_.Rls_mem(wiki, true); // release memory at 1 GB; DATE:2015-09-11
if (Bry_.Len_eq_0(page_ttl)) page_ttl = wiki.Props().Main_page();
Xoa_url page_url = wiki.Utl__url_parser().Parse(page_ttl); // get the url (needed for query args)

View File

@@ -29,7 +29,7 @@ class Http_server_wkr_ {
byte[] wiki_domain = Bry_.new_u8(req_array[1]);
Xow_domain_itm domain_itm = Xow_domain_itm_.parse(wiki_domain);
if (domain_itm.Domain_type_id() == Xow_domain_tid_.Int__other && domain_itm.Lang_actl_itm().Id() == Xol_lang_stub_.Id__intl) return req;
Xowe_wiki wiki = app.Wiki_mgr().Get_by_key_or_make(wiki_domain);
Xowe_wiki wiki = app.Wiki_mgr().Get_by_or_make(wiki_domain);
wiki.Init_assert();
String main_page = String_.new_u8(wiki.Props().Main_page());
if (mode == 1) main_page = "/" + main_page;

View File

@@ -33,7 +33,7 @@ class Http_server_wkr__fxt {
this.app = Xoa_app_fxt.app_();
}
public void Init_wiki_main_page(String domain, String main_page) {
Xowe_wiki wiki = app.Wiki_mgr().Get_by_key_or_make(Bry_.new_u8(domain));
Xowe_wiki wiki = app.Wiki_mgr().Get_by_or_make(Bry_.new_u8(domain));
wiki.Props().Main_page_(Bry_.new_u8(main_page));
}
public void Test_assert_main_page(String url, String expd) {

View File

@@ -50,7 +50,7 @@ public class Xoa_url_parser {
Xow_xwiki_itm xwiki_itm = app.User().Wikii().Xwiki_mgr().Get_by_key(wiki_bry);
if (xwiki_itm == null) {Xoa_url_.Invalid_warn(str); return null;} // if wiki doesn't exist, warn and return nothing; DATE:2015-08-25
if (rv.Page_is_main()) { // Main_Page requested; EX: "zh.wikipedia.org"; "zh.wikipedia.org/wiki/"; DATE:2014-02-16
Xow_wiki wiki_itm = app.Wiki_mgri().Get_by_key_or_make_init_y(wiki_bry); // NOTE: must call Init to load Main_Page; only call if from url_bar, else all sister wikis will be loaded when parsing Sister_wikis panel
Xow_wiki wiki_itm = app.Wiki_mgri().Get_by_or_make_init_y(wiki_bry); // NOTE: must call Init to load Main_Page; only call if from url_bar, else all sister wikis will be loaded when parsing Sister_wikis panel
rv.Page_bry_(wiki_itm.Props().Main_page());
}
return rv;
@@ -241,10 +241,10 @@ public class Xoa_url_parser {
if (colon_pos == Bry_find_.Not_found) return null; // no colon
Xow_wiki alias_wiki = wiki; // default alias_wiki to cur_wiki
if (!tmp_wiki_is_missing) // tmp_wiki exists; use it for alias wikis; DATE:2015-09-17
alias_wiki = wiki.App().Wiki_mgri().Get_by_key_or_make_init_n(tmp_wiki);
alias_wiki = wiki.App().Wiki_mgri().Get_by_or_make_init_n(tmp_wiki);
Xow_xwiki_itm alias_itm = alias_wiki.Xwiki_mgr().Get_by_mid(bry, 0, colon_pos); // check for alias;
if (alias_itm == null) return null; // colon-word is not alias; EX:A:B
Xow_ns_mgr ns_mgr = tmp_wiki_is_missing ? wiki.Ns_mgr() : wiki.App().Meta_mgr().Ns__get_or_load(tmp_wiki);
Xow_ns_mgr ns_mgr = tmp_wiki_is_missing ? wiki.Ns_mgr() : wiki.App().Dbmeta_mgr().Ns__get_or_load(tmp_wiki);
if (ns_mgr.Names_get_or_null(alias_itm.Key_bry()) != null) // special case to handle collision between "wikipedia" alias and "Wikipedia" namespace; if alias exists as ns, ignore it; EX:sv.wikipedia.org/wiki/Wikipedia:Main_Page DATE:2015-07-31
return null;
byte[] rv = Bry_.Mid(bry, colon_pos + 1);

View File

@@ -44,7 +44,7 @@ public class Xoa_url_parser_fxt {
return this;
}
public Xow_ns_mgr Prep_get_ns_mgr_from_meta(String wiki) {
return app.Meta_mgr().Ns__get_or_load(Bry_.new_u8(wiki));
return app.Dbmeta_mgr().Ns__get_or_load(Bry_.new_u8(wiki));
}
public Xoa_url_parser_fxt Run_parse(String actl_str) {return Run_parse(cur_wiki, actl_str);}
public Xoa_url_parser_fxt Run_parse(Xow_wiki wiki, String actl_str) {