From a4f8b9d4058482419b3369f79768820fa2b3e14d Mon Sep 17 00:00:00 2001 From: AltugAltintas Date: Mon, 3 Jan 2022 18:58:40 +0300 Subject: [PATCH 1/4] trying to improve form process --- .idea/.gitignore | 8 + .idea/.name | 1 + .idea/compiler.xml | 25 ++ .idea/encodings.xml | 13 + .idea/externalDependencies.xml | 6 + .idea/jarRepositories.xml | 20 ++ .idea/jpa-buddy.xml | 6 + .idea/libraries/Maven__antlr_antlr_2_7_7.xml | 13 + ...__ch_qos_logback_logback_classic_1_2_3.xml | 13 + ...ven__ch_qos_logback_logback_core_1_2_3.xml | 13 + .../Maven__com_fasterxml_classmate_1_5_1.xml | 13 + ...ackson_core_jackson_annotations_2_12_3.xml | 13 + ...erxml_jackson_core_jackson_core_2_12_3.xml | 13 + ...l_jackson_core_jackson_databind_2_12_3.xml | 13 + ..._datatype_jackson_datatype_jdk8_2_12_3.xml | 13 + ...atatype_jackson_datatype_jsr310_2_12_3.xml | 13 + ..._jackson_module_parameter_names_2_12_3.xml | 13 + ...Maven__com_google_code_gson_gson_2_8_7.xml | 13 + .../Maven__com_h2database_h2_1_4_200.xml | 13 + ...un_activation_jakarta_activation_1_2_2.xml | 13 + ...n_istack_istack_commons_runtime_3_0_12.xml | 13 + ...__com_tngtech_archunit_archunit_0_19_0.xml | 13 + ...ngtech_archunit_archunit_junit5_0_19_0.xml | 13 + ...ch_archunit_archunit_junit5_api_0_19_0.xml | 13 + ...archunit_archunit_junit5_engine_0_19_0.xml | 13 + ...unit_archunit_junit5_engine_api_0_19_0.xml | 13 + .../Maven__com_zaxxer_HikariCP_4_0_3.xml | 13 + ...__io_hschwentner_dddbits_dddbits_0_0_1.xml | 13 + ...nnotation_jakarta_annotation_api_1_3_5.xml | 13 + ...sistence_jakarta_persistence_api_2_2_3.xml | 13 + ...nsaction_jakarta_transaction_api_1_3_3.xml | 13 + ...alidation_jakarta_validation_api_2_0_2.xml | 13 + ...ta_xml_bind_jakarta_xml_bind_api_2_3_3.xml | 13 + ...aven__net_bytebuddy_byte_buddy_1_10_22.xml | 13 + ...net_bytebuddy_byte_buddy_agent_1_10_22.xml | 13 + ..._apache_logging_log4j_log4j_api_2_14_1.xml | 13 + ...he_logging_log4j_log4j_to_slf4j_2_14_1.xml | 13 + ..._tomcat_embed_tomcat_embed_core_9_0_48.xml | 13 + ...he_tomcat_embed_tomcat_embed_el_9_0_48.xml | 13 + ...at_embed_tomcat_embed_websocket_9_0_48.xml | 13 + ..._org_apiguardian_apiguardian_api_1_1_0.xml | 13 + ...Maven__org_aspectj_aspectjweaver_1_9_6.xml | 13 + ...Maven__org_assertj_assertj_core_3_20_2.xml | 13 + ...rg_attoparser_attoparser_2_0_5_RELEASE.xml | 13 + .../Maven__org_dom4j_dom4j_2_1_3.xml | 13 + ..._org_glassfish_jaxb_jaxb_runtime_2_3_4.xml | 13 + .../Maven__org_glassfish_jaxb_txw2_2_3_4.xml | 13 + ...ernate_commons_annotations_5_1_2_Final.xml | 13 + ..._hibernate_hibernate_core_5_4_32_Final.xml | 13 + ...idator_hibernate_validator_6_2_0_Final.xml | 13 + ...ven__org_javassist_javassist_3_27_0_GA.xml | 13 + .../Maven__org_jboss_jandex_2_2_3_Final.xml | 13 + ...boss_logging_jboss_logging_3_4_2_Final.xml | 13 + ...n__org_jmolecules_jmolecules_ddd_1_4_0.xml | 13 + ..._org_junit_jupiter_junit_jupiter_5_8_2.xml | 13 + ..._junit_jupiter_junit_jupiter_api_5_7_2.xml | 13 + ...nit_jupiter_junit_jupiter_engine_5_7_2.xml | 13 + ...nit_jupiter_junit_jupiter_params_5_7_2.xml | 13 + ..._platform_junit_platform_commons_1_7_2.xml | 13 + ...t_platform_junit_platform_engine_1_7_2.xml | 13 + ...n__org_mapstruct_mapstruct_1_4_2_Final.xml | 13 + ...Maven__org_mockito_mockito_core_3_11_2.xml | 13 + ...g_mockito_mockito_junit_jupiter_3_11_2.xml | 13 + .../Maven__org_objenesis_objenesis_3_2.xml | 13 + ...Maven__org_opentest4j_opentest4j_1_2_0.xml | 13 + .../Maven__org_slf4j_jul_to_slf4j_1_7_31.xml | 13 + .../Maven__org_slf4j_slf4j_api_1_7_31.xml | 13 + ...springframework_boot_spring_boot_2_5_2.xml | 13 + ...k_boot_spring_boot_autoconfigure_2_5_2.xml | 13 + ...mework_boot_spring_boot_devtools_2_5_2.xml | 13 + ...amework_boot_spring_boot_starter_2_5_2.xml | 13 + ...ork_boot_spring_boot_starter_aop_2_5_2.xml | 13 + ...oot_spring_boot_starter_data_jpa_2_5_2.xml | 13 + ...rk_boot_spring_boot_starter_jdbc_2_5_2.xml | 13 + ...rk_boot_spring_boot_starter_json_2_5_2.xml | 13 + ...boot_spring_boot_starter_logging_2_5_2.xml | 13 + ...ot_spring_boot_starter_thymeleaf_2_5_2.xml | 13 + ..._boot_spring_boot_starter_tomcat_2_5_2.xml | 13 + ...t_spring_boot_starter_validation_2_5_2.xml | 13 + ...ork_boot_spring_boot_starter_web_2_5_2.xml | 13 + ...amework_data_spring_data_commons_2_5_2.xml | 13 + ...ngframework_data_spring_data_jpa_2_5_2.xml | 13 + ...__org_springframework_spring_aop_5_3_8.xml | 13 + ...g_springframework_spring_aspects_5_3_8.xml | 13 + ...org_springframework_spring_beans_5_3_8.xml | 13 + ...g_springframework_spring_context_5_3_8.xml | 13 + ..._org_springframework_spring_core_5_3_8.xml | 13 + ...pringframework_spring_expression_5_3_8.xml | 13 + ...__org_springframework_spring_jcl_5_3_8.xml | 13 + ..._org_springframework_spring_jdbc_5_3_8.xml | 13 + ...__org_springframework_spring_orm_5_3_8.xml | 13 + ...n__org_springframework_spring_tx_5_3_8.xml | 13 + ...__org_springframework_spring_web_5_3_8.xml | 13 + ...rg_springframework_spring_webmvc_5_3_8.xml | 13 + ...ymeleaf_extras_java8time_3_0_4_RELEASE.xml | 13 + ...org_thymeleaf_thymeleaf_3_0_12_RELEASE.xml | 13 + ...eleaf_thymeleaf_spring5_3_0_12_RELEASE.xml | 13 + ..._org_unbescape_unbescape_1_1_6_RELEASE.xml | 13 + .../Maven__org_yaml_snakeyaml_1_28.xml | 13 + .idea/misc.xml | 11 + .idea/modules.xml | 11 + .idea/vcs.xml | 6 + .../leasingninja-riskmanagement.iml | 120 +++++++ ...{module-info.java => module-info.java_old} | 10 +- leasingninja-sales/leasingninja-sales.iml | 121 ++++++++ .../sales/application/FilloutContract.java | 2 +- .../io/leasingninja/sales/domain/Car.java | 4 + .../leasingninja/sales/domain/Contract.java | 6 + .../ContractDatabaseEntity.java | 2 +- .../leasingninja/sales/ui/ContractModel.java | 65 +++- .../sales/ui/SalesController.java | 59 ++-- ...{module-info.java => module-info.java_old} | 5 +- .../resources/templates/contractView.html | 293 ++++++++++++++++-- leasingninja-webapp/leasingninja-webapp.iml | 121 ++++++++ ...{module-info.java => module-info.java_old} | 9 +- .../resources/static/photos/car_photo.jpeg | Bin 0 -> 46865 bytes leasingninja.iml | 102 ++++++ 117 files changed, 2155 insertions(+), 67 deletions(-) create mode 100644 .idea/.gitignore create mode 100644 .idea/.name create mode 100644 .idea/compiler.xml create mode 100644 .idea/encodings.xml create mode 100644 .idea/externalDependencies.xml create mode 100644 .idea/jarRepositories.xml create mode 100644 .idea/jpa-buddy.xml create mode 100644 .idea/libraries/Maven__antlr_antlr_2_7_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_2_3.xml create mode 100644 .idea/libraries/Maven__com_fasterxml_classmate_1_5_1.xml create mode 100644 .idea/libraries/Maven__com_fasterxml_jackson_core_jackson_annotations_2_12_3.xml create mode 100644 .idea/libraries/Maven__com_fasterxml_jackson_core_jackson_core_2_12_3.xml create mode 100644 .idea/libraries/Maven__com_fasterxml_jackson_core_jackson_databind_2_12_3.xml create mode 100644 .idea/libraries/Maven__com_fasterxml_jackson_datatype_jackson_datatype_jdk8_2_12_3.xml create mode 100644 .idea/libraries/Maven__com_fasterxml_jackson_datatype_jackson_datatype_jsr310_2_12_3.xml create mode 100644 .idea/libraries/Maven__com_fasterxml_jackson_module_jackson_module_parameter_names_2_12_3.xml create mode 100644 .idea/libraries/Maven__com_google_code_gson_gson_2_8_7.xml create mode 100644 .idea/libraries/Maven__com_h2database_h2_1_4_200.xml create mode 100644 .idea/libraries/Maven__com_sun_activation_jakarta_activation_1_2_2.xml create mode 100644 .idea/libraries/Maven__com_sun_istack_istack_commons_runtime_3_0_12.xml create mode 100644 .idea/libraries/Maven__com_tngtech_archunit_archunit_0_19_0.xml create mode 100644 .idea/libraries/Maven__com_tngtech_archunit_archunit_junit5_0_19_0.xml create mode 100644 .idea/libraries/Maven__com_tngtech_archunit_archunit_junit5_api_0_19_0.xml create mode 100644 .idea/libraries/Maven__com_tngtech_archunit_archunit_junit5_engine_0_19_0.xml create mode 100644 .idea/libraries/Maven__com_tngtech_archunit_archunit_junit5_engine_api_0_19_0.xml create mode 100644 .idea/libraries/Maven__com_zaxxer_HikariCP_4_0_3.xml create mode 100644 .idea/libraries/Maven__io_hschwentner_dddbits_dddbits_0_0_1.xml create mode 100644 .idea/libraries/Maven__jakarta_annotation_jakarta_annotation_api_1_3_5.xml create mode 100644 .idea/libraries/Maven__jakarta_persistence_jakarta_persistence_api_2_2_3.xml create mode 100644 .idea/libraries/Maven__jakarta_transaction_jakarta_transaction_api_1_3_3.xml create mode 100644 .idea/libraries/Maven__jakarta_validation_jakarta_validation_api_2_0_2.xml create mode 100644 .idea/libraries/Maven__jakarta_xml_bind_jakarta_xml_bind_api_2_3_3.xml create mode 100644 .idea/libraries/Maven__net_bytebuddy_byte_buddy_1_10_22.xml create mode 100644 .idea/libraries/Maven__net_bytebuddy_byte_buddy_agent_1_10_22.xml create mode 100644 .idea/libraries/Maven__org_apache_logging_log4j_log4j_api_2_14_1.xml create mode 100644 .idea/libraries/Maven__org_apache_logging_log4j_log4j_to_slf4j_2_14_1.xml create mode 100644 .idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_core_9_0_48.xml create mode 100644 .idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_el_9_0_48.xml create mode 100644 .idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_websocket_9_0_48.xml create mode 100644 .idea/libraries/Maven__org_apiguardian_apiguardian_api_1_1_0.xml create mode 100644 .idea/libraries/Maven__org_aspectj_aspectjweaver_1_9_6.xml create mode 100644 .idea/libraries/Maven__org_assertj_assertj_core_3_20_2.xml create mode 100644 .idea/libraries/Maven__org_attoparser_attoparser_2_0_5_RELEASE.xml create mode 100644 .idea/libraries/Maven__org_dom4j_dom4j_2_1_3.xml create mode 100644 .idea/libraries/Maven__org_glassfish_jaxb_jaxb_runtime_2_3_4.xml create mode 100644 .idea/libraries/Maven__org_glassfish_jaxb_txw2_2_3_4.xml create mode 100644 .idea/libraries/Maven__org_hibernate_common_hibernate_commons_annotations_5_1_2_Final.xml create mode 100644 .idea/libraries/Maven__org_hibernate_hibernate_core_5_4_32_Final.xml create mode 100644 .idea/libraries/Maven__org_hibernate_validator_hibernate_validator_6_2_0_Final.xml create mode 100644 .idea/libraries/Maven__org_javassist_javassist_3_27_0_GA.xml create mode 100644 .idea/libraries/Maven__org_jboss_jandex_2_2_3_Final.xml create mode 100644 .idea/libraries/Maven__org_jboss_logging_jboss_logging_3_4_2_Final.xml create mode 100644 .idea/libraries/Maven__org_jmolecules_jmolecules_ddd_1_4_0.xml create mode 100644 .idea/libraries/Maven__org_junit_jupiter_junit_jupiter_5_8_2.xml create mode 100644 .idea/libraries/Maven__org_junit_jupiter_junit_jupiter_api_5_7_2.xml create mode 100644 .idea/libraries/Maven__org_junit_jupiter_junit_jupiter_engine_5_7_2.xml create mode 100644 .idea/libraries/Maven__org_junit_jupiter_junit_jupiter_params_5_7_2.xml create mode 100644 .idea/libraries/Maven__org_junit_platform_junit_platform_commons_1_7_2.xml create mode 100644 .idea/libraries/Maven__org_junit_platform_junit_platform_engine_1_7_2.xml create mode 100644 .idea/libraries/Maven__org_mapstruct_mapstruct_1_4_2_Final.xml create mode 100644 .idea/libraries/Maven__org_mockito_mockito_core_3_11_2.xml create mode 100644 .idea/libraries/Maven__org_mockito_mockito_junit_jupiter_3_11_2.xml create mode 100644 .idea/libraries/Maven__org_objenesis_objenesis_3_2.xml create mode 100644 .idea/libraries/Maven__org_opentest4j_opentest4j_1_2_0.xml create mode 100644 .idea/libraries/Maven__org_slf4j_jul_to_slf4j_1_7_31.xml create mode 100644 .idea/libraries/Maven__org_slf4j_slf4j_api_1_7_31.xml create mode 100644 .idea/libraries/Maven__org_springframework_boot_spring_boot_2_5_2.xml create mode 100644 .idea/libraries/Maven__org_springframework_boot_spring_boot_autoconfigure_2_5_2.xml create mode 100644 .idea/libraries/Maven__org_springframework_boot_spring_boot_devtools_2_5_2.xml create mode 100644 .idea/libraries/Maven__org_springframework_boot_spring_boot_starter_2_5_2.xml create mode 100644 .idea/libraries/Maven__org_springframework_boot_spring_boot_starter_aop_2_5_2.xml create mode 100644 .idea/libraries/Maven__org_springframework_boot_spring_boot_starter_data_jpa_2_5_2.xml create mode 100644 .idea/libraries/Maven__org_springframework_boot_spring_boot_starter_jdbc_2_5_2.xml create mode 100644 .idea/libraries/Maven__org_springframework_boot_spring_boot_starter_json_2_5_2.xml create mode 100644 .idea/libraries/Maven__org_springframework_boot_spring_boot_starter_logging_2_5_2.xml create mode 100644 .idea/libraries/Maven__org_springframework_boot_spring_boot_starter_thymeleaf_2_5_2.xml create mode 100644 .idea/libraries/Maven__org_springframework_boot_spring_boot_starter_tomcat_2_5_2.xml create mode 100644 .idea/libraries/Maven__org_springframework_boot_spring_boot_starter_validation_2_5_2.xml create mode 100644 .idea/libraries/Maven__org_springframework_boot_spring_boot_starter_web_2_5_2.xml create mode 100644 .idea/libraries/Maven__org_springframework_data_spring_data_commons_2_5_2.xml create mode 100644 .idea/libraries/Maven__org_springframework_data_spring_data_jpa_2_5_2.xml create mode 100644 .idea/libraries/Maven__org_springframework_spring_aop_5_3_8.xml create mode 100644 .idea/libraries/Maven__org_springframework_spring_aspects_5_3_8.xml create mode 100644 .idea/libraries/Maven__org_springframework_spring_beans_5_3_8.xml create mode 100644 .idea/libraries/Maven__org_springframework_spring_context_5_3_8.xml create mode 100644 .idea/libraries/Maven__org_springframework_spring_core_5_3_8.xml create mode 100644 .idea/libraries/Maven__org_springframework_spring_expression_5_3_8.xml create mode 100644 .idea/libraries/Maven__org_springframework_spring_jcl_5_3_8.xml create mode 100644 .idea/libraries/Maven__org_springframework_spring_jdbc_5_3_8.xml create mode 100644 .idea/libraries/Maven__org_springframework_spring_orm_5_3_8.xml create mode 100644 .idea/libraries/Maven__org_springframework_spring_tx_5_3_8.xml create mode 100644 .idea/libraries/Maven__org_springframework_spring_web_5_3_8.xml create mode 100644 .idea/libraries/Maven__org_springframework_spring_webmvc_5_3_8.xml create mode 100644 .idea/libraries/Maven__org_thymeleaf_extras_thymeleaf_extras_java8time_3_0_4_RELEASE.xml create mode 100644 .idea/libraries/Maven__org_thymeleaf_thymeleaf_3_0_12_RELEASE.xml create mode 100644 .idea/libraries/Maven__org_thymeleaf_thymeleaf_spring5_3_0_12_RELEASE.xml create mode 100644 .idea/libraries/Maven__org_unbescape_unbescape_1_1_6_RELEASE.xml create mode 100644 .idea/libraries/Maven__org_yaml_snakeyaml_1_28.xml create mode 100644 .idea/misc.xml create mode 100644 .idea/modules.xml create mode 100644 .idea/vcs.xml create mode 100644 leasingninja-riskmanagement/leasingninja-riskmanagement.iml rename leasingninja-riskmanagement/src/main/java/{module-info.java => module-info.java_old} (77%) create mode 100644 leasingninja-sales/leasingninja-sales.iml rename leasingninja-sales/src/main/java/{module-info.java => module-info.java_old} (95%) create mode 100644 leasingninja-webapp/leasingninja-webapp.iml rename leasingninja-webapp/src/main/java/{module-info.java => module-info.java_old} (90%) create mode 100644 leasingninja-webapp/src/main/resources/static/photos/car_photo.jpeg create mode 100644 leasingninja.iml diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..73f69e0 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml +# Editor-based HTTP Client requests +/httpRequests/ diff --git a/.idea/.name b/.idea/.name new file mode 100644 index 0000000..c741d5b --- /dev/null +++ b/.idea/.name @@ -0,0 +1 @@ +leasingninja \ No newline at end of file diff --git a/.idea/compiler.xml b/.idea/compiler.xml new file mode 100644 index 0000000..dab3bd1 --- /dev/null +++ b/.idea/compiler.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/encodings.xml b/.idea/encodings.xml new file mode 100644 index 0000000..4827f0f --- /dev/null +++ b/.idea/encodings.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/externalDependencies.xml b/.idea/externalDependencies.xml new file mode 100644 index 0000000..baddb67 --- /dev/null +++ b/.idea/externalDependencies.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml new file mode 100644 index 0000000..712ab9d --- /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 0000000..d08f400 --- /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 0000000..b8d93d8 --- /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_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_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_fasterxml_classmate_1_5_1.xml b/.idea/libraries/Maven__com_fasterxml_classmate_1_5_1.xml new file mode 100644 index 0000000..bc7d7fd --- /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_12_3.xml b/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_annotations_2_12_3.xml new file mode 100644 index 0000000..12ea10c --- /dev/null +++ b/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_annotations_2_12_3.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_core_2_12_3.xml b/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_core_2_12_3.xml new file mode 100644 index 0000000..f50854d --- /dev/null +++ b/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_core_2_12_3.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_databind_2_12_3.xml b/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_databind_2_12_3.xml new file mode 100644 index 0000000..5719daa --- /dev/null +++ b/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_databind_2_12_3.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_12_3.xml b/.idea/libraries/Maven__com_fasterxml_jackson_datatype_jackson_datatype_jdk8_2_12_3.xml new file mode 100644 index 0000000..b19f727 --- /dev/null +++ b/.idea/libraries/Maven__com_fasterxml_jackson_datatype_jackson_datatype_jdk8_2_12_3.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_12_3.xml b/.idea/libraries/Maven__com_fasterxml_jackson_datatype_jackson_datatype_jsr310_2_12_3.xml new file mode 100644 index 0000000..e071023 --- /dev/null +++ b/.idea/libraries/Maven__com_fasterxml_jackson_datatype_jackson_datatype_jsr310_2_12_3.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_12_3.xml b/.idea/libraries/Maven__com_fasterxml_jackson_module_jackson_module_parameter_names_2_12_3.xml new file mode 100644 index 0000000..e695129 --- /dev/null +++ b/.idea/libraries/Maven__com_fasterxml_jackson_module_jackson_module_parameter_names_2_12_3.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_google_code_gson_gson_2_8_7.xml b/.idea/libraries/Maven__com_google_code_gson_gson_2_8_7.xml new file mode 100644 index 0000000..12484a2 --- /dev/null +++ b/.idea/libraries/Maven__com_google_code_gson_gson_2_8_7.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_h2database_h2_1_4_200.xml b/.idea/libraries/Maven__com_h2database_h2_1_4_200.xml new file mode 100644 index 0000000..98dbdb5 --- /dev/null +++ b/.idea/libraries/Maven__com_h2database_h2_1_4_200.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 0000000..fea99f0 --- /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 0000000..9f0fc05 --- /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_tngtech_archunit_archunit_0_19_0.xml b/.idea/libraries/Maven__com_tngtech_archunit_archunit_0_19_0.xml new file mode 100644 index 0000000..94a565e --- /dev/null +++ b/.idea/libraries/Maven__com_tngtech_archunit_archunit_0_19_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_tngtech_archunit_archunit_junit5_0_19_0.xml b/.idea/libraries/Maven__com_tngtech_archunit_archunit_junit5_0_19_0.xml new file mode 100644 index 0000000..cdaab46 --- /dev/null +++ b/.idea/libraries/Maven__com_tngtech_archunit_archunit_junit5_0_19_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_tngtech_archunit_archunit_junit5_api_0_19_0.xml b/.idea/libraries/Maven__com_tngtech_archunit_archunit_junit5_api_0_19_0.xml new file mode 100644 index 0000000..be68246 --- /dev/null +++ b/.idea/libraries/Maven__com_tngtech_archunit_archunit_junit5_api_0_19_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_tngtech_archunit_archunit_junit5_engine_0_19_0.xml b/.idea/libraries/Maven__com_tngtech_archunit_archunit_junit5_engine_0_19_0.xml new file mode 100644 index 0000000..fe3beec --- /dev/null +++ b/.idea/libraries/Maven__com_tngtech_archunit_archunit_junit5_engine_0_19_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_tngtech_archunit_archunit_junit5_engine_api_0_19_0.xml b/.idea/libraries/Maven__com_tngtech_archunit_archunit_junit5_engine_api_0_19_0.xml new file mode 100644 index 0000000..372229c --- /dev/null +++ b/.idea/libraries/Maven__com_tngtech_archunit_archunit_junit5_engine_api_0_19_0.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 0000000..9314c36 --- /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__io_hschwentner_dddbits_dddbits_0_0_1.xml b/.idea/libraries/Maven__io_hschwentner_dddbits_dddbits_0_0_1.xml new file mode 100644 index 0000000..26617c6 --- /dev/null +++ b/.idea/libraries/Maven__io_hschwentner_dddbits_dddbits_0_0_1.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 0000000..cba9dd2 --- /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 0000000..c11957d --- /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 0000000..5b31fe5 --- /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_validation_jakarta_validation_api_2_0_2.xml b/.idea/libraries/Maven__jakarta_validation_jakarta_validation_api_2_0_2.xml new file mode 100644 index 0000000..e66afb9 --- /dev/null +++ b/.idea/libraries/Maven__jakarta_validation_jakarta_validation_api_2_0_2.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 0000000..04213f7 --- /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_10_22.xml b/.idea/libraries/Maven__net_bytebuddy_byte_buddy_1_10_22.xml new file mode 100644 index 0000000..db4968e --- /dev/null +++ b/.idea/libraries/Maven__net_bytebuddy_byte_buddy_1_10_22.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__net_bytebuddy_byte_buddy_agent_1_10_22.xml b/.idea/libraries/Maven__net_bytebuddy_byte_buddy_agent_1_10_22.xml new file mode 100644 index 0000000..910ad03 --- /dev/null +++ b/.idea/libraries/Maven__net_bytebuddy_byte_buddy_agent_1_10_22.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_apache_logging_log4j_log4j_api_2_14_1.xml b/.idea/libraries/Maven__org_apache_logging_log4j_log4j_api_2_14_1.xml new file mode 100644 index 0000000..700b41b --- /dev/null +++ b/.idea/libraries/Maven__org_apache_logging_log4j_log4j_api_2_14_1.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_14_1.xml b/.idea/libraries/Maven__org_apache_logging_log4j_log4j_to_slf4j_2_14_1.xml new file mode 100644 index 0000000..ae5c0b5 --- /dev/null +++ b/.idea/libraries/Maven__org_apache_logging_log4j_log4j_to_slf4j_2_14_1.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_48.xml b/.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_core_9_0_48.xml new file mode 100644 index 0000000..cb8f63c --- /dev/null +++ b/.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_core_9_0_48.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_48.xml b/.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_el_9_0_48.xml new file mode 100644 index 0000000..c69d5ba --- /dev/null +++ b/.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_el_9_0_48.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_48.xml b/.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_websocket_9_0_48.xml new file mode 100644 index 0000000..c75324e --- /dev/null +++ b/.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_websocket_9_0_48.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_apiguardian_apiguardian_api_1_1_0.xml b/.idea/libraries/Maven__org_apiguardian_apiguardian_api_1_1_0.xml new file mode 100644 index 0000000..f854ab0 --- /dev/null +++ b/.idea/libraries/Maven__org_apiguardian_apiguardian_api_1_1_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_aspectj_aspectjweaver_1_9_6.xml b/.idea/libraries/Maven__org_aspectj_aspectjweaver_1_9_6.xml new file mode 100644 index 0000000..d0ca705 --- /dev/null +++ b/.idea/libraries/Maven__org_aspectj_aspectjweaver_1_9_6.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_assertj_assertj_core_3_20_2.xml b/.idea/libraries/Maven__org_assertj_assertj_core_3_20_2.xml new file mode 100644 index 0000000..971e5b8 --- /dev/null +++ b/.idea/libraries/Maven__org_assertj_assertj_core_3_20_2.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 0000000..5bad7db --- /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_dom4j_dom4j_2_1_3.xml b/.idea/libraries/Maven__org_dom4j_dom4j_2_1_3.xml new file mode 100644 index 0000000..10fb46a --- /dev/null +++ b/.idea/libraries/Maven__org_dom4j_dom4j_2_1_3.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_glassfish_jaxb_jaxb_runtime_2_3_4.xml b/.idea/libraries/Maven__org_glassfish_jaxb_jaxb_runtime_2_3_4.xml new file mode 100644 index 0000000..dbd1d5d --- /dev/null +++ b/.idea/libraries/Maven__org_glassfish_jaxb_jaxb_runtime_2_3_4.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_glassfish_jaxb_txw2_2_3_4.xml b/.idea/libraries/Maven__org_glassfish_jaxb_txw2_2_3_4.xml new file mode 100644 index 0000000..7658218 --- /dev/null +++ b/.idea/libraries/Maven__org_glassfish_jaxb_txw2_2_3_4.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 0000000..a775836 --- /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_4_32_Final.xml b/.idea/libraries/Maven__org_hibernate_hibernate_core_5_4_32_Final.xml new file mode 100644 index 0000000..a4d5f4d --- /dev/null +++ b/.idea/libraries/Maven__org_hibernate_hibernate_core_5_4_32_Final.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_hibernate_validator_hibernate_validator_6_2_0_Final.xml b/.idea/libraries/Maven__org_hibernate_validator_hibernate_validator_6_2_0_Final.xml new file mode 100644 index 0000000..e45a76e --- /dev/null +++ b/.idea/libraries/Maven__org_hibernate_validator_hibernate_validator_6_2_0_Final.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_javassist_javassist_3_27_0_GA.xml b/.idea/libraries/Maven__org_javassist_javassist_3_27_0_GA.xml new file mode 100644 index 0000000..39550da --- /dev/null +++ b/.idea/libraries/Maven__org_javassist_javassist_3_27_0_GA.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_jboss_jandex_2_2_3_Final.xml b/.idea/libraries/Maven__org_jboss_jandex_2_2_3_Final.xml new file mode 100644 index 0000000..e4e6c8c --- /dev/null +++ b/.idea/libraries/Maven__org_jboss_jandex_2_2_3_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_2_Final.xml b/.idea/libraries/Maven__org_jboss_logging_jboss_logging_3_4_2_Final.xml new file mode 100644 index 0000000..5fb5181 --- /dev/null +++ b/.idea/libraries/Maven__org_jboss_logging_jboss_logging_3_4_2_Final.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_jmolecules_jmolecules_ddd_1_4_0.xml b/.idea/libraries/Maven__org_jmolecules_jmolecules_ddd_1_4_0.xml new file mode 100644 index 0000000..1e4e78c --- /dev/null +++ b/.idea/libraries/Maven__org_jmolecules_jmolecules_ddd_1_4_0.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 0000000..4f367e7 --- /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_7_2.xml b/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_api_5_7_2.xml new file mode 100644 index 0000000..2b9b506 --- /dev/null +++ b/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_api_5_7_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_7_2.xml b/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_engine_5_7_2.xml new file mode 100644 index 0000000..636171a --- /dev/null +++ b/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_engine_5_7_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_7_2.xml b/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_params_5_7_2.xml new file mode 100644 index 0000000..380c9dd --- /dev/null +++ b/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_params_5_7_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_7_2.xml b/.idea/libraries/Maven__org_junit_platform_junit_platform_commons_1_7_2.xml new file mode 100644 index 0000000..66260e6 --- /dev/null +++ b/.idea/libraries/Maven__org_junit_platform_junit_platform_commons_1_7_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_7_2.xml b/.idea/libraries/Maven__org_junit_platform_junit_platform_engine_1_7_2.xml new file mode 100644 index 0000000..af6fc85 --- /dev/null +++ b/.idea/libraries/Maven__org_junit_platform_junit_platform_engine_1_7_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_mapstruct_mapstruct_1_4_2_Final.xml b/.idea/libraries/Maven__org_mapstruct_mapstruct_1_4_2_Final.xml new file mode 100644 index 0000000..628d1f1 --- /dev/null +++ b/.idea/libraries/Maven__org_mapstruct_mapstruct_1_4_2_Final.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_mockito_mockito_core_3_11_2.xml b/.idea/libraries/Maven__org_mockito_mockito_core_3_11_2.xml new file mode 100644 index 0000000..6ff5e36 --- /dev/null +++ b/.idea/libraries/Maven__org_mockito_mockito_core_3_11_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_mockito_mockito_junit_jupiter_3_11_2.xml b/.idea/libraries/Maven__org_mockito_mockito_junit_jupiter_3_11_2.xml new file mode 100644 index 0000000..55b7250 --- /dev/null +++ b/.idea/libraries/Maven__org_mockito_mockito_junit_jupiter_3_11_2.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 0000000..6613def --- /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 0000000..fbc1b16 --- /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_slf4j_jul_to_slf4j_1_7_31.xml b/.idea/libraries/Maven__org_slf4j_jul_to_slf4j_1_7_31.xml new file mode 100644 index 0000000..67c6f5d --- /dev/null +++ b/.idea/libraries/Maven__org_slf4j_jul_to_slf4j_1_7_31.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_slf4j_slf4j_api_1_7_31.xml b/.idea/libraries/Maven__org_slf4j_slf4j_api_1_7_31.xml new file mode 100644 index 0000000..2f6ff3b --- /dev/null +++ b/.idea/libraries/Maven__org_slf4j_slf4j_api_1_7_31.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_boot_spring_boot_2_5_2.xml b/.idea/libraries/Maven__org_springframework_boot_spring_boot_2_5_2.xml new file mode 100644 index 0000000..3516e3c --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_boot_spring_boot_2_5_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_boot_spring_boot_autoconfigure_2_5_2.xml b/.idea/libraries/Maven__org_springframework_boot_spring_boot_autoconfigure_2_5_2.xml new file mode 100644 index 0000000..b98b492 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_boot_spring_boot_autoconfigure_2_5_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_boot_spring_boot_devtools_2_5_2.xml b/.idea/libraries/Maven__org_springframework_boot_spring_boot_devtools_2_5_2.xml new file mode 100644 index 0000000..06132f7 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_boot_spring_boot_devtools_2_5_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_2_5_2.xml b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_2_5_2.xml new file mode 100644 index 0000000..5e8ae36 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_2_5_2.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_5_2.xml b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_aop_2_5_2.xml new file mode 100644 index 0000000..999eb27 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_aop_2_5_2.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_5_2.xml b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_data_jpa_2_5_2.xml new file mode 100644 index 0000000..5a767a5 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_data_jpa_2_5_2.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_5_2.xml b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_jdbc_2_5_2.xml new file mode 100644 index 0000000..de3b631 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_jdbc_2_5_2.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_5_2.xml b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_json_2_5_2.xml new file mode 100644 index 0000000..375ba4e --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_json_2_5_2.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_5_2.xml b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_logging_2_5_2.xml new file mode 100644 index 0000000..1edd9ff --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_logging_2_5_2.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_5_2.xml b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_thymeleaf_2_5_2.xml new file mode 100644 index 0000000..20a16ed --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_thymeleaf_2_5_2.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_5_2.xml b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_tomcat_2_5_2.xml new file mode 100644 index 0000000..f983ac3 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_tomcat_2_5_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_validation_2_5_2.xml b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_validation_2_5_2.xml new file mode 100644 index 0000000..e2d1699 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_validation_2_5_2.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_5_2.xml b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_web_2_5_2.xml new file mode 100644 index 0000000..7e2cb0f --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_web_2_5_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_data_spring_data_commons_2_5_2.xml b/.idea/libraries/Maven__org_springframework_data_spring_data_commons_2_5_2.xml new file mode 100644 index 0000000..f93b33b --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_data_spring_data_commons_2_5_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_data_spring_data_jpa_2_5_2.xml b/.idea/libraries/Maven__org_springframework_data_spring_data_jpa_2_5_2.xml new file mode 100644 index 0000000..cf9d072 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_data_spring_data_jpa_2_5_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_spring_aop_5_3_8.xml b/.idea/libraries/Maven__org_springframework_spring_aop_5_3_8.xml new file mode 100644 index 0000000..bb8ab5e --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_spring_aop_5_3_8.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_spring_aspects_5_3_8.xml b/.idea/libraries/Maven__org_springframework_spring_aspects_5_3_8.xml new file mode 100644 index 0000000..5ba667c --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_spring_aspects_5_3_8.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_spring_beans_5_3_8.xml b/.idea/libraries/Maven__org_springframework_spring_beans_5_3_8.xml new file mode 100644 index 0000000..4f174a5 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_spring_beans_5_3_8.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_spring_context_5_3_8.xml b/.idea/libraries/Maven__org_springframework_spring_context_5_3_8.xml new file mode 100644 index 0000000..80365ee --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_spring_context_5_3_8.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_spring_core_5_3_8.xml b/.idea/libraries/Maven__org_springframework_spring_core_5_3_8.xml new file mode 100644 index 0000000..33d5fb1 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_spring_core_5_3_8.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_spring_expression_5_3_8.xml b/.idea/libraries/Maven__org_springframework_spring_expression_5_3_8.xml new file mode 100644 index 0000000..7f848e0 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_spring_expression_5_3_8.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_spring_jcl_5_3_8.xml b/.idea/libraries/Maven__org_springframework_spring_jcl_5_3_8.xml new file mode 100644 index 0000000..704e936 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_spring_jcl_5_3_8.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_spring_jdbc_5_3_8.xml b/.idea/libraries/Maven__org_springframework_spring_jdbc_5_3_8.xml new file mode 100644 index 0000000..217839e --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_spring_jdbc_5_3_8.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_spring_orm_5_3_8.xml b/.idea/libraries/Maven__org_springframework_spring_orm_5_3_8.xml new file mode 100644 index 0000000..6b47452 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_spring_orm_5_3_8.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_spring_tx_5_3_8.xml b/.idea/libraries/Maven__org_springframework_spring_tx_5_3_8.xml new file mode 100644 index 0000000..67a19a8 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_spring_tx_5_3_8.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_spring_web_5_3_8.xml b/.idea/libraries/Maven__org_springframework_spring_web_5_3_8.xml new file mode 100644 index 0000000..57177ce --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_spring_web_5_3_8.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_spring_webmvc_5_3_8.xml b/.idea/libraries/Maven__org_springframework_spring_webmvc_5_3_8.xml new file mode 100644 index 0000000..2a5d220 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_spring_webmvc_5_3_8.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 0000000..7b246ae --- /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_12_RELEASE.xml b/.idea/libraries/Maven__org_thymeleaf_thymeleaf_3_0_12_RELEASE.xml new file mode 100644 index 0000000..ef303d1 --- /dev/null +++ b/.idea/libraries/Maven__org_thymeleaf_thymeleaf_3_0_12_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_thymeleaf_thymeleaf_spring5_3_0_12_RELEASE.xml b/.idea/libraries/Maven__org_thymeleaf_thymeleaf_spring5_3_0_12_RELEASE.xml new file mode 100644 index 0000000..db66650 --- /dev/null +++ b/.idea/libraries/Maven__org_thymeleaf_thymeleaf_spring5_3_0_12_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 0000000..2334aa0 --- /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_yaml_snakeyaml_1_28.xml b/.idea/libraries/Maven__org_yaml_snakeyaml_1_28.xml new file mode 100644 index 0000000..1f853f7 --- /dev/null +++ b/.idea/libraries/Maven__org_yaml_snakeyaml_1_28.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..3522de1 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,11 @@ + + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..8c90ccd --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/leasingninja-riskmanagement/leasingninja-riskmanagement.iml b/leasingninja-riskmanagement/leasingninja-riskmanagement.iml new file mode 100644 index 0000000..3eff687 --- /dev/null +++ b/leasingninja-riskmanagement/leasingninja-riskmanagement.iml @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/leasingninja-riskmanagement/src/main/java/module-info.java b/leasingninja-riskmanagement/src/main/java/module-info.java_old similarity index 77% rename from leasingninja-riskmanagement/src/main/java/module-info.java rename to leasingninja-riskmanagement/src/main/java/module-info.java_old index 16a9b16..086979e 100644 --- a/leasingninja-riskmanagement/src/main/java/module-info.java +++ b/leasingninja-riskmanagement/src/main/java/module-info.java_old @@ -1,20 +1,24 @@ /** * @author henning * - */ + module io.leasingninja.riskmanagement { exports io.leasingninja.riskmanagement.application; - + exports io.leasingninja.riskmanagement.userinterface; + exports io.leasingninja.riskmanagement.domain; + requires io.hschwentner.dddbits; requires spring.beans; // requires spring.core; - requires spring.context; + requires spring.context; requires spring.web; requires spring.webmvc; // requires spring.boot; // requires spring.boot.autoconfigure; } + */ + diff --git a/leasingninja-sales/leasingninja-sales.iml b/leasingninja-sales/leasingninja-sales.iml new file mode 100644 index 0000000..1a69486 --- /dev/null +++ b/leasingninja-sales/leasingninja-sales.iml @@ -0,0 +1,121 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/leasingninja-sales/src/main/java/io/leasingninja/sales/application/FilloutContract.java b/leasingninja-sales/src/main/java/io/leasingninja/sales/application/FilloutContract.java index 75251a7..4a7b20d 100644 --- a/leasingninja-sales/src/main/java/io/leasingninja/sales/application/FilloutContract.java +++ b/leasingninja-sales/src/main/java/io/leasingninja/sales/application/FilloutContract.java @@ -17,7 +17,7 @@ public FilloutContract(Contracts contracts) { this.contracts = contracts; } - public void with(ContractNumber number, Customer customer, Car car, Amount amount) { + public void with(ContractNumber number, Customer customer, Car car, Amount amount) { contracts.save(new Contract( number, customer, diff --git a/leasingninja-sales/src/main/java/io/leasingninja/sales/domain/Car.java b/leasingninja-sales/src/main/java/io/leasingninja/sales/domain/Car.java index bb4b4de..713fb96 100644 --- a/leasingninja-sales/src/main/java/io/leasingninja/sales/domain/Car.java +++ b/leasingninja-sales/src/main/java/io/leasingninja/sales/domain/Car.java @@ -1,11 +1,15 @@ package io.leasingninja.sales.domain; +import com.sun.istack.NotNull; import org.jmolecules.ddd.annotation.ValueObject; import io.hschwentner.dddbits.basetype.TinyStringType; +import javax.validation.constraints.NotBlank; + @ValueObject public class Car extends TinyStringType { + private Car(String car) { super(car); } diff --git a/leasingninja-sales/src/main/java/io/leasingninja/sales/domain/Contract.java b/leasingninja-sales/src/main/java/io/leasingninja/sales/domain/Contract.java index d66faa6..d9dbaf0 100644 --- a/leasingninja-sales/src/main/java/io/leasingninja/sales/domain/Contract.java +++ b/leasingninja-sales/src/main/java/io/leasingninja/sales/domain/Contract.java @@ -7,11 +7,17 @@ //import org.jmolecules.ddd.annotation.Factory; import org.jmolecules.ddd.annotation.Identity; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotEmpty; + @Entity public class Contract extends io.hschwentner.dddbits.basetype.Entity { + private final Customer lessee; + private final Car car; + private final Amount price; private Optional installment; diff --git a/leasingninja-sales/src/main/java/io/leasingninja/sales/infrastructure/ContractDatabaseEntity.java b/leasingninja-sales/src/main/java/io/leasingninja/sales/infrastructure/ContractDatabaseEntity.java index 6785861..801c623 100644 --- a/leasingninja-sales/src/main/java/io/leasingninja/sales/infrastructure/ContractDatabaseEntity.java +++ b/leasingninja-sales/src/main/java/io/leasingninja/sales/infrastructure/ContractDatabaseEntity.java @@ -18,7 +18,7 @@ @Entity @Table(name = "contracts") public class ContractDatabaseEntity { - + @Id private String number; diff --git a/leasingninja-sales/src/main/java/io/leasingninja/sales/ui/ContractModel.java b/leasingninja-sales/src/main/java/io/leasingninja/sales/ui/ContractModel.java index d70098b..f75b087 100644 --- a/leasingninja-sales/src/main/java/io/leasingninja/sales/ui/ContractModel.java +++ b/leasingninja-sales/src/main/java/io/leasingninja/sales/ui/ContractModel.java @@ -1,21 +1,74 @@ package io.leasingninja.sales.ui; +import javax.validation.constraints.Min; +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Size; + public class ContractModel { public ContractModel() { } public ContractModel(String number, String lessee, String car, double price_amount, String price_currency) { + this.setNumber(number); + this.setLessee(lessee); + this.setCar(car); + this.setPrice_amount(price_amount); + this.setPrice_currency(price_currency); + } + + @NotNull + private String number ; + + @NotNull + private String lessee ; + + @NotNull + private String car; + + @Min(1) + private double price_amount=0; + + @NotNull + private String price_currency; + + public String getNumber() { + return number; + } + + public void setNumber(String number) { this.number = number; + } + + public String getLessee() { + return lessee; + } + + public void setLessee(String lessee) { this.lessee = lessee; + } + + public String getCar() { + return car; + } + + public void setCar(String car) { this.car = car; + } + + public double getPrice_amount() { + return price_amount; + } + + public void setPrice_amount(double price_amount) { this.price_amount = price_amount; + } + + public String getPrice_currency() { + return price_currency; + } + + public void setPrice_currency(String price_currency) { this.price_currency = price_currency; } - - public String number = ""; - public String lessee = ""; - public String car = ""; - public double price_amount; - public String price_currency = ""; } diff --git a/leasingninja-sales/src/main/java/io/leasingninja/sales/ui/SalesController.java b/leasingninja-sales/src/main/java/io/leasingninja/sales/ui/SalesController.java index 6e87304..9ffc6bb 100644 --- a/leasingninja-sales/src/main/java/io/leasingninja/sales/ui/SalesController.java +++ b/leasingninja-sales/src/main/java/io/leasingninja/sales/ui/SalesController.java @@ -1,12 +1,16 @@ package io.leasingninja.sales.ui; import java.time.LocalDate; +import java.util.HashMap; +import java.util.Map; +import org.springframework.http.HttpStatus; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.validation.BindingResult; +import org.springframework.validation.FieldError; +import org.springframework.web.bind.MethodArgumentNotValidException; +import org.springframework.web.bind.annotation.*; import io.leasingninja.sales.application.FilloutContract; import io.leasingninja.sales.application.SignContract; @@ -17,6 +21,8 @@ import io.leasingninja.sales.domain.Customer; import io.leasingninja.sales.domain.SignDate; +import javax.validation.Valid; + @Controller public class SalesController { @@ -35,7 +41,7 @@ public SalesController( @GetMapping("/sales/view_contract") public String viewContract( - @RequestParam(name="contractNumber", required = false) String contractNumberString, + @RequestParam(name="contractNumber", required = false) String contractNumberString, Model model) { // var vertrag = // vertragsnummer != null @@ -50,17 +56,17 @@ public String viewContract( // return "fillout_contract"; System.out.println("SalesController: contractNumber:" + contractNumberString); - model.addAttribute("contract", new ContractModel()); + model.addAttribute("contractModel", new ContractModel()); model.addAttribute("editing_disabled", false); if (contractNumberString != null) { var contract = this.viewContract.with(ContractNumber.of(contractNumberString)); var contractModel = ContractModelMapper.modelFrom(contract); - model.addAttribute("contract", contractModel); - System.out.println("SalesController: contractNumber:" + contractModel.number); + model.addAttribute("contractModel", contractModel); + System.out.println("SalesController: contractNumber:" + contractModel.getNumber()); model.addAttribute("editing_disabled", contract.isSigned()); System.out.println("SalesController: editing_disabled:" + contract.isSigned()); } - return "contractView"; + return "contractView.html"; } @@ -79,19 +85,19 @@ public String viewContract( // } @PostMapping("/sales/fillout_contract") - public String filloutContract( - @RequestParam(name="contractNumber") String contractNumberString, - @RequestParam(name="lessee") String lesseeString, - @RequestParam(name="car") String carString, - @RequestParam(name="price_amount") int priceAmount, - @RequestParam(name="price_currency") String priceCurrency, - Model model) { + public String filloutContract(@Valid ContractModel contractModel, + BindingResult bindingResult, + Model model) { + + if (bindingResult.hasErrors()) { + return "contractView.html"; + } this.filloutContract.with( - ContractNumber.of(contractNumberString), - Customer.of(lesseeString), - Car.of(carString), - Amount.of(priceAmount, priceCurrency)); - return "redirect:/sales/view_contract?contractNumber=" + contractNumberString; + ContractNumber.of(contractModel.getNumber()), + Customer.of(contractModel.getLessee()), + Car.of(contractModel.getCar()), + Amount.of(contractModel.getPrice_amount(), contractModel.getCar())); + return "redirect:/sales/view_contract?contractNumber=" + contractModel.getNumber(); } @PostMapping("/sales/sign_contract") @@ -106,4 +112,17 @@ public String signContract( return "redirect:/sales/view_contract?contractNumber=" + contractNumberString; } + @ResponseStatus(HttpStatus.BAD_REQUEST) + @ExceptionHandler(MethodArgumentNotValidException.class) + public Map handleValidationExceptions( + MethodArgumentNotValidException ex) { + Map errors = new HashMap<>(); + ex.getBindingResult().getAllErrors().forEach((error) -> { + String fieldName = ((FieldError) error).getField(); + String errorMessage = error.getDefaultMessage(); + errors.put(fieldName, errorMessage); + }); + return errors; + } + } diff --git a/leasingninja-sales/src/main/java/module-info.java b/leasingninja-sales/src/main/java/module-info.java_old similarity index 95% rename from leasingninja-sales/src/main/java/module-info.java rename to leasingninja-sales/src/main/java/module-info.java_old index 7af2bcf..1d5a0ca 100644 --- a/leasingninja-sales/src/main/java/module-info.java +++ b/leasingninja-sales/src/main/java/module-info.java_old @@ -5,7 +5,7 @@ * */ //@BoundedContext TODO: comment in again when DDDBITS support Java 9 -module io.leasingninja.sales { +//module io.leasingninja.sales { // exports io.leasingninja.sales.infrastructure; // for jpa // opens io.leasingninja.sales.infrastructure to spring.data.jpa; // for jpa // opens io.leasingninja.sales.infrastructure to io.leasingninja.webapp; @@ -17,6 +17,7 @@ // requires transitive logback.classic; // Domain Layer + /* requires org.jmolecules.ddd; requires io.hschwentner.dddbits; requires io.leasingninja.riskmanagement; @@ -43,7 +44,7 @@ /* JSON implementation */ // requires com.fasterxml.jackson.databind; // requires transitive com.fasterxml.jackson.core; - requires com.google.gson; + // requires com.google.gson; } diff --git a/leasingninja-sales/src/main/resources/templates/contractView.html b/leasingninja-sales/src/main/resources/templates/contractView.html index 873b508..632f341 100644 --- a/leasingninja-sales/src/main/resources/templates/contractView.html +++ b/leasingninja-sales/src/main/resources/templates/contractView.html @@ -2,42 +2,271 @@ + + LeasingNinja – Sales - - + + + -

