From 3971182fffd8cbab637b1d00b1d0c9f568306590 Mon Sep 17 00:00:00 2001 From: gnosygnu Date: Thu, 20 Oct 2016 16:45:00 -0400 Subject: [PATCH] DownloadCentral: Add basic implementation for filter_by_lang --- .../addons/bldrs/centrals/Xobc_task_bridge.java | 4 +++- .../addons/bldrs/centrals/Xobc_task_mgr.java | 14 +++++++++++--- .../centrals/dbs/datas/Xobc_task_regy_tbl.java | 7 ++++--- .../centrals/tasks/Xobc_task_regy__base.java | 17 ++++++++++++++--- 4 files changed, 32 insertions(+), 10 deletions(-) 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 4777c1b10..3f744e602 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,13 +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__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; + 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 Hash_adp_bry proc_hash = Hash_adp_bry.cs() .Add_str_byte("reload" , Proc__reload) .Add_str_byte("add_work" , Proc__add_work) @@ -49,6 +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) ; 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 d86ae4626..f7a0c61c8 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 @@ -51,15 +51,23 @@ public class Xobc_task_mgr implements Xog_json_wkr { user_db.Done_task_tbl().Select_all(todo_mgr, done_mgr); return this; } + public static final String Lang_key__all = "all"; public void Reload() { Gfo_log_.Instance.Info("task_mgr.reload.bgn"); Gfobj_nde root = Gfobj_nde.New(); Gfobj_nde lists_nde = root.New_nde("lists"); - work_mgr.Save_to(lists_nde.New_ary("work")); - todo_mgr.Save_to(lists_nde.New_ary("todo")); - done_mgr.Save_to(lists_nde.New_ary("done")); + work_mgr.Save_to(lists_nde.New_ary("work"), Lang_key__all); + todo_mgr.Save_to(lists_nde.New_ary("todo"), Lang_key__all); + done_mgr.Save_to(lists_nde.New_ary("done"), Lang_key__all); cbk_mgr.Send_json(cbk_trg, "xo.bldr.core.reload__recv", root); } + public void Filter_by_lang(String lang_key) { + Gfo_log_.Instance.Info("task_mgr.reload.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"), lang_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) { Gfo_log_.Instance.Info("task_mgr.transfer.bgn", "task_uid", task.Task_id(), "src", src.Name(), "trg", trg.Name()); src.Del_by(task.Task_id()); diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/centrals/dbs/datas/Xobc_task_regy_tbl.java b/400_xowa/src/gplx/xowa/addons/bldrs/centrals/dbs/datas/Xobc_task_regy_tbl.java index ea6f307e3..bf168e572 100644 --- a/400_xowa/src/gplx/xowa/addons/bldrs/centrals/dbs/datas/Xobc_task_regy_tbl.java +++ b/400_xowa/src/gplx/xowa/addons/bldrs/centrals/dbs/datas/Xobc_task_regy_tbl.java @@ -42,11 +42,12 @@ public class Xobc_task_regy_tbl implements Db_tbl { Db_rdr rdr = conn.Stmt_select_order(tbl_name, flds, String_.Ary_empty, fld_task_seqn).Exec_select__rls_auto(); try { while (rdr.Move_next()) { - int task_id = rdr.Read_int(fld_task_id); int task_seqn = rdr.Read_int(fld_task_seqn); - if (task_seqn == 999999) continue; + if (task_seqn == 999999) continue; // WORKAROUND: do not show old tasks; should add a status column, but don't want to change schema yet; DATE:2016-10-20 + + int task_id = rdr.Read_int(fld_task_id); int step_count = rdr.Read_int(fld_step_count); - String task_key = rdr.Read_str(fld_task_name); + String task_key = rdr.Read_str(fld_task_key); String task_name = rdr.Read_str(fld_task_name); todo_regy.Add(new Xobc_task_itm(task_id, task_seqn, step_count, task_key, task_name)); } diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/centrals/tasks/Xobc_task_regy__base.java b/400_xowa/src/gplx/xowa/addons/bldrs/centrals/tasks/Xobc_task_regy__base.java index a6c604999..ddf3fcb9f 100644 --- a/400_xowa/src/gplx/xowa/addons/bldrs/centrals/tasks/Xobc_task_regy__base.java +++ b/400_xowa/src/gplx/xowa/addons/bldrs/centrals/tasks/Xobc_task_regy__base.java @@ -30,14 +30,25 @@ public abstract class Xobc_task_regy__base { public void Del_by(int i) {hash.Del(i);} public void Sort() {hash.Sort();} - public void Save_to(Gfobj_ary ary) { + public void Save_to(Gfobj_ary ary, String lang_key) { + List_adp list = List_adp_.New(); int len = hash.Len(); + for (int i = 0; i < len; ++i) { + Xobc_task_itm sub_task = (Xobc_task_itm)hash.Get_at(i); + if (!String_.Eq(lang_key, Xobc_task_mgr.Lang_key__all)) { + String task_key = sub_task.Task_key(); + if (!String_.Has_at_bgn(task_key, lang_key + ".")) continue; + } + list.Add(sub_task); + } + + len = list.Len(); Gfobj_nde[] sub_ndes = new Gfobj_nde[len]; - ary.Ary_(sub_ndes); for (int i = 0; i < len; ++i) { Gfobj_nde sub_nde = sub_ndes[i] = Gfobj_nde.New(); - Xobc_task_itm sub_task = (Xobc_task_itm)hash.Get_at(i); + Xobc_task_itm sub_task = (Xobc_task_itm)list.Get_at(i); sub_task.Save_to(sub_nde); } + ary.Ary_(sub_ndes); } }