From 8f1c368ffe7e8f27ca59fe88dd08c8351791cc7b Mon Sep 17 00:00:00 2001 From: gnosygnu Date: Mon, 21 Nov 2016 09:45:56 -0500 Subject: [PATCH] App_update: Add version_id and version_url; also add json_bridge --- .../addons/apps/updates/Xoa_update_addon.java | 7 +++- .../apps/updates/dbs/Xoa_app_version_itm.java | 8 +++- .../apps/updates/dbs/Xoa_app_version_tbl.java | 18 +++++--- .../updates/specials/Xoa_update_bridge.java | 41 +++++++++++++++++++ .../updates/specials/Xoa_update_html.java | 4 +- 5 files changed, 68 insertions(+), 10 deletions(-) create mode 100644 400_xowa/src/gplx/xowa/addons/apps/updates/specials/Xoa_update_bridge.java diff --git a/400_xowa/src/gplx/xowa/addons/apps/updates/Xoa_update_addon.java b/400_xowa/src/gplx/xowa/addons/apps/updates/Xoa_update_addon.java index 4cd38824c..0d8619c94 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/updates/Xoa_update_addon.java +++ b/400_xowa/src/gplx/xowa/addons/apps/updates/Xoa_update_addon.java @@ -18,12 +18,17 @@ along with this program. If not, see . package gplx.xowa.addons.apps.updates; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; import gplx.xowa.specials.*; import gplx.xowa.htmls.bridges.*; import gplx.xowa.addons.apps.updates.specials.*; -public class Xoa_update_addon implements Xoax_addon_itm, Xoax_addon_itm__special { +public class Xoa_update_addon implements Xoax_addon_itm, Xoax_addon_itm__special, Xoax_addon_itm__json { public Xow_special_page[] Special_pages() { return new Xow_special_page[] { Xoa_update_special.Prototype }; } + public Bridge_cmd_itm[] Json_cmds() { + return new Bridge_cmd_itm[] + { Xoa_update_bridge.Prototype + }; + } public String Addon__key() {return ADDON__KEY;} private static final String ADDON__KEY = "xowa.app.update"; public static void Init(Xoae_app app) { diff --git a/400_xowa/src/gplx/xowa/addons/apps/updates/dbs/Xoa_app_version_itm.java b/400_xowa/src/gplx/xowa/addons/apps/updates/dbs/Xoa_app_version_itm.java index 6b8b4e465..df3674ddd 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/updates/dbs/Xoa_app_version_itm.java +++ b/400_xowa/src/gplx/xowa/addons/apps/updates/dbs/Xoa_app_version_itm.java @@ -17,16 +17,20 @@ along with this program. If not, see . */ package gplx.xowa.addons.apps.updates.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; import gplx.xowa.addons.apps.updates.*; public class Xoa_app_version_itm { - public Xoa_app_version_itm(String id, String date, int priority, String summary, String details) { + public Xoa_app_version_itm(int id, String name, String date, int priority, String url, String summary, String details) { this.id = id; + this.name = name; this.date = date; this.priority = priority; + this.url = url; this.summary = summary; this.details = details; } - public String Id() {return id;} private final String id; + public int Id() {return id;} private final int id; + public String Name() {return name;} private final String name; public String Date() {return date;} private final String date; public int Priority() {return priority;} private final int priority; + public String Url() {return url;} private final String url; public String Summary() {return summary;} private final String summary; public String Details() {return details;} private final String details; diff --git a/400_xowa/src/gplx/xowa/addons/apps/updates/dbs/Xoa_app_version_tbl.java b/400_xowa/src/gplx/xowa/addons/apps/updates/dbs/Xoa_app_version_tbl.java index c916ddc1f..4e125d7e6 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/updates/dbs/Xoa_app_version_tbl.java +++ b/400_xowa/src/gplx/xowa/addons/apps/updates/dbs/Xoa_app_version_tbl.java @@ -19,20 +19,26 @@ package gplx.xowa.addons.apps.updates.dbs; import gplx.*; import gplx.xowa.*; im import gplx.dbs.*; import gplx.dbs.utls.*; public class Xoa_app_version_tbl implements Db_tbl { private final Dbmeta_fld_list flds = new Dbmeta_fld_list(); - private final String fld__version_id, fld__version_date, fld__version_priority, fld__version_summary, fld__version_details; + private final String fld__version_id, fld__version_name, fld__version_date, fld__version_priority, fld__version_url, fld__version_summary, fld__version_details; private final Db_conn conn; public Xoa_app_version_tbl(Db_conn conn) { this.conn = conn; - this.fld__version_id = flds.Add_str("version_id", 32); + this.fld__version_id = flds.Add_int_pkey("version_id"); + this.fld__version_name = flds.Add_str("version_name", 32); this.fld__version_date = flds.Add_str("version_date", 32); this.fld__version_priority = flds.Add_int("version_priority"); // 3:trivial; 5:minor; 7:major; + this.fld__version_url = flds.Add_str("version_url", 255); this.fld__version_summary = flds.Add_str("version_summary", 255); this.fld__version_details = flds.Add_text("version_details"); conn.Rls_reg(this); } public String Tbl_name() {return tbl_name;} private final String tbl_name = TBL_NAME; - public void Create_tbl() {conn.Meta_tbl_create(Dbmeta_tbl_itm.New(tbl_name, flds, Dbmeta_idx_itm.new_normal_by_tbl(tbl_name, fld__version_date, fld__version_date)));} - public Xoa_app_version_itm[] Select_by_date(String date) { // NOTE: version_ids are not easy to sort; using version_date instead + public void Create_tbl() { + conn.Meta_tbl_create(Dbmeta_tbl_itm.New(tbl_name, flds + , Dbmeta_idx_itm.new_normal_by_tbl(tbl_name, fld__version_date, fld__version_date)) + ); + } + public Xoa_app_version_itm[] Select_by_date(String date) { // NOTE: use version_date b/c (a) version_id is not available; (b) version_name is not easy to sort; String sql = Db_sql_.Make_by_fmt(String_.Ary ( "SELECT *" , "FROM app_version" @@ -51,9 +57,11 @@ public class Xoa_app_version_tbl implements Db_tbl { } private Xoa_app_version_itm Load(Db_rdr rdr) { return new Xoa_app_version_itm - ( rdr.Read_str(fld__version_id) + ( rdr.Read_int(fld__version_id) + , rdr.Read_str(fld__version_name) , rdr.Read_str(fld__version_date) , rdr.Read_int(fld__version_priority) + , rdr.Read_str(fld__version_url) , rdr.Read_str(fld__version_summary) , rdr.Read_str(fld__version_details) ); diff --git a/400_xowa/src/gplx/xowa/addons/apps/updates/specials/Xoa_update_bridge.java b/400_xowa/src/gplx/xowa/addons/apps/updates/specials/Xoa_update_bridge.java new file mode 100644 index 000000000..d99e856a8 --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/apps/updates/specials/Xoa_update_bridge.java @@ -0,0 +1,41 @@ +/* +XOWA: the XOWA Offline Wiki Application +Copyright (C) 2012 gnosygnu@gmail.com + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation, either version 3 of the +License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . +*/ +package gplx.xowa.addons.apps.updates.specials; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; import gplx.xowa.addons.apps.updates.*; +import gplx.langs.jsons.*; +import gplx.xowa.htmls.bridges.*; +public class Xoa_update_bridge implements Bridge_cmd_itm { + public void Init_by_app(Xoa_app app) { + } + public String Exec(Json_nde data) { + byte proc_id = proc_hash.Get_as_byte_or(data.Get_as_bry_or(Bridge_cmd_mgr.Msg__proc, null), Byte_ascii.Max_7_bit); + // Json_nde args = data.Get_kv(Bridge_cmd_mgr.Msg__args).Val_as_nde(); + switch (proc_id) { + case Proc__download_and_update: break; + default: throw Err_.new_unhandled_default(proc_id); + } + return ""; + } + + private static final byte Proc__download_and_update = 0; + private static final Hash_adp_bry proc_hash = Hash_adp_bry.cs() + .Add_str_byte("download_and_update" , Proc__download_and_update) + ; + + public byte[] Key() {return BRIDGE_KEY;} public static final byte[] BRIDGE_KEY = Bry_.new_a7("app.updater"); + public static final Xoa_update_bridge Prototype = new Xoa_update_bridge(); Xoa_update_bridge() {} +} diff --git a/400_xowa/src/gplx/xowa/addons/apps/updates/specials/Xoa_update_html.java b/400_xowa/src/gplx/xowa/addons/apps/updates/specials/Xoa_update_html.java index 1d2dbf0a9..8898b6a09 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/updates/specials/Xoa_update_html.java +++ b/400_xowa/src/gplx/xowa/addons/apps/updates/specials/Xoa_update_html.java @@ -42,7 +42,7 @@ class Xoa_update_html extends Xow_special_wtr__base { // convert to gui itm Xoa_app_version_itm db_itm = db_itms[0]; - Xoa_update_itm__root root = new Xoa_update_itm__root(Xoa_app_.Version, build_date, check_date, db_itm.Id(), db_itm.Date(), db_itm.Priority(), db_itm.Summary(), db_itm.Details()); + Xoa_update_itm__root root = new Xoa_update_itm__root(Xoa_app_.Version, build_date, check_date, db_itm.Name(), db_itm.Date(), db_itm.Priority(), db_itm.Summary(), db_itm.Details()); root.Itms_(To_gui_itm(db_itms)); return root; } @@ -55,7 +55,7 @@ class Xoa_update_html extends Xow_special_wtr__base { return rv; } private static Xoa_update_itm__leaf To_gui_itm(Xoa_app_version_itm db_itm) { - return new Xoa_update_itm__leaf(db_itm.Id(), db_itm.Date(), db_itm.Priority(), db_itm.Summary(), db_itm.Details()); + return new Xoa_update_itm__leaf(db_itm.Name(), db_itm.Date(), db_itm.Priority(), db_itm.Summary(), db_itm.Details()); } @Override protected void Bld_tags(Xoa_app app, Io_url addon_dir, Xopage_html_data page_data) {