diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/centrals/Xobc_filter_mgr.java b/400_xowa/src/gplx/xowa/addons/bldrs/centrals/Xobc_filter_mgr.java index 112722430..8a78992d9 100644 --- a/400_xowa/src/gplx/xowa/addons/bldrs/centrals/Xobc_filter_mgr.java +++ b/400_xowa/src/gplx/xowa/addons/bldrs/centrals/Xobc_filter_mgr.java @@ -20,7 +20,7 @@ import gplx.xowa.addons.bldrs.centrals.tasks.*; import gplx.xowa.wikis.domains.*; import gplx.xowa.langs.*; public class Xobc_filter_mgr { - public static Xobc_task_itm[] Filter_by_lang(Xobc_task_regy__base task_list, String lang_key_str) { + public static Xobc_task_itm[] Filter(Xobc_task_regy__base task_list, String lang_key_str, String type_key_str) { List_adp tmp = List_adp_.New(); // loop tasks and find matches @@ -28,7 +28,11 @@ public class Xobc_filter_mgr { for (int i = 0; i < len; ++i) { Xobc_task_itm task = (Xobc_task_itm)task_list.Get_at(i); Xobc_task_key task_key_itm = Xobc_task_key.To_itm(task.Task_key()); - if (Xow_domain_itm_.Match_lang(task_key_itm.Wiki_domain_itm(), lang_key_str)) + Xow_domain_itm task_domain = task_key_itm.Wiki_domain_itm(); + if ( Xow_domain_itm_.Match_lang(task_domain, lang_key_str) + && Xow_domain_itm_.Match_type(task_domain, type_key_str) + ) + tmp.Add(task); } diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/centrals/Xobc_task_bridge.java b/400_xowa/src/gplx/xowa/addons/bldrs/centrals/Xobc_task_bridge.java index 3f744e602..17504c44e 100644 --- a/400_xowa/src/gplx/xowa/addons/bldrs/centrals/Xobc_task_bridge.java +++ b/400_xowa/src/gplx/xowa/addons/bldrs/centrals/Xobc_task_bridge.java @@ -33,14 +33,14 @@ public class Xobc_task_bridge implements gplx.xowa.htmls.bridges.Bridge_cmd_itm case Proc__run_next: task_mgr.Work_mgr().Run_next(); break; case Proc__stop_cur: task_mgr.Work_mgr().Stop_cur(); break; case Proc__redo_cur: task_mgr.Work_mgr().Redo_cur(); break; - case Proc__filter_by_lang: task_mgr.Filter_by_lang(args.Get_as_str("lang_key")); break; + case Proc__filter_todo: task_mgr.Filter_todo(args.Get_as_str("lang_key"), args.Get_as_str("type_key")); break; case Proc__download_db: gplx.xowa.addons.bldrs.centrals.dbs.Xobc_data_db_upgrader.Check_for_updates(task_mgr); break; default: throw Err_.new_unhandled_default(proc_id); } return ""; } private static final byte[] Msg__proc = Bry_.new_a7("proc"), Msg__args = Bry_.new_a7("args"); - private static final byte Proc__reload = 0, Proc__add_work = 1, Proc__del_work = 2, Proc__del_done = 3, Proc__run_next = 4, Proc__stop_cur = 5, Proc__redo_cur = 6, Proc__download_db = 7, Proc__filter_by_lang = 8; + private static final byte Proc__reload = 0, Proc__add_work = 1, Proc__del_work = 2, Proc__del_done = 3, Proc__run_next = 4, Proc__stop_cur = 5, Proc__redo_cur = 6, Proc__download_db = 7, Proc__filter_todo = 8; private static final Hash_adp_bry proc_hash = Hash_adp_bry.cs() .Add_str_byte("reload" , Proc__reload) .Add_str_byte("add_work" , Proc__add_work) @@ -50,7 +50,7 @@ public class Xobc_task_bridge implements gplx.xowa.htmls.bridges.Bridge_cmd_itm .Add_str_byte("stop_cur" , Proc__stop_cur) .Add_str_byte("redo_cur" , Proc__redo_cur) .Add_str_byte("download_db" , Proc__download_db) - .Add_str_byte("filter_by_lang" , Proc__filter_by_lang) + .Add_str_byte("filter_todo" , Proc__filter_todo) ; public byte[] Key() {return BRIDGE_KEY;} public static final byte[] BRIDGE_KEY = Bry_.new_a7("builder_central.exec"); diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/centrals/Xobc_task_mgr.java b/400_xowa/src/gplx/xowa/addons/bldrs/centrals/Xobc_task_mgr.java index bdfe631aa..8d31ba4a7 100644 --- a/400_xowa/src/gplx/xowa/addons/bldrs/centrals/Xobc_task_mgr.java +++ b/400_xowa/src/gplx/xowa/addons/bldrs/centrals/Xobc_task_mgr.java @@ -60,11 +60,11 @@ public class Xobc_task_mgr implements Xog_json_wkr { done_mgr.Save_to(lists_nde.New_ary("done")); cbk_mgr.Send_json(cbk_trg, "xo.bldr.core.reload__recv", root); } - public void Filter_by_lang(String lang_key) { + public void Filter_todo(String lang_key, String type_key) { Gfo_log_.Instance.Info("task_mgr.filter_by_lang.bgn"); Gfobj_nde root = Gfobj_nde.New(); Gfobj_nde lists_nde = root.New_nde("lists").Add_str("list_name", "todo"); - todo_mgr.Save_to(lists_nde.New_ary("todo"), Xobc_filter_mgr.Filter_by_lang(todo_mgr, lang_key)); + todo_mgr.Save_to(lists_nde.New_ary("todo"), Xobc_filter_mgr.Filter(todo_mgr, lang_key, type_key)); cbk_mgr.Send_json(cbk_trg, "xo.bldr.core.reload_list__recv", root); } public void Transfer(Xobc_task_regy__base src, Xobc_task_regy__base trg, Xobc_task_itm task) { diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/exports/packs/files/Pack_hash_bldr.java b/400_xowa/src/gplx/xowa/addons/bldrs/exports/packs/files/Pack_hash_bldr.java index 513ffaa27..24b1d3073 100644 --- a/400_xowa/src/gplx/xowa/addons/bldrs/exports/packs/files/Pack_hash_bldr.java +++ b/400_xowa/src/gplx/xowa/addons/bldrs/exports/packs/files/Pack_hash_bldr.java @@ -36,7 +36,7 @@ class Pack_hash_bldr { for (int i = 0; i < len; ++i) { Xow_db_file file = db_mgr.Dbs__get_at(i); int pack_tid = Get_pack_tid(file.Tid()); - if (pack_tid == Xobc_import_type.Tid__ignore) continue; + if (Int_.In(pack_tid, Xobc_import_type.Tid__ignore, Xobc_import_type.Tid__wiki__text)) continue; rv.Add(zip_name_bldr, pack_tid, file.Url()); } rv.Consolidate(Xobc_import_type.Tid__wiki__srch); diff --git a/400_xowa/src/gplx/xowa/wikis/domains/Xow_domain_itm_.java b/400_xowa/src/gplx/xowa/wikis/domains/Xow_domain_itm_.java index fa3c1f598..53ccb435c 100644 --- a/400_xowa/src/gplx/xowa/wikis/domains/Xow_domain_itm_.java +++ b/400_xowa/src/gplx/xowa/wikis/domains/Xow_domain_itm_.java @@ -90,7 +90,22 @@ public class Xow_domain_itm_ { return String_.Eq(cur, "lzh"); return false; } - public static final String Lang_key__all = "*"; + public static boolean Match_type(Xow_domain_itm domain, String match) { + // exit early if "*" + if (String_.Eq(match, Type_key__all)) return true; + + // get lang + String cur = domain.Domain_type().Key_str(); + + // return true if direct match; EX: "wiki" <-> "wiki"; "wiktionary" <-> "wiktionary" + if (String_.Eq(cur, match)) return true; + + // handle special cases + if (String_.Eq(match, "wikimisc")) + return String_.In(domain.Domain_str(), "species.wikimedia.org", "www.wikidata.org", "commons.wikimedia.org"); + return false; + } + public static final String Lang_key__all = "*", Type_key__all = "*"; private static Xow_domain_itm new_other(byte[] raw) {return Xow_domain_itm.new_(raw, Xow_domain_tid_.Tid__other, Xol_lang_stub_.Key__unknown);} private static byte[] Get_lang_code_for_mw_messages_file(byte[] v) {