mirror of
https://github.com/gnosygnu/xowa.git
synced 2024-10-27 20:34:16 +00:00
User_wiki: Differentiate Edit versus Create
This commit is contained in:
parent
8016846cd9
commit
6d327749fc
@ -33,9 +33,9 @@ public class Db_tbl__crud_ {
|
||||
// do update / insert; NOTE: 0-index and crt_cols_len assumes that objs starts with crts; EX: (id) -> (1, 'abc') x> ('abc', 1)
|
||||
// update
|
||||
if (exists) {
|
||||
Db_stmt update_stmt = conn.Stmt_update(tbl_name, crt_cols, crt_cols);
|
||||
Add_arg(update_stmt, flds, crt_cols, objs, Bool_.Y, 0);
|
||||
Db_stmt update_stmt = conn.Stmt_update(tbl_name, crt_cols, val_cols);
|
||||
Add_arg(update_stmt, flds, val_cols, objs, Bool_.N, crt_cols_len);
|
||||
Add_arg(update_stmt, flds, crt_cols, objs, Bool_.Y, 0);
|
||||
update_stmt.Exec_update();
|
||||
update_stmt.Rls();
|
||||
return false;
|
||||
|
@ -54,7 +54,7 @@ public interface Xow_wiki extends Xow_ttl_parser, Gfo_invk {
|
||||
Xow_mw_parser_mgr Mw_parser_mgr();
|
||||
Xow_xwiki_mgr Xwiki_mgr();
|
||||
Xow_wiki_props Props();
|
||||
Xow_site_stats_mgr Stats();
|
||||
Xowd_site_stats_mgr Stats();
|
||||
void Init_by_wiki();
|
||||
void Init_by_wiki__force(); // HACK: force init for drd wiki
|
||||
Bry_bfr_mkr Utl__bfr_mkr();
|
||||
|
@ -52,7 +52,7 @@ public class Xowe_wiki implements Xow_wiki, Gfo_invk, Gfo_evt_itm {
|
||||
cfg_parser = new Xowc_parser(this);
|
||||
props.Init_props(domain_tid, domain_bry);
|
||||
props.ContentLanguage_(lang.Key_bry());
|
||||
stats = new Xow_site_stats_mgr(this);
|
||||
stats = new Xowd_site_stats_mgr(this);
|
||||
Pf_func_.Reg(domain_itm, lang.Func_regy(), lang);
|
||||
special_mgr = new Xow_special_mgr(this, lang);
|
||||
sys_cfg = new Xow_sys_cfg(this);
|
||||
@ -113,7 +113,7 @@ public class Xowe_wiki implements Xow_wiki, Gfo_invk, Gfo_evt_itm {
|
||||
public Xow_mw_parser_mgr Mw_parser_mgr() {return mw_parser_mgr;} private final Xow_mw_parser_mgr mw_parser_mgr = new Xow_mw_parser_mgr();
|
||||
public Xow_xwiki_mgr Xwiki_mgr() {return xwiki_mgr;} private final Xow_xwiki_mgr xwiki_mgr;
|
||||
public Xow_wiki_props Props() {return props;} private final Xow_wiki_props props = new Xow_wiki_props();
|
||||
public Xow_site_stats_mgr Stats() {return stats;} private final Xow_site_stats_mgr stats;
|
||||
public Xowd_site_stats_mgr Stats() {return stats;} private final Xowd_site_stats_mgr stats;
|
||||
public Xow_parser_mgr Parser_mgr() {return parser_mgr;} private final Xow_parser_mgr parser_mgr;
|
||||
public Xoax_addon_mgr Addon_mgr() {return addon_mgr;} private final Xoax_addon_mgr addon_mgr = new Xoax_addon_mgr();
|
||||
public Xog_cbk_mgr Gui__cbk_mgr() {return gui__cbk_mgr;} private final Xog_cbk_mgr gui__cbk_mgr = new Xog_cbk_mgr();
|
||||
@ -178,6 +178,7 @@ public class Xowe_wiki implements Xow_wiki, Gfo_invk, Gfo_evt_itm {
|
||||
public void Init_by_wiki() {Init_assert();}
|
||||
public Xowe_wiki Init_assert() {if (init_needed) Init_wiki(app.Usere()); return this;}
|
||||
public void Init_db_mgr() {
|
||||
int j = 1;
|
||||
Io_url core_db_url = gplx.xowa.wikis.data.Xow_db_file__core_.Find_core_fil(this);
|
||||
if (core_db_url == null) {
|
||||
tdb_fsys_mgr.Scan_dirs();
|
||||
|
@ -17,16 +17,14 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package gplx.xowa.addons.users.wikis.regys.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.users.*; import gplx.xowa.addons.users.wikis.*; import gplx.xowa.addons.users.wikis.regys.*;
|
||||
public class Xou_wiki_itm {
|
||||
public Xou_wiki_itm(int id, int type, String domain, String name, Io_url url, String data) {
|
||||
public Xou_wiki_itm(int id, String domain, String name, Io_url url, String data) {
|
||||
this.id = id;
|
||||
this.type = type;
|
||||
this.domain = domain;
|
||||
this.name = name;
|
||||
this.url = url;
|
||||
this.data = data;
|
||||
}
|
||||
public int Id() {return id;} private int id;
|
||||
public int Type() {return type;} private int type;
|
||||
public String Domain() {return domain;} private String domain;
|
||||
public String Name() {return name;} private String name;
|
||||
public Io_url Url() {return url;} private Io_url url;
|
||||
|
@ -19,17 +19,15 @@ package gplx.xowa.addons.users.wikis.regys.dbs; import gplx.*; import gplx.xowa.
|
||||
import gplx.dbs.*; import gplx.dbs.utls.*;
|
||||
public class Xou_wiki_tbl implements Db_tbl {
|
||||
private final Dbmeta_fld_list flds = new Dbmeta_fld_list();
|
||||
private final String fld__wiki_id, fld__wiki_type, fld__wiki_domain, fld__wiki_name, fld__wiki_data_date, fld__wiki_core_url, fld__wiki_data;
|
||||
private final String fld__wiki_id, fld__wiki_domain, fld__wiki_name, fld__wiki_core_url, fld__wiki_data;
|
||||
private final Db_conn conn;
|
||||
public Xou_wiki_tbl(Db_conn conn) {
|
||||
this.conn = conn;
|
||||
this.tbl_name = Tbl_name_dflt;
|
||||
this.fld__wiki_id = flds.Add_int_pkey("wiki_id");
|
||||
this.fld__wiki_type = flds.Add_int("wiki_type"); // enum: 0=user; 1=wmf; 2=wikia;
|
||||
this.fld__wiki_domain = flds.Add_str("wiki_domain", 255); // EX: "en.wikipedia.org"
|
||||
this.fld__wiki_name = flds.Add_str("wiki_name", 255); // EX: "English Wikipedia"
|
||||
this.fld__wiki_core_url = flds.Add_str("wiki_core_url", 255); // EX: "/xowa/wiki/en.wikipedia.org/en.wikipedia.org-core.xowa"
|
||||
this.fld__wiki_data_date = flds.Add_str("wiki_data_date", 16); // EX: "20161001"
|
||||
this.fld__wiki_data = flds.Add_text("wiki_data"); // EX: '{category_level="1",search_level="2", ...}'
|
||||
conn.Rls_reg(this);
|
||||
}
|
||||
@ -37,16 +35,15 @@ public class Xou_wiki_tbl implements Db_tbl {
|
||||
public void Create_tbl() {
|
||||
conn.Meta_tbl_create(Dbmeta_tbl_itm.New(tbl_name, flds));
|
||||
}
|
||||
public void Insert(int id, String type, String domain, String name, String data_date, String core_url, String data) {
|
||||
conn.Stmt_insert(tbl_name, flds)
|
||||
.Val_int(fld__wiki_id, id)
|
||||
.Val_str(fld__wiki_type, type).Val_str(fld__wiki_domain, domain).Val_str(fld__wiki_name, name)
|
||||
.Val_str(fld__wiki_data_date, data_date).Val_str(fld__wiki_core_url, core_url).Val_str(fld__wiki_data, data)
|
||||
public void Insert(int id, String domain, String name, String core_url, String data) {
|
||||
conn.Stmt_insert(tbl_name, flds).Val_int(fld__wiki_id, id)
|
||||
.Val_str(fld__wiki_domain, domain).Val_str(fld__wiki_name, name)
|
||||
.Val_str(fld__wiki_core_url, core_url).Val_str(fld__wiki_data, data)
|
||||
.Exec_insert()
|
||||
;
|
||||
}
|
||||
public boolean Upsert(int id, String domain, String name, String file) {
|
||||
return Db_tbl__crud_.Upsert(conn, tbl_name, flds, String_.Ary(fld__wiki_id), id, 0, domain, name, file, "", "");
|
||||
return Db_tbl__crud_.Upsert(conn, tbl_name, flds, String_.Ary(fld__wiki_id), id, domain, name, file, "");
|
||||
}
|
||||
public Xou_wiki_itm[] Select_all() {
|
||||
Db_rdr rdr = conn.Stmt_select(tbl_name, flds).Exec_select__rls_auto();
|
||||
@ -69,9 +66,7 @@ public class Xou_wiki_tbl implements Db_tbl {
|
||||
finally {rdr.Rls();}
|
||||
}
|
||||
private Xou_wiki_itm Make(Db_rdr rdr) {
|
||||
return new Xou_wiki_itm(rdr.Read_int(fld__wiki_id), rdr.Read_int(fld__wiki_type)
|
||||
, rdr.Read_str(fld__wiki_domain), rdr.Read_str(fld__wiki_name), Io_url_.new_fil_(rdr.Read_str(fld__wiki_core_url)), rdr.Read_str(fld__wiki_data)
|
||||
);
|
||||
return new Xou_wiki_itm(rdr.Read_int(fld__wiki_id), rdr.Read_str(fld__wiki_domain), rdr.Read_str(fld__wiki_name), Io_url_.new_fil_(rdr.Read_str(fld__wiki_core_url)), rdr.Read_str(fld__wiki_data));
|
||||
}
|
||||
|
||||
public void Rls() {}
|
||||
|
@ -20,6 +20,7 @@ import gplx.dbs.*;
|
||||
public class Xouw_db_mgr {
|
||||
public Xouw_db_mgr(Db_conn conn) {
|
||||
tbl__wiki = new Xou_wiki_tbl(conn);
|
||||
conn.Meta_tbl_assert(tbl__wiki);
|
||||
}
|
||||
public Xou_wiki_tbl Tbl__wiki() {return tbl__wiki;} private final Xou_wiki_tbl tbl__wiki;
|
||||
}
|
||||
|
@ -21,36 +21,6 @@ import gplx.xowa.wikis.dbs.*; import gplx.xowa.wikis.data.*; import gplx.xowa.wi
|
||||
import gplx.xowa.addons.users.wikis.regys.dbs.*;
|
||||
import gplx.xowa.addons.users.wikis.regys.specials.itms.bldrs.*;
|
||||
public class Xopg_db_mgr {
|
||||
private final Xodb_mgr_sql db_mgr;
|
||||
public Xopg_db_mgr(Xowe_wiki wiki) {
|
||||
this.db_mgr = wiki.Db_mgr_as_sql();
|
||||
}
|
||||
public int Create(int ns_id, byte[] ttl_page_db, byte[] text_raw) {
|
||||
Xow_db_file core_db = db_mgr.Core_data_mgr().Db__core();
|
||||
|
||||
int page_id = core_db.Tbl__cfg().Select_int_or("db", "page.id_next", -1);
|
||||
|
||||
// get page_db, text_db and over variables
|
||||
Xowd_page_tbl page_tbl = db_mgr.Core_data_mgr().Tbl__page();
|
||||
Xow_db_file text_db = db_mgr.Core_data_mgr().Db__text();
|
||||
if (text_db == null) text_db = db_mgr.Core_data_mgr().Db__core(); // HACK: needed for create new wiki DATE:2016-10-29
|
||||
Xowd_text_tbl text_tbl = text_db.Tbl__text();
|
||||
byte[] text_zip = text_tbl.Zip(text_raw);
|
||||
boolean redirect = db_mgr.Wiki().Redirect_mgr().Is_redirect(text_raw, text_raw.length);
|
||||
|
||||
// do insert
|
||||
page_tbl.Insert_bgn();
|
||||
text_tbl.Insert_bgn();
|
||||
int ns_count = core_db.Tbl__ns().Select_ns_count(ns_id) + 1;
|
||||
try {
|
||||
db_mgr.Core_data_mgr().Create_page(page_tbl, text_tbl, page_id, ns_id, ttl_page_db, redirect, Datetime_now.Get(), text_zip, text_raw.length, ns_count, text_db.Id(), -1);
|
||||
core_db.Tbl__ns().Update_ns_count(ns_id, ns_count);
|
||||
} finally {
|
||||
page_tbl.Insert_end();
|
||||
text_tbl.Insert_end();
|
||||
}
|
||||
return page_id;
|
||||
}
|
||||
public static int Create(Xodb_wiki_db core_db, int ns_id, byte[] ttl_page_db, byte[] text_raw) {
|
||||
Db_cfg_tbl cfg_tbl = Db_cfg_tbl.Get_by_key(core_db, Xowd_cfg_tbl_.Tbl_name);
|
||||
|
||||
|
@ -19,18 +19,18 @@ package gplx.xowa.addons.users.wikis.regys.specials.itms; import gplx.*; import
|
||||
import gplx.xowa.specials.*; import gplx.langs.mustaches.*; import gplx.xowa.wikis.pages.*; import gplx.xowa.wikis.pages.tags.*;
|
||||
import gplx.dbs.*; import gplx.xowa.addons.users.wikis.regys.dbs.*;
|
||||
class Xouw_itm_html extends Xow_special_wtr__base {
|
||||
private final String key;
|
||||
public Xouw_itm_html(String key) {
|
||||
this.key = key;
|
||||
private final String domain;
|
||||
public Xouw_itm_html(String domain) {
|
||||
this.domain = domain;
|
||||
}
|
||||
@Override protected Io_url Get_addon_dir(Xoa_app app) {return app.Fsys_mgr().Http_root().GenSubDir_nest("bin", "any", "xowa", "addon", "user", "wiki", "itm");}
|
||||
@Override protected Io_url Get_mustache_fil(Io_url addon_dir) {return addon_dir.GenSubFil_nest("bin", "xouw_itm.mustache.html");}
|
||||
@Override protected Mustache_doc_itm Bld_mustache_root(Xoa_app app) {
|
||||
Db_conn conn = app.User().User_db_mgr().Conn();
|
||||
Xouw_db_mgr db_mgr = new Xouw_db_mgr(conn);
|
||||
Xou_wiki_itm itm = db_mgr.Tbl__wiki().Select_by_key_or_null(key);
|
||||
Xou_wiki_itm itm = db_mgr.Tbl__wiki().Select_by_key_or_null(domain);
|
||||
if (itm == null)
|
||||
itm = new Xou_wiki_itm(-1, 0, "test4", "test4", Io_url_.new_fil_("C:\\xowa\\test\\test4.xowa"), "");
|
||||
itm = new Xou_wiki_itm(-1, "", "", Io_url_.Empty, "");
|
||||
return new Xouw_itm_doc(itm.Id(), itm.Domain(), itm.Name(), itm.Url().Xto_api());
|
||||
}
|
||||
@Override protected void Bld_tags(Xoa_app app, Io_url addon_dir, Xopage_html_data page_data) {
|
||||
|
@ -30,17 +30,17 @@ class Xouw_itm_mgr {
|
||||
}
|
||||
public void Save(int id, String domain, String name, String url_str) {
|
||||
boolean itm_is_new = false;
|
||||
// get next id if new
|
||||
// get next id if none provided
|
||||
if (id == -1) {
|
||||
itm_is_new = true;
|
||||
Db_sys_mgr sys_mgr = new Db_sys_mgr(app.User().User_db_mgr().Conn());
|
||||
id = sys_mgr.Autonum_next("user.wikis.id");
|
||||
}
|
||||
|
||||
// insert into user_wiki
|
||||
// insert into user_db.user_wiki
|
||||
Xouw_db_mgr db_mgr = new Xouw_db_mgr(app.User().User_db_mgr().Conn());
|
||||
db_mgr.Tbl__wiki().Upsert(id, domain, name, url_str);
|
||||
// if (itm_is_new) Xow_db_mkr.Create_wiki(app, domain, url_str);
|
||||
if (itm_is_new) Xow_db_mkr.Create_wiki2(new Xodb_wiki_data(domain, Io_url_.new_fil_(url_str)));
|
||||
if (itm_is_new)
|
||||
Xow_db_mkr.Create_wiki(new Xodb_wiki_data(domain, Io_url_.new_fil_(url_str)));
|
||||
}
|
||||
}
|
||||
|
@ -21,9 +21,9 @@ public class Xouw_itm_special implements Xow_special_page {
|
||||
public void Special__gen(Xow_wiki wiki, Xoa_page page, Xoa_url url, Xoa_ttl ttl) {
|
||||
Gfo_qarg_mgr url_args = new Gfo_qarg_mgr().Init(url.Qargs_ary());
|
||||
|
||||
String key = url_args.Read_str_or("key", "");
|
||||
String domain = url_args.Read_str_or("domain", "");
|
||||
|
||||
new Xouw_itm_html(key).Bld_page_by_mustache(wiki.App(), page, this);
|
||||
new Xouw_itm_html(domain).Bld_page_by_mustache(wiki.App(), page, this);
|
||||
}
|
||||
Xouw_itm_special(Xow_special_meta special__meta) {this.special__meta = special__meta;}
|
||||
public Xow_special_meta Special__meta() {return special__meta;} private final Xow_special_meta special__meta;
|
||||
|
@ -23,7 +23,7 @@ import gplx.xowa.langs.cases.*;
|
||||
import gplx.fsdb.*; import gplx.fsdb.meta.*; import gplx.fsdb.data.*; import gplx.xowa.files.origs.*;
|
||||
import gplx.xowa.addons.users.wikis.regys.dbs.*;
|
||||
public class Xow_db_mkr {
|
||||
public static Xodb_wiki_mgr Create_wiki2(Xodb_wiki_data data) {
|
||||
public static Xodb_wiki_mgr Create_wiki(Xodb_wiki_data data) {
|
||||
// create db
|
||||
Xodb_wiki_mgr wiki_mgr = new Xodb_wiki_mgr(data.Domain());
|
||||
wiki_mgr.Dbs__add(Xodb_wiki_db.Make(Xodb_wiki_db_tid.Tid__core, data.Core_url()));
|
||||
@ -35,24 +35,31 @@ public class Xow_db_mkr {
|
||||
, Xowd_cfg_tbl_.New(core_conn)
|
||||
, new Xowd_xowa_db_tbl(core_conn, Bool_.N)
|
||||
, new Xowd_site_ns_tbl(core_conn, Bool_.N)
|
||||
, new Xow_site_stats_tbl(core_conn, Bool_.N)
|
||||
, new Xowd_site_stats_tbl(core_conn, Bool_.N)
|
||||
, new Xowd_page_tbl(core_conn, Bool_.N)
|
||||
, new Xowd_text_tbl(core_conn, Bool_.N, data.Text_zip_tid())
|
||||
// if (props.Layout_text().Tid_is_all_or_few()) { // create in advance else will fail for v2; import wiki -> wiki loads and tries to load categories; v2 category processes and builds tbl; DATE:2015-03-22
|
||||
);
|
||||
|
||||
// create tbls: cat; may want to do "if (props.Layout_text().Tid_is_all_or_few())" // create in advance else will fail for v2; import wiki -> wiki loads and tries to load categories; v2 category processes and builds tbl; DATE:2015-03-22
|
||||
core_db.Tbls__add(Bool_.Y
|
||||
, new Xowd_cat_core_tbl(core_conn, Bool_.N)
|
||||
, new Xowd_cat_link_tbl(core_conn, Bool_.N)
|
||||
);
|
||||
|
||||
// insert data: wiki
|
||||
Xowd_xowa_db_tbl.Get_by_key(core_db).Upsert(0, Xow_db_file_.Tid__core, core_db.Url().NameAndExt(), "", -1, Guid_adp_.New_str());
|
||||
Xowd_site_ns_tbl.Get_by_key(core_db).Insert(Xow_ns_mgr_.default_(Xol_case_mgr_.U8()));
|
||||
Xow_site_stats_tbl.Get_by_key(core_db).Update(0, 0, 0);
|
||||
Xowd_site_stats_tbl.Get_by_key(core_db).Update(0, 0, 0);
|
||||
|
||||
// insert data: cfg
|
||||
Db_cfg_tbl cfg_tbl = Db_cfg_tbl.Get_by_key(core_db, Xowd_cfg_tbl_.Tbl_name);
|
||||
cfg_tbl.Insert_str(Xow_cfg_consts.Grp__wiki_init, Xow_cfg_consts.Key__init__main_page, "Main_Page");
|
||||
cfg_tbl.Insert_str(Xow_cfg_consts.Grp__wiki_init, Xow_cfg_consts.Key__init__modified_latest, Datetime_now.Get().XtoStr_fmt(DateAdp_.Fmt_iso8561_date_time));
|
||||
Xopg_db_mgr.Create(core_db, Xow_ns_.Tid__main, Bry_.new_a7("Main_Page"), Bry_.new_a7("Main page created"));
|
||||
Xowd_core_db_props props = new Xowd_core_db_props(2, Xow_db_layout.Itm_all, Xow_db_layout.Itm_all, Xow_db_layout.Itm_all, Io_stream_tid_.Tid__raw, Io_stream_tid_.Tid__raw, Bool_.N, Bool_.N);
|
||||
props.Cfg_save(cfg_tbl);
|
||||
Xowd_xowa_db_tbl.Get_by_key(core_db).Upsert(0, Xow_db_file_.Tid__core, core_db.Url().NameAndExt(), "", -1, Guid_adp_.New_str());
|
||||
cfg_tbl.Insert_str(Xow_cfg_consts.Grp__wiki_init, Xow_cfg_consts.Key__init__modified_latest, Datetime_now.Get().XtoStr_fmt(DateAdp_.Fmt_iso8561_date_time));
|
||||
|
||||
// insert data: page
|
||||
cfg_tbl.Insert_str(Xow_cfg_consts.Grp__wiki_init, Xow_cfg_consts.Key__init__main_page, "Main_Page");
|
||||
Xopg_db_mgr.Create(core_db, Xow_ns_.Tid__main, Bry_.new_a7("Main_Page"), Bry_.new_a7("Main page created"));
|
||||
|
||||
// create tbls: fsdb
|
||||
core_db.Tbls__add(Bool_.Y
|
||||
@ -72,23 +79,6 @@ public class Xow_db_mkr {
|
||||
|
||||
return wiki_mgr;
|
||||
}
|
||||
public static void Create_wiki(Xoa_app app, String domain, String url_str) {
|
||||
// create wiki
|
||||
Io_url url = Io_url_.new_any_(url_str);
|
||||
Xow_ns_mgr ns_mgr = Xow_ns_mgr_.default_(Xol_case_mgr_.U8());
|
||||
Xow_wiki_.Create(app.User().Key(), ns_mgr, domain, url.OwnerDir());
|
||||
|
||||
// more create; need wiki-reference to create fsdb and create page
|
||||
Xowe_wiki wiki = new Xowe_wiki((Xoae_app)app, app.Lang_mgr().Get_by_or_en(Bry_.Empty), ns_mgr, Xow_domain_itm_.parse(Bry_.new_u8(domain)), url.OwnerDir());
|
||||
gplx.fsdb.Fsdb_db_mgr__v2_bldr.Make_core_file_main(wiki, url, domain, gplx.xowa.wikis.data.Xow_db_layout.Itm_all);
|
||||
wiki.Init_db_mgr();
|
||||
wiki.Init_by_wiki__force_and_mark_inited();
|
||||
wiki.Data__core_mgr().Dbs__make_by_id(1, Xow_db_file_.Tid__core, "", 0, ".xowa");
|
||||
wiki.Data__core_mgr().Db__core().Tbl__db().Commit_all(wiki.Data__core_mgr());
|
||||
|
||||
// create default Main_Page
|
||||
new Xopg_db_mgr(wiki).Create(Xow_ns_.Tid__main, Bry_.new_a7("Main_Page"), Bry_.new_a7("Main page created"));
|
||||
}
|
||||
}
|
||||
/*
|
||||
xowa_cfg
|
||||
|
@ -41,14 +41,14 @@ public class Xob_calc_stats_cmd extends Xob_itm_basic_base implements Xob_cmd {
|
||||
int count_file = Calc_count_articles(wiki.Ns_mgr().Ns_file());
|
||||
Bry_bfr bfr = Bry_bfr_.New();
|
||||
Gen_call(Bool_.Y, bfr, Xowe_wiki.Invk_stats);
|
||||
Gen_call(Bool_.N, bfr, Xow_site_stats_mgr.Invk_number_of_articles_, count_main);
|
||||
Gen_call(Bool_.N, bfr, Xow_site_stats_mgr.Invk_number_of_files_, count_file);
|
||||
Gen_call(Bool_.N, bfr, Xow_site_stats_mgr.Invk_number_of_pages_, total);
|
||||
Gen_call(Bool_.N, bfr, Xowd_site_stats_mgr.Invk_number_of_articles_, count_main);
|
||||
Gen_call(Bool_.N, bfr, Xowd_site_stats_mgr.Invk_number_of_files_, count_file);
|
||||
Gen_call(Bool_.N, bfr, Xowd_site_stats_mgr.Invk_number_of_pages_, total);
|
||||
for (int i = 0; i < ns_len; i++) {
|
||||
Xow_ns ns = wiki.Ns_mgr().Ords_ary()[i];
|
||||
if (ns.Id() < 0) continue;
|
||||
bfr.Add_byte_nl();
|
||||
Gen_call(Bool_.N, bfr, Xow_site_stats_mgr.Invk_number_of_articles_in_ns_, ns.Num_str(), Int_.To_str_pad_bgn_zero(ns.Count(), 10));
|
||||
Gen_call(Bool_.N, bfr, Xowd_site_stats_mgr.Invk_number_of_articles_in_ns_, ns.Num_str(), Int_.To_str_pad_bgn_zero(ns.Count(), 10));
|
||||
}
|
||||
bfr.Add_byte_nl().Add_byte(Byte_ascii.Semic).Add_byte_nl();
|
||||
Io_url wiki_gfs = Wiki_gfs_url(wiki);
|
||||
|
@ -26,7 +26,8 @@ public class Xoh_page_bfr {
|
||||
body_bfr.Clear();
|
||||
}
|
||||
public Bry_bfr Split_by_toc(byte toc_mode) {
|
||||
this.toc_mode = toc_mode;
|
||||
if (this.toc_mode != Xoh_toc_data.Toc_mode__pgbnr)
|
||||
this.toc_mode = toc_mode;
|
||||
return body_bfr;
|
||||
}
|
||||
public void Commit(Xoa_page pg) {
|
||||
|
@ -48,7 +48,7 @@ public class Xowv_wiki implements Xow_wiki, Xow_ttl_parser, Gfo_invk {
|
||||
this.fsdb_mgr = new Xof_fsdb_mgr__sql();
|
||||
this.url__parser = new Xow_url_parser(this);
|
||||
this.xwiki_mgr = new Xow_xwiki_mgr(this);
|
||||
this.stats = new Xow_site_stats_mgr(this);
|
||||
this.stats = new Xowd_site_stats_mgr(this);
|
||||
this.lnki_bldr = new Xoh_lnki_bldr(app, href_wtr);
|
||||
this.ctg_catpage_mgr = new Xoctg_catpage_mgr(this);
|
||||
}
|
||||
@ -82,7 +82,7 @@ public class Xowv_wiki implements Xow_wiki, Xow_ttl_parser, Gfo_invk {
|
||||
public Xow_wiki_props Props() {return props;} private final Xow_wiki_props props = new Xow_wiki_props();
|
||||
public Xol_lang_itm Lang() {return lang;} private final Xol_lang_itm lang;
|
||||
public Xol_case_mgr Case_mgr() {if (case_mgr == null) case_mgr = Xol_case_mgr_.U8(); return case_mgr;} private Xol_case_mgr case_mgr;
|
||||
public Xow_site_stats_mgr Stats() {return stats;} private final Xow_site_stats_mgr stats;
|
||||
public Xowd_site_stats_mgr Stats() {return stats;} private final Xowd_site_stats_mgr stats;
|
||||
public Bry_bfr_mkr Utl__bfr_mkr() {return utl__bry_bfr_mkr;} private final Bry_bfr_mkr utl__bry_bfr_mkr = new Bry_bfr_mkr();
|
||||
public Io_stream_zip_mgr Utl__zip_mgr() {return utl__zip_mgr;} private final Io_stream_zip_mgr utl__zip_mgr = new Io_stream_zip_mgr();
|
||||
public Xow_url_parser Utl__url_parser() {return url__parser;} private final Xow_url_parser url__parser;
|
||||
|
@ -29,7 +29,7 @@ public class Xow_db_file {
|
||||
this.tbl__cfg = cfg_tbl;
|
||||
this.tbl__db = new Xowd_xowa_db_tbl(conn, schema_is_1);
|
||||
this.tbl__ns = new Xowd_site_ns_tbl(conn, schema_is_1);
|
||||
this.tbl__site_stats = new Xow_site_stats_tbl(conn, schema_is_1);
|
||||
this.tbl__site_stats = new Xowd_site_stats_tbl(conn, schema_is_1);
|
||||
this.tbl__page = new Xowd_page_tbl(conn, schema_is_1);
|
||||
this.tbl__text = new Xowd_text_tbl(conn, schema_is_1, props.Zip_tid_text());
|
||||
this.tbl__html = new Xowd_html_tbl(conn);
|
||||
@ -66,7 +66,7 @@ public class Xow_db_file {
|
||||
public Xowd_css_file_tbl Tbl__css_file() {return tbl__css_file;} private final Xowd_css_file_tbl tbl__css_file;
|
||||
public Xowd_cat_core_tbl Tbl__cat_core() {return tbl__cat_core;} private final Xowd_cat_core_tbl tbl__cat_core;
|
||||
public Xowd_cat_link_tbl Tbl__cat_link() {return tbl__cat_link;} private final Xowd_cat_link_tbl tbl__cat_link;
|
||||
public Xow_site_stats_tbl Tbl__site_stats() {return tbl__site_stats;} private final Xow_site_stats_tbl tbl__site_stats;
|
||||
public Xowd_site_stats_tbl Tbl__site_stats() {return tbl__site_stats;} private final Xowd_site_stats_tbl tbl__site_stats;
|
||||
public Xowd_wbase_qid_tbl Tbl__wbase_qid() {return tbl__wbase_qid;} private final Xowd_wbase_qid_tbl tbl__wbase_qid;
|
||||
public Xowd_wbase_pid_tbl Tbl__wbase_pid() {return tbl__wbase_pid;} private final Xowd_wbase_pid_tbl tbl__wbase_pid;
|
||||
public Xob_info_session Info_session() {
|
||||
|
@ -17,9 +17,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package gplx.xowa.wikis.data.site_stats; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.data.*;
|
||||
import gplx.xowa.wikis.nss.*;
|
||||
public class Xow_site_stats_mgr implements Gfo_invk { // REF.MW:https://www.mediawiki.org/wiki/Manual:Site_stats_table
|
||||
public class Xowd_site_stats_mgr implements Gfo_invk { // REF.MW:https://www.mediawiki.org/wiki/Manual:Site_stats_table
|
||||
private final Xow_wiki wiki;
|
||||
public Xow_site_stats_mgr(Xow_wiki wiki) {this.wiki = wiki;}
|
||||
public Xowd_site_stats_mgr(Xow_wiki wiki) {this.wiki = wiki;}
|
||||
public long Num_pages() {return num_pages;} private long num_pages; // ss_total_pages; pages in entire wiki: 16,299,475
|
||||
public long Num_articles() {return num_articles;} private long num_articles; // ss_good_articles; pages in main ns w/o redirect: 5,072,469
|
||||
public long Num_views() {return num_views;} private long num_views; // ss_total_views
|
@ -17,10 +17,10 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package gplx.xowa.wikis.data.site_stats; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.data.*;
|
||||
import gplx.dbs.*; import gplx.xowa.wikis.data.site_stats.*;
|
||||
public class Xow_site_stats_tbl implements Db_tbl {
|
||||
public class Xowd_site_stats_tbl implements Db_tbl {
|
||||
private final String fld_row_id, fld_good_articles, fld_total_pages, fld_images;
|
||||
private final Db_conn conn; private final Dbmeta_fld_list flds = new Dbmeta_fld_list();
|
||||
public Xow_site_stats_tbl(Db_conn conn, boolean schema_is_1) {
|
||||
public Xowd_site_stats_tbl(Db_conn conn, boolean schema_is_1) {
|
||||
this.conn = conn;
|
||||
fld_row_id = flds.Add_int_pkey("ss_row_id");
|
||||
fld_good_articles = flds.Add_long("ss_good_articles");
|
||||
@ -38,7 +38,7 @@ public class Xow_site_stats_tbl implements Db_tbl {
|
||||
.Crt_int(fld_row_id, Site_stats_row_id)
|
||||
.Exec_update();
|
||||
}
|
||||
public void Select(Xow_site_stats_mgr stats) {
|
||||
public void Select(Xowd_site_stats_mgr stats) {
|
||||
Db_rdr rdr = conn.Stmt_select(tbl_name, flds, fld_row_id).Crt_int(fld_row_id, Site_stats_row_id).Exec_select__rls_auto();
|
||||
try {
|
||||
if (rdr.Move_next()) {
|
||||
@ -54,5 +54,5 @@ public class Xow_site_stats_tbl implements Db_tbl {
|
||||
private static final int Site_stats_row_id = 1;
|
||||
|
||||
public static final String TBL_NAME = "site_stats";
|
||||
public static Xow_site_stats_tbl Get_by_key(Db_tbl_owner owner) {return (Xow_site_stats_tbl)owner.Tbls__get_by_key(TBL_NAME);}
|
||||
public static Xowd_site_stats_tbl Get_by_key(Db_tbl_owner owner) {return (Xowd_site_stats_tbl)owner.Tbls__get_by_key(TBL_NAME);}
|
||||
}
|
@ -27,7 +27,7 @@ public class Pfunc_wiki_stats extends Pf_func_base {
|
||||
byte argx_0 = argx[0];
|
||||
switch (argx_0) {case Byte_ascii.Ltr_R: case Byte_ascii.Ltr_r: raw = true; break;}
|
||||
}
|
||||
Xow_site_stats_mgr stats = ctx.Wiki().Stats();
|
||||
Xowd_site_stats_mgr stats = ctx.Wiki().Stats();
|
||||
long v = 0;
|
||||
switch (id) {
|
||||
case Xol_kwd_grp_.Id_num_pages: v = stats.Num_pages(); break;
|
||||
@ -48,5 +48,5 @@ public class Pfunc_wiki_stats extends Pf_func_base {
|
||||
public Pfunc_wiki_stats(int id) {this.id = id;}
|
||||
@Override public int Id() {return id;} private int id;
|
||||
@Override public Pf_func New(int id, byte[] name) {return new Pfunc_wiki_stats(id).Name_(name);}
|
||||
public static final Pfunc_wiki_stats Instance = new Pfunc_wiki_stats(-1);
|
||||
public static final Pfunc_wiki_stats Instance = new Pfunc_wiki_stats(-1);
|
||||
}
|
||||
|
@ -199,7 +199,7 @@ public class Scrib_lib_site implements Scrib_lib {
|
||||
return rv;
|
||||
}
|
||||
private Keyval[] Bld_stats(Xowe_wiki wiki) {
|
||||
Xow_site_stats_mgr stats = wiki.Stats();
|
||||
Xowd_site_stats_mgr stats = wiki.Stats();
|
||||
Keyval[] rv = new Keyval[8];
|
||||
rv[0] = Keyval_.new_("pages" , stats.Num_pages()); // SiteStats::pages(),
|
||||
rv[1] = Keyval_.new_("articles" , stats.Num_articles()); // SiteStats::articles(),
|
||||
|
Loading…
Reference in New Issue
Block a user