From b333db45f8d1f56915c5d034b1399eed73fce30e Mon Sep 17 00:00:00 2001 From: gnosygnu Date: Sun, 10 Jul 2016 23:35:32 -0400 Subject: [PATCH] 'v3.7.2.1' --- 100_core/src/gplx/Bry_bfr.java | 10 +- 100_core/src/gplx/Hash_adp_bry.java | 18 +- .../src/gplx/core/btries/Btrie_fast_mgr.java | 43 + 100_core/src/gplx/core/btries/Btrie_rv.java | 5 +- .../src/gplx/core/btries/Btrie_slim_itm.java | 4 +- .../src/gplx/core/btries/Btrie_slim_mgr.java | 25 +- 100_core/src/gplx/core/envs/Env_.java | 2 +- .../gplx/core/ios/streams/Io_stream_rdr_.java | 2 + .../ios/zips/Io_zip_compress_cmd__jre.java | 9 +- .../src/gplx/core/log_msgs/Gfo_msg_log.java | 26 +- 100_core/src/gplx/core/tests/Gftest.java | 1 + .../threads/poolables/Gfo_poolable_mgr.java | 2 +- 140_dbs/src/gplx/dbs/Db_conn.java | 2 +- .../src/gplx/dbs/engines/mems/Mem_engine.java | 2 +- .../gplx/dbs/engines/mysql/Mysql_engine.java | 2 +- .../gplx/dbs/engines/noops/Noop_engine.java | 2 +- .../dbs/engines/postgres/Postgres_engine.java | 2 +- .../dbs/engines/sqlite/Sqlite_engine.java | 2 +- .../src/gplx/dbs/engines/tdbs/TdbEngine.java | 4 +- 140_dbs/src/gplx/dbs/qrys/Db_qry_dml_tst.java | 2 +- .../src/gplx/dbs/qrys/Db_qry_select_tst.java | 2 +- 140_dbs/src/gplx/dbs/qrys/Db_qry_sql.java | 4 +- 140_dbs/src/gplx/dbs/qrys/Db_qry_sql_tst.java | 5 +- 140_dbs/src/gplx/dbs/sqls/Sql_qry_wtr_.java | 10 +- .../gplx/dbs/sqls/itms/Db_obj_ary_tst.java | 2 +- .../dbs/sqls/wtrs/Sql_core_wtr__sqlite.java | 2 +- .../gplx/dbs/sqls/wtrs/Sql_core_wtr_fxt.java | 2 +- .../dbs/sqls/wtrs/Sql_qry_wtr__ansi__tst.java | 2 +- .../sqls/wtrs/Sql_qry_wtr__iosql__tst.java | 2 +- .../dbs/sqls/wtrs/Sql_schema_wtr_tst.java | 2 +- .../src/gplx/core/ios/Io_stream_zip_mgr.java | 10 +- 400_xowa/src/gplx/langs/htmls/Gfh_atr_.java | 11 +- 400_xowa/src/gplx/langs/htmls/Gfh_tag_.java | 38 + .../src/gplx/langs/htmls/docs/Gfh_tag.java | 1 + .../gplx/langs/htmls/docs/Gfh_tag_rdr.java | 131 ++- .../langs/htmls/encoders/Gfo_url_encoder.java | 22 +- .../src/gplx/langs/phps/Php_evaluator.java | 20 +- .../src/gplx/langs/phps/Php_parser_fxt.java | 292 ++++++ .../src/gplx/langs/phps/Php_parser_tst.java | 415 +------- 400_xowa/src/gplx/xowa/Xoa_app.java | 2 + 400_xowa/src/gplx/xowa/Xoa_app_.java | 2 +- 400_xowa/src/gplx/xowa/Xoa_page.java | 11 +- 400_xowa/src/gplx/xowa/Xoa_ttl.java | 106 +-- 400_xowa/src/gplx/xowa/Xoa_url.java | 3 +- 400_xowa/src/gplx/xowa/Xoae_app.java | 6 +- 400_xowa/src/gplx/xowa/Xoae_page.java | 62 +- 400_xowa/src/gplx/xowa/Xop_fxt.java | 16 +- 400_xowa/src/gplx/xowa/Xowe_wiki.java | 6 +- 400_xowa/src/gplx/xowa/Xowe_wiki_.java | 2 +- .../addons/apps/helps/logs/Xolog_special.java | 7 +- .../splits/archives/Reindex_html_dbs_cmd.java | 2 +- .../exports/splits/htmls/Split_wkr__html.java | 8 +- .../splits/htmls/Xoh_page_tbl_itm.java | 4 +- .../addons/bldrs/exports/utls/Split_tbl.java | 2 +- .../bldrs/files/Xoax_builds_files_addon.java | 5 + .../Xob_hdump_tbl_retriever__ns_to_db.java | 34 + .../files/cmds/Xobldr__lnki_temp__create.java | 33 +- .../addons/bldrs/infos/Xobc_info_html.java | 2 +- .../mass_parses/inits/Xomp_init_cmd.java | 37 + .../mass_parses/inits/Xomp_init_mgr.java | 52 ++ .../makes/Xob_hdump_tbl_retriever__xomp.java | 34 + .../mass_parses/makes/Xomp_page_itm.java | 37 + .../mass_parses/makes/Xomp_page_pool.java | 84 ++ .../makes/Xomp_page_pool_loader.java | 87 ++ .../mass_parses/makes/Xomp_parse_cmd.java | 35 + .../mass_parses/makes/Xomp_parse_mgr.java | 68 ++ .../mass_parses/makes/Xomp_parse_mgr_cfg.java | 40 + .../mass_parses/makes/Xomp_parse_wkr.java | 117 +++ .../makes/Xomp_text_db_loader.java | 94 ++ .../htmls/css/mgrs/Xowd_css_core_mgr.java | 2 +- .../randoms/specials/Rndm_root_special.java | 2 +- .../specials/Rndm_root_special_tst.java | 4 +- .../registrys/infos/Xow_info_special.java | 3 +- .../wikis/searchs/dbs/Srch_word_tbl.java | 1 + .../searchs/specials/Srch_special_page.java | 10 +- .../specials/Srch_special_searcher.java | 2 +- .../specials/Srch_special_searcher_tst.java | 4 +- 400_xowa/src/gplx/xowa/apps/Xoav_app.java | 1 + .../gplx/xowa/apps/boots/Xoa_boot_mgr.java | 2 +- .../apps/servers/http/Http_server_mgr.java | 20 +- .../gplx/xowa/apps/urls/Xow_url_parser.java | 89 +- .../cmds/ctgs/Xob_categorylinks_sql_tst.java | 6 +- .../src/gplx/xowa/bldrs/sqls/Sql_fld_mgr.java | 14 +- .../gplx/xowa/bldrs/sqls/Sql_fld_mgr_tst.java | 16 + .../src/gplx/xowa/drds/Xowd_data_tstr.java | 4 +- .../gplx/xowa/drds/pages/Xod_page_mgr.java | 16 +- .../src/gplx/xowa/files/Xof_file_wkr.java | 3 +- .../gplx/xowa/files/caches/Xou_cache_mgr.java | 2 +- .../xowa/files/fsdb/tsts/Xof_file_fxt.java | 2 +- .../xowa/files/origs/Xof_wiki_finder.java | 8 +- .../xowa/files/repos/Xofw_wiki_wkr_base.java | 4 +- .../gplx/xowa/files/repos/Xow_repo_mgr_.java | 42 +- .../files/xfers/Xof_xfer_queue_base_fxt.java | 2 +- .../gplx/xowa/guis/Xogv_page_load_wkr.java | 2 +- .../src/gplx/xowa/guis/Xogv_tab_base.java | 6 +- .../xowa/guis/history/Xog_history_mgr.java | 2 +- .../guis/history/Xog_history_stack_tst.java | 2 +- .../xowa/guis/views/Xog_launcher_tabs.java | 4 +- .../src/gplx/xowa/guis/views/Xog_tab_itm.java | 14 +- .../xowa/guis/views/Xog_tab_itm_edit_mgr.java | 22 +- .../src/gplx/xowa/guis/views/Xog_tab_mgr.java | 2 +- .../src/gplx/xowa/guis/views/Xog_win_itm.java | 13 +- .../xowa/guis/views/boots/Xog_error_win.java | 10 +- 400_xowa/src/gplx/xowa/htmls/Xoh_page.java | 70 +- 400_xowa/src/gplx/xowa/htmls/Xoh_page_.java | 2 +- .../src/gplx/xowa/htmls/Xoh_page_wtr_wkr.java | 23 +- .../gplx/xowa/htmls/Xoh_page_wtr_wkr_.java | 2 +- .../gplx/xowa/htmls/Xoh_page_wtr_wkr_tst.java | 10 +- .../gplx/xowa/htmls/core/Xow_hdump_mgr.java | 3 +- .../xowa/htmls/core/Xow_hdump_mgr__load.java | 24 +- .../htmls/core/Xow_hdump_mgr__load_tst.java | 161 ---- .../xowa/htmls/core/Xow_hdump_mgr__save.java | 20 +- .../xowa/htmls/core/bldrs/Xob_hdump_bldr.java | 67 +- .../htmls/core/bldrs/Xob_hdump_img_cmd.java | 116 --- .../Xob_hdump_tbl_retriever.java} | 11 +- .../core/bldrs/Xob_ns_to_db_wkr__html.java | 4 +- .../htmls/core/bldrs/Xob_redlink_mkr_cmd.java | 2 +- .../{Xoh_page_row.java => Xowd_html_row.java} | 2 +- .../{Xoh_page_tbl.java => Xowd_html_tbl.java} | 6 +- .../xowa/htmls/core/htmls/Xoh_html_wtr.java | 2 +- .../xowa/htmls/core/hzips/Xoh_bfr_mgr.java | 46 + .../xowa/htmls/core/hzips/Xoh_hzip_dict_.java | 28 +- .../xowa/htmls/core/hzips/Xoh_hzip_mgr.java | 11 +- .../htmls/core/hzips/Xoh_pool_mgr__data.java | 6 +- .../htmls/core/hzips/Xoh_pool_mgr__hzip.java | 6 +- .../htmls/core/hzips/Xoh_pool_mgr__wtr.java | 6 +- .../xowa/htmls/core/hzips/Xoh_stat_tbl.java | 4 +- .../xowa/htmls/core/makes/Xoh_make_mgr.java | 115 +-- .../htmls/core/makes/Xoh_make_mgr_fxt.java | 68 -- .../xowa/htmls/core/makes/Xoh_make_trie_.java | 66 -- .../htmls/core/makes/Xoh_make_trie_itm.java | 25 - .../core/makes/imgs/Xohd_img_itm__base.java | 101 -- .../makes/imgs/Xohd_img_itm__gallery_itm.java | 44 - .../makes/imgs/Xohd_img_itm__gallery_mgr.java | 35 - .../htmls/core/makes/tests/Xoh_make_fxt.java | 6 +- .../htmls/core/makes/tests/Xoh_page_chkr.java | 2 +- .../htmls/core/wkrs/Xoh_hdoc_wkr__hzip.java | 3 +- .../wkrs/addons/pgbnrs/Xoh_pgbnr_data.java | 47 + .../wkrs/addons/pgbnrs/Xoh_pgbnr_hzip.java | 50 + .../htmls/core/wkrs/hdrs/Xoh_hdr_html.java | 4 +- .../core/wkrs/hdrs/Xoh_hdr_hzip_tst.java | 4 +- .../htmls/core/wkrs/hdrs/Xoh_hdr_wtr.java | 1 + .../htmls/core/wkrs/imgs/Xoh_img_data.java | 11 +- .../wkrs/imgs/atrs/Xoh_img_xoimg_data.java | 5 +- .../htmls/core/wkrs/lnkis/Xoh_lnki_hzip.java | 2 +- .../wkrs/lnkis/htmls/Xoh_file_wtr__basic.java | 5 +- .../core/wkrs/lnkis/htmls/Xoh_lnki_wtr.java | 2 +- .../htmls/core/wkrs/tags/Xoh_tag_parser.java | 4 +- .../htmls/core/wkrs/tocs/Xoh_toc_data.java | 46 + .../htmls/core/wkrs/tocs/Xoh_toc_hzip.java | 46 + .../core/wkrs/tocs/Xoh_toc_hzip_tst.java} | 18 +- .../htmls/core/wkrs/tocs/Xoh_toc_wtr.java | 51 + .../xowa/htmls/hrefs/Xoh_href_wtr_tst.java | 2 +- .../src/gplx/xowa/htmls/js/Xoh_js_cbk.java | 6 +- .../gplx/xowa/htmls/js/Xoh_js_cbk_tst.java | 2 +- .../modules/popups/Xow_popup_html_mkr.java | 4 +- .../htmls/modules/popups/Xow_popup_mgr.java | 4 +- .../modules/popups/Xow_popup_parser.java | 2 +- .../modules/popups/Xow_popup_parser_tst.java | 6 +- .../ns_files/Xoh_ns_file_page_mgr_tst.java | 2 +- .../htmls/portal/Xoh_page_body_cls_tst.java | 2 +- .../htmls/portal/Xoh_subpages_bldr_tst.java | 2 +- .../xowa/htmls/portal/Xow_portal_mgr_tst.java | 2 +- .../gplx/xowa/htmls/tocs/Xoh_toc_htmlr.java | 4 +- .../htmls/tocs/Xoh_toc_htmlr__basic__tst.java | 4 +- .../src/gplx/xowa/htmls/tocs/Xoh_toc_itm.java | 2 +- .../xowa/htmls/tocs/Xoh_toc_wkr__txt.java | 51 +- .../tocs/Xoh_toc_wkr__txt__basic__tst.java | 9 +- .../tocs/Xoh_toc_wkr__txt__dupe__tst.java | 42 + .../tocs/Xoh_toc_wkr__txt__xnde__tst.java | 3 + .../src/gplx/xowa/htmls/tocs/Xoh_toc_wtr.java | 20 +- .../src/gplx/xowa/htmls/tocs/Xow_toc_mgr.java | 9 +- .../gplx/xowa/htmls/tocs/Xow_toc_mgr_tst.java | 2 +- .../src/gplx/xowa/langs/Xol_lang_stub_.java | 882 +++++++++--------- .../xowa/langs/bldrs/Xol_mw_lang_parser.java | 8 +- .../gplx/xowa/langs/cases/Xol_case_mgr.java | 107 ++- .../gplx/xowa/langs/funcs/Xol_func_itm.java | 1 + .../gplx/xowa/langs/funcs/Xol_func_regy.java | 48 +- .../gplx/xowa/langs/msgs/Xol_msg_itm_.java | 18 +- .../gplx/xowa/langs/msgs/Xol_msg_mgr_.java | 12 +- .../gplx/xowa/langs/msgs/Xol_msg_mgr_tst.java | 2 +- .../xowa/langs/specials/Xol_specials_mgr.java | 7 +- .../vnts/converts/Xol_convert_regy_tst.java | 2 +- .../src/gplx/xowa/parsers/Xoa_parser_mgr.java | 46 +- 400_xowa/src/gplx/xowa/parsers/Xop_ctx.java | 23 +- .../src/gplx/xowa/parsers/Xop_parser.java | 28 +- .../src/gplx/xowa/parsers/Xop_parser_.java | 2 +- .../src/gplx/xowa/parsers/Xow_parser_mgr.java | 12 +- .../gplx/xowa/parsers/amps/Xop_amp_mgr.java | 20 +- .../gplx/xowa/parsers/apos/Xop_apos_wkr.java | 2 +- .../gplx/xowa/parsers/hdrs/Xop_hdr_log.java | 4 +- .../xowa/parsers/lists/HierPosAryBldr.java | 4 +- .../xowa/parsers/lists/Xop_list_tkn_.java | 8 +- .../gplx/xowa/parsers/lnkes/Xop_lnke_wkr.java | 2 +- .../gplx/xowa/parsers/lnkis/Xop_lnki_wkr.java | 2 +- .../xowa/parsers/lnkis/Xop_lnki_wkr_.java | 7 +- .../lnkis/Xop_lnki_wkr__basic_tst.java | 10 +- .../lnkis/Xop_lnki_wkr__invalid_tst.java | 2 +- .../xowa/parsers/logs/Xop_log_basic_wkr.java | 2 +- .../xowa/parsers/miscs/Xop_under_lxr.java | 83 +- .../xowa/parsers/miscs/Xop_under_lxr_tst.java | 4 +- .../src/gplx/xowa/parsers/tmpls/Arg_bldr.java | 4 +- .../xowa/parsers/tmpls/Xop_subst_tst.java | 2 - .../xowa/parsers/tmpls/Xot_defn_tmpl.java | 56 +- .../tmpls/Xot_defn_trace_brief_tst.java | 2 +- .../gplx/xowa/parsers/tmpls/Xot_invk_tkn.java | 32 +- .../gplx/xowa/parsers/tmpls/Xot_invk_wkr.java | 27 +- .../tmpls/Xot_invk_wkr__basic__tst.java | 2 +- .../tmpls/Xot_invk_wkr__missing__tst.java | 4 +- .../gplx/xowa/parsers/tmpls/Xot_prm_wkr.java | 2 +- .../xowa/parsers/utils/Xop_redirect_mgr.java | 27 +- .../parsers/utils/Xop_redirect_mgr_tst.java | 10 +- .../gplx/xowa/parsers/xndes/Xop_xnde_lxr.java | 2 +- .../gplx/xowa/parsers/xndes/Xop_xnde_wkr.java | 10 +- .../xowa/parsers/xndes/Xop_xnde_wkr_.java | 58 +- .../Xop_xnde_wkr__include_basic_tst.java | 2 +- .../gplx/xowa/specials/Xow_special_mgr.java | 2 +- .../specials/allPages/Xows_page_allpages.java | 6 +- .../allPages/Xows_page_allpages_tst.java | 4 +- .../xowa/specials/movePage/Move_page.java | 15 +- .../gplx/xowa/specials/nearby/Nearby_mgr.java | 8 +- .../statistics/Xop_statistics_page.java | 2 +- .../xowa/default_tab/Default_tab_page.java | 2 +- .../specials/xowa/diags/Xows_diag_page.java | 2 +- .../popup_history/Popup_history_page.java | 2 +- .../xowa/system_data/System_data_page.java | 2 +- 400_xowa/src/gplx/xowa/users/Xou_user_.java | 6 +- 400_xowa/src/gplx/xowa/users/Xoue_user.java | 4 +- .../gplx/xowa/users/bmks/Xows_bmk_page.java | 2 +- .../xowa/users/history/Xou_history_html.java | 2 +- .../xowa/users/history/Xou_history_mgr.java | 5 +- .../users/history/Xou_history_mgr_tst.java | 4 +- .../users/history/Xoud_history_special.java | 2 +- .../src/gplx/xowa/users/prefs/Prefs_mgr.java | 2 +- .../src/gplx/xowa/wikis/Xoae_wiki_mgr.java | 16 +- 400_xowa/src/gplx/xowa/wikis/Xowv_wiki.java | 8 +- .../xowa/wikis/caches/Xow_page_cache.java | 44 +- .../gplx/xowa/wikis/ctgs/Xoctg_html_mgr.java | 8 +- .../xowa/wikis/ctgs/Xoctg_html_mgr_tst.java | 8 +- .../xowa/wikis/ctgs/Xoctg_pagelist_itms.java | 2 +- .../xowa/wikis/data/Xow_data_mgr_tst.java | 6 +- .../src/gplx/xowa/wikis/data/Xow_db_file.java | 4 +- .../data/fetchers/Xow_page_fetcher_wiki.java | 4 +- .../xowa/wikis/data/tbls/Xowd_page_tbl.java | 27 +- .../xowa/wikis/data/tbls/Xowd_text_tbl.java | 31 +- .../wikis/data/tbls/Xowd_wbase_qid_tbl.java | 23 +- .../xowa/wikis/dbs/Xodb_load_mgr_sql.java | 4 +- .../xowa/wikis/dbs/Xodb_load_mgr_txt.java | 2 +- .../xowa/wikis/dbs/Xodb_save_mgr_sql.java | 10 +- .../xowa/wikis/dbs/Xodb_save_mgr_txt.java | 2 +- .../xowa/wikis/domains/Xow_domain_regy.java | 1 + .../gplx/xowa/wikis/metas/Xow_wiki_props.java | 2 +- .../src/gplx/xowa/wikis/nss/Xow_ns_mgr.java | 11 +- .../xowa/wikis/pages/Xopage_html_data.java | 2 +- .../xowa/wikis/pages/Xopg_hdump_data.java | 37 - .../xowa/wikis/pages/Xopg_page_heading.java | 1 + .../gplx/xowa/wikis/pages/Xow_page_mgr.java | 49 +- .../gplx/xowa/wikis/pages/Xowe_page_mgr.java | 4 +- .../xowa/wikis/pages/dbs/Xopg_db_data.java | 30 + .../xowa/wikis/pages/dbs/Xopg_db_html.java | 28 + .../xowa/wikis/pages/dbs/Xopg_db_page.java | 60 ++ .../Xopg_db_protection.java} | 15 +- .../pages/dbs/Xopg_db_text.java} | 9 +- .../pages/hdumps/Xopg_hdump_data.java} | 17 +- .../pages/{ => htmls}/Xopg_html_data.java | 14 +- .../wikis/pages/lnkis/Xopg_lnki_list.java | 3 +- .../wikis/pages/lnkis/Xopg_redlink_mgr.java | 2 +- .../pages/redirects/Xopg_redirect_data.java | 34 + .../pages/redirects/Xopg_redirect_itm.java | 29 + .../wikis/tdbs/hives/Xowd_hive_mgr_tst.java | 2 +- .../xowa/wikis/ttls/Xoa_ttl__err_tst.java | 33 + .../ttls/Xoa_ttl_fxt.java} | 26 +- .../src/gplx/xowa/wikis/ttls/Xop_ttl_log.java | 57 -- .../xowa/wikis/ttls/Xow_ttl__err_tst.java | 39 - .../src/gplx/xowa/wikis/ttls/Xow_ttl_fxt.java | 2 +- .../htmls/Xoa_sitelink_div_wtr_fxt.java | 2 +- .../xowa/xtns/dynamicPageList/Dpl_itm.java | 2 +- .../xowa/xtns/dynamicPageList/Dpl_xnde.java | 2 +- .../xtns/dynamicPageList/Dpl_xnde_tst.java | 4 +- .../gplx/xowa/xtns/gallery/Gallery_itm.java | 17 - .../xowa/xtns/gallery/Gallery_mgr_wtr.java | 8 +- .../xowa/xtns/gallery/Gallery_parser.java | 4 +- .../xowa/xtns/gallery/Gallery_xnde_tst.java | 6 +- .../xowa/xtns/geoCrumbs/Geoc_isin_func.java | 4 +- .../src/gplx/xowa/xtns/imaps/Imap_map.java | 3 +- .../src/gplx/xowa/xtns/imaps/Imap_parser.java | 2 +- .../xowa/xtns/insiders/Insider_html_bldr.java | 2 +- .../gplx/xowa/xtns/listings/Listing_xnde.java | 33 +- .../xowa/xtns/listings/Listing_xtn_mgr.java | 6 +- .../src/gplx/xowa/xtns/lst/Lst_pfunc_wkr.java | 6 +- .../xowa/xtns/pagebanners/Pgbnr_func.java | 28 +- .../xowa/xtns/pagebanners/Pgbnr_func_tst.java | 26 +- .../gplx/xowa/xtns/pagebanners/Pgbnr_itm.java | 27 +- .../xowa/xtns/pagebanners/Pgbnr_xtn_mgr.java | 16 +- .../src/gplx/xowa/xtns/pfuncs/Pf_func_.java | 12 +- .../xtns/pfuncs/exprs/Pfunc_expr_shunter.java | 223 ++--- .../xtns/pfuncs/ifs/Pfunc_ifexist_mgr.java | 2 +- .../xowa/xtns/pfuncs/ifs/Pfunc_switch.java | 106 +-- .../xtns/pfuncs/pages/Pfunc_displaytitle.java | 2 +- .../xtns/pfuncs/pages/Pfunc_rev_props.java | 14 +- .../pfuncs/pages/Pfunc_rev_props_tst.java | 13 +- .../xowa/xtns/pfuncs/times/Pft_fmt_itm_.java | 89 +- .../xtns/pfuncs/times/Pft_func_date_int.java | 4 +- .../xtns/pfuncs/times/Pft_func_date_name.java | 2 +- .../pfuncs/times/Pft_func_date_rev_tst.java | 4 +- .../times/Pft_func_formatdate_bldr.java | 68 +- .../times/Pft_func_time__basic__tst.java | 2 +- .../gplx/xowa/xtns/pfuncs/times/Pxd_itm_.java | 16 +- .../xowa/xtns/pfuncs/times/Pxd_itm_int.java | 32 +- .../xowa/xtns/pfuncs/times/Pxd_itm_misc.java | 37 +- .../xtns/pfuncs/times/Pxd_itm_month_name.java | 86 +- .../xowa/xtns/pfuncs/times/Pxd_parser.java | 17 +- .../xtns/pfuncs/ttls/Pfunc_anchorencode.java | 2 +- .../xowa/xtns/pfuncs/ttls/Pfunc_filepath.java | 10 +- .../xtns/pfuncs/ttls/Pfunc_filepath_tst.java | 1 - .../xowa/xtns/pfuncs/ttls/Pfunc_rel2abs.java | 5 +- .../xtns/pfuncs/ttls/Pfunc_titleparts.java | 50 +- .../gplx/xowa/xtns/pfuncs/ttls/Pfunc_ttl.java | 2 +- .../xowa/xtns/pfuncs/ttls/Pfunc_urlfunc.java | 2 +- .../gplx/xowa/xtns/poems/Poem_xtn_mgr.java | 2 +- .../xtns/proofreadPage/Pp_index_parser.java | 4 +- .../xowa/xtns/proofreadPage/Pp_pages_nde.java | 6 +- .../xtns/relatedArticles/Articles_func.java | 2 +- .../relatedSites/Sites_html_bldr_tst.java | 2 +- .../gplx/xowa/xtns/scribunto/Scrib_core.java | 26 +- .../xowa/xtns/scribunto/Scrib_core_fxt.java | 6 +- .../xowa/xtns/scribunto/Scrib_core_mgr.java | 64 ++ .../xtns/scribunto/Scrib_invoke_func.java | 15 +- .../xtns/scribunto/Scrib_invoke_func_fxt.java | 2 +- .../xowa/xtns/scribunto/Scrib_proc_mgr.java | 26 +- .../xowa/xtns/scribunto/Scrib_xtn_mgr.java | 4 +- .../scribunto/engines/luaj/Luaj_engine.java | 14 +- .../scribunto/engines/luaj/Luaj_server.java | 31 +- .../engines/luaj/Luaj_server_func_dbg.java | 5 +- .../engines/luaj/Luaj_server_func_recv.java | 5 +- .../scribunto/engines/luaj/Luaj_value_.java | 2 +- .../engines/mocks/Mock_scrib_fxt.java | 2 +- .../scribunto/libs/Scrib_lib_language.java | 2 +- .../scribunto/libs/Scrib_lib_message.java | 4 +- .../xtns/scribunto/libs/Scrib_lib_mw.java | 29 +- .../xtns/scribunto/libs/Scrib_lib_site.java | 12 +- .../libs/Scrib_lib_text__json_util.java | 8 +- .../xtns/scribunto/libs/Scrib_lib_title.java | 18 +- .../scribunto/libs/Scrib_lib_title_tst.java | 1 - .../xtns/scribunto/libs/Scrib_lib_uri.java | 4 +- .../scribunto/libs/Scrib_lib_wikibase.java | 2 +- .../libs/Scrib_lib_wikibase_srl_tst.java | 6 +- .../xtns/scribunto/libs/Xow_wiki_tst.java | 8 +- .../xtns/translates/Xop_languages_xnde.java | 6 +- .../xtns/translates/Xop_mylanguage_page.java | 2 +- .../translates/Xop_mylanguage_page_tst.java | 4 +- .../xtns/translates/Xop_translate_xnde.java | 2 +- .../xowa/xtns/translates/Xop_tvar_lxr.java | 6 +- .../gplx/xowa/xtns/wdatas/Wbase_doc_mgr.java | 4 +- .../xtns/wdatas/Wdata_prop_val_visitor.java | 8 +- .../gplx/xowa/xtns/wdatas/Wdata_wiki_mgr.java | 56 +- .../xowa/xtns/wdatas/Wdata_wiki_mgr_fxt.java | 4 +- .../xowa/xtns/wdatas/Wdata_wiki_mgr_tst.java | 2 +- .../xtns/wdatas/Wdata_xwiki_link_wtr.java | 2 +- .../xtns/wdatas/core/Wdata_dict_val_tid.java | 6 +- .../wdatas/parsers/Wdata_doc_parser_v2.java | 24 +- .../xtns/wdatas/pfuncs/Wdata_pf_property.java | 66 +- .../specials/Wdata_itemByTitle_page.java | 6 +- .../specials/Wdata_itemByTitle_page_tst.java | 4 +- .../xowa/xtns/xowa_cmds/Xop_xowa_cmd.java | 2 +- .../xtns/xowa_cmds/Xox_xowa_html_cmd.java | 2 +- 366 files changed, 4468 insertions(+), 3460 deletions(-) create mode 100644 400_xowa/src/gplx/langs/phps/Php_parser_fxt.java create mode 100644 400_xowa/src/gplx/xowa/addons/bldrs/files/cmds/Xob_hdump_tbl_retriever__ns_to_db.java create mode 100644 400_xowa/src/gplx/xowa/addons/bldrs/mass_parses/inits/Xomp_init_cmd.java create mode 100644 400_xowa/src/gplx/xowa/addons/bldrs/mass_parses/inits/Xomp_init_mgr.java create mode 100644 400_xowa/src/gplx/xowa/addons/bldrs/mass_parses/makes/Xob_hdump_tbl_retriever__xomp.java create mode 100644 400_xowa/src/gplx/xowa/addons/bldrs/mass_parses/makes/Xomp_page_itm.java create mode 100644 400_xowa/src/gplx/xowa/addons/bldrs/mass_parses/makes/Xomp_page_pool.java create mode 100644 400_xowa/src/gplx/xowa/addons/bldrs/mass_parses/makes/Xomp_page_pool_loader.java create mode 100644 400_xowa/src/gplx/xowa/addons/bldrs/mass_parses/makes/Xomp_parse_cmd.java create mode 100644 400_xowa/src/gplx/xowa/addons/bldrs/mass_parses/makes/Xomp_parse_mgr.java create mode 100644 400_xowa/src/gplx/xowa/addons/bldrs/mass_parses/makes/Xomp_parse_mgr_cfg.java create mode 100644 400_xowa/src/gplx/xowa/addons/bldrs/mass_parses/makes/Xomp_parse_wkr.java create mode 100644 400_xowa/src/gplx/xowa/addons/bldrs/mass_parses/makes/Xomp_text_db_loader.java delete mode 100644 400_xowa/src/gplx/xowa/htmls/core/Xow_hdump_mgr__load_tst.java delete mode 100644 400_xowa/src/gplx/xowa/htmls/core/bldrs/Xob_hdump_img_cmd.java rename 400_xowa/src/gplx/xowa/htmls/core/{makes/imgs/Xohd_img_itm.java => bldrs/Xob_hdump_tbl_retriever.java} (68%) rename 400_xowa/src/gplx/xowa/htmls/core/dbs/{Xoh_page_row.java => Xowd_html_row.java} (97%) rename 400_xowa/src/gplx/xowa/htmls/core/dbs/{Xoh_page_tbl.java => Xowd_html_tbl.java} (96%) create mode 100644 400_xowa/src/gplx/xowa/htmls/core/hzips/Xoh_bfr_mgr.java delete mode 100644 400_xowa/src/gplx/xowa/htmls/core/makes/Xoh_make_mgr_fxt.java delete mode 100644 400_xowa/src/gplx/xowa/htmls/core/makes/Xoh_make_trie_.java delete mode 100644 400_xowa/src/gplx/xowa/htmls/core/makes/Xoh_make_trie_itm.java delete mode 100644 400_xowa/src/gplx/xowa/htmls/core/makes/imgs/Xohd_img_itm__base.java delete mode 100644 400_xowa/src/gplx/xowa/htmls/core/makes/imgs/Xohd_img_itm__gallery_itm.java delete mode 100644 400_xowa/src/gplx/xowa/htmls/core/makes/imgs/Xohd_img_itm__gallery_mgr.java create mode 100644 400_xowa/src/gplx/xowa/htmls/core/wkrs/addons/pgbnrs/Xoh_pgbnr_data.java create mode 100644 400_xowa/src/gplx/xowa/htmls/core/wkrs/addons/pgbnrs/Xoh_pgbnr_hzip.java create mode 100644 400_xowa/src/gplx/xowa/htmls/core/wkrs/tocs/Xoh_toc_data.java create mode 100644 400_xowa/src/gplx/xowa/htmls/core/wkrs/tocs/Xoh_toc_hzip.java rename 400_xowa/src/gplx/xowa/{wikis/data/tbls/Xowd_html_row.java => htmls/core/wkrs/tocs/Xoh_toc_hzip_tst.java} (55%) create mode 100644 400_xowa/src/gplx/xowa/htmls/core/wkrs/tocs/Xoh_toc_wtr.java create mode 100644 400_xowa/src/gplx/xowa/htmls/tocs/Xoh_toc_wkr__txt__dupe__tst.java delete mode 100644 400_xowa/src/gplx/xowa/wikis/pages/Xopg_hdump_data.java create mode 100644 400_xowa/src/gplx/xowa/wikis/pages/dbs/Xopg_db_data.java create mode 100644 400_xowa/src/gplx/xowa/wikis/pages/dbs/Xopg_db_html.java create mode 100644 400_xowa/src/gplx/xowa/wikis/pages/dbs/Xopg_db_page.java rename 400_xowa/src/gplx/xowa/wikis/pages/{Xopg_revision_data.java => dbs/Xopg_db_protection.java} (54%) rename 400_xowa/src/gplx/xowa/{htmls/core/makes/imgs/Xohd_img_itm__img.java => wikis/pages/dbs/Xopg_db_text.java} (63%) rename 400_xowa/src/gplx/xowa/{htmls/core/makes/imgs/Xohd_img_tid.java => wikis/pages/hdumps/Xopg_hdump_data.java} (60%) rename 400_xowa/src/gplx/xowa/wikis/pages/{ => htmls}/Xopg_html_data.java (90%) create mode 100644 400_xowa/src/gplx/xowa/wikis/pages/redirects/Xopg_redirect_data.java create mode 100644 400_xowa/src/gplx/xowa/wikis/pages/redirects/Xopg_redirect_itm.java create mode 100644 400_xowa/src/gplx/xowa/wikis/ttls/Xoa_ttl__err_tst.java rename 400_xowa/src/gplx/xowa/{htmls/core/wkrs/lnkis/htmls/Xoh_arg_img_core__hdump.java => wikis/ttls/Xoa_ttl_fxt.java} (52%) delete mode 100644 400_xowa/src/gplx/xowa/wikis/ttls/Xop_ttl_log.java delete mode 100644 400_xowa/src/gplx/xowa/wikis/ttls/Xow_ttl__err_tst.java create mode 100644 400_xowa/src/gplx/xowa/xtns/scribunto/Scrib_core_mgr.java diff --git a/100_core/src/gplx/Bry_bfr.java b/100_core/src/gplx/Bry_bfr.java index 9d139afee..b22047c9a 100644 --- a/100_core/src/gplx/Bry_bfr.java +++ b/100_core/src/gplx/Bry_bfr.java @@ -32,10 +32,8 @@ public class Bry_bfr { } public Bry_bfr Mkr_rls() { if (mkr_mgr != null) { - synchronized (mkr_mgr) { - mkr_mgr.Rls(mkr_idx); - } synchronized (this) { + mkr_mgr.Rls(mkr_idx); this.mkr_mgr = null; this.mkr_idx = -1; } @@ -53,11 +51,11 @@ public class Bry_bfr { rv = To_bry(); this.Clear(); if (reset > 0) Reset_if_gt(reset); - synchronized (mkr_mgr) { // SAME: Mkr_rls() + synchronized (this) { // SAME: Mkr_rls() mkr_mgr.Rls(mkr_idx); + mkr_idx = -1; // TS: DATE:2016-07-06 + mkr_mgr = null; } - mkr_mgr = null; - mkr_idx = -1; } return rv; } diff --git a/100_core/src/gplx/Hash_adp_bry.java b/100_core/src/gplx/Hash_adp_bry.java index db5108d5f..bc8070c57 100644 --- a/100_core/src/gplx/Hash_adp_bry.java +++ b/100_core/src/gplx/Hash_adp_bry.java @@ -19,14 +19,14 @@ package gplx; import gplx.core.primitives.*; import gplx.core.intls.*; public class Hash_adp_bry extends gplx.core.lists.Hash_adp_base implements Hash_adp { - private final Hash_adp_bry_itm_base proto, key_ref; + private final Hash_adp_bry_itm_base proto, key_ref; Hash_adp_bry(Hash_adp_bry_itm_base proto) { this.proto = proto; this.key_ref = proto.New(); } - @Override protected Object Fetch_base(Object key) {return super.Fetch_base(key_ref.Init((byte[])key));} - @Override protected void Del_base(Object key) {super.Del_base(key_ref.Init((byte[])key));} - @Override protected boolean Has_base(Object key) {return super.Has_base(key_ref.Init((byte[])key));} + @Override protected Object Fetch_base(Object key) {synchronized (key_ref) {return super.Fetch_base(key_ref.Init((byte[])key));}} // TS: DATE:2016-07-06 + @Override protected void Del_base(Object key) {synchronized (key_ref) {super.Del_base(key_ref.Init((byte[])key));}}// TS: DATE:2016-07-06 + @Override protected boolean Has_base(Object key) {synchronized (key_ref) {return super.Has_base(key_ref.Init((byte[])key));}}// TS: DATE:2016-07-06 public int Get_as_int(byte[] key) {return Get_as_int(key, 0, key.length);} public int Get_as_int(byte[] key, int bgn, int end) { int rv = Get_as_int_or(key, bgn, end, Int_.Min_value); if (rv == Int_.Min_value) throw Err_.new_("core", "unknown key", "key", key); @@ -42,8 +42,8 @@ public class Hash_adp_bry extends gplx.core.lists.Hash_adp_base implements Hash_ Object o = Get_by_mid(key, bgn, end); return o == null ? or : ((Byte_obj_val)o).Val(); } - public Object Get_by_bry(byte[] src) {return super.Fetch_base(key_ref.Init(src));} - public Object Get_by_mid(byte[] src, int bgn, int end) {return super.Fetch_base(key_ref.Init(src, bgn, end));} + public Object Get_by_bry(byte[] src) {synchronized (key_ref) {return super.Fetch_base(key_ref.Init(src));}} // TS: DATE:2016-07-06 + public Object Get_by_mid(byte[] src, int bgn, int end) {synchronized (key_ref) {return super.Fetch_base(key_ref.Init(src, bgn, end));}}// TS: DATE:2016-07-06 public Hash_adp_bry Add_byte_int(byte key, int val) {this.Add_base(new byte[]{key}, Int_obj_val.new_(val)); return this;} public Hash_adp_bry Add_bry_byte(byte[] key, byte val) {this.Add_base(key, Byte_obj_val.new_(val)); return this;} public Hash_adp_bry Add_bry_int(byte[] key, int val) {this.Add_base(key, Int_obj_val.new_(val)); return this;} @@ -108,7 +108,7 @@ class Hash_adp_bry_itm_cs extends Hash_adp_bry_itm_base { } return true; } - public static final Hash_adp_bry_itm_cs Instance = new Hash_adp_bry_itm_cs(); Hash_adp_bry_itm_cs() {} + public static final Hash_adp_bry_itm_cs Instance = new Hash_adp_bry_itm_cs(); Hash_adp_bry_itm_cs() {} } class Hash_adp_bry_itm_ci_a7 extends Hash_adp_bry_itm_base { private byte[] src; int src_bgn, src_end; @@ -141,10 +141,10 @@ class Hash_adp_bry_itm_ci_a7 extends Hash_adp_bry_itm_base { } return true; } - public static final Hash_adp_bry_itm_ci_a7 Instance = new Hash_adp_bry_itm_ci_a7(); Hash_adp_bry_itm_ci_a7() {} + public static final Hash_adp_bry_itm_ci_a7 Instance = new Hash_adp_bry_itm_ci_a7(); Hash_adp_bry_itm_ci_a7() {} } class Hash_adp_bry_itm_ci_u8 extends Hash_adp_bry_itm_base { - private final Gfo_case_mgr case_mgr; + private final Gfo_case_mgr case_mgr; Hash_adp_bry_itm_ci_u8(Gfo_case_mgr case_mgr) {this.case_mgr = case_mgr;} private byte[] src; int src_bgn, src_end; @Override public Hash_adp_bry_itm_base New() {return new Hash_adp_bry_itm_ci_u8(case_mgr);} diff --git a/100_core/src/gplx/core/btries/Btrie_fast_mgr.java b/100_core/src/gplx/core/btries/Btrie_fast_mgr.java index 3ee5e23cc..649916bea 100644 --- a/100_core/src/gplx/core/btries/Btrie_fast_mgr.java +++ b/100_core/src/gplx/core/btries/Btrie_fast_mgr.java @@ -21,6 +21,49 @@ public class Btrie_fast_mgr { private ByteTrieItm_fast root; public boolean CaseAny() {return root.CaseAny();} public Btrie_fast_mgr CaseAny_(boolean v) {root.CaseAny_(v); return this;} public int Match_pos() {return match_pos;} private int match_pos; + +// Btrie_rv Match_at_w_b0_and_rls(byte[] src, int bgn, int end) {return Match_at_w_b0_and_rls(src[bgn], src, bgn, end);} +// Btrie_rv Match_at_w_b0_and_rls(byte b, byte[] src, int bgn_pos, int src_end) { +// Btrie_rv rv = ((Btrie_rv)Btrie_rv.Pool__mgr.Get_safe()); +// Match_at_w_b0(rv, b, src, bgn_pos, src_end); +// return rv; +// } + public Object Match_at_w_b0(Btrie_rv rv, byte b, byte[] src, int bgn_pos, int src_end) { + Object rv_obj = null; + int rv_pos = bgn_pos; + ByteTrieItm_fast nxt = root.Ary_find(b); + if (nxt == null) { // nxt does not have b; return rv; + rv.Init(rv_pos, rv_obj); + return rv_obj; + } + int cur_pos = bgn_pos + 1; + ByteTrieItm_fast cur = root; + while (true) { + if (nxt.Ary_is_empty()) { // nxt is leaf; return nxt.Val() (which should be non-null) + rv_obj = nxt.Val(); + rv.Init(cur_pos, rv_obj); + return rv_obj; + } + Object nxt_val = nxt.Val(); + if (nxt_val != null) { // nxt is node; cache rv (in case of false match) + rv_pos = cur_pos; + rv_obj = nxt_val; + } + if (cur_pos == src_end) { // eos; exit + rv.Init(rv_pos, rv_obj); + return rv_obj; + } + b = src[cur_pos]; + cur = nxt; + nxt = cur.Ary_find(b); + if (nxt == null) { + rv.Init(rv_pos, rv_obj); + return rv_obj; + } + ++cur_pos; + } + } + public Object Match_exact(byte[] src, int bgn_pos, int end_pos) { Object rv = Match_bgn_w_byte(src[bgn_pos], src, bgn_pos, end_pos); return rv == null ? null : match_pos - bgn_pos == end_pos - bgn_pos ? rv : null; diff --git a/100_core/src/gplx/core/btries/Btrie_rv.java b/100_core/src/gplx/core/btries/Btrie_rv.java index 7aafde32f..f92eb01cd 100644 --- a/100_core/src/gplx/core/btries/Btrie_rv.java +++ b/100_core/src/gplx/core/btries/Btrie_rv.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.core.btries; import gplx.*; import gplx.core.*; import gplx.core.threads.poolables.*; -public class Btrie_rv implements Gfo_poolable_itm { +public class Btrie_rv { public Object Obj() {return obj;} private Object obj; public int Pos() {return pos;} private int pos; public Btrie_rv Init(int pos, Object obj) { @@ -25,7 +25,4 @@ public class Btrie_rv implements Gfo_poolable_itm { this.pos = pos; return this; } - - public void Pool__rls () {pool_mgr.Rls_fast(pool_idx);} private Gfo_poolable_mgr pool_mgr; private int pool_idx; - public Gfo_poolable_itm Pool__make (Gfo_poolable_mgr mgr, int idx, Object[] args) {Btrie_rv rv = new Btrie_rv(); rv.pool_mgr = mgr; rv.pool_idx = idx; return rv;} } diff --git a/100_core/src/gplx/core/btries/Btrie_slim_itm.java b/100_core/src/gplx/core/btries/Btrie_slim_itm.java index 69409d628..61b487fbc 100644 --- a/100_core/src/gplx/core/btries/Btrie_slim_itm.java +++ b/100_core/src/gplx/core/btries/Btrie_slim_itm.java @@ -79,7 +79,9 @@ public class Btrie_slim_itm { Btrie_slim_itm rv = new Btrie_slim_itm(b, val, case_any); ary[ary_len] = rv; ary_len = new_len; - ByteHashItm_sorter.Instance.Sort(ary, ary_len); + synchronized (ByteHashItm_sorter.Instance) {// TS: DATE:2016-07-06 + ByteHashItm_sorter.Instance.Sort(ary, ary_len); + } return rv; } public void Ary_del(byte b) { diff --git a/100_core/src/gplx/core/btries/Btrie_slim_mgr.java b/100_core/src/gplx/core/btries/Btrie_slim_mgr.java index d7bb1c9ac..86e9ed450 100644 --- a/100_core/src/gplx/core/btries/Btrie_slim_mgr.java +++ b/100_core/src/gplx/core/btries/Btrie_slim_mgr.java @@ -18,29 +18,34 @@ along with this program. If not, see . package gplx.core.btries; import gplx.*; import gplx.core.*; import gplx.core.primitives.*; import gplx.core.threads.poolables.*; public class Btrie_slim_mgr implements Btrie_mgr { - private static Gfo_poolable_mgr pool_rv = Gfo_poolable_mgr.New_rlsable(new Btrie_rv(), Object_.Ary_empty, 0, 1024); Btrie_slim_mgr(boolean case_match) {root = new Btrie_slim_itm(Byte_.Zero, null, !case_match);} private Btrie_slim_itm root; public int Count() {return count;} private int count; public int Match_pos() {return match_pos;} private int match_pos; - public Btrie_rv Match_at(byte[] src, int bgn, int end) {return bgn < end ? Match_at_w_b0(src[bgn], src, bgn, end) : null;} // handle out of bounds gracefully; EX: Match_bgn("abc", 3, 3) should return null not fail - public Btrie_rv Match_at_w_b0(byte b, byte[] src, int bgn_pos, int src_end) { + public Object Match_at(Btrie_rv rv, byte[] src, int bgn_pos, int end_pos) {return bgn_pos < end_pos ? Match_at_w_b0(rv, src[bgn_pos], src, bgn_pos, end_pos) : null;} // handle out of bounds gracefully; EX: Match_bgn("abc", 3, 3) should return null not fail + public Object Match_at_w_b0(Btrie_rv rv, byte b, byte[] src, int bgn_pos, int src_end) { Object rv_obj = null; int rv_pos = bgn_pos; int cur_pos = bgn_pos; Btrie_slim_itm cur = root; while (true) { Btrie_slim_itm nxt = cur.Ary_find(b); - if (nxt == null) - return ((Btrie_rv)pool_rv.Get_safe()).Init(cur_pos, rv_obj); // nxt does not hav b; return rv_obj; + if (nxt == null) { + rv.Init(cur_pos, rv_obj); // nxt does not hav b; return rv_obj; + return rv_obj; + } ++cur_pos; if (nxt.Ary_is_empty()) { - return ((Btrie_rv)pool_rv.Get_safe()).Init(cur_pos, nxt.Val()); // nxt is leaf; return nxt.Val() (which should be non-null) + rv_obj = nxt.Val(); + rv.Init(cur_pos, rv_obj); // nxt is leaf; return nxt.Val() (which should be non-null) + return rv_obj; } Object nxt_val = nxt.Val(); - if (nxt_val != null) {rv_pos = cur_pos; rv_obj = nxt_val;} // nxt is node; cache rv_obj (in case of false match) - if (cur_pos == src_end) - return ((Btrie_rv)pool_rv.Get_safe()).Init(rv_pos, rv_obj); // increment cur_pos and exit if src_end + if (nxt_val != null) {rv_pos = cur_pos; rv_obj = nxt_val;} // nxt is node; cache rv_obj (in case of false match) + if (cur_pos == src_end) { + rv.Init(rv_pos, rv_obj); // increment cur_pos and exit if src_end + return rv_obj; + } b = src[cur_pos]; cur = nxt; } @@ -51,7 +56,7 @@ public class Btrie_slim_mgr implements Btrie_mgr { Object rv = Match_bgn_w_byte(src[bgn_pos], src, bgn_pos, end_pos); return rv == null ? null : match_pos - bgn_pos == end_pos - bgn_pos ? rv : null; } - public Object Match_bgn(byte[] src, int bgn_pos, int end_pos) {return bgn_pos < end_pos ? Match_bgn_w_byte(src[bgn_pos], src, bgn_pos, end_pos) : null;} // handle out of bounds gracefully; EX: Match_bgn("abc", 3, 3) should return null not fail + public Object Match_bgn(byte[] src, int bgn_pos, int end_pos) {return bgn_pos < end_pos ? Match_bgn_w_byte(src[bgn_pos], src, bgn_pos, end_pos) : null;} // handle out of bounds gracefully; EX: Match_bgn("abc", 3, 3) should return null not fail public Object Match_bgn_w_byte(byte b, byte[] src, int bgn_pos, int src_end) { Object rv = null; int cur_pos = match_pos = bgn_pos; Btrie_slim_itm cur = root; diff --git a/100_core/src/gplx/core/envs/Env_.java b/100_core/src/gplx/core/envs/Env_.java index 6d66bdc9a..228ad1183 100644 --- a/100_core/src/gplx/core/envs/Env_.java +++ b/100_core/src/gplx/core/envs/Env_.java @@ -52,7 +52,7 @@ public class Env_ { public static int TickCount_elapsed_in_frac(long time_bgn) {return (int)(Env_.TickCount() - time_bgn);} public static long TickCount_Test = -1; // in milliseconds public static void TickCount_normal() {TickCount_Test = -1;} - public static long System_cpu_count() {return Runtime.getRuntime().availableProcessors();} + public static int System_cpu_count() {return Runtime.getRuntime().availableProcessors();} public static long System_memory_max() {return Runtime.getRuntime().maxMemory();} public static long System_memory_total() {return Runtime.getRuntime().totalMemory();} public static long System_memory_free() {return Runtime.getRuntime().freeMemory();} diff --git a/100_core/src/gplx/core/ios/streams/Io_stream_rdr_.java b/100_core/src/gplx/core/ios/streams/Io_stream_rdr_.java index 9d5e46551..5267238ad 100644 --- a/100_core/src/gplx/core/ios/streams/Io_stream_rdr_.java +++ b/100_core/src/gplx/core/ios/streams/Io_stream_rdr_.java @@ -232,6 +232,7 @@ class Io_stream_rdr_zip implements Io_stream_rdr { class Io_stream_rdr_gzip extends Io_stream_rdr_base { @Override public byte Tid() {return Io_stream_.Tid_gzip;} @Override public int Read(byte[] bry, int bgn, int len) { + synchronized (this) { try { int total_read = 0; while (true) { // NOTE: the gz stream reads partially; (request 100; only get back 10); keep reading until entire bfr is full or -1 @@ -247,6 +248,7 @@ class Io_stream_rdr_gzip extends Io_stream_rdr_base { catch (Exception e) { throw Err_.new_exc(e, "io", "read failed", "bgn", bgn, "len", len); } + } } @Override public java.io.InputStream Wrap_stream(java.io.InputStream stream) { try {return new java.util.zip.GZIPInputStream(stream);} diff --git a/100_core/src/gplx/core/ios/zips/Io_zip_compress_cmd__jre.java b/100_core/src/gplx/core/ios/zips/Io_zip_compress_cmd__jre.java index 72a05d6be..f29673ce7 100644 --- a/100_core/src/gplx/core/ios/zips/Io_zip_compress_cmd__jre.java +++ b/100_core/src/gplx/core/ios/zips/Io_zip_compress_cmd__jre.java @@ -34,7 +34,11 @@ public class Io_zip_compress_cmd__jre { Io_url src_url = src_urls[i]; java.util.zip.ZipEntry trg_entry = new java.util.zip.ZipEntry(src_url.NameAndExt()); try {trg_stream.putNextEntry(trg_entry);} - catch (Exception e) {throw Err_.new_exc(e, "io", "zip entry failed", "url", src_url.Raw());} + catch (Exception e) { + try {trg_stream.close();} + catch (IOException e1) {} + throw Err_.new_exc(e, "io", "zip entry failed", "url", src_url.Raw()); + } FileInputStream src_stream = null; try {src_stream = new FileInputStream(new File(src_url.Raw()));} catch (Exception e) {throw Err_.new_exc(e, "io", "src open failed", "url", src_url.Raw());} @@ -55,8 +59,7 @@ public class Io_zip_compress_cmd__jre { } } try { - trg_stream.closeEntry(); - trg_stream.close(); + trg_stream.closeEntry(); src_stream.close(); } catch (Exception e) {throw Err_.new_exc(e, "io", "trg close entry failed", "url", src_url.Raw());} diff --git a/100_core/src/gplx/core/log_msgs/Gfo_msg_log.java b/100_core/src/gplx/core/log_msgs/Gfo_msg_log.java index 046776361..143fbb5e7 100644 --- a/100_core/src/gplx/core/log_msgs/Gfo_msg_log.java +++ b/100_core/src/gplx/core/log_msgs/Gfo_msg_log.java @@ -21,10 +21,12 @@ public class Gfo_msg_log { public int Ary_len() {return ary_idx;} public Gfo_msg_data Ary_get(int i) {return ary[i];} public Gfo_msg_log Clear() { - for (int i = 0; i < ary_idx; i++) - ary[i].Clear(); - ary_idx = 0; - return this; + synchronized (this) { // TS: DATE:2016-07-06 + for (int i = 0; i < ary_idx; i++) + ary[i].Clear(); + ary_idx = 0; + return this; + } } public Gfo_msg_log Add_str_warn_key_none(String grp, String itm, byte[] src, int pos) {return Add_str(Gfo_msg_itm_.Cmd_warn, grp, itm, null, src, pos, pos + 1, null);} public Gfo_msg_log Add_str_warn_key_none(String grp, String itm, byte[] src, int bgn, int end) {return Add_str(Gfo_msg_itm_.Cmd_warn, grp, itm, null, src, bgn, end, null);} @@ -33,16 +35,20 @@ public class Gfo_msg_log { public Gfo_msg_log Add_str_warn_fmt_none(String grp, String itm, String fmt, byte[] src, int bgn, int end) {return Add_str(Gfo_msg_itm_.Cmd_warn, grp, itm, fmt , src, bgn, end, null);} public Gfo_msg_log Add_str_warn_fmt_many(String grp, String itm, String fmt, Object... vals) {return Add_str(Gfo_msg_itm_.Cmd_warn, grp, itm, fmt , Bry_.Empty, -1, -1, vals);} Gfo_msg_log Add_str(byte cmd, String owner_key, String itm, String fmt, byte[] src, int bgn, int end, Object[] vals) { - if (ary_idx >= ary_max) ary_expand(); - ary[ary_idx++] = root.Data_new_many(cmd, src, bgn, end, owner_key, itm, fmt, vals); - return this; + synchronized (this) { // TS: DATE:2016-07-06 + if (ary_idx >= ary_max) ary_expand(); + ary[ary_idx++] = root.Data_new_many(cmd, src, bgn, end, owner_key, itm, fmt, vals); + return this; + } } public Gfo_msg_log Add_itm_none(Gfo_msg_itm itm, byte[] src, int bgn, int end) {return Add_itm(itm, src, bgn, end, null);} public Gfo_msg_log Add_itm_many(Gfo_msg_itm itm, byte[] src, int bgn, int end, Object... val_ary) {return Add_itm(itm, src, bgn, end, val_ary);} Gfo_msg_log Add_itm(Gfo_msg_itm itm, byte[] src, int bgn, int end, Object[] vals) { - if (ary_idx >= ary_max) ary_expand(); - ary[ary_idx++] = root.Data_new_many(itm, src, bgn, end, vals); - return this; + synchronized (this) { // TS: DATE:2016-07-06 + if (ary_idx >= ary_max) ary_expand(); + ary[ary_idx++] = root.Data_new_many(itm, src, bgn, end, vals); + return this; + } } void ary_expand() { int new_max = ary_max == 0 ? 2 : ary_max * 2; diff --git a/100_core/src/gplx/core/tests/Gftest.java b/100_core/src/gplx/core/tests/Gftest.java index 130b85ae8..72c7decff 100644 --- a/100_core/src/gplx/core/tests/Gftest.java +++ b/100_core/src/gplx/core/tests/Gftest.java @@ -99,6 +99,7 @@ public class Gftest { throw Err_.new_wo_type(bfr.To_str_and_clear()); } public static void Eq__bool_y(boolean actl) {Eq__bool(Bool_.Y, actl, null);} + public static void Eq__bool_y(boolean actl, String msg_fmt, Object... msg_args) {Eq__bool(Bool_.Y, actl, msg_fmt, msg_args);} public static void Eq__bool(boolean expd, boolean actl) {Eq__bool(expd, actl, null);} public static void Eq__bool(boolean expd, boolean actl, String msg_fmt, Object... msg_args) { if (expd == actl) return; diff --git a/100_core/src/gplx/core/threads/poolables/Gfo_poolable_mgr.java b/100_core/src/gplx/core/threads/poolables/Gfo_poolable_mgr.java index dd908a809..bd4dee9e1 100644 --- a/100_core/src/gplx/core/threads/poolables/Gfo_poolable_mgr.java +++ b/100_core/src/gplx/core/threads/poolables/Gfo_poolable_mgr.java @@ -55,7 +55,7 @@ public class Gfo_poolable_mgr implements Gfo_memory_itm { } return rv; } - public void Rls_safe(int idx) {synchronized (thread_lock) {Rls_safe(idx);}} + public void Rls_safe(int idx) {synchronized (thread_lock) {Rls_fast(idx);}} public void Rls_fast(int idx) { if (idx == -1) throw Err_.new_wo_type("rls called on poolable that was not created by pool_mgr"); int pool_idx = pool_nxt - 1; diff --git a/140_dbs/src/gplx/dbs/Db_conn.java b/140_dbs/src/gplx/dbs/Db_conn.java index ec4021839..08effb008 100644 --- a/140_dbs/src/gplx/dbs/Db_conn.java +++ b/140_dbs/src/gplx/dbs/Db_conn.java @@ -126,7 +126,7 @@ public class Db_conn { Rls_able itm = (Rls_able)rls_list.Get_at(i); itm.Rls(); } - rls_list.Clear(); + // rls_list.Clear(); // TOMBSTONE: do not clear rls_list, else tables which self-registered won't get called again; DATE:2016-07-06 engine.Conn_term(); Db_conn_pool.Instance.Del(engine.Conn_info()); } diff --git a/140_dbs/src/gplx/dbs/engines/mems/Mem_engine.java b/140_dbs/src/gplx/dbs/engines/mems/Mem_engine.java index 70f2be620..3171e2c44 100644 --- a/140_dbs/src/gplx/dbs/engines/mems/Mem_engine.java +++ b/140_dbs/src/gplx/dbs/engines/mems/Mem_engine.java @@ -28,7 +28,7 @@ public class Mem_engine implements Db_engine { public Db_conn_props_mgr Props() {return props;} private final Db_conn_props_mgr props = new Db_conn_props_mgr(); public Db_batch_mgr Batch_mgr() {return batch_mgr;} private final Db_batch_mgr batch_mgr = new Db_batch_mgr(); public Mem_exec_select Qry_runner() {return qry_runner;} private Mem_exec_select qry_runner; - public Sql_qry_wtr Sql_wtr() {return sql_wtr;} private final Sql_qry_wtr sql_wtr = Sql_qry_wtr_.Basic; + public Sql_qry_wtr Sql_wtr() {return sql_wtr;} private final Sql_qry_wtr sql_wtr = Sql_qry_wtr_.New__basic(); public Db_engine New_clone(Db_conn_info conn_info) {return new Mem_engine(conn_info);} public Db_stmt Stmt_by_qry(Db_qry qry) {return new Mem_stmt(this, qry);} public Mem_tbl Tbls__get(String name) {return (Mem_tbl)tbl_hash.Get_by(name);} diff --git a/140_dbs/src/gplx/dbs/engines/mysql/Mysql_engine.java b/140_dbs/src/gplx/dbs/engines/mysql/Mysql_engine.java index 72ddc60dd..bec92f3cc 100644 --- a/140_dbs/src/gplx/dbs/engines/mysql/Mysql_engine.java +++ b/140_dbs/src/gplx/dbs/engines/mysql/Mysql_engine.java @@ -20,7 +20,7 @@ import gplx.core.stores.*; import gplx.dbs.engines.*; import gplx.dbs.sqls.*; im import java.sql.*; public class Mysql_engine extends Db_engine_sql_base { @Override public String Tid() {return Mysql_conn_info.Tid_const;} - @Override public Sql_qry_wtr Sql_wtr() {return Sql_qry_wtr_.Mysql;} + @Override public Sql_qry_wtr Sql_wtr() {return Sql_qry_wtr_.New__mysql();} @Override public Db_engine New_clone(Db_conn_info connectInfo) { Mysql_engine rv = new Mysql_engine(); rv.Ctor(connectInfo); diff --git a/140_dbs/src/gplx/dbs/engines/noops/Noop_engine.java b/140_dbs/src/gplx/dbs/engines/noops/Noop_engine.java index 4073ff14a..0875f9112 100644 --- a/140_dbs/src/gplx/dbs/engines/noops/Noop_engine.java +++ b/140_dbs/src/gplx/dbs/engines/noops/Noop_engine.java @@ -22,7 +22,7 @@ public class Noop_engine implements Db_engine { public Db_conn_info Conn_info() {return Db_conn_info_.Null;} public Db_conn_props_mgr Props() {return props;} private final Db_conn_props_mgr props = new Db_conn_props_mgr(); public Db_batch_mgr Batch_mgr() {return batch_mgr;} private final Db_batch_mgr batch_mgr = new Db_batch_mgr(); - public Sql_qry_wtr Sql_wtr() {return sql_wtr;} private final Sql_qry_wtr sql_wtr = Sql_qry_wtr_.Basic; + public Sql_qry_wtr Sql_wtr() {return sql_wtr;} private final Sql_qry_wtr sql_wtr = Sql_qry_wtr_.New__basic(); public void Conn_open() {} public void Conn_term() {} public Db_engine New_clone(Db_conn_info url) {return this;} diff --git a/140_dbs/src/gplx/dbs/engines/postgres/Postgres_engine.java b/140_dbs/src/gplx/dbs/engines/postgres/Postgres_engine.java index f260a19c9..2f3e90d74 100644 --- a/140_dbs/src/gplx/dbs/engines/postgres/Postgres_engine.java +++ b/140_dbs/src/gplx/dbs/engines/postgres/Postgres_engine.java @@ -20,7 +20,7 @@ import gplx.core.stores.*; import gplx.dbs.engines.*; import gplx.dbs.sqls.*; im import java.sql.*; public class Postgres_engine extends Db_engine_sql_base { @Override public String Tid() {return Postgres_conn_info.Tid_const;} - @Override public Sql_qry_wtr Sql_wtr() {return Sql_qry_wtr_.Mysql;} + @Override public Sql_qry_wtr Sql_wtr() {return Sql_qry_wtr_.New__mysql();} @Override public Db_engine New_clone(Db_conn_info connectInfo) { Postgres_engine rv = new Postgres_engine(); rv.Ctor(connectInfo); diff --git a/140_dbs/src/gplx/dbs/engines/sqlite/Sqlite_engine.java b/140_dbs/src/gplx/dbs/engines/sqlite/Sqlite_engine.java index 709cc494b..8c2169727 100644 --- a/140_dbs/src/gplx/dbs/engines/sqlite/Sqlite_engine.java +++ b/140_dbs/src/gplx/dbs/engines/sqlite/Sqlite_engine.java @@ -27,7 +27,7 @@ public class Sqlite_engine extends Db_engine_sql_base { this.schema_mgr = new Sqlite_schema_mgr(this); } @Override public String Tid() {return Sqlite_conn_info.Key_const;} - @Override public gplx.dbs.sqls.Sql_qry_wtr Sql_wtr() {return Sql_qry_wtr_.Sqlite;} + @Override public gplx.dbs.sqls.Sql_qry_wtr Sql_wtr() {return Sql_qry_wtr_.New__sqlite();} @Override public Db_engine New_clone(Db_conn_info connectInfo) { Sqlite_engine rv = new Sqlite_engine(); rv.Ctor(connectInfo); diff --git a/140_dbs/src/gplx/dbs/engines/tdbs/TdbEngine.java b/140_dbs/src/gplx/dbs/engines/tdbs/TdbEngine.java index bf154be7b..44b5165c2 100644 --- a/140_dbs/src/gplx/dbs/engines/tdbs/TdbEngine.java +++ b/140_dbs/src/gplx/dbs/engines/tdbs/TdbEngine.java @@ -22,7 +22,7 @@ public class TdbEngine implements Db_engine { public Db_conn_info Conn_info() {return conn_info;} private Db_conn_info conn_info; public Db_conn_props_mgr Props() {return props;} private final Db_conn_props_mgr props = new Db_conn_props_mgr(); public Db_batch_mgr Batch_mgr() {return batch_mgr;} private final Db_batch_mgr batch_mgr = new Db_batch_mgr(); - public Sql_qry_wtr Sql_wtr() {return sql_wtr;} private final Sql_qry_wtr sql_wtr = Sql_qry_wtr_.Basic; + public Sql_qry_wtr Sql_wtr() {return sql_wtr;} private final Sql_qry_wtr sql_wtr = Sql_qry_wtr_.New__basic(); public TdbDatabase Db() {return db;} TdbDatabase db; public void Conn_open() { Tdb_conn_info tdb_url = (Tdb_conn_info)conn_info; @@ -44,7 +44,7 @@ public class TdbEngine implements Db_engine { Db_qryWkr wkr = (Db_qryWkr)wkrs.Get_by_or_fail(qry.Tid()); return wkr.Exec(this, qry); } - public Db_stmt Stmt_by_qry(Db_qry qry) {return new Db_stmt_sql().Parse(qry, Sql_qry_wtr_.Basic.To_sql_str(qry, true));} + public Db_stmt Stmt_by_qry(Db_qry qry) {return new Db_stmt_sql().Parse(qry, sql_wtr.To_sql_str(qry, true));} public Object Stmt_by_sql(String sql) {throw Err_.new_unimplemented();} public Db_rdr Exec_as_rdr__rls_manual(Object rdr_obj, String sql) {return Db_rdr_.Empty;} public Db_rdr Exec_as_rdr__rls_auto(Db_stmt stmt, Object rdr_obj, String sql) {return Db_rdr_.Empty;} diff --git a/140_dbs/src/gplx/dbs/qrys/Db_qry_dml_tst.java b/140_dbs/src/gplx/dbs/qrys/Db_qry_dml_tst.java index 3b69387cf..dd4b0fb5e 100644 --- a/140_dbs/src/gplx/dbs/qrys/Db_qry_dml_tst.java +++ b/140_dbs/src/gplx/dbs/qrys/Db_qry_dml_tst.java @@ -40,5 +40,5 @@ public class Db_qry_dml_tst { qry.Where_(Criteria_.And(Db_crt_.New_eq("id", 0), Db_crt_.New_mt("startTime", DateAdp_.parse_gplx("2005-01-01")))); tst_XtoSql(qry, "UPDATE tbl0 SET id=1, name='me', startTime='2007-12-23 00:00:00.000' WHERE (id = 0 AND startTime > '2005-01-01 00:00:00.000')"); } - void tst_XtoSql(Db_qry qry, String expd) {Tfds.Eq(expd, qry.To_sql__exec(gplx.dbs.sqls.Sql_qry_wtr_.Basic));} + void tst_XtoSql(Db_qry qry, String expd) {Tfds.Eq(expd, qry.To_sql__exec(gplx.dbs.sqls.Sql_qry_wtr_.New__basic()));} } diff --git a/140_dbs/src/gplx/dbs/qrys/Db_qry_select_tst.java b/140_dbs/src/gplx/dbs/qrys/Db_qry_select_tst.java index e65ef39a9..e85911aa2 100644 --- a/140_dbs/src/gplx/dbs/qrys/Db_qry_select_tst.java +++ b/140_dbs/src/gplx/dbs/qrys/Db_qry_select_tst.java @@ -85,5 +85,5 @@ public class Db_qry_select_tst { // expd = "SELECT fld0, fld1 FROM tbl0 GROUP BY fld0, fld1 HAVING Count(fld0) > 1"; // Tfds.Eq(cmd.To_str(), expd); // } - void tst_XtoStr(Db_qry qry, String expd) {Tfds.Eq(expd, cmd.To_sql__exec(Sql_qry_wtr_.Basic));} + void tst_XtoStr(Db_qry qry, String expd) {Tfds.Eq(expd, cmd.To_sql__exec(Sql_qry_wtr_.New__basic()));} } diff --git a/140_dbs/src/gplx/dbs/qrys/Db_qry_sql.java b/140_dbs/src/gplx/dbs/qrys/Db_qry_sql.java index 2913f83bf..30ef55477 100644 --- a/140_dbs/src/gplx/dbs/qrys/Db_qry_sql.java +++ b/140_dbs/src/gplx/dbs/qrys/Db_qry_sql.java @@ -38,8 +38,8 @@ public class Db_qry_sql implements Db_qry { } public static Db_qry_sql as_(Object obj) {return obj instanceof Db_qry_sql ? (Db_qry_sql)obj : null;} public static Db_qry_sql cast(Object obj) {try {return (Db_qry_sql)obj;} catch(Exception exc) {throw Err_.new_type_mismatch_w_exc(exc, Db_qry_sql.class, obj);}} - public static String Gen_sql(Db_qry qry, Object... args) { - byte[] src = Bry_.new_u8(Sql_qry_wtr_.Gen_placeholder_parameters(qry)); + public static String Gen_sql(Sql_qry_wtr qry_wtr, Db_qry qry, Object... args) { + byte[] src = Bry_.new_u8(qry_wtr.To_sql_str(qry, true)); int src_len = src.length; int args_idx = 0, args_len = args.length, pos = 0; Bry_bfr bfr = Bry_bfr_.New_w_size(src_len); diff --git a/140_dbs/src/gplx/dbs/qrys/Db_qry_sql_tst.java b/140_dbs/src/gplx/dbs/qrys/Db_qry_sql_tst.java index 6260d38e9..8eb9cc885 100644 --- a/140_dbs/src/gplx/dbs/qrys/Db_qry_sql_tst.java +++ b/140_dbs/src/gplx/dbs/qrys/Db_qry_sql_tst.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.dbs.qrys; import gplx.*; import gplx.dbs.*; -import org.junit.*; +import org.junit.*; import gplx.dbs.sqls.*; public class Db_qry_sql_tst { @Before public void init() {fxt.Clear();} private Db_qry_sql_fxt fxt = new Db_qry_sql_fxt(); @Test public void Insert() { @@ -42,6 +42,7 @@ public class Db_qry_sql_tst { } } class Db_qry_sql_fxt { + private final Sql_qry_wtr qry_wtr = Sql_qry_wtr_.New__sqlite(); public void Clear() {} - public void Test_qry(Db_qry qry, Object[] vals, String expd) {Tfds.Eq(expd, Db_qry_sql.Gen_sql(qry, vals));} + public void Test_qry(Db_qry qry, Object[] vals, String expd) {Tfds.Eq(expd, Db_qry_sql.Gen_sql(qry_wtr, qry, vals));} } diff --git a/140_dbs/src/gplx/dbs/sqls/Sql_qry_wtr_.java b/140_dbs/src/gplx/dbs/sqls/Sql_qry_wtr_.java index e7a156f0f..b99c40133 100644 --- a/140_dbs/src/gplx/dbs/sqls/Sql_qry_wtr_.java +++ b/140_dbs/src/gplx/dbs/sqls/Sql_qry_wtr_.java @@ -18,16 +18,12 @@ along with this program. If not, see . package gplx.dbs.sqls; import gplx.*; import gplx.dbs.*; import gplx.dbs.sqls.wtrs.*; public class Sql_qry_wtr_ { - public static final Sql_qry_wtr - Basic = new Sql_core_wtr() - , Mysql = new Sql_core_wtr__mysql() - , Sqlite = new Sql_core_wtr__sqlite() - ; + public static Sql_qry_wtr New__basic() {return new Sql_core_wtr();} + public static Sql_qry_wtr New__mysql() {return new Sql_core_wtr__mysql();} + public static Sql_qry_wtr New__sqlite() {return new Sql_core_wtr__sqlite();} public static final byte Like_wildcard = Byte_ascii.Percent; public static String Quote_arg(String s) { // only for constructing DEBUG SQL strings return "'" + String_.Replace(s, "'", "''") + "'"; } - - public static String Gen_placeholder_parameters(Db_qry qry) {return Sql_qry_wtr_.Sqlite.To_sql_str(qry, true);} // replace arguments with ?; EX: UPDATE a SET b = ? WHERE c = ?; } diff --git a/140_dbs/src/gplx/dbs/sqls/itms/Db_obj_ary_tst.java b/140_dbs/src/gplx/dbs/sqls/itms/Db_obj_ary_tst.java index 6d962c8d6..f8dafa8a5 100644 --- a/140_dbs/src/gplx/dbs/sqls/itms/Db_obj_ary_tst.java +++ b/140_dbs/src/gplx/dbs/sqls/itms/Db_obj_ary_tst.java @@ -33,7 +33,7 @@ class Db_obj_ary_fxt { public Db_obj_ary_fxt Init_fld(String name, int tid) {flds_list.Add(new Db_obj_ary_fld(name, tid)); return this;} private List_adp flds_list = List_adp_.New(); public Db_obj_ary_fxt Init_vals(Object... ary) {vals_list.Add(ary); return this;} private List_adp vals_list = List_adp_.New(); public Db_obj_ary_fxt Test_sql(String expd) { - Sql_core_wtr cmd_wtr = (Sql_core_wtr)Sql_qry_wtr_.Basic; + Sql_core_wtr cmd_wtr = (Sql_core_wtr)Sql_qry_wtr_.New__basic(); crt.Flds_((Db_obj_ary_fld[])flds_list.To_ary_and_clear(Db_obj_ary_fld.class)); crt.Vals_((Object[][])vals_list.To_ary_and_clear(Object[].class)); Bry_bfr bfr = Bry_bfr_.New(); diff --git a/140_dbs/src/gplx/dbs/sqls/wtrs/Sql_core_wtr__sqlite.java b/140_dbs/src/gplx/dbs/sqls/wtrs/Sql_core_wtr__sqlite.java index 078630125..79a5543ad 100644 --- a/140_dbs/src/gplx/dbs/sqls/wtrs/Sql_core_wtr__sqlite.java +++ b/140_dbs/src/gplx/dbs/sqls/wtrs/Sql_core_wtr__sqlite.java @@ -16,6 +16,6 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.dbs.sqls.wtrs; import gplx.*; import gplx.dbs.*; import gplx.dbs.sqls.*; -public class Sql_core_wtr__sqlite extends Sql_core_wtr { @Override protected Sql_val_wtr Make__val_wtr() {return new Sql_val_wtr_sqlite();} +public class Sql_core_wtr__sqlite extends Sql_core_wtr { @Override protected Sql_val_wtr Make__val_wtr() {return new Sql_val_wtr_sqlite();} @Override protected Sql_select_wtr Make__select_wtr(Sql_core_wtr qry_wtr) {return new Sql_select_wtr_sqlite(qry_wtr);} } diff --git a/140_dbs/src/gplx/dbs/sqls/wtrs/Sql_core_wtr_fxt.java b/140_dbs/src/gplx/dbs/sqls/wtrs/Sql_core_wtr_fxt.java index c170d64fb..1334ea358 100644 --- a/140_dbs/src/gplx/dbs/sqls/wtrs/Sql_core_wtr_fxt.java +++ b/140_dbs/src/gplx/dbs/sqls/wtrs/Sql_core_wtr_fxt.java @@ -21,7 +21,7 @@ class Sql_core_wtr_fxt { private final Sql_core_wtr__sqlite wtr = new Sql_core_wtr__sqlite(); private final Sql_wtr_ctx ctx = new Sql_wtr_ctx(false); private final Bry_bfr bfr = Bry_bfr_.New(); - public Sql_core_wtr_fxt Sql_wtr_(Sql_qry_wtr v) {sql_wtr = v; return this;} private Sql_qry_wtr sql_wtr = Sql_qry_wtr_.Sqlite; + public Sql_core_wtr_fxt Sql_wtr_(Sql_qry_wtr v) {sql_wtr = v; return this;} private Sql_qry_wtr sql_wtr = Sql_qry_wtr_.New__sqlite(); public void Test__val(Object val, String expd) { wtr.Val_wtr().Bld_val(bfr, ctx, val); Tfds.Eq_str(expd, bfr.To_str_and_clear()); diff --git a/140_dbs/src/gplx/dbs/sqls/wtrs/Sql_qry_wtr__ansi__tst.java b/140_dbs/src/gplx/dbs/sqls/wtrs/Sql_qry_wtr__ansi__tst.java index 2a74eec7f..67290ce4f 100644 --- a/140_dbs/src/gplx/dbs/sqls/wtrs/Sql_qry_wtr__ansi__tst.java +++ b/140_dbs/src/gplx/dbs/sqls/wtrs/Sql_qry_wtr__ansi__tst.java @@ -19,7 +19,7 @@ package gplx.dbs.sqls.wtrs; import gplx.*; import gplx.dbs.*; import gplx.dbs.sq import org.junit.*; import gplx.core.criterias.*; import gplx.dbs.sqls.*; public class Sql_qry_wtr__ansi__tst { - Sql_qry_wtr sqlWtr = Sql_qry_wtr_.Basic; + Sql_qry_wtr sqlWtr = Sql_qry_wtr_.New__basic(); @Test public void Insert() { tst_XtoSql ( Db_qry_.insert_("people").Val_int("id", 1).Val_str("name", "me") diff --git a/140_dbs/src/gplx/dbs/sqls/wtrs/Sql_qry_wtr__iosql__tst.java b/140_dbs/src/gplx/dbs/sqls/wtrs/Sql_qry_wtr__iosql__tst.java index cde43beff..08a225e5e 100644 --- a/140_dbs/src/gplx/dbs/sqls/wtrs/Sql_qry_wtr__iosql__tst.java +++ b/140_dbs/src/gplx/dbs/sqls/wtrs/Sql_qry_wtr__iosql__tst.java @@ -53,7 +53,7 @@ public class Sql_qry_wtr__iosql__tst { String fld; private final Sql_wtr_ctx ctx = new Sql_wtr_ctx(false); void tst_Write(String expd, Criteria crt) { - Sql_where_wtr where_wtr = ((Sql_core_wtr)Sql_qry_wtr_.Basic).Where_wtr(); + Sql_where_wtr where_wtr = ((Sql_core_wtr)Sql_qry_wtr_.New__basic()).Where_wtr(); Bry_bfr bfr = Bry_bfr_.New(); where_wtr.Bld_where_elem(bfr, ctx, crt); Tfds.Eq(expd, bfr.To_str_and_clear()); diff --git a/140_dbs/src/gplx/dbs/sqls/wtrs/Sql_schema_wtr_tst.java b/140_dbs/src/gplx/dbs/sqls/wtrs/Sql_schema_wtr_tst.java index 75d3d711b..4702444b8 100644 --- a/140_dbs/src/gplx/dbs/sqls/wtrs/Sql_schema_wtr_tst.java +++ b/140_dbs/src/gplx/dbs/sqls/wtrs/Sql_schema_wtr_tst.java @@ -61,7 +61,7 @@ public class Sql_schema_wtr_tst { } } class Sql_schema_wtr_fxt { - private Sql_schema_wtr sqlbldr = Sql_qry_wtr_.Sqlite.Schema_wtr(); + private Sql_schema_wtr sqlbldr = Sql_qry_wtr_.New__sqlite().Schema_wtr(); public void Test_create_idx(Dbmeta_idx_itm idx, String expd) {Tfds.Eq(expd, sqlbldr.Bld_create_idx(idx));} public void Test_create_tbl(Dbmeta_tbl_itm tbl, String expd) {Tfds.Eq_str_lines(expd, sqlbldr.Bld_create_tbl(tbl));} public void Test_alter_tbl_add(String tbl, Dbmeta_fld_itm fld, String expd) {Tfds.Eq_str_lines(expd, sqlbldr.Bld_alter_tbl_add(tbl, fld));} diff --git a/400_xowa/src/gplx/core/ios/Io_stream_zip_mgr.java b/400_xowa/src/gplx/core/ios/Io_stream_zip_mgr.java index 1cde9e2d1..605087b37 100644 --- a/400_xowa/src/gplx/core/ios/Io_stream_zip_mgr.java +++ b/400_xowa/src/gplx/core/ios/Io_stream_zip_mgr.java @@ -29,10 +29,12 @@ public class Io_stream_zip_mgr { return wtr.To_ary_and_clear(); } public byte[] Unzip(byte type, byte[] val) { - if (type == Io_stream_.Tid_raw) return val; - Io_stream_rdr rdr = Rdr(type); - rdr.Open_mem(val); - return Io_stream_rdr_.Load_all_as_bry(bfr, rdr); + synchronized (this) { // LOCK:static-obj;rdr_*;necessary; DATE:2016-07-06 + if (type == Io_stream_.Tid_raw) return val; + Io_stream_rdr rdr = Rdr(type); + rdr.Open_mem(val); + return Io_stream_rdr_.Load_all_as_bry(bfr, rdr); + } } private Io_stream_wtr Wtr(byte type) { switch (type) { diff --git a/400_xowa/src/gplx/langs/htmls/Gfh_atr_.java b/400_xowa/src/gplx/langs/htmls/Gfh_atr_.java index 724c80986..5e841d84f 100644 --- a/400_xowa/src/gplx/langs/htmls/Gfh_atr_.java +++ b/400_xowa/src/gplx/langs/htmls/Gfh_atr_.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.langs.htmls; import gplx.*; import gplx.langs.*; public class Gfh_atr_ { - public static final byte[] + public static final byte[] // "coreattrs" Bry__id = Bry_.new_a7("id") , Bry__class = Bry_.new_a7("class") @@ -54,7 +54,16 @@ public class Gfh_atr_ { public static byte[] Make(Bry_bfr bfr, byte[] key, byte[] val) { return bfr.Add_byte_space().Add(key).Add_byte_eq().Add_byte_quote().Add(val).Add_byte_quote().To_bry_and_clear(); } + public static byte[] Add_to_bry(Bry_bfr bfr, byte[] key, byte[] val) { + bfr.Add_byte_space().Add(key).Add_byte_eq().Add_byte_quote().Add(val).Add_byte_quote(); + return bfr.To_bry_and_clear(); + } public static void Add(Bry_bfr bfr, byte[] key, byte[] val) { bfr.Add_byte_space().Add(key).Add_byte_eq().Add_byte_quote().Add(val).Add_byte_quote(); } + public static void Add(Bry_bfr bfr, byte[] key, int val) { + bfr.Add_byte_space().Add(key).Add_byte_eq().Add_byte_quote(); + bfr.Add_int_variable(val); + bfr.Add_byte_quote(); + } } diff --git a/400_xowa/src/gplx/langs/htmls/Gfh_tag_.java b/400_xowa/src/gplx/langs/htmls/Gfh_tag_.java index 71e8016ae..73da777e1 100644 --- a/400_xowa/src/gplx/langs/htmls/Gfh_tag_.java +++ b/400_xowa/src/gplx/langs/htmls/Gfh_tag_.java @@ -54,6 +54,17 @@ public class Gfh_tag_ { // NOTE: not serialized; used by tag_rdr , Id__sup = 30 , Id__sub = 31 , Id__bdi = 32 + , Id__font = 33 + , Id__strong = 34 + , Id__s = 35 + , Id__abbr = 36 + , Id__cite = 37 + , Id__var = 38 + , Id__u = 39 + , Id__big = 40 + , Id__del = 41 + , Id__strike = 42 + , Id__tt = 43 ; public static final byte[] Bry__a = Bry_.new_a7("a") @@ -64,6 +75,8 @@ public class Gfh_tag_ { // NOTE: not serialized; used by tag_rdr , Bry__link = Bry_.new_a7("link") , Bry__style = Bry_.new_a7("style") , Bry__script = Bry_.new_a7("script") + , Bry__xowa_any = Bry_.new_a7("xowa_any") + , Bry__xowa_comment = Bry_.new_a7("xowa_comment") ; public static final Hash_adp_bry Hash = Hash_adp_bry.ci_a7() .Add_bry_int(Bry__a , Id__a) @@ -98,6 +111,17 @@ public class Gfh_tag_ { // NOTE: not serialized; used by tag_rdr .Add_str_int("sup" , Id__sup) .Add_str_int("sub" , Id__sub) .Add_str_int("bdi" , Id__bdi) + .Add_str_int("font" , Id__font) + .Add_str_int("strong" , Id__strong) + .Add_str_int("s" , Id__s) + .Add_str_int("abbr" , Id__abbr) + .Add_str_int("cite" , Id__cite) + .Add_str_int("var" , Id__var) + .Add_str_int("u" , Id__u) + .Add_str_int("big" , Id__big) + .Add_str_int("del" , Id__del) + .Add_str_int("strike" , Id__strike) + .Add_str_int("tt" , Id__tt) ; public static String To_str(int tid) { switch (tid) { @@ -137,6 +161,17 @@ public class Gfh_tag_ { // NOTE: not serialized; used by tag_rdr case Id__sup: return "sup"; case Id__sub: return "sub"; case Id__bdi: return "bdi"; + case Id__font: return "font"; + case Id__strong: return "strong"; + case Id__s: return "s"; + case Id__abbr: return "abbr"; + case Id__cite: return "cite"; + case Id__var: return "var"; + case Id__u: return "u"; + case Id__big: return "big"; + case Id__del: return "del"; + case Id__strike: return "strike"; + case Id__tt: return "tt"; default: throw Err_.new_unhandled(tid); } } @@ -150,6 +185,7 @@ public class Gfh_tag_ { // NOTE: not serialized; used by tag_rdr , P_lhs = Bry_.new_a7("

") , P_rhs = Bry_.new_a7("

") , Pre_lhs = Bry_.new_a7("
")			, Pre_rhs					= Bry_.new_a7("
") , Div_lhs = Bry_.new_a7("
") , Div_rhs = Bry_.new_a7("
") + , Div_lhs_bgn = Bry_.new_a7("") , Head_lhs_bgn = Bry_.new_a7("") , Style_lhs_w_type = Bry_.new_a7("