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
2014-07-28 01:40:51 -04:00
parent e882217c62
commit 7b6e65b088
247 changed files with 2985 additions and 1618 deletions

View File

@@ -0,0 +1,52 @@
/*
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.*;
import gplx.ios.*;
public class Hdump_frag_row {
public int Frag_id() {return frag_id;} private int frag_id;
public int Page_id() {return page_id;} private int page_id;
public int Frag_tid() {return frag_tid;} private int frag_tid;
public byte[] Frag_key() {return frag_key;} private byte[] frag_key;
public byte[] Frag_text() {return frag_text;} private byte[] frag_text;
public Hdump_frag_row Ctor(int frag_id, int page_id, int frag_tid, byte[] frag_key, byte[] frag_text) {
this.frag_id = frag_id;
this.page_id = page_id;
this.frag_tid = frag_tid;
this.frag_key = frag_key;
this.frag_text = frag_text;
return this;
}
}
class Hdump_frag_tid {
public static final int Tid_file = 1, Tid_title = 2, Tid_sidebar = 3;
public static final String Key_file = "file", Key_title = "title", Key_sidebar = "sidebar";
public static String Xto_key(int v) {
switch (v) {
case Tid_file : return Key_file;
case Tid_title : return Key_title;
case Tid_sidebar : return Key_sidebar;
default : throw Err_.unhandled(v);
}
}
public static byte Xto_tid(String v) {
if (String_.Eq(v, Key_file)) return Tid_file;
else if (String_.Eq(v, Key_title)) return Tid_title;
else if (String_.Eq(v, Key_sidebar)) return Tid_sidebar;
else throw Err_.unhandled("v");
}
}

View File

@@ -0,0 +1,93 @@
/*
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.*;
import gplx.dbs.*; import gplx.ios.*;
public class Hdump_frag_tbl {
private Db_stmt stmt_select, stmt_insert, stmt_update, stmt_delete;
@gplx.Virtual public void Insert(Db_provider provider, int frag_id, int page_id, int frag_tid, byte[] frag_key, byte[] frag_text) {
if (stmt_insert == null) stmt_insert = Db_stmt_.new_insert_(provider, Tbl_name, Flds_all);
try {
stmt_insert.Val_int_(frag_id).Val_int_(page_id).Val_int_(frag_tid).Val_str_by_bry_(frag_key).Val_str_by_bry_(frag_text).Exec_insert();
} finally {stmt_insert.Rls();}
}
@gplx.Virtual public void Update(Db_provider provider, int frag_id, int page_id, int frag_tid, byte[] frag_key, byte[] frag_text) {
if (stmt_update == null) stmt_update = Db_stmt_.new_update_(provider, Tbl_name, Flds_all);
try {
stmt_update.Val_int_(frag_id).Val_int_(page_id).Val_int_(frag_tid).Val_str_by_bry_(frag_key).Val_str_by_bry_(frag_text).Exec_update();
} finally {stmt_update.Rls();}
}
@gplx.Virtual public void Select(Db_provider provider, Hdump_frag_row rv, int frag_id) {
if (stmt_select == null) stmt_select = Db_stmt_.new_select_(provider, Tbl_name, String_.Ary(Fld_frag_id), Flds_all);
try {
DataRdr rdr = stmt_select.Val_int_(frag_id).Exec_select();
rv.Ctor
( rdr.ReadInt(Fld_frag_id)
, rdr.ReadInt(Fld_page_id)
, rdr.ReadInt(Fld_frag_tid)
, rdr.ReadBryByStr(Fld_frag_key)
, rdr.ReadBryByStr(Fld_frag_text)
);
rdr.Rls();
} finally {stmt_select.Rls();}
}
@gplx.Virtual public void Delete(Db_provider provider, int frag_id) {
if (stmt_delete == null) stmt_delete = Db_stmt_.new_delete_(provider, Tbl_name, Fld_frag_id);
try {
stmt_delete.Val_int_(frag_id).Exec_delete();
} finally {stmt_delete.Rls();}
}
@gplx.Virtual public void Delete_all(Db_provider provider) {
Db_qry_.delete_tbl_(Tbl_name).Exec_qry(provider);
}
public void Rls() {
stmt_select = stmt_insert = stmt_update = stmt_delete = null;
}
public static final String Tbl_name = "html_frag"
, Fld_frag_id = "frag_id", Fld_page_id = "page_id", Fld_frag_tid = "frag_tid"
, Fld_frag_key = "frag_key", Fld_frag_text = "frag_text";
private static final String[] Flds_all = new String[] {Fld_frag_id, Fld_page_id, Fld_frag_tid, Fld_frag_key, Fld_frag_text};
public static final String Tbl_sql = String_.Concat_lines_nl
( "CREATE TABLE IF NOT EXISTS html_frag"
, "( frag_id integer NOT NULL PRIMARY KEY"
, ", page_id integer NOT NULL"
, ", frag_tid integer NOT NULL"
, ", frag_key varchar(255) NOT NULL"
, ", frag_text mediumblob NOT NULL"
, ");"
);
}
class Hdump_frag_tbl_mem extends Hdump_frag_tbl { private OrderedHash hash = OrderedHash_.new_();
@Override public void Insert(Db_provider provider, int frag_id, int page_id, int frag_tid, byte[] frag_key, byte[] frag_text) {
Hdump_frag_row row = new Hdump_frag_row().Ctor(frag_id, page_id, frag_tid, frag_key, frag_text);
hash.Add(frag_id, row);
}
@Override public void Update(Db_provider provider, int frag_id, int page_id, int frag_tid, byte[] frag_key, byte[] frag_text) {
Hdump_frag_row row = (Hdump_frag_row)hash.Fetch(frag_id);
row.Ctor(frag_id, page_id, frag_tid, frag_key, frag_text);
}
@Override public void Select(Db_provider provider, Hdump_frag_row rv, int frag_id) {
Hdump_frag_row row = (Hdump_frag_row)hash.Fetch(frag_id);
rv.Ctor(row.Frag_id(), row.Page_id(), row.Frag_tid(), row.Frag_key(), row.Frag_text());
}
@Override public void Delete(Db_provider provider, int frag_id) {
hash.Del(frag_id);
}
@Override public void Delete_all(Db_provider provider) {
hash.Clear();
}
}

View File

@@ -18,13 +18,13 @@ 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.ios.*;
public class Hdump_page_row {
public int Id() {return id;} private int id;
public byte[] Html() {return html;} private byte[] html;
public int Page_id() {return page_id;} private int page_id;
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_page_row Ctor(int id, byte[] html, int frags_len, int make_id) {
this.id = id;
this.html = html;
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;
this.frags_len = frags_len;
this.make_id = make_id;
return this;

View File

@@ -18,67 +18,76 @@ 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_stmt stmt_select, stmt_insert, stmt_update;
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;}
@gplx.Virtual public void Insert(Db_provider provider, int page_id, byte[] html, int frags_len, int make_id) {
@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 {
html = zip_mgr.Zip(zip_tid, html);
stmt_insert.Val_int_(page_id).Val_bry_(html).Val_int_(frags_len).Val_int_(make_id).Exec_insert();
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 Update(Db_provider provider, int page_id, byte[] html, int frags_len, int make_id) {
@gplx.Virtual public void Update(Db_provider provider, int page_id, byte[] page_html, int frags_len, int make_id) {
if (stmt_update == null) stmt_update = Db_stmt_.new_update_(provider, Tbl_name, Flds_all);
try {
html = zip_mgr.Zip(zip_tid, html);
stmt_update.Val_int_(page_id).Val_bry_(html).Val_int_(frags_len).Val_int_(make_id).Exec_update();
page_html = zip_mgr.Zip(zip_tid, page_html);
stmt_update.Val_int_(page_id).Val_str_by_bry_(page_html).Val_int_(frags_len).Val_int_(make_id).Exec_update();
} finally {stmt_update.Rls();}
}
@gplx.Virtual public void Select(Db_provider provider, Hdump_page_row rv, int page_id) {
if (stmt_select == null) stmt_select = Db_stmt_.new_select_(provider, Tbl_name, String_.Ary(Fld_page_id), Flds_all);
try {
DataRdr rdr = stmt_select.Exec_select();
DataRdr rdr = stmt_select.Val_int_(page_id).Exec_select();
rv.Ctor
( rdr.ReadInt(Fld_page_id)
, zip_mgr.Unzip(zip_tid, rdr.ReadBry(Fld_page_text))
, zip_mgr.Unzip(zip_tid, rdr.ReadBry(Fld_page_html))
, rdr.ReadInt(Fld_frags_len)
, rdr.ReadInt(Fld_make_id)
);
rdr.Rls();
} finally {stmt_select.Rls();}
}
@gplx.Virtual public void Delete(Db_provider provider, int page_id) {
if (stmt_delete == null) stmt_delete = Db_stmt_.new_delete_(provider, Tbl_name, Fld_page_id);
try {
stmt_delete.Val_int_(page_id).Exec_delete();
} finally {stmt_delete.Rls();}
}
@gplx.Virtual public void Delete_all(Db_provider provider) {
Db_qry_.delete_tbl_(Tbl_name).Exec_qry(provider);
}
public void Rls() {
stmt_select = stmt_insert = stmt_update = null;
stmt_select = stmt_insert = stmt_update = stmt_delete = null;
zip_mgr = null;
}
public static final String Tbl_name = "html_page"
, Fld_page_id = "page_id", Fld_page_text = "page_text", Fld_frags_len = "frags_len", Fld_make_id= "make_id";
private static final String[] Flds_all = new String[] {Fld_page_id, Fld_page_text, Fld_frags_len, Fld_make_id};
, Fld_page_id = "page_id", Fld_page_html = "page_html", Fld_frags_len = "frags_len", Fld_make_id= "make_id";
private static final String[] Flds_all = new String[] {Fld_page_id, Fld_page_html, Fld_frags_len, Fld_make_id};
public static final String Tbl_sql = String_.Concat_lines_nl
( "CREATE TABLE IF NOT EXISTS html_page"
, "( page_id integer NOT NULL PRIMARY KEY"
, ", page_text mediumblob NOT NULL"
, ", page_html mediumblob NOT NULL"
, ", frags_len integer NOT NULL"
, ", make_id integer NOT NULL"
, ");"
);
}
class Hdump_page_tbl_mem extends Hdump_page_tbl { private OrderedHash hash = OrderedHash_.new_();
@Override public void Insert(Db_provider provider, int page_id, byte[] html, int frags_len, int make_id) {
Hdump_page_row row = new Hdump_page_row().Ctor(page_id, html, frags_len, make_id);
@Override public void Insert(Db_provider provider, int page_id, byte[] page_html, int frags_len, int make_id) {
Hdump_page_row row = new Hdump_page_row().Ctor(page_id, page_html, frags_len, make_id);
hash.Add(page_id, row);
}
@Override public void Update(Db_provider provider, int page_id, byte[] html, int frags_len, int make_id) {
@Override public void Update(Db_provider provider, int page_id, byte[] page_html, int frags_len, int make_id) {
Hdump_page_row row = (Hdump_page_row)hash.Fetch(page_id);
row.Ctor(page_id, html, frags_len, make_id);
row.Ctor(page_id, page_html, frags_len, make_id);
}
@Override public void Select(Db_provider provider, Hdump_page_row rv, int page_id) {
Hdump_page_row row = (Hdump_page_row)hash.Fetch(page_id);
rv.Ctor(row.Id(), row.Html(), row.Frags_len(), row.Make_id());
rv.Ctor(row.Page_id(), row.Page_html(), row.Frags_len(), row.Make_id());
}
@Override public void Delete(Db_provider provider, int page_id) {
hash.Del(page_id);
}
@Override public void Delete_all(Db_provider provider) {
hash.Clear();

View File

@@ -0,0 +1,28 @@
/*
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.*;
import gplx.ios.*;
public class Hdump_skin_row {
public int Skin_id() {return skin_id;} private int skin_id;
public byte[] Skin_html() {return skin_html;} private byte[] skin_html;
public Hdump_skin_row Ctor(int skin_id, byte[] skin_html) {
this.skin_id = skin_id;
this.skin_html = skin_html;
return this;
}
}

View File

@@ -0,0 +1,86 @@
/*
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.*;
import gplx.dbs.*; import gplx.ios.*;
public class Hdump_skin_tbl {
private Db_stmt stmt_select, stmt_insert, stmt_update, stmt_delete;
@gplx.Virtual public void Insert(Db_provider provider, int skin_id, byte[] skin_text) {
if (stmt_insert == null) stmt_insert = Db_stmt_.new_insert_(provider, Tbl_name, Flds_all);
try {
stmt_insert.Val_int_(skin_id).Val_str_by_bry_(skin_text).Exec_insert();
} finally {stmt_insert.Rls();}
}
@gplx.Virtual public void Update(Db_provider provider, int skin_id, byte[] skin_text) {
if (stmt_update == null) stmt_update = Db_stmt_.new_update_(provider, Tbl_name, Flds_all);
try {
stmt_update.Val_int_(skin_id).Val_str_by_bry_(skin_text).Exec_update();
} finally {stmt_update.Rls();}
}
@gplx.Virtual public void Select(Db_provider provider, Hdump_skin_row rv, int skin_id) {
if (stmt_select == null) stmt_select = Db_stmt_.new_select_(provider, Tbl_name, String_.Ary(Fld_skin_id), Flds_all);
try {
DataRdr rdr = stmt_select.Val_int_(skin_id).Exec_select();
rv.Ctor
( rdr.ReadInt(Fld_skin_id)
, rdr.ReadBryByStr(Fld_skin_text)
);
rdr.Rls();
} finally {stmt_select.Rls();}
}
@gplx.Virtual public void Delete(Db_provider provider, int skin_id) {
if (stmt_delete == null) stmt_delete = Db_stmt_.new_delete_(provider, Tbl_name, Fld_skin_id);
try {
stmt_delete.Val_int_(skin_id).Exec_delete();
} finally {stmt_delete.Rls();}
}
@gplx.Virtual public void Delete_all(Db_provider provider) {
Db_qry_.delete_tbl_(Tbl_name).Exec_qry(provider);
}
public void Rls() {
stmt_select = stmt_insert = stmt_update = stmt_delete = null;
}
public static final String Tbl_name = "html_skin"
, Fld_skin_id = "skin_id", Fld_skin_text = "skin_text";
private static final String[] Flds_all = new String[] {Fld_skin_id, Fld_skin_text};
public static final String Tbl_sql = String_.Concat_lines_nl
( "CREATE TABLE IF NOT EXISTS html_skin"
, "( skin_id integer NOT NULL PRIMARY KEY"
, ", skin_text mediumblob NOT NULL"
, ");"
);
}
class Hdump_skin_tbl_mem extends Hdump_skin_tbl { private OrderedHash hash = OrderedHash_.new_();
@Override public void Insert(Db_provider provider, int skin_id, byte[] skin_text) {
Hdump_skin_row row = new Hdump_skin_row().Ctor(skin_id, skin_text);
hash.Add(skin_id, row);
}
@Override public void Update(Db_provider provider, int skin_id, byte[] skin_text) {
Hdump_skin_row row = (Hdump_skin_row)hash.Fetch(skin_id);
row.Ctor(skin_id, skin_text);
}
@Override public void Select(Db_provider provider, Hdump_skin_row rv, int skin_id) {
Hdump_skin_row row = (Hdump_skin_row)hash.Fetch(skin_id);
rv.Ctor(row.Skin_id(), row.Skin_html());
}
@Override public void Delete(Db_provider provider, int skin_id) {
hash.Del(skin_id);
}
@Override public void Delete_all(Db_provider provider) {
hash.Clear();
}
}