diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000000..26d33521af --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/.idea/compiler.xml b/.idea/compiler.xml new file mode 100644 index 0000000000..f943861d57 --- /dev/null +++ b/.idea/compiler.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/desafio-dev (2).iml b/.idea/desafio-dev (2).iml new file mode 100644 index 0000000000..d6ebd48059 --- /dev/null +++ b/.idea/desafio-dev (2).iml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/.idea/encodings.xml b/.idea/encodings.xml new file mode 100644 index 0000000000..c7fab45ca9 --- /dev/null +++ b/.idea/encodings.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml new file mode 100644 index 0000000000..712ab9d985 --- /dev/null +++ b/.idea/jarRepositories.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/jpa-buddy.xml b/.idea/jpa-buddy.xml new file mode 100644 index 0000000000..d08f40080c --- /dev/null +++ b/.idea/jpa-buddy.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__antlr_antlr_2_7_7.xml b/.idea/libraries/Maven__antlr_antlr_2_7_7.xml new file mode 100644 index 0000000000..b8d93d8e01 --- /dev/null +++ b/.idea/libraries/Maven__antlr_antlr_2_7_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_12.xml b/.idea/libraries/Maven__ch_qos_logback_logback_classic_1_2_12.xml new file mode 100644 index 0000000000..5756609bcd --- /dev/null +++ b/.idea/libraries/Maven__ch_qos_logback_logback_classic_1_2_12.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__ch_qos_logback_logback_core_1_2_12.xml b/.idea/libraries/Maven__ch_qos_logback_logback_core_1_2_12.xml new file mode 100644 index 0000000000..4e4a6dc65f --- /dev/null +++ b/.idea/libraries/Maven__ch_qos_logback_logback_core_1_2_12.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_fasterxml_classmate_1_5_1.xml b/.idea/libraries/Maven__com_fasterxml_classmate_1_5_1.xml new file mode 100644 index 0000000000..bc7d7fd869 --- /dev/null +++ b/.idea/libraries/Maven__com_fasterxml_classmate_1_5_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_annotations_2_13_5.xml b/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_annotations_2_13_5.xml new file mode 100644 index 0000000000..26088bfb83 --- /dev/null +++ b/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_annotations_2_13_5.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_core_2_13_5.xml b/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_core_2_13_5.xml new file mode 100644 index 0000000000..fe70acf74e --- /dev/null +++ b/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_core_2_13_5.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_databind_2_13_5.xml b/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_databind_2_13_5.xml new file mode 100644 index 0000000000..1972d6b4ec --- /dev/null +++ b/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_databind_2_13_5.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_fasterxml_jackson_datatype_jackson_datatype_jdk8_2_13_5.xml b/.idea/libraries/Maven__com_fasterxml_jackson_datatype_jackson_datatype_jdk8_2_13_5.xml new file mode 100644 index 0000000000..7d20d35004 --- /dev/null +++ b/.idea/libraries/Maven__com_fasterxml_jackson_datatype_jackson_datatype_jdk8_2_13_5.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_fasterxml_jackson_datatype_jackson_datatype_jsr310_2_13_5.xml b/.idea/libraries/Maven__com_fasterxml_jackson_datatype_jackson_datatype_jsr310_2_13_5.xml new file mode 100644 index 0000000000..59de5d2937 --- /dev/null +++ b/.idea/libraries/Maven__com_fasterxml_jackson_datatype_jackson_datatype_jsr310_2_13_5.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_fasterxml_jackson_module_jackson_module_parameter_names_2_13_5.xml b/.idea/libraries/Maven__com_fasterxml_jackson_module_jackson_module_parameter_names_2_13_5.xml new file mode 100644 index 0000000000..b948660980 --- /dev/null +++ b/.idea/libraries/Maven__com_fasterxml_jackson_module_jackson_module_parameter_names_2_13_5.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_h2database_h2_2_1_214.xml b/.idea/libraries/Maven__com_h2database_h2_2_1_214.xml new file mode 100644 index 0000000000..c3365cc665 --- /dev/null +++ b/.idea/libraries/Maven__com_h2database_h2_2_1_214.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_jayway_jsonpath_json_path_2_7_0.xml b/.idea/libraries/Maven__com_jayway_jsonpath_json_path_2_7_0.xml new file mode 100644 index 0000000000..65ee6e6377 --- /dev/null +++ b/.idea/libraries/Maven__com_jayway_jsonpath_json_path_2_7_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_mysql_mysql_connector_j_8_0_33.xml b/.idea/libraries/Maven__com_mysql_mysql_connector_j_8_0_33.xml new file mode 100644 index 0000000000..a300a6a4a7 --- /dev/null +++ b/.idea/libraries/Maven__com_mysql_mysql_connector_j_8_0_33.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_sun_activation_jakarta_activation_1_2_2.xml b/.idea/libraries/Maven__com_sun_activation_jakarta_activation_1_2_2.xml new file mode 100644 index 0000000000..fea99f0263 --- /dev/null +++ b/.idea/libraries/Maven__com_sun_activation_jakarta_activation_1_2_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_sun_istack_istack_commons_runtime_3_0_12.xml b/.idea/libraries/Maven__com_sun_istack_istack_commons_runtime_3_0_12.xml new file mode 100644 index 0000000000..9f0fc0526e --- /dev/null +++ b/.idea/libraries/Maven__com_sun_istack_istack_commons_runtime_3_0_12.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_vaadin_external_google_android_json_0_0_20131108_vaadin1.xml b/.idea/libraries/Maven__com_vaadin_external_google_android_json_0_0_20131108_vaadin1.xml new file mode 100644 index 0000000000..b8581a6f5e --- /dev/null +++ b/.idea/libraries/Maven__com_vaadin_external_google_android_json_0_0_20131108_vaadin1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_zaxxer_HikariCP_4_0_3.xml b/.idea/libraries/Maven__com_zaxxer_HikariCP_4_0_3.xml new file mode 100644 index 0000000000..9314c366fc --- /dev/null +++ b/.idea/libraries/Maven__com_zaxxer_HikariCP_4_0_3.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__jakarta_activation_jakarta_activation_api_1_2_2.xml b/.idea/libraries/Maven__jakarta_activation_jakarta_activation_api_1_2_2.xml new file mode 100644 index 0000000000..be90656e69 --- /dev/null +++ b/.idea/libraries/Maven__jakarta_activation_jakarta_activation_api_1_2_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__jakarta_annotation_jakarta_annotation_api_1_3_5.xml b/.idea/libraries/Maven__jakarta_annotation_jakarta_annotation_api_1_3_5.xml new file mode 100644 index 0000000000..cba9dd244f --- /dev/null +++ b/.idea/libraries/Maven__jakarta_annotation_jakarta_annotation_api_1_3_5.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__jakarta_persistence_jakarta_persistence_api_2_2_3.xml b/.idea/libraries/Maven__jakarta_persistence_jakarta_persistence_api_2_2_3.xml new file mode 100644 index 0000000000..c11957d98c --- /dev/null +++ b/.idea/libraries/Maven__jakarta_persistence_jakarta_persistence_api_2_2_3.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__jakarta_transaction_jakarta_transaction_api_1_3_3.xml b/.idea/libraries/Maven__jakarta_transaction_jakarta_transaction_api_1_3_3.xml new file mode 100644 index 0000000000..5b31fe5007 --- /dev/null +++ b/.idea/libraries/Maven__jakarta_transaction_jakarta_transaction_api_1_3_3.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__jakarta_xml_bind_jakarta_xml_bind_api_2_3_3.xml b/.idea/libraries/Maven__jakarta_xml_bind_jakarta_xml_bind_api_2_3_3.xml new file mode 100644 index 0000000000..04213f7386 --- /dev/null +++ b/.idea/libraries/Maven__jakarta_xml_bind_jakarta_xml_bind_api_2_3_3.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__net_bytebuddy_byte_buddy_1_12_23.xml b/.idea/libraries/Maven__net_bytebuddy_byte_buddy_1_12_23.xml new file mode 100644 index 0000000000..80961a6075 --- /dev/null +++ b/.idea/libraries/Maven__net_bytebuddy_byte_buddy_1_12_23.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__net_bytebuddy_byte_buddy_agent_1_12_23.xml b/.idea/libraries/Maven__net_bytebuddy_byte_buddy_agent_1_12_23.xml new file mode 100644 index 0000000000..5df1219f87 --- /dev/null +++ b/.idea/libraries/Maven__net_bytebuddy_byte_buddy_agent_1_12_23.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__net_minidev_accessors_smart_2_4_11.xml b/.idea/libraries/Maven__net_minidev_accessors_smart_2_4_11.xml new file mode 100644 index 0000000000..e0b4d98978 --- /dev/null +++ b/.idea/libraries/Maven__net_minidev_accessors_smart_2_4_11.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__net_minidev_json_smart_2_4_11.xml b/.idea/libraries/Maven__net_minidev_json_smart_2_4_11.xml new file mode 100644 index 0000000000..3e094f2a6c --- /dev/null +++ b/.idea/libraries/Maven__net_minidev_json_smart_2_4_11.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_apache_commons_commons_lang3_3_13_0.xml b/.idea/libraries/Maven__org_apache_commons_commons_lang3_3_13_0.xml new file mode 100644 index 0000000000..4f24d070e0 --- /dev/null +++ b/.idea/libraries/Maven__org_apache_commons_commons_lang3_3_13_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_apache_logging_log4j_log4j_api_2_17_2.xml b/.idea/libraries/Maven__org_apache_logging_log4j_log4j_api_2_17_2.xml new file mode 100644 index 0000000000..0a8d4ff086 --- /dev/null +++ b/.idea/libraries/Maven__org_apache_logging_log4j_log4j_api_2_17_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_apache_logging_log4j_log4j_to_slf4j_2_17_2.xml b/.idea/libraries/Maven__org_apache_logging_log4j_log4j_to_slf4j_2_17_2.xml new file mode 100644 index 0000000000..a4f16500ac --- /dev/null +++ b/.idea/libraries/Maven__org_apache_logging_log4j_log4j_to_slf4j_2_17_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_core_9_0_79.xml b/.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_core_9_0_79.xml new file mode 100644 index 0000000000..f768be73a4 --- /dev/null +++ b/.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_core_9_0_79.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_el_9_0_79.xml b/.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_el_9_0_79.xml new file mode 100644 index 0000000000..50a3d58a89 --- /dev/null +++ b/.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_el_9_0_79.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_websocket_9_0_79.xml b/.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_websocket_9_0_79.xml new file mode 100644 index 0000000000..6861ab8d75 --- /dev/null +++ b/.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_websocket_9_0_79.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_apiguardian_apiguardian_api_1_1_2.xml b/.idea/libraries/Maven__org_apiguardian_apiguardian_api_1_1_2.xml new file mode 100644 index 0000000000..6ac1c42c6b --- /dev/null +++ b/.idea/libraries/Maven__org_apiguardian_apiguardian_api_1_1_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_aspectj_aspectjweaver_1_9_7.xml b/.idea/libraries/Maven__org_aspectj_aspectjweaver_1_9_7.xml new file mode 100644 index 0000000000..bbaf9a7fc6 --- /dev/null +++ b/.idea/libraries/Maven__org_aspectj_aspectjweaver_1_9_7.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_assertj_assertj_core_3_22_0.xml b/.idea/libraries/Maven__org_assertj_assertj_core_3_22_0.xml new file mode 100644 index 0000000000..a08417465b --- /dev/null +++ b/.idea/libraries/Maven__org_assertj_assertj_core_3_22_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_atteo_evo_inflector_1_3.xml b/.idea/libraries/Maven__org_atteo_evo_inflector_1_3.xml new file mode 100644 index 0000000000..d2edf90961 --- /dev/null +++ b/.idea/libraries/Maven__org_atteo_evo_inflector_1_3.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_attoparser_attoparser_2_0_5_RELEASE.xml b/.idea/libraries/Maven__org_attoparser_attoparser_2_0_5_RELEASE.xml new file mode 100644 index 0000000000..5bad7db849 --- /dev/null +++ b/.idea/libraries/Maven__org_attoparser_attoparser_2_0_5_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_glassfish_jaxb_jaxb_runtime_2_3_8.xml b/.idea/libraries/Maven__org_glassfish_jaxb_jaxb_runtime_2_3_8.xml new file mode 100644 index 0000000000..e23be422db --- /dev/null +++ b/.idea/libraries/Maven__org_glassfish_jaxb_jaxb_runtime_2_3_8.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_glassfish_jaxb_txw2_2_3_8.xml b/.idea/libraries/Maven__org_glassfish_jaxb_txw2_2_3_8.xml new file mode 100644 index 0000000000..8789537e5c --- /dev/null +++ b/.idea/libraries/Maven__org_glassfish_jaxb_txw2_2_3_8.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_hamcrest_hamcrest_2_2.xml b/.idea/libraries/Maven__org_hamcrest_hamcrest_2_2.xml new file mode 100644 index 0000000000..6b5496ff09 --- /dev/null +++ b/.idea/libraries/Maven__org_hamcrest_hamcrest_2_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_hibernate_common_hibernate_commons_annotations_5_1_2_Final.xml b/.idea/libraries/Maven__org_hibernate_common_hibernate_commons_annotations_5_1_2_Final.xml new file mode 100644 index 0000000000..a775836a02 --- /dev/null +++ b/.idea/libraries/Maven__org_hibernate_common_hibernate_commons_annotations_5_1_2_Final.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_hibernate_hibernate_core_5_6_15_Final.xml b/.idea/libraries/Maven__org_hibernate_hibernate_core_5_6_15_Final.xml new file mode 100644 index 0000000000..941a9d837c --- /dev/null +++ b/.idea/libraries/Maven__org_hibernate_hibernate_core_5_6_15_Final.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_jboss_jandex_2_4_2_Final.xml b/.idea/libraries/Maven__org_jboss_jandex_2_4_2_Final.xml new file mode 100644 index 0000000000..e65fbd02bc --- /dev/null +++ b/.idea/libraries/Maven__org_jboss_jandex_2_4_2_Final.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_jboss_logging_jboss_logging_3_4_3_Final.xml b/.idea/libraries/Maven__org_jboss_logging_jboss_logging_3_4_3_Final.xml new file mode 100644 index 0000000000..5845c01816 --- /dev/null +++ b/.idea/libraries/Maven__org_jboss_logging_jboss_logging_3_4_3_Final.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_5_8_2.xml b/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_5_8_2.xml new file mode 100644 index 0000000000..4f367e75fd --- /dev/null +++ b/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_5_8_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_api_5_8_2.xml b/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_api_5_8_2.xml new file mode 100644 index 0000000000..8e5078321a --- /dev/null +++ b/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_api_5_8_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_engine_5_8_2.xml b/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_engine_5_8_2.xml new file mode 100644 index 0000000000..fc8291b349 --- /dev/null +++ b/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_engine_5_8_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_params_5_8_2.xml b/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_params_5_8_2.xml new file mode 100644 index 0000000000..4b3ffb131c --- /dev/null +++ b/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_params_5_8_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_junit_platform_junit_platform_commons_1_8_2.xml b/.idea/libraries/Maven__org_junit_platform_junit_platform_commons_1_8_2.xml new file mode 100644 index 0000000000..181d0959f7 --- /dev/null +++ b/.idea/libraries/Maven__org_junit_platform_junit_platform_commons_1_8_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_junit_platform_junit_platform_engine_1_8_2.xml b/.idea/libraries/Maven__org_junit_platform_junit_platform_engine_1_8_2.xml new file mode 100644 index 0000000000..5f3aebea8b --- /dev/null +++ b/.idea/libraries/Maven__org_junit_platform_junit_platform_engine_1_8_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_mockito_mockito_core_4_5_1.xml b/.idea/libraries/Maven__org_mockito_mockito_core_4_5_1.xml new file mode 100644 index 0000000000..68542c238e --- /dev/null +++ b/.idea/libraries/Maven__org_mockito_mockito_core_4_5_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_mockito_mockito_junit_jupiter_4_5_1.xml b/.idea/libraries/Maven__org_mockito_mockito_junit_jupiter_4_5_1.xml new file mode 100644 index 0000000000..42f334fbb7 --- /dev/null +++ b/.idea/libraries/Maven__org_mockito_mockito_junit_jupiter_4_5_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_objenesis_objenesis_3_2.xml b/.idea/libraries/Maven__org_objenesis_objenesis_3_2.xml new file mode 100644 index 0000000000..6613def613 --- /dev/null +++ b/.idea/libraries/Maven__org_objenesis_objenesis_3_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_opentest4j_opentest4j_1_2_0.xml b/.idea/libraries/Maven__org_opentest4j_opentest4j_1_2_0.xml new file mode 100644 index 0000000000..fbc1b1635a --- /dev/null +++ b/.idea/libraries/Maven__org_opentest4j_opentest4j_1_2_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_ow2_asm_asm_9_3.xml b/.idea/libraries/Maven__org_ow2_asm_asm_9_3.xml new file mode 100644 index 0000000000..ce5a26c8d5 --- /dev/null +++ b/.idea/libraries/Maven__org_ow2_asm_asm_9_3.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_projectlombok_lombok_1_18_28.xml b/.idea/libraries/Maven__org_projectlombok_lombok_1_18_28.xml new file mode 100644 index 0000000000..8374dd411a --- /dev/null +++ b/.idea/libraries/Maven__org_projectlombok_lombok_1_18_28.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_skyscreamer_jsonassert_1_5_1.xml b/.idea/libraries/Maven__org_skyscreamer_jsonassert_1_5_1.xml new file mode 100644 index 0000000000..56582d6303 --- /dev/null +++ b/.idea/libraries/Maven__org_skyscreamer_jsonassert_1_5_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_slf4j_jul_to_slf4j_1_7_36.xml b/.idea/libraries/Maven__org_slf4j_jul_to_slf4j_1_7_36.xml new file mode 100644 index 0000000000..5d5c14ba2c --- /dev/null +++ b/.idea/libraries/Maven__org_slf4j_jul_to_slf4j_1_7_36.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_slf4j_slf4j_api_1_7_36.xml b/.idea/libraries/Maven__org_slf4j_slf4j_api_1_7_36.xml new file mode 100644 index 0000000000..2d759c1e91 --- /dev/null +++ b/.idea/libraries/Maven__org_slf4j_slf4j_api_1_7_36.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_boot_spring_boot_2_7_15.xml b/.idea/libraries/Maven__org_springframework_boot_spring_boot_2_7_15.xml new file mode 100644 index 0000000000..a6a5ce4f3f --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_boot_spring_boot_2_7_15.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_boot_spring_boot_autoconfigure_2_7_15.xml b/.idea/libraries/Maven__org_springframework_boot_spring_boot_autoconfigure_2_7_15.xml new file mode 100644 index 0000000000..0b3b5ae5ba --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_boot_spring_boot_autoconfigure_2_7_15.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_boot_spring_boot_devtools_2_7_15.xml b/.idea/libraries/Maven__org_springframework_boot_spring_boot_devtools_2_7_15.xml new file mode 100644 index 0000000000..6a204f009d --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_boot_spring_boot_devtools_2_7_15.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_2_7_15.xml b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_2_7_15.xml new file mode 100644 index 0000000000..5084ffb14a --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_2_7_15.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_aop_2_7_15.xml b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_aop_2_7_15.xml new file mode 100644 index 0000000000..83b0a6c0fc --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_aop_2_7_15.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_data_jpa_2_7_15.xml b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_data_jpa_2_7_15.xml new file mode 100644 index 0000000000..fa6c993269 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_data_jpa_2_7_15.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_data_rest_2_7_15.xml b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_data_rest_2_7_15.xml new file mode 100644 index 0000000000..c0c193add6 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_data_rest_2_7_15.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_jdbc_2_7_15.xml b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_jdbc_2_7_15.xml new file mode 100644 index 0000000000..d61d29232f --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_jdbc_2_7_15.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_json_2_7_15.xml b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_json_2_7_15.xml new file mode 100644 index 0000000000..e3bebfa8e6 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_json_2_7_15.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_logging_2_7_15.xml b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_logging_2_7_15.xml new file mode 100644 index 0000000000..1a251fb782 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_logging_2_7_15.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_test_2_7_15.xml b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_test_2_7_15.xml new file mode 100644 index 0000000000..c095504c3d --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_test_2_7_15.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_thymeleaf_2_7_15.xml b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_thymeleaf_2_7_15.xml new file mode 100644 index 0000000000..62d553fc34 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_thymeleaf_2_7_15.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_tomcat_2_7_15.xml b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_tomcat_2_7_15.xml new file mode 100644 index 0000000000..2434fe26b9 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_tomcat_2_7_15.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_web_2_7_15.xml b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_web_2_7_15.xml new file mode 100644 index 0000000000..5c7b55d0f8 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_web_2_7_15.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_boot_spring_boot_test_2_7_15.xml b/.idea/libraries/Maven__org_springframework_boot_spring_boot_test_2_7_15.xml new file mode 100644 index 0000000000..fb20d8b2cf --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_boot_spring_boot_test_2_7_15.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_boot_spring_boot_test_autoconfigure_2_7_15.xml b/.idea/libraries/Maven__org_springframework_boot_spring_boot_test_autoconfigure_2_7_15.xml new file mode 100644 index 0000000000..4a54f37b6f --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_boot_spring_boot_test_autoconfigure_2_7_15.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_data_spring_data_commons_2_7_15.xml b/.idea/libraries/Maven__org_springframework_data_spring_data_commons_2_7_15.xml new file mode 100644 index 0000000000..8d30cfb1ae --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_data_spring_data_commons_2_7_15.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_data_spring_data_jpa_2_7_15.xml b/.idea/libraries/Maven__org_springframework_data_spring_data_jpa_2_7_15.xml new file mode 100644 index 0000000000..a89fd247ae --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_data_spring_data_jpa_2_7_15.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_data_spring_data_rest_core_3_7_15.xml b/.idea/libraries/Maven__org_springframework_data_spring_data_rest_core_3_7_15.xml new file mode 100644 index 0000000000..6f00b41504 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_data_spring_data_rest_core_3_7_15.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_data_spring_data_rest_webmvc_3_7_15.xml b/.idea/libraries/Maven__org_springframework_data_spring_data_rest_webmvc_3_7_15.xml new file mode 100644 index 0000000000..f4ce094064 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_data_spring_data_rest_webmvc_3_7_15.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_hateoas_spring_hateoas_1_5_5.xml b/.idea/libraries/Maven__org_springframework_hateoas_spring_hateoas_1_5_5.xml new file mode 100644 index 0000000000..a0301b66fc --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_hateoas_spring_hateoas_1_5_5.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_plugin_spring_plugin_core_2_0_0_RELEASE.xml b/.idea/libraries/Maven__org_springframework_plugin_spring_plugin_core_2_0_0_RELEASE.xml new file mode 100644 index 0000000000..28f52d37f7 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_plugin_spring_plugin_core_2_0_0_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_spring_aop_5_3_29.xml b/.idea/libraries/Maven__org_springframework_spring_aop_5_3_29.xml new file mode 100644 index 0000000000..15821d9b63 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_spring_aop_5_3_29.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_spring_aspects_5_3_29.xml b/.idea/libraries/Maven__org_springframework_spring_aspects_5_3_29.xml new file mode 100644 index 0000000000..2490dcf4b5 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_spring_aspects_5_3_29.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_spring_beans_5_3_29.xml b/.idea/libraries/Maven__org_springframework_spring_beans_5_3_29.xml new file mode 100644 index 0000000000..fea4bb45cf --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_spring_beans_5_3_29.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_spring_context_5_3_29.xml b/.idea/libraries/Maven__org_springframework_spring_context_5_3_29.xml new file mode 100644 index 0000000000..e8c1286e79 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_spring_context_5_3_29.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_spring_core_5_3_29.xml b/.idea/libraries/Maven__org_springframework_spring_core_5_3_29.xml new file mode 100644 index 0000000000..80a9244c75 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_spring_core_5_3_29.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_spring_expression_5_3_29.xml b/.idea/libraries/Maven__org_springframework_spring_expression_5_3_29.xml new file mode 100644 index 0000000000..67e153fbc4 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_spring_expression_5_3_29.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_spring_jcl_5_3_29.xml b/.idea/libraries/Maven__org_springframework_spring_jcl_5_3_29.xml new file mode 100644 index 0000000000..77e6a5a859 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_spring_jcl_5_3_29.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_spring_jdbc_5_3_29.xml b/.idea/libraries/Maven__org_springframework_spring_jdbc_5_3_29.xml new file mode 100644 index 0000000000..43c9fa68b0 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_spring_jdbc_5_3_29.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_spring_orm_5_3_29.xml b/.idea/libraries/Maven__org_springframework_spring_orm_5_3_29.xml new file mode 100644 index 0000000000..29d6ee4fcc --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_spring_orm_5_3_29.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_spring_test_5_3_29.xml b/.idea/libraries/Maven__org_springframework_spring_test_5_3_29.xml new file mode 100644 index 0000000000..bf33263c3b --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_spring_test_5_3_29.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_spring_tx_5_3_29.xml b/.idea/libraries/Maven__org_springframework_spring_tx_5_3_29.xml new file mode 100644 index 0000000000..64878fd8a2 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_spring_tx_5_3_29.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_spring_web_5_3_29.xml b/.idea/libraries/Maven__org_springframework_spring_web_5_3_29.xml new file mode 100644 index 0000000000..eace38376a --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_spring_web_5_3_29.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_spring_webmvc_5_3_29.xml b/.idea/libraries/Maven__org_springframework_spring_webmvc_5_3_29.xml new file mode 100644 index 0000000000..a72ede2c1c --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_spring_webmvc_5_3_29.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_thymeleaf_extras_thymeleaf_extras_java8time_3_0_4_RELEASE.xml b/.idea/libraries/Maven__org_thymeleaf_extras_thymeleaf_extras_java8time_3_0_4_RELEASE.xml new file mode 100644 index 0000000000..7b246ae1ca --- /dev/null +++ b/.idea/libraries/Maven__org_thymeleaf_extras_thymeleaf_extras_java8time_3_0_4_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_thymeleaf_thymeleaf_3_0_15_RELEASE.xml b/.idea/libraries/Maven__org_thymeleaf_thymeleaf_3_0_15_RELEASE.xml new file mode 100644 index 0000000000..e17f90f34e --- /dev/null +++ b/.idea/libraries/Maven__org_thymeleaf_thymeleaf_3_0_15_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_thymeleaf_thymeleaf_spring5_3_0_15_RELEASE.xml b/.idea/libraries/Maven__org_thymeleaf_thymeleaf_spring5_3_0_15_RELEASE.xml new file mode 100644 index 0000000000..910256d743 --- /dev/null +++ b/.idea/libraries/Maven__org_thymeleaf_thymeleaf_spring5_3_0_15_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_unbescape_unbescape_1_1_6_RELEASE.xml b/.idea/libraries/Maven__org_unbescape_unbescape_1_1_6_RELEASE.xml new file mode 100644 index 0000000000..2334aa0538 --- /dev/null +++ b/.idea/libraries/Maven__org_unbescape_unbescape_1_1_6_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_xmlunit_xmlunit_core_2_9_1.xml b/.idea/libraries/Maven__org_xmlunit_xmlunit_core_2_9_1.xml new file mode 100644 index 0000000000..e2f6d14da2 --- /dev/null +++ b/.idea/libraries/Maven__org_xmlunit_xmlunit_core_2_9_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_yaml_snakeyaml_1_30.xml b/.idea/libraries/Maven__org_yaml_snakeyaml_1_30.xml new file mode 100644 index 0000000000..7eda891629 --- /dev/null +++ b/.idea/libraries/Maven__org_yaml_snakeyaml_1_30.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 0000000000..26db005b53 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,14 @@ + + + + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000000..260faa7e19 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/.idea/uiDesigner.xml b/.idea/uiDesigner.xml new file mode 100644 index 0000000000..e96534fb27 --- /dev/null +++ b/.idea/uiDesigner.xml @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000000..94a25f7f4c --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/README.md b/README.md old mode 100755 new mode 100644 index c2bfac4078..ad8ada00d3 --- a/README.md +++ b/README.md @@ -1,85 +1,25 @@ -# Desafio programação - para vaga desenvolvedor +# desafio-dev -Por favor leiam este documento do começo ao fim, com muita atenção. -O intuito deste teste é avaliar seus conhecimentos técnicos em programação. -O teste consiste em parsear [este arquivo de texto(CNAB)](https://github.com/ByCodersTec/desafio-ruby-on-rails/blob/master/CNAB.txt) e salvar suas informações(transações financeiras) em uma base de dados a critério do candidato. -Este desafio deve ser feito por você em sua casa. Gaste o tempo que você quiser, porém normalmente você não deve precisar de mais do que algumas horas. +# Rodando o Projeto -# Instruções de entrega do desafio +Iniciar a aplicação normalmente na porta 8080 -1. Primeiro, faça um fork deste projeto para sua conta no Github (crie uma se você não possuir). -2. Em seguida, implemente o projeto tal qual descrito abaixo, em seu clone local. -3. Por fim, envie via email o projeto ou o fork/link do projeto para seu contato Bycoders_ com cópia para rh@bycoders.com.br. -# Descrição do projeto +# Acessar a o index da aplicação -Você recebeu um arquivo CNAB com os dados das movimentações finanaceira de várias lojas. -Precisamos criar uma maneira para que estes dados sejam importados para um banco de dados. +http://localhost:8080/ -Sua tarefa é criar uma interface web que aceite upload do [arquivo CNAB](https://github.com/ByCodersTec/desafio-ruby-on-rails/blob/master/CNAB.txt), normalize os dados e armazene-os em um banco de dados relacional e exiba essas informações em tela. -**Sua aplicação web DEVE:** +Selecione o arquivo CNAB e clique em enviar, após isso o tratamento de dados é realizado e salvo na base -1. Ter uma tela (via um formulário) para fazer o upload do arquivo(pontos extras se não usar um popular CSS Framework ) -2. Interpretar ("parsear") o arquivo recebido, normalizar os dados, e salvar corretamente a informação em um banco de dados relacional, **se atente as documentações** que estão logo abaixo. -3. Exibir uma lista das operações importadas por lojas, e nesta lista deve conter um totalizador do saldo em conta -4. Ser escrita na sua linguagem de programação de preferência -5. Ser simples de configurar e rodar, funcionando em ambiente compatível com Unix (Linux ou Mac OS X). Ela deve utilizar apenas linguagens e bibliotecas livres ou gratuitas. -6. Git com commits atomicos e bem descritos -7. PostgreSQL, MySQL ou SQL Server -8. Ter testes automatizados -9. Docker compose (Pontos extras se utilizar) -10. Readme file descrevendo bem o projeto e seu setup -11. Incluir informação descrevendo como consumir o endpoint da API +# Buscar o total de movimentação por proprietário -**Sua aplicação web não precisa:** +importar o curl url abaixo no postman e realizar a requisição passando o nome do proprietario -1. Lidar com autenticação ou autorização (pontos extras se ela fizer, mais pontos extras se a autenticação for feita via OAuth). -2. Ser escrita usando algum framework específico (mas não há nada errado em usá-los também, use o que achar melhor). -3. Documentação da api.(Será um diferencial e pontos extras se fizer) +curl --location 'http://localhost:8080/cnab/store?name=MARIA' -# Documentação do CNAB -| Descrição do campo | Inicio | Fim | Tamanho | Comentário -| ------------- | ------------- | -----| ---- | ------ -| Tipo | 1 | 1 | 1 | Tipo da transação -| Data | 2 | 9 | 8 | Data da ocorrência -| Valor | 10 | 19 | 10 | Valor da movimentação. *Obs.* O valor encontrado no arquivo precisa ser divido por cem(valor / 100.00) para normalizá-lo. -| CPF | 20 | 30 | 11 | CPF do beneficiário -| Cartão | 31 | 42 | 12 | Cartão utilizado na transação -| Hora | 43 | 48 | 6 | Hora da ocorrência atendendo ao fuso de UTC-3 -| Dono da loja | 49 | 62 | 14 | Nome do representante da loja -| Nome loja | 63 | 81 | 19 | Nome da loja -# Documentação sobre os tipos das transações -| Tipo | Descrição | Natureza | Sinal | -| ---- | -------- | --------- | ----- | -| 1 | Débito | Entrada | + | -| 2 | Boleto | Saída | - | -| 3 | Financiamento | Saída | - | -| 4 | Crédito | Entrada | + | -| 5 | Recebimento Empréstimo | Entrada | + | -| 6 | Vendas | Entrada | + | -| 7 | Recebimento TED | Entrada | + | -| 8 | Recebimento DOC | Entrada | + | -| 9 | Aluguel | Saída | - | -# Avaliação -Seu projeto será avaliado de acordo com os seguintes critérios. - -1. Sua aplicação preenche os requerimentos básicos? -2. Você documentou a maneira de configurar o ambiente e rodar sua aplicação? -3. Você seguiu as instruções de envio do desafio? -4. Qualidade e cobertura dos testes unitários. - -Adicionalmente, tentaremos verificar a sua familiarização com as bibliotecas padrões (standard libs), bem como sua experiência com programação orientada a objetos a partir da estrutura de seu projeto. - -# Referência - -Este desafio foi baseado neste outro desafio: https://github.com/lschallenges/data-engineering - ---- - -Boa sorte! diff --git a/desafio-dev/.gitignore b/desafio-dev/.gitignore new file mode 100644 index 0000000000..549e00a2a9 --- /dev/null +++ b/desafio-dev/.gitignore @@ -0,0 +1,33 @@ +HELP.md +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + +### VS Code ### +.vscode/ diff --git a/desafio-dev/.mvn/wrapper/maven-wrapper.jar b/desafio-dev/.mvn/wrapper/maven-wrapper.jar new file mode 100644 index 0000000000..bf82ff01c6 Binary files /dev/null and b/desafio-dev/.mvn/wrapper/maven-wrapper.jar differ diff --git a/desafio-dev/.mvn/wrapper/maven-wrapper.properties b/desafio-dev/.mvn/wrapper/maven-wrapper.properties new file mode 100644 index 0000000000..ca5ab4bab1 --- /dev/null +++ b/desafio-dev/.mvn/wrapper/maven-wrapper.properties @@ -0,0 +1,18 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.8.7/apache-maven-3.8.7-bin.zip +wrapperUrl=https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.1/maven-wrapper-3.1.1.jar diff --git a/desafio-dev/Dockerfile b/desafio-dev/Dockerfile new file mode 100644 index 0000000000..fb6be905c9 --- /dev/null +++ b/desafio-dev/Dockerfile @@ -0,0 +1,9 @@ +FROM maven:3.8.4-jdk-11 AS build +WORKDIR /app +COPY . . +RUN mvn clean install + +FROM openjdk:11-jre-slim +WORKDIR /app +COPY --from=build /app/target/desafio-dev-0.0.1-SNAPSHOT.jar app.jar +ENTRYPOINT ["java", "-jar", "app.jar"] \ No newline at end of file diff --git a/desafio-dev/META-INF/MANIFEST.MF b/desafio-dev/META-INF/MANIFEST.MF new file mode 100644 index 0000000000..6d703c8804 --- /dev/null +++ b/desafio-dev/META-INF/MANIFEST.MF @@ -0,0 +1 @@ +Main-Class: com.bycoders.desafiodev.DesafioDevApplication diff --git a/desafio-dev/mvnw b/desafio-dev/mvnw new file mode 100644 index 0000000000..8a8fb2282d --- /dev/null +++ b/desafio-dev/mvnw @@ -0,0 +1,316 @@ +#!/bin/sh +# ---------------------------------------------------------------------------- +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# ---------------------------------------------------------------------------- + +# ---------------------------------------------------------------------------- +# Maven Start Up Batch script +# +# Required ENV vars: +# ------------------ +# JAVA_HOME - location of a JDK home dir +# +# Optional ENV vars +# ----------------- +# M2_HOME - location of maven2's installed home dir +# MAVEN_OPTS - parameters passed to the Java VM when running Maven +# e.g. to debug Maven itself, use +# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +# MAVEN_SKIP_RC - flag to disable loading of mavenrc files +# ---------------------------------------------------------------------------- + +if [ -z "$MAVEN_SKIP_RC" ] ; then + + if [ -f /usr/local/etc/mavenrc ] ; then + . /usr/local/etc/mavenrc + fi + + if [ -f /etc/mavenrc ] ; then + . /etc/mavenrc + fi + + if [ -f "$HOME/.mavenrc" ] ; then + . "$HOME/.mavenrc" + fi + +fi + +# OS specific support. $var _must_ be set to either true or false. +cygwin=false; +darwin=false; +mingw=false +case "`uname`" in + CYGWIN*) cygwin=true ;; + MINGW*) mingw=true;; + Darwin*) darwin=true + # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home + # See https://developer.apple.com/library/mac/qa/qa1170/_index.html + if [ -z "$JAVA_HOME" ]; then + if [ -x "/usr/libexec/java_home" ]; then + export JAVA_HOME="`/usr/libexec/java_home`" + else + export JAVA_HOME="/Library/Java/Home" + fi + fi + ;; +esac + +if [ -z "$JAVA_HOME" ] ; then + if [ -r /etc/gentoo-release ] ; then + JAVA_HOME=`java-config --jre-home` + fi +fi + +if [ -z "$M2_HOME" ] ; then + ## resolve links - $0 may be a link to maven's home + PRG="$0" + + # need this for relative symlinks + while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG="`dirname "$PRG"`/$link" + fi + done + + saveddir=`pwd` + + M2_HOME=`dirname "$PRG"`/.. + + # make it fully qualified + M2_HOME=`cd "$M2_HOME" && pwd` + + cd "$saveddir" + # echo Using m2 at $M2_HOME +fi + +# For Cygwin, ensure paths are in UNIX format before anything is touched +if $cygwin ; then + [ -n "$M2_HOME" ] && + M2_HOME=`cygpath --unix "$M2_HOME"` + [ -n "$JAVA_HOME" ] && + JAVA_HOME=`cygpath --unix "$JAVA_HOME"` + [ -n "$CLASSPATH" ] && + CLASSPATH=`cygpath --path --unix "$CLASSPATH"` +fi + +# For Mingw, ensure paths are in UNIX format before anything is touched +if $mingw ; then + [ -n "$M2_HOME" ] && + M2_HOME="`(cd "$M2_HOME"; pwd)`" + [ -n "$JAVA_HOME" ] && + JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`" +fi + +if [ -z "$JAVA_HOME" ]; then + javaExecutable="`which javac`" + if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then + # readlink(1) is not available as standard on Solaris 10. + readLink=`which readlink` + if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then + if $darwin ; then + javaHome="`dirname \"$javaExecutable\"`" + javaExecutable="`cd \"$javaHome\" && pwd -P`/javac" + else + javaExecutable="`readlink -f \"$javaExecutable\"`" + fi + javaHome="`dirname \"$javaExecutable\"`" + javaHome=`expr "$javaHome" : '\(.*\)/bin'` + JAVA_HOME="$javaHome" + export JAVA_HOME + fi + fi +fi + +if [ -z "$JAVACMD" ] ; then + if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + else + JAVACMD="`\\unset -f command; \\command -v java`" + fi +fi + +if [ ! -x "$JAVACMD" ] ; then + echo "Error: JAVA_HOME is not defined correctly." >&2 + echo " We cannot execute $JAVACMD" >&2 + exit 1 +fi + +if [ -z "$JAVA_HOME" ] ; then + echo "Warning: JAVA_HOME environment variable is not set." +fi + +CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher + +# traverses directory structure from process work directory to filesystem root +# first directory with .mvn subdirectory is considered project base directory +find_maven_basedir() { + + if [ -z "$1" ] + then + echo "Path not specified to find_maven_basedir" + return 1 + fi + + basedir="$1" + wdir="$1" + while [ "$wdir" != '/' ] ; do + if [ -d "$wdir"/.mvn ] ; then + basedir=$wdir + break + fi + # workaround for JBEAP-8937 (on Solaris 10/Sparc) + if [ -d "${wdir}" ]; then + wdir=`cd "$wdir/.."; pwd` + fi + # end of workaround + done + echo "${basedir}" +} + +# concatenates all lines of a file +concat_lines() { + if [ -f "$1" ]; then + echo "$(tr -s '\n' ' ' < "$1")" + fi +} + +BASE_DIR=`find_maven_basedir "$(pwd)"` +if [ -z "$BASE_DIR" ]; then + exit 1; +fi + +########################################################################################## +# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central +# This allows using the maven wrapper in projects that prohibit checking in binary data. +########################################################################################## +if [ -r "$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" ]; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found .mvn/wrapper/maven-wrapper.jar" + fi +else + if [ "$MVNW_VERBOSE" = true ]; then + echo "Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ..." + fi + if [ -n "$MVNW_REPOURL" ]; then + jarUrl="$MVNW_REPOURL/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar" + else + jarUrl="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar" + fi + while IFS="=" read key value; do + case "$key" in (wrapperUrl) jarUrl="$value"; break ;; + esac + done < "$BASE_DIR/.mvn/wrapper/maven-wrapper.properties" + if [ "$MVNW_VERBOSE" = true ]; then + echo "Downloading from: $jarUrl" + fi + wrapperJarPath="$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" + if $cygwin; then + wrapperJarPath=`cygpath --path --windows "$wrapperJarPath"` + fi + + if command -v wget > /dev/null; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found wget ... using wget" + fi + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then + wget "$jarUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath" + else + wget --http-user=$MVNW_USERNAME --http-password=$MVNW_PASSWORD "$jarUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath" + fi + elif command -v curl > /dev/null; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found curl ... using curl" + fi + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then + curl -o "$wrapperJarPath" "$jarUrl" -f + else + curl --user $MVNW_USERNAME:$MVNW_PASSWORD -o "$wrapperJarPath" "$jarUrl" -f + fi + + else + if [ "$MVNW_VERBOSE" = true ]; then + echo "Falling back to using Java to download" + fi + javaClass="$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.java" + # For Cygwin, switch paths to Windows format before running javac + if $cygwin; then + javaClass=`cygpath --path --windows "$javaClass"` + fi + if [ -e "$javaClass" ]; then + if [ ! -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then + if [ "$MVNW_VERBOSE" = true ]; then + echo " - Compiling MavenWrapperDownloader.java ..." + fi + # Compiling the Java class + ("$JAVA_HOME/bin/javac" "$javaClass") + fi + if [ -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then + # Running the downloader + if [ "$MVNW_VERBOSE" = true ]; then + echo " - Running MavenWrapperDownloader.java ..." + fi + ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$MAVEN_PROJECTBASEDIR") + fi + fi + fi +fi +########################################################################################## +# End of extension +########################################################################################## + +export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"} +if [ "$MVNW_VERBOSE" = true ]; then + echo $MAVEN_PROJECTBASEDIR +fi +MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS" + +# For Cygwin, switch paths to Windows format before running java +if $cygwin; then + [ -n "$M2_HOME" ] && + M2_HOME=`cygpath --path --windows "$M2_HOME"` + [ -n "$JAVA_HOME" ] && + JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"` + [ -n "$CLASSPATH" ] && + CLASSPATH=`cygpath --path --windows "$CLASSPATH"` + [ -n "$MAVEN_PROJECTBASEDIR" ] && + MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"` +fi + +# Provide a "standardized" way to retrieve the CLI args that will +# work with both Windows and non-Windows executions. +MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $@" +export MAVEN_CMD_LINE_ARGS + +WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +exec "$JAVACMD" \ + $MAVEN_OPTS \ + $MAVEN_DEBUG_OPTS \ + -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \ + "-Dmaven.home=${M2_HOME}" \ + "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \ + ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@" diff --git a/desafio-dev/mvnw.cmd b/desafio-dev/mvnw.cmd new file mode 100644 index 0000000000..1d8ab018ea --- /dev/null +++ b/desafio-dev/mvnw.cmd @@ -0,0 +1,188 @@ +@REM ---------------------------------------------------------------------------- +@REM Licensed to the Apache Software Foundation (ASF) under one +@REM or more contributor license agreements. See the NOTICE file +@REM distributed with this work for additional information +@REM regarding copyright ownership. The ASF licenses this file +@REM to you under the Apache License, Version 2.0 (the +@REM "License"); you may not use this file except in compliance +@REM with the License. You may obtain a copy of the License at +@REM +@REM https://www.apache.org/licenses/LICENSE-2.0 +@REM +@REM Unless required by applicable law or agreed to in writing, +@REM software distributed under the License is distributed on an +@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +@REM KIND, either express or implied. See the License for the +@REM specific language governing permissions and limitations +@REM under the License. +@REM ---------------------------------------------------------------------------- + +@REM ---------------------------------------------------------------------------- +@REM Maven Start Up Batch script +@REM +@REM Required ENV vars: +@REM JAVA_HOME - location of a JDK home dir +@REM +@REM Optional ENV vars +@REM M2_HOME - location of maven2's installed home dir +@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands +@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a keystroke before ending +@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven +@REM e.g. to debug Maven itself, use +@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files +@REM ---------------------------------------------------------------------------- + +@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on' +@echo off +@REM set title of command window +title %0 +@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on' +@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO% + +@REM set %HOME% to equivalent of $HOME +if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%") + +@REM Execute a user defined script before this one +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre +@REM check for pre script, once with legacy .bat ending and once with .cmd ending +if exist "%USERPROFILE%\mavenrc_pre.bat" call "%USERPROFILE%\mavenrc_pre.bat" %* +if exist "%USERPROFILE%\mavenrc_pre.cmd" call "%USERPROFILE%\mavenrc_pre.cmd" %* +:skipRcPre + +@setlocal + +set ERROR_CODE=0 + +@REM To isolate internal variables from possible post scripts, we use another setlocal +@setlocal + +@REM ==== START VALIDATION ==== +if not "%JAVA_HOME%" == "" goto OkJHome + +echo. +echo Error: JAVA_HOME not found in your environment. >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +:OkJHome +if exist "%JAVA_HOME%\bin\java.exe" goto init + +echo. +echo Error: JAVA_HOME is set to an invalid directory. >&2 +echo JAVA_HOME = "%JAVA_HOME%" >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +@REM ==== END VALIDATION ==== + +:init + +@REM Find the project base dir, i.e. the directory that contains the folder ".mvn". +@REM Fallback to current working directory if not found. + +set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR% +IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir + +set EXEC_DIR=%CD% +set WDIR=%EXEC_DIR% +:findBaseDir +IF EXIST "%WDIR%"\.mvn goto baseDirFound +cd .. +IF "%WDIR%"=="%CD%" goto baseDirNotFound +set WDIR=%CD% +goto findBaseDir + +:baseDirFound +set MAVEN_PROJECTBASEDIR=%WDIR% +cd "%EXEC_DIR%" +goto endDetectBaseDir + +:baseDirNotFound +set MAVEN_PROJECTBASEDIR=%EXEC_DIR% +cd "%EXEC_DIR%" + +:endDetectBaseDir + +IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig + +@setlocal EnableExtensions EnableDelayedExpansion +for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a +@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS% + +:endReadAdditionalConfig + +SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe" +set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar" +set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +set DOWNLOAD_URL="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar" + +FOR /F "usebackq tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO ( + IF "%%A"=="wrapperUrl" SET DOWNLOAD_URL=%%B +) + +@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central +@REM This allows using the maven wrapper in projects that prohibit checking in binary data. +if exist %WRAPPER_JAR% ( + if "%MVNW_VERBOSE%" == "true" ( + echo Found %WRAPPER_JAR% + ) +) else ( + if not "%MVNW_REPOURL%" == "" ( + SET DOWNLOAD_URL="%MVNW_REPOURL%/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar" + ) + if "%MVNW_VERBOSE%" == "true" ( + echo Couldn't find %WRAPPER_JAR%, downloading it ... + echo Downloading from: %DOWNLOAD_URL% + ) + + powershell -Command "&{"^ + "$webclient = new-object System.Net.WebClient;"^ + "if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^ + "$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^ + "}"^ + "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%DOWNLOAD_URL%', '%WRAPPER_JAR%')"^ + "}" + if "%MVNW_VERBOSE%" == "true" ( + echo Finished downloading %WRAPPER_JAR% + ) +) +@REM End of extension + +@REM Provide a "standardized" way to retrieve the CLI args that will +@REM work with both Windows and non-Windows executions. +set MAVEN_CMD_LINE_ARGS=%* + +%MAVEN_JAVA_EXE% ^ + %JVM_CONFIG_MAVEN_PROPS% ^ + %MAVEN_OPTS% ^ + %MAVEN_DEBUG_OPTS% ^ + -classpath %WRAPPER_JAR% ^ + "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" ^ + %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %* +if ERRORLEVEL 1 goto error +goto end + +:error +set ERROR_CODE=1 + +:end +@endlocal & set ERROR_CODE=%ERROR_CODE% + +if not "%MAVEN_SKIP_RC%"=="" goto skipRcPost +@REM check for post script, once with legacy .bat ending and once with .cmd ending +if exist "%USERPROFILE%\mavenrc_post.bat" call "%USERPROFILE%\mavenrc_post.bat" +if exist "%USERPROFILE%\mavenrc_post.cmd" call "%USERPROFILE%\mavenrc_post.cmd" +:skipRcPost + +@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on' +if "%MAVEN_BATCH_PAUSE%"=="on" pause + +if "%MAVEN_TERMINATE_CMD%"=="on" exit %ERROR_CODE% + +cmd /C exit /B %ERROR_CODE% diff --git a/desafio-dev/pom.xml b/desafio-dev/pom.xml new file mode 100644 index 0000000000..1ce778acd8 --- /dev/null +++ b/desafio-dev/pom.xml @@ -0,0 +1,78 @@ + + + 4.0.0 + + org.springframework.boot + spring-boot-starter-parent + 2.7.15 + + + com.bycoders + desafio-dev + 0.0.1-SNAPSHOT + desafio-dev + Desafio Dev byCoders_ + + 11 + + + + org.springframework.boot + spring-boot-starter-data-jpa + + + org.springframework.boot + spring-boot-starter-data-rest + + + + org.springframework.boot + spring-boot-devtools + runtime + true + + + org.projectlombok + lombok + true + + + org.springframework.boot + spring-boot-starter-test + test + + + org.apache.commons + commons-lang3 + 3.13.0 + + + org.springframework.boot + spring-boot-starter-thymeleaf + + + com.h2database + h2 + runtime + + + mysql + mysql-connector-java + 8.0.33 + + + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + + + diff --git a/desafio-dev/src/main/java/com/bycoders/desafiodev/DesafioDevApplication.java b/desafio-dev/src/main/java/com/bycoders/desafiodev/DesafioDevApplication.java new file mode 100644 index 0000000000..10905d4fa9 --- /dev/null +++ b/desafio-dev/src/main/java/com/bycoders/desafiodev/DesafioDevApplication.java @@ -0,0 +1,13 @@ +package com.bycoders.desafiodev; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class DesafioDevApplication { + + public static void main(String[] args) { + SpringApplication.run(DesafioDevApplication.class, args); + } + +} diff --git a/desafio-dev/src/main/java/com/bycoders/desafiodev/controller/CnabController.java b/desafio-dev/src/main/java/com/bycoders/desafiodev/controller/CnabController.java new file mode 100644 index 0000000000..010426449c --- /dev/null +++ b/desafio-dev/src/main/java/com/bycoders/desafiodev/controller/CnabController.java @@ -0,0 +1,51 @@ +package com.bycoders.desafiodev.controller; + + +import com.bycoders.desafiodev.dto.StoreDTO; +import com.bycoders.desafiodev.service.CnabService; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; + +import static org.springframework.data.crossstore.ChangeSetPersister.NotFoundException; + +@RestController +@RequestMapping(value = "/cnab") +public class CnabController { + + private final CnabService service; + + public CnabController(CnabService service) { + this.service = service; + } + + @GetMapping("/") + public String index() { + return "index"; + } + + @PostMapping("/saveCnab") + @ResponseBody + public ResponseEntity saveCnab(@RequestParam("file") MultipartFile file) throws IOException { + + String fileContent = new String(file.getBytes(), "UTF-8"); + String resultMessage = service.saveCnab(fileContent); + + if (resultMessage.equals("Cnab file processed successfully.")) { + return ResponseEntity.ok(resultMessage); + } else { + return ResponseEntity.badRequest().body(resultMessage); + } + } + + + @GetMapping("/store") + public ResponseEntity getStore(@RequestParam String name) throws NotFoundException { + + var result = service.findStoreName(name); + + return ResponseEntity.ok(result); + } +} diff --git a/desafio-dev/src/main/java/com/bycoders/desafiodev/domain/TransactionType.java b/desafio-dev/src/main/java/com/bycoders/desafiodev/domain/TransactionType.java new file mode 100644 index 0000000000..84c8d26f21 --- /dev/null +++ b/desafio-dev/src/main/java/com/bycoders/desafiodev/domain/TransactionType.java @@ -0,0 +1,34 @@ +package com.bycoders.desafiodev.domain; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +import javax.persistence.*; +import java.time.OffsetDateTime; +import java.util.List; + +@Getter +@Setter + +@AllArgsConstructor +@NoArgsConstructor + +@Entity +@Table(name = "tb_transaction_type") +public class TransactionType { + + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + private String description; + private String transaction_type; + private String signal; + private OffsetDateTime dt_insert; + + @OneToMany(mappedBy = "transactionType") + private List transactions; + +} diff --git a/desafio-dev/src/main/java/com/bycoders/desafiodev/domain/Transactions.java b/desafio-dev/src/main/java/com/bycoders/desafiodev/domain/Transactions.java new file mode 100644 index 0000000000..12e514bcc4 --- /dev/null +++ b/desafio-dev/src/main/java/com/bycoders/desafiodev/domain/Transactions.java @@ -0,0 +1,38 @@ +package com.bycoders.desafiodev.domain; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +import javax.persistence.*; +import java.time.LocalDate; +import java.time.LocalTime; + +@Getter +@Setter + +@AllArgsConstructor +@NoArgsConstructor + +@Entity +@Table(name = "tb_transactions") +public class Transactions { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + @ManyToOne + @JoinColumn(name = "idTransactionType") + private TransactionType transactionType; + + private LocalDate insertDate; + private double movimentValue; + private String cpf; + private String card; + private LocalTime insertHour; + private String storeName; + private String storePropertyName; + +} \ No newline at end of file diff --git a/desafio-dev/src/main/java/com/bycoders/desafiodev/dto/StoreDTO.java b/desafio-dev/src/main/java/com/bycoders/desafiodev/dto/StoreDTO.java new file mode 100644 index 0000000000..2a03fea39c --- /dev/null +++ b/desafio-dev/src/main/java/com/bycoders/desafiodev/dto/StoreDTO.java @@ -0,0 +1,15 @@ +package com.bycoders.desafiodev.dto; + +import lombok.*; + +@AllArgsConstructor +@NoArgsConstructor +@Getter +@Setter +@Builder +public class StoreDTO { + + private String storeName; + private Double sumValues; + +} diff --git a/desafio-dev/src/main/java/com/bycoders/desafiodev/exception/BadRequestException.java b/desafio-dev/src/main/java/com/bycoders/desafiodev/exception/BadRequestException.java new file mode 100644 index 0000000000..aecfa0bc8d --- /dev/null +++ b/desafio-dev/src/main/java/com/bycoders/desafiodev/exception/BadRequestException.java @@ -0,0 +1,7 @@ +package com.bycoders.desafiodev.exception; + +public class BadRequestException extends RuntimeException { + public BadRequestException(String message) { + super(message); + } +} \ No newline at end of file diff --git a/desafio-dev/src/main/java/com/bycoders/desafiodev/exception/GlobalExceptionHandler.java b/desafio-dev/src/main/java/com/bycoders/desafiodev/exception/GlobalExceptionHandler.java new file mode 100644 index 0000000000..b405ad1a8a --- /dev/null +++ b/desafio-dev/src/main/java/com/bycoders/desafiodev/exception/GlobalExceptionHandler.java @@ -0,0 +1,28 @@ +package com.bycoders.desafiodev.exception; + +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.ResponseStatus; + +@ControllerAdvice +public class GlobalExceptionHandler { + + @ExceptionHandler(Exception.class) + public ResponseEntity handleException(Exception e) { + return new ResponseEntity<>("An error has thrown in the application: " + e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR); + } + + @ExceptionHandler(BadRequestException.class) + @ResponseStatus(HttpStatus.BAD_REQUEST) + public ResponseEntity handleBadRequestException(BadRequestException e) { + return new ResponseEntity<>("Invalid Request: " + e.getMessage(), HttpStatus.BAD_REQUEST); + } + + @ExceptionHandler(ResourceNotFoundException.class) + @ResponseStatus(HttpStatus.NOT_FOUND) + public ResponseEntity handleResourceNotFoundException(ResourceNotFoundException e) { + return new ResponseEntity<>("Resource Not Found: " + e.getMessage(), HttpStatus.NOT_FOUND); + } +} diff --git a/desafio-dev/src/main/java/com/bycoders/desafiodev/exception/ResourceNotFoundException.java b/desafio-dev/src/main/java/com/bycoders/desafiodev/exception/ResourceNotFoundException.java new file mode 100644 index 0000000000..52d87f524a --- /dev/null +++ b/desafio-dev/src/main/java/com/bycoders/desafiodev/exception/ResourceNotFoundException.java @@ -0,0 +1,7 @@ +package com.bycoders.desafiodev.exception; + +public class ResourceNotFoundException extends RuntimeException { + public ResourceNotFoundException(String message) { + super(message); + } +} \ No newline at end of file diff --git a/desafio-dev/src/main/java/com/bycoders/desafiodev/mapper/StoreMapper.java b/desafio-dev/src/main/java/com/bycoders/desafiodev/mapper/StoreMapper.java new file mode 100644 index 0000000000..1bd376d563 --- /dev/null +++ b/desafio-dev/src/main/java/com/bycoders/desafiodev/mapper/StoreMapper.java @@ -0,0 +1,15 @@ +package com.bycoders.desafiodev.mapper; + +import com.bycoders.desafiodev.dto.StoreDTO; + +public class StoreMapper { + + + public static StoreDTO toResponse(String storeName, double totalValue) { + + return StoreDTO.builder() + .storeName(storeName) + .sumValues(totalValue) + .build(); + } +} diff --git a/desafio-dev/src/main/java/com/bycoders/desafiodev/repository/TransactionTypeRepository.java b/desafio-dev/src/main/java/com/bycoders/desafiodev/repository/TransactionTypeRepository.java new file mode 100644 index 0000000000..8ffadb51e8 --- /dev/null +++ b/desafio-dev/src/main/java/com/bycoders/desafiodev/repository/TransactionTypeRepository.java @@ -0,0 +1,8 @@ +package com.bycoders.desafiodev.repository; + +import com.bycoders.desafiodev.domain.TransactionType; +import org.springframework.data.jpa.repository.JpaRepository; + +public interface TransactionTypeRepository extends JpaRepository { + +} diff --git a/desafio-dev/src/main/java/com/bycoders/desafiodev/repository/TransactionsRepository.java b/desafio-dev/src/main/java/com/bycoders/desafiodev/repository/TransactionsRepository.java new file mode 100644 index 0000000000..c01cb74c7e --- /dev/null +++ b/desafio-dev/src/main/java/com/bycoders/desafiodev/repository/TransactionsRepository.java @@ -0,0 +1,11 @@ +package com.bycoders.desafiodev.repository; + +import com.bycoders.desafiodev.domain.Transactions; +import org.springframework.data.jpa.repository.JpaRepository; + +import java.util.List; + +public interface TransactionsRepository extends JpaRepository { + + List findBystoreNameContains(String storeName); +} diff --git a/desafio-dev/src/main/java/com/bycoders/desafiodev/service/CnabService.java b/desafio-dev/src/main/java/com/bycoders/desafiodev/service/CnabService.java new file mode 100644 index 0000000000..36f5966334 --- /dev/null +++ b/desafio-dev/src/main/java/com/bycoders/desafiodev/service/CnabService.java @@ -0,0 +1,65 @@ +package com.bycoders.desafiodev.service; + +import com.bycoders.desafiodev.domain.Transactions; +import com.bycoders.desafiodev.dto.StoreDTO; +import com.bycoders.desafiodev.exception.ResourceNotFoundException; +import com.bycoders.desafiodev.mapper.StoreMapper; +import com.bycoders.desafiodev.repository.TransactionTypeRepository; +import com.bycoders.desafiodev.repository.TransactionsRepository; +import com.bycoders.desafiodev.utils.CnabUtils; +import lombok.AllArgsConstructor; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +@Service +@AllArgsConstructor +public class CnabService { + + @Autowired + private TransactionsRepository transactionsRepository; + + + @Autowired + private TransactionTypeRepository transactionTypeRepository; + + @Transactional + public String saveCnab(String fileContent) { + String[] lines = fileContent.split("\r\n"); + + for (String line : lines) { + var transactions = CnabUtils.fillCnab(line); + + var result = transactionTypeRepository.findById(Long.valueOf(line.substring(0, 1))); + + if (result.isEmpty()) + throw new ResourceNotFoundException("Invalid Transaction Type"); + + transactions.setTransactionType(result.get()); + + transactionsRepository.save(transactions); + } + + return "Cnab file processed successfully."; + } + + public StoreDTO findStoreName(String name) throws ResourceNotFoundException { + + var storeTransactions = transactionsRepository.findBystoreNameContains(name); + + if (storeTransactions.isEmpty()) { + throw new ResourceNotFoundException("No transactions found"); + } + + double totalValue = 0.0; + + for (Transactions transaction : storeTransactions) { + if (transaction.getTransactionType().getSignal().equals("+")) { + totalValue += transaction.getMovimentValue(); + } else if (transaction.getTransactionType().getSignal().equals("-")) { + totalValue -= transaction.getMovimentValue(); + } + } + return StoreMapper.toResponse(storeTransactions.get(0).getStoreName(), totalValue); + } +} diff --git a/desafio-dev/src/main/java/com/bycoders/desafiodev/utils/CnabUtils.java b/desafio-dev/src/main/java/com/bycoders/desafiodev/utils/CnabUtils.java new file mode 100644 index 0000000000..151a62ed69 --- /dev/null +++ b/desafio-dev/src/main/java/com/bycoders/desafiodev/utils/CnabUtils.java @@ -0,0 +1,34 @@ +package com.bycoders.desafiodev.utils; + +import com.bycoders.desafiodev.domain.Transactions; + +import java.time.LocalDate; +import java.time.LocalTime; +import java.time.format.DateTimeFormatter; + +public class CnabUtils { + + public static final int NORMALIZE_VALUE = 100; + + public static Transactions fillCnab(String cnab) { + + DateTimeFormatter formatterDate = DateTimeFormatter.ofPattern("yyyyMMdd"); + + DateTimeFormatter formatterHour = DateTimeFormatter.ofPattern("HHmmss"); + + Transactions transaction = new Transactions(); + + String dateStr = cnab.substring(1, 9); + transaction.setInsertDate(LocalDate.parse(dateStr, formatterDate)); + double value = Double.parseDouble(cnab.substring(9, 19)); + transaction.setMovimentValue(value / NORMALIZE_VALUE); + transaction.setCpf(cnab.substring(19, 30)); + transaction.setCard(cnab.substring(30, 42)); + String timeStr = cnab.substring(42, 48); + transaction.setInsertHour(LocalTime.parse(timeStr, formatterHour)); + transaction.setStoreName(cnab.substring(48, 62)); + transaction.setStorePropertyName(cnab.substring(62, 80)); + + return transaction; + } +} diff --git a/desafio-dev/src/main/resources/application-dev.yml b/desafio-dev/src/main/resources/application-dev.yml new file mode 100644 index 0000000000..16303f5232 --- /dev/null +++ b/desafio-dev/src/main/resources/application-dev.yml @@ -0,0 +1,24 @@ +spring: + datasource: + url: jdbc:h2:mem:testdb + username: sa + password: + platform: h2 + initialization-mode: always + thymeleaf: + cache: false + enabled: true + prefix: classpath:/templates/ + suffix: .html + + h2: + console: + enabled: true + path: /h2-console + + jpa: + show-sql: true + properties: + hibernate: + format_sql: true + defer-datasource-initialization: true \ No newline at end of file diff --git a/desafio-dev/src/main/resources/application-prd.yml b/desafio-dev/src/main/resources/application-prd.yml new file mode 100644 index 0000000000..9c319fa367 --- /dev/null +++ b/desafio-dev/src/main/resources/application-prd.yml @@ -0,0 +1,18 @@ +spring: + datasource: + url: jdbc:mysql://mysql:3306/TransacionsDB?useSSL=false + username: root + password: root + driver-class-name: com.mysql.cj.jdbc.Driver + + thymeleaf: + cache: false + enabled: true + prefix: classpath:/templates/ + suffix: .html + + jpa: + show-sql: true + properties: + hibernate: + dialect: org.hibernate.dialect.MySQL5Dialect diff --git a/desafio-dev/src/main/resources/application.yml b/desafio-dev/src/main/resources/application.yml new file mode 100644 index 0000000000..753828f83a --- /dev/null +++ b/desafio-dev/src/main/resources/application.yml @@ -0,0 +1,19 @@ +spring: + datasource: + url: jdbc:mysql://mysql:3306/TransactionsDB?useSSL=false + username: root + password: root + driver-class-name: com.mysql.cj.jdbc.Driver + + thymeleaf: + cache: false + enabled: true + prefix: classpath:/templates/ + suffix: .html + + jpa: + show-sql: true + properties: + hibernate: + dialect: org.hibernate.dialect.MySQL5Dialect + defer-datasource-initialization: true \ No newline at end of file diff --git a/CNAB.txt b/desafio-dev/src/main/resources/cnabFile.txt old mode 100755 new mode 100644 similarity index 99% rename from CNAB.txt rename to desafio-dev/src/main/resources/cnabFile.txt index cc6fe941f7..dce6006514 --- a/CNAB.txt +++ b/desafio-dev/src/main/resources/cnabFile.txt @@ -18,4 +18,4 @@ 2201903010000010900232702980568723****9987123333JOSÉ COSTA MERCEARIA 3 IRMÃOS 8201903010000000200845152540732344****1222123222MARCOS PEREIRAMERCADO DA AVENIDA 2201903010000000500232702980567677****8778141808JOSÉ COSTA MERCEARIA 3 IRMÃOS -3201903010000019200845152540736777****1313172712MARCOS PEREIRAMERCADO DA AVENIDA +3201903010000019200845152540736777****1313172712MARCOS PEREIRAMERCADO DA AVENIDA \ No newline at end of file diff --git a/desafio-dev/src/main/resources/data.sql b/desafio-dev/src/main/resources/data.sql new file mode 100644 index 0000000000..ff8148648d --- /dev/null +++ b/desafio-dev/src/main/resources/data.sql @@ -0,0 +1,11 @@ +INSERT INTO tb_transaction_type (description, transaction_type, signal, dt_insert) +VALUES + ('Débito', 'Entrada', '+', CURRENT_TIMESTAMP), + ('Boleto', 'Saída', '-', CURRENT_TIMESTAMP), + ('Financiamento', 'Saída', '-', CURRENT_TIMESTAMP), + ('Crédito', 'Entrada', '+', CURRENT_TIMESTAMP), + ('Recebimento Empréstimo', 'Entrada', '+', CURRENT_TIMESTAMP), + ('Vendas', 'Entrada', '+', CURRENT_TIMESTAMP), + ('Recebimento TED', 'Entrada', '+', CURRENT_TIMESTAMP), + ('Recebimento DOC', 'Entrada', '+', CURRENT_TIMESTAMP), + ('Aluguel', 'Saída', '-', CURRENT_TIMESTAMP); \ No newline at end of file diff --git a/desafio-dev/src/main/resources/templates/index.html b/desafio-dev/src/main/resources/templates/index.html new file mode 100644 index 0000000000..837df322da --- /dev/null +++ b/desafio-dev/src/main/resources/templates/index.html @@ -0,0 +1,47 @@ + + + + Processamento de Arquivo CNAB + + + +