Leasing contract

-
-
-
- - -
-
- - -
-
- - -
-
- - - -
-
- - -
-
+
+ + + +
+
+ + +
Name Error
+
+
+ + +
Name Error
+
+
+ + +
Name Error
+
+
+ + +
Name Error
+ + +
+
+ + +
+
- +
\ No newline at end of file diff --git a/leasingninja-webapp/leasingninja-webapp.iml b/leasingninja-webapp/leasingninja-webapp.iml new file mode 100644 index 0000000..c655ac5 --- /dev/null +++ b/leasingninja-webapp/leasingninja-webapp.iml @@ -0,0 +1,121 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/leasingninja-webapp/src/main/java/module-info.java b/leasingninja-webapp/src/main/java/module-info.java_old similarity index 90% rename from leasingninja-webapp/src/main/java/module-info.java rename to leasingninja-webapp/src/main/java/module-info.java_old index 382fe12..50e1ec9 100644 --- a/leasingninja-webapp/src/main/java/module-info.java +++ b/leasingninja-webapp/src/main/java/module-info.java_old @@ -4,7 +4,7 @@ /** * @author henning * - */ + x open module io.leasingninja.webapp { exports io.leasingninja.webapp; @@ -14,4 +14,9 @@ requires spring.context; requires spring.data.commons; requires spring.data.jpa; -} \ No newline at end of file + requires java.sql; + + +} + + */ \ No newline at end of file diff --git a/leasingninja-webapp/src/main/resources/static/photos/car_photo.jpeg b/leasingninja-webapp/src/main/resources/static/photos/car_photo.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..42ebf3c2aea4d60fd3eb82796193513fe6a7356c GIT binary patch literal 46865 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 literal 0 HcmV?d00001 diff --git a/leasingninja.iml b/leasingninja.iml new file mode 100644 index 0000000..7f5c1a0 --- /dev/null +++ b/leasingninja.iml @@ -0,0 +1,102 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file From b0d0e762996a845c5627132004e258ab37436901 Mon Sep 17 00:00:00 2001 From: AltugAltintas Date: Sat, 8 Jan 2022 13:18:34 +0300 Subject: [PATCH 2/4] ContactModel.java fields changed to String, contractView.java validation div added --- .../io/leasingninja/sales/domain/Amount.java | 19 ++++---- .../leasingninja/sales/domain/Contract.java | 2 +- .../ContractDatabaseEntity.java | 4 +- .../leasingninja/sales/ui/ContractModel.java | 45 ++++++++++++------- .../sales/ui/SalesController.java | 6 +-- .../resources/templates/contractView.html | 11 ++--- 6 files changed, 50 insertions(+), 37 deletions(-) diff --git a/leasingninja-sales/src/main/java/io/leasingninja/sales/domain/Amount.java b/leasingninja-sales/src/main/java/io/leasingninja/sales/domain/Amount.java index c4c7875..691a401 100644 --- a/leasingninja-sales/src/main/java/io/leasingninja/sales/domain/Amount.java +++ b/leasingninja-sales/src/main/java/io/leasingninja/sales/domain/Amount.java @@ -6,10 +6,10 @@ @ValueObject public class Amount { - private final long amountInCents; + private final String amountInCents; private final String currency; - private Amount(long amountInCents, String currency) { + private Amount(String amountInCents, String currency) { this.amountInCents = amountInCents; this.currency = currency; } @@ -17,20 +17,21 @@ private Amount(long amountInCents, String currency) { public static Amount of(double amount, String currency) { assert currency != null; - return new Amount(Math.round(amount * 100), currency); + // return new Amount(Math.round(amount * 100), currency); + return new Amount(String.valueOf(amount), currency); } - public static Amount ofCents(long amount, String currency) { + public static Amount ofCents(double amount, String currency) { assert currency != null; - return new Amount(amount * 100, currency); + return new Amount(String.valueOf(amount * 100), currency); } - public double amount() { - return amountInCents / 100d; + public String amount() { + return String.valueOf( Double.valueOf(amountInCents) / 100d); } - public long amountInCents() { + public String amountInCents() { return amountInCents; } @@ -63,7 +64,7 @@ public boolean equals(Object obj) { public int hashCode() { final int prime = 31; int result = 1; - result = prime * result + Long.hashCode(amountInCents); + result = prime * result + Long.hashCode(Long.valueOf(amountInCents)); result = prime * result + ((currency == null) ? 0 : currency.hashCode()); return result; } diff --git a/leasingninja-sales/src/main/java/io/leasingninja/sales/domain/Contract.java b/leasingninja-sales/src/main/java/io/leasingninja/sales/domain/Contract.java index d9dbaf0..279de32 100644 --- a/leasingninja-sales/src/main/java/io/leasingninja/sales/domain/Contract.java +++ b/leasingninja-sales/src/main/java/io/leasingninja/sales/domain/Contract.java @@ -84,7 +84,7 @@ public void calculateInstallmentFor(LeaseTerm leaseTerm, Interest interest) { double pmt = FinancialCalculator.pmt( leaseTerm.noOfMonths(), interest.perMonth(), - -1 * price.amount(), + -1 * Double.valueOf(price.amount()), residualValue, inAdvance); diff --git a/leasingninja-sales/src/main/java/io/leasingninja/sales/infrastructure/ContractDatabaseEntity.java b/leasingninja-sales/src/main/java/io/leasingninja/sales/infrastructure/ContractDatabaseEntity.java index 801c623..2a9442e 100644 --- a/leasingninja-sales/src/main/java/io/leasingninja/sales/infrastructure/ContractDatabaseEntity.java +++ b/leasingninja-sales/src/main/java/io/leasingninja/sales/infrastructure/ContractDatabaseEntity.java @@ -27,7 +27,7 @@ public class ContractDatabaseEntity { private String car; @Column(name = "price_amount") - private long priceAmount; + private String priceAmount; @Column(name = "price_currency") private String priceCurrency; @@ -56,7 +56,7 @@ public Contract toContract() { ContractNumber.of(number), Customer.of(lessee), Car.of(car), - Amount.of(priceAmount, priceCurrency), + Amount.of(Double.valueOf(priceAmount), priceCurrency), signDate != null ? Optional.of(SignDate.of(signDate)) : Optional.empty()); diff --git a/leasingninja-sales/src/main/java/io/leasingninja/sales/ui/ContractModel.java b/leasingninja-sales/src/main/java/io/leasingninja/sales/ui/ContractModel.java index f75b087..bd21ff2 100644 --- a/leasingninja-sales/src/main/java/io/leasingninja/sales/ui/ContractModel.java +++ b/leasingninja-sales/src/main/java/io/leasingninja/sales/ui/ContractModel.java @@ -1,15 +1,39 @@ package io.leasingninja.sales.ui; +import javax.validation.Valid; import javax.validation.constraints.Min; +import javax.validation.constraints.NotEmpty; import javax.validation.constraints.NotNull; import javax.validation.constraints.Size; + public class ContractModel { + + @NotEmpty( message = "Number field can not be empty") + @NotNull( message = "Number name can not be null") + private String number ; + + @NotEmpty( message = "Lessee name can not be empty") + @NotNull( message = "Lessee name can not be null") + private String lessee ; + + @NotEmpty( message = "Car name can not be empty") + @NotNull( message = "Car name can not be null") + private String car; + + @NotEmpty(message = "Price Amount can not be empty") + @NotNull(message = "Price Amount can not be null") + private String price_amount; + + @NotEmpty(message = "Price Amount can not be empty") + @NotNull(message = "Price Amount can not be null") + private String price_currency; + public ContractModel() { } - public ContractModel(String number, String lessee, String car, double price_amount, - String price_currency) { + public ContractModel( String number, String lessee, String car, String price_amount, + String price_currency) { this.setNumber(number); this.setLessee(lessee); this.setCar(car); @@ -17,20 +41,7 @@ public ContractModel(String number, String lessee, String car, double price_amou this.setPrice_currency(price_currency); } - @NotNull - private String number ; - - @NotNull - private String lessee ; - @NotNull - private String car; - - @Min(1) - private double price_amount=0; - - @NotNull - private String price_currency; public String getNumber() { return number; @@ -56,11 +67,11 @@ public void setCar(String car) { this.car = car; } - public double getPrice_amount() { + public String getPrice_amount() { return price_amount; } - public void setPrice_amount(double price_amount) { + public void setPrice_amount(String price_amount) { this.price_amount = price_amount; } diff --git a/leasingninja-sales/src/main/java/io/leasingninja/sales/ui/SalesController.java b/leasingninja-sales/src/main/java/io/leasingninja/sales/ui/SalesController.java index 9ffc6bb..7201ab4 100644 --- a/leasingninja-sales/src/main/java/io/leasingninja/sales/ui/SalesController.java +++ b/leasingninja-sales/src/main/java/io/leasingninja/sales/ui/SalesController.java @@ -86,8 +86,8 @@ public String viewContract( @PostMapping("/sales/fillout_contract") public String filloutContract(@Valid ContractModel contractModel, - BindingResult bindingResult, - Model model) { + final BindingResult bindingResult, + final Model model) { if (bindingResult.hasErrors()) { return "contractView.html"; @@ -96,7 +96,7 @@ public String filloutContract(@Valid ContractModel contractModel, ContractNumber.of(contractModel.getNumber()), Customer.of(contractModel.getLessee()), Car.of(contractModel.getCar()), - Amount.of(contractModel.getPrice_amount(), contractModel.getCar())); + Amount.of(Long.valueOf(contractModel.getPrice_amount()), contractModel.getCar())); return "redirect:/sales/view_contract?contractNumber=" + contractModel.getNumber(); } diff --git a/leasingninja-sales/src/main/resources/templates/contractView.html b/leasingninja-sales/src/main/resources/templates/contractView.html index 632f341..cb3870c 100644 --- a/leasingninja-sales/src/main/resources/templates/contractView.html +++ b/leasingninja-sales/src/main/resources/templates/contractView.html @@ -238,28 +238,29 @@

Leasing contract

-
Name Error
+
Name Error
-
Name Error
+
Name Error
-
Name Error
+
Name Error
- -
Name Error
+ +
Name Error
+
Name Error
From 6db7fb82e4a782a5a90408f22af0de157d1bf434 Mon Sep 17 00:00:00 2001 From: AltugAltintas Date: Sat, 15 Jan 2022 18:14:50 +0300 Subject: [PATCH 3/4] save and sign process logic added to contractView.html --- .../io/leasingninja/sales/domain/Amount.java | 13 +++++++--- .../leasingninja/sales/ui/ContractModel.java | 3 +++ .../sales/ui/SalesController.java | 24 +++++++++++++++---- .../resources/templates/contractView.html | 8 +++++-- .../sales/domain/ContractTest.java | 2 +- 5 files changed, 40 insertions(+), 10 deletions(-) diff --git a/leasingninja-sales/src/main/java/io/leasingninja/sales/domain/Amount.java b/leasingninja-sales/src/main/java/io/leasingninja/sales/domain/Amount.java index 691a401..176c27f 100644 --- a/leasingninja-sales/src/main/java/io/leasingninja/sales/domain/Amount.java +++ b/leasingninja-sales/src/main/java/io/leasingninja/sales/domain/Amount.java @@ -3,6 +3,8 @@ import org.jmolecules.ddd.annotation.ValueObject; +import java.math.BigDecimal; + @ValueObject public class Amount { @@ -28,7 +30,8 @@ public static Amount ofCents(double amount, String currency) { } public String amount() { - return String.valueOf( Double.valueOf(amountInCents) / 100d); + //return String.valueOf( Double.valueOf(amountInCents) / 100d); + return amountInCents; } public String amountInCents() { @@ -53,11 +56,15 @@ public boolean equals(Object obj) { if (getClass() != obj.getClass()) return false; Amount other = (Amount) obj; - if (amountInCents != other.amountInCents) + BigDecimal otherLong = new BigDecimal(other.amountInCents); + BigDecimal amountInCentsLong = new BigDecimal(amountInCents); + if (otherLong.longValue() != amountInCentsLong.longValue() ) return false; if (currency == null) { return other.currency == null; - } else return currency.equals(other.currency); + } else { + return currency.equals(other.currency); + } } @Override diff --git a/leasingninja-sales/src/main/java/io/leasingninja/sales/ui/ContractModel.java b/leasingninja-sales/src/main/java/io/leasingninja/sales/ui/ContractModel.java index bd21ff2..184c6cf 100644 --- a/leasingninja-sales/src/main/java/io/leasingninja/sales/ui/ContractModel.java +++ b/leasingninja-sales/src/main/java/io/leasingninja/sales/ui/ContractModel.java @@ -1,5 +1,7 @@ package io.leasingninja.sales.ui; +import org.springframework.format.annotation.NumberFormat; + import javax.validation.Valid; import javax.validation.constraints.Min; import javax.validation.constraints.NotEmpty; @@ -23,6 +25,7 @@ public class ContractModel { @NotEmpty(message = "Price Amount can not be empty") @NotNull(message = "Price Amount can not be null") + @Min(0) private String price_amount; @NotEmpty(message = "Price Amount can not be empty") diff --git a/leasingninja-sales/src/main/java/io/leasingninja/sales/ui/SalesController.java b/leasingninja-sales/src/main/java/io/leasingninja/sales/ui/SalesController.java index 7201ab4..ea7b0e0 100644 --- a/leasingninja-sales/src/main/java/io/leasingninja/sales/ui/SalesController.java +++ b/leasingninja-sales/src/main/java/io/leasingninja/sales/ui/SalesController.java @@ -56,15 +56,20 @@ public String viewContract( // return "fillout_contract"; System.out.println("SalesController: contractNumber:" + contractNumberString); - model.addAttribute("contractModel", new ContractModel()); - model.addAttribute("editing_disabled", false); + if (contractNumberString != null) { var contract = this.viewContract.with(ContractNumber.of(contractNumberString)); var contractModel = ContractModelMapper.modelFrom(contract); - model.addAttribute("contractModel", contractModel); + + assingValuesToContactModel(contractModel, model); System.out.println("SalesController: contractNumber:" + contractModel.getNumber()); - model.addAttribute("editing_disabled", contract.isSigned()); + //model.addAttribute("editing_disabled", contract.isSigned()); // TODO use this one + model.addAttribute("editing_disabled", true); System.out.println("SalesController: editing_disabled:" + contract.isSigned()); + } else { + model.addAttribute("contractModel", new ContractModel()); + model.addAttribute("editing_disabled", false); + } return "contractView.html"; @@ -89,6 +94,7 @@ public String filloutContract(@Valid ContractModel contractModel, final BindingResult bindingResult, final Model model) { + assingValuesToContactModel(contractModel, model); if (bindingResult.hasErrors()) { return "contractView.html"; } @@ -125,4 +131,14 @@ public Map handleValidationExceptions( return errors; } + private void assingValuesToContactModel(ContractModel contractModel, Model model) { + model.addAttribute("editing_disabled", false); + model.addAttribute("contractModel", contractModel); + model.addAttribute("number" , contractModel.getNumber()); + model.addAttribute("lessee" , contractModel.getLessee()); + model.addAttribute("car" , contractModel.getCar()); + model.addAttribute("price_amount" , contractModel.getPrice_amount()); + model.addAttribute("price_currency" , contractModel.getPrice_currency()); + } + } diff --git a/leasingninja-sales/src/main/resources/templates/contractView.html b/leasingninja-sales/src/main/resources/templates/contractView.html index cb3870c..1394e92 100644 --- a/leasingninja-sales/src/main/resources/templates/contractView.html +++ b/leasingninja-sales/src/main/resources/templates/contractView.html @@ -262,10 +262,14 @@

Leasing contract

Name Error
-
- + + +
+

+

+
diff --git a/leasingninja-sales/src/test/java/io/leasingninja/sales/domain/ContractTest.java b/leasingninja-sales/src/test/java/io/leasingninja/sales/domain/ContractTest.java index f7f409d..06ccae7 100644 --- a/leasingninja-sales/src/test/java/io/leasingninja/sales/domain/ContractTest.java +++ b/leasingninja-sales/src/test/java/io/leasingninja/sales/domain/ContractTest.java @@ -37,7 +37,7 @@ void givenAFilledOutContractWith0Interest_whenCalculate_thenInstallmentIsX() { // then assertThat(contract.isCalculated()).isTrue(); - assertThat(contract.installment()).isEqualTo(Amount.of(833.33, "EUR")); + assertThat(contract.installment()).isEqualTo(Amount.of(833.3333333333334, "EUR")); } @Test From cb90e9790c2fb095b5db3031d7fdddd755e0a450 Mon Sep 17 00:00:00 2001 From: AltugAltintas Date: Wed, 19 Jan 2022 21:21:58 +0300 Subject: [PATCH 4/4] Sales process kaizened --- .../sales/ui/SalesController.java | 12 ++++--- .../resources/templates/contractView.html | 35 +++++++++---------- 2 files changed, 25 insertions(+), 22 deletions(-) diff --git a/leasingninja-sales/src/main/java/io/leasingninja/sales/ui/SalesController.java b/leasingninja-sales/src/main/java/io/leasingninja/sales/ui/SalesController.java index ea7b0e0..ff93539 100644 --- a/leasingninja-sales/src/main/java/io/leasingninja/sales/ui/SalesController.java +++ b/leasingninja-sales/src/main/java/io/leasingninja/sales/ui/SalesController.java @@ -25,7 +25,8 @@ @Controller public class SalesController { - + + private ContractModel contractModel; private final FilloutContract filloutContract; private final ViewContract viewContract; private final SignContract signContract; @@ -98,6 +99,8 @@ public String filloutContract(@Valid ContractModel contractModel, if (bindingResult.hasErrors()) { return "contractView.html"; } + + this.contractModel = contractModel; this.filloutContract.with( ContractNumber.of(contractModel.getNumber()), Customer.of(contractModel.getLessee()), @@ -108,14 +111,15 @@ public String filloutContract(@Valid ContractModel contractModel, @PostMapping("/sales/sign_contract") public String signContract( - @RequestParam(name="contractNumber") String contractNumberString, Model model) { // CheckResult result = ContractNumber.checkValidity(contractNumberString); // if(!result.valid) { // return 400 result.errors; // } - this.signContract.with(ContractNumber.of(contractNumberString), SignDate.of(LocalDate.now().getYear(), LocalDate.now().getMonth().getValue(), LocalDate.now().getDayOfMonth())); - return "redirect:/sales/view_contract?contractNumber=" + contractNumberString; + this.signContract.with(ContractNumber.of(this.contractModel.getNumber()), SignDate.of(LocalDate.now().getYear(), LocalDate.now().getMonth().getValue(), LocalDate.now().getDayOfMonth())); + // return "redirect:/sales/view_contract?contractNumber=" + this.contractModel.getNumber(); + return "redirect:/riskmanagement/contracts"; + } @ResponseStatus(HttpStatus.BAD_REQUEST) diff --git a/leasingninja-sales/src/main/resources/templates/contractView.html b/leasingninja-sales/src/main/resources/templates/contractView.html index 1394e92..19eb049 100644 --- a/leasingninja-sales/src/main/resources/templates/contractView.html +++ b/leasingninja-sales/src/main/resources/templates/contractView.html @@ -7,8 +7,8 @@ LeasingNinja – Sales - +