diff --git a/100_core/src_110_primitive/gplx/Byte_.java b/100_core/src_110_primitive/gplx/Byte_.java
index 9d95b3d02..ff3beeb2a 100644
--- a/100_core/src_110_primitive/gplx/Byte_.java
+++ b/100_core/src_110_primitive/gplx/Byte_.java
@@ -26,6 +26,12 @@ public class Byte_ {
;
public static byte cast_(Object o) {try {return (Byte)o;} catch (Exception e) {throw Err_.type_mismatch_exc_(e, byte.class, o);}}
public static byte parse_(String raw) {return Byte.parseByte(raw);}
+ public static byte parse_or_(String raw, byte or) {
+ if (raw == null) return or;
+ try {
+ return parse_(raw);
+ } catch (Exception e) {Err_.Noop(e); return or;}
+ }
public static byte By_int(int v) {return v > 127 ? (byte)(v - 256) : (byte)v;} // PERF?: (byte)(v & 0xff)
public static int Xto_int(byte v) {return v < 0 ? (int)v + 256 : v;}
public static String Xto_str(byte v) {return new Byte(v).toString();}
diff --git a/100_core/src_200_io/gplx/ios/IoEngine_system.java b/100_core/src_200_io/gplx/ios/IoEngine_system.java
index a5fd6cacd..0ce261750 100644
--- a/100_core/src_200_io/gplx/ios/IoEngine_system.java
+++ b/100_core/src_200_io/gplx/ios/IoEngine_system.java
@@ -47,7 +47,8 @@ public class IoEngine_system extends IoEngine_base {
DeleteFil_lang(fil, url);
}
@Override public boolean ExistsFil_api(Io_url url) {
- return new File(url.Xto_api()).exists();
+ File f = new File(url.Xto_api());
+ return f.exists();
}
@Override public void SaveFilText_api(IoEngine_xrg_saveFilStr mpo) {
Io_url url = mpo.Url();
@@ -85,7 +86,11 @@ public class IoEngine_system extends IoEngine_base {
@SuppressWarnings("resource")
@Override public String LoadFilStr(IoEngine_xrg_loadFilStr args) {
Io_url url = args.Url();
-
+ boolean file_exists = ExistsFil_api(url); // check if file exists first to avoid throwing exception; note that most callers pass Missing_ignored; DATE:2015-02-24
+ if (!file_exists) {
+ if (args.MissingIgnored()) return "";
+ else throw Err_Fil_NotFound(url);
+ }
// get reader for file
InputStream stream = null;
try {stream = new FileInputStream(url.Xto_api());}
@@ -600,7 +605,8 @@ class Io_stream_rdr_http implements Io_stream_rdr {
if (read_failed) {
}
else {
- prog_dlg.Log_wtr().Log_msg_to_url_fmt(session_fil, "download pass: src='~{0}' trg='~{1}'", src_str, xrg.Trg().Raw());
+ if (prog_dlg != null)
+ prog_dlg.Log_wtr().Log_msg_to_url_fmt(session_fil, "download pass: src='~{0}' trg='~{1}'", src_str, xrg.Trg().Raw());
xrg.Rslt_(IoEngine_xrg_downloadFil.Rslt_pass);
}
xrg.Prog_running_(false);
diff --git a/140_dbs/src/gplx/dbs/Db_conn.java b/140_dbs/src/gplx/dbs/Db_conn.java
index b5a6d0c32..414cbc1db 100644
--- a/140_dbs/src/gplx/dbs/Db_conn.java
+++ b/140_dbs/src/gplx/dbs/Db_conn.java
@@ -34,10 +34,11 @@ public class Db_conn {
public Db_stmt Stmt_select(String tbl, String[] cols, String... where) {return engine.New_stmt_prep(Db_qry__select_in_tbl.new_(tbl, where, cols));}
public Db_stmt Stmt_select(String tbl, Db_meta_fld_list flds, String... where) {return engine.New_stmt_prep(Db_qry__select_in_tbl.new_(tbl, where, flds.To_str_ary()));}
public void Exec_create_tbl_and_idx(Db_meta_tbl meta) {
- engine.Exec_create_tbl(meta);
- engine.Exec_create_idx(Gfo_usr_dlg_.Null, meta.Idxs());
+ engine.Exec_ddl_create_tbl(meta);
+ engine.Exec_ddl_create_idx(Gfo_usr_dlg_.Null, meta.Idxs());
}
- public void Exec_create_idx(Gfo_usr_dlg usr_dlg, Db_meta_idx... idxs) {engine.Exec_create_idx(usr_dlg, idxs);}
+ public void Exec_create_idx(Gfo_usr_dlg usr_dlg, Db_meta_idx... idxs) {engine.Exec_ddl_create_idx(usr_dlg, idxs);}
+ public void Exec_ddl_append_fld(String tbl, Db_meta_fld fld) {engine.Exec_ddl_append_fld(tbl, fld);}
public Db_stmt Rls_reg(Db_stmt stmt) {rls_list.Add(stmt); return stmt;}
public void Conn_term() {
int len = rls_list.Count();
diff --git a/140_dbs/src/gplx/dbs/Db_meta_fld.java b/140_dbs/src/gplx/dbs/Db_meta_fld.java
index 861aafc72..5c385af96 100644
--- a/140_dbs/src/gplx/dbs/Db_meta_fld.java
+++ b/140_dbs/src/gplx/dbs/Db_meta_fld.java
@@ -17,9 +17,9 @@ along with this program. If not, see .
*/
package gplx.dbs; import gplx.*;
public class Db_meta_fld {
- public Db_meta_fld(String name, int tid, int len, boolean nullable, boolean primary, boolean autoincrement) {
+ public Db_meta_fld(String name, int tid, int len, boolean nullable, boolean primary, boolean autoincrement, Object default_value) {
this.name = name; this.tid = tid; this.len = len;
- this.nullable = nullable; this.primary = primary; this.autoincrement = autoincrement;
+ this.nullable = nullable; this.primary = primary; this.autoincrement = autoincrement; this.default_value = default_value;
}
public int Tid() {return tid;} private final int tid;
public String Name() {return name;} private final String name;
@@ -27,7 +27,9 @@ public class Db_meta_fld {
public boolean Nullable() {return nullable;} private final boolean nullable;
public boolean Primary() {return primary;} private final boolean primary;
public boolean Autoincrement() {return autoincrement;} private final boolean autoincrement;
+ public Object Default_value() {return default_value;} private final Object default_value;
public static final int Tid_bool = 0, Tid_byte = 1, Tid_short = 2, Tid_int = 3, Tid_long = 4, Tid_float = 5, Tid_double = 6, Tid_str = 7, Tid_text = 8, Tid_bry = 9;
- public static final String[] Ary_empy = String_.Ary_empty;
public static final String Key_null = null;
+ public static final String[] Ary_empy = String_.Ary_empty;
+ public static final Object Default_value_null = null;
}
diff --git a/140_dbs/src/gplx/dbs/Db_meta_fld_list.java b/140_dbs/src/gplx/dbs/Db_meta_fld_list.java
index c033d5e07..a1fbf6a08 100644
--- a/140_dbs/src/gplx/dbs/Db_meta_fld_list.java
+++ b/140_dbs/src/gplx/dbs/Db_meta_fld_list.java
@@ -40,20 +40,23 @@ public class Db_meta_fld_list {
}
return rv.XtoStrAry();
}
- public String Add_bool(String name) {return Add(name, Db_meta_fld.Tid_bool, Len_null, Bool_.N, Bool_.N, Bool_.N);}
- public String Add_byte(String name) {return Add(name, Db_meta_fld.Tid_byte, Len_null, Bool_.N, Bool_.N, Bool_.N);}
- public String Add_short(String name) {return Add(name, Db_meta_fld.Tid_short, Len_null, Bool_.N, Bool_.N, Bool_.N);}
- public String Add_int(String name) {return Add(name, Db_meta_fld.Tid_int, Len_null, Bool_.N, Bool_.N, Bool_.N);}
- public String Add_int_pkey(String name) {return Add(name, Db_meta_fld.Tid_int, Len_null, Bool_.N, Bool_.Y, Bool_.N);}
- public String Add_int_pkey_autonum(String name) {return Add(name, Db_meta_fld.Tid_int, Len_null, Bool_.N, Bool_.Y, Bool_.Y);}
- public String Add_long(String name) {return Add(name, Db_meta_fld.Tid_long, Len_null, Bool_.N, Bool_.N, Bool_.N);}
- public String Add_float(String name) {return Add(name, Db_meta_fld.Tid_float, Len_null, Bool_.N, Bool_.N, Bool_.N);}
- public String Add_double(String name) {return Add(name, Db_meta_fld.Tid_double, Len_null, Bool_.N, Bool_.N, Bool_.N);}
- public String Add_str(String name, int len) {return Add(name, Db_meta_fld.Tid_str, len, Bool_.N, Bool_.N, Bool_.N);}
- public String Add_text(String name) {return Add(name, Db_meta_fld.Tid_text, Len_null, Bool_.N, Bool_.N, Bool_.N);}
- public String Add_bry(String name) {return Add(name, Db_meta_fld.Tid_bry, Len_null, Bool_.N, Bool_.N, Bool_.N);}
- public String Add(String name, int tid, int len, boolean nullable, boolean primary, boolean autoincrement) {
- Db_meta_fld fld = new Db_meta_fld(name, tid, len, nullable, primary, autoincrement);
+ public String Add_bool(String name) {return Add(name, Db_meta_fld.Tid_bool, Len_null, Bool_.N, Bool_.N, Bool_.N, Db_meta_fld.Default_value_null);}
+ public String Add_byte(String name) {return Add(name, Db_meta_fld.Tid_byte, Len_null, Bool_.N, Bool_.N, Bool_.N, Db_meta_fld.Default_value_null);}
+ public String Add_short(String name) {return Add(name, Db_meta_fld.Tid_short, Len_null, Bool_.N, Bool_.N, Bool_.N, Db_meta_fld.Default_value_null);}
+ public String Add_int(String name) {return Add(name, Db_meta_fld.Tid_int, Len_null, Bool_.N, Bool_.N, Bool_.N, Db_meta_fld.Default_value_null);}
+ public String Add_int_pkey(String name) {return Add(name, Db_meta_fld.Tid_int, Len_null, Bool_.N, Bool_.Y, Bool_.N, Db_meta_fld.Default_value_null);}
+ public String Add_int_pkey_autonum(String name) {return Add(name, Db_meta_fld.Tid_int, Len_null, Bool_.N, Bool_.Y, Bool_.Y, Db_meta_fld.Default_value_null);}
+ public String Add_int_dflt(String name, int dflt) {return Add(name, Db_meta_fld.Tid_int, Len_null, Bool_.N, Bool_.N, Bool_.N, dflt);}
+ public String Add_long(String name) {return Add(name, Db_meta_fld.Tid_long, Len_null, Bool_.N, Bool_.N, Bool_.N, Db_meta_fld.Default_value_null);}
+ public String Add_float(String name) {return Add(name, Db_meta_fld.Tid_float, Len_null, Bool_.N, Bool_.N, Bool_.N, Db_meta_fld.Default_value_null);}
+ public String Add_double(String name) {return Add(name, Db_meta_fld.Tid_double, Len_null, Bool_.N, Bool_.N, Bool_.N, Db_meta_fld.Default_value_null);}
+ public String Add_str(String name, int len) {return Add(name, Db_meta_fld.Tid_str, len, Bool_.N, Bool_.N, Bool_.N, Db_meta_fld.Default_value_null);}
+ public String Add_str_dflt(String name, int len, String dflt)
+ {return Add(name, Db_meta_fld.Tid_str, len, Bool_.N, Bool_.N, Bool_.N, dflt);}
+ public String Add_text(String name) {return Add(name, Db_meta_fld.Tid_text, Len_null, Bool_.N, Bool_.N, Bool_.N, Db_meta_fld.Default_value_null);}
+ public String Add_bry(String name) {return Add(name, Db_meta_fld.Tid_bry, Len_null, Bool_.N, Bool_.N, Bool_.N, Db_meta_fld.Default_value_null);}
+ public String Add(String name, int tid, int len, boolean nullable, boolean primary, boolean autoincrement, Object default_value) {
+ Db_meta_fld fld = new Db_meta_fld(name, tid, len, nullable, primary, autoincrement, default_value);
flds.Add(name, fld);
keys.Add(name);
return name;
diff --git a/140_dbs/src/gplx/dbs/engines/Db_engine.java b/140_dbs/src/gplx/dbs/engines/Db_engine.java
index 0b7d5bb35..8dcd1947b 100644
--- a/140_dbs/src/gplx/dbs/engines/Db_engine.java
+++ b/140_dbs/src/gplx/dbs/engines/Db_engine.java
@@ -29,6 +29,7 @@ public interface Db_engine {
void Conn_open();
void Conn_term();
Object Exec_as_obj(Db_qry qry);
- void Exec_create_tbl(Db_meta_tbl meta);
- void Exec_create_idx(Gfo_usr_dlg usr_dlg, Db_meta_idx... ary);
+ void Exec_ddl_create_tbl(Db_meta_tbl meta);
+ void Exec_ddl_create_idx(Gfo_usr_dlg usr_dlg, Db_meta_idx... ary);
+ void Exec_ddl_append_fld(String tbl, Db_meta_fld fld);
}
diff --git a/140_dbs/src/gplx/dbs/engines/Db_engine_sql_base.java b/140_dbs/src/gplx/dbs/engines/Db_engine_sql_base.java
index fd2abf666..0e9ae9c1b 100644
--- a/140_dbs/src/gplx/dbs/engines/Db_engine_sql_base.java
+++ b/140_dbs/src/gplx/dbs/engines/Db_engine_sql_base.java
@@ -53,8 +53,8 @@ public abstract class Db_engine_sql_base implements Db_engine {
}
catch (Exception exc) {throw Err_.err_(exc, "exec reader failed").Add("sql", sql).Add("err", Err_.Message_gplx_brief(exc));}
}
- public void Exec_create_tbl(Db_meta_tbl meta) {Exec_as_int(meta.To_sql_create());}
- public void Exec_create_idx(Gfo_usr_dlg usr_dlg, Db_meta_idx... ary) {
+ public void Exec_ddl_create_tbl(Db_meta_tbl meta) {Exec_as_int(meta.To_sql_create());}
+ public void Exec_ddl_create_idx(Gfo_usr_dlg usr_dlg, Db_meta_idx... ary) {
int len = ary.length;
for (int i = 0; i < len; ++i) {
Db_meta_idx idx = ary[i];
@@ -62,6 +62,9 @@ public abstract class Db_engine_sql_base implements Db_engine {
Exec_as_int(idx.To_sql_create());
}
}
+ public void Exec_ddl_append_fld(String tbl, Db_meta_fld fld) {
+ Exec_as_int(Db_sqlbldr__sqlite.I.Bld_alter_tbl_add(tbl, fld));
+ }
@gplx.Virtual public DataRdr New_rdr(ResultSet rdr, String sql) {return gplx.stores.Db_data_rdr_.new_(rdr, sql);}
@gplx.Virtual public Sql_qry_wtr SqlWtr() {return Sql_qry_wtr_.new_ansi();}
@gplx.Internal protected abstract Connection Conn_new();
diff --git a/140_dbs/src/gplx/dbs/engines/mems/Db_engine__mem.java b/140_dbs/src/gplx/dbs/engines/mems/Db_engine__mem.java
index 6171c99f4..1dce12495 100644
--- a/140_dbs/src/gplx/dbs/engines/mems/Db_engine__mem.java
+++ b/140_dbs/src/gplx/dbs/engines/mems/Db_engine__mem.java
@@ -34,10 +34,11 @@ public class Db_engine__mem implements Db_engine {
public Db_rdr New_rdr_by_obj(Object rdr, String sql) {throw Err_.not_implemented_();}
public DataRdr New_rdr(java.sql.ResultSet rdr, String sql) {throw Err_.not_implemented_();}
public Object New_stmt_prep_as_obj(String sql) {throw Err_.not_implemented_();}
- public void Exec_create_tbl(Db_meta_tbl meta) {
+ public void Exec_ddl_create_tbl(Db_meta_tbl meta) {
Mem_tbl mem_tbl = new Mem_tbl();
tbl_hash.AddReplace(meta.Name(), mem_tbl);
}
- public void Exec_create_idx(Gfo_usr_dlg usr_dlg, Db_meta_idx... ary) {} // TODO: implement unique index
+ public void Exec_ddl_create_idx(Gfo_usr_dlg usr_dlg, Db_meta_idx... ary) {} // TODO: implement unique index
+ public void Exec_ddl_append_fld(String tbl, Db_meta_fld fld) {}
public static final Db_engine__mem _ = new Db_engine__mem(); Db_engine__mem() {}
}
diff --git a/140_dbs/src/gplx/dbs/engines/nulls/Null_engine.java b/140_dbs/src/gplx/dbs/engines/nulls/Null_engine.java
index ae2112ac1..895a20431 100644
--- a/140_dbs/src/gplx/dbs/engines/nulls/Null_engine.java
+++ b/140_dbs/src/gplx/dbs/engines/nulls/Null_engine.java
@@ -29,7 +29,8 @@ public class Null_engine implements Db_engine {
public void Txn_bgn() {}
public void Txn_end() {}
public Object Exec_as_obj(Db_qry cmd) {return cmd.Exec_is_rdr() ? (Object)DataRdr_.Null : -1;}
- public void Exec_create_tbl(Db_meta_tbl meta) {}
- public void Exec_create_idx(Gfo_usr_dlg usr_dlg, Db_meta_idx... ary) {}
+ public void Exec_ddl_create_tbl(Db_meta_tbl meta) {}
+ public void Exec_ddl_create_idx(Gfo_usr_dlg usr_dlg, Db_meta_idx... ary) {}
+ public void Exec_ddl_append_fld(String tbl, Db_meta_fld fld) {}
public static final Null_engine _ = new Null_engine(); Null_engine() {}
}
diff --git a/140_dbs/src/gplx/dbs/engines/tdbs/TdbEngine.java b/140_dbs/src/gplx/dbs/engines/tdbs/TdbEngine.java
index 7f4d13de5..997cb404f 100644
--- a/140_dbs/src/gplx/dbs/engines/tdbs/TdbEngine.java
+++ b/140_dbs/src/gplx/dbs/engines/tdbs/TdbEngine.java
@@ -54,8 +54,10 @@ public class TdbEngine implements Db_engine {
public void FlushTbl(TdbTable tbl) {
saveMgr.SaveFile(db, tbl.File());
}
- public void Exec_create_tbl(Db_meta_tbl meta) {throw Err_.not_implemented_();}
- public void Exec_create_idx(Gfo_usr_dlg usr_dlg, Db_meta_idx... ary) {throw Err_.not_implemented_();}
+ public void Exec_ddl_create_tbl(Db_meta_tbl meta) {throw Err_.not_implemented_();}
+ public void Exec_ddl_create_idx(Gfo_usr_dlg usr_dlg, Db_meta_idx... ary) {throw Err_.not_implemented_();}
+ public void Exec_ddl_append_fld(String tbl, Db_meta_fld fld) {throw Err_.not_implemented_();}
+
HashAdp wkrs = HashAdp_.new_(); TdbDbLoadMgr loadMgr = TdbDbLoadMgr.new_(); TdbDbSaveMgr saveMgr = TdbDbSaveMgr.new_();
public static final TdbEngine _ = new TdbEngine();
diff --git a/140_dbs/src/gplx/dbs/sqls/Db_sqlbldr__sqlite.java b/140_dbs/src/gplx/dbs/sqls/Db_sqlbldr__sqlite.java
index 6af3a4da1..eb6e210b2 100644
--- a/140_dbs/src/gplx/dbs/sqls/Db_sqlbldr__sqlite.java
+++ b/140_dbs/src/gplx/dbs/sqls/Db_sqlbldr__sqlite.java
@@ -40,24 +40,44 @@ public class Db_sqlbldr__sqlite implements Db_sqlbldr {
return tmp_bfr.Xto_str_and_clear();
}
public String Bld_create_tbl(Db_meta_tbl tbl) {
- tmp_bfr.Add_str_ascii("CREATE TABLE ").Add_str_ascii(tbl.Name()).Add_byte_nl();
+ tmp_bfr.Add_str_ascii("CREATE TABLE IF NOT EXISTS ").Add_str_ascii(tbl.Name()).Add_byte_nl();
Db_meta_fld[] flds = tbl.Flds();
int flds_len = flds.length;
for (int i = 0; i < flds_len; ++i) {
Db_meta_fld fld = flds[i];
tmp_bfr.Add_byte(i == 0 ? Byte_ascii.Paren_bgn : Byte_ascii.Comma).Add_byte_space();
- tmp_bfr.Add_str_ascii(fld.Name()).Add_byte_space();
- Tid_to_sql(tmp_bfr, fld.Tid(), fld.Len()); tmp_bfr.Add_byte_space();
- tmp_bfr.Add_str_ascii(fld.Nullable() ? "NULL " : "NOT NULL ");
- if (fld.Primary()) tmp_bfr.Add_str_ascii("PRIMARY KEY ");
- if (fld.Autoincrement()) tmp_bfr.Add_str_ascii("AUTOINCREMENT ");
- tmp_bfr.Del_by_1(); // remove trailing space
+ Bld_fld(tmp_bfr, fld);
tmp_bfr.Add_byte_nl();
}
tmp_bfr.Add_str_ascii(");");
return tmp_bfr.Xto_str_and_clear();
}
- public void Tid_to_sql(Bry_bfr tmp_bfr, int tid, int len) {// REF: https://www.sqlite.org/datatype3.html
+ public String Bld_alter_tbl_add(String tbl, Db_meta_fld fld) {
+ tmp_bfr.Add_str_ascii("ALTER TABLE ").Add_str_ascii(tbl).Add_str_ascii(" ADD ");
+ Bld_fld(tmp_bfr, fld);
+ tmp_bfr.Add_byte_semic();
+ return tmp_bfr.Xto_str_and_clear();
+ }
+ private void Bld_fld(Bry_bfr tmp_bfr, Db_meta_fld fld) {
+ tmp_bfr.Add_str_ascii(fld.Name()).Add_byte_space();
+ Tid_to_sql(tmp_bfr, fld.Tid(), fld.Len()); tmp_bfr.Add_byte_space();
+ tmp_bfr.Add_str_ascii(fld.Nullable() ? "NULL " : "NOT NULL ");
+ if (fld.Default_value() != Db_meta_fld.Default_value_null) {
+ tmp_bfr.Add_str_ascii("DEFAULT ");
+ boolean quote = Bool_.N;
+ switch (fld.Tid()) {
+ case Db_meta_fld.Tid_str: case Db_meta_fld.Tid_text: quote = Bool_.Y; break;
+ }
+ if (quote) tmp_bfr.Add_byte_apos();
+ tmp_bfr.Add_str_utf8(Object_.Xto_str_strict_or_null(fld.Default_value()));
+ if (quote) tmp_bfr.Add_byte_apos();
+ tmp_bfr.Add_byte_space();
+ }
+ if (fld.Primary()) tmp_bfr.Add_str_ascii("PRIMARY KEY ");
+ if (fld.Autoincrement()) tmp_bfr.Add_str_ascii("AUTOINCREMENT ");
+ tmp_bfr.Del_by_1(); // remove trailing space
+ }
+ public static void Tid_to_sql(Bry_bfr tmp_bfr, int tid, int len) {// REF: https://www.sqlite.org/datatype3.html
switch (tid) {
case Db_meta_fld.Tid_bool: tmp_bfr.Add_str_ascii("boolean"); break;
case Db_meta_fld.Tid_byte: tmp_bfr.Add_str_ascii("tinyint"); break;
diff --git a/140_dbs/src/gplx/dbs/sqls/Db_sqlbldr_tst.java b/140_dbs/src/gplx/dbs/sqls/Db_sqlbldr_tst.java
index 55ccf8520..d72c57fab 100644
--- a/140_dbs/src/gplx/dbs/sqls/Db_sqlbldr_tst.java
+++ b/140_dbs/src/gplx/dbs/sqls/Db_sqlbldr_tst.java
@@ -38,7 +38,7 @@ public class Db_sqlbldr_tst {
flds.Add_bry("fld_bry");
fxt.Test_create_tbl(Db_meta_tbl.new_("tbl_name", flds.To_fld_ary())
, String_.Concat_lines_nl_skip_last
- ( "CREATE TABLE tbl_name"
+ ( "CREATE TABLE IF NOT EXISTS tbl_name"
, "( fld_int_pkey integer NOT NULL PRIMARY KEY"
, ", fld_bool boolean NOT NULL"
, ", fld_short smallint NOT NULL"
@@ -52,13 +52,17 @@ public class Db_sqlbldr_tst {
, ");"
));
}
+ @Test public void Tbl_alter_tbl_add() {
+ Db_meta_fld_list flds = Db_meta_fld_list.new_();
+ flds.Add_int_dflt("fld_int", -1);
+ flds.Add_str_dflt("fld_str", 255, "a");
+ fxt.Test_alter_tbl_add("tbl_name", flds.Get_by("fld_int"), "ALTER TABLE tbl_name ADD fld_int integer NOT NULL DEFAULT -1;");
+ fxt.Test_alter_tbl_add("tbl_name", flds.Get_by("fld_str"), "ALTER TABLE tbl_name ADD fld_str varchar(255) NOT NULL DEFAULT 'a';");
+ }
}
class Db_sqlbldr_fxt {
private Db_sqlbldr__sqlite sqlbldr = Db_sqlbldr__sqlite.I;
- public void Test_create_idx(Db_meta_idx idx, String expd) {
- Tfds.Eq(expd, sqlbldr.Bld_create_idx(idx));
- }
- public void Test_create_tbl(Db_meta_tbl tbl, String expd) {
- Tfds.Eq_str_lines(expd, sqlbldr.Bld_create_tbl(tbl));
- }
+ public void Test_create_idx(Db_meta_idx idx, String expd) {Tfds.Eq(expd, sqlbldr.Bld_create_idx(idx));}
+ public void Test_create_tbl(Db_meta_tbl tbl, String expd) {Tfds.Eq_str_lines(expd, sqlbldr.Bld_create_tbl(tbl));}
+ public void Test_alter_tbl_add(String tbl, Db_meta_fld fld, String expd) {Tfds.Eq_str_lines(expd, sqlbldr.Bld_alter_tbl_add(tbl, fld));}
}
diff --git a/140_dbs/src/gplx/dbs/sqls/Sql_qry_wtr_ansi.java b/140_dbs/src/gplx/dbs/sqls/Sql_qry_wtr_ansi.java
index 956130689..69445c055 100644
--- a/140_dbs/src/gplx/dbs/sqls/Sql_qry_wtr_ansi.java
+++ b/140_dbs/src/gplx/dbs/sqls/Sql_qry_wtr_ansi.java
@@ -20,7 +20,7 @@ import gplx.core.strings.*; import gplx.core.criterias.*;
import gplx.dbs.qrys.*;
public class Sql_qry_wtr_ansi implements Sql_qry_wtr {
private final String_bldr sb = String_bldr_.new_();
- private boolean prepare = false;
+ public boolean prepare = false;
public String Xto_str(Db_qry cmd, boolean prepare) {
synchronized (sb) {
this.prepare = prepare;
diff --git a/140_dbs/src/gplx/dbs/utls/Db_sys_regy_tbl.java b/140_dbs/src/gplx/dbs/utls/Db_sys_regy_tbl.java
index c5ce94a4e..bca97e0b0 100644
--- a/140_dbs/src/gplx/dbs/utls/Db_sys_regy_tbl.java
+++ b/140_dbs/src/gplx/dbs/utls/Db_sys_regy_tbl.java
@@ -18,6 +18,17 @@ along with this program. If not, see .
package gplx.dbs.utls; import gplx.*; import gplx.dbs.*;
class Db_sys_regy_tbl {
private final String tbl_name;
+ private static final Db_meta_fld_list Flds = Db_meta_fld_list.new_();
+ private static final String
+ Fld_regy_grp = Flds.Add_str("regy_grp", 1024)
+ , Fld_regy_key = Flds.Add_str("regy_key", 1024)
+ , Fld_regy_val = Flds.Add_str("regy_val", 4096)
+ ;
+ public static Db_meta_tbl new_meta(String tbl) {
+ return Db_meta_tbl.new_(tbl, Flds.To_fld_ary()
+ , Db_meta_idx.new_unique_by_tbl(tbl, "key", Flds.To_str_ary())
+ );
+ }
private Db_meta_tbl meta;
private Db_conn conn;
public Db_sys_regy_tbl(Db_url url, String tbl_name) {
@@ -46,15 +57,4 @@ class Db_sys_regy_tbl {
return rdr.Move_next() ? rdr.Read_str(Fld_regy_val) : or;
} finally {rdr.Rls();}
}
- private static final Db_meta_fld_list Flds = Db_meta_fld_list.new_();
- private static final String
- Fld_regy_grp = Flds.Add_str("regy_grp", 1024)
- , Fld_regy_key = Flds.Add_str("regy_key", 1024)
- , Fld_regy_val = Flds.Add_str("regy_val", 4096)
- ;
- public static Db_meta_tbl new_meta(String tbl) {
- return Db_meta_tbl.new_(tbl, Flds.To_fld_ary()
- , Db_meta_idx.new_unique_by_tbl(tbl, "key", Flds.To_str_ary())
- );
- }
}
diff --git a/400_xowa/src/gplx/core/brys/Bry_rdr.java b/400_xowa/src/gplx/core/brys/Bry_rdr.java
index c498cb092..1706e9200 100644
--- a/400_xowa/src/gplx/core/brys/Bry_rdr.java
+++ b/400_xowa/src/gplx/core/brys/Bry_rdr.java
@@ -75,9 +75,10 @@ public class Bry_rdr {
}
return bgn == pos ? or_bry : Bry_.Mid(src, bgn, src_len);
}
- public boolean Read_yn_to_pipe() {
- boolean rv = src[pos] == Byte_ascii.Ltr_y;
- pos += 2; // 1 for y/n; 1 for pipe
+ public boolean Read_yn_to_pipe() {return Read_byte_to_pipe() == Byte_ascii.Ltr_y;}
+ public byte Read_byte_to_pipe() {
+ byte rv = src[pos];
+ pos += 2; // 1 for byte; 1 for pipe;
return rv;
}
public double Read_double_to_pipe() {return Read_double_to(Byte_ascii.Pipe);}
diff --git a/400_xowa/src/gplx/core/btries/Btrie_slim_mgr.java b/400_xowa/src/gplx/core/btries/Btrie_slim_mgr.java
index 84ecb781f..df2e282e2 100644
--- a/400_xowa/src/gplx/core/btries/Btrie_slim_mgr.java
+++ b/400_xowa/src/gplx/core/btries/Btrie_slim_mgr.java
@@ -42,6 +42,7 @@ public class Btrie_slim_mgr implements Btrie_mgr {
}
public Btrie_slim_mgr Add_bry_tid(byte[] bry, byte tid) {return (Btrie_slim_mgr)Add_obj(bry, Byte_obj_val.new_(tid));}
public Btrie_slim_mgr Add_str_byte(String key, byte val) {return (Btrie_slim_mgr)Add_obj(Bry_.new_utf8_(key), Byte_obj_val.new_(val));}
+ public Btrie_slim_mgr Add_str_int(String key, int val) {return (Btrie_slim_mgr)Add_obj(Bry_.new_utf8_(key), Int_obj_val.new_(val));}
public Btrie_slim_mgr Add_bry(String key, String val) {return (Btrie_slim_mgr)Add_obj(Bry_.new_utf8_(key), Bry_.new_utf8_(val));}
public Btrie_slim_mgr Add_bry(String key, byte[] val) {return (Btrie_slim_mgr)Add_obj(Bry_.new_utf8_(key), val);}
public Btrie_slim_mgr Add_bry(byte[] v) {return (Btrie_slim_mgr)Add_obj(v, v);}
diff --git a/400_xowa/src/gplx/dbs/cfgs/Db_cfg_tbl.java b/400_xowa/src/gplx/dbs/cfgs/Db_cfg_tbl.java
index 2b00c9b60..54cd7f0ff 100644
--- a/400_xowa/src/gplx/dbs/cfgs/Db_cfg_tbl.java
+++ b/400_xowa/src/gplx/dbs/cfgs/Db_cfg_tbl.java
@@ -21,10 +21,11 @@ public class Db_cfg_tbl {
private String tbl_name; private final Db_meta_fld_list flds = Db_meta_fld_list.new_();
private String fld_grp, fld_key, fld_val;
private Db_conn conn; private Db_stmt stmt_insert, stmt_update, stmt_select;
- public void Conn_(Db_conn new_conn, boolean created, boolean version_is_1, String tbl_v1, String tbl_v2) {
+ public Db_conn Conn() {return conn;}
+ public void Conn_(Db_conn new_conn, boolean created, boolean schema_is_1, String tbl_v1, String tbl_v2) {
this.conn = new_conn; flds.Clear();
String fld_prefix = "";
- if (version_is_1) {
+ if (schema_is_1) {
tbl_name = tbl_v1;
fld_prefix = "cfg_";
}
@@ -54,6 +55,8 @@ public class Db_cfg_tbl {
if (rv == Int_.MinValue) throw Err_.new_fmt_("dbs.cfg_tbl.Select_as_int_or_fail: tbl={0} grp={1} key={2}", tbl_name, grp, key);
return rv;
}
+ public long Select_as_long_or(String grp, String key, long or) {return Long_.parse_or_(Select_as_str_or(grp, key, null), or);}
+ public byte Select_as_byte_or(String grp, String key, byte or) {return Byte_.parse_or_(Select_as_str_or(grp, key, null), or);}
public int Select_as_int_or(String grp, String key, int or) {return Int_.parse_or_(Select_as_str_or(grp, key, null), or);}
public String Select_as_str_or(String grp, String key, String or) {
if (stmt_select == null) stmt_select = conn.Rls_reg(conn.Stmt_select(tbl_name, String_.Ary(fld_val), fld_grp, fld_key));
diff --git a/400_xowa/src/gplx/fsdb/data/Fsd_bin_tbl.java b/400_xowa/src/gplx/fsdb/data/Fsd_bin_tbl.java
index 3b8000acf..8c0be927c 100644
--- a/400_xowa/src/gplx/fsdb/data/Fsd_bin_tbl.java
+++ b/400_xowa/src/gplx/fsdb/data/Fsd_bin_tbl.java
@@ -23,10 +23,10 @@ public class Fsd_bin_tbl {
private String fld_owner_id, fld_owner_tid, fld_part_id, fld_data_url, fld_data;
private Db_conn conn;
private Bry_bfr tmp_bfr = Bry_bfr.reset_(Io_mgr.Len_kb);
- public void Conn_(Db_conn new_conn, boolean created, boolean version_is_1) {
+ public void Conn_(Db_conn new_conn, boolean created, boolean schema_is_1) {
this.conn = new_conn; flds.Clear();
String fld_prefix = "";
- if (version_is_1) {
+ if (schema_is_1) {
tbl_name = "fsdb_bin";
fld_prefix = "bin_";
}
diff --git a/400_xowa/src/gplx/fsdb/data/Fsd_dir_tbl.java b/400_xowa/src/gplx/fsdb/data/Fsd_dir_tbl.java
index 75a807063..60a7cc792 100644
--- a/400_xowa/src/gplx/fsdb/data/Fsd_dir_tbl.java
+++ b/400_xowa/src/gplx/fsdb/data/Fsd_dir_tbl.java
@@ -21,10 +21,10 @@ public class Fsd_dir_tbl {
private String tbl_name = "file_data_dir"; private final Db_meta_fld_list flds = Db_meta_fld_list.new_();
private String fld_id, fld_owner_id, fld_name;
private Db_conn conn; private Db_stmt stmt_insert, stmt_update, stmt_select_by_name;
- public void Conn_(Db_conn new_conn, boolean created, boolean version_is_1) {
+ public void Conn_(Db_conn new_conn, boolean created, boolean schema_is_1) {
this.conn = new_conn; flds.Clear();
String fld_prefix = "";
- if (version_is_1) {
+ if (schema_is_1) {
tbl_name = "fsdb_dir";
fld_prefix = "dir_";
}
diff --git a/400_xowa/src/gplx/fsdb/data/Fsd_fil_tbl.java b/400_xowa/src/gplx/fsdb/data/Fsd_fil_tbl.java
index f62a3d51e..c7915ba0a 100644
--- a/400_xowa/src/gplx/fsdb/data/Fsd_fil_tbl.java
+++ b/400_xowa/src/gplx/fsdb/data/Fsd_fil_tbl.java
@@ -22,10 +22,10 @@ public class Fsd_fil_tbl {
private String fld_id, fld_owner_id, fld_name, fld_xtn_id, fld_ext_id, fld_size, fld_modified, fld_hash, fld_bin_db_id;
private String Idx_owner;
private Db_conn conn; private Db_stmt stmt_insert, stmt_update, stmt_select_by_name;
- public void Conn_(Db_conn new_conn, boolean created, boolean version_is_1) {
+ public void Conn_(Db_conn new_conn, boolean created, boolean schema_is_1) {
this.conn = new_conn; flds.Clear();
String fld_prefix = "";
- if (version_is_1) {
+ if (schema_is_1) {
tbl_name = "fsdb_fil";
fld_prefix = "fil_";
}
diff --git a/400_xowa/src/gplx/fsdb/data/Fsd_thm_tbl.java b/400_xowa/src/gplx/fsdb/data/Fsd_thm_tbl.java
index 35d64e61f..04fb30c84 100644
--- a/400_xowa/src/gplx/fsdb/data/Fsd_thm_tbl.java
+++ b/400_xowa/src/gplx/fsdb/data/Fsd_thm_tbl.java
@@ -23,10 +23,10 @@ public class Fsd_thm_tbl {
private String fld_id, fld_owner_id, fld_w, fld_h, fld_time, fld_page, fld_bin_db_id, fld_size, fld_modified, fld_hash, fld_thumbtime;
private Db_conn conn; private Db_stmt stmt_insert, stmt_select_by_fil_w;
private Fsm_atr_fil atr_fil;
- public void Conn_(Db_conn new_conn, boolean created, boolean version_is_1, Fsm_atr_fil atr_fil) {
+ public void Conn_(Db_conn new_conn, boolean created, boolean schema_is_1, Fsm_atr_fil atr_fil) {
this.conn = new_conn; flds.Clear(); this.atr_fil = atr_fil;
String fld_prefix = "";
- if (version_is_1) {
+ if (schema_is_1) {
tbl_name = "fsdb_xtn_thm";
fld_prefix = "thm_";
}
diff --git a/400_xowa/src/gplx/fsdb/meta/Fsm_abc_mgr.java b/400_xowa/src/gplx/fsdb/meta/Fsm_abc_mgr.java
index b2b8d7320..3f8babe02 100644
--- a/400_xowa/src/gplx/fsdb/meta/Fsm_abc_mgr.java
+++ b/400_xowa/src/gplx/fsdb/meta/Fsm_abc_mgr.java
@@ -25,14 +25,14 @@ public class Fsm_abc_mgr implements RlsAble {
public Fsm_cfg_mgr Cfg_mgr() {return cfg_mgr;} private final Fsm_cfg_mgr cfg_mgr = new Fsm_cfg_mgr();
public int Next_id() {return cfg_mgr.Next_id();}
private static final String Db_conn_bldr_type = "gplx.fsdb.abc";
- public void Init_for_db(boolean version_is_1, Io_url dir) {
+ public void Init_for_db(boolean schema_is_1, Io_url dir) {
Io_url abc_url = dir.GenSubFil("fsdb.abc.sqlite3");
Db_conn_bldr_data conn_data = Db_conn_bldr.I.Get_or_new(Db_conn_bldr_type, abc_url);
boolean created = conn_data.Created();
conn = conn_data.Conn();
- atr_mgr.Init_for_db(conn, created, version_is_1, dir, this);
- bin_mgr.Init_for_db(conn, created, version_is_1, dir);
- cfg_mgr.Init_for_db(conn, created, version_is_1);
+ atr_mgr.Init_for_db(conn, created, schema_is_1, dir, this);
+ bin_mgr.Init_for_db(conn, created, schema_is_1, dir);
+ cfg_mgr.Init_for_db(conn, created, schema_is_1);
if (created) {
this.Txn_save(); // immediately save new entries in atr,cfg
}
diff --git a/400_xowa/src/gplx/fsdb/meta/Fsm_atr_fil.java b/400_xowa/src/gplx/fsdb/meta/Fsm_atr_fil.java
index 268e325d6..523e6fa35 100644
--- a/400_xowa/src/gplx/fsdb/meta/Fsm_atr_fil.java
+++ b/400_xowa/src/gplx/fsdb/meta/Fsm_atr_fil.java
@@ -27,10 +27,10 @@ public class Fsm_atr_fil implements RlsAble {
this.abc_mgr = abc_mgr;
Db_conn_bldr_data conn_data = Db_conn_bldr.I.Get_or_new(Db_conn_bldr_type, io_url);
boolean created = conn_data.Created(); conn = conn_data.Conn();
- boolean version_is_1 = Bool_.Y;
- tbl_dir.Conn_(conn, created, version_is_1);
- tbl_fil.Conn_(conn, created, version_is_1);
- tbl_thm.Conn_(conn, created, version_is_1, this);
+ boolean schema_is_1 = Bool_.Y;
+ tbl_dir.Conn_(conn, created, schema_is_1);
+ tbl_fil.Conn_(conn, created, schema_is_1);
+ tbl_thm.Conn_(conn, created, schema_is_1, this);
}
public Fsm_abc_mgr Abc_mgr() {return abc_mgr;} private Fsm_abc_mgr abc_mgr;
public Db_conn Conn() {return conn;} private Db_conn conn;
diff --git a/400_xowa/src/gplx/fsdb/meta/Fsm_atr_mgr.java b/400_xowa/src/gplx/fsdb/meta/Fsm_atr_mgr.java
index 29968c678..7025eea49 100644
--- a/400_xowa/src/gplx/fsdb/meta/Fsm_atr_mgr.java
+++ b/400_xowa/src/gplx/fsdb/meta/Fsm_atr_mgr.java
@@ -56,8 +56,8 @@ public class Fsm_atr_mgr implements RlsAble {
itm.Rls();
}
}
- public void Init_for_db(Db_conn conn, boolean created, boolean version_is_1, Io_url dir, Fsm_abc_mgr abc_mgr) {
- tbl.Conn_(conn, created, version_is_1);
+ public void Init_for_db(Db_conn conn, boolean created, boolean schema_is_1, Io_url dir, Fsm_abc_mgr abc_mgr) {
+ tbl.Conn_(conn, created, schema_is_1);
if (created) {
Fsm_atr_fil itm = Fsm_atr_fil.make_(abc_mgr, Id_0, url_(dir, Id_0), Path_bgn_0);
this.itms = new Fsm_atr_fil[] {itm};
diff --git a/400_xowa/src/gplx/fsdb/meta/Fsm_atr_tbl.java b/400_xowa/src/gplx/fsdb/meta/Fsm_atr_tbl.java
index 126019710..9b19ec4bb 100644
--- a/400_xowa/src/gplx/fsdb/meta/Fsm_atr_tbl.java
+++ b/400_xowa/src/gplx/fsdb/meta/Fsm_atr_tbl.java
@@ -21,9 +21,9 @@ public class Fsm_atr_tbl {
private String tbl_name = "file_meta_atr"; private final Db_meta_fld_list flds = Db_meta_fld_list.new_();
private String fld_uid, fld_url, fld_path_bgn;
private Db_conn conn; private final Db_stmt_bldr stmt_bldr = new Db_stmt_bldr();
- public void Conn_(Db_conn new_conn, boolean created, boolean version_is_1) {
+ public void Conn_(Db_conn new_conn, boolean created, boolean schema_is_1) {
this.conn = new_conn; flds.Clear();
- if (version_is_1) {
+ if (schema_is_1) {
tbl_name = "fsdb_db_atr";
}
fld_uid = flds.Add_int("uid");
diff --git a/400_xowa/src/gplx/fsdb/meta/Fsm_bin_mgr.java b/400_xowa/src/gplx/fsdb/meta/Fsm_bin_mgr.java
index 4e022e3b4..31717bc6d 100644
--- a/400_xowa/src/gplx/fsdb/meta/Fsm_bin_mgr.java
+++ b/400_xowa/src/gplx/fsdb/meta/Fsm_bin_mgr.java
@@ -61,9 +61,9 @@ public class Fsm_bin_mgr implements RlsAble {
Fsm_bin_fil bin_fil = fil_ary[db_id];
return bin_fil.Insert(bin_id, owner_tid, bin_len, bin_rdr);
}
- public void Init_for_db(Db_conn conn, boolean created, boolean version_is_1, Io_url dir) {
+ public void Init_for_db(Db_conn conn, boolean created, boolean schema_is_1, Io_url dir) {
this.dir = dir;
- tbl.Conn_(conn, created, version_is_1);
+ tbl.Conn_(conn, created, schema_is_1);
if (created)
this.Itms_add(0);
else {
diff --git a/400_xowa/src/gplx/fsdb/meta/Fsm_bin_tbl.java b/400_xowa/src/gplx/fsdb/meta/Fsm_bin_tbl.java
index 80e0acf1a..590bc208a 100644
--- a/400_xowa/src/gplx/fsdb/meta/Fsm_bin_tbl.java
+++ b/400_xowa/src/gplx/fsdb/meta/Fsm_bin_tbl.java
@@ -21,9 +21,9 @@ public class Fsm_bin_tbl {
private String tbl_name = "file_meta_bin"; private final Db_meta_fld_list flds = Db_meta_fld_list.new_();
private String fld_uid, fld_url, fld_bin_len, fld_bin_max;
private Db_conn conn; private final Db_stmt_bldr stmt_bldr = new Db_stmt_bldr();
- public void Conn_(Db_conn new_conn, boolean created, boolean version_is_1) {
+ public void Conn_(Db_conn new_conn, boolean created, boolean schema_is_1) {
this.conn = new_conn; flds.Clear();
- if (version_is_1) {
+ if (schema_is_1) {
tbl_name = "fsdb_db_bin";
}
fld_uid = flds.Add_int("uid");
diff --git a/400_xowa/src/gplx/fsdb/meta/Fsm_cfg_mgr.java b/400_xowa/src/gplx/fsdb/meta/Fsm_cfg_mgr.java
index fb27148da..e502e51dd 100644
--- a/400_xowa/src/gplx/fsdb/meta/Fsm_cfg_mgr.java
+++ b/400_xowa/src/gplx/fsdb/meta/Fsm_cfg_mgr.java
@@ -59,8 +59,8 @@ public class Fsm_cfg_mgr {
return grp;
}
public static Fsm_cfg_mgr new_() {return new Fsm_cfg_mgr();}
- public void Init_for_db(Db_conn conn, boolean created, boolean version_is_1) {
- cfg_tbl.Conn_(conn, created, version_is_1, Fsm_abc_mgr.Cfg_tbl_v1, Fsm_abc_mgr.Cfg_tbl_v2);
+ public void Init_for_db(Db_conn conn, boolean created, boolean schema_is_1) {
+ cfg_tbl.Conn_(conn, created, schema_is_1, Fsm_abc_mgr.Cfg_tbl_v1, Fsm_abc_mgr.Cfg_tbl_v2);
if (created) {
cfg_tbl.Insert(Fsm_cfg_mgr.Grp_core, Fsm_cfg_mgr.Key_next_id , "1"); // start next_id at 1
cfg_tbl.Insert(Fsm_cfg_mgr.Grp_core, Fsm_cfg_mgr.Key_schema_thm_page , "y"); // new dbs automatically have page and time in fsdb_xtn_tm
diff --git a/400_xowa/src/gplx/fsdb/meta/Fsm_mnt_mgr.java b/400_xowa/src/gplx/fsdb/meta/Fsm_mnt_mgr.java
index 3898a1e47..64f37c06a 100644
--- a/400_xowa/src/gplx/fsdb/meta/Fsm_mnt_mgr.java
+++ b/400_xowa/src/gplx/fsdb/meta/Fsm_mnt_mgr.java
@@ -22,24 +22,27 @@ import gplx.fsdb.data.*; import gplx.fsdb.meta.*;
public class Fsm_mnt_mgr implements GfoInvkAble {
private final Db_cfg_tbl cfg_tbl = new Db_cfg_tbl(); private final Fsm_mnt_tbl mnt_tbl = new Fsm_mnt_tbl();
private Fsm_abc_mgr[] ary; private int ary_len = 0;
- private static final String Db_conn_bldr_type_mnt = "gplx.fsdb.mnt";
- public void Init_by_wiki(Io_url db_dir, boolean version_is_1) {
- Db_conn_bldr_data conn_data = Db_conn_bldr.I.Get_or_new(Db_conn_bldr_type_mnt, db_dir.GenSubFil("wiki.mnt.sqlite3"));
- Fsm_mnt_itm[] mnts = Mnts__load_or_make(conn_data, version_is_1);
+ public static final String Mnt_name = "wiki.mnt.sqlite3";
+ public void Init_by_wiki(Io_url db_dir, boolean schema_is_1) {
+ Io_url mnt_dir = db_dir.GenSubFil(Mnt_name);
+ Db_conn_bldr_data conn_data = Db_conn_bldr.I.Get_or_new("", mnt_dir);
+ Db_conn conn = conn_data.Conn();
+ boolean created = conn_data.Created();
+ Fsm_mnt_itm[] mnts = Mnts__load_or_make(conn, created, schema_is_1);
ary_len = mnts.length;
ary = new Fsm_abc_mgr[ary_len];
for (int i = 0; i < ary_len; i++) {
Fsm_mnt_itm itm = mnts[i];
Fsm_abc_mgr abc_mgr = new Fsm_abc_mgr();
ary[i] = abc_mgr;
- if (version_is_1) {
+ if (schema_is_1) {
Io_url abc_url = db_dir.GenSubFil_nest(itm.Url(), "fsdb.abc.sqlite3");
- abc_mgr.Init_for_db(version_is_1, abc_url.OwnerDir());
+ abc_mgr.Init_for_db(schema_is_1, abc_url.OwnerDir());
}
else
throw Err_.not_implemented_();
}
- if (conn_data.Created()) Fsm_mnt_mgr.Patch(this);
+ if (created) Fsm_mnt_mgr.Patch(this);
insert_to_mnt = cfg_tbl.Select_as_int_or_fail("core", "mnt.insert_idx");
if (ary_len > 0) {
Db_cfg_grp cfg_grp = this.Mnts__at(0).Cfg_mgr().Grps_get_or_load(Xof_fsdb_mgr_cfg.Grp_xowa);
@@ -120,10 +123,9 @@ public class Fsm_mnt_mgr implements GfoInvkAble {
.Update(Xof_fsdb_mgr_cfg.Grp_xowa, Xof_fsdb_mgr_cfg.Key_upright_fix_default , "y")
;
}
- private Fsm_mnt_itm[] Mnts__load_or_make(Db_conn_bldr_data conn_data, boolean version_is_1) {
- Db_conn conn = conn_data.Conn(); boolean created = conn_data.Created();
- cfg_tbl.Conn_(conn, created, version_is_1, Fsm_abc_mgr.Cfg_tbl_v1, Fsm_abc_mgr.Cfg_tbl_v2);
- mnt_tbl.Conn_(conn, created, version_is_1);
+ private Fsm_mnt_itm[] Mnts__load_or_make(Db_conn conn, boolean created, boolean schema_is_1) {
+ cfg_tbl.Conn_(conn, created, schema_is_1, Fsm_abc_mgr.Cfg_tbl_v1, Fsm_abc_mgr.Cfg_tbl_v2);
+ mnt_tbl.Conn_(conn, created, schema_is_1);
if (created) cfg_tbl.Insert("core", "mnt.insert_idx", Int_.Xto_str(Mnt_idx_user));
return mnt_tbl.Select_all();
}
diff --git a/400_xowa/src/gplx/fsdb/meta/Fsm_mnt_tbl.java b/400_xowa/src/gplx/fsdb/meta/Fsm_mnt_tbl.java
index 048e0bd3b..47b327a10 100644
--- a/400_xowa/src/gplx/fsdb/meta/Fsm_mnt_tbl.java
+++ b/400_xowa/src/gplx/fsdb/meta/Fsm_mnt_tbl.java
@@ -21,10 +21,10 @@ public class Fsm_mnt_tbl {
private String tbl_name = "file_meta_mnt"; private final Db_meta_fld_list flds = Db_meta_fld_list.new_();
private String fld_id, fld_name, fld_url;
private Db_conn conn;
- public void Conn_(Db_conn new_conn, boolean created, boolean version_is_1) {
+ public void Conn_(Db_conn new_conn, boolean created, boolean schema_is_1) {
this.conn = new_conn; flds.Clear();
String fld_prefix = "";
- if (version_is_1) {
+ if (schema_is_1) {
tbl_name = "fsdb_mnt";
fld_prefix = "mnt_";
}
diff --git a/400_xowa/src/gplx/xowa/Xoa_app.java b/400_xowa/src/gplx/xowa/Xoa_app.java
index f1758f1d6..234457017 100644
--- a/400_xowa/src/gplx/xowa/Xoa_app.java
+++ b/400_xowa/src/gplx/xowa/Xoa_app.java
@@ -18,10 +18,14 @@ along with this program. If not, see .
package gplx.xowa; import gplx.*;
import gplx.xowa.apps.fsys.*;
import gplx.xowa.files.caches.*; import gplx.xowa.files.imgs.*;
+import gplx.xowa.urls.encoders.*;
import gplx.xowa.wmfs.*;
public interface Xoa_app {
Xoa_fsys_mgr Fsys_mgr();
Xof_cache_mgr File_mgr__cache_mgr();
Xof_img_mgr File_mgr__img_mgr();
Xowmf_mgr Wmf_mgr();
+ Gfo_usr_dlg Usr_dlg();
+ Bry_bfr_mkr Utl__bfr_mkr();
+ Url_encoder_mgr Utl__encoder_mgr();
}
diff --git a/400_xowa/src/gplx/xowa/Xoa_app_.java b/400_xowa/src/gplx/xowa/Xoa_app_.java
index 3973e422a..93f3ea7f7 100644
--- a/400_xowa/src/gplx/xowa/Xoa_app_.java
+++ b/400_xowa/src/gplx/xowa/Xoa_app_.java
@@ -16,9 +16,9 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa; import gplx.*;
-import gplx.dbs.*; import gplx.gfui.*;
+import gplx.dbs.*; import gplx.ios.*; import gplx.gfui.*;
import gplx.xowa.apps.*; import gplx.xowa.langs.*; import gplx.xowa.users.*;
-import gplx.xowa.hdumps.*; import gplx.xowa.hdumps.core.*;
+import gplx.xowa.html.hdumps.*; import gplx.xowa.html.hdumps.core.*;
import gplx.xowa.urls.encoders.*;
public class Xoa_app_ {
public static void Run(String... args) {
@@ -26,7 +26,7 @@ public class Xoa_app_ {
boot_mgr.Run(args);
}
public static final String Name = "xowa";
- public static final String Version = "2.2.4.1";
+ public static final String Version = "2.3.1.1";
public static String Build_date = "2012-12-30 00:00:00";
public static String Op_sys;
public static String User_agent = "";
@@ -41,8 +41,9 @@ public class Xoa_app_ {
public static byte Mode = Xoa_app_.Mode_console;
public static Gfo_usr_dlg Usr_dlg() {return usr_dlg;} public static void Usr_dlg_(Gfo_usr_dlg v) {usr_dlg = v;} private static Gfo_usr_dlg usr_dlg;
- public static Bry_bfr_mkr Utl_bry_bfr_mkr() {return utl_bry_bfr_mkr;} private static final Bry_bfr_mkr utl_bry_bfr_mkr = new Bry_bfr_mkr();
- public static Url_encoder_mgr Utl_encoder_mgr() {return encoder_mgr;} private static final Url_encoder_mgr encoder_mgr = new Url_encoder_mgr();
+ public static Bry_bfr_mkr Utl__bfr_mkr() {return utl__bry_bfr_mkr;} private static final Bry_bfr_mkr utl__bry_bfr_mkr = new Bry_bfr_mkr();
+ public static Url_encoder_mgr Utl__encoder_mgr() {return utl__encoder_mgr;} private static final Url_encoder_mgr utl__encoder_mgr = new Url_encoder_mgr();
+ public static Io_stream_zip_mgr Utl__zip_mgr() {return utl__zip_mgr;} private static final Io_stream_zip_mgr utl__zip_mgr = new Io_stream_zip_mgr();
public static Xoa_gfs_mgr Gfs_mgr() {return gfs_mgr;} public static void Gfs_mgr_(Xoa_gfs_mgr v) {gfs_mgr = v;} private static Xoa_gfs_mgr gfs_mgr;
// public static Xoa_lang_mgr Lang_mgr() {return lang_mgr;} public static void Lang_mgr_(Xoa_lang_mgr v) {lang_mgr = v;} private static Xoa_lang_mgr lang_mgr;
diff --git a/400_xowa/src/gplx/xowa/Xoae_app.java b/400_xowa/src/gplx/xowa/Xoae_app.java
index 1519ad53c..ac962c384 100644
--- a/400_xowa/src/gplx/xowa/Xoae_app.java
+++ b/400_xowa/src/gplx/xowa/Xoae_app.java
@@ -28,7 +28,7 @@ import gplx.xowa.wmfs.*;
public class Xoae_app implements Xoa_app, GfoInvkAble {
public Xoae_app(Gfo_usr_dlg usr_dlg, Io_url root_dir, Io_url user_dir, String bin_dir_name) {
Xoa_app_.Usr_dlg_(usr_dlg);
- Io_url.Http_file_str_encoder = Xoa_app_.Utl_encoder_mgr().Fsys();
+ Io_url.Http_file_str_encoder = Xoa_app_.Utl__encoder_mgr().Fsys();
fsys_mgr = new Xoa_fsys_mgr(bin_dir_name, root_dir);
log_wtr = usr_dlg.Log_wtr();
cfg_mgr = new Xoa_cfg_mgr(this);
@@ -42,7 +42,7 @@ public class Xoae_app implements Xoa_app, GfoInvkAble {
gui_mgr = new Xoa_gui_mgr(this);
bldr = new Xob_bldr(this);
file_mgr.Ctor_by_app(this);
- href_parser = new Xoh_href_parser(Xoa_app_.Utl_encoder_mgr().Href(), url_parser.Url_parser());
+ href_parser = new Xoh_href_parser(Xoa_app_.Utl__encoder_mgr().Href(), url_parser.Url_parser());
sanitizer = new Xop_sanitizer(parser_amp_mgr, msg_log);
user_mgr = new Xou_user_mgr(this, user);
sys_cfg = new Xoa_sys_cfg(this);
@@ -65,6 +65,8 @@ public class Xoae_app implements Xoa_app, GfoInvkAble {
public Xof_cache_mgr File_mgr__cache_mgr() {return file_mgr.Cache_mgr();}
public Xof_img_mgr File_mgr__img_mgr() {return file_mgr.Img_mgr();}
public Xowmf_mgr Wmf_mgr() {return wmf_mgr;} private final Xowmf_mgr wmf_mgr = new Xowmf_mgr();
+ public Bry_bfr_mkr Utl__bfr_mkr() {return Xoa_app_.Utl__bfr_mkr();}
+ public Url_encoder_mgr Utl__encoder_mgr() {return Xoa_app_.Utl__encoder_mgr();}
public Xoa_wiki_mgr Wiki_mgr() {return wiki_mgr;} private Xoa_wiki_mgr wiki_mgr;
@@ -101,7 +103,6 @@ public class Xoae_app implements Xoa_app, GfoInvkAble {
public Xoh_file_main_wkr File_main_wkr() {return file_main_wkr;} private Xoh_file_main_wkr file_main_wkr = new Xoh_file_main_wkr();
public Btrie_slim_mgr Utl_trie_tblw_ws() {return utl_trie_tblw_ws;} private Btrie_slim_mgr utl_trie_tblw_ws = Xop_tblw_ws_itm.trie_();
- public Bry_bfr_mkr Utl_bry_bfr_mkr() {return Xoa_app_.Utl_bry_bfr_mkr();}
public Gfo_fld_rdr Utl_fld_rdr() {return utl_fld_rdr;} Gfo_fld_rdr utl_fld_rdr = Gfo_fld_rdr.xowa_();
public Gfo_log_bfr Log_bfr() {return log_bfr;} private Gfo_log_bfr log_bfr = new Gfo_log_bfr();
public Xoa_sys_cfg Sys_cfg() {return sys_cfg;} private Xoa_sys_cfg sys_cfg;
@@ -167,7 +168,7 @@ public class Xoae_app implements Xoa_app, GfoInvkAble {
Env_.GarbageCollect();
}
public void Free_mem(boolean clear_ctx) {
- this.Utl_bry_bfr_mkr().Clear();
+ this.Utl__bfr_mkr().Clear();
msg_log.Clear();
wiki_mgr.Free_mem(clear_ctx);
}
diff --git a/400_xowa/src/gplx/xowa/apis/xowa/gui/pages/Xoapi_view.java b/400_xowa/src/gplx/xowa/apis/xowa/gui/pages/Xoapi_view.java
index 7ce2527c2..cb2e9ea90 100644
--- a/400_xowa/src/gplx/xowa/apis/xowa/gui/pages/Xoapi_view.java
+++ b/400_xowa/src/gplx/xowa/apis/xowa/gui/pages/Xoapi_view.java
@@ -36,7 +36,7 @@ public class Xoapi_view implements GfoInvkAble {
public void Save_as() {
if (this.Active_tab_is_null()) return;
Xog_tab_itm tab = win.Tab_mgr().Active_tab();
- String file_name = Xoa_app_.Utl_encoder_mgr().Fsys_safe().Encode_str(String_.new_utf8_(tab.Page().Ttl().Full_url())) + ".html";
+ String file_name = Xoa_app_.Utl__encoder_mgr().Fsys_safe().Encode_str(String_.new_utf8_(tab.Page().Ttl().Full_url())) + ".html";
String file_url = app.Gui_mgr().Kit().New_dlg_file(Gfui_kit_.File_dlg_type_save, "Select file to save to:").Init_file_(file_name).Ask();
if (String_.Len_eq_0(file_url)) return;
Io_mgr._.SaveFilStr(file_url, tab.Html_box().Text());
diff --git a/400_xowa/src/gplx/xowa/apps/progs/Xoa_prog_mgr.java b/400_xowa/src/gplx/xowa/apps/progs/Xoa_prog_mgr.java
index 9be7cd96f..3061ee3cb 100644
--- a/400_xowa/src/gplx/xowa/apps/progs/Xoa_prog_mgr.java
+++ b/400_xowa/src/gplx/xowa/apps/progs/Xoa_prog_mgr.java
@@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.apps.progs; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*;
-import gplx.xowa.apps.fsys.*;
+import gplx.xowa.apps.fsys.*; import gplx.xowa.files.*;
public class Xoa_prog_mgr implements GfoInvkAble {
public void Init_by_app(Xoa_fsys_eval cmd_eval) {
Gfo_usr_dlg usr_dlg = Xoa_app_.Usr_dlg();
diff --git a/400_xowa/src/gplx/xowa/bldrs/Db_mgr_fxt.java b/400_xowa/src/gplx/xowa/bldrs/Db_mgr_fxt.java
index 9f6e1ab49..e4f109d41 100644
--- a/400_xowa/src/gplx/xowa/bldrs/Db_mgr_fxt.java
+++ b/400_xowa/src/gplx/xowa/bldrs/Db_mgr_fxt.java
@@ -38,7 +38,7 @@ public class Db_mgr_fxt {
Xodb_page_tbl tbl_page = wiki.Db_mgr_as_sql().Tbl_page();
Db_stmt stmt = Db_stmt_.Null;
try {
- stmt = tbl_page.Insert_stmt(wiki.Db_mgr_as_sql().Fsys_mgr().Conn_page());
+ stmt = tbl_page.Insert_stmt(wiki.Db_mgr_as_sql().Core_data_mgr().Conn_page());
int len = ttls.length;
DateAdp modified_on = Tfds.Now_time0_add_min(0);
for (int i = 0; i < len; i++) {
@@ -132,7 +132,7 @@ public class Db_mgr_fxt {
Xodb_mgr_sql db_mgr = wiki.Db_mgr_create_as_sql();
db_mgr.Data_storage_format_(gplx.ios.Io_stream_.Tid_file);
db_mgr.Init_by_ns_map("");
- Db_conn conn = db_mgr.Fsys_mgr().Conn_core();
+ Db_conn conn = db_mgr.Core_data_mgr().Conn_core();
conn.Exec_qry(Db_qry_delete.new_all_("xowa_cfg"));
conn.Exec_qry(Db_qry_delete.new_all_("xowa_db"));
conn.Exec_qry(Db_qry_delete.new_all_("xowa_ns"));
diff --git a/400_xowa/src/gplx/xowa/bldrs/files/Xob_fsdb_make.java b/400_xowa/src/gplx/xowa/bldrs/files/Xob_fsdb_make.java
index b3374c17d..32078d89c 100644
--- a/400_xowa/src/gplx/xowa/bldrs/files/Xob_fsdb_make.java
+++ b/400_xowa/src/gplx/xowa/bldrs/files/Xob_fsdb_make.java
@@ -41,6 +41,7 @@ public class Xob_fsdb_make extends Xob_itm_basic_base implements Xob_cmd {
private Xof_fsdb_mgr__sql src_fsdb_mgr;
public Xob_fsdb_make(Xob_bldr bldr, Xowe_wiki wiki) {
this.Cmd_ctor(bldr, wiki);
+ wiki.File_mgr__fsdb_mode().Tid_make_y_();
trg_fsdb_mgr = new Xof_fsdb_mgr__sql();
trg_fsdb_mgr.Init_by_wiki(wiki);
src_fsdb_mgr = new Xof_fsdb_mgr__sql();
diff --git a/400_xowa/src/gplx/xowa/bldrs/files/Xob_lnki_temp_wkr.java b/400_xowa/src/gplx/xowa/bldrs/files/Xob_lnki_temp_wkr.java
index 3f34cdf4c..f9328a960 100644
--- a/400_xowa/src/gplx/xowa/bldrs/files/Xob_lnki_temp_wkr.java
+++ b/400_xowa/src/gplx/xowa/bldrs/files/Xob_lnki_temp_wkr.java
@@ -19,7 +19,7 @@ package gplx.xowa.bldrs.files; import gplx.*; import gplx.xowa.*; import gplx.xo
import gplx.dbs.*; import gplx.xowa.dbs.*; import gplx.xowa.dbs.tbls.*; import gplx.xowa.pages.*;
import gplx.xowa.wikis.*;
import gplx.xowa.bldrs.oimgs.*; import gplx.xowa.files.*; import gplx.xowa.gui.*;
-import gplx.xowa.parsers.lnkis.redlinks.*; import gplx.xowa.parsers.logs.*; import gplx.xowa.hdumps.*;
+import gplx.xowa.parsers.lnkis.redlinks.*; import gplx.xowa.parsers.logs.*; import gplx.xowa.html.hdumps.bldrs.*;
import gplx.xowa.xtns.scribunto.*; import gplx.xowa.xtns.wdatas.*;
import gplx.xowa.files.fsdb.*; import gplx.fsdb.meta.*;
public class Xob_lnki_temp_wkr extends Xob_dump_mgr_base implements Xopg_redlink_logger {
@@ -65,6 +65,7 @@ public class Xob_lnki_temp_wkr extends Xob_dump_mgr_base implements Xopg_redlink
gplx.xowa.xtns.scores.Score_xnde.Log_wkr = log_mgr.Make_wkr();
gplx.xowa.xtns.hieros.Hiero_xnde.Log_wkr = log_mgr.Make_wkr();
Xof_fsdb_mgr__sql trg_fsdb_mgr = new Xof_fsdb_mgr__sql();
+ wiki.File_mgr__fsdb_mode().Tid_make_y_();
trg_fsdb_mgr.Init_by_wiki(wiki);
Fsm_mnt_mgr trg_mnt_mgr = trg_fsdb_mgr.Mnt_mgr();
trg_mnt_mgr.Insert_to_mnt_(Fsm_mnt_mgr.Mnt_idx_main);
diff --git a/400_xowa/src/gplx/xowa/bldrs/files/Xob_page_regy_tbl.java b/400_xowa/src/gplx/xowa/bldrs/files/Xob_page_regy_tbl.java
index 1e194839c..40dd229ef 100644
--- a/400_xowa/src/gplx/xowa/bldrs/files/Xob_page_regy_tbl.java
+++ b/400_xowa/src/gplx/xowa/bldrs/files/Xob_page_regy_tbl.java
@@ -17,11 +17,12 @@ along with this program. If not, see .
*/
package gplx.xowa.bldrs.files; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*;
import gplx.dbs.*; import gplx.dbs.engines.sqlite.*; import gplx.xowa.dbs.*; import gplx.xowa.bldrs.oimgs.*;
+import gplx.xowa.wikis.data.*;
import gplx.xowa.files.repos.*;
class Xob_page_regy_tbl {
public static void Reset_table(Db_conn p) {Sqlite_engine_.Tbl_create_and_delete(p, Tbl_name, Tbl_sql);}
public static void Create_data(Gfo_usr_dlg usr_dlg, Db_conn p, byte repo_tid, Xowe_wiki wiki) {
- Create_data__insert_page(usr_dlg, p, repo_tid, wiki.Db_mgr_as_sql().Fsys_mgr().Get_url(Xodb_file_tid.Tid_core));
+ Create_data__insert_page(usr_dlg, p, repo_tid, wiki.Db_mgr_as_sql().Core_data_mgr().Get_url(Xowd_db_file_.Tid_core));
Create_data__insert_redirect(usr_dlg, p, repo_tid, wiki.Fsys_mgr().Root_dir().GenSubFil(Xodb_db_file.Name__wiki_redirect));
}
public static void Delete_local(Db_conn p) {
diff --git a/400_xowa/src/gplx/xowa/bldrs/files/Xob_xfer_temp_itm_tst.java b/400_xowa/src/gplx/xowa/bldrs/files/Xob_xfer_temp_itm_tst.java
index 2aa736630..9e432a917 100644
--- a/400_xowa/src/gplx/xowa/bldrs/files/Xob_xfer_temp_itm_tst.java
+++ b/400_xowa/src/gplx/xowa/bldrs/files/Xob_xfer_temp_itm_tst.java
@@ -128,7 +128,6 @@ class Xob_xfer_temp_itm_fxt {
;
public Xob_xfer_temp_itm_fxt Reset() {
itm.Clear();
- img_size.Clear();
return this;
}
public Xob_xfer_temp_itm_fxt Init_rdr_image() {
diff --git a/400_xowa/src/gplx/xowa/bldrs/imports/Xob_cmd_exec_sql.java b/400_xowa/src/gplx/xowa/bldrs/imports/Xob_cmd_exec_sql.java
index 06a195b33..851609f3c 100644
--- a/400_xowa/src/gplx/xowa/bldrs/imports/Xob_cmd_exec_sql.java
+++ b/400_xowa/src/gplx/xowa/bldrs/imports/Xob_cmd_exec_sql.java
@@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.bldrs.imports; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*;
-import gplx.xowa.dbs.*;
+import gplx.xowa.wikis.data.*; import gplx.xowa.dbs.*;
public class Xob_cmd_exec_sql implements Xob_cmd {
private Xowe_wiki wiki; private int file_idx = -1; private String sql;
public Xob_cmd_exec_sql(Xob_bldr bldr, Xowe_wiki wiki) {this.wiki = wiki;}
@@ -26,8 +26,8 @@ public class Xob_cmd_exec_sql implements Xob_cmd {
Xoae_app app = wiki.Appe();
wiki.Init_assert(); // force load; needed to pick up MediaWiki ns for MediaWiki:mainpage
Xodb_mgr_sql db_mgr = wiki.Db_mgr_as_sql();
- Xodb_fsys_mgr fsys_mgr = db_mgr.Fsys_mgr();
- Xodb_file file = fsys_mgr.Get_by_idx(file_idx);
+ Xowe_core_data_mgr fsys_mgr = db_mgr.Core_data_mgr();
+ Xowd_db_file file = fsys_mgr.Dbs__get_at(file_idx);
app.Usr_dlg().Plog_many("", "", "exec_sql: running sql; file_idx=~{0} sql=~{1}", file_idx, sql);
file.Conn().Exec_sql(sql);
}
diff --git a/400_xowa/src/gplx/xowa/bldrs/imports/Xob_page_sql.java b/400_xowa/src/gplx/xowa/bldrs/imports/Xob_page_sql.java
index f331da7eb..f7a1cad9e 100644
--- a/400_xowa/src/gplx/xowa/bldrs/imports/Xob_page_sql.java
+++ b/400_xowa/src/gplx/xowa/bldrs/imports/Xob_page_sql.java
@@ -16,12 +16,13 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.bldrs.imports; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*;
-import gplx.dbs.*; import gplx.xowa.dbs.*; import gplx.xowa.dbs.tbls.*; import gplx.ios.*; import gplx.xowa.bldrs.wikis.redirects.*;
+import gplx.dbs.*; import gplx.ios.*; import gplx.xowa.bldrs.wikis.redirects.*;
+import gplx.xowa.wikis.data.*; import gplx.xowa.dbs.*; import gplx.xowa.dbs.tbls.*;
import gplx.xowa.bldrs.filters.dansguardians.*;
public class Xob_page_sql extends Xob_itm_basic_base implements Xobd_wkr, GfoInvkAble {
private Db_idx_mode idx_mode = Db_idx_mode.Itm_end;
private Io_stream_zip_mgr zip_mgr; private byte data_storage_format; private boolean redirect_id_enabled;
- private Xodb_mgr_sql db_mgr; private Xodb_fsys_mgr fsys_mgr; private Db_conn page_conn; private Db_stmt page_stmt; private Xob_text_stmts_mgr text_stmts_mgr;
+ private Xodb_mgr_sql db_mgr; private Xowe_core_data_mgr fsys_mgr; private Db_conn page_conn; private Db_stmt page_stmt; private Xob_text_stmts_mgr text_stmts_mgr;
private int page_count_all, page_count_main = 0; private int txn_commit_interval = 100000; // 100 k
private DateAdp modified_latest = DateAdp_.MinValue;
private Xop_redirect_mgr redirect_mgr; private Xob_redirect_tbl redirect_tbl;
@@ -39,7 +40,7 @@ public class Xob_page_sql extends Xob_itm_basic_base implements Xobd_wkr, GfoInv
// init db
db_mgr = wiki.Db_mgr_as_sql();
db_mgr.Data_storage_format_(data_storage_format);
- fsys_mgr = db_mgr.Fsys_mgr();
+ fsys_mgr = db_mgr.Core_data_mgr();
page_conn = fsys_mgr.Conn_page();
page_stmt = db_mgr.Tbl_page().Insert_stmt(page_conn);
page_conn.Txn_mgr().Txn_bgn_if_none();
@@ -47,7 +48,7 @@ public class Xob_page_sql extends Xob_itm_basic_base implements Xobd_wkr, GfoInv
if (idx_mode.Tid_is_bgn()) Idx_create();
if (redirect_id_enabled) {
- redirect_tbl = new Xob_redirect_tbl(wiki.Fsys_mgr().Root_dir(), Xoa_app_.Utl_encoder_mgr().Url_ttl()).Create_table();
+ redirect_tbl = new Xob_redirect_tbl(wiki.Fsys_mgr().Root_dir(), Xoa_app_.Utl__encoder_mgr().Url_ttl()).Create_table();
redirect_tbl.Conn().Txn_mgr().Txn_bgn_if_none();
}
@@ -102,18 +103,18 @@ public class Xob_page_sql extends Xob_itm_basic_base implements Xobd_wkr, GfoInv
Xow_ns_mgr ns_mgr = wiki.Ns_mgr();
db_mgr.Tbl_site_stats().Update(page_count_main, page_count_all, ns_mgr.Ns_file().Count()); // save page stats
db_mgr.Tbl_xowa_ns().Insert(ns_mgr); // save ns
- db_mgr.Tbl_xowa_db().Commit_all(db_mgr.Fsys_mgr().Files_ary()); // save dbs; note that dbs can be saved again later
+ db_mgr.Core_data_mgr().Dbs__save(); // save dbs; note that dbs can be saved again later
db_mgr.Tbl_xowa_cfg().Insert_str(Xodb_mgr_sql.Grp_wiki_init, "props.modified_latest", modified_latest.XtoStr_fmt(DateAdp_.Fmt_iso8561_date_time));
if (idx_mode.Tid_is_end()) Idx_create();
if (redirect_id_enabled) {
redirect_tbl.Conn().Txn_mgr().Txn_end_all();
- Xodb_file core_file = fsys_mgr.Get_tid_root(Xodb_file_tid.Tid_core);
+ Xowd_db_file core_file = fsys_mgr.Dbs__get_by_tid_1st(Xowd_db_file_.Tid_core);
redirect_tbl.Update_trg_redirect_id(core_file.Url(), 1);
redirect_tbl.Update_src_redirect_id(core_file.Url(), page_conn);
}
}
private void Idx_create() {
- fsys_mgr.Index_create(usr_dlg, Byte_.Ary(Xodb_file_tid.Tid_core, Xodb_file_tid.Tid_text), Idx_page_title, Idx_page_random);
+ fsys_mgr.Index_create(usr_dlg, Byte_.Ary(Xowd_db_file_.Tid_core, Xowd_db_file_.Tid_text), Idx_page_title, Idx_page_random);
}
@Override public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {
if (ctx.Match(k, Invk_txn_commit_interval_)) txn_commit_interval = m.ReadInt("v");
@@ -131,11 +132,11 @@ public class Xob_page_sql extends Xob_itm_basic_base implements Xobd_wkr, GfoInv
;
}
class Xob_text_stmts_mgr {
- public Xob_text_stmts_mgr(Xodb_mgr_sql db_mgr, Xodb_fsys_mgr fsys_mgr) {this.db_mgr = db_mgr; this.fsys_mgr = fsys_mgr;} private Xodb_mgr_sql db_mgr; Xodb_fsys_mgr fsys_mgr;
+ public Xob_text_stmts_mgr(Xodb_mgr_sql db_mgr, Xowe_core_data_mgr fsys_mgr) {this.db_mgr = db_mgr; this.fsys_mgr = fsys_mgr;} private Xodb_mgr_sql db_mgr; Xowe_core_data_mgr fsys_mgr;
public Db_stmt Stmt_at(int i) {return text_stmts[i];}
public Db_conn Conn_at(int i) {return text_providers[i];}
public int Stmt_by_ns(int ns_file_idx, int text_len) {
- Xodb_file file = File_get(ns_file_idx, text_len);
+ Xowd_db_file file = File_get(ns_file_idx, text_len);
int stmt_idx = file.Id();
Db_stmt stmt = null;
if (stmt_idx < text_stmts_len) {
@@ -160,15 +161,15 @@ class Xob_text_stmts_mgr {
}
text_stmts = null;
}
- Xodb_file File_get(int file_idx, int text_len) {
+ Xowd_db_file File_get(int file_idx, int text_len) {
if (file_idx == Xow_ns.Bldr_file_idx_heap) {
file_idx = fsys_mgr.Tid_text_idx();
- Xodb_file file = fsys_mgr.Get_or_make(Xodb_file_tid.Tid_text, file_idx);
+ Xowd_db_file file = Dbs__get_or_make(fsys_mgr, Xowd_db_file_.Tid_text, file_idx);
long file_len = file.File_len();
long file_max = fsys_mgr.Tid_text_max();
- if (file_max != Xodb_fsys_mgr.Heap_max_infinite && (file_len + text_len > file_max)) { // file is "full"
+ if (file_max != Xowe_core_data_mgr.Heap_max_infinite && (file_len + text_len > file_max)) { // file is "full"
file.Conn().Txn_mgr().Txn_end_all(); // close txn
- file = fsys_mgr.Make(Xodb_file_tid.Tid_text);
+ file = fsys_mgr.Dbs__add_new(Xowd_db_file_.Tid_text);
file_idx = file.Id();
fsys_mgr.Tid_text_idx_(file_idx);
}
@@ -176,7 +177,11 @@ class Xob_text_stmts_mgr {
return file;
}
else
- return fsys_mgr.Get_or_make(Xodb_file_tid.Tid_text, file_idx);
+ return Dbs__get_or_make(fsys_mgr, Xowd_db_file_.Tid_text, file_idx);
+ }
+ private static Xowd_db_file Dbs__get_or_make(Xowe_core_data_mgr core_data_mgr, byte file_tid, int file_idx) {
+ int len = core_data_mgr.Dbs__len();
+ return file_idx < len ? core_data_mgr.Dbs__get_at(file_idx) : core_data_mgr.Dbs__add_new(file_tid);
}
private void Add(Db_conn conn, Db_stmt stmt, int stmt_idx) {
int new_len = stmt_idx + 1;
diff --git a/400_xowa/src/gplx/xowa/bldrs/imports/Xob_search_base.java b/400_xowa/src/gplx/xowa/bldrs/imports/Xob_search_base.java
index c67a0c36a..e346b2d99 100644
--- a/400_xowa/src/gplx/xowa/bldrs/imports/Xob_search_base.java
+++ b/400_xowa/src/gplx/xowa/bldrs/imports/Xob_search_base.java
@@ -18,7 +18,7 @@ along with this program. If not, see .
package gplx.xowa.bldrs.imports; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*;
import gplx.core.primitives.*;
import gplx.ios.*;
-import gplx.xowa.dbs.*; import gplx.xowa.tdbs.*;
+import gplx.xowa.wikis.data.*; import gplx.xowa.dbs.*; import gplx.xowa.tdbs.*;
public abstract class Xob_search_base extends Xob_itm_dump_base implements Xobd_wkr, GfoInvkAble {
public abstract String Wkr_key();
public abstract Io_make_cmd Make_cmd_site();
@@ -59,8 +59,8 @@ public abstract class Xob_search_base extends Xob_itm_dump_base implements Xobd_
tmp_wtr_mgr.Rls_all();
if (delete_temp) Io_mgr._.DeleteDirDeep(temp_dir);
if (wiki.Db_mgr().Tid() == Xodb_mgr_sql.Tid_sql) {
- Xodb_fsys_mgr db_fs = wiki.Db_mgr_as_sql().Fsys_mgr();
- wiki.Db_mgr_as_sql().Tbl_xowa_db().Commit_all(db_fs.Files_ary()); // always save files now; need to commit created search_db_idx to xowa_db, else will be reused by ctg v2; DATE:2014-02-07
+ Xowe_core_data_mgr core_data_mgr = (Xowe_core_data_mgr)wiki.Data_mgr__core_mgr();
+ core_data_mgr.Dbs__save(); // always save files now; need to commit created search_db_idx to xowa_db, else will be reused by ctg v2; DATE:2014-02-07
}
}
public void Wkr_print() {}
diff --git a/400_xowa/src/gplx/xowa/bldrs/imports/Xob_search_sql_cmd.java b/400_xowa/src/gplx/xowa/bldrs/imports/Xob_search_sql_cmd.java
index 5811b449e..6fceafa34 100644
--- a/400_xowa/src/gplx/xowa/bldrs/imports/Xob_search_sql_cmd.java
+++ b/400_xowa/src/gplx/xowa/bldrs/imports/Xob_search_sql_cmd.java
@@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.bldrs.imports; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*;
-import gplx.dbs.*; import gplx.dbs.engines.sqlite.*; import gplx.xowa.dbs.*; import gplx.xowa.dbs.tbls.*;
+import gplx.xowa.wikis.data.*; import gplx.dbs.*; import gplx.dbs.engines.sqlite.*; import gplx.xowa.dbs.*; import gplx.xowa.dbs.tbls.*;
public class Xob_search_sql_cmd extends Xob_itm_basic_base implements Xob_cmd {
public Xob_search_sql_cmd(Xob_bldr bldr, Xowe_wiki wiki) {this.Cmd_ctor(bldr, wiki);}
public String Cmd_key() {return KEY_search_sql;} public static final String KEY_search_sql = "import.sql.search_title.cmd";
@@ -28,14 +28,14 @@ public class Xob_search_sql_cmd extends Xob_itm_basic_base implements Xob_cmd {
public void Exec(Xowe_wiki wiki) {
usr_dlg.Log_many("", "", "search_title.cmd: initing wiki");
if (!Env_.Mode_testing()) wiki.Init_assert();
- Xodb_fsys_mgr db_fs = wiki.Db_mgr_as_sql().Fsys_mgr();
+ Xowe_core_data_mgr db_fs = wiki.Db_mgr_as_sql().Core_data_mgr();
usr_dlg.Log_many("", "", "search_title.cmd: getting core db");
- Xodb_file page_db = db_fs.Get_tid_root(Xodb_file_tid.Tid_core);
+ Xowd_db_file page_db = db_fs.Dbs__get_by_tid_1st(Xowd_db_file_.Tid_core);
usr_dlg.Log_many("", "", "search_title.cmd: getting existing searchdb");
- Xodb_file search_db = db_fs.Get_tid_root(Xodb_file_tid.Tid_search);
+ Xowd_db_file search_db = db_fs.Dbs__get_by_tid_1st(Xowd_db_file_.Tid_search);
if (search_db == null) {
usr_dlg.Log_many("", "", "search_title.cmd: making new searchdb");
- search_db = db_fs.Make(Xodb_file_tid.Tid_search);
+ search_db = db_fs.Dbs__add_new(Xowd_db_file_.Tid_search);
}
DataRdr page_rdr = DataRdr_.Null;
Db_conn search_provider = search_db.Conn();
@@ -76,7 +76,7 @@ public class Xob_search_sql_cmd extends Xob_itm_basic_base implements Xob_cmd {
search_provider.Txn_mgr().Txn_end_all_bgn_if_none();
search_temp_tbl.Make_data(usr_dlg, search_provider);
search_provider.Txn_mgr().Txn_bgn_if_none();
- wiki.Db_mgr_as_sql().Tbl_xowa_db().Commit_all(db_fs.Files_ary());
+ wiki.Db_mgr_as_sql().Core_data_mgr().Dbs__save();
search_provider.Txn_mgr().Txn_end_all();
} private int commit_interval = 100000, progress_interval = 10000;
private void Commit(Db_conn search_provider) {
diff --git a/400_xowa/src/gplx/xowa/bldrs/imports/Xob_search_sql_wkr.java b/400_xowa/src/gplx/xowa/bldrs/imports/Xob_search_sql_wkr.java
index 293081b81..425d3a0a7 100644
--- a/400_xowa/src/gplx/xowa/bldrs/imports/Xob_search_sql_wkr.java
+++ b/400_xowa/src/gplx/xowa/bldrs/imports/Xob_search_sql_wkr.java
@@ -16,7 +16,8 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.bldrs.imports; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*;
-import gplx.ios.*; import gplx.dbs.*; import gplx.dbs.engines.sqlite.*; import gplx.xowa.dbs.*; import gplx.xowa.dbs.tbls.*;
+import gplx.ios.*;
+import gplx.xowa.wikis.data.*; import gplx.dbs.*; import gplx.dbs.engines.sqlite.*; import gplx.xowa.dbs.*; import gplx.xowa.dbs.tbls.*;
public class Xob_search_sql_wkr extends Xob_search_base implements Io_make_cmd {
public Xob_search_sql_wkr(Xob_bldr bldr, Xowe_wiki wiki) {this.Cmd_ctor(bldr, wiki);} private Xodb_mgr_sql db_mgr = null;
@Override public String Wkr_key() {return KEY;} public static final String KEY = "import.sql.search_title.wkr";
@@ -25,9 +26,9 @@ public class Xob_search_sql_wkr extends Xob_search_base implements Io_make_cmd {
public void Sort_bgn() {
db_mgr = wiki.Db_mgr_as_sql();
boolean created = false;
- Xodb_file search_db = db_mgr.Fsys_mgr().Get_tid_root(Xodb_file_tid.Tid_search);
+ Xowd_db_file search_db = db_mgr.Core_data_mgr().Dbs__get_by_tid_1st(Xowd_db_file_.Tid_search);
if (search_db == null) {
- search_db = db_mgr.Fsys_mgr().Make(Xodb_file_tid.Tid_search);
+ search_db = db_mgr.Core_data_mgr().Dbs__add_new(Xowd_db_file_.Tid_search);
created = true;
}
conn = search_db.Conn();
diff --git a/400_xowa/src/gplx/xowa/bldrs/imports/Xob_term_sql.java b/400_xowa/src/gplx/xowa/bldrs/imports/Xob_term_sql.java
index e517fe02c..49f1c4113 100644
--- a/400_xowa/src/gplx/xowa/bldrs/imports/Xob_term_sql.java
+++ b/400_xowa/src/gplx/xowa/bldrs/imports/Xob_term_sql.java
@@ -27,6 +27,6 @@ public class Xob_term_sql extends Xob_term_base {
db_mgr.Tbl_xowa_cfg().Insert_bry_as_str (Xodb_mgr_sql.Grp_wiki_init, "props.main_page", wiki.Props().Main_page());
db_mgr.Tbl_xowa_cfg().Insert_bry_as_str (Xodb_mgr_sql.Grp_wiki_init, "props.siteinfo_misc", wiki.Props().Siteinfo_misc());
db_mgr.Tbl_xowa_cfg().Insert_bry_as_str (Xodb_mgr_sql.Grp_wiki_init, "props.siteinfo_mainpage", wiki.Props().Siteinfo_mainpage());
- wiki.Db_mgr_as_sql().Fsys_mgr().Rls();
+ wiki.Db_mgr_as_sql().Core_data_mgr().Rls();
}
}
diff --git a/400_xowa/src/gplx/xowa/bldrs/imports/Xobc_core_cleanup.java b/400_xowa/src/gplx/xowa/bldrs/imports/Xobc_core_cleanup.java
index b603dac23..fde74871a 100644
--- a/400_xowa/src/gplx/xowa/bldrs/imports/Xobc_core_cleanup.java
+++ b/400_xowa/src/gplx/xowa/bldrs/imports/Xobc_core_cleanup.java
@@ -106,7 +106,7 @@ public class Xobc_core_cleanup extends Xob_itm_basic_base implements Xob_cmd {
public static void Delete_wiki_sql(Xowe_wiki wiki) {
Gfo_usr_dlg usr_dlg = wiki.Appe().Usr_dlg(); Io_url wiki_root_dir = wiki.Fsys_mgr().Root_dir();
if (wiki.Db_mgr().Tid() == gplx.xowa.dbs.Xodb_mgr_sql.Tid_sql) // NOTE: must check; if empty dir (or text db) than db_mgr will be txt
- wiki.Db_mgr_as_sql().Fsys_mgr().Rls(); // NOTE: if sqlite files, must rls;
+ wiki.Db_mgr_as_sql().Core_data_mgr().Rls(); // NOTE: if sqlite files, must rls;
Io_url[] sqlite3_files = Io_mgr._.QueryDir_args(wiki_root_dir).FilPath_("*.sqlite3").ExecAsUrlAry();
int sqlite3_files_len = sqlite3_files.length;
usr_dlg.Note_many("", "delete_wiki", "deleting sqlite3 files: ~{0} ~{1}", sqlite3_files_len, wiki_root_dir.Raw());
diff --git a/400_xowa/src/gplx/xowa/bldrs/imports/ctgs/Xob_category_registry_sql.java b/400_xowa/src/gplx/xowa/bldrs/imports/ctgs/Xob_category_registry_sql.java
index 0db4a30cb..7c06887fe 100644
--- a/400_xowa/src/gplx/xowa/bldrs/imports/ctgs/Xob_category_registry_sql.java
+++ b/400_xowa/src/gplx/xowa/bldrs/imports/ctgs/Xob_category_registry_sql.java
@@ -30,7 +30,7 @@ public class Xob_category_registry_sql implements Xob_cmd {
Xob_tmp_wtr rslt_wtr = Xob_tmp_wtr.new_wo_ns_(Io_url_gen_.dir_(rslt_dir), Io_mgr.Len_mb);
Xodb_mgr_sql db_mgr = Xodb_mgr_sql.Get_or_load(wiki);
- Db_conn conn = db_mgr.Fsys_mgr().Conn_core();
+ Db_conn conn = db_mgr.Core_data_mgr().Conn_core();
Db_qry_select qry = Db_qry_select.new_()
.Cols_(Xodb_page_tbl.Fld_page_title, Xodb_page_tbl.Fld_page_id)
.From_(Xodb_page_tbl.Tbl_name)
diff --git a/400_xowa/src/gplx/xowa/bldrs/imports/ctgs/Xob_categorylinks_sql_make.java b/400_xowa/src/gplx/xowa/bldrs/imports/ctgs/Xob_categorylinks_sql_make.java
index 19e1a81a2..b2d23cab5 100644
--- a/400_xowa/src/gplx/xowa/bldrs/imports/ctgs/Xob_categorylinks_sql_make.java
+++ b/400_xowa/src/gplx/xowa/bldrs/imports/ctgs/Xob_categorylinks_sql_make.java
@@ -17,6 +17,7 @@ along with this program. If not, see .
*/
package gplx.xowa.bldrs.imports.ctgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.imports.*;
import gplx.core.flds.*; import gplx.ios.*; import gplx.dbs.*; import gplx.xowa.dbs.*; import gplx.xowa.ctgs.*;
+import gplx.xowa.wikis.data.*;
public class Xob_categorylinks_sql_make implements Io_make_cmd {
private Xowe_wiki wiki; private Sql_file_parser sql_parser; private Db_idx_mode idx_mode;
private Xodb_mgr_sql db_mgr;
@@ -30,15 +31,15 @@ public class Xob_categorylinks_sql_make implements Io_make_cmd {
name_id_rdr = New_registry_rdr(wiki, usr_dlg);
cur_cat_file_max = wiki.Appe().Setup_mgr().Dump_mgr().Db_categorylinks_max();
- db_mgr.Delete_by_tid(Xodb_file_tid.Tid_category);
- Xodb_fsys_mgr fsys_mgr = db_mgr.Fsys_mgr();
- Xodb_file category_file = fsys_mgr.Get_tid_root(Xodb_file_tid.Tid_core);
+ db_mgr.Delete_by_tid(Xowd_db_file_.Tid_category);
+ Xowe_core_data_mgr fsys_mgr = db_mgr.Core_data_mgr();
+ Xowd_db_file category_file = fsys_mgr.Dbs__get_by_tid_1st(Xowd_db_file_.Tid_core);
if (cur_cat_file_max > 0) {
- category_file = fsys_mgr.Make(Xodb_file_tid.Tid_category);
+ category_file = fsys_mgr.Dbs__add_new(Xowd_db_file_.Tid_category);
fsys_mgr.Conn_ctg_(category_file);
}
- cat_provider = db_mgr.Fsys_mgr().Conn_ctg();
+ cat_provider = db_mgr.Core_data_mgr().Conn_ctg();
ctg_stmt = db_mgr.Tbl_category().Insert_stmt(cat_provider);
File_open(category_file);
first_provider = true;
@@ -67,35 +68,35 @@ public class Xob_categorylinks_sql_make implements Io_make_cmd {
} catch (Exception e) {usr_dlg.Warn_many("", "", "ctg_links.insert failed: name=~{0} err=~{1}", String_.new_utf8_(ctg_name), Err_.Message_gplx_brief(e));}
}
public void Sort_end() {
- Xodb_fsys_mgr fsys_mgr = db_mgr.Fsys_mgr();
+ Xowe_core_data_mgr core_data_mgr = db_mgr.Core_data_mgr();
Ctg_grp_end(Ttl_last);
File_close();
- db_mgr.Tbl_xowa_db().Commit_all(fsys_mgr.Files_ary());
+ core_data_mgr.Dbs__save();
if (db_mgr.Category_version() == Xoa_ctg_mgr.Version_null) // NOTE: ctg_v1 wkr will set this to v1; only set to v2 if null
db_mgr.Category_version_update(false);
usr_dlg.Log_many("", "", "import.category.v2: insert done; committing; rows=~{0}", row_count);
cat_provider.Txn_mgr().Txn_end_all();
ctg_stmt.Rls();
- if (idx_mode.Tid_is_end()) Idx_create(fsys_mgr);
+ if (idx_mode.Tid_is_end()) Idx_create(core_data_mgr);
name_id_rdr.Rls();
if (String_.Eq(sql_parser.Src_fil().NameAndExt(), Xob_ctg_v1_sql_make.Url_sql)) // delete temp xowa_categorylinks.sql file created by cat_v1
Io_mgr._.DeleteFil(sql_parser.Src_fil());
}
- private void Idx_create(Xodb_fsys_mgr fsys_mgr) {
- fsys_mgr.Index_create(usr_dlg, Byte_.Ary(Xodb_file_tid.Tid_core, Xodb_file_tid.Tid_category), Idx_categorylinks_from, Idx_categorylinks_main);
+ private void Idx_create(Xowe_core_data_mgr fsys_mgr) {
+ fsys_mgr.Index_create(usr_dlg, Byte_.Ary(Xowd_db_file_.Tid_core, Xowd_db_file_.Tid_category), Idx_categorylinks_from, Idx_categorylinks_main);
}
int Ctg_grp_end(byte[] new_ctg_ttl) {
if (cur_cat_ttl != Bry_.Empty && cur_cat_id != -1)
db_mgr.Tbl_category().Insert(ctg_stmt, cur_cat_id, cur_cat_counts[Xoa_ctg_mgr.Tid_page], cur_cat_counts[Xoa_ctg_mgr.Tid_subc], cur_cat_counts[Xoa_ctg_mgr.Tid_file], Xoa_ctg_mgr.Hidden_n, cur_cat_file_idx);
if (new_ctg_ttl == Ttl_last) return Cur_cat_id_null; // last ttl; called by this.End(); exit early else will fail in Cur_cat_id_find()
- if (cur_cat_file_max > 0 && cur_cat_file_size > cur_cat_file_max) {File_close(); File_open(db_mgr.Fsys_mgr().Make(Xodb_file_tid.Tid_category));}
+ if (cur_cat_file_max > 0 && cur_cat_file_size > cur_cat_file_max) {File_close(); File_open(db_mgr.Core_data_mgr().Dbs__add_new(Xowd_db_file_.Tid_category));}
cur_cat_id = Cur_cat_id_find(new_ctg_ttl);
for (int i = 0; i < Xoa_ctg_mgr.Tid__max; i++)
cur_cat_counts[i] = 0;
cur_cat_ttl = new_ctg_ttl;
return cur_cat_id;
}
- private void File_open(Xodb_file file) {
+ private void File_open(Xowd_db_file file) {
cl_provider = file.Conn();
cl_stmt = db_mgr.Tbl_categorylinks().Insert_stmt(cl_provider);
cl_provider.Txn_mgr().Txn_bgn_if_none();
diff --git a/400_xowa/src/gplx/xowa/bldrs/imports/ctgs/Xob_categorylinks_sql_tst.java b/400_xowa/src/gplx/xowa/bldrs/imports/ctgs/Xob_categorylinks_sql_tst.java
index 1dc956a92..318f3b97e 100644
--- a/400_xowa/src/gplx/xowa/bldrs/imports/ctgs/Xob_categorylinks_sql_tst.java
+++ b/400_xowa/src/gplx/xowa/bldrs/imports/ctgs/Xob_categorylinks_sql_tst.java
@@ -34,7 +34,7 @@ public class Xob_categorylinks_sql_tst {
));
fxt.Exec_run(new Xob_category_registry_sql(fxt.Bldr(), fxt.Wiki()));
fxt.Exec_run(new Xob_categorylinks_sql(fxt.Bldr(), fxt.Wiki()));
- Db_conn conn = fxt.Wiki().Db_mgr_as_sql().Fsys_mgr().Conn_ctg();
+ Db_conn conn = fxt.Wiki().Db_mgr_as_sql().Core_data_mgr().Conn_ctg();
Db_tst_qry.tbl_(Xodb_category_tbl.Tbl_name, Xodb_category_tbl.Fld_cat_id)
.Cols_(Xodb_category_tbl.Fld_cat_id, Xodb_category_tbl.Fld_cat_subcats, Xodb_category_tbl.Fld_cat_files, Xodb_category_tbl.Fld_cat_pages)
.Rows_add_vals(1, 0, 0, 2)
diff --git a/400_xowa/src/gplx/xowa/bldrs/imports/ctgs/Xob_ctg_v1_base.java b/400_xowa/src/gplx/xowa/bldrs/imports/ctgs/Xob_ctg_v1_base.java
index dae185aec..d29f5380d 100644
--- a/400_xowa/src/gplx/xowa/bldrs/imports/ctgs/Xob_ctg_v1_base.java
+++ b/400_xowa/src/gplx/xowa/bldrs/imports/ctgs/Xob_ctg_v1_base.java
@@ -25,7 +25,7 @@ public abstract class Xob_ctg_v1_base extends Xob_itm_dump_base implements Xobd_
public OrderedHash Wkr_hooks() {return wkr_hooks;} private OrderedHash wkr_hooks = OrderedHash_.new_bry_();
public void Wkr_bgn(Xob_bldr bldr) {
this.Init_dump(this.Wkr_key(), wiki.Tdb_fsys_mgr().Site_dir().GenSubDir(Xotdb_dir_info_.Name_category));
- Bry_bfr tmp_bfr = bldr.App().Utl_bry_bfr_mkr().Get_b512();
+ Bry_bfr tmp_bfr = bldr.App().Utl__bfr_mkr().Get_b512();
Xol_lang lang = wiki.Lang();
wkr_hooks_add(tmp_bfr, lang.Ns_names());
wkr_hooks_add(tmp_bfr, lang.Ns_aliases());
diff --git a/400_xowa/src/gplx/xowa/bldrs/imports/ctgs/Xob_ctg_v1_sql.java b/400_xowa/src/gplx/xowa/bldrs/imports/ctgs/Xob_ctg_v1_sql.java
index 27c2fdc90..63fd2e215 100644
--- a/400_xowa/src/gplx/xowa/bldrs/imports/ctgs/Xob_ctg_v1_sql.java
+++ b/400_xowa/src/gplx/xowa/bldrs/imports/ctgs/Xob_ctg_v1_sql.java
@@ -57,7 +57,7 @@ class Xob_ctg_v1_sql_make implements Io_make_cmd {
Bry_fmtr fmtr = Bry_fmtr.new_("(~{page_id},'~{cat_name}','','','','','~{cat_type}')\n", "page_id", "cat_name", "cat_type");
public static final String Url_sql = "xowa_categorylinks.sql";
private static byte[] Escape_for_sql(Xowe_wiki wiki, byte[] bry) {
- Bry_bfr bfr = wiki.Appe().Utl_bry_bfr_mkr().Get_b512();
+ Bry_bfr bfr = wiki.Appe().Utl__bfr_mkr().Get_b512();
int len = bry.length;
boolean dirty = false;
for (int i = 0; i < len; i++) {
diff --git a/400_xowa/src/gplx/xowa/bldrs/imports/ctgs/Xoctg_hiddencat_parser_sql.java b/400_xowa/src/gplx/xowa/bldrs/imports/ctgs/Xoctg_hiddencat_parser_sql.java
index eebba82c6..6ca7f704e 100644
--- a/400_xowa/src/gplx/xowa/bldrs/imports/ctgs/Xoctg_hiddencat_parser_sql.java
+++ b/400_xowa/src/gplx/xowa/bldrs/imports/ctgs/Xoctg_hiddencat_parser_sql.java
@@ -17,14 +17,15 @@ along with this program. If not, see .
*/
package gplx.xowa.bldrs.imports.ctgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.imports.*;
import gplx.dbs.*; import gplx.xowa.dbs.*; import gplx.xowa.dbs.tbls.*;
+import gplx.xowa.wikis.data.*;
public class Xoctg_hiddencat_parser_sql extends Xoctg_hiddencat_parser_base {
public Xoctg_hiddencat_parser_sql(Xob_bldr bldr, Xowe_wiki wiki) {this.Ctor(bldr, wiki);} private Db_conn conn;
@Override public String Cmd_key() {return KEY;} public static final String KEY = "import.sql.hiddencat";
@Override public void Cmd_bgn_hook(Xob_bldr bldr, Sql_file_parser parser) {
super.Cmd_bgn_hook(bldr, parser);
Xodb_mgr_sql db_mgr = wiki.Db_mgr_as_sql();
- Xodb_fsys_mgr fsys_mgr = db_mgr.Fsys_mgr();
- conn = fsys_mgr.Conn_ctg();
+ Xowe_core_data_mgr core_data_mgr = db_mgr.Core_data_mgr();
+ conn = core_data_mgr.Conn_ctg();
conn.Txn_mgr().Txn_bgn_if_none();
tbl = db_mgr.Tbl_category();
stmt = tbl.Update_stmt(conn);
diff --git a/400_xowa/src/gplx/xowa/bldrs/imports/ctgs/Xoctg_hiddencat_parser_sql_tst.java b/400_xowa/src/gplx/xowa/bldrs/imports/ctgs/Xoctg_hiddencat_parser_sql_tst.java
index 67b06842f..c7aba883e 100644
--- a/400_xowa/src/gplx/xowa/bldrs/imports/ctgs/Xoctg_hiddencat_parser_sql_tst.java
+++ b/400_xowa/src/gplx/xowa/bldrs/imports/ctgs/Xoctg_hiddencat_parser_sql_tst.java
@@ -40,7 +40,7 @@ public class Xoctg_hiddencat_parser_sql_tst {
private void Init_ctgs(int... ctgs) {
int len = ctgs.length;
Xodb_category_tbl tbl = fxt.Wiki().Db_mgr_as_sql().Tbl_category();
- Db_conn conn = fxt.Wiki().Db_mgr_as_sql().Fsys_mgr().Conn_ctg();
+ Db_conn conn = fxt.Wiki().Db_mgr_as_sql().Core_data_mgr().Conn_ctg();
Db_stmt stmt = tbl.Insert_stmt(conn);
try {
for (int i = 0; i < len; i++) {
@@ -52,7 +52,7 @@ public class Xoctg_hiddencat_parser_sql_tst {
private void Tst_ctg_hidden(boolean expd_hidden, int... ctgs) {
int len = ctgs.length;
Xodb_category_tbl tbl = fxt.Wiki().Db_mgr_as_sql().Tbl_category();
- Db_conn conn = fxt.Wiki().Db_mgr_as_sql().Fsys_mgr().Conn_ctg();
+ Db_conn conn = fxt.Wiki().Db_mgr_as_sql().Core_data_mgr().Conn_ctg();
for (int i = 0; i < len; i++) {
int ctg_id = ctgs[i];
Xodb_category_itm ctg_itm = tbl.Select(conn, ctg_id);
diff --git a/400_xowa/src/gplx/xowa/bldrs/oimgs/Xob_dump_mgr_base.java b/400_xowa/src/gplx/xowa/bldrs/oimgs/Xob_dump_mgr_base.java
index 685db3a1a..428be763f 100644
--- a/400_xowa/src/gplx/xowa/bldrs/oimgs/Xob_dump_mgr_base.java
+++ b/400_xowa/src/gplx/xowa/bldrs/oimgs/Xob_dump_mgr_base.java
@@ -16,11 +16,12 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.bldrs.oimgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*;
-import gplx.dbs.*; import gplx.xowa.dbs.*; import gplx.xowa.dbs.tbls.*; import gplx.xowa.wikis.caches.*; import gplx.xowa.bldrs.files.*;
+import gplx.dbs.*; import gplx.xowa.wikis.caches.*; import gplx.xowa.bldrs.files.*;
+import gplx.xowa.wikis.data.*; import gplx.xowa.dbs.*; import gplx.xowa.dbs.tbls.*;
public abstract class Xob_dump_mgr_base extends Xob_itm_basic_base implements Xob_cmd, GfoInvkAble {
private Xob_dump_src_id page_src;
- private Xodb_fsys_mgr db_fsys_mgr; protected Xop_parser parser; protected Xop_ctx ctx; protected Xop_root_tkn root;
- private int[] ns_ary; private Xodb_file[] db_ary;
+ private Xowe_core_data_mgr db_fsys_mgr; protected Xop_parser parser; protected Xop_ctx ctx; protected Xop_root_tkn root;
+ private int[] ns_ary; private Xowd_db_file[] db_ary;
private int ns_bgn = -1, db_bgn = -1, pg_bgn = -1;
private int ns_end = -1, db_end = -1, pg_end = Int_.MaxValue;
private int commit_interval = 1000, progress_interval = 250, cleanup_interval = 2500, select_size = 10 * Io_mgr.Len_mb;
@@ -40,7 +41,7 @@ public abstract class Xob_dump_mgr_base extends Xob_itm_basic_base implements Xo
root = ctx.Tkn_mkr().Root(Bry_.Empty);
wiki.Init_assert(); // NOTE: must init wiki for db_mgr_as_sql
wiki.Db_mgr_as_sql().Init_load(Db_url_.sqlite_(Xodb_mgr_sql.Find_core_url(wiki))); // NOTE: must reinit providers as previous steps may have rls'd (and left member variable conn which is closed)
- db_fsys_mgr = wiki.Db_mgr_as_sql().Fsys_mgr();
+ db_fsys_mgr = wiki.Db_mgr_as_sql().Core_data_mgr();
db_ary = Xob_dump_src_ttl.Init_text_files_ary(db_fsys_mgr);
poll_interval = poll_mgr.Poll_interval();
@@ -136,7 +137,7 @@ public abstract class Xob_dump_mgr_base extends Xob_itm_basic_base implements Xo
, Env_.TickCount_elapsed_in_sec(time_bgn), rate_mgr.Rate_as_str(), String_.new_utf8_(page.Ttl_wo_ns()));
ctx.Clear();
Exec_pg_itm_hook(ns, page, page.Text());
- ctx.App().Utl_bry_bfr_mkr().Clear_fail_check(); // make sure all bfrs are released
+ ctx.App().Utl__bfr_mkr().Clear_fail_check(); // make sure all bfrs are released
if (ctx.Wiki().Cache_mgr().Tmpl_result_cache().Count() > 50000)
ctx.Wiki().Cache_mgr().Tmpl_result_cache().Clear();
++exec_count;
@@ -150,7 +151,7 @@ public abstract class Xob_dump_mgr_base extends Xob_itm_basic_base implements Xo
}
catch (Exception exc) {
bldr.Usr_dlg().Warn_many(GRP_KEY, "parse", "failed to parse ~{0} error ~{1}", String_.new_utf8_(page.Ttl_wo_ns()), Err_.Message_lang(exc));
- ctx.App().Utl_bry_bfr_mkr().Clear();
+ ctx.App().Utl__bfr_mkr().Clear();
this.Free();
}
}
diff --git a/400_xowa/src/gplx/xowa/bldrs/oimgs/Xob_parse_all_src_sql.java b/400_xowa/src/gplx/xowa/bldrs/oimgs/Xob_parse_all_src_sql.java
index 9ac39b670..2f2eb073c 100644
--- a/400_xowa/src/gplx/xowa/bldrs/oimgs/Xob_parse_all_src_sql.java
+++ b/400_xowa/src/gplx/xowa/bldrs/oimgs/Xob_parse_all_src_sql.java
@@ -16,13 +16,13 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.bldrs.oimgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*;
-import gplx.xowa.dbs.*; import gplx.dbs.*; import gplx.dbs.qrys.*; import gplx.xowa.dbs.tbls.*;
+import gplx.xowa.wikis.data.*; import gplx.xowa.dbs.*; import gplx.dbs.*; import gplx.dbs.qrys.*; import gplx.xowa.dbs.tbls.*;
class Xob_dump_src_ttl implements Xob_parse_all_db {
- private Xodb_mgr_sql db_mgr; private Db_stmt page_stmt; private Xodb_file[] text_files_ary; private int text_files_len; private byte redirect;
+ private Xodb_mgr_sql db_mgr; private Db_stmt page_stmt; private Xowd_db_file[] text_files_ary; private int text_files_len; private byte redirect;
public Xob_dump_src_ttl Init(Xowe_wiki wiki, int limit, byte redirect) {
this.db_mgr = wiki.Db_mgr_as_sql(); this.redirect = redirect;
- page_stmt = db_mgr.Tbl_page().Select_for_parse_all_stmt(db_mgr.Fsys_mgr().Conn_core(), limit, redirect);
- text_files_ary = Init_text_files_ary(db_mgr.Fsys_mgr());
+ page_stmt = db_mgr.Tbl_page().Select_for_parse_all_stmt(db_mgr.Core_data_mgr().Conn_core(), limit, redirect);
+ text_files_ary = Init_text_files_ary(db_mgr.Core_data_mgr());
text_files_len = text_files_ary.length;
return this;
}
@@ -30,21 +30,20 @@ class Xob_dump_src_ttl implements Xob_parse_all_db {
Cancelable cancelable = Cancelable_.Never;
db_mgr.Tbl_page().Select_for_parse_all(cancelable, hash, page_stmt, ns_id, ttl, redirect);
for (int i = 0; i < text_files_len; i++) {
- Xodb_file text_file = text_files_ary[i];
+ Xowd_db_file text_file = text_files_ary[i];
db_mgr.Tbl_text().Select_in(cancelable, text_file, hash);
}
}
- public static Xodb_file[] Init_text_files_ary(Xodb_fsys_mgr fsys_mgr) {
+ public static Xowd_db_file[] Init_text_files_ary(Xowe_core_data_mgr core_data_mgr) {
ListAdp text_files_list = ListAdp_.new_();
- Xodb_file[] file_ary = fsys_mgr.Files_ary();
- int len = file_ary.length;
- if (len == 1) return new Xodb_file[] {file_ary[0]}; // single file: return core; note that there are no Tid = Text
+ int len = core_data_mgr.Dbs__len();
+ if (len == 1) return new Xowd_db_file[] {core_data_mgr.Dbs__get_at(0)}; // single file: return core; note that there are no Tid = Text
for (int i = 0; i < len; i++) {
- Xodb_file file = file_ary[i];
- if (file.Tid() == Xodb_file_tid.Tid_text)
+ Xowd_db_file file = core_data_mgr.Dbs__get_at(i);
+ if (file.Tid() == Xowd_db_file_.Tid_text)
text_files_list.Add(file);
}
- return (Xodb_file[])text_files_list.Xto_ary_and_clear(Xodb_file.class);
+ return (Xowd_db_file[])text_files_list.Xto_ary_and_clear(Xowd_db_file.class);
}
}
class Xob_dump_src_id {
@@ -54,7 +53,7 @@ class Xob_dump_src_id {
public Xob_dump_src_id Init(Xowe_wiki wiki, byte redirect, int size_max) {
this.db_mgr = wiki.Db_mgr_as_sql(); this.redirect = redirect;
this.size_max = size_max;
- page_db_url = db_mgr.Fsys_mgr().Get_tid_root(Xodb_file_tid.Tid_core).Url().Raw();
+ page_db_url = db_mgr.Core_data_mgr().Dbs__get_by_tid_1st(Xowd_db_file_.Tid_core).Url().Raw();
return this;
}
public void Get_pages(ListAdp list, int text_db_idx, int cur_ns, int prv_id) {
@@ -76,7 +75,7 @@ class Xob_dump_src_id {
private DataRdr New_rdr(Xodb_mgr_sql db_mgr, String page_db_url, int text_db_idx, int cur_ns, int prv_id, byte redirect) {
if (cur_text_db_idx != text_db_idx) {
cur_text_db_idx = text_db_idx;
- Xodb_file text_db = db_mgr.Fsys_mgr().Get_by_idx(text_db_idx);
+ Xowd_db_file text_db = db_mgr.Core_data_mgr().Dbs__get_at(text_db_idx);
Db_conn conn = text_db.Conn();
String sql = String_.Format(Sql_select, New_rdr__redirect_clause(redirect));
text_stmt = conn.Stmt_new(Db_qry_sql.rdr_(sql));
diff --git a/400_xowa/src/gplx/xowa/bldrs/oimgs/Xob_text_db_prep.java b/400_xowa/src/gplx/xowa/bldrs/oimgs/Xob_text_db_prep.java
index a2a501f01..6f016ca45 100644
--- a/400_xowa/src/gplx/xowa/bldrs/oimgs/Xob_text_db_prep.java
+++ b/400_xowa/src/gplx/xowa/bldrs/oimgs/Xob_text_db_prep.java
@@ -16,9 +16,8 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.bldrs.oimgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*;
-import gplx.dbs.*; import gplx.dbs.engines.sqlite.*; import gplx.xowa.dbs.*;
+import gplx.xowa.wikis.data.*; import gplx.dbs.*; import gplx.dbs.engines.sqlite.*; import gplx.xowa.dbs.*;
public class Xob_text_db_prep extends Xob_itm_basic_base implements Xob_cmd {
- private Xodb_file[] db_files;
public Xob_text_db_prep(Xob_bldr bldr, Xowe_wiki wiki) {this.Cmd_ctor(bldr, wiki);}
public String Cmd_key() {return KEY_oimg;} public static final String KEY_oimg = "wiki.text_db_prep";
public void Cmd_ini(Xob_bldr bldr) {}
@@ -26,27 +25,26 @@ public class Xob_text_db_prep extends Xob_itm_basic_base implements Xob_cmd {
wiki.Init_assert();
}
public void Cmd_run() {
- Xodb_fsys_mgr db_fsys_mgr = wiki.Db_mgr_as_sql().Fsys_mgr();
- String page_db_url = db_fsys_mgr.Get_tid_root(Xodb_file_tid.Tid_core).Url().Raw();
- db_files = db_fsys_mgr.Files_ary();
- int len = db_files.length;
+ Xowe_core_data_mgr core_data_mgr = wiki.Db_mgr_as_sql().Core_data_mgr();
+ String page_db_url = core_data_mgr.Dbs__get_db_core().Url().Raw();
+ int len = core_data_mgr.Dbs__len();
for (int i = 0; i < len; i++) {
- Xodb_file db_file = db_files[i];
- if (db_file.Tid() == Xodb_file_tid.Tid_text)
+ Xowd_db_file db_file = core_data_mgr.Dbs__get_at(i);
+ if (db_file.Tid() == Xowd_db_file_.Tid_text)
Prep_db(page_db_url, db_file);
}
}
public void Cmd_end() {
- int len = db_files.length;
+ Xowe_core_data_mgr core_data_mgr = wiki.Db_mgr_as_sql().Core_data_mgr();
+ int len = core_data_mgr.Dbs__len();
for (int i = 0; i < len; i++) {
- Xodb_file db_file = db_files[i];
- if (db_file.Tid() == Xodb_file_tid.Tid_text)
+ Xowd_db_file db_file = core_data_mgr.Dbs__get_at(i);
+ if (db_file.Tid() == Xowd_db_file_.Tid_text)
db_file.Rls();
}
- db_files = null;
}
public void Cmd_print() {}
- private void Prep_db(String page_db_url, Xodb_file text_db) {
+ private void Prep_db(String page_db_url, Xowd_db_file text_db) {
usr_dlg.Note_many("", "", "copying page_rows to text_db: ~{0}", text_db.Url().NameOnly());
Db_conn conn = text_db.Conn();
Sqlite_engine_.Tbl_create_and_delete(conn, "page_dump", Sql_create_tbl);
diff --git a/400_xowa/src/gplx/xowa/bldrs/wikis/images/Xob_image_ext_calc_tst.java b/400_xowa/src/gplx/xowa/bldrs/wikis/images/Xob_image_ext_calc_tst.java
index e6c5622ad..2865f10d3 100644
--- a/400_xowa/src/gplx/xowa/bldrs/wikis/images/Xob_image_ext_calc_tst.java
+++ b/400_xowa/src/gplx/xowa/bldrs/wikis/images/Xob_image_ext_calc_tst.java
@@ -16,8 +16,7 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.bldrs.wikis.images; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wikis.*;
-import org.junit.*;
-import gplx.ios.*;
+import org.junit.*; import gplx.ios.*; import gplx.xowa.files.*;
public class Xob_image_ext_calc_tst {
private Xob_image_ext_calc_fxt fxt = new Xob_image_ext_calc_fxt();
@Test public void Basic() {fxt.Init_("A.png" , Xof_media_type.Name_bitmap , Xof_ext_.Bry_png, 220, 110) .Test(Xof_ext_.Id_png);} // A.png -> png
diff --git a/400_xowa/src/gplx/xowa/bldrs/wikis/images/Xob_wiki_image_sql.java b/400_xowa/src/gplx/xowa/bldrs/wikis/images/Xob_wiki_image_sql.java
index 86641b54d..7c519a6e1 100644
--- a/400_xowa/src/gplx/xowa/bldrs/wikis/images/Xob_wiki_image_sql.java
+++ b/400_xowa/src/gplx/xowa/bldrs/wikis/images/Xob_wiki_image_sql.java
@@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.bldrs.wikis.images; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wikis.*;
-import gplx.ios.*; import gplx.xowa.bldrs.*; import gplx.dbs.*; import gplx.xowa.dbs.*; import gplx.xowa.dbs.tbls.*; import gplx.xowa.bldrs.oimgs.*;
+import gplx.ios.*; import gplx.xowa.bldrs.*; import gplx.dbs.*; import gplx.xowa.dbs.*; import gplx.xowa.dbs.tbls.*; import gplx.xowa.bldrs.oimgs.*; import gplx.xowa.files.*;
public class Xob_wiki_image_sql extends Xob_itm_dump_base implements Xob_cmd, GfoInvkAble, Sql_file_parser_cmd {
private Db_conn conn = null; private Db_stmt stmt = null;
private Xob_wiki_image_tbl tbl_image = new Xob_wiki_image_tbl();
diff --git a/400_xowa/src/gplx/xowa/bldrs/wikis/redirects/Xob_redirect_cmd.java b/400_xowa/src/gplx/xowa/bldrs/wikis/redirects/Xob_redirect_cmd.java
index d1881760a..350a79300 100644
--- a/400_xowa/src/gplx/xowa/bldrs/wikis/redirects/Xob_redirect_cmd.java
+++ b/400_xowa/src/gplx/xowa/bldrs/wikis/redirects/Xob_redirect_cmd.java
@@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.bldrs.wikis.redirects; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wikis.*;
-import gplx.dbs.*; import gplx.xowa.dbs.*; import gplx.xowa.dbs.tbls.*; import gplx.xowa.bldrs.oimgs.*;
+import gplx.xowa.wikis.data.*; import gplx.dbs.*; import gplx.xowa.dbs.*; import gplx.xowa.dbs.tbls.*; import gplx.xowa.bldrs.oimgs.*;
public class Xob_redirect_cmd extends Xob_dump_mgr_base {
private Db_conn conn; private Xob_redirect_tbl redirect_tbl;
private Xodb_mgr_sql db_mgr; private Xop_redirect_mgr redirect_mgr; private Url_encoder encoder;
@@ -31,8 +31,8 @@ public class Xob_redirect_cmd extends Xob_dump_mgr_base {
@Override protected Db_conn Init_db_file() {
this.db_mgr = wiki.Db_mgr_as_sql();
redirect_mgr = wiki.Redirect_mgr();
- encoder = Xoa_app_.Utl_encoder_mgr().Url_ttl();
- redirect_tbl = new Xob_redirect_tbl(wiki.Fsys_mgr().Root_dir(), Xoa_app_.Utl_encoder_mgr().Url_ttl()).Create_table();
+ encoder = Xoa_app_.Utl__encoder_mgr().Url_ttl();
+ redirect_tbl = new Xob_redirect_tbl(wiki.Fsys_mgr().Root_dir(), Xoa_app_.Utl__encoder_mgr().Url_ttl()).Create_table();
conn = redirect_tbl.Conn();
conn.Txn_mgr().Txn_bgn_if_none();
return conn;
@@ -51,6 +51,6 @@ public class Xob_redirect_cmd extends Xob_dump_mgr_base {
@Override public void Exec_end_hook() {
conn.Txn_mgr().Txn_end_all();
redirect_tbl.Create_indexes(usr_dlg);
- redirect_tbl.Update_trg_redirect_id(db_mgr.Fsys_mgr().Get_url(Xodb_file_tid.Tid_core), 4);
+ redirect_tbl.Update_trg_redirect_id(db_mgr.Core_data_mgr().Get_url(Xowd_db_file_.Tid_core), 4);
}
}
diff --git a/400_xowa/src/gplx/xowa/ctgs/Xoctg_fmtr_all.java b/400_xowa/src/gplx/xowa/ctgs/Xoctg_fmtr_all.java
index be235828e..9af00d0d3 100644
--- a/400_xowa/src/gplx/xowa/ctgs/Xoctg_fmtr_all.java
+++ b/400_xowa/src/gplx/xowa/ctgs/Xoctg_fmtr_all.java
@@ -108,13 +108,13 @@ class Xoctg_fmtr_all {
}
public byte[] Bld_bwd_fwd(Xowe_wiki wiki, Xoa_ttl ttl, Xoctg_view_grp view_grp) {
if (view_grp.Total() < grp_max) return Bry_.Empty;
- Bry_bfr bfr = wiki.Utl_bry_bfr_mkr().Get_k004();
+ Bry_bfr bfr = wiki.Utl__bfr_mkr().Get_k004();
Html_nav_bry(bfr, wiki, ttl, view_grp, Bool_.N);
Html_nav_bry(bfr, wiki, ttl, view_grp, Bool_.Y);
return bfr.Mkr_rls().Xto_bry_and_clear();
}
private void Html_nav_bry(Bry_bfr bfr, Xowe_wiki wiki, Xoa_ttl ttl, Xoctg_view_grp view_grp, boolean fill_at_bgn) {
- Bry_bfr href_bfr = wiki.Utl_bry_bfr_mkr().Get_b512();
+ Bry_bfr href_bfr = wiki.Utl__bfr_mkr().Get_b512();
wiki.Appe().Href_parser().Build_to_bfr(href_bfr, wiki, ttl);
byte[] arg_idx_lbl = null; byte[] arg_sortkey = null;
if (fill_at_bgn) {
diff --git a/400_xowa/src/gplx/xowa/ctgs/Xoctg_fmtr_itm.java b/400_xowa/src/gplx/xowa/ctgs/Xoctg_fmtr_itm.java
index c8ac9e11a..59065508e 100644
--- a/400_xowa/src/gplx/xowa/ctgs/Xoctg_fmtr_itm.java
+++ b/400_xowa/src/gplx/xowa/ctgs/Xoctg_fmtr_itm.java
@@ -104,7 +104,7 @@ class Xoctg_fmtr_itm_subc extends Xoctg_fmtr_itm_base {
}
byte[] Bld_contains_text(int sub_ctgs, int sub_pages, int sub_files) {
if (sub_ctgs == 0 && sub_pages == 0 && sub_files == 0) return Bry_.Empty;
- Bry_bfr bfr = wiki.Utl_bry_bfr_mkr().Get_b128();
+ Bry_bfr bfr = wiki.Utl__bfr_mkr().Get_b128();
bfr.Add_byte(Byte_ascii.Paren_bgn);
Bld_contains_text_itm(bfr, Xol_msg_itm_.Id_ctgtree_subc_counts_ctg, sub_ctgs);
Bld_contains_text_itm(bfr, Xol_msg_itm_.Id_ctgtree_subc_counts_page, sub_pages);
diff --git a/400_xowa/src/gplx/xowa/ctgs/Xoctg_html_mgr.java b/400_xowa/src/gplx/xowa/ctgs/Xoctg_html_mgr.java
index 92981cea0..48af24bbf 100644
--- a/400_xowa/src/gplx/xowa/ctgs/Xoctg_html_mgr.java
+++ b/400_xowa/src/gplx/xowa/ctgs/Xoctg_html_mgr.java
@@ -24,7 +24,7 @@ public class Xoctg_html_mgr implements GfoInvkAble {
private final Xoctg_fmtr_all mgr_files = new Xoctg_fmtr_all(Xoa_ctg_mgr.Tid_file);
public Xoctg_data_cache Data_cache() {return data_cache;} private Xoctg_data_cache data_cache = new Xoctg_data_cache();
public void Bld_html(Xowe_wiki wiki, Xoae_page page, Bry_bfr bfr) {
- Bry_bfr tmp_bfr = wiki.Utl_bry_bfr_mkr().Get_m001();
+ Bry_bfr tmp_bfr = wiki.Utl__bfr_mkr().Get_m001();
try {
if (wiki.Db_mgr().Category_version() == Xoa_ctg_mgr.Version_2)
Bld_html_v2(wiki, page, tmp_bfr);
diff --git a/400_xowa/src/gplx/xowa/ctgs/Xoctg_html_mgr_tst.java b/400_xowa/src/gplx/xowa/ctgs/Xoctg_html_mgr_tst.java
index bd386a119..d238c895a 100644
--- a/400_xowa/src/gplx/xowa/ctgs/Xoctg_html_mgr_tst.java
+++ b/400_xowa/src/gplx/xowa/ctgs/Xoctg_html_mgr_tst.java
@@ -250,7 +250,7 @@ class Xoh_ctg_page_fxt {
fmtr_itm.Init_from_all(wiki, wiki.Lang(), ctg, list_mgr, list, list.Len());
fmtr_itm.Init_from_grp(new byte[] {grp_char_0}, 0);
fmtr_itm.Col_idx_(0, 0);
- Bry_bfr bfr = wiki.Utl_bry_bfr_mkr().Get_b512();
+ Bry_bfr bfr = wiki.Utl__bfr_mkr().Get_b512();
fmtr_itm.XferAry(bfr, 0);
Tfds.Eq_str_lines(expd, bfr.Mkr_rls().Xto_str_and_clear());
}
@@ -258,12 +258,12 @@ class Xoh_ctg_page_fxt {
Xoctg_fmtr_all list_mgr = ctg_html.Fmtr(tid);
Xoctg_fmtr_grp fmtr_grp = ctg_html.Fmtr_grp();
fmtr_grp.Init_from_all(wiki, wiki.Lang(), ctg, list_mgr, ctg.Grp_by_tid(tid));
- Bry_bfr bfr = wiki.Utl_bry_bfr_mkr().Get_b512();
+ Bry_bfr bfr = wiki.Utl__bfr_mkr().Get_b512();
fmtr_grp.XferAry(bfr, 0);
Tfds.Eq_str_lines(expd, bfr.Mkr_rls().Xto_str_and_clear());
}
public void Test_html_all(byte tid, String expd) {
- Bry_bfr bfr = wiki.Utl_bry_bfr_mkr().Get_b512();
+ Bry_bfr bfr = wiki.Utl__bfr_mkr().Get_b512();
ctg_html.Bld_all(bfr, wiki, wiki.Lang(), ctg, tid);
Tfds.Eq_str_lines(expd, bfr.Mkr_rls().Xto_str_and_clear());
}
diff --git a/400_xowa/src/gplx/xowa/ctgs/Xoctg_idx_mgr_tst.java b/400_xowa/src/gplx/xowa/ctgs/Xoctg_idx_mgr_tst.java
index fb1e7ac03..9a8d0b1a9 100644
--- a/400_xowa/src/gplx/xowa/ctgs/Xoctg_idx_mgr_tst.java
+++ b/400_xowa/src/gplx/xowa/ctgs/Xoctg_idx_mgr_tst.java
@@ -76,7 +76,7 @@ class Xoctg_idx_mgr_fxt {
return this;
} private Xoae_app app; Xowe_wiki wiki; Xoctg_idx_mgr idx_mgr; static final byte[] Ctg_name = Bry_.new_ascii_("Ctg_test");
public byte[] Make_src(int len) {
- Bry_bfr bfr = wiki.Utl_bry_bfr_mkr().Get_k004().Mkr_rls();
+ Bry_bfr bfr = wiki.Utl__bfr_mkr().Get_k004().Mkr_rls();
bfr.Add_byte_pipe(); // always have leading pipe
for (int i = 0; i < len; i++) {
bfr.Add_base85_len_5(i).Add_byte(Byte_ascii.Semic); // idx.Id() = i
diff --git a/400_xowa/src/gplx/xowa/dbs/Xodb_file.java b/400_xowa/src/gplx/xowa/dbs/Xodb_file.java
deleted file mode 100644
index 52610e348..000000000
--- a/400_xowa/src/gplx/xowa/dbs/Xodb_file.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
-XOWA: the XOWA Offline Wiki Application
-Copyright (C) 2012 gnosygnu@gmail.com
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU Affero General Public License as
-published by the Free Software Foundation, either version 3 of the
-License, or (at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU Affero General Public License for more details.
-
-You should have received a copy of the GNU Affero General Public License
-along with this program. If not, see .
-*/
-package gplx.xowa.dbs; import gplx.*; import gplx.xowa.*;
-import gplx.dbs.*;
-public class Xodb_file {
- public Xodb_file(int id, byte tid) {this.id = id; this.tid = tid;}
- public int Id() {return id;} private final int id; // unique id in xowa_db
- public byte Tid() {return tid;} private final byte tid; // db type id
- public Io_url Url() {return url;} public Xodb_file Url_(Io_url v) {url = v; return this;} private Io_url url;
- public String Url_rel() {return url_rel;} public Xodb_file Url_rel_(String v) {url_rel = v; return this;} private String url_rel;
- public long File_len() {return file_len;} public Xodb_file File_len_add(int v) {file_len += v; return this;} private long file_len;
- public long File_max() {return file_max;} public Xodb_file File_max_(long v) {file_max = v; return this;} private long file_max;
- public byte Cmd_mode() {return cmd_mode;} public Xodb_file Cmd_mode_(byte v) {cmd_mode = v; return this;} private byte cmd_mode;
- public Db_url Connect() {return connect;} public Xodb_file Connect_(Db_url v) {connect = v; return this;} private Db_url connect;
- public Db_conn Conn() {
- if (conn == null) conn = Db_conn_pool.I.Get_or_new(connect);
- return conn;
- } private Db_conn conn;
- public void Conn_(Db_conn p) {conn = p;}
- public void Rls() {
- if (conn == null) return;
- try {
- conn.Txn_mgr().Txn_end_all(); // close any open transactions
- conn.Conn_term();
- } finally {conn = null;}
- }
- public static Xodb_file load_(int id, byte tid, String url) {return new Xodb_file(id, tid).Url_rel_(url).Cmd_mode_(Db_cmd_mode.Tid_ignore);}
- public static Xodb_file make_(int id, byte tid, String url) {return new Xodb_file(id, tid).Url_rel_(url).Cmd_mode_(Db_cmd_mode.Tid_create);}
-}
diff --git a/400_xowa/src/gplx/xowa/dbs/Xodb_fsys_mgr.java b/400_xowa/src/gplx/xowa/dbs/Xodb_fsys_mgr.java
deleted file mode 100644
index 3afc2d222..000000000
--- a/400_xowa/src/gplx/xowa/dbs/Xodb_fsys_mgr.java
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
-XOWA: the XOWA Offline Wiki Application
-Copyright (C) 2012 gnosygnu@gmail.com
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU Affero General Public License as
-published by the Free Software Foundation, either version 3 of the
-License, or (at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU Affero General Public License for more details.
-
-You should have received a copy of the GNU Affero General Public License
-along with this program. If not, see .
-*/
-package gplx.xowa.dbs; import gplx.*; import gplx.xowa.*;
-import gplx.dbs.*; import gplx.dbs.engines.sqlite.*; import gplx.xowa.dbs.tbls.*;
-public class Xodb_fsys_mgr {
- private final Io_url src_dir; private final Io_url trg_dir; private final String wiki_name;
- public Xodb_fsys_mgr(Io_url src_dir, Io_url trg_dir, String wiki_name) {this.src_dir = src_dir; this.trg_dir = trg_dir; this.wiki_name = wiki_name;}
- public Xodb_file[] Files_ary() {return files_ary;}
- public Db_conn Conn_core() {return provider_core;} private Db_conn provider_core;
- public Db_conn Conn_page() {return provider_page;} private Db_conn provider_page;
- public Db_conn Conn_ctg() {return provider_ctg;} public void Conn_ctg_(Xodb_file file) {provider_ctg = file.Conn();} private Db_conn provider_ctg;
- public Db_conn Conn_wdata() {return provider_wdata;}public void Conn_wdata_(Xodb_file file) {provider_wdata = file.Conn();} private Db_conn provider_wdata;
- public int Tid_text_idx() {return tid_text_idx;} public Xodb_fsys_mgr Tid_text_idx_(int v) {tid_text_idx = v; return this;} private int tid_text_idx = File_id_core;
- public long Tid_text_max() {return tid_text_max;} private long tid_text_max = Heap_max_infinite;
- public void Init_by_files(Db_conn p, Xodb_file[] v) {
- files_ary = v; files_ary_len = v.length;
- boolean category_provider_core_null = true;
- for (int i = 0; i < files_ary_len; i++) {
- Xodb_file file = files_ary[i];
- Io_url url = trg_dir.GenSubFil(file.Url_rel()); // relative name only
- file.Connect_(Db_url_.sqlite_(url)).Url_(url);
- switch (file.Tid()) {
- case Xodb_file_tid.Tid_core : file.Conn_(p); Set_file_core(file); break;
- case Xodb_file_tid.Tid_category : if (category_provider_core_null) {Conn_ctg_(file); category_provider_core_null = false;} break;
- case Xodb_file_tid.Tid_wikidata : Conn_wdata_(file); break;
- case Xodb_file_tid.Tid_text : Set_file_text(file); break;
- }
- }
- }
- public void Init_by_ns_map(Xow_ns_mgr ns_mgr, String ns_map_str, long text_max) {
- Set_file_core(Make(Xodb_file_tid.Tid_core));
- Xodb_ns_map_mgr ns_map = Xodb_ns_map_mgr.Parse(Bry_.new_ascii_(ns_map_str));
- Xodb_ns_map_itm[] ns_map_itms = ns_map.Itms();
- int ns_map_itms_len = ns_map_itms.length;
- for (int i = 0; i < ns_map_itms_len; i++) {
- Xodb_ns_map_itm itm = ns_map_itms[i];
- int[] ns_ids = itm.Ns_ids();
- int ns_ids_len = ns_ids.length;
- Xodb_file file = Make(Xodb_file_tid.Tid_text);
- for (int j = 0; j < ns_ids_len; j++) {
- int ns_id = ns_ids[j];
- Xow_ns ns = ns_mgr.Ids_get_or_null(ns_id); if (ns == null) continue; // some dumps may not have ns; for example, pre-2013 dumps won't have Module (828)
- ns.Bldr_file_idx_(file.Id());
- }
- }
- if (text_max > 0)
- Set_file_text(Make(Xodb_file_tid.Tid_text).File_max_(text_max));
- }
- private void Set_file_core(Xodb_file file) {provider_core = provider_page = provider_ctg = provider_wdata = file.Conn();}
- private void Set_file_text(Xodb_file file) {tid_text_idx = file.Id(); tid_text_max = file.File_max();}
- public Io_url Get_url(byte file_tid) {
- Xodb_file file = Get_tid_root(file_tid);
- return trg_dir.GenSubFil(file.Url_rel());
- }
- public Xodb_file Get_by_idx(int idx) {return files_ary[idx];}
- public Xodb_file Get_or_make(byte file_tid, int file_idx) {return file_idx < files_ary_len ? files_ary[file_idx] : Make(file_tid);}
- public Xodb_file Get_tid_root(byte file_tid) {
- for (int i = 0; i < files_ary_len; i++) {
- Xodb_file file = files_ary[i];
- if (file.Tid() == file_tid) return file; // assume 1st found file is root
- }
- return null;
- }
- public void Index_create(Gfo_usr_dlg usr_dlg, byte[] tids, Db_idx_itm... idxs) {
- for (int i = 0; i < files_ary_len; i++) {
- Xodb_file file = files_ary[i];
- if (Byte_.In(file.Tid(), tids))
- Sqlite_engine_.Idx_create(usr_dlg, file.Conn(), Int_.Xto_str(file.Id()), idxs);
- }
- }
- public Xodb_file Make(byte file_tid) {
- int file_idx = files_ary_len;
- Io_url url = Create_sqlite3(src_dir, trg_dir, wiki_name, file_idx);
- Xodb_file rv = Xodb_file.make_(file_idx, file_tid, url.NameAndExt()).Connect_(Db_url_.sqlite_(url));
- rv.Url_(url);
- Xodb_xowa_cfg_tbl.Insert_str(rv.Conn(), Cfg_grp_db_meta, "type_name", Xodb_file_tid.Xto_key(file_tid));
- files_ary = (Xodb_file[])Array_.Resize(files_ary, files_ary_len + 1);
- files_ary[files_ary_len++] = rv;
- return rv;
- } private Xodb_file[] files_ary = new Xodb_file[0]; private int files_ary_len = 0;
- public void Rls() {
- for (int i = 0; i < files_ary_len; i++)
- files_ary[i].Rls();
- }
- private static Io_url Create_sqlite3(Io_url src_dir, Io_url trg_dir, String wiki_name, int file_idx) {
- Io_url src_fil = src_dir.GenSubFil("xowa.sqlite3"); // /bin/any/sql/xowa/xowa.sqlite3
- Io_url trg_fil = trg_dir.GenSubFil_ary(wiki_name, ".", Int_.Xto_str_pad_bgn(file_idx, 3), ".sqlite3"); // /wiki/en.wikipedia.org/en.wikipedia.org.000.sqlite3
- Io_mgr._.CopyFil(src_fil, trg_fil, true);
- return trg_fil;
- }
- private static final int File_id_core = 0;
- public static final int Heap_max_infinite = 0;
- public static final String Cfg_grp_db_meta = "db.meta";
-}
diff --git a/400_xowa/src/gplx/xowa/dbs/Xodb_load_mgr_sql.java b/400_xowa/src/gplx/xowa/dbs/Xodb_load_mgr_sql.java
index 99e31db36..3b1713f55 100644
--- a/400_xowa/src/gplx/xowa/dbs/Xodb_load_mgr_sql.java
+++ b/400_xowa/src/gplx/xowa/dbs/Xodb_load_mgr_sql.java
@@ -18,8 +18,9 @@ along with this program. If not, see .
package gplx.xowa.dbs; import gplx.*; import gplx.xowa.*;
import gplx.core.primitives.*; import gplx.dbs.*;
import gplx.xowa.apps.*; import gplx.xowa.bldrs.imports.ctgs.*; import gplx.xowa.ctgs.*; import gplx.xowa.specials.search.*; import gplx.xowa.dbs.tbls.*;
+import gplx.xowa.wikis.data.*;
public class Xodb_load_mgr_sql implements Xodb_load_mgr {
- public Xodb_load_mgr_sql(Xodb_mgr_sql db_mgr, Xodb_fsys_mgr fsys_mgr) {this.db_mgr = db_mgr; this.fsys_mgr = fsys_mgr;} private Xodb_mgr_sql db_mgr; Xodb_fsys_mgr fsys_mgr;
+ public Xodb_load_mgr_sql(Xodb_mgr_sql db_mgr, Xowe_core_data_mgr fsys_mgr) {this.db_mgr = db_mgr; this.fsys_mgr = fsys_mgr;} private Xodb_mgr_sql db_mgr; Xowe_core_data_mgr fsys_mgr;
public byte Search_version() {
if (search_provider == null) Search_version_init();
return search_version;
@@ -38,7 +39,7 @@ public class Xodb_load_mgr_sql implements Xodb_load_mgr {
String version_key = Xoa_gfs_mgr.Build_code(Xowe_wiki.Invk_props, Xow_wiki_props.Invk_bldr_version);
KeyVal[] kv_ary = db_mgr.Tbl_xowa_cfg().Select_kvs(Xodb_mgr_sql.Grp_wiki_init, version_key, version_val);
Xodb_upgrade_mgr.Upgrade(db_mgr, kv_ary, version_key, version_val.Val());
- Bry_bfr bfr = wiki.Utl_bry_bfr_mkr().Get_k004();
+ Bry_bfr bfr = wiki.Utl__bfr_mkr().Get_k004();
Xoa_gfs_mgr gfs_mgr = wiki.Appe().Gfs_mgr();
try {
int len = kv_ary.length;
@@ -57,14 +58,14 @@ public class Xodb_load_mgr_sql implements Xodb_load_mgr {
public boolean Load_ctg_v1(Xoctg_view_ctg rv, byte[] ctg_bry) {
int cat_page_id = db_mgr.Tbl_page().Select_id(Xow_ns_.Id_category, ctg_bry); if (cat_page_id == Xodb_mgr_sql.Page_id_null) return false;
Xodb_category_itm ctg = db_mgr.Tbl_category().Select(fsys_mgr.Conn_ctg(), cat_page_id); if (ctg == Xodb_category_itm.Null) return false;
- Db_conn p = fsys_mgr.Get_by_idx(ctg.File_idx()).Conn();
+ Db_conn p = fsys_mgr.Dbs__get_at(ctg.File_idx()).Conn();
return db_mgr.Ctg_select_v1(rv, p, ctg);
}
public boolean Load_ctg_v2(Xoctg_data_ctg rv, byte[] ctg_bry) {throw Err_.not_implemented_();}
public void Load_ctg_v2a(Xoctg_view_ctg rv, Xoctg_url ctg_url, byte[] ctg_ttl, int load_max) {
int cat_page_id = db_mgr.Tbl_page().Select_id(Xow_ns_.Id_category, ctg_ttl); if (cat_page_id == Xodb_mgr_sql.Page_id_null) return;
Xodb_category_itm ctg = db_mgr.Tbl_category().Select(fsys_mgr.Conn_ctg(), cat_page_id); if (ctg == Xodb_category_itm.Null) return;
- Db_conn p = fsys_mgr.Get_by_idx(ctg.File_idx()).Conn();
+ Db_conn p = fsys_mgr.Dbs__get_at(ctg.File_idx()).Conn();
ListAdp list = ListAdp_.new_();
Load_ctg_v2a_db_retrieve(rv, ctg_url, cat_page_id, load_max, p, list);
Load_ctg_v2a_ui_sift(rv, ctg, list);
@@ -112,8 +113,8 @@ public class Xodb_load_mgr_sql implements Xodb_load_mgr {
private Db_conn search_provider = null;
private void Search_version_init() {
if (search_provider == null) {
- Xodb_file search_file = db_mgr.Fsys_mgr().Get_tid_root(Xodb_file_tid.Tid_search);
- if (search_file == null) {
+ Xowd_db_file search_file = db_mgr.Core_data_mgr().Dbs__get_by_tid_1st(Xowd_db_file_.Tid_search);
+ if (search_file == Xowd_db_file.Null) {
search_provider = Db_conn_.Null;
search_version = gplx.xowa.specials.search.Xosrh_core.Version_1;
}
@@ -128,7 +129,7 @@ public class Xodb_load_mgr_sql implements Xodb_load_mgr {
if (search_version == gplx.xowa.specials.search.Xosrh_core.Version_1)
db_mgr.Tbl_page().Select_by_search(cancelable, rv, search, results_max);
else {
- Xodb_search_title_word_tbl.Select_by_word(cancelable, rv, db_mgr.Db_ctx(), search, results_max, db_mgr.Fsys_mgr().Get_tid_root(Xodb_file_tid.Tid_search).Conn());
+ Xodb_search_title_word_tbl.Select_by_word(cancelable, rv, db_mgr.Db_ctx(), search, results_max, db_mgr.Core_data_mgr().Dbs__get_by_tid_1st(Xowd_db_file_.Tid_search).Conn());
db_mgr.Tbl_page().Select_by_id_list(cancelable, true, rv);
}
}
diff --git a/400_xowa/src/gplx/xowa/dbs/Xodb_load_mgr_sql_tst.java b/400_xowa/src/gplx/xowa/dbs/Xodb_load_mgr_sql_tst.java
index 052b1241e..3cbfec9f6 100644
--- a/400_xowa/src/gplx/xowa/dbs/Xodb_load_mgr_sql_tst.java
+++ b/400_xowa/src/gplx/xowa/dbs/Xodb_load_mgr_sql_tst.java
@@ -59,7 +59,7 @@ class Xodb_load_mgr_sql_fxt {
public void Init_save_ctgs(Xodb_page[] ary) {
int len = ary.length;
Xodb_mgr_sql db_mgr = wiki.Db_mgr_as_sql();
- Db_conn p = db_mgr.Fsys_mgr().Conn_core();
+ Db_conn p = db_mgr.Core_data_mgr().Conn_core();
p.Txn_mgr().Txn_bgn_if_none();
Db_stmt page_stmt = db_mgr.Tbl_page().Insert_stmt(p);
Db_stmt category_stmt = db_mgr.Tbl_category().Insert_stmt(p);
diff --git a/400_xowa/src/gplx/xowa/dbs/Xodb_load_mgr_txt.java b/400_xowa/src/gplx/xowa/dbs/Xodb_load_mgr_txt.java
index 4058a92ba..812b9a67a 100644
--- a/400_xowa/src/gplx/xowa/dbs/Xodb_load_mgr_txt.java
+++ b/400_xowa/src/gplx/xowa/dbs/Xodb_load_mgr_txt.java
@@ -211,7 +211,7 @@ public class Xodb_load_mgr_txt implements Xodb_load_mgr {
public boolean Load_xdat_file(Cancelable cancelable, Xob_xdat_file xdat_file, Io_url url) {
boolean rv = false;
if (cancelable.Canceled()) return false;
- Bry_bfr tmp_bfr = wiki.Utl_bry_bfr_mkr().Get_m001();
+ Bry_bfr tmp_bfr = wiki.Utl__bfr_mkr().Get_m001();
byte[] tmp_bry = tmp_bfr.Bfr();
if (cancelable.Canceled()) return false;
tmp_bry = Io_mgr._.LoadFilBry_reuse(url, tmp_bry, tmp_len);
diff --git a/400_xowa/src/gplx/xowa/dbs/Xodb_mgr.java b/400_xowa/src/gplx/xowa/dbs/Xodb_mgr.java
index c6fe36f9f..7eb6e0e77 100644
--- a/400_xowa/src/gplx/xowa/dbs/Xodb_mgr.java
+++ b/400_xowa/src/gplx/xowa/dbs/Xodb_mgr.java
@@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.dbs; import gplx.*; import gplx.xowa.*;
-import gplx.dbs.*; import gplx.xowa.hdumps.*;
+import gplx.dbs.*; import gplx.xowa.html.hdumps.*;
public interface Xodb_mgr extends GfoInvkAble, RlsAble {
byte Tid();
String Tid_name();
@@ -27,5 +27,4 @@ public interface Xodb_mgr extends GfoInvkAble, RlsAble {
DateAdp Dump_date_query();
Xodb_load_mgr Load_mgr();
Xodb_save_mgr Save_mgr();
- Xodb_hdump_mgr Hdump_mgr();
}
diff --git a/400_xowa/src/gplx/xowa/dbs/Xodb_mgr_sql.java b/400_xowa/src/gplx/xowa/dbs/Xodb_mgr_sql.java
index a930b01b3..f6761955e 100644
--- a/400_xowa/src/gplx/xowa/dbs/Xodb_mgr_sql.java
+++ b/400_xowa/src/gplx/xowa/dbs/Xodb_mgr_sql.java
@@ -17,19 +17,18 @@ along with this program. If not, see .
*/
package gplx.xowa.dbs; import gplx.*; import gplx.xowa.*;
import gplx.dbs.*; import gplx.dbs.qrys.*; import gplx.dbs.engines.sqlite.*;
-import gplx.xowa.apps.*; import gplx.xowa.dbs.tbls.*; import gplx.xowa.ctgs.*; import gplx.xowa.hdumps.*;
-import gplx.xowa2.wikis.data.*;
+import gplx.xowa.apps.*; import gplx.xowa.dbs.tbls.*; import gplx.xowa.ctgs.*; import gplx.xowa.html.hdumps.*;
+import gplx.xowa.wikis.data.*;
public class Xodb_mgr_sql implements Xodb_mgr, GfoInvkAble {
private boolean html_db_enabled;
public Xodb_mgr_sql(Xowe_wiki wiki) {
this.wiki = wiki;
Io_url bin_db_dir = wiki.Appe().Fsys_mgr().Bin_any_dir().GenSubDir_nest("sql", "xowa");
- fsys_mgr = new Xodb_fsys_mgr(bin_db_dir, wiki.Fsys_mgr().Root_dir(), wiki.Domain_str());
- load_mgr = new Xodb_load_mgr_sql(this, fsys_mgr);
+ core_data_mgr = new Xowe_core_data_mgr(bin_db_dir, wiki.Fsys_mgr().Root_dir(), wiki.Domain_str());
+ load_mgr = new Xodb_load_mgr_sql(this, core_data_mgr);
save_mgr = new Xodb_save_mgr_sql(this);
tbl_text = new Xodb_text_tbl(this);
tbl_page = new Xodb_page_tbl(wiki);
- hdump_mgr = new Xodb_hdump_mgr(wiki);
}
public byte Tid() {return Tid_sql;} public static final byte Tid_sql = 1;
public String Tid_name() {return "sqlite3";}
@@ -40,18 +39,15 @@ public class Xodb_mgr_sql implements Xodb_mgr, GfoInvkAble {
public void Search_version_refresh() {load_mgr.Search_version_refresh();}
public void Html_db_enabled_(boolean v) {
html_db_enabled = v; db_ctx.Html_db_enabled_(v);
- hdump_mgr.Enabled_(v);
tbl_page.Html_db_enabled_(v);
- if (v) Xodb_hdump_mgr_setup.Hdump_db_file_init(hdump_mgr);
+ core_data_mgr.Tbl__pg().Conn_(core_data_mgr.Conn_core(), Bool_.N, core_data_mgr.Cfg__schema_is_1(), core_data_mgr.Cfg__db_id(), v);
}
public Xodb_ctx Db_ctx() {return db_ctx;} private Xodb_ctx db_ctx = new Xodb_ctx();
- public Xodb_fsys_mgr Fsys_mgr() {return fsys_mgr;} private Xodb_fsys_mgr fsys_mgr;
+ public Xowe_core_data_mgr Core_data_mgr() {return core_data_mgr;} private Xowe_core_data_mgr core_data_mgr;
public Xodb_load_mgr Load_mgr() {return load_mgr;} private Xodb_load_mgr_sql load_mgr;
public Xodb_save_mgr Save_mgr() {return save_mgr;} private Xodb_save_mgr_sql save_mgr;
- public Xodb_hdump_mgr Hdump_mgr() {return hdump_mgr;} private Xodb_hdump_mgr hdump_mgr;
public Xodb_xowa_cfg_tbl Tbl_xowa_cfg() {return tbl_cfg;} private Xodb_xowa_cfg_tbl tbl_cfg = new Xodb_xowa_cfg_tbl();
public Xodb_xowa_ns_tbl Tbl_xowa_ns() {return tbl_ns;} private Xodb_xowa_ns_tbl tbl_ns = new Xodb_xowa_ns_tbl();
- public Xodb_xowa_db_tbl Tbl_xowa_db() {return tbl_db;} private Xodb_xowa_db_tbl tbl_db = new Xodb_xowa_db_tbl();
public Xodb_page_tbl Tbl_page() {return tbl_page;} private Xodb_page_tbl tbl_page;
public Xodb_text_tbl Tbl_text() {return tbl_text;} private Xodb_text_tbl tbl_text;
public Xodb_site_stats_tbl Tbl_site_stats() {return tbl_site_stats;} private Xodb_site_stats_tbl tbl_site_stats = new Xodb_site_stats_tbl();
@@ -65,33 +61,34 @@ public class Xodb_mgr_sql implements Xodb_mgr, GfoInvkAble {
public DateAdp Dump_date_query() {
DateAdp rv = wiki.Props().Modified_latest();
if (rv != null) return rv;
- Io_url url = fsys_mgr.Get_url(Xodb_file_tid.Tid_core);
+ Io_url url = core_data_mgr.Get_url(Xowd_db_file_.Tid_core);
return Io_mgr._.QueryFil(url).ModifiedTime();
}
public void Init_by_ns_map(String ns_map) {
Xoi_dump_mgr dump_mgr = wiki.Appe().Setup_mgr().Dump_mgr();
data_storage_format = dump_mgr.Data_storage_format();
- fsys_mgr.Init_by_ns_map(wiki.Ns_mgr(), ns_map, dump_mgr.Db_text_max());
- Core_provider_(fsys_mgr.Conn_core());
+ core_data_mgr.Init_by_ns_map(wiki.Ns_mgr(), ns_map, dump_mgr.Db_text_max());
+ Core_conn_(core_data_mgr.Conn_core());
state = State_make;
}
- public void Init_load(Db_url url) {
- Db_conn conn = Db_conn_pool.I.Get_or_new(url);
- Core_provider_(conn);
- Xodb_file[] files = tbl_db.Select_all();
- fsys_mgr.Init_by_files(conn, files);
+ public void Init_load(Db_url core_db_url) {
+ Db_conn core_conn = Db_conn_pool.I.Get_or_new(core_db_url);
+ Core_conn_(core_conn);
+ Xowd_db_file[] files = core_data_mgr.Tbl__db().Select_all(wiki.Fsys_mgr().Root_dir());
+ core_data_mgr.Init_by_files(core_conn, files);
state = State_load;
}
- private void Core_provider_(Db_conn conn) {
+ private void Core_conn_(Db_conn conn) {
+ boolean created = Bool_.N; boolean schema_is_1 = core_data_mgr.Cfg__schema_is_1(); int db_id = core_data_mgr.Cfg__db_id(); // schema_is_1 always has pre-created xowa_db tbl
tbl_cfg.Conn_(conn);
- tbl_ns.Conn_(conn);
- tbl_db.Conn_(conn, Bool_.N, Bool_.Y); // version_is_1 always has pre-created xowa_db tbl
+ tbl_ns.Conn_(conn, created, schema_is_1, db_id);
tbl_page.Conn_(conn);
tbl_site_stats.Conn_(conn);
+ core_data_mgr.Core_conn_(conn, created, schema_is_1, db_id, Bool_.N);
}
public void Page_create(Db_stmt page_stmt, Db_stmt text_stmt, int page_id, int ns_id, byte[] ttl_wo_ns, boolean redirect, DateAdp modified_on, byte[] text, int random_int, int file_idx) {
int text_len = text.length;
- int html_db_id = (html_db_enabled) ? -1 : hdump_mgr.Html_db_id_default(text_len);
+ int html_db_id = (html_db_enabled) ? -1 : -1; //hdump_mgr.Html_db_id_default(text_len);
tbl_page.Insert(page_stmt, page_id, ns_id, ttl_wo_ns, redirect, modified_on, text_len, random_int, file_idx, html_db_id);
tbl_text.Insert(text_stmt, page_id, text, data_storage_format);
}
@@ -135,7 +132,7 @@ public class Xodb_mgr_sql implements Xodb_mgr, GfoInvkAble {
return rv;
}
public void Rls() {
- fsys_mgr.Rls();
+ core_data_mgr.Rls();
}
public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {
if (ctx.Match(k, Invk_data_storage_format)) return Xoi_dump_mgr.Wtr_tid_to_str(data_storage_format);
@@ -144,14 +141,13 @@ public class Xodb_mgr_sql implements Xodb_mgr, GfoInvkAble {
else if (ctx.Match(k, Invk_category_version_)) category_version = m.ReadByte("v");
else if (ctx.Match(k, Invk_search_version)) return this.Search_version();
else if (ctx.Match(k, Invk_tid_name)) return this.Tid_name();
- else if (ctx.Match(k, Invk_html_mgr)) return hdump_mgr;
return this;
}
public static final String
Invk_data_storage_format = "data_storage_format", Invk_data_storage_format_ = "data_storage_format_"
, Invk_category_version = "category_version", Invk_category_version_ = "category_version_"
, Invk_search_version = "search_version"
- , Invk_tid_name = "tid_name", Invk_html_mgr = "hdump_mgr"
+ , Invk_tid_name = "tid_name"
;
public void Category_version_update(boolean version_is_1) {
String grp = Xodb_mgr_sql.Grp_wiki_init;
@@ -162,18 +158,17 @@ public class Xodb_mgr_sql implements Xodb_mgr, GfoInvkAble {
tbl_cfg.Insert_str(grp, key, Byte_.Xto_str(category_version));
}
public void Delete_by_tid(byte tid) {
- Xodb_file[] ary = fsys_mgr.Files_ary();
- int len = ary.length;
+ int len = core_data_mgr.Dbs__len();
for (int i = 0; i < len; i++) {
- Xodb_file file = ary[i] ;
+ Xowd_db_file file = core_data_mgr.Dbs__get_at(i) ;
if (file.Tid() != tid) continue;
file.Rls();
Sqlite_url sqlite = (Sqlite_url)file.Connect();
Io_mgr._.DeleteFil_args(sqlite.Url()).MissingFails_off().Exec();
file.Cmd_mode_(Db_cmd_mode.Tid_delete);
}
- tbl_db.Commit_all(ary);
- this.Init_load(fsys_mgr.Conn_core().Url());
+ core_data_mgr.Dbs__save();
+ this.Init_load(core_data_mgr.Conn_core().Url());
}
public static final String Grp_wiki_init = "wiki.init";
diff --git a/400_xowa/src/gplx/xowa/dbs/Xodb_mgr_txt.java b/400_xowa/src/gplx/xowa/dbs/Xodb_mgr_txt.java
index 2a2fe4ac0..1ac8145a0 100644
--- a/400_xowa/src/gplx/xowa/dbs/Xodb_mgr_txt.java
+++ b/400_xowa/src/gplx/xowa/dbs/Xodb_mgr_txt.java
@@ -16,20 +16,18 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.dbs; import gplx.*; import gplx.xowa.*;
-import gplx.dbs.*; import gplx.xowa.ctgs.*; import gplx.xowa.hdumps.*; import gplx.xowa.tdbs.*;
+import gplx.dbs.*; import gplx.xowa.ctgs.*; import gplx.xowa.html.hdumps.*; import gplx.xowa.tdbs.*;
public class Xodb_mgr_txt implements Xodb_mgr {
public Xodb_mgr_txt(Xowe_wiki wiki, Xow_data_mgr data_mgr) {
this.wiki = wiki;
load_mgr = new Xodb_load_mgr_txt(wiki);
save_mgr = new Xodb_save_mgr_txt(wiki, load_mgr);
- hdump_mgr = new Xodb_hdump_mgr(wiki);
} private Xowe_wiki wiki;
public byte Tid() {return Tid_txt;} public static final byte Tid_txt = 0;
public String Tid_name() {return "xdat";}
public byte Data_storage_format() {return data_storage_format;} public void Data_storage_format_(byte v) {data_storage_format = v;} private byte data_storage_format = gplx.ios.Io_stream_.Tid_file;
public Xodb_load_mgr Load_mgr() {return load_mgr;} private Xodb_load_mgr_txt load_mgr;
public Xodb_save_mgr Save_mgr() {return save_mgr;} private Xodb_save_mgr_txt save_mgr;
- public Xodb_hdump_mgr Hdump_mgr() {return hdump_mgr;} private Xodb_hdump_mgr hdump_mgr;
public Xodb_ctx Db_ctx() {return db_ctx;} private Xodb_ctx db_ctx = new Xodb_ctx();
public DateAdp Dump_date_query() {
Io_url url = wiki.Tdb_fsys_mgr().Url_ns_fil(Xotdb_dir_info_.Tid_page, Xow_ns_.Id_main, 0);
diff --git a/400_xowa/src/gplx/xowa/dbs/Xodb_save_mgr_sql.java b/400_xowa/src/gplx/xowa/dbs/Xodb_save_mgr_sql.java
index 3da3a9ffd..d876025a8 100644
--- a/400_xowa/src/gplx/xowa/dbs/Xodb_save_mgr_sql.java
+++ b/400_xowa/src/gplx/xowa/dbs/Xodb_save_mgr_sql.java
@@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.dbs; import gplx.*; import gplx.xowa.*;
-import gplx.dbs.*; import gplx.ios.*;
+import gplx.ios.*; import gplx.dbs.*; import gplx.xowa.wikis.data.*;
public class Xodb_save_mgr_sql implements Xodb_save_mgr {
public Xodb_save_mgr_sql(Xodb_mgr_sql db_mgr) {
this.db_mgr = db_mgr; zip_mgr = db_mgr.Wiki().Appe().Zip_mgr();
@@ -41,11 +41,11 @@ public class Xodb_save_mgr_sql implements Xodb_save_mgr {
else
page_id_int = Int_.parse_(page_id);
- Xodb_fsys_mgr fsys_mgr = db_mgr.Fsys_mgr();
+ Xowe_core_data_mgr fsys_mgr = db_mgr.Core_data_mgr();
int file_idx = fsys_mgr.Tid_text_idx();
boolean redirect = db_mgr.Wiki().Redirect_mgr().Is_redirect(text, text.length);
Db_stmt page_stmt = db_mgr.Tbl_page().Insert_stmt(fsys_mgr.Conn_page());
- Db_conn text_provider = db_mgr.Fsys_mgr().Get_by_idx(file_idx).Conn();
+ Db_conn text_provider = db_mgr.Core_data_mgr().Dbs__get_at(file_idx).Conn();
Db_stmt text_stmt = db_mgr.Tbl_text().Insert_stmt(text_provider);
text = zip_mgr.Zip(db_mgr.Data_storage_format(), text);
try {
@@ -72,7 +72,7 @@ public class Xodb_save_mgr_sql implements Xodb_save_mgr {
if (redirect_changed) kv_ary[kv_idx++] = KeyVal_.new_("page_is_redirect", redirect_changed);
if (modified_changed) kv_ary[kv_idx++] = KeyVal_.new_("page_touched", Xto_touched_str(modified));
qry = Db_qry_.update_common_("page", Db_crt_.eq_("page_id", page.Revision_data().Id()), kv_ary);
- Db_conn conn = db_mgr.Fsys_mgr().Conn_core();
+ Db_conn conn = db_mgr.Core_data_mgr().Conn_core();
conn.Txn_mgr().Txn_bgn_if_none();
conn.Exec_qry(qry);
conn.Txn_mgr().Txn_end_all();
@@ -88,12 +88,12 @@ public class Xodb_save_mgr_sql implements Xodb_save_mgr {
, KeyVal_.new_("page_title", String_.new_utf8_(trg_ttl))
);
try {
- db_mgr.Fsys_mgr().Conn_core().Exec_qry(qry);
+ db_mgr.Core_data_mgr().Conn_core().Exec_qry(qry);
} catch (Exception exc) {
if (String_.Has(Err_.Message_gplx_brief(exc), "columns page_namespace, page_random_int are not unique")) { // HACK: terrible hack, but moving pages across ns will break UNIQUE index
- db_mgr.Fsys_mgr().Conn_core().Exec_sql("DROP INDEX page__name_random;"); // is UNIQUE by default
- db_mgr.Fsys_mgr().Conn_core().Exec_sql("CREATE INDEX page__name_random ON page (page_namespace, page_random_int);");
- db_mgr.Fsys_mgr().Conn_core().Exec_qry(qry);
+ db_mgr.Core_data_mgr().Conn_core().Exec_sql("DROP INDEX page__name_random;"); // is UNIQUE by default
+ db_mgr.Core_data_mgr().Conn_core().Exec_sql("CREATE INDEX page__name_random ON page (page_namespace, page_random_int);");
+ db_mgr.Core_data_mgr().Conn_core().Exec_qry(qry);
}
}
}
diff --git a/400_xowa/src/gplx/xowa/dbs/Xodb_save_mgr_txt.java b/400_xowa/src/gplx/xowa/dbs/Xodb_save_mgr_txt.java
index 82f959e6b..f2bcdded2 100644
--- a/400_xowa/src/gplx/xowa/dbs/Xodb_save_mgr_txt.java
+++ b/400_xowa/src/gplx/xowa/dbs/Xodb_save_mgr_txt.java
@@ -34,7 +34,7 @@ public class Xodb_save_mgr_txt implements Xodb_save_mgr {
boolean found = load_mgr.Load_by_ttl(db_page, ns_itm, ttl_bry);
if (found) throw Err_mgr._.fmt_(GRP_KEY, "title_exists", "create requested but title already exists: ~{0}", String_.new_utf8_(ttl_bry));
int text_len = text.length;
- Bry_bfr tmp = wiki.Utl_bry_bfr_mkr().Get_m001();
+ Bry_bfr tmp = wiki.Utl__bfr_mkr().Get_m001();
int page_id = page_id_next++;
int fil_idx = 0;
int ns_id = ttl.Ns().Id();
@@ -44,7 +44,7 @@ public class Xodb_save_mgr_txt implements Xodb_save_mgr {
Xob_xdat_file page_rdr = new Xob_xdat_file();
if (Bry_.Len_gt_0(page_rdr_bry)) page_rdr.Parse(page_rdr_bry, page_rdr_bry.length, page_rdr_url);
int row_idx = page_rdr.Count();
- Bry_bfr tmp_bfr = wiki.Utl_bry_bfr_mkr().Get_b512();
+ Bry_bfr tmp_bfr = wiki.Utl__bfr_mkr().Get_b512();
page_rdr.Insert(tmp_bfr, tmp.Xto_bry_and_clear());
this.Data_save(Xotdb_dir_info_.Tid_page, page_rdr, page_rdr_url, tmp_bfr);
tmp_bfr.Mkr_rls();
@@ -78,7 +78,7 @@ public class Xodb_save_mgr_txt implements Xodb_save_mgr {
// update page
Xob_xdat_file page_rdr = new Xob_xdat_file(); Xob_xdat_itm page_itm = new Xob_xdat_itm();
load_mgr.Load_page(tmp_page, db_page.Text_db_id(), db_page.Db_row_idx(), ns, true, page_rdr, page_itm);
- Bry_bfr tmp_bfr = wiki.Utl_bry_bfr_mkr().Get_b512();
+ Bry_bfr tmp_bfr = wiki.Utl__bfr_mkr().Get_b512();
if (text == null) text = tmp_page.Text();
int text_len = text.length;
DateAdp modified_on = tmp_page.Modified_on();
@@ -95,7 +95,7 @@ public class Xodb_save_mgr_txt implements Xodb_save_mgr {
Xoa_ttl redirect_ttl = redirect_mgr.Extract_redirect(text, text_len);
db_page.Text_len_(text_len);
db_page.Type_redirect_(redirect_ttl != null);
- Bry_bfr tmp = wiki.Utl_bry_bfr_mkr().Get_b512();
+ Bry_bfr tmp = wiki.Utl__bfr_mkr().Get_b512();
Xodb_page_.Txt_ttl_save(tmp, db_page);
byte[] ttl_row_bry = tmp.Xto_bry_and_clear();
tmp.Mkr_rls();
diff --git a/400_xowa/src/gplx/xowa/dbs/Xodb_upgrade_mgr.java b/400_xowa/src/gplx/xowa/dbs/Xodb_upgrade_mgr.java
index 8af07d589..f27810571 100644
--- a/400_xowa/src/gplx/xowa/dbs/Xodb_upgrade_mgr.java
+++ b/400_xowa/src/gplx/xowa/dbs/Xodb_upgrade_mgr.java
@@ -62,7 +62,7 @@ class Xodb_upgrade_mgr {
// ++types;
// }
// } finally {rdr.Rls(); stmt.Rls();}
-// boolean version_is_1 = types <= 1; // if 0 or 1 types assume version_1 (1=page only; 0=not set up)
+// boolean schema_is_1 = types <= 1; // if 0 or 1 types assume version_1 (1=page only; 0=not set up)
// db_mgr.Category_version_update(true); // assume version_1; will be wrong if user actually did version_2, but currently version_1 vs version_2 has no
// }
// }
diff --git a/400_xowa/src/gplx/xowa/dbs/tbls/Xodb_page_tbl.java b/400_xowa/src/gplx/xowa/dbs/tbls/Xodb_page_tbl.java
index c06fc818a..50c7662de 100644
--- a/400_xowa/src/gplx/xowa/dbs/tbls/Xodb_page_tbl.java
+++ b/400_xowa/src/gplx/xowa/dbs/tbls/Xodb_page_tbl.java
@@ -45,16 +45,16 @@ public class Xodb_page_tbl {
return false;
}
public static void Read_page__all2(Xodb_page page, Db_rdr rdr, boolean html_db_enabled) {
- page.Id_ (rdr.Read_int(0));
- page.Ns_id_ (rdr.Read_int(1));
- page.Ttl_wo_ns_ (rdr.Read_bry_by_str(2));
- page.Modified_on_ (DateAdp_.parse_fmt(rdr.Read_str(3), Page_touched_fmt));
- page.Type_redirect_ (rdr.Read_byte(4) == 1);
- page.Text_len_ (rdr.Read_int(5));
- page.Text_db_id_ (rdr.Read_int(6));
+ page.Id_ (rdr.Read_int(Fld_page_id));
+ page.Ns_id_ (rdr.Read_int(Fld_page_ns));
+ page.Ttl_wo_ns_ (rdr.Read_bry_by_str(Fld_page_title));
+ page.Modified_on_ (DateAdp_.parse_fmt(rdr.Read_str(Fld_page_touched), Page_touched_fmt));
+ page.Type_redirect_ (rdr.Read_byte(Fld_page_is_redirect) == 1);
+ page.Text_len_ (rdr.Read_int(Fld_page_len));
+ page.Text_db_id_ (rdr.Read_int(Fld_page_file_idx));
if (html_db_enabled) {
- page.Html_db_id_(rdr.Read_int(7));
- page.Redirect_id_(rdr.Read_int(8));
+ page.Html_db_id_(rdr.Read_int(Fld_page_html_db_id));
+ page.Redirect_id_(rdr.Read_int(Fld_page_is_redirect));
}
}
public boolean Select_by_id(Xodb_page rv, int page_id) {
diff --git a/400_xowa/src/gplx/xowa/dbs/tbls/Xodb_text_tbl.java b/400_xowa/src/gplx/xowa/dbs/tbls/Xodb_text_tbl.java
index 37a799ef2..6a214a9c5 100644
--- a/400_xowa/src/gplx/xowa/dbs/tbls/Xodb_text_tbl.java
+++ b/400_xowa/src/gplx/xowa/dbs/tbls/Xodb_text_tbl.java
@@ -17,6 +17,7 @@ along with this program. If not, see .
*/
package gplx.xowa.dbs.tbls; import gplx.*; import gplx.xowa.*; import gplx.xowa.dbs.*;
import gplx.core.primitives.*; import gplx.dbs.*; import gplx.ios.*;
+import gplx.xowa.wikis.data.*;
public class Xodb_text_tbl {
public Xodb_text_tbl(Xodb_mgr_sql db_mgr) {this.db_mgr = db_mgr; zip_mgr = db_mgr.Wiki().Appe().Zip_mgr();} private Xodb_mgr_sql db_mgr; private Io_stream_zip_mgr zip_mgr;
public void Delete_all(Db_conn conn) {conn.Exec_qry(Db_qry_.delete_tbl_(Tbl_name));}
@@ -27,7 +28,7 @@ public class Xodb_text_tbl {
public void Update(int file_id, int page_id, byte[] text) {
Db_stmt stmt = Db_stmt_.Null;
try {
- Db_conn conn = db_mgr.Fsys_mgr().Get_by_idx(file_id).Conn();
+ Db_conn conn = db_mgr.Core_data_mgr().Dbs__get_at(file_id).Conn();
stmt = Db_stmt_.new_update_(conn, Tbl_name, String_.Ary(Fld_page_id), Fld_old_text);
stmt.Val_bry(text).Val_int(page_id).Exec_update();
} finally {stmt.Rls();}
@@ -35,14 +36,14 @@ public class Xodb_text_tbl {
public byte[] Select(int file_id, int page_id) {
Db_stmt stmt = Db_stmt_.Null;
try {
- Db_conn conn = db_mgr.Fsys_mgr().Get_by_idx(file_id).Conn();
+ Db_conn conn = db_mgr.Core_data_mgr().Dbs__get_at(file_id).Conn();
stmt = Db_stmt_.new_select_(conn, Tbl_name, String_.Ary(Fld_page_id), Fld_old_text);
byte[] rv = (byte[])stmt.Val_int(page_id).Exec_select_val();
rv = zip_mgr.Unzip(db_mgr.Data_storage_format(), rv);
return rv;
} finally {stmt.Rls();}
}
- public void Select_in(Cancelable cancelable, Xodb_file file, OrderedHash hash) {
+ public void Select_in(Cancelable cancelable, Xowd_db_file file, OrderedHash hash) {
DataRdr rdr = DataRdr_.Null;
Db_stmt stmt = Db_stmt_.Null;
try {
diff --git a/400_xowa/src/gplx/xowa/dbs/tbls/Xodb_xowa_db_tbl.java b/400_xowa/src/gplx/xowa/dbs/tbls/Xodb_xowa_db_tbl.java
index c670929de..8fc351e85 100644
--- a/400_xowa/src/gplx/xowa/dbs/tbls/Xodb_xowa_db_tbl.java
+++ b/400_xowa/src/gplx/xowa/dbs/tbls/Xodb_xowa_db_tbl.java
@@ -17,40 +17,50 @@ along with this program. If not, see .
*/
package gplx.xowa.dbs.tbls; import gplx.*; import gplx.xowa.*; import gplx.xowa.dbs.*;
import gplx.dbs.*; import gplx.dbs.qrys.*;
+import gplx.xowa.wikis.data.*;
public class Xodb_xowa_db_tbl {
private String tbl_name = "wiki_db_regy"; private final Db_meta_fld_list flds = Db_meta_fld_list.new_();
private String fld_id, fld_type, fld_url;
private Db_conn conn; private final Db_stmt_bldr stmt_bldr = new Db_stmt_bldr();
- public void Conn_(Db_conn new_conn, boolean created, boolean version_is_1) {
+ public void Conn_(Db_conn new_conn, boolean created, boolean schema_is_1) {
this.conn = new_conn; flds.Clear();
String fld_prefix = "";
- if (version_is_1) {
+ if (schema_is_1) {
tbl_name = "xowa_db";
fld_prefix = "db_";
}
- fld_id = flds.Add_int_pkey(fld_prefix + "id");
- fld_type = flds.Add_byte(fld_prefix + "type"); // 1=core;2=wikidata;3=data
- fld_url = flds.Add_str(fld_prefix + "url", 512);
+ fld_id = flds.Add_int_pkey (fld_prefix + "id");
+ fld_type = flds.Add_byte (fld_prefix + "type"); // 1=core;2=wikidata;3=data
+ fld_url = flds.Add_str (fld_prefix + "url", 512);
if (created) {
Db_meta_tbl meta = Db_meta_tbl.new_(tbl_name, flds);
conn.Exec_create_tbl_and_idx(meta);
}
stmt_bldr.Conn_(conn, tbl_name, flds, fld_id);
}
- public void Update_url(int id, String url) {
- Db_stmt stmt = conn.Stmt_update(tbl_name, String_.Ary(fld_id), fld_url);
- stmt.Clear().Val_str(fld_url, url).Crt_int(fld_id, id).Exec_update();
+ public Xowd_db_file[] Select_all(Io_url wiki_root_dir) {
+ Db_rdr rdr = Db_rdr_.Null;
+ ListAdp list = ListAdp_.new_();
+ try {
+ rdr = conn.Stmt_select(tbl_name, flds, Db_meta_fld.Ary_empy).Exec_select_as_rdr();
+ while (rdr.Move_next()) {
+ Xowd_db_file db = Xowd_db_file.load_(rdr.Read_int(fld_id), rdr.Read_byte(fld_type), rdr.Read_str(fld_url));
+ db.Url_(wiki_root_dir.GenSubFil(db.Url_rel()));
+ list.Add(db);
+ }
+ } finally {rdr.Rls();}
+ list.SortBy(Xodb_file_sorter__id.I);
+ return (Xowd_db_file[])list.Xto_ary(Xowd_db_file.class);
}
- public void Commit_all(Xodb_fsys_mgr db_fs) {this.Commit_all(db_fs.Files_ary());}
- public void Commit_all(Xodb_file[] ary) {
+ public void Commit_all(Xowe_core_data_mgr core_data_mgr) {
stmt_bldr.Batch_bgn();
try {
- int len = ary.length;
+ int len = core_data_mgr.Dbs__len();
for (int i = 0; i < len; i++)
- Commit_itm(ary[i]);
+ Commit_itm(core_data_mgr.Dbs__get_at(i));
} finally {stmt_bldr.Batch_end();}
}
- private void Commit_itm(Xodb_file itm) {
+ private void Commit_itm(Xowd_db_file itm) {
Db_stmt stmt = stmt_bldr.Get(itm.Cmd_mode());
switch (itm.Cmd_mode()) {
case Db_cmd_mode.Tid_create: stmt.Clear().Val_int(fld_id, itm.Id()) .Val_byte(fld_type, itm.Tid()).Val_str(fld_url, itm.Url_rel()).Exec_insert(); break;
@@ -61,37 +71,12 @@ public class Xodb_xowa_db_tbl {
}
itm.Cmd_mode_(Db_cmd_mode.Tid_ignore);
}
- public Xodb_file[] Select_all() {
- Db_rdr rdr = Db_rdr_.Null;
- ListAdp list = ListAdp_.new_();
- try {
- Db_qry qry = Db_qry_.select_tbl_(tbl_name).OrderBy_asc_(fld_id);
- rdr = conn.Stmt_new(qry).Exec_select_as_rdr();
- while (rdr.Move_next()) {
- Xodb_file itm = Xodb_file.load_(rdr.Read_int(fld_id), rdr.Read_byte(fld_type), rdr.Read_str(fld_url));
- list.Add(itm);
- }
- } finally {rdr.Rls();}
- Xodb_file[] rv = (Xodb_file[])list.Xto_ary(Xodb_file.class);
- Chk_sequential(rv);
- return rv;
- }
- private void Chk_sequential(Xodb_file[] ary) {
- int len = ary.length;
- int expd_id = 0;
- for (int i = 0; i < len; ++i) {
- Xodb_file itm = ary[i];
- int actl_id = itm.Id();
- if (expd_id != actl_id) throw Err_.new_fmt_("database ids are not sequential; expd={0} actl={1}", expd_id, actl_id);
- ++expd_id;
- }
- }
}
-class Xodb_db_sorter implements gplx.lists.ComparerAble {
+class Xodb_file_sorter__id implements gplx.lists.ComparerAble {
public int compare(Object lhsObj, Object rhsObj) {
- Xodb_file lhs = (Xodb_file)lhsObj;
- Xodb_file rhs = (Xodb_file)rhsObj;
+ Xowd_db_file lhs = (Xowd_db_file)lhsObj;
+ Xowd_db_file rhs = (Xowd_db_file)rhsObj;
return Int_.Compare(lhs.Id(), rhs.Id());
}
- public static final Xodb_db_sorter _ = new Xodb_db_sorter();
+ public static final Xodb_file_sorter__id I = new Xodb_file_sorter__id(); Xodb_file_sorter__id() {}
}
diff --git a/400_xowa/src/gplx/xowa/dbs/tbls/Xodb_xowa_ns_tbl.java b/400_xowa/src/gplx/xowa/dbs/tbls/Xodb_xowa_ns_tbl.java
index 3105567e1..ed6e01492 100644
--- a/400_xowa/src/gplx/xowa/dbs/tbls/Xodb_xowa_ns_tbl.java
+++ b/400_xowa/src/gplx/xowa/dbs/tbls/Xodb_xowa_ns_tbl.java
@@ -18,37 +18,57 @@ along with this program. If not, see .
package gplx.xowa.dbs.tbls; import gplx.*; import gplx.xowa.*; import gplx.xowa.dbs.*;
import gplx.dbs.*; import gplx.dbs.qrys.*;
public class Xodb_xowa_ns_tbl {
- public void Conn_(Db_conn conn) {this.conn = conn;} private Db_conn conn;
+ private String tbl_name = "wiki_ns_regy"; private final Db_meta_fld_list flds = Db_meta_fld_list.new_();
+ private String fld_db_id, fld_ns_id, fld_ns_name, fld_ns_case, fld_ns_count, fld_ns_is_alias;
+ private Db_conn conn; private int db_id;
+ public void Conn_(Db_conn new_conn, boolean created, boolean schema_is_1, int db_id) {
+ this.conn = new_conn; flds.Clear(); this.db_id = db_id;
+ if (schema_is_1) {
+ tbl_name = "xowa_ns";
+ fld_db_id = Db_meta_fld.Key_null;
+ }
+ else {
+ fld_db_id = flds.Add_int("db_id");
+ }
+ fld_ns_id = flds.Add_int("ns_id");
+ fld_ns_name = flds.Add_str("ns_name", 255);
+ fld_ns_case = flds.Add_byte("ns_case");
+ fld_ns_is_alias = flds.Add_bool("ns_is_alias");
+ fld_ns_count = flds.Add_int("ns_count");
+ if (created) {
+ Db_meta_tbl meta_tbl = Db_meta_tbl.new_(tbl_name, flds
+ , Db_meta_idx.new_unique_by_tbl_wo_null(tbl_name, "pkey" , fld_db_id, fld_ns_id)
+ );
+ conn.Exec_create_tbl_and_idx(meta_tbl);
+ }
+ }
public void Insert(Xow_ns_mgr ns_mgr) {
- Db_stmt stmt = Db_stmt_.Null;
- try {
- stmt = Db_stmt_.new_insert_(conn, Tbl_name, Fld_ns_id, Fld_ns_name, Fld_ns_case, Fld_ns_is_alias, Fld_ns_count);
- int len = ns_mgr.Ids_len();
- for (int i = 0; i < len; i++) {
- Xow_ns ns = ns_mgr.Ids_get_at(i);
- stmt.Clear()
- .Val_int(ns.Id())
- .Val_str(ns.Name_str())
- .Val_byte(ns.Case_match())
- .Val_bool_as_byte(ns.Is_alias())
- .Val_int(ns.Count())
- .Exec_insert();
- ;
- }
- } finally {stmt.Rls();}
+ Db_stmt stmt = conn.Stmt_insert(tbl_name, flds);
+ int len = ns_mgr.Ids_len();
+ for (int i = 0; i < len; i++) {
+ Xow_ns ns = ns_mgr.Ids_get_at(i);
+ stmt.Clear()
+ .Val_int(fld_db_id, db_id)
+ .Val_int(fld_ns_id, ns.Id())
+ .Val_str(fld_ns_name, ns.Name_str())
+ .Val_byte(fld_ns_case, ns.Case_match())
+ .Val_bool_as_byte(fld_ns_is_alias, ns.Is_alias())
+ .Val_int(fld_ns_count, ns.Count())
+ .Exec_insert();
+ ;
+ }
}
public void Select_all(Xow_ns_mgr ns_mgr) {
- Db_rdr rdr = Db_rdr_.Null; Db_stmt stmt = Db_stmt_.Null;
+ Db_rdr rdr = Db_rdr_.Null;
try {
- stmt = Db_stmt_.new_select_as_rdr(conn, Db_qry__select_in_tbl.new_(Tbl_name, Db_qry__select_in_tbl.Where_flds__all, Flds__all));
- rdr = stmt.Exec_select_as_rdr();
+ rdr = conn.Stmt_select(tbl_name, flds, String_.Ary_wo_null(fld_db_id)).Crt_int(fld_db_id, db_id).Exec_select_as_rdr();
ns_mgr.Clear();
while (rdr.Move_next()) {
- int ns_id = rdr.Read_int(0);
- byte[] ns_name = rdr.Read_bry_by_str(1);
- byte ns_case_match = rdr.Read_byte(2);
- int ns_count = rdr.Read_int(3);
- boolean ns_is_alias = rdr.Read_byte(4) == Bool_.Y_byte;
+ int ns_id = rdr.Read_int(fld_ns_id);
+ byte[] ns_name = rdr.Read_bry_by_str(fld_ns_name);
+ byte ns_case_match = rdr.Read_byte(fld_ns_case);
+ int ns_count = rdr.Read_int(fld_ns_count);
+ boolean ns_is_alias = rdr.Read_byte(fld_ns_is_alias) == Bool_.Y_byte;
ns_mgr.Add_new(ns_id, ns_name, ns_case_match, ns_is_alias);
if (ns_id < 0) continue; // don't load counts for Special / Media
Xow_ns ns = ns_mgr.Ids_get_or_null(ns_id);
@@ -56,21 +76,24 @@ public class Xodb_xowa_ns_tbl {
if (ns_count > 0) ns.Exists_(true); // ns has article; mark it as exists, else Talk tab won't show; DATE:2013-12-04
}
ns_mgr.Init();
- } finally {rdr.Rls(); stmt.Rls();}
+ } finally {rdr.Rls();}
}
public int Select_ns_count(int ns_id) {
- Db_qry_select qry = Db_qry_.select_val_(Tbl_name, Fld_ns_count, Db_crt_.eq_(Fld_ns_id, ns_id));
- return Int_.cast_(qry.ExecRdr_val(conn));
+ Db_rdr rdr = Db_rdr_.Null;
+ try {
+ rdr = conn.Stmt_select(tbl_name, flds, String_.Ary_wo_null(fld_db_id, fld_ns_id))
+ .Crt_int(fld_db_id, db_id)
+ .Crt_int(fld_ns_id, ns_id)
+ .Exec_select_as_rdr();
+ return rdr.Move_next() ? Int_.cast_(rdr.Read_int(fld_ns_count)) : 0;
+ } finally {rdr.Rls();}
}
public void Update_ns_count(int ns_id, int ns_count) {
- conn.Exec_qry(Db_qry_.update_common_(Tbl_name
- , Db_crt_.eq_(Fld_ns_id, ns_id)
- , KeyVal_.Ary
- ( KeyVal_.new_(Fld_ns_count, ns_count)
- )));
+ Db_stmt stmt = conn.Stmt_update(tbl_name, String_.Ary_wo_null(fld_db_id, fld_ns_id), fld_ns_count);
+ stmt.Clear()
+ .Val_int(fld_ns_count, ns_count)
+ .Crt_int(fld_db_id, db_id)
+ .Crt_int(fld_ns_id, ns_id)
+ .Exec_update();
}
- public static final String Tbl_name = "xowa_ns"
- , Fld_ns_id = "ns_id", Fld_ns_name = "ns_name", Fld_ns_case = "ns_case", Fld_ns_count = "ns_count", Fld_ns_is_alias = "ns_is_alias"
- ;
- private static final String[] Flds__all = new String[] {Fld_ns_id, Fld_ns_name, Fld_ns_case, Fld_ns_count, Fld_ns_is_alias};
}
diff --git a/400_xowa/src/gplx/xowa/files/Xof_doc_thumb.java b/400_xowa/src/gplx/xowa/files/Xof_doc_thumb.java
index 84ff065ed..c85bcae6b 100644
--- a/400_xowa/src/gplx/xowa/files/Xof_doc_thumb.java
+++ b/400_xowa/src/gplx/xowa/files/Xof_doc_thumb.java
@@ -32,11 +32,11 @@ public class Xof_doc_thumb {
public static boolean Null_n(double v) {return v != Null;}
public static final int Null_as_int = -1;
- public static double Convert_to_xowa_thumbtime (int ext, double val) {return gplx.xowa.Xof_ext_.Id_supports_thumbtime(ext) ? val : Null;}
- public static int Convert_to_xowa_page (int ext, double val) {return gplx.xowa.Xof_ext_.Id_supports_page(ext) ? (int)val : Xof_doc_page.Null;}
+ public static double Convert_to_xowa_thumbtime (int ext, double val) {return Xof_ext_.Id_supports_thumbtime(ext) ? val : Null;}
+ public static int Convert_to_xowa_page (int ext, double val) {return Xof_ext_.Id_supports_page(ext) ? (int)val : Xof_doc_page.Null;}
public static double Convert_to_fsdb_thumbtime (int ext, double thumbtime, int page) {
return page != Xof_doc_page.Null
- && gplx.xowa.Xof_ext_.Id_supports_page(ext) // redefine thumbtime to page if pdf
+ && Xof_ext_.Id_supports_page(ext) // redefine thumbtime to page if pdf
? page
: thumbtime
;
diff --git a/400_xowa/src_160_file/gplx/xowa/Xof_ext.java b/400_xowa/src/gplx/xowa/files/Xof_ext.java
similarity index 77%
rename from 400_xowa/src_160_file/gplx/xowa/Xof_ext.java
rename to 400_xowa/src/gplx/xowa/files/Xof_ext.java
index f6e223dd0..cb9b99e82 100644
--- a/400_xowa/src_160_file/gplx/xowa/Xof_ext.java
+++ b/400_xowa/src/gplx/xowa/files/Xof_ext.java
@@ -15,7 +15,7 @@ GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
-package gplx.xowa; import gplx.*;
+package gplx.xowa.files; import gplx.*; import gplx.xowa.*;
public class Xof_ext {
public Xof_ext(int id, byte[] ext) {this.id = id; this.ext = ext;}
public int Id() {return id;} private int id;
@@ -38,4 +38,10 @@ public class Xof_ext {
public boolean Id_supports_page() {return Xof_ext_.Id_supports_page(id);}
public boolean Id_needs_convert() {return Xof_ext_.Id_needs_convert(id);}
public int Id_view() {return Xof_ext_.Id_view(id);}
+ public boolean Is_not_viewable(byte exec_tid) {
+ return exec_tid != Xof_exec_tid.Tid_viewer_app // only apply logic if !Tid_viewer_app; note that if Tid_viewer_app, then user clicked on file, so return true;
+ && ( this.Id_is_audio() // NOTE: was audio_strict, but v2 always redefines .ogg as .ogv; DATE:2014-02-02
+ || id == Xof_ext_.Id_unknown // ignore unknown exts, else will download needlessly when viewing page; EX: .wav before .wav was registered; PAGE:pl.s:Spiaca_kr�lewna_(Oppman); DATE:2014-08-17
+ );
+ }
}
diff --git a/400_xowa/src_160_file/gplx/xowa/Xof_ext_.java b/400_xowa/src/gplx/xowa/files/Xof_ext_.java
similarity index 97%
rename from 400_xowa/src_160_file/gplx/xowa/Xof_ext_.java
rename to 400_xowa/src/gplx/xowa/files/Xof_ext_.java
index baed5ff75..cbd6e6f1b 100644
--- a/400_xowa/src_160_file/gplx/xowa/Xof_ext_.java
+++ b/400_xowa/src/gplx/xowa/files/Xof_ext_.java
@@ -15,7 +15,7 @@ GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
-package gplx.xowa; import gplx.*;
+package gplx.xowa.files; import gplx.*; import gplx.xowa.*;
import gplx.core.primitives.*;
public class Xof_ext_ {
public static final int Id_unknown = 0 // SERIALIZED; ids are saved to fsdb;
diff --git a/400_xowa/src/gplx/xowa/files/Xof_file_itm.java b/400_xowa/src/gplx/xowa/files/Xof_file_itm.java
index 3fd00003c..be8fe7d3f 100644
--- a/400_xowa/src/gplx/xowa/files/Xof_file_itm.java
+++ b/400_xowa/src/gplx/xowa/files/Xof_file_itm.java
@@ -25,7 +25,7 @@ public interface Xof_file_itm {
int Lnki_w();
int Lnki_h();
double Lnki_upright();
- double Lnki_thumbtime();
+ double Lnki_time();
int Orig_w();
int Orig_h();
// byte Orig_repo();
diff --git a/400_xowa/src/gplx/xowa/files/Xof_fsdb_mode.java b/400_xowa/src/gplx/xowa/files/Xof_fsdb_mode.java
new file mode 100644
index 000000000..4c4537083
--- /dev/null
+++ b/400_xowa/src/gplx/xowa/files/Xof_fsdb_mode.java
@@ -0,0 +1,37 @@
+/*
+XOWA: the XOWA Offline Wiki Application
+Copyright (C) 2012 gnosygnu@gmail.com
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU Affero General Public License as
+published by the Free Software Foundation, either version 3 of the
+License, or (at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU Affero General Public License for more details.
+
+You should have received a copy of the GNU Affero General Public License
+along with this program. If not, see .
+*/
+package gplx.xowa.files; import gplx.*; import gplx.xowa.*;
+public class Xof_fsdb_mode {
+ private int tid;
+ Xof_fsdb_mode(int tid) {this.tid = tid;}
+ public boolean Tid_unknown() {return tid == Tid_int_unknown;}
+ public boolean Tid_wmf() {return tid == Tid_int_wmf;}
+ public boolean Tid_view() {return tid == Tid_int_view;}
+ public boolean Tid_make() {return tid == Tid_int_make;}
+ public void Tid_view_y_() {tid = Tid_int_view;}
+ public void Tid_make_y_() {tid = Tid_int_make;}
+ private static final int
+ Tid_int_unknown = 0
+ , Tid_int_wmf = 1
+ , Tid_int_view = 2
+ , Tid_int_make = 3
+ ;
+// public static Xof_fsdb_mode new_unknown() {return new Xof_fsdb_mode(Tid_int_unknown);}
+ public static Xof_fsdb_mode new_wmf() {return new Xof_fsdb_mode(Tid_int_wmf);}
+ public static Xof_fsdb_mode new_view() {return new Xof_fsdb_mode(Tid_int_view);}
+}
diff --git a/400_xowa/src/gplx/xowa/files/Xof_img_size.java b/400_xowa/src/gplx/xowa/files/Xof_img_size.java
index 3f9258de4..364be2911 100644
--- a/400_xowa/src/gplx/xowa/files/Xof_img_size.java
+++ b/400_xowa/src/gplx/xowa/files/Xof_img_size.java
@@ -16,14 +16,13 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.files; import gplx.*; import gplx.xowa.*;
-import gplx.gfui.*;
public class Xof_img_size {
public int Html_w() {return html_w;} private int html_w;
public int Html_h() {return html_h;} private int html_h;
public int File_w() {return file_w;} private int file_w; // NOTE: file_w will always equal html_w, unless rounding is implemented; EX: html_w=150,151,152 -> file_w=150
public int File_h() {return file_h;} private int file_h;
public boolean File_is_orig() {return file_is_orig;} private boolean file_is_orig;
- public void Clear() {
+ private void Clear() {
html_w = html_h = file_w = file_h = 0;
file_is_orig = false;
}
diff --git a/400_xowa/src/gplx/xowa/files/Xof_lnki_file_mgr.java b/400_xowa/src/gplx/xowa/files/Xof_lnki_file_mgr.java
index a3999e6b7..aad574977 100644
--- a/400_xowa/src/gplx/xowa/files/Xof_lnki_file_mgr.java
+++ b/400_xowa/src/gplx/xowa/files/Xof_lnki_file_mgr.java
@@ -106,7 +106,7 @@ public class Xof_lnki_file_mgr {
fsdb_itm.Lnki_size_(xfer_itm.Lnki_w(), xfer_itm.Lnki_h()); // NOTE: must overwrite fsdb_itm.size with xfer_itm.size when the same image shows up in multiple sizes on a page; (only one item in wiki_orig); EX: w:Portal:Canada; [[File:Flag of Canada.svg|300x150px]]; [[File:Flag of Canada.svg|23px]]; DATE:2014-02-14
fsdb_itm.Lnki_type_(xfer_itm.Lnki_type()); // NOTE: must overwrite lnki_type, else multiple images on same page with different type wont show; PAGE:en.w:History_of_painting; DATE:2014-03-06
fsdb_itm.Lnki_page_(xfer_itm.Lnki_page());
- fsdb_itm.Lnki_time_(xfer_itm.Lnki_thumbtime());
+ fsdb_itm.Lnki_time_(xfer_itm.Lnki_time());
// byte[] lnki_ttl = xfer_itm.Lnki_ttl();
// Xof_ext lnki_ext = xfer_itm.Lnki_ext();
// byte[] lnki_md5 = Xof_xfer_itm_.Md5_(lnki_ttl);
diff --git a/400_xowa/src_160_file/gplx/xowa/Xof_media_type.java b/400_xowa/src/gplx/xowa/files/Xof_media_type.java
similarity index 95%
rename from 400_xowa/src_160_file/gplx/xowa/Xof_media_type.java
rename to 400_xowa/src/gplx/xowa/files/Xof_media_type.java
index eb5fab446..c70742366 100644
--- a/400_xowa/src_160_file/gplx/xowa/Xof_media_type.java
+++ b/400_xowa/src/gplx/xowa/files/Xof_media_type.java
@@ -15,7 +15,7 @@ GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
-package gplx.xowa; import gplx.*;
+package gplx.xowa.files; import gplx.*; import gplx.xowa.*;
public class Xof_media_type {
public static final byte Tid_null = 0, Tid_audio = 1, Tid_bitmap = 2, Tid_drawing = 2, Tid_office = 3, Tid_video = 4;
public static final String Name_null = "", Name_audio = "AUDIO", Name_bitmap = "BITMAP", Name_drawing = "DRAWING", Name_office = "OFFICE", Name_video = "VIDEO";
diff --git a/400_xowa/src_160_file/gplx/xowa/Xof_mime_minor_.java b/400_xowa/src/gplx/xowa/files/Xof_mime_minor_.java
similarity index 96%
rename from 400_xowa/src_160_file/gplx/xowa/Xof_mime_minor_.java
rename to 400_xowa/src/gplx/xowa/files/Xof_mime_minor_.java
index ef982ef8a..047c464e1 100644
--- a/400_xowa/src_160_file/gplx/xowa/Xof_mime_minor_.java
+++ b/400_xowa/src/gplx/xowa/files/Xof_mime_minor_.java
@@ -15,7 +15,7 @@ GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
-package gplx.xowa; import gplx.*;
+package gplx.xowa.files; import gplx.*; import gplx.xowa.*;
import gplx.core.primitives.*;
public class Xof_mime_minor_ {
public static Xof_ext ext_(byte[] minor_mime) {
diff --git a/400_xowa/src/gplx/xowa/files/Xof_url_bldr.java b/400_xowa/src/gplx/xowa/files/Xof_url_bldr.java
index f1ae07429..9c6accee1 100644
--- a/400_xowa/src/gplx/xowa/files/Xof_url_bldr.java
+++ b/400_xowa/src/gplx/xowa/files/Xof_url_bldr.java
@@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.files; import gplx.*; import gplx.xowa.*;
-import gplx.xowa.files.repos.*;
+import gplx.xowa.files.repos.*; import gplx.xowa.files.fsdb.*;
public class Xof_url_bldr {
private final Bry_bfr bfr = Bry_bfr.reset_(400);
private byte[] ttl; private byte[] md5; private Xof_ext ext; private boolean file_is_thumb; private int file_w;
@@ -63,6 +63,14 @@ public class Xof_url_bldr {
public byte[] Xto_bry() {Bld(); byte[] rv = bfr.Xto_bry_and_clear(); Clear(); return rv;}
public String Xto_str() {Bld(); String rv = bfr.Xto_str(); Clear(); return rv;}
public Io_url Xto_url() {Bld(); Io_url rv = Io_url_.new_fil_(bfr.Xto_str()); Clear(); return rv;}
+ public Io_url To_url(Xow_repo_mgr repo_mgr, Xof_fsdb_itm itm, boolean orig) {return To_url(repo_mgr.Repos_get_by_wiki(itm.Orig_repo_name()), itm, orig ? Xof_repo_itm.Mode_orig : Xof_repo_itm.Mode_thumb, Bool_.N);}
+ public Io_url To_url(Xof_repo_pair repo_pair, Xof_fsdb_itm itm, boolean orig) {return To_url(repo_pair, itm, orig ? Xof_repo_itm.Mode_orig : Xof_repo_itm.Mode_thumb, Bool_.N);}
+ public Io_url To_url(Xof_repo_pair repo_pair, Xof_fsdb_itm itm, byte mode, boolean src) {
+ return src
+ ? this.Init_for_src_file(mode, repo_pair.Src(), itm.Lnki_ttl(), itm.Lnki_md5(), itm.Lnki_ext(), itm.Html_w(), itm.Lnki_time(), itm.Lnki_page()).Xto_url()
+ : this.Init_for_trg_file(mode, repo_pair.Trg(), itm.Lnki_ttl(), itm.Lnki_md5(), itm.Lnki_ext(), itm.Html_w(), itm.Lnki_time(), itm.Lnki_page()).Xto_url()
+ ;
+ }
private void Bld() {
Add_core();
if (file_is_thumb) {
diff --git a/400_xowa/src/gplx/xowa/files/Xof_xfer_itm.java b/400_xowa/src/gplx/xowa/files/Xof_xfer_itm.java
index ee1f1354b..344ec9f1f 100644
--- a/400_xowa/src/gplx/xowa/files/Xof_xfer_itm.java
+++ b/400_xowa/src/gplx/xowa/files/Xof_xfer_itm.java
@@ -26,7 +26,7 @@ public class Xof_xfer_itm implements Xof_file_itm {
public int Lnki_w() {return lnki_w;} private int lnki_w;
public int Lnki_h() {return lnki_h;} private int lnki_h;
public double Lnki_upright() {return lnki_upright;} private double lnki_upright;
- public double Lnki_thumbtime() {return lnki_thumbtime;} private double lnki_thumbtime = Xof_doc_thumb.Null;
+ public double Lnki_time() {return lnki_time;} private double lnki_time = Xof_doc_thumb.Null;
public int Lnki_page() {return lnki_page;} private int lnki_page = Xof_doc_page.Null;
public int Orig_w() {return orig_w;} private int orig_w;
public int Orig_h() {return orig_h;} private int orig_h;
@@ -53,15 +53,15 @@ public class Xof_xfer_itm implements Xof_file_itm {
} private Xof_repo_itm trg_repo;
public int Trg_repo_idx() {return trg_repo_idx;} public Xof_xfer_itm Trg_repo_idx_(int trg_repo_idx) {this.trg_repo_idx = trg_repo_idx; return this;} private int trg_repo_idx = Xof_meta_itm.Repo_unknown;
public byte[] Trg_repo_root() {return trg_repo_root;} private byte[] trg_repo_root = Bry_.Empty; // HACK: needed for hdump
- private byte[] Trg_html(byte mode_id, int width) {return url_bldr.Init_for_trg_html(mode_id, trg_repo, lnki_ttl, lnki_md5, lnki_ext, width, lnki_thumbtime, lnki_page).Xto_bry();}
- public Io_url Trg_file(byte mode_id, int width) {return url_bldr.Init_for_trg_file(mode_id, trg_repo, lnki_ttl, lnki_md5, lnki_ext, width, lnki_thumbtime, lnki_page).Xto_url();}
+ private byte[] Trg_html(byte mode_id, int width) {return url_bldr.Init_for_trg_html(mode_id, trg_repo, lnki_ttl, lnki_md5, lnki_ext, width, lnki_time, lnki_page).Xto_bry();}
+ public Io_url Trg_file(byte mode_id, int width) {return url_bldr.Init_for_trg_file(mode_id, trg_repo, lnki_ttl, lnki_md5, lnki_ext, width, lnki_time, lnki_page).Xto_url();}
public byte Lnki_exec_tid() {return lnki_exec_tid;} public void Lnki_exec_tid_(byte v) {lnki_exec_tid = v;} private byte lnki_exec_tid = Xof_exec_tid.Tid_wiki_page;
public Xof_url_bldr Url_bldr(){ return url_bldr;}
public Xof_xfer_itm Url_bldr_(Xof_url_bldr v) {url_bldr = v; return this;} private Xof_url_bldr url_bldr = Xof_url_bldr.Temp;
public Xof_xfer_itm Clear() {
lnki_type = Byte_.Max_value_127;
lnki_w = lnki_h = file_w = orig_w = orig_h = html_w = html_h = gallery_mgr_h = Int_.Neg1;
- lnki_upright = Int_.Neg1; lnki_thumbtime = Xof_doc_thumb.Null; lnki_page = Xof_doc_page.Null;
+ lnki_upright = Int_.Neg1; lnki_time = Xof_doc_thumb.Null; lnki_page = Xof_doc_page.Null;
img_is_thumbable = false;
orig_file_len = 0; // NOTE: cannot be -1, or else will always download orig; see ext rule chk and (orig_file_len < 0)
lnki_redirect = null; lnki_ttl = null; lnki_md5 = null; lnki_ext = null;
@@ -72,7 +72,7 @@ public class Xof_xfer_itm implements Xof_file_itm {
}
public Xof_xfer_itm Clone() {
Xof_xfer_itm rv = new Xof_xfer_itm();
- rv.lnki_type = lnki_type; rv.lnki_w = lnki_w; rv.lnki_h = lnki_h; rv.lnki_upright = lnki_upright; rv.lnki_thumbtime = lnki_thumbtime; rv.lnki_page = lnki_page;
+ rv.lnki_type = lnki_type; rv.lnki_w = lnki_w; rv.lnki_h = lnki_h; rv.lnki_upright = lnki_upright; rv.lnki_time = lnki_time; rv.lnki_page = lnki_page;
rv.img_is_thumbable = img_is_thumbable;
rv.orig_w = orig_w; rv.orig_h = orig_h; rv.orig_file_len = orig_file_len;
rv.lnki_redirect = lnki_redirect; rv.lnki_ttl = lnki_ttl; rv.lnki_md5 = lnki_md5; rv.lnki_ext = lnki_ext;
@@ -87,10 +87,10 @@ public class Xof_xfer_itm implements Xof_file_itm {
}
public Xof_xfer_itm Init_by_lnki(byte[] ttl, byte[] redirect, byte lnki_type, int w, int h, double upright, double thumbtime, int lnki_page) {
this.Set__ttl(ttl, redirect);
- this.lnki_type = lnki_type; this.lnki_w = w; this.lnki_h = h; this.lnki_upright = upright; this.lnki_thumbtime = thumbtime; this.lnki_page = lnki_page;
+ this.lnki_type = lnki_type; this.lnki_w = w; this.lnki_h = h; this.lnki_upright = upright; this.lnki_time = thumbtime; this.lnki_page = lnki_page;
img_is_thumbable = Xof_xfer_itm_.Lnki_thumbable_calc(lnki_type, lnki_w, lnki_h);
- if (lnki_thumbtime != Xof_doc_thumb.Null && !lnki_ext.Id_is_media()) // thumbtime is set, but ext is not media; PAGE:en.w:Moon; EX:[[File:A.png|thumbtime=0:02]] DATE:2014-07-22
- lnki_thumbtime = Xof_doc_thumb.Null; // disable thumbtime
+ if (lnki_time != Xof_doc_thumb.Null && !lnki_ext.Id_is_media()) // thumbtime is set, but ext is not media; PAGE:en.w:Moon; EX:[[File:A.png|thumbtime=0:02]] DATE:2014-07-22
+ lnki_time = Xof_doc_thumb.Null; // disable thumbtime
return this;
}
public void Init_for_gallery(int html_w, int html_h, int file_w) {
@@ -145,7 +145,7 @@ public class Xof_xfer_itm implements Xof_file_itm {
if (lnki_ext.Id_is_video()) { // video is a special case; src is thumb_w but html_w / html_h is based on calc
html_orig_src = Trg_html(Xof_repo_itm.Mode_orig, Xof_img_size.Size_null_deprecated);
if (meta_itm.Thumbs_indicates_oga() && lnki_ext.Id_is_ogv()) {lnki_ext = Xof_ext_.new_by_ext_(Xof_ext_.Bry_oga); return true;} // if audio, do not thumb; NOTE: must happen after html_orig_src, b/c html must still be generated to auto-download files; NOTE: must change ext to oga b/c ogg may trigger video code elsewhere
- Xof_meta_thumb thumb = meta_itm.Thumbs_get_vid(Xof_doc_thumb.X_int(lnki_thumbtime));
+ Xof_meta_thumb thumb = meta_itm.Thumbs_get_vid(Xof_doc_thumb.X_int(lnki_time));
if (thumb != null) {
Xof_xfer_itm_.Calc_xfer_size(calc_size, lnki_type, thumb_w_img, thumb.Width(), thumb.Height(), html_w, html_h, img_is_thumbable, lnki_upright);
html_w = calc_size.Val_0(); html_h = calc_size.Val_1();
@@ -205,7 +205,7 @@ public class Xof_xfer_itm implements Xof_file_itm {
if (meta_itm.Thumbs_indicates_oga() && lnki_ext.Id_is_ogv()) {lnki_ext = Xof_ext_.new_by_ext_(Xof_ext_.Bry_oga); return true;} // if audio, do not thumb; NOTE: must happen after html_orig_src, b/c html must still be generated to auto-download files; NOTE: must change ext to oga b/c ogg may trigger video code elsewhere
if (lnki_ext.Id_is_audio()) return true; // if audio, return true; SEE:NOTE_2
else if (lnki_ext.Id_is_video()) {
- Xof_meta_thumb thumb = meta_itm.Thumbs_get_vid(Xof_doc_thumb.X_int(lnki_thumbtime)); // get thumb at lnki_thumbtime; NOTE: in most cases this will just be the 1st thumb; note that orig video files don't have an official thumb
+ Xof_meta_thumb thumb = meta_itm.Thumbs_get_vid(Xof_doc_thumb.X_int(lnki_time)); // get thumb at lnki_time; NOTE: in most cases this will just be the 1st thumb; note that orig video files don't have an official thumb
if (thumb != null) {
html_w = thumb.Width(); html_h = thumb.Height(); // NOTE: take thumb_size; do not rescale to html_w, html_h b/c html_w will default to 220; native width of thumbnail should be used; DATE:2013-04-11
html_view_src = Trg_html(Xof_repo_itm.Mode_thumb, thumb.Width()); // NOTE: must pass thumb.Width() not html_w b/c only one thumb generated for a video file
diff --git a/400_xowa/src/gplx/xowa/files/Xow_file_mgr.java b/400_xowa/src/gplx/xowa/files/Xow_file_mgr.java
index 68475bc48..190c246fb 100644
--- a/400_xowa/src/gplx/xowa/files/Xow_file_mgr.java
+++ b/400_xowa/src/gplx/xowa/files/Xow_file_mgr.java
@@ -27,15 +27,24 @@ public class Xow_file_mgr implements GfoInvkAble {
fsdb_mgr = new Xof_fsdb_mgr__sql();
wkr_mgr = new Xof_wkr_mgr(this);
}
+ public Xof_fsdb_mode Fsdb_mode() {
+ if (fsdb_mode == null) {
+ Version();
+ }
+ return fsdb_mode;
+ } private Xof_fsdb_mode fsdb_mode = null;
public Xowe_wiki Wiki() {return wiki;} private Xowe_wiki wiki;
public byte Version() {
if (version == Bool_.__byte) {
Io_url file_dir = wiki.Fsys_mgr().File_dir();
- Io_url[] sqlite_fils = Io_mgr._.QueryDir_args(file_dir).FilPath_("*.sqlite3").ExecAsUrlAry();
- if (sqlite_fils.length == 0)
+ if (!Io_mgr._.ExistsFil(file_dir.GenSubFil(Fsm_mnt_mgr.Mnt_name))) {
version = Version_1;
- else
+ fsdb_mode = Xof_fsdb_mode.new_wmf();
+ }
+ else {
version = Version_2;
+ fsdb_mode = Xof_fsdb_mode.new_view();
+ }
}
return version;
} private byte version = Version_null;
diff --git a/400_xowa/src/gplx/xowa/files/bins/Xof_bin_mgr.java b/400_xowa/src/gplx/xowa/files/bins/Xof_bin_mgr.java
index 9607bbd25..81ffd10be 100644
--- a/400_xowa/src/gplx/xowa/files/bins/Xof_bin_mgr.java
+++ b/400_xowa/src/gplx/xowa/files/bins/Xof_bin_mgr.java
@@ -52,7 +52,7 @@ public class Xof_bin_mgr implements GfoInvkAble {
Io_stream_rdr rv = Io_stream_rdr_.Null;
boolean file_is_orig = itm.File_is_orig();
if (file_is_orig || exec_tid == Xof_exec_tid.Tid_viewer_app) { // orig or viewer_app; note that viewer_app always return orig
- Io_url trg = Bld_url(itm, Xof_repo_itm.Mode_orig, Bool_.N);
+ Io_url trg = url_bldr.To_url(repo_mgr, itm, Bool_.Y);
itm.Html_view_url_(trg);
for (int i = 0; i < wkrs_len; i++) {
Xof_bin_wkr wkr = wkrs[i];
@@ -63,7 +63,7 @@ public class Xof_bin_mgr implements GfoInvkAble {
}
}
else { // thumb
- Io_url trg = Bld_url(itm, Xof_repo_itm.Mode_thumb, Bool_.N);
+ Io_url trg = url_bldr.To_url(repo_mgr, itm, Bool_.N);
itm.Html_view_url_(trg);
for (int i = 0; i < wkrs_len; i++) {
Xof_bin_wkr wkr = wkrs[i];
@@ -79,7 +79,7 @@ public class Xof_bin_mgr implements GfoInvkAble {
continue; // nothing found; continue;
}
if (!wkr.Resize_allowed()) continue;
- Io_url orig = Bld_url(itm, Xof_repo_itm.Mode_orig, Bool_.N); // get orig url
+ Io_url orig = url_bldr.To_url(repo_mgr, itm, Bool_.Y); // get orig url
Io_stream_wtr_.Save_rdr(orig, rv);
boolean resized = Resize(exec_tid, itm, file_is_orig, orig, trg);
if (!resized) continue;
@@ -98,13 +98,6 @@ public class Xof_bin_mgr implements GfoInvkAble {
itm.Rslt_cnv_(rv ? Xof_cnv_wkr_.Tid_y : Xof_cnv_wkr_.Tid_n);
return rv;
}
- private Io_url Bld_url(Xof_fsdb_itm itm, byte mode, boolean src) {
- Xof_repo_pair repo = repo_mgr.Repos_get_by_wiki(itm.Orig_repo_name());
- return src
- ? url_bldr.Init_for_src_file(mode, repo.Src(), itm.Lnki_ttl(), itm.Lnki_md5(), itm.Lnki_ext(), itm.Html_w(), itm.Lnki_time(), itm.Lnki_page()).Xto_url()
- : url_bldr.Init_for_trg_file(mode, repo.Trg(), itm.Lnki_ttl(), itm.Lnki_md5(), itm.Lnki_ext(), itm.Html_w(), itm.Lnki_time(), itm.Lnki_page()).Xto_url()
- ;
- }
public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {
if (ctx.Match(k, Invk_add)) return Wkrs__get_or_new(m.ReadStr("type"), m.ReadStrOr("key", null));
else return GfoInvkAble_.Rv_unhandled;
diff --git a/400_xowa/src/gplx/xowa/files/caches/Xof_cache_mgr.java b/400_xowa/src/gplx/xowa/files/caches/Xof_cache_mgr.java
index 1b8c21f08..d3632ca6a 100644
--- a/400_xowa/src/gplx/xowa/files/caches/Xof_cache_mgr.java
+++ b/400_xowa/src/gplx/xowa/files/caches/Xof_cache_mgr.java
@@ -28,10 +28,10 @@ public class Xof_cache_mgr implements GfoInvkAble {
this.fil_mgr = new Xofc_fil_mgr(this);
}
public int Next_id() {return cfg_mgr.Next_id();} public void Next_id_(int v) {cfg_mgr.Next_id_(v);}
- public void Init_for_db(Db_conn conn, boolean created, boolean version_is_1) {
- cfg_mgr.Conn_(conn, created, version_is_1);
- dir_mgr.Conn_(conn, created, version_is_1);
- fil_mgr.Conn_(conn, created, version_is_1);
+ public void Init_for_db(Db_conn conn, boolean created, boolean schema_is_1) {
+ cfg_mgr.Conn_(conn, created, schema_is_1);
+ dir_mgr.Conn_(conn, created, schema_is_1);
+ fil_mgr.Conn_(conn, created, schema_is_1);
}
public void Db_save() {
try {
diff --git a/400_xowa/src/gplx/xowa/files/caches/Xofc_cfg_mgr.java b/400_xowa/src/gplx/xowa/files/caches/Xofc_cfg_mgr.java
index 73cbaa6be..2f0bc7b0f 100644
--- a/400_xowa/src/gplx/xowa/files/caches/Xofc_cfg_mgr.java
+++ b/400_xowa/src/gplx/xowa/files/caches/Xofc_cfg_mgr.java
@@ -24,8 +24,8 @@ class Xofc_cfg_mgr {
public void Cache_len_add(long v) {cache_len += v;}
public long Cache_min() {return cache_min;} public void Cache_min_(long v) {cache_min = v;} private long cache_min = Io_mgr.Len_mb * 75;
public long Cache_max() {return cache_max;} public void Cache_max_(long v) {cache_max = v;} private long cache_max = Io_mgr.Len_mb * 100;
- public void Conn_(Db_conn v, boolean created, boolean version_is_1) {
- tbl.Conn_(v, created, version_is_1, "xowa_cfg", "file_cache_cfg");
+ public void Conn_(Db_conn v, boolean created, boolean schema_is_1) {
+ tbl.Conn_(v, created, schema_is_1, "xowa_cfg", "file_cache_cfg");
if (created) {
tbl.Insert(Cfg_grp, Cfg_key__next_id, Int_.Xto_str(1));
tbl.Insert(Cfg_grp, Cfg_key__cache_len, Long_.Xto_str(0));
diff --git a/400_xowa/src/gplx/xowa/files/caches/Xofc_dir_mgr.java b/400_xowa/src/gplx/xowa/files/caches/Xofc_dir_mgr.java
index 14343fb2f..1cf58f708 100644
--- a/400_xowa/src/gplx/xowa/files/caches/Xofc_dir_mgr.java
+++ b/400_xowa/src/gplx/xowa/files/caches/Xofc_dir_mgr.java
@@ -22,7 +22,7 @@ class Xofc_dir_mgr {
private final OrderedHash hash_by_names = OrderedHash_.new_bry_(); private final HashAdp hash_by_ids = HashAdp_.new_();
private Xof_cache_mgr cache_mgr;
public Xofc_dir_mgr(Xof_cache_mgr v) {this.cache_mgr = v;}
- public void Conn_(Db_conn v, boolean created, boolean version_is_1) {tbl.Conn_(v, created, version_is_1);}
+ public void Conn_(Db_conn v, boolean created, boolean schema_is_1) {tbl.Conn_(v, created, schema_is_1);}
public Xofc_dir_itm Get_by_id(int id) {return (Xofc_dir_itm)hash_by_ids.Fetch(id);}
public Xofc_dir_itm Get_by_name_or_make(byte[] name) {
Xofc_dir_itm itm = Get_by_name_or_null(name);
diff --git a/400_xowa/src/gplx/xowa/files/caches/Xofc_dir_tbl.java b/400_xowa/src/gplx/xowa/files/caches/Xofc_dir_tbl.java
index e66764fe2..7533fc047 100644
--- a/400_xowa/src/gplx/xowa/files/caches/Xofc_dir_tbl.java
+++ b/400_xowa/src/gplx/xowa/files/caches/Xofc_dir_tbl.java
@@ -21,10 +21,10 @@ class Xofc_dir_tbl {
private String tbl_name = "file_cache_dir"; private final Db_meta_fld_list flds = Db_meta_fld_list.new_();
private String fld_id, fld_name;
private Db_conn conn; private final Db_stmt_bldr stmt_bldr = new Db_stmt_bldr(); private Db_stmt select_stmt;
- public void Conn_(Db_conn new_conn, boolean created, boolean version_is_1) {
+ public void Conn_(Db_conn new_conn, boolean created, boolean schema_is_1) {
this.conn = new_conn; flds.Clear();
String fld_prefix = "";
- if (version_is_1) {
+ if (schema_is_1) {
tbl_name = "cache_dir";
fld_prefix = "dir_";
}
diff --git a/400_xowa/src/gplx/xowa/files/caches/Xofc_fil_mgr.java b/400_xowa/src/gplx/xowa/files/caches/Xofc_fil_mgr.java
index 7e00d9b9d..116164d65 100644
--- a/400_xowa/src/gplx/xowa/files/caches/Xofc_fil_mgr.java
+++ b/400_xowa/src/gplx/xowa/files/caches/Xofc_fil_mgr.java
@@ -22,7 +22,7 @@ class Xofc_fil_mgr {
private Xof_cache_mgr cache_mgr;
private final Xofc_fil_tbl tbl = new Xofc_fil_tbl(); private final OrderedHash hash = OrderedHash_.new_bry_(); private final Bry_bfr key_bldr = Bry_bfr.reset_(255);
public Xofc_fil_mgr(Xof_cache_mgr v) {this.cache_mgr = v;}
- public void Conn_(Db_conn v, boolean created, boolean version_is_1) {tbl.Conn_(v, created, version_is_1);}
+ public void Conn_(Db_conn v, boolean created, boolean schema_is_1) {tbl.Conn_(v, created, schema_is_1);}
public void Save_all() {
int len = hash.Count();
boolean err_seen = false;
@@ -68,10 +68,10 @@ class Xofc_fil_mgr {
}
private Xofc_fil_itm Make_v1(int dir_id, byte[] name, boolean is_orig, int w, int h, double time, int page, Xof_ext ext, long size) {return Make(Bool_.Y, dir_id, name, is_orig, w, h, time, page, ext, size);}
public Xofc_fil_itm Make_v2(int dir_id, byte[] name, boolean is_orig, int w, int h, double time, int page, Xof_ext ext, long size) {return Make(Bool_.N, dir_id, name, is_orig, w, h, time, page, ext, size);}
- private Xofc_fil_itm Make(boolean version_is_1, int dir_id, byte[] name, boolean is_orig, int w, int h, double time, int page, Xof_ext ext, long size) {
+ private Xofc_fil_itm Make(boolean schema_is_1, int dir_id, byte[] name, boolean is_orig, int w, int h, double time, int page, Xof_ext ext, long size) {
int id = cache_mgr.Next_id();
Xofc_fil_itm rv = new Xofc_fil_itm(id, dir_id, name, is_orig, w, h, time, page, ext, size, 0, Db_cmd_mode.Tid_create).Cache_time_now_();
- byte[] key = version_is_1 ? rv.Gen_hash_key_v1(key_bldr) : rv.Gen_hash_key_v2(key_bldr);
+ byte[] key = schema_is_1 ? rv.Gen_hash_key_v1(key_bldr) : rv.Gen_hash_key_v2(key_bldr);
hash.Add(key, rv);
return rv;
}
diff --git a/400_xowa/src/gplx/xowa/files/caches/Xofc_fil_tbl.java b/400_xowa/src/gplx/xowa/files/caches/Xofc_fil_tbl.java
index d8f8816b4..9c1c95550 100644
--- a/400_xowa/src/gplx/xowa/files/caches/Xofc_fil_tbl.java
+++ b/400_xowa/src/gplx/xowa/files/caches/Xofc_fil_tbl.java
@@ -22,10 +22,10 @@ class Xofc_fil_tbl {
private String fld_uid, fld_dir_id, fld_name, fld_is_orig, fld_w, fld_h, fld_time, fld_page, fld_ext, fld_size, fld_cache_time;
private Db_conn conn; private final Db_stmt_bldr stmt_bldr = new Db_stmt_bldr(); private Db_stmt select_itm_stmt, select_itm_v2_stmt;
public Db_conn Conn() {return conn;}
- public void Conn_(Db_conn new_conn, boolean created, boolean version_is_1) {
+ public void Conn_(Db_conn new_conn, boolean created, boolean schema_is_1) {
this.conn = new_conn; flds.Clear();
String fld_prefix = "";
- if (version_is_1) {
+ if (schema_is_1) {
tbl_name = "cache_fil";
fld_prefix = "fil_";
}
@@ -36,7 +36,7 @@ class Xofc_fil_tbl {
fld_w = flds.Add_int(fld_prefix + "w");
fld_h = flds.Add_int(fld_prefix + "h");
fld_time = flds.Add_int(fld_prefix + "thumbtime");
- if (version_is_1) {
+ if (schema_is_1) {
fld_page = Db_meta_fld.Key_null;
}
else {
diff --git a/400_xowa/src/gplx/xowa/files/fsdb/Xof_fsdb_mgr.java b/400_xowa/src/gplx/xowa/files/fsdb/Xof_fsdb_mgr.java
index 9da03047f..577b1f205 100644
--- a/400_xowa/src/gplx/xowa/files/fsdb/Xof_fsdb_mgr.java
+++ b/400_xowa/src/gplx/xowa/files/fsdb/Xof_fsdb_mgr.java
@@ -17,11 +17,11 @@ along with this program. If not, see .
*/
package gplx.xowa.files.fsdb; import gplx.*; import gplx.xowa.*; import gplx.xowa.files.*;
import gplx.fsdb.*; import gplx.fsdb.data.*; import gplx.fsdb.meta.*;
-import gplx.xowa.files.bins.*; import gplx.xowa.files.origs.*; import gplx.xowa.files.caches.*;
+import gplx.xowa.files.bins.*; import gplx.xowa.files.origs.*; import gplx.xowa.files.caches.*; import gplx.xowa.files.gui.*;
public interface Xof_fsdb_mgr extends RlsAble {
Xof_orig_mgr Orig_mgr();
Xof_bin_mgr Bin_mgr();
Fsm_mnt_mgr Mnt_mgr();
void Init_by_wiki(Xow_wiki wiki);
- void Fsdb_search_by_list(byte exec_tid, ListAdp itms, Xoae_page page);
+ void Fsdb_search_by_list(byte exec_tid, ListAdp itms, Xoa_page page, Xog_js_wkr js_wkr);
}
diff --git a/400_xowa/src/gplx/xowa/files/fsdb/Xof_fsdb_mgr_.java b/400_xowa/src/gplx/xowa/files/fsdb/Xof_fsdb_mgr_.java
index ae848b2f4..4e0059c84 100644
--- a/400_xowa/src/gplx/xowa/files/fsdb/Xof_fsdb_mgr_.java
+++ b/400_xowa/src/gplx/xowa/files/fsdb/Xof_fsdb_mgr_.java
@@ -24,7 +24,7 @@ class Xof_fsdb_wkr {
public Xof_fsdb_wkr(Xof_fsdb_mgr fsdb_mgr, Gfo_usr_dlg usr_dlg, Xof_cache_mgr cache_mgr, Xow_repo_mgr repo_mgr, Xof_url_bldr url_bldr) {
this.fsdb_mgr = fsdb_mgr; this.usr_dlg = usr_dlg; this.cache_mgr = cache_mgr; this.repo_mgr = repo_mgr; this.url_bldr = url_bldr;
}
- public void Fsdb_search(byte exec_tid, ListAdp itms, Xoae_page page) {
+ public void Fsdb_search(byte exec_tid, ListAdp itms, Xoa_page page, Xog_js_wkr js_wkr) {
synchronized (get_list) {
get_list.Clear();
int itms_len = itms.Count();
@@ -35,7 +35,7 @@ class Xof_fsdb_wkr {
case Xof_orig_wkr_.Status_found: // item is on disk and in orig_regy; just update data, html_view and cache_mgr;
Xof_repo_itm repo_itm = repo_mgr.Repos_get_by_wiki(itm.Orig_repo_name()).Trg();
itm.Ctor_by_html(repo_itm, url_bldr, img_size, exec_tid);
- Js_img_mgr.Update_img(page, itm); // NOTE: needed when opening 2+ tabs and missing image is on 2+ pages; 2nd page will have img as Xof_orig_wkr_.Status_found; DATE:2014-10-20
+ Js_img_mgr.Update_img(page, js_wkr, itm); // NOTE: needed when opening 2+ tabs and missing image is on 2+ pages; 2nd page will have img as Xof_orig_wkr_.Status_found; DATE:2014-10-20
cache_mgr.Reg_and_check_for_size_0(itm);
break;
case Xof_orig_wkr_.Status_missing_orig:
@@ -51,13 +51,13 @@ class Xof_fsdb_wkr {
if (usr_dlg.Canceled()) return;
Xof_fsdb_itm itm = (Xof_fsdb_itm)get_list.FetchAt(i);
try {
- Get_itm(exec_tid, itm, page);
+ Get_itm(exec_tid, itm, page, js_wkr);
} catch (Exception e) {usr_dlg.Warn_many("", "", "file.search.error: page=~{0} img=~{1} err=~{2}", String_.new_utf8_(page.Ttl().Raw()), String_.new_utf8_(itm.Lnki_ttl()), Err_.Message_gplx_brief(e));}
}
}
}
- private void Get_itm(byte exec_tid, Xof_fsdb_itm itm, Xoae_page page) {
- if (Ext_is_not_viewable_in_exec_tid(exec_tid, itm.Lnki_ext())) return; // do not get if not needed; EX: exec_tid = page and itm is audio
+ private void Get_itm(byte exec_tid, Xof_fsdb_itm itm, Xoa_page page, Xog_js_wkr js_wkr) {
+ if (itm.Lnki_ext().Is_not_viewable(exec_tid)) return; // do not get if not needed; EX: exec_tid = page and itm is audio
if (Find_by_itm(exec_tid, itm, fsdb_mgr.Orig_mgr(), img_size)) { // itm exists in orig_regy
Xof_repo_pair repo_pair = repo_mgr.Repos_get_by_wiki(itm.Orig_repo_name());
if (repo_pair == null) {
@@ -65,7 +65,7 @@ class Xof_fsdb_wkr {
return;
}
byte repo_tid = repo_pair.Repo_idx(); // NOTE: should be itm.Orig_repo, but throws null refs
- if (Ext_is_not_viewable_in_exec_tid(exec_tid, itm.Lnki_ext())) { // check viewable again b/c orig_mgr may have changed ext; EX: ogg -> oga
+ if (itm.Lnki_ext().Is_not_viewable(exec_tid)) { // check viewable again b/c orig_mgr may have changed ext; EX: ogg -> oga
itm.Rslt_bin_(Xof_bin_wkr_.Tid_noop);
fsdb_mgr.Orig_mgr().Insert(repo_tid, itm.Orig_ttl(), itm.Lnki_ext().Id(), itm.Orig_w(), itm.Orig_h(), itm.Orig_redirect(), Xof_orig_wkr_.Status_noop);
return;
@@ -75,7 +75,7 @@ class Xof_fsdb_wkr {
// TODO: this "breaks" tests b/c mock bin_wkr is fsdb;
if (itm.Rslt_bin() != Xof_bin_wkr_.Tid_fsdb_xowa) // if bin is from fsdb, don't save it; occurs when page has new file listed twice; 1st file inserts into fsdb; 2nd file should find in fsdb and not save again
Save_itm(itm);
- Js_img_mgr.Update_img(page, itm);
+ Js_img_mgr.Update_img(page, js_wkr, itm);
}
else {
usr_dlg.Warn_many("", "", "file not found: page=~{0} file=~{1} width=~{2}", page.Url().Xto_full_str_safe(), String_.new_utf8_(itm.Lnki_ttl()), itm.Lnki_w());
@@ -123,12 +123,6 @@ class Xof_fsdb_wkr {
}
finally {bin_rdr.Rls();}
}
- private static boolean Ext_is_not_viewable_in_exec_tid(byte exec_tid, Xof_ext ext) {
- return exec_tid != Xof_exec_tid.Tid_viewer_app // only apply logic if !Tid_viewer_app; note that if Tid_viewer_app, then user clicked on file, so return true;
- && ( ext.Id_is_audio() // NOTE: was audio_strict, but v2 always redefines .ogg as .ogv; DATE:2014-02-02
- || ext.Id() == Xof_ext_.Id_unknown // ignore unknown exts, else will download needlessly when viewing page; EX: .wav before .wav was registered; PAGE:pl.s:Śpiąca_królewna_(Oppman); DATE:2014-08-17
- );
- }
private static boolean Find_by_itm(byte get_exec_tid, Xof_fsdb_itm itm, Xof_orig_mgr orig_mgr, Xof_img_size img_size) {
byte[] itm_ttl = itm.Lnki_ttl();
Xof_orig_itm orig = orig_mgr.Find_by_ttl_or_null(itm_ttl);
diff --git a/400_xowa/src/gplx/xowa/files/fsdb/Xof_fsdb_mgr__sql.java b/400_xowa/src/gplx/xowa/files/fsdb/Xof_fsdb_mgr__sql.java
index 0c2113426..adf25ec90 100644
--- a/400_xowa/src/gplx/xowa/files/fsdb/Xof_fsdb_mgr__sql.java
+++ b/400_xowa/src/gplx/xowa/files/fsdb/Xof_fsdb_mgr__sql.java
@@ -16,11 +16,12 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.files.fsdb; import gplx.*; import gplx.xowa.*; import gplx.xowa.files.*;
-import gplx.dbs.*;
-import gplx.fsdb.*; import gplx.fsdb.meta.*;
-import gplx.xowa.files.repos.*; import gplx.xowa.files.imgs.*; import gplx.xowa.files.origs.*; import gplx.xowa.files.bins.*; import gplx.xowa.files.caches.*;
+import gplx.core.primitives.*;
+import gplx.dbs.*; import gplx.xowa.wikis.data.*;
+import gplx.fsdb.*; import gplx.fsdb.meta.*;
+import gplx.xowa.files.*; import gplx.xowa.files.repos.*; import gplx.xowa.files.imgs.*; import gplx.xowa.files.origs.*; import gplx.xowa.files.bins.*; import gplx.xowa.files.caches.*; import gplx.xowa.files.gui.*;
public class Xof_fsdb_mgr__sql implements Xof_fsdb_mgr, GfoInvkAble {
- private Xof_fsdb_wkr wkr; private boolean init = false;
+ private Xof_fsdb_wkr wkr; private boolean init = false; private boolean fsdb_enabled = false;
public Xof_orig_mgr Orig_mgr() {return orig_mgr;} private final Xof_orig_mgr orig_mgr = new Xof_orig_mgr();
public Xof_bin_mgr Bin_mgr() {return bin_mgr;} private Xof_bin_mgr bin_mgr;
public Fsm_mnt_mgr Mnt_mgr() {return mnt_mgr;} private final Fsm_mnt_mgr mnt_mgr = new Fsm_mnt_mgr();
@@ -29,28 +30,35 @@ public class Xof_fsdb_mgr__sql implements Xof_fsdb_mgr, GfoInvkAble {
try {
init = true;
// wiki.Rls_list().Add(this);
- boolean version_is_1 = wiki.File_mgr__version_is_1();
+ Xow_core_data_mgr core_data_mgr = wiki.Data_mgr__core_mgr();
+ boolean schema_is_1 = core_data_mgr == null ? Bool_.Y : core_data_mgr.Cfg__schema_is_1(); // TEST: needed b/c some tests rely on txt_data_mgr
Xoa_app app = wiki.App();
Xof_cache_mgr cache_mgr = app.File_mgr__cache_mgr(); Xof_url_bldr url_bldr = Xof_url_bldr.new_v2_();
Xow_repo_mgr repo_mgr = wiki.File_mgr__repo_mgr(); Xof_img_mgr img_mgr = app.File_mgr__img_mgr();
Io_url db_dir = wiki.Fsys_mgr().File_dir();
- orig_mgr.Init_by_wiki(db_dir, version_is_1, repo_mgr, url_bldr);
- mnt_mgr.Init_by_wiki(db_dir, version_is_1);
+ Xof_fsdb_mode fsdb_mode = wiki.File_mgr__fsdb_mode();
+ orig_mgr.Init_by_wiki(db_dir, schema_is_1, wiki.Domain_bry(), app.Wmf_mgr().Download_wkr(), repo_mgr, url_bldr, fsdb_mode);
+ if (wiki.File_mgr__fsdb_mode().Tid_wmf()) return;
+ fsdb_enabled = true;
+ mnt_mgr.Init_by_wiki(db_dir, schema_is_1);
this.bin_mgr = new Xof_bin_mgr(mnt_mgr, repo_mgr, cache_mgr, app.Wmf_mgr(), url_bldr);
bin_mgr.Init_by_wiki(img_mgr.Wkr_resize_img());
wkr = new Xof_fsdb_wkr(this, Xoa_app_.Usr_dlg(), cache_mgr, repo_mgr, url_bldr);
} catch (Exception exc) {throw Err_.new_fmt_("failed to initialize fsdb_mgr: wiki={0) err={1}", wiki.Domain_str(), Err_.Message_gplx_brief(exc));}
}
- public void Fsdb_search_by_list(byte exec_tid, ListAdp itms, Xoae_page page) {
+ public void Fsdb_search_by_list(byte exec_tid, ListAdp itms, Xoa_page page, Xog_js_wkr js_wkr) {
+ if (!fsdb_enabled) return;
OrderedHash rv = OrderedHash_.new_bry_();
orig_mgr.Find_by_list(rv, itms, exec_tid);
- wkr.Fsdb_search(exec_tid, itms, page);
+ wkr.Fsdb_search(exec_tid, itms, page, js_wkr);
}
public void Txn_save() {
+ if (!fsdb_enabled) return;
mnt_mgr.Txn_save();
orig_mgr.Txn_save();
}
public void Rls() {
+ if (!fsdb_enabled) return;
this.Txn_save(); // NOTE: must call save, else user db will not update next id; DATE:2014-02-11
mnt_mgr.Rls();
orig_mgr.Rls();
diff --git a/400_xowa/src/gplx/xowa/files/fsdb/fs_roots/Fs_root_dir.java b/400_xowa/src/gplx/xowa/files/fsdb/fs_roots/Fs_root_dir.java
index 529114769..7603a4146 100644
--- a/400_xowa/src/gplx/xowa/files/fsdb/fs_roots/Fs_root_dir.java
+++ b/400_xowa/src/gplx/xowa/files/fsdb/fs_roots/Fs_root_dir.java
@@ -80,14 +80,14 @@ class Fs_root_dir {
private static final String Db_conn_bldr_type = "gplx.xowa.fs_root";
private Db_conn Init_db_fil_mgr() {
Io_url db_url = url.GenSubFil("^orig_regy.sqlite3");
- boolean created = false; boolean version_is_1 = Bool_.Y;
+ boolean created = false; boolean schema_is_1 = Bool_.Y;
Db_conn conn = Db_conn_bldr.I.Get(Db_conn_bldr_type, db_url);
if (conn == null) {
conn = Db_conn_bldr.I.New(Db_conn_bldr_type, db_url);
created = true;
}
- cfg_tbl.Conn_(conn, created, version_is_1, Fsm_abc_mgr.Cfg_tbl_v1, Fsm_abc_mgr.Cfg_tbl_v2);
- fil_tbl.Conn_(conn, created, version_is_1);
+ cfg_tbl.Conn_(conn, created, schema_is_1, Fsm_abc_mgr.Cfg_tbl_v1, Fsm_abc_mgr.Cfg_tbl_v2);
+ fil_tbl.Conn_(conn, created, schema_is_1);
if (created)
cfg_tbl.Insert(Cfg_grp_root_dir, Cfg_key_fil_id_next, Int_.Xto_str(fil_id_next));
else {
diff --git a/400_xowa/src/gplx/xowa/files/fsdb/fs_roots/Fs_root_fsdb_mgr.java b/400_xowa/src/gplx/xowa/files/fsdb/fs_roots/Fs_root_fsdb_mgr.java
index 6c73a9b93..106b8ecff 100644
--- a/400_xowa/src/gplx/xowa/files/fsdb/fs_roots/Fs_root_fsdb_mgr.java
+++ b/400_xowa/src/gplx/xowa/files/fsdb/fs_roots/Fs_root_fsdb_mgr.java
@@ -23,12 +23,12 @@ public class Fs_root_fsdb_mgr implements Xof_fsdb_mgr, GfoInvkAble { // read ima
private Xowe_wiki wiki; private Fs_root_wkr_fsdb fsdb_wkr;
public Fs_root_fsdb_mgr(Xowe_wiki wiki) {this.Init_by_wiki(wiki); fsdb_wkr = new Fs_root_wkr_fsdb(wiki);}
public void Init_by_wiki(Xow_wiki wiki) {this.wiki = (Xowe_wiki)wiki;}
- public void Fsdb_search_by_list(byte exec_tid, ListAdp itms, Xoae_page page) {
+ public void Fsdb_search_by_list(byte exec_tid, ListAdp itms, Xoa_page page, Xog_js_wkr js_wkr) {
int itms_len = itms.Count();
for (int i = 0; i < itms_len; i++) {
Xof_fsdb_itm itm = (Xof_fsdb_itm)itms.FetchAt(i);
if (fsdb_wkr.Find_file(exec_tid, itm))
- Js_img_mgr.Update_img(page, itm);
+ Js_img_mgr.Update_img(page, js_wkr, itm);
}
}
private Io_url Xto_url(byte[] v) {
diff --git a/400_xowa/src/gplx/xowa/files/fsdb/fs_roots/Orig_fil_tbl.java b/400_xowa/src/gplx/xowa/files/fsdb/fs_roots/Orig_fil_tbl.java
index d6b7635b4..b429587d8 100644
--- a/400_xowa/src/gplx/xowa/files/fsdb/fs_roots/Orig_fil_tbl.java
+++ b/400_xowa/src/gplx/xowa/files/fsdb/fs_roots/Orig_fil_tbl.java
@@ -21,10 +21,10 @@ public class Orig_fil_tbl {
private String tbl_name = "orig_fil"; private final Db_meta_fld_list flds = Db_meta_fld_list.new_();
private String fld_uid, fld_name, fld_ext_id, fld_w, fld_h, fld_dir_url;
private Db_conn conn; private Db_stmt stmt_insert, stmt_select;
- public void Conn_(Db_conn new_conn, boolean created, boolean version_is_1) {
+ public void Conn_(Db_conn new_conn, boolean created, boolean schema_is_1) {
this.conn = new_conn; flds.Clear();
String fld_prefix = "";
- if (version_is_1) {
+ if (schema_is_1) {
fld_prefix = "fil_";
}
fld_uid = flds.Add_int(fld_prefix + "uid");
diff --git a/400_xowa/src/gplx/xowa/files/fsdb/tsts/Xof_file_fxt.java b/400_xowa/src/gplx/xowa/files/fsdb/tsts/Xof_file_fxt.java
index 99eb1ab11..e98236f69 100644
--- a/400_xowa/src/gplx/xowa/files/fsdb/tsts/Xof_file_fxt.java
+++ b/400_xowa/src/gplx/xowa/files/fsdb/tsts/Xof_file_fxt.java
@@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.files.fsdb.tsts; import gplx.*; import gplx.xowa.*; import gplx.xowa.files.*; import gplx.xowa.files.fsdb.*;
-import gplx.fsdb.*; import gplx.dbs.*; import gplx.xowa.files.origs.*; import gplx.xowa.files.bins.*; import gplx.xowa.files.cnvs.*; import gplx.xowa.files.exts.*;
+import gplx.fsdb.*; import gplx.dbs.*; import gplx.xowa.files.origs.*; import gplx.xowa.files.bins.*; import gplx.xowa.files.cnvs.*; import gplx.xowa.files.exts.*; import gplx.xowa.files.gui.*;
import gplx.xowa.wikis.*; import gplx.xowa.files.repos.*;
import gplx.fsdb.data.*;
class Xof_file_fxt {
@@ -29,7 +29,9 @@ class Xof_file_fxt {
Xoa_test_.Db_init(fsys_db);
app = Xoa_app_fxt.app_(Op_sys.Cur().Os_name(), fsys_db);
Xowe_wiki wiki = Xoa_app_fxt.wiki_tst_(app);
+ wiki.File_mgr__fsdb_mode().Tid_make_y_();
Xof_repo_fxt.Repos_init(app.File_mgr(), true, wiki);
+ wiki.Db_mgr_create_as_sql(); // NOTE: must create as sql_db_mgr not txt_db_mgr
fsdb_mgr = new Xof_fsdb_mgr__sql(); // NOTE: must new Xof_fsdb_mgr__sql b/c it keeps a local init;
fsdb_mgr.Init_by_wiki(wiki);
fsdb_mgr.Bin_mgr().Wkrs__clear();
@@ -57,7 +59,7 @@ class Xof_file_fxt {
Xof_fsdb_itm itm = new Xof_fsdb_itm();
itm.Ctor_by_lnki(ttl, ext, md5, arg.Lnki_type(), arg.Lnki_w(), arg.Lnki_h(), Xof_patch_upright_tid_.Tid_all, arg.Lnki_upright(), arg.Lnki_time(), Xof_doc_page.Null);
ListAdp itms_list = ListAdp_.new_(); itms_list.Add(itm);
- fsdb_mgr.Fsdb_search_by_list(arg.Exec_tid(), itms_list, Xoae_page.Empty);
+ fsdb_mgr.Fsdb_search_by_list(arg.Exec_tid(), itms_list, Xoae_page.Empty, Xog_js_wkr_.Null);
if (arg.Rslt_orig() != Xof_orig_wkr_.Status_null) Tfds.Eq(arg.Rslt_orig(), itm.Orig_status(), "rslt_orig");
if (arg.Rslt_fsdb() != Xof_bin_wkr_.Tid_null) Tfds.Eq(arg.Rslt_fsdb(), itm.Rslt_bin(), "rslt_fsdb");
if (arg.Rslt_conv() != Xof_cnv_wkr_.Tid_null) Tfds.Eq(arg.Rslt_conv(), itm.Rslt_cnv(), "rslt_conv");
diff --git a/400_xowa/src/gplx/xowa/files/gui/Js_img_mgr.java b/400_xowa/src/gplx/xowa/files/gui/Js_img_mgr.java
index 1f3876503..464e628dd 100644
--- a/400_xowa/src/gplx/xowa/files/gui/Js_img_mgr.java
+++ b/400_xowa/src/gplx/xowa/files/gui/Js_img_mgr.java
@@ -20,40 +20,39 @@ import gplx.xowa.xtns.gallery.*;
import gplx.xowa.files.fsdb.*; import gplx.xowa.gui.views.*;
public class Js_img_mgr {
public static void Update_img(Xoae_page page, Xof_xfer_itm itm) {
- Js_img_mgr.Update_img(page, itm.Html_uid(), itm.Lnki_type(), itm.Html_elem_tid(), itm.Html_w(), itm.Html_h(), String_.new_utf8_(itm.Html_view_src()), itm.Orig_w(), itm.Orig_h(), String_.new_utf8_(itm.Html_orig_src()), itm.Lnki_ttl(), itm.Gallery_mgr_h(), itm.Html_img_wkr());
+ Xog_js_wkr js_wkr = Env_.Mode_testing() ? Xog_js_wkr_.Null : page.Tab().Html_itm();
+ Js_img_mgr.Update_img(page, js_wkr, itm.Html_img_wkr(), itm.Html_uid(), itm.Lnki_type(), itm.Html_elem_tid(), itm.Html_w(), itm.Html_h(), String_.new_utf8_(itm.Html_view_src()), itm.Orig_w(), itm.Orig_h(), String_.new_utf8_(itm.Html_orig_src()), itm.Lnki_ttl(), itm.Gallery_mgr_h());
}
- public static void Update_img(Xoae_page page, Xof_fsdb_itm itm) {
- Js_img_mgr.Update_img(page, itm.Html_uid(), itm.Lnki_type(), itm.Html_elem_tid(), itm.Html_w(), itm.Html_h(), itm.Html_view_url().To_http_file_str(), itm.Orig_w(), itm.Orig_h(), itm.Html_orig_url().To_http_file_str(), itm.Lnki_ttl(), itm.Gallery_mgr_h(), itm.Html_img_wkr());
+ public static void Update_img(Xoa_page page, Xog_js_wkr js_wkr, Xof_fsdb_itm itm) {
+ Js_img_mgr.Update_img(page, js_wkr, itm.Html_img_wkr(), itm.Html_uid(), itm.Lnki_type(), itm.Html_elem_tid(), itm.Html_w(), itm.Html_h(), itm.Html_view_url().To_http_file_str(), itm.Orig_w(), itm.Orig_h(), itm.Html_orig_url().To_http_file_str(), itm.Lnki_ttl(), itm.Gallery_mgr_h());
}
public static void Update_link_missing(Xog_html_itm html_itm, String html_id) {
html_itm.Html_elem_atr_set_append(html_id, "class", " new");
}
- private static void Update_img(Xoae_page page, int uid, byte lnki_type, byte elem_tid, int html_w, int html_h, String html_src, int orig_w, int orig_h, String orig_src, byte[] lnki_ttl, int gallery_mgr_h, Js_img_wkr img_wkr) {
- if (Env_.Mode_testing()) return;
+ private static void Update_img(Xoa_page page, Xog_js_wkr js_wkr, Js_img_wkr img_wkr, int uid, byte lnki_type, byte elem_tid, int html_w, int html_h, String html_src, int orig_w, int orig_h, String orig_src, byte[] lnki_ttl, int gallery_mgr_h) {
if (Xoa_app_.Mode != Xoa_app_.Mode_gui) return; // do not update html widget unless app is gui; null ref on http server; DATE:2014-09-17
- Xog_html_itm html_itm = page.Tab().Html_itm();
switch (elem_tid) {
case Xof_html_elem.Tid_gallery_v2:
- img_wkr.Html_update(page, html_itm, uid, html_w, html_h, html_src, orig_w, orig_h, orig_src, lnki_ttl);
+ img_wkr.Html_update(page, js_wkr, uid, html_w, html_h, html_src, orig_w, orig_h, orig_src, lnki_ttl);
return;
}
String html_id = "xowa_file_img_" + uid;
- html_itm.Html_img_update(html_id, html_src, html_w, html_h);
+ js_wkr.Html_img_update(html_id, html_src, html_w, html_h);
if (Xop_lnki_type.Id_is_thumbable(lnki_type)) { // thumb needs to set cls and width
- html_itm.Html_atr_set(html_id, "class", gplx.xowa.html.lnkis.Xoh_lnki_consts.Str_img_cls_thumbimage);
- html_itm.Html_atr_set("xowa_file_div_" + uid, "style", "width:" + html_w + "px;");
+ js_wkr.Html_atr_set(html_id, "class", gplx.xowa.html.lnkis.Xoh_lnki_consts.Str_img_cls_thumbimage);
+ js_wkr.Html_atr_set("xowa_file_div_" + uid, "style", "width:" + html_w + "px;");
}
switch (elem_tid) {
case Xof_html_elem.Tid_gallery:
- html_itm.Html_atr_set("xowa_gallery_div3_" + uid, "style", "margin:" + Gallery_html_wtr_utl.Calc_vpad(gallery_mgr_h, html_h) + "px auto;");
+ js_wkr.Html_atr_set("xowa_gallery_div3_" + uid, "style", "margin:" + Gallery_html_wtr_utl.Calc_vpad(gallery_mgr_h, html_h) + "px auto;");
break;
case Xof_html_elem.Tid_imap:
- img_wkr.Html_update(page, html_itm, uid, html_w, html_h, html_src, orig_w, orig_h, orig_src, lnki_ttl);
+ img_wkr.Html_update(page, js_wkr, uid, html_w, html_h, html_src, orig_w, orig_h, orig_src, lnki_ttl);
break;
case Xof_html_elem.Tid_vid:
String html_id_vid = "xowa_file_play_" + uid;
- html_itm.Html_atr_set(html_id_vid, "style", "width:" + html_w + "px;max-width:" + (html_w - 2) + "px;");
- html_itm.Html_atr_set(html_id_vid, "href", orig_src);
+ js_wkr.Html_atr_set(html_id_vid, "style", "width:" + html_w + "px;max-width:" + (html_w - 2) + "px;");
+ js_wkr.Html_atr_set(html_id_vid, "href", orig_src);
break;
}
}
diff --git a/400_xowa/src/gplx/xowa/files/gui/Js_img_wkr.java b/400_xowa/src/gplx/xowa/files/gui/Js_img_wkr.java
index fa90b33e1..131eb971c 100644
--- a/400_xowa/src/gplx/xowa/files/gui/Js_img_wkr.java
+++ b/400_xowa/src/gplx/xowa/files/gui/Js_img_wkr.java
@@ -18,5 +18,5 @@ along with this program. If not, see .
package gplx.xowa.files.gui; import gplx.*; import gplx.xowa.*; import gplx.xowa.files.*;
import gplx.xowa.gui.views.*;
public interface Js_img_wkr {
- void Html_update(Xoae_page page, Xog_html_itm html_itm, int html_uid, int html_w, int html_h, String html_src, int orig_w, int orig_h, String orig_src, byte[] lnki_ttl);
+ void Html_update(Xoa_page page, Xog_js_wkr js_wkr, int html_uid, int html_w, int html_h, String html_src, int orig_w, int orig_h, String orig_src, byte[] lnki_ttl);
}
diff --git a/400_xowa/src/gplx/xowa/hdumps/Xowd_db_tbl_mgr.java b/400_xowa/src/gplx/xowa/files/gui/Xog_js_wkr.java
similarity index 69%
rename from 400_xowa/src/gplx/xowa/hdumps/Xowd_db_tbl_mgr.java
rename to 400_xowa/src/gplx/xowa/files/gui/Xog_js_wkr.java
index 844c25604..61b0a3588 100644
--- a/400_xowa/src/gplx/xowa/hdumps/Xowd_db_tbl_mgr.java
+++ b/400_xowa/src/gplx/xowa/files/gui/Xog_js_wkr.java
@@ -15,9 +15,9 @@ GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
-package gplx.xowa.hdumps; import gplx.*; import gplx.xowa.*;
-import gplx.xowa.dbs.tbls.*;
-public class Xowd_db_tbl_mgr {
- public Xodb_xowa_ns_tbl Tbl__ns() {return tbl__ns;} private final Xodb_xowa_ns_tbl tbl__ns = new Xodb_xowa_ns_tbl();
- public Xodbv_dbs_tbl Tbl__dbs_new() {return new Xodbv_dbs_tbl();}
-}
+package gplx.xowa.files.gui; import gplx.*; import gplx.xowa.*; import gplx.xowa.files.*;
+public interface Xog_js_wkr {
+ void Html_img_update (String uid, String src, int w, int h);
+ void Html_atr_set (String uid, String key, String val);
+ void Html_elem_replace_html (String uid, String html);
+}
diff --git a/400_xowa/src/gplx/xowa/files/gui/Xog_js_wkr_.java b/400_xowa/src/gplx/xowa/files/gui/Xog_js_wkr_.java
new file mode 100644
index 000000000..ab056508f
--- /dev/null
+++ b/400_xowa/src/gplx/xowa/files/gui/Xog_js_wkr_.java
@@ -0,0 +1,26 @@
+/*
+XOWA: the XOWA Offline Wiki Application
+Copyright (C) 2012 gnosygnu@gmail.com
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU Affero General Public License as
+published by the Free Software Foundation, either version 3 of the
+License, or (at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU Affero General Public License for more details.
+
+You should have received a copy of the GNU Affero General Public License
+along with this program. If not, see .
+*/
+package gplx.xowa.files.gui; import gplx.*; import gplx.xowa.*; import gplx.xowa.files.*;
+public class Xog_js_wkr_ {
+ public static final Xog_js_wkr Null = new Xog_js_wkr__null();
+}
+class Xog_js_wkr__null implements Xog_js_wkr {
+ public void Html_img_update (String uid, String src, int w, int h) {}
+ public void Html_atr_set (String uid, String key, String val) {}
+ public void Html_elem_replace_html (String uid, String html) {}
+}
diff --git a/400_xowa/src/gplx/xowa/files/origs/Xob_orig_tbl_bldr.java b/400_xowa/src/gplx/xowa/files/origs/Xob_orig_tbl_bldr.java
index 089bf2966..78d8e4580 100644
--- a/400_xowa/src/gplx/xowa/files/origs/Xob_orig_tbl_bldr.java
+++ b/400_xowa/src/gplx/xowa/files/origs/Xob_orig_tbl_bldr.java
@@ -23,8 +23,10 @@ public class Xob_orig_tbl_bldr extends Xob_itm_basic_base implements Xob_cmd {
public String Cmd_key() {return KEY_oimg;} public static final String KEY_oimg = "file.wiki_orig";
public void Cmd_ini(Xob_bldr bldr) {}
public void Cmd_bgn(Xob_bldr bldr) {
+ Xof_fsdb_mode fsdb_mode = wiki.File_mgr__fsdb_mode();
+ fsdb_mode.Tid_make_y_();
wiki.Init_assert();
- conn = Xof_orig_tbl.Conn__get_or_make(wiki.Fsys_mgr().File_dir(), new Xof_orig_tbl(), Bool_.Y); // NOTE: Xof_orig_tbl needed if db doesn't exist and tbl.meta needs to be created
+ conn = Xof_orig_tbl.Conn__get_or_make(wiki.Fsys_mgr().File_dir(), new Xof_orig_tbl(), Bool_.Y, fsdb_mode); // NOTE: Xof_orig_tbl needed if db doesn't exist and tbl.meta needs to be created
Io_url make_db_url = Xodb_db_file.init__file_make(wiki.Fsys_mgr().Root_dir()).Url();
Sqlite_engine_.Db_attach(conn, "make_db", make_db_url.Raw());
}
diff --git a/400_xowa/src/gplx/xowa/files/origs/Xof_orig_mgr.java b/400_xowa/src/gplx/xowa/files/origs/Xof_orig_mgr.java
index 314168e43..f12e6f6db 100644
--- a/400_xowa/src/gplx/xowa/files/origs/Xof_orig_mgr.java
+++ b/400_xowa/src/gplx/xowa/files/origs/Xof_orig_mgr.java
@@ -16,19 +16,24 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.files.origs; import gplx.*; import gplx.xowa.*; import gplx.xowa.files.*;
+import gplx.core.primitives.*;
import gplx.dbs.*;
import gplx.xowa.files.repos.*; import gplx.xowa.files.fsdb.*; import gplx.xowa.wmfs.apis.*;
public class Xof_orig_mgr {
private Xof_orig_wkr[] wkrs; private int wkrs_len;
- private final Xof_orig_wkr__orig_db wkr_xowa_db = new Xof_orig_wkr__orig_db(); private Db_conn orig_conn = null;
private Xof_url_bldr url_bldr; private Xow_repo_mgr repo_mgr;
public Xof_orig_mgr() {this.Wkrs__clear();}
- public Xof_orig_wkr__orig_db Wkrs__get_xowa_db() {return wkr_xowa_db;}
- public void Init_by_wiki(Io_url db_dir, boolean version_is_1, Xow_repo_mgr repo_mgr, Xof_url_bldr url_bldr) {
+ public void Init_by_wiki(Io_url db_dir, boolean schema_is_1, byte[] domain_bry, Xof_download_wkr download_wkr, Xow_repo_mgr repo_mgr, Xof_url_bldr url_bldr, Xof_fsdb_mode fsdb_mode) {
this.repo_mgr = repo_mgr; this.url_bldr = url_bldr;
- this.orig_conn = Xof_orig_tbl.Conn__get_or_make(db_dir, wkr_xowa_db.Tbl(), version_is_1);
- // Xof_orig_wkr wmf_api = new Xof_orig_wkr__wmf_api(new Xoapi_orig_wmf(), wiki.Appe().File_mgr().Wmf_mgr().Download_wkr(), wiki.File_mgr().Repo_mgr(), wiki.Domain_bry()); // NOTE: do not reinstate without handling scrib / pfunc calls to Orig_mgr
- this.Wkrs__add_many(wkr_xowa_db);
+ if (fsdb_mode.Tid_wmf()) {
+ Xof_orig_wkr wmf_api = new Xof_orig_wkr__wmf_api(new Xoapi_orig_wmf(), download_wkr, repo_mgr, domain_bry); // NOTE: do not reinstate without handling scrib / pfunc calls to Orig_mgr
+ this.Wkrs__add_many(wmf_api);
+ }
+ else {
+ Xof_orig_wkr__orig_db wkr_xowa_db = new Xof_orig_wkr__orig_db();
+ Xof_orig_tbl.Conn__get_or_make(db_dir, wkr_xowa_db.Tbl(), schema_is_1, fsdb_mode);
+ this.Wkrs__add_many(wkr_xowa_db);
+ }
}
public Xof_orig_itm Find_by_ttl_or_null(byte[] ttl) {
for (int i = 0; i < wkrs_len; i++) {
@@ -52,10 +57,16 @@ public class Xof_orig_mgr {
}
}
public void Txn_save() {
- orig_conn.Txn_mgr().Txn_end_all();
+ for (int i = 0; i < wkrs_len; i++) {
+ Xof_orig_wkr wkr = wkrs[i];
+ wkr.Db_txn_save();
+ }
}
public void Rls() {
- orig_conn.Conn_term();
+ for (int i = 0; i < wkrs_len; i++) {
+ Xof_orig_wkr wkr = wkrs[i];
+ wkr.Db_rls();
+ }
}
private void Wkrs__clear() {wkrs = Xof_orig_wkr_.Ary_empty; wkrs_len = 0;}
private void Wkrs__add_many(Xof_orig_wkr... v) {
diff --git a/400_xowa/src/gplx/xowa/files/origs/Xof_orig_tbl.java b/400_xowa/src/gplx/xowa/files/origs/Xof_orig_tbl.java
index e202f369a..d9370e710 100644
--- a/400_xowa/src/gplx/xowa/files/origs/Xof_orig_tbl.java
+++ b/400_xowa/src/gplx/xowa/files/origs/Xof_orig_tbl.java
@@ -16,16 +16,18 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.files.origs; import gplx.*; import gplx.xowa.*; import gplx.xowa.files.*;
+import gplx.core.primitives.*;
import gplx.dbs.*; import gplx.dbs.utls.*;
import gplx.xowa.files.fsdb.*; import gplx.xowa.files.repos.*;
public class Xof_orig_tbl {
private String tbl_name = "file_orig_regy"; private final Db_meta_fld_list flds = Db_meta_fld_list.new_();
private String fld_repo, fld_ttl, fld_status, fld_ext, fld_w, fld_h, fld_redirect;
private Db_conn conn; private final Xof_orig_tbl__in_wkr select_in_wkr = new Xof_orig_tbl__in_wkr();
- public void Conn_(Db_conn new_conn, boolean created, boolean version_is_1) {
+ public Db_conn Conn() {return conn;}
+ public void Conn_(Db_conn new_conn, boolean created, boolean schema_is_1) {
this.conn = new_conn; flds.Clear();
String fld_prefix = "";
- if (version_is_1) {
+ if (schema_is_1) {
tbl_name = "wiki_orig";
fld_prefix = "orig_";
}
@@ -78,11 +80,19 @@ public class Xof_orig_tbl {
return rv;
}
public static final String Db_conn_bldr_type = "xowa.file.orig_regy";
- public static Db_conn Conn__get_or_make(Io_url root_dir, Xof_orig_tbl tbl, boolean version_is_1) {
- Io_url conn_url = root_dir.GenSubFil("wiki.orig#00.sqlite3");
- Db_conn_bldr_data conn_data = Db_conn_bldr.I.Get_or_new(Db_conn_bldr_type, conn_url);
- Db_conn conn = conn_data.Conn();
- tbl.Conn_(conn, conn_data.Created(), version_is_1);
+ public static Db_conn Conn__get_or_make(Io_url root_dir, Xof_orig_tbl tbl, boolean schema_is_1, Xof_fsdb_mode fsdb_mode) {
+ Io_url conn_url = root_dir.GenSubFil("wiki.orig#00.sqlite3");
+// boolean created = Bool_.N; Db_conn conn = null;
+// if (fsdb_create.Val()) {
+ Db_conn_bldr_data conn_data = Db_conn_bldr.I.Get_or_new("", conn_url);
+ Db_conn conn = conn_data.Conn();
+ boolean created = conn_data.Created();
+// }
+// else {
+// conn = Db_conn_bldr.I.Get("", conn_url);
+// created = false;
+// }
+ tbl.Conn_(conn, created, schema_is_1);
return conn;
}
}
diff --git a/400_xowa/src/gplx/xowa/files/origs/Xof_orig_wkr.java b/400_xowa/src/gplx/xowa/files/origs/Xof_orig_wkr.java
index 2f0b81235..0c285e160 100644
--- a/400_xowa/src/gplx/xowa/files/origs/Xof_orig_wkr.java
+++ b/400_xowa/src/gplx/xowa/files/origs/Xof_orig_wkr.java
@@ -22,4 +22,6 @@ public interface Xof_orig_wkr {
Xof_orig_itm Find_as_itm(byte[] ttl);
boolean Find_by_list(OrderedHash rv, ListAdp itms);
boolean Add_orig(byte repo, byte[] page, int ext_id, int w, int h, byte[] redirect);
+ void Db_txn_save();
+ void Db_rls();
}
diff --git a/400_xowa/src/gplx/xowa/files/origs/Xof_orig_wkr__orig_db.java b/400_xowa/src/gplx/xowa/files/origs/Xof_orig_wkr__orig_db.java
index 1efe69d61..228d48bfd 100644
--- a/400_xowa/src/gplx/xowa/files/origs/Xof_orig_wkr__orig_db.java
+++ b/400_xowa/src/gplx/xowa/files/origs/Xof_orig_wkr__orig_db.java
@@ -20,12 +20,14 @@ import gplx.dbs.*;
public class Xof_orig_wkr__orig_db implements Xof_orig_wkr {
public byte Tid() {return Xof_orig_wkr_.Tid_xowa_reg;}
public Xof_orig_tbl Tbl() {return tbl;} private final Xof_orig_tbl tbl = new Xof_orig_tbl();
- public void Conn_(Db_conn conn, boolean created, boolean version_is_1) {tbl.Conn_(conn, created, version_is_1);}
+ public void Conn_(Db_conn conn, boolean created, boolean schema_is_1) {tbl.Conn_(conn, created, schema_is_1);}
public boolean Find_by_list(OrderedHash rv, ListAdp itms) {tbl.Select_by_list(rv, itms); return true;}
public Xof_orig_itm Find_as_itm(byte[] ttl) {return tbl.Select_itm(ttl);}
public boolean Add_orig(byte repo, byte[] page, int ext_id, int w, int h, byte[] redirect) {
- if (tbl.Select_itm(page) != Xof_orig_itm.Null) return false; // do not add if already there; probably not needed
+ if (tbl.Select_itm(page) != Xof_orig_itm.Null) return false; // do not add if already there; needed b/c fsdb_wkr always calls Insert when itm is found;
tbl.Insert(repo, page, ext_id, w, h, redirect);
return true;
}
+ public void Db_txn_save() {tbl.Conn().Txn_mgr().Txn_end_all();}
+ public void Db_rls() {tbl.Conn().Conn_term();}
}
diff --git a/400_xowa/src/gplx/xowa/files/origs/Xof_orig_wkr__wmf_api.java b/400_xowa/src/gplx/xowa/files/origs/Xof_orig_wkr__wmf_api.java
index c1071d1d0..3f1bc1532 100644
--- a/400_xowa/src/gplx/xowa/files/origs/Xof_orig_wkr__wmf_api.java
+++ b/400_xowa/src/gplx/xowa/files/origs/Xof_orig_wkr__wmf_api.java
@@ -18,9 +18,9 @@ along with this program. If not, see .
package gplx.xowa.files.origs; import gplx.*; import gplx.xowa.*; import gplx.xowa.files.*;
import gplx.xowa.files.repos.*; import gplx.xowa.files.fsdb.*; import gplx.xowa.wmfs.apis.*;
public class Xof_orig_wkr__wmf_api implements Xof_orig_wkr {
- private final Xoapi_orig_base orig_api; private final Xof_download_wkr download_wkr; private final Xowe_repo_mgr repo_mgr; private final byte[] wiki_domain;
+ private final Xoapi_orig_base orig_api; private final Xof_download_wkr download_wkr; private final Xow_repo_mgr repo_mgr; private final byte[] wiki_domain;
private final Xoapi_orig_rslts api_rv = new Xoapi_orig_rslts();
- public Xof_orig_wkr__wmf_api(Xoapi_orig_base orig_api, Xof_download_wkr download_wkr, Xowe_repo_mgr repo_mgr, byte[] wiki_domain) {
+ public Xof_orig_wkr__wmf_api(Xoapi_orig_base orig_api, Xof_download_wkr download_wkr, Xow_repo_mgr repo_mgr, byte[] wiki_domain) {
this.orig_api = orig_api; this.download_wkr = download_wkr; this.repo_mgr = repo_mgr; this.wiki_domain = wiki_domain;
}
public byte Tid() {return Xof_orig_wkr_.Tid_wmf_api;}
@@ -38,6 +38,8 @@ public class Xof_orig_wkr__wmf_api implements Xof_orig_wkr {
return rv;
}
public boolean Add_orig(byte repo, byte[] page, int ext_id, int w, int h, byte[] redirect) {return false;}
+ public void Db_txn_save() {}
+ public void Db_rls() {}
public static Xof_ext Ext__handle_ogg(Xof_ext ext, int w, int h) {
if (!ext.Id_is_ogg()) return ext;
boolean is_audio = w == 0 && h == 0; // wmf returns back w/h of 0 if audio; non-0 if video; DATE:2013-11-11
diff --git a/400_xowa/src/gplx/xowa/files/repos/Xow_repo_mgr.java b/400_xowa/src/gplx/xowa/files/repos/Xow_repo_mgr.java
index 77d455a29..ee8620518 100644
--- a/400_xowa/src/gplx/xowa/files/repos/Xow_repo_mgr.java
+++ b/400_xowa/src/gplx/xowa/files/repos/Xow_repo_mgr.java
@@ -20,4 +20,5 @@ public interface Xow_repo_mgr {
Xof_repo_pair Repos_get_at(int i);
Xof_repo_pair Repos_get_by_id(int id);
Xof_repo_pair Repos_get_by_wiki(byte[] wiki);
+ Xof_repo_pair[] Repos_ary();
}
diff --git a/400_xowa/src/gplx/xowa/gui/urls/Xog_url_wkr.java b/400_xowa/src/gplx/xowa/gui/urls/Xog_url_wkr.java
index 8026c9d9b..c45e98041 100644
--- a/400_xowa/src/gplx/xowa/gui/urls/Xog_url_wkr.java
+++ b/400_xowa/src/gplx/xowa/gui/urls/Xog_url_wkr.java
@@ -69,15 +69,15 @@ public class Xog_url_wkr {
return Rslt_handled;
}
private Xoa_url Exec_url_file(Xoae_app app, Xowe_wiki wiki, Xoae_page page, Xog_win_itm win, byte[] href_bry) { // EX: file:///xowa/A.png
- href_bry = Xoa_app_.Utl_encoder_mgr().Url().Decode(href_bry);
+ href_bry = Xoa_app_.Utl__encoder_mgr().Url().Decode(href_bry);
Io_url href_url = Io_url_.http_any_(String_.new_utf8_(href_bry), Op_sys.Cur().Tid_is_wnt());
gplx.gfui.Gfui_html html_box = win.Active_html_box();
String xowa_ttl = wiki.Gui_mgr().Cfg_browser().Content_editable()
? html_box.Html_active_atr_get_str(gplx.xowa.html.Xoh_consts.Atr_xowa_title_str, null)
- : Xoh_dom_.Title_by_href(Xoa_app_.Utl_encoder_mgr().Comma(), app.Utl_bry_bfr_mkr().Get_b512().Mkr_rls(), href_bry, Bry_.new_utf8_(html_box.Html_doc_html()));
+ : Xoh_dom_.Title_by_href(Xoa_app_.Utl__encoder_mgr().Comma(), app.Utl__bfr_mkr().Get_b512().Mkr_rls(), href_bry, Bry_.new_utf8_(html_box.Html_doc_html()));
if (!Io_mgr._.ExistsFil(href_url)) {
Xof_xfer_itm xfer_itm = new Xof_xfer_itm();
- byte[] title = Xoa_app_.Utl_encoder_mgr().Url().Decode(Bry_.new_utf8_(xowa_ttl));
+ byte[] title = Xoa_app_.Utl__encoder_mgr().Url().Decode(Bry_.new_utf8_(xowa_ttl));
xfer_itm.Init_by_lnki(title, Bry_.Empty, Xop_lnki_type.Id_none, -1, -1, -1, Xof_doc_thumb.Null, Xof_doc_page.Null);
wiki.File_mgr().Find_meta(xfer_itm);
page.File_queue().Clear();
@@ -113,7 +113,7 @@ public class Xog_url_wkr {
segs_bgn = 2; // start from seg_2; seg_0="/en.wikipedia.org/" and seg_1="/wiki/"; note that > 2 segs possible; EX: "/site/en.wikipedia.org/wiki/A/B/C
}
if (segs_iterate) {
- Bry_bfr tmp_bfr = wiki.Utl_bry_bfr_mkr().Get_b128();
+ Bry_bfr tmp_bfr = wiki.Utl__bfr_mkr().Get_b128();
for (int i = segs_bgn; i < segs_ary_len; i++) {
tmp_bfr.Add(segs_ary[i]);
tmp_bfr.Add_byte(Byte_ascii.Slash);
diff --git a/400_xowa/src/gplx/xowa/gui/views/Xog_html_itm.java b/400_xowa/src/gplx/xowa/gui/views/Xog_html_itm.java
index ac4643dab..b1f1b022e 100644
--- a/400_xowa/src/gplx/xowa/gui/views/Xog_html_itm.java
+++ b/400_xowa/src/gplx/xowa/gui/views/Xog_html_itm.java
@@ -16,8 +16,10 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.gui.views; import gplx.*; import gplx.xowa.*; import gplx.xowa.gui.*;
-import gplx.core.primitives.*; import gplx.core.btries.*; import gplx.gfui.*; import gplx.html.*; import gplx.xowa.gui.menus.*; import gplx.xowa.gui.menus.dom.*; import gplx.xowa.html.modules.*; import gplx.xowa.pages.*;
-public class Xog_html_itm implements GfoInvkAble, GfoEvObj {
+import gplx.core.primitives.*; import gplx.core.btries.*;
+import gplx.gfui.*; import gplx.xowa.gui.menus.*; import gplx.xowa.gui.menus.dom.*; import gplx.xowa.files.gui.*;
+import gplx.html.*; import gplx.xowa.html.modules.*; import gplx.xowa.pages.*;
+public class Xog_html_itm implements Xog_js_wkr, GfoInvkAble, GfoEvObj {
private Xoae_app app;
public Xog_html_itm(Xog_tab_itm owner_tab) {
this.owner_tab = owner_tab;
@@ -150,7 +152,7 @@ public class Xog_html_itm implements GfoInvkAble, GfoEvObj {
private boolean Scroll_page_by_id(String id) {
return (id == null)
? false
- : html_box.Html_elem_scroll_into_view(Xoa_app_.Utl_encoder_mgr().Id().Encode_str(id));
+ : html_box.Html_elem_scroll_into_view(Xoa_app_.Utl__encoder_mgr().Id().Encode_str(id));
}
public void Js_enabled_(boolean v) {
html_box.Html_js_enabled_(v);
diff --git a/400_xowa/src/gplx/xowa/gui/views/Xog_tab_itm.java b/400_xowa/src/gplx/xowa/gui/views/Xog_tab_itm.java
index 90e023ed0..307795a90 100644
--- a/400_xowa/src/gplx/xowa/gui/views/Xog_tab_itm.java
+++ b/400_xowa/src/gplx/xowa/gui/views/Xog_tab_itm.java
@@ -17,7 +17,8 @@ along with this program. If not, see .
*/
package gplx.xowa.gui.views; import gplx.*; import gplx.xowa.*; import gplx.xowa.gui.*;
import gplx.threads.*; import gplx.gfui.*; import gplx.xowa.gui.history.*; import gplx.xowa.gui.bnds.*;
-import gplx.xowa.parsers.*; import gplx.xowa.parsers.lnkis.redlinks.*; import gplx.xowa.cfgs2.*; import gplx.xowa.pages.*;
+import gplx.xowa.parsers.*; import gplx.xowa.parsers.lnkis.redlinks.*; import gplx.xowa.cfgs2.*;
+import gplx.xowa.pages.*; import gplx.xowa.pages.skins.*;
public class Xog_tab_itm implements GfoInvkAble {
private Xog_win_itm win; private Xocfg_tab_mgr cfg_tab_mgr;
public Xog_tab_itm(Xog_tab_mgr tab_mgr, Gfui_tab_itm_data tab_data, Xowe_wiki wiki, Xoae_page page) {
@@ -153,7 +154,17 @@ public class Xog_tab_itm implements GfoInvkAble {
}
usr_dlg.Prog_none("", "", "rendering html");
// win.Page__async__bgn(this);
- app.Thread_mgr().File_load_mgr().Add_at_end(new Load_files_wkr(this)).Run();
+ Gfo_thread_wkr async_wkr = null;
+ if (wkr.Hdump_enabled()) {
+ wiki.File_mgr().Fsdb_mgr().Init_by_wiki(wiki);
+ async_wkr = new gplx.xowa2.gui.Xogv_img_wkr(wiki.File_mgr().Fsdb_mgr().Orig_mgr(), wiki.File_mgr().Fsdb_mgr().Bin_mgr(), app.File_mgr__cache_mgr(), wiki.File_mgr__repo_mgr(), html_itm, page, page.Hdump_data().Imgs(), gplx.xowa.files.Xof_exec_tid.Tid_wiki_page);
+ if (wiki.Html_mgr__hdump_enabled()) {
+ wiki.Html_mgr__hdump_wtr().Save(page);
+ }
+ }
+ else
+ async_wkr = new Load_files_wkr(this);
+ app.Thread_mgr().File_load_mgr().Add_at_end(async_wkr).Run();
}
finally {
app.Thread_mgr().Page_load_mgr().Resume();
@@ -182,10 +193,10 @@ public class Xog_tab_itm implements GfoInvkAble {
page.File_queue().Exec(gplx.xowa.files.Xof_exec_tid.Tid_wiki_page, usr_dlg, wiki, page);
if (page.Html_data().Xtn_gallery_packed_exists()) // packed_gallery exists; fire js once; PAGE:en.w:National_Sculpture_Museum_(Valladolid); DATE:2014-07-21
html_itm.Html_gallery_packed_exec();
- if ( page.Html_data().Xtn_imap_exists() // imap exists; DATE:2014-08-07
+ if ( page.Html_data().Xtn_imap_exists() // imap exists; DATE:2014-08-07
&& page.Html_data().Module_mgr().Itm_popups().Enabled()
)
- html_itm.Html_popups_bind_hover_to_doc(); // rebind all elements to popup
+ html_itm.Html_popups_bind_hover_to_doc(); // rebind all elements to popup
}
catch (Exception e) {usr_dlg.Warn_many("", "", "page.thread.image: page=~{0} err=~{1}", page_ttl_str, Err_.Message_gplx_brief(e));}
}
@@ -219,9 +230,6 @@ public class Xog_tab_itm implements GfoInvkAble {
} catch (Exception e) {usr_dlg.Warn_many("", "", "page.thread.redlinks: page=~{0} err=~{1}", page_ttl_str, Err_.Message_gplx_brief(e));}
try {app.File_mgr().Cache_mgr().Compress_check();}
catch (Exception e) {usr_dlg.Warn_many("", "", "page.thread.cache: page=~{0} err=~{1}", page_ttl_str, Err_.Message_gplx_brief(e));}
- if (wiki.Db_mgr().Hdump_mgr().Enabled()) {
- wiki.Db_mgr().Hdump_mgr().Save_if_missing(page);
- }
app.Log_wtr().Queue_enabled_(false);
}
public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {
@@ -241,6 +249,7 @@ class Load_page_wkr implements Gfo_thread_wkr {
public Xoae_page Page() {return page;} private Xoae_page page;
public Xoa_url Url() {return url;} private Xoa_url url;
public Xoa_ttl Ttl() {return ttl;} private Xoa_ttl ttl;
+ public boolean Hdump_enabled() {return hdump_enabled;} private boolean hdump_enabled;
public Exception Exc() {return exc;} private Exception exc;
public void Exec() {
try {
@@ -249,11 +258,13 @@ class Load_page_wkr implements Gfo_thread_wkr {
if (Env_.System_memory_free() < app.Sys_cfg().Free_mem_when()) // check if low in memory
app.Free_mem(false); // clear caches (which will clear bry_bfr_mk)
else // not low in memory
- app.Utl_bry_bfr_mkr().Clear(); // clear bry_bfr_mk only; NOTE: call before page parse, not when page is first added, else threading errors; DATE:2014-05-30
+ app.Utl__bfr_mkr().Clear(); // clear bry_bfr_mk only; NOTE: call before page parse, not when page is first added, else threading errors; DATE:2014-05-30
this.page = wiki.GetPageByTtl(url, ttl, wiki.Lang(), tab, false);
int html_db_id = page.Revision_data().Html_db_id();
- if (wiki.Db_mgr().Hdump_mgr().Enabled() && html_db_id != -1)
- wiki.Db_mgr().Hdump_mgr().Load(wiki, page, html_db_id);
+ if (wiki.Html_mgr__hdump_enabled() && html_db_id != -1) {
+ wiki.Html_mgr__hdump_rdr().Get_by_ttl(page);
+ hdump_enabled = true;
+ }
else
wiki.ParsePage(page, false);
GfoInvkAble_.InvkCmd_val(tab.Cmd_sync(), Xog_tab_itm.Invk_show_url_loaded_swt, this);
diff --git a/400_xowa/src/gplx/xowa/gui/views/Xog_tab_itm_edit_mgr.java b/400_xowa/src/gplx/xowa/gui/views/Xog_tab_itm_edit_mgr.java
index 3b40bcb26..c37c0d3dd 100644
--- a/400_xowa/src/gplx/xowa/gui/views/Xog_tab_itm_edit_mgr.java
+++ b/400_xowa/src/gplx/xowa/gui/views/Xog_tab_itm_edit_mgr.java
@@ -40,7 +40,7 @@ public class Xog_tab_itm_edit_mgr {
win_itm.Page__mode_(Xopg_view_mode.Tid_read);
win_itm.Page__async__bgn(tab);
}
- wiki.Db_mgr().Hdump_mgr().Save(page);
+// wiki.Db_mgr().Hdump_mgr().Save(page);
}
public static void Preview(Xog_tab_itm tab) {
if (tab.View_mode() != Xopg_view_mode.Tid_edit) return; // exit if not edit; handles preview somehow being called?
@@ -54,7 +54,7 @@ public class Xog_tab_itm_edit_mgr {
wiki.ParsePage_root(new_page, true); // refresh html
tab.Page_(new_page); new_page.Tab_(tab); // replace old page with new_page; DATE:2014-10-09
- Bry_bfr tmp_bfr = wiki.Utl_bry_bfr_mkr().Get_m001();
+ Bry_bfr tmp_bfr = wiki.Utl__bfr_mkr().Get_m001();
Xoh_page_wtr_wkr wkr = wiki.Html_mgr().Page_wtr_mgr().Wkr(Xopg_view_mode.Tid_read);
wkr.Page_(new_page);
wkr.XferAry(tmp_bfr, 0);
@@ -103,7 +103,7 @@ public class Xog_tab_itm_edit_mgr {
byte[] data = tab.Html_itm().Get_elem_value_for_edit_box_as_bry();
new_page.Data_raw_(data);
wiki.ParsePage_root(new_page, true);
- Bry_bfr bfr = win.App().Utl_bry_bfr_mkr().Get_m001();
+ Bry_bfr bfr = win.App().Utl__bfr_mkr().Get_m001();
bfr.Add(new_page.Root().Root_src());
wiki.Ctx().Defn_trace().Print(data, bfr);
new_page.Data_raw_(bfr.Mkr_rls().Xto_bry_and_clear());
diff --git a/400_xowa/src/gplx/xowa/gui/views/Xog_win_itm__prog_href_mgr.java b/400_xowa/src/gplx/xowa/gui/views/Xog_win_itm__prog_href_mgr.java
index aa226b911..b56c198cd 100644
--- a/400_xowa/src/gplx/xowa/gui/views/Xog_win_itm__prog_href_mgr.java
+++ b/400_xowa/src/gplx/xowa/gui/views/Xog_win_itm__prog_href_mgr.java
@@ -22,7 +22,7 @@ public class Xog_win_itm__prog_href_mgr {
private static Bry_bfr tmp_bfr = Bry_bfr.reset_(512);
public static void Print(Xog_win_itm win) { // PURPOSE: print href in prog box when in content editable mode
String href = win.Active_html_box().Html_active_atr_get_str(Gfui_html.Atr_href, "");// get selected href from html_box
- href = Xoa_app_.Utl_encoder_mgr().Href().Decode_str(href); // remove url encodings
+ href = Xoa_app_.Utl__encoder_mgr().Href().Decode_str(href); // remove url encodings
if (!String_.Eq(href, win.Prog_box().Text()))
win.Usr_dlg().Prog_direct(href);
}
diff --git a/400_xowa/src/gplx/xowa/hdumps/Xob_hdump_bldr.java b/400_xowa/src/gplx/xowa/hdumps/Xob_hdump_bldr.java
deleted file mode 100644
index 774b1d5f9..000000000
--- a/400_xowa/src/gplx/xowa/hdumps/Xob_hdump_bldr.java
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
-XOWA: the XOWA Offline Wiki Application
-Copyright (C) 2012 gnosygnu@gmail.com
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU Affero General Public License as
-published by the Free Software Foundation, either version 3 of the
-License, or (at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU Affero General Public License for more details.
-
-You should have received a copy of the GNU Affero General Public License
-along with this program. If not, see .
-*/
-package gplx.xowa.hdumps; import gplx.*; import gplx.xowa.*;
-import gplx.dbs.*; import gplx.dbs.engines.sqlite.*; import gplx.ios.*; import gplx.xowa.dbs.*; import gplx.xowa.dbs.tbls.*; import gplx.xowa.hdumps.saves.*; import gplx.xowa.hdumps.dbs.*; import gplx.xowa.hdumps.core.*; import gplx.xowa.html.hzips.*;
-public class Xob_hdump_bldr {
- private Xodb_fsys_mgr fsys_mgr; private Xodb_file core_db; private Xodb_xowa_db_tbl db_tbl; private Xodb_xowa_cfg_tbl cfg_tbl; private Db_stmt cfg_update_stmt;
- private int hdump_db_id; private long hdump_db_size, hdump_db_max; private Db_conn hdump_db_provider;
- private Xodb_hdump_mgr hdump_mgr; private Hdump_save_mgr hdump_save_mgr;
- public Xob_hdump_bldr(Xodb_mgr_sql db_mgr, Db_conn make_provider, long hdump_db_max) {
- this.hdump_db_max = hdump_db_max;
- this.fsys_mgr = db_mgr.Fsys_mgr();
- core_db = fsys_mgr.Get_tid_root(Xodb_file_tid.Tid_core);
- db_tbl = db_mgr.Tbl_xowa_db();
- cfg_tbl = new Xodb_xowa_cfg_tbl().Conn_(make_provider); cfg_update_stmt = cfg_tbl.Update_stmt();
- Xodb_hdump_mgr_setup.Assert_col__page_html_db_id(core_db.Conn(), cfg_tbl);
- hdump_mgr = db_mgr.Hdump_mgr(); hdump_save_mgr = hdump_mgr.Save_mgr();
- hdump_save_mgr.Hdump_stats_enable_y_(make_provider);
- }
- public void Bld_init() {
- Db_init(Db_get_last_or_make(fsys_mgr), cfg_tbl.Select_val_as_long_or(Cfg_grp_hdump_make, Cfg_itm_hdump_size, 0));
- hdump_db_provider.Txn_mgr().Txn_bgn_if_none();
- }
- public void Bld_term() {
- this.Commit();
- Db_term(core_db, hdump_db_provider, hdump_db_id);
- }
- private Bry_bfr tmp_bfr = Bry_bfr.reset_(Io_mgr.Len_mb); private Xow_hzip_stats hzip_stats = new Xow_hzip_stats();
- public void Insert_page(Xoae_page page) {
- hdump_mgr.Write2(tmp_bfr, page, hzip_stats);
- hdump_db_size += hdump_save_mgr.Insert_body(page, hzip_stats, page.Revision_data().Id());
- if (hdump_db_size > hdump_db_max) {
- Db_term(core_db, hdump_db_provider, hdump_db_id);
- Db_init(Db_make(fsys_mgr), 0);
- }
- }
- public void Commit() {
- db_tbl.Commit_all(fsys_mgr); // commit new html_dbs
- hdump_db_provider.Txn_mgr().Txn_end_all_bgn_if_none(); // commit entries
- cfg_tbl.Update(cfg_update_stmt, Cfg_grp_hdump_make, Cfg_itm_hdump_size, Long_.Xto_str(hdump_db_size)); // update cfg; should happen after commit entries
- }
- private static Xodb_file Db_get_last_or_make(Xodb_fsys_mgr fsys_mgr) {
- Xodb_file rv = fsys_mgr.Get_tid_root(Xodb_file_tid.Tid_html);
- if (rv == null) rv = Db_make(fsys_mgr);
- return rv;
- }
- private void Db_init(Xodb_file db_file, long hdump_db_size) {
- this.hdump_db_id = db_file.Id();
- this.hdump_db_size = hdump_db_size;
- this.hdump_db_provider = db_file.Conn();
- this.hdump_save_mgr.Tbl().Conn_(hdump_db_provider);
- }
- private static Xodb_file Db_make(Xodb_fsys_mgr fsys_mgr) {
- Xodb_file rv = fsys_mgr.Make(Xodb_file_tid.Tid_html);
- rv.Conn().Exec_sql(Xodb_wiki_page_html_tbl.Tbl_sql);
- return rv;
- }
- private static void Db_term(Xodb_file core_db_file, Db_conn hdump_db_provider, int hdump_db_id) {
- hdump_db_provider.Txn_mgr().Txn_end_all(); // commit transactions
- Sqlite_engine_.Idx_create(hdump_db_provider, Xodb_wiki_page_html_tbl.Idx_core); // create index
- Sqlite_engine_.Db_attach(hdump_db_provider, "page_db", core_db_file.Url().Raw()); // update page_db.page with page_html_db_id
- hdump_db_provider.Txn_mgr().Txn_bgn();
- hdump_db_provider.Exec_sql(String_.Format(Sql_update_page_html_db_id, hdump_db_id));
- hdump_db_provider.Txn_mgr().Txn_end();
- Sqlite_engine_.Db_detach(hdump_db_provider, "page_db");
- hdump_db_provider.Conn_term(); // release conn
- }
- private static final String Cfg_grp_hdump_make = "hdump.make", Cfg_itm_hdump_size = "hdump.size";
- private static final String Sql_update_page_html_db_id = String_.Concat_lines_nl_skip_last
- ( "REPLACE INTO page_db.page (page_id, page_namespace, page_title, page_is_redirect, page_touched, page_len, page_random_int, page_file_idx, page_redirect_id, page_html_db_id)"
- , "SELECT p.page_id"
- , ", p.page_namespace"
- , ", p.page_title"
- , ", p.page_is_redirect"
- , ", p.page_touched"
- , ", p.page_len"
- , ", p.page_random_int"
- , ", p.page_file_idx"
- , ", p.page_redirect_id"
- , ", {0}"
- , "FROM page_db.page p"
- , " JOIN wiki_page_html h ON p.page_id = h.page_id"
- );
-}
diff --git a/400_xowa/src/gplx/xowa/hdumps/Xodb_hdump_mgr.java b/400_xowa/src/gplx/xowa/hdumps/Xodb_hdump_mgr.java
deleted file mode 100644
index b7123c6bb..000000000
--- a/400_xowa/src/gplx/xowa/hdumps/Xodb_hdump_mgr.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
-XOWA: the XOWA Offline Wiki Application
-Copyright (C) 2012 gnosygnu@gmail.com
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU Affero General Public License as
-published by the Free Software Foundation, either version 3 of the
-License, or (at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU Affero General Public License for more details.
-
-You should have received a copy of the GNU Affero General Public License
-along with this program. If not, see .
-*/
-package gplx.xowa.hdumps; import gplx.*; import gplx.xowa.*;
-import gplx.dbs.*; import gplx.xowa.dbs.*; import gplx.xowa.html.*; import gplx.xowa.gui.*;
-import gplx.xowa.hdumps.core.*; import gplx.xowa.hdumps.saves.*; import gplx.xowa.pages.*; import gplx.xowa.hdumps.loads.*; import gplx.xowa.hdumps.htmls.*; import gplx.xowa.hdumps.dbs.*; import gplx.xowa.html.hzips.*;
-import gplx.xowa2.gui.*;
-public class Xodb_hdump_mgr {
- private Xodb_file hdump_db_file; private Xow_hzip_mgr hzip_mgr;
- public Xodb_hdump_mgr(Xowe_wiki wiki) {
- this.wiki = wiki;
- load_mgr = new Hdump_load_mgr();
- Tbl_(new Xodb_wiki_page_html_tbl());
- text_tbl.Init_by_wiki(wiki);
- Xoae_app app = wiki.Appe();
- html_mgr.Init_by_app(app.Usr_dlg(), app.Fsys_mgr(), Xoa_app_.Utl_encoder_mgr().Fsys());
- hzip_mgr = wiki.Html_mgr().Hzip_mgr();
- }
- public Xowe_wiki Wiki() {return wiki;} private final Xowe_wiki wiki;
- @gplx.Internal protected Hdump_load_mgr Load_mgr() {return load_mgr;} private Hdump_load_mgr load_mgr;
- @gplx.Internal protected Hdump_save_mgr Save_mgr() {return save_mgr;} private Hdump_save_mgr save_mgr = new Hdump_save_mgr();
- public Hdump_html_body Html_mgr() {return html_mgr;} private Hdump_html_body html_mgr = new Hdump_html_body();
- public Xodb_wiki_page_html_tbl Text_tbl() {return text_tbl;} private Xodb_wiki_page_html_tbl text_tbl;
- public boolean Enabled() {return enabled;} public void Enabled_(boolean v) {enabled = v;} private boolean enabled;
- @gplx.Internal protected void Tbl_mem_() {Tbl_(new Xodb_wiki_page_html_tbl_mem());}
- public int Html_db_id_default(int page_len) {
- return -1;
- }
- public Db_conn Db_conn_by_page(int page_id) {
- return text_tbl.Conn();
- }
- public void Save_if_missing(Xoae_page page) {
- if (page.Revision_data().Html_db_id() == -1) Save(page);
- }
- public void Save(Xoae_page page) {
- if (!Enabled_chk()) return;
- Bry_bfr tmp_bfr = wiki.Utl_bry_bfr_mkr().Get_m001();
- this.Write(tmp_bfr, page);
- save_mgr.Update(page);
- wiki.Db_mgr_as_sql().Tbl_page().Update_html_db_id(page.Revision_data().Id(), hdump_db_file.Id());
- tmp_bfr.Mkr_rls();
- }
- public void Write(Bry_bfr bfr, Xoae_page page) {
- page.File_queue().Clear(); // need to reset uid to 0, else xowa_file_# will resume from last
- Xoh_page_wtr_wkr wkr = wiki.Html_mgr().Page_wtr_mgr().Wkr(Xopg_view_mode.Tid_read);
- wkr.Write_body(bfr, Xoh_wtr_ctx.Hdump, page);
- page.Hdump_data().Body_(bfr.Xto_bry_and_clear());
- }
- public void Write2(Bry_bfr tmp_bfr, Xoae_page page, Xow_hzip_stats stats) {
- page.File_queue().Clear(); // need to reset uid to 0, else xowa_file_# will resume from last
- Xoh_page_wtr_wkr wkr = wiki.Html_mgr().Page_wtr_mgr().Wkr(Xopg_view_mode.Tid_read);
- wkr.Write_body(tmp_bfr, Xoh_wtr_ctx.Hdump, page);
- hzip_mgr.Save(tmp_bfr, stats, page.Url().Xto_full_bry(), tmp_bfr.Xto_bry_and_clear());
- page.Hdump_data().Body_(tmp_bfr.Xto_bry_and_clear());
- hpg.Init(tmp_bfr, page);
- } private Xog_page hpg = new Xog_page();
- public void Load(Xowe_wiki wiki, Xoae_page page, int html_db_id) {
- if (!Enabled_chk()) return;
- page.Root_(new Xop_root_tkn());
- Xog_page hpg = new Xog_page().Init(page.Revision_data().Id(), page.Url(), page.Ttl());
- load_mgr.Load(hpg, wiki.Db_mgr_as_sql().Fsys_mgr(), html_db_id, page.Revision_data().Id(), page.Ttl());
- Bry_bfr tmp_bfr = wiki.Utl_bry_bfr_mkr().Get_b512();
- hzip_mgr.Load(tmp_bfr, page.Url().Xto_full_bry(), hpg.Page_body());
- hpg.Page_body_(tmp_bfr.Mkr_rls().Xto_bry_and_clear());
- Load_page(wiki, page, hpg);
- }
- private void Load_page(Xowe_wiki wiki, Xoae_page page, Xog_page hpg) {
- Bry_bfr tmp_bfr = wiki.Utl_bry_bfr_mkr().Get_m001();
- html_mgr.Init_by_page(wiki.Domain_bry(), hpg).Write(tmp_bfr);
- page.Hdump_data().Body_(tmp_bfr.Xto_bry_and_clear());
- Xopg_html_data html_data = page.Html_data();
- html_data.Display_ttl_(hpg.Display_ttl());
- html_data.Content_sub_(hpg.Content_sub());
- html_data.Xtn_skin_mgr().Add(new Xopg_xtn_skin_itm_mock(hpg.Sidebar_div()));
- Hdump_page_body_srl.Load_html_modules(html_data.Module_mgr(), hpg);
- tmp_bfr.Mkr_rls();
- }
- private void Tbl_(Xodb_wiki_page_html_tbl v) {
- text_tbl = v;
- save_mgr.Tbl_(text_tbl);
-// load_mgr.Tbl_(text_tbl);
- }
- private boolean Enabled_chk() {
- if (enabled && hdump_db_file == null) hdump_db_file = Xodb_hdump_mgr_setup.Hdump_db_file_init(this);
- return enabled;
- }
-}
diff --git a/400_xowa/src/gplx/xowa/hdumps/Xodb_hdump_mgr__save_tst.java b/400_xowa/src/gplx/xowa/hdumps/Xodb_hdump_mgr__save_tst.java
deleted file mode 100644
index 425d17491..000000000
--- a/400_xowa/src/gplx/xowa/hdumps/Xodb_hdump_mgr__save_tst.java
+++ /dev/null
@@ -1,150 +0,0 @@
-/*
-XOWA: the XOWA Offline Wiki Application
-Copyright (C) 2012 gnosygnu@gmail.com
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU Affero General Public License as
-published by the Free Software Foundation, either version 3 of the
-License, or (at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU Affero General Public License for more details.
-
-You should have received a copy of the GNU Affero General Public License
-along with this program. If not, see .
-*/
-package gplx.xowa.hdumps; import gplx.*; import gplx.xowa.*;
-import org.junit.*; import gplx.dbs.*; import gplx.xowa.files.*; import gplx.xowa.parsers.lnkis.redlinks.*;
-import gplx.xowa.hdumps.core.*; import gplx.xowa.hdumps.dbs.*; import gplx.xowa.hdumps.saves.*; import gplx.xowa.hdumps.loads.*; import gplx.xowa.hdumps.pages.*;
-public class Xodb_hdump_mgr__save_tst {
- @Before public void init() {fxt.Clear();} private Xodb_hdump_mgr__save_fxt fxt = new Xodb_hdump_mgr__save_fxt();
-// @Test public void Body() {
-// fxt.Test_save("abc", fxt.Make_row_body(0, "abc"));
-// }
-// @Test public void Img() {
-// fxt.Test_save("a[[File:A.png|test_caption]]b[[File:B.png|test_caption]]"
-// , fxt.Make_row_body(2, "a
b
")
-// , fxt.Make_row_img
-// ( fxt.Make_xfer("A.png", 0, 0, 0, Bool_.Y, Xof_ext_.Id_png)
-// , fxt.Make_xfer("B.png", 1, 0, 0, Bool_.Y, Xof_ext_.Id_png)
-// )
-// );
-// }
- @Test public void Display_title() {
- fxt.Test_write("{{DISPLAYTITLE:A}}bcd", String_.Concat_lines_nl_skip_last
- ( "0|0"
- , "n|n|n|n|"
- , "A"
- , "bcd"
- ));
- }
- @Test public void Content_sub() {
- fxt.Test_write("{{#isin:A}}bcd", String_.Concat_lines_nl_skip_last
- ( "0|0"
- , "n|n|n|n|"
- , "A"
- , "bcd"
- ));
- }
- @Test public void Sidebar_div() {
- fxt.Test_write("{{#related:A}}bcd", String_.Concat_lines_nl_skip_last
- ( "0|0"
- , "n|n|n|n|"
- , "
"
- , "bcd"
- ));
- }
-// @Test public void Redlink() {
-// fxt.Init_redlinks(1);
-// fxt.Test_save("[[A]] [[B]]"
-// , fxt.Make_row_body(0, "A B")
-// , fxt.Make_row_redlink(1)
-// );
-// }
-}
-class Xodb_hdump_mgr__save_fxt extends Xodb_hdump_mgr__base_fxt {
- private int page_id = 0;
- private Bry_bfr tmp_bfr = Bry_bfr.reset_(255);
- private ListAdp expd_rows = ListAdp_.new_();
- @Override public void Clear_end() {
- hdump_mgr.Tbl_mem_();
- hdump_mgr.Text_tbl().Conn_(Xodb_wiki_page_html_tbl_mem.Null_provider);
- init_redlinks = null;
- }
- public void Init_redlinks(int... uids) {
- this.init_redlinks = uids;
- page.Redlink_lnki_list().Clear();
- } private int[] init_redlinks;
- public Xodb_wiki_page_html_row Make_row_body(int imgs_count, String body) {
- page.Hdump_data().Body_(Bry_.new_utf8_(body));
- page.Hdump_data().Data_count_imgs_(imgs_count);
- Hdump_page_body_srl.Save(tmp_bfr, page);
- return new Xodb_wiki_page_html_row(page_id, Xodb_wiki_page_html_row.Tid_page, tmp_bfr.Xto_bry_and_clear());
- }
- public Xodb_wiki_page_html_row Make_row_img(Hdump_data_img__base... itms) {
- ListAdp tmp_list = ListAdp_.new_();
- tmp_list.AddMany((Object[])itms);
- byte[] imgs_bry = Hdump_save_mgr.Write_imgs(tmp_bfr, tmp_list);
- return new Xodb_wiki_page_html_row(page_id, Xodb_wiki_page_html_row.Tid_data, imgs_bry);
- }
- public Xodb_wiki_page_html_row Make_row_redlink(int... uids) {
- Xopg_redlink_idx_list redlink_mgr = new Xopg_redlink_idx_list();
- for (int uid : uids)
- redlink_mgr.Add(uid);
- byte[] redlinks_bry = Hdump_save_mgr.Write_redlinks(tmp_bfr, redlink_mgr);
- return new Xodb_wiki_page_html_row(page_id, Hdump_data_tid.Tid_redlink, redlinks_bry);
- }
- @Override public void Exec_write(String raw) {
- super.Exec_write(raw);
- if (init_redlinks != null) {
- Xopg_redlink_idx_list redlink_mgr = page.Hdump_data().Redlink_mgr();
- int len = init_redlinks.length;
- for (int i = 0; i < len; ++i) {
- redlink_mgr.Add(init_redlinks[i]);
- }
- }
- }
- public void Test_write(String raw, String expd) {
- this.Exec_write(raw);
- Hdump_page_body_srl.Save(tmp_bfr, page);
- Tfds.Eq(expd, tmp_bfr.Xto_str_and_clear());
- }
- public void Test_save(String raw, Xodb_wiki_page_html_row... expd) {
- this.Exec_write(raw);
- hdump_mgr.Save_mgr().Update(page);
- hdump_mgr.Text_tbl().Select_by_page(expd_rows, 0);
- Xodb_wiki_page_html_row[] actl = (Xodb_wiki_page_html_row[])expd_rows.Xto_ary_and_clear(Xodb_wiki_page_html_row.class);
- Tfds.Eq_ary_str(Xto_str_ary(tmp_bfr, expd), Xto_str_ary(tmp_bfr, actl));
- }
- private static String[] Xto_str_ary(Bry_bfr bfr, Xodb_wiki_page_html_row[] ary) {
- int len = ary.length;
- String[] rv = new String[len];
- for (int i = 0; i < len; ++i) {
- Xodb_wiki_page_html_row itm = ary[i];
- bfr .Add_int_variable(itm.Page_id())
- .Add_byte_pipe().Add_int_variable(itm.Tid())
- .Add_byte_pipe().Add(itm.Data())
- ;
- rv[i] = bfr.Xto_str_and_clear();
- }
- return rv;
- }
-}
-class Hdump_text_row_img {
- public Hdump_text_row_img(int uid, int img_w, int img_h, byte[] lnki_ttl, byte[] img_src_rel) {this.uid = uid; this.img_w = img_w; this.img_h = img_h; this.lnki_ttl = lnki_ttl; this.img_src_rel = img_src_rel;}
- public int Uid() {return uid;} private int uid;
- public int Img_w() {return img_w;} private int img_w;
- public int Img_h() {return img_h;} private int img_h;
- public byte[] Lnki_ttl() {return lnki_ttl;} private byte[] lnki_ttl;
- public byte[] Img_src_rel() {return img_src_rel;} private byte[] img_src_rel;
- // return new Xodb_wiki_page_html_row(page_id, Xodb_wiki_page_html_row.Tid_img, 0, Hdump_save_mgr.Write_img(bfr, uid, img_w, img_h, Bry_.new_utf8_(lnki_ttl), Bry_.new_utf8_(img_src_rel)))
-}
diff --git a/400_xowa/src/gplx/xowa/hdumps/Xodb_hdump_mgr_setup.java b/400_xowa/src/gplx/xowa/hdumps/Xodb_hdump_mgr_setup.java
deleted file mode 100644
index 1f018ccd4..000000000
--- a/400_xowa/src/gplx/xowa/hdumps/Xodb_hdump_mgr_setup.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
-XOWA: the XOWA Offline Wiki Application
-Copyright (C) 2012 gnosygnu@gmail.com
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU Affero General Public License as
-published by the Free Software Foundation, either version 3 of the
-License, or (at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU Affero General Public License for more details.
-
-You should have received a copy of the GNU Affero General Public License
-along with this program. If not, see .
-*/
-package gplx.xowa.hdumps; import gplx.*; import gplx.xowa.*;
-import gplx.dbs.*; import gplx.dbs.engines.sqlite.*; import gplx.xowa.dbs.*; import gplx.xowa.dbs.tbls.*; import gplx.xowa.hdumps.dbs.*;
-public class Xodb_hdump_mgr_setup {
- public static Xodb_file Hdump_db_file_init(Xodb_hdump_mgr hdump_mgr) {
- Xowe_wiki wiki = hdump_mgr.Wiki();
- Xodb_mgr_sql db_mgr_as_sql = wiki.Db_mgr_as_sql();
- Xodb_file rv = db_mgr_as_sql.Fsys_mgr().Get_tid_root(Xodb_file_tid.Tid_html);
- if (rv == null) rv = Setup(db_mgr_as_sql);
- hdump_mgr.Text_tbl().Conn_(rv.Conn());
- return rv;
- }
- private static Xodb_file Setup(Xodb_mgr_sql db_mgr) {
- Xodb_fsys_mgr fsys_mgr = db_mgr.Fsys_mgr();
- Assert_col__page_html_db_id(fsys_mgr.Conn_core(), db_mgr.Tbl_xowa_cfg());
- Xodb_file html_db_file = Create_db(db_mgr, fsys_mgr);
- Create_idx(html_db_file);
- return html_db_file;
- }
- public static void Assert_col__page_html_db_id(Db_conn core_provider, Xodb_xowa_cfg_tbl cfg_tbl) {
- String val = cfg_tbl.Select_val_or(Xodb_fsys_mgr.Cfg_grp_db_meta, Cfg_itm_html_db_exists, "n");
- if (String_.Eq(val, "y")) return;
- try {
- core_provider.Exec_sql(Sql_ddl__page_html_db_id);
- cfg_tbl.Insert_str(Xodb_fsys_mgr.Cfg_grp_db_meta, Cfg_itm_html_db_exists, "y");
- cfg_tbl.Conn().Txn_mgr().Txn_end_all_bgn_if_none();
- } catch (Exception e) {Gfo_usr_dlg_._.Warn_many("", "", "failed to update core: db=~{0} err=~{1}", core_provider.Url().Xto_raw(), Err_.Message_gplx(e));}
- }
- private static Xodb_file Create_db(Xodb_mgr_sql db_mgr, Xodb_fsys_mgr fsys_mgr) {
- Xodb_file html_db_file = fsys_mgr.Make(Xodb_file_tid.Tid_html);
- html_db_file.Conn().Exec_sql(Xodb_wiki_page_html_tbl.Tbl_sql);
- db_mgr.Tbl_xowa_db().Commit_all(db_mgr.Fsys_mgr().Files_ary());
- return html_db_file;
- }
- private static void Create_idx(Xodb_file html_db_file) {
- Sqlite_engine_.Idx_create(html_db_file.Conn(), Xodb_wiki_page_html_tbl.Idx_core);
- }
- private static final String Cfg_itm_html_db_exists = "html_db.exists";
- public static final String
- Sql_ddl__page_html_db_id = "ALTER TABLE page ADD COLUMN page_html_db_id integer NOT NULL DEFAULT '-1'"
- ;
-}
diff --git a/400_xowa/src/gplx/xowa/hdumps/Xodbv_dbs_tbl.java b/400_xowa/src/gplx/xowa/hdumps/Xodbv_dbs_tbl.java
deleted file mode 100644
index 0564d6c1d..000000000
--- a/400_xowa/src/gplx/xowa/hdumps/Xodbv_dbs_tbl.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
-XOWA: the XOWA Offline Wiki Application
-Copyright (C) 2012 gnosygnu@gmail.com
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU Affero General Public License as
-published by the Free Software Foundation, either version 3 of the
-License, or (at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU Affero General Public License for more details.
-
-You should have received a copy of the GNU Affero General Public License
-along with this program. If not, see .
-*/
-package gplx.xowa.hdumps; import gplx.*; import gplx.xowa.*;
-import gplx.dbs.*; import gplx.dbs.qrys.*; import gplx.xowa.dbs.*;
-public class Xodbv_dbs_tbl {
- public static final String Tbl_name = "xowa_db", Fld_db_id = "db_id", Fld_db_type = "db_type", Fld_db_url = "db_url";
- private static final String[] Flds__all = new String[] {Fld_db_id, Fld_db_type, Fld_db_url};
- public Xodb_file[] Select_all(Db_conn conn, Io_url wiki_root_dir) {
- Db_rdr rdr = Db_rdr_.Null;
- ListAdp list = ListAdp_.new_();
- try {
- Db_qry__select_in_tbl qry = Db_qry__select_in_tbl.new_(Tbl_name, Db_qry__select_in_tbl.Where_flds__all, Flds__all).Order_by_sql_(Fld_db_id);
- Db_stmt stmt = Db_stmt_.new_select_as_rdr(conn, qry);
- rdr = stmt.Exec_select_as_rdr();
- while (rdr.Move_next()) {
- Xodb_file db = Xodb_file.load_(rdr.Read_int(0), rdr.Read_byte(1), rdr.Read_str(2));
- db.Url_(wiki_root_dir.GenSubFil(db.Url_rel()));
- list.Add(db);
- }
- } finally {rdr.Rls();}
- Xodb_file[] rv = (Xodb_file[])list.Xto_ary(Xodb_file.class);
- Chk_sequential(rv);
- return rv;
- }
- private void Chk_sequential(Xodb_file[] ary) {
- int len = ary.length;
- int expd_id = 0;
- for (int i = 0; i < len; i++) {
- Xodb_file itm = ary[i];
- int actl_id = itm.Id();
- if (expd_id != actl_id) throw Err_.new_fmt_("database ids are not sequential; expd={0} actl={1}", expd_id, actl_id);
- ++expd_id;
- }
- }
- //Db_stmt_bldr stmt_bldr = new Db_stmt_bldr(Tbl_name, String_.Ary(Fld_db_id), Fld_db_type, Fld_db_url);
-}
diff --git a/400_xowa/src/gplx/xowa/hdumps/Xowd_hdump_mgr.java b/400_xowa/src/gplx/xowa/hdumps/Xowd_hdump_mgr.java
deleted file mode 100644
index f32764593..000000000
--- a/400_xowa/src/gplx/xowa/hdumps/Xowd_hdump_mgr.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
-XOWA: the XOWA Offline Wiki Application
-Copyright (C) 2012 gnosygnu@gmail.com
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU Affero General Public License as
-published by the Free Software Foundation, either version 3 of the
-License, or (at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU Affero General Public License for more details.
-
-You should have received a copy of the GNU Affero General Public License
-along with this program. If not, see .
-*/
-package gplx.xowa.hdumps; import gplx.*; import gplx.xowa.*;
-import gplx.intl.*; import gplx.dbs.*; import gplx.xowa.html.hzips.*;
-import gplx.xowa.hdumps.core.*; import gplx.xowa.hdumps.loads.*; import gplx.xowa.hdumps.htmls.*; import gplx.xowa.apps.fsys.*;
-import gplx.xowa2.apps.*; import gplx.xowa2.wikis.*; import gplx.xowa2.wikis.data.*; import gplx.xowa2.gui.*;
-public class Xowd_hdump_mgr {
- private final Xoav_app app; private final Xowv_wiki wiki; private final Xowd_data_mgr wiki_db_mgr;
- private Xodb_page dbpg = new Xodb_page();
- private Hdump_load_mgr load_mgr = new Hdump_load_mgr();
- private Hdump_html_body html_body = new Hdump_html_body();
- public Xowd_hdump_mgr(Xoav_app app, Xowv_wiki wiki) {
- this.app = app; this.wiki = wiki; this.wiki_db_mgr = wiki.Db_mgr();
- html_body.Init_by_app(app.Usr_dlg(), app.Fsys_mgr(), app.Utl_encoder_fsys());
- }
- public void Get_by_ttl(Xog_page rv, Gfo_url url, Xoa_ttl ttl) {
- wiki_db_mgr.Tbl__page().Select_by_ttl(dbpg, ttl.Ns(), ttl.Page_db());
- if (dbpg.Redirect_id() != -1) Select_by_id(rv, dbpg);
- if (dbpg.Html_db_id() == -1) return; // should return "not found" message
- load_mgr.Load2(rv, Db_conn_pool.I.Get_or_new(wiki_db_mgr.Url_by_idx(dbpg.Html_db_id())), dbpg.Id(), ttl);
- Bry_bfr bfr = app.Utl_bfr_mkr().Get_m001();
- html_body.Init_by_page(wiki.Domain_bry(), rv).Write(bfr);
- wiki.Hzip_mgr().Load(bfr, ttl.Page_db(), bfr.Xto_bry_and_clear());
- rv.Page_body_(bfr.Mkr_rls().Xto_bry_and_clear());
- }
- private void Select_by_id(Xog_page hpg, Xodb_page dbpg) {
- int redirect_count = 0;
- while (redirect_count < 5) {
- int redirect_id = dbpg.Redirect_id();
- wiki_db_mgr.Tbl__page().Select_by_id(dbpg, redirect_id);
- if (redirect_id == -1) break;
- }
- }
-}
diff --git a/400_xowa/src/gplx/xowa/hdumps/core/Hdump_data_img__base.java b/400_xowa/src/gplx/xowa/hdumps/core/Hdump_data_img__base.java
deleted file mode 100644
index 0412331e3..000000000
--- a/400_xowa/src/gplx/xowa/hdumps/core/Hdump_data_img__base.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
-XOWA: the XOWA Offline Wiki Application
-Copyright (C) 2012 gnosygnu@gmail.com
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU Affero General Public License as
-published by the Free Software Foundation, either version 3 of the
-License, or (at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU Affero General Public License for more details.
-
-You should have received a copy of the GNU Affero General Public License
-along with this program. If not, see .
-*/
-package gplx.xowa.hdumps.core; import gplx.*; import gplx.xowa.*; import gplx.xowa.hdumps.*;
-import gplx.xowa.hdumps.dbs.*; import gplx.xowa.files.repos.*;
-public abstract class Hdump_data_img__base implements Hdump_data_itm {
- public Hdump_data_img__base Init_by_base(byte[] lnki_ttl, int html_uid, int html_w, int html_h, int file_repo_id, int file_ext_id, boolean file_is_orig, int file_w, double file_time, int file_page) {
- this.lnki_ttl = lnki_ttl;
- this.html_uid = html_uid;
- this.html_w = html_w;
- this.html_h = html_h;
- this.file_repo_id = file_repo_id;
- this.file_ext_id = file_ext_id;
- this.file_is_orig = file_is_orig;
- this.file_w = file_w;
- this.file_time = file_time;
- this.file_page = file_page;
- return this;
- }
- public int Data_tid() {return Hdump_data_tid.Tid_img;}
- public abstract int Img_tid();
- public byte[] Lnki_ttl() {return lnki_ttl;} private byte[] lnki_ttl;
- public int Html_uid() {return html_uid;} private int html_uid;
- public int Html_w() {return html_w;} private int html_w;
- public int Html_h() {return html_h;} private int html_h;
- public int File_repo_id() {return file_repo_id;} private int file_repo_id;
- public int File_ext_id() {return file_ext_id;} private int file_ext_id;
- public boolean File_is_orig() {return file_is_orig;} private boolean file_is_orig;
- public int File_w() {return file_w;} private int file_w;
- public double File_time() {return file_time;} private double file_time;
- public int File_page() {return file_page;} private int file_page;
- public Io_url File_url() {return file_url;} public void File_url_(Io_url v) {file_url = v;} private Io_url file_url;
- public String Data_print() {
- return String_.Concat_with_str("|", Int_.Xto_str(this.Img_tid()), String_.new_utf8_(lnki_ttl), Int_.Xto_str(html_uid), Int_.Xto_str(html_w), Int_.Xto_str(html_h)
- , Int_.Xto_str(file_repo_id), Int_.Xto_str(file_ext_id), Yn.Xto_str(file_is_orig), Int_.Xto_str(file_w), Double_.Xto_str(file_time), Int_.Xto_str(file_page)
- );
- }
- public void Data_write(Bry_bfr bfr) {
- Data_write_static(bfr, this.Img_tid(), lnki_ttl, html_uid, html_w, html_h, file_repo_id, file_ext_id, file_is_orig, file_w, file_time, file_page);
- Data_write_hook(bfr);
- bfr.Add_byte_nl();
- }
- public static void Data_write_static(Bry_bfr bfr, int img_tid, byte[] lnki_ttl, int html_uid, int html_w, int html_h, int file_repo_id, int file_ext_id, boolean file_is_orig, int file_w, double file_time, int file_page) {
- bfr .Add_int_variable(Hdump_data_tid.Tid_img).Add_byte_pipe()
- .Add_int_variable(img_tid).Add_byte_pipe()
- .Add(lnki_ttl).Add_byte_pipe()
- .Add_int_variable(html_uid).Add_byte_pipe()
- .Add_int_variable(html_w).Add_byte_pipe()
- .Add_int_variable(html_h).Add_byte_pipe()
- .Add_int_variable(file_repo_id).Add_byte_pipe()
- .Add_int_variable(file_ext_id).Add_byte_pipe()
- .Add_yn(file_is_orig).Add_byte_pipe()
- .Add_int_variable(file_w).Add_byte_pipe()
- .Add_double(file_time).Add_byte_pipe()
- .Add_int_variable(file_page).Add_byte_pipe()
- ;
- }
- @gplx.Virtual public void Data_write_hook(Bry_bfr bfr) {}
- public static final Hdump_data_img__base[] Ary_empty = new Hdump_data_img__base[0];
- public static final int Tid_basic = 0, Tid_gallery = 1;
- @Override public String toString() {return this.Data_print();} // TEST
- public static final int File_repo_id_commons = Xof_repo_itm.Repo_remote, File_repo_id_local = Xof_repo_itm.Repo_local, File_repo_id_null = Xof_repo_itm.Repo_null;
-}
diff --git a/400_xowa/src/gplx/xowa/hdumps/dbs/Xodb_wiki_page_html_tbl.java b/400_xowa/src/gplx/xowa/hdumps/dbs/Xodb_wiki_page_html_tbl.java
deleted file mode 100644
index 081a44540..000000000
--- a/400_xowa/src/gplx/xowa/hdumps/dbs/Xodb_wiki_page_html_tbl.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
-XOWA: the XOWA Offline Wiki Application
-Copyright (C) 2012 gnosygnu@gmail.com
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU Affero General Public License as
-published by the Free Software Foundation, either version 3 of the
-License, or (at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU Affero General Public License for more details.
-
-You should have received a copy of the GNU Affero General Public License
-along with this program. If not, see .
-*/
-package gplx.xowa.hdumps.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.hdumps.*;
-import gplx.ios.*; import gplx.dbs.*; import gplx.dbs.qrys.*; import gplx.xowa.dbs.*;
-public class Xodb_wiki_page_html_tbl {
- private Io_stream_zip_mgr zip_mgr = new Io_stream_zip_mgr();
- private Db_stmt stmt_select, stmt_insert, stmt_delete;
- public void Init_by_wiki(Xowe_wiki wiki) {
- this.zip_mgr = wiki.Appe().Zip_mgr();
- }
- public byte Zip_tid() {return zip_tid;} public void Zip_tid_(byte v) {zip_tid = v;} private byte zip_tid = Io_stream_.Tid_gzip;
- public Db_conn Conn() {return conn;} public Xodb_wiki_page_html_tbl Conn_(Db_conn v) {this.Rls_all(); conn = v; return this;} private Db_conn conn;
- @gplx.Virtual public int Insert(int page_id, int tid, byte[] data) {
- if (stmt_insert == null) stmt_insert = Db_stmt_.new_insert_(conn, Tbl_name, Flds__all);
- try {
- data = zip_mgr.Zip(zip_tid, data);
- stmt_insert.Clear().Val_int(page_id).Val_int(tid).Val_bry(data).Exec_insert();
- return data.length;
- }
- catch (Exception exc) {stmt_insert = null; throw Err_.err_(exc, "stmt failed");} // must reset stmt, else next call will fail
- }
- @gplx.Virtual public void Delete(int page_id) {
- if (stmt_delete == null) stmt_delete = Db_stmt_.new_delete_(conn, Tbl_name, Fld_page_id);
- try {stmt_delete.Clear().Val_int(page_id).Exec_delete();}
- catch (Exception exc) {stmt_delete = null; throw Err_.err_(exc, "stmt failed");} // must reset stmt, else next call will fail
- }
- @gplx.Virtual public void Select_by_page(ListAdp rv, int page_id) {
- if (stmt_select == null) stmt_select = Db_stmt_.new_select_as_rdr(conn, Db_qry__select_in_tbl.new_(Tbl_name, String_.Ary(Fld_page_id), Flds__all));
- try {
- Db_rdr rdr = stmt_select.Clear().Val_int(page_id).Exec_select_as_rdr();
- while (rdr.Move_next()) {
- Xodb_wiki_page_html_row row = new Xodb_wiki_page_html_row
- ( rdr.Read_int(0)
- , rdr.Read_int(1)
- , zip_mgr.Unzip(zip_tid, rdr.Read_bry(2))
- );
- rv.Add(row);
- }
- rdr.Rls();
- }
- catch (Exception exc) {stmt_select = null; throw Err_.err_(exc, "stmt failed");} // must reset stmt, else next call will fail
- }
- public void Rls_all() {
- if (stmt_select != null) {stmt_select.Rls(); stmt_select = null;}
- if (stmt_insert != null) {stmt_insert.Rls(); stmt_insert = null;}
- if (stmt_delete != null) {stmt_delete.Rls(); stmt_delete = null;}
- conn = null;
- }
- public static final String Tbl_name = "wiki_page_html", Fld_page_id = "page_id", Fld_html_tid = "html_tid", Fld_html_data = "html_data";
- private static final String[] Flds__all = new String[] {Fld_page_id, Fld_html_tid, Fld_html_data};
- public static final String Tbl_sql = String_.Concat_lines_nl
- ( "CREATE TABLE IF NOT EXISTS wiki_page_html"
- , "( page_id integer NOT NULL"
- , ", html_tid integer NOT NULL"
- , ", html_data blob NOT NULL"
- , ");"
- );
- public static final Db_idx_itm
- Idx_core = Db_idx_itm.sql_("CREATE UNIQUE INDEX IF NOT EXISTS wiki_page_html__core ON wiki_page_html (page_id, html_tid);")
- ;
-}
diff --git a/400_xowa/src/gplx/xowa/hdumps/dbs/Xodb_wiki_page_html_tbl_mem.java b/400_xowa/src/gplx/xowa/hdumps/dbs/Xodb_wiki_page_html_tbl_mem.java
deleted file mode 100644
index c7fc91fa3..000000000
--- a/400_xowa/src/gplx/xowa/hdumps/dbs/Xodb_wiki_page_html_tbl_mem.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
-XOWA: the XOWA Offline Wiki Application
-Copyright (C) 2012 gnosygnu@gmail.com
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU Affero General Public License as
-published by the Free Software Foundation, either version 3 of the
-License, or (at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU Affero General Public License for more details.
-
-You should have received a copy of the GNU Affero General Public License
-along with this program. If not, see .
-*/
-package gplx.xowa.hdumps.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.hdumps.*;
-import gplx.dbs.*;
-public class Xodb_wiki_page_html_tbl_mem extends Xodb_wiki_page_html_tbl { private HashAdp pages = HashAdp_.new_();
- @Override public int Insert(int page_id, int tid, byte[] data) {
- Xodb_wiki_page_html_row row = new Xodb_wiki_page_html_row(page_id, tid, data);
- ListAdp rows = Get_or_new(pages, page_id);
- rows.Add(row);
- return data.length;
- }
- @Override public void Select_by_page(ListAdp rv, int page_id) {
- ListAdp rows = Get_or_new(pages, page_id);
- int len = rows.Count();
- for (int i = 0; i < len; ++i) {
- Xodb_wiki_page_html_row row = (Xodb_wiki_page_html_row)rows.FetchAt(i);
- rv.Add(row);
- }
- }
- @Override public void Delete(int page_id) {pages.Del(page_id);}
- private static ListAdp Get_or_new(HashAdp pages, int page_id) {
- ListAdp rv = (ListAdp)pages.Fetch(page_id);
- if (rv == null) {
- rv = ListAdp_.new_();
- pages.Add(page_id, rv);
- }
- return rv;
- }
- public static final Db_conn Null_provider = null;
-}
diff --git a/400_xowa/src/gplx/xowa/hdumps/loads/Hdump_load_mgr.java b/400_xowa/src/gplx/xowa/hdumps/loads/Hdump_load_mgr.java
deleted file mode 100644
index a3ac7094a..000000000
--- a/400_xowa/src/gplx/xowa/hdumps/loads/Hdump_load_mgr.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
-XOWA: the XOWA Offline Wiki Application
-Copyright (C) 2012 gnosygnu@gmail.com
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU Affero General Public License as
-published by the Free Software Foundation, either version 3 of the
-License, or (at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU Affero General Public License for more details.
-
-You should have received a copy of the GNU Affero General Public License
-along with this program. If not, see .
-*/
-package gplx.xowa.hdumps.loads; import gplx.*; import gplx.xowa.*; import gplx.xowa.hdumps.*;
-import gplx.core.brys.*; import gplx.core.btries.*; import gplx.dbs.*; import gplx.ios.*;
-import gplx.xowa.dbs.*; import gplx.xowa.pages.*; import gplx.xowa.hdumps.core.*; import gplx.xowa.hdumps.dbs.*; import gplx.xowa.hdumps.pages.*; import gplx.xowa.pages.skins.*; import gplx.xowa.hdumps.srls.*;
-import gplx.xowa2.gui.*;
-public class Hdump_load_mgr {
- private Xodb_wiki_page_html_tbl text_tbl = new Xodb_wiki_page_html_tbl(); private Bry_rdr rdr = new Bry_rdr();
- private ListAdp tmp_rows = ListAdp_.new_(), img_itms = ListAdp_.new_();
- public Hdump_load_mgr() {}
- public void Zip_tid_(byte v) {text_tbl.Zip_tid_(v);}
- public void Load2(Xog_page hpg, Db_conn conn, int page_id, Xoa_ttl page_ttl) {
- text_tbl.Conn_(conn).Select_by_page(tmp_rows, page_id);
- Load_rows(hpg, page_id, Xoa_url.blank_(), page_ttl, tmp_rows);
- }
- public void Load(Xog_page hpg, Xodb_fsys_mgr db_fsys_mgr, int html_db_id, int page_id, Xoa_ttl page_ttl) {
- Db_conn conn = db_fsys_mgr.Get_by_idx(html_db_id).Conn();
- text_tbl.Conn_(conn).Select_by_page(tmp_rows, page_id);
- Load_rows(hpg, page_id, hpg.Page_url(), page_ttl, tmp_rows);
- }
- public void Load_rows(Xog_page hpg, int page_id, Xoa_url page_url, Xoa_ttl page_ttl, ListAdp rows) {
- hpg.Init(page_id, page_url, page_ttl);
- img_itms.Clear();
- int len = rows.Count();
- for (int i = 0; i < len; ++i) {
- Xodb_wiki_page_html_row row = (Xodb_wiki_page_html_row)rows.FetchAt(i);
- switch (row.Tid()) {
- case Xodb_wiki_page_html_row.Tid_page: srl_mgr.Load(hpg, row.Data()); break;
- case Xodb_wiki_page_html_row.Tid_data: Load_data(hpg, row); break;
- }
- }
- rows.Clear();
- } private Hpg_srl_mgr srl_mgr = Hpg_srl_mgr._i_;
- public void Load_data(Xog_page hpg, Xodb_wiki_page_html_row row) {
- rdr.Src_(row.Data());
- while (!rdr.Pos_is_eos()) {
- int tid = rdr.Read_int_to_pipe();
- switch (tid) {
- case Hdump_data_tid.Tid_img : Load_data_img(); break; // 1|0|A.png|0|220|110|...
- case Hdump_data_tid.Tid_gallery : Load_data_gallery(hpg); break; // 3|0|800
- case Hdump_data_tid.Tid_redlink : Load_data_redlink(hpg); break; // 2|2|0|1
- }
- }
- if (img_itms.Count() > 0) hpg.Img_itms_((Hdump_data_img__base[])img_itms.Xto_ary_and_clear(Hdump_data_img__base.class));
- }
- private void Load_data_img() {
- int tid = rdr.Read_int_to_pipe();
- byte[] lnki_ttl = rdr.Read_bry_to_pipe();
- int html_uid = rdr.Read_int_to_pipe();
- int html_w = rdr.Read_int_to_pipe();
- int html_h = rdr.Read_int_to_pipe();
- int file_repo_id = rdr.Read_int_to_pipe();
- int file_ext_id = rdr.Read_int_to_pipe();
- boolean file_is_orig = rdr.Read_yn_to_pipe();
- int file_w = rdr.Read_int_to_pipe();
- double file_time = rdr.Read_double_to_pipe();
- int file_page = rdr.Read_int_to_pipe();
- Hdump_data_img__base img_itm = null;
- switch (tid) {
- case Hdump_data_img__base.Tid_basic : img_itm = new Hdump_data_img__basic(); break;
- case Hdump_data_img__base.Tid_gallery : img_itm = new Hdump_data_img__gallery().Init_by_gallery(rdr.Read_int_to_pipe(), rdr.Read_int_to_pipe(), rdr.Read_int_to_pipe()); break;
- }
- img_itm.Init_by_base(lnki_ttl, html_uid, html_w, html_h, file_repo_id, file_ext_id, file_is_orig, file_w, file_time, file_page);
- rdr.Pos_add_one();
- img_itms.Add(img_itm);
- }
- public void Load_data_redlink(Xog_page hpg) {
- int len = rdr.Read_int_to_pipe();
- int[] redlink_uids = new int[len];
- for (int i = 0; i < len; ++i)
- redlink_uids[i] = rdr.Read_int_to_pipe();
- hpg.Redlink_uids_(redlink_uids);
- }
- public void Load_data_gallery(Xog_page hpg) {
- int uid = rdr.Read_int_to_pipe();
- int box_max = rdr.Read_int_to_pipe();
- hpg.Gly_itms().Add(uid, new Hdump_data_gallery(uid, box_max));
- }
-}
diff --git a/400_xowa/src/gplx/xowa/hdumps/loads/Hdump_load_mgr_tst.java b/400_xowa/src/gplx/xowa/hdumps/loads/Hdump_load_mgr_tst.java
deleted file mode 100644
index e5ca39877..000000000
--- a/400_xowa/src/gplx/xowa/hdumps/loads/Hdump_load_mgr_tst.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
-XOWA: the XOWA Offline Wiki Application
-Copyright (C) 2012 gnosygnu@gmail.com
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU Affero General Public License as
-published by the Free Software Foundation, either version 3 of the
-License, or (at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU Affero General Public License for more details.
-
-You should have received a copy of the GNU Affero General Public License
-along with this program. If not, see .
-*/
-package gplx.xowa.hdumps.loads; import gplx.*; import gplx.xowa.*; import gplx.xowa.hdumps.*;
-import org.junit.*; import gplx.xowa.files.*; import gplx.xowa.hdumps.dbs.*; import gplx.xowa.hdumps.core.*; import gplx.xowa.hdumps.saves.*; import gplx.xowa.hdumps.pages.*; import gplx.xowa.dbs.*;
-import gplx.xowa2.gui.*;
-public class Hdump_load_mgr_tst {
- @Before public void init() {fxt.Clear();} private Hdump_load_mgr_fxt fxt = new Hdump_load_mgr_fxt();
-// @Test public void Body() {
-// fxt.Init_row_body("