From ea934421505f9349b15545e8be5c2e8198eb9b92 Mon Sep 17 00:00:00 2001 From: mimic Date: Sun, 3 Mar 2019 11:42:44 +0100 Subject: [PATCH] new version --- .idea/.name | 1 + .idea/compiler.xml | 27 + .idea/encodings.xml | 12 + ...__ch_qos_logback_logback_classic_1_1_2.xml | 13 + ...__ch_qos_logback_logback_classic_1_1_7.xml | 13 + ...__ch_qos_logback_logback_classic_1_2_3.xml | 13 + ...ven__ch_qos_logback_logback_core_1_1_2.xml | 13 + ...ven__ch_qos_logback_logback_core_1_1_7.xml | 13 + ...ven__ch_qos_logback_logback_core_1_2_3.xml | 13 + ...thub_mpkorstanje_simmetrics_core_3_0_3.xml | 13 + ..._com_google_code_findbugs_jsr305_1_3_9.xml | 13 + .../Maven__com_google_code_gson_gson_2_3.xml | 13 + .../Maven__com_google_guava_guava_11_0_2.xml | 13 + .../Maven__com_google_guava_guava_18_0.xml | 13 + .../Maven__com_nanohttpd_nanohttpd_2_1_1.xml | 13 + ...om_nanohttpd_nanohttpd_webserver_2_1_1.xml | 13 + .../Maven__com_rabbitmq_amqp_client_4_0_0.xml | 13 + .../Maven__com_sparkjava_spark_core_2_6_0.xml | 13 + ...m_typesafe_akka_akka_actor_2_11_2_4_11.xml | 13 + .../Maven__com_typesafe_config_1_3_0.xml | 13 + ...aven__commons_codec_commons_codec_1_10.xml | 13 + ...Maven__commons_codec_commons_codec_1_9.xml | 13 + .idea/libraries/Maven__dom4j_dom4j_1_6_1.xml | 13 + ..._javax_servlet_javax_servlet_api_3_1_0.xml | 13 + .idea/libraries/Maven__junit_junit_3_8_1.xml | 13 + .idea/libraries/Maven__junit_junit_4_11.xml | 13 + .idea/libraries/Maven__junit_junit_4_12.xml | 13 + .idea/libraries/Maven__log4j_log4j_1_2_14.xml | 13 + .../Maven__net_sf_trove4j_trove4j_3_0_3.xml | 13 + ...__net_sourceforge_jexcelapi_jxl_2_6_12.xml | 13 + ...__org_apache_commons_commons_lang3_3_1.xml | 13 + ...__org_apache_commons_commons_lang3_3_7.xml | 13 + ...org_apache_commons_commons_pool2_2_4_2.xml | 13 + ...n__org_apache_commons_commons_text_1_3.xml | 13 + .../Maven__org_apache_poi_poi_3_12.xml | 13 + .../Maven__org_apache_poi_poi_ooxml_3_12.xml | 13 + ..._org_apache_poi_poi_ooxml_schemas_3_12.xml | 13 + ...en__org_apache_xmlbeans_xmlbeans_2_6_0.xml | 13 + ...e_core_resources_3_10_0_v20150423_0755.xml | 13 + ...ore_contenttype_3_4_200_v20140207_1251.xml | 13 + ...eclipse_core_jobs_3_6_0_v20140424_0053.xml | 13 + ...pse_core_runtime_3_10_0_v20140318_2214.xml | 13 + ...pse_equinox_app_1_3_200_v20130910_1609.xml | 13 + ..._equinox_common_3_6_200_v20130402_1505.xml | 13 + ...nox_preferences_3_5_200_v20140224_1527.xml | 13 + ...quinox_registry_3_5_400_v20140428_1507.xml | 13 + ...pse_jetty_jetty_client_9_4_4_v20170414.xml | 13 + ...lipse_jetty_jetty_http_9_4_4_v20170414.xml | 13 + ...eclipse_jetty_jetty_io_9_4_4_v20170414.xml | 13 + ...e_jetty_jetty_security_9_4_4_v20170414.xml | 13 + ...pse_jetty_jetty_server_9_4_4_v20170414.xml | 13 + ...se_jetty_jetty_servlet_9_4_4_v20170414.xml | 13 + ...lipse_jetty_jetty_util_9_4_4_v20170414.xml | 13 + ...pse_jetty_jetty_webapp_9_4_4_v20170414.xml | 13 + ...clipse_jetty_jetty_xml_9_4_4_v20170414.xml | 13 + ...ebsocket_websocket_api_9_4_4_v20170414.xml | 13 + ...ocket_websocket_client_9_4_4_v20170414.xml | 13 + ...ocket_websocket_common_9_4_4_v20170414.xml | 13 + ...ocket_websocket_server_9_4_4_v20170414.xml | 13 + ...cket_websocket_servlet_9_4_4_v20170414.xml | 13 + ...org_eclipse_osgi_3_10_0_v20140606_1445.xml | 13 + ...eclipse_jdt_core_3_12_2_v20161117_1814.xml | 13 + .../Maven__org_hamcrest_hamcrest_core_1_3.xml | 13 + ...ven__org_javassist_javassist_3_16_1_GA.xml | 13 + .../Maven__org_javatuples_javatuples_1_2.xml | 13 + ..._org_reflections_reflections_0_9_9_RC1.xml | 13 + ...Maven__org_rendersnake_rendersnake_1_8.xml | 13 + ..._modules_scala_java8_compat_2_11_0_7_0.xml | 13 + ...n__org_scala_lang_scala_library_2_11_8.xml | 13 + .../Maven__org_slf4j_slf4j_api_1_7_13.xml | 13 + .../Maven__org_slf4j_slf4j_api_1_7_21.xml | 13 + .../Maven__org_slf4j_slf4j_api_1_7_25.xml | 13 + .../Maven__org_slf4j_slf4j_api_1_7_7.xml | 13 + .../Maven__redis_clients_jedis_2_8_1.xml | 13 + .../libraries/Maven__stax_stax_api_1_0_1.xml | 13 + .../Maven__xml_apis_xml_apis_1_0_b2.xml | 13 + .idea/misc.xml | 15 + .idea/modules.xml | 14 + .idea/vcs.xml | 8 + .idea/workspace.xml | 1218 +++++++++++++++++ FixPatternMiner.iml | 21 +- difffile | 210 +++ pom.xml | 12 +- .../edu/lu/uni/serval/fixminer/Launcher.java | 12 +- .../fixminer/akka/compare/AkkaTreeParser.java | 3 +- .../serval/fixminer/akka/compare/Compare.java | 9 +- .../fixminer/akka/compare/CompareTrees.java | 197 +++ .../fixminer/akka/ediff/EDiffHunkParser.java | 78 +- .../akka/ediff/HierarchicalActionSet.java | 2 +- .../serval/fixminer/jobs/AkkaTreeLoader.java | 82 +- .../serval/fixminer/jobs/EnhancedASTDiff.java | 18 +- .../serval/fixminer/jobs/ImportPairs2DB.java | 45 +- .../jobs/MultiThreadTreeLoaderCluster.java | 127 +- .../fixminer/jobs/StoreEDiffInCache.java | 71 +- .../lu/uni/serval/utils/ClusterToPattern.java | 71 + .../edu/lu/uni/serval/utils/EDiffHelper.java | 157 ++- 96 files changed, 3169 insertions(+), 190 deletions(-) create mode 100644 .idea/.name create mode 100644 .idea/compiler.xml create mode 100644 .idea/encodings.xml create mode 100644 .idea/libraries/Maven__ch_qos_logback_logback_classic_1_1_2.xml create mode 100644 .idea/libraries/Maven__ch_qos_logback_logback_classic_1_1_7.xml create mode 100644 .idea/libraries/Maven__ch_qos_logback_logback_classic_1_2_3.xml create mode 100644 .idea/libraries/Maven__ch_qos_logback_logback_core_1_1_2.xml create mode 100644 .idea/libraries/Maven__ch_qos_logback_logback_core_1_1_7.xml create mode 100644 .idea/libraries/Maven__ch_qos_logback_logback_core_1_2_3.xml create mode 100644 .idea/libraries/Maven__com_github_mpkorstanje_simmetrics_core_3_0_3.xml create mode 100644 .idea/libraries/Maven__com_google_code_findbugs_jsr305_1_3_9.xml create mode 100644 .idea/libraries/Maven__com_google_code_gson_gson_2_3.xml create mode 100644 .idea/libraries/Maven__com_google_guava_guava_11_0_2.xml create mode 100644 .idea/libraries/Maven__com_google_guava_guava_18_0.xml create mode 100644 .idea/libraries/Maven__com_nanohttpd_nanohttpd_2_1_1.xml create mode 100644 .idea/libraries/Maven__com_nanohttpd_nanohttpd_webserver_2_1_1.xml create mode 100644 .idea/libraries/Maven__com_rabbitmq_amqp_client_4_0_0.xml create mode 100644 .idea/libraries/Maven__com_sparkjava_spark_core_2_6_0.xml create mode 100644 .idea/libraries/Maven__com_typesafe_akka_akka_actor_2_11_2_4_11.xml create mode 100644 .idea/libraries/Maven__com_typesafe_config_1_3_0.xml create mode 100644 .idea/libraries/Maven__commons_codec_commons_codec_1_10.xml create mode 100644 .idea/libraries/Maven__commons_codec_commons_codec_1_9.xml create mode 100644 .idea/libraries/Maven__dom4j_dom4j_1_6_1.xml create mode 100644 .idea/libraries/Maven__javax_servlet_javax_servlet_api_3_1_0.xml create mode 100644 .idea/libraries/Maven__junit_junit_3_8_1.xml create mode 100644 .idea/libraries/Maven__junit_junit_4_11.xml create mode 100644 .idea/libraries/Maven__junit_junit_4_12.xml create mode 100644 .idea/libraries/Maven__log4j_log4j_1_2_14.xml create mode 100644 .idea/libraries/Maven__net_sf_trove4j_trove4j_3_0_3.xml create mode 100644 .idea/libraries/Maven__net_sourceforge_jexcelapi_jxl_2_6_12.xml create mode 100644 .idea/libraries/Maven__org_apache_commons_commons_lang3_3_1.xml create mode 100644 .idea/libraries/Maven__org_apache_commons_commons_lang3_3_7.xml create mode 100644 .idea/libraries/Maven__org_apache_commons_commons_pool2_2_4_2.xml create mode 100644 .idea/libraries/Maven__org_apache_commons_commons_text_1_3.xml create mode 100644 .idea/libraries/Maven__org_apache_poi_poi_3_12.xml create mode 100644 .idea/libraries/Maven__org_apache_poi_poi_ooxml_3_12.xml create mode 100644 .idea/libraries/Maven__org_apache_poi_poi_ooxml_schemas_3_12.xml create mode 100644 .idea/libraries/Maven__org_apache_xmlbeans_xmlbeans_2_6_0.xml create mode 100644 .idea/libraries/Maven__org_eclipse_birt_runtime_org_eclipse_core_resources_3_10_0_v20150423_0755.xml create mode 100644 .idea/libraries/Maven__org_eclipse_core_contenttype_3_4_200_v20140207_1251.xml create mode 100644 .idea/libraries/Maven__org_eclipse_core_jobs_3_6_0_v20140424_0053.xml create mode 100644 .idea/libraries/Maven__org_eclipse_core_runtime_3_10_0_v20140318_2214.xml create mode 100644 .idea/libraries/Maven__org_eclipse_equinox_app_1_3_200_v20130910_1609.xml create mode 100644 .idea/libraries/Maven__org_eclipse_equinox_common_3_6_200_v20130402_1505.xml create mode 100644 .idea/libraries/Maven__org_eclipse_equinox_preferences_3_5_200_v20140224_1527.xml create mode 100644 .idea/libraries/Maven__org_eclipse_equinox_registry_3_5_400_v20140428_1507.xml create mode 100644 .idea/libraries/Maven__org_eclipse_jetty_jetty_client_9_4_4_v20170414.xml create mode 100644 .idea/libraries/Maven__org_eclipse_jetty_jetty_http_9_4_4_v20170414.xml create mode 100644 .idea/libraries/Maven__org_eclipse_jetty_jetty_io_9_4_4_v20170414.xml create mode 100644 .idea/libraries/Maven__org_eclipse_jetty_jetty_security_9_4_4_v20170414.xml create mode 100644 .idea/libraries/Maven__org_eclipse_jetty_jetty_server_9_4_4_v20170414.xml create mode 100644 .idea/libraries/Maven__org_eclipse_jetty_jetty_servlet_9_4_4_v20170414.xml create mode 100644 .idea/libraries/Maven__org_eclipse_jetty_jetty_util_9_4_4_v20170414.xml create mode 100644 .idea/libraries/Maven__org_eclipse_jetty_jetty_webapp_9_4_4_v20170414.xml create mode 100644 .idea/libraries/Maven__org_eclipse_jetty_jetty_xml_9_4_4_v20170414.xml create mode 100644 .idea/libraries/Maven__org_eclipse_jetty_websocket_websocket_api_9_4_4_v20170414.xml create mode 100644 .idea/libraries/Maven__org_eclipse_jetty_websocket_websocket_client_9_4_4_v20170414.xml create mode 100644 .idea/libraries/Maven__org_eclipse_jetty_websocket_websocket_common_9_4_4_v20170414.xml create mode 100644 .idea/libraries/Maven__org_eclipse_jetty_websocket_websocket_server_9_4_4_v20170414.xml create mode 100644 .idea/libraries/Maven__org_eclipse_jetty_websocket_websocket_servlet_9_4_4_v20170414.xml create mode 100644 .idea/libraries/Maven__org_eclipse_osgi_3_10_0_v20140606_1445.xml create mode 100644 .idea/libraries/Maven__org_eclipse_tycho_org_eclipse_jdt_core_3_12_2_v20161117_1814.xml create mode 100644 .idea/libraries/Maven__org_hamcrest_hamcrest_core_1_3.xml create mode 100644 .idea/libraries/Maven__org_javassist_javassist_3_16_1_GA.xml create mode 100644 .idea/libraries/Maven__org_javatuples_javatuples_1_2.xml create mode 100644 .idea/libraries/Maven__org_reflections_reflections_0_9_9_RC1.xml create mode 100644 .idea/libraries/Maven__org_rendersnake_rendersnake_1_8.xml create mode 100644 .idea/libraries/Maven__org_scala_lang_modules_scala_java8_compat_2_11_0_7_0.xml create mode 100644 .idea/libraries/Maven__org_scala_lang_scala_library_2_11_8.xml create mode 100644 .idea/libraries/Maven__org_slf4j_slf4j_api_1_7_13.xml create mode 100644 .idea/libraries/Maven__org_slf4j_slf4j_api_1_7_21.xml create mode 100644 .idea/libraries/Maven__org_slf4j_slf4j_api_1_7_25.xml create mode 100644 .idea/libraries/Maven__org_slf4j_slf4j_api_1_7_7.xml create mode 100644 .idea/libraries/Maven__redis_clients_jedis_2_8_1.xml create mode 100644 .idea/libraries/Maven__stax_stax_api_1_0_1.xml create mode 100644 .idea/libraries/Maven__xml_apis_xml_apis_1_0_b2.xml create mode 100644 .idea/misc.xml create mode 100644 .idea/modules.xml create mode 100644 .idea/vcs.xml create mode 100644 .idea/workspace.xml create mode 100644 difffile create mode 100644 src/main/java/edu/lu/uni/serval/fixminer/akka/compare/CompareTrees.java create mode 100644 src/main/java/edu/lu/uni/serval/utils/ClusterToPattern.java diff --git a/.idea/.name b/.idea/.name new file mode 100644 index 0000000..8796191 --- /dev/null +++ b/.idea/.name @@ -0,0 +1 @@ +FixPatternMiner \ No newline at end of file diff --git a/.idea/compiler.xml b/.idea/compiler.xml new file mode 100644 index 0000000..9d2856b --- /dev/null +++ b/.idea/compiler.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/encodings.xml b/.idea/encodings.xml new file mode 100644 index 0000000..aad31c1 --- /dev/null +++ b/.idea/encodings.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__ch_qos_logback_logback_classic_1_1_2.xml b/.idea/libraries/Maven__ch_qos_logback_logback_classic_1_1_2.xml new file mode 100644 index 0000000..a8b0d9c --- /dev/null +++ b/.idea/libraries/Maven__ch_qos_logback_logback_classic_1_1_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__ch_qos_logback_logback_classic_1_1_7.xml b/.idea/libraries/Maven__ch_qos_logback_logback_classic_1_1_7.xml new file mode 100644 index 0000000..cdd7959 --- /dev/null +++ b/.idea/libraries/Maven__ch_qos_logback_logback_classic_1_1_7.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__ch_qos_logback_logback_classic_1_2_3.xml b/.idea/libraries/Maven__ch_qos_logback_logback_classic_1_2_3.xml new file mode 100644 index 0000000..6fec8f4 --- /dev/null +++ b/.idea/libraries/Maven__ch_qos_logback_logback_classic_1_2_3.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__ch_qos_logback_logback_core_1_1_2.xml b/.idea/libraries/Maven__ch_qos_logback_logback_core_1_1_2.xml new file mode 100644 index 0000000..1c76d0b --- /dev/null +++ b/.idea/libraries/Maven__ch_qos_logback_logback_core_1_1_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__ch_qos_logback_logback_core_1_1_7.xml b/.idea/libraries/Maven__ch_qos_logback_logback_core_1_1_7.xml new file mode 100644 index 0000000..6c2a760 --- /dev/null +++ b/.idea/libraries/Maven__ch_qos_logback_logback_core_1_1_7.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__ch_qos_logback_logback_core_1_2_3.xml b/.idea/libraries/Maven__ch_qos_logback_logback_core_1_2_3.xml new file mode 100644 index 0000000..9eb8596 --- /dev/null +++ b/.idea/libraries/Maven__ch_qos_logback_logback_core_1_2_3.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_github_mpkorstanje_simmetrics_core_3_0_3.xml b/.idea/libraries/Maven__com_github_mpkorstanje_simmetrics_core_3_0_3.xml new file mode 100644 index 0000000..a009f87 --- /dev/null +++ b/.idea/libraries/Maven__com_github_mpkorstanje_simmetrics_core_3_0_3.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_google_code_findbugs_jsr305_1_3_9.xml b/.idea/libraries/Maven__com_google_code_findbugs_jsr305_1_3_9.xml new file mode 100644 index 0000000..0e66824 --- /dev/null +++ b/.idea/libraries/Maven__com_google_code_findbugs_jsr305_1_3_9.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_google_code_gson_gson_2_3.xml b/.idea/libraries/Maven__com_google_code_gson_gson_2_3.xml new file mode 100644 index 0000000..4dcaf15 --- /dev/null +++ b/.idea/libraries/Maven__com_google_code_gson_gson_2_3.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_google_guava_guava_11_0_2.xml b/.idea/libraries/Maven__com_google_guava_guava_11_0_2.xml new file mode 100644 index 0000000..01a573a --- /dev/null +++ b/.idea/libraries/Maven__com_google_guava_guava_11_0_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_google_guava_guava_18_0.xml b/.idea/libraries/Maven__com_google_guava_guava_18_0.xml new file mode 100644 index 0000000..bbd71d7 --- /dev/null +++ b/.idea/libraries/Maven__com_google_guava_guava_18_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_nanohttpd_nanohttpd_2_1_1.xml b/.idea/libraries/Maven__com_nanohttpd_nanohttpd_2_1_1.xml new file mode 100644 index 0000000..7c43448 --- /dev/null +++ b/.idea/libraries/Maven__com_nanohttpd_nanohttpd_2_1_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_nanohttpd_nanohttpd_webserver_2_1_1.xml b/.idea/libraries/Maven__com_nanohttpd_nanohttpd_webserver_2_1_1.xml new file mode 100644 index 0000000..c265679 --- /dev/null +++ b/.idea/libraries/Maven__com_nanohttpd_nanohttpd_webserver_2_1_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_rabbitmq_amqp_client_4_0_0.xml b/.idea/libraries/Maven__com_rabbitmq_amqp_client_4_0_0.xml new file mode 100644 index 0000000..0583b43 --- /dev/null +++ b/.idea/libraries/Maven__com_rabbitmq_amqp_client_4_0_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_sparkjava_spark_core_2_6_0.xml b/.idea/libraries/Maven__com_sparkjava_spark_core_2_6_0.xml new file mode 100644 index 0000000..a1b274c --- /dev/null +++ b/.idea/libraries/Maven__com_sparkjava_spark_core_2_6_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_typesafe_akka_akka_actor_2_11_2_4_11.xml b/.idea/libraries/Maven__com_typesafe_akka_akka_actor_2_11_2_4_11.xml new file mode 100644 index 0000000..09604f8 --- /dev/null +++ b/.idea/libraries/Maven__com_typesafe_akka_akka_actor_2_11_2_4_11.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_typesafe_config_1_3_0.xml b/.idea/libraries/Maven__com_typesafe_config_1_3_0.xml new file mode 100644 index 0000000..f92ac86 --- /dev/null +++ b/.idea/libraries/Maven__com_typesafe_config_1_3_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__commons_codec_commons_codec_1_10.xml b/.idea/libraries/Maven__commons_codec_commons_codec_1_10.xml new file mode 100644 index 0000000..27424a1 --- /dev/null +++ b/.idea/libraries/Maven__commons_codec_commons_codec_1_10.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__commons_codec_commons_codec_1_9.xml b/.idea/libraries/Maven__commons_codec_commons_codec_1_9.xml new file mode 100644 index 0000000..a66d039 --- /dev/null +++ b/.idea/libraries/Maven__commons_codec_commons_codec_1_9.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__dom4j_dom4j_1_6_1.xml b/.idea/libraries/Maven__dom4j_dom4j_1_6_1.xml new file mode 100644 index 0000000..14681ee --- /dev/null +++ b/.idea/libraries/Maven__dom4j_dom4j_1_6_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__javax_servlet_javax_servlet_api_3_1_0.xml b/.idea/libraries/Maven__javax_servlet_javax_servlet_api_3_1_0.xml new file mode 100644 index 0000000..c24f7e3 --- /dev/null +++ b/.idea/libraries/Maven__javax_servlet_javax_servlet_api_3_1_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__junit_junit_3_8_1.xml b/.idea/libraries/Maven__junit_junit_3_8_1.xml new file mode 100644 index 0000000..71b2993 --- /dev/null +++ b/.idea/libraries/Maven__junit_junit_3_8_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__junit_junit_4_11.xml b/.idea/libraries/Maven__junit_junit_4_11.xml new file mode 100644 index 0000000..f33320d --- /dev/null +++ b/.idea/libraries/Maven__junit_junit_4_11.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__junit_junit_4_12.xml b/.idea/libraries/Maven__junit_junit_4_12.xml new file mode 100644 index 0000000..d411041 --- /dev/null +++ b/.idea/libraries/Maven__junit_junit_4_12.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__log4j_log4j_1_2_14.xml b/.idea/libraries/Maven__log4j_log4j_1_2_14.xml new file mode 100644 index 0000000..2825a67 --- /dev/null +++ b/.idea/libraries/Maven__log4j_log4j_1_2_14.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__net_sf_trove4j_trove4j_3_0_3.xml b/.idea/libraries/Maven__net_sf_trove4j_trove4j_3_0_3.xml new file mode 100644 index 0000000..72d4d7e --- /dev/null +++ b/.idea/libraries/Maven__net_sf_trove4j_trove4j_3_0_3.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__net_sourceforge_jexcelapi_jxl_2_6_12.xml b/.idea/libraries/Maven__net_sourceforge_jexcelapi_jxl_2_6_12.xml new file mode 100644 index 0000000..19e6af8 --- /dev/null +++ b/.idea/libraries/Maven__net_sourceforge_jexcelapi_jxl_2_6_12.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_apache_commons_commons_lang3_3_1.xml b/.idea/libraries/Maven__org_apache_commons_commons_lang3_3_1.xml new file mode 100644 index 0000000..32bfe3b --- /dev/null +++ b/.idea/libraries/Maven__org_apache_commons_commons_lang3_3_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_apache_commons_commons_lang3_3_7.xml b/.idea/libraries/Maven__org_apache_commons_commons_lang3_3_7.xml new file mode 100644 index 0000000..28edf49 --- /dev/null +++ b/.idea/libraries/Maven__org_apache_commons_commons_lang3_3_7.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_apache_commons_commons_pool2_2_4_2.xml b/.idea/libraries/Maven__org_apache_commons_commons_pool2_2_4_2.xml new file mode 100644 index 0000000..2970b5e --- /dev/null +++ b/.idea/libraries/Maven__org_apache_commons_commons_pool2_2_4_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_apache_commons_commons_text_1_3.xml b/.idea/libraries/Maven__org_apache_commons_commons_text_1_3.xml new file mode 100644 index 0000000..2930e62 --- /dev/null +++ b/.idea/libraries/Maven__org_apache_commons_commons_text_1_3.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_apache_poi_poi_3_12.xml b/.idea/libraries/Maven__org_apache_poi_poi_3_12.xml new file mode 100644 index 0000000..f3bfa63 --- /dev/null +++ b/.idea/libraries/Maven__org_apache_poi_poi_3_12.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_apache_poi_poi_ooxml_3_12.xml b/.idea/libraries/Maven__org_apache_poi_poi_ooxml_3_12.xml new file mode 100644 index 0000000..0f92377 --- /dev/null +++ b/.idea/libraries/Maven__org_apache_poi_poi_ooxml_3_12.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_apache_poi_poi_ooxml_schemas_3_12.xml b/.idea/libraries/Maven__org_apache_poi_poi_ooxml_schemas_3_12.xml new file mode 100644 index 0000000..fb871da --- /dev/null +++ b/.idea/libraries/Maven__org_apache_poi_poi_ooxml_schemas_3_12.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_apache_xmlbeans_xmlbeans_2_6_0.xml b/.idea/libraries/Maven__org_apache_xmlbeans_xmlbeans_2_6_0.xml new file mode 100644 index 0000000..cb0f76d --- /dev/null +++ b/.idea/libraries/Maven__org_apache_xmlbeans_xmlbeans_2_6_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_eclipse_birt_runtime_org_eclipse_core_resources_3_10_0_v20150423_0755.xml b/.idea/libraries/Maven__org_eclipse_birt_runtime_org_eclipse_core_resources_3_10_0_v20150423_0755.xml new file mode 100644 index 0000000..bec40e7 --- /dev/null +++ b/.idea/libraries/Maven__org_eclipse_birt_runtime_org_eclipse_core_resources_3_10_0_v20150423_0755.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_eclipse_core_contenttype_3_4_200_v20140207_1251.xml b/.idea/libraries/Maven__org_eclipse_core_contenttype_3_4_200_v20140207_1251.xml new file mode 100644 index 0000000..f23ea73 --- /dev/null +++ b/.idea/libraries/Maven__org_eclipse_core_contenttype_3_4_200_v20140207_1251.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_eclipse_core_jobs_3_6_0_v20140424_0053.xml b/.idea/libraries/Maven__org_eclipse_core_jobs_3_6_0_v20140424_0053.xml new file mode 100644 index 0000000..ecd0a0f --- /dev/null +++ b/.idea/libraries/Maven__org_eclipse_core_jobs_3_6_0_v20140424_0053.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_eclipse_core_runtime_3_10_0_v20140318_2214.xml b/.idea/libraries/Maven__org_eclipse_core_runtime_3_10_0_v20140318_2214.xml new file mode 100644 index 0000000..b1c50eb --- /dev/null +++ b/.idea/libraries/Maven__org_eclipse_core_runtime_3_10_0_v20140318_2214.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_eclipse_equinox_app_1_3_200_v20130910_1609.xml b/.idea/libraries/Maven__org_eclipse_equinox_app_1_3_200_v20130910_1609.xml new file mode 100644 index 0000000..c5372f9 --- /dev/null +++ b/.idea/libraries/Maven__org_eclipse_equinox_app_1_3_200_v20130910_1609.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_eclipse_equinox_common_3_6_200_v20130402_1505.xml b/.idea/libraries/Maven__org_eclipse_equinox_common_3_6_200_v20130402_1505.xml new file mode 100644 index 0000000..0e8e398 --- /dev/null +++ b/.idea/libraries/Maven__org_eclipse_equinox_common_3_6_200_v20130402_1505.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_eclipse_equinox_preferences_3_5_200_v20140224_1527.xml b/.idea/libraries/Maven__org_eclipse_equinox_preferences_3_5_200_v20140224_1527.xml new file mode 100644 index 0000000..cf2ff45 --- /dev/null +++ b/.idea/libraries/Maven__org_eclipse_equinox_preferences_3_5_200_v20140224_1527.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_eclipse_equinox_registry_3_5_400_v20140428_1507.xml b/.idea/libraries/Maven__org_eclipse_equinox_registry_3_5_400_v20140428_1507.xml new file mode 100644 index 0000000..a35d91c --- /dev/null +++ b/.idea/libraries/Maven__org_eclipse_equinox_registry_3_5_400_v20140428_1507.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_eclipse_jetty_jetty_client_9_4_4_v20170414.xml b/.idea/libraries/Maven__org_eclipse_jetty_jetty_client_9_4_4_v20170414.xml new file mode 100644 index 0000000..753cd46 --- /dev/null +++ b/.idea/libraries/Maven__org_eclipse_jetty_jetty_client_9_4_4_v20170414.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_eclipse_jetty_jetty_http_9_4_4_v20170414.xml b/.idea/libraries/Maven__org_eclipse_jetty_jetty_http_9_4_4_v20170414.xml new file mode 100644 index 0000000..24b9595 --- /dev/null +++ b/.idea/libraries/Maven__org_eclipse_jetty_jetty_http_9_4_4_v20170414.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_eclipse_jetty_jetty_io_9_4_4_v20170414.xml b/.idea/libraries/Maven__org_eclipse_jetty_jetty_io_9_4_4_v20170414.xml new file mode 100644 index 0000000..be4af0a --- /dev/null +++ b/.idea/libraries/Maven__org_eclipse_jetty_jetty_io_9_4_4_v20170414.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_eclipse_jetty_jetty_security_9_4_4_v20170414.xml b/.idea/libraries/Maven__org_eclipse_jetty_jetty_security_9_4_4_v20170414.xml new file mode 100644 index 0000000..0a0a61a --- /dev/null +++ b/.idea/libraries/Maven__org_eclipse_jetty_jetty_security_9_4_4_v20170414.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_eclipse_jetty_jetty_server_9_4_4_v20170414.xml b/.idea/libraries/Maven__org_eclipse_jetty_jetty_server_9_4_4_v20170414.xml new file mode 100644 index 0000000..aa28eb9 --- /dev/null +++ b/.idea/libraries/Maven__org_eclipse_jetty_jetty_server_9_4_4_v20170414.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_eclipse_jetty_jetty_servlet_9_4_4_v20170414.xml b/.idea/libraries/Maven__org_eclipse_jetty_jetty_servlet_9_4_4_v20170414.xml new file mode 100644 index 0000000..8923ab4 --- /dev/null +++ b/.idea/libraries/Maven__org_eclipse_jetty_jetty_servlet_9_4_4_v20170414.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_eclipse_jetty_jetty_util_9_4_4_v20170414.xml b/.idea/libraries/Maven__org_eclipse_jetty_jetty_util_9_4_4_v20170414.xml new file mode 100644 index 0000000..b7d325c --- /dev/null +++ b/.idea/libraries/Maven__org_eclipse_jetty_jetty_util_9_4_4_v20170414.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_eclipse_jetty_jetty_webapp_9_4_4_v20170414.xml b/.idea/libraries/Maven__org_eclipse_jetty_jetty_webapp_9_4_4_v20170414.xml new file mode 100644 index 0000000..bd09afa --- /dev/null +++ b/.idea/libraries/Maven__org_eclipse_jetty_jetty_webapp_9_4_4_v20170414.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_eclipse_jetty_jetty_xml_9_4_4_v20170414.xml b/.idea/libraries/Maven__org_eclipse_jetty_jetty_xml_9_4_4_v20170414.xml new file mode 100644 index 0000000..9f8b202 --- /dev/null +++ b/.idea/libraries/Maven__org_eclipse_jetty_jetty_xml_9_4_4_v20170414.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_eclipse_jetty_websocket_websocket_api_9_4_4_v20170414.xml b/.idea/libraries/Maven__org_eclipse_jetty_websocket_websocket_api_9_4_4_v20170414.xml new file mode 100644 index 0000000..597060a --- /dev/null +++ b/.idea/libraries/Maven__org_eclipse_jetty_websocket_websocket_api_9_4_4_v20170414.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_eclipse_jetty_websocket_websocket_client_9_4_4_v20170414.xml b/.idea/libraries/Maven__org_eclipse_jetty_websocket_websocket_client_9_4_4_v20170414.xml new file mode 100644 index 0000000..be2f9c9 --- /dev/null +++ b/.idea/libraries/Maven__org_eclipse_jetty_websocket_websocket_client_9_4_4_v20170414.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_eclipse_jetty_websocket_websocket_common_9_4_4_v20170414.xml b/.idea/libraries/Maven__org_eclipse_jetty_websocket_websocket_common_9_4_4_v20170414.xml new file mode 100644 index 0000000..af4b520 --- /dev/null +++ b/.idea/libraries/Maven__org_eclipse_jetty_websocket_websocket_common_9_4_4_v20170414.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_eclipse_jetty_websocket_websocket_server_9_4_4_v20170414.xml b/.idea/libraries/Maven__org_eclipse_jetty_websocket_websocket_server_9_4_4_v20170414.xml new file mode 100644 index 0000000..26b182a --- /dev/null +++ b/.idea/libraries/Maven__org_eclipse_jetty_websocket_websocket_server_9_4_4_v20170414.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_eclipse_jetty_websocket_websocket_servlet_9_4_4_v20170414.xml b/.idea/libraries/Maven__org_eclipse_jetty_websocket_websocket_servlet_9_4_4_v20170414.xml new file mode 100644 index 0000000..d11dc2b --- /dev/null +++ b/.idea/libraries/Maven__org_eclipse_jetty_websocket_websocket_servlet_9_4_4_v20170414.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_eclipse_osgi_3_10_0_v20140606_1445.xml b/.idea/libraries/Maven__org_eclipse_osgi_3_10_0_v20140606_1445.xml new file mode 100644 index 0000000..4f8664b --- /dev/null +++ b/.idea/libraries/Maven__org_eclipse_osgi_3_10_0_v20140606_1445.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_eclipse_tycho_org_eclipse_jdt_core_3_12_2_v20161117_1814.xml b/.idea/libraries/Maven__org_eclipse_tycho_org_eclipse_jdt_core_3_12_2_v20161117_1814.xml new file mode 100644 index 0000000..152bde1 --- /dev/null +++ b/.idea/libraries/Maven__org_eclipse_tycho_org_eclipse_jdt_core_3_12_2_v20161117_1814.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_hamcrest_hamcrest_core_1_3.xml b/.idea/libraries/Maven__org_hamcrest_hamcrest_core_1_3.xml new file mode 100644 index 0000000..f58bbc1 --- /dev/null +++ b/.idea/libraries/Maven__org_hamcrest_hamcrest_core_1_3.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_javassist_javassist_3_16_1_GA.xml b/.idea/libraries/Maven__org_javassist_javassist_3_16_1_GA.xml new file mode 100644 index 0000000..7b4e548 --- /dev/null +++ b/.idea/libraries/Maven__org_javassist_javassist_3_16_1_GA.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_javatuples_javatuples_1_2.xml b/.idea/libraries/Maven__org_javatuples_javatuples_1_2.xml new file mode 100644 index 0000000..b524531 --- /dev/null +++ b/.idea/libraries/Maven__org_javatuples_javatuples_1_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_reflections_reflections_0_9_9_RC1.xml b/.idea/libraries/Maven__org_reflections_reflections_0_9_9_RC1.xml new file mode 100644 index 0000000..95dd64a --- /dev/null +++ b/.idea/libraries/Maven__org_reflections_reflections_0_9_9_RC1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_rendersnake_rendersnake_1_8.xml b/.idea/libraries/Maven__org_rendersnake_rendersnake_1_8.xml new file mode 100644 index 0000000..7251aaa --- /dev/null +++ b/.idea/libraries/Maven__org_rendersnake_rendersnake_1_8.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_scala_lang_modules_scala_java8_compat_2_11_0_7_0.xml b/.idea/libraries/Maven__org_scala_lang_modules_scala_java8_compat_2_11_0_7_0.xml new file mode 100644 index 0000000..f4b289b --- /dev/null +++ b/.idea/libraries/Maven__org_scala_lang_modules_scala_java8_compat_2_11_0_7_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_scala_lang_scala_library_2_11_8.xml b/.idea/libraries/Maven__org_scala_lang_scala_library_2_11_8.xml new file mode 100644 index 0000000..fc8460c --- /dev/null +++ b/.idea/libraries/Maven__org_scala_lang_scala_library_2_11_8.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_slf4j_slf4j_api_1_7_13.xml b/.idea/libraries/Maven__org_slf4j_slf4j_api_1_7_13.xml new file mode 100644 index 0000000..4fd913d --- /dev/null +++ b/.idea/libraries/Maven__org_slf4j_slf4j_api_1_7_13.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_slf4j_slf4j_api_1_7_21.xml b/.idea/libraries/Maven__org_slf4j_slf4j_api_1_7_21.xml new file mode 100644 index 0000000..1b644dd --- /dev/null +++ b/.idea/libraries/Maven__org_slf4j_slf4j_api_1_7_21.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_slf4j_slf4j_api_1_7_25.xml b/.idea/libraries/Maven__org_slf4j_slf4j_api_1_7_25.xml new file mode 100644 index 0000000..20e8163 --- /dev/null +++ b/.idea/libraries/Maven__org_slf4j_slf4j_api_1_7_25.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_slf4j_slf4j_api_1_7_7.xml b/.idea/libraries/Maven__org_slf4j_slf4j_api_1_7_7.xml new file mode 100644 index 0000000..1e67260 --- /dev/null +++ b/.idea/libraries/Maven__org_slf4j_slf4j_api_1_7_7.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__redis_clients_jedis_2_8_1.xml b/.idea/libraries/Maven__redis_clients_jedis_2_8_1.xml new file mode 100644 index 0000000..f12195b --- /dev/null +++ b/.idea/libraries/Maven__redis_clients_jedis_2_8_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__stax_stax_api_1_0_1.xml b/.idea/libraries/Maven__stax_stax_api_1_0_1.xml new file mode 100644 index 0000000..0b13335 --- /dev/null +++ b/.idea/libraries/Maven__stax_stax_api_1_0_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__xml_apis_xml_apis_1_0_b2.xml b/.idea/libraries/Maven__xml_apis_xml_apis_1_0_b2.xml new file mode 100644 index 0000000..c36e717 --- /dev/null +++ b/.idea/libraries/Maven__xml_apis_xml_apis_1_0_b2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..cc1f0b7 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,15 @@ + + + + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..272b874 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..dc408e4 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/workspace.xml b/.idea/workspace.xml new file mode 100644 index 0000000..19f4360 --- /dev/null +++ b/.idea/workspace.xml @@ -0,0 +1,1218 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + FileHelper + contain + Time + getSub + Filenamef + .keys + write + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1550924800456 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + file://$PROJECT_DIR$/src/main/java/edu/lu/uni/serval/fixminer/Launcher.java + 25 + + + + file://$PROJECT_DIR$/src/main/java/edu/lu/uni/serval/fixminer/Launcher.java + 83 + + + + file://$PROJECT_DIR$/src/main/java/edu/lu/uni/serval/fixminer/cluster/CalculatePairs.java + 26 + + + + file://$PROJECT_DIR$/src/main/java/edu/lu/uni/serval/fixminer/cluster/CalculatePairs.java + 33 + + + + file://$PROJECT_DIR$/src/main/java/edu/lu/uni/serval/fixminer/Launcher.java + 77 + + + + file://$PROJECT_DIR$/src/main/java/edu/lu/uni/serval/fixminer/Launcher.java + 80 + + + + file://$PROJECT_DIR$/src/main/java/edu/lu/uni/serval/fixminer/akka/ediff/EDiffHunkParser.java + 27 + + + + file://$PROJECT_DIR$/src/main/java/edu/lu/uni/serval/fixminer/akka/ediff/EDiffHunkParser.java + 79 + + + + file://$PROJECT_DIR$/src/main/java/edu/lu/uni/serval/fixminer/akka/ediff/EDiffHunkParser.java + 77 + + + + file://$PROJECT_DIR$/src/main/java/edu/lu/uni/serval/fixminer/jobs/StoreEDiffInCache.java + 37 + + + + file://$PROJECT_DIR$/src/main/java/edu/lu/uni/serval/fixminer/jobs/StoreEDiffInCache.java + 94 + + + + file://$PROJECT_DIR$/src/main/java/edu/lu/uni/serval/fixminer/jobs/StoreEDiffInCache.java + 104 + + + + file://$PROJECT_DIR$/src/main/java/edu/lu/uni/serval/fixminer/Launcher.java + 72 + + + + file://$PROJECT_DIR$/src/main/java/edu/lu/uni/serval/fixminer/jobs/StoreEDiffInCache.java + 85 + + + + file://$PROJECT_DIR$/src/main/java/edu/lu/uni/serval/fixminer/Launcher.java + 84 + + + + file://$PROJECT_DIR$/src/main/java/edu/lu/uni/serval/fixminer/jobs/ImportPairs2DB.java + 72 + + + + file://$PROJECT_DIR$/src/main/java/edu/lu/uni/serval/fixminer/jobs/AkkaTreeLoader.java + 34 + + + + file://$PROJECT_DIR$/src/main/java/edu/lu/uni/serval/fixminer/jobs/AkkaTreeLoader.java + 54 + + + + file://$PROJECT_DIR$/src/main/java/edu/lu/uni/serval/fixminer/akka/compare/Compare.java + 33 + + + + file://$PROJECT_DIR$/src/main/java/edu/lu/uni/serval/fixminer/akka/compare/AkkaTreeParser.java + 84 + + + + file://$PROJECT_DIR$/src/main/java/edu/lu/uni/serval/fixminer/akka/compare/AkkaTreeParser.java + 23 + + + + file://$PROJECT_DIR$/src/main/java/edu/lu/uni/serval/fixminer/jobs/AkkaTreeLoader.java + 116 + + + + file://$PROJECT_DIR$/src/main/java/edu/lu/uni/serval/fixminer/akka/compare/Compare.java + 47 + + + + file://$PROJECT_DIR$/src/main/java/edu/lu/uni/serval/fixminer/Launcher.java + 140 + + + + file://$PROJECT_DIR$/src/main/java/edu/lu/uni/serval/fixminer/jobs/MultiThreadTreeLoaderCluster.java + 78 + + + + file://$PROJECT_DIR$/src/main/java/edu/lu/uni/serval/fixminer/jobs/MultiThreadTreeLoaderCluster.java + 114 + + + + file://$PROJECT_DIR$/src/main/java/edu/lu/uni/serval/fixminer/jobs/MultiThreadTreeLoaderCluster.java + 131 + + + + file://$PROJECT_DIR$/src/main/java/edu/lu/uni/serval/fixminer/jobs/MultiThreadTreeLoaderCluster.java + 184 + + + + file://$PROJECT_DIR$/src/main/java/edu/lu/uni/serval/fixminer/akka/compare/CompareTrees.java + 61 + + + + file://$PROJECT_DIR$/src/main/java/edu/lu/uni/serval/utils/ClusterToPattern.java + 28 + + + + file://$PROJECT_DIR$/src/main/java/edu/lu/uni/serval/utils/ClusterToPattern.java + 35 + + + + file://$PROJECT_DIR$/src/main/java/edu/lu/uni/serval/utils/ClusterToPattern.java + 41 + + + + file://$PROJECT_DIR$/src/main/java/edu/lu/uni/serval/utils/ClusterToPattern.java + 56 + + + + file://$PROJECT_DIR$/src/main/java/edu/lu/uni/serval/fixminer/akka/compare/CompareTrees.java + 98 + + + + file://$PROJECT_DIR$/src/main/java/edu/lu/uni/serval/fixminer/akka/compare/CompareTrees.java + 141 + + + + file://$PROJECT_DIR$/src/main/java/edu/lu/uni/serval/fixminer/akka/compare/CompareTrees.java + 114 + + + + file://$PROJECT_DIR$/src/main/java/edu/lu/uni/serval/fixminer/akka/compare/CompareTrees.java + 146 + + + + + + + + + folder.getParent() + JAVA + CODE_FRAGMENT + + + shape.getParent() + JAVA + CODE_FRAGMENT + + + cluster.getName() + JAVA + CODE_FRAGMENT + + + shape.getPath() + JAVA + CODE_FRAGMENT + + + cluster.getPath() + JAVA + CODE_FRAGMENT + + + actionSet.toString() + JAVA + CODE_FRAGMENT + + + file.getName() + JAVA + CODE_FRAGMENT + + + file. + JAVA + CODE_FRAGMENT + + + inner.get(prefix+"-"+firstValue); + JAVA + CODE_FRAGMENT + + + + + 1 + JAVA + EXPRESSION + + + "JDT" + JAVA + EXPRESSION + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + No facets are configured + + + + + + + + + + + + + + + 1.8 + + + + + + + + client + + + + + + + + 1.8 + + + + + + + + Maven: ch.qos.logback:logback-classic:1.1.2 + + + + + + + + \ No newline at end of file diff --git a/FixPatternMiner.iml b/FixPatternMiner.iml index a7d8955..82122fc 100644 --- a/FixPatternMiner.iml +++ b/FixPatternMiner.iml @@ -1,6 +1,6 @@ - + @@ -10,7 +10,17 @@ + + + + + + + + + + @@ -18,18 +28,9 @@ - - - - - - - - - diff --git a/difffile b/difffile new file mode 100644 index 0000000..4dc952b --- /dev/null +++ b/difffile @@ -0,0 +1,210 @@ +diff --git a/.gitignore b/.gitignore +index 24cae48..27c7ba3 100644 +--- a/.gitignore ++++ b/.gitignore +@@ -14,6 +14,7 @@ GumTreeInput/ + GumTreeInput1/ + GumTreeOutput1/ + GumTreeResults/ ++.idea/* + + */Test.java + *TestParser.java +diff --git a/src/main/java/edu/lu/uni/serval/FixPatternParser/violations/FixedViolationHunkParser.java b/src/main/java/edu/lu/uni/serval/FixPatternParser/violations/FixedViolationHunkParser.java +index 4d885ea..eb1eca1 100644 +--- a/src/main/java/edu/lu/uni/serval/FixPatternParser/violations/FixedViolationHunkParser.java ++++ b/src/main/java/edu/lu/uni/serval/FixPatternParser/violations/FixedViolationHunkParser.java +@@ -1,5 +1,9 @@ + package edu.lu.uni.serval.FixPatternParser.violations; + ++import com.github.gumtreediff.actions.model.Delete; ++import com.github.gumtreediff.actions.model.Insert; ++import com.github.gumtreediff.actions.model.Move; ++import com.github.gumtreediff.actions.model.Update; + import edu.lu.uni.serval.gumtree.regroup.HierarchicalActionSet; + + import java.io.*; +@@ -30,27 +34,29 @@ public class FixedViolationHunkParser extends FixedViolationParser { + public void parseFixPatterns(File prevFile, File revFile, File diffentryFile,String project) { + List actionSets = parseChangedSourceCodeWithGumTree2(prevFile, revFile); + if (actionSets.size() != 0) { +-// boolean isUpdate = +-// actionSets.stream().allMatch(p -> p.getAction() instanceof Update); +-// boolean isInsert = +-// actionSets.stream().allMatch(p -> p.getAction() instanceof Insert); +-// boolean isDelete = +-// actionSets.stream().allMatch(p -> p.getAction() instanceof Delete); +-// boolean isMove = +-// actionSets.stream().allMatch(p -> p.getAction() instanceof Move); + int hunkSet = 0; + // if (isUpdate || isInsert || isDelete || isMove) { + for (HierarchicalActionSet actionSet : actionSets) { +- String folder = "/ALL/"; +-// if (isUpdate) { +-// folder = "/UPD/"; +-// } else if (isDelete) { +-// folder = "/DEL/"; +-// } else if (isInsert) { +-// folder = "/INS/"; +-// } else if (isMove) { +-// folder = "/MOV/"; +-// } ++ boolean isUpdate = ++ actionSets.stream().allMatch(p -> p.getAction() instanceof Update); ++ boolean isInsert = ++ actionSets.stream().allMatch(p -> p.getAction() instanceof Insert); ++ boolean isDelete = ++ actionSets.stream().allMatch(p -> p.getAction() instanceof Delete); ++ boolean isMove = ++ actionSets.stream().allMatch(p -> p.getAction() instanceof Move); ++ String folder = "/MIX/"; ++ if (isUpdate) { ++ folder = "/UPD/"; ++ } else if (isDelete) { ++ folder = "/DEL/"; ++ } else if (isInsert) { ++ folder = "/INS/"; ++ } else if (isMove) { ++ folder = "/MOV/"; ++ } else{ ++ folder = "/MIX/"; ++ } + + + FileOutputStream f = null; +diff --git a/src/main/java/edu/lu/uni/serval/MultipleThreadsParser/ParseFixPatternWorker.java b/src/main/java/edu/lu/uni/serval/MultipleThreadsParser/ParseFixPatternWorker.java +index 3084dbe..ffe1b01 100644 +--- a/src/main/java/edu/lu/uni/serval/MultipleThreadsParser/ParseFixPatternWorker.java ++++ b/src/main/java/edu/lu/uni/serval/MultipleThreadsParser/ParseFixPatternWorker.java +@@ -61,7 +61,7 @@ public class ParseFixPatternWorker extends UntypedActor { + int testInfos = 0; + int timeouts = 0; + StringBuilder builder = new StringBuilder(); +- ++// log.info("Work queue size " + files.size()); + for (MessageFile msgFile : files) { + File revFile = msgFile.getRevFile(); + File prevFile = msgFile.getPrevFile(); +diff --git a/src/main/java/edu/lu/uni/serval/config/Configuration.java b/src/main/java/edu/lu/uni/serval/config/Configuration.java +index 4421c72..7162180 100644 +--- a/src/main/java/edu/lu/uni/serval/config/Configuration.java ++++ b/src/main/java/edu/lu/uni/serval/config/Configuration.java +@@ -2,6 +2,6 @@ package edu.lu.uni.serval.config; + + public class Configuration { + +- public static final long SECONDS_TO_WAIT = 900L; ++ public static final long SECONDS_TO_WAIT = 90000L; + + } +diff --git a/src/main/java/edu/lu/uni/serval/fixminer/EnhancedASTDiff.java b/src/main/java/edu/lu/uni/serval/fixminer/EnhancedASTDiff.java +index 43895e0..066b07d 100644 +--- a/src/main/java/edu/lu/uni/serval/fixminer/EnhancedASTDiff.java ++++ b/src/main/java/edu/lu/uni/serval/fixminer/EnhancedASTDiff.java +@@ -5,7 +5,7 @@ import akka.actor.ActorSystem; + import edu.lu.uni.serval.MultipleThreadsParser.MessageFile; + import edu.lu.uni.serval.MultipleThreadsParser.ParseFixPatternActor; + import edu.lu.uni.serval.MultipleThreadsParser.WorkMessage; +-import edu.lu.uni.serval.utils.FileHelper; ++import edu.lu.uni.serval.FixPattern.utils.FileHelper; + import org.slf4j.Logger; + import org.slf4j.LoggerFactory; + +@@ -13,6 +13,7 @@ import java.io.File; + import java.util.ArrayList; + import java.util.Arrays; + import java.util.List; ++import java.util.Locale; + import java.util.stream.Collectors; + import java.util.stream.Stream; + +@@ -31,6 +32,7 @@ public class EnhancedASTDiff { + Stream stream = Arrays.stream(listOfFiles); + List folders = stream + .filter(x -> !x.getName().startsWith(".")) ++// .filter(x -> x.getName().startsWith("JDT")) + .collect(Collectors.toList()); + + +@@ -49,11 +51,11 @@ public class EnhancedASTDiff { + FileHelper.createDirectory(GUM_TREE_OUTPUT + "/INS"); + FileHelper.createDirectory(GUM_TREE_OUTPUT + "/DEL"); + FileHelper.createDirectory(GUM_TREE_OUTPUT + "/MOV"); +- FileHelper.createDirectory(GUM_TREE_OUTPUT + "/ALL"); ++ FileHelper.createDirectory(GUM_TREE_OUTPUT + "/MIX"); + + + int a = 0; +- ++ log.info("Work queue size " + msgFiles.size()); + ActorSystem system = null; + ActorRef parsingActor = null; + final WorkMessage msg = new WorkMessage(0, msgFiles); +@@ -80,6 +82,11 @@ public class EnhancedASTDiff { + if (revFiles.length >= 0) { + for (File revFile : revFiles) { + String fileName = revFile.getName(); ++ if(fileName.toLowerCase(Locale.ENGLISH).contains("test")){ ++ log.info(fileName); ++ continue; ++ } ++ + File prevFile = new File(gumTreeInput + "prevFiles/prev_" + fileName);// previous file + fileName = fileName.replace(".java", ".txt"); + File diffentryFile = new File(gumTreeInput + "DiffEntries/" + fileName); // DiffEntry file +diff --git a/src/main/java/edu/lu/uni/serval/fixminer/TestHunkParserSingleFile.java b/src/main/java/edu/lu/uni/serval/fixminer/TestHunkParserSingleFile.java +index 44575a7..88f36c6 100644 +--- a/src/main/java/edu/lu/uni/serval/fixminer/TestHunkParserSingleFile.java ++++ b/src/main/java/edu/lu/uni/serval/fixminer/TestHunkParserSingleFile.java +@@ -5,7 +5,7 @@ import akka.actor.ActorSystem; + import edu.lu.uni.serval.MultipleThreadsParser.MessageFile; + import edu.lu.uni.serval.MultipleThreadsParser.ParseFixPatternActor; + import edu.lu.uni.serval.MultipleThreadsParser.WorkMessage; +-import edu.lu.uni.serval.utils.FileHelper; ++import edu.lu.uni.serval.FixPattern.utils.FileHelper; + import org.slf4j.Logger; + import org.slf4j.LoggerFactory; + +diff --git a/src/main/java/edu/lu/uni/serval/fixminer/cluster/CallShell.java b/src/main/java/edu/lu/uni/serval/fixminer/cluster/CallShell.java +index 9c1d05d..3dceda0 100644 +--- a/src/main/java/edu/lu/uni/serval/fixminer/cluster/CallShell.java ++++ b/src/main/java/edu/lu/uni/serval/fixminer/cluster/CallShell.java +@@ -37,7 +37,7 @@ public class CallShell { + } + // Thread.sleep(Integer.valueOf(serverWait)); + +- String cmd = "redis-cli -p %s ping"; ++ String cmd = "bash source activate redisEnv && redis-cli -p %s ping"; + String cmd1 = String.format(cmd,Integer.valueOf(port)); + runPing(cmd1); + +diff --git a/src/main/java/edu/lu/uni/serval/fixminer/cluster/StoreEDiffInCache.java b/src/main/java/edu/lu/uni/serval/fixminer/cluster/StoreEDiffInCache.java +index 39bba51..8657dce 100644 +--- a/src/main/java/edu/lu/uni/serval/fixminer/cluster/StoreEDiffInCache.java ++++ b/src/main/java/edu/lu/uni/serval/fixminer/cluster/StoreEDiffInCache.java +@@ -52,13 +52,15 @@ public class StoreEDiffInCache { + .filter(x -> x.getName().startsWith("UPD") || + x.getName().startsWith("INS") || + x.getName().startsWith("DEL") || ++ x.getName().startsWith("MIX") || + x.getName().startsWith("MOV")) + .collect(Collectors.toList()); + File[] files1 = fs.get(0).listFiles(); + File[] files2 = fs.get(1).listFiles(); + File[] files3 = fs.get(2).listFiles(); + File[] files4 = fs.get(3).listFiles(); +- dumps = Stream.of(files1, files2, files3,files4).flatMap(Stream::of).toArray(File[]::new); ++ File[] files5 = fs.get(4).listFiles(); ++ dumps = Stream.of(files1, files2, files3,files4,files5).flatMap(Stream::of).toArray(File[]::new); + }else{ + fs = fileStream + .filter(x -> x.getName().startsWith(operation)) +@@ -70,7 +72,7 @@ public class StoreEDiffInCache { + for (File f : dumps) { + String name = f.getName(); + +- String key = pjName + "/"+ operation+"/" + name; ++ String key = pjName + f.getPath().replace(pj.getPath(),""); + String result = key +","+f.getPath(); + workList.add(result); + } diff --git a/pom.xml b/pom.xml index 20628f7..e783f0d 100644 --- a/pom.xml +++ b/pom.xml @@ -25,11 +25,11 @@ 1.2 - - - - - + + edu.lu.uni + simple-utils + 0.0.1-SNAPSHOT + @@ -135,7 +135,7 @@ - edu.lu.uni.serval.fixminer.Launcher + edu.lu.uni.serval.fixminer.akka.compare.CompareTrees diff --git a/src/main/java/edu/lu/uni/serval/fixminer/Launcher.java b/src/main/java/edu/lu/uni/serval/fixminer/Launcher.java index a4cbbd0..79e1c22 100644 --- a/src/main/java/edu/lu/uni/serval/fixminer/Launcher.java +++ b/src/main/java/edu/lu/uni/serval/fixminer/Launcher.java @@ -68,7 +68,7 @@ public class Launcher { gumInput = datasetPath +"/"+pjName+"/"; gumOutput = datasetPath + "/EnhancedASTDiff" + pjName; dbDir = datasetPath + "/redis"; - pairsPath = datasetPath + "/pairsImport"+pjName; + pairsPath = datasetPath + "/pairs"; dumpsName = "dumps-"+pjName+".rdb"; int iCursor = Integer.valueOf(cursor); @@ -81,11 +81,11 @@ public class Launcher { StoreEDiffInCache.main(gumOutput, portDumps, dbDir, actionType+dumpsName,actionType); break; case "SI": - CalculatePairs.main(dbDir, actionType+dumpsName, portDumps, pairsPath+actionType, pjName+actionType,isBigPair,iCursor); - ImportPairs2DB.main(pairsPath+actionType, portInner, dbDir,datasetPath,chunk); +// CalculatePairs.main(dbDir, actionType+dumpsName, portDumps, pairsPath+actionType, pjName+actionType,isBigPair,iCursor); + ImportPairs2DB.main(pairsPath, portInner, dbDir,datasetPath,chunk); break; case "SIMI": - AkkaTreeLoader.main(portInner, dbDir, pjName +actionType+chunk+".rdb" , portDumps, actionType+dumpsName,pairsPath+actionType,numOfWorkers,iCursor,chunk,eDiffTimeout,parallelism); + AkkaTreeLoader.main(portInner, dbDir, "pairs.rdb" , portDumps, actionType+dumpsName,pairsPath,numOfWorkers,iCursor,chunk,eDiffTimeout,parallelism); break; case "LEVEL1": @@ -136,9 +136,9 @@ public class Launcher { private static void level2(String port, String pythonPath, String datasetPath, String pjName, String actionType, String threshold, String dbDir, String dumpsName, String gumInput,int cursor) throws Exception { String stopServer; - MultiThreadTreeLoaderCluster.calculatePairsOfClusters(datasetPath + "/cluster"+pjName+ actionType, datasetPath,actionType); +// MultiThreadTreeLoaderCluster.calculatePairsOfClusters(datasetPath + "/cluster"+pjName+ actionType, datasetPath,actionType); - MultiThreadTreeLoaderCluster.mainCompare("6300", datasetPath+"/pairs"+actionType, datasetPath + "/redisSingleImport.sh", dbDir, "clusterl1-"+pjName+actionType+".rdb", actionType+dumpsName, "6301",actionType,cursor); + MultiThreadTreeLoaderCluster.mainCompare(port, datasetPath+"/pairsAction", datasetPath + "/redisSingleImport.sh", dbDir, "clusterl1-"+pjName+actionType+".rdb", actionType+dumpsName, "6380",actionType,cursor); CallShell cs3 =new CallShell(); String db22 = "bash "+dbDir + "/" + "startServer.sh" +" %s %s %s"; diff --git a/src/main/java/edu/lu/uni/serval/fixminer/akka/compare/AkkaTreeParser.java b/src/main/java/edu/lu/uni/serval/fixminer/akka/compare/AkkaTreeParser.java index 15cbc87..6a23292 100644 --- a/src/main/java/edu/lu/uni/serval/fixminer/akka/compare/AkkaTreeParser.java +++ b/src/main/java/edu/lu/uni/serval/fixminer/akka/compare/AkkaTreeParser.java @@ -87,7 +87,8 @@ public class AkkaTreeParser { log.info("Scanning "); sc.count(cursor); - sc.match("pair_[0-9]*"); + sc.match("*"); +// sc.match("pair_[0-9]*"); scan = inner.scan("0", sc); int size = scan.getResult().size(); diff --git a/src/main/java/edu/lu/uni/serval/fixminer/akka/compare/Compare.java b/src/main/java/edu/lu/uni/serval/fixminer/akka/compare/Compare.java index ef93559..911d50b 100644 --- a/src/main/java/edu/lu/uni/serval/fixminer/akka/compare/Compare.java +++ b/src/main/java/edu/lu/uni/serval/fixminer/akka/compare/Compare.java @@ -38,11 +38,12 @@ public class Compare { String i = split[1]; String j = split[2]; + String keyName = split[0]; - oldTree = EDiffHelper.getSimpliedTree(i,outerPool); + oldTree = EDiffHelper.getSimpliedTree(keyName,i,outerPool); - newTree = EDiffHelper.getSimpliedTree(j,outerPool); + newTree = EDiffHelper.getSimpliedTree(keyName,j,outerPool); Matcher m = Matchers.getInstance().getMatcher(oldTree, newTree); m.match(); @@ -66,7 +67,7 @@ public class Compare { if (((Double) chawatheSimilarity1).equals(1.0) || ((Double) diceSimilarity1).equals(1.0) || ((Double) jaccardSimilarity1).equals(1.0) || actions.size() == 0) { - String matchKey = "match_" + (String.valueOf(i)) + "_" + String.valueOf(j); + String matchKey = keyName+"_" + (String.valueOf(i)) + "_" + String.valueOf(j); log.info("{} tagged to be similar" ,matchKey); jedis.select(1); @@ -76,7 +77,7 @@ public class Compare { jedis.select(0); - jedis.del("pair_" + (String.valueOf(i)) + "_" + String.valueOf(j)); + jedis.del(keyName+"_" + (String.valueOf(i)) + "_" + String.valueOf(j)); diff --git a/src/main/java/edu/lu/uni/serval/fixminer/akka/compare/CompareTrees.java b/src/main/java/edu/lu/uni/serval/fixminer/akka/compare/CompareTrees.java new file mode 100644 index 0000000..510230e --- /dev/null +++ b/src/main/java/edu/lu/uni/serval/fixminer/akka/compare/CompareTrees.java @@ -0,0 +1,197 @@ +package edu.lu.uni.serval.fixminer.akka.compare; + +import com.github.gumtreediff.actions.ActionGenerator; +import com.github.gumtreediff.actions.model.Action; +import com.github.gumtreediff.matchers.Matcher; +import com.github.gumtreediff.matchers.Matchers; +import com.github.gumtreediff.tree.ITree; +import edu.lu.uni.serval.utils.EDiffHelper; +import edu.lu.uni.serval.utils.PoolBuilder; +import org.apache.commons.text.similarity.JaroWinklerDistance; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import redis.clients.jedis.Jedis; +import redis.clients.jedis.JedisPool; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +import static edu.lu.uni.serval.fixminer.jobs.MultiThreadTreeLoaderCluster3.getNames; + + +/** + * Created by anilkoyuncu on 03/04/2018. + */ +public class CompareTrees { + + private static Logger log = LoggerFactory.getLogger(CompareTrees.class); + + + public static void main(String[] args) throws IOException { + + String portInner = "6380"; + String port = "6399"; +// + JedisPool innerPool = new JedisPool(PoolBuilder.getPoolConfig(), "127.0.0.1",Integer.valueOf(portInner),20000000); + + JedisPool outerPool = new JedisPool(PoolBuilder.getPoolConfig(), "127.0.0.1",Integer.valueOf(port),20000000); + + List listOfPairs = AkkaTreeParser.getMessages(innerPool,100000000); +// listOfPairs.stream().parallel(). + + int counter = new Object() { + int counter = 0; + + { + + listOfPairs.parallelStream(). + peek(x -> counter++). + forEach(m -> + { +// Compare compare = new Compare(); + coreCompare(m, args[0],innerPool, outerPool); + if (counter % 1000 == 0) { + log.info("Finalized parsing " + counter + " files... remaing " + (listOfPairs.size() - counter)); + } + } + ); + } + }.counter; +// coreCompare(args[0],args[1],args[2],args[3]); + } + public static void coreCompare(String pairName, String treeType,JedisPool innerPool,JedisPool outerPool ) { + + +// String portInner = "6380"; +// String port = "6399"; + +// JedisPool innerPool = new JedisPool(PoolBuilder.getPoolConfig(), "127.0.0.1",Integer.valueOf(portInner),20000000); +// +// JedisPool outerPool = new JedisPool(PoolBuilder.getPoolConfig(), "127.0.0.1",Integer.valueOf(port),20000000); + + Map resultMap; + Jedis jedis = null; + ITree oldTree = null; + ITree newTree = null; + + try { + jedis = innerPool.getResource(); + + String[] split = pairName.split("_"); + + + String i = split[1]; + String j = split[2]; + String keyName = split[0]; + + switch (treeType) { + case "shape": + oldTree = EDiffHelper.getShapes(keyName, i, outerPool); + newTree = EDiffHelper.getShapes(keyName, j, outerPool); + break; + case "action": + oldTree = EDiffHelper.getActions(keyName, i, outerPool,innerPool); + newTree = EDiffHelper.getActions(keyName, j, outerPool,innerPool); + break; + case "token": + oldTree = EDiffHelper.getTokens(keyName, i, outerPool,innerPool); + newTree = EDiffHelper.getTokens(keyName, j, outerPool,innerPool); + List oldTokens = new ArrayList<>(); + List newTokens = new ArrayList<>(); + + + + + oldTokens = getNames(oldTree,oldTokens); + newTokens = getNames(newTree,newTokens); + + + CharSequence[] oldSequences = oldTokens.toArray(new CharSequence[oldTokens.size()]); + CharSequence[] newSequences = newTokens.toArray(new CharSequence[newTokens.size()]); + JaroWinklerDistance jwd = new JaroWinklerDistance(); + + Double overallSimi = Double.valueOf(0); + if(oldSequences.length > 0 && (oldSequences.length == newSequences.length)){ + for (int idx = 0; idx < newSequences.length; idx++) { + Double simi = jwd.apply(newSequences[idx], oldSequences[idx]); + overallSimi = simi + overallSimi; + } + overallSimi = overallSimi / oldSequences.length; + }else{ + overallSimi = Double.valueOf(0); +// if(oldSequences.length != 0) { +// log.info("ERROR"); +// } + } + + int retval = Double.compare(overallSimi, Double.valueOf(0.8)); + String matchKey = keyName+"_" + (String.valueOf(i)) + "_" + String.valueOf(j); + if(retval >= 0){ + + + + String result = i + "," + j + ","+String.join(",", oldTokens); + jedis.select(2); + jedis.set(matchKey, result); + } + jedis.select(0); + jedis.del(matchKey); + + return; + default: + break; + } + + Matcher m = Matchers.getInstance().getMatcher(oldTree, newTree); + m.match(); + + + ActionGenerator ag = new ActionGenerator(oldTree, newTree, m.getMappings()); + ag.generate(); + List actions = ag.getActions(); + + double chawatheSimilarity1 = m.chawatheSimilarity(oldTree, newTree); + String chawatheSimilarity = String.format("%1.2f", chawatheSimilarity1); + double diceSimilarity1 = m.diceSimilarity(oldTree, newTree); + String diceSimilarity = String.format("%1.2f", diceSimilarity1); + double jaccardSimilarity1 = m.jaccardSimilarity(oldTree, newTree); + String jaccardSimilarity = String.format("%1.2f", jaccardSimilarity1); + + String editDistance = String.valueOf(actions.size()); + + String result = i + "," + j + "," + chawatheSimilarity + "," + diceSimilarity + "," + jaccardSimilarity + "," + editDistance; + + String matchKey = keyName+"_" + (String.valueOf(i)) + "_" + String.valueOf(j); + + if (((Double) chawatheSimilarity1).equals(1.0) || ((Double) diceSimilarity1).equals(1.0) + || ((Double) jaccardSimilarity1).equals(1.0) || actions.size() == 0) { +// log.info("{} tagged to be similar" ,matchKey); + + jedis.select(2); + jedis.set(matchKey, result); + + } + + + jedis.select(0); + jedis.del(matchKey); + + + + } catch (Exception e) { + + log.debug("{} not comparable", pairName); +// e.printStackTrace(); + + + }finally { + if (jedis != null) { + jedis.close(); + } + } + } + + +} diff --git a/src/main/java/edu/lu/uni/serval/fixminer/akka/ediff/EDiffHunkParser.java b/src/main/java/edu/lu/uni/serval/fixminer/akka/ediff/EDiffHunkParser.java index c2b6309..667680b 100644 --- a/src/main/java/edu/lu/uni/serval/fixminer/akka/ediff/EDiffHunkParser.java +++ b/src/main/java/edu/lu/uni/serval/fixminer/akka/ediff/EDiffHunkParser.java @@ -4,6 +4,7 @@ import com.github.gumtreediff.actions.model.Delete; import com.github.gumtreediff.actions.model.Insert; import com.github.gumtreediff.actions.model.Move; import com.github.gumtreediff.actions.model.Update; +import edu.lu.uni.serval.utils.FileHelper; import java.io.*; import java.util.List; @@ -23,41 +24,41 @@ public class EDiffHunkParser extends EDiffParser { public void parseFixPatterns(File prevFile, File revFile, File diffentryFile,String project,String actionType) { List actionSets = parseChangedSourceCodeWithGumTree2(prevFile, revFile); if (actionSets.size() != 0) { - String folder= null; - boolean processActionSet = false; +// String folder= null; + boolean processActionSet = true; // switch (actionType){ // case "ALL": - if(actionType.equals("ALL")){ - folder = "/ALL/"; - processActionSet = true; - }else if(actionType.equals("UPD") || actionType.equals("INS") || actionType.equals("DEL") || actionType.equals("MOV")|| actionType.equals("MIX")){ - boolean isUPD = actionSets.stream().allMatch(p -> p.getAction() instanceof Update); - boolean isINS = actionSets.stream().allMatch(p -> p.getAction() instanceof Insert); - boolean isDEL = actionSets.stream().allMatch(p -> p.getAction() instanceof Delete); - boolean isMOV = actionSets.stream().allMatch(p -> p.getAction() instanceof Move); - if(isUPD){ - folder = "/UPD/"; - processActionSet = true; - }else if(isINS){ - folder = "/INS/"; - processActionSet = true; - }else if(isDEL){ - folder = "/DEL/"; - processActionSet = true; - }else if(isMOV){ - folder = "/MOV/"; - processActionSet = true; - }else{ - folder = "/MIX/"; - processActionSet = true; - } - }else{ - - - processActionSet = false; - System.err.print(actionType + "not known"); - - } +// if(actionType.equals("ALL")){ +// folder = "/ALL/"; +// processActionSet = true; +// }else if(actionType.equals("UPD") || actionType.equals("INS") || actionType.equals("DEL") || actionType.equals("MOV")|| actionType.equals("MIX")){ +// boolean isUPD = actionSets.stream().allMatch(p -> p.getAction() instanceof Update); +// boolean isINS = actionSets.stream().allMatch(p -> p.getAction() instanceof Insert); +// boolean isDEL = actionSets.stream().allMatch(p -> p.getAction() instanceof Delete); +// boolean isMOV = actionSets.stream().allMatch(p -> p.getAction() instanceof Move); +// if(isUPD){ +// folder = "/UPD/"; +// processActionSet = true; +// }else if(isINS){ +// folder = "/INS/"; +// processActionSet = true; +// }else if(isDEL){ +// folder = "/DEL/"; +// processActionSet = true; +// }else if(isMOV){ +// folder = "/MOV/"; +// processActionSet = true; +// }else{ +// folder = "/MIX/"; +// processActionSet = true; +// } +// }else{ +// +// +// processActionSet = false; +// System.err.print(actionType + "not known"); +// +// } int hunkSet = 0; @@ -70,12 +71,21 @@ public class EDiffHunkParser extends EDiffParser { FileOutputStream f = null; try { + + String astNodeType = actionSet.getAstNodeType(); + int size = actionSet.toString().split("\\n").length; + +// int size = actionSet.strList.size(); + String datasetName = project; String[] split1 = diffentryFile.getParent().split(datasetName); String root = split1[0]; String pj = split1[1].split("/")[1]; - String hunkTreeFileName = root + "EnhancedASTDiff" + datasetName + "/" + pj + folder + diffentryFile.getName() + "_" + String.valueOf(hunkSet); + File file = new File(root + "EnhancedASTDiff" + datasetName + "/"+astNodeType+"/"+String.valueOf(size)+"/"); + file.mkdirs(); + String hunkTreeFileName = root + "EnhancedASTDiff" + datasetName + "/"+astNodeType+"/"+String.valueOf(size)+"/" + pj +"_" + diffentryFile.getName() + "_" + String.valueOf(hunkSet); +// String hunkTreeFileName = root + "EnhancedASTDiff" + datasetName + "/" + pj + folder + diffentryFile.getName() + "_" + String.valueOf(hunkSet); f = new FileOutputStream(new File(hunkTreeFileName)); ObjectOutputStream o = new ObjectOutputStream(f); o.writeObject(actionSet); diff --git a/src/main/java/edu/lu/uni/serval/fixminer/akka/ediff/HierarchicalActionSet.java b/src/main/java/edu/lu/uni/serval/fixminer/akka/ediff/HierarchicalActionSet.java index 3a019e0..62f44e4 100644 --- a/src/main/java/edu/lu/uni/serval/fixminer/akka/ediff/HierarchicalActionSet.java +++ b/src/main/java/edu/lu/uni/serval/fixminer/akka/ediff/HierarchicalActionSet.java @@ -168,7 +168,7 @@ public class HierarchicalActionSet implements Comparable, return this.startPosition.compareTo(o.startPosition);//this.action.compareTo(o.action); } - + private List strList = new ArrayList<>(); @Override diff --git a/src/main/java/edu/lu/uni/serval/fixminer/jobs/AkkaTreeLoader.java b/src/main/java/edu/lu/uni/serval/fixminer/jobs/AkkaTreeLoader.java index e154673..915e4bc 100644 --- a/src/main/java/edu/lu/uni/serval/fixminer/jobs/AkkaTreeLoader.java +++ b/src/main/java/edu/lu/uni/serval/fixminer/jobs/AkkaTreeLoader.java @@ -8,11 +8,16 @@ import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; import java.io.BufferedReader; +import java.io.File; import java.io.FileReader; import java.io.IOException; +import java.util.Arrays; import java.util.HashMap; +import java.util.List; import java.util.Map; import java.util.regex.Pattern; +import java.util.stream.Collectors; +import java.util.stream.Stream; import static edu.lu.uni.serval.fixminer.akka.compare.AkkaTreeParser.akkaCompare; @@ -47,44 +52,63 @@ public class AkkaTreeLoader { - String pairsIndexFile = pairsPath + "/"+ chunkName; +// String pairsIndexFile = pairsPath + "/"+ chunkName; //0.txt.rdb - pairsIndexFile = pairsIndexFile.replace(chunk+".rdb",".index"); +// pairsIndexFile = pairsIndexFile.replace(chunk+".rdb",".index"); + File folder = new File(pairsPath); + File[] rootsFolder = folder.listFiles(); - Pattern pattern = Pattern.compile(","); - String csvFile = pairsIndexFile; - try { - try (BufferedReader in = new BufferedReader(new FileReader(csvFile));){ - Map namefreq = in - .lines() - .map(x -> pattern.split(x)) - .collect(HashMap::new, (map, x) -> - map.put(x[0], x[1]), - Map::putAll); + Stream stream = Arrays.stream(rootsFolder); + List roots = stream + .filter(x -> !x.getName().startsWith(".")) + .collect(Collectors.toList()); - Jedis inner = null; + for(File root:roots) { + + File[] files = root.listFiles(); + Stream fileStream = Arrays.stream(files); + List pairsIndexFiles = fileStream + .filter(x -> !x.getName().startsWith(".")) + .filter(x -> x.getName().endsWith(".index")) + .collect(Collectors.toList()); + for (File pairsIndexFile : pairsIndexFiles) { + + Pattern pattern = Pattern.compile(","); + String csvFile = pairsIndexFile.getPath(); try { - inner = outerPool.getResource(); + try (BufferedReader in = new BufferedReader(new FileReader(csvFile));) { + Map namefreq = in + .lines() + .map(x -> pattern.split(x)) + .collect(HashMap::new, (map, x) -> + map.put(root.getName()+"-"+pairsIndexFile.getName().split("\\.")[0]+"-"+x[0], x[1]), + Map::putAll); + + Jedis inner = null; + try { + inner = outerPool.getResource(); + + for (Map.Entry entry : namefreq.entrySet()) { + String key = entry.getKey(); + String value = entry.getValue(); + inner.select(1); + inner.set(key, value); + } + + + } finally { + if (inner != null) { + inner.close(); + } + } + - for (Map.Entry entry : namefreq.entrySet()) { - String key = entry.getKey(); - String value = entry.getValue(); - inner.select(1); - inner.set(key,value); - } - - - }finally { - if (inner != null) { - inner.close(); } + } catch (IOException e) { + e.printStackTrace(); } - - } - } catch (IOException e) { - e.printStackTrace(); } diff --git a/src/main/java/edu/lu/uni/serval/fixminer/jobs/EnhancedASTDiff.java b/src/main/java/edu/lu/uni/serval/fixminer/jobs/EnhancedASTDiff.java index afe421b..f2d3c44 100644 --- a/src/main/java/edu/lu/uni/serval/fixminer/jobs/EnhancedASTDiff.java +++ b/src/main/java/edu/lu/uni/serval/fixminer/jobs/EnhancedASTDiff.java @@ -50,15 +50,15 @@ public class EnhancedASTDiff { // a - if (actionType.equals("ALL")) { - FileHelper.createDirectory(GUM_TREE_OUTPUT + "/" + actionType); - } else { - FileHelper.createDirectory(GUM_TREE_OUTPUT + "/UPD"); - FileHelper.createDirectory(GUM_TREE_OUTPUT + "/INS"); - FileHelper.createDirectory(GUM_TREE_OUTPUT + "/DEL"); - FileHelper.createDirectory(GUM_TREE_OUTPUT + "/MOV"); - FileHelper.createDirectory(GUM_TREE_OUTPUT + "/MIX"); - } +// if (actionType.equals("ALL")) { +// FileHelper.createDirectory(GUM_TREE_OUTPUT + "/" + actionType); +// } else { +// FileHelper.createDirectory(GUM_TREE_OUTPUT + "/UPD"); +// FileHelper.createDirectory(GUM_TREE_OUTPUT + "/INS"); +// FileHelper.createDirectory(GUM_TREE_OUTPUT + "/DEL"); +// FileHelper.createDirectory(GUM_TREE_OUTPUT + "/MOV"); +// FileHelper.createDirectory(GUM_TREE_OUTPUT + "/MIX"); +// } } switch (parallelism){ diff --git a/src/main/java/edu/lu/uni/serval/fixminer/jobs/ImportPairs2DB.java b/src/main/java/edu/lu/uni/serval/fixminer/jobs/ImportPairs2DB.java index e3a04c7..585d082 100644 --- a/src/main/java/edu/lu/uni/serval/fixminer/jobs/ImportPairs2DB.java +++ b/src/main/java/edu/lu/uni/serval/fixminer/jobs/ImportPairs2DB.java @@ -30,36 +30,49 @@ public class ImportPairs2DB { File folder = new File(csvInputPath); File[] subFolders = folder.listFiles(); Stream stream = Arrays.stream(subFolders); - List pjs = stream - .filter(x -> x.getName().endsWith(chunkType)) + List roots = stream +// .filter(x -> x.getName().endsWith(chunkType)) .collect(Collectors.toList()); + Integer portInt = Integer.valueOf(portInner); - for (File pj : pjs) { + String cmd = "bash " + dbDir + "/" + "startServer.sh" + " %s %s %s"; + cmd = String.format(cmd, dbDir,"pairs.rdb", portInt); + log.info(cmd); + CallShell cs = new CallShell(); + cs.runShell(cmd, portInner); - String cmd = "bash "+dbDir + "/" + "startServer.sh" +" %s %s %s"; - cmd = String.format(cmd, dbDir,pj.getName() +".rdb", portInt); - log.info(cmd); - CallShell cs = new CallShell(); - cs.runShell(cmd, portInner); + for (File root : roots) { - cmd = "bash "+datasetPath + "/redisSingleImport.sh" +" %s %s"; + File[] files = root.listFiles(); + Stream fileStream = Arrays.stream(files); + List pairs = fileStream + .filter(x -> x.getName().endsWith(chunkType)) + .collect(Collectors.toList()); - cmd = String.format(cmd, pj.getPath(), portInt); - log.info(cmd); - cs.runShell(cmd,portInner); + for(File pj:pairs) { - String stopServer = "bash "+dbDir + "/" + "stopServer.sh" +" %s"; - String stopServer2 = String.format(stopServer,portInt); - cs.runShell(stopServer2, portInner); - portInt++; + + cmd = "bash " + datasetPath + "/redisSingleImport.sh" + " %s %s %s"; + + cmd = String.format(cmd, pj.getPath(), portInt,root.getName()+"-"+pj.getName().split("\\.")[0]); + + log.info(cmd); + cs.runShell(cmd,portInner); + + + } } + String stopServer = "bash " + dbDir + "/" + "stopServer.sh" + " %s"; + String stopServer2 = String.format(stopServer, portInt); + cs.runShell(stopServer2, portInner); +// portInt++; log.info(parameters); } diff --git a/src/main/java/edu/lu/uni/serval/fixminer/jobs/MultiThreadTreeLoaderCluster.java b/src/main/java/edu/lu/uni/serval/fixminer/jobs/MultiThreadTreeLoaderCluster.java index 9b993ad..84e487d 100644 --- a/src/main/java/edu/lu/uni/serval/fixminer/jobs/MultiThreadTreeLoaderCluster.java +++ b/src/main/java/edu/lu/uni/serval/fixminer/jobs/MultiThreadTreeLoaderCluster.java @@ -20,10 +20,8 @@ import redis.clients.jedis.ScanParams; import redis.clients.jedis.ScanResult; import java.io.*; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.Map; +import java.util.*; +import java.util.regex.Pattern; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -49,8 +47,8 @@ public class MultiThreadTreeLoaderCluster { - String cmd3; - cmd3 = "bash " + importScript +" %s %s"; +// String cmd3; +// cmd3 = "bash " + importScript +" %s %s"; JedisPool jedisPool = new JedisPool(PoolBuilder.getPoolConfig(), "127.0.0.1",Integer.valueOf(portInner),20000000); @@ -65,41 +63,74 @@ public class MultiThreadTreeLoaderCluster { .filter(x -> !x.getName().startsWith(".")) .collect(Collectors.toList()); - for (File f:folders){ + for (File f:folders) { // if(f.getName().startsWith("cluster0")) { + File[] files = f.listFiles(); + Stream fileStream = Arrays.stream(files); + + List pairs = fileStream + .filter(x -> !x.getName().startsWith(".")) + .filter(x -> !x.getName().endsWith(".index")) + .collect(Collectors.toList()); + for (File pair : pairs) { try (Jedis jedis = jedisPool.getResource()) { // do operations with jedis resource ScanParams sc = new ScanParams(); sc.count(cursor); - sc.match("pair_[0-9]*"); + sc.match(f.getName()+"*"); log.info("Scanning"); ScanResult scan = jedis.scan("0", sc); int size = scan.getResult().size(); if (size == 0) { - String comd = String.format(cmd3,f.getPath(),portInner); + String cmd3 = "bash " + importScript + " %s %s %s"; + + cmd3 = String.format(cmd3, pair.getPath(), portInner,f.getName()+"-"+pair.getName().split("\\.")[0]); +// String comd = String.format(cmd3, f.getPath(), portInner); // loadRedis(comd); - log.info("Importing {} pairs for cluster {}",size,f.getName()); - cs.runShell(comd,portInner); + log.info("Importing {} pairs for cluster {}", size, f.getName()); + cs.runShell(cmd3, portInner); scan = jedis.scan("0", sc); size = scan.getResult().size(); } - log.info("Scanned {} for cluster {}",String.valueOf(size),f.getName()); + log.info("Scanned {} for cluster {}", String.valueOf(size), f.getName()); + + Pattern pattern = Pattern.compile(","); + String csvFile = pair.getPath(); + csvFile = csvFile.replace("txt","index"); + try (BufferedReader in = new BufferedReader(new FileReader(csvFile));) { + Map namefreq = in + .lines() + .map(x -> pattern.split(x)) + .collect(HashMap::new, (map, x) -> + map.put(f.getName()+"-"+pair.getName().split("\\.")[0]+"-"+x[0], x[1]), + Map::putAll); + + for (Map.Entry entry : namefreq.entrySet()) { + String key = entry.getKey(); + String value = entry.getValue(); + jedis.select(1); + jedis.set(key, value); + } - String clusterName = f.getName().replaceAll("[^0-9]+", ""); + + } + + +// String clusterName = f.getName().replaceAll("[^0-9]+", ""); //76 scan.getResult().parallelStream() - .forEach(m -> coreCompare(m, jedisPool, clusterName,outerPool,type)); + .forEach(m -> coreCompare(m, jedisPool, f.getName(), outerPool, type)); jedis.save(); @@ -108,6 +139,7 @@ public class MultiThreadTreeLoaderCluster { // } + } } String stopServer = "bash "+dbDir + "/" + "stopServer.sh" +" %s"; String stopServer1 = String.format(stopServer,Integer.valueOf(portInner)); @@ -122,26 +154,40 @@ public class MultiThreadTreeLoaderCluster { - public static Pair getTree(String firstValue, JedisPool outerPool,String type){ + public static Pair getTree(String prefix,String firstValue, JedisPool outerPool,JedisPool innerPool){ ITree tree = null; Jedis inner = null; - String[] split2 = firstValue.split("/"); - - String fullFileName = split2[split2.length-1]; - String[] split = fullFileName.split(".txt_"); - String pureFileName = split[0]; - String[] splitPJ = split[1].split("_"); - String project = splitPJ[1]; - String actionSetPosition = splitPJ[0]; + Jedis outer = null; +// String[] split2 = firstValue.split("/"); +// +// String fullFileName = split2[split2.length-1]; +// String[] split = fullFileName.split(".txt_"); +// String pureFileName = split[0]; +// String[] splitPJ = split[1].split("_"); +// String project = splitPJ[1]; +// String actionSetPosition = splitPJ[0]; try { - inner = outerPool.getResource(); - String filename = project + "/"+type+"/" + pureFileName + ".txt_" + actionSetPosition; - String si= inner.get(filename); + inner = innerPool.getResource(); + inner.select(1); + String dist2load = inner.get(prefix+"-"+firstValue); + outer = outerPool.getResource(); + outer.select(0); + String s = null;//inner.get(prefix.replace("-","/") +"/"+dist2load); + Set keys = outer.keys(prefix.split("-")[0] + "/*/" + dist2load); + if(keys.size() == 1) { + s = (String) keys.toArray()[0]; + }else{ + throw new Error("cok key"); + } + + +// String filename = project + "/"+type+"/" + pureFileName + ".txt_" + actionSetPosition; + String si= outer.get(s); HierarchicalActionSet actionSet = (HierarchicalActionSet) EDiffHelper.fromString(si); @@ -161,8 +207,11 @@ public class MultiThreadTreeLoaderCluster { if (inner != null) { inner.close(); } + if (outer != null) { + outer.close(); + } } - Pair pair = new Pair<>(tree,project); + Pair pair = new Pair<>(tree,null); return pair; @@ -197,19 +246,20 @@ public class MultiThreadTreeLoaderCluster { catch (Exception e){ e.printStackTrace(); } - String firstValue = resultMap.get("0"); - String secondValue = resultMap.get("1"); +// String firstValue = resultMap.get("0"); +// String secondValue = resultMap.get("1"); try { - Pair oldPair = getTree(firstValue, outerPool,type); - Pair newPair = getTree(secondValue, outerPool,type); + String keyName = split[0]; + Pair oldPair = getTree(keyName,i, outerPool,jedisPool); + Pair newPair = getTree(keyName,j, outerPool,jedisPool); ITree oldTree = oldPair.getValue0(); ITree newTree = newPair.getValue0(); - String oldProject = oldPair.getValue1(); - String newProject = newPair.getValue1(); +// String oldProject = oldPair.getValue1(); +// String newProject = newPair.getValue1(); @@ -231,23 +281,24 @@ public class MultiThreadTreeLoaderCluster { String editDistance = String.valueOf(actions.size()); // jedis.select(1); - String result = resultMap.get("0") + "," + oldProject +"," + resultMap.get("1") + "," +newProject+ "," + chawatheSimilarity + "," + diceSimilarity + "," + jaccardSimilarity + "," + editDistance; + String result = i+ "," + j + "," + chawatheSimilarity + "," + diceSimilarity + "," + jaccardSimilarity + "," + editDistance; // jedis.set(resultKey, result); + String matchKey = keyName+"_" + (String.valueOf(i)) + "_" + String.valueOf(j); if (((Double) chawatheSimilarity1).equals(1.0) || ((Double) diceSimilarity1).equals(1.0) || ((Double) jaccardSimilarity1).equals(1.0) || actions.size() == 0) { - String matchKey = "match-"+clusterName+"_" + (String.valueOf(i)) + "_" + String.valueOf(j); - jedis.select(1); + jedis.select(2); jedis.set(matchKey, result); } jedis.select(0); - String pairKey = "pair_" + (String.valueOf(i)) + "_" + String.valueOf(j); - jedis.del(pairKey); + + jedis.del(matchKey); // log.info("Completed " + resultKey); }catch (Exception e){ log.debug(e.toString() + " {}",(name)); + e.printStackTrace(); } diff --git a/src/main/java/edu/lu/uni/serval/fixminer/jobs/StoreEDiffInCache.java b/src/main/java/edu/lu/uni/serval/fixminer/jobs/StoreEDiffInCache.java index 2fbb676..e04f260 100644 --- a/src/main/java/edu/lu/uni/serval/fixminer/jobs/StoreEDiffInCache.java +++ b/src/main/java/edu/lu/uni/serval/fixminer/jobs/StoreEDiffInCache.java @@ -38,42 +38,55 @@ public class StoreEDiffInCache { File folder = new File(inputPath); File[] subFolders = folder.listFiles(); Stream stream = Arrays.stream(subFolders); - List pjs = stream + List roots = stream .filter(x -> !x.getName().startsWith(".")) .collect(Collectors.toList()); List workList = new ArrayList(); File[] dumps; - for (File pj : pjs) { - String pjName = pj.getName(); - File[] files = pj.listFiles(); - Stream fileStream = Arrays.stream(files); - List fs; -// if (operation.equals("ALLOP")){ -// fs= fileStream -// .filter(x -> x.getName().startsWith("UPD") || -// x.getName().startsWith("INS") || -// x.getName().startsWith("DEL") || -// x.getName().startsWith("MOV")) -// .collect(Collectors.toList()); -// File[] files1 = fs.get(0).listFiles(); -// File[] files2 = fs.get(1).listFiles(); -// File[] files3 = fs.get(2).listFiles(); -// File[] files4 = fs.get(3).listFiles(); -// dumps = Stream.of(files1, files2, files3,files4).flatMap(Stream::of).toArray(File[]::new); -// }else{ - fs = fileStream - .filter(x -> x.getName().startsWith(operation)) - .collect(Collectors.toList()); - dumps = fs.get(0).listFiles(); -// } + for (File root : roots) { + String pjName = root.getName(); + File[] sizes = root.listFiles(); + Stream sizesStream = Arrays.stream(sizes); + List sizeFolders = sizesStream + .filter(x -> !x.getName().startsWith(".")) + .collect(Collectors.toList()); + + for (File sf:sizeFolders){ + File[] files = sf.listFiles(); + int length = files.length; + if (length == 1) + continue; + + Stream fileStream = Arrays.stream(files); + List fs; + // if (operation.equals("ALLOP")){ + // fs= fileStream + // .filter(x -> x.getName().startsWith("UPD") || + // x.getName().startsWith("INS") || + // x.getName().startsWith("DEL") || + // x.getName().startsWith("MOV")) + // .collect(Collectors.toList()); + // File[] files1 = fs.get(0).listFiles(); + // File[] files2 = fs.get(1).listFiles(); + // File[] files3 = fs.get(2).listFiles(); + // File[] files4 = fs.get(3).listFiles(); + // dumps = Stream.of(files1, files2, files3,files4).flatMap(Stream::of).toArray(File[]::new); + // }else{ +// fs = fileStream +// .filter(x -> x.getName().startsWith(operation)) +// .collect(Collectors.toList()); +// dumps = fs.get(0).listFiles(); + // } - for (File f : dumps) { - String name = f.getName(); + for (File f : files) { + String name = f.getName(); + + String key = pjName + "/"+ sf.getName()+"/" + name; + String result = key +","+f.getPath(); + workList.add(result); + } - String key = pjName + "/"+ operation+"/" + name; - String result = key +","+f.getPath(); - workList.add(result); } } diff --git a/src/main/java/edu/lu/uni/serval/utils/ClusterToPattern.java b/src/main/java/edu/lu/uni/serval/utils/ClusterToPattern.java new file mode 100644 index 0000000..0285940 --- /dev/null +++ b/src/main/java/edu/lu/uni/serval/utils/ClusterToPattern.java @@ -0,0 +1,71 @@ +package edu.lu.uni.serval.utils; + +import com.github.gumtreediff.tree.ITree; +import com.github.gumtreediff.tree.TreeContext; +import edu.lu.uni.serval.fixminer.akka.ediff.HierarchicalActionSet; +import redis.clients.jedis.Jedis; +import redis.clients.jedis.JedisPool; + +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.util.Arrays; +import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +public class ClusterToPattern { + + public static void main(String[] args) throws IOException, ClassNotFoundException { + String shapesFolder = "/Users/anil.koyuncu/projects/fixminer-all/enhancedASTDiff/python/data/shapes"; + + String port = "6399"; + JedisPool outerPool = new JedisPool(PoolBuilder.getPoolConfig(), "127.0.0.1",Integer.valueOf(port),20000000); + + File folder = new File(shapesFolder); + + File[] listOfFiles = folder.listFiles(); + Stream stream = Arrays.stream(listOfFiles); + List shapes = stream + .filter(x -> !x.getName().startsWith(".")) + .filter(x -> !x.getName().endsWith(".pickle")) + .collect(Collectors.toList()); + for(File shape:shapes){ + File[] clusters = shape.listFiles(); + Stream fileStream = Arrays.stream(clusters); + List fileList = fileStream.filter(x -> !x.getName().startsWith(".")) + .collect(Collectors.toList()); + for(File cluster:fileList){ + File[] files = cluster.listFiles(); + File file = files[0]; + String key = shape.getName() + "/*/"+file.getName(); + Jedis outer = outerPool.getResource(); + String s = null;//inner.get(prefix.replace("-","/") +"/"+dist2load); + Set keys = outer.keys(key); + if (keys.size() == 1) { + s = (String) keys.toArray()[0]; + } else { + throw new Error("cok key"); + } + + String si = outer.get(s); + HierarchicalActionSet actionSet = (HierarchicalActionSet) EDiffHelper.fromString(si); + + + String s1 = actionSet.toString(); + File saveFile = new File(folder.getParent()+"/shapePatterns/" +shape.getName()+"/"+cluster.getName()+".pattern"); + saveFile.getParentFile().mkdirs(); + BufferedWriter writer = new BufferedWriter(new FileWriter(saveFile)); + writer.write(s1); + + writer.close(); + + + } + + } + + } +} diff --git a/src/main/java/edu/lu/uni/serval/utils/EDiffHelper.java b/src/main/java/edu/lu/uni/serval/utils/EDiffHelper.java index 10fddfe..766f154 100644 --- a/src/main/java/edu/lu/uni/serval/utils/EDiffHelper.java +++ b/src/main/java/edu/lu/uni/serval/utils/EDiffHelper.java @@ -10,10 +10,7 @@ import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; import java.io.*; -import java.util.Base64; -import java.util.List; -import java.util.Map; -import java.util.Objects; +import java.util.*; import java.util.stream.Collectors; /** @@ -130,7 +127,7 @@ public class EDiffHelper { .collect(Collectors.toList()); } - public static ITree getSimpliedTree(String fn, JedisPool outerPool) { + public static ITree getSimpliedTree(String prefix, String fn, JedisPool outerPool) { ITree tree = null; Jedis inner = null; @@ -140,9 +137,9 @@ public class EDiffHelper { log.info("wait"); } inner.select(1); - String dist2load = inner.get(fn); + String dist2load = inner.get(prefix+"-"+fn); inner.select(0); - String s = inner.get(dist2load); + String s = inner.get(prefix.replace("-","/") +"/"+dist2load); HierarchicalActionSet actionSet = (HierarchicalActionSet) EDiffHelper.fromString(s); ITree parent = null; @@ -164,6 +161,152 @@ public class EDiffHelper { return tree; } + + + public static ITree getShapes(String prefix, String fn, JedisPool outerPool) { + + ITree tree = null; + Jedis inner = null; + try { + inner = outerPool.getResource(); + while (!inner.ping().equals("PONG")){ + log.info("wait"); + } + inner.select(1); + String dist2load = inner.get(prefix+"-"+fn); + inner.select(0); + String s = inner.get(prefix.replace("-","/") +"/"+dist2load); + HierarchicalActionSet actionSet = (HierarchicalActionSet) EDiffHelper.fromString(s); + + ITree parent = null; + ITree children =null; + TreeContext tc = new TreeContext(); + tree = EDiffHelper.getASTTree(actionSet, parent, children,tc); + //tree.setParent(null); + tc.validate(); + + } catch (IOException e) { + e.printStackTrace(); + } catch (ClassNotFoundException e) { + e.printStackTrace(); + }finally { + if (inner != null) { + inner.close(); + } + } + return tree; + + } + + + public static ITree getActions(String prefix,String firstValue, JedisPool outerPool,JedisPool innerPool) { + + + ITree tree = null; + Jedis inner = null; + Jedis outer = null; + + + try { + inner = innerPool.getResource(); + inner.select(1); + String dist2load = inner.get(prefix + "-" + firstValue); + outer = outerPool.getResource(); + outer.select(0); + String s = null;//inner.get(prefix.replace("-","/") +"/"+dist2load); + Set keys = outer.keys(prefix.split("-")[0] + "/*/" + dist2load); + if (keys.size() == 1) { + s = (String) keys.toArray()[0]; + } else { + throw new Error("cok key"); + } + + +// String filename = project + "/"+type+"/" + pureFileName + ".txt_" + actionSetPosition; + String si = outer.get(s); + HierarchicalActionSet actionSet = (HierarchicalActionSet) EDiffHelper.fromString(si); + + + ITree parent = null; + ITree children = null; + TreeContext tc = new TreeContext(); + tree = EDiffHelper.getActionTree(actionSet, parent, children, tc); + //tree.setParent(null); + tc.validate(); + + + } catch (IOException e) { + e.printStackTrace(); + } catch (ClassNotFoundException e) { + e.printStackTrace(); + } finally { + if (inner != null) { + inner.close(); + } + if (outer != null) { + outer.close(); + } + } + + return tree; + } + + + public static ITree getTokens(String prefix,String firstValue, JedisPool outerPool,JedisPool innerPool) { + + + ITree tree = null; + Jedis inner = null; + Jedis outer = null; + + + try { + inner = innerPool.getResource(); + inner.select(1); + String dist2load = inner.get(prefix + "-" + firstValue); + outer = outerPool.getResource(); + outer.select(0); + String s = null;//inner.get(prefix.replace("-","/") +"/"+dist2load); + Set keys = outer.keys(prefix.split("-")[0] + "/*/" + dist2load); + if (keys.size() == 1) { + s = (String) keys.toArray()[0]; + } else { + throw new Error("cok key"); + } + + +// String filename = project + "/"+type+"/" + pureFileName + ".txt_" + actionSetPosition; + String si = outer.get(s); + HierarchicalActionSet actionSet = (HierarchicalActionSet) EDiffHelper.fromString(si); + + + ITree parent = null; + ITree children = null; + TreeContext tc = new TreeContext(); + tree = EDiffHelper.getTokenTree(actionSet, parent, children, tc); + tree.setParent(null); + tc.validate(); + + + } catch (IOException e) { + e.printStackTrace(); + } catch (ClassNotFoundException e) { + e.printStackTrace(); + } finally { + if (inner != null) { + inner.close(); + } + if (outer != null) { + outer.close(); + } + } + + return tree; + } + + + + public static ITree getActionTree(HierarchicalActionSet actionSet, ITree parent, ITree children,TreeContext tc){ int newType = 0;