diff --git a/400_xowa/src/gplx/xowa/addons/apps/cfgs/dbs/tbls/Xocfg_map_tbl.java b/400_xowa/src/gplx/xowa/addons/apps/cfgs/dbs/tbls/Xocfg_map_tbl.java
index 8e58356e2..f366e5f6c 100644
--- a/400_xowa/src/gplx/xowa/addons/apps/cfgs/dbs/tbls/Xocfg_map_tbl.java
+++ b/400_xowa/src/gplx/xowa/addons/apps/cfgs/dbs/tbls/Xocfg_map_tbl.java
@@ -53,7 +53,7 @@ public class Xocfg_map_tbl implements Db_tbl {
try {
if (!rdr.Move_next()) return 0;
Object max = rdr.Read_obj(fld__map_sort);
- return max == null ? 0 : Int_.cast(max) + 1;
+ return max == null ? 0 : Int_.cast(max) + 10;
}
finally {rdr.Rls();}
}
diff --git a/400_xowa/src/gplx/xowa/addons/apps/cfgs/mgrs/caches/Xocfg_cache_mgr__tst.java b/400_xowa/src/gplx/xowa/addons/apps/cfgs/mgrs/caches/Xocfg_cache_mgr__tst.java
index 85cd60671..3b79a6f83 100644
--- a/400_xowa/src/gplx/xowa/addons/apps/cfgs/mgrs/caches/Xocfg_cache_mgr__tst.java
+++ b/400_xowa/src/gplx/xowa/addons/apps/cfgs/mgrs/caches/Xocfg_cache_mgr__tst.java
@@ -44,6 +44,7 @@ public class Xocfg_cache_mgr__tst {
}
class Xocfg_cache_mgr__fxt {
private Xocfg_cache_mgr mgr = new Xocfg_cache_mgr();
+ private int id;
public void Clear() {
gplx.dbs.Db_conn_bldr.Instance.Reg_default_mem();
Db_conn conn = Db_conn_bldr.Instance.Get_or_autocreate(true, Io_url_.new_any_("mem/xowa/wiki/en.wikipedia.org/"));
@@ -51,8 +52,8 @@ class Xocfg_cache_mgr__fxt {
}
public Xocfg_cache_sub_mock Sub() {return sub;} private Xocfg_cache_sub_mock sub = new Xocfg_cache_sub_mock();
public void Init__db_add(String ctx, String key, Object val) {
- Xocfg_maint_svc.Create_grp(mgr.Db_app(), "test_grp", "", "", "");
- Xocfg_maint_svc.Create_itm(mgr.Db_app(), key, "test_grp", "", "", "wiki", "string", "dflt", "textbox", "");
+ Xocfg_maint_svc.Create_grp(mgr.Db_app(), id++, "test_grp", "", "", "");
+ Xocfg_maint_svc.Create_itm(mgr.Db_app(), id++, key, "test_grp", "", "", "wiki", "string", "dflt", "textbox", "");
mgr.Db_usr().Set_str(ctx, key, Object_.Xto_str_strict_or_null(val));
}
public void Init__sub(String ctx, String key, String evt) {
diff --git a/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/maints/services/Xocfg_maint_nde.java b/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/maints/services/Xocfg_maint_nde.java
index b16c82783..d2fbb1be2 100644
--- a/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/maints/services/Xocfg_maint_nde.java
+++ b/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/maints/services/Xocfg_maint_nde.java
@@ -17,13 +17,15 @@ along with this program. If not, see .
*/
package gplx.xowa.addons.apps.cfgs.specials.maints.services; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; import gplx.xowa.addons.apps.cfgs.*; import gplx.xowa.addons.apps.cfgs.specials.*; import gplx.xowa.addons.apps.cfgs.specials.maints.*;
abstract class Xocfg_maint_nde implements gplx.core.brys.Bry_bfr_able {
- public Xocfg_maint_nde(String key, String owner, String name, String help) {
+ public Xocfg_maint_nde(int id, String key, String owner, String name, String help) {
+ this.id = id;
this.key = key;
this.owner = owner;
this.name = name;
this.help = help;
}
public abstract boolean Type_is_grp();
+ public int Id() {return id;} private final int id;
public String Key() {return key;} private final String key;
public String Owner() {return owner;} private final String owner;
public String Name() {return name;} private final String name;
@@ -34,12 +36,12 @@ abstract class Xocfg_maint_nde implements gplx.core.brys.Bry_bfr_able {
}
protected abstract void To_bfr_hook(Bry_bfr bfr);
}
-class Xocfg_maint_grp extends Xocfg_maint_nde { public Xocfg_maint_grp(String key, String owner, String name, String help) {super(key, owner, name, help);
+class Xocfg_maint_grp extends Xocfg_maint_nde { public Xocfg_maint_grp(int id, String key, String owner, String name, String help) {super(id, key, owner, name, help);
}
@Override public boolean Type_is_grp() {return true;}
@Override protected void To_bfr_hook(Bry_bfr bfr) {}
}
-class Xocfg_maint_itm extends Xocfg_maint_nde { public Xocfg_maint_itm(String key, String owner, String name, String help, String scope, String db_type, String dflt, String gui_type, String gui_args) {super(key, owner, name, help);
+class Xocfg_maint_itm extends Xocfg_maint_nde { public Xocfg_maint_itm(int id, String key, String owner, String name, String help, String scope, String db_type, String dflt, String gui_type, String gui_args) {super(id, key, owner, name, help);
this.scope = scope;
this.db_type = db_type;
this.dflt = dflt;
diff --git a/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/maints/services/Xocfg_maint_parser.java b/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/maints/services/Xocfg_maint_parser.java
index 0f567d453..7aa377271 100644
--- a/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/maints/services/Xocfg_maint_parser.java
+++ b/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/maints/services/Xocfg_maint_parser.java
@@ -32,6 +32,7 @@ class Xocfg_maint_parser {
private Xocfg_maint_nde Parse_nde(GfoMsg msg) {
Ordered_hash hash = To_atr_hash(msg);
// get common atrs
+ int id = Int_.parse(Get_atr_as_str_or_fail(hash, "id_"));
String owner = Get_atr_as_str_or_fail(hash, "owner_");
String key = Get_atr_as_str_or_fail(hash, "key_");
String name = Get_atr_as_str_or_fail(hash, "name_");
@@ -40,7 +41,7 @@ class Xocfg_maint_parser {
// create
String nde_type = msg.Key();
if (String_.Eq(nde_type, "grp")) {
- return new Xocfg_maint_grp(key, owner, name, help);
+ return new Xocfg_maint_grp(id, key, owner, name, help);
}
else if (String_.Eq(nde_type, "itm")) {
String scope = Get_atr_as_str_or(hash, "scope_", ""); if (String_.Eq(scope, "")) scope = "wiki";
@@ -52,7 +53,7 @@ class Xocfg_maint_parser {
if (gui_type == null) {
gui_type = gplx.xowa.addons.apps.cfgs.enums.Xoitm_gui_tid.Infer_gui_type(db_type);
}
- return new Xocfg_maint_itm(key, owner, name, help, scope, db_type, dflt, gui_type, gui_args);
+ return new Xocfg_maint_itm(id, key, owner, name, help, scope, db_type, dflt, gui_type, gui_args);
}
else throw Err_.new_wo_type("xo.cfg_maint:unknown type", "type", nde_type);
}
diff --git a/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/maints/services/Xocfg_maint_parser__tst.java b/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/maints/services/Xocfg_maint_parser__tst.java
index 10bfc44bd..7f4609132 100644
--- a/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/maints/services/Xocfg_maint_parser__tst.java
+++ b/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/maints/services/Xocfg_maint_parser__tst.java
@@ -20,13 +20,13 @@ import org.junit.*; import gplx.core.tests.*;
public class Xocfg_maint_parser__tst {
private final Xocfg_maint_parser__fxt fxt = new Xocfg_maint_parser__fxt();
@Test public void Parse_grp() {
- fxt.Exec__parse("grp {key='key_1'; owner='owner_1'; name='name_1'; help='help_1'}"
- , fxt.Make__grp("key_1", "owner_1", "name_1", "help_1")
+ fxt.Exec__parse("grp {id='123'; key='key_1'; owner='owner_1'; name='name_1'; help='help_1'}"
+ , fxt.Make__grp(123, "key_1", "owner_1", "name_1", "help_1")
);
}
@Test public void Parse_itm() {
- fxt.Exec__parse("itm {key='key_1'; owner='owner_1'; name='name_1'; help='help_1'; scope='scope_1'; db_type='db_type_1'; dflt='dflt_1'; gui_type='gui_type_1'; gui_args='gui_args_1'}"
- , fxt.Make__itm("key_1", "owner_1", "name_1", "help_1", "scope_1", "db_type_1", "dflt_1", "gui_type_1", "gui_args_1")
+ fxt.Exec__parse("itm {id='123'; key='key_1'; owner='owner_1'; name='name_1'; help='help_1'; scope='scope_1'; db_type='db_type_1'; dflt='dflt_1'; gui_type='gui_type_1'; gui_args='gui_args_1'}"
+ , fxt.Make__itm(123, "key_1", "owner_1", "name_1", "help_1", "scope_1", "db_type_1", "dflt_1", "gui_type_1", "gui_args_1")
);
}
}
@@ -36,10 +36,10 @@ class Xocfg_maint_parser__fxt {
Xocfg_maint_nde[] actl = parser.Parse(raw);
Gftest.Eq__ary(expd, actl);
}
- public Xocfg_maint_grp Make__grp(String key, String owner, String name, String help) {
- return new Xocfg_maint_grp(key, owner, name, help);
+ public Xocfg_maint_grp Make__grp(int id, String key, String owner, String name, String help) {
+ return new Xocfg_maint_grp(id, key, owner, name, help);
}
- public Xocfg_maint_itm Make__itm(String key, String owner, String name, String help, String scope, String db_type, String dflt, String gui_type, String gui_args) {
- return new Xocfg_maint_itm(key, owner, name, help, scope, db_type, dflt, gui_type, gui_args);
+ public Xocfg_maint_itm Make__itm(int id, String key, String owner, String name, String help, String scope, String db_type, String dflt, String gui_type, String gui_args) {
+ return new Xocfg_maint_itm(id, key, owner, name, help, scope, db_type, dflt, gui_type, gui_args);
}
}
\ No newline at end of file
diff --git a/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/maints/services/Xocfg_maint_svc.java b/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/maints/services/Xocfg_maint_svc.java
index ebc3cce64..1891b37f3 100644
--- a/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/maints/services/Xocfg_maint_svc.java
+++ b/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/maints/services/Xocfg_maint_svc.java
@@ -40,19 +40,17 @@ public class Xocfg_maint_svc {
byte[] help = parser_mgr.Main().Parse_text_to_html(parser_mgr.Ctx(), Bry_.new_u8(nde.Help()));
help = Bry_.Replace(help, anch_find_bry, anch_repl_bry); // replace "