diff --git a/1_ActivityWatchProducer/PY/my2sec/main/apps_selection.csv b/1_ActivityWatchProducer/PY/my2sec/main/apps_selection.csv deleted file mode 100644 index a18e3f1d..00000000 --- a/1_ActivityWatchProducer/PY/my2sec/main/apps_selection.csv +++ /dev/null @@ -1 +0,0 @@ -gAAAAABkkDB7GXoqE3gO17QubXa3CFy8WU2pdJdQS9mWHYw8ZWC1_6n24yxANW_9sJ_KE86gryIf2QQiVpStjUVIUOo6G24hPX6bp-GxnjyZ1y7C8_xP-VYg2t2wDVAHlyZIWTESkFapaHvFS3lNBMWwvOtC8vEsgcnfhq1_xStFrOdVX3FaQjcFSygMMa4NnReBkxDyfoJ5Uh63k9-DO3gNPZ94GV413V-EjxdFd_iv34KEig0WhMSN-VQwoQQZlybVfXWYsIUDQHHM3yKRMBqP9V7dhMkOBxUhartmaTxDd4GrbVqv3rnFqVhu4Yi_y1r9aDKl1uKxSPyKGBE2hnWO1MOdj3OwtY1X9UUP6qIQ4tjOPAialL_ZIolee2E7Q_N3uGyr_EK7ra_Dv0o1Pebi7xVI41z_pO73AjdNJfedwQPZTM6PjHCUz6R-nSxZyBmMeZJn5AuUKBA3djOxLxgcJqIQm1rVLElaxwnSxyEqOv7A17YSCCh6HDFeUujL_F4LPdr88tMuscEhHkqFy8FeGsF3RXOIMI3Hk5VvmhGJkYWRQTwjP558GNwvZs1AlePr0czVbkzBRCrO6Thwg6TJ53KiOQLoaJM4u9V4rD07G5OsoHqWNCUm6B-7KyOhgL3Spz82ApQVPv7uJQ_RTwXCo3JM5r_u3qqNzBUZytzdyNMa16YJEa7Q4P2t2HHxepc5vf0CBWhD4GNfbNId2IRZXBjUZPxjV5IOzZ826nWa7XoJq2dpPNanM1LOSdKae-9mhqf7MzpJrRqOLxRxwUk7eQWwe2LJ72cpaXuxtekufxcCS0fa3eXaYnuDYrKz9LmzP0t81wIoViPk7IQ4shM2sfNMwU883gYbn9OY5am8VmNRuQDam3tqGQvR8lwpNl18ggzgdjQcI98iWppgLtk7K4F0UF3vHG5B0J98kM4tvsPjBPnG6FZDMxwnKy93h_6NisvRSN_yHAaMcUYe10kdqy618OoX8Cp77zEdY0UIcpcgTdqWfGm521_PeRU9HE8uO8loP9GlY5PCLlDVkSs22iY74kgJTNXnF8xxEFGOUZqoiXg7kmMq_72aTJUw31wi7VB-9bCcyp0dn9QweeycxqPPVDkkrPifZwE8um7Upwrzm5WOEdGAXoK6AO4ycRPDFE3C_bBJ_GZahLGNtsvm-C0AQlWC_0m4LIUWm6qbebQZHpCYubD-VqU8gY0dZI4MWAqC5GZ01yLUGbplFBigTLtZtuCup8Qr7_d0THQ6oBB20dCAy4FAujiIbDXABk-gYHG4Ui7w-TS45XUkjZDyXx44LucwjlGd7cHgPEb5CiWOQmqCnsZVqzhSkaRqasUZ6D1AHFO01zrD3p7sXtDpy2cd11cJN0_e0ZZ1ChLqUbHqYXSwHzIew6zFy1DuTCv7ryr7gjfwJ4SuWKfNm64Pbuw3QOXoCDFb9SLxXdohjubeCr_NP2YHFo2JwOEdaEDF6UiqDuy0fGdW8o2Aiojsh51fjeMmjxtTIR4qKMNjG3DPabvvyfsTV6knxw64YcCRJtQ7etC1A9KknuIgavGxCk7-rbcxEuSUH6KU-EscI6G30YLrZV7AqF8C4JZ9EgZFpM3im7hHBeyqtG9UeXZGxONZHbu77SAA_lkOmP3pstyXx4IG0V2utp2YJaWMoqchHPP9ZN8SWhN3PN7MYsTu4DQpx7QwZ93Z1uoFK0TZN67TKGo_g363vngjWihR4SUaj7GnuA7SH36vsfCTGi_1yjhiKAkw30_MQUUrFZwF8n4POUh87hdlz_CYj3yHxXDlIgdiZKkRhylAlbqTLYAZXGgvmLEJ9MGQ97G8fXQiy1Utn4RNF_JGCR_I4ACrM1e-lUwymhwG_Gdef0mfP9hzhaGdKBfSZXXTgrzldAeCAnKRfEUtcVFwNZh1SUy257YJPKS32yLMjPEnh-WSp3fC31NzIaeDabVXvuFQc7TQe1MLD9FkmhNQ6ioIJwrCYc7byJJB-7tX3OmhSX0Zrw20yjhYnsS3qUH9wJOEymNP7ofG435LZXInYeHDVBIg_tXPDy_2L7rWpRUCQmsmqsO3ADYY6SD0nlcK24NalP-gO-W_0wDut-4Yu1mI_iPOA008DlsTuADAfZ-2qbCE6UfQiyvMP7vOqTyinQ3mLG0dRAAH301v9UNY_zGu5_J_deO78RjzkJhfX1Ab4dZUiVf-3cZCPw3FaD2_3waXXjM2TWtIp_BkXNGJF4LZoihJEVApSldmcf82fb2yEzJr8D6TW8j58P0pZVcfXCcomIRNMmT1Y28fgVkLix8Wn_JG786xYI1f21pfIoPIGhdt3jju-VfwOAlm6dciqh9g9IPt8xv51mSBh5gqMXiBC3eHuLWdUM4EXdzT9zIjmZZT8e3rvavY0kZ7dgNsu_xyqlvZ3IicBp1wRyJLxGeOq4J8ICqt4greJ_bXTTVYoJMbtohoBmm90ZGWl_CBcyQoWZRiuqwPI2Bp9aHTxG7EkRCveknSMhOzne6tqF6IsAGFm4WVPib4jMgDKpEzd4bPHpFRd5bwfK0CyxfOO2UXpHyoC9mcYazE1GO1vVFJ5qpyDZ6IZX8-ZJZRWUh_0ZNAqGnXK3f8qKv0r6AFoA8VRyyja6UJskLuTowVvwBNtqHnBcvq3NPSoEo-V76iz6k0-z5m9g_zZcylva8EfL9yNtdP0G1uCUFlq3sniDDr-uyt7wXA5dixkbjas6g8bq4NUFwyaK76aWQBKtafHYG-dTA9hX5Vv4QBV5mAJ4n2ZwAXSRHFOyJjOk8H7XZSHht3db5I-g8C8yHeRrTjYBc8ug4vADON6h1dP_wT-gJB-HJF_VfIF63mfVjQmYMZlIbrAtfWuek1uP2lSF-kCYU5dEqOKulJ70PL7PAGnE20B_ROUL42qU6Lu1kZMo1pNCJEOqt5dx9d9GYHMrIixPnS1yKU3i5-r22ymS2mh7JwSjNn5RcbbE3P3uNmt4gWjQMlB59F59derfTqGLF9_wtHqxGu5KY2a2DjmEsdlbQE-BmvFXkAfqXHUU-Ujoy6y5xmw0lNUSBWnWJZdDrxRf9RA-knRUXKbuzB9k1yNeSMN1kUDRXhCUl9rgPX6b3t4KV5j_8qxKAjiYuSLO7GunLEMWz3oMj0z8sNoEUC_7IFD8zrMy5m3sUIi_sA-L521UyDAjczz0BORRQld_X_ATU4ojm92N1Eadc2m1qZnNB9hXSKB6AqZ4r5AnFmrWtqlTDwIgeDwcm4QHzY7OS5U5s-YwbuxVQTym12UI5UJWk1FEM4i0sOjHg5K2n2VUw35UIgASqwIfdyOLP-x_T24pGEofU5vvLSxCq6Mg4p5YRTKaWOC8OiHKYR7Lr5FN9LFJEPSm-62eTFvbsTt2n-LAYiIHVzr5g7p0B81NXUboeD2AUYJbjw8ktJyrkjGEeM28zChuJ4Q2Q2YE5P7zxB2-if72B8F12JyhZK1EAZO5jQrNQeSWu9oweNFLBpCDipR3dI2ksazwgvCw476Q8WUjOKngdfhuO4sIt6TYF_PZ89HPayFlDdWIc1wsFnl2fzYRQIsiGsT66N8yGRjsO1RlNypq7YHVfMQk55-mA8eDVaxpM4vmTQm20csP3mBevMdXHcgsmm16ybexdMgTSmycMafdoHKmFp9bk0eVJqdyBX2HYN5Pz4cJ7A53hcOydPboi5FpBmHwYvjhdAGjZJ-rD-wbhtirLPhPCleBDgKwqjkQE7OFJaAdc15kGOUY_vRnlRKsUnnOkdd7UBvhYHu3uD2GSHXrA-pw5d_IBdzjVO8F-cuaFSYlI_b-9EzOdMo5QyaAF4xVcynWxB6fleRjN1UqNDGN_vHaVARvZDGB4j6Ad5o87GijIHFa4O0lnXQKpHkEvYPl0eAexUuKAxQCANiMHfH0XFBmmDM8R7zuloSvGOM3ypVI15zD1jrPEc05qgZ0h8xRCUoSTRPHt5Z71S5z8RnevDZT7P2EHMcYasen2f81lS0onyOlrZGcisueGxtK8P5YgIwTo1nTbjhf4B_1wdJOn45lLaol1Vlx2oy-J3Z6NUkIsarcMKhdQKr5DDlx8IiIBNQr0gwlC0qmKM8JPhqfELgbCFYJoPi1fV3wkLD5oB3N-xaXuL9_roSi1Meo-cZBhbTSKrCJ8dgURQ9G40H909Uypcn6Xlx4TQhICPypXYajAABuh5uZSczcqskswIfk9C6BQ7ZzI3SXn_dEFJ5vMCT-ZOFgQZv5FlP7BcefM8UWzNT5ApPSs2Un4q3cWwGkcz8N7w1c5Ktr7OKMugW9aLetjdz22b3itlR_3cmSw2S6NCkXsKLGpJ4wY1KYsXhuJ3G0zNUrLuAMPvHikF41VBxVMb5Hk-IKZFpucVlFGn0b4U6q0ItUSVrB-xs9UidIKCHXhGvFN7Fouf9Yg93CjEbzkGumtdD4R-X9nraTRkDLgLEOrmug2BUCReHO7BVuLQiBj7J-AEkqUks48mUAO5MEekttXCxaJJAKTUf9vjvSanxEvH7EVeYFJAHj03jxU9MCF8WWr84ssdNIqnloTHoCOTLyLmFAqXFc-K8NxIPKKhdyOQzR0fNmAYBtKhEMuZPPFB7xteUZy5UVijJbYGeiSaVYi9qGSyw6GuO_w4ZONhnZYh_k8GNoDtAxMLxB783mV0pqdN-O8UdS64bCVitmlrpRDoVLYGQlADO_taP59sz5j4zD179ZA1QxnJLf-97k9sU3cMx6LYZQPlOE-XjwYbi_08_7Y3SuB_qPkNuuWvfitIYZve6MQM2toKohqmwXjQKUZYJKWq2eu0U8f8CPQx-5b8arnjPG6TanuxPDJPdgkDs4lfscRw5F_V52eqFGDpYBR0zO4nGuNenxC3lW58KacVPHUbYice6dqh6sMgXAWtyWUXTOfZ8Jvxa72hDYni8PVj-mPHTqZoXWMGo_pHv9HZL8uJrkALq5bocePOSXqBfVDqdsA6vX34lxSRuRJeBXB4lFpvrxeMlEAlpXUYtuRp4quqhWD0ACeBO_bABVvOiew3cNMjW5pqs6SLszCwYuLu3LltTgmh4xhi-BrV7krbNaDUDlQZGudJVpWvCP_E91urWNwCt6uMOdQnWvkgr8EbpXJD2oyWGsrnOGRXc_WYeBbnrmehdY7OyK7d9YXUYJOvg9PMAv4Qq0e93zLVKq8lhxnHbnwlEPogaVjQ8hCVykSjgA-1X_5zrS3ULtuPIypwn01TG2AKU6vvKurzpuymxnGr2PkD8fsB6K0GbkaJ5X9-bLu1nXuN6CVWUd9RkzYzb9DcP1yXBTnlpfccWyc0tOZ5Cq0akUYbrj9M9VsEIaIi91AUJuCjm3JfmkENPVSeIPRtMuBy24QhF7t956_gBZIAjN7os-MrvDkbqkQQeoKvxwGV2hF3S6vzWy4KXxpvJPCv-yaKn94NNsLGKNul8SkgvTllSOu2s6XLTPvCoB1ehCQwC65z3TWlSM7IECCioTPmN6AM-Cs3Jao-7lBL7IQDldw7V2eQ30fFDOwZI2GllR3oUVGhgM2Z1XBVySTs9eAMe9GoO9oYeLpfB4h29oDHsw6KN_RHOYT1ogaFPswAep1qUdKEdQZn4qv2PZDFXqLsrQ7ZUE3aGbHUTkuN5DBLOF1aWbLmPNcN6nt7qI2TKpukeiAT2iHzF-HLeB9YiP_3r7Lm6zRT0qYtNLzvmqs2l4Am2If7bpzB6FG2cOTSU3ESMMp_1ouw0Tjun8VlL-0kl8swtCVauYje3FXnt5STgZWuAAs4mM6-9DFKl-ezSs-e7w7G6QGcu7h9wP-yWo3rbzEbCxAIT7qwQYMU4S3TnP1mN_jhymaF2mOCsPvNBeWl22d5Tl2zJ0zq_XEQREoablyRXp9mM3PhAPkn-yMnxmNd0MetYZuvsYbR-BImLrJ5bVQF8etJ903r4ifI4Fhp8C1Wnjfg_oxdpx_-8BtSctbC50iRbm0tqsSmSVWLXPYxzGjkVh9R55wk5HGIVZji05-xc6Gbh7yVML04ycysy_PFOzNlwUwx2v89rx484crDO-actIh5bI9MdKNQl1vTcCR62lqnvtMdtUgVjX0KE1vXLQugtaJPqWOyconn0TLE8k4qKAyfnW9sEWJcSnbTWNbUvOSLacmeVqGCAPclGYXbIIwrClW_QGGgsZITZvoBbE7RfIFK_jw0mhzyvsVq1J_QyuiKR4Mua3Ey_z5p4Azgcxwr_wk2JBqNTBMi5yqOneVqHijFeXj_7Y0Ne4o_W8oIKy-g6_aGbHf_Z4WuOOCeaNIxzNXRhd2dtyEab3pj8PxLJDEamWGhYTl7O1GfIvZVvvHfuZmck0FbZamYYnr0GICrgfe7tR6TJ7cL5aRCdgOtHFB5BPL2TrNc2t4aR8OQN5LUw1VXbX1CysUs1zHhkvxtr1rKB4GNEW4WS0WthPiw8RuH87HnUMZDODY9QGbg8lxJ4uFMOrCrv1_gPz42juqj6mhard-lbud2crZIbWUGocd5srGMYMp-YelMAUTZBUS00yiLEeYj9h9N-aQaVEFs8su_fJamXAF2_uKDkeJmIfjQBaUF2IxATTUdDKcU5naYngGBS171Vx-HJVyXSQrIB__wbIiohlfLLSVzu-jAvYf0dyowDSJskiAC33AnIFnkxprMSHItl53I2LLq1TFZql2a4nsnAjC3YCetXlpmw-ZrGgDgA8-JkUbSNMVUPx9zUm87zZ4_dTfH-m9K-EQNo1lQ8Q-EdYjsw58waiPw3kdHwoGpfGS63rBgRPgVltbLmIb0k4G2bEDF0Tm6oa2bhaX1kT0L7haJLXY0WvTGmfihyDtnLID858NR0T3kxH4pDsE8W6ASSWZII5Z5RDPDCtrqDkWFf3_tjZBvQa8MPQhbTvbGwYUyPHgFc0mDmgolR1AL5bQVarZDqS4aeji6bXMKL81Wga_mqYhYYEKk69Nd-9g8Kt7NCroIFtCUzAWwi1Ah6yO4p0c0jLrm5tiTdGtfrkwtFBkczUg1hTN25kk-exD1tmMOdv1ty_Wuduboea9sm7s80AcciryEZlvr4deFOuug8pdy5rq95pLMczhomhje3KM1fFLppf5kEmsBGzoDDX0U-aYueVYZxtO-LcSHGfUe7g1jioDv-f5aRGlqIDVoaLrdfsEyJKBdlxvjzC6MB_kR9W_BY0-RbYrTz4d9JU29uQ1WEEFToyAclciyOfbrnHDrjN67HNkTSCoHZUOhwrAJDCgjpUXRnOZQMwqGAPN4d8Pa4cRyvY5Bljg_ieL40QawYFo3NRinV1d22prx_SfzXc8zMvaZB8PFtcCQ0q1iWmiNb5naYbLOSEoJX9MW9TQIz45-MdKNy35HSWi8CILBizzU_3gVfm8coAhpa84G9X6-tm8twX8dfQm1sNL9OKeQ0fg1CdGv8tc_isOJgAi3J1ce2i_OQDXoYuZvu1ldoFrzAykjF7mNbl3hSETs4vbUhcSpl_NgLVxT-LOCfI_lsTqzijGX_0g-ybpT2Zb4B2N3jcCHb0PbtDckmC4NhhOH0O_21F_4cbe8jDQ2OlJxC63wCz6hG_hw5KBPYZ_0eKn6w4QUV094bvK26kAAOo4N3LXXNL-SbVwPhcflemLUja23NOGezCTcwINJGzxRs5zkRusc2wPKbb39w2u3Iz44E218cAvobDSUoJesIuH8_dlwH2_sLbe5GAJzxHQZdT8OQ156NGVtiikgiZzYDcPGU-3jbrkLgv7tBBOps2a1eQ_WgRdyYAeFjmxjt0irCOo3HGNhzoIIhJTQ39Mo2cURNKXpS-XfdCyVRo5JEA1Lqsx0R8lS06oETHuQMKvMQUE58OlSbs2oq0OyTRbvbCC86o0K8qJqZY3AwphaQfTYti1TwhJz0KxYYA68aOe3Ho2twtBf8dVDq0vzxlXnV2hDbavmkC60jZpa1qYdCjWm4qbpRU3c5BosAAKby7xUBmwXQizADiwpyCMqiCo98ReFFGumX0YKpDITQl15QYbwm_s7YzeaV-AnTONOvssToYRYcLRXYzgFhn4yM_G9TOiXVd00mEKY9FUMl2M2aiCn7X18eZ9gl8pfu_xW_EFpsTPK878A2t7MoQ7UhUPKGJcHKR3txZY2PI4Ye4ZdCLBM73mwbsuyOkgquuxFd93Eb6sIIq5q7RFmapb4gVcIU2kBWcvJHaNae1cnj2Q7RhpKYszTr-kelIzS4ZkGhaV0CkV7FRzhySXfb7nVWm89sP2X7fC2NEnpXLcIBH_13H_EBfbbYUAdSeVlxlfZe1GQRjQ_GYFADs6Za3nXAgUPaSKaVHkywLa45RDnX8b9eIpycNY_A1awg1SQliucI0IgaN-H0SKqtmIkej8GPfI5j5Itx0EWvQbMQ6F6WtLLIPDnnDizOJDL39AImVxjM7Z8SMVvz71Qh2x9cIZ9fMpBST8oodmfPIJQujZa8-CMxbhnWyEeYDAM23VP1WQoLWI57A0iY4-dS7uTxbb_Iq8YqWDWURLzKq6YRmjMdFloejQJ04oHecH9I3KmQM-R7INEKtFEcS4tBdYO7CnhfHAQ1K3_85lp9ArOLFNSWCaIyGnA6wGdFwBCtbDYMs6fwLCg9Od5pFaWvAMJJ4nCqPpwRGbHFjtNAd9NbeXfuOeZdgwRclI86EpMVPHRPyB7PmL5nOvOkGCNYIWyNSYtWFfndcoHhHsWk1HcR3WGNQ211Uf2WjEoI0UgferqQ3IB8aaPSg0Xepr8QOT5RdV4SAa1PaQDMdTQnstsy5JROUa59uW1rsxHLloa5vt-hFWZ3RpBVf2IvHG4ZumV-hru0DSMpo_bfCm9v3sXKb4YgqwUH7pw4i-7ah3AVpDjfyuUKm79Izf7vHYWVTU_3kXV4Xyp5enHg8UszNs8J9YTjyG0sS48XE6nZt_xye9-H-S2O_9hXIQLCD4BvgjM94Nu5u9jM7DAJmRUuEty13iharfIblglcR9SJZ2vgS8TFZT66VpXQTbxaR8Z8CT224PYGUsbHHeTx0SiZ7L_qzcdP1KLh6AkiQ99CHdBmMc1fa2uJQK83uEaH12zxk_mZgmugLavFPKJbcmkm0ISD6hN26qZp8bxte_n8EjDSacbQs9BkDTbh-Wh8JaHcOBdEVinDQjYPx8wBfvuzC4gLYwsyaCc9MzQRWrWJ9gu_qNnJ--W4FDawcMjvtFw1za-Vdc9UFQq8nqmmMykfsVDt5vnGcSoi1kNJjQyMOLvKJ7iWtIYyTzwOAuf1DuPI5xWhc5N52aLcYK6otFck27M86bNKZcbOPdi7w8zbf_9ZqUCDXnJCGPbzrksnGZgX6hPJ8NptvEjwp_eSTJSdVakSkWsFWd8ljZsJG5921gz95C3I9LAuHtopwpCVPPio1JvQ_d2yFRT-1dwmSNwQsGtr0LO2T0p6uggO22TUolFwz5tZ7WRnnVXwZTcc2ADimGCZKVQYKQpGkAh-eRnLrBxu4sEIP7mmrgJpTY1fKHNdVMLWiIUhK7r9foqUeghkxtE1eChPJINH7NdtG8ZMIx_WBGqjpbsFEHeesDluG4HT9YCAxMK4nq6gEQ6eFJZt3ExKa21fVzov6MUlTRBLExV-tq2G51IDLIUgPD_aiR-si63IKO1y1U0kTycbP8pcqY0yfwrPhncLA7_qRZRhS-WEY6z2R4bm83h7NwNBN-snuDqGFO93FLzBj7IeimHPk9TkOY6IuK9jsUrDSkV5mO8ZkYmKYOZ89AAXiAesHCUJ8fK_VHzSayvB08798kn319mthhXOjbnl0SyjEJURxp1WKIeYxHLnrbkjGm_MRkuVPbQGTFzMJxQLpa1IWHyKr6X6ppLhkcu2-YmBQharZ0wXqaK-hpMgSma0ESIpsO01Acvr3cwaN7VxbvCdgCng6PJb0Az7PW0zBF9MGCLrL_9BRjrx1Y1aZ3b_vguXJ-UxzmSmkQAa-H4WjqrbwS92nrOh31KdomQZ79nlXUEU8SVvk-pKyA2LGvzEWMY_tSLv5x70ODuYzouMZpFBhUyoYheAd0tt8aFmO1VtJOiwk8Mo3_WCG0_122WtXlBjkOJiL9IBvK2yaFit0fCa2T70sQedlYMcTmyNVNhsjMRE1G0JBno3AafYBreTgjQx_th27Y4rKL-l1yxJguChAaIGqA68QE2kSZbAekzXMGfEztX56mZr30TGLJ9ZWxGCLaBhnKppc5fZiJH0JrCd0QVS1hdN0aKzU6rceuKZqk1Np_GJxJ-Hjak5xq4Y_A5UGqpQh4wOUe-XSo6nh2X-sARcX38_FYYphUfNsTSY_4mOTh5q-TUoSSGlANHs7e6wRrARh2tyoo20dXo5fewGfnY-fCCXN5soR_geTk8pTxstCnh3yWdwFViIY_d2mxsMcjRFv7F6Dn-el-TDhgItHRgx1euezXRgQbJzU0lkmyuG00l_c-vmhsS7B-zf1Fz1W-w4HOHvHdS-HY8UFJCHpTmX-15KxwJAWPd_i5tf91JzupnzpXwyk8q0xGBH0um3ZLes2csrkuOeauktAicirKCO_zGZ6wH7RkYZW19W041KL5LQCtOLKJUtjeuobDbCm0ptmNqU0Mi0PWsZXThqxuXkW247pEJOdt1FHS0MQZCELVyNlXnVycagdoe9lmjuxuK4v6S0v-4CXiRda-LUam-8k2vr-n67gpCKQoV1U4v1M-qs1QblSH7GiAj6CqFQytq2LHg4sqWsffh0Unv0j5-zbax136iZvQb0kL2vT5j1VYMAR1KVG-EEY1PgGbHj2RMfqv-GfG4BN7I5_iaF6gIw5EZ8v3Y2RztcEDwldjlYDIJ0ndWtWa7LbSUXsbOu_5jbqIgwAe8JAdhVpJyavNg2PYvY8FnrNVWfXT5PujJQn1XGh9c8J6RJlsA8kiVrvZWSes8qqEOSoeelBfqHpkZLzeeqGtoTxH6xcksmTRM6KveINNHn0II7gfZXpCmOajvP-uagB83Wg9bTY2mzi9W1Kg5gEPmBpkX-wU5O3xJlzVfoIuQMl6BBE5yQjIdxW0gl1D4aBaqrKxfYQVo00jpVenvOsJBRtSloBd5fGiMHVyDF1cMVNd8NeP__z0Zqoh9ntfJ0zz364OlB7x1QYR5-68s5Y9laKQQ5M6TrUPyE6_wXMFFwZ6rFGsd_krCFGnQYLh4S34TVdDnlzx0FBv2c_Lev5HaKkTEQSkhK0UqjDvh_sANiklufxDDwUVzbx_LD1D5BTeUYgEeZBoFaWCOLcwX-4NbXEw6u9wA43PbfbZcGFRtS4ppNUHrsF7qw-xASKo7nYroNNQAMFLeBgtup7WWIYD2sX_vzwpySzyl6BopNkZ1rOA520kHv8CqAzyicaq3-UrfJ8AhFG4bfrg1raIZ68a9Ti75ZQLfARNGMVzcdPUt7uACcFiOL3rKX57bwGBo__NHtSxyNePnC8bxGGu8EE4tH9nT880UAco0_RmVkKbThFk1-E4nR9_zT7VocxcwmbLm8YFs8QRU8Zo0pfUupkpWhrtUjIsJR7VuEQWp6Cmi1GvLCy4hGkQQCrkXW1ZeBSLkrwF-FGa8CGQv0iswADE428gIyRcDzm3kpP_o47DwR_8eV_fUXKcrrO1Fg8uH9LC3O4u8yO-bArHj_pbA1cH7vkekX3yYzCtibp7TbXTK6dz2EKyPakgDbT68jTPcjqsJXIt4UwJ5rBofQFf8wLYGATx0DD8Dt9TP6Fa5fm_Ba-VqaQwT8K7tYpeBrUdxm6ASpHi84wpVECV325-2Zw7BYzktTSAaJ67lTTkNRbqNQ3xonSQkgfPgck5t6CdOUrq84HoOgQolX5gwiTHM3jx3acW20_4iwAMkNuYU50MS8ZYu9vkTqul7pruGva_UYxOY1iJldPy51DP0d22VVnQbXiIUJ2IjrvtJP3rqG9pSdJfup1cAyb-d-_LrPOWdpMZiFeYscGFooEvi6SuaNUfv_0ec7sQAiy8TUyIJcajVDDmkwgJr8-Mq3k_82kP9iyfE0eRzDi2ML321-kLqJ9nQ_4fqPMZdhJQpnZHzxPbTymPDUYY9haR6DbmZzIXrUoAWLzmT0G7HRnBouW6bMHhj9Mgd6AtAsyy4hZdN3kHR046ZooUUHQ_NMIaTz5oGESKVTE-uKvySAg1Rvn2IW5gFm7sGlz1DhzbsKfp9wPJMiTTT1N3bAgKLtfwzrqIh4-YsvRLmly3YGo2xRN9BJX9jyutxDSFPGE2S7wOIlnZVrr0ZJU-lBBQS9qgSxRBWEewfDJBPNK-IfQAadb2Y4Q7WwQRS4dgfzU1JhM-xFQ0mgGKglbe7fwQS14Xt2zzN-NPqhqNNykl8vCLabMvY9YGJZfNCJS3Fgxf0O-EhFxaK3X4rsluprMLuQJORwOLXySUPO8EDhAiFsu0g4joIkpkheGfHYKeDhl2J4uERjKNYHQVxAmoEUQ1qBZDRoTeoDOOt99g7nuzKCcfM3X9PSnJnece31_TqCl76NOgDMp1QY1HwNsvxCe3jqGSQS2pJxNpsY8_znYKEwbOKMznoq5uYOWTnjefDgnK8ikPhQ8S0PfpHwLnOI8urz6oVl1xEi2CrJ31c6XB4ga8OO1QUd1G96AmNGCA7svFaq0QoMa2AsvqueR9xt_oXfH-rXGO5Y2I0GPPxCzaz5acaGeGyucPpqgY9_3SwhjQJYplQHzgQ67yWM3nXMqkxlfEqeI9aXPhCcZK0gwLaxDFzJH_qrUD9rea5_v46wvI-7Fer3BhJfz1qVzz8pMgKulF0bspnb9RzwBXcvhZOHC-eNfRBZlJfFDA0AfS6HiZ2AiFdJLvRxNtdEIb5nZ6PHNTQp1chscOfVZTVIZ6yy0VfWq_AxQ9whdEr1jZQ2LQtNqvbwRbM4jQQ-xMX_2ZOJ69ZIzzmjmK04r7zPFnJIeheYbpyn7i7PMgZ5OCuDB1_ujMlMbtVder2-p-7NHEUWivTXWodwLv6CTdgeTIeI05lcTRyHU50uXjxtmgWYbpkbcOHDv20pG1CysbncoIcbOo4o_LglA_GnfFjASvb7kjqSVHQ9va6w2G2eA0u5RE8bsMP6-aGlbHlVTPM8zgg5LIJRp5mCzZ1bui2AuffWb3uexRmf7VSLgAdG2yhnhjj9E0h-aa1lwKjpBeTb-sfato6bW5QpIesSeS1MN4sy1WvWKS91RSnzbIz0QFdwGdJqcS1Gm-CEmbxLxe_BCwU0y1gW1EgoCXKG9jrZz5n2602udAZROy8fub22-7Fs3X5x_TgC0NzrZuJ1vxfzdqhnOsaszYb-7275xaH7jqeLacq0KzdXffNFTTgQMYlOuvt6NkohkOBgXdv_ldXI_jCNbzp8WOlSxItDSuQoRmMcmULH6qDkfxn6w6eOnD0Eubotkv_0ZKcnh-f1zvF7uRZcqgKlOKXF2teofdzrXSurBq3I-yznTIa8-c7kLWeN-gsm8S93jRiJQO_YY47a0PzdlpqZtHryREgIYY645-Bu-L2rP6nz2x7XA0FXd5KhR1GmbrWKRSJPqPJnR_yQsJ-BgppGDePnOCSXoAULYoGml1bsdlueVTHHzwV2lrWTM32ODzlDybKOLfC8gC9Y3WgDR4dFwZ7mtu3H3v8PgdilP53LvvDSym5O9Ilw43Q6EovwovfHf93anVm9HEC-rgwc6SoyFhXk7VWSTzV-aRLUvim8N1JdjxV_lSfq-M-hsj1eCB1512LuF-WpU1YJl3rAW0Dk0OUO0amUfJCi3bA-I5Ck6lB8vKJ51pXH6ltbMVrjuXh-K5nGiJAqpdJBQ0Mcad7cqagod0Mb4JqbFFb4wlJoC0fXEXcfgftIAkq9NszKFzHs1yANYQPniOAMJ1Tmxb6q496Hb6X6JHHElIllh5zGWxFqK66x67Zy1R20IC5YUb1LUOEBCnPn69YGbGdUw4SBOw2oT_8JXQXqRijXi3l1SfqAsqNSstjBrewL6dI1smRfbsDd1jY67Niu3JRGDlouKRZ8AUNCUAhdj_6mBR5hY_fX-R37-nhSzTOuBvK_zrSca4FGiGzjZkRuBCcZYmvr-Cq8-LCKt60gIIi2fM5ep2b8Vdv3FrqDHn4OYv-ZvArxps4Wdh0L399iEr_DzBs3EmNKzrcD56VWudJKiHrkq5HesisjWgWmU9qPuM_TIVFRdrdjcU_tK26OxL4j6HQoS0kwSR2P5bl7ybiwtTlv_hc3QsImiZfIhso1Pz-Jk-a_T8nGDsujluSfD0iiRLmPiRxpihJSQI0jluQVRib_mEM29PAH2ym3jV5yGqZtmN3UZzvLjcHU85itBMWLKcDSXTXtEBlJwgdSRINTvkMnG5_jPlcQ5Jrb510PF5B7wfUZUvEjhCycIIqJiXjdJPJJWREn0vH94pCS5DtJ1zllejXgDY4sn_j-BqCn_n1abhvpMv4WZtQSPydoctc8A6tZjrayQhB-3mOAWZ0vfOE6rApYq2_POcolUB8l9n3SyUAEMZ3WiKKVAlFhAQyaasVrKdBjngSQ3wlK6TNeLffVwpHjY54YPbIu6Xpu06UdYHXC-n54gZT2wT9N7oCxySJ_DZFSuaxdg1yQGCsLMlHaDFG2dZ7p8Gh185gD7bX9TPztvR7Ftw8WTlXpPsa5jK25cffhGsOWC2a2Sm1xpBevjQEKQaEqWjs9JaG5B2G-jK3jaA966wfpmEnXiVGCqJ9Cj2WoD2oNnP-tP-MaGu5dvZ-7m0i5M068MnrasNGJEvYEmODd-6ZUlAKCslBIrc_qLjZU_D49i3YvtGJ-UbqSmwwDzWM8KallEfiBKRLRLz7UC-WH7FQSSP9crW6gkEXRgBMOHzJIsMmzOLC2FtCsmNnwZhD1QvU03LXes9TA5pWtfOJxx6Ukn385vdYsbRgrKqMdjMCoaGqHJZPboOYbmRlHwKN_W2a6ZxIKsvrfL6RT1r9IWmu2CEI0B1Q4XVJSKty76OSlUYLcm8rXmW3iu8f3nynw2DvXfa06QOYn1o0DOIpTfCrA2PgI1gJ5Wwa957ixlHwf6MTty8yuCSPthVIhlc_3b6hZj7LXrt9DlBP54NejIkMuEsEso_eIxfxgCotZHV_u4aQz7zkBmAEsGm2vAZFNgIZvLkzHHG0a2PFLijWvgOKMMmx8WgVZUi9aCwNdTRhcV1mLlRv7lTu2k2_DajEiff5OU6rioA8hjT7QmMlSnuZy5_R-IHHAi-ksMgu5V8uD8SSS_WD_BXbjqZjXWijeg25RmJd2dzlxAZ4OyDsQhLDo8rK2sMw52yVHP6IltYJFT-0GPUkk97zg-Uj_19YR0Rt_EXT0N-nN8mPsFYpRrYC5lS_8FvCO_KFnDxOzKjbAXhj6CAGJOx9Z2DA9OrWj16qZjyOQDoJaRfXUMcN9E3AIP8YkBRIkoKp4eZs855KBlRHlcDaUFymqoj5bG8-6t9sHF79LD6A793-MIHHtau2xyqisLV9Hwryl_StwbPiWqUN-9HcZOXY2HUB81ZKObATQr6G4GDB56lMECfMy85RKnE8u_s6G4vjRccCIeOQTKowmNM-xtRZ1-yeBHEuRFCwOce4QZrcEAa-40HRBt9hgaE-zr50Q8vh3XSai0mOO5Kex3yeyDuLsM4yBIjHB0dYHsafboVOUmtGFsWaFame4hHT4cFyifQOvI_cK6gwPu5N_DACzrgt6fmhWLTVyXyWd36u3GyeVKB2ByPjIMW1wXMb5O9TvR5ErS35qQ4ll0-XSg9uBzuiHJVFnvwX6Gr2HhqvZazDUzgd-DVEouap52uZHQbR56_DVanY23I9W2ss8c_xTXA15qq2yI0yqiuUjnTfGhXFUCqM6pX2Nx3Nop5OfcGO32PSqRok-kq3CfJ6994HcVL3TPoTdLFYcMVrKWE5SGKCFhgHcVngNMUH33nEcQ5gJ8G8TlshSKoagkzQKm_M-o1DHJZ_B7ajvrRoU0EXUIjP3MnSojfAQlqiFr7q__ZZEaFeHED5yCn0JxAmFgs7TCOdRl-tM7pBzV6FQKb9sjioQq8dieHZ5PNyxz4Ld74eicECpVogm_sScEns4-mSaAFxS_O_6HzrzevK2n-jlVSVEjBWS1dzRhc7bhv7olvtgz4IWGGtCNNSwGxVp2p-hTGcfcn8vPv1SiVgBqWnMdv7Ji0C8yLOOrOgYM-g4mWz9pXew0efrCsfJMIQtH3UdNFRPW5ev_0HEmNAIx-m39NEyzlecCMKH7lofCKsqKVrZbBvWxQ_MWj2nHTtMlYwCXKBaTgT8yXBmdfS4qYyB8XFRlz8m6sDt5PD_852Sbo2jA-i1d8ZAdqNXHG7FWQpwaAYBBvLxvoP_gZmkft16Wy7QziSrkcReKaWVbCtwZ17qbAQYrGTPgolal1ruZMJiC2qISunOSlhVIA-Cygxf_C3ltqgq_OQF6QLcqBOk2Mw46sY3mCOy6U3Wc5I19UhtO6TGe2blpvJFqKA8QIttudUp-c0b8-J_dqXky-ESCRE2ii0EAgwH2bzrxzFybFMC9cLKM01Z_G6WVakAG9CczpBXtjfENGnrNFWTOxbP2iRvX5-DaUL7vmf6tFOy12S8Phvtbssh6FVAihOMvc-KuoCvwKeM6labpUJEIzEOW-WllX1BFTToZkZqJXSskno7uI8soTLJHmhWRRomG1mzwm3jjVLHmIkIr-M4UO1zQujPMacTfjbh1HwOtAP_BhzRs6r0a5pj9hRVHaI2scjBEFeAqUqpmp-junh2yV0OdW438jvAUbaGmTz9qVN_JIPsGfIGsTI1rotFqs2g2ISzlWiqVannoxzYHoGjCH6QQwkdxDplgtpWNG61DmhpoikUuLunF-Tw2C8kJkaimLhXJQy6cxyqpMe6N-bpz6JusG0qIueXQCtcB7oJPxQz3Jm9ffCz-Riywpifp4Jxy1MY8wrvHGCGlEOhmaEbbDiwkySqbf5-q9xSomdtTqrSWyJYhhdDd7iY-rLY4gC89vPMOeeCBAZNFmNTnH2aDf-AaDOSwQmGRgxy9kuKWPiHVcgICJ7r65F-uWHCzuin7i3Fr0XHtwyUZUohvxas7DxPl7skLtkCU5-f9WrM846oQdNvOU-gxYWeL8T_Znzxd0bcKBwuSL3eorwZfxagT1DLzxVRQLFIt5w8pWu4vo3A8zJvWPsuwSmgWv89dgorEmSYqdh_lrkga1CH1_2vBRqQQZExgbmUbL6Hl3UmFlnmV3oxv1fgqlm4E-XfyRy16wgAdjIp1-eLKKftYsn47-nYcdWMNMo5_lUQPhj_t3S-3MRcidJURleZfAMm3YoGclK2514ey49kTNgATCXxdsD1hYQ1j3kbkivUeVQjsoijjxiH-fvh9jdsiaFwTPRWD8-aiZlZwAAWHROCGgS91ku02yOzijxb8zRsUwnTAZTz8GkBjlN0jsjLSNgUIS08iErAawTHS3IS0039zFRgSm0xfIFyvYbVW9OruUVq-q-CM6GJ6Z2fM2n3ytGaLrS_FsYdgKanlR2kXAh6k5UdRek-Tf5rUz0GwahgVdztPFBTYk7HcbtwTSA-eQaC3xVRqOnFc9ZAX3FB5KxNxrEuwHFuWzC0iYgPYl4lf1WQ3-GlgcJ1lWN-saLS8jGqPM2-B1aSH-tkOLO85OTbfXqrbyh4TswFlBVCgNE5lkFqmJsk9DUW0eMXgY4GZHkc08C8n6JIaD01zKLa3h4gzDI5DDQeJTz4_VH49G00AEP16Onwd23sjsHF9_lAxdPPqKML98VtRQM0KJor1scDPKdK70PBJswiTZvz-YbvhzoSTY8i6v5dhg1BNCBjZRbebniq8-MHtu_2sRw19dPysPS_yqmXo0mZLvBBETxHioNlB7BqN3tM8V3ejhmBvoBRKd0Bh5JqjjdGJZAyC8j9Oy715oMn-e6YADe8h5CBrEbvB742Tsg4rp0jePuZdn99qyhwlkI-aeyeeKrg0TKTBN11Y6af1CyyXFK6zs4rkNWbmjROtEJFD56XZRh8XfvE917P-kyWQDitxReUK-Dwo2OaSoAnyJGRzUQvV1UeJa-7sH-KUqcnNzX0U20zFcoEyPnwaLB8ZeoP1LrD8yA6PLy_61Qv5o7OuVKDcOx63AIofKCcxqX1SGU_sY96ZuvqRIL25fcYnYegkbljk8VenxdV7cpwuGw004fxjiWN5CoAuTudX6rHDYdR8SueMHdLClCsRQ0wMgEE-dyijXam26Q3_pmvP9P4PqPfFn09DH6CifQIlA8vrV4hdjmpPituovq4XJoPXs-WGcJ8IxsGhXMIRGZz0fi3_eWNmiHou8HgpQ-IDi0HFXn4Jhsha6SOL5fRWa8se_07U7Tm_ajViAkdg6u9XrNxCAIJoyP0pJYNc28Pbo7hQwENYxY1jR-uItqhRrqerHVwn6KHMB489tge8YREMJeFJYUbqPV67R2HJcAI3Yha9309_YvrGaWHRv0I52qAxcv2pgCWvcUET-Rsx2vVtv2A7PCnZ77J39thRqPF0t6Uc13EYzv7zrRKqoIMCJ2Ax05WNCNQwpqKCvxZnfD3k41i0RnpmUPJwwEi0fxS9_i59LNSoHjCLNEdn9b0gZKYGkseaHtRs6igXVyJlHaL5ff4YogDSMJPhc8GBgpAH0IqYe5YE2trLGSIU_Cwo--3Sh_zc_hDLxlIswDn8tHTdNTMBDUDGfdEyjE_rMP4aDQv8c9BEZqmBfvpdu3u9oaLuIOXxQEuycPjHA5sp9FjGq9hsY6xqbVpiZMBjoJdNYF-487JI6hvoMZ3E4EXECoGssB0A7X-xPuBLKiJgdQMrYEKVgRMvAykJAdUayXy7-NeevfdcYy01LwYv6oMl9YPsFJGcSOuux59FoMb1nu6LYs14OLcfqmpXTqMQrZjad4IE3_dpeAc1EP8O_Om2fJChjd5EHa76JdoxKq91_5eT8Z3Acg-enyEkR443vh-a8fI718_oxjFzQcqdpKZ67hnpJ48rtkv5w0MyE2v2AUNM65TWQeDPdymrWK97v3MrpDngq9sE5-mDntl0aVpsX8Exs6kDZEca84p6JC45AInkrvXhqNLFgqntw_ac8XCacpc66Obc1pC4Y4GDRpWNhThBV_BPM1wX6ftEVcww9TTivH6enMDsJhy0BOnHkvATUypHgQwS78rJ5LshA6lCOj5gj60DBMdHFNLc9lzKr9h6_3HCtjYP1wS2nxHIFEGTBQ422JgUyz5aOP35SQS8XYpaOEqCK4oCFWZ28tL4cKT2p1oquFVwt1CRjNl_up1bXQClvt4N4_xfiUdt2-_72Twxs9TFkRdpJ49wRdTNrfbG_hzf6hwLI2ghHx-JIvDc728XW1ZgQzyty8gqNIm_LM8X2PMj0xWFZWvPLtmLukRIch0NLnFFszEJC1BBn4g4iovBdxl56ACE8I1O_HbVx3IfUFZI3zLQEpqSIW17pbIRAF0qUHM6DYOrto4LnAZ4a4pbSpGi5YBuNrzUIa17x_ObuDLMEVfFK8gLK5vb0HdhGohdp-s5Qg75Xu30gBoLdqcBjXSi2AeHsiZ5T_ZojJZBKc74hC38ylxTN7TYbwsgyEpcLVZylfcN7E3WN8h5xpafIdveyDCsutdfvJW5MDNoxRxlHjIoJ8NpjuBr929kyzgDaeJcXL-O3ANRcFgeNhv7abbB__sJcZUI0WpmBxZi8asT7eiA_n34E74DJh8_eo45VLEB9aZpzSbMBl5CSU4tEwPq4-GhURiERvrE-G44xgtK1AAlujw1akVwH0qdtyHjJXk8nNpZ9OgtmQZBOwIi6OvAbce14XGexq7dae5GIXGov_xnNQx382rWfj8MZtZ1SLGjRwQvXUt5tX3Nq9t1R32fRir9JZi1O2NYRgj26rA5C1vTviTX-mYd2Ao_2aK_H8n-wh31FqaBDlLAi7qMWDvvYt3CTq-mtVR3dn91Pwws47MGO-nDzGYnrk3ZCSh17kK4JhEYtQfPBt6LyRIjAKbviCxAreLybkMi9FLHqld0qCeVF_F-BIHnUJ02XRuGDdbkdiTwQIxoAyufr5QJYKJl6IzlxEJvuePuF3bPkUOEPfsvtgF_3DMAXbl1qo9Jx4tUxATOjqYdnd4mA0Zbu_fkNB_-4Dv1kYB8W9mKbyNu9AcOvHF0-CxUE9L3YiKM_Isv5WPc8lReelakl8fRbp4jXm-GUkWsPwbYQdRSwGW_6Ea0HTwTWQ43_gD9swvmtl3jU3LfiomqXdSaCiD9jDJJYHnsz70B62315R87pOTsXh8GOC59a4CwFCKRuMFiPSgdyM_E8VArGX1ER3K_qat1jGwPOsirdXelTWjACwxWvhahlyKQ6Oc3FlsO6PocmCycoEm0T5ASkbXTph1HzEgit9WlAgg_yg23JbfcJdbj2VYa5j_iwJGMY1SCaPsg569AKJSatW_g09igXpuLHEF-TYa_1FTJOYdUYviChn4I6fGvgTQZ9l1V3uEpSxOWqgolbhzavRtPIBistuyBxMfvQ16x7h9OQ3cIy7q1Tw5vgUz2gUH3btYTxRrH1UBsmA70SMnbCRimHVcRBraBy7J2GCU2PwjgUf7m1TjqXpJEMRSVbipxrsIn6HeF--S9onxXLi2DwO6o0Oa8RxPq6u1J6ZiFLKtx4UczeDXb8F6x3uIWRG3dqbP3LdhHkGw-JP8AuQ3pIEjtOakQSDf28QLsH7Dge5jSDRWEzD1KQH43PpFSEfQ8ewAyZ6XEmNUz2EVK5dupvk68nfpEmWBCe3KcA1cvVmj6hi6U3TyuQoFtYVR0_wm-F6aqLlxJ6A2hEe_HbkUI1SxQzgGfyNGFyRaa6uGk8p5YIJC_InXd_ktX5fxhb7bn59T_Ma3ToNVsGCXfQC4tOAkW3Ik4xXuGxOhLKrZhOdOk8xVcnwdqEcFMD0NVWw_sisVTfgD7Uu04As_d44RO8up0raig_IAKhSApI-vAxDybxkJwX468d1SYlcc2Xfvir90E_D-Ij7yf6qK3S4rMbMNSUH9aGBmEemQ1eoQYL3VkGflg== \ No newline at end of file diff --git a/1_ActivityWatchProducer/PY/my2sec/main/filekey.key b/1_ActivityWatchProducer/PY/my2sec/main/filekey.key deleted file mode 100644 index ffdd9454..00000000 --- a/1_ActivityWatchProducer/PY/my2sec/main/filekey.key +++ /dev/null @@ -1 +0,0 @@ -W27JI8Nta0Dan0nUOAmcDSoyqgiDT8CCSbNBCBJ4Na4= \ No newline at end of file diff --git a/1_ActivityWatchProducer/log.log b/1_ActivityWatchProducer/log.log index 7efb521d..ffac6729 100644 --- a/1_ActivityWatchProducer/log.log +++ b/1_ActivityWatchProducer/log.log @@ -1,34 +1,34 @@ -[2023-06-21 17:27:56.005] [info] [ My2secProducer logs ] -[2023-06-21 17:27:56.013] [info] # JSAP CONFIGURATOR STARTED # -[2023-06-21 17:27:56.015] [info] ------------------------< DETECTING RUNTIME ENVIRONMENT >------------------------ -[2023-06-21 17:27:56.016] [info] - Running environment: windows/linux -[2023-06-21 17:27:56.019] [info] - Run mode: development (NODE_ENV=dev ) -[2023-06-21 17:27:56.020] [info] -[2023-06-21 17:27:56.022] [info] ------------------------< GET LOOPBACK ADDRESS FOR AW API >------------------------ -[2023-06-21 17:27:56.024] [info] =============================== -[2023-06-21 17:27:56.025] [info] ** Request 0: localhost ** -[2023-06-21 17:27:56.523] [info] Response status: 200 -[2023-06-21 17:27:56.525] [info] Response DATA: {"aw-watcher-afk_LAPTOP-A3FDT9J3":{"id":"aw-watcher-afk_LAPTOP-A3FDT9J3","created":"2022-08-04T17:47:01.646448+00:00","name":null,"type":"afkstatus","client":"aw-watcher-afk","hostname":"LAPTOP-A3FDT9J3","last_updated":"2023-06-21T15:27:44.887000+00:00"},"aw-watcher-window_LAPTOP-A3FDT9J3":{"id":"aw-watcher-window_LAPTOP-A3FDT9J3","created":"2022-08-04T17:47:01.737074+00:00","name":null,"type":"currentwindow","client":"aw-watcher-window","hostname":"LAPTOP-A3FDT9J3","last_updated":"2023-06-21T15:27:50.289000+00:00"},"aw-watcher-scan_LAPTOP-A3FDT9J3":{"id":"aw-watcher-scan_LAPTOP-A3FDT9J3","created":"2022-10-17T14:34:37.689112+00:00","name":null,"type":"scan","client":"aw-my2sec","hostname":"LAPTOP-A3FDT9J3","last_updated":"2022-12-05T09:23:36.384000+00:00"},"aw-watcher-working_LAPTOP-A3FDT9J3":{"id":"aw-watcher-working_LAPTOP-A3FDT9J3","created":"2022-10-17T14:36:22.826305+00:00","name":null,"type":"working","client":"aw-watcher-working","hostname":"LAPTOP-A3FDT9J3","last_updated":"2023-06-19T10:39:30.670000+00:00"},"aw-watcher-start-stop_LAPTOP-A3FDT9J3":{"id":"aw-watcher-start-stop_LAPTOP-A3FDT9J3","created":"2022-12-05T12:35:53.528196+00:00","name":null,"type":"start-stop","client":"aw_my2sec","hostname":"LAPTOP-A3FDT9J3","last_updated":"2023-06-19T10:39:35.466000+00:00"},"aw-watcher-notshutdown_LAPTOP-A3FDT9J3":{"id":"aw-watcher-notshutdown_LAPTOP-A3FDT9J3","created":"2022-12-05T12:52:48.080634+00:00","name":null,"type":"not_shutdown","client":"aw_my2sec","hostname":"LAPTOP-A3FDT9J3","last_updated":"2023-06-19T10:37:35.891000+00:00"},"aw-producer":{"id":"aw-producer","created":"2023-05-29T20:02:49.073205+00:00","name":null,"type":"sepaconnector","client":"aw-producer","hostname":"unknown","last_updated":"2023-06-19T10:39:57.450000+00:00"}} -[2023-06-21 17:27:56.526] [info] Request to localhost executed -[2023-06-21 17:27:56.529] [info] =============================== -[2023-06-21 17:27:56.531] [info] ** Request 1: 127.0.0.1 ** -[2023-06-21 17:27:56.867] [info] Response status: 200 -[2023-06-21 17:27:56.868] [info] Response DATA: {"aw-watcher-afk_LAPTOP-A3FDT9J3":{"id":"aw-watcher-afk_LAPTOP-A3FDT9J3","created":"2022-08-04T17:47:01.646448+00:00","name":null,"type":"afkstatus","client":"aw-watcher-afk","hostname":"LAPTOP-A3FDT9J3","last_updated":"2023-06-21T15:27:44.887000+00:00"},"aw-watcher-window_LAPTOP-A3FDT9J3":{"id":"aw-watcher-window_LAPTOP-A3FDT9J3","created":"2022-08-04T17:47:01.737074+00:00","name":null,"type":"currentwindow","client":"aw-watcher-window","hostname":"LAPTOP-A3FDT9J3","last_updated":"2023-06-21T15:27:50.289000+00:00"},"aw-watcher-scan_LAPTOP-A3FDT9J3":{"id":"aw-watcher-scan_LAPTOP-A3FDT9J3","created":"2022-10-17T14:34:37.689112+00:00","name":null,"type":"scan","client":"aw-my2sec","hostname":"LAPTOP-A3FDT9J3","last_updated":"2022-12-05T09:23:36.384000+00:00"},"aw-watcher-working_LAPTOP-A3FDT9J3":{"id":"aw-watcher-working_LAPTOP-A3FDT9J3","created":"2022-10-17T14:36:22.826305+00:00","name":null,"type":"working","client":"aw-watcher-working","hostname":"LAPTOP-A3FDT9J3","last_updated":"2023-06-19T10:39:30.670000+00:00"},"aw-watcher-start-stop_LAPTOP-A3FDT9J3":{"id":"aw-watcher-start-stop_LAPTOP-A3FDT9J3","created":"2022-12-05T12:35:53.528196+00:00","name":null,"type":"start-stop","client":"aw_my2sec","hostname":"LAPTOP-A3FDT9J3","last_updated":"2023-06-19T10:39:35.466000+00:00"},"aw-watcher-notshutdown_LAPTOP-A3FDT9J3":{"id":"aw-watcher-notshutdown_LAPTOP-A3FDT9J3","created":"2022-12-05T12:52:48.080634+00:00","name":null,"type":"not_shutdown","client":"aw_my2sec","hostname":"LAPTOP-A3FDT9J3","last_updated":"2023-06-19T10:37:35.891000+00:00"},"aw-producer":{"id":"aw-producer","created":"2023-05-29T20:02:49.073205+00:00","name":null,"type":"sepaconnector","client":"aw-producer","hostname":"unknown","last_updated":"2023-06-19T10:39:57.450000+00:00"}} -[2023-06-21 17:27:56.870] [info] Request to 127.0.0.1 executed -[2023-06-21 17:27:56.871] [info] =============================== -[2023-06-21 17:27:56.872] [info] ** Request 2: [::1] ** -[2023-06-21 17:27:56.883] [error] Error: connect ECONNREFUSED ::1:5600 +[2023-06-21 18:35:48.779] [info] [ My2secProducer logs ] +[2023-06-21 18:35:48.787] [info] # JSAP CONFIGURATOR STARTED # +[2023-06-21 18:35:48.790] [info] ------------------------< DETECTING RUNTIME ENVIRONMENT >------------------------ +[2023-06-21 18:35:48.796] [info] - Running environment: windows/linux +[2023-06-21 18:35:48.799] [info] - Run mode: development (NODE_ENV=dev ) +[2023-06-21 18:35:48.801] [info] +[2023-06-21 18:35:48.804] [info] ------------------------< GET LOOPBACK ADDRESS FOR AW API >------------------------ +[2023-06-21 18:35:48.806] [info] =============================== +[2023-06-21 18:35:48.809] [info] ** Request 0: localhost ** +[2023-06-21 18:35:49.273] [info] Response status: 200 +[2023-06-21 18:35:49.275] [info] Response DATA: {"aw-watcher-afk_LAPTOP-A3FDT9J3":{"id":"aw-watcher-afk_LAPTOP-A3FDT9J3","created":"2022-08-04T17:47:01.646448+00:00","name":null,"type":"afkstatus","client":"aw-watcher-afk","hostname":"LAPTOP-A3FDT9J3","last_updated":"2023-06-21T16:35:37.638000+00:00"},"aw-watcher-window_LAPTOP-A3FDT9J3":{"id":"aw-watcher-window_LAPTOP-A3FDT9J3","created":"2022-08-04T17:47:01.737074+00:00","name":null,"type":"currentwindow","client":"aw-watcher-window","hostname":"LAPTOP-A3FDT9J3","last_updated":"2023-06-21T16:35:46.598000+00:00"},"aw-watcher-scan_LAPTOP-A3FDT9J3":{"id":"aw-watcher-scan_LAPTOP-A3FDT9J3","created":"2022-10-17T14:34:37.689112+00:00","name":null,"type":"scan","client":"aw-my2sec","hostname":"LAPTOP-A3FDT9J3","last_updated":"2022-12-05T09:23:36.384000+00:00"},"aw-watcher-working_LAPTOP-A3FDT9J3":{"id":"aw-watcher-working_LAPTOP-A3FDT9J3","created":"2022-10-17T14:36:22.826305+00:00","name":null,"type":"working","client":"aw-watcher-working","hostname":"LAPTOP-A3FDT9J3","last_updated":"2023-06-19T10:39:30.670000+00:00"},"aw-watcher-start-stop_LAPTOP-A3FDT9J3":{"id":"aw-watcher-start-stop_LAPTOP-A3FDT9J3","created":"2022-12-05T12:35:53.528196+00:00","name":null,"type":"start-stop","client":"aw_my2sec","hostname":"LAPTOP-A3FDT9J3","last_updated":"2023-06-19T10:39:35.466000+00:00"},"aw-watcher-notshutdown_LAPTOP-A3FDT9J3":{"id":"aw-watcher-notshutdown_LAPTOP-A3FDT9J3","created":"2022-12-05T12:52:48.080634+00:00","name":null,"type":"not_shutdown","client":"aw_my2sec","hostname":"LAPTOP-A3FDT9J3","last_updated":"2023-06-19T10:37:35.891000+00:00"},"aw-producer":{"id":"aw-producer","created":"2023-05-29T20:02:49.073205+00:00","name":null,"type":"sepaconnector","client":"aw-producer","hostname":"unknown","last_updated":"2023-06-19T10:39:57.450000+00:00"}} +[2023-06-21 18:35:49.278] [info] Request to localhost executed +[2023-06-21 18:35:49.279] [info] =============================== +[2023-06-21 18:35:49.281] [info] ** Request 1: 127.0.0.1 ** +[2023-06-21 18:35:49.570] [info] Response status: 200 +[2023-06-21 18:35:49.572] [info] Response DATA: {"aw-watcher-afk_LAPTOP-A3FDT9J3":{"id":"aw-watcher-afk_LAPTOP-A3FDT9J3","created":"2022-08-04T17:47:01.646448+00:00","name":null,"type":"afkstatus","client":"aw-watcher-afk","hostname":"LAPTOP-A3FDT9J3","last_updated":"2023-06-21T16:35:37.638000+00:00"},"aw-watcher-window_LAPTOP-A3FDT9J3":{"id":"aw-watcher-window_LAPTOP-A3FDT9J3","created":"2022-08-04T17:47:01.737074+00:00","name":null,"type":"currentwindow","client":"aw-watcher-window","hostname":"LAPTOP-A3FDT9J3","last_updated":"2023-06-21T16:35:47.811000+00:00"},"aw-watcher-scan_LAPTOP-A3FDT9J3":{"id":"aw-watcher-scan_LAPTOP-A3FDT9J3","created":"2022-10-17T14:34:37.689112+00:00","name":null,"type":"scan","client":"aw-my2sec","hostname":"LAPTOP-A3FDT9J3","last_updated":"2022-12-05T09:23:36.384000+00:00"},"aw-watcher-working_LAPTOP-A3FDT9J3":{"id":"aw-watcher-working_LAPTOP-A3FDT9J3","created":"2022-10-17T14:36:22.826305+00:00","name":null,"type":"working","client":"aw-watcher-working","hostname":"LAPTOP-A3FDT9J3","last_updated":"2023-06-19T10:39:30.670000+00:00"},"aw-watcher-start-stop_LAPTOP-A3FDT9J3":{"id":"aw-watcher-start-stop_LAPTOP-A3FDT9J3","created":"2022-12-05T12:35:53.528196+00:00","name":null,"type":"start-stop","client":"aw_my2sec","hostname":"LAPTOP-A3FDT9J3","last_updated":"2023-06-19T10:39:35.466000+00:00"},"aw-watcher-notshutdown_LAPTOP-A3FDT9J3":{"id":"aw-watcher-notshutdown_LAPTOP-A3FDT9J3","created":"2022-12-05T12:52:48.080634+00:00","name":null,"type":"not_shutdown","client":"aw_my2sec","hostname":"LAPTOP-A3FDT9J3","last_updated":"2023-06-19T10:37:35.891000+00:00"},"aw-producer":{"id":"aw-producer","created":"2023-05-29T20:02:49.073205+00:00","name":null,"type":"sepaconnector","client":"aw-producer","hostname":"unknown","last_updated":"2023-06-19T10:39:57.450000+00:00"}} +[2023-06-21 18:35:49.575] [info] Request to 127.0.0.1 executed +[2023-06-21 18:35:49.577] [info] =============================== +[2023-06-21 18:35:49.578] [info] ** Request 2: [::1] ** +[2023-06-21 18:35:49.583] [error] Error: connect ECONNREFUSED ::1:5600 at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1157:16) -[2023-06-21 17:27:56.884] [info] Failed 1/3 requests -[2023-06-21 17:27:56.885] [info] Request to [::1] executed -[2023-06-21 17:27:56.887] [info] -[2023-06-21 17:27:56.888] [info] ------------------------< CONFIGURE JSAP >------------------------ -[2023-06-21 17:27:56.893] [info] - modifying endpoint: ActivityWatch -[2023-06-21 17:27:56.895] [info] - modifying endpoint: AwApiRouter -[2023-06-21 17:27:56.897] [info] - modifying endpoint: My2secApi -[2023-06-21 17:27:56.899] [info] - modifying endpoint: MongoDb -[2023-06-21 17:27:56.900] [info] - modifying endpoint: MongoDbRouter -[2023-06-21 17:27:56.901] [info] { +[2023-06-21 18:35:49.584] [info] Failed 1/3 requests +[2023-06-21 18:35:49.586] [info] Request to [::1] executed +[2023-06-21 18:35:49.588] [info] +[2023-06-21 18:35:49.589] [info] ------------------------< CONFIGURE JSAP >------------------------ +[2023-06-21 18:35:49.592] [info] - modifying endpoint: ActivityWatch +[2023-06-21 18:35:49.594] [info] - modifying endpoint: AwApiRouter +[2023-06-21 18:35:49.596] [info] - modifying endpoint: My2secApi +[2023-06-21 18:35:49.600] [info] - modifying endpoint: MongoDb +[2023-06-21 18:35:49.602] [info] - modifying endpoint: MongoDbRouter +[2023-06-21 18:35:49.603] [info] { AwProducer: { endpoints: { Keycloak: 'https://keycloak.vaimee.org', @@ -53,30 +53,30 @@ collection: 'ActivityWatchMessages' } } -[2023-06-21 17:27:56.908] [info] 127.0.0.1:5600 -[2023-06-21 17:27:56.915] [info] Preflight: testing ActivityWatch connection -[2023-06-21 17:27:56.921] [info] - AwApiRouter started -[2023-06-21 17:27:56.923] [info] STARTING PYTHON API IN DEV MODE -[2023-06-21 17:27:56.972] [info] - Python api started -[2023-06-21 17:27:56.980] [info] - MongoDbClient started -[2023-06-21 17:27:57.160] [info] aw api is listening on port 1340 -[2023-06-21 17:27:58.007] [info] Launching dev python api with python3 -[2023-06-21 17:27:58.012] [info] Spawning python: C:\Users\Utente\git\my2sec\1_ActivityWatchProducer\PY\my2sec\main -[2023-06-21 17:27:58.043] [info] ** started python api -[2023-06-21 17:28:24.344] [error] stderr: [nltk_data] Downloading package stopwords to +[2023-06-21 18:35:49.608] [info] 127.0.0.1:5600 +[2023-06-21 18:35:49.612] [info] Preflight: testing ActivityWatch connection +[2023-06-21 18:35:49.622] [info] - AwApiRouter started +[2023-06-21 18:35:49.624] [info] STARTING PYTHON API IN DEV MODE +[2023-06-21 18:35:49.656] [info] - Python api started +[2023-06-21 18:35:49.661] [info] - MongoDbClient started +[2023-06-21 18:35:49.720] [info] aw api is listening on port 1340 +[2023-06-21 18:35:49.952] [info] Launching dev python api with python3 +[2023-06-21 18:35:49.957] [info] Spawning python: C:\Users\Utente\git\my2sec\1_ActivityWatchProducer\PY\my2sec\main +[2023-06-21 18:35:49.992] [info] ** started python api +[2023-06-21 18:35:53.707] [error] stderr: [nltk_data] Downloading package stopwords to [nltk_data] C:\Users\Utente/nltk_data... -[2023-06-21 17:28:24.366] [error] stderr: [nltk_data] Package stopwords is already up-to-date! +[2023-06-21 18:35:53.709] [error] stderr: [nltk_data] Package stopwords is already up-to-date! [nltk_data] Downloading package punkt to C:\Users\Utente/nltk_data... -[2023-06-21 17:28:24.413] [error] stderr: [nltk_data] Package punkt is already up-to-date! +[2023-06-21 18:35:53.742] [error] stderr: [nltk_data] Package punkt is already up-to-date! -[2023-06-21 17:28:24.437] [info] { +[2023-06-21 18:35:53.754] [info] { type: 'Buffer', data: [ 49, 50, 55, 46, 48, 46, 48, 46, 49, 32, 45, 45, 32, 91, 50, 49, 47, 48, 54, 47, 50, 48, 50, 51, - 32, 49, 55, 58, 50, 56, 58, 50, 52, 93, 32, 65, + 32, 49, 56, 58, 51, 53, 58, 53, 51, 93, 32, 65, 80, 73, 58, 32, 65, 87, 83, 101, 114, 118, 101, 114, 32, 111, 110, 108, 105, 110, 101, 13, 10, 32, 42, 32, 83, 101, 114, 118, 105, 110, 103, 32, 70, 108, 97, 115, diff --git a/2_PAC/Apps/My2Sec/OpUsersConsumer.js b/2_PAC/Apps/My2Sec/OpUsersConsumer.js index 265a767d..c7571174 100644 --- a/2_PAC/Apps/My2Sec/OpUsersConsumer.js +++ b/2_PAC/Apps/My2Sec/OpUsersConsumer.js @@ -19,7 +19,6 @@ class OpUsersConsumer extends Consumer{ console.log("║║ # App: OpUsersConsumer v0.2"); console.log("║║ ###########################"); super(jsap_file,"ALL_USERNAMES",{},true); - this.log.loglevel=1; this.opClient=new OpClient(jsap_file.extended.OpenProjectClientConfiguration); this.tasksArr = [ "http://www.vaimee.it/ontology/my2sec#Developing", diff --git a/2_PAC/Apps/My2Sec/TasksDiagnostics.js b/2_PAC/Apps/My2Sec/TasksDiagnostics.js new file mode 100644 index 00000000..7d144d4e --- /dev/null +++ b/2_PAC/Apps/My2Sec/TasksDiagnostics.js @@ -0,0 +1,193 @@ +const OpenProjectClient = require("../../core/clients/OpenProjectClient") +const TasksConsumer = require("../../core/Pattern/My2Sec/TasksConsumer") +const UserActivityTypesConsumer = require("../../core/Pattern/My2Sec/UserActivityTypesConsumer") +const UsersConsumer = require("../../core/Pattern/My2Sec/UsersConsumer") +const Producer = require("../../core/Pattern/Producer") +const GregLogs = require("../../utils/GregLogs") + +class TasksDiagnostics{ + constructor(jsap){ + this.usersConsumer= new UsersConsumer(jsap) + this.userActivityTypesConsumer= new UserActivityTypesConsumer(jsap,"noemail") + this.opClient=new OpenProjectClient(jsap.extended.OpenProjectClientConfiguration); + this.taskProducer=new Producer(jsap,"ADD_TASK") + this.log=new GregLogs() + } + + async start(){ + var project_link=await this.get_project_link("My2sec") + //console.log(project_link) + this.log.info(`2. Fetched project link: ${JSON.stringify(project_link)}`) + + const opUsersMap= await this.getOpUsers() + //console.log(opUsers) + //throw new Error("MAo") + + const sepaUsersArr=await this.getAllUsersArr() + //console.log("All users:",users) + for(const user of sepaUsersArr){ + console.log(" ") + console.log("------------------------------------------") + + const userActivityTypes=await this.getUserActivityTypes(user) + console.log("Activity types: ",userActivityTypes.length) + if(userActivityTypes.length==0){ + console.log("No activity types detected, skipping user") + continue + } + + const userTasks=await this.getUserTasks(user) + console.log("Tasks:",userTasks.length) + if(userTasks.length==0){ + console.log("No tasks detected, skipping user") + continue + } + + const missing=this.getMissingTasks(userActivityTypes,userTasks) + console.log("Missing:",missing) + if(missing.length!=0){ + console.log("Found missing tasks, updating tasks for user...") + var arr = user.split('/') + var mail = arr[arr.length - 1].trim() + const res=await this.addMissingTasksForUser(user,missing,opUsersMap.get(mail),project_link) + if(!res){ + throw new Error("Error adding task for user: "+user) + } + } + } + } + + + async addMissingTasksForUser(usergraph,missingTasks,userMap,project_link){ + console.log("Adding "+missingTasks.length+" missing tasks") + console.log(project_link) + const user_href=userMap.get("href") + console.log(user_href) + //Get user href + //Get Project href + //For each missing task, add task to OP and update Sepa with task + + //[5] ADD TASKS TO PROJECT + for(const task of missingTasks){ + //console.log("** Adding task "+task+" to user "+usergraph) + //var wp=await this.opClient.add_task(task,user_href,project_link); + //var taskBindings=this.construct_op_task_forced_bindings({work_package:wp}) + //console.log("Added optask, Updating sepa with bindings:",taskBindings) + //await this.taskProducer.updateSepa(taskBindings); + //console.log("Updated sepa") + } + + + return true + } + + + async getOpUsers(){ + var out=new Map() + var OpUsersPackage=await this.opClient.get_auth_resource("/api/v3/users?pageSize=1000") //"+wp._embedded.assignee.id) + OpUsersPackage=JSON.parse(OpUsersPackage) + var usersArr=OpUsersPackage._embedded.elements + for(var user of usersArr){ + //console.log(usersArr[i].id,usersArr[i].email,usersArr[i]._links) + var user_href=user._links.self.href; + var user_id=user.id + var user_email=user.email + var cell=new Map() + cell.set("id",user_id) + cell.set("href",user_href) + out.set(user_email,cell) + } + return out + } + + + getMissingTasks(activityTypes,tasks){ + var missing=[] + for(var type of activityTypes){ + var found=false; + for(var taskTitle of tasks){ + if(taskTitle==type){ + found=true + } + } + if(!found){ + missing.push(type) + } + } + return missing; + } + + async getUserTasks(usergraph){ + var arr = usergraph.split('/') + var mail = arr[arr.length - 1].trim() + var consumer=new TasksConsumer(jsap,mail) + const userTasks=await consumer.querySepa() + //console.log(userTasks) + var out=[]; + for(var binding of userTasks){ + out.push(binding.tasktitle) + } + return out + } + + async getUserActivityTypes(usergraph){ + const userActivityTypes= await this.userActivityTypesConsumer.querySepaWithBindings({ + usergraph:usergraph + }) + var out=[]; + for(var binding of userActivityTypes){ + out.push(binding.activity_type) + } + return out + } + + async getAllUsersArr(){ + const usersbindings=await this.usersConsumer.querySepa(); + var out=[]; + for(var binding of usersbindings){ + out.push(binding.s) + } + return out + } + + async get_project_link(name){ + var projects=await this.opClient.get_projects() + return new Promise(resolve=>{ + projects=projects._embedded.elements; + //console.log(projects._embedded.elements) + Object.keys(projects).forEach(k=>{ + //console.log(projects[k]) + var pname=projects[k].name; + //console.log(pname) + if(pname == name){ + //console.log("FOUND") + //console.log(projects[k]) + resolve(projects[k]._links.self); + } + }) + }) + } + + construct_op_task_forced_bindings(json_obj){ + var op_task_forced_bindings=JSON.parse("{}"); + var embedded=json_obj.work_package._embedded + var project=embedded.project //PROJECT INFO!!! + //INJECTION + //op_task_forced_bindings["graph"]="http://www.vaimee.it/projects#"; + op_task_forced_bindings["projecturi"]="http://www.vaimee.it/projects#"+project.identifier; + op_task_forced_bindings["task_id"]=json_obj.work_package.id; + var task_title=json_obj.work_package.subject.replace(/\\/g,"\\\\");//PRIMA LE DOPPIE SBARRE + task_title=task_title.replace(/\'/g,"\\\'"); //POI GLI ASTERISCHI + op_task_forced_bindings["task_title"]=task_title; + op_task_forced_bindings["assignee"]="http://www.vaimee.it/my2sec/"+embedded.assignee.email; + op_task_forced_bindings["spent_time"]=json_obj.work_package.spentTime //spent time + if(json_obj.work_package.spentTime==null){ + op_task_forced_bindings["spent_time"]=0; + } + return op_task_forced_bindings; + } + + +} + +module.exports= TasksDiagnostics \ No newline at end of file diff --git a/2_PAC/core/Pattern/My2Sec/TasksConsumer.js b/2_PAC/core/Pattern/My2Sec/TasksConsumer.js new file mode 100644 index 00000000..5ef74cce --- /dev/null +++ b/2_PAC/core/Pattern/My2Sec/TasksConsumer.js @@ -0,0 +1,60 @@ +const CachedConsumer = require("../CachedConsumer") + +class TasksConsumer extends CachedConsumer{ + constructor(jsap,userEmail){ + var queryName="USER_TASKS" + var bindings={ + assignee:"http://www.vaimee.it/my2sec/"+userEmail + } + super(jsap,queryName,bindings,false) + } + + //@Override + add_binding_to_cache(binding){ + //console.log(binding) + if(!binding.hasOwnProperty("bnode")){throw new Error("Invalid task, missing bnode key")} + if(!binding.hasOwnProperty("progetto")){throw new Error("Invalid task, missing project key")} + if(!binding.hasOwnProperty("taskid")){throw new Error("Invalid task, missing taskid key")} + if(!binding.hasOwnProperty("tasktitle")){throw new Error("Invalid task, missing tasktitle key")} + if(!binding.hasOwnProperty("spent_time")){throw new Error("Invalid task, missing spent_time key")} + if(binding["bnode"]==null || binding["bnode"]==undefined){throw new Error("Invalid task, missing bnode value")} + if(binding["progetto"]==null || binding["progetto"]==undefined){throw new Error("Invalid task, missing project value")} + if(binding["taskid"]==null || binding["taskid"]==undefined){throw new Error("Invalid task, missing taskid value")} + if(binding["tasktitle"]==null || binding["tasktitle"]==undefined){throw new Error("Invalid task, missing tasktitle value")} + if(binding["spent_time"]==null || binding["spent_time"]==undefined){throw new Error("Invalid task, missing spent_time value")} + var newBinding={ + bnode:binding.bnode, + progetto:binding.progetto, + taskid:binding.taskid, + tasktitle:binding.tasktitle, + spent_time:binding.spent_time + } + super.add_binding_to_cache(newBinding) + } + + + //@Override + remove_binding_from_cache(binding){ + if(!binding.hasOwnProperty("bnode")){throw new Error("Invalid task, missing bnode key")} + if(!binding.hasOwnProperty("progetto")){throw new Error("Invalid task, missing project key")} + if(!binding.hasOwnProperty("taskid")){throw new Error("Invalid task, missing taskid key")} + if(!binding.hasOwnProperty("tasktitle")){throw new Error("Invalid task, missing tasktitle key")} + if(!binding.hasOwnProperty("spent_time")){throw new Error("Invalid task, missing spent_time key")} + if(binding["bnode"]==null || binding["bnode"]==undefined){throw new Error("Invalid task, missing bnode value")} + if(binding["progetto"]==null || binding["progetto"]==undefined){throw new Error("Invalid task, missing project value")} + if(binding["taskid"]==null || binding["taskid"]==undefined){throw new Error("Invalid task, missing taskid value")} + if(binding["tasktitle"]==null || binding["tasktitle"]==undefined){throw new Error("Invalid task, missing tasktitle value")} + if(binding["spent_time"]==null || binding["spent_time"]==undefined){throw new Error("Invalid task, missing spent_time value")} + var newBinding={ + bnode:binding.bnode, + progetto:binding.progetto, + taskid:binding.taskid, + tasktitle:binding.tasktitle, + spent_time:binding.spent_time + } + super.remove_binding_from_cache(newBinding) + } + +} + +module.exports=TasksConsumer \ No newline at end of file diff --git a/2_PAC/core/Pattern/My2Sec/UserProfessionInfoConsumer.js b/2_PAC/core/Pattern/My2Sec/UserProfessionInfoConsumer.js new file mode 100644 index 00000000..85393d23 --- /dev/null +++ b/2_PAC/core/Pattern/My2Sec/UserProfessionInfoConsumer.js @@ -0,0 +1,68 @@ +const Consumer=require("../Consumer") + +class UserProfessionInfoConsumer extends Consumer{ + constructor(jsap,userEmail){ + var queryName="USER_PROFESSION_INFO" + var bindings={ + usergraph:"http://www.vaimee.it/my2sec/"+userEmail + } + super(jsap,queryName,bindings) + this.user_graph="http://www.vaimee.it/my2sec/"+userEmail + } + + getOverrideHostConfiguration(){ + var override_host={ + "host":"dld.arces.unibo.it", + "sparql11protocol": { + "protocol": "http", + "port": 8550, + "query": { + "path": "/query", + "method": "POST", + "format": "JSON" + }, + "update": { + "path": "/update", + "method": "POST", + "format": "JSON" + } + }, + "sparql11seprotocol": { + "protocol": "ws", + "availableProtocols": { + "ws": { + "port": 9550, + "path": "/subscribe" + }, + "wss": { + "port": 9443, + "path": "/secure/subscribe" + } + } + } + } + return override_host + } + + //@OVERRIDE + async overrideQuerySepa(){ + var override=this.getOverrideHostConfiguration() + var res; + var queryname=this.queryname; + var bindings=this.sub_bindings; + if(override==null || override==undefined){ + res=await this.query(queryname,bindings); + }else{ + this.log.debug("Executing override query") + var query=this.bench.sparql(this.queryText,bindings) + query=query.replace(/(?<= *)(\?usergraph)(?= *)/g,"<"+this.user_graph+">") + //this.log.info("QUERY SEPA:"+query) + res=await this.basicSepaClient.query(query,override); + //res=await this.query(queryname,bindings,override); + } + + return this.extractResultsBindings(res); + } +} + +module.exports= UserProfessionInfoConsumer \ No newline at end of file diff --git a/2_PAC/core/Pattern/My2Sec/UsersConsumer.js b/2_PAC/core/Pattern/My2Sec/UsersConsumer.js new file mode 100644 index 00000000..7d9a15af --- /dev/null +++ b/2_PAC/core/Pattern/My2Sec/UsersConsumer.js @@ -0,0 +1,9 @@ +const Consumer = require("../Consumer") + +class UsersConsumer extends Consumer{ + constructor(jsap){ + super(jsap,"ALL_USERNAMES",{}) + } +} + +module.exports= UsersConsumer \ No newline at end of file diff --git a/2_PAC/resources/my2sec.dld.jsap b/2_PAC/resources/my2sec.dld.jsap new file mode 100644 index 00000000..d07ca091 --- /dev/null +++ b/2_PAC/resources/my2sec.dld.jsap @@ -0,0 +1,1211 @@ +{ + "host": "dld.arces.unibo.it", + "oauth": { + "enable": false, + "register": "https://localhost:8443/oauth/register", + "tokenRequest": "https://localhost:8443/oauth/token" + }, + "sparql11protocol": { + "protocol": "http", + "port": 8551, + "query": { + "path": "/query", + "method": "POST", + "format": "JSON" + }, + "update": { + "path": "/update", + "method": "POST", + "format": "JSON" + } + }, + "sparql11seprotocol": { + "protocol": "ws", + "availableProtocols": { + "ws": { + "port": 9551, + "path": "/subscribe" + }, + "wss": { + "port": 443, + "path": "/subscribe" + } + } + }, + "graphs": { + + }, + "namespaces": { + "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#", + "rdfs": "http://www.w3.org/2000/01/rdf-schema#", + "xsd": "http://www.w3.org/2001/XMLSchema#", + "owl": "http://www.w3.org/2002/07/owl#", + "time":"http://www.w3.org/2006/time#", + "my2sec": "http://www.vaimee.it/ontology/my2sec#" + }, + "extended": { + + "AwProducer": { + "endpoints":{ + "Keycloak": "https://keycloak.vaimee.org", + "ActivityWatch": "http://localhost:5600", + "AwApiRouter": "http://localhost:1340", + "My2secApi": "http://localhost:5000", + "MongoDb": "mongodb://root:Gregnet-99@localhost:27017/", + "MongoDbRouter": "http://localhost:1341" + }, + "loglevel":0 + }, + "OpenProjectClientConfiguration":{ + "host": "dld.arces.unibo.it", + "port": 8078, + "clientId": "96CwxvbDL7gfJ0IJdGXA0Z62ZQIYJCfHN520D5Majn4", + "clientSecret": "l0pKp2SRaBwCSrysdY3aggRr1KnrTovqJjojwApP1Z0", + "apiKey": "d8f31b5a597d11be8f2037fbc3d7da3689a5c79dde45adc3fc12a457e0d76b94" + }, + "MongoDbClientConfiguration":{ + "uri":"mongodb://root:Gregnet-99@dld.arces.unibo.it:27017/", + "database":"local", + "collection":"ActivityWatchMessages" + } + }, + "updates": { + "CREATE_USERNAMES_GRAPH":{ + "sparql": "CREATE GRAPH " + }, + "DROP_USERNAMES_GRAPH":{ + "sparql":"DROP GRAPH " + }, + "ADD_USER":{ + "sparql":"INSERT DATA { GRAPH { ?usergraph my2sec:username ?username_literal }}", + "forcedBindings": { + "usergraph": { + "type": "uri", + "value": "http://www.vaimee.it/my2sec/defuser@vaimee.it" + }, + "username_literal": { + "type": "literal", + "value": "defuser" + } + } + }, + "CREATE_USER_PRIVATE_GRAPH":{ + "sparql":"CREATE GRAPH ?usergraph", + "forcedBindings": { + "usergraph": { + "type": "uri", + "value": "http://www.vaimee.it/my2sec/defuser@vaimee.it" + } + } + }, + "REMOVE_USER":{ + "sparql":"DELETE {GRAPH { ?usergraph ?p ?o }} WHERE { GRAPH { ?usergraph ?p ?o }}", + "forcedBindings": { + "usergraph": { + "type": "uri", + "value": "http://www.vaimee.it/my2sec/defuser@vaimee.it" + } + } + }, + "DELETE_USER_PRIVATE_GRAPH":{ + "sparql":"DROP GRAPH " + }, + + "DELETE_ALL_USER_DATA":{ + "sparql":"DELETE { GRAPH ?usergraph {?s ?p ?o}} WHERE { GRAPH ?usergraph { ?s ?p ?o }}", + "forcedBindings": { + "usergraph": { + "type": "uri", + "value": "http://www.vaimee.it/my2sec/defuser@vaimee.it" + } + } + }, + "SEND_MESSAGE":{ + "sparql":"INSERT { GRAPH ?message_graph {?b rdf:type my2sec:Message ; my2sec:hasMember ?usergraph ; my2sec:messageValue ?msgvalue; my2sec:messageSource ?source ; time:inXSDDateTimeStamp ?msgtimestamp }} WHERE {BIND(UUID() AS ?b)}", + "forcedBindings": { + "message_graph": { + "type": "uri", + "value": "http://www.vaimee.it/my2sec/messages/activitywatch" + }, + "usergraph": { + "type": "uri", + "value": "http://www.vaimee.it/my2sec/defuser@vaimee.it" + }, + "source": { + "type": "uri", + "value": "http://www.vaimee.it/sources/aw-watcher-window" + }, + "msgtimestamp": { + "type": "literal", + "value": "2022-08-10T15:33:42.503000+00:00" + }, + "msgvalue": { + "type": "literal", + "value": "{}" + } + } + }, + "DELETE_MESSAGE":{ + "sparql":"DELETE { GRAPH ?message_graph {?message ?p ?o }} WHERE { GRAPH ?message_graph {?message ?p ?o} }", + "forcedBindings": { + "message_graph": { + "type": "uri", + "value": "http://www.vaimee.it/my2sec/messages/activitywatch" + }, + "message": { + "type": "uri", + "value": "urn:uuid:MessageUri" + } + } + }, + + + + + "ADD_TRAINING_EVENT":{ + "sparql":"INSERT {GRAPH ?events_graph { ?b rdf:type my2sec:TrainingEvent ; my2sec:hasMember ?usergraph; rdf:type ?event_type; my2sec:nameApp ?app; my2sec:titleFile ?title; time:inXSDDateTimeStamp ?datetimestamp; my2sec:hasActivityType ?activity_type; my2sec:taskTitle ?task; my2sec:hasTimeInterval ?timenode . ?timenode rdf:type time:Duration; time:unitType time:unitSecond ; time:numericDuration ?duration }} WHERE {BIND(UUID() AS ?b) BIND(UUID() AS ?timenode) }", + "forcedBindings": { + "events_graph":{ + "type": "uri", + "value": "http://www.vaimee.it/my2sec/events" + }, + "usergraph": { + "type": "uri", + "value": "http://www.vaimee.it/my2sec/defuser@vaimee.it" + }, + "event_type": { + "type": "uri", + "value": "my2sec:WindowEvent" + }, + "datetimestamp": { + "type": "literal", + "value": "2022-08-10T15:33:42.503000+00:00" + }, + "app": { + "type": "literal", + "value": "chrome.exe" + }, + "title": { + "type": "literal", + "value": "Portainer" + }, + "activity_type": { + "type": "uri", + "value": "my2sec:Developing" + }, + "task": { + "type": "literal", + "value": "WP2-IMPLEMENTAZIONE COMPONENTI" + }, + "duration": { + "type": "literal", + "value": "16.0" + } + } + }, + "REMOVE_TRAINING_EVENT":{ + "sparql":"DELETE {GRAPH ?events_graph {?event ?p ?o ; my2sec:hasTimeInterval ?d . ?d ?p1 ?o1 } } WHERE{ GRAPH ?events_graph {?event ?p ?o ; my2sec:hasTimeInterval ?d . ?d ?p1 ?o1 }}", + "forcedBindings": { + "events_graph":{ + "type": "uri", + "value": "http://www.vaimee.it/my2sec/events" + }, + "event": { + "type": "uri", + "value": "urn:uuid:EventX" + } + } + }, + + "ADD_TRAINING_ACTIVITY":{ + "sparql":"INSERT {GRAPH ?activities_graph {?b rdf:type my2sec:TrainingActivity ; my2sec:hasMember ?usergraph; rdf:type ?event_type; my2sec:nameApp ?app; my2sec:titleFile ?title; time:inXSDDateTimeStamp ?datetimestamp; my2sec:activityType ?activity_type; my2sec:taskTitle ?task; my2sec:hasTimeInterval ?timenode . ?timenode rdf:type time:Duration; time:unitType time:unitSecond ; time:numericDuration ?duration }} WHERE {BIND(UUID() AS ?b) BIND(UUID() AS ?timenode)}", + "forcedBindings": { + "activities_graph":{ + "type": "uri", + "value": "http://vaimee.it/my2sec/activities" + }, + "usergraph": { + "type": "uri", + "value": "http://www.vaimee.it/defuser" + }, + "event_type": { + "type": "uri", + "value": "my2sec:windowEvent" + }, + "datetimestamp": { + "type": "literal", + "value": "2022-08-10T15:33:42.503000+00:00" + }, + "app": { + "type": "literal", + "value": "chrome.exe" + }, + "title": { + "type": "literal", + "value": "youtube" + }, + "activity_type": { + "type": "uri", + "value": "my2sec:developement" + }, + "task": { + "type": "literal", + "value": "WP2-IMPLEMENTAZIONE COMPONENTI" + }, + "duration": { + "type": "literal", + "value": "16.0" + } + } + }, + "REMOVE_TRAINING_ACTIVITY":{ + "sparql":"DELETE {GRAPH ?activities_graph {?activity ?p ?o ; my2sec:hasTimeInterval ?d . ?d ?p1 ?o1} } WHERE{ GRAPH ?activities_graph {?activity ?p ?o ; my2sec:hasTimeInterval ?d . ?d ?p1 ?o1}}", + "forcedBindings": { + "activities_graph":{ + "type": "uri", + "value": "http://vaimee.it/my2sec/activities" + }, + "activity": { + "type": "uri", + "value": "urn:uuid:ActivityX" + } + } + }, + + "ADD_VALIDATED_ACTIVITY":{ + "sparql":"INSERT {GRAPH ?activities_graph {?b rdf:type my2sec:ValidatedActivity ; my2sec:hasMember ?usergraph; rdf:type ?event_type; my2sec:nameApp ?app; my2sec:titleFile ?title; time:inXSDDateTimeStamp ?datetimestamp; my2sec:activityType ?activity_type; my2sec:taskTitle ?task; my2sec:hasTimeInterval ?timenode . ?timenode rdf:type time:Duration; time:unitType time:unitSecond ; time:numericDuration ?duration }} WHERE {BIND(UUID() AS ?b) BIND(UUID() AS ?timenode) }", + "forcedBindings": { + "activities_graph":{ + "type": "uri", + "value": "http://vaimee.it/my2sec/activities" + }, + "usergraph": { + "type": "uri", + "value": "http://www.vaimee.it/defuser" + }, + "event_type": { + "type": "uri", + "value": "my2sec:windowEvent" + }, + "datetimestamp": { + "type": "literal", + "value": "2022-08-10T15:33:42.503000+00:00" + }, + "app": { + "type": "literal", + "value": "chrome.exe" + }, + "title": { + "type": "literal", + "value": "youtube" + }, + "activity_type": { + "type": "uri", + "value": "my2sec:developement" + }, + "task": { + "type": "literal", + "value": "WP2-IMPLEMENTAZIONE COMPONENTI" + }, + "duration": { + "type": "literal", + "value": "16.0" + } + } + }, + "REMOVE_VALIDATED_ACTIVITY":{ + "sparql":"DELETE {GRAPH ?activities_graph {?activity ?p ?o ; my2sec:hasTimeInterval ?d . ?d ?p1 ?o1} } WHERE{ GRAPH ?activities_graph {?activity ?p ?o ; my2sec:hasTimeInterval ?d . ?d ?p1 ?o1}}", + "forcedBindings": { + "activities_graph":{ + "type": "uri", + "value": "http://vaimee.it/my2sec/activities" + }, + "activity": { + "type": "uri", + "value": "urn:uuid:ActivityX" + } + } + }, + + "ADD_ACTIVITY":{ + "sparql":"INSERT {GRAPH {?b rdf:type my2sec:Activity ; my2sec:hasMember ?usergraph; rdf:type ?event_type; my2sec:nameApp ?app; my2sec:titleFile ?title; time:inXSDDateTimeStamp ?datetimestamp; my2sec:activityType ?activity_type; my2sec:taskTitle ?task; my2sec:hasTimeInterval ?timenode . ?timenode rdf:type time:Duration; time:unitType time:unitSecond ; time:numericDuration ?duration }} WHERE {BIND(UUID() AS ?b) BIND(UUID() AS ?timenode)}", + "forcedBindings": { + "usergraph": { + "type": "uri", + "value": "http://www.vaimee.it/my2sec/defuser@vaimee.it" + }, + "event_type": { + "type": "uri", + "value": "my2sec:windowEvent" + }, + "datetimestamp": { + "type": "literal", + "value": "2022-08-10T15:33:42.503000+00:00" + }, + "app": { + "type": "literal", + "value": "chrome.exe" + }, + "title": { + "type": "literal", + "value": "Portainer" + }, + "activity_type": { + "type": "uri", + "value": "my2sec:Developing" + }, + "task": { + "type": "literal", + "value": "WP2-IMPLEMENTAZIONE COMPONENTI" + }, + "duration": { + "type": "literal", + "value": "16.0" + } + } + }, + "REMOVE_ACTIVITY":{ + "sparql":"DELETE {GRAPH {?activity ?p ?o ; my2sec:hasTimeInterval ?d . ?d ?p1 ?o1} } WHERE{ GRAPH {?activity ?p ?o ; my2sec:hasTimeInterval ?d . ?d ?p1 ?o1}}", + "forcedBindings": { + "activity": { + "type": "uri", + "value": "urn:uuid:ActivityX" + } + } + }, + + + + + + "SEND_OP_MESSAGE":{ + "sparql":"INSERT { GRAPH ?usergraph {?b rdf:type my2sec:Message ; my2sec:messageValue ?msgvalue; my2sec:messageSource ?source ; time:inXSDDateTimeStamp ?msgtimestamp}} WHERE {BIND(UUID() AS ?b)} ", + "forcedBindings": { + "usergraph": { + "type": "uri", + "value": "http://www.vaimee.it/my2sec/admin@vaimee.it" + }, + "source": { + "type": "uri", + "value": "http://www.vaimee.it/sources/open-project" + }, + "msgtimestamp": { + "type": "literal", + "value": "2022-08-10T15:33:42.503000+00:00" + }, + "msgvalue": { + "type": "literal", + "value": "{}" + } + } + }, + "CREATE_PROJECTS_GRAPH":{ + "sparql":"CREATE GRAPH " + }, + "UPDATE_PROJECT":{ + "sparql":"WITH DELETE { ?projecturi rdf:type my2sec:Project; my2sec:projectId ?del_project_id; my2sec:projectIdentifier ?del_project_identifier } INSERT { ?projecturi rdf:type my2sec:Project; my2sec:projectId ?projectid; my2sec:projectIdentifier ?project_identifier } WHERE { OPTIONAL { ?projecturi rdf:type my2sec:Project; my2sec:projectId ?del_project_id; my2sec:projectIdentifier ?del_project_identifier}}", + "forcedBindings": { + "projecturi": { + "type": "uri", + "value": "http://www.vaimee.it/projects#demo-project" + }, + "projectid": { + "type": "literal", + "value": 1, + "datatype": "xsd:integer" + }, + "project_identifier": { + "type": "literal", + "value": "Demo Project" + } + } + }, + "ADD_TASK":{ + "sparql":"INSERT { GRAPH { ?b rdf:type my2sec:Task ; my2sec:hasProject ?projecturi ; my2sec:taskId ?task_id ; my2sec:taskTitle ?task_title ; my2sec:hasMember ?assignee ; my2sec:spentTime ?timenode . ?timenode rdf:type time:Duration; time:unitType time:unitHour ; time:numericDuration ?spent_time }} WHERE {BIND(UUID() AS ?b) BIND(UUID() AS ?timenode)}", + "forcedBindings": { + "projecturi": { + "type": "uri", + "value": "http://www.vaimee.it/projects#demo-project" + }, + "task_id": { + "type": "literal", + "value": 1, + "datatype": "xsd:integer" + }, + "task_title": { + "type": "uri", + "value": "ATaskTitle" + }, + "assignee": { + "type": "uri", + "value": "http://www.vaimee.it/members/gregorio.monari@gmail.com" + }, + "spent_time": { + "type": "literal", + "value": "PT0S" + } + } + }, + "PATCH_TASK":{ + "sparql":"DELETE { GRAPH { ?old_bnode rdf:type my2sec:Task; my2sec:hasProject ?old_project; my2sec:taskId ?task_id; my2sec:taskTitle ?old_task_title ; my2sec:hasMember ?old_member; my2sec:spentTime ?old_timenode . ?old_timenode rdf:type time:Duration; time:unitType time:unitHour ; time:numericDuration ?old_value }} INSERT { GRAPH { ?old_bnode rdf:type my2sec:Task ; my2sec:hasProject ?projecturi ; my2sec:taskId ?task_id; my2sec:taskTitle ?task_title; my2sec:hasMember ?assignee; my2sec:spentTime ?old_timenode . ?old_timenode rdf:type time:Duration; time:unitType time:unitHour ; time:numericDuration ?spent_time }} WHERE { GRAPH { OPTIONAL { ?old_bnode rdf:type my2sec:Task; my2sec:hasProject ?old_project; my2sec:taskId ?task_id; my2sec:taskTitle ?old_task_title ; my2sec:hasMember ?old_member; my2sec:spentTime ?old_timenode . ?old_timenode rdf:type time:Duration; time:unitType time:unitHour ; time:numericDuration ?old_value }}}", + "forcedBindings": { + "projecturi": { + "type": "uri", + "value": "http://www.vaimee.it/projects#demo-project" + }, + "task_id": { + "type": "literal", + "value": 1, + "datatype": "xsd:integer" + }, + "task_title": { + "type": "uri", + "value": "ATaskTitle" + }, + "assignee": { + "type": "uri", + "value": "http://www.vaimee.it/members/gregorio.monari@gmail.com" + }, + "spent_time": { + "type": "literal", + "value": "PT0S" + } + } + }, + "LOG_TIME":{ + "sparql":"INSERT {GRAPH { ?b rdf:type my2sec:Logtime; my2sec:hasMember ?usergraph; my2sec:hasTask ?task_uri; time:inXSDDateTimeStamp ?now; my2sec:hasTimeInterval _:d . _:d rdf:type time:Duration; time:unitType time:unitSecond ; time:numericDuration ?log_time }} WHERE{ BIND(now() as ?now) BIND(UUID() AS ?b) }", + "forcedBindings": { + "usergraph": { + "type": "uri", + "value": "http://www.vaimee.it/my2sec/defuser@vaimee.it" + }, + "task_uri": { + "type": "uri", + "value": "urn:id:1234" + }, + "log_time": { + "type": "literal", + "value": "2.5" + } + } + }, + + + + + + + "SEND_KEYCLOAK_MESSAGE":{ + "sparql":"WITH ?graph INSERT { ?b rdf:type mysec:Message ; my2sec:messageValue ?msgvalue; my2sec:messageSource ?source ; time:inXSDDateTimeStamp ?msgtimestamp } WHERE {BIND(UUID() AS ?b)}", + "forcedBindings": { + "graph": { + "type": "uri", + "value": "http://www.vaimee.it/my2sec/members" + }, + "source": { + "type": "uri", + "value": "http://www.vaimee.it/sources/keycloak" + }, + "msgtimestamp": { + "type": "literal", + "value": "2022-08-10T15:33:42.503000+00:00" + }, + "msgvalue": { + "type": "literal", + "value": "{}" + } + } + }, + "SET_SYNCHRONIZATION_FLAG":{ + "sparql":"INSERT {GRAPH {?flag rdf:type ?flag_type ; my2sec:hasMember ?usergraph ; time:inXSDDateTimeStamp ?now}} WHERE{BIND(now() as ?now) BIND(UUID() AS ?flag)}", + "forcedBindings": { + "flag_type": { + "type": "uri", + "value": "http://www.vaimee.it/my2sec/awproducerflag" + }, + "usergraph": { + "type": "uri", + "value": "http://www.vaimee.it/my2sec/admin@vaimee.it" + } + } + }, + "RESET_SYNCHRONIZATION_FLAG":{ + "sparql":"DELETE {GRAPH {?flag ?p ?o}} WHERE{GRAPH {?flag ?p ?o}}", + "forcedBindings": { + "flag": { + "type": "uri", + "value": "http://www.vaimee.it/my2sec/urn:id:1234" + } + } + }, + + + + + + + "ADD_ACTIVITY_TYPE":{ + "sparql":"INSERT{GRAPH { ?uuid rdf:type my2sec:ActivityType; rdf:type ?activity_type . }}WHERE{BIND(UUID() AS ?uuid)}", + "forcedBindings": { + "activity_type": { + "type": "uri", + "value": "my2sec:Developing" + } + } + }, + "DELETE_ACTIVITY_TYPE":{ + "sparql":"DELETE{ GRAPH { ?uuid rdf:type my2sec:ActivityType; ?p ?o . }}WHERE{ GRAPH { ?uuid rdf:type my2sec:ActivityType; ?p ?o . }}", + "forcedBindings": { + "uuid": { + "type": "uri", + "value": "urn:uri" + } + } + }, + "ADD_PROFESSION":{ + "sparql":"INSERT{ GRAPH { ?uuid rdf:type my2sec:Profession; rdf:type ?profession_type; my2sec:hasActivitiesGraph ?activities_graph; my2sec:hasEventsGraph ?events_graph; my2sec:hasAwMapperFlag ?awmapperFlag; my2sec:hasTrainingActivitiesFlag ?trainingActivitiesFlag; my2sec:hasValidatedActivitiesFlag ?validatedActivitiesFlag . }}WHERE{BIND(UUID() AS ?uuid)}", + "forcedBindings": { + "profession_type": { + "type": "uri", + "value": "my2sec:Developing" + }, + "activities_graph": { + "type": "uri", + "value": "http://vaimee.it/my2sec/activities" + }, + "events_graph": { + "type": "uri", + "value": "http://vaimee.it/my2sec/events" + }, + "awmapperFlag": { + "type": "uri", + "value": "http://www.vaimee.it/my2sec/awmapperflag" + }, + "trainingActivitiesFlag": { + "type": "uri", + "value": "http://www.vaimee.it/my2sec/trainingactivitiesflag" + }, + "validatedActivitiesFlag": { + "type": "uri", + "value": "http://www.vaimee.it/my2sec/validatedactivitiesflag" + } + } + }, + "DELETE_PROFESSION":{ + "sparql":"DELETE{ GRAPH { ?uuid rdf:type my2sec:Profession; ?p ?o . }}WHERE{ GRAPH { ?uuid rdf:type my2sec:Profession; ?p ?o . }}", + "forcedBindings": { + "uuid": { + "type": "uri", + "value": "urn:uri" + } + } + }, + "ADD_ACTIVITY_TYPE_LINK_TO_PROFESSION":{ + "sparql":"INSERT DATA{ GRAPH { ?profession_uuid my2sec:hasActivityType ?activity_type_uuid }}", + "forcedBindings": { + "profession_uuid": { + "type": "uri", + "value": "urn:uuid" + }, + "activity_type_uuid": { + "type": "uri", + "value": "urn:uuid" + } + } + }, + "REMOVE_ACTIVITY_TYPE_LINK_FROM_PROFESSION":{ + "sparql":"DELETE DATA{ GRAPH { ?profession_uuid my2sec:hasActivityType ?activity_type_uuid}}", + "forcedBindings": { + "profession_uuid": { + "type": "uri", + "value": "urn:uuid" + }, + "activity_type_uuid": { + "type": "uri", + "value": "urn:uuid" + } + } + }, + "ADD_PROFESSION_LINK_TO_USER":{ + "sparql":"DELETE{ GRAPH { ?usergraph my2sec:hasProfession ?old_profession_uuid }}INSERT{ GRAPH { ?usergraph my2sec:hasProfession ?profession_uuid }}WHERE{ GRAPH { OPTIONAL { ?usergraph my2sec:hasProfession ?old_profession_uuid }}}", + "forcedBindings": { + "usergraph": { + "type": "uri", + "value": "urn:uuid" + }, + "profession_uuid": { + "type": "uri", + "value": "urn:uuid" + } + } + }, + "DELETE_PROFESSION_LINK_FOR_USER":{ + "sparql":"DELETE{ GRAPH { ?usergraph my2sec:hasProfession ?profession_uuid }}WHERE{ GRAPH { ?usergraph my2sec:hasProfession ?profession_uuid }}", + "forcedBindings": { + "usergraph": { + "type": "uri", + "value": "urn:uuid" + }, + "profession_uuid": { + "type": "uri", + "value": "urn:uuid" + } + } + } + + }, + + + "queries": { + "ALL_USERNAMES": { + "sparql":"SELECT * WHERE { GRAPH { ?s my2sec:username ?o }}" + }, + "SINGLE_MESSAGE":{ + "sparql":"SELECT * WHERE {GRAPH ?user_graph {?bnode_label my2sec:messageValue ?json_message ; my2sec:messageSource ?source ;time:inXSDDateTimeStamp ?message_timestamp }}", + "forcedBindings": { + "user_graph":{ + "type": "uri", + "value": "http://www.vaimee.it/members/defuser@vaimee.it" + }, + "source": { + "type": "uri", + "value": "http://www.vaimee.it/sources/aw-watcher-window" + }, + "message_timestamp": { + "type": "literal", + "value": "22:05" + } + } + }, + "ALL_USER_DATA": { + "sparql":"SELECT * WHERE { GRAPH { ?s ?p ?o } }" + }, + "USER_EVENTS": { + "sparql":"SELECT * WHERE { GRAPH { ?nodeid rdf:type my2sec:Event; rdf:type ?event_type; my2sec:nameApp ?app; my2sec:titleFile ?title; time:inXSDDateTimeStamp ?timestamp; my2sec:activityType ?activity_type; my2sec:taskTitle ?task; my2sec:hasTimeInterval ?duration . FILTER (?event_type != my2sec:Event) } }" + }, + "USER_EVENTS_COUNT": { + "sparql":"SELECT (COUNT(?nodeid) AS ?nevents) WHERE { GRAPH ?usergraph { ?nodeid rdf:type my2sec:Event }}", + "forcedBindings": { + "usergraph": { + "type": "uri", + "value": "http://www.vaimee.it/my2sec/defuser@vaimee.it" + } + } + }, + "ALL_USERS_MESSAGES":{ + "sparql":"SELECT * WHERE { GRAPH ?message_graph {?b rdf:type my2sec:Message ; my2sec:hasMember ?usergraph ; my2sec:messageValue ?msgvalue; my2sec:messageSource ?source ; time:inXSDDateTimeStamp ?msgtimestamp }}", + "forcedBindings": { + "message_graph": { + "type": "uri", + "value": "http://www.vaimee.it/my2sec/messages/activitywatch" + } + } + }, + "ALL_USERS_EVENTS_BLAZEGRAPH":{ + "sparql":"SELECT * WHERE { GRAPH {?usergraph my2sec:username ?username_literal} GRAPH ?usergraph {?nodeid rdf:type my2sec:Event; rdf:type ?event_type; my2sec:nameApp ?app; my2sec:titleFile ?title; time:inXSDDateTimeStamp ?datetimestamp; my2sec:activityType ?activity_type; my2sec:hasTimeInterval ?duration . OPTIONAL { ?nodeid my2sec:taskTitle ?task} FILTER (?event_type != my2sec:Event) }}" + }, + + + + "ALL_USERS_TRAINING_EVENTS":{ + "sparql":"SELECT ?nodeid ?usergraph ?event_type ?app ?title ?datetimestamp ?duration ?task WHERE { GRAPH ?events_graph {?nodeid rdf:type my2sec:TrainingEvent ; my2sec:hasMember ?usergraph; rdf:type ?event_type; my2sec:nameApp ?app; my2sec:titleFile ?title; time:inXSDDateTimeStamp ?datetimestamp; my2sec:hasActivityType ?activity_type; my2sec:taskTitle ?task; my2sec:hasTimeInterval ?timenode . ?timenode rdf:type time:Duration; time:unitType time:unitSecond ; time:numericDuration ?duration . FILTER (?event_type != my2sec:TrainingEvent) }}", + "forcedBindings": { + "events_graph":{ + "type": "uri", + "value": "http://www.vaimee.it/my2sec/events" + } + } + }, + "ALL_USERS_VALIDATED_ACTIVITIES":{ + "sparql":"SELECT * WHERE { GRAPH ?activities_graph {?nodeid rdf:type my2sec:ValidatedActivity; my2sec:hasMember ?usergraph; rdf:type ?event_type; my2sec:nameApp ?app; my2sec:titleFile ?title; time:inXSDDateTimeStamp ?datetimestamp; my2sec:activityType ?activity_type; my2sec:hasTimeInterval ?timenode . ?timenode rdf:type time:Duration; time:unitType time:unitSecond ; time:numericDuration ?duration . OPTIONAL { ?nodeid my2sec:taskTitle ?task} FILTER (?event_type != my2sec:ValidatedActivity) }}", + "forcedBindings": { + "activities_graph":{ + "type": "uri", + "value": "http://vaimee.it/my2sec/activities" + } + } + }, + "ALL_USERS_TRAINING_ACTIVITIES":{ + "sparql":"SELECT * WHERE { GRAPH ?activities_graph {?nodeid rdf:type my2sec:TrainingActivity; my2sec:hasMember ?usergraph; rdf:type ?event_type; my2sec:nameApp ?app; my2sec:titleFile ?title; time:inXSDDateTimeStamp ?datetimestamp; my2sec:activityType ?activity_type; my2sec:hasTimeInterval ?timenode . ?timenode rdf:type time:Duration; time:unitType time:unitSecond ; time:numericDuration ?duration . OPTIONAL { ?nodeid my2sec:taskTitle ?task} FILTER (?event_type != my2sec:TrainingActivity) }}", + "forcedBindings": { + "activities_graph":{ + "type": "uri", + "value": "http://vaimee.it/my2sec/activities" + } + } + }, + "USER_TRAINING_ACTIVITIES":{ + "sparql":"SELECT * WHERE { GRAPH ?activities_graph {?nodeid rdf:type my2sec:TrainingActivity; my2sec:hasMember ?usergraph; rdf:type ?event_type; my2sec:nameApp ?app; my2sec:titleFile ?title; time:inXSDDateTimeStamp ?datetimestamp; my2sec:activityType ?activity_type; my2sec:hasTimeInterval ?timenode . ?timenode rdf:type time:Duration; time:unitType time:unitSecond ; time:numericDuration ?duration . OPTIONAL { ?nodeid my2sec:taskTitle ?task} FILTER (?event_type != my2sec:TrainingActivity) VALUES ?usergraph {?forceUserGraph} }}", + "forcedBindings": { + "activities_graph":{ + "type": "uri", + "value": "http://vaimee.it/my2sec/activities" + }, + "forceUserGraph": { + "type": "uri", + "value": "http://www.vaimee.it/my2sec/admin@vaimee.it" + } + } + }, + "ALL_USERS_ACTIVITIES":{ + "sparql":"SELECT * WHERE { GRAPH {?nodeid rdf:type my2sec:Activity; my2sec:hasMember ?usergraph; rdf:type ?event_type; my2sec:nameApp ?app; my2sec:titleFile ?title; time:inXSDDateTimeStamp ?datetimestamp; my2sec:activityType ?activity_type; my2sec:hasTimeInterval ?timenode . ?timenode rdf:type time:Duration; time:unitType time:unitSecond ; time:numericDuration ?duration . OPTIONAL { ?nodeid my2sec:taskTitle ?task} FILTER (?event_type != my2sec:Activity) }}" + }, + + + + "ALL_OP_MESSAGES":{ + "sparql":"SELECT * WHERE{ GRAPH ?usergraph { _:b my2sec:messageValue ?msgvalue; my2sec:messageSource ?source ; time:inXSDDateTimeStamp ?msgtimestamp . }}", + "forcedBindings": { + "usergraph": { + "type": "uri", + "value": "http://www.vaimee.it/my2sec/admin@vaimee.it" + }, + "source": { + "type": "uri", + "value": "http://www.vaimee.it/sources/open-project" + } + } + }, + "ALL_PROJECTS":{ + "sparql":"SELECT * WHERE {GRAPH { ?projecturi rdf:type my2sec:Project; my2sec:projectId ?project_id; my2sec:projectIdentifier ?project_identifier } }" + }, + "ALL_OP_TASKS":{ + "sparql":"SELECT * WHERE {GRAPH { ?bnode rdf:type my2sec:Task; my2sec:hasProject ?progetto; my2sec:taskId ?taskid; my2sec:taskTitle ?tasktitle; my2sec:hasMember ?assignee; my2sec:spentTime ?timenode . ?timenode rdf:type time:Duration; time:unitType time:unitHour ; time:numericDuration ?spent_time }}" + }, + "USER_TASKS":{ + "sparql":"SELECT * WHERE {GRAPH { ?bnode rdf:type my2sec:Task; my2sec:hasProject ?progetto; my2sec:taskId ?taskid; my2sec:taskTitle ?tasktitle; my2sec:hasMember ?assignee; my2sec:spentTime ?timenode . ?timenode rdf:type time:Duration; time:unitType time:unitHour ; time:numericDuration ?spent_time}}", + "forcedBindings": { + "assignee": { + "type": "uri", + "value": "http://www.vaimee.it/my2sec/admin@vaimee.it" + } + } + }, + "ALL_OP_TASKS_NO_SPENT_TIME":{ + "sparql":"SELECT * WHERE {GRAPH { ?bnode rdf:type my2sec:Task; my2sec:hasProject ?progetto; my2sec:taskId ?taskid; my2sec:taskTitle ?tasktitle; my2sec:hasMember ?assignee}}" + }, + "ALL_LOG_TIMES":{ + "sparql":"SELECT * WHERE { GRAPH { ?b rdf:type my2sec:Logtime; my2sec:hasMember ?usergraph; my2sec:hasTask ?task_uri; time:inXSDDateTimeStamp ?now; my2sec:hasTimeInterval _:d . _:d rdf:type time:Duration; time:unitType ?unit_type ; time:numericDuration ?log_time }}" + }, + "USER_LOG_TIMES":{ + "sparql":"SELECT * WHERE { GRAPH { ?b rdf:type my2sec:Logtime; my2sec:hasMember ?usergraph; my2sec:hasTask ?task_uri; time:inXSDDateTimeStamp ?now; my2sec:hasTimeInterval _:d . _:d rdf:type time:Duration; time:unitType ?unit_type ; time:numericDuration ?log_time }}", + "forcedBindings": { + "usergraph": { + "type": "uri", + "value": "http://www.vaimee.it/my2sec/admin@vaimee.it" + } + } + }, + "GET_SYNCHRONIZATION_FLAG":{ + "sparql":"SELECT * WHERE {GRAPH {?flag rdf:type ?flag_type ; my2sec:hasMember ?usergraph ; time:inXSDDateTimeStamp ?timestamp}}", + "forcedBindings": { + "flag_type": { + "type": "uri", + "value": "http://www.vaimee.it/my2sec/production_finished_flag" + } + } + }, + "GET_ALL_GRAPHS_COUNT":{ + "sparql":"SELECT ?g (COUNT(?s) AS ?ntriples) WHERE {GRAPH ?g { ?s ?p ?o }}GROUP BY ?g" + }, + "GET_USER_SYNCHRONIZATION_FLAG":{ + "sparql":"SELECT * WHERE {GRAPH {?flag rdf:type ?flag_type ; my2sec:hasMember ?usergraph ; time:inXSDDateTimeStamp ?timestamp}}", + "forcedBindings": { + "flag_type": { + "type": "uri", + "value": "http://www.vaimee.it/my2sec/production_finished_flag" + }, + "usergraph": { + "type": "uri", + "value": "http://www.vaimee.it/my2sec/defuser@vaimee.it" + } + } + }, + + + "ALL_ACTIVITY_TYPES":{ + "sparql":"SELECT * WHERE{ GRAPH { ?uuid rdf:type my2sec:ActivityType; rdf:type ?activity_type . FILTER (?activity_type != my2sec:ActivityType) }}" + }, + "ALL_PROFESSION_TYPES":{ + "sparql": "SELECT * WHERE{ GRAPH { ?uuid rdf:type my2sec:Profession; rdf:type ?profession_type; my2sec:hasActivitiesGraph ?activities_graph; my2sec:hasEventsGraph ?events_graph; my2sec:hasAwMapperFlag ?awmapperFlag; my2sec:hasTrainingActivitiesFlag ?trainingActivitiesFlag; my2sec:hasValidatedActivitiesFlag ?validatedActivitiesFlag . FILTER (?profession_type != my2sec:Profession)}}" + }, + "PROFESSION_INFO":{ + "sparql":"SELECT * WHERE{ GRAPH { ?uuid rdf:type my2sec:Profession; rdf:type ?profession_type; my2sec:hasActivitiesGraph ?activities_graph; my2sec:hasEventsGraph ?events_graph; my2sec:hasAwMapperFlag ?awmapperFlag; my2sec:hasTrainingActivitiesFlag ?trainingActivitiesFlag; my2sec:hasValidatedActivitiesFlag ?validatedActivitiesFlag; my2sec:hasActivityType ?activity_type_uuid . FILTER (?profession_type != my2sec:Profession) }GRAPH { ?activity_type_uuid rdf:type my2sec:ActivityType; rdf:type ?activity_type . FILTER (?activity_type != my2sec:ActivityType)}}", + "forcedBindings": { + "uuid": { + "type": "uri", + "value": "urn:uri" + } + } + }, + "OVERRIDE_PROFESSION_INFO":{ + "sparql":"SELECT * WHERE{ GRAPH { ?uuid rdf:type my2sec:Profession; rdf:type ?profession_type; my2sec:hasActivitiesGraph ?activities_graph; my2sec:hasEventsGraph ?events_graph; my2sec:hasAwMapperFlag ?awmapperFlag; my2sec:hasTrainingActivitiesFlag ?trainingActivitiesFlag; my2sec:hasValidatedActivitiesFlag ?validatedActivitiesFlag; my2sec:hasActivityType ?activity_type_uuid . FILTER (?profession_type != my2sec:Profession) }GRAPH { ?activity_type_uuid rdf:type my2sec:ActivityType; rdf:type ?activity_type . FILTER (?activity_type != my2sec:ActivityType)}}", + "forcedBindings": { + "uuid": { + "type": "uri", + "value": "urn:uuid:abcd" + } + }, + "host":"dld.arces.unibo.it", + "sparql11protocol": { + "protocol": "http", + "port": 8550 + }, + "sparql11seprotocol": { + "protocol": "ws", + "availableProtocols": { + "ws": { + "port": 9550, + "path": "/subscribe" + }, + "wss": { + "port": 443, + "path": "/subscribe" + } + } + } + }, + "USER_PROFESSION_INFO":{ + "sparql":"SELECT * WHERE{GRAPH { ?usergraph my2sec:hasProfession ?profession_uuid }GRAPH { ?profession_uuid rdf:type my2sec:Profession; rdf:type ?profession_type; my2sec:hasActivitiesGraph ?activities_graph; my2sec:hasEventsGraph ?events_graph; my2sec:hasAwMapperFlag ?awmapperFlag; my2sec:hasTrainingActivitiesFlag ?trainingActivitiesFlag; my2sec:hasValidatedActivitiesFlag ?validatedActivitiesFlag . FILTER (?profession_type != my2sec:Profession)}}", + "forcedBindings": { + "usergraph": { + "type": "uri", + "value": "http://www.vaimee.it/my2sec/defuser@vaimee.it" + } + } + }, + "ALL_USERS_LINKS":{ + "sparql":"SELECT * WHERE{GRAPH {?usergraph my2sec:hasProfession ?profession_uuid}}", + "forcedBindings": { + "usergraph": { + "type": "uri", + "value": "http://www.vaimee.it/my2sec/defuser@vaimee.it" + } + } + }, + "USER_ACTIVITY_TYPES":{ + "sparql":"SELECT * WHERE{GRAPH { ?usergraph my2sec:hasProfession ?profession_uuid }GRAPH { ?profession_uuid rdf:type my2sec:Profession; rdf:type ?profession_type; my2sec:hasActivityType ?activity_type_uuid . FILTER (?profession_type != my2sec:Profession)}GRAPH { ?activity_type_uuid rdf:type my2sec:ActivityType; rdf:type ?activity_type . FILTER (?activity_type != my2sec:ActivityType)}}", + "forcedBindings": { + "usergraph": { + "type": "uri", + "value": "http://www.vaimee.it/my2sec/defuser@vaimee.it" + } + } + }, + "OVERRIDE_USER_ACTIVITY_TYPES":{ + "sparql":"SELECT * WHERE{GRAPH { ?usergraph my2sec:hasProfession ?profession_uuid }GRAPH { ?profession_uuid rdf:type my2sec:Profession; rdf:type ?profession_type; my2sec:hasActivityType ?activity_type_uuid . FILTER (?profession_type != my2sec:Profession)}GRAPH { ?activity_type_uuid rdf:type my2sec:ActivityType; rdf:type ?activity_type . FILTER (?activity_type != my2sec:ActivityType)}}", + "forcedBindings": { + "usergraph": { + "type": "uri", + "value": "http://www.vaimee.it/my2sec/defuser@vaimee.it" + } + }, + "host":"dld.arces.unibo.it", + "sparql11protocol": { + "protocol": "http", + "port": 8550 + }, + "sparql11seprotocol": { + "protocol": "ws", + "availableProtocols": { + "ws": { + "port": 9550, + "path": "/subscribe" + }, + "wss": { + "port": 443, + "path": "/subscribe" + } + } + } + }, + "ALL_USERS_PROFESSIONS":{ + "sparql":"SELECT * WHERE{ GRAPH { ?usergraph my2sec:hasProfession ?profession_uuid } GRAPH { ?profession_uuid rdf:type my2sec:Profession; rdf:type ?profession_type; my2sec:hasActivitiesGraph ?activities_graph; my2sec:hasEventsGraph ?events_graph; my2sec:hasAwMapperFlag ?awmapperFlag; my2sec:hasTrainingActivitiesFlag ?trainingActivitiesFlag; my2sec:hasValidatedActivitiesFlag ?validatedActivitiesFlag . FILTER (?profession_type != my2sec:Profession)}}" + }, + "OVERRIDE_ALL_USERS_PROFESSIONS":{ + "sparql":"SELECT * WHERE{ GRAPH { ?usergraph my2sec:hasProfession ?profession_uuid } GRAPH { ?profession_uuid rdf:type my2sec:Profession; rdf:type ?profession_type; my2sec:hasActivitiesGraph ?activities_graph; my2sec:hasEventsGraph ?events_graph; my2sec:hasAwMapperFlag ?awmapperFlag; my2sec:hasTrainingActivitiesFlag ?trainingActivitiesFlag; my2sec:hasValidatedActivitiesFlag ?validatedActivitiesFlag . FILTER (?profession_type != my2sec:Profession)}}", + "host":"dld.arces.unibo.it", + "sparql11protocol": { + "protocol": "http", + "port": 8550 + }, + "sparql11seprotocol": { + "protocol": "ws", + "availableProtocols": { + "ws": { + "port": 9550, + "path": "/subscribe" + }, + "wss": { + "port": 443, + "path": "/subscribe" + } + } + } + } + }, + + + "backup":{ + "ALL_USERS_EVENTS":{ + "sparql":"SELECT * WHERE { GRAPH {?nodeid rdf:type my2sec:Event; my2sec:hasMember ?usergraph; rdf:type ?event_type; my2sec:nameApp ?app; my2sec:titleFile ?title; time:inXSDDateTimeStamp ?datetimestamp; FILTER (?event_type != my2sec:Event) }}" + }, + + + "ALL_USERS_MESSAGES_OLD":{ + "sparql":"SELECT * WHERE { GRAPH ?message_graph {?bnode_label my2sec:messageUser ?usergraph; my2sec:messageValue ?json_message ; my2sec:messageSource ?source ;time:inXSDDateTimeStamp ?message_timestamp }}", + "forcedBindings": { + "message_graph": { + "type": "uri", + "value": "http://www.vaimee.it/my2sec/messages/activitywatch" + }, + "source": { + "type": "uri", + "value": "http://www.vaimee.it/sources/aw-watcher-window" + } + } + }, + "ADD_TRAINING_EVENT_OLD":{ + "sparql":"INSERT {GRAPH { ?b rdf:type my2sec:TrainingEvent ; my2sec:hasMember ?usergraph; rdf:type ?event_type; my2sec:nameApp ?app; my2sec:titleFile ?title; time:inXSDDateTimeStamp ?datetimestamp; my2sec:hasActivityType ?activity_type; my2sec:taskTitle ?task; my2sec:hasTimeInterval ?timenode . ?timenode rdf:type time:Duration; time:unitType time:unitSecond ; time:numericDuration ?duration }} WHERE {BIND(UUID() AS ?b) BIND(UUID() AS ?timenode) }", + "forcedBindings": { + "usergraph": { + "type": "uri", + "value": "http://www.vaimee.it/my2sec/defuser@vaimee.it" + }, + "event_type": { + "type": "uri", + "value": "my2sec:WindowEvent" + }, + "datetimestamp": { + "type": "literal", + "value": "2022-08-10T15:33:42.503000+00:00" + }, + "app": { + "type": "literal", + "value": "chrome.exe" + }, + "title": { + "type": "literal", + "value": "Portainer" + }, + "activity_type": { + "type": "uri", + "value": "my2sec:Developing" + }, + "task": { + "type": "literal", + "value": "WP2-IMPLEMENTAZIONE COMPONENTI" + }, + "duration": { + "type": "literal", + "value": "16.0" + } + } + }, + "ADD_EVENT":{ + "sparql":"INSERT {GRAPH { ?b rdf:type my2sec:Event ; my2sec:hasMember ?usergraph; rdf:type ?event_type; my2sec:nameApp ?app; my2sec:titleFile ?title; time:inXSDDateTimeStamp ?datetimestamp}} WHERE {BIND(UUID() AS ?b)}", + "forcedBindings": { + "usergraph": { + "type": "uri", + "value": "http://www.vaimee.it/my2sec/defuser@vaimee.it" + }, + "event_type": { + "type": "uri", + "value": "my2sec:WindowEvent" + }, + "datetimestamp": { + "type": "literal", + "value": "2022-08-10T15:33:42.503000+00:00" + }, + "app": { + "type": "literal", + "value": "chrome.exe" + }, + "title": { + "type": "literal", + "value": "youtube" + } + } + }, + "REMOVE_EVENT":{ + "sparql":"DELETE {GRAPH {?event ?p ?o} } WHERE{ GRAPH { ?event ?p ?o }}", + "forcedBindings": { + "event": { + "type": "uri", + "value": "urn:uuid:EventX" + } + } + }, + "REMOVE_TRAINING_EVENT_OLD":{ + "sparql":"DELETE {GRAPH {?event ?p ?o ; my2sec:hasTimeInterval ?d . ?d ?p1 ?o1 } } WHERE{ GRAPH {?event ?p ?o ; my2sec:hasTimeInterval ?d . ?d ?p1 ?o1 }}", + "forcedBindings": { + "event": { + "type": "uri", + "value": "urn:uuid:EventX" + } + } + }, + "OLD_REMOVE_ACTIVITY":{ + "sparql":"DELETE{ GRAPH { ?bnode rdf:type my2sec:Activity; my2sec:hasMember ?usergraph; rdf:type ?event_type; my2sec:nameApp ?app; my2sec:titleFile ?title; time:inXSDDateTimeStamp ?datetimestamp; my2sec:activityType ?activity_type; my2sec:taskTitle ?task; my2sec:hasTimeInterval ?d . ?d rdf:type time:Duration; time:unitType time:unitSecond ; time:numericDuration ?duration }} WHERE{ GRAPH { ?bnode rdf:type my2sec:Activity; my2sec:hasMember ?usergraph; rdf:type ?event_type; my2sec:nameApp ?app; my2sec:titleFile ?title; time:inXSDDateTimeStamp ?datetimestamp; my2sec:activityType ?activity_type; my2sec:taskTitle ?task; my2sec:hasTimeInterval ?d . ?d rdf:type time:Duration; time:unitType time:unitSecond ; time:numericDuration ?duration }}", + "forcedBindings": { + "usergraph": { + "type": "uri", + "value": "" + }, + "event_type": { + "type": "uri", + "value": "my2sec:windowEvent" + }, + "datetimestamp": { + "type": "literal", + "value": "2022-08-10T15:33:42.503000+00:00" + }, + "app": { + "type": "literal", + "value": "chrome.exe" + }, + "title": { + "type": "literal", + "value": "youtube" + }, + "activity_type": { + "type": "uri", + "value": "my2sec:developement" + }, + "task": { + "type": "literal", + "value": "WP2-IMPLEMENTAZIONE COMPONENTI" + }, + "duration": { + "type": "literal", + "value": "16.0" + } + } + }, + "UPDATE_TASK_OLD":{ + "sparql":"DELETE { GRAPH ?graph { ?old_bnode rdf:type my2sec:Task; my2sec:hasProject ?old_project; my2sec:taskId ?task_id; my2sec:taskTitle ?old_task_title ; my2sec:hasMember ?old_member; my2sec:spentTime ?old_timenode . ?old_timenode rdf:type time:Duration; time:unitType time:unitHour ; time:numericDuration ?old_value}} INSERT { GRAPH ?graph { _:bnode rdf:type my2sec:Task ; my2sec:hasProject ?projecturi ; my2sec:taskId ?task_id; my2sec:taskTitle ?task_title; my2sec:hasMember ?assignee; my2sec:spentTime ?timenode . ?timenode rdf:type time:Duration; time:unitType time:unitHour ; time:numericDuration ?old_value }} WHERE { GRAPH ?graph { OPTIONAL { ?old_bnode rdf:type my2sec:Task; my2sec:hasProject ?old_project; my2sec:taskId ?task_id; my2sec:taskTitle ?old_task_title ; my2sec:Member ?old_member; my2sec:spentTime ?old_timenode . ?old_timenode rdf:type time:Duration; time:unitType time:unitHour ; time:numericDuration ?old_value }} BIND(UUID() AS ?timenode)}", + "forcedBindings": { + "graph": { + "type": "uri", + "value": "http://www.vaimee.it/projects#" + }, + "projecturi": { + "type": "uri", + "value": "http://www.vaimee.it/projects#demo-project" + }, + "task_id": { + "type": "literal", + "value": 1, + "datatype": "xsd:integer" + }, + "task_title": { + "type": "literal", + "value": "ATaskTitle" + }, + "assignee": { + "type": "uri", + "value": "http://www.vaimee.it/members/gregorio.monari@gmail.com" + }, + "spent_time": { + "type": "literal", + "value": "15.50", + "datatype": "xsd:decimal" + } + } + }, + "ADD_TRAINING_ACTIVITY_OLD":{ + "sparql":"INSERT {GRAPH {?b rdf:type my2sec:TrainingActivity ; my2sec:hasMember ?usergraph; rdf:type ?event_type; my2sec:nameApp ?app; my2sec:titleFile ?title; time:inXSDDateTimeStamp ?datetimestamp; my2sec:activityType ?activity_type; my2sec:taskTitle ?task; my2sec:hasTimeInterval ?timenode . ?timenode rdf:type time:Duration; time:unitType time:unitSecond ; time:numericDuration ?duration }} WHERE {BIND(UUID() AS ?b) BIND(UUID() AS ?timenode)}", + "forcedBindings": { + "usergraph": { + "type": "uri", + "value": "http://www.vaimee.it/defuser" + }, + "event_type": { + "type": "uri", + "value": "my2sec:windowEvent" + }, + "datetimestamp": { + "type": "literal", + "value": "2022-08-10T15:33:42.503000+00:00" + }, + "app": { + "type": "literal", + "value": "chrome.exe" + }, + "title": { + "type": "literal", + "value": "youtube" + }, + "activity_type": { + "type": "uri", + "value": "my2sec:developement" + }, + "task": { + "type": "literal", + "value": "WP2-IMPLEMENTAZIONE COMPONENTI" + }, + "duration": { + "type": "literal", + "value": "16.0" + } + } + }, + "REMOVE_TRAINING_ACTIVITY_OLD":{ + "sparql":"DELETE {GRAPH {?activity ?p ?o ; my2sec:hasTimeInterval ?d . ?d ?p1 ?o1} } WHERE{ GRAPH {?activity ?p ?o ; my2sec:hasTimeInterval ?d . ?d ?p1 ?o1}}", + "forcedBindings": { + "activity": { + "type": "uri", + "value": "urn:uuid:ActivityX" + } + } + }, + + "ADD_VALIDATED_ACTIVITY_OLD":{ + "sparql":"INSERT {GRAPH {?b rdf:type my2sec:ValidatedActivity ; my2sec:hasMember ?usergraph; rdf:type ?event_type; my2sec:nameApp ?app; my2sec:titleFile ?title; time:inXSDDateTimeStamp ?datetimestamp; my2sec:activityType ?activity_type; my2sec:taskTitle ?task; my2sec:hasTimeInterval ?timenode . ?timenode rdf:type time:Duration; time:unitType time:unitSecond ; time:numericDuration ?duration }} WHERE {BIND(UUID() AS ?b) BIND(UUID() AS ?timenode) }", + "forcedBindings": { + "usergraph": { + "type": "uri", + "value": "http://www.vaimee.it/defuser" + }, + "event_type": { + "type": "uri", + "value": "my2sec:windowEvent" + }, + "datetimestamp": { + "type": "literal", + "value": "2022-08-10T15:33:42.503000+00:00" + }, + "app": { + "type": "literal", + "value": "chrome.exe" + }, + "title": { + "type": "literal", + "value": "youtube" + }, + "activity_type": { + "type": "uri", + "value": "my2sec:developement" + }, + "task": { + "type": "literal", + "value": "WP2-IMPLEMENTAZIONE COMPONENTI" + }, + "duration": { + "type": "literal", + "value": "16.0" + } + } + }, + "REMOVE_VALIDATED_ACTIVITY_OLD":{ + "sparql":"DELETE {GRAPH {?activity ?p ?o ; my2sec:hasTimeInterval ?d . ?d ?p1 ?o1} } WHERE{ GRAPH {?activity ?p ?o ; my2sec:hasTimeInterval ?d . ?d ?p1 ?o1}}", + "forcedBindings": { + "activity": { + "type": "uri", + "value": "urn:uuid:ActivityX" + } + } + } + } + +} diff --git a/2_PAC/runPacApp.js b/2_PAC/runPacApp.js index a793dc2f..b127c540 100644 --- a/2_PAC/runPacApp.js +++ b/2_PAC/runPacApp.js @@ -22,6 +22,7 @@ const ProfessionInfoConsumer= require("./core/Pattern/My2Sec/ProfessionInfoConsu const MongoDbMessagesTester=require("./Tests/My2Sec/MongoDbMessagesTester") const MongoTestMaster = require("./Tests/My2Sec/MongoTestMaster.js") const MongoAtAggregatorTester = require("./Tests/My2Sec/MongoAtAggregatorTester") +const TasksDiagnostics = require("./Apps/My2Sec/TasksDiagnostics") jsap={};//GLOBAL /*############################################################## # MAIN INTERFACE OF PAC FACTORY RELOADED, CALL START METHOD HERE @@ -151,7 +152,10 @@ switch (arguments[0]) { break; case "MongoAtAggregatorTester": initMongoAtAggregatorTester(arguments.slice(1)) - break; + break; + case "TasksDiagnostics": + initTasksDiagnostics(arguments.slice(1)) + break; case "help": showHelp() break; @@ -162,6 +166,11 @@ switch (arguments[0]) { } } +function initTasksDiagnostics(args){ + var pac=new TasksDiagnostics(jsap) + pac.start() +} + function initProfessionInfoConsumer(args){ var consumer=new ProfessionInfoConsumer(jsap) if(args[0]=="--test"){