mirror of
https://github.com/gnosygnu/xowa.git
synced 2024-10-27 20:34:16 +00:00
Refactor: Remove whitespace after final
and remove @gplx.Virtual
This commit is contained in:
parent
b0082fd231
commit
231e10bc19
@ -181,7 +181,7 @@ class GfoMsg_base implements GfoMsg {
|
||||
public byte[][] ReadBryAry(String k, byte spr) {return Bry_split_.Split(ReadBry(k), spr);}
|
||||
public String[] ReadStrAryIgnore(String k, String spr, String ignore) {return String_.Split(String_.Replace(ReadStr(k), ignore, ""), spr);}
|
||||
public Object ReadValAt(int i) {return Args_getAt(i).Val();}
|
||||
@gplx.Virtual protected Object ReadOr(String k, Object defaultOr) {
|
||||
protected Object ReadOr(String k, Object defaultOr) {
|
||||
if (args == null) return Nil; // WORKAROUND.gfui: args null for DataBndr_whenEvt_execCmd
|
||||
if (!String_.Eq(k, "")) {
|
||||
for (int i = 0; i < args.Count(); i++) {
|
||||
|
@ -64,12 +64,12 @@ public abstract class List_adp_base implements List_adp, Gfo_invk {
|
||||
if (Object_.Eq(list[i], o)) return i;
|
||||
return List_adp_.Not_found;
|
||||
}
|
||||
@gplx.Virtual public void Clear() {
|
||||
public void Clear() {
|
||||
for (int i = 0; i < count; i++)
|
||||
list[i] = null;
|
||||
count = 0;
|
||||
}
|
||||
@gplx.Virtual public void Del_at(int index) {if (index >= count || index < 0) throw Err_.new_missing_idx(index, count);
|
||||
public void Del_at(int index) {if (index >= count || index < 0) throw Err_.new_missing_idx(index, count);
|
||||
Collapse(index);
|
||||
count--;
|
||||
}
|
||||
@ -102,7 +102,7 @@ public abstract class List_adp_base implements List_adp, Gfo_invk {
|
||||
list[rhs] = temp;
|
||||
}
|
||||
}
|
||||
@gplx.Virtual public void Shuffle() {// REF: Fisher-Yates shuffle
|
||||
public void Shuffle() {// REF: Fisher-Yates shuffle
|
||||
RandomAdp random = RandomAdp_.new_();
|
||||
for (int i = count; i > 1; i--) {
|
||||
int rndIdx = random.Next(i);
|
||||
|
@ -43,7 +43,7 @@ public class Ordered_hash_base extends Hash_adp_base implements Ordered_hash, Gf
|
||||
this.Clear();
|
||||
return rv;
|
||||
}
|
||||
@gplx.Virtual public void Sort() {if (locked) Lock_fail(); ordered.Sort();} // NOTE: uses item's .compareTo
|
||||
public void Sort() {if (locked) Lock_fail(); ordered.Sort();} // NOTE: uses item's .compareTo
|
||||
public void Sort_by(ComparerAble comparer) {if (locked) Lock_fail(); ordered.Sort_by(comparer);}
|
||||
@Override public java.util.Iterator iterator() {return ordered.iterator();}
|
||||
public void Add_at(int i, Object key, Object val) {
|
||||
|
@ -104,7 +104,7 @@ public class Bry_rdr_old {
|
||||
byte[] double_bry = Read_bry_to(to_char);
|
||||
return Double_.parse(String_.new_a7(double_bry)); // double will never have utf8
|
||||
}
|
||||
@gplx.Virtual public Bry_rdr_old Skip_ws() {
|
||||
public Bry_rdr_old Skip_ws() {
|
||||
while (pos < src_len) {
|
||||
switch (src[pos]) {
|
||||
case Byte_ascii.Tab: case Byte_ascii.Nl: case Byte_ascii.Cr: case Byte_ascii.Space:
|
||||
|
@ -63,7 +63,7 @@ public class Process_adp implements Gfo_invk, Rls_able {
|
||||
public int Thread_timeout() {return thread_timeout;} public Process_adp Thread_timeout_seconds_(int v) {thread_timeout = v * 1000; return this;} int thread_timeout = 0;
|
||||
public int Thread_interval() {return thread_interval;} public Process_adp Thread_interval_(int v) {thread_interval = v; return this;} int thread_interval = 20;
|
||||
public String Thread_kill_name() {return thread_kill_name;} public Process_adp Thread_kill_name_(String v) {thread_kill_name = v; return this;} private String thread_kill_name = "";
|
||||
public Io_url Tmp_dir() {return tmp_dir;} @gplx.Virtual public Process_adp Tmp_dir_(Io_url v) {tmp_dir = v; return this;} Io_url tmp_dir;
|
||||
public Io_url Tmp_dir() {return tmp_dir;} public Process_adp Tmp_dir_(Io_url v) {tmp_dir = v; return this;} Io_url tmp_dir;
|
||||
private Process_adp WhenBgn_run() {return Invk_cmds(whenBgnList);} List_adp whenBgnList = List_adp_.New();
|
||||
public Process_adp WhenEnd_add(Gfo_invk_cmd cmd) {whenEndList.Add(cmd); return this;}
|
||||
public Process_adp WhenEnd_del(Gfo_invk_cmd cmd) {whenEndList.Del(cmd); return this;}
|
||||
|
@ -19,5 +19,5 @@ public class IoEngine_xrg_fil_affects1_base {
|
||||
public IoEngine_xrg_fil_affects1_base Url_(Io_url v) {url = v; return this;}
|
||||
public boolean MissingFails() {return missingFails;} public void MissingFails_set(boolean v) {missingFails = v;} private boolean missingFails = true;
|
||||
public boolean ReadOnlyFails() {return readOnlyFails;} public void ReadOnlyFails_set(boolean v) {readOnlyFails = v;} private boolean readOnlyFails = true;
|
||||
@gplx.Virtual public void Exec() {}
|
||||
public void Exec() {}
|
||||
}
|
||||
|
@ -21,7 +21,7 @@ public class IoItmFil extends IoItm_base {
|
||||
public DateAdp ModifiedTime() {return modifiedTime;}
|
||||
public IoItmFil ModifiedTime_(DateAdp val) {modifiedTime = val; return this;} DateAdp modifiedTime;
|
||||
public IoItmFil ModifiedTime_(String val) {return ModifiedTime_(DateAdp_.parse_gplx(val));}
|
||||
@gplx.Virtual public long Size() {return size;} public IoItmFil Size_(long val) {size = val; return this;} private long size;
|
||||
public long Size() {return size;} public IoItmFil Size_(long val) {size = val; return this;} private long size;
|
||||
public IoItmAttrib Attrib() {return attrib;} public IoItmFil Attrib_(IoItmAttrib val) {attrib = val; return this;} IoItmAttrib attrib = IoItmAttrib.normal_();
|
||||
public boolean ReadOnly() {return attrib.ReadOnly();} public IoItmFil ReadOnly_(boolean val) {attrib.ReadOnly_(val); return this;}
|
||||
@gplx.New public IoItmFil XtnProps_set(String key, Object val) {return (IoItmFil)super.XtnProps_set(key, val);}
|
||||
|
@ -40,7 +40,7 @@ public abstract class IoItm_base implements Gfo_invk, CompareAble {
|
||||
}
|
||||
public int compareTo(Object comp) {return url.compareTo(((IoItm_base)comp).url);} // NOTE: needed for comic importer (sort done on IoItmHash which contains IoItm_base)
|
||||
// public Object Data_get(String name) {return Gfo_invk_.Invk_by_key(this, name);}
|
||||
@gplx.Virtual public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {
|
||||
public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {
|
||||
if (ctx.Match(k, IoItm_base_.Prop_Type)) return this.TypeId();
|
||||
else if (ctx.Match(k, IoItm_base_.Prop_Path)) return this.Url();
|
||||
else if (ctx.Match(k, IoItm_base_.Prop_Title)) return this.Url().NameOnly(); // needed for gfio script criteria;
|
||||
|
@ -13,8 +13,10 @@ The terms of each license can be found in the source code repository:
|
||||
GPLv3 License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-GPLv3.txt
|
||||
Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
|
||||
*/
|
||||
package gplx.core.ios; import gplx.*; import gplx.core.*;
|
||||
import gplx.core.envs.*;
|
||||
package gplx.core.ios; import gplx.Byte_ascii;
|
||||
import gplx.Char_;
|
||||
import gplx.String_;
|
||||
import gplx.core.envs.Op_sys;
|
||||
public interface IoUrlInfo {
|
||||
String Key();
|
||||
byte DirSpr_byte();
|
||||
@ -61,7 +63,7 @@ abstract class IoUrlInfo_base implements IoUrlInfo {
|
||||
public abstract String EngineKey();
|
||||
public boolean IsDir(String raw) {return String_.Has_at_end(raw, DirSpr());}
|
||||
public abstract String XtoRootName(String raw, int rawLen);
|
||||
@gplx.Virtual public String Xto_api(String raw) {
|
||||
public String Xto_api(String raw) {
|
||||
return IsDir(raw)
|
||||
? String_.DelEnd(raw, IoUrlInfo_base.DirSprLen) // if Dir, remove trailing DirSpr, since most api will not expect it (ex: .Delete will malfunction)
|
||||
: raw;
|
||||
@ -72,7 +74,7 @@ abstract class IoUrlInfo_base implements IoUrlInfo {
|
||||
if (ownerDirSprPos <= OwnerDirPos_hasNoOwner) return IoUrlInfo_base.NullString; // no ownerDir found; return Null; only (a) NullUrls (b) RootUrls ("C:\") (c) relative ("fil.txt")
|
||||
return String_.MidByLen(raw, 0, ownerDirSprPos + 1); // +1 to include backslash
|
||||
}
|
||||
@gplx.Virtual public String OwnerRoot(String raw) {
|
||||
public String OwnerRoot(String raw) {
|
||||
String temp = raw, rv = raw;
|
||||
while (true) {
|
||||
temp = OwnerDir(temp);
|
||||
|
@ -19,7 +19,7 @@ import java.io.FileNotFoundException;
|
||||
import java.io.IOException;
|
||||
import java.io.RandomAccessFile;
|
||||
public class IoStream_base implements IoStream {
|
||||
@gplx.Virtual public Io_url Url() {return url;} Io_url url = Io_url_.Empty;
|
||||
public Io_url Url() {return url;} Io_url url = Io_url_.Empty;
|
||||
public void Transfer(IoStream trg, int bufferLength) {
|
||||
byte[] buffer = new byte[bufferLength];
|
||||
int read = -1;
|
||||
@ -31,11 +31,11 @@ public class IoStream_base implements IoStream {
|
||||
}
|
||||
public int ReadAry(byte[] ary) {return this.Read(ary, 0, ary.length);}
|
||||
public void WriteAry(byte[] ary) {this.Write(ary, 0, ary.length);}
|
||||
@gplx.Virtual public Object UnderRdr() {return under;}
|
||||
@gplx.Virtual public void UnderRdr_(Object v) {this.under = (RandomAccessFile)v;}
|
||||
@gplx.Virtual public long Pos() {return pos;} long pos;
|
||||
@gplx.Virtual public long Len() {return length;} long length;
|
||||
@gplx.Virtual public int Read(byte[] array, int offset, int count) {
|
||||
public Object UnderRdr() {return under;}
|
||||
public void UnderRdr_(Object v) {this.under = (RandomAccessFile)v;}
|
||||
public long Pos() {return pos;} long pos;
|
||||
public long Len() {return length;} long length;
|
||||
public int Read(byte[] array, int offset, int count) {
|
||||
try {
|
||||
int rv = under.read(array, offset, count);
|
||||
return rv == -1 ? 0 : rv; // NOTE: fis returns -1 if nothing read; .NET returned 0; Hash will fail if -1 returned (will try to create array of 0 length)
|
||||
@ -50,7 +50,7 @@ public class IoStream_base implements IoStream {
|
||||
}
|
||||
catch (IOException e) {throw Err_.new_exc(e, "io", "seek failed", "url", url);}
|
||||
}
|
||||
@gplx.Virtual public void Write(byte[] array, int offset, int count) {bfr.Add_mid(array, offset, offset + count); this.Flush();} Bry_bfr bfr = Bry_bfr_.Reset(16);
|
||||
public void Write(byte[] array, int offset, int count) {bfr.Add_mid(array, offset, offset + count); this.Flush();} Bry_bfr bfr = Bry_bfr_.Reset(16);
|
||||
public void Write_and_flush(byte[] bry, int bgn, int end) {
|
||||
// ConsoleAdp._.WriteLine(bry.length +" " + bgn + " " + end);
|
||||
Flush();// flush anything already in buffer
|
||||
@ -85,7 +85,7 @@ public class IoStream_base implements IoStream {
|
||||
// }
|
||||
// }
|
||||
}
|
||||
@gplx.Virtual public void Flush() {
|
||||
public void Flush() {
|
||||
try {
|
||||
if (mode_is_append) under.seek(under.length());
|
||||
// else under.seek(0);
|
||||
@ -95,7 +95,7 @@ public class IoStream_base implements IoStream {
|
||||
catch (IOException e) {throw Err_.new_exc(e, "io", "write failed", "url", url);}
|
||||
bfr.Clear();
|
||||
}
|
||||
@gplx.Virtual public void Rls() {
|
||||
public void Rls() {
|
||||
IoEngine_system.Closeable_close(under, url, true);
|
||||
}
|
||||
RandomAccessFile under; boolean mode_is_append; byte mode;
|
||||
|
@ -35,7 +35,7 @@ public abstract class Hash_adp_base implements Hash_adp {
|
||||
Add(key, val);
|
||||
return true;
|
||||
}
|
||||
@gplx.Virtual public void Del(Object key) {Del_base(key);}
|
||||
public void Del(Object key) {Del_base(key);}
|
||||
protected Object Get_by_or_fail_base(Object key) {
|
||||
if (key == null) throw Err_.new_wo_type("key cannot be null");
|
||||
if (!Has_base(key)) throw Err_.new_wo_type("key not found", "key", key);
|
||||
@ -44,12 +44,12 @@ public abstract class Hash_adp_base implements Hash_adp {
|
||||
|
||||
// private final java.util.HashMap<Object, Object> hash = new java.util.HashMap<Object, Object>();
|
||||
private final java.util.Hashtable hash = new java.util.Hashtable();
|
||||
@gplx.Virtual public int Len() {return hash.size();}
|
||||
@gplx.Virtual public int Count() {return hash.size();}
|
||||
@gplx.Virtual public void Clear() {hash.clear();}
|
||||
@gplx.Virtual protected void Add_base(Object key, Object val) {hash.put(key, val);}
|
||||
@gplx.Virtual protected void Del_base(Object key) {hash.remove(key);}
|
||||
@gplx.Virtual protected boolean Has_base(Object key) {return hash.containsKey(key);}
|
||||
@gplx.Virtual protected Object Fetch_base(Object key) {return hash.get(key);}
|
||||
@gplx.Virtual public java.util.Iterator iterator() {return hash.values().iterator();}
|
||||
public int Len() {return hash.size();}
|
||||
public int Count() {return hash.size();}
|
||||
public void Clear() {hash.clear();}
|
||||
protected void Add_base(Object key, Object val) {hash.put(key, val);}
|
||||
protected void Del_base(Object key) {hash.remove(key);}
|
||||
protected boolean Has_base(Object key) {return hash.containsKey(key);}
|
||||
protected Object Fetch_base(Object key) {return hash.get(key);}
|
||||
public java.util.Iterator iterator() {return hash.values().iterator();}
|
||||
}
|
||||
|
@ -26,7 +26,7 @@ public abstract class DataRdr_base implements SrlMgr {
|
||||
public abstract int FieldCount();
|
||||
public abstract String KeyAt(int i);
|
||||
public abstract Object ReadAt(int i);
|
||||
@gplx.Virtual public Keyval KeyValAt(int idx) {return Keyval_.new_(this.KeyAt(idx), ReadAt(idx));}
|
||||
public Keyval KeyValAt(int idx) {return Keyval_.new_(this.KeyAt(idx), ReadAt(idx));}
|
||||
public String ReadStr(String key) {
|
||||
Object val = Read(key);
|
||||
try {return (String)val;}
|
||||
@ -43,7 +43,7 @@ public abstract class DataRdr_base implements SrlMgr {
|
||||
try {return Bry_.new_u8((String)val);}
|
||||
catch (Exception exc) {Err_dataRdr_ReadFailed_useOr(exc, byte[].class, key, val, or); return or;}
|
||||
}
|
||||
@gplx.Virtual public void SrlList(String key, List_adp list, SrlObj proto, String itmKey) {
|
||||
public void SrlList(String key, List_adp list, SrlObj proto, String itmKey) {
|
||||
list.Clear();
|
||||
DataRdr subRdr = this.Subs_byName_moveFirst(key); // collection node
|
||||
subRdr = subRdr.Subs();
|
||||
@ -53,7 +53,7 @@ public abstract class DataRdr_base implements SrlMgr {
|
||||
list.Add(itm);
|
||||
}
|
||||
}
|
||||
@gplx.Virtual public Object StoreRoot(SrlObj root, String key) {
|
||||
public Object StoreRoot(SrlObj root, String key) {
|
||||
SrlObj clone = root.SrlObj_New(null);
|
||||
clone.SrlObj_Srl(this);
|
||||
return clone;
|
||||
@ -75,12 +75,12 @@ public abstract class DataRdr_base implements SrlMgr {
|
||||
try {return (parse) ? Long_.parse(String_.as_(val)) : Long_.cast(val);}
|
||||
catch (Exception exc) {Err_dataRdr_ReadFailed_useOr(exc, long.class, key, val, or); return or;}
|
||||
}
|
||||
@gplx.Virtual public boolean ReadBool(String key) {
|
||||
public boolean ReadBool(String key) {
|
||||
Object val = Read(key);
|
||||
try {return (parse) ? Bool_.Cast(BoolClassXtn.Instance.ParseOrNull(String_.as_(val))) : Bool_.Cast(val);}
|
||||
catch (Exception exc) {throw Err_dataRdr_ReadFailed_err(boolean.class, key, val, exc);}
|
||||
}
|
||||
@gplx.Virtual public boolean ReadBoolOr(String key, boolean or) {
|
||||
public boolean ReadBoolOr(String key, boolean or) {
|
||||
Object val = Read(key); if (val == null) return or;
|
||||
try {return (parse) ? Bool_.Parse(String_.as_(val)) : Bool_.Cast(val);}
|
||||
catch (Exception exc) {Err_dataRdr_ReadFailed_useOr(exc, boolean.class, key, val, or); return or;}
|
||||
@ -110,27 +110,27 @@ public abstract class DataRdr_base implements SrlMgr {
|
||||
try {return (parse) ? Double_.parse(String_.as_(val)) : Double_.cast(val);}
|
||||
catch (Exception exc) {Err_dataRdr_ReadFailed_useOr(exc, double.class, key, val, or); return or;}
|
||||
}
|
||||
@gplx.Virtual public byte ReadByte(String key) {
|
||||
public byte ReadByte(String key) {
|
||||
Object val = Read(key);
|
||||
try {return (parse) ? Byte_.Parse(String_.as_(val)) : Byte_.Cast(val);}
|
||||
catch (Exception exc) {throw Err_dataRdr_ReadFailed_err(byte.class, key, val, exc);}
|
||||
}
|
||||
@gplx.Virtual public byte ReadByteOr(String key, byte or) {
|
||||
public byte ReadByteOr(String key, byte or) {
|
||||
Object val = Read(key); if (val == null) return or;
|
||||
try {return (parse) ? Byte_.Parse(String_.as_(val)) : Byte_.Cast(val);}
|
||||
catch (Exception exc) {Err_dataRdr_ReadFailed_useOr(exc, byte.class, key, val, or); return or;}
|
||||
}
|
||||
@gplx.Virtual public DateAdp ReadDate(String key) {
|
||||
public DateAdp ReadDate(String key) {
|
||||
Object val = Read(key);
|
||||
try {return (parse) ? DateAdp_.parse_gplx(String_.as_(val)) : (DateAdp)val;}
|
||||
catch (Exception exc) {throw Err_dataRdr_ReadFailed_err(DateAdp.class, key, val, exc);}
|
||||
}
|
||||
@gplx.Virtual public DateAdp ReadDateOr(String key, DateAdp or) {
|
||||
public DateAdp ReadDateOr(String key, DateAdp or) {
|
||||
Object val = Read(key); if (val == null) return or;
|
||||
try {return (parse) ? DateAdp_.parse_gplx(String_.as_(val)) : (DateAdp)val;}
|
||||
catch (Exception exc) {throw Err_dataRdr_ReadFailed_err(DateAdp.class, key, val, exc);}
|
||||
}
|
||||
@gplx.Virtual public Decimal_adp ReadDecimal(String key) {
|
||||
public Decimal_adp ReadDecimal(String key) {
|
||||
Object val = Read(key);
|
||||
try {
|
||||
if (parse) return Decimal_adp_.parse(String_.as_(val));
|
||||
@ -141,7 +141,7 @@ public abstract class DataRdr_base implements SrlMgr {
|
||||
}
|
||||
catch (Exception exc) {throw Err_dataRdr_ReadFailed_err(Decimal_adp.class, key, val, exc);}
|
||||
}
|
||||
@gplx.Virtual public Decimal_adp ReadDecimalOr(String key, Decimal_adp or) {
|
||||
public Decimal_adp ReadDecimalOr(String key, Decimal_adp or) {
|
||||
Object val = Read(key); if (val == null) return or;
|
||||
try {
|
||||
if (parse) return Decimal_adp_.parse(String_.as_(val));
|
||||
|
@ -15,12 +15,12 @@ Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
|
||||
*/
|
||||
package gplx.core.stores; import gplx.*; import gplx.core.*;
|
||||
public abstract class DataWtr_base implements SrlMgr {
|
||||
@gplx.Virtual public Hash_adp EnvVars() {return envVars;} Hash_adp envVars = Hash_adp_.New();
|
||||
public Hash_adp EnvVars() {return envVars;} Hash_adp envVars = Hash_adp_.New();
|
||||
public boolean Type_rdr() {return false;}
|
||||
public abstract void WriteData(String key, Object o);
|
||||
public abstract void WriteNodeBgn(String nodeName);
|
||||
public abstract void WriteNodeEnd();
|
||||
@gplx.Virtual public void SrlList(String key, List_adp list, SrlObj proto, String itmKey) {
|
||||
public void SrlList(String key, List_adp list, SrlObj proto, String itmKey) {
|
||||
this.WriteNodeBgn(key);
|
||||
for (Object itmObj : list) {
|
||||
SrlObj itm = (SrlObj)itmObj;
|
||||
@ -30,7 +30,7 @@ public abstract class DataWtr_base implements SrlMgr {
|
||||
}
|
||||
this.WriteNodeEnd();
|
||||
}
|
||||
@gplx.Virtual public Object StoreRoot(SrlObj root, String key) {
|
||||
public Object StoreRoot(SrlObj root, String key) {
|
||||
this.WriteNodeBgn(key);
|
||||
root.SrlObj_Srl(this);
|
||||
this.WriteNodeEnd();
|
||||
|
@ -17,10 +17,10 @@ package gplx.core.type_xtns; import gplx.*; import gplx.core.*;
|
||||
public abstract class ClassXtn_base {
|
||||
public abstract Class<?> UnderClass();
|
||||
public abstract Object ParseOrNull(String raw);
|
||||
@gplx.Virtual public Object XtoDb(Object obj) {return obj;}
|
||||
@gplx.Virtual public String XtoUi(Object obj, String fmt) {return Object_.Xto_str_strict_or_null_mark(obj);}
|
||||
@gplx.Virtual public boolean MatchesClass(Object obj) {if (obj == null) throw Err_.new_null();
|
||||
public Object XtoDb(Object obj) {return obj;}
|
||||
public String XtoUi(Object obj, String fmt) {return Object_.Xto_str_strict_or_null_mark(obj);}
|
||||
public boolean MatchesClass(Object obj) {if (obj == null) throw Err_.new_null();
|
||||
return Type_.Eq_by_obj(obj, UnderClass());
|
||||
}
|
||||
@gplx.Virtual public int compareTo(Object lhs, Object rhs) {return CompareAble_.Compare_obj(lhs, rhs);}
|
||||
public int compareTo(Object lhs, Object rhs) {return CompareAble_.Compare_obj(lhs, rhs);}
|
||||
}
|
||||
|
@ -23,7 +23,7 @@ public abstract class IoEngine_dir_basic_base_tst {
|
||||
} protected IoEngine engine; @gplx.Internal protected IoEngineFxt fx; protected Io_url fil, root;
|
||||
protected abstract IoEngine engine_();
|
||||
protected abstract void setup_hook();
|
||||
@Test @gplx.Virtual public void CreateDir() {
|
||||
@Test public void CreateDir() {
|
||||
fx.tst_ExistsPaths(false, root);
|
||||
|
||||
engine.CreateDir(root);
|
||||
@ -51,7 +51,7 @@ public abstract class IoEngine_dir_basic_base_tst {
|
||||
@Test public void DeleteDir_missing_pass() {
|
||||
engine.DeleteDir(root);
|
||||
}
|
||||
@Test @gplx.Virtual public void ScanDir() {
|
||||
@Test public void ScanDir() {
|
||||
Io_url fil = root.GenSubFil("fil1.txt"); fx.run_SaveFilText(fil, "test");
|
||||
Io_url dir1 = root.GenSubDir_nest("dir1"); engine.CreateDir(dir1);
|
||||
Io_url dir1_1 = dir1.GenSubDir_nest("dir1_1"); engine.CreateDir(dir1_1); // NOTE: QueryDir should not recurse by default; dir1_1 should not be returned below
|
||||
@ -66,7 +66,7 @@ public abstract class IoEngine_dir_basic_base_tst {
|
||||
engine.MoveDir(src, trg);
|
||||
fx.tst_ExistsPaths(false, src); fx.tst_ExistsPaths(true, trg);
|
||||
}
|
||||
@Test @gplx.Virtual public void CopyDir() {
|
||||
@Test public void CopyDir() {
|
||||
Io_url src = root.GenSubDir_nest("src"), trg = root.GenSubDir_nest("trg");
|
||||
engine.CreateDir(src);
|
||||
fx.tst_ExistsPaths(true, src); fx.tst_ExistsPaths(false, trg);
|
||||
|
@ -25,26 +25,26 @@ public abstract class IoEngine_dir_deep_base_tst {
|
||||
} protected IoEngine engine; protected Io_url fil, root; @gplx.Internal protected IoEngineFxt fx;
|
||||
protected abstract IoEngine engine_();
|
||||
protected abstract void setup_hook();
|
||||
@Test @gplx.Virtual public void SearchDir() {
|
||||
@Test public void SearchDir() {
|
||||
Io_url[] expd = paths_(src_dir0a, src_fil0a, src_dir0a_dir0a, src_dir0a_fil0a);
|
||||
Io_url[] actl = IoEngine_xrg_queryDir.new_(src).Recur_().DirInclude_().ExecAsUrlAry();
|
||||
Tfds.Eq_ary(expd, actl);
|
||||
}
|
||||
@Test @gplx.Virtual public void MoveDirDeep() {
|
||||
@Test public void MoveDirDeep() {
|
||||
fx.tst_ExistsPaths(true, srcTree); fx.tst_ExistsPaths(false, trgTree);
|
||||
|
||||
engine.MoveDirDeep(IoEngine_xrg_xferDir.move_(src, trg).Recur_());
|
||||
fx.tst_ExistsPaths(false, srcTree);
|
||||
fx.tst_ExistsPaths(true, trgTree);
|
||||
}
|
||||
@Test @gplx.Virtual public void CopyDir() {
|
||||
@Test public void CopyDir() {
|
||||
fx.tst_ExistsPaths(true, srcTree); fx.tst_ExistsPaths(false, trgTree);
|
||||
|
||||
engine.CopyDir(src, trg);
|
||||
fx.tst_ExistsPaths(true, srcTree);
|
||||
fx.tst_ExistsPaths(true, trgTree);
|
||||
}
|
||||
@Test @gplx.Virtual public void DeleteDir() {
|
||||
@Test public void DeleteDir() {
|
||||
fx.tst_ExistsPaths(true, srcTree);
|
||||
|
||||
engine.DeleteDirDeep(IoEngine_xrg_deleteDir.new_(src).Recur_());
|
||||
|
@ -23,39 +23,39 @@ public abstract class IoEngine_fil_basic_base_tst {
|
||||
} protected IoEngine engine; protected IoEngineFxt fx; protected Io_url fil, root;
|
||||
protected abstract IoEngine engine_();
|
||||
protected abstract void setup_hook();
|
||||
@Test @gplx.Virtual public void ExistsFil() {
|
||||
@Test public void ExistsFil() {
|
||||
fx.tst_ExistsPaths(false, fil);
|
||||
}
|
||||
@Test @gplx.Virtual public void ExistsFil_deep() {
|
||||
@Test public void ExistsFil_deep() {
|
||||
fx.tst_ExistsPaths(false, root.GenSubFil_nest("dir1", "dir2", "fil1.txt"));
|
||||
}
|
||||
@Test @gplx.Virtual public void SaveFilStr() {
|
||||
@Test public void SaveFilStr() {
|
||||
fx.tst_ExistsPaths(false, fil, fil.OwnerDir());
|
||||
|
||||
fx.run_SaveFilText(fil, "text");
|
||||
fx.tst_ExistsPaths(true, fil, fil.OwnerDir());
|
||||
}
|
||||
@Test @gplx.Virtual public void SaveFilText_autoCreateOwnerDir() {
|
||||
@Test public void SaveFilText_autoCreateOwnerDir() {
|
||||
fil = fil.OwnerDir().GenSubFil_nest("sub1", "fil1.txt");
|
||||
fx.tst_ExistsPaths(false, fil, fil.OwnerDir());
|
||||
|
||||
fx.run_SaveFilText(fil, "text");
|
||||
fx.tst_ExistsPaths(true, fil, fil.OwnerDir());
|
||||
}
|
||||
@Test @gplx.Virtual public void SaveFilText_overwrite() {
|
||||
@Test public void SaveFilText_overwrite() {
|
||||
fx.run_SaveFilText(fil, "text");
|
||||
fx.tst_ExistsPaths(true, fil);
|
||||
|
||||
fx.run_SaveFilText(fil, "changed");
|
||||
fx.tst_LoadFilStr(fil, "changed");
|
||||
}
|
||||
@Test @gplx.Virtual public void SaveFilText_append() {
|
||||
@Test public void SaveFilText_append() {
|
||||
fx.run_SaveFilText(fil, "text");
|
||||
|
||||
engine.SaveFilText_api(IoEngine_xrg_saveFilStr.new_(fil, "appended").Append_());
|
||||
fx.tst_LoadFilStr(fil, "text" + "appended");
|
||||
}
|
||||
@Test @gplx.Virtual public void SaveFilText_caseInsensitive() {
|
||||
@Test public void SaveFilText_caseInsensitive() {
|
||||
if (root.Info().CaseSensitive()) return;
|
||||
Io_url lcase = root.GenSubFil_nest("dir", "fil.txt");
|
||||
Io_url ucase = root.GenSubFil_nest("DIR", "FIL.TXT");
|
||||
@ -65,7 +65,7 @@ public abstract class IoEngine_fil_basic_base_tst {
|
||||
fx.tst_LoadFilStr(lcase, "text");
|
||||
fx.tst_LoadFilStr(ucase, "text");
|
||||
}
|
||||
@Test @gplx.Virtual public void SaveFilText_readOnlyFails() {
|
||||
@Test public void SaveFilText_readOnlyFails() {
|
||||
fx.run_SaveFilText(fil, "text");
|
||||
engine.UpdateFilAttrib(fil, IoItmAttrib.readOnly_());
|
||||
|
||||
@ -77,34 +77,34 @@ public abstract class IoEngine_fil_basic_base_tst {
|
||||
}
|
||||
Tfds.Fail_expdError();
|
||||
}
|
||||
@Test @gplx.Virtual public void LoadFilStr() {
|
||||
@Test public void LoadFilStr() {
|
||||
fx.run_SaveFilText(fil, "text");
|
||||
fx.tst_LoadFilStr(fil, "text");
|
||||
}
|
||||
@Test @gplx.Virtual public void LoadFilStr_missingIgnored() {
|
||||
@Test public void LoadFilStr_missingIgnored() {
|
||||
Tfds.Eq("", engine.LoadFilStr(IoEngine_xrg_loadFilStr.new_(fil).MissingIgnored_()));
|
||||
}
|
||||
@Test @gplx.Virtual public void UpdateFilAttrib() {
|
||||
@Test public void UpdateFilAttrib() {
|
||||
fx.run_SaveFilText(fil, "text");
|
||||
fx.tst_QueryFilReadOnly(fil, false);
|
||||
|
||||
engine.UpdateFilAttrib(fil, IoItmAttrib.readOnly_());
|
||||
fx.tst_QueryFilReadOnly(fil, true);
|
||||
}
|
||||
@Test @gplx.Virtual public void DeleteFil() {
|
||||
@Test public void DeleteFil() {
|
||||
fx.run_SaveFilText(fil, "text");
|
||||
fx.tst_ExistsPaths(true, fil);
|
||||
|
||||
engine.DeleteFil_api(IoEngine_xrg_deleteFil.new_(fil));
|
||||
fx.tst_ExistsPaths(false, fil);
|
||||
}
|
||||
@Test @gplx.Virtual public void DeleteFil_missing_pass() {
|
||||
@Test public void DeleteFil_missing_pass() {
|
||||
fil = root.GenSubFil("fileThatDoesntExist.txt");
|
||||
|
||||
engine.DeleteFil_api(IoEngine_xrg_deleteFil.new_(fil).MissingFails_off());
|
||||
fx.tst_ExistsPaths(false, fil);
|
||||
}
|
||||
@Test @gplx.Virtual public void DeleteFil_readOnly_fail() {
|
||||
@Test public void DeleteFil_readOnly_fail() {
|
||||
fx.run_SaveFilText(fil, "text");
|
||||
|
||||
engine.UpdateFilAttrib(fil, IoItmAttrib.readOnly_());
|
||||
@ -115,26 +115,26 @@ public abstract class IoEngine_fil_basic_base_tst {
|
||||
}
|
||||
Tfds.Fail_expdError();
|
||||
}
|
||||
@Test @gplx.Virtual public void DeleteFil_readOnly_pass() {
|
||||
@Test public void DeleteFil_readOnly_pass() {
|
||||
fx.run_SaveFilText(fil, "text");
|
||||
engine.UpdateFilAttrib(fil, IoItmAttrib.readOnly_());
|
||||
|
||||
engine.DeleteFil_api(IoEngine_xrg_deleteFil.new_(fil).ReadOnlyFails_off());
|
||||
fx.tst_ExistsPaths(false, fil);
|
||||
}
|
||||
@Test @gplx.Virtual public void QueryFil_size() {
|
||||
@Test public void QueryFil_size() {
|
||||
fx.run_SaveFilText(fil, "text");
|
||||
|
||||
fx.tst_QueryFil_size(fil, String_.Len("text"));
|
||||
}
|
||||
@Test @gplx.Virtual public void UpdateFilModifiedTime() {
|
||||
@Test public void UpdateFilModifiedTime() {
|
||||
fx.run_SaveFilText(fil, "text");
|
||||
|
||||
DateAdp time = Datetime_now.Dflt_add_min_(10);
|
||||
engine.UpdateFilModifiedTime(fil, time);
|
||||
fx.tst_QueryFil_modifiedTime(fil, time);
|
||||
}
|
||||
@Test @gplx.Virtual public void OpenStreamRead() {
|
||||
@Test public void OpenStreamRead() {
|
||||
fx.run_SaveFilText(fil, "text");
|
||||
|
||||
int textLen = String_.Len("text");
|
||||
@ -148,7 +148,7 @@ public abstract class IoEngine_fil_basic_base_tst {
|
||||
String actl = String_.new_u8(buffer);
|
||||
Tfds.Eq("text", actl);
|
||||
}
|
||||
@Test @gplx.Virtual public void OpenStreamWrite() {
|
||||
@Test public void OpenStreamWrite() {
|
||||
IoStream stream = IoEngine_xrg_openWrite.new_(fil).Exec();
|
||||
byte[] buffer = Bry_.new_u8("text");
|
||||
int textLen = String_.Len("text");
|
||||
|
@ -27,7 +27,7 @@ public class IoEngine_fil_basic_system_tst extends IoEngine_fil_basic_base_tst {
|
||||
fx.tst_ExistsPaths(true, fil);
|
||||
fx.tst_ExistsPaths(true, fil.OwnerDir().GenSubFil("FIL.txt"));
|
||||
}
|
||||
@Test @gplx.Virtual public void RecycleFil() {
|
||||
@Test public void RecycleFil() {
|
||||
fx.run_SaveFilText(fil, "text");
|
||||
fx.tst_ExistsPaths(true, fil);
|
||||
|
||||
|
@ -26,7 +26,7 @@ public abstract class IoEngine_fil_xfer_base_tst {
|
||||
protected abstract IoEngine engine_();
|
||||
protected abstract void setup_hook();
|
||||
protected abstract Io_url AltRoot();
|
||||
@Test @gplx.Virtual public void CopyFil() {
|
||||
@Test public void CopyFil() {
|
||||
fx.run_SaveFilText(src, "src"); fx.run_UpdateFilModifiedTime(src, srcModifiedTime);
|
||||
fx.tst_ExistsPaths(true, src);
|
||||
fx.tst_ExistsPaths(false, trg);
|
||||
@ -36,7 +36,7 @@ public abstract class IoEngine_fil_xfer_base_tst {
|
||||
fx.tst_LoadFilStr(trg, "src");
|
||||
fx.tst_QueryFil_modifiedTime(trg, srcModifiedTime);
|
||||
}
|
||||
@Test @gplx.Virtual public void CopyFil_overwrite_fail() {
|
||||
@Test public void CopyFil_overwrite_fail() {
|
||||
fx.run_SaveFilText(src, "src");
|
||||
fx.run_SaveFilText(trg, "trg");
|
||||
|
||||
@ -48,7 +48,7 @@ public abstract class IoEngine_fil_xfer_base_tst {
|
||||
}
|
||||
Tfds.Fail_expdError();
|
||||
}
|
||||
@Test @gplx.Virtual public void CopyFil_overwrite_pass() {
|
||||
@Test public void CopyFil_overwrite_pass() {
|
||||
fx.run_SaveFilText(src, "src"); fx.run_UpdateFilModifiedTime(src, srcModifiedTime);
|
||||
fx.run_SaveFilText(trg, "trg"); fx.run_UpdateFilModifiedTime(trg, trgModifiedTime);
|
||||
|
||||
@ -57,7 +57,7 @@ public abstract class IoEngine_fil_xfer_base_tst {
|
||||
fx.tst_LoadFilStr(trg, "src");
|
||||
fx.tst_QueryFil_modifiedTime(trg, srcModifiedTime);
|
||||
}
|
||||
@Test @gplx.Virtual public void MoveFil() {
|
||||
@Test public void MoveFil() {
|
||||
fx.run_SaveFilText(src, "src");
|
||||
fx.tst_ExistsPaths(true, src);
|
||||
fx.tst_ExistsPaths(false, trg);
|
||||
@ -66,7 +66,7 @@ public abstract class IoEngine_fil_xfer_base_tst {
|
||||
fx.tst_ExistsPaths(false, src);
|
||||
fx.tst_ExistsPaths(true, trg);
|
||||
}
|
||||
@Test @gplx.Virtual public void MoveFil_overwrite_fail() {
|
||||
@Test public void MoveFil_overwrite_fail() {
|
||||
fx.run_SaveFilText(src, "src");
|
||||
fx.run_SaveFilText(trg, "trg");
|
||||
|
||||
@ -79,7 +79,7 @@ public abstract class IoEngine_fil_xfer_base_tst {
|
||||
}
|
||||
Tfds.Fail_expdError();
|
||||
}
|
||||
@Test @gplx.Virtual public void MoveFil_overwrite_pass() {
|
||||
@Test public void MoveFil_overwrite_pass() {
|
||||
fx.run_SaveFilText(src, "src"); fx.run_UpdateFilModifiedTime(src, srcModifiedTime);
|
||||
fx.run_SaveFilText(trg, "trg"); fx.run_UpdateFilModifiedTime(trg, trgModifiedTime);
|
||||
|
||||
@ -89,7 +89,7 @@ public abstract class IoEngine_fil_xfer_base_tst {
|
||||
fx.tst_LoadFilStr(trg, "src");
|
||||
fx.tst_QueryFil_modifiedTime(trg, srcModifiedTime);
|
||||
}
|
||||
@Test @gplx.Virtual public void MoveFil_betweenDrives() {
|
||||
@Test public void MoveFil_betweenDrives() {
|
||||
IoEngine_xrg_deleteDir.new_(AltRoot()).Recur_().ReadOnlyFails_off().Exec();
|
||||
src = root.GenSubFil_nest("dir", "fil1a.txt");
|
||||
trg = AltRoot().GenSubFil_nest("dir", "fil1b.txt");
|
||||
|
@ -42,7 +42,7 @@ class GfmlTkn_base implements GfmlTkn {
|
||||
public String Val() {return val;} private String val;
|
||||
public GfmlBldrCmd Cmd_of_Tkn() {return cmd;} GfmlBldrCmd cmd;
|
||||
public GfmlTkn[] SubTkns() {return GfmlTknAry_.Empty;}
|
||||
@gplx.Virtual public GfmlTkn MakeNew(String rawNew, String valNew) {return new GfmlTkn_base().ctor_GfmlTkn_base(tknType, rawNew, valNew, cmd);}
|
||||
public GfmlTkn MakeNew(String rawNew, String valNew) {return new GfmlTkn_base().ctor_GfmlTkn_base(tknType, rawNew, valNew, cmd);}
|
||||
@gplx.Internal protected GfmlTkn_base ctor_GfmlTkn_base(String tknType, String raw, String val, GfmlBldrCmd cmd) {this.tknType = tknType; this.raw = raw; this.val = val; this.cmd = cmd; return this;}
|
||||
}
|
||||
class GfmlTkn_valConst extends GfmlTkn_base {
|
||||
|
@ -96,7 +96,7 @@ public class Db_attach_mgr {
|
||||
}
|
||||
public Db_stmt Test__make_stmt_and_attach(Db_qry qry, gplx.dbs.sqls.itms.Sql_from_clause from_itm) { // NOTE: tries to do attach via DOM not SQL
|
||||
attach_list.Clear();
|
||||
Sql_qry_wtr sql_wtr = main_conn.Engine().Sql_wtr();
|
||||
SqlQryWtr sql_wtr = main_conn.Engine().Sql_wtr();
|
||||
List_adp from_tbls = from_itm.Tbls;
|
||||
int from_tbls_len = from_tbls.Count();
|
||||
for (int i = 0; i < from_tbls_len; ++i) {
|
||||
@ -109,7 +109,7 @@ public class Db_attach_mgr {
|
||||
else
|
||||
attach_list.Add(attach_itm);
|
||||
}
|
||||
attached_sql = sql_wtr.To_sql_str(qry, true);
|
||||
attached_sql = sql_wtr.ToSqlStr(qry, true);
|
||||
this.Attach();
|
||||
for (int i = 0; i < from_tbls_len; ++i) { // reverse blanking from above
|
||||
Sql_tbl_itm from_tbl = (Sql_tbl_itm)from_tbls.Get_at(i);
|
||||
|
@ -13,16 +13,11 @@ The terms of each license can be found in the source code repository:
|
||||
GPLv3 License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-GPLv3.txt
|
||||
Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
|
||||
*/
|
||||
package gplx.dbs; import gplx.*;
|
||||
package gplx.dbs;
|
||||
import gplx.dbs.sqls.SqlQryWtr;
|
||||
public interface Db_qry {
|
||||
int Tid();
|
||||
boolean Exec_is_rdr();
|
||||
String Base_table();
|
||||
String To_sql__exec(gplx.dbs.sqls.Sql_qry_wtr wtr);
|
||||
}
|
||||
class Db_qry__noop implements Db_qry {
|
||||
public int Tid() {return Db_qry_.Tid_noop;}
|
||||
public boolean Exec_is_rdr() {return false;}
|
||||
public String Base_table() {return "";}
|
||||
public String To_sql__exec(gplx.dbs.sqls.Sql_qry_wtr wtr) {return "";}
|
||||
String To_sql__exec(SqlQryWtr wtr);
|
||||
}
|
||||
|
@ -13,8 +13,14 @@ The terms of each license can be found in the source code repository:
|
||||
GPLv3 License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-GPLv3.txt
|
||||
Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
|
||||
*/
|
||||
package gplx.dbs; import gplx.*;
|
||||
import gplx.core.criterias.*; import gplx.dbs.qrys.*; import gplx.dbs.sqls.*; import gplx.dbs.sqls.itms.*;
|
||||
package gplx.dbs;
|
||||
import gplx.Keyval;
|
||||
import gplx.core.criterias.Criteria;
|
||||
import gplx.dbs.qrys.Db_qry__select_cmd;
|
||||
import gplx.dbs.qrys.Db_qry_delete;
|
||||
import gplx.dbs.qrys.Db_qry_insert;
|
||||
import gplx.dbs.qrys.Db_qry_update;
|
||||
import gplx.dbs.sqls.itms.Sql_join_fld;
|
||||
public class Db_qry_ {
|
||||
public static Db_qry__select_cmd select_cols_(String tbl, Criteria crt, String... cols){return select_().From_(tbl).Where_(crt).Cols_(cols);}
|
||||
public static Db_qry__select_cmd select_val_(String tbl, String col, Criteria crt) {return select_().From_(tbl).Where_(crt).Cols_(col);}
|
||||
@ -56,6 +62,5 @@ public class Db_qry_ {
|
||||
}
|
||||
|
||||
public static Db_qry as_(Object obj) {return obj instanceof Db_qry ? (Db_qry)obj : null;}
|
||||
public static final Db_qry Noop = new Db_qry__noop();
|
||||
public static final int Tid_insert = 0, Tid_delete = 1, Tid_update = 2, Tid_select = 3, Tid_sql = 4, Tid_select_in_tbl = 5, Tid_flush = 6, Tid_noop = 7, Tid_pragma = 8;
|
||||
}
|
||||
|
@ -24,21 +24,21 @@ public class Db_rdr__basic implements Db_rdr {
|
||||
try {return rdr.next();}
|
||||
catch (Exception e) {throw Err_.new_exc(e, "db", "move_next failed; check column casting error in SQL", "sql", sql);}
|
||||
}
|
||||
@gplx.Virtual public byte[] Read_bry(String k) {try {return (byte[])rdr.getObject(k);} catch (Exception e) {throw Err_.new_exc(e, "db", "read failed", "key", k, "type", Bry_.Cls_val_name);}}
|
||||
@gplx.Virtual public byte[] Read_bry_by_str(String k) {try {return Bry_.new_u8((String)rdr.getObject(k));} catch (Exception e) {throw Err_.new_exc(e, "db", "read failed", "key", k, "type", String_.Cls_val_name);}}
|
||||
@gplx.Virtual public void Save_bry_in_parts(Io_url url, String tbl, String fld, String crt_key, Object crt_val) {throw Err_.new_unimplemented();}
|
||||
@gplx.Virtual public String Read_str(String k) {try {return (String)rdr.getObject(k);} catch (Exception e) {throw Err_.new_exc(e, "db", "read failed", "key", k, "type", String_.Cls_val_name);}}
|
||||
@gplx.Virtual public DateAdp Read_date_by_str(String k) {return DateAdp_.parse_iso8561(Read_str(k));}
|
||||
@gplx.Virtual public int Read_int(String k) {try {return Int_.Cast(rdr.getObject(k));} catch (Exception e) {throw Err_.new_exc(e, "db", "read failed", "key", k, "type", Int_.Cls_val_name);}}
|
||||
@gplx.Virtual public long Read_long(String k) {try {return Long_.cast(rdr.getObject(k));} catch (Exception e) {throw Err_.new_exc(e, "db", "read failed", "key", k, "type", Long_.Cls_val_name);}}
|
||||
@gplx.Virtual public float Read_float(String k) {try {return Float_.cast(rdr.getObject(k));} catch (Exception e) {throw Err_.new_exc(e, "db", "read failed", "key", k, "type", Float_.Cls_val_name);}}
|
||||
@gplx.Virtual public double Read_double(String k) {try {return Double_.cast(rdr.getObject(k));} catch (Exception e) {throw Err_.new_exc(e, "db", "read failed", "key", k, "type", Double_.Cls_val_name);}}
|
||||
@gplx.Virtual public byte Read_byte(String k) {try {return Byte_.Cast(rdr.getObject(k));} catch (Exception e) {throw Err_.new_exc(e, "db", "read failed", "key", k, "type", Byte_.Cls_val_name);}}
|
||||
@gplx.Virtual public boolean Read_bool_by_byte(String k) {try {return Byte_.Cast(rdr.getObject(k)) == 1;} catch (Exception e) {throw Err_.new_exc(e, "db", "read failed", "key", k, "type", Bool_.Cls_val_name);}}
|
||||
@gplx.Virtual public int Fld_len() {try {return rdr.getMetaData().getColumnCount();} catch (Exception e) {throw Err_.new_exc(e, "db", "field count failed", "sql", sql);}}
|
||||
@gplx.Virtual public Object Read_obj(String k) {try {return rdr.getObject(k);} catch (Exception e) {throw Err_.new_exc(e, "db", "read failed", "key", k, "type", Object_.Cls_val_name);}}
|
||||
@gplx.Virtual public Object Read_at(int i) {try {return rdr.getObject(i + 1);} catch (Exception e) {throw Err_.new_exc(e, "db", "read failed", "idx", i, "type", Object_.Cls_val_name);}}
|
||||
@gplx.Virtual public void Rls() {
|
||||
public byte[] Read_bry(String k) {try {return (byte[])rdr.getObject(k);} catch (Exception e) {throw Err_.new_exc(e, "db", "read failed", "key", k, "type", Bry_.Cls_val_name);}}
|
||||
public byte[] Read_bry_by_str(String k) {try {return Bry_.new_u8((String)rdr.getObject(k));} catch (Exception e) {throw Err_.new_exc(e, "db", "read failed", "key", k, "type", String_.Cls_val_name);}}
|
||||
public void Save_bry_in_parts(Io_url url, String tbl, String fld, String crt_key, Object crt_val) {throw Err_.new_unimplemented();}
|
||||
public String Read_str(String k) {try {return (String)rdr.getObject(k);} catch (Exception e) {throw Err_.new_exc(e, "db", "read failed", "key", k, "type", String_.Cls_val_name);}}
|
||||
public DateAdp Read_date_by_str(String k) {return DateAdp_.parse_iso8561(Read_str(k));}
|
||||
public int Read_int(String k) {try {return Int_.Cast(rdr.getObject(k));} catch (Exception e) {throw Err_.new_exc(e, "db", "read failed", "key", k, "type", Int_.Cls_val_name);}}
|
||||
public long Read_long(String k) {try {return Long_.cast(rdr.getObject(k));} catch (Exception e) {throw Err_.new_exc(e, "db", "read failed", "key", k, "type", Long_.Cls_val_name);}}
|
||||
public float Read_float(String k) {try {return Float_.cast(rdr.getObject(k));} catch (Exception e) {throw Err_.new_exc(e, "db", "read failed", "key", k, "type", Float_.Cls_val_name);}}
|
||||
public double Read_double(String k) {try {return Double_.cast(rdr.getObject(k));} catch (Exception e) {throw Err_.new_exc(e, "db", "read failed", "key", k, "type", Double_.Cls_val_name);}}
|
||||
public byte Read_byte(String k) {try {return Byte_.Cast(rdr.getObject(k));} catch (Exception e) {throw Err_.new_exc(e, "db", "read failed", "key", k, "type", Byte_.Cls_val_name);}}
|
||||
public boolean Read_bool_by_byte(String k) {try {return Byte_.Cast(rdr.getObject(k)) == 1;} catch (Exception e) {throw Err_.new_exc(e, "db", "read failed", "key", k, "type", Bool_.Cls_val_name);}}
|
||||
public int Fld_len() {try {return rdr.getMetaData().getColumnCount();} catch (Exception e) {throw Err_.new_exc(e, "db", "field count failed", "sql", sql);}}
|
||||
public Object Read_obj(String k) {try {return rdr.getObject(k);} catch (Exception e) {throw Err_.new_exc(e, "db", "read failed", "key", k, "type", Object_.Cls_val_name);}}
|
||||
public Object Read_at(int i) {try {return rdr.getObject(i + 1);} catch (Exception e) {throw Err_.new_exc(e, "db", "read failed", "idx", i, "type", Object_.Cls_val_name);}}
|
||||
public void Rls() {
|
||||
try {rdr.close();}
|
||||
catch (Exception e) {throw Err_.new_exc(e, "db", "close failed");}
|
||||
if (stmt != null) {
|
||||
|
@ -14,7 +14,7 @@ GPLv3 License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-GPLv3.txt
|
||||
Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
|
||||
*/
|
||||
package gplx.dbs; import gplx.*;
|
||||
import gplx.dbs.metas.*; import gplx.dbs.sqls.*; import gplx.dbs.sqls.wtrs.*;
|
||||
import gplx.dbs.metas.*; import gplx.dbs.sqls.*;
|
||||
public class Dbmeta_idx_itm {
|
||||
public Dbmeta_idx_itm(boolean unique, String tbl, String name, Dbmeta_idx_fld[] flds) {
|
||||
this.tbl = tbl; this.name = name; this.unique = unique; this.Flds = flds;
|
||||
@ -23,7 +23,7 @@ public class Dbmeta_idx_itm {
|
||||
public String Name() {return name;} private final String name;
|
||||
public boolean Unique() {return unique;} private final boolean unique;
|
||||
public final Dbmeta_idx_fld[] Flds;
|
||||
public String To_sql_create(Sql_qry_wtr sql_wtr) {return sql_wtr.Schema_wtr().Bld_create_idx(this);}
|
||||
public String To_sql_create(SqlQryWtr sql_wtr) {return sql_wtr.Schema_wtr().Bld_create_idx(this);}
|
||||
public boolean Eq(Dbmeta_idx_itm comp) {
|
||||
return String_.Eq(name, comp.name)
|
||||
&& unique == comp.unique
|
||||
|
@ -13,13 +13,13 @@ The terms of each license can be found in the source code repository:
|
||||
GPLv3 License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-GPLv3.txt
|
||||
Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
|
||||
*/
|
||||
package gplx.dbs; import gplx.*;
|
||||
import gplx.dbs.metas.*; import gplx.dbs.sqls.*; import gplx.dbs.sqls.wtrs.*;
|
||||
package gplx.dbs;
|
||||
import gplx.dbs.metas.*; import gplx.dbs.sqls.*;
|
||||
public class Dbmeta_tbl_itm {
|
||||
public String Name() {return name;} private String name;
|
||||
public Dbmeta_idx_mgr Idxs() {return idxs;} private final Dbmeta_idx_mgr idxs = new Dbmeta_idx_mgr();
|
||||
public Dbmeta_fld_mgr Flds() {return flds;} private final Dbmeta_fld_mgr flds = new Dbmeta_fld_mgr();
|
||||
public String To_sql_create(Sql_qry_wtr sql_wtr) {return sql_wtr.Schema_wtr().Bld_create_tbl(this);}
|
||||
public String To_sql_create(SqlQryWtr sql_wtr) {return sql_wtr.Schema_wtr().Bld_create_tbl(this);}
|
||||
|
||||
public static Dbmeta_tbl_itm New(String name, Dbmeta_fld_list flds, Dbmeta_idx_itm... idxs) {return New(name, flds.To_fld_ary(), idxs);}
|
||||
public static Dbmeta_tbl_itm New(String name, Dbmeta_fld_itm... flds) {return New(name, flds, Dbmeta_idx_itm.Ary_empty);}
|
||||
|
@ -29,7 +29,7 @@ import gplx.dbs.Dbmeta_tbl_itm;
|
||||
import gplx.dbs.conn_props.Db_conn_props_mgr;
|
||||
import gplx.dbs.metas.Dbmeta_tbl_mgr;
|
||||
import gplx.dbs.qrys.bats.Db_batch_mgr;
|
||||
import gplx.dbs.sqls.Sql_qry_wtr;
|
||||
import gplx.dbs.sqls.SqlQryWtr;
|
||||
import gplx.dbs.wkrs.SqlWkrMgr;
|
||||
|
||||
public interface Db_engine {
|
||||
@ -37,7 +37,7 @@ public interface Db_engine {
|
||||
Db_conn_info Conn_info();
|
||||
Db_conn_props_mgr Props();
|
||||
Db_batch_mgr Batch_mgr();
|
||||
Sql_qry_wtr Sql_wtr();
|
||||
SqlQryWtr Sql_wtr();
|
||||
void CtorConn(SqlWkrMgr wkrMgr);
|
||||
Db_engine New_clone(Db_conn_info conn_info);
|
||||
void Conn_open();
|
||||
|
@ -34,7 +34,7 @@ import gplx.dbs.metas.Dbmeta_tbl_mgr;
|
||||
import gplx.dbs.qrys.Db_qry_sql;
|
||||
import gplx.dbs.qrys.Db_stmt_cmd;
|
||||
import gplx.dbs.qrys.bats.Db_batch_mgr;
|
||||
import gplx.dbs.sqls.Sql_qry_wtr;
|
||||
import gplx.dbs.sqls.SqlQryWtr;
|
||||
|
||||
import java.sql.Connection;
|
||||
import java.sql.DriverManager;
|
||||
@ -47,7 +47,7 @@ public abstract class Db_engine_sql_base implements Db_engine {
|
||||
public Db_conn_info Conn_info() {return conn_info;} protected Db_conn_info conn_info;
|
||||
public Db_conn_props_mgr Props() {return props;} private final Db_conn_props_mgr props = new Db_conn_props_mgr();
|
||||
public Db_batch_mgr Batch_mgr() {return batch_mgr;} private final Db_batch_mgr batch_mgr = new Db_batch_mgr();
|
||||
public abstract Sql_qry_wtr Sql_wtr();
|
||||
public abstract SqlQryWtr Sql_wtr();
|
||||
public abstract Db_engine New_clone(Db_conn_info conn_info);
|
||||
public Db_rdr Exec_as_rdr__rls_manual(Object rdr_obj, String sql) {return New_rdr(null, rdr_obj, sql);}
|
||||
public Db_rdr Exec_as_rdr__rls_auto(Db_stmt stmt, Object rdr_obj, String sql) {return New_rdr(stmt, rdr_obj, sql);}
|
||||
@ -64,7 +64,7 @@ public abstract class Db_engine_sql_base implements Db_engine {
|
||||
}
|
||||
public Object Exec_as_obj(Db_qry qry) {
|
||||
if (qry.Tid() == Db_qry_.Tid_flush) return null; // ignore flush (delete-db) statements
|
||||
String sql = this.Sql_wtr().To_sql_str(qry, false); // DBG: Tfds.Write(sql);
|
||||
String sql = this.Sql_wtr().ToSqlStr(qry, false); // DBG: Tfds.Write(sql);
|
||||
return qry.Exec_is_rdr() ? (Object)this.Exec_as_rdr(sql) : this.Exec_as_int(sql);
|
||||
}
|
||||
protected int Exec_as_int(String sql) {
|
||||
|
@ -28,7 +28,7 @@ public class Mem_engine implements Db_engine {
|
||||
public Db_conn_props_mgr Props() {return props;} private final Db_conn_props_mgr props = new Db_conn_props_mgr();
|
||||
public Db_batch_mgr Batch_mgr() {return batch_mgr;} private final Db_batch_mgr batch_mgr = new Db_batch_mgr();
|
||||
public Mem_exec_select Qry_runner() {return qry_runner;} private Mem_exec_select qry_runner;
|
||||
public Sql_qry_wtr Sql_wtr() {return sql_wtr;} private final Sql_qry_wtr sql_wtr = Sql_qry_wtr_.New__basic();
|
||||
public SqlQryWtr Sql_wtr() {return sql_wtr;} private final SqlQryWtr sql_wtr = SqlQryWtrUtl.NewBasic();
|
||||
@Override public void CtorConn(SqlWkrMgr wkrMgr) {}
|
||||
public Db_engine New_clone(Db_conn_info conn_info) {return new Mem_engine(conn_info);}
|
||||
public Db_stmt Stmt_by_qry(Db_qry qry) {return new Mem_stmt(this, qry);}
|
||||
|
@ -29,7 +29,7 @@ public class Mem_rdr implements Db_rdr {
|
||||
public byte[] Read_bry(String k) {return (byte[])row.Get_by(k);}
|
||||
public String Read_str(String k) {return (String)row.Get_by(k);}
|
||||
public byte[] Read_bry_by_str(String k) {return Bry_.new_u8_safe((String)row.Get_by(k));} // NOTE: null b/c db can have NULL
|
||||
@gplx.Virtual public void Save_bry_in_parts(Io_url url, String tbl, String fld, String crt_key, Object crt_val) {throw Err_.new_unimplemented();}
|
||||
public void Save_bry_in_parts(Io_url url, String tbl, String fld, String crt_key, Object crt_val) {throw Err_.new_unimplemented();}
|
||||
public DateAdp Read_date_by_str(String k) {return DateAdp_.parse_iso8561((String)row.Get_by(k));}
|
||||
public byte Read_byte(String k) {return Byte_.Cast(row.Get_by(k));}
|
||||
public int Read_int(String k) {return Int_.Cast(row.Get_by(k));}
|
||||
|
@ -21,15 +21,15 @@ import gplx.dbs.Db_conn_info;
|
||||
import gplx.dbs.engines.Db_engine;
|
||||
import gplx.dbs.engines.Db_engine_sql_base;
|
||||
import gplx.dbs.metas.Dbmeta_tbl_mgr;
|
||||
import gplx.dbs.sqls.Sql_qry_wtr;
|
||||
import gplx.dbs.sqls.Sql_qry_wtr_;
|
||||
import gplx.dbs.sqls.SqlQryWtr;
|
||||
import gplx.dbs.sqls.SqlQryWtrUtl;
|
||||
import gplx.dbs.wkrs.SqlWkrMgr;
|
||||
|
||||
import java.sql.Connection;
|
||||
import java.sql.ResultSet;
|
||||
public class Mysql_engine extends Db_engine_sql_base {
|
||||
@Override public String Tid() {return Mysql_conn_info.Tid_const;}
|
||||
@Override public Sql_qry_wtr Sql_wtr() {return Sql_qry_wtr_.New__mysql();}
|
||||
@Override public SqlQryWtr Sql_wtr() {return SqlQryWtrUtl.NewMysql();}
|
||||
@Override public void CtorConn(SqlWkrMgr wkrMgr) {}
|
||||
@Override protected String Txn_bgn_str() {return "START TRANSACTION;";}
|
||||
@Override protected String Txn_end_str() {return "COMMIT;";}
|
||||
|
@ -22,7 +22,7 @@ public class Noop_engine implements Db_engine {
|
||||
public Db_conn_info Conn_info() {return Db_conn_info_.Null;}
|
||||
public Db_conn_props_mgr Props() {return props;} private final Db_conn_props_mgr props = new Db_conn_props_mgr();
|
||||
public Db_batch_mgr Batch_mgr() {return batch_mgr;} private final Db_batch_mgr batch_mgr = new Db_batch_mgr();
|
||||
public Sql_qry_wtr Sql_wtr() {return sql_wtr;} private final Sql_qry_wtr sql_wtr = Sql_qry_wtr_.New__basic();
|
||||
public SqlQryWtr Sql_wtr() {return sql_wtr;} private final SqlQryWtr sql_wtr = SqlQryWtrUtl.NewBasic();
|
||||
@Override public void CtorConn(SqlWkrMgr wkrMgr) {}
|
||||
public void Conn_open() {}
|
||||
public void Conn_term() {}
|
||||
|
@ -14,7 +14,8 @@ GPLv3 License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-GPLv3.txt
|
||||
Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
|
||||
*/
|
||||
package gplx.dbs.engines.postgres; import gplx.*; import gplx.dbs.*; import gplx.dbs.engines.*;
|
||||
import gplx.core.stores.*; import gplx.dbs.engines.*; import gplx.dbs.sqls.*; import gplx.dbs.metas.*;
|
||||
import gplx.core.stores.*;
|
||||
import gplx.dbs.sqls.*; import gplx.dbs.metas.*;
|
||||
import gplx.dbs.wkrs.SqlWkrMgr;
|
||||
|
||||
import java.sql.Connection;
|
||||
@ -22,7 +23,7 @@ import java.sql.ResultSet;
|
||||
|
||||
public class Postgres_engine extends Db_engine_sql_base {
|
||||
@Override public String Tid() {return Postgres_conn_info.Tid_const;}
|
||||
@Override public Sql_qry_wtr Sql_wtr() {return Sql_qry_wtr_.New__mysql();}
|
||||
@Override public SqlQryWtr Sql_wtr() {return SqlQryWtrUtl.NewMysql();}
|
||||
@Override public void CtorConn(SqlWkrMgr wkrMgr) {}
|
||||
@Override public Db_engine New_clone(Db_conn_info connectInfo) {
|
||||
Postgres_engine rv = new Postgres_engine();
|
||||
|
@ -43,7 +43,8 @@ import gplx.dbs.Dbmeta_fld_itm;
|
||||
import gplx.dbs.engines.Db_engine;
|
||||
import gplx.dbs.engines.Db_engine_sql_base;
|
||||
import gplx.dbs.metas.Dbmeta_tbl_mgr;
|
||||
import gplx.dbs.sqls.Sql_qry_wtr_;
|
||||
import gplx.dbs.sqls.SqlQryWtr;
|
||||
import gplx.dbs.sqls.SqlQryWtrUtl;
|
||||
import gplx.dbs.wkrs.SqlWkrMgr;
|
||||
import gplx.dbs.wkrs.randoms.SqliteRandomWkr;
|
||||
import org.sqlite.SQLiteConnection;
|
||||
@ -58,7 +59,7 @@ public class Sqlite_engine extends Db_engine_sql_base {
|
||||
this.schema_mgr = new Sqlite_schema_mgr(this);
|
||||
}
|
||||
@Override public String Tid() {return Sqlite_conn_info.Key_const;}
|
||||
@Override public gplx.dbs.sqls.Sql_qry_wtr Sql_wtr() {return Sql_qry_wtr_.New__sqlite();}
|
||||
@Override public SqlQryWtr Sql_wtr() {return SqlQryWtrUtl.NewSqlite();}
|
||||
public void CtorConn(SqlWkrMgr wkrMgr) {
|
||||
wkrMgr.Set(new SqliteRandomWkr());
|
||||
}
|
||||
|
@ -13,8 +13,8 @@ The terms of each license can be found in the source code repository:
|
||||
GPLv3 License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-GPLv3.txt
|
||||
Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
|
||||
*/
|
||||
package gplx.dbs.engines.sqlite; import gplx.*; import gplx.dbs.*; import gplx.dbs.engines.*;
|
||||
import gplx.core.primitives.*; import gplx.dbs.qrys.*; import gplx.dbs.utls.*; import gplx.dbs.engines.*; import gplx.dbs.engines.sqlite.*;
|
||||
package gplx.dbs.engines.sqlite; import gplx.*; import gplx.dbs.*;
|
||||
import gplx.dbs.sqls.SqlQryWtr;
|
||||
public class Sqlite_pragma implements Db_qry {
|
||||
private final String sql;
|
||||
public Sqlite_pragma(boolean parens, String key, String val) {
|
||||
@ -24,7 +24,7 @@ public class Sqlite_pragma implements Db_qry {
|
||||
public int Tid() {return Db_qry_.Tid_pragma;}
|
||||
public boolean Exec_is_rdr() {return false;}
|
||||
public String Base_table() {return "";}
|
||||
public String To_sql__exec(gplx.dbs.sqls.Sql_qry_wtr wtr) {return sql;}
|
||||
public String To_sql__exec(SqlQryWtr wtr) {return sql;}
|
||||
|
||||
public static final String Const__journal_mode = "journal_mode", Const__journal_mode__wal = "wal", Const__journal_mode__off = "off";
|
||||
public static Sqlite_pragma New__journal__delete() {return new Sqlite_pragma(Bool_.N, Const__journal_mode , "delete");} // default
|
||||
|
@ -22,7 +22,7 @@ public class TdbEngine implements Db_engine {
|
||||
public Db_conn_info Conn_info() {return conn_info;} private Db_conn_info conn_info;
|
||||
public Db_conn_props_mgr Props() {return props;} private final Db_conn_props_mgr props = new Db_conn_props_mgr();
|
||||
public Db_batch_mgr Batch_mgr() {return batch_mgr;} private final Db_batch_mgr batch_mgr = new Db_batch_mgr();
|
||||
public Sql_qry_wtr Sql_wtr() {return sql_wtr;} private final Sql_qry_wtr sql_wtr = Sql_qry_wtr_.New__basic();
|
||||
public SqlQryWtr Sql_wtr() {return sql_wtr;} private final SqlQryWtr sql_wtr = SqlQryWtrUtl.NewBasic();
|
||||
public TdbDatabase Db() {return db;} TdbDatabase db;
|
||||
@Override public void CtorConn(SqlWkrMgr wkrMgr) {}
|
||||
public void Conn_open() {
|
||||
@ -45,7 +45,7 @@ public class TdbEngine implements Db_engine {
|
||||
Db_qryWkr wkr = (Db_qryWkr)wkrs.Get_by_or_fail(qry.Tid());
|
||||
return wkr.Exec(this, qry);
|
||||
}
|
||||
public Db_stmt Stmt_by_qry(Db_qry qry) {return new Db_stmt_sql().Parse(qry, sql_wtr.To_sql_str(qry, true));}
|
||||
public Db_stmt Stmt_by_qry(Db_qry qry) {return new Db_stmt_sql().Parse(qry, sql_wtr.ToSqlStr(qry, true));}
|
||||
public Object Stmt_by_sql(String sql) {throw Err_.new_unimplemented();}
|
||||
public Db_rdr Exec_as_rdr__rls_manual(Object rdr_obj, String sql) {return Db_rdr_.Empty;}
|
||||
public Db_rdr Exec_as_rdr__rls_auto(Db_stmt stmt, Object rdr_obj, String sql) {return Db_rdr_.Empty;}
|
||||
|
@ -19,7 +19,7 @@ abstract class Dbmeta_fld_wkr__base {
|
||||
private byte[] hook;
|
||||
private final Btrie_slim_mgr words_trie = Btrie_slim_mgr.ci_a7();
|
||||
private int words_len;
|
||||
@gplx.Virtual public int Tid() {return Tid_other;}
|
||||
public int Tid() {return Tid_other;}
|
||||
public void Ctor(byte[] hook, byte[]... words_ary) {
|
||||
this.hook = hook;
|
||||
this.words_len = words_ary.length;
|
||||
@ -29,7 +29,7 @@ abstract class Dbmeta_fld_wkr__base {
|
||||
public void Reg(Btrie_slim_mgr trie) {
|
||||
trie.Add_obj(hook, this);
|
||||
}
|
||||
@gplx.Virtual public void Match(Bry_rdr rdr, Dbmeta_fld_itm fld) {
|
||||
public void Match(Bry_rdr rdr, Dbmeta_fld_itm fld) {
|
||||
int words_len = words_trie.Count();
|
||||
for (int i = 0; i < words_len; ++i) {
|
||||
rdr.Skip_ws();
|
||||
|
@ -15,6 +15,7 @@ Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
|
||||
*/
|
||||
package gplx.dbs.qrys; import gplx.*; import gplx.dbs.*;
|
||||
import gplx.core.criterias.*;
|
||||
import gplx.dbs.sqls.SqlQryWtr;
|
||||
import gplx.dbs.sqls.itms.*;
|
||||
public class Db_qry__select_cmd implements Db_qry {
|
||||
public int Tid() {return Db_qry_.Tid_select;}
|
||||
@ -107,6 +108,6 @@ public class Db_qry__select_cmd implements Db_qry {
|
||||
return this;
|
||||
}
|
||||
|
||||
public String To_sql__exec(gplx.dbs.sqls.Sql_qry_wtr wtr) {return wtr.To_sql_str(this, Bool_.N);}
|
||||
public String To_sql__prep(gplx.dbs.sqls.Sql_qry_wtr wtr) {return wtr.To_sql_str(this, Bool_.Y);}
|
||||
public String To_sql__exec(SqlQryWtr wtr) {return wtr.ToSqlStr(this, Bool_.N);}
|
||||
public String To_sql__prep(SqlQryWtr wtr) {return wtr.ToSqlStr(this, Bool_.Y);}
|
||||
}
|
||||
|
@ -15,6 +15,7 @@ Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
|
||||
*/
|
||||
package gplx.dbs.qrys; import gplx.*; import gplx.dbs.*;
|
||||
import gplx.core.strings.*; import gplx.core.criterias.*;
|
||||
import gplx.dbs.sqls.SqlQryWtr;
|
||||
public class Db_qry__select_in_tbl implements Db_qry {
|
||||
public Db_qry__select_in_tbl(String base_table, String[] select_flds, String[] where_flds, String group_by_sql, String having_sql, String order_by_sql, String limit_sql) {
|
||||
this.base_table = base_table; this.select_flds = select_flds; this.where_flds = where_flds; this.group_by_sql = group_by_sql; this.having_sql = having_sql; this.order_by_sql = order_by_sql; this.limit_sql = limit_sql;
|
||||
@ -39,7 +40,7 @@ public class Db_qry__select_in_tbl implements Db_qry {
|
||||
public String Having_sql() {return having_sql;} private final String having_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 String To_sql__exec(gplx.dbs.sqls.Sql_qry_wtr wtr) {
|
||||
public String To_sql__exec(SqlQryWtr wtr) {
|
||||
synchronized (this) {
|
||||
String_bldr sb = String_bldr_.new_();
|
||||
sb.Add("SELECT ");
|
||||
|
@ -20,7 +20,7 @@ public class Db_qry_delete implements Db_qry {
|
||||
public int Tid() {return Db_qry_.Tid_delete;}
|
||||
public boolean Exec_is_rdr() {return Bool_.N;}
|
||||
public String Base_table() {return base_table;} private final String base_table;
|
||||
public String To_sql__exec(Sql_qry_wtr wtr) {return wtr.To_sql_str(this, false);}
|
||||
public String To_sql__exec(SqlQryWtr wtr) {return wtr.ToSqlStr(this, false);}
|
||||
public Criteria Where() {return where;} private final Criteria where;
|
||||
public int Exec_qry(Db_conn conn) {return conn.Exec_qry(this);}
|
||||
public static Db_qry_delete new_all_(String tbl) {return new Db_qry_delete(tbl, Criteria_.All);}
|
||||
|
@ -14,6 +14,7 @@ GPLv3 License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-GPLv3.txt
|
||||
Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
|
||||
*/
|
||||
package gplx.dbs.qrys; import gplx.*; import gplx.dbs.*;
|
||||
import gplx.dbs.sqls.SqlQryWtrUtl;
|
||||
import org.junit.*;
|
||||
import gplx.core.criterias.*;
|
||||
public class Db_qry_dml_tst {
|
||||
@ -38,5 +39,5 @@ public class Db_qry_dml_tst {
|
||||
qry.Where_(Criteria_.And(Db_crt_.New_eq("id", 0), Db_crt_.New_mt("startTime", DateAdp_.parse_gplx("2005-01-01"))));
|
||||
tst_XtoSql(qry, "UPDATE tbl0 SET id=1, name='me', startTime='2007-12-23 00:00:00.000' WHERE (id = 0 AND startTime > '2005-01-01 00:00:00.000')");
|
||||
}
|
||||
void tst_XtoSql(Db_qry qry, String expd) {Tfds.Eq(expd, qry.To_sql__exec(gplx.dbs.sqls.Sql_qry_wtr_.New__basic()));}
|
||||
void tst_XtoSql(Db_qry qry, String expd) {Tfds.Eq(expd, qry.To_sql__exec(SqlQryWtrUtl.NewBasic()));}
|
||||
}
|
||||
|
@ -19,7 +19,7 @@ public class Db_qry_flush implements Db_qry {
|
||||
public int Tid() {return Db_qry_.Tid_flush;}
|
||||
public boolean Exec_is_rdr() {return false;}
|
||||
public String Base_table() {return tableNames[0];}
|
||||
public String To_sql__exec(Sql_qry_wtr wtr) {return wtr.To_sql_str(this, false);}
|
||||
public String To_sql__exec(SqlQryWtr wtr) {return wtr.ToSqlStr(this, false);}
|
||||
public int Exec_qry(Db_conn conn) {return conn.Exec_qry(this);}
|
||||
|
||||
public String[] TableNames() {return tableNames;} private String[] tableNames;
|
||||
|
@ -19,7 +19,7 @@ public class Db_qry_insert implements Db_arg_owner {
|
||||
public Db_qry_insert(String base_table) {this.base_table = base_table;}
|
||||
public int Tid() {return Db_qry_.Tid_insert;}
|
||||
public boolean Exec_is_rdr() {return false;}
|
||||
public String To_sql__exec(Sql_qry_wtr wtr) {return wtr.To_sql_str(this, false);}
|
||||
public String To_sql__exec(SqlQryWtr wtr) {return wtr.ToSqlStr(this, false);}
|
||||
public int Exec_qry(Db_conn conn) {return conn.Exec_qry(this);}
|
||||
public String Base_table() {return base_table;} private String base_table;
|
||||
public String[] Cols_for_insert() {return cols_for_insert;} private String[] cols_for_insert;
|
||||
|
@ -83,5 +83,5 @@ public class Db_qry_select_tst {
|
||||
// expd = "SELECT fld0, fld1 FROM tbl0 GROUP BY fld0, fld1 HAVING Count(fld0) > 1";
|
||||
// Tfds.Eq(cmd.To_str(), expd);
|
||||
// }
|
||||
void tst_XtoStr(Db_qry qry, String expd) {Tfds.Eq(expd, cmd.To_sql__exec(Sql_qry_wtr_.New__basic()));}
|
||||
void tst_XtoStr(Db_qry qry, String expd) {Tfds.Eq(expd, cmd.To_sql__exec(SqlQryWtrUtl.NewBasic()));}
|
||||
}
|
||||
|
@ -19,7 +19,7 @@ public class Db_qry_sql implements Db_qry {
|
||||
public int Tid() {return Db_qry_.Tid_sql;}
|
||||
public boolean Exec_is_rdr() {return isReader;} private boolean isReader;
|
||||
public String Base_table() {throw Err_.new_unimplemented();}
|
||||
public String To_sql__exec(Sql_qry_wtr wtr) {return sql;} private String sql;
|
||||
public String To_sql__exec(SqlQryWtr wtr) {return sql;} private String sql;
|
||||
public int Exec_qry(Db_conn conn) {return conn.Exec_qry(this);}
|
||||
public static Db_qry_sql dml_(String sql) {return sql_(sql);}
|
||||
public static Db_qry_sql ddl_(String sql) {return sql_(sql);}
|
||||
@ -36,8 +36,8 @@ public class Db_qry_sql implements Db_qry {
|
||||
}
|
||||
public static Db_qry_sql as_(Object obj) {return obj instanceof Db_qry_sql ? (Db_qry_sql)obj : null;}
|
||||
public static Db_qry_sql cast(Object obj) {try {return (Db_qry_sql)obj;} catch(Exception exc) {throw Err_.new_type_mismatch_w_exc(exc, Db_qry_sql.class, obj);}}
|
||||
public static String Gen_sql(Sql_qry_wtr qry_wtr, Db_qry qry, Object... args) {
|
||||
byte[] src = Bry_.new_u8(qry_wtr.To_sql_str(qry, true));
|
||||
public static String Gen_sql(SqlQryWtr qry_wtr, Db_qry qry, Object... args) {
|
||||
byte[] src = Bry_.new_u8(qry_wtr.ToSqlStr(qry, true));
|
||||
int src_len = src.length;
|
||||
int args_idx = 0, args_len = args.length, pos = 0;
|
||||
Bry_bfr bfr = Bry_bfr_.New_w_size(src_len);
|
||||
|
@ -40,7 +40,7 @@ public class Db_qry_sql_tst {
|
||||
}
|
||||
}
|
||||
class Db_qry_sql_fxt {
|
||||
private final Sql_qry_wtr qry_wtr = Sql_qry_wtr_.New__sqlite();
|
||||
private final SqlQryWtr qry_wtr = SqlQryWtrUtl.NewSqlite();
|
||||
public void Clear() {}
|
||||
public void Test_qry(Db_qry qry, Object[] vals, String expd) {Tfds.Eq(expd, Db_qry_sql.Gen_sql(qry_wtr, qry, vals));}
|
||||
}
|
||||
|
@ -18,7 +18,7 @@ import gplx.core.criterias.*; import gplx.dbs.sqls.*;
|
||||
public class Db_qry_update implements Db_arg_owner {
|
||||
public int Tid() {return Db_qry_.Tid_update;}
|
||||
public boolean Exec_is_rdr() {return false;}
|
||||
public String To_sql__exec(Sql_qry_wtr wtr) {return wtr.To_sql_str(this, false);}
|
||||
public String To_sql__exec(SqlQryWtr wtr) {return wtr.ToSqlStr(this, false);}
|
||||
public int Exec_qry(Db_conn conn) {return conn.Exec_qry(this);}
|
||||
public String Base_table() {return base_table;} private String base_table;
|
||||
public String[] Cols_for_update() {return cols_for_update;} private String[] cols_for_update;
|
||||
|
@ -42,7 +42,7 @@ public class Db_stmt_cmd implements Db_stmt {
|
||||
public Db_stmt_cmd(Db_engine engine, Db_qry qry) {Ctor_stmt(engine, qry);}
|
||||
public void Ctor_stmt(Db_engine engine, Db_qry qry) {
|
||||
this.engine = engine;
|
||||
sql = qry.Tid() == Db_qry_.Tid_select_in_tbl ? ((Db_qry__select_in_tbl)qry).To_sql__exec(engine.Sql_wtr()) : engine.Sql_wtr().To_sql_str(qry, true);
|
||||
sql = qry.Tid() == Db_qry_.Tid_select_in_tbl ? ((Db_qry__select_in_tbl)qry).To_sql__exec(engine.Sql_wtr()) : engine.Sql_wtr().ToSqlStr(qry, true);
|
||||
Reset_stmt();
|
||||
}
|
||||
public Db_stmt Reset_stmt() {
|
||||
|
@ -13,9 +13,10 @@ The terms of each license can be found in the source code repository:
|
||||
GPLv3 License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-GPLv3.txt
|
||||
Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
|
||||
*/
|
||||
package gplx.dbs.sqls; import gplx.*; import gplx.dbs.*;
|
||||
import gplx.dbs.sqls.wtrs.*;
|
||||
public interface Sql_qry_wtr {
|
||||
String To_sql_str(Db_qry qry, boolean mode_is_prep);
|
||||
package gplx.dbs.sqls;
|
||||
import gplx.dbs.Db_qry;
|
||||
import gplx.dbs.sqls.wtrs.Sql_schema_wtr;
|
||||
public interface SqlQryWtr {
|
||||
String ToSqlStr(Db_qry qry, boolean mode_is_prep);
|
||||
Sql_schema_wtr Schema_wtr();
|
||||
}
|
@ -13,15 +13,19 @@ The terms of each license can be found in the source code repository:
|
||||
GPLv3 License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-GPLv3.txt
|
||||
Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
|
||||
*/
|
||||
package gplx.dbs.sqls; import gplx.*; import gplx.dbs.*;
|
||||
import gplx.dbs.sqls.wtrs.*;
|
||||
public class Sql_qry_wtr_ {
|
||||
public static Sql_qry_wtr New__basic() {return new Sql_core_wtr();}
|
||||
public static Sql_qry_wtr New__mysql() {return new Sql_core_wtr__mysql();}
|
||||
public static Sql_qry_wtr New__sqlite() {return new Sql_core_wtr__sqlite();}
|
||||
package gplx.dbs.sqls;
|
||||
import gplx.Byte_ascii;
|
||||
import gplx.String_;
|
||||
import gplx.dbs.sqls.wtrs.Sql_core_wtr;
|
||||
import gplx.dbs.sqls.wtrs.Sql_core_wtr__mysql;
|
||||
import gplx.dbs.sqls.wtrs.Sql_core_wtr__sqlite;
|
||||
public class SqlQryWtrUtl {
|
||||
public static SqlQryWtr NewBasic() {return new Sql_core_wtr();}
|
||||
public static SqlQryWtr NewMysql() {return new Sql_core_wtr__mysql();}
|
||||
public static SqlQryWtr NewSqlite() {return new Sql_core_wtr__sqlite();}
|
||||
|
||||
public static final byte Like_wildcard = Byte_ascii.Percent;
|
||||
public static String Quote_arg(String s) { // only for constructing DEBUG SQL strings
|
||||
public static String QuoteArg(String s) { // only for constructing DEBUG SQL strings
|
||||
return "'" + String_.Replace(s, "'", "''") + "'";
|
||||
}
|
||||
}
|
@ -13,8 +13,9 @@ The terms of each license can be found in the source code repository:
|
||||
GPLv3 License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-GPLv3.txt
|
||||
Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
|
||||
*/
|
||||
package gplx.dbs.sqls.itms; import gplx.*; import gplx.dbs.*; import gplx.dbs.sqls.*;
|
||||
import org.junit.*; import gplx.core.strings.*; import gplx.dbs.sqls.*;
|
||||
package gplx.dbs.sqls.itms; import gplx.*;
|
||||
import gplx.dbs.sqls.*;
|
||||
import org.junit.*;
|
||||
import gplx.dbs.sqls.wtrs.*;
|
||||
public class Db_obj_ary_tst {
|
||||
@Before public void init() {} private Db_obj_ary_fxt fxt = new Db_obj_ary_fxt();
|
||||
@ -31,7 +32,7 @@ class Db_obj_ary_fxt {
|
||||
public Db_obj_ary_fxt Init_fld(String name, int tid) {flds_list.Add(new Db_obj_ary_fld(name, tid)); return this;} private List_adp flds_list = List_adp_.New();
|
||||
public Db_obj_ary_fxt Init_vals(Object... ary) {vals_list.Add(ary); return this;} private List_adp vals_list = List_adp_.New();
|
||||
public Db_obj_ary_fxt Test_sql(String expd) {
|
||||
Sql_core_wtr cmd_wtr = (Sql_core_wtr)Sql_qry_wtr_.New__basic();
|
||||
Sql_core_wtr cmd_wtr = (Sql_core_wtr)SqlQryWtrUtl.NewBasic();
|
||||
crt.Flds_((Db_obj_ary_fld[])flds_list.To_ary_and_clear(Db_obj_ary_fld.class));
|
||||
crt.Vals_((Object[][])vals_list.To_ary_and_clear(Object[].class));
|
||||
Bry_bfr bfr = Bry_bfr_.New();
|
||||
|
@ -38,7 +38,7 @@ public abstract class Sql_select_fld {
|
||||
// tdb related functions
|
||||
public ClassXtn Val_type() {return val_type;} public void Val_type_(ClassXtn val) {val_type = val;} private ClassXtn val_type = ObjectClassXtn.Instance;
|
||||
public abstract Object GroupBy_eval(Object groupByVal, Object curVal, ClassXtn type);
|
||||
@gplx.Virtual public void GroupBy_type(ClassXtn type) {this.Val_type_(type);}
|
||||
public void GroupBy_type(ClassXtn type) {this.Val_type_(type);}
|
||||
}
|
||||
class Sql_select_fld_wild extends Sql_select_fld { Sql_select_fld_wild() {super(Sql_select_fld.Tbl__null, Fld__wildcard, Fld__wildcard);}
|
||||
@Override public String To_fld_sql() {return Fld__wildcard;}
|
||||
|
@ -13,9 +13,23 @@ The terms of each license can be found in the source code repository:
|
||||
GPLv3 License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-GPLv3.txt
|
||||
Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
|
||||
*/
|
||||
package gplx.dbs.sqls.wtrs; import gplx.*; import gplx.dbs.*; import gplx.dbs.sqls.*;
|
||||
import gplx.core.criterias.*; import gplx.dbs.qrys.*; import gplx.dbs.sqls.wtrs.*; import gplx.dbs.sqls.itms.*;
|
||||
public class Sql_core_wtr implements Sql_qry_wtr {
|
||||
package gplx.dbs.sqls.wtrs;
|
||||
import gplx.Bry_bfr;
|
||||
import gplx.Bry_bfr_;
|
||||
import gplx.Byte_ascii;
|
||||
import gplx.Err_;
|
||||
import gplx.Keyval;
|
||||
import gplx.dbs.Db_qry;
|
||||
import gplx.dbs.Db_qry_;
|
||||
import gplx.dbs.qrys.Db_arg;
|
||||
import gplx.dbs.qrys.Db_qry__select_cmd;
|
||||
import gplx.dbs.qrys.Db_qry_delete;
|
||||
import gplx.dbs.qrys.Db_qry_insert;
|
||||
import gplx.dbs.qrys.Db_qry_sql;
|
||||
import gplx.dbs.qrys.Db_qry_update;
|
||||
import gplx.dbs.sqls.SqlQryWtr;
|
||||
import gplx.dbs.sqls.itms.Sql_select_fld;
|
||||
public class Sql_core_wtr implements SqlQryWtr {
|
||||
private final Bry_bfr bfr = Bry_bfr_.New_w_size(64);
|
||||
public byte[] Seq__nl = Byte_ascii.Space_bry;
|
||||
public byte Seq__quote = Byte_ascii.Apos, Seq__escape = Byte_ascii.Backslash;
|
||||
@ -31,7 +45,7 @@ public class Sql_core_wtr implements Sql_qry_wtr {
|
||||
public Sql_from_wtr From_wtr() {return from_wtr;} private final Sql_from_wtr from_wtr;
|
||||
public Sql_where_wtr Where_wtr() {return where_wtr;} private final Sql_where_wtr where_wtr;
|
||||
public Sql_select_wtr Select_wtr() {return select_wtr;} private final Sql_select_wtr select_wtr;
|
||||
public String To_sql_str(Db_qry qry, boolean mode_is_prep) {
|
||||
public String ToSqlStr(Db_qry qry, boolean mode_is_prep) {
|
||||
synchronized (bfr) {
|
||||
Sql_wtr_ctx ctx = new Sql_wtr_ctx(mode_is_prep);
|
||||
switch (qry.Tid()) {
|
||||
@ -95,9 +109,9 @@ public class Sql_core_wtr implements Sql_qry_wtr {
|
||||
return bfr.To_str_and_clear();
|
||||
}
|
||||
public void Bld_col_name(Bry_bfr bfr, String key) {bfr.Add_str_u8(key);}
|
||||
@gplx.Virtual protected Sql_val_wtr Make__val_wtr () {return new Sql_val_wtr();}
|
||||
@gplx.Virtual protected Sql_from_wtr Make__from_wtr () {return new Sql_from_wtr();}
|
||||
@gplx.Virtual protected Sql_select_wtr Make__select_wtr(Sql_core_wtr qry_wtr) {return new Sql_select_wtr(qry_wtr);}
|
||||
@gplx.Virtual protected Sql_where_wtr Make__where_wtr (Sql_core_wtr qry_wtr, Sql_val_wtr val_wtr) {return new Sql_where_wtr(qry_wtr, val_wtr);}
|
||||
@gplx.Virtual protected Sql_schema_wtr Make__schema_wtr() {return new Sql_schema_wtr();}
|
||||
protected Sql_val_wtr Make__val_wtr() {return new Sql_val_wtr();}
|
||||
protected Sql_from_wtr Make__from_wtr() {return new Sql_from_wtr();}
|
||||
protected Sql_select_wtr Make__select_wtr(Sql_core_wtr qry_wtr) {return new Sql_select_wtr(qry_wtr);}
|
||||
protected Sql_where_wtr Make__where_wtr(Sql_core_wtr qry_wtr, Sql_val_wtr val_wtr) {return new Sql_where_wtr(qry_wtr, val_wtr);}
|
||||
protected Sql_schema_wtr Make__schema_wtr() {return new Sql_schema_wtr();}
|
||||
}
|
||||
|
@ -13,7 +13,8 @@ The terms of each license can be found in the source code repository:
|
||||
GPLv3 License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-GPLv3.txt
|
||||
Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
|
||||
*/
|
||||
package gplx.dbs.sqls.wtrs; import gplx.*; import gplx.dbs.*; import gplx.dbs.sqls.*;
|
||||
public class Sql_core_wtr__sqlite extends Sql_core_wtr { @Override protected Sql_val_wtr Make__val_wtr() {return new Sql_val_wtr_sqlite();}
|
||||
package gplx.dbs.sqls.wtrs;
|
||||
public class Sql_core_wtr__sqlite extends Sql_core_wtr {
|
||||
@Override protected Sql_val_wtr Make__val_wtr() {return new Sql_val_wtr_sqlite();}
|
||||
@Override protected Sql_select_wtr Make__select_wtr(Sql_core_wtr qry_wtr) {return new Sql_select_wtr_sqlite(qry_wtr);}
|
||||
}
|
||||
|
@ -13,8 +13,19 @@ The terms of each license can be found in the source code repository:
|
||||
GPLv3 License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-GPLv3.txt
|
||||
Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
|
||||
*/
|
||||
package gplx.dbs.sqls.wtrs; import gplx.*; import gplx.dbs.*; import gplx.dbs.sqls.*;
|
||||
import gplx.dbs.metas.*;
|
||||
package gplx.dbs.sqls.wtrs; import gplx.Bool_;
|
||||
import gplx.Bry_bfr;
|
||||
import gplx.Bry_bfr_;
|
||||
import gplx.Byte_ascii;
|
||||
import gplx.Err_;
|
||||
import gplx.Object_;
|
||||
import gplx.String_;
|
||||
import gplx.dbs.Dbmeta_fld_itm;
|
||||
import gplx.dbs.Dbmeta_fld_tid;
|
||||
import gplx.dbs.Dbmeta_idx_itm;
|
||||
import gplx.dbs.Dbmeta_tbl_itm;
|
||||
import gplx.dbs.metas.Dbmeta_fld_mgr;
|
||||
import gplx.dbs.metas.Dbmeta_idx_fld;
|
||||
public class Sql_schema_wtr {
|
||||
private Bry_bfr tmp_bfr = Bry_bfr_.Reset(255);
|
||||
public Sql_schema_wtr Bfr_(Bry_bfr bfr) {this.tmp_bfr = bfr; return this;}
|
||||
|
@ -13,8 +13,13 @@ The terms of each license can be found in the source code repository:
|
||||
GPLv3 License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-GPLv3.txt
|
||||
Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
|
||||
*/
|
||||
package gplx.dbs.sqls.wtrs; import gplx.*; import gplx.dbs.*; import gplx.dbs.sqls.*;
|
||||
import gplx.dbs.qrys.*; import gplx.dbs.sqls.itms.*;
|
||||
package gplx.dbs.sqls.wtrs; import gplx.Bry_bfr;
|
||||
import gplx.dbs.qrys.Db_qry__select_cmd;
|
||||
import gplx.dbs.sqls.itms.Sql_group_clause;
|
||||
import gplx.dbs.sqls.itms.Sql_order_clause;
|
||||
import gplx.dbs.sqls.itms.Sql_order_fld;
|
||||
import gplx.dbs.sqls.itms.Sql_select_fld;
|
||||
import gplx.dbs.sqls.itms.Sql_select_fld_list;
|
||||
public class Sql_select_wtr {
|
||||
private final Sql_core_wtr qry_wtr;
|
||||
public Sql_select_wtr(Sql_core_wtr qry_wtr) {this.qry_wtr = qry_wtr;}
|
||||
@ -61,7 +66,7 @@ public class Sql_select_wtr {
|
||||
if (limit == Db_qry__select_cmd.Limit__disabled) return;
|
||||
bfr.Add_str_a7(" LIMIT ").Add_int_variable(limit);
|
||||
}
|
||||
@gplx.Virtual protected void Bld_offset(Bry_bfr bfr, Sql_wtr_ctx ctx, Db_qry__select_cmd qry, int offset) {
|
||||
protected void Bld_offset(Bry_bfr bfr, Sql_wtr_ctx ctx, Db_qry__select_cmd qry, int offset) {
|
||||
bfr.Add_str_a7(" OFFSET ").Add_int_variable(offset);
|
||||
}
|
||||
private void Bld_indexed_by(Bry_bfr bfr, Sql_wtr_ctx ctx, Db_qry__select_cmd qry, String idx_name) {
|
||||
|
@ -41,16 +41,16 @@ public class Sql_val_wtr {
|
||||
case Type_ids_.Id__obj: Bld_val__str (bfr, Object_.Xto_str_strict_or_null(val)); break;
|
||||
}
|
||||
}
|
||||
@gplx.Virtual public void Bld_val__bool (Bry_bfr bfr, boolean val) {bfr.Add_int_digits(1, val ? 1 : 0);} // NOTE: save boolean to 0 or 1 b/c sqlite doesn't support true / false //{bfr.Add_str_a7(val ? "true" : "false");}
|
||||
@gplx.Virtual public void Bld_val__byte (Bry_bfr bfr, byte val) {bfr.Add_byte_variable(val);}
|
||||
@gplx.Virtual public void Bld_val__short (Bry_bfr bfr, short val) {bfr.Add_short_variable(val);}
|
||||
@gplx.Virtual public void Bld_val__int (Bry_bfr bfr, int val) {bfr.Add_int_variable(val);}
|
||||
@gplx.Virtual public void Bld_val__long (Bry_bfr bfr, long val) {bfr.Add_long_variable(val);}
|
||||
@gplx.Virtual public void Bld_val__float (Bry_bfr bfr, float val) {bfr.Add_float(val);}
|
||||
@gplx.Virtual public void Bld_val__double (Bry_bfr bfr, double val) {bfr.Add_double(val);}
|
||||
@gplx.Virtual public void Bld_val__date (Bry_bfr bfr, DateAdp val) {bfr.Add_str_u8_many("'", val.XtoStr_gplx_long(), "'");}
|
||||
@gplx.Virtual public void Bld_val__decimal (Bry_bfr bfr, Decimal_adp val) {bfr.Add_str_u8_many("'", val.To_str(), "'");}
|
||||
@gplx.Virtual public void Bld_val__str (Bry_bfr bfr, String val) {
|
||||
public void Bld_val__bool (Bry_bfr bfr, boolean val) {bfr.Add_int_digits(1, val ? 1 : 0);} // NOTE: save boolean to 0 or 1 b/c sqlite doesn't support true / false //{bfr.Add_str_a7(val ? "true" : "false");}
|
||||
public void Bld_val__byte (Bry_bfr bfr, byte val) {bfr.Add_byte_variable(val);}
|
||||
public void Bld_val__short (Bry_bfr bfr, short val) {bfr.Add_short_variable(val);}
|
||||
public void Bld_val__int (Bry_bfr bfr, int val) {bfr.Add_int_variable(val);}
|
||||
public void Bld_val__long (Bry_bfr bfr, long val) {bfr.Add_long_variable(val);}
|
||||
public void Bld_val__float (Bry_bfr bfr, float val) {bfr.Add_float(val);}
|
||||
public void Bld_val__double (Bry_bfr bfr, double val) {bfr.Add_double(val);}
|
||||
public void Bld_val__date (Bry_bfr bfr, DateAdp val) {bfr.Add_str_u8_many("'", val.XtoStr_gplx_long(), "'");}
|
||||
public void Bld_val__decimal (Bry_bfr bfr, Decimal_adp val) {bfr.Add_str_u8_many("'", val.To_str(), "'");}
|
||||
public void Bld_val__str (Bry_bfr bfr, String val) {
|
||||
// byte[] bry = Bry_.new_u8(val); int len = bry.length; int pos = 0; int prv = -1; boolean dirty = false;
|
||||
// while (true) {
|
||||
// if (pos == len) break;
|
||||
|
@ -13,8 +13,26 @@ The terms of each license can be found in the source code repository:
|
||||
GPLv3 License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-GPLv3.txt
|
||||
Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
|
||||
*/
|
||||
package gplx.dbs.sqls.wtrs; import gplx.*; import gplx.dbs.*; import gplx.dbs.sqls.*;
|
||||
import gplx.core.criterias.*; import gplx.dbs.sqls.itms.*;
|
||||
package gplx.dbs.sqls.wtrs; import gplx.Bry_bfr;
|
||||
import gplx.Byte_ascii;
|
||||
import gplx.CompareAble_;
|
||||
import gplx.Err_;
|
||||
import gplx.Object_;
|
||||
import gplx.String_;
|
||||
import gplx.Type_ids_;
|
||||
import gplx.core.criterias.Criteria;
|
||||
import gplx.core.criterias.Criteria_;
|
||||
import gplx.core.criterias.Criteria_between;
|
||||
import gplx.core.criterias.Criteria_bool_base;
|
||||
import gplx.core.criterias.Criteria_comp;
|
||||
import gplx.core.criterias.Criteria_eq;
|
||||
import gplx.core.criterias.Criteria_fld;
|
||||
import gplx.core.criterias.Criteria_in;
|
||||
import gplx.core.criterias.Criteria_ioMatch;
|
||||
import gplx.core.criterias.Criteria_like;
|
||||
import gplx.dbs.sqls.itms.Db_obj_ary_crt;
|
||||
import gplx.dbs.sqls.itms.Db_obj_ary_fld;
|
||||
import gplx.dbs.sqls.itms.Sql_where_clause;
|
||||
public class Sql_where_wtr {
|
||||
private final Sql_core_wtr qry_wtr;
|
||||
private final Sql_val_wtr val_wtr;
|
||||
|
@ -14,6 +14,7 @@ GPLv3 License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-GPLv3.txt
|
||||
Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
|
||||
*/
|
||||
package gplx.dbs.stmts; import gplx.*; import gplx.dbs.*;
|
||||
import gplx.dbs.sqls.SqlQryWtrUtl;
|
||||
public class Db_stmt_mgr {
|
||||
private final List_adp fmt_list = List_adp_.New();
|
||||
private final Db_stmt_arg_list arg_list = new Db_stmt_arg_list();
|
||||
@ -25,7 +26,7 @@ public class Db_stmt_mgr {
|
||||
fmt_list.Add(o);
|
||||
}
|
||||
public void Add_crt_str(String key, String val) {
|
||||
fmt_list.Add(mode_is_stmt ? stmt_arg_placeholder : gplx.dbs.sqls.Sql_qry_wtr_.Quote_arg(val));
|
||||
fmt_list.Add(mode_is_stmt ? stmt_arg_placeholder : SqlQryWtrUtl.QuoteArg(val));
|
||||
arg_list.Add(Bool_.Y, Dbmeta_fld_tid.Tid__str, key, val);
|
||||
}
|
||||
public void Add_crt_int(String key, int val) {
|
||||
|
@ -15,11 +15,11 @@ Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
|
||||
*/
|
||||
package gplx.dbs.utls; import gplx.*; import gplx.dbs.*;
|
||||
public abstract class Db_in_wkr__base {
|
||||
@gplx.Virtual protected int Interval() {return gplx.dbs.engines.sqlite.Sqlite_engine_.Stmt_arg_max - 10;} // -10 for safety's sake
|
||||
protected int Interval() {return gplx.dbs.engines.sqlite.Sqlite_engine_.Stmt_arg_max - 10;} // -10 for safety's sake
|
||||
protected abstract Db_qry Make_qry (int bgn, int end);
|
||||
protected abstract void Fill_stmt (Db_stmt stmt, int bgn, int end);
|
||||
protected abstract void Read_data (Cancelable cancelable, Db_rdr rdr);
|
||||
@gplx.Virtual protected boolean Show_progress() {return false;}
|
||||
protected boolean Show_progress() {return false;}
|
||||
public void Select_in(Cancelable cancelable, Db_conn conn, int full_bgn, int full_end) {
|
||||
int part_len = Interval();
|
||||
Gfo_usr_dlg usr_dlg = Gfo_usr_dlg_.Instance;
|
||||
|
@ -19,7 +19,7 @@ class Sql_core_wtr_fxt {
|
||||
private final Sql_core_wtr__sqlite wtr = new Sql_core_wtr__sqlite();
|
||||
private final Sql_wtr_ctx ctx = new Sql_wtr_ctx(false);
|
||||
private final Bry_bfr bfr = Bry_bfr_.New();
|
||||
public Sql_core_wtr_fxt Sql_wtr_(Sql_qry_wtr v) {sql_wtr = v; return this;} private Sql_qry_wtr sql_wtr = Sql_qry_wtr_.New__sqlite();
|
||||
public Sql_core_wtr_fxt Sql_wtr_(SqlQryWtr v) {sql_wtr = v; return this;} private SqlQryWtr sql_wtr = SqlQryWtrUtl.NewSqlite();
|
||||
public void Test__val(Object val, String expd) {
|
||||
wtr.Val_wtr().Bld_val(bfr, ctx, val);
|
||||
Tfds.Eq_str(expd, bfr.To_str_and_clear());
|
||||
@ -29,6 +29,6 @@ class Sql_core_wtr_fxt {
|
||||
Tfds.Eq_str_lines(String_.Concat_lines_nl_skip_last(expd), bfr.To_str_and_clear());
|
||||
}
|
||||
public void Test__qry(Db_qry qry, String expd) {
|
||||
Tfds.Eq_str_lines(expd, sql_wtr.To_sql_str(qry, Bool_.N));
|
||||
Tfds.Eq_str_lines(expd, sql_wtr.ToSqlStr(qry, Bool_.N));
|
||||
}
|
||||
}
|
@ -15,9 +15,9 @@ Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
|
||||
*/
|
||||
package gplx.dbs.sqls.wtrs; import gplx.*; import gplx.dbs.*; import gplx.dbs.sqls.*;
|
||||
import org.junit.*;
|
||||
import gplx.core.criterias.*; import gplx.dbs.sqls.*;
|
||||
import gplx.core.criterias.*;
|
||||
public class Sql_qry_wtr__ansi__tst {
|
||||
Sql_qry_wtr sqlWtr = Sql_qry_wtr_.New__basic();
|
||||
SqlQryWtr sqlWtr = SqlQryWtrUtl.NewBasic();
|
||||
@Test public void Insert() {
|
||||
tst_XtoSql
|
||||
( Db_qry_.insert_("people").Val_int("id", 1).Val_str("name", "me")
|
||||
@ -93,5 +93,5 @@ public class Sql_qry_wtr__ansi__tst {
|
||||
);
|
||||
}
|
||||
void tst_XtoSql(Db_qry cmd, String expd) {tst_XtoSql(cmd, expd, false);}
|
||||
void tst_XtoSql(Db_qry cmd, String expd, boolean prepare) {Tfds.Eq(expd, sqlWtr.To_sql_str(cmd, prepare));}
|
||||
void tst_XtoSql(Db_qry cmd, String expd, boolean prepare) {Tfds.Eq(expd, sqlWtr.ToSqlStr(cmd, prepare));}
|
||||
}
|
@ -13,10 +13,11 @@ The terms of each license can be found in the source code repository:
|
||||
GPLv3 License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-GPLv3.txt
|
||||
Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
|
||||
*/
|
||||
package gplx.dbs.sqls.wtrs; import gplx.*; import gplx.dbs.*; import gplx.dbs.sqls.*;
|
||||
import org.junit.*; import gplx.core.strings.*;
|
||||
package gplx.dbs.sqls.wtrs; import gplx.*;
|
||||
import gplx.dbs.sqls.*;
|
||||
import org.junit.*;
|
||||
import gplx.core.criterias.*; /*Criteria_base*/
|
||||
import gplx.core.ios.*; import gplx.dbs.sqls.*; import gplx.dbs.sqls.wtrs.*;
|
||||
import gplx.core.ios.*;
|
||||
public class Sql_qry_wtr__iosql__tst {
|
||||
@Test public void Type() {
|
||||
fld = IoItm_base_.Prop_Type;
|
||||
@ -51,7 +52,7 @@ public class Sql_qry_wtr__iosql__tst {
|
||||
String fld;
|
||||
private final Sql_wtr_ctx ctx = new Sql_wtr_ctx(false);
|
||||
void tst_Write(String expd, Criteria crt) {
|
||||
Sql_where_wtr where_wtr = ((Sql_core_wtr)Sql_qry_wtr_.New__basic()).Where_wtr();
|
||||
Sql_where_wtr where_wtr = ((Sql_core_wtr)SqlQryWtrUtl.NewBasic()).Where_wtr();
|
||||
Bry_bfr bfr = Bry_bfr_.New();
|
||||
where_wtr.Bld_where_elem(bfr, ctx, crt);
|
||||
Tfds.Eq(expd, bfr.To_str_and_clear());
|
@ -59,7 +59,7 @@ public class Sql_schema_wtr_tst {
|
||||
}
|
||||
}
|
||||
class Sql_schema_wtr_fxt {
|
||||
private Sql_schema_wtr sqlbldr = Sql_qry_wtr_.New__sqlite().Schema_wtr();
|
||||
private Sql_schema_wtr sqlbldr = SqlQryWtrUtl.NewSqlite().Schema_wtr();
|
||||
public void Test_create_idx(Dbmeta_idx_itm idx, String expd) {Tfds.Eq(expd, sqlbldr.Bld_create_idx(idx));}
|
||||
public void Test_create_tbl(Dbmeta_tbl_itm tbl, String expd) {Tfds.Eq_str_lines(expd, sqlbldr.Bld_create_tbl(tbl));}
|
||||
public void Test_alter_tbl_add(String tbl, Dbmeta_fld_itm fld, String expd) {Tfds.Eq_str_lines(expd, sqlbldr.Bld_alter_tbl_add(tbl, fld));}
|
@ -13,7 +13,8 @@ The terms of each license can be found in the source code repository:
|
||||
GPLv3 License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-GPLv3.txt
|
||||
Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
|
||||
*/
|
||||
package gplx.xowa.addons.wikis.searchs.searchers.crts; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.searchs.*; import gplx.xowa.addons.wikis.searchs.searchers.*;
|
||||
package gplx.xowa.addons.wikis.searchs.searchers.crts; import gplx.*;
|
||||
import gplx.dbs.sqls.SqlQryWtrUtl;
|
||||
import gplx.langs.regxs.*;
|
||||
public class Srch_crt_sql {
|
||||
public Srch_crt_sql(int tid, String eq, String rng_bgn, String rng_end, String like, Gfo_pattern pattern) {
|
||||
@ -61,7 +62,7 @@ public class Srch_crt_sql {
|
||||
rng_end = String_.new_u8(gplx.core.intls.Utf8_.Increment_char_at_last_pos(rng_tmp));
|
||||
break;
|
||||
case Srch_crt_sql.Tid__like:
|
||||
like = String_.new_u8(Bry_.Replace(raw, wildcard_byte, gplx.dbs.sqls.Sql_qry_wtr_.Like_wildcard));
|
||||
like = String_.new_u8(Bry_.Replace(raw, wildcard_byte, SqlQryWtrUtl.Like_wildcard));
|
||||
byte like_escape_byte = gplx.xowa.addons.wikis.searchs.searchers.wkrs.Srch_link_wkr_sql.Like_escape_byte;
|
||||
Bry_bfr tmp_bfr = Bry_bfr_.Get();
|
||||
try {pattern_raw = Bry_.Resolve_escape(tmp_bfr, like_escape_byte, raw, 0, raw.length);}
|
||||
|
@ -13,10 +13,14 @@ The terms of each license can be found in the source code repository:
|
||||
GPLv3 License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-GPLv3.txt
|
||||
Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
|
||||
*/
|
||||
package gplx.xowa.apps.apis.xowa.bldrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.*;
|
||||
import gplx.xowa.apps.apis.xowa.bldrs.filters.*;
|
||||
import gplx.xowa.apps.apis.xowa.bldrs.imports.*;
|
||||
import gplx.xowa.apps.apis.xowa.bldrs.runners.*;
|
||||
package gplx.xowa.apps.apis.xowa.bldrs;
|
||||
import gplx.GfoMsg;
|
||||
import gplx.Gfo_invk;
|
||||
import gplx.Gfo_invk_;
|
||||
import gplx.GfsCtx;
|
||||
import gplx.xowa.Xoa_app;
|
||||
import gplx.xowa.apps.apis.xowa.bldrs.imports.Xoapi_import;
|
||||
import gplx.xowa.apps.apis.xowa.bldrs.runners.Xoapi_runner;
|
||||
public class Xoapi_bldr_wiki implements Gfo_invk {
|
||||
public void Ctor_by_app(Xoa_app app) {
|
||||
runner.Ctor_by_app(app);
|
||||
|
Loading…
Reference in New Issue
Block a user