From b0fdf78a41269b4465b813af72326c377fca3f05 Mon Sep 17 00:00:00 2001 From: gnosygnu Date: Sun, 31 Jul 2016 21:41:19 -0400 Subject: [PATCH] 'v3.8.1.1' --- 100_core/src/gplx/DateAdp_.java | 4 +- 100_core/src/gplx/Datetime_now.java | 66 +++++ 100_core/src/gplx/Gfo_log_.java | 4 +- 100_core/src/gplx/Gfo_log_bfr.java | 2 +- 100_core/src/gplx/Gfo_usr_dlg__log_base.java | 6 +- 100_core/src/gplx/Gfo_usr_dlg_base.java | 2 +- 100_core/src/gplx/Hash_adp_bry.java | 6 +- 100_core/src/gplx/Tfds.java | 15 +- .../src/gplx/core/brys/fmtrs/Bry_fmtr.java | 4 +- .../core/brys/fmtrs/Bry_fmtr_eval_mgr_.java | 2 +- .../gplx/core/brys/fmtrs/Bry_fmtr_vals.java | 2 +- .../src/gplx/core/btries/Btrie_slim_mgr.java | 6 +- .../src/gplx/core/ios/IoEngine_memory.java | 4 +- .../core/ios/IoEngine_xrg_recycleFil.java | 2 +- .../src/gplx/core/primitives/Int_obj_val.java | 10 +- .../src/gplx/core/tests/PerfLogMgr_fxt.java | 2 +- 100_core/src/gplx/langs/gfs/Gfs_Date_tst.java | 2 +- .../core/ios/IoEngine_fil_basic_base.java | 2 +- 140_dbs/src/gplx/dbs/Db_attach_mgr.java | 19 +- 140_dbs/src/gplx/dbs/diffs/Gdif_core.java | 12 +- 140_dbs/src/gplx/dbs/utls/Db_cmd_backup.java | 2 +- .../src/gplx/dbs/utls/Db_cmd_backup_tst.java | 2 +- 140_dbs/xtn/gplx/dbs/SqliteDbMain.java | 2 +- .../controls/customs/GfuiStatusBoxBnd.java | 2 +- .../gplx/gfui/controls/windows/GfuiWin.java | 2 +- 400_xowa/.classpath | 14 +- 400_xowa/src/gplx/core/brys/Bry_comparer.java | 2 +- .../gplx/core/caches/Gfo_cache_mgr_bry.java | 2 +- 400_xowa/src/gplx/core/flds/Gfo_fld_rdr.java | 3 +- .../src/gplx/core/ios/Io_sort_filCmd.java | 2 +- .../core/ios/Io_sort_split_itm_sorter.java | 3 +- ...ber_parser.java => Gfo_number_parser.java} | 14 +- ...er_tst.java => Gfo_number_parser_tst.java} | 9 +- .../primitives/Hash_adp__primitive.java} | 15 +- .../gplx/core/primitives/Int_ary_parser.java | 4 +- .../core/primitives/Int_ary_parser_tst.java | 16 +- .../src/gplx/core/primitives/Int_pool.java | 4 +- 400_xowa/src/gplx/dbs/bulks/Db_tbl_copy.java | 2 +- 400_xowa/src/gplx/langs/gfs/Gfs_msg_bldr.java | 4 +- 400_xowa/src/gplx/langs/htmls/Gfh_utl.java | 22 +- .../htmls/encoders/Gfo_url_encoder_.java | 2 +- .../htmls/encoders/Gfo_url_encoder_itm.java | 2 +- 400_xowa/src/gplx/langs/jsons/Json_doc.java | 2 +- .../src/gplx/langs/jsons/Json_parser.java | 2 +- .../langs/jsons/Json_parser__itm__base.java | 2 +- 400_xowa/src/gplx/xowa/Xoa_app_.java | 21 +- 400_xowa/src/gplx/xowa/Xoa_page.java | 4 +- 400_xowa/src/gplx/xowa/Xoa_ttl.java | 45 +++- 400_xowa/src/gplx/xowa/Xoa_url.java | 10 +- 400_xowa/src/gplx/xowa/Xoae_app.java | 12 +- 400_xowa/src/gplx/xowa/Xoae_page.java | 12 +- 400_xowa/src/gplx/xowa/Xow_wiki.java | 4 +- 400_xowa/src/gplx/xowa/Xowe_wiki.java | 5 +- .../src/gplx/xowa/addons/Xoax_addon_mgr.java | 1 + .../addons/apps/helps/logs/Xolog_special.java | 2 +- .../centrals/dbs/Xobc_data_db_upgrader.java | 4 +- .../dbs/datas/Xobc_version_regy_tbl.java | 2 +- .../bldrs/exports/merges/Merge_wkr__core.java | 2 +- .../splits/files/Split_init__file.java | 2 +- .../splits/files/Split_meta_wkr__fil.java | 2 +- .../splits/files/Split_meta_wkr__org.java | 2 +- .../splits/files/Split_meta_wkr__thm.java | 2 +- .../exports/splits/rndms/Split_wkr__rndm.java | 2 +- .../splits/srchs/Split_meta_wkr__link.java | 2 +- .../exports/splits/srchs/Split_srch_init.java | 2 +- .../files/cmds/Xobldr__lnki_temp__create.java | 4 +- .../bldrs/hdumps/diffs/Dumpdiff_addon.java} | 24 +- .../bldrs/hdumps/diffs/Dumpdiff_cfg.java | 29 ++ .../bldrs/hdumps/diffs/Dumpdiff_cmd.java | 38 +++ .../bldrs/hdumps/diffs/Dumpdiff_log_tbl.java | 56 ++++ .../bldrs/hdumps/diffs/Dumpdiff_mgr.java | 78 ++++++ .../bldrs/hdumps/diffs/Dumpdiff_page_itm.java | 32 +++ .../hdumps/diffs/Dumpdiff_page_loader.java | 54 ++++ .../bldrs/hdumps/diffs/Hdump_html_loader.java | 45 ++++ .../mass_parses/makes/Xob_lnki_temp_row.java | 10 +- .../mass_parses/makes/Xomp_make_cmd.java | 4 +- .../mass_parses/makes/Xomp_make_lnki.java | 6 +- .../mass_parses/parses/Xomp_load_wkr.java | 2 +- .../parses/Xomp_page_pool_loader.java | 2 +- .../mass_parses/parses/Xomp_parse_mgr.java | 13 +- .../parses/Xomp_parse_mgr_cfg.java | 9 +- .../mass_parses/parses/Xomp_parse_wkr.java | 10 +- .../parses/Xomp_text_db_loader.java | 3 +- .../parses/Xomp_tmpl_cache_bldr.java | 23 +- .../mass_parses/parses/Xow_wiki_utl_.java | 28 ++ .../addons/bldrs/xodirs/Xobc_xodir_addon.java | 2 +- .../bldrs/xodirs/Xobc_xodir_special.java | 2 +- .../wikis/htmls/css/mgrs/Xob_css_status.java | 2 +- .../htmls/css/mgrs/Xowd_css_core_mgr.java | 2 +- .../htmls/css/mgrs/Xowd_css_core_mgr_tst.java | 2 +- .../registrys/infos/Xow_info_special.java | 2 +- .../searchs/bldrs/Srch_temp_tbl_wkr.java | 4 +- .../bldrs/cmds/Xobldr__link__link_score.java | 5 +- .../searchs/parsers/Srch_sym_parser.java | 2 +- .../searchs/parsers/Srch_text_parser_wkr.java | 2 +- .../searchs/searchers/wkrs/Srch_link_wkr.java | 2 +- .../searchs/specials/Srch_special_page.java | 2 +- 400_xowa/src/gplx/xowa/apps/Xoav_app.java | 5 +- .../apps/apis/xowa/xtns/Xoapi_wikibase.java | 2 +- .../gplx/xowa/apps/boots/Xoa_boot_mgr.java | 2 +- .../xowa/apps/caches/Wdata_doc_cache.java | 2 +- .../gplx/xowa/apps/cfgs/Xoa_cfg_db_txt.java | 2 +- .../src/gplx/xowa/apps/gfs/Xoa_gfs_mgr.java | 2 +- .../src/gplx/xowa/apps/gfs/Xoa_gfs_wtr_.java | 20 +- .../site_cfgs/Xoa_site_cfg_itm__base.java | 2 +- .../site_cfgs/Xoa_site_cfg_loader__cfg.java | 2 +- .../site_cfgs/Xoa_site_cfg_loader__inet.java | 14 +- .../apps/site_cfgs/Xoa_site_cfg_mgr_tst.java | 17 +- .../gplx/xowa/apps/urls/Xoa_url_encoder.java | 26 +- 400_xowa/src/gplx/xowa/bldrs/Db_mgr_fxt.java | 2 +- 400_xowa/src/gplx/xowa/bldrs/Xob_cmd_mgr.java | 2 +- 400_xowa/src/gplx/xowa/bldrs/Xob_db_file.java | 2 +- .../xowa/bldrs/cmds/Xob_dump_mgr_base.java | 2 + .../xowa/bldrs/cmds/texts/Xob_init_base.java | 2 +- .../xowa/bldrs/cmds/texts/Xob_term_base.java | 2 +- .../bldrs/cmds/texts/sqls/Xob_init_cmd.java | 2 +- .../bldrs/cmds/texts/sqls/Xob_page_cmd.java | 2 +- .../bldrs/cmds/texts/tdbs/Xob_init_tdb.java | 2 +- .../bldrs/cmds/utils/Xob_download_cmd.java | 4 +- .../bldrs/cmds/utils/Xob_site_meta_cmd.java | 4 +- .../filters/dansguardians/Dg_parser_tst.java | 2 +- .../xowa/bldrs/infos/Xob_info_session.java | 2 +- .../xowa/bldrs/installs/Xoi_cmd_wiki_tst.java | 2 +- .../gplx/xowa/drds/pages/Xod_page_mgr.java | 4 +- 400_xowa/src/gplx/xowa/files/Xof_ext_.java | 14 +- .../src/gplx/xowa/files/Xof_mime_minor_.java | 6 +- .../gplx/xowa/files/caches/Xofc_fil_itm.java | 20 +- .../gplx/xowa/files/caches/Xou_cache_itm.java | 52 ++-- .../gplx/xowa/files/caches/Xou_cache_mgr.java | 2 +- .../xowa/files/caches/Xou_cache_mgr_tst.java | 4 +- .../gplx/xowa/files/repos/Xowe_repo_mgr.java | 3 +- .../gplx/xowa/guis/bnds/Xog_bnd_mgr_srl.java | 4 +- .../src/gplx/xowa/guis/views/Xog_tab_itm.java | 8 +- .../xowa/guis/views/Xog_tab_itm_edit_mgr.java | 2 +- 400_xowa/src/gplx/xowa/htmls/Xoh_page.java | 18 +- .../src/gplx/xowa/htmls/Xoh_page_wtr_wkr.java | 4 +- .../gplx/xowa/htmls/Xoh_page_wtr_wkr_.java | 2 +- .../src/gplx/xowa/htmls/Xohp_ctg_grp_mgr.java | 6 +- .../src/gplx/xowa/htmls/Xow_html_mgr.java | 2 +- .../bridges/dbuis/fmtrs/Dbui_cells_fmtr.java | 10 +- .../bridges/dbuis/fmtrs/Dbui_val_fmtr.java | 4 +- .../xowa/htmls/core/Xow_hdump_mgr__save.java | 2 +- .../xowa/htmls/core/bldrs/Xob_hdump_bldr.java | 5 +- .../xowa/htmls/core/htmls/Xoh_html_wtr.java | 2 +- .../wkrs/bfr_args/Bfr_arg__hatr_fmtr.java | 4 +- .../htmls/core/wkrs/lnkes/Xoh_lnke_html.java | 5 +- .../core/wkrs/lnkis/htmls/Xoh_lnki_wtr.java | 2 +- .../xowa/htmls/heads/Xow_fragment_mgr.java | 2 +- .../src/gplx/xowa/htmls/js/Xoh_js_cbk.java | 4 +- .../gplx/xowa/htmls/js/Xoh_js_cbk_tst.java | 2 +- .../htmls/js/Xoh_js_cbk_wdata_labels_tst.java | 2 +- .../htmls/ns_files/Xoh_file_page_wtr.java | 10 +- .../xowa/htmls/portal/Xoh_page_body_cls.java | 2 +- .../htmls/portal/Xoh_page_body_cls_tst.java | 2 +- .../htmls/portal/vnts/Vnt_mnu_grp_fmtr.java | 8 +- .../src/gplx/xowa/langs/Xoa_lang_mgr.java | 8 +- .../src/gplx/xowa/langs/Xol_lang_itm.java | 8 +- .../xowa/langs/bldrs/Xol_mw_lang_parser.java | 36 +-- .../langs/bldrs/Xol_mw_lang_parser_tst.java | 4 +- .../commas/Xol_comma_wkr.java} | 11 +- .../xowa/langs/commas/Xol_comma_wkr__add.java | 30 +++ .../langs/durations/Xol_duration_itm_.java | 2 +- .../langs/durations/Xol_duration_mgr.java | 6 +- .../gplx/xowa/langs/kwds/Xol_kwd_grp_.java | 2 +- .../src/gplx/xowa/langs/msgs/Xol_msg_itm.java | 43 ++- .../gplx/xowa/langs/msgs/Xol_msg_itm_.java | 2 +- .../gplx/xowa/langs/msgs/Xol_msg_mgr_.java | 4 +- .../src/gplx/xowa/langs/msgs/Xow_msg_mgr.java | 12 +- .../langs/vnts/converts/Xol_convert_mgr.java | 15 +- 400_xowa/src/gplx/xowa/parsers/Xop_ctx.java | 2 +- .../src/gplx/xowa/parsers/Xop_parser.java | 2 +- .../src/gplx/xowa/parsers/Xop_tmp_mgr.java | 8 +- .../src/gplx/xowa/parsers/Xow_parser_mgr.java | 13 +- .../gplx/xowa/parsers/lnkis/Xop_lnki_wkr.java | 2 +- .../xowa/parsers/lnkis/Xop_lnki_wkr_.java | 4 +- .../lnkis/Xop_lnki_wkr__basic_tst.java | 2 +- .../xowa/parsers/utils/Xop_redirect_mgr.java | 3 +- .../xowa/parsers/xndes/Xop_xnde_wkr_.java | 67 ++--- .../gplx/xowa/specials/Xoa_special_mgr.java | 2 +- .../gplx/xowa/specials/Xow_special_mgr.java | 4 +- .../specials/allPages/Xows_page_allpages.java | 20 +- .../xowa/specials/mgrs/Xosp_special_mgr.java | 2 +- 400_xowa/src/gplx/xowa/users/Xou_user_.java | 2 +- .../xowa/users/data/Xoud_opt_scope_tst.java | 2 +- .../xowa/users/history/Xou_history_itm.java | 6 +- .../xowa/users/history/Xou_history_mgr.java | 6 +- .../users/history/Xou_history_mgr_tst.java | 4 +- .../xowa/users/history/Xoud_history_mgr.java | 2 +- .../src/gplx/xowa/wikis/Xoae_wiki_mgr.java | 2 +- .../src/gplx/xowa/wikis/Xow_page_tid.java | 4 +- 400_xowa/src/gplx/xowa/wikis/Xowv_wiki.java | 6 +- .../xowa/wikis/caches/Xow_page_cache.java | 6 +- .../xowa/wikis/caches/Xow_page_cache_itm.java | 3 +- .../xowa/wikis/ctgs/Xoctg_fmtr_itm_base.java | 3 +- .../xowa/wikis/ctgs/Xoctg_idx_mgr_tst.java | 2 +- .../xowa/wikis/data/Xow_data_mgr_tst.java | 4 +- .../wikis/data/tbls/Xowd_category_itm.java | 4 +- .../xowa/wikis/data/tbls/Xowd_page_itm.java | 2 +- .../xowa/wikis/data/tbls/Xowd_text_tbl.java | 2 +- .../wikis/data/tbls/Xowd_wbase_pid_tbl.java | 2 +- .../xowa/wikis/dbs/Xodb_load_mgr_sql_tst.java | 2 +- .../xowa/wikis/dbs/Xodb_load_mgr_txt.java | 4 +- .../xowa/wikis/dbs/Xodb_save_mgr_sql.java | 4 +- .../xowa/wikis/dbs/Xodb_save_mgr_txt.java | 4 +- .../xowa/wikis/domains/Xow_domain_uid_.java | 5 +- 400_xowa/src/gplx/xowa/wikis/nss/Xow_ns.java | 6 +- .../xowa/wikis/nss/Xow_ns_canonical_.java | 4 +- .../src/gplx/xowa/wikis/nss/Xow_ns_mgr.java | 2 +- .../gplx/xowa/wikis/pages/Xow_page_mgr.java | 11 +- .../pages/redirects/Xopg_redirect_mgr.java | 3 +- .../wikis/tdbs/metas/Xof_meta_mgr_tst.java | 3 +- .../tdbs/metas/Xof_meta_thumb_parser.java | 10 +- .../sitelinks/htmls/Xoa_sitelink_div_wtr.java | 16 +- .../htmls/Xoa_sitelink_div_wtr_fxt.java | 2 +- .../sitelinks/htmls/Xoa_sitelink_grp_wtr.java | 4 +- 400_xowa/src/gplx/xowa/xtns/Xow_xtn_mgr.java | 2 +- .../xtns/gallery/Gallery_box_w_fmtr_arg.java | 4 +- .../gallery/Gallery_img_pad_fmtr_arg.java | 4 +- .../xowa/xtns/gallery/Gallery_mgr_wtr.java | 6 +- .../src/gplx/xowa/xtns/imaps/Imap_parser.java | 2 +- .../xtns/indicators/Indicator_html_bldr.java | 4 +- .../gplx/xowa/xtns/listings/Listing_xnde.java | 29 +- .../xowa/xtns/math/Xof_math_html_wtr.java | 28 +- .../src/gplx/xowa/xtns/pfuncs/Pf_func_.java | 10 +- .../xtns/pfuncs/exprs/Pfunc_expr_shunter.java | 2 +- .../pfuncs/stringutils/Pfunc_replace.java | 10 +- .../xtns/pfuncs/times/Pft_func_date_int.java | 4 +- .../pfuncs/times/Pft_func_date_lcl_tst.java | 6 +- .../xtns/pfuncs/times/Pft_func_date_name.java | 4 +- .../pfuncs/times/Pft_func_date_utc_tst.java | 6 +- .../pfuncs/times/Pft_func_formatdate.java | 5 +- .../times/Pft_func_formatdate_bldr.java | 9 +- .../xowa/xtns/pfuncs/times/Pft_func_time.java | 2 +- .../times/Pft_func_time__basic__tst.java | 6 +- .../pfuncs/times/Pft_func_time__int__tst.java | 2 +- .../times/Pft_func_time__uncommon__tst.java | 6 +- .../times/Pft_func_time_foreign_fxt.java | 4 +- .../gplx/xowa/xtns/pfuncs/times/Pxd_itm_.java | 2 +- .../xtns/pfuncs/times/Pxd_itm_month_name.java | 8 +- .../xowa/xtns/pfuncs/times/Pxd_parser.java | 2 +- .../xtns/pfuncs/times/Pxd_parser_tst.java | 4 +- .../xtns/pfuncs/ttls/Pfunc_anchorencode.java | 4 +- .../xowa/xtns/pfuncs/ttls/Pfunc_rel2abs.java | 4 +- .../xowa/xtns/pfuncs/ttls/Pfunc_urlfunc.java | 22 +- .../wikis/Pfunc_pagesincategory_tst.java | 2 +- .../src/gplx/xowa/xtns/poems/Poem_nde.java | 72 ++--- .../xowa/xtns/proofreadPage/Pp_pages_nde.java | 74 +++--- .../gplx/xowa/xtns/scribunto/Scrib_core.java | 8 +- .../xowa/xtns/scribunto/Scrib_kv_utl_.java | 8 + .../scribunto/engines/luaj/Luaj_server.java | 6 +- .../scribunto/libs/Scrib_lib_language.java | 8 +- .../libs/Scrib_lib_language_tst.java | 8 +- .../xtns/scribunto/libs/Scrib_lib_mw.java | 2 +- .../scribunto/libs/Scrib_lib_wikibase.java | 61 +++-- .../libs/Scrib_lib_wikibase_entity.java | 9 +- .../libs/Scrib_lib_wikibase_entity_tst.java | 4 +- .../libs/Scrib_lib_wikibase_srl.java | 34 +-- .../libs/Scrib_lib_wikibase_srl_tst.java | 8 +- .../libs/Scrib_lib_wikibase_srl_visitor.java | 80 +++--- .../libs/Scrib_lib_wikibase_tst.java | 59 ++++- .../scribunto/libs/Scrib_regx_converter.java | 6 +- .../{wdatas => wbases}/Wbase_doc_mgr.java | 2 +- .../{wdatas => wbases}/Wbase_pid_mgr.java | 2 +- .../{wdatas => wbases}/Wbase_qid_mgr.java | 2 +- .../xtns/{wdatas => wbases}/Wdata_doc.java | 8 +- .../{wdatas => wbases}/Wdata_doc_bldr.java | 12 +- .../{wdatas => wbases}/Wdata_doc_wtr.java | 87 +++--- .../Wdata_prop_val_visitor.java | 31 +-- .../xtns/wbases/Wdata_prop_val_visitor_.java | 151 +++++++++++ .../{wdatas => wbases}/Wdata_wiki_mgr.java | 24 +- .../Wdata_wiki_mgr_fxt.java | 50 ++-- .../Wdata_wiki_mgr_tst.java | 4 +- .../{wdatas => wbases}/Wdata_xtn_mgr.java | 2 +- .../Wdata_xwiki_link_wtr.java | 4 +- .../Wdata_xwiki_link_wtr_tst.java | 2 +- .../claims/Wbase_claim_grp.java} | 13 +- .../claims/Wbase_claim_grp_list.java} | 8 +- .../wbases/claims/Wbase_claim_visitor.java | 28 ++ .../claims/Wbase_references_grp.java} | 8 +- .../enums/Wbase_claim_entity_type_.java | 41 +++ .../claims/enums/Wbase_claim_enum.java} | 21 +- .../claims/enums/Wbase_claim_enum_.java | 37 +++ .../claims/enums/Wbase_claim_rank_.java | 46 ++++ .../wbases/claims/enums/Wbase_claim_type.java | 30 +++ .../claims/enums/Wbase_claim_type_.java | 64 +++++ .../claims/enums/Wbase_claim_value_type_.java | 43 +++ .../wbases/claims/itms/Wbase_claim_base.java | 46 ++++ .../claims/itms/Wbase_claim_entity.java | 50 ++++ .../claims/itms/Wbase_claim_entity_.java | 36 +++ .../itms/Wbase_claim_globecoordinate.java | 43 +++ .../itms/Wbase_claim_globecoordinate_.java | 58 ++++ .../itms/Wbase_claim_monolingualtext.java | 32 +++ .../itms/Wbase_claim_monolingualtext_.java | 42 +++ .../claims/itms/Wbase_claim_quantity.java} | 26 +- .../claims/itms/Wbase_claim_quantity_.java | 49 ++++ .../claims/itms/Wbase_claim_string.java} | 17 +- .../wbases/claims/itms/Wbase_claim_time.java | 107 ++++++++ .../wbases/claims/itms/Wbase_claim_time_.java | 82 ++++++ .../wbases/claims/itms/Wbase_claim_value.java | 33 +++ .../claims/itms/times/Wbase_data_itm.java | 31 +++ .../claims/itms/times/Wbase_date.java} | 50 ++-- .../claims/itms/times/Wbase_date_tst.java} | 48 ++-- .../core/Wdata_alias_itm.java | 2 +- .../core/Wdata_dict_claim.java | 4 +- .../core/Wdata_dict_claim_v1.java | 4 +- .../core/Wdata_dict_datavalue.java | 4 +- .../core/Wdata_dict_langtext.java | 4 +- .../core/Wdata_dict_mainsnak.java | 8 +- .../core/Wdata_dict_reference.java | 4 +- .../core/Wdata_dict_sitelink.java | 4 +- .../core/Wdata_dict_utl.java | 2 +- .../core/Wdata_lang_sortable.java | 2 +- .../core/Wdata_lang_sorter.java | 2 +- .../core/Wdata_langtext_itm.java | 6 +- .../core/Wdata_sitelink_itm.java | 8 +- .../hwtrs/Wdata_fmtr__claim_grp.java | 43 +-- .../hwtrs/Wdata_fmtr__json.java | 2 +- .../hwtrs/Wdata_fmtr__langtext_tbl.java | 4 +- .../hwtrs/Wdata_fmtr__oview_tbl.java | 4 +- .../hwtrs/Wdata_fmtr__slink.java | 22 +- .../hwtrs/Wdata_fmtr__toc_div.java | 2 +- .../hwtrs/Wdata_hwtr_mgr.java | 4 +- .../hwtrs/Wdata_hwtr_mgr_tst.java | 9 +- .../hwtrs/Wdata_hwtr_msgs.java | 2 +- .../hwtrs/Wdata_lbl_itm.java | 14 +- .../hwtrs/Wdata_lbl_mgr.java | 24 +- .../hwtrs/Wdata_lbl_wkr.java | 4 +- .../hwtrs/Wdata_lbl_wkr_wiki.java | 4 +- .../hwtrs/Wdata_slink_grp.java | 14 +- .../hwtrs/Wdata_toc_data.java | 2 +- .../hwtrs/Wdata_visitor__html_wtr.java | 26 +- .../hwtrs/Wdata_visitor__html_wtr_tst.java | 6 +- .../hwtrs/Wdata_visitor__lbl_gatherer.java | 20 +- .../imports/Io_stream_rdr_mgr.java | 2 +- .../imports/Wdata_idx_mgr_base.java | 4 +- .../imports/Wdata_idx_wtr.java | 2 +- .../imports/Xob_wbase_json_dump_cmd.java | 2 +- .../imports/Xob_wbase_json_dump_db.java | 8 +- .../imports/Xob_wbase_json_dump_parser.java | 2 +- .../imports/Xob_wbase_ns_parser.java | 6 +- .../imports/Xob_wdata_db_cmd.java | 37 +-- .../imports/Xob_wdata_pid_base.java | 4 +- .../imports/Xob_wdata_pid_base_tst.java | 2 +- .../imports/Xob_wdata_pid_sql.java | 2 +- .../imports/Xob_wdata_pid_txt.java | 2 +- .../imports/Xob_wdata_qid_base.java | 4 +- .../imports/Xob_wdata_qid_base_tst.java | 2 +- .../imports/Xob_wdata_qid_sql.java | 2 +- .../imports/Xob_wdata_qid_txt.java | 2 +- .../wbases/parsers/Wbase_claim_factory.java | 117 +++++++++ .../parsers/Wdata_claims_parser_v2.java | 151 +++++++++++ .../parsers/Wdata_doc_parser.java | 10 +- .../parsers/Wdata_doc_parser_fxt_base.java | 50 ++-- .../parsers/Wdata_doc_parser_v1.java | 57 ++-- .../parsers/Wdata_doc_parser_v1_tst.java | 6 +- .../parsers/Wdata_doc_parser_v2.java | 17 +- .../Wdata_doc_parser_v2__basic__tst.java} | 141 +--------- .../Wdata_doc_parser_v2__claims__tst.java | 193 ++++++++++++++ .../Wdata_external_lang_links_data.java | 2 +- .../pfuncs/Wdata_pf_noExternalLangLinks.java | 2 +- .../Wdata_pf_noExternalLangLinks_tst.java | 2 +- .../pfuncs/Wdata_pf_property.java | 8 +- .../pfuncs/Wdata_pf_property__basic__tst.java | 16 +- .../pfuncs/Wdata_pf_property__parse__tst.java | 2 +- .../pfuncs/Wdata_pf_property_data.java | 2 +- .../pfuncs/Wdata_pf_property_fmt.java | 2 +- .../pfuncs/Wdata_pf_wbreponame.java | 4 +- .../pfuncs/Wdata_pf_wbreponame_tst.java | 2 +- .../specials/Wdata_itemByTitle_cfg.java | 2 +- .../specials/Wdata_itemByTitle_page.java | 2 +- .../specials/Wdata_itemByTitle_page_tst.java | 2 +- .../wdatas/core/Wdata_claim_itm_base.java | 35 --- .../wdatas/core/Wdata_claim_itm_core.java | 26 -- .../wdatas/core/Wdata_claim_itm_entity.java | 49 ---- .../core/Wdata_claim_itm_globecoordinate.java | 40 --- .../core/Wdata_claim_itm_monolingualtext.java | 31 --- .../wdatas/core/Wdata_claim_itm_system.java | 31 --- .../wdatas/core/Wdata_claim_itm_time.java | 88 ------- .../xtns/wdatas/core/Wdata_dict_rank.java | 54 ---- .../xtns/wdatas/core/Wdata_dict_snak_tid.java | 61 ----- .../xtns/wdatas/core/Wdata_dict_val_tid.java | 91 ------- .../wdatas/core/Wdata_dict_value_entity.java | 36 --- .../core/Wdata_dict_value_entity_tid.java | 55 ---- .../Wdata_dict_value_globecoordinate.java | 54 ---- .../Wdata_dict_value_monolingualtext.java | 36 --- .../core/Wdata_dict_value_quantity.java | 44 ---- .../wdatas/core/Wdata_dict_value_time.java | 93 ------- .../parsers/Wdata_claims_parser_v2.java | 247 ------------------ 388 files changed, 3517 insertions(+), 2553 deletions(-) create mode 100644 100_core/src/gplx/Datetime_now.java rename 400_xowa/src/gplx/core/primitives/{Number_parser.java => Gfo_number_parser.java} (87%) rename 400_xowa/src/gplx/core/primitives/{Number_parser_tst.java => Gfo_number_parser_tst.java} (91%) rename 400_xowa/src/gplx/{xowa/wikis/ctgs/Xoctg_view_ctg_tst.java => core/primitives/Hash_adp__primitive.java} (62%) rename 400_xowa/src/gplx/xowa/{xtns/wdatas/core/Wdata_dict_value_string.java => addons/bldrs/hdumps/diffs/Dumpdiff_addon.java} (58%) create mode 100644 400_xowa/src/gplx/xowa/addons/bldrs/hdumps/diffs/Dumpdiff_cfg.java create mode 100644 400_xowa/src/gplx/xowa/addons/bldrs/hdumps/diffs/Dumpdiff_cmd.java create mode 100644 400_xowa/src/gplx/xowa/addons/bldrs/hdumps/diffs/Dumpdiff_log_tbl.java create mode 100644 400_xowa/src/gplx/xowa/addons/bldrs/hdumps/diffs/Dumpdiff_mgr.java create mode 100644 400_xowa/src/gplx/xowa/addons/bldrs/hdumps/diffs/Dumpdiff_page_itm.java create mode 100644 400_xowa/src/gplx/xowa/addons/bldrs/hdumps/diffs/Dumpdiff_page_loader.java create mode 100644 400_xowa/src/gplx/xowa/addons/bldrs/hdumps/diffs/Hdump_html_loader.java create mode 100644 400_xowa/src/gplx/xowa/addons/bldrs/mass_parses/parses/Xow_wiki_utl_.java rename 400_xowa/src/gplx/xowa/{wikis/ctgs/Xoctg_data_ctg_tst.java => langs/commas/Xol_comma_wkr.java} (71%) create mode 100644 400_xowa/src/gplx/xowa/langs/commas/Xol_comma_wkr__add.java rename 400_xowa/src/gplx/xowa/xtns/{wdatas => wbases}/Wbase_doc_mgr.java (96%) rename 400_xowa/src/gplx/xowa/xtns/{wdatas => wbases}/Wbase_pid_mgr.java (95%) rename 400_xowa/src/gplx/xowa/xtns/{wdatas => wbases}/Wbase_qid_mgr.java (96%) rename 400_xowa/src/gplx/xowa/xtns/{wdatas => wbases}/Wdata_doc.java (92%) rename 400_xowa/src/gplx/xowa/xtns/{wdatas => wbases}/Wdata_doc_bldr.java (83%) rename 400_xowa/src/gplx/xowa/xtns/{wdatas => wbases}/Wdata_doc_wtr.java (50%) rename 400_xowa/src/gplx/xowa/xtns/{wdatas => wbases}/Wdata_prop_val_visitor.java (66%) create mode 100644 400_xowa/src/gplx/xowa/xtns/wbases/Wdata_prop_val_visitor_.java rename 400_xowa/src/gplx/xowa/xtns/{wdatas => wbases}/Wdata_wiki_mgr.java (86%) rename 400_xowa/src/gplx/xowa/xtns/{wdatas => wbases}/Wdata_wiki_mgr_fxt.java (66%) rename 400_xowa/src/gplx/xowa/xtns/{wdatas => wbases}/Wdata_wiki_mgr_tst.java (93%) rename 400_xowa/src/gplx/xowa/xtns/{wdatas => wbases}/Wdata_xtn_mgr.java (95%) rename 400_xowa/src/gplx/xowa/xtns/{wdatas => wbases}/Wdata_xwiki_link_wtr.java (95%) rename 400_xowa/src/gplx/xowa/xtns/{wdatas => wbases}/Wdata_xwiki_link_wtr_tst.java (97%) rename 400_xowa/src/gplx/xowa/xtns/{wdatas/core/Wdata_claim_grp.java => wbases/claims/Wbase_claim_grp.java} (70%) rename 400_xowa/src/gplx/xowa/xtns/{wdatas/core/Wdata_claim_grp_list.java => wbases/claims/Wbase_claim_grp_list.java} (73%) create mode 100644 400_xowa/src/gplx/xowa/xtns/wbases/claims/Wbase_claim_visitor.java rename 400_xowa/src/gplx/xowa/xtns/{wdatas/core/Wdata_references_grp.java => wbases/claims/Wbase_references_grp.java} (72%) create mode 100644 400_xowa/src/gplx/xowa/xtns/wbases/claims/enums/Wbase_claim_entity_type_.java rename 400_xowa/src/gplx/xowa/xtns/{wdatas/core/Wdata_claim_visitor.java => wbases/claims/enums/Wbase_claim_enum.java} (55%) create mode 100644 400_xowa/src/gplx/xowa/xtns/wbases/claims/enums/Wbase_claim_enum_.java create mode 100644 400_xowa/src/gplx/xowa/xtns/wbases/claims/enums/Wbase_claim_rank_.java create mode 100644 400_xowa/src/gplx/xowa/xtns/wbases/claims/enums/Wbase_claim_type.java create mode 100644 400_xowa/src/gplx/xowa/xtns/wbases/claims/enums/Wbase_claim_type_.java create mode 100644 400_xowa/src/gplx/xowa/xtns/wbases/claims/enums/Wbase_claim_value_type_.java create mode 100644 400_xowa/src/gplx/xowa/xtns/wbases/claims/itms/Wbase_claim_base.java create mode 100644 400_xowa/src/gplx/xowa/xtns/wbases/claims/itms/Wbase_claim_entity.java create mode 100644 400_xowa/src/gplx/xowa/xtns/wbases/claims/itms/Wbase_claim_entity_.java create mode 100644 400_xowa/src/gplx/xowa/xtns/wbases/claims/itms/Wbase_claim_globecoordinate.java create mode 100644 400_xowa/src/gplx/xowa/xtns/wbases/claims/itms/Wbase_claim_globecoordinate_.java create mode 100644 400_xowa/src/gplx/xowa/xtns/wbases/claims/itms/Wbase_claim_monolingualtext.java create mode 100644 400_xowa/src/gplx/xowa/xtns/wbases/claims/itms/Wbase_claim_monolingualtext_.java rename 400_xowa/src/gplx/xowa/xtns/{wdatas/core/Wdata_claim_itm_quantity.java => wbases/claims/itms/Wbase_claim_quantity.java} (59%) create mode 100644 400_xowa/src/gplx/xowa/xtns/wbases/claims/itms/Wbase_claim_quantity_.java rename 400_xowa/src/gplx/xowa/xtns/{wdatas/core/Wdata_claim_itm_str.java => wbases/claims/itms/Wbase_claim_string.java} (52%) create mode 100644 400_xowa/src/gplx/xowa/xtns/wbases/claims/itms/Wbase_claim_time.java create mode 100644 400_xowa/src/gplx/xowa/xtns/wbases/claims/itms/Wbase_claim_time_.java create mode 100644 400_xowa/src/gplx/xowa/xtns/wbases/claims/itms/Wbase_claim_value.java create mode 100644 400_xowa/src/gplx/xowa/xtns/wbases/claims/itms/times/Wbase_data_itm.java rename 400_xowa/src/gplx/xowa/xtns/{wdatas/core/Wdata_date.java => wbases/claims/itms/times/Wbase_date.java} (79%) rename 400_xowa/src/gplx/xowa/xtns/{wdatas/core/Wdata_date_tst.java => wbases/claims/itms/times/Wbase_date_tst.java} (66%) rename 400_xowa/src/gplx/xowa/xtns/{wdatas => wbases}/core/Wdata_alias_itm.java (90%) rename 400_xowa/src/gplx/xowa/xtns/{wdatas => wbases}/core/Wdata_dict_claim.java (89%) rename 400_xowa/src/gplx/xowa/xtns/{wdatas => wbases}/core/Wdata_dict_claim_v1.java (86%) rename 400_xowa/src/gplx/xowa/xtns/{wdatas => wbases}/core/Wdata_dict_datavalue.java (85%) rename 400_xowa/src/gplx/xowa/xtns/{wdatas => wbases}/core/Wdata_dict_langtext.java (84%) rename 400_xowa/src/gplx/xowa/xtns/{wdatas => wbases}/core/Wdata_dict_mainsnak.java (81%) rename 400_xowa/src/gplx/xowa/xtns/{wdatas => wbases}/core/Wdata_dict_reference.java (90%) rename 400_xowa/src/gplx/xowa/xtns/{wdatas => wbases}/core/Wdata_dict_sitelink.java (85%) rename 400_xowa/src/gplx/xowa/xtns/{wdatas => wbases}/core/Wdata_dict_utl.java (89%) rename 400_xowa/src/gplx/xowa/xtns/{wdatas => wbases}/core/Wdata_lang_sortable.java (86%) rename 400_xowa/src/gplx/xowa/xtns/{wdatas => wbases}/core/Wdata_lang_sorter.java (95%) rename 400_xowa/src/gplx/xowa/xtns/{wdatas => wbases}/core/Wdata_langtext_itm.java (85%) rename 400_xowa/src/gplx/xowa/xtns/{wdatas => wbases}/core/Wdata_sitelink_itm.java (83%) rename 400_xowa/src/gplx/xowa/xtns/{wdatas => wbases}/hwtrs/Wdata_fmtr__claim_grp.java (88%) rename 400_xowa/src/gplx/xowa/xtns/{wdatas => wbases}/hwtrs/Wdata_fmtr__json.java (93%) rename 400_xowa/src/gplx/xowa/xtns/{wdatas => wbases}/hwtrs/Wdata_fmtr__langtext_tbl.java (95%) rename 400_xowa/src/gplx/xowa/xtns/{wdatas => wbases}/hwtrs/Wdata_fmtr__oview_tbl.java (93%) rename 400_xowa/src/gplx/xowa/xtns/{wdatas => wbases}/hwtrs/Wdata_fmtr__slink.java (86%) rename 400_xowa/src/gplx/xowa/xtns/{wdatas => wbases}/hwtrs/Wdata_fmtr__toc_div.java (93%) rename 400_xowa/src/gplx/xowa/xtns/{wdatas => wbases}/hwtrs/Wdata_hwtr_mgr.java (95%) rename 400_xowa/src/gplx/xowa/xtns/{wdatas => wbases}/hwtrs/Wdata_hwtr_mgr_tst.java (93%) rename 400_xowa/src/gplx/xowa/xtns/{wdatas => wbases}/hwtrs/Wdata_hwtr_msgs.java (97%) rename 400_xowa/src/gplx/xowa/xtns/{wdatas => wbases}/hwtrs/Wdata_lbl_itm.java (75%) rename 400_xowa/src/gplx/xowa/xtns/{wdatas => wbases}/hwtrs/Wdata_lbl_mgr.java (85%) rename 400_xowa/src/gplx/xowa/xtns/{wdatas => wbases}/hwtrs/Wdata_lbl_wkr.java (82%) rename 400_xowa/src/gplx/xowa/xtns/{wdatas => wbases}/hwtrs/Wdata_lbl_wkr_wiki.java (90%) rename 400_xowa/src/gplx/xowa/xtns/{wdatas => wbases}/hwtrs/Wdata_slink_grp.java (84%) rename 400_xowa/src/gplx/xowa/xtns/{wdatas => wbases}/hwtrs/Wdata_toc_data.java (92%) rename 400_xowa/src/gplx/xowa/xtns/{wdatas => wbases}/hwtrs/Wdata_visitor__html_wtr.java (78%) rename 400_xowa/src/gplx/xowa/xtns/{wdatas => wbases}/hwtrs/Wdata_visitor__html_wtr_tst.java (84%) rename 400_xowa/src/gplx/xowa/xtns/{wdatas => wbases}/hwtrs/Wdata_visitor__lbl_gatherer.java (62%) rename 400_xowa/src/gplx/xowa/xtns/{wdatas => wbases}/imports/Io_stream_rdr_mgr.java (94%) rename 400_xowa/src/gplx/xowa/xtns/{wdatas => wbases}/imports/Wdata_idx_mgr_base.java (89%) rename 400_xowa/src/gplx/xowa/xtns/{wdatas => wbases}/imports/Wdata_idx_wtr.java (95%) rename 400_xowa/src/gplx/xowa/xtns/{wdatas => wbases}/imports/Xob_wbase_json_dump_cmd.java (91%) rename 400_xowa/src/gplx/xowa/xtns/{wdatas => wbases}/imports/Xob_wbase_json_dump_db.java (91%) rename 400_xowa/src/gplx/xowa/xtns/{wdatas => wbases}/imports/Xob_wbase_json_dump_parser.java (95%) rename 400_xowa/src/gplx/xowa/xtns/{wdatas => wbases}/imports/Xob_wbase_ns_parser.java (89%) rename 400_xowa/src/gplx/xowa/xtns/{wdatas => wbases}/imports/Xob_wdata_db_cmd.java (90%) rename 400_xowa/src/gplx/xowa/xtns/{wdatas => wbases}/imports/Xob_wdata_pid_base.java (89%) rename 400_xowa/src/gplx/xowa/xtns/{wdatas => wbases}/imports/Xob_wdata_pid_base_tst.java (93%) rename 400_xowa/src/gplx/xowa/xtns/{wdatas => wbases}/imports/Xob_wdata_pid_sql.java (90%) rename 400_xowa/src/gplx/xowa/xtns/{wdatas => wbases}/imports/Xob_wdata_pid_txt.java (92%) rename 400_xowa/src/gplx/xowa/xtns/{wdatas => wbases}/imports/Xob_wdata_qid_base.java (93%) rename 400_xowa/src/gplx/xowa/xtns/{wdatas => wbases}/imports/Xob_wdata_qid_base_tst.java (94%) rename 400_xowa/src/gplx/xowa/xtns/{wdatas => wbases}/imports/Xob_wdata_qid_sql.java (91%) rename 400_xowa/src/gplx/xowa/xtns/{wdatas => wbases}/imports/Xob_wdata_qid_txt.java (92%) create mode 100644 400_xowa/src/gplx/xowa/xtns/wbases/parsers/Wbase_claim_factory.java create mode 100644 400_xowa/src/gplx/xowa/xtns/wbases/parsers/Wdata_claims_parser_v2.java rename 400_xowa/src/gplx/xowa/xtns/{wdatas => wbases}/parsers/Wdata_doc_parser.java (68%) rename 400_xowa/src/gplx/xowa/xtns/{wdatas => wbases}/parsers/Wdata_doc_parser_fxt_base.java (55%) rename 400_xowa/src/gplx/xowa/xtns/{wdatas => wbases}/parsers/Wdata_doc_parser_v1.java (78%) rename 400_xowa/src/gplx/xowa/xtns/{wdatas => wbases}/parsers/Wdata_doc_parser_v1_tst.java (92%) rename 400_xowa/src/gplx/xowa/xtns/{wdatas => wbases}/parsers/Wdata_doc_parser_v2.java (87%) rename 400_xowa/src/gplx/xowa/xtns/{wdatas/parsers/Wdata_doc_parser_v2_tst.java => wbases/parsers/Wdata_doc_parser_v2__basic__tst.java} (62%) create mode 100644 400_xowa/src/gplx/xowa/xtns/wbases/parsers/Wdata_doc_parser_v2__claims__tst.java rename 400_xowa/src/gplx/xowa/xtns/{wdatas => wbases}/pfuncs/Wdata_external_lang_links_data.java (94%) rename 400_xowa/src/gplx/xowa/xtns/{wdatas => wbases}/pfuncs/Wdata_pf_noExternalLangLinks.java (91%) rename 400_xowa/src/gplx/xowa/xtns/{wdatas => wbases}/pfuncs/Wdata_pf_noExternalLangLinks_tst.java (94%) rename 400_xowa/src/gplx/xowa/xtns/{wdatas => wbases}/pfuncs/Wdata_pf_property.java (92%) rename 400_xowa/src/gplx/xowa/xtns/{wdatas => wbases}/pfuncs/Wdata_pf_property__basic__tst.java (89%) rename 400_xowa/src/gplx/xowa/xtns/{wdatas => wbases}/pfuncs/Wdata_pf_property__parse__tst.java (93%) rename 400_xowa/src/gplx/xowa/xtns/{wdatas => wbases}/pfuncs/Wdata_pf_property_data.java (94%) rename 400_xowa/src/gplx/xowa/xtns/{wdatas => wbases}/pfuncs/Wdata_pf_property_fmt.java (94%) rename 400_xowa/src/gplx/xowa/xtns/{wdatas => wbases}/pfuncs/Wdata_pf_wbreponame.java (86%) rename 400_xowa/src/gplx/xowa/xtns/{wdatas => wbases}/pfuncs/Wdata_pf_wbreponame_tst.java (89%) rename 400_xowa/src/gplx/xowa/xtns/{wdatas => wbases}/specials/Wdata_itemByTitle_cfg.java (90%) rename 400_xowa/src/gplx/xowa/xtns/{wdatas => wbases}/specials/Wdata_itemByTitle_page.java (96%) rename 400_xowa/src/gplx/xowa/xtns/{wdatas => wbases}/specials/Wdata_itemByTitle_page_tst.java (94%) delete mode 100644 400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_claim_itm_base.java delete mode 100644 400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_claim_itm_core.java delete mode 100644 400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_claim_itm_entity.java delete mode 100644 400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_claim_itm_globecoordinate.java delete mode 100644 400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_claim_itm_monolingualtext.java delete mode 100644 400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_claim_itm_system.java delete mode 100644 400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_claim_itm_time.java delete mode 100644 400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_dict_rank.java delete mode 100644 400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_dict_snak_tid.java delete mode 100644 400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_dict_val_tid.java delete mode 100644 400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_dict_value_entity.java delete mode 100644 400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_dict_value_entity_tid.java delete mode 100644 400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_dict_value_globecoordinate.java delete mode 100644 400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_dict_value_monolingualtext.java delete mode 100644 400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_dict_value_quantity.java delete mode 100644 400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_dict_value_time.java delete mode 100644 400_xowa/src/gplx/xowa/xtns/wdatas/parsers/Wdata_claims_parser_v2.java diff --git a/100_core/src/gplx/DateAdp_.java b/100_core/src/gplx/DateAdp_.java index 4c5c77ad7..59d2bf7f2 100644 --- a/100_core/src/gplx/DateAdp_.java +++ b/100_core/src/gplx/DateAdp_.java @@ -29,12 +29,12 @@ public class DateAdp_ implements Gfo_invk { public static final String Cls_ref_name = "Date"; public static final Class Cls_ref_type = DateAdp.class; public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { - if (ctx.Match(k, Invk_Now)) return Now(); + if (ctx.Match(k, Invk_Now)) return Datetime_now.Get(); else return Gfo_invk_.Rv_unhandled; } public static final String Invk_Now = "Now"; public static final DateAdp MinValue = new DateAdp( 1, 1, 1, 0, 0, 0, 0); public static final DateAdp MaxValue = new DateAdp(9999, 12, 31, 23, 59, 59, 999); - public static DateAdp Now() {return Tfds.Now_enabled() ? Tfds.Now() : new DateAdp(new GregorianCalendar());} +// public static DateAdp Now() {return Tfds.Now_enabled() ? Tfds.Now() : new DateAdp(new GregorianCalendar());} public static DateAdp new_(int year, int month, int day, int hour, int minute, int second, int frac) {return new DateAdp(year, month, day, hour, minute, second, frac);} public static DateAdp seg_(int[] ary) { int ary_len = ary.length; diff --git a/100_core/src/gplx/Datetime_now.java b/100_core/src/gplx/Datetime_now.java new file mode 100644 index 000000000..104481ecf --- /dev/null +++ b/100_core/src/gplx/Datetime_now.java @@ -0,0 +1,66 @@ +/* +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; +import java.util.GregorianCalendar; +public class Datetime_now { + private static final DateAdp dflt = DateAdp_.parse_gplx("2001-01-01 00:00:00.000"); + private static DateAdp manual; + private static boolean autoincrement = true; + public static void Manual_y_() { + manual = dflt; + } + public static void Manual_n_() { + manual = null; + autoincrement = true; + } + public static void Manual_and_freeze_(DateAdp v) { + manual = v; + autoincrement = false; + } + public static void Manual_(DateAdp v) { + manual = v; + } + public static void Autoincrement_n_() { + autoincrement = false; + } + public static DateAdp Dflt_add_min_(int v) { + return dflt.Add_minute(v); + } + + public static DateAdp Get() { + if (manual == null) return new DateAdp(new GregorianCalendar()); + DateAdp rv = manual; + if (autoincrement) manual = rv.Add_minute(1); // simulate passage of manual by increasing manual by 1 minute with each call + return rv; + } +// private static final DateAdp manual_time_dflt = DateAdp_.parse_gplx("2001-01-01 00:00:00.000"); +// private static DateAdp manual_time; +// static boolean Now_enabled() {return now_enabled;} private static boolean now_enabled; +// static void Now_enabled_y_() {now_enabled = Bool_.Y; manual_time = manual_time_dflt;} +// static void Now_enabled_n_() {now_enabled = Bool_.N; now_freeze = false;} + // public static void Now_set(DateAdp date) {now_enabled = true; manual_time = date;} + // public static void Now_freeze_y_() {now_freeze = true;} +// private static boolean now_freeze; + // public static DateAdp Now_time0_add_min(int minutes) {return manual_time_dflt.Add_minute(minutes);} +// @gplx.Internal protected static DateAdp Now() { +// DateAdp rv = manual_time; +// if (!now_freeze) manual_time = rv.Add_minute(1); +// return rv; +// } + +} \ No newline at end of file diff --git a/100_core/src/gplx/Gfo_log_.java b/100_core/src/gplx/Gfo_log_.java index 6a9f654a1..a2b21441e 100644 --- a/100_core/src/gplx/Gfo_log_.java +++ b/100_core/src/gplx/Gfo_log_.java @@ -26,10 +26,10 @@ public class Gfo_log_ { } public static final String File__fmt = "yyyyMMdd_HHmmss", File__ext = ".log"; public static Io_url New_url(Io_url dir) { - return dir.GenSubFil(DateAdp_.Now().XtoUtc().XtoStr_fmt(Gfo_log_.File__fmt) + Gfo_log_.File__ext); + return dir.GenSubFil(Datetime_now.Get().XtoUtc().XtoStr_fmt(Gfo_log_.File__fmt) + Gfo_log_.File__ext); } public static Gfo_log New_file(Io_url dir) { - Io_url url = dir.GenSubFil(DateAdp_.Now().XtoStr_fmt(File__fmt) + File__ext); + Io_url url = dir.GenSubFil(Datetime_now.Get().XtoStr_fmt(File__fmt) + File__ext); Gfo_log__file.Delete_old_files(dir, Gfo_log_.Instance); return new Gfo_log__file(url, new Gfo_log_itm_wtr__csv()); } diff --git a/100_core/src/gplx/Gfo_log_bfr.java b/100_core/src/gplx/Gfo_log_bfr.java index bad8ffa6c..37f8540df 100644 --- a/100_core/src/gplx/Gfo_log_bfr.java +++ b/100_core/src/gplx/Gfo_log_bfr.java @@ -19,7 +19,7 @@ package gplx; public class Gfo_log_bfr { private Bry_bfr bfr = Bry_bfr_.Reset(255); public Gfo_log_bfr Add(String s) { - bfr.Add_str_a7(DateAdp_.Now().XtoUtc().XtoStr_fmt_yyyyMMdd_HHmmss_fff()); + bfr.Add_str_a7(Datetime_now.Get().XtoUtc().XtoStr_fmt_yyyyMMdd_HHmmss_fff()); bfr.Add_byte_space(); bfr.Add_str_u8(s); bfr.Add_byte_nl(); diff --git a/100_core/src/gplx/Gfo_usr_dlg__log_base.java b/100_core/src/gplx/Gfo_usr_dlg__log_base.java index 3963d06c1..595011a36 100644 --- a/100_core/src/gplx/Gfo_usr_dlg__log_base.java +++ b/100_core/src/gplx/Gfo_usr_dlg__log_base.java @@ -21,7 +21,7 @@ public class Gfo_usr_dlg__log_base implements Gfo_usr_dlg__log { private int archive_dirs_max = 8; private Io_url log_dir, err_fil; private Ordered_hash queued_list = Ordered_hash_.New(); - private Bry_fmtr fmtr = Bry_fmtr.tmp_(); private Bry_bfr tmp_bfr = Bry_bfr_.Reset(255); + private Bry_fmtr fmtr = Bry_fmtr.New__tmp(); private Bry_bfr tmp_bfr = Bry_bfr_.Reset(255); public boolean Queue_enabled() {return queue_enabled;} public void Queue_enabled_(boolean v) {queue_enabled = v; if (!v) this.Flush();} private boolean queue_enabled; public boolean Enabled() {return enabled;} public void Enabled_(boolean v) {enabled = v;} private boolean enabled = true; public Io_url Session_dir() {return session_dir;} private Io_url session_dir; @@ -56,7 +56,7 @@ public class Gfo_usr_dlg__log_base implements Gfo_usr_dlg__log { this.Log_to_session("app term"); MoveCurrentToArchive(session_dir); } - private void MoveCurrentToArchive(Io_url dir) {Io_mgr.Instance.MoveDirDeep(dir, dir.OwnerDir().GenSubDir(DateAdp_.Now().XtoStr_fmt_yyyyMMdd_HHmmss_fff()));} + private void MoveCurrentToArchive(Io_url dir) {Io_mgr.Instance.MoveDirDeep(dir, dir.OwnerDir().GenSubDir(Datetime_now.Get().XtoStr_fmt_yyyyMMdd_HHmmss_fff()));} public void Log_info(boolean warn, String s) {if (warn) Log_to_err(s); else Log_to_session(s);} public void Log_msg_to_url_fmt(Io_url url, String fmt, Object... args) { if (!enabled) return; @@ -83,7 +83,7 @@ public class Gfo_usr_dlg__log_base implements Gfo_usr_dlg__log { } catch (Exception e) {Err_.Noop(e);} // java.lang.StringBuilder can throw exceptions in some situations when called on a different thread; ignore errors } private String_bldr sb = String_bldr_.new_thread(); // NOTE: use java.lang.StringBuffer to try to avoid random exceptions when called on a different thread - private String Bld_msg(String s) {return sb.Add(DateAdp_.Now().XtoUtc().XtoStr_fmt_yyyyMMdd_HHmmss_fff()).Add(" ").Add(s).Add_char_nl().To_str_and_clear();} + private String Bld_msg(String s) {return sb.Add(Datetime_now.Get().XtoUtc().XtoStr_fmt_yyyyMMdd_HHmmss_fff()).Add(" ").Add(s).Add_char_nl().To_str_and_clear();} private void Log_msg(Io_url url, String txt) { if (queue_enabled) { String url_raw = url == null ? "mem" : url.Raw(); diff --git a/100_core/src/gplx/Gfo_usr_dlg_base.java b/100_core/src/gplx/Gfo_usr_dlg_base.java index 98b02df3c..1b51e8bc9 100644 --- a/100_core/src/gplx/Gfo_usr_dlg_base.java +++ b/100_core/src/gplx/Gfo_usr_dlg_base.java @@ -19,7 +19,7 @@ package gplx; import gplx.core.brys.fmtrs.*; public class Gfo_usr_dlg_base implements Gfo_usr_dlg { private final Bry_bfr tmp_bfr = Bry_bfr_.Reset(255); - private final Bry_fmtr tmp_fmtr = Bry_fmtr.tmp_().Fail_when_invalid_escapes_(false); // do not fail b/c msgs may contain excerpt of random text; EX:[[User:A|~A~]] DATE:2014-11-28 + private final Bry_fmtr tmp_fmtr = Bry_fmtr.New__tmp().Fail_when_invalid_escapes_(false); // do not fail b/c msgs may contain excerpt of random text; EX:[[User:A|~A~]] DATE:2014-11-28 public Gfo_usr_dlg_base(Gfo_usr_dlg__log log_wkr, Gfo_usr_dlg__gui gui_wkr) {this.log_wkr = log_wkr; this.gui_wkr = gui_wkr;} public Gfo_usr_dlg__log Log_wkr() {return log_wkr;} public void Log_wkr_(Gfo_usr_dlg__log v) {log_wkr = v;} private Gfo_usr_dlg__log log_wkr; public Gfo_usr_dlg__gui Gui_wkr() {return gui_wkr;} public void Gui_wkr_(Gfo_usr_dlg__gui v) {gui_wkr = v;} private Gfo_usr_dlg__gui gui_wkr; diff --git a/100_core/src/gplx/Hash_adp_bry.java b/100_core/src/gplx/Hash_adp_bry.java index bc8070c57..f3fa04933 100644 --- a/100_core/src/gplx/Hash_adp_bry.java +++ b/100_core/src/gplx/Hash_adp_bry.java @@ -44,12 +44,12 @@ public class Hash_adp_bry extends gplx.core.lists.Hash_adp_base implements Hash_ } 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_byte_int(byte key, int val) {this.Add_base(new byte[]{key}, new Int_obj_val(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;} + public Hash_adp_bry Add_bry_int(byte[] key, int val) {this.Add_base(key, new Int_obj_val(val)); return this;} public Hash_adp_bry Add_bry_bry(byte[] key) {this.Add_base(key, key); return this;} public Hash_adp_bry Add_str_byte(String key, byte val) {this.Add_base(Bry_.new_u8(key), Byte_obj_val.new_(val)); return this;} - public Hash_adp_bry Add_str_int(String key, int val) {this.Add_base(Bry_.new_u8(key), Int_obj_val.new_(val)); return this;} + public Hash_adp_bry Add_str_int(String key, int val) {this.Add_base(Bry_.new_u8(key), new Int_obj_val(val)); return this;} public Hash_adp_bry Add_str_obj(String key, Object val) {this.Add_base(Bry_.new_u8(key), val); return this;} public Hash_adp_bry Add_bry_obj(byte[] key, Object val) {this.Add_base(key, val); return this;} public Hash_adp_bry Add_many_str(String... ary) { diff --git a/100_core/src/gplx/Tfds.java b/100_core/src/gplx/Tfds.java index 86b44ec21..6b46c2bbb 100644 --- a/100_core/src/gplx/Tfds.java +++ b/100_core/src/gplx/Tfds.java @@ -141,19 +141,6 @@ public class Tfds { // URL:doc/gplx.tfds/Tfds.txt static final String EmptyStr = TfdsMsgBldr.EmptyStr; static TfdsMsgBldr msgBldr = TfdsMsgBldr.new_(); public static final Io_url RscDir = Io_url_.Usr().GenSubDir_nest("000", "200_dev", "190_tst"); - public static DateAdp Now_time0_add_min(int minutes) {return time0.Add_minute(minutes);} - @gplx.Internal protected static boolean Now_enabled() {return now_enabled;} private static boolean now_enabled; private static boolean now_freeze; - public static void Now_enabled_n_() {now_enabled = false; now_freeze = false;} - public static void Now_set(DateAdp date) {now_enabled = true; nowTime = date;} - public static void Now_enabled_y_() {now_enabled = true; nowTime = time0;} - public static void Now_freeze_y_() {now_freeze = true;} - @gplx.Internal protected static DateAdp Now() { - DateAdp rv = nowTime; - if (!now_freeze) nowTime = rv.Add_minute(1); - return rv; - } - private static final DateAdp time0 = DateAdp_.parse_gplx("2001-01-01 00:00:00.000"); - private static DateAdp nowTime; // NOTE: cannot set to time0 due to static initialization; public static void WriteText(String text) {Console_adp__sys.Instance.Write_str(text);} public static void Write(byte[] s, int b, int e) {Write(Bry_.Mid(s, b, e));} public static void Write() {Write("tmp");} @@ -163,7 +150,7 @@ public class Tfds { // URL:doc/gplx.tfds/Tfds.txt int aryLen = Array_.Len(ary); for (int i = 0; i < aryLen; i++) sb.Add_many("'", Object_.Xto_str_strict_or_null_mark(ary[i]), "'", " "); - WriteText(sb.To_str() + String_.CrLf); + WriteText(sb.To_str() + String_.Lf); } } class TfdsEqListItmStr_cls_default implements TfdsEqListItmStr { diff --git a/100_core/src/gplx/core/brys/fmtrs/Bry_fmtr.java b/100_core/src/gplx/core/brys/fmtrs/Bry_fmtr.java index 4d93b11cf..8fead38ad 100644 --- a/100_core/src/gplx/core/brys/fmtrs/Bry_fmtr.java +++ b/100_core/src/gplx/core/brys/fmtrs/Bry_fmtr.java @@ -27,7 +27,7 @@ public class Bry_fmtr { else keys.Clear(); int ary_len = ary.length; for (int i = 0; i < ary_len; i++) - keys.Add(Bry_obj_ref.New(Bry_.new_u8(ary[i])), Int_obj_val.new_(i)); + keys.Add(Bry_obj_ref.New(Bry_.new_u8(ary[i])), new Int_obj_val(i)); dirty = true; return this; } Hash_adp keys = null; @@ -232,7 +232,7 @@ public class Bry_fmtr { int baseInt = 0; public static final byte char_escape = Byte_ascii.Tilde, char_arg_bgn = Byte_ascii.Curly_bgn, char_arg_end = Byte_ascii.Curly_end, char_escape_nl = Byte_ascii.Ltr_n, char_escape_tab = Byte_ascii.Ltr_t, char_eval_bgn = Byte_ascii.Lt, char_eval_end = Byte_ascii.Gt; public static final Bry_fmtr Null = new Bry_fmtr().Fmt_(""); - public static Bry_fmtr tmp_() {return new Bry_fmtr().Fmt_("").Keys_();} + public static Bry_fmtr New__tmp() {return new Bry_fmtr().Fmt_("").Keys_();} public static Bry_fmtr new_(String fmt, String... keys) {return new Bry_fmtr().Fmt_(fmt).Keys_(keys);} // NOTE: keys may seem redundant, but are needed to align ordinals with proc; EX: fmt may be "~{A} ~{B}" or "~{B} ~{A}"; call will always be Bld(a, b); passing in "A", "B" guarantees A is 0 and B is 1; public static Bry_fmtr new_(byte[] fmt, String... keys) {return new Bry_fmtr().Fmt_(fmt).Keys_(keys);} // NOTE: keys may seem redundant, but are needed to align ordinals with proc; EX: fmt may be "~{A} ~{B}" or "~{B} ~{A}"; call will always be Bld(a, b); passing in "A", "B" guarantees A is 0 and B is 1; public static Bry_fmtr new_() {return new Bry_fmtr();} diff --git a/100_core/src/gplx/core/brys/fmtrs/Bry_fmtr_eval_mgr_.java b/100_core/src/gplx/core/brys/fmtrs/Bry_fmtr_eval_mgr_.java index 1ee762d95..a3b4d0cc9 100644 --- a/100_core/src/gplx/core/brys/fmtrs/Bry_fmtr_eval_mgr_.java +++ b/100_core/src/gplx/core/brys/fmtrs/Bry_fmtr_eval_mgr_.java @@ -20,7 +20,7 @@ public class Bry_fmtr_eval_mgr_ { public static Io_url Eval_url(Bry_fmtr_eval_mgr eval_mgr, byte[] fmt) { if (eval_mgr == null) return Io_url_.new_any_(String_.new_u8(fmt)); Bry_bfr bfr = Bry_bfr_.Reset(255); - Bry_fmtr fmtr = Bry_fmtr.tmp_(); + Bry_fmtr fmtr = Bry_fmtr.New__tmp(); fmtr.Eval_mgr_(eval_mgr).Fmt_(fmt).Bld_bfr_none(bfr); return Io_url_.new_any_(bfr.To_str_and_clear()); } diff --git a/100_core/src/gplx/core/brys/fmtrs/Bry_fmtr_vals.java b/100_core/src/gplx/core/brys/fmtrs/Bry_fmtr_vals.java index 3a5d287ad..be1affacb 100644 --- a/100_core/src/gplx/core/brys/fmtrs/Bry_fmtr_vals.java +++ b/100_core/src/gplx/core/brys/fmtrs/Bry_fmtr_vals.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.core.brys.fmtrs; import gplx.*; import gplx.core.*; import gplx.core.brys.*; import gplx.core.brys.*; public class Bry_fmtr_vals implements Bfr_arg { - private final Bry_fmtr fmtr; private Object[] vals; + private final Bry_fmtr fmtr; private Object[] vals; Bry_fmtr_vals(Bry_fmtr fmtr) {this.fmtr = fmtr;} public Bry_fmtr_vals Vals_(Object... v) {this.vals = v; return this;} public void Bfr_arg__add(Bry_bfr bfr) { 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 a6be5ecc0..41e1c0283 100644 --- a/100_core/src/gplx/core/btries/Btrie_slim_mgr.java +++ b/100_core/src/gplx/core/btries/Btrie_slim_mgr.java @@ -88,9 +88,9 @@ public class Btrie_slim_mgr implements Btrie_mgr { return rv_obj == null ? or : ((Byte_obj_val)rv_obj).Val(); } public Btrie_slim_mgr Add_bry_tid(byte[] bry, byte tid) {return (Btrie_slim_mgr)Add_obj(bry, Byte_obj_val.new_(tid));} - public Btrie_slim_mgr Add_bry_int(byte[] key, int val) {return (Btrie_slim_mgr)Add_obj(key, Int_obj_val.new_(val));} + public Btrie_slim_mgr Add_bry_int(byte[] key, int val) {return (Btrie_slim_mgr)Add_obj(key, new Int_obj_val(val));} public Btrie_slim_mgr Add_str_byte(String key, byte val) {return (Btrie_slim_mgr)Add_obj(Bry_.new_u8(key), Byte_obj_val.new_(val));} - public Btrie_slim_mgr Add_str_int(String key, int val) {return (Btrie_slim_mgr)Add_obj(Bry_.new_u8(key), Int_obj_val.new_(val));} + public Btrie_slim_mgr Add_str_int(String key, int val) {return (Btrie_slim_mgr)Add_obj(Bry_.new_u8(key), new Int_obj_val(val));} public Btrie_slim_mgr Add_bry(String key, String val) {return (Btrie_slim_mgr)Add_obj(Bry_.new_u8(key), Bry_.new_u8(val));} public Btrie_slim_mgr Add_bry(String key, byte[] val) {return (Btrie_slim_mgr)Add_obj(Bry_.new_u8(key), val);} public Btrie_slim_mgr Add_bry(byte[] v) {return (Btrie_slim_mgr)Add_obj(v, v);} @@ -108,7 +108,7 @@ public class Btrie_slim_mgr implements Btrie_mgr { public Btrie_slim_mgr Add_many_int(int val, String... ary) {return Add_many_int(val, Bry_.Ary(ary));} public Btrie_slim_mgr Add_many_int(int val, byte[]... ary) { int len = ary.length; - Int_obj_val obj = Int_obj_val.new_(val); + Int_obj_val obj = new Int_obj_val(val); for (int i = 0; i < len; i++) Add_obj(ary[i], obj); return this; diff --git a/100_core/src/gplx/core/ios/IoEngine_memory.java b/100_core/src/gplx/core/ios/IoEngine_memory.java index 20655b553..f55671d1a 100644 --- a/100_core/src/gplx/core/ios/IoEngine_memory.java +++ b/100_core/src/gplx/core/ios/IoEngine_memory.java @@ -68,7 +68,7 @@ public class IoEngine_memory extends IoEngine_base { return FetchFil(args.Url()).Text(); } void SaveFilStr(Io_url url, String text) { - DateAdp time = DateAdp_.Now(); + DateAdp time = Datetime_now.Get(); IoItmFil_mem fil = IoItmFil_mem.new_(url, String_.Len(text), time, text); AddFilToDir(url.OwnerDir(), fil); } @@ -76,7 +76,7 @@ public class IoEngine_memory extends IoEngine_base { Io_url url = args.Url(); String text = args.Text(); if (ExistsFil_api(url)) { IoItmFil_mem fil = FetchFil(url); - fil.ModifiedTime_(DateAdp_.Now()); + fil.ModifiedTime_(Datetime_now.Get()); fil.Text_set(fil.Text() + text); } else diff --git a/100_core/src/gplx/core/ios/IoEngine_xrg_recycleFil.java b/100_core/src/gplx/core/ios/IoEngine_xrg_recycleFil.java index 35963b5ad..a909fc5bf 100644 --- a/100_core/src/gplx/core/ios/IoEngine_xrg_recycleFil.java +++ b/100_core/src/gplx/core/ios/IoEngine_xrg_recycleFil.java @@ -48,7 +48,7 @@ public class IoEngine_xrg_recycleFil extends IoEngine_xrg_fil_affects1_base { } public IoEngine_xrg_recycleFil(int v) { mode = v; - time = DateAdp_.Now(); + time = Datetime_now.Get(); uuid = Guid_adp_.New(); rootDirNames = List_adp_.New(); rootDirNames.Add("z_trash"); } diff --git a/100_core/src/gplx/core/primitives/Int_obj_val.java b/100_core/src/gplx/core/primitives/Int_obj_val.java index 2b2c29068..31f05828e 100644 --- a/100_core/src/gplx/core/primitives/Int_obj_val.java +++ b/100_core/src/gplx/core/primitives/Int_obj_val.java @@ -17,16 +17,10 @@ along with this program. If not, see . */ package gplx.core.primitives; import gplx.*; import gplx.core.*; public class Int_obj_val implements CompareAble { - public int Val() {return val;} int val; + public Int_obj_val(int val) {this.val = val;} + public int Val() {return val;} private final int val; @Override public String toString() {return Int_.To_str(val);} @Override public int hashCode() {return val;} @Override public boolean equals(Object obj) {return obj == null ? false : val == ((Int_obj_val)obj).Val();} public int compareTo(Object obj) {Int_obj_val comp = (Int_obj_val)obj; return Int_.Compare(val, comp.val);} - public static Int_obj_val neg1_() {return new_(-1);} - public static Int_obj_val zero_() {return new_(0);} - public static Int_obj_val new_(int val) { - Int_obj_val rv = new Int_obj_val(); - rv.val = val; - return rv; - } Int_obj_val() {} } diff --git a/100_core/src/gplx/core/tests/PerfLogMgr_fxt.java b/100_core/src/gplx/core/tests/PerfLogMgr_fxt.java index 2c6d44cb0..f7c9a3a3c 100644 --- a/100_core/src/gplx/core/tests/PerfLogMgr_fxt.java +++ b/100_core/src/gplx/core/tests/PerfLogMgr_fxt.java @@ -21,7 +21,7 @@ public class PerfLogMgr_fxt { public void Init(Io_url url, String text) { this.url = url; entries.Resize_bounds(1000); - entries.Add(new PerfLogItm(0, text + "|" + DateAdp_.Now().XtoStr_gplx())); + entries.Add(new PerfLogItm(0, text + "|" + Datetime_now.Get().XtoStr_gplx())); tmr.Bgn(); } public void Write(String text) { diff --git a/100_core/src/gplx/langs/gfs/Gfs_Date_tst.java b/100_core/src/gplx/langs/gfs/Gfs_Date_tst.java index 314480d7c..2c62cfa7f 100644 --- a/100_core/src/gplx/langs/gfs/Gfs_Date_tst.java +++ b/100_core/src/gplx/langs/gfs/Gfs_Date_tst.java @@ -21,7 +21,7 @@ public class Gfs_Date_tst { @Before public void setup() { fx = new GfsCoreFxt(); fx.AddObj(DateAdp_.Gfs, "Date_"); - Tfds.Now_enabled_y_(); + Datetime_now.Manual_y_(); } GfsCoreFxt fx; @Test public void Now() { fx.tst_MsgStr(fx.msg_(String_.Ary("Date_", "Now")), DateAdp_.parse_gplx("2001-01-01 00:00:00.000")); diff --git a/100_core/tst/gplx/core/ios/IoEngine_fil_basic_base.java b/100_core/tst/gplx/core/ios/IoEngine_fil_basic_base.java index 69c91b031..cce461bc6 100644 --- a/100_core/tst/gplx/core/ios/IoEngine_fil_basic_base.java +++ b/100_core/tst/gplx/core/ios/IoEngine_fil_basic_base.java @@ -132,7 +132,7 @@ public abstract class IoEngine_fil_basic_base { @Test @gplx.Virtual public void UpdateFilModifiedTime() { fx.run_SaveFilText(fil, "text"); - DateAdp time = Tfds.Now_time0_add_min(10); + DateAdp time = Datetime_now.Dflt_add_min_(10); engine.UpdateFilModifiedTime(fil, time); fx.tst_QueryFil_modifiedTime(fil, time); } diff --git a/140_dbs/src/gplx/dbs/Db_attach_mgr.java b/140_dbs/src/gplx/dbs/Db_attach_mgr.java index 134a8603e..0676ccf00 100644 --- a/140_dbs/src/gplx/dbs/Db_attach_mgr.java +++ b/140_dbs/src/gplx/dbs/Db_attach_mgr.java @@ -19,23 +19,24 @@ package gplx.dbs; import gplx.*; import gplx.dbs.sqls.*; import gplx.dbs.sqls.itms.*; public class Db_attach_mgr { private Db_conn main_conn; private Io_url main_conn_url; - private final Ordered_hash others_hash = Ordered_hash_.New(); + private final Ordered_hash links_hash = Ordered_hash_.New(); private final List_adp attach_list = List_adp_.New(); public Db_attach_mgr() {} - public Db_attach_mgr(Db_conn main_conn, Db_attach_itm... others_ary) { + public Db_attach_mgr(Db_conn main_conn, Db_attach_itm... links_ary) { this.Conn_main_(main_conn); - this.Conn_others_(others_ary); + this.Conn_links_(links_ary); } + public Db_conn Conn_main() {return main_conn;} public Db_attach_mgr Conn_main_(Db_conn conn) { this.main_conn = conn; this.main_conn_url = Db_conn_info_.To_url(conn.Conn_info()); return this; } - public Db_attach_mgr Conn_others_(Db_attach_itm... itms_ary) { - others_hash.Clear(); + public Db_attach_mgr Conn_links_(Db_attach_itm... itms_ary) { + links_hash.Clear(); int len = itms_ary.length; for (int i = 0; i < len; ++i) { Db_attach_itm itm = itms_ary[i]; - others_hash.Add(itm.Key, itm); + links_hash.Add(itm.Key, itm); } return this; } @@ -56,9 +57,9 @@ public class Db_attach_mgr { } public String Resolve_sql(String sql) { attach_list.Clear(); - int hash_len = others_hash.Count(); + int hash_len = links_hash.Count(); for (int i = 0; i < hash_len; ++i) { - Db_attach_itm attach_itm = (Db_attach_itm)others_hash.Get_at(i); + Db_attach_itm attach_itm = (Db_attach_itm)links_hash.Get_at(i); String tkn = "<" + attach_itm.Key + ">"; if (String_.Has(sql, tkn)) { Io_url attach_url = attach_itm.Url; @@ -104,7 +105,7 @@ public class Db_attach_mgr { Sql_tbl_itm from_tbl = (Sql_tbl_itm)from_tbls.Get_at(i); String from_tbl_db = from_tbl.Db; if (String_.Eq(Sql_tbl_itm.Db__null, from_tbl_db)) continue; // tbl does not have db defined; only "tbl" not "db.tbl"; skip - Db_attach_itm attach_itm = (Db_attach_itm)others_hash.Get_by(from_tbl_db); if (attach_itm == null) throw Err_.new_("dbs", "qry defines an unknown database for attach_wkr", "from_tbl_db", from_tbl_db, "sql", qry.To_sql__exec(sql_wtr)); + Db_attach_itm attach_itm = (Db_attach_itm)links_hash.Get_by(from_tbl_db); if (attach_itm == null) throw Err_.new_("dbs", "qry defines an unknown database for attach_wkr", "from_tbl_db", from_tbl_db, "sql", qry.To_sql__exec(sql_wtr)); if (attach_itm.Url.Eq(main_conn_url)) // attach_db same as conn; blank db, so "tbl", not "db.tbl" from_tbl.Db_enabled = false; else diff --git a/140_dbs/src/gplx/dbs/diffs/Gdif_core.java b/140_dbs/src/gplx/dbs/diffs/Gdif_core.java index 069c8fdbd..b4edb09f9 100644 --- a/140_dbs/src/gplx/dbs/diffs/Gdif_core.java +++ b/140_dbs/src/gplx/dbs/diffs/Gdif_core.java @@ -19,10 +19,10 @@ package gplx.dbs.diffs; import gplx.*; import gplx.dbs.*; import gplx.dbs.diffs.itms.*; import gplx.dbs.diffs.builds.*; public class Gdif_core { - private final Db_conn conn; - private final Gdif_job_tbl job_tbl; - private final Gdif_cmd_tbl cmd_tbl; - private final Gdif_txn_tbl txn_tbl; + private final Db_conn conn; + private final Gdif_job_tbl job_tbl; + private final Gdif_cmd_tbl cmd_tbl; + private final Gdif_txn_tbl txn_tbl; public Gdif_core(Db_conn conn) { this.conn = conn; this.db = new Gdif_db(conn); @@ -30,10 +30,10 @@ public class Gdif_core { this.cmd_tbl = db.Cmd_tbl(); this.txn_tbl = db.Txn_tbl(); } - public Gdif_db Db() {return db;} private final Gdif_db db; + public Gdif_db Db() {return db;} private final Gdif_db db; public Gdif_job_itm New_job(String name, String made_by) { int job_id = conn.Sys_mgr().Autonum_next(job_tbl.Tbl_name(), job_tbl.Fld_job_id()); - return job_tbl.Insert(job_id, name, made_by, DateAdp_.Now().XtoUtc(), ""); + return job_tbl.Insert(job_id, name, made_by, Datetime_now.Get().XtoUtc(), ""); } public Gdif_cmd_itm New_cmd(Gdif_bldr_ctx ctx, int tid) { ctx.Cur_cmd_count++; diff --git a/140_dbs/src/gplx/dbs/utls/Db_cmd_backup.java b/140_dbs/src/gplx/dbs/utls/Db_cmd_backup.java index 1374b1d9a..1e55a0df0 100644 --- a/140_dbs/src/gplx/dbs/utls/Db_cmd_backup.java +++ b/140_dbs/src/gplx/dbs/utls/Db_cmd_backup.java @@ -57,7 +57,7 @@ public class Db_cmd_backup implements Gfo_invk { return this; } @gplx.Internal protected Db_cmd_backup InitVars() { - String dteStr = DateAdp_.Now().XtoStr_fmt(dteFmt); + String dteStr = Datetime_now.Get().XtoStr_fmt(dteFmt); bkpFilName = String_.Format(bkpFilNameFmt, dbName, dteStr); bkpFil = bkpDir.GenSubFil(bkpFilName); cmdText = String_.Format("\"{0}\" -u {1} -p{2} {3} > {4}", exeUrl.Xto_api(), usr, pwd, dbName, bkpFil.Xto_api()); diff --git a/140_dbs/src/gplx/dbs/utls/Db_cmd_backup_tst.java b/140_dbs/src/gplx/dbs/utls/Db_cmd_backup_tst.java index 1876ff873..d23cfba51 100644 --- a/140_dbs/src/gplx/dbs/utls/Db_cmd_backup_tst.java +++ b/140_dbs/src/gplx/dbs/utls/Db_cmd_backup_tst.java @@ -19,7 +19,7 @@ package gplx.dbs.utls; import gplx.*; import gplx.dbs.*; import org.junit.*; public class Db_cmd_backup_tst { @Test public void Basic() { - Tfds.Now_enabled_y_(); + Datetime_now.Manual_y_(); Db_cmd_backup bkpWkr = Db_cmd_backup.new_() .ExeUrl_(Io_url_.new_any_("C:\\mysql\\mysqldump.exe")) .BkpDir_(Io_url_.new_any_("C:\\bkp\\")) diff --git a/140_dbs/xtn/gplx/dbs/SqliteDbMain.java b/140_dbs/xtn/gplx/dbs/SqliteDbMain.java index 06154eed3..672db5af3 100644 --- a/140_dbs/xtn/gplx/dbs/SqliteDbMain.java +++ b/140_dbs/xtn/gplx/dbs/SqliteDbMain.java @@ -163,7 +163,7 @@ public class SqliteDbMain { ); stat.executeUpdate(sql); - Console_adp__sys.Instance.Write_str_w_nl(DateAdp_.Now().XtoStr_fmt_yyyyMMdd_HHmmss_fff()); + Console_adp__sys.Instance.Write_str_w_nl(Datetime_now.Get().XtoStr_fmt_yyyyMMdd_HHmmss_fff()); // stat.executeUpdate("BEGIN TRANSACTION"); stat.executeUpdate("PRAGMA synchronous=OFF"); stat.executeUpdate("PRAGMA count_changes=OFF"); diff --git a/150_gfui/src/gplx/gfui/controls/customs/GfuiStatusBoxBnd.java b/150_gfui/src/gplx/gfui/controls/customs/GfuiStatusBoxBnd.java index 939223f55..9a706852a 100644 --- a/150_gfui/src/gplx/gfui/controls/customs/GfuiStatusBoxBnd.java +++ b/150_gfui/src/gplx/gfui/controls/customs/GfuiStatusBoxBnd.java @@ -20,7 +20,7 @@ import gplx.gfui.draws.*; import gplx.gfui.ipts.*; import gplx.gfui.layouts.*; i public class GfuiStatusBoxBnd implements Gfo_invk { public GfuiStatusBox Box() {return statusBox;} GfuiStatusBox statusBox = GfuiStatusBox_.new_("statusBox"); void ShowTime() { - statusBox.ExecUsrMsg(UsrMsgWkr_.Type_Note, UsrMsg.new_(DateAdp_.Now().XtoStr_gplx_long())); + statusBox.ExecUsrMsg(UsrMsgWkr_.Type_Note, UsrMsg.new_(Datetime_now.Get().XtoStr_gplx_long())); } public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_ShowTime)) ShowTime(); diff --git a/150_gfui/src/gplx/gfui/controls/windows/GfuiWin.java b/150_gfui/src/gplx/gfui/controls/windows/GfuiWin.java index 689c35cb2..8a3d41143 100644 --- a/150_gfui/src/gplx/gfui/controls/windows/GfuiWin.java +++ b/150_gfui/src/gplx/gfui/controls/windows/GfuiWin.java @@ -110,7 +110,7 @@ public class GfuiWin extends GfuiElemBase { else if (ctx.Match(k, Evt_Opened)) Opened_cbk(); else if (ctx.Match(k, StopAppByAltF4_evt)) StopAppByAltF4(IptEventData.ctx_(ctx, m)); else if (ctx.Match(k, Invk_ShowFocusOwner)) GfuiEnv_.ShowMsg(GfuiFocusMgr.Instance.FocusedElem().Key_of_GfuiElem()); - else if (ctx.Match(k, GfuiStatusBoxBnd.Invk_ShowTime)) {UsrDlg_.Instance.Note(UsrMsg.new_(DateAdp_.Now().toString())); return this;} + else if (ctx.Match(k, GfuiStatusBoxBnd.Invk_ShowTime)) {UsrDlg_.Instance.Note(UsrMsg.new_(Datetime_now.Get().toString())); return this;} else if (ctx.MatchIn(k, Invk_Close, GfuiQuitMode.Destroy_cmd)) Close(); else if (ctx.MatchIn(k, Invk_Hide, GfuiQuitMode.Suspend_cmd)) Hide(); else { diff --git a/400_xowa/.classpath b/400_xowa/.classpath index b00af46bd..b48a48ee5 100644 --- a/400_xowa/.classpath +++ b/400_xowa/.classpath @@ -1,12 +1,12 @@ - - - - + + + + - - - + + + diff --git a/400_xowa/src/gplx/core/brys/Bry_comparer.java b/400_xowa/src/gplx/core/brys/Bry_comparer.java index 2ea6c25e2..e2139f208 100644 --- a/400_xowa/src/gplx/core/brys/Bry_comparer.java +++ b/400_xowa/src/gplx/core/brys/Bry_comparer.java @@ -22,5 +22,5 @@ public class Bry_comparer implements ComparerAble { byte[] lhs = (byte[])lhsObj, rhs = (byte[])rhsObj; return Bry_.Compare(lhs, 0, lhs.length, rhs, 0, rhs.length); } - public static final Bry_comparer Instance = new Bry_comparer(); Bry_comparer() {} + public static final Bry_comparer Instance = new Bry_comparer(); Bry_comparer() {} // TS.static } diff --git a/400_xowa/src/gplx/core/caches/Gfo_cache_mgr_bry.java b/400_xowa/src/gplx/core/caches/Gfo_cache_mgr_bry.java index 128643e33..fc91a2f4b 100644 --- a/400_xowa/src/gplx/core/caches/Gfo_cache_mgr_bry.java +++ b/400_xowa/src/gplx/core/caches/Gfo_cache_mgr_bry.java @@ -35,7 +35,7 @@ class Gfo_cache_itm_comparer implements gplx.core.lists.ComparerAble { Gfo_cache_itm rhs = (Gfo_cache_itm)rhsObj; return Long_.Compare(lhs.Touched(), rhs.Touched()); } - public static final Gfo_cache_itm_comparer Touched_asc = new Gfo_cache_itm_comparer(); + public static final Gfo_cache_itm_comparer Touched_asc = new Gfo_cache_itm_comparer(); // TS.static } class Io_url_exists_mgr { private gplx.core.caches.Gfo_cache_mgr_bry cache_mgr = new gplx.core.caches.Gfo_cache_mgr_bry(); diff --git a/400_xowa/src/gplx/core/flds/Gfo_fld_rdr.java b/400_xowa/src/gplx/core/flds/Gfo_fld_rdr.java index 40e361897..cccdfcb15 100644 --- a/400_xowa/src/gplx/core/flds/Gfo_fld_rdr.java +++ b/400_xowa/src/gplx/core/flds/Gfo_fld_rdr.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.core.flds; import gplx.*; import gplx.core.*; import gplx.core.encoders.*; public class Gfo_fld_rdr extends Gfo_fld_base { - private Bry_bfr bfr = Bry_bfr_.New(); private static final byte[] Bry_nil = Bry_.new_a7("\\0"); + private Bry_bfr bfr = Bry_bfr_.New(); public byte[] Data() {return data;} public Gfo_fld_rdr Data_(byte[] v) {data = v; data_len = v.length; pos = 0; return this;} private byte[] data; int data_len; public int Pos() {return pos;} public Gfo_fld_rdr Pos_(int v) {pos = v; return this;} private int pos; public int Fld_bgn() {return fld_bgn;} public Gfo_fld_rdr Fld_bgn_(int v) {fld_bgn = v; return this;} private int fld_bgn; @@ -122,4 +122,5 @@ public class Gfo_fld_rdr extends Gfo_fld_base { public Gfo_fld_rdr Ctor_sql() {return (Gfo_fld_rdr)super.Ctor_sql_base();} public static Gfo_fld_rdr xowa_() {return new Gfo_fld_rdr().Ctor_xdat();} public static Gfo_fld_rdr sql_() {return new Gfo_fld_rdr().Ctor_sql();} + private static final byte[] Bry_nil = Bry_.new_a7("\\0"); } diff --git a/400_xowa/src/gplx/core/ios/Io_sort_filCmd.java b/400_xowa/src/gplx/core/ios/Io_sort_filCmd.java index 90e16fb71..76e97a68b 100644 --- a/400_xowa/src/gplx/core/ios/Io_sort_filCmd.java +++ b/400_xowa/src/gplx/core/ios/Io_sort_filCmd.java @@ -25,5 +25,5 @@ class Io_sort_filCmd_null implements Io_sort_filCmd { public void Bfr_add(Io_line_rdr stream) {} public void Fil_bgn(Io_line_rdr stream) {} public void Fil_end() {} - public static final Io_sort_filCmd_null Instance = new Io_sort_filCmd_null(); Io_sort_filCmd_null() {} + public static final Io_sort_filCmd_null Instance = new Io_sort_filCmd_null(); Io_sort_filCmd_null() {} // TS.static } diff --git a/400_xowa/src/gplx/core/ios/Io_sort_split_itm_sorter.java b/400_xowa/src/gplx/core/ios/Io_sort_split_itm_sorter.java index 3d57222a4..8942f5ea4 100644 --- a/400_xowa/src/gplx/core/ios/Io_sort_split_itm_sorter.java +++ b/400_xowa/src/gplx/core/ios/Io_sort_split_itm_sorter.java @@ -19,8 +19,7 @@ package gplx.core.ios; import gplx.*; import gplx.core.*; public class Io_sort_split_itm_sorter implements gplx.core.lists.ComparerAble { public int compare(Object lhsObj, Object rhsObj) { Io_sort_split_itm lhs = (Io_sort_split_itm)lhsObj, rhs = (Io_sort_split_itm)rhsObj; -// Tfds.Dbg(String_.new_u8(lhs.Bfr(), lhs.Key_bgn(), lhs.Key_end()), String_.new_u8(rhs.Bfr(), rhs.Key_bgn(), rhs.Key_end())); return Bry_.Compare(lhs.Bfr(), lhs.Key_bgn(), lhs.Key_end(), rhs.Bfr(), rhs.Key_bgn(), rhs.Key_end()); } - public static final Io_sort_split_itm_sorter Instance = new Io_sort_split_itm_sorter(); Io_sort_split_itm_sorter() {} + public static final Io_sort_split_itm_sorter Instance = new Io_sort_split_itm_sorter(); Io_sort_split_itm_sorter() {} // TS.static } diff --git a/400_xowa/src/gplx/core/primitives/Number_parser.java b/400_xowa/src/gplx/core/primitives/Gfo_number_parser.java similarity index 87% rename from 400_xowa/src/gplx/core/primitives/Number_parser.java rename to 400_xowa/src/gplx/core/primitives/Gfo_number_parser.java index faba8ca66..579f72320 100644 --- a/400_xowa/src/gplx/core/primitives/Number_parser.java +++ b/400_xowa/src/gplx/core/primitives/Gfo_number_parser.java @@ -16,21 +16,21 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.core.primitives; import gplx.*; import gplx.core.*; -public class Number_parser { +public class Gfo_number_parser { public int Rv_as_int() {return (int)num_val;} private long num_val = 0; public long Rv_as_long() {return num_val;} public Decimal_adp Rv_as_dec() {return dec_val == null ? Decimal_adp_.long_(num_val) : dec_val;} private Decimal_adp dec_val = null; public boolean Is_int() {return dec_val == null && (num_val >= Int_.Min_value && num_val <= Int_.Max_value);} public boolean Has_err() {return has_err;} private boolean has_err; public boolean Has_frac() {return has_frac;} private boolean has_frac; - public boolean Hex_enabled() {return hex_enabled;} public Number_parser Hex_enabled_(boolean v) {hex_enabled = v; return this;} private boolean hex_enabled; - public Number_parser Ignore_chars_(byte[] v) {this.ignore_chars = v; return this;} private byte[] ignore_chars; - public Number_parser Ignore_space_at_end_y_() {this.ignore_space_at_end = true; return this;} private boolean ignore_space_at_end; + public boolean Hex_enabled() {return hex_enabled;} public Gfo_number_parser Hex_enabled_(boolean v) {hex_enabled = v; return this;} private boolean hex_enabled; + public Gfo_number_parser Ignore_chars_(byte[] v) {this.ignore_chars = v; return this;} private byte[] ignore_chars; + public Gfo_number_parser Ignore_space_at_end_y_() {this.ignore_space_at_end = true; return this;} private boolean ignore_space_at_end; public void Clear() { ignore_chars = null; } - public Number_parser Parse(byte[] src) {return Parse(src, 0, src.length);} - public Number_parser Parse(byte[] ary, int bgn, int end) { + public Gfo_number_parser Parse(byte[] src) {return Parse(src, 0, src.length);} + public Gfo_number_parser Parse(byte[] ary, int bgn, int end) { int loop_bgn = end - 1, loop_end = bgn - 1, exp_multiplier = 1, factor = 10; long multiplier = 1, frc_multiplier = 1; num_val = 0; dec_val = null; boolean comma_nil = true; @@ -183,5 +183,5 @@ public class Number_parser { } return this; } - private Number_parser Has_err_y_() {has_err = true; return this;} + private Gfo_number_parser Has_err_y_() {has_err = true; return this;} } diff --git a/400_xowa/src/gplx/core/primitives/Number_parser_tst.java b/400_xowa/src/gplx/core/primitives/Gfo_number_parser_tst.java similarity index 91% rename from 400_xowa/src/gplx/core/primitives/Number_parser_tst.java rename to 400_xowa/src/gplx/core/primitives/Gfo_number_parser_tst.java index d802fd632..15a756f31 100644 --- a/400_xowa/src/gplx/core/primitives/Number_parser_tst.java +++ b/400_xowa/src/gplx/core/primitives/Gfo_number_parser_tst.java @@ -17,9 +17,8 @@ along with this program. If not, see . */ package gplx.core.primitives; import gplx.*; import gplx.core.*; import org.junit.*; -public class Number_parser_tst { - private final Number_parser_fxt fxt = new Number_parser_fxt(); - @Before public void init() {fxt.Clear();} +public class Gfo_number_parser_tst { + @Before public void init() {fxt.Clear();} private final Gfo_number_parser_fxt fxt = new Gfo_number_parser_fxt(); @Test public void Integer() { fxt.Test_int("1", 1); fxt.Test_int("1234", 1234); @@ -71,8 +70,8 @@ public class Number_parser_tst { fxt.Test_err("1\r" , true); } } -class Number_parser_fxt { - private final Number_parser parser = new Number_parser(); +class Gfo_number_parser_fxt { + private final Gfo_number_parser parser = new Gfo_number_parser(); public void Clear() {parser.Clear();} public void Init_ignore(String chars) {parser.Ignore_chars_(Bry_.new_a7(chars));} public void Test_int(String raw, int expd) { diff --git a/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_view_ctg_tst.java b/400_xowa/src/gplx/core/primitives/Hash_adp__primitive.java similarity index 62% rename from 400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_view_ctg_tst.java rename to 400_xowa/src/gplx/core/primitives/Hash_adp__primitive.java index 8e8e9a9c1..843a423fa 100644 --- a/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_view_ctg_tst.java +++ b/400_xowa/src/gplx/core/primitives/Hash_adp__primitive.java @@ -15,10 +15,15 @@ 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.wikis.ctgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; -import org.junit.*; -public class Xoctg_view_ctg_tst { -// @Before public void init() {fxt.Clear();} private Xoctg_idx_mgr_fxt fxt = new Xoctg_idx_mgr_fxt(); - @Test public void Basic() { +package gplx.core.primitives; import gplx.*; import gplx.core.*; +public class Hash_adp__primitive { + private final Hash_adp hash = Hash_adp_.New(); + public byte Get_by_str_or_max(String key) { + Byte_obj_val rv = (Byte_obj_val)hash.Get_by(key); + return rv == null ? Byte_.Max_value_127 : rv.Val(); + } + public Hash_adp__primitive Add_byte(String key, byte val) { + hash.Add(key, Byte_obj_val.new_(val)); + return this; } } diff --git a/400_xowa/src/gplx/core/primitives/Int_ary_parser.java b/400_xowa/src/gplx/core/primitives/Int_ary_parser.java index 0e96208b8..a5edb8e05 100644 --- a/400_xowa/src/gplx/core/primitives/Int_ary_parser.java +++ b/400_xowa/src/gplx/core/primitives/Int_ary_parser.java @@ -17,7 +17,8 @@ along with this program. If not, see . */ package gplx.core.primitives; import gplx.*; import gplx.core.*; public class Int_ary_parser extends Obj_ary_parser_base { - Number_parser parser = new Number_parser(); int[] ary; int ary_idx; + private final Gfo_number_parser parser = new Gfo_number_parser(); + private int[] ary; private int ary_idx; public int[] Parse_ary(String str, byte dlm) {byte[] bry = Bry_.new_u8(str); return Parse_ary(bry, 0, bry.length, dlm);} public int[] Parse_ary(byte[] bry, int bgn, int end, byte dlm) { Parse_core(bry, bgn, end, dlm, Byte_ascii.Null); @@ -35,5 +36,4 @@ public class Int_ary_parser extends Obj_ary_parser_base { parser.Parse(bry, bgn, end); if (parser.Has_err() || parser.Has_frac()) throw Err_.new_wo_type("failed to parse number", "val", String_.new_u8(bry, bgn, end)); ary[ary_idx++] = parser.Rv_as_int(); } - public static final Int_ary_parser Instance = new Int_ary_parser(); } diff --git a/400_xowa/src/gplx/core/primitives/Int_ary_parser_tst.java b/400_xowa/src/gplx/core/primitives/Int_ary_parser_tst.java index b855e41fb..dc76545b1 100644 --- a/400_xowa/src/gplx/core/primitives/Int_ary_parser_tst.java +++ b/400_xowa/src/gplx/core/primitives/Int_ary_parser_tst.java @@ -16,13 +16,15 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.core.primitives; import gplx.*; import gplx.core.*; -import org.junit.*; +import org.junit.*; import gplx.core.tests.*; public class Int_ary_parser_tst { - @Test public void Many() {tst_ints("1,2,3,4,5" , 0, 9, Int_.Ary(1, 2, 3, 4, 5));} - @Test public void One() {tst_ints("1" , 0, 1, Int_.Ary(1));} - @Test public void None() {tst_ints("" , 0, 0, Int_.Ary());} - private void tst_ints(String raw, int bgn, int end, int[] expd) { - int[] actl = Int_ary_parser.Instance.Parse_ary(Bry_.new_a7(raw), bgn, end, Byte_ascii.Comma); - Tfds.Eq_ary(expd, actl); + private final Int_ary_parser_fxt fxt = new Int_ary_parser_fxt(); + @Test public void Many() {fxt.Test__Parse_ary("1,2,3,4,5" , 0, 9, Int_.Ary(1, 2, 3, 4, 5));} + @Test public void One() {fxt.Test__Parse_ary("1" , 0, 1, Int_.Ary(1));} + @Test public void None() {fxt.Test__Parse_ary("" , 0, 0, Int_.Ary());} +} +class Int_ary_parser_fxt { + public void Test__Parse_ary(String raw, int bgn, int end, int[] expd) { + Gftest.Eq__ary(expd, new Int_ary_parser().Parse_ary(Bry_.new_a7(raw), bgn, end, Byte_ascii.Comma), "parse_ary failed"); } } diff --git a/400_xowa/src/gplx/core/primitives/Int_pool.java b/400_xowa/src/gplx/core/primitives/Int_pool.java index 04c76e43a..8d4ab6aca 100644 --- a/400_xowa/src/gplx/core/primitives/Int_pool.java +++ b/400_xowa/src/gplx/core/primitives/Int_pool.java @@ -50,7 +50,7 @@ public class Int_pool { return; } if (available_len == uid_max) { - available_list.Add(Int_obj_val.new_(v)); + available_list.Add(new Int_obj_val(v)); available_list.Sort(); for (int i = 0; i < available_len; ++i) { Int_obj_val itm = (Int_obj_val)available_list.Get_at(i); @@ -62,7 +62,7 @@ public class Int_pool { } else { // dbg_bfr.Add_str("-:a:").Add_int_variable(v).Add_byte_nl(); - available_list.Add(Int_obj_val.new_(v)); + available_list.Add(new Int_obj_val(v)); ++available_len; } } diff --git a/400_xowa/src/gplx/dbs/bulks/Db_tbl_copy.java b/400_xowa/src/gplx/dbs/bulks/Db_tbl_copy.java index bb117e1a7..59666c89a 100644 --- a/400_xowa/src/gplx/dbs/bulks/Db_tbl_copy.java +++ b/400_xowa/src/gplx/dbs/bulks/Db_tbl_copy.java @@ -29,7 +29,7 @@ public class Db_tbl_copy { trg_conn.Meta_tbl_remake(Dbmeta_tbl_itm.New(trg_tbl, tbl.Flds().To_ary(), tbl.Idxs().To_ary())); // do copy - attach_mgr.Conn_main_(trg_conn).Conn_others_(new Db_attach_itm("src_db", src_conn)); + attach_mgr.Conn_main_(trg_conn).Conn_links_(new Db_attach_itm("src_db", src_conn)); attach_mgr.Exec_sql(Bld_sql(tbl, src_tbl, trg_tbl)); } public String Bld_sql(Dbmeta_tbl_itm tbl, String src_tbl, String trg_tbl) { diff --git a/400_xowa/src/gplx/langs/gfs/Gfs_msg_bldr.java b/400_xowa/src/gplx/langs/gfs/Gfs_msg_bldr.java index 30ffe966d..adeacb9ba 100644 --- a/400_xowa/src/gplx/langs/gfs/Gfs_msg_bldr.java +++ b/400_xowa/src/gplx/langs/gfs/Gfs_msg_bldr.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.langs.gfs; import gplx.*; import gplx.langs.*; import gplx.core.gfo_regys.*; public class Gfs_msg_bldr implements GfoMsgParser { - private final Gfs_parser parser = new Gfs_parser(); + private final Gfs_parser parser = new Gfs_parser(); public GfoMsg ParseToMsg(String s) {return Bld(s);} public GfoMsg Bld(String src) {return Bld(Bry_.new_u8(src));} public GfoMsg Bld(byte[] src) { @@ -45,6 +45,6 @@ public class Gfs_msg_bldr implements GfoMsgParser { } return rv; } - public static final Gfs_msg_bldr Instance = new Gfs_msg_bldr(); Gfs_msg_bldr() {} + public static final Gfs_msg_bldr Instance = new Gfs_msg_bldr(); Gfs_msg_bldr() {} // TS.static public static final String Tkn_mutator = "_"; } diff --git a/400_xowa/src/gplx/langs/htmls/Gfh_utl.java b/400_xowa/src/gplx/langs/htmls/Gfh_utl.java index dbab17475..e2d04d72e 100644 --- a/400_xowa/src/gplx/langs/htmls/Gfh_utl.java +++ b/400_xowa/src/gplx/langs/htmls/Gfh_utl.java @@ -18,11 +18,14 @@ along with this program. If not, see . package gplx.langs.htmls; import gplx.*; import gplx.langs.*; import gplx.core.primitives.*; import gplx.core.btries.*; import gplx.langs.htmls.encoders.*; public class Gfh_utl { - private static final Gfo_url_encoder encoder_id = Gfo_url_encoder_.Id; private static final Bry_bfr tmp_bfr = Bry_bfr_.Reset(255); + private static final Gfo_url_encoder encoder_id = Gfo_url_encoder_.Id; public static String Encode_id_as_str(byte[] key) {return String_.new_u8(Encode_id_as_bry(key));} public static byte[] Encode_id_as_bry(byte[] key) { - byte[] escaped = Escape_html_as_bry(tmp_bfr, key, Bool_.N, Bool_.N, Bool_.N, Bool_.Y, Bool_.Y); - return encoder_id.Encode(escaped); + Bry_bfr tmp_bfr = Bry_bfr_.Get(); + try { + byte[] escaped = Escape_html_as_bry(tmp_bfr, key, Bool_.N, Bool_.N, Bool_.N, Bool_.Y, Bool_.Y); + return encoder_id.Encode(escaped); + } finally {tmp_bfr.Mkr_rls();} } public static String Escape_for_atr_val_as_str(Bry_bfr bfr, byte quote_byte, String s) {return String_.new_u8(Escape_for_atr_val_as_bry(bfr, quote_byte, s));} public static byte[] Escape_for_atr_val_as_bry(Bry_bfr bfr, byte quote_byte, String s) { @@ -58,9 +61,16 @@ public class Gfh_utl { } public static String Escape_html_as_str(String v) {return String_.new_u8(Escape_html_as_bry(Bry_.new_u8(v)));} public static byte[] Escape_html_as_bry(Bry_bfr tmp, byte[] bry) {return Escape_html(false, tmp, bry, 0, bry.length, true, true, true, true, true);} - public static byte[] Escape_html_as_bry(byte[] bry) {return Escape_html(false, tmp_bfr, bry, 0, bry.length, true, true, true, true, true);} - public static byte[] Escape_html_as_bry(byte[] bry, boolean lt, boolean gt, boolean amp, boolean quote, boolean apos) - {return Escape_html(false, tmp_bfr, bry, 0, bry.length, lt, gt, amp, quote, apos);} + public static byte[] Escape_html_as_bry(byte[] bry) { + Bry_bfr tmp_bfr = Bry_bfr_.Get(); + try {return Escape_html(false, tmp_bfr, bry, 0, bry.length, true, true, true, true, true);} + finally {tmp_bfr.Mkr_rls();} + } + public static byte[] Escape_html_as_bry(byte[] bry, boolean lt, boolean gt, boolean amp, boolean quote, boolean apos) { + Bry_bfr tmp_bfr = Bry_bfr_.Get(); + try {return Escape_html(false, tmp_bfr, bry, 0, bry.length, lt, gt, amp, quote, apos);} + finally {tmp_bfr.Mkr_rls();} + } public static byte[] Escape_html_as_bry(Bry_bfr bfr, byte[] bry, boolean lt, boolean gt, boolean amp, boolean quote, boolean apos) {return Escape_html(false, bfr, bry, 0, bry.length, lt, gt, amp, quote, apos);} public static void Escape_html_to_bfr(Bry_bfr bfr, byte[] bry, int bgn, int end, boolean escape_lt, boolean escape_gt, boolean escape_amp, boolean escape_quote, boolean escape_apos) { diff --git a/400_xowa/src/gplx/langs/htmls/encoders/Gfo_url_encoder_.java b/400_xowa/src/gplx/langs/htmls/encoders/Gfo_url_encoder_.java index 88f23c8ba..aa3236c50 100644 --- a/400_xowa/src/gplx/langs/htmls/encoders/Gfo_url_encoder_.java +++ b/400_xowa/src/gplx/langs/htmls/encoders/Gfo_url_encoder_.java @@ -53,7 +53,7 @@ public class Gfo_url_encoder_ { private static Gfo_url_encoder_mkr New__html_href_qarg() { // same as regular href encoder, but also do not encode qarg characters "?" and "=" return New__html_href_mw(Bool_.Y).Init__same__many(Byte_ascii.Question, Byte_ascii.Eq); } - private static Gfo_url_encoder_mkr New__html_href_quotes() {// same as href encoder, but do not encode ?, =, #, +; also, don't encode "%" vals + public static Gfo_url_encoder_mkr New__html_href_quotes() {// same as href encoder, but do not encode ?, =, #, +; also, don't encode "%" vals return new Gfo_url_encoder_mkr().Init(Byte_ascii.Percent).Init_common(Bool_.Y) .Init__diff__one(Byte_ascii.Space, Byte_ascii.Underline) .Init__same__many diff --git a/400_xowa/src/gplx/langs/htmls/encoders/Gfo_url_encoder_itm.java b/400_xowa/src/gplx/langs/htmls/encoders/Gfo_url_encoder_itm.java index 6e8940a56..0fca8d30d 100644 --- a/400_xowa/src/gplx/langs/htmls/encoders/Gfo_url_encoder_itm.java +++ b/400_xowa/src/gplx/langs/htmls/encoders/Gfo_url_encoder_itm.java @@ -24,7 +24,7 @@ public interface Gfo_url_encoder_itm { class Gfo_url_encoder_itm_same implements Gfo_url_encoder_itm { public int Encode(Bry_bfr bfr, byte[] src, int end, int idx, byte b) {bfr.Add_byte(b); return 0;} public int Decode(Bry_bfr bfr, byte[] src, int end, int idx, byte b, boolean fail_when_invalid) {bfr.Add_byte(b); return 0;} - public static final Gfo_url_encoder_itm Instance = new Gfo_url_encoder_itm_same(); + public static final Gfo_url_encoder_itm Instance = new Gfo_url_encoder_itm_same(); // TS.static } class Gfo_url_encoder_itm_diff implements Gfo_url_encoder_itm { private final byte orig, repl; diff --git a/400_xowa/src/gplx/langs/jsons/Json_doc.java b/400_xowa/src/gplx/langs/jsons/Json_doc.java index 6151c8d83..3b37d57ae 100644 --- a/400_xowa/src/gplx/langs/jsons/Json_doc.java +++ b/400_xowa/src/gplx/langs/jsons/Json_doc.java @@ -33,7 +33,7 @@ public class Json_doc { public Json_nde Root_nde() {return root_nde;} private Json_nde root_nde; public Json_ary Root_ary() {return root_ary;} private Json_ary root_ary; public Bry_bfr Bfr() {return bfr;} private final Bry_bfr bfr = Bry_bfr_.New(); - public Number_parser Utl_num_parser() {return utl_num_parser;} private final Number_parser utl_num_parser = new Number_parser(); + public Gfo_number_parser Utl_num_parser() {return utl_num_parser;} private final Gfo_number_parser utl_num_parser = new Gfo_number_parser(); public byte[] Tmp_u8_bry() {return tmp_u8_bry;} private final byte[] tmp_u8_bry = new byte[6]; // tmp bry[] for decoding sequences like \u0008 public byte[] Get_val_as_bry_or(byte[] qry_bry, byte[] or) {tmp_qry_bry[0] = qry_bry; return Get_val_as_bry_or(tmp_qry_bry, or);} public byte[] Get_val_as_bry_or(byte[][] qry_bry, byte[] or) { diff --git a/400_xowa/src/gplx/langs/jsons/Json_parser.java b/400_xowa/src/gplx/langs/jsons/Json_parser.java index 17b3664d8..ebfa9801b 100644 --- a/400_xowa/src/gplx/langs/jsons/Json_parser.java +++ b/400_xowa/src/gplx/langs/jsons/Json_parser.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.langs.jsons; import gplx.*; import gplx.langs.*; import gplx.core.primitives.*; public class Json_parser { - private byte[] src; private int src_len, pos; private final Number_parser num_parser = new Number_parser(); + private byte[] src; private int src_len, pos; private final Gfo_number_parser num_parser = new Gfo_number_parser(); public Json_factory Factory() {return factory;} private final Json_factory factory = new Json_factory(); public Json_doc Parse_by_apos_ary(String... ary) {return Parse_by_apos(String_.Concat_lines_nl(ary));} public Json_doc Parse_by_apos(String s) {return Parse(Bry_.Replace(Bry_.new_u8(s), Byte_ascii.Apos, Byte_ascii.Quote));} diff --git a/400_xowa/src/gplx/langs/jsons/Json_parser__itm__base.java b/400_xowa/src/gplx/langs/jsons/Json_parser__itm__base.java index f32064e0b..fe5bfda65 100644 --- a/400_xowa/src/gplx/langs/jsons/Json_parser__itm__base.java +++ b/400_xowa/src/gplx/langs/jsons/Json_parser__itm__base.java @@ -29,7 +29,7 @@ public abstract class Json_parser__itm__base { this.keys = keys; this.keys_len = keys.length; for (int i = 0; i < keys_len; ++i) - hash.Add(Bry_.new_u8(keys[i]), Int_obj_val.new_(i)); + hash.Add(Bry_.new_u8(keys[i]), new Int_obj_val(i)); this.atrs = new Json_kv[keys_len]; } public int Kv__int(Json_kv[] ary, int i) {return Bry_.To_int(ary[i].Val_as_bry());} diff --git a/400_xowa/src/gplx/xowa/Xoa_app_.java b/400_xowa/src/gplx/xowa/Xoa_app_.java index 96b44da85..dc3a8ec4b 100644 --- a/400_xowa/src/gplx/xowa/Xoa_app_.java +++ b/400_xowa/src/gplx/xowa/Xoa_app_.java @@ -16,10 +16,8 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa; import gplx.*; -import gplx.core.brys.*; import gplx.core.ios.*; import gplx.core.log_msgs.*; -import gplx.langs.htmls.encoders.*; -import gplx.xowa.guis.views.boots.*; -import gplx.xowa.apps.boots.*; import gplx.xowa.apps.gfs.*; +import gplx.core.log_msgs.*; +import gplx.xowa.guis.views.boots.*; import gplx.xowa.apps.boots.*; public class Xoa_app_ { public static void Run(String... args) { Xoa_cmd_arg_mgr arg_mgr = Xoa_cmd_arg_mgr.new_(); @@ -34,22 +32,17 @@ public class Xoa_app_ { } } public static final String Name = "xowa"; - public static final String Version = "3.7.4.1"; + public static final String Version = "3.8.1.1"; public static String Build_date = "2012-12-30 00:00:00"; public static String Op_sys_str; public static String User_agent = ""; - public static final Gfo_msg_grp Nde = Gfo_msg_grp_.prj_(Name); + public static Gfo_usr_dlg Usr_dlg() {return usr_dlg;} public static void Usr_dlg_(Gfo_usr_dlg v) {usr_dlg = v;} private static Gfo_usr_dlg usr_dlg; - public static Bry_bfr_mkr Utl__bfr_mkr() {return utl__bry_bfr_mkr;} private static final Bry_bfr_mkr utl__bry_bfr_mkr = new Bry_bfr_mkr(); - public static Io_stream_zip_mgr Utl__zip_mgr() {return utl__zip_mgr;} private static final Io_stream_zip_mgr utl__zip_mgr = new Io_stream_zip_mgr(); - public static Xoa_gfs_mgr Gfs_mgr() {return gfs_mgr;} public static void Gfs_mgr_(Xoa_gfs_mgr v) {gfs_mgr = v;} private static Xoa_gfs_mgr gfs_mgr; - public static void Plog_none(String mod, String fmt) { - String msg = mod + ": " + fmt; - Xoa_app_.Usr_dlg().Plog_many("", "", msg); - } - public static Gfo_usr_dlg usr_dlg_console_() { + public static Gfo_usr_dlg New__usr_dlg__console() { Gfo_usr_dlg rv = new Gfo_usr_dlg_base(new Gfo_usr_dlg__log_base(), Gfo_usr_dlg__gui_.Console); rv.Log_wkr().Queue_enabled_(true); return rv; } + + public static final Gfo_msg_grp Nde = Gfo_msg_grp_.prj_(Name); } diff --git a/400_xowa/src/gplx/xowa/Xoa_page.java b/400_xowa/src/gplx/xowa/Xoa_page.java index c5eb966ab..948cd66b3 100644 --- a/400_xowa/src/gplx/xowa/Xoa_page.java +++ b/400_xowa/src/gplx/xowa/Xoa_page.java @@ -22,12 +22,10 @@ public interface Xoa_page { Xoa_url Url(); byte[] Url_bry_safe(); Xoa_ttl Ttl(); Xopg_db_data Db(); - Xopg_redirect_mgr Redirect(); + Xopg_redirect_mgr Redirect_trail(); Xopg_html_data Html_data(); Xopg_hdump_data Hdump_mgr(); - // Xopg_lnki_list Redlink_list(); - Xoa_page__commons_mgr Commons_mgr(); void Xtn_gallery_packed_exists_y_(); boolean Xtn__timeline_exists(); diff --git a/400_xowa/src/gplx/xowa/Xoa_ttl.java b/400_xowa/src/gplx/xowa/Xoa_ttl.java index 7fd1aaae5..a2ae9ffb9 100644 --- a/400_xowa/src/gplx/xowa/Xoa_ttl.java +++ b/400_xowa/src/gplx/xowa/Xoa_ttl.java @@ -53,7 +53,11 @@ public class Xoa_ttl { // PAGE:en.w:http://en.wikipedia.org/wiki/Help:Link; REF. return rv; } public String Page_db_as_str() {return String_.new_u8(Page_db());} - public byte[] Page_url_w_anch() {return Gfo_url_encoder_.Href.Encode(Bry_.Mid(full_txt, page_bgn, qarg_bgn == -1 ? full_txt.length : qarg_bgn - 1));} + public byte[] Page_url_w_anch() { + synchronized (href_encoder) { // LOCK:static-obj + return href_encoder.Encode(Bry_.Mid(full_txt, page_bgn, qarg_bgn == -1 ? full_txt.length : qarg_bgn - 1)); + } + } public int Leaf_bgn() {return leaf_bgn;} public byte[] Base_txt() {return leaf_bgn == -1 ? Page_txt() : Bry_.Mid(full_txt, page_bgn, leaf_bgn - 1);} public byte[] Leaf_txt() {return leaf_bgn == -1 ? Page_txt() : Bry_.Mid(full_txt, leaf_bgn, anch_bgn == -1 ? full_txt.length : anch_bgn - 1);} @@ -62,17 +66,41 @@ public class Xoa_ttl { // PAGE:en.w:http://en.wikipedia.org/wiki/Help:Link; REF. public byte[] Anch_txt() {return anch_bgn == -1 ? Bry_.Empty : Bry_.Mid(full_txt, anch_bgn, full_txt.length);} public byte[] Talk_txt() {return ns.Id_is_talk() ? Full_txt_w_ttl_case() : Bry_.Add(tors_txt, Page_txt());} public byte[] Subj_txt() {return ns.Id_is_subj() ? Full_txt_w_ttl_case() : Bry_.Add(tors_txt, Page_txt());} - public byte[] Full_url() {return Gfo_url_encoder_.Href.Encode(full_txt);} + public byte[] Full_url() { + synchronized (href_encoder) { // LOCK:static-obj + return Gfo_url_encoder_.Href.Encode(full_txt); + } + } public String Full_db_as_str() {return String_.new_u8(Full_db());} public byte[] Full_db() {return ns.Gen_ttl(this.Page_db());} public byte[] Full_db_w_anch() {return Replace_spaces(full_txt);} - public byte[] Page_url() {return Xoa_url_encoder.Instance.Encode(this.Page_txt());} - public byte[] Leaf_url() {return Xoa_url_encoder.Instance.Encode(this.Leaf_txt());} - public byte[] Base_url() {return Xoa_url_encoder.Instance.Encode(this.Base_txt());} + public byte[] Page_url() { + synchronized (url_encoder) { // LOCK:static-obj + return url_encoder.Encode(this.Page_txt()); + } + } + public byte[] Leaf_url() { + synchronized (url_encoder) { // LOCK:static-obj + return url_encoder.Encode(this.Leaf_txt()); + } + } + public byte[] Base_url() { + synchronized (url_encoder) { // LOCK:static-obj + return url_encoder.Encode(this.Base_txt()); + } + } public byte[] Root_txt() {return root_bgn == -1 ? Page_txt() : Bry_.Mid(full_txt, page_bgn, root_bgn - 1);} public byte[] Rest_txt() {return root_bgn == -1 ? Page_txt() : Bry_.Mid(full_txt, root_bgn, anch_bgn == -1 ? full_txt.length : anch_bgn - 1);} - public byte[] Talk_url() {return Xoa_url_encoder.Instance.Encode(this.Talk_txt());} - public byte[] Subj_url() {return Xoa_url_encoder.Instance.Encode(this.Subj_txt());} + public byte[] Talk_url() { + synchronized (url_encoder) { // LOCK:static-obj + return url_encoder.Encode(this.Talk_txt()); + } + } + public byte[] Subj_url() { + synchronized (url_encoder) { // LOCK:static-obj + return url_encoder.Encode(this.Subj_txt()); + } + } public int Qarg_bgn() {return qarg_bgn;} private int qarg_bgn = -1; public byte[] Qarg_txt() {return this.Qarg_bgn() == -1 ? null : Bry_.Mid(full_txt, this.Qarg_bgn(), full_txt.length);} public byte[] Base_txt_wo_qarg() { @@ -110,6 +138,9 @@ public class Xoa_ttl { // PAGE:en.w:http://en.wikipedia.org/wiki/Help:Link; REF. .Add_many_int(Char__bidi , Bry_.New_by_ints(0xE2, 0x80, 0x8E), Bry_.New_by_ints(0xE2, 0x80, 0x8F), Bry_.New_by_ints(0xE2, 0x80, 0xAA), Bry_.New_by_ints(0xE2, 0x80, 0xAB), Bry_.New_by_ints(0xE2, 0x80, 0xAC), Bry_.New_by_ints(0xE2, 0x80, 0xAD), Bry_.New_by_ints(0xE2, 0x80, 0xAE)) .Add_many_int(Char__ws , "\u00A0", "\u1680", "\u180E", "\u2000", "\u2001", "\u2002", "\u2003", "\u2004", "\u2005", "\u2006", "\u2007", "\u2008", "\u2009", "\u200A", "\u2028", "\u2029", "\u202F", "\u205F", "\u3000"); + private final static Gfo_url_encoder href_encoder = Gfo_url_encoder_.New__html_href_mw(Bool_.Y).Make(); + private final static Xoa_url_encoder url_encoder = new Xoa_url_encoder(); + public static byte[] Replace_spaces(byte[] raw) {return Bry_.Replace(raw, Byte_ascii.Space, Byte_ascii.Underline);} public static byte[] Replace_unders(byte[] raw) {return Replace_unders(raw, 0, raw.length);} public static byte[] Replace_unders(byte[] raw, int bgn, int end) {return Bry_.Replace(raw, bgn, end, Byte_ascii.Underline, Byte_ascii.Space);} diff --git a/400_xowa/src/gplx/xowa/Xoa_url.java b/400_xowa/src/gplx/xowa/Xoa_url.java index 83c3b357c..730b7ea2c 100644 --- a/400_xowa/src/gplx/xowa/Xoa_url.java +++ b/400_xowa/src/gplx/xowa/Xoa_url.java @@ -98,10 +98,12 @@ public class Xoa_url { , anch_spr, anch // add anch EX: "#", "B" ); if (show_qargs || qargs_ary.length > 0) { - Bry_bfr bfr = Xoa_app_.Utl__bfr_mkr().Get_b128(); - bfr.Add(rv); - Gfo_qarg_mgr_old.Concat_bfr(bfr, gplx.langs.htmls.encoders.Gfo_url_encoder_.Href, qargs_ary); - return bfr.To_bry_and_rls(); + Bry_bfr bfr = Bry_bfr_.New(); + try { + bfr.Add(rv); + Gfo_qarg_mgr_old.Concat_bfr(bfr, gplx.langs.htmls.encoders.Gfo_url_encoder_.Href, qargs_ary); + return bfr.To_bry_and_clear(); + } finally {bfr.Mkr_rls();} } else return rv; diff --git a/400_xowa/src/gplx/xowa/Xoae_app.java b/400_xowa/src/gplx/xowa/Xoae_app.java index a15821a43..15440f25c 100644 --- a/400_xowa/src/gplx/xowa/Xoae_app.java +++ b/400_xowa/src/gplx/xowa/Xoae_app.java @@ -45,7 +45,8 @@ public class Xoae_app implements Xoa_app, Gfo_invk { url_cmd_eval = new Xoa_fsys_eval(fsys_mgr, user.Fsys_mgr()); fsys_mgr.Init_by_app(prog_mgr); log_wtr.Log_dir_(user.Fsys_mgr().App_temp_dir().GenSubDir("log")); - lang_mgr = new Xoa_lang_mgr(this); + this.gfs_mgr = new Xoa_gfs_mgr(this, fsys_mgr, user.Fsys_mgr()); + lang_mgr = new Xoa_lang_mgr(this, gfs_mgr); wiki_mgr = new Xoae_wiki_mgr(this); gui_mgr = new Xoa_gui_mgr(this); this.gui__tab_mgr = new Xog_tab_mgr__swt(gui_mgr); @@ -57,7 +58,6 @@ public class Xoae_app implements Xoa_app, Gfo_invk { cur_redirect = new Xoa_cur(this); shell = new Xoa_shell(this); setup_mgr = new Xoi_setup_mgr(this); - Xoa_app_.Gfs_mgr_(new Xoa_gfs_mgr(this, fsys_mgr, user.Fsys_mgr())); xtn_mgr = new Xow_xtn_mgr().Ctor_by_app(this); hive_mgr = new Xoa_hive_mgr(this); tcp_server.App_ctor(this); @@ -81,7 +81,7 @@ public class Xoae_app implements Xoa_app, Gfo_invk { public Xoa_css_extractor Html__css_installer() {return html__css_installer;} private final Xoa_css_extractor html__css_installer = new Xoa_css_extractor(); public Xoh_bridge_mgr Html__bridge_mgr() {return html__bridge_mgr;} private final Xoh_bridge_mgr html__bridge_mgr; public Xowmf_mgr Wmf_mgr() {return wmf_mgr;} private final Xowmf_mgr wmf_mgr = new Xowmf_mgr(); - public Bry_bfr_mkr Utl__bfr_mkr() {return Xoa_app_.Utl__bfr_mkr();} + public Bry_bfr_mkr Utl__bfr_mkr() {return utl__bry_bfr_mkr;} private final Bry_bfr_mkr utl__bry_bfr_mkr = new Bry_bfr_mkr(); public Json_parser Utl__json_parser() {return utl__json_parser;} private final Json_parser utl__json_parser = new Json_parser(); public Gfo_inet_conn Utl__inet_conn() {return inet_conn;} private final Gfo_inet_conn inet_conn = Gfo_inet_conn_.new_(); public Xoa_meta_mgr Dbmeta_mgr() {return meta_mgr;} private final Xoa_meta_mgr meta_mgr; @@ -112,7 +112,7 @@ public class Xoae_app implements Xoa_app, Gfo_invk { public Xoapi_root Api_root() {return api_root;} private Xoapi_root api_root; public Gfo_usr_dlg Usr_dlg() {return Xoa_app_.Usr_dlg();} public Gfo_usr_dlg__log Log_wtr() {return log_wtr;} private Gfo_usr_dlg__log log_wtr; - public Xoa_gfs_mgr Gfs_mgr() {return Xoa_app_.Gfs_mgr();} + public Xoa_gfs_mgr Gfs_mgr() {return gfs_mgr;} private final Xoa_gfs_mgr gfs_mgr; public Xoa_special_mgr Special_mgr() {return special_mgr;} private Xoa_special_mgr special_mgr = new gplx.xowa.specials.Xoa_special_mgr(); public Xoh_html_mgr Html_mgr() {return html_mgr;} private Xoh_html_mgr html_mgr; public Xop_log_mgr Log_mgr() {return log_mgr;} private Xop_log_mgr log_mgr; @@ -147,7 +147,7 @@ public class Xoae_app implements Xoa_app, Gfo_invk { public Xop_amp_mgr Parser_amp_mgr() {return parser_amp_mgr;} private final Xop_amp_mgr parser_amp_mgr = Xop_amp_mgr.Instance; private Xoa_fmtr_mgr fmtr_mgr; - public Number_parser Utl_num_parser() {return utl_num_parser;} private Number_parser utl_num_parser = new Number_parser(); + public Gfo_number_parser Utl_num_parser() {return utl_num_parser;} private Gfo_number_parser utl_num_parser = new Gfo_number_parser(); public void Init_by_app() { stage = Xoa_stage_.Tid_init; user.Init_by_app(this); @@ -216,7 +216,7 @@ public class Xoae_app implements Xoa_app, Gfo_invk { else if (ctx.Match(k, Invk_shell)) return shell; else if (ctx.Match(k, Invk_log)) return log_wtr; else if (ctx.Match(k, Invk_setup)) return setup_mgr; - else if (ctx.Match(k, Invk_scripts)) return Xoa_app_.Gfs_mgr(); + else if (ctx.Match(k, Invk_scripts)) return gfs_mgr; else if (ctx.MatchPriv(k, Invk_term_cbk)) return this.Term_cbk(); else if (ctx.Match(k, Invk_xtns)) return xtn_mgr; else if (ctx.Match(k, Invk_ctg_mgr)) return ctg_mgr; diff --git a/400_xowa/src/gplx/xowa/Xoae_page.java b/400_xowa/src/gplx/xowa/Xoae_page.java index d17d220e3..111909b33 100644 --- a/400_xowa/src/gplx/xowa/Xoae_page.java +++ b/400_xowa/src/gplx/xowa/Xoae_page.java @@ -19,7 +19,7 @@ package gplx.xowa; import gplx.*; import gplx.xowa.langs.*; import gplx.xowa.wikis.pages.*; import gplx.xowa.guis.*; import gplx.xowa.guis.views.*; import gplx.xowa.files.*; import gplx.xowa.files.xfers.*; -import gplx.xowa.parsers.*; import gplx.xowa.wikis.pages.lnkis.*; import gplx.xowa.xtns.cites.*; import gplx.xowa.xtns.wdatas.*; import gplx.xowa.xtns.wdatas.pfuncs.*; +import gplx.xowa.parsers.*; import gplx.xowa.wikis.pages.lnkis.*; import gplx.xowa.xtns.cites.*; import gplx.xowa.xtns.wbases.*; import gplx.xowa.xtns.wbases.pfuncs.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.core.htmls.*; import gplx.xowa.addons.htmls.tocs.*; import gplx.xowa.htmls.modules.popups.*; import gplx.xowa.wikis.pages.wtxts.*; import gplx.xowa.wikis.pages.dbs.*; import gplx.xowa.wikis.pages.redirects.*; import gplx.xowa.wikis.pages.hdumps.*; import gplx.xowa.wikis.pages.htmls.*; public class Xoae_page implements Xoa_page { @@ -34,10 +34,10 @@ public class Xoae_page implements Xoa_page { public Xoa_ttl Ttl() {return ttl;} public Xoae_page Ttl_(Xoa_ttl v) {ttl = v; url.Wiki_bry_(wiki.Domain_bry()).Page_bry_(v.Full_url()); return this;} private Xoa_ttl ttl; public Xoa_url Url() {return url;} public Xoae_page Url_(Xoa_url v) {url = v; return this;} private Xoa_url url = Xoa_url.blank(); public byte[] Url_bry_safe() {return url == null ? Bry_.Empty : url.Raw();} - public Xopg_db_data Db() {return db;} private final Xopg_db_data db = new Xopg_db_data(); - public Xopg_redirect_mgr Redirect() {return redirect;} private final Xopg_redirect_mgr redirect = new Xopg_redirect_mgr(); - public Xopg_html_data Html_data() {return html;} private final Xopg_html_data html = new Xopg_html_data(); - public Xopg_hdump_data Hdump_mgr() {return hdump;} private final Xopg_hdump_data hdump = new Xopg_hdump_data(); + public Xopg_db_data Db() {return db;} private final Xopg_db_data db = new Xopg_db_data(); + public Xopg_redirect_mgr Redirect_trail() {return redirect_trail;} private final Xopg_redirect_mgr redirect_trail = new Xopg_redirect_mgr(); + public Xopg_html_data Html_data() {return html;} private final Xopg_html_data html = new Xopg_html_data(); + public Xopg_hdump_data Hdump_mgr() {return hdump;} private final Xopg_hdump_data hdump = new Xopg_hdump_data(); public Xoa_page__commons_mgr Commons_mgr() {return commons_mgr;} private final Xoa_page__commons_mgr commons_mgr = new Xoa_page__commons_mgr(); public void Xtn_gallery_packed_exists_y_() {html.Xtn_gallery_packed_exists_y_();} @@ -81,7 +81,7 @@ public class Xoae_page implements Xoa_page { public void Clear_all() {Clear(true);} public void Clear(boolean clear_scrib) { // NOTE: this is called post-fetch but pre-wtxt; do not clear items set by post-fetch, such as id, ttl, redirected_ttls, data_raw db.Clear(); - redirect.Clear(); + redirect_trail.Clear(); html.Clear(); hdump.Clear(); wtxt.Clear(); diff --git a/400_xowa/src/gplx/xowa/Xow_wiki.java b/400_xowa/src/gplx/xowa/Xow_wiki.java index e9fb3632a..eff7d1eae 100644 --- a/400_xowa/src/gplx/xowa/Xow_wiki.java +++ b/400_xowa/src/gplx/xowa/Xow_wiki.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.xowa; import gplx.*; -import gplx.core.primitives.*; +import gplx.core.primitives.*; import gplx.core.brys.*; import gplx.core.ios.*; import gplx.xowa.langs.*; import gplx.xowa.langs.cases.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.domains.*; import gplx.xowa.wikis.metas.*; import gplx.xowa.wikis.data.site_stats.*; import gplx.xowa.wikis.ttls.*; import gplx.xowa.wikis.data.*; import gplx.xowa.wikis.xwikis.*; import gplx.xowa.addons.*; import gplx.xowa.files.*; import gplx.xowa.files.repos.*; import gplx.xowa.files.origs.*; import gplx.xowa.files.bins.*; import gplx.fsdb.meta.*; import gplx.fsdb.*; @@ -52,6 +52,8 @@ public interface Xow_wiki extends Xow_ttl_parser, Gfo_invk { Xow_site_stats_mgr Stats(); void Init_by_wiki(); void Init_by_wiki__force(); // HACK: force init for drd wiki + Bry_bfr_mkr Utl__bfr_mkr(); + Io_stream_zip_mgr Utl__zip_mgr(); Xow_url_parser Utl__url_parser(); Xoax_addon_mgr Addon_mgr(); void Init_needed_y_(); diff --git a/400_xowa/src/gplx/xowa/Xowe_wiki.java b/400_xowa/src/gplx/xowa/Xowe_wiki.java index 2461c4a61..87e9203eb 100644 --- a/400_xowa/src/gplx/xowa/Xowe_wiki.java +++ b/400_xowa/src/gplx/xowa/Xowe_wiki.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.xowa; import gplx.*; -import gplx.core.brys.*; import gplx.core.primitives.*; import gplx.core.brys.fmtrs.*; +import gplx.core.brys.*; import gplx.core.primitives.*; import gplx.core.brys.fmtrs.*; import gplx.core.ios.*; import gplx.xowa.apps.*; import gplx.xowa.apps.fsys.*; import gplx.xowa.apps.cfgs.*; import gplx.xowa.apps.cfgs.gui.*; import gplx.xowa.apps.urls.*; import gplx.xowa.langs.*; import gplx.xowa.langs.msgs.*; import gplx.xowa.langs.cases.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.domains.*; import gplx.xowa.wikis.xwikis.*; import gplx.xowa.wikis.nss.*; import gplx.xowa.wikis.pages.*; import gplx.xowa.wikis.metas.*; import gplx.xowa.wikis.data.site_stats.*; import gplx.xowa.wikis.ttls.*; import gplx.xowa.wikis.data.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.wikis.caches.*; @@ -130,7 +130,8 @@ public class Xowe_wiki implements Xow_wiki, Gfo_invk, Gfo_evt_itm { public Xow_msg_mgr Msg_mgr() {return msg_mgr;} private Xow_msg_mgr msg_mgr; public Xow_fragment_mgr Fragment_mgr() {return fragment_mgr;} private Xow_fragment_mgr fragment_mgr; public Bfmtr_eval_wiki Eval_mgr() {return eval_mgr;} private Bfmtr_eval_wiki eval_mgr; - public Bry_bfr_mkr Utl__bfr_mkr() {return utl__bry_bfr_mkr;} private final Bry_bfr_mkr utl__bry_bfr_mkr = new Bry_bfr_mkr(); + public Bry_bfr_mkr Utl__bfr_mkr() {return utl__bry_bfr_mkr;} private final Bry_bfr_mkr utl__bry_bfr_mkr = new Bry_bfr_mkr(); + public Io_stream_zip_mgr Utl__zip_mgr() {return utl__zip_mgr;} private final Io_stream_zip_mgr utl__zip_mgr = new Io_stream_zip_mgr(); public byte[] Wdata_wiki_lang() {return wdata_wiki_lang;} private byte[] wdata_wiki_lang; public void Wdata_wiki_lang_(byte[] v) {this.wdata_wiki_lang = v; Wdata_wiki_abrv_();} // TEST: public byte[] Wdata_wiki_abrv() {return wdata_wiki_abrv;} private byte[] wdata_wiki_abrv; private int wdata_wiki_tid; diff --git a/400_xowa/src/gplx/xowa/addons/Xoax_addon_mgr.java b/400_xowa/src/gplx/xowa/addons/Xoax_addon_mgr.java index f65675a74..edf92d369 100644 --- a/400_xowa/src/gplx/xowa/addons/Xoax_addon_mgr.java +++ b/400_xowa/src/gplx/xowa/addons/Xoax_addon_mgr.java @@ -44,6 +44,7 @@ public class Xoax_addon_mgr { , new gplx.xowa.addons.bldrs.htmls .Html__dump_to_fsys__addon() , new gplx.xowa.addons.bldrs.exports .Export_addon() , new gplx.xowa.addons.wikis.pages.randoms .Rndm_addon() + , new gplx.xowa.addons.bldrs.hdumps.diffs .Dumpdiff_addon() // specials , new gplx.xowa.addons.wikis.registrys .Wiki_registry_addon() diff --git a/400_xowa/src/gplx/xowa/addons/apps/helps/logs/Xolog_special.java b/400_xowa/src/gplx/xowa/addons/apps/helps/logs/Xolog_special.java index 9560a5564..d77ca5b39 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/helps/logs/Xolog_special.java +++ b/400_xowa/src/gplx/xowa/addons/apps/helps/logs/Xolog_special.java @@ -46,7 +46,7 @@ public class Xolog_special implements Xow_special_page { args_bldr.Add("cmd", "view"); if (redirect_to_same_file && file != null) args_bldr.Add("file", file); - page.Redirect().Itms__add__special(wiki, Prototype.Special__meta(), args_bldr.To_ary()); + page.Redirect_trail().Itms__add__special(wiki, Prototype.Special__meta(), args_bldr.To_ary()); return; } else diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/centrals/dbs/Xobc_data_db_upgrader.java b/400_xowa/src/gplx/xowa/addons/bldrs/centrals/dbs/Xobc_data_db_upgrader.java index 480becaed..538538a1a 100644 --- a/400_xowa/src/gplx/xowa/addons/bldrs/centrals/dbs/Xobc_data_db_upgrader.java +++ b/400_xowa/src/gplx/xowa/addons/bldrs/centrals/dbs/Xobc_data_db_upgrader.java @@ -35,7 +35,7 @@ public class Xobc_data_db_upgrader { //int next_check_interval = cfg_mgr.Select_int_or("", Cfg__next_check_interval, 24 * 7); //DateAdp last_check = DateAdp_.parse_fmt_or(last_check_str, Date_fmt, null); //if (last_check != null) { // check if last_check_str exists - // Time_span span = DateAdp_.Now().Diff(last_check); + // Time_span span = Datetime_now.Get().Diff(last_check); // if (span.Total_hours().To_double() < next_check_interval) { // check if enough time passed // Gfo_log_.Instance.Info("xobc_db update not needed", "last_check", last_check_str, "next_check_interval", next_check_interval); // return; @@ -47,7 +47,7 @@ public class Xobc_data_db_upgrader { // Gfo_log_.Instance.Info("xobc_db update needed b/c of missing or invalid last_check_str", "last_check", last_check_str); // update needed; first, update cfg_key, then get host - cfg_mgr.Upsert_str("", Cfg__last_check_date, DateAdp_.Now().XtoStr_fmt(Date_fmt)); + cfg_mgr.Upsert_str("", Cfg__last_check_date, Datetime_now.Get().XtoStr_fmt(Date_fmt)); Xobc_data_db bc_db = task_mgr.Data_db(); Xobc_host_regy_itm host_itm = bc_db.Tbl__host_regy().Select(Xobc_host_regy_tbl.Host_id__archive_org); diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/centrals/dbs/datas/Xobc_version_regy_tbl.java b/400_xowa/src/gplx/xowa/addons/bldrs/centrals/dbs/datas/Xobc_version_regy_tbl.java index 0a6926b35..b8c784c1e 100644 --- a/400_xowa/src/gplx/xowa/addons/bldrs/centrals/dbs/datas/Xobc_version_regy_tbl.java +++ b/400_xowa/src/gplx/xowa/addons/bldrs/centrals/dbs/datas/Xobc_version_regy_tbl.java @@ -33,7 +33,7 @@ public class Xobc_version_regy_tbl implements Db_tbl { public void Create_tbl() { conn.Meta_tbl_create(Dbmeta_tbl_itm.New(tbl_name, flds)); conn.Stmt_insert(tbl_name, flds) - .Val_int(fld_version_id, 1).Val_str(fld_version_date, DateAdp_.Now().XtoStr_fmt_yyyy_MM_dd_HH_mm()).Val_str(fld_version_note, "initial") + .Val_int(fld_version_id, 1).Val_str(fld_version_date, Datetime_now.Get().XtoStr_fmt_yyyy_MM_dd_HH_mm()).Val_str(fld_version_note, "initial") .Exec_insert(); } public Xobc_version_regy_itm Select_latest() { diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/exports/merges/Merge_wkr__core.java b/400_xowa/src/gplx/xowa/addons/bldrs/exports/merges/Merge_wkr__core.java index f7afc72be..aa58825a6 100644 --- a/400_xowa/src/gplx/xowa/addons/bldrs/exports/merges/Merge_wkr__core.java +++ b/400_xowa/src/gplx/xowa/addons/bldrs/exports/merges/Merge_wkr__core.java @@ -81,7 +81,7 @@ class Merge_wkr__core { } private void Merge_cfg(Db_conn src_conn, Db_conn trg_conn, String src_tbl_name) { if (trg_conn.Meta_tbl_exists("xowa_cfg")) { - attach_mgr.Conn_main_(trg_conn).Conn_others_(new Db_attach_itm("src_db", src_conn)); + attach_mgr.Conn_main_(trg_conn).Conn_links_(new Db_attach_itm("src_db", src_conn)); attach_mgr.Exec_sql(String_.Concat_lines_nl ( "INSERT INTO xowa_cfg" , "SELECT s.cfg_grp, s.cfg_key, s.cfg_val" diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/files/Split_init__file.java b/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/files/Split_init__file.java index e6c4c844a..6ff350156 100644 --- a/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/files/Split_init__file.java +++ b/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/files/Split_init__file.java @@ -55,7 +55,7 @@ class Split_init__file { // update bin_db_id wkr_conn.Meta_idx_create("fsdb_img_regy", "img", "img_type", "fil_id", "thm_id"); Gfo_log_.Instance.Prog("updating bin_db_id"); - attach_mgr.Conn_others_(new Db_attach_itm("fsdb_db", atr_conn)); + attach_mgr.Conn_links_(new Db_attach_itm("fsdb_db", atr_conn)); // update bin_db_id.fil attach_mgr.Exec_sql(String_.Concat_lines_nl // ANSI.Y diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/files/Split_meta_wkr__fil.java b/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/files/Split_meta_wkr__fil.java index cd7bff11f..98bf28c51 100644 --- a/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/files/Split_meta_wkr__fil.java +++ b/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/files/Split_meta_wkr__fil.java @@ -35,7 +35,7 @@ class Split_meta_wkr__fil extends Split_meta_wkr_base { } @Override public void On_nth_rls(Split_ctx ctx, Db_conn trg_conn) {this.stmt = Db_stmt_.Rls(stmt);} @Override protected String Load_sql(Db_attach_mgr attach_mgr, int ns_id, int score_bgn, int score_end) { - attach_mgr.Conn_others_(new Db_attach_itm("atr_db", atr_conn)); + attach_mgr.Conn_links_(new Db_attach_itm("atr_db", atr_conn)); return String_.Concat_lines_nl ( "SELECT f.fil_id, f.fil_owner_id, f.fil_xtn_id, f.fil_ext_id, f.fil_bin_db_id, f.fil_name, f.fil_size, f.fil_modified, f.fil_hash, fir.page_id" , "FROM fsdb_fil f" diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/files/Split_meta_wkr__org.java b/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/files/Split_meta_wkr__org.java index a0d52cc50..c672dfa96 100644 --- a/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/files/Split_meta_wkr__org.java +++ b/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/files/Split_meta_wkr__org.java @@ -35,7 +35,7 @@ class Split_meta_wkr__org extends Split_meta_wkr_base { } @Override public void On_nth_rls(Split_ctx ctx, Db_conn trg_conn) {this.stmt = Db_stmt_.Rls(stmt);} @Override protected String Load_sql(Db_attach_mgr attach_mgr, int ns_id, int score_bgn, int score_end) { - attach_mgr.Conn_others_(new Db_attach_itm("atr_db", atr_conn)); + attach_mgr.Conn_links_(new Db_attach_itm("atr_db", atr_conn)); return String_.Concat_lines_nl ( "SELECT o.orig_ttl, o.orig_repo, o.orig_status, o.orig_ext, o.orig_w, o.orig_h, o.orig_redirect, fir.page_id" , "FROM orig_reg o" diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/files/Split_meta_wkr__thm.java b/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/files/Split_meta_wkr__thm.java index ebffd9297..3f61030e5 100644 --- a/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/files/Split_meta_wkr__thm.java +++ b/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/files/Split_meta_wkr__thm.java @@ -35,7 +35,7 @@ class Split_meta_wkr__thm extends Split_meta_wkr_base { } @Override public void On_nth_rls(Split_ctx ctx, Db_conn trg_conn) {this.stmt = Db_stmt_.Rls(stmt);} @Override protected String Load_sql(Db_attach_mgr attach_mgr, int ns_id, int score_bgn, int score_end) { - attach_mgr.Conn_others_(new Db_attach_itm("atr_db", atr_conn)); + attach_mgr.Conn_links_(new Db_attach_itm("atr_db", atr_conn)); return String_.Concat_lines_nl ( "SELECT t.thm_id, t.thm_owner_id, t.thm_w, t.thm_h, t.thm_time, t.thm_page, t.thm_bin_db_id, t.thm_size, t.thm_modified, t.thm_hash, fir.page_id" , "FROM fsdb_thm t" diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/rndms/Split_wkr__rndm.java b/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/rndms/Split_wkr__rndm.java index 14a66d87b..974aec2cb 100644 --- a/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/rndms/Split_wkr__rndm.java +++ b/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/rndms/Split_wkr__rndm.java @@ -58,7 +58,7 @@ public class Split_wkr__rndm implements Split_wkr { Rndm_seq_tbl seq_tbl = new Rndm_seq_tbl(trg_conn); seq_tbl.Create_tbl(); Split_tbl_.Bld_insert_by_select(tmp_bfr, seq_tbl.Tbl_name(), seq_tbl.Flds()); tmp_bfr.Add_str_u8_fmt("WHERE {0} = {1} AND {2} = {3}", seq_tbl.Fld__qry_idx(), bldr.Qry_idx(), seq_tbl.Fld__rng_idx(), bldr.Rng_idx()); - attach_mgr.Conn_main_(trg_conn).Conn_others_(new Db_attach_itm("src_db", bldr.Conn())); + attach_mgr.Conn_main_(trg_conn).Conn_links_(new Db_attach_itm("src_db", bldr.Conn())); attach_mgr.Exec_sql(tmp_bfr.To_str_and_clear()); // bldr.Conn().Txn_bgn("rndm"); } diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/srchs/Split_meta_wkr__link.java b/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/srchs/Split_meta_wkr__link.java index 4ac703275..0d920daf0 100644 --- a/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/srchs/Split_meta_wkr__link.java +++ b/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/srchs/Split_meta_wkr__link.java @@ -41,7 +41,7 @@ class Split_meta_wkr__link extends Split_meta_wkr_base { } @Override protected String Load_sql(Db_attach_mgr attach_mgr, int ns_id, int score_bgn, int score_end) { int trg_db_id = srch_db_mgr.Tbl__link__get_idx(ns_id); - attach_mgr.Conn_others_(new Db_attach_itm("link_db", srch_db_mgr.Tbl__link__get_at(trg_db_id).conn)); + attach_mgr.Conn_links_(new Db_attach_itm("link_db", srch_db_mgr.Tbl__link__get_at(trg_db_id).conn)); return String_.Concat_lines_nl ( "SELECT sl.word_id, sl.page_id, sl.link_score, sw.page_id, " + trg_db_id + " AS trg_db_id" , "FROM search_link sl" diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/srchs/Split_srch_init.java b/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/srchs/Split_srch_init.java index ffee9f626..66e001c45 100644 --- a/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/srchs/Split_srch_init.java +++ b/400_xowa/src/gplx/xowa/addons/bldrs/exports/splits/srchs/Split_srch_init.java @@ -42,7 +42,7 @@ class Split_srch_init { int len = srch_db_mgr.Tbl__link__len(); for (int i = 0; i < len; ++i) { Db_conn link_conn = srch_db_mgr.Tbl__link__get_at(i).conn; - attach_mgr.Conn_others_(new Db_attach_itm("word_db", word_conn), new Db_attach_itm("link_db", link_conn)); + attach_mgr.Conn_links_(new Db_attach_itm("word_db", word_conn), new Db_attach_itm("link_db", link_conn)); attach_mgr.Exec_sql(String_.Concat_lines_nl // ANSI.Y ( "INSERT INTO split_search_word (word_id, word_text, link_count, link_count_score, link_score_min, link_score_max, page_uid, page_ns, page_id, page_score)" , "SELECT sw.word_id, sw.word_text, sw.link_count, sw.link_count_score, sw.link_score_min, sw.link_score_max, Min(pr.page_uid), -1, -1, -1" diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/files/cmds/Xobldr__lnki_temp__create.java b/400_xowa/src/gplx/xowa/addons/bldrs/files/cmds/Xobldr__lnki_temp__create.java index 6f325aa6b..779286ea0 100644 --- a/400_xowa/src/gplx/xowa/addons/bldrs/files/cmds/Xobldr__lnki_temp__create.java +++ b/400_xowa/src/gplx/xowa/addons/bldrs/files/cmds/Xobldr__lnki_temp__create.java @@ -21,7 +21,7 @@ import gplx.xowa.files.*; import gplx.xowa.wikis.nss.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.domains.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.logs.*; import gplx.xowa.parsers.lnkis.*; import gplx.xowa.parsers.xndes.*; -import gplx.xowa.htmls.core.bldrs.*; import gplx.xowa.xtns.scribunto.*; import gplx.xowa.xtns.wdatas.*; +import gplx.xowa.htmls.core.bldrs.*; import gplx.xowa.xtns.scribunto.*; import gplx.xowa.xtns.wbases.*; import gplx.fsdb.meta.*; import gplx.xowa.files.fsdb.*; import gplx.fsdb.*; import gplx.xowa.langs.vnts.*; import gplx.xowa.parsers.vnts.*; import gplx.xowa.parsers.lnkis.files.*; @@ -112,7 +112,7 @@ public class Xobldr__lnki_temp__create extends Xob_dump_mgr_base implements gplx else { parser.Parse_page_all_clear(root, ctx, ctx.Tkn_mkr(), page_src); if ( gen_html - && page.Redirect().Itms__len() == 0) // don't generate html for redirected pages + && page.Redirect_trail().Itms__len() == 0) // don't generate html for redirected pages wiki.Html_mgr().Page_wtr_mgr().Gen(ctx.Page().Root_(root), Xopg_page_.Tid_read); if (gen_hdump) hdump_bldr.Insert(ctx, page.Root_(root)); diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_dict_value_string.java b/400_xowa/src/gplx/xowa/addons/bldrs/hdumps/diffs/Dumpdiff_addon.java similarity index 58% rename from 400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_dict_value_string.java rename to 400_xowa/src/gplx/xowa/addons/bldrs/hdumps/diffs/Dumpdiff_addon.java index a0a64e422..9e7d9bba0 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_dict_value_string.java +++ b/400_xowa/src/gplx/xowa/addons/bldrs/hdumps/diffs/Dumpdiff_addon.java @@ -15,18 +15,14 @@ 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.xtns.wdatas.core; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; -public class Wdata_dict_value_string { - public static final byte - Tid_value = 0 - , Tid_type = 1 - ; - public static byte[] - Bry_value = Bry_.new_a7("value") - , Bry_type = Bry_.new_a7("type") - ; - public static final Hash_adp_bry Dict = Hash_adp_bry.cs() - .Add_bry_byte(Bry_value , Tid_value) - .Add_bry_byte(Bry_type , Tid_type) - ; +package gplx.xowa.addons.bldrs.hdumps.diffs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.hdumps.*; +import gplx.xowa.bldrs.wkrs.*; +public class Dumpdiff_addon implements Xoax_addon_itm, Xoax_addon_itm__bldr { + public Xob_cmd[] Bldr_cmds() { + return new Xob_cmd[] + { Dumpdiff_cmd.Prototype + }; + } + + public String Addon__key() {return "xowa.builds.hdumps.diff";} } diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/hdumps/diffs/Dumpdiff_cfg.java b/400_xowa/src/gplx/xowa/addons/bldrs/hdumps/diffs/Dumpdiff_cfg.java new file mode 100644 index 000000000..9e6d3d1ef --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/hdumps/diffs/Dumpdiff_cfg.java @@ -0,0 +1,29 @@ +/* +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.bldrs.hdumps.diffs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.hdumps.*; +class Dumpdiff_cfg implements Gfo_invk { + public Io_url Prv_dir() {return prv_dir;} private Io_url prv_dir; + public Io_url Cur_dir() {return cur_dir;} private Io_url cur_dir; + public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { + if (ctx.Match(k, Invk__cur_dir_)) this.cur_dir = m.ReadIoUrl("v"); + else if (ctx.Match(k, Invk__prv_dir_)) this.prv_dir = m.ReadIoUrl("v"); + else return Gfo_invk_.Rv_unhandled; + return this; + } + public static final String Invk__cur_dir_ = "cur_dir_", Invk__prv_dir_ = "prv_dir_"; +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/hdumps/diffs/Dumpdiff_cmd.java b/400_xowa/src/gplx/xowa/addons/bldrs/hdumps/diffs/Dumpdiff_cmd.java new file mode 100644 index 000000000..44eb85e24 --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/hdumps/diffs/Dumpdiff_cmd.java @@ -0,0 +1,38 @@ +/* +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.bldrs.hdumps.diffs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.hdumps.*; +import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wkrs.*; import gplx.xowa.htmls.core.htmls.*; +public class Dumpdiff_cmd extends Xob_cmd__base { + private final Dumpdiff_cfg cfg = new Dumpdiff_cfg(); + private final Dumpdiff_mgr mgr = new Dumpdiff_mgr(); + public Dumpdiff_cmd(Xob_bldr bldr, Xowe_wiki wiki) {super(bldr, wiki);} + @Override public void Cmd_run() { + wiki.Init_assert(); + mgr.Exec(bldr.App(), wiki, cfg); + } + @Override public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { + if (ctx.Match(k, Invk__cfg)) return cfg; + else return Gfo_invk_.Rv_unhandled; + } + private static final String Invk__cfg = "cfg"; + + public static final String BLDR_CMD_KEY = "hdump.diff"; + @Override public String Cmd_key() {return BLDR_CMD_KEY;} + public static final Xob_cmd Prototype = new Dumpdiff_cmd(null, null); + @Override public Xob_cmd Cmd_clone(Xob_bldr bldr, Xowe_wiki wiki) {return new Dumpdiff_cmd(bldr, wiki);} +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/hdumps/diffs/Dumpdiff_log_tbl.java b/400_xowa/src/gplx/xowa/addons/bldrs/hdumps/diffs/Dumpdiff_log_tbl.java new file mode 100644 index 000000000..8dd2b4eb3 --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/hdumps/diffs/Dumpdiff_log_tbl.java @@ -0,0 +1,56 @@ +/* +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.bldrs.hdumps.diffs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.hdumps.*; +import gplx.dbs.*; +class Dumpdiff_log_tbl implements Db_tbl { + private final Dbmeta_fld_list flds = new Dbmeta_fld_list(); + private final String fld__page_id, fld__cur_snip, fld__prv_snip; + private Db_stmt stmt__insert; + public Dumpdiff_log_tbl(Db_conn conn) { + this.conn = conn; + flds.Add_int_pkey("uid"); + this.fld__page_id = flds.Add_int("page_id"); + this.fld__cur_snip = flds.Add_str("cur_snip", 1024); + this.fld__prv_snip = flds.Add_str("prv_snip", 1024); + conn.Rls_reg(this); + } + public String Tbl_name() {return tbl_name;} private final String tbl_name = "diff_log"; + public Db_conn Conn() {return conn;} private final Db_conn conn; + public void Create_tbl() { + conn.Meta_tbl_remake(Dbmeta_tbl_itm.New(tbl_name, flds, Dbmeta_idx_itm.new_normal_by_tbl(tbl_name, fld__page_id, fld__page_id))); + } + public void Insert_bgn() { + stmt__insert = conn.Stmt_insert(tbl_name, fld__page_id, fld__cur_snip, fld__prv_snip); + conn.Txn_bgn("diff_log"); + } + public void Insert_by_batch(int page_id, byte[] prv_snip, byte[] cur_snip) { + stmt__insert.Clear().Val_int(fld__page_id, page_id).Val_bry_as_str(fld__cur_snip, cur_snip).Val_bry_as_str(fld__prv_snip, prv_snip).Exec_insert(); + } + public void Insert_end() { + conn.Txn_end(); + stmt__insert.Rls(); + } + public void Rls() {} + + public static Dumpdiff_log_tbl New(Xowe_wiki wiki) { + Db_conn conn = Db_conn_bldr.Instance.Get_or_autocreate(true, wiki.Fsys_mgr().Root_dir().GenSubFil("xowa.diff.sqlite3")); + Dumpdiff_log_tbl rv = new Dumpdiff_log_tbl(conn); + conn.Meta_tbl_remake(rv); + return rv; + } +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/hdumps/diffs/Dumpdiff_mgr.java b/400_xowa/src/gplx/xowa/addons/bldrs/hdumps/diffs/Dumpdiff_mgr.java new file mode 100644 index 000000000..ba6dc1796 --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/hdumps/diffs/Dumpdiff_mgr.java @@ -0,0 +1,78 @@ +/* +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.bldrs.hdumps.diffs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.hdumps.*; +import gplx.core.brys.*; +import gplx.dbs.*; +import gplx.xowa.htmls.*; +import gplx.xowa.wikis.data.tbls.*; +class Dumpdiff_mgr { + public void Exec(Xoae_app app, Xowe_wiki wiki, Dumpdiff_cfg cfg) { + // init log_tbl, wikis + Dumpdiff_log_tbl log_tbl = Dumpdiff_log_tbl.New(wiki); + Xowe_wiki cur_wiki = Get_wiki_by_dir(wiki, Bool_.Y, cfg.Cur_dir()); + Xowe_wiki prv_wiki = Get_wiki_by_dir(wiki, Bool_.N, cfg.Prv_dir()); + + // init html_loader, page_loader + Hdump_html_loader cur_html_loader = new Hdump_html_loader(cur_wiki); + Hdump_html_loader prv_html_loader = new Hdump_html_loader(prv_wiki); + Dumpdiff_page_loader page_loader = new Dumpdiff_page_loader(cur_wiki, prv_wiki, 10000); + List_adp list = List_adp_.New(); + + // prepare for loop + int page_count = 0, diff_count = 0; + log_tbl.Insert_bgn(); + + // loop page_table until no more + while (true) { + page_loader.Load(list); + int list_len = list.Count(); + if (list_len == 0) break; + + // loop pages, compare, and log + for (int i = 0; i < list_len; ++i) { + Dumpdiff_page_itm page = (Dumpdiff_page_itm)list.Get_at(i); + int page_id = page.Page_id(); + byte[] cur_html = cur_html_loader.Load(page_id, page.Cur_db_id()); + byte[] prv_html = prv_html_loader.Load(page_id, page.Prv_db_id()); + byte[][] diff = Bry_diff_.Diff_1st_line(cur_html, prv_html); + ++page_count; + if (diff != null) { + log_tbl.Insert_by_batch(page_id, diff[0], diff[1]); + ++diff_count; + Gfo_usr_dlg_.Instance.Warn_many("", "", "hdump diff: pages=~{0} diffs=~{1} page_id=~{2} cur=~{3} prv=~{4}", page_count, diff_count, page_id, diff[0], diff[1]); + } + } + list.Clear(); + } + + // cleanup + log_tbl.Insert_end(); + } + private static Xowe_wiki Get_wiki_by_dir(Xowe_wiki dflt_wiki, boolean wiki_is_cur, Io_url wiki_dir) { + Xowe_wiki rv = null; + if (wiki_dir == null) { + if (wiki_is_cur) + rv = dflt_wiki; + else + throw Err_.new_("", "prv_dir not specified"); + } + if (rv == null) + rv = gplx.xowa.addons.bldrs.mass_parses.parses.Xow_wiki_utl_.Clone_wiki(dflt_wiki, wiki_dir); + return rv; + } +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/hdumps/diffs/Dumpdiff_page_itm.java b/400_xowa/src/gplx/xowa/addons/bldrs/hdumps/diffs/Dumpdiff_page_itm.java new file mode 100644 index 000000000..e22ef4aec --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/hdumps/diffs/Dumpdiff_page_itm.java @@ -0,0 +1,32 @@ +/* +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.bldrs.hdumps.diffs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.hdumps.*; +class Dumpdiff_page_itm { + public Dumpdiff_page_itm(int page_id, int ns_id, byte[] ttl_bry, int cur_db_id, int prv_db_id) { + this.page_id = page_id; + this.ns_id = ns_id; + this.ttl_bry = ttl_bry; + this.cur_db_id = cur_db_id; + this.prv_db_id = prv_db_id; + } + public int Page_id() {return page_id;} private final int page_id; + public int Ns_id() {return ns_id;} private final int ns_id; + public byte[] Ttl_bry() {return ttl_bry;} private final byte[] ttl_bry; + public int Cur_db_id() {return cur_db_id;} private final int cur_db_id; + public int Prv_db_id() {return prv_db_id;} private final int prv_db_id; +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/hdumps/diffs/Dumpdiff_page_loader.java b/400_xowa/src/gplx/xowa/addons/bldrs/hdumps/diffs/Dumpdiff_page_loader.java new file mode 100644 index 000000000..e16455b69 --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/hdumps/diffs/Dumpdiff_page_loader.java @@ -0,0 +1,54 @@ +/* +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.bldrs.hdumps.diffs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.hdumps.*; +import gplx.dbs.*; +class Dumpdiff_page_loader { + private final Db_attach_mgr attach_mgr = new Db_attach_mgr(); + private int select_count, cutoff_page_id; + public Dumpdiff_page_loader(Xowe_wiki cur_wiki, Xowe_wiki prv_wiki, int select_count) { + this.select_count = select_count; + attach_mgr.Conn_main_(cur_wiki.Data__core_mgr().Db__core().Conn()); + attach_mgr.Conn_links_(new Db_attach_itm("prv_db", prv_wiki.Data__core_mgr().Db__core().Conn())); + } + public void Load(List_adp rv) { + String sql = String_.Format(String_.Concat_lines_nl_skip_last // ANSI.Y + ( "SELECT cur.page_id" + , ", cur.page_namespace AS ns_id" + , ", cur.page_title AS ttl_bry" + , ", cur.page_html_db_id AS cur_html_db_id" + , ", prv.page_html_db_id AS prv_html_db_id" + , "FROM page cur" + , " JOIN page prv ON cur.page_id = prv.page_id" + , "WHERE cur.page_id > {0}" + , "AND cur.page_html_db_id != -1" + , "LIMIT {1}" + ), cutoff_page_id, select_count); + sql = attach_mgr.Resolve_sql(sql); + + attach_mgr.Attach(); + Db_rdr rdr = attach_mgr.Conn_main().Stmt_sql(sql).Exec_select__rls_auto(); + while (rdr.Move_next()) { + cutoff_page_id = rdr.Read_int("page_id"); + rv.Add(new Dumpdiff_page_itm(cutoff_page_id + , rdr.Read_int("ns_id"), rdr.Read_bry_by_str("ttl_bry") + , rdr.Read_int("cur_html_db_id"), rdr.Read_int("prv_html_db_id") + )); + } + attach_mgr.Detach(); + } +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/hdumps/diffs/Hdump_html_loader.java b/400_xowa/src/gplx/xowa/addons/bldrs/hdumps/diffs/Hdump_html_loader.java new file mode 100644 index 000000000..c2f954548 --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/hdumps/diffs/Hdump_html_loader.java @@ -0,0 +1,45 @@ +/* +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.bldrs.hdumps.diffs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.hdumps.*; +import gplx.core.ios.*; import gplx.core.ios.streams.*; +import gplx.xowa.wikis.data.*; import gplx.xowa.wikis.data.tbls.*; +import gplx.xowa.htmls.*; +class Hdump_html_loader { + private final Xowe_wiki wiki; + private Io_stream_zip_mgr stream_zip_mgr = new Io_stream_zip_mgr(); + private final Bry_bfr tmp_bfr = Bry_bfr_.New(); + private final Xoh_page tmp_hpg = new Xoh_page(); + private final Xoa_url tmp_url; private final Xoa_ttl tmp_ttl; + + public Hdump_html_loader(Xowe_wiki wiki) { + this.wiki = wiki; + this.tmp_url = wiki.Utl__url_parser().Parse(Bry_.new_a7("temp")); + this.tmp_ttl = wiki.Ttl_parse(Bry_.new_a7("temp")); + } + + public byte[] Load(int page_id, int html_db_id) { + // load html_bry from db + Xow_db_file html_db = wiki.Data__core_mgr().Dbs__get_by_id_or_fail(html_db_id); + tmp_hpg.Ctor_by_hview(wiki, tmp_url, tmp_ttl, page_id); + html_db.Tbl__html().Select_by_page(tmp_hpg); + + // unzip it + byte[] html_hzip = stream_zip_mgr.Unzip(Io_stream_.Tid_gzip, tmp_hpg.Db().Html().Html_bry()); + return wiki.Html__hdump_mgr().Load_mgr().Decode_as_bry(tmp_bfr, tmp_hpg, html_hzip, true); + } +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/mass_parses/makes/Xob_lnki_temp_row.java b/400_xowa/src/gplx/xowa/addons/bldrs/mass_parses/makes/Xob_lnki_temp_row.java index f33eb2343..915eea85b 100644 --- a/400_xowa/src/gplx/xowa/addons/bldrs/mass_parses/makes/Xob_lnki_temp_row.java +++ b/400_xowa/src/gplx/xowa/addons/bldrs/mass_parses/makes/Xob_lnki_temp_row.java @@ -19,7 +19,7 @@ package gplx.xowa.addons.bldrs.mass_parses.makes; import gplx.*; import gplx.xow import gplx.dbs.*; class Xob_lnki_temp_row implements CompareAble { public int Xomp_uid() {return xomp_uid;} private int xomp_uid; - public int Make_uid() {return make_uid;} private int make_uid; + public int Lnki_id() {return lnki_id;} private int lnki_id; public int Lnki_tier_id() {return lnki_tier_id;} private int lnki_tier_id; public int Lnki_page_id() {return lnki_page_id;} private int lnki_page_id; public byte[] Lnki_ttl() {return lnki_ttl;} private byte[] lnki_ttl; @@ -34,24 +34,24 @@ class Xob_lnki_temp_row implements CompareAble { public int Lnki_page() {return lnki_page;} private int lnki_page; public void Load(Db_rdr rdr, int xomp_uid) { this.xomp_uid = xomp_uid; - this.make_uid = rdr.Read_int("lnki_make_uid"); + this.lnki_id = rdr.Read_int("lnki_id"); this.lnki_tier_id = rdr.Read_int("lnki_tier_id"); this.lnki_page_id = rdr.Read_int("lnki_page_id"); this.lnki_ttl = rdr.Read_bry_by_str("lnki_ttl"); - this.lnki_commons_ttl = rdr.Read_bry_by_str("lnki_commons_ttl"); + this.lnki_commons_ttl = Bry_.new_u8_safe(rdr.Read_str("lnki_commons_ttl")); this.lnki_ext = rdr.Read_byte("lnki_ext"); this.lnki_type = rdr.Read_byte("lnki_type"); this.lnki_src_tid = rdr.Read_byte("lnki_src_tid"); this.lnki_w = rdr.Read_int("lnki_w"); this.lnki_h = rdr.Read_int("lnki_h"); this.lnki_upright = rdr.Read_double("lnki_upright"); - this.lnki_time = rdr.Read_int("lnki_time"); + this.lnki_time = rdr.Read_double("lnki_time"); this.lnki_page = rdr.Read_int("lnki_page"); } public int compareTo(Object obj) { Xob_lnki_temp_row comp = (Xob_lnki_temp_row)obj; int rv = Int_.Compare(xomp_uid, comp.xomp_uid); if (rv != CompareAble_.Same) return rv; - return Int_.Compare(make_uid, comp.make_uid); + return Int_.Compare(lnki_id, comp.lnki_id); } } diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/mass_parses/makes/Xomp_make_cmd.java b/400_xowa/src/gplx/xowa/addons/bldrs/mass_parses/makes/Xomp_make_cmd.java index 2c11e3181..26a31b413 100644 --- a/400_xowa/src/gplx/xowa/addons/bldrs/mass_parses/makes/Xomp_make_cmd.java +++ b/400_xowa/src/gplx/xowa/addons/bldrs/mass_parses/makes/Xomp_make_cmd.java @@ -21,8 +21,8 @@ public class Xomp_make_cmd extends Xob_cmd__base { public Xomp_make_cmd(Xob_bldr bldr, Xowe_wiki wiki) {super(bldr, wiki);} @Override public void Cmd_run() { wiki.Init_assert(); - Xomp_make_wkr wkr = new Xomp_make_wkr(wiki); - wkr.Exec(); + new Xomp_make_wkr(wiki).Exec(); + new Xomp_make_lnki().Exec(wiki, 1000); } @Override public String Cmd_key() {return BLDR_CMD_KEY;} private static final String BLDR_CMD_KEY = "wiki.mass_parse.make"; diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/mass_parses/makes/Xomp_make_lnki.java b/400_xowa/src/gplx/xowa/addons/bldrs/mass_parses/makes/Xomp_make_lnki.java index 34a216055..68a170df8 100644 --- a/400_xowa/src/gplx/xowa/addons/bldrs/mass_parses/makes/Xomp_make_lnki.java +++ b/400_xowa/src/gplx/xowa/addons/bldrs/mass_parses/makes/Xomp_make_lnki.java @@ -44,7 +44,8 @@ class Xomp_make_lnki { Xomp_wkr_db wkr_db = xomp_db.Wkr_db(Bool_.N, i); count += Load_rows(rows, xomp_db, wkr_db, uid_bgn, uid_bgn + uid_count); } - if (count == 0) break; + if (count < 0) break; + uid_bgn += count; Save_rows(rows, lnki_temp_tbl); } @@ -56,7 +57,7 @@ class Xomp_make_lnki { private int Load_rows(List_adp rows, Xomp_db_core xomp_db, Xomp_wkr_db wkr_db, int uid_bgn, int uid_end) { // build sql Db_attach_mgr attach_mgr = new Db_attach_mgr(xomp_db.Conn()); - attach_mgr.Conn_others_(new Db_attach_itm("wkr_db", wkr_db.Conn())); + attach_mgr.Conn_links_(new Db_attach_itm("wkr_db", wkr_db.Conn())); String sql = String_.Format(String_.Concat_lines_nl_skip_last ( "SELECT mgr.xomp_uid" , ", wkr.*" @@ -77,6 +78,7 @@ class Xomp_make_lnki { rv = rdr.Read_int("xomp_uid"); Xob_lnki_temp_row row = new Xob_lnki_temp_row(); row.Load(rdr, rv); + rows.Add(row); } } finally {rdr.Rls();} attach_mgr.Detach(); diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/mass_parses/parses/Xomp_load_wkr.java b/400_xowa/src/gplx/xowa/addons/bldrs/mass_parses/parses/Xomp_load_wkr.java index 671eaea02..c3e542cd9 100644 --- a/400_xowa/src/gplx/xowa/addons/bldrs/mass_parses/parses/Xomp_load_wkr.java +++ b/400_xowa/src/gplx/xowa/addons/bldrs/mass_parses/parses/Xomp_load_wkr.java @@ -64,7 +64,7 @@ class Xomp_load_wkr implements Gfo_invk { , "AND mp.page_status = 0" , "LIMIT {1}" ), prv_page_id, queue.Capacity()); - this.attach_mgr.Conn_others_(new Db_attach_itm("page_db", wiki.Data__core_mgr().Db__core().Conn())); + this.attach_mgr.Conn_links_(new Db_attach_itm("page_db", wiki.Data__core_mgr().Db__core().Conn())); sql = attach_mgr.Resolve_sql(sql); // page_tbl.load_sql diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/mass_parses/parses/Xomp_page_pool_loader.java b/400_xowa/src/gplx/xowa/addons/bldrs/mass_parses/parses/Xomp_page_pool_loader.java index ac80dbef2..c2d350cc4 100644 --- a/400_xowa/src/gplx/xowa/addons/bldrs/mass_parses/parses/Xomp_page_pool_loader.java +++ b/400_xowa/src/gplx/xowa/addons/bldrs/mass_parses/parses/Xomp_page_pool_loader.java @@ -60,7 +60,7 @@ class Xomp_page_pool_loader { , "AND mp.page_status = 0" , "LIMIT {1}" ), prv_uid, num_pages_per_load); - this.attach_mgr.Conn_others_(new Db_attach_itm("page_db", wiki.Data__core_mgr().Db__core().Conn())); + this.attach_mgr.Conn_links_(new Db_attach_itm("page_db", wiki.Data__core_mgr().Db__core().Conn())); sql = attach_mgr.Resolve_sql(sql); // run page_tbl diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/mass_parses/parses/Xomp_parse_mgr.java b/400_xowa/src/gplx/xowa/addons/bldrs/mass_parses/parses/Xomp_parse_mgr.java index 7d007f6ee..ff803f0fd 100644 --- a/400_xowa/src/gplx/xowa/addons/bldrs/mass_parses/parses/Xomp_parse_mgr.java +++ b/400_xowa/src/gplx/xowa/addons/bldrs/mass_parses/parses/Xomp_parse_mgr.java @@ -34,7 +34,7 @@ class Xomp_parse_mgr { Xomp_page_pool page_pool = new Xomp_page_pool(pool_loader, cfg.Num_pages_per_wkr()); prog_mgr.Init(pool_loader.Get_pending_count(), cfg.Progress_interval()); wiki.App().User().User_db_mgr().Cache_mgr().Enabled_n_(); // disable db lookups of cache - Xow_page_cache page_cache = Xomp_tmpl_cache_bldr.New(wiki, true); + Xow_page_cache page_cache = Xomp_tmpl_cache_bldr.New(wiki, cfg.Load_all_templates()); Gfo_cache_mgr commons_cache = new Gfo_cache_mgr().Max_size_(Int_.Max_value).Reduce_by_(Int_.Max_value); Gfo_cache_mgr ifexist_cache = new Gfo_cache_mgr().Max_size_(Int_.Max_value).Reduce_by_(Int_.Max_value); @@ -47,8 +47,8 @@ class Xomp_parse_mgr { latch = new Gfo_countdown_latch(wkr_len); Xomp_parse_wkr[] wkrs = new Xomp_parse_wkr[wkr_len]; for (int i = 0; i < wkr_len; ++i) { - Xowe_wiki wkr_wiki = Clone_wiki(wiki); - Xomp_parse_wkr wkr = new Xomp_parse_wkr(this, wkr_wiki, page_pool, i, cfg.Cleanup_interval(), cfg.Progress_interval(), cfg.Log_file_lnkis()); + Xowe_wiki wkr_wiki = Xow_wiki_utl_.Clone_wiki(wiki, wiki.Fsys_mgr().Root_dir()); + Xomp_parse_wkr wkr = new Xomp_parse_wkr(this, wkr_wiki, page_pool, i, cfg, cfg.Cleanup_interval(), cfg.Progress_interval(), cfg.Log_file_lnkis()); wkr_wiki.Cache_mgr().Page_cache_(page_cache).Commons_cache_(commons_cache).Ifexist_cache_(ifexist_cache); // remove wmf wkr, else will try to download images during parsing if (wkr_wiki.File__bin_mgr() != null) @@ -74,11 +74,4 @@ class Xomp_parse_mgr { } Gfo_usr_dlg_.Instance.Note_many("", "", bfr.To_str_and_clear()); } - private static Xowe_wiki Clone_wiki(Xowe_wiki wiki) { - Xol_lang_itm lang = new Xol_lang_itm(wiki.App().Lang_mgr(), wiki.Lang().Key_bry()); - Xol_lang_itm_.Lang_init(lang); - Xowe_wiki rv = new Xowe_wiki(wiki.Appe(), lang, gplx.xowa.wikis.nss.Xow_ns_mgr_.default_(lang.Case_mgr()), wiki.Domain_itm(), wiki.Fsys_mgr().Root_dir()); - rv.Init_by_wiki(); - return rv; - } } diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/mass_parses/parses/Xomp_parse_mgr_cfg.java b/400_xowa/src/gplx/xowa/addons/bldrs/mass_parses/parses/Xomp_parse_mgr_cfg.java index 181e70319..e80a65372 100644 --- a/400_xowa/src/gplx/xowa/addons/bldrs/mass_parses/parses/Xomp_parse_mgr_cfg.java +++ b/400_xowa/src/gplx/xowa/addons/bldrs/mass_parses/parses/Xomp_parse_mgr_cfg.java @@ -16,6 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.addons.bldrs.mass_parses.parses; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.mass_parses.*; +import gplx.core.ios.streams.*; class Xomp_parse_mgr_cfg implements Gfo_invk { public int Num_wkrs() {return num_wkrs;} private int num_wkrs = -1; // use env.available_processors public int Num_pages_in_pool() {return num_pages_in_pool;} private int num_pages_in_pool = 1000; @@ -27,6 +28,8 @@ class Xomp_parse_mgr_cfg implements Gfo_invk { public boolean Hzip_enabled() {return hzip_enabled;} private boolean hzip_enabled = true; public boolean Hdiff_enabled() {return hdiff_enabled;} private boolean hdiff_enabled = true; public boolean Log_file_lnkis() {return log_file_lnkis;} private boolean log_file_lnkis = true; + public boolean Load_all_templates() {return load_all_templates;} private boolean load_all_templates = true; + public byte Zip_tid() {return zip_tid;} private byte zip_tid = Io_stream_.Tid_gzip; public void Init(Xowe_wiki wiki) { if (num_wkrs == -1) num_wkrs = gplx.core.envs.Env_.System_cpu_count(); } @@ -41,12 +44,16 @@ class Xomp_parse_mgr_cfg implements Gfo_invk { else if (ctx.Match(k, Invk__hdump_enabled_)) hdump_enabled = m.ReadBool("v"); else if (ctx.Match(k, Invk__hzip_enabled_)) hzip_enabled = m.ReadBool("v"); else if (ctx.Match(k, Invk__hdiff_enabled_)) hdiff_enabled = m.ReadBool("v"); + else if (ctx.Match(k, Invk__zip_tid_)) zip_tid = m.ReadByte("v"); + else if (ctx.Match(k, Invk__load_all_templates_)) load_all_templates = m.ReadYn("v"); + else if (ctx.Match(k, Invk__manual_now_)) Datetime_now.Manual_and_freeze_(m.ReadDate("v")); else return Gfo_invk_.Rv_unhandled; return this; } private static final String Invk__num_wkrs_ = "num_wkrs_", Invk__num_pages_in_pool_ = "num_pages_in_pool_", Invk__num_pages_per_wkr_ = "num_pages_per_wkr_" , Invk__progress_interval_ = "progress_interval_", Invk__commit_interval_ = "commit_interval_", Invk__cleanup_interval_ = "cleanup_interval_" - , Invk__hdump_enabled_ = "hdump_enabled_", Invk__hzip_enabled_ = "hzip_enabled_", Invk__hdiff_enabled_ = "hdiff_enabled_" + , Invk__hdump_enabled_ = "hdump_enabled_", Invk__hzip_enabled_ = "hzip_enabled_", Invk__hdiff_enabled_ = "hdiff_enabled_", Invk__zip_tid_ = "zip_tid_" + , Invk__load_all_templates_ = "load_all_templates_", Invk__manual_now_ = "manual_now_" ; } diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/mass_parses/parses/Xomp_parse_wkr.java b/400_xowa/src/gplx/xowa/addons/bldrs/mass_parses/parses/Xomp_parse_wkr.java index 63c1282f2..b0cd79159 100644 --- a/400_xowa/src/gplx/xowa/addons/bldrs/mass_parses/parses/Xomp_parse_wkr.java +++ b/400_xowa/src/gplx/xowa/addons/bldrs/mass_parses/parses/Xomp_parse_wkr.java @@ -24,14 +24,16 @@ class Xomp_parse_wkr implements Gfo_invk { private final Xomp_page_pool page_pool; private final int idx; private final List_adp list = List_adp_.New(); private int list_idx = 0, list_len = 0; + private final Xomp_parse_mgr_cfg cfg; private int done_count; private long done_time; private Xomp_wkr_db wkr_db; private int cleanup_interval, commit_interval; private boolean log_file_lnkis; - public Xomp_parse_wkr(Xomp_parse_mgr mgr, Xowe_wiki wiki, Xomp_page_pool page_pool, int idx, int cleanup_interval, int commit_interval, boolean log_file_lnkis) { + public Xomp_parse_wkr(Xomp_parse_mgr mgr, Xowe_wiki wiki, Xomp_page_pool page_pool, int idx, Xomp_parse_mgr_cfg cfg, int cleanup_interval, int commit_interval, boolean log_file_lnkis) { this.mgr = mgr; this.wiki = wiki; this.page_pool = page_pool; this.idx = idx; this.wkr_db = mgr.Db_core().Wkr_db(Bool_.Y, idx); // NOTE: must go in ctor, or else thread issues + this.cfg = cfg; this.cleanup_interval = cleanup_interval; this.commit_interval = commit_interval; this.log_file_lnkis = log_file_lnkis; @@ -40,7 +42,7 @@ class Xomp_parse_wkr implements Gfo_invk { public Xob_hdump_bldr Hdump_bldr() {return hdump_bldr;} private final Xob_hdump_bldr hdump_bldr = new Xob_hdump_bldr(); public void Exec() { // init - Xow_parser_mgr parser_mgr = new Xow_parser_mgr(wiki); + Xow_parser_mgr parser_mgr = wiki.Parser_mgr(); // disable file download wiki.File_mgr().Init_file_mgr_by_load(wiki); // must happen after fsdb.make @@ -58,8 +60,8 @@ class Xomp_parse_wkr implements Gfo_invk { logger.Bgn(); } - // enable hdump - hdump_bldr.Enabled_(true).Hzip_enabled_(true).Hzip_diff_(true).Init(wiki, wkr_db.Conn(), new Xob_hdump_tbl_retriever__xomp(wkr_db.Html_tbl())); + // enable hdump + hdump_bldr.Enabled_(cfg.Hdump_enabled()).Hzip_enabled_(cfg.Hzip_enabled()).Hzip_diff_(cfg.Hzip_enabled()).Zip_tid_(cfg.Zip_tid()).Init(wiki, wkr_db.Conn(), new Xob_hdump_tbl_retriever__xomp(wkr_db.Html_tbl())); wkr_db.Conn().Txn_bgn("xomp"); while (true) { diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/mass_parses/parses/Xomp_text_db_loader.java b/400_xowa/src/gplx/xowa/addons/bldrs/mass_parses/parses/Xomp_text_db_loader.java index 08371942b..5cf1c3dfe 100644 --- a/400_xowa/src/gplx/xowa/addons/bldrs/mass_parses/parses/Xomp_text_db_loader.java +++ b/400_xowa/src/gplx/xowa/addons/bldrs/mass_parses/parses/Xomp_text_db_loader.java @@ -22,9 +22,10 @@ import gplx.xowa.wikis.data.tbls.*; class Xomp_text_db_loader { private final Xow_wiki wiki; private final Ordered_hash text_db_hash = Ordered_hash_.New(); - private final Io_stream_zip_mgr zip_mgr = Xoa_app_.Utl__zip_mgr(); + private final Io_stream_zip_mgr zip_mgr; public Xomp_text_db_loader(Xow_wiki wiki) { this.wiki = wiki; + this.zip_mgr = wiki.Utl__zip_mgr(); } public void Add(int text_db_id, Xowd_text_bry_owner ppg) { Xomp_text_db_itm itm = (Xomp_text_db_itm)text_db_hash.Get_by(text_db_id); diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/mass_parses/parses/Xomp_tmpl_cache_bldr.java b/400_xowa/src/gplx/xowa/addons/bldrs/mass_parses/parses/Xomp_tmpl_cache_bldr.java index ce753f1c2..f54aa574e 100644 --- a/400_xowa/src/gplx/xowa/addons/bldrs/mass_parses/parses/Xomp_tmpl_cache_bldr.java +++ b/400_xowa/src/gplx/xowa/addons/bldrs/mass_parses/parses/Xomp_tmpl_cache_bldr.java @@ -71,11 +71,26 @@ class Xomp_tmpl_cache_bldr { for (int i = 0; i < redirect_len; ++i) { Xow_page_cache_itm src_itm = (Xow_page_cache_itm)redirect_list.Get_at(i); Xow_page_cache_itm trg_itm = (Xow_page_cache_itm)page_regy.Get_by(src_itm.Redirect_id()); - if (trg_itm == null) { - Gfo_usr_dlg_.Instance.Prog_many("", "", "missing redirect for tmpl: ~{0}", src_itm.Ttl().Full_db()); - continue; + byte[] trg_itm_wtxt = null; + Xoa_ttl trg_ttl = null; + if (trg_itm == null) { // template can redirect to non-template pages + Xoa_ttl src_ttl = src_itm.Ttl(); + Xoae_page wpg = Xoae_page.New(wiki, src_ttl); + wiki.Data_mgr().Load_from_db(wpg, src_ttl.Ns(), src_ttl, false); + if (wpg.Db().Page().Exists()) { + trg_itm_wtxt = wpg.Db().Text().Text_bry(); + trg_ttl = wpg.Ttl(); + } + else { + Gfo_usr_dlg_.Instance.Prog_many("", "", "missing redirect for tmpl: ~{0}", src_itm.Ttl().Full_db()); + continue; + } } - src_itm.Set_redirect_bry(trg_itm.Wtxt__direct()); + else { + trg_itm_wtxt = trg_itm.Wtxt__direct(); + trg_ttl = trg_itm.Ttl(); + } + src_itm.Set_redirect(trg_ttl, trg_itm_wtxt); // NOTE: itm must have title of redirect, not original item; EX:Template:Ifempty -> Template:If_empty; DATE:2016-07-26 } } } diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/mass_parses/parses/Xow_wiki_utl_.java b/400_xowa/src/gplx/xowa/addons/bldrs/mass_parses/parses/Xow_wiki_utl_.java new file mode 100644 index 000000000..95ac8653f --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/bldrs/mass_parses/parses/Xow_wiki_utl_.java @@ -0,0 +1,28 @@ +/* +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.bldrs.mass_parses.parses; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.bldrs.*; import gplx.xowa.addons.bldrs.mass_parses.*; +import gplx.xowa.langs.*; import gplx.xowa.langs.cases.*; +public class Xow_wiki_utl_ { + public static Xowe_wiki Clone_wiki(Xowe_wiki wiki, Io_url wiki_dir) { + Xol_lang_itm lang = new Xol_lang_itm(wiki.App().Lang_mgr(), wiki.Lang().Key_bry()); + Xol_lang_itm_.Lang_init(lang); + Xowe_wiki rv = new Xowe_wiki(wiki.Appe(), lang, gplx.xowa.wikis.nss.Xow_ns_mgr_.default_(lang.Case_mgr()), wiki.Domain_itm(), wiki_dir); + rv.Init_by_wiki(); + return rv; + } +} diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/xodirs/Xobc_xodir_addon.java b/400_xowa/src/gplx/xowa/addons/bldrs/xodirs/Xobc_xodir_addon.java index 4fdfa126c..0c7007822 100644 --- a/400_xowa/src/gplx/xowa/addons/bldrs/xodirs/Xobc_xodir_addon.java +++ b/400_xowa/src/gplx/xowa/addons/bldrs/xodirs/Xobc_xodir_addon.java @@ -40,7 +40,7 @@ class Xow_import_dir_cbk__xodir implements Xow_import_dir_cbk { wiki.App().User().User_db_mgr().Cfg().Set_app_str("xowa.xodir.custom_dir", path); // redirect to import_dir - page.Redirect().Itms__add__special(wiki, Xobc_xodir_special.Prototype.Special__meta()); + page.Redirect_trail().Itms__add__special(wiki, Xobc_xodir_special.Prototype.Special__meta()); } public static Xow_import_dir_cbk__xodir Instance = new Xow_import_dir_cbk__xodir(); Xow_import_dir_cbk__xodir() {} } diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/xodirs/Xobc_xodir_special.java b/400_xowa/src/gplx/xowa/addons/bldrs/xodirs/Xobc_xodir_special.java index cea4f41ad..3ac7ab159 100644 --- a/400_xowa/src/gplx/xowa/addons/bldrs/xodirs/Xobc_xodir_special.java +++ b/400_xowa/src/gplx/xowa/addons/bldrs/xodirs/Xobc_xodir_special.java @@ -28,7 +28,7 @@ public class Xobc_xodir_special implements Xow_special_page { Xobc_xodir_cfg.Set_app_str__selected(wiki.App(), path); // On_path_selected.Invk(null, -1, "", null); // page.Redirect().Itms__add__special(wiki, Xobc_task_special.Prototype.Special__meta()); - page.Redirect().Itms__add__special(wiki, Prototype.Special__meta()); + page.Redirect_trail().Itms__add__special(wiki, Prototype.Special__meta()); return; } diff --git a/400_xowa/src/gplx/xowa/addons/wikis/htmls/css/mgrs/Xob_css_status.java b/400_xowa/src/gplx/xowa/addons/wikis/htmls/css/mgrs/Xob_css_status.java index bcc89d44e..0b855e46f 100644 --- a/400_xowa/src/gplx/xowa/addons/wikis/htmls/css/mgrs/Xob_css_status.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/htmls/css/mgrs/Xob_css_status.java @@ -61,7 +61,7 @@ public class Xob_css_status { } if (rv.Fs_exists()) { DateAdp fs_timestamp = Timestamp_load(css_dir); - DateAdp db_timestamp = DateAdp_.Now(); + DateAdp db_timestamp = Datetime_now.Get(); if (db_timestamp.compareTo(fs_timestamp) == CompareAble_.More) rv.Update_tid_db_y_(); // v2_db and later_version; update from db else diff --git a/400_xowa/src/gplx/xowa/addons/wikis/htmls/css/mgrs/Xowd_css_core_mgr.java b/400_xowa/src/gplx/xowa/addons/wikis/htmls/css/mgrs/Xowd_css_core_mgr.java index 817e9efec..6217c41ca 100644 --- a/400_xowa/src/gplx/xowa/addons/wikis/htmls/css/mgrs/Xowd_css_core_mgr.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/htmls/css/mgrs/Xowd_css_core_mgr.java @@ -27,7 +27,7 @@ public class Xowd_css_core_mgr { try { conn.Txn_bgn("schema__css_core__set"); int css_id = core_tbl.Select_id_by_key(key); - DateAdp updated_on = DateAdp_.Now().XtoUtc(); + DateAdp updated_on = Datetime_now.Get().XtoUtc(); if (css_id == -1) css_id = core_tbl.Insert(key, updated_on); else { diff --git a/400_xowa/src/gplx/xowa/addons/wikis/htmls/css/mgrs/Xowd_css_core_mgr_tst.java b/400_xowa/src/gplx/xowa/addons/wikis/htmls/css/mgrs/Xowd_css_core_mgr_tst.java index 64af10be7..619ec5524 100644 --- a/400_xowa/src/gplx/xowa/addons/wikis/htmls/css/mgrs/Xowd_css_core_mgr_tst.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/htmls/css/mgrs/Xowd_css_core_mgr_tst.java @@ -64,7 +64,7 @@ class Xowd_css_core_mgr_fxt { private final Bry_bfr bfr = Bry_bfr_.Reset(32); private Xowd_css_core_tbl core_tbl; private Xowd_css_file_tbl file_tbl; public void Clear() { - Tfds.Now_enabled_y_(); + Datetime_now.Manual_y_(); Io_mgr.Instance.InitEngine_mem(); Db_conn_bldr.Instance.Reg_default_mem(); Db_conn conn = Db_conn_bldr.Instance.New(Io_url_.mem_fil_("mem/db/css.sqlite3")); diff --git a/400_xowa/src/gplx/xowa/addons/wikis/registrys/infos/Xow_info_special.java b/400_xowa/src/gplx/xowa/addons/wikis/registrys/infos/Xow_info_special.java index 75206ca18..2b736a290 100644 --- a/400_xowa/src/gplx/xowa/addons/wikis/registrys/infos/Xow_info_special.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/registrys/infos/Xow_info_special.java @@ -31,7 +31,7 @@ public class Xow_info_special implements Xow_special_page { delete_wiki.Data__core_mgr().Rls(); // release connection if open Delete_wiki_files(delete_wiki.Fsys_mgr().Root_dir()); } - page.Redirect().Itms__add__special(wiki, gplx.xowa.addons.wikis.registrys.lists.Xow_list_special.Prototype.Special__meta()); + page.Redirect_trail().Itms__add__special(wiki, gplx.xowa.addons.wikis.registrys.lists.Xow_list_special.Prototype.Special__meta()); return; } diff --git a/400_xowa/src/gplx/xowa/addons/wikis/searchs/bldrs/Srch_temp_tbl_wkr.java b/400_xowa/src/gplx/xowa/addons/wikis/searchs/bldrs/Srch_temp_tbl_wkr.java index 7f564b692..956deb89b 100644 --- a/400_xowa/src/gplx/xowa/addons/wikis/searchs/bldrs/Srch_temp_tbl_wkr.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/searchs/bldrs/Srch_temp_tbl_wkr.java @@ -85,7 +85,7 @@ class Srch_temp_tbl_wkr implements Srch_text_parser_wkr { page_conn.Meta_idx_create(Dbmeta_idx_itm.new_normal_by_tbl("page", "page_ns__page_id", "page_namespace", "page_id")); Srch_db_mgr.Optimize_unsafe_(word_conn, Bool_.Y); word_conn.Meta_tbl_remake(Dbmeta_tbl_itm.New("search_link_temp", Dbmeta_fld_itm.new_int("word_id"), Dbmeta_fld_itm.new_int("page_id"), Dbmeta_fld_itm.new_int("page_namespace"))); - attach_mgr.Conn_main_(word_conn).Conn_others_(new Db_attach_itm("page_db", page_conn)); + attach_mgr.Conn_main_(word_conn).Conn_links_(new Db_attach_itm("page_db", page_conn)); attach_mgr.Exec_sql_w_msg ( "filling search_link_temp (please wait)", String_.Concat_lines_nl_skip_last ( "INSERT INTO search_link_temp (word_id, page_id, page_namespace)" @@ -105,7 +105,7 @@ class Srch_temp_tbl_wkr implements Srch_text_parser_wkr { Xoa_app_.Usr_dlg().Plog_many("", "", "creating search_link_temp: ~{0}", i); Srch_link_tbl link_tbl = search_db_mgr.Tbl__link__ary()[i]; Srch_db_mgr.Optimize_unsafe_(link_tbl.conn, Bool_.Y); - attach_mgr.Conn_main_(link_tbl.conn).Conn_others_(new Db_attach_itm("word_db", word_conn)); + attach_mgr.Conn_main_(link_tbl.conn).Conn_links_(new Db_attach_itm("word_db", word_conn)); attach_mgr.Exec_sql_w_msg ( Bry_fmt.Make_str("filling search_link: ~{idx} of ~{len}", i, len), String_.Concat_lines_nl_skip_last ( "INSERT INTO search_link (word_id, page_id)" diff --git a/400_xowa/src/gplx/xowa/addons/wikis/searchs/bldrs/cmds/Xobldr__link__link_score.java b/400_xowa/src/gplx/xowa/addons/wikis/searchs/bldrs/cmds/Xobldr__link__link_score.java index f2ebf7bb5..aa575d9be 100644 --- a/400_xowa/src/gplx/xowa/addons/wikis/searchs/bldrs/cmds/Xobldr__link__link_score.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/searchs/bldrs/cmds/Xobldr__link__link_score.java @@ -33,8 +33,7 @@ public class Xobldr__link__link_score extends Xob_cmd__base { wiki.Init_assert(); Db_conn plink_conn = Db_conn_bldr.Instance.Get_or_autocreate(false, wiki.Fsys_mgr().Root_dir().GenSubFil(Xob_db_file.Name__page_link)); String page_rank_tbl = Xobldr__page__page_score.Pagerank__tbl_name; - String log_module = "search.page.score"; - Xoa_app_.Plog_none(log_module, "adding fields to page_rank_temp"); + Gfo_usr_dlg_.Instance.Prog_none("", "", "search.page.score:adding fields to page_rank_temp"); plink_conn.Meta_fld_assert(page_rank_tbl, "page_len_score" , Dbmeta_fld_tid.Itm__int, 0); plink_conn.Meta_fld_assert(page_rank_tbl, "page_rank_score" , Dbmeta_fld_tid.Itm__double, 0); plink_conn.Meta_fld_assert(page_rank_tbl, "page_score" , Dbmeta_fld_tid.Itm__int, 0); @@ -54,7 +53,7 @@ public class Xobldr__link__link_score extends Xob_cmd__base { // calc page_score if (page_rank_enabled) { // get min / max - Xoa_app_.Plog_none(log_module, "calculating page_rank range"); + Gfo_usr_dlg_.Instance.Prog_none("", "", "search.page.score:calculating page_rank range"); double page_rank_min = plink_conn.Exec_select_as_double("SELECT Min(page_rank) FROM " + page_rank_tbl, Double_.MinValue); if (page_rank_min == Double_.MinValue) throw Err_.new_("bldr", "failed to get min; tbl=~{0}", page_rank_tbl); double page_rank_max = plink_conn.Exec_select_as_double("SELECT Max(page_rank) FROM " + page_rank_tbl, Double_.MinValue); if (page_rank_max == Double_.MinValue) throw Err_.new_("bldr", "failed to get max; tbl=~{0}", page_rank_tbl); double page_rank_rng = page_rank_max - page_rank_min; diff --git a/400_xowa/src/gplx/xowa/addons/wikis/searchs/parsers/Srch_sym_parser.java b/400_xowa/src/gplx/xowa/addons/wikis/searchs/parsers/Srch_sym_parser.java index d12dcb5fd..df296358b 100644 --- a/400_xowa/src/gplx/xowa/addons/wikis/searchs/parsers/Srch_sym_parser.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/searchs/parsers/Srch_sym_parser.java @@ -59,7 +59,7 @@ class Srch_sym_parser__split implements Srch_sym_parser { int hooks_len = hooks_ary.length; for (int i = 0; i < hooks_len; ++i) { byte[] hook = hooks_ary[i]; - trie.Add_obj(hook, Int_obj_val.new_(hook.length)); + trie.Add_obj(hook, new Int_obj_val(hook.length)); } } public int Tid() {return Srch_sym_parser_.Tid__split;} diff --git a/400_xowa/src/gplx/xowa/addons/wikis/searchs/parsers/Srch_text_parser_wkr.java b/400_xowa/src/gplx/xowa/addons/wikis/searchs/parsers/Srch_text_parser_wkr.java index d970f44a6..d174a636d 100644 --- a/400_xowa/src/gplx/xowa/addons/wikis/searchs/parsers/Srch_text_parser_wkr.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/searchs/parsers/Srch_text_parser_wkr.java @@ -21,5 +21,5 @@ public interface Srch_text_parser_wkr { } class Srch_text_parser_wkr__noop implements Srch_text_parser_wkr { public void Parse_done(Srch_word_itm word) {} - public static final Srch_text_parser_wkr__noop Instance = new Srch_text_parser_wkr__noop(); Srch_text_parser_wkr__noop() {} + public static final Srch_text_parser_wkr__noop Instance = new Srch_text_parser_wkr__noop(); Srch_text_parser_wkr__noop() {} // TS.static } diff --git a/400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/wkrs/Srch_link_wkr.java b/400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/wkrs/Srch_link_wkr.java index 5326a1f75..9c1650dae 100644 --- a/400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/wkrs/Srch_link_wkr.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/wkrs/Srch_link_wkr.java @@ -53,7 +53,7 @@ public class Srch_link_wkr extends Percentile_select_base { this.link_tbl_idx = 0; this.link_tbl_nth = ctx.Tbl__link__ary.length - 1; sql_root = Srch_link_wkr_.Find_sql_root(ctx); - attach_mgr.Conn_others_(new Db_attach_itm("page_db", ctx.Db__core.Conn()), new Db_attach_itm("word_db", ctx.Tbl__word.conn)); + attach_mgr.Conn_links_(new Db_attach_itm("page_db", ctx.Db__core.Conn()), new Db_attach_itm("word_db", ctx.Tbl__word.conn)); super.Select(); } finally { diff --git a/400_xowa/src/gplx/xowa/addons/wikis/searchs/specials/Srch_special_page.java b/400_xowa/src/gplx/xowa/addons/wikis/searchs/specials/Srch_special_page.java index 86aa6a1a6..9a3b34743 100644 --- a/400_xowa/src/gplx/xowa/addons/wikis/searchs/specials/Srch_special_page.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/searchs/specials/Srch_special_page.java @@ -86,7 +86,7 @@ public class Srch_special_page implements Xow_special_page, Gfo_invk, Gfo_evt_it page.Root().Data_htm_(search_page.Root().Data_htm()); Xoa_url redirect_url = Xoa_url.New(wiki, search_ttl); page.Ttl_(search_ttl).Url_(redirect_url); - page.Redirect().Itms__add__article(redirect_url, search_ttl, null); + page.Redirect_trail().Itms__add__article(redirect_url, search_ttl, null); } } private void Multi_wikis_changed() { diff --git a/400_xowa/src/gplx/xowa/apps/Xoav_app.java b/400_xowa/src/gplx/xowa/apps/Xoav_app.java index c86de682d..95487211b 100644 --- a/400_xowa/src/gplx/xowa/apps/Xoav_app.java +++ b/400_xowa/src/gplx/xowa/apps/Xoav_app.java @@ -35,7 +35,8 @@ public class Xoav_app implements Xoa_app, Gfo_invk { public Xoav_app(Gfo_usr_dlg usr_dlg, Xoa_app_mode mode, Xog_tab_mgr tab_mgr, String plat_name, Io_url root_dir, Io_url file_dir, Io_url css_dir, Io_url http_root) { Xoa_app_.Usr_dlg_(usr_dlg); this.usr_dlg = usr_dlg; this.mode = mode; this.fsys_mgr = new Xoa_fsys_mgr(plat_name, root_dir, root_dir.GenSubDir("wiki"), file_dir, css_dir, http_root); - this.lang_mgr = new Xoa_lang_mgr(this); + Xoa_gfs_mgr gfs_mgr = new Xoa_gfs_mgr(this, fsys_mgr, null); + this.lang_mgr = new Xoa_lang_mgr(this, gfs_mgr); this.meta_mgr = new Xoa_meta_mgr(this); this.gfs_mgr = new Xoa_gfs_mgr(this, fsys_mgr, null); this.file__cache_mgr = new Xof_cache_mgr(usr_dlg, null, null); @@ -83,7 +84,7 @@ public class Xoav_app implements Xoa_app, Gfo_invk { public Xowmf_mgr Wmf_mgr() {return wmf_mgr;} private final Xowmf_mgr wmf_mgr = new Xowmf_mgr(); public Gfo_usr_dlg Usr_dlg() {return usr_dlg;} public void Usr_dlg_(Gfo_usr_dlg v) {usr_dlg = v; Xoa_app_.Usr_dlg_(usr_dlg);} private Gfo_usr_dlg usr_dlg = Gfo_usr_dlg_.Noop; - public Bry_bfr_mkr Utl__bfr_mkr() {return Xoa_app_.Utl__bfr_mkr();} + public Bry_bfr_mkr Utl__bfr_mkr() {return utl__bry_bfr_mkr;} private final Bry_bfr_mkr utl__bry_bfr_mkr = new Bry_bfr_mkr(); public Json_parser Utl__json_parser() {return utl__json_parser;} private final Json_parser utl__json_parser = new Json_parser(); public boolean Bldr__running() {return bldr__running;} public void Bldr__running_(boolean v) {this.bldr__running = v;} private boolean bldr__running; public Xop_amp_mgr Utl_amp_mgr() {return utl_amp_mgr;} private Xop_amp_mgr utl_amp_mgr = Xop_amp_mgr.Instance; diff --git a/400_xowa/src/gplx/xowa/apps/apis/xowa/xtns/Xoapi_wikibase.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/xtns/Xoapi_wikibase.java index 896ebc61d..6b09e88bb 100644 --- a/400_xowa/src/gplx/xowa/apps/apis/xowa/xtns/Xoapi_wikibase.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/xtns/Xoapi_wikibase.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.xowa.apps.apis.xowa.xtns; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.*; -import gplx.xowa.xtns.wdatas.*; +import gplx.xowa.xtns.wbases.*; public class Xoapi_wikibase implements Gfo_invk, Gfo_evt_mgr_owner { public Xoapi_wikibase() { evt_mgr = new Gfo_evt_mgr(this); diff --git a/400_xowa/src/gplx/xowa/apps/boots/Xoa_boot_mgr.java b/400_xowa/src/gplx/xowa/apps/boots/Xoa_boot_mgr.java index d377412db..114fa3273 100644 --- a/400_xowa/src/gplx/xowa/apps/boots/Xoa_boot_mgr.java +++ b/400_xowa/src/gplx/xowa/apps/boots/Xoa_boot_mgr.java @@ -38,7 +38,7 @@ public class Xoa_boot_mgr { } } private void Init_env(String[] args) { - Gfo_usr_dlg_.Instance = usr_dlg = Xoa_app_.usr_dlg_console_(); + Gfo_usr_dlg_.Instance = usr_dlg = Xoa_app_.New__usr_dlg__console(); Gfo_log_.Instance__set(new gplx.xowa.apps.shells.Gfo_log__console()); log_wtr = usr_dlg.Log_wkr(); log_wtr.Log_to_session_fmt("env.init: version=~{0}", Xoa_app_.Version); GfuiEnv_.Init_swt(args, Xoa_app_.class); diff --git a/400_xowa/src/gplx/xowa/apps/caches/Wdata_doc_cache.java b/400_xowa/src/gplx/xowa/apps/caches/Wdata_doc_cache.java index 7df1aaf6d..420886317 100644 --- a/400_xowa/src/gplx/xowa/apps/caches/Wdata_doc_cache.java +++ b/400_xowa/src/gplx/xowa/apps/caches/Wdata_doc_cache.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.xowa.apps.caches; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; -import gplx.xowa.xtns.wdatas.*; +import gplx.xowa.xtns.wbases.*; public class Wdata_doc_cache { private Hash_adp_bry hash = Hash_adp_bry.cs(); public void Add(byte[] qid, Wdata_doc doc) {hash.Add(qid, doc);} diff --git a/400_xowa/src/gplx/xowa/apps/cfgs/Xoa_cfg_db_txt.java b/400_xowa/src/gplx/xowa/apps/cfgs/Xoa_cfg_db_txt.java index c90849cc3..5f0f4412f 100644 --- a/400_xowa/src/gplx/xowa/apps/cfgs/Xoa_cfg_db_txt.java +++ b/400_xowa/src/gplx/xowa/apps/cfgs/Xoa_cfg_db_txt.java @@ -22,7 +22,7 @@ public class Xoa_cfg_db_txt implements Xoa_cfg_db { private Bry_fmtr fmtr = Bry_fmtr.new_("app.cfgs.get('~{msg}', '~{wiki}').val = '~{val}';\n", "msg", "wiki", "val"); public void Cfg_reset_all(Xoa_cfg_mgr cfg_mgr) { Io_url src_url = this.Cfg_url(cfg_mgr); - Io_url trg_url = src_url.GenNewNameAndExt("xowa_user_cfg." + DateAdp_.Now().XtoStr_fmt_yyyyMMdd_HHmmss() + ".gfs"); + Io_url trg_url = src_url.GenNewNameAndExt("xowa_user_cfg." + Datetime_now.Get().XtoStr_fmt_yyyyMMdd_HHmmss() + ".gfs"); Io_mgr.Instance.MoveFil_args(src_url, trg_url, true).Exec(); if (cfg_mgr.App().Tid_is_edit()) ((Xoae_app)cfg_mgr.App()).Gui_mgr().Kit().Ask_ok("", "", "Options cleared. Please restart XOWA."); diff --git a/400_xowa/src/gplx/xowa/apps/gfs/Xoa_gfs_mgr.java b/400_xowa/src/gplx/xowa/apps/gfs/Xoa_gfs_mgr.java index d40b1c990..972849439 100644 --- a/400_xowa/src/gplx/xowa/apps/gfs/Xoa_gfs_mgr.java +++ b/400_xowa/src/gplx/xowa/apps/gfs/Xoa_gfs_mgr.java @@ -64,7 +64,7 @@ public class Xoa_gfs_mgr implements Gfo_invk, Gfo_invk_root_wkr { try {Run_url(url);} catch (Exception e) { // gfs is corrupt; may happen if multiple XOWAs opened, and "Close all" chosen in OS; DATE:2014-07-01 if (!String_.Eq(type, "xowa")) // check if user.gfs - Io_mgr.Instance.MoveFil(url, url.GenNewNameOnly(url.NameOnly() + "-" + DateAdp_.Now().XtoStr_fmt_yyyyMMdd_HHmmss())); // move file + Io_mgr.Instance.MoveFil(url, url.GenNewNameOnly(url.NameOnly() + "-" + Datetime_now.Get().XtoStr_fmt_yyyyMMdd_HHmmss())); // move file Gfo_usr_dlg_.Instance.Warn_many("", "", "invalid gfs; obsoleting: src=~{0} err=~{1}", url.Raw(), Err_.Message_gplx_full(e)); } } diff --git a/400_xowa/src/gplx/xowa/apps/gfs/Xoa_gfs_wtr_.java b/400_xowa/src/gplx/xowa/apps/gfs/Xoa_gfs_wtr_.java index 91ff24264..2239fc6e8 100644 --- a/400_xowa/src/gplx/xowa/apps/gfs/Xoa_gfs_wtr_.java +++ b/400_xowa/src/gplx/xowa/apps/gfs/Xoa_gfs_wtr_.java @@ -20,17 +20,19 @@ public class Xoa_gfs_wtr_ { public static byte[] Escape(String v) {return Escape(Bry_.new_u8(v));} public static byte[] Escape(byte[] v) { return Bry_find_.Find_fwd(v, Byte_ascii.Apos) == Bry_find_.Not_found ? v : Bry_.Replace(v, Byte_ascii.Apos_bry, Bry__apos_escaped); - } private static final byte[] Bry__apos_escaped = Bry_.new_a7("''"); + } private static final byte[] Bry__apos_escaped = Bry_.new_a7("''"); public static void Write_prop(Bry_bfr bfr, byte[] prop, byte[] val) { bfr.Add(prop).Add(Bry__val_bgn).Add(Xoa_gfs_wtr_.Escape(val)).Add(Bry__val_end); // EX: "a_('b');\n" - } private static final byte[] Bry__val_bgn = Bry_.new_a7("_('"), Bry__val_end = Bry_.new_a7("');\n"); + } private static final byte[] Bry__val_bgn = Bry_.new_a7("_('"), Bry__val_end = Bry_.new_a7("');\n"); public static String Write_func_chain(String... ary) { // EX: "a.b.c" - Bry_bfr bfr = Xoa_app_.Utl__bfr_mkr().Get_b128(); // Bry_bfr.try_none: simple-ops - int len = ary.length; - for (int i = 0; i < len; ++i) { - if (i != 0) bfr.Add_byte(Byte_ascii.Dot); - bfr.Add_str_u8(ary[i]); - } - return bfr.To_str_and_rls(); + Bry_bfr bfr = Bry_bfr_.New(); + try { + int len = ary.length; + for (int i = 0; i < len; ++i) { + if (i != 0) bfr.Add_byte(Byte_ascii.Dot); + bfr.Add_str_u8(ary[i]); + } + return bfr.To_str_and_clear(); + } finally {bfr.Mkr_rls();} } } diff --git a/400_xowa/src/gplx/xowa/apps/site_cfgs/Xoa_site_cfg_itm__base.java b/400_xowa/src/gplx/xowa/apps/site_cfgs/Xoa_site_cfg_itm__base.java index fb4672189..b57ce24fd 100644 --- a/400_xowa/src/gplx/xowa/apps/site_cfgs/Xoa_site_cfg_itm__base.java +++ b/400_xowa/src/gplx/xowa/apps/site_cfgs/Xoa_site_cfg_itm__base.java @@ -26,7 +26,7 @@ public abstract class Xoa_site_cfg_itm__base { public byte[] Key_bry() {return key_bry;} private byte[] key_bry; public byte[] Parse_json(Xow_wiki wiki, Json_itm js_itm) { Json_ary ary = Json_ary.cast(js_itm); - Bry_bfr bfr = Xoa_app_.Utl__bfr_mkr().Get_b512(); + Bry_bfr bfr = wiki.Utl__bfr_mkr().Get_b512(); int len = ary.Len(); for (int i = 0; i < len; ++i) Parse_json_ary_itm(bfr, wiki, i, ary.Get_at(i)); diff --git a/400_xowa/src/gplx/xowa/apps/site_cfgs/Xoa_site_cfg_loader__cfg.java b/400_xowa/src/gplx/xowa/apps/site_cfgs/Xoa_site_cfg_loader__cfg.java index 4bce3f324..373ec57b9 100644 --- a/400_xowa/src/gplx/xowa/apps/site_cfgs/Xoa_site_cfg_loader__cfg.java +++ b/400_xowa/src/gplx/xowa/apps/site_cfgs/Xoa_site_cfg_loader__cfg.java @@ -38,7 +38,7 @@ class Xoa_site_cfg_loader__db implements Xoa_site_cfg_loader { cfg_tbl.Upsert_bry(Grp__xowa_wm_api, db_key, data); } public static String Bld_meta(int loader_tid) { - return String_.Format("//#xowa|{0}|{1}|{2}", Xoa_app_.Version, Xoa_site_cfg_loader_.Get_key(loader_tid), DateAdp_.Now().XtoUtc().XtoStr_fmt_yyyyMMdd_HHmmss()); + return String_.Format("//#xowa|{0}|{1}|{2}", Xoa_app_.Version, Xoa_site_cfg_loader_.Get_key(loader_tid), Datetime_now.Get().XtoUtc().XtoStr_fmt_yyyyMMdd_HHmmss()); } public static final String Grp__xowa_wm_api = "xowa.site_cfg"; } diff --git a/400_xowa/src/gplx/xowa/apps/site_cfgs/Xoa_site_cfg_loader__inet.java b/400_xowa/src/gplx/xowa/apps/site_cfgs/Xoa_site_cfg_loader__inet.java index 4e338f613..dd6e18f77 100644 --- a/400_xowa/src/gplx/xowa/apps/site_cfgs/Xoa_site_cfg_loader__inet.java +++ b/400_xowa/src/gplx/xowa/apps/site_cfgs/Xoa_site_cfg_loader__inet.java @@ -21,13 +21,14 @@ import gplx.langs.jsons.*; import gplx.xowa.wikis.domains.*; public class Xoa_site_cfg_loader__inet implements Xoa_site_cfg_loader { private final Gfo_inet_conn inet_conn; private final Json_parser json_parser; - private String api_url; private boolean call_api = true; private Json_doc jdoc; + private String api_url; private boolean call_api = true; private Json_doc jdoc; + private final Bry_bfr tmp_bfr = Bry_bfr_.New(); public Xoa_site_cfg_loader__inet(Gfo_inet_conn inet_conn, Json_parser json_parser) {this.inet_conn = inet_conn; this.json_parser = json_parser;} public int Tid() {return Xoa_site_cfg_loader_.Tid__inet;} public void Load_csv__bgn(Xoa_site_cfg_mgr mgr, Xow_wiki wiki) { this.call_api = true; this.jdoc = null; - this.api_url = Bld_url(wiki.Domain_str(), mgr.Data_hash(), mgr.Itm_ary()); + this.api_url = Bld_url(tmp_bfr, wiki.Domain_str(), mgr.Data_hash(), mgr.Itm_ary()); } public String Api_url() {return api_url;} public byte[] Load_csv(Xoa_site_cfg_mgr mgr, Xow_wiki wiki, Xoa_site_cfg_itm__base itm) { @@ -41,8 +42,7 @@ public class Xoa_site_cfg_loader__inet implements Xoa_site_cfg_loader { Json_itm js_itm = jdoc.Get_grp_many(Bry__query, itm.Key_bry()); if (js_itm == null) return null; return itm.Parse_json(wiki, js_itm); } - public static String Bld_url(String domain_str, Hash_adp_bry db_hash, Xoa_site_cfg_itm__base[] itm_ary) { - Bry_bfr bfr = Xoa_app_.Utl__bfr_mkr().Get_b512(); + public static String Bld_url(Bry_bfr tmp_bfr, String domain_str, Hash_adp_bry db_hash, Xoa_site_cfg_itm__base[] itm_ary) { boolean first = true; int len = itm_ary.length; for (int i = 0; i < len; ++i) { @@ -51,10 +51,10 @@ public class Xoa_site_cfg_loader__inet implements Xoa_site_cfg_loader { if (first) first = false; else - bfr.Add_byte_pipe(); - bfr.Add(itm.Key_bry()); + tmp_bfr.Add_byte_pipe(); + tmp_bfr.Add(itm.Key_bry()); } - return first ? null : Xowm_api_mgr.Bld_api_url(domain_str, Qarg__bgn + bfr.To_str_and_rls()); + return first ? null : Xowm_api_mgr.Bld_api_url(domain_str, Qarg__bgn + tmp_bfr.To_str_and_clear()); } private static final byte[] Bry__query = Bry_.new_a7("query"); public static final String diff --git a/400_xowa/src/gplx/xowa/apps/site_cfgs/Xoa_site_cfg_mgr_tst.java b/400_xowa/src/gplx/xowa/apps/site_cfgs/Xoa_site_cfg_mgr_tst.java index d28625d38..475abe902 100644 --- a/400_xowa/src/gplx/xowa/apps/site_cfgs/Xoa_site_cfg_mgr_tst.java +++ b/400_xowa/src/gplx/xowa/apps/site_cfgs/Xoa_site_cfg_mgr_tst.java @@ -66,8 +66,9 @@ class Xoa_site_cfg_mgr_fxt { private final Xoa_site_cfg_mgr site_cfg_mgr; private final Db_cfg_tbl cfg_tbl; private final Json_printer printer = new Json_printer(); + private final Bry_bfr tmp_bfr = Bry_bfr_.New(); public Xoa_site_cfg_mgr_fxt() { - // Xoa_app_.Usr_dlg_(Xoa_app_.usr_dlg_console_()); + // Xoa_app_.Usr_dlg_(Xoa_app_.New__usr_dlg__console()); Xoa_test_.Inet__init(); this.app = Xoa_app_fxt.Make__app__edit(); this.wiki = Xoa_app_fxt.Make__wiki__edit(app); @@ -76,14 +77,14 @@ class Xoa_site_cfg_mgr_fxt { this.site_cfg_mgr = app.Site_cfg_mgr(); } public void Init() { - Tfds.Now_enabled_y_(); Tfds.Now_freeze_y_(); + Datetime_now.Manual_y_(); Datetime_now.Autoincrement_n_(); Io_mgr.Instance.InitEngine_mem(); cfg_tbl.Delete_grp(Xoa_site_cfg_loader__db.Grp__xowa_wm_api); site_cfg_mgr.Init_loader_bgn(wiki); app.Utl__inet_conn().Clear(); } public void Term() { - Tfds.Now_enabled_n_(); + Datetime_now.Manual_n_(); } public void Init_db(String key, String data) { cfg_tbl.Assert_bry(Xoa_site_cfg_loader__db.Grp__xowa_wm_api, key, Bry_.new_u8(data)); @@ -93,7 +94,7 @@ class Xoa_site_cfg_mgr_fxt { Tfds.Eq_str_lines(expd, String_.new_u8(actl)); } public void Init_inet(String data) { - String url = Xoa_site_cfg_loader__inet.Bld_url(wiki.Domain_str(), site_cfg_mgr.Data_hash(), site_cfg_mgr.Itm_ary()); + String url = Xoa_site_cfg_loader__inet.Bld_url(tmp_bfr, wiki.Domain_str(), site_cfg_mgr.Data_hash(), site_cfg_mgr.Itm_ary()); app.Utl__inet_conn().Upload_by_bytes(url, Bry_.new_u8(data)); } public void Init_fsys(String key, String data) { @@ -123,7 +124,7 @@ class Xoa_site_cfg_mgr_fxt { Tfds.Eq(expd, String_.Mid(api_url, String_.FindBwd(api_url, "=") + 1)); } public String Make_api(byte[]... sections) { - Bry_bfr bfr = Xoa_app_.Utl__bfr_mkr().Get_b512(); + Bry_bfr bfr = wiki.Utl__bfr_mkr().Get_b512(); bfr.Add_str_a7("{'query':"); int len = sections.length; bfr.Add_str_a7("{"); @@ -136,7 +137,7 @@ class Xoa_site_cfg_mgr_fxt { return printer.Print_by_bry(Bry_.new_u8(Json_doc.Make_str_by_apos(bfr.To_str_and_rls()))).To_str(); } public byte[] Make_api_interwikimap(String... ary) { - Bry_bfr bfr = Xoa_app_.Utl__bfr_mkr().Get_b512(); + Bry_bfr bfr = wiki.Utl__bfr_mkr().Get_b512(); bfr.Add_str_a7("'interwikimap':"); int len = ary.length; bfr.Add_str_a7("["); @@ -150,7 +151,7 @@ class Xoa_site_cfg_mgr_fxt { return bfr.To_bry_and_clear(); } public byte[] Make_api_extensiontags(String... ary) { - Bry_bfr bfr = Xoa_app_.Utl__bfr_mkr().Get_b512(); + Bry_bfr bfr = wiki.Utl__bfr_mkr().Get_b512(); bfr.Add_str_a7("'extensiontags':"); int len = ary.length; bfr.Add_str_a7("["); @@ -162,7 +163,7 @@ class Xoa_site_cfg_mgr_fxt { return bfr.To_bry_and_clear(); } public String Make_data(int loader_tid, int flds, String... ary) { - Bry_bfr bfr = Xoa_app_.Utl__bfr_mkr().Get_b512(); + Bry_bfr bfr = wiki.Utl__bfr_mkr().Get_b512(); if (loader_tid != Xoa_site_cfg_loader_.Tid__null) // null when constructing data for fsys bfr.Add_str_u8(Xoa_site_cfg_loader__db.Bld_meta(loader_tid)).Add_byte_nl(); int len = ary.length; diff --git a/400_xowa/src/gplx/xowa/apps/urls/Xoa_url_encoder.java b/400_xowa/src/gplx/xowa/apps/urls/Xoa_url_encoder.java index 4ed8879fb..b0dbb7be5 100644 --- a/400_xowa/src/gplx/xowa/apps/urls/Xoa_url_encoder.java +++ b/400_xowa/src/gplx/xowa/apps/urls/Xoa_url_encoder.java @@ -17,26 +17,24 @@ along with this program. If not, see . */ package gplx.xowa.apps.urls; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; public class Xoa_url_encoder { + private final Bry_bfr bfr = Bry_bfr_.New(); public byte[] Encode(byte[] src) { int src_len = src.length; for (int i = 0; i < src_len; i++) { byte b = src[i]; switch (b) { - case Byte_ascii.Space: bb.Add(Bry_underline); break; - case Byte_ascii.Amp: bb.Add(Bry_amp); break; - case Byte_ascii.Apos: bb.Add(Bry_apos); break; - case Byte_ascii.Eq: bb.Add(Bry_eq); break; - case Byte_ascii.Plus: bb.Add(Bry_plus); break; - default: bb.Add_byte(b); break; - // FUTURE: html_entities, etc: + case Byte_ascii.Space: bfr.Add(Bry__underline); break; + case Byte_ascii.Amp: bfr.Add(Bry__amp); break; + case Byte_ascii.Apos: bfr.Add(Bry__apos); break; + case Byte_ascii.Eq: bfr.Add(Bry__eq); break; + case Byte_ascii.Plus: bfr.Add(Bry__plus); break; + default: bfr.Add_byte(b); break; } } - return bb.To_bry_and_clear(); + return bfr.To_bry_and_clear(); } - private static final byte[] Bry_amp = Bry_.new_a7("%26"), Bry_eq = Bry_.new_a7("%3D") - , Bry_plus = Bry_.new_a7("%2B"), Bry_apos = Bry_.new_a7("%27") - , Bry_underline = new byte[] {Byte_ascii.Underline} - ; - Bry_bfr bb = Bry_bfr_.New(); - public static final Xoa_url_encoder Instance = new Xoa_url_encoder(); Xoa_url_encoder() {} + private static final byte[] Bry__amp = Bry_.new_a7("%26"), Bry__eq = Bry_.new_a7("%3D") + , Bry__plus = Bry_.new_a7("%2B"), Bry__apos = Bry_.new_a7("%27") + , Bry__underline = new byte[] {Byte_ascii.Underline} + ; } diff --git a/400_xowa/src/gplx/xowa/bldrs/Db_mgr_fxt.java b/400_xowa/src/gplx/xowa/bldrs/Db_mgr_fxt.java index 329c56a70..10c5d3b86 100644 --- a/400_xowa/src/gplx/xowa/bldrs/Db_mgr_fxt.java +++ b/400_xowa/src/gplx/xowa/bldrs/Db_mgr_fxt.java @@ -39,7 +39,7 @@ public class Db_mgr_fxt { public void Init_page_insert(Int_obj_ref page_id_next, int ns_id, String[] ttls) { Xowe_wiki wiki = this.Wiki(); int len = ttls.length; - DateAdp modified_on = Tfds.Now_time0_add_min(0); + DateAdp modified_on = Datetime_now.Dflt_add_min_(0); Xowd_page_tbl tbl_page = wiki.Db_mgr_as_sql().Core_data_mgr().Tbl__page(); tbl_page.Insert_bgn(); for (int i = 0; i < len; i++) { diff --git a/400_xowa/src/gplx/xowa/bldrs/Xob_cmd_mgr.java b/400_xowa/src/gplx/xowa/bldrs/Xob_cmd_mgr.java index 6d6c426c8..c96ad3ad9 100644 --- a/400_xowa/src/gplx/xowa/bldrs/Xob_cmd_mgr.java +++ b/400_xowa/src/gplx/xowa/bldrs/Xob_cmd_mgr.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.bldrs; import gplx.*; import gplx.xowa.*; import gplx.core.primitives.*; -import gplx.xowa.wikis.*; import gplx.xowa.xtns.wdatas.imports.*; +import gplx.xowa.wikis.*; import gplx.xowa.xtns.wbases.imports.*; import gplx.xowa.bldrs.wkrs.*; import gplx.xowa.bldrs.cmds.texts.*; import gplx.xowa.bldrs.cmds.texts.sqls.*; import gplx.xowa.bldrs.cmds.texts.tdbs.*; import gplx.xowa.addons.bldrs.files.*; import gplx.xowa.bldrs.cmds.ctgs.*; import gplx.xowa.bldrs.cmds.utils.*; import gplx.xowa.bldrs.cmds.diffs.*; import gplx.xowa.files.origs.*; import gplx.xowa.htmls.core.bldrs.*; diff --git a/400_xowa/src/gplx/xowa/bldrs/Xob_db_file.java b/400_xowa/src/gplx/xowa/bldrs/Xob_db_file.java index b805696e8..6f66d49a7 100644 --- a/400_xowa/src/gplx/xowa/bldrs/Xob_db_file.java +++ b/400_xowa/src/gplx/xowa/bldrs/Xob_db_file.java @@ -34,7 +34,7 @@ public class Xob_db_file { public static Xob_db_file New__page_link(Xow_wiki wiki) {return New(wiki.Fsys_mgr().Root_dir(), Name__page_link);} public static Xob_db_file New__page_file_map(Xow_wiki wiki) {return New(wiki.Fsys_mgr().Root_dir(), wiki.Domain_str() + "-file-page_map.xowa");} public static Xob_db_file New__deletion_db(Xow_wiki wiki) { - String name = String_.Format("{0}-file-core-deletion_db-{1}.xowa", wiki.Domain_str(), DateAdp_.Now().XtoStr_fmt("yyyy.MM")); + String name = String_.Format("{0}-file-core-deletion_db-{1}.xowa", wiki.Domain_str(), Datetime_now.Get().XtoStr_fmt("yyyy.MM")); return New(wiki.Fsys_mgr().Root_dir(), name); } public static Xob_db_file New(Io_url dir, String name) { diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/Xob_dump_mgr_base.java b/400_xowa/src/gplx/xowa/bldrs/cmds/Xob_dump_mgr_base.java index cf376099d..e43d6ac92 100644 --- a/400_xowa/src/gplx/xowa/bldrs/cmds/Xob_dump_mgr_base.java +++ b/400_xowa/src/gplx/xowa/bldrs/cmds/Xob_dump_mgr_base.java @@ -204,6 +204,7 @@ public abstract class Xob_dump_mgr_base extends Xob_itm_basic_base implements Xo else if (ctx.Match(k, Invk_exec_count_max_)) exec_count_max = m.ReadInt("v"); else if (ctx.Match(k, Invk_exit_now_)) exit_now = m.ReadYn("v"); else if (ctx.Match(k, Invk_exit_after_commit_)) exit_after_commit = m.ReadYn("v"); + else if (ctx.Match(k, Invk__manual_now_)) Datetime_now.Manual_and_freeze_(m.ReadDate("v")); else return Gfo_invk_.Rv_unhandled; return this; } @@ -218,6 +219,7 @@ public abstract class Xob_dump_mgr_base extends Xob_itm_basic_base implements Xo , Invk_load_tmpls_ = "load_tmpls_" , Invk_poll_mgr = "poll_mgr", Invk_reset_db_ = "reset_db_" , Invk_exec_count_max_ = "exec_count_max_", Invk_exit_now_ = "exit_now_", Invk_exit_after_commit_ = "exit_after_commit_" + , Invk__manual_now_ = "manual_now_" ; } class Xob_dump_mgr_base_ { diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/Xob_init_base.java b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/Xob_init_base.java index 86d3e9b0d..19d670c49 100644 --- a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/Xob_init_base.java +++ b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/Xob_init_base.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.xowa.bldrs.cmds.texts; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*; -import gplx.xowa.xtns.wdatas.*; +import gplx.xowa.xtns.wbases.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wkrs.*; import gplx.xowa.bldrs.xmls.*; import gplx.xowa.bldrs.cmds.texts.xmls.*; import gplx.xowa.bldrs.css.*; import gplx.xowa.wikis.domains.*; public abstract class Xob_init_base implements Xob_cmd, Gfo_invk { diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/Xob_term_base.java b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/Xob_term_base.java index f4ed47cc3..4ba781762 100644 --- a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/Xob_term_base.java +++ b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/Xob_term_base.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.xowa.bldrs.cmds.texts; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*; -import gplx.xowa.bldrs.wkrs.*; import gplx.xowa.bldrs.xmls.*; import gplx.xowa.xtns.wdatas.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.wikis.dbs.*; +import gplx.xowa.bldrs.wkrs.*; import gplx.xowa.bldrs.xmls.*; import gplx.xowa.xtns.wbases.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.wikis.dbs.*; public abstract class Xob_term_base implements Xob_cmd, Gfo_invk { public Xob_term_base Ctor(Xob_bldr bldr, Xowe_wiki wiki) {this.wiki = wiki; return this;} private Xowe_wiki wiki; public abstract String Cmd_key(); diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/sqls/Xob_init_cmd.java b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/sqls/Xob_init_cmd.java index ea62a272e..7e6cedd1a 100644 --- a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/sqls/Xob_init_cmd.java +++ b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/sqls/Xob_init_cmd.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.bldrs.cmds.texts.sqls; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*; import gplx.xowa.bldrs.cmds.texts.*; import gplx.xowa.bldrs.*; import gplx.xowa.apps.apis.xowa.bldrs.imports.*; -import gplx.xowa.xtns.wdatas.imports.*; +import gplx.xowa.xtns.wbases.imports.*; public class Xob_init_cmd extends Xob_init_base { public Xob_init_cmd(Xob_bldr bldr, Xowe_wiki wiki) {this.Ctor(bldr, wiki);} @Override public String Cmd_key() {return Xob_cmd_keys.Key_text_init;} diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/sqls/Xob_page_cmd.java b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/sqls/Xob_page_cmd.java index 547443ed8..bef580c39 100644 --- a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/sqls/Xob_page_cmd.java +++ b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/sqls/Xob_page_cmd.java @@ -35,7 +35,7 @@ public class Xob_page_cmd extends Xob_itm_basic_base implements Xob_page_wkr, Gf this.redirect_mgr = wiki.Redirect_mgr(); this.db_mgr = wiki.Db_mgr_as_sql().Core_data_mgr(); this.page_core_tbl = db_mgr.Tbl__page(); - this.text_zip_mgr = Xoa_app_.Utl__zip_mgr(); text_zip_tid = import_cfg.Zip_tid_text(); + this.text_zip_mgr = wiki.Utl__zip_mgr(); text_zip_tid = import_cfg.Zip_tid_text(); this.ns_to_db_mgr = new Xob_ns_to_db_mgr(new Xob_ns_to_db_wkr__text(), db_mgr, import_cfg.Text_db_max()); this.dg_match_mgr = app.Api_root().Bldr().Wiki().Filter().Dansguardian().New_mgr(wiki.Domain_str(), wiki.Fsys_mgr().Root_dir()); if (dg_match_mgr != null) redirect_id_enabled = true; // always enable redirect_id if dg_match_mgr enabled; DATE:2016-01-04 diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/tdbs/Xob_init_tdb.java b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/tdbs/Xob_init_tdb.java index 17b8b7162..7360961b0 100644 --- a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/tdbs/Xob_init_tdb.java +++ b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/tdbs/Xob_init_tdb.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.xowa.bldrs.cmds.texts.tdbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*; import gplx.xowa.bldrs.cmds.texts.*; -import gplx.xowa.xtns.wdatas.imports.*; +import gplx.xowa.xtns.wbases.imports.*; public class Xob_init_tdb extends Xob_init_base { public Xob_init_tdb(Xob_bldr bldr, Xowe_wiki wiki) {this.Ctor(bldr, wiki);} @Override public String Cmd_key() {return Xob_cmd_keys.Key_tdb_text_init;} 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 be263fab3..557b361e1 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 @@ -39,13 +39,13 @@ public class Xob_download_cmd extends Xob_cmd__base implements Xob_cmd { if (dump_trg_bin == null && unzip) dump_trg_bin = dump_trg_zip.GenNewNameAndExt(dump_trg_zip.NameOnly()); // convert a.sql.gz -> a.sql // download - usr_dlg.Note_many("", "", "downloading file: now=~{0} src=~{1} trg=~{2}", DateAdp_.Now().XtoStr_fmt_yyyyMMdd_HHmmss(), dump_src, dump_trg_zip.OwnerDir()); + usr_dlg.Note_many("", "", "downloading file: now=~{0} src=~{1} trg=~{2}", Datetime_now.Get().XtoStr_fmt_yyyyMMdd_HHmmss(), dump_src, dump_trg_zip.OwnerDir()); IoEngine_xrg_downloadFil download_wkr = app.Wmf_mgr().Download_wkr().Download_xrg(); download_wkr.Src_last_modified_query_(false).Init(dump_src, dump_trg_zip); if (!download_wkr.Exec()) usr_dlg.Warn_many("", "", "download failed: src=~{0} trg=~{1} err=~{2}", dump_src, dump_trg_zip.Raw(), Err_.Message_gplx_full(download_wkr.Rslt_err())); if (unzip) { // parsing unzipped file is faster, but takes up more storage space - usr_dlg.Note_many("", "", "unzipping file: now=~{0} trg=~{1}", DateAdp_.Now().XtoStr_fmt_yyyyMMdd_HHmmss(), dump_trg_bin.Raw()); + usr_dlg.Note_many("", "", "unzipping file: now=~{0} trg=~{1}", Datetime_now.Get().XtoStr_fmt_yyyyMMdd_HHmmss(), dump_trg_bin.Raw()); Xob_unzip_wkr unzip_wkr = new Xob_unzip_wkr().Init(app).Process_run_mode_(Process_adp.Run_mode_sync_block); unzip_wkr.Decompress(dump_trg_zip, dump_trg_bin); } diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/utils/Xob_site_meta_cmd.java b/400_xowa/src/gplx/xowa/bldrs/cmds/utils/Xob_site_meta_cmd.java index 717974aa5..f3a9084d3 100644 --- a/400_xowa/src/gplx/xowa/bldrs/cmds/utils/Xob_site_meta_cmd.java +++ b/400_xowa/src/gplx/xowa/bldrs/cmds/utils/Xob_site_meta_cmd.java @@ -30,7 +30,7 @@ public class Xob_site_meta_cmd implements Xob_cmd { Xoa_app app = bldr.App(); if (wikis == null) wikis = Xow_domain_regy.All; if (db_url == null) db_url = app.Fsys_mgr().Cfg_site_meta_fil(); - if (cutoff_time == null) cutoff_time = DateAdp_.Now().Add_day(-1); + if (cutoff_time == null) cutoff_time = Datetime_now.Get().Add_day(-1); Load_all(app, db_url, wikis, cutoff_time); } private void Load_all(Xoa_app app, Io_url db_url, String[] reqd_ary, DateAdp cutoff) { @@ -53,7 +53,7 @@ public class Xob_site_meta_cmd implements Xob_cmd { reqd_len = reqd_hash.Count(); for (int i = 0; i < reqd_len; ++i) { String domain_str = (String)reqd_hash.Get_at(i); - DateAdp json_date = DateAdp_.Now(); + DateAdp json_date = Datetime_now.Get(); byte[] json_text = null; for (int j = 0; j < 5; ++j) { json_text = gplx.xowa.bldrs.wms.Xowm_api_mgr.Call_by_qarg(usr_dlg, inet_conn, domain_str, Xoa_site_cfg_loader__inet.Qarg__all); diff --git a/400_xowa/src/gplx/xowa/bldrs/filters/dansguardians/Dg_parser_tst.java b/400_xowa/src/gplx/xowa/bldrs/filters/dansguardians/Dg_parser_tst.java index 8f9a99339..5fd260232 100644 --- a/400_xowa/src/gplx/xowa/bldrs/filters/dansguardians/Dg_parser_tst.java +++ b/400_xowa/src/gplx/xowa/bldrs/filters/dansguardians/Dg_parser_tst.java @@ -34,7 +34,7 @@ public class Dg_parser_tst { @Test public void Invalid_score() {fxt.Test_parse_line("<1a>", fxt.Make_line(Dg_rule.Score_banned, "a"));} // @Test public void Parse_dir() { // Dg_parser parser = new Dg_parser(); -// Gfo_usr_dlg_.I = Xoa_app_.usr_dlg_console_(); +// Gfo_usr_dlg_.I = Xoa_app_.New__usr_dlg__console(); // parser.Parse_dir(Io_url_.new_dir_("C:\\xowa\\bin\\any\\xowa\\bldr\\filters\simple.wikipedia.org\\Dansguardian\\\\")); // } } diff --git a/400_xowa/src/gplx/xowa/bldrs/infos/Xob_info_session.java b/400_xowa/src/gplx/xowa/bldrs/infos/Xob_info_session.java index 5f6832630..7eee99622 100644 --- a/400_xowa/src/gplx/xowa/bldrs/infos/Xob_info_session.java +++ b/400_xowa/src/gplx/xowa/bldrs/infos/Xob_info_session.java @@ -56,6 +56,6 @@ public class Xob_info_session { , Cfg_key__time = "time" // EX: 20150102 030405 , Cfg_key__guid = "guid" // EX: 00000000-0000-0000-0000-000000000000 ; - public static Xob_info_session new_(String user, String wiki_domain, String dump_name) {return new Xob_info_session(user, Xoa_app_.Version, wiki_domain, dump_name, DateAdp_.Now(), Guid_adp_.New());} + public static Xob_info_session new_(String user, String wiki_domain, String dump_name) {return new Xob_info_session(user, Xoa_app_.Version, wiki_domain, dump_name, Datetime_now.Get(), Guid_adp_.New());} public static final Xob_info_session Test = new_("anonymous", "en.wikipedia.org", "enwiki-latest-pages-articles"); } diff --git a/400_xowa/src/gplx/xowa/bldrs/installs/Xoi_cmd_wiki_tst.java b/400_xowa/src/gplx/xowa/bldrs/installs/Xoi_cmd_wiki_tst.java index 79102e11e..447704bae 100644 --- a/400_xowa/src/gplx/xowa/bldrs/installs/Xoi_cmd_wiki_tst.java +++ b/400_xowa/src/gplx/xowa/bldrs/installs/Xoi_cmd_wiki_tst.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.xowa.bldrs.installs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import org.junit.*; import gplx.core.consoles.*; -import gplx.core.brys.args.*; import gplx.core.threads.*; import gplx.xowa.bldrs.setups.maints.*; import gplx.xowa.xtns.wdatas.imports.*; +import gplx.core.brys.args.*; import gplx.core.threads.*; import gplx.xowa.bldrs.setups.maints.*; import gplx.xowa.xtns.wbases.imports.*; import gplx.xowa.wikis.domains.*; import gplx.xowa.bldrs.wms.*; import gplx.xowa.bldrs.wms.dumps.*; public class Xoi_cmd_wiki_tst { diff --git a/400_xowa/src/gplx/xowa/drds/pages/Xod_page_mgr.java b/400_xowa/src/gplx/xowa/drds/pages/Xod_page_mgr.java index 10fbd7a65..de8dea6f0 100644 --- a/400_xowa/src/gplx/xowa/drds/pages/Xod_page_mgr.java +++ b/400_xowa/src/gplx/xowa/drds/pages/Xod_page_mgr.java @@ -62,11 +62,11 @@ public class Xod_page_mgr { catch (Exception e) {Gfo_log_.Instance.Warn("failed to generate special page", "url", url.To_str(), "err", Err_.Message_gplx_log(e)); return rv;} // handle redirects; EX: Special:XowaWikiInfo - Xopg_redirect_itm redirect_itm = page.Redirect().Itms__get_at_nth_or_null(); + Xopg_redirect_itm redirect_itm = page.Redirect_trail().Itms__get_at_nth_or_null(); if (redirect_itm != null) return Get_page(wiki, redirect_itm.Url()); - rv.Init(-1, -1, String_.new_u8(ttl.Page_txt()), String_.new_u8(ttl.Page_db()), null, null, DateAdp_.Now().XtoStr_fmt_iso_8561(), false, false, false, 0, "", "", ""); + rv.Init(-1, -1, String_.new_u8(ttl.Page_txt()), String_.new_u8(ttl.Page_db()), null, null, Datetime_now.Get().XtoStr_fmt_iso_8561(), false, false, false, 0, "", "", ""); rv.Init_by_hpg(page); Xoh_section_itm section = new Xoh_section_itm(1, 1, Bry_.Empty, Bry_.Empty); section.Content_(page.Html_data().Custom_body()); diff --git a/400_xowa/src/gplx/xowa/files/Xof_ext_.java b/400_xowa/src/gplx/xowa/files/Xof_ext_.java index 3ef3a771c..8cbafe284 100644 --- a/400_xowa/src/gplx/xowa/files/Xof_ext_.java +++ b/400_xowa/src/gplx/xowa/files/Xof_ext_.java @@ -24,7 +24,7 @@ public class Xof_ext_ { , Id_mid = 10, Id_ogg = 11, Id_oga = 12, Id_ogv = 13, Id_webm = 14 , Id_flac = 15, Id_bmp = 16, Id_xcf = 17, Id_wav = 18; public static final int Id__max = 19; - public static final byte[] + public static final byte[] Bry_png = Bry_.new_a7("png"), Bry_jpg = Bry_.new_a7("jpg"), Bry_jpeg = Bry_.new_a7("jpeg") , Bry_gif = Bry_.new_a7("gif"), Bry_tif = Bry_.new_a7("tif"), Bry_tiff = Bry_.new_a7("tiff") , Bry_svg = Bry_.new_a7("svg"), Bry_djvu = Bry_.new_a7("djvu"), Bry_pdf = Bry_.new_a7("pdf") @@ -32,7 +32,7 @@ public class Xof_ext_ { , Bry_ogv = Bry_.new_a7("ogv"), Bry_webm = Bry_.new_a7("webm"), Bry_flac = Bry_.new_a7("flac") , Bry_bmp = Bry_.new_a7("bmp"), Bry_xcf = Bry_.new_a7("xcf"), Bry_wav = Bry_.new_a7("wav") ; - public static final byte[][] Bry__ary = new byte[][] + public static final byte[][] Bry__ary = new byte[][] { Bry_.Empty, Bry_png, Bry_jpg, Bry_jpeg , Bry_gif, Bry_tif, Bry_tiff , Bry_svg, Bry_djvu, Bry_pdf @@ -40,7 +40,7 @@ public class Xof_ext_ { , Bry_ogv, Bry_webm, Bry_flac , Bry_bmp, Bry_xcf, Bry_wav }; - public static final byte[][] Mime_type__ary = new byte[][] + public static final byte[][] Mime_type__ary = new byte[][] { Bry_.new_a7("application/octet-stream"), Bry_.new_a7("image/png"), Bry_.new_a7("image/jpg"), Bry_.new_a7("image/jpeg") , Bry_.new_a7("image/gif"), Bry_.new_a7("image/tiff"), Bry_.new_a7("image/tiff") , Bry_.new_a7("image/svg+xml"), Bry_.new_a7("image/x.djvu"), Bry_.new_a7("application/pdf") @@ -48,7 +48,7 @@ public class Xof_ext_ { , Bry_.new_a7("video/ogg"), Bry_.new_a7("video/webm"), Bry_.new_a7("audio/flac") , Bry_.new_a7("image/bmp"), Bry_.new_a7("image/xcf"), Bry_.new_a7("audio/x-wav") }; - private static final Hash_adp id_hash = id_hash_new_(); + private static final Hash_adp id_hash = id_hash_new_(); private static Hash_adp id_hash_new_() { Hash_adp rv = Hash_adp_bry.cs(); id_hash_new_(rv, Bry_png, Id_png); id_hash_new_(rv, Bry_jpg, Id_jpg); id_hash_new_(rv, Bry_jpeg, Id_jpeg); @@ -59,9 +59,9 @@ public class Xof_ext_ { id_hash_new_(rv, Bry_bmp, Id_bmp); id_hash_new_(rv, Bry_xcf, Id_xcf); id_hash_new_(rv, Bry_wav, Id_wav); return rv; } - private static void id_hash_new_(Hash_adp hash, byte[] key, int val) {hash.Add(key, Int_obj_val.new_(val));} + private static void id_hash_new_(Hash_adp hash, byte[] key, int val) {hash.Add(key, new Int_obj_val(val));} - private static final Hash_adp_bry ext_hash = Hash_adp_bry.ci_a7() + private static final Hash_adp_bry ext_hash = Hash_adp_bry.ci_a7() .Add_bry_bry(Bry_png).Add_bry_bry(Bry_jpg).Add_bry_bry(Bry_jpeg) .Add_bry_bry(Bry_gif).Add_bry_bry(Bry_tif).Add_bry_bry(Bry_tiff) .Add_bry_bry(Bry_svg).Add_bry_bry(Bry_djvu).Add_bry_bry(Bry_pdf) @@ -69,7 +69,7 @@ public class Xof_ext_ { .Add_bry_bry(Bry_ogv).Add_bry_bry(Bry_webm).Add_bry_bry(Bry_flac) .Add_bry_bry(Bry_bmp).Add_bry_bry(Bry_xcf).Add_bry_bry(Bry_wav) ; - private static final Xof_ext[] Ary = new Xof_ext[Id__max]; + private static final Xof_ext[] Ary = new Xof_ext[Id__max]; public static byte[] Get_ext_by_id_(int id) { if (id < 0 || id >= Id__max) throw Err_.new_wo_type("index out of bounds", "id", id); diff --git a/400_xowa/src/gplx/xowa/files/Xof_mime_minor_.java b/400_xowa/src/gplx/xowa/files/Xof_mime_minor_.java index 88f58b521..a8e93c976 100644 --- a/400_xowa/src/gplx/xowa/files/Xof_mime_minor_.java +++ b/400_xowa/src/gplx/xowa/files/Xof_mime_minor_.java @@ -23,11 +23,11 @@ public class Xof_mime_minor_ { int id = id_obj == null ? Xof_ext_.Id_unknown : id_obj.Val(); return Xof_ext_.new_by_id_(id); } - private static final byte[] + private static final byte[] Mime_svg = Bry_.new_a7("svg+xml"), Mime_djvu = Bry_.new_a7("vnd.djvu"), Mime_midi = Bry_.new_a7("midi") , Mime_xcf = Bry_.new_a7("x-xcf"), Mime_flac = Bry_.new_a7("x-flac") , Mime_bmp = Bry_.new_a7("x-bmp"), Mime_bmp_2 = Bry_.new_a7("x-ms-bmp"); - private static final Hash_adp mime_hash = mime_hash_(); + private static final Hash_adp mime_hash = mime_hash_(); private static Hash_adp mime_hash_() { Hash_adp rv = Hash_adp_bry.cs(); mime_hash_itm_(rv, Xof_ext_.Bry_png , Xof_ext_.Id_png); @@ -51,5 +51,5 @@ public class Xof_mime_minor_ { mime_hash_itm_(rv, Xof_ext_.Bry_wav , Xof_ext_.Id_wav); return rv; } - private static void mime_hash_itm_(Hash_adp hash, byte[] key, int val) {hash.Add(key, Int_obj_val.new_(val));} + private static void mime_hash_itm_(Hash_adp hash, byte[] key, int val) {hash.Add(key, new Int_obj_val(val));} } diff --git a/400_xowa/src/gplx/xowa/files/caches/Xofc_fil_itm.java b/400_xowa/src/gplx/xowa/files/caches/Xofc_fil_itm.java index 4895238ac..91b759f87 100644 --- a/400_xowa/src/gplx/xowa/files/caches/Xofc_fil_itm.java +++ b/400_xowa/src/gplx/xowa/files/caches/Xofc_fil_itm.java @@ -25,14 +25,14 @@ public class Xofc_fil_itm implements CompareAble { } public String Key; public int Uid() {return uid;} public void Uid_(int v) {uid = v;} private int uid; - public int Dir_id() {return dir_id;} private final int dir_id; - public byte[] Name() {return name;} private final byte[] name; - public boolean Is_orig() {return is_orig;} private final boolean is_orig; - public int W() {return w;} private final int w; - public int H() {return h;} private final int h; - public double Time() {return time;} private final double time; - public int Page() {return page;} private final int page; - public Xof_ext Ext() {return ext;} private final Xof_ext ext; + public int Dir_id() {return dir_id;} private final int dir_id; + public byte[] Name() {return name;} private final byte[] name; + public boolean Is_orig() {return is_orig;} private final boolean is_orig; + public int W() {return w;} private final int w; + public int H() {return h;} private final int h; + public double Time() {return time;} private final double time; + public int Page() {return page;} private final int page; + public Xof_ext Ext() {return ext;} private final Xof_ext ext; public long Size() {return size;} private long size; public void Size_(long v) { this.size = v; @@ -40,7 +40,7 @@ public class Xofc_fil_itm implements CompareAble { } public long Cache_time() {return cache_time;} private long cache_time; public Xofc_fil_itm Cache_time_now_() { - this.cache_time = DateAdp_.Now().XtoUtc().Timestamp_unix(); + this.cache_time = Datetime_now.Get().XtoUtc().Timestamp_unix(); cmd_mode = Db_cmd_mode.To_update(cmd_mode); return this; } @@ -69,5 +69,5 @@ public class Xofc_fil_itm implements CompareAble { return bfr.To_bry_and_clear(); } public int compareTo(Object obj) {Xofc_fil_itm comp = (Xofc_fil_itm)obj; return -Long_.Compare(cache_time, comp.cache_time);} // - for DESC sort - public static final Xofc_fil_itm Null = null; + public static final Xofc_fil_itm Null = null; } diff --git a/400_xowa/src/gplx/xowa/files/caches/Xou_cache_itm.java b/400_xowa/src/gplx/xowa/files/caches/Xou_cache_itm.java index 1ac0dfd6e..b4782fa8d 100644 --- a/400_xowa/src/gplx/xowa/files/caches/Xou_cache_itm.java +++ b/400_xowa/src/gplx/xowa/files/caches/Xou_cache_itm.java @@ -35,41 +35,41 @@ public class Xou_cache_itm { this.lnki_key = Key_gen(lnki_key_bfr, lnki_wiki_abrv, lnki_ttl, lnki_type, lnki_upright, lnki_w, lnki_h, lnki_time, lnki_page, user_thumb_w); } public byte Db_state() {return db_state;} public void Db_state_(byte v) {db_state = v;} private byte db_state; - public byte[] Lnki_wiki_abrv() {return lnki_wiki_abrv;} private final byte[] lnki_wiki_abrv; // differentiate commonwiki rows inserted by one wiki vs another - public byte[] Lnki_key() {return lnki_key;} private final byte[] lnki_key; // unique key by lnki props - public byte[] Lnki_ttl() {return lnki_ttl;} private final byte[] lnki_ttl; - public int Lnki_type() {return lnki_type;} private final int lnki_type; - public double Lnki_upright() {return lnki_upright;} private final double lnki_upright; - public int Lnki_w() {return lnki_w;} private final int lnki_w; - public int Lnki_h() {return lnki_h;} private final int lnki_h; - public double Lnki_time() {return lnki_time;} private final double lnki_time; - public int Lnki_page() {return lnki_page;} private final int lnki_page; - public int User_thumb_w() {return user_thumb_w;} private final int user_thumb_w; - public int Orig_repo_id() {return orig_repo_id;} private final int orig_repo_id; - public byte[] Orig_ttl() {return orig_ttl;} private final byte[] orig_ttl; + public byte[] Lnki_wiki_abrv() {return lnki_wiki_abrv;} private final byte[] lnki_wiki_abrv; // differentiate commonwiki rows inserted by one wiki vs another + public byte[] Lnki_key() {return lnki_key;} private final byte[] lnki_key; // unique key by lnki props + public byte[] Lnki_ttl() {return lnki_ttl;} private final byte[] lnki_ttl; + public int Lnki_type() {return lnki_type;} private final int lnki_type; + public double Lnki_upright() {return lnki_upright;} private final double lnki_upright; + public int Lnki_w() {return lnki_w;} private final int lnki_w; + public int Lnki_h() {return lnki_h;} private final int lnki_h; + public double Lnki_time() {return lnki_time;} private final double lnki_time; + public int Lnki_page() {return lnki_page;} private final int lnki_page; + public int User_thumb_w() {return user_thumb_w;} private final int user_thumb_w; + public int Orig_repo_id() {return orig_repo_id;} private final int orig_repo_id; + public byte[] Orig_ttl() {return orig_ttl;} private final byte[] orig_ttl; public byte[] Orig_ttl_md5() {if (orig_ttl_md5 == null) orig_ttl_md5 = Xof_file_wkr_.Md5_fast(orig_ttl); return orig_ttl_md5;} private byte[] orig_ttl_md5; - public int Orig_ext_id() {return orig_ext_id;} private final int orig_ext_id; + public int Orig_ext_id() {return orig_ext_id;} private final int orig_ext_id; public Xof_ext Orig_ext_itm() {if (orig_ext_itm == null) orig_ext_itm = Xof_ext_.new_by_id_(orig_ext_id); return orig_ext_itm;} private Xof_ext orig_ext_itm; - public int Orig_w() {return orig_w;} private final int orig_w; - public int Orig_h() {return orig_h;} private final int orig_h; - public int Html_w() {return html_w;} private final int html_w; - public int Html_h() {return html_h;} private final int html_h; - public double Html_time() {return html_time;} private final double html_time; - public int Html_page() {return html_page;} private final int html_page; - public boolean File_is_orig() {return file_is_orig;} private final boolean file_is_orig; + public int Orig_w() {return orig_w;} private final int orig_w; + public int Orig_h() {return orig_h;} private final int orig_h; + public int Html_w() {return html_w;} private final int html_w; + public int Html_h() {return html_h;} private final int html_h; + public double Html_time() {return html_time;} private final double html_time; + public int Html_page() {return html_page;} private final int html_page; + public boolean File_is_orig() {return file_is_orig;} private final boolean file_is_orig; public int File_w() {return file_w;} private int file_w; - public double File_time() {return file_time;} private final double file_time; - public int File_page() {return file_page;} private final int file_page; - public long File_size() {return file_size;} private final long file_size; + public double File_time() {return file_time;} private final double file_time; + public int File_page() {return file_page;} private final int file_page; + public long File_size() {return file_size;} private final long file_size; public Io_url File_url() {return file_url;} public void File_url_(Io_url v) {file_url = v;} private Io_url file_url; public int View_count() {return view_count;} private int view_count; public long View_date() {return view_date;} private long view_date; public void Update_view_stats() { ++view_count; - view_date = DateAdp_.Now().Timestamp_unix(); + view_date = Datetime_now.Get().Timestamp_unix(); db_state = Db_cmd_mode.To_update(db_state); } - public static final Xou_cache_itm Null = null; + public static final Xou_cache_itm Null = null; public static byte[] Key_gen(Bry_bfr key_bfr, byte[] lnki_wiki_abrv, byte[] ttl, int type, double upright, int w, int h, double time, int page, int user_thumb_w) { key_bfr.Add(lnki_wiki_abrv).Add_byte_pipe() .Add(ttl).Add_byte_pipe().Add_int_variable(type).Add_byte_pipe().Add_double(upright).Add_byte_pipe() @@ -85,5 +85,5 @@ class Xof_cache_mgr_sorter implements gplx.core.lists.ComparerAble { Xou_cache_itm rhs = (Xou_cache_itm)rhsObj; return -Long_.Compare(lhs.View_date(), rhs.View_date()); // - for DESC sort } - public static final Xof_cache_mgr_sorter Instance = new Xof_cache_mgr_sorter(); Xof_cache_mgr_sorter() {} + public static final Xof_cache_mgr_sorter Instance = new Xof_cache_mgr_sorter(); Xof_cache_mgr_sorter() {} } diff --git a/400_xowa/src/gplx/xowa/files/caches/Xou_cache_mgr.java b/400_xowa/src/gplx/xowa/files/caches/Xou_cache_mgr.java index 1961db46a..74b54ff02 100644 --- a/400_xowa/src/gplx/xowa/files/caches/Xou_cache_mgr.java +++ b/400_xowa/src/gplx/xowa/files/caches/Xou_cache_mgr.java @@ -72,7 +72,7 @@ public class Xou_cache_mgr { , fsdb.Orig_repo_id(), fsdb.Orig_ttl(), fsdb.Orig_ext().Id(), fsdb.Orig_w(), fsdb.Orig_h() , fsdb.Html_w(), fsdb.Html_h(), fsdb.Lnki_time(), fsdb.Lnki_page() , fsdb.File_is_orig(), fsdb.File_w(), fsdb.Lnki_time(), fsdb.Lnki_page(), fsdb.File_size() - , 1, DateAdp_.Now().Timestamp_unix()) + , 1, Datetime_now.Get().Timestamp_unix()) ; hash.Add(itm.Lnki_key(), itm); fsys_size_cur += itm.File_size(); diff --git a/400_xowa/src/gplx/xowa/files/caches/Xou_cache_mgr_tst.java b/400_xowa/src/gplx/xowa/files/caches/Xou_cache_mgr_tst.java index bd26684f8..99f6ff0df 100644 --- a/400_xowa/src/gplx/xowa/files/caches/Xou_cache_mgr_tst.java +++ b/400_xowa/src/gplx/xowa/files/caches/Xou_cache_mgr_tst.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.xowa.files.caches; import gplx.*; import gplx.xowa.*; import gplx.xowa.files.*; import org.junit.*; import gplx.dbs.*; import gplx.xowa.files.fsdb.*; import gplx.xowa.files.repos.*; public class Xou_cache_mgr_tst { - @Before public void init() {fxt.Clear();} private final Xou_cache_mgr_fxt fxt = new Xou_cache_mgr_fxt(); + @Before public void init() {fxt.Clear();} private final Xou_cache_mgr_fxt fxt = new Xou_cache_mgr_fxt(); @Test public void Update() { Xof_fsdb_itm itm_1 = fxt.Make_itm("en.w", "1.png", 2); fxt.Exec_update(itm_1); @@ -60,7 +60,7 @@ public class Xou_cache_mgr_tst { class Xou_cache_mgr_fxt { private Xou_cache_mgr mgr; public void Clear() { - Tfds.Now_set(DateAdp_.new_(1970, 1, 1, 0, 0, 0, 0)); + Datetime_now.Manual_(DateAdp_.new_(1970, 1, 1, 0, 0, 0, 0)); Io_mgr.Instance.InitEngine_mem(); Db_conn_bldr.Instance.Reg_default_mem(); Xoae_app app = Xoa_app_fxt.Make__app__edit(); diff --git a/400_xowa/src/gplx/xowa/files/repos/Xowe_repo_mgr.java b/400_xowa/src/gplx/xowa/files/repos/Xowe_repo_mgr.java index 6fb22538e..f290ef675 100644 --- a/400_xowa/src/gplx/xowa/files/repos/Xowe_repo_mgr.java +++ b/400_xowa/src/gplx/xowa/files/repos/Xowe_repo_mgr.java @@ -21,6 +21,7 @@ import gplx.xowa.wikis.domains.*; import gplx.xowa.parsers.utils.*; import gplx.xowa.wikis.tdbs.metas.*; public class Xowe_repo_mgr implements Xow_repo_mgr, Gfo_invk { + private Xofw_file_finder_rslt tmp_rslt = new Xofw_file_finder_rslt(); private Xowe_wiki wiki; private final List_adp repos = List_adp_.New(); public Xowe_repo_mgr(Xowe_wiki wiki) { this.wiki = wiki; @@ -183,7 +184,7 @@ public class Xowe_repo_mgr implements Xow_repo_mgr, Gfo_invk { meta_itm.Vrtl_repo_(Xof_meta_itm.Repo_unknown); } return new_tid; - } private Xofw_file_finder_rslt tmp_rslt = new Xofw_file_finder_rslt(); + } public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_add)) return Add_repo(m.ReadBry("src"), m.ReadBry("trg")); else if (ctx.Match(k, Invk_clear)) {repos.Clear(); repos_ary = null;} // reset repos_ary variable diff --git a/400_xowa/src/gplx/xowa/guis/bnds/Xog_bnd_mgr_srl.java b/400_xowa/src/gplx/xowa/guis/bnds/Xog_bnd_mgr_srl.java index c8feedb36..0621e233b 100644 --- a/400_xowa/src/gplx/xowa/guis/bnds/Xog_bnd_mgr_srl.java +++ b/400_xowa/src/gplx/xowa/guis/bnds/Xog_bnd_mgr_srl.java @@ -44,7 +44,7 @@ public class Xog_bnd_mgr_srl extends Dsv_wkr_base { int len = bnd_mgr.Len(); for (int i = 0; i < len; i++) { Xog_bnd_itm bnd = (Xog_bnd_itm)bnd_mgr.Get_at(i); - uids.Add(Int_obj_val.new_(bnd.Uid()), bnd); + uids.Add(new Int_obj_val(bnd.Uid()), bnd); } bnd_parser = bnd_mgr.Bnd_parser(); } private Ordered_hash uids; private Gfui_bnd_parser bnd_parser; @@ -53,7 +53,7 @@ public class Xog_bnd_mgr_srl extends Dsv_wkr_base { if (box_bry == null) throw parser.Err_row_bgn("bnd missing box", pos); if (ipt_bry == null) throw parser.Err_row_bgn("bnd missing ipt", pos); if (uids == null) Init(); - Xog_bnd_itm bnd = (Xog_bnd_itm)uids.Get_by(Int_obj_val.new_(uid)); + Xog_bnd_itm bnd = (Xog_bnd_itm)uids.Get_by(new Int_obj_val(uid)); int box = Xog_bnd_box_.Xby_gui_str(String_.new_u8(box_bry)); IptArg ipt = IptArg_.parse_or_none_(bnd_parser.Xto_gfui(String_.new_u8(ipt_bry))); bnd_mgr.Del(bnd, ipt); diff --git a/400_xowa/src/gplx/xowa/guis/views/Xog_tab_itm.java b/400_xowa/src/gplx/xowa/guis/views/Xog_tab_itm.java index fa193ece3..da7c6b2d2 100644 --- a/400_xowa/src/gplx/xowa/guis/views/Xog_tab_itm.java +++ b/400_xowa/src/gplx/xowa/guis/views/Xog_tab_itm.java @@ -109,7 +109,8 @@ public class Xog_tab_itm implements Gfo_invk { Xoae_app app = win.App(); Gfo_usr_dlg usr_dlg = app.Usr_dlg(); // get new_tab_name - Xoa_ttl ttl = Xoa_ttl.Parse(wiki, url.Page_bry()); + if (url.Page_is_main()) url.Page_bry_(wiki.Props().Main_page()); // NOTE: must go before ttl.Make; DATE:2016-07-31 + Xoa_ttl ttl = wiki.Ttl_parse(url.Page_bry()); if (ttl == null) {usr_dlg.Prog_one("", "", "title is invalid: ~{0}", String_.new_u8(url.Raw())); return;} String new_tab_name = String_.new_u8(ttl.Full_txt_w_ttl_case()); @@ -127,7 +128,6 @@ public class Xog_tab_itm implements Gfo_invk { app.Log_wtr().Queue_enabled_(true); usr_dlg.Gui_wkr().Clear(); this.wiki = (Xowe_wiki)app.Wiki_mgr().Get_by_or_make_init_y(url.Wiki_bry()); // NOTE: must update wiki variable; DATE:????-??-??; NOTE: must load wiki; DATE:2015-07-22 - if (url.Page_is_main()) url.Page_bry_(wiki.Props().Main_page()); if (url.Vnt_bry() != null) Cur_vnt_(wiki, url.Vnt_bry()); Tab_name_(new_tab_name); usr_dlg.Prog_one("", "", "loading: ~{0}", String_.new_u8(ttl.Raw())); @@ -159,8 +159,8 @@ public class Xog_tab_itm implements Gfo_invk { } else { wkr.Page().Tab_data().Tab().Page_(page); // NOTE: must set tab's page to current page, so that switching to it will update url bar; EX:pt.b:A"MANUAL_DE_PROCEDURI_.Sectiunea:""CONTABILITATE_SI_MANAGEMENT_FINANCIAR""" DATE:2015-09-17 - if (page.Redirect().Itms__len() > 0) - usr_dlg.Prog_many("", "", "could not find: ~{0} (redirected from ~{1})", String_.new_u8(page.Url().Page_bry()), page.Redirect().Itms__get_at(0).Ttl().Full_db()); + if (page.Redirect_trail().Itms__len() > 0) + usr_dlg.Prog_many("", "", "could not find: ~{0} (redirected from ~{1})", String_.new_u8(page.Url().Page_bry()), page.Redirect_trail().Itms__get_at_0th_or_null()); else { if (ttl.Ns().Id_is_file()) usr_dlg.Prog_one("", "", "commons.wikimedia.org must be installed in order to view the file. See [[App/Wiki_types/Commons]]: ~{0}", String_.new_u8(url.Raw()));// HOME diff --git a/400_xowa/src/gplx/xowa/guis/views/Xog_tab_itm_edit_mgr.java b/400_xowa/src/gplx/xowa/guis/views/Xog_tab_itm_edit_mgr.java index 9c976d6eb..954cd6e05 100644 --- a/400_xowa/src/gplx/xowa/guis/views/Xog_tab_itm_edit_mgr.java +++ b/400_xowa/src/gplx/xowa/guis/views/Xog_tab_itm_edit_mgr.java @@ -118,7 +118,7 @@ public class Xog_tab_itm_edit_mgr { tab.View_mode_(old); } private static void Invalidate(Xowe_wiki wiki) {// invalidate everything on updates; especially needed for page transclusion; {{/my_subpage}} DATE:2014-04-10 - wiki.Parser_mgr().Scrib().Core().Term(); + wiki.Parser_mgr().Scrib().Core_term(); wiki.Cache_mgr().Free_mem_all(); } private static byte[] Get_new_text(Xog_tab_itm tab) { diff --git a/400_xowa/src/gplx/xowa/htmls/Xoh_page.java b/400_xowa/src/gplx/xowa/htmls/Xoh_page.java index 80de7a935..ac4263bdd 100644 --- a/400_xowa/src/gplx/xowa/htmls/Xoh_page.java +++ b/400_xowa/src/gplx/xowa/htmls/Xoh_page.java @@ -22,13 +22,13 @@ import gplx.xowa.htmls.heads.*; import gplx.xowa.htmls.sections.*; import gplx.x import gplx.xowa.wikis.pages.dbs.*; import gplx.xowa.wikis.pages.hdumps.*; import gplx.xowa.wikis.pages.htmls.*; public class Xoh_page implements Xoa_page { // core - public Xow_wiki Wiki() {return wiki;} private Xow_wiki wiki; - public Xoa_url Url() {return page_url;} private Xoa_url page_url; - public Xoa_ttl Ttl() {return page_ttl;} private Xoa_ttl page_ttl; - public Xopg_db_data Db() {return db;} private final Xopg_db_data db = new Xopg_db_data(); - public Xopg_redirect_mgr Redirect() {return redirect;} private final Xopg_redirect_mgr redirect = new Xopg_redirect_mgr(); - public Xopg_html_data Html_data() {return html;} private final Xopg_html_data html = new Xopg_html_data(); - public Xopg_hdump_data Hdump_mgr() {return hdump;} private final Xopg_hdump_data hdump = new Xopg_hdump_data(); + public Xow_wiki Wiki() {return wiki;} private Xow_wiki wiki; + public Xoa_url Url() {return page_url;} private Xoa_url page_url; + public Xoa_ttl Ttl() {return page_ttl;} private Xoa_ttl page_ttl; + public Xopg_db_data Db() {return db;} private final Xopg_db_data db = new Xopg_db_data(); + public Xopg_redirect_mgr Redirect_trail() {return redirect;} private final Xopg_redirect_mgr redirect = new Xopg_redirect_mgr(); + public Xopg_html_data Html_data() {return html;} private final Xopg_html_data html = new Xopg_html_data(); + public Xopg_hdump_data Hdump_mgr() {return hdump;} private final Xopg_hdump_data hdump = new Xopg_hdump_data(); public void Xtn_gallery_packed_exists_y_() {} public boolean Xtn__timeline_exists() {return xtn__timeline_exists;} private boolean xtn__timeline_exists; public void Xtn__timeline_exists_y_() {xtn__timeline_exists = true;} @@ -54,7 +54,7 @@ public class Xoh_page implements Xoa_page { html.Redlink_list().Disabled_(page_ttl.Ns().Id_is_module()); // never redlink in Module ns; particularly since Lua has multi-line comments for [[ ]] html.Toc_mgr().Init(wiki.Lang().Msg_mgr().Itm_by_id_or_null(gplx.xowa.langs.msgs.Xol_msg_itm_.Id_toc).Val(), page_url.Raw()); } - public Xoh_page Ctor_by_hdiff(Bry_bfr tmp_bfr, Xoae_page page) { + public Xoh_page Ctor_by_hdiff(Bry_bfr tmp_bfr, Xoae_page page, byte[] toc_label) { this.wiki = page.Wiki(); this.page_url = page.Url(); this.page_ttl = page.Ttl(); this.page_id = page.Db().Page().Id(); db.Html().Html_bry_(page.Db().Html().Html_bry()); @@ -67,7 +67,7 @@ public class Xoh_page implements Xoa_page { this.content_sub = html.Content_sub(); this.sidebar_div = Xoh_page_.Save_sidebars(tmp_bfr, page, html); - html.Toc_mgr().Init(Bry_.Empty, page_url.Page_bry()); + html.Toc_mgr().Init(toc_label, page_url.Page_bry()); return this; } public void Ctor_by_db(int head_flag, byte[] display_ttl, byte[] content_sub, byte[] sidebar_div, int zip_tid, int hzip_tid, byte[] body) { diff --git a/400_xowa/src/gplx/xowa/htmls/Xoh_page_wtr_wkr.java b/400_xowa/src/gplx/xowa/htmls/Xoh_page_wtr_wkr.java index 5127458c7..b22e1698d 100644 --- a/400_xowa/src/gplx/xowa/htmls/Xoh_page_wtr_wkr.java +++ b/400_xowa/src/gplx/xowa/htmls/Xoh_page_wtr_wkr.java @@ -19,7 +19,7 @@ package gplx.xowa.htmls; import gplx.*; import gplx.xowa.*; import gplx.core.brys.fmtrs.*; import gplx.xowa.langs.*; import gplx.xowa.langs.msgs.*; import gplx.langs.htmls.*; import gplx.xowa.langs.vnts.*; import gplx.xowa.htmls.core.htmls.*; import gplx.xowa.wikis.pages.*; import gplx.xowa.wikis.pages.skins.*; -import gplx.xowa.wikis.nss.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.domains.*; import gplx.xowa.parsers.*; import gplx.xowa.xtns.wdatas.*; +import gplx.xowa.wikis.nss.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.domains.*; import gplx.xowa.parsers.*; import gplx.xowa.xtns.wbases.*; import gplx.xowa.xtns.pagebanners.*; import gplx.xowa.apps.gfs.*; import gplx.xowa.htmls.portal.*; public class Xoh_page_wtr_wkr { @@ -45,7 +45,7 @@ public class Xoh_page_wtr_wkr { // ctx.Page().Redlink_list().Clear(); // not sure if this is the best place to put it, but redlinks (a) must only fire once; (b) must fire before html generation; (c) cannot fire during edit (preview will handle separately); NOTE: probably put in to handle reusable redlink lists; redlink lists are now instantiated per page, so clear is not useful break; } - Bry_bfr page_bfr = Xoa_app_.Utl__bfr_mkr().Get_m001(); // NOTE: get separate page rv to output page; do not reuse tmp_bfr b/c it will be used inside Fmt_do + Bry_bfr page_bfr = wiki.Utl__bfr_mkr().Get_m001(); // NOTE: get separate page rv to output page; do not reuse tmp_bfr b/c it will be used inside Fmt_do Xoh_wtr_ctx hctx = null; if (page_mode == Xopg_page_.Tid_html && wiki.App().Api_root().Wiki().Hdump().Html_mode().Tid_is_hdump_save()) { hctx = Xoh_wtr_ctx.Hdump; diff --git a/400_xowa/src/gplx/xowa/htmls/Xoh_page_wtr_wkr_.java b/400_xowa/src/gplx/xowa/htmls/Xoh_page_wtr_wkr_.java index eb229a8ea..54627867c 100644 --- a/400_xowa/src/gplx/xowa/htmls/Xoh_page_wtr_wkr_.java +++ b/400_xowa/src/gplx/xowa/htmls/Xoh_page_wtr_wkr_.java @@ -23,7 +23,7 @@ public class Xoh_page_wtr_wkr_ { public static byte[] Bld_page_content_sub(Xoae_app app, Xowe_wiki wiki, Xoae_page page, Bry_bfr tmp_bfr) { byte[] subpages = app.Html_mgr().Page_mgr().Subpages_bldr().Bld(wiki.Ns_mgr(), page.Ttl()); byte[] page_content_sub = page.Html_data().Content_sub(); // contentSub exists; SEE: {{#isin}} - byte[] redirect_msg = Xop_redirect_mgr.Bld_redirect_msg(app, wiki, page.Redirect()); + byte[] redirect_msg = Xop_redirect_mgr.Bld_redirect_msg(app, wiki, page.Redirect_trail()); return Bry_.Add(subpages, page_content_sub, redirect_msg); } public static byte[] Bld_page_name(Bry_bfr tmp_bfr, Xoa_ttl ttl, byte[] display_ttl) { diff --git a/400_xowa/src/gplx/xowa/htmls/Xohp_ctg_grp_mgr.java b/400_xowa/src/gplx/xowa/htmls/Xohp_ctg_grp_mgr.java index a3520e82a..1a5651a2b 100644 --- a/400_xowa/src/gplx/xowa/htmls/Xohp_ctg_grp_mgr.java +++ b/400_xowa/src/gplx/xowa/htmls/Xohp_ctg_grp_mgr.java @@ -47,15 +47,15 @@ class Xoh_ctg_itm_fmtr implements gplx.core.brys.Bfr_arg { public void Set(Xoae_page page, Bry_fmtr itm_fmtr) {this.page = page; this.itm_fmtr = itm_fmtr;} private Xoae_page page; Bry_fmtr itm_fmtr; public void Bfr_arg__add(Bry_bfr bfr) { int ctgs_len = page.Category_list().length; - Bry_bfr tmp_bfr = Xoa_app_.Utl__bfr_mkr().Get_b128(); - Bry_bfr tmp_href = Xoa_app_.Utl__bfr_mkr().Get_b128(); Xowe_wiki wiki = page.Wikie(); + Bry_bfr tmp_bfr = wiki.Utl__bfr_mkr().Get_b128(); + Bry_bfr tmp_href = wiki.Utl__bfr_mkr().Get_b128(); Xoae_app app = wiki.Appe(); byte[] ctg_prefix = wiki.Ns_mgr().Ns_category().Name_db_w_colon(); for (int i = 0; i < ctgs_len; i++) { byte[] page_name = page.Category_list()[i]; tmp_bfr.Add(ctg_prefix).Add(page_name); - page.Wikie().Html__href_wtr().Build_to_bfr(tmp_href, app, wiki.Domain_bry(), wiki.Ttl_parse(tmp_bfr.To_bry_and_clear())); + wiki.Html__href_wtr().Build_to_bfr(tmp_href, app, wiki.Domain_bry(), wiki.Ttl_parse(tmp_bfr.To_bry_and_clear())); itm_fmtr.Bld_bfr(bfr, tmp_href.To_bry_and_clear(), page_name, page_name); } tmp_bfr.Mkr_rls(); diff --git a/400_xowa/src/gplx/xowa/htmls/Xow_html_mgr.java b/400_xowa/src/gplx/xowa/htmls/Xow_html_mgr.java index 2a58fe518..bde3a49b8 100644 --- a/400_xowa/src/gplx/xowa/htmls/Xow_html_mgr.java +++ b/400_xowa/src/gplx/xowa/htmls/Xow_html_mgr.java @@ -61,7 +61,7 @@ public class Xow_html_mgr implements Gfo_invk { public byte[] Img_xowa_protocol() {return img_xowa_protocol;} private byte[] img_xowa_protocol; public boolean Img_suppress_missing_src() {return img_suppress_missing_src;} public Xow_html_mgr Img_suppress_missing_src_(boolean v) {img_suppress_missing_src = v; return this;} private boolean img_suppress_missing_src = true; public Xohp_ctg_grp_mgr Ctg_mgr() {return ctg_mgr;} private Xohp_ctg_grp_mgr ctg_mgr = new Xohp_ctg_grp_mgr(); - public Xoctg_html_mgr Ns_ctg() {return ns_ctg;} private Xoctg_html_mgr ns_ctg = new Xoctg_html_mgr(); + public Xoctg_html_mgr Ns_ctg() {return ns_ctg;} private final Xoctg_html_mgr ns_ctg = new Xoctg_html_mgr(); public Xoh_imgs_mgr Imgs_mgr() {return imgs_mgr;} private Xoh_imgs_mgr imgs_mgr; public void Copy_cfg(Xow_html_mgr html_mgr) {imgs_mgr.Copy_cfg(html_mgr.Imgs_mgr());} public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { diff --git a/400_xowa/src/gplx/xowa/htmls/bridges/dbuis/fmtrs/Dbui_cells_fmtr.java b/400_xowa/src/gplx/xowa/htmls/bridges/dbuis/fmtrs/Dbui_cells_fmtr.java index a4d567a87..73831875b 100644 --- a/400_xowa/src/gplx/xowa/htmls/bridges/dbuis/fmtrs/Dbui_cells_fmtr.java +++ b/400_xowa/src/gplx/xowa/htmls/bridges/dbuis/fmtrs/Dbui_cells_fmtr.java @@ -19,8 +19,8 @@ package gplx.xowa.htmls.bridges.dbuis.fmtrs; import gplx.*; import gplx.xowa.*; import gplx.core.brys.fmtrs.*; import gplx.xowa.htmls.bridges.dbuis.tbls.*; public class Dbui_cells_fmtr implements gplx.core.brys.Bfr_arg { - private final Dbui_cell_fmtr cell_fmtr = new Dbui_cell_fmtr(); - private final Dbui_btn_fmtr btn_fmtr = new Dbui_btn_fmtr(); + private final Dbui_cell_fmtr cell_fmtr = new Dbui_cell_fmtr(); + private final Dbui_btn_fmtr btn_fmtr = new Dbui_btn_fmtr(); private Dbui_btn_itm[] btns; private byte[] row_key; private Dbui_row_itm row_itm; public void Ctor(Dbui_val_fmtr val_fmtr, Dbui_btn_itm[] btns) { @@ -33,7 +33,7 @@ public class Dbui_cells_fmtr implements gplx.core.brys.Bfr_arg { public void Bfr_arg__add(Bry_bfr bfr) { fmtr.Bld_bfr_many(bfr, cell_fmtr.Init(row_key, row_itm), btn_fmtr.Init(row_key, btns)); } - private static final Bry_fmtr fmtr = Bry_fmtr.new_(String_.Concat_lines_nl_skip_last + private static final Bry_fmtr fmtr = Bry_fmtr.new_(String_.Concat_lines_nl_skip_last ( "" , "
~{vals}" , "
~{btns}" @@ -53,7 +53,7 @@ class Dbui_cell_fmtr implements gplx.core.brys.Bfr_arg { fmtr.Bld_bfr_many(bfr, row_key, i, val_fmtr.Init(cols[i], row_key, val)); } } - private static final Bry_fmtr fmtr = Bry_fmtr.new_(String_.Concat_lines_nl_skip_last + private static final Bry_fmtr fmtr = Bry_fmtr.new_(String_.Concat_lines_nl_skip_last ( "" , "
~{html}
" ), "row_key", "val_idx", "html"); @@ -71,7 +71,7 @@ class Dbui_btn_fmtr implements gplx.core.brys.Bfr_arg { fmtr.Bld_bfr_many(bfr, row_key, btn.Cmd(), img_dir.GenSubFil(btn.Img()).To_http_file_bry(), btn.Text()); } } - private static final Bry_fmtr fmtr = Bry_fmtr.new_(String_.Concat_lines_nl_skip_last + private static final Bry_fmtr fmtr = Bry_fmtr.new_(String_.Concat_lines_nl_skip_last ( "" , "
" ), "row_key", "btn_cmd", "btn_img", "btn_text"); diff --git a/400_xowa/src/gplx/xowa/htmls/bridges/dbuis/fmtrs/Dbui_val_fmtr.java b/400_xowa/src/gplx/xowa/htmls/bridges/dbuis/fmtrs/Dbui_val_fmtr.java index a7780034f..6b5a46ccf 100644 --- a/400_xowa/src/gplx/xowa/htmls/bridges/dbuis/fmtrs/Dbui_val_fmtr.java +++ b/400_xowa/src/gplx/xowa/htmls/bridges/dbuis/fmtrs/Dbui_val_fmtr.java @@ -38,11 +38,11 @@ class Dbui_val_fmtr__edit implements gplx.core.brys.Bfr_arg, Dbui_val_fmtr { default: throw Err_.new_unimplemented(); } } - private static final Bry_fmtr input_fmtr_str = Bry_fmtr.new_(String_.Concat_lines_nl_skip_last + private static final Bry_fmtr input_fmtr_str = Bry_fmtr.new_(String_.Concat_lines_nl_skip_last ( "" , " " ), "col_key", "width", "value", "row_id"); - private static final Bry_fmtr textarea_fmtr_str = Bry_fmtr.new_(String_.Concat_lines_nl_skip_last + private static final Bry_fmtr textarea_fmtr_str = Bry_fmtr.new_(String_.Concat_lines_nl_skip_last ( "" , " " ), "col_key", "width", "value", "row_id"); diff --git a/400_xowa/src/gplx/xowa/htmls/core/Xow_hdump_mgr__save.java b/400_xowa/src/gplx/xowa/htmls/core/Xow_hdump_mgr__save.java index 763968bd3..f25f01653 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/Xow_hdump_mgr__save.java +++ b/400_xowa/src/gplx/xowa/htmls/core/Xow_hdump_mgr__save.java @@ -32,7 +32,7 @@ public class Xow_hdump_mgr__save { public int Save(Xoae_page page) { synchronized (tmp_hpg) { Bld_hdump(page); - tmp_hpg.Ctor_by_hdiff(tmp_bfr, page); + tmp_hpg.Ctor_by_hdiff(tmp_bfr, page, page.Wikie().Msg_mgr().Val_by_id(gplx.xowa.langs.msgs.Xol_msg_itm_.Id_toc)); Xow_db_file html_db = Get_html_db(wiki, page, html_db_is_new.Val_n_()); return Save(tmp_hpg, html_db.Tbl__html(), html_db_is_new.Val()); } diff --git a/400_xowa/src/gplx/xowa/htmls/core/bldrs/Xob_hdump_bldr.java b/400_xowa/src/gplx/xowa/htmls/core/bldrs/Xob_hdump_bldr.java index 1a362d40e..f266e804b 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/bldrs/Xob_hdump_bldr.java +++ b/400_xowa/src/gplx/xowa/htmls/core/bldrs/Xob_hdump_bldr.java @@ -28,14 +28,17 @@ public class Xob_hdump_bldr implements Gfo_invk { private int prv_row_len = 0; private final Xoh_page tmp_hpg = new Xoh_page(); private final Bry_bfr tmp_bfr = Bry_bfr_.New(); private boolean op_sys_is_wnt; + private byte[] toc_label = Bry_.Empty; public Xob_hdump_bldr Enabled_(boolean v) {this.enabled = v; return this;} public Xob_hdump_bldr Hzip_enabled_(boolean v) {this.hzip_enabled = v; return this;} public Xob_hdump_bldr Hzip_diff_(boolean v) {this.hzip_diff = v; return this;} + public Xob_hdump_bldr Zip_tid_(byte v) {this.zip_tid = v; return this;} public boolean Init(Xowe_wiki wiki, Db_conn make_conn, Xob_hdump_tbl_retriever html_tbl_retriever) { if (!enabled) return false; this.op_sys_is_wnt = gplx.core.envs.Op_sys.Cur().Tid_is_wnt(); this.wiki = wiki; this.hdump_mgr = wiki.Html__hdump_mgr(); this.html_tbl_retriever = html_tbl_retriever; this.stat_tbl = new Xoh_stat_tbl(make_conn); this.stat_itm = hdump_mgr.Hzip_mgr().Hctx().Hzip__stat(); + this.toc_label = wiki.Msg_mgr().Val_by_id(gplx.xowa.langs.msgs.Xol_msg_itm_.Id_toc); Xoapi_import import_cfg = wiki.Appe().Api_root().Bldr().Wiki().Import(); if (zip_tid == Byte_.Max_value_127) zip_tid = import_cfg.Zip_tid_html(); @@ -54,7 +57,7 @@ public class Xob_hdump_bldr implements Gfo_invk { // save to db Xowd_html_tbl html_tbl = html_tbl_retriever.Get_html_tbl(wpg.Ttl().Ns(), prv_row_len); // get html_tbl - this.prv_row_len = hdump_mgr.Save_mgr().Save(tmp_hpg.Ctor_by_hdiff(tmp_bfr, wpg), html_tbl, true); // save to db + this.prv_row_len = hdump_mgr.Save_mgr().Save(tmp_hpg.Ctor_by_hdiff(tmp_bfr, wpg, toc_label), html_tbl, true); // save to db stat_tbl.Insert(tmp_hpg, stat_itm, wpg.Root().Root_src().length, tmp_hpg.Db().Html().Html_bry().length, prv_row_len); // save stats // run hzip diff if enabled diff --git a/400_xowa/src/gplx/xowa/htmls/core/htmls/Xoh_html_wtr.java b/400_xowa/src/gplx/xowa/htmls/core/htmls/Xoh_html_wtr.java index 412773732..fda55c9a7 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/htmls/Xoh_html_wtr.java +++ b/400_xowa/src/gplx/xowa/htmls/core/htmls/Xoh_html_wtr.java @@ -22,7 +22,7 @@ import gplx.xowa.htmls.core.wkrs.hdrs.*; import gplx.xowa.htmls.core.wkrs.lnkes. import gplx.xowa.wikis.domains.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.apos.*; import gplx.xowa.parsers.amps.*; import gplx.xowa.parsers.lnkes.*; import gplx.xowa.parsers.lists.*; import gplx.xowa.htmls.core.wkrs.lnkis.htmls.*; import gplx.xowa.parsers.tblws.*; import gplx.xowa.parsers.paras.*; import gplx.xowa.parsers.xndes.*; import gplx.xowa.parsers.lnkis.*; import gplx.xowa.parsers.miscs.*; import gplx.xowa.parsers.htmls.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.cites.*; import gplx.xowa.parsers.hdrs.*; - public class Xoh_html_wtr { +public class Xoh_html_wtr { private final Xoae_app app; private final Xowe_wiki wiki; private final Xow_html_mgr html_mgr; private final Xop_xatr_whitelist_mgr whitelist_mgr; private Xoae_page page; private int indent_level; diff --git a/400_xowa/src/gplx/xowa/htmls/core/wkrs/bfr_args/Bfr_arg__hatr_fmtr.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/bfr_args/Bfr_arg__hatr_fmtr.java index fd33e14b6..260cd73fb 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/wkrs/bfr_args/Bfr_arg__hatr_fmtr.java +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/bfr_args/Bfr_arg__hatr_fmtr.java @@ -18,8 +18,8 @@ along with this program. If not, see . package gplx.xowa.htmls.core.wkrs.bfr_args; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.core.*; import gplx.xowa.htmls.core.wkrs.*; import gplx.core.brys.*; import gplx.core.brys.fmtrs.*; public class Bfr_arg__hatr_fmtr implements Bfr_arg { - private final byte[] atr_bgn; - private final Bry_fmtr fmtr = Bry_fmtr.new_(); + private final byte[] atr_bgn; + private final Bry_fmtr fmtr = Bry_fmtr.new_(); private Object[] args; public Bfr_arg__hatr_fmtr(byte[] key, String fmt, String... keys) { this.atr_bgn = Bfr_arg__hatr_.Bld_atr_bgn(key); diff --git a/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkes/Xoh_lnke_html.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkes/Xoh_lnke_html.java index 570c70d7a..2fc6d526b 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkes/Xoh_lnke_html.java +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkes/Xoh_lnke_html.java @@ -22,6 +22,7 @@ import gplx.xowa.parsers.*; import gplx.xowa.parsers.lnkes.*; import gplx.xowa.htmls.core.htmls.*; public class Xoh_lnke_html { private static final byte[] Disabled_button = Bry_.new_a7("⊗"); + private final Gfo_url_encoder href_encoder = Gfo_url_encoder_.New__html_href_quotes().Make(); public void Write_html(Bry_bfr bfr, Xow_html_mgr html_mgr, Xoh_html_wtr html_wtr, Xoh_wtr_ctx hctx, Xop_ctx ctx, byte[] src, Xop_lnke_tkn lnke) { int href_bgn = lnke.Lnke_href_bgn(), href_end = lnke.Lnke_href_end(); boolean proto_is_xowa = lnke.Proto_tid() == Gfo_protocol_itm.Tid_xowa; byte lnke_type = Calc_type(lnke); @@ -68,9 +69,9 @@ public class Xoh_lnke_html { } } else { // xwiki - Gfo_url_encoder href_encoder = gplx.langs.htmls.encoders.Gfo_url_encoder_.Href_quotes; + byte[] xwiki_page_enc = href_encoder.Encode(lnke.Lnke_xwiki_page()); bfr.Add(Xoh_href_.Bry__site).Add(lnke_xwiki_wiki).Add(Xoh_href_.Bry__wiki) - .Add(href_encoder.Encode(lnke.Lnke_xwiki_page())); // NOTE: must encode page; EX:%22%3D -> '">' which will end attribute; PAGE:en.w:List_of_Category_A_listed_buildings_in_West_Lothian DATE:2014-07-15 + .Add(xwiki_page_enc); // NOTE: must encode page; EX:%22%3D -> '">' which will end attribute; PAGE:en.w:List_of_Category_A_listed_buildings_in_West_Lothian DATE:2014-07-15 if (lnke.Lnke_xwiki_qargs() != null) Gfo_qarg_mgr_old.Concat_bfr(bfr, href_encoder, lnke.Lnke_xwiki_qargs()); // NOTE: must encode args return ctx.Wiki().App().Xwiki_mgr__missing(lnke_xwiki_wiki); // write "external" if hdump or xwiki is missing diff --git a/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/htmls/Xoh_lnki_wtr.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/htmls/Xoh_lnki_wtr.java index fc5638cf1..0bdc14efd 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/htmls/Xoh_lnki_wtr.java +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/htmls/Xoh_lnki_wtr.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.xowa.htmls.core.wkrs.lnkis.htmls; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.core.*; import gplx.xowa.htmls.core.wkrs.*; import gplx.xowa.htmls.core.wkrs.lnkis.*; import gplx.langs.htmls.*; import gplx.xowa.files.*; import gplx.xowa.users.history.*; import gplx.xowa.xtns.pfuncs.ttls.*; import gplx.xowa.xtns.relatedSites.*; import gplx.xowa.wikis.nss.*; -import gplx.xowa.wikis.xwikis.*; import gplx.xowa.xtns.wdatas.core.*; +import gplx.xowa.wikis.xwikis.*; import gplx.xowa.xtns.wbases.core.*; import gplx.xowa.htmls.core.htmls.*; import gplx.xowa.htmls.core.hzips.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.lnkis.*; import gplx.xowa.wikis.pages.lnkis.*; public class Xoh_lnki_wtr { diff --git a/400_xowa/src/gplx/xowa/htmls/heads/Xow_fragment_mgr.java b/400_xowa/src/gplx/xowa/htmls/heads/Xow_fragment_mgr.java index 1f786c796..f8d7df0ec 100644 --- a/400_xowa/src/gplx/xowa/htmls/heads/Xow_fragment_mgr.java +++ b/400_xowa/src/gplx/xowa/htmls/heads/Xow_fragment_mgr.java @@ -45,7 +45,7 @@ public class Xow_fragment_mgr implements Gfo_invk { } public static final String Invk_html_js_edit_toolbar_fmt_ = "html_js_edit_toolbar_fmt_", Invk_html_js_edit_toolbar = "html_js_edit_toolbar"; public void Evt_lang_changed(Xol_lang_itm lang) { - Bry_bfr bfr = Xoa_app_.Utl__bfr_mkr().Get_b512(); + Bry_bfr bfr = wiki.Utl__bfr_mkr().Get_b512(); Xow_msg_mgr msg_mgr = wiki.Appe().Usere().Msg_mgr(); html_js_edit_toolbar = html_js_edit_toolbar_fmtr.Bld_bry_many(bfr , msg_mgr.Val_by_id(Xol_msg_itm_.Id_edit_toolbar_bold_tip) diff --git a/400_xowa/src/gplx/xowa/htmls/js/Xoh_js_cbk.java b/400_xowa/src/gplx/xowa/htmls/js/Xoh_js_cbk.java index 5053b3362..260a7b08f 100644 --- a/400_xowa/src/gplx/xowa/htmls/js/Xoh_js_cbk.java +++ b/400_xowa/src/gplx/xowa/htmls/js/Xoh_js_cbk.java @@ -131,7 +131,7 @@ public class Xoh_js_cbk implements Gfo_invk { private String[] Wikidata_get_label(GfoMsg m) { try { Thread_adp_.Sleep(10); // slow down calls to prevent random crashing in XulRunner; DATE:2014-04-23 - gplx.xowa.xtns.wdatas.Wdata_wiki_mgr wdata_mgr = app.Wiki_mgr().Wdata_mgr(); + gplx.xowa.xtns.wbases.Wdata_wiki_mgr wdata_mgr = app.Wiki_mgr().Wdata_mgr(); wdata_mgr.Wdata_wiki().Init_assert(); // NOTE: must assert else ns_mgr won't load Property int len = m.Args_count(); if (len < 1) return null; @@ -141,7 +141,7 @@ public class Xoh_js_cbk implements Gfo_invk { for (int i = 1; i < len; i++) { try { byte[] ttl_bry = m.Args_getAt(i).Val_to_bry(); - gplx.xowa.xtns.wdatas.Wdata_doc page = wdata_mgr.Doc_mgr.Get_by_xid_or_null(ttl_bry); if (page == null) continue; + gplx.xowa.xtns.wbases.Wdata_doc page = wdata_mgr.Doc_mgr.Get_by_xid_or_null(ttl_bry); if (page == null) continue; for (int j = 0; j < langs_len; j++) { byte[] lang_key = langs[j]; if (Bry_.Eq(lang_key, Wikidata_get_label_xowa_ui_lang)) diff --git a/400_xowa/src/gplx/xowa/htmls/js/Xoh_js_cbk_tst.java b/400_xowa/src/gplx/xowa/htmls/js/Xoh_js_cbk_tst.java index f402dd308..9bf135e27 100644 --- a/400_xowa/src/gplx/xowa/htmls/js/Xoh_js_cbk_tst.java +++ b/400_xowa/src/gplx/xowa/htmls/js/Xoh_js_cbk_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.xowa.htmls.js; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; -import org.junit.*; import gplx.xowa.xtns.wdatas.*; +import org.junit.*; import gplx.xowa.xtns.wbases.*; import gplx.xowa.guis.views.*; public class Xoh_js_cbk_tst { @Before public void init() {fxt.Clear();} private Xoh_js_cbk_fxt fxt = new Xoh_js_cbk_fxt(); diff --git a/400_xowa/src/gplx/xowa/htmls/js/Xoh_js_cbk_wdata_labels_tst.java b/400_xowa/src/gplx/xowa/htmls/js/Xoh_js_cbk_wdata_labels_tst.java index 719a833c9..98feb2056 100644 --- a/400_xowa/src/gplx/xowa/htmls/js/Xoh_js_cbk_wdata_labels_tst.java +++ b/400_xowa/src/gplx/xowa/htmls/js/Xoh_js_cbk_wdata_labels_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.xowa.htmls.js; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; -import org.junit.*; import gplx.langs.jsons.*; import gplx.xowa.xtns.wdatas.*; +import org.junit.*; import gplx.langs.jsons.*; import gplx.xowa.xtns.wbases.*; public class Xoh_js_cbk_wdata_labels_tst { @Before public void init() {fxt.Init();} private final Wdata_wiki_mgr_fxt fxt = new Wdata_wiki_mgr_fxt(); @Test public void Basic() { diff --git a/400_xowa/src/gplx/xowa/htmls/ns_files/Xoh_file_page_wtr.java b/400_xowa/src/gplx/xowa/htmls/ns_files/Xoh_file_page_wtr.java index ca27963f8..0d3486c31 100644 --- a/400_xowa/src/gplx/xowa/htmls/ns_files/Xoh_file_page_wtr.java +++ b/400_xowa/src/gplx/xowa/htmls/ns_files/Xoh_file_page_wtr.java @@ -23,7 +23,7 @@ public class Xoh_file_page_wtr { public Int_2_ref[] Size_alts() {return size_alts;} private Int_2_ref[] size_alts = new Int_2_ref[] {new Int_2_ref(320, 240), new Int_2_ref(640, 480), new Int_2_ref(800, 600), new Int_2_ref(1024, 768), new Int_2_ref(1280, 1024)}; public byte[] Html_alt_dlm_dflt() {return html_alt_dlm_dflt;} private byte[] html_alt_dlm_dflt = Bry_.new_a7("|"); public byte[] Html_alt_dlm_last() {return html_alt_dlm_last;} private byte[] html_alt_dlm_last = Bry_.new_a7("."); - public Bry_fmtr Html_main() {return html_main;} private final Bry_fmtr html_main = Bry_fmtr.new_(String_.Concat_lines_nl_skip_last + public Bry_fmtr Html_main() {return html_main;} private final Bry_fmtr html_main = Bry_fmtr.new_(String_.Concat_lines_nl_skip_last ( "~{commons_notice}
    " , "
  • " , " " @@ -49,7 +49,7 @@ public class Xoh_file_page_wtr { , "~{media}" ) , "media", "commons_notice"); - public Bry_fmtr Html_main_img() {return html_main_img;} private final Bry_fmtr html_main_img = Bry_fmtr.new_(String_.Concat_lines_nl_skip_last + public Bry_fmtr Html_main_img() {return html_main_img;} private final Bry_fmtr html_main_img = Bry_fmtr.new_(String_.Concat_lines_nl_skip_last ( "" , "" ), "orig_width", "orig_height", "orig_href", "orig_file_size", "orig_mime_type", "elem_id", "thumb_width", "thumb_height", "thumb_href", "thumb_alt", "thumb_name", "section_alts"); - public Bry_fmtr Html_main_aud() {return html_main_aud;} private final Bry_fmtr html_main_aud = Bry_fmtr.new_(String_.Concat_lines_nl_skip_last + public Bry_fmtr Html_main_aud() {return html_main_aud;} private final Bry_fmtr html_main_aud = Bry_fmtr.new_(String_.Concat_lines_nl_skip_last ( "
    " , "
    " , "
    " , "" ), "lnki_url", "xowa_title", "play_width", "play_max_width", "play_icon"); - public Bry_fmtr Html_main_vid() {return html_main_vid;} private final Bry_fmtr html_main_vid = Bry_fmtr.new_(String_.Concat_lines_nl_skip_last + public Bry_fmtr Html_main_vid() {return html_main_vid;} private final Bry_fmtr html_main_vid = Bry_fmtr.new_(String_.Concat_lines_nl_skip_last ( "
    " , " " , "" ), "elem_id", "lnki_href", "lnki_class", "xowa_title", "lnki_src", "lnki_width", "lnki_height", "lnki_alt", "lnki_url", "play_width", "play_max_width", "play_icon"); - public Bry_fmtr Html_alts() {return html_alts;} private final Bry_fmtr html_alts = Bry_fmtr.new_(String_.Concat_lines_nl_skip_last + public Bry_fmtr Html_alts() {return html_alts;} private final Bry_fmtr html_alts = Bry_fmtr.new_(String_.Concat_lines_nl_skip_last ( " " , " ~{thumb_width} × ~{thumb_height}" , " " diff --git a/400_xowa/src/gplx/xowa/htmls/portal/Xoh_page_body_cls.java b/400_xowa/src/gplx/xowa/htmls/portal/Xoh_page_body_cls.java index 3295ddf3a..f3ff378a7 100644 --- a/400_xowa/src/gplx/xowa/htmls/portal/Xoh_page_body_cls.java +++ b/400_xowa/src/gplx/xowa/htmls/portal/Xoh_page_body_cls.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.xowa.htmls.portal; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; -import gplx.xowa.wikis.*; import gplx.xowa.xtns.wdatas.*; +import gplx.xowa.wikis.*; import gplx.xowa.xtns.wbases.*; import gplx.xowa.wikis.nss.*; public class Xoh_page_body_cls { // REF.MW:Skin.php|getPageClasses public static byte[] Calc(Bry_bfr tmp_bfr, Xoa_ttl ttl, int page_tid) { diff --git a/400_xowa/src/gplx/xowa/htmls/portal/Xoh_page_body_cls_tst.java b/400_xowa/src/gplx/xowa/htmls/portal/Xoh_page_body_cls_tst.java index df9e7169b..717a5bc74 100644 --- a/400_xowa/src/gplx/xowa/htmls/portal/Xoh_page_body_cls_tst.java +++ b/400_xowa/src/gplx/xowa/htmls/portal/Xoh_page_body_cls_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.xowa.htmls.portal; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; -import org.junit.*; import gplx.xowa.wikis.*; import gplx.xowa.xtns.wdatas.*; +import org.junit.*; import gplx.xowa.wikis.*; import gplx.xowa.xtns.wbases.*; public class Xoh_page_body_cls_tst { @Before public void init() {} private Xoh_page_body_cls_fxt fxt = new Xoh_page_body_cls_fxt(); @Test public void Escape_cls() { diff --git a/400_xowa/src/gplx/xowa/htmls/portal/vnts/Vnt_mnu_grp_fmtr.java b/400_xowa/src/gplx/xowa/htmls/portal/vnts/Vnt_mnu_grp_fmtr.java index 1e8000c14..5d015627d 100644 --- a/400_xowa/src/gplx/xowa/htmls/portal/vnts/Vnt_mnu_grp_fmtr.java +++ b/400_xowa/src/gplx/xowa/htmls/portal/vnts/Vnt_mnu_grp_fmtr.java @@ -19,7 +19,7 @@ package gplx.xowa.htmls.portal.vnts; import gplx.*; import gplx.xowa.*; import g import gplx.core.brys.fmtrs.*; import gplx.xowa.langs.vnts.*; public class Vnt_mnu_grp_fmtr implements gplx.core.brys.Bfr_arg { - private final Xolg_vnt_itm_fmtr itm_fmtr = new Xolg_vnt_itm_fmtr(); + private final Xolg_vnt_itm_fmtr itm_fmtr = new Xolg_vnt_itm_fmtr(); private Xol_vnt_regy mgr; private byte[] page_vnt; public void Init(Xol_vnt_regy mgr, byte[] wiki_domain, byte[] page_href, byte[] page_vnt) { this.mgr = mgr; this.page_vnt = page_vnt; @@ -29,7 +29,7 @@ public class Vnt_mnu_grp_fmtr implements gplx.core.brys.Bfr_arg { Xol_vnt_itm mnu_itm = mgr.Get_by(page_vnt); fmtr.Bld_bfr_many(bfr, mnu_itm == null ? Bry_.Empty : mnu_itm.Name(), itm_fmtr); } - private static final Bry_fmtr fmtr = Bry_fmtr.new_(String_.Concat_lines_nl_skip_last + private static final Bry_fmtr fmtr = Bry_fmtr.new_(String_.Concat_lines_nl_skip_last ( "" , "
  • ~{itm_text}
  • " ), "itm_idx", "itm_cls_selected", "wiki_domain", "itm_lang", "itm_text", "itm_href" diff --git a/400_xowa/src/gplx/xowa/langs/Xoa_lang_mgr.java b/400_xowa/src/gplx/xowa/langs/Xoa_lang_mgr.java index 56e3b8dc9..d43e1a422 100644 --- a/400_xowa/src/gplx/xowa/langs/Xoa_lang_mgr.java +++ b/400_xowa/src/gplx/xowa/langs/Xoa_lang_mgr.java @@ -16,15 +16,17 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.langs; import gplx.*; import gplx.xowa.*; -import gplx.xowa.apps.fsys.*; -import gplx.xowa.langs.bldrs.*; +import gplx.xowa.apps.fsys.*; import gplx.xowa.apps.gfs.*; +import gplx.xowa.langs.bldrs.*; public class Xoa_lang_mgr implements Gfo_invk { private final Ordered_hash hash = Ordered_hash_.New_bry(); private final Xobc_utl_make_lang mw_converter; - public Xoa_lang_mgr(Xoa_app app) { + public Xoa_lang_mgr(Xoa_app app, Xoa_gfs_mgr gfs_mgr) { this.mw_converter = new Xobc_utl_make_lang(this, app.Fsys_mgr(), app.Tid_is_edit() ? ((Xoae_app)app).Msg_log() : null); this.lang_en = Xol_lang_itm_.Lang_en_make(this); this.Add(lang_en); + this.gfs_mgr = gfs_mgr; } + public Xoa_gfs_mgr Gfs_mgr() {return gfs_mgr;} private final Xoa_gfs_mgr gfs_mgr; public Xol_lang_itm Lang_en() {return lang_en;} private final Xol_lang_itm lang_en; public void Clear() {hash.Clear();} public int Len() {return hash.Count();} diff --git a/400_xowa/src/gplx/xowa/langs/Xol_lang_itm.java b/400_xowa/src/gplx/xowa/langs/Xol_lang_itm.java index 084281178..3e644979a 100644 --- a/400_xowa/src/gplx/xowa/langs/Xol_lang_itm.java +++ b/400_xowa/src/gplx/xowa/langs/Xol_lang_itm.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.xowa.langs; import gplx.*; import gplx.xowa.*; import gplx.core.envs.*; import gplx.gfui.draws.*; -import gplx.xowa.langs.cases.*; import gplx.xowa.langs.msgs.*; import gplx.xowa.langs.kwds.*; import gplx.xowa.langs.grammars.*; import gplx.xowa.langs.genders.*; import gplx.xowa.langs.plurals.*; import gplx.xowa.langs.vnts.*; import gplx.xowa.langs.vnts.converts.*; import gplx.xowa.langs.numbers.*; import gplx.xowa.langs.durations.*; import gplx.xowa.langs.lnki_trails.*; import gplx.xowa.langs.funcs.*; import gplx.xowa.langs.specials.*; import gplx.xowa.langs.bldrs.*; +import gplx.xowa.langs.cases.*; import gplx.xowa.langs.msgs.*; import gplx.xowa.langs.kwds.*; import gplx.xowa.langs.grammars.*; import gplx.xowa.langs.genders.*; import gplx.xowa.langs.plurals.*; import gplx.xowa.langs.vnts.*; import gplx.xowa.langs.vnts.converts.*; import gplx.xowa.langs.numbers.*; import gplx.xowa.langs.durations.*; import gplx.xowa.langs.lnki_trails.*; import gplx.xowa.langs.funcs.*; import gplx.xowa.langs.specials.*; import gplx.xowa.langs.bldrs.*; import gplx.xowa.langs.commas.*; import gplx.xowa.apps.gfs.*; import gplx.xowa.apps.fsys.*; import gplx.core.intls.*; import gplx.xowa.wikis.nss.*; import gplx.xowa.xtns.lst.*; import gplx.xowa.wikis.caches.*; import gplx.xowa.parsers.lnkis.*; import gplx.xowa.guis.langs.*; public class Xol_lang_itm implements Gfo_invk { @@ -55,6 +55,7 @@ public class Xol_lang_itm implements Gfo_invk { public Xol_case_mgr Case_mgr() {return case_mgr;} private Xol_case_mgr case_mgr; public void Case_mgr_u8_() {case_mgr = Xol_case_mgr_.U8();} // TEST: public Xol_lang_itm Case_mgr_(Xol_case_mgr v) {this.case_mgr = v; return this;} // TEST: + public Xol_comma_wkr Comma_wkr() {return comma_wkr;} private final Xol_comma_wkr comma_wkr = new Xol_comma_wkr__add(); public Xol_font_info Gui_font() {return gui_font;} private final Xol_font_info gui_font = new Xol_font_info(null, 0, FontStyleAdp_.Plain); public byte[] Fallback_bry() {return fallback_bry;} public Xol_lang_itm Fallback_bry_(byte[] v) { @@ -83,6 +84,7 @@ public class Xol_lang_itm implements Gfo_invk { public void Evt_lang_changed() { lnki_arg_parser.Evt_lang_changed(this); func_regy.Evt_lang_changed(this); + comma_wkr.Evt_lang_changed(this); } private byte[] X_axis_end() {return dir_ltr ? X_axis_end_right : X_axis_end_left;} public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { @@ -102,7 +104,7 @@ public class Xol_lang_itm implements Gfo_invk { else if (ctx.Match(k, Invk_link_trail)) return lnki_trail_mgr; else if (ctx.Match(k, Invk_x_axis_end)) return String_.new_u8(X_axis_end()); else if (ctx.Match(k, Invk_this)) return this; - else if (ctx.Match(k, Xoae_app.Invk_app)) return Xoa_app_.Gfs_mgr().Root_invk(); + else if (ctx.Match(k, Xoae_app.Invk_app)) return lang_mgr.Gfs_mgr().Root_invk(); else return Gfo_invk_.Rv_unhandled; return this; } @@ -137,7 +139,7 @@ public class Xol_lang_itm implements Gfo_invk { fallback_dupes_regy.Del(fallback_lang); } private void Load_lang(byte[] v) { - Xoa_gfs_mgr gfs_mgr = Xoa_app_.Gfs_mgr(); Xoa_fsys_mgr app_fsys_mgr = gfs_mgr.App_fsys_mgr(); + Xoa_gfs_mgr gfs_mgr = lang_mgr.Gfs_mgr(); Xoa_fsys_mgr app_fsys_mgr = gfs_mgr.App_fsys_mgr(); gfs_mgr.Run_url_for(this, Xol_lang_itm_.xo_lang_fil_(app_fsys_mgr, String_.new_a7(v))); gfs_mgr.Run_url_for(gfs_mgr.Root_invk(), Xol_convert_regy.Bld_url(app_fsys_mgr, key_str)); } diff --git a/400_xowa/src/gplx/xowa/langs/bldrs/Xol_mw_lang_parser.java b/400_xowa/src/gplx/xowa/langs/bldrs/Xol_mw_lang_parser.java index c1016405e..21ce8f173 100644 --- a/400_xowa/src/gplx/xowa/langs/bldrs/Xol_mw_lang_parser.java +++ b/400_xowa/src/gplx/xowa/langs/bldrs/Xol_mw_lang_parser.java @@ -344,24 +344,24 @@ public class Xol_mw_lang_parser { public static int Id_by_mw_name(byte[] src) { if (mw_names == null) { mw_names = Btrie_slim_mgr.cs(); - mw_names.Add_obj("NS_MEDIA", Int_obj_val.new_(Xow_ns_.Tid__media)); - mw_names.Add_obj("NS_SPECIAL", Int_obj_val.new_(Xow_ns_.Tid__special)); - mw_names.Add_obj("NS_MAIN", Int_obj_val.new_(Xow_ns_.Tid__main)); - mw_names.Add_obj("NS_TALK", Int_obj_val.new_(Xow_ns_.Tid__talk)); - mw_names.Add_obj("NS_USER", Int_obj_val.new_(Xow_ns_.Tid__user)); - mw_names.Add_obj("NS_USER_TALK", Int_obj_val.new_(Xow_ns_.Tid__user_talk)); - mw_names.Add_obj("NS_PROJECT", Int_obj_val.new_(Xow_ns_.Tid__project)); - mw_names.Add_obj("NS_PROJECT_TALK", Int_obj_val.new_(Xow_ns_.Tid__project_talk)); - mw_names.Add_obj("NS_FILE", Int_obj_val.new_(Xow_ns_.Tid__file)); - mw_names.Add_obj("NS_FILE_TALK", Int_obj_val.new_(Xow_ns_.Tid__file_talk)); - mw_names.Add_obj("NS_MEDIAWIKI", Int_obj_val.new_(Xow_ns_.Tid__mediawiki)); - mw_names.Add_obj("NS_MEDIAWIKI_TALK", Int_obj_val.new_(Xow_ns_.Tid__mediawiki_talk)); - mw_names.Add_obj("NS_TEMPLATE", Int_obj_val.new_(Xow_ns_.Tid__template)); - mw_names.Add_obj("NS_TEMPLATE_TALK", Int_obj_val.new_(Xow_ns_.Tid__template_talk)); - mw_names.Add_obj("NS_HELP", Int_obj_val.new_(Xow_ns_.Tid__help)); - mw_names.Add_obj("NS_HELP_TALK", Int_obj_val.new_(Xow_ns_.Tid__help_talk)); - mw_names.Add_obj("NS_CATEGORY", Int_obj_val.new_(Xow_ns_.Tid__category)); - mw_names.Add_obj("NS_CATEGORY_TALK", Int_obj_val.new_(Xow_ns_.Tid__category_talk)); + mw_names.Add_obj("NS_MEDIA", new Int_obj_val(Xow_ns_.Tid__media)); + mw_names.Add_obj("NS_SPECIAL", new Int_obj_val(Xow_ns_.Tid__special)); + mw_names.Add_obj("NS_MAIN", new Int_obj_val(Xow_ns_.Tid__main)); + mw_names.Add_obj("NS_TALK", new Int_obj_val(Xow_ns_.Tid__talk)); + mw_names.Add_obj("NS_USER", new Int_obj_val(Xow_ns_.Tid__user)); + mw_names.Add_obj("NS_USER_TALK", new Int_obj_val(Xow_ns_.Tid__user_talk)); + mw_names.Add_obj("NS_PROJECT", new Int_obj_val(Xow_ns_.Tid__project)); + mw_names.Add_obj("NS_PROJECT_TALK", new Int_obj_val(Xow_ns_.Tid__project_talk)); + mw_names.Add_obj("NS_FILE", new Int_obj_val(Xow_ns_.Tid__file)); + mw_names.Add_obj("NS_FILE_TALK", new Int_obj_val(Xow_ns_.Tid__file_talk)); + mw_names.Add_obj("NS_MEDIAWIKI", new Int_obj_val(Xow_ns_.Tid__mediawiki)); + mw_names.Add_obj("NS_MEDIAWIKI_TALK", new Int_obj_val(Xow_ns_.Tid__mediawiki_talk)); + mw_names.Add_obj("NS_TEMPLATE", new Int_obj_val(Xow_ns_.Tid__template)); + mw_names.Add_obj("NS_TEMPLATE_TALK", new Int_obj_val(Xow_ns_.Tid__template_talk)); + mw_names.Add_obj("NS_HELP", new Int_obj_val(Xow_ns_.Tid__help)); + mw_names.Add_obj("NS_HELP_TALK", new Int_obj_val(Xow_ns_.Tid__help_talk)); + mw_names.Add_obj("NS_CATEGORY", new Int_obj_val(Xow_ns_.Tid__category)); + mw_names.Add_obj("NS_CATEGORY_TALK", new Int_obj_val(Xow_ns_.Tid__category_talk)); } Object o = mw_names.Match_exact(src, 0, src.length); return o == null ? Xow_ns_.Tid__null : ((Int_obj_val)o).Val(); diff --git a/400_xowa/src/gplx/xowa/langs/bldrs/Xol_mw_lang_parser_tst.java b/400_xowa/src/gplx/xowa/langs/bldrs/Xol_mw_lang_parser_tst.java index 353b67ef2..df57b044e 100644 --- a/400_xowa/src/gplx/xowa/langs/bldrs/Xol_mw_lang_parser_tst.java +++ b/400_xowa/src/gplx/xowa/langs/bldrs/Xol_mw_lang_parser_tst.java @@ -42,11 +42,11 @@ public class Xol_mw_lang_parser_tst { ; } @Test public void Core_keywords_func_currentmonth() { - Tfds.Now_enabled_y_(); + Datetime_now.Manual_y_(); fxt.Parse_core("$magicWords = array('currentmonth' => array(0, 'MOISACTUEL'));") .Tst_parse("{{MOISACTUEL}}", "01") ; - Tfds.Now_enabled_n_(); + Datetime_now.Manual_n_(); } @Test public void Core_keywords_func_ns() { fxt.Parse_core("$magicWords = array('ns' => array(0, 'ESPACEN'));") diff --git a/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_data_ctg_tst.java b/400_xowa/src/gplx/xowa/langs/commas/Xol_comma_wkr.java similarity index 71% rename from 400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_data_ctg_tst.java rename to 400_xowa/src/gplx/xowa/langs/commas/Xol_comma_wkr.java index 36efc3562..57079b90e 100644 --- a/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_data_ctg_tst.java +++ b/400_xowa/src/gplx/xowa/langs/commas/Xol_comma_wkr.java @@ -15,10 +15,9 @@ 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.wikis.ctgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; -import org.junit.*; -public class Xoctg_data_ctg_tst { -// @Before public void init() {fxt.Clear();} private Xoctg_idx_mgr_fxt fxt = new Xoctg_idx_mgr_fxt(); - @Test public void Basic() { - } +package gplx.xowa.langs.commas; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*; +public interface Xol_comma_wkr { + void Evt_lang_changed(Xol_lang_itm lang_itm); + void Comma__itm(Bry_bfr bfr, int itm_idx, int itms_len); + void Comma__end(Bry_bfr bfr); } diff --git a/400_xowa/src/gplx/xowa/langs/commas/Xol_comma_wkr__add.java b/400_xowa/src/gplx/xowa/langs/commas/Xol_comma_wkr__add.java new file mode 100644 index 000000000..efc4b9f15 --- /dev/null +++ b/400_xowa/src/gplx/xowa/langs/commas/Xol_comma_wkr__add.java @@ -0,0 +1,30 @@ +/* +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.langs.commas; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*; +import gplx.xowa.langs.msgs.*; +public class Xol_comma_wkr__add implements Xol_comma_wkr { + private byte[] comma_bry = Bry_.new_a7(", "); // needed for TEST + public void Evt_lang_changed(Xol_lang_itm lang_itm) { + this.comma_bry = lang_itm.Msg_mgr().Val_by_bry_or(Bry_.new_a7("comma-separator"), Byte_ascii.Comma_bry); + } + public void Comma__itm(Bry_bfr bfr, int itm_idx, int itms_len) { + if (itm_idx != itms_len - 1) + bfr.Add(comma_bry); + } + public void Comma__end(Bry_bfr bfr) {} +} diff --git a/400_xowa/src/gplx/xowa/langs/durations/Xol_duration_itm_.java b/400_xowa/src/gplx/xowa/langs/durations/Xol_duration_itm_.java index 7716158d2..d80d3127f 100644 --- a/400_xowa/src/gplx/xowa/langs/durations/Xol_duration_itm_.java +++ b/400_xowa/src/gplx/xowa/langs/durations/Xol_duration_itm_.java @@ -76,5 +76,5 @@ class Xol_duration_itm_sorter implements gplx.core.lists.ComparerAble { Xol_duration_itm rhs = (Xol_duration_itm)rhsObj; return -Long_.Compare(lhs.Seconds(), rhs.Seconds()); // - to sort from largest to smallest } - public static final Xol_duration_itm_sorter Instance = new Xol_duration_itm_sorter(); Xol_duration_itm_sorter() {} + public static final Xol_duration_itm_sorter Instance = new Xol_duration_itm_sorter(); Xol_duration_itm_sorter() {}// TS.static } diff --git a/400_xowa/src/gplx/xowa/langs/durations/Xol_duration_mgr.java b/400_xowa/src/gplx/xowa/langs/durations/Xol_duration_mgr.java index 2c0550e37..a617285f7 100644 --- a/400_xowa/src/gplx/xowa/langs/durations/Xol_duration_mgr.java +++ b/400_xowa/src/gplx/xowa/langs/durations/Xol_duration_mgr.java @@ -16,12 +16,14 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.langs.durations; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*; +import gplx.core.brys.fmtrs.*; import gplx.xowa.parsers.*; import gplx.xowa.langs.msgs.*; public class Xol_duration_mgr { private Xol_msg_itm[] interval_msgs = null; + private final Bry_bfr tmp_bfr = Bry_bfr_.Reset(255); + private final Bry_fmtr tmp_fmtr = Bry_fmtr.New__tmp(); public Xol_duration_mgr(Xol_lang_itm lang) {this.lang = lang;} private Xol_lang_itm lang; - private Bry_bfr tmp_bfr = Bry_bfr_.Reset(255); public Xol_interval_itm[] Get_duration_intervals(long seconds, Xol_duration_itm[] intervals) { if (intervals == null) intervals = Xol_duration_itm_.Ary_default; Array_.Sort(intervals, Xol_duration_itm_sorter.Instance); @@ -49,7 +51,7 @@ public class Xol_duration_mgr { for (int i = 0; i < intervals_len; i++) { Xol_interval_itm interval = intervals[i]; Xol_msg_itm msg_itm = interval_msgs[interval.Duration_itm().Tid()]; - byte[] msg_bry = msg_itm.Fmt(tmp_bfr, interval.Val()); + byte[] msg_bry = msg_itm.Fmt(tmp_bfr, tmp_fmtr, interval.Val()); msg_bry = ctx.Wiki().Parser_mgr().Main().Parse_text_to_html(ctx, msg_bry); msgs_ary[i] = msg_bry; } diff --git a/400_xowa/src/gplx/xowa/langs/kwds/Xol_kwd_grp_.java b/400_xowa/src/gplx/xowa/langs/kwds/Xol_kwd_grp_.java index 67b4ce929..090780459 100644 --- a/400_xowa/src/gplx/xowa/langs/kwds/Xol_kwd_grp_.java +++ b/400_xowa/src/gplx/xowa/langs/kwds/Xol_kwd_grp_.java @@ -466,7 +466,7 @@ default: throw Err_.new_unhandled(id); int len = Bry__.length; for (int i = 0; i < len; i++) { byte[] bry = Bry__[i]; - hash.Add(bry, Int_obj_val.new_(i)); + hash.Add(bry, new Int_obj_val(i)); } } Object o = hash.Get_by_bry(find); diff --git a/400_xowa/src/gplx/xowa/langs/msgs/Xol_msg_itm.java b/400_xowa/src/gplx/xowa/langs/msgs/Xol_msg_itm.java index 1b9484322..a3df18ee3 100644 --- a/400_xowa/src/gplx/xowa/langs/msgs/Xol_msg_itm.java +++ b/400_xowa/src/gplx/xowa/langs/msgs/Xol_msg_itm.java @@ -19,31 +19,30 @@ package gplx.xowa.langs.msgs; import gplx.*; import gplx.xowa.*; import gplx.xow import gplx.core.brys.fmtrs.*; public class Xol_msg_itm { public Xol_msg_itm(int id, byte[] key) {this.id = id; this.key = key;} - public int Id() {return id;} private final int id; - public byte[] Key() {return key;} private final byte[] key; - public byte[] Val() {return val;} private byte[] val; - public int Src() {return src;} public Xol_msg_itm Src_(int v) {src = v; return this;} private int src; - public boolean Src_is_missing() {return src == Src_missing;} - public boolean Has_fmt_arg() {return has_fmt_arg;} private boolean has_fmt_arg; - public boolean Has_tmpl_txt() {return has_tmpl_txt;} private boolean has_tmpl_txt; - public boolean Dirty() {return dirty;} public Xol_msg_itm Dirty_(boolean v) {dirty = v; return this;} private boolean dirty; // BLDR: + public int Id() {return id;} private final int id; + public byte[] Key() {return key;} private final byte[] key; + public byte[] Val() {return val;} private byte[] val; + public int Src() {return src;} private int src; + public boolean Src_is_missing() {return src == Src_missing;} + public boolean Has_fmt_arg() {return has_fmt_arg;} private boolean has_fmt_arg; + public boolean Has_tmpl_txt() {return has_tmpl_txt;} private boolean has_tmpl_txt; + public boolean Dirty() {return dirty;} private boolean dirty; // BLDR: + + public Xol_msg_itm Src_(int v) {src = v; return this;} + public Xol_msg_itm Dirty_(boolean v) {dirty = v; return this;} + public void Atrs_set(byte[] val, boolean has_fmt_arg, boolean has_tmpl_txt) { this.val = val; this.has_fmt_arg = has_fmt_arg; this.has_tmpl_txt = has_tmpl_txt; } - public byte[] Fmt(Bry_bfr bfr, Object... args) { - synchronized (tmp_fmtr) { - tmp_fmtr.Fmt_(val); - tmp_fmtr.Bld_bfr_many(bfr, args); - return bfr.To_bry_and_clear(); - } + public byte[] Fmt(Bry_bfr bfr, Bry_fmtr fmtr, Object... args) { + fmtr.Fmt_(val); + fmtr.Bld_bfr_many(bfr, args); + return bfr.To_bry_and_clear(); } - public byte[] Fmt_tmp(Bry_bfr bfr, byte[] tmp_val, Object... args) { - synchronized (tmp_fmtr) { - tmp_fmtr.Fmt_(tmp_val); - tmp_fmtr.Bld_bfr_many(bfr, args); - return bfr.To_bry_and_clear(); - } + public byte[] Fmt_tmp(Bry_bfr bfr, Bry_fmtr fmtr, byte[] tmp_val, Object... args) { + fmtr.Fmt_(tmp_val); + fmtr.Bld_bfr_many(bfr, args); + return bfr.To_bry_and_clear(); } - public static final int Src_null = 0, Src_lang = 1, Src_wiki = 2, Src_missing = 3; - private static Bry_fmtr tmp_fmtr = Bry_fmtr.tmp_(); + public static final int Src_null = 0, Src_lang = 1, Src_wiki = 2, Src_missing = 3; } diff --git a/400_xowa/src/gplx/xowa/langs/msgs/Xol_msg_itm_.java b/400_xowa/src/gplx/xowa/langs/msgs/Xol_msg_itm_.java index 4538ab513..afebabe61 100644 --- a/400_xowa/src/gplx/xowa/langs/msgs/Xol_msg_itm_.java +++ b/400_xowa/src/gplx/xowa/langs/msgs/Xol_msg_itm_.java @@ -259,7 +259,7 @@ public static final int update_val_(rv, val); return rv; } - private static final Bry_fmtr tmp_fmtr = Bry_fmtr.tmp_().Fail_when_invalid_escapes_(false); + private static final Bry_fmtr tmp_fmtr = Bry_fmtr.New__tmp().Fail_when_invalid_escapes_(false); private static final Bry_bfr tmp_bfr = Bry_bfr_.Reset(255); public static void update_val_(Xol_msg_itm itm, byte[] val) { synchronized (tmp_fmtr) { // LOCK:static-objs; DATE:2016-07-07 diff --git a/400_xowa/src/gplx/xowa/langs/msgs/Xol_msg_mgr_.java b/400_xowa/src/gplx/xowa/langs/msgs/Xol_msg_mgr_.java index 5f11d45ac..370fa1cf6 100644 --- a/400_xowa/src/gplx/xowa/langs/msgs/Xol_msg_mgr_.java +++ b/400_xowa/src/gplx/xowa/langs/msgs/Xol_msg_mgr_.java @@ -40,7 +40,7 @@ public class Xol_msg_mgr_ { return msg_itm == null ? null : String_.new_u8(msg_itm.Val()); } public static byte[] Get_msg_val(Xowe_wiki wiki, Xol_lang_itm lang, byte[] msg_key, byte[][] fmt_args) { - Bry_bfr tmp_bfr = Xoa_app_.Utl__bfr_mkr().Get_b512(); + Bry_bfr tmp_bfr = wiki.Utl__bfr_mkr().Get_b512(); Xol_msg_itm msg_itm = Get_msg_itm(tmp_bfr, wiki, lang, msg_key); byte[] rv = Get_msg_val(tmp_bfr, wiki, msg_itm, fmt_args); tmp_bfr.Mkr_rls(); @@ -52,7 +52,7 @@ public class Xol_msg_mgr_ { if (!has_fmt && !has_tmpl) // no fmt or tmpl; just add val return msg_val; if (has_fmt) { // fmt exists; fmt first (before tmpl text); EX: Expression error: Unrecognised word "~{0}" - Bry_fmtr tmp_fmtr = Bry_fmtr.tmp_().Missing_bgn_(Missing_bry).Missing_end_(Bry_.Empty).Missing_adj_(1); + Bry_fmtr tmp_fmtr = Bry_fmtr.New__tmp().Missing_bgn_(Missing_bry).Missing_end_(Bry_.Empty).Missing_adj_(1); tmp_fmtr.Fmt_(msg_val); tmp_fmtr.Bld_bfr(tmp_bfr, fmt_args); msg_val = tmp_bfr.To_bry_and_clear(); diff --git a/400_xowa/src/gplx/xowa/langs/msgs/Xow_msg_mgr.java b/400_xowa/src/gplx/xowa/langs/msgs/Xow_msg_mgr.java index 859ed4bfc..570cf98a7 100644 --- a/400_xowa/src/gplx/xowa/langs/msgs/Xow_msg_mgr.java +++ b/400_xowa/src/gplx/xowa/langs/msgs/Xow_msg_mgr.java @@ -16,9 +16,11 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.langs.msgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*; +import gplx.core.brys.fmtrs.*; import gplx.xowa.htmls.sidebar.*; public class Xow_msg_mgr implements Gfo_invk { private final Xowe_wiki wiki; private Xol_lang_itm lang; private final Xol_msg_mgr msg_mgr; + private final Bry_fmtr tmp_fmtr = Bry_fmtr.New__tmp(); public Xow_msg_mgr(Xowe_wiki wiki, Xol_lang_itm lang) { this.wiki = wiki; this.lang = lang; @@ -35,7 +37,7 @@ public class Xow_msg_mgr implements Gfo_invk { Xol_msg_itm itm = msg_mgr.Itm_by_id_or_null(id); if (itm == null) itm = lang.Msg_mgr().Itm_by_id_or_null(id); - Bry_bfr tmp_bfr = Xoa_app_.Utl__bfr_mkr().Get_b512(); + Bry_bfr tmp_bfr = wiki.Utl__bfr_mkr().Get_b512(); byte[] rv = Val_by_itm(tmp_bfr, itm, args); tmp_bfr.Mkr_rls(); return rv; @@ -45,7 +47,7 @@ public class Xow_msg_mgr implements Gfo_invk { public Xol_msg_itm Find_or_null(byte[] key) { Xol_msg_itm itm = msg_mgr.Itm_by_key_or_null(key); if (itm == null) { - Bry_bfr tmp_bfr = Xoa_app_.Utl__bfr_mkr().Get_b512(); + Bry_bfr tmp_bfr = wiki.Utl__bfr_mkr().Get_b512(); itm = Xol_msg_mgr_.Get_msg_itm(tmp_bfr, wiki, lang, key); if (itm.Src_is_missing()) itm = null; tmp_bfr.Mkr_rls(); @@ -57,7 +59,7 @@ public class Xow_msg_mgr implements Gfo_invk { public byte[] Val_by_key_obj(byte[] key) {return Val_by_key(key, null);} private byte[] Val_by_key(byte[] key, Object[] args) { Xol_msg_itm itm = msg_mgr.Itm_by_key_or_null(key); - Bry_bfr tmp_bfr = Xoa_app_.Utl__bfr_mkr().Get_b512(); + Bry_bfr tmp_bfr = wiki.Utl__bfr_mkr().Get_b512(); if (itm == null) itm = Xol_msg_mgr_.Get_msg_itm(tmp_bfr, wiki, lang, key); if (itm.Src_is_missing()) { @@ -70,12 +72,12 @@ public class Xow_msg_mgr implements Gfo_invk { } public byte[] Val_by_itm(Bry_bfr tmp_bfr, Xol_msg_itm itm, Object[] args) { byte[] rv = itm.Val(); - if (args != null) rv = itm.Fmt_tmp(tmp_bfr, rv, args); + if (args != null) rv = itm.Fmt_tmp(tmp_bfr, tmp_fmtr, rv, args); if (itm.Has_tmpl_txt()) rv = wiki.Parser_mgr().Main().Expand_tmpl(rv); return rv; } public byte[] Val_html_accesskey_and_title(byte[] id) { - Bry_bfr bfr = Xoa_app_.Utl__bfr_mkr().Get_b512(); + Bry_bfr bfr = wiki.Utl__bfr_mkr().Get_b512(); byte[] rv = Val_html_accesskey_and_title(id, bfr, null); bfr.Mkr_rls(); return rv; diff --git a/400_xowa/src/gplx/xowa/langs/vnts/converts/Xol_convert_mgr.java b/400_xowa/src/gplx/xowa/langs/vnts/converts/Xol_convert_mgr.java index fa6fb0de7..175a4ccb7 100644 --- a/400_xowa/src/gplx/xowa/langs/vnts/converts/Xol_convert_mgr.java +++ b/400_xowa/src/gplx/xowa/langs/vnts/converts/Xol_convert_mgr.java @@ -18,7 +18,8 @@ along with this program. If not, see . package gplx.xowa.langs.vnts.converts; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*; import gplx.xowa.langs.vnts.*; import gplx.xowa.wikis.nss.*; import gplx.xowa.wikis.data.tbls.*; public class Xol_convert_mgr { - private final Ordered_hash tmp_page_list = Ordered_hash_.New_bry(); + private final Ordered_hash tmp_page_list = Ordered_hash_.New_bry(); + private final Bry_bfr tmp_bfr = Bry_bfr_.New(); public Xol_convert_regy Converter_regy() {return converter_regy;} private final Xol_convert_regy converter_regy = new Xol_convert_regy(); public Xol_convert_wkr[] Converter_ary() {return wkr_ary;} private Xol_convert_wkr[] wkr_ary; private int wkr_ary_len; public void Init(Xol_vnt_regy regy) { @@ -32,18 +33,12 @@ public class Xol_convert_mgr { } } public byte[] Convert_text(int vnt_idx, byte[] src, int bgn, int end) { - Bry_bfr tmp_bfr = Xoa_app_.Utl__bfr_mkr().Get_m001(); Xol_convert_wkr converter = wkr_ary[vnt_idx]; converter.Convert_text(tmp_bfr, src, bgn, end); - return tmp_bfr.To_bry_and_rls(); - } - public Xowd_page_itm Convert_ttl(Xow_wiki wiki, Xoa_ttl ttl) {return Convert_ttl(wiki, ttl.Ns(), ttl.Page_db());} // NOTE: not Full_db as ttl.Ns is passed; EX:Шаблон:Šablon:Jez-eng; PAGE:sr.w:ДНК DATE:2014-07-06 - public Xowd_page_itm Convert_ttl(Xow_wiki wiki, Xow_ns ns, byte[] ttl_bry) { - Bry_bfr tmp_bfr = Xoa_app_.Utl__bfr_mkr().Get_b512(); - Xowd_page_itm rv = Convert_ttl(wiki, tmp_bfr, ns, ttl_bry); - tmp_bfr.Mkr_rls(); - return rv; + return tmp_bfr.To_bry_and_clear(); } + public Xowd_page_itm Convert_ttl(Xow_wiki wiki, Xoa_ttl ttl) {return Convert_ttl(wiki, ttl.Ns(), ttl.Page_db());} // NOTE: not Full_db as ttl.Ns is passed; EX:Шаблон:Šablon:Jez-eng; PAGE:sr.w:ДНК DATE:2014-07-06 + public Xowd_page_itm Convert_ttl(Xow_wiki wiki, Xow_ns ns, byte[] ttl_bry) {return Convert_ttl(wiki, tmp_bfr, ns, ttl_bry);} private Xowd_page_itm Convert_ttl(Xow_wiki wiki, Bry_bfr tmp_bfr, Xow_ns ns, byte[] ttl_bry) { // REF.MW:LanguageConverter.php|findVariantLink synchronized (tmp_page_list) { // THREAD: int converted = Convert_ttl__convert_each_vnt(wiki, tmp_bfr, ns, ttl_bry); // convert ttl for each vnt diff --git a/400_xowa/src/gplx/xowa/parsers/Xop_ctx.java b/400_xowa/src/gplx/xowa/parsers/Xop_ctx.java index 714ab2bb1..31a8ad9a1 100644 --- a/400_xowa/src/gplx/xowa/parsers/Xop_ctx.java +++ b/400_xowa/src/gplx/xowa/parsers/Xop_ctx.java @@ -19,7 +19,7 @@ package gplx.xowa.parsers; import gplx.*; import gplx.xowa.*; import gplx.core.btries.*; import gplx.core.log_msgs.*; import gplx.xowa.langs.*; import gplx.xowa.guis.*; -import gplx.xowa.xtns.scribunto.*; import gplx.xowa.xtns.wdatas.*; import gplx.xowa.xtns.lst.*; +import gplx.xowa.xtns.scribunto.*; import gplx.xowa.xtns.wbases.*; import gplx.xowa.xtns.lst.*; import gplx.xowa.parsers.apos.*; import gplx.xowa.parsers.amps.*; import gplx.xowa.parsers.lnkes.*; import gplx.xowa.parsers.hdrs.*; import gplx.xowa.parsers.lists.*; import gplx.xowa.parsers.tblws.*; import gplx.xowa.parsers.paras.*; import gplx.xowa.parsers.xndes.*; import gplx.xowa.parsers.lnkis.*; import gplx.xowa.parsers.tmpls.*; import gplx.xowa.parsers.logs.*; import gplx.xowa.htmls.modules.popups.keeplists.*; public class Xop_ctx { diff --git a/400_xowa/src/gplx/xowa/parsers/Xop_parser.java b/400_xowa/src/gplx/xowa/parsers/Xop_parser.java index 0fad2211a..ca54a91d0 100644 --- a/400_xowa/src/gplx/xowa/parsers/Xop_parser.java +++ b/400_xowa/src/gplx/xowa/parsers/Xop_parser.java @@ -51,7 +51,7 @@ public class Xop_parser { // NOTE: parsers are reused; do not keep any read-writ } public byte[] Parse_text_to_html(Xop_ctx ctx, byte[] src) { - Bry_bfr bfr = Xoa_app_.Utl__bfr_mkr().Get_b512(); + Bry_bfr bfr = wiki.Utl__bfr_mkr().Get_b512(); Parse_text_to_html(bfr, ctx, ctx.Page(), false, src); return bfr.To_bry_and_rls(); } diff --git a/400_xowa/src/gplx/xowa/parsers/Xop_tmp_mgr.java b/400_xowa/src/gplx/xowa/parsers/Xop_tmp_mgr.java index dedde0de1..3d22c03a3 100644 --- a/400_xowa/src/gplx/xowa/parsers/Xop_tmp_mgr.java +++ b/400_xowa/src/gplx/xowa/parsers/Xop_tmp_mgr.java @@ -16,13 +16,15 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.parsers; import gplx.*; import gplx.xowa.*; -import gplx.core.primitives.*; +import gplx.core.primitives.*; import gplx.core.btries.*; import gplx.xowa.files.*; import gplx.xowa.xtns.pfuncs.exprs.*; import gplx.xowa.xtns.math.*; public class Xop_tmp_mgr { public Xof_math_itm Math_itm() {return math_itm;} private final Xof_math_itm math_itm = new Xof_math_itm(); public Xof_xfer_itm Xfer_itm() {return xfer_itm;} private final Xof_xfer_itm xfer_itm = new Xof_xfer_itm(); - public Number_parser Pfunc_num_parser_0() {return num_parser_0;} private final Number_parser num_parser_0 = new Number_parser().Hex_enabled_(true); - public Number_parser Pfunc_num_parser_1() {return num_parser_1;} private final Number_parser num_parser_1 = new Number_parser().Hex_enabled_(true); + public Gfo_number_parser Pfunc_num_parser_0() {return num_parser_0;} private final Gfo_number_parser num_parser_0 = new Gfo_number_parser().Hex_enabled_(true); + public Gfo_number_parser Pfunc_num_parser_1() {return num_parser_1;} private final Gfo_number_parser num_parser_1 = new Gfo_number_parser().Hex_enabled_(true); public Pfunc_expr_shunter Expr_shunter() {return expr_shunter;} private final Pfunc_expr_shunter expr_shunter = new Pfunc_expr_shunter(); + public Btrie_slim_mgr Xnde__xtn_end() {return xnde__xtn_end;} private final Btrie_slim_mgr xnde__xtn_end = Btrie_slim_mgr.ci_a7(); // NOTE:ci.ascii:MW_const.en; listed XML node names are en + public Btrie_rv Xnde__trv() {return xnde__trv;} private final Btrie_rv xnde__trv = new Btrie_rv(); } diff --git a/400_xowa/src/gplx/xowa/parsers/Xow_parser_mgr.java b/400_xowa/src/gplx/xowa/parsers/Xow_parser_mgr.java index 820793edc..57b93696d 100644 --- a/400_xowa/src/gplx/xowa/parsers/Xow_parser_mgr.java +++ b/400_xowa/src/gplx/xowa/parsers/Xow_parser_mgr.java @@ -16,10 +16,10 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.parsers; import gplx.*; import gplx.xowa.*; -// using gplx.langs.jsons; +import gplx.core.primitives.*; import gplx.core.brys.fmtrs.*; import gplx.xowa.wikis.*; import gplx.core.envs.*; import gplx.xowa.files.*; -import gplx.xowa.xtns.pfuncs.ifs.*; import gplx.xowa.xtns.scribunto.*; import gplx.xowa.xtns.pfuncs.times.*; +import gplx.xowa.xtns.pfuncs.ifs.*; import gplx.xowa.xtns.scribunto.*; import gplx.xowa.xtns.pfuncs.times.*; import gplx.xowa.xtns.wbases.hwtrs.*; public class Xow_parser_mgr { private final Xowe_wiki wiki; private final Xop_tkn_mkr tkn_mkr; private Xop_parser anchor_encode_parser; @@ -35,7 +35,14 @@ public class Xow_parser_mgr { public Xof_url_bldr Url_bldr() {return url_bldr;} private final Xof_url_bldr url_bldr = Xof_url_bldr.new_v2(); public List_adp Time_parser_itms() {return time_parser_itms;} private final List_adp time_parser_itms = List_adp_.New(); public Pft_func_formatdate_bldr Date_fmt_bldr() {return date_fmt_bldr;} private final Pft_func_formatdate_bldr date_fmt_bldr = new Pft_func_formatdate_bldr(); - // public Json_parser Wbase_jdoc_parser() {return wbase_jdoc_parser;} private final Json_parser wbase_jdoc_parser = new Json_parser(); + public Gfo_number_parser Pp_num_parser() {return pp_num_parser;} private final Gfo_number_parser pp_num_parser = new Gfo_number_parser().Ignore_space_at_end_y_(); + public Bry_bfr Wbase__time__bfr() {return wbase__time__bfr;} private final Bry_bfr wbase__time__bfr = Bry_bfr_.New(); + public Bry_fmtr Wbase__time__fmtr() {return wbase__time__fmtr;} private final Bry_fmtr wbase__time__fmtr = Bry_fmtr.new_(); + public Wdata_hwtr_msgs Wbase__time__msgs() { + if (wbase__time__msgs == null) + wbase__time__msgs = Wdata_hwtr_msgs.new_(wiki.Msg_mgr()); + return wbase__time__msgs; + } private Wdata_hwtr_msgs wbase__time__msgs; public Xop_parser Anchor_encoder() { if (anchor_encode_parser == null) { anchor_encode_parser = Xop_parser.new_(wiki, wiki.Parser_mgr().Main().Tmpl_lxr_mgr(), Xop_lxr_mgr.new_anchor_encoder()); diff --git a/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_wkr.java b/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_wkr.java index 66302cc1c..c7bbb1a67 100644 --- a/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_wkr.java +++ b/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_wkr.java @@ -22,7 +22,7 @@ import gplx.xowa.wikis.*; import gplx.xowa.parsers.lnkis.files.*; import gplx.xo import gplx.xowa.parsers.tmpls.*; import gplx.xowa.parsers.miscs.*; public class Xop_lnki_wkr implements Xop_ctx_wkr, Xop_arg_wkr { private Arg_bldr arg_bldr = Arg_bldr.Instance; - private Number_parser number_parser = new Number_parser(); + private Gfo_number_parser number_parser = new Gfo_number_parser(); private Sites_regy_mgr sites_regy_mgr; public void Ctor_ctx(Xop_ctx ctx) {} public void Page_bgn(Xop_ctx ctx, Xop_root_tkn root) { diff --git a/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_wkr_.java b/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_wkr_.java index 7cc0dbf97..9014335e3 100644 --- a/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_wkr_.java +++ b/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_wkr_.java @@ -92,7 +92,7 @@ public class Xop_lnki_wkr_ { else return bgn_pos; } - public static void Page_parse(Xop_ctx ctx, byte[] src, Number_parser number_parser, Xop_lnki_tkn lnki, Arg_nde_tkn arg) { + public static void Page_parse(Xop_ctx ctx, byte[] src, Gfo_number_parser number_parser, Xop_lnki_tkn lnki, Arg_nde_tkn arg) { int val_tkn_bgn = arg.Val_tkn().Src_bgn(), val_tkn_end = arg.Val_tkn().Src_end(); byte[] val_bry = Bry_.Trim(src, val_tkn_bgn, val_tkn_end); // some tkns have trailing space; EX.WWI: [[File:Bombers of WW1.ogg|thumb |thumbtime=3]] number_parser.Parse(val_bry); @@ -105,7 +105,7 @@ public class Xop_lnki_wkr_ { int val_tkn_bgn = arg.Val_tkn().Src_bgn(), val_tkn_end = arg.Val_tkn().Src_end(); return Bry_.Trim(src, val_tkn_bgn, val_tkn_end); // trim trailing space } - public static void Thumbtime_parse(Xop_ctx ctx, byte[] src, Number_parser number_parser, Xop_lnki_tkn lnki, Arg_nde_tkn arg) { + public static void Thumbtime_parse(Xop_ctx ctx, byte[] src, Gfo_number_parser number_parser, Xop_lnki_tkn lnki, Arg_nde_tkn arg) { int val_tkn_bgn = arg.Val_tkn().Src_bgn(), val_tkn_end = arg.Val_tkn().Src_end(); long fracs = Time_span_.parse_to_fracs(src, val_tkn_bgn, val_tkn_end, false); if (fracs == Time_span_.parse_null) { diff --git a/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_wkr__basic_tst.java b/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_wkr__basic_tst.java index e9f9f5a0a..3ea5909f6 100644 --- a/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_wkr__basic_tst.java +++ b/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_wkr__basic_tst.java @@ -308,7 +308,7 @@ public class Xop_lnki_wkr__basic_tst { Xowe_wiki wiki = fxt.Wiki(); Xoa_ttl ttl = Xoa_ttl.Parse(wiki, Bry_.new_a7("Src")); // simulate requrest for "Src" page Xoae_page previous_page = Xoae_page.New_test(wiki, ttl); - previous_page.Redirect().Itms__add__article(previous_page.Url(), ttl, null); // simulate redirect from "Src" + previous_page.Redirect_trail().Itms__add__article(previous_page.Url(), ttl, null); // simulate redirect from "Src" fxt.App().Usere().History_mgr().Add(previous_page); // simulate "Src" already being clicked once; this is the key call fxt.Wtr_cfg().Lnki_visited_y_(); fxt.Test_parse_page_all_str("[[Src]]" , "Src"); // show [[Src]] as visited since it exists in history diff --git a/400_xowa/src/gplx/xowa/parsers/utils/Xop_redirect_mgr.java b/400_xowa/src/gplx/xowa/parsers/utils/Xop_redirect_mgr.java index 6da6632c5..6bb68fc0f 100644 --- a/400_xowa/src/gplx/xowa/parsers/utils/Xop_redirect_mgr.java +++ b/400_xowa/src/gplx/xowa/parsers/utils/Xop_redirect_mgr.java @@ -71,8 +71,9 @@ public class Xop_redirect_mgr { ); } public static byte[] Bld_redirect_msg(Xoae_app app, Xowe_wiki wiki, Xopg_redirect_mgr redirect_mgr) { + // NOTE: this assumes that redirect_mgr only has redirect_src, not redirect_trg; note that #REDIRECT [[A]] only adds redirect_src, whereas special redirects add redirect_trg; DATE:2016-07-31 int len = redirect_mgr.Itms__len(); if (len == 0) return Bry_.Empty; - Bry_bfr redirect_bfr = Xoa_app_.Utl__bfr_mkr().Get_b512(); + Bry_bfr redirect_bfr = wiki.Utl__bfr_mkr().Get_b512(); boolean dirty = false; for (int i = 0; i < len; i++) { Xopg_redirect_itm redirect_itm = redirect_mgr.Itms__get_at(i); diff --git a/400_xowa/src/gplx/xowa/parsers/xndes/Xop_xnde_wkr_.java b/400_xowa/src/gplx/xowa/parsers/xndes/Xop_xnde_wkr_.java index 367c8b8b3..d344099d4 100644 --- a/400_xowa/src/gplx/xowa/parsers/xndes/Xop_xnde_wkr_.java +++ b/400_xowa/src/gplx/xowa/parsers/xndes/Xop_xnde_wkr_.java @@ -19,9 +19,6 @@ package gplx.xowa.parsers.xndes; import gplx.*; import gplx.xowa.*; import gplx. import gplx.core.primitives.*; import gplx.core.btries.*; import gplx.xowa.xtns.pfuncs.strings.*; class Xop_xnde_wkr_ { - private static final Btrie_slim_mgr xtn_end_tag_trie = Btrie_slim_mgr.ci_a7(); // NOTE:ci.ascii:MW_const.en; listed XML node names are en - private static final int Find_xtn_end__tid__bgn = 0, Find_xtn_end__tid__end = 1, Find_xtn_end__tid__xtag = 2; - private static final Int_obj_ref Find_xtn_end__key__bgn = Int_obj_ref.New(Find_xtn_end__tid__bgn), Find_xtn_end__key__end = Int_obj_ref.New(Find_xtn_end__tid__end), Find_xtn_end__key__xtag = Int_obj_ref.New(Find_xtn_end__tid__xtag); public static void AutoClose_handle_dangling_nde_in_caption(Xop_root_tkn root, Xop_tkn_itm owner) { int subs_bgn = -1, subs_len = owner.Subs_len(); for (int i = 0; i < subs_len; i++) { @@ -35,39 +32,38 @@ class Xop_xnde_wkr_ { root.Subs_move(owner, subs_bgn, subs_len); // move everything after "|" back to root } public static int Find_xtn_end(Xop_ctx ctx, byte[] src, int open_end, int src_end, byte[] open_bry, byte[] close_bry) { - synchronized (xtn_end_tag_trie) { // LOCK:static-obj; DATE:2016-07-06 - xtn_end_tag_trie.Clear(); - xtn_end_tag_trie.Add_obj(Pfunc_tag.Xtag_bgn_lhs, Find_xtn_end__key__xtag); - xtn_end_tag_trie.Add_obj(open_bry, Find_xtn_end__key__bgn); - xtn_end_tag_trie.Add_obj(close_bry, Find_xtn_end__key__end); - int depth = 0; - for (int i = open_end; i < src_end; ++i) { - Object o = xtn_end_tag_trie.Match_bgn(src, i, src_end); - if (o != null) { - int tid = ((Int_obj_ref)o).Val(); - switch (tid) { - case Find_xtn_end__tid__bgn: // handle nested refs; PAGE:en.w:UK; DATE:2015-12-26 - int angle_end_pos = Bry_find_.Find_fwd(src, Byte_ascii.Angle_end, i, src_end); if (angle_end_pos == Bry_find_.Not_found) {Xoa_app_.Usr_dlg().Warn_many("", "", "parser.xtn: could not find angle_end: page=~{0}", ctx.Page().Url().To_str()); return Bry_find_.Not_found;} - if (src[angle_end_pos -1] == Byte_ascii.Slash) {} - else - ++depth; - break; - case Find_xtn_end__tid__end: // xtn_end found; use it - if (depth == 0) - return i; - else - --depth; - break; - case Find_xtn_end__tid__xtag: // xtag found; skip over it; PAGE:it.s:La_Secchia_rapita/Canto_primo DATE:2015-12-03 - int xtag_end = Find_xtag_end(ctx, src, i, src_end); - int angle_end = Bry_find_.Find_fwd(src, Byte_ascii.Angle_end, xtag_end, src_end); - i = angle_end; - break; - } + Btrie_slim_mgr xtn_end_tag_trie = ctx.Tmp_mgr().Xnde__xtn_end(); + xtn_end_tag_trie.Clear(); + xtn_end_tag_trie.Add_obj(Pfunc_tag.Xtag_bgn_lhs, Find_xtn_end__key__xtag); + xtn_end_tag_trie.Add_obj(open_bry, Find_xtn_end__key__bgn); + xtn_end_tag_trie.Add_obj(close_bry, Find_xtn_end__key__end); + int depth = 0; + for (int i = open_end; i < src_end; ++i) { + Object o = xtn_end_tag_trie.Match_at(ctx.Tmp_mgr().Xnde__trv(), src, i, src_end); + if (o != null) { + int tid = ((Int_obj_val)o).Val(); + switch (tid) { + case Find_xtn_end__tid__bgn: // handle nested refs; PAGE:en.w:UK; DATE:2015-12-26 + int angle_end_pos = Bry_find_.Find_fwd(src, Byte_ascii.Angle_end, i, src_end); if (angle_end_pos == Bry_find_.Not_found) {Xoa_app_.Usr_dlg().Warn_many("", "", "parser.xtn: could not find angle_end: page=~{0}", ctx.Page().Url().To_str()); return Bry_find_.Not_found;} + if (src[angle_end_pos -1] == Byte_ascii.Slash) {} + else + ++depth; + break; + case Find_xtn_end__tid__end: // xtn_end found; use it + if (depth == 0) + return i; + else + --depth; + break; + case Find_xtn_end__tid__xtag: // xtag found; skip over it; PAGE:it.s:La_Secchia_rapita/Canto_primo DATE:2015-12-03 + int xtag_end = Find_xtag_end(ctx, src, i, src_end); + int angle_end = Bry_find_.Find_fwd(src, Byte_ascii.Angle_end, xtag_end, src_end); + i = angle_end; + break; } } - return Bry_find_.Not_found; } + return Bry_find_.Not_found; } public static int Find_xtag_end(Xop_ctx ctx, byte[] src, int pos, int src_end) { int xtag_bgn = pos + Pfunc_tag.Xtag_bgn_lhs.length; @@ -80,4 +76,9 @@ class Xop_xnde_wkr_ { rv = Bry_find_.Find_bwd(src, Byte_ascii.Lt, rv - 1); if (rv == Bry_find_.Not_found) {ctx.App().Usr_dlg().Warn_many("", "", "parser.xtn: could not find <: page=~{0}", ctx.Page().Url().To_str()); return Bry_find_.Not_found;} return rv; } + private static final int Find_xtn_end__tid__bgn = 0, Find_xtn_end__tid__end = 1, Find_xtn_end__tid__xtag = 2; + private static final Int_obj_val + Find_xtn_end__key__bgn = new Int_obj_val(Find_xtn_end__tid__bgn) + , Find_xtn_end__key__end = new Int_obj_val(Find_xtn_end__tid__end) + , Find_xtn_end__key__xtag = new Int_obj_val(Find_xtn_end__tid__xtag); } diff --git a/400_xowa/src/gplx/xowa/specials/Xoa_special_mgr.java b/400_xowa/src/gplx/xowa/specials/Xoa_special_mgr.java index 5fcbfdcfb..7a914f163 100644 --- a/400_xowa/src/gplx/xowa/specials/Xoa_special_mgr.java +++ b/400_xowa/src/gplx/xowa/specials/Xoa_special_mgr.java @@ -19,7 +19,7 @@ package gplx.xowa.specials; import gplx.*; import gplx.xowa.*; public class Xoa_special_mgr implements Gfo_invk { private Ordered_hash hash = Ordered_hash_.New(); public Xoa_special_mgr() { - hash.Add(gplx.xowa.xtns.wdatas.specials.Wdata_itemByTitle_cfg.Key, new gplx.xowa.xtns.wdatas.specials.Wdata_itemByTitle_cfg()); + hash.Add(gplx.xowa.xtns.wbases.specials.Wdata_itemByTitle_cfg.Key, new gplx.xowa.xtns.wbases.specials.Wdata_itemByTitle_cfg()); } public void Add(String key, Gfo_invk cfg) {hash.Add(key, cfg);} public Gfo_invk Get_or_null(String key) {return (Gfo_invk)hash.Get_by(key);} diff --git a/400_xowa/src/gplx/xowa/specials/Xow_special_mgr.java b/400_xowa/src/gplx/xowa/specials/Xow_special_mgr.java index 18ad06d68..e961dbe64 100644 --- a/400_xowa/src/gplx/xowa/specials/Xow_special_mgr.java +++ b/400_xowa/src/gplx/xowa/specials/Xow_special_mgr.java @@ -21,7 +21,7 @@ import gplx.xowa.langs.*; import gplx.xowa.langs.specials.*; import gplx.xowa.specials.*; import gplx.xowa.specials.allPages.*; import gplx.xowa.specials.nearby.*; import gplx.xowa.specials.statistics.*; import gplx.xowa.xtns.translates.*; import gplx.xowa.specials.movePage.*; import gplx.xowa.specials.xowa.system_data.*; import gplx.xowa.specials.xowa.default_tab.*; import gplx.xowa.specials.xowa.popup_history.*; import gplx.xowa.addons.wikis.imports.*; import gplx.xowa.specials.xowa.diags.*; -import gplx.xowa.xtns.wdatas.specials.*; +import gplx.xowa.xtns.wbases.specials.*; import gplx.xowa.users.data.*; import gplx.xowa.users.bmks.*; import gplx.xowa.specials.mgrs.*; import gplx.xowa.addons.wikis.searchs.specials.*; public class Xow_special_mgr { @@ -98,7 +98,7 @@ public class Xow_special_mgr { Xow_special_page special = (Xow_special_page)hash.Get_by_bry(special_name); if (special != null) { // special found; generate it; special = special.Special__clone(); - page.Db().Page().Modified_on_(DateAdp_.Now()); + page.Db().Page().Modified_on_(Datetime_now.Get()); try {special.Special__gen(wiki, page, url, ttl);} catch (Exception e) {Gfo_log_.Instance.Warn("failed to generate special page", "url", url.To_str(), "err", Err_.Message_gplx_log(e));} } diff --git a/400_xowa/src/gplx/xowa/specials/allPages/Xows_page_allpages.java b/400_xowa/src/gplx/xowa/specials/allPages/Xows_page_allpages.java index cedb6f8aa..f341e93d5 100644 --- a/400_xowa/src/gplx/xowa/specials/allPages/Xows_page_allpages.java +++ b/400_xowa/src/gplx/xowa/specials/allPages/Xows_page_allpages.java @@ -122,22 +122,26 @@ public class Xows_page_allpages implements gplx.core.brys.Bfr_arg, Gfo_invk, Xow public Xow_ns Init_ns() {return init_ns;} private Xow_ns init_ns; public void Build_html(Xoae_page page) { Bry_bfr tmp_bfr = wiki.Utl__bfr_mkr().Get_m001(); - byte[] anchor_prv = Build_html_end(tmp_bfr, rslt_prv, false); - byte[] anchor_nxt = Build_html_end(tmp_bfr, rslt_nxt, true); + Bry_fmtr fmtr = Bry_fmtr.New__tmp(); + + byte[] anchor_prv = Build_html_end(tmp_bfr, fmtr, rslt_prv, false); + byte[] anchor_nxt = Build_html_end(tmp_bfr, fmtr, rslt_nxt, true); html_all.Bld_bfr_many(tmp_bfr, this, anchor_prv, anchor_nxt); page.Db().Text().Text_bry_(tmp_bfr.To_bry_and_clear()); tmp_bfr.Mkr_rls(); page.Html_data().Html_restricted_n_(); } - byte[] Build_html_end(Bry_bfr bfr, Xowd_page_itm itm, boolean fwd) { + byte[] Build_html_end(Bry_bfr bfr, Bry_fmtr fmtr, Xowd_page_itm itm, boolean fwd) { Xoa_ttl ttl = Xows_page_allpages.ttl_(wiki, init_ns, itm); if (ttl == null) return Bry_.Empty; // occurs when range is empty; EX: Module:A in simplewikibooks int msg_id = fwd ? Xol_msg_itm_.Id_sp_allpages_fwd : Xol_msg_itm_.Id_sp_allpages_bwd; Xol_msg_itm msg_itm = wiki.Lang().Msg_mgr().Itm_by_id_or_null(msg_id); - Bry_bfr tmp_bfr = wiki.Utl__bfr_mkr().Get_b512().Mkr_rls(); - byte[] lbl_text = msg_itm.Fmt(tmp_bfr, ttl.Full_txt_w_ttl_case()); - byte[] args__rest = arg_hash.Concat(tmp_bfr, Bry_arg_ns, Bry_arg_hideredirects); - byte[] arg_from = gplx.langs.htmls.encoders.Gfo_url_encoder_.Id.Encode(ttl.Page_txt_wo_qargs()); - return html_list_end.Bld_bry_many(bfr, arg_from, args__rest, lbl_text); + Bry_bfr tmp_bfr = wiki.Utl__bfr_mkr().Get_b512(); + try { + byte[] lbl_text = msg_itm.Fmt(tmp_bfr, fmtr, ttl.Full_txt_w_ttl_case()); + byte[] args__rest = arg_hash.Concat(tmp_bfr, Bry_arg_ns, Bry_arg_hideredirects); + byte[] arg_from = gplx.langs.htmls.encoders.Gfo_url_encoder_.Id.Encode(ttl.Page_txt_wo_qargs()); + return html_list_end.Bld_bry_many(bfr, arg_from, args__rest, lbl_text); + } finally {tmp_bfr.Mkr_rls();} } public static Xoa_ttl ttl_(Xowe_wiki wiki, Xow_ns ns, Xowd_page_itm itm) { byte[] ttl_bry = itm.Ttl_page_db(); diff --git a/400_xowa/src/gplx/xowa/specials/mgrs/Xosp_special_mgr.java b/400_xowa/src/gplx/xowa/specials/mgrs/Xosp_special_mgr.java index 082a7666b..34057455a 100644 --- a/400_xowa/src/gplx/xowa/specials/mgrs/Xosp_special_mgr.java +++ b/400_xowa/src/gplx/xowa/specials/mgrs/Xosp_special_mgr.java @@ -47,7 +47,7 @@ public class Xosp_special_mgr { } if (o != null) { // Xow_special_page special = (Xow_special_page)o; - // page.Revision_data().Modified_on_(DateAdp_.Now()); + // page.Revision_data().Modified_on_(Datetime_now.Get()); // special.Special__gen(wiki, page, url, ttl); } } diff --git a/400_xowa/src/gplx/xowa/users/Xou_user_.java b/400_xowa/src/gplx/xowa/users/Xou_user_.java index e64dd2fd9..19272d7d0 100644 --- a/400_xowa/src/gplx/xowa/users/Xou_user_.java +++ b/400_xowa/src/gplx/xowa/users/Xou_user_.java @@ -55,7 +55,7 @@ class Xou_user_ { rv = rv.Add_new(-2, "Media").Add_new(-1, "Special").Add_new(0, "").Add_new(1, "Talk").Add_new(2, "User").Add_new(3, "User talk").Add_new(4, "Wikipedia").Add_new(5, "Wikipedia talk") .Add_new(6, "File").Add_new(7, "File talk").Add_new(8, "MediaWiki").Add_new(9, "MediaWiki talk").Add_new(10, "Template").Add_new(11, "Template talk") .Add_new(12, "Help").Add_new(13, "Help talk").Add_new(14, "Category").Add_new(15, "Category talk").Add_new(100, "Portal").Add_new(101, "Portal talk") - .Add_new(gplx.xowa.xtns.wdatas.Wdata_wiki_mgr.Ns_property, gplx.xowa.xtns.wdatas.Wdata_wiki_mgr.Ns_property_name) + .Add_new(gplx.xowa.xtns.wbases.Wdata_wiki_mgr.Ns_property, gplx.xowa.xtns.wbases.Wdata_wiki_mgr.Ns_property_name) .Add_new(730, "Data").Add_new(731, "Data talk") .Add_new(Xow_ns_.Tid__module, Xow_ns_.Key__module).Add_new(Xow_ns_.Tid__module_talk, Xow_ns_.Key__module_talk) .Add_defaults() diff --git a/400_xowa/src/gplx/xowa/users/data/Xoud_opt_scope_tst.java b/400_xowa/src/gplx/xowa/users/data/Xoud_opt_scope_tst.java index 6ee2031b3..745eabc25 100644 --- a/400_xowa/src/gplx/xowa/users/data/Xoud_opt_scope_tst.java +++ b/400_xowa/src/gplx/xowa/users/data/Xoud_opt_scope_tst.java @@ -32,7 +32,7 @@ public class Xoud_opt_scope_tst { class Xoud_opt_scope_fxt { private final Xoud_opt_scope_parser parser = new Xoud_opt_scope_parser(); public void Clear() { - // Gfo_usr_dlg_.I = Xoa_app_.usr_dlg_console_(); + // Gfo_usr_dlg_.I = Xoa_app_.New__usr_dlg__console(); } public Xoud_opt_scope Make(int lang_id, int type_id) {return new Xoud_opt_scope(lang_id, type_id);} public void Test_parse(String raw, Xoud_opt_scope... expd) { diff --git a/400_xowa/src/gplx/xowa/users/history/Xou_history_itm.java b/400_xowa/src/gplx/xowa/users/history/Xou_history_itm.java index 1ee98ee81..bdedfa0f4 100644 --- a/400_xowa/src/gplx/xowa/users/history/Xou_history_itm.java +++ b/400_xowa/src/gplx/xowa/users/history/Xou_history_itm.java @@ -23,7 +23,7 @@ public class Xou_history_itm { this.wiki = wiki; this.page = page; this.key = key_(wiki, page); - this.view_bgn = DateAdp_.Now(); + this.view_bgn = Datetime_now.Get(); } public byte[] Key() {return key;} private byte[] key; public byte[] Wiki() {return wiki;} private byte[] wiki; @@ -43,7 +43,7 @@ public class Xou_history_itm { } } public void Tally() { - view_end = view_count == 0 ? view_bgn : DateAdp_.Now(); + view_end = view_count == 0 ? view_bgn : Datetime_now.Get(); view_count++; } public void Merge(Xou_history_itm merge) { @@ -68,6 +68,6 @@ public class Xou_history_itm { .Add(wiki) .Add_byte(Bry_.Dlm_fld) .Add(page) .Add_byte(Bry_.Dlm_row); } - public static byte[] key_(byte[] wiki, byte[] page) {return Bry_.Add(wiki, Key_dlm, page);} private static final byte[] Key_dlm = Byte_ascii.Pipe_bry; + public static byte[] key_(byte[] wiki, byte[] page) {return Bry_.Add(wiki, Key_dlm, page);} private static final byte[] Key_dlm = Byte_ascii.Pipe_bry; public static final byte Fld_key = 0, Fld_wiki = 1, Fld_page = 2, Fld_view_count = 3, Fld_view_bgn = 4, Fld_view_end = 5; } diff --git a/400_xowa/src/gplx/xowa/users/history/Xou_history_mgr.java b/400_xowa/src/gplx/xowa/users/history/Xou_history_mgr.java index 874f667b0..57e33b50f 100644 --- a/400_xowa/src/gplx/xowa/users/history/Xou_history_mgr.java +++ b/400_xowa/src/gplx/xowa/users/history/Xou_history_mgr.java @@ -47,8 +47,8 @@ public class Xou_history_mgr implements Gfo_invk { Xoa_url url = page.Url(); Xoa_ttl ttl = page.Ttl(); byte[] page_ttl = null; - if (page.Redirect().Itms__len() > 0) // page was redirected; add src ttl to history, not trg; EX: UK -> United Kingdom; add "UK"; DATE:2014-02-28 - page_ttl = page.Redirect().Itms__get_at(0).Ttl().Full_db(); + if (page.Redirect_trail().Itms__len() > 0) // page was redirected; add src ttl to history, not trg; EX: UK -> United Kingdom; add "UK"; DATE:2014-02-28 + page_ttl = page.Redirect_trail().Itms__get_at_0th_or_null().Ttl().Page_db(); else { page_ttl = Bry_.Add(ttl.Ns().Name_db_w_colon(), ttl.Page_txt()); // use ttl.Page_txt() b/c it normalizes space/casing (url.Page_txt does not) if (url.Qargs_ary().length > 0) @@ -107,7 +107,7 @@ public class Xou_history_mgr implements Gfo_invk { // save archive byte[] ary = Xou_history_itm_srl.Save(archive_itms); - Io_url url = app.Usere().Fsys_mgr().App_data_history_fil().GenNewNameOnly(DateAdp_.Now().XtoStr_fmt_yyyyMMdd_HHmmss_fff()); + Io_url url = app.Usere().Fsys_mgr().App_data_history_fil().GenNewNameOnly(Datetime_now.Get().XtoStr_fmt_yyyyMMdd_HHmmss_fff()); Io_mgr.Instance.SaveFilBry(url, ary); return current_itms; } private int current_itms_max = 512, current_itms_reset = 256; diff --git a/400_xowa/src/gplx/xowa/users/history/Xou_history_mgr_tst.java b/400_xowa/src/gplx/xowa/users/history/Xou_history_mgr_tst.java index d31794b82..2dff69cc6 100644 --- a/400_xowa/src/gplx/xowa/users/history/Xou_history_mgr_tst.java +++ b/400_xowa/src/gplx/xowa/users/history/Xou_history_mgr_tst.java @@ -21,7 +21,7 @@ public class Xou_history_mgr_tst { private Xou_history_mgr_fxt fxt = new Xou_history_mgr_fxt(); @Before public void init() {fxt.Clear();} @Test public void Archive() { - Tfds.Now_enabled_y_(); // NOTE: each DateTime_.Now() advances clock by 1 min; adding a new DateAdp_.Now() anywhere will throw off times on this test; DATE:2014-04-01 + Datetime_now.Manual_y_(); // NOTE: each DateTime_.Now() advances clock by 1 min; adding a new Datetime_now.Get() anywhere will throw off times on this test; DATE:2014-04-01 fxt.Invk(Xou_history_mgr.Invk_current_itms_max_, 4).Invk(Xou_history_mgr.Invk_current_itms_reset_, 2); fxt.Add_many("A", "B", "C", "D", "E"); fxt.Save(); @@ -67,7 +67,7 @@ class Xou_history_mgr_fxt { byte[] ttl_bry = Bry_.new_u8(ttl_str); Xoa_ttl ttl = Xoa_ttl.Parse(wiki, ttl_bry); Xoae_page page = Xoae_page.New_test(wiki, ttl); - page.Db().Page().Modified_on_(DateAdp_.Now()); + page.Db().Page().Modified_on_(Datetime_now.Get()); byte[] url_bry = ttl_bry; if (arg_str != null) url_bry = Bry_.Add(url_bry, Bry_.new_u8(arg_str)); Xoa_url url = wiki.Utl__url_parser().Parse(url_bry); diff --git a/400_xowa/src/gplx/xowa/users/history/Xoud_history_mgr.java b/400_xowa/src/gplx/xowa/users/history/Xoud_history_mgr.java index faba42546..50c48b709 100644 --- a/400_xowa/src/gplx/xowa/users/history/Xoud_history_mgr.java +++ b/400_xowa/src/gplx/xowa/users/history/Xoud_history_mgr.java @@ -30,7 +30,7 @@ public class Xoud_history_mgr implements Gfo_invk { } private void Update(String wiki, String page, String qarg) { // Xoud_history_row row = history_tbl.Select_by_page(wiki, page, qarg); -// DateAdp time = DateAdp_.Now(); +// DateAdp time = Datetime_now.Get(); // if (row == null) // history_tbl.Insert(wiki, page, qarg, time, 1); // else diff --git a/400_xowa/src/gplx/xowa/wikis/Xoae_wiki_mgr.java b/400_xowa/src/gplx/xowa/wikis/Xoae_wiki_mgr.java index f901d3eb1..cd00f60c4 100644 --- a/400_xowa/src/gplx/xowa/wikis/Xoae_wiki_mgr.java +++ b/400_xowa/src/gplx/xowa/wikis/Xoae_wiki_mgr.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.xowa.wikis; import gplx.*; import gplx.xowa.*; -import gplx.xowa.langs.*; import gplx.xowa.xtns.wdatas.*; +import gplx.xowa.langs.*; import gplx.xowa.xtns.wbases.*; import gplx.xowa.wikis.domains.*; import gplx.xowa.wikis.domains.crts.*; import gplx.xowa.wikis.nss.*; import gplx.xowa.wikis.metas.*; public class Xoae_wiki_mgr implements Xoa_wiki_mgr, Gfo_invk { private final Xoae_app app; diff --git a/400_xowa/src/gplx/xowa/wikis/Xow_page_tid.java b/400_xowa/src/gplx/xowa/wikis/Xow_page_tid.java index 0af366c18..4ec16d440 100644 --- a/400_xowa/src/gplx/xowa/wikis/Xow_page_tid.java +++ b/400_xowa/src/gplx/xowa/wikis/Xow_page_tid.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.wikis; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.nss.*; -import gplx.xowa.xtns.wdatas.*; +import gplx.xowa.xtns.wbases.*; public class Xow_page_tid { public static byte Identify(int wiki_tid, int ns_id, byte[] ttl) { switch (ns_id) { @@ -37,6 +37,6 @@ public class Xow_page_tid { else if (Bry_.Has_at_end(ttl, Ext_js)) return Tid_js; else return Tid_wikitext; } - private static final byte[] Ext_js = Bry_.new_a7(".js"), Ext_css = Bry_.new_a7(".css"), Ext_doc= Bry_.new_a7("/doc"); + private static final byte[] Ext_js = Bry_.new_a7(".js"), Ext_css = Bry_.new_a7(".css"), Ext_doc= Bry_.new_a7("/doc"); public static final byte Tid_wikitext = 1, Tid_json = 2, Tid_js = 3, Tid_css = 4, Tid_lua = 5; } diff --git a/400_xowa/src/gplx/xowa/wikis/Xowv_wiki.java b/400_xowa/src/gplx/xowa/wikis/Xowv_wiki.java index c1863507a..ba614a621 100644 --- a/400_xowa/src/gplx/xowa/wikis/Xowv_wiki.java +++ b/400_xowa/src/gplx/xowa/wikis/Xowv_wiki.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.xowa.wikis; import gplx.*; import gplx.xowa.*; -import gplx.core.primitives.*; import gplx.core.net.*; +import gplx.core.primitives.*; import gplx.core.net.*; import gplx.core.brys.*; import gplx.core.ios.*; import gplx.dbs.*; import gplx.xowa.apps.*; import gplx.xowa.guis.*; @@ -75,7 +75,9 @@ public class Xowv_wiki implements Xow_wiki, Xow_ttl_parser, Gfo_invk { public Xol_lang_itm Lang() {return lang;} private final Xol_lang_itm lang; public Xol_case_mgr Case_mgr() {if (case_mgr == null) case_mgr = Xol_case_mgr_.U8(); return case_mgr;} private Xol_case_mgr case_mgr; public Xow_site_stats_mgr Stats() {return stats;} private final Xow_site_stats_mgr stats; - public Xow_url_parser Utl__url_parser() {return url__parser;} private final Xow_url_parser url__parser; + public Bry_bfr_mkr Utl__bfr_mkr() {return utl__bry_bfr_mkr;} private final Bry_bfr_mkr utl__bry_bfr_mkr = new Bry_bfr_mkr(); + public Io_stream_zip_mgr Utl__zip_mgr() {return utl__zip_mgr;} private final Io_stream_zip_mgr utl__zip_mgr = new Io_stream_zip_mgr(); + public Xow_url_parser Utl__url_parser() {return url__parser;} private final Xow_url_parser url__parser; public Xoax_addon_mgr Addon_mgr() {return addon_mgr;} private final Xoax_addon_mgr addon_mgr = new Xoax_addon_mgr(); public Xosp_special_mgr Special_mgr() {return special_mgr;} private Xosp_special_mgr special_mgr; public Xow_xwiki_mgr Xwiki_mgr() {return xwiki_mgr;} private final Xow_xwiki_mgr xwiki_mgr; diff --git a/400_xowa/src/gplx/xowa/wikis/caches/Xow_page_cache.java b/400_xowa/src/gplx/xowa/wikis/caches/Xow_page_cache.java index 9d51242cd..0609fb20c 100644 --- a/400_xowa/src/gplx/xowa/wikis/caches/Xow_page_cache.java +++ b/400_xowa/src/gplx/xowa/wikis/caches/Xow_page_cache.java @@ -34,7 +34,7 @@ public class Xow_page_cache { else if (rv == null) { Xoae_page page = wiki.Data_mgr().Load_page_by_ttl(ttl); // NOTE: do not call Db_mgr.Load_page; need to handle redirects if (page.Db().Page().Exists()) { - rv = new Xow_page_cache_itm(page.Ttl(), page.Db().Text().Text_bry(), page.Redirect().Itms__get_at_0th_or_null()); + rv = new Xow_page_cache_itm(page.Ttl(), page.Db().Text().Text_bry(), page.Redirect_trail().Itms__get_wtxt_at_0th_or_null()); synchronized (this) { // LOCK:high-usage;DATE:2016-07-14 cache.Add_bry_obj(ttl_full_db, rv); } @@ -55,8 +55,8 @@ public class Xow_page_cache { else if (rv == null) { Xoae_page page = wiki.Data_mgr().Load_page_by_ttl(ttl); // NOTE: do not call Db_mgr.Load_page; need to handle redirects if ( page.Db().Page().Exists() // page exists - || page.Redirect().Itms__len() > 0 ) { // page redirects to missing page; note that page.Missing == true and page.Redirected_src() != null; PAGE: en.w:Shah_Rukh_Khan; DATE:2016-05-02 - rv = new Xow_page_cache_itm(page.Ttl(), page.Db().Text().Text_bry(), page.Redirect().Itms__get_at_0th_or_null()); + || page.Redirect_trail().Itms__len() > 0 ) { // page redirects to missing page; note that page.Missing == true and page.Redirected_src() != null; PAGE: en.w:Shah_Rukh_Khan; DATE:2016-05-02 + rv = new Xow_page_cache_itm(page.Ttl(), page.Db().Text().Text_bry(), page.Redirect_trail().Itms__get_wtxt_at_0th_or_null()); synchronized (this) { // LOCK:high-usage;DATE:2016-07-14 cache.Add_bry_obj(ttl_full_db, rv); } diff --git a/400_xowa/src/gplx/xowa/wikis/caches/Xow_page_cache_itm.java b/400_xowa/src/gplx/xowa/wikis/caches/Xow_page_cache_itm.java index e21db0650..39fb96cdb 100644 --- a/400_xowa/src/gplx/xowa/wikis/caches/Xow_page_cache_itm.java +++ b/400_xowa/src/gplx/xowa/wikis/caches/Xow_page_cache_itm.java @@ -33,7 +33,8 @@ public class Xow_page_cache_itm implements Xowd_text_bry_owner { public int Redirect_id() {return redirect_id;} private int redirect_id; public void Set_text_bry_by_db(byte[] v) {this.wtxt__direct = v;} public void Set_page_ids(int page_id, int redirect_id) {this.page_id = page_id; this.redirect_id = redirect_id;} - public void Set_redirect_bry(byte[] trg_wtxt) { + public void Set_redirect(Xoa_ttl ttl, byte[] trg_wtxt) { + this.ttl = ttl; this.wtxt__redirect = wtxt__direct; this.wtxt__direct = trg_wtxt; } diff --git a/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_fmtr_itm_base.java b/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_fmtr_itm_base.java index b4134a576..6a4162e7c 100644 --- a/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_fmtr_itm_base.java +++ b/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_fmtr_itm_base.java @@ -22,6 +22,7 @@ import gplx.xowa.langs.*; import gplx.xowa.langs.msgs.*; import gplx.xowa.users.history.*; abstract class Xoctg_fmtr_itm_base implements gplx.core.brys.Bfr_arg, Xoctg_fmtr_itm { private Xou_history_mgr history_mgr; private Xoh_wtr_ctx hctx; + private final Bry_bfr tmp_bfr = Bry_bfr_.New(); protected Xowe_wiki wiki; Xol_lang_itm lang; Xoctg_view_ctg ctg; protected int len; protected Xoh_href_parser href_parser; protected Bry_fmtr html_itm, html_itm_missing; protected Xoctg_view_grp list; protected Xow_msg_mgr msg_mgr; public void Init_from_all(Xowe_wiki wiki, Xol_lang_itm lang, Xoh_wtr_ctx hctx, Xoctg_view_ctg ctg, Xoctg_fmtr_all mgr, Xoctg_view_grp itms_list, int itms_list_len) { this.wiki = wiki; this.lang = lang; this.hctx = hctx; this.ctg = ctg; this.list = itms_list; this.len = itms_list_len; this.msg_mgr = wiki.Msg_mgr(); @@ -62,7 +63,7 @@ abstract class Xoctg_fmtr_itm_base implements gplx.core.brys.Bfr_arg, Xoctg_fmtr } @gplx.Virtual public void Bld_html(Bry_bfr bfr, Xowe_wiki wiki, Xoh_wtr_ctx hctx, Xoctg_view_itm itm, Xoa_ttl ttl, byte[] ttl_page, Xoh_href_parser href_parser, Bry_fmtr html_itm) { byte[] itm_href = wiki.Html__href_wtr().Build_to_bry(wiki, ttl); - byte[] itm_full_ttl = gplx.langs.htmls.Gfh_utl.Escape_html_as_bry(ttl.Full_txt_w_ttl_case());// NOTE: ttl.Full_txt() to get full ns; EX: Template:A instead of just "A" + byte[] itm_full_ttl = gplx.langs.htmls.Gfh_utl.Escape_html_as_bry(tmp_bfr, ttl.Full_txt_w_ttl_case());// NOTE: ttl.Full_txt() to get full ns; EX: Template:A instead of just "A" byte[] itm_atr_cls = hctx.Mode_is_hdump() ? Bry_.Empty : Xoh_lnki_wtr.Lnki_cls_visited(history_mgr, wiki.Domain_bry(), ttl.Page_txt()); // NOTE: must be ttl.Page_txt() in order to match Xou_history_mgr.Add Bry_fmtr fmtr = itm.Missing() ? html_itm_missing : html_itm; fmtr.Bld_bfr_many(bfr, itm_href, itm_full_ttl, itm_full_ttl, itm.Page_id(), itm_atr_cls); diff --git a/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_idx_mgr_tst.java b/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_idx_mgr_tst.java index f504e6822..d4f2f2228 100644 --- a/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_idx_mgr_tst.java +++ b/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_idx_mgr_tst.java @@ -76,7 +76,7 @@ class Xoctg_idx_mgr_fxt { return this; } private Xoae_app app; Xowe_wiki wiki; Xoctg_idx_mgr idx_mgr; static final byte[] Ctg_name = Bry_.new_a7("Ctg_test"); public byte[] Make_src(int len) { - Bry_bfr bfr = wiki.Utl__bfr_mkr().Get_k004().Mkr_rls(); + Bry_bfr bfr = Bry_bfr_.New(); bfr.Add_byte_pipe(); // always have leading pipe for (int i = 0; i < len; i++) { bfr.Add_base85_len_5(i).Add_byte(Byte_ascii.Semic); // idx.Id() = i diff --git a/400_xowa/src/gplx/xowa/wikis/data/Xow_data_mgr_tst.java b/400_xowa/src/gplx/xowa/wikis/data/Xow_data_mgr_tst.java index 0c00c5c99..0cc585b04 100644 --- a/400_xowa/src/gplx/xowa/wikis/data/Xow_data_mgr_tst.java +++ b/400_xowa/src/gplx/xowa/wikis/data/Xow_data_mgr_tst.java @@ -20,8 +20,8 @@ import org.junit.*; import gplx.xowa.wikis.tdbs.*; import gplx.xowa.wikis.nss.*; public class Xow_data_mgr_tst { Xow_data_mgr_fxt fxt = new Xow_data_mgr_fxt(); - @Before public void init() {fxt.Clear(); Tfds.Now_enabled_y_();} - @After public void term() {Tfds.Now_enabled_n_();} + @Before public void init() {fxt.Clear(); Datetime_now.Manual_y_();} + @After public void term() {Datetime_now.Manual_n_();} @Test public void Create() { fxt .Create("A1", "A1 data") .Create("B12", "B12 data") diff --git a/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_category_itm.java b/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_category_itm.java index 976cb4159..376461899 100644 --- a/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_category_itm.java +++ b/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_category_itm.java @@ -19,7 +19,7 @@ package gplx.xowa.wikis.data.tbls; import gplx.*; import gplx.xowa.*; import gpl import gplx.core.primitives.*; import gplx.xowa.wikis.ctgs.*; public class Xowd_category_itm { public int Id() {return id;} private int id; - public Int_obj_val Id_val() {if (id_val == null) id_val = Int_obj_val.new_(id); return id_val;} Int_obj_val id_val; + public Int_obj_val Id_val() {if (id_val == null) id_val = new Int_obj_val(id); return id_val;} Int_obj_val id_val; public int File_idx() {return file_idx;} private int file_idx; public boolean Hidden() {return hidden;} private boolean hidden; public int Count_all() {return count_subcs + count_files + count_pages;} @@ -40,5 +40,5 @@ public class Xowd_category_itm { rv.count_subcs = count_subcs; rv.count_files = count_files; rv.count_pages = count_pages; return rv; } - public static final Xowd_category_itm Null = new Xowd_category_itm(); Xowd_category_itm() {} + public static final Xowd_category_itm Null = new Xowd_category_itm(); Xowd_category_itm() {} } diff --git a/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_page_itm.java b/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_page_itm.java index 855aa04a8..85e8aee05 100644 --- a/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_page_itm.java +++ b/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_page_itm.java @@ -21,7 +21,7 @@ import gplx.xowa.wikis.nss.*; public class Xowd_page_itm { public Xowd_page_itm() {this.Clear();} public int Id() {return id;} public Xowd_page_itm Id_(int v) {id = v; id_val = null; return this;} private int id; - public Int_obj_val Id_val() {if (id_val == null) id_val = Int_obj_val.new_(id); return id_val;} private Int_obj_val id_val; + public Int_obj_val Id_val() {if (id_val == null) id_val = new Int_obj_val(id); return id_val;} private Int_obj_val id_val; public int Ns_id() {return ns_id;} public Xowd_page_itm Ns_id_(int v) {ns_id = v; return this;} private int ns_id; public byte[] Ttl_page_db() {return ttl_page_db;} public Xowd_page_itm Ttl_page_db_(byte[] v) {ttl_page_db = v; return this;} private byte[] ttl_page_db; // EX: Category1 public byte[] Ttl_full_db() {return ttl_full_db;} private byte[] ttl_full_db; // EX: Category:Category1 diff --git a/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_text_tbl.java b/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_text_tbl.java index e0f488840..edf1eef0c 100644 --- a/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_text_tbl.java +++ b/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_text_tbl.java @@ -22,7 +22,7 @@ public class Xowd_text_tbl implements Rls_able { private final String tbl_name = "text"; private final Dbmeta_fld_list flds = new Dbmeta_fld_list(); private final String fld_page_id, fld_text_data; private final Db_conn conn; private Db_stmt stmt_select, stmt_insert; - private final Io_stream_zip_mgr zip_mgr = Xoa_app_.Utl__zip_mgr(); private final byte zip_tid; + private final Io_stream_zip_mgr zip_mgr = new Io_stream_zip_mgr(); private final byte zip_tid; public String Fld_text_data() {return fld_text_data;} public Xowd_text_tbl(Db_conn conn, boolean schema_is_1, byte zip_tid) { this.conn = conn; this.zip_tid = zip_tid; diff --git a/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_wbase_pid_tbl.java b/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_wbase_pid_tbl.java index 6afa00483..45c4facbe 100644 --- a/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_wbase_pid_tbl.java +++ b/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_wbase_pid_tbl.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.xowa.wikis.data.tbls; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.data.*; -import gplx.dbs.*; import gplx.xowa.xtns.wdatas.*; +import gplx.dbs.*; import gplx.xowa.xtns.wbases.*; public class Xowd_wbase_pid_tbl implements Rls_able { private final String tbl_name; private final Dbmeta_fld_list flds = new Dbmeta_fld_list(); private final String fld_src_lang, fld_src_ttl, fld_trg_ttl; diff --git a/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_load_mgr_sql_tst.java b/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_load_mgr_sql_tst.java index 25301ee1d..82b1c923d 100644 --- a/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_load_mgr_sql_tst.java +++ b/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_load_mgr_sql_tst.java @@ -62,7 +62,7 @@ class Xodb_load_mgr_sql_fxt { int len = ary.length; Xodb_mgr_sql db_mgr = wiki.Db_mgr_as_sql(); Xowd_cat_core_tbl cat_core_tbl = db_mgr.Core_data_mgr().Db__cat_core().Tbl__cat_core().Create_tbl(); - DateAdp modified = DateAdp_.Now(); + DateAdp modified = Datetime_now.Get(); Xowd_page_tbl tbl_page = wiki.Db_mgr_as_sql().Core_data_mgr().Tbl__page(); tbl_page.Insert_bgn(); cat_core_tbl.Insert_bgn(); diff --git a/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_load_mgr_txt.java b/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_load_mgr_txt.java index dc7cbc360..34553aac6 100644 --- a/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_load_mgr_txt.java +++ b/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_load_mgr_txt.java @@ -500,8 +500,8 @@ public class Xodb_load_mgr_txt implements Xodb_load_mgr { public int Load_pid(byte[] lang_key, byte[] pid_name) { if (pids_root == null) pids_root = wiki.Appe().Wiki_mgr().Wdata_mgr().Wdata_wiki().Tdb_fsys_mgr().Site_dir().GenSubDir_nest("data", "pid"); - Xob_xdat_itm pid_itm = Load_xdat_itm_by_dir(pids_root.GenSubDir(String_.new_u8(lang_key)), pid_name); if (pid_itm == null) return gplx.xowa.xtns.wdatas.Wdata_wiki_mgr.Pid_null; - return Bry_.To_int_or(pid_itm.Src(), pid_itm.Itm_bgn() + pid_name.length + 1 + 1, pid_itm.Itm_end(), gplx.xowa.xtns.wdatas.Wdata_wiki_mgr.Pid_null); // extract pid; note that all itms have format of "ttl|pid"; +1=skip pipe; +1 skip p + Xob_xdat_itm pid_itm = Load_xdat_itm_by_dir(pids_root.GenSubDir(String_.new_u8(lang_key)), pid_name); if (pid_itm == null) return gplx.xowa.xtns.wbases.Wdata_wiki_mgr.Pid_null; + return Bry_.To_int_or(pid_itm.Src(), pid_itm.Itm_bgn() + pid_name.length + 1 + 1, pid_itm.Itm_end(), gplx.xowa.xtns.wbases.Wdata_wiki_mgr.Pid_null); // extract pid; note that all itms have format of "ttl|pid"; +1=skip pipe; +1 skip p } Io_url pids_root; public int Load_ctg_count(byte[] ttl) {return wiki.Db_mgr().Category_version() == Xoa_ctg_mgr.Version_1 ? Load_ctg_count_v1(ttl) : Load_ctg_count_v2(ttl);} int Load_ctg_count_v1(byte[] ttl) { diff --git a/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_save_mgr_sql.java b/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_save_mgr_sql.java index 78c324666..43b113f00 100644 --- a/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_save_mgr_sql.java +++ b/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_save_mgr_sql.java @@ -50,7 +50,7 @@ public class Xodb_save_mgr_sql implements Xodb_save_mgr { page_core_tbl.Insert_bgn(); page_text_tbl.Insert_bgn(); try { - db_mgr.Core_data_mgr().Create_page(page_core_tbl, page_text_tbl, page_id, ns_id, ttl.Page_db(), redirect, DateAdp_.Now(), text_zip, text_raw.length, ns_count, page_text_db.Id(), -1); + db_mgr.Core_data_mgr().Create_page(page_core_tbl, page_text_tbl, page_id, ns_id, ttl.Page_db(), redirect, Datetime_now.Get(), text_zip, text_raw.length, ns_count, page_text_db.Id(), -1); db_file.Tbl__ns().Update_ns_count(ns_id, ns_count); db_file.Tbl__cfg().Update_int("db", "page.id_next", page_id + 1); } finally { @@ -61,7 +61,7 @@ public class Xodb_save_mgr_sql implements Xodb_save_mgr { } public void Data_update(Xoae_page page, byte[] text_raw) { boolean redirect = db_mgr.Wiki().Redirect_mgr().Is_redirect(text_raw, text_raw.length); - DateAdp modified = update_modified_on_enabled ? DateAdp_.Now() : page.Db().Page().Modified_on(); + DateAdp modified = update_modified_on_enabled ? Datetime_now.Get() : page.Db().Page().Modified_on(); int page_id = page.Db().Page().Id(); db_mgr.Core_data_mgr().Tbl__page().Update__redirect__modified(page_id, redirect, modified); Xowd_page_itm db_page = new Xowd_page_itm(); diff --git a/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_save_mgr_txt.java b/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_save_mgr_txt.java index 6b157bea0..26b1a12c9 100644 --- a/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_save_mgr_txt.java +++ b/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_save_mgr_txt.java @@ -41,7 +41,7 @@ public class Xodb_save_mgr_txt implements Xodb_save_mgr { int page_id = page_id_next++; int fil_idx = 0; int ns_id = ttl.Ns().Id(); - Xotdb_page_itm_.Txt_page_save(tmp, page_id, DateAdp_.Now(), ttl_bry, text, true); + Xotdb_page_itm_.Txt_page_save(tmp, page_id, Datetime_now.Get(), ttl_bry, text, true); Io_url page_rdr_url = fsys_mgr.Url_ns_fil(Xotdb_dir_info_.Tid_page, ns_id, fil_idx); byte[] page_rdr_bry = gplx.core.ios.streams.Io_stream_rdr_.Load_all(page_rdr_url); Xob_xdat_file page_rdr = new Xob_xdat_file(); @@ -87,7 +87,7 @@ public class Xodb_save_mgr_txt implements Xodb_save_mgr { int text_len = text.length; DateAdp modified_on = tmp_page.Modified_on(); if (update_modified_on_enabled) { - modified_on = DateAdp_.Now(); + modified_on = Datetime_now.Get(); page.Db().Page().Modified_on_(modified_on); } Xotdb_page_itm_.Txt_page_save(tmp_bfr, db_page.Id(), modified_on, ttl_bry, text, true); diff --git a/400_xowa/src/gplx/xowa/wikis/domains/Xow_domain_uid_.java b/400_xowa/src/gplx/xowa/wikis/domains/Xow_domain_uid_.java index fc9f77d71..ed75bbc4f 100644 --- a/400_xowa/src/gplx/xowa/wikis/domains/Xow_domain_uid_.java +++ b/400_xowa/src/gplx/xowa/wikis/domains/Xow_domain_uid_.java @@ -96,10 +96,7 @@ public class Xow_domain_uid_ { default: throw Err_.new_unhandled(type_id); } Xol_lang_stub lang = Xol_lang_stub_.Get_by_id(lang_id); - Bry_bfr bfr = Xoa_app_.Utl__bfr_mkr().Get_b128(); - bfr.Add(lang.Key()).Add_byte_dot().Add(tid_bry).Add_byte_dot().Add(Xow_domain_itm_.Seg__org); - byte[] domain_bry = bfr.To_bry_and_clear(); - bfr.Mkr_rls(); + byte[] domain_bry = Bry_.Add(lang.Key(), Byte_ascii.Dot_bry, tid_bry, Byte_ascii.Dot_bry, Xow_domain_itm_.Seg__org); return Xow_domain_itm.new_(domain_bry, tid_int, lang, lang.Key()); } } diff --git a/400_xowa/src/gplx/xowa/wikis/nss/Xow_ns.java b/400_xowa/src/gplx/xowa/wikis/nss/Xow_ns.java index 39bdb0ec5..7b65d513e 100644 --- a/400_xowa/src/gplx/xowa/wikis/nss/Xow_ns.java +++ b/400_xowa/src/gplx/xowa/wikis/nss/Xow_ns.java @@ -35,7 +35,9 @@ public class Xow_ns implements Gfo_invk { } this.num_str = Int_.To_str_pad_bgn_zero(id, 3); this.num_bry = Bry_.new_a7(num_str); - this.name_enc = Xoa_url_encoder.Instance.Encode(name_db); + synchronized (url_encoder) { // LOCK:static-obj + this.name_enc = url_encoder.Encode(name_db); + } this.name_ui = Bry_.Replace(name_enc, Byte_ascii.Underline, Byte_ascii.Space); this.name_ui_w_colon = Bry_.Replace(name_db_w_colon, Byte_ascii.Underline, Byte_ascii.Space); } @@ -102,4 +104,6 @@ public class Xow_ns implements Gfo_invk { else return Gfo_invk_.Rv_unhandled; return this; } private static final String Invk_subpages_enabled_ = "subpages_enabled_", Invk_id = "id", Invk_name_txt = "name_txt", Invk_name_ui = "name_ui"; + + private static final Xoa_url_encoder url_encoder = new Xoa_url_encoder(); } diff --git a/400_xowa/src/gplx/xowa/wikis/nss/Xow_ns_canonical_.java b/400_xowa/src/gplx/xowa/wikis/nss/Xow_ns_canonical_.java index d3169cbd2..360fda042 100644 --- a/400_xowa/src/gplx/xowa/wikis/nss/Xow_ns_canonical_.java +++ b/400_xowa/src/gplx/xowa/wikis/nss/Xow_ns_canonical_.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.xowa.wikis.nss; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.core.primitives.*; public class Xow_ns_canonical_ { - public static final Xow_ns[] Ary = new Xow_ns[] // REF.MW: Namespace.php|$wgCanonicalNamespaceNames + public static final Xow_ns[] Ary = new Xow_ns[] // REF.MW: Namespace.php|$wgCanonicalNamespaceNames { New_itm(Xow_ns_.Tid__media , Xow_ns_.Key__media) , New_itm(Xow_ns_.Tid__special , Xow_ns_.Key__special) , New_itm(Xow_ns_.Tid__talk , Xow_ns_.Key__talk) @@ -47,7 +47,7 @@ public class Xow_ns_canonical_ { int len = Ary.length; for (int i = 0; i < len; ++i) { Xow_ns ns = Ary[i]; - id_hash.Add(ns.Name_db(), Int_obj_val.new_(ns.Id())); + id_hash.Add(ns.Name_db(), new Int_obj_val(ns.Id())); } } Object rv_obj = id_hash.Get_by(key); diff --git a/400_xowa/src/gplx/xowa/wikis/nss/Xow_ns_mgr.java b/400_xowa/src/gplx/xowa/wikis/nss/Xow_ns_mgr.java index 225aa0810..bec50e5cd 100644 --- a/400_xowa/src/gplx/xowa/wikis/nss/Xow_ns_mgr.java +++ b/400_xowa/src/gplx/xowa/wikis/nss/Xow_ns_mgr.java @@ -84,7 +84,7 @@ public class Xow_ns_mgr implements Gfo_invk, gplx.core.lists.ComparerAble { } public void Aliases_clear() {aliases.Clear();} public Xow_ns_mgr Aliases_add(int ns_id, String name) { - Keyval kv = Keyval_.new_(name, Int_obj_val.new_(ns_id)); + Keyval kv = Keyval_.new_(name, new Int_obj_val(ns_id)); aliases.Add_if_dupe_use_nth(name, kv); return this; } diff --git a/400_xowa/src/gplx/xowa/wikis/pages/Xow_page_mgr.java b/400_xowa/src/gplx/xowa/wikis/pages/Xow_page_mgr.java index 1be8c419e..c06beb51f 100644 --- a/400_xowa/src/gplx/xowa/wikis/pages/Xow_page_mgr.java +++ b/400_xowa/src/gplx/xowa/wikis/pages/Xow_page_mgr.java @@ -36,9 +36,9 @@ public class Xow_page_mgr implements Gfo_invk { switch (ns.Id()) { case Xow_ns_.Tid__special: // Special pages are built (not loaded from db) wiki.Special_mgr().Special__gen(wiki.App(), wiki, rv, url, ttl); - Xopg_redirect_itm redirect_itm = rv.Redirect().Itms__get_at_nth_or_null(); + Xopg_redirect_itm redirect_itm = rv.Redirect_trail().Itms__get_at_nth_or_null(); if (redirect_itm != null) { - rv.Redirect().Clear(); // clear needed; EX: Special:Random -> [[Redirected_page]] -> {must clear here} -> [[Page]] + rv.Redirect_trail().Clear(); // clear needed; EX: Special:Random -> [[Redirected_page]] -> {must clear here} -> [[Page]] Load_by_ns(rv, redirect_itm.Url(), redirect_itm.Ttl(), called_from_msg); } return; @@ -92,7 +92,8 @@ public class Xow_page_mgr implements Gfo_invk { return; // redirect; do some bookkeeping and reset ns / ttl - rv.Redirect().Itms__add__article(Xoa_url.New(wiki, redirect_ttl), redirect_ttl, wtxt); // NOTE: must be url_encoded; EX: "en.wikipedia.org/?!" should generate link of "en.wikipedia.org/%3F!?redirect=no" + // NOTE: this adds the target ttl to redirect_mgr (#REDIRECT [[A]]); note that special redirects will add source ttl; DATE:2016-07-31 + rv.Redirect_trail().Itms__add__article(Xoa_url.New(wiki, rv.Ttl()), rv.Ttl(), wtxt);// NOTE: must be url_encoded; EX: "en.wikipedia.org/?!" should generate link of "en.wikipedia.org/%3F!?redirect=no" rv.Ttl_(redirect_ttl); ns = redirect_ttl.Ns(); ttl = redirect_ttl; @@ -110,7 +111,7 @@ public class Xow_page_mgr implements Gfo_invk { rv.Db().Page().Id_(redirect_row.Id()).Modified_on_(redirect_row.Modified_on()).Html_db_id_(redirect_row.Html_db_id()); Xoa_ttl redirect_ttl = wiki.Ttl_parse(redirect_row.Ns_id(), redirect_row.Ttl_page_db()); rv.Ttl_(redirect_ttl); - rv.Redirect().Itms__add__article(Xoa_url.New(wiki, redirect_ttl), redirect_ttl, Bry_.Empty); // NOTE: must be url_encoded; EX: "en.wikipedia.org/?!" should generate link of "en.wikipedia.org/%3F!?redirect=no" + rv.Redirect_trail().Itms__add__article(Xoa_url.New(wiki, redirect_ttl), redirect_ttl, Bry_.Empty); // NOTE: must be url_encoded; EX: "en.wikipedia.org/?!" should generate link of "en.wikipedia.org/%3F!?redirect=no" } public Xoae_page Load_page_and_parse(Xoa_url url, Xoa_ttl ttl) {return Load_page_and_parse(url, ttl, wiki.Lang(), wiki.Appe().Gui_mgr().Browser_win().Active_tab(), true);} public Xoae_page Load_page_and_parse(Xoa_url url, Xoa_ttl ttl, Xol_lang_itm lang, Xog_tab_itm tab, boolean parse_page) { @@ -164,7 +165,7 @@ public class Xow_page_mgr implements Gfo_invk { Xoa_ttl trg_ttl = Xoa_ttl.Parse(wiki, page_bry); Xoa_url trg_url = Xoa_url.New(wiki.Domain_bry(), page_bry); page.Ttl_(trg_ttl).Url_(trg_url); - page.Redirect().Itms__add__article(trg_url, trg_ttl, null); + page.Redirect_trail().Itms__add__article(trg_url, trg_ttl, null); wiki.Data_mgr().Load_from_db(page, trg_ttl.Ns(), trg_ttl, trg_url.Qargs_mgr().Match(Xoa_url_.Qarg__redirect, Xoa_url_.Qarg__redirect__no)); } diff --git a/400_xowa/src/gplx/xowa/wikis/pages/redirects/Xopg_redirect_mgr.java b/400_xowa/src/gplx/xowa/wikis/pages/redirects/Xopg_redirect_mgr.java index b5c653ee6..83ea6344c 100644 --- a/400_xowa/src/gplx/xowa/wikis/pages/redirects/Xopg_redirect_mgr.java +++ b/400_xowa/src/gplx/xowa/wikis/pages/redirects/Xopg_redirect_mgr.java @@ -20,7 +20,8 @@ import gplx.xowa.specials.*; public class Xopg_redirect_mgr { private final List_adp itms = List_adp_.New(); public int Itms__len() {return itms.Len();} - public byte[] Itms__get_at_0th_or_null() {return itms.Len() == 0 ? null : this.Itms__get_at(0).Wikitext();} + public byte[] Itms__get_wtxt_at_0th_or_null() {return itms.Len() == 0 ? null : this.Itms__get_at(0).Wikitext();} + public Xopg_redirect_itm Itms__get_at_0th_or_null() {return itms.Len() == 0 ? null : (Xopg_redirect_itm)itms.Get_at(0);} public Xopg_redirect_itm Itms__get_at_nth_or_null() {return itms.Len() == 0 ? null : (Xopg_redirect_itm)itms.Get_at(itms.Len() - 1);} public Xopg_redirect_itm Itms__get_at(int i) {return (Xopg_redirect_itm)itms.Get_at(i);} public void Itms__add__article(Xoa_url url, Xoa_ttl ttl, byte[] wikitext) {Itms__add(url, ttl, wikitext);} diff --git a/400_xowa/src/gplx/xowa/wikis/tdbs/metas/Xof_meta_mgr_tst.java b/400_xowa/src/gplx/xowa/wikis/tdbs/metas/Xof_meta_mgr_tst.java index 50e001fea..39589309b 100644 --- a/400_xowa/src/gplx/xowa/wikis/tdbs/metas/Xof_meta_mgr_tst.java +++ b/400_xowa/src/gplx/xowa/wikis/tdbs/metas/Xof_meta_mgr_tst.java @@ -81,8 +81,9 @@ class Xof_file_regy_fxt { Xof_meta_thumb[] To_ary(String[] ary) { int len = ary.length; Xof_meta_thumb[] rv = new Xof_meta_thumb[len]; + Int_ary_parser parser = new Int_ary_parser(); for (int i = 0; i < len; i++) { - int[] size = Int_ary_parser.Instance.Parse_ary(ary[i], Byte_ascii.Comma); + int[] size = parser.Parse_ary(ary[i], Byte_ascii.Comma); rv[i] = new Xof_meta_thumb().Width_(size[0]).Height_(size[1]).Exists_y_(); } return rv; diff --git a/400_xowa/src/gplx/xowa/wikis/tdbs/metas/Xof_meta_thumb_parser.java b/400_xowa/src/gplx/xowa/wikis/tdbs/metas/Xof_meta_thumb_parser.java index d295dd35c..34903608f 100644 --- a/400_xowa/src/gplx/xowa/wikis/tdbs/metas/Xof_meta_thumb_parser.java +++ b/400_xowa/src/gplx/xowa/wikis/tdbs/metas/Xof_meta_thumb_parser.java @@ -18,8 +18,8 @@ along with this program. If not, see . package gplx.xowa.wikis.tdbs.metas; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.tdbs.*; import gplx.core.primitives.*; public class Xof_meta_thumb_parser extends Obj_ary_parser_base { - Number_parser num_parser = new Number_parser(); - Int_ary_parser int_ary_parser = new Int_ary_parser(); + private final Gfo_number_parser number_parser = new Gfo_number_parser(); + private final Int_ary_parser int_ary_parser = new Int_ary_parser(); public Xof_meta_thumb[] Ary() {return ary;} private Xof_meta_thumb[] ary = new Xof_meta_thumb[Ary_max]; static final int Ary_max = 16; public int Len() {return ary_idx;} private int ary_idx; public void Parse_ary(byte[] bry, int bgn, int end) {super.Parse_core(bry, bgn, end, Byte_ascii.Semic, Byte_ascii.Null);} @@ -50,11 +50,11 @@ public class Xof_meta_thumb_parser extends Obj_ary_parser_base { byte b = bry[pos]; switch (b) { case Dlm_width: // "," found; assume width; note that seek commas will be handled by seek - itm.Width_(num_parser.Parse(bry, num_bgn, pos).Rv_as_int()); + itm.Width_(number_parser.Parse(bry, num_bgn, pos).Rv_as_int()); num_bgn = pos + Int_.Const_dlm_len; break; case Dlm_seek: - itm.Height_(num_parser.Parse(bry, num_bgn, pos).Rv_as_int()); + itm.Height_(number_parser.Parse(bry, num_bgn, pos).Rv_as_int()); num_bgn = pos + Int_.Const_dlm_len; height_found = true; itm.Seeks_(int_ary_parser.Parse_ary(bry, num_bgn, end, Byte_ascii.Comma)); @@ -64,7 +64,7 @@ public class Xof_meta_thumb_parser extends Obj_ary_parser_base { ++pos; } if (!height_found) // handle '1:2,3' as opposed to '1:2,3@4' - itm.Height_(num_parser.Parse(bry, num_bgn, end).Rv_as_int()); + itm.Height_(number_parser.Parse(bry, num_bgn, end).Rv_as_int()); ary[ary_idx++] = itm; } static final String GRP_KEY = "xowa.meta.itm.file"; diff --git a/400_xowa/src/gplx/xowa/wikis/xwikis/sitelinks/htmls/Xoa_sitelink_div_wtr.java b/400_xowa/src/gplx/xowa/wikis/xwikis/sitelinks/htmls/Xoa_sitelink_div_wtr.java index f135e16ff..5db44eaa8 100644 --- a/400_xowa/src/gplx/xowa/wikis/xwikis/sitelinks/htmls/Xoa_sitelink_div_wtr.java +++ b/400_xowa/src/gplx/xowa/wikis/xwikis/sitelinks/htmls/Xoa_sitelink_div_wtr.java @@ -19,9 +19,9 @@ package gplx.xowa.wikis.xwikis.sitelinks.htmls; import gplx.*; import gplx.xowa. import gplx.core.brys.fmtrs.*; import gplx.xowa.apps.apis.xowa.html.*; import gplx.xowa.langs.*; import gplx.xowa.langs.msgs.*; -import gplx.xowa.xtns.wdatas.core.*; +import gplx.xowa.xtns.wbases.core.*; public class Xoa_sitelink_div_wtr { - private final Xoa_sitelink_grp_wtr grp_wtr = new Xoa_sitelink_grp_wtr(); + private final Xoa_sitelink_grp_wtr grp_wtr = new Xoa_sitelink_grp_wtr(); public void Write(Bry_bfr bfr, Xowe_wiki wiki, Xoa_sitelink_mgr mgr, List_adp slink_list, byte[] qid) { Xoa_sitelink_grp_mgr grp_mgr = mgr.Grp_mgr(); Xoa_sitelink_itm_mgr itm_mgr = mgr.Itm_mgr(); // reset grps @@ -52,12 +52,14 @@ public class Xoa_sitelink_div_wtr { // write html Xoapi_toggle_itm toggle_itm = wiki.Appe().Api_root().Html().Page().Toggle_mgr().Get_or_new("wikidata-langs"); toggle_itm.Init(wiki.Msg_mgr().Val_by_id(Xol_msg_itm_.Id_page_lang_header)); - Bry_bfr tmp_bfr = wiki.Utl__bfr_mkr().Get_b128().Mkr_rls(); - byte[] wikidata_link = Bry_.Len_eq_0(qid) ? Bry_.Empty : wbase_fmtr.Bld_bry_many(tmp_bfr, qid); - div_fmtr.Bld_bfr_many(bfr, slink_len, wikidata_link, toggle_itm.Html_toggle_btn(), toggle_itm.Html_toggle_hdr(), grp_wtr.Fmt__init(grp_mgr)); + Bry_bfr tmp_bfr = wiki.Utl__bfr_mkr().Get_b128(); + try { + byte[] wikidata_link = Bry_.Len_eq_0(qid) ? Bry_.Empty : wbase_fmtr.Bld_bry_many(tmp_bfr, qid); + div_fmtr.Bld_bfr_many(bfr, slink_len, wikidata_link, toggle_itm.Html_toggle_btn(), toggle_itm.Html_toggle_hdr(), grp_wtr.Fmt__init(grp_mgr)); + } finally {tmp_bfr.Mkr_rls();} } - private static final Bry_fmtr wbase_fmtr = Bry_fmtr.new_(" (wikidata)", "qid"); - private static final Bry_fmtr div_fmtr = Bry_fmtr.new_(String_.Concat_lines_nl_skip_last + private static final Bry_fmtr wbase_fmtr = Bry_fmtr.new_(" (wikidata)", "qid"); + private static final Bry_fmtr div_fmtr = Bry_fmtr.new_(String_.Concat_lines_nl_skip_last ( "
    " , "
    ~{toggle_btn} (links: ~{len}) ~{wikidata_link}
    " , " ~{grps}" diff --git a/400_xowa/src/gplx/xowa/wikis/xwikis/sitelinks/htmls/Xoa_sitelink_div_wtr_fxt.java b/400_xowa/src/gplx/xowa/wikis/xwikis/sitelinks/htmls/Xoa_sitelink_div_wtr_fxt.java index 74dba48cd..15d81257f 100644 --- a/400_xowa/src/gplx/xowa/wikis/xwikis/sitelinks/htmls/Xoa_sitelink_div_wtr_fxt.java +++ b/400_xowa/src/gplx/xowa/wikis/xwikis/sitelinks/htmls/Xoa_sitelink_div_wtr_fxt.java @@ -56,7 +56,7 @@ class Xoa_sitelink_div_wtr_fxt { wiki.Html_mgr().Html_wtr().Write_doc(bfr, ctx, raw_bry, root); Bry_bfr html_bfr = Bry_bfr_.New(); - wiki.App().Xwiki_mgr__sitelink_mgr().Write_html(html_bfr, wiki, ctx.Page().Slink_list(), gplx.xowa.xtns.wdatas.Wdata_xwiki_link_wtr.Qid_null); + wiki.App().Xwiki_mgr__sitelink_mgr().Write_html(html_bfr, wiki, ctx.Page().Slink_list(), gplx.xowa.xtns.wbases.Wdata_xwiki_link_wtr.Qid_null); Tfds.Eq_str_lines(expd, html_bfr.To_str_and_clear()); } } diff --git a/400_xowa/src/gplx/xowa/wikis/xwikis/sitelinks/htmls/Xoa_sitelink_grp_wtr.java b/400_xowa/src/gplx/xowa/wikis/xwikis/sitelinks/htmls/Xoa_sitelink_grp_wtr.java index 92b94aa6f..31dfda627 100644 --- a/400_xowa/src/gplx/xowa/wikis/xwikis/sitelinks/htmls/Xoa_sitelink_grp_wtr.java +++ b/400_xowa/src/gplx/xowa/wikis/xwikis/sitelinks/htmls/Xoa_sitelink_grp_wtr.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.xowa.wikis.xwikis.sitelinks.htmls; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.xwikis.*; import gplx.xowa.wikis.xwikis.sitelinks.*; import gplx.core.brys.fmtrs.*; class Xoa_sitelink_grp_wtr implements gplx.core.brys.Bfr_arg { - private final Xoa_sitelink_itm_wtr itm_wtr = new Xoa_sitelink_itm_wtr(); + private final Xoa_sitelink_itm_wtr itm_wtr = new Xoa_sitelink_itm_wtr(); private Xoa_sitelink_grp_mgr mgr; public void Init_by_app(Xoa_app app) {itm_wtr.Init_by_app(app);} public Xoa_sitelink_grp_wtr Fmt__init(Xoa_sitelink_grp_mgr mgr) {this.mgr = mgr; return this;} @@ -30,7 +30,7 @@ class Xoa_sitelink_grp_wtr implements gplx.core.brys.Bfr_arg { fmtr.Bld_bfr_many(bfr, grp.Name(), itm_wtr.Fmt__init(grp)); } } - private static final Bry_fmtr fmtr = Bry_fmtr.new_(String_.Concat_lines_nl_skip_last + private static final Bry_fmtr fmtr = Bry_fmtr.new_(String_.Concat_lines_nl_skip_last ( "" , "

    ~{all_name}

    " , " ~{grps}" diff --git a/400_xowa/src/gplx/xowa/xtns/Xow_xtn_mgr.java b/400_xowa/src/gplx/xowa/xtns/Xow_xtn_mgr.java index 77506dd59..7f2f9f938 100644 --- a/400_xowa/src/gplx/xowa/xtns/Xow_xtn_mgr.java +++ b/400_xowa/src/gplx/xowa/xtns/Xow_xtn_mgr.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.xtns; import gplx.*; import gplx.xowa.*; import gplx.core.primitives.*; import gplx.core.btries.*; -import gplx.xowa.xtns.cites.*; import gplx.xowa.xtns.imaps.*; import gplx.xowa.xtns.relatedSites.*; import gplx.xowa.xtns.proofreadPage.*; import gplx.xowa.xtns.wdatas.*; +import gplx.xowa.xtns.cites.*; import gplx.xowa.xtns.imaps.*; import gplx.xowa.xtns.relatedSites.*; import gplx.xowa.xtns.proofreadPage.*; import gplx.xowa.xtns.wbases.*; import gplx.xowa.xtns.insiders.*; import gplx.xowa.xtns.indicators.*; import gplx.xowa.xtns.pagebanners.*; public class Xow_xtn_mgr implements Gfo_invk { private Ordered_hash regy = Ordered_hash_.New_bry(); diff --git a/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_box_w_fmtr_arg.java b/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_box_w_fmtr_arg.java index 3a96fa30a..2cb9727a4 100644 --- a/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_box_w_fmtr_arg.java +++ b/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_box_w_fmtr_arg.java @@ -17,8 +17,8 @@ along with this program. If not, see . */ package gplx.xowa.xtns.gallery; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; class Gallery_box_w_fmtr_arg implements gplx.core.brys.Bfr_arg { - private int width; - public Gallery_box_w_fmtr_arg Init(int uid, int width) {this.width = width; return this;} + private final int width; + public Gallery_box_w_fmtr_arg(int width) {this.width = width;} public void Bfr_arg__add(Bry_bfr bfr) { bfr.Add(Style_bgn); bfr.Add_int_variable(width); diff --git a/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_img_pad_fmtr_arg.java b/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_img_pad_fmtr_arg.java index b9b3aff89..dd4d4dfdc 100644 --- a/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_img_pad_fmtr_arg.java +++ b/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_img_pad_fmtr_arg.java @@ -17,8 +17,8 @@ along with this program. If not, see . */ package gplx.xowa.xtns.gallery; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; class Gallery_img_pad_fmtr_arg implements gplx.core.brys.Bfr_arg { - private int vpad; - public Gallery_img_pad_fmtr_arg Init(int uid, int vpad) {this.vpad = vpad; return this;} + private final int vpad; + public Gallery_img_pad_fmtr_arg(int vpad) {this.vpad = vpad;} public void Bfr_arg__add(Bry_bfr bfr) { bfr.Add(Style_bgn); bfr.Add_int_variable(vpad); diff --git a/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_mgr_wtr.java b/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_mgr_wtr.java index 4d67910ef..f14b3a960 100644 --- a/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_mgr_wtr.java +++ b/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_mgr_wtr.java @@ -21,8 +21,6 @@ import gplx.xowa.parsers.*; import gplx.xowa.parsers.xndes.*; import gplx.xowa.p import gplx.langs.htmls.*; import gplx.xowa.htmls.core.htmls.*; import gplx.xowa.parsers.htmls.*; import gplx.xowa.files.*; public class Gallery_mgr_wtr { - private static final Gallery_img_pad_fmtr_arg div_3_fmtr_arg = new Gallery_img_pad_fmtr_arg(); - private static final Gallery_box_w_fmtr_arg li_fmtr_arg = new Gallery_box_w_fmtr_arg(); public static void Write_mgr(Bry_bfr bfr, Gallery_mgr_base mgr, Xowe_wiki wiki, Xoae_page page, Xop_ctx ctx, Xoh_wtr_ctx hctx, byte[] src, Gallery_xnde xnde) { // init Bry_bfr tmp_bfr = wiki.Utl__bfr_mkr().Get_b512(); @@ -124,7 +122,7 @@ public class Gallery_mgr_wtr { // write div_3 div_3_margin = mgr.Get_vpad(mgr.Itm_default_h(), html_h_expand); - Gallery_mgr_wtr_.Fmtr__div1__vpad.Bld_bfr_many(tmp_bfr, div_3_fmtr_arg.Init(img_uid, div_3_margin)); //
    + Gallery_mgr_wtr_.Fmtr__div1__vpad.Bld_bfr_many(tmp_bfr, new Gallery_img_pad_fmtr_arg(div_3_margin)); //
    // write wiki.Html_mgr().Html_wtr().Lnki_wtr().Write_file(tmp_bfr, ctx, hctx, src, lnki, xfer_itm, alt); @@ -134,7 +132,7 @@ public class Gallery_mgr_wtr { // write
  • int div_1_w = mgr.Get_gb_width(html_w_expand, html_h_expand); - Gallery_mgr_wtr_.Fmtr__li__lhs.Bld_bfr_many(bfr, li_id_atr, li_fmtr_arg.Init(img_uid, div_1_w)); + Gallery_mgr_wtr_.Fmtr__li__lhs.Bld_bfr_many(bfr, li_id_atr, new Gallery_box_w_fmtr_arg(div_1_w)); bfr.Add(itm_html); // get show_filenames_link diff --git a/400_xowa/src/gplx/xowa/xtns/imaps/Imap_parser.java b/400_xowa/src/gplx/xowa/xtns/imaps/Imap_parser.java index 545de7881..ca7842011 100644 --- a/400_xowa/src/gplx/xowa/xtns/imaps/Imap_parser.java +++ b/400_xowa/src/gplx/xowa/xtns/imaps/Imap_parser.java @@ -108,7 +108,7 @@ public class Imap_parser { boolean shape_is_poly = shape_tid == Imap_part_.Tid_shape_poly; int pos = Bry_find_.Trim_fwd_space_tab(src, tid_end_pos, itm_end); // gobble any leading spaces int grp_end = Bry_find_.Find_fwd(src, Byte_ascii.Brack_bgn, pos, itm_end); // find first "["; note that this is a lazy way of detecting start of lnki / lnke; MW has complicated regex, but hopefully this will be enough; DATE:2014-10-22 - if (grp_end == -1) {return Add_err(Bool_.Y, itm_bgn, itm_end, "imap_No valid link was found");} + if (grp_end == -1) {return Add_err(Bool_.Y, itm_bgn, itm_end, "imap.parse:No valid link was found");} int num_bgn = -1, comma_pos = -1, pts_len = 0; while (true) { boolean last = pos == grp_end; diff --git a/400_xowa/src/gplx/xowa/xtns/indicators/Indicator_html_bldr.java b/400_xowa/src/gplx/xowa/xtns/indicators/Indicator_html_bldr.java index 53fa4ae40..81974da1c 100644 --- a/400_xowa/src/gplx/xowa/xtns/indicators/Indicator_html_bldr.java +++ b/400_xowa/src/gplx/xowa/xtns/indicators/Indicator_html_bldr.java @@ -36,7 +36,7 @@ public class Indicator_html_bldr implements gplx.core.brys.Bfr_arg { bldr_itm.Init(list); fmtr_grp.Bld_bfr_many(bfr, bldr_itm); } - private static final Bry_fmtr + private static final Bry_fmtr fmtr_grp = Bry_fmtr.new_(String_.Concat_lines_nl_skip_last ( "" , "
    ~{itms}" @@ -54,7 +54,7 @@ class Indicator_html_bldr_itm implements gplx.core.brys.Bfr_arg { fmtr_itm.Bld_bfr_many(bfr, xnde.Name(), xnde.Html()); } } - private static final Bry_fmtr + private static final Bry_fmtr fmtr_itm = Bry_fmtr.new_(String_.Concat_lines_nl_skip_last ( "" , "
    ~{html}
    " diff --git a/400_xowa/src/gplx/xowa/xtns/listings/Listing_xnde.java b/400_xowa/src/gplx/xowa/xtns/listings/Listing_xnde.java index f1416fced..6ed5ef121 100644 --- a/400_xowa/src/gplx/xowa/xtns/listings/Listing_xnde.java +++ b/400_xowa/src/gplx/xowa/xtns/listings/Listing_xnde.java @@ -16,11 +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.xtns.listings; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; -import gplx.core.primitives.*; +import gplx.core.primitives.*; import gplx.core.brys.fmtrs.*; import gplx.langs.htmls.*; import gplx.xowa.htmls.core.htmls.*; import gplx.xowa.langs.*; import gplx.xowa.langs.msgs.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.xndes.*; import gplx.xowa.parsers.htmls.*; public class Listing_xnde implements Xox_xnde, Mwh_atr_itm_owner1 { + private final Bry_fmtr tmp_fmtr = Bry_fmtr.New__tmp(); public Listing_xnde(int tag_id) {} private byte[] xatr_name, xatr_alt, xatr_address, xatr_directions, xatr_phone, xatr_tollfree, xatr_email, xatr_fax, xatr_url, xatr_hours, xatr_price, xatr_checkin, xatr_checkout; private int xatr_lat = Xatr_meridian_null, xatr_long = Xatr_meridian_null; @@ -171,14 +172,14 @@ public class Listing_xnde implements Xox_xnde, Mwh_atr_itm_owner1 { if (xatr_checkin != null || xatr_checkout != null) { Bry_bfr tmp_bfr = wiki.Utl__bfr_mkr().Get_b128(); if (xatr_checkin != null) { - byte[] checkin_val = xtn_mgr.Checkin_msg().Fmt(tmp_bfr, xatr_checkin); + byte[] checkin_val = xtn_mgr.Checkin_msg().Fmt(tmp_bfr, tmp_fmtr, xatr_checkin); wtr.Txt_raw(checkin_val); if (xatr_checkout != null) wtr.Txt(Txt_comma_space); } if (xatr_checkout != null) { - byte[] checkout_val = xtn_mgr.Checkout_msg().Fmt(tmp_bfr, xatr_checkout); + byte[] checkout_val = xtn_mgr.Checkout_msg().Fmt(tmp_bfr, tmp_fmtr, xatr_checkout); wtr.Txt_raw(checkout_val); } wtr.Txt(Txt_dot_space); @@ -194,16 +195,18 @@ public class Listing_xnde implements Xox_xnde, Mwh_atr_itm_owner1 { if (xatr_lat >= Xatr_meridian_null || xatr_long >= Xatr_meridian_null) return null; // check that lat and long are valid Xol_msg_itm position_template = xtn_mgr.Position_template(); if (position_template == null) return null; - Bry_bfr tmp_bfr = wiki.Utl__bfr_mkr().Get_b128().Mkr_rls(); - byte[] rv = position_template.Fmt(tmp_bfr, xatr_lat, xatr_long); - tmp_bfr.Add(Bry__invk_bgn); // "{{" - tmp_bfr.Add(rv); // rv is not message, but actually template precursor - tmp_bfr.Add(Bry__invk_end); // "}}" - Xop_ctx sub_ctx = Xop_ctx.New__sub__reuse_page(ctx); - rv = wiki.Parser_mgr().Main().Parse_text_to_html(sub_ctx, tmp_bfr.To_bry_and_clear()); - Xol_msg_itm position_text = xtn_mgr.Position_text(); - if (Bry_.Len_eq_0(position_text.Val())) return rv; - return position_text.Fmt(tmp_bfr, rv); + Bry_bfr tmp_bfr = wiki.Utl__bfr_mkr().Get_b128(); + try { + byte[] rv = position_template.Fmt(tmp_bfr, tmp_fmtr, xatr_lat, xatr_long); + tmp_bfr.Add(Bry__invk_bgn); // "{{" + tmp_bfr.Add(rv); // rv is not message, but actually template precursor + tmp_bfr.Add(Bry__invk_end); // "}}" + Xop_ctx sub_ctx = Xop_ctx.New__sub__reuse_page(ctx); + rv = wiki.Parser_mgr().Main().Parse_text_to_html(sub_ctx, tmp_bfr.To_bry_and_clear()); + Xol_msg_itm position_text = xtn_mgr.Position_text(); + if (Bry_.Len_eq_0(position_text.Val())) return rv; + return position_text.Fmt(tmp_bfr, tmp_fmtr, rv); + } finally {tmp_bfr.Mkr_rls();} } private static final int Xatr_meridian_null = 361; public static final byte[] diff --git a/400_xowa/src/gplx/xowa/xtns/math/Xof_math_html_wtr.java b/400_xowa/src/gplx/xowa/xtns/math/Xof_math_html_wtr.java index e1eca42fd..8b0c90260 100644 --- a/400_xowa/src/gplx/xowa/xtns/math/Xof_math_html_wtr.java +++ b/400_xowa/src/gplx/xowa/xtns/math/Xof_math_html_wtr.java @@ -26,19 +26,21 @@ public class Xof_math_html_wtr { Xoae_app app = ctx.App(); Xowe_wiki wiki = ctx.Wiki(); Xoae_page page = ctx.Page(); boolean renderer_is_latex = !app.File_mgr().Math_mgr().Renderer_is_mathjax(); byte[] math_bry = Bry_.Mid(src, xnde.Tag_open_end(), xnde.Tag_close_bgn()); - Bry_bfr tmp_bfr = wiki.Utl__bfr_mkr().Get_b512().Mkr_rls(); - math_bry = Escape_tex(tmp_bfr, !renderer_is_latex, math_bry); - byte[] math_bry_clean = wiki.Html_mgr().Js_cleaner().Clean(wiki, math_bry, 0, math_bry.length); // check for js; - if (math_bry_clean != null) math_bry = math_bry_clean; // js found; use clean version; DATE:2013-08-26 - boolean enabled = app.File_mgr().Math_mgr().Enabled(); - Xof_math_itm math_itm = ctx.Tmp_mgr().Math_itm(); - if (renderer_is_latex && app.File_mgr().Math_mgr().Find_itm(math_itm, page.Wiki().Domain_str(), math_bry)) { - bfr.Add(Xoh_consts.Img_bgn); - bfr.Add_str_u8(math_itm.Png_url().To_http_file_str()); - bfr.Add(Xoh_consts.__inline_quote); - } - else - Write_for_mathjax(bfr, page, enabled, renderer_is_latex, math_bry, tmp_bfr, math_itm); + Bry_bfr tmp_bfr = wiki.Utl__bfr_mkr().Get_b512(); + try { + math_bry = Escape_tex(tmp_bfr, !renderer_is_latex, math_bry); + byte[] math_bry_clean = wiki.Html_mgr().Js_cleaner().Clean(wiki, math_bry, 0, math_bry.length); // check for js; + if (math_bry_clean != null) math_bry = math_bry_clean; // js found; use clean version; DATE:2013-08-26 + boolean enabled = app.File_mgr().Math_mgr().Enabled(); + Xof_math_itm math_itm = ctx.Tmp_mgr().Math_itm(); + if (renderer_is_latex && app.File_mgr().Math_mgr().Find_itm(math_itm, page.Wiki().Domain_str(), math_bry)) { + bfr.Add(Xoh_consts.Img_bgn); + bfr.Add_str_u8(math_itm.Png_url().To_http_file_str()); + bfr.Add(Xoh_consts.__inline_quote); + } + else + Write_for_mathjax(bfr, page, enabled, renderer_is_latex, math_bry, tmp_bfr, math_itm); + } finally {tmp_bfr.Mkr_rls();} } private void Write_for_mathjax(Bry_bfr bfr, Xoae_page page, boolean enabled, boolean renderer_is_latex, byte[] math_bry, Bry_bfr tmp_bfr, Xof_math_itm math_itm) { int id = page.File_math().Count(); diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/Pf_func_.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/Pf_func_.java index ec3c8b92a..0d19f4268 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/Pf_func_.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/Pf_func_.java @@ -57,8 +57,8 @@ public class Pf_func_ { } else if (lhs_len == 0 || rhs_len == 0) // one side is empty String and the other side is String; return false; return false; - Number_parser lhs_parser = ctx.Tmp_mgr().Pfunc_num_parser_0(); - Number_parser rhs_parser = ctx.Tmp_mgr().Pfunc_num_parser_1(); + Gfo_number_parser lhs_parser = ctx.Tmp_mgr().Pfunc_num_parser_0(); + Gfo_number_parser rhs_parser = ctx.Tmp_mgr().Pfunc_num_parser_1(); lhs_parser.Parse(lhs, 0, lhs_len); if (lhs_parser.Has_err()) return false; rhs_parser.Parse(rhs, 0, rhs_len); @@ -396,9 +396,9 @@ public class Pf_func_ { case Xol_kwd_grp_.Id_pagebanner: return new gplx.xowa.xtns.pagebanners.Pgbnr_func(); case Xol_kwd_grp_.Id_new_window_link: return new gplx.xowa.xtns.new_window_links.New_window_link_func(); - case Xol_kwd_grp_.Id_property: return new gplx.xowa.xtns.wdatas.pfuncs.Wdata_pf_property(); - case Xol_kwd_grp_.Id_noexternallanglinks: return new gplx.xowa.xtns.wdatas.pfuncs.Wdata_pf_noExternalLangLinks(); - case Xol_kwd_grp_.Id_wbreponame: return new gplx.xowa.xtns.wdatas.pfuncs.Wdata_pf_wbreponame(); + case Xol_kwd_grp_.Id_property: return new gplx.xowa.xtns.wbases.pfuncs.Wdata_pf_property(); + case Xol_kwd_grp_.Id_noexternallanglinks: return new gplx.xowa.xtns.wbases.pfuncs.Wdata_pf_noExternalLangLinks(); + case Xol_kwd_grp_.Id_wbreponame: return new gplx.xowa.xtns.wbases.pfuncs.Wdata_pf_wbreponame(); case Xol_kwd_grp_.Id_mapSources_deg2dd: return gplx.xowa.xtns.mapSources.Map_deg2dd_func.Instance; case Xol_kwd_grp_.Id_mapSources_dd2dms: return gplx.xowa.xtns.mapSources.Map_dd2dms_func.Instance; diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/exprs/Pfunc_expr_shunter.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/exprs/Pfunc_expr_shunter.java index 74c78973f..e19709e66 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/exprs/Pfunc_expr_shunter.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/exprs/Pfunc_expr_shunter.java @@ -23,7 +23,7 @@ public class Pfunc_expr_shunter { private final Btrie_fast_mgr trie = expression_(); private final Btrie_rv trv = new Btrie_rv(); private final Val_stack val_stack = new Val_stack(); private final Func_tkn_stack prc_stack = new Func_tkn_stack(); - private final Bry_fmtr tmp_fmtr = Bry_fmtr.tmp_(); + private final Bry_fmtr tmp_fmtr = Bry_fmtr.New__tmp(); public Bry_bfr Err() {return err_bfr;} private final Bry_bfr err_bfr = Bry_bfr_.New(); public Decimal_adp Err_set(Xop_ctx ctx, int msgId) {return Err_set(ctx, msgId, Bry_.Empty);} public Decimal_adp Err_set(Xop_ctx ctx, int msg_id, byte[] arg) { diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/stringutils/Pfunc_replace.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/stringutils/Pfunc_replace.java index d2485c90a..c46712bf7 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/stringutils/Pfunc_replace.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/stringutils/Pfunc_replace.java @@ -30,9 +30,11 @@ public class Pfunc_replace extends Pf_func_base { byte[] repl = Pf_func_.Eval_arg_or(ctx, src, caller, self, self_args_len, 1, Bry_.Empty); byte[] limit_bry = Pf_func_.Eval_arg_or(ctx, src, caller, self, self_args_len, 2, null); int limit = limit_bry == null ? Int_.Max_value : Bry_.To_int_or_neg1(limit_bry); - Bry_bfr tmp_bfr = Xoa_app_.Utl__bfr_mkr().Get_b128(); - byte[] rv = Bry_.Replace(tmp_bfr, argx, find, repl, 0, argx.length, limit); - tmp_bfr.Mkr_rls(); - bfr.Add(rv); + Bry_bfr tmp_bfr = ctx.Wiki().Utl__bfr_mkr().Get_b128(); + try { + byte[] rv = Bry_.Replace(tmp_bfr, argx, find, repl, 0, argx.length, limit); + bfr.Add(rv); + } + finally {tmp_bfr.Mkr_rls();} } } diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_func_date_int.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_func_date_int.java index eb3585159..090a093d1 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_func_date_int.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_func_date_int.java @@ -27,8 +27,8 @@ public class Pft_func_date_int extends Pf_func_base { Xowe_wiki wiki = ctx.Wiki(); Xol_lang_itm lang = ctx.Lang(); Pft_func_formatdate_bldr date_fmt_bldr = wiki.Parser_mgr().Date_fmt_bldr(); switch (date_tid) { - case Date_tid_lcl: date = DateAdp_.Now(); break; - case Date_tid_utc: date = DateAdp_.Now().XtoUtc(); break; + case Date_tid_lcl: date = Datetime_now.Get(); break; + case Date_tid_utc: date = Datetime_now.Get().XtoUtc(); break; case Date_tid_rev: date = ctx.Page().Db().Page().Modified_on(); break; default: throw Err_.new_unhandled(date_tid); } diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_func_date_lcl_tst.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_func_date_lcl_tst.java index ef6a21731..077b9b6f4 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_func_date_lcl_tst.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_func_date_lcl_tst.java @@ -18,9 +18,9 @@ along with this program. If not, see . package gplx.xowa.xtns.pfuncs.times; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.pfuncs.*; import org.junit.*; public class Pft_func_date_lcl_tst { - private final Xop_fxt fxt = new Xop_fxt(); - @Before public void setup() {fxt.Reset(); Tfds.Now_set(DateAdp_.new_(2012, 1, 2, 3, 4, 5, 6));} - @After public void teardown() {Tfds.Now_enabled_n_();} + private final Xop_fxt fxt = new Xop_fxt(); + @Before public void setup() {fxt.Reset(); Datetime_now.Manual_(DateAdp_.new_(2012, 1, 2, 3, 4, 5, 6));} + @After public void teardown() {Datetime_now.Manual_n_();} @Test public void Lcl_year() {fxt.Test_parse_tmpl_str_test("{{LOCALYEAR}}" , "{{test}}", "2012");} @Test public void Lcl_month_int() {fxt.Test_parse_tmpl_str_test("{{LOCALMONTH1}}" , "{{test}}", "1");} @Test public void Lcl_month_int_len2() {fxt.Test_parse_tmpl_str_test("{{LOCALMONTH}}" , "{{test}}", "01");} diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_func_date_name.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_func_date_name.java index 8098414f7..25cfaf023 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_func_date_name.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_func_date_name.java @@ -24,8 +24,8 @@ public class Pft_func_date_name extends Pf_func_base { @Override public void Func_evaluate(Bry_bfr bfr, Xop_ctx ctx, Xot_invk caller, Xot_invk self, byte[] src) { DateAdp date = DateAdp_.MinValue; switch (date_tid) { - case Pft_func_date_int.Date_tid_lcl: date = DateAdp_.Now(); break; - case Pft_func_date_int.Date_tid_utc: date = DateAdp_.Now().XtoUtc(); break; + case Pft_func_date_int.Date_tid_lcl: date = Datetime_now.Get(); break; + case Pft_func_date_int.Date_tid_utc: date = Datetime_now.Get().XtoUtc(); break; case Pft_func_date_int.Date_tid_rev: date = ctx.Page().Db().Page().Modified_on(); break; default: throw Err_.new_unhandled(date_tid); } diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_func_date_utc_tst.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_func_date_utc_tst.java index 9ba9676ec..e260bf8fa 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_func_date_utc_tst.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_func_date_utc_tst.java @@ -18,9 +18,9 @@ along with this program. If not, see . package gplx.xowa.xtns.pfuncs.times; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.pfuncs.*; import org.junit.*; public class Pft_func_date_utc_tst { - private final Xop_fxt fxt = new Xop_fxt(); - @Before public void setup() {fxt.Reset(); Tfds.Now_set(DateAdp_.new_(2011, 12, 31, 22, 4, 5, 6));} // ENV:Assumes Eastern Standard Time (-5) - @After public void teardown() {Tfds.Now_enabled_n_();} + private final Xop_fxt fxt = new Xop_fxt(); + @Before public void setup() {fxt.Reset(); Datetime_now.Manual_(DateAdp_.new_(2011, 12, 31, 22, 4, 5, 6));} // ENV:Assumes Eastern Standard Time (-5) + @After public void teardown() {Datetime_now.Manual_n_();} @Test public void Utc_year() {fxt.Test_parse_tmpl_str_test("{{CURRENTYEAR}}" , "{{test}}", "2012");} @Test public void Utc_month_int() {fxt.Test_parse_tmpl_str_test("{{CURRENTMONTH1}}" , "{{test}}", "1");} @Test public void Utc_month_int_len2() {fxt.Test_parse_tmpl_str_test("{{CURRENTMONTH}}" , "{{test}}", "01");} diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_func_formatdate.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_func_formatdate.java index 672fd8ad4..4f9551ccd 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_func_formatdate.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_func_formatdate.java @@ -35,7 +35,10 @@ public class Pft_func_formatdate extends Pf_func_base { bfr.Add(date_bry); return; } - DateAdp date = Pft_func_time.ParseDate(date_bry, false, ctx.Wiki().Utl__bfr_mkr().Get_b512().Mkr_rls()); + Bry_bfr tmp_bfr = ctx.Wiki().Utl__bfr_mkr().Get_b512(); + DateAdp date = null; + try {date = Pft_func_time.ParseDate(date_bry, false, tmp_bfr);} + finally {tmp_bfr.Mkr_rls();} if (date == null) {bfr.Add(date_bry); return;} // date not parseable; return self; DATE:2014-04-13 ctx.Wiki().Parser_mgr().Date_fmt_bldr().Format(bfr, ctx.Wiki(), ctx.Lang(), date, (Pft_fmt_itm[])o); } diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_func_formatdate_bldr.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_func_formatdate_bldr.java index 9854a6c1f..4c7f8b29f 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_func_formatdate_bldr.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_func_formatdate_bldr.java @@ -35,13 +35,16 @@ public class Pft_func_formatdate_bldr { chained_fmt = fmt_itm; else { if (chained_fmt != null) { - Bry_bfr tmp_bfr = Xoa_app_.Utl__bfr_mkr().Get_b128(); - synchronized (tmp_bfr) { + Bry_bfr tmp_bfr = wiki.Utl__bfr_mkr().Get_b128(); + try { fmt_itm.Fmt(tmp_bfr, wiki, lang, date, this); chained_fmt.Fmt(tmp_bfr, wiki, lang, date, this); - bfr.Add(tmp_bfr.To_bry_and_rls()); + bfr.Add(tmp_bfr.To_bry_and_clear()); chained_fmt = null; } + finally { + tmp_bfr.Mkr_rls(); + } } else fmt_itm.Fmt(bfr, wiki, lang, date, this); diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_func_time.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_func_time.java index 7b7ad2dd6..b9e4c7fa5 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_func_time.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_func_time.java @@ -46,7 +46,7 @@ public class Pft_func_time extends Pf_func_base { } } public static DateAdp ParseDate(byte[] date, boolean utc, Bry_bfr error_bfr) { - if (date == Bry_.Empty) return utc ? DateAdp_.Now().XtoUtc() : DateAdp_.Now(); + if (date == Bry_.Empty) return utc ? Datetime_now.Get().XtoUtc() : Datetime_now.Get(); try { DateAdp rv = new Pxd_parser().Parse(date, error_bfr); return rv; diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_func_time__basic__tst.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_func_time__basic__tst.java index 6ad3a93b0..315a442e8 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_func_time__basic__tst.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_func_time__basic__tst.java @@ -18,8 +18,8 @@ along with this program. If not, see . package gplx.xowa.xtns.pfuncs.times; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.pfuncs.*; import org.junit.*; import gplx.xowa.langs.*; import gplx.xowa.langs.msgs.*; public class Pft_func_time__basic__tst { - @Before public void init() {fxt.Reset(); Tfds.Now_set(DateAdp_.new_(2012, 1, 2, 3, 4, 5, 6));} private final Xop_fxt fxt = new Xop_fxt(); - @After public void term() {Tfds.Now_enabled_n_();} + @Before public void init() {fxt.Reset(); Datetime_now.Manual_(DateAdp_.new_(2012, 1, 2, 3, 4, 5, 6));} private final Xop_fxt fxt = new Xop_fxt(); + @After public void term() {Datetime_now.Manual_n_();} @Test public void Utc_date() {fxt.Test_parse_tmpl_str("{{#time:Y-m-d|2012-01-02 03:04:05}}" , "2012-01-02");} @Test public void Utc_time() {fxt.Test_parse_tmpl_str("{{#time:h:i:s A|2012-01-02 03:04:05}}" , "03:04:05 AM");} @Test public void Utc_dayOfYear() {fxt.Test_parse_tmpl_str("{{#time:z|2012-01-01 03:04:05}}" , "0");} @@ -68,7 +68,7 @@ public class Pft_func_time__basic__tst { @Test public void Unit_rel_year_last() {fxt.Test_parse_tmpl_str("{{#time:Y-m-d|last year}}" , "2011-01-02");} @Test public void Unit_rel_year_previous(){fxt.Test_parse_tmpl_str("{{#time:Y-m-d|previous year}}" , "2011-01-02");} @Test public void Unit_rel_year_this() {fxt.Test_parse_tmpl_str("{{#time:Y-m-d|this year}}" , "2012-01-02");} - @Test public void Time_rel_now() {fxt.Test_parse_tmpl_str("{{#time:Y-m-d h:i:s A|now}}" , "2012-01-02 03:05:05 AM");} // NOTE: minute is 5, not 4, b/c each call to DateAdp_.Now() automatically increments by 1 minute; DATE:2014-04-13 + @Test public void Time_rel_now() {fxt.Test_parse_tmpl_str("{{#time:Y-m-d h:i:s A|now}}" , "2012-01-02 03:05:05 AM");} // NOTE: minute is 5, not 4, b/c each call to Datetime_now.Get() automatically increments by 1 minute; DATE:2014-04-13 @Test public void Empty_is_today() {fxt.Test_parse_tmpl_str("{{#time:Y-m-d|}}" , "2012-01-02");} // tested on MW @Test public void Day_name_today() {fxt.Test_parse_tmpl_str("{{#time:Y-m-d|Monday}}" , "2012-01-02");} // 2012-01-02 is Monday, so return Monday; DATE:2014-05-02 @Test public void Day_name_future_1() {fxt.Test_parse_tmpl_str("{{#time:Y-m-d|Saturday}}" , "2012-01-07");} // return next Sunday; DATE:2014-05-02 diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_func_time__int__tst.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_func_time__int__tst.java index 64a2e15aa..83189b893 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_func_time__int__tst.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_func_time__int__tst.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.xowa.xtns.pfuncs.times; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.pfuncs.*; import org.junit.*; public class Pft_func_time__int__tst { - @Before public void init() {fxt.Reset(); Tfds.Now_set(DateAdp_.new_(2012, 1, 2, 3, 4, 5, 6));} private final Xop_fxt fxt = new Xop_fxt(); + @Before public void init() {fxt.Reset(); Datetime_now.Manual_(DateAdp_.new_(2012, 1, 2, 3, 4, 5, 6));} private final Xop_fxt fxt = new Xop_fxt(); @Test public void Time_before_date__dmy() {fxt.Test_parse_tmpl_str("{{#time:Y-m-d H:i|01:02 3.4.2005}}" , "2005-04-03 01:02");} // PAGE:sk.w:Dr._House; DATE:2014-09-23 @Test public void Time_before_date__mdy() {fxt.Test_parse_tmpl_str("{{#time:Y-m-d H:i|01:02 3.14.2005}}" , "Invalid month: 14");} // mdy is invalid; DATE:2014-09-23 } diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_func_time__uncommon__tst.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_func_time__uncommon__tst.java index 18c3a56b6..acd28c06d 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_func_time__uncommon__tst.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_func_time__uncommon__tst.java @@ -18,8 +18,8 @@ along with this program. If not, see . package gplx.xowa.xtns.pfuncs.times; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.pfuncs.*; import org.junit.*; public class Pft_func_time__uncommon__tst { - private final Xop_fxt fxt = new Xop_fxt(); - @Before public void init() {fxt.Reset(); Tfds.Now_set(DateAdp_.new_(2012, 1, 2, 3, 4, 5, 6));} - @After public void term() {Tfds.Now_enabled_n_();} + private final Xop_fxt fxt = new Xop_fxt(); + @Before public void init() {fxt.Reset(); Datetime_now.Manual_(DateAdp_.new_(2012, 1, 2, 3, 4, 5, 6));} + @After public void term() {Datetime_now.Manual_n_();} @Test public void Year_5_digits() {fxt.Test_parse_tmpl_str_test("{{#time:Y-m-d|00123-4-5}}" , "{{test}}" , "2003-04-05");} // PURPOSE: emulate PHP's incorrect date parsing; EX:ca.w:Nicolau_de_Mira; DATE:2014-04-17 } diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_func_time_foreign_fxt.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_func_time_foreign_fxt.java index c7f0c07be..13bdc6add 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_func_time_foreign_fxt.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_func_time_foreign_fxt.java @@ -21,10 +21,10 @@ class Pft_func_time_foreign_fxt { private final Xop_fxt fxt = new Xop_fxt(); public void Clear() { fxt.Reset(); - Tfds.Now_set(DateAdp_.new_(2012, 1, 2, 3, 4, 5, 6)); + Datetime_now.Manual_(DateAdp_.new_(2012, 1, 2, 3, 4, 5, 6)); } public void Term() { - Tfds.Now_enabled_n_(); + Datetime_now.Manual_n_(); } public Pft_func_time_foreign_fxt Init_msg(String key, String val) { Xol_msg_itm msg = fxt.Wiki().Msg_mgr().Get_or_make(Bry_.new_u8(key)); diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pxd_itm_.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pxd_itm_.java index 4c4546214..23e1e3a68 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pxd_itm_.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pxd_itm_.java @@ -89,7 +89,7 @@ class DateAdpBldr { return date; } else - return DateAdp_.Now(); // not dirtied; default to now; + return Datetime_now.Get(); // not dirtied; default to now; } public DateAdpBldr Date_(DateAdp v) {date = v; return this;} DateAdp date = null; public void Seg_set(int idx, int val) { diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pxd_itm_month_name.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pxd_itm_month_name.java index 1909f18fd..ffb92d8b3 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pxd_itm_month_name.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pxd_itm_month_name.java @@ -188,7 +188,7 @@ class Pxd_itm_unit extends Pxd_itm_base implements Pxd_itm_prototype { } @Override public boolean Time_ini(DateAdpBldr bldr) { DateAdp cur = bldr.Date(); - if (cur == null) cur = DateAdp_.Now(); + if (cur == null) cur = Datetime_now.Get(); int val = seg_val * seg_multiple; switch (this.Seg_idx()) { case DateAdp_.SegIdx_second: cur = cur.Add_second(val); break; @@ -256,7 +256,7 @@ class Pxd_itm_day_relative extends Pxd_itm_base implements Pxd_itm_prototype { public Pxd_itm MakeNew(int ary_idx) {return new Pxd_itm_day_relative(adj, ary_idx);} @Override public boolean Eval(Pxd_parser state) {return true;} @Override public boolean Time_ini(DateAdpBldr bldr) { - DateAdp date = DateAdp_.Now(); + DateAdp date = Datetime_now.Get(); if (adj != 0) date = date.Add_day(adj); bldr.Seg_set(DateAdp_.SegIdx_year , date.Year()); bldr.Seg_set(DateAdp_.SegIdx_month , date.Month()); @@ -278,7 +278,7 @@ class Pxd_itm_time_relative extends Pxd_itm_base implements Pxd_itm_prototype { public Pxd_itm MakeNew(int ary_idx) {return new Pxd_itm_time_relative(ary_idx);} @Override public boolean Eval(Pxd_parser state) {return true;} @Override public boolean Time_ini(DateAdpBldr bldr) { - DateAdp date = DateAdp_.Now(); + DateAdp date = Datetime_now.Get(); bldr.Seg_set(DateAdp_.SegIdx_year , date.Year()); bldr.Seg_set(DateAdp_.SegIdx_month , date.Month()); bldr.Seg_set(DateAdp_.SegIdx_day , date.Day()); @@ -347,7 +347,7 @@ class Pxd_itm_dow_name extends Pxd_itm_base implements Pxd_itm_prototype { public Pxd_itm MakeNew(int ary_idx) {return new Pxd_itm_dow_name(ary_idx, dow_name, dow_idx);} @Override public boolean Eval(Pxd_parser state) {return true;} @Override public boolean Time_ini(DateAdpBldr bldr) { - DateAdp now = DateAdp_.Now(); + DateAdp now = Datetime_now.Get(); int adj = dow_idx - now.DayOfWeek(); // adj = requested_dow - current_dow; EX: requesting Friday, and today is Wednesday; adj = 2 (4 - 2); DATE:2014-05-02 if (adj < 0) adj += 7; // requested_down is before current_dow; add 7 to get the next day bldr.Date_(bldr.Date().Add_day(adj)); diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pxd_parser.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pxd_parser.java index 55f94549e..dbcddd721 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pxd_parser.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pxd_parser.java @@ -145,7 +145,7 @@ class Pxd_parser { return DateAdp_.MinValue; } } - DateAdp now = DateAdp_.Now(); + DateAdp now = Datetime_now.Get(); DateAdpBldr bldr = new DateAdpBldr(now.Year(), now.Month(), now.Day(), 0, 0, 0, 0); for (int i = 0; i < tkns_len; i++) { Pxd_itm itm = (Pxd_itm)tkns[i]; diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pxd_parser_tst.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pxd_parser_tst.java index 6026fb27a..2fce7238f 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pxd_parser_tst.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pxd_parser_tst.java @@ -19,8 +19,8 @@ package gplx.xowa.xtns.pfuncs.times; import gplx.*; import gplx.xowa.*; import g import org.junit.*; public class Pxd_parser_tst { Bry_bfr bfr = Bry_bfr_.New_w_size(16); Pxd_parser parser = new Pxd_parser(); - @Before public void init() {Tfds.Now_enabled_y_(); Tfds.Now_set(test_date);} DateAdp test_date = DateAdp_.parse_fmt("2012-02-27", "yyyy-MM-dd"); - @After public void teardown() {Tfds.Now_enabled_n_();} + @Before public void init() {Datetime_now.Manual_y_(); Datetime_now.Manual_(test_date);} DateAdp test_date = DateAdp_.parse_fmt("2012-02-27", "yyyy-MM-dd"); + @After public void teardown() {Datetime_now.Manual_n_();} @Test public void Month_name_0__day__year() {tst_date_("Mar 2 2001" , "2001-03-02");} // y:Mar-02-2001;Mar.02.2001;Mar 02, 2001 n:Mar/02/2001;Feb,05,2011 @Test public void Month_name_0__day__year__bad_day() {tst_date_("Mar 32 2001" , "Invalid day: 32");} @Test public void Month_name_0__day__year__bad_year() {tst_date_("Mar 3 999" , "0999-03-03");} diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/ttls/Pfunc_anchorencode.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/ttls/Pfunc_anchorencode.java index b21ab9229..4373b30c0 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/ttls/Pfunc_anchorencode.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/ttls/Pfunc_anchorencode.java @@ -35,7 +35,9 @@ public class Pfunc_anchorencode extends Pf_func_base { // EX: {{anchorencode:a b @Override public void Func_evaluate(Bry_bfr bfr, Xop_ctx ctx, Xot_invk caller, Xot_invk self, byte[] src) { if (anchor_ctx == null) Func_init(ctx); byte[] val_ary = Eval_argx(ctx, src, caller, self); if (val_ary == Bry_.Empty) return; - Anchor_encode(val_ary, bfr, ctx.Wiki().Utl__bfr_mkr().Get_b512().Mkr_rls()); + Bry_bfr tmp_bfr = ctx.Wiki().Utl__bfr_mkr().Get_b512(); + try {Anchor_encode(val_ary, bfr, tmp_bfr);} + finally {tmp_bfr.Mkr_rls();} } public static void Anchor_encode(byte[] src, Bry_bfr bfr, Bry_bfr tmp_bfr) { Xop_root_tkn root = anchor_ctx.Tkn_mkr().Root(src); diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/ttls/Pfunc_rel2abs.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/ttls/Pfunc_rel2abs.java index c94df8abc..fefa20a3d 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/ttls/Pfunc_rel2abs.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/ttls/Pfunc_rel2abs.java @@ -34,7 +34,9 @@ public class Pfunc_rel2abs extends Pf_func_base { byte[] qry = Eval_argx(ctx, src, caller, self); byte[] orig = Pf_func_.Eval_arg_or_empty(ctx, src, caller, self, self.Args_len(), 0); if (orig.length == 0) orig = ctx.Page().Ttl().Full_txt_w_ttl_case(); - bfr.Add(Rel2abs(ctx.Wiki().Utl__bfr_mkr().Get_b512().Mkr_rls(), qry, orig)); + Bry_bfr tmp_bfr = ctx.Wiki().Utl__bfr_mkr().Get_b512(); + try {bfr.Add(Rel2abs(tmp_bfr, qry, orig));} + finally {tmp_bfr.Mkr_rls();} } public static boolean Rel2abs_ttl(byte[] ttl, int bgn, int end) { int last = end - 1; diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/ttls/Pfunc_urlfunc.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/ttls/Pfunc_urlfunc.java index 9e7c78c8f..880b64994 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/ttls/Pfunc_urlfunc.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/ttls/Pfunc_urlfunc.java @@ -38,19 +38,21 @@ public class Pfunc_urlfunc extends Pf_func_base { // EX: {{lc:A}} -> a else trg.Add(gplx.core.net.Gfo_protocol_itm.Bry_relative); // "//" trg.Add(xwiki.Domain_bry()) // "commons.wikimedia.org" - .Add(Xoh_href_.Bry__wiki) // "/wiki/" + .Add(Xoh_href_.Bry__wiki) // "/wiki/" .Add_mid(ttl_ary, xwiki.Key_bry().length + 1, ttl_ary.length); // "A#b?c=d"; +1 for colon after "commons:"; NOTE: ugly way of getting rest of url, but ttl currently does not have Full_wo_wiki } else { - Bry_bfr tmp_bfr = ctx.Wiki().Utl__bfr_mkr().Get_b512().Mkr_rls(); - switch (tid) { - case Tid_local: tmp_bfr.Add(ctx.Wiki().Props().ArticlePath());break; - case Tid_full: tmp_bfr.Add(Bry_relative_url).Add(ctx.Wiki().Props().Server_name()).Add(ctx.Wiki().Props().ArticlePath()); break; - case Tid_canonical: tmp_bfr.Add(ctx.Wiki().Props().Server()).Add(ctx.Wiki().Props().ArticlePath()); break; - default: throw Err_.new_unhandled(tid); - } - tmp_bfr.Add(ttl_ary); - trg.Add_bfr_and_clear(tmp_bfr); + Bry_bfr tmp_bfr = ctx.Wiki().Utl__bfr_mkr().Get_b512(); + try { + switch (tid) { + case Tid_local: tmp_bfr.Add(ctx.Wiki().Props().ArticlePath());break; + case Tid_full: tmp_bfr.Add(Bry_relative_url).Add(ctx.Wiki().Props().Server_name()).Add(ctx.Wiki().Props().ArticlePath()); break; + case Tid_canonical: tmp_bfr.Add(ctx.Wiki().Props().Server()).Add(ctx.Wiki().Props().ArticlePath()); break; + default: throw Err_.new_unhandled(tid); + } + tmp_bfr.Add(ttl_ary); + trg.Add_bfr_and_clear(tmp_bfr); + } finally {tmp_bfr.Mkr_rls();} } if (qry_arg != Bry_.Empty) trg.Add_byte(Byte_ascii.Question).Add(qry_arg); } diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/wikis/Pfunc_pagesincategory_tst.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/wikis/Pfunc_pagesincategory_tst.java index 64ec18dd2..5e891276a 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/wikis/Pfunc_pagesincategory_tst.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/wikis/Pfunc_pagesincategory_tst.java @@ -54,7 +54,7 @@ class Pfunc_pagesincategory_tstr { public void Init_category_counts(String category_title, int pages, int subcs, int files) { int page_id = 1; page_tbl.Insert_bgn(); - page_tbl.Insert_cmd_by_batch(page_id, Xow_ns_.Tid__category, Bry_.new_u8(category_title), Bool_.N, DateAdp_.Now(), 1, 1, 1, 1); + page_tbl.Insert_cmd_by_batch(page_id, Xow_ns_.Tid__category, Bry_.new_u8(category_title), Bool_.N, Datetime_now.Get(), 1, 1, 1, 1); page_tbl.Insert_end(); cat_core_tbl.Insert_bgn(); cat_core_tbl.Insert_cmd_by_batch(page_id, pages, subcs, files, Byte_.Zero, 1); diff --git a/400_xowa/src/gplx/xowa/xtns/poems/Poem_nde.java b/400_xowa/src/gplx/xowa/xtns/poems/Poem_nde.java index d961f201b..89047bb40 100644 --- a/400_xowa/src/gplx/xowa/xtns/poems/Poem_nde.java +++ b/400_xowa/src/gplx/xowa/xtns/poems/Poem_nde.java @@ -39,43 +39,45 @@ public class Poem_nde implements Xox_xnde { bfr.Add(Div_poem_end); } private static byte[] Parse_lines(Bry_bfr_mkr bfr_mkr, byte[] src, int src_bgn, int src_end) { - Bry_bfr bfr = bfr_mkr.Get_k004().Mkr_rls(); - int line_bgn = src_bgn; boolean line_is_1st = true; - while (line_bgn < src_end) { // iterate over each \n - boolean indent_enabled = false; - if (line_is_1st) line_is_1st = false; - else { - int line_end_w_br = line_bgn + Xowa_br_mark.length; - if ( line_end_w_br < src_end // check for out of bounds; PAGE:en.s:The Hebrew Nation did not write it; DATE:2015-01-31 - && Bry_.Match(src, line_bgn, line_end_w_br, Xowa_br_mark)) // "
    \n" already inserted by XOWA; do not insert again; DATE:2014-10-20 - bfr.Add_byte_nl(); - else - bfr.Add(Gfh_tag_.Br_inl).Add_byte_nl().Add(Xowa_br_mark); // add "
    \n" unless 1st line; EX: "\n\s" should not add leading "
    \n" - } - switch (src[line_bgn]) { - case Byte_ascii.Space: // "\n\s" -> "\n " - int space_end = Bry_find_.Find_fwd_while(src, line_bgn, src_end, Byte_ascii.Space); - int space_count = space_end - line_bgn; - line_bgn = space_end; - for (int i = 0; i < space_count; ++i) - bfr.Add(Gfh_entity_.Nbsp_num_bry); - break; - case Byte_ascii.Colon: { // "\n:" -> - int colon_end = Bry_find_.Find_fwd_while(src, line_bgn, src_end, Byte_ascii.Colon); - int colon_count = colon_end - line_bgn; - line_bgn = colon_end; - bfr.Add(Indent_bgn).Add_int_variable(colon_count).Add(Indent_end); // add - indent_enabled = true; - break; + Bry_bfr bfr = bfr_mkr.Get_k004(); + try { + int line_bgn = src_bgn; boolean line_is_1st = true; + while (line_bgn < src_end) { // iterate over each \n + boolean indent_enabled = false; + if (line_is_1st) line_is_1st = false; + else { + int line_end_w_br = line_bgn + Xowa_br_mark.length; + if ( line_end_w_br < src_end // check for out of bounds; PAGE:en.s:The Hebrew Nation did not write it; DATE:2015-01-31 + && Bry_.Match(src, line_bgn, line_end_w_br, Xowa_br_mark)) // "
    \n" already inserted by XOWA; do not insert again; DATE:2014-10-20 + bfr.Add_byte_nl(); + else + bfr.Add(Gfh_tag_.Br_inl).Add_byte_nl().Add(Xowa_br_mark); // add "
    \n" unless 1st line; EX: "\n\s" should not add leading "
    \n" + } + switch (src[line_bgn]) { + case Byte_ascii.Space: // "\n\s" -> "\n " + int space_end = Bry_find_.Find_fwd_while(src, line_bgn, src_end, Byte_ascii.Space); + int space_count = space_end - line_bgn; + line_bgn = space_end; + for (int i = 0; i < space_count; ++i) + bfr.Add(Gfh_entity_.Nbsp_num_bry); + break; + case Byte_ascii.Colon: { // "\n:" -> + int colon_end = Bry_find_.Find_fwd_while(src, line_bgn, src_end, Byte_ascii.Colon); + int colon_count = colon_end - line_bgn; + line_bgn = colon_end; + bfr.Add(Indent_bgn).Add_int_variable(colon_count).Add(Indent_end); // add + indent_enabled = true; + break; + } } + int line_end = Bry_find_.Find_fwd(src, Byte_ascii.Nl, line_bgn, src_end); // find end "\n" + if (line_end == Bry_find_.Not_found) line_end = src_end; // no "\n"; use eos; + bfr.Add_mid(src, line_bgn, line_end); // add everything from line_bgn to line_end + if (indent_enabled) bfr.Add(Gfh_tag_.Span_rhs); // if "\n:", add + line_bgn = line_end + 1; // +1 to skip over end "\n" } - int line_end = Bry_find_.Find_fwd(src, Byte_ascii.Nl, line_bgn, src_end); // find end "\n" - if (line_end == Bry_find_.Not_found) line_end = src_end; // no "\n"; use eos; - bfr.Add_mid(src, line_bgn, line_end); // add everything from line_bgn to line_end - if (indent_enabled) bfr.Add(Gfh_tag_.Span_rhs); // if "\n:", add - line_bgn = line_end + 1; // +1 to skip over end "\n" - } - return bfr.To_bry_and_clear(); + return bfr.To_bry_and_clear(); + } finally {bfr.Mkr_rls();} } private static byte[] Div_poem_bgn = Bry_.new_a7("
    \n

    \n") // NOTE: always enclose in

    ; MW does this implicitly in its modified parse; DATE:2014-04-27 diff --git a/400_xowa/src/gplx/xowa/xtns/proofreadPage/Pp_pages_nde.java b/400_xowa/src/gplx/xowa/xtns/proofreadPage/Pp_pages_nde.java index 21bd91797..0deb3dcbb 100644 --- a/400_xowa/src/gplx/xowa/xtns/proofreadPage/Pp_pages_nde.java +++ b/400_xowa/src/gplx/xowa/xtns/proofreadPage/Pp_pages_nde.java @@ -65,7 +65,7 @@ public class Pp_pages_nde implements Xox_xnde, Mwh_atr_itm_owner1 { Bry_bfr full_bfr = wiki.Utl__bfr_mkr().Get_m001(); Hash_adp_bry lst_page_regy = ctx.Lst_page_regy(); if (lst_page_regy == null) lst_page_regy = Hash_adp_bry.cs(); // SEE:NOTE:page_regy; DATE:2014-01-01 page.Html_data().Indicators().Enabled_(Bool_.N); // disable b/c should not add to current page; PAGE:en.s:The_Parochial_System_(Wilberforce,_1838); DATE:2015-04-29 - byte[] page_bry = Bld_wikitext(full_bfr, lst_page_regy); + byte[] page_bry = Bld_wikitext(full_bfr, wiki.Parser_mgr().Pp_num_parser(), lst_page_regy); if (page_bry != null) xtn_root = Bld_root_nde(full_bfr, lst_page_regy, page_bry); // NOTE: this effectively reparses page twice; needed b/c of "if {| : ; # *, auto add new_line" which can build different tokens page.Pages_recursed_(false); @@ -98,7 +98,7 @@ public class Pp_pages_nde implements Xox_xnde, Mwh_atr_itm_owner1 { bgn_sect_bry = end_sect_bry = null; return true; } - private byte[] Bld_wikitext(Bry_bfr full_bfr, Hash_adp_bry lst_page_regy) { + private byte[] Bld_wikitext(Bry_bfr full_bfr, Gfo_number_parser num_parser, Hash_adp_bry lst_page_regy) { Pp_index_page index_page = Pp_index_parser.Parse(wiki, ctx, index_ttl, ns_page_id); int index_page_ttls_len = index_page.Page_ttls().Count(); byte[] rv = Bry_.Empty; @@ -107,7 +107,7 @@ public class Pp_pages_nde implements Xox_xnde, Mwh_atr_itm_owner1 { if ( index_page.Pagelist_xndes().Count() > 0 // pagelist exists; don't get from args || index_page_ttls_len == 0 // no [[Page:]] in [[Index:]] ) // NOTE: this simulates MW's if (empty($links)); REF.MW:ProofreadPageRenderer.php|renderPages - ttls = Get_ttls_from_xnde_args(); + ttls = Get_ttls_from_xnde_args(num_parser); else { Int_obj_ref bgn_page_ref = Int_obj_ref.New_neg1(), end_page_ref = Int_obj_ref.New_neg1(); ttls = index_page.Get_ttls_rng(wiki, ns_page_id, bgn_page_bry, end_page_bry, bgn_page_ref, end_page_ref); @@ -149,15 +149,6 @@ public class Pp_pages_nde implements Xox_xnde, Mwh_atr_itm_owner1 { } return rv; } - private static final byte[] - Bry_tmpl = Bry_.new_a7("{{:MediaWiki:Proofreadpage_header_template") - , Bry_value = Bry_.new_a7("|value=") - , Bry_toc_cur = Bry_.new_a7("|current=") - , Bry_toc_prv = Bry_.new_a7("|prev=") - , Bry_toc_nxt = Bry_.new_a7("|next=") - , Bry_page_bgn = Bry_.new_a7("|from=") - , Bry_page_end = Bry_.new_a7("|to=") - ; private byte[] Bld_wikitext_for_header(Bry_bfr full_bfr, Pp_index_page index_page, byte[] rv) { List_adp main_lnkis = index_page.Main_lnkis(); int main_lnkis_len = main_lnkis.Count(); @@ -210,12 +201,12 @@ public class Pp_pages_nde implements Xox_xnde, Mwh_atr_itm_owner1 { full_bfr.Add(rv); return full_bfr.To_bry_and_clear(); } - private Xoa_ttl[] Get_ttls_from_xnde_args() { + private Xoa_ttl[] Get_ttls_from_xnde_args(Gfo_number_parser num_parser) { if (!Chk_step()) return Ttls_null; List_adp list = List_adp_.New(); - list = Get_ttls_from_xnde_args__include(list); if (list == null) return Ttls_null; - list = Get_ttls_from_xnde_args__rng(list); if (list == null) return Ttls_null; - list = Get_ttls_from_xnde_args__exclude(list); if (list == null) return Ttls_null; + list = Get_ttls_from_xnde_args__include(list); if (list == null) return Ttls_null; + list = Get_ttls_from_xnde_args__rng(num_parser, list); if (list == null) return Ttls_null; + list = Get_ttls_from_xnde_args__exclude(list); if (list == null) return Ttls_null; if (include != null || exclude != null) // sort if include / exclude specified; will skip sort if only range specified list.Sort(); return Get_ttls_from_xnde_args__ttls(list); @@ -226,10 +217,10 @@ public class Pp_pages_nde implements Xox_xnde, Mwh_atr_itm_owner1 { if (include_pages == null) return list; // ignore invalid include; DATE:2014-02-22 int include_pages_len = include_pages.length; for (int i = 0; i < include_pages_len; i++) - list.Add(Int_obj_val.new_(include_pages[i])); + list.Add(new Int_obj_val(include_pages[i])); return list; } - private List_adp Get_ttls_from_xnde_args__rng(List_adp list) { + private List_adp Get_ttls_from_xnde_args__rng(Gfo_number_parser num_parser, List_adp list) { if (Bry_.Len_eq_0(bgn_page_bry) && Bry_.Len_eq_0(end_page_bry)) return list; // from and to are blank; exit early bgn_page_int = 0; // NOTE: default to 0 (1st page) if (Bry_.Len_gt_0(bgn_page_bry)) { @@ -258,7 +249,7 @@ public class Pp_pages_nde implements Xox_xnde, Mwh_atr_itm_owner1 { return null; } for (int i = bgn_page_int; i <= end_page_int; i++) - list.Add(Int_obj_val.new_(i)); + list.Add(new Int_obj_val(i)); return list; } private int Get_max_page_idx(Xowe_wiki wiki, Xoa_ttl index_ttl) { @@ -283,7 +274,7 @@ public class Pp_pages_nde implements Xox_xnde, Mwh_atr_itm_owner1 { Hash_adp exclude_pages_hash = Hash_adp_.New(); int exclude_pages_len = exclude_pages.length; for (int i = 0; i < exclude_pages_len; i++) { - Int_obj_val exclude_page = Int_obj_val.new_(exclude_pages[i]); + Int_obj_val exclude_page = new Int_obj_val(exclude_pages[i]); if (!exclude_pages_hash.Has(exclude_page)) exclude_pages_hash.Add(exclude_page, exclude_page); } @@ -372,6 +363,23 @@ public class Pp_pages_nde implements Xox_xnde, Mwh_atr_itm_owner1 { tmp_parser.Parse_text_to_wdom(rv, tmp_ctx, tmp_ctx.Tkn_mkr(), wikitext, Xop_parser_.Doc_bgn_bos); return rv; } + private String Fail_msg_suffix() { + String excerpt = Bry_fmtr.Escape_tilde(String_.new_u8(Bry_.Mid_by_len_safe(src, xnde_tkn.Src_bgn(), 32))); + return String_.Format(" ttl={0} src={1}", String_.new_u8(cur_page_ttl.Full_db()), excerpt); + } + private String Fail_msg_basic(String msg) {return msg + ";" + Fail_msg_suffix();} + private String Fail_msg_custom(String fmt, Object... args) {return String_.Format(fmt, args) + Fail_msg_suffix();} + private boolean Fail_msg(String msg) { + xtn_literal = true; + usr_dlg.Warn_many("", "", String_.Replace(Fail_msg_basic(msg), "\n", "")); + return false; + } + private boolean Fail_args(String fmt, Object... args) { + xtn_literal = true; + usr_dlg.Warn_many("", "", String_.Replace(Fail_msg_custom(fmt, args), "\n", "")); + return false; + } + private static Hash_adp_bry xatrs_hash = Hash_adp_bry.ci_a7() // NOTE: these do not seem to be i18n'd; no ProofreadPage.magic.php; ProofreadPage.i18n.php only has messages; ProofreadPage.body.php refers to names literally .Add_str_obj("index" , Byte_obj_val.new_(Pp_pages_nde.Xatr_index_ttl)) .Add_str_obj("from" , Byte_obj_val.new_(Pp_pages_nde.Xatr_bgn_page)) @@ -402,24 +410,16 @@ public class Pp_pages_nde implements Xox_xnde, Mwh_atr_itm_owner1 { , Xatr_toc_prv = 11 , Xatr_toc_nxt = 12 ; + private static final byte[] + Bry_tmpl = Bry_.new_a7("{{:MediaWiki:Proofreadpage_header_template") + , Bry_value = Bry_.new_a7("|value=") + , Bry_toc_cur = Bry_.new_a7("|current=") + , Bry_toc_prv = Bry_.new_a7("|prev=") + , Bry_toc_nxt = Bry_.new_a7("|next=") + , Bry_page_bgn = Bry_.new_a7("|from=") + , Bry_page_end = Bry_.new_a7("|to=") + ; public static final Xoa_ttl[] Ttls_null = null; - private static final Number_parser num_parser = new Number_parser().Ignore_space_at_end_y_(); // ignore space at end; PAGE:en.s:1911_Encyclop�dia_Britannica/Boissier,_Marie_Louis_Antoine_Gaston DATE:2015-04-29 - private String Fail_msg_suffix() { - String excerpt = Bry_fmtr.Escape_tilde(String_.new_u8(Bry_.Mid_by_len_safe(src, xnde_tkn.Src_bgn(), 32))); - return String_.Format(" ttl={0} src={1}", String_.new_u8(cur_page_ttl.Full_db()), excerpt); - } - private String Fail_msg_basic(String msg) {return msg + ";" + Fail_msg_suffix();} - private String Fail_msg_custom(String fmt, Object... args) {return String_.Format(fmt, args) + Fail_msg_suffix();} - private boolean Fail_msg(String msg) { - xtn_literal = true; - usr_dlg.Warn_many("", "", String_.Replace(Fail_msg_basic(msg), "\n", "")); - return false; - } - private boolean Fail_args(String fmt, Object... args) { - xtn_literal = true; - usr_dlg.Warn_many("", "", String_.Replace(Fail_msg_custom(fmt, args), "\n", "")); - return false; - } } /* NOTE:page_regy diff --git a/400_xowa/src/gplx/xowa/xtns/scribunto/Scrib_core.java b/400_xowa/src/gplx/xowa/xtns/scribunto/Scrib_core.java index 55aa867d3..04ea51973 100644 --- a/400_xowa/src/gplx/xowa/xtns/scribunto/Scrib_core.java +++ b/400_xowa/src/gplx/xowa/xtns/scribunto/Scrib_core.java @@ -163,11 +163,16 @@ public class Scrib_core { this.frame_parent = parent_frame; this.frame_current = current_frame; } public void Invoke(Xowe_wiki wiki, Xop_ctx ctx, byte[] src, Xot_invk parent_frame, Xot_invk current_frame, Bry_bfr bfr, byte[] mod_name, byte[] mod_text, byte[] fnc_name) { + // save current values for restoring later + Xot_invk old_frame_parent = this.frame_parent; Xot_invk old_frame_current = this.frame_current; + byte[] old_src = cur_src; + + // init this.wiki = wiki; this.ctx = ctx; this.cur_src = src; lib_mw.Invoke_bgn(wiki, ctx, src); - Xot_invk old_frame_parent = this.frame_parent; Xot_invk old_frame_current = this.frame_current; this.frame_parent = parent_frame; this.frame_current = current_frame; parent_frame.Frame_tid_(Scrib_frame_.Tid_parent); current_frame.Frame_tid_(Scrib_frame_.Tid_current); + try { Scrib_lua_mod mod = Mods_get_or_new(mod_name, mod_text); Keyval[] func_args = Scrib_kv_utl_.base1_many_(mod.Init_chunk_func(), String_.new_u8(fnc_name)); @@ -188,6 +193,7 @@ public class Scrib_core { lib_mw.Invoke_end(); parent_frame.Frame_tid_(Scrib_frame_.Tid_null); current_frame.Frame_tid_(Scrib_frame_.Tid_null); this.frame_parent = old_frame_parent; this.frame_current = old_frame_current; // NOTE: reset template frame; PAGE:en.w:Constantine_the_Great {{Christianity}}; DATE:2014-06-26 + this.cur_src = old_src; frame_created_list.Clear(); } } diff --git a/400_xowa/src/gplx/xowa/xtns/scribunto/Scrib_kv_utl_.java b/400_xowa/src/gplx/xowa/xtns/scribunto/Scrib_kv_utl_.java index a0a084144..b38bfeef5 100644 --- a/400_xowa/src/gplx/xowa/xtns/scribunto/Scrib_kv_utl_.java +++ b/400_xowa/src/gplx/xowa/xtns/scribunto/Scrib_kv_utl_.java @@ -61,4 +61,12 @@ public class Scrib_kv_utl_ { try {return (Keyval[])ary[idx].Val();} catch (Exception e) {throw Err_.new_exc(e, "scrib", "cast as Keyval[] failed", "ary", Keyval_.Ary_to_str(ary));} } + public static Object Get_sub_by_key_or_null(Keyval[] ary, String key) { + int len = ary.length; + for (int i = 0; i < len; ++i) { + Keyval sub = ary[i]; + if (String_.Eq(key, sub.Key())) return sub.Val(); + } + return null; + } } diff --git a/400_xowa/src/gplx/xowa/xtns/scribunto/engines/luaj/Luaj_server.java b/400_xowa/src/gplx/xowa/xtns/scribunto/engines/luaj/Luaj_server.java index 77f5d4c63..0377a21a8 100644 --- a/400_xowa/src/gplx/xowa/xtns/scribunto/engines/luaj/Luaj_server.java +++ b/400_xowa/src/gplx/xowa/xtns/scribunto/engines/luaj/Luaj_server.java @@ -27,10 +27,12 @@ public class Luaj_server implements Scrib_server { this.func_recv = func_recv; this.func_dbg = func_dbg; } - private Globals luaj_globals; + public Globals Luaj_globals() {return luaj_globals;} private Globals luaj_globals; + public DebugLib Luaj_dbg() {return luaj_dbg;} private DebugLib luaj_dbg; public void Init(String... init_args) { + luaj_dbg = new DebugLib(); // NOTE: needed for getfenv luaj_globals = JsePlatform.standardGlobals(); - luaj_globals.load(new DebugLib()); + luaj_globals.load(luaj_dbg); luaj_globals.load(new MWClient(luaj_globals, func_recv)); luaj_globals.set("dbg", func_dbg); String root_str = init_args[2]; diff --git a/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_language.java b/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_language.java index 65cfb4cad..adf89fa52 100644 --- a/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_language.java +++ b/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_language.java @@ -151,8 +151,10 @@ public class Scrib_lib_language implements Scrib_lib { private boolean Case_1st(Scrib_proc_args args, Scrib_proc_rslt rslt, boolean upper) { Xol_lang_itm lang = lang_(args); byte[] word = args.Pull_bry(1); - Bry_bfr bfr = core.Wiki().Utl__bfr_mkr().Get_b128().Mkr_rls(); - return rslt.Init_obj(lang.Case_mgr().Case_build_1st(bfr, upper, word, 0, word.length)); + Bry_bfr bfr = core.Wiki().Utl__bfr_mkr().Get_b128(); + try { + return rslt.Init_obj(lang.Case_mgr().Case_build_1st(bfr, upper, word, 0, word.length)); + } finally {bfr.Mkr_rls();} } public boolean Lc(Scrib_proc_args args, Scrib_proc_rslt rslt) {return Case_all(args, rslt, Bool_.N);} public boolean Uc(Scrib_proc_args args, Scrib_proc_rslt rslt) {return Case_all(args, rslt, Bool_.Y);} @@ -187,7 +189,7 @@ public class Scrib_lib_language implements Scrib_lib { Pft_fmt_itm[] fmt_ary = Pft_fmt_itm_.Parse(core.Ctx(), fmt_bry); DateAdp date = null; if (Bry_.Len_eq_0(date_bry)) - date = DateAdp_.Now(); + date = Datetime_now.Get(); else { if (date_bry[0] == Byte_ascii.Plus) { // detect wikidata-style dates; EX: +00000002010-05-01T00:00:00Z; PAGE:en.w:Mountain_Province; DATE:2015-07-29 int date_bry_len = date_bry.length; diff --git a/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_language_tst.java b/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_language_tst.java index 64197c2b5..266068d11 100644 --- a/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_language_tst.java +++ b/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_language_tst.java @@ -73,7 +73,7 @@ public class Scrib_lib_language_tst { } @Test public void FormatDate() { fxt.Test_scrib_proc_str(lib, Scrib_lib_language.Invk_formatDate, Object_.Ary("en", "Y-m-d", "2013-03-17", false), "2013-03-17"); - fxt.Test_scrib_proc_str(lib, Scrib_lib_language.Invk_formatDate, Object_.Ary("en", "Y-m-d"), DateAdp_.Now().XtoStr_fmt_yyyy_MM_dd()); // empty date should default to today; + fxt.Test_scrib_proc_str(lib, Scrib_lib_language.Invk_formatDate, Object_.Ary("en", "Y-m-d"), Datetime_now.Get().XtoStr_fmt_yyyy_MM_dd()); // empty date should default to today; } @Test public void FormatDate__ymd_12() { fxt.Test_scrib_proc_str(lib, Scrib_lib_language.Invk_formatDate, Object_.Ary("en", "Y-m-d", "201603160102", false), "2016-03-16"); // handle long numeric date (12 digits); PAGE:en.w:Boron; DATE:2015-07-29 @@ -82,11 +82,11 @@ public class Scrib_lib_language_tst { fxt.Test_scrib_proc_str(lib, Scrib_lib_language.Invk_formatDate, Object_.Ary("en", "Y-m-d", "+00000002010-05-01T00:00:00Z", false), "2010-05-01"); // handle Wikidata style dates; PAGE:en.w:Mountain_Province; DATE:2015-07-29 } @Test public void FormatDate_date_omitted() { // PURPOSE: some calls skip the date; retrieve arg_4 by int; EX: pl.w:L._Frank_Baum - Tfds.Now_enabled_y_(); - Tfds.Now_set(DateAdp_.new_(2013, 12, 19, 1, 2, 3, 4)); + Datetime_now.Manual_y_(); + Datetime_now.Manual_(DateAdp_.new_(2013, 12, 19, 1, 2, 3, 4)); fxt.Test_scrib_proc_str(lib, Scrib_lib_language.Invk_formatDate, Keyval_.Ary(Keyval_.int_(1, "en"), Keyval_.int_(2, "Y-m-d"), Keyval_.int_(4, false)), "2013-12-19"); fxt.Test_scrib_proc_str(lib, Scrib_lib_language.Invk_formatDate, Object_.Ary("en", "Y-m-d", ""), "2013-12-19");// PURPOSE: '' should return today, not fail; EX: th.w:สถานีรถไฟตรัง - Tfds.Now_enabled_n_(); + Datetime_now.Manual_n_(); } @Test public void Lc() { fxt.Test_scrib_proc_str(lib, Scrib_lib_language.Invk_lc, Object_.Ary("en", "ABC"), "abc"); diff --git a/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_mw.java b/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_mw.java index a32d41fc6..73d4ebb51 100644 --- a/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_mw.java +++ b/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_mw.java @@ -268,7 +268,7 @@ public class Scrib_lib_mw implements Scrib_lib { bfr.Mkr_rls(); return rslt.Init_obj(bfr.To_str_and_clear()); } - private Keyval[] CallParserFunction_parse_args(Number_parser num_parser, Bry_obj_ref argx_ref, Bry_obj_ref fnc_name_ref, Keyval[] args) { + private Keyval[] CallParserFunction_parse_args(Gfo_number_parser num_parser, Bry_obj_ref argx_ref, Bry_obj_ref fnc_name_ref, Keyval[] args) { List_adp rv = List_adp_.New(); // flatten args int args_len = args.length; diff --git a/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_wikibase.java b/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_wikibase.java index 6680b64a4..d0bba723e 100644 --- a/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_wikibase.java +++ b/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_wikibase.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.xowa.xtns.scribunto.libs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.scribunto.*; -import gplx.langs.jsons.*; import gplx.xowa.xtns.wdatas.*; import gplx.xowa.xtns.wdatas.parsers.*; +import gplx.langs.jsons.*; import gplx.xowa.xtns.wbases.*; import gplx.xowa.xtns.wbases.parsers.*; import gplx.xowa.wikis.domains.*; public class Scrib_lib_wikibase implements Scrib_lib { public Scrib_lib_wikibase(Scrib_core core) {this.core = core;} private Scrib_core core; @@ -35,6 +35,7 @@ public class Scrib_lib_wikibase implements Scrib_lib { case Proc_getLabel: return GetLabel(args, rslt); case Proc_getEntity: return GetEntity(args, rslt); case Proc_getSetting: return GetSetting(args, rslt); + case Proc_getEntityUrl: return GetEntityUrl(args, rslt); case Proc_renderSnak: return RenderSnak(args, rslt); case Proc_renderSnaks: return RenderSnaks(args, rslt); case Proc_getEntityId: return GetEntityId(args, rslt); @@ -43,26 +44,42 @@ public class Scrib_lib_wikibase implements Scrib_lib { case Proc_resolvePropertyId: return ResolvePropertyId(args, rslt); case Proc_getSiteLinkPageName: return GetSiteLinkPageName(args, rslt); case Proc_incrementExpensiveFunctionCount: return IncrementExpensiveFunctionCount(args, rslt); + case Proc_getPropertyOrder: return GetPropertyOrder(args, rslt); + case Proc_orderProperties: return OrderProperties(args, rslt); default: throw Err_.new_unhandled(key); } } - private static final int Proc_getLabel = 0, Proc_getEntity = 1, Proc_getSetting = 2, Proc_renderSnak = 3, Proc_renderSnaks = 4, Proc_getEntityId = 5, Proc_getUserLang = 6, Proc_getDescription = 7, Proc_resolvePropertyId = 8, Proc_getSiteLinkPageName = 9, Proc_incrementExpensiveFunctionCount = 10; - public static final String Invk_getLabel = "getLabel", Invk_getEntity = "getEntity", Invk_getSetting = "getSetting", Invk_renderSnak = "renderSnak", Invk_renderSnaks = "renderSnaks", Invk_getEntityId = "getEntityId", Invk_getUserLang = "getUserLang", Invk_getDescription = "getDescription", Invk_resolvePropertyId = "resolvePropertyId", Invk_getSiteLinkPageName = "getSiteLinkPageName", Invk_incrementExpensiveFunctionCount = "incrementExpensiveFunctionCount"; - private static final String[] Proc_names = String_.Ary(Invk_getLabel, Invk_getEntity, Invk_getSetting, Invk_renderSnak, Invk_renderSnaks, Invk_getEntityId, Invk_getUserLang, Invk_getDescription, Invk_resolvePropertyId, Invk_getSiteLinkPageName, Invk_incrementExpensiveFunctionCount); + private static final int + Proc_getLabel = 0, Proc_getEntity = 1, Proc_getSetting = 2, Proc_getEntityUrl = 3, Proc_renderSnak = 4, Proc_renderSnaks = 5, Proc_getEntityId = 6, Proc_getUserLang = 7 + , Proc_getDescription = 8, Proc_resolvePropertyId = 9, Proc_getSiteLinkPageName = 10, Proc_incrementExpensiveFunctionCount = 11, Proc_getPropertyOrder = 12, Proc_orderProperties = 13; + public static final String Invk_getLabel = "getLabel", Invk_getEntity = "getEntity", Invk_getSetting = "getSetting", Invk_getEntityUrl = "getEntityUrl" + , Invk_renderSnak = "renderSnak", Invk_renderSnaks = "renderSnaks", Invk_getEntityId = "getEntityId", Invk_getUserLang = "getUserLang" + , Invk_getDescription = "getDescription", Invk_resolvePropertyId = "resolvePropertyId", Invk_getSiteLinkPageName = "getSiteLinkPageName", Invk_incrementExpensiveFunctionCount = "incrementExpensiveFunctionCount" + , Invk_getPropertyOrder = "getPropertyOrder", Invk_orderProperties = "orderProperties" + ; + private static final String[] Proc_names = String_.Ary + ( Invk_getLabel, Invk_getEntity, Invk_getSetting, Invk_getEntityUrl, Invk_renderSnak, Invk_renderSnaks, Invk_getEntityId, Invk_getUserLang + , Invk_getDescription, Invk_resolvePropertyId, Invk_getSiteLinkPageName, Invk_incrementExpensiveFunctionCount, Invk_getPropertyOrder, Invk_orderProperties + ); public void Notify_page_changed() {if (notify_page_changed_fnc != null) core.Interpreter().CallFunction(notify_page_changed_fnc.Id(), Keyval_.Ary_empty);} public boolean GetLabel(Scrib_proc_args args, Scrib_proc_rslt rslt) { - byte[] ttl_bry = args.Pull_bry(0); if (Bry_.Len_eq_0(ttl_bry)) return rslt.Init_ary_empty(); - Wdata_doc wdoc = Get_wdoc(ttl_bry); if (wdoc == null) return rslt.Init_ary_empty(); + Wdata_doc wdoc = Get_wdoc_or_null(args, core); if (wdoc == null) return rslt.Init_ary_empty(); return rslt.Init_obj(wdoc.Label_list__get_or_fallback(core.Lang())); } public boolean GetEntity(Scrib_proc_args args, Scrib_proc_rslt rslt) { - byte[] ttl_bry = args.Pull_bry(0); if (Bry_.Len_eq_0(ttl_bry)) return rslt.Init_ary_empty(); // NOTE: some Modules do not pass in an argument; return early, else spurious warning "invalid qid for ttl" (since ttl is blank); EX:w:Module:Authority_control; DATE:2013-10-27 - Wdata_doc wdoc = Get_wdoc(ttl_bry); - return wdoc == null ? rslt.Init_ary_empty() : rslt.Init_obj(Scrib_lib_wikibase_srl.Srl(wdoc, true, false)); // "false": wbase now always uses v2; PAGE:ja.w:東京競馬場; DATE:2015-07-28 + Wdata_doc wdoc = Get_wdoc_or_null(args, core); if (wdoc == null) return rslt.Init_ary_empty(); + return rslt.Init_obj(Scrib_lib_wikibase_srl.Srl(wdoc, true, false)); // "false": wbase now always uses v2; PAGE:ja.w:東京競馬場; DATE:2015-07-28 + } + public boolean GetEntityUrl(Scrib_proc_args args, Scrib_proc_rslt rslt) {throw Err_.new_("wbase", "getEntityUrl not implemented", "url", core.Page().Url().To_str());} + public boolean GetSetting(Scrib_proc_args args, Scrib_proc_rslt rslt) {throw Err_.new_("wbase", "getSetting not implemented", "url", core.Page().Url().To_str());} + public boolean RenderSnak(Scrib_proc_args args, Scrib_proc_rslt rslt) { + String rv = Wdata_prop_val_visitor_.Render_snak(core.Wiki(), core.Page().Url_bry_safe(), args.Pull_kv_ary_safe(0)); + return rslt.Init_obj(rv); + } + public boolean RenderSnaks(Scrib_proc_args args, Scrib_proc_rslt rslt) { + String rv = Wdata_prop_val_visitor_.Render_snaks(core.Wiki(), core.Page().Url_bry_safe(), args.Pull_kv_ary_safe(0)); + return rslt.Init_obj(rv); } - public boolean GetSetting(Scrib_proc_args args, Scrib_proc_rslt rslt) {throw Err_.new_("wbase", "getSetting not implemented", "url", core.Page().Url().To_str(), "arg", args.Pull_bry(0));} - public boolean RenderSnak(Scrib_proc_args args, Scrib_proc_rslt rslt) {throw Err_.new_("wbase", "renderSnak not implemented", "url", core.Page().Url().To_str(), "arg", args.Pull_bry(0));} - public boolean RenderSnaks(Scrib_proc_args args, Scrib_proc_rslt rslt) {throw Err_.new_("wbase", "renderSnaks not implemented", "url", core.Page().Url().To_str(), "arg", args.Pull_bry(0));} public boolean GetEntityId(Scrib_proc_args args, Scrib_proc_rslt rslt) { byte[] ttl_bry = args.Pull_bry(0); Xowe_wiki wiki = core.Wiki(); @@ -74,18 +91,15 @@ public class Scrib_lib_wikibase implements Scrib_lib { return rslt.Init_obj(core.App().Usere().Lang().Key_bry()); } public boolean GetDescription(Scrib_proc_args args, Scrib_proc_rslt rslt) { - byte[] ttl_bry = args.Pull_bry(0); if (Bry_.Len_eq_0(ttl_bry)) return rslt.Init_ary_empty(); - Wdata_doc wdoc = Get_wdoc(ttl_bry); if (wdoc == null) return rslt.Init_ary_empty(); + Wdata_doc wdoc = Get_wdoc_or_null(args, core); if (wdoc == null) return rslt.Init_ary_empty(); return rslt.Init_obj(wdoc.Descr_list__get_or_fallback(core.Lang())); } public boolean ResolvePropertyId(Scrib_proc_args args, Scrib_proc_rslt rslt) { - byte[] prop = args.Pull_bry(0); if (Bry_.Len_eq_0(prop)) return rslt.Init_ary_empty(); - Wdata_doc wdoc = Get_wdoc(prop); if (wdoc == null) return rslt.Init_ary_empty(); // prop should be of form "P123"; do not add "P"; PAGE:no.w:Anne_Enger; DATE:2015-10-27 + Wdata_doc wdoc = Get_wdoc_or_null(args, core); if (wdoc == null) return rslt.Init_ary_empty(); // NOTE: prop should be of form "P123"; do not add "P"; PAGE:no.w:Anne_Enger; DATE:2015-10-27 return rslt.Init_obj(wdoc.Label_list__get_or_fallback(core.Lang())); } public boolean GetSiteLinkPageName(Scrib_proc_args args, Scrib_proc_rslt rslt) { - byte[] ttl_bry = args.Pull_bry(0); if (Bry_.Len_eq_0(ttl_bry)) return rslt.Init_ary_empty(); - Wdata_doc wdoc = Get_wdoc(ttl_bry); if (wdoc == null) return rslt.Init_ary_empty(); + Wdata_doc wdoc = Get_wdoc_or_null(args, core); if (wdoc == null) return rslt.Init_ary_empty(); // NOTE: prop should be of form "P123"; do not add "P"; PAGE:no.w:Anne_Enger; DATE:2015-10-27 Xow_domain_itm domain_itm = core.Wiki().Domain_itm(); return rslt.Init_obj(wdoc.Slink_list__get_or_fallback(domain_itm.Abrv_wm())); } @@ -93,10 +107,15 @@ public class Scrib_lib_wikibase implements Scrib_lib { public boolean GetGlobalSiteId(Scrib_proc_args args, Scrib_proc_rslt rslt) { return rslt.Init_obj(core.Wiki().Domain_abrv()); // ;siteGlobalID: This site's global ID (e.g. 'itwiki'), as used in the sites table. Default: $wgDBname.; REF:/xtns/Wikibase/docs/options.wiki } - private Wdata_doc Get_wdoc(byte[] xid_bry) { - Xowe_wiki wiki = core.Wiki(); - Wdata_doc wdoc = wiki.Appe().Wiki_mgr().Wdata_mgr().Doc_mgr.Get_by_xid_or_null(xid_bry); // NOTE: by_xid b/c Module passes just "p1" not "Property:P1" + private static Wdata_doc Get_wdoc_or_null(Scrib_proc_args args, Scrib_core core) { + // get qid / pid from scrib_arg[0]; if none, return null; + byte[] xid_bry = args.Pull_bry(0); if (Bry_.Len_eq_0(xid_bry)) return null; // NOTE: some Modules do not pass in an argument; return early, else spurious warning "invalid qid for ttl" (since ttl is blank); EX:w:Module:Authority_control; DATE:2013-10-27 + + // get wdoc + Wdata_doc wdoc = core.Wiki().Appe().Wiki_mgr().Wdata_mgr().Doc_mgr.Get_by_xid_or_null(xid_bry); // NOTE: by_xid b/c Module passes just "p1" not "Property:P1" if (wdoc == null) Wdata_wiki_mgr.Log_missing_qid(core.Ctx(), xid_bry); return wdoc; } + public boolean GetPropertyOrder(Scrib_proc_args args, Scrib_proc_rslt rslt) {throw Err_.new_("wbase", "getPropertyOrder not implemented", "url", core.Page().Url().To_str());} + public boolean OrderProperties(Scrib_proc_args args, Scrib_proc_rslt rslt) {throw Err_.new_("wbase", "orderProperties not implemented", "url", core.Page().Url().To_str());} } diff --git a/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_wikibase_entity.java b/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_wikibase_entity.java index 57d7ad57b..642ca1b50 100644 --- a/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_wikibase_entity.java +++ b/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_wikibase_entity.java @@ -16,8 +16,9 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.xtns.scribunto.libs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.scribunto.*; -import gplx.xowa.xtns.wdatas.*; -import gplx.langs.jsons.*; import gplx.xowa.xtns.wdatas.core.*; +import gplx.xowa.xtns.wbases.*; +import gplx.langs.jsons.*; +import gplx.xowa.xtns.wbases.core.*; import gplx.xowa.xtns.wbases.claims.*; public class Scrib_lib_wikibase_entity implements Scrib_lib { public Scrib_lib_wikibase_entity(Scrib_core core) {this.core = core;} private Scrib_core core; public Scrib_lua_mod Mod() {return mod;} private Scrib_lua_mod mod; @@ -42,7 +43,7 @@ public class Scrib_lib_wikibase_entity implements Scrib_lib { public boolean GetGlobalSiteId(Scrib_proc_args args, Scrib_proc_rslt rslt) { return rslt.Init_obj(core.Wiki().Domain_abrv()); // ;siteGlobalID: This site's global ID (e.g. 'itwiki'), as used in the sites table. Default: $wgDBname.; REF:/xtns/Wikibase/docs/options.wiki } - public boolean FormatPropertyValues(Scrib_proc_args args, Scrib_proc_rslt rslt) { + public boolean FormatPropertyValues(Scrib_proc_args args, Scrib_proc_rslt rslt) { byte[] qid = args.Pull_bry(0); byte[] pid = args.Pull_bry(1); Xoae_app app = core.App(); Xowe_wiki wiki = core.Wiki(); @@ -52,7 +53,7 @@ public class Scrib_lib_wikibase_entity implements Scrib_lib { int pid_int = Wbase_pid_mgr.To_int_or_null(pid); // parse as num; EX: p123 -> 123; PAGE:hr.w:Hepatitis DATE:2015-11-08 if (pid_int == Wdata_wiki_mgr.Pid_null) pid_int = wdata_mgr.Pid_mgr.Get_or_null(lang, pid); // parse as name; EX: name > 123 if (pid_int == Wdata_wiki_mgr.Pid_null) return rslt.Init_str_empty(); - Wdata_claim_grp prop_grp = wdoc.Claim_list_get(pid_int); if (prop_grp == null) return rslt.Init_str_empty(); + Wbase_claim_grp prop_grp = wdoc.Claim_list_get(pid_int); if (prop_grp == null) return rslt.Init_str_empty(); Bry_bfr bfr = wiki.Utl__bfr_mkr().Get_b512(); wdata_mgr.Resolve_to_bfr(bfr, prop_grp, lang); return rslt.Init_obj(bfr.To_bry_and_rls()); diff --git a/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_wikibase_entity_tst.java b/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_wikibase_entity_tst.java index 1ee6331d6..89ea11594 100644 --- a/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_wikibase_entity_tst.java +++ b/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_wikibase_entity_tst.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.xtns.scribunto.libs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.scribunto.*; import org.junit.*; -import gplx.xowa.xtns.wdatas.*; +import gplx.xowa.xtns.wbases.*; public class Scrib_lib_wikibase_entity_tst { @Before public void init() { fxt.Clear_for_lib(); @@ -28,7 +28,7 @@ public class Scrib_lib_wikibase_entity_tst { } @Test public void FormatPropertyValues() { Wdata_wiki_mgr_fxt wdata_fxt = new Wdata_wiki_mgr_fxt().Init(fxt.Parser_fxt(), false); - wdata_fxt.Init__docs__add(wdata_fxt.Wdoc_bldr("Q2").Add_claims(wdata_fxt.Make_claim_str(3, "P3_val")).Xto_wdoc()); + wdata_fxt.Init__docs__add(wdata_fxt.Wdoc_bldr("Q2").Add_claims(wdata_fxt.Make_claim_string(3, "P3_val")).Xto_wdoc()); fxt.Test_scrib_proc_str(lib, Scrib_lib_wikibase_entity.Invk_formatPropertyValues, Object_.Ary("Q2", "P3") , "P3_val"); // lookup by id wdata_fxt.Init_pids_add("en", "P3_val", 3); fxt.Test_scrib_proc_str(lib, Scrib_lib_wikibase_entity.Invk_formatPropertyValues, Object_.Ary("Q2", "P3_val") , "P3_val"); // lookup by name diff --git a/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_wikibase_srl.java b/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_wikibase_srl.java index 308717168..e5ccad855 100644 --- a/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_wikibase_srl.java +++ b/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_wikibase_srl.java @@ -16,14 +16,14 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.xtns.scribunto.libs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.scribunto.*; -import gplx.xowa.xtns.wdatas.*; import gplx.xowa.xtns.wdatas.core.*; import gplx.xowa.xtns.wdatas.parsers.*; +import gplx.xowa.xtns.wbases.*; import gplx.xowa.xtns.wbases.core.*; import gplx.xowa.xtns.wbases.claims.*; import gplx.xowa.xtns.wbases.claims.enums.*; import gplx.xowa.xtns.wbases.claims.itms.*; import gplx.xowa.xtns.wbases.parsers.*; class Scrib_lib_wikibase_srl { public static Keyval[] Srl(Wdata_doc wdoc, boolean header_enabled, boolean legacy_style) {// REF.MW:/Wikibase/lib/includes/serializers/EntitySerializer.php!getSerialized; http://www.mediawiki.org/wiki/Extension:Wikibase_Client/Lua int base_adj = legacy_style ? 0 : 1; List_adp rv = List_adp_.New(); if (header_enabled) { rv.Add(Keyval_.new_("id", wdoc.Qid())); - rv.Add(Keyval_.new_("type", Wdata_dict_value_entity_tid.Str_item)); + rv.Add(Keyval_.new_("type", Wbase_claim_entity_type_.Itm__item.Key_str())); rv.Add(Keyval_.new_("schemaVersion", base_adj + 1)); // NOTE: needed by mw.wikibase.lua } Srl_root(rv, Wdata_doc_parser_v2.Str_labels , Srl_langtexts (Wdata_dict_langtext.Str_language , Wdata_dict_langtext.Str_value, wdoc.Label_list())); @@ -94,7 +94,7 @@ class Scrib_lib_wikibase_srl { int rv_len = legacy_style ? len * 2 : len; // NOTE: legacyStyle returns 2 sets of properties: official "P" and legacy "p"; DATE:2014-05-11 Keyval[] rv = new Keyval[rv_len]; for (int i = 0; i < len; i++) { - Wdata_claim_grp grp = (Wdata_claim_grp)claim_grps.Get_at(i); + Wbase_claim_grp grp = (Wbase_claim_grp)claim_grps.Get_at(i); String pid_str = Int_.To_str(grp.Id()); Keyval[] grp_val = Srl_claims_prop_grp(visitor, "P" + pid_str, grp, base_adj); rv[i] = Keyval_.new_("P" + pid_str, grp_val); @@ -103,57 +103,57 @@ class Scrib_lib_wikibase_srl { } return rv; } - private static Keyval[] Srl_claims_prop_grp(Scrib_lib_wikibase_srl_visitor visitor, String pid, Wdata_claim_grp grp, int base_adj) { + private static Keyval[] Srl_claims_prop_grp(Scrib_lib_wikibase_srl_visitor visitor, String pid, Wbase_claim_grp grp, int base_adj) { int len = grp.Len(); Keyval[] rv = new Keyval[len]; for (int i = 0; i < len; i++) { - Wdata_claim_itm_core itm = grp.Get_at(i); + Wbase_claim_base itm = grp.Get_at(i); rv[i] = Keyval_.int_(i + base_adj, Srl_claims_prop_itm(visitor, pid, itm, base_adj)); // NOTE: must be super 0 or super 1; DATE:2014-05-09 } return rv; } - private static Keyval[] Srl_claims_prop_itm(Scrib_lib_wikibase_srl_visitor visitor, String pid, Wdata_claim_itm_core itm, int base_adj) { + private static Keyval[] Srl_claims_prop_itm(Scrib_lib_wikibase_srl_visitor visitor, String pid, Wbase_claim_base itm, int base_adj) { List_adp list = List_adp_.New(); list.Add(Keyval_.new_("id", pid)); list.Add(Keyval_.new_("mainsnak", Srl_claims_prop_itm_core(visitor, pid, itm))); - list.Add(Keyval_.new_(Wdata_dict_claim_v1.Str_rank, Wdata_dict_rank.Xto_str(itm.Rank_tid()))); + list.Add(Keyval_.new_(Wdata_dict_claim_v1.Str_rank, Wbase_claim_rank_.To_str_or_fail(itm.Rank_tid()))); list.Add(Keyval_.new_("type", itm.Prop_type())); Srl_root(list, Wdata_dict_claim.Str_qualifiers, Srl_qualifiers(visitor, itm.Qualifiers(), base_adj)); return (Keyval[])list.To_ary_and_clear(Keyval.class); } - private static Keyval[] Srl_qualifiers(Scrib_lib_wikibase_srl_visitor visitor, Wdata_claim_grp_list list, int base_adj) { + private static Keyval[] Srl_qualifiers(Scrib_lib_wikibase_srl_visitor visitor, Wbase_claim_grp_list list, int base_adj) { if (list == null) return null; int list_len = list.Len(); if (list_len == 0) return Keyval_.Ary_empty; List_adp rv = List_adp_.New(); List_adp pid_list = List_adp_.New(); for (int i = 0; i < list_len; ++i) { - Wdata_claim_grp grp = list.Get_at(i); + Wbase_claim_grp grp = list.Get_at(i); int grp_len = grp.Len(); pid_list.Clear(); String itm_pid = grp.Id_str(); for (int j = 0; j < grp_len; ++j) { - Wdata_claim_itm_core itm = grp.Get_at(j); + Wbase_claim_base itm = grp.Get_at(j); pid_list.Add(Keyval_.int_(j + base_adj, Srl_claims_prop_itm_core(visitor, itm_pid, itm))); // NOTE: was originally "+ 1"; changed to base_adj; PAGE:ru.w:Tor ru.w:Кактусовые DATE:2014-10-25 } rv.Add(Keyval_.new_(itm_pid, (Keyval[])pid_list.To_ary_and_clear(Keyval.class))); } return (Keyval[])rv.To_ary_and_clear(Keyval.class); } - private static Keyval[] Srl_claims_prop_itm_core(Scrib_lib_wikibase_srl_visitor visitor, String pid, Wdata_claim_itm_core itm) { - boolean snak_is_valued = itm.Snak_tid() == Wdata_dict_snak_tid.Tid_value; // PURPOSE: was != Wdata_dict_snak_tid.Tid_novalue; PAGE:it.s:Autore:Anonimo DATE:2015-12-06 + private static Keyval[] Srl_claims_prop_itm_core(Scrib_lib_wikibase_srl_visitor visitor, String pid, Wbase_claim_base itm) { + boolean snak_is_valued = itm.Snak_tid() == Wbase_claim_value_type_.Tid__value; // PURPOSE: was != Wbase_claim_value_type_.Tid__novalue; PAGE:it.s:Autore:Anonimo DATE:2015-12-06 int snak_is_valued_adj = snak_is_valued ? 1 : 0; Keyval[] rv = new Keyval[3 + snak_is_valued_adj]; if (snak_is_valued) // NOTE: novalue must not return slot (no datavalue node in json); PAGE:ru.w:Лимонов,_Эдуард_Вениаминович; DATE:2015-02-16; ALSO: sv.w:Joseph_Jaquet; DATE:2015-07-31 rv[0] = Keyval_.new_("datavalue", Srl_claims_prop_itm_core_val(visitor, itm)); rv[0 + snak_is_valued_adj] = Keyval_.new_("property", pid); - rv[1 + snak_is_valued_adj] = Keyval_.new_("snaktype", Wdata_dict_snak_tid.Xto_str(itm.Snak_tid())); - rv[2 + snak_is_valued_adj] = Keyval_.new_("datatype", Wdata_dict_val_tid.To_str__srl(itm.Val_tid())); // NOTE: datatype needed for Modules; PAGE:eo.w:WikidataKoord; DATE:2015-11-08 + rv[1 + snak_is_valued_adj] = Keyval_.new_("snaktype", Wbase_claim_value_type_.To_str_or_fail(itm.Snak_tid())); + rv[2 + snak_is_valued_adj] = Keyval_.new_("datatype", Wbase_claim_type_.To_scrib_or_unknown(itm.Val_tid())); // NOTE: datatype needed for Modules; PAGE:eo.w:WikidataKoord; DATE:2015-11-08 return rv; } - private static Keyval[] Srl_claims_prop_itm_core_val(Scrib_lib_wikibase_srl_visitor visitor, Wdata_claim_itm_core itm) { + private static Keyval[] Srl_claims_prop_itm_core_val(Scrib_lib_wikibase_srl_visitor visitor, Wbase_claim_base itm) { switch (itm.Snak_tid()) { - case Wdata_dict_snak_tid.Tid_somevalue: return Datavalue_somevalue; - case Wdata_dict_snak_tid.Tid_novalue: return Datavalue_novalue; // TODO_OLD: throw exc + case Wbase_claim_value_type_.Tid__somevalue: return Datavalue_somevalue; + case Wbase_claim_value_type_.Tid__novalue: return Datavalue_novalue; // TODO_OLD: throw exc default: itm.Welcome(visitor); return visitor.Rv(); diff --git a/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_wikibase_srl_tst.java b/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_wikibase_srl_tst.java index dcfece72d..38fbbb6c2 100644 --- a/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_wikibase_srl_tst.java +++ b/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_wikibase_srl_tst.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.xtns.scribunto.libs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.scribunto.*; import org.junit.*; -import gplx.langs.jsons.*; import gplx.xowa.xtns.wdatas.*; import gplx.xowa.xtns.wdatas.core.*; import gplx.xowa.xtns.wdatas.parsers.*; +import gplx.langs.jsons.*; import gplx.xowa.xtns.wbases.*; import gplx.xowa.xtns.wbases.core.*; import gplx.xowa.xtns.wbases.claims.*; import gplx.xowa.xtns.wbases.claims.itms.*; import gplx.xowa.xtns.wbases.parsers.*; public class Scrib_lib_wikibase_srl_tst { @Before public void init() {fxt.Clear();} private Scrib_lib_wikibase_srl_fxt fxt = new Scrib_lib_wikibase_srl_fxt(); @Test public void Label() { @@ -126,7 +126,7 @@ public class Scrib_lib_wikibase_srl_tst { ); } @Test public void Claims_str() { - fxt.Init_prop(fxt.Wdata_fxt().Make_claim_str(2, "Moon")); + fxt.Init_prop(fxt.Wdata_fxt().Make_claim_string(2, "Moon")); fxt.Test ( "claims:" , " P2:" @@ -327,7 +327,7 @@ public class Scrib_lib_wikibase_srl_tst { } @Test public void Qualifiers() { Wdata_wiki_mgr_fxt wdata_fxt = fxt.Wdata_fxt(); - fxt.Init_prop(wdata_fxt.Make_claim_str(2, "Earth").Qualifiers_(wdata_fxt.Make_qualifiers(wdata_fxt.Make_qualifiers_grp(3, wdata_fxt.Make_claim_time(3, "2001-02-03 04:05:06"))))); + fxt.Init_prop(wdata_fxt.Make_claim_string(2, "Earth").Qualifiers_(wdata_fxt.Make_qualifiers(wdata_fxt.Make_qualifiers_grp(3, wdata_fxt.Make_claim_time(3, "2001-02-03 04:05:06"))))); fxt.Test ( "claims:" , " P2:" @@ -388,7 +388,7 @@ class Scrib_lib_wikibase_srl_fxt { wdoc_bldr.Add_alias(lang, ary); return this; } - public Scrib_lib_wikibase_srl_fxt Init_prop(Wdata_claim_itm_core prop) {wdoc_bldr.Add_claims(prop); return this;} + public Scrib_lib_wikibase_srl_fxt Init_prop(Wbase_claim_base prop) {wdoc_bldr.Add_claims(prop); return this;} public Scrib_lib_wikibase_srl_fxt Test(String... expd) {return Test(false, expd);} public Scrib_lib_wikibase_srl_fxt Test(boolean base0, String... expd) { Keyval[] actl = Scrib_lib_wikibase_srl.Srl(wdoc_bldr.Xto_wdoc(), header_enabled, base0); diff --git a/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_wikibase_srl_visitor.java b/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_wikibase_srl_visitor.java index d89588a9c..61330aa65 100644 --- a/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_wikibase_srl_visitor.java +++ b/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_wikibase_srl_visitor.java @@ -16,80 +16,80 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.xtns.scribunto.libs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.scribunto.*; -import gplx.xowa.xtns.wdatas.core.*; -class Scrib_lib_wikibase_srl_visitor implements Wdata_claim_visitor { +import gplx.xowa.xtns.wbases.core.*; import gplx.xowa.xtns.wbases.claims.*; import gplx.xowa.xtns.wbases.claims.enums.*; import gplx.xowa.xtns.wbases.claims.itms.*; +class Scrib_lib_wikibase_srl_visitor implements Wbase_claim_visitor { public Keyval[] Rv() {return rv;} Keyval[] rv; - public void Visit_str(Wdata_claim_itm_str itm) { + public void Visit_str(Wbase_claim_string itm) { rv = new Keyval[2]; - rv[0] = Keyval_.new_(Scrib_lib_wikibase_srl.Key_type, Wdata_dict_val_tid.Xto_str(itm.Val_tid())); + rv[0] = Keyval_.new_(Scrib_lib_wikibase_srl.Key_type, Wbase_claim_type_.To_key_or_unknown(itm.Val_tid())); rv[1] = Keyval_.new_(Scrib_lib_wikibase_srl.Key_value, String_.new_u8(itm.Val_str())); } - public void Visit_entity(Wdata_claim_itm_entity itm) { + public void Visit_entity(Wbase_claim_entity itm) { rv = new Keyval[2]; - rv[0] = Keyval_.new_(Scrib_lib_wikibase_srl.Key_type, Wdata_dict_val_tid.Str_entity); + rv[0] = Keyval_.new_(Scrib_lib_wikibase_srl.Key_type, Wbase_claim_type_.Itm__entity.Key_str()); rv[1] = Keyval_.new_(Scrib_lib_wikibase_srl.Key_value, Entity_value(itm)); } - private static Keyval[] Entity_value(Wdata_claim_itm_core itm) { - Wdata_claim_itm_entity claim_entity = (Wdata_claim_itm_entity)itm; + private static Keyval[] Entity_value(Wbase_claim_base itm) { + Wbase_claim_entity claim_entity = (Wbase_claim_entity)itm; Keyval[] rv = new Keyval[2]; - rv[0] = Keyval_.new_(Wdata_dict_value_entity.Str_entity_type, claim_entity.Entity_tid_str()); - rv[1] = Keyval_.new_(Wdata_dict_value_entity.Str_numeric_id, Int_.To_str(claim_entity.Entity_id())); + rv[0] = Keyval_.new_(Wbase_claim_entity_.Itm__entity_type.Key_str(), claim_entity.Entity_tid_str()); + rv[1] = Keyval_.new_(Wbase_claim_entity_.Itm__numeric_id.Key_str(), Int_.To_str(claim_entity.Entity_id())); return rv; } - public void Visit_monolingualtext(Wdata_claim_itm_monolingualtext itm) { + public void Visit_monolingualtext(Wbase_claim_monolingualtext itm) { rv = new Keyval[2]; - rv[0] = Keyval_.new_(Scrib_lib_wikibase_srl.Key_type, Wdata_dict_val_tid.Str_monolingualtext); + rv[0] = Keyval_.new_(Scrib_lib_wikibase_srl.Key_type, Wbase_claim_type_.Itm__monolingualtext.Key_str()); rv[1] = Keyval_.new_(Scrib_lib_wikibase_srl.Key_value, Monolingualtext_value(itm)); } - private static Keyval[] Monolingualtext_value(Wdata_claim_itm_monolingualtext itm) { + private static Keyval[] Monolingualtext_value(Wbase_claim_monolingualtext itm) { Keyval[] rv = new Keyval[2]; - rv[0] = Keyval_.new_(Wdata_dict_value_monolingualtext.Str_text , String_.new_u8(itm.Text())); - rv[1] = Keyval_.new_(Wdata_dict_value_monolingualtext.Str_language , String_.new_u8(itm.Lang())); + rv[0] = Keyval_.new_(Wbase_claim_monolingualtext_.Itm__text.Key_str() , String_.new_u8(itm.Text())); + rv[1] = Keyval_.new_(Wbase_claim_monolingualtext_.Itm__language.Key_str() , String_.new_u8(itm.Lang())); return rv; } - public void Visit_quantity(Wdata_claim_itm_quantity itm) { + public void Visit_quantity(Wbase_claim_quantity itm) { rv = new Keyval[2]; - rv[0] = Keyval_.new_(Scrib_lib_wikibase_srl.Key_type, Wdata_dict_val_tid.Str_quantity); + rv[0] = Keyval_.new_(Scrib_lib_wikibase_srl.Key_type, Wbase_claim_type_.Itm__quantity.Key_str()); rv[1] = Keyval_.new_(Scrib_lib_wikibase_srl.Key_value, Quantity_value(itm)); } - private static Keyval[] Quantity_value(Wdata_claim_itm_quantity itm) { + private static Keyval[] Quantity_value(Wbase_claim_quantity itm) { Keyval[] rv = new Keyval[4]; - rv[0] = Keyval_.new_(Wdata_dict_value_quantity.Str_amount , itm.Amount_as_num().To_str()); // NOTE: must be num b/c Module code will directly do math calc on it; EX: "99" not "+99"; PAGE:eo.w:Mud�; DATE:2015-11-08 - rv[1] = Keyval_.new_(Wdata_dict_value_quantity.Str_unit , String_.new_u8(itm.Unit())); - rv[2] = Keyval_.new_(Wdata_dict_value_quantity.Str_upperbound , itm.Ubound_as_num().To_str()); - rv[3] = Keyval_.new_(Wdata_dict_value_quantity.Str_lowerbound , itm.Lbound_as_num().To_str()); + rv[0] = Keyval_.new_(Wbase_claim_quantity_.Itm__amount.Key_str() , itm.Amount_as_num().To_str()); // NOTE: must be num b/c Module code will directly do math calc on it; EX: "99" not "+99"; PAGE:eo.w:Mud�; DATE:2015-11-08 + rv[1] = Keyval_.new_(Wbase_claim_quantity_.Itm__unit.Key_str() , String_.new_u8(itm.Unit())); + rv[2] = Keyval_.new_(Wbase_claim_quantity_.Itm__upperbound.Key_str() , itm.Ubound_as_num().To_str()); + rv[3] = Keyval_.new_(Wbase_claim_quantity_.Itm__lowerbound.Key_str() , itm.Lbound_as_num().To_str()); return rv; } - public void Visit_time(Wdata_claim_itm_time itm) { + public void Visit_time(Wbase_claim_time itm) { rv = new Keyval[2]; - rv[0] = Keyval_.new_(Scrib_lib_wikibase_srl.Key_type, Wdata_dict_val_tid.Str_time); + rv[0] = Keyval_.new_(Scrib_lib_wikibase_srl.Key_type, Wbase_claim_type_.Itm__time.Key_str()); rv[1] = Keyval_.new_(Scrib_lib_wikibase_srl.Key_value, Time_value(itm)); } - private static Keyval[] Time_value(Wdata_claim_itm_time itm) { + private static Keyval[] Time_value(Wbase_claim_time itm) { Keyval[] rv = new Keyval[6]; - rv[0] = Keyval_.new_(Wdata_dict_value_time.Str_time , String_.new_a7(itm.Time())); - rv[1] = Keyval_.new_(Wdata_dict_value_time.Str_precision , itm.Precision_int()); // NOTE: must return int, not str; DATE:2014-02-18 - rv[2] = Keyval_.new_(Wdata_dict_value_time.Str_before , itm.Before_int()); - rv[3] = Keyval_.new_(Wdata_dict_value_time.Str_after , itm.After_int()); - rv[4] = Keyval_.new_(Wdata_dict_value_time.Str_timezone , Wdata_dict_value_time.Val_timezone_str); // ASSUME: always 0 b/c UTF?; DATE:2015-09-21 - rv[5] = Keyval_.new_(Wdata_dict_value_time.Str_calendarmodel , Wdata_dict_value_time.Val_calendarmodel_str); + rv[0] = Keyval_.new_(Wbase_claim_time_.Itm__time.Key_str() , String_.new_a7(itm.Time())); + rv[1] = Keyval_.new_(Wbase_claim_time_.Itm__precision.Key_str() , itm.Precision_int()); // NOTE: must return int, not str; DATE:2014-02-18 + rv[2] = Keyval_.new_(Wbase_claim_time_.Itm__before.Key_str() , itm.Before_int()); + rv[3] = Keyval_.new_(Wbase_claim_time_.Itm__after.Key_str() , itm.After_int()); + rv[4] = Keyval_.new_(Wbase_claim_time_.Itm__timezone.Key_str() , Wbase_claim_time_.Dflt__timezone.Val_str()); // ASSUME: always 0 b/c UTF?; DATE:2015-09-21 + rv[5] = Keyval_.new_(Wbase_claim_time_.Itm__calendarmodel.Key_str() , Wbase_claim_time_.Dflt__calendarmodel.Val_str()); return rv; } - public void Visit_globecoordinate(Wdata_claim_itm_globecoordinate itm) { + public void Visit_globecoordinate(Wbase_claim_globecoordinate itm) { rv = new Keyval[2]; - rv[0] = Keyval_.new_(Scrib_lib_wikibase_srl.Key_type, Wdata_dict_val_tid.Str_globecoordinate); + rv[0] = Keyval_.new_(Scrib_lib_wikibase_srl.Key_type, Wbase_claim_type_.Itm__globecoordinate.Key_str()); rv[1] = Keyval_.new_(Scrib_lib_wikibase_srl.Key_value, Globecoordinate_value(itm)); } - private static Keyval[] Globecoordinate_value(Wdata_claim_itm_globecoordinate itm) { + private static Keyval[] Globecoordinate_value(Wbase_claim_globecoordinate itm) { Keyval[] rv = new Keyval[5]; - rv[0] = Keyval_.new_(Wdata_dict_value_globecoordinate.Str_latitude , Double_.parse(String_.new_a7(itm.Lat()))); - rv[1] = Keyval_.new_(Wdata_dict_value_globecoordinate.Str_longitude , Double_.parse(String_.new_a7(itm.Lng()))); - rv[2] = Keyval_.new_(Wdata_dict_value_globecoordinate.Str_altitude , String_.new_u8(itm.Alt())); - rv[3] = Keyval_.new_(Wdata_dict_value_globecoordinate.Str_globe , String_.new_u8(itm.Glb())); - rv[4] = Keyval_.new_(Wdata_dict_value_globecoordinate.Str_precision , itm.Prc_as_num().To_double()); + rv[0] = Keyval_.new_(Wbase_claim_globecoordinate_.Itm__latitude.Key_str() , Double_.parse(String_.new_a7(itm.Lat()))); + rv[1] = Keyval_.new_(Wbase_claim_globecoordinate_.Itm__longitude.Key_str() , Double_.parse(String_.new_a7(itm.Lng()))); + rv[2] = Keyval_.new_(Wbase_claim_globecoordinate_.Itm__altitude.Key_str() , String_.new_u8(itm.Alt())); + rv[3] = Keyval_.new_(Wbase_claim_globecoordinate_.Itm__globe.Key_str() , String_.new_u8(itm.Glb())); + rv[4] = Keyval_.new_(Wbase_claim_globecoordinate_.Itm__precision.Key_str() , itm.Prc_as_num().To_double()); return rv; } - public void Visit_system(Wdata_claim_itm_system itm) { + public void Visit_system(Wbase_claim_value itm) { rv = Keyval_.Ary_empty; } } \ No newline at end of file diff --git a/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_wikibase_tst.java b/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_wikibase_tst.java index d6aaa2db3..287518ac4 100644 --- a/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_wikibase_tst.java +++ b/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_wikibase_tst.java @@ -16,8 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.xtns.scribunto.libs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.scribunto.*; -import org.junit.*; -import gplx.xowa.xtns.wdatas.*; +import org.junit.*; import gplx.xowa.xtns.wbases.*; import gplx.xowa.xtns.wbases.core.*; import gplx.xowa.xtns.wbases.claims.*; import gplx.xowa.xtns.wbases.claims.itms.*; public class Scrib_lib_wikibase_tst { private final Scrib_invoke_func_fxt fxt = new Scrib_invoke_func_fxt(); private Scrib_lib lib; private final Wdata_wiki_mgr_fxt wdata_fxt = new Wdata_wiki_mgr_fxt(); @@ -89,4 +88,58 @@ public class Scrib_lib_wikibase_tst { wdata_fxt.Init__docs__add(wdata_fxt.Wdoc_bldr("Property:p2").Add_label("zh-hans", "prop_a").Xto_wdoc()); fxt.Test_scrib_proc_str(lib, Scrib_lib_wikibase.Invk_resolvePropertyId, Object_.Ary("p2"), "prop_a"); } -} + @Test public void RenderSnaks() { + Keyval[] args = Wbase_snak_utl_.Get_snaks_ary(wdata_fxt, wdata_fxt.Make_claim_monolingual(3, "en", "P3_en"), wdata_fxt.Make_claim_monolingual(3, "de", "P3_de")); + fxt.Test__proc__kvps__flat(lib, Scrib_lib_wikibase.Invk_renderSnaks, args, "P3_en, P3_de"); + } + @Test public void RenderSnak__str() { + Keyval[] args = Wbase_snak_utl_.Get_snak(wdata_fxt, wdata_fxt.Make_claim_string(3, "test_str")); + fxt.Test__proc__kvps__flat(lib, Scrib_lib_wikibase.Invk_renderSnak, args, "test_str"); + } + @Test public void RenderSnak__quantity() { + Keyval[] args = Wbase_snak_utl_.Get_snak(wdata_fxt, wdata_fxt.Make_claim_quantity(3, "123", "2", "125", "121")); + fxt.Test__proc__kvps__flat(lib, Scrib_lib_wikibase.Invk_renderSnak, args, "123±2"); + } + @Test public void RenderSnak__time() { + Keyval[] args = Wbase_snak_utl_.Get_snak(wdata_fxt, wdata_fxt.Make_claim_time(3, "2012-01-02 03:04:05")); + fxt.Test__proc__kvps__flat(lib, Scrib_lib_wikibase.Invk_renderSnak, args, "30405 2 Jan 2012"); // NOTE: format is missing ":" b/c test does not init messages for html_wtr; DATE:2015-08-03 + } + @Test public void RenderSnak__geo() { + Keyval[] args = Wbase_snak_utl_.Get_snak(wdata_fxt, wdata_fxt.Make_claim_geo(3, "3.4", "1.2")); + fxt.Test__proc__kvps__flat(lib, Scrib_lib_wikibase.Invk_renderSnak, args, "1.2, 3.4"); + } + @Test public void RenderSnak__monolingual() { + Keyval[] args = Wbase_snak_utl_.Get_snak(wdata_fxt, wdata_fxt.Make_claim_monolingual(3, "en", "abc_en")); + fxt.Test__proc__kvps__flat(lib, Scrib_lib_wikibase.Invk_renderSnak, args, "abc_en"); + } +} +class Wbase_snak_utl_ { + public static Keyval[] Get_snaks_ary(Wdata_wiki_mgr_fxt wdata_fxt, Wbase_claim_base... ary) { + Wdata_doc wdoc = wdata_fxt.Wdoc_bldr("q2").Add_claims(ary).Xto_wdoc(); + return Keyval_.Ary(Keyval_.int_(1, Get_snaks(wdoc))); + } + public static Keyval[] Get_snak(Wdata_wiki_mgr_fxt wdata_fxt, Wbase_claim_base itm) { + Wdata_doc wdoc = wdata_fxt.Wdoc_bldr("q2").Add_claims(itm).Xto_wdoc(); + Keyval[] snak_props = Get_subs_by_path(Get_snaks(wdoc), 0); + return Keyval_.Ary(Keyval_.int_(1, snak_props)); + } + private static Keyval[] Get_snaks(Wdata_doc wdoc) { + Keyval[] wdoc_root = Scrib_lib_wikibase_srl.Srl(wdoc, false, false); + Keyval[] snaks = Get_subs_by_path(wdoc_root, 0, 0); + int snaks_len = snaks.length; + Keyval[] rv = new Keyval[snaks_len]; + for (int i = 0; i < snaks_len; ++i) { + rv[i] = Keyval_.int_(i + List_adp_.Base1, Get_subs_by_path(snaks, i, 1)); + } + return rv; + } + private static Keyval[] Get_subs_by_path(Keyval[] root, int... levels) { + int len = levels.length; + Keyval[] rv = root; + for (int i = 0; i < len; ++i) { + int idx = levels[i]; + rv = (Keyval[])rv[idx].Val(); + } + return rv; + } +} diff --git a/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_regx_converter.java b/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_regx_converter.java index 5a6cc392d..c7bdd1598 100644 --- a/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_regx_converter.java +++ b/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_regx_converter.java @@ -19,7 +19,8 @@ package gplx.xowa.xtns.scribunto.libs; import gplx.*; import gplx.xowa.*; import import gplx.core.brys.fmtrs.*; import gplx.langs.regxs.*; public class Scrib_regx_converter { - private List_adp capt_list = List_adp_.New(), grps_parens = List_adp_.New(); private List_adp grps_open = List_adp_.New(); + private final List_adp capt_list = List_adp_.New(), grps_parens = List_adp_.New(); private final List_adp grps_open = List_adp_.New(); + private final Bry_bfr tmp_bfr = Bry_bfr_.New(); public Scrib_regx_converter() {Init();} public String Regx() {return regx;} private String regx; public List_adp Capt_list() {return capt_list;} @@ -100,9 +101,8 @@ public class Scrib_regx_converter { ++i; if (i + 1 >= len || src[i] != Byte_ascii.Brack_bgn) throw Err_.new_("scribunto", "missing '[' after %f in pattern at pattern character $ii"); // %f always followed by bracketed term; convert lua bracketed term to regex - Bry_bfr tmp_bfr = Xoa_app_.Utl__bfr_mkr().Get_b128(); i = bracketedCharSetToRegex(tmp_bfr, src, i, len); - byte[] bracketed_regx = tmp_bfr.To_bry_and_rls(); + byte[] bracketed_regx = tmp_bfr.To_bry_and_clear(); // scrib has following comment: 'Because %f considers the beginning and end of the String to be \0, determine if $re2 matches that and take it into account with "^" and "$".' // if the bracketed_regx is a negative class it will match \0; so, \W means anything not a word char, which will match \0; \w means word char which will not match \0 diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/Wbase_doc_mgr.java b/400_xowa/src/gplx/xowa/xtns/wbases/Wbase_doc_mgr.java similarity index 96% rename from 400_xowa/src/gplx/xowa/xtns/wdatas/Wbase_doc_mgr.java rename to 400_xowa/src/gplx/xowa/xtns/wbases/Wbase_doc_mgr.java index 224a48b91..2a5c52f6e 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/Wbase_doc_mgr.java +++ b/400_xowa/src/gplx/xowa/xtns/wbases/Wbase_doc_mgr.java @@ -15,7 +15,7 @@ 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.xtns.wdatas; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; +package gplx.xowa.xtns.wbases; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; public class Wbase_doc_mgr { private final Xoae_app app; private final Wdata_wiki_mgr wbase_mgr; diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/Wbase_pid_mgr.java b/400_xowa/src/gplx/xowa/xtns/wbases/Wbase_pid_mgr.java similarity index 95% rename from 400_xowa/src/gplx/xowa/xtns/wdatas/Wbase_pid_mgr.java rename to 400_xowa/src/gplx/xowa/xtns/wbases/Wbase_pid_mgr.java index 30564898c..447d12881 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/Wbase_pid_mgr.java +++ b/400_xowa/src/gplx/xowa/xtns/wbases/Wbase_pid_mgr.java @@ -15,7 +15,7 @@ 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.xtns.wdatas; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; +package gplx.xowa.xtns.wbases; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; public class Wbase_pid_mgr { // EX: "en|road_map" -> 15 ("Property:P15") private final Wdata_wiki_mgr wbase_mgr; private final Hash_adp_bry hash = Hash_adp_bry.cs(); diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/Wbase_qid_mgr.java b/400_xowa/src/gplx/xowa/xtns/wbases/Wbase_qid_mgr.java similarity index 96% rename from 400_xowa/src/gplx/xowa/xtns/wdatas/Wbase_qid_mgr.java rename to 400_xowa/src/gplx/xowa/xtns/wbases/Wbase_qid_mgr.java index aec0a7e17..f334e29a2 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/Wbase_qid_mgr.java +++ b/400_xowa/src/gplx/xowa/xtns/wbases/Wbase_qid_mgr.java @@ -15,7 +15,7 @@ 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.xtns.wdatas; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; +package gplx.xowa.xtns.wbases; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.wikis.domains.*; public class Wbase_qid_mgr {// EX: "enwiki|0|Earth" -> "Q2" private final Wdata_wiki_mgr wbase_mgr; diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/Wdata_doc.java b/400_xowa/src/gplx/xowa/xtns/wbases/Wdata_doc.java similarity index 92% rename from 400_xowa/src/gplx/xowa/xtns/wdatas/Wdata_doc.java rename to 400_xowa/src/gplx/xowa/xtns/wbases/Wdata_doc.java index 14d139974..bf04b89ef 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/Wdata_doc.java +++ b/400_xowa/src/gplx/xowa/xtns/wbases/Wdata_doc.java @@ -15,11 +15,11 @@ 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.xtns.wdatas; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; +package gplx.xowa.xtns.wbases; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.core.primitives.*; import gplx.langs.jsons.*; import gplx.xowa.langs.*; -import gplx.xowa.xtns.wdatas.core.*; import gplx.xowa.xtns.wdatas.parsers.*; +import gplx.xowa.xtns.wbases.core.*; import gplx.xowa.xtns.wbases.claims.*; import gplx.xowa.xtns.wbases.parsers.*; public class Wdata_doc { private Wdata_wiki_mgr mgr; private Int_obj_ref tmp_key; public Wdata_doc(byte[] qid, Wdata_wiki_mgr mgr, Json_doc jdoc) {this.qid = qid; this.mgr = mgr; this.jdoc = jdoc;} @@ -35,10 +35,10 @@ public class Wdata_doc { public Ordered_hash Descr_list() {if (descr_list == null) descr_list = mgr.Wdoc_parser(jdoc).Parse_langvals(qid, jdoc, Bool_.N); return descr_list;} private Ordered_hash descr_list; public Ordered_hash Alias_list() {if (alias_list == null) alias_list = mgr.Wdoc_parser(jdoc).Parse_aliases(qid, jdoc); return alias_list;} private Ordered_hash alias_list; public Ordered_hash Claim_list() {if (claim_list == null) claim_list = mgr.Wdoc_parser(jdoc).Parse_claims(qid, jdoc); return claim_list;} private Ordered_hash claim_list; - public Wdata_claim_grp Claim_list_get(int pid) { + public Wbase_claim_grp Claim_list_get(int pid) { if (tmp_key == null) tmp_key = Int_obj_ref.New_neg1(); Object o = this.Claim_list().Get_by(tmp_key.Val_(pid)); - return (Wdata_claim_grp)o; + return (Wbase_claim_grp)o; } public byte[] Label_list__get(byte[] lang_key) {return Lang_text_list__get(this.Label_list(), lang_key);} public byte[] Label_list__get_or_fallback(Xol_lang_itm lang) {return Lang_text_list__get_or_fallback(this.Label_list(), lang);} diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/Wdata_doc_bldr.java b/400_xowa/src/gplx/xowa/xtns/wbases/Wdata_doc_bldr.java similarity index 83% rename from 400_xowa/src/gplx/xowa/xtns/wdatas/Wdata_doc_bldr.java rename to 400_xowa/src/gplx/xowa/xtns/wbases/Wdata_doc_bldr.java index d490806b6..d399adfb2 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/Wdata_doc_bldr.java +++ b/400_xowa/src/gplx/xowa/xtns/wbases/Wdata_doc_bldr.java @@ -15,17 +15,19 @@ 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.xtns.wdatas; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; +package gplx.xowa.xtns.wbases; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.core.primitives.*; -import gplx.langs.jsons.*; import gplx.xowa.xtns.wdatas.core.*; import gplx.xowa.xtns.wdatas.parsers.*; +import gplx.langs.jsons.*; +import gplx.xowa.xtns.wbases.core.*; +import gplx.xowa.xtns.wbases.claims.*; import gplx.xowa.xtns.wbases.claims.itms.*; import gplx.xowa.xtns.wbases.parsers.*; public class Wdata_doc_bldr { private Ordered_hash descr_list, label_list, slink_list, alias_list, claim_list; public Wdata_doc_bldr() {this.Init();} public Wdata_doc_bldr Qid_(String v) {this.qid = Bry_.new_a7(v); return this;} private byte[] qid; - public Wdata_doc_bldr Add_claims(Wdata_claim_itm_core... ary) { + public Wdata_doc_bldr Add_claims(Wbase_claim_base... ary) { if (ary.length == 0) throw Err_.new_wo_type("claims must be greater than 0"); - Wdata_claim_itm_core itm = ary[0]; - Wdata_claim_grp grp = new Wdata_claim_grp(Int_obj_ref.New(itm.Pid()), ary); + Wbase_claim_base itm = ary[0]; + Wbase_claim_grp grp = new Wbase_claim_grp(Int_obj_ref.New(itm.Pid()), ary); claim_list.Add(grp.Id_ref(), grp); return this; } diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/Wdata_doc_wtr.java b/400_xowa/src/gplx/xowa/xtns/wbases/Wdata_doc_wtr.java similarity index 50% rename from 400_xowa/src/gplx/xowa/xtns/wdatas/Wdata_doc_wtr.java rename to 400_xowa/src/gplx/xowa/xtns/wbases/Wdata_doc_wtr.java index 4aafa4117..68ebd4a88 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/Wdata_doc_wtr.java +++ b/400_xowa/src/gplx/xowa/xtns/wbases/Wdata_doc_wtr.java @@ -15,8 +15,9 @@ 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.xtns.wdatas; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; -import gplx.langs.jsons.*; import gplx.xowa.xtns.wdatas.core.*; import gplx.xowa.xtns.wdatas.parsers.*; +package gplx.xowa.xtns.wbases; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; +import gplx.langs.jsons.*; +import gplx.xowa.xtns.wbases.core.*; import gplx.xowa.xtns.wbases.claims.*; import gplx.xowa.xtns.wbases.claims.enums.*; import gplx.xowa.xtns.wbases.claims.itms.*; import gplx.xowa.xtns.wbases.parsers.*; public class Wdata_doc_wtr { private Json_doc_wtr wtr = new Json_doc_wtr(); public byte[] Xto_bry(Wdata_doc wdoc) { @@ -85,73 +86,73 @@ public class Wdata_doc_wtr { wtr.Ary_bgn(); for (int i = 0; i < len; i++) { if (i != 0) wtr.Comma(); - Wdata_claim_itm_core prop = (Wdata_claim_itm_core)props.Get_at(i); + Wbase_claim_base prop = (Wbase_claim_base)props.Get_at(i); wtr.Nde_bgn(); wtr.Key(false, Wdata_dict_claim_v1.Bry_m); wtr.Ary_bgn(); - wtr.Val(Bool_.N, Wdata_dict_snak_tid.Xto_bry(prop.Snak_tid())); + wtr.Val(Bool_.N, Wbase_claim_value_type_.To_bry_or_fail(prop.Snak_tid())); wtr.Val(Bool_.Y, prop.Pid()); - if (prop.Snak_tid() == Wdata_dict_snak_tid.Tid_value) { + if (prop.Snak_tid() == Wbase_claim_value_type_.Tid__value) { switch (prop.Val_tid()) { - case Wdata_dict_val_tid.Tid_string: - Wdata_claim_itm_str claim_str = (Wdata_claim_itm_str)prop; - wtr.Val(Bool_.Y, Wdata_dict_val_tid.Bry_string); + case Wbase_claim_type_.Tid__string: + Wbase_claim_string claim_str = (Wbase_claim_string)prop; + wtr.Val(Bool_.Y, Wbase_claim_type_.Itm__string.Key_bry()); wtr.Val(Bool_.Y, claim_str.Val_str()); break; - case Wdata_dict_val_tid.Tid_entity: - Wdata_claim_itm_entity claim_entity = (Wdata_claim_itm_entity)prop; - wtr.Val(Bool_.Y, Wdata_dict_val_tid.Bry_entity); + case Wbase_claim_type_.Tid__entity: + Wbase_claim_entity claim_entity = (Wbase_claim_entity)prop; + wtr.Val(Bool_.Y, Wbase_claim_type_.Itm__entity.Key_bry()); wtr.Comma(); wtr.Nde_bgn(); - wtr.Kv(Bool_.N, Wdata_dict_value_entity.Bry_entity_type , claim_entity.Entity_tid_bry()); - wtr.Kv(Bool_.Y, Wdata_dict_value_entity.Bry_numeric_id , claim_entity.Entity_id()); + wtr.Kv(Bool_.N, Wbase_claim_entity_.Itm__entity_type.Key_bry() , claim_entity.Entity_tid_bry()); + wtr.Kv(Bool_.Y, Wbase_claim_entity_.Itm__numeric_id.Key_bry() , claim_entity.Entity_id()); wtr.Nde_end(); break; - case Wdata_dict_val_tid.Tid_time: - Wdata_claim_itm_time claim_time = (Wdata_claim_itm_time)prop; - wtr.Val(Bool_.Y, Wdata_dict_val_tid.Bry_time); + case Wbase_claim_type_.Tid__time: + Wbase_claim_time claim_time = (Wbase_claim_time)prop; + wtr.Val(Bool_.Y, Wbase_claim_type_.Itm__time.Key_bry()); wtr.Comma(); wtr.Nde_bgn(); - wtr.Kv(Bool_.N, Wdata_dict_value_time.Bry_time , claim_time.Time()); - wtr.Kv(Bool_.Y, Wdata_dict_value_time.Bry_precision , Wdata_dict_value_time.Val_timezone_bry); - wtr.Kv(Bool_.Y, Wdata_dict_value_time.Bry_before , Wdata_dict_value_time.Val_before_bry); - wtr.Kv(Bool_.Y, Wdata_dict_value_time.Bry_after , Wdata_dict_value_time.Val_after_bry); - wtr.Kv(Bool_.Y, Wdata_dict_value_time.Bry_timezone , Wdata_dict_value_time.Val_timezone_bry); - wtr.Kv(Bool_.Y, Wdata_dict_value_time.Bry_calendarmodel , Wdata_dict_value_time.Val_calendarmodel_bry); + wtr.Kv(Bool_.N, Wbase_claim_time_.Itm__time.Key_bry() , claim_time.Time()); + wtr.Kv(Bool_.Y, Wbase_claim_time_.Itm__precision.Key_bry() , Wbase_claim_time_.Dflt__timezone.Val_bry()); + wtr.Kv(Bool_.Y, Wbase_claim_time_.Itm__before.Key_bry() , Wbase_claim_time_.Dflt__before.Val_bry()); + wtr.Kv(Bool_.Y, Wbase_claim_time_.Itm__after.Key_bry() , Wbase_claim_time_.Dflt__after.Val_bry()); + wtr.Kv(Bool_.Y, Wbase_claim_time_.Itm__timezone.Key_bry() , Wbase_claim_time_.Dflt__timezone.Val_bry()); + wtr.Kv(Bool_.Y, Wbase_claim_time_.Itm__calendarmodel.Key_bry() , Wbase_claim_time_.Dflt__calendarmodel.Val_bry()); wtr.Nde_end(); break; - case Wdata_dict_val_tid.Tid_globecoordinate: { - Wdata_claim_itm_globecoordinate claim_globecoordinate = (Wdata_claim_itm_globecoordinate)prop; - wtr.Val(Bool_.Y, Wdata_dict_val_tid.Bry_globecoordinate); + case Wbase_claim_type_.Tid__globecoordinate: { + Wbase_claim_globecoordinate claim_globecoordinate = (Wbase_claim_globecoordinate)prop; + wtr.Val(Bool_.Y, Wbase_claim_type_.Itm__globecoordinate.Key_bry()); wtr.Comma(); wtr.Nde_bgn(); - wtr.Kv_double (Bool_.N, Wdata_dict_value_globecoordinate.Bry_latitude , Double_.parse(String_.new_a7(claim_globecoordinate.Lat()))); - wtr.Kv_double (Bool_.Y, Wdata_dict_value_globecoordinate.Bry_longitude , Double_.parse(String_.new_a7(claim_globecoordinate.Lng()))); - wtr.Kv (Bool_.Y, Wdata_dict_value_globecoordinate.Bry_altitude , null); - wtr.Kv (Bool_.Y, Wdata_dict_value_globecoordinate.Bry_globe , Wdata_dict_value_globecoordinate.Val_globe_dflt_bry); - wtr.Kv_double (Bool_.Y, Wdata_dict_value_globecoordinate.Bry_precision , .00001d); + wtr.Kv_double (Bool_.N, Wbase_claim_globecoordinate_.Itm__latitude.Key_bry() , Double_.parse(String_.new_a7(claim_globecoordinate.Lat()))); + wtr.Kv_double (Bool_.Y, Wbase_claim_globecoordinate_.Itm__longitude.Key_bry() , Double_.parse(String_.new_a7(claim_globecoordinate.Lng()))); + wtr.Kv (Bool_.Y, Wbase_claim_globecoordinate_.Itm__altitude.Key_bry() , null); + wtr.Kv (Bool_.Y, Wbase_claim_globecoordinate_.Itm__globe.Key_bry() , Wbase_claim_globecoordinate_.Val_globe_dflt_bry); + wtr.Kv_double (Bool_.Y, Wbase_claim_globecoordinate_.Itm__precision.Key_bry() , .00001d); wtr.Nde_end(); break; } - case Wdata_dict_val_tid.Tid_quantity: { - Wdata_claim_itm_quantity claim_quantity = (Wdata_claim_itm_quantity)prop; - wtr.Val(Bool_.Y, Wdata_dict_val_tid.Bry_quantity); + case Wbase_claim_type_.Tid__quantity: { + Wbase_claim_quantity claim_quantity = (Wbase_claim_quantity)prop; + wtr.Val(Bool_.Y, Wbase_claim_type_.Itm__quantity.Key_bry()); wtr.Comma(); wtr.Nde_bgn(); - wtr.Kv (Bool_.N, Wdata_dict_value_quantity.Bry_amount , claim_quantity.Amount()); // +1,234 - wtr.Kv (Bool_.Y, Wdata_dict_value_quantity.Bry_unit , claim_quantity.Unit()); // 1 - wtr.Kv (Bool_.Y, Wdata_dict_value_quantity.Bry_upperbound , claim_quantity.Ubound()); // +1,235 - wtr.Kv (Bool_.Y, Wdata_dict_value_quantity.Bry_lowerbound , claim_quantity.Lbound()); // +1,233 + wtr.Kv (Bool_.N, Wbase_claim_quantity_.Itm__amount.Key_bry() , claim_quantity.Amount()); // +1,234 + wtr.Kv (Bool_.Y, Wbase_claim_quantity_.Itm__unit.Key_bry() , claim_quantity.Unit()); // 1 + wtr.Kv (Bool_.Y, Wbase_claim_quantity_.Itm__upperbound.Key_bry() , claim_quantity.Ubound()); // +1,235 + wtr.Kv (Bool_.Y, Wbase_claim_quantity_.Itm__lowerbound.Key_bry() , claim_quantity.Lbound()); // +1,233 wtr.Nde_end(); break; } - case Wdata_dict_val_tid.Tid_monolingualtext: { - Wdata_claim_itm_monolingualtext claim_monolingualtext = (Wdata_claim_itm_monolingualtext)prop; - wtr.Val(Bool_.Y, Wdata_dict_val_tid.Bry_monolingualtext); + case Wbase_claim_type_.Tid__monolingualtext: { + Wbase_claim_monolingualtext claim_monolingualtext = (Wbase_claim_monolingualtext)prop; + wtr.Val(Bool_.Y, Wbase_claim_type_.Itm__monolingualtext.Key_bry()); wtr.Comma(); wtr.Nde_bgn(); - wtr.Kv (Bool_.N, Wdata_dict_value_monolingualtext.Bry_text , claim_monolingualtext.Text()); // text - wtr.Kv (Bool_.Y, Wdata_dict_value_monolingualtext.Bry_language , claim_monolingualtext.Lang()); // en + wtr.Kv (Bool_.N, Wbase_claim_monolingualtext_.Itm__text.Key_bry() , claim_monolingualtext.Text()); // text + wtr.Kv (Bool_.Y, Wbase_claim_monolingualtext_.Itm__language.Key_bry() , claim_monolingualtext.Lang()); // en wtr.Nde_end(); break; } @@ -161,7 +162,7 @@ public class Wdata_doc_wtr { wtr.Ary_end(); wtr.Kv_ary_empty(Bool_.Y, Wdata_dict_claim_v1.Bry_q); wtr.Kv(Bool_.Y, Wdata_dict_claim_v1.Bry_g, qid); - wtr.Kv(Bool_.Y, Wdata_dict_claim_v1.Bry_rank, Wdata_dict_rank.Tid_normal); + wtr.Kv(Bool_.Y, Wdata_dict_claim_v1.Bry_rank, Wbase_claim_rank_.Tid__normal); wtr.Kv_ary_empty(Bool_.Y, Wdata_dict_claim_v1.Bry_refs); wtr.Nde_end(); } diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/Wdata_prop_val_visitor.java b/400_xowa/src/gplx/xowa/xtns/wbases/Wdata_prop_val_visitor.java similarity index 66% rename from 400_xowa/src/gplx/xowa/xtns/wdatas/Wdata_prop_val_visitor.java rename to 400_xowa/src/gplx/xowa/xtns/wbases/Wdata_prop_val_visitor.java index f73e8881f..e03616801 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/Wdata_prop_val_visitor.java +++ b/400_xowa/src/gplx/xowa/xtns/wbases/Wdata_prop_val_visitor.java @@ -15,11 +15,11 @@ 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.xtns.wdatas; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; +package gplx.xowa.xtns.wbases; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.core.brys.fmtrs.*; import gplx.xowa.langs.*; -import gplx.xowa.xtns.wdatas.core.*; import gplx.xowa.xtns.wdatas.hwtrs.*; -class Wdata_prop_val_visitor implements Wdata_claim_visitor { +import gplx.xowa.xtns.wbases.core.*; import gplx.xowa.xtns.wbases.claims.*; import gplx.xowa.xtns.wbases.claims.itms.*; import gplx.xowa.xtns.wbases.hwtrs.*; +class Wdata_prop_val_visitor implements Wbase_claim_visitor { private Wdata_wiki_mgr wdata_mgr; private Xoae_app app; private Bry_bfr bfr; private byte[] lang_key; private final Bry_bfr tmp_time_bfr = Bry_bfr_.Reset(255); private final Bry_fmtr tmp_time_fmtr = Bry_fmtr.new_(); private Wdata_hwtr_msgs msgs; @@ -27,14 +27,14 @@ class Wdata_prop_val_visitor implements Wdata_claim_visitor { public void Init(Bry_bfr bfr, Wdata_hwtr_msgs msgs, byte[] lang_key) { this.bfr = bfr; this.msgs = msgs; this.lang_key = lang_key; } - public void Visit_str(Wdata_claim_itm_str itm) { + public void Visit_str(Wbase_claim_string itm) { bfr.Add(itm.Val_str()); } - public void Visit_time(Wdata_claim_itm_time itm) { + public void Visit_time(Wbase_claim_time itm) { itm.Write_to_bfr(bfr, tmp_time_bfr, tmp_time_fmtr, msgs, Bry_.Empty); // for now, don't bother passing ttl; only used for error msg; DATE:2015-08-03 } - public void Visit_monolingualtext(Wdata_claim_itm_monolingualtext itm) {bfr.Add(itm.Text());} // phrase only; PAGE:en.w:Alberta; EX: {{#property:motto}} -> "Fortis et libre"; DATE:2014-08-28 - public void Visit_entity(Wdata_claim_itm_entity itm) { + public void Visit_monolingualtext(Wbase_claim_monolingualtext itm) {bfr.Add(itm.Text());} // phrase only; PAGE:en.w:Alberta; EX: {{#property:motto}} -> "Fortis et libre"; DATE:2014-08-28 + public void Visit_entity(Wbase_claim_entity itm) { Wdata_doc entity_doc = wdata_mgr.Doc_mgr.Get_by_xid_or_null(itm.Page_ttl_db()); if (entity_doc == null) return; // NOTE: wiki may refer to entity that no longer exists; EX: {{#property:p1}} which links to Q1, but p1 links to Q2 and Q2 was deleted; DATE:2014-02-01 byte[] label = entity_doc.Label_list__get(lang_key); @@ -43,22 +43,19 @@ class Wdata_prop_val_visitor implements Wdata_claim_visitor { if (label != null) // if label is still not found, don't add null reference bfr.Add(label); } - public void Visit_quantity(Wdata_claim_itm_quantity itm) { + public void Visit_quantity(Wbase_claim_quantity itm) { byte[] amount_bry = itm.Amount(); - long val = Bry_.To_long_or(amount_bry, Ignore_comma, 0, amount_bry.length, 0); // NOTE: must cast to long for large numbers; EX:{{#property:P1082}} PAGE:en.w:Earth; DATE:2015-08-02 + long val = Bry_.To_long_or(amount_bry, Byte_ascii.Comma_bry, 0, amount_bry.length, 0); // NOTE: must cast to long for large numbers; EX:{{#property:P1082}} PAGE:en.w:Earth; DATE:2015-08-02 Xol_lang_itm lang = app.Lang_mgr().Get_by(lang_key); bfr.Add(lang.Num_mgr().Format_num_by_long(val)); // amount; EX: 1,234 if (itm.Lbound_as_num().To_long() != val && itm.Ubound_as_num().To_long() != val) { // NOTE: do not output ± if lbound == val == ubound; PAGE:en.w:Tintinan DATE:2015-08-02 - bfr.Add(Bry_quantity_margin_of_error); // symbol: EX: ± + bfr.Add(Bry__quantity_margin_of_error); // symbol: EX: ± bfr.Add(itm.Unit()); // unit; EX: 1 } } - public void Visit_globecoordinate(Wdata_claim_itm_globecoordinate itm) { - bfr.Add(itm.Lat()); - bfr.Add_byte(Byte_ascii.Comma).Add_byte(Byte_ascii.Space); - bfr.Add(itm.Lng()); + public void Visit_globecoordinate(Wbase_claim_globecoordinate itm) { + Wdata_prop_val_visitor_.Render__geo(bfr, itm.Lat(), itm.Lng()); } - public void Visit_system(Wdata_claim_itm_system itm) {} - private static final byte[] Ignore_comma = new byte[]{Byte_ascii.Comma}; - private static final byte[] Bry_quantity_margin_of_error = Bry_.new_u8("±"); + public void Visit_system(Wbase_claim_value itm) {} + public static final byte[] Bry__quantity_margin_of_error = Bry_.new_u8("±"); } diff --git a/400_xowa/src/gplx/xowa/xtns/wbases/Wdata_prop_val_visitor_.java b/400_xowa/src/gplx/xowa/xtns/wbases/Wdata_prop_val_visitor_.java new file mode 100644 index 000000000..7b9cee1d4 --- /dev/null +++ b/400_xowa/src/gplx/xowa/xtns/wbases/Wdata_prop_val_visitor_.java @@ -0,0 +1,151 @@ +/* +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.xtns.wbases; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; +import gplx.core.brys.fmtrs.*; +import gplx.xowa.xtns.wbases.core.*; import gplx.xowa.xtns.wbases.claims.*; import gplx.xowa.xtns.wbases.claims.itms.times.*; import gplx.xowa.xtns.wbases.claims.enums.*; import gplx.xowa.xtns.wbases.claims.itms.*; import gplx.xowa.xtns.scribunto.*; import gplx.xowa.xtns.wbases.hwtrs.*; +import gplx.xowa.langs.*; import gplx.xowa.langs.commas.*; +import gplx.xowa.parsers.*; +public class Wdata_prop_val_visitor_ { + public static String Render_snaks(Xowe_wiki wiki, byte[] page_url, Keyval[] snaks) { + String rv = null; + int len = snaks.length; + Bry_bfr bfr = wiki.Utl__bfr_mkr().Get_b512(); + try { + for (int i = 0; i < len; ++i) { + Keyval[] itm = (Keyval[])snaks[i].Val(); + Render_snak(bfr, wiki, wiki.Lang(), page_url, itm, i, len); + } + wiki.Lang().Comma_wkr().Comma__end(bfr); + rv = bfr.To_str_and_clear(); + } finally {bfr.Mkr_rls();} + return rv; + } + public static String Render_snak(Xowe_wiki wiki, byte[] page_url, Keyval[] props) { + String rv = null; + Bry_bfr bfr = wiki.Utl__bfr_mkr().Get_b512(); + try { + Render_snak(bfr, wiki, wiki.Lang(), page_url, props, 0, 1); + rv = bfr.To_str_and_clear(); + } finally {bfr.Mkr_rls();} + return rv; + } + private static void Render_snak(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang_itm lang, byte[] page_url, Keyval[] props, int sub_idx, int sub_len) { + Keyval[] datavalue_ary = (Keyval[])Scrib_kv_utl_.Get_sub_by_key_or_null(props, Wdata_dict_mainsnak.Str_datavalue); + + // loop datavalue_ary to get tid, val_obj + byte tid = Byte_.Max_value_127; + Object val_obj = null; + int len = datavalue_ary.length; + for (int i = 0; i < len; ++i) { + String key = datavalue_ary[i].Key(); + if (String_.Eq(key, Wdata_dict_datavalue.Str_type)) + tid = Wbase_claim_type_.To_tid_or_unknown((String)datavalue_ary[i].Val()); + else if (String_.Eq(key, Wdata_dict_datavalue.Str_value)) + val_obj = datavalue_ary[i].Val(); + } + + // render val_obj based on tid + switch (tid) { + case Wbase_claim_type_.Tid__entity: throw Err_.new_unimplemented(); + case Wbase_claim_type_.Tid__string: bfr.Add_str_u8((String)val_obj); break; + case Wbase_claim_type_.Tid__time: Render__time (bfr, wiki, page_url, (Keyval[])val_obj); break; + case Wbase_claim_type_.Tid__globecoordinate: Render__geo (bfr, lang, page_url, (Keyval[])val_obj); break; + case Wbase_claim_type_.Tid__quantity: Render__quantity (bfr, lang, page_url, (Keyval[])val_obj); break; + case Wbase_claim_type_.Tid__monolingualtext: Render__langtext (bfr, lang, (Keyval[])val_obj); break; + } + lang.Comma_wkr().Comma__itm(bfr, sub_idx, sub_len); + } + private static void Render__time(Bry_bfr bfr, Xowe_wiki wiki, byte[] page_url, Keyval[] kvs) { + Wbase_date date = null; + byte[] time = null; + int precision_int = 0, before_int = 0, after_int = 0; + boolean calendar_is_julian = true; + int len = kvs.length; + for (int i = 0; i < len; ++i) { + Keyval kv = kvs[i]; + byte val_tid = Wbase_claim_time_.To_tid_or_invalid(page_url, kv.Key()); + switch (val_tid) { + case Wbase_claim_time_.Tid__time: time = Bry_.new_u8((String)kv.Val()); break; + case Wbase_claim_time_.Tid__before: before_int = Int_.cast(kv.Val()); break; + case Wbase_claim_time_.Tid__after: after_int = Int_.cast(kv.Val()); break; + case Wbase_claim_time_.Tid__precision: precision_int = Int_.cast(kv.Val()); break; + case Wbase_claim_time_.Tid__calendarmodel: calendar_is_julian = Bry_.Eq(Bry_.new_u8((String)kv.Val()), Wbase_claim_time.Calendar_julian); break; + case Wbase_claim_time_.Tid__timezone: if (!String_.Eq((String)kv.Val(), "0")) throw Err_.new_unimplemented(); break; + } + } + Xow_parser_mgr parser_mgr = wiki.Parser_mgr(); + date = Wbase_date.Parse(time, precision_int, before_int, after_int, calendar_is_julian); + Wbase_claim_time.Write_to_bfr(bfr, parser_mgr.Wbase__time__bfr(), parser_mgr.Wbase__time__fmtr() + , parser_mgr.Wbase__time__msgs(), page_url, Bry_.Empty, date, calendar_is_julian + ); + } + private static void Render__quantity(Bry_bfr bfr, Xol_lang_itm lang, byte[] page_url, Keyval[] kvs) { + byte[] amount_bry = null, lbound_bry = null, ubound_bry = null, unit_bry = null; + int len = kvs.length; + for (int i = 0; i < len; ++i) { + Keyval kv = kvs[i]; + byte val_tid = Wbase_claim_quantity_.To_tid_or_invalid(page_url, kv.Key()); + byte[] val_bry = Bry_.new_u8((String)kv.Val()); + switch (val_tid) { + case Wbase_claim_quantity_.Tid__amount: amount_bry = val_bry; break; + case Wbase_claim_quantity_.Tid__unit: unit_bry = val_bry; break; + case Wbase_claim_quantity_.Tid__lowerbound: lbound_bry = val_bry; break; + case Wbase_claim_quantity_.Tid__upperbound: ubound_bry = val_bry; break; + } + } + Render__quantity(bfr, lang, amount_bry, lbound_bry, ubound_bry, unit_bry); + } + private static void Render__quantity(Bry_bfr bfr, Xol_lang_itm lang, byte[] amount_bry, byte[] lbound_bry, byte[] ubound_bry, byte[] unit_bry) { + long val = Bry_.To_long_or(amount_bry, Byte_ascii.Comma_bry, 0, amount_bry.length, 0); // NOTE: must cast to long for large numbers; EX:{{#property:P1082}} PAGE:en.w:Earth; DATE:2015-08-02 + bfr.Add(lang.Num_mgr().Format_num_by_long(val));// amount; EX: 1,234 + long lbound = Bry_.To_long_or(lbound_bry, val); + long ubound = Bry_.To_long_or(lbound_bry, val); + if (lbound != val && ubound != val) { // NOTE: do not output � if lbound == val == ubound; PAGE:en.w:Tintinan DATE:2015-08-02 + bfr.Add(Wdata_prop_val_visitor.Bry__quantity_margin_of_error); // symbol: EX: � + bfr.Add(unit_bry); // unit; EX: 1 + } + } + private static void Render__geo(Bry_bfr bfr, Xol_lang_itm lang, byte[] page_url, Keyval[] kvs) { + double lat = 0, lng = 0; + int len = kvs.length; + for (int i = 0; i < len; ++i) { + Keyval kv = kvs[i]; + byte val_tid = Wbase_claim_globecoordinate_.To_tid_or_invalid(page_url, kv.Key()); + switch (val_tid) { + case Wbase_claim_globecoordinate_.Tid__latitude: lat = Double_.cast(kv.Val()); break; + case Wbase_claim_globecoordinate_.Tid__longitude: lng = Double_.cast(kv.Val()); break; + default: break; // ignore others + } + } + Render__geo(bfr, lat, lng); + } + public static void Render__geo(Bry_bfr bfr, byte[] lat, byte[] lng) { + bfr.Add(lat); + bfr.Add(Bry__geo_dlm); + bfr.Add(lng); + } + public static void Render__geo(Bry_bfr bfr, double lat, double lng) { + bfr.Add_double(lat); + bfr.Add(Bry__geo_dlm); + bfr.Add_double(lng); + } + private static void Render__langtext(Bry_bfr bfr, Xol_lang_itm lang, Keyval[] kvs) { + bfr.Add_str_u8((String)Scrib_kv_utl_.Get_sub_by_key_or_null(kvs, Wbase_claim_monolingualtext_.Itm__text.Key_str())); + } + private static final byte[] Bry__geo_dlm = Bry_.new_a7(", "); +} diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/Wdata_wiki_mgr.java b/400_xowa/src/gplx/xowa/xtns/wbases/Wdata_wiki_mgr.java similarity index 86% rename from 400_xowa/src/gplx/xowa/xtns/wdatas/Wdata_wiki_mgr.java rename to 400_xowa/src/gplx/xowa/xtns/wbases/Wdata_wiki_mgr.java index f7acafd42..953ba8a9a 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/Wdata_wiki_mgr.java +++ b/400_xowa/src/gplx/xowa/xtns/wbases/Wdata_wiki_mgr.java @@ -15,13 +15,13 @@ 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.xtns.wdatas; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; +package gplx.xowa.xtns.wbases; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.core.primitives.*; import gplx.langs.jsons.*; import gplx.xowa.wikis.nss.*; import gplx.xowa.langs.*; import gplx.xowa.wikis.domains.*; import gplx.xowa.htmls.*; import gplx.xowa.parsers.logs.*; import gplx.xowa.apps.apis.xowa.xtns.*; import gplx.xowa.apps.apis.xowa.html.*; import gplx.xowa.users.*; -import gplx.xowa.xtns.wdatas.parsers.*; import gplx.xowa.xtns.wdatas.pfuncs.*; import gplx.xowa.xtns.wdatas.core.*; import gplx.xowa.xtns.wdatas.hwtrs.*; +import gplx.xowa.xtns.wbases.core.*; import gplx.xowa.xtns.wbases.claims.*; import gplx.xowa.xtns.wbases.claims.enums.*; import gplx.xowa.xtns.wbases.claims.itms.*; import gplx.xowa.xtns.wbases.parsers.*; import gplx.xowa.xtns.wbases.pfuncs.*; import gplx.xowa.xtns.wbases.hwtrs.*; import gplx.xowa.parsers.*; public class Wdata_wiki_mgr implements Gfo_evt_itm, Gfo_invk { private final Xoae_app app; @@ -70,30 +70,30 @@ public class Wdata_wiki_mgr implements Gfo_evt_itm, Gfo_invk { public byte[] Get_claim_or(Xow_domain_itm domain, Xoa_ttl page_ttl, int pid, byte[] or) { byte[] qid = this.Qid_mgr.Get_or_null(domain.Abrv_wm(), page_ttl); if (qid == null) return or; Wdata_doc wdoc = Doc_mgr.Get_by_bry_or_null(qid); if (wdoc == null) return or; - Wdata_claim_grp claim_grp = wdoc.Claim_list_get(pid); if (claim_grp == null || claim_grp.Len() == 0) return or; - Wdata_claim_itm_core claim_itm = claim_grp.Get_at(0); + Wbase_claim_grp claim_grp = wdoc.Claim_list_get(pid); if (claim_grp == null || claim_grp.Len() == 0) return or; + Wbase_claim_base claim_itm = claim_grp.Get_at(0); synchronized (tmp_bfr) { // LOCK:must synchronized b/c prop_val_visitor has member bfr which can get overwritten; DATE:2016-07-06 prop_val_visitor.Init(tmp_bfr, hwtr_mgr.Msgs(), domain.Lang_orig_key()); claim_itm.Welcome(prop_val_visitor); return tmp_bfr.To_bry_and_clear(); } } - public void Resolve_to_bfr(Bry_bfr bfr, Wdata_claim_grp prop_grp, byte[] lang_key) { + public void Resolve_to_bfr(Bry_bfr bfr, Wbase_claim_grp prop_grp, byte[] lang_key) { synchronized (this) { // LOCK:must synchronized b/c prop_val_visitor has member bfr which can get overwritten; DATE:2016-07-06 Hwtr_mgr_assert(); int len = prop_grp.Len(); - Wdata_claim_itm_core selected = null; + Wbase_claim_base selected = null; for (int i = 0; i < len; i++) { // NOTE: multiple props possible; EX: {{#property:P1082}}; PAGE:en.w:Earth DATE:2015-08-02 - Wdata_claim_itm_core prop = prop_grp.Get_at(i); + Wbase_claim_base prop = prop_grp.Get_at(i); if (selected == null) selected = prop; // if selected not set, set it; will always set to 1st prop - if (prop.Rank_tid() == Wdata_dict_rank.Tid_preferred) { // if prop is preferred, select it and exit; + if (prop.Rank_tid() == Wbase_claim_rank_.Tid__preferred) { // if prop is preferred, select it and exit; selected = prop; break; } } switch (selected.Snak_tid()) { - case Wdata_dict_snak_tid.Tid_novalue : bfr.Add(Wdata_dict_snak_tid.Bry_novalue); break; - case Wdata_dict_snak_tid.Tid_somevalue : bfr.Add(Wdata_dict_snak_tid.Bry_somevalue); break; + case Wbase_claim_value_type_.Tid__novalue : bfr.Add(Wbase_claim_value_type_.Itm__novalue.Key_bry()); break; + case Wbase_claim_value_type_.Tid__somevalue : bfr.Add(Wbase_claim_value_type_.Itm__somevalue.Key_bry()); break; default: { prop_val_visitor.Init(bfr, hwtr_mgr.Msgs(), lang_key); selected.Welcome(prop_val_visitor); @@ -165,11 +165,11 @@ public class Wdata_wiki_mgr implements Gfo_evt_itm, Gfo_invk { public static boolean Wiki_page_is_json(int wiki_tid, int ns_id) { switch (wiki_tid) { case Xow_domain_tid_.Int__wikidata: - if (ns_id == Xow_ns_.Tid__main || ns_id == gplx.xowa.xtns.wdatas.Wdata_wiki_mgr.Ns_property) + if (ns_id == Xow_ns_.Tid__main || ns_id == gplx.xowa.xtns.wbases.Wdata_wiki_mgr.Ns_property) return true; break; case Xow_domain_tid_.Int__home: - if (ns_id == gplx.xowa.xtns.wdatas.Wdata_wiki_mgr.Ns_property) + if (ns_id == gplx.xowa.xtns.wbases.Wdata_wiki_mgr.Ns_property) return true; break; } diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/Wdata_wiki_mgr_fxt.java b/400_xowa/src/gplx/xowa/xtns/wbases/Wdata_wiki_mgr_fxt.java similarity index 66% rename from 400_xowa/src/gplx/xowa/xtns/wdatas/Wdata_wiki_mgr_fxt.java rename to 400_xowa/src/gplx/xowa/xtns/wbases/Wdata_wiki_mgr_fxt.java index d605157a9..727b752a4 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/Wdata_wiki_mgr_fxt.java +++ b/400_xowa/src/gplx/xowa/xtns/wbases/Wdata_wiki_mgr_fxt.java @@ -15,14 +15,16 @@ 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.xtns.wdatas; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; +package gplx.xowa.xtns.wbases; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.core.primitives.*; import gplx.langs.jsons.*; -import gplx.xowa.wikis.*; import gplx.xowa.wikis.xwikis.*; import gplx.xowa.guis.*; import gplx.xowa.xtns.wdatas.imports.*; import gplx.xowa.wikis.pages.*; +import gplx.xowa.wikis.*; import gplx.xowa.wikis.xwikis.*; import gplx.xowa.guis.*; import gplx.xowa.xtns.wbases.imports.*; import gplx.xowa.wikis.pages.*; import gplx.xowa.wikis.nss.*; -import gplx.xowa.langs.*; import gplx.xowa.xtns.wdatas.core.*; import gplx.xowa.xtns.wdatas.pfuncs.*; +import gplx.xowa.langs.*; +import gplx.xowa.xtns.wbases.core.*; import gplx.xowa.xtns.wbases.pfuncs.*; import gplx.xowa.xtns.wbases.claims.*; import gplx.xowa.xtns.wbases.claims.enums.*; import gplx.xowa.xtns.wbases.claims.itms.*; import gplx.xowa.wikis.tdbs.hives.*; import gplx.xowa.wikis.tdbs.xdats.*; public class Wdata_wiki_mgr_fxt { private final Wdata_xwiki_link_wtr wdata_lang_wtr = new Wdata_xwiki_link_wtr(); + private final Bry_bfr tmp_time_bfr = Bry_bfr_.New(); public Xowe_wiki Wiki() {return parser_fxt.Wiki();} public Wdata_wiki_mgr_fxt Init() {return Init(new Xop_fxt(), true);} public Wdata_wiki_mgr_fxt Init(Xop_fxt parser_fxt, boolean reset) { @@ -45,33 +47,33 @@ public class Wdata_wiki_mgr_fxt { } public Wdata_doc_bldr Wdoc_bldr(String qid) {return wdoc_bldr.Qid_(qid);} public Json_doc Make_json(String src) {return app.Utl__json_parser().Parse_by_apos(src);} - public Wdata_claim_itm_core Make_claim_novalue(int pid) {return Wdata_claim_itm_system.new_novalue(pid);} - public Wdata_claim_itm_core Make_claim_somevalue(int pid) {return Wdata_claim_itm_system.new_somevalue(pid);} - public Wdata_claim_itm_core Make_claim_str(int pid, String val) {return Make_claim_str(pid, Bry_.new_u8(val));} - public Wdata_claim_itm_core Make_claim_str(int pid, byte[] val) {return new Wdata_claim_itm_str(pid, Wdata_dict_snak_tid.Tid_value, val);} - public Wdata_claim_itm_core Make_claim_time(int pid, String val) {return Make_claim_time(pid, val, Bry_.Empty, Bry_.Empty);} - public Wdata_claim_itm_core Make_claim_time(int pid, String val, int precision) {return Make_claim_time(pid, val, Int_.To_bry(precision), Bry_.Empty);} - public Wdata_claim_itm_core Make_claim_time(int pid, String val, byte[] precision, byte[] calendar) { - return new Wdata_claim_itm_time(pid, Wdata_dict_snak_tid.Tid_value, Wdata_dict_value_time.Xto_time(val), Bry_.Empty, Bry_.Empty, Bry_.Empty, precision, calendar); + public Wbase_claim_base Make_claim_novalue(int pid) {return Wbase_claim_value.New_novalue(pid);} + public Wbase_claim_base Make_claim_somevalue(int pid) {return Wbase_claim_value.New_somevalue(pid);} + public Wbase_claim_base Make_claim_string(int pid, String val) {return Make_claim_string(pid, Bry_.new_u8(val));} + public Wbase_claim_base Make_claim_string(int pid, byte[] val) {return new Wbase_claim_string(pid, Wbase_claim_value_type_.Tid__value, val);} + public Wbase_claim_base Make_claim_time(int pid, String val) {return Make_claim_time(pid, val, Bry_.Empty, Bry_.Empty);} + public Wbase_claim_base Make_claim_time(int pid, String val, int precision) {return Make_claim_time(pid, val, Int_.To_bry(precision), Bry_.Empty);} + public Wbase_claim_base Make_claim_time(int pid, String val, byte[] precision, byte[] calendar) { + return new Wbase_claim_time(pid, Wbase_claim_value_type_.Tid__value, Wbase_claim_time_.To_bry(tmp_time_bfr, val), Bry_.Empty, Bry_.Empty, Bry_.Empty, precision, calendar); } - public Wdata_claim_itm_core Make_claim_monolingual(int pid, String lang, String text) {return new Wdata_claim_itm_monolingualtext(pid, Wdata_dict_snak_tid.Tid_value, Bry_.new_u8(lang), Bry_.new_u8(text));} - public Wdata_claim_itm_core Make_claim_quantity(int pid, String amount, String unit, String ubound, String lbound) {return new Wdata_claim_itm_quantity(pid, Wdata_dict_snak_tid.Tid_value, Bry_.new_a7(amount), Bry_.new_a7(unit), Bry_.new_a7(ubound), Bry_.new_a7(lbound));} - public Wdata_claim_itm_core Make_claim_entity_qid(int pid, int val) {return new Wdata_claim_itm_entity(pid, Wdata_dict_snak_tid.Tid_value, Wdata_dict_value_entity_tid.Tid_item, Int_.To_bry(val));} - public Wdata_claim_itm_core Make_claim_entity_pid(int pid, int val) {return new Wdata_claim_itm_entity(pid, Wdata_dict_snak_tid.Tid_value, Wdata_dict_value_entity_tid.Tid_property, Int_.To_bry(val));} - public Wdata_claim_itm_core Make_claim_geo(int pid, String lon, String lat) {return Make_claim_geo(pid, lon, lat, ".00001", null, "http://www.wikidata.org/entity/Q2");} - public Wdata_claim_itm_core Make_claim_geo(int pid, String lon, String lat, String prc, String alt, String glb) { - return new Wdata_claim_itm_globecoordinate(pid, Wdata_dict_snak_tid.Tid_value, Bry_.new_a7(lat), Bry_.new_a7(lon), Bry_.new_a7(alt), Bry_.new_a7(prc), Bry_.new_a7(glb)); + public Wbase_claim_base Make_claim_monolingual(int pid, String lang, String text) {return new Wbase_claim_monolingualtext(pid, Wbase_claim_value_type_.Tid__value, Bry_.new_u8(lang), Bry_.new_u8(text));} + public Wbase_claim_base Make_claim_quantity(int pid, String amount, String unit, String ubound, String lbound) {return new Wbase_claim_quantity(pid, Wbase_claim_value_type_.Tid__value, Bry_.new_a7(amount), Bry_.new_a7(unit), Bry_.new_a7(ubound), Bry_.new_a7(lbound));} + public Wbase_claim_base Make_claim_entity_qid(int pid, int val) {return new Wbase_claim_entity(pid, Wbase_claim_value_type_.Tid__value, Wbase_claim_entity_type_.Tid__item, Int_.To_bry(val));} + public Wbase_claim_base Make_claim_entity_pid(int pid, int val) {return new Wbase_claim_entity(pid, Wbase_claim_value_type_.Tid__value, Wbase_claim_entity_type_.Tid__property, Int_.To_bry(val));} + public Wbase_claim_base Make_claim_geo(int pid, String lon, String lat) {return Make_claim_geo(pid, lon, lat, ".00001", null, "http://www.wikidata.org/entity/Q2");} + public Wbase_claim_base Make_claim_geo(int pid, String lon, String lat, String prc, String alt, String glb) { + return new Wbase_claim_globecoordinate(pid, Wbase_claim_value_type_.Tid__value, Bry_.new_a7(lat), Bry_.new_a7(lon), Bry_.new_a7(alt), Bry_.new_a7(prc), Bry_.new_a7(glb)); } - public Wdata_claim_grp Make_qualifiers_grp(int pid, Wdata_claim_itm_core... ary) {return new Wdata_claim_grp(Int_obj_ref.New(pid), ary);} - public Wdata_claim_grp_list Make_qualifiers(Wdata_claim_grp... ary) { - Wdata_claim_grp_list rv = new Wdata_claim_grp_list(); + public Wbase_claim_grp Make_qualifiers_grp(int pid, Wbase_claim_base... ary) {return new Wbase_claim_grp(Int_obj_ref.New(pid), ary);} + public Wbase_claim_grp_list Make_qualifiers(Wbase_claim_grp... ary) { + Wbase_claim_grp_list rv = new Wbase_claim_grp_list(); int len = ary.length; for (int i = 0; i < len; ++i) rv.Add(ary[i]); return rv; } - public Wdata_doc doc_(String qid, Wdata_claim_itm_core... props) {return wdoc_bldr.Qid_(qid).Add_claims(props).Xto_wdoc();} + public Wdata_doc doc_(String qid, Wbase_claim_base... props) {return wdoc_bldr.Qid_(qid).Add_claims(props).Xto_wdoc();} public void Init_xwikis_add(String... prefixes) { int len = prefixes.length; for (int i = 0; i < len; i++) { @@ -94,7 +96,7 @@ public class Wdata_wiki_mgr_fxt { regy_mgr.Create(ttl_bry); regy_mgr.Save(); - Bry_bfr bfr = app.Utl__bfr_mkr().Get_b512().Mkr_rls(); + Bry_bfr bfr = Bry_bfr_.New(); byte[] itm = bfr.Add(ttl_bry).Add_byte(Byte_ascii.Pipe).Add(Bry_.new_a7(qid)).Add_byte_nl().To_bry_and_clear(); Xob_xdat_file xdat_file = new Xob_xdat_file(); xdat_file.Insert(bfr, itm); @@ -120,7 +122,7 @@ public class Wdata_wiki_mgr_fxt { Tfds.Eq(expd, String_.new_u8(qid_ttl)); } public void Test_parse_pid_null(String val) {Test_parse_pid(val, Wdata_wiki_mgr.Pid_null);} - public void Test_parse_pid(String val, int expd) {Tfds.Eq(expd, Wdata_pf_property.Parse_pid(num_parser, Bry_.new_a7(val)));} private Number_parser num_parser = new Number_parser(); + public void Test_parse_pid(String val, int expd) {Tfds.Eq(expd, Wdata_pf_property.Parse_pid(num_parser, Bry_.new_a7(val)));} private Gfo_number_parser num_parser = new Gfo_number_parser(); public void Init__docs__add(Wdata_doc page) {wdata_mgr.Doc_mgr.Add(page.Qid(), page);} public void Test_parse(String raw, String expd) { parser_fxt.Test_parse_page_tmpl_str(raw, expd); diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/Wdata_wiki_mgr_tst.java b/400_xowa/src/gplx/xowa/xtns/wbases/Wdata_wiki_mgr_tst.java similarity index 93% rename from 400_xowa/src/gplx/xowa/xtns/wdatas/Wdata_wiki_mgr_tst.java rename to 400_xowa/src/gplx/xowa/xtns/wbases/Wdata_wiki_mgr_tst.java index c15857788..a802eed31 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/Wdata_wiki_mgr_tst.java +++ b/400_xowa/src/gplx/xowa/xtns/wbases/Wdata_wiki_mgr_tst.java @@ -15,8 +15,8 @@ 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.xtns.wdatas; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; -import org.junit.*; import gplx.xowa.xtns.wdatas.imports.*; +package gplx.xowa.xtns.wbases; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; +import org.junit.*; import gplx.xowa.xtns.wbases.imports.*; public class Wdata_wiki_mgr_tst { @Test public void Basic() { Wdata_wiki_mgr_fxt fxt = new Wdata_wiki_mgr_fxt().Init(); diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/Wdata_xtn_mgr.java b/400_xowa/src/gplx/xowa/xtns/wbases/Wdata_xtn_mgr.java similarity index 95% rename from 400_xowa/src/gplx/xowa/xtns/wdatas/Wdata_xtn_mgr.java rename to 400_xowa/src/gplx/xowa/xtns/wbases/Wdata_xtn_mgr.java index ddb524eb1..97539a4dd 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/Wdata_xtn_mgr.java +++ b/400_xowa/src/gplx/xowa/xtns/wbases/Wdata_xtn_mgr.java @@ -15,7 +15,7 @@ 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.xtns.wdatas; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; +package gplx.xowa.xtns.wbases; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.langs.htmls.*; import gplx.xowa.langs.*; import gplx.xowa.langs.bldrs.*; import gplx.xowa.wikis.*; diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/Wdata_xwiki_link_wtr.java b/400_xowa/src/gplx/xowa/xtns/wbases/Wdata_xwiki_link_wtr.java similarity index 95% rename from 400_xowa/src/gplx/xowa/xtns/wdatas/Wdata_xwiki_link_wtr.java rename to 400_xowa/src/gplx/xowa/xtns/wbases/Wdata_xwiki_link_wtr.java index 1bba460ad..a00e88293 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/Wdata_xwiki_link_wtr.java +++ b/400_xowa/src/gplx/xowa/xtns/wbases/Wdata_xwiki_link_wtr.java @@ -15,10 +15,10 @@ 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.xtns.wdatas; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; +package gplx.xowa.xtns.wbases; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.langs.jsons.*; import gplx.xowa.wikis.domains.*; import gplx.xowa.wikis.xwikis.*; -import gplx.xowa.xtns.wdatas.core.*; import gplx.xowa.xtns.wdatas.pfuncs.*; +import gplx.xowa.xtns.wbases.core.*; import gplx.xowa.xtns.wbases.pfuncs.*; public class Wdata_xwiki_link_wtr implements gplx.core.brys.Bfr_arg { public Wdata_xwiki_link_wtr Page_(Xoae_page page) {this.page = page; return this;} private Xoae_page page; public void Bfr_arg__add(Bry_bfr bfr) { diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/Wdata_xwiki_link_wtr_tst.java b/400_xowa/src/gplx/xowa/xtns/wbases/Wdata_xwiki_link_wtr_tst.java similarity index 97% rename from 400_xowa/src/gplx/xowa/xtns/wdatas/Wdata_xwiki_link_wtr_tst.java rename to 400_xowa/src/gplx/xowa/xtns/wbases/Wdata_xwiki_link_wtr_tst.java index 8bd5b2f4a..df5be0c61 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/Wdata_xwiki_link_wtr_tst.java +++ b/400_xowa/src/gplx/xowa/xtns/wbases/Wdata_xwiki_link_wtr_tst.java @@ -15,7 +15,7 @@ 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.xtns.wdatas; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; +package gplx.xowa.xtns.wbases; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import org.junit.*; import gplx.langs.jsons.*; import gplx.xowa.wikis.domains.*; public class Wdata_xwiki_link_wtr_tst { diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_claim_grp.java b/400_xowa/src/gplx/xowa/xtns/wbases/claims/Wbase_claim_grp.java similarity index 70% rename from 400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_claim_grp.java rename to 400_xowa/src/gplx/xowa/xtns/wbases/claims/Wbase_claim_grp.java index 285a9fb7c..3dcf2cc91 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_claim_grp.java +++ b/400_xowa/src/gplx/xowa/xtns/wbases/claims/Wbase_claim_grp.java @@ -15,20 +15,21 @@ 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.xtns.wdatas.core; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; +package gplx.xowa.xtns.wbases.claims; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wbases.*; import gplx.core.primitives.*; -public class Wdata_claim_grp { - public Wdata_claim_grp(Int_obj_ref id_ref, Wdata_claim_itm_core[] itms) {this.id_ref = id_ref; this.itms = itms;} +import gplx.xowa.xtns.wbases.claims.itms.*; +public class Wbase_claim_grp { + public Wbase_claim_grp(Int_obj_ref id_ref, Wbase_claim_base[] itms) {this.id_ref = id_ref; this.itms = itms;} public Int_obj_ref Id_ref() {return id_ref;} private final Int_obj_ref id_ref; public int Id() {return id_ref.Val();} public String Id_str() {if (id_str == null) id_str = "P" + Int_.To_str(id_ref.Val()); return id_str;} private String id_str; - public int Len() {return itms.length;} private Wdata_claim_itm_core[] itms; - public Wdata_claim_itm_core Get_at(int i) {return itms[i];} + public int Len() {return itms.length;} private Wbase_claim_base[] itms; + public Wbase_claim_base Get_at(int i) {return itms[i];} public static List_adp Xto_list(Ordered_hash hash) { int len = hash.Count(); List_adp rv = List_adp_.New(); for (int i = 0; i < len; ++i) { - Wdata_claim_grp grp = (Wdata_claim_grp)hash.Get_at(i); + Wbase_claim_grp grp = (Wbase_claim_grp)hash.Get_at(i); int grp_len = grp.Len(); for (int j = 0; j < grp_len; ++j) rv.Add(grp.Get_at(j)); diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_claim_grp_list.java b/400_xowa/src/gplx/xowa/xtns/wbases/claims/Wbase_claim_grp_list.java similarity index 73% rename from 400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_claim_grp_list.java rename to 400_xowa/src/gplx/xowa/xtns/wbases/claims/Wbase_claim_grp_list.java index 2e37e8e78..bb5499234 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_claim_grp_list.java +++ b/400_xowa/src/gplx/xowa/xtns/wbases/claims/Wbase_claim_grp_list.java @@ -15,10 +15,10 @@ 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.xtns.wdatas.core; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; -public class Wdata_claim_grp_list { +package gplx.xowa.xtns.wbases.claims; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wbases.*; +public class Wbase_claim_grp_list { private Ordered_hash hash = Ordered_hash_.New(); - public void Add(Wdata_claim_grp itm) {hash.Add(itm.Id_ref(), itm);} + public void Add(Wbase_claim_grp itm) {hash.Add(itm.Id_ref(), itm);} public int Len() {return hash.Count();} - public Wdata_claim_grp Get_at(int i) {return (Wdata_claim_grp)hash.Get_at(i);} + public Wbase_claim_grp Get_at(int i) {return (Wbase_claim_grp)hash.Get_at(i);} } diff --git a/400_xowa/src/gplx/xowa/xtns/wbases/claims/Wbase_claim_visitor.java b/400_xowa/src/gplx/xowa/xtns/wbases/claims/Wbase_claim_visitor.java new file mode 100644 index 000000000..45ad13d9a --- /dev/null +++ b/400_xowa/src/gplx/xowa/xtns/wbases/claims/Wbase_claim_visitor.java @@ -0,0 +1,28 @@ +/* +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.xtns.wbases.claims; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wbases.*; +import gplx.xowa.xtns.wbases.claims.itms.*; +public interface Wbase_claim_visitor { + void Visit_str (Wbase_claim_string itm); + void Visit_entity (Wbase_claim_entity itm); + void Visit_monolingualtext (Wbase_claim_monolingualtext itm); + void Visit_quantity (Wbase_claim_quantity itm); + void Visit_time (Wbase_claim_time itm); + void Visit_globecoordinate (Wbase_claim_globecoordinate itm); + void Visit_system (Wbase_claim_value itm); +} diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_references_grp.java b/400_xowa/src/gplx/xowa/xtns/wbases/claims/Wbase_references_grp.java similarity index 72% rename from 400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_references_grp.java rename to 400_xowa/src/gplx/xowa/xtns/wbases/claims/Wbase_references_grp.java index 85adbfd8e..85e2a62a6 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_references_grp.java +++ b/400_xowa/src/gplx/xowa/xtns/wbases/claims/Wbase_references_grp.java @@ -15,9 +15,9 @@ 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.xtns.wdatas.core; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; -public class Wdata_references_grp { - public Wdata_references_grp(Wdata_claim_grp_list references, int[] references_order) {this.references = references; this.references_order = references_order;} - public Wdata_claim_grp_list References() {return references;} private Wdata_claim_grp_list references; +package gplx.xowa.xtns.wbases.claims; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wbases.*; +public class Wbase_references_grp { + public Wbase_references_grp(Wbase_claim_grp_list references, int[] references_order) {this.references = references; this.references_order = references_order;} + public Wbase_claim_grp_list References() {return references;} private Wbase_claim_grp_list references; public int[] References_order() {return references_order;} private int[] references_order; } diff --git a/400_xowa/src/gplx/xowa/xtns/wbases/claims/enums/Wbase_claim_entity_type_.java b/400_xowa/src/gplx/xowa/xtns/wbases/claims/enums/Wbase_claim_entity_type_.java new file mode 100644 index 000000000..988084502 --- /dev/null +++ b/400_xowa/src/gplx/xowa/xtns/wbases/claims/enums/Wbase_claim_entity_type_.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.xtns.wbases.claims.enums; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wbases.*; import gplx.xowa.xtns.wbases.claims.*; +public class Wbase_claim_entity_type_ { + public static final byte + Tid__item = 0 + , Tid__property = 1 + ; + private static final int Ary__len = 2; + private static final Wbase_claim_enum[] Ary = new Wbase_claim_enum[Ary__len]; + private static final Hash_adp_bry hash_by_bry = Hash_adp_bry.cs(); + public static final Wbase_claim_enum + Itm__item = New(Tid__item , "item") + , Itm__property = New(Tid__property , "property") + ; + private static Wbase_claim_enum New(byte tid, String key) { + Wbase_claim_enum rv = new Wbase_claim_enum(tid, key); + hash_by_bry.Add(rv.Key_bry(), rv); + Ary[tid] = rv; + return rv; + } + + public static String To_str_or_fail(byte tid) {return Ary[tid].Key_str();} + public static byte[] To_bry_or_fail(byte tid) {return Ary[tid].Key_bry();} + public static byte To_tid_or_fail(byte[] bry) {return ((Wbase_claim_enum)hash_by_bry.Get_by_or_fail(bry)).Tid();} +} \ No newline at end of file diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_claim_visitor.java b/400_xowa/src/gplx/xowa/xtns/wbases/claims/enums/Wbase_claim_enum.java similarity index 55% rename from 400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_claim_visitor.java rename to 400_xowa/src/gplx/xowa/xtns/wbases/claims/enums/Wbase_claim_enum.java index e2dbbd9a4..59afcdb32 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_claim_visitor.java +++ b/400_xowa/src/gplx/xowa/xtns/wbases/claims/enums/Wbase_claim_enum.java @@ -15,13 +15,14 @@ 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.xtns.wdatas.core; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; -public interface Wdata_claim_visitor { - void Visit_str(Wdata_claim_itm_str itm); - void Visit_entity(Wdata_claim_itm_entity itm); - void Visit_monolingualtext(Wdata_claim_itm_monolingualtext itm); - void Visit_quantity(Wdata_claim_itm_quantity itm); - void Visit_time(Wdata_claim_itm_time itm); - void Visit_globecoordinate(Wdata_claim_itm_globecoordinate itm); - void Visit_system(Wdata_claim_itm_system itm); -} +package gplx.xowa.xtns.wbases.claims.enums; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wbases.*; import gplx.xowa.xtns.wbases.claims.*; +public class Wbase_claim_enum { + public Wbase_claim_enum(byte tid, String key_str) { + this.tid = tid; + this.key_str = key_str; + this.key_bry = Bry_.new_u8(key_str); + } + public byte Tid() {return tid;} private final byte tid; + public String Key_str() {return key_str;} private final String key_str; + public byte[] Key_bry() {return key_bry;} private final byte[] key_bry; +} \ No newline at end of file diff --git a/400_xowa/src/gplx/xowa/xtns/wbases/claims/enums/Wbase_claim_enum_.java b/400_xowa/src/gplx/xowa/xtns/wbases/claims/enums/Wbase_claim_enum_.java new file mode 100644 index 000000000..57b8b3a52 --- /dev/null +++ b/400_xowa/src/gplx/xowa/xtns/wbases/claims/enums/Wbase_claim_enum_.java @@ -0,0 +1,37 @@ +/* +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.xtns.wbases.claims.enums; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wbases.*; import gplx.xowa.xtns.wbases.claims.*; +public class Wbase_claim_enum_ { + public static byte To_tid_or_invalid(Hash_adp hash, byte[] url, String key) { + Object rv_obj = hash.Get_by(key); + if (rv_obj == null) { + Gfo_usr_dlg_.Instance.Warn_many("", "", "unknown enum key for wikibase; url=~{0} key=~{1}", url, key); + return Tid__invalid; + } + return ((Wbase_claim_enum)rv_obj).Tid(); + } + public static byte To_tid_or_invalid(Hash_adp_bry hash, byte[] url, byte[] key) { + Object rv_obj = hash.Get_by_bry(key); + if (rv_obj == null) { + Gfo_usr_dlg_.Instance.Warn_many("", "", "unknown enum key for wikibase; url=~{0} key=~{1}", url, key); + return Tid__invalid; + } + return ((Wbase_claim_enum)rv_obj).Tid(); + } + public static final byte Tid__invalid = Byte_.Max_value_127; +} \ No newline at end of file diff --git a/400_xowa/src/gplx/xowa/xtns/wbases/claims/enums/Wbase_claim_rank_.java b/400_xowa/src/gplx/xowa/xtns/wbases/claims/enums/Wbase_claim_rank_.java new file mode 100644 index 000000000..1e7b16c23 --- /dev/null +++ b/400_xowa/src/gplx/xowa/xtns/wbases/claims/enums/Wbase_claim_rank_.java @@ -0,0 +1,46 @@ +/* +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.xtns.wbases.claims.enums; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wbases.*; import gplx.xowa.xtns.wbases.claims.*; +public class Wbase_claim_rank_ { + public static final byte // SERIALIZED.MW + Tid__preferred = 2 + , Tid__normal = 1 + , Tid__deprecated = 0 + , Tid__unknown = 3 + ; + private static final int Ary__len = 4; + private static final Wbase_claim_enum[] Ary = new Wbase_claim_enum[Ary__len]; + private static final Hash_adp_bry hash_by_bry = Hash_adp_bry.cs(); + public static final Wbase_claim_enum + Itm__preferred = New(Tid__preferred , "preferred") + , Itm__normal = New(Tid__normal , "normal") + , Itm__deprecated = New(Tid__deprecated , "deprecated") + , Itm__unknown = New(Tid__unknown , "unknown") + ; + private static Wbase_claim_enum New(byte tid, String key) { + Wbase_claim_enum rv = new Wbase_claim_enum(tid, key); + hash_by_bry.Add(rv.Key_bry(), rv); + Ary[tid] = rv; + return rv; + } + public static byte To_tid_or_unknown(byte[] src) { + Object obj = hash_by_bry.Get_by_bry(src); + return obj == null ? Tid__unknown : ((Wbase_claim_enum)obj).Tid(); + } + public static String To_str_or_fail(byte tid) {return Ary[tid].Key_str();} +} \ No newline at end of file diff --git a/400_xowa/src/gplx/xowa/xtns/wbases/claims/enums/Wbase_claim_type.java b/400_xowa/src/gplx/xowa/xtns/wbases/claims/enums/Wbase_claim_type.java new file mode 100644 index 000000000..1d28ba541 --- /dev/null +++ b/400_xowa/src/gplx/xowa/xtns/wbases/claims/enums/Wbase_claim_type.java @@ -0,0 +1,30 @@ +/* +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.xtns.wbases.claims.enums; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wbases.*; import gplx.xowa.xtns.wbases.claims.*; +public class Wbase_claim_type { + public Wbase_claim_type(byte tid, String key_str, String key_for_scrib) { + this.tid = tid; + this.key_str = key_str; + this.key_bry = Bry_.new_u8(key_str); + this.key_for_scrib = key_for_scrib; + } + public byte Tid() {return tid;} private final byte tid; + public String Key_str() {return key_str;} private final String key_str; + public byte[] Key_bry() {return key_bry;} private final byte[] key_bry; + public String Key_for_scrib() {return key_for_scrib;} private final String key_for_scrib; +} diff --git a/400_xowa/src/gplx/xowa/xtns/wbases/claims/enums/Wbase_claim_type_.java b/400_xowa/src/gplx/xowa/xtns/wbases/claims/enums/Wbase_claim_type_.java new file mode 100644 index 000000000..dc4a2e96a --- /dev/null +++ b/400_xowa/src/gplx/xowa/xtns/wbases/claims/enums/Wbase_claim_type_.java @@ -0,0 +1,64 @@ +/* +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.xtns.wbases.claims.enums; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wbases.*; import gplx.xowa.xtns.wbases.claims.*; +public class Wbase_claim_type_ { + public static final byte // NOT_SERIALIZED + Tid__unknown = 0 + , Tid__value = 1 + , Tid__bad = 1 + , Tid__string = 2 + , Tid__quantity = 3 + , Tid__time = 4 + , Tid__globecoordinate = 5 + , Tid__monolingualtext = 6 + , Tid__entity = 7 + ; + private static final int Ary__len = 13; + private static final Wbase_claim_type[] Ary = new Wbase_claim_type[Ary__len]; + private static final Hash_adp_bry hash_by_bry = Hash_adp_bry.cs(); + private static final Hash_adp hash_by_str = Hash_adp_.New(); + public static final Wbase_claim_type + Itm__unknown = New(Tid__unknown , "unknown") + , Itm__bad = New(Tid__bad , "bad") // NOTE: wikidata identifies several entries as "bad"; Q1615351|'s-Graveland, Q107538|Baco; DATE:2013-10-20 + , Itm__string = New(Tid__string , "string") // EX:wd:Property:P1030 + , Itm__quantity = New(Tid__quantity , "quantity") + , Itm__time = New(Tid__time , "time") + , Itm__globecoordinate = New(Tid__globecoordinate , "globecoordinate" , "globe-coordinate") + , Itm__monolingualtext = New(Tid__monolingualtext , "monolingualtext") + , Itm__entity = New(Tid__entity , "wikibase-entityid" , "wikibase-item") + ; + private static Wbase_claim_type New(byte tid, String key) {return New(tid, key, key);} + private static Wbase_claim_type New(byte tid, String key, String scrib) { + Wbase_claim_type rv = new Wbase_claim_type(tid, key, scrib); + hash_by_bry.Add(rv.Key_bry(), rv); + hash_by_str.Add(rv.Key_str(), rv); + Ary[tid] = rv; + return rv; + } + public static String To_key_or_unknown(byte tid) {return tid < Ary__len ? Ary[tid].Key_str() : Itm__unknown.Key_str();} + public static String To_scrib_or_unknown(byte tid) {return tid < Ary__len ? Ary[tid].Key_for_scrib() : Itm__unknown.Key_str();} + public static byte To_tid_or_unknown(byte[] src) {return To_tid_or_unknown(src, 0, src.length);} + public static byte To_tid_or_unknown(byte[] src, int bgn, int end) { + Object obj = hash_by_bry.Get_by_mid(src, bgn, end); + return obj == null ? Tid__unknown : ((Wbase_claim_type)obj).Tid(); + } + public static byte To_tid_or_unknown(String src) { + Object obj = hash_by_str.Get_by(src); + return obj == null ? Tid__unknown : ((Wbase_claim_type)obj).Tid(); + } +} \ No newline at end of file diff --git a/400_xowa/src/gplx/xowa/xtns/wbases/claims/enums/Wbase_claim_value_type_.java b/400_xowa/src/gplx/xowa/xtns/wbases/claims/enums/Wbase_claim_value_type_.java new file mode 100644 index 000000000..d9cfce1fe --- /dev/null +++ b/400_xowa/src/gplx/xowa/xtns/wbases/claims/enums/Wbase_claim_value_type_.java @@ -0,0 +1,43 @@ +/* +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.xtns.wbases.claims.enums; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wbases.*; import gplx.xowa.xtns.wbases.claims.*; +public class Wbase_claim_value_type_ { + public static final byte // SERIALIZED.MW + Tid__novalue = 0 + , Tid__value = 1 + , Tid__somevalue = 2 + ; + private static final int Ary__len = 3; + private static final Wbase_claim_enum[] Ary = new Wbase_claim_enum[Ary__len]; + private static final Hash_adp_bry hash_by_bry = Hash_adp_bry.cs(); + public static final Wbase_claim_enum + Itm__novalue = New(Tid__novalue , "novalue") + , Itm__value = New(Tid__value , "value") + , Itm__somevalue = New(Tid__somevalue , "somevalue") + ; + private static Wbase_claim_enum New(byte tid, String key) { + Wbase_claim_enum rv = new Wbase_claim_enum(tid, key); + hash_by_bry.Add(rv.Key_bry(), rv); + Ary[tid] = rv; + return rv; + } + + public static String To_str_or_fail(byte tid) {return Ary[tid].Key_str();} + public static byte[] To_bry_or_fail(byte tid) {return Ary[tid].Key_bry();} + public static byte To_tid_or_fail(byte[] bry) {return ((Wbase_claim_enum)hash_by_bry.Get_by_or_fail(bry)).Tid();} +} \ No newline at end of file diff --git a/400_xowa/src/gplx/xowa/xtns/wbases/claims/itms/Wbase_claim_base.java b/400_xowa/src/gplx/xowa/xtns/wbases/claims/itms/Wbase_claim_base.java new file mode 100644 index 000000000..06e292939 --- /dev/null +++ b/400_xowa/src/gplx/xowa/xtns/wbases/claims/itms/Wbase_claim_base.java @@ -0,0 +1,46 @@ +/* +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.xtns.wbases.claims.itms; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wbases.*; import gplx.xowa.xtns.wbases.claims.*; +import gplx.xowa.xtns.wbases.claims.enums.*; +public abstract class Wbase_claim_base implements CompareAble { + public Wbase_claim_base(int pid, byte snak_tid) { + this.pid = pid; + this.snak_tid = snak_tid; + } + public int Pid() {return pid;} private final int pid; + public byte Snak_tid() {return snak_tid;} private final byte snak_tid; + public byte Rank_tid() {return rank_tid;} private byte rank_tid = Wbase_claim_rank_.Tid__normal; // TEST: default to normal for tests + public String Prop_type() {return Prop_type_statement;} private static final String Prop_type_statement = "statement"; + public byte[] Wguid() {return wguid;} private byte[] wguid; + public Wbase_claim_grp_list Qualifiers() {return qualifiers;} private Wbase_claim_grp_list qualifiers; + public int[] Qualifiers_order() {return qualifiers_order;} private int[] qualifiers_order; + public Wbase_references_grp[] References() {return references;} private Wbase_references_grp[] references; + public abstract byte Val_tid(); + public abstract void Welcome(Wbase_claim_visitor visitor); + + public void Rank_tid_(byte v) {this.rank_tid = v;} + public void Wguid_(byte[] v) {this.wguid = v;} + public Wbase_claim_base Qualifiers_(Wbase_claim_grp_list v) {qualifiers = v; return this;} + public void Qualifiers_order_(int[] v) {qualifiers_order = v;} + public void References_(Wbase_references_grp[] v) {references = v;} + + public int compareTo(Object obj) { + Wbase_claim_base comp = (Wbase_claim_base)obj; + return Int_.Compare(pid, comp.pid); + } +} diff --git a/400_xowa/src/gplx/xowa/xtns/wbases/claims/itms/Wbase_claim_entity.java b/400_xowa/src/gplx/xowa/xtns/wbases/claims/itms/Wbase_claim_entity.java new file mode 100644 index 000000000..16a3afcb1 --- /dev/null +++ b/400_xowa/src/gplx/xowa/xtns/wbases/claims/itms/Wbase_claim_entity.java @@ -0,0 +1,50 @@ +/* +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.xtns.wbases.claims.itms; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wbases.*; import gplx.xowa.xtns.wbases.claims.*; +import gplx.xowa.xtns.wbases.claims.enums.*; +public class Wbase_claim_entity extends Wbase_claim_base { + public Wbase_claim_entity(int pid, byte snak_tid, byte entity_tid, byte[] entity_id_bry) {super(pid, snak_tid); + this.entity_tid = entity_tid; + this.entity_id_bry = entity_id_bry; + this.entity_id = Bry_.To_int(entity_id_bry); + } + @Override public byte Val_tid() {return Wbase_claim_type_.Tid__entity;} + public int Entity_id() {return entity_id;} private final int entity_id; + public byte[] Entity_id_bry() {return entity_id_bry;} private final byte[] entity_id_bry; + public byte Entity_tid() {return entity_tid;} private final byte entity_tid; + public boolean Entity_tid_is_qid() {return entity_tid == Wbase_claim_entity_type_.Tid__item;} + public String Entity_tid_str() {return Wbase_claim_entity_type_.To_str_or_fail(entity_tid);} + public byte[] Entity_tid_bry() {return Wbase_claim_entity_type_.To_bry_or_fail(entity_tid);} + + public byte[] Page_ttl_db() { + return entity_tid == Wbase_claim_entity_type_.Tid__item + ? Bry_.Add(Wdata_wiki_mgr.Ttl_prefix_qid_bry_db, entity_id_bry) + : Bry_.Add(Wdata_wiki_mgr.Ttl_prefix_pid_bry, entity_id_bry) + ; + } + public byte[] Page_ttl_gui() { + return entity_tid == Wbase_claim_entity_type_.Tid__item + ? Bry_.Add(Wdata_wiki_mgr.Ttl_prefix_qid_bry_gui, entity_id_bry) + : Bry_.Add(Wdata_wiki_mgr.Ttl_prefix_pid_bry, entity_id_bry) + ; + } + @Override public void Welcome(Wbase_claim_visitor visitor) {visitor.Visit_entity(this);} + @Override public String toString() {// TEST: + return String_.Concat_with_str("|", Wbase_claim_value_type_.To_str_or_fail(this.Snak_tid()), Wbase_claim_type_.To_key_or_unknown(this.Val_tid()), this.Entity_tid_str(), Int_.To_str(entity_id)); + } +} diff --git a/400_xowa/src/gplx/xowa/xtns/wbases/claims/itms/Wbase_claim_entity_.java b/400_xowa/src/gplx/xowa/xtns/wbases/claims/itms/Wbase_claim_entity_.java new file mode 100644 index 000000000..4ac125567 --- /dev/null +++ b/400_xowa/src/gplx/xowa/xtns/wbases/claims/itms/Wbase_claim_entity_.java @@ -0,0 +1,36 @@ +/* +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.xtns.wbases.claims.itms; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wbases.*; import gplx.xowa.xtns.wbases.claims.*; +import gplx.xowa.xtns.wbases.claims.enums.*; +public class Wbase_claim_entity_ { + public static final byte + Tid__entity_type = 0 + , Tid__numeric_id = 1 + ; + private static final Hash_adp_bry hash_by_bry = Hash_adp_bry.cs(); + public static final Wbase_claim_enum + Itm__entity_type = New(Tid__entity_type , "entity-type") + , Itm__numeric_id = New(Tid__numeric_id , "numeric-id") + ; + private static Wbase_claim_enum New(byte tid, String key) { + Wbase_claim_enum rv = new Wbase_claim_enum(tid, key); + hash_by_bry.Add(rv.Key_bry(), rv); + return rv; + } + public static byte To_tid_or_invalid(byte[] page_url, byte[] key) {return Wbase_claim_enum_.To_tid_or_invalid(hash_by_bry, page_url, key);} +} diff --git a/400_xowa/src/gplx/xowa/xtns/wbases/claims/itms/Wbase_claim_globecoordinate.java b/400_xowa/src/gplx/xowa/xtns/wbases/claims/itms/Wbase_claim_globecoordinate.java new file mode 100644 index 000000000..2b6c676e5 --- /dev/null +++ b/400_xowa/src/gplx/xowa/xtns/wbases/claims/itms/Wbase_claim_globecoordinate.java @@ -0,0 +1,43 @@ +/* +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.xtns.wbases.claims.itms; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wbases.*; import gplx.xowa.xtns.wbases.claims.*; +import gplx.xowa.xtns.wbases.claims.enums.*; +public class Wbase_claim_globecoordinate extends Wbase_claim_base { + public Wbase_claim_globecoordinate(int pid, byte snak_tid, byte[] lat, byte[] lng, byte[] alt, byte[] prc, byte[] glb) {super(pid, snak_tid); + this.lat = lat; this.lng = lng; this.alt = alt; this.prc = prc; this.glb = glb; + } + @Override public byte Val_tid() {return Wbase_claim_type_.Tid__globecoordinate;} + public byte[] Lat() {return lat;} private final byte[] lat; + public byte[] Lng() {return lng;} private final byte[] lng; + public byte[] Alt() {return alt;} private final byte[] alt; + public byte[] Prc() {return prc;} private final byte[] prc; + public byte[] Glb() {return glb;} private final byte[] glb; + public byte[] Glb_ttl() {return glb_ttl;} private byte[] glb_ttl; + + public void Glb_ttl_(byte[] v) {glb_ttl = v;} + public Decimal_adp Prc_as_num() { + if (prc_as_num == null) + prc_as_num = Bry_.Eq(prc, Object_.Bry__null) ? Decimal_adp_.One : Decimal_adp_.parse(String_.new_a7(prc)); + return prc_as_num; + } private Decimal_adp prc_as_num; + + @Override public void Welcome(Wbase_claim_visitor visitor) {visitor.Visit_globecoordinate(this);} + @Override public String toString() {// TEST: + return String_.Concat_with_str("|", Wbase_claim_value_type_.To_str_or_fail(this.Snak_tid()), Wbase_claim_type_.To_key_or_unknown(this.Val_tid()), String_.new_u8(lat), String_.new_u8(lng), String_.new_u8(alt), String_.new_u8(prc), String_.new_u8(glb)); + } +} diff --git a/400_xowa/src/gplx/xowa/xtns/wbases/claims/itms/Wbase_claim_globecoordinate_.java b/400_xowa/src/gplx/xowa/xtns/wbases/claims/itms/Wbase_claim_globecoordinate_.java new file mode 100644 index 000000000..67af2493a --- /dev/null +++ b/400_xowa/src/gplx/xowa/xtns/wbases/claims/itms/Wbase_claim_globecoordinate_.java @@ -0,0 +1,58 @@ +/* +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.xtns.wbases.claims.itms; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wbases.*; import gplx.xowa.xtns.wbases.claims.*; +import gplx.xowa.xtns.wbases.claims.enums.*; +public class Wbase_claim_globecoordinate_ { + public static final byte + Tid__latitude = 0 + , Tid__longitude = 1 + , Tid__altitude = 2 + , Tid__precision = 3 + , Tid__globe = 4 + ; + private static final int Ary__len = 5; + private static final Wbase_claim_enum[] Ary = new Wbase_claim_enum[Ary__len]; + private static final Hash_adp_bry hash_by_bry = Hash_adp_bry.cs(); + private static final Hash_adp hash_by_str = Hash_adp_.New(); + public static final Wbase_claim_enum + Itm__latitude = New(Tid__latitude , "latitude") + , Itm__longitude = New(Tid__longitude , "longitude") + , Itm__altitude = New(Tid__altitude , "altitude") + , Itm__precision = New(Tid__precision , "precision") + , Itm__globe = New(Tid__globe , "globe") + ; + private static Wbase_claim_enum New(byte tid, String key) { + Wbase_claim_enum rv = new Wbase_claim_enum(tid, key); + hash_by_bry.Add(rv.Key_bry(), rv); + hash_by_str.Add(rv.Key_str(), rv); + Ary[tid] = rv; + return rv; + } + + public static String To_str_or_invalid(byte tid) {return Ary[tid].Key_str();} + public static byte[] To_bry_or_fail(byte tid) {return Ary[tid].Key_bry();} + public static byte To_tid_or_invalid(byte[] page_url, String key) {return Wbase_claim_enum_.To_tid_or_invalid(hash_by_str, page_url, key);} + public static byte To_tid_or_invalid(byte[] page_url, byte[] key) {return Wbase_claim_enum_.To_tid_or_invalid(hash_by_bry, page_url, key);} + + public static String + Val_globe_dflt_str = "http://www.wikidata.org/entity/Q2" + ; + public static byte[] + Val_globe_dflt_bry = Bry_.new_a7(Val_globe_dflt_str) + ; +} diff --git a/400_xowa/src/gplx/xowa/xtns/wbases/claims/itms/Wbase_claim_monolingualtext.java b/400_xowa/src/gplx/xowa/xtns/wbases/claims/itms/Wbase_claim_monolingualtext.java new file mode 100644 index 000000000..6adc4e1f1 --- /dev/null +++ b/400_xowa/src/gplx/xowa/xtns/wbases/claims/itms/Wbase_claim_monolingualtext.java @@ -0,0 +1,32 @@ +/* +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.xtns.wbases.claims.itms; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wbases.*; import gplx.xowa.xtns.wbases.claims.*; +import gplx.xowa.xtns.wbases.claims.enums.*; +public class Wbase_claim_monolingualtext extends Wbase_claim_base { + public Wbase_claim_monolingualtext(int pid, byte snak_tid, byte[] lang, byte[] text) {super(pid, snak_tid); + this.lang = lang; this.text = text; + } + @Override public byte Val_tid() {return Wbase_claim_type_.Tid__monolingualtext;} + public byte[] Lang() {return lang;} private final byte[] lang; + public byte[] Text() {return text;} private final byte[] text; + + @Override public void Welcome(Wbase_claim_visitor visitor) {visitor.Visit_monolingualtext(this);} + @Override public String toString() {// TEST: + return String_.Concat_with_str("|", Wbase_claim_value_type_.To_str_or_fail(this.Snak_tid()), Wbase_claim_type_.To_key_or_unknown(this.Val_tid()), String_.new_u8(lang), String_.new_u8(text)); + } +} diff --git a/400_xowa/src/gplx/xowa/xtns/wbases/claims/itms/Wbase_claim_monolingualtext_.java b/400_xowa/src/gplx/xowa/xtns/wbases/claims/itms/Wbase_claim_monolingualtext_.java new file mode 100644 index 000000000..b50a7c95f --- /dev/null +++ b/400_xowa/src/gplx/xowa/xtns/wbases/claims/itms/Wbase_claim_monolingualtext_.java @@ -0,0 +1,42 @@ +/* +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.xtns.wbases.claims.itms; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wbases.*; import gplx.xowa.xtns.wbases.claims.*; +import gplx.xowa.xtns.wbases.claims.enums.*; +public class Wbase_claim_monolingualtext_ { + public static final byte + Tid__text = 0 + , Tid__language = 1 + ; + private static final int Ary__len = 2; + private static final Wbase_claim_enum[] Ary = new Wbase_claim_enum[Ary__len]; + private static final Hash_adp_bry hash_by_bry = Hash_adp_bry.cs(); + public static final Wbase_claim_enum + Itm__text = New(Tid__text , "text") + , Itm__language = New(Tid__language , "language") + ; + private static Wbase_claim_enum New(byte tid, String key) { + Wbase_claim_enum rv = new Wbase_claim_enum(tid, key); + hash_by_bry.Add(rv.Key_bry(), rv); + Ary[tid] = rv; + return rv; + } + + public static String To_str_or_invalid(byte tid) {return Ary[tid].Key_str();} + public static byte[] To_bry_or_fail(byte tid) {return Ary[tid].Key_bry();} + public static byte To_tid_or_invalid(byte[] page_url, byte[] key) {return Wbase_claim_enum_.To_tid_or_invalid(hash_by_bry, page_url, key);} +} diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_claim_itm_quantity.java b/400_xowa/src/gplx/xowa/xtns/wbases/claims/itms/Wbase_claim_quantity.java similarity index 59% rename from 400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_claim_itm_quantity.java rename to 400_xowa/src/gplx/xowa/xtns/wbases/claims/itms/Wbase_claim_quantity.java index 78b06fe42..4cc1bb7dd 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_claim_itm_quantity.java +++ b/400_xowa/src/gplx/xowa/xtns/wbases/claims/itms/Wbase_claim_quantity.java @@ -15,38 +15,40 @@ 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.xtns.wdatas.core; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; -import gplx.xowa.xtns.wdatas.hwtrs.*; -public class Wdata_claim_itm_quantity extends Wdata_claim_itm_core { public Wdata_claim_itm_quantity(int pid, byte snak_tid, byte[] amount, byte[] unit, byte[] ubound, byte[] lbound) { - this.Ctor(pid, snak_tid); +package gplx.xowa.xtns.wbases.claims.itms; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wbases.*; import gplx.xowa.xtns.wbases.claims.*; +import gplx.xowa.xtns.wbases.claims.enums.*; +public class Wbase_claim_quantity extends Wbase_claim_base { + public Wbase_claim_quantity(int pid, byte snak_tid, byte[] amount, byte[] unit, byte[] ubound, byte[] lbound) {super(pid, snak_tid); this.amount = amount; this.unit = unit; this.ubound = ubound; this.lbound = lbound; } - @Override public byte Val_tid() {return Wdata_dict_val_tid.Tid_quantity;} - public byte[] Amount() {return amount;} private final byte[] amount; + @Override public byte Val_tid() {return Wbase_claim_type_.Tid__quantity;} + public byte[] Amount() {return amount;} private final byte[] amount; + public byte[] Ubound() {return ubound;} private final byte[] ubound; + public byte[] Lbound() {return lbound;} private final byte[] lbound; + public byte[] Unit() {return unit;} private final byte[] unit; + public Decimal_adp Amount_as_num() { if (amount_as_num == null) amount_as_num = To_decimal("amount", amount); return amount_as_num; } private Decimal_adp amount_as_num; - public byte[] Ubound() {return ubound;} private final byte[] ubound; public Decimal_adp Ubound_as_num() { if (ubound_as_num == null) ubound_as_num = To_decimal("upper", ubound); return ubound_as_num; } private Decimal_adp ubound_as_num; - public byte[] Lbound() {return lbound;} private final byte[] lbound; public Decimal_adp Lbound_as_num() { if (lbound_as_num == null) lbound_as_num = To_decimal("lower", lbound); return lbound_as_num; } private Decimal_adp lbound_as_num; - public byte[] Unit() {return unit;} private final byte[] unit; private Decimal_adp To_decimal(String type, byte[] v) { if (v == null) throw Err_.new_("wbase", "value is null", "type", type); int len = v.length; if (len == 0) throw Err_.new_("wbase", "value is empty", "type", type); if (v[0] == Byte_ascii.Plus) v = Bry_.Mid(v, 1); return Decimal_adp_.parse(String_.new_a7(v)); } - @Override public void Welcome(Wdata_claim_visitor visitor) {visitor.Visit_quantity(this);} + + @Override public void Welcome(Wbase_claim_visitor visitor) {visitor.Visit_quantity(this);} @Override public String toString() {// TEST: - return String_.Concat_with_str("|", Wdata_dict_snak_tid.Xto_str(this.Snak_tid()), Wdata_dict_val_tid.Xto_str(this.Val_tid()), String_.new_u8(amount), String_.new_u8(unit), String_.new_u8(ubound), String_.new_u8(lbound)); + return String_.Concat_with_str("|", Wbase_claim_value_type_.To_str_or_fail(this.Snak_tid()), Wbase_claim_type_.To_key_or_unknown(this.Val_tid()), String_.new_u8(amount), String_.new_u8(unit), String_.new_u8(ubound), String_.new_u8(lbound)); } - public static final byte[] Unit_1 = Bry_.new_a7("1"); + public static final byte[] Unit_1 = Bry_.new_a7("1"); } diff --git a/400_xowa/src/gplx/xowa/xtns/wbases/claims/itms/Wbase_claim_quantity_.java b/400_xowa/src/gplx/xowa/xtns/wbases/claims/itms/Wbase_claim_quantity_.java new file mode 100644 index 000000000..4cec8245f --- /dev/null +++ b/400_xowa/src/gplx/xowa/xtns/wbases/claims/itms/Wbase_claim_quantity_.java @@ -0,0 +1,49 @@ +/* +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.xtns.wbases.claims.itms; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wbases.*; import gplx.xowa.xtns.wbases.claims.*; +import gplx.xowa.xtns.wbases.claims.enums.*; +public class Wbase_claim_quantity_ { + public static final byte + Tid__amount = 0 + , Tid__unit = 1 + , Tid__upperbound = 2 + , Tid__lowerbound = 3 + ; + private static final int Ary__len = 4; + private static final Wbase_claim_enum[] Ary = new Wbase_claim_enum[Ary__len]; + private static final Hash_adp_bry hash_by_bry = Hash_adp_bry.cs(); + private static final Hash_adp hash_by_str = Hash_adp_.New(); + public static final Wbase_claim_enum + Itm__amount = New(Tid__amount , "amount") + , Itm__unit = New(Tid__unit , "unit") + , Itm__upperbound = New(Tid__upperbound , "upperBound") + , Itm__lowerbound = New(Tid__lowerbound , "lowerBound") + ; + private static Wbase_claim_enum New(byte tid, String key) { + Wbase_claim_enum rv = new Wbase_claim_enum(tid, key); + hash_by_bry.Add(rv.Key_bry(), rv); + hash_by_str.Add(rv.Key_str(), rv); + Ary[tid] = rv; + return rv; + } + + public static String To_str_or_invalid(byte tid) {return Ary[tid].Key_str();} + public static byte[] To_bry_or_fail(byte tid) {return Ary[tid].Key_bry();} + public static byte To_tid_or_invalid(byte[] page_url, String key) {return Wbase_claim_enum_.To_tid_or_invalid(hash_by_str, page_url, key);} + public static byte To_tid_or_invalid(byte[] page_url, byte[] key) {return Wbase_claim_enum_.To_tid_or_invalid(hash_by_bry, page_url, key);} +} diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_claim_itm_str.java b/400_xowa/src/gplx/xowa/xtns/wbases/claims/itms/Wbase_claim_string.java similarity index 52% rename from 400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_claim_itm_str.java rename to 400_xowa/src/gplx/xowa/xtns/wbases/claims/itms/Wbase_claim_string.java index 795692615..57bdbf274 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_claim_itm_str.java +++ b/400_xowa/src/gplx/xowa/xtns/wbases/claims/itms/Wbase_claim_string.java @@ -15,16 +15,17 @@ 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.xtns.wdatas.core; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; -import gplx.xowa.xtns.wdatas.hwtrs.*; -public class Wdata_claim_itm_str extends Wdata_claim_itm_core { public Wdata_claim_itm_str(int pid, byte snak_tid, byte[] val) { - this.Ctor(pid, snak_tid); +package gplx.xowa.xtns.wbases.claims.itms; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wbases.*; import gplx.xowa.xtns.wbases.claims.*; +import gplx.xowa.xtns.wbases.claims.enums.*; +public class Wbase_claim_string extends Wbase_claim_base { + public Wbase_claim_string(int pid, byte snak_tid, byte[] val) {super(pid, snak_tid); this.val = val; } - @Override public byte Val_tid() {return Wdata_dict_val_tid.Tid_string;} - public byte[] Val_str() {return val;} private final byte[] val; - @Override public void Welcome(Wdata_claim_visitor visitor) {visitor.Visit_str(this);} + @Override public byte Val_tid() {return Wbase_claim_type_.Tid__string;} + public byte[] Val_str() {return val;} private final byte[] val; + + @Override public void Welcome(Wbase_claim_visitor visitor) {visitor.Visit_str(this);} @Override public String toString() {// TEST: - return String_.Concat_with_str("|", Wdata_dict_snak_tid.Xto_str(this.Snak_tid()), Wdata_dict_val_tid.Xto_str(this.Val_tid()), String_.new_u8(val)); + return String_.Concat_with_str("|", Wbase_claim_value_type_.To_str_or_fail(this.Snak_tid()), Wbase_claim_type_.To_key_or_unknown(this.Val_tid()), String_.new_u8(val)); } } diff --git a/400_xowa/src/gplx/xowa/xtns/wbases/claims/itms/Wbase_claim_time.java b/400_xowa/src/gplx/xowa/xtns/wbases/claims/itms/Wbase_claim_time.java new file mode 100644 index 000000000..99fa9cd67 --- /dev/null +++ b/400_xowa/src/gplx/xowa/xtns/wbases/claims/itms/Wbase_claim_time.java @@ -0,0 +1,107 @@ +/* +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.xtns.wbases.claims.itms; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wbases.*; import gplx.xowa.xtns.wbases.claims.*; +import gplx.core.brys.fmtrs.*; +import gplx.xowa.xtns.wbases.claims.enums.*; import gplx.xowa.xtns.wbases.claims.itms.times.*; import gplx.xowa.xtns.wbases.hwtrs.*; +public class Wbase_claim_time extends Wbase_claim_base { + public Wbase_claim_time(int pid, byte snak_tid, byte[] time, byte[] timezone, byte[] before, byte[] after, byte[] precision, byte[] calendar) {super(pid, snak_tid); + this.time = time; this.before = before; this.after = after; this.precision = precision; this.calendar = calendar; + } + @Override public byte Val_tid() {return Wbase_claim_type_.Tid__time;} + public byte[] Time() {return time;} private final byte[] time; + public byte[] Before() {return before;} private final byte[] before; + public byte[] After() {return after;} private final byte[] after; + public byte[] Precision() {return precision;} private final byte[] precision; + public byte[] Calendar() {return calendar;} private final byte[] calendar; + public byte[] Calendar_ttl() {return calendar_ttl;} private byte[] calendar_ttl; + public boolean Calendar_is_julian() {return Bry_.Eq(calendar, Calendar_julian);} + + public void Calendar_ttl_(byte[] v) {calendar_ttl = v;} + + public Wbase_date Time_as_date() { + if (time_as_date == null) time_as_date = Wbase_date.Parse(time, this.Precision_int(), this.Before_int(), this.After_int(), this.Calendar_is_julian()); + return time_as_date; + } private Wbase_date time_as_date; + public int Precision_int() { + if (precision_int == Int_.Min_value) { + precision_int = Bry_.To_int_or(precision, -1); + if (precision_int == -1) { + precision_int = Wbase_date.Fmt_ymdhns; + Gfo_usr_dlg_.Instance.Warn_many("", "", "unknown precision: ~{0}", String_.new_u8(precision)); + } + } + return precision_int; + } private int precision_int = Int_.Min_value; + public int Before_int() { + if (before_int == Int_.Min_value) { + before_int = Bry_.To_int_or(before, -1); + if (before_int == -1) { + before_int = 0; + Gfo_usr_dlg_.Instance.Warn_many("", "", "unknown before: ~{0}", String_.new_u8(before)); + } + } + return before_int; + } private int before_int = Int_.Min_value; + public int After_int() { + if (after_int == Int_.Min_value) { + after_int = Bry_.To_int_or(after, -1); + if (after_int == -1) { + after_int = 0; + Gfo_usr_dlg_.Instance.Warn_many("", "", "unknown after: ~{0}", String_.new_u8(after)); + } + } + return after_int; + } private int after_int = Int_.Min_value; + + public void Write_to_bfr(Bry_bfr bfr, Bry_bfr tmp_time_bfr, Bry_fmtr tmp_time_fmtr, Wdata_hwtr_msgs msgs, byte[] ttl) { + try { + Wbase_date date = this.Time_as_date(); + boolean calendar_is_julian = this.Calendar_is_julian(); + byte[] calendar_display = null; + if (calendar_is_julian) { + date = Wbase_date.Xto_julian(date); + calendar_display = msgs.Time_julian(); + } + Wbase_date.Xto_str(bfr, tmp_time_fmtr, tmp_time_bfr, msgs, date); + if (calendar_display != null) + bfr.Add_byte_space().Add(calendar_display); + } catch (Exception e) { + Xoa_app_.Usr_dlg().Warn_many("", "", "failed to write time; ttl=~{0} pid=~{1} err=~{2}", ttl, this.Pid(), Err_.Message_gplx_log(e)); + } + } + public static void Write_to_bfr(Bry_bfr bfr, Bry_bfr tmp_time_bfr, Bry_fmtr tmp_time_fmtr, Wdata_hwtr_msgs msgs + , byte[] ttl, byte[] pid, Wbase_date date, boolean calendar_is_julian) { + try { + byte[] calendar_display = null; + if (calendar_is_julian) { + date = Wbase_date.Xto_julian(date); + calendar_display = msgs.Time_julian(); + } + Wbase_date.Xto_str(bfr, tmp_time_fmtr, tmp_time_bfr, msgs, date); + if (calendar_display != null) + bfr.Add_byte_space().Add(calendar_display); + } catch (Exception e) { + Xoa_app_.Usr_dlg().Warn_many("", "", "failed to write time; ttl=~{0} pid=~{1} err=~{2}", ttl, pid, Err_.Message_gplx_log(e)); + } + } + @Override public void Welcome(Wbase_claim_visitor visitor) {visitor.Visit_time(this);} + @Override public String toString() {// TEST: + return String_.Concat_with_str("|", Wbase_claim_value_type_.To_str_or_fail(this.Snak_tid()), Wbase_claim_type_.To_key_or_unknown(this.Val_tid()), String_.new_u8(time), String_.new_u8(before), String_.new_u8(after), String_.new_u8(precision), String_.new_u8(calendar)); + } + public static final byte[] Calendar_julian = Bry_.new_a7("http://www.wikidata.org/entity/Q1985786"); +} diff --git a/400_xowa/src/gplx/xowa/xtns/wbases/claims/itms/Wbase_claim_time_.java b/400_xowa/src/gplx/xowa/xtns/wbases/claims/itms/Wbase_claim_time_.java new file mode 100644 index 000000000..157616764 --- /dev/null +++ b/400_xowa/src/gplx/xowa/xtns/wbases/claims/itms/Wbase_claim_time_.java @@ -0,0 +1,82 @@ +/* +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.xtns.wbases.claims.itms; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wbases.*; import gplx.xowa.xtns.wbases.claims.*; +import gplx.xowa.xtns.wbases.claims.enums.*; import gplx.xowa.xtns.wbases.claims.itms.times.*; +public class Wbase_claim_time_ { + public static final byte + Tid__time = 0 + , Tid__timezone = 1 + , Tid__before = 2 + , Tid__after = 3 + , Tid__precision = 4 + , Tid__calendarmodel = 5 + ; + private static final int Ary__len = 6; + private static final Wbase_claim_enum[] Ary = new Wbase_claim_enum[Ary__len]; + private static final Hash_adp_bry hash_by_bry = Hash_adp_bry.cs(); + private static final Hash_adp hash_by_str = Hash_adp_.New(); + public static final Wbase_claim_enum + Itm__time = New(Tid__time , "time") + , Itm__timezone = New(Tid__timezone , "timezone") + , Itm__before = New(Tid__before , "before") + , Itm__after = New(Tid__after , "after") + , Itm__precision = New(Tid__precision , "precision") + , Itm__calendarmodel = New(Tid__calendarmodel , "calendarmodel") + ; + private static Wbase_claim_enum New(byte tid, String key) { + Wbase_claim_enum rv = new Wbase_claim_enum(tid, key); + hash_by_bry.Add(rv.Key_bry(), rv); + hash_by_str.Add(rv.Key_str(), rv); + Ary[tid] = rv; + return rv; + } + + public static String To_str_or_invalid(byte tid) {return Ary[tid].Key_str();} + public static byte[] To_bry_or_fail(byte tid) {return Ary[tid].Key_bry();} + public static byte To_tid_or_invalid(byte[] page_url, String key) {return Wbase_claim_enum_.To_tid_or_invalid(hash_by_str, page_url, key);} + public static byte To_tid_or_invalid(byte[] page_url, byte[] key) {return Wbase_claim_enum_.To_tid_or_invalid(hash_by_bry, page_url, key);} + + public static final Wbase_data_itm + Dflt__precision = Wbase_data_itm.New_int(11) + , Dflt__before = Wbase_data_itm.New_int(0) + , Dflt__after = Wbase_data_itm.New_int(0) + , Dflt__timezone = Wbase_data_itm.New_int(0) + , Dflt__calendarmodel = Wbase_data_itm.New_str("http://www.wikidata.org/entity/Q1985727") + ; + + private static final byte[] Bry_year_prefix = Bry_.new_a7("+0000000"); + public static byte[] To_bry(Bry_bfr bfr, String date) {return To_bry(bfr, DateAdp_.parse_fmt(date, "yyyy-MM-dd HH:mm:ss"));} + public static byte[] To_bry(Bry_bfr bfr, DateAdp date) {// +0000000yyyy-MM-ddTHH:mm:ssZ + bfr + .Add(Bry_year_prefix) + .Add_int_fixed(date.Year(), 4) + .Add_byte(Byte_ascii.Dash) + .Add_int_fixed(date.Month(), 2) + .Add_byte(Byte_ascii.Dash) + .Add_int_fixed(date.Day(), 2) + .Add_byte(Byte_ascii.Ltr_T) + .Add_int_fixed(date.Hour(), 2) + .Add_byte(Byte_ascii.Colon) + .Add_int_fixed(date.Minute(), 2) + .Add_byte(Byte_ascii.Colon) + .Add_int_fixed(date.Second(), 2) + .Add_byte(Byte_ascii.Ltr_Z) + ; + return bfr.To_bry_and_clear(); + } +} diff --git a/400_xowa/src/gplx/xowa/xtns/wbases/claims/itms/Wbase_claim_value.java b/400_xowa/src/gplx/xowa/xtns/wbases/claims/itms/Wbase_claim_value.java new file mode 100644 index 000000000..2a5827808 --- /dev/null +++ b/400_xowa/src/gplx/xowa/xtns/wbases/claims/itms/Wbase_claim_value.java @@ -0,0 +1,33 @@ +/* +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.xtns.wbases.claims.itms; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wbases.*; import gplx.xowa.xtns.wbases.claims.*; +import gplx.xowa.xtns.wbases.claims.enums.*; +public class Wbase_claim_value extends Wbase_claim_base { + public Wbase_claim_value(int pid, byte val_tid, byte snak_tid) {super(pid, snak_tid); + this.val_tid = val_tid; + } + @Override public byte Val_tid() {return val_tid;} private final byte val_tid; + + @Override public void Welcome(Wbase_claim_visitor visitor) {visitor.Visit_system(this);} + @Override public String toString() {// TEST: + return String_.Concat_with_str("|", Wbase_claim_value_type_.To_str_or_fail(this.Snak_tid()), Wbase_claim_type_.To_key_or_unknown(this.Val_tid())); + } + + public static Wbase_claim_value New_novalue(int pid) {return new Wbase_claim_value(pid, Wbase_claim_type_.Tid__unknown , Wbase_claim_value_type_.Tid__novalue);} + public static Wbase_claim_value New_somevalue(int pid) {return new Wbase_claim_value(pid, Wbase_claim_type_.Tid__unknown , Wbase_claim_value_type_.Tid__somevalue);} +} diff --git a/400_xowa/src/gplx/xowa/xtns/wbases/claims/itms/times/Wbase_data_itm.java b/400_xowa/src/gplx/xowa/xtns/wbases/claims/itms/times/Wbase_data_itm.java new file mode 100644 index 000000000..bfa52a027 --- /dev/null +++ b/400_xowa/src/gplx/xowa/xtns/wbases/claims/itms/times/Wbase_data_itm.java @@ -0,0 +1,31 @@ +/* +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.xtns.wbases.claims.itms.times; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wbases.*; import gplx.xowa.xtns.wbases.claims.*; import gplx.xowa.xtns.wbases.claims.itms.*; +public class Wbase_data_itm { + public Wbase_data_itm(int val_int, String val_str, byte[] val_bry) { + this.val_int = val_int; + this.val_str = val_str; + this.val_bry = val_bry; + } + public int Val_int() {return val_int;} private final int val_int; + public String Val_str() {return val_str;} private final String val_str; + public byte[] Val_bry() {return val_bry;} private final byte[] val_bry; + + public static Wbase_data_itm New_int(int val) {return new Wbase_data_itm(val, Int_.To_str(val), Int_.To_bry(val));} + public static Wbase_data_itm New_str(String val) {return new Wbase_data_itm( -1, val, Bry_.new_u8(val));} +} diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_date.java b/400_xowa/src/gplx/xowa/xtns/wbases/claims/itms/times/Wbase_date.java similarity index 79% rename from 400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_date.java rename to 400_xowa/src/gplx/xowa/xtns/wbases/claims/itms/times/Wbase_date.java index dea9acd60..230960cf0 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_date.java +++ b/400_xowa/src/gplx/xowa/xtns/wbases/claims/itms/times/Wbase_date.java @@ -15,25 +15,25 @@ 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.xtns.wdatas.core; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; +package gplx.xowa.xtns.wbases.claims.itms.times; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wbases.*; import gplx.xowa.xtns.wbases.claims.*; import gplx.xowa.xtns.wbases.claims.itms.*; import gplx.core.brys.fmtrs.*; -import gplx.xowa.xtns.wdatas.hwtrs.*; -public class Wdata_date { - public Wdata_date(long year, int month, int day, int hour, int minute, int second, int precision, int before, int after, boolean calendar_is_julian) { +import gplx.xowa.xtns.wbases.hwtrs.*; +public class Wbase_date { + public Wbase_date(long year, int month, int day, int hour, int minute, int second, int precision, int before, int after, boolean calendar_is_julian) { this.year = year; this.month = month; this.day = day; this.hour = hour; this.minute = minute; this.second = second; this.precision = precision; this.before = before; this.after = after; this.calendar_is_julian = calendar_is_julian; } - public long Year() {return year;} private final long year; - public int Month() {return month;} private final int month; - public int Day() {return day;} private final int day; - public int Hour() {return hour;} private final int hour; - public int Minute() {return minute;} private final int minute; - public int Second() {return second;} private final int second; - public int Precision() {return precision;} private final int precision; - public int Before() {return before;} private final int before; - public int After() {return after;} private final int after; - public boolean Calendar_is_julian() {return calendar_is_julian;} private final boolean calendar_is_julian; - public static Wdata_date parse(byte[] date, int precision, int before, int after, boolean calendar_is_julian) {// EX:+00000002001-02-03T04:05:06Z + public long Year() {return year;} private final long year; + public int Month() {return month;} private final int month; + public int Day() {return day;} private final int day; + public int Hour() {return hour;} private final int hour; + public int Minute() {return minute;} private final int minute; + public int Second() {return second;} private final int second; + public int Precision() {return precision;} private final int precision; + public int Before() {return before;} private final int before; + public int After() {return after;} private final int after; + public boolean Calendar_is_julian() {return calendar_is_julian;} private final boolean calendar_is_julian; + public static Wbase_date Parse(byte[] date, int precision, int before, int after, boolean calendar_is_julian) {// EX:+00000002001-02-03T04:05:06Z int year_sign = 1; switch (date[0]) { case Byte_ascii.Plus: break; @@ -47,9 +47,9 @@ public class Wdata_date { int hour = Bry_.To_int_or(date, year_end + 7, year_end + 9, -1); int minute = Bry_.To_int_or(date, year_end + 10, year_end + 12, -1); int second = Bry_.To_int_or(date, year_end + 13, year_end + 15, -1); - return new Wdata_date(year * year_sign, month, day, hour, minute, second, precision, before, after, calendar_is_julian); + return new Wbase_date(year * year_sign, month, day, hour, minute, second, precision, before, after, calendar_is_julian); } - public static Wdata_date Xto_julian(Wdata_date date) { + public static Wbase_date Xto_julian(Wbase_date date) { int a = (int)Math_.Floor((14 - date.Month() / 12)); int y = (int)date.Year() + 4800 - a; int m = date.Month() + 12 * a - 3; @@ -61,9 +61,9 @@ public class Wdata_date { int new_y = d - 4800 + (int)Math_.Floor(n / 10); int new_m = n + 3 - 12 * (int)Math_.Floor(n / 10); int new_d = e - (int)Math_.Floor((153 * n + 2) / 5) + 1; - return new Wdata_date(new_y, new_m, new_d, date.Hour(), date.Minute(), date.Second(), date.precision, date.before, date.after, date.calendar_is_julian); + return new Wbase_date(new_y, new_m, new_d, date.Hour(), date.Minute(), date.Second(), date.precision, date.before, date.after, date.calendar_is_julian); } - public static void Xto_str(Bry_bfr bfr, Bry_fmtr tmp_fmtr, Bry_bfr tmp_bfr, Wdata_hwtr_msgs msgs, Wdata_date date) { + public static void Xto_str(Bry_bfr bfr, Bry_fmtr tmp_fmtr, Bry_bfr tmp_bfr, Wdata_hwtr_msgs msgs, Wbase_date date) { boolean calendar_is_julian = date.calendar_is_julian; if (calendar_is_julian) date = Xto_julian(date); @@ -73,19 +73,19 @@ public class Wdata_date { int precision = date.precision; byte[] time_spr = msgs.Sym_time_spr(); switch (precision) { - case Wdata_date.Fmt_ym: // EX: "Feb 2001" + case Wbase_date.Fmt_ym: // EX: "Feb 2001" bfr.Add(months[months_bgn + date.Month() - List_adp_.Base1]); bfr.Add_byte_space(); bfr.Add_long_variable(year); break; - case Wdata_date.Fmt_ymd: // EX: "3 Feb 2001" + case Wbase_date.Fmt_ymd: // EX: "3 Feb 2001" bfr.Add_int_variable(date.Day()); bfr.Add_byte_space(); bfr.Add(months[months_bgn + date.Month() - List_adp_.Base1]); bfr.Add_byte_space(); bfr.Add_long_variable(date.Year()); break; - case Wdata_date.Fmt_ymdh: // EX: "4:00 3 Feb 2011" + case Wbase_date.Fmt_ymdh: // EX: "4:00 3 Feb 2011" bfr.Add_int_variable(date.Hour()); bfr.Add(time_spr); bfr.Add_int_fixed(0, 2); @@ -96,7 +96,7 @@ public class Wdata_date { bfr.Add_byte_space(); bfr.Add_long_variable(date.Year()); break; - case Wdata_date.Fmt_ymdhn: // EX: "4:05 3 Feb 2011" + case Wbase_date.Fmt_ymdhn: // EX: "4:05 3 Feb 2011" bfr.Add_int_variable(date.Hour()); bfr.Add(time_spr); bfr.Add_int_fixed(date.Minute(), 2); @@ -129,7 +129,7 @@ public class Wdata_date { bfr.Add(msgs.Time_julian()); Xto_str_beforeafter(bfr, tmp_fmtr, tmp_bfr, msgs, date); } - private static void Xto_str_beforeafter(Bry_bfr bfr, Bry_fmtr tmp_fmtr, Bry_bfr tmp_bfr, Wdata_hwtr_msgs msgs, Wdata_date date) { + private static void Xto_str_beforeafter(Bry_bfr bfr, Bry_fmtr tmp_fmtr, Bry_bfr tmp_bfr, Wdata_hwtr_msgs msgs, Wbase_date date) { byte[] bry = null; int before = date.before; int after = date.after; @@ -150,7 +150,7 @@ public class Wdata_date { bfr.Add_byte_space().Add(bry); } } - private static void Xto_str_fmt_y(Bry_bfr bfr, Bry_fmtr tmp_fmtr, Bry_bfr tmp_bfr, Wdata_hwtr_msgs msgs, Wdata_date date, int precision) { + private static void Xto_str_fmt_y(Bry_bfr bfr, Bry_fmtr tmp_fmtr, Bry_bfr tmp_bfr, Wdata_hwtr_msgs msgs, Wbase_date date, int precision) { int year_pow = 9 - precision; byte[] year_fmt = msgs.Ary()[msgs.Time_year_idx() + year_pow]; long year = date.Year(); diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_date_tst.java b/400_xowa/src/gplx/xowa/xtns/wbases/claims/itms/times/Wbase_date_tst.java similarity index 66% rename from 400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_date_tst.java rename to 400_xowa/src/gplx/xowa/xtns/wbases/claims/itms/times/Wbase_date_tst.java index 6a12c2322..2b9fcb019 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_date_tst.java +++ b/400_xowa/src/gplx/xowa/xtns/wbases/claims/itms/times/Wbase_date_tst.java @@ -15,11 +15,11 @@ 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.xtns.wdatas.core; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; +package gplx.xowa.xtns.wbases.claims.itms.times; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wbases.*; import gplx.xowa.xtns.wbases.claims.*; import gplx.xowa.xtns.wbases.claims.itms.*; import org.junit.*; import gplx.core.brys.fmtrs.*; -import gplx.langs.jsons.*; import gplx.xowa.xtns.wdatas.core.*; import gplx.xowa.xtns.wdatas.parsers.*; import gplx.xowa.xtns.wdatas.hwtrs.*; -public class Wdata_date_tst { - @Before public void init() {fxt.Clear();} private Wdata_date_fxt fxt = new Wdata_date_fxt(); +import gplx.langs.jsons.*; import gplx.xowa.xtns.wbases.core.*; import gplx.xowa.xtns.wbases.parsers.*; import gplx.xowa.xtns.wbases.hwtrs.*; +public class Wbase_date_tst { + @Before public void init() {fxt.Clear();} private Wbase_date_fxt fxt = new Wbase_date_fxt(); @Test public void Parse() { fxt.Test_parse("+00000002001-02-03T04:05:06Z", 2001, 2, 3, 4, 5, 6); fxt.Test_parse("-98765432109-02-03T04:05:06Z", -98765432109L, 2, 3, 4, 5, 6); @@ -29,11 +29,11 @@ public class Wdata_date_tst { } @Test public void Xto_str() { String date = "+00000002001-02-03T04:05:06Z"; - fxt.Test_xto_str(date, Wdata_date.Fmt_ym , "Feb 2001"); - fxt.Test_xto_str(date, Wdata_date.Fmt_ymd , "3 Feb 2001"); - fxt.Test_xto_str(date, Wdata_date.Fmt_ymdh , "4:00 3 Feb 2001"); - fxt.Test_xto_str(date, Wdata_date.Fmt_ymdhn , "4:05 3 Feb 2001"); - fxt.Test_xto_str(date, Wdata_date.Fmt_ymdhns , "4:05:06 3 Feb 2001"); + fxt.Test_xto_str(date, Wbase_date.Fmt_ym , "Feb 2001"); + fxt.Test_xto_str(date, Wbase_date.Fmt_ymd , "3 Feb 2001"); + fxt.Test_xto_str(date, Wbase_date.Fmt_ymdh , "4:00 3 Feb 2001"); + fxt.Test_xto_str(date, Wbase_date.Fmt_ymdhn , "4:05 3 Feb 2001"); + fxt.Test_xto_str(date, Wbase_date.Fmt_ymdhns , "4:05:06 3 Feb 2001"); } @Test public void Xto_str_year() { fxt.Test_xto_str("+00000001970-01-01T00:00:00Z", 9, "1970"); @@ -45,30 +45,30 @@ public class Wdata_date_tst { fxt.Test_xto_str("+00000123456-01-01T00:00:00Z", 4, "in 100,000 years"); } @Test public void Xto_str_julian() { - fxt.Init_calendar_is_julian_(Bool_.Y).Test_xto_str("+00000001600-01-02T00:00:00Z", Wdata_date.Fmt_ymd, "18 Jan 1600jul"); + fxt.Init_calendar_is_julian_(Bool_.Y).Test_xto_str("+00000001600-01-02T00:00:00Z", Wbase_date.Fmt_ymd, "18 Jan 1600jul"); } @Test public void Xto_str_before_after() { String date = "+00000002001-02-03T04:05:06Z"; - fxt.Clear().Init_before_(1).Test_xto_str(date, Wdata_date.Fmt_ymd, "3 Feb 2001 (-1)"); - fxt.Clear().Init_after_ (1).Test_xto_str(date, Wdata_date.Fmt_ymd, "3 Feb 2001 (+1)"); - fxt.Clear().Init_before_(1).Init_after_(1).Test_xto_str(date, Wdata_date.Fmt_ymd, "3 Feb 2001 (±1)"); - fxt.Clear().Init_before_(1).Init_after_(2).Test_xto_str(date, Wdata_date.Fmt_ymd, "3 Feb 2001 (-1, +2)"); + fxt.Clear().Init_before_(1).Test_xto_str(date, Wbase_date.Fmt_ymd, "3 Feb 2001 (-1)"); + fxt.Clear().Init_after_ (1).Test_xto_str(date, Wbase_date.Fmt_ymd, "3 Feb 2001 (+1)"); + fxt.Clear().Init_before_(1).Init_after_(1).Test_xto_str(date, Wbase_date.Fmt_ymd, "3 Feb 2001 (±1)"); + fxt.Clear().Init_before_(1).Init_after_(2).Test_xto_str(date, Wbase_date.Fmt_ymd, "3 Feb 2001 (-1, +2)"); } } -class Wdata_date_fxt { +class Wbase_date_fxt { private Bry_bfr tmp_bfr = Bry_bfr_.New_w_size(16); private Wdata_hwtr_msgs msgs; private final Bry_fmtr tmp_time_fmtr = Bry_fmtr.new_(); private final Bry_bfr tmp_time_bfr = Bry_bfr_.New_w_size(32); - public Wdata_date_fxt Clear() { + public Wbase_date_fxt Clear() { init_before = init_after = 0; init_calendar_is_julian = false; return this; } - public boolean Init_calendar_is_julian() {return init_calendar_is_julian;} public Wdata_date_fxt Init_calendar_is_julian_(boolean v) {init_calendar_is_julian = v; return this;} private boolean init_calendar_is_julian; - public int Init_before() {return init_before;} public Wdata_date_fxt Init_before_(int v) {init_before = v; return this;} private int init_before; - public int Init_after() {return init_after;} public Wdata_date_fxt Init_after_(int v) {init_after = v; return this;} private int init_after; + public boolean Init_calendar_is_julian() {return init_calendar_is_julian;} public Wbase_date_fxt Init_calendar_is_julian_(boolean v) {init_calendar_is_julian = v; return this;} private boolean init_calendar_is_julian; + public int Init_before() {return init_before;} public Wbase_date_fxt Init_before_(int v) {init_before = v; return this;} private int init_before; + public int Init_after() {return init_after;} public Wbase_date_fxt Init_after_(int v) {init_after = v; return this;} private int init_after; public void Test_parse(String raw, long expd_y, int expd_m, int expd_d, int expd_h, int expd_n, int expd_s) { - Wdata_date actl_date = Wdata_date.parse(Bry_.new_a7(raw), Wdata_date.Fmt_ymdhns, init_before, init_after, init_calendar_is_julian); + Wbase_date actl_date = Wbase_date.Parse(Bry_.new_a7(raw), Wbase_date.Fmt_ymdhns, init_before, init_after, init_calendar_is_julian); Tfds.Eq(expd_y, actl_date.Year()); Tfds.Eq(expd_m, actl_date.Month()); Tfds.Eq(expd_d, actl_date.Day()); @@ -77,16 +77,16 @@ class Wdata_date_fxt { Tfds.Eq(expd_s, actl_date.Second()); } public void Test_julian(int[] orig_ary, int[] expd) { - Wdata_date orig = new Wdata_date(orig_ary[0], orig_ary[1], orig_ary[2], 0, 0, 0, 0, 0, 0, init_calendar_is_julian); - Wdata_date actl = Wdata_date.Xto_julian(orig); + Wbase_date orig = new Wbase_date(orig_ary[0], orig_ary[1], orig_ary[2], 0, 0, 0, 0, 0, 0, init_calendar_is_julian); + Wbase_date actl = Wbase_date.Xto_julian(orig); Tfds.Eq(expd[0], (int)actl.Year(), "y"); Tfds.Eq(expd[1], actl.Month(), "m"); Tfds.Eq(expd[2], actl.Day(), "d"); } public void Test_xto_str(String raw, int precision, String expd) { if (msgs == null) msgs = Wdata_hwtr_msgs.new_en_(); - Wdata_date date = Wdata_date.parse(Bry_.new_a7(raw), precision, init_before, init_after, init_calendar_is_julian); - Wdata_date.Xto_str(tmp_bfr, tmp_time_fmtr, tmp_time_bfr, msgs, date); + Wbase_date date = Wbase_date.Parse(Bry_.new_a7(raw), precision, init_before, init_after, init_calendar_is_julian); + Wbase_date.Xto_str(tmp_bfr, tmp_time_fmtr, tmp_time_bfr, msgs, date); Tfds.Eq(expd, tmp_bfr.To_str_and_clear()); } } diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_alias_itm.java b/400_xowa/src/gplx/xowa/xtns/wbases/core/Wdata_alias_itm.java similarity index 90% rename from 400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_alias_itm.java rename to 400_xowa/src/gplx/xowa/xtns/wbases/core/Wdata_alias_itm.java index 8ab94e7c0..33c7bddd4 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_alias_itm.java +++ b/400_xowa/src/gplx/xowa/xtns/wbases/core/Wdata_alias_itm.java @@ -15,7 +15,7 @@ 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.xtns.wdatas.core; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; +package gplx.xowa.xtns.wbases.core; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wbases.*; import gplx.langs.jsons.*; public class Wdata_alias_itm implements Wdata_lang_sortable { public Wdata_alias_itm(byte[] lang, byte[][] vals) {this.lang = lang; this.vals = vals;} diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_dict_claim.java b/400_xowa/src/gplx/xowa/xtns/wbases/core/Wdata_dict_claim.java similarity index 89% rename from 400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_dict_claim.java rename to 400_xowa/src/gplx/xowa/xtns/wbases/core/Wdata_dict_claim.java index 325e15a1c..052277582 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_dict_claim.java +++ b/400_xowa/src/gplx/xowa/xtns/wbases/core/Wdata_dict_claim.java @@ -15,7 +15,7 @@ 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.xtns.wdatas.core; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; +package gplx.xowa.xtns.wbases.core; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wbases.*; public class Wdata_dict_claim { public static final byte Tid_mainsnak = 0 @@ -44,7 +44,7 @@ public class Wdata_dict_claim { , Bry_qualifiers = Bry_.new_a7(Str_qualifiers) , Bry_qualifiers_order = Bry_.new_a7(Str_qualifiers_order) ; - public static final Hash_adp_bry Dict = Hash_adp_bry.cs() + public static final Hash_adp_bry Dict = Hash_adp_bry.cs() .Add_bry_byte(Bry_mainsnak , Tid_mainsnak) .Add_bry_byte(Bry_type , Tid_type) .Add_bry_byte(Bry_id , Tid_id) diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_dict_claim_v1.java b/400_xowa/src/gplx/xowa/xtns/wbases/core/Wdata_dict_claim_v1.java similarity index 86% rename from 400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_dict_claim_v1.java rename to 400_xowa/src/gplx/xowa/xtns/wbases/core/Wdata_dict_claim_v1.java index 285705888..c12a51c86 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_dict_claim_v1.java +++ b/400_xowa/src/gplx/xowa/xtns/wbases/core/Wdata_dict_claim_v1.java @@ -15,7 +15,7 @@ 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.xtns.wdatas.core; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; +package gplx.xowa.xtns.wbases.core; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wbases.*; public class Wdata_dict_claim_v1 { public static final String Str_m = "m" @@ -24,7 +24,7 @@ public class Wdata_dict_claim_v1 { , Str_rank = "rank" , Str_refs = "refs" ; - public static final byte[] + public static final byte[] Bry_m = Bry_.new_a7(Str_m) , Bry_q = Bry_.new_a7(Str_q) , Bry_g = Bry_.new_a7(Str_g) diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_dict_datavalue.java b/400_xowa/src/gplx/xowa/xtns/wbases/core/Wdata_dict_datavalue.java similarity index 85% rename from 400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_dict_datavalue.java rename to 400_xowa/src/gplx/xowa/xtns/wbases/core/Wdata_dict_datavalue.java index 77293b4d5..04bc61a06 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_dict_datavalue.java +++ b/400_xowa/src/gplx/xowa/xtns/wbases/core/Wdata_dict_datavalue.java @@ -15,7 +15,7 @@ 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.xtns.wdatas.core; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; +package gplx.xowa.xtns.wbases.core; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wbases.*; public class Wdata_dict_datavalue { public static final byte Tid_value = 0 @@ -32,7 +32,7 @@ public class Wdata_dict_datavalue { , Bry_type = Bry_.new_a7(Str_type) , Bry_error = Bry_.new_a7(Str_error) ; - public static final Hash_adp_bry Dict = Hash_adp_bry.cs() + public static final Hash_adp_bry Dict = Hash_adp_bry.cs() .Add_bry_byte(Bry_value , Tid_value) .Add_bry_byte(Bry_type , Tid_type) .Add_bry_byte(Bry_error , Tid_error) diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_dict_langtext.java b/400_xowa/src/gplx/xowa/xtns/wbases/core/Wdata_dict_langtext.java similarity index 84% rename from 400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_dict_langtext.java rename to 400_xowa/src/gplx/xowa/xtns/wbases/core/Wdata_dict_langtext.java index b8582fac5..5dde54700 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_dict_langtext.java +++ b/400_xowa/src/gplx/xowa/xtns/wbases/core/Wdata_dict_langtext.java @@ -15,7 +15,7 @@ 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.xtns.wdatas.core; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; +package gplx.xowa.xtns.wbases.core; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wbases.*; public class Wdata_dict_langtext { public static final byte Tid_language = 0 @@ -29,7 +29,7 @@ public class Wdata_dict_langtext { Bry_language = Bry_.new_a7(Str_language) , Bry_value = Bry_.new_a7(Str_value) ; - public static final Hash_adp_bry Dict = Hash_adp_bry.cs() + public static final Hash_adp_bry Dict = Hash_adp_bry.cs() .Add_bry_byte(Bry_language , Tid_language) .Add_bry_byte(Bry_value , Tid_value) ; diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_dict_mainsnak.java b/400_xowa/src/gplx/xowa/xtns/wbases/core/Wdata_dict_mainsnak.java similarity index 81% rename from 400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_dict_mainsnak.java rename to 400_xowa/src/gplx/xowa/xtns/wbases/core/Wdata_dict_mainsnak.java index 5fd2e9b5e..eadebe054 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_dict_mainsnak.java +++ b/400_xowa/src/gplx/xowa/xtns/wbases/core/Wdata_dict_mainsnak.java @@ -15,7 +15,7 @@ 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.xtns.wdatas.core; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; +package gplx.xowa.xtns.wbases.core; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wbases.*; public class Wdata_dict_mainsnak { public static final byte Tid_snaktype = 0 @@ -25,15 +25,17 @@ public class Wdata_dict_mainsnak { , Tid_type = 4 , Tid_datatype = 5 ; + public static final String + Str_datavalue = "datavalue"; public static byte[] Bry_snaktype = Bry_.new_a7("snaktype") , Bry_property = Bry_.new_a7("property") , Bry_hash = Bry_.new_a7("hash") - , Bry_datavalue = Bry_.new_a7("datavalue") + , Bry_datavalue = Bry_.new_a7(Str_datavalue) , Bry_type = Bry_.new_a7("type") , Bry_datatype = Bry_.new_a7("datatype") ; - public static final Hash_adp_bry Dict = Hash_adp_bry.cs() + public static final Hash_adp_bry Dict = Hash_adp_bry.cs() .Add_bry_byte(Bry_snaktype , Tid_snaktype) .Add_bry_byte(Bry_property , Tid_property) .Add_bry_byte(Bry_hash , Tid_hash) diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_dict_reference.java b/400_xowa/src/gplx/xowa/xtns/wbases/core/Wdata_dict_reference.java similarity index 90% rename from 400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_dict_reference.java rename to 400_xowa/src/gplx/xowa/xtns/wbases/core/Wdata_dict_reference.java index dffa51d27..428d0ebff 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_dict_reference.java +++ b/400_xowa/src/gplx/xowa/xtns/wbases/core/Wdata_dict_reference.java @@ -15,7 +15,7 @@ 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.xtns.wdatas.core; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; +package gplx.xowa.xtns.wbases.core; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wbases.*; public class Wdata_dict_reference { public static final byte Tid_hash = 0 @@ -27,7 +27,7 @@ public class Wdata_dict_reference { , Str_snaks = "snaks" , Str_snaks_order = "snaks-order" ; - public static final byte[] + public static final byte[] Bry_hash = Bry_.new_a7(Str_hash) , Bry_snaks = Bry_.new_a7(Str_snaks) , Bry_snaks_order = Bry_.new_a7(Str_snaks_order) diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_dict_sitelink.java b/400_xowa/src/gplx/xowa/xtns/wbases/core/Wdata_dict_sitelink.java similarity index 85% rename from 400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_dict_sitelink.java rename to 400_xowa/src/gplx/xowa/xtns/wbases/core/Wdata_dict_sitelink.java index 2a0c0720a..14b202862 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_dict_sitelink.java +++ b/400_xowa/src/gplx/xowa/xtns/wbases/core/Wdata_dict_sitelink.java @@ -15,7 +15,7 @@ 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.xtns.wdatas.core; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; +package gplx.xowa.xtns.wbases.core; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wbases.*; public class Wdata_dict_sitelink { public static final byte Tid_site = 0 @@ -32,7 +32,7 @@ public class Wdata_dict_sitelink { , Bry_title = Bry_.new_a7(Str_title) , Bry_badges = Bry_.new_a7(Str_badges) ; - public static final Hash_adp_bry Dict = Hash_adp_bry.cs() + public static final Hash_adp_bry Dict = Hash_adp_bry.cs() .Add_bry_byte(Bry_site , Tid_site) .Add_bry_byte(Bry_title , Tid_title) .Add_bry_byte(Bry_badges , Tid_badges) diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_dict_utl.java b/400_xowa/src/gplx/xowa/xtns/wbases/core/Wdata_dict_utl.java similarity index 89% rename from 400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_dict_utl.java rename to 400_xowa/src/gplx/xowa/xtns/wbases/core/Wdata_dict_utl.java index 5ccba8cf5..8694233cf 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_dict_utl.java +++ b/400_xowa/src/gplx/xowa/xtns/wbases/core/Wdata_dict_utl.java @@ -15,7 +15,7 @@ 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.xtns.wdatas.core; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; +package gplx.xowa.xtns.wbases.core; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wbases.*; import gplx.core.primitives.*; public class Wdata_dict_utl { public static byte Get_tid_or_invalid(byte[] qid, Hash_adp_bry dict, byte[] key) { diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_lang_sortable.java b/400_xowa/src/gplx/xowa/xtns/wbases/core/Wdata_lang_sortable.java similarity index 86% rename from 400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_lang_sortable.java rename to 400_xowa/src/gplx/xowa/xtns/wbases/core/Wdata_lang_sortable.java index 9c77dd642..659d52b83 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_lang_sortable.java +++ b/400_xowa/src/gplx/xowa/xtns/wbases/core/Wdata_lang_sortable.java @@ -15,7 +15,7 @@ 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.xtns.wdatas.core; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; +package gplx.xowa.xtns.wbases.core; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wbases.*; public interface Wdata_lang_sortable { byte[] Lang_code(); int Lang_sort(); void Lang_sort_(int v); diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_lang_sorter.java b/400_xowa/src/gplx/xowa/xtns/wbases/core/Wdata_lang_sorter.java similarity index 95% rename from 400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_lang_sorter.java rename to 400_xowa/src/gplx/xowa/xtns/wbases/core/Wdata_lang_sorter.java index d399a11d3..51b08f16b 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_lang_sorter.java +++ b/400_xowa/src/gplx/xowa/xtns/wbases/core/Wdata_lang_sorter.java @@ -15,7 +15,7 @@ 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.xtns.wdatas.core; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; +package gplx.xowa.xtns.wbases.core; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wbases.*; import gplx.xowa.apps.apis.xowa.xtns.*; public class Wdata_lang_sorter implements Gfo_evt_itm, gplx.core.lists.ComparerAble { private Hash_adp_bry hash = Hash_adp_bry.cs(); diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_langtext_itm.java b/400_xowa/src/gplx/xowa/xtns/wbases/core/Wdata_langtext_itm.java similarity index 85% rename from 400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_langtext_itm.java rename to 400_xowa/src/gplx/xowa/xtns/wbases/core/Wdata_langtext_itm.java index 49758561f..2be01cfe8 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_langtext_itm.java +++ b/400_xowa/src/gplx/xowa/xtns/wbases/core/Wdata_langtext_itm.java @@ -15,12 +15,12 @@ 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.xtns.wdatas.core; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; +package gplx.xowa.xtns.wbases.core; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wbases.*; import gplx.langs.jsons.*; public class Wdata_langtext_itm implements Wdata_lang_sortable { public Wdata_langtext_itm(byte[] lang, byte[] text) {this.lang = lang; this.text = text;} - public byte[] Lang() {return lang;} private final byte[] lang; - public byte[] Text() {return text;} private final byte[] text; + public byte[] Lang() {return lang;} private final byte[] lang; + public byte[] Text() {return text;} private final byte[] text; public byte[] Lang_code() {return lang;} public int Lang_sort() {return lang_sort;} public void Lang_sort_(int v) {lang_sort = v;} private int lang_sort = Wdata_lang_sorter.Sort_null; @Override public String toString() {// TEST: diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_sitelink_itm.java b/400_xowa/src/gplx/xowa/xtns/wbases/core/Wdata_sitelink_itm.java similarity index 83% rename from 400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_sitelink_itm.java rename to 400_xowa/src/gplx/xowa/xtns/wbases/core/Wdata_sitelink_itm.java index 9eabba0cf..8ef09b7b4 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_sitelink_itm.java +++ b/400_xowa/src/gplx/xowa/xtns/wbases/core/Wdata_sitelink_itm.java @@ -15,14 +15,14 @@ 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.xtns.wdatas.core; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; +package gplx.xowa.xtns.wbases.core; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wbases.*; import gplx.langs.jsons.*; import gplx.xowa.wikis.domains.*; public class Wdata_sitelink_itm implements Wdata_lang_sortable { public Wdata_sitelink_itm(byte[] site, byte[] name, byte[][] badges) {this.site = site; this.name = name; this.badges = badges;} - public byte[] Site() {return site;} private final byte[] site; - public byte[] Name() {return name;} private final byte[] name; - public byte[][] Badges() {return badges;} private final byte[][] badges; + public byte[] Site() {return site;} private final byte[] site; + public byte[] Name() {return name;} private final byte[] name; + public byte[][] Badges() {return badges;} private final byte[][] badges; public byte[] Lang() {return lang;} public void Lang_(byte[] v) {lang = v;} private byte[] lang = Bry_.Empty; public byte[] Lang_code() {return lang;} public int Lang_sort() {return lang_sort;} public void Lang_sort_(int v) {lang_sort = v;} private int lang_sort = Wdata_lang_sorter.Sort_null; diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_fmtr__claim_grp.java b/400_xowa/src/gplx/xowa/xtns/wbases/hwtrs/Wdata_fmtr__claim_grp.java similarity index 88% rename from 400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_fmtr__claim_grp.java rename to 400_xowa/src/gplx/xowa/xtns/wbases/hwtrs/Wdata_fmtr__claim_grp.java index 6660bbad3..32f7f2ab4 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_fmtr__claim_grp.java +++ b/400_xowa/src/gplx/xowa/xtns/wbases/hwtrs/Wdata_fmtr__claim_grp.java @@ -15,9 +15,10 @@ 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.xtns.wdatas.hwtrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; +package gplx.xowa.xtns.wbases.hwtrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wbases.*; import gplx.core.brys.fmtrs.*; -import gplx.xowa.xtns.wdatas.core.*; import gplx.xowa.apps.apis.xowa.html.*; +import gplx.xowa.xtns.wbases.core.*; import gplx.xowa.xtns.wbases.claims.*; import gplx.xowa.xtns.wbases.claims.enums.*; import gplx.xowa.xtns.wbases.claims.itms.*; +import gplx.xowa.apps.apis.xowa.html.*; class Wdata_fmtr__claim_grp implements gplx.core.brys.Bfr_arg { private Wdata_fmtr__claim_tbl fmtr_tbl = new Wdata_fmtr__claim_tbl(); private boolean is_empty; private Xoapi_toggle_itm toggle_itm; @@ -63,7 +64,7 @@ class Wdata_fmtr__claim_tbl implements gplx.core.brys.Bfr_arg { public void Bfr_arg__add(Bry_bfr bfr) { int len = list.Count(); for (int i = 0; i < len; ++i) { - Wdata_claim_grp grp = (Wdata_claim_grp)list.Get_at(i); + Wbase_claim_grp grp = (Wbase_claim_grp)list.Get_at(i); if (grp.Len() == 0) continue; // NOTE: group will be empty when claims are empty; EX: "claims": []; PAGE:wd.p:585; DATE:2014-10-03 int pid = grp.Id(); byte[] pid_lbl = lbl_mgr.Get_text__pid(pid); @@ -88,7 +89,7 @@ class Wdata_fmtr__claim_row implements gplx.core.brys.Bfr_arg { private Wdata_fmtr__qual_tbl fmtr_qual = new Wdata_fmtr__qual_tbl(); private Wdata_fmtr__ref_tbl fmtr_ref = new Wdata_fmtr__ref_tbl(); private Wdata_lbl_mgr lbl_mgr; private Wdata_hwtr_msgs msgs; - private Wdata_claim_grp claim_grp; private Bry_bfr tmp_bfr = Bry_bfr_.Reset(255); + private Wbase_claim_grp claim_grp; private Bry_bfr tmp_bfr = Bry_bfr_.Reset(255); public void Init_by_ctor(Wdata_lbl_mgr lbl_mgr) { this.lbl_mgr = lbl_mgr; fmtr_qual.Init_by_ctor(lbl_mgr); @@ -99,19 +100,19 @@ class Wdata_fmtr__claim_row implements gplx.core.brys.Bfr_arg { fmtr_qual.Init_by_lang(msgs); fmtr_ref.Init_by_lang(msgs); } - public void Init_by_grp(byte[] ttl, Wdata_claim_grp claim_grp) { + public void Init_by_grp(byte[] ttl, Wbase_claim_grp claim_grp) { this.ttl = ttl; this.claim_grp = claim_grp; } public void Bfr_arg__add(Bry_bfr bfr) { int len = claim_grp.Len(); claim_html_wtr.Init(ttl, tmp_bfr, msgs, lbl_mgr); for (int i = 0; i < len; ++i) { - Wdata_claim_itm_core itm = claim_grp.Get_at(i); + Wbase_claim_base itm = claim_grp.Get_at(i); itm.Welcome(claim_html_wtr); byte[] val = tmp_bfr.To_bry_and_clear(); fmtr_qual.Init_by_claim(ttl, itm); fmtr_ref.Init_by_claim(ttl, itm); - row_fmtr.Bld_bfr_many(bfr, Wdata_dict_rank.Xto_str(itm.Rank_tid()), val, fmtr_qual, fmtr_ref); + row_fmtr.Bld_bfr_many(bfr, Wbase_claim_rank_.To_str_or_fail(itm.Rank_tid()), val, fmtr_qual, fmtr_ref); } } private Bry_fmtr row_fmtr = Bry_fmtr.new_(String_.Concat_lines_nl_skip_last @@ -145,12 +146,12 @@ class Wdata_fmtr__claim_row implements gplx.core.brys.Bfr_arg { ); } class Wdata_fmtr__qual_tbl implements gplx.core.brys.Bfr_arg { - private Wdata_fmtr__qual_row fmtr_row = new Wdata_fmtr__qual_row(); private Wdata_claim_itm_core claim; + private Wdata_fmtr__qual_row fmtr_row = new Wdata_fmtr__qual_row(); private Wbase_claim_base claim; public void Init_by_ctor(Wdata_lbl_mgr lbl_mgr) {fmtr_row.Init_by_ctor(lbl_mgr);} public void Init_by_lang(Wdata_hwtr_msgs msgs) { fmtr_row.Init_by_lang(msgs); } - public void Init_by_claim(byte[] ttl, Wdata_claim_itm_core claim) { + public void Init_by_claim(byte[] ttl, Wbase_claim_base claim) { this.claim = claim; fmtr_row.Init_by_grp(ttl, claim.Qualifiers()); } @@ -169,18 +170,18 @@ class Wdata_fmtr__qual_tbl implements gplx.core.brys.Bfr_arg { class Wdata_fmtr__qual_row implements gplx.core.brys.Bfr_arg { private byte[] ttl; private Wdata_visitor__html_wtr claim_html_wtr = new Wdata_visitor__html_wtr(); private Wdata_lbl_mgr lbl_mgr; private Wdata_hwtr_msgs msgs; - private Wdata_claim_grp_list quals; private Bry_bfr tmp_bfr = Bry_bfr_.Reset(255); + private Wbase_claim_grp_list quals; private Bry_bfr tmp_bfr = Bry_bfr_.Reset(255); public void Init_by_ctor(Wdata_lbl_mgr lbl_mgr) {this.lbl_mgr = lbl_mgr;} public void Init_by_lang(Wdata_hwtr_msgs msgs) {this.msgs = msgs;} - public void Init_by_grp(byte[] ttl, Wdata_claim_grp_list quals) {this.ttl = ttl; this.quals = quals;} + public void Init_by_grp(byte[] ttl, Wbase_claim_grp_list quals) {this.ttl = ttl; this.quals = quals;} public void Bfr_arg__add(Bry_bfr bfr) { int len = quals.Len(); claim_html_wtr.Init(ttl, tmp_bfr, msgs, lbl_mgr); for (int i = 0; i < len; ++i) { - Wdata_claim_grp grp = quals.Get_at(i); + Wbase_claim_grp grp = quals.Get_at(i); int grp_len = grp.Len(); for (int j = 0; j < grp_len; ++j) { - Wdata_claim_itm_core itm = grp.Get_at(j); + Wbase_claim_base itm = grp.Get_at(j); itm.Welcome(claim_html_wtr); byte[] val = tmp_bfr.To_bry_and_clear(); row_fmtr.Bld_bfr_many(bfr, grp.Id(), lbl_mgr.Get_text__pid(grp.Id()), val); @@ -209,12 +210,12 @@ class Wdata_fmtr__qual_row implements gplx.core.brys.Bfr_arg { ); } class Wdata_fmtr__ref_tbl implements gplx.core.brys.Bfr_arg { - private Wdata_fmtr__ref_row fmtr_row = new Wdata_fmtr__ref_row(); private Wdata_claim_itm_core claim; + private Wdata_fmtr__ref_row fmtr_row = new Wdata_fmtr__ref_row(); private Wbase_claim_base claim; public void Init_by_ctor(Wdata_lbl_mgr lbl_mgr) {fmtr_row.Init_by_ctor(lbl_mgr);} public void Init_by_lang(Wdata_hwtr_msgs msgs) { fmtr_row.Init_by_lang(msgs); } - public void Init_by_claim(byte[] ttl, Wdata_claim_itm_core claim) { + public void Init_by_claim(byte[] ttl, Wbase_claim_base claim) { this.claim = claim; fmtr_row.Init_by_grp(ttl, claim.References()); } @@ -244,22 +245,22 @@ class Wdata_fmtr__ref_row implements gplx.core.brys.Bfr_arg { private byte[] ttl; private Wdata_visitor__html_wtr claim_html_wtr = new Wdata_visitor__html_wtr(); private Wdata_lbl_mgr lbl_mgr; private Wdata_hwtr_msgs msgs; private Bry_bfr tmp_bfr = Bry_bfr_.Reset(255); - private Wdata_references_grp[] ref_grps; + private Wbase_references_grp[] ref_grps; public void Init_by_ctor(Wdata_lbl_mgr lbl_mgr) {this.lbl_mgr = lbl_mgr;} public void Init_by_lang(Wdata_hwtr_msgs msgs) {this.msgs = msgs;} - public void Init_by_grp(byte[] ttl, Wdata_references_grp[] ref_grps) {this.ttl = ttl; this.ref_grps = ref_grps;} + public void Init_by_grp(byte[] ttl, Wbase_references_grp[] ref_grps) {this.ttl = ttl; this.ref_grps = ref_grps;} public void Bfr_arg__add(Bry_bfr bfr) { int len = ref_grps.length; claim_html_wtr.Init(ttl, tmp_bfr, msgs, lbl_mgr); for (int i = 0; i < len; ++i) { - Wdata_references_grp grp_itm = ref_grps[i]; - Wdata_claim_grp_list grp = grp_itm.References(); + Wbase_references_grp grp_itm = ref_grps[i]; + Wbase_claim_grp_list grp = grp_itm.References(); int grp_len = grp.Len(); for (int j = 0; j < grp_len; ++j) { - Wdata_claim_grp grp2 = grp.Get_at(j); + Wbase_claim_grp grp2 = grp.Get_at(j); int grp2_len = grp2.Len(); for (int k = 0; k < grp2_len; ++k) { - Wdata_claim_itm_core itm = grp2.Get_at(k); + Wbase_claim_base itm = grp2.Get_at(k); itm.Welcome(claim_html_wtr); byte[] val = tmp_bfr.To_bry_and_clear(); row_fmtr.Bld_bfr_many(bfr, grp2.Id(), lbl_mgr.Get_text__pid(grp2.Id()), val); diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_fmtr__json.java b/400_xowa/src/gplx/xowa/xtns/wbases/hwtrs/Wdata_fmtr__json.java similarity index 93% rename from 400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_fmtr__json.java rename to 400_xowa/src/gplx/xowa/xtns/wbases/hwtrs/Wdata_fmtr__json.java index 49dcafce1..331248348 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_fmtr__json.java +++ b/400_xowa/src/gplx/xowa/xtns/wbases/hwtrs/Wdata_fmtr__json.java @@ -15,7 +15,7 @@ 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.xtns.wdatas.hwtrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; +package gplx.xowa.xtns.wbases.hwtrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wbases.*; import gplx.core.brys.fmtrs.*; import gplx.langs.jsons.*; import gplx.xowa.htmls.*; import gplx.xowa.apps.apis.xowa.html.*; class Wdata_fmtr__json implements gplx.core.brys.Bfr_arg { diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_fmtr__langtext_tbl.java b/400_xowa/src/gplx/xowa/xtns/wbases/hwtrs/Wdata_fmtr__langtext_tbl.java similarity index 95% rename from 400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_fmtr__langtext_tbl.java rename to 400_xowa/src/gplx/xowa/xtns/wbases/hwtrs/Wdata_fmtr__langtext_tbl.java index dfcd486c3..c856e07df 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_fmtr__langtext_tbl.java +++ b/400_xowa/src/gplx/xowa/xtns/wbases/hwtrs/Wdata_fmtr__langtext_tbl.java @@ -15,10 +15,10 @@ 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.xtns.wdatas.hwtrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; +package gplx.xowa.xtns.wbases.hwtrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wbases.*; import gplx.core.brys.fmtrs.*; import gplx.langs.htmls.*; -import gplx.xowa.langs.*; import gplx.xowa.wikis.*; import gplx.xowa.xtns.wdatas.core.*; import gplx.xowa.apps.apis.xowa.html.*; +import gplx.xowa.langs.*; import gplx.xowa.wikis.*; import gplx.xowa.xtns.wbases.core.*; import gplx.xowa.apps.apis.xowa.html.*; class Wdata_fmtr__langtext_tbl implements gplx.core.brys.Bfr_arg { private Wdata_toc_data toc_data; private Wdata_lang_sorter lang_sorter; private Xoapi_toggle_itm toggle_itm; private Wdata_fmtr__langtext_row fmtr_row; private byte[] col_hdr_lang_name, col_hdr_lang_code, col_hdr_text; private int list_len; diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_fmtr__oview_tbl.java b/400_xowa/src/gplx/xowa/xtns/wbases/hwtrs/Wdata_fmtr__oview_tbl.java similarity index 93% rename from 400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_fmtr__oview_tbl.java rename to 400_xowa/src/gplx/xowa/xtns/wbases/hwtrs/Wdata_fmtr__oview_tbl.java index e5d96553b..f33b790bc 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_fmtr__oview_tbl.java +++ b/400_xowa/src/gplx/xowa/xtns/wbases/hwtrs/Wdata_fmtr__oview_tbl.java @@ -15,10 +15,10 @@ 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.xtns.wdatas.hwtrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; +package gplx.xowa.xtns.wbases.hwtrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wbases.*; import gplx.core.brys.fmtrs.*; import gplx.langs.htmls.encoders.*; -import gplx.xowa.xtns.wdatas.core.*; import gplx.xowa.apps.apis.xowa.xtns.*; +import gplx.xowa.xtns.wbases.core.*; import gplx.xowa.apps.apis.xowa.xtns.*; class Wdata_fmtr__oview_tbl implements gplx.core.brys.Bfr_arg { private Xoapi_wikibase wikibase_api; private Gfo_url_encoder href_encoder; private Wdata_fmtr__oview_alias_itm fmtr_aliases = new Wdata_fmtr__oview_alias_itm(); diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_fmtr__slink.java b/400_xowa/src/gplx/xowa/xtns/wbases/hwtrs/Wdata_fmtr__slink.java similarity index 86% rename from 400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_fmtr__slink.java rename to 400_xowa/src/gplx/xowa/xtns/wbases/hwtrs/Wdata_fmtr__slink.java index 235af9325..4a68ca923 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_fmtr__slink.java +++ b/400_xowa/src/gplx/xowa/xtns/wbases/hwtrs/Wdata_fmtr__slink.java @@ -15,13 +15,13 @@ 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.xtns.wdatas.hwtrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; +package gplx.xowa.xtns.wbases.hwtrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wbases.*; import gplx.core.brys.fmtrs.*; import gplx.langs.htmls.encoders.*; import gplx.langs.htmls.*; -import gplx.xowa.langs.*; import gplx.xowa.xtns.wdatas.core.*; +import gplx.xowa.langs.*; import gplx.xowa.xtns.wbases.core.*; import gplx.xowa.wikis.domains.*; import gplx.xowa.apps.apis.xowa.html.*; import gplx.xowa.wikis.xwikis.*; class Wdata_fmtr__slink_grp implements gplx.core.brys.Bfr_arg { - private final Wdata_fmtr__slink_tbl fmtr_tbl = new Wdata_fmtr__slink_tbl(); private boolean is_empty; + private final Wdata_fmtr__slink_tbl fmtr_tbl = new Wdata_fmtr__slink_tbl(); private boolean is_empty; public void Init_by_ctor(Wdata_lang_sorter lang_sorter, Xoapi_toggle_mgr toggle_mgr, Wdata_lbl_mgr lbl_regy, Gfo_url_encoder href_encoder, Wdata_fmtr__toc_div fmtr_toc, Xow_xwiki_mgr xwiki_mgr) { fmtr_tbl.Init_by_ctor(lang_sorter, toggle_mgr, lbl_regy, href_encoder, fmtr_toc, xwiki_mgr); } @@ -34,7 +34,7 @@ class Wdata_fmtr__slink_grp implements gplx.core.brys.Bfr_arg { if (is_empty) return; fmtr.Bld_bfr_many(bfr, fmtr_tbl); } - private final Bry_fmtr fmtr = Bry_fmtr.new_(String_.Concat_lines_nl_skip_last + private final Bry_fmtr fmtr = Bry_fmtr.new_(String_.Concat_lines_nl_skip_last ( "" , "

    " , "
    ~{grps}" @@ -44,8 +44,8 @@ class Wdata_fmtr__slink_grp implements gplx.core.brys.Bfr_arg { ); } class Wdata_fmtr__slink_tbl implements gplx.core.brys.Bfr_arg { - private final Wdata_fmtr__slink_row fmtr_row = new Wdata_fmtr__slink_row(); - private final Wdata_slink_grp[] grps = new Wdata_slink_grp[Wdata_slink_grp.Idx__len]; + private final Wdata_fmtr__slink_row fmtr_row = new Wdata_fmtr__slink_row(); + private final Wdata_slink_grp[] grps = new Wdata_slink_grp[Wdata_slink_grp.Idx__len]; private Wdata_lang_sorter lang_sorter; private Wdata_hwtr_msgs msgs; public void Init_by_ctor(Wdata_lang_sorter lang_sorter, Xoapi_toggle_mgr toggle_mgr, Wdata_lbl_mgr lbl_regy, Gfo_url_encoder href_encoder, Wdata_fmtr__toc_div fmtr_toc, Xow_xwiki_mgr xwiki_mgr) { this.lang_sorter = lang_sorter; @@ -85,7 +85,7 @@ class Wdata_fmtr__slink_tbl implements gplx.core.brys.Bfr_arg { fmtr.Bld_bfr_many(bfr, grp.Toc_data().Href(), grp.Toc_data().Text(), msgs.Langtext_col_lang_name(), msgs.Langtext_col_lang_code(), msgs.Slink_col_hdr_text(), toggle_itm.Html_toggle_btn(), toggle_itm.Html_toggle_hdr(), fmtr_row); } } - private final Bry_fmtr fmtr = Bry_fmtr.new_(String_.Concat_lines_nl_skip_last + private final Bry_fmtr fmtr = Bry_fmtr.new_(String_.Concat_lines_nl_skip_last ( "" , "
    " , "
    " @@ -100,7 +100,7 @@ class Wdata_fmtr__slink_tbl implements gplx.core.brys.Bfr_arg { ); } class Wdata_fmtr__slink_row implements gplx.core.brys.Bfr_arg { - private final Wdata_fmtr__slink_badges fmtr_badges = new Wdata_fmtr__slink_badges(); private Xow_xwiki_mgr xwiki_mgr; + private final Wdata_fmtr__slink_badges fmtr_badges = new Wdata_fmtr__slink_badges(); private Xow_xwiki_mgr xwiki_mgr; private Gfo_url_encoder href_encoder; private Ordered_hash list; public void Init_by_ctor(Wdata_lbl_mgr lbl_regy, Gfo_url_encoder href_encoder, Xow_xwiki_mgr xwiki_mgr) { this.href_encoder = href_encoder; this.xwiki_mgr = xwiki_mgr; @@ -123,8 +123,8 @@ class Wdata_fmtr__slink_row implements gplx.core.brys.Bfr_arg { fmtr_row.Bld_bfr_many(bfr, lang_name, lang_key, wmf_key, href_site, domain_bry, href_encoder.Encode(page_name), Gfh_utl.Escape_html_as_bry(itm.Name()), fmtr_badges); } } - private static final byte[] Href_site_xowa = Bry_.new_a7("/site/"), Href_site_http = Bry_.new_a7("https://"); - private final Bry_fmtr fmtr_row = Bry_fmtr.new_(String_.Concat_lines_nl_skip_last + private static final byte[] Href_site_xowa = Bry_.new_a7("/site/"), Href_site_http = Bry_.new_a7("https://"); + private final Bry_fmtr fmtr_row = Bry_fmtr.new_(String_.Concat_lines_nl_skip_last ( "" , "
  • " // wikibase-sitelinkview-~{wmf_key} data-wb-siteid='~{wmf_key}' , " " @@ -159,7 +159,7 @@ class Wdata_fmtr__slink_badges implements gplx.core.brys.Bfr_arg { fmtr_row.Bld_bfr_many(bfr, ttl, cls, name); } } - private final Bry_fmtr fmtr_row = Bry_fmtr.new_ + private final Bry_fmtr fmtr_row = Bry_fmtr.new_ ( "\n " , "ttl", "cls", "name" ); diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_fmtr__toc_div.java b/400_xowa/src/gplx/xowa/xtns/wbases/hwtrs/Wdata_fmtr__toc_div.java similarity index 93% rename from 400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_fmtr__toc_div.java rename to 400_xowa/src/gplx/xowa/xtns/wbases/hwtrs/Wdata_fmtr__toc_div.java index 85e5454b8..84bcc4fa0 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_fmtr__toc_div.java +++ b/400_xowa/src/gplx/xowa/xtns/wbases/hwtrs/Wdata_fmtr__toc_div.java @@ -15,7 +15,7 @@ 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.xtns.wdatas.hwtrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; +package gplx.xowa.xtns.wbases.hwtrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wbases.*; import gplx.core.brys.fmtrs.*; import gplx.langs.htmls.encoders.*; import gplx.xowa.wikis.pages.wtxts.*; diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_hwtr_mgr.java b/400_xowa/src/gplx/xowa/xtns/wbases/hwtrs/Wdata_hwtr_mgr.java similarity index 95% rename from 400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_hwtr_mgr.java rename to 400_xowa/src/gplx/xowa/xtns/wbases/hwtrs/Wdata_hwtr_mgr.java index de5821ddb..676e4074c 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_hwtr_mgr.java +++ b/400_xowa/src/gplx/xowa/xtns/wbases/hwtrs/Wdata_hwtr_mgr.java @@ -15,10 +15,10 @@ 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.xtns.wdatas.hwtrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; +package gplx.xowa.xtns.wbases.hwtrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wbases.*; import gplx.core.brys.fmtrs.*; import gplx.langs.htmls.encoders.*; -import gplx.xowa.xtns.wdatas.core.*; import gplx.xowa.apps.apis.xowa.html.*; import gplx.xowa.wikis.xwikis.*; import gplx.xowa.apps.apis.xowa.xtns.*; +import gplx.xowa.xtns.wbases.core.*; import gplx.xowa.apps.apis.xowa.html.*; import gplx.xowa.wikis.xwikis.*; import gplx.xowa.apps.apis.xowa.xtns.*; public class Wdata_hwtr_mgr { private final Bry_bfr bfr = Bry_bfr_.Reset(Io_mgr.Len_mb); @gplx.Internal protected Wdata_fmtr__toc_div Fmtr_toc() {return fmtr_toc;} private final Wdata_fmtr__toc_div fmtr_toc = new Wdata_fmtr__toc_div(); diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_hwtr_mgr_tst.java b/400_xowa/src/gplx/xowa/xtns/wbases/hwtrs/Wdata_hwtr_mgr_tst.java similarity index 93% rename from 400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_hwtr_mgr_tst.java rename to 400_xowa/src/gplx/xowa/xtns/wbases/hwtrs/Wdata_hwtr_mgr_tst.java index 2b17c3331..b8d7e5738 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_hwtr_mgr_tst.java +++ b/400_xowa/src/gplx/xowa/xtns/wbases/hwtrs/Wdata_hwtr_mgr_tst.java @@ -15,9 +15,10 @@ 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.xtns.wdatas.hwtrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; +package gplx.xowa.xtns.wbases.hwtrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wbases.*; import org.junit.*; -import gplx.langs.jsons.*; import gplx.langs.htmls.encoders.*; import gplx.xowa.xtns.wdatas.core.*; import gplx.xowa.xtns.wdatas.parsers.*; import gplx.xowa.apps.apis.xowa.html.*; import gplx.xowa.wikis.xwikis.*; import gplx.xowa.apps.apis.xowa.xtns.*; +import gplx.langs.jsons.*; import gplx.langs.htmls.encoders.*; +import gplx.xowa.xtns.wbases.core.*; import gplx.xowa.xtns.wbases.claims.*; import gplx.xowa.xtns.wbases.claims.itms.*; import gplx.xowa.xtns.wbases.parsers.*; import gplx.xowa.apps.apis.xowa.html.*; import gplx.xowa.wikis.xwikis.*; import gplx.xowa.apps.apis.xowa.xtns.*; public class Wdata_hwtr_mgr_tst { @Before public void init() {fxt.init();} private Wdata_hwtr_mgr_fxt fxt = new Wdata_hwtr_mgr_fxt(); @Test public void Stub() {} @@ -238,7 +239,7 @@ public class Wdata_hwtr_mgr_tst { // .Init_resolved_pid(1, "prop_1") // .Test_doc(fxt.Wdoc_bldr() // .Add_claims -// ( mkr.Make_claim_str(1, "abc").Qualifiers_(mkr.Make_qualifiers(mkr.Make_qualifiers_grp(2, mkr.Make_claim_str(2, "qual_2")))) +// ( mkr.Make_claim_string(1, "abc").Qualifiers_(mkr.Make_qualifiers(mkr.Make_qualifiers_grp(2, mkr.Make_claim_string(2, "qual_2")))) // ).Xto_wdoc(), String_.Concat_lines_nl_skip_last // ( "" // , "

    Claims

    " @@ -304,7 +305,7 @@ class Wdata_hwtr_mgr_fxt { byte[] actl = doc_hwtr.Write(wdoc); Tfds.Eq_str_lines(expd, String_.new_u8(actl)); } - public void Test_claim_val(Wdata_claim_itm_core claim, String expd) { + public void Test_claim_val(Wbase_claim_base claim, String expd) { doc_hwtr.Init_by_wdoc(wdoc_bldr.Add_claims(claim).Xto_wdoc()); Bry_bfr tmp_bfr = Bry_bfr_.New(); Wdata_visitor__html_wtr html_wtr = new Wdata_visitor__html_wtr().Init(Bry_.Empty, tmp_bfr, doc_hwtr.Msgs(), doc_hwtr.Lbl_mgr()); diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_hwtr_msgs.java b/400_xowa/src/gplx/xowa/xtns/wbases/hwtrs/Wdata_hwtr_msgs.java similarity index 97% rename from 400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_hwtr_msgs.java rename to 400_xowa/src/gplx/xowa/xtns/wbases/hwtrs/Wdata_hwtr_msgs.java index 9ff286b5e..c65969ae7 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_hwtr_msgs.java +++ b/400_xowa/src/gplx/xowa/xtns/wbases/hwtrs/Wdata_hwtr_msgs.java @@ -15,7 +15,7 @@ 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.xtns.wdatas.hwtrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; +package gplx.xowa.xtns.wbases.hwtrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wbases.*; import gplx.core.brys.fmtrs.*; import gplx.xowa.langs.msgs.*; import gplx.xowa.wikis.domains.*; diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_lbl_itm.java b/400_xowa/src/gplx/xowa/xtns/wbases/hwtrs/Wdata_lbl_itm.java similarity index 75% rename from 400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_lbl_itm.java rename to 400_xowa/src/gplx/xowa/xtns/wbases/hwtrs/Wdata_lbl_itm.java index 1b3b1e2b9..8eed76cd0 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_lbl_itm.java +++ b/400_xowa/src/gplx/xowa/xtns/wbases/hwtrs/Wdata_lbl_itm.java @@ -15,16 +15,16 @@ 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.xtns.wdatas.hwtrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; -import gplx.xowa.xtns.wdatas.core.*; +package gplx.xowa.xtns.wbases.hwtrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wbases.*; +import gplx.xowa.xtns.wbases.core.*; public class Wdata_lbl_itm { public Wdata_lbl_itm(boolean is_pid, int id, boolean text_en_enabled) { this.is_pid = is_pid; this.id = id; this.text_en_enabled = text_en_enabled; this.ttl = Make_ttl(is_pid, id); } - public boolean Is_pid() {return is_pid;} private final boolean is_pid; - public int Id() {return id;} private final int id; - public byte[] Ttl() {return ttl;} private final byte[] ttl; + public boolean Is_pid() {return is_pid;} private final boolean is_pid; + public int Id() {return id;} private final int id; + public byte[] Ttl() {return ttl;} private final byte[] ttl; public byte[] Lang() {return lang;} private byte[] lang; public byte[] Text() {return text;} private byte[] text; public byte[] Text_en() {return text_en;} public void Text_en_(byte[] v) {text_en = v;} private byte[] text_en = Bry_.Empty; @@ -36,8 +36,8 @@ public class Wdata_lbl_itm { : Bry_.Add(Ttl_prefix_qid, Int_.To_bry(id)) ; } - private static final byte[] Ttl_prefix_pid = Bry_.new_a7("Property:P"), Ttl_prefix_qid = Bry_.new_a7("Q"); - private static final byte[] Extract_ttl_qid = Bry_.new_a7("http://www.wikidata.org/entity/"); + private static final byte[] Ttl_prefix_pid = Bry_.new_a7("Property:P"), Ttl_prefix_qid = Bry_.new_a7("Q"); + private static final byte[] Extract_ttl_qid = Bry_.new_a7("http://www.wikidata.org/entity/"); public static byte[] Extract_ttl(byte[] href) { if (Bry_.Has_at_bgn(href, Extract_ttl_qid)) // qid return Bry_.Mid(href, Extract_ttl_qid.length, href.length); diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_lbl_mgr.java b/400_xowa/src/gplx/xowa/xtns/wbases/hwtrs/Wdata_lbl_mgr.java similarity index 85% rename from 400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_lbl_mgr.java rename to 400_xowa/src/gplx/xowa/xtns/wbases/hwtrs/Wdata_lbl_mgr.java index 1fe647928..6d005bfa7 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_lbl_mgr.java +++ b/400_xowa/src/gplx/xowa/xtns/wbases/hwtrs/Wdata_lbl_mgr.java @@ -15,9 +15,9 @@ 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.xtns.wdatas.hwtrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; +package gplx.xowa.xtns.wbases.hwtrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wbases.*; import gplx.core.primitives.*; -import gplx.xowa.xtns.wdatas.core.*; +import gplx.xowa.xtns.wbases.core.*; import gplx.xowa.xtns.wbases.claims.*; import gplx.xowa.xtns.wbases.claims.itms.*; public class Wdata_lbl_mgr { private Hash_adp_bry ttl_hash = Hash_adp_bry.ci_a7(); private Hash_adp qid_hash = Hash_adp_.New(), pid_hash = Hash_adp_.New(); private Int_obj_ref int_hash_key = Int_obj_ref.New_neg1(); @@ -79,37 +79,37 @@ public class Wdata_lbl_mgr { Ordered_hash claim_list = wdoc.Claim_list(); int len = claim_list.Count(); for (int i = 0; i < len; ++i) { - Wdata_claim_grp grp = (Wdata_claim_grp)claim_list.Get_at(i); + Wbase_claim_grp grp = (Wbase_claim_grp)claim_list.Get_at(i); int grp_len = grp.Len(); for (int j = 0; j < grp_len; ++j) { - Wdata_claim_itm_core itm = (Wdata_claim_itm_core)grp.Get_at(j); + Wbase_claim_base itm = (Wbase_claim_base)grp.Get_at(j); this.Queue_if_missing__pid(itm.Pid()); itm.Welcome(lbl_gatherer); - Wdata_claim_grp_list qual_list = itm.Qualifiers(); + Wbase_claim_grp_list qual_list = itm.Qualifiers(); if (qual_list != null) { int qual_list_len = qual_list.Len(); for (int k = 0; k < qual_list_len; ++k) { - Wdata_claim_grp qual_grp = qual_list.Get_at(k); + Wbase_claim_grp qual_grp = qual_list.Get_at(k); int qual_grp_len = qual_grp.Len(); for (int m = 0; m < qual_grp_len; ++m) { - Wdata_claim_itm_base qual = qual_grp.Get_at(m); + Wbase_claim_base qual = qual_grp.Get_at(m); this.Queue_if_missing__pid(qual.Pid()); qual.Welcome(lbl_gatherer); } } } - Wdata_references_grp[] ref_grp_ary = itm.References(); + Wbase_references_grp[] ref_grp_ary = itm.References(); if (ref_grp_ary != null) { int ref_grp_ary_len = ref_grp_ary.length; for (int k = 0; k < ref_grp_ary_len; ++k) { - Wdata_references_grp ref_grp = ref_grp_ary[k]; - Wdata_claim_grp_list ref_list = ref_grp.References(); + Wbase_references_grp ref_grp = ref_grp_ary[k]; + Wbase_claim_grp_list ref_list = ref_grp.References(); int ref_list_len = ref_list.Len(); for (int m = 0; m < ref_list_len; ++m) { - Wdata_claim_grp claim_grp = ref_list.Get_at(m); + Wbase_claim_grp claim_grp = ref_list.Get_at(m); int claim_grp_len = claim_grp.Len(); for (int n = 0; n < claim_grp_len; ++n) { - Wdata_claim_itm_core claim = claim_grp.Get_at(n); + Wbase_claim_base claim = claim_grp.Get_at(n); this.Queue_if_missing__pid(claim.Pid()); claim.Welcome(lbl_gatherer); } diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_lbl_wkr.java b/400_xowa/src/gplx/xowa/xtns/wbases/hwtrs/Wdata_lbl_wkr.java similarity index 82% rename from 400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_lbl_wkr.java rename to 400_xowa/src/gplx/xowa/xtns/wbases/hwtrs/Wdata_lbl_wkr.java index 956d20dc2..4bc6ef5ba 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_lbl_wkr.java +++ b/400_xowa/src/gplx/xowa/xtns/wbases/hwtrs/Wdata_lbl_wkr.java @@ -15,8 +15,8 @@ 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.xtns.wdatas.hwtrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; -import gplx.xowa.xtns.wdatas.core.*; +package gplx.xowa.xtns.wbases.hwtrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wbases.*; +import gplx.xowa.xtns.wbases.core.*; public interface Wdata_lbl_wkr { void Resolve(Wdata_lbl_mgr lbl_mgr, Wdata_lang_sorter sorter); } diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_lbl_wkr_wiki.java b/400_xowa/src/gplx/xowa/xtns/wbases/hwtrs/Wdata_lbl_wkr_wiki.java similarity index 90% rename from 400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_lbl_wkr_wiki.java rename to 400_xowa/src/gplx/xowa/xtns/wbases/hwtrs/Wdata_lbl_wkr_wiki.java index 3ab9d06b4..4cbb165c4 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_lbl_wkr_wiki.java +++ b/400_xowa/src/gplx/xowa/xtns/wbases/hwtrs/Wdata_lbl_wkr_wiki.java @@ -15,9 +15,9 @@ 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.xtns.wdatas.hwtrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; +package gplx.xowa.xtns.wbases.hwtrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wbases.*; import gplx.xowa.langs.*; -import gplx.xowa.xtns.wdatas.core.*; import gplx.xowa.apps.apis.xowa.xtns.*; +import gplx.xowa.xtns.wbases.core.*; import gplx.xowa.apps.apis.xowa.xtns.*; public class Wdata_lbl_wkr_wiki implements Wdata_lbl_wkr { private Wdata_wiki_mgr wdata_mgr; private Xoapi_wikibase wikibase_api; diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_slink_grp.java b/400_xowa/src/gplx/xowa/xtns/wbases/hwtrs/Wdata_slink_grp.java similarity index 84% rename from 400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_slink_grp.java rename to 400_xowa/src/gplx/xowa/xtns/wbases/hwtrs/Wdata_slink_grp.java index 1bfda90f9..2d4a67173 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_slink_grp.java +++ b/400_xowa/src/gplx/xowa/xtns/wbases/hwtrs/Wdata_slink_grp.java @@ -15,18 +15,18 @@ 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.xtns.wdatas.hwtrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; -import gplx.xowa.xtns.wdatas.core.*; import gplx.xowa.apps.apis.xowa.html.*; +package gplx.xowa.xtns.wbases.hwtrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wbases.*; +import gplx.xowa.xtns.wbases.core.*; import gplx.xowa.apps.apis.xowa.html.*; import gplx.xowa.wikis.domains.*; class Wdata_slink_grp { public Wdata_slink_grp(int tid, byte[] wiki_name, Xoapi_toggle_itm toggle_itm, Wdata_toc_data toc_data) { this.tid = tid; this.wiki_name = wiki_name; this.toggle_itm = toggle_itm; this.toc_data = toc_data; } - public int Tid() {return tid;} private final int tid; - public byte[] Wiki_name() {return wiki_name;} private final byte[] wiki_name; - public Wdata_toc_data Toc_data() {return toc_data;} private final Wdata_toc_data toc_data; + public int Tid() {return tid;} private final int tid; + public byte[] Wiki_name() {return wiki_name;} private final byte[] wiki_name; + public Wdata_toc_data Toc_data() {return toc_data;} private final Wdata_toc_data toc_data; public Xoapi_toggle_itm Toggle_itm() {return toggle_itm;} private Xoapi_toggle_itm toggle_itm; - public Ordered_hash Rows() {return rows;} private final Ordered_hash rows = Ordered_hash_.New(); + public Ordered_hash Rows() {return rows;} private final Ordered_hash rows = Ordered_hash_.New(); public static void Sift(Wdata_slink_grp[] rv, Ordered_hash list) { for (int i = 0; i < Idx__len; ++i) rv[i].Rows().Clear(); @@ -79,5 +79,5 @@ class Wdata_slink_grp { } } public static final int Idx__len = 9, Idx_w = 0, Idx_d = 1, Idx_s = 2, Idx_v = 3, Idx_q = 4, Idx_b = 5, Idx_u = 6, Idx_n = 7, Idx_x = 8; - private static final byte[] Name_special = Bry_.new_a7("special"); + private static final byte[] Name_special = Bry_.new_a7("special"); } diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_toc_data.java b/400_xowa/src/gplx/xowa/xtns/wbases/hwtrs/Wdata_toc_data.java similarity index 92% rename from 400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_toc_data.java rename to 400_xowa/src/gplx/xowa/xtns/wbases/hwtrs/Wdata_toc_data.java index fcfb6e400..b62aa6d6f 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_toc_data.java +++ b/400_xowa/src/gplx/xowa/xtns/wbases/hwtrs/Wdata_toc_data.java @@ -15,7 +15,7 @@ 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.xtns.wdatas.hwtrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; +package gplx.xowa.xtns.wbases.hwtrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wbases.*; import gplx.core.brys.fmtrs.*; import gplx.langs.htmls.encoders.*; class Wdata_toc_data { diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_visitor__html_wtr.java b/400_xowa/src/gplx/xowa/xtns/wbases/hwtrs/Wdata_visitor__html_wtr.java similarity index 78% rename from 400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_visitor__html_wtr.java rename to 400_xowa/src/gplx/xowa/xtns/wbases/hwtrs/Wdata_visitor__html_wtr.java index 76a814cc4..4eaa2922e 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_visitor__html_wtr.java +++ b/400_xowa/src/gplx/xowa/xtns/wbases/hwtrs/Wdata_visitor__html_wtr.java @@ -15,20 +15,20 @@ 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.xtns.wdatas.hwtrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; +package gplx.xowa.xtns.wbases.hwtrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wbases.*; import gplx.core.brys.fmtrs.*; -import gplx.xowa.xtns.wdatas.core.*; -class Wdata_visitor__html_wtr implements Wdata_claim_visitor { +import gplx.xowa.xtns.wbases.core.*; import gplx.xowa.xtns.wbases.claims.*; import gplx.xowa.xtns.wbases.claims.enums.*; import gplx.xowa.xtns.wbases.claims.itms.*; +class Wdata_visitor__html_wtr implements Wbase_claim_visitor { private byte[] ttl; private Bry_bfr tmp_bfr; private Wdata_hwtr_msgs msgs; private Wdata_lbl_mgr lbl_mgr; private final Bry_fmtr tmp_time_fmtr = Bry_fmtr.new_(); private final Bry_bfr tmp_time_bfr = Bry_bfr_.New_w_size(32); public Wdata_visitor__html_wtr Init(byte[] ttl, Bry_bfr tmp_bfr, Wdata_hwtr_msgs msgs, Wdata_lbl_mgr lbl_mgr) { this.ttl = ttl; this.tmp_bfr = tmp_bfr; this.msgs = msgs; this.lbl_mgr = lbl_mgr; return this; } - public void Visit_str(Wdata_claim_itm_str itm) { + public void Visit_str(Wbase_claim_string itm) { tmp_bfr.Add(itm.Val_str()); } - public void Visit_entity(Wdata_claim_itm_entity itm) { + public void Visit_entity(Wbase_claim_entity itm) { int entity_id = itm.Entity_id(); byte[] text = itm.Entity_tid_is_qid() ? lbl_mgr.Get_text__qid(entity_id) : lbl_mgr.Get_text__pid(entity_id); if (text == null) {// handle incomplete wikidata dumps; DATE:2015-06-11 @@ -37,11 +37,11 @@ class Wdata_visitor__html_wtr implements Wdata_claim_visitor { } Wdata_hwtr_mgr.Write_link_wikidata(tmp_bfr, itm.Page_ttl_gui(), text); } - public void Visit_monolingualtext(Wdata_claim_itm_monolingualtext itm) { + public void Visit_monolingualtext(Wbase_claim_monolingualtext itm) { tmp_bfr.Add(itm.Text()); tmp_bfr.Add_byte(Byte_ascii.Space).Add_byte(Byte_ascii.Brack_bgn).Add(itm.Lang()).Add_byte(Byte_ascii.Brack_end); } - public void Visit_quantity(Wdata_claim_itm_quantity itm) { + public void Visit_quantity(Wbase_claim_quantity itm) { try { Decimal_adp val = itm.Amount_as_num(); Decimal_adp hi = itm.Ubound_as_num(); @@ -64,14 +64,14 @@ class Wdata_visitor__html_wtr implements Wdata_claim_visitor { } } byte[] unit = itm.Unit(); - if (!Bry_.Eq(unit, Wdata_claim_itm_quantity.Unit_1)) + if (!Bry_.Eq(unit, Wbase_claim_quantity.Unit_1)) tmp_bfr.Add_byte_space().Add(unit); } catch (Exception e) { Gfo_usr_dlg_.Instance.Warn_many("", "", "failed to write quantity; ttl=~{0} pid=~{1} err=~{2}", ttl, itm.Pid(), Err_.Message_gplx_full(e)); } } private static final byte[] Time_plus_minus_spr = Bry_.new_a7(" / "); - public void Visit_time(Wdata_claim_itm_time itm) {itm.Write_to_bfr(tmp_bfr, tmp_time_bfr, tmp_time_fmtr, msgs, ttl);} - public void Visit_globecoordinate(Wdata_claim_itm_globecoordinate itm) { + public void Visit_time(Wbase_claim_time itm) {itm.Write_to_bfr(tmp_bfr, tmp_time_bfr, tmp_time_fmtr, msgs, ttl);} + public void Visit_globecoordinate(Wbase_claim_globecoordinate itm) { try { Decimal_adp precision_frac = itm.Prc_as_num(); // precision is a decimal; EX: .00027777 int precision_int = Math_.Log10(Decimal_adp_.One.Divide(precision_frac).To_int()); // convert precision to log10 integer; EX: .00027777 -> 3600 -> 3 @@ -89,10 +89,10 @@ class Wdata_visitor__html_wtr implements Wdata_claim_visitor { Gfo_usr_dlg_.Instance.Warn_many("", "", "failed to write globecoordinate; ttl=~{0} pid=~{1} err=~{2}", ttl, itm.Pid(), Err_.Message_gplx_full(e)); } } - public void Visit_system(Wdata_claim_itm_system itm) { + public void Visit_system(Wbase_claim_value itm) { switch (itm.Snak_tid()) { - case Wdata_dict_snak_tid.Tid_somevalue: tmp_bfr.Add(msgs.Val_tid_somevalue()); break; - case Wdata_dict_snak_tid.Tid_novalue: tmp_bfr.Add(msgs.Val_tid_novalue()); break; + case Wbase_claim_value_type_.Tid__somevalue: tmp_bfr.Add(msgs.Val_tid_somevalue()); break; + case Wbase_claim_value_type_.Tid__novalue: tmp_bfr.Add(msgs.Val_tid_novalue()); break; } } } diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_visitor__html_wtr_tst.java b/400_xowa/src/gplx/xowa/xtns/wbases/hwtrs/Wdata_visitor__html_wtr_tst.java similarity index 84% rename from 400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_visitor__html_wtr_tst.java rename to 400_xowa/src/gplx/xowa/xtns/wbases/hwtrs/Wdata_visitor__html_wtr_tst.java index 8c035348a..2f6b89029 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_visitor__html_wtr_tst.java +++ b/400_xowa/src/gplx/xowa/xtns/wbases/hwtrs/Wdata_visitor__html_wtr_tst.java @@ -15,9 +15,9 @@ 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.xtns.wdatas.hwtrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; +package gplx.xowa.xtns.wbases.hwtrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wbases.*; import org.junit.*; -import gplx.langs.jsons.*; import gplx.xowa.xtns.wdatas.core.*; import gplx.xowa.xtns.wdatas.parsers.*; import gplx.xowa.apps.apis.xowa.html.*; +import gplx.langs.jsons.*; import gplx.xowa.xtns.wbases.core.*; import gplx.xowa.xtns.wbases.claims.itms.times.*; import gplx.xowa.xtns.wbases.parsers.*; import gplx.xowa.apps.apis.xowa.html.*; public class Wdata_visitor__html_wtr_tst { @Before public void init() {fxt.init();} private Wdata_hwtr_mgr_fxt fxt = new Wdata_hwtr_mgr_fxt(); @Test public void Monolingualtext() { @@ -30,7 +30,7 @@ public class Wdata_visitor__html_wtr_tst { @Test public void Time() { fxt .Test_claim_val - ( fxt.Wdata_fxt().Make_claim_time(1, "2001-02-03 04:05:06", Wdata_date.Fmt_ymdhns) + ( fxt.Wdata_fxt().Make_claim_time(1, "2001-02-03 04:05:06", Wbase_date.Fmt_ymdhns) , "4:05:06 3 Feb 2001" ); } diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_visitor__lbl_gatherer.java b/400_xowa/src/gplx/xowa/xtns/wbases/hwtrs/Wdata_visitor__lbl_gatherer.java similarity index 62% rename from 400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_visitor__lbl_gatherer.java rename to 400_xowa/src/gplx/xowa/xtns/wbases/hwtrs/Wdata_visitor__lbl_gatherer.java index 06aa8d2fd..54a4d4605 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_visitor__lbl_gatherer.java +++ b/400_xowa/src/gplx/xowa/xtns/wbases/hwtrs/Wdata_visitor__lbl_gatherer.java @@ -15,29 +15,29 @@ 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.xtns.wdatas.hwtrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; -import gplx.xowa.xtns.wdatas.core.*; -class Wdata_visitor__lbl_gatherer implements Wdata_claim_visitor { +package gplx.xowa.xtns.wbases.hwtrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wbases.*; +import gplx.xowa.xtns.wbases.core.*; import gplx.xowa.xtns.wbases.claims.*; import gplx.xowa.xtns.wbases.claims.itms.*; +class Wdata_visitor__lbl_gatherer implements Wbase_claim_visitor { private Wdata_lbl_mgr lbl_mgr; public Wdata_visitor__lbl_gatherer(Wdata_lbl_mgr lbl_mgr) {this.lbl_mgr = lbl_mgr;} - public void Visit_entity(Wdata_claim_itm_entity itm) { + public void Visit_entity(Wbase_claim_entity itm) { if (itm.Entity_tid_is_qid()) lbl_mgr.Queue_if_missing__qid(itm.Entity_id()); else lbl_mgr.Queue_if_missing__pid(itm.Entity_id()); } - public void Visit_time(Wdata_claim_itm_time itm) { + public void Visit_time(Wbase_claim_time itm) { byte[] ttl = Wdata_lbl_itm.Extract_ttl(itm.Calendar()); itm.Calendar_ttl_(ttl); lbl_mgr.Queue_if_missing__ttl(ttl); } - public void Visit_globecoordinate(Wdata_claim_itm_globecoordinate itm) { + public void Visit_globecoordinate(Wbase_claim_globecoordinate itm) { byte[] ttl = Wdata_lbl_itm.Extract_ttl(itm.Glb()); itm.Glb_ttl_(ttl); lbl_mgr.Queue_if_missing__ttl(ttl); } - public void Visit_str(Wdata_claim_itm_str itm) {} - public void Visit_monolingualtext(Wdata_claim_itm_monolingualtext itm) {} - public void Visit_quantity(Wdata_claim_itm_quantity itm) {} - public void Visit_system(Wdata_claim_itm_system itm) {} + public void Visit_str(Wbase_claim_string itm) {} + public void Visit_monolingualtext(Wbase_claim_monolingualtext itm) {} + public void Visit_quantity(Wbase_claim_quantity itm) {} + public void Visit_system(Wbase_claim_value itm) {} } diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Io_stream_rdr_mgr.java b/400_xowa/src/gplx/xowa/xtns/wbases/imports/Io_stream_rdr_mgr.java similarity index 94% rename from 400_xowa/src/gplx/xowa/xtns/wdatas/imports/Io_stream_rdr_mgr.java rename to 400_xowa/src/gplx/xowa/xtns/wbases/imports/Io_stream_rdr_mgr.java index 80728a704..8aa151692 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Io_stream_rdr_mgr.java +++ b/400_xowa/src/gplx/xowa/xtns/wbases/imports/Io_stream_rdr_mgr.java @@ -15,7 +15,7 @@ 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.xtns.wdatas.imports; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; +package gplx.xowa.xtns.wbases.imports; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wbases.*; import gplx.core.ios.*; import gplx.core.ios.streams.*; import gplx.core.criterias.*; import gplx.core.envs.*; class Io_stream_rdr_mgr { public static Io_stream_rdr Get_rdr_or_null(Io_url src_fil, Io_url src_dir, Io_stream_unzip_mgr unzip_mgr, String... filter_ary) { diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Wdata_idx_mgr_base.java b/400_xowa/src/gplx/xowa/xtns/wbases/imports/Wdata_idx_mgr_base.java similarity index 89% rename from 400_xowa/src/gplx/xowa/xtns/wdatas/imports/Wdata_idx_mgr_base.java rename to 400_xowa/src/gplx/xowa/xtns/wbases/imports/Wdata_idx_mgr_base.java index ea5c18313..6cde487c1 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Wdata_idx_mgr_base.java +++ b/400_xowa/src/gplx/xowa/xtns/wbases/imports/Wdata_idx_mgr_base.java @@ -15,11 +15,11 @@ 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.xtns.wdatas.imports; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; +package gplx.xowa.xtns.wbases.imports; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wbases.*; import gplx.langs.jsons.*; import gplx.core.ios.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wkrs.*; import gplx.xowa.langs.*; import gplx.xowa.langs.parsers.*; -import gplx.xowa.xtns.wdatas.imports.*; +import gplx.xowa.xtns.wbases.imports.*; abstract class Wdata_idx_mgr_base { public void Ctor(Xob_itm_dump_base wkr, Xob_bldr bldr, Xowe_wiki wiki, int dump_fil_len) { this.wkr = wkr; this.wiki = wiki; this.bldr = bldr; this.dump_fil_len = dump_fil_len; diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Wdata_idx_wtr.java b/400_xowa/src/gplx/xowa/xtns/wbases/imports/Wdata_idx_wtr.java similarity index 95% rename from 400_xowa/src/gplx/xowa/xtns/wdatas/imports/Wdata_idx_wtr.java rename to 400_xowa/src/gplx/xowa/xtns/wbases/imports/Wdata_idx_wtr.java index caae30313..be172fd47 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Wdata_idx_wtr.java +++ b/400_xowa/src/gplx/xowa/xtns/wbases/imports/Wdata_idx_wtr.java @@ -15,7 +15,7 @@ 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.xtns.wdatas.imports; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; +package gplx.xowa.xtns.wbases.imports; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wbases.*; import gplx.core.ios.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.texts.tdbs.*; class Wdata_idx_wtr { diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wbase_json_dump_cmd.java b/400_xowa/src/gplx/xowa/xtns/wbases/imports/Xob_wbase_json_dump_cmd.java similarity index 91% rename from 400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wbase_json_dump_cmd.java rename to 400_xowa/src/gplx/xowa/xtns/wbases/imports/Xob_wbase_json_dump_cmd.java index 01a91b2dd..fce46d25c 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wbase_json_dump_cmd.java +++ b/400_xowa/src/gplx/xowa/xtns/wbases/imports/Xob_wbase_json_dump_cmd.java @@ -15,7 +15,7 @@ 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.xtns.wdatas.imports; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; +package gplx.xowa.xtns.wbases.imports; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wbases.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wkrs.*; public class Xob_wbase_json_dump_cmd implements Xob_cmd { private final Xob_wbase_json_dump_parser json_dump_parser; diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wbase_json_dump_db.java b/400_xowa/src/gplx/xowa/xtns/wbases/imports/Xob_wbase_json_dump_db.java similarity index 91% rename from 400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wbase_json_dump_db.java rename to 400_xowa/src/gplx/xowa/xtns/wbases/imports/Xob_wbase_json_dump_db.java index 571d75334..5cbcce7bd 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wbase_json_dump_db.java +++ b/400_xowa/src/gplx/xowa/xtns/wbases/imports/Xob_wbase_json_dump_db.java @@ -15,14 +15,14 @@ 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.xtns.wdatas.imports; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; +package gplx.xowa.xtns.wbases.imports; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wbases.*; import gplx.core.ios.*; import gplx.langs.jsons.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*; import gplx.xowa.bldrs.cmds.texts.sqls.*; import gplx.xowa.wikis.nss.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.data.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.apps.apis.xowa.bldrs.imports.*; -import gplx.xowa.xtns.wdatas.core.*; import gplx.xowa.xtns.wdatas.parsers.*; +import gplx.xowa.xtns.wbases.core.*; import gplx.xowa.xtns.wbases.parsers.*; class Xob_wbase_json_dump_db { private final Gfo_usr_dlg usr_dlg; private final Xoae_app app; private final Xowe_wiki wiki; private final Xob_bldr bldr; private final Json_parser json_parser; @@ -49,10 +49,10 @@ class Xob_wbase_json_dump_db { wiki.Ns_mgr().Init(); Xoapi_import import_cfg = app.Api_root().Bldr().Wiki().Import(); this.ns_to_db_mgr = new Xob_ns_to_db_mgr(new Xob_ns_to_db_wkr__text(), db_mgr, import_cfg.Text_db_max()); - this.text_zip_mgr = Xoa_app_.Utl__zip_mgr(); text_zip_tid = import_cfg.Zip_tid_text(); + this.text_zip_mgr = wiki.Utl__zip_mgr(); text_zip_tid = import_cfg.Zip_tid_text(); byte[] ns_file_map = import_cfg.New_ns_file_map(src_fil_len); Xob_ns_file_itm.Init_ns_bldr_data(Xow_db_file_.Tid__text, wiki.Ns_mgr(), ns_file_map); - this.page_modified_on = DateAdp_.Now(); + this.page_modified_on = Datetime_now.Get(); this.page_core_tbl = db_mgr.Tbl__page(); page_tbl.Insert_bgn(); qid_cmd.Page_wkr__bgn(); diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wbase_json_dump_parser.java b/400_xowa/src/gplx/xowa/xtns/wbases/imports/Xob_wbase_json_dump_parser.java similarity index 95% rename from 400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wbase_json_dump_parser.java rename to 400_xowa/src/gplx/xowa/xtns/wbases/imports/Xob_wbase_json_dump_parser.java index 9ba7ea39c..84daa37af 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wbase_json_dump_parser.java +++ b/400_xowa/src/gplx/xowa/xtns/wbases/imports/Xob_wbase_json_dump_parser.java @@ -15,7 +15,7 @@ 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.xtns.wdatas.imports; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; +package gplx.xowa.xtns.wbases.imports; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wbases.*; import gplx.core.ios.*; import gplx.core.ios.streams.*; import gplx.xowa.bldrs.*; import gplx.xowa.wikis.data.tbls.*; diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wbase_ns_parser.java b/400_xowa/src/gplx/xowa/xtns/wbases/imports/Xob_wbase_ns_parser.java similarity index 89% rename from 400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wbase_ns_parser.java rename to 400_xowa/src/gplx/xowa/xtns/wbases/imports/Xob_wbase_ns_parser.java index 1bb559cc8..438398987 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wbase_ns_parser.java +++ b/400_xowa/src/gplx/xowa/xtns/wbases/imports/Xob_wbase_ns_parser.java @@ -15,14 +15,14 @@ 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.xtns.wdatas.imports; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; +package gplx.xowa.xtns.wbases.imports; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wbases.*; import gplx.dbs.*; import gplx.xowa.wikis.nss.*; import gplx.xowa.wikis.domains.*; import gplx.xowa.bldrs.wms.sites.*; class Xob_wbase_ns_parser { - private final Hash_adp_bry ns_mgr_hash = Hash_adp_bry.cs(); - private final Site_core_db core_db; + private final Hash_adp_bry ns_mgr_hash = Hash_adp_bry.cs(); + private final Site_core_db core_db; public Xob_wbase_ns_parser(Io_url url) { this.core_db = new Site_core_db(url); } diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wdata_db_cmd.java b/400_xowa/src/gplx/xowa/xtns/wbases/imports/Xob_wdata_db_cmd.java similarity index 90% rename from 400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wdata_db_cmd.java rename to 400_xowa/src/gplx/xowa/xtns/wbases/imports/Xob_wdata_db_cmd.java index ed4f40e19..2c1e4c119 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wdata_db_cmd.java +++ b/400_xowa/src/gplx/xowa/xtns/wbases/imports/Xob_wdata_db_cmd.java @@ -15,13 +15,14 @@ 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.xtns.wdatas.imports; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; +package gplx.xowa.xtns.wbases.imports; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wbases.*; import gplx.dbs.*; import gplx.dbs.cfgs.*; import gplx.dbs.engines.sqlite.*; import gplx.xowa.bldrs.*; import gplx.xowa.files.fsdb.*; import gplx.xowa.files.origs.*; import gplx.xowa.bldrs.wkrs.*; -import gplx.langs.jsons.*; import gplx.xowa.xtns.wdatas.*; import gplx.xowa.xtns.wdatas.core.*; +import gplx.langs.jsons.*; import gplx.xowa.langs.*; import gplx.xowa.wikis.nss.*; import gplx.xowa.bldrs.cmds.*; import gplx.xowa.wikis.data.tbls.*; +import gplx.xowa.xtns.wbases.*; import gplx.xowa.xtns.wbases.core.*; import gplx.xowa.xtns.wbases.claims.*; import gplx.xowa.xtns.wbases.claims.itms.*; public class Xob_wdata_db_cmd extends Xob_dump_mgr_base implements Xob_cmd { private Wdata_tbl_mgr tbl_mgr = new Wdata_tbl_mgr(); private Wdata_wiki_mgr wdata_mgr; private Json_parser json_parser; @@ -68,9 +69,9 @@ class Wdata_tbl_mgr { public Wdata_alias_tbl Alias_tbl() {return alias_tbl;} private Wdata_alias_tbl alias_tbl = new Wdata_alias_tbl(); public Wdata_description_tbl Description_tbl() {return description_tbl;} private Wdata_description_tbl description_tbl = new Wdata_description_tbl(); public Wdata_link_tbl Link_tbl() {return link_tbl;} private Wdata_link_tbl link_tbl = new Wdata_link_tbl(); - public Wdata_claim_tbl Claim_tbl() {return claim_tbl;} private Wdata_claim_tbl claim_tbl = new Wdata_claim_tbl(); - public Wdata_claim_time_tbl Claim_time_tbl() {return claim_time_tbl;} private Wdata_claim_time_tbl claim_time_tbl = new Wdata_claim_time_tbl(); - public Wdata_claim_geo_tbl Claim_geo_tbl() {return claim_geo_tbl;} private Wdata_claim_geo_tbl claim_geo_tbl = new Wdata_claim_geo_tbl(); + public Wbase_claim_tbl Claim_tbl() {return claim_tbl;} private Wbase_claim_tbl claim_tbl = new Wbase_claim_tbl(); + public Wbase_claim_time_tbl Claim_time_tbl() {return claim_time_tbl;} private Wbase_claim_time_tbl claim_time_tbl = new Wbase_claim_time_tbl(); + public Wbase_claim_geo_tbl Claim_geo_tbl() {return claim_geo_tbl;} private Wbase_claim_geo_tbl claim_geo_tbl = new Wbase_claim_geo_tbl(); public void Init(Db_conn conn) { this.conn = conn; for (int i = 0; i < tbls_len; i++) @@ -224,7 +225,7 @@ class Wdata_link_tbl extends Wdata_tbl_base { } private static final String Fld_page_id = "page_id", Fld_wiki_key = "wiki_key", Fld_val = "val"; } -class Wdata_claim_tbl extends Wdata_tbl_base { +class Wbase_claim_tbl extends Wdata_tbl_base { @Override public String Tbl_name() {return "wdata_claim";} @Override public String Tbl_create_sql() { return String_.Concat_lines_nl @@ -257,12 +258,12 @@ class Wdata_claim_tbl extends Wdata_tbl_base { Ordered_hash list = wdoc.Claim_list(); int list_len = list.Count(); for (int i = 0; i < list_len; i++) { - Wdata_claim_grp claim_grp = (Wdata_claim_grp)list.Get_at(i); + Wbase_claim_grp claim_grp = (Wbase_claim_grp)list.Get_at(i); int itms_len = claim_grp.Len(); int entity_id = -1; byte[] claim_val = Bry_.Empty; for (int j = 0; j < itms_len; j++) { - Wdata_claim_itm_core claim = claim_grp.Get_at(j); + Wbase_claim_base claim = claim_grp.Get_at(j); claim.Welcome(visitor); claim_val = visitor.Rv(); Exec_insert(++next_claim_id, page_id, claim_grp.Id(), claim.Val_tid(), claim.Snak_tid(), entity_id, claim_val, claim.Wguid(), claim.Rank_tid(), 0, 0); @@ -290,7 +291,7 @@ class Wdata_claim_tbl extends Wdata_tbl_base { , Fld_guid = "guid", Fld_rank = "rank", Fld_ref_count = "ref_count", Fld_qual_count = "qual_count" ; } -class Wdata_claim_time_tbl extends Wdata_tbl_base { +class Wbase_claim_time_tbl extends Wdata_tbl_base { @Override public String Tbl_name() {return "wdata_claim_time";} @Override public String Tbl_create_sql() { return String_.Concat_lines_nl @@ -324,7 +325,7 @@ class Wdata_claim_time_tbl extends Wdata_tbl_base { } private static final String Fld_claim_id = "claim_id", Fld_time_val = "time_val", Fld_time_tz = "time_tz", Fld_time_before = "time_before", Fld_time_after = "time_after", Fld_time_precision = "time_precision", Fld_time_model = "time_model"; } -class Wdata_claim_geo_tbl extends Wdata_tbl_base { +class Wbase_claim_geo_tbl extends Wdata_tbl_base { @Override public String Tbl_name() {return "wdata_claim_geo";} @Override public String Tbl_create_sql() { return String_.Concat_lines_nl @@ -405,18 +406,18 @@ class Wdata_qual_tbl extends Wdata_tbl_base { } private static final String Fld_qual_id = "qual_id", Fld_page_id = "page_id", Fld_val_text = "val_text"; } -class Xob_wdata_db_visitor implements Wdata_claim_visitor { +class Xob_wdata_db_visitor implements Wbase_claim_visitor { private final Wdata_wiki_mgr wdata_mgr; private byte[] lang_key; public Xob_wdata_db_visitor(Wdata_wiki_mgr wdata_mgr) {this.wdata_mgr = wdata_mgr;} public void Init(byte[] lang_key) {this.lang_key = lang_key;} public byte[] Rv() {return rv;} private byte[] rv; - public void Visit_str(Wdata_claim_itm_str itm) {rv = itm.Val_str();} - public void Visit_monolingualtext(Wdata_claim_itm_monolingualtext itm) {rv = Bry_.Add_w_dlm(Byte_ascii.Pipe, itm.Lang(), itm.Text());} - public void Visit_quantity(Wdata_claim_itm_quantity itm) {rv = itm.Amount();} - public void Visit_time(Wdata_claim_itm_time itm) {rv = itm.Time();} - public void Visit_globecoordinate(Wdata_claim_itm_globecoordinate itm) {rv = Bry_.Add_w_dlm(Byte_ascii.Comma, itm.Lat(), itm.Lng());} - public void Visit_system(Wdata_claim_itm_system itm) {rv = Bry_.Empty;} - public void Visit_entity(Wdata_claim_itm_entity itm) { + public void Visit_str(Wbase_claim_string itm) {rv = itm.Val_str();} + public void Visit_monolingualtext(Wbase_claim_monolingualtext itm) {rv = Bry_.Add_w_dlm(Byte_ascii.Pipe, itm.Lang(), itm.Text());} + public void Visit_quantity(Wbase_claim_quantity itm) {rv = itm.Amount();} + public void Visit_time(Wbase_claim_time itm) {rv = itm.Time();} + public void Visit_globecoordinate(Wbase_claim_globecoordinate itm) {rv = Bry_.Add_w_dlm(Byte_ascii.Comma, itm.Lat(), itm.Lng());} + public void Visit_system(Wbase_claim_value itm) {rv = Bry_.Empty;} + public void Visit_entity(Wbase_claim_entity itm) { Wdata_doc entity_doc = wdata_mgr.Doc_mgr.Get_by_xid_or_null(itm.Page_ttl_db()); rv = entity_doc == null ? Bry_.Empty : entity_doc.Label_list__get(lang_key); } diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wdata_pid_base.java b/400_xowa/src/gplx/xowa/xtns/wbases/imports/Xob_wdata_pid_base.java similarity index 89% rename from 400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wdata_pid_base.java rename to 400_xowa/src/gplx/xowa/xtns/wbases/imports/Xob_wdata_pid_base.java index bfdbc69b2..7ee738e80 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wdata_pid_base.java +++ b/400_xowa/src/gplx/xowa/xtns/wbases/imports/Xob_wdata_pid_base.java @@ -15,8 +15,8 @@ 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.xtns.wdatas.imports; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; -import gplx.langs.jsons.*; import gplx.xowa.xtns.wdatas.core.*; import gplx.xowa.xtns.wdatas.parsers.*; import gplx.xowa.wikis.data.tbls.*; +package gplx.xowa.xtns.wbases.imports; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wbases.*; +import gplx.langs.jsons.*; import gplx.xowa.xtns.wbases.core.*; import gplx.xowa.xtns.wbases.parsers.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wkrs.*; public abstract class Xob_wdata_pid_base extends Xob_itm_dump_base implements Xob_page_wkr, Gfo_invk { private Json_parser parser; diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wdata_pid_base_tst.java b/400_xowa/src/gplx/xowa/xtns/wbases/imports/Xob_wdata_pid_base_tst.java similarity index 93% rename from 400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wdata_pid_base_tst.java rename to 400_xowa/src/gplx/xowa/xtns/wbases/imports/Xob_wdata_pid_base_tst.java index a631f477f..6dac8a508 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wdata_pid_base_tst.java +++ b/400_xowa/src/gplx/xowa/xtns/wbases/imports/Xob_wdata_pid_base_tst.java @@ -15,7 +15,7 @@ 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.xtns.wdatas.imports; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; +package gplx.xowa.xtns.wbases.imports; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wbases.*; import org.junit.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.tdbs.*; public class Xob_wdata_pid_base_tst { diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wdata_pid_sql.java b/400_xowa/src/gplx/xowa/xtns/wbases/imports/Xob_wdata_pid_sql.java similarity index 90% rename from 400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wdata_pid_sql.java rename to 400_xowa/src/gplx/xowa/xtns/wbases/imports/Xob_wdata_pid_sql.java index 70d056c88..28ece7f8d 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wdata_pid_sql.java +++ b/400_xowa/src/gplx/xowa/xtns/wbases/imports/Xob_wdata_pid_sql.java @@ -15,7 +15,7 @@ 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.xtns.wdatas.imports; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; +package gplx.xowa.xtns.wbases.imports; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wbases.*; import gplx.xowa.wikis.data.*; import gplx.dbs.*; import gplx.xowa.wikis.dbs.*; import gplx.xowa.wikis.data.tbls.*; public class Xob_wdata_pid_sql extends Xob_wdata_pid_base { private Xowd_wbase_pid_tbl tbl; diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wdata_pid_txt.java b/400_xowa/src/gplx/xowa/xtns/wbases/imports/Xob_wdata_pid_txt.java similarity index 92% rename from 400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wdata_pid_txt.java rename to 400_xowa/src/gplx/xowa/xtns/wbases/imports/Xob_wdata_pid_txt.java index 914f3615f..83a6defc0 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wdata_pid_txt.java +++ b/400_xowa/src/gplx/xowa/xtns/wbases/imports/Xob_wdata_pid_txt.java @@ -15,7 +15,7 @@ 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.xtns.wdatas.imports; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; +package gplx.xowa.xtns.wbases.imports; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wbases.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wkrs.*; public class Xob_wdata_pid_txt extends Xob_wdata_pid_base { @Override public String Page_wkr__key() {return gplx.xowa.bldrs.Xob_cmd_keys.Key_tdb_text_wdata_pid;} diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wdata_qid_base.java b/400_xowa/src/gplx/xowa/xtns/wbases/imports/Xob_wdata_qid_base.java similarity index 93% rename from 400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wdata_qid_base.java rename to 400_xowa/src/gplx/xowa/xtns/wbases/imports/Xob_wdata_qid_base.java index 275e3d7b5..f0767bc0c 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wdata_qid_base.java +++ b/400_xowa/src/gplx/xowa/xtns/wbases/imports/Xob_wdata_qid_base.java @@ -15,8 +15,8 @@ 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.xtns.wdatas.imports; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; -import gplx.langs.jsons.*; import gplx.core.ios.*; import gplx.xowa.xtns.wdatas.core.*; import gplx.xowa.xtns.wdatas.parsers.*; import gplx.xowa.wikis.data.tbls.*; +package gplx.xowa.xtns.wbases.imports; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wbases.*; +import gplx.langs.jsons.*; import gplx.core.ios.*; import gplx.xowa.xtns.wbases.core.*; import gplx.xowa.xtns.wbases.parsers.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.wikis.nss.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wkrs.*; import gplx.xowa.bldrs.wms.sites.*; diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wdata_qid_base_tst.java b/400_xowa/src/gplx/xowa/xtns/wbases/imports/Xob_wdata_qid_base_tst.java similarity index 94% rename from 400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wdata_qid_base_tst.java rename to 400_xowa/src/gplx/xowa/xtns/wbases/imports/Xob_wdata_qid_base_tst.java index 0c618b3ee..630f52815 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wdata_qid_base_tst.java +++ b/400_xowa/src/gplx/xowa/xtns/wbases/imports/Xob_wdata_qid_base_tst.java @@ -15,7 +15,7 @@ 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.xtns.wdatas.imports; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; +package gplx.xowa.xtns.wbases.imports; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wbases.*; import org.junit.*; import gplx.xowa.wikis.nss.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.tdbs.*; import gplx.dbs.*; diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wdata_qid_sql.java b/400_xowa/src/gplx/xowa/xtns/wbases/imports/Xob_wdata_qid_sql.java similarity index 91% rename from 400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wdata_qid_sql.java rename to 400_xowa/src/gplx/xowa/xtns/wbases/imports/Xob_wdata_qid_sql.java index 5c9ead929..dda098bef 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wdata_qid_sql.java +++ b/400_xowa/src/gplx/xowa/xtns/wbases/imports/Xob_wdata_qid_sql.java @@ -15,7 +15,7 @@ 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.xtns.wdatas.imports; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; +package gplx.xowa.xtns.wbases.imports; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wbases.*; import gplx.xowa.wikis.data.*; import gplx.dbs.*; import gplx.xowa.wikis.dbs.*; import gplx.xowa.wikis.data.tbls.*; public class Xob_wdata_qid_sql extends Xob_wdata_qid_base { private Xowd_wbase_qid_tbl tbl; diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wdata_qid_txt.java b/400_xowa/src/gplx/xowa/xtns/wbases/imports/Xob_wdata_qid_txt.java similarity index 92% rename from 400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wdata_qid_txt.java rename to 400_xowa/src/gplx/xowa/xtns/wbases/imports/Xob_wdata_qid_txt.java index 7d3f23840..691189ae9 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wdata_qid_txt.java +++ b/400_xowa/src/gplx/xowa/xtns/wbases/imports/Xob_wdata_qid_txt.java @@ -15,7 +15,7 @@ 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.xtns.wdatas.imports; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; +package gplx.xowa.xtns.wbases.imports; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wbases.*; import gplx.xowa.bldrs.*; public class Xob_wdata_qid_txt extends Xob_wdata_qid_base { private Wdata_idx_bldr_qid qid_bldr; diff --git a/400_xowa/src/gplx/xowa/xtns/wbases/parsers/Wbase_claim_factory.java b/400_xowa/src/gplx/xowa/xtns/wbases/parsers/Wbase_claim_factory.java new file mode 100644 index 000000000..76ca1ae7d --- /dev/null +++ b/400_xowa/src/gplx/xowa/xtns/wbases/parsers/Wbase_claim_factory.java @@ -0,0 +1,117 @@ +/* +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.xtns.wbases.parsers; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wbases.*; +import gplx.langs.jsons.*; +import gplx.xowa.xtns.wbases.core.*; import gplx.xowa.xtns.wbases.claims.*; import gplx.xowa.xtns.wbases.claims.enums.*; import gplx.xowa.xtns.wbases.claims.itms.*; +public class Wbase_claim_factory { + public Wbase_claim_base Parse(byte[] qid, int pid, byte snak_tid, Json_nde nde, byte value_tid, Json_itm value_itm) { + switch (value_tid) { + case Wbase_claim_type_.Tid__string: return new Wbase_claim_string(pid, snak_tid, value_itm.Data_bry()); + case Wbase_claim_type_.Tid__entity: return Parse_datavalue_entity (qid, pid, snak_tid, Json_nde.cast(value_itm)); + case Wbase_claim_type_.Tid__time: return Parse_datavalue_time (qid, pid, snak_tid, Json_nde.cast(value_itm)); + case Wbase_claim_type_.Tid__quantity: return Parse_datavalue_quantity (qid, pid, snak_tid, Json_nde.cast(value_itm)); + case Wbase_claim_type_.Tid__globecoordinate: return Parse_datavalue_globecoordinate (qid, pid, snak_tid, Json_nde.cast(value_itm)); + case Wbase_claim_type_.Tid__monolingualtext: return Parse_datavalue_monolingualtext (qid, pid, snak_tid, Json_nde.cast(value_itm)); + default: throw Err_.new_unhandled_default(value_tid); + } + } + private Wbase_claim_entity Parse_datavalue_entity(byte[] qid, int pid, byte snak_tid, Json_nde nde) { + int len = nde.Len(); + byte entity_tid = Byte_.Max_value_127; + byte[] entity_id_bry = null; + for (int i = 0; i < len; ++i) { + Json_kv sub = Json_kv.cast(nde.Get_at(i)); + byte tid = Wbase_claim_entity_.To_tid_or_invalid(qid, sub.Key().Data_bry()); if (tid == Wbase_claim_enum_.Tid__invalid) continue; + switch (tid) { + case Wbase_claim_entity_.Tid__entity_type: entity_tid = Wbase_claim_entity_type_.To_tid_or_fail(sub.Val().Data_bry()); break; + case Wbase_claim_entity_.Tid__numeric_id: entity_id_bry = sub.Val().Data_bry(); break; + } + } + if (entity_id_bry == null) throw Err_.new_wo_type("pid is invalid entity", "pid", pid); + return new Wbase_claim_entity(pid, snak_tid, entity_tid, entity_id_bry); + } + private Wbase_claim_monolingualtext Parse_datavalue_monolingualtext(byte[] qid, int pid, byte snak_tid, Json_nde nde) { + int len = nde.Len(); + byte[] lang = null, text = null; + for (int i = 0; i < len; ++i) { + Json_kv sub = Json_kv.cast(nde.Get_at(i)); + byte tid = Wbase_claim_monolingualtext_.To_tid_or_invalid(qid, sub.Key().Data_bry()); if (tid == Wbase_claim_enum_.Tid__invalid) continue; + byte[] sub_val_bry = sub.Val().Data_bry(); + switch (tid) { + case Wbase_claim_monolingualtext_.Tid__text: text = sub_val_bry; break; + case Wbase_claim_monolingualtext_.Tid__language: lang = sub_val_bry; break; + } + } + if (lang == null || text == null) throw Err_.new_wo_type("pid is invalid monolingualtext", "pid", pid); + return new Wbase_claim_monolingualtext(pid, snak_tid, lang, text); + } + private Wbase_claim_globecoordinate Parse_datavalue_globecoordinate(byte[] qid, int pid, byte snak_tid, Json_nde nde) { + int len = nde.Len(); + byte[] lat = null, lng = null, alt = null, prc = null, glb = null; + for (int i = 0; i < len; ++i) { + Json_kv sub = Json_kv.cast(nde.Get_at(i)); + byte tid = Wbase_claim_globecoordinate_.To_tid_or_invalid(qid, sub.Key().Data_bry()); if (tid == Wbase_claim_enum_.Tid__invalid) continue; + byte[] sub_val_bry = sub.Val().Data_bry(); + switch (tid) { + case Wbase_claim_globecoordinate_.Tid__latitude: lat = sub_val_bry; break; + case Wbase_claim_globecoordinate_.Tid__longitude: lng = sub_val_bry; break; + case Wbase_claim_globecoordinate_.Tid__altitude: alt = sub_val_bry; break; + case Wbase_claim_globecoordinate_.Tid__precision: prc = sub_val_bry; break; + case Wbase_claim_globecoordinate_.Tid__globe: glb = sub_val_bry; break; + } + } + if (lat == null || lng == null) throw Err_.new_wo_type("pid is invalid globecoordinate", "pid", pid); + return new Wbase_claim_globecoordinate(pid, snak_tid, lat, lng, alt, prc, glb); + } + private Wbase_claim_quantity Parse_datavalue_quantity(byte[] qid, int pid, byte snak_tid, Json_nde nde) { + int len = nde.Len(); + byte[] amount = null, unit = null, ubound = null, lbound = null; + for (int i = 0; i < len; ++i) { + Json_kv sub = Json_kv.cast(nde.Get_at(i)); + byte tid = Wbase_claim_quantity_.To_tid_or_invalid(qid, sub.Key().Data_bry()); if (tid == Wbase_claim_enum_.Tid__invalid) continue; + byte[] sub_val_bry = sub.Val().Data_bry(); + switch (tid) { + case Wbase_claim_quantity_.Tid__amount: amount = sub_val_bry; break; + case Wbase_claim_quantity_.Tid__unit: unit = sub_val_bry; break; + case Wbase_claim_quantity_.Tid__upperbound: ubound = sub_val_bry; break; + case Wbase_claim_quantity_.Tid__lowerbound: lbound = sub_val_bry; break; + } + } + if (amount == null) throw Err_.new_wo_type("pid is invalid quantity", "pid", pid); + return new Wbase_claim_quantity(pid, snak_tid, amount, unit, ubound, lbound); + } + private Wbase_claim_time Parse_datavalue_time(byte[] qid, int pid, byte snak_tid, Json_nde nde) { + int len = nde.Len(); + byte[] time = null, timezone = null, before = null, after = null, precision = null, calendarmodel = null; + for (int i = 0; i < len; ++i) { + Json_kv sub = Json_kv.cast(nde.Get_at(i)); + byte tid = Wbase_claim_time_.To_tid_or_invalid(qid, sub.Key().Data_bry()); if (tid == Wbase_claim_enum_.Tid__invalid) continue; + byte[] sub_val_bry = sub.Val().Data_bry(); + switch (tid) { + case Wbase_claim_time_.Tid__time: time = sub_val_bry; break; + case Wbase_claim_time_.Tid__timezone: timezone = sub_val_bry; break; + case Wbase_claim_time_.Tid__before: before = sub_val_bry; break; + case Wbase_claim_time_.Tid__after: after = sub_val_bry; break; + case Wbase_claim_time_.Tid__precision: precision = sub_val_bry; break; + case Wbase_claim_time_.Tid__calendarmodel: calendarmodel = sub_val_bry; break; + } + } + if (time == null) throw Err_.new_wo_type("pid is invalid time", "pid", pid); + return new Wbase_claim_time(pid, snak_tid, time, timezone, before, after, precision, calendarmodel); + } +} diff --git a/400_xowa/src/gplx/xowa/xtns/wbases/parsers/Wdata_claims_parser_v2.java b/400_xowa/src/gplx/xowa/xtns/wbases/parsers/Wdata_claims_parser_v2.java new file mode 100644 index 000000000..129b52aa9 --- /dev/null +++ b/400_xowa/src/gplx/xowa/xtns/wbases/parsers/Wdata_claims_parser_v2.java @@ -0,0 +1,151 @@ +/* +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.xtns.wbases.parsers; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wbases.*; +import gplx.core.primitives.*; +import gplx.langs.jsons.*; import gplx.xowa.xtns.wbases.core.*; import gplx.xowa.xtns.wbases.claims.*; import gplx.xowa.xtns.wbases.claims.enums.*; import gplx.xowa.xtns.wbases.claims.itms.*; +class Wdata_claims_parser_v2 { + private final Wbase_claim_factory factory = new Wbase_claim_factory(); + public void Make_claim_itms(byte[] qid, List_adp claim_itms_list, byte[] src, Json_kv claim_grp) { + Json_ary claim_itms_ary = Json_ary.cast_or_null(claim_grp.Val()); + int claim_itms_len = claim_itms_ary.Len(); + int pid = Parse_pid(claim_grp.Key().Data_bry()); + for (int i = 0; i < claim_itms_len; ++i) { + Json_nde claim_itm_nde = Json_nde.cast(claim_itms_ary.Get_at(i)); + Wbase_claim_base itm = Parse_claim_itm(qid, claim_itm_nde, pid); + if (itm != null) // HACK: itm can be null if value is "somevalue"; DATE:2014-09-20 + claim_itms_list.Add(itm); + } + } + private Wbase_claim_base Parse_claim_itm(byte[] qid, Json_nde nde, int pid) { + int len = nde.Len(); + Hash_adp_bry dict = Wdata_dict_claim.Dict; + byte rank_tid = Wbase_claim_rank_.Tid__unknown; + Wbase_claim_base claim_itm = null; Wbase_claim_grp_list qualifiers = null; int[] qualifiers_order = null; Wbase_references_grp[] snaks_grp = null; + for (int i = 0; i < len; ++i) { + Json_kv sub = Json_kv.cast(nde.Get_at(i)); + byte tid = Wdata_dict_utl.Get_tid_or_invalid(qid, dict, sub.Key().Data_bry()); if (tid == Wbase_claim_enum_.Tid__invalid) continue; + switch (tid) { + case Wdata_dict_claim.Tid_mainsnak: claim_itm = Parse_mainsnak(qid, Json_nde.cast(sub.Val()), pid); break; + case Wdata_dict_claim.Tid_rank: rank_tid = Wbase_claim_rank_.To_tid_or_unknown(sub.Val().Data_bry()); break; + case Wdata_dict_claim.Tid_references: snaks_grp = Parse_references(qid, Json_ary.cast_or_null(sub.Val())); break; + case Wdata_dict_claim.Tid_qualifiers: qualifiers = Parse_qualifiers(qid, Json_nde.cast(sub.Val())); break; + case Wdata_dict_claim.Tid_qualifiers_order: qualifiers_order = Parse_pid_order(Json_ary.cast_or_null(sub.Val())); break; + case Wdata_dict_claim.Tid_type: break; // ignore: "statement" + case Wdata_dict_claim.Tid_id: break; // ignore: "Q2$F909BD1C-D34D-423F-9ED2-3493663321AF" + } + } + if (claim_itm != null) { + claim_itm.Rank_tid_(rank_tid); + if (qualifiers != null) claim_itm.Qualifiers_(qualifiers); + if (qualifiers_order != null) claim_itm.Qualifiers_order_(qualifiers_order); + if (snaks_grp != null) claim_itm.References_(snaks_grp); + } + return claim_itm; + } + public Wbase_references_grp[] Parse_references(byte[] qid, Json_ary owner) { + int len = owner.Len(); + Wbase_references_grp[] rv = new Wbase_references_grp[len]; + for (int i = 0; i < len; ++i) { + Json_nde grp_nde = Json_nde.cast(owner.Get_at(i)); + rv[i] = Parse_references_grp(qid, grp_nde); + } + return rv; + } + private Wbase_references_grp Parse_references_grp(byte[] qid, Json_nde owner) { + int len = owner.Len(); + Hash_adp_bry dict = Wdata_dict_reference.Dict; + Wbase_claim_grp_list snaks = null; int[] snaks_order = null; + for (int i = 0; i < len; ++i) { + Json_kv sub = Json_kv.cast(owner.Get_at(i)); + byte tid = Wdata_dict_utl.Get_tid_or_invalid(qid, dict, sub.Key().Data_bry()); if (tid == Wbase_claim_enum_.Tid__invalid) continue; + switch (tid) { + case Wdata_dict_reference.Tid_hash: break; // ignore: "b923b0d68beb300866b87ead39f61e63ec30d8af" + case Wdata_dict_reference.Tid_snaks: snaks = Parse_qualifiers(qid, Json_nde.cast(sub.Val())); break; + case Wdata_dict_reference.Tid_snaks_order: snaks_order = Parse_pid_order(Json_ary.cast_or_null(sub.Val())); break; + } + } + return new Wbase_references_grp(snaks, snaks_order); + } + public Wbase_claim_grp_list Parse_qualifiers(byte[] qid, Json_nde qualifiers_nde) { + Wbase_claim_grp_list rv = new Wbase_claim_grp_list(); + if (qualifiers_nde == null) return rv; // NOTE:sometimes references can have 0 snaks; return back an empty Wbase_claim_grp_list, not null; PAGE:Птичкин,_Евгений_Николаевич; DATE:2015-02-16 + int len = qualifiers_nde.Len(); + for (int i = 0; i < len; ++i) { + Json_kv qualifier_kv = Json_kv.cast(qualifiers_nde.Get_at(i)); + int pid = Parse_pid(qualifier_kv.Key().Data_bry()); + Wbase_claim_grp claims_grp = Parse_props_grp(qid, pid, Json_ary.cast_or_null(qualifier_kv.Val())); + rv.Add(claims_grp); + } + return rv; + } + public int[] Parse_pid_order(Json_ary ary) { + int len = ary.Len(); + int[] rv = new int[len]; + for (int i = 0; i < len; ++i) { + Json_itm pid_itm = ary.Get_at(i); + rv[i] = Parse_pid(pid_itm.Data_bry()); + } + return rv; + } + private Wbase_claim_grp Parse_props_grp(byte[] qid, int pid, Json_ary props_ary) { + List_adp list = List_adp_.New(); + int len = props_ary.Len(); + for (int i = 0; i < len; ++i) { + Json_nde qualifier_nde = Json_nde.cast(props_ary.Get_at(i)); + Wbase_claim_base qualifier_itm = Parse_mainsnak(qid, qualifier_nde, pid); + list.Add(qualifier_itm); + } + return new Wbase_claim_grp(Int_obj_ref.New(pid), (Wbase_claim_base[])list.To_ary_and_clear(Wbase_claim_base.class)); + } + public Wbase_claim_base Parse_mainsnak(byte[] qid, Json_nde nde, int pid) { + int len = nde.Len(); + Hash_adp_bry dict = Wdata_dict_mainsnak.Dict; + byte snak_tid = Byte_.Max_value_127; + for (int i = 0; i < len; ++i) { + Json_kv sub = Json_kv.cast(nde.Get_at(i)); + byte tid = Wdata_dict_utl.Get_tid_or_invalid(qid, dict, sub.Key().Data_bry()); if (tid == Wbase_claim_enum_.Tid__invalid) continue; + switch (tid) { + case Wdata_dict_mainsnak.Tid_snaktype: snak_tid = Wbase_claim_value_type_.To_tid_or_fail(sub.Val().Data_bry()); break; + case Wdata_dict_mainsnak.Tid_datavalue: return Parse_datavalue(qid, pid, snak_tid, Json_nde.cast(sub.Val())); + case Wdata_dict_mainsnak.Tid_datatype: break; // ignore: has values like "wikibase-property"; EX: www.wikidata.org/wiki/Property:P397; DATE:2015-06-12 + case Wdata_dict_mainsnak.Tid_property: break; // ignore: pid already available above + case Wdata_dict_mainsnak.Tid_hash: break; // ignore: "84487fc3f93b4f74ab1cc5a47d78f596f0b49390" + } + } + return new Wbase_claim_value(pid, Wbase_claim_type_.Tid__unknown, snak_tid); // NOTE: mainsnak can be null, especially for qualifiers; PAGE:Q2!P576; DATE:2014-09-20 + } + public Wbase_claim_base Parse_datavalue(byte[] qid, int pid, byte snak_tid, Json_nde nde) { + int len = nde.Len(); + Hash_adp_bry dict = Wdata_dict_datavalue.Dict; + Json_itm value_itm = null; byte value_tid = Wbase_claim_type_.Tid__unknown; + for (int i = 0; i < len; ++i) { + Json_kv sub = Json_kv.cast(nde.Get_at(i)); + byte tid = Wdata_dict_utl.Get_tid_or_invalid(qid, dict, sub.Key().Data_bry()); if (tid == Wbase_claim_enum_.Tid__invalid) continue; + switch (tid) { + case Wdata_dict_datavalue.Tid_type: value_tid = Wbase_claim_type_.To_tid_or_unknown(sub.Val().Data_bry()); break; + case Wdata_dict_datavalue.Tid_value: value_itm = sub.Val(); break; + case Wdata_dict_datavalue.Tid_error: break; // ignore: "Can only construct GlobeCoordinateValue with a String globe parameter" + } + } + return factory.Parse(qid, pid, snak_tid, nde, value_tid, value_itm); + } + private static int Parse_pid(byte[] pid_bry) { + int rv = Bry_.To_int_or(pid_bry, 1, pid_bry.length, -1); if (rv == -1) throw Err_.new_wo_type("invalid pid", "pid", String_.new_u8(pid_bry)); + return rv; + } +} diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/parsers/Wdata_doc_parser.java b/400_xowa/src/gplx/xowa/xtns/wbases/parsers/Wdata_doc_parser.java similarity index 68% rename from 400_xowa/src/gplx/xowa/xtns/wdatas/parsers/Wdata_doc_parser.java rename to 400_xowa/src/gplx/xowa/xtns/wbases/parsers/Wdata_doc_parser.java index c2e82de8b..9cc0b786b 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/parsers/Wdata_doc_parser.java +++ b/400_xowa/src/gplx/xowa/xtns/wbases/parsers/Wdata_doc_parser.java @@ -15,16 +15,16 @@ 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.xtns.wdatas.parsers; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; -import gplx.langs.jsons.*; import gplx.xowa.xtns.wdatas.core.*; +package gplx.xowa.xtns.wbases.parsers; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wbases.*; +import gplx.langs.jsons.*; import gplx.xowa.xtns.wbases.core.*; import gplx.xowa.xtns.wbases.claims.*; import gplx.xowa.xtns.wbases.claims.itms.*; public interface Wdata_doc_parser { byte[] Parse_qid(Json_doc doc); Ordered_hash Parse_sitelinks(byte[] qid, Json_doc doc); Ordered_hash Parse_langvals(byte[] qid, Json_doc doc, boolean label_or_description); Ordered_hash Parse_aliases(byte[] qid, Json_doc doc); Ordered_hash Parse_claims(byte[] qid, Json_doc doc); - Wdata_claim_itm_base Parse_claims_data(byte[] qid, int pid, byte snak_tid, Json_nde nde); - Wdata_claim_grp_list Parse_qualifiers(byte[] qid, Json_nde nde); + Wbase_claim_base Parse_claims_data(byte[] qid, int pid, byte snak_tid, Json_nde nde); + Wbase_claim_grp_list Parse_qualifiers(byte[] qid, Json_nde nde); int[] Parse_pid_order(byte[] qid, Json_ary ary); - Wdata_references_grp[] Parse_references(byte[] qid, Json_ary owner); + Wbase_references_grp[] Parse_references(byte[] qid, Json_ary owner); } diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/parsers/Wdata_doc_parser_fxt_base.java b/400_xowa/src/gplx/xowa/xtns/wbases/parsers/Wdata_doc_parser_fxt_base.java similarity index 55% rename from 400_xowa/src/gplx/xowa/xtns/wdatas/parsers/Wdata_doc_parser_fxt_base.java rename to 400_xowa/src/gplx/xowa/xtns/wbases/parsers/Wdata_doc_parser_fxt_base.java index d9c5cb55d..dcea15c96 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/parsers/Wdata_doc_parser_fxt_base.java +++ b/400_xowa/src/gplx/xowa/xtns/wbases/parsers/Wdata_doc_parser_fxt_base.java @@ -15,11 +15,12 @@ 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.xtns.wdatas.parsers; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; -import gplx.langs.jsons.*; import gplx.xowa.xtns.wdatas.core.*; +package gplx.xowa.xtns.wbases.parsers; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wbases.*; +import gplx.langs.jsons.*; import gplx.xowa.xtns.wbases.core.*; import gplx.xowa.xtns.wbases.claims.*; import gplx.xowa.xtns.wbases.claims.enums.*; import gplx.xowa.xtns.wbases.claims.itms.*; abstract class Wdata_doc_parser_fxt_base { protected Wdata_doc_parser wdoc_parser; private final Json_parser json_parser = new Json_parser(); + private final Bry_bfr tmp_time_bfr = Bry_bfr_.New(); public void Init() { if (wdoc_parser == null) wdoc_parser = Make_parser(); } @@ -27,14 +28,15 @@ abstract class Wdata_doc_parser_fxt_base { public Wdata_sitelink_itm Make_sitelink(String site, String name, String... badges) {return new Wdata_sitelink_itm(Bry_.new_u8(site), Bry_.new_u8(name), Bry_.Ary(badges));} public Wdata_langtext_itm Make_langval(String lang, String text) {return new Wdata_langtext_itm(Bry_.new_u8(lang), Bry_.new_u8(text));} public Wdata_alias_itm Make_alias(String lang, String... vals) {return new Wdata_alias_itm(Bry_.new_u8(lang), Bry_.Ary(vals));} - public Wdata_claim_itm_core Make_claim_str(int pid, String val) {return new Wdata_claim_itm_str(pid, Wdata_dict_snak_tid.Tid_value, Bry_.new_u8(val));} - public Wdata_claim_itm_core Make_claim_entity_qid(int pid, int entityId) {return new Wdata_claim_itm_entity(pid, Wdata_dict_snak_tid.Tid_value, Wdata_dict_value_entity_tid.Tid_item, Int_.To_bry(entityId));} - public Wdata_claim_itm_core Make_claim_entity_pid(int pid, int entityId) {return new Wdata_claim_itm_entity(pid, Wdata_dict_snak_tid.Tid_value, Wdata_dict_value_entity_tid.Tid_property, Int_.To_bry(entityId));} - public Wdata_claim_itm_core Make_claim_monolingualtext(int pid, String lang, String text) {return new Wdata_claim_itm_monolingualtext(pid, Wdata_dict_snak_tid.Tid_value, Bry_.new_u8(lang), Bry_.new_u8(text));} - public Wdata_claim_itm_core Make_claim_globecoordinate(int pid, String lat, String lng, String prc) {return new Wdata_claim_itm_globecoordinate(pid, Wdata_dict_snak_tid.Tid_value, Bry_.new_u8(lat), Bry_.new_u8(lng), Object_.Bry__null, Bry_.new_u8(prc), Bry_.new_a7("http://www.wikidata.org/entity/Q2"));} - public Wdata_claim_itm_core Make_claim_quantity(int pid, int val, int unit, int ubound, int lbound) {return new Wdata_claim_itm_quantity(pid, Wdata_dict_snak_tid.Tid_value, Bry_.new_u8(Int_.To_str(val)), Bry_.new_u8(Int_.To_str(unit)), Bry_.new_u8(Int_.To_str(ubound)), Bry_.new_u8(Int_.To_str(lbound)));} - public Wdata_claim_itm_core Make_claim_time(int pid, String val) {return new Wdata_claim_itm_time(pid, Wdata_dict_snak_tid.Tid_value, Wdata_dict_value_time.Xto_time(val), Wdata_dict_value_time.Val_timezone_bry, Wdata_dict_value_time.Val_before_bry, Wdata_dict_value_time.Val_after_bry, Wdata_dict_value_time.Val_precision_bry, Wdata_dict_value_time.Val_calendarmodel_bry);} - public Wdata_claim_itm_core Make_claim_novalue(int pid) {return new Wdata_claim_itm_system(pid, Wdata_dict_val_tid.Tid_unknown, Wdata_dict_snak_tid.Tid_novalue);} + public Wbase_claim_base Make_claim_string (int pid, String val) {return new Wbase_claim_string(pid, Wbase_claim_value_type_.Tid__value, Bry_.new_u8(val));} + public Wbase_claim_base Make_claim_entity_qid (int pid, int eid) {return new Wbase_claim_entity(pid, Wbase_claim_value_type_.Tid__value, Wbase_claim_entity_type_.Tid__item, Int_.To_bry(eid));} + public Wbase_claim_base Make_claim_entity_pid (int pid, int eid) {return new Wbase_claim_entity(pid, Wbase_claim_value_type_.Tid__value, Wbase_claim_entity_type_.Tid__property, Int_.To_bry(eid));} + public Wbase_claim_base Make_claim_monolingualtext (int pid, String lang, String text) {return new Wbase_claim_monolingualtext(pid, Wbase_claim_value_type_.Tid__value, Bry_.new_u8(lang), Bry_.new_u8(text));} + public Wbase_claim_base Make_claim_globecoordinate (int pid, String lat, String lng, String prc) {return new Wbase_claim_globecoordinate(pid, Wbase_claim_value_type_.Tid__value, Bry_.new_u8(lat), Bry_.new_u8(lng), Object_.Bry__null, Bry_.new_u8(prc), Bry_.new_a7("http://www.wikidata.org/entity/Q2"));} + public Wbase_claim_base Make_claim_quantity (int pid, int val, int unit, int ubound, int lbound) {return new Wbase_claim_quantity(pid, Wbase_claim_value_type_.Tid__value, Bry_.new_u8(Int_.To_str(val)), Bry_.new_u8(Int_.To_str(unit)), Bry_.new_u8(Int_.To_str(ubound)), Bry_.new_u8(Int_.To_str(lbound)));} + public Wbase_claim_base Make_claim_time (int pid, String val) {return new Wbase_claim_time(pid, Wbase_claim_value_type_.Tid__value, Wbase_claim_time_.To_bry(tmp_time_bfr, val), Wbase_claim_time_.Dflt__timezone.Val_bry(), Wbase_claim_time_.Dflt__before.Val_bry(), Wbase_claim_time_.Dflt__after.Val_bry(), Wbase_claim_time_.Dflt__precision.Val_bry(), Wbase_claim_time_.Dflt__calendarmodel.Val_bry());} + public Wbase_claim_base Make_claim_novalue (int pid) {return new Wbase_claim_value(pid, Wbase_claim_type_.Tid__unknown, Wbase_claim_value_type_.Tid__novalue);} + public void Test_entity(String raw, String expd) {Tfds.Eq(expd, String_.new_u8(wdoc_parser.Parse_qid(json_parser.Parse_by_apos(raw))));} public void Test_sitelinks(String raw, Wdata_sitelink_itm... expd) { Ordered_hash actl_hash = wdoc_parser.Parse_sitelinks(Q1_bry, json_parser.Parse_by_apos(raw)); @@ -50,27 +52,27 @@ abstract class Wdata_doc_parser_fxt_base { Ordered_hash actl_hash = wdoc_parser.Parse_aliases(Q1_bry, json_parser.Parse_by_apos(raw)); Tfds.Eq_ary_str((Wdata_alias_itm[])actl_hash.To_ary(Wdata_alias_itm.class), expd); } - public void Test_claims(String raw, Wdata_claim_itm_core... expd) { + public void Test_claims(String raw, Wbase_claim_base... expd) { Ordered_hash actl_hash = wdoc_parser.Parse_claims(Q1_bry, json_parser.Parse_by_apos(raw)); - List_adp actl_list = Wdata_claim_grp.Xto_list(actl_hash); - Tfds.Eq_ary_str((Wdata_claim_itm_core[])actl_list.To_ary(Wdata_claim_itm_core.class), expd); + List_adp actl_list = Wbase_claim_grp.Xto_list(actl_hash); + Tfds.Eq_ary_str((Wbase_claim_base[])actl_list.To_ary(Wbase_claim_base.class), expd); } - public void Test_claims_data(String raw, Wdata_claim_itm_core expd) { + public void Test_claims_data(String raw, Wbase_claim_base expd) { Json_doc jdoc = json_parser.Parse_by_apos(raw); - Wdata_claim_itm_base actl = wdoc_parser.Parse_claims_data(Q1_bry, 1, Wdata_dict_snak_tid.Tid_value, jdoc.Root_nde()); + Wbase_claim_base actl = wdoc_parser.Parse_claims_data(Q1_bry, 1, Wbase_claim_value_type_.Tid__value, jdoc.Root_nde()); Tfds.Eq(expd.toString(), actl.toString()); } - public void Test_qualifiers(String raw, Wdata_claim_itm_base... expd_itms) { + public void Test_qualifiers(String raw, Wbase_claim_base... expd_itms) { Json_doc jdoc = json_parser.Parse_by_apos(raw); Json_nde qualifiers_nde = Json_nde.cast(Json_kv.cast(jdoc.Root_nde().Get_at(0)).Val()); - Wdata_claim_grp_list actl = wdoc_parser.Parse_qualifiers(Q1_bry, qualifiers_nde); + Wbase_claim_grp_list actl = wdoc_parser.Parse_qualifiers(Q1_bry, qualifiers_nde); Tfds.Eq_ary_str(expd_itms, To_ary(actl)); } - public void Test_references(String raw, int[] expd_order, Wdata_claim_itm_base... expd_itms) { + public void Test_references(String raw, int[] expd_order, Wbase_claim_base... expd_itms) { Json_doc jdoc = json_parser.Parse_by_apos(raw); Json_ary owner = Json_ary.cast_or_null(Json_kv.cast(jdoc.Root_nde().Get_at(0)).Val()); - Wdata_references_grp[] actl = wdoc_parser.Parse_references(Q1_bry, owner); - Wdata_references_grp actl_grp = actl[0]; + Wbase_references_grp[] actl = wdoc_parser.Parse_references(Q1_bry, owner); + Wbase_references_grp actl_grp = actl[0]; Tfds.Eq_ary(expd_order, actl_grp.References_order()); Tfds.Eq_ary_str(expd_itms, To_ary(actl_grp.References())); } @@ -80,18 +82,18 @@ abstract class Wdata_doc_parser_fxt_base { int[] actl = wdoc_parser.Parse_pid_order(Q1_bry, nde); Tfds.Eq_ary(expd, actl); } - Wdata_claim_itm_base[] To_ary(Wdata_claim_grp_list list) { + Wbase_claim_base[] To_ary(Wbase_claim_grp_list list) { List_adp rv = List_adp_.New(); int list_len = list.Len(); for (int i = 0; i < list_len; ++i) { - Wdata_claim_grp grp = list.Get_at(i); + Wbase_claim_grp grp = list.Get_at(i); int grp_len = grp.Len(); for (int j = 0; j < grp_len; ++j) { - Wdata_claim_itm_core itm = grp.Get_at(j); + Wbase_claim_base itm = grp.Get_at(j); rv.Add(itm); } } - return (Wdata_claim_itm_base[])rv.To_ary_and_clear(Wdata_claim_itm_base.class); + return (Wbase_claim_base[])rv.To_ary_and_clear(Wbase_claim_base.class); } private static final byte[] Q1_bry = Bry_.new_a7("Q1"); } diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/parsers/Wdata_doc_parser_v1.java b/400_xowa/src/gplx/xowa/xtns/wbases/parsers/Wdata_doc_parser_v1.java similarity index 78% rename from 400_xowa/src/gplx/xowa/xtns/wdatas/parsers/Wdata_doc_parser_v1.java rename to 400_xowa/src/gplx/xowa/xtns/wbases/parsers/Wdata_doc_parser_v1.java index 7c0cae537..0cb9ebd5a 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/parsers/Wdata_doc_parser_v1.java +++ b/400_xowa/src/gplx/xowa/xtns/wbases/parsers/Wdata_doc_parser_v1.java @@ -15,8 +15,9 @@ 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.xtns.wdatas.parsers; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; -import gplx.core.primitives.*; import gplx.langs.jsons.*; import gplx.xowa.xtns.wdatas.core.*; +package gplx.xowa.xtns.wbases.parsers; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wbases.*; +import gplx.core.primitives.*; import gplx.langs.jsons.*; +import gplx.xowa.xtns.wbases.core.*; import gplx.xowa.xtns.wbases.claims.*; import gplx.xowa.xtns.wbases.claims.enums.*; import gplx.xowa.xtns.wbases.claims.itms.*; public class Wdata_doc_parser_v1 implements Wdata_doc_parser { public Wdata_doc_parser_v1(Gfo_usr_dlg usr_dlg) {this.usr_dlg = usr_dlg;} private Gfo_usr_dlg usr_dlg; public Wdata_doc_parser_v1() {} @@ -118,20 +119,20 @@ public class Wdata_doc_parser_v1 implements Wdata_doc_parser { int len = list_nde.Len(); for (int i = 0; i < len; i++) { Json_nde claim_nde = Json_nde.cast(list_nde.Get_at(i)); - Wdata_claim_itm_core claim_itm = Make_claim_itm(src, claim_nde); + Wbase_claim_base claim_itm = Make_claim_itm(src, claim_nde); temp_list.Add(claim_itm); } return Claims_list_to_hash(temp_list); } catch (Exception e) {throw Err_.new_exc(e, "xo", "failed to parse claims", "qid", String_.new_u8(doc.Src()));} } - public Wdata_claim_itm_base Parse_claims_data(byte[] qid, int pid, byte snak_tid, Json_nde nde) {throw Err_.new_unimplemented();} + public Wbase_claim_base Parse_claims_data(byte[] qid, int pid, byte snak_tid, Json_nde nde) {throw Err_.new_unimplemented();} public static Ordered_hash Claims_list_to_hash(List_adp full_list) { full_list.Sort(); Ordered_hash rv = Ordered_hash_.New(); List_adp temp_itms = List_adp_.New(); int prv_pid = -1; int len = full_list.Count(); for (int i = 0; i < len; ++i) { - Wdata_claim_itm_core claim_itm = (Wdata_claim_itm_core)full_list.Get_at(i); + Wbase_claim_base claim_itm = (Wbase_claim_base)full_list.Get_at(i); int cur_pid = claim_itm.Pid(); if (prv_pid != cur_pid && prv_pid != -1) Claims_list_to_hash__add(rv, prv_pid, temp_itms); @@ -144,12 +145,12 @@ public class Wdata_doc_parser_v1 implements Wdata_doc_parser { private static void Claims_list_to_hash__add(Ordered_hash rv, int pid, List_adp temp_itms) { if (temp_itms.Count() == 0) return; // NOTE: will be empty when claims are empty; EX: "claims": []; PAGE:wd.p:585; DATE:2014-10-03 Int_obj_ref claim_grp_key = Int_obj_ref.New(pid); - Wdata_claim_grp claim_grp = new Wdata_claim_grp(claim_grp_key, (Wdata_claim_itm_core[])temp_itms.To_ary_and_clear(Wdata_claim_itm_core.class)); + Wbase_claim_grp claim_grp = new Wbase_claim_grp(claim_grp_key, (Wbase_claim_base[])temp_itms.To_ary_and_clear(Wbase_claim_base.class)); rv.Add(claim_grp_key, claim_grp); } - private Wdata_claim_itm_core Make_claim_itm(byte[] src, Json_nde prop_nde) { + private Wbase_claim_base Make_claim_itm(byte[] src, Json_nde prop_nde) { int len = prop_nde.Len(); // should have 5 (m, q, g, rank, refs), but don't enforce (can rely on keys) - Wdata_claim_itm_core rv = null; + Wbase_claim_base rv = null; for (int i = 0; i < len; i++) { Json_kv kv = Json_kv.cast(prop_nde.Get_at(i)); Json_itm kv_key = kv.Key(); @@ -175,41 +176,41 @@ public class Wdata_doc_parser_v1 implements Wdata_doc_parser { } return rv; } - private Wdata_claim_itm_core New_prop_by_m(byte[] src, Json_ary ary) { - byte snak_tid = Wdata_dict_snak_tid.Xto_tid(ary.Get_at(0).Data_bry()); + private Wbase_claim_base New_prop_by_m(byte[] src, Json_ary ary) { + byte snak_tid = Wbase_claim_value_type_.To_tid_or_fail(ary.Get_at(0).Data_bry()); int pid = Json_itm_int.cast(ary.Get_at(1)).Data_as_int(); switch (snak_tid) { - case Wdata_dict_snak_tid.Tid_novalue : return Wdata_claim_itm_system.new_novalue(pid); - case Wdata_dict_snak_tid.Tid_somevalue : return Wdata_claim_itm_system.new_somevalue(pid); + case Wbase_claim_value_type_.Tid__novalue : return Wbase_claim_value.New_novalue(pid); + case Wbase_claim_value_type_.Tid__somevalue : return Wbase_claim_value.New_somevalue(pid); } Json_itm val_tid_itm = ary.Get_at(2); - byte val_tid = Wdata_dict_val_tid.Xto_tid(src, val_tid_itm.Src_bgn(), val_tid_itm.Src_end()); + byte val_tid = Wbase_claim_type_.To_tid_or_unknown(src, val_tid_itm.Src_bgn(), val_tid_itm.Src_end()); return Make_itm(pid, snak_tid, val_tid, ary); } - private Wdata_claim_itm_core Make_itm(int pid, byte snak_tid, byte val_tid, Json_ary ary) { + private Wbase_claim_base Make_itm(int pid, byte snak_tid, byte val_tid, Json_ary ary) { switch (val_tid) { - case Wdata_dict_val_tid.Tid_string: - return new Wdata_claim_itm_str(pid, snak_tid, ary.Get_at(3).Data_bry()); - case Wdata_dict_val_tid.Tid_entity: { + case Wbase_claim_type_.Tid__string: + return new Wbase_claim_string(pid, snak_tid, ary.Get_at(3).Data_bry()); + case Wbase_claim_type_.Tid__entity: { Json_nde sub_nde = Json_nde.cast(ary.Get_at(3)); Json_kv entity_kv = Json_kv.cast(sub_nde.Get_at(1)); - return new Wdata_claim_itm_entity(pid, snak_tid, Wdata_dict_value_entity_tid.Tid_item, entity_kv.Val().Data_bry()); + return new Wbase_claim_entity(pid, snak_tid, Wbase_claim_entity_type_.Tid__item, entity_kv.Val().Data_bry()); } - case Wdata_dict_val_tid.Tid_time: { + case Wbase_claim_type_.Tid__time: { Json_nde sub_nde = Json_nde.cast(ary.Get_at(3)); - return new Wdata_claim_itm_time(pid, snak_tid, Get_val(sub_nde, 0), Get_val(sub_nde, 1), Get_val(sub_nde, 2), Get_val(sub_nde, 3), Get_val(sub_nde, 4), Get_val(sub_nde, 5)); + return new Wbase_claim_time(pid, snak_tid, Get_val(sub_nde, 0), Get_val(sub_nde, 1), Get_val(sub_nde, 2), Get_val(sub_nde, 3), Get_val(sub_nde, 4), Get_val(sub_nde, 5)); } - case Wdata_dict_val_tid.Tid_globecoordinate: case Wdata_dict_val_tid.Tid_bad: { + case Wbase_claim_type_.Tid__globecoordinate: case Wbase_claim_type_.Tid__bad: { Json_nde sub_nde = Json_nde.cast(ary.Get_at(3)); - return new Wdata_claim_itm_globecoordinate(pid, snak_tid, Get_val(sub_nde, 0), Get_val(sub_nde, 1), Get_val(sub_nde, 2), Get_val(sub_nde, 3), Get_val(sub_nde, 4)); + return new Wbase_claim_globecoordinate(pid, snak_tid, Get_val(sub_nde, 0), Get_val(sub_nde, 1), Get_val(sub_nde, 2), Get_val(sub_nde, 3), Get_val(sub_nde, 4)); } - case Wdata_dict_val_tid.Tid_quantity: { + case Wbase_claim_type_.Tid__quantity: { Json_nde sub_nde = Json_nde.cast(ary.Get_at(3)); - return new Wdata_claim_itm_quantity(pid, snak_tid, Get_val(sub_nde, 0), Get_val(sub_nde, 1), Get_val(sub_nde, 2), Get_val(sub_nde, 3)); + return new Wbase_claim_quantity(pid, snak_tid, Get_val(sub_nde, 0), Get_val(sub_nde, 1), Get_val(sub_nde, 2), Get_val(sub_nde, 3)); } - case Wdata_dict_val_tid.Tid_monolingualtext: { + case Wbase_claim_type_.Tid__monolingualtext: { Json_nde sub_nde = Json_nde.cast(ary.Get_at(3)); - return new Wdata_claim_itm_monolingualtext(pid, snak_tid, Get_val(sub_nde, 1), Get_val(sub_nde, 0)); + return new Wbase_claim_monolingualtext(pid, snak_tid, Get_val(sub_nde, 1), Get_val(sub_nde, 0)); } default: {throw Err_.new_unhandled(val_tid);} } @@ -238,8 +239,8 @@ public class Wdata_doc_parser_v1 implements Wdata_doc_parser { } return rv; } - public Wdata_claim_grp_list Parse_qualifiers(byte[] qid, Json_nde nde) {throw Err_.new_unimplemented();} - public Wdata_references_grp[] Parse_references(byte[] qid, Json_ary owner) {throw Err_.new_unimplemented();} + public Wbase_claim_grp_list Parse_qualifiers(byte[] qid, Json_nde nde) {throw Err_.new_unimplemented();} + public Wbase_references_grp[] Parse_references(byte[] qid, Json_ary owner) {throw Err_.new_unimplemented();} public int[] Parse_pid_order(byte[] qid, Json_ary ary) {throw Err_.new_unimplemented();} public static final String Str_entity = "entity" diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/parsers/Wdata_doc_parser_v1_tst.java b/400_xowa/src/gplx/xowa/xtns/wbases/parsers/Wdata_doc_parser_v1_tst.java similarity index 92% rename from 400_xowa/src/gplx/xowa/xtns/wdatas/parsers/Wdata_doc_parser_v1_tst.java rename to 400_xowa/src/gplx/xowa/xtns/wbases/parsers/Wdata_doc_parser_v1_tst.java index d01eac347..8f2f9cbc1 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/parsers/Wdata_doc_parser_v1_tst.java +++ b/400_xowa/src/gplx/xowa/xtns/wbases/parsers/Wdata_doc_parser_v1_tst.java @@ -15,9 +15,9 @@ 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.xtns.wdatas.parsers; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; +package gplx.xowa.xtns.wbases.parsers; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wbases.*; import org.junit.*; -import gplx.langs.jsons.*; import gplx.xowa.xtns.wdatas.core.*; +import gplx.langs.jsons.*; import gplx.xowa.xtns.wbases.core.*; public class Wdata_doc_parser_v1_tst { @Before public void init() {fxt.Init();} private Wdata_doc_parser_v1_fxt fxt = new Wdata_doc_parser_v1_fxt(); @Test public void Entity_v1_1() { @@ -154,7 +154,7 @@ public class Wdata_doc_parser_v1_tst { , " ]" , "}" ) - , fxt.Make_claim_str(1, "abc") + , fxt.Make_claim_string(1, "abc") ); } @Test public void Claim_bad() { // wikidata flags several entries as "bad"; https://www.wikidata.org/wiki/Wikidata:Project_chat/Archive/2013/10 diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/parsers/Wdata_doc_parser_v2.java b/400_xowa/src/gplx/xowa/xtns/wbases/parsers/Wdata_doc_parser_v2.java similarity index 87% rename from 400_xowa/src/gplx/xowa/xtns/wdatas/parsers/Wdata_doc_parser_v2.java rename to 400_xowa/src/gplx/xowa/xtns/wbases/parsers/Wdata_doc_parser_v2.java index dc64e13fc..4571deef5 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/parsers/Wdata_doc_parser_v2.java +++ b/400_xowa/src/gplx/xowa/xtns/wbases/parsers/Wdata_doc_parser_v2.java @@ -15,8 +15,9 @@ 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.xtns.wdatas.parsers; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; -import gplx.langs.jsons.*; import gplx.xowa.xtns.wdatas.core.*; import gplx.core.btries.*; +package gplx.xowa.xtns.wbases.parsers; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wbases.*; +import gplx.langs.jsons.*; import gplx.core.btries.*; +import gplx.xowa.xtns.wbases.core.*; import gplx.xowa.xtns.wbases.claims.*; import gplx.xowa.xtns.wbases.claims.enums.*; import gplx.xowa.xtns.wbases.claims.itms.*; public class Wdata_doc_parser_v2 implements Wdata_doc_parser { private Wdata_claims_parser_v2 claims_parser = new Wdata_claims_parser_v2(); public byte[] Parse_qid(Json_doc doc) { @@ -38,7 +39,7 @@ public class Wdata_doc_parser_v2 implements Wdata_doc_parser { Json_kv site_kv = null, name_kv = null; Json_ary badges_ary = null; for (int j = 0; j < data_nde_len; ++j) { Json_kv sub = Json_kv.cast(data_nde.Get_at(j)); - byte tid = Wdata_dict_utl.Get_tid_or_invalid(qid, dict, sub.Key().Data_bry()); if (tid == Wdata_dict_utl.Tid_invalid) continue; + byte tid = Wdata_dict_utl.Get_tid_or_invalid(qid, dict, sub.Key().Data_bry()); if (tid == Wbase_claim_enum_.Tid__invalid) continue; switch (tid) { case Wdata_dict_sitelink.Tid_site: site_kv = Json_kv.cast(sub); break; case Wdata_dict_sitelink.Tid_title: name_kv = Json_kv.cast(sub); break; @@ -66,7 +67,7 @@ public class Wdata_doc_parser_v2 implements Wdata_doc_parser { int data_nde_len = data_nde.Len(); for (int j = 0; j < data_nde_len; ++j) { Json_kv sub = Json_kv.cast(data_nde.Get_at(j)); - byte tid = Wdata_dict_utl.Get_tid_or_invalid(qid, dict, sub.Key().Data_bry()); if (tid == Wdata_dict_utl.Tid_invalid) continue; + byte tid = Wdata_dict_utl.Get_tid_or_invalid(qid, dict, sub.Key().Data_bry()); if (tid == Wbase_claim_enum_.Tid__invalid) continue; switch (tid) { case Wdata_dict_langtext.Tid_language: break; case Wdata_dict_langtext.Tid_value: text_kv = Json_kv.cast(sub); break; @@ -95,7 +96,7 @@ public class Wdata_doc_parser_v2 implements Wdata_doc_parser { int k_len = lang_nde.Len(); for (int k = 0; k < k_len; ++k) { Json_kv sub = Json_kv.cast(lang_nde.Get_at(k)); - byte tid = Wdata_dict_utl.Get_tid_or_invalid(qid, dict, sub.Key().Data_bry()); if (tid == Wdata_dict_utl.Tid_invalid) continue; + byte tid = Wdata_dict_utl.Get_tid_or_invalid(qid, dict, sub.Key().Data_bry()); if (tid == Wbase_claim_enum_.Tid__invalid) continue; switch (tid) { case Wdata_dict_langtext.Tid_language: break; case Wdata_dict_langtext.Tid_value: vals[j] = sub.Val().Data_bry(); break; @@ -124,9 +125,9 @@ public class Wdata_doc_parser_v2 implements Wdata_doc_parser { } catch (Exception e) {throw Err_.new_exc(e, "xo", "failed to parse claims", "qid", String_.new_u8(doc.Src()));} } } - public Wdata_claim_itm_base Parse_claims_data(byte[] qid, int pid, byte snak_tid, Json_nde nde) {return claims_parser.Parse_datavalue(qid, pid, snak_tid, nde);} - public Wdata_claim_grp_list Parse_qualifiers(byte[] qid, Json_nde nde) {return claims_parser.Parse_qualifiers(qid, nde);} - public Wdata_references_grp[] Parse_references(byte[] qid, Json_ary owner) {return claims_parser.Parse_references(qid, owner);} + public Wbase_claim_base Parse_claims_data(byte[] qid, int pid, byte snak_tid, Json_nde nde) {return claims_parser.Parse_datavalue(qid, pid, snak_tid, nde);} + public Wbase_claim_grp_list Parse_qualifiers(byte[] qid, Json_nde nde) {return claims_parser.Parse_qualifiers(qid, nde);} + public Wbase_references_grp[] Parse_references(byte[] qid, Json_ary owner) {return claims_parser.Parse_references(qid, owner);} public int[] Parse_pid_order(byte[] qid, Json_ary ary) {return claims_parser.Parse_pid_order(ary);} public static final String Str_id = "id" diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/parsers/Wdata_doc_parser_v2_tst.java b/400_xowa/src/gplx/xowa/xtns/wbases/parsers/Wdata_doc_parser_v2__basic__tst.java similarity index 62% rename from 400_xowa/src/gplx/xowa/xtns/wdatas/parsers/Wdata_doc_parser_v2_tst.java rename to 400_xowa/src/gplx/xowa/xtns/wbases/parsers/Wdata_doc_parser_v2__basic__tst.java index 8491c3f6f..7d7db0104 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/parsers/Wdata_doc_parser_v2_tst.java +++ b/400_xowa/src/gplx/xowa/xtns/wbases/parsers/Wdata_doc_parser_v2__basic__tst.java @@ -15,10 +15,10 @@ 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.xtns.wdatas.parsers; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; +package gplx.xowa.xtns.wbases.parsers; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wbases.*; import org.junit.*; -import gplx.langs.jsons.*; import gplx.xowa.xtns.wdatas.core.*; -public class Wdata_doc_parser_v2_tst { +import gplx.langs.jsons.*; import gplx.xowa.xtns.wbases.core.*; +public class Wdata_doc_parser_v2__basic__tst { @Before public void init() {fxt.Init();} private Wdata_doc_parser_v2_fxt fxt = new Wdata_doc_parser_v2_fxt(); @Test public void Entity() { fxt.Test_entity("{ 'id':'Q2' }", "q2"); @@ -144,139 +144,6 @@ public class Wdata_doc_parser_v2_tst { , fxt.Make_alias("fr", "fr_val_1") ); } - @Test public void Claims() { - fxt.Test_claims(String_.Concat_lines_nl_skip_last - ( "{ 'claims':" - , " { 'P1':" - , " [" - , " { 'mainsnak':" - , " { 'snaktype':'value'" - , " , 'property':'P1'" - , " , 'hash':'84487fc3f93b4f74ab1cc5a47d78f596f0b49390'" - , " , 'datavalue':" - , " { 'value':'abc'" - , " , 'type':'string'" - , " }" - , " }" - , " , 'type':'statement'" - , " , 'id':'Q2$e8ba1188-4aec-9e37-a75e-f79466c1913e'" - , " , 'rank':'normal'" - , " }" - , " ]" - , " }" - , "}" - ) - , fxt.Make_claim_str(1, "abc") - ); - } - @Test public void Claims_novalue() { - fxt.Test_claims(String_.Concat_lines_nl_skip_last - ( "{ 'claims':" - , " { 'P1':" - , " [" - , " { 'mainsnak':" - , " { 'snaktype':'novalue'" - , " , 'property':'P1'" - , " , 'hash':'84487fc3f93b4f74ab1cc5a47d78f596f0b49390'" - , " }" - , " }" - , " ]" - , " }" - , "}" - ) - , fxt.Make_claim_novalue(1) - ); - } - @Test public void Claims_data_string() { - fxt.Test_claims_data(String_.Concat_lines_nl_skip_last - ( "{ 'value':'abc'" - , ", 'type':'string'" - , "}" - ) - , fxt.Make_claim_str(1, "abc") - ); - } - @Test public void Claims_data_entity() { - fxt.Test_claims_data(String_.Concat_lines_nl_skip_last - ( "{ 'value':" - , " { 'entity-type':'item'" - , " , 'numeric-id':'123'" - , " }" - , ", 'type':'wikibase-entityid'" - , "}" - ) - , fxt.Make_claim_entity_qid(1, 123) - ); - } - @Test public void Claims_data_property() { - fxt.Test_claims_data(String_.Concat_lines_nl_skip_last - ( "{ 'value':" - , " { 'entity-type':'property'" - , " , 'numeric-id':'398'" - , " }" - , ", 'type':'wikibase-entityid'" - , "}" - ) - , fxt.Make_claim_entity_pid(1, 398) - ); - } - @Test public void Claims_data_monolingualtext() { - fxt.Test_claims_data(String_.Concat_lines_nl_skip_last - ( "{ 'value':" - , " { 'text':'en_text'" - , " , 'language':'en'" - , " }" - , ", 'type':'monolingualtext'" - , "}" - ) - , fxt.Make_claim_monolingualtext(1, "en", "en_text") - ); - } - @Test public void Claims_data_globecoordinate() { - fxt.Test_claims_data(String_.Concat_lines_nl_skip_last - ( "{ 'value':" - , " { 'latitude':1.2" - , " , 'longitude':3.4" - , " , 'altitude':null" - , " , 'precision':0.0002" - , " , 'globe':'http:\\/\\/www.wikidata.org\\/entity\\/Q2'" - , " }" - , ", 'type':'globecoordinate'" - , "}" - ) - , fxt.Make_claim_globecoordinate(1, "1.2", "3.4", "0.0002") - ); - } - @Test public void Claims_data_quantity() { - fxt.Test_claims_data(String_.Concat_lines_nl_skip_last - ( "{ 'value':" - , " { 'amount':'123'" - , " , 'unit':'2'" - , " , 'upperBound':'125'" - , " , 'lowerBound':'121'" - , " }" - , ", 'type':'quantity'" - , "}" - ) - , fxt.Make_claim_quantity(1, 123, 2, 125, 121) - ); - } - @Test public void Claims_data_time() { - fxt.Test_claims_data(String_.Concat_lines_nl_skip_last - ( "{ 'value':" - , " { 'time':'+00000002001-02-03T04:05:06Z'" - , " , 'timezone':0" - , " , 'before':0" - , " , 'after':0" - , " , 'precision':11" - , " , 'calendarmodel':'http:\\/\\/www.wikidata.org\\/entity\\/Q1985727'" - , " }" - , ", 'type':'time'" - , "}" - ) - , fxt.Make_claim_time(1, "2001-02-03 04:05:06") - ); - } @Test public void Qualifiers() { fxt.Test_qualifiers(String_.Concat_lines_nl_skip_last ( "{ 'qualifiers':" @@ -377,7 +244,7 @@ public class Wdata_doc_parser_v2_tst { ), Int_.Ary(2, 3), fxt.Make_claim_entity_qid(2, 21), fxt.Make_claim_entity_qid(3, 31)) ; } - @Test public void References_empty() { // PURPOSE:sometimes references can have 0 snaks; return back an empty Wdata_claim_grp_list, not null; PAGE:Птичкин,_Евгений_Николаевич; DATE:2015-02-16 + @Test public void References_empty() { // PURPOSE:sometimes references can have 0 snaks; return back an empty Wbase_claim_grp_list, not null; PAGE:Птичкин,_Евгений_Николаевич; DATE:2015-02-16 fxt.Test_references(String_.Concat_lines_nl_skip_last ( "{ 'references':" , " [ " diff --git a/400_xowa/src/gplx/xowa/xtns/wbases/parsers/Wdata_doc_parser_v2__claims__tst.java b/400_xowa/src/gplx/xowa/xtns/wbases/parsers/Wdata_doc_parser_v2__claims__tst.java new file mode 100644 index 000000000..f7895ef01 --- /dev/null +++ b/400_xowa/src/gplx/xowa/xtns/wbases/parsers/Wdata_doc_parser_v2__claims__tst.java @@ -0,0 +1,193 @@ +/* +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.xtns.wbases.parsers; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wbases.*; +import org.junit.*; +import gplx.langs.jsons.*; import gplx.xowa.xtns.wbases.core.*; +public class Wdata_doc_parser_v2__claims__tst { + @Before public void init() {fxt.Init();} private Wdata_doc_parser_v2_fxt fxt = new Wdata_doc_parser_v2_fxt(); + @Test public void Full__string() { + fxt.Test_claims(String_.Concat_lines_nl_skip_last + ( "{ 'claims':" + , " { 'P1':" + , " [" + , " { 'mainsnak':" + , " { 'snaktype':'value'" + , " , 'property':'P1'" + , " , 'hash':'84487fc3f93b4f74ab1cc5a47d78f596f0b49390'" + , " , 'datavalue':" + , " { 'value':'abc'" + , " , 'type':'string'" + , " }" + , " }" + , " , 'type':'statement'" + , " , 'id':'Q2$e8ba1188-4aec-9e37-a75e-f79466c1913e'" + , " , 'rank':'normal'" + , " }" + , " ]" + , " }" + , "}" + ) + , fxt.Make_claim_string(1, "abc") + ); + } + @Test public void Full__novalue() { + fxt.Test_claims(String_.Concat_lines_nl_skip_last + ( "{ 'claims':" + , " { 'P1':" + , " [" + , " { 'mainsnak':" + , " { 'snaktype':'novalue'" + , " , 'property':'P1'" + , " , 'hash':'84487fc3f93b4f74ab1cc5a47d78f596f0b49390'" + , " }" + , " }" + , " ]" + , " }" + , "}" + ) + , fxt.Make_claim_novalue(1) + ); + } + @Test public void Data__string() { + fxt.Test_claims_data(String_.Concat_lines_nl_skip_last + ( "{ 'value':'abc'" + , ", 'type':'string'" + , "}" + ) + , fxt.Make_claim_string(1, "abc") + ); + } + @Test public void Data__item() { + fxt.Test_claims_data(String_.Concat_lines_nl_skip_last + ( "{ 'value':" + , " { 'entity-type':'item'" + , " , 'numeric-id':'123'" + , " }" + , ", 'type':'wikibase-entityid'" + , "}" + ) + , fxt.Make_claim_entity_qid(1, 123) + ); + } + @Test public void Data__property() { + fxt.Test_claims_data(String_.Concat_lines_nl_skip_last + ( "{ 'value':" + , " { 'entity-type':'property'" + , " , 'numeric-id':'398'" + , " }" + , ", 'type':'wikibase-entityid'" + , "}" + ) + , fxt.Make_claim_entity_pid(1, 398) + ); + } + @Test public void Data__monolingualtext() { + fxt.Test_claims_data(String_.Concat_lines_nl_skip_last + ( "{ 'value':" + , " { 'text':'en_text'" + , " , 'language':'en'" + , " }" + , ", 'type':'monolingualtext'" + , "}" + ) + , fxt.Make_claim_monolingualtext(1, "en", "en_text") + ); + } + @Test public void Data__globecoordinate() { + fxt.Test_claims_data(String_.Concat_lines_nl_skip_last + ( "{ 'value':" + , " { 'latitude':1.2" + , " , 'longitude':3.4" + , " , 'altitude':null" + , " , 'precision':0.0002" + , " , 'globe':'http:\\/\\/www.wikidata.org\\/entity\\/Q2'" + , " }" + , ", 'type':'globecoordinate'" + , "}" + ) + , fxt.Make_claim_globecoordinate(1, "1.2", "3.4", "0.0002") + ); + } + @Test public void Data__quantity() { + fxt.Test_claims_data(String_.Concat_lines_nl_skip_last + ( "{ 'value':" + , " { 'amount':'123'" + , " , 'unit':'2'" + , " , 'upperBound':'125'" + , " , 'lowerBound':'121'" + , " }" + , ", 'type':'quantity'" + , "}" + ) + , fxt.Make_claim_quantity(1, 123, 2, 125, 121) + ); + } + @Test public void Data__time() { + fxt.Test_claims_data(String_.Concat_lines_nl_skip_last + ( "{ 'value':" + , " { 'time':'+00000002001-02-03T04:05:06Z'" + , " , 'timezone':0" + , " , 'before':0" + , " , 'after':0" + , " , 'precision':11" + , " , 'calendarmodel':'http:\\/\\/www.wikidata.org\\/entity\\/Q1985727'" + , " }" + , ", 'type':'time'" + , "}" + ) + , fxt.Make_claim_time(1, "2001-02-03 04:05:06") + ); + } + @Test public void Data__url() { // NOTE:has "String" property-type; EX:wd:Q23548; DATE:2016-07-28 + fxt.Test_claims_data(String_.Concat_lines_nl_skip_last + ( "{ 'value':'http:\\/\\/www.nasa.gov\\/rss\\/dyn\\/breaking_news.rss'" + , ", 'type':'string'" + , "}" + ) + , fxt.Make_claim_string(1, "http://www.nasa.gov/rss/dyn/breaking_news.rss") + ); + } + @Test public void Data__commonsMedia() { // NOTE:has "String" property-type; EX:wd:Q327162; DATE:2016-07-28 + fxt.Test_claims_data(String_.Concat_lines_nl_skip_last + ( "{ 'value':'Tabliczka E40.svg'" + , ", 'type':'string'" + , "}" + ) + , fxt.Make_claim_string(1, "Tabliczka E40.svg") + ); + } + @Test public void Data__externalid() { // NOTE:has "String" property-type; EX:wd:Q77177; DATE:2016-07-28 + fxt.Test_claims_data(String_.Concat_lines_nl_skip_last + ( "{ 'value':'000331371'" + , ", 'type':'string'" + , "}" + ) + , fxt.Make_claim_string(1, "000331371") + ); + } + @Test public void Data__math() { // NOTE:has "String" property-type; EX:wd:Q11518; DATE:2016-07-28 + fxt.Test_claims_data(String_.Concat_lines_nl_skip_last + ( "{ 'value':'a^2+b^2=c^2'" + , ", 'type':'string'" + , "}" + ) + , fxt.Make_claim_string(1, "a^2+b^2=c^2") + ); + } + // www.wikidata.org/wiki/Q11518 +} diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/pfuncs/Wdata_external_lang_links_data.java b/400_xowa/src/gplx/xowa/xtns/wbases/pfuncs/Wdata_external_lang_links_data.java similarity index 94% rename from 400_xowa/src/gplx/xowa/xtns/wdatas/pfuncs/Wdata_external_lang_links_data.java rename to 400_xowa/src/gplx/xowa/xtns/wbases/pfuncs/Wdata_external_lang_links_data.java index 56ff173ea..a25fdc188 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/pfuncs/Wdata_external_lang_links_data.java +++ b/400_xowa/src/gplx/xowa/xtns/wbases/pfuncs/Wdata_external_lang_links_data.java @@ -15,7 +15,7 @@ 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.xtns.wdatas.pfuncs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; +package gplx.xowa.xtns.wbases.pfuncs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wbases.*; import gplx.xowa.xtns.pfuncs.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.tmpls.*; public class Wdata_external_lang_links_data { diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/pfuncs/Wdata_pf_noExternalLangLinks.java b/400_xowa/src/gplx/xowa/xtns/wbases/pfuncs/Wdata_pf_noExternalLangLinks.java similarity index 91% rename from 400_xowa/src/gplx/xowa/xtns/wdatas/pfuncs/Wdata_pf_noExternalLangLinks.java rename to 400_xowa/src/gplx/xowa/xtns/wbases/pfuncs/Wdata_pf_noExternalLangLinks.java index 7ab057fc2..701655acf 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/pfuncs/Wdata_pf_noExternalLangLinks.java +++ b/400_xowa/src/gplx/xowa/xtns/wbases/pfuncs/Wdata_pf_noExternalLangLinks.java @@ -15,7 +15,7 @@ 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.xtns.wdatas.pfuncs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; +package gplx.xowa.xtns.wbases.pfuncs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wbases.*; import gplx.langs.jsons.*; import gplx.xowa.langs.*; import gplx.xowa.langs.kwds.*; import gplx.xowa.xtns.pfuncs.*; diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/pfuncs/Wdata_pf_noExternalLangLinks_tst.java b/400_xowa/src/gplx/xowa/xtns/wbases/pfuncs/Wdata_pf_noExternalLangLinks_tst.java similarity index 94% rename from 400_xowa/src/gplx/xowa/xtns/wdatas/pfuncs/Wdata_pf_noExternalLangLinks_tst.java rename to 400_xowa/src/gplx/xowa/xtns/wbases/pfuncs/Wdata_pf_noExternalLangLinks_tst.java index 3bdaa32bb..89431879f 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/pfuncs/Wdata_pf_noExternalLangLinks_tst.java +++ b/400_xowa/src/gplx/xowa/xtns/wbases/pfuncs/Wdata_pf_noExternalLangLinks_tst.java @@ -15,7 +15,7 @@ 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.xtns.wdatas.pfuncs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; +package gplx.xowa.xtns.wbases.pfuncs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wbases.*; import org.junit.*; public class Wdata_pf_noExternalLangLinks_tst { @Before public void init() {fxt.Clear();} Wdata_pf_noExternalLangLinks_fxt fxt = new Wdata_pf_noExternalLangLinks_fxt(); diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/pfuncs/Wdata_pf_property.java b/400_xowa/src/gplx/xowa/xtns/wbases/pfuncs/Wdata_pf_property.java similarity index 92% rename from 400_xowa/src/gplx/xowa/xtns/wdatas/pfuncs/Wdata_pf_property.java rename to 400_xowa/src/gplx/xowa/xtns/wbases/pfuncs/Wdata_pf_property.java index 1973b2363..5a0b5310d 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/pfuncs/Wdata_pf_property.java +++ b/400_xowa/src/gplx/xowa/xtns/wbases/pfuncs/Wdata_pf_property.java @@ -15,10 +15,10 @@ 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.xtns.wdatas.pfuncs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; +package gplx.xowa.xtns.wbases.pfuncs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wbases.*; import gplx.core.envs.*; import gplx.core.primitives.*; -import gplx.xowa.parsers.logs.*; import gplx.xowa.xtns.pfuncs.*; import gplx.xowa.xtns.wdatas.core.*; +import gplx.xowa.parsers.logs.*; import gplx.xowa.xtns.pfuncs.*; import gplx.xowa.xtns.wbases.core.*; import gplx.xowa.xtns.wbases.claims.*; import gplx.xowa.langs.kwds.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.tmpls.*; public class Wdata_pf_property extends Pf_func_base { @@ -55,13 +55,13 @@ public class Wdata_pf_property extends Pf_func_base { if (doc == null) return; // NOTE: some pages will not have a qid; EX: "Some_unknown_page" will not have a qid in wikidata; if no qid, then all {{#property:p###}} will have no prop_val // get val based on pid and doc; EX: {{#property:p123|of=Earth}} -> doc=Q2; pid=123 -> "value of p123 in Q2" - Wdata_claim_grp claim_grp = doc.Claim_list_get(pid_int); + Wbase_claim_grp claim_grp = doc.Claim_list_get(pid_int); if (claim_grp == null) return;// NOTE: some props may not exist; EX: "Some_known_page" has a qid of 123 but does not have pid 345 required by {{#property:P345|q=123}} wdata_mgr.Resolve_to_bfr(bfr, claim_grp, wiki.Wdata_wiki_lang()); // NOTE: was ctx.Page().Lang().Key_bry(), but fails in simplewiki; DATE:2013-12-02 if (property_wkr != null) property_wkr.Eval_end(ctx.Page(), pid_ttl, log_time_bgn); } } - public static int Parse_pid(Number_parser num_parser, byte[] bry) { + public static int Parse_pid(Gfo_number_parser num_parser, byte[] bry) { int bry_len = bry.length; if (bry_len < 2) return Wdata_wiki_mgr.Pid_null; // must have at least 2 chars; p# byte b_0 = bry[0]; diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/pfuncs/Wdata_pf_property__basic__tst.java b/400_xowa/src/gplx/xowa/xtns/wbases/pfuncs/Wdata_pf_property__basic__tst.java similarity index 89% rename from 400_xowa/src/gplx/xowa/xtns/wdatas/pfuncs/Wdata_pf_property__basic__tst.java rename to 400_xowa/src/gplx/xowa/xtns/wbases/pfuncs/Wdata_pf_property__basic__tst.java index 605457672..da88cb666 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/pfuncs/Wdata_pf_property__basic__tst.java +++ b/400_xowa/src/gplx/xowa/xtns/wbases/pfuncs/Wdata_pf_property__basic__tst.java @@ -15,13 +15,13 @@ 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.xtns.wdatas.pfuncs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; +package gplx.xowa.xtns.wbases.pfuncs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wbases.*; import org.junit.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.tmpls.*; public class Wdata_pf_property__basic__tst { @Before public void init() {fxt.Init();} private final Wdata_wiki_mgr_fxt fxt = new Wdata_wiki_mgr_fxt(); @Test public void String() { fxt.Init_links_add("enwiki", "Test_page", "q1"); - fxt.Init__docs__add(fxt.doc_("q1", fxt.Make_claim_str(1, "a"))); + fxt.Init__docs__add(fxt.doc_("q1", fxt.Make_claim_string(1, "a"))); fxt.Test_parse("{{#property:p1}}", "a"); fxt.Test_parse("{{#property:p2}}", ""); } @@ -85,34 +85,34 @@ public class Wdata_pf_property__basic__tst { } @Test public void Multiple() { fxt.Init_links_add("enwiki", "Test_page", "q1"); - fxt.Init__docs__add(fxt.doc_("q1", fxt.Make_claim_str(1, "a"), fxt.Make_claim_str(1, "b"))); + fxt.Init__docs__add(fxt.doc_("q1", fxt.Make_claim_string(1, "a"), fxt.Make_claim_string(1, "b"))); fxt.Test_parse("{{#property:p1}}", "a"); // only take first; DATE:2015-08-02 } @Test public void Q() { fxt.Init_links_add("enwiki", "Test_page", "q2"); - fxt.Init__docs__add(fxt.doc_("q2", fxt.Make_claim_str(1, "a"))); + fxt.Init__docs__add(fxt.doc_("q2", fxt.Make_claim_string(1, "a"))); fxt.Test_parse("{{#property:p1|q=q2}}", "a"); } @Test public void Of() { fxt.Init_links_add("enwiki", "Of_page", "q2"); - fxt.Init__docs__add(fxt.doc_("q2", fxt.Make_claim_str(1, "a"))); + fxt.Init__docs__add(fxt.doc_("q2", fxt.Make_claim_string(1, "a"))); fxt.Test_parse("{{#property:p1|of=Of_page}}", "a"); } @Test public void From() { - fxt.Init__docs__add(fxt.doc_("Property:p2", fxt.Make_claim_str(1, "a"))); + fxt.Init__docs__add(fxt.doc_("Property:p2", fxt.Make_claim_string(1, "a"))); fxt.Test_parse("{{#property:p1|from=p2}}", "a"); fxt.Test_parse("{{#property:p1|from=}}", ""); } @Test public void Pid_as_name() { fxt.Init_links_add("enwiki", "Test_page", "q2"); fxt.Init_pids_add("en", "astronomic symbol", 1); - fxt.Init__docs__add(fxt.doc_("q2", fxt.Make_claim_str(1, "a"))); + fxt.Init__docs__add(fxt.doc_("q2", fxt.Make_claim_string(1, "a"))); fxt.Test_parse("{{#property:astronomic symbol}}", "a"); } @Test public void Empty_arg() { // PURPOSE: {{#property:p1|}} should not fail / warn; DATE:2013-11-15 fxt.Init_links_add("enwiki", "Test_page", "q2"); fxt.Init_pids_add("en", "astronomic symbol", 1); - fxt.Init__docs__add(fxt.doc_("q2", fxt.Make_claim_str(1, "a"))); + fxt.Init__docs__add(fxt.doc_("q2", fxt.Make_claim_string(1, "a"))); fxt.Test_parse("{{#property:p1|}}", "a"); } @Test public void Parse_pid() { diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/pfuncs/Wdata_pf_property__parse__tst.java b/400_xowa/src/gplx/xowa/xtns/wbases/pfuncs/Wdata_pf_property__parse__tst.java similarity index 93% rename from 400_xowa/src/gplx/xowa/xtns/wdatas/pfuncs/Wdata_pf_property__parse__tst.java rename to 400_xowa/src/gplx/xowa/xtns/wbases/pfuncs/Wdata_pf_property__parse__tst.java index c2aaa284d..6e45d5c7a 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/pfuncs/Wdata_pf_property__parse__tst.java +++ b/400_xowa/src/gplx/xowa/xtns/wbases/pfuncs/Wdata_pf_property__parse__tst.java @@ -15,7 +15,7 @@ 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.xtns.wdatas.pfuncs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; +package gplx.xowa.xtns.wbases.pfuncs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wbases.*; import org.junit.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.tmpls.*; public class Wdata_pf_property__parse__tst { @Before public void init() {fxt.Init();} private final Wdata_pf_property_data_fxt fxt = new Wdata_pf_property_data_fxt(); diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/pfuncs/Wdata_pf_property_data.java b/400_xowa/src/gplx/xowa/xtns/wbases/pfuncs/Wdata_pf_property_data.java similarity index 94% rename from 400_xowa/src/gplx/xowa/xtns/wdatas/pfuncs/Wdata_pf_property_data.java rename to 400_xowa/src/gplx/xowa/xtns/wbases/pfuncs/Wdata_pf_property_data.java index e330fc342..81711755f 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/pfuncs/Wdata_pf_property_data.java +++ b/400_xowa/src/gplx/xowa/xtns/wbases/pfuncs/Wdata_pf_property_data.java @@ -15,7 +15,7 @@ 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.xtns.wdatas.pfuncs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; +package gplx.xowa.xtns.wbases.pfuncs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wbases.*; import gplx.core.primitives.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.tmpls.*; public class Wdata_pf_property_data { diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/pfuncs/Wdata_pf_property_fmt.java b/400_xowa/src/gplx/xowa/xtns/wbases/pfuncs/Wdata_pf_property_fmt.java similarity index 94% rename from 400_xowa/src/gplx/xowa/xtns/wdatas/pfuncs/Wdata_pf_property_fmt.java rename to 400_xowa/src/gplx/xowa/xtns/wbases/pfuncs/Wdata_pf_property_fmt.java index 3bca226f5..e733101ca 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/pfuncs/Wdata_pf_property_fmt.java +++ b/400_xowa/src/gplx/xowa/xtns/wbases/pfuncs/Wdata_pf_property_fmt.java @@ -15,7 +15,7 @@ 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.xtns.wdatas.pfuncs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; +package gplx.xowa.xtns.wbases.pfuncs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wbases.*; public class Wdata_pf_property_fmt { public byte[] Separator() {return separator;} private byte[] separator; public byte[] Value_template() {return value_template;} private byte[] value_template; diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/pfuncs/Wdata_pf_wbreponame.java b/400_xowa/src/gplx/xowa/xtns/wbases/pfuncs/Wdata_pf_wbreponame.java similarity index 86% rename from 400_xowa/src/gplx/xowa/xtns/wdatas/pfuncs/Wdata_pf_wbreponame.java rename to 400_xowa/src/gplx/xowa/xtns/wbases/pfuncs/Wdata_pf_wbreponame.java index 8d952ff8d..b9f4c21fa 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/pfuncs/Wdata_pf_wbreponame.java +++ b/400_xowa/src/gplx/xowa/xtns/wbases/pfuncs/Wdata_pf_wbreponame.java @@ -15,7 +15,7 @@ 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.xtns.wdatas.pfuncs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; +package gplx.xowa.xtns.wbases.pfuncs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wbases.*; import gplx.langs.jsons.*; import gplx.xowa.langs.*; import gplx.xowa.langs.kwds.*; import gplx.xowa.xtns.pfuncs.*; @@ -25,5 +25,5 @@ public class Wdata_pf_wbreponame extends Pf_func_base { @Override public Pf_func New(int id, byte[] name) {return new Wdata_pf_wbreponame().Name_(name);} @Override public void Func_evaluate(Bry_bfr bfr, Xop_ctx ctx, Xot_invk caller, Xot_invk self, byte[] src) { bfr.Add(Reponame); // NOTE: MW has logic to look for message named "wbreponame", and returning it if it exists; only applies to non-WMF Wikidatas; DATE:2014-09-07 - } private static final byte[] Reponame = Bry_.new_a7("Wikidata"); + } private static final byte[] Reponame = Bry_.new_a7("Wikidata"); } diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/pfuncs/Wdata_pf_wbreponame_tst.java b/400_xowa/src/gplx/xowa/xtns/wbases/pfuncs/Wdata_pf_wbreponame_tst.java similarity index 89% rename from 400_xowa/src/gplx/xowa/xtns/wdatas/pfuncs/Wdata_pf_wbreponame_tst.java rename to 400_xowa/src/gplx/xowa/xtns/wbases/pfuncs/Wdata_pf_wbreponame_tst.java index 600f20e41..cb68c5eaa 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/pfuncs/Wdata_pf_wbreponame_tst.java +++ b/400_xowa/src/gplx/xowa/xtns/wbases/pfuncs/Wdata_pf_wbreponame_tst.java @@ -15,7 +15,7 @@ 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.xtns.wdatas.pfuncs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; +package gplx.xowa.xtns.wbases.pfuncs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wbases.*; import org.junit.*; public class Wdata_pf_wbreponame_tst { @Before public void init() {fxt.Clear();} private Wdata_pf_wbreponame_fxt fxt = new Wdata_pf_wbreponame_fxt(); diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/specials/Wdata_itemByTitle_cfg.java b/400_xowa/src/gplx/xowa/xtns/wbases/specials/Wdata_itemByTitle_cfg.java similarity index 90% rename from 400_xowa/src/gplx/xowa/xtns/wdatas/specials/Wdata_itemByTitle_cfg.java rename to 400_xowa/src/gplx/xowa/xtns/wbases/specials/Wdata_itemByTitle_cfg.java index 107d62d09..300058705 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/specials/Wdata_itemByTitle_cfg.java +++ b/400_xowa/src/gplx/xowa/xtns/wbases/specials/Wdata_itemByTitle_cfg.java @@ -15,7 +15,7 @@ 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.xtns.wdatas.specials; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; +package gplx.xowa.xtns.wbases.specials; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wbases.*; public class Wdata_itemByTitle_cfg implements Gfo_invk { public byte[] Site_default() {return site_default;} private byte[] site_default = Bry_.new_a7("enwiki"); public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/specials/Wdata_itemByTitle_page.java b/400_xowa/src/gplx/xowa/xtns/wbases/specials/Wdata_itemByTitle_page.java similarity index 96% rename from 400_xowa/src/gplx/xowa/xtns/wdatas/specials/Wdata_itemByTitle_page.java rename to 400_xowa/src/gplx/xowa/xtns/wbases/specials/Wdata_itemByTitle_page.java index 90d1fed16..dffdb020e 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/specials/Wdata_itemByTitle_page.java +++ b/400_xowa/src/gplx/xowa/xtns/wbases/specials/Wdata_itemByTitle_page.java @@ -15,7 +15,7 @@ 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.xtns.wdatas.specials; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; +package gplx.xowa.xtns.wbases.specials; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wbases.*; import gplx.core.net.*; import gplx.core.net.qargs.*; import gplx.core.brys.fmtrs.*; import gplx.xowa.wikis.domains.*; import gplx.xowa.specials.*; import gplx.xowa.apps.urls.*; diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/specials/Wdata_itemByTitle_page_tst.java b/400_xowa/src/gplx/xowa/xtns/wbases/specials/Wdata_itemByTitle_page_tst.java similarity index 94% rename from 400_xowa/src/gplx/xowa/xtns/wdatas/specials/Wdata_itemByTitle_page_tst.java rename to 400_xowa/src/gplx/xowa/xtns/wbases/specials/Wdata_itemByTitle_page_tst.java index 070d911d2..19e8676ca 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/specials/Wdata_itemByTitle_page_tst.java +++ b/400_xowa/src/gplx/xowa/xtns/wbases/specials/Wdata_itemByTitle_page_tst.java @@ -15,7 +15,7 @@ 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.xtns.wdatas.specials; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; +package gplx.xowa.xtns.wbases.specials; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wbases.*; import org.junit.*; import gplx.xowa.wikis.domains.*; public class Wdata_itemByTitle_page_tst { @Before public void init() {fxt.Clear();} private Wdata_itemByTitle_page_fxt fxt = new Wdata_itemByTitle_page_fxt(); diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_claim_itm_base.java b/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_claim_itm_base.java deleted file mode 100644 index a8b589d2a..000000000 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_claim_itm_base.java +++ /dev/null @@ -1,35 +0,0 @@ -/* -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.xtns.wdatas.core; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; -import gplx.xowa.xtns.wdatas.hwtrs.*; -public abstract class Wdata_claim_itm_base implements CompareAble { - public Wdata_claim_itm_base Ctor(int pid, byte snak_tid) { - this.pid = pid; - this.snak_tid = snak_tid; - return this; - } - public int Pid() {return pid;} private int pid; - public abstract byte Val_tid(); - public byte Snak_tid() {return snak_tid;} private byte snak_tid = Wdata_dict_snak_tid.Tid_value; - public byte Rank_tid() {return rank_tid;} public void Rank_tid_(byte v) {this.rank_tid = v;} private byte rank_tid = Wdata_dict_rank.Tid_normal; // TEST: default to normal for tests - public abstract void Welcome(Wdata_claim_visitor visitor); - public int compareTo(Object obj) { - Wdata_claim_itm_base comp = (Wdata_claim_itm_base)obj; - return Int_.Compare(pid, comp.pid); - } -} diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_claim_itm_core.java b/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_claim_itm_core.java deleted file mode 100644 index c92bd5211..000000000 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_claim_itm_core.java +++ /dev/null @@ -1,26 +0,0 @@ -/* -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.xtns.wdatas.core; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; -import gplx.xowa.xtns.wdatas.hwtrs.*; -public abstract class Wdata_claim_itm_core extends Wdata_claim_itm_base { - public byte[] Wguid() {return wguid;} public void Wguid_(byte[] v) {this.wguid = v;} private byte[] wguid; - public String Prop_type() {return Prop_type_statement;} private static final String Prop_type_statement = "statement"; - public Wdata_claim_grp_list Qualifiers() {return qualifiers;} public Wdata_claim_itm_core Qualifiers_(Wdata_claim_grp_list v) {qualifiers = v; return this;} private Wdata_claim_grp_list qualifiers; - public int[] Qualifiers_order() {return qualifiers_order;} public void Qualifiers_order_(int[] v) {qualifiers_order = v;} private int[] qualifiers_order; - public Wdata_references_grp[] References() {return references;} public void References_(Wdata_references_grp[] v) {references = v;} private Wdata_references_grp[] references; -} diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_claim_itm_entity.java b/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_claim_itm_entity.java deleted file mode 100644 index 8fbfaeb7c..000000000 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_claim_itm_entity.java +++ /dev/null @@ -1,49 +0,0 @@ -/* -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.xtns.wdatas.core; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; -import gplx.xowa.xtns.wdatas.hwtrs.*; -public class Wdata_claim_itm_entity extends Wdata_claim_itm_core { public Wdata_claim_itm_entity(int pid, byte snak_tid, byte entity_tid, byte[] entity_id_bry) { - this.Ctor(pid, snak_tid); - this.entity_tid = entity_tid; - this.entity_id_bry = entity_id_bry; - this.entity_id = Bry_.To_int(entity_id_bry); - } - @Override public byte Val_tid() {return Wdata_dict_val_tid.Tid_entity;} - public int Entity_id() {return entity_id;} private final int entity_id; - public byte[] Entity_id_bry() {return entity_id_bry;} private final byte[] entity_id_bry; - public byte Entity_tid() {return entity_tid;} private final byte entity_tid; - public boolean Entity_tid_is_qid() {return entity_tid == Wdata_dict_value_entity_tid.Tid_item;} - public String Entity_tid_str() {return Wdata_dict_value_entity_tid.Xto_str(entity_tid);} - public byte[] Entity_tid_bry() {return Wdata_dict_value_entity_tid.Xto_bry(entity_tid);} - public byte[] Page_ttl_db() { - return entity_tid == Wdata_dict_value_entity_tid.Tid_item - ? Bry_.Add(Wdata_wiki_mgr.Ttl_prefix_qid_bry_db, entity_id_bry) - : Bry_.Add(Wdata_wiki_mgr.Ttl_prefix_pid_bry, entity_id_bry) - ; - } - public byte[] Page_ttl_gui() { - return entity_tid == Wdata_dict_value_entity_tid.Tid_item - ? Bry_.Add(Wdata_wiki_mgr.Ttl_prefix_qid_bry_gui, entity_id_bry) - : Bry_.Add(Wdata_wiki_mgr.Ttl_prefix_pid_bry, entity_id_bry) - ; - } - @Override public void Welcome(Wdata_claim_visitor visitor) {visitor.Visit_entity(this);} - @Override public String toString() {// TEST: - return String_.Concat_with_str("|", Wdata_dict_snak_tid.Xto_str(this.Snak_tid()), Wdata_dict_val_tid.Xto_str(this.Val_tid()), this.Entity_tid_str(), Int_.To_str(entity_id)); - } -} diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_claim_itm_globecoordinate.java b/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_claim_itm_globecoordinate.java deleted file mode 100644 index 9c7497534..000000000 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_claim_itm_globecoordinate.java +++ /dev/null @@ -1,40 +0,0 @@ -/* -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.xtns.wdatas.core; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; -import gplx.xowa.xtns.wdatas.hwtrs.*; -public class Wdata_claim_itm_globecoordinate extends Wdata_claim_itm_core { public Wdata_claim_itm_globecoordinate(int pid, byte snak_tid, byte[] lat, byte[] lng, byte[] alt, byte[] prc, byte[] glb) { - this.Ctor(pid, snak_tid); - this.lat = lat; this.lng = lng; this.alt = alt; this.prc = prc; this.glb = glb; - } - @Override public byte Val_tid() {return Wdata_dict_val_tid.Tid_globecoordinate;} - public byte[] Lat() {return lat;} private final byte[] lat; - public byte[] Lng() {return lng;} private final byte[] lng; - public byte[] Alt() {return alt;} private final byte[] alt; - public byte[] Prc() {return prc;} private final byte[] prc; - public Decimal_adp Prc_as_num() { - if (prc_as_num == null) - prc_as_num = Bry_.Eq(prc, Object_.Bry__null) ? Decimal_adp_.One : Decimal_adp_.parse(String_.new_a7(prc)); - return prc_as_num; - } private Decimal_adp prc_as_num; - public byte[] Glb() {return glb;} private final byte[] glb; - public byte[] Glb_ttl() {return glb_ttl;} public void Glb_ttl_(byte[] v) {glb_ttl = v;} private byte[] glb_ttl; - @Override public void Welcome(Wdata_claim_visitor visitor) {visitor.Visit_globecoordinate(this);} - @Override public String toString() {// TEST: - return String_.Concat_with_str("|", Wdata_dict_snak_tid.Xto_str(this.Snak_tid()), Wdata_dict_val_tid.Xto_str(this.Val_tid()), String_.new_u8(lat), String_.new_u8(lng), String_.new_u8(alt), String_.new_u8(prc), String_.new_u8(glb)); - } -} diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_claim_itm_monolingualtext.java b/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_claim_itm_monolingualtext.java deleted file mode 100644 index b226637a1..000000000 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_claim_itm_monolingualtext.java +++ /dev/null @@ -1,31 +0,0 @@ -/* -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.xtns.wdatas.core; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; -import gplx.xowa.xtns.wdatas.hwtrs.*; -public class Wdata_claim_itm_monolingualtext extends Wdata_claim_itm_core { public Wdata_claim_itm_monolingualtext(int pid, byte snak_tid, byte[] lang, byte[] text) { - this.Ctor(pid, snak_tid); - this.lang = lang; this.text = text; - } - @Override public byte Val_tid() {return Wdata_dict_val_tid.Tid_monolingualtext;} - public byte[] Lang() {return lang;} private final byte[] lang; - public byte[] Text() {return text;} private final byte[] text; - @Override public void Welcome(Wdata_claim_visitor visitor) {visitor.Visit_monolingualtext(this);} - @Override public String toString() {// TEST: - return String_.Concat_with_str("|", Wdata_dict_snak_tid.Xto_str(this.Snak_tid()), Wdata_dict_val_tid.Xto_str(this.Val_tid()), String_.new_u8(lang), String_.new_u8(text)); - } -} diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_claim_itm_system.java b/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_claim_itm_system.java deleted file mode 100644 index ebe086e26..000000000 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_claim_itm_system.java +++ /dev/null @@ -1,31 +0,0 @@ -/* -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.xtns.wdatas.core; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; -import gplx.xowa.xtns.wdatas.hwtrs.*; -public class Wdata_claim_itm_system extends Wdata_claim_itm_core { public Wdata_claim_itm_system(int pid, byte val_tid, byte snak_tid) { - this.Ctor(pid, snak_tid); - this.val_tid = val_tid; - } - @Override public byte Val_tid() {return val_tid;} private byte val_tid; - @Override public String toString() {// TEST: - return String_.Concat_with_str("|", Wdata_dict_snak_tid.Xto_str(this.Snak_tid()), Wdata_dict_val_tid.Xto_str(this.Val_tid())); - } - @Override public void Welcome(Wdata_claim_visitor visitor) {visitor.Visit_system(this);} - public static Wdata_claim_itm_system new_novalue(int pid) {return new Wdata_claim_itm_system(pid, Wdata_dict_val_tid.Tid_unknown , Wdata_dict_snak_tid.Tid_novalue);} - public static Wdata_claim_itm_system new_somevalue(int pid) {return new Wdata_claim_itm_system(pid, Wdata_dict_val_tid.Tid_unknown , Wdata_dict_snak_tid.Tid_somevalue);} -} diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_claim_itm_time.java b/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_claim_itm_time.java deleted file mode 100644 index 53af16032..000000000 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_claim_itm_time.java +++ /dev/null @@ -1,88 +0,0 @@ -/* -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.xtns.wdatas.core; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; -import gplx.core.brys.fmtrs.*; -import gplx.xowa.xtns.wdatas.hwtrs.*; -public class Wdata_claim_itm_time extends Wdata_claim_itm_core { public Wdata_claim_itm_time(int pid, byte snak_tid, byte[] time, byte[] timezone, byte[] before, byte[] after, byte[] precision, byte[] calendar) { - this.Ctor(pid, snak_tid); - this.time = time; this.before = before; this.after = after; this.precision = precision; this.calendar = calendar; - } - @Override public byte Val_tid() {return Wdata_dict_val_tid.Tid_time;} - public byte[] Time() {return time;} private final byte[] time; - public Wdata_date Time_as_date() { - if (time_as_date == null) time_as_date = Wdata_date.parse(time, this.Precision_int(), this.Before_int(), this.After_int(), this.Calendar_is_julian()); - return time_as_date; - } private Wdata_date time_as_date; - public byte[] Before() {return before;} private final byte[] before; - public byte[] After() {return after;} private final byte[] after; - public byte[] Precision() {return precision;} private final byte[] precision; - public int Precision_int() { - if (precision_int == Int_.Min_value) { - precision_int = Bry_.To_int_or(precision, -1); - if (precision_int == -1) { - precision_int = Wdata_date.Fmt_ymdhns; - Gfo_usr_dlg_.Instance.Warn_many("", "", "unknown precision: ~{0}", String_.new_u8(precision)); - } - } - return precision_int; - } private int precision_int = Int_.Min_value; - public int Before_int() { - if (before_int == Int_.Min_value) { - before_int = Bry_.To_int_or(before, -1); - if (before_int == -1) { - before_int = 0; - Gfo_usr_dlg_.Instance.Warn_many("", "", "unknown before: ~{0}", String_.new_u8(before)); - } - } - return before_int; - } private int before_int = Int_.Min_value; - public int After_int() { - if (after_int == Int_.Min_value) { - after_int = Bry_.To_int_or(after, -1); - if (after_int == -1) { - after_int = 0; - Gfo_usr_dlg_.Instance.Warn_many("", "", "unknown after: ~{0}", String_.new_u8(after)); - } - } - return after_int; - } private int after_int = Int_.Min_value; - public byte[] Calendar() {return calendar;} private final byte[] calendar; - public byte[] Calendar_ttl() {return calendar_ttl;} public void Calendar_ttl_(byte[] v) {calendar_ttl = v;} private byte[] calendar_ttl; - public boolean Calendar_is_julian() {return Bry_.Eq(calendar, Calendar_julian);} - @Override public String toString() {// TEST: - return String_.Concat_with_str("|", Wdata_dict_snak_tid.Xto_str(this.Snak_tid()), Wdata_dict_val_tid.Xto_str(this.Val_tid()), String_.new_u8(time), String_.new_u8(before), String_.new_u8(after), String_.new_u8(precision), String_.new_u8(calendar)); - } - @Override public void Welcome(Wdata_claim_visitor visitor) {visitor.Visit_time(this);} - public void Write_to_bfr(Bry_bfr bfr, Bry_bfr tmp_time_bfr, Bry_fmtr tmp_time_fmtr, Wdata_hwtr_msgs msgs, byte[] ttl) { - try { - Wdata_date date = this.Time_as_date(); - boolean calendar_is_julian = this.Calendar_is_julian(); - byte[] calendar_display = null; - if (calendar_is_julian) { - date = Wdata_date.Xto_julian(date); - calendar_display = msgs.Time_julian(); - } - Wdata_date.Xto_str(bfr, tmp_time_fmtr, tmp_time_bfr, msgs, date); - if (calendar_display != null) - bfr.Add_byte_space().Add(calendar_display); - } catch (Exception e) { - Xoa_app_.Usr_dlg().Warn_many("", "", "failed to write time; ttl=~{0} pid=~{1} err=~{2}", ttl, this.Pid(), Err_.Message_gplx_log(e)); - } - } - private static final byte[] Calendar_julian = Bry_.new_a7("http://www.wikidata.org/entity/Q1985786"); -} diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_dict_rank.java b/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_dict_rank.java deleted file mode 100644 index 47749c549..000000000 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_dict_rank.java +++ /dev/null @@ -1,54 +0,0 @@ -/* -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.xtns.wdatas.core; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; -import gplx.core.primitives.*; -public class Wdata_dict_rank { - public static final byte // SERIALIZED: - Tid_preferred = 2 - , Tid_normal = 1 - , Tid_deprecated = 0 - , Tid_unknown = Byte_.Max_value_127 - ; - public static final String - Str_preferred = "preferred" - , Str_normal = "normal" - , Str_deprecated = "deprecated" - ; - public static byte[] - Bry_preferred = Bry_.new_a7(Str_preferred) - , Bry_normal = Bry_.new_a7(Str_normal) - , Bry_deprecated = Bry_.new_a7(Str_deprecated) - ; - public static final Hash_adp_bry Dict = Hash_adp_bry.cs() - .Add_bry_byte(Bry_preferred , Tid_preferred) - .Add_bry_byte(Bry_normal , Tid_normal) - .Add_bry_byte(Bry_deprecated , Tid_deprecated) - ; - public static String Xto_str(byte tid) { - switch (tid) { - case Tid_preferred : return Str_preferred; - case Tid_normal : return Str_normal; - case Tid_deprecated : return Str_deprecated; - default : throw Err_.new_unhandled(tid); - } - } - public static byte Xto_tid(byte[] v) { - Object rv_obj = Dict.Get_by_bry(v); if (rv_obj == null) throw Err_.new_wo_type("unknown rank", "val", String_.new_u8(v)); - return ((Byte_obj_val)rv_obj).Val(); - } -} \ No newline at end of file diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_dict_snak_tid.java b/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_dict_snak_tid.java deleted file mode 100644 index bfebcf33d..000000000 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_dict_snak_tid.java +++ /dev/null @@ -1,61 +0,0 @@ -/* -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.xtns.wdatas.core; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; -import gplx.core.primitives.*; -public class Wdata_dict_snak_tid { - public static final byte - Tid_novalue = 0 - , Tid_value = 1 - , Tid_somevalue = 2 - ; - public static final String - Str_novalue = "novalue" - , Str_value = "value" - , Str_somevalue = "somevalue" - ; - public static final byte[] - Bry_novalue = Bry_.new_a7(Str_novalue) - , Bry_value = Bry_.new_a7(Str_value) - , Bry_somevalue = Bry_.new_a7(Str_somevalue) - ; - private static Hash_adp_bry Dict = Hash_adp_bry.cs() - .Add_bry_byte(Bry_novalue , Tid_novalue) - .Add_bry_byte(Bry_value , Tid_value) - .Add_bry_byte(Bry_somevalue , Tid_somevalue) - ; - public static String Xto_str(byte v) { - switch (v) { - case Tid_novalue: return Str_novalue; - case Tid_value: return Str_value; - case Tid_somevalue: return Str_somevalue; - default: return "unknown"; - } - } - public static byte[] Xto_bry(byte v) { - switch (v) { - case Tid_novalue: return Bry_novalue; - case Tid_value: return Bry_value; - case Tid_somevalue: return Bry_somevalue; - default: return null; - } - } - public static byte Xto_tid(byte[] v) { - Object rv_obj = Dict.Get_by_bry(v); if (rv_obj == null) throw Err_.new_wo_type("unknown snak tid", "val", String_.new_u8(v)); - return ((Byte_obj_val)rv_obj).Val(); - } -} diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_dict_val_tid.java b/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_dict_val_tid.java deleted file mode 100644 index a6c2c146a..000000000 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_dict_val_tid.java +++ /dev/null @@ -1,91 +0,0 @@ -/* -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.xtns.wdatas.core; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; -import gplx.core.primitives.*; -public class Wdata_dict_val_tid { - public static final byte - Tid_unknown = 0 - , Tid_value = 1 - , Tid_bad = 1 - , Tid_string = 2 - , Tid_entity = 3 - , Tid_time = 4 - , Tid_globecoordinate = 5 - , Tid_quantity = 6 - , Tid_monolingualtext = 7 - ; - public static final String - Str_bad = "bad" - , Str_string = "string" - , Str_entity = "wikibase-entityid" - , Str_time = "time" - , Str_globecoordinate = "globecoordinate" - , Str_quantity = "quantity" - , Str_monolingualtext = "monolingualtext" - , Str_unknown = "unknown" - ; - public static final byte[] - Bry_bad = Bry_.new_a7(Str_bad) - , Bry_string = Bry_.new_a7(Str_string) - , Bry_entity = Bry_.new_a7(Str_entity) - , Bry_time = Bry_.new_a7(Str_time) - , Bry_globecoordinate = Bry_.new_a7(Str_globecoordinate) - , Bry_quantity = Bry_.new_a7(Str_quantity) - , Bry_monolingualtext = Bry_.new_a7(Str_monolingualtext) - , Bry_unknown = Bry_.new_a7(Str_unknown) - ; - private static final Hash_adp_bry Dict = Hash_adp_bry.cs() - .Add_bry_byte(Bry_string , Tid_string) - .Add_bry_byte(Bry_entity , Tid_entity) - .Add_bry_byte(Bry_time , Tid_time) - .Add_bry_byte(Bry_globecoordinate , Tid_globecoordinate) - .Add_bry_byte(Bry_quantity , Tid_quantity) - .Add_bry_byte(Bry_monolingualtext , Tid_monolingualtext) - .Add_bry_byte(Bry_bad , Tid_bad) - ; - public static String Xto_str(byte tid) { - switch (tid) { - case Tid_string : return Str_string; - case Tid_entity : return Str_entity; - case Tid_time : return Str_time; - case Tid_globecoordinate : return Str_globecoordinate; - case Tid_quantity : return Str_quantity; - case Tid_monolingualtext : return Str_monolingualtext; - case Tid_bad : return Str_bad; // NOTE: wikidata identifies several entries as "bad"; Q1615351|'s-Graveland, Q107538|Baco; DATE:2013-10-20 - default : return Str_unknown; - } - } - public static String To_str__srl(byte tid) { // for scrib.wbase - switch (tid) { - case Tid_string : return Str_string; - case Tid_entity : return "wikibase-item"; // changed from "wikibase-entityid"; PAGE:ht.w:Srilanka DATE:2016-07-08 - case Tid_time : return Str_time; - case Tid_globecoordinate : return "globe-coordinate"; - case Tid_quantity : return Str_quantity; - case Tid_monolingualtext : return Str_monolingualtext; - case Tid_bad : return Str_bad; // NOTE: wikidata identifies several entries as "bad"; Q1615351|'s-Graveland, Q107538|Baco; DATE:2013-10-20 - default : return Str_unknown; - } - } - public static byte Xto_tid(byte[] src) {return Xto_tid(src, 0, src.length);} - public static byte Xto_tid(byte[] src, int bgn, int end) { - Object bval_obj = Dict.Get_by_mid(src, bgn, end); - if (bval_obj == null) return Tid_unknown; - return ((Byte_obj_val)bval_obj).Val(); - } -} diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_dict_value_entity.java b/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_dict_value_entity.java deleted file mode 100644 index 8526bda78..000000000 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_dict_value_entity.java +++ /dev/null @@ -1,36 +0,0 @@ -/* -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.xtns.wdatas.core; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; -public class Wdata_dict_value_entity { - public static final byte - Tid_entity_type = 0 - , Tid_numeric_id = 1 - ; - public static final String - Str_entity_type = "entity-type" - , Str_numeric_id = "numeric-id" - ; - public static byte[] - Bry_entity_type = Bry_.new_a7(Str_entity_type) - , Bry_numeric_id = Bry_.new_a7(Str_numeric_id) - ; - public static final Hash_adp_bry Dict = Hash_adp_bry.cs() - .Add_bry_byte(Bry_entity_type , Tid_entity_type) - .Add_bry_byte(Bry_numeric_id , Tid_numeric_id) - ; -} diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_dict_value_entity_tid.java b/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_dict_value_entity_tid.java deleted file mode 100644 index acaf7a01a..000000000 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_dict_value_entity_tid.java +++ /dev/null @@ -1,55 +0,0 @@ -/* -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.xtns.wdatas.core; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; -import gplx.core.primitives.*; -public class Wdata_dict_value_entity_tid { - public static final byte - Tid_item = 0 - , Tid_property = 1 - ; - public static final String - Str_item = "item" - , Str_property = "property" - ; - public static final byte[] - Bry_item = Bry_.new_a7(Str_item) - , Bry_property = Bry_.new_a7(Str_property) - ; - private static Hash_adp_bry Dict = Hash_adp_bry.cs() - .Add_bry_byte(Bry_item , Tid_item) - .Add_bry_byte(Bry_property , Tid_property) - ; - public static String Xto_str(byte v) { - switch (v) { - case Tid_item: return Str_item; - case Tid_property: return Str_property; - default: return null; - } - } - public static byte[] Xto_bry(byte v) { - switch (v) { - case Tid_item: return Bry_item; - case Tid_property: return Bry_property; - default: return null; - } - } - public static byte Xto_tid(byte[] v) { - Object rv_obj = Dict.Get_by_bry(v); if (rv_obj == null) throw Err_.new_wo_type("unknown entity_tid", "val", v); - return ((Byte_obj_val)rv_obj).Val(); - } -} diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_dict_value_globecoordinate.java b/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_dict_value_globecoordinate.java deleted file mode 100644 index 3cff8efe8..000000000 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_dict_value_globecoordinate.java +++ /dev/null @@ -1,54 +0,0 @@ -/* -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.xtns.wdatas.core; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; -public class Wdata_dict_value_globecoordinate { - public static final byte - Tid_latitude = 0 - , Tid_longitude = 1 - , Tid_altitude = 2 - , Tid_precision = 3 - , Tid_globe = 4 - ; - public static final String - Str_latitude = "latitude" - , Str_longitude = "longitude" - , Str_altitude = "altitude" - , Str_precision = "precision" - , Str_globe = "globe" - ; - public static byte[] - Bry_latitude = Bry_.new_a7(Str_latitude) - , Bry_longitude = Bry_.new_a7(Str_longitude) - , Bry_altitude = Bry_.new_a7(Str_altitude) - , Bry_precision = Bry_.new_a7(Str_precision) - , Bry_globe = Bry_.new_a7(Str_globe) - ; - public static final Hash_adp_bry Dict = Hash_adp_bry.cs() - .Add_bry_byte(Bry_latitude , Tid_latitude) - .Add_bry_byte(Bry_longitude , Tid_longitude) - .Add_bry_byte(Bry_altitude , Tid_altitude) - .Add_bry_byte(Bry_precision , Tid_precision) - .Add_bry_byte(Bry_globe , Tid_globe) - ; - public static String - Val_globe_dflt_str = "http://www.wikidata.org/entity/Q2" - ; - public static byte[] - Val_globe_dflt_bry = Bry_.new_a7(Val_globe_dflt_str) - ; -} diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_dict_value_monolingualtext.java b/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_dict_value_monolingualtext.java deleted file mode 100644 index 89533943c..000000000 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_dict_value_monolingualtext.java +++ /dev/null @@ -1,36 +0,0 @@ -/* -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.xtns.wdatas.core; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; -public class Wdata_dict_value_monolingualtext { - public static final byte - Tid_text = 0 - , Tid_language = 1 - ; - public static final String - Str_text = "text" - , Str_language = "language" - ; - public static byte[] - Bry_text = Bry_.new_a7(Str_text) - , Bry_language = Bry_.new_a7(Str_language) - ; - public static final Hash_adp_bry Dict = Hash_adp_bry.cs() - .Add_bry_byte(Bry_text , Tid_text) - .Add_bry_byte(Bry_language , Tid_language) - ; -} diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_dict_value_quantity.java b/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_dict_value_quantity.java deleted file mode 100644 index 536e3d92a..000000000 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_dict_value_quantity.java +++ /dev/null @@ -1,44 +0,0 @@ -/* -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.xtns.wdatas.core; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; -public class Wdata_dict_value_quantity { - public static final byte - Tid_amount = 0 - , Tid_unit = 1 - , Tid_upperbound = 2 - , Tid_lowerbound = 3 - ; - public static final String - Str_amount = "amount" - , Str_unit = "unit" - , Str_upperbound = "upperBound" - , Str_lowerbound = "lowerBound" - ; - public static byte[] - Bry_amount = Bry_.new_a7(Str_amount) - , Bry_unit = Bry_.new_a7(Str_unit) - , Bry_upperbound = Bry_.new_a7(Str_upperbound) - , Bry_lowerbound = Bry_.new_a7(Str_lowerbound) - ; - public static final Hash_adp_bry Dict = Hash_adp_bry.cs() - .Add_bry_byte(Bry_amount , Tid_amount) - .Add_bry_byte(Bry_unit , Tid_unit) - .Add_bry_byte(Bry_upperbound , Tid_upperbound) - .Add_bry_byte(Bry_lowerbound , Tid_lowerbound) - ; -} diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_dict_value_time.java b/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_dict_value_time.java deleted file mode 100644 index e00324e6a..000000000 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_dict_value_time.java +++ /dev/null @@ -1,93 +0,0 @@ -/* -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.xtns.wdatas.core; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; -public class Wdata_dict_value_time { - public static final byte - Tid_time = 0 - , Tid_timezone = 1 - , Tid_before = 2 - , Tid_after = 3 - , Tid_precision = 4 - , Tid_calendarmodel = 5 - ; - public static final String - Str_time = "time" - , Str_timezone = "timezone" - , Str_before = "before" - , Str_after = "after" - , Str_precision = "precision" - , Str_calendarmodel = "calendarmodel" - ; - public static byte[] - Bry_time = Bry_.new_a7(Str_time) - , Bry_timezone = Bry_.new_a7(Str_timezone) - , Bry_before = Bry_.new_a7(Str_before) - , Bry_after = Bry_.new_a7(Str_after) - , Bry_precision = Bry_.new_a7(Str_precision) - , Bry_calendarmodel = Bry_.new_a7(Str_calendarmodel) - ; - public static final Hash_adp_bry Dict = Hash_adp_bry.cs() - .Add_bry_byte(Bry_time , Tid_time) - .Add_bry_byte(Bry_timezone , Tid_timezone) - .Add_bry_byte(Bry_before , Tid_before) - .Add_bry_byte(Bry_after , Tid_after) - .Add_bry_byte(Bry_precision , Tid_precision) - .Add_bry_byte(Bry_calendarmodel , Tid_calendarmodel) - ; - public static final int - Val_precision_int = 11 - , Val_before_int = 0 - , Val_after_int = 0 - , Val_timezone_int = 0 - ; - public static final String - Val_precision_str = "11" - , Val_before_str = "0" - , Val_after_str = "0" - , Val_timezone_str = "0" - , Val_calendarmodel_str = "http://www.wikidata.org/entity/Q1985727" - ; - public static final byte[] - Val_precision_bry = Bry_.new_a7(Val_precision_str) - , Val_before_bry = Bry_.new_a7(Val_before_str) - , Val_after_bry = Bry_.new_a7(Val_after_str) - , Val_timezone_bry = Bry_.new_a7(Val_timezone_str) - , Val_calendarmodel_bry = Bry_.new_a7(Val_calendarmodel_str) - ; - public static byte[] Xto_time(String date) {return Xto_time(DateAdp_.parse_fmt(date, "yyyy-MM-dd HH:mm:ss"));} - public static byte[] Xto_time(DateAdp date) { - // +0000000yyyy-MM-ddTHH:mm:ssZ - tmp_bfr - .Add(Bry_year_prefix) - .Add_int_fixed(date.Year(), 4) - .Add_byte(Byte_ascii.Dash) - .Add_int_fixed(date.Month(), 2) - .Add_byte(Byte_ascii.Dash) - .Add_int_fixed(date.Day(), 2) - .Add_byte(Byte_ascii.Ltr_T) - .Add_int_fixed(date.Hour(), 2) - .Add_byte(Byte_ascii.Colon) - .Add_int_fixed(date.Minute(), 2) - .Add_byte(Byte_ascii.Colon) - .Add_int_fixed(date.Second(), 2) - .Add_byte(Byte_ascii.Ltr_Z) - ; - return tmp_bfr.To_bry_and_clear(); - } - private static Bry_bfr tmp_bfr = Bry_bfr_.New(); private static byte[] Bry_year_prefix = Bry_.new_a7("+0000000"); -} diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/parsers/Wdata_claims_parser_v2.java b/400_xowa/src/gplx/xowa/xtns/wdatas/parsers/Wdata_claims_parser_v2.java deleted file mode 100644 index 2a7d763f4..000000000 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/parsers/Wdata_claims_parser_v2.java +++ /dev/null @@ -1,247 +0,0 @@ -/* -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.xtns.wdatas.parsers; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; -import gplx.core.primitives.*; -import gplx.langs.jsons.*; import gplx.xowa.xtns.wdatas.core.*; -class Wdata_claims_parser_v2 { - public void Make_claim_itms(byte[] qid, List_adp claim_itms_list, byte[] src, Json_kv claim_grp) { - Json_ary claim_itms_ary = Json_ary.cast_or_null(claim_grp.Val()); - int claim_itms_len = claim_itms_ary.Len(); - int pid = Parse_pid(claim_grp.Key().Data_bry()); - for (int i = 0; i < claim_itms_len; ++i) { - Json_nde claim_itm_nde = Json_nde.cast(claim_itms_ary.Get_at(i)); - Wdata_claim_itm_base itm = Parse_claim_itm(qid, claim_itm_nde, pid); - if (itm != null) // HACK: itm can be null if value is "somevalue"; DATE:2014-09-20 - claim_itms_list.Add(itm); - } - } - private Wdata_claim_itm_core Parse_claim_itm(byte[] qid, Json_nde nde, int pid) { - int len = nde.Len(); - Hash_adp_bry dict = Wdata_dict_claim.Dict; - byte rank_tid = Wdata_dict_rank.Tid_unknown; - Wdata_claim_itm_core claim_itm = null; Wdata_claim_grp_list qualifiers = null; int[] qualifiers_order = null; Wdata_references_grp[] snaks_grp = null; - for (int i = 0; i < len; ++i) { - Json_kv sub = Json_kv.cast(nde.Get_at(i)); - byte tid = Wdata_dict_utl.Get_tid_or_invalid(qid, dict, sub.Key().Data_bry()); if (tid == Wdata_dict_utl.Tid_invalid) continue; - switch (tid) { - case Wdata_dict_claim.Tid_mainsnak: claim_itm = Parse_mainsnak(qid, Json_nde.cast(sub.Val()), pid); break; - case Wdata_dict_claim.Tid_rank: rank_tid = Wdata_dict_rank.Xto_tid(sub.Val().Data_bry()); break; - case Wdata_dict_claim.Tid_references: snaks_grp = Parse_references(qid, Json_ary.cast_or_null(sub.Val())); break; - case Wdata_dict_claim.Tid_qualifiers: qualifiers = Parse_qualifiers(qid, Json_nde.cast(sub.Val())); break; - case Wdata_dict_claim.Tid_qualifiers_order: qualifiers_order = Parse_pid_order(Json_ary.cast_or_null(sub.Val())); break; - case Wdata_dict_claim.Tid_type: break; // ignore: "statement" - case Wdata_dict_claim.Tid_id: break; // ignore: "Q2$F909BD1C-D34D-423F-9ED2-3493663321AF" - } - } - if (claim_itm != null) { - claim_itm.Rank_tid_(rank_tid); - if (qualifiers != null) claim_itm.Qualifiers_(qualifiers); - if (qualifiers_order != null) claim_itm.Qualifiers_order_(qualifiers_order); - if (snaks_grp != null) claim_itm.References_(snaks_grp); - } - return claim_itm; - } - public Wdata_references_grp[] Parse_references(byte[] qid, Json_ary owner) { - int len = owner.Len(); - Wdata_references_grp[] rv = new Wdata_references_grp[len]; - for (int i = 0; i < len; ++i) { - Json_nde grp_nde = Json_nde.cast(owner.Get_at(i)); - rv[i] = Parse_references_grp(qid, grp_nde); - } - return rv; - } - private Wdata_references_grp Parse_references_grp(byte[] qid, Json_nde owner) { - int len = owner.Len(); - Hash_adp_bry dict = Wdata_dict_reference.Dict; - Wdata_claim_grp_list snaks = null; int[] snaks_order = null; - for (int i = 0; i < len; ++i) { - Json_kv sub = Json_kv.cast(owner.Get_at(i)); - byte tid = Wdata_dict_utl.Get_tid_or_invalid(qid, dict, sub.Key().Data_bry()); if (tid == Wdata_dict_utl.Tid_invalid) continue; - switch (tid) { - case Wdata_dict_reference.Tid_hash: break; // ignore: "b923b0d68beb300866b87ead39f61e63ec30d8af" - case Wdata_dict_reference.Tid_snaks: snaks = Parse_qualifiers(qid, Json_nde.cast(sub.Val())); break; - case Wdata_dict_reference.Tid_snaks_order: snaks_order = Parse_pid_order(Json_ary.cast_or_null(sub.Val())); break; - } - } - return new Wdata_references_grp(snaks, snaks_order); - } - public Wdata_claim_grp_list Parse_qualifiers(byte[] qid, Json_nde qualifiers_nde) { - Wdata_claim_grp_list rv = new Wdata_claim_grp_list(); - if (qualifiers_nde == null) return rv; // NOTE:sometimes references can have 0 snaks; return back an empty Wdata_claim_grp_list, not null; PAGE:Птичкин,_Евгений_Николаевич; DATE:2015-02-16 - int len = qualifiers_nde.Len(); - for (int i = 0; i < len; ++i) { - Json_kv qualifier_kv = Json_kv.cast(qualifiers_nde.Get_at(i)); - int pid = Parse_pid(qualifier_kv.Key().Data_bry()); - Wdata_claim_grp claims_grp = Parse_props_grp(qid, pid, Json_ary.cast_or_null(qualifier_kv.Val())); - rv.Add(claims_grp); - } - return rv; - } - public int[] Parse_pid_order(Json_ary ary) { - int len = ary.Len(); - int[] rv = new int[len]; - for (int i = 0; i < len; ++i) { - Json_itm pid_itm = ary.Get_at(i); - rv[i] = Parse_pid(pid_itm.Data_bry()); - } - return rv; - } - private Wdata_claim_grp Parse_props_grp(byte[] qid, int pid, Json_ary props_ary) { - List_adp list = List_adp_.New(); - int len = props_ary.Len(); - for (int i = 0; i < len; ++i) { - Json_nde qualifier_nde = Json_nde.cast(props_ary.Get_at(i)); - Wdata_claim_itm_core qualifier_itm = Parse_mainsnak(qid, qualifier_nde, pid); - list.Add(qualifier_itm); - } - return new Wdata_claim_grp(Int_obj_ref.New(pid), (Wdata_claim_itm_core[])list.To_ary_and_clear(Wdata_claim_itm_core.class)); - } - public Wdata_claim_itm_core Parse_mainsnak(byte[] qid, Json_nde nde, int pid) { - int len = nde.Len(); - Hash_adp_bry dict = Wdata_dict_mainsnak.Dict; - byte snak_tid = Byte_.Max_value_127; - for (int i = 0; i < len; ++i) { - Json_kv sub = Json_kv.cast(nde.Get_at(i)); - byte tid = Wdata_dict_utl.Get_tid_or_invalid(qid, dict, sub.Key().Data_bry()); if (tid == Wdata_dict_utl.Tid_invalid) continue; - switch (tid) { - case Wdata_dict_mainsnak.Tid_snaktype: snak_tid = Wdata_dict_snak_tid.Xto_tid(sub.Val().Data_bry()); break; - case Wdata_dict_mainsnak.Tid_datavalue: return Parse_datavalue(qid, pid, snak_tid, Json_nde.cast(sub.Val())); - case Wdata_dict_mainsnak.Tid_datatype: break; // ignore: has values like "wikibase-property"; EX: www.wikidata.org/wiki/Property:P397; DATE:2015-06-12 - case Wdata_dict_mainsnak.Tid_property: break; // ignore: pid already available above - case Wdata_dict_mainsnak.Tid_hash: break; // ignore: "84487fc3f93b4f74ab1cc5a47d78f596f0b49390" - } - } - return new Wdata_claim_itm_system(pid, Wdata_dict_val_tid.Tid_unknown, snak_tid); // NOTE: mainsnak can be null, especially for qualifiers; PAGE:Q2!P576; DATE:2014-09-20 - } - public Wdata_claim_itm_core Parse_datavalue(byte[] qid, int pid, byte snak_tid, Json_nde nde) { - int len = nde.Len(); - Hash_adp_bry dict = Wdata_dict_datavalue.Dict; - Json_itm value_itm = null; byte value_tid = Wdata_dict_val_tid.Tid_unknown; - for (int i = 0; i < len; ++i) { - Json_kv sub = Json_kv.cast(nde.Get_at(i)); - byte tid = Wdata_dict_utl.Get_tid_or_invalid(qid, dict, sub.Key().Data_bry()); if (tid == Wdata_dict_utl.Tid_invalid) continue; - switch (tid) { - case Wdata_dict_datavalue.Tid_type: value_tid = Wdata_dict_val_tid.Xto_tid(sub.Val().Data_bry()); break; - case Wdata_dict_datavalue.Tid_value: value_itm = sub.Val(); break; - case Wdata_dict_datavalue.Tid_error: break; // ignore: "Can only construct GlobeCoordinateValue with a String globe parameter" - } - } - switch (value_tid) { - case Wdata_dict_val_tid.Tid_string: return new Wdata_claim_itm_str(pid, snak_tid, value_itm.Data_bry()); - case Wdata_dict_val_tid.Tid_entity: return Parse_datavalue_entity (qid, pid, snak_tid, Json_nde.cast(value_itm)); - case Wdata_dict_val_tid.Tid_time: return Parse_datavalue_time (qid, pid, snak_tid, Json_nde.cast(value_itm)); - case Wdata_dict_val_tid.Tid_quantity: return Parse_datavalue_quantity (qid, pid, snak_tid, Json_nde.cast(value_itm)); - case Wdata_dict_val_tid.Tid_globecoordinate: return Parse_datavalue_globecoordinate (qid, pid, snak_tid, Json_nde.cast(value_itm)); - case Wdata_dict_val_tid.Tid_monolingualtext: return Parse_datavalue_monolingualtext (qid, pid, snak_tid, Json_nde.cast(value_itm)); - } - throw Err_.new_wo_type("unknown val_tid", "val_tid", value_tid); - } - private Wdata_claim_itm_entity Parse_datavalue_entity(byte[] qid, int pid, byte snak_tid, Json_nde nde) { - Hash_adp_bry dict = Wdata_dict_value_entity.Dict; - int len = nde.Len(); - byte entity_tid = Byte_.Max_value_127; - byte[] entity_id_bry = null; - for (int i = 0; i < len; ++i) { - Json_kv sub = Json_kv.cast(nde.Get_at(i)); - byte tid = Wdata_dict_utl.Get_tid_or_invalid(qid, dict, sub.Key().Data_bry()); if (tid == Wdata_dict_utl.Tid_invalid) continue; - switch (tid) { - case Wdata_dict_value_entity.Tid_entity_type: entity_tid = Wdata_dict_value_entity_tid.Xto_tid(sub.Val().Data_bry()); break; - case Wdata_dict_value_entity.Tid_numeric_id: entity_id_bry = sub.Val().Data_bry(); break; - } - } - if (entity_id_bry == null) throw Err_.new_wo_type("pid is invalid entity", "pid", pid); - return new Wdata_claim_itm_entity(pid, snak_tid, entity_tid, entity_id_bry); - } - private Wdata_claim_itm_monolingualtext Parse_datavalue_monolingualtext(byte[] qid, int pid, byte snak_tid, Json_nde nde) { - Hash_adp_bry dict = Wdata_dict_value_monolingualtext.Dict; - int len = nde.Len(); - byte[] lang = null, text = null; - for (int i = 0; i < len; ++i) { - Json_kv sub = Json_kv.cast(nde.Get_at(i)); - byte tid = Wdata_dict_utl.Get_tid_or_invalid(qid, dict, sub.Key().Data_bry()); if (tid == Wdata_dict_utl.Tid_invalid) continue; - byte[] sub_val_bry = sub.Val().Data_bry(); - switch (tid) { - case Wdata_dict_value_monolingualtext.Tid_text: text = sub_val_bry; break; - case Wdata_dict_value_monolingualtext.Tid_language: lang = sub_val_bry; break; - } - } - if (lang == null || text == null) throw Err_.new_wo_type("pid is invalid monolingualtext", "pid", pid); - return new Wdata_claim_itm_monolingualtext(pid, snak_tid, lang, text); - } - private Wdata_claim_itm_globecoordinate Parse_datavalue_globecoordinate(byte[] qid, int pid, byte snak_tid, Json_nde nde) { - Hash_adp_bry dict = Wdata_dict_value_globecoordinate.Dict; - int len = nde.Len(); - byte[] lat = null, lng = null, alt = null, prc = null, glb = null; - for (int i = 0; i < len; ++i) { - Json_kv sub = Json_kv.cast(nde.Get_at(i)); - byte tid = Wdata_dict_utl.Get_tid_or_invalid(qid, dict, sub.Key().Data_bry()); if (tid == Wdata_dict_utl.Tid_invalid) continue; - byte[] sub_val_bry = sub.Val().Data_bry(); - switch (tid) { - case Wdata_dict_value_globecoordinate.Tid_latitude: lat = sub_val_bry; break; - case Wdata_dict_value_globecoordinate.Tid_longitude: lng = sub_val_bry; break; - case Wdata_dict_value_globecoordinate.Tid_altitude: alt = sub_val_bry; break; - case Wdata_dict_value_globecoordinate.Tid_precision: prc = sub_val_bry; break; - case Wdata_dict_value_globecoordinate.Tid_globe: glb = sub_val_bry; break; - } - } - if (lat == null || lng == null) throw Err_.new_wo_type("pid is invalid globecoordinate", "pid", pid); - return new Wdata_claim_itm_globecoordinate(pid, snak_tid, lat, lng, alt, prc, glb); - } - private Wdata_claim_itm_quantity Parse_datavalue_quantity(byte[] qid, int pid, byte snak_tid, Json_nde nde) { - Hash_adp_bry dict = Wdata_dict_value_quantity.Dict; - int len = nde.Len(); - byte[] amount = null, unit = null, ubound = null, lbound = null; - for (int i = 0; i < len; ++i) { - Json_kv sub = Json_kv.cast(nde.Get_at(i)); - byte tid = Wdata_dict_utl.Get_tid_or_invalid(qid, dict, sub.Key().Data_bry()); if (tid == Wdata_dict_utl.Tid_invalid) continue; - byte[] sub_val_bry = sub.Val().Data_bry(); - switch (tid) { - case Wdata_dict_value_quantity.Tid_amount: amount = sub_val_bry; break; - case Wdata_dict_value_quantity.Tid_unit: unit = sub_val_bry; break; - case Wdata_dict_value_quantity.Tid_upperbound: ubound = sub_val_bry; break; - case Wdata_dict_value_quantity.Tid_lowerbound: lbound = sub_val_bry; break; - } - } - if (amount == null) throw Err_.new_wo_type("pid is invalid quantity", "pid", pid); - return new Wdata_claim_itm_quantity(pid, snak_tid, amount, unit, ubound, lbound); - } - private Wdata_claim_itm_time Parse_datavalue_time(byte[] qid, int pid, byte snak_tid, Json_nde nde) { - Hash_adp_bry dict = Wdata_dict_value_time.Dict; - int len = nde.Len(); - byte[] time = null, timezone = null, before = null, after = null, precision = null, calendarmodel = null; - for (int i = 0; i < len; ++i) { - Json_kv sub = Json_kv.cast(nde.Get_at(i)); - byte tid = Wdata_dict_utl.Get_tid_or_invalid(qid, dict, sub.Key().Data_bry()); if (tid == Wdata_dict_utl.Tid_invalid) continue; - byte[] sub_val_bry = sub.Val().Data_bry(); - switch (tid) { - case Wdata_dict_value_time.Tid_time: time = sub_val_bry; break; - case Wdata_dict_value_time.Tid_timezone: timezone = sub_val_bry; break; - case Wdata_dict_value_time.Tid_before: before = sub_val_bry; break; - case Wdata_dict_value_time.Tid_after: after = sub_val_bry; break; - case Wdata_dict_value_time.Tid_precision: precision = sub_val_bry; break; - case Wdata_dict_value_time.Tid_calendarmodel: calendarmodel = sub_val_bry; break; - } - } - if (time == null) throw Err_.new_wo_type("pid is invalid time", "pid", pid); - return new Wdata_claim_itm_time(pid, snak_tid, time, timezone, before, after, precision, calendarmodel); - } - private static int Parse_pid(byte[] pid_bry) { - int rv = Bry_.To_int_or(pid_bry, 1, pid_bry.length, -1); if (rv == -1) throw Err_.new_wo_type("invalid pid", "pid", String_.new_u8(pid_bry)); - return rv; - } -}