diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..129a20e
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,111 @@
+application.properties
+
+
+# Created by https://www.gitignore.io/api/java,intellij
+# Edit at https://www.gitignore.io/?templates=java,intellij
+
+### Intellij ###
+# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and WebStorm
+# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
+
+# User-specific stuff
+.idea/**/workspace.xml
+.idea/**/tasks.xml
+.idea/**/usage.statistics.xml
+.idea/**/dictionaries
+.idea/**/shelf
+
+# Generated files
+.idea/**/contentModel.xml
+
+# Sensitive or high-churn files
+.idea/**/dataSources/
+.idea/**/dataSources.ids
+.idea/**/dataSources.local.xml
+.idea/**/sqlDataSources.xml
+.idea/**/dynamic.xml
+.idea/**/uiDesigner.xml
+.idea/**/dbnavigator.xml
+
+# Gradle
+.idea/**/gradle.xml
+.idea/**/libraries
+
+# Gradle and Maven with auto-import
+# When using Gradle or Maven with auto-import, you should exclude module files,
+# since they will be recreated, and may cause churn. Uncomment if using
+# auto-import.
+# .idea/modules.xml
+# .idea/*.iml
+# .idea/modules
+
+# CMake
+cmake-build-*/
+
+# Mongo Explorer plugin
+.idea/**/mongoSettings.xml
+
+# File-based project format
+*.iws
+
+# IntelliJ
+out/
+
+# mpeltonen/sbt-idea plugin
+.idea_modules/
+
+# JIRA plugin
+atlassian-ide-plugin.xml
+
+# Cursive Clojure plugin
+.idea/replstate.xml
+
+# Crashlytics plugin (for Android Studio and IntelliJ)
+com_crashlytics_export_strings.xml
+crashlytics.properties
+crashlytics-build.properties
+fabric.properties
+
+# Editor-based Rest Client
+.idea/httpRequests
+
+# Android studio 3.1+ serialized cache file
+.idea/caches/build_file_checksums.ser
+
+### Intellij Patch ###
+# Comment Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-215987721
+
+# *.iml
+# modules.xml
+# .idea/misc.xml
+# *.ipr
+
+# Sonarlint plugin
+.idea/sonarlint
+
+### Java ###
+# Compiled class file
+*.class
+
+# Log file
+*.log
+
+# BlueJ files
+*.ctxt
+
+# Mobile Tools for Java (J2ME)
+.mtj.tmp/
+git
+# Package Files #
+*.jar
+*.war
+*.nar
+*.ear
+*.zip
+*.tar.gz
+*.rar
+
+# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
+hs_err_pid*
+
+# End of https://www.gitignore.io/api/java,intellij
\ No newline at end of file
diff --git a/.idea/compiler.xml b/.idea/compiler.xml
new file mode 100644
index 0000000..09f7e11
--- /dev/null
+++ b/.idea/compiler.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/dataSources.xml b/.idea/dataSources.xml
new file mode 100644
index 0000000..e05b8fd
--- /dev/null
+++ b/.idea/dataSources.xml
@@ -0,0 +1,11 @@
+
+
+
+
+ postgresql
+ true
+ org.postgresql.Driver
+ jdbc:postgresql://ec2-54-75-230-41.eu-west-1.compute.amazonaws.com:5432/d3e1jrm08qe91q?ssl=true&sslmode=require&=org.postgresql.ssl.NonValidatingFactory
+
+
+
\ No newline at end of file
diff --git a/.idea/encodings.xml b/.idea/encodings.xml
new file mode 100644
index 0000000..e79da7e
--- /dev/null
+++ b/.idea/encodings.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_4_0.xml b/.idea/libraries/Maven__com_fasterxml_classmate_1_4_0.xml
new file mode 100644
index 0000000..bbd3a88
--- /dev/null
+++ b/.idea/libraries/Maven__com_fasterxml_classmate_1_4_0.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_annotations_2_9_0.xml b/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_annotations_2_9_0.xml
new file mode 100644
index 0000000..06441f4
--- /dev/null
+++ b/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_annotations_2_9_0.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_core_2_9_8.xml b/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_core_2_9_8.xml
new file mode 100644
index 0000000..2c9ac2a
--- /dev/null
+++ b/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_core_2_9_8.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_databind_2_9_8.xml b/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_databind_2_9_8.xml
new file mode 100644
index 0000000..c8ac135
--- /dev/null
+++ b/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_databind_2_9_8.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_9_8.xml b/.idea/libraries/Maven__com_fasterxml_jackson_datatype_jackson_datatype_jdk8_2_9_8.xml
new file mode 100644
index 0000000..6ca63f0
--- /dev/null
+++ b/.idea/libraries/Maven__com_fasterxml_jackson_datatype_jackson_datatype_jdk8_2_9_8.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_9_8.xml b/.idea/libraries/Maven__com_fasterxml_jackson_datatype_jackson_datatype_jsr310_2_9_8.xml
new file mode 100644
index 0000000..1727927
--- /dev/null
+++ b/.idea/libraries/Maven__com_fasterxml_jackson_datatype_jackson_datatype_jsr310_2_9_8.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_9_8.xml b/.idea/libraries/Maven__com_fasterxml_jackson_module_jackson_module_parameter_names_2_9_8.xml
new file mode 100644
index 0000000..d7711b9
--- /dev/null
+++ b/.idea/libraries/Maven__com_fasterxml_jackson_module_jackson_module_parameter_names_2_9_8.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__com_jayway_jsonpath_json_path_2_4_0.xml b/.idea/libraries/Maven__com_jayway_jsonpath_json_path_2_4_0.xml
new file mode 100644
index 0000000..f19f6eb
--- /dev/null
+++ b/.idea/libraries/Maven__com_jayway_jsonpath_json_path_2_4_0.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 0000000..b8581a6
--- /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_3_2_0.xml b/.idea/libraries/Maven__com_zaxxer_HikariCP_3_2_0.xml
new file mode 100644
index 0000000..8f760a2
--- /dev/null
+++ b/.idea/libraries/Maven__com_zaxxer_HikariCP_3_2_0.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__javax_activation_javax_activation_api_1_2_0.xml b/.idea/libraries/Maven__javax_activation_javax_activation_api_1_2_0.xml
new file mode 100644
index 0000000..ff49512
--- /dev/null
+++ b/.idea/libraries/Maven__javax_activation_javax_activation_api_1_2_0.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__javax_annotation_javax_annotation_api_1_3_2.xml b/.idea/libraries/Maven__javax_annotation_javax_annotation_api_1_3_2.xml
new file mode 100644
index 0000000..e74f3ab
--- /dev/null
+++ b/.idea/libraries/Maven__javax_annotation_javax_annotation_api_1_3_2.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__javax_persistence_javax_persistence_api_2_2.xml b/.idea/libraries/Maven__javax_persistence_javax_persistence_api_2_2.xml
new file mode 100644
index 0000000..b7d39c6
--- /dev/null
+++ b/.idea/libraries/Maven__javax_persistence_javax_persistence_api_2_2.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__javax_transaction_javax_transaction_api_1_3.xml b/.idea/libraries/Maven__javax_transaction_javax_transaction_api_1_3.xml
new file mode 100644
index 0000000..8f5f3c6
--- /dev/null
+++ b/.idea/libraries/Maven__javax_transaction_javax_transaction_api_1_3.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__javax_validation_validation_api_2_0_1_Final.xml b/.idea/libraries/Maven__javax_validation_validation_api_2_0_1_Final.xml
new file mode 100644
index 0000000..6978c0b
--- /dev/null
+++ b/.idea/libraries/Maven__javax_validation_validation_api_2_0_1_Final.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__javax_xml_bind_jaxb_api_2_3_1.xml b/.idea/libraries/Maven__javax_xml_bind_jaxb_api_2_3_1.xml
new file mode 100644
index 0000000..059f88f
--- /dev/null
+++ b/.idea/libraries/Maven__javax_xml_bind_jaxb_api_2_3_1.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__junit_junit_4_12.xml b/.idea/libraries/Maven__junit_junit_4_12.xml
new file mode 100644
index 0000000..d411041
--- /dev/null
+++ b/.idea/libraries/Maven__junit_junit_4_12.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__net_bytebuddy_byte_buddy_1_9_7.xml b/.idea/libraries/Maven__net_bytebuddy_byte_buddy_1_9_7.xml
new file mode 100644
index 0000000..742b745
--- /dev/null
+++ b/.idea/libraries/Maven__net_bytebuddy_byte_buddy_1_9_7.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__net_bytebuddy_byte_buddy_agent_1_9_7.xml b/.idea/libraries/Maven__net_bytebuddy_byte_buddy_agent_1_9_7.xml
new file mode 100644
index 0000000..d4e13b8
--- /dev/null
+++ b/.idea/libraries/Maven__net_bytebuddy_byte_buddy_agent_1_9_7.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__net_minidev_accessors_smart_1_2.xml b/.idea/libraries/Maven__net_minidev_accessors_smart_1_2.xml
new file mode 100644
index 0000000..b3d3858
--- /dev/null
+++ b/.idea/libraries/Maven__net_minidev_accessors_smart_1_2.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__net_minidev_json_smart_2_3.xml b/.idea/libraries/Maven__net_minidev_json_smart_2_3.xml
new file mode 100644
index 0000000..1083023
--- /dev/null
+++ b/.idea/libraries/Maven__net_minidev_json_smart_2_3.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_apache_logging_log4j_log4j_api_2_11_1.xml b/.idea/libraries/Maven__org_apache_logging_log4j_log4j_api_2_11_1.xml
new file mode 100644
index 0000000..c27223f
--- /dev/null
+++ b/.idea/libraries/Maven__org_apache_logging_log4j_log4j_api_2_11_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_11_1.xml b/.idea/libraries/Maven__org_apache_logging_log4j_log4j_to_slf4j_2_11_1.xml
new file mode 100644
index 0000000..bd733be
--- /dev/null
+++ b/.idea/libraries/Maven__org_apache_logging_log4j_log4j_to_slf4j_2_11_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_14.xml b/.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_core_9_0_14.xml
new file mode 100644
index 0000000..40762a5
--- /dev/null
+++ b/.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_core_9_0_14.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_14.xml b/.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_el_9_0_14.xml
new file mode 100644
index 0000000..4ae6e17
--- /dev/null
+++ b/.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_el_9_0_14.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_14.xml b/.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_websocket_9_0_14.xml
new file mode 100644
index 0000000..b2011b4
--- /dev/null
+++ b/.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_websocket_9_0_14.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_aspectj_aspectjweaver_1_9_2.xml b/.idea/libraries/Maven__org_aspectj_aspectjweaver_1_9_2.xml
new file mode 100644
index 0000000..a1f3d90
--- /dev/null
+++ b/.idea/libraries/Maven__org_aspectj_aspectjweaver_1_9_2.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_assertj_assertj_core_3_11_1.xml b/.idea/libraries/Maven__org_assertj_assertj_core_3_11_1.xml
new file mode 100644
index 0000000..4d16d46
--- /dev/null
+++ b/.idea/libraries/Maven__org_assertj_assertj_core_3_11_1.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_dom4j_dom4j_2_1_1.xml b/.idea/libraries/Maven__org_dom4j_dom4j_2_1_1.xml
new file mode 100644
index 0000000..6c8b371
--- /dev/null
+++ b/.idea/libraries/Maven__org_dom4j_dom4j_2_1_1.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_hamcrest_hamcrest_core_1_3.xml b/.idea/libraries/Maven__org_hamcrest_hamcrest_core_1_3.xml
new file mode 100644
index 0000000..f58bbc1
--- /dev/null
+++ b/.idea/libraries/Maven__org_hamcrest_hamcrest_core_1_3.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_hamcrest_hamcrest_library_1_3.xml b/.idea/libraries/Maven__org_hamcrest_hamcrest_library_1_3.xml
new file mode 100644
index 0000000..78dbe45
--- /dev/null
+++ b/.idea/libraries/Maven__org_hamcrest_hamcrest_library_1_3.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_hibernate_common_hibernate_commons_annotations_5_0_4_Final.xml b/.idea/libraries/Maven__org_hibernate_common_hibernate_commons_annotations_5_0_4_Final.xml
new file mode 100644
index 0000000..c4d0340
--- /dev/null
+++ b/.idea/libraries/Maven__org_hibernate_common_hibernate_commons_annotations_5_0_4_Final.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_hibernate_hibernate_core_5_3_7_Final.xml b/.idea/libraries/Maven__org_hibernate_hibernate_core_5_3_7_Final.xml
new file mode 100644
index 0000000..3924ff1
--- /dev/null
+++ b/.idea/libraries/Maven__org_hibernate_hibernate_core_5_3_7_Final.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_hibernate_validator_hibernate_validator_6_0_14_Final.xml b/.idea/libraries/Maven__org_hibernate_validator_hibernate_validator_6_0_14_Final.xml
new file mode 100644
index 0000000..9fcad3a
--- /dev/null
+++ b/.idea/libraries/Maven__org_hibernate_validator_hibernate_validator_6_0_14_Final.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_javassist_javassist_3_23_1_GA.xml b/.idea/libraries/Maven__org_javassist_javassist_3_23_1_GA.xml
new file mode 100644
index 0000000..7f1d521
--- /dev/null
+++ b/.idea/libraries/Maven__org_javassist_javassist_3_23_1_GA.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_jboss_jandex_2_0_5_Final.xml b/.idea/libraries/Maven__org_jboss_jandex_2_0_5_Final.xml
new file mode 100644
index 0000000..34e9ada
--- /dev/null
+++ b/.idea/libraries/Maven__org_jboss_jandex_2_0_5_Final.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_jboss_logging_jboss_logging_3_3_2_Final.xml b/.idea/libraries/Maven__org_jboss_logging_jboss_logging_3_3_2_Final.xml
new file mode 100644
index 0000000..5f7dd01
--- /dev/null
+++ b/.idea/libraries/Maven__org_jboss_logging_jboss_logging_3_3_2_Final.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_mockito_mockito_core_2_23_4.xml b/.idea/libraries/Maven__org_mockito_mockito_core_2_23_4.xml
new file mode 100644
index 0000000..159204f
--- /dev/null
+++ b/.idea/libraries/Maven__org_mockito_mockito_core_2_23_4.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_objenesis_objenesis_2_6.xml b/.idea/libraries/Maven__org_objenesis_objenesis_2_6.xml
new file mode 100644
index 0000000..af41e3b
--- /dev/null
+++ b/.idea/libraries/Maven__org_objenesis_objenesis_2_6.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_ow2_asm_asm_5_0_4.xml b/.idea/libraries/Maven__org_ow2_asm_asm_5_0_4.xml
new file mode 100644
index 0000000..0bf8cf2
--- /dev/null
+++ b/.idea/libraries/Maven__org_ow2_asm_asm_5_0_4.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_postgresql_postgresql_42_2_5.xml b/.idea/libraries/Maven__org_postgresql_postgresql_42_2_5.xml
new file mode 100644
index 0000000..b0b7ad4
--- /dev/null
+++ b/.idea/libraries/Maven__org_postgresql_postgresql_42_2_5.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_projectlombok_lombok_1_18_4.xml b/.idea/libraries/Maven__org_projectlombok_lombok_1_18_4.xml
new file mode 100644
index 0000000..71063d7
--- /dev/null
+++ b/.idea/libraries/Maven__org_projectlombok_lombok_1_18_4.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_skyscreamer_jsonassert_1_5_0.xml b/.idea/libraries/Maven__org_skyscreamer_jsonassert_1_5_0.xml
new file mode 100644
index 0000000..c4c54d6
--- /dev/null
+++ b/.idea/libraries/Maven__org_skyscreamer_jsonassert_1_5_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_25.xml b/.idea/libraries/Maven__org_slf4j_jul_to_slf4j_1_7_25.xml
new file mode 100644
index 0000000..6073e53
--- /dev/null
+++ b/.idea/libraries/Maven__org_slf4j_jul_to_slf4j_1_7_25.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_slf4j_slf4j_api_1_7_25.xml b/.idea/libraries/Maven__org_slf4j_slf4j_api_1_7_25.xml
new file mode 100644
index 0000000..20e8163
--- /dev/null
+++ b/.idea/libraries/Maven__org_slf4j_slf4j_api_1_7_25.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_springframework_boot_spring_boot_2_1_2_RELEASE.xml b/.idea/libraries/Maven__org_springframework_boot_spring_boot_2_1_2_RELEASE.xml
new file mode 100644
index 0000000..52dffb0
--- /dev/null
+++ b/.idea/libraries/Maven__org_springframework_boot_spring_boot_2_1_2_RELEASE.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_springframework_boot_spring_boot_autoconfigure_2_1_2_RELEASE.xml b/.idea/libraries/Maven__org_springframework_boot_spring_boot_autoconfigure_2_1_2_RELEASE.xml
new file mode 100644
index 0000000..50096a1
--- /dev/null
+++ b/.idea/libraries/Maven__org_springframework_boot_spring_boot_autoconfigure_2_1_2_RELEASE.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_2_1_2_RELEASE.xml b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_2_1_2_RELEASE.xml
new file mode 100644
index 0000000..307d733
--- /dev/null
+++ b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_2_1_2_RELEASE.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_1_2_RELEASE.xml b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_aop_2_1_2_RELEASE.xml
new file mode 100644
index 0000000..8dbca18
--- /dev/null
+++ b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_aop_2_1_2_RELEASE.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_1_2_RELEASE.xml b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_data_jpa_2_1_2_RELEASE.xml
new file mode 100644
index 0000000..96bf3fb
--- /dev/null
+++ b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_data_jpa_2_1_2_RELEASE.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_1_2_RELEASE.xml b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_jdbc_2_1_2_RELEASE.xml
new file mode 100644
index 0000000..200c563
--- /dev/null
+++ b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_jdbc_2_1_2_RELEASE.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_1_2_RELEASE.xml b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_json_2_1_2_RELEASE.xml
new file mode 100644
index 0000000..dd1fee3
--- /dev/null
+++ b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_json_2_1_2_RELEASE.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_1_2_RELEASE.xml b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_logging_2_1_2_RELEASE.xml
new file mode 100644
index 0000000..363334e
--- /dev/null
+++ b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_logging_2_1_2_RELEASE.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_1_2_RELEASE.xml b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_test_2_1_2_RELEASE.xml
new file mode 100644
index 0000000..9bd17bb
--- /dev/null
+++ b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_test_2_1_2_RELEASE.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_1_2_RELEASE.xml b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_tomcat_2_1_2_RELEASE.xml
new file mode 100644
index 0000000..80c04d8
--- /dev/null
+++ b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_tomcat_2_1_2_RELEASE.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_1_2_RELEASE.xml b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_web_2_1_2_RELEASE.xml
new file mode 100644
index 0000000..f804775
--- /dev/null
+++ b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_web_2_1_2_RELEASE.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_springframework_boot_spring_boot_test_2_1_2_RELEASE.xml b/.idea/libraries/Maven__org_springframework_boot_spring_boot_test_2_1_2_RELEASE.xml
new file mode 100644
index 0000000..73cd53c
--- /dev/null
+++ b/.idea/libraries/Maven__org_springframework_boot_spring_boot_test_2_1_2_RELEASE.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_1_2_RELEASE.xml b/.idea/libraries/Maven__org_springframework_boot_spring_boot_test_autoconfigure_2_1_2_RELEASE.xml
new file mode 100644
index 0000000..e4c79a7
--- /dev/null
+++ b/.idea/libraries/Maven__org_springframework_boot_spring_boot_test_autoconfigure_2_1_2_RELEASE.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_springframework_data_spring_data_commons_2_1_4_RELEASE.xml b/.idea/libraries/Maven__org_springframework_data_spring_data_commons_2_1_4_RELEASE.xml
new file mode 100644
index 0000000..8a62db2
--- /dev/null
+++ b/.idea/libraries/Maven__org_springframework_data_spring_data_commons_2_1_4_RELEASE.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_springframework_data_spring_data_jpa_2_1_4_RELEASE.xml b/.idea/libraries/Maven__org_springframework_data_spring_data_jpa_2_1_4_RELEASE.xml
new file mode 100644
index 0000000..6afabea
--- /dev/null
+++ b/.idea/libraries/Maven__org_springframework_data_spring_data_jpa_2_1_4_RELEASE.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_springframework_spring_aop_5_1_4_RELEASE.xml b/.idea/libraries/Maven__org_springframework_spring_aop_5_1_4_RELEASE.xml
new file mode 100644
index 0000000..b38621b
--- /dev/null
+++ b/.idea/libraries/Maven__org_springframework_spring_aop_5_1_4_RELEASE.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_springframework_spring_aspects_5_1_4_RELEASE.xml b/.idea/libraries/Maven__org_springframework_spring_aspects_5_1_4_RELEASE.xml
new file mode 100644
index 0000000..5ed8a18
--- /dev/null
+++ b/.idea/libraries/Maven__org_springframework_spring_aspects_5_1_4_RELEASE.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_springframework_spring_beans_5_1_4_RELEASE.xml b/.idea/libraries/Maven__org_springframework_spring_beans_5_1_4_RELEASE.xml
new file mode 100644
index 0000000..9116913
--- /dev/null
+++ b/.idea/libraries/Maven__org_springframework_spring_beans_5_1_4_RELEASE.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_springframework_spring_context_5_1_4_RELEASE.xml b/.idea/libraries/Maven__org_springframework_spring_context_5_1_4_RELEASE.xml
new file mode 100644
index 0000000..05c3535
--- /dev/null
+++ b/.idea/libraries/Maven__org_springframework_spring_context_5_1_4_RELEASE.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_springframework_spring_core_5_1_4_RELEASE.xml b/.idea/libraries/Maven__org_springframework_spring_core_5_1_4_RELEASE.xml
new file mode 100644
index 0000000..3110ace
--- /dev/null
+++ b/.idea/libraries/Maven__org_springframework_spring_core_5_1_4_RELEASE.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_springframework_spring_expression_5_1_4_RELEASE.xml b/.idea/libraries/Maven__org_springframework_spring_expression_5_1_4_RELEASE.xml
new file mode 100644
index 0000000..8dc00ae
--- /dev/null
+++ b/.idea/libraries/Maven__org_springframework_spring_expression_5_1_4_RELEASE.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_springframework_spring_jcl_5_1_4_RELEASE.xml b/.idea/libraries/Maven__org_springframework_spring_jcl_5_1_4_RELEASE.xml
new file mode 100644
index 0000000..8b3738f
--- /dev/null
+++ b/.idea/libraries/Maven__org_springframework_spring_jcl_5_1_4_RELEASE.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_springframework_spring_jdbc_5_1_4_RELEASE.xml b/.idea/libraries/Maven__org_springframework_spring_jdbc_5_1_4_RELEASE.xml
new file mode 100644
index 0000000..9d18ad6
--- /dev/null
+++ b/.idea/libraries/Maven__org_springframework_spring_jdbc_5_1_4_RELEASE.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_springframework_spring_orm_5_1_4_RELEASE.xml b/.idea/libraries/Maven__org_springframework_spring_orm_5_1_4_RELEASE.xml
new file mode 100644
index 0000000..b9b3f65
--- /dev/null
+++ b/.idea/libraries/Maven__org_springframework_spring_orm_5_1_4_RELEASE.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_springframework_spring_test_5_1_4_RELEASE.xml b/.idea/libraries/Maven__org_springframework_spring_test_5_1_4_RELEASE.xml
new file mode 100644
index 0000000..fd9a0ef
--- /dev/null
+++ b/.idea/libraries/Maven__org_springframework_spring_test_5_1_4_RELEASE.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_springframework_spring_tx_5_1_4_RELEASE.xml b/.idea/libraries/Maven__org_springframework_spring_tx_5_1_4_RELEASE.xml
new file mode 100644
index 0000000..b93a666
--- /dev/null
+++ b/.idea/libraries/Maven__org_springframework_spring_tx_5_1_4_RELEASE.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_springframework_spring_web_5_1_4_RELEASE.xml b/.idea/libraries/Maven__org_springframework_spring_web_5_1_4_RELEASE.xml
new file mode 100644
index 0000000..8146c41
--- /dev/null
+++ b/.idea/libraries/Maven__org_springframework_spring_web_5_1_4_RELEASE.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_springframework_spring_webmvc_5_1_4_RELEASE.xml b/.idea/libraries/Maven__org_springframework_spring_webmvc_5_1_4_RELEASE.xml
new file mode 100644
index 0000000..5063445
--- /dev/null
+++ b/.idea/libraries/Maven__org_springframework_spring_webmvc_5_1_4_RELEASE.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_xmlunit_xmlunit_core_2_6_2.xml b/.idea/libraries/Maven__org_xmlunit_xmlunit_core_2_6_2.xml
new file mode 100644
index 0000000..9f44657
--- /dev/null
+++ b/.idea/libraries/Maven__org_xmlunit_xmlunit_core_2_6_2.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_yaml_snakeyaml_1_23.xml b/.idea/libraries/Maven__org_yaml_snakeyaml_1_23.xml
new file mode 100644
index 0000000..7e63769
--- /dev/null
+++ b/.idea/libraries/Maven__org_yaml_snakeyaml_1_23.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..d30d09e
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 0000000..e31381b
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/uiDesigner.xml b/.idea/uiDesigner.xml
new file mode 100644
index 0000000..e96534f
--- /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 0000000..94a25f7
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
new file mode 100644
index 0000000..fb65724
--- /dev/null
+++ b/.idea/workspace.xml
@@ -0,0 +1,773 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ asc
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1547322958782
+
+
+ 1547322958782
+
+
+
+
+
+ 1548121370553
+
+
+
+ 1548121370553
+
+
+ 1548123400861
+
+
+
+ 1548123400861
+
+
+ 1548125729921
+
+
+
+ 1548125729921
+
+
+ 1548126421537
+
+
+
+ 1548126421537
+
+
+ 1548127778120
+
+
+
+ 1548127778120
+
+
+ 1548128278948
+
+
+
+ 1548128278948
+
+
+ 1548128323215
+
+
+
+ 1548128323215
+
+
+ 1548176403757
+
+
+
+ 1548176403757
+
+
+ 1548177602799
+
+
+
+ 1548177602799
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1.8
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.mvn/wrapper/maven-wrapper.jar b/.mvn/wrapper/maven-wrapper.jar
new file mode 100644
index 0000000..01e6799
Binary files /dev/null and b/.mvn/wrapper/maven-wrapper.jar differ
diff --git a/.mvn/wrapper/maven-wrapper.properties b/.mvn/wrapper/maven-wrapper.properties
new file mode 100644
index 0000000..7179346
--- /dev/null
+++ b/.mvn/wrapper/maven-wrapper.properties
@@ -0,0 +1 @@
+distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.5.4/apache-maven-3.5.4-bin.zip
diff --git a/LICENSE b/LICENSE
deleted file mode 100644
index 472ac23..0000000
--- a/LICENSE
+++ /dev/null
@@ -1,8 +0,0 @@
-MIT License
-Copyright (c)
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/Magazyn_Client/.gitignore b/Magazyn_Client/.gitignore
deleted file mode 100644
index 84c9832..0000000
--- a/Magazyn_Client/.gitignore
+++ /dev/null
@@ -1,341 +0,0 @@
-## Ignore Visual Studio temporary files, build results, and
-## files generated by popular Visual Studio add-ons.
-##
-## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
-
-# User-specific files
-*.rsuser
-*.suo
-*.user
-*.userosscache
-*.sln.docstates
-
-# User-specific files (MonoDevelop/Xamarin Studio)
-*.userprefs
-
-# Build results
-[Dd]ebug/
-[Dd]ebugPublic/
-[Rr]elease/
-[Rr]eleases/
-x64/
-x86/
-[Aa][Rr][Mm]/
-[Aa][Rr][Mm]64/
-bld/
-[Bb]in/
-[Oo]bj/
-[Ll]og/
-
-# Visual Studio 2015/2017 cache/options directory
-.vs/
-# Uncomment if you have tasks that create the project's static files in wwwroot
-#wwwroot/
-
-# Visual Studio 2017 auto generated files
-Generated\ Files/
-
-# MSTest test Results
-[Tt]est[Rr]esult*/
-[Bb]uild[Ll]og.*
-
-# NUNIT
-*.VisualState.xml
-TestResult.xml
-
-# Build Results of an ATL Project
-[Dd]ebugPS/
-[Rr]eleasePS/
-dlldata.c
-
-# Benchmark Results
-BenchmarkDotNet.Artifacts/
-
-# .NET Core
-project.lock.json
-project.fragment.lock.json
-artifacts/
-
-# StyleCop
-StyleCopReport.xml
-
-# Files built by Visual Studio
-*_i.c
-*_p.c
-*_h.h
-*.ilk
-*.meta
-*.obj
-*.iobj
-*.pch
-*.pdb
-*.ipdb
-*.pgc
-*.pgd
-*.rsp
-*.sbr
-*.tlb
-*.tli
-*.tlh
-*.tmp
-*.tmp_proj
-*_wpftmp.csproj
-*.log
-*.vspscc
-*.vssscc
-.builds
-*.pidb
-*.svclog
-*.scc
-
-# Chutzpah Test files
-_Chutzpah*
-
-# Visual C++ cache files
-ipch/
-*.aps
-*.ncb
-*.opendb
-*.opensdf
-*.sdf
-*.cachefile
-*.VC.db
-*.VC.VC.opendb
-
-# Visual Studio profiler
-*.psess
-*.vsp
-*.vspx
-*.sap
-
-# Visual Studio Trace Files
-*.e2e
-
-# TFS 2012 Local Workspace
-$tf/
-
-# Guidance Automation Toolkit
-*.gpState
-
-# ReSharper is a .NET coding add-in
-_ReSharper*/
-*.[Rr]e[Ss]harper
-*.DotSettings.user
-
-# JustCode is a .NET coding add-in
-.JustCode
-
-# TeamCity is a build add-in
-_TeamCity*
-
-# DotCover is a Code Coverage Tool
-*.dotCover
-
-# AxoCover is a Code Coverage Tool
-.axoCover/*
-!.axoCover/settings.json
-
-# Visual Studio code coverage results
-*.coverage
-*.coveragexml
-
-# NCrunch
-_NCrunch_*
-.*crunch*.local.xml
-nCrunchTemp_*
-
-# MightyMoose
-*.mm.*
-AutoTest.Net/
-
-# Web workbench (sass)
-.sass-cache/
-
-# Installshield output folder
-[Ee]xpress/
-
-# DocProject is a documentation generator add-in
-DocProject/buildhelp/
-DocProject/Help/*.HxT
-DocProject/Help/*.HxC
-DocProject/Help/*.hhc
-DocProject/Help/*.hhk
-DocProject/Help/*.hhp
-DocProject/Help/Html2
-DocProject/Help/html
-
-# Click-Once directory
-publish/
-
-# Publish Web Output
-*.[Pp]ublish.xml
-*.azurePubxml
-# Note: Comment the next line if you want to checkin your web deploy settings,
-# but database connection strings (with potential passwords) will be unencrypted
-*.pubxml
-*.publishproj
-
-# Microsoft Azure Web App publish settings. Comment the next line if you want to
-# checkin your Azure Web App publish settings, but sensitive information contained
-# in these scripts will be unencrypted
-PublishScripts/
-
-# NuGet Packages
-*.nupkg
-# The packages folder can be ignored because of Package Restore
-**/[Pp]ackages/*
-# except build/, which is used as an MSBuild target.
-!**/[Pp]ackages/build/
-# Uncomment if necessary however generally it will be regenerated when needed
-#!**/[Pp]ackages/repositories.config
-# NuGet v3's project.json files produces more ignorable files
-*.nuget.props
-*.nuget.targets
-
-# Microsoft Azure Build Output
-csx/
-*.build.csdef
-
-# Microsoft Azure Emulator
-ecf/
-rcf/
-
-# Windows Store app package directories and files
-AppPackages/
-BundleArtifacts/
-Package.StoreAssociation.xml
-_pkginfo.txt
-*.appx
-
-# Visual Studio cache files
-# files ending in .cache can be ignored
-*.[Cc]ache
-# but keep track of directories ending in .cache
-!?*.[Cc]ache/
-
-# Others
-ClientBin/
-~$*
-*~
-*.dbmdl
-*.dbproj.schemaview
-*.jfm
-*.pfx
-*.publishsettings
-orleans.codegen.cs
-
-# Including strong name files can present a security risk
-# (https://github.com/github/gitignore/pull/2483#issue-259490424)
-#*.snk
-
-# Since there are multiple workflows, uncomment next line to ignore bower_components
-# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
-#bower_components/
-# ASP.NET Core default setup: bower directory is configured as wwwroot/lib/ and bower restore is true
-**/wwwroot/lib/
-
-# RIA/Silverlight projects
-Generated_Code/
-
-# Backup & report files from converting an old project file
-# to a newer Visual Studio version. Backup files are not needed,
-# because we have git ;-)
-_UpgradeReport_Files/
-Backup*/
-UpgradeLog*.XML
-UpgradeLog*.htm
-ServiceFabricBackup/
-*.rptproj.bak
-
-# SQL Server files
-*.mdf
-*.ldf
-*.ndf
-
-# Business Intelligence projects
-*.rdl.data
-*.bim.layout
-*.bim_*.settings
-*.rptproj.rsuser
-
-# Microsoft Fakes
-FakesAssemblies/
-
-# GhostDoc plugin setting file
-*.GhostDoc.xml
-
-# Node.js Tools for Visual Studio
-.ntvs_analysis.dat
-node_modules/
-
-# Visual Studio 6 build log
-*.plg
-
-# Visual Studio 6 workspace options file
-*.opt
-
-# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
-*.vbw
-
-# Visual Studio LightSwitch build output
-**/*.HTMLClient/GeneratedArtifacts
-**/*.DesktopClient/GeneratedArtifacts
-**/*.DesktopClient/ModelManifest.xml
-**/*.Server/GeneratedArtifacts
-**/*.Server/ModelManifest.xml
-_Pvt_Extensions
-
-# Paket dependency manager
-.paket/paket.exe
-paket-files/
-
-# FAKE - F# Make
-.fake/
-
-# JetBrains Rider
-.idea/
-*.sln.iml
-
-# CodeRush personal settings
-.cr/personal
-
-# Python Tools for Visual Studio (PTVS)
-__pycache__/
-*.pyc
-
-# Cake - Uncomment if you are using it
-# tools/**
-# !tools/packages.config
-
-# Tabs Studio
-*.tss
-
-# Telerik's JustMock configuration file
-*.jmconfig
-
-# BizTalk build output
-*.btp.cs
-*.btm.cs
-*.odx.cs
-*.xsd.cs
-
-# OpenCover UI analysis results
-OpenCover/
-
-# Azure Stream Analytics local run output
-ASALocalRun/
-
-# MSBuild Binary and Structured Log
-*.binlog
-
-# NVidia Nsight GPU debugger configuration file
-*.nvuser
-
-# MFractors (Xamarin productivity tool) working folder
-.mfractor/
-
-# Local History for Visual Studio
-.localhistory/
-
-# BeatPulse healthcheck temp database
-healthchecksdb
\ No newline at end of file
diff --git a/Magazyn_Client/Magazyn.sln b/Magazyn_Client/Magazyn.sln
deleted file mode 100644
index 741d861..0000000
--- a/Magazyn_Client/Magazyn.sln
+++ /dev/null
@@ -1,25 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 15
-VisualStudioVersion = 15.0.26730.15
-MinimumVisualStudioVersion = 10.0.40219.1
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Magazyn", "Magazyn\Magazyn.csproj", "{C50EC6F3-86E6-405C-991F-1B4157C04B34}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Any CPU = Debug|Any CPU
- Release|Any CPU = Release|Any CPU
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {C50EC6F3-86E6-405C-991F-1B4157C04B34}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {C50EC6F3-86E6-405C-991F-1B4157C04B34}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {C50EC6F3-86E6-405C-991F-1B4157C04B34}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {C50EC6F3-86E6-405C-991F-1B4157C04B34}.Release|Any CPU.Build.0 = Release|Any CPU
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
- GlobalSection(ExtensibilityGlobals) = postSolution
- SolutionGuid = {BD938214-689F-4C4B-846E-9D7E3A4CD156}
- EndGlobalSection
-EndGlobal
diff --git a/Magazyn_Client/Magazyn/App.config b/Magazyn_Client/Magazyn/App.config
deleted file mode 100644
index 00bfd11..0000000
--- a/Magazyn_Client/Magazyn/App.config
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/Magazyn_Client/Magazyn/App.xaml b/Magazyn_Client/Magazyn/App.xaml
deleted file mode 100644
index 4ce9918..0000000
--- a/Magazyn_Client/Magazyn/App.xaml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
-
-
diff --git a/Magazyn_Client/Magazyn/App.xaml.cs b/Magazyn_Client/Magazyn/App.xaml.cs
deleted file mode 100644
index 4461381..0000000
--- a/Magazyn_Client/Magazyn/App.xaml.cs
+++ /dev/null
@@ -1,17 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Configuration;
-using System.Data;
-using System.Linq;
-using System.Threading.Tasks;
-using System.Windows;
-
-namespace Magazyn
-{
- ///
- /// Interaction logic for App.xaml
- ///
- public partial class App : Application
- {
- }
-}
diff --git a/Magazyn_Client/Magazyn/DataModels/Fruit.cs b/Magazyn_Client/Magazyn/DataModels/Fruit.cs
deleted file mode 100644
index 6c97d6a..0000000
--- a/Magazyn_Client/Magazyn/DataModels/Fruit.cs
+++ /dev/null
@@ -1,66 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace Magazyn.DataModels
-{
- public class Fruit
- {
- int id;
- string name;
- int quantity;
- float price;
- string imageLink;
-
- public int Id
- {
- get
- {
- return id;
- }
- }
-
- public string Name
- {
- get
- {
- return name;
- }
- }
-
- public int Quantity
- {
- get
- {
- return quantity;
- }
- }
-
- public float Price
- {
- get
- {
- return price;
- }
- }
-
- public string ImageLink
- {
- get
- {
- return imageLink;
- }
- }
-
- public Fruit(int id, string name, int quantity, float price, string imageLink)
- {
- this.id = id;
- this.name = name;
- this.quantity = quantity;
- this.price = price;
- this.imageLink = imageLink;
- }
- }
-}
diff --git a/Magazyn_Client/Magazyn/DataModels/WarehousePrice.cs b/Magazyn_Client/Magazyn/DataModels/WarehousePrice.cs
deleted file mode 100644
index 93c6173..0000000
--- a/Magazyn_Client/Magazyn/DataModels/WarehousePrice.cs
+++ /dev/null
@@ -1,27 +0,0 @@
-using Newtonsoft.Json;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace Magazyn.DataModels
-{
- class WarehousePrice
- {
- float price;
-
- public float Price
- {
- get
- {
- return price;
- }
- }
-
- public WarehousePrice( [JsonProperty("price-of-all")] float price)
- {
- this.price = price;
- }
- }
-}
diff --git a/Magazyn_Client/Magazyn/Images/add.png b/Magazyn_Client/Magazyn/Images/add.png
deleted file mode 100644
index eb457bc..0000000
Binary files a/Magazyn_Client/Magazyn/Images/add.png and /dev/null differ
diff --git a/Magazyn_Client/Magazyn/Images/sub.png b/Magazyn_Client/Magazyn/Images/sub.png
deleted file mode 100644
index aab09d5..0000000
Binary files a/Magazyn_Client/Magazyn/Images/sub.png and /dev/null differ
diff --git a/Magazyn_Client/Magazyn/Magazyn.csproj b/Magazyn_Client/Magazyn/Magazyn.csproj
deleted file mode 100644
index 14f524c..0000000
--- a/Magazyn_Client/Magazyn/Magazyn.csproj
+++ /dev/null
@@ -1,121 +0,0 @@
-
-
-
-
- Debug
- AnyCPU
- {C50EC6F3-86E6-405C-991F-1B4157C04B34}
- WinExe
- Magazyn
- Magazyn
- v4.6.1
- 512
- {60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
- 4
- true
-
-
- AnyCPU
- true
- full
- false
- bin\Debug\
- DEBUG;TRACE
- prompt
- 4
-
-
- AnyCPU
- pdbonly
- true
- bin\Release\
- TRACE
- prompt
- 4
-
-
-
- ..\packages\Newtonsoft.Json.12.0.1\lib\net45\Newtonsoft.Json.dll
-
-
-
-
-
-
-
-
-
-
- 4.0
-
-
-
-
-
-
-
- MSBuild:Compile
- Designer
-
-
-
-
- FruitView.xaml
-
-
- AmountWindow.xaml
-
-
- MSBuild:Compile
- Designer
-
-
- App.xaml
- Code
-
-
- MainWindow.xaml
- Code
-
-
- Designer
- MSBuild:Compile
-
-
- Designer
- MSBuild:Compile
-
-
-
-
- Code
-
-
- True
- True
- Resources.resx
-
-
- True
- Settings.settings
- True
-
-
- ResXFileCodeGenerator
- Resources.Designer.cs
-
-
-
- SettingsSingleFileGenerator
- Settings.Designer.cs
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/Magazyn_Client/Magazyn/MainWindow.xaml b/Magazyn_Client/Magazyn/MainWindow.xaml
deleted file mode 100644
index b9f660d..0000000
--- a/Magazyn_Client/Magazyn/MainWindow.xaml
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/Magazyn_Client/Magazyn/MainWindow.xaml.cs b/Magazyn_Client/Magazyn/MainWindow.xaml.cs
deleted file mode 100644
index 899217a..0000000
--- a/Magazyn_Client/Magazyn/MainWindow.xaml.cs
+++ /dev/null
@@ -1,88 +0,0 @@
-using Magazyn.DataModels;
-using Magazyn.Views;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Net.Http;
-using System.Text;
-using System.Threading.Tasks;
-using System.Windows;
-using System.Windows.Controls;
-using System.Windows.Data;
-using System.Windows.Documents;
-using System.Windows.Input;
-using System.Windows.Media;
-using System.Windows.Media.Imaging;
-using System.Windows.Navigation;
-using System.Windows.Shapes;
-using Newtonsoft.Json;
-
-namespace Magazyn
-{
-
- public partial class MainWindow : Window
- {
-
- HttpClient client;
-
- public MainWindow()
- {
- InitializeComponent();
- client = new HttpClient();
- }
-
- private void Button_Click(object sender, RoutedEventArgs e)
- {
- RefreshListOfFruits();
- }
-
- private void FruitViewSaveChangingAmountOfFruits(int amountChanged, Fruit fruit)
- {
- string json = "{\"id\": " + fruit.Id.ToString() + ", \"change\": " + amountChanged.ToString() + " }";
-
- Task response = client.PostAsync("https://sysmag.herokuapp.com/api/product/change-quantity", new StringContent(json, Encoding.UTF8, "application/json"));
- while (response.IsCompleted != true) ;
-
- RefreshListOfFruits();
-
- }
-
- private void RefreshListOfFruits()
- {
- Task response = client.GetAsync("https://sysmag.herokuapp.com/api/get-all");
- while (response.IsCompleted != true) ;
-
- Fruit[] fruits = JsonConvert.DeserializeObject(response.Result.Content.ReadAsStringAsync().Result.ToString());
-
- UpdateListOfFruits(fruits);
- }
-
- private void UpdateListOfFruits(Fruit[] list)
- {
- fruitList.Items.Clear();
-
- foreach (Fruit item in list)
- {
- FruitView fruitView = new FruitView(item);
- fruitView.SaveChangingAmountOfFruits += FruitViewSaveChangingAmountOfFruits;
- fruitList.Items.Add(fruitView);
- }
- }
-
- private WarehousePrice GetWarehousePrice()
- {
- Task response = client.GetAsync("https://sysmag.herokuapp.com/api/get-price-of-all");
- while (response.IsCompleted != true) ;
-
- WarehousePrice price = JsonConvert.DeserializeObject(response.Result.Content.ReadAsStringAsync().Result.ToString());
-
- return price;
- }
-
- private void Button_Click_1(object sender, RoutedEventArgs e)
- {
- MessageBox.Show("Value of warehouse: " + GetWarehousePrice().Price.ToString() );
- }
- }
-}
-
diff --git a/Magazyn_Client/Magazyn/Properties/AssemblyInfo.cs b/Magazyn_Client/Magazyn/Properties/AssemblyInfo.cs
deleted file mode 100644
index 08a4e79..0000000
--- a/Magazyn_Client/Magazyn/Properties/AssemblyInfo.cs
+++ /dev/null
@@ -1,55 +0,0 @@
-using System.Reflection;
-using System.Resources;
-using System.Runtime.CompilerServices;
-using System.Runtime.InteropServices;
-using System.Windows;
-
-// General Information about an assembly is controlled through the following
-// set of attributes. Change these attribute values to modify the information
-// associated with an assembly.
-[assembly: AssemblyTitle("Magazyn")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("")]
-[assembly: AssemblyProduct("Magazyn")]
-[assembly: AssemblyCopyright("Copyright © 2019")]
-[assembly: AssemblyTrademark("")]
-[assembly: AssemblyCulture("")]
-
-// Setting ComVisible to false makes the types in this assembly not visible
-// to COM components. If you need to access a type in this assembly from
-// COM, set the ComVisible attribute to true on that type.
-[assembly: ComVisible(false)]
-
-//In order to begin building localizable applications, set
-//CultureYouAreCodingWith in your .csproj file
-//inside a . For example, if you are using US english
-//in your source files, set the to en-US. Then uncomment
-//the NeutralResourceLanguage attribute below. Update the "en-US" in
-//the line below to match the UICulture setting in the project file.
-
-//[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)]
-
-
-[assembly: ThemeInfo(
- ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located
- //(used if a resource is not found in the page,
- // or application resource dictionaries)
- ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located
- //(used if a resource is not found in the page,
- // app, or any theme specific resource dictionaries)
-)]
-
-
-// Version information for an assembly consists of the following four values:
-//
-// Major Version
-// Minor Version
-// Build Number
-// Revision
-//
-// You can specify all the values or you can default the Build and Revision Numbers
-// by using the '*' as shown below:
-// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("1.0.0.0")]
-[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/Magazyn_Client/Magazyn/Properties/Resources.Designer.cs b/Magazyn_Client/Magazyn/Properties/Resources.Designer.cs
deleted file mode 100644
index 97d553e..0000000
--- a/Magazyn_Client/Magazyn/Properties/Resources.Designer.cs
+++ /dev/null
@@ -1,71 +0,0 @@
-//------------------------------------------------------------------------------
-//
-// This code was generated by a tool.
-// Runtime Version:4.0.30319.42000
-//
-// Changes to this file may cause incorrect behavior and will be lost if
-// the code is regenerated.
-//
-//------------------------------------------------------------------------------
-
-namespace Magazyn.Properties
-{
-
-
- ///
- /// A strongly-typed resource class, for looking up localized strings, etc.
- ///
- // This class was auto-generated by the StronglyTypedResourceBuilder
- // class via a tool like ResGen or Visual Studio.
- // To add or remove a member, edit your .ResX file then rerun ResGen
- // with the /str option, or rebuild your VS project.
- [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
- [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
- [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
- internal class Resources
- {
-
- private static global::System.Resources.ResourceManager resourceMan;
-
- private static global::System.Globalization.CultureInfo resourceCulture;
-
- [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- internal Resources()
- {
- }
-
- ///
- /// Returns the cached ResourceManager instance used by this class.
- ///
- [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
- internal static global::System.Resources.ResourceManager ResourceManager
- {
- get
- {
- if ((resourceMan == null))
- {
- global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Magazyn.Properties.Resources", typeof(Resources).Assembly);
- resourceMan = temp;
- }
- return resourceMan;
- }
- }
-
- ///
- /// Overrides the current thread's CurrentUICulture property for all
- /// resource lookups using this strongly typed resource class.
- ///
- [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
- internal static global::System.Globalization.CultureInfo Culture
- {
- get
- {
- return resourceCulture;
- }
- set
- {
- resourceCulture = value;
- }
- }
- }
-}
diff --git a/Magazyn_Client/Magazyn/Properties/Resources.resx b/Magazyn_Client/Magazyn/Properties/Resources.resx
deleted file mode 100644
index ffecec8..0000000
--- a/Magazyn_Client/Magazyn/Properties/Resources.resx
+++ /dev/null
@@ -1,117 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- text/microsoft-resx
-
-
- 2.0
-
-
- System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
\ No newline at end of file
diff --git a/Magazyn_Client/Magazyn/Properties/Settings.Designer.cs b/Magazyn_Client/Magazyn/Properties/Settings.Designer.cs
deleted file mode 100644
index 1721c7b..0000000
--- a/Magazyn_Client/Magazyn/Properties/Settings.Designer.cs
+++ /dev/null
@@ -1,30 +0,0 @@
-//------------------------------------------------------------------------------
-//
-// This code was generated by a tool.
-// Runtime Version:4.0.30319.42000
-//
-// Changes to this file may cause incorrect behavior and will be lost if
-// the code is regenerated.
-//
-//------------------------------------------------------------------------------
-
-namespace Magazyn.Properties
-{
-
-
- [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
- [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
- internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
- {
-
- private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
-
- public static Settings Default
- {
- get
- {
- return defaultInstance;
- }
- }
- }
-}
diff --git a/Magazyn_Client/Magazyn/Properties/Settings.settings b/Magazyn_Client/Magazyn/Properties/Settings.settings
deleted file mode 100644
index 8f2fd95..0000000
--- a/Magazyn_Client/Magazyn/Properties/Settings.settings
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/Magazyn_Client/Magazyn/Views/FruitView.xaml b/Magazyn_Client/Magazyn/Views/FruitView.xaml
deleted file mode 100644
index d21995a..0000000
--- a/Magazyn_Client/Magazyn/Views/FruitView.xaml
+++ /dev/null
@@ -1,23 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/Magazyn_Client/Magazyn/Views/FruitView.xaml.cs b/Magazyn_Client/Magazyn/Views/FruitView.xaml.cs
deleted file mode 100644
index 2c25e01..0000000
--- a/Magazyn_Client/Magazyn/Views/FruitView.xaml.cs
+++ /dev/null
@@ -1,72 +0,0 @@
-using Magazyn.DataModels;
-using Magazyn.Windows;
-using System;
-using System.Collections.Generic;
-using System.IO;
-using System.Linq;
-using System.Net;
-using System.Text;
-using System.Threading.Tasks;
-using System.Windows;
-using System.Windows.Controls;
-using System.Windows.Data;
-using System.Windows.Documents;
-using System.Windows.Input;
-using System.Windows.Media;
-using System.Windows.Media.Imaging;
-using System.Windows.Navigation;
-using System.Windows.Shapes;
-
-namespace Magazyn.Views
-{
- ///
- /// Interaction logic for FruitView.xaml
- ///
- public partial class FruitView : UserControl
- {
- Fruit fruit;
-
- public delegate void ChangingAmountOfFruits(int amountChanged, Fruit fruit);
- public event ChangingAmountOfFruits SaveChangingAmountOfFruits;
-
- public FruitView(Fruit fruit)
- {
- InitializeComponent();
-
- this.fruit = fruit;
-
- fruitName.Text = fruit.Name;
- fruitAmount.Text = fruit.Quantity.ToString();
- fruitPrice.Text = fruit.Price.ToString();
- allPrice.Text = (fruit.Quantity * fruit.Price).ToString();
-
- try
- {
- imges.Source = new BitmapImage(new Uri(fruit.ImageLink));
- }
- catch (Exception ex)
- {
- }
-
- }
-
- private void subButton_Click(object sender, RoutedEventArgs e)
- {
- AmountWindow window = new AmountWindow(fruit, -1);
- window.SaveChangingAmountOfFruits += WindowSaveChangingAmountOfFruits;
- window.Show();
- }
-
- private void addButton_Click(object sender, RoutedEventArgs e)
- {
- AmountWindow window = new AmountWindow(fruit, 1);
- window.SaveChangingAmountOfFruits += WindowSaveChangingAmountOfFruits;
- window.Show();
- }
-
- private void WindowSaveChangingAmountOfFruits(int amountChanged)
- {
- SaveChangingAmountOfFruits.Invoke(amountChanged, fruit);
- }
- }
-}
diff --git a/Magazyn_Client/Magazyn/Windows/AmountWindow.xaml b/Magazyn_Client/Magazyn/Windows/AmountWindow.xaml
deleted file mode 100644
index ea7b7ef..0000000
--- a/Magazyn_Client/Magazyn/Windows/AmountWindow.xaml
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/Magazyn_Client/Magazyn/Windows/AmountWindow.xaml.cs b/Magazyn_Client/Magazyn/Windows/AmountWindow.xaml.cs
deleted file mode 100644
index b0e68e1..0000000
--- a/Magazyn_Client/Magazyn/Windows/AmountWindow.xaml.cs
+++ /dev/null
@@ -1,53 +0,0 @@
-using Magazyn.DataModels;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using System.Windows;
-using System.Windows.Controls;
-using System.Windows.Data;
-using System.Windows.Documents;
-using System.Windows.Input;
-using System.Windows.Media;
-using System.Windows.Media.Imaging;
-using System.Windows.Shapes;
-
-namespace Magazyn.Windows
-{
- ///
- /// Interaction logic for AmountWindow.xaml
- ///
- public partial class AmountWindow : Window
- {
- Fruit fruit;
- int type;
-
- public delegate void ChangingAmountOfFruits(int amountChanged);
- public event ChangingAmountOfFruits SaveChangingAmountOfFruits;
-
- public AmountWindow(Fruit fruit, int type)
- {
- InitializeComponent();
- this.fruit = fruit;
- this.type = type;
-
- fruitName.Text = fruit.Name;
- }
-
- private void saveButton_Click(object sender, RoutedEventArgs e)
- {
- int amount = 0;
-
- try
- {
- amount = int.Parse(amountToChange.Text);
- } catch (Exception ex) {
- throw new NotImplementedException(ex.Message);
- }
-
- SaveChangingAmountOfFruits.Invoke((type>0)?amount:-amount);
- this.Close();
- }
- }
-}
diff --git a/Magazyn_Client/Magazyn/packages.config b/Magazyn_Client/Magazyn/packages.config
deleted file mode 100644
index 1cafd81..0000000
--- a/Magazyn_Client/Magazyn/packages.config
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
\ No newline at end of file
diff --git a/README.md b/README.md
index f57f83d..2f79a0b 100644
--- a/README.md
+++ b/README.md
@@ -1,118 +1,247 @@
-# DINO_SCRUM
+# DINO\_SCRUM
-DINO_SCRUM
+## MODEL
-## API Endpoints
+###Product
+```json5
+{
+ "id": Int,
+ "name": String,
+ "price": Float,
+ "quantity": Int,
+ "quantityMax": Int,
+ "imageLink": String
+}
+```
+``id`` - id of product,
-*POST* **/api/product/change-quantity**
+``name`` - name of product with minimal length 2;
+
+``price`` price of product, cannot be under 0.00;
+
+``quantity``: quantity of product in database, cannot be under 0;
+
+``quantityMax``: maximum quantity of product in database, cannot be under 0;
+
+``imageLink``: link to image of product
+
+Any of these couldn't be ``null``
+
+## API
+
+###Edit quantity of the product.
+
+The service will handle `POST` requests for `/api/product/change-quantity`, by changing quantity of product in database.
+
+``id`` - product's to change `id`
+
+``change`` - value of change (positive value for increase quantity, negative valude for decrease).
+
```json
+POST /api/product/change-quantity
+Content-Type: application/json
+
{
- "id": Int,
- "change": Int
+ "id": Int,
+ "change": Int
}
```
-Return:
+Response `HttpStatus.OK` with ``JSON``:
```json
{
- "id": Int,
- "name": String,
- "price": Float,
- "quantity": Int,
- "imageLink": String
+ "id": Int,
+ "name": String,
+ "price": Float,
+ "quantity": Int,
+ "quantityMax": Int,
+ "imageLink": String
}
```
-This endpoint return editet product.
----
+* * *
-*GET* **/api/get-all**
+###Retrieve a paginated list of products
+
+The service will handle `GET` requests for `/api/get-all`, by retreving a paginated list of products. Optionally with a `page`, `size` **or** `page`, `size` and`sort` parameters in the query string.
+Page start numbering on `page=0`. Default list is sorted by `id`.
-Return:
+```json
+GET /api/get-all?page=0&size=1&sort=id
+Content-Type: application/json
```
+Response with ``HttpStatus.OK`` with ``JSON`` :
+
+```json
{
- [
+ "content": [
{
"id": Int,
- "name": String,
- "price": Float,
- "quantity": Int,
- "imageLink": String
+ "name": String,
+ "price": Float,
+ "quantity": Int,
+ "quantityMax": Int,
+ "imageLink": string
},
- {...}
- ]
+ {
+ (...)
+ }
+ ],
+ "pageable": {
+ "sort": {
+ "sorted": Boolean,
+ "unsorted": Boolean,
+ "empty": Boolean
+ },
+ "offset": Int,
+ "pageSize": Int,
+ "pageNumber": Int,
+ "unpaged": Boolean,
+ "paged": Boolean
+ },
+ "totalPages": Int,
+ "totalElements": Int,
+ "last": Boolean,
+ "size": Int,
+ "number": Int,
+ "numberOfElements": Int,
+ "first": Boolean,
+ "sort": {
+ "sorted": Boolean,
+ "unsorted": Boolean,
+ "empty": Boolean
+ },
+ "empty": Boolean
}
```
----
+* * *
+###Get price of all products.
+The service will handle `GET` request on `/api/get-price-of-all` returing `Float` price of all products in the database.
-*GET* **/api/get-price-of-all**
-
-Return:
+```json
+GET /api/get-price-of-all
+Content-Type: application/json
+```
+Response ``Http.Status.OK`` with ``JSON``:
```json
{
- "price-of-all": Float
+ "price-of-all": Float
}
```
----
-*POST* **/api/product/add**
+* * *
+###Create a new product.
+The service will handle `POST` request `/api/product/add`, by adding `Product` to database.
+
+```json
+POST /api/product/add
+Content-Type: application/json
+
+{
+ "id": Int,
+ "name": String,
+ "price": Float,
+ "quantity": Int,
+ "quantityMax": Int,
+ "imageLink": String
+}
+```
+Response `HttpStatus.CREATED` with `JSON`
+
+```json
+
+{
+ "id": Int,
+ "name": String,
+ "price": Float,
+ "quantity": Int,
+ "quantityMax": Int,
+ "imageLink": String
+}
+```
+
+* * *
+###Delete product with `id`.
+The service will handle `DELETE` request `/api/delete-product`, by
+
+```json
+DELETE /api/delete-product
+Content-Type: application/json
+
+{
+ "id": Int
+}
+
+```
+```json
+
+Response: HttpStatus.OK
+
+```
+* * *
+
+###Get product with `id`
+The service wil handle `GET` request `/api/product/get-by-id`, by returning product with `id`.
+
+```json
+GET /api/product/get-by-id
+Content-Type: application/json
+
+{
+ "id": Int
+}
+```
+
+Response ``Http.Status.OK`` with `JSON`:
```json
{
- "name": String,
- "price": Float,
- "quantity": Int,
- "imageLing": String
+ "id": Int,
+ "name": String,
+ "price": Float,
+ "quantity": Int,
+ "quantityMax": Int,
+ "imageLink": String
}
```
-Return:
+* * *
+
+###Update product
+The service will handle ``POST`` request `/api/product/update/{id}` with path variable `id`, by updating existing product. In request
+`id` is required, fields which won't be modified should be `null`.
+
+
+```json
+POST /api/product/update/{id}
+Content-Type: application/json
+
+{
+ "id": Int,
+ "name": String,
+ "price": Float,
+ "quantity": Int,
+ "quantityMax": Int,
+ "imageLink": String
+}
+```
+
+Response ``Http.Status.OK`` with `JSON`:
```json
{
- "id": Int,
- "name": String,
- "price": Float,
- "quantity": Int,
- "imageLink": String
+ "id": Int,
+ "name": String,
+ "price": Float,
+ "quantity": Int,
+ "quantityMax": Int,
+ "imageLink": String
}
-```
-
-This endpoint return a newly created product.
-
----
-
-*DELETE* **/api/delete-product**
-
-```json
-{
- "id": Int
-}
-```
-
-This endpoint doesn't return any data.
-
----
-
-*GET* **/api/product/get-by-id**
-
-Return:
-
-```json
-{
- "id": Int,
- "name": String,
- "price": Float,
- "quantity": Int,
- "imageLink": String
-}
-```
-
-----
+```
\ No newline at end of file
diff --git a/init b/init
new file mode 100644
index 0000000..e69de29
diff --git a/mvnw b/mvnw
new file mode 100755
index 0000000..5551fde
--- /dev/null
+++ b/mvnw
@@ -0,0 +1,286 @@
+#!/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
+#
+# http://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.
+# ----------------------------------------------------------------------------
+
+# ----------------------------------------------------------------------------
+# Maven2 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 /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)`"
+ # TODO classpath?
+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="`which 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
+ jarUrl="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.4.2/maven-wrapper-0.4.2.jar"
+ 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 command -v wget > /dev/null; then
+ if [ "$MVNW_VERBOSE" = true ]; then
+ echo "Found wget ... using wget"
+ fi
+ wget "$jarUrl" -O "$wrapperJarPath"
+ elif command -v curl > /dev/null; then
+ if [ "$MVNW_VERBOSE" = true ]; then
+ echo "Found curl ... using curl"
+ fi
+ curl -o "$wrapperJarPath" "$jarUrl"
+ else
+ if [ "$MVNW_VERBOSE" = true ]; then
+ echo "Falling back to using Java to download"
+ fi
+ javaClass="$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.java"
+ 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
+
+WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
+
+exec "$JAVACMD" \
+ $MAVEN_OPTS \
+ -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \
+ "-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \
+ ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@"
diff --git a/mvnw.cmd b/mvnw.cmd
new file mode 100644
index 0000000..e5cfb0a
--- /dev/null
+++ b/mvnw.cmd
@@ -0,0 +1,161 @@
+@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 http://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 Maven2 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 key stroke 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 my 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 "%HOME%\mavenrc_pre.bat" call "%HOME%\mavenrc_pre.bat"
+if exist "%HOME%\mavenrc_pre.cmd" call "%HOME%\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/io/takari/maven-wrapper/0.4.2/maven-wrapper-0.4.2.jar"
+FOR /F "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% (
+ echo Found %WRAPPER_JAR%
+) else (
+ echo Couldn't find %WRAPPER_JAR%, downloading it ...
+ echo Downloading from: %DOWNLOAD_URL%
+ powershell -Command "(New-Object Net.WebClient).DownloadFile('%DOWNLOAD_URL%', '%WRAPPER_JAR%')"
+ echo Finished downloading %WRAPPER_JAR%
+)
+@REM End of extension
+
+%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 "%HOME%\mavenrc_post.bat" call "%HOME%\mavenrc_post.bat"
+if exist "%HOME%\mavenrc_post.cmd" call "%HOME%\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%
+
+exit /B %ERROR_CODE%
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..83ac68a
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,55 @@
+
+
+ 4.0.0
+
+ org.springframework.boot
+ spring-boot-starter-parent
+ 2.1.2.RELEASE
+
+
+ com.dino.scrum
+ sysmag
+ 0.0.1-SNAPSHOT
+ sysmag
+ Demo project for Spring Boot
+
+
+ 1.8
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-data-jpa
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+ org.postgresql
+ postgresql
+
+
+ org.projectlombok
+ lombok
+ true
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+
+
+
+
diff --git a/src/main/java/com/dino/scrum/sysmag/SysmagApplication.java b/src/main/java/com/dino/scrum/sysmag/SysmagApplication.java
new file mode 100644
index 0000000..20ce59f
--- /dev/null
+++ b/src/main/java/com/dino/scrum/sysmag/SysmagApplication.java
@@ -0,0 +1,14 @@
+package com.dino.scrum.sysmag;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@SpringBootApplication
+public class SysmagApplication {
+
+ public static void main(String[] args) {
+ SpringApplication.run(SysmagApplication.class, args);
+ }
+
+}
+
diff --git a/src/main/java/com/dino/scrum/sysmag/controller/HomeController.java b/src/main/java/com/dino/scrum/sysmag/controller/HomeController.java
new file mode 100644
index 0000000..2f5244b
--- /dev/null
+++ b/src/main/java/com/dino/scrum/sysmag/controller/HomeController.java
@@ -0,0 +1,17 @@
+package com.dino.scrum.sysmag.controller;
+
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * Created by prgres on 2019-01-13.
+ */
+
+@RestController
+public class HomeController {
+
+ @GetMapping("/")
+ public String home() {
+ return "System magazynowy";
+ }
+}
diff --git a/src/main/java/com/dino/scrum/sysmag/controller/ProductController.java b/src/main/java/com/dino/scrum/sysmag/controller/ProductController.java
new file mode 100644
index 0000000..87572f2
--- /dev/null
+++ b/src/main/java/com/dino/scrum/sysmag/controller/ProductController.java
@@ -0,0 +1,104 @@
+package com.dino.scrum.sysmag.controller;
+
+import com.dino.scrum.sysmag.model.Product;
+import com.dino.scrum.sysmag.model.dto.IdDto;
+import com.dino.scrum.sysmag.model.dto.QuantityChange;
+import com.dino.scrum.sysmag.service.ProductServiceImpl;
+import com.dino.scrum.sysmag.validationGroup.UpdateGroup;
+import com.dino.scrum.sysmag.validator.QuantityChangeValidator;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Pageable;
+import org.springframework.data.web.PageableDefault;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.server.ResponseStatusException;
+
+import javax.validation.Valid;
+import java.util.Collections;
+import java.util.Map;
+
+/**
+ * Created by prgres on 2019-01-12.
+ */
+
+@RestController
+@RequestMapping(value = "/api")
+public class ProductController {
+
+ private final
+ ProductServiceImpl productService;
+ private final
+ QuantityChangeValidator quantityChangeValidator;
+
+ @Autowired
+ public ProductController(ProductServiceImpl productService, QuantityChangeValidator quantityChangeValidator) {
+ this.productService = productService;
+ this.quantityChangeValidator = quantityChangeValidator;
+ }
+
+ @GetMapping(value = "/get-all")
+ public Iterable getAll(@PageableDefault(size = Integer.MAX_VALUE) Pageable pageable) {
+ System.out.println(pageable.getPageSize());
+
+ try {
+ return productService.getAll(pageable);
+ } catch (Exception e) {
+ throw new ResponseStatusException(HttpStatus.BAD_REQUEST, e.toString());
+ }
+ }
+
+ @GetMapping(value = "/get-price-of-all")
+ public Map getPriceOfAllProducts() {
+ return Collections.singletonMap("price-of-all", productService.getPriceOfAll());
+ }
+
+ @PostMapping(value = "/product/add")
+ public ResponseEntity addProduct(@Valid @RequestBody Product product) {
+ try {
+ productService.add(product);
+ return new ResponseEntity(product, HttpStatus.CREATED);
+ } catch (Exception e) {
+ throw new ResponseStatusException(HttpStatus.BAD_REQUEST, e.toString());
+ }
+ }
+
+ @DeleteMapping(value = "/product/delete")
+ public ResponseEntity deleteProduct(@RequestBody IdDto id) {
+ try {
+ productService.delete(id.getId());
+ return new ResponseEntity("Deleted" + id, HttpStatus.OK);
+ } catch (Exception e) {
+ throw new ResponseStatusException(HttpStatus.BAD_REQUEST, e.toString());
+ }
+ }
+
+ @GetMapping(value = "/product/get-by-id")
+ public Product getById(@RequestBody IdDto id) {
+ try {
+ return productService.getById(id.getId());
+ } catch (Exception e) {
+ throw new ResponseStatusException(HttpStatus.BAD_REQUEST, e.toString());
+ }
+ }
+
+ @PostMapping(value = "/product/update/{id}")
+ public Product update(@Validated(UpdateGroup.class) @RequestBody Product product, @PathVariable("id") long id) {
+ try {
+ return productService.update(product, id);
+ } catch (Exception e) {
+ throw new ResponseStatusException(HttpStatus.BAD_REQUEST, e.toString());
+ }
+ }
+
+ @PostMapping(value = "/product/change-quantity")
+ public Product changeQuantity(@RequestBody QuantityChange quantityChange) {
+ try {
+ quantityChangeValidator.validate(quantityChange);
+ return productService.changeQuantity(quantityChange);
+ } catch (Exception e) {
+ throw new ResponseStatusException(HttpStatus.BAD_REQUEST, e.toString());
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/dino/scrum/sysmag/exception/ProductNotFoundException.java b/src/main/java/com/dino/scrum/sysmag/exception/ProductNotFoundException.java
new file mode 100644
index 0000000..bf339b6
--- /dev/null
+++ b/src/main/java/com/dino/scrum/sysmag/exception/ProductNotFoundException.java
@@ -0,0 +1,8 @@
+package com.dino.scrum.sysmag.exception;
+
+/**
+ * Created by prgres on 2019-01-21.
+ */
+
+public class ProductNotFoundException extends ClassNotFoundException {
+}
diff --git a/src/main/java/com/dino/scrum/sysmag/model/Product.java b/src/main/java/com/dino/scrum/sysmag/model/Product.java
new file mode 100644
index 0000000..ba9b301
--- /dev/null
+++ b/src/main/java/com/dino/scrum/sysmag/model/Product.java
@@ -0,0 +1,61 @@
+package com.dino.scrum.sysmag.model;
+
+import lombok.Getter;
+import lombok.Setter;
+import lombok.ToString;
+
+import javax.persistence.*;
+import javax.validation.constraints.DecimalMin;
+import javax.validation.constraints.Min;
+import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Size;
+import java.math.BigDecimal;
+
+/**
+ * Created by prgres on 2019-01-12.
+ */
+
+@Getter
+@Setter
+@ToString
+@Entity
+@Table(name = "Product")
+public class Product {
+
+ @Id
+ @GeneratedValue(strategy = GenerationType.AUTO)
+ @Column(name = "id")
+ private Long id;
+
+ @NotNull(message = "name cannot be null")
+ @Size(min = 2, message = "name cannot be shorter that 2")
+ @Column(name = "name")
+ private String name;
+
+ @NotNull(message = "price cannot be null")
+ @DecimalMin(value = "0.00", message = "price cannot be under 0.00")
+ @Column(name = "price")
+ private BigDecimal price;
+
+ @NotNull(message = "quantity cannot be null")
+ @Min(value = 0, message = "quantity cannot be under 0")
+ @Column(name = "quantity")
+ private long quantity;
+
+ @NotNull(message = "quantityMax cannot be null")
+ @Min(value = 1, message = "quantityMax cannot be under 1")
+ @Column(name = "quantityMax")
+ private long quantityMax;
+
+ @NotNull(message = "image_link cannot be null")
+ @Column(name = "image_link")
+ private String imageLink;
+
+ public Product setChangeQuantity(long change) {
+ System.out.println("IN MODEL quantity: " + this.getQuantity() + " change" + change);
+ this.quantity += change;
+ System.out.println("IN MODEL after change quantity: " + this.getQuantity());
+ return this;
+ }
+
+}
diff --git a/src/main/java/com/dino/scrum/sysmag/model/dto/IdDto.java b/src/main/java/com/dino/scrum/sysmag/model/dto/IdDto.java
new file mode 100644
index 0000000..f8e2f26
--- /dev/null
+++ b/src/main/java/com/dino/scrum/sysmag/model/dto/IdDto.java
@@ -0,0 +1,13 @@
+package com.dino.scrum.sysmag.model.dto;
+
+import lombok.Getter;
+
+/**
+ * Created by prgres on 2019-01-13.
+ */
+
+@Getter
+public class IdDto {
+
+ long id;
+}
diff --git a/src/main/java/com/dino/scrum/sysmag/model/dto/QuantityChange.java b/src/main/java/com/dino/scrum/sysmag/model/dto/QuantityChange.java
new file mode 100644
index 0000000..81d2881
--- /dev/null
+++ b/src/main/java/com/dino/scrum/sysmag/model/dto/QuantityChange.java
@@ -0,0 +1,15 @@
+package com.dino.scrum.sysmag.model.dto;
+
+import lombok.EqualsAndHashCode;
+import lombok.Getter;
+
+/**
+ * Created by prgres on 2019-01-12.
+ */
+
+@Getter
+@EqualsAndHashCode
+public class QuantityChange {
+ long id;
+ long change;
+}
diff --git a/src/main/java/com/dino/scrum/sysmag/repository/ProductRepository.java b/src/main/java/com/dino/scrum/sysmag/repository/ProductRepository.java
new file mode 100644
index 0000000..f9aebcb
--- /dev/null
+++ b/src/main/java/com/dino/scrum/sysmag/repository/ProductRepository.java
@@ -0,0 +1,19 @@
+package com.dino.scrum.sysmag.repository;
+
+import com.dino.scrum.sysmag.model.Product;
+import org.springframework.data.repository.PagingAndSortingRepository;
+import org.springframework.stereotype.Repository;
+
+import java.util.Optional;
+
+/**
+ * Created by prgres on 2019-01-12.
+ */
+@Repository
+public interface ProductRepository extends PagingAndSortingRepository {
+ boolean existsByName(String name);
+
+ Optional findByName(String name);
+
+ Product findById(long id);
+}
diff --git a/src/main/java/com/dino/scrum/sysmag/service/ProductService.java b/src/main/java/com/dino/scrum/sysmag/service/ProductService.java
new file mode 100644
index 0000000..2ffd3c5
--- /dev/null
+++ b/src/main/java/com/dino/scrum/sysmag/service/ProductService.java
@@ -0,0 +1,29 @@
+package com.dino.scrum.sysmag.service;
+
+import com.dino.scrum.sysmag.model.Product;
+import com.dino.scrum.sysmag.model.dto.QuantityChange;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
+
+/**
+ * Created by prgres on 2019-01-12.
+ */
+
+public interface ProductService {
+ Page getAll(Pageable pageable) throws Exception;
+
+ Product changeQuantity(QuantityChange quantityChange) throws Exception;
+
+ Product getById(Long id) throws Exception;
+
+ Product add(Product product) throws Exception;
+
+ Product update(Product product, long id) throws Exception;
+
+ long count();
+
+ float getPriceOfAll();
+
+ void delete(long id) throws Exception;
+}
+
diff --git a/src/main/java/com/dino/scrum/sysmag/service/ProductServiceImpl.java b/src/main/java/com/dino/scrum/sysmag/service/ProductServiceImpl.java
new file mode 100644
index 0000000..37fa85f
--- /dev/null
+++ b/src/main/java/com/dino/scrum/sysmag/service/ProductServiceImpl.java
@@ -0,0 +1,123 @@
+package com.dino.scrum.sysmag.service;
+
+import com.dino.scrum.sysmag.model.Product;
+import com.dino.scrum.sysmag.model.dto.QuantityChange;
+import com.dino.scrum.sysmag.repository.ProductRepository;
+import com.dino.scrum.sysmag.validator.ProductValidator;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.PageRequest;
+import org.springframework.data.domain.Pageable;
+import org.springframework.data.domain.Sort;
+import org.springframework.stereotype.Service;
+
+import java.math.BigDecimal;
+
+/**
+ * Created by prgres on 2019-01-12.
+ */
+
+@Service
+public class ProductServiceImpl implements ProductService {
+
+ private final
+ ProductRepository productRepository;
+
+ private final
+ ProductValidator productValidator;
+
+ @Autowired
+ public ProductServiceImpl(ProductRepository productRepository, ProductValidator productValidator) {
+ this.productRepository = productRepository;
+ this.productValidator = productValidator;
+ }
+
+ @Override
+ public Page getAll(Pageable pageable) throws Exception {
+ System.out.println("pagenumber: " + pageable.getPageNumber() + " pageSize: " + pageable.getPageSize() + " sort: " + pageable.getSort());
+
+ if (pageable.getSort().isUnsorted()) {
+ pageable = PageRequest.of(pageable.getPageNumber(), pageable.getPageSize(), new Sort(Sort.Direction.ASC, "id"));
+ }
+
+ Page productSlice = productRepository.findAll(pageable);
+
+ productValidator.checkIfPageIsOutOfBound(productSlice.getTotalPages(), pageable.getPageNumber());
+
+ return productSlice;
+ }
+
+ @Override
+ public Product changeQuantity(QuantityChange quantityChange) throws Exception {
+ productValidator.checkIfNotExists(quantityChange.getId());
+
+ productRepository.save(
+ productRepository.findById(quantityChange.getId())
+ .setChangeQuantity(quantityChange.getChange())
+ );
+
+ return productRepository.findById(quantityChange.getId());
+ }
+
+ @Override
+ public Product getById(Long id) throws Exception {
+ productValidator.checkIfNotExists(id);
+ return productRepository.findById(id.longValue());
+ }
+
+ @Override
+ public float getPriceOfAll() {
+ BigDecimal result = new BigDecimal(0);
+ Iterable tempProductList = productRepository.findAll();
+
+ for (Product product : tempProductList) {
+ result = result.add(
+ product.getPrice()
+ .multiply(new BigDecimal(product.getQuantity())));
+ }
+ return result.floatValue();
+ }
+
+ @Override
+ public Product add(Product product) throws Exception {
+ productValidator.checkIfNotExists(product.getName());
+ return productRepository.save(product);
+ }
+
+ @Override
+ public Product update(Product productReceived, long id) throws Exception {
+ productValidator.checkIfNotExists(productReceived.getId());
+
+ Product productToChange = productRepository.findById(id);
+
+ if (productReceived.getName() != null)
+ productToChange.setName(productReceived.getName());
+
+ if (productReceived.getName() != null)
+ productToChange.setPrice(productReceived.getPrice());
+
+ if (productReceived.getName() != null)
+ productToChange.setQuantity(productReceived.getQuantity());
+
+ if (productReceived.getName() != null)
+ productToChange.setQuantityMax(productReceived.getQuantityMax());
+
+ if (productReceived.getName() != null)
+ productToChange.setImageLink(productReceived.getImageLink());
+
+ productRepository.save(productToChange);
+
+ return productRepository.findById(productToChange.getId().longValue());
+ }
+
+ @Override
+ public long count() {
+ return productRepository.count();
+ }
+
+ @Override
+ public void delete(long id) throws Exception {
+ productValidator.checkIfNotExists(id);
+ productRepository.deleteById(id);
+ }
+}
diff --git a/src/main/java/com/dino/scrum/sysmag/validationGroup/UpdateGroup.java b/src/main/java/com/dino/scrum/sysmag/validationGroup/UpdateGroup.java
new file mode 100644
index 0000000..5f8f3a5
--- /dev/null
+++ b/src/main/java/com/dino/scrum/sysmag/validationGroup/UpdateGroup.java
@@ -0,0 +1,8 @@
+package com.dino.scrum.sysmag.validationGroup;
+
+/**
+ * Created by prgres on 2019-01-22.
+ */
+
+public interface UpdateGroup {
+}
diff --git a/src/main/java/com/dino/scrum/sysmag/validator/ProductValidator.java b/src/main/java/com/dino/scrum/sysmag/validator/ProductValidator.java
new file mode 100644
index 0000000..d3c7654
--- /dev/null
+++ b/src/main/java/com/dino/scrum/sysmag/validator/ProductValidator.java
@@ -0,0 +1,48 @@
+package com.dino.scrum.sysmag.validator;
+
+import com.dino.scrum.sysmag.repository.ProductRepository;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+/**
+ * Created by prgres on 2019-01-22.
+ */
+
+@Component
+public class ProductValidator {
+
+ private final ProductRepository productRepository;
+
+ @Autowired
+ public ProductValidator(ProductRepository productRepository) {
+ this.productRepository = productRepository;
+ }
+
+ private boolean existsById(long id) {
+ return productRepository.existsById(id);
+ }
+
+ private boolean existsByName(String name) {
+ return productRepository.existsByName(name);
+ }
+
+ private boolean ifRequestPageInLimit(int limit, int requestPage) {
+ return requestPage < limit;
+ }
+
+ public void checkIfNotExists(long id) throws Exception {
+ if (!existsById(id))
+ throw new Exception("Product with id: " + id + " not found");
+ System.out.println(id + " exists");
+ }
+
+ public void checkIfNotExists(String name) throws Exception {
+ if (existsByName(name))
+ throw new Exception("Product " + name + " already exists");
+ }
+
+ public void checkIfPageIsOutOfBound(int totalPages, int requestPage) throws Exception {
+ if (ifRequestPageInLimit(requestPage, totalPages))
+ throw new Exception("Page " + requestPage + " is out of the total pages number.");
+ }
+}
diff --git a/src/main/java/com/dino/scrum/sysmag/validator/QuantityChangeValidator.java b/src/main/java/com/dino/scrum/sysmag/validator/QuantityChangeValidator.java
new file mode 100644
index 0000000..915a051
--- /dev/null
+++ b/src/main/java/com/dino/scrum/sysmag/validator/QuantityChangeValidator.java
@@ -0,0 +1,44 @@
+package com.dino.scrum.sysmag.validator;
+
+import com.dino.scrum.sysmag.model.Product;
+import com.dino.scrum.sysmag.model.dto.QuantityChange;
+import com.dino.scrum.sysmag.service.ProductServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+/**
+ * Created by prgres on 2019-01-20.
+ */
+
+@Component
+public class QuantityChangeValidator {
+
+ private final
+ ProductServiceImpl productService;
+
+ @Autowired
+ public QuantityChangeValidator(ProductServiceImpl productService) {
+ this.productService = productService;
+ }
+
+ public void validate(QuantityChange quantityChange) throws Exception {
+
+ Product product = productService.getById(quantityChange.getId());
+
+ if (ifUnderStock(product.getQuantity(), quantityChange.getChange())) {
+ throw new RuntimeException("Too low product with id: " + quantityChange.getId() + " on stock");
+ }
+
+ if (ifAboveMaxLimitStock(product.getQuantity(), product.getQuantityMax(), quantityChange.getChange())) {
+ throw new RuntimeException("Over max quantity limit of product with id: " + quantityChange.getId());
+ }
+ }
+
+ private boolean ifUnderStock(long quantityOfProduct, long quantityChange) {
+ return ((quantityOfProduct + quantityChange) < 0);
+ }
+
+ private boolean ifAboveMaxLimitStock(long quantityOfProduct, long maxQuantityOfProduct, long quantityChange) {
+ return ((quantityOfProduct + quantityChange) > maxQuantityOfProduct);
+ }
+}
\ No newline at end of file
diff --git a/src/test/java/com/dino/scrum/sysmag/SysmagApplicationTests.java b/src/test/java/com/dino/scrum/sysmag/SysmagApplicationTests.java
new file mode 100644
index 0000000..a646b1d
--- /dev/null
+++ b/src/test/java/com/dino/scrum/sysmag/SysmagApplicationTests.java
@@ -0,0 +1,17 @@
+package com.dino.scrum.sysmag;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest
+public class SysmagApplicationTests {
+
+ @Test
+ public void contextLoads() {
+ }
+
+}
+
diff --git a/sysmag.iml b/sysmag.iml
new file mode 100644
index 0000000..65a8686
--- /dev/null
+++ b/sysmag.iml
@@ -0,0 +1,107 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/target/classes/META-INF/sysmag.kotlin_module b/target/classes/META-INF/sysmag.kotlin_module
new file mode 100644
index 0000000..8fb6019
Binary files /dev/null and b/target/classes/META-INF/sysmag.kotlin_module differ
diff --git a/target/classes/application.properties b/target/classes/application.properties
new file mode 100644
index 0000000..ea762f5
--- /dev/null
+++ b/target/classes/application.properties
@@ -0,0 +1,16 @@
+# Details for our datasource heroku
+spring.datasource.url=jdbc:postgresql://ec2-54-75-230-41.eu-west-1.compute.amazonaws.com/d3e1jrm08qe91q?ssl=true&sslmode=require&sslfactory=org.postgresql.ssl.NonValidatingFactory
+spring.datasource.username=eecsegponwphcn
+spring.datasource.password=4045a1e5a2de22362149709c3a2a1d5eb6e243cd553fd1a15f76fc54923638ce
+spring.datasource.driverClassName=org.postgresql.Driver
+# Hibernate properties
+spring.jpa.database-platform=org.hibernate.dialect.PostgreSQL94Dialect
+spring.jpa.generate-ddl=true
+spring.jpa.show-sql=false
+spring.jpa.hibernate.ddl-auto=update
+spring.jpa.hibernate.naming.implicit-strategy=org.hibernate.boot.model.naming.ImplicitNamingStrategyJpaCompliantImpl
+spring.jpa.properties.hibernate.format_sql=true
+spring.jpa.properties.hibernate.jdbc.lob.non_contextual_creation=true
+spring.jackson.serialization.FAIL_ON_EMPTY_BEANS=false
+#spring.jpa.properties.hibernate.temp.use_jdbc_metadata_defaults=false
+
diff --git a/target/test-classes/com/dino/scrum/sysmag/SysmagApplicationTests.class b/target/test-classes/com/dino/scrum/sysmag/SysmagApplicationTests.class
new file mode 100644
index 0000000..a104801
Binary files /dev/null and b/target/test-classes/com/dino/scrum/sysmag/SysmagApplicationTests.class differ