mirror of
https://github.com/gnosygnu/xowa.git
synced 2024-10-27 20:34:16 +00:00
Personal_wikis: Add update page_id function
This commit is contained in:
parent
04a58326e2
commit
4ec913b807
@ -71,10 +71,29 @@ public class Xodb_cat_link_tbl implements Db_tbl {
|
||||
}
|
||||
return (Xodb_cat_link_row[])list.To_ary_and_clear(Xodb_cat_link_row.class);
|
||||
}
|
||||
public void Delete_by_page_id(int page_id) {
|
||||
public void Delete_pages(int page_id) {
|
||||
Gfo_usr_dlg_.Instance.Log_many("", "", "db.cat_link: delete pages started: db=~{0} page_id=~{1}", conn.Conn_info().Raw(), page_id);
|
||||
conn.Stmt_delete(tbl_name, fld__from)
|
||||
.Crt_int(fld__from, page_id)
|
||||
.Exec_delete();
|
||||
Gfo_usr_dlg_.Instance.Log_many("", "", "db.cat_link: delete pages done");
|
||||
}
|
||||
public void Delete_cats(int page_id) {
|
||||
Gfo_usr_dlg_.Instance.Log_many("", "", "db.cat_link: delete cats started: db=~{0} page_id=~{1}", conn.Conn_info().Raw(), page_id);
|
||||
conn.Stmt_delete(tbl_name, fld__to_id)
|
||||
.Crt_int(fld__to_id, page_id)
|
||||
.Exec_delete();
|
||||
Gfo_usr_dlg_.Instance.Log_many("", "", "db.cat_link: delete cats done");
|
||||
}
|
||||
public void Update_page_id_for_pages(int old_id, int new_id) {
|
||||
Gfo_usr_dlg_.Instance.Log_many("", "", "db.cat_link: update cl_from started: db=~{0} old_id=~{1} new_id=~{2}", conn.Conn_info().Raw(), old_id, new_id);
|
||||
conn.Stmt_update(tbl_name, String_.Ary(fld__from), fld__from).Val_int(fld__from, new_id).Crt_int(fld__from, old_id).Exec_update();
|
||||
Gfo_usr_dlg_.Instance.Log_many("", "", "db.cat_link: update cl_from done");
|
||||
}
|
||||
public void Update_page_id_for_cats(int old_id, int new_id) {
|
||||
Gfo_usr_dlg_.Instance.Log_many("", "", "db.cat_link: update cl_to started: db=~{0} old_id=~{1} new_id=~{2}", conn.Conn_info().Raw(), old_id, new_id);
|
||||
conn.Stmt_update(tbl_name, String_.Ary(fld__to_id), fld__to_id).Val_int(fld__to_id, new_id).Crt_int(fld__to_id, old_id).Exec_update();
|
||||
Gfo_usr_dlg_.Instance.Log_many("", "", "db.cat_link: update cl_to done");
|
||||
}
|
||||
public void Rls() {
|
||||
stmt_insert = Db_stmt_.Rls(stmt_insert);
|
||||
|
@ -18,7 +18,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
package gplx.xowa.addons.wikis.ctgs.edits; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.ctgs.*;
|
||||
import gplx.dbs.*;
|
||||
import gplx.xowa.parsers.*; import gplx.xowa.wikis.pages.*;
|
||||
import gplx.xowa.wikis.data.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.wikis.domains.*;
|
||||
import gplx.xowa.wikis.nss.*; import gplx.xowa.wikis.data.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.wikis.domains.*;
|
||||
import gplx.xowa.addons.wikis.ctgs.dbs.*; import gplx.xowa.addons.wikis.ctgs.htmls.catpages.langs.*;
|
||||
import gplx.xowa.addons.wikis.directorys.specials.items.bldrs.*;
|
||||
public class Xoctg_edit_mgr {
|
||||
@ -47,7 +47,7 @@ public class Xoctg_edit_mgr {
|
||||
db_mgr.Tbl__page().Select_by_id(tmp_page, page_id);
|
||||
|
||||
// delete old categories
|
||||
Delete(wiki, page_id);
|
||||
Delete(wiki, ns_id, page_id);
|
||||
|
||||
// get some variables
|
||||
int timestamp = (int)Datetime_now.Get().Timestamp_unix();
|
||||
@ -87,12 +87,8 @@ public class Xoctg_edit_mgr {
|
||||
// update page.cat_db_id
|
||||
page_tbl.Update__cat_db_id(page_id, core_db.Id());
|
||||
}
|
||||
public static void Delete(Xowe_wiki wiki, int page_id) {
|
||||
// get page_tbl
|
||||
Xowd_page_tbl page_tbl = wiki.Data__core_mgr().Db__core().Tbl__page();
|
||||
Xowd_page_itm tmp_page = new Xowd_page_itm();
|
||||
page_tbl.Select_by_id(tmp_page, page_id);
|
||||
int ns_id = tmp_page.Ns_id();
|
||||
public static void Delete(Xowe_wiki wiki, int ns_id, int page_id) {
|
||||
boolean ns_id_is_category = ns_id == Xow_ns_.Tid__category;
|
||||
|
||||
// get cat_core_tbl
|
||||
Xowd_cat_core_tbl cat_core_tbl = Xodb_cat_db_.Get_cat_core_or_fail(wiki.Data__core_mgr());
|
||||
@ -114,7 +110,34 @@ public class Xoctg_edit_mgr {
|
||||
}
|
||||
|
||||
// delete cat_links
|
||||
cat_link_tbl.Delete_by_page_id(page_id);
|
||||
cat_link_tbl.Delete_pages(page_id);
|
||||
if (ns_id_is_category)
|
||||
cat_link_tbl.Delete_cats(page_id);
|
||||
}
|
||||
|
||||
// delete cat_core
|
||||
if (ns_id_is_category) {
|
||||
cat_core_tbl.Delete(page_id);
|
||||
}
|
||||
}
|
||||
public static void Update_page_id(Xowe_wiki wiki, int ns_id, int old_id, int new_id) {
|
||||
boolean ns_id_is_category = ns_id == Xow_ns_.Tid__category;
|
||||
|
||||
// get cat_link_tbls
|
||||
Xodb_cat_link_tbl[] cat_link_tbls = Xodb_cat_link_tbl.Get_catlink_tbls(wiki.Data__core_mgr());
|
||||
|
||||
// loop cat_link tbls to find linked categories
|
||||
for (Xodb_cat_link_tbl cat_link_tbl : cat_link_tbls) {
|
||||
// delete cat_links
|
||||
cat_link_tbl.Update_page_id_for_pages(old_id, new_id);
|
||||
if (ns_id_is_category)
|
||||
cat_link_tbl.Update_page_id_for_cats(old_id, new_id);
|
||||
}
|
||||
|
||||
// update cat_core
|
||||
if (ns_id_is_category) {
|
||||
Xowd_cat_core_tbl cat_core_tbl = Xodb_cat_db_.Get_cat_core_or_fail(wiki.Data__core_mgr());
|
||||
cat_core_tbl.Update_page_id(old_id, new_id);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -84,7 +84,7 @@ public class Xopg_db_mgr {
|
||||
}
|
||||
|
||||
// cat_core, cat_link
|
||||
gplx.xowa.addons.wikis.ctgs.edits.Xoctg_edit_mgr.Delete(wiki, page_id);
|
||||
gplx.xowa.addons.wikis.ctgs.edits.Xoctg_edit_mgr.Delete(wiki, ns_id, page_id);
|
||||
|
||||
// search_link
|
||||
Srch_search_addon.Get(wiki).Delete_links(ns_id, page_id);
|
||||
@ -92,4 +92,35 @@ public class Xopg_db_mgr {
|
||||
// delete from page
|
||||
core_db.Tbl__page().Delete(page_id);
|
||||
}
|
||||
public static void Update_page_id(Xowe_wiki wiki, int old_id, int new_id) {
|
||||
// init vars
|
||||
Xow_db_mgr db_mgr = wiki.Data__core_mgr();
|
||||
Xow_db_file core_db = db_mgr.Db__core();
|
||||
Xowd_page_itm tmp = new Xowd_page_itm();
|
||||
|
||||
// get ns_id
|
||||
core_db.Tbl__page().Select_by_id(tmp, old_id);
|
||||
int ns_id = tmp.Ns_id();
|
||||
|
||||
// text_db
|
||||
Xow_db_file text_db = db_mgr.Dbs__get_by_id_or_null(tmp.Text_db_id());
|
||||
if (text_db != null) {
|
||||
text_db.Tbl__text().Update_page_id(old_id, new_id);
|
||||
}
|
||||
|
||||
// html_db
|
||||
Xow_db_file html_db = db_mgr.Dbs__get_by_id_or_null(tmp.Html_db_id());
|
||||
if (html_db != null) {
|
||||
html_db.Tbl__html().Update_page_id(old_id, new_id);
|
||||
}
|
||||
|
||||
// cat_core, cat_link
|
||||
gplx.xowa.addons.wikis.ctgs.edits.Xoctg_edit_mgr.Update_page_id(wiki, ns_id, old_id, new_id);
|
||||
|
||||
// search_link
|
||||
Srch_search_addon.Get(wiki).Update_links(ns_id, old_id, new_id);
|
||||
|
||||
// delete from page
|
||||
core_db.Tbl__page().Update_page_id(old_id, new_id);
|
||||
}
|
||||
}
|
||||
|
@ -41,6 +41,14 @@ public class Srch_search_addon implements Xoax_addon_itm, Srch_search_addon_api
|
||||
}
|
||||
this.Clear_rslts_cache();
|
||||
}
|
||||
public void Update_links(int ns_id, int old_id, int new_id) {
|
||||
int search_link_db_id = db_mgr.Tbl__link__get_idx(ns_id);
|
||||
Srch_link_tbl search_link_tbl = db_mgr.Tbl__link__get_at(search_link_db_id);
|
||||
if (search_link_tbl.conn.Meta_tbl_exists("search_link")) { // NOTE: personal_wikis may not have search_link; exit early else delete will fail; DATE:2017-02-15
|
||||
search_link_tbl.Update_page_id(old_id, new_id);
|
||||
}
|
||||
this.Clear_rslts_cache();
|
||||
}
|
||||
|
||||
public static final int Score_max = 1000000;
|
||||
public static final byte Wildcard__star = Byte_ascii.Star;
|
||||
|
@ -41,11 +41,15 @@ public class Srch_link_tbl {
|
||||
stmt.Val_int(fld_word_id, row.Word_id).Val_int(fld_page_id, row.Page_id).Val_int(fld_link_score, row.Link_score);
|
||||
}
|
||||
public void Delete(int page_id) {
|
||||
Gfo_usr_dlg_.Instance.Log_many("", "", "db.search_link: delete started: page_id=~{0}", page_id);
|
||||
Db_stmt stmt = conn.Stmt_delete(tbl_name, fld_page_id);
|
||||
stmt.Clear().Crt_int(fld_page_id, page_id).Exec_delete();
|
||||
Gfo_usr_dlg_.Instance.Log_many("", "", "db.search_link: delete started: db=~{0} page_id=~{1}", conn.Conn_info().Raw(), page_id);
|
||||
conn.Stmt_delete(tbl_name, fld_page_id).Crt_int(fld_page_id, page_id).Exec_delete();
|
||||
Gfo_usr_dlg_.Instance.Log_many("", "", "db.search_link: delete done");
|
||||
}
|
||||
public void Update_page_id(int old_id, int new_id) {
|
||||
Gfo_usr_dlg_.Instance.Log_many("", "", "db.search_link: update_page_id started: db=~{0} old_id=~{1} new_id=~{2}", conn.Conn_info().Raw(), old_id, new_id);
|
||||
conn.Stmt_update(tbl_name, String_.Ary(fld_page_id), fld_page_id).Val_int(fld_page_id, old_id).Crt_int(fld_page_id, new_id).Exec_update();
|
||||
Gfo_usr_dlg_.Instance.Log_many("", "", "db.search_link: update done");
|
||||
}
|
||||
|
||||
public static final Srch_link_tbl[] Ary_empty = new Srch_link_tbl[0];
|
||||
public static final String Fld_link_score = "link_score";
|
||||
|
@ -69,10 +69,14 @@ public class Xowd_html_tbl implements Db_tbl {
|
||||
}
|
||||
public void Delete(int page_id) {
|
||||
Gfo_usr_dlg_.Instance.Log_many("", "", "db.html: delete started: db=~{0} page_id=~{1}", conn.Conn_info().Raw(), page_id);
|
||||
Db_stmt stmt = conn.Stmt_delete(tbl_name, fld_page_id);
|
||||
stmt.Clear().Crt_int(fld_page_id, page_id).Exec_delete();
|
||||
conn.Stmt_delete(tbl_name, fld_page_id).Crt_int(fld_page_id, page_id).Exec_delete();
|
||||
Gfo_usr_dlg_.Instance.Log_many("", "", "db.html: delete done");
|
||||
}
|
||||
public void Update_page_id(int old_id, int new_id) {
|
||||
Gfo_usr_dlg_.Instance.Log_many("", "", "db.html: update page_id started: db=~{0} old_id=~{1} new_id=~{2}", conn.Conn_info().Raw(), old_id, new_id);
|
||||
conn.Stmt_update(tbl_name, String_.Ary(fld_page_id), fld_page_id).Val_int(fld_page_id, new_id).Crt_int(fld_page_id, old_id).Exec_update();
|
||||
Gfo_usr_dlg_.Instance.Log_many("", "", "db.html: update page_id done");
|
||||
}
|
||||
public boolean Select_by_page(Xoh_page hpg) {
|
||||
if (stmt_select == null) stmt_select = conn.Stmt_select(tbl_name, flds, fld_page_id);
|
||||
Db_rdr rdr = stmt_select.Clear().Crt_int(fld_page_id, hpg.Page_id()).Exec_select__rls_manual();
|
||||
|
@ -52,7 +52,17 @@ public class Xowd_cat_core_tbl implements Db_tbl {
|
||||
public void Update_by_batch(int id, byte hidden) {
|
||||
stmt_update.Clear().Val_byte(fld_hidden, hidden).Crt_int(fld_id, id).Exec_update();
|
||||
}
|
||||
public void Delete(int page_id) {
|
||||
Gfo_usr_dlg_.Instance.Log_many("", "", "db.cat_core: delete started: db=~{0} page_id=~{1}", conn.Conn_info().Raw(), page_id);
|
||||
conn.Stmt_delete(tbl_name, fld_id).Crt_int(fld_id, page_id).Exec_delete();
|
||||
Gfo_usr_dlg_.Instance.Log_many("", "", "db.cat_core: delete done");
|
||||
}
|
||||
public void Delete_all() {conn.Stmt_delete(tbl_name, Dbmeta_fld_itm.Str_ary_empty).Exec_delete();}
|
||||
public void Update_page_id(int old_id, int new_id) {
|
||||
Gfo_usr_dlg_.Instance.Log_many("", "", "db.cat_core: update page_id started: db=~{0} old_id=~{1} new_id=~{2}", conn.Conn_info().Raw(), old_id, new_id);
|
||||
conn.Stmt_update(tbl_name, String_.Ary(fld_id), fld_id).Val_int(fld_id, new_id).Crt_int(fld_id, old_id).Exec_update();
|
||||
Gfo_usr_dlg_.Instance.Log_many("", "", "db.cat_core: update page_id done");
|
||||
}
|
||||
public void Update(Xowd_category_itm itm) {
|
||||
conn.Stmt_update_exclude(tbl_name, flds, fld_id).Clear()
|
||||
.Val_int(fld_pages, itm.Count_pages())
|
||||
|
@ -372,10 +372,14 @@ public class Xowd_page_tbl implements Db_tbl {
|
||||
}
|
||||
public void Delete(int page_id) {
|
||||
Gfo_usr_dlg_.Instance.Log_many("", "", "db.page: delete started: page_id=~{0}", page_id);
|
||||
Db_stmt stmt = conn.Stmt_delete(tbl_name, fld_id);
|
||||
stmt.Clear().Crt_int(fld_id, page_id).Exec_delete();
|
||||
conn.Stmt_delete(tbl_name, fld_id).Crt_int(fld_id, page_id).Exec_delete();
|
||||
Gfo_usr_dlg_.Instance.Log_many("", "", "db.page: delete done");
|
||||
}
|
||||
public void Update_page_id(int old_id, int new_id) {
|
||||
Gfo_usr_dlg_.Instance.Log_many("", "", "db.page: update page_id started: old_id=~{0} new_id=~{1}", old_id, new_id);
|
||||
conn.Stmt_update(tbl_name, String_.Ary(fld_id), fld_id).Val_int(fld_id, new_id).Crt_int(fld_id, old_id).Exec_update();
|
||||
Gfo_usr_dlg_.Instance.Log_many("", "", "db.page: update page_id done");
|
||||
}
|
||||
public void Create_idx() {
|
||||
conn.Meta_idx_create(Xoa_app_.Usr_dlg()
|
||||
, Dbmeta_idx_itm.new_normal_by_tbl(tbl_name, "title" , fld_title, fld_ns)
|
||||
|
@ -49,6 +49,11 @@ public class Xowd_text_tbl implements Db_tbl {
|
||||
conn.Stmt_delete(tbl_name, fld_page_id).Crt_int(fld_page_id, page_id).Exec_delete();
|
||||
Gfo_usr_dlg_.Instance.Log_many("", "", "db.text: delete done");
|
||||
}
|
||||
public void Update_page_id(int old_id, int new_id) {
|
||||
Gfo_usr_dlg_.Instance.Log_many("", "", "db.text: update page_id started: db=~{0} old_id=~{1} new_id=~{2}", conn.Conn_info().Raw(), old_id, new_id);
|
||||
conn.Stmt_update(tbl_name, String_.Ary(fld_page_id), fld_page_id).Val_int(fld_page_id, new_id).Crt_int(fld_page_id, old_id).Exec_update();
|
||||
Gfo_usr_dlg_.Instance.Log_many("", "", "db.text: update page_id done");
|
||||
}
|
||||
public byte[] Select(int page_id) {
|
||||
synchronized (thread_lock) { // LOCK:stmt-rls; DATE:2016-07-06
|
||||
if (stmt_select == null) stmt_select = conn.Stmt_select(tbl_name, flds, fld_page_id);
|
||||
|
Loading…
Reference in New Issue
Block a user