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-09-21 23:32:37 -04:00
parent 985863b224
commit 314de43d76
133 changed files with 4112 additions and 722 deletions

View File

@@ -17,7 +17,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package gplx.dbs; import gplx.*;
public class Db_provider {
@gplx.Internal protected Db_provider(Db_engine engine) {
public Db_provider(Db_engine engine) {
this.engine = engine;
this.txn_mgr = new Db_txn_mgr_base(engine);
}

View File

@@ -25,13 +25,13 @@ class Db_rdr__basic implements Db_rdr {
try {return rdr.next();}
catch (Exception e) {throw Err_.new_fmt_("move_next failed; check column casting error in SQL: err={0} sql={1}", Err_.Message_lang(e), sql);}
}
public byte[] Read_bry(int i) {try {return rdr.getBytes(i);} catch (Exception e) {throw Err_.new_("read failed: i={0} type={1} err={2}", i, Bry_.Cls_name, Err_.Message_lang(e));}}
public byte[] Read_bry_by_str(int i) {try {return Bry_.new_utf8_(rdr.getString(i));} catch (Exception e) {throw Err_.new_("read failed: i={0} type={1} err={2}", i, String_.Cls_name, Err_.Message_lang(e));}}
public String Read_str(int i) {try {return rdr.getString(i);} catch (Exception e) {throw Err_.new_("read failed: i={0} type={1} err={2}", i, String_.Cls_name, Err_.Message_lang(e));}}
public int Read_int(int i) {try {return rdr.getInt(i);} catch (Exception e) {throw Err_.new_("read failed: i={0} type={1} err={2}", i, Int_.Cls_name, Err_.Message_lang(e));}}
public long Read_long(int i) {try {return rdr.getLong(i);} catch (Exception e) {throw Err_.new_("read failed: i={0} type={1} err={2}", i, Long_.Cls_name, Err_.Message_lang(e));}}
public float Read_float(int i) {try {return rdr.getFloat(i);} catch (Exception e) {throw Err_.new_("read failed: i={0} type={1} err={2}", i, Float_.Cls_name, Err_.Message_lang(e));}}
public double Read_double(int i) {try {return rdr.getDouble(i);} catch (Exception e) {throw Err_.new_("read failed: i={0} type={1} err={2}", i, Double_.Cls_name, Err_.Message_lang(e));}}
public byte Read_byte(int i) {try {return rdr.getByte(i);} catch (Exception e) {throw Err_.new_("read failed: i={0} type={1} err={2}", i, Byte_.Cls_name, Err_.Message_lang(e));}}
public byte[] Read_bry(int i) {try {return rdr.getBytes(i + 1);} catch (Exception e) {throw Err_.new_("read failed: i={0} type={1} err={2}", i, Bry_.Cls_name, Err_.Message_lang(e));}}
public byte[] Read_bry_by_str(int i) {try {return Bry_.new_utf8_(rdr.getString(i + 1));} catch (Exception e) {throw Err_.new_("read failed: i={0} type={1} err={2}", i, String_.Cls_name, Err_.Message_lang(e));}}
public String Read_str(int i) {try {return rdr.getString(i + 1);} catch (Exception e) {throw Err_.new_("read failed: i={0} type={1} err={2}", i, String_.Cls_name, Err_.Message_lang(e));}}
public int Read_int(int i) {try {return rdr.getInt(i + 1);} catch (Exception e) {throw Err_.new_("read failed: i={0} type={1} err={2}", i, Int_.Cls_name, Err_.Message_lang(e));}}
public long Read_long(int i) {try {return rdr.getLong(i + 1);} catch (Exception e) {throw Err_.new_("read failed: i={0} type={1} err={2}", i, Long_.Cls_name, Err_.Message_lang(e));}}
public float Read_float(int i) {try {return rdr.getFloat(i + 1);} catch (Exception e) {throw Err_.new_("read failed: i={0} type={1} err={2}", i, Float_.Cls_name, Err_.Message_lang(e));}}
public double Read_double(int i) {try {return rdr.getDouble(i + 1);} catch (Exception e) {throw Err_.new_("read failed: i={0} type={1} err={2}", i, Double_.Cls_name, Err_.Message_lang(e));}}
public byte Read_byte(int i) {try {return rdr.getByte(i + 1);} catch (Exception e) {throw Err_.new_("read failed: i={0} type={1} err={2}", i, Byte_.Cls_name, Err_.Message_lang(e));}}
public void Close() {try {rdr.close();} catch (Exception e) {throw Err_.new_("close failed: err={0}", Err_.Message_lang(e));}}
}

View File

@@ -35,7 +35,7 @@ public class Db_qry__select_in_tbl implements Db_qry {
}
public String Group_by_sql() {return group_by_sql;} private final String group_by_sql;
public String Having_sql() {return having_sql;} private final String having_sql;
public String Order_by_sql() {return order_by_sql;} private final String order_by_sql;
public String Order_by_sql() {return order_by_sql;} public Db_qry__select_in_tbl Order_by_sql_(String v) {order_by_sql = v; return this;} private String order_by_sql;
public String Limit_sql() {return limit_sql;} private final String limit_sql;
public static Db_qry__select_in_tbl new_(String tbl_name, String[] where_flds, String[] select_flds) {return new Db_qry__select_in_tbl(tbl_name, select_flds, where_flds, null, null, null, null);}
public String KeyOfDb_qry() {return "select_in_tbl";}
@@ -49,12 +49,13 @@ public class Db_qry__select_in_tbl implements Db_qry {
if (i != 0) sb.Add(",");
sb.Add(select_flds[i]);
}
sb.Add(" FROM ").Add(tbl_name).Add(" ");
if (where_flds != null) {sb.Add("WHERE "); Where_sql(sb);}
sb.Add(" FROM ").Add(tbl_name);
if (where_flds != null) {sb.Add(" WHERE "); Where_sql(sb);}
if (group_by_sql != null) sb.Add(group_by_sql);
if (having_sql != null) sb.Add(having_sql);
if (order_by_sql != null) sb.Add(order_by_sql);
if (order_by_sql != null) {sb.Add(" ORDER BY "); sb.Add(order_by_sql);}
if (limit_sql != null) sb.Add(limit_sql);
return sb.XtoStr();
}
public static final String[] Where_flds__all = null;
}

