DownloadCentral: Add basic implementation for filter_by_lang

v3.3.4
gnosygnu 8 years ago
parent 059e49b1bc
commit 3971182fff

@ -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__run_next: task_mgr.Work_mgr().Run_next(); break;
case Proc__stop_cur: task_mgr.Work_mgr().Stop_cur(); 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__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; 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); default: throw Err_.new_unhandled_default(proc_id);
} }
return ""; return "";
} }
private static final byte[] Msg__proc = Bry_.new_a7("proc"), Msg__args = Bry_.new_a7("args"); 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() private static final Hash_adp_bry proc_hash = Hash_adp_bry.cs()
.Add_str_byte("reload" , Proc__reload) .Add_str_byte("reload" , Proc__reload)
.Add_str_byte("add_work" , Proc__add_work) .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("stop_cur" , Proc__stop_cur)
.Add_str_byte("redo_cur" , Proc__redo_cur) .Add_str_byte("redo_cur" , Proc__redo_cur)
.Add_str_byte("download_db" , Proc__download_db) .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"); public byte[] Key() {return BRIDGE_KEY;} public static final byte[] BRIDGE_KEY = Bry_.new_a7("builder_central.exec");

@ -51,15 +51,23 @@ public class Xobc_task_mgr implements Xog_json_wkr {
user_db.Done_task_tbl().Select_all(todo_mgr, done_mgr); user_db.Done_task_tbl().Select_all(todo_mgr, done_mgr);
return this; return this;
} }
public static final String Lang_key__all = "all";
public void Reload() { public void Reload() {
Gfo_log_.Instance.Info("task_mgr.reload.bgn"); Gfo_log_.Instance.Info("task_mgr.reload.bgn");
Gfobj_nde root = Gfobj_nde.New(); Gfobj_nde root = Gfobj_nde.New();
Gfobj_nde lists_nde = root.New_nde("lists"); Gfobj_nde lists_nde = root.New_nde("lists");
work_mgr.Save_to(lists_nde.New_ary("work")); work_mgr.Save_to(lists_nde.New_ary("work"), Lang_key__all);
todo_mgr.Save_to(lists_nde.New_ary("todo")); todo_mgr.Save_to(lists_nde.New_ary("todo"), Lang_key__all);
done_mgr.Save_to(lists_nde.New_ary("done")); done_mgr.Save_to(lists_nde.New_ary("done"), Lang_key__all);
cbk_mgr.Send_json(cbk_trg, "xo.bldr.core.reload__recv", root); 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) { 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()); 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()); src.Del_by(task.Task_id());

@ -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(); Db_rdr rdr = conn.Stmt_select_order(tbl_name, flds, String_.Ary_empty, fld_task_seqn).Exec_select__rls_auto();
try { try {
while (rdr.Move_next()) { while (rdr.Move_next()) {
int task_id = rdr.Read_int(fld_task_id);
int task_seqn = rdr.Read_int(fld_task_seqn); 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); 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); 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)); todo_regy.Add(new Xobc_task_itm(task_id, task_seqn, step_count, task_key, task_name));
} }

@ -30,14 +30,25 @@ public abstract class Xobc_task_regy__base {
public void Del_by(int i) {hash.Del(i);} public void Del_by(int i) {hash.Del(i);}
public void Sort() {hash.Sort();} 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(); 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]; Gfobj_nde[] sub_ndes = new Gfobj_nde[len];
ary.Ary_(sub_ndes);
for (int i = 0; i < len; ++i) { for (int i = 0; i < len; ++i) {
Gfobj_nde sub_nde = sub_ndes[i] = Gfobj_nde.New(); 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); sub_task.Save_to(sub_nde);
} }
ary.Ary_(sub_ndes);
} }
} }

Loading…
Cancel
Save