Cfg: Add get and set functions

v3.3.4
gnosygnu 8 years ago
parent 887724b536
commit f04cb73679

@ -19,16 +19,28 @@ package gplx.xowa.addons.apps.cfgs.dbs; import gplx.*; import gplx.xowa.*; impor
import gplx.dbs.*;
public class Xocfg_db_mgr {
public Xocfg_db_mgr(Db_conn conn) {
this.tbl__grp_meta = new Xocfg_grp_meta(conn);
this.tbl__grp_map = new Xocfg_grp_map(conn);
this.tbl__itm_meta = new Xocfg_itm_meta(conn);
this.tbl__itm_data = new Xocfg_itm_data(conn);
this.tbl__nde_i18n = new Xocfg_nde_i18n(conn);
this.tbl__grp_meta = new Xogrp_meta_tbl(conn);
this.tbl__grp_map = new Xogrp_map_tbl(conn);
this.tbl__itm_meta = new Xoitm_meta_tbl(conn);
this.tbl__itm_data = new Xoitm_data_tbl(conn);
this.tbl__nde_i18n = new Xonde_i18n_tbl(conn);
conn.Meta_tbl_assert(tbl__grp_meta, tbl__grp_map, tbl__itm_meta, tbl__itm_data, tbl__nde_i18n);
}
public Xocfg_grp_meta Tbl__grp_meta() {return tbl__grp_meta;} private final Xocfg_grp_meta tbl__grp_meta;
public Xocfg_grp_map Tbl__grp_map() {return tbl__grp_map ;} private final Xocfg_grp_map tbl__grp_map;
public Xocfg_itm_meta Tbl__itm_meta() {return tbl__itm_meta;} private final Xocfg_itm_meta tbl__itm_meta;
public Xocfg_itm_data Tbl__itm_data() {return tbl__itm_data;} private final Xocfg_itm_data tbl__itm_data;
public Xocfg_nde_i18n Tbl__nde_i18n() {return tbl__nde_i18n;} private final Xocfg_nde_i18n tbl__nde_i18n;
public Xogrp_meta_tbl Tbl__grp_meta() {return tbl__grp_meta;} private final Xogrp_meta_tbl tbl__grp_meta;
public Xogrp_map_tbl Tbl__grp_map() {return tbl__grp_map ;} private final Xogrp_map_tbl tbl__grp_map;
public Xoitm_meta_tbl Tbl__itm_meta() {return tbl__itm_meta;} private final Xoitm_meta_tbl tbl__itm_meta;
public Xoitm_data_tbl Tbl__itm_data() {return tbl__itm_data;} private final Xoitm_data_tbl tbl__itm_data;
public Xonde_i18n_tbl Tbl__nde_i18n() {return tbl__nde_i18n;} private final Xonde_i18n_tbl tbl__nde_i18n;
public String Get_str(String ctx, String key) {
Xoitm_meta_itm meta_itm = tbl__itm_meta.Select_by_key_or_null(key);
if (meta_itm == null) throw Err_.new_wo_type("cfg not defined", "ctx", ctx, "key", key);
Xoitm_data_itm data_itm = tbl__itm_data.Select_by_id_or_null(meta_itm.Id());
return data_itm == null ? meta_itm.Dflt() : data_itm.Val();
}
public void Set_str(String ctx, String key, String val) {
Xoitm_meta_itm meta_itm = tbl__itm_meta.Select_by_key_or_null(key);
if (meta_itm == null) throw Err_.new_wo_type("cfg not defined", "ctx", ctx, "key", key);
tbl__itm_data.Update(meta_itm.Id(), ctx, val, Datetime_now.Get().XtoUtc().XtoStr_fmt_iso_8561());
}
}

@ -0,0 +1,48 @@
/*
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 <http://www.gnu.org/licenses/>.
*/
package gplx.xowa.addons.apps.cfgs.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; import gplx.xowa.addons.apps.cfgs.*;
public class Xocfg_itm_bldr {
private final Xocfg_db_mgr db_mgr;
public Xocfg_itm_bldr(Xocfg_db_mgr db_mgr) {
this.db_mgr = db_mgr;
}
public void Create_grp(String owner_key, String grp_key, String grp_name, String grp_help) {
int grp_id = 1; // select Max(id) + 1 from cfg_grp_meta;
db_mgr.Tbl__grp_meta().Upsert(grp_id, grp_key);
int owner_id = 1; // select id from cfg_grp_meta where key = owner_key;
int map_sort = 1; // select Max(map_sort) + 1 from cfg_grp_map where map_src = owner_id;
db_mgr.Tbl__grp_map().Upsert(owner_id, grp_id, map_sort);
int nde_type = 0; // 0=grp; 1=itm
db_mgr.Tbl__nde_i18n().Upsert(nde_type, grp_id, "en", grp_name, grp_help);
}
public void Create_itm(String grp_key, String itm_key, String scope_id_str, String type_id_str, String itm_dflt, String itm_name, String help) {
int grp_id = 1; // select id from cfg_grp_meta WHERE key = grp_key;
int itm_id = 1; // select Max(itm_id) + 1 from cfg_itm_meta
int itm_sort = 1; // Select Max(itm_sort) + 1 FROM cfg_itm_meta WHERE grp_id = grp_id;
int scope_id = 1; // app-level,wiki-level,ns-level...
int type_id = 1; // boolean,int,String...
db_mgr.Tbl__itm_meta().Upsert(grp_id, itm_id, itm_sort, scope_id, type_id, itm_key, itm_dflt);
int nde_type = 1; // 0=grp; 1=itm
db_mgr.Tbl__nde_i18n().Upsert(nde_type, itm_id, "en", itm_name, help);
}
}