View File

@@ -18,6 +18,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
package gplx.dbs; import gplx.*;
public interface Db_engine {
String Key();
String Conn_info_tid();
Db_conn_info Conn_info();
void Conn_open();
void Conn_term();
@@ -33,6 +34,7 @@ public interface Db_engine {
}
class Db_engine_null implements Db_engine {
public String Key() {return Db_conn_info_.Null.Key();}
public String Conn_info_tid() {return Db_conn_info_.Null.Key();}
public Db_conn_info Conn_info() {return Db_conn_info_.Null;}
public void Conn_open() {}
public void Conn_term() {}

View File

@@ -18,7 +18,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
package gplx.dbs; import gplx.*;
public class Db_engine_regy {
private final HashAdp hash = HashAdp_.new_();
Db_engine_regy() {
public Db_engine_regy() {}
Db_engine_regy(int dflt) {
this.Add(Db_engine_null._)
.Add(TdbEngine._)
.Add(Mysql_engine._)
@@ -28,5 +29,5 @@ public class Db_engine_regy {
}
public Db_engine_regy Add(Db_engine engine) {hash.Add(engine.Key(), engine); return this;}
public Db_engine Get(String key) {return (Db_engine)hash.FetchOrFail(key);}
public static final Db_engine_regy _ = new Db_engine_regy();
public static final Db_engine_regy _ = new Db_engine_regy(1);
}

View File

@@ -19,6 +19,7 @@ package gplx.dbs; import gplx.*;
import java.sql.*;
abstract class Db_engine_sql_base implements Db_engine {
public abstract String Key();
public abstract String Conn_info_tid();
public Db_conn_info Conn_info() {return conn_info;} protected Db_conn_info conn_info;
@gplx.Virtual public void Txn_bgn() {Execute(Db_qry_sql.xtn_("BEGIN TRANSACTION;"));}
@gplx.Virtual public void Txn_end() {Execute(Db_qry_sql.xtn_("COMMIT TRANSACTION;"));}

View File

@@ -20,6 +20,7 @@ import gplx.stores.*;
import java.sql.*;
class Mysql_engine extends Db_engine_sql_base {
@Override public String Key() {return Db_conn_info__mysql.Key_const;}
@Override public String Conn_info_tid() {return this.Key();}
@Override public Sql_cmd_wtr SqlWtr() {return Sql_cmd_wtr_.BackslashSensitive;}
@Override public Db_engine Make_new(Db_conn_info connectInfo) {
Mysql_engine rv = new Mysql_engine();

View File

@@ -20,6 +20,7 @@ import gplx.stores.*;
import java.sql.*;
class Postgres_engine extends Db_engine_sql_base {
@Override public String Key() {return Db_conn_info__postgres.Key_const;}
@Override public String Conn_info_tid() {return this.Key();}
@Override public Sql_cmd_wtr SqlWtr() {return Sql_cmd_wtr_.BackslashSensitive;}
@Override public Db_engine Make_new(Db_conn_info connectInfo) {
Postgres_engine rv = new Postgres_engine();

View File

@@ -20,6 +20,7 @@ import gplx.stores.*;
import java.sql.*;
class Sqlite_engine extends Db_engine_sql_base {
@Override public String Key() {return Db_conn_info__sqlite.Key_const;}
@Override public String Conn_info_tid() {return this.Key();}
@Override public Db_engine Make_new(Db_conn_info connectInfo) {
Sqlite_engine rv = new Sqlite_engine();
rv.ctor_SqlEngineBase(connectInfo);

View File

@@ -81,6 +81,7 @@ public class Sqlite_engine_ {
Pragma_page_size(p, 4096);
return p;
}
public static Db_engine New_engine() {return Sqlite_engine._;}
public static final int Stmt_arg_max = 999; // 999 is max number of variables allowed by sqlite
public static final boolean Supports_read_binary_stream = false;
public static final boolean Supports_indexed_by = true;

View File

@@ -18,6 +18,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
package gplx.dbs; import gplx.*;
class TdbEngine implements Db_engine {
public String Key() {return KeyDef;} public static final String KeyDef = "tdb";
public String Conn_info_tid() {return this.Key();}
public Db_conn_info Conn_info() {return conn_info;} Db_conn_info conn_info;
public TdbDatabase Db() {return db;} TdbDatabase db;
public void Conn_open() {