mirror of
https://github.com/gnosygnu/xowa.git
synced 2026-03-02 03:49:30 +00:00
v1.8.1.1
This commit is contained in:
@@ -58,7 +58,7 @@ public class Xodb_fsys_mgr {
|
||||
if (max == Max_core_db) return files_ary[File_id_core];
|
||||
return Make(tid).File_max_(max);
|
||||
}
|
||||
private void Init_by_tid_core(Xodb_file file) {core_provider = page_provider = category_provider = wikidata_provider = file.Provider();}
|
||||
private void Init_by_tid_core(Xodb_file file) {core_provider = page_provider = category_provider = wikidata_provider = file.Provider();}
|
||||
public void Init_by_tid_category(Xodb_file file) {category_provider = file.Provider();}
|
||||
public void Init_by_tid_wikidata(Xodb_file file) {wikidata_provider = file.Provider();}
|
||||
private void Init_by_ns_map(Xow_ns_mgr ns_mgr, Xodb_ns_map_mgr ns_map) {
|
||||
@@ -97,7 +97,7 @@ public class Xodb_fsys_mgr {
|
||||
for (int i = 0; i < files_ary_len; i++) {
|
||||
Xodb_file file = files_ary[i];
|
||||
if (Byte_.In(file.Tid(), tids))
|
||||
Xodb_fsdb_mgr_.Index_create(usr_dlg, file, idxs);
|
||||
Sqlite_engine_.Idx_create(usr_dlg, file.Provider(), Int_.XtoStr(file.Id()), idxs);
|
||||
}
|
||||
}
|
||||
public void Overwrite(int file_idx) {Create_sqlite3(src_dir, trg_dir, trg_name, file_idx);}
|
||||
@@ -130,17 +130,3 @@ public class Xodb_fsys_mgr {
|
||||
public static final int Heap_max_infinite = 0;
|
||||
public static final long Max_core_db = -1;
|
||||
}
|
||||
class Xodb_fsdb_mgr_ {
|
||||
public static void Index_create(Gfo_usr_dlg usr_dlg, Xodb_file file, Db_idx_itm[] idxs) {
|
||||
Db_provider provider = file.Provider();
|
||||
provider.Txn_mgr().Txn_end_all(); // commit any pending transactions
|
||||
int len = idxs.length;
|
||||
for (int i = 0; i < len; i++) {
|
||||
provider.Txn_mgr().Txn_bgn_if_none();
|
||||
String index = idxs[i].Xto_sql();
|
||||
usr_dlg.Prog_many("", "", "creating index: ~{0} ~{1}", file.Id(), index);
|
||||
provider.Exec_sql(index);
|
||||
provider.Txn_mgr().Txn_end_all();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,8 +18,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
package gplx.xowa.dbs; import gplx.*; import gplx.xowa.*;
|
||||
import org.junit.*; import gplx.xowa.bldrs.*; import gplx.xowa.ctgs.*; import gplx.dbs.*; import gplx.xowa.dbs.tbls.*;
|
||||
public class Xodb_load_mgr_sql_tst {
|
||||
@Before public void init() {fxt.Clear();} private Xodb_load_mgr_sql_fxt fxt = new Xodb_load_mgr_sql_fxt();
|
||||
@Before public void init() {if (Xoa_test_.Db_skip()) return; fxt.Clear();} private Xodb_load_mgr_sql_fxt fxt = new Xodb_load_mgr_sql_fxt();
|
||||
@Test public void Load_ctg_ttls() {
|
||||
if (Xoa_test_.Db_skip()) return;
|
||||
Xodb_page[] ctgs = fxt.pages_
|
||||
( fxt.ctg_(1, "Ctg_1", Bool_.Y, 10, 11, 12)
|
||||
, fxt.ctg_(2, "Ctg_2", Bool_.N, 20, 21, 22)
|
||||
|
||||
101
400_xowa/src/gplx/xowa/dbs/hdumps/Hdump_data_mgr.java
Normal file
101
400_xowa/src/gplx/xowa/dbs/hdumps/Hdump_data_mgr.java
Normal file
@@ -0,0 +1,101 @@
|
||||
/*
|
||||
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.dbs.hdumps; import gplx.*; import gplx.xowa.*; import gplx.xowa.dbs.*;
|
||||
class Hdump_data_mgr {
|
||||
// private Xow_wiki wiki;
|
||||
// public void Init_by_wiki(Xow_wiki wiki) {this.wiki = wiki;}
|
||||
public void Select(int ns_id, Hdump_page_row page, int page_id) {
|
||||
Hdump_db db = Get_db(ns_id, page_id);
|
||||
// int reg =
|
||||
db.Page_tbl().Select(null, page, page_id);
|
||||
// db.Frag_tbl().Select(list, 1);
|
||||
// page.Frags_(list.XtoAry());
|
||||
}
|
||||
public void Insert(int ns_id, Hdump_page_row page) {
|
||||
byte[] page_html = page.Page_html();
|
||||
int page_html_len = page_html.length;
|
||||
Hdump_db db = Get_db(ns_id, page_html_len);
|
||||
Hdump_frag_row[] frags = page.Frags();
|
||||
int frags_len = frags.length;
|
||||
db.Page_tbl().Insert(page.Page_id(), page.Page_html(), frags_len, 1);
|
||||
Hdump_frag_tbl frag_tbl = db.Frag_tbl();
|
||||
for (int i = 0; i < frags_len; ++i) {
|
||||
Hdump_frag_row frag = frags[i];
|
||||
frag_tbl.Insert(null, frag.Frag_id(), page.Page_id(), frag.Frag_tid(), frag.Frag_key(), frag.Frag_text());
|
||||
}
|
||||
}
|
||||
public void Update() {
|
||||
}
|
||||
private Hdump_db Get_db(int ns_id, int len) {return null;}
|
||||
}
|
||||
class Hdump_db {
|
||||
public Io_url Db_url() {return db_url;} private Io_url db_url = Io_url_.Null;
|
||||
public void Txn_bgn() {}
|
||||
public void Txn_end() {}
|
||||
public void Rls() {}
|
||||
public Hdump_page_tbl Page_tbl() {return page_tbl;} private Hdump_page_tbl page_tbl = new Hdump_page_tbl();
|
||||
public Hdump_frag_tbl Frag_tbl() {return frag_tbl;} private Hdump_frag_tbl frag_tbl = new Hdump_frag_tbl();
|
||||
}
|
||||
class Hdump_bldr {
|
||||
public byte[] Do_this() {
|
||||
// SELECT * FROM page_id
|
||||
return null;
|
||||
}
|
||||
}
|
||||
class Hdump_rdr {
|
||||
public void Read(Hdump_page page, Hdump_text_itm[] itms) {
|
||||
int len = itms.length;
|
||||
for (int i = 0; i < len; ++i) {
|
||||
Hdump_text_itm itm = itms[i];
|
||||
switch (itm.Tid()) {
|
||||
case Hdump_text_tid.Tid_page: Read_page(page, itm); break;
|
||||
case Hdump_text_tid.Tid_file: break;
|
||||
}
|
||||
}
|
||||
}
|
||||
public void Read_page(Hdump_page page, Hdump_text_itm itm) {
|
||||
page.Version_id_(Bry_.Xto_int(itm.Args()));
|
||||
page.Html_(itm.Text());
|
||||
}
|
||||
public void Read_file(Hdump_page page, Hdump_text_itm file) {
|
||||
//byte[][] args = null;
|
||||
}
|
||||
}
|
||||
class Hdump_page {
|
||||
public int Version_id() {return version_id;} public void Version_id_(int v) {version_id = v;} private int version_id;
|
||||
public byte[] Html() {return html;} public void Html_(byte[] v) {html = v;} private byte[] html;
|
||||
public void Generate() {
|
||||
// swap in each file
|
||||
// add skin
|
||||
// swap in display title, content_sub, menu
|
||||
}
|
||||
}
|
||||
class Hdump_itm_file {
|
||||
public byte[] Ttl() {return ttl;} private byte[] ttl;
|
||||
public void Init(byte[][] ary) {
|
||||
ttl = ary[0];
|
||||
}
|
||||
}
|
||||
class Hdump_text_itm {
|
||||
public int Tid() {return tid;} public void Tid_(int v) {tid = v;} private int tid;
|
||||
public byte[] Args() {return args;} public void Args_(byte[] v) {args = v;} private byte[] args;
|
||||
public byte[] Text() {return text;} public void Text_(byte[] v) {text = v;} private byte[] text;
|
||||
}
|
||||
class Hdump_text_tid {
|
||||
public static final int Tid_page = 0, Tid_file = 1, Tid_display = 2, Tid_content_sub = 3, Tid_sidebar = 4;
|
||||
}
|
||||
@@ -22,6 +22,7 @@ public class Hdump_page_row {
|
||||
public byte[] Page_html() {return page_html;} private byte[] page_html;
|
||||
public int Frags_len() {return frags_len;} private int frags_len;
|
||||
public int Make_id() {return make_id;} private int make_id;
|
||||
public Hdump_frag_row[] Frags() {return frags;} public void Frags_(Hdump_frag_row[] frags) {this.frags = frags;} private Hdump_frag_row[] frags;
|
||||
public Hdump_page_row Ctor(int page_id, byte[] page_html, int frags_len, int make_id) {
|
||||
this.page_id = page_id;
|
||||
this.page_html = page_html;
|
||||
|
||||
@@ -18,9 +18,18 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
package gplx.xowa.dbs.hdumps; import gplx.*; import gplx.xowa.*; import gplx.xowa.dbs.*;
|
||||
import gplx.dbs.*; import gplx.ios.*;
|
||||
public class Hdump_page_tbl {
|
||||
private Db_provider provider;
|
||||
private Db_stmt stmt_select, stmt_insert, stmt_update, stmt_delete;
|
||||
private Io_stream_zip_mgr zip_mgr; private byte zip_tid;
|
||||
public void Ctor(Io_stream_zip_mgr zip_mgr, byte zip_tid) {this.zip_mgr = zip_mgr; this.zip_tid = zip_tid;}
|
||||
public void Ctor(Db_provider provider, Io_stream_zip_mgr zip_mgr, byte zip_tid) {this.provider = provider; this.zip_mgr = zip_mgr; this.zip_tid = zip_tid;}
|
||||
@gplx.Virtual public void Insert(int page_id, byte[] page_html, int frags_len, int make_id) {
|
||||
if (stmt_insert == null) stmt_insert = Db_stmt_.new_insert_(provider, Tbl_name, Flds_all);
|
||||
try {
|
||||
page_html = zip_mgr.Zip(zip_tid, page_html);
|
||||
stmt_insert.Val_int_(page_id).Val_str_by_bry_(page_html).Val_int_(frags_len).Val_int_(make_id).Exec_insert();
|
||||
} finally {stmt_insert.Rls();}
|
||||
}
|
||||
@gplx.Virtual public void Insert(Db_provider provider, int page_id, byte[] page_html, int frags_len, int make_id) {
|
||||
if (stmt_insert == null) stmt_insert = Db_stmt_.new_insert_(provider, Tbl_name, Flds_all);
|
||||
try {
|
||||
|
||||
@@ -18,9 +18,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
package gplx.xowa.dbs.tbls; import gplx.*; import gplx.xowa.*; import gplx.xowa.dbs.*;
|
||||
import gplx.dbs.*;
|
||||
public class Xodb_search_title_page_tbl {
|
||||
public static void Create_table(Db_provider p) {Sqlite_engine_.Tbl_create(p, Tbl_name, Tbl_sql);}
|
||||
public static void Create_index_unique(Gfo_usr_dlg usr_dlg, Db_provider p) {Sqlite_engine_.Idx_create(usr_dlg, p, "search", Indexes_main_unique);}
|
||||
public static void Create_index_non_unique(Gfo_usr_dlg usr_dlg, Db_provider p) {Sqlite_engine_.Idx_create(usr_dlg, p, "search", Indexes_main_non_unique);}
|
||||
public static void Create_table(Db_provider p) {Sqlite_engine_.Tbl_create(p, Tbl_name, Tbl_sql);}
|
||||
public static void Create_index_unique(Gfo_usr_dlg usr_dlg, Db_provider p) {Sqlite_engine_.Idx_create(usr_dlg, p, "search", Idx_main_unique);}
|
||||
public static void Create_index_non_unique(Gfo_usr_dlg usr_dlg, Db_provider p) {Sqlite_engine_.Idx_create(usr_dlg, p, "search", Idx_main_non_unique);}
|
||||
public static Db_stmt Insert_stmt(Db_provider p) {return Db_stmt_.new_insert_(p, Tbl_name, Fld_stp_word_id, Fld_stp_page_id);}
|
||||
public static void Insert(Db_stmt stmt, int word_id, int page_id) {
|
||||
stmt.Clear()
|
||||
@@ -30,13 +30,13 @@ public class Xodb_search_title_page_tbl {
|
||||
}
|
||||
public static final String Tbl_name = "search_title_page", Fld_stp_word_id = "stp_word_id", Fld_stp_page_id = "stp_page_id";
|
||||
private static final String Tbl_sql = String_.Concat_lines_nl
|
||||
( "CREATE TABLE IF NOT EXISTS search_title_page"
|
||||
, "( stp_word_id integer NOT NULL"
|
||||
, ", stp_page_id integer NOT NULL"
|
||||
, ");"
|
||||
( "CREATE TABLE IF NOT EXISTS search_title_page"
|
||||
, "( stp_word_id integer NOT NULL"
|
||||
, ", stp_page_id integer NOT NULL"
|
||||
, ");"
|
||||
);
|
||||
private static final Db_idx_itm
|
||||
Indexes_main_unique = Db_idx_itm.sql_("CREATE UNIQUE INDEX IF NOT EXISTS search_title_page__main ON search_title_page (stp_word_id, stp_page_id);")
|
||||
, Indexes_main_non_unique = Db_idx_itm.sql_("CREATE INDEX IF NOT EXISTS search_title_page__main ON search_title_page (stp_word_id, stp_page_id);")
|
||||
Idx_main_unique = Db_idx_itm.sql_("CREATE UNIQUE INDEX IF NOT EXISTS search_title_page__main ON search_title_page (stp_word_id, stp_page_id);")
|
||||
, Idx_main_non_unique = Db_idx_itm.sql_("CREATE INDEX IF NOT EXISTS search_title_page__main ON search_title_page (stp_word_id, stp_page_id);")
|
||||
;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user