Processamento de Arquivo CNAB

+
+ +

+ +
+
+

Conteúdo do Arquivo:

+

+
+
+
+
diff --git a/desafio-dev/src/test/java/com/bycoders/desafiodev/DesafioDevApplicationTests.java b/desafio-dev/src/test/java/com/bycoders/desafiodev/DesafioDevApplicationTests.java
new file mode 100644
index 0000000000..a139a30d77
--- /dev/null
+++ b/desafio-dev/src/test/java/com/bycoders/desafiodev/DesafioDevApplicationTests.java
@@ -0,0 +1,13 @@
+package com.bycoders.desafiodev;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.boot.test.context.SpringBootTest;
+
+@SpringBootTest
+class DesafioDevApplicationTests {
+
+	@Test
+	void contextLoads() {
+	}
+
+}
diff --git a/desafio-dev/src/test/java/com/bycoders/desafiodev/controller/CnabControllerTest.java b/desafio-dev/src/test/java/com/bycoders/desafiodev/controller/CnabControllerTest.java
new file mode 100644
index 0000000000..134f9d667f
--- /dev/null
+++ b/desafio-dev/src/test/java/com/bycoders/desafiodev/controller/CnabControllerTest.java
@@ -0,0 +1,53 @@
+package com.bycoders.desafiodev.controller;
+
+import com.bycoders.desafiodev.dto.StoreDTO;
+import com.bycoders.desafiodev.service.CnabService;
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
+import org.springframework.boot.test.mock.mockito.MockBean;
+import org.springframework.mock.web.MockMultipartFile;
+import org.springframework.test.web.servlet.MockMvc;
+import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
+
+import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.Mockito.when;
+import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
+import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
+
+@WebMvcTest(CnabController.class)
+class CnabControllerTest {
+
+
+    public static final String CNAB = "/cnab/";
+    public static final String SUCCESS_MESSAGE = "Cnab file processed successfully.";
+
+    @Autowired
+    private MockMvc mockMvc;
+
+    @MockBean
+    private CnabService service;
+
+    @Test
+    public void shouldValidateSaveCNABSuccesfull() throws Exception {
+        MockMultipartFile mockFile = new MockMultipartFile("file", "mock_cnab.txt", "text/plain", "3201903010000014200096206760174753****3153153453JOÃO MACEDO   BAR DO JOÃO ".getBytes());
+
+        when(service.saveCnab(anyString())).thenReturn(SUCCESS_MESSAGE);
+
+        mockMvc.perform(MockMvcRequestBuilders.multipart(CNAB + "saveCnab")
+                        .file(mockFile))
+                .andExpect(status().isOk());
+    }
+
+    @Test
+    public void shouldValidateGetStoreNameSuccessfull() throws Exception {
+        String name = "StoreName";
+
+        StoreDTO mockStoreDTO = new StoreDTO();
+        when(service.findStoreName(anyString())).thenReturn(mockStoreDTO);
+
+        mockMvc.perform(get(CNAB + "store")
+                        .param("name", name))
+                .andExpect(status().isOk());
+    }
+}
\ No newline at end of file
diff --git a/desafio-dev/src/test/java/com/bycoders/desafiodev/fixture/TransactionTypeFixture.java b/desafio-dev/src/test/java/com/bycoders/desafiodev/fixture/TransactionTypeFixture.java
new file mode 100644
index 0000000000..4a37c0dd20
--- /dev/null
+++ b/desafio-dev/src/test/java/com/bycoders/desafiodev/fixture/TransactionTypeFixture.java
@@ -0,0 +1,21 @@
+package com.bycoders.desafiodev.fixture;
+
+import com.bycoders.desafiodev.domain.TransactionType;
+import org.apache.commons.lang3.RandomStringUtils;
+
+import java.time.OffsetDateTime;
+
+public class TransactionTypeFixture {
+
+
+    public static TransactionType withRandomData() {
+        TransactionType transactionType = new TransactionType();
+
+        transactionType.setDescription(RandomStringUtils.randomNumeric(11));
+        transactionType.setTransaction_type("1");
+        transactionType.setSignal("+");
+        transactionType.setDt_insert(OffsetDateTime.now());
+
+        return transactionType;
+    }
+}
diff --git a/desafio-dev/src/test/java/com/bycoders/desafiodev/fixture/TransactionsFixture.java b/desafio-dev/src/test/java/com/bycoders/desafiodev/fixture/TransactionsFixture.java
new file mode 100644
index 0000000000..f346f1a1be
--- /dev/null
+++ b/desafio-dev/src/test/java/com/bycoders/desafiodev/fixture/TransactionsFixture.java
@@ -0,0 +1,29 @@
+package com.bycoders.desafiodev.fixture;
+
+import com.bycoders.desafiodev.domain.TransactionType;
+import com.bycoders.desafiodev.domain.Transactions;
+import org.apache.commons.lang3.RandomStringUtils;
+
+import java.time.LocalDate;
+import java.time.LocalTime;
+
+public class TransactionsFixture {
+
+    public static Transactions withRandomData() {
+        Transactions transaction = new Transactions();
+
+        TransactionType transactionType = TransactionTypeFixture.withRandomData();
+         transaction.setTransactionType(transactionType);
+
+        transaction.setInsertDate(LocalDate.now());
+        transaction.setMovimentValue(100.0);
+        transaction.setCpf(RandomStringUtils.randomNumeric(11));
+        transaction.setCard("6777****1313");
+        transaction.setInsertHour(LocalTime.now());
+        transaction.setStoreName(RandomStringUtils.randomAlphabetic(10));
+        transaction.setStorePropertyName(RandomStringUtils.randomAlphabetic(15));
+
+        return transaction;
+    }
+
+}
diff --git a/desafio-dev/src/test/java/com/bycoders/desafiodev/service/CnabServiceTest.java b/desafio-dev/src/test/java/com/bycoders/desafiodev/service/CnabServiceTest.java
new file mode 100644
index 0000000000..43a525c52f
--- /dev/null
+++ b/desafio-dev/src/test/java/com/bycoders/desafiodev/service/CnabServiceTest.java
@@ -0,0 +1,87 @@
+package com.bycoders.desafiodev.service;
+
+import com.bycoders.desafiodev.domain.Transactions;
+import com.bycoders.desafiodev.exception.ResourceNotFoundException;
+import com.bycoders.desafiodev.fixture.TransactionTypeFixture;
+import com.bycoders.desafiodev.fixture.TransactionsFixture;
+import com.bycoders.desafiodev.repository.TransactionTypeRepository;
+import com.bycoders.desafiodev.repository.TransactionsRepository;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.springframework.boot.test.context.SpringBootTest;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Optional;
+
+import static org.mockito.Mockito.any;
+import static org.mockito.Mockito.when;
+
+
+@SpringBootTest
+public class CnabServiceTest {
+
+    public static final String SUCCESSFULLY = "Cnab file processed successfully.";
+    public static final String TRANSACTIONS_FOUND = "No transactions found";
+    private CnabService cnabService;
+
+    @Mock
+    private TransactionsRepository transactionsRepository;
+
+    @Mock
+    private TransactionTypeRepository transactionTypeRepository;
+
+    public static final String FILE_PATH = "/cnabFile.txt";
+
+    @BeforeEach
+    public void setup() {
+        MockitoAnnotations.openMocks(this);
+        cnabService = new CnabService(transactionsRepository, transactionTypeRepository);
+    }
+
+
+    @Test
+    public void shouldValidateSaveAndFindCABANAFileSuccessful() {
+        var transactions = TransactionsFixture.withRandomData();
+        var transactionsType = TransactionTypeFixture.withRandomData();
+
+        when(transactionsRepository.save(any(Transactions.class))).thenReturn(transactions);
+        when(transactionTypeRepository.findById(any(Long.class))).thenReturn(Optional.of(transactionsType));
+
+        var result = cnabService.saveCnab("3201903010000019200845152540736777****1313172712MARCOS PEREIRAMERCADO DA AVENIDA");
+
+        Assertions.assertEquals(SUCCESSFULLY, result);
+    }
+
+    @Test
+    public void shouldValidateReturnTransactionValueSuccessfully() {
+        var transactions =  TransactionsFixture.withRandomData();
+
+        List list = new ArrayList<>();
+
+        list.add(transactions);
+
+        when(transactionsRepository.findBystoreNameContains(any(String.class))).thenReturn((list));
+
+        var result = cnabService.findStoreName(list.stream().findFirst().toString());
+
+        Assertions.assertEquals(result.getSumValues(), transactions.getMovimentValue());
+        Assertions.assertEquals(result.getStoreName(), transactions.getStoreName());
+    }
+
+    @Test
+    public void shouldValidateReturnTransactionNotFound() {
+
+        when(transactionsRepository.findBystoreNameContains(any(String.class))).thenReturn(Collections.emptyList());
+
+        Assertions.assertThrows(ResourceNotFoundException.class, () -> {
+            cnabService.findStoreName("teste");
+        });
+    }
+
+
+}
\ No newline at end of file
diff --git a/docker-compose.yml b/docker-compose.yml
new file mode 100644
index 0000000000..128339b771
--- /dev/null
+++ b/docker-compose.yml
@@ -0,0 +1,19 @@
+version: '3.8'
+
+services:
+  mysql:
+    image: mysql:latest
+    environment:
+      MYSQL_ROOT_PASSWORD: root
+      MYSQL_ROOT_USER: root
+      MYSQL_DATABASE: TransactionsDB
+    ports:
+      - "3306:3306"
+
+  springboot-app:
+    build:
+      context: ./desafio-dev
+    ports:
+      - "8080:8080"
+    depends_on:
+      - mysql