@ -17,11 +17,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package gplx.xowa.addons.apps.cfgs.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; import gplx.xowa.addons.apps.cfgs.*;
import gplx.dbs.*; import gplx.dbs.utls.*;
public class Xocfg_grp_map implements Db_tbl {
public class Xogrp_map_tbl implements Db_tbl {
private final Dbmeta_fld_list flds = new Dbmeta_fld_list();
private final String fld__map_src, fld__map_trg, fld__map_sort;
private final Db_conn conn;
public Xocfg_grp_map(Db_conn conn) {
public Xogrp_map_tbl(Db_conn conn) {
this.conn = conn;
this.tbl_name = "cfg_grp_map";
this.fld__map_src = flds.Add_int("map_src");

@ -17,11 +17,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package gplx.xowa.addons.apps.cfgs.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; import gplx.xowa.addons.apps.cfgs.*;
import gplx.dbs.*; import gplx.dbs.utls.*;
public class Xocfg_grp_meta implements Db_tbl {
public class Xogrp_meta_tbl implements Db_tbl {
private final Dbmeta_fld_list flds = new Dbmeta_fld_list();
private final String fld__grp_id, fld__grp_key;
private final Db_conn conn;
public Xocfg_grp_meta(Db_conn conn) {
public Xogrp_meta_tbl(Db_conn conn) {
this.conn = conn;
this.tbl_name = "cfg_grp_meta";
this.fld__grp_id = flds.Add_int("grp_id");

@ -0,0 +1,30 @@
/*
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 <http://www.gnu.org/licenses/>.
*/
package gplx.xowa.addons.apps.cfgs.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; import gplx.xowa.addons.apps.cfgs.*;
public class Xoitm_data_itm {
public Xoitm_data_itm(int id, String ctx, String val, String date) {
this.id = id;
this.ctx = ctx;
this.val = val;
this.date = date;
}
public int Id() {return id;} private final int id;
public String Ctx() {return ctx;} private final String ctx;
public String Val() {return val;} private final String val;
public String Date() {return date;} private final String date;
}

@ -17,11 +17,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package gplx.xowa.addons.apps.cfgs.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; import gplx.xowa.addons.apps.cfgs.*;
import gplx.dbs.*; import gplx.dbs.utls.*;
public class Xocfg_itm_data implements Db_tbl {
public class Xoitm_data_tbl implements Db_tbl {
private final Dbmeta_fld_list flds = new Dbmeta_fld_list();
private final String fld__itm_id, fld__itm_ctx, fld__itm_val, fld__itm_date;
private final Db_conn conn;
public Xocfg_itm_data(Db_conn conn) {
public Xoitm_data_tbl(Db_conn conn) {
this.conn = conn;
this.tbl_name = "cfg_itm_data";
this.fld__itm_id = flds.Add_int("itm_id"); // EX: '1'
@ -32,15 +32,21 @@ public class Xocfg_itm_data implements Db_tbl {
}
public String Tbl_name() {return tbl_name;} private final String tbl_name;
public void Create_tbl() {conn.Meta_tbl_create(Dbmeta_tbl_itm.New(tbl_name, flds));}
public void Upsert(int itm_id, String itm_val, String itm_date) {
public void Update(int itm_id, String ctx, String itm_val, String itm_date) {
Db_tbl__crud_.Upsert(conn, tbl_name, flds, String_.Ary(fld__itm_id), itm_id, itm_date, itm_val);
}
public void Select_stub() {
Db_rdr rdr = Db_rdr_.Empty;
rdr.Read_int(fld__itm_id);
rdr.Read_str(fld__itm_ctx);
rdr.Read_str(fld__itm_val);
rdr.Read_str(fld__itm_date);
public Xoitm_data_itm Select_by_id_or_null(int id) {
Db_rdr rdr = conn.Stmt_select(tbl_name, flds, fld__itm_id).Exec_select__rls_auto();
try {return rdr.Move_next() ? Load(rdr) : null;}
finally {rdr.Rls();}
}
private Xoitm_data_itm Load(Db_rdr rdr) {
return new Xoitm_data_itm
( rdr.Read_int(fld__itm_id)
, rdr.Read_str(fld__itm_ctx)
, rdr.Read_str(fld__itm_val)
, rdr.Read_str(fld__itm_date)
);
}
public void Rls() {}
}

@ -0,0 +1,36 @@
/*
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 <http://www.gnu.org/licenses/>.
*/
package gplx.xowa.addons.apps.cfgs.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; import gplx.xowa.addons.apps.cfgs.*;
public class Xoitm_meta_itm {
public Xoitm_meta_itm(int grp_id, int id, int itm_sort, int scope_id, int type_id, String key, String dflt) {
this.grp_id = grp_id;
this.id = id;
this.itm_sort = itm_sort;
this.scope_id = scope_id;
this.type_id = type_id;
this.key = key;
this.dflt = dflt;
}
public int Grp_id() {return grp_id;} private final int grp_id;
public int Id() {return id;} private final int id;
public int Itm_sort() {return itm_sort;} private final int itm_sort;
public int Scope_id() {return scope_id;} private final int scope_id;
public int Type_id() {return type_id;} private final int type_id;
public String Key() {return key;} private final String key;
public String Dflt() {return dflt;} private final String dflt;
}

@ -17,11 +17,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package gplx.xowa.addons.apps.cfgs.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; import gplx.xowa.addons.apps.cfgs.*;
import gplx.dbs.*; import gplx.dbs.utls.*;
public class Xocfg_itm_meta implements Db_tbl {
public class Xoitm_meta_tbl implements Db_tbl {
private final Dbmeta_fld_list flds = new Dbmeta_fld_list();
private final String fld__grp_id, fld__itm_id, fld__itm_sort, fld__itm_key, fld__itm_scope_id, fld__itm_type_id, fld__itm_dflt;
private final Db_conn conn;
public Xocfg_itm_meta(Db_conn conn) {
public Xoitm_meta_tbl(Db_conn conn) {
this.conn = conn;
this.tbl_name = "cfg_itm_meta";
this.fld__grp_id = flds.Add_int("grp_id"); // EX: '1'
@ -38,15 +38,21 @@ public class Xocfg_itm_meta implements Db_tbl {
public void Upsert(int grp_id, int itm_id, int itm_sort, int scope_id, int type_id, String itm_key, String itm_dflt) {
Db_tbl__crud_.Upsert(conn, tbl_name, flds, String_.Ary(fld__grp_id, fld__itm_id), grp_id, itm_id, itm_sort, scope_id, type_id, itm_key, itm_dflt);
}
public void Select_stub() {
Db_rdr rdr = Db_rdr_.Empty;
rdr.Read_int(fld__grp_id);
rdr.Read_int(fld__itm_id);
rdr.Read_int(fld__itm_sort);
rdr.Read_int(fld__itm_scope_id);
rdr.Read_int(fld__itm_type_id);
rdr.Read_str(fld__itm_key);
rdr.Read_str(fld__itm_dflt);
public Xoitm_meta_itm Select_by_key_or_null(String key) {
Db_rdr rdr = conn.Stmt_select(tbl_name, flds, fld__itm_key).Exec_select__rls_auto();
try {return rdr.Move_next() ? Load(rdr) : null;}
finally {rdr.Rls();}
}
private Xoitm_meta_itm Load(Db_rdr rdr) {
return new Xoitm_meta_itm
( rdr.Read_int(fld__grp_id)
, rdr.Read_int(fld__itm_id)
, rdr.Read_int(fld__itm_sort)
, rdr.Read_int(fld__itm_scope_id)
, rdr.Read_int(fld__itm_type_id)
, rdr.Read_str(fld__itm_key)
, rdr.Read_str(fld__itm_dflt)
);
}
public void Rls() {}
}

@ -17,11 +17,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package gplx.xowa.addons.apps.cfgs.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; import gplx.xowa.addons.apps.cfgs.*;
import gplx.dbs.*; import gplx.dbs.utls.*;
public class Xocfg_nde_i18n implements Db_tbl {
public class Xonde_i18n_tbl implements Db_tbl {
private final Dbmeta_fld_list flds = new Dbmeta_fld_list();
private final String fld__nde_type, fld__nde_id, fld__nde_locale, fld__nde_name, fld__nde_help;
private final Db_conn conn;
public Xocfg_nde_i18n(Db_conn conn) {
public Xonde_i18n_tbl(Db_conn conn) {
this.conn = conn;
this.tbl_name = "cfg_nde_i18n";
this.fld__nde_type = flds.Add_int("nde_type"); // EX: 1=grp; 2=itm
Loading…
Cancel
Save