1
0
mirror of https://github.com/gnosygnu/xowa.git synced 2026-03-02 03:49:30 +00:00

'v3.7.2.1'

This commit is contained in:
gnosygnu
2016-07-10 23:35:32 -04:00
parent f5f48bb9b1
commit b333db45f8
366 changed files with 4468 additions and 3460 deletions

View File

@@ -132,18 +132,18 @@ class Xow_data_mgr_fxt {
wiki.Db_mgr().Save_mgr().Page_id_next_(0);
}
public Xow_data_mgr_fxt Create(String ttl_str, String data) {
Xoa_ttl ttl = Xoa_ttl.parse(wiki, Bry_.new_u8(ttl_str));
Xoa_ttl ttl = Xoa_ttl.Parse(wiki, Bry_.new_u8(ttl_str));
wiki.Db_mgr().Save_mgr().Data_create(ttl, Bry_.new_u8(data));
return this;
}
public Xow_data_mgr_fxt Update(String ttl_str, String data) {
Xoa_ttl ttl = Xoa_ttl.parse(wiki, Bry_.new_u8(ttl_str));
Xoa_ttl ttl = Xoa_ttl.Parse(wiki, Bry_.new_u8(ttl_str));
Xoae_page page = Xoae_page.New_test(wiki, ttl);
wiki.Db_mgr().Save_mgr().Data_update(page, Bry_.new_u8(data));
return this;
}
public Xow_data_mgr_fxt Rename(String old_ttl, String new_ttl) {
Xoa_ttl ttl = Xoa_ttl.parse(wiki, Bry_.new_u8(old_ttl));
Xoa_ttl ttl = Xoa_ttl.Parse(wiki, Bry_.new_u8(old_ttl));
Xoae_page page = Xoae_page.New_test(wiki, ttl);
wiki.Db_mgr().Save_mgr().Data_rename(page, ttl.Ns().Id(), Bry_.new_u8(new_ttl));
return this;

View File

@@ -32,7 +32,7 @@ public class Xow_db_file {
this.tbl__site_stats = new Xow_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 Xoh_page_tbl(conn);
this.tbl__html = new Xowd_html_tbl(conn);
this.tbl__css_core = new Xowd_css_core_tbl(conn);
this.tbl__css_file = new Xowd_css_file_tbl(conn);
this.tbl__cat_core = new Xowd_cat_core_tbl(conn, schema_is_1);
@@ -61,7 +61,7 @@ public class Xow_db_file {
public Xowd_site_ns_tbl Tbl__ns() {return tbl__ns;} private final Xowd_site_ns_tbl tbl__ns;
public Xowd_page_tbl Tbl__page() {return tbl__page;} private Xowd_page_tbl tbl__page;
public Xowd_text_tbl Tbl__text() {return tbl__text;} private final Xowd_text_tbl tbl__text;
public Xoh_page_tbl Tbl__html() {return tbl__html;} private final Xoh_page_tbl tbl__html;
public Xowd_html_tbl Tbl__html() {return tbl__html;} private final Xowd_html_tbl tbl__html;
public Xowd_css_core_tbl Tbl__css_core() {return tbl__css_core;} private final Xowd_css_core_tbl tbl__css_core;
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;

View File

@@ -20,8 +20,8 @@ public class Xow_page_fetcher_wiki implements Xow_page_fetcher {
public Xow_page_fetcher Wiki_(Xowe_wiki v) {this.wiki = v; return this;} private Xowe_wiki wiki;
public void Clear() {}
public byte[] Get_by(int ns_id, byte[] ttl_bry) {
Xoa_ttl ttl = Xoa_ttl.parse(wiki, ns_id, ttl_bry);
Xoa_ttl ttl = Xoa_ttl.Parse(wiki, ns_id, ttl_bry);
Xoae_page page = wiki.Data_mgr().Load_page_by_ttl(ttl); // go through data_mgr in case of redirects
return page.Missing() ? null : page.Data_raw();
return page.Db().Page().Exists_n() ? null : page.Db().Text().Text_bry();
}
}

View File

@@ -1,29 +0,0 @@
/*
XOWA: the XOWA Offline Wiki Application
Copyright (C) 2012 gnosygnu@gmail.com
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
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/>.
*/
package gplx.xowa.wikis.data.tbls; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.data.*;
public class Xowd_html_row {
public Xowd_html_row(int page_id, int tid, byte[] data) {this.page_id = page_id; this.tid = tid; this.data = data;}
public int Page_id() {return page_id;} private final int page_id;
public int Tid() {return tid;} private final int tid;
public byte[] Data() {return data;} private final byte[] data;
public static final int // SERIALIZED
Tid__html = 0
, Tid__img = 1
, Tid__redlink = 2
;
}

View File

@@ -20,6 +20,7 @@ import gplx.core.primitives.*; import gplx.core.criterias.*;
import gplx.dbs.*; import gplx.xowa.*; import gplx.xowa.wikis.dbs.*; import gplx.dbs.qrys.*;
import gplx.xowa.wikis.nss.*;
public class Xowd_page_tbl implements Rls_able {
private final Object thread_lock = new Object();
private final String tbl_name = "page";
public final boolean schema_is_1;
private String fld_id, fld_ns, fld_title, fld_is_redirect, fld_touched, fld_len, fld_random_int, fld_score, fld_text_db_id, fld_html_db_id, fld_redirect_id;
@@ -107,15 +108,17 @@ public class Xowd_page_tbl implements Rls_able {
}
public boolean Select_by_ttl(Xowd_page_itm rv, Xow_ns ns, byte[] ttl) {
if (stmt_select_all_by_ttl == null) stmt_select_all_by_ttl = conn.Stmt_select(tbl_name, flds, String_.Ary(fld_ns, fld_title));
Db_rdr rdr = stmt_select_all_by_ttl.Clear().Crt_int(fld_ns, ns.Id()).Crt_bry_as_str(fld_title, ttl).Exec_select__rls_manual();
try {
if (rdr.Move_next()) {
Read_page__all(rv, rdr);
return true;
synchronized (thread_lock) { // LOCK:stmt-rls; DATE:2016-07-06
Db_rdr rdr = stmt_select_all_by_ttl.Clear().Crt_int(fld_ns, ns.Id()).Crt_bry_as_str(fld_title, ttl).Exec_select__rls_manual();
try {
if (rdr.Move_next()) {
Read_page__all(rv, rdr);
return true;
}
}
finally {rdr.Rls();}
return false;
}
finally {rdr.Rls();}
return false;
}
public boolean Select_by_id(Xowd_page_itm rv, int page_id) {
if (stmt_select_all_by_id == null) stmt_select_all_by_id = conn.Stmt_select(tbl_name, flds_select_all, fld_id);
@@ -344,10 +347,12 @@ public class Xowd_page_tbl implements Rls_able {
return fld_score == Dbmeta_fld_itm.Key_null ? page_len : rdr.Read_int(fld_score);
}
public void Rls() {
stmt_select_all_by_ttl = Db_stmt_.Rls(stmt_select_all_by_ttl);
stmt_select_all_by_id = Db_stmt_.Rls(stmt_select_all_by_id);
stmt_select_id_by_ttl = Db_stmt_.Rls(stmt_select_id_by_ttl);
stmt_insert = Db_stmt_.Rls(stmt_insert);
synchronized (thread_lock) {// LOCK:stmt-rls; DATE:2016-07-06
stmt_select_all_by_ttl = Db_stmt_.Rls(stmt_select_all_by_ttl);
stmt_select_all_by_id = Db_stmt_.Rls(stmt_select_all_by_id);
stmt_select_id_by_ttl = Db_stmt_.Rls(stmt_select_id_by_ttl);
stmt_insert = Db_stmt_.Rls(stmt_insert);
}
}
public static final String Page_touched_fmt = "yyyyMMddHHmmss";
}

View File

@@ -18,6 +18,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
package gplx.xowa.wikis.data.tbls; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.data.*;
import gplx.core.ios.*; import gplx.dbs.*; import gplx.dbs.utls.*;
public class Xowd_text_tbl implements Rls_able {
private final Object thread_lock = new Object();
private final String tbl_name = "text"; private final Dbmeta_fld_list flds = new Dbmeta_fld_list();
private final String fld_page_id, fld_text_data;
private final Db_conn conn; private Db_stmt stmt_select, stmt_insert;
@@ -43,21 +44,25 @@ public class Xowd_text_tbl implements Rls_able {
stmt.Clear().Val_bry(fld_text_data, text).Crt_int(fld_page_id, page_id).Exec_update();
}
public byte[] Select(int page_id) {
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, page_id).Exec_select__rls_manual();
try {
byte[] rv = Bry_.Empty;
if (rdr.Move_next()) {
rv = rdr.Read_bry(fld_text_data);
if (rv == null) rv = Bry_.Empty; // NOTE: defect wherein blank page inserts null not ""; for now always convert null to empty String; DATE:2015-11-08
rv = zip_mgr.Unzip(zip_tid, rv);
}
return rv;
} finally {rdr.Rls();}
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);
Db_rdr rdr = stmt_select.Clear().Crt_int(fld_page_id, page_id).Exec_select__rls_manual();
try {
byte[] rv = Bry_.Empty;
if (rdr.Move_next()) {
rv = rdr.Read_bry(fld_text_data);
if (rv == null) rv = Bry_.Empty; // NOTE: defect wherein blank page inserts null not ""; for now always convert null to empty String; DATE:2015-11-08
rv = zip_mgr.Unzip(zip_tid, rv);
}
return rv;
} finally {rdr.Rls();}
}
}
public byte[] Zip(byte[] data) {return zip_mgr.Zip(zip_tid, data);}
public void Rls() {
stmt_select = Db_stmt_.Rls(stmt_select);
stmt_insert = Db_stmt_.Rls(stmt_insert);
synchronized (thread_lock) { // LOCK:stmt-rls; DATE:2016-07-06
stmt_select = Db_stmt_.Rls(stmt_select);
stmt_insert = Db_stmt_.Rls(stmt_insert);
}
}
}

View File

@@ -18,6 +18,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
package gplx.xowa.wikis.data.tbls; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.data.*;
import gplx.dbs.*;
public class Xowd_wbase_qid_tbl implements Rls_able {
private final Object thread_lock = new Object();
private final String tbl_name; private final Dbmeta_fld_list flds = new Dbmeta_fld_list();
private final String fld_src_wiki, fld_src_ns, fld_src_ttl, fld_trg_ttl;
private final Db_conn conn; private Db_stmt stmt_select, stmt_insert;
@@ -44,16 +45,20 @@ public class Xowd_wbase_qid_tbl implements Rls_able {
}
public byte[] Select_qid(byte[] src_wiki, byte[] src_ns, byte[] src_ttl) {
if (stmt_select == null) stmt_select = conn.Stmt_select(tbl_name, flds, fld_src_wiki, fld_src_ns, fld_src_ttl);
if (src_ttl_has_spaces) src_ttl = Xoa_ttl.Replace_unders(src_ttl); // NOTE: v2.4.2.1-v2.4.3.2 stores ttl in spaces ("A B"), while xowa will use under form ("A_B"); DATE:2015-04-21
Db_rdr rdr = stmt_select.Clear()
.Crt_bry_as_str(fld_src_wiki, src_wiki).Crt_int(fld_src_ns, Bry_.To_int_or_neg1(src_ns)).Crt_bry_as_str(fld_src_ttl, src_ttl)
.Exec_select__rls_manual();
try {
return rdr.Move_next() ? rdr.Read_bry_by_str(fld_trg_ttl) : null;
} finally {rdr.Rls();}
synchronized (stmt_select) { // LOCK:stmt-rls; DATE:2016-07-06
if (src_ttl_has_spaces) src_ttl = Xoa_ttl.Replace_unders(src_ttl); // NOTE: v2.4.2.1-v2.4.3.2 stores ttl in spaces ("A B"), while xowa will use under form ("A_B"); DATE:2015-04-21
Db_rdr rdr = stmt_select.Clear()
.Crt_bry_as_str(fld_src_wiki, src_wiki).Crt_int(fld_src_ns, Bry_.To_int_or_neg1(src_ns)).Crt_bry_as_str(fld_src_ttl, src_ttl)
.Exec_select__rls_manual();
try {
return rdr.Move_next() ? rdr.Read_bry_by_str(fld_trg_ttl) : null;
} finally {rdr.Rls();}
}
}
public void Rls() {
stmt_insert = Db_stmt_.Rls(stmt_insert);
stmt_select = Db_stmt_.Rls(stmt_select);
synchronized (thread_lock) {
stmt_insert = Db_stmt_.Rls(stmt_insert);
stmt_select = Db_stmt_.Rls(stmt_select);
}
}
}