mirror of
https://github.com/gnosygnu/xowa.git
synced 2026-03-02 03:49:30 +00:00
v3.1.4.1
This commit is contained in:
@@ -19,6 +19,7 @@ package gplx.xowa.bldrs; import gplx.*; import gplx.xowa.*;
|
||||
import gplx.core.primitives.*;
|
||||
import gplx.xowa.wikis.*; import gplx.xowa.xtns.wdatas.imports.*;
|
||||
import gplx.xowa.bldrs.cmds.texts.*; import gplx.xowa.bldrs.cmds.texts.sqls.*; import gplx.xowa.bldrs.cmds.texts.tdbs.*; import gplx.xowa.bldrs.cmds.files.*; import gplx.xowa.bldrs.cmds.ctgs.*; import gplx.xowa.bldrs.cmds.utils.*; import gplx.xowa.bldrs.cmds.wikis.*;
|
||||
import gplx.xowa.bldrs.cmds.diffs.*;
|
||||
import gplx.xowa.files.origs.*; import gplx.xowa.htmls.core.bldrs.*;
|
||||
public class Xob_cmd_mgr implements GfoInvkAble {
|
||||
public Xob_cmd_mgr(Xob_bldr bldr) {this.bldr = bldr;} private Xob_bldr bldr;
|
||||
@@ -76,6 +77,7 @@ public class Xob_cmd_mgr implements GfoInvkAble {
|
||||
else if (String_.Eq(cmd_key, Xob_cmd_keys.Key_tdb_core_term)) return Add(new Xob_term_txt(bldr, wiki));
|
||||
else if (String_.Eq(cmd_key, Xob_cmd_keys.Key_tdb_text_wdata_qid)) return Xml_rdr_direct_add(wiki, new Xob_wdata_qid_txt().Ctor(bldr, wiki));
|
||||
else if (String_.Eq(cmd_key, Xob_cmd_keys.Key_tdb_text_wdata_pid)) return Xml_rdr_direct_add(wiki, new Xob_wdata_pid_txt().Ctor(bldr, wiki));
|
||||
else if (String_.Eq(cmd_key, Xob_cmd_keys.Key_diff_build)) return Add(new Xob_diff_build_cmd(bldr, wiki));
|
||||
else if (String_.Eq(cmd_key, Xob_cmd_keys.Key_diff_regy_exec)) return Add(new Xob_diff_regy_exec_cmd(bldr, wiki));
|
||||
else if (String_.Eq(cmd_key, Xob_cmd_keys.Key_diff_regy_make)) return Add(new Xob_diff_regy_make_cmd(bldr, wiki));
|
||||
else if (String_.Eq(cmd_key, Xob_cmd_keys.Key_exec_sql)) return Add(new Xob_exec_sql_cmd(bldr, wiki));
|
||||
|
||||
@@ -17,7 +17,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package gplx.xowa.bldrs.cmds.diffs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*;
|
||||
import gplx.core.brys.*; import gplx.xowa.wikis.*;
|
||||
class Bfr_arg__dump_dir implements Bfr_arg { // .dump_dir = "C:\xowa\wiki\en.wikipedia.org"
|
||||
class Bfr_arg__dump_dir implements Bfr_arg { // .dump_dir = "/xowa/wiki/en.wikipedia.org/"
|
||||
private final Xow_wiki wiki;
|
||||
public Bfr_arg__dump_dir(Xow_wiki wiki) {this.wiki = wiki;}
|
||||
public void Bfr_arg__add(Bry_bfr bfr) {
|
||||
@@ -28,7 +28,7 @@ class Bfr_arg__dump_core implements Bfr_arg {// .dump_core = "en.wikipedia.org-c
|
||||
private final Xow_wiki wiki;
|
||||
public Bfr_arg__dump_core(Xow_wiki wiki) {this.wiki = wiki;}
|
||||
public void Bfr_arg__add(Bry_bfr bfr) {
|
||||
bfr.Add(wiki.Data__core_mgr().Db__core().Url().RawBry());
|
||||
bfr.Add_str_u8(wiki.Data__core_mgr().Db__core().Url().NameAndExt());
|
||||
}
|
||||
}
|
||||
class Bfr_arg__dump_domain implements Bfr_arg {// .dump_domain = en.wikipedia.org
|
||||
@@ -38,3 +38,8 @@ class Bfr_arg__dump_domain implements Bfr_arg {// .dump_domain = en.wikipedia.or
|
||||
bfr.Add(wiki.Domain_bry());
|
||||
}
|
||||
}
|
||||
class Bfr_arg__dir_spr implements Bfr_arg {// .dir_spr = "/"
|
||||
public void Bfr_arg__add(Bry_bfr bfr) {
|
||||
bfr.Add_byte(gplx.core.envs.Op_sys.Cur().Fsys_dir_spr_byte());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,37 +20,39 @@ import gplx.core.brys.*; import gplx.core.brys.fmtrs.*;
|
||||
import gplx.dbs.*; import gplx.dbs.metas.*; import gplx.dbs.diffs.*; import gplx.dbs.diffs.builds.*;
|
||||
class Xob_diff_build_wkr {
|
||||
private final Gfdb_diff_bldr dif_bldr = new Gfdb_diff_bldr();
|
||||
private Db_conn prv_conn, cur_conn, dif_conn;
|
||||
public Xob_diff_build_wkr(Xob_bldr bldr, Xowe_wiki wiki, String prv_url, String cur_url, String dif_url, int commit_interval) {
|
||||
private Db_conn old_conn, new_conn, dif_conn;
|
||||
public Xob_diff_build_wkr(Xob_bldr bldr, Xowe_wiki wiki, String old_url, String new_url, String dif_url, int commit_interval) {
|
||||
wiki.Init_by_wiki();
|
||||
Bry_fmt url_fmt = Bry_fmt.New("").Args_(New_url_args(wiki));
|
||||
Bry_bfr tmp_bfr = Bry_bfr.new_();
|
||||
prv_conn = New_conn(Bool_.N, wiki, url_fmt, prv_url, tmp_bfr);
|
||||
cur_conn = New_conn(Bool_.N, wiki, url_fmt, cur_url, tmp_bfr);
|
||||
old_conn = New_conn(Bool_.N, wiki, url_fmt, old_url, tmp_bfr);
|
||||
new_conn = New_conn(Bool_.N, wiki, url_fmt, new_url, tmp_bfr);
|
||||
dif_conn = New_conn(Bool_.Y, wiki, url_fmt, dif_url, tmp_bfr);
|
||||
Tfds.Dbg(prv_conn, cur_conn, dif_conn);
|
||||
}
|
||||
public void Exec() {
|
||||
Gfdb_diff_db dif_db = new Gfdb_diff_db(dif_conn);
|
||||
Gfdb_diff_wkr__db dif_wkr = new Gfdb_diff_wkr__db();
|
||||
dif_wkr.Init_conn(dif_db, 1000);
|
||||
dif_bldr.Init(dif_wkr);
|
||||
Dbmeta_tbl_mgr prv_tbl_mgr = prv_conn.Meta_tbl_load_all();
|
||||
Dbmeta_tbl_mgr cur_tbl_mgr = prv_conn.Meta_tbl_load_all();
|
||||
int cur_tbl_len = cur_tbl_mgr.Len();
|
||||
for (int i = 0; i < cur_tbl_len; ++i) {
|
||||
Dbmeta_tbl_itm cur_tbl = cur_tbl_mgr.Get_at(i);
|
||||
Dbmeta_tbl_itm prv_tbl = prv_tbl_mgr.Get_by(cur_tbl.Name()); if (prv_tbl == null) continue;
|
||||
Gfdb_diff_tbl dif_tbl = Gfdb_diff_tbl.New(cur_tbl);
|
||||
dif_bldr.Compare(dif_tbl, prv_conn, cur_conn);
|
||||
}
|
||||
int prv_tbl_len = prv_tbl_mgr.Len();
|
||||
for (int i = 0; i < prv_tbl_len; ++i) {
|
||||
Dbmeta_tbl_itm prv_tbl = prv_tbl_mgr.Get_at(i);
|
||||
Dbmeta_tbl_itm cur_tbl = cur_tbl_mgr.Get_by(prv_tbl.Name());
|
||||
if (cur_tbl == null) {
|
||||
// delete all
|
||||
}
|
||||
Dbmeta_tbl_mgr old_tbl_mgr = old_conn.Meta_tbl_load_all();
|
||||
Dbmeta_tbl_mgr new_tbl_mgr = old_conn.Meta_tbl_load_all();
|
||||
int new_tbl_len = new_tbl_mgr.Len();
|
||||
int txn = -1;
|
||||
for (int i = 0; i < new_tbl_len; ++i) {
|
||||
Dbmeta_tbl_itm new_tbl = new_tbl_mgr.Get_at(i);
|
||||
Dbmeta_tbl_itm old_tbl = old_tbl_mgr.Get_by(new_tbl.Name()); if (old_tbl == null) continue;
|
||||
Gfdb_diff_tbl dif_tbl = Gfdb_diff_tbl.New(new_tbl);
|
||||
dif_bldr.Compare(++txn, dif_tbl, old_conn, new_conn);
|
||||
// save txn
|
||||
}
|
||||
// int old_tbl_len = old_tbl_mgr.Len();
|
||||
// for (int i = 0; i < old_tbl_len; ++i) {
|
||||
// Dbmeta_tbl_itm old_tbl = old_tbl_mgr.Get_at(i);
|
||||
// Dbmeta_tbl_itm new_tbl = new_tbl_mgr.Get_by(old_tbl.Name());
|
||||
// if (new_tbl == null) {
|
||||
// // delete all
|
||||
// }
|
||||
// }
|
||||
}
|
||||
public static Db_conn New_conn(boolean autocreate, Xow_wiki wiki, Bry_fmt fmtr, String url_fmt, Bry_bfr tmp_bfr) {
|
||||
fmtr.Fmt_(url_fmt).Bld_bfr_many(tmp_bfr);
|
||||
@@ -61,10 +63,11 @@ class Xob_diff_build_wkr {
|
||||
{ new Bfr_fmt_arg(Bry_.new_a7(".dump_dir"), new Bfr_arg__dump_dir(wiki))
|
||||
, new Bfr_fmt_arg(Bry_.new_a7(".dump_core"), new Bfr_arg__dump_core(wiki))
|
||||
, new Bfr_fmt_arg(Bry_.new_a7(".dump_domain"), new Bfr_arg__dump_domain(wiki))
|
||||
, new Bfr_fmt_arg(Bry_.new_a7(".dir_spr"), new Bfr_arg__dir_spr())
|
||||
};
|
||||
return rv;
|
||||
}
|
||||
//prv_url='~{.dump_dir}-prev/~{.dump_core}';
|
||||
//cur_url='~{.dump_dir}/~{.dump_core}';
|
||||
//old_url='~{.dump_dir}-prev/~{.dump_core}';
|
||||
//new_url='~{.dump_dir}/~{.dump_core}';
|
||||
//dif_url='~{.dump_dir}/~{.dump_domain}-diff.xowa';
|
||||
}
|
||||
|
||||
@@ -240,7 +240,7 @@ class Site_meta_parser__showhook extends Json_parser__list_nde__base {
|
||||
int atr_len = subscribers_nde.Len();
|
||||
for (int j = 0; j < atr_len; ++j) {
|
||||
Json_kv atr = subscribers_nde.Get_at_as_kv(j);
|
||||
if (!Bry_.Eq(atr.Key_as_bry(), Key__scribunto)) {Warn("unknown key", atr); continue;}
|
||||
if (!Bry_.Eq(atr.Key_as_bry(), Key__scribunto)) {Warn("unknown subscriber key", atr); continue;}
|
||||
scribunto = atr.Val_as_bry();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user