From 15e21374da5dde8d7927d475a524b40138dced70 Mon Sep 17 00:00:00 2001 From: liravanigroup Date: Fri, 2 Jun 2017 08:13:24 +0200 Subject: [PATCH] New commit --- .idea/encodings.xml | 6 + ..._ch_qos_logback_logback_classic_1_1_11.xml | 13 + ...en__ch_qos_logback_logback_core_1_1_11.xml | 13 + ...jackson_core_jackson_annotations_2_8_0.xml | 13 + ...terxml_jackson_core_jackson_core_2_8_8.xml | 13 + ...ml_jackson_core_jackson_databind_2_8_8.xml | 13 + ...datatype_jackson_datatype_jsr310_2_8_8.xml | 13 + ...s_transport_idrawings_dto_1_0_SNAPSHOT.xml | 13 + ...n__com_jayway_jsonpath_json_path_2_2_0.xml | 13 + .../Maven__com_jfoenix_jfoenix_1_0_0.xml | 13 + ...ogle_android_json_0_0_20131108_vaadin1.xml | 13 + .idea/libraries/Maven__junit_junit_4_12.xml | 13 + ...Maven__net_minidev_accessors_smart_1_1.xml | 13 + .../Maven__net_minidev_json_smart_2_2_1.xml | 13 + ...__org_apache_commons_commons_lang3_3_5.xml | 13 + .../Maven__org_assertj_assertj_core_2_6_0.xml | 13 + ...ven__org_controlsfx_controlsfx_8_40_12.xml | 13 + .../Maven__org_hamcrest_hamcrest_core_1_3.xml | 13 + ...ven__org_hamcrest_hamcrest_library_1_3.xml | 13 + ...ven__org_jfxtras_jfxtras_agenda_8_0_r5.xml | 13 + ...ven__org_jfxtras_jfxtras_common_8_0_r5.xml | 13 + ...n__org_jfxtras_jfxtras_controls_8_0_r5.xml | 13 + ...Maven__org_jfxtras_jfxtras_fxml_8_0_r5.xml | 13 + ...Maven__org_jfxtras_jfxtras_labs_8_0_r5.xml | 13 + ...ven__org_jfxtras_jfxtras_window_8_0_r5.xml | 13 + ...aven__org_mockito_mockito_core_1_10_19.xml | 13 + .../Maven__org_objenesis_objenesis_2_1.xml | 13 + .../Maven__org_ow2_asm_asm_5_0_3.xml | 13 + ...aven__org_skyscreamer_jsonassert_1_4_0.xml | 13 + ...Maven__org_slf4j_jcl_over_slf4j_1_7_25.xml | 13 + .../Maven__org_slf4j_jul_to_slf4j_1_7_25.xml | 13 + ...ven__org_slf4j_log4j_over_slf4j_1_7_25.xml | 13 + .../Maven__org_slf4j_slf4j_api_1_7_25.xml | 13 + ...amework_boot_spring_boot_1_5_3_RELEASE.xml | 13 + ...pring_boot_autoconfigure_1_5_3_RELEASE.xml | 13 + ...boot_spring_boot_starter_1_5_3_RELEASE.xml | 13 + ...ing_boot_starter_logging_1_5_3_RELEASE.xml | 13 + ...ng_boot_starter_security_1_5_3_RELEASE.xml | 13 + ...spring_boot_starter_test_1_5_3_RELEASE.xml | 13 + ...rk_boot_spring_boot_test_1_5_3_RELEASE.xml | 13 + ..._boot_test_autoconfigure_1_5_3_RELEASE.xml | 13 + ...y_spring_security_config_4_2_2_RELEASE.xml | 13 + ...ity_spring_security_core_4_2_2_RELEASE.xml | 13 + ...rity_spring_security_web_4_2_2_RELEASE.xml | 13 + ...ringframework_spring_aop_4_3_8_RELEASE.xml | 13 + ...ngframework_spring_beans_4_3_8_RELEASE.xml | 13 + ...framework_spring_context_4_3_8_RELEASE.xml | 13 + ...ingframework_spring_core_4_3_8_RELEASE.xml | 13 + ...mework_spring_expression_4_3_8_RELEASE.xml | 13 + ...ingframework_spring_test_4_3_8_RELEASE.xml | 13 + ...ringframework_spring_web_4_3_8_RELEASE.xml | 13 + .../Maven__org_yaml_snakeyaml_1_17.xml | 13 + .idea/modules.xml | 8 + .idea/uiDesigner.xml | 124 +++ .idea/vcs.xml | 6 + IDrawings_Desktop.iml | 70 ++ pom.xml | 87 ++- src/main/java/com/idrawings/desktop/Main.java | 86 +++ .../controllers/DocumentSearchController.java | 153 ++++ .../controllers/FilesSearchTabController.java | 228 ++++++ .../desktop/controllers/MainController.java | 48 ++ .../desktop/domain/FileSearchCriteria.java | 135 ++++ .../desktop/domain/FilterCriteria.java | 97 +++ .../idrawings/desktop/domain/TableItem.java | 40 + .../desktop/domain/filter/DrawingFilter.java | 27 + .../filter/chainmodule/AuthorFilter.java | 20 + .../filter/chainmodule/CheckedFilter.java | 17 + .../domain/filter/chainmodule/CodeFilter.java | 17 + .../filter/chainmodule/DocumentDTO.java | 29 + .../domain/filter/chainmodule/EndFilter.java | 19 + .../filter/chainmodule/FilterChain.java | 27 + .../filter/chainmodule/MaterialFilter.java | 17 + .../domain/filter/chainmodule/NameFilter.java | 17 + .../chainmodule/OrganizationFilter.java | 17 + .../domain/filter/chainmodule/SizeFilter.java | 24 + .../domain/filter/chainmodule/StampDTO.java | 42 + .../filter/chainmodule/TableFilter.java | 21 + .../domain/filter/chainmodule/TextFilter.java | 21 + .../filter/chainmodule/WeightFilter.java | 19 + .../service/LocalDateDeserializer.java | 21 + .../desktop/service/LocalDateSerializer.java | 21 + .../idrawings/desktop/service/RestClient.java | 93 +++ src/main/java/com/mvp/java/Main.java | 74 -- .../controllers/ConsoleTabController.java | 69 -- .../controllers/MongoLoggerController.java | 234 ------ .../java/com/mvp/java/logging/LogRecord.java | 92 --- .../java/logging/MongoLogAppenderAsync.java | 137 ---- .../logging/cellfactory/LogCellFactory.java | 49 -- .../cellfactory/LogExceptionCellFactory.java | 95 --- .../mvp/java/services/MissionsService.java | 34 - .../mvp/java/spring/config/AppJavaConfig.java | 23 - .../mvp/java/spring/config/MongoConfig.java | 25 - src/main/java/outline | 5 - src/main/resources/application.properties | 4 +- src/main/resources/favicon/Icon.png | Bin 0 -> 19056 bytes src/main/resources/fxml/Main.fxml | 13 - src/main/resources/fxml/MainContainer.fxml | 95 +++ src/main/resources/fxml/outline | 18 - src/main/resources/fxml/tabs/ConsoleTab.fxml | 63 -- .../resources/fxml/tabs/DrawingsInfoTab.fxml | 181 +++++ .../resources/fxml/tabs/MongoLoggerTab.fxml | 56 -- src/main/resources/fxml/tabs/TabPane.fxml | 27 - src/main/resources/icons/checkbox.png | Bin 0 -> 16080 bytes src/main/resources/icons/clean.png | Bin 0 -> 16194 bytes src/main/resources/icons/readdata.png | Bin 0 -> 24329 bytes src/main/resources/icons/uncheck.png | Bin 0 -> 21154 bytes .../resources/images/1364283943_0243-01.gif | Bin 0 -> 128195 bytes src/main/resources/images/kompas_ig_big.jpg | Bin 0 -> 204219 bytes src/main/resources/logback-spring.xml | 39 - src/main/resources/specs/Apollo | 30 - src/main/resources/specs/Shuttle | 26 - src/main/resources/specs/Skylab | 23 - src/main/resources/styles/breeze.css | 280 +++++++ src/main/resources/styles/dark.css | 645 ++++++++++++++++ src/main/resources/{ => styles}/style.css | 0 src/main/resources/styles/win7glass.css | 718 ++++++++++++++++++ 116 files changed, 4120 insertions(+), 1155 deletions(-) create mode 100644 .idea/encodings.xml create mode 100644 .idea/libraries/Maven__ch_qos_logback_logback_classic_1_1_11.xml create mode 100644 .idea/libraries/Maven__ch_qos_logback_logback_core_1_1_11.xml create mode 100644 .idea/libraries/Maven__com_fasterxml_jackson_core_jackson_annotations_2_8_0.xml create mode 100644 .idea/libraries/Maven__com_fasterxml_jackson_core_jackson_core_2_8_8.xml create mode 100644 .idea/libraries/Maven__com_fasterxml_jackson_core_jackson_databind_2_8_8.xml create mode 100644 .idea/libraries/Maven__com_fasterxml_jackson_datatype_jackson_datatype_jsr310_2_8_8.xml create mode 100644 .idea/libraries/Maven__com_idrawings_transport_idrawings_dto_1_0_SNAPSHOT.xml create mode 100644 .idea/libraries/Maven__com_jayway_jsonpath_json_path_2_2_0.xml create mode 100644 .idea/libraries/Maven__com_jfoenix_jfoenix_1_0_0.xml create mode 100644 .idea/libraries/Maven__com_vaadin_external_google_android_json_0_0_20131108_vaadin1.xml create mode 100644 .idea/libraries/Maven__junit_junit_4_12.xml create mode 100644 .idea/libraries/Maven__net_minidev_accessors_smart_1_1.xml create mode 100644 .idea/libraries/Maven__net_minidev_json_smart_2_2_1.xml create mode 100644 .idea/libraries/Maven__org_apache_commons_commons_lang3_3_5.xml create mode 100644 .idea/libraries/Maven__org_assertj_assertj_core_2_6_0.xml create mode 100644 .idea/libraries/Maven__org_controlsfx_controlsfx_8_40_12.xml create mode 100644 .idea/libraries/Maven__org_hamcrest_hamcrest_core_1_3.xml create mode 100644 .idea/libraries/Maven__org_hamcrest_hamcrest_library_1_3.xml create mode 100644 .idea/libraries/Maven__org_jfxtras_jfxtras_agenda_8_0_r5.xml create mode 100644 .idea/libraries/Maven__org_jfxtras_jfxtras_common_8_0_r5.xml create mode 100644 .idea/libraries/Maven__org_jfxtras_jfxtras_controls_8_0_r5.xml create mode 100644 .idea/libraries/Maven__org_jfxtras_jfxtras_fxml_8_0_r5.xml create mode 100644 .idea/libraries/Maven__org_jfxtras_jfxtras_labs_8_0_r5.xml create mode 100644 .idea/libraries/Maven__org_jfxtras_jfxtras_window_8_0_r5.xml create mode 100644 .idea/libraries/Maven__org_mockito_mockito_core_1_10_19.xml create mode 100644 .idea/libraries/Maven__org_objenesis_objenesis_2_1.xml create mode 100644 .idea/libraries/Maven__org_ow2_asm_asm_5_0_3.xml create mode 100644 .idea/libraries/Maven__org_skyscreamer_jsonassert_1_4_0.xml create mode 100644 .idea/libraries/Maven__org_slf4j_jcl_over_slf4j_1_7_25.xml create mode 100644 .idea/libraries/Maven__org_slf4j_jul_to_slf4j_1_7_25.xml create mode 100644 .idea/libraries/Maven__org_slf4j_log4j_over_slf4j_1_7_25.xml create mode 100644 .idea/libraries/Maven__org_slf4j_slf4j_api_1_7_25.xml create mode 100644 .idea/libraries/Maven__org_springframework_boot_spring_boot_1_5_3_RELEASE.xml create mode 100644 .idea/libraries/Maven__org_springframework_boot_spring_boot_autoconfigure_1_5_3_RELEASE.xml create mode 100644 .idea/libraries/Maven__org_springframework_boot_spring_boot_starter_1_5_3_RELEASE.xml create mode 100644 .idea/libraries/Maven__org_springframework_boot_spring_boot_starter_logging_1_5_3_RELEASE.xml create mode 100644 .idea/libraries/Maven__org_springframework_boot_spring_boot_starter_security_1_5_3_RELEASE.xml create mode 100644 .idea/libraries/Maven__org_springframework_boot_spring_boot_starter_test_1_5_3_RELEASE.xml create mode 100644 .idea/libraries/Maven__org_springframework_boot_spring_boot_test_1_5_3_RELEASE.xml create mode 100644 .idea/libraries/Maven__org_springframework_boot_spring_boot_test_autoconfigure_1_5_3_RELEASE.xml create mode 100644 .idea/libraries/Maven__org_springframework_security_spring_security_config_4_2_2_RELEASE.xml create mode 100644 .idea/libraries/Maven__org_springframework_security_spring_security_core_4_2_2_RELEASE.xml create mode 100644 .idea/libraries/Maven__org_springframework_security_spring_security_web_4_2_2_RELEASE.xml create mode 100644 .idea/libraries/Maven__org_springframework_spring_aop_4_3_8_RELEASE.xml create mode 100644 .idea/libraries/Maven__org_springframework_spring_beans_4_3_8_RELEASE.xml create mode 100644 .idea/libraries/Maven__org_springframework_spring_context_4_3_8_RELEASE.xml create mode 100644 .idea/libraries/Maven__org_springframework_spring_core_4_3_8_RELEASE.xml create mode 100644 .idea/libraries/Maven__org_springframework_spring_expression_4_3_8_RELEASE.xml create mode 100644 .idea/libraries/Maven__org_springframework_spring_test_4_3_8_RELEASE.xml create mode 100644 .idea/libraries/Maven__org_springframework_spring_web_4_3_8_RELEASE.xml create mode 100644 .idea/libraries/Maven__org_yaml_snakeyaml_1_17.xml create mode 100644 .idea/modules.xml create mode 100644 .idea/uiDesigner.xml create mode 100644 .idea/vcs.xml create mode 100644 IDrawings_Desktop.iml create mode 100644 src/main/java/com/idrawings/desktop/Main.java create mode 100644 src/main/java/com/idrawings/desktop/controllers/DocumentSearchController.java create mode 100644 src/main/java/com/idrawings/desktop/controllers/FilesSearchTabController.java create mode 100644 src/main/java/com/idrawings/desktop/controllers/MainController.java create mode 100644 src/main/java/com/idrawings/desktop/domain/FileSearchCriteria.java create mode 100644 src/main/java/com/idrawings/desktop/domain/FilterCriteria.java create mode 100644 src/main/java/com/idrawings/desktop/domain/TableItem.java create mode 100644 src/main/java/com/idrawings/desktop/domain/filter/DrawingFilter.java create mode 100644 src/main/java/com/idrawings/desktop/domain/filter/chainmodule/AuthorFilter.java create mode 100644 src/main/java/com/idrawings/desktop/domain/filter/chainmodule/CheckedFilter.java create mode 100644 src/main/java/com/idrawings/desktop/domain/filter/chainmodule/CodeFilter.java create mode 100644 src/main/java/com/idrawings/desktop/domain/filter/chainmodule/DocumentDTO.java create mode 100644 src/main/java/com/idrawings/desktop/domain/filter/chainmodule/EndFilter.java create mode 100644 src/main/java/com/idrawings/desktop/domain/filter/chainmodule/FilterChain.java create mode 100644 src/main/java/com/idrawings/desktop/domain/filter/chainmodule/MaterialFilter.java create mode 100644 src/main/java/com/idrawings/desktop/domain/filter/chainmodule/NameFilter.java create mode 100644 src/main/java/com/idrawings/desktop/domain/filter/chainmodule/OrganizationFilter.java create mode 100644 src/main/java/com/idrawings/desktop/domain/filter/chainmodule/SizeFilter.java create mode 100644 src/main/java/com/idrawings/desktop/domain/filter/chainmodule/StampDTO.java create mode 100644 src/main/java/com/idrawings/desktop/domain/filter/chainmodule/TableFilter.java create mode 100644 src/main/java/com/idrawings/desktop/domain/filter/chainmodule/TextFilter.java create mode 100644 src/main/java/com/idrawings/desktop/domain/filter/chainmodule/WeightFilter.java create mode 100644 src/main/java/com/idrawings/desktop/service/LocalDateDeserializer.java create mode 100644 src/main/java/com/idrawings/desktop/service/LocalDateSerializer.java create mode 100644 src/main/java/com/idrawings/desktop/service/RestClient.java delete mode 100644 src/main/java/com/mvp/java/Main.java delete mode 100644 src/main/java/com/mvp/java/controllers/ConsoleTabController.java delete mode 100644 src/main/java/com/mvp/java/controllers/MongoLoggerController.java delete mode 100644 src/main/java/com/mvp/java/logging/LogRecord.java delete mode 100644 src/main/java/com/mvp/java/logging/MongoLogAppenderAsync.java delete mode 100644 src/main/java/com/mvp/java/logging/cellfactory/LogCellFactory.java delete mode 100644 src/main/java/com/mvp/java/logging/cellfactory/LogExceptionCellFactory.java delete mode 100644 src/main/java/com/mvp/java/services/MissionsService.java delete mode 100644 src/main/java/com/mvp/java/spring/config/AppJavaConfig.java delete mode 100644 src/main/java/com/mvp/java/spring/config/MongoConfig.java delete mode 100644 src/main/java/outline create mode 100644 src/main/resources/favicon/Icon.png delete mode 100644 src/main/resources/fxml/Main.fxml create mode 100644 src/main/resources/fxml/MainContainer.fxml delete mode 100644 src/main/resources/fxml/outline delete mode 100644 src/main/resources/fxml/tabs/ConsoleTab.fxml create mode 100644 src/main/resources/fxml/tabs/DrawingsInfoTab.fxml delete mode 100644 src/main/resources/fxml/tabs/MongoLoggerTab.fxml delete mode 100644 src/main/resources/fxml/tabs/TabPane.fxml create mode 100644 src/main/resources/icons/checkbox.png create mode 100644 src/main/resources/icons/clean.png create mode 100644 src/main/resources/icons/readdata.png create mode 100644 src/main/resources/icons/uncheck.png create mode 100644 src/main/resources/images/1364283943_0243-01.gif create mode 100644 src/main/resources/images/kompas_ig_big.jpg delete mode 100644 src/main/resources/logback-spring.xml delete mode 100644 src/main/resources/specs/Apollo delete mode 100644 src/main/resources/specs/Shuttle delete mode 100644 src/main/resources/specs/Skylab create mode 100644 src/main/resources/styles/breeze.css create mode 100644 src/main/resources/styles/dark.css rename src/main/resources/{ => styles}/style.css (100%) create mode 100644 src/main/resources/styles/win7glass.css diff --git a/.idea/encodings.xml b/.idea/encodings.xml new file mode 100644 index 0000000..b26911b --- /dev/null +++ b/.idea/encodings.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__ch_qos_logback_logback_classic_1_1_11.xml b/.idea/libraries/Maven__ch_qos_logback_logback_classic_1_1_11.xml new file mode 100644 index 0000000..c6ea67e --- /dev/null +++ b/.idea/libraries/Maven__ch_qos_logback_logback_classic_1_1_11.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__ch_qos_logback_logback_core_1_1_11.xml b/.idea/libraries/Maven__ch_qos_logback_logback_core_1_1_11.xml new file mode 100644 index 0000000..f538e36 --- /dev/null +++ b/.idea/libraries/Maven__ch_qos_logback_logback_core_1_1_11.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_annotations_2_8_0.xml b/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_annotations_2_8_0.xml new file mode 100644 index 0000000..49b4ec7 --- /dev/null +++ b/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_annotations_2_8_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_8_8.xml b/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_core_2_8_8.xml new file mode 100644 index 0000000..dc8e04d --- /dev/null +++ b/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_core_2_8_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_8_8.xml b/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_databind_2_8_8.xml new file mode 100644 index 0000000..247589e --- /dev/null +++ b/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_databind_2_8_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_8_8.xml b/.idea/libraries/Maven__com_fasterxml_jackson_datatype_jackson_datatype_jsr310_2_8_8.xml new file mode 100644 index 0000000..b61be33 --- /dev/null +++ b/.idea/libraries/Maven__com_fasterxml_jackson_datatype_jackson_datatype_jsr310_2_8_8.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_idrawings_transport_idrawings_dto_1_0_SNAPSHOT.xml b/.idea/libraries/Maven__com_idrawings_transport_idrawings_dto_1_0_SNAPSHOT.xml new file mode 100644 index 0000000..11c53e2 --- /dev/null +++ b/.idea/libraries/Maven__com_idrawings_transport_idrawings_dto_1_0_SNAPSHOT.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_jayway_jsonpath_json_path_2_2_0.xml b/.idea/libraries/Maven__com_jayway_jsonpath_json_path_2_2_0.xml new file mode 100644 index 0000000..578b079 --- /dev/null +++ b/.idea/libraries/Maven__com_jayway_jsonpath_json_path_2_2_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_jfoenix_jfoenix_1_0_0.xml b/.idea/libraries/Maven__com_jfoenix_jfoenix_1_0_0.xml new file mode 100644 index 0000000..b0c0b5d --- /dev/null +++ b/.idea/libraries/Maven__com_jfoenix_jfoenix_1_0_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__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_minidev_accessors_smart_1_1.xml b/.idea/libraries/Maven__net_minidev_accessors_smart_1_1.xml new file mode 100644 index 0000000..88d626e --- /dev/null +++ b/.idea/libraries/Maven__net_minidev_accessors_smart_1_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__net_minidev_json_smart_2_2_1.xml b/.idea/libraries/Maven__net_minidev_json_smart_2_2_1.xml new file mode 100644 index 0000000..6c692c8 --- /dev/null +++ b/.idea/libraries/Maven__net_minidev_json_smart_2_2_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_apache_commons_commons_lang3_3_5.xml b/.idea/libraries/Maven__org_apache_commons_commons_lang3_3_5.xml new file mode 100644 index 0000000..666266c --- /dev/null +++ b/.idea/libraries/Maven__org_apache_commons_commons_lang3_3_5.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_assertj_assertj_core_2_6_0.xml b/.idea/libraries/Maven__org_assertj_assertj_core_2_6_0.xml new file mode 100644 index 0000000..58bdc9a --- /dev/null +++ b/.idea/libraries/Maven__org_assertj_assertj_core_2_6_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_controlsfx_controlsfx_8_40_12.xml b/.idea/libraries/Maven__org_controlsfx_controlsfx_8_40_12.xml new file mode 100644 index 0000000..f79bab9 --- /dev/null +++ b/.idea/libraries/Maven__org_controlsfx_controlsfx_8_40_12.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_jfxtras_jfxtras_agenda_8_0_r5.xml b/.idea/libraries/Maven__org_jfxtras_jfxtras_agenda_8_0_r5.xml new file mode 100644 index 0000000..8feae96 --- /dev/null +++ b/.idea/libraries/Maven__org_jfxtras_jfxtras_agenda_8_0_r5.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_jfxtras_jfxtras_common_8_0_r5.xml b/.idea/libraries/Maven__org_jfxtras_jfxtras_common_8_0_r5.xml new file mode 100644 index 0000000..cd4f2e1 --- /dev/null +++ b/.idea/libraries/Maven__org_jfxtras_jfxtras_common_8_0_r5.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_jfxtras_jfxtras_controls_8_0_r5.xml b/.idea/libraries/Maven__org_jfxtras_jfxtras_controls_8_0_r5.xml new file mode 100644 index 0000000..b7ffe58 --- /dev/null +++ b/.idea/libraries/Maven__org_jfxtras_jfxtras_controls_8_0_r5.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_jfxtras_jfxtras_fxml_8_0_r5.xml b/.idea/libraries/Maven__org_jfxtras_jfxtras_fxml_8_0_r5.xml new file mode 100644 index 0000000..8959165 --- /dev/null +++ b/.idea/libraries/Maven__org_jfxtras_jfxtras_fxml_8_0_r5.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_jfxtras_jfxtras_labs_8_0_r5.xml b/.idea/libraries/Maven__org_jfxtras_jfxtras_labs_8_0_r5.xml new file mode 100644 index 0000000..f358340 --- /dev/null +++ b/.idea/libraries/Maven__org_jfxtras_jfxtras_labs_8_0_r5.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_jfxtras_jfxtras_window_8_0_r5.xml b/.idea/libraries/Maven__org_jfxtras_jfxtras_window_8_0_r5.xml new file mode 100644 index 0000000..feed375 --- /dev/null +++ b/.idea/libraries/Maven__org_jfxtras_jfxtras_window_8_0_r5.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_mockito_mockito_core_1_10_19.xml b/.idea/libraries/Maven__org_mockito_mockito_core_1_10_19.xml new file mode 100644 index 0000000..a523703 --- /dev/null +++ b/.idea/libraries/Maven__org_mockito_mockito_core_1_10_19.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_objenesis_objenesis_2_1.xml b/.idea/libraries/Maven__org_objenesis_objenesis_2_1.xml new file mode 100644 index 0000000..7ab319b --- /dev/null +++ b/.idea/libraries/Maven__org_objenesis_objenesis_2_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_ow2_asm_asm_5_0_3.xml b/.idea/libraries/Maven__org_ow2_asm_asm_5_0_3.xml new file mode 100644 index 0000000..da69f6c --- /dev/null +++ b/.idea/libraries/Maven__org_ow2_asm_asm_5_0_3.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_skyscreamer_jsonassert_1_4_0.xml b/.idea/libraries/Maven__org_skyscreamer_jsonassert_1_4_0.xml new file mode 100644 index 0000000..f86d2c8 --- /dev/null +++ b/.idea/libraries/Maven__org_skyscreamer_jsonassert_1_4_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_slf4j_jcl_over_slf4j_1_7_25.xml b/.idea/libraries/Maven__org_slf4j_jcl_over_slf4j_1_7_25.xml new file mode 100644 index 0000000..bae9949 --- /dev/null +++ b/.idea/libraries/Maven__org_slf4j_jcl_over_slf4j_1_7_25.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_log4j_over_slf4j_1_7_25.xml b/.idea/libraries/Maven__org_slf4j_log4j_over_slf4j_1_7_25.xml new file mode 100644 index 0000000..a14ac63 --- /dev/null +++ b/.idea/libraries/Maven__org_slf4j_log4j_over_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_1_5_3_RELEASE.xml b/.idea/libraries/Maven__org_springframework_boot_spring_boot_1_5_3_RELEASE.xml new file mode 100644 index 0000000..f739d39 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_boot_spring_boot_1_5_3_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_boot_spring_boot_autoconfigure_1_5_3_RELEASE.xml b/.idea/libraries/Maven__org_springframework_boot_spring_boot_autoconfigure_1_5_3_RELEASE.xml new file mode 100644 index 0000000..5eb4732 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_boot_spring_boot_autoconfigure_1_5_3_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_1_5_3_RELEASE.xml b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_1_5_3_RELEASE.xml new file mode 100644 index 0000000..b3f44c0 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_1_5_3_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_1_5_3_RELEASE.xml b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_logging_1_5_3_RELEASE.xml new file mode 100644 index 0000000..996c9fd --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_logging_1_5_3_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_security_1_5_3_RELEASE.xml b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_security_1_5_3_RELEASE.xml new file mode 100644 index 0000000..86b1175 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_security_1_5_3_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_1_5_3_RELEASE.xml b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_test_1_5_3_RELEASE.xml new file mode 100644 index 0000000..c64fd94 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_test_1_5_3_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_boot_spring_boot_test_1_5_3_RELEASE.xml b/.idea/libraries/Maven__org_springframework_boot_spring_boot_test_1_5_3_RELEASE.xml new file mode 100644 index 0000000..f212266 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_boot_spring_boot_test_1_5_3_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_1_5_3_RELEASE.xml b/.idea/libraries/Maven__org_springframework_boot_spring_boot_test_autoconfigure_1_5_3_RELEASE.xml new file mode 100644 index 0000000..28a0a1d --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_boot_spring_boot_test_autoconfigure_1_5_3_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_security_spring_security_config_4_2_2_RELEASE.xml b/.idea/libraries/Maven__org_springframework_security_spring_security_config_4_2_2_RELEASE.xml new file mode 100644 index 0000000..481256a --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_security_spring_security_config_4_2_2_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_security_spring_security_core_4_2_2_RELEASE.xml b/.idea/libraries/Maven__org_springframework_security_spring_security_core_4_2_2_RELEASE.xml new file mode 100644 index 0000000..de3b485 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_security_spring_security_core_4_2_2_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_security_spring_security_web_4_2_2_RELEASE.xml b/.idea/libraries/Maven__org_springframework_security_spring_security_web_4_2_2_RELEASE.xml new file mode 100644 index 0000000..78888a9 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_security_spring_security_web_4_2_2_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_spring_aop_4_3_8_RELEASE.xml b/.idea/libraries/Maven__org_springframework_spring_aop_4_3_8_RELEASE.xml new file mode 100644 index 0000000..659aa93 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_spring_aop_4_3_8_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_spring_beans_4_3_8_RELEASE.xml b/.idea/libraries/Maven__org_springframework_spring_beans_4_3_8_RELEASE.xml new file mode 100644 index 0000000..39b5701 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_spring_beans_4_3_8_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_spring_context_4_3_8_RELEASE.xml b/.idea/libraries/Maven__org_springframework_spring_context_4_3_8_RELEASE.xml new file mode 100644 index 0000000..36db229 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_spring_context_4_3_8_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_spring_core_4_3_8_RELEASE.xml b/.idea/libraries/Maven__org_springframework_spring_core_4_3_8_RELEASE.xml new file mode 100644 index 0000000..3ab7fea --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_spring_core_4_3_8_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_spring_expression_4_3_8_RELEASE.xml b/.idea/libraries/Maven__org_springframework_spring_expression_4_3_8_RELEASE.xml new file mode 100644 index 0000000..2fff822 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_spring_expression_4_3_8_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_spring_test_4_3_8_RELEASE.xml b/.idea/libraries/Maven__org_springframework_spring_test_4_3_8_RELEASE.xml new file mode 100644 index 0000000..885179d --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_spring_test_4_3_8_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_spring_web_4_3_8_RELEASE.xml b/.idea/libraries/Maven__org_springframework_spring_web_4_3_8_RELEASE.xml new file mode 100644 index 0000000..8409a49 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_spring_web_4_3_8_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_yaml_snakeyaml_1_17.xml b/.idea/libraries/Maven__org_yaml_snakeyaml_1_17.xml new file mode 100644 index 0000000..20e2920 --- /dev/null +++ b/.idea/libraries/Maven__org_yaml_snakeyaml_1_17.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..f4cb030 --- /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/IDrawings_Desktop.iml b/IDrawings_Desktop.iml new file mode 100644 index 0000000..b6546fe --- /dev/null +++ b/IDrawings_Desktop.iml @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pom.xml b/pom.xml index 15d47c7..c70eaf7 100644 --- a/pom.xml +++ b/pom.xml @@ -3,18 +3,16 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - com.mvp.java - JavaLoggingSpringMongo_Tutorial + com.idrawings.desktop + drawing-seller-desctop 0.0.1-SNAPSHOT jar - JavaLoggingSpringMongo_Tutorial - org.springframework.boot spring-boot-starter-parent - 1.4.0.RELEASE - + 1.5.3.RELEASE + @@ -27,21 +25,68 @@ org.springframework.boot spring-boot-starter-security - + + org.springframework + spring-web + + + com.fasterxml.jackson.core + jackson-databind + org.springframework.boot spring-boot-starter-test test + + com.fasterxml.jackson.datatype + jackson-datatype-jsr310 + - org.springframework.data - spring-data-mongodb + org.apache.commons + commons-lang3 + 3.5 + compile + + + + + org.controlsfx + controlsfx + 8.40.12 - org.mongodb - mongodb-driver-async - 3.0.4 + com.jfoenix + jfoenix + 1.0.0 + + + org.jfxtras + jfxtras-controls + 8.0-r5 + + + org.jfxtras + jfxtras-common + 8.0-r5 + + + org.jfxtras + jfxtras-window + 8.0-r5 + + + org.jfxtras + jfxtras-labs + 8.0-r5 + + + + + com.idrawings.transport + idrawings-dto + 1.0-SNAPSHOT @@ -51,16 +96,14 @@ org.springframework.boot spring-boot-maven-plugin - - org.apache.maven.plugins - maven-compiler-plugin - 2.3.2 - - true - - + + + + + + + + - - diff --git a/src/main/java/com/idrawings/desktop/Main.java b/src/main/java/com/idrawings/desktop/Main.java new file mode 100644 index 0000000..3d830db --- /dev/null +++ b/src/main/java/com/idrawings/desktop/Main.java @@ -0,0 +1,86 @@ +package com.idrawings.desktop; + +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.datatype.jsr310.JSR310Module; +import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; +import com.idrawings.desktop.service.LocalDateDeserializer; +import com.idrawings.desktop.service.LocalDateSerializer; +import javafx.application.Application; +import javafx.fxml.FXMLLoader; +import javafx.scene.Parent; +import javafx.scene.Scene; +import javafx.scene.image.Image; +import javafx.stage.Stage; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.builder.SpringApplicationBuilder; +import org.springframework.boot.web.client.RestTemplateBuilder; +import org.springframework.context.ConfigurableApplicationContext; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Primary; +import org.springframework.web.client.RestTemplate; + +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; + +import static java.time.format.DateTimeFormatter.ofPattern; + +@SpringBootApplication +public class Main extends Application { + + private ConfigurableApplicationContext springContext; + private Parent rootNode; + public static final DateTimeFormatter FORMATTER = ofPattern("dd::MM::yyyy"); + + @Bean + @Primary + public ObjectMapper serializingObjectMapper() { + ObjectMapper objectMapper = new ObjectMapper(); + JavaTimeModule javaTimeModule = new JavaTimeModule(); + javaTimeModule.addSerializer(LocalDate.class, new LocalDateSerializer()); + javaTimeModule.addDeserializer(LocalDate.class, new LocalDateDeserializer()); + objectMapper.registerModule(javaTimeModule); + return objectMapper; + } + + public static void main(final String[] args) { + Application.launch(args); + } + + @Override + public void init() throws Exception { + springContext = bootstrapSpringApplicationContext(); + FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/fxml/MainContainer.fxml")); + fxmlLoader.setControllerFactory(springContext::getBean); + rootNode = fxmlLoader.load(); + } + + private ConfigurableApplicationContext bootstrapSpringApplicationContext() { + SpringApplicationBuilder builder = new SpringApplicationBuilder(Main.class); + String[] args = getParameters().getRaw().stream().toArray(String[]::new); + builder.headless(false); + return builder.run(args); + } + + @Bean + public RestTemplate restTemplate(RestTemplateBuilder builder) { + return builder.build(); + } + + @Override + public void start(Stage stage) throws Exception { + stage.setScene(new Scene(rootNode)); + stage.setTitle("Drawings seller 2.0"); + stage.setWidth(1200); + stage.setHeight(800); + stage.centerOnScreen(); + stage.getIcons().add(new Image("/favicon/Icon.png")); + stage.getScene().getStylesheets().add("styles/style.css"); + stage.show(); + } + + @Override + public void stop() throws Exception { + springContext.close(); + } +} \ No newline at end of file diff --git a/src/main/java/com/idrawings/desktop/controllers/DocumentSearchController.java b/src/main/java/com/idrawings/desktop/controllers/DocumentSearchController.java new file mode 100644 index 0000000..a3caba3 --- /dev/null +++ b/src/main/java/com/idrawings/desktop/controllers/DocumentSearchController.java @@ -0,0 +1,153 @@ +package com.idrawings.desktop.controllers; + +import com.idrawings.desktop.domain.FilterCriteria; +import com.idrawings.desktop.domain.TableItem; + +import com.idrawings.dto.document.DocumentDTO; +import com.idrawings.dto.drawing.StampDTO; +import javafx.beans.property.SimpleBooleanProperty; +import javafx.beans.property.SimpleStringProperty; +import javafx.beans.value.ObservableValue; +import javafx.collections.FXCollections; +import javafx.collections.ListChangeListener; +import javafx.collections.ObservableList; +import javafx.fxml.FXML; +import javafx.scene.control.*; +import javafx.scene.control.cell.CheckBoxListCell; +import javafx.scene.control.cell.PropertyValueFactory; +import org.springframework.stereotype.Component; + +import java.util.ArrayList; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; + +/** + * Created by White Stream on 30.05.2017. + */ +@Component +public class DocumentSearchController { + + private Map> map = new LinkedHashMap<>(); + + @FXML + private ListView drawingsList; + @FXML + private TableView drawingInfoTable; + @FXML + private TableColumn key, value; + + @FXML + private TextField author; + @FXML + private TextField checked; + @FXML + private TextField code; + @FXML + private TextField name; + @FXML + private TextField material; + @FXML + private TextField organization; + @FXML + private TextField weight; + @FXML + private TextField text; + @FXML + private TextField size; + @FXML + private TextField table; + + @FXML + private void reset() { + author.setText(""); + checked.setText(""); + code.setText(""); + name.setText(""); + material.setText(""); + organization.setText(""); + weight.setText(""); + text.setText(""); + size.setText(""); + table.setText(""); + } + + @FXML + private void initialize() { + key.setCellValueFactory(new PropertyValueFactory<>("key")); + value.setCellValueFactory(new PropertyValueFactory<>("value")); + drawingsList.getSelectionModel().setSelectionMode(SelectionMode.SINGLE); + setListeners(); + } + + private FilterCriteria getFilterCriteria() { + FilterCriteria filterCriteria = new FilterCriteria(); + + filterCriteria.setAuthor(author.getText()); + filterCriteria.setChecked(checked.getText()); + filterCriteria.setCode(code.getText()); + filterCriteria.setName(name.getText()); + filterCriteria.setMaterial(material.getText()); + filterCriteria.setOrganization(organization.getText()); + filterCriteria.setWeight(weight.getText()); + filterCriteria.setText(text.getText()); + filterCriteria.setSize(size.getText()); + filterCriteria.setTable(table.getText()); + + return filterCriteria; + } + + public void addDrawingToList(DocumentDTO file) { + map.put(file, new SimpleBooleanProperty(false)); + drawingsList.setCellFactory(CheckBoxListCell.forListView(map::get)); + drawingsList.getItems().add(file); + } + + private void setListeners() { + drawingsList.getSelectionModel().getSelectedItems().addListener((ListChangeListener) c -> { + drawingInfoTable.setItems(getInitialTableData(drawingsList.getSelectionModel().getSelectedItem())); + }); + } + + private ObservableList getInitialTableData(DocumentDTO selectedFile) { + if (selectedFile == null) { + return FXCollections.emptyObservableList(); + } + + StampDTO stamp = selectedFile.getStampDTO(); + + List list = new ArrayList<>(); + list.add(new TableItem(new SimpleStringProperty("Наименование изделия"), new SimpleStringProperty(stamp.getKsStPartNumber()))); + list.add(new TableItem(new SimpleStringProperty("Обозначение документа"), new SimpleStringProperty(stamp.getKsStDescription()))); + list.add(new TableItem(new SimpleStringProperty("Обозначение материала"), new SimpleStringProperty(stamp.getKsStMaterial()))); + list.add(new TableItem(new SimpleStringProperty("Масса изделия"), new SimpleStringProperty(stamp.getKsStMass()))); + list.add(new TableItem(new SimpleStringProperty("Масштаб"), new SimpleStringProperty(stamp.getKsStScale()))); + list.add(new TableItem(new SimpleStringProperty("Номер листа"), new SimpleStringProperty(stamp.getKsStSheetNumber()))); + list.add(new TableItem(new SimpleStringProperty("Количество листов"), new SimpleStringProperty(stamp.getKsStNumberOfSheets()))); + list.add(new TableItem(new SimpleStringProperty("Индекс предприятия"), new SimpleStringProperty(stamp.getKsStCompany()))); + list.add(new TableItem(new SimpleStringProperty("Характер работы"), new SimpleStringProperty(stamp.getKsStTypeOfWork()))); + list.add(new TableItem(new SimpleStringProperty("Литера документа (графа 1)"), new SimpleStringProperty(stamp.getKsStDocumentLetter1()))); + list.add(new TableItem(new SimpleStringProperty("Литера документа (графа 2)"), new SimpleStringProperty(stamp.getKsStDocumentLetter2()))); + list.add(new TableItem(new SimpleStringProperty("Литера документа (графа 3)"), new SimpleStringProperty(stamp.getKsStDocumentLetter3()))); + list.add(new TableItem(new SimpleStringProperty("Имя файла (полное)"), new SimpleStringProperty(stamp.getKsStFullFileName()))); + list.add(new TableItem(new SimpleStringProperty("Имя файла (короткое)"), new SimpleStringProperty(stamp.getKsStShortFileName()))); + list.add(new TableItem(new SimpleStringProperty("Строка обозначения и дефис"), new SimpleStringProperty(stamp.getKsStMarkingLine()))); + list.add(new TableItem(new SimpleStringProperty("Наименование документа"), new SimpleStringProperty(stamp.getKsStDocumentName()))); + list.add(new TableItem(new SimpleStringProperty("Код документа"), new SimpleStringProperty(stamp.getKsStDocumentCode()))); + list.add(new TableItem(new SimpleStringProperty("Код ОКП"), new SimpleStringProperty(stamp.getKsStOKPCode()))); + list.add(new TableItem(new SimpleStringProperty("Фамилия разработавшего"), new SimpleStringProperty(stamp.getKsStAuthor()))); + list.add(new TableItem(new SimpleStringProperty("Фамилия проверившего"), new SimpleStringProperty(stamp.getKsStCheckedBy()))); + list.add(new TableItem(new SimpleStringProperty("Фамилия тех.контр"), new SimpleStringProperty(stamp.getKsStMfgApprovedBy()))); + list.add(new TableItem(new SimpleStringProperty("Фамилия вып.работу"), new SimpleStringProperty(stamp.getKsStDesigner()))); + list.add(new TableItem(new SimpleStringProperty("Фамилия норм.контр"), new SimpleStringProperty(stamp.getKsStRateOfInspection()))); + list.add(new TableItem(new SimpleStringProperty("Фамилия утверждающего"), new SimpleStringProperty(stamp.getKsStApprovedBy()))); + list.add(new TableItem(new SimpleStringProperty("Дата окончания разработки"), new SimpleStringProperty(stamp.getKsStEndDesignDate()))); + list.add(new TableItem(new SimpleStringProperty("Дата проверки"), new SimpleStringProperty(stamp.getKsStCheckedDate()))); + list.add(new TableItem(new SimpleStringProperty("Дата тех.контр"), new SimpleStringProperty(stamp.getKsStMfgApprovedDate()))); + list.add(new TableItem(new SimpleStringProperty("Дата выполнения"), new SimpleStringProperty(stamp.getKsStExecutionDate()))); + list.add(new TableItem(new SimpleStringProperty("Дата норм.контр"), new SimpleStringProperty(stamp.getKsStRateOfInspectionDate()))); + list.add(new TableItem(new SimpleStringProperty("Дата утверждения"), new SimpleStringProperty(stamp.getKsStApprovedDate()))); + + return FXCollections.observableList(list); + } +} diff --git a/src/main/java/com/idrawings/desktop/controllers/FilesSearchTabController.java b/src/main/java/com/idrawings/desktop/controllers/FilesSearchTabController.java new file mode 100644 index 0000000..49cbad0 --- /dev/null +++ b/src/main/java/com/idrawings/desktop/controllers/FilesSearchTabController.java @@ -0,0 +1,228 @@ +package com.idrawings.desktop.controllers; + +import com.idrawings.desktop.domain.FileSearchCriteria; +import com.idrawings.desktop.domain.TableItem; +import com.idrawings.desktop.service.RestClient; +import com.idrawings.dto.enums.FileFormat; +import com.idrawings.dto.file.LocalFileDTO; +import javafx.beans.property.SimpleBooleanProperty; +import javafx.beans.property.SimpleStringProperty; +import javafx.beans.value.ObservableValue; +import javafx.collections.FXCollections; +import javafx.collections.ListChangeListener; +import javafx.collections.ObservableList; +import javafx.fxml.FXML; +import javafx.scene.control.*; +import javafx.scene.control.cell.CheckBoxListCell; +import javafx.scene.control.cell.PropertyValueFactory; +import javafx.util.Callback; +import jfxtras.labs.scene.control.BigDecimalField; +import org.controlsfx.control.CheckComboBox; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; + +import java.math.BigDecimal; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; +import java.util.*; +import java.util.concurrent.BlockingQueue; +import java.util.concurrent.LinkedBlockingQueue; + +import static java.io.File.listRoots; +import static java.util.stream.Stream.of; + +@Component +public class FilesSearchTabController { + + private static final int FIRST_ELEMENT = 0; + + @Value("${rest.date.template}") + private String dateTemplate; + + @Autowired + private RestClient restClient; + @Autowired + private MainController mainController; + @Autowired + private DocumentSearchController documentSearchController; + + private Map> map = new LinkedHashMap<>(); + + @FXML + private ListView fileList; + @FXML + private TableView fileInfoTable; + @FXML + private TableColumn key, value; + @FXML + private CheckComboBox discMultiCheckBox; + @FXML + private CheckComboBox formatMultiCheckBox; + @FXML + private TextField partOfFileName, partOfFilePath; + @FXML + private DatePicker creationDateFrom, creationDateUntil; + @FXML + private DatePicker lastModifiedDateFrom, lastModifiedDateUntil; + @FXML + private DatePicker lastAccessDateFrom, lastAccessDateUntil; + @FXML + private BigDecimalField fileSizeFrom, fileSizeUntil; + @FXML + private Button index; + + @FXML + private void readData() { + List files = new LinkedList<>(); + for (LocalFileDTO key : map.keySet()) { + if (map.get(key).getValue()) { + files.add(key); + } + } + + restClient.getDataFromFile(files).forEach(f -> documentSearchController.addDrawingToList(f)); + } + + @FXML + private void initialize() { + key.setCellValueFactory(new PropertyValueFactory<>("key")); + value.setCellValueFactory(new PropertyValueFactory<>("value")); + fileList.getSelectionModel().setSelectionMode(SelectionMode.SINGLE); + formatMultiCheckBox.getItems().addAll(FileFormat.getAll()); + formatMultiCheckBox.getCheckModel().check(FIRST_ELEMENT); + discMultiCheckBox.getItems().addAll(of(listRoots()).map(file -> file.getAbsolutePath().substring(0, 1)).sorted().toArray(String[]::new)); + discMultiCheckBox.getCheckModel().check(FIRST_ELEMENT); + fileSizeUntil.setNumber(new BigDecimal(0)); + fileSizeFrom.setNumber(new BigDecimal(0)); + fileSizeFrom.setMinValue(new BigDecimal(0)); + fileSizeUntil.setMinValue(new BigDecimal(0)); + initIndexButton(); + setListeners(); + } + + private void setListeners() { + ObservableList checkedList = fileList.getSelectionModel().getSelectedItems(); + checkedList.addListener((ListChangeListener) c -> { + fileInfoTable.setItems(getInitialTableData(fileList.getSelectionModel().getSelectedItem())); + }); + } + + private ObservableList getInitialTableData(LocalFileDTO selectedFile) { + if (selectedFile == null) { + return FXCollections.emptyObservableList(); + } + List list = new ArrayList<>(); + + list.add(new TableItem(new SimpleStringProperty("ID"), new SimpleStringProperty(selectedFile.getId().toString()))); + list.add(new TableItem(new SimpleStringProperty("Название файла"), new SimpleStringProperty(selectedFile.getName()))); + list.add(new TableItem(new SimpleStringProperty("Формат"), new SimpleStringProperty(selectedFile.getExtension()))); + list.add(new TableItem(new SimpleStringProperty("Путь к файлу"), new SimpleStringProperty(selectedFile.getPath()))); + list.add(new TableItem(new SimpleStringProperty("Размер"), new SimpleStringProperty("151 КБ (154 760 байт)"))); + list.add(new TableItem(new SimpleStringProperty("Владелец"), new SimpleStringProperty(selectedFile.getSize().toString()))); + list.add(new TableItem(new SimpleStringProperty("Дата создания"), new SimpleStringProperty(selectedFile.getCreationDate().toString()))); + list.add(new TableItem(new SimpleStringProperty("Дата изменения"), new SimpleStringProperty(selectedFile.getModifiedDate().toString()))); + list.add(new TableItem(new SimpleStringProperty("Дата открытия"), new SimpleStringProperty(selectedFile.getAccessDate().toString()))); + list.add(new TableItem(new SimpleStringProperty("Программа"), new SimpleStringProperty("Kompac"))); + list.add(new TableItem(new SimpleStringProperty("Тип файла"), new SimpleStringProperty("KОМПАС-Чертеж"))); + list.add(new TableItem(new SimpleStringProperty("Атрибуты"), new SimpleStringProperty("А"))); + + return FXCollections.observableList(list); + } + + @FXML + private void findFiles() { + Collection resultList = restClient.findFiles(getCriteria()); + + mainController.setTotalFilesCount(resultList.size() + ""); + mainController.setTotalFilesSize(resultList.stream().mapToLong(LocalFileDTO::getSize).sum() + ""); + + resultList.forEach(file -> map.put(file, new SimpleBooleanProperty(false))); + fileList.setCellFactory(CheckBoxListCell.forListView(map::get)); + fileList.getItems().addAll(resultList); + } + + private FileSearchCriteria getCriteria() { + FileSearchCriteria criteria = new FileSearchCriteria(); + criteria.setDiscs(discMultiCheckBox.getCheckModel().getCheckedItems()); + criteria.setFormats(formatMultiCheckBox.getCheckModel().getCheckedItems()); + criteria.setPartOfFileName(partOfFileName.getText()); + criteria.setPathOfPFilePath(partOfFilePath.getText()); + criteria.setCreationDateFrom(formatDate(creationDateFrom.getValue())); + criteria.setCreationDateUntil(formatDate(creationDateUntil.getValue())); + criteria.setLastModifiedDateFrom(formatDate(lastModifiedDateFrom.getValue())); + criteria.setLastModifiedDateUntil(formatDate(lastModifiedDateUntil.getValue())); + criteria.setLastAccessDateFrom(formatDate(lastAccessDateFrom.getValue())); + criteria.setLastAccessDateUntil(formatDate(lastAccessDateUntil.getValue())); + criteria.setFileSizeFrom(fileSizeFrom.getNumber()); + criteria.setFileSizeUntil(fileSizeUntil.getNumber()); + return criteria; + } + + private String formatDate(LocalDate date) { + return date == null ? null : date.format(DateTimeFormatter.ofPattern(dateTemplate)); + } + + + @FXML + private void processIndex() { + if (index.getText().equals("Обновить индекс")) { + restClient.updateIndex(); + index.setText(""); + } else { + restClient.createIndex(); + index.setText("Обновить индекс"); + } + } + + private void initIndexButton() { + if (!restClient.getFilesCountInIndex().equals(BigDecimal.ZERO)) { + index.setText("Обновить индекс"); + } else { + index.setText("Создать индекс"); + } + } + + @FXML + private void resetParameters() { + discMultiCheckBox.getCheckModel().clearChecks(); + discMultiCheckBox.getCheckModel().check(FIRST_ELEMENT); + formatMultiCheckBox.getCheckModel().clearChecks(); + formatMultiCheckBox.getCheckModel().check(FIRST_ELEMENT); + partOfFileName.clear(); + partOfFilePath.clear(); + creationDateFrom.setValue(null); + creationDateUntil.setValue(null); + lastAccessDateFrom.setValue(null); + lastAccessDateUntil.setValue(null); + lastModifiedDateFrom.setValue(null); + lastModifiedDateUntil.setValue(null); + fileSizeUntil.setNumber(new BigDecimal(0)); + fileSizeFrom.setNumber(new BigDecimal(0)); + } + + @FXML + private void checkAll() { + fileList.getItems().forEach(e -> map.put(e, new SimpleBooleanProperty(true))); + fileList.getItems().clear(); + fileList.getItems().addAll(map.keySet()); + Callback> itemToBoolean = map::get; + fileList.setCellFactory(CheckBoxListCell.forListView(itemToBoolean)); + mainController.setSelectedFilesCount(fileList.getItems().size() + ""); + } + + @FXML + private void uncheckedAll() { + fileList.getItems().forEach(e -> map.put(e, new SimpleBooleanProperty(false))); + fileList.getItems().clear(); + fileList.getItems().addAll(map.keySet()); + Callback> itemToBoolean = map::get; + fileList.setCellFactory(CheckBoxListCell.forListView(itemToBoolean)); + mainController.setSelectedFilesCount(0 + ""); + } + + @FXML + private void cleanTable() { + fileList.getItems().clear(); + } +} \ No newline at end of file diff --git a/src/main/java/com/idrawings/desktop/controllers/MainController.java b/src/main/java/com/idrawings/desktop/controllers/MainController.java new file mode 100644 index 0000000..bec6fc0 --- /dev/null +++ b/src/main/java/com/idrawings/desktop/controllers/MainController.java @@ -0,0 +1,48 @@ +package com.idrawings.desktop.controllers; + +import com.idrawings.dto.file.LocalFileDTO; +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; +import javafx.fxml.FXML; +import javafx.scene.control.Label; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.List; + +/** + * Created by Admin on 27.05.2017. + */ +@Component +public class MainController { + + private ObservableList localFileObservableList = FXCollections.observableArrayList(); + + @Autowired + private DocumentSearchController documentSearchController; + + @FXML + private Label totalFilesCount; + @FXML + private Label totalFilesSize; + @FXML + private Label selectedFilesCount; + + + public void setTotalFilesCount(String totalFilesCount) { + this.totalFilesCount.setText(totalFilesCount); + } + + public void setTotalFilesSize(String totalFilesSize) { + this.totalFilesSize.setText(totalFilesSize); + } + + public void setSelectedFilesCount(String selectedFilesCount) { + this.selectedFilesCount.setText(selectedFilesCount); + } + + public ObservableList getLocalFileObservableList() { + return localFileObservableList; + } + +} diff --git a/src/main/java/com/idrawings/desktop/domain/FileSearchCriteria.java b/src/main/java/com/idrawings/desktop/domain/FileSearchCriteria.java new file mode 100644 index 0000000..d5ea8bd --- /dev/null +++ b/src/main/java/com/idrawings/desktop/domain/FileSearchCriteria.java @@ -0,0 +1,135 @@ +package com.idrawings.desktop.domain; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; + +import java.math.BigDecimal; +import java.util.List; + +/** + * Created by White Stream on 30.05.2017. + */ +@JsonSerialize +public class FileSearchCriteria { + private List discs; + private List formats; + private String partOfFileName; + private String pathOfPFilePath; + private String creationDateFrom, creationDateUntil; + private String lastModifiedDateFrom, lastModifiedDateUntil; + private String lastAccessDateFrom, lastAccessDateUntil; + private BigDecimal fileSizeFrom, fileSizeUntil; + + public List getDiscs() { + return discs; + } + + public void setDiscs(List discs) { + this.discs = discs; + } + + public List getFormats() { + return formats; + } + + public void setFormats(List formats) { + this.formats = formats; + } + + public String getPartOfFileName() { + return partOfFileName; + } + + public void setPartOfFileName(String partOfFileName) { + this.partOfFileName = partOfFileName; + } + + public String getPathOfPFilePath() { + return pathOfPFilePath; + } + + public void setPathOfPFilePath(String pathOfPFilePath) { + this.pathOfPFilePath = pathOfPFilePath; + } + + public String getCreationDateFrom() { + return creationDateFrom; + } + + public void setCreationDateFrom(String creationDateFrom) { + this.creationDateFrom = creationDateFrom; + } + + public String getCreationDateUntil() { + return creationDateUntil; + } + + public void setCreationDateUntil(String creationDateUntil) { + this.creationDateUntil = creationDateUntil; + } + + public String getLastModifiedDateFrom() { + return lastModifiedDateFrom; + } + + public void setLastModifiedDateFrom(String lastModifiedDateFrom) { + this.lastModifiedDateFrom = lastModifiedDateFrom; + } + + public String getLastModifiedDateUntil() { + return lastModifiedDateUntil; + } + + public void setLastModifiedDateUntil(String lastModifiedDateUntil) { + this.lastModifiedDateUntil = lastModifiedDateUntil; + } + + public String getLastAccessDateFrom() { + return lastAccessDateFrom; + } + + public void setLastAccessDateFrom(String lastAccessDateFrom) { + this.lastAccessDateFrom = lastAccessDateFrom; + } + + public String getLastAccessDateUntil() { + return lastAccessDateUntil; + } + + public void setLastAccessDateUntil(String lastAccessDateUntil) { + this.lastAccessDateUntil = lastAccessDateUntil; + } + + public BigDecimal getFileSizeFrom() { + return fileSizeFrom; + } + + public void setFileSizeFrom(BigDecimal fileSizeFrom) { + this.fileSizeFrom = fileSizeFrom; + } + + public BigDecimal getFileSizeUntil() { + return fileSizeUntil; + } + + public void setFileSizeUntil(BigDecimal fileSizeUntil) { + this.fileSizeUntil = fileSizeUntil; + } + + @Override + public String toString() { + return "FileSearchCriteria{" + + "discs=" + discs + + ", formats=" + formats + + ", partOfFileName='" + partOfFileName + '\'' + + ", pathOfPFilePath='" + pathOfPFilePath + '\'' + + ", creationDateFrom=" + creationDateFrom + + ", creationDateUntil=" + creationDateUntil + + ", lastModifiedDateFrom=" + lastModifiedDateFrom + + ", lastModifiedDateUntil=" + lastModifiedDateUntil + + ", lastAccessDateFrom=" + lastAccessDateFrom + + ", lastAccessDateUntil=" + lastAccessDateUntil + + ", fileSizeFrom=" + fileSizeFrom + + ", fileSizeUntil=" + fileSizeUntil + + '}'; + } +} diff --git a/src/main/java/com/idrawings/desktop/domain/FilterCriteria.java b/src/main/java/com/idrawings/desktop/domain/FilterCriteria.java new file mode 100644 index 0000000..66753b8 --- /dev/null +++ b/src/main/java/com/idrawings/desktop/domain/FilterCriteria.java @@ -0,0 +1,97 @@ +package com.idrawings.desktop.domain; + +/** + * Created by White Stream on 30.05.2017. + */ +public class FilterCriteria { + private String author = ""; + private String checked = ""; + private String code = ""; + private String name = ""; + private String material = ""; + private String organization = ""; + private String weight = ""; + private String text = ""; + private String size = ""; + private String table = ""; + + public String getAuthor() { + return author; + } + + public void setAuthor(String author) { + this.author = author; + } + + public String getChecked() { + return checked; + } + + public void setChecked(String checked) { + this.checked = checked; + } + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getMaterial() { + return material; + } + + public void setMaterial(String material) { + this.material = material; + } + + public String getOrganization() { + return organization; + } + + public void setOrganization(String organization) { + this.organization = organization; + } + + public String getWeight() { + return weight; + } + + public void setWeight(String weight) { + this.weight = weight; + } + + public String getText() { + return text; + } + + public void setText(String text) { + this.text = text; + } + + public String getSize() { + return size; + } + + public void setSize(String size) { + this.size = size; + } + + public String getTable() { + return table; + } + + public void setTable(String table) { + this.table = table; + } +} diff --git a/src/main/java/com/idrawings/desktop/domain/TableItem.java b/src/main/java/com/idrawings/desktop/domain/TableItem.java new file mode 100644 index 0000000..91767c2 --- /dev/null +++ b/src/main/java/com/idrawings/desktop/domain/TableItem.java @@ -0,0 +1,40 @@ +package com.idrawings.desktop.domain; + +import javafx.beans.property.SimpleStringProperty; + +/** + * Created by White Stream on 30.05.2017. + */ +public class TableItem { + private SimpleStringProperty key; + private SimpleStringProperty value; + + public TableItem(SimpleStringProperty key, SimpleStringProperty value) { + this.key = key; + this.value = value; + } + + public String getKey() { + return key.get(); + } + + public SimpleStringProperty keyProperty() { + return key; + } + + public void setKey(String key) { + this.key.set(key); + } + + public String getValue() { + return value.get(); + } + + public SimpleStringProperty valueProperty() { + return value; + } + + public void setValue(String value) { + this.value.set(value); + } +} diff --git a/src/main/java/com/idrawings/desktop/domain/filter/DrawingFilter.java b/src/main/java/com/idrawings/desktop/domain/filter/DrawingFilter.java new file mode 100644 index 0000000..dc1109c --- /dev/null +++ b/src/main/java/com/idrawings/desktop/domain/filter/DrawingFilter.java @@ -0,0 +1,27 @@ +package com.idrawings.desktop.domain.filter; + + +import com.idrawings.desktop.domain.FilterCriteria; +import com.idrawings.desktop.domain.filter.chainmodule.*; +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; + +/** + * Created by White Stream on 16.04.2017. + */ +public class DrawingFilter { + public ObservableList filter(ObservableList drawingsList, FilterCriteria filterCriteria) { + + FilterChain filterChain = new AuthorFilter(new CheckedFilter(new CodeFilter(new WeightFilter(new MaterialFilter(new NameFilter(new OrganizationFilter(new SizeFilter(new TableFilter(new TextFilter(new EndFilter(filterCriteria))))))))))); + + ObservableList result = FXCollections.observableArrayList(); + + for (DocumentDTO documentDTO : drawingsList){ + if (filterChain.filter(documentDTO)) { + result.add(documentDTO); + } + } + + return result; + } +} diff --git a/src/main/java/com/idrawings/desktop/domain/filter/chainmodule/AuthorFilter.java b/src/main/java/com/idrawings/desktop/domain/filter/chainmodule/AuthorFilter.java new file mode 100644 index 0000000..34fe441 --- /dev/null +++ b/src/main/java/com/idrawings/desktop/domain/filter/chainmodule/AuthorFilter.java @@ -0,0 +1,20 @@ +package com.idrawings.desktop.domain.filter.chainmodule; + +import static org.apache.commons.lang3.StringUtils.defaultString; + +/** + * Created by White Stream on 16.04.2017. + */ +public class AuthorFilter extends FilterChain { + + public AuthorFilter(FilterChain nextChain) { + super(nextChain, nextChain.getCriteria()); + } + + @Override + public boolean filter(DocumentDTO documentDTO) { + return defaultString(criteria.getAuthor()).isEmpty() ? + nextChain.filter(documentDTO) : + isFiltered(documentDTO.getStampDTO().getKsStAuthor(), criteria.getAuthor()) && nextChain.filter(documentDTO); + } +} diff --git a/src/main/java/com/idrawings/desktop/domain/filter/chainmodule/CheckedFilter.java b/src/main/java/com/idrawings/desktop/domain/filter/chainmodule/CheckedFilter.java new file mode 100644 index 0000000..dad496e --- /dev/null +++ b/src/main/java/com/idrawings/desktop/domain/filter/chainmodule/CheckedFilter.java @@ -0,0 +1,17 @@ +package com.idrawings.desktop.domain.filter.chainmodule; + +import static org.apache.commons.lang3.StringUtils.defaultString; + +/** + * Created by White Stream on 16.04.2017. + */ +public class CheckedFilter extends FilterChain { + public CheckedFilter(FilterChain nextChain) { + super(nextChain, nextChain.getCriteria()); + } + + @Override + public boolean filter(DocumentDTO documentDTO) { + return defaultString(criteria.getChecked()).isEmpty() ? nextChain.filter(documentDTO) : isFiltered(documentDTO.getStampDTO().getKsStCheckedBy(), criteria.getChecked()) && nextChain.filter(documentDTO); + } +} diff --git a/src/main/java/com/idrawings/desktop/domain/filter/chainmodule/CodeFilter.java b/src/main/java/com/idrawings/desktop/domain/filter/chainmodule/CodeFilter.java new file mode 100644 index 0000000..149ad02 --- /dev/null +++ b/src/main/java/com/idrawings/desktop/domain/filter/chainmodule/CodeFilter.java @@ -0,0 +1,17 @@ +package com.idrawings.desktop.domain.filter.chainmodule; + +import static org.apache.commons.lang3.StringUtils.defaultString; + +/** + * Created by White Stream on 16.04.2017. + */ +public class CodeFilter extends FilterChain { + public CodeFilter(FilterChain nextChain) { + super(nextChain, nextChain.getCriteria()); + } + + @Override + public boolean filter(DocumentDTO documentDTO) { + return defaultString(criteria.getCode()).isEmpty() ? nextChain.filter(documentDTO) : isFiltered(documentDTO.getStampDTO().getKsStDescription(), criteria.getCode()) && nextChain.filter(documentDTO); + } +} diff --git a/src/main/java/com/idrawings/desktop/domain/filter/chainmodule/DocumentDTO.java b/src/main/java/com/idrawings/desktop/domain/filter/chainmodule/DocumentDTO.java new file mode 100644 index 0000000..a917bd2 --- /dev/null +++ b/src/main/java/com/idrawings/desktop/domain/filter/chainmodule/DocumentDTO.java @@ -0,0 +1,29 @@ +package com.idrawings.desktop.domain.filter.chainmodule; + +import java.util.List; + +/** + * Created by White Stream on 30.05.2017. + */ +public class DocumentDTO { + private List documentSizes; + private List documentTables; + private StampDTO stampDTO; + private List documentTexts; + + public List getDocumentSizes() { + return documentSizes; + } + + public List getDocumentTables() { + return documentTables; + } + + public StampDTO getStampDTO() { + return stampDTO; + } + + public List getDocumentTexts() { + return documentTexts; + } +} diff --git a/src/main/java/com/idrawings/desktop/domain/filter/chainmodule/EndFilter.java b/src/main/java/com/idrawings/desktop/domain/filter/chainmodule/EndFilter.java new file mode 100644 index 0000000..a8cb8c5 --- /dev/null +++ b/src/main/java/com/idrawings/desktop/domain/filter/chainmodule/EndFilter.java @@ -0,0 +1,19 @@ +package com.idrawings.desktop.domain.filter.chainmodule; + + +import com.idrawings.desktop.domain.FilterCriteria; + +/** + * Created by White Stream on 16.04.2017. + */ +public class EndFilter extends FilterChain { + + public EndFilter(FilterCriteria criteria) { + super(null, criteria); + } + + @Override + public boolean filter(DocumentDTO documentDTO) { + return true; + } +} diff --git a/src/main/java/com/idrawings/desktop/domain/filter/chainmodule/FilterChain.java b/src/main/java/com/idrawings/desktop/domain/filter/chainmodule/FilterChain.java new file mode 100644 index 0000000..18e6f9b --- /dev/null +++ b/src/main/java/com/idrawings/desktop/domain/filter/chainmodule/FilterChain.java @@ -0,0 +1,27 @@ +package com.idrawings.desktop.domain.filter.chainmodule; + + +import com.idrawings.desktop.domain.FilterCriteria; + +/** + * Created by Admin on 25.02.2017. + */ +public abstract class FilterChain { + protected FilterChain nextChain; + protected FilterCriteria criteria; + + public FilterChain(FilterChain nextChain, FilterCriteria criteria) { + this.nextChain = nextChain; + this.criteria = criteria; + } + + boolean isFiltered(String authorDrawing, String authorFilter){ + return authorDrawing.toLowerCase().contains(authorFilter.toLowerCase()); + } + + public abstract boolean filter(DocumentDTO documentDTO); + + public FilterCriteria getCriteria() { + return criteria; + } +} diff --git a/src/main/java/com/idrawings/desktop/domain/filter/chainmodule/MaterialFilter.java b/src/main/java/com/idrawings/desktop/domain/filter/chainmodule/MaterialFilter.java new file mode 100644 index 0000000..debf1e6 --- /dev/null +++ b/src/main/java/com/idrawings/desktop/domain/filter/chainmodule/MaterialFilter.java @@ -0,0 +1,17 @@ +package com.idrawings.desktop.domain.filter.chainmodule; + +import static org.apache.commons.lang3.StringUtils.defaultString; + +/** + * Created by White Stream on 16.04.2017. + */ +public class MaterialFilter extends FilterChain { + public MaterialFilter(FilterChain nextChain) { + super(nextChain, nextChain.getCriteria()); + } + + @Override + public boolean filter(DocumentDTO documentDTO) { + return defaultString(criteria.getMaterial()).isEmpty() ? nextChain.filter(documentDTO) : isFiltered(documentDTO.getStampDTO().getKsStMaterial(), criteria.getMaterial()) && nextChain.filter(documentDTO); + } +} diff --git a/src/main/java/com/idrawings/desktop/domain/filter/chainmodule/NameFilter.java b/src/main/java/com/idrawings/desktop/domain/filter/chainmodule/NameFilter.java new file mode 100644 index 0000000..6f8890d --- /dev/null +++ b/src/main/java/com/idrawings/desktop/domain/filter/chainmodule/NameFilter.java @@ -0,0 +1,17 @@ +package com.idrawings.desktop.domain.filter.chainmodule; + +import static org.apache.commons.lang3.StringUtils.defaultString; + +/** + * Created by White Stream on 16.04.2017. + */ +public class NameFilter extends FilterChain { + public NameFilter(FilterChain nextChain) { + super(nextChain, nextChain.getCriteria()); + } + + @Override + public boolean filter(DocumentDTO documentDTO) { + return defaultString(criteria.getName()).isEmpty() ? nextChain.filter(documentDTO) : isFiltered(documentDTO.getStampDTO().getKsStPartNumber(), criteria.getName()) && nextChain.filter(documentDTO); + } +} diff --git a/src/main/java/com/idrawings/desktop/domain/filter/chainmodule/OrganizationFilter.java b/src/main/java/com/idrawings/desktop/domain/filter/chainmodule/OrganizationFilter.java new file mode 100644 index 0000000..ff252a1 --- /dev/null +++ b/src/main/java/com/idrawings/desktop/domain/filter/chainmodule/OrganizationFilter.java @@ -0,0 +1,17 @@ +package com.idrawings.desktop.domain.filter.chainmodule; + +import static org.apache.commons.lang3.StringUtils.defaultString; + +/** + * Created by White Stream on 16.04.2017. + */ +public class OrganizationFilter extends FilterChain { + public OrganizationFilter(FilterChain nextChain) { + super(nextChain, nextChain.getCriteria()); + } + + @Override + public boolean filter(DocumentDTO documentDTO) { + return defaultString(criteria.getOrganization()).isEmpty() ? nextChain.filter(documentDTO) : isFiltered(documentDTO.getStampDTO().getKsStCompany(), criteria.getOrganization()) && nextChain.filter(documentDTO); + } +} diff --git a/src/main/java/com/idrawings/desktop/domain/filter/chainmodule/SizeFilter.java b/src/main/java/com/idrawings/desktop/domain/filter/chainmodule/SizeFilter.java new file mode 100644 index 0000000..b13aafb --- /dev/null +++ b/src/main/java/com/idrawings/desktop/domain/filter/chainmodule/SizeFilter.java @@ -0,0 +1,24 @@ +package com.idrawings.desktop.domain.filter.chainmodule; + + +import java.util.List; + +import static org.apache.commons.lang3.StringUtils.defaultString; + +/** + * Created by White Stream on 16.04.2017. + */ +public class SizeFilter extends FilterChain { + public SizeFilter(FilterChain nextChain) { + super(nextChain, nextChain.getCriteria()); + } + + @Override + public boolean filter(DocumentDTO documentDTO) { + return defaultString(criteria.getSize()).isEmpty() ? nextChain.filter(documentDTO) : isFiltered(documentDTO.getDocumentSizes(), criteria.getSize()); + } + + private boolean isFiltered(List sizes, String pattern){ + return sizes.stream().anyMatch(s -> s.toLowerCase().contains(pattern.toLowerCase())); + } +} diff --git a/src/main/java/com/idrawings/desktop/domain/filter/chainmodule/StampDTO.java b/src/main/java/com/idrawings/desktop/domain/filter/chainmodule/StampDTO.java new file mode 100644 index 0000000..af243dd --- /dev/null +++ b/src/main/java/com/idrawings/desktop/domain/filter/chainmodule/StampDTO.java @@ -0,0 +1,42 @@ +package com.idrawings.desktop.domain.filter.chainmodule; + +/** + * Created by White Stream on 30.05.2017. + */ +public class StampDTO { + private String ksStAuthor; + private String ksStCheckedBy; + private String ksStCompany; + private String ksStMass; + private String ksStPartNumber; + private String ksStMaterial; + private String ksStDescription; + + public String getKsStAuthor() { + return ksStAuthor; + } + + public String getKsStCheckedBy() { + return ksStCheckedBy; + } + + public String getKsStCompany() { + return ksStCompany; + } + + public String getKsStMass() { + return ksStMass; + } + + public String getKsStPartNumber() { + return ksStPartNumber; + } + + public String getKsStMaterial() { + return ksStMaterial; + } + + public String getKsStDescription() { + return ksStDescription; + } +} diff --git a/src/main/java/com/idrawings/desktop/domain/filter/chainmodule/TableFilter.java b/src/main/java/com/idrawings/desktop/domain/filter/chainmodule/TableFilter.java new file mode 100644 index 0000000..86262e6 --- /dev/null +++ b/src/main/java/com/idrawings/desktop/domain/filter/chainmodule/TableFilter.java @@ -0,0 +1,21 @@ +package com.idrawings.desktop.domain.filter.chainmodule; + +import java.util.List; + +/** + * Created by White Stream on 16.04.2017. + */ +public class TableFilter extends FilterChain { + public TableFilter(FilterChain nextChain) { + super(nextChain, nextChain.getCriteria()); + } + + @Override + public boolean filter(DocumentDTO documentDTO) { + return criteria.getTable().isEmpty() ? nextChain.filter(documentDTO) : isFiltered(documentDTO.getDocumentTables(), criteria.getTable()); + } + + private boolean isFiltered(List tablesEntries, String pattern){ + return tablesEntries.stream().anyMatch(s -> s.toLowerCase().contains(pattern.toLowerCase())); + } +} diff --git a/src/main/java/com/idrawings/desktop/domain/filter/chainmodule/TextFilter.java b/src/main/java/com/idrawings/desktop/domain/filter/chainmodule/TextFilter.java new file mode 100644 index 0000000..0f512a5 --- /dev/null +++ b/src/main/java/com/idrawings/desktop/domain/filter/chainmodule/TextFilter.java @@ -0,0 +1,21 @@ +package com.idrawings.desktop.domain.filter.chainmodule; + +import java.util.List; + +/** + * Created by White Stream on 16.04.2017. + */ +public class TextFilter extends FilterChain { + public TextFilter(FilterChain nextChain) { + super(nextChain, nextChain.getCriteria()); + } + + @Override + public boolean filter(DocumentDTO documentDTO) { + return criteria.getText().isEmpty() ? nextChain.filter(documentDTO) : isFiltered(documentDTO.getDocumentTexts(), criteria.getText()); + } + + private boolean isFiltered(List texts, String pattern){ + return texts.stream().anyMatch(s -> s.toLowerCase().contains(pattern.toLowerCase())); + } +} diff --git a/src/main/java/com/idrawings/desktop/domain/filter/chainmodule/WeightFilter.java b/src/main/java/com/idrawings/desktop/domain/filter/chainmodule/WeightFilter.java new file mode 100644 index 0000000..3611a31 --- /dev/null +++ b/src/main/java/com/idrawings/desktop/domain/filter/chainmodule/WeightFilter.java @@ -0,0 +1,19 @@ +package com.idrawings.desktop.domain.filter.chainmodule; + +import static org.apache.commons.lang3.StringUtils.defaultString; + +/** + * Created by White Stream on 16.04.2017. + */ +public class WeightFilter extends FilterChain { + public WeightFilter(FilterChain nextChain) { + super(nextChain, nextChain.getCriteria()); + } + + @Override + public boolean filter(DocumentDTO documentDTO) { + return defaultString(criteria.getWeight()).isEmpty() ? + nextChain.filter(documentDTO) : + isFiltered(documentDTO.getStampDTO().getKsStMass(), criteria.getWeight()) && nextChain.filter(documentDTO); + } +} diff --git a/src/main/java/com/idrawings/desktop/service/LocalDateDeserializer.java b/src/main/java/com/idrawings/desktop/service/LocalDateDeserializer.java new file mode 100644 index 0000000..9c2cf6b --- /dev/null +++ b/src/main/java/com/idrawings/desktop/service/LocalDateDeserializer.java @@ -0,0 +1,21 @@ +package com.idrawings.desktop.service; + +import com.fasterxml.jackson.core.JsonParser; +import com.fasterxml.jackson.databind.DeserializationContext; +import com.fasterxml.jackson.databind.JsonDeserializer; + +import java.io.IOException; +import java.time.LocalDate; + +import static com.idrawings.desktop.Main.FORMATTER; + +/** + * Created by White Stream on 30.05.2017. + */ +public class LocalDateDeserializer extends JsonDeserializer { + + @Override + public LocalDate deserialize(JsonParser p, DeserializationContext ctxt) throws IOException { + return LocalDate.parse(p.getValueAsString(), FORMATTER); + } +} \ No newline at end of file diff --git a/src/main/java/com/idrawings/desktop/service/LocalDateSerializer.java b/src/main/java/com/idrawings/desktop/service/LocalDateSerializer.java new file mode 100644 index 0000000..5667702 --- /dev/null +++ b/src/main/java/com/idrawings/desktop/service/LocalDateSerializer.java @@ -0,0 +1,21 @@ +package com.idrawings.desktop.service; + +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.databind.JsonSerializer; +import com.fasterxml.jackson.databind.SerializerProvider; + +import java.io.IOException; +import java.time.LocalDate; + +import static com.idrawings.desktop.Main.FORMATTER; + +/** + * Created by White Stream on 30.05.2017. + */ +public class LocalDateSerializer extends JsonSerializer { + + @Override + public void serialize(LocalDate value, JsonGenerator gen, SerializerProvider serializers) throws IOException { + gen.writeString(value.format(FORMATTER)); + } +} diff --git a/src/main/java/com/idrawings/desktop/service/RestClient.java b/src/main/java/com/idrawings/desktop/service/RestClient.java new file mode 100644 index 0000000..4c7a627 --- /dev/null +++ b/src/main/java/com/idrawings/desktop/service/RestClient.java @@ -0,0 +1,93 @@ +package com.idrawings.desktop.service; + +import com.idrawings.desktop.domain.FileSearchCriteria; +import com.idrawings.dto.document.DocumentDTO; +import com.idrawings.dto.file.LocalFileDTO; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.core.ParameterizedTypeReference; +import org.springframework.http.*; +import org.springframework.stereotype.Service; +import org.springframework.web.client.AsyncRestTemplate; +import org.springframework.web.client.RestTemplate; +import org.springframework.web.util.UriComponentsBuilder; + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.List; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.Future; +import java.util.function.Function; +import java.util.stream.Collectors; + +/** + * Created by White Stream on 13.05.2017. + */ +@Service +public class RestClient { + + @Autowired + private RestTemplate restTemplate; + + private AsyncRestTemplate asyncRestTemplate = new AsyncRestTemplate(); + + private final static String FILE_SEARCH_SERVICE = "http://localhost:5001"; + private final static String KOMPAS_SERVICE = "http://localhost:5500"; + + + public BigDecimal getFilesCountInIndex() { + return restTemplate.getForObject(FILE_SEARCH_SERVICE + "/files/count", BigDecimal.class); + } + + public void createIndex() { + restTemplate.put(FILE_SEARCH_SERVICE + "/files", String.class); + } + + public void updateIndex() { + cleanIndex(); + createIndex(); + } + + private void cleanIndex() { + restTemplate.delete(FILE_SEARCH_SERVICE + "/files"); + } + + public List findFiles(FileSearchCriteria criteria) { + HttpHeaders headers = new HttpHeaders(); + headers.set("Accept", MediaType.APPLICATION_JSON_VALUE); + + ParameterizedTypeReference> typeReference = new ParameterizedTypeReference>() { + }; + + UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(FILE_SEARCH_SERVICE + "/files/search") + .queryParam("discs", criteria.getDiscs().stream().collect(Collectors.joining(","))) + .queryParam("formats", criteria.getFormats().stream().collect(Collectors.joining(","))) + .queryParam("partOfFileName", criteria.getPartOfFileName()) + .queryParam("pathOfPFilePath", criteria.getPathOfPFilePath()) + .queryParam("creationDateFrom", criteria.getCreationDateFrom()) + .queryParam("creationDateUntil", criteria.getCreationDateUntil()) + .queryParam("lastModifiedDateFrom", criteria.getLastModifiedDateFrom()) + .queryParam("lastModifiedDateUntil", criteria.getLastModifiedDateUntil()) + .queryParam("lastAccessDateFrom", criteria.getLastAccessDateFrom()) + .queryParam("lastAccessDateUntil", criteria.getLastAccessDateUntil()) + .queryParam("fileSizeFrom", criteria.getFileSizeFrom()) + .queryParam("fileSizeUntil", criteria.getFileSizeUntil()); + + HttpEntity entity = new HttpEntity<>(headers); + ResponseEntity> rateResponse = restTemplate.exchange(builder.build().encode().toUri(), HttpMethod.GET, entity, typeReference); + + return rateResponse.getBody(); + } + + public List getDataFromFile(List localFileDTO) { + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_JSON); + + List personList = localFileDTO.stream().map(LocalFileDTO::getPath).collect(Collectors.toList()); + + HttpEntity requestEntity = new HttpEntity<>(personList, headers); + ResponseEntity> rateResponse = restTemplate.exchange(KOMPAS_SERVICE + "/drawings", HttpMethod.POST, requestEntity, new ParameterizedTypeReference>() { + }); + + return rateResponse.getBody(); + } +} \ No newline at end of file diff --git a/src/main/java/com/mvp/java/Main.java b/src/main/java/com/mvp/java/Main.java deleted file mode 100644 index 6d12f9e..0000000 --- a/src/main/java/com/mvp/java/Main.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.mvp.java; - -import javafx.application.Application; -import javafx.fxml.FXMLLoader; -import javafx.scene.Parent; -import javafx.scene.Scene; -import javafx.stage.Stage; -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.boot.builder.SpringApplicationBuilder; -import org.springframework.context.ConfigurableApplicationContext; - -@SpringBootApplication -public class Main extends Application { - - private ConfigurableApplicationContext springContext; - private Parent rootNode; - - public static void main(final String[] args) { - Application.launch(args); - } - - @Override - public void init() throws Exception { - springContext = bootstrapSpringApplicationContext(); - FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/fxml/Main.fxml")); - fxmlLoader.setControllerFactory(springContext::getBean); - rootNode = fxmlLoader.load(); - } - - /** - * Bootstraps the Spring container via Spring Boot entry point. Registers - * all the Spring Beans via either @Configuration, @Component during - * scanning. Gets any parameters past into the application from command line - * (if any). - */ - private ConfigurableApplicationContext bootstrapSpringApplicationContext() { - SpringApplicationBuilder builder = new SpringApplicationBuilder(Main.class); - String[] args = getParameters().getRaw().stream().toArray(String[]::new); - builder.headless(false); //needed for TestFX integration testing or eles will get a java.awt.HeadlessException during tests - return builder.run(args); - } - - @Override - public void start(Stage stage) throws Exception { - stage.setScene(new Scene(rootNode)); - stage.setTitle("NASA Missions Database"); - stage.centerOnScreen(); - stage.getScene().getStylesheets().add("style.css"); - stage.show(); - - } - - @Override - public void stop() throws Exception { - springContext.close(); - } - -} - -//Options ... -//gets called for each Controller that you want DI. If you put a println -//in before the return, you can see which Controller gets DI by spring -//via good old anonymous class -// loader.setControllerFactory(new Callback, Object>() { -// @Override -// public Object call(Class clazz) { -// return springContext.getBean(clazz); -// } -// }); -// via lambda -// loader.setControllerFactory((clazz) -> springContext.getBean(clazz)); -// via method reference -// loader.setControllerFactory(springContext::getBean); diff --git a/src/main/java/com/mvp/java/controllers/ConsoleTabController.java b/src/main/java/com/mvp/java/controllers/ConsoleTabController.java deleted file mode 100644 index e9f13d2..0000000 --- a/src/main/java/com/mvp/java/controllers/ConsoleTabController.java +++ /dev/null @@ -1,69 +0,0 @@ -package com.mvp.java.controllers; - -import com.mvp.java.services.MissionsService; -import java.io.IOException; -import javafx.collections.FXCollections; -import javafx.collections.ObservableList; -import javafx.fxml.FXML; -import javafx.scene.control.ListView; -import javafx.scene.control.TextArea; -import javafx.scene.input.MouseEvent; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -@Component -public class ConsoleTabController { - private static final Logger LOG = LoggerFactory.getLogger(ConsoleTabController.class); - - @FXML - private TextArea missionOverviewText; - @FXML - private ListView missionsList; - - @Autowired - MissionsService service; - - public void initialize() { - ObservableList missions = FXCollections.observableArrayList("Apollo", "Shuttle", "Skylab", "BoomMission!"); - missionsList.setItems(missions); - } - - @FXML - private void onMouseClicked(MouseEvent event) { - missionOverviewText.clear(); - String selectedItem = missionsList.getSelectionModel().getSelectedItem(); - - if (selectedItem == null) { - String msg = "User clicked on bad area of list"; - LOG.warn(msg, new NullPointerException(msg)); - return; - } - - missionOverviewText.positionCaret(0); - missionOverviewText.appendText(getInfo(selectedItem)); - } - - public String getInfo(String selectedItem) { - String missionInfo = null; - - try { - missionInfo = service.getMissionInfo(selectedItem); - LOG.info("Sucessfully retrieved mission info for " + selectedItem + "\n"); - } catch (Exception exception) { - LOG.error("Could not retrieve mission info!", exception); - } - - return missionInfo; - } - - public TextArea getMissionOverviewText() { - return missionOverviewText; - } - - public ListView getMissionsList() { - return missionsList; - } - -} diff --git a/src/main/java/com/mvp/java/controllers/MongoLoggerController.java b/src/main/java/com/mvp/java/controllers/MongoLoggerController.java deleted file mode 100644 index 7efc0be..0000000 --- a/src/main/java/com/mvp/java/controllers/MongoLoggerController.java +++ /dev/null @@ -1,234 +0,0 @@ -package com.mvp.java.controllers; - -import com.mvp.java.logging.cellfactory.LogCellFactory; -import com.mvp.java.logging.cellfactory.LogExceptionCellFactory; -import com.mvp.java.logging.LogRecord; -import java.time.DateTimeException; -import java.time.LocalDate; -import java.time.LocalDateTime; -import java.time.LocalTime; -import java.time.format.DateTimeFormatter; -import java.util.Date; -import java.util.List; -import java.util.Objects; -import java.util.Optional; -import javafx.collections.FXCollections; -import javafx.collections.ObservableList; -import javafx.event.ActionEvent; -import javafx.fxml.FXML; -import javafx.scene.control.Button; -import javafx.scene.control.ComboBox; -import javafx.scene.control.DatePicker; -import javafx.scene.control.Label; -import javafx.scene.control.SingleSelectionModel; -import javafx.scene.control.TableColumn; -import javafx.scene.control.TableView; -import javafx.scene.control.TextField; -import javafx.scene.control.cell.PropertyValueFactory; -import javafx.scene.layout.AnchorPane; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.mongodb.core.MongoTemplate; -import org.springframework.data.mongodb.core.query.Criteria; -import org.springframework.data.mongodb.core.query.Query; -import org.springframework.stereotype.Controller; - -@Controller -public class MongoLoggerController { - - private final MongoTemplate template; - private final ObservableList tableViewData = FXCollections.observableArrayList(); - - @FXML - private ComboBox loggerLevelComboBox; - @FXML - private TextField logMessageTextField; - @FXML - private TextField loggerNameTextField; - @FXML - private TextField exceptionTextField; - @FXML - private TextField threadTextField; - @FXML - private Button searchButton; - @FXML - private TableView logTableView; - @FXML - private TableColumn timestampCol; - @FXML - private TableColumn messageCol; - @FXML - private TableColumn loggerCol; - @FXML - private TableColumn exceptionCol; - @FXML - private TableColumn threadCol; - @FXML - private Label totalLogCountLabel; - @FXML - private Button clearAllButton; - @FXML - private DatePicker startDatePicker; - @FXML - private DatePicker endDatePicker; - @FXML - private TextField startTime; - @FXML - private AnchorPane queryAnchorPane; - @FXML - private TextField endTime; - - public void initialize() { - logTableView.setItems(tableViewData); - - loggerLevelComboBox.getItems().addAll("ALL", "TRACE", "DEBUG", "INFO", "WARN", "ERROR"); - loggerLevelComboBox.getSelectionModel().select("INFO"); - timestampCol.setCellValueFactory(new PropertyValueFactory<>("timestamp")); - messageCol.setCellValueFactory(new PropertyValueFactory<>("message")); - loggerCol.setCellValueFactory(new PropertyValueFactory<>("logger")); - exceptionCol.setCellValueFactory(new PropertyValueFactory<>("exception")); - threadCol.setCellValueFactory(new PropertyValueFactory<>("thread")); - - messageCol.setCellFactory(new LogCellFactory(100)); - exceptionCol.setCellFactory(new LogExceptionCellFactory()); - - } - - @Autowired - public MongoLoggerController(MongoTemplate mongoTemplate) { - this.template = mongoTemplate; - } - - @FXML - private void searchAction(ActionEvent event) { - logTableView.getItems().clear(); - Query queryWithCriteria = buildQuery(); - findAllWithCriteria(queryWithCriteria); - } - - private Query buildQuery() { - final Query query = new Query(); - - getUserCriteriaFromTextField(logMessageTextField).ifPresent((String messageSearch) -> { - query.addCriteria(Criteria.where("message").regex(messageSearch, "i")); // i= Case-insensitive - }); - getUserCriteriaFromTextField(loggerNameTextField).ifPresent((String loggerSearch) -> { - query.addCriteria(Criteria.where("logger").regex(loggerSearch, "i")); - }); - getUserCriteriaFromTextField(threadTextField).ifPresent((String threadSearch) -> { - query.addCriteria(Criteria.where("thread").regex(threadSearch, "i")); - }); - getUserCriteriaFromTextField(exceptionTextField).ifPresent((String exceptionSearch) -> { - query.addCriteria(Criteria.where("exception").regex(exceptionSearch, "i")); - }); - getLogLevelUserInput().ifPresent((String logLevelSearch) -> { - if (!logLevelSearch.equals("ALL")) { - query.addCriteria(Criteria.where("level").is(logLevelSearch)); - } - }); - - getDateTimeUserCriteria(startDatePicker, startTime).ifPresent((LocalDateTime fromDateTime) -> { - Criteria dateRangeCriteria = Criteria.where("timestamp").gte(fromDateTime); - getDateTimeUserCriteria(endDatePicker, endTime).ifPresent((LocalDateTime toDateTime) -> { - dateRangeCriteria.lt(toDateTime); - }); - query.addCriteria(dateRangeCriteria); - }); - - return query; - } - - private void findAllWithCriteria(final Query queryWithCriteria) { - final List results = template.find(queryWithCriteria, LogRecord.class, "log"); - writeMongoQueryToLabel(results, queryWithCriteria); - - for (LogRecord log : results) { - tableViewData.add(log); - } - } - - private void writeMongoQueryToLabel(final List results, final Query queryWithCriteria) { - final StringBuffer statusLabelText = new StringBuffer(300); - - statusLabelText.append("Record Count: ") - .append(results.size()) - .append(" [ for query string: ") - .append(queryWithCriteria) - .append("]"); - totalLogCountLabel.setText(statusLabelText.toString()); - } - - private Optional getLogLevelUserInput() { - int selectedIndex = loggerLevelComboBox.getSelectionModel().getSelectedIndex(); - SingleSelectionModel selectionModel = loggerLevelComboBox.getSelectionModel(); - - if (selectionModel.getSelectedIndex() < 0) { - return Optional.empty(); - } - - return Optional.of(selectionModel.getSelectedItem()); - } - - private Optional getUserCriteriaFromTextField(final TextField textField) { - String text = textField.getText(); - if (Objects.nonNull(text) && !text.isEmpty()) { - return Optional.of(text); - } - return Optional.empty(); - } - - private Optional getUserCriteriaFromDateField(final DatePicker dateTimeTextField) { - LocalDate date = dateTimeTextField.getValue(); - if (Objects.nonNull(date)) { - return Optional.of(date); - } - return Optional.empty(); - } - - private Optional getUserCriteriaFromTimeField(final TextField timeTextField) { - String time = timeTextField.getText(); - - if (Objects.nonNull(time) && !time.isEmpty()) { - LocalTime localTime = null; - try { - localTime = LocalTime.parse(time, DateTimeFormatter.ISO_LOCAL_TIME); - } catch (DateTimeException ex) { - totalLogCountLabel.setText("Invalid Time format [" + time + "] specified"); - return Optional.empty(); - } - return Optional.of(localTime); - } - return Optional.empty(); - } - - private Optional getDateTimeUserCriteria(DatePicker datePicker, TextField timeTextField) { - Optional dateOptional = getUserCriteriaFromDateField(datePicker); - Optional timeOptional = getUserCriteriaFromTimeField(timeTextField); - LocalDate date; - LocalTime time; - - if (dateOptional.isPresent()) { - date = dateOptional.get(); - if (timeOptional.isPresent()) { - time = timeOptional.get(); - return Optional.of(date.atTime(time)); - } - return Optional.of(date.atTime(LocalTime.MIDNIGHT)); - } - return Optional.empty(); - } - - @FXML - private void clearAllonAction(ActionEvent event) { - this.logMessageTextField.clear(); - this.loggerNameTextField.clear(); - this.exceptionTextField.clear(); - this.exceptionTextField.clear(); - this.threadTextField.clear(); - this.startDatePicker.setValue(null); - this.endDatePicker.setValue(null); - this.startTime.clear(); - this.endTime.clear(); - this.loggerLevelComboBox.getSelectionModel().clearSelection(); - } - -} diff --git a/src/main/java/com/mvp/java/logging/LogRecord.java b/src/main/java/com/mvp/java/logging/LogRecord.java deleted file mode 100644 index b62365c..0000000 --- a/src/main/java/com/mvp/java/logging/LogRecord.java +++ /dev/null @@ -1,92 +0,0 @@ -package com.mvp.java.logging; - -import java.util.Date; -import java.util.List; -import org.springframework.data.annotation.Id; -import org.springframework.data.mongodb.core.mapping.Document; - -/** - * Used in Mapping the Log record from Java Object to Mongo DBObject and back. - */ -@Document -public class LogRecord { - @Id private String mongoId; - private String level; - private String logger; - private String thread; - private String message; - private String exception; - private List stacktrace; - - private Date timestamp; - - public String getMongoId() { - return mongoId; - } - - public void setMongoId(String mongoId) { - this.mongoId = mongoId; - } - - public String getLevel() { - return level; - } - - public void setLevel(String level) { - this.level = level; - } - - public String getLogger() { - return logger; - } - - public void setLogger(String logger) { - this.logger = logger; - } - - public String getThread() { - return thread; - } - - public void setThread(String thread) { - this.thread = thread; - } - - public String getMessage() { - return message; - } - - public void setMessage(String message) { - this.message = message; - } - - public String getException() { - return exception; - } - - public void setException(String exception) { - this.exception = exception; - } - - public Date getTimestamp() { - return timestamp; - } - - public void setTimestamp(Date timestamp) { - this.timestamp = timestamp; - } - - public List getStacktrace() { - return stacktrace; - } - - public void setStacktrace(List stacktrace) { - this.stacktrace = stacktrace; - } - - @Override - public String toString() { - return "LogRecord{" + "mongoId=" + mongoId + ", level=" + level + ", logger=" + logger + ", thread=" + thread + ", message=" + message + ", exception=" + exception + ", stacktrace=" + stacktrace + ", timestamp=" + timestamp + '}'; - } - -} diff --git a/src/main/java/com/mvp/java/logging/MongoLogAppenderAsync.java b/src/main/java/com/mvp/java/logging/MongoLogAppenderAsync.java deleted file mode 100644 index 5f6968a..0000000 --- a/src/main/java/com/mvp/java/logging/MongoLogAppenderAsync.java +++ /dev/null @@ -1,137 +0,0 @@ -package com.mvp.java.logging; - -import ch.qos.logback.classic.spi.ILoggingEvent; -import ch.qos.logback.classic.spi.IThrowableProxy; -import ch.qos.logback.classic.spi.ThrowableProxyUtil; -import ch.qos.logback.core.CoreConstants; -import ch.qos.logback.core.UnsynchronizedAppenderBase; -import com.mongodb.ConnectionString; -import com.mongodb.async.SingleResultCallback; -import com.mongodb.async.client.MongoClient; -import com.mongodb.async.client.MongoClients; -import com.mongodb.async.client.MongoCollection; -import com.mongodb.async.client.MongoDatabase; -import java.util.Arrays; -import java.util.Date; -import java.util.List; -import java.util.Objects; -import java.util.concurrent.CountDownLatch; -import java.util.concurrent.atomic.AtomicReference; -import org.bson.Document; - -public class MongoLogAppenderAsync extends UnsynchronizedAppenderBase { - - private MongoClient client; - private ConnectionString connectionString; - - @Override - public void start() { - try { - client = MongoClients.create(connectionString); //doesn't actually create any connections yet - waitForInitialConnection(); - super.start(); - } catch (Exception ex) { - addError("The following exception occured when attempting to start Appender", ex); - } - System.out.println("Connection to MongoDB confirmed."); - } - - @Override - public void stop() { - if (client != null) { - client.close(); - } - super.stop(); - } - - public void setConnectionString(String uri) { - if (uri == null) { - addError("MongoDB URI cannot be null. Specify one in the logback config file."); - return; - } - this.connectionString = new ConnectionString(uri); - } - - @Override - protected void append(ILoggingEvent evt) { - if (Objects.isNull(evt)) { - return; - } - Document log = convertEventIntoDocumentForLogging(evt); - MongoDatabase database = client.getDatabase(connectionString.getDatabase()); - MongoCollection logCollection = database.getCollection(connectionString.getCollection()); - logCollection.insertOne(log, callbackWhenFinishedInsert()); - } - - /* - * ************************************************************************* - ******************************* PRIVATE *********************************** - * ************************************************************************* - */ - private Document convertEventIntoDocumentForLogging(ILoggingEvent evt) { - Document log = new Document(); - log.put("logger", evt.getLoggerName()); - log.put("timestamp", new Date(evt.getTimeStamp())); - log.put("level", String.valueOf(evt.getLevel())); - log.put("thread", evt.getThreadName()); - log.put("message", evt.getFormattedMessage()); - - IThrowableProxy throwableProxy = evt.getThrowableProxy(); - if (Objects.nonNull(throwableProxy)) { - addThrowabletoLog(throwableProxy, log); - } - return log; - } - - private void addThrowabletoLog(final IThrowableProxy throwableProxy, final Document log) { - String proxyAsString = ThrowableProxyUtil.asString(throwableProxy); - List stackTrace = Arrays.asList(proxyAsString.replace("\t", ""). - split(CoreConstants.LINE_SEPARATOR)); - final int stackTraceSize = stackTrace.size(); - if (stackTraceSize > 0) { - log.put("exception", stackTrace.get(0)); - } - if (stackTraceSize > 1) { - log.put("stacktrace", stackTrace.subList(1, stackTraceSize)); - } - } - - private void waitForInitialConnection() throws InterruptedException { - final CountDownLatch latch = new CountDownLatch(1); - final AtomicReference callbackThrowable = new AtomicReference<>(); - - System.out.println("++++++++++++++++ MONGO +++++++++++++++++++++++"); - System.out.format("Connecting to Mongo with connection string [%s]\n", connectionString.getConnectionString()); - - client.listDatabaseNames().forEach((dbName) -> { - }, callbackWhenFinishedListingDbNames(latch, callbackThrowable)); - latch.await(); - - if (Objects.nonNull(callbackThrowable.get())) { - System.out.format("Unable to connect to MongoDB. \nError [%s]\n", callbackThrowable.get()); - System.exit(1); - } - } - - /* - * ************************************************************************* - ***************************** CALL BACKS ********************************** - * ************************************************************************* - */ - private SingleResultCallback callbackWhenFinishedInsert() { - return (final Void result, final Throwable thowable) -> { - if (Objects.nonNull(thowable)) { - addWarn("Unable to log message", thowable); - } - }; - } - - private SingleResultCallback callbackWhenFinishedListingDbNames(CountDownLatch latch, AtomicReference callbackThrowable) { - return (final Void result, final Throwable throwable) -> { - if (Objects.nonNull(throwable)) { - callbackThrowable.set(throwable); - } - latch.countDown(); - }; - } -} diff --git a/src/main/java/com/mvp/java/logging/cellfactory/LogCellFactory.java b/src/main/java/com/mvp/java/logging/cellfactory/LogCellFactory.java deleted file mode 100644 index b76f0a7..0000000 --- a/src/main/java/com/mvp/java/logging/cellfactory/LogCellFactory.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.mvp.java.logging.cellfactory; - -import com.mvp.java.logging.LogRecord; -import java.util.Objects; -import javafx.scene.control.Button; -import javafx.scene.control.TableCell; -import javafx.scene.control.TableColumn; -import javafx.util.Callback; - -/** - * Custom CEll Factory to display logging info. with a cell. determine if the - * message is longer than allowed and if so, break it up into in the table - * (without scrolling horizontally) - */ -public class LogCellFactory implements Callback, TableCell> { - final int MAX_CHARS_PER_LINE ; - - public LogCellFactory(int MAX_CHARS_PER_LINE) { - this.MAX_CHARS_PER_LINE = MAX_CHARS_PER_LINE; - } - - @Override - public TableCell call(TableColumn param) { - return new TableCell() { - - @Override - protected void updateItem(String message, boolean isCellEmpty) { - super.updateItem(message, isCellEmpty); - if (Objects.isNull(message) || isCellEmpty) { - setText(""); - return; - } - setText(formatString(message)); - } - }; - } - - private String formatString(String textToFormat) { - StringBuilder text = new StringBuilder(textToFormat); - int positionOfInsert = 0; - for (int currentLineNum = 1; ((text.length() - positionOfInsert) > MAX_CHARS_PER_LINE); currentLineNum++) { - positionOfInsert = MAX_CHARS_PER_LINE * currentLineNum; - text.insert(positionOfInsert, '\n'); - } - return text.toString(); - - } - -} diff --git a/src/main/java/com/mvp/java/logging/cellfactory/LogExceptionCellFactory.java b/src/main/java/com/mvp/java/logging/cellfactory/LogExceptionCellFactory.java deleted file mode 100644 index 0cc9200..0000000 --- a/src/main/java/com/mvp/java/logging/cellfactory/LogExceptionCellFactory.java +++ /dev/null @@ -1,95 +0,0 @@ -package com.mvp.java.logging.cellfactory; - -import com.mvp.java.logging.LogRecord; -import java.util.Objects; -import javafx.event.ActionEvent; -import javafx.event.EventHandler; -import javafx.scene.control.Alert; -import javafx.scene.control.Alert.AlertType; -import javafx.scene.control.Button; -import javafx.scene.control.Label; -import javafx.scene.control.TableCell; -import javafx.scene.control.TableColumn; -import javafx.scene.control.TextArea; -import javafx.scene.layout.GridPane; -import javafx.scene.layout.Priority; -import javafx.util.Callback; - -/** - * Custom CEll Factory to display logging exception info within a cell. - */ -public class LogExceptionCellFactory implements Callback, TableCell> { - - @Override - public TableCell call(TableColumn tableColumn) { - final TableCell cell = new TableCell() { - - @Override - protected void updateItem(String exception, boolean isCellEmpty) { - super.updateItem(exception, isCellEmpty); - - if (Objects.isNull(exception) || isCellEmpty) { - setGraphic(null); - setText(""); - return; - } - LogRecord logRecordItem = (LogRecord) getTableRow().getItem(); - Button exceptionButton = new Button("View"); - exceptionButton.setOnAction(new ButtonHandler(exception, logRecordItem)); - setGraphic(exceptionButton); - setText(""); - } - }; - - return cell; - - } - - private class ButtonHandler implements EventHandler { - - final private String exception; - final private LogRecord selectedItem; - - ButtonHandler(String exception, LogRecord selectedItem) { - this.exception = exception; - this.selectedItem = selectedItem; - } - - @Override - public void handle(ActionEvent event) { - - if (Objects.isNull(selectedItem)) { - return; - } - Alert alert = new Alert(AlertType.INFORMATION); - alert.setTitle("Exception Info"); - alert.setHeaderText(exception); - String stacktrace = String.join("\n", selectedItem.getStacktrace()); - - TextArea stacktraceTextArea = createTextArea(stacktrace); - GridPane expandableStackTrace = createExpandableContent(stacktraceTextArea, alert); - alert.getDialogPane().setExpandableContent(expandableStackTrace); - - alert.showAndWait(); - } - - private GridPane createExpandableContent(TextArea stacktraceTextArea, Alert alert) { - GridPane expandableStackTrace = new GridPane(); - expandableStackTrace.setMaxWidth(Double.MAX_VALUE); - expandableStackTrace.add(new Label("Stacktrace ..."), 0, 0); - expandableStackTrace.add(stacktraceTextArea, 0, 1); - return expandableStackTrace; - } - - private TextArea createTextArea(String stacktrace) { - TextArea stacktraceTextArea = new TextArea(stacktrace); - stacktraceTextArea.setEditable(false); - stacktraceTextArea.setWrapText(true); - stacktraceTextArea.setMaxWidth(Double.MAX_VALUE); - stacktraceTextArea.setMaxHeight(Double.MAX_VALUE); - GridPane.setVgrow(stacktraceTextArea, Priority.ALWAYS); - GridPane.setHgrow(stacktraceTextArea, Priority.ALWAYS); - return stacktraceTextArea; - } - } -} diff --git a/src/main/java/com/mvp/java/services/MissionsService.java b/src/main/java/com/mvp/java/services/MissionsService.java deleted file mode 100644 index c5ccf69..0000000 --- a/src/main/java/com/mvp/java/services/MissionsService.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.mvp.java.services; - -import java.io.BufferedReader; -import java.io.FileNotFoundException; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.stereotype.Service; - -@Service -public class MissionsService { - - @Value(("${specs.dir}")) - private String specsPath; - - public String getMissionInfo(String missionName) throws IOException { - final StringBuilder fileContents = new StringBuilder(2000); - InputStream is = null; - try { - is = this.getClass().getResourceAsStream(specsPath + missionName); - } catch (Exception e) { - throw new FileNotFoundException("unknown mission specified"); - } - - try (BufferedReader br = new BufferedReader(new InputStreamReader(is))) { - String line; - while ((line = br.readLine()) != null) { - fileContents.append(line).append("\n"); - } - } - return fileContents.toString(); - } -} diff --git a/src/main/java/com/mvp/java/spring/config/AppJavaConfig.java b/src/main/java/com/mvp/java/spring/config/AppJavaConfig.java deleted file mode 100644 index b4bcd74..0000000 --- a/src/main/java/com/mvp/java/spring/config/AppJavaConfig.java +++ /dev/null @@ -1,23 +0,0 @@ -/* - * To change this license header, choose License Headers in Project Properties. - * To change this template file, choose Tools | Templates - * and open the template in the editor. - */ -package com.mvp.java.spring.config; - -import java.io.PrintWriter; -import java.io.StringWriter; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.Scope; - -@Configuration -public class AppJavaConfig { - - @Bean(name = "stringPrintWriter") @Scope("prototype") - public PrintWriter printWriter(){ - // useful when dumping stack trace to file - return new PrintWriter(new StringWriter()); - } - -} diff --git a/src/main/java/com/mvp/java/spring/config/MongoConfig.java b/src/main/java/com/mvp/java/spring/config/MongoConfig.java deleted file mode 100644 index b3038e1..0000000 --- a/src/main/java/com/mvp/java/spring/config/MongoConfig.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.mvp.java.spring.config; - -import com.mongodb.MongoClient; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.data.mongodb.MongoDbFactory; -import org.springframework.data.mongodb.core.MongoTemplate; -import org.springframework.data.mongodb.core.SimpleMongoDbFactory; - -@Configuration -public class MongoConfig { - - @Bean - public MongoDbFactory mongoDbFactory() throws Exception { - MongoClient mongoClient = new MongoClient("localhost", 27017); - return new SimpleMongoDbFactory(mongoClient, "test"); - } - - @Bean - public MongoTemplate mongoTemplate() throws Exception { - MongoTemplate mongoTemplate = new MongoTemplate(mongoDbFactory()); - return mongoTemplate; - - } -} diff --git a/src/main/java/outline b/src/main/java/outline deleted file mode 100644 index 5ce3f49..0000000 --- a/src/main/java/outline +++ /dev/null @@ -1,5 +0,0 @@ -Advanced Java Logging with Spring Data and MongoDB -=================================================== -- Problem with File Logging -- Why MongoDB? -- Why Spring Data? \ No newline at end of file diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index c917f22..e68c402 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -1 +1,3 @@ -specs.dir=/specs/ \ No newline at end of file +spring.jackson.serialization.WRITE_DATES_AS_TIMESTAMPS = false +server.port = 5600 +rest.date.template = yyyy-MM-dd diff --git a/src/main/resources/favicon/Icon.png b/src/main/resources/favicon/Icon.png new file mode 100644 index 0000000000000000000000000000000000000000..1b99679f979efe973ffe2646109ccfe6c0aa5675 GIT binary patch literal 19056 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≤Tj3>rkk;&PjmzTB=i-FVyGT%J+R~ zq$l+xh%M#||Ibw$2!Of2r@#p(MUqhUv3>2$71X>)O5oU$g|5VG0^GS9{Osg87g$%V1MrlGl=i2(L2$Y-t8)g2XjT3f^&^&s{gVT(GrD zKGVckhO$t+EOR{9p2lr#L%Y*>t?f^r4g8n@KbJjp8dyADDxYZCe#4i>xKfuuPJ_J3 zeEvW7EIc4g=m%`Z)*gGaL(7x#6Ez4qs!U#rMW_NuBCj>lP2Q{Gl>!BW90Xc7&{;^ z_sPu)Yr2UFlc>C*n|L{Ra1N~vrLjEiru*vDe-hL_wLX{(gMEqq=Q$zV!6X$z{5ibf@IWo5N%6h6@YgwM|Sl$STX%JVMzx~B` zN6#*O;@^}7=71c)Vi{G+1i652oZQ<5tF>WhB+trHHRv1IOgcA6^Vyxm&7^-bEpX)d zWn2%m5nbS8z{AC!W5AQr-%o^uNib*IyQ;sZ&CmlislYIk*ZkkNSWIS4a_Hc%P+9v7 zTD7Q1!4VuDYz|Rb*-ooEPOGv7J2eV|SM>_Im;fKk9Xt*^RZF!NUm9CF+Hg9ZmgS{9 zX^J4GK)%I%_E)d&62{yY6*zj$TL6BqHZY0IpNT^=Xti8+oACY zz>i7N^Gq*sUV34X`|mlznNzh;`a|%2(_Q9WC-y!f^!fz}ldws2(2Wv;wu;*>AwV*G zZ$h_C4LdVyeBbWpaoS&D?%40pZaso$xs)Xw5jGFCimc9!;<;0_s*^~$Gnl0;#Qon8 z0RRNzDFJ6*8e2HFP^g?~*d4cR>$H(p5yTDUYtj3!zEYGva(p+R8b!htnT`iW%Ai~!QG4xsmuzu4 z{6W&+Pq58H#2&EeZMUxAXdFCl8a~dyoqdKKLx*w9^H|O*ZQEx>!ZXt5;Z}jwxlyW% zqm<`{XjW&)4i6DdC;7%S0Km`WURV@xpD--GFm>vsYNol?%G$PH94S#4+kut70_69b zzxk~j7e4vj2ZS-lWS{L1-T|O{)LSnJ1X>6lfAD4IPOZ^yd7L=9bQZw64eR@cdZooH zhZYhNnA`_Djgjq+j>leF4Z=OC&;%i$AA=i8dvZ^x|5*A55~26JH$sRKK3&i^6QEIR zoexYM{1p7gFZ3AGg=H6{~rt-(bc~VdT*fq@-Hnd zzVl-fGmTWss@wJYWMg{NaVGLAH<1&W;xMQo+U>13^h}}UJy+m*n`0DCqf(&_MQje_nO9DB4|oto!f?v zbIZgj_D(J_QmBy|s^g_PRBWGPmgZ35t~ zgGGSC;aQ@qi3|dx4O82OF$Pvwnyjt1g3cZzHl%1HaFaRv$U)Q_h?4Bx>w+G=cc|Cq z_Z}VNa-p-#_e>n)%8_Me$5t3A)X5YYkZn;*b(ph#p0qtq`HJdlp1Gq_)K*7vJ9`mg z53W`;Jq773R&f~6_mqF}y}uW>;8|0^(RS8l;(jv!?CIaCU3QOv+mDtGH)c^x6NUz{)fbg>{;ChnnT` zveV%NhDIYrd9lFC=}~IsAsY3amK#c4^+hl-!v%K60NAUJZauQJ8tNOdr&L$&&g2@9>SS*c3`aT)I$rbhzca#>nzF1~Y zq008*GNpWjbZ#A4Xt17XawgN{xlDsI(x=h3sIKOie`TENN`cDqFw3W>@k|cv6dhmC zHa27nh+F}oEWFc)f4u#`UnjeMO=914JJ;~Kp6&Ol`z8h4AQ7XsYjeS=YbGvSy#AU@ zyExLWdNbv=*pm_#+9;a7qT)&BT)|0KaPPY2KudGdH=*Q3�R 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/fxml/Main.fxml b/src/main/resources/fxml/Main.fxml deleted file mode 100644 index f646b6a..0000000 --- a/src/main/resources/fxml/Main.fxml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/src/main/resources/fxml/MainContainer.fxml b/src/main/resources/fxml/MainContainer.fxml new file mode 100644 index 0000000..3fd3236 --- /dev/null +++ b/src/main/resources/fxml/MainContainer.fxml @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/fxml/outline b/src/main/resources/fxml/outline deleted file mode 100644 index e5d649a..0000000 --- a/src/main/resources/fxml/outline +++ /dev/null @@ -1,18 +0,0 @@ -TestFX 3 ( extends GuiTest , @Override getRootNode()) -What is TestFX 4? - - more in line with JavaFX bootstrapping (extends ApplicationTest) - - ApplicationTest extends FxRobot (clickon, write , drag etc ..sim user actions ) - implements ApplicationFixture (init, start, stop) - - launch(Class ..) - - can use othertesting frameworks, not just Junit - - new node query API. - - Java 8 lambdas - - headless testing using Monocle (thus can use on CI server configurations ) - -POM - alpha 4.0.4 March 2016 (> 1 year) -- SpringApplicationBuilder.headless(false) - - public static void verifyThat(NodeQuery nodeQuery, - Predicate nodePredicate) { - verifyThatImpl(emptyReason(), toNode(nodeQuery), toNodeMatcher(nodePredicate)); - } diff --git a/src/main/resources/fxml/tabs/ConsoleTab.fxml b/src/main/resources/fxml/tabs/ConsoleTab.fxml deleted file mode 100644 index f36ff91..0000000 --- a/src/main/resources/fxml/tabs/ConsoleTab.fxml +++ /dev/null @@ -1,63 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/main/resources/fxml/tabs/DrawingsInfoTab.fxml b/src/main/resources/fxml/tabs/DrawingsInfoTab.fxml new file mode 100644 index 0000000..84e4593 --- /dev/null +++ b/src/main/resources/fxml/tabs/DrawingsInfoTab.fxml @@ -0,0 +1,181 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/fxml/tabs/MongoLoggerTab.fxml b/src/main/resources/fxml/tabs/MongoLoggerTab.fxml deleted file mode 100644 index a412e83..0000000 --- a/src/main/resources/fxml/tabs/MongoLoggerTab.fxml +++ /dev/null @@ -1,56 +0,0 @@ - - - - - - - - - - - - - - - - -