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
2015-01-25 20:56:50 -05:00
parent 1b0042ef8a
commit efaf9dcd00
447 changed files with 10258 additions and 3016 deletions

View File

@@ -19,14 +19,14 @@ package gplx.dbs; import gplx.*;
import org.junit.*;
public class TdbConnectInfo_tst {
@Test public void Full() {
Db_conn_info connectInfo = Db_conn_info_.parse_("gplx_key=tdb;url=C:\\dir\\xmpl.tdb;format=dsv;");
Db_url connectInfo = Db_url_.parse_("gplx_key=tdb;url=C:\\dir\\xmpl.tdb;format=dsv;");
tst_Parse(connectInfo, Io_url_.new_any_("C:\\dir\\xmpl.tdb"), "dsv");
}
@Test public void DefaultFormat() {
Db_conn_info connectInfo = Db_conn_info_.parse_("gplx_key=tdb;url=C:\\dir\\xmpl.tdb"); // dsv Format inferred
Db_url connectInfo = Db_url_.parse_("gplx_key=tdb;url=C:\\dir\\xmpl.tdb"); // dsv Format inferred
tst_Parse(connectInfo, Io_url_.new_any_("C:\\dir\\xmpl.tdb"), "dsv");
}
void tst_Parse(Db_conn_info connectInfo, Io_url url, String format) {
Tfds.Eq(((Db_conn_info__tdb)connectInfo).Url(), url);
void tst_Parse(Db_url connectInfo, Io_url url, String format) {
Tfds.Eq(((Db_url__tdb)connectInfo).Url(), url);
}
}

View File

@@ -43,5 +43,5 @@ public class TdbDatabase {
}
int FileId_next = TdbFile.MainFileId + 1;
int TableId_next = 1;
// public static Io_url UrlOf(Db_conn_info url) {return Io_url_.new_any_(url.ServerName());}
// public static Io_url UrlOf(Db_url url) {return Io_url_.new_any_(url.ServerName());}
}

View File

