mirror of
https://github.com/gnosygnu/xowa.git
synced 2026-03-02 03:49:30 +00:00
'v3.6.3.1'
This commit is contained in:
@@ -16,12 +16,12 @@ You should have received a copy of the GNU Affero General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package gplx.fsdb.meta; import gplx.*; import gplx.fsdb.*;
|
||||
import gplx.core.primitives.*; import gplx.core.caches.*; import gplx.core.ios.*;
|
||||
import gplx.core.primitives.*; import gplx.core.caches.*; import gplx.core.ios.*; import gplx.core.ios.streams.*;
|
||||
import gplx.dbs.*; import gplx.dbs.engines.sqlite.*; import gplx.fsdb.data.*;
|
||||
public class Fsm_atr_fil {
|
||||
private final Fsm_mnt_itm mnt_itm; private final int mnt_id;
|
||||
private final Fsm_mnt_itm mnt_itm; private final int mnt_id;
|
||||
private Fsd_dir_tbl tbl_dir; private Fsd_fil_tbl tbl_fil; private Fsd_thm_tbl tbl_thm;
|
||||
private final Gfo_cache_mgr_bry dir_cache = new Gfo_cache_mgr_bry(); private Gfo_cache_mgr_bry fil_cache; private Bry_bfr fil_cache_key_bfr;
|
||||
private final Gfo_cache_mgr_bry dir_cache = new Gfo_cache_mgr_bry(); private Gfo_cache_mgr_bry fil_cache; private Bry_bfr fil_cache_key_bfr;
|
||||
public Fsm_atr_fil(Fsm_mnt_itm mnt_itm, int id, String url_rel, Db_conn conn, boolean schema_is_1, boolean schema_thm_page) {
|
||||
this.mnt_itm = mnt_itm; this.mnt_id = mnt_itm.Id();
|
||||
this.id = id; this.url_rel = url_rel; this.conn = conn;
|
||||
@@ -29,9 +29,9 @@ public class Fsm_atr_fil {
|
||||
this.tbl_fil = new Fsd_fil_tbl(conn, schema_is_1, mnt_id);
|
||||
this.tbl_thm = new Fsd_thm_tbl(conn, schema_is_1, mnt_id, schema_thm_page);
|
||||
}
|
||||
public int Id() {return id;} private final int id;
|
||||
public String Url_rel() {return url_rel;} private final String url_rel;
|
||||
public Db_conn Conn() {return conn;} private final Db_conn conn;
|
||||
public int Id() {return id;} private final int id;
|
||||
public String Url_rel() {return url_rel;} private final String url_rel;
|
||||
public Db_conn Conn() {return conn;} private final Db_conn conn;
|
||||
public Fsd_fil_itm Select_fil_or_null(byte[] dir, byte[] fil) {
|
||||
int dir_id = Get_dir_id_or_neg1(dir);
|
||||
return dir_id == Int_.Neg1 ? Fsd_fil_itm.Null : tbl_fil.Select_or_null(dir_id, fil);
|
||||
@@ -61,7 +61,7 @@ public class Fsm_atr_fil {
|
||||
}
|
||||
public void Fil_cache_enabled_y_() {
|
||||
fil_cache = new Gfo_cache_mgr_bry();
|
||||
fil_cache_key_bfr = Bry_bfr.reset_(255);
|
||||
fil_cache_key_bfr = Bry_bfr_.Reset(255);
|
||||
tbl_fil.Select_all(fil_cache_key_bfr, fil_cache);
|
||||
}
|
||||
private int Get_dir_id_or_neg1(byte[] dir_bry) {
|
||||
@@ -70,7 +70,7 @@ public class Fsm_atr_fil {
|
||||
Fsd_dir_itm itm = tbl_dir.Select_or_null(dir_bry); // try db
|
||||
if (itm == Fsd_dir_itm.Null) return -1; // not in db
|
||||
int dir_id = itm.Dir_id();
|
||||
dir_cache.Add(dir_bry, Int_obj_ref.new_(dir_id)); // add to mem
|
||||
dir_cache.Add(dir_bry, Int_obj_ref.New(dir_id)); // add to mem
|
||||
return dir_id;
|
||||
}
|
||||
else
|
||||
@@ -81,7 +81,7 @@ public class Fsm_atr_fil {
|
||||
if (rv == -1) {
|
||||
rv = mnt_itm.Next_id();
|
||||
tbl_dir.Insert(rv, dir_bry, Fsd_dir_itm.Owner_root);
|
||||
dir_cache.Add(dir_bry, Int_obj_ref.new_(rv));
|
||||
dir_cache.Add(dir_bry, Int_obj_ref.New(rv));
|
||||
}
|
||||
return rv;
|
||||
}
|
||||
|
||||
@@ -18,9 +18,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
package gplx.fsdb.meta; import gplx.*; import gplx.fsdb.*;
|
||||
import gplx.dbs.*; import gplx.dbs.qrys.*;
|
||||
public class Fsm_atr_tbl {
|
||||
private final String tbl_name; private final Dbmeta_fld_list flds = Dbmeta_fld_list.new_();
|
||||
private final String fld_uid, fld_url;
|
||||
private final Db_conn conn;
|
||||
public final String tbl_name; public final Dbmeta_fld_list flds = new Dbmeta_fld_list();
|
||||
private final String fld_uid, fld_url;
|
||||
private final Db_conn conn;
|
||||
public Fsm_atr_tbl(Db_conn conn, boolean schema_is_1) {
|
||||
this.conn = conn;
|
||||
String fld_prefix = "";
|
||||
|
||||
@@ -16,25 +16,26 @@ You should have received a copy of the GNU Affero General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package gplx.fsdb.meta; import gplx.*; import gplx.fsdb.*;
|
||||
import gplx.core.ios.*; import gplx.dbs.*;
|
||||
import gplx.core.ios.*; import gplx.core.ios.streams.*; import gplx.dbs.*;
|
||||
import gplx.fsdb.data.*;
|
||||
public class Fsm_bin_fil {
|
||||
private final Fsd_bin_tbl tbl;
|
||||
private final Fsd_bin_tbl tbl;
|
||||
public Fsm_bin_fil(boolean schema_is_1, int id, Io_url url, String url_rel, Db_conn conn, long bin_len) {
|
||||
this.id = id; this.url = url; this.url_rel = url_rel; this.conn = conn; this.bin_len = bin_len;
|
||||
this.tbl = new Fsd_bin_tbl(conn, schema_is_1);
|
||||
}
|
||||
public int Id() {return id;} private final int id;
|
||||
public int Id() {return id;} private final int id;
|
||||
public Io_url Url() {return url;} private Io_url url;
|
||||
public String Url_rel() {return url_rel;} private final String url_rel;
|
||||
public String Url_rel() {return url_rel;} private final String url_rel;
|
||||
public long Bin_len() {return bin_len;} public void Bin_len_(long v) {bin_len = v;} private long bin_len;
|
||||
public Db_conn Conn() {return conn;} private final Db_conn conn;
|
||||
public boolean Select_to_url(int id, Io_url url) {return tbl.Select_to_url(id, url);}
|
||||
public Db_conn Conn() {return conn;} private final Db_conn conn;
|
||||
public boolean Select_to_url(int id, Io_url url) {return tbl.Select_to_url(id, url);}
|
||||
public Io_stream_rdr Select_as_rdr(int id) {return tbl.Select_as_rdr(id);}
|
||||
public void Insert(int bin_id, byte owner_tid, long rdr_len, gplx.core.ios.Io_stream_rdr rdr) {
|
||||
public Fsd_bin_itm Select_as_itm(int id) {return tbl.Select_as_itm(id);}
|
||||
public void Insert(int bin_id, byte owner_tid, long rdr_len, gplx.core.ios.streams.Io_stream_rdr rdr) {
|
||||
tbl.Insert_rdr(bin_id, owner_tid, rdr_len, rdr);
|
||||
Bin_len_(bin_len + rdr_len);
|
||||
}
|
||||
public static final Fsm_bin_fil[] Ary_empty = new Fsm_bin_fil[0];
|
||||
public static final Fsm_bin_fil[] Ary_empty = new Fsm_bin_fil[0];
|
||||
public static final long Bin_len_null = 0;
|
||||
}
|
||||
|
||||
@@ -16,45 +16,50 @@ You should have received a copy of the GNU Affero General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package gplx.fsdb.meta; import gplx.*; import gplx.fsdb.*;
|
||||
import gplx.core.ios.*; import gplx.dbs.*;
|
||||
import gplx.core.ios.*; import gplx.core.ios.streams.*; import gplx.dbs.*;
|
||||
public class Fsm_bin_mgr {
|
||||
private final Fsdb_db_mgr core_mgr; private final int mnt_id; private final Fsm_bin_tbl tbl;
|
||||
private Fsm_bin_fil[] dbs__ary = Fsm_bin_fil.Ary_empty; private int dbs__ary_len = 0; private Fsm_bin_fil nth_db;
|
||||
private final Fsdb_db_mgr core_mgr; private final int mnt_id; private final Fsm_bin_tbl tbl;
|
||||
private final Ordered_hash db_hash = Ordered_hash_.New();
|
||||
private Fsm_bin_fil nth_db;
|
||||
public Fsm_bin_mgr(Fsdb_db_mgr core_mgr, Db_conn conn, int mnt_id) {
|
||||
this.core_mgr = core_mgr; this.mnt_id = mnt_id;
|
||||
this.tbl = new Fsm_bin_tbl(conn, core_mgr.File__schema_is_1(), mnt_id);
|
||||
}
|
||||
public void Ctor_by_load() {
|
||||
this.dbs__ary = tbl.Select_all(core_mgr);
|
||||
this.dbs__ary_len = dbs__ary.length;
|
||||
if (dbs__ary_len > 0) this.nth_db = dbs__ary[dbs__ary_len - 1];
|
||||
Fsm_bin_fil[] db_ary = tbl.Select_all(core_mgr);
|
||||
int len = db_ary.length;
|
||||
for (int i = 0; i < len; ++i) {
|
||||
Fsm_bin_fil db_fil = db_ary[i];
|
||||
db_hash.Add(db_fil.Id(), db_fil);
|
||||
}
|
||||
if (len > 0) this.nth_db = db_ary[len - 1];
|
||||
}
|
||||
public int Dbs__len() {return dbs__ary_len;}
|
||||
public Fsm_bin_fil Dbs__get_nth() {return nth_db;}
|
||||
public Fsm_bin_fil Dbs__get_at(int i) {return dbs__ary[i];}
|
||||
public Fsm_bin_fil Dbs__make(String file_name) {
|
||||
public int Dbs__len() {return db_hash.Len();}
|
||||
public Fsm_bin_fil Dbs__get_nth() {return nth_db;}
|
||||
public Fsm_bin_fil Dbs__get_at(int i) {return (Fsm_bin_fil)db_hash.Get_at(i);}
|
||||
public Fsm_bin_fil Dbs__get_by_or_null(int i) {return (Fsm_bin_fil)db_hash.Get_by(i);}
|
||||
public Fsm_bin_fil Dbs__make(String file_name) {return Dbs__make(db_hash.Len(), file_name);}
|
||||
public Fsm_bin_fil Dbs__make(int id, String file_name) {
|
||||
Fsdb_db_file db = core_mgr.File__bin_file__new(mnt_id, file_name);
|
||||
Fsm_bin_fil rv = new Fsm_bin_fil(core_mgr.File__schema_is_1(), dbs__ary_len, db.Url(), db.Url().NameAndExt(), db.Conn(), Fsm_bin_fil.Bin_len_null);
|
||||
tbl.Insert(rv.Id(), rv.Url_rel());
|
||||
Dbs__add(rv);
|
||||
Fsm_bin_fil rv = new Fsm_bin_fil(core_mgr.File__schema_is_1(), id, db.Url(), db.Url().NameAndExt(), db.Conn(), Fsm_bin_fil.Bin_len_null);
|
||||
tbl.Insert(id, rv.Url_rel());
|
||||
db_hash.Add(id, rv);
|
||||
this.nth_db = rv;
|
||||
return rv;
|
||||
}
|
||||
public void Insert(int db_id, int bin_id, byte owner_tid, long bin_len, Io_stream_rdr bin_rdr) {
|
||||
Fsm_bin_fil fil = dbs__ary[db_id];
|
||||
Fsm_bin_fil fil = (Fsm_bin_fil)db_hash.Get_by(db_id);
|
||||
fil.Insert(bin_id, owner_tid, bin_len, bin_rdr);
|
||||
fil.Insert(bin_id, owner_tid, bin_len, bin_rdr);
|
||||
dbs__ary[db_id].Insert(bin_id, owner_tid, bin_len, bin_rdr);
|
||||
}
|
||||
public void Txn_bgn() {
|
||||
for (int i = 0; i < dbs__ary_len; ++i)
|
||||
dbs__ary[i].Conn().Txn_bgn("fsdb__meta__bin");
|
||||
int len = db_hash.Len();
|
||||
for (int i = 0; i < len; ++i)
|
||||
this.Dbs__get_at(i).Conn().Txn_bgn("fsdb__meta__bin");
|
||||
}
|
||||
public void Txn_end() {
|
||||
for (int i = 0; i < dbs__ary_len; ++i)
|
||||
dbs__ary[i].Conn().Txn_end();
|
||||
}
|
||||
private void Dbs__add(Fsm_bin_fil fil) {
|
||||
this.dbs__ary = (Fsm_bin_fil[])Array_.Resize(dbs__ary, dbs__ary_len + 1);
|
||||
this.dbs__ary[dbs__ary_len++] = fil;
|
||||
this.nth_db = fil;
|
||||
int len = db_hash.Len();
|
||||
for (int i = 0; i < len; ++i)
|
||||
this.Dbs__get_at(i).Conn().Txn_end();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,7 +18,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
package gplx.fsdb.meta; import gplx.*; import gplx.fsdb.*;
|
||||
import gplx.dbs.*; import gplx.dbs.qrys.*;
|
||||
public class Fsm_bin_tbl {
|
||||
private final String tbl_name; private final Dbmeta_fld_list flds = Dbmeta_fld_list.new_();
|
||||
private final String tbl_name; private final Dbmeta_fld_list flds = new Dbmeta_fld_list();
|
||||
private final String fld_uid, fld_url, fld_bin_len, fld_bin_max;
|
||||
private final Db_conn conn; private int mnt_id;
|
||||
public Fsm_bin_tbl(Db_conn conn, boolean schema_is_1, int mnt_id) {
|
||||
@@ -42,7 +42,7 @@ public class Fsm_bin_tbl {
|
||||
conn.Stmt_insert(tbl_name, flds).Crt_int(fld_uid, id).Val_str(fld_url, url_rel).Val_long(fld_bin_len, 0).Val_long(fld_bin_max, 0).Exec_insert();
|
||||
}
|
||||
public Fsm_bin_fil[] Select_all(Fsdb_db_mgr db_conn_mgr) {
|
||||
List_adp rv = List_adp_.new_();
|
||||
List_adp rv = List_adp_.New();
|
||||
Db_rdr rdr = conn.Stmt_select_order(tbl_name, flds, Dbmeta_fld_itm.Str_ary_empty, fld_uid).Clear().Exec_select__rls_auto();
|
||||
try {
|
||||
while (rdr.Move_next()) {
|
||||
|
||||
@@ -18,7 +18,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
package gplx.fsdb.meta; import gplx.*; import gplx.fsdb.*;
|
||||
import gplx.dbs.*; import gplx.dbs.cfgs.*; import gplx.fsdb.meta.*;
|
||||
public class Fsm_cfg_mgr {
|
||||
private final Db_cfg_tbl tbl; private final Hash_adp grp_hash = Hash_adp_.new_();
|
||||
private final Db_cfg_tbl tbl; private final Hash_adp grp_hash = Hash_adp_.New();
|
||||
public Fsm_cfg_mgr(Fsdb_db_mgr db_conn_mgr, Db_conn conn) {
|
||||
this.tbl = new Db_cfg_tbl(conn, db_conn_mgr.File__cfg_tbl_name());
|
||||
}
|
||||
|
||||
@@ -16,12 +16,12 @@ You should have received a copy of the GNU Affero General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package gplx.fsdb.meta; import gplx.*; import gplx.fsdb.*;
|
||||
import gplx.core.ios.*; import gplx.dbs.*; import gplx.fsdb.data.*;
|
||||
import gplx.core.ios.*; import gplx.core.ios.streams.*; import gplx.dbs.*; import gplx.fsdb.data.*;
|
||||
public class Fsm_mnt_itm {
|
||||
public Fsm_mnt_itm(int id, String name, String url_rel) {this.id = id; this.name = name; this.url_rel = url_rel;}
|
||||
public int Id() {return id;} private final int id;
|
||||
public String Name() {return name;} private final String name;
|
||||
public String Url_rel() {return url_rel;} private final String url_rel;
|
||||
public int Id() {return id;} private final int id;
|
||||
public String Name() {return name;} private final String name;
|
||||
public String Url_rel() {return url_rel;} private final String url_rel;
|
||||
public Fsm_atr_mgr Atr_mgr() {return atr_mgr;} private Fsm_atr_mgr atr_mgr;
|
||||
public Fsm_bin_mgr Bin_mgr() {return bin_mgr;} private Fsm_bin_mgr bin_mgr;
|
||||
public Fsm_cfg_mgr Cfg_mgr() {return cfg_mgr;} private Fsm_cfg_mgr cfg_mgr;
|
||||
@@ -47,7 +47,7 @@ public class Fsm_mnt_itm {
|
||||
int fil_id = atr_fil.Insert_img(rv, dir, fil, ext_id, img_w, img_h, bin_fil.Id(), bin_len, bin_rdr);
|
||||
bin_fil.Insert(fil_id, Fsd_bin_tbl.Owner_tid_fil, bin_len, bin_rdr);
|
||||
}
|
||||
public void Insert_fil(Fsd_fil_itm rv, Fsm_atr_fil atr_fil, Fsm_bin_fil bin_fil, byte[] dir, byte[] fil, int ext_id, long bin_len, gplx.core.ios.Io_stream_rdr bin_rdr) {
|
||||
public void Insert_fil(Fsd_fil_itm rv, Fsm_atr_fil atr_fil, Fsm_bin_fil bin_fil, byte[] dir, byte[] fil, int ext_id, long bin_len, gplx.core.ios.streams.Io_stream_rdr bin_rdr) {
|
||||
int fil_id = atr_fil.Insert_fil(rv, dir, fil, ext_id, bin_fil.Id(), bin_len, bin_rdr);
|
||||
bin_fil.Insert(fil_id, Fsd_bin_tbl.Owner_tid_fil, bin_len, bin_rdr);
|
||||
}
|
||||
|
||||
@@ -17,7 +17,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package gplx.fsdb.meta; import gplx.*; import gplx.fsdb.*;
|
||||
import gplx.dbs.*; import gplx.dbs.cfgs.*; import gplx.xowa.files.*; import gplx.xowa.files.fsdb.*;
|
||||
public class Fsm_mnt_mgr implements GfoInvkAble {
|
||||
public class Fsm_mnt_mgr implements Gfo_invk {
|
||||
private Db_cfg_tbl cfg_tbl; private Fsm_mnt_tbl mnt_tbl;
|
||||
private Fsm_mnt_itm[] mnt_ary; private int mnt_ary_len = 0;
|
||||
public void Ctor_by_load(Fsdb_db_mgr db_core) {
|
||||
@@ -39,9 +39,9 @@ public class Fsm_mnt_mgr implements GfoInvkAble {
|
||||
public Fsm_mnt_itm Mnts__get_at(int i) {return mnt_ary[i];}
|
||||
public Fsm_mnt_itm Mnts__get_main() {return mnt_ary[Mnt_idx_main];}
|
||||
public Fsm_mnt_itm Mnts__get_insert() {return mnt_ary[insert_idx];} public void Mnts__get_insert_idx_(int v) {insert_idx = v;} private int insert_idx = Mnt_idx_user;
|
||||
public Fsm_bin_fil Bins__at(int mnt_id, int bin_db_id) {return mnt_ary[mnt_id].Bin_mgr().Dbs__get_at(bin_db_id);}
|
||||
public Fsm_bin_fil Bins__at(int mnt_id, int bin_db_id) {return mnt_ary[mnt_id].Bin_mgr().Dbs__get_by_or_null(bin_db_id);}
|
||||
public int Patch_upright() {return patch_upright_tid;} private int patch_upright_tid = Xof_patch_upright_tid_.Tid_all;
|
||||
public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {return GfoInvkAble_.Rv_unhandled;}
|
||||
public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {return Gfo_invk_.Rv_unhandled;}
|
||||
public static final int Mnt_idx_main = 0, Mnt_idx_user = 1, Insert_to_bin_null = -1;
|
||||
public static void Patch(Db_cfg_tbl cfg_tbl) {
|
||||
cfg_tbl.Upsert_str(Xof_fsdb_mgr_cfg.Grp_xowa, Xof_fsdb_mgr_cfg.Key_gallery_fix_defaults , "y");
|
||||
|
||||
@@ -18,9 +18,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
package gplx.fsdb.meta; import gplx.*; import gplx.fsdb.*;
|
||||
import gplx.dbs.*;
|
||||
public class Fsm_mnt_tbl implements Rls_able {
|
||||
private final String tbl_name = "fsdb_mnt"; private final Dbmeta_fld_list flds = Dbmeta_fld_list.new_();
|
||||
private final String fld_id, fld_name, fld_url;
|
||||
private final Db_conn conn;
|
||||
private final String tbl_name = "fsdb_mnt"; private final Dbmeta_fld_list flds = new Dbmeta_fld_list();
|
||||
private final String fld_id, fld_name, fld_url;
|
||||
private final Db_conn conn;
|
||||
public Fsm_mnt_tbl(Db_conn conn, boolean schema_is_1) {
|
||||
this.conn = conn;
|
||||
fld_id = flds.Add_int_pkey ("mnt_id");
|
||||
@@ -44,7 +44,7 @@ public class Fsm_mnt_tbl implements Rls_able {
|
||||
stmt.Clear().Val_str(fld_name, name).Val_str(fld_url, url).Crt_int(fld_id, id).Exec_update();
|
||||
}
|
||||
public Fsm_mnt_itm[] Select_all() {
|
||||
List_adp list = List_adp_.new_();
|
||||
List_adp list = List_adp_.New();
|
||||
Db_rdr rdr = conn.Stmt_select(tbl_name, flds, Dbmeta_fld_itm.Str_ary_empty).Clear().Exec_select__rls_auto();
|
||||
try {
|
||||
while (rdr.Move_next()) {
|
||||
|
||||
Reference in New Issue
Block a user