diff --git a/100_core/src/gplx/Gfo_usr_dlg_base.java b/100_core/src/gplx/Gfo_usr_dlg_base.java index 1cf73c444..84767b802 100644 --- a/100_core/src/gplx/Gfo_usr_dlg_base.java +++ b/100_core/src/gplx/Gfo_usr_dlg_base.java @@ -51,6 +51,7 @@ public class Gfo_usr_dlg_base implements Gfo_usr_dlg { return tmp_bfr.To_str_and_clear(); } catch (Exception e) { // NOTE: can fail if fmt has ~{}; callers should proactively remove, but for now, just return fmt if fails; EX:Page_sync and en.w:Web_crawler; DATE:2016-11-17 + Err_.Noop(e); return fmt; } } diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/utils/Xob_download_cmd.java b/400_xowa/src/gplx/xowa/bldrs/cmds/utils/Xob_download_cmd.java index ea68b6ff0..744a44c39 100644 --- a/400_xowa/src/gplx/xowa/bldrs/cmds/utils/Xob_download_cmd.java +++ b/400_xowa/src/gplx/xowa/bldrs/cmds/utils/Xob_download_cmd.java @@ -64,4 +64,24 @@ public class Xob_download_cmd extends Xob_cmd__base implements Xob_cmd { private static final String Invk_dump_date_ = "dump_date_", Invk_dump_type_ = "dump_type_", Invk_unzip_ = "unzip_" , Invk_dump_src_ = "dump_src_", Invk_dump_trg_zip_ = "dump_trg_zip_", Invk_dump_trg_bin_ = "dump_trg_bin_"; + + public static void Add_if_not_found_many(Xob_bldr bldr, Xowe_wiki wiki, String... dump_types) { + IoItmHash itm_hash = Io_mgr.Instance.QueryDir_args(wiki.Fsys_mgr().Root_dir()).ExecAsItmHash(); + for (String dump_type : dump_types) + Add_if_not_found(bldr, wiki, itm_hash, dump_type); + } + private static void Add_if_not_found(Xob_bldr bldr, Xowe_wiki wiki, IoItmHash itm_hash, String dump_type) { + if (!Found(itm_hash, dump_type)) + bldr.Cmd_mgr().Add(new Xob_download_cmd(bldr, wiki).Dump_type_(dump_type)); + } + private static boolean Found(IoItmHash hash, String dump_type) { + String match = String_.Format("{0}.sql", dump_type); // EX: "page_props.sql" + int len = hash.Count(); + for (int i = 0; i < len; i++) { + IoItm_base fil = (IoItm_base)hash.Get_at(i); + if (String_.Has(fil.Url().NameAndExt(), match)) + return true; + } + return false; + } } diff --git a/400_xowa/src/gplx/xowa/bldrs/installs/Xoi_cmd_wiki_import.java b/400_xowa/src/gplx/xowa/bldrs/installs/Xoi_cmd_wiki_import.java index 835d140e7..7dff7c988 100644 --- a/400_xowa/src/gplx/xowa/bldrs/installs/Xoi_cmd_wiki_import.java +++ b/400_xowa/src/gplx/xowa/bldrs/installs/Xoi_cmd_wiki_import.java @@ -16,9 +16,12 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.bldrs.installs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; -import gplx.core.threads.*; import gplx.xowa.bldrs.*; import gplx.xowa.guis.views.*; import gplx.xowa.bldrs.cmds.utils.*; +import gplx.core.threads.*; +import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.utils.*; +import gplx.xowa.guis.views.*; import gplx.xowa.wikis.domains.*; import gplx.xowa.htmls.hrefs.*; +import gplx.xowa.addons.wikis.ctgs.bldrs.*; class Xoi_cmd_wiki_import implements Gfo_thread_cmd { private boolean running; private Xowe_wiki wiki; @@ -86,8 +89,7 @@ class Xoi_cmd_wiki_import implements Gfo_thread_cmd { // setup category if (wiki.Domain_itm().Domain_type_id() != Xow_domain_tid_.Tid__other) { // do not add category if not wmf; note that wikia wikis will not have category dumps; DATE:2016-10-22 - bldr.Cmd_mgr().Add(new gplx.xowa.bldrs.cmds.utils.Xob_download_cmd(bldr, wiki).Dump_type_(gplx.xowa.addons.wikis.ctgs.bldrs.Xob_catlink_cmd.Dump_file_name)); - bldr.Cmd_mgr().Add(new gplx.xowa.bldrs.cmds.utils.Xob_download_cmd(bldr, wiki).Dump_type_(gplx.xowa.addons.wikis.ctgs.bldrs.Xob_pageprop_cmd.Dump_file_name)); + Xob_download_cmd.Add_if_not_found_many(bldr, wiki, Xob_catlink_cmd.Dump_file_name, Xob_pageprop_cmd.Dump_file_name); bldr.Cmd_mgr().Add(new gplx.xowa.addons.wikis.ctgs.bldrs.Xob_pageprop_cmd(bldr, wiki).Src_dir_manual_(dump_url.OwnerDir())); bldr.Cmd_mgr().Add(new gplx.xowa.addons.wikis.ctgs.bldrs.Xob_catlink_cmd(bldr, wiki).Src_dir_manual_(dump_url.OwnerDir())); }