@@ -21,7 +21,7 @@ import gplx.lists.*; /*GfoNde*/
class TdbDeleteWkr implements Db_qryWkr {
public Object Exec(Db_engine engineObj, Db_qry cmdObj) {
TdbEngine engine = TdbEngine.cast_(engineObj); Db_qry_delete cmd = (Db_qry_delete)cmdObj;
TdbTable tbl = engine.FetchTbl(cmd.BaseTable());
TdbTable tbl = engine.FetchTbl(cmd.Base_table());
ListAdp deleted = ListAdp_.new_();
int rv = 0;
if (cmd.Where() == Db_qry_.WhereAll) {
@@ -29,7 +29,7 @@ class TdbDeleteWkr implements Db_qryWkr {
tbl.Rows().Clear();
}
else {
Criteria crt = cmd.Where().Crt();
Criteria crt = cmd.Where();
for (int i = 0; i < tbl.Rows().Count(); i++) {
GfoNde row = tbl.Rows().FetchAt_asGfoNde(i);
if (crt.Matches(row))

View File

@@ -16,31 +16,32 @@ 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.dbs; import gplx.*;
import gplx.dbs.sqls.*;
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 String Tid() {return Db_url__tdb.Tid_const;}
public Db_url Url() {return url;} private Db_url url;
public TdbDatabase Db() {return db;} TdbDatabase db;
public void Conn_open() {
String urlStr = (String)conn_info.Server();
db = loadMgr.LoadTbls(Io_url_.new_any_(urlStr));
Db_url__tdb tdb_url = (Db_url__tdb)url;
String url_str = tdb_url.Server();
db = loadMgr.LoadTbls(Io_url_.new_any_(url_str));
}
public void Conn_term() {}
public void Txn_bgn() {}
public void Txn_end() {}
public Db_engine Make_new(Db_conn_info conn_info) {
public Db_engine New_clone(Db_url url) {
TdbEngine rv = new TdbEngine();
rv.CtorTdbEngine(conn_info);
rv.CtorTdbEngine(url);
return rv;
}
public Object Execute(Db_qry cmd) {
Db_qryWkr wkr = (Db_qryWkr)wkrs.FetchOrFail(cmd.KeyOfDb_qry());
return wkr.Exec(this, cmd);
public Object Exec_as_obj(Db_qry qry) {
Db_qryWkr wkr = (Db_qryWkr)wkrs.FetchOrFail(qry.Tid());
return wkr.Exec(this, qry);
}
public DataRdr NewDataRdr(java.sql.ResultSet rdr, String sql) {return DataRdr_.Null;}
public Db_stmt New_db_stmt(Db_provider provider, Db_qry qry) {return new Db_stmt_sql().Parse(Sql_cmd_wtr_.Ansi.XtoSqlQry(qry, true));}
public Object New_db_cmd(String sql) {throw Err_.not_implemented_();}
public Db_rdr New_db_rdr(Object o, String sql) {return Db_rdr_.Null;}
public Db_stmt New_stmt_prep(Db_qry qry) {return new Db_stmt_sql().Parse(qry, Sql_qry_wtr_.I.Xto_str(qry, true));}
public Object New_stmt_prep_as_obj(String sql) {throw Err_.not_implemented_();}
public Db_rdr New_rdr_by_obj(Object o, String sql) {return Db_rdr_.Null;}
public DataRdr New_rdr(java.sql.ResultSet rdr, String sql) {return DataRdr_.Null;}
public TdbTable FetchTbl(String name) {
TdbTable tbl = db.Tables().FetchOrFail(name);
if (!tbl.IsLoaded()) loadMgr.LoadTbl(db, tbl);
@@ -55,15 +56,23 @@ class TdbEngine implements Db_engine {
HashAdp wkrs = HashAdp_.new_(); TdbDbLoadMgr loadMgr = TdbDbLoadMgr.new_(); TdbDbSaveMgr saveMgr = TdbDbSaveMgr.new_();
@gplx.Internal protected static final TdbEngine _ = new TdbEngine();
//TdbEngine() {this.conn_info = TdbConnectUrl._;}
void CtorTdbEngine(Db_conn_info conn_info) {
this.conn_info = conn_info;
wkrs.Add(Db_qry_select.KeyConst, TdbSelectWkr._);
wkrs.Add(Db_qry_insert.KeyConst, TdbInsertWkr.new_());
wkrs.Add(Db_qry_update.KeyConst, TdbUpdateWkr.new_());
wkrs.Add(Db_qry_delete.KeyConst, TdbDeleteWkr.new_());
wkrs.Add(Db_qry_flush.KeyConst, TdbFlushWkr.new_());
void CtorTdbEngine(Db_url url) {
this.url = url;
wkrs.Add(Db_qry_.Tid_select, TdbSelectWkr._);
wkrs.Add(Db_qry_.Tid_insert, TdbInsertWkr.new_());
wkrs.Add(Db_qry_.Tid_update, TdbUpdateWkr.new_());
wkrs.Add(Db_qry_.Tid_delete, TdbDeleteWkr.new_());
wkrs.Add(Db_qry_.Tid_flush, TdbFlushWkr.new_());
}
public static TdbEngine as_(Object obj) {return obj instanceof TdbEngine ? (TdbEngine)obj : null;}
public static TdbEngine cast_(Object obj) {try {return (TdbEngine)obj;} catch(Exception exc) {throw Err_.type_mismatch_exc_(exc, TdbEngine.class, obj);}}
}
interface Db_qryWkr {
Object Exec(Db_engine engine, Db_qry cmd);
}
class Db_qryWkr_ {
public static final Db_qryWkr Null = new Db_qryWrk_null();
}
class Db_qryWrk_null implements Db_qryWkr {
public Object Exec(Db_engine engine, Db_qry cmd) {return null;}
}

View File

@@ -81,8 +81,8 @@ public class TdbFlush_tst {
}
class TdbEngineFxt {
public TdbEngine run_MakeEngine(Io_url url) {
Db_conn_info connectInfo = Db_conn_info_.tdb_(url);
TdbEngine engine = (TdbEngine)TdbEngine._.Make_new(connectInfo);
Db_url connectInfo = Db_url_.tdb_(url);
TdbEngine engine = (TdbEngine)TdbEngine._.New_clone(connectInfo);
engine.Conn_open();
return engine;
}
@@ -93,9 +93,9 @@ class TdbEngineFxt {
return rv;
}
public void run_InsertRow(TdbEngine engine, String tblName, int idVal) {
Db_qry_insert cmd = Db_qry_insert.new_().BaseTable_(tblName);
Db_qry_insert cmd = new Db_qry_insert(tblName);
cmd.Arg_("id", idVal);
engine.Execute(cmd);
engine.Exec_as_obj(cmd);
}
public void tst_FilesCount(TdbEngine engine, int count) {Tfds.Eq(engine.Db().Files().Count(), count);}

View File

@@ -16,12 +16,12 @@ 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.dbs; import gplx.*;
import gplx.lists.*; /*GfoNde*/
import gplx.lists.*; import gplx.dbs.sqls.*;
class TdbInsertWkr implements Db_qryWkr {
public Object Exec(Db_engine engineObj, Db_qry cmdObj) {
TdbEngine engine = TdbEngine.cast_(engineObj); Db_qry_insert cmd = (Db_qry_insert)cmdObj;
TdbTable tbl = engine.FetchTbl(cmd.BaseTable());
TdbTable tbl = engine.FetchTbl(cmd.Base_table());
tbl.IsDirty_set(true);
return cmd.Select() == null
? InsertRowsByVals(engine, tbl, cmd)

View File

@@ -16,12 +16,12 @@ 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.dbs; import gplx.*;
import gplx.criterias.*;
import gplx.criterias.*; import gplx.dbs.sqls.*;
import gplx.lists.*; /*ComparerAble*/ import gplx.stores.*; /*GfoNdeRdr*/
class TdbSelectWkr implements Db_qryWkr {
public Object Exec(Db_engine engineObj, Db_qry cmdObj) {
TdbEngine engine = TdbEngine.cast_(engineObj); Db_qry_select cmd = (Db_qry_select)cmdObj;
if (cmd.From().Tbls().Count() > 1) throw Err_.new_key_("gplx.tdbs", "joins not supported for tdbs").Add("sql", cmd.XtoSql());
if (cmd.From().Tbls().Count() > 1) throw Err_.new_key_("gplx.tdbs", "joins not supported for tdbs").Add("sql", cmd.Xto_sql());
TdbTable tbl = engine.FetchTbl(cmd.From().BaseTable().TblName());
GfoNdeList rv = (cmd.Where() == Db_qry_.WhereAll && cmd.Limit() == Db_qry_select.Limit_disabled) ? rv = tbl.Rows() : FilterRecords(tbl, cmd.Where().Crt(), cmd.Limit());