From a7ceebb7c5e41f7a9df9c99a26850df8bc2061e0 Mon Sep 17 00:00:00 2001 From: Anton Romanov Date: Fri, 26 Apr 2019 13:02:59 +0400 Subject: [PATCH 01/45] #first try to show index page --- build.gradle | 13 +- src/main/resources/templates/vue.html | 228 ++++++++++++++++++++++++++ 2 files changed, 236 insertions(+), 5 deletions(-) create mode 100644 src/main/resources/templates/vue.html diff --git a/build.gradle b/build.gradle index 38de2c7..b5f3c4e 100644 --- a/build.gradle +++ b/build.gradle @@ -116,11 +116,14 @@ dependencies { compile group: 'org.apache.commons', name: 'commons-lang3', version: '3.7' - compile group: 'org.webjars', name: 'bootstrap', version: '4.1.0' - compile group: 'org.webjars', name: 'bootstrap-select', version: '1.13.3' - compile group: 'org.webjars', name: 'jquery', version: '3.3.1-1' - compile group: 'org.webjars.npm', name: 'jquery.easing', version: '1.4.1' - compile group: 'org.webjars', name: 'font-awesome', version: '4.7.0' + compile group: 'org.webjars', name: 'font-awesome', version: '5.8.1' + compile group: 'org.webjars', name: 'bootstrap', version: '4.1.3' + compile group: 'org.webjars.npm', name: 'vue', version: '2.6.9' + compile group: 'org.webjars.npm', name: 'vuex', version: '3.1.0' + compile group: 'org.webjars.npm', name: 'vue-router', version: '3.0.2' + compile group: 'org.webjars.npm', name: 'http-vue-loader', version: '1.3.5' + compile group: 'org.webjars.npm', name: 'axios', version: '0.18.0' + compile group: 'io.springfox', name: 'springfox-swagger2', version: '2.6.0' compile group: 'io.springfox', name: 'springfox-swagger-ui', version: '2.6.0' diff --git a/src/main/resources/templates/vue.html b/src/main/resources/templates/vue.html new file mode 100644 index 0000000..32c44b2 --- /dev/null +++ b/src/main/resources/templates/vue.html @@ -0,0 +1,228 @@ + + + + + NG-Tracker + + + + + + + + + + + + +
+
+ +
+
+
+
+
+ +
+
+ +
+
+ +
+
+

Статьи

+

+
+
+
+ +
+
+ +
+
+ +
+
+

Гранты

+

+
+
+
+ +
+
+ +
+
+ +
+
+

Проекты

+

+
+
+
+ +
+
+ +
+
+ +
+
+

Конференции

+

+
+
+
+ +
+
+ +
+
+ +
+
+

Команда

+

+
+
+
+ +
+
+ +
+
+ +
+
+

Работа со студентами

+

+
+
+
+ +
+
+ +
+
+ +
+
+

Задачи

+

+
+
+
+ +
+
+ +
+
+ +
+
+

Карьера

+

+
+
+
+ +
+
+ +
+
+ +
+
+

Прочее

+

+
+
+
+
+
+
+
+
+
+ {{ message }} +
+
+
+
+
+ + + + + + + + + + \ No newline at end of file -- 2.25.1 From ae102d64667dd0b9308ba5e17c259cfa216e9fbc Mon Sep 17 00:00:00 2001 From: Anton Romanov Date: Fri, 26 Apr 2019 13:37:24 +0400 Subject: [PATCH 02/45] #fix styles --- src/main/resources/templates/vue.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/templates/vue.html b/src/main/resources/templates/vue.html index 32c44b2..a201d9c 100644 --- a/src/main/resources/templates/vue.html +++ b/src/main/resources/templates/vue.html @@ -3,8 +3,8 @@ NG-Tracker - + -- 2.25.1 From ac88ef2704cb6e17720d5fe1d9dc75b2b842a695 Mon Sep 17 00:00:00 2001 From: Anton Romanov Date: Fri, 26 Apr 2019 14:42:44 +0400 Subject: [PATCH 03/45] add dependencies, fix html --- .../core/controller/AdviceController.java | 17 -- .../index/controller/IndexController.java | 23 -- .../core-components/app-messages-item.vue | 42 ++++ .../static/core-components/app-messages.vue | 26 ++ .../resources/static/core-components/app.vue | 226 ++++++++++++++++++ .../static/core-components/page-not-found.vue | 10 + src/main/resources/static/js/app-axios.js | 57 +++++ src/main/resources/static/js/app-config.js | 29 +++ .../resources/static/js/app-vue-loader.js | 18 ++ src/main/resources/static/js/app.js | 62 +++++ src/main/resources/templates/vue.html | 211 +--------------- 11 files changed, 477 insertions(+), 244 deletions(-) delete mode 100644 src/main/java/ru/ulstu/index/controller/IndexController.java create mode 100644 src/main/resources/static/core-components/app-messages-item.vue create mode 100644 src/main/resources/static/core-components/app-messages.vue create mode 100644 src/main/resources/static/core-components/app.vue create mode 100644 src/main/resources/static/core-components/page-not-found.vue create mode 100644 src/main/resources/static/js/app-axios.js create mode 100644 src/main/resources/static/js/app-config.js create mode 100644 src/main/resources/static/js/app-vue-loader.js create mode 100644 src/main/resources/static/js/app.js diff --git a/src/main/java/ru/ulstu/core/controller/AdviceController.java b/src/main/java/ru/ulstu/core/controller/AdviceController.java index 27ba6c9..4a6bee0 100644 --- a/src/main/java/ru/ulstu/core/controller/AdviceController.java +++ b/src/main/java/ru/ulstu/core/controller/AdviceController.java @@ -6,7 +6,6 @@ import org.springframework.validation.FieldError; import org.springframework.web.bind.MethodArgumentNotValidException; import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.bind.annotation.ExceptionHandler; -import org.springframework.web.bind.annotation.ModelAttribute; import ru.ulstu.core.error.EntityIdIsNullException; import ru.ulstu.core.model.ErrorConstants; import ru.ulstu.core.model.response.Response; @@ -20,7 +19,6 @@ import ru.ulstu.user.error.UserNotActivatedException; import ru.ulstu.user.error.UserNotFoundException; import ru.ulstu.user.error.UserPasswordsNotValidOrNotMatchException; import ru.ulstu.user.error.UserResetKeyError; -import ru.ulstu.user.service.UserService; import java.util.Set; import java.util.stream.Collectors; @@ -28,21 +26,6 @@ import java.util.stream.Collectors; @ControllerAdvice public class AdviceController { private final Logger log = LoggerFactory.getLogger(AdviceController.class); - private final UserService userService; - - public AdviceController(UserService userService) { - this.userService = userService; - } - - @ModelAttribute("currentUser") - public String getCurrentUser() { - return userService.getCurrentUser().getUserAbbreviate(); - } - - @ModelAttribute("flashMessage") - public String getFlashMessage() { - return null; - } private Response handleException(ErrorConstants error) { log.warn(error.toString()); diff --git a/src/main/java/ru/ulstu/index/controller/IndexController.java b/src/main/java/ru/ulstu/index/controller/IndexController.java deleted file mode 100644 index f6ab100..0000000 --- a/src/main/java/ru/ulstu/index/controller/IndexController.java +++ /dev/null @@ -1,23 +0,0 @@ -package ru.ulstu.index.controller; - -import org.springframework.stereotype.Controller; -import org.springframework.ui.ModelMap; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import ru.ulstu.core.controller.AdviceController; -import ru.ulstu.user.service.UserService; -import springfox.documentation.annotations.ApiIgnore; - -@Controller() -@RequestMapping(value = "/index") -@ApiIgnore -public class IndexController extends AdviceController { - public IndexController(UserService userService) { - super(userService); - } - - @GetMapping - public void currentUser(ModelMap modelMap) { - //нужен здесь для добавления параметров на стартовой странице - } -} diff --git a/src/main/resources/static/core-components/app-messages-item.vue b/src/main/resources/static/core-components/app-messages-item.vue new file mode 100644 index 0000000..8d7f49c --- /dev/null +++ b/src/main/resources/static/core-components/app-messages-item.vue @@ -0,0 +1,42 @@ + + + \ No newline at end of file diff --git a/src/main/resources/static/core-components/app-messages.vue b/src/main/resources/static/core-components/app-messages.vue new file mode 100644 index 0000000..261b464 --- /dev/null +++ b/src/main/resources/static/core-components/app-messages.vue @@ -0,0 +1,26 @@ + + + \ No newline at end of file diff --git a/src/main/resources/static/core-components/app.vue b/src/main/resources/static/core-components/app.vue new file mode 100644 index 0000000..aa81216 --- /dev/null +++ b/src/main/resources/static/core-components/app.vue @@ -0,0 +1,226 @@ + + + \ No newline at end of file diff --git a/src/main/resources/static/core-components/page-not-found.vue b/src/main/resources/static/core-components/page-not-found.vue new file mode 100644 index 0000000..88d7672 --- /dev/null +++ b/src/main/resources/static/core-components/page-not-found.vue @@ -0,0 +1,10 @@ + \ No newline at end of file diff --git a/src/main/resources/static/js/app-axios.js b/src/main/resources/static/js/app-axios.js new file mode 100644 index 0000000..081945a --- /dev/null +++ b/src/main/resources/static/js/app-axios.js @@ -0,0 +1,57 @@ +/* global axios */ + +(function umd(root, factory) { + if (typeof module === 'object' && typeof exports === 'object') + module.exports = factory(); + else if (typeof define === 'function' && define.amd) + define([], factory); + else + root.axiosEx = factory(); +})(this, function factory() { + 'use strict'; + + var axiosConfig = { + headers: { + 'Content-Type': 'application/json;charset=UTF-8', + "Access-Control-Allow-Origin": "*" + } + }; + + function errorHandler(result, callback) { + var data = result.data; + if (callback) { + callback(data); + } + } + + function axiosGet(url, resolv, reject) { + axios.get(url) + .then(function (result) { + errorHandler(result, resolv, reject); + }) + .catch(function (error) { + setTimeout(function () { + throw Error(error); + } + ); + }); + } + + function axiosPost(url, data, resolv, reject) { + axios.post(url, JSON.stringify(data), axiosConfig) + .then(function (result) { + errorHandler(result, resolv, reject); + }) + .catch(function (error) { + setTimeout(function () { + throw Error(error); + } + ); + }); + } + + return { + get: axiosGet, + post: axiosPost + }; +}); \ No newline at end of file diff --git a/src/main/resources/static/js/app-config.js b/src/main/resources/static/js/app-config.js new file mode 100644 index 0000000..3e6fdf2 --- /dev/null +++ b/src/main/resources/static/js/app-config.js @@ -0,0 +1,29 @@ +(function umd(root, factory) { + if (typeof module === 'object' && typeof exports === 'object') + module.exports = factory(); + else if (typeof define === 'function' && define.amd) + define([], factory); + else + root.appConfig = factory(); +})(this, function factory() { + 'use strict'; + + var contextPath = ""; + var apiVersion = ""; + var basePath = contextPath + apiVersion; + + var appVersion = "@@version"; + var resourcesTimestamp = "?v=@@timestamp"; + + var getOwl = basePath + "/get-owl"; + var getTables = basePath + "/get-tables"; + var makeIntegration = basePath + "/make-integration"; + + return { + version: appVersion, + timestamp: resourcesTimestamp, + owl: getOwl, + tables: getTables, + integration: makeIntegration + }; +}); \ No newline at end of file diff --git a/src/main/resources/static/js/app-vue-loader.js b/src/main/resources/static/js/app-vue-loader.js new file mode 100644 index 0000000..fc855e2 --- /dev/null +++ b/src/main/resources/static/js/app-vue-loader.js @@ -0,0 +1,18 @@ +/* global httpVueLoader, appConfig */ + +(function umd(root, factory) { + if (typeof module === 'object' && typeof exports === 'object') + module.exports = factory(); + else if (typeof define === 'function' && define.amd) + define([], factory); + else + root.httpVueLoaderEx = factory(); +})(this, function factory() { + 'use strict'; + + function httpVueLoaderEx(url, name) { + return httpVueLoader(url + appConfig.timestamp, name); + } + + return httpVueLoaderEx; +}); \ No newline at end of file diff --git a/src/main/resources/static/js/app.js b/src/main/resources/static/js/app.js new file mode 100644 index 0000000..ea0c20d --- /dev/null +++ b/src/main/resources/static/js/app.js @@ -0,0 +1,62 @@ +/* global Vue, VueRouter, Vuex, httpVueLoaderEx */ + +var router = new VueRouter({ + linkActiveClass: "active", + linkExactActiveClass: "", + mode: "history", + routes: [ + { + path: "/", component: httpVueLoaderEx("/core-components/integration-main.vue", "Integration") + }, + { + path: "/*", component: httpVueLoaderEx("/core-components/page-not-found.vue", "PageNotFound") + } + ] +}); + +var store = new Vuex.Store({ + state: { + messages: [] + }, + mutations: { + addMessage: function (state, message) { + state.messages.push({ + id: state.messages.length === 0 ? 0 : state.messages[state.messages.length - 1], + text: message.text, + type: message.type || "info" + }); + }, + removeMessage: function (state, messageId) { + if (messageId < 0 || messageId >= state.messages.length) { + return; + } + state.messages.splice(messageId, 1); + } + }, + actions: { + addInfoMessage: function (context, message) { + context.commit("addMessage", message); + }, + addSuccessMessage: function (context, message) { + context.commit("addMessage", {text: message, type: "success"}); + }, + addWarningMessage: function (context, message) { + context.commit("addMessage", {text: message, type: "warning"}); + }, + addDangerMessage: function (context, message) { + context.commit("addMessage", {text: message, type: "danger"}); + }, + removeMessage: function (context, messageId) { + context.commit("removeMessage", messageId); + } + } +}); + +new Vue({ + el: "#integration-app", + router: router, + store: store, + components: { + "app": httpVueLoaderEx("/core-components/app.vue") + } +}); \ No newline at end of file diff --git a/src/main/resources/templates/vue.html b/src/main/resources/templates/vue.html index a201d9c..c8fd30b 100644 --- a/src/main/resources/templates/vue.html +++ b/src/main/resources/templates/vue.html @@ -14,215 +14,18 @@ - -
-
- -
-
-
-
-
- -
-
- -
-
- -
-
-

Статьи

-

-
-
-
- -
-
- -
-
- -
-
-

Гранты

-

-
-
-
- -
-
- -
-
- -
-
-

Проекты

-

-
-
-
- -
-
- -
-
- -
-
-

Конференции

-

-
-
-
- -
-
- -
-
- -
-
-

Команда

-

-
-
-
- -
-
- -
-
- -
-
-

Работа со студентами

-

-
-
-
- -
-
- -
-
- -
-
-

Задачи

-

-
-
-
- -
-
- -
-
- -
-
-

Карьера

-

-
-
-
- -
-
- -
-
- -
-
-

Прочее

-

-
-
-
-
-
-
-
-
-
- {{ message }} -
-
-
-
+
+
- + - - + + + + \ No newline at end of file -- 2.25.1 From a4cbb3e3df7134008a8f23082dcca4b37b09da0f Mon Sep 17 00:00:00 2001 From: Anton Romanov Date: Tue, 30 Apr 2019 17:36:25 +0400 Subject: [PATCH 04/45] #show paper list --- build.gradle | 2 +- .../MailTemplateConfiguration.java | 12 - .../ulstu/configuration/MvcConfiguration.java | 28 -- .../core/controller/ForwardingController.java | 15 + .../static/core-components/app-index.vue | 154 +++++++ .../resources/static/core-components/app.vue | 148 +------ .../static/core-components/page-not-found.vue | 2 +- .../{templates/vue.html => static/index.html} | 3 +- src/main/resources/static/js/app-axios.js | 12 +- src/main/resources/static/js/app-config.js | 6 +- src/main/resources/static/js/app.js | 7 +- .../resources/static/papers/paper-item.vue | 22 + .../resources/static/papers/paper-list.vue | 31 ++ src/main/resources/templates/activate.html | 40 -- .../resources/templates/admin/commits.html | 28 -- .../resources/templates/admin/userList.html | 24 -- .../templates/admin/userSessions.html | 24 -- .../templates/conferences/conference.html | 204 --------- .../templates/conferences/conferences.html | 62 --- .../templates/conferences/dashboard.html | 148 ------- .../fragments/confDashboardFragment.html | 28 -- .../fragments/confLineFragment.html | 26 -- .../fragments/confNavigationFragment.html | 29 -- src/main/resources/templates/default.html | 151 ------- src/main/resources/templates/error/403.html | 21 - src/main/resources/templates/error/404.html | 21 - src/main/resources/templates/error/500.html | 21 - .../fragments/noRecordsFragment.html | 17 - .../resources/templates/grants/dashboard.html | 25 -- .../fragments/grantDashboardFragment.html | 21 - .../grants/fragments/grantLineFragment.html | 22 - .../fragments/grantNavigationFragment.html | 26 -- .../grants/fragments/grantStatusFragment.html | 31 -- .../resources/templates/grants/grant.html | 279 ------------- .../resources/templates/grants/grants.html | 37 -- src/main/resources/templates/index.html | 146 ------- src/main/resources/templates/load.html | 42 -- src/main/resources/templates/login.html | 43 -- .../resources/templates/papers/dashboard.html | 26 -- .../fragments/paperDashboardFragment.html | 27 -- .../fragments/paperFilesListFragment.html | 46 --- .../papers/fragments/paperLineFragment.html | 23 -- .../fragments/paperNavigationFragment.html | 27 -- .../papers/fragments/paperStatusFragment.html | 37 -- .../resources/templates/papers/paper.html | 387 ------------------ .../resources/templates/papers/papers.html | 61 --- .../templates/projects/dashboard.html | 24 -- .../fragments/projectDashboardFragment.html | 18 - .../fragments/projectLineFragment.html | 22 - .../fragments/projectNavigationFragment.html | 26 -- .../fragments/projectStatusFragment.html | 31 -- .../resources/templates/projects/project.html | 151 ------- .../templates/projects/projects.html | 35 -- src/main/resources/templates/reset.html | 77 ---- .../resources/templates/resetRequest.html | 57 --- .../templates/students/dashboard.html | 26 -- .../fragments/taskDashboardFragment.html | 24 -- .../students/fragments/taskLineFragment.html | 22 - .../fragments/taskNavigationFragment.html | 25 -- .../fragments/taskStatusFragment.html | 25 -- .../resources/templates/students/task.html | 146 ------- .../resources/templates/students/tasks.html | 71 ---- src/main/resources/templates/timeline.html | 38 -- 63 files changed, 249 insertions(+), 3161 deletions(-) delete mode 100644 src/main/java/ru/ulstu/configuration/MvcConfiguration.java create mode 100644 src/main/java/ru/ulstu/core/controller/ForwardingController.java create mode 100644 src/main/resources/static/core-components/app-index.vue rename src/main/resources/{templates/vue.html => static/index.html} (92%) create mode 100644 src/main/resources/static/papers/paper-item.vue create mode 100644 src/main/resources/static/papers/paper-list.vue delete mode 100644 src/main/resources/templates/activate.html delete mode 100644 src/main/resources/templates/admin/commits.html delete mode 100644 src/main/resources/templates/admin/userList.html delete mode 100644 src/main/resources/templates/admin/userSessions.html delete mode 100644 src/main/resources/templates/conferences/conference.html delete mode 100644 src/main/resources/templates/conferences/conferences.html delete mode 100644 src/main/resources/templates/conferences/dashboard.html delete mode 100644 src/main/resources/templates/conferences/fragments/confDashboardFragment.html delete mode 100644 src/main/resources/templates/conferences/fragments/confLineFragment.html delete mode 100644 src/main/resources/templates/conferences/fragments/confNavigationFragment.html delete mode 100644 src/main/resources/templates/default.html delete mode 100644 src/main/resources/templates/error/403.html delete mode 100644 src/main/resources/templates/error/404.html delete mode 100644 src/main/resources/templates/error/500.html delete mode 100644 src/main/resources/templates/fragments/noRecordsFragment.html delete mode 100644 src/main/resources/templates/grants/dashboard.html delete mode 100644 src/main/resources/templates/grants/fragments/grantDashboardFragment.html delete mode 100644 src/main/resources/templates/grants/fragments/grantLineFragment.html delete mode 100644 src/main/resources/templates/grants/fragments/grantNavigationFragment.html delete mode 100644 src/main/resources/templates/grants/fragments/grantStatusFragment.html delete mode 100644 src/main/resources/templates/grants/grant.html delete mode 100644 src/main/resources/templates/grants/grants.html delete mode 100644 src/main/resources/templates/index.html delete mode 100644 src/main/resources/templates/load.html delete mode 100644 src/main/resources/templates/login.html delete mode 100644 src/main/resources/templates/papers/dashboard.html delete mode 100644 src/main/resources/templates/papers/fragments/paperDashboardFragment.html delete mode 100644 src/main/resources/templates/papers/fragments/paperFilesListFragment.html delete mode 100644 src/main/resources/templates/papers/fragments/paperLineFragment.html delete mode 100644 src/main/resources/templates/papers/fragments/paperNavigationFragment.html delete mode 100644 src/main/resources/templates/papers/fragments/paperStatusFragment.html delete mode 100644 src/main/resources/templates/papers/paper.html delete mode 100644 src/main/resources/templates/papers/papers.html delete mode 100644 src/main/resources/templates/projects/dashboard.html delete mode 100644 src/main/resources/templates/projects/fragments/projectDashboardFragment.html delete mode 100644 src/main/resources/templates/projects/fragments/projectLineFragment.html delete mode 100644 src/main/resources/templates/projects/fragments/projectNavigationFragment.html delete mode 100644 src/main/resources/templates/projects/fragments/projectStatusFragment.html delete mode 100644 src/main/resources/templates/projects/project.html delete mode 100644 src/main/resources/templates/projects/projects.html delete mode 100644 src/main/resources/templates/reset.html delete mode 100644 src/main/resources/templates/resetRequest.html delete mode 100644 src/main/resources/templates/students/dashboard.html delete mode 100644 src/main/resources/templates/students/fragments/taskDashboardFragment.html delete mode 100644 src/main/resources/templates/students/fragments/taskLineFragment.html delete mode 100644 src/main/resources/templates/students/fragments/taskNavigationFragment.html delete mode 100644 src/main/resources/templates/students/fragments/taskStatusFragment.html delete mode 100644 src/main/resources/templates/students/task.html delete mode 100644 src/main/resources/templates/students/tasks.html delete mode 100644 src/main/resources/templates/timeline.html diff --git a/build.gradle b/build.gradle index b5f3c4e..494eebf 100644 --- a/build.gradle +++ b/build.gradle @@ -116,7 +116,7 @@ dependencies { compile group: 'org.apache.commons', name: 'commons-lang3', version: '3.7' - compile group: 'org.webjars', name: 'font-awesome', version: '5.8.1' + compile group: 'org.webjars', name: 'font-awesome', version: '4.7.0' compile group: 'org.webjars', name: 'bootstrap', version: '4.1.3' compile group: 'org.webjars.npm', name: 'vue', version: '2.6.9' compile group: 'org.webjars.npm', name: 'vuex', version: '3.1.0' diff --git a/src/main/java/ru/ulstu/configuration/MailTemplateConfiguration.java b/src/main/java/ru/ulstu/configuration/MailTemplateConfiguration.java index addf7ac..6cf3b11 100644 --- a/src/main/java/ru/ulstu/configuration/MailTemplateConfiguration.java +++ b/src/main/java/ru/ulstu/configuration/MailTemplateConfiguration.java @@ -17,7 +17,6 @@ public class MailTemplateConfiguration { final SpringTemplateEngine templateEngine = new SpringTemplateEngine(); templateEngine.addTemplateResolver(templateResolver); templateEngine.addTemplateResolver(emailTemplateResolver()); - templateEngine.addTemplateResolver(mvcTemplateResolver()); templateEngine.addDialect(new LayoutDialect()); templateEngine.addDialect(sec); return templateEngine; @@ -32,15 +31,4 @@ public class MailTemplateConfiguration { emailTemplateResolver.setCharacterEncoding(StandardCharsets.UTF_8.name()); return emailTemplateResolver; } - - public ClassLoaderTemplateResolver mvcTemplateResolver() { - ClassLoaderTemplateResolver emailTemplateResolver = new ClassLoaderTemplateResolver(); - emailTemplateResolver.setPrefix("templates"); - emailTemplateResolver.setTemplateMode("HTML5"); - emailTemplateResolver.setSuffix(".html"); - emailTemplateResolver.setOrder(2); - emailTemplateResolver.setCharacterEncoding(StandardCharsets.UTF_8.name()); - return emailTemplateResolver; - } - } diff --git a/src/main/java/ru/ulstu/configuration/MvcConfiguration.java b/src/main/java/ru/ulstu/configuration/MvcConfiguration.java deleted file mode 100644 index 496d493..0000000 --- a/src/main/java/ru/ulstu/configuration/MvcConfiguration.java +++ /dev/null @@ -1,28 +0,0 @@ -package ru.ulstu.configuration; - -import org.springframework.context.annotation.Configuration; -import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; -import org.springframework.web.servlet.config.annotation.ViewControllerRegistry; -import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; - -@Configuration -public class MvcConfiguration extends WebMvcConfigurerAdapter { - @Override - public void addViewControllers(ViewControllerRegistry registry) { - registry.addViewController("/{articlename:\\w+}"); - registry.addViewController("/admin/{articlename:\\w+}"); - registry.addViewController("/papers/{articlename:\\w+}"); - registry.addViewController("/grants/{articlename:\\w+}"); - registry.addViewController("/conferences/{articlename:\\w+}"); - registry.addViewController("/students/{articlename:\\w+}"); - registry.addRedirectViewController("/", "/index"); - registry.addRedirectViewController("/default", "/index"); - } - - @Override - public void addResourceHandlers(ResourceHandlerRegistry registry) { - registry - .addResourceHandler("/webjars/**") - .addResourceLocations("/webjars/"); - } -} diff --git a/src/main/java/ru/ulstu/core/controller/ForwardingController.java b/src/main/java/ru/ulstu/core/controller/ForwardingController.java new file mode 100644 index 0000000..36e75df --- /dev/null +++ b/src/main/java/ru/ulstu/core/controller/ForwardingController.java @@ -0,0 +1,15 @@ +package ru.ulstu.core.controller; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import springfox.documentation.annotations.ApiIgnore; + +@Controller +@ApiIgnore +public class ForwardingController { + @GetMapping(path = "/**/{url:[^\\.]+}") + public String forward(@PathVariable("url") String url) { + return "forward:/"; + } +} diff --git a/src/main/resources/static/core-components/app-index.vue b/src/main/resources/static/core-components/app-index.vue new file mode 100644 index 0000000..26297d7 --- /dev/null +++ b/src/main/resources/static/core-components/app-index.vue @@ -0,0 +1,154 @@ + + + \ No newline at end of file diff --git a/src/main/resources/static/core-components/app.vue b/src/main/resources/static/core-components/app.vue index aa81216..8d9e2fe 100644 --- a/src/main/resources/static/core-components/app.vue +++ b/src/main/resources/static/core-components/app.vue @@ -34,149 +34,10 @@
-
- -
-
-
-
-
- -
-
- -
-
- -
-
-

Статьи

-

-
-
-
- -
-
- -
-
- -
-
-

Гранты

-

-
-
-
- -
-
- -
-
- -
-
-

Проекты

-

-
-
-
- -
-
- -
-
- -
-
-

Конференции

-

-
-
-
- -
-
- -
-
- -
-
-

Команда

-

-
-
-
- -
-
- -
-
- -
-
-

Работа со студентами

-

-
-
-
- -
-
- -
-
- -
-
-

Задачи

-

-
-
-
- -
-
- -
-
- -
-
-

Карьера

-

-
-
-
- -
-
- -
-
- -
-
-

Прочее

-

-
-
-
-
-
-
+
-
-
- {{ getMessage() }} -
-
+ +
@@ -204,7 +65,8 @@ \ No newline at end of file diff --git a/src/main/resources/static/papers/paper-list.vue b/src/main/resources/static/papers/paper-list.vue new file mode 100644 index 0000000..ad6a627 --- /dev/null +++ b/src/main/resources/static/papers/paper-list.vue @@ -0,0 +1,31 @@ + + + \ No newline at end of file diff --git a/src/main/resources/templates/activate.html b/src/main/resources/templates/activate.html deleted file mode 100644 index b20a284..0000000 --- a/src/main/resources/templates/activate.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/src/main/resources/templates/admin/commits.html b/src/main/resources/templates/admin/commits.html deleted file mode 100644 index a3eba20..0000000 --- a/src/main/resources/templates/admin/commits.html +++ /dev/null @@ -1,28 +0,0 @@ - - - - - -
-
-
-
- -
-
-
-
- - - - - \ No newline at end of file diff --git a/src/main/resources/templates/admin/userList.html b/src/main/resources/templates/admin/userList.html deleted file mode 100644 index b47f720..0000000 --- a/src/main/resources/templates/admin/userList.html +++ /dev/null @@ -1,24 +0,0 @@ - - - - - -
-
- -
-
- - - - - \ No newline at end of file diff --git a/src/main/resources/templates/admin/userSessions.html b/src/main/resources/templates/admin/userSessions.html deleted file mode 100644 index 2c3405a..0000000 --- a/src/main/resources/templates/admin/userSessions.html +++ /dev/null @@ -1,24 +0,0 @@ - - - - - -
-
- -
-
- - - - - \ No newline at end of file diff --git a/src/main/resources/templates/conferences/conference.html b/src/main/resources/templates/conferences/conference.html deleted file mode 100644 index 2d93a5e..0000000 --- a/src/main/resources/templates/conferences/conference.html +++ /dev/null @@ -1,204 +0,0 @@ - - - - - - -
-
-
-
-
-

Редактирование конференции

-
-
-
-
-
-
-
- -
-
- - -
- - -

Incorrect title

-

-
- -
- - -
- -
- - -
- -
- -
- -
- - - - -
-
-
-

Incorrect title

-

- - -
- -
-
- -
-
- -
-
-
- -
- -
- -
-
-
-
- -
- -
-
- - - - - -
-
-
- -
- - - - -
- - -
- - - -
-
- -
-
-
- - - Отмена - -
-
-
-
-
-
-
-
-
- - \ No newline at end of file diff --git a/src/main/resources/templates/conferences/conferences.html b/src/main/resources/templates/conferences/conferences.html deleted file mode 100644 index 1c2d64e..0000000 --- a/src/main/resources/templates/conferences/conferences.html +++ /dev/null @@ -1,62 +0,0 @@ - - - - - - - -
-
- -
-
-
-
-

Конференции

-
-
-
-
-
-

-
-
-
- -
- -
-
-
-
Фильтр:
- - -
-
-
-
-
- -
- - -
- - - diff --git a/src/main/resources/templates/conferences/dashboard.html b/src/main/resources/templates/conferences/dashboard.html deleted file mode 100644 index 86be4f2..0000000 --- a/src/main/resources/templates/conferences/dashboard.html +++ /dev/null @@ -1,148 +0,0 @@ - - - - - - - -
-
-
-
-
-

Актуальные конференции

-
-
-
-
-
- -
- -
-
- - - - -
-
- -
- - \ No newline at end of file diff --git a/src/main/resources/templates/conferences/fragments/confDashboardFragment.html b/src/main/resources/templates/conferences/fragments/confDashboardFragment.html deleted file mode 100644 index 5aabef2..0000000 --- a/src/main/resources/templates/conferences/fragments/confDashboardFragment.html +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - -
-
-
-

-

- - title - -
-
-
- - - - \ No newline at end of file diff --git a/src/main/resources/templates/conferences/fragments/confLineFragment.html b/src/main/resources/templates/conferences/fragments/confLineFragment.html deleted file mode 100644 index ecd166d..0000000 --- a/src/main/resources/templates/conferences/fragments/confLineFragment.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - -
-
- - - - - - - - - - -
-
- - - - \ No newline at end of file diff --git a/src/main/resources/templates/conferences/fragments/confNavigationFragment.html b/src/main/resources/templates/conferences/fragments/confNavigationFragment.html deleted file mode 100644 index 7bf9d27..0000000 --- a/src/main/resources/templates/conferences/fragments/confNavigationFragment.html +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/src/main/resources/templates/default.html b/src/main/resources/templates/default.html deleted file mode 100644 index 65e0be6..0000000 --- a/src/main/resources/templates/default.html +++ /dev/null @@ -1,151 +0,0 @@ - - - - - - - - - - NG-Tracker - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
-
-
-
- - - - - - - - - - - - - - diff --git a/src/main/resources/templates/error/403.html b/src/main/resources/templates/error/403.html deleted file mode 100644 index d850fa9..0000000 --- a/src/main/resources/templates/error/403.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - -
-
-
-
-
-

Доступ запрещен

-

Вернуться на главную

-
-
-
-
-
- - \ No newline at end of file diff --git a/src/main/resources/templates/error/404.html b/src/main/resources/templates/error/404.html deleted file mode 100644 index 7233d72..0000000 --- a/src/main/resources/templates/error/404.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - -
-
-
-
-
-

Страница не найдена

-

Вернуться на главную

-
-
-
-
-
- - \ No newline at end of file diff --git a/src/main/resources/templates/error/500.html b/src/main/resources/templates/error/500.html deleted file mode 100644 index d42e7b4..0000000 --- a/src/main/resources/templates/error/500.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - -
-
-
-
-
-

Ошибка сервера

-

Вернуться на главную

-
-
-
-
-
- - \ No newline at end of file diff --git a/src/main/resources/templates/fragments/noRecordsFragment.html b/src/main/resources/templates/fragments/noRecordsFragment.html deleted file mode 100644 index 38970f0..0000000 --- a/src/main/resources/templates/fragments/noRecordsFragment.html +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - -
- - - \ No newline at end of file diff --git a/src/main/resources/templates/grants/dashboard.html b/src/main/resources/templates/grants/dashboard.html deleted file mode 100644 index 821ccd4..0000000 --- a/src/main/resources/templates/grants/dashboard.html +++ /dev/null @@ -1,25 +0,0 @@ - - - - - -
-
-
-
-

Гранты

-
-
-
- -
- -
-
-
-
-
- - \ No newline at end of file diff --git a/src/main/resources/templates/grants/fragments/grantDashboardFragment.html b/src/main/resources/templates/grants/fragments/grantDashboardFragment.html deleted file mode 100644 index 51d0925..0000000 --- a/src/main/resources/templates/grants/fragments/grantDashboardFragment.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - -
-
-
- -
-
- - title - -

status

-
-
-
- - \ No newline at end of file diff --git a/src/main/resources/templates/grants/fragments/grantLineFragment.html b/src/main/resources/templates/grants/fragments/grantLineFragment.html deleted file mode 100644 index dda0e8d..0000000 --- a/src/main/resources/templates/grants/fragments/grantLineFragment.html +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - -
-
- - - - - - - - - -
-
- - \ No newline at end of file diff --git a/src/main/resources/templates/grants/fragments/grantNavigationFragment.html b/src/main/resources/templates/grants/fragments/grantNavigationFragment.html deleted file mode 100644 index 7545077..0000000 --- a/src/main/resources/templates/grants/fragments/grantNavigationFragment.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/src/main/resources/templates/grants/fragments/grantStatusFragment.html b/src/main/resources/templates/grants/fragments/grantStatusFragment.html deleted file mode 100644 index 569f5ee..0000000 --- a/src/main/resources/templates/grants/fragments/grantStatusFragment.html +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - -
- -
-
- -
-
- -
-
- -
-
- -
-
- -
-
- -
- - \ No newline at end of file diff --git a/src/main/resources/templates/grants/grant.html b/src/main/resources/templates/grants/grant.html deleted file mode 100644 index 9c0736d..0000000 --- a/src/main/resources/templates/grants/grant.html +++ /dev/null @@ -1,279 +0,0 @@ - - - - - - - -
-
-
-
-
-

Редактирование гранта

-
-
-
-
-
-
-
-
-
- -
- - -

Incorrect title

-

-
-
- - -
-
- - -
-
- - -
- -
- -
-
- -
-
- -
-
-

Incorrect title

-
-
- -
-
- -
- -
-
-
-
- -
-
-
- - -
-
- - -
-
-
-
- - -
-
- - -
-
-
-
- -
-
-
- - -
-
- -
-
-
- - -

Choose leader

-

-
-
- - -
-
- -
-
- -
- - -
-
- -
-
- -
- - - Статус статьи - -
-
-
-
-
-
-
- -
- -
-
-
-
-
- - -
-
-
- -
-
-
-
- - - - - -
- - diff --git a/src/main/resources/templates/grants/grants.html b/src/main/resources/templates/grants/grants.html deleted file mode 100644 index d98f6d8..0000000 --- a/src/main/resources/templates/grants/grants.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - -
-
- -
-
-
-
-

Гранты

-
-
-
-
-
- -
- -
-
-
-
-
-
-
- -
- - -
- - diff --git a/src/main/resources/templates/index.html b/src/main/resources/templates/index.html deleted file mode 100644 index 6bb134e..0000000 --- a/src/main/resources/templates/index.html +++ /dev/null @@ -1,146 +0,0 @@ - - - - - - -
- -
-
-
-
- -
-
- -
-
- -
-
-

Статьи

-

-
-
-
- -
-
- -
-
- -
-
-

Гранты

-

-
-
-
- -
-
- -
-
- -
-
-

Проекты

-

-
-
-
- -
-
- -
-
- -
-
-

Конференции

-

-
-
-
- -
-
- -
-
- -
-
-

Команда

-

-
-
-
- -
-
- -
-
- -
-
-

Работа со студентами

-

-
-
-
- -
-
- -
-
- -
-
-

Задачи

-

-
-
-
- -
-
- -
-
- -
-
-

Карьера

-

-
-
-
- -
-
- -
-
- -
-
-

Прочее

-

-
-
-
-
-
-
- - - diff --git a/src/main/resources/templates/load.html b/src/main/resources/templates/load.html deleted file mode 100644 index 70c6314..0000000 --- a/src/main/resources/templates/load.html +++ /dev/null @@ -1,42 +0,0 @@ - - - - - -
-
-
-
-
-

Статьи

-
- -
-
-
-
-
- - - - -
- - \ No newline at end of file diff --git a/src/main/resources/templates/login.html b/src/main/resources/templates/login.html deleted file mode 100644 index 9d87073..0000000 --- a/src/main/resources/templates/login.html +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - -
-
-
-
-
-
-
-
- -
-
- -
- - -
-
-
-
-
-
-
- - \ No newline at end of file diff --git a/src/main/resources/templates/papers/dashboard.html b/src/main/resources/templates/papers/dashboard.html deleted file mode 100644 index 5265e0b..0000000 --- a/src/main/resources/templates/papers/dashboard.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - -
-
-
-
-

Статьи

-
-
-
- -
- -
-
-
-
-
- - \ No newline at end of file diff --git a/src/main/resources/templates/papers/fragments/paperDashboardFragment.html b/src/main/resources/templates/papers/fragments/paperDashboardFragment.html deleted file mode 100644 index d0ec0c5..0000000 --- a/src/main/resources/templates/papers/fragments/paperDashboardFragment.html +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - -
-
-
- -
-
-

-

- - title - -

authors

-
-
-
- - - - \ No newline at end of file diff --git a/src/main/resources/templates/papers/fragments/paperFilesListFragment.html b/src/main/resources/templates/papers/fragments/paperFilesListFragment.html deleted file mode 100644 index b4de456..0000000 --- a/src/main/resources/templates/papers/fragments/paperFilesListFragment.html +++ /dev/null @@ -1,46 +0,0 @@ - - - - - - - -
- - - - -
- - - - - -
- - - -
-
- - -
-
-
-
-
- - - - - \ No newline at end of file diff --git a/src/main/resources/templates/papers/fragments/paperLineFragment.html b/src/main/resources/templates/papers/fragments/paperLineFragment.html deleted file mode 100644 index b703859..0000000 --- a/src/main/resources/templates/papers/fragments/paperLineFragment.html +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - -
-
- - - - - - - - - -
-
- - - - \ No newline at end of file diff --git a/src/main/resources/templates/papers/fragments/paperNavigationFragment.html b/src/main/resources/templates/papers/fragments/paperNavigationFragment.html deleted file mode 100644 index 23c8260..0000000 --- a/src/main/resources/templates/papers/fragments/paperNavigationFragment.html +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/src/main/resources/templates/papers/fragments/paperStatusFragment.html b/src/main/resources/templates/papers/fragments/paperStatusFragment.html deleted file mode 100644 index 321370a..0000000 --- a/src/main/resources/templates/papers/fragments/paperStatusFragment.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - -
- -
-
- -
-
- -
-
- -
-
- -
-
- -
-
- -
-
- -
-
- -
- - \ No newline at end of file diff --git a/src/main/resources/templates/papers/paper.html b/src/main/resources/templates/papers/paper.html deleted file mode 100644 index d408913..0000000 --- a/src/main/resources/templates/papers/paper.html +++ /dev/null @@ -1,387 +0,0 @@ - - - - - - - -
- -
-
-
-
-

Редактирование статьи

-
-
-
-
-
-
-
-
-
- - -
-
-
- - -
- - diff --git a/src/main/resources/templates/projects/projects.html b/src/main/resources/templates/projects/projects.html deleted file mode 100644 index e70b910..0000000 --- a/src/main/resources/templates/projects/projects.html +++ /dev/null @@ -1,35 +0,0 @@ - - - - - -
-
- -
-
-
-
-

Проекты

-
-
-
-
-
- -
- -
-
-
-
-
-
-
- - -
- - diff --git a/src/main/resources/templates/reset.html b/src/main/resources/templates/reset.html deleted file mode 100644 index 232e260..0000000 --- a/src/main/resources/templates/reset.html +++ /dev/null @@ -1,77 +0,0 @@ - - - - - - -
-
-
-
- -
-
- -
- - -
-
- -
- - - - - \ No newline at end of file diff --git a/src/main/resources/templates/resetRequest.html b/src/main/resources/templates/resetRequest.html deleted file mode 100644 index 2adab37..0000000 --- a/src/main/resources/templates/resetRequest.html +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - -
-
-
-
- -
- - -
-
-
- - - - - \ No newline at end of file diff --git a/src/main/resources/templates/students/dashboard.html b/src/main/resources/templates/students/dashboard.html deleted file mode 100644 index 1f930cd..0000000 --- a/src/main/resources/templates/students/dashboard.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - -
-
-
-
-

Работа со студентами

-
-
-
-
- -
- - -
-
-
-
- - \ No newline at end of file diff --git a/src/main/resources/templates/students/fragments/taskDashboardFragment.html b/src/main/resources/templates/students/fragments/taskDashboardFragment.html deleted file mode 100644 index 3779ef8..0000000 --- a/src/main/resources/templates/students/fragments/taskDashboardFragment.html +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - -
-
-
- - -
-
- title -

status

- - -
-
-
- - - - \ No newline at end of file diff --git a/src/main/resources/templates/students/fragments/taskLineFragment.html b/src/main/resources/templates/students/fragments/taskLineFragment.html deleted file mode 100644 index baad17e..0000000 --- a/src/main/resources/templates/students/fragments/taskLineFragment.html +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - -
-
- - - - - - - - - -
-
- - \ No newline at end of file diff --git a/src/main/resources/templates/students/fragments/taskNavigationFragment.html b/src/main/resources/templates/students/fragments/taskNavigationFragment.html deleted file mode 100644 index cf32140..0000000 --- a/src/main/resources/templates/students/fragments/taskNavigationFragment.html +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/src/main/resources/templates/students/fragments/taskStatusFragment.html b/src/main/resources/templates/students/fragments/taskStatusFragment.html deleted file mode 100644 index d8ef4f4..0000000 --- a/src/main/resources/templates/students/fragments/taskStatusFragment.html +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - -
- -
-
- -
-
- -
-
- -
-
- -
- - \ No newline at end of file diff --git a/src/main/resources/templates/students/task.html b/src/main/resources/templates/students/task.html deleted file mode 100644 index 968c7a0..0000000 --- a/src/main/resources/templates/students/task.html +++ /dev/null @@ -1,146 +0,0 @@ - - - - - - - - -
- -
- -
-
-
-

Редактирование задачи

-
-
-
-
-
-
-
-
-
- -
- - -

Incorrect title

-

-
- -
- - -
-
- - -
- -
- -
-
- -
- - -
-
- -
-
-
- -
- -
- -
-
- -
-
- - -
-
-

Incorrect title

-
-
- -
-
-
- - - Отмена - -
-
-
-
-
-
-
Дата создания:
-
-
- - text - -
-
-
-
-
-
-
Дата изменения:
-
-
- - text - -
-
-
-
-
- -
-
-
- -
-
- - \ No newline at end of file diff --git a/src/main/resources/templates/students/tasks.html b/src/main/resources/templates/students/tasks.html deleted file mode 100644 index 72c4194..0000000 --- a/src/main/resources/templates/students/tasks.html +++ /dev/null @@ -1,71 +0,0 @@ - - - - - - - -
-
- -
-
-
-
-

Работа со студентами

-
-
-
-
-
-
- -
- -
-
-
-
Сортировать:
- -
-
-
Фильтр:
- - -
-
-
-
-
- -
- - -
- - \ No newline at end of file diff --git a/src/main/resources/templates/timeline.html b/src/main/resources/templates/timeline.html deleted file mode 100644 index 5eda9f3..0000000 --- a/src/main/resources/templates/timeline.html +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - -
-
-
-
-
-

События

-
-
-
-
-
    - -
-
-
-
-
- - - - - -
- - - -- 2.25.1 From 9c5c107c5894b3c2cf60791320ec66320a1df5c1 Mon Sep 17 00:00:00 2001 From: Anton Romanov Date: Tue, 30 Apr 2019 17:54:07 +0400 Subject: [PATCH 05/45] #fix controllers --- .../core/controller/AdviceController.java | 198 +++++++++--------- .../paper/controller/PaperController.java | 2 - 2 files changed, 100 insertions(+), 100 deletions(-) diff --git a/src/main/java/ru/ulstu/core/controller/AdviceController.java b/src/main/java/ru/ulstu/core/controller/AdviceController.java index 4a6bee0..18c25dc 100644 --- a/src/main/java/ru/ulstu/core/controller/AdviceController.java +++ b/src/main/java/ru/ulstu/core/controller/AdviceController.java @@ -1,98 +1,100 @@ -package ru.ulstu.core.controller; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.validation.FieldError; -import org.springframework.web.bind.MethodArgumentNotValidException; -import org.springframework.web.bind.annotation.ControllerAdvice; -import org.springframework.web.bind.annotation.ExceptionHandler; -import ru.ulstu.core.error.EntityIdIsNullException; -import ru.ulstu.core.model.ErrorConstants; -import ru.ulstu.core.model.response.Response; -import ru.ulstu.core.model.response.ResponseExtended; -import ru.ulstu.user.error.UserActivationError; -import ru.ulstu.user.error.UserEmailExistsException; -import ru.ulstu.user.error.UserIdExistsException; -import ru.ulstu.user.error.UserIsUndeadException; -import ru.ulstu.user.error.UserLoginExistsException; -import ru.ulstu.user.error.UserNotActivatedException; -import ru.ulstu.user.error.UserNotFoundException; -import ru.ulstu.user.error.UserPasswordsNotValidOrNotMatchException; -import ru.ulstu.user.error.UserResetKeyError; - -import java.util.Set; -import java.util.stream.Collectors; - -@ControllerAdvice -public class AdviceController { - private final Logger log = LoggerFactory.getLogger(AdviceController.class); - - private Response handleException(ErrorConstants error) { - log.warn(error.toString()); - return new Response<>(error); - } - - private ResponseExtended handleException(ErrorConstants error, E errorData) { - log.warn(error.toString()); - return new ResponseExtended<>(error, errorData); - } - - @ExceptionHandler(EntityIdIsNullException.class) - public Response handleEntityIdIsNullException(Throwable e) { - return handleException(ErrorConstants.ID_IS_NULL); - } - - @ExceptionHandler(MethodArgumentNotValidException.class) - public ResponseExtended> handleMethodArgumentNotValidException(MethodArgumentNotValidException e) { - final Set errors = e.getBindingResult().getAllErrors().stream() - .filter(error -> error instanceof FieldError) - .map(error -> ((FieldError) error).getField()) - .collect(Collectors.toSet()); - return handleException(ErrorConstants.VALIDATION_ERROR, errors); - } - - @ExceptionHandler(UserIdExistsException.class) - public Response handleUserIdExistsException(Throwable e) { - return handleException(ErrorConstants.USER_ID_EXISTS); - } - - @ExceptionHandler(UserActivationError.class) - public ResponseExtended handleUserActivationError(Throwable e) { - return handleException(ErrorConstants.USER_ACTIVATION_ERROR, e.getMessage()); - } - - @ExceptionHandler(UserLoginExistsException.class) - public ResponseExtended handleUserLoginExistsException(Throwable e) { - return handleException(ErrorConstants.USER_LOGIN_EXISTS, e.getMessage()); - } - - @ExceptionHandler(UserEmailExistsException.class) - public ResponseExtended handleUserEmailExistsException(Throwable e) { - return handleException(ErrorConstants.USER_EMAIL_EXISTS, e.getMessage()); - } - - @ExceptionHandler(UserPasswordsNotValidOrNotMatchException.class) - public Response handleUserPasswordsNotValidOrNotMatchException(Throwable e) { - return handleException(ErrorConstants.USER_PASSWORDS_NOT_VALID_OR_NOT_MATCH); - } - - @ExceptionHandler(UserNotFoundException.class) - public ResponseExtended handleUserNotFoundException(Throwable e) { - return handleException(ErrorConstants.USER_NOT_FOUND, e.getMessage()); - } - - @ExceptionHandler(UserNotActivatedException.class) - public Response handleUserNotActivatedException(Throwable e) { - return handleException(ErrorConstants.USER_NOT_ACTIVATED); - } - - @ExceptionHandler(UserResetKeyError.class) - public ResponseExtended handleUserResetKeyError(Throwable e) { - return handleException(ErrorConstants.USER_RESET_ERROR, e.getMessage()); - } - - @ExceptionHandler(UserIsUndeadException.class) - public ResponseExtended handleUserIsUndeadException(Throwable e) { - return handleException(ErrorConstants.USER_UNDEAD_ERROR, e.getMessage()); - } -} +package ru.ulstu.core.controller; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.validation.FieldError; +import org.springframework.web.bind.MethodArgumentNotValidException; +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.RestController; +import ru.ulstu.core.error.EntityIdIsNullException; +import ru.ulstu.core.model.ErrorConstants; +import ru.ulstu.core.model.response.Response; +import ru.ulstu.core.model.response.ResponseExtended; +import ru.ulstu.user.error.UserActivationError; +import ru.ulstu.user.error.UserEmailExistsException; +import ru.ulstu.user.error.UserIdExistsException; +import ru.ulstu.user.error.UserIsUndeadException; +import ru.ulstu.user.error.UserLoginExistsException; +import ru.ulstu.user.error.UserNotActivatedException; +import ru.ulstu.user.error.UserNotFoundException; +import ru.ulstu.user.error.UserPasswordsNotValidOrNotMatchException; +import ru.ulstu.user.error.UserResetKeyError; + +import java.util.Set; +import java.util.stream.Collectors; + +@RestController +@ControllerAdvice +public class AdviceController { + private final Logger log = LoggerFactory.getLogger(AdviceController.class); + + private Response handleException(ErrorConstants error) { + log.warn(error.toString()); + return new Response<>(error); + } + + private ResponseExtended handleException(ErrorConstants error, E errorData) { + log.warn(error.toString()); + return new ResponseExtended<>(error, errorData); + } + + @ExceptionHandler(EntityIdIsNullException.class) + public Response handleEntityIdIsNullException(Throwable e) { + return handleException(ErrorConstants.ID_IS_NULL); + } + + @ExceptionHandler(MethodArgumentNotValidException.class) + public ResponseExtended> handleMethodArgumentNotValidException(MethodArgumentNotValidException e) { + final Set errors = e.getBindingResult().getAllErrors().stream() + .filter(error -> error instanceof FieldError) + .map(error -> ((FieldError) error).getField()) + .collect(Collectors.toSet()); + return handleException(ErrorConstants.VALIDATION_ERROR, errors); + } + + @ExceptionHandler(UserIdExistsException.class) + public Response handleUserIdExistsException(Throwable e) { + return handleException(ErrorConstants.USER_ID_EXISTS); + } + + @ExceptionHandler(UserActivationError.class) + public ResponseExtended handleUserActivationError(Throwable e) { + return handleException(ErrorConstants.USER_ACTIVATION_ERROR, e.getMessage()); + } + + @ExceptionHandler(UserLoginExistsException.class) + public ResponseExtended handleUserLoginExistsException(Throwable e) { + return handleException(ErrorConstants.USER_LOGIN_EXISTS, e.getMessage()); + } + + @ExceptionHandler(UserEmailExistsException.class) + public ResponseExtended handleUserEmailExistsException(Throwable e) { + return handleException(ErrorConstants.USER_EMAIL_EXISTS, e.getMessage()); + } + + @ExceptionHandler(UserPasswordsNotValidOrNotMatchException.class) + public Response handleUserPasswordsNotValidOrNotMatchException(Throwable e) { + return handleException(ErrorConstants.USER_PASSWORDS_NOT_VALID_OR_NOT_MATCH); + } + + @ExceptionHandler(UserNotFoundException.class) + public ResponseExtended handleUserNotFoundException(Throwable e) { + return handleException(ErrorConstants.USER_NOT_FOUND, e.getMessage()); + } + + @ExceptionHandler(UserNotActivatedException.class) + public Response handleUserNotActivatedException(Throwable e) { + return handleException(ErrorConstants.USER_NOT_ACTIVATED); + } + + @ExceptionHandler(UserResetKeyError.class) + public ResponseExtended handleUserResetKeyError(Throwable e) { + return handleException(ErrorConstants.USER_RESET_ERROR, e.getMessage()); + } + + @ExceptionHandler(UserIsUndeadException.class) + public ResponseExtended handleUserIsUndeadException(Throwable e) { + return handleException(ErrorConstants.USER_UNDEAD_ERROR, e.getMessage()); + } +} diff --git a/src/main/java/ru/ulstu/paper/controller/PaperController.java b/src/main/java/ru/ulstu/paper/controller/PaperController.java index 41d5586..d2dedb7 100644 --- a/src/main/java/ru/ulstu/paper/controller/PaperController.java +++ b/src/main/java/ru/ulstu/paper/controller/PaperController.java @@ -33,8 +33,6 @@ import static java.nio.charset.StandardCharsets.UTF_8; import static org.springframework.util.StringUtils.isEmpty; -@Controller() -@RequestMapping(value = "/papers") @ApiIgnore public class PaperController { private final PaperService paperService; -- 2.25.1 From 181b14d2e75d0a1865371747fda330abc0101be1 Mon Sep 17 00:00:00 2001 From: Anton Romanov Date: Tue, 30 Apr 2019 19:04:37 +0400 Subject: [PATCH 06/45] #fix paper status --- .../ru/ulstu/paper/service/PaperService.java | 2 +- .../resources/static/papers/paper-item.vue | 30 +++++++++++----- .../resources/static/papers/paper-status.vue | 35 +++++++++++++++++++ 3 files changed, 57 insertions(+), 10 deletions(-) create mode 100644 src/main/resources/static/papers/paper-status.vue diff --git a/src/main/java/ru/ulstu/paper/service/PaperService.java b/src/main/java/ru/ulstu/paper/service/PaperService.java index 3db7c84..aa009e7 100644 --- a/src/main/java/ru/ulstu/paper/service/PaperService.java +++ b/src/main/java/ru/ulstu/paper/service/PaperService.java @@ -40,7 +40,7 @@ import static ru.ulstu.paper.model.ReferenceDto.ReferenceType.BOOK; @Service public class PaperService { - private final static int MAX_DISPLAY_SIZE = 40; + private final static int MAX_DISPLAY_SIZE = 50; private final static String PAPER_FORMATTED_TEMPLATE = "%s %s"; private final PaperNotificationService paperNotificationService; diff --git a/src/main/resources/static/papers/paper-item.vue b/src/main/resources/static/papers/paper-item.vue index e244599..b261ad5 100644 --- a/src/main/resources/static/papers/paper-item.vue +++ b/src/main/resources/static/papers/paper-item.vue @@ -1,22 +1,34 @@ \ No newline at end of file diff --git a/src/main/resources/static/papers/paper-status.vue b/src/main/resources/static/papers/paper-status.vue new file mode 100644 index 0000000..0386e05 --- /dev/null +++ b/src/main/resources/static/papers/paper-status.vue @@ -0,0 +1,35 @@ + + + \ No newline at end of file -- 2.25.1 From 0d5f15614e671b7facda00b22434076be4afe63f Mon Sep 17 00:00:00 2001 From: Anton Romanov Date: Tue, 30 Apr 2019 19:12:32 +0400 Subject: [PATCH 07/45] #add paper navigation --- .../resources/static/papers/paper-list.vue | 19 ++++++++++------ .../static/papers/paper-navigation.vue | 22 +++++++++++++++++++ 2 files changed, 34 insertions(+), 7 deletions(-) create mode 100644 src/main/resources/static/papers/paper-navigation.vue diff --git a/src/main/resources/static/papers/paper-list.vue b/src/main/resources/static/papers/paper-list.vue index ad6a627..17423ce 100644 --- a/src/main/resources/static/papers/paper-list.vue +++ b/src/main/resources/static/papers/paper-list.vue @@ -1,10 +1,14 @@ @@ -12,7 +16,8 @@ \ No newline at end of file diff --git a/src/main/resources/static/papers/paper-list.vue b/src/main/resources/static/papers/paper-list.vue index 17423ce..417150c 100644 --- a/src/main/resources/static/papers/paper-list.vue +++ b/src/main/resources/static/papers/paper-list.vue @@ -18,6 +18,7 @@ components: { "paper-item": httpVueLoaderEx("/papers/paper-item.vue"), "paper-navigation": httpVueLoaderEx("/papers/paper-navigation.vue"), + "paper-dashboard": httpVueLoaderEx("/papers/paper-dashboard.vue") }, data: function () { return { -- 2.25.1 From 8906214f520fb800cad3b829668ac2d91fc0a681 Mon Sep 17 00:00:00 2001 From: Anton Romanov Date: Mon, 6 May 2019 14:06:51 +0400 Subject: [PATCH 10/45] fix dashboard --- src/main/resources/static/js/app-config.js | 2 +- .../static/papers/paper-dashboard-item.vue | 46 +++++++++++++++++++ .../static/papers/paper-dashboard.vue | 14 +++--- .../resources/static/papers/paper-item.vue | 3 +- 4 files changed, 54 insertions(+), 11 deletions(-) create mode 100644 src/main/resources/static/papers/paper-dashboard-item.vue diff --git a/src/main/resources/static/js/app-config.js b/src/main/resources/static/js/app-config.js index f2864e6..3488b6e 100644 --- a/src/main/resources/static/js/app-config.js +++ b/src/main/resources/static/js/app-config.js @@ -19,7 +19,7 @@ var getTables = basePath + "/get-tables"; var makeIntegration = basePath + "/make-integration"; var paperList = basePath + "/papers"; - var paperDashboard = basePath + "/dashboard"; + var paperDashboard = basePath + "/papers/dashboard"; return { version: appVersion, diff --git a/src/main/resources/static/papers/paper-dashboard-item.vue b/src/main/resources/static/papers/paper-dashboard-item.vue new file mode 100644 index 0000000..f09ab42 --- /dev/null +++ b/src/main/resources/static/papers/paper-dashboard-item.vue @@ -0,0 +1,46 @@ + + + \ No newline at end of file diff --git a/src/main/resources/static/papers/paper-dashboard.vue b/src/main/resources/static/papers/paper-dashboard.vue index 17423ce..c9f2f8b 100644 --- a/src/main/resources/static/papers/paper-dashboard.vue +++ b/src/main/resources/static/papers/paper-dashboard.vue @@ -3,12 +3,10 @@
-
- - -
+ +
@@ -16,7 +14,7 @@ \ No newline at end of file -- 2.25.1 From 51164ce11c5d59359d2440c5038c8658f7ca97f5 Mon Sep 17 00:00:00 2001 From: Anton Romanov Date: Thu, 9 May 2019 00:47:28 +0400 Subject: [PATCH 14/45] fix enum dtos --- .../paper/controller/PaperController.java | 19 ------------------- .../paper/controller/PaperRestController.java | 7 ++++--- .../ru/ulstu/paper/model/PaperStatusDto.java | 19 +++++++++++++++++++ .../ru/ulstu/paper/model/PaperTypeDto.java | 19 +++++++++++++++++++ .../ru/ulstu/paper/service/PaperService.java | 10 ++++++---- src/main/resources/static/papers/paper.vue | 4 ++-- 6 files changed, 50 insertions(+), 28 deletions(-) create mode 100644 src/main/java/ru/ulstu/paper/model/PaperStatusDto.java create mode 100644 src/main/java/ru/ulstu/paper/model/PaperTypeDto.java diff --git a/src/main/java/ru/ulstu/paper/controller/PaperController.java b/src/main/java/ru/ulstu/paper/controller/PaperController.java index d2dedb7..d857f04 100644 --- a/src/main/java/ru/ulstu/paper/controller/PaperController.java +++ b/src/main/java/ru/ulstu/paper/controller/PaperController.java @@ -3,22 +3,18 @@ package ru.ulstu.paper.controller; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; -import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.validation.Errors; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import ru.ulstu.conference.service.ConferenceService; import ru.ulstu.deadline.model.Deadline; -import ru.ulstu.paper.model.Paper; import ru.ulstu.paper.model.PaperDto; import ru.ulstu.paper.model.PaperListDto; import ru.ulstu.paper.service.LatexService; import ru.ulstu.paper.service.PaperService; -import ru.ulstu.user.model.User; import springfox.documentation.annotations.ApiIgnore; import javax.validation.Valid; @@ -103,21 +99,6 @@ public class PaperController { return "/papers/paper"; } - @ModelAttribute("allStatuses") - public List getPaperStatuses() { - return paperService.getPaperStatuses(); - } - - @ModelAttribute("allTypes") - public List getPaperTypes() { - return paperService.getPaperTypes(); - } - - @ModelAttribute("allAuthors") - public List getAllAuthors() { - return paperService.getPaperAuthors(); - } - @ModelAttribute("allYears") public List getAllYears() { List years = new ArrayList<>(); diff --git a/src/main/java/ru/ulstu/paper/controller/PaperRestController.java b/src/main/java/ru/ulstu/paper/controller/PaperRestController.java index 3df2e93..5e5496a 100644 --- a/src/main/java/ru/ulstu/paper/controller/PaperRestController.java +++ b/src/main/java/ru/ulstu/paper/controller/PaperRestController.java @@ -10,9 +10,10 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import ru.ulstu.configuration.Constants; import ru.ulstu.core.model.response.Response; -import ru.ulstu.paper.model.Paper; import ru.ulstu.paper.model.PaperDto; import ru.ulstu.paper.model.PaperListDto; +import ru.ulstu.paper.model.PaperStatusDto; +import ru.ulstu.paper.model.PaperTypeDto; import ru.ulstu.paper.model.ReferenceDto; import ru.ulstu.paper.service.PaperService; import ru.ulstu.user.model.User; @@ -86,12 +87,12 @@ public class PaperRestController { } @GetMapping("/allTypes") - public Response> getPaperTypes() { + public Response> getPaperTypes() { return new Response<>(paperService.getPaperTypes()); } @GetMapping("/allStatuses") - public Response> getPaperStatuses() { + public Response> getPaperStatuses() { return new Response<>(paperService.getPaperStatuses()); } } diff --git a/src/main/java/ru/ulstu/paper/model/PaperStatusDto.java b/src/main/java/ru/ulstu/paper/model/PaperStatusDto.java new file mode 100644 index 0000000..76efd5e --- /dev/null +++ b/src/main/java/ru/ulstu/paper/model/PaperStatusDto.java @@ -0,0 +1,19 @@ +package ru.ulstu.paper.model; + +public class PaperStatusDto { + private final String id; + private final String name; + + public PaperStatusDto(Paper.PaperStatus status) { + this.id = status.name(); + this.name = status.getStatusName(); + } + + public String getId() { + return id; + } + + public String getName() { + return name; + } +} diff --git a/src/main/java/ru/ulstu/paper/model/PaperTypeDto.java b/src/main/java/ru/ulstu/paper/model/PaperTypeDto.java new file mode 100644 index 0000000..de2b4d9 --- /dev/null +++ b/src/main/java/ru/ulstu/paper/model/PaperTypeDto.java @@ -0,0 +1,19 @@ +package ru.ulstu.paper.model; + +public class PaperTypeDto { + private final String id; + private final String name; + + public PaperTypeDto(Paper.PaperType type) { + this.id = type.name(); + this.name = type.getTypeName(); + } + + public String getId() { + return id; + } + + public String getName() { + return name; + } +} diff --git a/src/main/java/ru/ulstu/paper/service/PaperService.java b/src/main/java/ru/ulstu/paper/service/PaperService.java index 28c978a..6483062 100644 --- a/src/main/java/ru/ulstu/paper/service/PaperService.java +++ b/src/main/java/ru/ulstu/paper/service/PaperService.java @@ -10,6 +10,8 @@ import ru.ulstu.file.service.FileService; import ru.ulstu.paper.model.Paper; import ru.ulstu.paper.model.PaperDto; import ru.ulstu.paper.model.PaperListDto; +import ru.ulstu.paper.model.PaperStatusDto; +import ru.ulstu.paper.model.PaperTypeDto; import ru.ulstu.paper.model.ReferenceDto; import ru.ulstu.paper.repository.PaperRepository; import ru.ulstu.timeline.service.EventService; @@ -160,12 +162,12 @@ public class PaperService { paperRepository.delete(paper); } - public List getPaperStatuses() { - return Arrays.asList(Paper.PaperStatus.values()); + public List getPaperStatuses() { + return convert(Arrays.asList(Paper.PaperStatus.values()), PaperStatusDto::new); } - public List getPaperTypes() { - return Arrays.asList(Paper.PaperType.values()); + public List getPaperTypes() { + return convert(Arrays.asList(Paper.PaperType.values()), PaperTypeDto::new); } @Transactional diff --git a/src/main/resources/static/papers/paper.vue b/src/main/resources/static/papers/paper.vue index 677619f..7ee63ed 100644 --- a/src/main/resources/static/papers/paper.vue +++ b/src/main/resources/static/papers/paper.vue @@ -35,7 +35,7 @@
@@ -43,7 +43,7 @@
-- 2.25.1 From 4fefa39f7b4c50eda1eb512bf0cd3f4fb3b07b22 Mon Sep 17 00:00:00 2001 From: Anton Romanov Date: Mon, 27 May 2019 16:23:17 +0400 Subject: [PATCH 15/45] authors multiselect --- build.gradle | 2 +- src/main/resources/static/index.html | 2 ++ src/main/resources/static/papers/paper.vue | 26 ++++++++++++++++------ 3 files changed, 22 insertions(+), 8 deletions(-) diff --git a/build.gradle b/build.gradle index 4336db9..5ad1f49 100644 --- a/build.gradle +++ b/build.gradle @@ -118,10 +118,10 @@ dependencies { compile group: 'org.webjars', name: 'font-awesome', version: '4.7.0' compile group: 'org.webjars', name: 'bootstrap', version: '4.1.3' - compile group: 'org.webjars', name: 'bootstrap-select', version: '1.13.8' compile group: 'org.webjars.npm', name: 'vue', version: '2.6.9' compile group: 'org.webjars.npm', name: 'vuex', version: '3.1.0' compile group: 'org.webjars.npm', name: 'vue-router', version: '3.0.2' + compile group: 'org.webjars.npm', name: 'vue-multiselect', version: '2.0.2' compile group: 'org.webjars.npm', name: 'http-vue-loader', version: '1.3.5' compile group: 'org.webjars.npm', name: 'axios', version: '0.18.0' diff --git a/src/main/resources/static/index.html b/src/main/resources/static/index.html index d6f3d48..4d3b388 100644 --- a/src/main/resources/static/index.html +++ b/src/main/resources/static/index.html @@ -5,6 +5,7 @@ NG-Tracker + @@ -22,6 +23,7 @@ + diff --git a/src/main/resources/static/papers/paper.vue b/src/main/resources/static/papers/paper.vue index 7ee63ed..59fb3f2 100644 --- a/src/main/resources/static/papers/paper.vue +++ b/src/main/resources/static/papers/paper.vue @@ -3,8 +3,7 @@

Редактирование статьи

- - +

@@ -35,16 +34,14 @@
@@ -59,6 +56,19 @@
+ +
+ + +
@@ -72,10 +82,12 @@ + diff --git a/src/main/resources/static/papers/paper.vue b/src/main/resources/static/papers/paper.vue index 59fb3f2..0c816fc 100644 --- a/src/main/resources/static/papers/paper.vue +++ b/src/main/resources/static/papers/paper.vue @@ -28,38 +28,37 @@ aria-labelledby="nav-main-tab">
-
- +
- +
- +
- +
-
+
+
+
+
+
Дата создания:
+
+
+ + {{ formatDate(paper.createDate) }} + +
+
+
+
+
+
+
Дата изменения:
+
+
+ + {{ formatDate(paper.updateDate) }} + +
+
+
+
+ +
+
+ +
+
+
+ + + Отмена + +
+ +
+ @@ -87,12 +135,19 @@ }, data: function () { return { - paperAuthors:[], + paper:'', allAuthors: [], allTypes: [], allStatuses: [] }; }, + methods: { + formatDate: function (date) { + if (date) { + return moment(String(new Date(date))).format('DD.MM.YYYY hh:mm') + } + } + }, mounted: function () { var self = this; axiosEx.get( -- 2.25.1 From 6e97bf67d65bd515656d7763a9a55f9a62ee892c Mon Sep 17 00:00:00 2001 From: Aleksey Filippov Date: Tue, 28 May 2019 22:27:35 +0400 Subject: [PATCH 17/45] try-vue: add pgsql runner --- deploy/run_psql.sh | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 deploy/run_psql.sh diff --git a/deploy/run_psql.sh b/deploy/run_psql.sh new file mode 100644 index 0000000..5532e93 --- /dev/null +++ b/deploy/run_psql.sh @@ -0,0 +1,24 @@ +#!/bin/bash +# to run this execute +# export PSQL_HOME_DIR=/home/user/pgsql-10.5.1; bash ./deploy/run_psql.sh +PSQL_DATA_DIR=./ng-tracker +PSQL_USER_NAME=postgres +PSQL_DB_NAME=ng-tracker +if [ ! -d "$PSQL_HOME_DIR" ]; then + echo "Directory $PSQL_HOME_DIR is not exists" + exit 0 +fi +cd "$PSQL_HOME_DIR" +if [ ! -d "$PSQL_DATA_DIR" ]; then + ./bin/initdb "$PSQL_DATA_DIR" + ./bin/pg_ctl -D "$PSQL_DATA_DIR" start + ./bin/createuser -s "$PSQL_USER_NAME" + ./bin/createdb -O "$PSQL_USER_NAME" "$PSQL_DB_NAME" +else + PSQL_STATUS=$(./bin/pg_ctl -D "$PSQL_DATA_DIR" status | wc -l) + if [ $PSQL_STATUS -eq 1 ]; then + ./bin/pg_ctl -D "$PSQL_DATA_DIR" start + else + ./bin/pg_ctl -D "$PSQL_DATA_DIR" stop + fi +fi -- 2.25.1 From 133c9a13baedc639eb91425f5ef18f27edc8c110 Mon Sep 17 00:00:00 2001 From: Aleksey Filippov Date: Tue, 28 May 2019 22:27:48 +0400 Subject: [PATCH 18/45] try-vue: add jshint config --- .jshintrc | 165 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 165 insertions(+) create mode 100644 .jshintrc diff --git a/.jshintrc b/.jshintrc new file mode 100644 index 0000000..c19504c --- /dev/null +++ b/.jshintrc @@ -0,0 +1,165 @@ +{ + // JSHint Default Configuration File (as on JSHint website) + // See http://jshint.com/docs/ for more details + + "maxerr": 50, + // {int} Maximum error before stopping + + // Enforcing + "bitwise": true, + // true: Prohibit bitwise operators (&, |, ^, etc.) + "camelcase": false, + // true: Identifiers must be in camelCase + "curly": true, + // true: Require {} for every new block or scope + "eqeqeq": true, + // true: Require triple equals (===) for comparison + "forin": true, + // true: Require filtering for..in loops with obj.hasOwnProperty() + "freeze": true, + // true: prohibits overwriting prototypes of native objects such as Array, Date etc. + "immed": false, + // true: Require immediate invocations to be wrapped in parens e.g. `(function () { } ());` + "latedef": false, + // true: Require variables/functions to be defined before being used + "newcap": false, + // true: Require capitalization of all constructor functions e.g. `new F()` + "noarg": true, + // true: Prohibit use of `arguments.caller` and `arguments.callee` + "noempty": true, + // true: Prohibit use of empty blocks + "nonbsp": true, + // true: Prohibit "non-breaking whitespace" characters. + "nonew": false, + // true: Prohibit use of constructors for side-effects (without assignment) + "plusplus": false, + // true: Prohibit use of `++` and `--` + "quotmark": false, + // Quotation mark consistency: + // false : do nothing (default) + // true : ensure whatever is used is consistent + // "single" : require single quotes + // "double" : require double quotes + "undef": true, + // true: Require all non-global variables to be declared (prevents global leaks) + "unused": true, + // Unused variables: + // true : all variables, last function parameter + // "vars" : all variables only + // "strict" : all variables, all function parameters + "strict": false, + // true: Requires all functions run in ES5 Strict Mode + "maxparams": false, + // {int} Max number of formal params allowed per function + "maxdepth": false, + // {int} Max depth of nested blocks (within functions) + "maxstatements": false, + // {int} Max number statements per function + "maxcomplexity": false, + // {int} Max cyclomatic complexity per function + "maxlen": false, + // {int} Max number of characters per line + "varstmt": false, + // true: Disallow any var statements. Only `let` and `const` are allowed. + + // Relaxing + "asi": false, + // true: Tolerate Automatic Semicolon Insertion (no semicolons) + "boss": false, + // true: Tolerate assignments where comparisons would be expected + "debug": false, + // true: Allow debugger statements e.g. browser breakpoints. + "eqnull": true, + // true: Tolerate use of `== null` + "esversion": 5, + // {int} Specify the ECMAScript version to which the code must adhere. + "moz": false, + // true: Allow Mozilla specific syntax (extends and overrides esnext features) + // (ex: `for each`, multiple try/catch, function expression…) + "evil": false, + // true: Tolerate use of `eval` and `new Function()` + "expr": false, + // true: Tolerate `ExpressionStatement` as Programs + "funcscope": false, + // true: Tolerate defining variables inside control statements + "globalstrict": false, + // true: Allow global "use strict" (also enables 'strict') + "iterator": false, + // true: Tolerate using the `__iterator__` property + "lastsemic": false, + // true: Tolerate omitting a semicolon for the last statement of a 1-line block + "laxbreak": false, + // true: Tolerate possibly unsafe line breakings + "laxcomma": false, + // true: Tolerate comma-first style coding + "loopfunc": false, + // true: Tolerate functions being defined in loops + "multistr": false, + // true: Tolerate multi-line strings + "noyield": false, + // true: Tolerate generator functions with no yield statement in them. + "notypeof": false, + // true: Tolerate invalid typeof operator values + "proto": false, + // true: Tolerate using the `__proto__` property + "scripturl": false, + // true: Tolerate script-targeted URLs + "shadow": false, + // true: Allows re-define variables later in code e.g. `var x=1; x=2;` + "sub": false, + // true: Tolerate using `[]` notation when it can still be expressed in dot notation + "supernew": false, + // true: Tolerate `new function () { ... };` and `new Object;` + "validthis": false, + // true: Tolerate using this in a non-constructor function + + // Environments + "browser": true, + // Web Browser (window, document, etc) + "browserify": false, + // Browserify (node.js code in the browser) + "couch": false, + // CouchDB + "devel": true, + // Development/debugging (alert, confirm, etc) + "dojo": false, + // Dojo Toolkit + "jasmine": false, + // Jasmine + "jquery": true, + // jQuery + "mocha": false, + // Mocha + "mootools": false, + // MooTools + "node": false, + // Node.js + "nonstandard": false, + // Widely adopted globals (escape, unescape, etc) + "phantom": false, + // PhantomJS + "prototypejs": false, + // Prototype and Scriptaculous + "qunit": false, + // QUnit + "rhino": false, + // Rhino + "shelljs": false, + // ShellJS + "typed": false, + // Globals for typed array constructions + "worker": false, + // Web Workers + "wsh": false, + // Windows Scripting Host + "yui": false, + // Yahoo User Interface + + // Custom Globals + "globals": { + "spc": false, + "spsn": false, + "spconf": false + } + // additional predefined global variables +} \ No newline at end of file -- 2.25.1 From fde4ef58d94dda8135f1c25830a590ccb753d3e7 Mon Sep 17 00:00:00 2001 From: Aleksey Filippov Date: Tue, 28 May 2019 22:28:14 +0400 Subject: [PATCH 19/45] try-vue: add test pages for validators --- .../resources/static/core-components/app-index.vue | 2 +- src/main/resources/static/js/app.js | 9 +++++++++ src/main/resources/static/other/other.vue | 14 ++++++++++++++ src/main/resources/static/other/validator1.vue | 14 ++++++++++++++ src/main/resources/static/other/validator2.vue | 14 ++++++++++++++ 5 files changed, 52 insertions(+), 1 deletion(-) create mode 100644 src/main/resources/static/other/other.vue create mode 100644 src/main/resources/static/other/validator1.vue create mode 100644 src/main/resources/static/other/validator2.vue diff --git a/src/main/resources/static/core-components/app-index.vue b/src/main/resources/static/core-components/app-index.vue index 26297d7..eb7e517 100644 --- a/src/main/resources/static/core-components/app-index.vue +++ b/src/main/resources/static/core-components/app-index.vue @@ -113,7 +113,7 @@
- +
diff --git a/src/main/resources/static/js/app.js b/src/main/resources/static/js/app.js index 890f70f..c25dddd 100644 --- a/src/main/resources/static/js/app.js +++ b/src/main/resources/static/js/app.js @@ -17,6 +17,15 @@ var router = new VueRouter({ { path: "/papers/dashboard", component: httpVueLoaderEx("/papers/paper-dashboard.vue", "PaperDashboard") }, + { + path: "/other/other", component: httpVueLoaderEx("/other/other.vue", "OtherMain") + }, + { + path: "/other/validator1", component: httpVueLoaderEx("/other/validator1.vue", "OtherValidator1") + }, + { + path: "/other/validator2", component: httpVueLoaderEx("/other/validator2.vue", "OtherValidator2") + }, { path: "/*", component: httpVueLoaderEx("/core-components/page-not-found.vue", "PageNotFound") } diff --git a/src/main/resources/static/other/other.vue b/src/main/resources/static/other/other.vue new file mode 100644 index 0000000..08856f4 --- /dev/null +++ b/src/main/resources/static/other/other.vue @@ -0,0 +1,14 @@ + \ No newline at end of file diff --git a/src/main/resources/static/other/validator1.vue b/src/main/resources/static/other/validator1.vue new file mode 100644 index 0000000..4da7c0b --- /dev/null +++ b/src/main/resources/static/other/validator1.vue @@ -0,0 +1,14 @@ + \ No newline at end of file diff --git a/src/main/resources/static/other/validator2.vue b/src/main/resources/static/other/validator2.vue new file mode 100644 index 0000000..409c1c8 --- /dev/null +++ b/src/main/resources/static/other/validator2.vue @@ -0,0 +1,14 @@ + \ No newline at end of file -- 2.25.1 From 528fb87f77a0728d2483bfd2c0482466b9d483b7 Mon Sep 17 00:00:00 2001 From: Aleksey Filippov Date: Tue, 28 May 2019 22:44:33 +0400 Subject: [PATCH 20/45] try-vue: vuelidate is not exists in webjar format, so try use only VeeValidate --- build.gradle | 2 +- src/main/resources/static/js/app.js | 6 ------ src/main/resources/static/other/other.vue | 13 ++----------- src/main/resources/static/other/validator1.vue | 14 -------------- src/main/resources/static/other/validator2.vue | 14 -------------- 5 files changed, 3 insertions(+), 46 deletions(-) delete mode 100644 src/main/resources/static/other/validator1.vue delete mode 100644 src/main/resources/static/other/validator2.vue diff --git a/build.gradle b/build.gradle index 4c2ce50..9b29d62 100644 --- a/build.gradle +++ b/build.gradle @@ -125,7 +125,7 @@ dependencies { compile group: 'org.webjars.npm', name: 'vue-moment', version: '4.0.0' compile group: 'org.webjars.npm', name: 'http-vue-loader', version: '1.3.5' compile group: 'org.webjars.npm', name: 'axios', version: '0.18.0' - + compile group: 'org.webjars.npm', name: 'vee-validate', version: '2.1.7' compile group: 'io.springfox', name: 'springfox-swagger2', version: '2.6.0' compile group: 'io.springfox', name: 'springfox-swagger-ui', version: '2.6.0' diff --git a/src/main/resources/static/js/app.js b/src/main/resources/static/js/app.js index c25dddd..0ac7342 100644 --- a/src/main/resources/static/js/app.js +++ b/src/main/resources/static/js/app.js @@ -20,12 +20,6 @@ var router = new VueRouter({ { path: "/other/other", component: httpVueLoaderEx("/other/other.vue", "OtherMain") }, - { - path: "/other/validator1", component: httpVueLoaderEx("/other/validator1.vue", "OtherValidator1") - }, - { - path: "/other/validator2", component: httpVueLoaderEx("/other/validator2.vue", "OtherValidator2") - }, { path: "/*", component: httpVueLoaderEx("/core-components/page-not-found.vue", "PageNotFound") } diff --git a/src/main/resources/static/other/other.vue b/src/main/resources/static/other/other.vue index 08856f4..b9e8bcb 100644 --- a/src/main/resources/static/other/other.vue +++ b/src/main/resources/static/other/other.vue @@ -1,14 +1,5 @@ \ No newline at end of file diff --git a/src/main/resources/static/other/validator1.vue b/src/main/resources/static/other/validator1.vue deleted file mode 100644 index 4da7c0b..0000000 --- a/src/main/resources/static/other/validator1.vue +++ /dev/null @@ -1,14 +0,0 @@ - \ No newline at end of file diff --git a/src/main/resources/static/other/validator2.vue b/src/main/resources/static/other/validator2.vue deleted file mode 100644 index 409c1c8..0000000 --- a/src/main/resources/static/other/validator2.vue +++ /dev/null @@ -1,14 +0,0 @@ - \ No newline at end of file -- 2.25.1 From f0e4121d1d25dff523a65863a1e8b67f4c10433d Mon Sep 17 00:00:00 2001 From: Aleksey Filippov Date: Wed, 29 May 2019 00:59:58 +0400 Subject: [PATCH 21/45] try-vue: add some examples of validataion via veevalidate --- src/main/resources/static/index.html | 3 + src/main/resources/static/js/app.js | 5 +- src/main/resources/static/other/other.vue | 27 +++++++- src/main/resources/static/other/var1.vue | 81 +++++++++++++++++++++++ src/main/resources/static/other/var2.vue | 78 ++++++++++++++++++++++ 5 files changed, 192 insertions(+), 2 deletions(-) create mode 100644 src/main/resources/static/other/var1.vue create mode 100644 src/main/resources/static/other/var2.vue diff --git a/src/main/resources/static/index.html b/src/main/resources/static/index.html index 4da84b9..c0223d0 100644 --- a/src/main/resources/static/index.html +++ b/src/main/resources/static/index.html @@ -24,9 +24,12 @@ + + + diff --git a/src/main/resources/static/js/app.js b/src/main/resources/static/js/app.js index 0ac7342..c6f9c18 100644 --- a/src/main/resources/static/js/app.js +++ b/src/main/resources/static/js/app.js @@ -1,4 +1,4 @@ -/* global Vue, VueRouter, Vuex, httpVueLoaderEx */ +/* global Vue, VueRouter, Vuex, VeeValidate, httpVueLoaderEx */ var router = new VueRouter({ linkActiveClass: "active", @@ -64,6 +64,9 @@ var store = new Vuex.Store({ } }); +Vue.use(VeeValidate, { + validity: true +}); new Vue({ el: "#ng-tracker-app", router: router, diff --git a/src/main/resources/static/other/other.vue b/src/main/resources/static/other/other.vue index b9e8bcb..f77b921 100644 --- a/src/main/resources/static/other/other.vue +++ b/src/main/resources/static/other/other.vue @@ -1,5 +1,30 @@ \ No newline at end of file + + + \ No newline at end of file diff --git a/src/main/resources/static/other/var1.vue b/src/main/resources/static/other/var1.vue new file mode 100644 index 0000000..40ebbdc --- /dev/null +++ b/src/main/resources/static/other/var1.vue @@ -0,0 +1,81 @@ + + + + + \ No newline at end of file diff --git a/src/main/resources/static/other/var2.vue b/src/main/resources/static/other/var2.vue new file mode 100644 index 0000000..e55840c --- /dev/null +++ b/src/main/resources/static/other/var2.vue @@ -0,0 +1,78 @@ + + + + + \ No newline at end of file -- 2.25.1 From f89928ce3d93040024ffb64d2b1bea3599c6e9c4 Mon Sep 17 00:00:00 2001 From: Anton Romanov Date: Thu, 27 Jun 2019 12:08:15 +0400 Subject: [PATCH 22/45] fix paper id on load --- src/main/resources/static/papers/paper-item.vue | 2 +- src/main/resources/static/papers/paper.vue | 15 +++++++++------ 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/src/main/resources/static/papers/paper-item.vue b/src/main/resources/static/papers/paper-item.vue index 1d91a13..9431ef7 100644 --- a/src/main/resources/static/papers/paper-item.vue +++ b/src/main/resources/static/papers/paper-item.vue @@ -5,7 +5,7 @@ - + {{ paper.title }}
diff --git a/src/main/resources/static/papers/paper.vue b/src/main/resources/static/papers/paper.vue index 0c816fc..ffb8b2c 100644 --- a/src/main/resources/static/papers/paper.vue +++ b/src/main/resources/static/papers/paper.vue @@ -41,19 +41,22 @@
- +
- +
@@ -78,7 +81,7 @@
Дата создания:
- + {{ formatDate(paper.createDate) }}
@@ -135,7 +138,7 @@ }, data: function () { return { - paper:'', + paper: '', allAuthors: [], allTypes: [], allStatuses: [] @@ -151,7 +154,7 @@ mounted: function () { var self = this; axiosEx.get( - appConfig.paper + "/65537", + appConfig.paper + "/" + self.$route.query.id, function (data) { self.paper = data; }); -- 2.25.1 From b99a5e9f0663849929e4fe014dc07d7699b0a339 Mon Sep 17 00:00:00 2001 From: Anton Romanov Date: Thu, 27 Jun 2019 16:31:48 +0400 Subject: [PATCH 23/45] paper model optimize --- .../paper/controller/PaperController.java | 19 +++--- .../paper/controller/PaperRestController.java | 10 +-- src/main/java/ru/ulstu/paper/model/Paper.java | 8 +-- .../ulstu/paper/model/PaperDashboardDto.java | 64 +++++++++++++++++++ .../ulstu/paper/model/PaperFilterListDto.java | 51 +++++++++++++++ .../ru/ulstu/paper/model/PaperListDto.java | 57 +++++++++-------- .../ru/ulstu/paper/service/PaperService.java | 16 ++--- .../static/papers/paper-dashboard.vue | 2 +- .../resources/static/papers/paper-item.vue | 8 ++- .../static/papers/paper-navigation.vue | 38 ++++++----- 10 files changed, 199 insertions(+), 74 deletions(-) create mode 100644 src/main/java/ru/ulstu/paper/model/PaperDashboardDto.java create mode 100644 src/main/java/ru/ulstu/paper/model/PaperFilterListDto.java diff --git a/src/main/java/ru/ulstu/paper/controller/PaperController.java b/src/main/java/ru/ulstu/paper/controller/PaperController.java index dbf17d2..b6fd63e 100644 --- a/src/main/java/ru/ulstu/paper/controller/PaperController.java +++ b/src/main/java/ru/ulstu/paper/controller/PaperController.java @@ -12,9 +12,8 @@ import org.springframework.web.bind.annotation.RequestParam; import ru.ulstu.conference.service.ConferenceService; import ru.ulstu.deadline.model.Deadline; import ru.ulstu.paper.model.AutoCompleteData; -import ru.ulstu.paper.model.Paper; import ru.ulstu.paper.model.PaperDto; -import ru.ulstu.paper.model.PaperListDto; +import ru.ulstu.paper.model.PaperFilterListDto; import ru.ulstu.paper.model.ReferenceDto; import ru.ulstu.paper.service.LatexService; import ru.ulstu.paper.service.PaperService; @@ -48,21 +47,21 @@ public class PaperController { @GetMapping("/papers") public void getPapers(ModelMap modelMap) { - modelMap.put("filteredPapers", new PaperListDto(paperService.findAllDto(), null, null)); + modelMap.put("filteredPapers", new PaperFilterListDto(paperService.findAllDto(), null, null)); } @PostMapping("/papers") - public void listPapers(@Valid PaperListDto paperListDto, ModelMap modelMap) { - if (paperListDto.getPaperDeleteId() != null) { - if (conferenceService.isAttachedToConference(paperListDto.getPaperDeleteId())) { + public void listPapers(@Valid PaperFilterListDto paperFilterListDto, ModelMap modelMap) { + if (paperFilterListDto.getPaperDeleteId() != null) { + if (conferenceService.isAttachedToConference(paperFilterListDto.getPaperDeleteId())) { modelMap.put("flashMessage", "Статью нельзя удалить, она прикреплена к конференции"); } else { - paperService.delete(paperListDto.getPaperDeleteId()); + paperService.delete(paperFilterListDto.getPaperDeleteId()); } } - modelMap.put("filteredPapers", new PaperListDto(paperService.filter(paperListDto), - paperListDto.getFilterAuthorId(), - paperListDto.getYear())); + modelMap.put("filteredPapers", new PaperFilterListDto(paperService.filter(paperFilterListDto), + paperFilterListDto.getFilterAuthorId(), + paperFilterListDto.getYear())); } @GetMapping("/dashboard") diff --git a/src/main/java/ru/ulstu/paper/controller/PaperRestController.java b/src/main/java/ru/ulstu/paper/controller/PaperRestController.java index c1c6faa..bc4ecec 100644 --- a/src/main/java/ru/ulstu/paper/controller/PaperRestController.java +++ b/src/main/java/ru/ulstu/paper/controller/PaperRestController.java @@ -11,6 +11,7 @@ import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import ru.ulstu.configuration.Constants; import ru.ulstu.core.model.response.Response; +import ru.ulstu.paper.model.PaperDashboardDto; import ru.ulstu.paper.model.PaperDto; import ru.ulstu.paper.model.PaperListDto; import ru.ulstu.paper.model.PaperStatusDto; @@ -37,12 +38,12 @@ public class PaperRestController { } @GetMapping - public Response> getPapers() { + public Response> getPapers() { return new Response<>(paperService.findAllDto()); } @GetMapping("/dashboard") - public Response> getDashboard() { + public Response> getDashboard() { return new Response<>(paperService.findAllActiveDto()); } @@ -67,11 +68,6 @@ public class PaperRestController { return new Response<>(Boolean.TRUE); } - @PostMapping("/filter") - public Response> filter(@RequestBody @Valid PaperListDto paperListDto) throws IOException { - return new Response<>(paperService.filter(paperListDto)); - } - @GetMapping("formatted-list") public Response> getFormattedPaperList() { return new Response<>(paperService.getFormattedPaperList()); diff --git a/src/main/java/ru/ulstu/paper/model/Paper.java b/src/main/java/ru/ulstu/paper/model/Paper.java index f7b851c..6fd3db6 100644 --- a/src/main/java/ru/ulstu/paper/model/Paper.java +++ b/src/main/java/ru/ulstu/paper/model/Paper.java @@ -93,7 +93,7 @@ public class Paper extends BaseEntity implements UserActivity, EventSource { @Temporal(TemporalType.TIMESTAMP) private Date updateDate = new Date(); - @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER) + @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY) @JoinColumn(name = "paper_id", unique = true) @Fetch(FetchMode.SUBSELECT) @OrderBy("date") @@ -109,12 +109,12 @@ public class Paper extends BaseEntity implements UserActivity, EventSource { @JoinColumn(name = "paper_id") private List events = new ArrayList<>(); - @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER) + @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY) @JoinColumn(name = "paper_id", unique = true) @Fetch(FetchMode.SUBSELECT) private List files = new ArrayList<>(); - @ManyToMany(fetch = FetchType.EAGER) + @ManyToMany(fetch = FetchType.LAZY) private Set authors = new HashSet<>(); @Column(name = "latex_text") @@ -126,7 +126,7 @@ public class Paper extends BaseEntity implements UserActivity, EventSource { @ManyToMany(mappedBy = "papers") private List grants; - @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER) + @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY) @JoinColumn(name = "paper_id", unique = true) @Fetch(FetchMode.SUBSELECT) private List references = new ArrayList<>(); diff --git a/src/main/java/ru/ulstu/paper/model/PaperDashboardDto.java b/src/main/java/ru/ulstu/paper/model/PaperDashboardDto.java new file mode 100644 index 0000000..be50c3c --- /dev/null +++ b/src/main/java/ru/ulstu/paper/model/PaperDashboardDto.java @@ -0,0 +1,64 @@ +package ru.ulstu.paper.model; + +import ru.ulstu.user.model.UserDto; + +import java.util.Set; + +import static ru.ulstu.core.util.StreamApiUtils.convert; + +public class PaperDashboardDto { + + private Integer id; + private String title; + private Paper.PaperStatus status; + private Set authors; + private String url; + + public PaperDashboardDto(Paper paper) { + this.id = paper.getId(); + this.title = paper.getTitle(); + this.status = paper.getStatus(); + this.authors = convert(paper.getAuthors(), UserDto::new); + this.url = paper.getUrl(); + } + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public Paper.PaperStatus getStatus() { + return status; + } + + public void setStatus(Paper.PaperStatus status) { + this.status = status; + } + + public Set getAuthors() { + return authors; + } + + public void setAuthors(Set authors) { + this.authors = authors; + } + + public String getUrl() { + return url; + } + + public void setUrl(String url) { + this.url = url; + } +} diff --git a/src/main/java/ru/ulstu/paper/model/PaperFilterListDto.java b/src/main/java/ru/ulstu/paper/model/PaperFilterListDto.java new file mode 100644 index 0000000..85aec09 --- /dev/null +++ b/src/main/java/ru/ulstu/paper/model/PaperFilterListDto.java @@ -0,0 +1,51 @@ +package ru.ulstu.paper.model; + +import java.util.List; + +public class PaperFilterListDto { + private List papers; + private Integer filterAuthorId; + private Integer paperDeleteId; + private Integer year; + + public PaperFilterListDto() { + } + + public PaperFilterListDto(List paperDtos, Integer filterAuthorId, Integer year) { + this.papers = paperDtos; + this.filterAuthorId = filterAuthorId; + this.year = year; + } + + public List getPapers() { + return papers; + } + + public void setPapers(List papers) { + this.papers = papers; + } + + public Integer getFilterAuthorId() { + return filterAuthorId; + } + + public void setFilterAuthorId(Integer filterAuthorId) { + this.filterAuthorId = filterAuthorId; + } + + public Integer getYear() { + return year; + } + + public void setYear(Integer year) { + this.year = year; + } + + public Integer getPaperDeleteId() { + return paperDeleteId; + } + + public void setPaperDeleteId(Integer paperDeleteId) { + this.paperDeleteId = paperDeleteId; + } +} diff --git a/src/main/java/ru/ulstu/paper/model/PaperListDto.java b/src/main/java/ru/ulstu/paper/model/PaperListDto.java index 871047a..176f357 100644 --- a/src/main/java/ru/ulstu/paper/model/PaperListDto.java +++ b/src/main/java/ru/ulstu/paper/model/PaperListDto.java @@ -1,51 +1,54 @@ package ru.ulstu.paper.model; -import java.util.List; +import ru.ulstu.user.model.UserDto; + +import java.util.Set; + +import static ru.ulstu.core.util.StreamApiUtils.convert; public class PaperListDto { - private List papers; - private Integer filterAuthorId; - private Integer paperDeleteId; - private Integer year; - public PaperListDto() { - } + private Integer id; + private String title; + private Paper.PaperStatus status; + private Set authors; - public PaperListDto(List paperDtos, Integer filterAuthorId, Integer year) { - this.papers = paperDtos; - this.filterAuthorId = filterAuthorId; - this.year = year; + public PaperListDto(Paper paper) { + this.id = paper.getId(); + this.title = paper.getTitle(); + this.status = paper.getStatus(); + this.authors = convert(paper.getAuthors(), UserDto::new); } - public List getPapers() { - return papers; + public Integer getId() { + return id; } - public void setPapers(List papers) { - this.papers = papers; + public void setId(Integer id) { + this.id = id; } - public Integer getFilterAuthorId() { - return filterAuthorId; + public String getTitle() { + return title; } - public void setFilterAuthorId(Integer filterAuthorId) { - this.filterAuthorId = filterAuthorId; + public void setTitle(String title) { + this.title = title; } - public Integer getYear() { - return year; + public Paper.PaperStatus getStatus() { + return status; } - public void setYear(Integer year) { - this.year = year; + public void setStatus(Paper.PaperStatus status) { + this.status = status; } - public Integer getPaperDeleteId() { - return paperDeleteId; + public Set getAuthors() { + return authors; } - public void setPaperDeleteId(Integer paperDeleteId) { - this.paperDeleteId = paperDeleteId; + public void setAuthors(Set authors) { + this.authors = authors; } } diff --git a/src/main/java/ru/ulstu/paper/service/PaperService.java b/src/main/java/ru/ulstu/paper/service/PaperService.java index 9264205..a88360d 100644 --- a/src/main/java/ru/ulstu/paper/service/PaperService.java +++ b/src/main/java/ru/ulstu/paper/service/PaperService.java @@ -9,7 +9,9 @@ import ru.ulstu.file.model.FileDataDto; import ru.ulstu.file.service.FileService; import ru.ulstu.paper.model.AutoCompleteData; import ru.ulstu.paper.model.Paper; +import ru.ulstu.paper.model.PaperDashboardDto; import ru.ulstu.paper.model.PaperDto; +import ru.ulstu.paper.model.PaperFilterListDto; import ru.ulstu.paper.model.PaperListDto; import ru.ulstu.paper.model.PaperStatusDto; import ru.ulstu.paper.model.PaperTypeDto; @@ -81,10 +83,8 @@ public class PaperService { return sortPapers(paperRepository.findAll()); } - public List findAllDto() { - List papers = convert(findAll(), PaperDto::new); - papers.forEach(paperDto -> paperDto.setTitle(StringUtils.abbreviate(paperDto.getTitle(), MAX_DISPLAY_SIZE))); - return papers; + public List findAllDto() { + return convert(findAll(), PaperListDto::new); } private List findAllActive() { @@ -94,8 +94,8 @@ public class PaperService { .collect(toList()); } - public List findAllActiveDto() { - return convert(findAllActive(), PaperDto::new); + public List findAllActiveDto() { + return convert(findAllActive(), PaperDashboardDto::new); } public PaperDto findOneDto(Integer id) { @@ -248,10 +248,10 @@ public class PaperService { return paper; } - public List filter(PaperListDto filterDto) { + public List filter(PaperFilterListDto filterDto) { return convert(sortPapers(paperRepository.filter( filterDto.getFilterAuthorId() == null ? null : userService.findById(filterDto.getFilterAuthorId()), - filterDto.getYear())), PaperDto::new); + filterDto.getYear())), PaperListDto::new); } private List sortPapers(List papers) { diff --git a/src/main/resources/static/papers/paper-dashboard.vue b/src/main/resources/static/papers/paper-dashboard.vue index c9f2f8b..5a51c69 100644 --- a/src/main/resources/static/papers/paper-dashboard.vue +++ b/src/main/resources/static/papers/paper-dashboard.vue @@ -2,7 +2,7 @@
-
+
diff --git a/src/main/resources/static/papers/paper-item.vue b/src/main/resources/static/papers/paper-item.vue index 9431ef7..1821db5 100644 --- a/src/main/resources/static/papers/paper-item.vue +++ b/src/main/resources/static/papers/paper-item.vue @@ -6,7 +6,7 @@ :key="paper.id"> - {{ paper.title }} + {{ getTitle}}
@@ -35,6 +35,12 @@ authorsResult.push(author.lastName + " " + author.firstName); }); return authorsResult.join(', ') + }, + + getTitle: function () { + return this.paper.title.length > 60 + ? this.paper.title.substring(0, 60) + "..." + : this.paper.title; } } } diff --git a/src/main/resources/static/papers/paper-navigation.vue b/src/main/resources/static/papers/paper-navigation.vue index 2c4f847..1d28eb2 100644 --- a/src/main/resources/static/papers/paper-navigation.vue +++ b/src/main/resources/static/papers/paper-navigation.vue @@ -1,22 +1,28 @@ -- 2.25.1 From a9fb97bd2e642415564d52b93db853032f6df40c Mon Sep 17 00:00:00 2001 From: Anton Romanov Date: Sun, 30 Jun 2019 00:21:59 +0400 Subject: [PATCH 24/45] fix saving paper --- .../ru/ulstu/paper/service/PaperService.java | 33 ++++++++++++------- src/main/resources/static/js/app-axios.js | 16 ++++++++- src/main/resources/static/papers/paper.vue | 15 +++++++-- 3 files changed, 48 insertions(+), 16 deletions(-) diff --git a/src/main/java/ru/ulstu/paper/service/PaperService.java b/src/main/java/ru/ulstu/paper/service/PaperService.java index a88360d..efd1559 100644 --- a/src/main/java/ru/ulstu/paper/service/PaperService.java +++ b/src/main/java/ru/ulstu/paper/service/PaperService.java @@ -27,6 +27,7 @@ import ru.ulstu.user.service.UserService; import java.io.IOException; import java.text.MessageFormat; import java.util.Arrays; +import java.util.Collections; import java.util.Date; import java.util.HashSet; import java.util.List; @@ -131,9 +132,11 @@ public class PaperService { paper.setUpdateDate(new Date()); paper.setDeadlines(deadlineService.saveOrCreate(paperDto.getDeadlines())); paper.setReferences(saveOrCreateReferences(paperDto.getReferences())); - paper.setFiles(fileService.saveOrCreate(paperDto.getFiles().stream() - .filter(f -> !f.isDeleted()) - .collect(toList()))); + if (paperDto.getFiles() != null) { + paper.setFiles(fileService.saveOrCreate(paperDto.getFiles().stream() + .filter(f -> !f.isDeleted()) + .collect(toList()))); + } paper.getAuthors().clear(); if (paperDto.getAuthorIds() != null && !paperDto.getAuthorIds().isEmpty()) { paperDto.getAuthorIds().forEach(authorIds -> paper.getAuthors().add(userService.findById(authorIds))); @@ -142,7 +145,9 @@ public class PaperService { } private List saveOrCreateReferences(List references) { - return references + return references == null + ? Collections.emptyList() + : references .stream() .filter(reference -> !reference.getDeleted()) .map(reference -> reference.getId() != null ? updateReference(reference) : createReference(reference)) @@ -182,16 +187,20 @@ public class PaperService { Paper.PaperStatus oldStatus = paper.getStatus(); Set oldAuthors = new HashSet<>(paper.getAuthors()); - for (FileDataDto file : paperDto.getFiles().stream() - .filter(f -> f.isDeleted() && f.getId() != null) - .collect(toList())) { - fileService.delete(file.getId()); + if (paperDto.getFiles() != null) { + for (FileDataDto file : paperDto.getFiles().stream() + .filter(f -> f.isDeleted() && f.getId() != null) + .collect(toList())) { + fileService.delete(file.getId()); + } } paperRepository.save(copyFromDto(paper, paperDto)); - for (ReferenceDto referenceDto : paperDto.getReferences().stream() - .filter(f -> f.getDeleted() && f.getId() != null) - .collect(toList())) { - referenceRepository.deleteById(referenceDto.getId()); + if (paperDto.getReferences() != null) { + for (ReferenceDto referenceDto : paperDto.getReferences().stream() + .filter(f -> f.getDeleted() && f.getId() != null) + .collect(toList())) { + referenceRepository.deleteById(referenceDto.getId()); + } } eventService.updatePaperDeadlines(paper); diff --git a/src/main/resources/static/js/app-axios.js b/src/main/resources/static/js/app-axios.js index 11c8c10..88abb81 100644 --- a/src/main/resources/static/js/app-axios.js +++ b/src/main/resources/static/js/app-axios.js @@ -56,8 +56,22 @@ }); } + function axiosPut(url, data, resolv, reject) { + axios.put(url, JSON.stringify(data), axiosConfig) + .then(function (result) { + errorHandler(result, resolv, reject); + }) + .catch(function (error) { + setTimeout(function () { + throw Error(error); + } + ); + }); + } + return { get: axiosGet, - post: axiosPost + post: axiosPost, + put: axiosPut }; }); \ No newline at end of file diff --git a/src/main/resources/static/papers/paper.vue b/src/main/resources/static/papers/paper.vue index ffb8b2c..3c09d19 100644 --- a/src/main/resources/static/papers/paper.vue +++ b/src/main/resources/static/papers/paper.vue @@ -9,8 +9,7 @@
-
+
@@ -151,10 +152,19 @@ } }, savePaper: function (event) { + this.paper.deadlines = [{ + date: "2019-05-25T16:34:57.457+0000", + description: "123" + }]; + var self = this; if (this.$route.query.id && Number.isInteger(parseInt(this.$route.query.id)) && parseInt(this.$route.query.id) != 0) { - axiosEx.put(appConfig.paper, this.paper); + axiosEx.put(appConfig.paper, this.paper, function () { + self.$router.push('/papers/papers') + }); } else { - axiosEx.post(appConfig.paper, this.paper); + axiosEx.post(appConfig.paper, this.paper, function () { + self.$router.push('/papers/papers') + }); } this.$store.dispatch("addSuccessMessage", "Статья успешно сохранена!"); event.preventDefault(); -- 2.25.1 From 1fbee8f0f2265f4aba446a2807309579bab9bff5 Mon Sep 17 00:00:00 2001 From: Anton Romanov Date: Mon, 1 Jul 2019 00:51:24 +0400 Subject: [PATCH 26/45] -- fixes for dashboard --- src/main/java/ru/ulstu/paper/repository/PaperRepository.java | 2 +- src/main/resources/static/papers/paper-dashboard.vue | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/ru/ulstu/paper/repository/PaperRepository.java b/src/main/java/ru/ulstu/paper/repository/PaperRepository.java index d79839e..dbcbc07 100644 --- a/src/main/java/ru/ulstu/paper/repository/PaperRepository.java +++ b/src/main/java/ru/ulstu/paper/repository/PaperRepository.java @@ -28,7 +28,7 @@ public interface PaperRepository extends JpaRepository { List findByIdNotInAndConferencesIsNullAndStatusNot(List paperIds, Paper.PaperStatus status); @Query("SELECT p FROM Paper p WHERE p.status NOT IN (:statuses)") - Page findAllWithoutStatuses(Pageable pageable, Paper.PaperStatus... statuses); + Page findAllWithoutStatuses(Pageable pageable, @Param("statuses") Paper.PaperStatus... statuses); @Query("SELECT p FROM Paper p ") Page findAll(Pageable pageable); diff --git a/src/main/resources/static/papers/paper-dashboard.vue b/src/main/resources/static/papers/paper-dashboard.vue index 5a51c69..c520fb6 100644 --- a/src/main/resources/static/papers/paper-dashboard.vue +++ b/src/main/resources/static/papers/paper-dashboard.vue @@ -25,9 +25,9 @@ mounted: function () { var self = this; axiosEx.get( - appConfig.paperDashboard, + appConfig.paperDashboard + "?offset=0&count=50", function (data) { - self.papers = data; + self.papers = data.items; }); } } -- 2.25.1 From c966a100dab028ae9769e928ef1c2b452cb76cef Mon Sep 17 00:00:00 2001 From: Anton Romanov Date: Mon, 1 Jul 2019 23:27:35 +0400 Subject: [PATCH 27/45] fix update paper --- src/main/java/ru/ulstu/paper/service/PaperService.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/main/java/ru/ulstu/paper/service/PaperService.java b/src/main/java/ru/ulstu/paper/service/PaperService.java index fc1eafd..4ed2962 100644 --- a/src/main/java/ru/ulstu/paper/service/PaperService.java +++ b/src/main/java/ru/ulstu/paper/service/PaperService.java @@ -54,6 +54,9 @@ public class PaperService extends AbstractActivityService oldAuthors; + public PaperService(PaperRepository paperRepository, FileService fileService, PaperNotificationService paperNotificationService, @@ -99,8 +102,6 @@ public class PaperService extends AbstractActivityService oldAuthors = new HashSet<>(paper.getAuthors()); paperRepository.save(paper); paperNotificationService.sendCreateNotification(paper, oldAuthors); paperNotificationService.statusChangeNotification(paper, oldStatus); @@ -116,6 +117,8 @@ public class PaperService extends AbstractActivityService new EntityNotFoundException("Paper with id=" + paperDto.getId() + " not found")); + oldStatus = paper.getStatus(); + oldAuthors = new HashSet<>(paper.getAuthors()); //TODO: move to service if (paperDto.getFiles() != null) { -- 2.25.1 From 7c0a8be51bb94be11a6467cfb36526fa755b9b9c Mon Sep 17 00:00:00 2001 From: Anton Romanov Date: Mon, 1 Jul 2019 23:34:29 +0400 Subject: [PATCH 28/45] fix saving paper --- .../boundary/model/ScienceGroupMemberDto.java | 69 +++++++++++++++++++ .../ulstu/paper/model/PaperDashboardDto.java | 10 +-- .../java/ru/ulstu/paper/model/PaperDto.java | 12 ++-- .../ru/ulstu/paper/model/PaperListDto.java | 14 ++-- .../paper/repository/PaperRepository.java | 4 +- .../ru/ulstu/paper/service/PaperService.java | 13 ++-- .../static/papers/paper-dashboard-item.vue | 2 +- src/main/resources/static/papers/paper.vue | 24 +++++-- 8 files changed, 113 insertions(+), 35 deletions(-) create mode 100644 src/main/java/ru/ulstu/boundary/model/ScienceGroupMemberDto.java diff --git a/src/main/java/ru/ulstu/boundary/model/ScienceGroupMemberDto.java b/src/main/java/ru/ulstu/boundary/model/ScienceGroupMemberDto.java new file mode 100644 index 0000000..25ccdae --- /dev/null +++ b/src/main/java/ru/ulstu/boundary/model/ScienceGroupMemberDto.java @@ -0,0 +1,69 @@ +package ru.ulstu.boundary.model; + +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonProperty; +import ru.ulstu.user.model.User; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.Size; + +public class ScienceGroupMemberDto { + + private Integer id; + + @NotBlank + @Size(min = 2, max = 50) + private String firstName; + + @NotBlank + @Size(min = 2, max = 50) + private String lastName; + + @JsonCreator + public ScienceGroupMemberDto(@JsonProperty("id") Integer id, + @JsonProperty("firstName") String firstName, + @JsonProperty("lastName") String lastName) { + this.id = id; + this.firstName = firstName; + this.lastName = lastName; + } + + public ScienceGroupMemberDto(User user) { + this.id = user.getId(); + this.firstName = user.getFirstName(); + this.lastName = user.getLastName(); + } + + public String getFirstName() { + return firstName; + } + + public void setFirstName(String firstName) { + this.firstName = firstName; + } + + public String getLastName() { + return lastName; + } + + public void setLastName(String lastName) { + this.lastName = lastName; + } + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + @Override + public String toString() { + return "ScienceGroupMember{" + + "id=" + id + + ", firstName='" + firstName + '\'' + + ", lastName='" + lastName + '\'' + + '}'; + } +} diff --git a/src/main/java/ru/ulstu/paper/model/PaperDashboardDto.java b/src/main/java/ru/ulstu/paper/model/PaperDashboardDto.java index be50c3c..643112c 100644 --- a/src/main/java/ru/ulstu/paper/model/PaperDashboardDto.java +++ b/src/main/java/ru/ulstu/paper/model/PaperDashboardDto.java @@ -1,6 +1,6 @@ package ru.ulstu.paper.model; -import ru.ulstu.user.model.UserDto; +import ru.ulstu.boundary.model.ScienceGroupMemberDto; import java.util.Set; @@ -11,14 +11,14 @@ public class PaperDashboardDto { private Integer id; private String title; private Paper.PaperStatus status; - private Set authors; + private Set authors; private String url; public PaperDashboardDto(Paper paper) { this.id = paper.getId(); this.title = paper.getTitle(); this.status = paper.getStatus(); - this.authors = convert(paper.getAuthors(), UserDto::new); + this.authors = convert(paper.getAuthors(), ScienceGroupMemberDto::new); this.url = paper.getUrl(); } @@ -46,11 +46,11 @@ public class PaperDashboardDto { this.status = status; } - public Set getAuthors() { + public Set getAuthors() { return authors; } - public void setAuthors(Set authors) { + public void setAuthors(Set authors) { this.authors = authors; } diff --git a/src/main/java/ru/ulstu/paper/model/PaperDto.java b/src/main/java/ru/ulstu/paper/model/PaperDto.java index 9cac02e..24d8127 100644 --- a/src/main/java/ru/ulstu/paper/model/PaperDto.java +++ b/src/main/java/ru/ulstu/paper/model/PaperDto.java @@ -3,9 +3,9 @@ package ru.ulstu.paper.model; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; import ru.ulstu.boundary.model.ActivityDto; +import ru.ulstu.boundary.model.ScienceGroupMemberDto; import ru.ulstu.deadline.model.Deadline; import ru.ulstu.file.model.FileDataDto; -import ru.ulstu.user.model.UserDto; import javax.validation.constraints.NotEmpty; import javax.validation.constraints.Size; @@ -31,7 +31,7 @@ public class PaperDto implements ActivityDto { private String url; private Boolean locked; private List files = new ArrayList<>(); - private Set authors; + private Set authors; public String getLatexText() { return latexText; @@ -51,7 +51,7 @@ public class PaperDto implements ActivityDto { @JsonProperty("url") String url, @JsonProperty("locked") Boolean locked, @JsonProperty("files") List files, - @JsonProperty("authors") Set authors) { + @JsonProperty("authors") Set authors) { this.id = id; this.title = title; this.status = status; @@ -78,7 +78,7 @@ public class PaperDto implements ActivityDto { this.url = paper.getUrl(); this.locked = paper.getLocked(); this.files = convert(paper.getFiles(), FileDataDto::new); - this.authors = convert(paper.getAuthors(), UserDto::new); + this.authors = convert(paper.getAuthors(), ScienceGroupMemberDto::new); } public Integer getId() { @@ -161,11 +161,11 @@ public class PaperDto implements ActivityDto { this.files = files; } - public Set getAuthors() { + public Set getAuthors() { return authors; } - public void setAuthors(Set authors) { + public void setAuthors(Set authors) { this.authors = authors; } diff --git a/src/main/java/ru/ulstu/paper/model/PaperListDto.java b/src/main/java/ru/ulstu/paper/model/PaperListDto.java index a1c47f4..8bbf95b 100644 --- a/src/main/java/ru/ulstu/paper/model/PaperListDto.java +++ b/src/main/java/ru/ulstu/paper/model/PaperListDto.java @@ -1,7 +1,7 @@ package ru.ulstu.paper.model; import ru.ulstu.boundary.model.ActivityListDto; -import ru.ulstu.user.model.UserDto; +import ru.ulstu.boundary.model.ScienceGroupMemberDto; import java.util.Set; @@ -12,17 +12,13 @@ public class PaperListDto implements ActivityListDto { private Integer id; private String title; private Paper.PaperStatus status; - private Set authors; + private Set authors; public PaperListDto(Paper paper) { this.id = paper.getId(); this.title = paper.getTitle(); this.status = paper.getStatus(); - this.authors = convert(paper.getAuthors(), UserDto::new); - } - - public static PaperListDto createFromEntity(Paper entity) { - return new PaperListDto(entity); + this.authors = convert(paper.getAuthors(), ScienceGroupMemberDto::new); } public Integer getId() { @@ -49,11 +45,11 @@ public class PaperListDto implements ActivityListDto { this.status = status; } - public Set getAuthors() { + public Set getAuthors() { return authors; } - public void setAuthors(Set authors) { + public void setAuthors(Set authors) { this.authors = authors; } } diff --git a/src/main/java/ru/ulstu/paper/repository/PaperRepository.java b/src/main/java/ru/ulstu/paper/repository/PaperRepository.java index dbcbc07..fff4399 100644 --- a/src/main/java/ru/ulstu/paper/repository/PaperRepository.java +++ b/src/main/java/ru/ulstu/paper/repository/PaperRepository.java @@ -2,15 +2,15 @@ package ru.ulstu.paper.repository; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; -import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; +import ru.ulstu.core.repository.JpaDetachableRepository; import ru.ulstu.paper.model.Paper; import ru.ulstu.user.model.User; import java.util.List; -public interface PaperRepository extends JpaRepository { +public interface PaperRepository extends JpaDetachableRepository { @Query("SELECT p FROM Paper p WHERE (:author IS NULL OR :author MEMBER OF p.authors) AND (YEAR(p.createDate) = :year OR :year IS NULL)") List filter(@Param("author") User author, @Param("year") Integer year); diff --git a/src/main/java/ru/ulstu/paper/service/PaperService.java b/src/main/java/ru/ulstu/paper/service/PaperService.java index 4ed2962..fa8c978 100644 --- a/src/main/java/ru/ulstu/paper/service/PaperService.java +++ b/src/main/java/ru/ulstu/paper/service/PaperService.java @@ -44,7 +44,6 @@ import static ru.ulstu.paper.model.Paper.PaperStatus.ON_PREPARATION; import static ru.ulstu.paper.model.Paper.PaperType.OTHER; @Service -@Transactional public class PaperService extends AbstractActivityService { private final PaperNotificationService paperNotificationService; private final PaperRepository paperRepository; @@ -100,7 +99,6 @@ public class PaperService extends AbstractActivityService new EntityNotFoundException("Paper with id=" + paperDto.getId() + " not found")); + Paper paper = findPaperById(paperDto.getId()); oldStatus = paper.getStatus(); oldAuthors = new HashSet<>(paper.getAuthors()); @@ -151,6 +148,7 @@ public class PaperService extends AbstractActivityService paper.getAuthors().add(userService.findById(authors.getId()))); } @@ -224,7 +222,7 @@ public class PaperService extends AbstractActivityService new EntityNotFoundException("Paper with id=" + paperId + " not found")); } public List findAllNotSelect(List paperIds) { diff --git a/src/main/resources/static/papers/paper-dashboard-item.vue b/src/main/resources/static/papers/paper-dashboard-item.vue index f09ab42..6818c3b 100644 --- a/src/main/resources/static/papers/paper-dashboard-item.vue +++ b/src/main/resources/static/papers/paper-dashboard-item.vue @@ -15,7 +15,7 @@

- + {{ paper.title }}

{{ getAuthors }}

diff --git a/src/main/resources/static/papers/paper.vue b/src/main/resources/static/papers/paper.vue index 3ee951a..2e30178 100644 --- a/src/main/resources/static/papers/paper.vue +++ b/src/main/resources/static/papers/paper.vue @@ -32,14 +32,14 @@
-
- @@ -49,13 +49,24 @@
+ v-model="paper.comment">
@@ -168,6 +179,9 @@ } this.$store.dispatch("addSuccessMessage", "Статья успешно сохранена!"); event.preventDefault(); + }, + hasUrl: function () { + return this.paper.url !== null && this.paper.url !== ''; } }, mounted: function () { -- 2.25.1 From 119f5a52ab686394c332b30309ec9104633c2f5a Mon Sep 17 00:00:00 2001 From: Anton Romanov Date: Sun, 7 Jul 2019 17:22:42 +0400 Subject: [PATCH 29/45] create api for activities --- .../activity/api/ActivityController.java | 31 ++++ .../api/ActivityRepository.java} | 4 +- .../api/model/ActivityDashboardDto.java | 4 + .../ulstu/activity/api/model/ActivityDto.java | 4 + .../activity/api/model/ActivityListDto.java | 19 ++ .../boundary}/timetable/TimetableService.java | 8 +- .../errors/TimetableClientException.java | 2 +- .../boundary}/timetable/model/Day.java | 2 +- .../boundary}/timetable/model/Lesson.java | 2 +- .../boundary}/timetable/model/Response.java | 2 +- .../timetable/model/TimetableResponse.java | 2 +- .../boundary}/timetable/model/Week.java | 2 +- .../common}/model/AbstractActivity.java | 7 +- .../common}/model/EventSource.java | 6 +- .../common}/model/ScienceGroupMemberDto.java | 10 +- .../service/AbstractActivityService.java | 17 +- .../strategy/api/EntityCreateStrategy.java | 10 +- .../api/StrategyEntityCreateExecutor.java | 2 +- .../conference/model/Conference.java | 27 ++- .../conference/model/ConferenceDto.java | 10 +- .../conference/model/ConferenceFilterDto.java | 2 +- .../conference/model/ConferenceListDto.java | 21 +++ .../conference/model/ConferenceUser.java | 2 +- .../repository/ConferenceRepository.java | 8 +- .../repository/ConferenceUserRepository.java | 4 +- .../ConferenceNotificationService.java | 6 +- .../service/ConferenceScheduler.java | 10 +- .../conference/service/ConferenceService.java | 104 ++++++----- .../service/ConferenceUserService.java | 6 +- .../deadline/model/Deadline.java | 2 +- .../repository/DeadlineRepository.java | 4 +- .../deadline/service/DeadlineService.java | 6 +- .../{ => activity}/file/FileController.java | 8 +- .../{ => activity}/file/model/FileData.java | 2 +- .../file/model/FileDataDto.java | 2 +- .../file/repostory/FileRepository.java | 4 +- .../file/service/FileService.java | 10 +- .../grant/controller/GrantRestController.java | 4 +- .../{ => activity}/grant/model/Grant.java | 31 ++-- .../{ => activity}/grant/model/GrantDto.java | 34 ++-- .../activity/grant/model/GrantListDto.java | 28 +++ .../{ => activity}/grant/page/KiasPage.java | 2 +- .../grant/repository/GrantRepository.java | 8 +- .../service/GrantNotificationService.java | 4 +- .../grant/service/GrantScheduler.java | 2 +- .../grant/service/GrantService.java | 148 +++++++++------- .../grant/service/KiasService.java | 6 +- .../paper/controller/PaperController.java | 30 ++-- .../paper/model/AutoCompleteData.java | 2 +- .../{ => activity}/paper/model/Paper.java | 31 ++-- .../paper/model/PaperDashboardDto.java | 7 +- .../{ => activity}/paper/model/PaperDto.java | 10 +- .../paper/model/PaperFilterListDto.java | 2 +- .../activity/paper/model/PaperListDto.java | 27 +++ .../paper/model/PaperStatusDto.java | 2 +- .../paper/model/PaperTypeDto.java | 2 +- .../{ => activity}/paper/model/Reference.java | 2 +- .../paper/model/ReferenceDto.java | 2 +- .../paper/repository/PaperRepository.java | 4 +- .../paper/repository/ReferenceRepository.java | 4 +- .../paper/service/LatexService.java | 6 +- .../paper/service/PaperCreateStrategy.java | 6 +- .../service/PaperNotificationService.java | 4 +- .../paper/service/PaperScheduler.java | 2 +- .../paper/service/PaperService.java | 48 ++--- .../ulstu/{ => activity}/ping/model/Ping.java | 18 +- .../{ => activity}/ping/model/PingInfo.java | 2 +- .../ping/repository/PingRepository.java | 6 +- .../ping/service/PingScheduler.java | 14 +- .../ping/service/PingService.java | 13 +- .../project/controller/ProjectController.java | 12 +- .../{ => activity}/project/model/Project.java | 27 ++- .../project/model/ProjectDto.java | 8 +- .../project/repository/ProjectRepository.java | 4 +- .../project/service/ProjectService.java | 26 +-- .../students/controller/Navigation.java | 2 +- .../students/controller/TaskController.java | 20 +-- .../students/model/Scheduler.java | 2 +- .../{ => activity}/students/model/Task.java | 10 +- .../students/model/TaskDto.java | 6 +- .../students/model/TaskFilterDto.java | 2 +- .../repository/SchedulerRepository.java | 6 +- .../students/repository/TaskRepository.java | 6 +- .../students/service/SchedulerService.java | 10 +- .../service/TaskGenerationService.java | 2 +- .../students/service/TaskService.java | 26 +-- .../ulstu/{ => activity}/tags/model/Tag.java | 2 +- .../tags/repository/TagRepository.java | 4 +- .../tags/service/TagService.java | 6 +- .../timeline/controller/EventController.java | 6 +- .../{ => activity}/timeline/model/Event.java | 12 +- .../timeline/model/EventDto.java | 12 +- .../timeline/model/PeriodEvent.java | 2 +- .../timeline/model/Timeline.java | 2 +- .../timeline/model/TimelineDto.java | 2 +- .../timeline/repository/EventRepository.java | 14 +- .../repository/TimelineRepository.java | 4 +- .../timeline/service/EventScheduler.java | 6 +- .../timeline/service/EventService.java | 24 +-- .../timeline/service/TimelineService.java | 10 +- .../ru/ulstu/boundary/model/ActivityDto.java | 4 - .../ulstu/boundary/model/ActivityListDto.java | 4 - .../controller/ConferenceController.java | 165 ------------------ .../ru/ulstu/core/controller/Navigation.java | 19 -- .../ru/ulstu/core/model/UserActivity.java | 11 -- .../grant/controller/GrantController.java | 133 -------------- src/main/java/ru/ulstu/name/BaseService.java | 23 --- .../java/ru/ulstu/name/NameContainer.java | 14 -- .../ru/ulstu/paper/model/PaperListDto.java | 55 ------ .../java/ru/ulstu/user/model/UserInfoNow.java | 4 +- .../ru/ulstu/user/service/UserService.java | 18 +- .../grantAuthorsChangeNotification.html | 2 +- src/main/resources/public/js/core.js | 2 +- src/main/resources/public/js/file-loader.js | 8 +- src/main/resources/public/js/tasks.js | 6 +- .../service/ConferenceServiceTest.java | 24 +-- .../grant/service/GrantServiceTest.java | 20 +-- .../project/service/ProjectServiceTest.java | 22 +-- .../students/service/TaskServiceTest.java | 24 +-- 119 files changed, 738 insertions(+), 978 deletions(-) create mode 100644 src/main/java/ru/ulstu/activity/api/ActivityController.java rename src/main/java/ru/ulstu/{name/BaseRepository.java => activity/api/ActivityRepository.java} (67%) create mode 100644 src/main/java/ru/ulstu/activity/api/model/ActivityDashboardDto.java create mode 100644 src/main/java/ru/ulstu/activity/api/model/ActivityDto.java create mode 100644 src/main/java/ru/ulstu/activity/api/model/ActivityListDto.java rename src/main/java/ru/ulstu/{utils => activity/boundary}/timetable/TimetableService.java (92%) rename src/main/java/ru/ulstu/{utils => activity/boundary}/timetable/errors/TimetableClientException.java (74%) rename src/main/java/ru/ulstu/{utils => activity/boundary}/timetable/model/Day.java (89%) rename src/main/java/ru/ulstu/{utils => activity/boundary}/timetable/model/Lesson.java (88%) rename src/main/java/ru/ulstu/{utils => activity/boundary}/timetable/model/Response.java (84%) rename src/main/java/ru/ulstu/{utils => activity/boundary}/timetable/model/TimetableResponse.java (88%) rename src/main/java/ru/ulstu/{utils => activity/boundary}/timetable/model/Week.java (85%) rename src/main/java/ru/ulstu/{boundary => activity/common}/model/AbstractActivity.java (64%) rename src/main/java/ru/ulstu/{core => activity/common}/model/EventSource.java (62%) rename src/main/java/ru/ulstu/{boundary => activity/common}/model/ScienceGroupMemberDto.java (82%) rename src/main/java/ru/ulstu/{boundary => activity/common}/service/AbstractActivityService.java (51%) rename src/main/java/ru/ulstu/{ => activity/common}/strategy/api/EntityCreateStrategy.java (67%) rename src/main/java/ru/ulstu/{ => activity/common}/strategy/api/StrategyEntityCreateExecutor.java (94%) rename src/main/java/ru/ulstu/{ => activity}/conference/model/Conference.java (88%) rename src/main/java/ru/ulstu/{ => activity}/conference/model/ConferenceDto.java (96%) rename src/main/java/ru/ulstu/{ => activity}/conference/model/ConferenceFilterDto.java (95%) create mode 100644 src/main/java/ru/ulstu/activity/conference/model/ConferenceListDto.java rename src/main/java/ru/ulstu/{ => activity}/conference/model/ConferenceUser.java (98%) rename src/main/java/ru/ulstu/{ => activity}/conference/repository/ConferenceRepository.java (89%) rename src/main/java/ru/ulstu/{ => activity}/conference/repository/ConferenceUserRepository.java (59%) rename src/main/java/ru/ulstu/{ => activity}/conference/service/ConferenceNotificationService.java (97%) rename src/main/java/ru/ulstu/{ => activity}/conference/service/ConferenceScheduler.java (83%) rename src/main/java/ru/ulstu/{ => activity}/conference/service/ConferenceService.java (80%) rename src/main/java/ru/ulstu/{ => activity}/conference/service/ConferenceUserService.java (89%) rename src/main/java/ru/ulstu/{ => activity}/deadline/model/Deadline.java (98%) rename src/main/java/ru/ulstu/{ => activity}/deadline/repository/DeadlineRepository.java (82%) rename src/main/java/ru/ulstu/{ => activity}/deadline/service/DeadlineService.java (90%) rename src/main/java/ru/ulstu/{ => activity}/file/FileController.java (92%) rename src/main/java/ru/ulstu/{ => activity}/file/model/FileData.java (96%) rename src/main/java/ru/ulstu/{ => activity}/file/model/FileDataDto.java (98%) rename src/main/java/ru/ulstu/{ => activity}/file/repostory/FileRepository.java (61%) rename src/main/java/ru/ulstu/{ => activity}/file/service/FileService.java (95%) rename src/main/java/ru/ulstu/{ => activity}/grant/controller/GrantRestController.java (87%) rename src/main/java/ru/ulstu/{ => activity}/grant/model/Grant.java (90%) rename src/main/java/ru/ulstu/{ => activity}/grant/model/GrantDto.java (88%) create mode 100644 src/main/java/ru/ulstu/activity/grant/model/GrantListDto.java rename src/main/java/ru/ulstu/{ => activity}/grant/page/KiasPage.java (97%) rename src/main/java/ru/ulstu/{ => activity}/grant/repository/GrantRepository.java (81%) rename src/main/java/ru/ulstu/{ => activity}/grant/service/GrantNotificationService.java (97%) rename src/main/java/ru/ulstu/{ => activity}/grant/service/GrantScheduler.java (97%) rename src/main/java/ru/ulstu/{ => activity}/grant/service/GrantService.java (80%) rename src/main/java/ru/ulstu/{ => activity}/grant/service/KiasService.java (95%) rename src/main/java/ru/ulstu/{ => activity}/paper/controller/PaperController.java (70%) rename src/main/java/ru/ulstu/{ => activity}/paper/model/AutoCompleteData.java (96%) rename src/main/java/ru/ulstu/{ => activity}/paper/model/Paper.java (93%) rename src/main/java/ru/ulstu/{ => activity}/paper/model/PaperDashboardDto.java (84%) rename src/main/java/ru/ulstu/{ => activity}/paper/model/PaperDto.java (94%) rename src/main/java/ru/ulstu/{ => activity}/paper/model/PaperFilterListDto.java (96%) create mode 100644 src/main/java/ru/ulstu/activity/paper/model/PaperListDto.java rename src/main/java/ru/ulstu/{ => activity}/paper/model/PaperStatusDto.java (89%) rename src/main/java/ru/ulstu/{ => activity}/paper/model/PaperTypeDto.java (89%) rename src/main/java/ru/ulstu/{ => activity}/paper/model/Reference.java (98%) rename src/main/java/ru/ulstu/{ => activity}/paper/model/ReferenceDto.java (99%) rename src/main/java/ru/ulstu/{ => activity}/paper/repository/PaperRepository.java (93%) rename src/main/java/ru/ulstu/{ => activity}/paper/repository/ReferenceRepository.java (89%) rename src/main/java/ru/ulstu/{ => activity}/paper/service/LatexService.java (95%) rename src/main/java/ru/ulstu/{ => activity}/paper/service/PaperCreateStrategy.java (85%) rename src/main/java/ru/ulstu/{ => activity}/paper/service/PaperNotificationService.java (97%) rename src/main/java/ru/ulstu/{ => activity}/paper/service/PaperScheduler.java (97%) rename src/main/java/ru/ulstu/{ => activity}/paper/service/PaperService.java (87%) rename src/main/java/ru/ulstu/{ => activity}/ping/model/Ping.java (82%) rename src/main/java/ru/ulstu/{ => activity}/ping/model/PingInfo.java (94%) rename src/main/java/ru/ulstu/{ => activity}/ping/repository/PingRepository.java (86%) rename src/main/java/ru/ulstu/{ => activity}/ping/service/PingScheduler.java (82%) rename src/main/java/ru/ulstu/{ => activity}/ping/service/PingService.java (79%) rename src/main/java/ru/ulstu/{ => activity}/project/controller/ProjectController.java (93%) rename src/main/java/ru/ulstu/{ => activity}/project/model/Project.java (90%) rename src/main/java/ru/ulstu/{ => activity}/project/model/ProjectDto.java (96%) rename src/main/java/ru/ulstu/{ => activity}/project/repository/ProjectRepository.java (60%) rename src/main/java/ru/ulstu/{ => activity}/project/service/ProjectService.java (89%) rename src/main/java/ru/ulstu/{ => activity}/students/controller/Navigation.java (89%) rename src/main/java/ru/ulstu/{ => activity}/students/controller/TaskController.java (86%) rename src/main/java/ru/ulstu/{ => activity}/students/model/Scheduler.java (96%) rename src/main/java/ru/ulstu/{ => activity}/students/model/Task.java (93%) rename src/main/java/ru/ulstu/{ => activity}/students/model/TaskDto.java (97%) rename src/main/java/ru/ulstu/{ => activity}/students/model/TaskFilterDto.java (96%) rename src/main/java/ru/ulstu/{ => activity}/students/repository/SchedulerRepository.java (56%) rename src/main/java/ru/ulstu/{ => activity}/students/repository/TaskRepository.java (88%) rename src/main/java/ru/ulstu/{ => activity}/students/service/SchedulerService.java (93%) rename src/main/java/ru/ulstu/{ => activity}/students/service/TaskGenerationService.java (95%) rename src/main/java/ru/ulstu/{ => activity}/students/service/TaskService.java (92%) rename src/main/java/ru/ulstu/{ => activity}/tags/model/Tag.java (97%) rename src/main/java/ru/ulstu/{ => activity}/tags/repository/TagRepository.java (81%) rename src/main/java/ru/ulstu/{ => activity}/tags/service/TagService.java (91%) rename src/main/java/ru/ulstu/{ => activity}/timeline/controller/EventController.java (91%) rename src/main/java/ru/ulstu/{ => activity}/timeline/model/Event.java (94%) rename src/main/java/ru/ulstu/{ => activity}/timeline/model/EventDto.java (94%) rename src/main/java/ru/ulstu/{ => activity}/timeline/model/PeriodEvent.java (93%) rename src/main/java/ru/ulstu/{ => activity}/timeline/model/Timeline.java (93%) rename src/main/java/ru/ulstu/{ => activity}/timeline/model/TimelineDto.java (94%) rename src/main/java/ru/ulstu/{ => activity}/timeline/repository/EventRepository.java (67%) rename src/main/java/ru/ulstu/{ => activity}/timeline/repository/TimelineRepository.java (59%) rename src/main/java/ru/ulstu/{ => activity}/timeline/service/EventScheduler.java (95%) rename src/main/java/ru/ulstu/{ => activity}/timeline/service/EventService.java (91%) rename src/main/java/ru/ulstu/{ => activity}/timeline/service/TimelineService.java (86%) delete mode 100644 src/main/java/ru/ulstu/boundary/model/ActivityDto.java delete mode 100644 src/main/java/ru/ulstu/boundary/model/ActivityListDto.java delete mode 100644 src/main/java/ru/ulstu/conference/controller/ConferenceController.java delete mode 100644 src/main/java/ru/ulstu/core/controller/Navigation.java delete mode 100644 src/main/java/ru/ulstu/core/model/UserActivity.java delete mode 100644 src/main/java/ru/ulstu/grant/controller/GrantController.java delete mode 100644 src/main/java/ru/ulstu/name/BaseService.java delete mode 100644 src/main/java/ru/ulstu/name/NameContainer.java delete mode 100644 src/main/java/ru/ulstu/paper/model/PaperListDto.java rename src/test/java/ru/ulstu/{ => activity}/conference/service/ConferenceServiceTest.java (93%) rename src/test/java/ru/ulstu/{ => activity}/grant/service/GrantServiceTest.java (92%) rename src/test/java/ru/ulstu/{ => activity}/project/service/ProjectServiceTest.java (87%) rename src/test/java/ru/ulstu/{ => activity}/students/service/TaskServiceTest.java (91%) diff --git a/src/main/java/ru/ulstu/activity/api/ActivityController.java b/src/main/java/ru/ulstu/activity/api/ActivityController.java new file mode 100644 index 0000000..0fd5d1e --- /dev/null +++ b/src/main/java/ru/ulstu/activity/api/ActivityController.java @@ -0,0 +1,31 @@ +package ru.ulstu.activity.api; + +import ru.ulstu.activity.api.model.ActivityDashboardDto; +import ru.ulstu.activity.api.model.ActivityDto; +import ru.ulstu.activity.api.model.ActivityListDto; +import ru.ulstu.core.model.response.PageableItems; +import ru.ulstu.core.model.response.Response; + +/** + * Базовый API для контролеров активностей + * + * @param + * @param + * @param + */ +public interface ActivityController { + + Response> getList(int offset, int count); + + Response> getDashboard(int offset, int count); + + Response get(Integer entityId); + + Response create(ENTITYDTO entity); + + Response update(ENTITYDTO entity); + + Response delete(Integer entityId); + + void ping(int entityId); +} diff --git a/src/main/java/ru/ulstu/name/BaseRepository.java b/src/main/java/ru/ulstu/activity/api/ActivityRepository.java similarity index 67% rename from src/main/java/ru/ulstu/name/BaseRepository.java rename to src/main/java/ru/ulstu/activity/api/ActivityRepository.java index b691ea2..7353958 100644 --- a/src/main/java/ru/ulstu/name/BaseRepository.java +++ b/src/main/java/ru/ulstu/activity/api/ActivityRepository.java @@ -1,7 +1,7 @@ -package ru.ulstu.name; +package ru.ulstu.activity.api; import org.springframework.data.repository.query.Param; -public interface BaseRepository { +public interface ActivityRepository { String findByNameAndNotId(@Param("name") String name, @Param("id") Integer id); } diff --git a/src/main/java/ru/ulstu/activity/api/model/ActivityDashboardDto.java b/src/main/java/ru/ulstu/activity/api/model/ActivityDashboardDto.java new file mode 100644 index 0000000..71695e6 --- /dev/null +++ b/src/main/java/ru/ulstu/activity/api/model/ActivityDashboardDto.java @@ -0,0 +1,4 @@ +package ru.ulstu.activity.api.model; + +public interface ActivityDashboardDto { +} \ No newline at end of file diff --git a/src/main/java/ru/ulstu/activity/api/model/ActivityDto.java b/src/main/java/ru/ulstu/activity/api/model/ActivityDto.java new file mode 100644 index 0000000..5675e18 --- /dev/null +++ b/src/main/java/ru/ulstu/activity/api/model/ActivityDto.java @@ -0,0 +1,4 @@ +package ru.ulstu.activity.api.model; + +public interface ActivityDto { +} diff --git a/src/main/java/ru/ulstu/activity/api/model/ActivityListDto.java b/src/main/java/ru/ulstu/activity/api/model/ActivityListDto.java new file mode 100644 index 0000000..52237eb --- /dev/null +++ b/src/main/java/ru/ulstu/activity/api/model/ActivityListDto.java @@ -0,0 +1,19 @@ +package ru.ulstu.activity.api.model; + +public abstract class ActivityListDto { + private final Integer id; + private final String title; + + protected ActivityListDto(Integer id, String title) { + this.id = id; + this.title = title; + } + + public Integer getId() { + return id; + } + + public String getTitle() { + return title; + } +} \ No newline at end of file diff --git a/src/main/java/ru/ulstu/utils/timetable/TimetableService.java b/src/main/java/ru/ulstu/activity/boundary/timetable/TimetableService.java similarity index 92% rename from src/main/java/ru/ulstu/utils/timetable/TimetableService.java rename to src/main/java/ru/ulstu/activity/boundary/timetable/TimetableService.java index b2a7874..56b82d2 100644 --- a/src/main/java/ru/ulstu/utils/timetable/TimetableService.java +++ b/src/main/java/ru/ulstu/activity/boundary/timetable/TimetableService.java @@ -1,12 +1,12 @@ -package ru.ulstu.utils.timetable; +package ru.ulstu.activity.boundary.timetable; import com.fasterxml.jackson.databind.ObjectMapper; import org.springframework.web.client.RestClientException; import org.springframework.web.client.RestTemplate; +import ru.ulstu.activity.boundary.timetable.errors.TimetableClientException; +import ru.ulstu.activity.boundary.timetable.model.Lesson; +import ru.ulstu.activity.boundary.timetable.model.TimetableResponse; import ru.ulstu.core.util.DateUtils; -import ru.ulstu.utils.timetable.errors.TimetableClientException; -import ru.ulstu.utils.timetable.model.Lesson; -import ru.ulstu.utils.timetable.model.TimetableResponse; import java.text.ParseException; import java.text.SimpleDateFormat; diff --git a/src/main/java/ru/ulstu/utils/timetable/errors/TimetableClientException.java b/src/main/java/ru/ulstu/activity/boundary/timetable/errors/TimetableClientException.java similarity index 74% rename from src/main/java/ru/ulstu/utils/timetable/errors/TimetableClientException.java rename to src/main/java/ru/ulstu/activity/boundary/timetable/errors/TimetableClientException.java index 4723bda..bb0aaf5 100644 --- a/src/main/java/ru/ulstu/utils/timetable/errors/TimetableClientException.java +++ b/src/main/java/ru/ulstu/activity/boundary/timetable/errors/TimetableClientException.java @@ -1,4 +1,4 @@ -package ru.ulstu.utils.timetable.errors; +package ru.ulstu.activity.boundary.timetable.errors; public class TimetableClientException extends RuntimeException { public TimetableClientException(String message) { diff --git a/src/main/java/ru/ulstu/utils/timetable/model/Day.java b/src/main/java/ru/ulstu/activity/boundary/timetable/model/Day.java similarity index 89% rename from src/main/java/ru/ulstu/utils/timetable/model/Day.java rename to src/main/java/ru/ulstu/activity/boundary/timetable/model/Day.java index 211165d..4448a8c 100644 --- a/src/main/java/ru/ulstu/utils/timetable/model/Day.java +++ b/src/main/java/ru/ulstu/activity/boundary/timetable/model/Day.java @@ -1,4 +1,4 @@ -package ru.ulstu.utils.timetable.model; +package ru.ulstu.activity.boundary.timetable.model; import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/ru/ulstu/utils/timetable/model/Lesson.java b/src/main/java/ru/ulstu/activity/boundary/timetable/model/Lesson.java similarity index 88% rename from src/main/java/ru/ulstu/utils/timetable/model/Lesson.java rename to src/main/java/ru/ulstu/activity/boundary/timetable/model/Lesson.java index 9c855bd..0df534b 100644 --- a/src/main/java/ru/ulstu/utils/timetable/model/Lesson.java +++ b/src/main/java/ru/ulstu/activity/boundary/timetable/model/Lesson.java @@ -1,4 +1,4 @@ -package ru.ulstu.utils.timetable.model; +package ru.ulstu.activity.boundary.timetable.model; public class Lesson { private String group; diff --git a/src/main/java/ru/ulstu/utils/timetable/model/Response.java b/src/main/java/ru/ulstu/activity/boundary/timetable/model/Response.java similarity index 84% rename from src/main/java/ru/ulstu/utils/timetable/model/Response.java rename to src/main/java/ru/ulstu/activity/boundary/timetable/model/Response.java index dfd3a84..0089433 100644 --- a/src/main/java/ru/ulstu/utils/timetable/model/Response.java +++ b/src/main/java/ru/ulstu/activity/boundary/timetable/model/Response.java @@ -1,4 +1,4 @@ -package ru.ulstu.utils.timetable.model; +package ru.ulstu.activity.boundary.timetable.model; import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/ru/ulstu/utils/timetable/model/TimetableResponse.java b/src/main/java/ru/ulstu/activity/boundary/timetable/model/TimetableResponse.java similarity index 88% rename from src/main/java/ru/ulstu/utils/timetable/model/TimetableResponse.java rename to src/main/java/ru/ulstu/activity/boundary/timetable/model/TimetableResponse.java index 118c979..06fbed6 100644 --- a/src/main/java/ru/ulstu/utils/timetable/model/TimetableResponse.java +++ b/src/main/java/ru/ulstu/activity/boundary/timetable/model/TimetableResponse.java @@ -1,4 +1,4 @@ -package ru.ulstu.utils.timetable.model; +package ru.ulstu.activity.boundary.timetable.model; public class TimetableResponse { private Response response; diff --git a/src/main/java/ru/ulstu/utils/timetable/model/Week.java b/src/main/java/ru/ulstu/activity/boundary/timetable/model/Week.java similarity index 85% rename from src/main/java/ru/ulstu/utils/timetable/model/Week.java rename to src/main/java/ru/ulstu/activity/boundary/timetable/model/Week.java index 8ea76ea..242d783 100644 --- a/src/main/java/ru/ulstu/utils/timetable/model/Week.java +++ b/src/main/java/ru/ulstu/activity/boundary/timetable/model/Week.java @@ -1,4 +1,4 @@ -package ru.ulstu.utils.timetable.model; +package ru.ulstu.activity.boundary.timetable.model; import java.io.Serializable; import java.util.ArrayList; diff --git a/src/main/java/ru/ulstu/boundary/model/AbstractActivity.java b/src/main/java/ru/ulstu/activity/common/model/AbstractActivity.java similarity index 64% rename from src/main/java/ru/ulstu/boundary/model/AbstractActivity.java rename to src/main/java/ru/ulstu/activity/common/model/AbstractActivity.java index 20039de..f4271dc 100644 --- a/src/main/java/ru/ulstu/boundary/model/AbstractActivity.java +++ b/src/main/java/ru/ulstu/activity/common/model/AbstractActivity.java @@ -1,6 +1,9 @@ -package ru.ulstu.boundary.model; +package ru.ulstu.activity.common.model; import ru.ulstu.core.model.BaseEntity; +import ru.ulstu.user.model.User; + +import java.util.Set; public abstract class AbstractActivity extends BaseEntity { private String title; @@ -12,4 +15,6 @@ public abstract class AbstractActivity extends BaseEntity { public void setTitle(String title) { this.title = title; } + + public abstract Set getActivityMembers(); } diff --git a/src/main/java/ru/ulstu/core/model/EventSource.java b/src/main/java/ru/ulstu/activity/common/model/EventSource.java similarity index 62% rename from src/main/java/ru/ulstu/core/model/EventSource.java rename to src/main/java/ru/ulstu/activity/common/model/EventSource.java index 32ffcf2..ffe8f4d 100644 --- a/src/main/java/ru/ulstu/core/model/EventSource.java +++ b/src/main/java/ru/ulstu/activity/common/model/EventSource.java @@ -1,7 +1,7 @@ -package ru.ulstu.core.model; +package ru.ulstu.activity.common.model; -import ru.ulstu.deadline.model.Deadline; -import ru.ulstu.timeline.model.Event; +import ru.ulstu.activity.deadline.model.Deadline; +import ru.ulstu.activity.timeline.model.Event; import ru.ulstu.user.model.User; import java.util.List; diff --git a/src/main/java/ru/ulstu/boundary/model/ScienceGroupMemberDto.java b/src/main/java/ru/ulstu/activity/common/model/ScienceGroupMemberDto.java similarity index 82% rename from src/main/java/ru/ulstu/boundary/model/ScienceGroupMemberDto.java rename to src/main/java/ru/ulstu/activity/common/model/ScienceGroupMemberDto.java index 25ccdae..694b837 100644 --- a/src/main/java/ru/ulstu/boundary/model/ScienceGroupMemberDto.java +++ b/src/main/java/ru/ulstu/activity/common/model/ScienceGroupMemberDto.java @@ -1,7 +1,8 @@ -package ru.ulstu.boundary.model; +package ru.ulstu.activity.common.model; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; +import ru.ulstu.activity.conference.model.ConferenceUser; import ru.ulstu.user.model.User; import javax.validation.constraints.NotBlank; @@ -34,6 +35,13 @@ public class ScienceGroupMemberDto { this.lastName = user.getLastName(); } + public ScienceGroupMemberDto(ConferenceUser conferenceUser) { + User user = conferenceUser.getUser(); + this.id = user.getId(); + this.firstName = user.getFirstName(); + this.lastName = user.getLastName(); + } + public String getFirstName() { return firstName; } diff --git a/src/main/java/ru/ulstu/boundary/service/AbstractActivityService.java b/src/main/java/ru/ulstu/activity/common/service/AbstractActivityService.java similarity index 51% rename from src/main/java/ru/ulstu/boundary/service/AbstractActivityService.java rename to src/main/java/ru/ulstu/activity/common/service/AbstractActivityService.java index 9c4af80..d964822 100644 --- a/src/main/java/ru/ulstu/boundary/service/AbstractActivityService.java +++ b/src/main/java/ru/ulstu/activity/common/service/AbstractActivityService.java @@ -1,13 +1,16 @@ -package ru.ulstu.boundary.service; +package ru.ulstu.activity.common.service; -import ru.ulstu.boundary.model.AbstractActivity; -import ru.ulstu.boundary.model.ActivityDto; -import ru.ulstu.boundary.model.ActivityListDto; +import ru.ulstu.activity.api.ActivityRepository; +import ru.ulstu.activity.api.model.ActivityDto; +import ru.ulstu.activity.api.model.ActivityListDto; +import ru.ulstu.activity.common.model.AbstractActivity; import ru.ulstu.core.model.response.PageableItems; import static ru.ulstu.core.util.StreamApiUtils.convertPageable; -public abstract class AbstractActivityService { +public abstract class AbstractActivityService { + + protected ActivityRepository activityRepository; public abstract T create(T entity); @@ -26,4 +29,8 @@ public abstract class AbstractActivityService { +public abstract class EntityCreateStrategy { protected abstract List getActiveEntities(); protected abstract void createEntity(User user); - private void createDefaultEntityIfNeed(List allUsers, List entities) { + private void createDefaultEntityIfNeed(List allUsers, List entities) { allUsers.forEach(user -> { if (entities .stream() - .filter(entity -> entity.getActivityUsers().contains(user)) + .filter(entity -> entity.getActivityMembers().contains(user)) .collect(Collectors.toSet()).isEmpty()) { createEntity(user); } diff --git a/src/main/java/ru/ulstu/strategy/api/StrategyEntityCreateExecutor.java b/src/main/java/ru/ulstu/activity/common/strategy/api/StrategyEntityCreateExecutor.java similarity index 94% rename from src/main/java/ru/ulstu/strategy/api/StrategyEntityCreateExecutor.java rename to src/main/java/ru/ulstu/activity/common/strategy/api/StrategyEntityCreateExecutor.java index c3d4d95..0ca34d5 100644 --- a/src/main/java/ru/ulstu/strategy/api/StrategyEntityCreateExecutor.java +++ b/src/main/java/ru/ulstu/activity/common/strategy/api/StrategyEntityCreateExecutor.java @@ -1,4 +1,4 @@ -package ru.ulstu.strategy.api; +package ru.ulstu.activity.common.strategy.api; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Service; diff --git a/src/main/java/ru/ulstu/conference/model/Conference.java b/src/main/java/ru/ulstu/activity/conference/model/Conference.java similarity index 88% rename from src/main/java/ru/ulstu/conference/model/Conference.java rename to src/main/java/ru/ulstu/activity/conference/model/Conference.java index d11901f..a0e61ef 100644 --- a/src/main/java/ru/ulstu/conference/model/Conference.java +++ b/src/main/java/ru/ulstu/activity/conference/model/Conference.java @@ -1,14 +1,13 @@ -package ru.ulstu.conference.model; +package ru.ulstu.activity.conference.model; import org.hibernate.annotations.Fetch; import org.hibernate.annotations.FetchMode; import org.springframework.format.annotation.DateTimeFormat; -import ru.ulstu.core.model.BaseEntity; -import ru.ulstu.core.model.EventSource; -import ru.ulstu.core.model.UserActivity; -import ru.ulstu.deadline.model.Deadline; -import ru.ulstu.paper.model.Paper; -import ru.ulstu.timeline.model.Event; +import ru.ulstu.activity.common.model.AbstractActivity; +import ru.ulstu.activity.common.model.EventSource; +import ru.ulstu.activity.deadline.model.Deadline; +import ru.ulstu.activity.paper.model.Paper; +import ru.ulstu.activity.timeline.model.Event; import ru.ulstu.user.model.User; import javax.persistence.CascadeType; @@ -36,7 +35,7 @@ import java.util.stream.Collectors; @Entity @Table(name = "conference") @DiscriminatorValue("CONFERENCE") -public class Conference extends BaseEntity implements UserActivity, EventSource { +public class Conference extends AbstractActivity implements EventSource { @NotBlank private String title; @@ -79,6 +78,10 @@ public class Conference extends BaseEntity implements UserActivity, EventSource return title; } + public void setTitle(String title) { + this.title = title; + } + @Override public List getRecipients() { List list = new ArrayList<>(); @@ -92,10 +95,6 @@ public class Conference extends BaseEntity implements UserActivity, EventSource event.setConference(this); } - public void setTitle(String title) { - this.title = title; - } - public String getDescription() { return description; } @@ -170,7 +169,7 @@ public class Conference extends BaseEntity implements UserActivity, EventSource } @Override - public Set getActivityUsers() { - return getUsers().stream().map(ConferenceUser::getUser).collect(Collectors.toSet()); + public Set getActivityMembers() { + return users.stream().map(conferenceUser -> conferenceUser.getUser()).collect(Collectors.toSet()); } } diff --git a/src/main/java/ru/ulstu/conference/model/ConferenceDto.java b/src/main/java/ru/ulstu/activity/conference/model/ConferenceDto.java similarity index 96% rename from src/main/java/ru/ulstu/conference/model/ConferenceDto.java rename to src/main/java/ru/ulstu/activity/conference/model/ConferenceDto.java index 7246854..f4952e7 100644 --- a/src/main/java/ru/ulstu/conference/model/ConferenceDto.java +++ b/src/main/java/ru/ulstu/activity/conference/model/ConferenceDto.java @@ -1,12 +1,12 @@ -package ru.ulstu.conference.model; +package ru.ulstu.activity.conference.model; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; import org.springframework.format.annotation.DateTimeFormat; +import ru.ulstu.activity.api.model.ActivityDto; +import ru.ulstu.activity.deadline.model.Deadline; +import ru.ulstu.activity.paper.model.Paper; import ru.ulstu.core.model.BaseEntity; -import ru.ulstu.deadline.model.Deadline; -import ru.ulstu.name.NameContainer; -import ru.ulstu.paper.model.Paper; import javax.persistence.Temporal; import javax.persistence.TemporalType; @@ -19,7 +19,7 @@ import java.util.Objects; import static ru.ulstu.core.util.StreamApiUtils.convert; -public class ConferenceDto extends NameContainer { +public class ConferenceDto implements ActivityDto { private final static String BEGIN_DATE = "Начало: "; private final static String END_DATE = "Конец: "; diff --git a/src/main/java/ru/ulstu/conference/model/ConferenceFilterDto.java b/src/main/java/ru/ulstu/activity/conference/model/ConferenceFilterDto.java similarity index 95% rename from src/main/java/ru/ulstu/conference/model/ConferenceFilterDto.java rename to src/main/java/ru/ulstu/activity/conference/model/ConferenceFilterDto.java index 0649901..c1b07b5 100644 --- a/src/main/java/ru/ulstu/conference/model/ConferenceFilterDto.java +++ b/src/main/java/ru/ulstu/activity/conference/model/ConferenceFilterDto.java @@ -1,4 +1,4 @@ -package ru.ulstu.conference.model; +package ru.ulstu.activity.conference.model; import java.util.List; diff --git a/src/main/java/ru/ulstu/activity/conference/model/ConferenceListDto.java b/src/main/java/ru/ulstu/activity/conference/model/ConferenceListDto.java new file mode 100644 index 0000000..d1a6f0a --- /dev/null +++ b/src/main/java/ru/ulstu/activity/conference/model/ConferenceListDto.java @@ -0,0 +1,21 @@ +package ru.ulstu.activity.conference.model; + +import ru.ulstu.activity.api.model.ActivityListDto; +import ru.ulstu.activity.common.model.ScienceGroupMemberDto; + +import java.util.Set; + +import static ru.ulstu.core.util.StreamApiUtils.convert; + +public class ConferenceListDto extends ActivityListDto { + private final Set members; + + public ConferenceListDto(Conference conference) { + super(conference.getId(), conference.getTitle()); + this.members = convert(conference.getActivityMembers(), ScienceGroupMemberDto::new); + } + + public Set getAuthors() { + return members; + } +} diff --git a/src/main/java/ru/ulstu/conference/model/ConferenceUser.java b/src/main/java/ru/ulstu/activity/conference/model/ConferenceUser.java similarity index 98% rename from src/main/java/ru/ulstu/conference/model/ConferenceUser.java rename to src/main/java/ru/ulstu/activity/conference/model/ConferenceUser.java index f00b9fa..057ff9e 100644 --- a/src/main/java/ru/ulstu/conference/model/ConferenceUser.java +++ b/src/main/java/ru/ulstu/activity/conference/model/ConferenceUser.java @@ -1,4 +1,4 @@ -package ru.ulstu.conference.model; +package ru.ulstu.activity.conference.model; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; diff --git a/src/main/java/ru/ulstu/conference/repository/ConferenceRepository.java b/src/main/java/ru/ulstu/activity/conference/repository/ConferenceRepository.java similarity index 89% rename from src/main/java/ru/ulstu/conference/repository/ConferenceRepository.java rename to src/main/java/ru/ulstu/activity/conference/repository/ConferenceRepository.java index 8f9e05f..2fd5243 100644 --- a/src/main/java/ru/ulstu/conference/repository/ConferenceRepository.java +++ b/src/main/java/ru/ulstu/activity/conference/repository/ConferenceRepository.java @@ -1,17 +1,17 @@ -package ru.ulstu.conference.repository; +package ru.ulstu.activity.conference.repository; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Modifying; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; -import ru.ulstu.conference.model.Conference; -import ru.ulstu.name.BaseRepository; +import ru.ulstu.activity.api.ActivityRepository; +import ru.ulstu.activity.conference.model.Conference; import ru.ulstu.user.model.User; import java.util.Date; import java.util.List; -public interface ConferenceRepository extends JpaRepository, BaseRepository { +public interface ConferenceRepository extends JpaRepository, ActivityRepository { @Query("SELECT c FROM Conference c LEFT JOIN c.users u WHERE (:user IS NULL OR u.user = :user) " + "AND (YEAR(c.beginDate) = :year OR :year IS NULL) ORDER BY begin_date DESC") List findByUserAndYear(@Param("user") User user, @Param("year") Integer year); diff --git a/src/main/java/ru/ulstu/conference/repository/ConferenceUserRepository.java b/src/main/java/ru/ulstu/activity/conference/repository/ConferenceUserRepository.java similarity index 59% rename from src/main/java/ru/ulstu/conference/repository/ConferenceUserRepository.java rename to src/main/java/ru/ulstu/activity/conference/repository/ConferenceUserRepository.java index 5e654d5..252f52c 100644 --- a/src/main/java/ru/ulstu/conference/repository/ConferenceUserRepository.java +++ b/src/main/java/ru/ulstu/activity/conference/repository/ConferenceUserRepository.java @@ -1,7 +1,7 @@ -package ru.ulstu.conference.repository; +package ru.ulstu.activity.conference.repository; import org.springframework.data.jpa.repository.JpaRepository; -import ru.ulstu.conference.model.ConferenceUser; +import ru.ulstu.activity.conference.model.ConferenceUser; public interface ConferenceUserRepository extends JpaRepository { } diff --git a/src/main/java/ru/ulstu/conference/service/ConferenceNotificationService.java b/src/main/java/ru/ulstu/activity/conference/service/ConferenceNotificationService.java similarity index 97% rename from src/main/java/ru/ulstu/conference/service/ConferenceNotificationService.java rename to src/main/java/ru/ulstu/activity/conference/service/ConferenceNotificationService.java index 961d369..db3a056 100644 --- a/src/main/java/ru/ulstu/conference/service/ConferenceNotificationService.java +++ b/src/main/java/ru/ulstu/activity/conference/service/ConferenceNotificationService.java @@ -1,10 +1,10 @@ -package ru.ulstu.conference.service; +package ru.ulstu.activity.conference.service; import com.google.common.collect.ImmutableMap; import org.springframework.stereotype.Service; -import ru.ulstu.conference.model.Conference; +import ru.ulstu.activity.conference.model.Conference; +import ru.ulstu.activity.ping.service.PingService; import ru.ulstu.core.util.DateUtils; -import ru.ulstu.ping.service.PingService; import ru.ulstu.user.service.MailService; import ru.ulstu.user.service.UserService; diff --git a/src/main/java/ru/ulstu/conference/service/ConferenceScheduler.java b/src/main/java/ru/ulstu/activity/conference/service/ConferenceScheduler.java similarity index 83% rename from src/main/java/ru/ulstu/conference/service/ConferenceScheduler.java rename to src/main/java/ru/ulstu/activity/conference/service/ConferenceScheduler.java index 6f8fe90..2d8df65 100644 --- a/src/main/java/ru/ulstu/conference/service/ConferenceScheduler.java +++ b/src/main/java/ru/ulstu/activity/conference/service/ConferenceScheduler.java @@ -1,10 +1,12 @@ -package ru.ulstu.conference.service; +package ru.ulstu.activity.conference.service; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Service; +import java.util.stream.Collectors; + @Service public class ConferenceScheduler { private final static boolean IS_DEADLINE_NOTIFICATION_BEFORE_WEEK = true; @@ -24,14 +26,16 @@ public class ConferenceScheduler { @Scheduled(cron = "0 0 8 * * MON", zone = "Europe/Samara") public void checkDeadlineBeforeWeek() { log.debug("ConferenceScheduler.checkDeadlineBeforeWeek started"); - conferenceNotificationService.sendDeadlineNotifications(conferenceService.findAll()); + conferenceNotificationService.sendDeadlineNotifications(conferenceService.findAll(0, 100) + .getItems().stream().collect(Collectors.toList())); log.debug("ConferenceScheduler.checkDeadlineBeforeWeek finished"); } @Scheduled(cron = "0 0 8 * * *", zone = "Europe/Samara") public void checkNewPing() { log.debug("ConferenceScheduler.checkPing started"); - conferenceNotificationService.sendPingNotifications(conferenceService.findAll()); + conferenceNotificationService.sendPingNotifications(conferenceService.findAll(0, 100) + .getItems().stream().collect(Collectors.toList())); log.debug("ConferenceScheduler.checkPing finished"); } } diff --git a/src/main/java/ru/ulstu/conference/service/ConferenceService.java b/src/main/java/ru/ulstu/activity/conference/service/ConferenceService.java similarity index 80% rename from src/main/java/ru/ulstu/conference/service/ConferenceService.java rename to src/main/java/ru/ulstu/activity/conference/service/ConferenceService.java index 470e712..11c98f5 100644 --- a/src/main/java/ru/ulstu/conference/service/ConferenceService.java +++ b/src/main/java/ru/ulstu/activity/conference/service/ConferenceService.java @@ -1,23 +1,25 @@ -package ru.ulstu.conference.service; +package ru.ulstu.activity.conference.service; -import org.apache.commons.lang3.StringUtils; -import org.springframework.data.domain.Sort; +import org.springframework.data.domain.Page; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.ui.ModelMap; import org.springframework.validation.Errors; -import ru.ulstu.conference.model.Conference; -import ru.ulstu.conference.model.ConferenceDto; -import ru.ulstu.conference.model.ConferenceFilterDto; -import ru.ulstu.conference.model.ConferenceUser; -import ru.ulstu.conference.repository.ConferenceRepository; -import ru.ulstu.deadline.model.Deadline; -import ru.ulstu.deadline.service.DeadlineService; -import ru.ulstu.name.BaseService; -import ru.ulstu.paper.model.Paper; -import ru.ulstu.paper.service.PaperService; -import ru.ulstu.ping.service.PingService; -import ru.ulstu.timeline.service.EventService; +import ru.ulstu.activity.common.service.AbstractActivityService; +import ru.ulstu.activity.conference.model.Conference; +import ru.ulstu.activity.conference.model.ConferenceDto; +import ru.ulstu.activity.conference.model.ConferenceFilterDto; +import ru.ulstu.activity.conference.model.ConferenceListDto; +import ru.ulstu.activity.conference.model.ConferenceUser; +import ru.ulstu.activity.conference.repository.ConferenceRepository; +import ru.ulstu.activity.deadline.model.Deadline; +import ru.ulstu.activity.deadline.service.DeadlineService; +import ru.ulstu.activity.paper.model.Paper; +import ru.ulstu.activity.paper.service.PaperService; +import ru.ulstu.activity.ping.service.PingService; +import ru.ulstu.activity.timeline.service.EventService; +import ru.ulstu.core.jpa.OffsetablePageRequest; +import ru.ulstu.core.model.response.PageableItems; import ru.ulstu.user.model.User; import ru.ulstu.user.service.UserService; @@ -33,8 +35,7 @@ import static org.springframework.util.ObjectUtils.isEmpty; import static ru.ulstu.core.util.StreamApiUtils.convert; @Service -public class ConferenceService extends BaseService { - private final static int MAX_DISPLAY_SIZE = 40; +public class ConferenceService extends AbstractActivityService { private final ConferenceRepository conferenceRepository; private final ConferenceUserService conferenceUserService; @@ -53,7 +54,7 @@ public class ConferenceService extends BaseService { PingService pingService, ConferenceNotificationService conferenceNotificationService, EventService eventService) { - this.baseRepository = conferenceRepository; + this.activityRepository = conferenceRepository; this.conferenceRepository = conferenceRepository; this.conferenceUserService = conferenceUserService; this.deadlineService = deadlineService; @@ -77,28 +78,18 @@ public class ConferenceService extends BaseService { return conferenceDto; } - - public List findAll() { - return conferenceRepository.findAll(new Sort(Sort.Direction.DESC, "beginDate")); - } - - public List findAllDto() { - List conferences = convert(findAll(), ConferenceDto::new); - conferences.forEach(conferenceDto -> conferenceDto.setTitle(StringUtils.abbreviate(conferenceDto.getTitle(), MAX_DISPLAY_SIZE))); - return conferences; + public PageableItems findAll(int offset, int count) { + final Page page = conferenceRepository.findAll(new OffsetablePageRequest(offset, count)); + return new PageableItems<>(page.getTotalElements(), page.getContent()); } public boolean save(ConferenceDto conferenceDto, Errors errors) throws IOException { - conferenceDto.setName(conferenceDto.getTitle()); + conferenceDto.setTitle(conferenceDto.getTitle()); filterEmptyDeadlines(conferenceDto); checkEmptyFieldsOfDeadline(conferenceDto, errors); checkEmptyFieldsOfDates(conferenceDto, errors); - checkUniqueName(conferenceDto, - errors, - conferenceDto.getId(), - "Конференция с таким именем уже существует"); - if (errors.hasErrors()) { - return false; + if (!checkUniqueName(conferenceDto.getTitle(), conferenceDto.getId())) { + throw new RuntimeException("Название не уникально"); } if (isEmpty(conferenceDto.getId())) { @@ -111,29 +102,51 @@ public class ConferenceService extends BaseService { } @Transactional - public Conference create(ConferenceDto conferenceDto) throws IOException { - Conference newConference = copyFromDto(new Conference(), conferenceDto); - newConference = conferenceRepository.save(newConference); - conferenceNotificationService.sendCreateNotification(newConference); - eventService.createFromObject(newConference, Collections.emptyList(), false, "конференции"); - return newConference; + @Override + public ConferenceDto create(ConferenceDto conferenceDto) { + Conference newConference; + try { + newConference = copyFromDto(new Conference(), conferenceDto); + } catch (IOException e) { + throw new RuntimeException(e); + } + return new ConferenceDto(create(newConference)); + } + + @Transactional + @Override + public Conference create(Conference conference) { + conference = conferenceRepository.save(conference); + conferenceNotificationService.sendCreateNotification(conference); + eventService.createFromObject(conference, Collections.emptyList(), false, "конференции"); + return conference; } @Transactional - private Conference update(ConferenceDto conferenceDto) throws IOException { + @Override + public ConferenceDto update(ConferenceDto conferenceDto) { Conference conference = conferenceRepository.getOne(conferenceDto.getId()); + try { + conferenceRepository.save(copyFromDto(conference, conferenceDto)); + } catch (IOException e) { + throw new RuntimeException(e); + } + return new ConferenceDto(update(conference)); + } + + @Transactional + @Override + public Conference update(Conference conference) { List oldDeadlines = conference.getDeadlines().stream() .map(this::copyDeadline) .collect(Collectors.toList()); Date oldBeginDate = conference.getBeginDate(); Date oldEndDate = conference.getEndDate(); - conferenceRepository.save(copyFromDto(conference, conferenceDto)); eventService.updateConferenceDeadlines(conference); sendNotificationAfterUpdateDeadlines(conference, oldDeadlines); if (!conference.getBeginDate().equals(oldBeginDate) || !conference.getEndDate().equals(oldEndDate)) { conferenceNotificationService.updateConferencesDatesNotification(conference, oldBeginDate, oldEndDate); } - conferenceDto.getRemovedDeadlineIds().forEach(deadlineService::remove); return conference; } @@ -147,6 +160,11 @@ public class ConferenceService extends BaseService { return false; } + @Override + protected ConferenceListDto getActivityListDto(Conference entity) { + return new ConferenceListDto(entity); + } + public ConferenceDto addDeadline(ConferenceDto conferenceDto) { conferenceDto.getDeadlines().add(new Deadline()); return conferenceDto; diff --git a/src/main/java/ru/ulstu/conference/service/ConferenceUserService.java b/src/main/java/ru/ulstu/activity/conference/service/ConferenceUserService.java similarity index 89% rename from src/main/java/ru/ulstu/conference/service/ConferenceUserService.java rename to src/main/java/ru/ulstu/activity/conference/service/ConferenceUserService.java index 01d02d6..c9b5742 100644 --- a/src/main/java/ru/ulstu/conference/service/ConferenceUserService.java +++ b/src/main/java/ru/ulstu/activity/conference/service/ConferenceUserService.java @@ -1,9 +1,9 @@ -package ru.ulstu.conference.service; +package ru.ulstu.activity.conference.service; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import ru.ulstu.conference.model.ConferenceUser; -import ru.ulstu.conference.repository.ConferenceUserRepository; +import ru.ulstu.activity.conference.model.ConferenceUser; +import ru.ulstu.activity.conference.repository.ConferenceUserRepository; import java.util.List; import java.util.stream.Collectors; diff --git a/src/main/java/ru/ulstu/deadline/model/Deadline.java b/src/main/java/ru/ulstu/activity/deadline/model/Deadline.java similarity index 98% rename from src/main/java/ru/ulstu/deadline/model/Deadline.java rename to src/main/java/ru/ulstu/activity/deadline/model/Deadline.java index 30ff96c..d68ed5a 100644 --- a/src/main/java/ru/ulstu/deadline/model/Deadline.java +++ b/src/main/java/ru/ulstu/activity/deadline/model/Deadline.java @@ -1,4 +1,4 @@ -package ru.ulstu.deadline.model; +package ru.ulstu.activity.deadline.model; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; diff --git a/src/main/java/ru/ulstu/deadline/repository/DeadlineRepository.java b/src/main/java/ru/ulstu/activity/deadline/repository/DeadlineRepository.java similarity index 82% rename from src/main/java/ru/ulstu/deadline/repository/DeadlineRepository.java rename to src/main/java/ru/ulstu/activity/deadline/repository/DeadlineRepository.java index 652f01d..87829f6 100644 --- a/src/main/java/ru/ulstu/deadline/repository/DeadlineRepository.java +++ b/src/main/java/ru/ulstu/activity/deadline/repository/DeadlineRepository.java @@ -1,10 +1,10 @@ -package ru.ulstu.deadline.repository; +package ru.ulstu.activity.deadline.repository; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; -import ru.ulstu.deadline.model.Deadline; +import ru.ulstu.activity.deadline.model.Deadline; import java.util.Date; diff --git a/src/main/java/ru/ulstu/deadline/service/DeadlineService.java b/src/main/java/ru/ulstu/activity/deadline/service/DeadlineService.java similarity index 90% rename from src/main/java/ru/ulstu/deadline/service/DeadlineService.java rename to src/main/java/ru/ulstu/activity/deadline/service/DeadlineService.java index 28415e2..a3488e8 100644 --- a/src/main/java/ru/ulstu/deadline/service/DeadlineService.java +++ b/src/main/java/ru/ulstu/activity/deadline/service/DeadlineService.java @@ -1,9 +1,9 @@ -package ru.ulstu.deadline.service; +package ru.ulstu.activity.deadline.service; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import ru.ulstu.deadline.model.Deadline; -import ru.ulstu.deadline.repository.DeadlineRepository; +import ru.ulstu.activity.deadline.model.Deadline; +import ru.ulstu.activity.deadline.repository.DeadlineRepository; import java.util.Date; import java.util.List; diff --git a/src/main/java/ru/ulstu/file/FileController.java b/src/main/java/ru/ulstu/activity/file/FileController.java similarity index 92% rename from src/main/java/ru/ulstu/file/FileController.java rename to src/main/java/ru/ulstu/activity/file/FileController.java index 02421aa..82ffb82 100644 --- a/src/main/java/ru/ulstu/file/FileController.java +++ b/src/main/java/ru/ulstu/activity/file/FileController.java @@ -1,4 +1,4 @@ -package ru.ulstu.file; +package ru.ulstu.activity.file; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpStatus; @@ -10,11 +10,11 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; +import ru.ulstu.activity.file.model.FileData; +import ru.ulstu.activity.file.model.FileDataDto; +import ru.ulstu.activity.file.service.FileService; import ru.ulstu.configuration.Constants; import ru.ulstu.core.model.response.Response; -import ru.ulstu.file.model.FileData; -import ru.ulstu.file.model.FileDataDto; -import ru.ulstu.file.service.FileService; import java.io.IOException; import java.io.UnsupportedEncodingException; diff --git a/src/main/java/ru/ulstu/file/model/FileData.java b/src/main/java/ru/ulstu/activity/file/model/FileData.java similarity index 96% rename from src/main/java/ru/ulstu/file/model/FileData.java rename to src/main/java/ru/ulstu/activity/file/model/FileData.java index 3f97130..2177f58 100644 --- a/src/main/java/ru/ulstu/file/model/FileData.java +++ b/src/main/java/ru/ulstu/activity/file/model/FileData.java @@ -1,4 +1,4 @@ -package ru.ulstu.file.model; +package ru.ulstu.activity.file.model; import ru.ulstu.core.model.BaseEntity; diff --git a/src/main/java/ru/ulstu/file/model/FileDataDto.java b/src/main/java/ru/ulstu/activity/file/model/FileDataDto.java similarity index 98% rename from src/main/java/ru/ulstu/file/model/FileDataDto.java rename to src/main/java/ru/ulstu/activity/file/model/FileDataDto.java index e83bf12..853e536 100644 --- a/src/main/java/ru/ulstu/file/model/FileDataDto.java +++ b/src/main/java/ru/ulstu/activity/file/model/FileDataDto.java @@ -1,4 +1,4 @@ -package ru.ulstu.file.model; +package ru.ulstu.activity.file.model; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; diff --git a/src/main/java/ru/ulstu/file/repostory/FileRepository.java b/src/main/java/ru/ulstu/activity/file/repostory/FileRepository.java similarity index 61% rename from src/main/java/ru/ulstu/file/repostory/FileRepository.java rename to src/main/java/ru/ulstu/activity/file/repostory/FileRepository.java index 7399239..9738a6d 100644 --- a/src/main/java/ru/ulstu/file/repostory/FileRepository.java +++ b/src/main/java/ru/ulstu/activity/file/repostory/FileRepository.java @@ -1,7 +1,7 @@ -package ru.ulstu.file.repostory; +package ru.ulstu.activity.file.repostory; import org.springframework.data.jpa.repository.JpaRepository; -import ru.ulstu.file.model.FileData; +import ru.ulstu.activity.file.model.FileData; public interface FileRepository extends JpaRepository { } diff --git a/src/main/java/ru/ulstu/file/service/FileService.java b/src/main/java/ru/ulstu/activity/file/service/FileService.java similarity index 95% rename from src/main/java/ru/ulstu/file/service/FileService.java rename to src/main/java/ru/ulstu/activity/file/service/FileService.java index c7d7dc2..d071ddf 100644 --- a/src/main/java/ru/ulstu/file/service/FileService.java +++ b/src/main/java/ru/ulstu/activity/file/service/FileService.java @@ -1,12 +1,12 @@ -package ru.ulstu.file.service; +package ru.ulstu.activity.file.service; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.multipart.MultipartFile; -import ru.ulstu.file.model.FileData; -import ru.ulstu.file.model.FileDataDto; -import ru.ulstu.file.repostory.FileRepository; -import ru.ulstu.paper.model.PaperDto; +import ru.ulstu.activity.file.model.FileData; +import ru.ulstu.activity.file.model.FileDataDto; +import ru.ulstu.activity.file.repostory.FileRepository; +import ru.ulstu.activity.paper.model.PaperDto; import java.io.BufferedWriter; import java.io.File; diff --git a/src/main/java/ru/ulstu/grant/controller/GrantRestController.java b/src/main/java/ru/ulstu/activity/grant/controller/GrantRestController.java similarity index 87% rename from src/main/java/ru/ulstu/grant/controller/GrantRestController.java rename to src/main/java/ru/ulstu/activity/grant/controller/GrantRestController.java index c965471..b5faf66 100644 --- a/src/main/java/ru/ulstu/grant/controller/GrantRestController.java +++ b/src/main/java/ru/ulstu/activity/grant/controller/GrantRestController.java @@ -1,10 +1,10 @@ -package ru.ulstu.grant.controller; +package ru.ulstu.activity.grant.controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import ru.ulstu.activity.grant.service.GrantService; import ru.ulstu.configuration.Constants; -import ru.ulstu.grant.service.GrantService; import java.io.IOException; import java.text.ParseException; diff --git a/src/main/java/ru/ulstu/grant/model/Grant.java b/src/main/java/ru/ulstu/activity/grant/model/Grant.java similarity index 90% rename from src/main/java/ru/ulstu/grant/model/Grant.java rename to src/main/java/ru/ulstu/activity/grant/model/Grant.java index 0d16f77..1471eee 100644 --- a/src/main/java/ru/ulstu/grant/model/Grant.java +++ b/src/main/java/ru/ulstu/activity/grant/model/Grant.java @@ -1,15 +1,14 @@ -package ru.ulstu.grant.model; +package ru.ulstu.activity.grant.model; import org.hibernate.annotations.Fetch; import org.hibernate.annotations.FetchMode; -import ru.ulstu.core.model.BaseEntity; -import ru.ulstu.core.model.EventSource; -import ru.ulstu.core.model.UserActivity; -import ru.ulstu.deadline.model.Deadline; -import ru.ulstu.file.model.FileData; -import ru.ulstu.paper.model.Paper; -import ru.ulstu.project.model.Project; -import ru.ulstu.timeline.model.Event; +import ru.ulstu.activity.common.model.AbstractActivity; +import ru.ulstu.activity.common.model.EventSource; +import ru.ulstu.activity.deadline.model.Deadline; +import ru.ulstu.activity.file.model.FileData; +import ru.ulstu.activity.paper.model.Paper; +import ru.ulstu.activity.project.model.Project; +import ru.ulstu.activity.timeline.model.Event; import ru.ulstu.user.model.User; import javax.persistence.CascadeType; @@ -39,7 +38,7 @@ import java.util.Set; @Entity @Table(name = "grants") @DiscriminatorValue("GRANT") -public class Grant extends BaseEntity implements UserActivity, EventSource { +public class Grant extends AbstractActivity implements EventSource { public enum GrantStatus { APPLICATION("Заявка"), ON_COMPETITION("Отправлен на конкурс"), @@ -138,6 +137,10 @@ public class Grant extends BaseEntity implements UserActivity, EventSource { return title; } + public void setTitle(String title) { + this.title = title; + } + @Override public List getRecipients() { return authors != null ? new ArrayList<>(authors) : Collections.emptyList(); @@ -148,10 +151,6 @@ public class Grant extends BaseEntity implements UserActivity, EventSource { event.setGrant(this); } - public void setTitle(String title) { - this.title = title; - } - public Project getProject() { return project; } @@ -169,8 +168,8 @@ public class Grant extends BaseEntity implements UserActivity, EventSource { } @Override - public Set getActivityUsers() { - return getAuthors(); + public Set getActivityMembers() { + return authors; } public User getLeader() { diff --git a/src/main/java/ru/ulstu/grant/model/GrantDto.java b/src/main/java/ru/ulstu/activity/grant/model/GrantDto.java similarity index 88% rename from src/main/java/ru/ulstu/grant/model/GrantDto.java rename to src/main/java/ru/ulstu/activity/grant/model/GrantDto.java index 541dae8..a541a3f 100644 --- a/src/main/java/ru/ulstu/grant/model/GrantDto.java +++ b/src/main/java/ru/ulstu/activity/grant/model/GrantDto.java @@ -1,14 +1,14 @@ -package ru.ulstu.grant.model; +package ru.ulstu.activity.grant.model; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; import org.apache.commons.lang3.StringUtils; -import ru.ulstu.deadline.model.Deadline; -import ru.ulstu.file.model.FileDataDto; -import ru.ulstu.name.NameContainer; -import ru.ulstu.paper.model.PaperDto; -import ru.ulstu.project.model.ProjectDto; -import ru.ulstu.user.model.UserDto; +import ru.ulstu.activity.api.model.ActivityDto; +import ru.ulstu.activity.common.model.ScienceGroupMemberDto; +import ru.ulstu.activity.deadline.model.Deadline; +import ru.ulstu.activity.file.model.FileDataDto; +import ru.ulstu.activity.paper.model.PaperDto; +import ru.ulstu.activity.project.model.ProjectDto; import javax.validation.constraints.NotEmpty; import java.util.ArrayList; @@ -19,7 +19,7 @@ import java.util.stream.Collectors; import static ru.ulstu.core.util.StreamApiUtils.convert; -public class GrantDto extends NameContainer { +public class GrantDto implements ActivityDto { private final static int MAX_AUTHORS_LENGTH = 60; private Integer id; @@ -31,7 +31,7 @@ public class GrantDto extends NameContainer { private List files = new ArrayList<>(); private ProjectDto project; private Set authorIds; - private Set authors; + private Set members; private Integer leaderId; private boolean wasLeader; private boolean hasAge; @@ -55,7 +55,7 @@ public class GrantDto extends NameContainer { @JsonProperty("files") List files, @JsonProperty("project") ProjectDto project, @JsonProperty("authorIds") Set authorIds, - @JsonProperty("authors") Set authors, + @JsonProperty("members") Set members, @JsonProperty("leaderId") Integer leaderId, @JsonProperty("wasLeader") boolean wasLeader, @JsonProperty("hasAge") boolean hasAge, @@ -70,7 +70,7 @@ public class GrantDto extends NameContainer { this.files = files; this.project = project; this.authorIds = authorIds; - this.authors = authors; + this.members = members; this.leaderId = leaderId; this.wasLeader = wasLeader; this.hasAge = hasAge; @@ -88,7 +88,7 @@ public class GrantDto extends NameContainer { this.files = convert(grant.getFiles(), FileDataDto::new); this.project = grant.getProject() == null ? null : new ProjectDto(grant.getProject()); this.authorIds = convert(grant.getAuthors(), user -> user.getId()); - this.authors = convert(grant.getAuthors(), UserDto::new); + this.members = convert(grant.getAuthors(), ScienceGroupMemberDto::new); this.leaderId = grant.getLeader().getId(); this.wasLeader = false; this.hasAge = false; @@ -167,16 +167,16 @@ public class GrantDto extends NameContainer { this.authorIds = authorIds; } - public Set getAuthors() { - return authors; + public Set getMembers() { + return members; } - public void setAuthors(Set authors) { - this.authors = authors; + public void setMembers(Set members) { + this.members = members; } public String getAuthorsString() { - return StringUtils.abbreviate(authors + return StringUtils.abbreviate(members .stream() .map(author -> author.getLastName()) .collect(Collectors.joining(", ")), MAX_AUTHORS_LENGTH); diff --git a/src/main/java/ru/ulstu/activity/grant/model/GrantListDto.java b/src/main/java/ru/ulstu/activity/grant/model/GrantListDto.java new file mode 100644 index 0000000..237b572 --- /dev/null +++ b/src/main/java/ru/ulstu/activity/grant/model/GrantListDto.java @@ -0,0 +1,28 @@ +package ru.ulstu.activity.grant.model; + +import ru.ulstu.activity.api.model.ActivityListDto; +import ru.ulstu.activity.common.model.ScienceGroupMemberDto; + +import java.util.Set; + +import static ru.ulstu.core.util.StreamApiUtils.convert; + +public class GrantListDto extends ActivityListDto { + + private final Grant.GrantStatus status; + private final Set members; + + public GrantListDto(Grant grant) { + super(grant.getId(), grant.getTitle()); + this.status = grant.getStatus(); + this.members = convert(grant.getActivityMembers(), ScienceGroupMemberDto::new); + } + + public Grant.GrantStatus getStatus() { + return status; + } + + public Set getAuthors() { + return members; + } +} \ No newline at end of file diff --git a/src/main/java/ru/ulstu/grant/page/KiasPage.java b/src/main/java/ru/ulstu/activity/grant/page/KiasPage.java similarity index 97% rename from src/main/java/ru/ulstu/grant/page/KiasPage.java rename to src/main/java/ru/ulstu/activity/grant/page/KiasPage.java index 49d54a0..ef152d6 100644 --- a/src/main/java/ru/ulstu/grant/page/KiasPage.java +++ b/src/main/java/ru/ulstu/activity/grant/page/KiasPage.java @@ -1,4 +1,4 @@ -package ru.ulstu.grant.page; +package ru.ulstu.activity.grant.page; import com.gargoylesoftware.htmlunit.html.DomNode; import com.gargoylesoftware.htmlunit.html.HtmlElement; diff --git a/src/main/java/ru/ulstu/grant/repository/GrantRepository.java b/src/main/java/ru/ulstu/activity/grant/repository/GrantRepository.java similarity index 81% rename from src/main/java/ru/ulstu/grant/repository/GrantRepository.java rename to src/main/java/ru/ulstu/activity/grant/repository/GrantRepository.java index 50fad13..b7add49 100644 --- a/src/main/java/ru/ulstu/grant/repository/GrantRepository.java +++ b/src/main/java/ru/ulstu/activity/grant/repository/GrantRepository.java @@ -1,14 +1,14 @@ -package ru.ulstu.grant.repository; +package ru.ulstu.activity.grant.repository; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; -import ru.ulstu.grant.model.Grant; -import ru.ulstu.name.BaseRepository; +import ru.ulstu.activity.api.ActivityRepository; +import ru.ulstu.activity.grant.model.Grant; import java.util.List; -public interface GrantRepository extends JpaRepository, BaseRepository { +public interface GrantRepository extends JpaRepository, ActivityRepository { List findByStatus(Grant.GrantStatus status); diff --git a/src/main/java/ru/ulstu/grant/service/GrantNotificationService.java b/src/main/java/ru/ulstu/activity/grant/service/GrantNotificationService.java similarity index 97% rename from src/main/java/ru/ulstu/grant/service/GrantNotificationService.java rename to src/main/java/ru/ulstu/activity/grant/service/GrantNotificationService.java index 677b38f..affe2a7 100644 --- a/src/main/java/ru/ulstu/grant/service/GrantNotificationService.java +++ b/src/main/java/ru/ulstu/activity/grant/service/GrantNotificationService.java @@ -1,9 +1,9 @@ -package ru.ulstu.grant.service; +package ru.ulstu.activity.grant.service; import com.google.common.collect.ImmutableMap; import org.springframework.stereotype.Service; +import ru.ulstu.activity.grant.model.Grant; import ru.ulstu.core.util.DateUtils; -import ru.ulstu.grant.model.Grant; import ru.ulstu.user.model.User; import ru.ulstu.user.service.MailService; diff --git a/src/main/java/ru/ulstu/grant/service/GrantScheduler.java b/src/main/java/ru/ulstu/activity/grant/service/GrantScheduler.java similarity index 97% rename from src/main/java/ru/ulstu/grant/service/GrantScheduler.java rename to src/main/java/ru/ulstu/activity/grant/service/GrantScheduler.java index d026911..9c93706 100644 --- a/src/main/java/ru/ulstu/grant/service/GrantScheduler.java +++ b/src/main/java/ru/ulstu/activity/grant/service/GrantScheduler.java @@ -1,4 +1,4 @@ -package ru.ulstu.grant.service; +package ru.ulstu.activity.grant.service; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/src/main/java/ru/ulstu/grant/service/GrantService.java b/src/main/java/ru/ulstu/activity/grant/service/GrantService.java similarity index 80% rename from src/main/java/ru/ulstu/grant/service/GrantService.java rename to src/main/java/ru/ulstu/activity/grant/service/GrantService.java index 28d3f8c..19ca532 100644 --- a/src/main/java/ru/ulstu/grant/service/GrantService.java +++ b/src/main/java/ru/ulstu/activity/grant/service/GrantService.java @@ -1,27 +1,30 @@ -package ru.ulstu.grant.service; +package ru.ulstu.activity.grant.service; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.data.domain.Page; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.Errors; +import ru.ulstu.activity.common.service.AbstractActivityService; +import ru.ulstu.activity.deadline.model.Deadline; +import ru.ulstu.activity.deadline.service.DeadlineService; +import ru.ulstu.activity.file.service.FileService; +import ru.ulstu.activity.grant.model.Grant; +import ru.ulstu.activity.grant.model.GrantDto; +import ru.ulstu.activity.grant.model.GrantListDto; +import ru.ulstu.activity.grant.repository.GrantRepository; +import ru.ulstu.activity.paper.model.Paper; +import ru.ulstu.activity.paper.model.PaperDto; +import ru.ulstu.activity.paper.service.PaperService; +import ru.ulstu.activity.ping.service.PingService; +import ru.ulstu.activity.project.model.ProjectDto; +import ru.ulstu.activity.project.service.ProjectService; +import ru.ulstu.activity.timeline.service.EventService; +import ru.ulstu.core.jpa.OffsetablePageRequest; +import ru.ulstu.core.model.response.PageableItems; import ru.ulstu.core.util.DateUtils; -import ru.ulstu.deadline.model.Deadline; -import ru.ulstu.deadline.service.DeadlineService; -import ru.ulstu.file.model.FileDataDto; -import ru.ulstu.file.service.FileService; -import ru.ulstu.grant.model.Grant; -import ru.ulstu.grant.model.GrantDto; -import ru.ulstu.grant.repository.GrantRepository; -import ru.ulstu.name.BaseService; -import ru.ulstu.paper.model.Paper; -import ru.ulstu.paper.model.PaperDto; -import ru.ulstu.paper.service.PaperService; -import ru.ulstu.ping.service.PingService; -import ru.ulstu.project.model.ProjectDto; -import ru.ulstu.project.service.ProjectService; -import ru.ulstu.timeline.service.EventService; import ru.ulstu.user.model.User; import ru.ulstu.user.service.UserService; @@ -37,11 +40,11 @@ import java.util.stream.Collectors; import static java.util.stream.Collectors.toList; import static org.springframework.util.ObjectUtils.isEmpty; +import static ru.ulstu.activity.grant.model.Grant.GrantStatus.APPLICATION; import static ru.ulstu.core.util.StreamApiUtils.convert; -import static ru.ulstu.grant.model.Grant.GrantStatus.APPLICATION; @Service -public class GrantService extends BaseService { +public class GrantService extends AbstractActivityService { private final Logger log = LoggerFactory.getLogger(GrantService.class); private final GrantRepository grantRepository; @@ -67,7 +70,7 @@ public class GrantService extends BaseService { PingService pingService) { this.grantRepository = grantRepository; this.kiasService = kiasService; - this.baseRepository = grantRepository; + this.activityRepository = grantRepository; this.fileService = fileService; this.deadlineService = deadlineService; this.projectService = projectService; @@ -82,21 +85,65 @@ public class GrantService extends BaseService { return new GrantDto(findById(id)); } - public List findAll() { - return grantRepository.findAll(); + @Override + public PageableItems findAll(int offset, int count) { + final Page page = grantRepository.findAll(new OffsetablePageRequest(offset, count)); + return new PageableItems<>(page.getTotalElements(), page.getContent()); } - public List findAllDto() { - return convert(findAll(), GrantDto::new); + @Override + protected GrantListDto getActivityListDto(Grant entity) { + return new GrantListDto(entity); } @Transactional - public Grant create(GrantDto grantDto) throws IOException { - Grant newGrant = copyFromDto(new Grant(), grantDto); - newGrant = grantRepository.save(newGrant); - eventService.createFromObject(newGrant, Collections.emptyList(), false, "гранта"); - grantNotificationService.sendCreateNotification(newGrant); - return newGrant; + @Override + public GrantDto create(GrantDto grantDto) { + Grant newGrant; + try { + newGrant = copyFromDto(new Grant(), grantDto); + } catch (IOException e) { + throw new RuntimeException(e); + } + return new GrantDto(create(newGrant)); + } + + @Transactional + @Override + public Grant create(Grant grant) { + grant = grantRepository.save(grant); + eventService.createFromObject(grant, Collections.emptyList(), false, "гранта"); + grantNotificationService.sendCreateNotification(grant); + return grant; + } + + @Transactional + @Override + public GrantDto update(GrantDto grantDto) { + Grant grant = findById(grantDto.getId()); + return new GrantDto(update(grant)); + } + + @Transactional + @Override + public Grant update(Grant grant) { + Set oldAuthors = new HashSet<>(grant.getAuthors()); + User oldLeader = grant.getLeader(); + grant.getAuthors().forEach(author -> { + if (!oldAuthors.contains(author)) { + grantNotificationService.sendAuthorsChangeNotification(grant, oldAuthors); + } + }); + oldAuthors.forEach(oldAuthor -> { + if (!grant.getAuthors().contains(oldAuthor)) { + grantNotificationService.sendAuthorsChangeNotification(grant, oldAuthors); + } + }); + if (grant.getLeader() != oldLeader) { + grantNotificationService.sendLeaderChangeNotification(grant, oldLeader); + } + eventService.updateGrantDeadlines(grant); + return grant; } private Grant copyFromDto(Grant grant, GrantDto grantDto) throws IOException { @@ -133,37 +180,7 @@ public class GrantService extends BaseService { } @Transactional - private Integer update(GrantDto grantDto) throws IOException { - Grant grant = findById(grantDto.getId()); - Set oldAuthors = new HashSet<>(grant.getAuthors()); - User oldLeader = grant.getLeader(); - for (FileDataDto file : grantDto.getFiles().stream() - .filter(f -> f.isDeleted() && f.getId() != null) - .collect(toList())) { - fileService.delete(file.getId()); - } - grantDto.getRemovedDeadlineIds().forEach(deadlineService::remove); - grantRepository.save(copyFromDto(grant, grantDto)); - - grant.getAuthors().forEach(author -> { - if (!oldAuthors.contains(author)) { - grantNotificationService.sendAuthorsChangeNotification(grant, oldAuthors); - } - }); - oldAuthors.forEach(oldAuthor -> { - if (!grant.getAuthors().contains(oldAuthor)) { - grantNotificationService.sendAuthorsChangeNotification(grant, oldAuthors); - } - }); - if (grant.getLeader() != oldLeader) { - grantNotificationService.sendLeaderChangeNotification(grant, oldLeader); - } - eventService.updateGrantDeadlines(grant); - return grant.getId(); - } - - @Transactional - public boolean delete(Integer grantId) throws IOException { + public boolean delete(Integer grantId) { Grant grant = findById(grantId); if (grant != null) { grantRepository.delete(grant); @@ -177,11 +194,11 @@ public class GrantService extends BaseService { } public boolean save(GrantDto grantDto, Errors errors) throws IOException { - grantDto.setName(grantDto.getTitle()); + grantDto.setTitle(grantDto.getTitle()); filterEmptyDeadlines(grantDto); checkEmptyDeadlines(grantDto, errors); checkEmptyLeader(grantDto, errors); - checkUniqueName(grantDto, errors, grantDto.getId(), "Грант с таким именем уже существует"); + checkUniqueName(grantDto.getTitle(), grantDto.getId()); if (errors.hasErrors()) { return false; } @@ -194,10 +211,9 @@ public class GrantService extends BaseService { } private boolean saveFromKias(GrantDto grantDto) throws IOException { - grantDto.setName(grantDto.getTitle()); - String title = checkUniqueName(grantDto, grantDto.getId()); //проверка уникальности имени - if (title != null) { - Grant grantFromDB = grantRepository.findByTitle(title); //грант с таким же названием из бд + grantDto.setTitle(grantDto.getTitle()); + if (checkUniqueName(grantDto.getTitle(), grantDto.getId())) { + Grant grantFromDB = grantRepository.findByTitle(grantDto.getTitle()); //грант с таким же названием из бд if (checkSameDeadline(grantDto, grantFromDB.getId())) { //если дедайны тоже совпадают return false; } else { //иначе грант уже был в системе, но в другом году, поэтому надо создать diff --git a/src/main/java/ru/ulstu/grant/service/KiasService.java b/src/main/java/ru/ulstu/activity/grant/service/KiasService.java similarity index 95% rename from src/main/java/ru/ulstu/grant/service/KiasService.java rename to src/main/java/ru/ulstu/activity/grant/service/KiasService.java index dea6f55..66fc6a0 100644 --- a/src/main/java/ru/ulstu/grant/service/KiasService.java +++ b/src/main/java/ru/ulstu/activity/grant/service/KiasService.java @@ -1,12 +1,12 @@ -package ru.ulstu.grant.service; +package ru.ulstu.activity.grant.service; import com.gargoylesoftware.htmlunit.WebClient; import com.gargoylesoftware.htmlunit.html.DomNode; import com.gargoylesoftware.htmlunit.html.HtmlPage; import org.springframework.stereotype.Service; +import ru.ulstu.activity.grant.model.GrantDto; +import ru.ulstu.activity.grant.page.KiasPage; import ru.ulstu.configuration.ApplicationProperties; -import ru.ulstu.grant.model.GrantDto; -import ru.ulstu.grant.page.KiasPage; import ru.ulstu.user.service.UserService; import java.io.IOException; diff --git a/src/main/java/ru/ulstu/paper/controller/PaperController.java b/src/main/java/ru/ulstu/activity/paper/controller/PaperController.java similarity index 70% rename from src/main/java/ru/ulstu/paper/controller/PaperController.java rename to src/main/java/ru/ulstu/activity/paper/controller/PaperController.java index 4cea225..0c1816c 100644 --- a/src/main/java/ru/ulstu/paper/controller/PaperController.java +++ b/src/main/java/ru/ulstu/activity/paper/controller/PaperController.java @@ -1,4 +1,4 @@ -package ru.ulstu.paper.controller; +package ru.ulstu.activity.paper.controller; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; @@ -9,24 +9,24 @@ import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; +import ru.ulstu.activity.api.ActivityController; +import ru.ulstu.activity.paper.model.PaperDashboardDto; +import ru.ulstu.activity.paper.model.PaperDto; +import ru.ulstu.activity.paper.model.PaperListDto; +import ru.ulstu.activity.paper.model.PaperStatusDto; +import ru.ulstu.activity.paper.model.PaperTypeDto; +import ru.ulstu.activity.paper.service.PaperService; import ru.ulstu.configuration.Constants; import ru.ulstu.core.model.response.PageableItems; import ru.ulstu.core.model.response.Response; -import ru.ulstu.paper.model.PaperDashboardDto; -import ru.ulstu.paper.model.PaperDto; -import ru.ulstu.paper.model.PaperListDto; -import ru.ulstu.paper.model.PaperStatusDto; -import ru.ulstu.paper.model.PaperTypeDto; -import ru.ulstu.paper.service.PaperService; import ru.ulstu.user.model.User; import javax.validation.Valid; -import java.io.IOException; import java.util.List; @RestController @RequestMapping(Constants.API_1_0 + "papers") -public class PaperController { +public class PaperController implements ActivityController { private final PaperService paperService; public PaperController(PaperService paperService) { @@ -34,8 +34,8 @@ public class PaperController { } @GetMapping("list") - public Response> getPapers(@RequestParam(value = "offset", defaultValue = "0") int offset, - @RequestParam(value = "count", defaultValue = "10") int count) { + public Response> getList(@RequestParam(value = "offset", defaultValue = "0") int offset, + @RequestParam(value = "count", defaultValue = "10") int count) { return new Response<>(paperService.findAllDto(offset, count)); } @@ -46,17 +46,17 @@ public class PaperController { } @GetMapping("{paper-id}") - public Response getPaper(@PathVariable("paper-id") Integer paperId) { + public Response get(@PathVariable("paper-id") Integer paperId) { return new Response<>(paperService.findById(paperId)); } @PostMapping - public Response createPaper(@RequestBody @Valid PaperDto paperDto) { + public Response create(@RequestBody @Valid PaperDto paperDto) { return new Response<>(paperService.create(paperDto)); } @PutMapping - public Response updatePaper(@RequestBody @Valid PaperDto paperDto) { + public Response update(@RequestBody @Valid PaperDto paperDto) { return new Response<>(paperService.update(paperDto)); } @@ -66,7 +66,7 @@ public class PaperController { } @PostMapping("ping/{paper-id}") - public void ping(@PathVariable("paper-id") int paperId) throws IOException { + public void ping(@PathVariable("paper-id") int paperId) { paperService.ping(paperId); } diff --git a/src/main/java/ru/ulstu/paper/model/AutoCompleteData.java b/src/main/java/ru/ulstu/activity/paper/model/AutoCompleteData.java similarity index 96% rename from src/main/java/ru/ulstu/paper/model/AutoCompleteData.java rename to src/main/java/ru/ulstu/activity/paper/model/AutoCompleteData.java index 91c3bf4..859b265 100644 --- a/src/main/java/ru/ulstu/paper/model/AutoCompleteData.java +++ b/src/main/java/ru/ulstu/activity/paper/model/AutoCompleteData.java @@ -1,4 +1,4 @@ -package ru.ulstu.paper.model; +package ru.ulstu.activity.paper.model; import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/ru/ulstu/paper/model/Paper.java b/src/main/java/ru/ulstu/activity/paper/model/Paper.java similarity index 93% rename from src/main/java/ru/ulstu/paper/model/Paper.java rename to src/main/java/ru/ulstu/activity/paper/model/Paper.java index d083f3e..e7a8a65 100644 --- a/src/main/java/ru/ulstu/paper/model/Paper.java +++ b/src/main/java/ru/ulstu/activity/paper/model/Paper.java @@ -1,15 +1,14 @@ -package ru.ulstu.paper.model; +package ru.ulstu.activity.paper.model; import org.hibernate.annotations.Fetch; import org.hibernate.annotations.FetchMode; -import ru.ulstu.boundary.model.AbstractActivity; -import ru.ulstu.conference.model.Conference; -import ru.ulstu.core.model.EventSource; -import ru.ulstu.core.model.UserActivity; -import ru.ulstu.deadline.model.Deadline; -import ru.ulstu.file.model.FileData; -import ru.ulstu.grant.model.Grant; -import ru.ulstu.timeline.model.Event; +import ru.ulstu.activity.common.model.AbstractActivity; +import ru.ulstu.activity.common.model.EventSource; +import ru.ulstu.activity.conference.model.Conference; +import ru.ulstu.activity.deadline.model.Deadline; +import ru.ulstu.activity.file.model.FileData; +import ru.ulstu.activity.grant.model.Grant; +import ru.ulstu.activity.timeline.model.Event; import ru.ulstu.user.model.User; import javax.persistence.CascadeType; @@ -37,7 +36,7 @@ import java.util.Set; @Entity @DiscriminatorValue("PAPER") -public class Paper extends AbstractActivity implements UserActivity, EventSource { +public class Paper extends AbstractActivity implements EventSource { public enum PaperStatus { ATTENTION("Обратить внимание"), ON_PREPARATION("На подготовке"), @@ -199,6 +198,10 @@ public class Paper extends AbstractActivity implements UserActivity, EventSource return title; } + public void setTitle(String title) { + this.title = title; + } + @Override public List getRecipients() { return new ArrayList<>(authors); @@ -209,10 +212,6 @@ public class Paper extends AbstractActivity implements UserActivity, EventSource event.setPaper(this); } - public void setTitle(String title) { - this.title = title; - } - public Set getAuthors() { return authors; } @@ -262,8 +261,8 @@ public class Paper extends AbstractActivity implements UserActivity, EventSource } @Override - public Set getActivityUsers() { - return getAuthors(); + public Set getActivityMembers() { + return authors; } public List getReferences() { diff --git a/src/main/java/ru/ulstu/paper/model/PaperDashboardDto.java b/src/main/java/ru/ulstu/activity/paper/model/PaperDashboardDto.java similarity index 84% rename from src/main/java/ru/ulstu/paper/model/PaperDashboardDto.java rename to src/main/java/ru/ulstu/activity/paper/model/PaperDashboardDto.java index 643112c..37f26fe 100644 --- a/src/main/java/ru/ulstu/paper/model/PaperDashboardDto.java +++ b/src/main/java/ru/ulstu/activity/paper/model/PaperDashboardDto.java @@ -1,12 +1,13 @@ -package ru.ulstu.paper.model; +package ru.ulstu.activity.paper.model; -import ru.ulstu.boundary.model.ScienceGroupMemberDto; +import ru.ulstu.activity.api.model.ActivityDashboardDto; +import ru.ulstu.activity.common.model.ScienceGroupMemberDto; import java.util.Set; import static ru.ulstu.core.util.StreamApiUtils.convert; -public class PaperDashboardDto { +public class PaperDashboardDto implements ActivityDashboardDto { private Integer id; private String title; diff --git a/src/main/java/ru/ulstu/paper/model/PaperDto.java b/src/main/java/ru/ulstu/activity/paper/model/PaperDto.java similarity index 94% rename from src/main/java/ru/ulstu/paper/model/PaperDto.java rename to src/main/java/ru/ulstu/activity/paper/model/PaperDto.java index 24d8127..71e46cf 100644 --- a/src/main/java/ru/ulstu/paper/model/PaperDto.java +++ b/src/main/java/ru/ulstu/activity/paper/model/PaperDto.java @@ -1,11 +1,11 @@ -package ru.ulstu.paper.model; +package ru.ulstu.activity.paper.model; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; -import ru.ulstu.boundary.model.ActivityDto; -import ru.ulstu.boundary.model.ScienceGroupMemberDto; -import ru.ulstu.deadline.model.Deadline; -import ru.ulstu.file.model.FileDataDto; +import ru.ulstu.activity.api.model.ActivityDto; +import ru.ulstu.activity.common.model.ScienceGroupMemberDto; +import ru.ulstu.activity.deadline.model.Deadline; +import ru.ulstu.activity.file.model.FileDataDto; import javax.validation.constraints.NotEmpty; import javax.validation.constraints.Size; diff --git a/src/main/java/ru/ulstu/paper/model/PaperFilterListDto.java b/src/main/java/ru/ulstu/activity/paper/model/PaperFilterListDto.java similarity index 96% rename from src/main/java/ru/ulstu/paper/model/PaperFilterListDto.java rename to src/main/java/ru/ulstu/activity/paper/model/PaperFilterListDto.java index 85aec09..d7cf82c 100644 --- a/src/main/java/ru/ulstu/paper/model/PaperFilterListDto.java +++ b/src/main/java/ru/ulstu/activity/paper/model/PaperFilterListDto.java @@ -1,4 +1,4 @@ -package ru.ulstu.paper.model; +package ru.ulstu.activity.paper.model; import java.util.List; diff --git a/src/main/java/ru/ulstu/activity/paper/model/PaperListDto.java b/src/main/java/ru/ulstu/activity/paper/model/PaperListDto.java new file mode 100644 index 0000000..605c523 --- /dev/null +++ b/src/main/java/ru/ulstu/activity/paper/model/PaperListDto.java @@ -0,0 +1,27 @@ +package ru.ulstu.activity.paper.model; + +import ru.ulstu.activity.api.model.ActivityListDto; +import ru.ulstu.activity.common.model.ScienceGroupMemberDto; + +import java.util.Set; + +import static ru.ulstu.core.util.StreamApiUtils.convert; + +public class PaperListDto extends ActivityListDto { + private final Paper.PaperStatus status; + private final Set authors; + + public PaperListDto(Paper paper) { + super(paper.getId(), paper.getTitle()); + this.status = paper.getStatus(); + this.authors = convert(paper.getAuthors(), ScienceGroupMemberDto::new); + } + + public Paper.PaperStatus getStatus() { + return status; + } + + public Set getAuthors() { + return authors; + } +} diff --git a/src/main/java/ru/ulstu/paper/model/PaperStatusDto.java b/src/main/java/ru/ulstu/activity/paper/model/PaperStatusDto.java similarity index 89% rename from src/main/java/ru/ulstu/paper/model/PaperStatusDto.java rename to src/main/java/ru/ulstu/activity/paper/model/PaperStatusDto.java index 76efd5e..a2cbf52 100644 --- a/src/main/java/ru/ulstu/paper/model/PaperStatusDto.java +++ b/src/main/java/ru/ulstu/activity/paper/model/PaperStatusDto.java @@ -1,4 +1,4 @@ -package ru.ulstu.paper.model; +package ru.ulstu.activity.paper.model; public class PaperStatusDto { private final String id; diff --git a/src/main/java/ru/ulstu/paper/model/PaperTypeDto.java b/src/main/java/ru/ulstu/activity/paper/model/PaperTypeDto.java similarity index 89% rename from src/main/java/ru/ulstu/paper/model/PaperTypeDto.java rename to src/main/java/ru/ulstu/activity/paper/model/PaperTypeDto.java index de2b4d9..1f48f60 100644 --- a/src/main/java/ru/ulstu/paper/model/PaperTypeDto.java +++ b/src/main/java/ru/ulstu/activity/paper/model/PaperTypeDto.java @@ -1,4 +1,4 @@ -package ru.ulstu.paper.model; +package ru.ulstu.activity.paper.model; public class PaperTypeDto { private final String id; diff --git a/src/main/java/ru/ulstu/paper/model/Reference.java b/src/main/java/ru/ulstu/activity/paper/model/Reference.java similarity index 98% rename from src/main/java/ru/ulstu/paper/model/Reference.java rename to src/main/java/ru/ulstu/activity/paper/model/Reference.java index 289cdc1..f64c013 100644 --- a/src/main/java/ru/ulstu/paper/model/Reference.java +++ b/src/main/java/ru/ulstu/activity/paper/model/Reference.java @@ -1,4 +1,4 @@ -package ru.ulstu.paper.model; +package ru.ulstu.activity.paper.model; import ru.ulstu.core.model.BaseEntity; diff --git a/src/main/java/ru/ulstu/paper/model/ReferenceDto.java b/src/main/java/ru/ulstu/activity/paper/model/ReferenceDto.java similarity index 99% rename from src/main/java/ru/ulstu/paper/model/ReferenceDto.java rename to src/main/java/ru/ulstu/activity/paper/model/ReferenceDto.java index bf7fed2..737465e 100644 --- a/src/main/java/ru/ulstu/paper/model/ReferenceDto.java +++ b/src/main/java/ru/ulstu/activity/paper/model/ReferenceDto.java @@ -1,4 +1,4 @@ -package ru.ulstu.paper.model; +package ru.ulstu.activity.paper.model; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; diff --git a/src/main/java/ru/ulstu/paper/repository/PaperRepository.java b/src/main/java/ru/ulstu/activity/paper/repository/PaperRepository.java similarity index 93% rename from src/main/java/ru/ulstu/paper/repository/PaperRepository.java rename to src/main/java/ru/ulstu/activity/paper/repository/PaperRepository.java index fff4399..bd75a12 100644 --- a/src/main/java/ru/ulstu/paper/repository/PaperRepository.java +++ b/src/main/java/ru/ulstu/activity/paper/repository/PaperRepository.java @@ -1,11 +1,11 @@ -package ru.ulstu.paper.repository; +package ru.ulstu.activity.paper.repository; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; +import ru.ulstu.activity.paper.model.Paper; import ru.ulstu.core.repository.JpaDetachableRepository; -import ru.ulstu.paper.model.Paper; import ru.ulstu.user.model.User; import java.util.List; diff --git a/src/main/java/ru/ulstu/paper/repository/ReferenceRepository.java b/src/main/java/ru/ulstu/activity/paper/repository/ReferenceRepository.java similarity index 89% rename from src/main/java/ru/ulstu/paper/repository/ReferenceRepository.java rename to src/main/java/ru/ulstu/activity/paper/repository/ReferenceRepository.java index 942a5b8..9b24f1c 100644 --- a/src/main/java/ru/ulstu/paper/repository/ReferenceRepository.java +++ b/src/main/java/ru/ulstu/activity/paper/repository/ReferenceRepository.java @@ -1,8 +1,8 @@ -package ru.ulstu.paper.repository; +package ru.ulstu.activity.paper.repository; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; -import ru.ulstu.paper.model.Reference; +import ru.ulstu.activity.paper.model.Reference; import java.util.List; diff --git a/src/main/java/ru/ulstu/paper/service/LatexService.java b/src/main/java/ru/ulstu/activity/paper/service/LatexService.java similarity index 95% rename from src/main/java/ru/ulstu/paper/service/LatexService.java rename to src/main/java/ru/ulstu/activity/paper/service/LatexService.java index ea1bcfc..3b63150 100644 --- a/src/main/java/ru/ulstu/paper/service/LatexService.java +++ b/src/main/java/ru/ulstu/activity/paper/service/LatexService.java @@ -1,8 +1,8 @@ -package ru.ulstu.paper.service; +package ru.ulstu.activity.paper.service; import org.springframework.stereotype.Service; -import ru.ulstu.file.service.FileService; -import ru.ulstu.paper.model.PaperDto; +import ru.ulstu.activity.file.service.FileService; +import ru.ulstu.activity.paper.model.PaperDto; import java.io.BufferedReader; import java.io.File; diff --git a/src/main/java/ru/ulstu/paper/service/PaperCreateStrategy.java b/src/main/java/ru/ulstu/activity/paper/service/PaperCreateStrategy.java similarity index 85% rename from src/main/java/ru/ulstu/paper/service/PaperCreateStrategy.java rename to src/main/java/ru/ulstu/activity/paper/service/PaperCreateStrategy.java index e31b04e..18dc8a6 100644 --- a/src/main/java/ru/ulstu/paper/service/PaperCreateStrategy.java +++ b/src/main/java/ru/ulstu/activity/paper/service/PaperCreateStrategy.java @@ -1,9 +1,9 @@ -package ru.ulstu.paper.service; +package ru.ulstu.activity.paper.service; import org.springframework.stereotype.Service; +import ru.ulstu.activity.common.strategy.api.EntityCreateStrategy; +import ru.ulstu.activity.paper.model.Paper; import ru.ulstu.core.util.DateUtils; -import ru.ulstu.paper.model.Paper; -import ru.ulstu.strategy.api.EntityCreateStrategy; import ru.ulstu.user.model.User; import java.util.Date; diff --git a/src/main/java/ru/ulstu/paper/service/PaperNotificationService.java b/src/main/java/ru/ulstu/activity/paper/service/PaperNotificationService.java similarity index 97% rename from src/main/java/ru/ulstu/paper/service/PaperNotificationService.java rename to src/main/java/ru/ulstu/activity/paper/service/PaperNotificationService.java index a4e4452..1e529ac 100644 --- a/src/main/java/ru/ulstu/paper/service/PaperNotificationService.java +++ b/src/main/java/ru/ulstu/activity/paper/service/PaperNotificationService.java @@ -1,10 +1,10 @@ -package ru.ulstu.paper.service; +package ru.ulstu.activity.paper.service; import com.google.common.collect.ImmutableMap; import org.springframework.stereotype.Service; +import ru.ulstu.activity.paper.model.Paper; import ru.ulstu.core.model.response.PageableItems; import ru.ulstu.core.util.DateUtils; -import ru.ulstu.paper.model.Paper; import ru.ulstu.user.model.User; import ru.ulstu.user.service.MailService; diff --git a/src/main/java/ru/ulstu/paper/service/PaperScheduler.java b/src/main/java/ru/ulstu/activity/paper/service/PaperScheduler.java similarity index 97% rename from src/main/java/ru/ulstu/paper/service/PaperScheduler.java rename to src/main/java/ru/ulstu/activity/paper/service/PaperScheduler.java index 64feb6c..936ed57 100644 --- a/src/main/java/ru/ulstu/paper/service/PaperScheduler.java +++ b/src/main/java/ru/ulstu/activity/paper/service/PaperScheduler.java @@ -1,4 +1,4 @@ -package ru.ulstu.paper.service; +package ru.ulstu.activity.paper.service; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/src/main/java/ru/ulstu/paper/service/PaperService.java b/src/main/java/ru/ulstu/activity/paper/service/PaperService.java similarity index 87% rename from src/main/java/ru/ulstu/paper/service/PaperService.java rename to src/main/java/ru/ulstu/activity/paper/service/PaperService.java index fa8c978..f2c095f 100644 --- a/src/main/java/ru/ulstu/paper/service/PaperService.java +++ b/src/main/java/ru/ulstu/activity/paper/service/PaperService.java @@ -1,25 +1,25 @@ -package ru.ulstu.paper.service; +package ru.ulstu.activity.paper.service; import org.springframework.data.domain.Page; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import ru.ulstu.boundary.service.AbstractActivityService; +import ru.ulstu.activity.common.service.AbstractActivityService; +import ru.ulstu.activity.deadline.model.Deadline; +import ru.ulstu.activity.deadline.service.DeadlineService; +import ru.ulstu.activity.file.model.FileDataDto; +import ru.ulstu.activity.file.service.FileService; +import ru.ulstu.activity.paper.model.Paper; +import ru.ulstu.activity.paper.model.PaperDashboardDto; +import ru.ulstu.activity.paper.model.PaperDto; +import ru.ulstu.activity.paper.model.PaperFilterListDto; +import ru.ulstu.activity.paper.model.PaperListDto; +import ru.ulstu.activity.paper.model.PaperStatusDto; +import ru.ulstu.activity.paper.model.PaperTypeDto; +import ru.ulstu.activity.paper.repository.PaperRepository; +import ru.ulstu.activity.ping.service.PingService; +import ru.ulstu.activity.timeline.service.EventService; import ru.ulstu.core.jpa.OffsetablePageRequest; import ru.ulstu.core.model.response.PageableItems; -import ru.ulstu.deadline.model.Deadline; -import ru.ulstu.deadline.service.DeadlineService; -import ru.ulstu.file.model.FileDataDto; -import ru.ulstu.file.service.FileService; -import ru.ulstu.paper.model.Paper; -import ru.ulstu.paper.model.PaperDashboardDto; -import ru.ulstu.paper.model.PaperDto; -import ru.ulstu.paper.model.PaperFilterListDto; -import ru.ulstu.paper.model.PaperListDto; -import ru.ulstu.paper.model.PaperStatusDto; -import ru.ulstu.paper.model.PaperTypeDto; -import ru.ulstu.paper.repository.PaperRepository; -import ru.ulstu.ping.service.PingService; -import ru.ulstu.timeline.service.EventService; import ru.ulstu.user.model.User; import ru.ulstu.user.service.UserService; @@ -34,17 +34,17 @@ import java.util.Set; import static java.util.stream.Collectors.toList; import static org.hibernate.internal.util.collections.CollectionHelper.isNotEmpty; import static org.springframework.util.ObjectUtils.isEmpty; +import static ru.ulstu.activity.paper.model.Paper.PaperStatus.ATTENTION; +import static ru.ulstu.activity.paper.model.Paper.PaperStatus.COMPLETED; +import static ru.ulstu.activity.paper.model.Paper.PaperStatus.DRAFT; +import static ru.ulstu.activity.paper.model.Paper.PaperStatus.FAILED; +import static ru.ulstu.activity.paper.model.Paper.PaperStatus.ON_PREPARATION; +import static ru.ulstu.activity.paper.model.Paper.PaperType.OTHER; import static ru.ulstu.core.util.StreamApiUtils.convert; import static ru.ulstu.core.util.StreamApiUtils.convertPageable; -import static ru.ulstu.paper.model.Paper.PaperStatus.ATTENTION; -import static ru.ulstu.paper.model.Paper.PaperStatus.COMPLETED; -import static ru.ulstu.paper.model.Paper.PaperStatus.DRAFT; -import static ru.ulstu.paper.model.Paper.PaperStatus.FAILED; -import static ru.ulstu.paper.model.Paper.PaperStatus.ON_PREPARATION; -import static ru.ulstu.paper.model.Paper.PaperType.OTHER; @Service -public class PaperService extends AbstractActivityService { +public class PaperService extends AbstractActivityService { private final PaperNotificationService paperNotificationService; private final PaperRepository paperRepository; private final UserService userService; @@ -264,7 +264,7 @@ public class PaperService extends AbstractActivityService pingInfos = new ArrayList<>(); for (Ping ping : pingRepository.findByDate(java.sql.Date.valueOf(LocalDate.now().minusWeeks(1)))) { - UserActivity pingActivity = ping.getActivity(); - Set users = pingActivity.getActivityUsers(); + AbstractActivity pingActivity = ping.getActivity(); + Set users = pingActivity.getActivityMembers(); for (User user : users) { PingInfo userPing = pingInfos.stream().filter(u -> u.getUser() == user).findFirst().orElse(null); diff --git a/src/main/java/ru/ulstu/ping/service/PingService.java b/src/main/java/ru/ulstu/activity/ping/service/PingService.java similarity index 79% rename from src/main/java/ru/ulstu/ping/service/PingService.java rename to src/main/java/ru/ulstu/activity/ping/service/PingService.java index 99ca26f..343fc80 100644 --- a/src/main/java/ru/ulstu/ping/service/PingService.java +++ b/src/main/java/ru/ulstu/activity/ping/service/PingService.java @@ -1,14 +1,13 @@ -package ru.ulstu.ping.service; +package ru.ulstu.activity.ping.service; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import ru.ulstu.conference.model.Conference; -import ru.ulstu.core.model.UserActivity; -import ru.ulstu.ping.model.Ping; -import ru.ulstu.ping.repository.PingRepository; +import ru.ulstu.activity.common.model.AbstractActivity; +import ru.ulstu.activity.conference.model.Conference; +import ru.ulstu.activity.ping.model.Ping; +import ru.ulstu.activity.ping.repository.PingRepository; import ru.ulstu.user.service.UserService; -import java.io.IOException; import java.util.Calendar; import java.util.Date; import java.util.List; @@ -26,7 +25,7 @@ public class PingService { } @Transactional - public Ping addPing(UserActivity activity) throws IOException { + public Ping addPing(AbstractActivity activity) { Ping newPing = new Ping(new Date(), userService.getCurrentUser()); newPing.setActivity(activity); return pingRepository.save(newPing); diff --git a/src/main/java/ru/ulstu/project/controller/ProjectController.java b/src/main/java/ru/ulstu/activity/project/controller/ProjectController.java similarity index 93% rename from src/main/java/ru/ulstu/project/controller/ProjectController.java rename to src/main/java/ru/ulstu/activity/project/controller/ProjectController.java index 09438fd..8bc38e9 100644 --- a/src/main/java/ru/ulstu/project/controller/ProjectController.java +++ b/src/main/java/ru/ulstu/activity/project/controller/ProjectController.java @@ -1,4 +1,4 @@ -package ru.ulstu.project.controller; +package ru.ulstu.activity.project.controller; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; @@ -10,11 +10,11 @@ import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; -import ru.ulstu.deadline.model.Deadline; -import ru.ulstu.grant.model.GrantDto; -import ru.ulstu.project.model.Project; -import ru.ulstu.project.model.ProjectDto; -import ru.ulstu.project.service.ProjectService; +import ru.ulstu.activity.deadline.model.Deadline; +import ru.ulstu.activity.grant.model.GrantDto; +import ru.ulstu.activity.project.model.Project; +import ru.ulstu.activity.project.model.ProjectDto; +import ru.ulstu.activity.project.service.ProjectService; import ru.ulstu.user.model.User; import springfox.documentation.annotations.ApiIgnore; diff --git a/src/main/java/ru/ulstu/project/model/Project.java b/src/main/java/ru/ulstu/activity/project/model/Project.java similarity index 90% rename from src/main/java/ru/ulstu/project/model/Project.java rename to src/main/java/ru/ulstu/activity/project/model/Project.java index 0ddb982..fb26267 100644 --- a/src/main/java/ru/ulstu/project/model/Project.java +++ b/src/main/java/ru/ulstu/activity/project/model/Project.java @@ -1,14 +1,13 @@ -package ru.ulstu.project.model; +package ru.ulstu.activity.project.model; import org.hibernate.annotations.Fetch; import org.hibernate.annotations.FetchMode; -import ru.ulstu.core.model.BaseEntity; -import ru.ulstu.core.model.EventSource; -import ru.ulstu.core.model.UserActivity; -import ru.ulstu.deadline.model.Deadline; -import ru.ulstu.file.model.FileData; -import ru.ulstu.grant.model.Grant; -import ru.ulstu.timeline.model.Event; +import ru.ulstu.activity.common.model.AbstractActivity; +import ru.ulstu.activity.common.model.EventSource; +import ru.ulstu.activity.deadline.model.Deadline; +import ru.ulstu.activity.file.model.FileData; +import ru.ulstu.activity.grant.model.Grant; +import ru.ulstu.activity.timeline.model.Event; import ru.ulstu.user.model.User; import javax.persistence.CascadeType; @@ -32,7 +31,7 @@ import java.util.Set; @Entity @DiscriminatorValue("PROJECT") -public class Project extends BaseEntity implements UserActivity, EventSource { +public class Project extends AbstractActivity implements EventSource { public enum ProjectStatus { TECHNICAL_TASK("Техническое задание"), @@ -96,6 +95,10 @@ public class Project extends BaseEntity implements UserActivity, EventSource { return title; } + public void setTitle(String title) { + this.title = title; + } + @Override public List getRecipients() { return executors != null ? new ArrayList<>(executors) : Collections.emptyList(); @@ -106,10 +109,6 @@ public class Project extends BaseEntity implements UserActivity, EventSource { event.setProject(this); } - public void setTitle(String title) { - this.title = title; - } - public ProjectStatus getStatus() { return status; } @@ -179,7 +178,7 @@ public class Project extends BaseEntity implements UserActivity, EventSource { } @Override - public Set getActivityUsers() { + public Set getActivityMembers() { return new HashSet<>(); } diff --git a/src/main/java/ru/ulstu/project/model/ProjectDto.java b/src/main/java/ru/ulstu/activity/project/model/ProjectDto.java similarity index 96% rename from src/main/java/ru/ulstu/project/model/ProjectDto.java rename to src/main/java/ru/ulstu/activity/project/model/ProjectDto.java index d5a8345..59af93d 100644 --- a/src/main/java/ru/ulstu/project/model/ProjectDto.java +++ b/src/main/java/ru/ulstu/activity/project/model/ProjectDto.java @@ -1,11 +1,11 @@ -package ru.ulstu.project.model; +package ru.ulstu.activity.project.model; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; import org.thymeleaf.util.StringUtils; -import ru.ulstu.deadline.model.Deadline; -import ru.ulstu.file.model.FileDataDto; -import ru.ulstu.grant.model.GrantDto; +import ru.ulstu.activity.deadline.model.Deadline; +import ru.ulstu.activity.file.model.FileDataDto; +import ru.ulstu.activity.grant.model.GrantDto; import ru.ulstu.user.model.User; import ru.ulstu.user.model.UserDto; diff --git a/src/main/java/ru/ulstu/project/repository/ProjectRepository.java b/src/main/java/ru/ulstu/activity/project/repository/ProjectRepository.java similarity index 60% rename from src/main/java/ru/ulstu/project/repository/ProjectRepository.java rename to src/main/java/ru/ulstu/activity/project/repository/ProjectRepository.java index 6a78075..059cd3c 100644 --- a/src/main/java/ru/ulstu/project/repository/ProjectRepository.java +++ b/src/main/java/ru/ulstu/activity/project/repository/ProjectRepository.java @@ -1,7 +1,7 @@ -package ru.ulstu.project.repository; +package ru.ulstu.activity.project.repository; import org.springframework.data.jpa.repository.JpaRepository; -import ru.ulstu.project.model.Project; +import ru.ulstu.activity.project.model.Project; public interface ProjectRepository extends JpaRepository { diff --git a/src/main/java/ru/ulstu/project/service/ProjectService.java b/src/main/java/ru/ulstu/activity/project/service/ProjectService.java similarity index 89% rename from src/main/java/ru/ulstu/project/service/ProjectService.java rename to src/main/java/ru/ulstu/activity/project/service/ProjectService.java index 07b07fa..e9d6316 100644 --- a/src/main/java/ru/ulstu/project/service/ProjectService.java +++ b/src/main/java/ru/ulstu/activity/project/service/ProjectService.java @@ -1,18 +1,18 @@ -package ru.ulstu.project.service; +package ru.ulstu.activity.project.service; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.thymeleaf.util.StringUtils; -import ru.ulstu.deadline.service.DeadlineService; -import ru.ulstu.file.model.FileDataDto; -import ru.ulstu.file.service.FileService; -import ru.ulstu.grant.model.GrantDto; -import ru.ulstu.grant.repository.GrantRepository; -import ru.ulstu.ping.service.PingService; -import ru.ulstu.project.model.Project; -import ru.ulstu.project.model.ProjectDto; -import ru.ulstu.project.repository.ProjectRepository; -import ru.ulstu.timeline.service.EventService; +import ru.ulstu.activity.deadline.service.DeadlineService; +import ru.ulstu.activity.file.model.FileDataDto; +import ru.ulstu.activity.file.service.FileService; +import ru.ulstu.activity.grant.model.GrantDto; +import ru.ulstu.activity.grant.repository.GrantRepository; +import ru.ulstu.activity.ping.service.PingService; +import ru.ulstu.activity.project.model.Project; +import ru.ulstu.activity.project.model.ProjectDto; +import ru.ulstu.activity.project.repository.ProjectRepository; +import ru.ulstu.activity.timeline.service.EventService; import ru.ulstu.user.model.User; import ru.ulstu.user.service.UserService; @@ -23,8 +23,8 @@ import java.util.List; import static java.util.stream.Collectors.toList; import static org.springframework.util.ObjectUtils.isEmpty; +import static ru.ulstu.activity.project.model.Project.ProjectStatus.TECHNICAL_TASK; import static ru.ulstu.core.util.StreamApiUtils.convert; -import static ru.ulstu.project.model.Project.ProjectStatus.TECHNICAL_TASK; @Service public class ProjectService { @@ -147,7 +147,7 @@ public class ProjectService { } @Transactional - public void ping(int projectId) throws IOException { + public void ping(int projectId) { pingService.addPing(findById(projectId)); } diff --git a/src/main/java/ru/ulstu/students/controller/Navigation.java b/src/main/java/ru/ulstu/activity/students/controller/Navigation.java similarity index 89% rename from src/main/java/ru/ulstu/students/controller/Navigation.java rename to src/main/java/ru/ulstu/activity/students/controller/Navigation.java index 348f062..16b845b 100644 --- a/src/main/java/ru/ulstu/students/controller/Navigation.java +++ b/src/main/java/ru/ulstu/activity/students/controller/Navigation.java @@ -1,4 +1,4 @@ -package ru.ulstu.students.controller; +package ru.ulstu.activity.students.controller; import org.springframework.validation.Errors; diff --git a/src/main/java/ru/ulstu/students/controller/TaskController.java b/src/main/java/ru/ulstu/activity/students/controller/TaskController.java similarity index 86% rename from src/main/java/ru/ulstu/students/controller/TaskController.java rename to src/main/java/ru/ulstu/activity/students/controller/TaskController.java index 5d0f4e8..2839371 100644 --- a/src/main/java/ru/ulstu/students/controller/TaskController.java +++ b/src/main/java/ru/ulstu/activity/students/controller/TaskController.java @@ -1,4 +1,4 @@ -package ru.ulstu.students.controller; +package ru.ulstu.activity.students.controller; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; @@ -9,12 +9,12 @@ import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; -import ru.ulstu.deadline.model.Deadline; -import ru.ulstu.students.model.Task; -import ru.ulstu.students.model.TaskDto; -import ru.ulstu.students.model.TaskFilterDto; -import ru.ulstu.students.service.TaskService; -import ru.ulstu.tags.model.Tag; +import ru.ulstu.activity.deadline.model.Deadline; +import ru.ulstu.activity.students.model.Task; +import ru.ulstu.activity.students.model.TaskDto; +import ru.ulstu.activity.students.model.TaskFilterDto; +import ru.ulstu.activity.students.service.TaskService; +import ru.ulstu.activity.tags.model.Tag; import springfox.documentation.annotations.ApiIgnore; import javax.validation.Valid; @@ -23,9 +23,9 @@ import java.util.List; import java.util.stream.Collectors; import static org.springframework.util.StringUtils.isEmpty; -import static ru.ulstu.students.controller.Navigation.REDIRECT_TO; -import static ru.ulstu.students.controller.Navigation.TASKS_PAGE; -import static ru.ulstu.students.controller.Navigation.TASK_PAGE; +import static ru.ulstu.activity.students.controller.Navigation.REDIRECT_TO; +import static ru.ulstu.activity.students.controller.Navigation.TASKS_PAGE; +import static ru.ulstu.activity.students.controller.Navigation.TASK_PAGE; @Controller() @RequestMapping(value = "/students") diff --git a/src/main/java/ru/ulstu/students/model/Scheduler.java b/src/main/java/ru/ulstu/activity/students/model/Scheduler.java similarity index 96% rename from src/main/java/ru/ulstu/students/model/Scheduler.java rename to src/main/java/ru/ulstu/activity/students/model/Scheduler.java index 67005b1..e886f91 100644 --- a/src/main/java/ru/ulstu/students/model/Scheduler.java +++ b/src/main/java/ru/ulstu/activity/students/model/Scheduler.java @@ -1,4 +1,4 @@ -package ru.ulstu.students.model; +package ru.ulstu.activity.students.model; import org.springframework.format.annotation.DateTimeFormat; import ru.ulstu.core.model.BaseEntity; diff --git a/src/main/java/ru/ulstu/students/model/Task.java b/src/main/java/ru/ulstu/activity/students/model/Task.java similarity index 93% rename from src/main/java/ru/ulstu/students/model/Task.java rename to src/main/java/ru/ulstu/activity/students/model/Task.java index 4da0aa2..9ad5762 100644 --- a/src/main/java/ru/ulstu/students/model/Task.java +++ b/src/main/java/ru/ulstu/activity/students/model/Task.java @@ -1,12 +1,12 @@ -package ru.ulstu.students.model; +package ru.ulstu.activity.students.model; import org.hibernate.annotations.Fetch; import org.hibernate.annotations.FetchMode; +import ru.ulstu.activity.common.model.EventSource; +import ru.ulstu.activity.deadline.model.Deadline; +import ru.ulstu.activity.tags.model.Tag; +import ru.ulstu.activity.timeline.model.Event; import ru.ulstu.core.model.BaseEntity; -import ru.ulstu.core.model.EventSource; -import ru.ulstu.deadline.model.Deadline; -import ru.ulstu.tags.model.Tag; -import ru.ulstu.timeline.model.Event; import ru.ulstu.user.model.User; import javax.persistence.CascadeType; diff --git a/src/main/java/ru/ulstu/students/model/TaskDto.java b/src/main/java/ru/ulstu/activity/students/model/TaskDto.java similarity index 97% rename from src/main/java/ru/ulstu/students/model/TaskDto.java rename to src/main/java/ru/ulstu/activity/students/model/TaskDto.java index 24ad204..f63e494 100644 --- a/src/main/java/ru/ulstu/students/model/TaskDto.java +++ b/src/main/java/ru/ulstu/activity/students/model/TaskDto.java @@ -1,10 +1,10 @@ -package ru.ulstu.students.model; +package ru.ulstu.activity.students.model; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; import org.apache.commons.lang3.StringUtils; -import ru.ulstu.deadline.model.Deadline; -import ru.ulstu.tags.model.Tag; +import ru.ulstu.activity.deadline.model.Deadline; +import ru.ulstu.activity.tags.model.Tag; import javax.validation.constraints.NotEmpty; import java.util.ArrayList; diff --git a/src/main/java/ru/ulstu/students/model/TaskFilterDto.java b/src/main/java/ru/ulstu/activity/students/model/TaskFilterDto.java similarity index 96% rename from src/main/java/ru/ulstu/students/model/TaskFilterDto.java rename to src/main/java/ru/ulstu/activity/students/model/TaskFilterDto.java index 21bd5ac..6b4cb42 100644 --- a/src/main/java/ru/ulstu/students/model/TaskFilterDto.java +++ b/src/main/java/ru/ulstu/activity/students/model/TaskFilterDto.java @@ -1,4 +1,4 @@ -package ru.ulstu.students.model; +package ru.ulstu.activity.students.model; import java.util.List; diff --git a/src/main/java/ru/ulstu/students/repository/SchedulerRepository.java b/src/main/java/ru/ulstu/activity/students/repository/SchedulerRepository.java similarity index 56% rename from src/main/java/ru/ulstu/students/repository/SchedulerRepository.java rename to src/main/java/ru/ulstu/activity/students/repository/SchedulerRepository.java index 7481692..3cb346f 100644 --- a/src/main/java/ru/ulstu/students/repository/SchedulerRepository.java +++ b/src/main/java/ru/ulstu/activity/students/repository/SchedulerRepository.java @@ -1,8 +1,8 @@ -package ru.ulstu.students.repository; +package ru.ulstu.activity.students.repository; import org.springframework.data.jpa.repository.JpaRepository; -import ru.ulstu.students.model.Scheduler; -import ru.ulstu.students.model.Task; +import ru.ulstu.activity.students.model.Scheduler; +import ru.ulstu.activity.students.model.Task; public interface SchedulerRepository extends JpaRepository { diff --git a/src/main/java/ru/ulstu/students/repository/TaskRepository.java b/src/main/java/ru/ulstu/activity/students/repository/TaskRepository.java similarity index 88% rename from src/main/java/ru/ulstu/students/repository/TaskRepository.java rename to src/main/java/ru/ulstu/activity/students/repository/TaskRepository.java index af277d1..9e8d30d 100644 --- a/src/main/java/ru/ulstu/students/repository/TaskRepository.java +++ b/src/main/java/ru/ulstu/activity/students/repository/TaskRepository.java @@ -1,10 +1,10 @@ -package ru.ulstu.students.repository; +package ru.ulstu.activity.students.repository; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; -import ru.ulstu.students.model.Task; -import ru.ulstu.tags.model.Tag; +import ru.ulstu.activity.students.model.Task; +import ru.ulstu.activity.tags.model.Tag; import java.util.Date; import java.util.List; diff --git a/src/main/java/ru/ulstu/students/service/SchedulerService.java b/src/main/java/ru/ulstu/activity/students/service/SchedulerService.java similarity index 93% rename from src/main/java/ru/ulstu/students/service/SchedulerService.java rename to src/main/java/ru/ulstu/activity/students/service/SchedulerService.java index b192130..150cb0f 100644 --- a/src/main/java/ru/ulstu/students/service/SchedulerService.java +++ b/src/main/java/ru/ulstu/activity/students/service/SchedulerService.java @@ -1,11 +1,11 @@ -package ru.ulstu.students.service; +package ru.ulstu.activity.students.service; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import ru.ulstu.students.model.Scheduler; -import ru.ulstu.students.model.Task; -import ru.ulstu.students.repository.SchedulerRepository; -import ru.ulstu.tags.model.Tag; +import ru.ulstu.activity.students.model.Scheduler; +import ru.ulstu.activity.students.model.Task; +import ru.ulstu.activity.students.repository.SchedulerRepository; +import ru.ulstu.activity.tags.model.Tag; import java.util.Date; import java.util.List; diff --git a/src/main/java/ru/ulstu/students/service/TaskGenerationService.java b/src/main/java/ru/ulstu/activity/students/service/TaskGenerationService.java similarity index 95% rename from src/main/java/ru/ulstu/students/service/TaskGenerationService.java rename to src/main/java/ru/ulstu/activity/students/service/TaskGenerationService.java index 1c04c20..7119194 100644 --- a/src/main/java/ru/ulstu/students/service/TaskGenerationService.java +++ b/src/main/java/ru/ulstu/activity/students/service/TaskGenerationService.java @@ -1,4 +1,4 @@ -package ru.ulstu.students.service; +package ru.ulstu.activity.students.service; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/src/main/java/ru/ulstu/students/service/TaskService.java b/src/main/java/ru/ulstu/activity/students/service/TaskService.java similarity index 92% rename from src/main/java/ru/ulstu/students/service/TaskService.java rename to src/main/java/ru/ulstu/activity/students/service/TaskService.java index c3b4f3a..9680f19 100644 --- a/src/main/java/ru/ulstu/students/service/TaskService.java +++ b/src/main/java/ru/ulstu/activity/students/service/TaskService.java @@ -1,21 +1,21 @@ -package ru.ulstu.students.service; +package ru.ulstu.activity.students.service; import org.apache.commons.lang3.StringUtils; import org.springframework.data.domain.Sort; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import ru.ulstu.activity.deadline.model.Deadline; +import ru.ulstu.activity.deadline.service.DeadlineService; +import ru.ulstu.activity.students.model.Scheduler; +import ru.ulstu.activity.students.model.Task; +import ru.ulstu.activity.students.model.TaskDto; +import ru.ulstu.activity.students.model.TaskFilterDto; +import ru.ulstu.activity.students.repository.SchedulerRepository; +import ru.ulstu.activity.students.repository.TaskRepository; +import ru.ulstu.activity.tags.model.Tag; +import ru.ulstu.activity.tags.service.TagService; +import ru.ulstu.activity.timeline.service.EventService; import ru.ulstu.core.util.DateUtils; -import ru.ulstu.deadline.model.Deadline; -import ru.ulstu.deadline.service.DeadlineService; -import ru.ulstu.students.model.Scheduler; -import ru.ulstu.students.model.Task; -import ru.ulstu.students.model.TaskDto; -import ru.ulstu.students.model.TaskFilterDto; -import ru.ulstu.students.repository.SchedulerRepository; -import ru.ulstu.students.repository.TaskRepository; -import ru.ulstu.tags.model.Tag; -import ru.ulstu.tags.service.TagService; -import ru.ulstu.timeline.service.EventService; import java.io.IOException; import java.util.ArrayList; @@ -30,8 +30,8 @@ import java.util.TreeMap; import java.util.stream.Collectors; import static org.springframework.util.ObjectUtils.isEmpty; +import static ru.ulstu.activity.students.model.Task.TaskStatus.IN_WORK; import static ru.ulstu.core.util.StreamApiUtils.convert; -import static ru.ulstu.students.model.Task.TaskStatus.IN_WORK; @Service public class TaskService { diff --git a/src/main/java/ru/ulstu/tags/model/Tag.java b/src/main/java/ru/ulstu/activity/tags/model/Tag.java similarity index 97% rename from src/main/java/ru/ulstu/tags/model/Tag.java rename to src/main/java/ru/ulstu/activity/tags/model/Tag.java index 023cfb4..b2081e6 100644 --- a/src/main/java/ru/ulstu/tags/model/Tag.java +++ b/src/main/java/ru/ulstu/activity/tags/model/Tag.java @@ -1,4 +1,4 @@ -package ru.ulstu.tags.model; +package ru.ulstu.activity.tags.model; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; diff --git a/src/main/java/ru/ulstu/tags/repository/TagRepository.java b/src/main/java/ru/ulstu/activity/tags/repository/TagRepository.java similarity index 81% rename from src/main/java/ru/ulstu/tags/repository/TagRepository.java rename to src/main/java/ru/ulstu/activity/tags/repository/TagRepository.java index 213abae..882e476 100644 --- a/src/main/java/ru/ulstu/tags/repository/TagRepository.java +++ b/src/main/java/ru/ulstu/activity/tags/repository/TagRepository.java @@ -1,9 +1,9 @@ -package ru.ulstu.tags.repository; +package ru.ulstu.activity.tags.repository; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; -import ru.ulstu.tags.model.Tag; +import ru.ulstu.activity.tags.model.Tag; public interface TagRepository extends JpaRepository { diff --git a/src/main/java/ru/ulstu/tags/service/TagService.java b/src/main/java/ru/ulstu/activity/tags/service/TagService.java similarity index 91% rename from src/main/java/ru/ulstu/tags/service/TagService.java rename to src/main/java/ru/ulstu/activity/tags/service/TagService.java index f85889d..5615bea 100644 --- a/src/main/java/ru/ulstu/tags/service/TagService.java +++ b/src/main/java/ru/ulstu/activity/tags/service/TagService.java @@ -1,8 +1,8 @@ -package ru.ulstu.tags.service; +package ru.ulstu.activity.tags.service; import org.springframework.stereotype.Service; -import ru.ulstu.tags.model.Tag; -import ru.ulstu.tags.repository.TagRepository; +import ru.ulstu.activity.tags.model.Tag; +import ru.ulstu.activity.tags.repository.TagRepository; import javax.transaction.Transactional; import java.util.List; diff --git a/src/main/java/ru/ulstu/timeline/controller/EventController.java b/src/main/java/ru/ulstu/activity/timeline/controller/EventController.java similarity index 91% rename from src/main/java/ru/ulstu/timeline/controller/EventController.java rename to src/main/java/ru/ulstu/activity/timeline/controller/EventController.java index 2a9245c..c75b406 100644 --- a/src/main/java/ru/ulstu/timeline/controller/EventController.java +++ b/src/main/java/ru/ulstu/activity/timeline/controller/EventController.java @@ -1,4 +1,4 @@ -package ru.ulstu.timeline.controller; +package ru.ulstu.activity.timeline.controller; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; @@ -8,10 +8,10 @@ import org.springframework.web.bind.annotation.PutMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import ru.ulstu.activity.timeline.model.EventDto; +import ru.ulstu.activity.timeline.service.EventService; import ru.ulstu.configuration.Constants; import ru.ulstu.core.model.response.Response; -import ru.ulstu.timeline.model.EventDto; -import ru.ulstu.timeline.service.EventService; import javax.validation.Valid; import java.util.List; diff --git a/src/main/java/ru/ulstu/timeline/model/Event.java b/src/main/java/ru/ulstu/activity/timeline/model/Event.java similarity index 94% rename from src/main/java/ru/ulstu/timeline/model/Event.java rename to src/main/java/ru/ulstu/activity/timeline/model/Event.java index bf69a70..3a9e55e 100644 --- a/src/main/java/ru/ulstu/timeline/model/Event.java +++ b/src/main/java/ru/ulstu/activity/timeline/model/Event.java @@ -1,11 +1,11 @@ -package ru.ulstu.timeline.model; +package ru.ulstu.activity.timeline.model; -import ru.ulstu.conference.model.Conference; +import ru.ulstu.activity.conference.model.Conference; +import ru.ulstu.activity.grant.model.Grant; +import ru.ulstu.activity.paper.model.Paper; +import ru.ulstu.activity.project.model.Project; +import ru.ulstu.activity.students.model.Task; import ru.ulstu.core.model.BaseEntity; -import ru.ulstu.grant.model.Grant; -import ru.ulstu.paper.model.Paper; -import ru.ulstu.project.model.Project; -import ru.ulstu.students.model.Task; import ru.ulstu.user.model.User; import javax.persistence.CascadeType; diff --git a/src/main/java/ru/ulstu/timeline/model/EventDto.java b/src/main/java/ru/ulstu/activity/timeline/model/EventDto.java similarity index 94% rename from src/main/java/ru/ulstu/timeline/model/EventDto.java rename to src/main/java/ru/ulstu/activity/timeline/model/EventDto.java index 7c3a836..5a1d014 100644 --- a/src/main/java/ru/ulstu/timeline/model/EventDto.java +++ b/src/main/java/ru/ulstu/activity/timeline/model/EventDto.java @@ -1,12 +1,12 @@ -package ru.ulstu.timeline.model; +package ru.ulstu.activity.timeline.model; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; -import ru.ulstu.conference.model.ConferenceDto; -import ru.ulstu.grant.model.GrantDto; -import ru.ulstu.paper.model.PaperDto; -import ru.ulstu.project.model.ProjectDto; -import ru.ulstu.students.model.TaskDto; +import ru.ulstu.activity.conference.model.ConferenceDto; +import ru.ulstu.activity.grant.model.GrantDto; +import ru.ulstu.activity.paper.model.PaperDto; +import ru.ulstu.activity.project.model.ProjectDto; +import ru.ulstu.activity.students.model.TaskDto; import ru.ulstu.user.model.UserDto; import javax.validation.constraints.NotBlank; diff --git a/src/main/java/ru/ulstu/timeline/model/PeriodEvent.java b/src/main/java/ru/ulstu/activity/timeline/model/PeriodEvent.java similarity index 93% rename from src/main/java/ru/ulstu/timeline/model/PeriodEvent.java rename to src/main/java/ru/ulstu/activity/timeline/model/PeriodEvent.java index 39eaffb..c64ede8 100644 --- a/src/main/java/ru/ulstu/timeline/model/PeriodEvent.java +++ b/src/main/java/ru/ulstu/activity/timeline/model/PeriodEvent.java @@ -1,4 +1,4 @@ -package ru.ulstu.timeline.model; +package ru.ulstu.activity.timeline.model; import java.time.Period; diff --git a/src/main/java/ru/ulstu/timeline/model/Timeline.java b/src/main/java/ru/ulstu/activity/timeline/model/Timeline.java similarity index 93% rename from src/main/java/ru/ulstu/timeline/model/Timeline.java rename to src/main/java/ru/ulstu/activity/timeline/model/Timeline.java index 06e04bc..421cba2 100644 --- a/src/main/java/ru/ulstu/timeline/model/Timeline.java +++ b/src/main/java/ru/ulstu/activity/timeline/model/Timeline.java @@ -1,4 +1,4 @@ -package ru.ulstu.timeline.model; +package ru.ulstu.activity.timeline.model; import ru.ulstu.core.model.BaseEntity; diff --git a/src/main/java/ru/ulstu/timeline/model/TimelineDto.java b/src/main/java/ru/ulstu/activity/timeline/model/TimelineDto.java similarity index 94% rename from src/main/java/ru/ulstu/timeline/model/TimelineDto.java rename to src/main/java/ru/ulstu/activity/timeline/model/TimelineDto.java index 1c651a7..aa9c68b 100644 --- a/src/main/java/ru/ulstu/timeline/model/TimelineDto.java +++ b/src/main/java/ru/ulstu/activity/timeline/model/TimelineDto.java @@ -1,4 +1,4 @@ -package ru.ulstu.timeline.model; +package ru.ulstu.activity.timeline.model; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; diff --git a/src/main/java/ru/ulstu/timeline/repository/EventRepository.java b/src/main/java/ru/ulstu/activity/timeline/repository/EventRepository.java similarity index 67% rename from src/main/java/ru/ulstu/timeline/repository/EventRepository.java rename to src/main/java/ru/ulstu/activity/timeline/repository/EventRepository.java index 15e1355..c921639 100644 --- a/src/main/java/ru/ulstu/timeline/repository/EventRepository.java +++ b/src/main/java/ru/ulstu/activity/timeline/repository/EventRepository.java @@ -1,13 +1,13 @@ -package ru.ulstu.timeline.repository; +package ru.ulstu.activity.timeline.repository; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; -import ru.ulstu.conference.model.Conference; -import ru.ulstu.grant.model.Grant; -import ru.ulstu.paper.model.Paper; -import ru.ulstu.project.model.Project; -import ru.ulstu.students.model.Task; -import ru.ulstu.timeline.model.Event; +import ru.ulstu.activity.conference.model.Conference; +import ru.ulstu.activity.grant.model.Grant; +import ru.ulstu.activity.paper.model.Paper; +import ru.ulstu.activity.project.model.Project; +import ru.ulstu.activity.students.model.Task; +import ru.ulstu.activity.timeline.model.Event; import java.util.List; diff --git a/src/main/java/ru/ulstu/timeline/repository/TimelineRepository.java b/src/main/java/ru/ulstu/activity/timeline/repository/TimelineRepository.java similarity index 59% rename from src/main/java/ru/ulstu/timeline/repository/TimelineRepository.java rename to src/main/java/ru/ulstu/activity/timeline/repository/TimelineRepository.java index 6b1be39..c455c8a 100644 --- a/src/main/java/ru/ulstu/timeline/repository/TimelineRepository.java +++ b/src/main/java/ru/ulstu/activity/timeline/repository/TimelineRepository.java @@ -1,7 +1,7 @@ -package ru.ulstu.timeline.repository; +package ru.ulstu.activity.timeline.repository; import org.springframework.data.jpa.repository.JpaRepository; -import ru.ulstu.timeline.model.Timeline; +import ru.ulstu.activity.timeline.model.Timeline; public interface TimelineRepository extends JpaRepository { } diff --git a/src/main/java/ru/ulstu/timeline/service/EventScheduler.java b/src/main/java/ru/ulstu/activity/timeline/service/EventScheduler.java similarity index 95% rename from src/main/java/ru/ulstu/timeline/service/EventScheduler.java rename to src/main/java/ru/ulstu/activity/timeline/service/EventScheduler.java index 7899aca..7854cea 100644 --- a/src/main/java/ru/ulstu/timeline/service/EventScheduler.java +++ b/src/main/java/ru/ulstu/activity/timeline/service/EventScheduler.java @@ -1,13 +1,13 @@ -package ru.ulstu.timeline.service; +package ru.ulstu.activity.timeline.service; import com.google.common.collect.ImmutableMap; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Service; +import ru.ulstu.activity.timeline.model.Event; +import ru.ulstu.activity.timeline.model.PeriodEvent; import ru.ulstu.core.util.DateUtils; -import ru.ulstu.timeline.model.Event; -import ru.ulstu.timeline.model.PeriodEvent; import ru.ulstu.user.service.MailService; import java.util.Date; diff --git a/src/main/java/ru/ulstu/timeline/service/EventService.java b/src/main/java/ru/ulstu/activity/timeline/service/EventService.java similarity index 91% rename from src/main/java/ru/ulstu/timeline/service/EventService.java rename to src/main/java/ru/ulstu/activity/timeline/service/EventService.java index c7639c2..9c75696 100644 --- a/src/main/java/ru/ulstu/timeline/service/EventService.java +++ b/src/main/java/ru/ulstu/activity/timeline/service/EventService.java @@ -1,20 +1,20 @@ -package ru.ulstu.timeline.service; +package ru.ulstu.activity.timeline.service; import org.apache.commons.lang3.time.DateUtils; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import ru.ulstu.conference.model.Conference; -import ru.ulstu.core.model.EventSource; -import ru.ulstu.deadline.model.Deadline; -import ru.ulstu.grant.model.Grant; -import ru.ulstu.paper.model.Paper; -import ru.ulstu.project.model.Project; -import ru.ulstu.students.model.Task; -import ru.ulstu.timeline.model.Event; -import ru.ulstu.timeline.model.EventDto; -import ru.ulstu.timeline.model.Timeline; -import ru.ulstu.timeline.repository.EventRepository; +import ru.ulstu.activity.common.model.EventSource; +import ru.ulstu.activity.conference.model.Conference; +import ru.ulstu.activity.deadline.model.Deadline; +import ru.ulstu.activity.grant.model.Grant; +import ru.ulstu.activity.paper.model.Paper; +import ru.ulstu.activity.project.model.Project; +import ru.ulstu.activity.students.model.Task; +import ru.ulstu.activity.timeline.model.Event; +import ru.ulstu.activity.timeline.model.EventDto; +import ru.ulstu.activity.timeline.model.Timeline; +import ru.ulstu.activity.timeline.repository.EventRepository; import ru.ulstu.user.model.UserDto; import ru.ulstu.user.service.UserService; diff --git a/src/main/java/ru/ulstu/timeline/service/TimelineService.java b/src/main/java/ru/ulstu/activity/timeline/service/TimelineService.java similarity index 86% rename from src/main/java/ru/ulstu/timeline/service/TimelineService.java rename to src/main/java/ru/ulstu/activity/timeline/service/TimelineService.java index dd5c384..e84f314 100644 --- a/src/main/java/ru/ulstu/timeline/service/TimelineService.java +++ b/src/main/java/ru/ulstu/activity/timeline/service/TimelineService.java @@ -1,11 +1,11 @@ -package ru.ulstu.timeline.service; +package ru.ulstu.activity.timeline.service; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import ru.ulstu.timeline.model.EventDto; -import ru.ulstu.timeline.model.Timeline; -import ru.ulstu.timeline.model.TimelineDto; -import ru.ulstu.timeline.repository.TimelineRepository; +import ru.ulstu.activity.timeline.model.EventDto; +import ru.ulstu.activity.timeline.model.Timeline; +import ru.ulstu.activity.timeline.model.TimelineDto; +import ru.ulstu.activity.timeline.repository.TimelineRepository; import java.util.List; diff --git a/src/main/java/ru/ulstu/boundary/model/ActivityDto.java b/src/main/java/ru/ulstu/boundary/model/ActivityDto.java deleted file mode 100644 index 6570563..0000000 --- a/src/main/java/ru/ulstu/boundary/model/ActivityDto.java +++ /dev/null @@ -1,4 +0,0 @@ -package ru.ulstu.boundary.model; - -public interface ActivityDto { -} diff --git a/src/main/java/ru/ulstu/boundary/model/ActivityListDto.java b/src/main/java/ru/ulstu/boundary/model/ActivityListDto.java deleted file mode 100644 index f6b7213..0000000 --- a/src/main/java/ru/ulstu/boundary/model/ActivityListDto.java +++ /dev/null @@ -1,4 +0,0 @@ -package ru.ulstu.boundary.model; - -public interface ActivityListDto { -} \ No newline at end of file diff --git a/src/main/java/ru/ulstu/conference/controller/ConferenceController.java b/src/main/java/ru/ulstu/conference/controller/ConferenceController.java deleted file mode 100644 index f9a4bac..0000000 --- a/src/main/java/ru/ulstu/conference/controller/ConferenceController.java +++ /dev/null @@ -1,165 +0,0 @@ -package ru.ulstu.conference.controller; - - -import org.springframework.stereotype.Controller; -import org.springframework.ui.ModelMap; -import org.springframework.validation.Errors; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.ModelAttribute; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; -import ru.ulstu.conference.model.ConferenceDto; -import ru.ulstu.conference.model.ConferenceFilterDto; -import ru.ulstu.conference.model.ConferenceUser; -import ru.ulstu.conference.service.ConferenceService; -import ru.ulstu.user.model.User; -import springfox.documentation.annotations.ApiIgnore; - -import javax.validation.Valid; -import java.io.IOException; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.List; - -import static ru.ulstu.core.controller.Navigation.CONFERENCES_PAGE; -import static ru.ulstu.core.controller.Navigation.CONFERENCE_PAGE; -import static ru.ulstu.core.controller.Navigation.REDIRECT_TO; - - -@Controller() -@RequestMapping(value = "/conferences") -@ApiIgnore -public class ConferenceController { - - private final ConferenceService conferenceService; - - public ConferenceController(ConferenceService conferenceService) { - this.conferenceService = conferenceService; - } - - @GetMapping("/conferences") - public void getConferences(ModelMap modelMap) { - modelMap.put("filteredConferences", new ConferenceFilterDto(conferenceService.findAllDto())); - } - - @PostMapping("/conferences") - public void filterConferences(@Valid ConferenceFilterDto conferenceFilterDto, ModelMap modelMap) { - modelMap.put("filteredConferences", new ConferenceFilterDto(conferenceService.filter(conferenceFilterDto), - conferenceFilterDto.getFilterUserId(), - conferenceFilterDto.getYear())); - } - - @GetMapping("/dashboard") - public void getDashboard(ModelMap modelMap) { - modelMap.put("conferences", conferenceService.findAllActiveDto()); - - conferenceService.setChartData(modelMap); // example - } - - @GetMapping("/conference") - public void getConference(ModelMap modelMap, @RequestParam(value = "id") Integer id) { - if (id != null && id > 0) { - modelMap.put("conferenceDto", conferenceService.getExistConferenceById(id)); - } else { - modelMap.put("conferenceDto", conferenceService.getNewConference()); - } - } - - @PostMapping(value = "/conferences", params = "deleteConference") - public String delete(@RequestParam("deleteConference") Integer conferenceId) throws IOException { - conferenceService.delete(conferenceId); - return String.format(REDIRECT_TO, CONFERENCES_PAGE); - } - - @PostMapping(value = "/conference", params = "save") - public String save(@Valid ConferenceDto conferenceDto, Errors errors) throws IOException { - if (!conferenceService.save(conferenceDto, errors)) { - return CONFERENCE_PAGE; - } - return String.format(REDIRECT_TO, CONFERENCES_PAGE); - } - - @PostMapping(value = "/conference", params = "addDeadline") - public String addDeadline(@Valid ConferenceDto conferenceDto, Errors errors) throws IOException { - conferenceService.filterEmptyDeadlines(conferenceDto); - if (errors.hasErrors()) { - return CONFERENCE_PAGE; - } - conferenceService.addDeadline(conferenceDto); - return CONFERENCE_PAGE; - } - - @PostMapping(value = "/conference", params = "removeDeadline") - public String removeDeadline(@Valid ConferenceDto conferenceDto, Errors errors, - @RequestParam(value = "removeDeadline") Integer deadlineIndex) throws IOException { - if (errors.hasErrors()) { - return CONFERENCE_PAGE; - } - conferenceService.removeDeadline(conferenceDto, deadlineIndex); - return CONFERENCE_PAGE; - } - - @PostMapping(value = "/conference", params = "addPaper") - public String addPaper(@Valid ConferenceDto conferenceDto, Errors errors) throws IOException { - if (errors.hasErrors()) { - return CONFERENCE_PAGE; - } - conferenceService.addPaper(conferenceDto); - - return CONFERENCE_PAGE; - } - - @PostMapping(value = "/conference", params = "removePaper") - public String removePaper(@Valid ConferenceDto conferenceDto, Errors errors, - @RequestParam(value = "removePaper") Integer paperIndex) throws IOException { - if (errors.hasErrors()) { - return CONFERENCE_PAGE; - } - conferenceService.removePaper(conferenceDto, paperIndex); - return CONFERENCE_PAGE; - } - - @PostMapping(value = "/conference", params = "takePart") - public String takePart(@Valid ConferenceDto conferenceDto, Errors errors) throws IOException { - if (errors.hasErrors()) { - return CONFERENCE_PAGE; - } - conferenceService.takePart(conferenceDto); - return CONFERENCE_PAGE; - } - - @PostMapping(value = "/conference", params = "pingConference") - public String ping(@Valid ConferenceDto conferenceDto, Errors errors) throws IOException { - if (errors.hasErrors()) { - return CONFERENCE_PAGE; - } - conferenceService.ping(conferenceDto); - return CONFERENCE_PAGE; - } - - @ModelAttribute("allParticipation") - public List getAllParticipation() { - return conferenceService.getAllParticipations(); - } - - @ModelAttribute("allDeposit") - public List getAllDeposit() { - return conferenceService.getAllDeposit(); - } - - @ModelAttribute("allUsers") - public List getAllUsers() { - return conferenceService.getAllUsers(); - } - - @ModelAttribute("allYears") - public List getAllYears() { - List years = new ArrayList<>(); - for (int i = Calendar.getInstance().get(Calendar.YEAR); i > 2010; i--) { - years.add(i); - } - return years; - } - -} diff --git a/src/main/java/ru/ulstu/core/controller/Navigation.java b/src/main/java/ru/ulstu/core/controller/Navigation.java deleted file mode 100644 index caea429..0000000 --- a/src/main/java/ru/ulstu/core/controller/Navigation.java +++ /dev/null @@ -1,19 +0,0 @@ -package ru.ulstu.core.controller; - -import org.springframework.validation.Errors; - -public class Navigation { - public static final String REDIRECT_TO = "redirect:%s"; - public static final String GRANTS_PAGE = "/grants/grants"; - public static final String GRANT_PAGE = "/grants/grant"; - - public static final String CONFERENCES_PAGE = "/conferences/conferences"; - public static final String CONFERENCE_PAGE = "/conferences/conference"; - - public static String hasErrors(Errors errors, String page) { - if (errors.hasErrors()) { - return page; - } - return null; - } -} diff --git a/src/main/java/ru/ulstu/core/model/UserActivity.java b/src/main/java/ru/ulstu/core/model/UserActivity.java deleted file mode 100644 index f45819d..0000000 --- a/src/main/java/ru/ulstu/core/model/UserActivity.java +++ /dev/null @@ -1,11 +0,0 @@ -package ru.ulstu.core.model; - -import ru.ulstu.user.model.User; - -import java.util.Set; - -public interface UserActivity { - String getTitle(); - - Set getActivityUsers(); -} diff --git a/src/main/java/ru/ulstu/grant/controller/GrantController.java b/src/main/java/ru/ulstu/grant/controller/GrantController.java deleted file mode 100644 index 48dee8e..0000000 --- a/src/main/java/ru/ulstu/grant/controller/GrantController.java +++ /dev/null @@ -1,133 +0,0 @@ -package ru.ulstu.grant.controller; - -import org.springframework.stereotype.Controller; -import org.springframework.ui.ModelMap; -import org.springframework.validation.Errors; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.ModelAttribute; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.ResponseBody; -import ru.ulstu.deadline.model.Deadline; -import ru.ulstu.grant.model.Grant; -import ru.ulstu.grant.model.GrantDto; -import ru.ulstu.grant.service.GrantService; -import ru.ulstu.paper.model.PaperDto; -import ru.ulstu.user.model.User; -import springfox.documentation.annotations.ApiIgnore; - -import javax.validation.Valid; -import java.io.IOException; -import java.util.List; - -import static ru.ulstu.core.controller.Navigation.GRANTS_PAGE; -import static ru.ulstu.core.controller.Navigation.GRANT_PAGE; -import static ru.ulstu.core.controller.Navigation.REDIRECT_TO; - - -@Controller() -@RequestMapping(value = "/grants") -@ApiIgnore -public class GrantController { - private final GrantService grantService; - - public GrantController(GrantService grantService) { - this.grantService = grantService; - } - - @GetMapping("/grants") - public void getGrants(ModelMap modelMap) { - modelMap.put("grants", grantService.findAllDto()); - } - - @GetMapping("/dashboard") - public void getDashboard(ModelMap modelMap) { - modelMap.put("grants", grantService.findAllActiveDto()); - } - - @GetMapping("/grant") - public void getGrant(ModelMap modelMap, @RequestParam(value = "id") Integer id) { - if (id != null && id > 0) { - GrantDto grantDto = grantService.getExistGrantById(id); - attachPaper(grantDto); - modelMap.put("grantDto", grantDto); - } else { - modelMap.put("grantDto", new GrantDto()); - } - } - - @PostMapping(value = "/grant", params = "save") - public String save(@Valid GrantDto grantDto, Errors errors) - throws IOException { - if (!grantService.save(grantDto, errors)) { - return GRANT_PAGE; - } - return String.format(REDIRECT_TO, GRANTS_PAGE); - } - - @PostMapping(value = "/grant", params = "filterUsers") - public String filterUsers() { - return GRANT_PAGE; - } - - @PostMapping(value = "/grant", params = "attachPaper") - public String attachPaper(GrantDto grantDto) { - grantService.attachPaper(grantDto); - return GRANT_PAGE; - } - - @PostMapping(value = "/grant", params = "addDeadline") - public String addDeadline(@Valid GrantDto grantDto, Errors errors) { - grantService.filterEmptyDeadlines(grantDto); - if (errors.hasErrors()) { - return GRANT_PAGE; - } - grantDto.getDeadlines().add(new Deadline()); - return GRANT_PAGE; - } - - @PostMapping(value = "/grant", params = "removeDeadline") - public String removeDeadline(GrantDto grantDto, - @RequestParam(value = "removeDeadline") Integer deadlineId) { - grantService.removeDeadline(grantDto, deadlineId); - return GRANT_PAGE; - } - - @PostMapping(value = "/grant", params = "createProject") - public String createProject(@Valid GrantDto grantDto, Errors errors) throws IOException { - if (errors.hasErrors()) { - return GRANT_PAGE; - } - grantService.createProject(grantDto); - return GRANT_PAGE; - } - - @GetMapping("/delete/{grant-id}") - public String delete(@PathVariable("grant-id") Integer grantId) throws IOException { - grantService.delete(grantId); - return String.format(REDIRECT_TO, GRANTS_PAGE); - } - - @ModelAttribute("allStatuses") - public List getGrantStatuses() { - return grantService.getGrantStatuses(); - } - - @ModelAttribute("allAuthors") - public List getAllAuthors(GrantDto grantDto) { - return grantService.getGrantAuthors(grantDto); - } - - @ModelAttribute("allPapers") - public List getAllPapers() { - return grantService.getAllUncompletedPapers(); - } - - @ResponseBody - @PostMapping(value = "/ping") - public void ping(@RequestParam("grantId") int grantId) throws IOException { - grantService.ping(grantId); - } -} diff --git a/src/main/java/ru/ulstu/name/BaseService.java b/src/main/java/ru/ulstu/name/BaseService.java deleted file mode 100644 index adcdc74..0000000 --- a/src/main/java/ru/ulstu/name/BaseService.java +++ /dev/null @@ -1,23 +0,0 @@ -package ru.ulstu.name; - -import org.springframework.stereotype.Service; -import org.springframework.validation.Errors; - -@Service -public abstract class BaseService { - - public BaseRepository baseRepository; - - protected void checkUniqueName(NameContainer nameContainer, Errors errors, Integer id, String errorMessage) { - if (nameContainer.getName().equals(baseRepository.findByNameAndNotId(nameContainer.getName(), id))) { - errors.rejectValue("title", "errorCode", errorMessage); - } - } - - protected String checkUniqueName(NameContainer nameContainer, Integer id) { - if (nameContainer.getName().equals(baseRepository.findByNameAndNotId(nameContainer.getName(), id))) { - return baseRepository.findByNameAndNotId(nameContainer.getName(), id); - } - return null; - } -} diff --git a/src/main/java/ru/ulstu/name/NameContainer.java b/src/main/java/ru/ulstu/name/NameContainer.java deleted file mode 100644 index 4339fb2..0000000 --- a/src/main/java/ru/ulstu/name/NameContainer.java +++ /dev/null @@ -1,14 +0,0 @@ -package ru.ulstu.name; - -public abstract class NameContainer { - - private String name = ""; - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } -} diff --git a/src/main/java/ru/ulstu/paper/model/PaperListDto.java b/src/main/java/ru/ulstu/paper/model/PaperListDto.java deleted file mode 100644 index 8bbf95b..0000000 --- a/src/main/java/ru/ulstu/paper/model/PaperListDto.java +++ /dev/null @@ -1,55 +0,0 @@ -package ru.ulstu.paper.model; - -import ru.ulstu.boundary.model.ActivityListDto; -import ru.ulstu.boundary.model.ScienceGroupMemberDto; - -import java.util.Set; - -import static ru.ulstu.core.util.StreamApiUtils.convert; - -public class PaperListDto implements ActivityListDto { - - private Integer id; - private String title; - private Paper.PaperStatus status; - private Set authors; - - public PaperListDto(Paper paper) { - this.id = paper.getId(); - this.title = paper.getTitle(); - this.status = paper.getStatus(); - this.authors = convert(paper.getAuthors(), ScienceGroupMemberDto::new); - } - - public Integer getId() { - return id; - } - - public void setId(Integer id) { - this.id = id; - } - - public String getTitle() { - return title; - } - - public void setTitle(String title) { - this.title = title; - } - - public Paper.PaperStatus getStatus() { - return status; - } - - public void setStatus(Paper.PaperStatus status) { - this.status = status; - } - - public Set getAuthors() { - return authors; - } - - public void setAuthors(Set authors) { - this.authors = authors; - } -} diff --git a/src/main/java/ru/ulstu/user/model/UserInfoNow.java b/src/main/java/ru/ulstu/user/model/UserInfoNow.java index 7d69c56..9f55f0f 100644 --- a/src/main/java/ru/ulstu/user/model/UserInfoNow.java +++ b/src/main/java/ru/ulstu/user/model/UserInfoNow.java @@ -1,7 +1,7 @@ package ru.ulstu.user.model; -import ru.ulstu.conference.model.Conference; -import ru.ulstu.utils.timetable.model.Lesson; +import ru.ulstu.activity.boundary.timetable.model.Lesson; +import ru.ulstu.activity.conference.model.Conference; public class UserInfoNow { private Lesson lesson; diff --git a/src/main/java/ru/ulstu/user/service/UserService.java b/src/main/java/ru/ulstu/user/service/UserService.java index 0f69c8e..941c4ea 100644 --- a/src/main/java/ru/ulstu/user/service/UserService.java +++ b/src/main/java/ru/ulstu/user/service/UserService.java @@ -15,15 +15,18 @@ import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.StringUtils; -import ru.ulstu.conference.service.ConferenceService; +import ru.ulstu.activity.boundary.timetable.TimetableService; +import ru.ulstu.activity.boundary.timetable.errors.TimetableClientException; +import ru.ulstu.activity.boundary.timetable.model.Lesson; +import ru.ulstu.activity.common.model.AbstractActivity; +import ru.ulstu.activity.conference.service.ConferenceService; +import ru.ulstu.activity.ping.model.Ping; +import ru.ulstu.activity.ping.service.PingService; import ru.ulstu.configuration.ApplicationProperties; import ru.ulstu.core.error.EntityIdIsNullException; import ru.ulstu.core.jpa.OffsetablePageRequest; import ru.ulstu.core.model.BaseEntity; -import ru.ulstu.core.model.UserActivity; import ru.ulstu.core.model.response.PageableItems; -import ru.ulstu.ping.model.Ping; -import ru.ulstu.ping.service.PingService; import ru.ulstu.user.error.UserActivationError; import ru.ulstu.user.error.UserBlockedException; import ru.ulstu.user.error.UserEmailExistsException; @@ -46,9 +49,6 @@ import ru.ulstu.user.model.UserRoleDto; import ru.ulstu.user.repository.UserRepository; import ru.ulstu.user.repository.UserRoleRepository; import ru.ulstu.user.util.UserUtils; -import ru.ulstu.utils.timetable.TimetableService; -import ru.ulstu.utils.timetable.errors.TimetableClientException; -import ru.ulstu.utils.timetable.model.Lesson; import javax.mail.MessagingException; import java.text.ParseException; @@ -411,9 +411,9 @@ public class UserService implements UserDetailsService { Map activitiesPings = new HashMap<>(); for (Ping ping : pingService.getPings(activityName)) { - UserActivity activity = ping.getActivity(); + AbstractActivity activity = ping.getActivity(); - if (user != null && !activity.getActivityUsers().contains(user)) { + if (user != null && !activity.getActivityMembers().contains(user)) { continue; } diff --git a/src/main/resources/mail_templates/grantAuthorsChangeNotification.html b/src/main/resources/mail_templates/grantAuthorsChangeNotification.html index 2bae4fe..15cdf59 100644 --- a/src/main/resources/mail_templates/grantAuthorsChangeNotification.html +++ b/src/main/resources/mail_templates/grantAuthorsChangeNotification.html @@ -13,7 +13,7 @@ Состав рабочей группы гранта "Title" сменился с " oldAuthors" - на " newAuthors". + на " newAuthors".

Regards, diff --git a/src/main/resources/public/js/core.js b/src/main/resources/public/js/core.js index 7f54023..d575d0a 100644 --- a/src/main/resources/public/js/core.js +++ b/src/main/resources/public/js/core.js @@ -191,7 +191,7 @@ function fillSelect(selectElement, values) { $(selectElement).html(""); $.each(values, function (key, value) { $(selectElement).append( - "" + "" ); }); } diff --git a/src/main/resources/public/js/file-loader.js b/src/main/resources/public/js/file-loader.js index 1ba467b..2e1ed9d 100644 --- a/src/main/resources/public/js/file-loader.js +++ b/src/main/resources/public/js/file-loader.js @@ -41,7 +41,7 @@ function FileLoader(args) { .addClass("form-control"); div.append(fileLabel); var fileInput = $("") - .attr("type", "file") + .attr("type", "ru.ulstu.activity.file") .attr("multiple", '') .hide(); fileInput.change(function () { @@ -49,7 +49,7 @@ function FileLoader(args) { if (isEmpty(files)) { return; } - fileLabel.val(files[0].name); + fileLabel.val(ru.ulstu.activity.name); }); div.append(fileInput); @@ -106,7 +106,7 @@ function FileLoader(args) { progressDiv.append(progressBar); function getFileExt(file) { - return file.name.slice((Math.max(0, file.name.lastIndexOf(".")) || Infinity) + 1); + return ru.ulstu.activity.name.slice((Math.max(0, ru.ulstu.activity.name.lastIndexOf(".")) || Infinity) + 1); } function upload(file) { @@ -128,7 +128,7 @@ function FileLoader(args) { }; xhr.open("POST", url, true); var formData = new FormData(); - formData.append("file", file); + formData.append("ru.ulstu.activity.file", file); xhr.send(formData); } } \ No newline at end of file diff --git a/src/main/resources/public/js/tasks.js b/src/main/resources/public/js/tasks.js index ebff7e2..282f462 100644 --- a/src/main/resources/public/js/tasks.js +++ b/src/main/resources/public/js/tasks.js @@ -24,7 +24,7 @@ $(document).ready(function () { if (tagNumber > 0) { tagNumber = $("#tags .tag").last() .children('input') - .attr("name") + .attr("ru.ulstu.activity.name") .split(']')[0] .split('[')[1]; tagNumber++; @@ -48,7 +48,7 @@ $(document).ready(function () { var idInput = $("") .attr("type", "hidden") .attr("id", "tags" + tagNumber + ".id") - .attr("name", "tags[" + tagNumber + "].id") + .attr("ru.ulstu.activity.name", "tags[" + tagNumber + "].id") .attr("value", ''); // контейнер текста var conDiv = $("

") @@ -57,7 +57,7 @@ $(document).ready(function () { var nameInput = $("") .attr("type", "text") .attr("id", "tags" + tagNumber + ".tagName") - .attr("name", "tags[" + tagNumber + "].tagName") + .attr("ru.ulstu.activity.name", "tags[" + tagNumber + "].tagName") .attr("value", tagName) .attr("readonly", "true") .attr("size", tagName.length); diff --git a/src/test/java/ru/ulstu/conference/service/ConferenceServiceTest.java b/src/test/java/ru/ulstu/activity/conference/service/ConferenceServiceTest.java similarity index 93% rename from src/test/java/ru/ulstu/conference/service/ConferenceServiceTest.java rename to src/test/java/ru/ulstu/activity/conference/service/ConferenceServiceTest.java index 56756a3..9fe5bc3 100644 --- a/src/test/java/ru/ulstu/conference/service/ConferenceServiceTest.java +++ b/src/test/java/ru/ulstu/activity/conference/service/ConferenceServiceTest.java @@ -1,4 +1,4 @@ -package ru.ulstu.conference.service; +package ru.ulstu.activity.conference.service; import org.junit.Before; import org.junit.Test; @@ -7,17 +7,17 @@ import org.mockito.InjectMocks; import org.mockito.Mock; import org.springframework.data.domain.Sort; import org.springframework.test.context.junit4.SpringRunner; -import ru.ulstu.conference.model.Conference; -import ru.ulstu.conference.model.ConferenceDto; -import ru.ulstu.conference.model.ConferenceFilterDto; -import ru.ulstu.conference.model.ConferenceUser; -import ru.ulstu.conference.repository.ConferenceRepository; -import ru.ulstu.deadline.model.Deadline; -import ru.ulstu.deadline.service.DeadlineService; -import ru.ulstu.paper.model.Paper; -import ru.ulstu.paper.service.PaperService; -import ru.ulstu.ping.service.PingService; -import ru.ulstu.timeline.service.EventService; +import ru.ulstu.activity.conference.model.Conference; +import ru.ulstu.activity.conference.model.ConferenceDto; +import ru.ulstu.activity.conference.model.ConferenceFilterDto; +import ru.ulstu.activity.conference.model.ConferenceUser; +import ru.ulstu.activity.conference.repository.ConferenceRepository; +import ru.ulstu.activity.deadline.model.Deadline; +import ru.ulstu.activity.deadline.service.DeadlineService; +import ru.ulstu.activity.paper.model.Paper; +import ru.ulstu.activity.paper.service.PaperService; +import ru.ulstu.activity.ping.service.PingService; +import ru.ulstu.activity.timeline.service.EventService; import ru.ulstu.user.model.User; import ru.ulstu.user.service.UserService; diff --git a/src/test/java/ru/ulstu/grant/service/GrantServiceTest.java b/src/test/java/ru/ulstu/activity/grant/service/GrantServiceTest.java similarity index 92% rename from src/test/java/ru/ulstu/grant/service/GrantServiceTest.java rename to src/test/java/ru/ulstu/activity/grant/service/GrantServiceTest.java index c8df288..dc1a9a0 100644 --- a/src/test/java/ru/ulstu/grant/service/GrantServiceTest.java +++ b/src/test/java/ru/ulstu/activity/grant/service/GrantServiceTest.java @@ -1,4 +1,4 @@ -package ru.ulstu.grant.service; +package ru.ulstu.activity.grant.service; import org.apache.commons.lang3.StringUtils; import org.junit.Before; @@ -8,15 +8,15 @@ import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.Mockito; import org.springframework.test.context.junit4.SpringRunner; -import ru.ulstu.deadline.model.Deadline; -import ru.ulstu.deadline.service.DeadlineService; -import ru.ulstu.grant.model.Grant; -import ru.ulstu.grant.model.GrantDto; -import ru.ulstu.grant.repository.GrantRepository; -import ru.ulstu.paper.model.Paper; -import ru.ulstu.paper.model.PaperDto; -import ru.ulstu.paper.service.PaperService; -import ru.ulstu.timeline.service.EventService; +import ru.ulstu.activity.deadline.model.Deadline; +import ru.ulstu.activity.deadline.service.DeadlineService; +import ru.ulstu.activity.grant.model.Grant; +import ru.ulstu.activity.grant.model.GrantDto; +import ru.ulstu.activity.grant.repository.GrantRepository; +import ru.ulstu.activity.paper.model.Paper; +import ru.ulstu.activity.paper.model.PaperDto; +import ru.ulstu.activity.paper.service.PaperService; +import ru.ulstu.activity.timeline.service.EventService; import ru.ulstu.user.model.User; import ru.ulstu.user.service.UserService; diff --git a/src/test/java/ru/ulstu/project/service/ProjectServiceTest.java b/src/test/java/ru/ulstu/activity/project/service/ProjectServiceTest.java similarity index 87% rename from src/test/java/ru/ulstu/project/service/ProjectServiceTest.java rename to src/test/java/ru/ulstu/activity/project/service/ProjectServiceTest.java index f46971c..04b1282 100644 --- a/src/test/java/ru/ulstu/project/service/ProjectServiceTest.java +++ b/src/test/java/ru/ulstu/activity/project/service/ProjectServiceTest.java @@ -1,4 +1,4 @@ -package ru.ulstu.project.service; +package ru.ulstu.activity.project.service; import org.junit.Before; import org.junit.Test; @@ -6,16 +6,16 @@ import org.junit.runner.RunWith; import org.mockito.InjectMocks; import org.mockito.Mock; import org.springframework.test.context.junit4.SpringRunner; -import ru.ulstu.deadline.model.Deadline; -import ru.ulstu.deadline.service.DeadlineService; -import ru.ulstu.file.model.FileData; -import ru.ulstu.file.service.FileService; -import ru.ulstu.grant.model.GrantDto; -import ru.ulstu.grant.service.GrantService; -import ru.ulstu.project.model.Project; -import ru.ulstu.project.model.ProjectDto; -import ru.ulstu.project.repository.ProjectRepository; -import ru.ulstu.timeline.service.EventService; +import ru.ulstu.activity.deadline.model.Deadline; +import ru.ulstu.activity.deadline.service.DeadlineService; +import ru.ulstu.activity.file.model.FileData; +import ru.ulstu.activity.file.service.FileService; +import ru.ulstu.activity.grant.model.GrantDto; +import ru.ulstu.activity.grant.service.GrantService; +import ru.ulstu.activity.project.model.Project; +import ru.ulstu.activity.project.model.ProjectDto; +import ru.ulstu.activity.project.repository.ProjectRepository; +import ru.ulstu.activity.timeline.service.EventService; import ru.ulstu.user.model.User; import ru.ulstu.user.service.UserService; diff --git a/src/test/java/ru/ulstu/students/service/TaskServiceTest.java b/src/test/java/ru/ulstu/activity/students/service/TaskServiceTest.java similarity index 91% rename from src/test/java/ru/ulstu/students/service/TaskServiceTest.java rename to src/test/java/ru/ulstu/activity/students/service/TaskServiceTest.java index 97b9990..10a2cb5 100644 --- a/src/test/java/ru/ulstu/students/service/TaskServiceTest.java +++ b/src/test/java/ru/ulstu/activity/students/service/TaskServiceTest.java @@ -1,4 +1,4 @@ -package ru.ulstu.students.service; +package ru.ulstu.activity.students.service; import org.junit.Before; import org.junit.Test; @@ -7,18 +7,18 @@ import org.mockito.InjectMocks; import org.mockito.Mock; import org.springframework.data.domain.Sort; import org.springframework.test.context.junit4.SpringRunner; +import ru.ulstu.activity.deadline.model.Deadline; +import ru.ulstu.activity.deadline.service.DeadlineService; +import ru.ulstu.activity.students.model.Scheduler; +import ru.ulstu.activity.students.model.Task; +import ru.ulstu.activity.students.model.TaskDto; +import ru.ulstu.activity.students.model.TaskFilterDto; +import ru.ulstu.activity.students.repository.SchedulerRepository; +import ru.ulstu.activity.students.repository.TaskRepository; +import ru.ulstu.activity.tags.model.Tag; +import ru.ulstu.activity.tags.service.TagService; +import ru.ulstu.activity.timeline.service.EventService; import ru.ulstu.core.util.DateUtils; -import ru.ulstu.deadline.model.Deadline; -import ru.ulstu.deadline.service.DeadlineService; -import ru.ulstu.students.model.Scheduler; -import ru.ulstu.students.model.Task; -import ru.ulstu.students.model.TaskDto; -import ru.ulstu.students.model.TaskFilterDto; -import ru.ulstu.students.repository.SchedulerRepository; -import ru.ulstu.students.repository.TaskRepository; -import ru.ulstu.tags.model.Tag; -import ru.ulstu.tags.service.TagService; -import ru.ulstu.timeline.service.EventService; import java.io.IOException; import java.util.ArrayList; -- 2.25.1 From 6cf627bf02d9ed2999cbd55cb00812ccb1ca529d Mon Sep 17 00:00:00 2001 From: Anton Romanov Date: Sun, 7 Jul 2019 22:47:43 +0400 Subject: [PATCH 30/45] partially implements api --- .../api/model/ActivityDashboardDto.java | 17 ++- .../ulstu/activity/api/model/ActivityDto.java | 11 +- .../conference/model/ConferenceDto.java | 14 +-- .../conference/service/ConferenceService.java | 7 -- .../grant/controller/GrantController.java | 82 +++++++++++++ .../grant/controller/GrantRestController.java | 25 ---- .../grant/model/GrantDashboardDto.java | 27 ++++ .../ulstu/activity/grant/model/GrantDto.java | 35 ++---- .../grant/repository/GrantRepository.java | 4 +- .../grant/service/GrantScheduler.java | 4 +- .../activity/grant/service/GrantService.java | 29 +++-- .../paper/model/PaperDashboardDto.java | 24 +--- .../ulstu/activity/paper/model/PaperDto.java | 15 +-- .../students/controller/Navigation.java | 16 --- .../students/controller/TaskController.java | 116 ++++++------------ .../ulstu/activity/students/model/Task.java | 10 +- .../students/model/TaskDashboardDto.java | 16 +++ .../activity/students/model/TaskDto.java | 44 +------ .../activity/students/model/TaskListDto.java | 16 +++ .../students/service/TaskService.java | 98 ++++++++++----- .../service/ConferenceServiceTest.java | 4 +- .../grant/service/GrantServiceTest.java | 6 +- 22 files changed, 334 insertions(+), 286 deletions(-) create mode 100644 src/main/java/ru/ulstu/activity/grant/controller/GrantController.java delete mode 100644 src/main/java/ru/ulstu/activity/grant/controller/GrantRestController.java create mode 100644 src/main/java/ru/ulstu/activity/grant/model/GrantDashboardDto.java delete mode 100644 src/main/java/ru/ulstu/activity/students/controller/Navigation.java create mode 100644 src/main/java/ru/ulstu/activity/students/model/TaskDashboardDto.java create mode 100644 src/main/java/ru/ulstu/activity/students/model/TaskListDto.java diff --git a/src/main/java/ru/ulstu/activity/api/model/ActivityDashboardDto.java b/src/main/java/ru/ulstu/activity/api/model/ActivityDashboardDto.java index 71695e6..0f6446d 100644 --- a/src/main/java/ru/ulstu/activity/api/model/ActivityDashboardDto.java +++ b/src/main/java/ru/ulstu/activity/api/model/ActivityDashboardDto.java @@ -1,4 +1,19 @@ package ru.ulstu.activity.api.model; -public interface ActivityDashboardDto { +public abstract class ActivityDashboardDto { + private final Integer id; + private final String title; + + protected ActivityDashboardDto(Integer id, String title) { + this.id = id; + this.title = title; + } + + public Integer getId() { + return id; + } + + public String getTitle() { + return title; + } } \ No newline at end of file diff --git a/src/main/java/ru/ulstu/activity/api/model/ActivityDto.java b/src/main/java/ru/ulstu/activity/api/model/ActivityDto.java index 5675e18..8f88493 100644 --- a/src/main/java/ru/ulstu/activity/api/model/ActivityDto.java +++ b/src/main/java/ru/ulstu/activity/api/model/ActivityDto.java @@ -1,4 +1,13 @@ package ru.ulstu.activity.api.model; -public interface ActivityDto { +public abstract class ActivityDto { + private final Integer id; + + public ActivityDto(Integer id) { + this.id = id; + } + + public Integer getId() { + return id; + } } diff --git a/src/main/java/ru/ulstu/activity/conference/model/ConferenceDto.java b/src/main/java/ru/ulstu/activity/conference/model/ConferenceDto.java index f4952e7..97da7b5 100644 --- a/src/main/java/ru/ulstu/activity/conference/model/ConferenceDto.java +++ b/src/main/java/ru/ulstu/activity/conference/model/ConferenceDto.java @@ -19,7 +19,7 @@ import java.util.Objects; import static ru.ulstu.core.util.StreamApiUtils.convert; -public class ConferenceDto implements ActivityDto { +public class ConferenceDto extends ActivityDto { private final static String BEGIN_DATE = "Начало: "; private final static String END_DATE = "Конец: "; @@ -48,9 +48,6 @@ public class ConferenceDto implements ActivityDto { private List users = new ArrayList<>(); private boolean disabledTakePart = false; - public ConferenceDto() { - } - @JsonCreator public ConferenceDto(@JsonProperty("id") Integer id, @JsonProperty("title") String title, @@ -66,8 +63,7 @@ public class ConferenceDto implements ActivityDto { @JsonProperty("papers") List papers, @JsonProperty("notSelectedPapers") List notSelectedPapers, @JsonProperty("notSelectedPapers") Boolean disabledTakePart) { - this.id = id; - this.title = title; + super(id); this.description = description; this.url = url; this.ping = ping; @@ -83,7 +79,7 @@ public class ConferenceDto implements ActivityDto { } public ConferenceDto(Conference conference) { - this.id = conference.getId(); + super(conference.getId()); this.title = conference.getTitle(); this.description = conference.getDescription(); this.url = conference.getUrl(); @@ -97,6 +93,10 @@ public class ConferenceDto implements ActivityDto { this.papers = conference.getPapers(); } + public ConferenceDto() { + super(null); + } + public Integer getId() { return id; } diff --git a/src/main/java/ru/ulstu/activity/conference/service/ConferenceService.java b/src/main/java/ru/ulstu/activity/conference/service/ConferenceService.java index 11c98f5..ef19f3b 100644 --- a/src/main/java/ru/ulstu/activity/conference/service/ConferenceService.java +++ b/src/main/java/ru/ulstu/activity/conference/service/ConferenceService.java @@ -24,7 +24,6 @@ import ru.ulstu.user.model.User; import ru.ulstu.user.service.UserService; import java.io.IOException; -import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.Date; @@ -72,12 +71,6 @@ public class ConferenceService extends AbstractActivityService())); - return conferenceDto; - } - public PageableItems findAll(int offset, int count) { final Page page = conferenceRepository.findAll(new OffsetablePageRequest(offset, count)); return new PageableItems<>(page.getTotalElements(), page.getContent()); diff --git a/src/main/java/ru/ulstu/activity/grant/controller/GrantController.java b/src/main/java/ru/ulstu/activity/grant/controller/GrantController.java new file mode 100644 index 0000000..a2181f2 --- /dev/null +++ b/src/main/java/ru/ulstu/activity/grant/controller/GrantController.java @@ -0,0 +1,82 @@ +package ru.ulstu.activity.grant.controller; + +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; +import ru.ulstu.activity.api.ActivityController; +import ru.ulstu.activity.grant.model.GrantDashboardDto; +import ru.ulstu.activity.grant.model.GrantDto; +import ru.ulstu.activity.grant.model.GrantListDto; +import ru.ulstu.activity.grant.service.GrantService; +import ru.ulstu.configuration.Constants; +import ru.ulstu.core.model.response.PageableItems; +import ru.ulstu.core.model.response.Response; + +import javax.validation.Valid; +import java.io.IOException; +import java.text.ParseException; + +@RestController +@RequestMapping(Constants.API_1_0 + "grants") +public class GrantController implements ActivityController { + private final GrantService grantService; + + public GrantController(GrantService grantService) { + this.grantService = grantService; + } + + @GetMapping("/grab") + public void grab() throws IOException, ParseException { + grantService.createFromKias(); + } + + @Override + @GetMapping("list") + public Response> getList(@RequestParam(value = "offset", defaultValue = "0") int offset, + @RequestParam(value = "count", defaultValue = "0") int count) { + return new Response<>(grantService.findAllDto(offset, count)); + } + + @Override + @GetMapping("dashboard") + public Response> getDashboard(@RequestParam(value = "offset", defaultValue = "0") int offset, + @RequestParam(value = "count", defaultValue = "0") int count) { + return new Response<>(grantService.findAllActiveDto(offset, count)); + } + + @Override + @GetMapping + public Response get(@PathVariable("grant-id") Integer entityId) { + return new Response<>(grantService.findById(entityId)); + } + + @Override + @PostMapping + public Response create(@RequestBody @Valid GrantDto entity) { + return new Response<>(grantService.create(entity)); + } + + @Override + @PutMapping + public Response update(@RequestBody @Valid GrantDto entity) { + return new Response<>(grantService.update(entity)); + } + + @Override + @DeleteMapping + public Response delete(@PathVariable("grant-id") Integer entityId) { + return new Response<>(grantService.delete(entityId)); + } + + @Override + @PostMapping("ping/{paper-id}") + public void ping(@PathVariable("paper-id") int entityId) { + grantService.ping(entityId); + } +} diff --git a/src/main/java/ru/ulstu/activity/grant/controller/GrantRestController.java b/src/main/java/ru/ulstu/activity/grant/controller/GrantRestController.java deleted file mode 100644 index b5faf66..0000000 --- a/src/main/java/ru/ulstu/activity/grant/controller/GrantRestController.java +++ /dev/null @@ -1,25 +0,0 @@ -package ru.ulstu.activity.grant.controller; - -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; -import ru.ulstu.activity.grant.service.GrantService; -import ru.ulstu.configuration.Constants; - -import java.io.IOException; -import java.text.ParseException; - -@RestController -@RequestMapping(Constants.API_1_0 + "grants") -public class GrantRestController { - private final GrantService grantService; - - public GrantRestController(GrantService grantService) { - this.grantService = grantService; - } - - @GetMapping("/grab") - public void grab() throws IOException, ParseException { - grantService.createFromKias(); - } -} diff --git a/src/main/java/ru/ulstu/activity/grant/model/GrantDashboardDto.java b/src/main/java/ru/ulstu/activity/grant/model/GrantDashboardDto.java new file mode 100644 index 0000000..eff0cc1 --- /dev/null +++ b/src/main/java/ru/ulstu/activity/grant/model/GrantDashboardDto.java @@ -0,0 +1,27 @@ +package ru.ulstu.activity.grant.model; + +import ru.ulstu.activity.api.model.ActivityDashboardDto; +import ru.ulstu.activity.common.model.ScienceGroupMemberDto; + +import java.util.Set; + +import static ru.ulstu.core.util.StreamApiUtils.convert; + +public class GrantDashboardDto extends ActivityDashboardDto { + private final Grant.GrantStatus status; + private final Set members; + + public GrantDashboardDto(Grant grant) { + super(grant.getId(), grant.getTitle()); + this.status = grant.getStatus(); + this.members = convert(grant.getActivityMembers(), ScienceGroupMemberDto::new); + } + + public Grant.GrantStatus getStatus() { + return status; + } + + public Set getAuthors() { + return members; + } +} \ No newline at end of file diff --git a/src/main/java/ru/ulstu/activity/grant/model/GrantDto.java b/src/main/java/ru/ulstu/activity/grant/model/GrantDto.java index a541a3f..fc48a2e 100644 --- a/src/main/java/ru/ulstu/activity/grant/model/GrantDto.java +++ b/src/main/java/ru/ulstu/activity/grant/model/GrantDto.java @@ -2,7 +2,6 @@ package ru.ulstu.activity.grant.model; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; -import org.apache.commons.lang3.StringUtils; import ru.ulstu.activity.api.model.ActivityDto; import ru.ulstu.activity.common.model.ScienceGroupMemberDto; import ru.ulstu.activity.deadline.model.Deadline; @@ -15,14 +14,10 @@ import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Set; -import java.util.stream.Collectors; import static ru.ulstu.core.util.StreamApiUtils.convert; -public class GrantDto implements ActivityDto { - private final static int MAX_AUTHORS_LENGTH = 60; - - private Integer id; +public class GrantDto extends ActivityDto { @NotEmpty private String title; private Grant.GrantStatus status; @@ -42,10 +37,6 @@ public class GrantDto implements ActivityDto { private List papers = new ArrayList<>(); private List removedDeadlineIds = new ArrayList<>(); - public GrantDto() { - deadlines.add(new Deadline()); - } - @JsonCreator public GrantDto(@JsonProperty("id") Integer id, @JsonProperty("title") String title, @@ -62,7 +53,7 @@ public class GrantDto implements ActivityDto { @JsonProperty("hasDegree") boolean hasDegree, @JsonProperty("paperIds") List paperIds, @JsonProperty("papers") List papers) { - this.id = id; + super(id); this.title = title; this.status = status; this.deadlines = deadlines; @@ -80,7 +71,7 @@ public class GrantDto implements ActivityDto { } public GrantDto(Grant grant) { - this.id = grant.getId(); + super(grant.getId()); this.title = grant.getTitle(); this.status = grant.getStatus(); this.deadlines = grant.getDeadlines(); @@ -98,17 +89,14 @@ public class GrantDto implements ActivityDto { } public GrantDto(String grantTitle, Date deadLineDate) { + super(null); this.title = grantTitle; - deadlines.add(new Deadline(deadLineDate, "Окончание приёма заявок")); - status = Grant.GrantStatus.LOADED_FROM_KIAS; + this.deadlines.add(new Deadline(deadLineDate, "Окончание приёма заявок")); + this.status = Grant.GrantStatus.LOADED_FROM_KIAS; } - public Integer getId() { - return id; - } - - public void setId(Integer id) { - this.id = id; + public GrantDto() { + super(null); } public String getTitle() { @@ -175,13 +163,6 @@ public class GrantDto implements ActivityDto { this.members = members; } - public String getAuthorsString() { - return StringUtils.abbreviate(members - .stream() - .map(author -> author.getLastName()) - .collect(Collectors.joining(", ")), MAX_AUTHORS_LENGTH); - } - public Integer getLeaderId() { return leaderId; } diff --git a/src/main/java/ru/ulstu/activity/grant/repository/GrantRepository.java b/src/main/java/ru/ulstu/activity/grant/repository/GrantRepository.java index b7add49..a9d71f4 100644 --- a/src/main/java/ru/ulstu/activity/grant/repository/GrantRepository.java +++ b/src/main/java/ru/ulstu/activity/grant/repository/GrantRepository.java @@ -1,5 +1,7 @@ package ru.ulstu.activity.grant.repository; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; @@ -21,5 +23,5 @@ public interface GrantRepository extends JpaRepository, Activity String findByNameAndNotId(@Param("name") String name, @Param("id") Integer id); @Query("SELECT g FROM Grant g WHERE (g.status <> 'SKIPPED') AND (g.status <> 'COMPLETED')") - List findAllActive(); + Page findAllActive(Pageable pageable); } diff --git a/src/main/java/ru/ulstu/activity/grant/service/GrantScheduler.java b/src/main/java/ru/ulstu/activity/grant/service/GrantScheduler.java index 9c93706..036b190 100644 --- a/src/main/java/ru/ulstu/activity/grant/service/GrantScheduler.java +++ b/src/main/java/ru/ulstu/activity/grant/service/GrantScheduler.java @@ -7,6 +7,7 @@ import org.springframework.stereotype.Service; import java.io.IOException; import java.text.ParseException; +import java.util.stream.Collectors; @Service public class GrantScheduler { @@ -27,7 +28,8 @@ public class GrantScheduler { @Scheduled(cron = "0 0 8 * * MON", zone = "Europe/Samara") public void checkDeadlineBeforeWeek() { log.debug("GrantScheduler.checkDeadlineBeforeWeek started"); - grantNotificationService.sendDeadlineNotifications(grantService.findAllActive(), IS_DEADLINE_NOTIFICATION_BEFORE_WEEK); + grantNotificationService.sendDeadlineNotifications(grantService.findAllActive(0, 100) + .getItems().stream().collect(Collectors.toList()), IS_DEADLINE_NOTIFICATION_BEFORE_WEEK); log.debug("GrantScheduler.checkDeadlineBeforeWeek finished"); } diff --git a/src/main/java/ru/ulstu/activity/grant/service/GrantService.java b/src/main/java/ru/ulstu/activity/grant/service/GrantService.java index 19ca532..45891f1 100644 --- a/src/main/java/ru/ulstu/activity/grant/service/GrantService.java +++ b/src/main/java/ru/ulstu/activity/grant/service/GrantService.java @@ -12,6 +12,7 @@ import ru.ulstu.activity.deadline.model.Deadline; import ru.ulstu.activity.deadline.service.DeadlineService; import ru.ulstu.activity.file.service.FileService; import ru.ulstu.activity.grant.model.Grant; +import ru.ulstu.activity.grant.model.GrantDashboardDto; import ru.ulstu.activity.grant.model.GrantDto; import ru.ulstu.activity.grant.model.GrantListDto; import ru.ulstu.activity.grant.repository.GrantRepository; @@ -41,7 +42,7 @@ import java.util.stream.Collectors; import static java.util.stream.Collectors.toList; import static org.springframework.util.ObjectUtils.isEmpty; import static ru.ulstu.activity.grant.model.Grant.GrantStatus.APPLICATION; -import static ru.ulstu.core.util.StreamApiUtils.convert; +import static ru.ulstu.core.util.StreamApiUtils.convertPageable; @Service public class GrantService extends AbstractActivityService { @@ -82,7 +83,7 @@ public class GrantService extends AbstractActivityService findAllActiveDto() { - return convert(findAllActive(), GrantDto::new); + public PageableItems findAllActiveDto(int offset, int count) { + return convertPageable(findAllActive(offset, count), GrantDashboardDto::new); } - public List findAllActive() { - return grantRepository.findAllActive(); + public PageableItems findAllActive(int offset, int count) { + Page activeGrantsPage = grantRepository.findAllActive(new OffsetablePageRequest(offset, count)); + return new PageableItems<>(activeGrantsPage.getTotalElements(), activeGrantsPage.getContent()); + + } + + public GrantDto findById(Integer id) { + return new GrantDto(grantRepository.getOne(id)); } - public Grant findById(Integer id) { + public Grant findGrantById(Integer id) { return grantRepository.getOne(id); } @Transactional - public void ping(int grantId) throws IOException { - pingService.addPing(findById(grantId)); + public void ping(int grantId) { + pingService.addPing(findGrantById(grantId)); } } diff --git a/src/main/java/ru/ulstu/activity/paper/model/PaperDashboardDto.java b/src/main/java/ru/ulstu/activity/paper/model/PaperDashboardDto.java index 37f26fe..ef9d0e2 100644 --- a/src/main/java/ru/ulstu/activity/paper/model/PaperDashboardDto.java +++ b/src/main/java/ru/ulstu/activity/paper/model/PaperDashboardDto.java @@ -7,38 +7,18 @@ import java.util.Set; import static ru.ulstu.core.util.StreamApiUtils.convert; -public class PaperDashboardDto implements ActivityDashboardDto { - - private Integer id; - private String title; +public class PaperDashboardDto extends ActivityDashboardDto { private Paper.PaperStatus status; private Set authors; private String url; public PaperDashboardDto(Paper paper) { - this.id = paper.getId(); - this.title = paper.getTitle(); + super(paper.getId(), paper.getTitle()); this.status = paper.getStatus(); this.authors = convert(paper.getAuthors(), ScienceGroupMemberDto::new); this.url = paper.getUrl(); } - public Integer getId() { - return id; - } - - public void setId(Integer id) { - this.id = id; - } - - public String getTitle() { - return title; - } - - public void setTitle(String title) { - this.title = title; - } - public Paper.PaperStatus getStatus() { return status; } diff --git a/src/main/java/ru/ulstu/activity/paper/model/PaperDto.java b/src/main/java/ru/ulstu/activity/paper/model/PaperDto.java index 71e46cf..1917193 100644 --- a/src/main/java/ru/ulstu/activity/paper/model/PaperDto.java +++ b/src/main/java/ru/ulstu/activity/paper/model/PaperDto.java @@ -16,8 +16,7 @@ import java.util.Set; import static ru.ulstu.core.util.StreamApiUtils.convert; -public class PaperDto implements ActivityDto { - private Integer id; +public class PaperDto extends ActivityDto { @NotEmpty @Size(min = 3, max = 254) private String title; @@ -52,7 +51,7 @@ public class PaperDto implements ActivityDto { @JsonProperty("locked") Boolean locked, @JsonProperty("files") List files, @JsonProperty("authors") Set authors) { - this.id = id; + super(id); this.title = title; this.status = status; this.type = type; @@ -67,7 +66,7 @@ public class PaperDto implements ActivityDto { } public PaperDto(Paper paper) { - this.id = paper.getId(); + super(paper.getId()); this.title = paper.getTitle(); this.status = paper.getStatus(); this.type = paper.getType(); @@ -81,14 +80,6 @@ public class PaperDto implements ActivityDto { this.authors = convert(paper.getAuthors(), ScienceGroupMemberDto::new); } - public Integer getId() { - return id; - } - - public void setId(Integer id) { - this.id = id; - } - public String getTitle() { return title; } diff --git a/src/main/java/ru/ulstu/activity/students/controller/Navigation.java b/src/main/java/ru/ulstu/activity/students/controller/Navigation.java deleted file mode 100644 index 16b845b..0000000 --- a/src/main/java/ru/ulstu/activity/students/controller/Navigation.java +++ /dev/null @@ -1,16 +0,0 @@ -package ru.ulstu.activity.students.controller; - -import org.springframework.validation.Errors; - -class Navigation { - public static final String REDIRECT_TO = "redirect:%s"; - public static final String TASKS_PAGE = "/students/tasks"; - public static final String TASK_PAGE = "/students/task"; - - public static String hasErrors(Errors errors, String page) { - if (errors.hasErrors()) { - return page; - } - return null; - } -} diff --git a/src/main/java/ru/ulstu/activity/students/controller/TaskController.java b/src/main/java/ru/ulstu/activity/students/controller/TaskController.java index 2839371..1e3041b 100644 --- a/src/main/java/ru/ulstu/activity/students/controller/TaskController.java +++ b/src/main/java/ru/ulstu/activity/students/controller/TaskController.java @@ -1,36 +1,28 @@ package ru.ulstu.activity.students.controller; -import org.springframework.stereotype.Controller; -import org.springframework.ui.ModelMap; -import org.springframework.validation.Errors; +import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; -import ru.ulstu.activity.deadline.model.Deadline; -import ru.ulstu.activity.students.model.Task; +import org.springframework.web.bind.annotation.RestController; +import ru.ulstu.activity.api.ActivityController; +import ru.ulstu.activity.students.model.TaskDashboardDto; import ru.ulstu.activity.students.model.TaskDto; -import ru.ulstu.activity.students.model.TaskFilterDto; +import ru.ulstu.activity.students.model.TaskListDto; import ru.ulstu.activity.students.service.TaskService; -import ru.ulstu.activity.tags.model.Tag; -import springfox.documentation.annotations.ApiIgnore; +import ru.ulstu.configuration.Constants; +import ru.ulstu.core.model.response.PageableItems; +import ru.ulstu.core.model.response.Response; import javax.validation.Valid; -import java.io.IOException; -import java.util.List; -import java.util.stream.Collectors; -import static org.springframework.util.StringUtils.isEmpty; -import static ru.ulstu.activity.students.controller.Navigation.REDIRECT_TO; -import static ru.ulstu.activity.students.controller.Navigation.TASKS_PAGE; -import static ru.ulstu.activity.students.controller.Navigation.TASK_PAGE; - -@Controller() -@RequestMapping(value = "/students") -@ApiIgnore -public class TaskController { +@RestController +@RequestMapping(Constants.API_1_0 + "students") +public class TaskController implements ActivityController { private final TaskService taskService; @@ -38,76 +30,40 @@ public class TaskController { this.taskService = taskService; } - @GetMapping("/dashboard") - public void getDashboard(ModelMap modelMap) { - modelMap.put("tasks", taskService.findAllDto()); - } - - @GetMapping("/tasks") - public void getTask(ModelMap modelMap) { - modelMap.put("filteredTasks", new TaskFilterDto(taskService.findAllDto(), null, null, null)); - } - - @GetMapping("/task") - public void getTask(ModelMap modelMap, @RequestParam(value = "id") Integer id) { - if (id != null && id > 0) { - modelMap.put("taskDto", taskService.findOneDto(id)); - } else { - modelMap.put("taskDto", new TaskDto()); - } - } - - @PostMapping("/tasks") - public void filterTasks(@Valid TaskFilterDto taskFilterDto, ModelMap modelMap) { - modelMap.put("filteredTasks", new TaskFilterDto(taskService.filter(taskFilterDto), - taskFilterDto.getStatus(), - taskFilterDto.getTag(), - taskFilterDto.getOrder())); + @GetMapping("list") + public Response> getList(@RequestParam(value = "offset", defaultValue = "0") int offset, + @RequestParam(value = "count", defaultValue = "10") int count) { + return new Response<>(taskService.findAllDto(offset, count)); } - @PostMapping(value = "/task", params = "save") - public String save(@Valid TaskDto taskDto, Errors errors) throws IOException { - filterEmptyDeadlines(taskDto); - if (taskDto.getDeadlines().isEmpty()) { - errors.rejectValue("deadlines", "errorCode", "Не может быть пустым"); - } - if (errors.hasErrors()) { - return TASK_PAGE; - } - taskService.save(taskDto); - return String.format(REDIRECT_TO, TASKS_PAGE); + @GetMapping("dashboard") + public Response> getDashboard(@RequestParam(value = "offset", defaultValue = "0") int offset, + @RequestParam(value = "count", defaultValue = "10") int count) { + return new Response<>(taskService.findAllActiveDto(offset, count)); } - @PostMapping(value = "/task", params = "addDeadline") - public String addDeadline(@Valid TaskDto taskDto, Errors errors) { - filterEmptyDeadlines(taskDto); - if (errors.hasErrors()) { - return TASK_PAGE; - } - taskDto.getDeadlines().add(new Deadline()); - return TASK_PAGE; + @GetMapping("{task-id}") + public Response get(@PathVariable("task-id") Integer taskId) { + return new Response<>(taskService.findById(taskId)); } - @GetMapping("/delete/{task-id}") - public String delete(@PathVariable("task-id") Integer taskId) throws IOException { - taskService.delete(taskId); - return String.format(REDIRECT_TO, TASKS_PAGE); + @PostMapping + public Response create(@RequestBody @Valid TaskDto taskDto) { + return new Response<>(taskService.create(taskDto)); } - - @ModelAttribute("allStatuses") - public List getTaskStatuses() { - return taskService.getTaskStatuses(); + @PutMapping + public Response update(@RequestBody @Valid TaskDto paperDto) { + return new Response<>(taskService.update(paperDto)); } - @ModelAttribute("allTags") - public List getTags() { - return taskService.getTags(); + @DeleteMapping("/{task-id}") + public Response delete(@PathVariable("task-id") Integer taskId) { + return new Response<>(taskService.delete(taskId)); } - private void filterEmptyDeadlines(TaskDto taskDto) { - taskDto.setDeadlines(taskDto.getDeadlines().stream() - .filter(dto -> dto.getDate() != null || !isEmpty(dto.getDescription())) - .collect(Collectors.toList())); + @PostMapping("ping/{task-id}") + public void ping(@PathVariable("task-id") int taskId) { + taskService.ping(taskId); } } diff --git a/src/main/java/ru/ulstu/activity/students/model/Task.java b/src/main/java/ru/ulstu/activity/students/model/Task.java index 9ad5762..c879c25 100644 --- a/src/main/java/ru/ulstu/activity/students/model/Task.java +++ b/src/main/java/ru/ulstu/activity/students/model/Task.java @@ -2,11 +2,11 @@ package ru.ulstu.activity.students.model; import org.hibernate.annotations.Fetch; import org.hibernate.annotations.FetchMode; +import ru.ulstu.activity.common.model.AbstractActivity; import ru.ulstu.activity.common.model.EventSource; import ru.ulstu.activity.deadline.model.Deadline; import ru.ulstu.activity.tags.model.Tag; import ru.ulstu.activity.timeline.model.Event; -import ru.ulstu.core.model.BaseEntity; import ru.ulstu.user.model.User; import javax.persistence.CascadeType; @@ -27,9 +27,10 @@ import java.util.ArrayList; import java.util.Collections; import java.util.Date; import java.util.List; +import java.util.Set; @Entity -public class Task extends BaseEntity implements EventSource { +public class Task extends AbstractActivity implements EventSource { public enum TaskStatus { IN_WORK("В работе"), @@ -99,6 +100,11 @@ public class Task extends BaseEntity implements EventSource { this.title = title; } + @Override + public Set getActivityMembers() { + return Collections.emptySet(); + } + public TaskStatus getStatus() { return status; } diff --git a/src/main/java/ru/ulstu/activity/students/model/TaskDashboardDto.java b/src/main/java/ru/ulstu/activity/students/model/TaskDashboardDto.java new file mode 100644 index 0000000..014753e --- /dev/null +++ b/src/main/java/ru/ulstu/activity/students/model/TaskDashboardDto.java @@ -0,0 +1,16 @@ +package ru.ulstu.activity.students.model; + +import ru.ulstu.activity.api.model.ActivityDashboardDto; + +public class TaskDashboardDto extends ActivityDashboardDto { + private final Task.TaskStatus status; + + public TaskDashboardDto(Task task) { + super(task.getId(), task.getTitle()); + this.status = task.getStatus(); + } + + public Task.TaskStatus getStatus() { + return status; + } +} diff --git a/src/main/java/ru/ulstu/activity/students/model/TaskDto.java b/src/main/java/ru/ulstu/activity/students/model/TaskDto.java index f63e494..121c535 100644 --- a/src/main/java/ru/ulstu/activity/students/model/TaskDto.java +++ b/src/main/java/ru/ulstu/activity/students/model/TaskDto.java @@ -3,6 +3,7 @@ package ru.ulstu.activity.students.model; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; import org.apache.commons.lang3.StringUtils; +import ru.ulstu.activity.api.model.ActivityDto; import ru.ulstu.activity.deadline.model.Deadline; import ru.ulstu.activity.tags.model.Tag; @@ -10,15 +11,13 @@ import javax.validation.constraints.NotEmpty; import java.util.ArrayList; import java.util.Date; import java.util.List; -import java.util.Objects; import java.util.Set; import java.util.stream.Collectors; -public class TaskDto { +public class TaskDto extends ActivityDto { private final static int MAX_TAGS_LENGTH = 50; - private Integer id; @NotEmpty private String title; private String description; @@ -29,10 +28,6 @@ public class TaskDto { private Set tagIds; private List tags = new ArrayList<>(); - public TaskDto() { - deadlines.add(new Deadline()); - } - @JsonCreator public TaskDto(@JsonProperty("id") Integer id, @JsonProperty("title") String title, @@ -43,7 +38,7 @@ public class TaskDto { @JsonProperty("deadlines") List deadlines, @JsonProperty("tagIds") Set tagIds, @JsonProperty("tags") List tags) { - this.id = id; + super(id); this.title = title; this.status = status; this.deadlines = deadlines; @@ -54,7 +49,7 @@ public class TaskDto { } public TaskDto(Task task) { - this.id = task.getId(); + super(task.getId()); this.title = task.getTitle(); this.status = task.getStatus(); this.deadlines = task.getDeadlines(); @@ -64,14 +59,6 @@ public class TaskDto { this.tags = task.getTags(); } - public Integer getId() { - return id; - } - - public void setId(Integer id) { - this.id = id; - } - public String getTitle() { return title; } @@ -136,29 +123,6 @@ public class TaskDto { this.tags = tags; } - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - TaskDto taskDto = (TaskDto) o; - return Objects.equals(id, taskDto.id) && - Objects.equals(title, taskDto.title) && - Objects.equals(description, taskDto.description) && - status == taskDto.status && - Objects.equals(deadlines, taskDto.deadlines) && - Objects.equals(tagIds, taskDto.tagIds) && - Objects.equals(tags, taskDto.tags); - } - - @Override - public int hashCode() { - return Objects.hash(id, title, description, status, deadlines, createDate, updateDate, tagIds, tags); - } - public String getTagsString() { return StringUtils.abbreviate(tags .stream() diff --git a/src/main/java/ru/ulstu/activity/students/model/TaskListDto.java b/src/main/java/ru/ulstu/activity/students/model/TaskListDto.java new file mode 100644 index 0000000..0a0e954 --- /dev/null +++ b/src/main/java/ru/ulstu/activity/students/model/TaskListDto.java @@ -0,0 +1,16 @@ +package ru.ulstu.activity.students.model; + +import ru.ulstu.activity.api.model.ActivityListDto; + +public class TaskListDto extends ActivityListDto { + private final Task.TaskStatus status; + + public TaskListDto(Task task) { + super(task.getId(), task.getTitle()); + this.status = task.getStatus(); + } + + public Task.TaskStatus getStatus() { + return status; + } +} diff --git a/src/main/java/ru/ulstu/activity/students/service/TaskService.java b/src/main/java/ru/ulstu/activity/students/service/TaskService.java index 9680f19..0492e0b 100644 --- a/src/main/java/ru/ulstu/activity/students/service/TaskService.java +++ b/src/main/java/ru/ulstu/activity/students/service/TaskService.java @@ -1,22 +1,29 @@ package ru.ulstu.activity.students.service; -import org.apache.commons.lang3.StringUtils; +import org.springframework.data.domain.Page; import org.springframework.data.domain.Sort; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import ru.ulstu.activity.common.service.AbstractActivityService; import ru.ulstu.activity.deadline.model.Deadline; import ru.ulstu.activity.deadline.service.DeadlineService; +import ru.ulstu.activity.ping.service.PingService; import ru.ulstu.activity.students.model.Scheduler; import ru.ulstu.activity.students.model.Task; +import ru.ulstu.activity.students.model.TaskDashboardDto; import ru.ulstu.activity.students.model.TaskDto; import ru.ulstu.activity.students.model.TaskFilterDto; +import ru.ulstu.activity.students.model.TaskListDto; import ru.ulstu.activity.students.repository.SchedulerRepository; import ru.ulstu.activity.students.repository.TaskRepository; import ru.ulstu.activity.tags.model.Tag; import ru.ulstu.activity.tags.service.TagService; import ru.ulstu.activity.timeline.service.EventService; +import ru.ulstu.core.jpa.OffsetablePageRequest; +import ru.ulstu.core.model.response.PageableItems; import ru.ulstu.core.util.DateUtils; +import javax.persistence.EntityNotFoundException; import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; @@ -29,12 +36,12 @@ import java.util.Set; import java.util.TreeMap; import java.util.stream.Collectors; -import static org.springframework.util.ObjectUtils.isEmpty; import static ru.ulstu.activity.students.model.Task.TaskStatus.IN_WORK; import static ru.ulstu.core.util.StreamApiUtils.convert; +import static ru.ulstu.core.util.StreamApiUtils.convertPageable; @Service -public class TaskService { +public class TaskService extends AbstractActivityService { private final static int MAX_DISPLAY_SIZE = 40; @@ -43,29 +50,35 @@ public class TaskService { private final DeadlineService deadlineService; private final TagService tagService; private final EventService eventService; + private final PingService pingService; public TaskService(TaskRepository taskRepository, - DeadlineService deadlineService, TagService tagService, SchedulerRepository schedulerRepository, EventService eventService) { + DeadlineService deadlineService, + TagService tagService, + SchedulerRepository schedulerRepository, + EventService eventService, + PingService pingService) { this.taskRepository = taskRepository; this.deadlineService = deadlineService; this.tagService = tagService; this.eventService = eventService; this.schedulerRepository = schedulerRepository; + this.pingService = pingService; } public List findAll() { return taskRepository.findAll(new Sort(Sort.Direction.DESC, "createDate")); } - public List findAllDto() { - List tasks = convert(findAll(), TaskDto::new); - tasks.forEach(taskDto -> taskDto.setTitle(StringUtils.abbreviate(taskDto.getTitle(), MAX_DISPLAY_SIZE))); - return tasks; + public PageableItems findAll(int offset, int count) { + final Page page = taskRepository.findAll(new OffsetablePageRequest(offset, count)); + return new PageableItems<>(page.getTotalElements(), page.getContent()); } - public TaskDto findOneDto(Integer id) { - return new TaskDto(taskRepository.getOne(id)); + @Override + protected TaskListDto getActivityListDto(Task entity) { + return new TaskListDto(entity); } public List filter(TaskFilterDto filterDto) { @@ -81,11 +94,21 @@ public class TaskService { } @Transactional - public Integer create(TaskDto taskDto) throws IOException { - Task newTask = copyFromDto(new Task(), taskDto); - newTask = taskRepository.save(newTask); - eventService.createFromObject(newTask, Collections.emptyList(), true, "задачи"); - return newTask.getId(); + public TaskDto create(TaskDto taskDto) { + Task newTask = null; + try { + newTask = copyFromDto(new Task(), taskDto); + } catch (IOException e) { + e.printStackTrace(); + } + return new TaskDto(create(newTask)); + } + + @Transactional + public Task create(Task task) { + task = taskRepository.save(task); + eventService.createFromObject(task, Collections.emptyList(), true, "задачи"); + return task; } private Task copyFromDto(Task task, TaskDto taskDto) throws IOException { @@ -101,15 +124,20 @@ public class TaskService { } @Transactional - private Integer update(TaskDto taskDto) throws IOException { + public TaskDto update(TaskDto taskDto) { Task task = taskRepository.getOne(taskDto.getId()); - taskRepository.save(copyFromDto(task, taskDto)); + return new TaskDto(update(task)); + } + + @Transactional + public Task update(Task task) { + task = taskRepository.save(task); eventService.updateTaskDeadlines(task); - return task.getId(); + return task; } @Transactional - public boolean delete(Integer taskId) throws IOException { + public boolean delete(Integer taskId) { if (taskRepository.existsById(taskId)) { Task scheduleTask = taskRepository.getOne(taskId); Scheduler sch = schedulerRepository.findOneByTask(scheduleTask); @@ -120,15 +148,6 @@ public class TaskService { return true; } return false; - - } - - public void save(TaskDto taskDto) throws IOException { - if (isEmpty(taskDto.getId())) { - create(taskDto); - } else { - update(taskDto); - } } private void copyMainPart(Task newTask, Task task) { @@ -255,4 +274,27 @@ public class TaskService { taskRepository.save(newTask); return newTask; } + + public PageableItems findAllActiveDto(int offset, int count) { + return convertPageable(findAllActive(offset, count), TaskDashboardDto::new); + } + + private PageableItems findAllActive(int offset, int count) { + return findAll(offset, count); + } + + public TaskDto findById(Integer taskId) { + return new TaskDto(findTaskById(taskId)); + } + + public Task findTaskById(Integer taskId) { + return taskRepository.findById(taskId) + .orElseThrow(() -> new EntityNotFoundException("Paper with id=" + taskId + " not found")); + } + + + @Transactional + public void ping(int taskId) { + pingService.addPing(findTaskById(taskId)); + } } diff --git a/src/test/java/ru/ulstu/activity/conference/service/ConferenceServiceTest.java b/src/test/java/ru/ulstu/activity/conference/service/ConferenceServiceTest.java index 9fe5bc3..f2be56c 100644 --- a/src/test/java/ru/ulstu/activity/conference/service/ConferenceServiceTest.java +++ b/src/test/java/ru/ulstu/activity/conference/service/ConferenceServiceTest.java @@ -144,7 +144,7 @@ public class ConferenceServiceTest { ConferenceDto newConferenceDto = new ConferenceDto(); newConferenceDto.setNotSelectedPapers(papers); - ConferenceDto result = conferenceService.getNewConference(); + ConferenceDto result = new ConferenceDto(); assertEquals(newConferenceDto.getId(), result.getId()); assertEquals(newConferenceDto.getNotSelectedPapers(), result.getNotSelectedPapers()); @@ -155,7 +155,7 @@ public class ConferenceServiceTest { public void findAll() { when(conferenceRepository.findAll(SORT)).thenReturn(conferences); - assertEquals(Collections.singletonList(conferenceWithId), conferenceService.findAll()); + assertEquals(Collections.singletonList(conferenceWithId), conferenceService.findAll(0, 100).getItems()); } @Test diff --git a/src/test/java/ru/ulstu/activity/grant/service/GrantServiceTest.java b/src/test/java/ru/ulstu/activity/grant/service/GrantServiceTest.java index dc1a9a0..d8c2c78 100644 --- a/src/test/java/ru/ulstu/activity/grant/service/GrantServiceTest.java +++ b/src/test/java/ru/ulstu/activity/grant/service/GrantServiceTest.java @@ -127,11 +127,11 @@ public class GrantServiceTest { public void findAll() { when(grantRepository.findAll()).thenReturn(grants); - assertEquals(Collections.singletonList(grantWithId), grantService.findAll()); + assertEquals(Collections.singletonList(grantWithId), grantService.findAll(0, 100).getItems()); } @Test - public void create() throws IOException { + public void create() { when(deadlineService.saveOrCreate(new ArrayList<>())).thenReturn(deadlines); when(userService.getUserByLogin("admin")).thenReturn(leader); when(grantRepository.save(new Grant())).thenReturn(grantWithId); @@ -188,7 +188,7 @@ public class GrantServiceTest { @Test public void findById() { when(grantRepository.getOne(ID)).thenReturn(grantWithId); - Grant findGrant = grantService.findById(ID); + Grant findGrant = grantService.findGrantById(ID); assertEquals(grantWithId.getId(), findGrant.getId()); } -- 2.25.1 From 8e89ec08a7dc17c47cf59b1f2c7914403b6d45c6 Mon Sep 17 00:00:00 2001 From: Anton Romanov Date: Mon, 8 Jul 2019 13:35:03 +0400 Subject: [PATCH 31/45] start conference controller --- .../conference/ConferenceController.java | 60 +++++++++++++++++++ .../model/ConferenceDashboardDto.java | 21 +++++++ .../repository/ConferenceRepository.java | 4 +- .../conference/service/ConferenceService.java | 46 ++++---------- 4 files changed, 97 insertions(+), 34 deletions(-) create mode 100644 src/main/java/ru/ulstu/activity/conference/ConferenceController.java create mode 100644 src/main/java/ru/ulstu/activity/conference/model/ConferenceDashboardDto.java diff --git a/src/main/java/ru/ulstu/activity/conference/ConferenceController.java b/src/main/java/ru/ulstu/activity/conference/ConferenceController.java new file mode 100644 index 0000000..cfa9ed6 --- /dev/null +++ b/src/main/java/ru/ulstu/activity/conference/ConferenceController.java @@ -0,0 +1,60 @@ +package ru.ulstu.activity.conference; + +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestParam; +import ru.ulstu.activity.api.ActivityController; +import ru.ulstu.activity.conference.model.ConferenceDashboardDto; +import ru.ulstu.activity.conference.model.ConferenceDto; +import ru.ulstu.activity.conference.model.ConferenceListDto; +import ru.ulstu.activity.conference.service.ConferenceService; +import ru.ulstu.core.model.response.PageableItems; +import ru.ulstu.core.model.response.Response; + +public class ConferenceController extends ActivityController { + + private final ConferenceService conferenceService; + + public ConferenceController(ConferenceService conferenceService) { + this.conferenceService = conferenceService; + } + + @Override + @GetMapping("list") + public Response> getList(@RequestParam(value = "offset", defaultValue = "0") int offset, + @RequestParam(value = "count", defaultValue = "0") int count) { + return new Response<>(conferenceService.findAllDto(offset, count)); + } + + @Override + @GetMapping("dashboard") + public Response> getDashboard(@RequestParam(value = "offset", defaultValue = "0") int offset, + @RequestParam(value = "count", defaultValue = "0") int count) { + return new Response<>(conferenceService.findAllActiveDto(offset, count)); + } + + @Override + public Response get(@PathVariable("grant-id") Integer entityId) { + return new Response<>(conferenceService.findById(entityId)); + } + + @Override + public Response create(ConferenceDto entity) { + return null; + } + + @Override + public Response update(ConferenceDto entity) { + return null; + } + + @Override + public Response delete(Integer entityId) { + return null; + } + + @Override + public void ping(int entityId) { + + } +} diff --git a/src/main/java/ru/ulstu/activity/conference/model/ConferenceDashboardDto.java b/src/main/java/ru/ulstu/activity/conference/model/ConferenceDashboardDto.java new file mode 100644 index 0000000..3cdae05 --- /dev/null +++ b/src/main/java/ru/ulstu/activity/conference/model/ConferenceDashboardDto.java @@ -0,0 +1,21 @@ +package ru.ulstu.activity.conference.model; + +import ru.ulstu.activity.api.model.ActivityDashboardDto; +import ru.ulstu.activity.common.model.ScienceGroupMemberDto; + +import java.util.Set; + +import static ru.ulstu.core.util.StreamApiUtils.convert; + +public class ConferenceDashboardDto extends ActivityDashboardDto { + private final Set members; + + public ConferenceDashboardDto(Conference conference) { + super(conference.getId(), conference.getTitle()); + this.members = convert(conference.getActivityMembers(), ScienceGroupMemberDto::new); + } + + public Set getAuthors() { + return members; + } +} diff --git a/src/main/java/ru/ulstu/activity/conference/repository/ConferenceRepository.java b/src/main/java/ru/ulstu/activity/conference/repository/ConferenceRepository.java index 2fd5243..4efe9bc 100644 --- a/src/main/java/ru/ulstu/activity/conference/repository/ConferenceRepository.java +++ b/src/main/java/ru/ulstu/activity/conference/repository/ConferenceRepository.java @@ -1,5 +1,7 @@ package ru.ulstu.activity.conference.repository; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Modifying; import org.springframework.data.jpa.repository.Query; @@ -17,7 +19,7 @@ public interface ConferenceRepository extends JpaRepository List findByUserAndYear(@Param("user") User user, @Param("year") Integer year); @Query("SELECT c FROM Conference c WHERE c.beginDate > :date") - List findAllActive(@Param("date") Date date); + Page findAllActive(Pageable pageable, @Param("date") Date date); @Query("SELECT case when count(c) > 0 then true else false end FROM Conference c JOIN c.papers p WHERE p.id = :paperId") boolean isPaperAttached(@Param("paperId") Integer paperId); diff --git a/src/main/java/ru/ulstu/activity/conference/service/ConferenceService.java b/src/main/java/ru/ulstu/activity/conference/service/ConferenceService.java index ef19f3b..6db366f 100644 --- a/src/main/java/ru/ulstu/activity/conference/service/ConferenceService.java +++ b/src/main/java/ru/ulstu/activity/conference/service/ConferenceService.java @@ -3,14 +3,9 @@ package ru.ulstu.activity.conference.service; import org.springframework.data.domain.Page; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import org.springframework.ui.ModelMap; import org.springframework.validation.Errors; import ru.ulstu.activity.common.service.AbstractActivityService; -import ru.ulstu.activity.conference.model.Conference; -import ru.ulstu.activity.conference.model.ConferenceDto; -import ru.ulstu.activity.conference.model.ConferenceFilterDto; -import ru.ulstu.activity.conference.model.ConferenceListDto; -import ru.ulstu.activity.conference.model.ConferenceUser; +import ru.ulstu.activity.conference.model.*; import ru.ulstu.activity.conference.repository.ConferenceRepository; import ru.ulstu.activity.deadline.model.Deadline; import ru.ulstu.activity.deadline.service.DeadlineService; @@ -32,6 +27,7 @@ import java.util.stream.Collectors; import static org.springframework.util.ObjectUtils.isEmpty; import static ru.ulstu.core.util.StreamApiUtils.convert; +import static ru.ulstu.core.util.StreamApiUtils.convertPageable; @Service public class ConferenceService extends AbstractActivityService { @@ -239,12 +235,14 @@ public class ConferenceService extends AbstractActivityService findAllActiveDto() { - return convert(findAllActive(), ConferenceDto::new); + public PageableItems findAllActiveDto(int offset, int count) { + return convertPageable(findAllActive(offset, count), ConferenceDashboardDto::new); } - private List findAllActive() { - return conferenceRepository.findAllActive(new Date()); + private PageableItems findAllActive(int offset, int count) { + Page activeConferencePage = conferenceRepository + .findAllActive(new OffsetablePageRequest(offset, count), new Date()); + return new PageableItems<>(activeConferencePage.getTotalElements(), activeConferencePage.getContent()); } public boolean isAttachedToConference(Integer paperId) { @@ -253,34 +251,16 @@ public class ConferenceService extends AbstractActivityService inshoreSales = Arrays.asList(4074, 3455, 4112); - List nearshoreSales = Arrays.asList(3222, 3011, 3788); - List offshoreSales = Arrays.asList(7811, 7098, 6455); - - modelMap.addAttribute("inshoreSales", inshoreSales); - modelMap.addAttribute("nearshoreSales", nearshoreSales); - modelMap.addAttribute("offshoreSales", offshoreSales); + public Conference findConferenceById(Integer id) { + return conferenceRepository.getOne(id); } private void sendNotificationAfterUpdateDeadlines(Conference conference, List oldDeadlines) { -- 2.25.1 From 938deda29b5444e93571d95fb48fd20d5c41abe6 Mon Sep 17 00:00:00 2001 From: Anton Romanov Date: Mon, 8 Jul 2019 14:43:38 +0400 Subject: [PATCH 32/45] complete controllers --- .../activity/api/ActivityRepository.java | 4 +- .../service/AbstractActivityService.java | 36 --------- .../service/ActivityNotificationService.java | 8 ++ .../common/service/ActivityService.java | 77 +++++++++++++++++++ .../ConferenceController.java | 36 +++++---- .../repository/ConferenceRepository.java | 2 +- .../ConferenceNotificationService.java | 3 +- .../conference/service/ConferenceService.java | 63 ++++++--------- .../grant/controller/GrantController.java | 10 +-- .../grant/repository/GrantRepository.java | 2 +- .../service/GrantNotificationService.java | 3 +- .../activity/grant/service/GrantService.java | 40 +++++----- .../paper/controller/PaperController.java | 2 +- .../paper/repository/PaperRepository.java | 6 +- .../service/PaperNotificationService.java | 3 +- .../activity/paper/service/PaperService.java | 43 +++++------ .../activity/ping/service/PingService.java | 3 +- .../students/controller/TaskController.java | 4 +- .../students/repository/TaskRepository.java | 7 +- .../service/TaskNotificationService.java | 20 +++++ .../students/service/TaskService.java | 31 +++++--- 21 files changed, 241 insertions(+), 162 deletions(-) delete mode 100644 src/main/java/ru/ulstu/activity/common/service/AbstractActivityService.java create mode 100644 src/main/java/ru/ulstu/activity/common/service/ActivityNotificationService.java create mode 100644 src/main/java/ru/ulstu/activity/common/service/ActivityService.java rename src/main/java/ru/ulstu/activity/conference/{ => controller}/ConferenceController.java (55%) create mode 100644 src/main/java/ru/ulstu/activity/students/service/TaskNotificationService.java diff --git a/src/main/java/ru/ulstu/activity/api/ActivityRepository.java b/src/main/java/ru/ulstu/activity/api/ActivityRepository.java index 7353958..a4d6eca 100644 --- a/src/main/java/ru/ulstu/activity/api/ActivityRepository.java +++ b/src/main/java/ru/ulstu/activity/api/ActivityRepository.java @@ -2,6 +2,8 @@ package ru.ulstu.activity.api; import org.springframework.data.repository.query.Param; -public interface ActivityRepository { +public interface ActivityRepository { String findByNameAndNotId(@Param("name") String name, @Param("id") Integer id); + + T save(T t); } diff --git a/src/main/java/ru/ulstu/activity/common/service/AbstractActivityService.java b/src/main/java/ru/ulstu/activity/common/service/AbstractActivityService.java deleted file mode 100644 index d964822..0000000 --- a/src/main/java/ru/ulstu/activity/common/service/AbstractActivityService.java +++ /dev/null @@ -1,36 +0,0 @@ -package ru.ulstu.activity.common.service; - -import ru.ulstu.activity.api.ActivityRepository; -import ru.ulstu.activity.api.model.ActivityDto; -import ru.ulstu.activity.api.model.ActivityListDto; -import ru.ulstu.activity.common.model.AbstractActivity; -import ru.ulstu.core.model.response.PageableItems; - -import static ru.ulstu.core.util.StreamApiUtils.convertPageable; - -public abstract class AbstractActivityService { - - protected ActivityRepository activityRepository; - - public abstract T create(T entity); - - public abstract D create(D entity); - - public abstract T update(T entity); - - public abstract D update(D entity); - - public abstract boolean delete(Integer id); - - public abstract PageableItems findAll(int offset, int count); - - public PageableItems findAllDto(int offset, int count) { - return convertPageable(findAll(offset, count), entity -> getActivityListDto(entity)); - } - - protected abstract L getActivityListDto(T entity); - - protected boolean checkUniqueName(String title, Integer id) { - return title.equals(activityRepository.findByNameAndNotId(title, id)); - } -} diff --git a/src/main/java/ru/ulstu/activity/common/service/ActivityNotificationService.java b/src/main/java/ru/ulstu/activity/common/service/ActivityNotificationService.java new file mode 100644 index 0000000..745ccaf --- /dev/null +++ b/src/main/java/ru/ulstu/activity/common/service/ActivityNotificationService.java @@ -0,0 +1,8 @@ +package ru.ulstu.activity.common.service; + +import ru.ulstu.activity.common.model.AbstractActivity; + +public abstract class ActivityNotificationService { + + public abstract void sendCreateNotification(T entity); +} diff --git a/src/main/java/ru/ulstu/activity/common/service/ActivityService.java b/src/main/java/ru/ulstu/activity/common/service/ActivityService.java new file mode 100644 index 0000000..0ff7844 --- /dev/null +++ b/src/main/java/ru/ulstu/activity/common/service/ActivityService.java @@ -0,0 +1,77 @@ +package ru.ulstu.activity.common.service; + +import org.springframework.transaction.annotation.Transactional; +import ru.ulstu.activity.api.ActivityRepository; +import ru.ulstu.activity.api.model.ActivityDto; +import ru.ulstu.activity.api.model.ActivityListDto; +import ru.ulstu.activity.common.model.AbstractActivity; +import ru.ulstu.activity.ping.service.PingService; +import ru.ulstu.core.model.response.PageableItems; + +import java.io.IOException; + +import static ru.ulstu.core.util.StreamApiUtils.convertPageable; + +public abstract class ActivityService { + + protected final ActivityRepository activityRepository; + protected final ActivityNotificationService activityNotificationService; + protected final PingService pingService; + + protected ActivityService(ActivityRepository activityRepository, + ActivityNotificationService activityNotificationService, + PingService pingService) { + this.activityRepository = activityRepository; + this.activityNotificationService = activityNotificationService; + this.pingService = pingService; + } + + @Transactional + public D create(D entityDto) { + T newEntity; + try { + newEntity = copyFromDto(getNewActivity(), entityDto); + } catch (IOException e) { + throw new RuntimeException(e); + } + return getNewActivityDto(create(newEntity)); + } + + @Transactional + public T create(T entity) { + T newEntity = activityRepository.save(entity); + activityNotificationService.sendCreateNotification(newEntity); + return newEntity; + } + + public abstract T update(T entity); + + public abstract D update(D entity); + + public abstract boolean delete(Integer id); + + public abstract T findById(Integer id); + + public abstract PageableItems findAll(int offset, int count); + + public PageableItems findAllDto(int offset, int count) { + return convertPageable(findAll(offset, count), entity -> getActivityListDto(entity)); + } + + protected abstract T copyFromDto(T t, D d) throws IOException; + + protected abstract L getActivityListDto(T entity); + + protected abstract T getNewActivity(); + + protected abstract D getNewActivityDto(T entity); + + protected boolean checkUniqueName(String title, Integer id) { + return title.equals(activityRepository.findByNameAndNotId(title, id)); + } + + @Transactional + public void ping(int entityId) { + pingService.addPing(findById(entityId)); + } +} diff --git a/src/main/java/ru/ulstu/activity/conference/ConferenceController.java b/src/main/java/ru/ulstu/activity/conference/controller/ConferenceController.java similarity index 55% rename from src/main/java/ru/ulstu/activity/conference/ConferenceController.java rename to src/main/java/ru/ulstu/activity/conference/controller/ConferenceController.java index cfa9ed6..63af6c6 100644 --- a/src/main/java/ru/ulstu/activity/conference/ConferenceController.java +++ b/src/main/java/ru/ulstu/activity/conference/controller/ConferenceController.java @@ -1,7 +1,11 @@ -package ru.ulstu.activity.conference; +package ru.ulstu.activity.conference.controller; +import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestParam; import ru.ulstu.activity.api.ActivityController; import ru.ulstu.activity.conference.model.ConferenceDashboardDto; @@ -11,7 +15,9 @@ import ru.ulstu.activity.conference.service.ConferenceService; import ru.ulstu.core.model.response.PageableItems; import ru.ulstu.core.model.response.Response; -public class ConferenceController extends ActivityController { +import javax.validation.Valid; + +public class ConferenceController implements ActivityController { private final ConferenceService conferenceService; @@ -34,27 +40,31 @@ public class ConferenceController extends ActivityController get(@PathVariable("grant-id") Integer entityId) { - return new Response<>(conferenceService.findById(entityId)); + @GetMapping("{conference-id}") + public Response get(@PathVariable("conference-id") Integer entityId) { + return new Response<>(conferenceService.findConferenceById(entityId)); } @Override - public Response create(ConferenceDto entity) { - return null; + @PostMapping + public Response create(@RequestBody @Valid ConferenceDto entity) { + return new Response<>(conferenceService.create(entity)); } @Override - public Response update(ConferenceDto entity) { - return null; + @PutMapping + public Response update(@RequestBody @Valid ConferenceDto entity) { + return new Response<>(conferenceService.update(entity)); } @Override - public Response delete(Integer entityId) { - return null; + @DeleteMapping("{conference-id}") + public Response delete(@PathVariable("conference-id") Integer entityId) { + return new Response<>(conferenceService.delete(entityId)); } - @Override - public void ping(int entityId) { - + @PostMapping("ping/{conference-id}") + public void ping(@PathVariable("conference-id") int conferenceId) { + conferenceService.ping(conferenceId); } } diff --git a/src/main/java/ru/ulstu/activity/conference/repository/ConferenceRepository.java b/src/main/java/ru/ulstu/activity/conference/repository/ConferenceRepository.java index 4efe9bc..488240d 100644 --- a/src/main/java/ru/ulstu/activity/conference/repository/ConferenceRepository.java +++ b/src/main/java/ru/ulstu/activity/conference/repository/ConferenceRepository.java @@ -13,7 +13,7 @@ import ru.ulstu.user.model.User; import java.util.Date; import java.util.List; -public interface ConferenceRepository extends JpaRepository, ActivityRepository { +public interface ConferenceRepository extends JpaRepository, ActivityRepository { @Query("SELECT c FROM Conference c LEFT JOIN c.users u WHERE (:user IS NULL OR u.user = :user) " + "AND (YEAR(c.beginDate) = :year OR :year IS NULL) ORDER BY begin_date DESC") List findByUserAndYear(@Param("user") User user, @Param("year") Integer year); diff --git a/src/main/java/ru/ulstu/activity/conference/service/ConferenceNotificationService.java b/src/main/java/ru/ulstu/activity/conference/service/ConferenceNotificationService.java index db3a056..7d94694 100644 --- a/src/main/java/ru/ulstu/activity/conference/service/ConferenceNotificationService.java +++ b/src/main/java/ru/ulstu/activity/conference/service/ConferenceNotificationService.java @@ -2,6 +2,7 @@ package ru.ulstu.activity.conference.service; import com.google.common.collect.ImmutableMap; import org.springframework.stereotype.Service; +import ru.ulstu.activity.common.service.ActivityNotificationService; import ru.ulstu.activity.conference.model.Conference; import ru.ulstu.activity.ping.service.PingService; import ru.ulstu.core.util.DateUtils; @@ -14,7 +15,7 @@ import java.util.List; import java.util.Map; @Service -public class ConferenceNotificationService { +public class ConferenceNotificationService extends ActivityNotificationService { private final static int YESTERDAY = -1; private final static int DAYS_TO_DEADLINE_NOTIFICATION = 7; diff --git a/src/main/java/ru/ulstu/activity/conference/service/ConferenceService.java b/src/main/java/ru/ulstu/activity/conference/service/ConferenceService.java index 6db366f..e596d88 100644 --- a/src/main/java/ru/ulstu/activity/conference/service/ConferenceService.java +++ b/src/main/java/ru/ulstu/activity/conference/service/ConferenceService.java @@ -4,8 +4,13 @@ import org.springframework.data.domain.Page; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.Errors; -import ru.ulstu.activity.common.service.AbstractActivityService; -import ru.ulstu.activity.conference.model.*; +import ru.ulstu.activity.common.service.ActivityService; +import ru.ulstu.activity.conference.model.Conference; +import ru.ulstu.activity.conference.model.ConferenceDashboardDto; +import ru.ulstu.activity.conference.model.ConferenceDto; +import ru.ulstu.activity.conference.model.ConferenceFilterDto; +import ru.ulstu.activity.conference.model.ConferenceListDto; +import ru.ulstu.activity.conference.model.ConferenceUser; import ru.ulstu.activity.conference.repository.ConferenceRepository; import ru.ulstu.activity.deadline.model.Deadline; import ru.ulstu.activity.deadline.service.DeadlineService; @@ -20,7 +25,6 @@ import ru.ulstu.user.service.UserService; import java.io.IOException; import java.util.Arrays; -import java.util.Collections; import java.util.Date; import java.util.List; import java.util.stream.Collectors; @@ -30,7 +34,7 @@ import static ru.ulstu.core.util.StreamApiUtils.convert; import static ru.ulstu.core.util.StreamApiUtils.convertPageable; @Service -public class ConferenceService extends AbstractActivityService { +public class ConferenceService extends ActivityService { private final ConferenceRepository conferenceRepository; private final ConferenceUserService conferenceUserService; @@ -49,7 +53,7 @@ public class ConferenceService extends AbstractActivityService conference.getPapers().add(paper.getId() != null ? paperService.findPaperById(paper.getId()) : paperService.create(paper))); + conferenceDto.getPapers().forEach(paper -> conference.getPapers().add(paper.getId() != null ? paperService.findById(paper.getId()) : paperService.create(paper))); conference.setDeadlines(deadlineService.saveOrCreate(conferenceDto.getDeadlines())); conference.setUsers(conferenceUserService.saveOrCreate(conferenceDto.getUsers())); if (conferenceDto.getPaperIds() != null && !conferenceDto.getPaperIds().isEmpty()) { conferenceDto.getPaperIds().forEach(paperId -> - conference.getPapers().add(paperService.findPaperById(paperId))); + conference.getPapers().add(paperService.findById(paperId))); } return conference; } @@ -249,17 +242,11 @@ public class ConferenceService extends AbstractActivityService get(@PathVariable("grant-id") Integer entityId) { - return new Response<>(grantService.findById(entityId)); + return new Response<>(grantService.findGrantById(entityId)); } @Override @@ -69,14 +69,14 @@ public class GrantController implements ActivityController delete(@PathVariable("grant-id") Integer entityId) { return new Response<>(grantService.delete(entityId)); } @Override - @PostMapping("ping/{paper-id}") - public void ping(@PathVariable("paper-id") int entityId) { + @PostMapping("ping/{grant-id}") + public void ping(@PathVariable("grant-id") int entityId) { grantService.ping(entityId); } } diff --git a/src/main/java/ru/ulstu/activity/grant/repository/GrantRepository.java b/src/main/java/ru/ulstu/activity/grant/repository/GrantRepository.java index a9d71f4..3b7edfe 100644 --- a/src/main/java/ru/ulstu/activity/grant/repository/GrantRepository.java +++ b/src/main/java/ru/ulstu/activity/grant/repository/GrantRepository.java @@ -10,7 +10,7 @@ import ru.ulstu.activity.grant.model.Grant; import java.util.List; -public interface GrantRepository extends JpaRepository, ActivityRepository { +public interface GrantRepository extends JpaRepository, ActivityRepository { List findByStatus(Grant.GrantStatus status); diff --git a/src/main/java/ru/ulstu/activity/grant/service/GrantNotificationService.java b/src/main/java/ru/ulstu/activity/grant/service/GrantNotificationService.java index affe2a7..2ffed77 100644 --- a/src/main/java/ru/ulstu/activity/grant/service/GrantNotificationService.java +++ b/src/main/java/ru/ulstu/activity/grant/service/GrantNotificationService.java @@ -2,6 +2,7 @@ package ru.ulstu.activity.grant.service; import com.google.common.collect.ImmutableMap; import org.springframework.stereotype.Service; +import ru.ulstu.activity.common.service.ActivityNotificationService; import ru.ulstu.activity.grant.model.Grant; import ru.ulstu.core.util.DateUtils; import ru.ulstu.user.model.User; @@ -13,7 +14,7 @@ import java.util.Map; import java.util.Set; @Service -public class GrantNotificationService { +public class GrantNotificationService extends ActivityNotificationService { private final static int DAYS_TO_DEADLINE_NOTIFICATION = 7; private final static String TEMPLATE_DEADLINE = "grantDeadlineNotification"; private final static String TEMPLATE_CREATE = "grantCreateNotification"; diff --git a/src/main/java/ru/ulstu/activity/grant/service/GrantService.java b/src/main/java/ru/ulstu/activity/grant/service/GrantService.java index 45891f1..4318a3f 100644 --- a/src/main/java/ru/ulstu/activity/grant/service/GrantService.java +++ b/src/main/java/ru/ulstu/activity/grant/service/GrantService.java @@ -7,7 +7,7 @@ import org.springframework.data.domain.Page; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.Errors; -import ru.ulstu.activity.common.service.AbstractActivityService; +import ru.ulstu.activity.common.service.ActivityService; import ru.ulstu.activity.deadline.model.Deadline; import ru.ulstu.activity.deadline.service.DeadlineService; import ru.ulstu.activity.file.service.FileService; @@ -45,7 +45,7 @@ import static ru.ulstu.activity.grant.model.Grant.GrantStatus.APPLICATION; import static ru.ulstu.core.util.StreamApiUtils.convertPageable; @Service -public class GrantService extends AbstractActivityService { +public class GrantService extends ActivityService { private final Logger log = LoggerFactory.getLogger(GrantService.class); private final GrantRepository grantRepository; @@ -69,9 +69,9 @@ public class GrantService extends AbstractActivityService grant.getPapers().add(paperService.findPaperById(paperIds))); + grantDto.getPaperIds().forEach(paperIds -> grant.getPapers().add(paperService.findById(paperIds))); } return grant; } @@ -182,7 +180,7 @@ public class GrantService extends AbstractActivityService get(@PathVariable("paper-id") Integer paperId) { - return new Response<>(paperService.findById(paperId)); + return new Response<>(paperService.findPaperById(paperId)); } @PostMapping diff --git a/src/main/java/ru/ulstu/activity/paper/repository/PaperRepository.java b/src/main/java/ru/ulstu/activity/paper/repository/PaperRepository.java index bd75a12..fee202a 100644 --- a/src/main/java/ru/ulstu/activity/paper/repository/PaperRepository.java +++ b/src/main/java/ru/ulstu/activity/paper/repository/PaperRepository.java @@ -4,13 +4,14 @@ import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; +import ru.ulstu.activity.api.ActivityRepository; import ru.ulstu.activity.paper.model.Paper; import ru.ulstu.core.repository.JpaDetachableRepository; import ru.ulstu.user.model.User; import java.util.List; -public interface PaperRepository extends JpaDetachableRepository { +public interface PaperRepository extends JpaDetachableRepository, ActivityRepository { @Query("SELECT p FROM Paper p WHERE (:author IS NULL OR :author MEMBER OF p.authors) AND (YEAR(p.createDate) = :year OR :year IS NULL)") List filter(@Param("author") User author, @Param("year") Integer year); @@ -32,4 +33,7 @@ public interface PaperRepository extends JpaDetachableRepository @Query("SELECT p FROM Paper p ") Page findAll(Pageable pageable); + + @Query("SELECT title FROM Paper p WHERE (p.title = :name) AND (:id IS NULL OR p.id != :id) ") + String findByNameAndNotId(@Param("name") String name, @Param("id") Integer id); } diff --git a/src/main/java/ru/ulstu/activity/paper/service/PaperNotificationService.java b/src/main/java/ru/ulstu/activity/paper/service/PaperNotificationService.java index 1e529ac..5da1937 100644 --- a/src/main/java/ru/ulstu/activity/paper/service/PaperNotificationService.java +++ b/src/main/java/ru/ulstu/activity/paper/service/PaperNotificationService.java @@ -2,6 +2,7 @@ package ru.ulstu.activity.paper.service; import com.google.common.collect.ImmutableMap; import org.springframework.stereotype.Service; +import ru.ulstu.activity.common.service.ActivityNotificationService; import ru.ulstu.activity.paper.model.Paper; import ru.ulstu.core.model.response.PageableItems; import ru.ulstu.core.util.DateUtils; @@ -13,7 +14,7 @@ import java.util.Map; import java.util.Set; @Service -public class PaperNotificationService { +public class PaperNotificationService extends ActivityNotificationService { private final static int DAYS_TO_DEADLINE_NOTIFICATION = 7; private final static String TEMPLATE_DEADLINE = "paperDeadlineNotification"; private final static String TEMPLATE_CREATE = "paperCreateNotification"; diff --git a/src/main/java/ru/ulstu/activity/paper/service/PaperService.java b/src/main/java/ru/ulstu/activity/paper/service/PaperService.java index f2c095f..fb41587 100644 --- a/src/main/java/ru/ulstu/activity/paper/service/PaperService.java +++ b/src/main/java/ru/ulstu/activity/paper/service/PaperService.java @@ -3,7 +3,7 @@ package ru.ulstu.activity.paper.service; import org.springframework.data.domain.Page; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import ru.ulstu.activity.common.service.AbstractActivityService; +import ru.ulstu.activity.common.service.ActivityService; import ru.ulstu.activity.deadline.model.Deadline; import ru.ulstu.activity.deadline.service.DeadlineService; import ru.ulstu.activity.file.model.FileDataDto; @@ -44,7 +44,7 @@ import static ru.ulstu.core.util.StreamApiUtils.convert; import static ru.ulstu.core.util.StreamApiUtils.convertPageable; @Service -public class PaperService extends AbstractActivityService { +public class PaperService extends ActivityService { private final PaperNotificationService paperNotificationService; private final PaperRepository paperRepository; private final UserService userService; @@ -63,6 +63,7 @@ public class PaperService extends AbstractActivityService findAllActive(int offset, int count) { Page activePapersPage = paperRepository.findAllWithoutStatuses(new OffsetablePageRequest(offset, count), COMPLETED, FAILED); return new PageableItems<>(activePapersPage.getTotalElements(), sortPapers(activePapersPage.getContent())); } - @Transactional - public Paper create(Paper paper) { - Paper newPaper = paperRepository.save(paper); - paperNotificationService.sendCreateNotification(newPaper); - eventService.createFromPaper(newPaper); - return newPaper; - } - public Paper update(Paper paper) { paperRepository.save(paper); paperNotificationService.sendCreateNotification(paper, oldAuthors); @@ -106,14 +109,9 @@ public class PaperService extends AbstractActivityService(paper.getAuthors()); @@ -128,7 +126,7 @@ public class PaperService extends AbstractActivityService new EntityNotFoundException("Paper with id=" + paperId + " not found")); } @@ -262,9 +260,4 @@ public class PaperService extends AbstractActivityService findAllCompletedByType(Paper.PaperType type) { return paperRepository.findByTypeAndStatus(type, Paper.PaperStatus.COMPLETED); } - - @Transactional - public void ping(int paperId) { - pingService.addPing(findPaperById(paperId)); - } } diff --git a/src/main/java/ru/ulstu/activity/ping/service/PingService.java b/src/main/java/ru/ulstu/activity/ping/service/PingService.java index 343fc80..8a52afa 100644 --- a/src/main/java/ru/ulstu/activity/ping/service/PingService.java +++ b/src/main/java/ru/ulstu/activity/ping/service/PingService.java @@ -18,8 +18,7 @@ public class PingService { private final UserService userService; public PingService(PingRepository pingRepository, - UserService userService, - PingScheduler pingScheduler) { + UserService userService) { this.pingRepository = pingRepository; this.userService = userService; } diff --git a/src/main/java/ru/ulstu/activity/students/controller/TaskController.java b/src/main/java/ru/ulstu/activity/students/controller/TaskController.java index 1e3041b..8be575f 100644 --- a/src/main/java/ru/ulstu/activity/students/controller/TaskController.java +++ b/src/main/java/ru/ulstu/activity/students/controller/TaskController.java @@ -44,7 +44,7 @@ public class TaskController implements ActivityController get(@PathVariable("task-id") Integer taskId) { - return new Response<>(taskService.findById(taskId)); + return new Response<>(taskService.findTaskById(taskId)); } @PostMapping @@ -57,7 +57,7 @@ public class TaskController implements ActivityController(taskService.update(paperDto)); } - @DeleteMapping("/{task-id}") + @DeleteMapping("{task-id}") public Response delete(@PathVariable("task-id") Integer taskId) { return new Response<>(taskService.delete(taskId)); } diff --git a/src/main/java/ru/ulstu/activity/students/repository/TaskRepository.java b/src/main/java/ru/ulstu/activity/students/repository/TaskRepository.java index 9e8d30d..1439385 100644 --- a/src/main/java/ru/ulstu/activity/students/repository/TaskRepository.java +++ b/src/main/java/ru/ulstu/activity/students/repository/TaskRepository.java @@ -3,13 +3,14 @@ package ru.ulstu.activity.students.repository; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; +import ru.ulstu.activity.api.ActivityRepository; import ru.ulstu.activity.students.model.Task; import ru.ulstu.activity.tags.model.Tag; import java.util.Date; import java.util.List; -public interface TaskRepository extends JpaRepository { +public interface TaskRepository extends JpaRepository, ActivityRepository { @Query("SELECT t FROM Task t WHERE (t.status = :status OR :status IS NULL) AND (:tag IS NULL OR :tag MEMBER OF t.tags) ORDER BY create_date DESC") List filterNew(@Param("status") Task.TaskStatus status, @Param("tag") Tag tag); @@ -23,5 +24,7 @@ public interface TaskRepository extends JpaRepository { @Query("SELECT t FROM Task t WHERE (t.createDate >= :date) ORDER BY create_date DESC") List findAllYear(@Param("date") Date date); - + @Override + @Query("SELECT title FROM Task t WHERE (t.title = :name) AND (:id IS NULL OR t.id != :id) ") + String findByNameAndNotId(@Param("name") String name, @Param("id") Integer id); } diff --git a/src/main/java/ru/ulstu/activity/students/service/TaskNotificationService.java b/src/main/java/ru/ulstu/activity/students/service/TaskNotificationService.java new file mode 100644 index 0000000..bd9046e --- /dev/null +++ b/src/main/java/ru/ulstu/activity/students/service/TaskNotificationService.java @@ -0,0 +1,20 @@ +package ru.ulstu.activity.students.service; + +import org.springframework.stereotype.Service; +import ru.ulstu.activity.common.service.ActivityNotificationService; +import ru.ulstu.activity.students.model.Task; +import ru.ulstu.user.service.MailService; + +@Service +public class TaskNotificationService extends ActivityNotificationService { + + private final MailService mailService; + + public TaskNotificationService(MailService mailService) { + this.mailService = mailService; + } + + public void sendCreateNotification(Task task) { + throw new RuntimeException("not implemented yet"); + } +} diff --git a/src/main/java/ru/ulstu/activity/students/service/TaskService.java b/src/main/java/ru/ulstu/activity/students/service/TaskService.java index 0492e0b..244cb33 100644 --- a/src/main/java/ru/ulstu/activity/students/service/TaskService.java +++ b/src/main/java/ru/ulstu/activity/students/service/TaskService.java @@ -4,7 +4,7 @@ import org.springframework.data.domain.Page; import org.springframework.data.domain.Sort; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import ru.ulstu.activity.common.service.AbstractActivityService; +import ru.ulstu.activity.common.service.ActivityService; import ru.ulstu.activity.deadline.model.Deadline; import ru.ulstu.activity.deadline.service.DeadlineService; import ru.ulstu.activity.ping.service.PingService; @@ -41,11 +41,9 @@ import static ru.ulstu.core.util.StreamApiUtils.convert; import static ru.ulstu.core.util.StreamApiUtils.convertPageable; @Service -public class TaskService extends AbstractActivityService { - - private final static int MAX_DISPLAY_SIZE = 40; - +public class TaskService extends ActivityService { private final TaskRepository taskRepository; + private final TaskNotificationService taskNotificationService; private final SchedulerRepository schedulerRepository; private final DeadlineService deadlineService; private final TagService tagService; @@ -54,12 +52,15 @@ public class TaskService extends AbstractActivityService filter(TaskFilterDto filterDto) { if (filterDto.getOrder().compareTo("new") == 0) { return convert(taskRepository.filterNew( @@ -111,7 +122,7 @@ public class TaskService extends AbstractActivityService new EntityNotFoundException("Paper with id=" + taskId + " not found")); } @@ -295,6 +306,6 @@ public class TaskService extends AbstractActivityService Date: Mon, 8 Jul 2019 15:17:12 +0400 Subject: [PATCH 33/45] fix tests --- src/main/java/ru/ulstu/activity/grant/model/GrantDto.java | 4 ++++ .../service => conference}/ConferenceServiceTest.java | 7 +++++-- .../activity/grant/service => grant}/GrantServiceTest.java | 6 ++++-- .../project/service => project}/ProjectServiceTest.java | 6 +++--- .../students/service => students}/TaskServiceTest.java | 3 ++- 5 files changed, 18 insertions(+), 8 deletions(-) rename src/test/java/{ru/ulstu/activity/conference/service => conference}/ConferenceServiceTest.java (97%) rename src/test/java/{ru/ulstu/activity/grant/service => grant}/GrantServiceTest.java (97%) rename src/test/java/{ru/ulstu/activity/project/service => project}/ProjectServiceTest.java (97%) rename src/test/java/{ru/ulstu/activity/students/service => students}/TaskServiceTest.java (98%) diff --git a/src/main/java/ru/ulstu/activity/grant/model/GrantDto.java b/src/main/java/ru/ulstu/activity/grant/model/GrantDto.java index fc48a2e..1d808a3 100644 --- a/src/main/java/ru/ulstu/activity/grant/model/GrantDto.java +++ b/src/main/java/ru/ulstu/activity/grant/model/GrantDto.java @@ -70,6 +70,10 @@ public class GrantDto extends ActivityDto { this.papers = papers; } + public GrantDto(Integer id) { + super(id); + } + public GrantDto(Grant grant) { super(grant.getId()); this.title = grant.getTitle(); diff --git a/src/test/java/ru/ulstu/activity/conference/service/ConferenceServiceTest.java b/src/test/java/conference/ConferenceServiceTest.java similarity index 97% rename from src/test/java/ru/ulstu/activity/conference/service/ConferenceServiceTest.java rename to src/test/java/conference/ConferenceServiceTest.java index f2be56c..b89902e 100644 --- a/src/test/java/ru/ulstu/activity/conference/service/ConferenceServiceTest.java +++ b/src/test/java/conference/ConferenceServiceTest.java @@ -1,4 +1,4 @@ -package ru.ulstu.activity.conference.service; +package conference; import org.junit.Before; import org.junit.Test; @@ -12,6 +12,9 @@ import ru.ulstu.activity.conference.model.ConferenceDto; import ru.ulstu.activity.conference.model.ConferenceFilterDto; import ru.ulstu.activity.conference.model.ConferenceUser; import ru.ulstu.activity.conference.repository.ConferenceRepository; +import ru.ulstu.activity.conference.service.ConferenceNotificationService; +import ru.ulstu.activity.conference.service.ConferenceService; +import ru.ulstu.activity.conference.service.ConferenceUserService; import ru.ulstu.activity.deadline.model.Deadline; import ru.ulstu.activity.deadline.service.DeadlineService; import ru.ulstu.activity.paper.model.Paper; @@ -160,7 +163,7 @@ public class ConferenceServiceTest { @Test public void create() throws IOException { - when(paperService.findPaperById(ID)).thenReturn(paperWithId); + when(paperService.findById(ID)).thenReturn(paperWithId); when(paperService.create(new Paper())).thenReturn(paperWithoutId); when(deadlineService.saveOrCreate(new ArrayList<>())).thenReturn(deadlines); when(conferenceUserService.saveOrCreate(new ArrayList<>())).thenReturn(conferenceUsers); diff --git a/src/test/java/ru/ulstu/activity/grant/service/GrantServiceTest.java b/src/test/java/grant/GrantServiceTest.java similarity index 97% rename from src/test/java/ru/ulstu/activity/grant/service/GrantServiceTest.java rename to src/test/java/grant/GrantServiceTest.java index d8c2c78..5cb632c 100644 --- a/src/test/java/ru/ulstu/activity/grant/service/GrantServiceTest.java +++ b/src/test/java/grant/GrantServiceTest.java @@ -1,4 +1,4 @@ -package ru.ulstu.activity.grant.service; +package grant; import org.apache.commons.lang3.StringUtils; import org.junit.Before; @@ -13,6 +13,8 @@ import ru.ulstu.activity.deadline.service.DeadlineService; import ru.ulstu.activity.grant.model.Grant; import ru.ulstu.activity.grant.model.GrantDto; import ru.ulstu.activity.grant.repository.GrantRepository; +import ru.ulstu.activity.grant.service.GrantNotificationService; +import ru.ulstu.activity.grant.service.GrantService; import ru.ulstu.activity.paper.model.Paper; import ru.ulstu.activity.paper.model.PaperDto; import ru.ulstu.activity.paper.service.PaperService; @@ -188,7 +190,7 @@ public class GrantServiceTest { @Test public void findById() { when(grantRepository.getOne(ID)).thenReturn(grantWithId); - Grant findGrant = grantService.findGrantById(ID); + Grant findGrant = grantService.findById(ID); assertEquals(grantWithId.getId(), findGrant.getId()); } diff --git a/src/test/java/ru/ulstu/activity/project/service/ProjectServiceTest.java b/src/test/java/project/ProjectServiceTest.java similarity index 97% rename from src/test/java/ru/ulstu/activity/project/service/ProjectServiceTest.java rename to src/test/java/project/ProjectServiceTest.java index 04b1282..2f59c2f 100644 --- a/src/test/java/ru/ulstu/activity/project/service/ProjectServiceTest.java +++ b/src/test/java/project/ProjectServiceTest.java @@ -1,4 +1,4 @@ -package ru.ulstu.activity.project.service; +package project; import org.junit.Before; import org.junit.Test; @@ -15,6 +15,7 @@ import ru.ulstu.activity.grant.service.GrantService; import ru.ulstu.activity.project.model.Project; import ru.ulstu.activity.project.model.ProjectDto; import ru.ulstu.activity.project.repository.ProjectRepository; +import ru.ulstu.activity.project.service.ProjectService; import ru.ulstu.activity.timeline.service.EventService; import ru.ulstu.user.model.User; import ru.ulstu.user.service.UserService; @@ -85,8 +86,7 @@ public class ProjectServiceTest { user.setFirstName(NAME); List grants = new ArrayList<>(); - GrantDto grant = new GrantDto(); - grant.setId(ID); + GrantDto grant = new GrantDto(ID); grants.add(grant); } diff --git a/src/test/java/ru/ulstu/activity/students/service/TaskServiceTest.java b/src/test/java/students/TaskServiceTest.java similarity index 98% rename from src/test/java/ru/ulstu/activity/students/service/TaskServiceTest.java rename to src/test/java/students/TaskServiceTest.java index 10a2cb5..1bdae87 100644 --- a/src/test/java/ru/ulstu/activity/students/service/TaskServiceTest.java +++ b/src/test/java/students/TaskServiceTest.java @@ -1,4 +1,4 @@ -package ru.ulstu.activity.students.service; +package students; import org.junit.Before; import org.junit.Test; @@ -15,6 +15,7 @@ import ru.ulstu.activity.students.model.TaskDto; import ru.ulstu.activity.students.model.TaskFilterDto; import ru.ulstu.activity.students.repository.SchedulerRepository; import ru.ulstu.activity.students.repository.TaskRepository; +import ru.ulstu.activity.students.service.TaskService; import ru.ulstu.activity.tags.model.Tag; import ru.ulstu.activity.tags.service.TagService; import ru.ulstu.activity.timeline.service.EventService; -- 2.25.1 From 7a8456a0aa91d2d4081fc07ab7a006f67e42dd10 Mon Sep 17 00:00:00 2001 From: Anton Romanov Date: Mon, 8 Jul 2019 15:17:53 +0400 Subject: [PATCH 34/45] fix checkstyle --- src/main/java/ru/ulstu/activity/grant/service/KiasService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/ru/ulstu/activity/grant/service/KiasService.java b/src/main/java/ru/ulstu/activity/grant/service/KiasService.java index 66fc6a0..3b47d78 100644 --- a/src/main/java/ru/ulstu/activity/grant/service/KiasService.java +++ b/src/main/java/ru/ulstu/activity/grant/service/KiasService.java @@ -32,7 +32,7 @@ public class KiasService { public List getNewGrantsDto() throws ParseException, IOException { Integer leaderId = userService.findOneByLoginIgnoreCase("admin").getId(); List grants = new ArrayList<>(); - try (final WebClient webClient = new WebClient()) { + try (WebClient webClient = new WebClient()) { for (Integer year : generateGrantYears()) { final HtmlPage page = webClient.getPage(String.format(BASE_URL, CONTEST_STATUS_ID, CONTEST_TYPE, year)); grants.addAll(getKiasGrants(page)); -- 2.25.1 From 8a245584cae0669f0ccc0c4d678239c7c09faaa8 Mon Sep 17 00:00:00 2001 From: Anton Romanov Date: Mon, 8 Jul 2019 16:46:04 +0400 Subject: [PATCH 35/45] fix another controller --- .../activity/api/ActivityRepository.java | 6 + .../common/service/ActivityService.java | 28 +++- .../conference/service/ConferenceService.java | 5 - .../activity/grant/service/GrantService.java | 7 - .../activity/paper/service/PaperService.java | 7 - .../project/controller/ProjectController.java | 129 +++++------------- .../project/model/ProjectDashboardDto.java | 27 ++++ .../activity/project/model/ProjectDto.java | 37 +---- .../project/model/ProjectListDto.java | 27 ++++ .../project/repository/ProjectRepository.java | 10 +- .../service/ProjectNotificationService.java | 20 +++ .../project/service/ProjectService.java | 126 ++++++----------- src/test/java/project/ProjectServiceTest.java | 6 +- 13 files changed, 195 insertions(+), 240 deletions(-) create mode 100644 src/main/java/ru/ulstu/activity/project/model/ProjectDashboardDto.java create mode 100644 src/main/java/ru/ulstu/activity/project/model/ProjectListDto.java create mode 100644 src/main/java/ru/ulstu/activity/project/service/ProjectNotificationService.java diff --git a/src/main/java/ru/ulstu/activity/api/ActivityRepository.java b/src/main/java/ru/ulstu/activity/api/ActivityRepository.java index a4d6eca..58cda60 100644 --- a/src/main/java/ru/ulstu/activity/api/ActivityRepository.java +++ b/src/main/java/ru/ulstu/activity/api/ActivityRepository.java @@ -1,9 +1,15 @@ package ru.ulstu.activity.api; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; import org.springframework.data.repository.query.Param; public interface ActivityRepository { String findByNameAndNotId(@Param("name") String name, @Param("id") Integer id); T save(T t); + + T getById(Integer id); + + Page findAll(Pageable pageable); } diff --git a/src/main/java/ru/ulstu/activity/common/service/ActivityService.java b/src/main/java/ru/ulstu/activity/common/service/ActivityService.java index 0ff7844..6d08474 100644 --- a/src/main/java/ru/ulstu/activity/common/service/ActivityService.java +++ b/src/main/java/ru/ulstu/activity/common/service/ActivityService.java @@ -1,11 +1,13 @@ package ru.ulstu.activity.common.service; +import org.springframework.data.domain.Page; import org.springframework.transaction.annotation.Transactional; import ru.ulstu.activity.api.ActivityRepository; import ru.ulstu.activity.api.model.ActivityDto; import ru.ulstu.activity.api.model.ActivityListDto; import ru.ulstu.activity.common.model.AbstractActivity; import ru.ulstu.activity.ping.service.PingService; +import ru.ulstu.core.jpa.OffsetablePageRequest; import ru.ulstu.core.model.response.PageableItems; import java.io.IOException; @@ -37,6 +39,22 @@ public abstract class ActivityService findAll(int offset, int count); + + public PageableItems findAll(int offset, int count) { + final Page page = activityRepository.findAll(new OffsetablePageRequest(offset, count)); + return new PageableItems<>(page.getTotalElements(), page.getContent()); + } public PageableItems findAllDto(int offset, int count) { return convertPageable(findAll(offset, count), entity -> getActivityListDto(entity)); diff --git a/src/main/java/ru/ulstu/activity/conference/service/ConferenceService.java b/src/main/java/ru/ulstu/activity/conference/service/ConferenceService.java index e596d88..db910ed 100644 --- a/src/main/java/ru/ulstu/activity/conference/service/ConferenceService.java +++ b/src/main/java/ru/ulstu/activity/conference/service/ConferenceService.java @@ -71,11 +71,6 @@ public class ConferenceService extends ActivityService findAll(int offset, int count) { - final Page page = conferenceRepository.findAll(new OffsetablePageRequest(offset, count)); - return new PageableItems<>(page.getTotalElements(), page.getContent()); - } - public boolean save(ConferenceDto conferenceDto, Errors errors) throws IOException { conferenceDto.setTitle(conferenceDto.getTitle()); filterEmptyDeadlines(conferenceDto); diff --git a/src/main/java/ru/ulstu/activity/grant/service/GrantService.java b/src/main/java/ru/ulstu/activity/grant/service/GrantService.java index 4318a3f..949874f 100644 --- a/src/main/java/ru/ulstu/activity/grant/service/GrantService.java +++ b/src/main/java/ru/ulstu/activity/grant/service/GrantService.java @@ -20,7 +20,6 @@ import ru.ulstu.activity.paper.model.Paper; import ru.ulstu.activity.paper.model.PaperDto; import ru.ulstu.activity.paper.service.PaperService; import ru.ulstu.activity.ping.service.PingService; -import ru.ulstu.activity.project.model.ProjectDto; import ru.ulstu.activity.project.service.ProjectService; import ru.ulstu.activity.timeline.service.EventService; import ru.ulstu.core.jpa.OffsetablePageRequest; @@ -172,12 +171,6 @@ public class GrantService extends ActivityService return grant; } - - public void createProject(GrantDto grantDto) throws IOException { - grantDto.setProject( - new ProjectDto(projectService.save(new ProjectDto(grantDto.getTitle())))); - } - @Transactional public boolean delete(Integer grantId) { Grant grant = findById(grantId); diff --git a/src/main/java/ru/ulstu/activity/paper/service/PaperService.java b/src/main/java/ru/ulstu/activity/paper/service/PaperService.java index fb41587..d0f3a57 100644 --- a/src/main/java/ru/ulstu/activity/paper/service/PaperService.java +++ b/src/main/java/ru/ulstu/activity/paper/service/PaperService.java @@ -102,13 +102,6 @@ public class PaperService extends ActivityService return new PageableItems<>(activePapersPage.getTotalElements(), sortPapers(activePapersPage.getContent())); } - public Paper update(Paper paper) { - paperRepository.save(paper); - paperNotificationService.sendCreateNotification(paper, oldAuthors); - paperNotificationService.statusChangeNotification(paper, oldStatus); - return paper; - } - @Transactional public PaperDto update(PaperDto paperDto) { Paper paper = findById(paperDto.getId()); diff --git a/src/main/java/ru/ulstu/activity/project/controller/ProjectController.java b/src/main/java/ru/ulstu/activity/project/controller/ProjectController.java index 8bc38e9..baf0a9b 100644 --- a/src/main/java/ru/ulstu/activity/project/controller/ProjectController.java +++ b/src/main/java/ru/ulstu/activity/project/controller/ProjectController.java @@ -1,127 +1,68 @@ package ru.ulstu.activity.project.controller; -import org.springframework.stereotype.Controller; -import org.springframework.ui.ModelMap; -import org.springframework.validation.Errors; +import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.ResponseBody; -import ru.ulstu.activity.deadline.model.Deadline; -import ru.ulstu.activity.grant.model.GrantDto; -import ru.ulstu.activity.project.model.Project; +import org.springframework.web.bind.annotation.RestController; +import ru.ulstu.activity.api.ActivityController; +import ru.ulstu.activity.project.model.ProjectDashboardDto; import ru.ulstu.activity.project.model.ProjectDto; +import ru.ulstu.activity.project.model.ProjectListDto; import ru.ulstu.activity.project.service.ProjectService; -import ru.ulstu.user.model.User; -import springfox.documentation.annotations.ApiIgnore; +import ru.ulstu.configuration.Constants; +import ru.ulstu.core.model.response.PageableItems; +import ru.ulstu.core.model.response.Response; import javax.validation.Valid; -import java.io.IOException; -import java.util.List; -import java.util.stream.Collectors; -import static org.springframework.util.StringUtils.isEmpty; - -@Controller() -@RequestMapping(value = "/projects") -@ApiIgnore -public class ProjectController { +@RestController +@RequestMapping(Constants.API_1_0 + "projects") +public class ProjectController implements ActivityController { private final ProjectService projectService; public ProjectController(ProjectService projectService) { this.projectService = projectService; } - @GetMapping("/dashboard") - public void getDashboard(ModelMap modelMap) { - modelMap.put("projects", projectService.findAllDto()); - } - - @GetMapping("/projects") - public void getProjects(ModelMap modelMap) { - modelMap.put("projects", projectService.findAllDto()); - } - - @GetMapping("/project") - public void getProject(ModelMap modelMap, @RequestParam(value = "id") Integer id) { - if (id != null && id > 0) { - ProjectDto projectDto = projectService.findOneDto(id); - attachGrant(projectDto); - modelMap.put("projectDto", projectService.findOneDto(id)); - } else { - modelMap.put("projectDto", new ProjectDto()); - } - } - - @ModelAttribute("allStatuses") - public List getProjectStatuses() { - return projectService.getProjectStatuses(); - } - - @PostMapping(value = "/project", params = "save") - public String save(@Valid ProjectDto projectDto, Errors errors) throws IOException { - filterEmptyDeadlines(projectDto); - if (projectDto.getDeadlines().isEmpty()) { - errors.rejectValue("deadlines", "errorCode", "Не может быть пустым"); - } - if (errors.hasErrors()) { - return "/projects/project"; - } - projectService.save(projectDto); - return String.format("redirect:%s", "/projects/projects"); - } - - @PostMapping(value = "/project", params = "attachGrant") - public String attachGrant(ProjectDto projectDto) { - projectService.attachGrant(projectDto); - return "/projects/project"; - } - - @PostMapping(value = "/project", params = "addDeadline") - public String addDeadline(@Valid ProjectDto projectDto, Errors errors) { - filterEmptyDeadlines(projectDto); - if (errors.hasErrors()) { - return "/projects/project"; - } - projectDto.getDeadlines().add(new Deadline()); - return "/projects/project"; + @GetMapping("list") + public Response> getList(@RequestParam(value = "offset", defaultValue = "0") int offset, + @RequestParam(value = "count", defaultValue = "10") int count) { + return new Response<>(projectService.findAllDto(offset, count)); } - @PostMapping(value = "/project", params = "removeDeadline") - public String removeDeadline(ProjectDto projectDto, - @RequestParam(value = "removeDeadline") Integer deadlineId) { - projectService.removeDeadline(projectDto, deadlineId); - return "/projects/project"; + @GetMapping("dashboard") + public Response> getDashboard(@RequestParam(value = "offset", defaultValue = "0") int offset, + @RequestParam(value = "count", defaultValue = "10") int count) { + return new Response<>(projectService.findAllActiveDto(offset, count)); } - @GetMapping("/delete/{project-id}") - public String delete(@PathVariable("project-id") Integer projectId) throws IOException { - projectService.delete(projectId); - return String.format("redirect:%s", "/projects/projects"); + @GetMapping("{project-id}") + public Response get(@PathVariable("project-id") Integer projectId) { + return new Response<>(projectService.findProjectById(projectId)); } - @ModelAttribute("allExecutors") - public List getAllExecutors(ProjectDto projectDto) { - return projectService.getProjectExecutors(projectDto); + @PostMapping + public Response create(@RequestBody @Valid ProjectDto projectDto) { + return new Response<>(projectService.create(projectDto)); } - @ModelAttribute("allGrants") - public List getAllGrants() { - return projectService.getAllGrants(); + @PutMapping + public Response update(@RequestBody @Valid ProjectDto projectDto) { + return new Response<>(projectService.update(projectDto)); } - private void filterEmptyDeadlines(ProjectDto projectDto) { - projectDto.setDeadlines(projectDto.getDeadlines().stream() - .filter(dto -> dto.getDate() != null || !isEmpty(dto.getDescription())) - .collect(Collectors.toList())); + @DeleteMapping("/{project-id}") + public Response delete(@PathVariable("project-id") Integer projectId) { + return new Response<>(projectService.delete(projectId)); } - @ResponseBody - @PostMapping(value = "/ping") - public void ping(@RequestParam("projectId") int projectId) throws IOException { + @PostMapping("ping/{project-id}") + public void ping(@PathVariable("project-id") int projectId) { projectService.ping(projectId); } } diff --git a/src/main/java/ru/ulstu/activity/project/model/ProjectDashboardDto.java b/src/main/java/ru/ulstu/activity/project/model/ProjectDashboardDto.java new file mode 100644 index 0000000..ce3c46b --- /dev/null +++ b/src/main/java/ru/ulstu/activity/project/model/ProjectDashboardDto.java @@ -0,0 +1,27 @@ +package ru.ulstu.activity.project.model; + +import ru.ulstu.activity.api.model.ActivityDashboardDto; +import ru.ulstu.activity.common.model.ScienceGroupMemberDto; + +import java.util.List; + +import static ru.ulstu.core.util.StreamApiUtils.convert; + +public class ProjectDashboardDto extends ActivityDashboardDto { + private final Project.ProjectStatus status; + private final List executors; + + public ProjectDashboardDto(Project project) { + super(project.getId(), project.getTitle()); + this.status = project.getStatus(); + this.executors = convert(project.getExecutors(), ScienceGroupMemberDto::new); + } + + public Project.ProjectStatus getStatus() { + return status; + } + + public List getExecutors() { + return executors; + } +} diff --git a/src/main/java/ru/ulstu/activity/project/model/ProjectDto.java b/src/main/java/ru/ulstu/activity/project/model/ProjectDto.java index 59af93d..e30547f 100644 --- a/src/main/java/ru/ulstu/activity/project/model/ProjectDto.java +++ b/src/main/java/ru/ulstu/activity/project/model/ProjectDto.java @@ -2,7 +2,7 @@ package ru.ulstu.activity.project.model; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; -import org.thymeleaf.util.StringUtils; +import ru.ulstu.activity.api.model.ActivityDto; import ru.ulstu.activity.deadline.model.Deadline; import ru.ulstu.activity.file.model.FileDataDto; import ru.ulstu.activity.grant.model.GrantDto; @@ -14,13 +14,10 @@ import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; -import java.util.stream.Collectors; import static ru.ulstu.core.util.StreamApiUtils.convert; -public class ProjectDto { - private Integer id; - +public class ProjectDto extends ActivityDto { @NotEmpty private String title; private Project.ProjectStatus status; @@ -35,15 +32,6 @@ public class ProjectDto { private List grantIds; private List grants; - private final static int MAX_EXECUTORS_LENGTH = 40; - - public ProjectDto() { - } - - public ProjectDto(String title) { - this.title = title; - } - @JsonCreator public ProjectDto(@JsonProperty("id") Integer id, @JsonProperty("title") String title, @@ -57,7 +45,7 @@ public class ProjectDto { @JsonProperty("executors") List executors, @JsonProperty("grantIds") List grantIds, @JsonProperty("grants") List grants) { - this.id = id; + super(id); this.title = title; this.status = status; this.description = description; @@ -73,8 +61,8 @@ public class ProjectDto { public ProjectDto(Project project) { - Set users = new HashSet(project.getExecutors()); - this.id = project.getId(); + super(project.getId()); + Set users = new HashSet<>(project.getExecutors()); this.title = project.getTitle(); this.status = project.getStatus(); this.description = project.getDescription(); @@ -88,14 +76,6 @@ public class ProjectDto { this.grants = convert(project.getGrants(), GrantDto::new); } - public Integer getId() { - return id; - } - - public void setId(Integer id) { - this.id = id; - } - public String getTitle() { return title; } @@ -176,13 +156,6 @@ public class ProjectDto { this.executors = executors; } - public String getExecutorsString() { - return StringUtils.abbreviate(executors - .stream() - .map(executor -> executor.getLastName()) - .collect(Collectors.joining(", ")), MAX_EXECUTORS_LENGTH); - } - public List getGrantIds() { return grantIds; } diff --git a/src/main/java/ru/ulstu/activity/project/model/ProjectListDto.java b/src/main/java/ru/ulstu/activity/project/model/ProjectListDto.java new file mode 100644 index 0000000..b1cd440 --- /dev/null +++ b/src/main/java/ru/ulstu/activity/project/model/ProjectListDto.java @@ -0,0 +1,27 @@ +package ru.ulstu.activity.project.model; + +import ru.ulstu.activity.api.model.ActivityListDto; +import ru.ulstu.activity.common.model.ScienceGroupMemberDto; + +import java.util.List; + +import static ru.ulstu.core.util.StreamApiUtils.convert; + +public class ProjectListDto extends ActivityListDto { + private final Project.ProjectStatus status; + private final List executors; + + public ProjectListDto(Project project) { + super(project.getId(), project.getTitle()); + this.status = project.getStatus(); + this.executors = convert(project.getExecutors(), ScienceGroupMemberDto::new); + } + + public Project.ProjectStatus getStatus() { + return status; + } + + public List getExecutors() { + return executors; + } +} diff --git a/src/main/java/ru/ulstu/activity/project/repository/ProjectRepository.java b/src/main/java/ru/ulstu/activity/project/repository/ProjectRepository.java index 059cd3c..d74b188 100644 --- a/src/main/java/ru/ulstu/activity/project/repository/ProjectRepository.java +++ b/src/main/java/ru/ulstu/activity/project/repository/ProjectRepository.java @@ -1,8 +1,14 @@ package ru.ulstu.activity.project.repository; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; +import ru.ulstu.activity.api.ActivityRepository; import ru.ulstu.activity.project.model.Project; -public interface ProjectRepository extends JpaRepository { - +public interface ProjectRepository extends JpaRepository, ActivityRepository { + @Query("SELECT p FROM Project p WHERE p.status NOT IN (:statuses)") + Page findAllWithoutStatuses(Pageable pageable, @Param("statuses") Project.ProjectStatus... statuses); } diff --git a/src/main/java/ru/ulstu/activity/project/service/ProjectNotificationService.java b/src/main/java/ru/ulstu/activity/project/service/ProjectNotificationService.java new file mode 100644 index 0000000..3bbf821 --- /dev/null +++ b/src/main/java/ru/ulstu/activity/project/service/ProjectNotificationService.java @@ -0,0 +1,20 @@ +package ru.ulstu.activity.project.service; + +import org.springframework.stereotype.Service; +import ru.ulstu.activity.common.service.ActivityNotificationService; +import ru.ulstu.activity.project.model.Project; +import ru.ulstu.user.service.MailService; + +@Service +public class ProjectNotificationService extends ActivityNotificationService { + + private final MailService mailService; + + public ProjectNotificationService(MailService mailService) { + this.mailService = mailService; + } + + public void sendCreateNotification(Project project) { + throw new RuntimeException("not implemented yet"); + } +} diff --git a/src/main/java/ru/ulstu/activity/project/service/ProjectService.java b/src/main/java/ru/ulstu/activity/project/service/ProjectService.java index e9d6316..34e99a4 100644 --- a/src/main/java/ru/ulstu/activity/project/service/ProjectService.java +++ b/src/main/java/ru/ulstu/activity/project/service/ProjectService.java @@ -1,100 +1,68 @@ package ru.ulstu.activity.project.service; +import org.springframework.data.domain.Page; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import org.thymeleaf.util.StringUtils; +import ru.ulstu.activity.common.service.ActivityService; import ru.ulstu.activity.deadline.service.DeadlineService; -import ru.ulstu.activity.file.model.FileDataDto; import ru.ulstu.activity.file.service.FileService; -import ru.ulstu.activity.grant.model.GrantDto; -import ru.ulstu.activity.grant.repository.GrantRepository; +import ru.ulstu.activity.grant.service.GrantService; import ru.ulstu.activity.ping.service.PingService; import ru.ulstu.activity.project.model.Project; +import ru.ulstu.activity.project.model.ProjectDashboardDto; import ru.ulstu.activity.project.model.ProjectDto; +import ru.ulstu.activity.project.model.ProjectListDto; import ru.ulstu.activity.project.repository.ProjectRepository; -import ru.ulstu.activity.timeline.service.EventService; +import ru.ulstu.core.jpa.OffsetablePageRequest; +import ru.ulstu.core.model.response.PageableItems; import ru.ulstu.user.model.User; import ru.ulstu.user.service.UserService; import java.io.IOException; -import java.util.Arrays; -import java.util.Collections; import java.util.List; import static java.util.stream.Collectors.toList; -import static org.springframework.util.ObjectUtils.isEmpty; +import static ru.ulstu.activity.project.model.Project.ProjectStatus.CLOSED; +import static ru.ulstu.activity.project.model.Project.ProjectStatus.FAILED; import static ru.ulstu.activity.project.model.Project.ProjectStatus.TECHNICAL_TASK; -import static ru.ulstu.core.util.StreamApiUtils.convert; +import static ru.ulstu.core.util.StreamApiUtils.convertPageable; @Service -public class ProjectService { - private final static int MAX_DISPLAY_SIZE = 40; - +public class ProjectService extends ActivityService { private final ProjectRepository projectRepository; private final DeadlineService deadlineService; - private final GrantRepository grantRepository; + private final GrantService grantService; private final FileService fileService; - private final EventService eventService; private final UserService userService; private final PingService pingService; public ProjectService(ProjectRepository projectRepository, + ProjectNotificationService projectNotificationService, DeadlineService deadlineService, - GrantRepository grantRepository, + GrantService grantService, FileService fileService, - EventService eventService, UserService userService, PingService pingService) { + super(projectRepository, projectNotificationService, pingService); this.projectRepository = projectRepository; this.deadlineService = deadlineService; - this.grantRepository = grantRepository; + this.grantService = grantService; this.fileService = fileService; - this.eventService = eventService; this.userService = userService; this.pingService = pingService; } - public List findAll() { - return projectRepository.findAll(); - } - - public List findAllDto() { - List projects = convert(findAll(), ProjectDto::new); - projects.forEach(projectDto -> projectDto.setTitle(StringUtils.abbreviate(projectDto.getTitle(), MAX_DISPLAY_SIZE))); - return projects; - } - - public ProjectDto findOneDto(Integer id) { - return new ProjectDto(projectRepository.getOne(id)); - } - - public List getProjectStatuses() { - return Arrays.asList(Project.ProjectStatus.values()); + public PageableItems findAllActiveDto(int offset, int count) { + return convertPageable(findAllActive(offset, count), ProjectDashboardDto::new); } - @Transactional - public Project create(ProjectDto projectDto) throws IOException { - Project newProject = copyFromDto(new Project(), projectDto); - newProject = projectRepository.save(newProject); - eventService.createFromObject(newProject, Collections.emptyList(), false, "проекта"); - return newProject; + private PageableItems findAllActive(int offset, int count) { + Page activeProjectPage = projectRepository.findAllWithoutStatuses(new OffsetablePageRequest(offset, count), CLOSED, FAILED); + return new PageableItems<>(activeProjectPage.getTotalElements(), activeProjectPage.getContent()); } @Transactional - private Project update(ProjectDto projectDto) throws IOException { - Project project = projectRepository.getOne(projectDto.getId()); - projectRepository.save(copyFromDto(project, projectDto)); - eventService.updateProjectDeadlines(project); - for (FileDataDto file : projectDto.getFiles().stream() - .filter(f -> f.isDeleted() && f.getId() != null) - .collect(toList())) { - fileService.delete(file.getId()); - } - return project; - } - - @Transactional - public boolean delete(Integer projectId) throws IOException { + public boolean delete(Integer projectId) { if (projectRepository.existsById(projectId)) { Project project = projectRepository.getOne(projectId); projectRepository.delete(project); @@ -103,12 +71,12 @@ public class ProjectService { return false; } - private Project copyFromDto(Project project, ProjectDto projectDto) throws IOException { + protected Project copyFromDto(Project project, ProjectDto projectDto) throws IOException { project.setDescription(projectDto.getDescription()); project.setStatus(projectDto.getStatus() == null ? TECHNICAL_TASK : projectDto.getStatus()); project.setTitle(projectDto.getTitle()); if (projectDto.getGrant() != null && projectDto.getGrant().getId() != null) { - project.setGrant(grantRepository.getOne(projectDto.getGrant().getId())); + project.setGrant(grantService.findById(projectDto.getGrant().getId())); } project.setRepository(projectDto.getRepository()); project.setDeadlines(deadlineService.saveOrCreate(projectDto.getDeadlines())); @@ -117,17 +85,24 @@ public class ProjectService { .collect(toList()))); project.getGrants().clear(); if (projectDto.getGrantIds() != null && !projectDto.getGrantIds().isEmpty()) { - projectDto.getGrantIds().forEach(grantIds -> project.getGrants().add(grantRepository.findGrantById(grantIds))); + projectDto.getGrantIds().forEach(grantIds -> project.getGrants().add(grantService.findById(grantIds))); } return project; } - public Project save(ProjectDto projectDto) throws IOException { - if (isEmpty(projectDto.getId())) { - return create(projectDto); - } else { - return update(projectDto); - } + @Override + protected ProjectListDto getActivityListDto(Project entity) { + return new ProjectListDto(entity); + } + + @Override + protected Project getNewActivity() { + return new Project(); + } + + @Override + protected ProjectDto getNewActivityDto(Project entity) { + return new ProjectDto(entity); } public ProjectDto removeDeadline(ProjectDto projectDto, Integer deadlineId) { @@ -146,26 +121,7 @@ public class ProjectService { return userService.findAll(); } - @Transactional - public void ping(int projectId) { - pingService.addPing(findById(projectId)); - } - - public List getAllGrants() { - return convert(grantRepository.findAll(), GrantDto::new); + public ProjectDto findProjectById(Integer projectId) { + return getNewActivityDto(findById(projectId)); } - - private List getProjectGrants(List grantIds) { - return convert(grantRepository.findAllById(grantIds), GrantDto::new); - } - - public void attachGrant(ProjectDto projectDto) { - if (!projectDto.getGrantIds().isEmpty()) { - projectDto.getGrants().clear(); - projectDto.setGrants(getProjectGrants(projectDto.getGrantIds())); - } else { - projectDto.getGrants().clear(); - } - } - -} +} \ No newline at end of file diff --git a/src/test/java/project/ProjectServiceTest.java b/src/test/java/project/ProjectServiceTest.java index 2f59c2f..269a855 100644 --- a/src/test/java/project/ProjectServiceTest.java +++ b/src/test/java/project/ProjectServiceTest.java @@ -93,7 +93,7 @@ public class ProjectServiceTest { @Test public void findAll() { when(projectRepository.findAll()).thenReturn(projects); - assertEquals(projects, projectService.findAll()); + assertEquals(projects, projectService.findAll(0, 100).getItems()); } @Test @@ -137,8 +137,8 @@ public class ProjectServiceTest { } @Test - public void removeDeadline() throws IOException { - ProjectDto newProjectDto = new ProjectDto(); + public void removeDeadline() { + ProjectDto newProjectDto = new ProjectDto(null); newProjectDto.getRemovedDeadlineIds().add(INDEX); projectDto.getDeadlines().add(deadline); ProjectDto result = projectService.removeDeadline(projectDto, INDEX); -- 2.25.1 From ad989c6deae8753b97aa95692b57d986d2b313e7 Mon Sep 17 00:00:00 2001 From: Anton Romanov Date: Sat, 20 Jul 2019 11:14:03 +0400 Subject: [PATCH 36/45] complete refactor --- .../activity/common/model/EventSource.java | 2 + .../common/service/ActivityService.java | 10 +- .../activity/conference/model/Conference.java | 5 + .../ConferenceRepository.java | 4 +- .../conference/service/ConferenceService.java | 20 +-- .../DeadlineRepository.java | 4 +- .../deadline/service/DeadlineService.java | 3 +- .../file/repostory/FileRepository.java | 7 - .../activity/file/service/FileRepository.java | 7 + .../activity/file/service/FileService.java | 5 +- .../ru/ulstu/activity/grant/model/Grant.java | 5 + .../GrantRepository.java | 4 +- .../activity/grant/service/GrantService.java | 36 +--- .../ru/ulstu/activity/paper/model/Paper.java | 5 + .../PaperRepository.java | 4 +- .../activity/paper/service/PaperService.java | 9 +- .../ReferenceRepository.java | 2 +- .../PingRepository.java | 4 +- .../activity/ping/service/PingScheduler.java | 3 +- .../activity/ping/service/PingService.java | 1 - .../ulstu/activity/project/model/Project.java | 5 + .../activity/project/model/ProjectDto.java | 11 -- .../ProjectRepository.java | 7 +- .../project/service/ProjectService.java | 18 +- .../ulstu/activity/students/model/Task.java | 5 + .../SchedulerRepository.java | 4 +- .../students/service/SchedulerService.java | 5 +- .../TaskRepository.java | 4 +- .../students/service/TaskService.java | 19 +-- .../TagRepository.java | 4 +- .../activity/tags/service/TagService.java | 10 +- .../timeline/controller/EventController.java | 43 +++-- .../ulstu/activity/timeline/model/Event.java | 37 ---- .../activity/timeline/model/EventDto.java | 141 +--------------- .../activity/timeline/model/PeriodEvent.java | 26 --- .../activity/timeline/model/Timeline.java | 26 --- .../activity/timeline/model/TimelineDto.java | 33 ---- .../repository/TimelineRepository.java | 7 - .../EventRepository.java | 19 ++- .../timeline/service/EventScheduler.java | 77 --------- .../timeline/service/EventService.java | 158 ++++-------------- .../timeline/service/TimelineService.java | 60 ------- 42 files changed, 148 insertions(+), 711 deletions(-) rename src/main/java/ru/ulstu/activity/conference/{repository => service}/ConferenceRepository.java (91%) rename src/main/java/ru/ulstu/activity/deadline/{repository => service}/DeadlineRepository.java (77%) delete mode 100644 src/main/java/ru/ulstu/activity/file/repostory/FileRepository.java create mode 100644 src/main/java/ru/ulstu/activity/file/service/FileRepository.java rename src/main/java/ru/ulstu/activity/grant/{repository => service}/GrantRepository.java (85%) rename src/main/java/ru/ulstu/activity/paper/{repository => service}/PaperRepository.java (90%) rename src/main/java/ru/ulstu/activity/paper/{repository => service}/ReferenceRepository.java (94%) rename src/main/java/ru/ulstu/activity/ping/{repository => service}/PingRepository.java (89%) rename src/main/java/ru/ulstu/activity/project/{repository => service}/ProjectRepository.java (62%) rename src/main/java/ru/ulstu/activity/students/{repository => service}/SchedulerRepository.java (61%) rename src/main/java/ru/ulstu/activity/students/{repository => service}/TaskRepository.java (90%) rename src/main/java/ru/ulstu/activity/tags/{repository => service}/TagRepository.java (74%) delete mode 100644 src/main/java/ru/ulstu/activity/timeline/model/PeriodEvent.java delete mode 100644 src/main/java/ru/ulstu/activity/timeline/model/Timeline.java delete mode 100644 src/main/java/ru/ulstu/activity/timeline/model/TimelineDto.java delete mode 100644 src/main/java/ru/ulstu/activity/timeline/repository/TimelineRepository.java rename src/main/java/ru/ulstu/activity/timeline/{repository => service}/EventRepository.java (52%) delete mode 100644 src/main/java/ru/ulstu/activity/timeline/service/EventScheduler.java delete mode 100644 src/main/java/ru/ulstu/activity/timeline/service/TimelineService.java diff --git a/src/main/java/ru/ulstu/activity/common/model/EventSource.java b/src/main/java/ru/ulstu/activity/common/model/EventSource.java index ffe8f4d..3c1efe0 100644 --- a/src/main/java/ru/ulstu/activity/common/model/EventSource.java +++ b/src/main/java/ru/ulstu/activity/common/model/EventSource.java @@ -14,4 +14,6 @@ public interface EventSource { List getRecipients(); void addObjectToEvent(Event event); + + String getSuffix(); } diff --git a/src/main/java/ru/ulstu/activity/common/service/ActivityService.java b/src/main/java/ru/ulstu/activity/common/service/ActivityService.java index 6d08474..eb3e3f8 100644 --- a/src/main/java/ru/ulstu/activity/common/service/ActivityService.java +++ b/src/main/java/ru/ulstu/activity/common/service/ActivityService.java @@ -6,7 +6,9 @@ import ru.ulstu.activity.api.ActivityRepository; import ru.ulstu.activity.api.model.ActivityDto; import ru.ulstu.activity.api.model.ActivityListDto; import ru.ulstu.activity.common.model.AbstractActivity; +import ru.ulstu.activity.common.model.EventSource; import ru.ulstu.activity.ping.service.PingService; +import ru.ulstu.activity.timeline.service.EventService; import ru.ulstu.core.jpa.OffsetablePageRequest; import ru.ulstu.core.model.response.PageableItems; @@ -19,13 +21,16 @@ public abstract class ActivityService activityRepository; protected final ActivityNotificationService activityNotificationService; protected final PingService pingService; + protected final EventService eventService; protected ActivityService(ActivityRepository activityRepository, ActivityNotificationService activityNotificationService, - PingService pingService) { + PingService pingService, + EventService eventService) { this.activityRepository = activityRepository; this.activityNotificationService = activityNotificationService; this.pingService = pingService; + this.eventService = eventService; } @Transactional @@ -41,6 +46,8 @@ public abstract class ActivityService, ActivityRepository { +interface ConferenceRepository extends JpaRepository, ActivityRepository { @Query("SELECT c FROM Conference c LEFT JOIN c.users u WHERE (:user IS NULL OR u.user = :user) " + "AND (YEAR(c.beginDate) = :year OR :year IS NULL) ORDER BY begin_date DESC") List findByUserAndYear(@Param("user") User user, @Param("year") Integer year); diff --git a/src/main/java/ru/ulstu/activity/conference/service/ConferenceService.java b/src/main/java/ru/ulstu/activity/conference/service/ConferenceService.java index db910ed..a280439 100644 --- a/src/main/java/ru/ulstu/activity/conference/service/ConferenceService.java +++ b/src/main/java/ru/ulstu/activity/conference/service/ConferenceService.java @@ -11,7 +11,6 @@ import ru.ulstu.activity.conference.model.ConferenceDto; import ru.ulstu.activity.conference.model.ConferenceFilterDto; import ru.ulstu.activity.conference.model.ConferenceListDto; import ru.ulstu.activity.conference.model.ConferenceUser; -import ru.ulstu.activity.conference.repository.ConferenceRepository; import ru.ulstu.activity.deadline.model.Deadline; import ru.ulstu.activity.deadline.service.DeadlineService; import ru.ulstu.activity.paper.model.Paper; @@ -53,7 +52,7 @@ public class ConferenceService extends ActivityService oldDeadlines = conference.getDeadlines().stream() - .map(this::copyDeadline) - .collect(Collectors.toList()); - Date oldBeginDate = conference.getBeginDate(); - Date oldEndDate = conference.getEndDate(); - eventService.updateConferenceDeadlines(conference); - sendNotificationAfterUpdateDeadlines(conference, oldDeadlines); - if (!conference.getBeginDate().equals(oldBeginDate) || !conference.getEndDate().equals(oldEndDate)) { - conferenceNotificationService.updateConferencesDatesNotification(conference, oldBeginDate, oldEndDate); - } - return conference; - } - @Transactional public boolean delete(Integer conferenceId) { if (conferenceRepository.existsById(conferenceId)) { - eventService.removeConferencesEvent(conferenceRepository.getOne(conferenceId)); conferenceRepository.deleteById(conferenceId); return true; } diff --git a/src/main/java/ru/ulstu/activity/deadline/repository/DeadlineRepository.java b/src/main/java/ru/ulstu/activity/deadline/service/DeadlineRepository.java similarity index 77% rename from src/main/java/ru/ulstu/activity/deadline/repository/DeadlineRepository.java rename to src/main/java/ru/ulstu/activity/deadline/service/DeadlineRepository.java index 87829f6..128fe0b 100644 --- a/src/main/java/ru/ulstu/activity/deadline/repository/DeadlineRepository.java +++ b/src/main/java/ru/ulstu/activity/deadline/service/DeadlineRepository.java @@ -1,4 +1,4 @@ -package ru.ulstu.activity.deadline.repository; +package ru.ulstu.activity.deadline.service; import org.springframework.data.jpa.repository.JpaRepository; @@ -8,7 +8,7 @@ import ru.ulstu.activity.deadline.model.Deadline; import java.util.Date; -public interface DeadlineRepository extends JpaRepository { +interface DeadlineRepository extends JpaRepository { @Query("SELECT d.date FROM Grant g JOIN g.deadlines d WHERE (g.id = :id) AND (d.date = :date)") Date findByGrantIdAndDate(@Param("id") Integer grantId, @Param("date") Date date); diff --git a/src/main/java/ru/ulstu/activity/deadline/service/DeadlineService.java b/src/main/java/ru/ulstu/activity/deadline/service/DeadlineService.java index a3488e8..b655985 100644 --- a/src/main/java/ru/ulstu/activity/deadline/service/DeadlineService.java +++ b/src/main/java/ru/ulstu/activity/deadline/service/DeadlineService.java @@ -3,7 +3,6 @@ package ru.ulstu.activity.deadline.service; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import ru.ulstu.activity.deadline.model.Deadline; -import ru.ulstu.activity.deadline.repository.DeadlineRepository; import java.util.Date; import java.util.List; @@ -26,7 +25,7 @@ public class DeadlineService { } @Transactional - private Deadline update(Deadline deadline) { + public Deadline update(Deadline deadline) { Deadline updateDeadline = deadlineRepository.getOne(deadline.getId()); updateDeadline.setDate(deadline.getDate()); updateDeadline.setDescription(deadline.getDescription()); diff --git a/src/main/java/ru/ulstu/activity/file/repostory/FileRepository.java b/src/main/java/ru/ulstu/activity/file/repostory/FileRepository.java deleted file mode 100644 index 9738a6d..0000000 --- a/src/main/java/ru/ulstu/activity/file/repostory/FileRepository.java +++ /dev/null @@ -1,7 +0,0 @@ -package ru.ulstu.activity.file.repostory; - -import org.springframework.data.jpa.repository.JpaRepository; -import ru.ulstu.activity.file.model.FileData; - -public interface FileRepository extends JpaRepository { -} diff --git a/src/main/java/ru/ulstu/activity/file/service/FileRepository.java b/src/main/java/ru/ulstu/activity/file/service/FileRepository.java new file mode 100644 index 0000000..b1e91ae --- /dev/null +++ b/src/main/java/ru/ulstu/activity/file/service/FileRepository.java @@ -0,0 +1,7 @@ +package ru.ulstu.activity.file.service; + +import org.springframework.data.jpa.repository.JpaRepository; +import ru.ulstu.activity.file.model.FileData; + +interface FileRepository extends JpaRepository { +} diff --git a/src/main/java/ru/ulstu/activity/file/service/FileService.java b/src/main/java/ru/ulstu/activity/file/service/FileService.java index d071ddf..e20a48b 100644 --- a/src/main/java/ru/ulstu/activity/file/service/FileService.java +++ b/src/main/java/ru/ulstu/activity/file/service/FileService.java @@ -5,7 +5,6 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.web.multipart.MultipartFile; import ru.ulstu.activity.file.model.FileData; import ru.ulstu.activity.file.model.FileDataDto; -import ru.ulstu.activity.file.repostory.FileRepository; import ru.ulstu.activity.paper.model.PaperDto; import java.io.BufferedWriter; @@ -97,13 +96,13 @@ public class FileService { } @Transactional - private FileData update(FileDataDto fileDataDto) { + public FileData update(FileDataDto fileDataDto) { FileData file = fileRepository.getOne(fileDataDto.getId()); return fileRepository.save(copyFromDto(file, fileDataDto)); } @Transactional - private FileData create(FileDataDto fileDataDto) throws IOException { + public FileData create(FileDataDto fileDataDto) throws IOException { FileData newFile = createFileFromTmp(fileDataDto.getTmpFileName()); copyFromDto(newFile, fileDataDto); return fileRepository.save(newFile); diff --git a/src/main/java/ru/ulstu/activity/grant/model/Grant.java b/src/main/java/ru/ulstu/activity/grant/model/Grant.java index 1471eee..9d12b3a 100644 --- a/src/main/java/ru/ulstu/activity/grant/model/Grant.java +++ b/src/main/java/ru/ulstu/activity/grant/model/Grant.java @@ -146,6 +146,11 @@ public class Grant extends AbstractActivity implements EventSource { return authors != null ? new ArrayList<>(authors) : Collections.emptyList(); } + @Override + public String getSuffix() { + return "гранта"; + } + @Override public void addObjectToEvent(Event event) { event.setGrant(this); diff --git a/src/main/java/ru/ulstu/activity/grant/repository/GrantRepository.java b/src/main/java/ru/ulstu/activity/grant/service/GrantRepository.java similarity index 85% rename from src/main/java/ru/ulstu/activity/grant/repository/GrantRepository.java rename to src/main/java/ru/ulstu/activity/grant/service/GrantRepository.java index 3b7edfe..cfc84aa 100644 --- a/src/main/java/ru/ulstu/activity/grant/repository/GrantRepository.java +++ b/src/main/java/ru/ulstu/activity/grant/service/GrantRepository.java @@ -1,4 +1,4 @@ -package ru.ulstu.activity.grant.repository; +package ru.ulstu.activity.grant.service; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; @@ -10,7 +10,7 @@ import ru.ulstu.activity.grant.model.Grant; import java.util.List; -public interface GrantRepository extends JpaRepository, ActivityRepository { +interface GrantRepository extends JpaRepository, ActivityRepository { List findByStatus(Grant.GrantStatus status); diff --git a/src/main/java/ru/ulstu/activity/grant/service/GrantService.java b/src/main/java/ru/ulstu/activity/grant/service/GrantService.java index 949874f..596d61e 100644 --- a/src/main/java/ru/ulstu/activity/grant/service/GrantService.java +++ b/src/main/java/ru/ulstu/activity/grant/service/GrantService.java @@ -15,7 +15,6 @@ import ru.ulstu.activity.grant.model.Grant; import ru.ulstu.activity.grant.model.GrantDashboardDto; import ru.ulstu.activity.grant.model.GrantDto; import ru.ulstu.activity.grant.model.GrantListDto; -import ru.ulstu.activity.grant.repository.GrantRepository; import ru.ulstu.activity.paper.model.Paper; import ru.ulstu.activity.paper.model.PaperDto; import ru.ulstu.activity.paper.service.PaperService; @@ -33,9 +32,7 @@ import java.text.ParseException; import java.util.Arrays; import java.util.Collections; import java.util.Date; -import java.util.HashSet; import java.util.List; -import java.util.Set; import java.util.stream.Collectors; import static java.util.stream.Collectors.toList; @@ -68,7 +65,7 @@ public class GrantService extends ActivityService GrantNotificationService grantNotificationService, KiasService kiasService, PingService pingService) { - super(grantRepository, grantNotificationService, pingService); + super(grantRepository, grantNotificationService, pingService, eventService); this.grantRepository = grantRepository; this.kiasService = kiasService; this.fileService = fileService; @@ -106,15 +103,6 @@ public class GrantService extends ActivityService return new GrantDto(entity); } - @Transactional - @Override - public Grant create(Grant grant) { - grant = grantRepository.save(grant); - eventService.createFromObject(grant, Collections.emptyList(), false, "гранта"); - grantNotificationService.sendCreateNotification(grant); - return grant; - } - @Transactional @Override public GrantDto update(GrantDto grantDto) { @@ -122,28 +110,6 @@ public class GrantService extends ActivityService return new GrantDto(update(grant)); } - @Transactional - @Override - public Grant update(Grant grant) { - Set oldAuthors = new HashSet<>(grant.getAuthors()); - User oldLeader = grant.getLeader(); - grant.getAuthors().forEach(author -> { - if (!oldAuthors.contains(author)) { - grantNotificationService.sendAuthorsChangeNotification(grant, oldAuthors); - } - }); - oldAuthors.forEach(oldAuthor -> { - if (!grant.getAuthors().contains(oldAuthor)) { - grantNotificationService.sendAuthorsChangeNotification(grant, oldAuthors); - } - }); - if (grant.getLeader() != oldLeader) { - grantNotificationService.sendLeaderChangeNotification(grant, oldLeader); - } - eventService.updateGrantDeadlines(grant); - return grant; - } - protected Grant copyFromDto(Grant grant, GrantDto grantDto) throws IOException { grant.setComment(grantDto.getComment()); grant.setStatus(grantDto.getStatus() == null ? APPLICATION : grantDto.getStatus()); diff --git a/src/main/java/ru/ulstu/activity/paper/model/Paper.java b/src/main/java/ru/ulstu/activity/paper/model/Paper.java index e7a8a65..49f083f 100644 --- a/src/main/java/ru/ulstu/activity/paper/model/Paper.java +++ b/src/main/java/ru/ulstu/activity/paper/model/Paper.java @@ -322,4 +322,9 @@ public class Paper extends AbstractActivity implements EventSource { public int hashCode() { return Objects.hash(super.hashCode(), title, status, type, createDate, updateDate, deadlines, comment, url, locked, events, files, authors, latexText, conferences, grants); } + + @Override + public String getSuffix() { + return "статьи"; + } } diff --git a/src/main/java/ru/ulstu/activity/paper/repository/PaperRepository.java b/src/main/java/ru/ulstu/activity/paper/service/PaperRepository.java similarity index 90% rename from src/main/java/ru/ulstu/activity/paper/repository/PaperRepository.java rename to src/main/java/ru/ulstu/activity/paper/service/PaperRepository.java index fee202a..14b25bf 100644 --- a/src/main/java/ru/ulstu/activity/paper/repository/PaperRepository.java +++ b/src/main/java/ru/ulstu/activity/paper/service/PaperRepository.java @@ -1,4 +1,4 @@ -package ru.ulstu.activity.paper.repository; +package ru.ulstu.activity.paper.service; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; @@ -11,7 +11,7 @@ import ru.ulstu.user.model.User; import java.util.List; -public interface PaperRepository extends JpaDetachableRepository, ActivityRepository { +interface PaperRepository extends JpaDetachableRepository, ActivityRepository { @Query("SELECT p FROM Paper p WHERE (:author IS NULL OR :author MEMBER OF p.authors) AND (YEAR(p.createDate) = :year OR :year IS NULL)") List filter(@Param("author") User author, @Param("year") Integer year); diff --git a/src/main/java/ru/ulstu/activity/paper/service/PaperService.java b/src/main/java/ru/ulstu/activity/paper/service/PaperService.java index d0f3a57..d31750f 100644 --- a/src/main/java/ru/ulstu/activity/paper/service/PaperService.java +++ b/src/main/java/ru/ulstu/activity/paper/service/PaperService.java @@ -15,7 +15,6 @@ import ru.ulstu.activity.paper.model.PaperFilterListDto; import ru.ulstu.activity.paper.model.PaperListDto; import ru.ulstu.activity.paper.model.PaperStatusDto; import ru.ulstu.activity.paper.model.PaperTypeDto; -import ru.ulstu.activity.paper.repository.PaperRepository; import ru.ulstu.activity.ping.service.PingService; import ru.ulstu.activity.timeline.service.EventService; import ru.ulstu.core.jpa.OffsetablePageRequest; @@ -63,7 +62,7 @@ public class PaperService extends ActivityService DeadlineService deadlineService, EventService eventService, PingService pingService) { - super(paperRepository, paperNotificationService, pingService); + super(paperRepository, paperNotificationService, pingService, eventService); this.paperRepository = paperRepository; this.fileService = fileService; this.paperNotificationService = paperNotificationService; @@ -171,12 +170,8 @@ public class PaperService extends ActivityService paper.setUpdateDate(new Date()); paper.setStatus(DRAFT); paper.setType(OTHER); - paper = paperRepository.save(paper); - paperNotificationService.sendCreateNotification(paper); - eventService.createFromPaper(paper); - - return paper; + return create(paper); } public List filter(PaperFilterListDto filterDto) { diff --git a/src/main/java/ru/ulstu/activity/paper/repository/ReferenceRepository.java b/src/main/java/ru/ulstu/activity/paper/service/ReferenceRepository.java similarity index 94% rename from src/main/java/ru/ulstu/activity/paper/repository/ReferenceRepository.java rename to src/main/java/ru/ulstu/activity/paper/service/ReferenceRepository.java index 9b24f1c..d613eb4 100644 --- a/src/main/java/ru/ulstu/activity/paper/repository/ReferenceRepository.java +++ b/src/main/java/ru/ulstu/activity/paper/service/ReferenceRepository.java @@ -1,4 +1,4 @@ -package ru.ulstu.activity.paper.repository; +package ru.ulstu.activity.paper.service; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; diff --git a/src/main/java/ru/ulstu/activity/ping/repository/PingRepository.java b/src/main/java/ru/ulstu/activity/ping/service/PingRepository.java similarity index 89% rename from src/main/java/ru/ulstu/activity/ping/repository/PingRepository.java rename to src/main/java/ru/ulstu/activity/ping/service/PingRepository.java index a046ec5..2fbe51e 100644 --- a/src/main/java/ru/ulstu/activity/ping/repository/PingRepository.java +++ b/src/main/java/ru/ulstu/activity/ping/service/PingRepository.java @@ -1,4 +1,4 @@ -package ru.ulstu.activity.ping.repository; +package ru.ulstu.activity.ping.service; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; @@ -9,7 +9,7 @@ import ru.ulstu.activity.ping.model.Ping; import java.util.Date; import java.util.List; -public interface PingRepository extends JpaRepository { +interface PingRepository extends JpaRepository { @Query("SELECT count(*) FROM Ping p WHERE (DAY(p.date) = :day) AND (MONTH(p.date) = :month) AND (YEAR(p.date) = :year) AND (p.activityType = 'conference') AND (p.activity = :conference)") long countByConferenceAndDate(@Param("conference") Conference conference, @Param("day") Integer day, @Param("month") Integer month, @Param("year") Integer year); diff --git a/src/main/java/ru/ulstu/activity/ping/service/PingScheduler.java b/src/main/java/ru/ulstu/activity/ping/service/PingScheduler.java index cd6e8ba..17d3bfb 100644 --- a/src/main/java/ru/ulstu/activity/ping/service/PingScheduler.java +++ b/src/main/java/ru/ulstu/activity/ping/service/PingScheduler.java @@ -8,7 +8,6 @@ import org.springframework.stereotype.Service; import ru.ulstu.activity.common.model.AbstractActivity; import ru.ulstu.activity.ping.model.Ping; import ru.ulstu.activity.ping.model.PingInfo; -import ru.ulstu.activity.ping.repository.PingRepository; import ru.ulstu.user.model.User; import ru.ulstu.user.service.MailService; @@ -19,10 +18,10 @@ import java.util.Set; @Service public class PingScheduler { + private final static String PING_MAIL_SUBJECT = "Ping статистика"; private final Logger log = LoggerFactory.getLogger(PingScheduler.class); private final PingRepository pingRepository; private final MailService mailService; - private final static String PING_MAIL_SUBJECT = "Ping статистика"; public PingScheduler(PingRepository pingRepository, MailService mailService) { this.pingRepository = pingRepository; diff --git a/src/main/java/ru/ulstu/activity/ping/service/PingService.java b/src/main/java/ru/ulstu/activity/ping/service/PingService.java index 8a52afa..a4aed0e 100644 --- a/src/main/java/ru/ulstu/activity/ping/service/PingService.java +++ b/src/main/java/ru/ulstu/activity/ping/service/PingService.java @@ -5,7 +5,6 @@ import org.springframework.transaction.annotation.Transactional; import ru.ulstu.activity.common.model.AbstractActivity; import ru.ulstu.activity.conference.model.Conference; import ru.ulstu.activity.ping.model.Ping; -import ru.ulstu.activity.ping.repository.PingRepository; import ru.ulstu.user.service.UserService; import java.util.Calendar; diff --git a/src/main/java/ru/ulstu/activity/project/model/Project.java b/src/main/java/ru/ulstu/activity/project/model/Project.java index fb26267..46840cb 100644 --- a/src/main/java/ru/ulstu/activity/project/model/Project.java +++ b/src/main/java/ru/ulstu/activity/project/model/Project.java @@ -109,6 +109,11 @@ public class Project extends AbstractActivity implements EventSource { event.setProject(this); } + @Override + public String getSuffix() { + return "проекта"; + } + public ProjectStatus getStatus() { return status; } diff --git a/src/main/java/ru/ulstu/activity/project/model/ProjectDto.java b/src/main/java/ru/ulstu/activity/project/model/ProjectDto.java index e30547f..8cc84b4 100644 --- a/src/main/java/ru/ulstu/activity/project/model/ProjectDto.java +++ b/src/main/java/ru/ulstu/activity/project/model/ProjectDto.java @@ -23,7 +23,6 @@ public class ProjectDto extends ActivityDto { private Project.ProjectStatus status; private String description; private List deadlines = new ArrayList<>(); - private GrantDto grant; private String repository; private List files = new ArrayList<>(); private List removedDeadlineIds = new ArrayList<>(); @@ -49,7 +48,6 @@ public class ProjectDto extends ActivityDto { this.title = title; this.status = status; this.description = description; - this.grant = grant; this.repository = repository; this.deadlines = deadlines; this.files = files; @@ -67,7 +65,6 @@ public class ProjectDto extends ActivityDto { this.status = project.getStatus(); this.description = project.getDescription(); this.files = convert(project.getFiles(), FileDataDto::new); - this.grant = project.getGrant() == null ? null : new GrantDto(project.getGrant()); this.repository = project.getRepository(); this.deadlines = project.getDeadlines(); this.executorIds = convert(users, user -> user.getId()); @@ -100,14 +97,6 @@ public class ProjectDto extends ActivityDto { this.description = description; } - public GrantDto getGrant() { - return grant; - } - - public void setGrant(GrantDto grant) { - this.grant = grant; - } - public String getRepository() { return repository; } diff --git a/src/main/java/ru/ulstu/activity/project/repository/ProjectRepository.java b/src/main/java/ru/ulstu/activity/project/service/ProjectRepository.java similarity index 62% rename from src/main/java/ru/ulstu/activity/project/repository/ProjectRepository.java rename to src/main/java/ru/ulstu/activity/project/service/ProjectRepository.java index d74b188..5e4dde4 100644 --- a/src/main/java/ru/ulstu/activity/project/repository/ProjectRepository.java +++ b/src/main/java/ru/ulstu/activity/project/service/ProjectRepository.java @@ -1,4 +1,4 @@ -package ru.ulstu.activity.project.repository; +package ru.ulstu.activity.project.service; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; @@ -8,7 +8,10 @@ import org.springframework.data.repository.query.Param; import ru.ulstu.activity.api.ActivityRepository; import ru.ulstu.activity.project.model.Project; -public interface ProjectRepository extends JpaRepository, ActivityRepository { +interface ProjectRepository extends JpaRepository, ActivityRepository { @Query("SELECT p FROM Project p WHERE p.status NOT IN (:statuses)") Page findAllWithoutStatuses(Pageable pageable, @Param("statuses") Project.ProjectStatus... statuses); + + @Query("SELECT p.title FROM Project p WHERE (p.title = :name) AND (:id IS NULL OR p.id != :id) ") + String findByNameAndNotId(@Param("name") String name, @Param("id") Integer id); } diff --git a/src/main/java/ru/ulstu/activity/project/service/ProjectService.java b/src/main/java/ru/ulstu/activity/project/service/ProjectService.java index 34e99a4..5d2eccc 100644 --- a/src/main/java/ru/ulstu/activity/project/service/ProjectService.java +++ b/src/main/java/ru/ulstu/activity/project/service/ProjectService.java @@ -6,13 +6,12 @@ import org.springframework.transaction.annotation.Transactional; import ru.ulstu.activity.common.service.ActivityService; import ru.ulstu.activity.deadline.service.DeadlineService; import ru.ulstu.activity.file.service.FileService; -import ru.ulstu.activity.grant.service.GrantService; import ru.ulstu.activity.ping.service.PingService; import ru.ulstu.activity.project.model.Project; import ru.ulstu.activity.project.model.ProjectDashboardDto; import ru.ulstu.activity.project.model.ProjectDto; import ru.ulstu.activity.project.model.ProjectListDto; -import ru.ulstu.activity.project.repository.ProjectRepository; +import ru.ulstu.activity.timeline.service.EventService; import ru.ulstu.core.jpa.OffsetablePageRequest; import ru.ulstu.core.model.response.PageableItems; import ru.ulstu.user.model.User; @@ -31,25 +30,24 @@ import static ru.ulstu.core.util.StreamApiUtils.convertPageable; public class ProjectService extends ActivityService { private final ProjectRepository projectRepository; private final DeadlineService deadlineService; - private final GrantService grantService; private final FileService fileService; private final UserService userService; private final PingService pingService; + private final EventService eventService; public ProjectService(ProjectRepository projectRepository, ProjectNotificationService projectNotificationService, DeadlineService deadlineService, - GrantService grantService, FileService fileService, UserService userService, - PingService pingService) { - super(projectRepository, projectNotificationService, pingService); + PingService pingService, EventService eventService) { + super(projectRepository, projectNotificationService, pingService, eventService); this.projectRepository = projectRepository; this.deadlineService = deadlineService; - this.grantService = grantService; this.fileService = fileService; this.userService = userService; this.pingService = pingService; + this.eventService = eventService; } public PageableItems findAllActiveDto(int offset, int count) { @@ -75,18 +73,12 @@ public class ProjectService extends ActivityService !f.isDeleted()) .collect(toList()))); project.getGrants().clear(); - if (projectDto.getGrantIds() != null && !projectDto.getGrantIds().isEmpty()) { - projectDto.getGrantIds().forEach(grantIds -> project.getGrants().add(grantService.findById(grantIds))); - } return project; } diff --git a/src/main/java/ru/ulstu/activity/students/model/Task.java b/src/main/java/ru/ulstu/activity/students/model/Task.java index c879c25..f893ed2 100644 --- a/src/main/java/ru/ulstu/activity/students/model/Task.java +++ b/src/main/java/ru/ulstu/activity/students/model/Task.java @@ -91,6 +91,11 @@ public class Task extends AbstractActivity implements EventSource { return Collections.emptyList(); } + @Override + public String getSuffix() { + return "задачи"; + } + @Override public void addObjectToEvent(Event event) { event.setTask(this); diff --git a/src/main/java/ru/ulstu/activity/students/repository/SchedulerRepository.java b/src/main/java/ru/ulstu/activity/students/service/SchedulerRepository.java similarity index 61% rename from src/main/java/ru/ulstu/activity/students/repository/SchedulerRepository.java rename to src/main/java/ru/ulstu/activity/students/service/SchedulerRepository.java index 3cb346f..4ca820d 100644 --- a/src/main/java/ru/ulstu/activity/students/repository/SchedulerRepository.java +++ b/src/main/java/ru/ulstu/activity/students/service/SchedulerRepository.java @@ -1,10 +1,10 @@ -package ru.ulstu.activity.students.repository; +package ru.ulstu.activity.students.service; import org.springframework.data.jpa.repository.JpaRepository; import ru.ulstu.activity.students.model.Scheduler; import ru.ulstu.activity.students.model.Task; -public interface SchedulerRepository extends JpaRepository { +interface SchedulerRepository extends JpaRepository { Scheduler findOneByTask(Task task); diff --git a/src/main/java/ru/ulstu/activity/students/service/SchedulerService.java b/src/main/java/ru/ulstu/activity/students/service/SchedulerService.java index 150cb0f..2113f8f 100644 --- a/src/main/java/ru/ulstu/activity/students/service/SchedulerService.java +++ b/src/main/java/ru/ulstu/activity/students/service/SchedulerService.java @@ -4,7 +4,6 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import ru.ulstu.activity.students.model.Scheduler; import ru.ulstu.activity.students.model.Task; -import ru.ulstu.activity.students.repository.SchedulerRepository; import ru.ulstu.activity.tags.model.Tag; import java.util.Date; @@ -31,13 +30,13 @@ public class SchedulerService { @Transactional - private Scheduler create(Task task) { + public Scheduler create(Task task) { Scheduler scheduler = new Scheduler(task, task.getDeadlines().get(task.getDeadlines().size() - 1).getDate()); return schedulerRepository.save(scheduler); } @Transactional - private void delete(Integer schedulerId) { + public void delete(Integer schedulerId) { if (schedulerRepository.existsById(schedulerId)) { schedulerRepository.deleteById(schedulerId); } diff --git a/src/main/java/ru/ulstu/activity/students/repository/TaskRepository.java b/src/main/java/ru/ulstu/activity/students/service/TaskRepository.java similarity index 90% rename from src/main/java/ru/ulstu/activity/students/repository/TaskRepository.java rename to src/main/java/ru/ulstu/activity/students/service/TaskRepository.java index 1439385..2bc4329 100644 --- a/src/main/java/ru/ulstu/activity/students/repository/TaskRepository.java +++ b/src/main/java/ru/ulstu/activity/students/service/TaskRepository.java @@ -1,4 +1,4 @@ -package ru.ulstu.activity.students.repository; +package ru.ulstu.activity.students.service; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; @@ -10,7 +10,7 @@ import ru.ulstu.activity.tags.model.Tag; import java.util.Date; import java.util.List; -public interface TaskRepository extends JpaRepository, ActivityRepository { +interface TaskRepository extends JpaRepository, ActivityRepository { @Query("SELECT t FROM Task t WHERE (t.status = :status OR :status IS NULL) AND (:tag IS NULL OR :tag MEMBER OF t.tags) ORDER BY create_date DESC") List filterNew(@Param("status") Task.TaskStatus status, @Param("tag") Tag tag); diff --git a/src/main/java/ru/ulstu/activity/students/service/TaskService.java b/src/main/java/ru/ulstu/activity/students/service/TaskService.java index 244cb33..7d379ff 100644 --- a/src/main/java/ru/ulstu/activity/students/service/TaskService.java +++ b/src/main/java/ru/ulstu/activity/students/service/TaskService.java @@ -14,8 +14,6 @@ import ru.ulstu.activity.students.model.TaskDashboardDto; import ru.ulstu.activity.students.model.TaskDto; import ru.ulstu.activity.students.model.TaskFilterDto; import ru.ulstu.activity.students.model.TaskListDto; -import ru.ulstu.activity.students.repository.SchedulerRepository; -import ru.ulstu.activity.students.repository.TaskRepository; import ru.ulstu.activity.tags.model.Tag; import ru.ulstu.activity.tags.service.TagService; import ru.ulstu.activity.timeline.service.EventService; @@ -28,7 +26,6 @@ import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; import java.util.Calendar; -import java.util.Collections; import java.util.Date; import java.util.List; import java.util.Map; @@ -58,7 +55,7 @@ public class TaskService extends ActivityService { SchedulerRepository schedulerRepository, EventService eventService, PingService pingService) { - super(taskRepository, taskNotificationService, pingService); + super(taskRepository, taskNotificationService, pingService, eventService); this.taskRepository = taskRepository; this.taskNotificationService = taskNotificationService; this.deadlineService = deadlineService; @@ -115,13 +112,6 @@ public class TaskService extends ActivityService { return new TaskDto(create(newTask)); } - @Transactional - public Task create(Task task) { - task = taskRepository.save(task); - eventService.createFromObject(task, Collections.emptyList(), true, "задачи"); - return task; - } - protected Task copyFromDto(Task task, TaskDto taskDto) throws IOException { task.setTitle(taskDto.getTitle()); task.setDescription(taskDto.getDescription()); @@ -140,13 +130,6 @@ public class TaskService extends ActivityService { return new TaskDto(update(task)); } - @Transactional - public Task update(Task task) { - task = taskRepository.save(task); - eventService.updateTaskDeadlines(task); - return task; - } - @Transactional public boolean delete(Integer taskId) { if (taskRepository.existsById(taskId)) { diff --git a/src/main/java/ru/ulstu/activity/tags/repository/TagRepository.java b/src/main/java/ru/ulstu/activity/tags/service/TagRepository.java similarity index 74% rename from src/main/java/ru/ulstu/activity/tags/repository/TagRepository.java rename to src/main/java/ru/ulstu/activity/tags/service/TagRepository.java index 882e476..069905f 100644 --- a/src/main/java/ru/ulstu/activity/tags/repository/TagRepository.java +++ b/src/main/java/ru/ulstu/activity/tags/service/TagRepository.java @@ -1,11 +1,11 @@ -package ru.ulstu.activity.tags.repository; +package ru.ulstu.activity.tags.service; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; import ru.ulstu.activity.tags.model.Tag; -public interface TagRepository extends JpaRepository { +interface TagRepository extends JpaRepository { @Query("SELECT t FROM Tag t WHERE (t.tagName = :tagName)") Tag findByName(@Param("tagName") String tagName); diff --git a/src/main/java/ru/ulstu/activity/tags/service/TagService.java b/src/main/java/ru/ulstu/activity/tags/service/TagService.java index 5615bea..b24663c 100644 --- a/src/main/java/ru/ulstu/activity/tags/service/TagService.java +++ b/src/main/java/ru/ulstu/activity/tags/service/TagService.java @@ -2,7 +2,6 @@ package ru.ulstu.activity.tags.service; import org.springframework.stereotype.Service; import ru.ulstu.activity.tags.model.Tag; -import ru.ulstu.activity.tags.repository.TagRepository; import javax.transaction.Transactional; import java.util.List; @@ -10,12 +9,9 @@ import java.util.stream.Collectors; @Service public class TagService { - private final TagRepository tagRepository; - public TagService(TagRepository tagRepository) { - this.tagRepository = tagRepository; } @@ -33,17 +29,17 @@ public class TagService { } @Transactional - private Tag getExistById(Tag tag) { + public Tag getExistById(Tag tag) { return tagRepository.getOne(tag.getId()); } @Transactional - private Tag isExistByName(String tagName) { + public Tag isExistByName(String tagName) { return tagRepository.findByName(tagName); } @Transactional - private Tag create(Tag tag) { + public Tag create(Tag tag) { Tag newTag = new Tag(); newTag.setTagName(tag.getTagName()); newTag = tagRepository.save(newTag); diff --git a/src/main/java/ru/ulstu/activity/timeline/controller/EventController.java b/src/main/java/ru/ulstu/activity/timeline/controller/EventController.java index c75b406..cd66147 100644 --- a/src/main/java/ru/ulstu/activity/timeline/controller/EventController.java +++ b/src/main/java/ru/ulstu/activity/timeline/controller/EventController.java @@ -1,21 +1,15 @@ package ru.ulstu.activity.timeline.controller; -import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.PutMapping; -import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import ru.ulstu.activity.timeline.model.EventDto; import ru.ulstu.activity.timeline.service.EventService; import ru.ulstu.configuration.Constants; +import ru.ulstu.core.model.response.PageableItems; import ru.ulstu.core.model.response.Response; -import javax.validation.Valid; -import java.util.List; - @RestController @RequestMapping(Constants.API_1_0 + "events") public class EventController { @@ -27,28 +21,29 @@ public class EventController { } @GetMapping - public Response> getEvents() { - return new Response<>(eventService.findAllDto()); + public Response> getEvents(@RequestParam(value = "offset", defaultValue = "0") int offset, + @RequestParam(value = "count", defaultValue = "0") int count) { + return new Response<>(eventService.getAllEvents(offset, count)); } - @GetMapping("/future") - public Response> getFutureEvents() { - return new Response<>(eventService.findAllFutureDto()); + @GetMapping("future") + public Response> getFutureEvents(@RequestParam(value = "offset", defaultValue = "0") int offset, + @RequestParam(value = "count", defaultValue = "0") int count) { + return new Response<>(eventService.getFutureEvents(offset, count)); } - @PostMapping - public Response createEvent(@RequestBody @Valid EventDto timelineDto) { - return new Response<>(eventService.create(timelineDto)); + @GetMapping("all-by-user") + public Response> getUserEvents(@RequestParam(value = "user-id") int userId, + @RequestParam(value = "offset", defaultValue = "0") int offset, + @RequestParam(value = "count", defaultValue = "0") int count) { + return new Response<>(eventService.getUserEvents(userId, offset, count)); } - @PutMapping - public Response updateEvent(@RequestBody @Valid EventDto eventDto) { - return new Response<>(eventService.update(eventDto)); + @GetMapping("future-by-user") + public Response> getUserFutureEvents(@RequestParam(value = "user-id") int userId, + @RequestParam(value = "offset", defaultValue = "0") int offset, + @RequestParam(value = "count", defaultValue = "0") int count) { + return new Response<>(eventService.getUserFutureEvents(userId, offset, count)); } - @DeleteMapping("/{event-id}") - public Response delete(@PathVariable("event-id") Integer eventId) { - eventService.delete(eventId); - return new Response<>(Boolean.TRUE); - } } diff --git a/src/main/java/ru/ulstu/activity/timeline/model/Event.java b/src/main/java/ru/ulstu/activity/timeline/model/Event.java index 3a9e55e..f882bf9 100644 --- a/src/main/java/ru/ulstu/activity/timeline/model/Event.java +++ b/src/main/java/ru/ulstu/activity/timeline/model/Event.java @@ -8,7 +8,6 @@ import ru.ulstu.activity.students.model.Task; import ru.ulstu.core.model.BaseEntity; import ru.ulstu.user.model.User; -import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.EnumType; @@ -17,7 +16,6 @@ import javax.persistence.FetchType; import javax.persistence.JoinColumn; import javax.persistence.ManyToMany; import javax.persistence.ManyToOne; -import javax.persistence.OneToMany; import javax.persistence.Temporal; import javax.persistence.TemporalType; import javax.validation.constraints.NotBlank; @@ -45,9 +43,6 @@ public class Event extends BaseEntity { @NotBlank private String title; - @Enumerated(value = EnumType.STRING) - private PeriodEvent period; - @Enumerated(value = EnumType.STRING) private EventStatus status; @@ -69,14 +64,6 @@ public class Event extends BaseEntity { @ManyToMany(fetch = FetchType.LAZY) private List recipients = new ArrayList<>(); - @ManyToOne - @JoinColumn(name = "child_id") - private Event child; - - @OneToMany(cascade = CascadeType.ALL) - @JoinColumn(name = "child_id") - private List parents; - @ManyToOne @JoinColumn(name = "paper_id") private Paper paper; @@ -113,14 +100,6 @@ public class Event extends BaseEntity { this.status = status; } - public PeriodEvent getPeriod() { - return period; - } - - public void setPeriod(PeriodEvent period) { - this.period = period; - } - public Date getCreateDate() { return createDate; } @@ -161,22 +140,6 @@ public class Event extends BaseEntity { this.executeDate = executeDate; } - public Event getChild() { - return child; - } - - public void setChild(Event child) { - this.child = child; - } - - public List getParents() { - return parents; - } - - public void setParents(List parents) { - this.parents = parents; - } - public Paper getPaper() { return paper; } diff --git a/src/main/java/ru/ulstu/activity/timeline/model/EventDto.java b/src/main/java/ru/ulstu/activity/timeline/model/EventDto.java index 5a1d014..51741b2 100644 --- a/src/main/java/ru/ulstu/activity/timeline/model/EventDto.java +++ b/src/main/java/ru/ulstu/activity/timeline/model/EventDto.java @@ -1,170 +1,31 @@ package ru.ulstu.activity.timeline.model; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import ru.ulstu.activity.conference.model.ConferenceDto; -import ru.ulstu.activity.grant.model.GrantDto; -import ru.ulstu.activity.paper.model.PaperDto; -import ru.ulstu.activity.project.model.ProjectDto; -import ru.ulstu.activity.students.model.TaskDto; -import ru.ulstu.user.model.UserDto; - import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; import java.util.Date; -import java.util.List; - -import static ru.ulstu.core.util.StreamApiUtils.convert; public class EventDto { - private final Integer id; @NotBlank private final String title; - private final PeriodEvent period; - private final Event.EventStatus status; @NotNull private final Date executeDate; - private final Date createDate; - private final Date updateDate; private final String description; - private final List recipients; - private PaperDto paperDto; - private ConferenceDto conferenceDto; - private GrantDto grantDto; - private ProjectDto projectDto; - private TaskDto taskDto; - - @JsonCreator - public EventDto(@JsonProperty("id") Integer id, - @JsonProperty("title") String title, - @JsonProperty("status") Event.EventStatus status, - @JsonProperty("period") PeriodEvent period, - @JsonProperty("executeDate") Date executeDate, - @JsonProperty("createDate") Date createDate, - @JsonProperty("updateDate") Date updateDate, - @JsonProperty("description") String description, - @JsonProperty("paperDto") PaperDto paperDto, - @JsonProperty("recipients") List recipients, - @JsonProperty("conferenceDto") ConferenceDto conferenceDto, - @JsonProperty("grantDto") GrantDto grantDto, - @JsonProperty("projectDto") ProjectDto projectDto, - @JsonProperty("taskDto") TaskDto taskDto) { - this.id = id; - this.title = title; - this.period = period; - this.status = status; - this.executeDate = executeDate; - this.createDate = createDate; - this.updateDate = updateDate; - this.description = description; - this.recipients = recipients; - this.paperDto = paperDto; - this.conferenceDto = conferenceDto; - this.grantDto = grantDto; - this.projectDto = projectDto; - this.taskDto = taskDto; - } public EventDto(Event event) { - this.id = event.getId(); this.title = event.getTitle(); - this.status = event.getStatus(); - this.period = event.getPeriod(); - this.executeDate = event.getExecuteDate(); - this.createDate = event.getCreateDate(); - this.updateDate = event.getUpdateDate(); this.description = event.getDescription(); - this.recipients = convert(event.getRecipients(), UserDto::new); - if (paperDto != null) { - this.paperDto = new PaperDto(event.getPaper()); - } - if (conferenceDto != null) { - this.conferenceDto = new ConferenceDto(event.getConference()); - } - if (grantDto != null) { - this.grantDto = new GrantDto(event.getGrant()); - } - if (projectDto != null) { - this.projectDto = new ProjectDto(event.getProject()); - } - if (taskDto != null) { - this.taskDto = new TaskDto(event.getTask()); - } - } - - public Integer getId() { - return id; + this.executeDate = event.getExecuteDate(); } public String getTitle() { return title; } - public PeriodEvent getPeriod() { - return period; - } - - public Event.EventStatus getStatus() { - return status; - } - - public Date getCreateDate() { - return createDate; - } - - public Date getUpdateDate() { - return updateDate; - } - public String getDescription() { return description; } - public List getRecipients() { - return recipients; - } - public Date getExecuteDate() { return executeDate; } - - public PaperDto getPaperDto() { - return paperDto; - } - - public void setPaperDto(PaperDto paperDto) { - this.paperDto = paperDto; - } - - public ConferenceDto getConferenceDto() { - return conferenceDto; - } - - public void setConferenceDto(ConferenceDto conferenceDto) { - this.conferenceDto = conferenceDto; - } - - public GrantDto getGrantDto() { - return grantDto; - } - - public void setGrantDto(GrantDto grantDto) { - this.grantDto = grantDto; - } - - public ProjectDto getProjectDto() { - return projectDto; - } - - public void setProjectDto(ProjectDto projectDto) { - this.projectDto = projectDto; - } - - public TaskDto getTaskDto() { - return taskDto; - } - - public void setTaskDto(TaskDto taskDto) { - this.taskDto = taskDto; - } } diff --git a/src/main/java/ru/ulstu/activity/timeline/model/PeriodEvent.java b/src/main/java/ru/ulstu/activity/timeline/model/PeriodEvent.java deleted file mode 100644 index c64ede8..0000000 --- a/src/main/java/ru/ulstu/activity/timeline/model/PeriodEvent.java +++ /dev/null @@ -1,26 +0,0 @@ -package ru.ulstu.activity.timeline.model; - -import java.time.Period; - -public enum PeriodEvent { - EVERY_YEAR(Period.ofYears(1), "Каждый год"), - EVERY_MONTH(Period.ofMonths(1), "Каждый месяц"), - EVERY_WEEK(Period.ofWeeks(1), "Каждую неделю"), - EVERY_DAY(Period.ofDays(1), "Каждый день"); - - private final Period period; - private final String message; - - PeriodEvent(Period period, String message) { - this.period = period; - this.message = message; - } - - public Period getPeriod() { - return period; - } - - public String getMessage() { - return message; - } -} diff --git a/src/main/java/ru/ulstu/activity/timeline/model/Timeline.java b/src/main/java/ru/ulstu/activity/timeline/model/Timeline.java deleted file mode 100644 index 421cba2..0000000 --- a/src/main/java/ru/ulstu/activity/timeline/model/Timeline.java +++ /dev/null @@ -1,26 +0,0 @@ -package ru.ulstu.activity.timeline.model; - -import ru.ulstu.core.model.BaseEntity; - -import javax.persistence.CascadeType; -import javax.persistence.Entity; -import javax.persistence.JoinColumn; -import javax.persistence.OneToMany; -import java.util.ArrayList; -import java.util.List; - -@Entity -public class Timeline extends BaseEntity { - - @OneToMany(cascade = CascadeType.ALL) - @JoinColumn(name = "timeline_id") - private List events = new ArrayList<>(); - - public List getEvents() { - return events; - } - - public void setEvents(List events) { - this.events = events; - } -} diff --git a/src/main/java/ru/ulstu/activity/timeline/model/TimelineDto.java b/src/main/java/ru/ulstu/activity/timeline/model/TimelineDto.java deleted file mode 100644 index aa9c68b..0000000 --- a/src/main/java/ru/ulstu/activity/timeline/model/TimelineDto.java +++ /dev/null @@ -1,33 +0,0 @@ -package ru.ulstu.activity.timeline.model; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; - -import java.util.List; - -import static ru.ulstu.core.util.StreamApiUtils.convert; - -public class TimelineDto { - private final Integer id; - private final List events; - - @JsonCreator - public TimelineDto(@JsonProperty("id") Integer id, - @JsonProperty("events") List events) { - this.id = id; - this.events = events; - } - - public TimelineDto(Timeline timeline) { - this.id = timeline.getId(); - this.events = convert(timeline.getEvents(), EventDto::new); - } - - public Integer getId() { - return id; - } - - public List getEvents() { - return events; - } -} diff --git a/src/main/java/ru/ulstu/activity/timeline/repository/TimelineRepository.java b/src/main/java/ru/ulstu/activity/timeline/repository/TimelineRepository.java deleted file mode 100644 index c455c8a..0000000 --- a/src/main/java/ru/ulstu/activity/timeline/repository/TimelineRepository.java +++ /dev/null @@ -1,7 +0,0 @@ -package ru.ulstu.activity.timeline.repository; - -import org.springframework.data.jpa.repository.JpaRepository; -import ru.ulstu.activity.timeline.model.Timeline; - -public interface TimelineRepository extends JpaRepository { -} diff --git a/src/main/java/ru/ulstu/activity/timeline/repository/EventRepository.java b/src/main/java/ru/ulstu/activity/timeline/service/EventRepository.java similarity index 52% rename from src/main/java/ru/ulstu/activity/timeline/repository/EventRepository.java rename to src/main/java/ru/ulstu/activity/timeline/service/EventRepository.java index c921639..8f3de13 100644 --- a/src/main/java/ru/ulstu/activity/timeline/repository/EventRepository.java +++ b/src/main/java/ru/ulstu/activity/timeline/service/EventRepository.java @@ -1,22 +1,27 @@ -package ru.ulstu.activity.timeline.repository; +package ru.ulstu.activity.timeline.service; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; import ru.ulstu.activity.conference.model.Conference; import ru.ulstu.activity.grant.model.Grant; import ru.ulstu.activity.paper.model.Paper; import ru.ulstu.activity.project.model.Project; import ru.ulstu.activity.students.model.Task; import ru.ulstu.activity.timeline.model.Event; +import ru.ulstu.core.jpa.OffsetablePageRequest; +import ru.ulstu.user.model.User; import java.util.List; -public interface EventRepository extends JpaRepository { +interface EventRepository extends JpaRepository { @Query("SELECT e FROM Event e WHERE e.executeDate = CURRENT_DATE") List findByCurrentDate(); @Query("SELECT e FROM Event e WHERE e.executeDate > CURRENT_DATE ORDER BY e.executeDate") - List findAllFuture(); + Page findAllFuture(OffsetablePageRequest offsetablePageRequest); List findAllByPaper(Paper paper); @@ -27,4 +32,10 @@ public interface EventRepository extends JpaRepository { List findAllByProject(Project project); List findAllByTask(Task task); -} + + @Query("SELECT e FROM Event e WHERE e.recipients = :user ORDER BY e.executeDate") + Page findByUser(Pageable offsetablePageRequest, @Param("user") User user); + + @Query("SELECT e FROM Event e WHERE e.recipients = :user AND e.executeDate > CURRENT_DATE ORDER BY e.executeDate") + Page findUserFuture(Pageable offsetablePageRequest, @Param("user") User user); +} \ No newline at end of file diff --git a/src/main/java/ru/ulstu/activity/timeline/service/EventScheduler.java b/src/main/java/ru/ulstu/activity/timeline/service/EventScheduler.java deleted file mode 100644 index 7854cea..0000000 --- a/src/main/java/ru/ulstu/activity/timeline/service/EventScheduler.java +++ /dev/null @@ -1,77 +0,0 @@ -package ru.ulstu.activity.timeline.service; - -import com.google.common.collect.ImmutableMap; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.scheduling.annotation.Scheduled; -import org.springframework.stereotype.Service; -import ru.ulstu.activity.timeline.model.Event; -import ru.ulstu.activity.timeline.model.PeriodEvent; -import ru.ulstu.core.util.DateUtils; -import ru.ulstu.user.service.MailService; - -import java.util.Date; -import java.util.List; -import java.util.Map; - -@Service -public class EventScheduler { - - private final Logger log = LoggerFactory.getLogger(EventScheduler.class); - private final EventService eventService; - private final MailService mailService; - - public EventScheduler(EventService eventService, - MailService mailService) { - this.eventService = eventService; - this.mailService = mailService; - } - - @Scheduled(cron = "0 0 8 * * ?") - public void sendNotifications() { - List events = eventService.findByCurrentDate(); - events.forEach(event -> { - Map variables = ImmutableMap.of("description", event.getDescription()); - event.getRecipients() - .forEach(recipient -> mailService.sendEmailFromTemplate(variables, recipient, "eventNotification", event.getTitle())); - if (event.getPeriod() == null) { - event.setStatus(Event.EventStatus.COMPLETED); - eventService.save(event); - } - }); - } - - @Scheduled(cron = "0 0 * * * ?") - public void checkPeriodEvents() { - log.debug("EventScheduler.checkPeriodEvents started"); - //TODO: filter - for (Event event : eventService.findAll()) { - if (halfOfThePeriodHasPassed(event)) { - eventService.createBasedOn(event, DateUtils.addDays(event.getExecuteDate(), getShiftInDays(event.getPeriod()))); - } - } - - log.debug("EventScheduler.checkPeriodEvents finished"); - } - - private int getShiftInDays(PeriodEvent periodEvent) { - switch (periodEvent) { - case EVERY_DAY: - return periodEvent.getPeriod().getDays(); - case EVERY_WEEK: - return periodEvent.getPeriod().getDays(); - case EVERY_MONTH: - return periodEvent.getPeriod().getMonths() * 30; - case EVERY_YEAR: - return periodEvent.getPeriod().getYears() * 365; - default: - throw new RuntimeException("period event not exists"); - } - } - - private boolean halfOfThePeriodHasPassed(Event event) { - return event.getPeriod() != null && event.getChild() == null - && new Date().after( - DateUtils.addDays(event.getExecuteDate(), (int) Math.round((double) getShiftInDays(event.getPeriod()) / 2))); - } -} diff --git a/src/main/java/ru/ulstu/activity/timeline/service/EventService.java b/src/main/java/ru/ulstu/activity/timeline/service/EventService.java index 9c75696..1ed772b 100644 --- a/src/main/java/ru/ulstu/activity/timeline/service/EventService.java +++ b/src/main/java/ru/ulstu/activity/timeline/service/EventService.java @@ -1,180 +1,80 @@ package ru.ulstu.activity.timeline.service; import org.apache.commons.lang3.time.DateUtils; -import org.springframework.context.annotation.Lazy; +import org.springframework.data.domain.Page; import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; import ru.ulstu.activity.common.model.EventSource; -import ru.ulstu.activity.conference.model.Conference; import ru.ulstu.activity.deadline.model.Deadline; -import ru.ulstu.activity.grant.model.Grant; -import ru.ulstu.activity.paper.model.Paper; -import ru.ulstu.activity.project.model.Project; -import ru.ulstu.activity.students.model.Task; import ru.ulstu.activity.timeline.model.Event; import ru.ulstu.activity.timeline.model.EventDto; -import ru.ulstu.activity.timeline.model.Timeline; -import ru.ulstu.activity.timeline.repository.EventRepository; -import ru.ulstu.user.model.UserDto; +import ru.ulstu.core.jpa.OffsetablePageRequest; +import ru.ulstu.core.model.response.PageableItems; import ru.ulstu.user.service.UserService; -import java.util.Collections; +import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.stream.Collectors; -import static ru.ulstu.core.util.StreamApiUtils.convert; +import static ru.ulstu.core.util.StreamApiUtils.convertPageable; @Service public class EventService { - - private final EventRepository eventRepository; - private final TimelineService timelineService; private final UserService userService; + private final EventRepository eventRepository; - public EventService(EventRepository eventRepository, - @Lazy TimelineService timelineService, - UserService userService) { - this.eventRepository = eventRepository; - this.timelineService = timelineService; + public EventService(UserService userService, + EventRepository eventRepository) { this.userService = userService; + this.eventRepository = eventRepository; } - public List findAllDto() { - return convert(findAll(), EventDto::new); - } - - public List findAll() { - return eventRepository.findAll(); - } - - @Transactional - public Integer create(EventDto eventDto) { - return eventRepository.save(copyFromDto(new Event(), eventDto)).getId(); - } - - private Event copyFromDto(Event event, EventDto eventDto) { - event.setExecuteDate(eventDto.getExecuteDate()); - event.setCreateDate(eventDto.getId() == null ? new Date() : eventDto.getCreateDate()); - event.setDescription(eventDto.getDescription()); - event.setRecipients(userService.findByIds(convert(eventDto.getRecipients(), UserDto::getId))); - event.setTitle(eventDto.getTitle()); - event.setPeriod(eventDto.getPeriod()); - event.setStatus(eventDto.getStatus()); - event.setUpdateDate(new Date()); - return event; - } - - @Transactional - public Integer update(EventDto eventDto) { - Event event = eventRepository.getOne(eventDto.getId()); - return eventRepository.save(copyFromDto(event, eventDto)).getId(); - } - - @Transactional - public Event save(Event event) { - return eventRepository.save(event); - } - - @Transactional - public void delete(Integer eventId) { - Event event = eventRepository.getOne(eventId); - event.setParents(null); - eventRepository.delete(event); + public PageableItems getAllEvents(int offset, int count) { + return createPageable(eventRepository.findAll(new OffsetablePageRequest(offset, count))); } - public List findByIds(List ids) { - return eventRepository.findAllById(ids); + public PageableItems getFutureEvents(int offset, int count) { + return createPageable(eventRepository.findAllFuture(new OffsetablePageRequest(offset, count))); } - public void createBasedOn(Event event, Date executeDate) { - //backup event id - Integer parentEventId = event.getId(); - - event.setId(null); - event.setStatus(Event.EventStatus.POSSIBLE); - event.setExecuteDate(executeDate); - event.setCreateDate(new Date()); - event.setUpdateDate(new Date()); - event = eventRepository.save(event); - - //set child to parent - Event parentEvent = eventRepository.getOne(parentEventId); - parentEvent.setChild(event); - eventRepository.save(parentEvent); + public PageableItems getUserEvents(int userId, int offset, int count) { + return createPageable(eventRepository.findByUser(new OffsetablePageRequest(offset, count), userService.findById(userId))); } - public void createFromPaper(Paper newPaper) { - createFromObject(newPaper, Collections.emptyList(), false, "статьи"); + public PageableItems getUserFutureEvents(int userId, int offset, int count) { + return createPageable(eventRepository.findUserFuture(new OffsetablePageRequest(offset, count), userService.findById(userId))); } - public void createFromObject(EventSource eventSource, List events, Boolean addCurrentUser, String suffix) { - List timelines = timelineService.findAll(); - Timeline timeline = timelines.isEmpty() ? new Timeline() : timelines.get(0); - - timeline.getEvents().removeAll(events); + public void createFromObject(EventSource eventSource) { + List newEvents = new ArrayList<>(); for (Deadline deadline : eventSource.getDeadlines() .stream() .filter(d -> d.getDate().after(new Date()) || DateUtils.isSameDay(d.getDate(), new Date())) .collect(Collectors.toList())) { Event newEvent = new Event(); - newEvent.setTitle("Дедлайн " + suffix); + newEvent.setTitle("Дедлайн " + eventSource.getSuffix()); newEvent.setStatus(Event.EventStatus.NEW); newEvent.setExecuteDate(deadline.getDate()); newEvent.setCreateDate(new Date()); newEvent.setUpdateDate(new Date()); - newEvent.setDescription("Дедлайн '" + deadline.getDescription() + "' " + suffix + " '" + newEvent.setDescription("Дедлайн '" + + deadline.getDescription() + + "' " + eventSource.getSuffix() + " '" + eventSource.getTitle() + "'"); - if (addCurrentUser) { - newEvent.getRecipients().add(userService.getCurrentUser()); - } + newEvent.getRecipients().addAll(eventSource.getRecipients()); newEvent.setRecipients(eventSource.getRecipients()); - eventSource.addObjectToEvent(newEvent); - timeline.getEvents().add(eventRepository.save(newEvent)); + newEvents.add(eventRepository.save(newEvent)); } - timelineService.save(timeline); + eventRepository.saveAll(newEvents); } - public void updatePaperDeadlines(Paper paper) { - List foundEvents = eventRepository.findAllByPaper(paper); - eventRepository.deleteAll(foundEvents); - createFromObject(paper, foundEvents, false, "статьи"); - } - - public List findByCurrentDate() { - return eventRepository.findByCurrentDate(); - } - private List findAllFuture() { - return eventRepository.findAllFuture(); + private PageableItems createPageable(Page page) { + return convertPageable(new PageableItems<>(page.getTotalElements(), page.getContent()), EventDto::new); } - public List findAllFutureDto() { - return convert(findAllFuture(), EventDto::new); - } + public void deleteByObject(EventSource eventSource) { - public void updateConferenceDeadlines(Conference conference) { - eventRepository.deleteAll(eventRepository.findAllByConference(conference)); - createFromObject(conference, Collections.emptyList(), false, "конференции"); - } - - public void updateGrantDeadlines(Grant grant) { - eventRepository.deleteAll(eventRepository.findAllByGrant(grant)); - createFromObject(grant, Collections.emptyList(), false, "гранта"); - } - - public void updateProjectDeadlines(Project project) { - eventRepository.deleteAll(eventRepository.findAllByProject(project)); - createFromObject(project, Collections.emptyList(), false, "проекта"); - } - - public void removeConferencesEvent(Conference conference) { - List eventList = eventRepository.findAllByConference(conference); - eventList.forEach(event -> eventRepository.deleteById(event.getId())); - } - public void updateTaskDeadlines(Task task) { - eventRepository.deleteAll(eventRepository.findAllByTask(task)); - createFromObject(task, Collections.emptyList(), true, "задачи"); } } \ No newline at end of file diff --git a/src/main/java/ru/ulstu/activity/timeline/service/TimelineService.java b/src/main/java/ru/ulstu/activity/timeline/service/TimelineService.java deleted file mode 100644 index e84f314..0000000 --- a/src/main/java/ru/ulstu/activity/timeline/service/TimelineService.java +++ /dev/null @@ -1,60 +0,0 @@ -package ru.ulstu.activity.timeline.service; - -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; -import ru.ulstu.activity.timeline.model.EventDto; -import ru.ulstu.activity.timeline.model.Timeline; -import ru.ulstu.activity.timeline.model.TimelineDto; -import ru.ulstu.activity.timeline.repository.TimelineRepository; - -import java.util.List; - -import static ru.ulstu.core.util.StreamApiUtils.convert; - -@Service -public class TimelineService { - - private final TimelineRepository timelineRepository; - private final EventService eventService; - - public TimelineService(TimelineRepository timelineRepository, - EventService eventService) { - this.timelineRepository = timelineRepository; - this.eventService = eventService; - } - - public List findAllDto() { - return convert(timelineRepository.findAll(), TimelineDto::new); - } - - public List findAll() { - return timelineRepository.findAll(); - } - - @Transactional - public int create(TimelineDto timelineDto) { - return timelineRepository.save(copyFromDto(new Timeline(), timelineDto)).getId(); - } - - @Transactional - public Timeline save(Timeline timeline) { - return timelineRepository.save(timeline); - } - - private Timeline copyFromDto(Timeline timeline, TimelineDto timelineDto) { - timeline.setEvents(eventService.findByIds(convert(timelineDto.getEvents(), EventDto::getId))); - return timeline; - } - - @Transactional - public Integer update(TimelineDto timelineDto) { - Timeline timeline = timelineRepository.getOne(timelineDto.getId()); - return timelineRepository.save(copyFromDto(timeline, timelineDto)).getId(); - } - - @Transactional - public void delete(Integer timelineId) { - Timeline timeline = timelineRepository.getOne(timelineId); - timelineRepository.delete(timeline); - } -} -- 2.25.1 From aae86b94b5e41d471da70a590fbb437ee0f9fc86 Mon Sep 17 00:00:00 2001 From: Anton Romanov Date: Sat, 20 Jul 2019 11:24:22 +0400 Subject: [PATCH 37/45] fix query --- .../ru/ulstu/activity/timeline/service/EventRepository.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/ru/ulstu/activity/timeline/service/EventRepository.java b/src/main/java/ru/ulstu/activity/timeline/service/EventRepository.java index 8f3de13..54660e7 100644 --- a/src/main/java/ru/ulstu/activity/timeline/service/EventRepository.java +++ b/src/main/java/ru/ulstu/activity/timeline/service/EventRepository.java @@ -33,9 +33,9 @@ interface EventRepository extends JpaRepository { List findAllByTask(Task task); - @Query("SELECT e FROM Event e WHERE e.recipients = :user ORDER BY e.executeDate") + @Query("SELECT e FROM Event e WHERE (:user MEMBER OF e.recipients) ORDER BY e.executeDate") Page findByUser(Pageable offsetablePageRequest, @Param("user") User user); - @Query("SELECT e FROM Event e WHERE e.recipients = :user AND e.executeDate > CURRENT_DATE ORDER BY e.executeDate") + @Query("SELECT e FROM Event e WHERE (:user MEMBER OF e.recipients) AND e.executeDate > CURRENT_DATE ORDER BY e.executeDate") Page findUserFuture(Pageable offsetablePageRequest, @Param("user") User user); } \ No newline at end of file -- 2.25.1 From f1229b60198ac7ee91b4127e2b50c97014d940f9 Mon Sep 17 00:00:00 2001 From: Anton Romanov Date: Sat, 20 Jul 2019 12:16:08 +0400 Subject: [PATCH 38/45] fix using deadline dto --- .../conference/model/ConferenceDto.java | 96 +----- .../conference/service/ConferenceService.java | 135 +-------- .../activity/deadline/model/Deadline.java | 2 +- .../activity/deadline/model/DeadlineDto.java | 61 ++++ .../deadline/service/DeadlineService.java | 32 +- .../grant/controller/GrantController.java | 2 +- .../ulstu/activity/grant/model/GrantDto.java | 99 +----- .../activity/grant/service/GrantService.java | 92 ------ .../ulstu/activity/paper/model/PaperDto.java | 12 +- .../activity/project/model/ProjectDto.java | 50 +--- .../project/service/ProjectService.java | 8 - .../activity/students/model/TaskDto.java | 42 +-- .../students/service/TaskService.java | 22 +- .../conference/ConferenceServiceTest.java | 281 ------------------ src/test/java/project/ProjectServiceTest.java | 149 ---------- src/test/java/students/TaskServiceTest.java | 216 -------------- 16 files changed, 136 insertions(+), 1163 deletions(-) create mode 100644 src/main/java/ru/ulstu/activity/deadline/model/DeadlineDto.java delete mode 100644 src/test/java/conference/ConferenceServiceTest.java delete mode 100644 src/test/java/project/ProjectServiceTest.java delete mode 100644 src/test/java/students/TaskServiceTest.java diff --git a/src/main/java/ru/ulstu/activity/conference/model/ConferenceDto.java b/src/main/java/ru/ulstu/activity/conference/model/ConferenceDto.java index 97da7b5..b6b33ea 100644 --- a/src/main/java/ru/ulstu/activity/conference/model/ConferenceDto.java +++ b/src/main/java/ru/ulstu/activity/conference/model/ConferenceDto.java @@ -4,8 +4,8 @@ import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; import org.springframework.format.annotation.DateTimeFormat; import ru.ulstu.activity.api.model.ActivityDto; -import ru.ulstu.activity.deadline.model.Deadline; -import ru.ulstu.activity.paper.model.Paper; +import ru.ulstu.activity.common.model.ScienceGroupMemberDto; +import ru.ulstu.activity.deadline.model.DeadlineDto; import ru.ulstu.core.model.BaseEntity; import javax.persistence.Temporal; @@ -15,7 +15,6 @@ import javax.validation.constraints.Size; import java.util.ArrayList; import java.util.Date; import java.util.List; -import java.util.Objects; import static ru.ulstu.core.util.StreamApiUtils.convert; @@ -39,12 +38,9 @@ public class ConferenceDto extends ActivityDto { @Temporal(TemporalType.TIMESTAMP) @DateTimeFormat(pattern = "yyyy-MM-dd") private Date endDate = new Date(); - private List deadlines = new ArrayList<>(); - private List removedDeadlineIds = new ArrayList<>(); - private List userIds = new ArrayList<>(); + private List deadlines = new ArrayList<>(); + private List userIds = new ArrayList<>(); private List paperIds = new ArrayList<>(); - private List papers = new ArrayList<>(); - private List notSelectedPapers = new ArrayList<>(); private List users = new ArrayList<>(); private boolean disabledTakePart = false; @@ -56,13 +52,10 @@ public class ConferenceDto extends ActivityDto { @JsonProperty("ping") Integer ping, @JsonProperty("beginDate") Date beginDate, @JsonProperty("endDate") Date endDate, - @JsonProperty("deadlines") List deadlines, - @JsonProperty("userIds") List userIds, + @JsonProperty("deadlines") List deadlines, + @JsonProperty("userIds") List userIds, @JsonProperty("paperIds") List paperIds, - @JsonProperty("users") List users, - @JsonProperty("papers") List papers, - @JsonProperty("notSelectedPapers") List notSelectedPapers, - @JsonProperty("notSelectedPapers") Boolean disabledTakePart) { + @JsonProperty("users") List users) { super(id); this.description = description; this.url = url; @@ -73,9 +66,7 @@ public class ConferenceDto extends ActivityDto { this.userIds = userIds; this.paperIds = paperIds; this.users = users; - this.papers = papers; - this.notSelectedPapers = notSelectedPapers; - this.disabledTakePart = disabledTakePart; + this.title = title; } public ConferenceDto(Conference conference) { @@ -86,11 +77,10 @@ public class ConferenceDto extends ActivityDto { this.ping = conference.getPing(); this.beginDate = conference.getBeginDate(); this.endDate = conference.getEndDate(); - this.deadlines = conference.getDeadlines(); - this.userIds = convert(conference.getUsers(), BaseEntity::getId); + this.deadlines = convert(conference.getDeadlines(), DeadlineDto::new); + this.userIds = convert(conference.getUsers(), ScienceGroupMemberDto::new); this.paperIds = convert(conference.getPapers(), BaseEntity::getId); this.users = conference.getUsers(); - this.papers = conference.getPapers(); } public ConferenceDto() { @@ -153,19 +143,19 @@ public class ConferenceDto extends ActivityDto { this.endDate = endDate; } - public List getDeadlines() { + public List getDeadlines() { return deadlines; } - public void setDeadlines(List deadlines) { + public void setDeadlines(List deadlines) { this.deadlines = deadlines; } - public List getUserIds() { + public List getUserIds() { return userIds; } - public void setUserIds(List userIds) { + public void setUserIds(List userIds) { this.userIds = userIds; } @@ -177,14 +167,6 @@ public class ConferenceDto extends ActivityDto { this.paperIds = paperIds; } - public List getPapers() { - return papers; - } - - public void setPapers(List papers) { - this.papers = papers; - } - public List getUsers() { return users; } @@ -200,54 +182,4 @@ public class ConferenceDto extends ActivityDto { public void setDisabledTakePart(boolean disabledTakePart) { this.disabledTakePart = disabledTakePart; } - - public List getRemovedDeadlineIds() { - return removedDeadlineIds; - } - - public void setRemovedDeadlineIds(List removedDeadlineIds) { - this.removedDeadlineIds = removedDeadlineIds; - } - - public List getNotSelectedPapers() { - return notSelectedPapers; - } - - public void setNotSelectedPapers(List notSelectedPapers) { - this.notSelectedPapers = notSelectedPapers; - } - - public String getDatesString() { - return BEGIN_DATE + beginDate.toString().split(" ")[0] + " " + END_DATE + endDate.toString().split(" ")[0]; - } - - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - ConferenceDto that = (ConferenceDto) o; - return ping == that.ping && - disabledTakePart == that.disabledTakePart && - Objects.equals(id, that.id) && - Objects.equals(title, that.title) && - Objects.equals(description, that.description) && - Objects.equals(url, that.url) && - Objects.equals(deadlines, that.deadlines) && - Objects.equals(removedDeadlineIds, that.removedDeadlineIds) && - Objects.equals(userIds, that.userIds) && - Objects.equals(paperIds, that.paperIds) && - Objects.equals(papers, that.papers) && - Objects.equals(notSelectedPapers, that.notSelectedPapers) && - Objects.equals(users, that.users); - } - - @Override - public int hashCode() { - return Objects.hash(id, title, description, url, ping, beginDate, endDate, deadlines, removedDeadlineIds, - userIds, paperIds, papers, notSelectedPapers, users, disabledTakePart); - } } diff --git a/src/main/java/ru/ulstu/activity/conference/service/ConferenceService.java b/src/main/java/ru/ulstu/activity/conference/service/ConferenceService.java index a280439..d92424b 100644 --- a/src/main/java/ru/ulstu/activity/conference/service/ConferenceService.java +++ b/src/main/java/ru/ulstu/activity/conference/service/ConferenceService.java @@ -3,17 +3,13 @@ package ru.ulstu.activity.conference.service; import org.springframework.data.domain.Page; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import org.springframework.validation.Errors; import ru.ulstu.activity.common.service.ActivityService; import ru.ulstu.activity.conference.model.Conference; import ru.ulstu.activity.conference.model.ConferenceDashboardDto; import ru.ulstu.activity.conference.model.ConferenceDto; import ru.ulstu.activity.conference.model.ConferenceFilterDto; import ru.ulstu.activity.conference.model.ConferenceListDto; -import ru.ulstu.activity.conference.model.ConferenceUser; -import ru.ulstu.activity.deadline.model.Deadline; import ru.ulstu.activity.deadline.service.DeadlineService; -import ru.ulstu.activity.paper.model.Paper; import ru.ulstu.activity.paper.service.PaperService; import ru.ulstu.activity.ping.service.PingService; import ru.ulstu.activity.timeline.service.EventService; @@ -23,12 +19,9 @@ import ru.ulstu.user.model.User; import ru.ulstu.user.service.UserService; import java.io.IOException; -import java.util.Arrays; import java.util.Date; import java.util.List; -import java.util.stream.Collectors; -import static org.springframework.util.ObjectUtils.isEmpty; import static ru.ulstu.core.util.StreamApiUtils.convert; import static ru.ulstu.core.util.StreamApiUtils.convertPageable; @@ -63,31 +56,6 @@ public class ConferenceService extends ActivityService getNotSelectPapers(List paperIds) { - return paperService.findAllNotSelect(paperIds); - } - - public List getAllUsers() { - return userService.findAll(); - } - - public List getAllParticipations() { - return Arrays.asList(ConferenceUser.Participation.values()); - } - - public List getAllDeposit() { - return Arrays.asList(ConferenceUser.Deposit.values()); - } - protected Conference copyFromDto(Conference conference, ConferenceDto conferenceDto) throws IOException { conference.setTitle(conferenceDto.getTitle()); conference.setDescription(conferenceDto.getDescription()); @@ -183,7 +99,7 @@ public class ConferenceService extends ActivityService conference.getPapers().add(paper.getId() != null ? paperService.findById(paper.getId()) : paperService.create(paper))); + conferenceDto.getPaperIds().forEach(paperId -> conference.getPapers().add(paperService.findById(paperId))); conference.setDeadlines(deadlineService.saveOrCreate(conferenceDto.getDeadlines())); conference.setUsers(conferenceUserService.saveOrCreate(conferenceDto.getUsers())); if (conferenceDto.getPaperIds() != null && !conferenceDto.getPaperIds().isEmpty()) { @@ -193,11 +109,6 @@ public class ConferenceService extends ActivityService conferenceUsers) { - return conferenceUsers.stream().anyMatch(participant -> participant.getUser().equals(userService.getCurrentUser())); - } - public List filter(ConferenceFilterDto conferenceFilterDto) { return convert(conferenceRepository.findByUserAndYear( conferenceFilterDto.getFilterUserId() == null ? null : userService.findById(conferenceFilterDto.getFilterUserId()), @@ -215,10 +126,6 @@ public class ConferenceService extends ActivityService(activeConferencePage.getTotalElements(), activeConferencePage.getContent()); } - public boolean isAttachedToConference(Integer paperId) { - return conferenceRepository.isPaperAttached(paperId); - } - public ConferenceDto findConferenceById(Integer id) { return new ConferenceDto(findById(id)); } @@ -227,46 +134,6 @@ public class ConferenceService extends ActivityService oldDeadlines) { - if (oldDeadlines.size() != conference.getDeadlines().size()) { - conferenceNotificationService.updateDeadlineNotification(conference); - return; - } - - if (conference.getDeadlines() - .stream() - .filter(deadline -> !oldDeadlines.contains(deadline)) - .count() > 0) { - conferenceNotificationService.updateDeadlineNotification(conference); - } - } - - private Deadline copyDeadline(Deadline oldDeadline) { - Deadline newDeadline = new Deadline(oldDeadline.getDate(), oldDeadline.getDescription()); - newDeadline.setId(oldDeadline.getId()); - return newDeadline; - } - - private void checkEmptyFieldsOfDeadline(ConferenceDto conferenceDto, Errors errors) { - for (Deadline deadline : conferenceDto.getDeadlines()) { - if (deadline.getDate() == null || deadline.getDescription().isEmpty()) { - errors.rejectValue("deadlines", "errorCode", "Все поля дедлайна должны быть заполнены"); - } - } - } - - private void checkEmptyFieldsOfDates(ConferenceDto conferenceDto, Errors errors) { - if (conferenceDto.getBeginDate() == null || conferenceDto.getEndDate() == null) { - errors.rejectValue("beginDate", "errorCode", "Даты должны быть заполнены"); - } - } - - public void filterEmptyDeadlines(ConferenceDto conferenceDto) { - conferenceDto.setDeadlines(conferenceDto.getDeadlines().stream() - .filter(dto -> dto.getDate() != null || !org.springframework.util.StringUtils.isEmpty(dto.getDescription())) - .collect(Collectors.toList())); - } - public Conference getActiveConferenceByUser(User user) { return conferenceRepository.findActiveByUser(user); } diff --git a/src/main/java/ru/ulstu/activity/deadline/model/Deadline.java b/src/main/java/ru/ulstu/activity/deadline/model/Deadline.java index d68ed5a..c4b07fa 100644 --- a/src/main/java/ru/ulstu/activity/deadline/model/Deadline.java +++ b/src/main/java/ru/ulstu/activity/deadline/model/Deadline.java @@ -82,7 +82,7 @@ public class Deadline extends BaseEntity { this.executors = executors; } - public Boolean getDone() { + public Boolean isDone() { return done; } diff --git a/src/main/java/ru/ulstu/activity/deadline/model/DeadlineDto.java b/src/main/java/ru/ulstu/activity/deadline/model/DeadlineDto.java new file mode 100644 index 0000000..31b77fb --- /dev/null +++ b/src/main/java/ru/ulstu/activity/deadline/model/DeadlineDto.java @@ -0,0 +1,61 @@ +package ru.ulstu.activity.deadline.model; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + +public class DeadlineDto { + private final Integer id; + private final Date date; + private final String description; + private final List executorsIds; + private final Boolean done; + + public DeadlineDto() { + this.id = null; + this.date = null; + this.description = null; + this.executorsIds = new ArrayList<>(); + this.done = false; + } + + public DeadlineDto(Deadline deadline) { + this.id = deadline.getId(); + this.date = deadline.getDate(); + this.description = deadline.getDescription(); + this.executorsIds = deadline.getExecutors() + .stream() + .map(executor -> executor.getId()) + .collect(Collectors.toList()); + this.done = deadline.isDone(); + } + + public DeadlineDto(Date date, String description) { + this.id = null; + this.date = date; + this.description = description; + this.executorsIds = new ArrayList<>(); + this.done = false; + } + + public Integer getId() { + return id; + } + + public Date getDate() { + return date; + } + + public String getDescription() { + return description; + } + + public List getExecutorsIds() { + return executorsIds; + } + + public Boolean isDone() { + return done; + } +} diff --git a/src/main/java/ru/ulstu/activity/deadline/service/DeadlineService.java b/src/main/java/ru/ulstu/activity/deadline/service/DeadlineService.java index b655985..cf78f54 100644 --- a/src/main/java/ru/ulstu/activity/deadline/service/DeadlineService.java +++ b/src/main/java/ru/ulstu/activity/deadline/service/DeadlineService.java @@ -3,6 +3,8 @@ package ru.ulstu.activity.deadline.service; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import ru.ulstu.activity.deadline.model.Deadline; +import ru.ulstu.activity.deadline.model.DeadlineDto; +import ru.ulstu.user.service.UserService; import java.util.Date; import java.util.List; @@ -11,12 +13,15 @@ import java.util.stream.Collectors; @Service public class DeadlineService { private final DeadlineRepository deadlineRepository; + private final UserService userService; - public DeadlineService(DeadlineRepository deadlineRepository) { + public DeadlineService(DeadlineRepository deadlineRepository, + UserService userService) { this.deadlineRepository = deadlineRepository; + this.userService = userService; } - public List saveOrCreate(List deadlines) { + public List saveOrCreate(List deadlines) { return deadlines .stream() .map(deadline -> { @@ -25,16 +30,17 @@ public class DeadlineService { } @Transactional - public Deadline update(Deadline deadline) { - Deadline updateDeadline = deadlineRepository.getOne(deadline.getId()); - updateDeadline.setDate(deadline.getDate()); - updateDeadline.setDescription(deadline.getDescription()); - updateDeadline.setExecutors(deadline.getExecutors()); - updateDeadline.setDone(deadline.getDone()); - deadlineRepository.save(updateDeadline); + public Deadline update(DeadlineDto deadlineDto) { + Deadline updateDeadline = deadlineRepository.getOne(deadlineDto.getId()); + deadlineRepository.save(copyFromDto(updateDeadline, deadlineDto)); return updateDeadline; } + @Transactional + public Deadline create(DeadlineDto deadlineDto) { + return deadlineRepository.save(copyFromDto(new Deadline(), deadlineDto)); + } + @Transactional public Deadline create(Deadline deadline) { return deadlineRepository.save(deadline); @@ -45,6 +51,14 @@ public class DeadlineService { deadlineRepository.deleteById(deadlineId); } + private Deadline copyFromDto(Deadline deadline, DeadlineDto deadlineDto) { + deadline.setDate(deadlineDto.getDate()); + deadline.setDescription(deadlineDto.getDescription()); + deadline.setExecutors(userService.findByIds(deadlineDto.getExecutorsIds())); + deadline.setDone(deadlineDto.isDone()); + return deadline; + } + public Date findByGrantIdAndDate(Integer id, Date date) { return deadlineRepository.findByGrantIdAndDate(id, date); } diff --git a/src/main/java/ru/ulstu/activity/grant/controller/GrantController.java b/src/main/java/ru/ulstu/activity/grant/controller/GrantController.java index a5563ff..93fbba8 100644 --- a/src/main/java/ru/ulstu/activity/grant/controller/GrantController.java +++ b/src/main/java/ru/ulstu/activity/grant/controller/GrantController.java @@ -31,7 +31,7 @@ public class GrantController implements ActivityController deadlines = new ArrayList<>(); + private List deadlines = new ArrayList<>(); private String comment; private List files = new ArrayList<>(); - private ProjectDto project; + private List projectIds; private Set authorIds; private Set members; private Integer leaderId; - private boolean wasLeader; - private boolean hasAge; - private boolean hasDegree; - private boolean hasBAKPapers; - private boolean hasScopusPapers; private List paperIds = new ArrayList<>(); - private List papers = new ArrayList<>(); - private List removedDeadlineIds = new ArrayList<>(); @JsonCreator public GrantDto(@JsonProperty("id") Integer id, @JsonProperty("title") String title, @JsonProperty("status") Grant.GrantStatus status, - @JsonProperty("deadlines") List deadlines, + @JsonProperty("deadlines") List deadlines, @JsonProperty("comment") String comment, @JsonProperty("files") List files, @JsonProperty("project") ProjectDto project, @@ -59,15 +52,10 @@ public class GrantDto extends ActivityDto { this.deadlines = deadlines; this.comment = comment; this.files = files; - this.project = project; this.authorIds = authorIds; this.members = members; this.leaderId = leaderId; - this.wasLeader = wasLeader; - this.hasAge = hasAge; - this.hasDegree = hasDegree; this.paperIds = paperIds; - this.papers = papers; } public GrantDto(Integer id) { @@ -78,24 +66,19 @@ public class GrantDto extends ActivityDto { super(grant.getId()); this.title = grant.getTitle(); this.status = grant.getStatus(); - this.deadlines = grant.getDeadlines(); + this.deadlines = convert(grant.getDeadlines(), DeadlineDto::new); this.comment = grant.getComment(); this.files = convert(grant.getFiles(), FileDataDto::new); - this.project = grant.getProject() == null ? null : new ProjectDto(grant.getProject()); this.authorIds = convert(grant.getAuthors(), user -> user.getId()); this.members = convert(grant.getAuthors(), ScienceGroupMemberDto::new); this.leaderId = grant.getLeader().getId(); - this.wasLeader = false; - this.hasAge = false; - this.hasDegree = false; this.paperIds = convert(grant.getPapers(), paper -> paper.getId()); - this.papers = convert(grant.getPapers(), PaperDto::new); } - public GrantDto(String grantTitle, Date deadLineDate) { + public GrantDto(String grantTitle, Date deadlineDate) { super(null); this.title = grantTitle; - this.deadlines.add(new Deadline(deadLineDate, "Окончание приёма заявок")); + this.deadlines.add(new DeadlineDto(deadlineDate, "Окончание приёма заявок")); this.status = Grant.GrantStatus.LOADED_FROM_KIAS; } @@ -119,11 +102,11 @@ public class GrantDto extends ActivityDto { this.status = status; } - public List getDeadlines() { + public List getDeadlines() { return deadlines; } - public void setDeadlines(List deadlines) { + public void setDeadlines(List deadlines) { this.deadlines = deadlines; } @@ -143,14 +126,6 @@ public class GrantDto extends ActivityDto { this.files = files; } - public ProjectDto getProject() { - return project; - } - - public void setProject(ProjectDto project) { - this.project = project; - } - public Set getAuthorIds() { return authorIds; } @@ -175,30 +150,6 @@ public class GrantDto extends ActivityDto { this.leaderId = leaderId; } - public boolean isWasLeader() { - return wasLeader; - } - - public void setWasLeader(boolean wasLeader) { - this.wasLeader = wasLeader; - } - - public boolean isHasAge() { - return hasAge; - } - - public void setHasAge(boolean hasAge) { - this.hasAge = hasAge; - } - - public boolean isHasDegree() { - return hasDegree; - } - - public void setHasDegree(boolean hasDegree) { - this.hasDegree = hasDegree; - } - public List getPaperIds() { return paperIds; } @@ -207,35 +158,7 @@ public class GrantDto extends ActivityDto { this.paperIds = paperIds; } - public List getPapers() { - return papers; - } - - public void setPapers(List papers) { - this.papers = papers; - } - - public List getRemovedDeadlineIds() { - return removedDeadlineIds; - } - - public void setRemovedDeadlineIds(List removedDeadlineIds) { - this.removedDeadlineIds = removedDeadlineIds; - } - - public boolean isHasBAKPapers() { - return hasBAKPapers; - } - - public void setHasBAKPapers(boolean hasBAKPapers) { - this.hasBAKPapers = hasBAKPapers; - } - - public boolean isHasScopusPapers() { - return hasScopusPapers; - } - - public void setHasScopusPapers(boolean hasScopusPapers) { - this.hasScopusPapers = hasScopusPapers; + public List getProjectIds() { + return projectIds; } } diff --git a/src/main/java/ru/ulstu/activity/grant/service/GrantService.java b/src/main/java/ru/ulstu/activity/grant/service/GrantService.java index 596d61e..84f9fcf 100644 --- a/src/main/java/ru/ulstu/activity/grant/service/GrantService.java +++ b/src/main/java/ru/ulstu/activity/grant/service/GrantService.java @@ -1,6 +1,5 @@ package ru.ulstu.activity.grant.service; -import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.data.domain.Page; @@ -8,7 +7,6 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.Errors; import ru.ulstu.activity.common.service.ActivityService; -import ru.ulstu.activity.deadline.model.Deadline; import ru.ulstu.activity.deadline.service.DeadlineService; import ru.ulstu.activity.file.service.FileService; import ru.ulstu.activity.grant.model.Grant; @@ -30,13 +28,10 @@ import ru.ulstu.user.service.UserService; import java.io.IOException; import java.text.ParseException; import java.util.Arrays; -import java.util.Collections; import java.util.Date; import java.util.List; -import java.util.stream.Collectors; import static java.util.stream.Collectors.toList; -import static org.springframework.util.ObjectUtils.isEmpty; import static ru.ulstu.activity.grant.model.Grant.GrantStatus.APPLICATION; import static ru.ulstu.core.util.StreamApiUtils.convertPageable; @@ -114,9 +109,6 @@ public class GrantService extends ActivityService grant.setComment(grantDto.getComment()); grant.setStatus(grantDto.getStatus() == null ? APPLICATION : grantDto.getStatus()); grant.setTitle(grantDto.getTitle()); - if (grantDto.getProject() != null && grantDto.getProject().getId() != null) { - grant.setProject(projectService.findById(grantDto.getProject().getId())); - } grant.setDeadlines(deadlineService.saveOrCreate(grantDto.getDeadlines())); if (!grant.getFiles().isEmpty()) { grant.setFiles(fileService.saveOrCreate(grantDto.getFiles().stream() @@ -151,23 +143,6 @@ public class GrantService extends ActivityService return Arrays.asList(Grant.GrantStatus.values()); } - public boolean save(GrantDto grantDto, Errors errors) throws IOException { - grantDto.setTitle(grantDto.getTitle()); - filterEmptyDeadlines(grantDto); - checkEmptyDeadlines(grantDto, errors); - checkEmptyLeader(grantDto, errors); - checkUniqueName(grantDto.getTitle(), grantDto.getId()); - if (errors.hasErrors()) { - return false; - } - if (isEmpty(grantDto.getId())) { - create(grantDto); - } else { - update(grantDto); - } - return true; - } - private boolean saveFromKias(GrantDto grantDto) throws IOException { grantDto.setTitle(grantDto.getTitle()); if (checkUniqueName(grantDto.getTitle(), grantDto.getId())) { @@ -202,33 +177,6 @@ public class GrantService extends ActivityService return foundGrantDate != null && foundGrantDate.compareTo(date) == 0; } - public List getGrantAuthors(GrantDto grantDto) { - List filteredUsers = userService.filterByAgeAndDegree(grantDto.isHasAge(), grantDto.isHasDegree()); - if (grantDto.isWasLeader()) { - filteredUsers = checkContains(filteredUsers, getCompletedGrantLeaders()); - } - if (grantDto.isHasBAKPapers()) { - filteredUsers = checkContains(filteredUsers, getBAKAuthors()); - } - if (grantDto.isHasScopusPapers()) { - filteredUsers = checkContains(filteredUsers, getScopusAuthors()); - } - return filteredUsers; - } - - private List checkContains(List filteredUsers, List checkUsers) { - return filteredUsers.stream() - .filter(checkUsers::contains) - .collect(toList()); - } - - private List getCompletedGrantLeaders() { - return grantRepository.findByStatus(Grant.GrantStatus.COMPLETED) - .stream() - .map(Grant::getLeader) - .collect(toList()); - } - public List getGrantPapers(List paperIds) { return paperService.findAllSelect(paperIds); } @@ -237,24 +185,6 @@ public class GrantService extends ActivityService return paperService.findAllNotCompleted(); } - public List attachPaper(GrantDto grantDto) { - if (!grantDto.getPaperIds().isEmpty()) { - grantDto.getPapers().clear(); - grantDto.setPapers(getGrantPapers(grantDto.getPaperIds())); - } else { - grantDto.getPapers().clear(); - } - return grantDto.getPapers(); - } - - public GrantDto removeDeadline(GrantDto grantDto, Integer deadlineId) { - if (grantDto.getDeadlines().get(deadlineId).getId() != null) { - grantDto.getRemovedDeadlineIds().add(grantDto.getDeadlines().get(deadlineId).getId()); - } - grantDto.getDeadlines().remove((int) deadlineId); - return grantDto; - } - private List getCompletedPapersAuthors(Paper.PaperType type) { List papers = paperService.findAllCompletedByType(type); return papers.stream() @@ -263,28 +193,6 @@ public class GrantService extends ActivityService .collect(toList()); } - private List getBAKAuthors() { - return getCompletedPapersAuthors(Paper.PaperType.VAK) - .stream() - .distinct() - .collect(toList()); - } - - private List getScopusAuthors() { - List authors = getCompletedPapersAuthors(Paper.PaperType.SCOPUS); - return authors - .stream() - .filter(author -> Collections.frequency(authors, author) > 3) - .collect(toList()); - } - - public List filterEmptyDeadlines(GrantDto grantDto) { - grantDto.setDeadlines(grantDto.getDeadlines().stream() - .filter(dto -> dto.getDate() != null || !StringUtils.isEmpty(dto.getDescription())) - .collect(Collectors.toList())); - return grantDto.getDeadlines(); - } - @Transactional public void createFromKias() throws IOException, ParseException { for (GrantDto grantDto : kiasService.getNewGrantsDto()) { diff --git a/src/main/java/ru/ulstu/activity/paper/model/PaperDto.java b/src/main/java/ru/ulstu/activity/paper/model/PaperDto.java index 1917193..89ceb8e 100644 --- a/src/main/java/ru/ulstu/activity/paper/model/PaperDto.java +++ b/src/main/java/ru/ulstu/activity/paper/model/PaperDto.java @@ -4,7 +4,7 @@ import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; import ru.ulstu.activity.api.model.ActivityDto; import ru.ulstu.activity.common.model.ScienceGroupMemberDto; -import ru.ulstu.activity.deadline.model.Deadline; +import ru.ulstu.activity.deadline.model.DeadlineDto; import ru.ulstu.activity.file.model.FileDataDto; import javax.validation.constraints.NotEmpty; @@ -25,7 +25,7 @@ public class PaperDto extends ActivityDto { private Date createDate; private Date updateDate; @NotEmpty - private List deadlines = new ArrayList<>(); + private List deadlines = new ArrayList<>(); private String comment; private String url; private Boolean locked; @@ -45,7 +45,7 @@ public class PaperDto extends ActivityDto { @JsonProperty("type") Paper.PaperType type, @JsonProperty("createDate") Date createDate, @JsonProperty("updateDate") Date updateDate, - @JsonProperty("deadlines") List deadlines, + @JsonProperty("deadlines") List deadlines, @JsonProperty("comment") String comment, @JsonProperty("url") String url, @JsonProperty("locked") Boolean locked, @@ -72,7 +72,7 @@ public class PaperDto extends ActivityDto { this.type = paper.getType(); this.createDate = paper.getCreateDate(); this.updateDate = paper.getUpdateDate(); - this.deadlines = paper.getDeadlines(); + this.deadlines = convert(paper.getDeadlines(), DeadlineDto::new); this.comment = paper.getComment(); this.url = paper.getUrl(); this.locked = paper.getLocked(); @@ -120,11 +120,11 @@ public class PaperDto extends ActivityDto { this.updateDate = updateDate; } - public List getDeadlines() { + public List getDeadlines() { return deadlines; } - public void setDeadlines(List deadlines) { + public void setDeadlines(List deadlines) { this.deadlines = deadlines; } diff --git a/src/main/java/ru/ulstu/activity/project/model/ProjectDto.java b/src/main/java/ru/ulstu/activity/project/model/ProjectDto.java index 8cc84b4..f97b10d 100644 --- a/src/main/java/ru/ulstu/activity/project/model/ProjectDto.java +++ b/src/main/java/ru/ulstu/activity/project/model/ProjectDto.java @@ -3,11 +3,9 @@ package ru.ulstu.activity.project.model; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; import ru.ulstu.activity.api.model.ActivityDto; -import ru.ulstu.activity.deadline.model.Deadline; +import ru.ulstu.activity.deadline.model.DeadlineDto; import ru.ulstu.activity.file.model.FileDataDto; -import ru.ulstu.activity.grant.model.GrantDto; import ru.ulstu.user.model.User; -import ru.ulstu.user.model.UserDto; import javax.validation.constraints.NotEmpty; import java.util.ArrayList; @@ -22,28 +20,22 @@ public class ProjectDto extends ActivityDto { private String title; private Project.ProjectStatus status; private String description; - private List deadlines = new ArrayList<>(); + private List deadlines = new ArrayList<>(); private String repository; private List files = new ArrayList<>(); - private List removedDeadlineIds = new ArrayList<>(); private Set executorIds; - private List executors; private List grantIds; - private List grants; @JsonCreator public ProjectDto(@JsonProperty("id") Integer id, @JsonProperty("title") String title, @JsonProperty("status") Project.ProjectStatus status, @JsonProperty("description") String description, - @JsonProperty("grant") GrantDto grant, @JsonProperty("repository") String repository, @JsonProperty("files") List files, - @JsonProperty("deadlines") List deadlines, + @JsonProperty("deadlines") List deadlines, @JsonProperty("executorIds") Set executorIds, - @JsonProperty("executors") List executors, - @JsonProperty("grantIds") List grantIds, - @JsonProperty("grants") List grants) { + @JsonProperty("grantIds") List grantIds) { super(id); this.title = title; this.status = status; @@ -52,9 +44,7 @@ public class ProjectDto extends ActivityDto { this.deadlines = deadlines; this.files = files; this.executorIds = executorIds; - this.executors = executors; this.grantIds = grantIds; - this.grants = grants; } @@ -66,11 +56,9 @@ public class ProjectDto extends ActivityDto { this.description = project.getDescription(); this.files = convert(project.getFiles(), FileDataDto::new); this.repository = project.getRepository(); - this.deadlines = project.getDeadlines(); + this.deadlines = convert(project.getDeadlines(), DeadlineDto::new); this.executorIds = convert(users, user -> user.getId()); - this.executors = convert(project.getExecutors(), UserDto::new); this.grantIds = convert(project.getGrants(), grant -> grant.getId()); - this.grants = convert(project.getGrants(), GrantDto::new); } public String getTitle() { @@ -105,11 +93,11 @@ public class ProjectDto extends ActivityDto { this.repository = repository; } - public List getDeadlines() { + public List getDeadlines() { return deadlines; } - public void setDeadlines(List deadlines) { + public void setDeadlines(List deadlines) { this.deadlines = deadlines; } @@ -121,14 +109,6 @@ public class ProjectDto extends ActivityDto { this.files = files; } - public List getRemovedDeadlineIds() { - return removedDeadlineIds; - } - - public void setRemovedDeadlineIds(List removedDeadlineIds) { - this.removedDeadlineIds = removedDeadlineIds; - } - public Set getExecutorIds() { return executorIds; } @@ -137,14 +117,6 @@ public class ProjectDto extends ActivityDto { this.executorIds = executorIds; } - public List getExecutors() { - return executors; - } - - public void setExecutors(List executors) { - this.executors = executors; - } - public List getGrantIds() { return grantIds; } @@ -152,12 +124,4 @@ public class ProjectDto extends ActivityDto { public void setGrantIds(List grantIds) { this.grantIds = grantIds; } - - public List getGrants() { - return grants; - } - - public void setGrants(List grants) { - this.grants = grants; - } } diff --git a/src/main/java/ru/ulstu/activity/project/service/ProjectService.java b/src/main/java/ru/ulstu/activity/project/service/ProjectService.java index 5d2eccc..b7b0a8b 100644 --- a/src/main/java/ru/ulstu/activity/project/service/ProjectService.java +++ b/src/main/java/ru/ulstu/activity/project/service/ProjectService.java @@ -97,14 +97,6 @@ public class ProjectService extends ActivityService deadlines = new ArrayList<>(); + private List deadlines = new ArrayList<>(); private Date createDate; private Date updateDate; private Set tagIds; - private List tags = new ArrayList<>(); @JsonCreator public TaskDto(@JsonProperty("id") Integer id, @@ -35,9 +33,8 @@ public class TaskDto extends ActivityDto { @JsonProperty("createDate") Date createDate, @JsonProperty("updateDate") Date updateDate, @JsonProperty("status") Task.TaskStatus status, - @JsonProperty("deadlines") List deadlines, - @JsonProperty("tagIds") Set tagIds, - @JsonProperty("tags") List tags) { + @JsonProperty("deadlines") List deadlines, + @JsonProperty("tagIds") Set tagIds) { super(id); this.title = title; this.status = status; @@ -45,18 +42,16 @@ public class TaskDto extends ActivityDto { this.createDate = createDate; this.updateDate = updateDate; this.description = description; - this.tags = tags; } public TaskDto(Task task) { super(task.getId()); this.title = task.getTitle(); this.status = task.getStatus(); - this.deadlines = task.getDeadlines(); + this.deadlines = convert(task.getDeadlines(), DeadlineDto::new); this.createDate = task.getCreateDate(); this.updateDate = task.getUpdateDate(); this.description = task.getDescription(); - this.tags = task.getTags(); } public String getTitle() { @@ -83,14 +78,6 @@ public class TaskDto extends ActivityDto { this.status = status; } - public List getDeadlines() { - return deadlines; - } - - public void setDeadlines(List deadlines) { - this.deadlines = deadlines; - } - public Date getCreateDate() { return createDate; } @@ -115,18 +102,7 @@ public class TaskDto extends ActivityDto { this.tagIds = tagIds; } - public List getTags() { - return tags; - } - - public void setTags(List tags) { - this.tags = tags; - } - - public String getTagsString() { - return StringUtils.abbreviate(tags - .stream() - .map(tag -> tag.getTagName()) - .collect(Collectors.joining(", ")), MAX_TAGS_LENGTH); + public List getDeadlines() { + return deadlines; } } diff --git a/src/main/java/ru/ulstu/activity/students/service/TaskService.java b/src/main/java/ru/ulstu/activity/students/service/TaskService.java index 7d379ff..c95b290 100644 --- a/src/main/java/ru/ulstu/activity/students/service/TaskService.java +++ b/src/main/java/ru/ulstu/activity/students/service/TaskService.java @@ -22,7 +22,6 @@ import ru.ulstu.core.model.response.PageableItems; import ru.ulstu.core.util.DateUtils; import javax.persistence.EntityNotFoundException; -import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; import java.util.Calendar; @@ -101,18 +100,7 @@ public class TaskService extends ActivityService { } } - @Transactional - public TaskDto create(TaskDto taskDto) { - Task newTask = null; - try { - newTask = copyFromDto(new Task(), taskDto); - } catch (IOException e) { - e.printStackTrace(); - } - return new TaskDto(create(newTask)); - } - - protected Task copyFromDto(Task task, TaskDto taskDto) throws IOException { + protected Task copyFromDto(Task task, TaskDto taskDto) { task.setTitle(taskDto.getTitle()); task.setDescription(taskDto.getDescription()); task.setStatus(taskDto.getStatus() == null ? IN_WORK : taskDto.getStatus()); @@ -120,16 +108,10 @@ public class TaskService extends ActivityService { task.setCreateDate(task.getCreateDate() == null ? new Date() : task.getCreateDate()); task.setUpdateDate(new Date()); task.getTags().clear(); - task.setTags(tagService.saveOrCreate(taskDto.getTags())); + //task.setTags(tagService.saveOrCreate(taskDto.getTags())); return task; } - @Transactional - public TaskDto update(TaskDto taskDto) { - Task task = taskRepository.getOne(taskDto.getId()); - return new TaskDto(update(task)); - } - @Transactional public boolean delete(Integer taskId) { if (taskRepository.existsById(taskId)) { diff --git a/src/test/java/conference/ConferenceServiceTest.java b/src/test/java/conference/ConferenceServiceTest.java deleted file mode 100644 index b89902e..0000000 --- a/src/test/java/conference/ConferenceServiceTest.java +++ /dev/null @@ -1,281 +0,0 @@ -package conference; - -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.mockito.InjectMocks; -import org.mockito.Mock; -import org.springframework.data.domain.Sort; -import org.springframework.test.context.junit4.SpringRunner; -import ru.ulstu.activity.conference.model.Conference; -import ru.ulstu.activity.conference.model.ConferenceDto; -import ru.ulstu.activity.conference.model.ConferenceFilterDto; -import ru.ulstu.activity.conference.model.ConferenceUser; -import ru.ulstu.activity.conference.repository.ConferenceRepository; -import ru.ulstu.activity.conference.service.ConferenceNotificationService; -import ru.ulstu.activity.conference.service.ConferenceService; -import ru.ulstu.activity.conference.service.ConferenceUserService; -import ru.ulstu.activity.deadline.model.Deadline; -import ru.ulstu.activity.deadline.service.DeadlineService; -import ru.ulstu.activity.paper.model.Paper; -import ru.ulstu.activity.paper.service.PaperService; -import ru.ulstu.activity.ping.service.PingService; -import ru.ulstu.activity.timeline.service.EventService; -import ru.ulstu.user.model.User; -import ru.ulstu.user.service.UserService; - -import java.io.IOException; -import java.util.ArrayList; -import java.util.Collections; -import java.util.Date; -import java.util.List; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; -import static org.mockito.Mockito.when; - -@RunWith(SpringRunner.class) -public class ConferenceServiceTest { - - @Mock - ConferenceRepository conferenceRepository; - - @Mock - DeadlineService deadlineService; - - @Mock - ConferenceUserService conferenceUserService; - - @Mock - PaperService paperService; - - @Mock - UserService userService; - - @Mock - EventService eventService; - - @Mock - ConferenceNotificationService conferenceNotificationService; - - @Mock - PingService pingService; - - @InjectMocks - ConferenceService conferenceService; - - private final static Integer ID = 1; - private final static Integer INDEX = 0; - private final static String NAME = "Name"; - private final static String DESCRIPTION = "Desc"; - private final static boolean TRUE = true; - private final static Integer YEAR = 2019; - private final static Sort SORT = new Sort(Sort.Direction.DESC, "beginDate"); - - private List conferences; - private List deadlines; - private List papers; - private List conferenceUsers; - - private Conference conferenceWithId; - - private Paper paperWithId; - private Paper paperWithoutId; - - private ConferenceDto conferenceDto; - private User user; - private Deadline deadline; - - @Before - public void setUp() throws Exception { - conferences = new ArrayList<>(); - conferenceWithId = new Conference(); - - conferenceWithId.setId(ID); - conferenceWithId.setTitle(NAME); - conferenceWithId.setDescription(DESCRIPTION); - - paperWithId = new Paper(); - paperWithId.setId(1); - paperWithId.setTitle(NAME); - - paperWithoutId = new Paper(); - paperWithoutId.setTitle(NAME); - - papers = new ArrayList<>(); - papers.add(paperWithId); - papers.add(paperWithoutId); - - deadlines = new ArrayList<>(); - deadline = new Deadline(new Date(), DESCRIPTION); - deadline.setId(ID); - deadlines.add(deadline); - - ConferenceUser conferenceUser = new ConferenceUser(); - conferenceUser.setDeposit(ConferenceUser.Deposit.ARTICLE); - conferenceUser.setParticipation(ConferenceUser.Participation.INTRAMURAL); - user = new User(); - user.setFirstName(NAME); - conferenceUser.setUser(user); - - conferenceUsers = new ArrayList<>(); - conferenceUsers.add(conferenceUser); - - conferences.add(conferenceWithId); - conferenceDto = new ConferenceDto(conferenceWithId); - } - - @Test - public void getExistConferenceById() { - when(conferenceRepository.getOne(ID)).thenReturn(conferenceWithId); - when(paperService.findAllNotSelect(new ArrayList<>())).thenReturn(papers); - when(userService.getCurrentUser()).thenReturn(user); - - ConferenceDto newConferenceDto = new ConferenceDto(conferenceWithId); - newConferenceDto.setNotSelectedPapers(papers); - newConferenceDto.setDisabledTakePart(!TRUE); - ConferenceDto result = conferenceService.getExistConferenceById(ID); - - assertEquals(newConferenceDto.getId(), result.getId()); - assertEquals(newConferenceDto.getNotSelectedPapers(), result.getNotSelectedPapers()); - assertEquals(newConferenceDto.isDisabledTakePart(), result.isDisabledTakePart()); - } - - @Test - public void getNewConference() { - when(paperService.findAllNotSelect(new ArrayList<>())).thenReturn(papers); - - ConferenceDto newConferenceDto = new ConferenceDto(); - newConferenceDto.setNotSelectedPapers(papers); - ConferenceDto result = new ConferenceDto(); - - assertEquals(newConferenceDto.getId(), result.getId()); - assertEquals(newConferenceDto.getNotSelectedPapers(), result.getNotSelectedPapers()); - assertEquals(newConferenceDto.isDisabledTakePart(), result.isDisabledTakePart()); - } - - @Test - public void findAll() { - when(conferenceRepository.findAll(SORT)).thenReturn(conferences); - - assertEquals(Collections.singletonList(conferenceWithId), conferenceService.findAll(0, 100).getItems()); - } - - @Test - public void create() throws IOException { - when(paperService.findById(ID)).thenReturn(paperWithId); - when(paperService.create(new Paper())).thenReturn(paperWithoutId); - when(deadlineService.saveOrCreate(new ArrayList<>())).thenReturn(deadlines); - when(conferenceUserService.saveOrCreate(new ArrayList<>())).thenReturn(conferenceUsers); - when(conferenceRepository.save(new Conference())).thenReturn(conferenceWithId); - - conferenceDto.setPapers(papers); - conferenceDto.setDeadlines(deadlines); - conferenceDto.setUsers(conferenceUsers); - conferenceDto.getPaperIds().add(ID); - - Conference newConference = new Conference(); - newConference.setId(ID); - newConference.setTitle(NAME); - newConference.setDescription(DESCRIPTION); - newConference.setPapers(papers); - newConference.getPapers().add(paperWithId); - newConference.setDeadlines(deadlines); - newConference.setUsers(conferenceUsers); - - assertEquals(newConference, conferenceService.create(conferenceDto)); - } - - @Test - public void delete() { - when(conferenceRepository.existsById(ID)).thenReturn(true); - when(conferenceRepository.getOne(ID)).thenReturn(conferenceWithId); - assertTrue(conferenceService.delete(ID)); - } - - @Test - public void addDeadline() { - ConferenceDto newConferenceDto = new ConferenceDto(); - newConferenceDto.getDeadlines().add(new Deadline()); - conferenceDto.getDeadlines().clear(); - - assertEquals(newConferenceDto.getDeadlines().get(0), conferenceService.addDeadline(conferenceDto).getDeadlines().get(0)); - } - - @Test - public void removeDeadline() throws IOException { - ConferenceDto newConferenceDto = new ConferenceDto(); - newConferenceDto.getRemovedDeadlineIds().add(ID); - conferenceDto.getDeadlines().add(deadline); - ConferenceDto result = conferenceService.removeDeadline(conferenceDto, INDEX); - - assertEquals(newConferenceDto.getDeadlines(), result.getDeadlines()); - assertEquals(newConferenceDto.getRemovedDeadlineIds(), result.getRemovedDeadlineIds()); - } - - @Test - public void addPaper() { - when(userService.getCurrentUser()).thenReturn(user); - - ConferenceDto newConferenceDto = new ConferenceDto(); - newConferenceDto.getPapers().add(paperWithoutId); - conferenceDto.getPapers().clear(); - ConferenceDto result = conferenceService.addPaper(conferenceDto); - result.getPapers().get(INDEX).setTitle(NAME); // приходится вручную назначать название, т.е. название зависит от даты - - assertEquals(newConferenceDto.getPapers(), result.getPapers()); - } - - @Test - public void removePaper() throws IOException { - ConferenceDto newConferenceDto = new ConferenceDto(); - newConferenceDto.getNotSelectedPapers().add(paperWithId); - newConferenceDto.getPapers().add(paperWithoutId); - conferenceDto.getPapers().add(paperWithId); - conferenceDto.getPapers().add(paperWithoutId); - ConferenceDto result = conferenceService.removePaper(conferenceDto, INDEX); - - assertEquals(newConferenceDto.getPapers(), result.getPapers()); - assertEquals(newConferenceDto.getNotSelectedPapers(), result.getNotSelectedPapers()); - } - - @Test - public void takePart() throws IOException { - when(userService.getCurrentUser()).thenReturn(user); - - ConferenceDto newConferenceDto = new ConferenceDto(); - newConferenceDto.setUsers(conferenceUsers); - newConferenceDto.setDisabledTakePart(TRUE); - conferenceDto.getPapers().clear(); - ConferenceDto result = conferenceService.takePart(conferenceDto); - - assertEquals(newConferenceDto.getUsers(), result.getUsers()); - assertEquals(newConferenceDto.isDisabledTakePart(), result.isDisabledTakePart()); - } - - @Test - public void getAllUsers() { - List users = Collections.singletonList(user); - when(userService.findAll()).thenReturn(users); - assertEquals(users, conferenceService.getAllUsers()); - } - - @Test - public void filter() { - when(userService.findById(ID)).thenReturn(user); - when(conferenceRepository.findByUserAndYear(user, YEAR)).thenReturn(conferences); - - ConferenceFilterDto conferenceFilterDto = new ConferenceFilterDto(); - conferenceFilterDto.setFilterUserId(ID); - conferenceFilterDto.setYear(YEAR); - - assertEquals(Collections.singletonList(conferenceDto), conferenceService.filter(conferenceFilterDto)); - } - - @Test - public void isAttachedToConference() { - when(conferenceRepository.isPaperAttached(ID)).thenReturn(TRUE); - - assertTrue(conferenceService.isAttachedToConference(ID)); - } -} \ No newline at end of file diff --git a/src/test/java/project/ProjectServiceTest.java b/src/test/java/project/ProjectServiceTest.java deleted file mode 100644 index 269a855..0000000 --- a/src/test/java/project/ProjectServiceTest.java +++ /dev/null @@ -1,149 +0,0 @@ -package project; - -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.mockito.InjectMocks; -import org.mockito.Mock; -import org.springframework.test.context.junit4.SpringRunner; -import ru.ulstu.activity.deadline.model.Deadline; -import ru.ulstu.activity.deadline.service.DeadlineService; -import ru.ulstu.activity.file.model.FileData; -import ru.ulstu.activity.file.service.FileService; -import ru.ulstu.activity.grant.model.GrantDto; -import ru.ulstu.activity.grant.service.GrantService; -import ru.ulstu.activity.project.model.Project; -import ru.ulstu.activity.project.model.ProjectDto; -import ru.ulstu.activity.project.repository.ProjectRepository; -import ru.ulstu.activity.project.service.ProjectService; -import ru.ulstu.activity.timeline.service.EventService; -import ru.ulstu.user.model.User; -import ru.ulstu.user.service.UserService; - -import java.io.IOException; -import java.util.ArrayList; -import java.util.Collections; -import java.util.Date; -import java.util.List; - -import static junit.framework.TestCase.assertTrue; -import static org.junit.Assert.assertEquals; -import static org.mockito.Mockito.when; - -@RunWith(SpringRunner.class) -public class ProjectServiceTest { - - @Mock - ProjectRepository projectRepository; - - @Mock - DeadlineService deadlineService; - - @Mock - EventService eventService; - - @Mock - FileService fileService; - - @Mock - UserService userService; - - @Mock - GrantService grantService; - - @InjectMocks - ProjectService projectService; - - private final static String TITLE = "title"; - private final static String DESCR = "descr"; - private final static Integer ID = 1; - private final static Integer INDEX = 0; - private final static String NAME = "name"; - - private List projects; - private Project project; - private ProjectDto projectDto; - private Deadline deadline; - private List deadlines; - private FileData file; - private List files; - private User user; - - @Before - public void setUp() throws Exception { - projects = new ArrayList<>(); - project = new Project(); - - projects.add(project); - projectDto = new ProjectDto(project); - - deadlines = new ArrayList<>(); - deadline = new Deadline(new Date(), DESCR); - deadline.setId(ID); - deadlines.add(deadline); - - user = new User(); - user.setFirstName(NAME); - - List grants = new ArrayList<>(); - GrantDto grant = new GrantDto(ID); - grants.add(grant); - } - - @Test - public void findAll() { - when(projectRepository.findAll()).thenReturn(projects); - assertEquals(projects, projectService.findAll(0, 100).getItems()); - } - - @Test - public void create() throws IOException { - when(deadlineService.saveOrCreate(new ArrayList<>())).thenReturn(deadlines); - when(projectRepository.save(new Project())).thenReturn(project); - eventService.createFromObject(new Project(), Collections.emptyList(), false, "проекта"); - - projectDto.setTitle(TITLE); - projectDto.setDeadlines(deadlines); - - project.setId(ID); - project.setTitle(TITLE); - project.setDescription(DESCR); - project.setDeadlines(deadlines); - project.setFiles(files); - - assertEquals(project.getId(), (projectService.create(projectDto)).getId()); - } - - @Test - public void delete() throws IOException { - when(projectRepository.existsById(ID)).thenReturn(true); - when(projectRepository.getOne(ID)).thenReturn(project); - - assertTrue(projectService.delete(ID)); - } - - @Test - public void getProjectExecutors() { - List executors = Collections.singletonList(user); - when(userService.findAll()).thenReturn(executors); - - assertEquals(executors, projectService.getProjectExecutors(projectDto)); - } - - @Test - public void findById() { - when(projectRepository.getOne(ID)).thenReturn(project); - assertEquals(project, projectService.findById(ID)); - } - - @Test - public void removeDeadline() { - ProjectDto newProjectDto = new ProjectDto(null); - newProjectDto.getRemovedDeadlineIds().add(INDEX); - projectDto.getDeadlines().add(deadline); - ProjectDto result = projectService.removeDeadline(projectDto, INDEX); - - assertEquals(newProjectDto.getDeadlines(), result.getDeadlines()); - assertEquals(newProjectDto.getRemovedDeadlineIds(), result.getRemovedDeadlineIds()); - } -} \ No newline at end of file diff --git a/src/test/java/students/TaskServiceTest.java b/src/test/java/students/TaskServiceTest.java deleted file mode 100644 index 1bdae87..0000000 --- a/src/test/java/students/TaskServiceTest.java +++ /dev/null @@ -1,216 +0,0 @@ -package students; - -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.mockito.InjectMocks; -import org.mockito.Mock; -import org.springframework.data.domain.Sort; -import org.springframework.test.context.junit4.SpringRunner; -import ru.ulstu.activity.deadline.model.Deadline; -import ru.ulstu.activity.deadline.service.DeadlineService; -import ru.ulstu.activity.students.model.Scheduler; -import ru.ulstu.activity.students.model.Task; -import ru.ulstu.activity.students.model.TaskDto; -import ru.ulstu.activity.students.model.TaskFilterDto; -import ru.ulstu.activity.students.repository.SchedulerRepository; -import ru.ulstu.activity.students.repository.TaskRepository; -import ru.ulstu.activity.students.service.TaskService; -import ru.ulstu.activity.tags.model.Tag; -import ru.ulstu.activity.tags.service.TagService; -import ru.ulstu.activity.timeline.service.EventService; -import ru.ulstu.core.util.DateUtils; - -import java.io.IOException; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.Date; -import java.util.HashSet; -import java.util.List; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; -import static org.mockito.Mockito.when; - -@RunWith(SpringRunner.class) -public class TaskServiceTest { - - @Mock - TaskRepository taskRepository; - - @Mock - SchedulerRepository schedulerRepository; - - @Mock - private TagService tagService; - - @Mock - DeadlineService deadlineService; - - @Mock - EventService eventService; - - @InjectMocks - TaskService taskService; - - private final static Sort SORT = new Sort(Sort.Direction.DESC, "createDate"); - private final static Integer ID = 1; - private final static Task.TaskStatus STATUS = Task.TaskStatus.IN_WORK; - private final static String TITLE = "title"; - private final static String DESCR = "descr"; - private final static String TAG = "tag"; - private final static Date YEAR = DateUtils.clearTime(DateUtils.addYears(new Date(), 0)); - - private List tasks; - private List tags; - private Task task; - private Task taskForSchedule; - private TaskDto taskDto; - private Tag tag; - private Deadline deadline; - private List deadlines; - private Scheduler scheduler; - - - @Before - public void setUp() throws Exception { - - tasks = new ArrayList<>(); - task = new Task(); - - task.setId(ID); - task.setTitle(TITLE); - task.setDescription(DESCR); - - - tag = new Tag(); - tag.setId(ID); - tag.setTagName(TAG); - - deadlines = new ArrayList<>(); - deadline = new Deadline(new Date(), DESCR); - deadline.setId(ID); - deadlines.add(deadline); - - task.setDeadlines(deadlines); - - tags = new ArrayList<>(); - tags.add(tag); - - tasks.add(task); - taskDto = new TaskDto(task); - - taskForSchedule = new Task(); - taskForSchedule.setTitle(TITLE); - taskForSchedule.setDescription(DESCR); - - scheduler = new Scheduler(); - scheduler.setDate(new Date()); - scheduler.setTask(taskForSchedule); - - - } - - @Test - public void findAll() { - when(taskRepository.findAll(SORT)).thenReturn(tasks); - assertEquals(Collections.singletonList(task), taskService.findAll()); - } - - @Test - public void filter() { - when(tagService.findById(ID)).thenReturn(tag); - when(taskRepository.filterNew(STATUS, tag)).thenReturn(tasks); - - TaskFilterDto taskFilterDto = new TaskFilterDto(); - taskFilterDto.setTag(ID); - taskFilterDto.setOrder("new"); - taskFilterDto.setStatus(STATUS); - - assertEquals(Collections.singletonList(taskDto), taskService.filter(taskFilterDto)); - } - - @Test - public void create() throws IOException { - when(tagService.saveOrCreate(new ArrayList<>())).thenReturn(tags); - when(deadlineService.saveOrCreate(new ArrayList<>())).thenReturn(deadlines); - when(taskRepository.save(new Task())).thenReturn(task); - eventService.createFromObject(new Task(), Collections.emptyList(), true, "задачи"); - - taskDto.setTags(tags); - taskDto.setDeadlines(deadlines); - - Task newTask = new Task(); - task.setId(ID); - task.setTitle(TITLE); - task.setDescription(DESCR); - task.setTags(tags); - task.setDeadlines(deadlines); - - assertEquals(task.getId(), taskService.create(taskDto)); - } - - @Test - public void delete() throws IOException { - when(taskRepository.existsById(ID)).thenReturn(true); - when(taskRepository.getOne(ID)).thenReturn(task); - when(schedulerRepository.findOneByTask(task)).thenReturn(null); - - assertTrue(taskService.delete(ID)); - } - - @Test - public void generateYearTasks() { - when(tagService.getTags()).thenReturn(tags); - tasks.get(0).setTags(tags); - when(taskRepository.findAllYear(DateUtils.clearTime(DateUtils.addYears(new Date(), -1)))).thenReturn(tasks); - tasks.get(0).setCreateDate(DateUtils.clearTime(DateUtils.addYears(new Date(), -1))); - when(taskRepository.findByTag(tag)).thenReturn(tasks); - - Task newTask = new Task(); - newTask.setTitle(tasks.get(0).getTitle()); - newTask.setTags(tasks.get(0).getTags()); - newTask.setCreateDate(new Date()); - newTask.setStatus(Task.TaskStatus.LOADED_FROM_KIAS); - - Deadline newDeadline = new Deadline(); - newDeadline.setId(ID); - newDeadline.setDescription(deadline.getDescription()); - newDeadline.setDate(DateUtils.addYears(deadline.getDate(), 1)); - when(deadlineService.create(newDeadline)).thenReturn(newDeadline); - newTask.setDeadlines(Arrays.asList(newDeadline)); - - when(taskRepository.save(newTask)).thenReturn(task); - - assertEquals(Arrays.asList(task), taskService.generateYearTasks()); - } - - @Test - public void checkRepeatingTags() { - when(tagService.getTags()).thenReturn(tags); - tasks.get(0).setTags(tags); - when(taskRepository.findAllYear(DateUtils.clearTime(DateUtils.addYears(new Date(), -1)))).thenReturn(tasks); - - assertEquals(new HashSet(Arrays.asList(tag)), taskService.checkRepeatingTags(false)); - } - - @Test - public void createPeriodTask() { - Task newTask = new Task(); - newTask.setTitle(scheduler.getTask().getTitle()); - newTask.setTags(scheduler.getTask().getTags()); - newTask.setCreateDate(new Date()); - - Deadline newDeadline = new Deadline(); - newDeadline.setId(ID); - newDeadline.setDescription(deadline.getDescription()); - newDeadline.setDate(DateUtils.addYears(deadline.getDate(), 1)); - when(deadlineService.create(newDeadline)).thenReturn(newDeadline); - newTask.setDeadlines(Arrays.asList(newDeadline)); - - when(taskRepository.save(newTask)).thenReturn(taskForSchedule); - - assertEquals(taskForSchedule, taskService.createPeriodTask(scheduler)); - } -} \ No newline at end of file -- 2.25.1 From 93cf1fa2a8a9baa308dbbc3b8468408c478be864 Mon Sep 17 00:00:00 2001 From: Anton Romanov Date: Sat, 20 Jul 2019 12:23:12 +0400 Subject: [PATCH 39/45] fix type cast --- .../common/service/ActivityService.java | 2 +- .../ulstu/activity/grant/model/GrantDto.java | 21 +------------------ .../activity/grant/service/GrantService.java | 4 ++-- 3 files changed, 4 insertions(+), 23 deletions(-) diff --git a/src/main/java/ru/ulstu/activity/common/service/ActivityService.java b/src/main/java/ru/ulstu/activity/common/service/ActivityService.java index eb3e3f8..bca8c96 100644 --- a/src/main/java/ru/ulstu/activity/common/service/ActivityService.java +++ b/src/main/java/ru/ulstu/activity/common/service/ActivityService.java @@ -64,7 +64,7 @@ public abstract class ActivityService files = new ArrayList<>(); private List projectIds; - private Set authorIds; private Set members; private Integer leaderId; private List paperIds = new ArrayList<>(); @@ -37,22 +34,15 @@ public class GrantDto extends ActivityDto { @JsonProperty("deadlines") List deadlines, @JsonProperty("comment") String comment, @JsonProperty("files") List files, - @JsonProperty("project") ProjectDto project, - @JsonProperty("authorIds") Set authorIds, @JsonProperty("members") Set members, @JsonProperty("leaderId") Integer leaderId, - @JsonProperty("wasLeader") boolean wasLeader, - @JsonProperty("hasAge") boolean hasAge, - @JsonProperty("hasDegree") boolean hasDegree, - @JsonProperty("paperIds") List paperIds, - @JsonProperty("papers") List papers) { + @JsonProperty("paperIds") List paperIds) { super(id); this.title = title; this.status = status; this.deadlines = deadlines; this.comment = comment; this.files = files; - this.authorIds = authorIds; this.members = members; this.leaderId = leaderId; this.paperIds = paperIds; @@ -69,7 +59,6 @@ public class GrantDto extends ActivityDto { this.deadlines = convert(grant.getDeadlines(), DeadlineDto::new); this.comment = grant.getComment(); this.files = convert(grant.getFiles(), FileDataDto::new); - this.authorIds = convert(grant.getAuthors(), user -> user.getId()); this.members = convert(grant.getAuthors(), ScienceGroupMemberDto::new); this.leaderId = grant.getLeader().getId(); this.paperIds = convert(grant.getPapers(), paper -> paper.getId()); @@ -126,14 +115,6 @@ public class GrantDto extends ActivityDto { this.files = files; } - public Set getAuthorIds() { - return authorIds; - } - - public void setAuthorIds(Set authorIds) { - this.authorIds = authorIds; - } - public Set getMembers() { return members; } diff --git a/src/main/java/ru/ulstu/activity/grant/service/GrantService.java b/src/main/java/ru/ulstu/activity/grant/service/GrantService.java index 84f9fcf..599fdab 100644 --- a/src/main/java/ru/ulstu/activity/grant/service/GrantService.java +++ b/src/main/java/ru/ulstu/activity/grant/service/GrantService.java @@ -116,8 +116,8 @@ public class GrantService extends ActivityService .collect(toList()))); } grant.getAuthors().clear(); - if (grantDto.getAuthorIds() != null && !grantDto.getAuthorIds().isEmpty()) { - grantDto.getAuthorIds().forEach(authorIds -> grant.getAuthors().add(userService.findById(authorIds))); + if (grantDto.getMembers() != null && !grantDto.getMembers().isEmpty()) { + grantDto.getMembers().forEach(memberDto -> grant.getAuthors().add(userService.findById(memberDto.getId()))); } if (grantDto.getLeaderId() != null) { grant.setLeader(userService.findById(grantDto.getLeaderId())); -- 2.25.1 From 17723237d19fb9e12b4a10dcd5a946daf5c2cea3 Mon Sep 17 00:00:00 2001 From: Anton Romanov Date: Sat, 20 Jul 2019 13:03:14 +0400 Subject: [PATCH 40/45] fix event removing --- .../common/service/ActivityService.java | 8 +++-- .../conference/service/ConferenceService.java | 6 ++++ .../activity/grant/service/GrantService.java | 13 ++++----- .../activity/paper/service/PaperService.java | 6 ++++ .../project/service/ProjectService.java | 6 ++++ .../students/service/TaskService.java | 6 ++++ .../timeline/service/EventService.java | 29 +++++++++++++++++-- 7 files changed, 62 insertions(+), 12 deletions(-) diff --git a/src/main/java/ru/ulstu/activity/common/service/ActivityService.java b/src/main/java/ru/ulstu/activity/common/service/ActivityService.java index bca8c96..c51b750 100644 --- a/src/main/java/ru/ulstu/activity/common/service/ActivityService.java +++ b/src/main/java/ru/ulstu/activity/common/service/ActivityService.java @@ -8,11 +8,13 @@ import ru.ulstu.activity.api.model.ActivityListDto; import ru.ulstu.activity.common.model.AbstractActivity; import ru.ulstu.activity.common.model.EventSource; import ru.ulstu.activity.ping.service.PingService; +import ru.ulstu.activity.timeline.model.Event; import ru.ulstu.activity.timeline.service.EventService; import ru.ulstu.core.jpa.OffsetablePageRequest; import ru.ulstu.core.model.response.PageableItems; import java.io.IOException; +import java.util.List; import static ru.ulstu.core.util.StreamApiUtils.convertPageable; @@ -46,11 +48,13 @@ public abstract class ActivityService getEvents(T entity); + @Transactional public D update(D entityDto) { T newEntity; diff --git a/src/main/java/ru/ulstu/activity/conference/service/ConferenceService.java b/src/main/java/ru/ulstu/activity/conference/service/ConferenceService.java index d92424b..3614766 100644 --- a/src/main/java/ru/ulstu/activity/conference/service/ConferenceService.java +++ b/src/main/java/ru/ulstu/activity/conference/service/ConferenceService.java @@ -12,6 +12,7 @@ import ru.ulstu.activity.conference.model.ConferenceListDto; import ru.ulstu.activity.deadline.service.DeadlineService; import ru.ulstu.activity.paper.service.PaperService; import ru.ulstu.activity.ping.service.PingService; +import ru.ulstu.activity.timeline.model.Event; import ru.ulstu.activity.timeline.service.EventService; import ru.ulstu.core.jpa.OffsetablePageRequest; import ru.ulstu.core.model.response.PageableItems; @@ -137,4 +138,9 @@ public class ConferenceService extends ActivityService getEvents(Conference entity) { + return eventService.findByConference(entity); + } } diff --git a/src/main/java/ru/ulstu/activity/grant/service/GrantService.java b/src/main/java/ru/ulstu/activity/grant/service/GrantService.java index 599fdab..4ef96e0 100644 --- a/src/main/java/ru/ulstu/activity/grant/service/GrantService.java +++ b/src/main/java/ru/ulstu/activity/grant/service/GrantService.java @@ -18,6 +18,7 @@ import ru.ulstu.activity.paper.model.PaperDto; import ru.ulstu.activity.paper.service.PaperService; import ru.ulstu.activity.ping.service.PingService; import ru.ulstu.activity.project.service.ProjectService; +import ru.ulstu.activity.timeline.model.Event; import ru.ulstu.activity.timeline.service.EventService; import ru.ulstu.core.jpa.OffsetablePageRequest; import ru.ulstu.core.model.response.PageableItems; @@ -98,13 +99,6 @@ public class GrantService extends ActivityService return new GrantDto(entity); } - @Transactional - @Override - public GrantDto update(GrantDto grantDto) { - Grant grant = findById(grantDto.getId()); - return new GrantDto(update(grant)); - } - protected Grant copyFromDto(Grant grant, GrantDto grantDto) throws IOException { grant.setComment(grantDto.getComment()); grant.setStatus(grantDto.getStatus() == null ? APPLICATION : grantDto.getStatus()); @@ -129,6 +123,11 @@ public class GrantService extends ActivityService return grant; } + @Override + protected List getEvents(Grant entity) { + return eventService.findByGrant(entity); + } + @Transactional public boolean delete(Integer grantId) { Grant grant = findById(grantId); diff --git a/src/main/java/ru/ulstu/activity/paper/service/PaperService.java b/src/main/java/ru/ulstu/activity/paper/service/PaperService.java index d31750f..45325a8 100644 --- a/src/main/java/ru/ulstu/activity/paper/service/PaperService.java +++ b/src/main/java/ru/ulstu/activity/paper/service/PaperService.java @@ -16,6 +16,7 @@ import ru.ulstu.activity.paper.model.PaperListDto; import ru.ulstu.activity.paper.model.PaperStatusDto; import ru.ulstu.activity.paper.model.PaperTypeDto; import ru.ulstu.activity.ping.service.PingService; +import ru.ulstu.activity.timeline.model.Event; import ru.ulstu.activity.timeline.service.EventService; import ru.ulstu.core.jpa.OffsetablePageRequest; import ru.ulstu.core.model.response.PageableItems; @@ -101,6 +102,11 @@ public class PaperService extends ActivityService return new PageableItems<>(activePapersPage.getTotalElements(), sortPapers(activePapersPage.getContent())); } + @Override + protected List getEvents(Paper entity) { + return eventService.findByPaper(entity); + } + @Transactional public PaperDto update(PaperDto paperDto) { Paper paper = findById(paperDto.getId()); diff --git a/src/main/java/ru/ulstu/activity/project/service/ProjectService.java b/src/main/java/ru/ulstu/activity/project/service/ProjectService.java index b7b0a8b..52cedc0 100644 --- a/src/main/java/ru/ulstu/activity/project/service/ProjectService.java +++ b/src/main/java/ru/ulstu/activity/project/service/ProjectService.java @@ -11,6 +11,7 @@ import ru.ulstu.activity.project.model.Project; import ru.ulstu.activity.project.model.ProjectDashboardDto; import ru.ulstu.activity.project.model.ProjectDto; import ru.ulstu.activity.project.model.ProjectListDto; +import ru.ulstu.activity.timeline.model.Event; import ru.ulstu.activity.timeline.service.EventService; import ru.ulstu.core.jpa.OffsetablePageRequest; import ru.ulstu.core.model.response.PageableItems; @@ -59,6 +60,11 @@ public class ProjectService extends ActivityService(activeProjectPage.getTotalElements(), activeProjectPage.getContent()); } + @Override + protected List getEvents(Project entity) { + return eventService.findByProject(entity); + } + @Transactional public boolean delete(Integer projectId) { if (projectRepository.existsById(projectId)) { diff --git a/src/main/java/ru/ulstu/activity/students/service/TaskService.java b/src/main/java/ru/ulstu/activity/students/service/TaskService.java index c95b290..f7b62ee 100644 --- a/src/main/java/ru/ulstu/activity/students/service/TaskService.java +++ b/src/main/java/ru/ulstu/activity/students/service/TaskService.java @@ -16,6 +16,7 @@ import ru.ulstu.activity.students.model.TaskFilterDto; import ru.ulstu.activity.students.model.TaskListDto; import ru.ulstu.activity.tags.model.Tag; import ru.ulstu.activity.tags.service.TagService; +import ru.ulstu.activity.timeline.model.Event; import ru.ulstu.activity.timeline.service.EventService; import ru.ulstu.core.jpa.OffsetablePageRequest; import ru.ulstu.core.model.response.PageableItems; @@ -112,6 +113,11 @@ public class TaskService extends ActivityService { return task; } + @Override + protected List getEvents(Task entity) { + return eventService.findByTask(entity); + } + @Transactional public boolean delete(Integer taskId) { if (taskRepository.existsById(taskId)) { diff --git a/src/main/java/ru/ulstu/activity/timeline/service/EventService.java b/src/main/java/ru/ulstu/activity/timeline/service/EventService.java index 1ed772b..99d49b4 100644 --- a/src/main/java/ru/ulstu/activity/timeline/service/EventService.java +++ b/src/main/java/ru/ulstu/activity/timeline/service/EventService.java @@ -4,7 +4,12 @@ import org.apache.commons.lang3.time.DateUtils; import org.springframework.data.domain.Page; import org.springframework.stereotype.Service; import ru.ulstu.activity.common.model.EventSource; +import ru.ulstu.activity.conference.model.Conference; import ru.ulstu.activity.deadline.model.Deadline; +import ru.ulstu.activity.grant.model.Grant; +import ru.ulstu.activity.paper.model.Paper; +import ru.ulstu.activity.project.model.Project; +import ru.ulstu.activity.students.model.Task; import ru.ulstu.activity.timeline.model.Event; import ru.ulstu.activity.timeline.model.EventDto; import ru.ulstu.core.jpa.OffsetablePageRequest; @@ -61,20 +66,38 @@ public class EventService { + deadline.getDescription() + "' " + eventSource.getSuffix() + " '" + eventSource.getTitle() + "'"); - newEvent.getRecipients().addAll(eventSource.getRecipients()); + eventSource.addObjectToEvent(newEvent); newEvent.setRecipients(eventSource.getRecipients()); newEvents.add(eventRepository.save(newEvent)); } eventRepository.saveAll(newEvents); } - private PageableItems createPageable(Page page) { return convertPageable(new PageableItems<>(page.getTotalElements(), page.getContent()), EventDto::new); } - public void deleteByObject(EventSource eventSource) { + public void deleteAll(List events) { + eventRepository.deleteAll(events); + } + public List findByConference(Conference conference) { + return eventRepository.findAllByConference(conference); + } + + public List findByGrant(Grant entity) { + return eventRepository.findAllByGrant(entity); + } + + public List findByProject(Project entity) { + return eventRepository.findAllByProject(entity); + } + + public List findByPaper(Paper entity) { + return eventRepository.findAllByPaper(entity); + } + public List findByTask(Task entity) { + return eventRepository.findAllByTask(entity); } } \ No newline at end of file -- 2.25.1 From f0f4a2f19ca09e81650a13d96019ba6f36f64915 Mon Sep 17 00:00:00 2001 From: Anton Romanov Date: Sat, 20 Jul 2019 14:08:46 +0400 Subject: [PATCH 41/45] fix delete --- .../activity/api/ActivityRepository.java | 2 + .../common/service/ActivityService.java | 10 +- .../conference/service/ConferenceService.java | 9 - .../activity/grant/service/GrantService.java | 47 ---- .../activity/paper/service/PaperService.java | 8 - .../project/service/ProjectService.java | 24 -- .../students/service/TaskService.java | 14 -- src/test/java/grant/GrantServiceTest.java | 225 ------------------ 8 files changed, 9 insertions(+), 330 deletions(-) delete mode 100644 src/test/java/grant/GrantServiceTest.java diff --git a/src/main/java/ru/ulstu/activity/api/ActivityRepository.java b/src/main/java/ru/ulstu/activity/api/ActivityRepository.java index 58cda60..e0be94d 100644 --- a/src/main/java/ru/ulstu/activity/api/ActivityRepository.java +++ b/src/main/java/ru/ulstu/activity/api/ActivityRepository.java @@ -12,4 +12,6 @@ public interface ActivityRepository { T getById(Integer id); Page findAll(Pageable pageable); + + void deleteById(Integer id); } diff --git a/src/main/java/ru/ulstu/activity/common/service/ActivityService.java b/src/main/java/ru/ulstu/activity/common/service/ActivityService.java index c51b750..eeae0bd 100644 --- a/src/main/java/ru/ulstu/activity/common/service/ActivityService.java +++ b/src/main/java/ru/ulstu/activity/common/service/ActivityService.java @@ -74,10 +74,14 @@ public abstract class ActivityService findAll(int offset, int count) { final Page page = activityRepository.findAll(new OffsetablePageRequest(offset, count)); diff --git a/src/main/java/ru/ulstu/activity/conference/service/ConferenceService.java b/src/main/java/ru/ulstu/activity/conference/service/ConferenceService.java index 3614766..ca3f824 100644 --- a/src/main/java/ru/ulstu/activity/conference/service/ConferenceService.java +++ b/src/main/java/ru/ulstu/activity/conference/service/ConferenceService.java @@ -69,15 +69,6 @@ public class ConferenceService extends ActivityService this.pingService = pingService; } - public GrantDto getExistGrantById(Integer id) { - return new GrantDto(findById(id)); - } - @Override public PageableItems findAll(int offset, int count) { final Page page = grantRepository.findAll(new OffsetablePageRequest(offset, count)); @@ -128,16 +120,6 @@ public class GrantService extends ActivityService return eventService.findByGrant(entity); } - @Transactional - public boolean delete(Integer grantId) { - Grant grant = findById(grantId); - if (grant != null) { - grantRepository.delete(grant); - return true; - } - return false; - } - public List getGrantStatuses() { return Arrays.asList(Grant.GrantStatus.values()); } @@ -158,40 +140,12 @@ public class GrantService extends ActivityService } } - private void checkEmptyLeader(GrantDto grantDto, Errors errors) { - if (grantDto.getLeaderId().equals(-1)) { - errors.rejectValue("leaderId", "errorCode", "Укажите руководителя"); - } - } - - private void checkEmptyDeadlines(GrantDto grantDto, Errors errors) { - if (grantDto.getDeadlines().isEmpty()) { - errors.rejectValue("deadlines", "errorCode", "Не может быть пусто"); - } - } - private boolean checkSameDeadline(GrantDto grantDto, Integer id) { Date date = DateUtils.clearTime(grantDto.getDeadlines().get(0).getDate()); //дата с сайта киас Date foundGrantDate = DateUtils.clearTime(deadlineService.findByGrantIdAndDate(id, date)); return foundGrantDate != null && foundGrantDate.compareTo(date) == 0; } - public List getGrantPapers(List paperIds) { - return paperService.findAllSelect(paperIds); - } - - public List getAllUncompletedPapers() { - return paperService.findAllNotCompleted(); - } - - private List getCompletedPapersAuthors(Paper.PaperType type) { - List papers = paperService.findAllCompletedByType(type); - return papers.stream() - .filter(paper -> paper.getAuthors() != null) - .flatMap(paper -> paper.getAuthors().stream()) - .collect(toList()); - } - @Transactional public void createFromKias() throws IOException, ParseException { for (GrantDto grantDto : kiasService.getNewGrantsDto()) { @@ -210,7 +164,6 @@ public class GrantService extends ActivityService public PageableItems findAllActive(int offset, int count) { Page activeGrantsPage = grantRepository.findAllActive(new OffsetablePageRequest(offset, count)); return new PageableItems<>(activeGrantsPage.getTotalElements(), activeGrantsPage.getContent()); - } public GrantDto findGrantById(Integer id) { diff --git a/src/main/java/ru/ulstu/activity/paper/service/PaperService.java b/src/main/java/ru/ulstu/activity/paper/service/PaperService.java index 45325a8..30adfec 100644 --- a/src/main/java/ru/ulstu/activity/paper/service/PaperService.java +++ b/src/main/java/ru/ulstu/activity/paper/service/PaperService.java @@ -231,14 +231,6 @@ public class PaperService extends ActivityService .orElseThrow(() -> new EntityNotFoundException("Paper with id=" + paperId + " not found")); } - public List findAllNotSelect(List paperIds) { - if (!paperIds.isEmpty()) { - return sortPapers(paperRepository.findByIdNotInAndConferencesIsNullAndStatusNot(paperIds, COMPLETED)); - } else { - return sortPapers(paperRepository.findByConferencesIsNullAndStatusNot(COMPLETED)); - } - } - public List findAllNotCompleted() { return convert(paperRepository.findByStatusNot(COMPLETED), PaperDto::new); } diff --git a/src/main/java/ru/ulstu/activity/project/service/ProjectService.java b/src/main/java/ru/ulstu/activity/project/service/ProjectService.java index 52cedc0..a601f47 100644 --- a/src/main/java/ru/ulstu/activity/project/service/ProjectService.java +++ b/src/main/java/ru/ulstu/activity/project/service/ProjectService.java @@ -2,7 +2,6 @@ package ru.ulstu.activity.project.service; import org.springframework.data.domain.Page; import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; import ru.ulstu.activity.common.service.ActivityService; import ru.ulstu.activity.deadline.service.DeadlineService; import ru.ulstu.activity.file.service.FileService; @@ -15,8 +14,6 @@ import ru.ulstu.activity.timeline.model.Event; import ru.ulstu.activity.timeline.service.EventService; import ru.ulstu.core.jpa.OffsetablePageRequest; import ru.ulstu.core.model.response.PageableItems; -import ru.ulstu.user.model.User; -import ru.ulstu.user.service.UserService; import java.io.IOException; import java.util.List; @@ -32,7 +29,6 @@ public class ProjectService extends ActivityService getProjectExecutors(ProjectDto projectDto) { - return userService.findAll(); - } - public ProjectDto findProjectById(Integer projectId) { return getNewActivityDto(findById(projectId)); } diff --git a/src/main/java/ru/ulstu/activity/students/service/TaskService.java b/src/main/java/ru/ulstu/activity/students/service/TaskService.java index f7b62ee..64f3567 100644 --- a/src/main/java/ru/ulstu/activity/students/service/TaskService.java +++ b/src/main/java/ru/ulstu/activity/students/service/TaskService.java @@ -118,20 +118,6 @@ public class TaskService extends ActivityService { return eventService.findByTask(entity); } - @Transactional - public boolean delete(Integer taskId) { - if (taskRepository.existsById(taskId)) { - Task scheduleTask = taskRepository.getOne(taskId); - Scheduler sch = schedulerRepository.findOneByTask(scheduleTask); - if (sch != null) { - schedulerRepository.deleteById(sch.getId()); - } - taskRepository.deleteById(taskId); - return true; - } - return false; - } - private void copyMainPart(Task newTask, Task task) { newTask.setTitle(task.getTitle()); newTask.setTags(tagService.saveOrCreate(task.getTags())); diff --git a/src/test/java/grant/GrantServiceTest.java b/src/test/java/grant/GrantServiceTest.java deleted file mode 100644 index 5cb632c..0000000 --- a/src/test/java/grant/GrantServiceTest.java +++ /dev/null @@ -1,225 +0,0 @@ -package grant; - -import org.apache.commons.lang3.StringUtils; -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.mockito.InjectMocks; -import org.mockito.Mock; -import org.mockito.Mockito; -import org.springframework.test.context.junit4.SpringRunner; -import ru.ulstu.activity.deadline.model.Deadline; -import ru.ulstu.activity.deadline.service.DeadlineService; -import ru.ulstu.activity.grant.model.Grant; -import ru.ulstu.activity.grant.model.GrantDto; -import ru.ulstu.activity.grant.repository.GrantRepository; -import ru.ulstu.activity.grant.service.GrantNotificationService; -import ru.ulstu.activity.grant.service.GrantService; -import ru.ulstu.activity.paper.model.Paper; -import ru.ulstu.activity.paper.model.PaperDto; -import ru.ulstu.activity.paper.service.PaperService; -import ru.ulstu.activity.timeline.service.EventService; -import ru.ulstu.user.model.User; -import ru.ulstu.user.service.UserService; - -import java.io.IOException; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.Date; -import java.util.HashSet; -import java.util.List; -import java.util.Set; -import java.util.stream.Collectors; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; -import static org.mockito.Mockito.when; - -@RunWith(SpringRunner.class) -public class GrantServiceTest { - - @Mock - GrantRepository grantRepository; - - @Mock - DeadlineService deadlineService; - - @Mock - PaperService paperService; - - @Mock - UserService userService; - - @Mock - EventService eventService; - - @Mock - GrantNotificationService grantNotificationService; - - @InjectMocks - GrantService grantService; - - private final static Integer ID = 1; - private final static Integer INDEX = 0; - private final static String TITLE = "Title"; - private final static String COMMENT = "Comment"; - private final static boolean TRUE = true; - private final static Integer YEAR = 2019; - private final static Integer MAX_DISPLAY_SIZE = 50; - - private List grants; - private List deadlines; - private List paperDtos; - private GrantDto grantDto; - private Deadline deadline; - private User leader; - - private Grant grantWithId; - - - @Before - public void setUp() throws Exception { - grants = new ArrayList<>(); - paperDtos = new ArrayList<>(); - grantWithId = new Grant(); - - deadlines = new ArrayList<>(); - deadline = new Deadline(new Date(), COMMENT); - deadline.setId(ID); - deadlines.add(deadline); - - leader = Mockito.mock(User.class); - - List papers = new ArrayList<>(); - Paper paperWithId = new Paper(); - paperWithId.setId(ID); - paperWithId.setTitle(TITLE); - papers.add(paperWithId); - PaperDto paperDto = new PaperDto(paperWithId); - paperDtos.add(paperDto); - - Set authors = new HashSet<>(); - User author = leader; - authors.add(author); - - grantWithId.setId(ID); - grantWithId.setTitle(TITLE); - grantWithId.setComment(COMMENT); - grantWithId.setDeadlines(deadlines); - grantWithId.setLeader(leader); - grantWithId.setPapers(papers); - grantWithId.setAuthors(authors); - - grants.add(grantWithId); - grantDto = new GrantDto(grantWithId); - } - - @Test - public void getExistGrantById() { - when(grantRepository.getOne(ID)).thenReturn(grantWithId); - - GrantDto newGrantDto = new GrantDto(grantWithId); - GrantDto result = grantService.getExistGrantById(ID); - - assertEquals(newGrantDto.getId(), result.getId()); - } - - @Test - public void findAll() { - when(grantRepository.findAll()).thenReturn(grants); - - assertEquals(Collections.singletonList(grantWithId), grantService.findAll(0, 100).getItems()); - } - - @Test - public void create() { - when(deadlineService.saveOrCreate(new ArrayList<>())).thenReturn(deadlines); - when(userService.getUserByLogin("admin")).thenReturn(leader); - when(grantRepository.save(new Grant())).thenReturn(grantWithId); - - Grant newGrant = new Grant(); - newGrant.setId(ID); - newGrant.setTitle(TITLE); - newGrant.setComment(COMMENT); - newGrant.setDeadlines(deadlines); - newGrant.setLeader(leader); - - assertEquals(newGrant, grantService.create(grantDto)); - } - - @Test - public void getGrantStatuses() { - assertEquals(Arrays.asList(Grant.GrantStatus.values()), grantService.getGrantStatuses()); - } - - @Test - public void getGrantPapers() { - when(paperService.findAllSelect(Collections.singletonList(ID))).thenReturn(paperDtos); - - assertEquals(paperDtos, grantService.getGrantPapers(Collections.singletonList(ID))); - } - - @Test - public void getAllUncompletedPapers() { - when(paperService.findAllNotCompleted()).thenReturn(paperDtos); - paperDtos.stream() - .forEach(paperDto -> { - paperDto.setTitle(StringUtils.abbreviate(paperDto.getTitle(), MAX_DISPLAY_SIZE)); - }); - - assertEquals(paperDtos, grantService.getAllUncompletedPapers()); - } - - @Test - public void delete() throws IOException { - when(grantRepository.getOne(ID)).thenReturn(grantWithId); - assertTrue(grantService.delete(grantWithId.getId())); - } - - @Test - public void removeDeadline() { - GrantDto newGrantDto = new GrantDto(); - newGrantDto.getRemovedDeadlineIds().add(ID); - grantDto.getDeadlines().add(deadline); - GrantDto result = grantService.removeDeadline(grantDto, INDEX); - - assertEquals(newGrantDto.getRemovedDeadlineIds(), result.getRemovedDeadlineIds()); - } - - @Test - public void findById() { - when(grantRepository.getOne(ID)).thenReturn(grantWithId); - Grant findGrant = grantService.findById(ID); - - assertEquals(grantWithId.getId(), findGrant.getId()); - } - - @Test - public void attachPaper() { - when(grantRepository.getOne(ID)).thenReturn(grantWithId); - when(paperService.findAllSelect(Collections.singletonList(ID))).thenReturn(paperDtos); - GrantDto newGrantDto = new GrantDto(grantWithId); - - if (!newGrantDto.getPaperIds().isEmpty()) { - newGrantDto.getPapers().clear(); - newGrantDto.setPapers(paperDtos); - } else { - newGrantDto.getPapers().clear(); - } - - assertEquals(newGrantDto.getPapers(), grantService.attachPaper(grantDto)); - } - - @Test - public void filterEmptyDeadlines() { - when(grantRepository.getOne(ID)).thenReturn(grantWithId); - GrantDto newGrantDto = new GrantDto(grantWithId); - - newGrantDto.setDeadlines(newGrantDto.getDeadlines().stream() - .filter(dto -> dto.getDate() != null || !StringUtils.isEmpty(dto.getDescription())) - .collect(Collectors.toList())); - - assertEquals(newGrantDto.getDeadlines(), grantService.filterEmptyDeadlines(grantDto)); - } -} \ No newline at end of file -- 2.25.1 From a1d268a8c22e800d831be9df5b48155fc0376dce Mon Sep 17 00:00:00 2001 From: Anton Romanov Date: Sat, 20 Jul 2019 14:31:44 +0400 Subject: [PATCH 42/45] fix getting active activities --- .../ru/ulstu/activity/common/service/ActivityService.java | 5 +++++ .../ulstu/activity/conference/service/ConferenceService.java | 3 ++- .../java/ru/ulstu/activity/grant/service/GrantService.java | 3 +++ .../java/ru/ulstu/activity/paper/service/PaperService.java | 3 ++- .../ru/ulstu/activity/project/service/ProjectService.java | 4 +++- .../java/ru/ulstu/activity/students/service/TaskService.java | 4 +++- 6 files changed, 18 insertions(+), 4 deletions(-) diff --git a/src/main/java/ru/ulstu/activity/common/service/ActivityService.java b/src/main/java/ru/ulstu/activity/common/service/ActivityService.java index eeae0bd..cc7bb7b 100644 --- a/src/main/java/ru/ulstu/activity/common/service/ActivityService.java +++ b/src/main/java/ru/ulstu/activity/common/service/ActivityService.java @@ -92,6 +92,11 @@ public abstract class ActivityService getActivityListDto(entity)); } + + public abstract PageableItems findAllActiveDto(int offset, int count); + + public abstract PageableItems findAllActive(int offset, int count); + protected abstract T copyFromDto(T t, D d) throws IOException; protected abstract L getActivityListDto(T entity); diff --git a/src/main/java/ru/ulstu/activity/conference/service/ConferenceService.java b/src/main/java/ru/ulstu/activity/conference/service/ConferenceService.java index ca3f824..07c99ec 100644 --- a/src/main/java/ru/ulstu/activity/conference/service/ConferenceService.java +++ b/src/main/java/ru/ulstu/activity/conference/service/ConferenceService.java @@ -112,7 +112,8 @@ public class ConferenceService extends ActivityService findAllActive(int offset, int count) { + @Override + public PageableItems findAllActive(int offset, int count) { Page activeConferencePage = conferenceRepository .findAllActive(new OffsetablePageRequest(offset, count), new Date()); return new PageableItems<>(activeConferencePage.getTotalElements(), activeConferencePage.getContent()); diff --git a/src/main/java/ru/ulstu/activity/grant/service/GrantService.java b/src/main/java/ru/ulstu/activity/grant/service/GrantService.java index 044c88a..d3f3a1c 100644 --- a/src/main/java/ru/ulstu/activity/grant/service/GrantService.java +++ b/src/main/java/ru/ulstu/activity/grant/service/GrantService.java @@ -92,6 +92,7 @@ public class GrantService extends ActivityService } protected Grant copyFromDto(Grant grant, GrantDto grantDto) throws IOException { + grant.setId(grantDto.getId()); grant.setComment(grantDto.getComment()); grant.setStatus(grantDto.getStatus() == null ? APPLICATION : grantDto.getStatus()); grant.setTitle(grantDto.getTitle()); @@ -157,10 +158,12 @@ public class GrantService extends ActivityService } } + @Override public PageableItems findAllActiveDto(int offset, int count) { return convertPageable(findAllActive(offset, count), GrantDashboardDto::new); } + @Override public PageableItems findAllActive(int offset, int count) { Page activeGrantsPage = grantRepository.findAllActive(new OffsetablePageRequest(offset, count)); return new PageableItems<>(activeGrantsPage.getTotalElements(), activeGrantsPage.getContent()); diff --git a/src/main/java/ru/ulstu/activity/paper/service/PaperService.java b/src/main/java/ru/ulstu/activity/paper/service/PaperService.java index 30adfec..3cac351 100644 --- a/src/main/java/ru/ulstu/activity/paper/service/PaperService.java +++ b/src/main/java/ru/ulstu/activity/paper/service/PaperService.java @@ -97,7 +97,8 @@ public class PaperService extends ActivityService return new PaperDto(entity); } - private PageableItems findAllActive(int offset, int count) { + @Override + public PageableItems findAllActive(int offset, int count) { Page activePapersPage = paperRepository.findAllWithoutStatuses(new OffsetablePageRequest(offset, count), COMPLETED, FAILED); return new PageableItems<>(activePapersPage.getTotalElements(), sortPapers(activePapersPage.getContent())); } diff --git a/src/main/java/ru/ulstu/activity/project/service/ProjectService.java b/src/main/java/ru/ulstu/activity/project/service/ProjectService.java index a601f47..d0b1087 100644 --- a/src/main/java/ru/ulstu/activity/project/service/ProjectService.java +++ b/src/main/java/ru/ulstu/activity/project/service/ProjectService.java @@ -45,11 +45,13 @@ public class ProjectService extends ActivityService findAllActiveDto(int offset, int count) { return convertPageable(findAllActive(offset, count), ProjectDashboardDto::new); } - private PageableItems findAllActive(int offset, int count) { + @Override + public PageableItems findAllActive(int offset, int count) { Page activeProjectPage = projectRepository.findAllWithoutStatuses(new OffsetablePageRequest(offset, count), CLOSED, FAILED); return new PageableItems<>(activeProjectPage.getTotalElements(), activeProjectPage.getContent()); } diff --git a/src/main/java/ru/ulstu/activity/students/service/TaskService.java b/src/main/java/ru/ulstu/activity/students/service/TaskService.java index 64f3567..48c4dbe 100644 --- a/src/main/java/ru/ulstu/activity/students/service/TaskService.java +++ b/src/main/java/ru/ulstu/activity/students/service/TaskService.java @@ -243,11 +243,13 @@ public class TaskService extends ActivityService { return newTask; } + @Override public PageableItems findAllActiveDto(int offset, int count) { return convertPageable(findAllActive(offset, count), TaskDashboardDto::new); } - private PageableItems findAllActive(int offset, int count) { + @Override + public PageableItems findAllActive(int offset, int count) { return findAll(offset, count); } -- 2.25.1 From 0f9f591c6b23a70db57a62b169d0f3d29473b03c Mon Sep 17 00:00:00 2001 From: Anton Romanov Date: Sat, 20 Jul 2019 15:36:10 +0400 Subject: [PATCH 43/45] work with different version of entity --- .../activity/api/ActivityRepository.java | 6 ++ .../common/model/AbstractActivity.java | 4 ++ .../common/service/ActivityService.java | 21 +++++-- .../activity/conference/model/Conference.java | 6 ++ .../conference/service/ConferenceService.java | 42 +++++++++---- .../grant/controller/GrantController.java | 2 +- .../grant/service/GrantRepository.java | 4 +- .../activity/grant/service/GrantService.java | 20 +++--- .../paper/controller/PaperController.java | 2 +- .../activity/paper/service/PaperService.java | 63 +++---------------- .../project/controller/ProjectController.java | 2 +- .../project/service/ProjectService.java | 9 +-- .../students/controller/TaskController.java | 2 +- .../ulstu/activity/students/model/Task.java | 5 ++ .../students/service/TaskService.java | 40 ++---------- .../timeline/service/EventService.java | 1 - 16 files changed, 102 insertions(+), 127 deletions(-) diff --git a/src/main/java/ru/ulstu/activity/api/ActivityRepository.java b/src/main/java/ru/ulstu/activity/api/ActivityRepository.java index e0be94d..e2feaf8 100644 --- a/src/main/java/ru/ulstu/activity/api/ActivityRepository.java +++ b/src/main/java/ru/ulstu/activity/api/ActivityRepository.java @@ -4,6 +4,8 @@ import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.data.repository.query.Param; +import java.util.Optional; + public interface ActivityRepository { String findByNameAndNotId(@Param("name") String name, @Param("id") Integer id); @@ -14,4 +16,8 @@ public interface ActivityRepository { Page findAll(Pageable pageable); void deleteById(Integer id); + + Optional findById(Integer id); + + void detach(T t); } diff --git a/src/main/java/ru/ulstu/activity/common/model/AbstractActivity.java b/src/main/java/ru/ulstu/activity/common/model/AbstractActivity.java index f4271dc..8796bb0 100644 --- a/src/main/java/ru/ulstu/activity/common/model/AbstractActivity.java +++ b/src/main/java/ru/ulstu/activity/common/model/AbstractActivity.java @@ -1,8 +1,10 @@ package ru.ulstu.activity.common.model; +import ru.ulstu.activity.timeline.model.Event; import ru.ulstu.core.model.BaseEntity; import ru.ulstu.user.model.User; +import java.util.List; import java.util.Set; public abstract class AbstractActivity extends BaseEntity { @@ -17,4 +19,6 @@ public abstract class AbstractActivity extends BaseEntity { } public abstract Set getActivityMembers(); + + public abstract List getEvents(); } diff --git a/src/main/java/ru/ulstu/activity/common/service/ActivityService.java b/src/main/java/ru/ulstu/activity/common/service/ActivityService.java index cc7bb7b..382965b 100644 --- a/src/main/java/ru/ulstu/activity/common/service/ActivityService.java +++ b/src/main/java/ru/ulstu/activity/common/service/ActivityService.java @@ -13,6 +13,7 @@ import ru.ulstu.activity.timeline.service.EventService; import ru.ulstu.core.jpa.OffsetablePageRequest; import ru.ulstu.core.model.response.PageableItems; +import javax.persistence.EntityNotFoundException; import java.io.IOException; import java.util.List; @@ -47,23 +48,31 @@ public abstract class ActivityService getEvents(T entity); @Transactional public D update(D entityDto) { + T oldEntity = activityRepository.getById(entityDto.getId()); + //to init lazy collection + oldEntity.getActivityMembers(); + activityRepository.detach(oldEntity); T newEntity; try { newEntity = copyFromDto(activityRepository.getById(entityDto.getId()), entityDto); } catch (IOException e) { throw new RuntimeException(e); } - return getNewActivityDto(update(newEntity)); + return getNewActivityDto(update(oldEntity, newEntity)); } @Transactional @@ -79,8 +88,13 @@ public abstract class ActivityService new EntityNotFoundException("Entity with id=" + id + " not found")); } public PageableItems findAll(int offset, int count) { @@ -92,7 +106,6 @@ public abstract class ActivityService getActivityListDto(entity)); } - public abstract PageableItems findAllActiveDto(int offset, int count); public abstract PageableItems findAllActive(int offset, int count); diff --git a/src/main/java/ru/ulstu/activity/conference/model/Conference.java b/src/main/java/ru/ulstu/activity/conference/model/Conference.java index 7dfecf5..8a34f4e 100644 --- a/src/main/java/ru/ulstu/activity/conference/model/Conference.java +++ b/src/main/java/ru/ulstu/activity/conference/model/Conference.java @@ -25,6 +25,7 @@ import javax.persistence.Temporal; import javax.persistence.TemporalType; import javax.validation.constraints.NotBlank; import java.util.ArrayList; +import java.util.Collections; import java.util.Comparator; import java.util.Date; import java.util.List; @@ -177,4 +178,9 @@ public class Conference extends AbstractActivity implements EventSource { public Set getActivityMembers() { return users.stream().map(conferenceUser -> conferenceUser.getUser()).collect(Collectors.toSet()); } + + @Override + public List getEvents() { + return Collections.emptyList(); + } } diff --git a/src/main/java/ru/ulstu/activity/conference/service/ConferenceService.java b/src/main/java/ru/ulstu/activity/conference/service/ConferenceService.java index 07c99ec..918d273 100644 --- a/src/main/java/ru/ulstu/activity/conference/service/ConferenceService.java +++ b/src/main/java/ru/ulstu/activity/conference/service/ConferenceService.java @@ -2,13 +2,13 @@ package ru.ulstu.activity.conference.service; import org.springframework.data.domain.Page; import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; import ru.ulstu.activity.common.service.ActivityService; import ru.ulstu.activity.conference.model.Conference; import ru.ulstu.activity.conference.model.ConferenceDashboardDto; import ru.ulstu.activity.conference.model.ConferenceDto; import ru.ulstu.activity.conference.model.ConferenceFilterDto; import ru.ulstu.activity.conference.model.ConferenceListDto; +import ru.ulstu.activity.deadline.model.Deadline; import ru.ulstu.activity.deadline.service.DeadlineService; import ru.ulstu.activity.paper.service.PaperService; import ru.ulstu.activity.ping.service.PingService; @@ -57,18 +57,6 @@ public class ConferenceService extends ActivityService { + if (!oldEntity.getActivityMembers().contains(author)) { + conferenceNotificationService.sendCreateNotification(entity); + } + }); + sendNotificationAfterUpdateDeadlines(entity, oldEntity.getDeadlines()); + } + + private void sendNotificationAfterUpdateDeadlines(Conference conference, List oldDeadlines) { + if (oldDeadlines.size() != conference.getDeadlines().size()) { + conferenceNotificationService.updateDeadlineNotification(conference); + return; + } + + if (conference.getDeadlines() + .stream() + .filter(deadline -> !oldDeadlines.contains(deadline)) + .count() > 0) { + conferenceNotificationService.updateDeadlineNotification(conference); + } + } + @Override protected List getEvents(Conference entity) { return eventService.findByConference(entity); diff --git a/src/main/java/ru/ulstu/activity/grant/controller/GrantController.java b/src/main/java/ru/ulstu/activity/grant/controller/GrantController.java index 93fbba8..21b1d9b 100644 --- a/src/main/java/ru/ulstu/activity/grant/controller/GrantController.java +++ b/src/main/java/ru/ulstu/activity/grant/controller/GrantController.java @@ -53,7 +53,7 @@ public class GrantController implements ActivityController get(@PathVariable("grant-id") Integer entityId) { - return new Response<>(grantService.findGrantById(entityId)); + return new Response<>(grantService.findDtoById(entityId)); } @Override diff --git a/src/main/java/ru/ulstu/activity/grant/service/GrantRepository.java b/src/main/java/ru/ulstu/activity/grant/service/GrantRepository.java index cfc84aa..76961ec 100644 --- a/src/main/java/ru/ulstu/activity/grant/service/GrantRepository.java +++ b/src/main/java/ru/ulstu/activity/grant/service/GrantRepository.java @@ -2,15 +2,15 @@ package ru.ulstu.activity.grant.service; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; -import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; import ru.ulstu.activity.api.ActivityRepository; import ru.ulstu.activity.grant.model.Grant; +import ru.ulstu.core.repository.JpaDetachableRepository; import java.util.List; -interface GrantRepository extends JpaRepository, ActivityRepository { +interface GrantRepository extends JpaDetachableRepository, ActivityRepository { List findByStatus(Grant.GrantStatus status); diff --git a/src/main/java/ru/ulstu/activity/grant/service/GrantService.java b/src/main/java/ru/ulstu/activity/grant/service/GrantService.java index d3f3a1c..4b350bd 100644 --- a/src/main/java/ru/ulstu/activity/grant/service/GrantService.java +++ b/src/main/java/ru/ulstu/activity/grant/service/GrantService.java @@ -116,6 +116,18 @@ public class GrantService extends ActivityService return grant; } + @Override + protected void doActionsOnDiffObjects(Grant oldEntity, Grant entity) { + entity.getAuthors().forEach(author -> { + if (!oldEntity.getAuthors().contains(author)) { + grantNotificationService.sendAuthorsChangeNotification(entity, oldEntity.getAuthors()); + } + }); + if (!entity.getLeader().equals(oldEntity.getLeader())) { + grantNotificationService.sendLeaderChangeNotification(entity, oldEntity.getLeader()); + } + } + @Override protected List getEvents(Grant entity) { return eventService.findByGrant(entity); @@ -169,14 +181,6 @@ public class GrantService extends ActivityService return new PageableItems<>(activeGrantsPage.getTotalElements(), activeGrantsPage.getContent()); } - public GrantDto findGrantById(Integer id) { - return new GrantDto(findById(id)); - } - - public Grant findById(Integer id) { - return grantRepository.getOne(id); - } - @Transactional public void ping(int grantId) { pingService.addPing(findById(grantId)); diff --git a/src/main/java/ru/ulstu/activity/paper/controller/PaperController.java b/src/main/java/ru/ulstu/activity/paper/controller/PaperController.java index 8a3a71f..ff219e8 100644 --- a/src/main/java/ru/ulstu/activity/paper/controller/PaperController.java +++ b/src/main/java/ru/ulstu/activity/paper/controller/PaperController.java @@ -47,7 +47,7 @@ public class PaperController implements ActivityController get(@PathVariable("paper-id") Integer paperId) { - return new Response<>(paperService.findPaperById(paperId)); + return new Response<>(paperService.findDtoById(paperId)); } @PostMapping diff --git a/src/main/java/ru/ulstu/activity/paper/service/PaperService.java b/src/main/java/ru/ulstu/activity/paper/service/PaperService.java index 3cac351..40e7b48 100644 --- a/src/main/java/ru/ulstu/activity/paper/service/PaperService.java +++ b/src/main/java/ru/ulstu/activity/paper/service/PaperService.java @@ -6,12 +6,10 @@ import org.springframework.transaction.annotation.Transactional; import ru.ulstu.activity.common.service.ActivityService; import ru.ulstu.activity.deadline.model.Deadline; import ru.ulstu.activity.deadline.service.DeadlineService; -import ru.ulstu.activity.file.model.FileDataDto; import ru.ulstu.activity.file.service.FileService; import ru.ulstu.activity.paper.model.Paper; import ru.ulstu.activity.paper.model.PaperDashboardDto; import ru.ulstu.activity.paper.model.PaperDto; -import ru.ulstu.activity.paper.model.PaperFilterListDto; import ru.ulstu.activity.paper.model.PaperListDto; import ru.ulstu.activity.paper.model.PaperStatusDto; import ru.ulstu.activity.paper.model.PaperTypeDto; @@ -23,13 +21,10 @@ import ru.ulstu.core.model.response.PageableItems; import ru.ulstu.user.model.User; import ru.ulstu.user.service.UserService; -import javax.persistence.EntityNotFoundException; import java.io.IOException; import java.util.Arrays; import java.util.Date; -import java.util.HashSet; import java.util.List; -import java.util.Set; import static java.util.stream.Collectors.toList; import static org.hibernate.internal.util.collections.CollectionHelper.isNotEmpty; @@ -53,9 +48,6 @@ public class PaperService extends ActivityService private final EventService eventService; private final PingService pingService; - private Paper.PaperStatus oldStatus; - private Set oldAuthors; - public PaperService(PaperRepository paperRepository, FileService fileService, PaperNotificationService paperNotificationService, @@ -108,21 +100,14 @@ public class PaperService extends ActivityService return eventService.findByPaper(entity); } - @Transactional - public PaperDto update(PaperDto paperDto) { - Paper paper = findById(paperDto.getId()); - oldStatus = paper.getStatus(); - oldAuthors = new HashSet<>(paper.getAuthors()); - - //TODO: move to service - if (paperDto.getFiles() != null) { - for (FileDataDto file : paperDto.getFiles().stream() - .filter(f -> f.isDeleted() && f.getId() != null) - .collect(toList())) { - fileService.delete(file.getId()); - } + @Override + protected void doActionsOnDiffObjects(Paper oldEntity, Paper entity) { + if (oldEntity.getStatus() != entity.getStatus()) { + paperNotificationService.statusChangeNotification(entity, oldEntity.getStatus()); + } + if (!oldEntity.getAuthors().equals(entity.getAuthors())) { + paperNotificationService.sendCreateNotification(entity, oldEntity.getAuthors()); } - return new PaperDto(update(copyFromDto(paper, paperDto))); } protected Paper copyFromDto(Paper paper, PaperDto paperDto) { @@ -152,13 +137,6 @@ public class PaperService extends ActivityService return paper; } - @Transactional - public boolean delete(Integer paperId) { - Paper paper = paperRepository.getOne(paperId); - paperRepository.delete(paper); - return true; - } - public List getPaperStatuses() { return convert(Arrays.asList(Paper.PaperStatus.values()), PaperStatusDto::new); } @@ -181,12 +159,6 @@ public class PaperService extends ActivityService return create(paper); } - public List filter(PaperFilterListDto filterDto) { - return convert(sortPapers(paperRepository.filter( - filterDto.getFilterAuthorId() == null ? null : userService.findById(filterDto.getFilterAuthorId()), - filterDto.getYear())), PaperListDto::new); - } - private List sortPapers(List papers) { return papers.stream().sorted((paper1, paper2) -> { int statusCompareResult = @@ -223,28 +195,7 @@ public class PaperService extends ActivityService } } - public PaperDto findPaperById(Integer paperId) { - return new PaperDto(findById(paperId)); - } - - public Paper findById(Integer paperId) { - return paperRepository.findById(paperId) - .orElseThrow(() -> new EntityNotFoundException("Paper with id=" + paperId + " not found")); - } - - public List findAllNotCompleted() { - return convert(paperRepository.findByStatusNot(COMPLETED), PaperDto::new); - } - - public List findAllSelect(List paperIds) { - return convert(paperRepository.findAllByIdIn(paperIds), PaperDto::new); - } - public List getPaperAuthors() { return userService.findAll(); } - - public List findAllCompletedByType(Paper.PaperType type) { - return paperRepository.findByTypeAndStatus(type, Paper.PaperStatus.COMPLETED); - } } diff --git a/src/main/java/ru/ulstu/activity/project/controller/ProjectController.java b/src/main/java/ru/ulstu/activity/project/controller/ProjectController.java index baf0a9b..9a0b16e 100644 --- a/src/main/java/ru/ulstu/activity/project/controller/ProjectController.java +++ b/src/main/java/ru/ulstu/activity/project/controller/ProjectController.java @@ -43,7 +43,7 @@ public class ProjectController implements ActivityController get(@PathVariable("project-id") Integer projectId) { - return new Response<>(projectService.findProjectById(projectId)); + return new Response<>(projectService.findDtoById(projectId)); } @PostMapping diff --git a/src/main/java/ru/ulstu/activity/project/service/ProjectService.java b/src/main/java/ru/ulstu/activity/project/service/ProjectService.java index d0b1087..79c9d47 100644 --- a/src/main/java/ru/ulstu/activity/project/service/ProjectService.java +++ b/src/main/java/ru/ulstu/activity/project/service/ProjectService.java @@ -56,6 +56,11 @@ public class ProjectService extends ActivityService(activeProjectPage.getTotalElements(), activeProjectPage.getContent()); } + @Override + protected void doActionsOnDiffObjects(Project oldEntity, Project entity) { + //TODO + } + @Override protected List getEvents(Project entity) { return eventService.findByProject(entity); @@ -88,8 +93,4 @@ public class ProjectService extends ActivityService get(@PathVariable("task-id") Integer taskId) { - return new Response<>(taskService.findTaskById(taskId)); + return new Response<>(taskService.findDtoById(taskId)); } @PostMapping diff --git a/src/main/java/ru/ulstu/activity/students/model/Task.java b/src/main/java/ru/ulstu/activity/students/model/Task.java index f893ed2..4ae6a56 100644 --- a/src/main/java/ru/ulstu/activity/students/model/Task.java +++ b/src/main/java/ru/ulstu/activity/students/model/Task.java @@ -110,6 +110,11 @@ public class Task extends AbstractActivity implements EventSource { return Collections.emptySet(); } + @Override + public List getEvents() { + return Collections.emptyList(); + } + public TaskStatus getStatus() { return status; } diff --git a/src/main/java/ru/ulstu/activity/students/service/TaskService.java b/src/main/java/ru/ulstu/activity/students/service/TaskService.java index 48c4dbe..5b1a62f 100644 --- a/src/main/java/ru/ulstu/activity/students/service/TaskService.java +++ b/src/main/java/ru/ulstu/activity/students/service/TaskService.java @@ -1,7 +1,6 @@ package ru.ulstu.activity.students.service; import org.springframework.data.domain.Page; -import org.springframework.data.domain.Sort; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import ru.ulstu.activity.common.service.ActivityService; @@ -12,7 +11,6 @@ import ru.ulstu.activity.students.model.Scheduler; import ru.ulstu.activity.students.model.Task; import ru.ulstu.activity.students.model.TaskDashboardDto; import ru.ulstu.activity.students.model.TaskDto; -import ru.ulstu.activity.students.model.TaskFilterDto; import ru.ulstu.activity.students.model.TaskListDto; import ru.ulstu.activity.tags.model.Tag; import ru.ulstu.activity.tags.service.TagService; @@ -22,7 +20,6 @@ import ru.ulstu.core.jpa.OffsetablePageRequest; import ru.ulstu.core.model.response.PageableItems; import ru.ulstu.core.util.DateUtils; -import javax.persistence.EntityNotFoundException; import java.util.ArrayList; import java.util.Arrays; import java.util.Calendar; @@ -34,7 +31,6 @@ import java.util.TreeMap; import java.util.stream.Collectors; import static ru.ulstu.activity.students.model.Task.TaskStatus.IN_WORK; -import static ru.ulstu.core.util.StreamApiUtils.convert; import static ru.ulstu.core.util.StreamApiUtils.convertPageable; @Service @@ -65,10 +61,6 @@ public class TaskService extends ActivityService { this.pingService = pingService; } - public List findAll() { - return taskRepository.findAll(new Sort(Sort.Direction.DESC, "createDate")); - } - public PageableItems findAll(int offset, int count) { final Page page = taskRepository.findAll(new OffsetablePageRequest(offset, count)); return new PageableItems<>(page.getTotalElements(), page.getContent()); @@ -89,18 +81,6 @@ public class TaskService extends ActivityService { return new TaskDto(entity); } - public List filter(TaskFilterDto filterDto) { - if (filterDto.getOrder().compareTo("new") == 0) { - return convert(taskRepository.filterNew( - filterDto.getStatus(), - filterDto.getTag() == null ? null : tagService.findById(filterDto.getTag())), TaskDto::new); - } else { - return convert(taskRepository.filterOld( - filterDto.getStatus(), - filterDto.getTag() == null ? null : tagService.findById(filterDto.getTag())), TaskDto::new); - } - } - protected Task copyFromDto(Task task, TaskDto taskDto) { task.setTitle(taskDto.getTitle()); task.setDescription(taskDto.getDescription()); @@ -113,6 +93,11 @@ public class TaskService extends ActivityService { return task; } + @Override + protected void doActionsOnDiffObjects(Task oldEntity, Task entity) { + //TODO + } + @Override protected List getEvents(Task entity) { return eventService.findByTask(entity); @@ -252,19 +237,4 @@ public class TaskService extends ActivityService { public PageableItems findAllActive(int offset, int count) { return findAll(offset, count); } - - public TaskDto findTaskById(Integer taskId) { - return new TaskDto(findById(taskId)); - } - - public Task findById(Integer taskId) { - return taskRepository.findById(taskId) - .orElseThrow(() -> new EntityNotFoundException("Paper with id=" + taskId + " not found")); - } - - - @Transactional - public void ping(int taskId) { - pingService.addPing(findById(taskId)); - } } diff --git a/src/main/java/ru/ulstu/activity/timeline/service/EventService.java b/src/main/java/ru/ulstu/activity/timeline/service/EventService.java index 99d49b4..a9a3f7d 100644 --- a/src/main/java/ru/ulstu/activity/timeline/service/EventService.java +++ b/src/main/java/ru/ulstu/activity/timeline/service/EventService.java @@ -68,7 +68,6 @@ public class EventService { + eventSource.getTitle() + "'"); eventSource.addObjectToEvent(newEvent); newEvent.setRecipients(eventSource.getRecipients()); - newEvents.add(eventRepository.save(newEvent)); } eventRepository.saveAll(newEvents); } -- 2.25.1 From 5b4dbac4815a58b5fa6910176f68e139d59ff128 Mon Sep 17 00:00:00 2001 From: Anton Romanov Date: Sat, 20 Jul 2019 16:15:20 +0400 Subject: [PATCH 44/45] task notifications --- .../service/ActivityNotificationService.java | 17 ++++++++++++++ .../ConferenceNotificationService.java | 1 + .../service/GrantNotificationService.java | 10 +------- .../service/PaperNotificationService.java | 13 +---------- .../service/ProjectNotificationService.java | 4 +--- .../service/TaskNotificationService.java | 12 ++++++---- .../taskCreateNotification.html | 23 +++++++++++++++++++ 7 files changed, 52 insertions(+), 28 deletions(-) create mode 100644 src/main/resources/mail_templates/taskCreateNotification.html diff --git a/src/main/java/ru/ulstu/activity/common/service/ActivityNotificationService.java b/src/main/java/ru/ulstu/activity/common/service/ActivityNotificationService.java index 745ccaf..7827b84 100644 --- a/src/main/java/ru/ulstu/activity/common/service/ActivityNotificationService.java +++ b/src/main/java/ru/ulstu/activity/common/service/ActivityNotificationService.java @@ -1,8 +1,25 @@ package ru.ulstu.activity.common.service; import ru.ulstu.activity.common.model.AbstractActivity; +import ru.ulstu.user.model.User; +import ru.ulstu.user.service.MailService; + +import java.util.Map; public abstract class ActivityNotificationService { + private final MailService mailService; + + protected ActivityNotificationService(MailService mailService) { + this.mailService = mailService; + } public abstract void sendCreateNotification(T entity); + + protected void sendForAuthor(Map variables, User author, String template, String title) { + mailService.sendEmailFromTemplate(variables, author, template, title); + } + + protected void sendForAllAuthors(Map variables, T entity, String template, String title) { + entity.getActivityMembers().forEach(author -> sendForAuthor(variables, author, template, title)); + } } diff --git a/src/main/java/ru/ulstu/activity/conference/service/ConferenceNotificationService.java b/src/main/java/ru/ulstu/activity/conference/service/ConferenceNotificationService.java index 7d94694..c76fb3a 100644 --- a/src/main/java/ru/ulstu/activity/conference/service/ConferenceNotificationService.java +++ b/src/main/java/ru/ulstu/activity/conference/service/ConferenceNotificationService.java @@ -38,6 +38,7 @@ public class ConferenceNotificationService extends ActivityNotificationService private final static String TITLE_AUTHORS_CHANGED = "Изменился состав рабочей группы гранта: %s"; private final static String TITLE_LEADER_CHANGED = "Изменился руководитель гранта: %s"; - private final MailService mailService; - public GrantNotificationService(MailService mailService) { - this.mailService = mailService; + super(mailService); } public void sendDeadlineNotifications(List grants, boolean isDeadlineBeforeWeek) { @@ -65,10 +63,4 @@ public class GrantNotificationService extends ActivityNotificationService Map variables = ImmutableMap.of("grant", grant, "oldLeader", oldLeader); sendForAllAuthors(variables, grant, TEMPLATE_LEADER_CHANGED, String.format(TITLE_LEADER_CHANGED, grant.getTitle())); } - - private void sendForAllAuthors(Map variables, Grant grant, String template, String title) { - Set allAuthors = grant.getAuthors(); - allAuthors.forEach(author -> mailService.sendEmailFromTemplate(variables, author, template, title)); - mailService.sendEmailFromTemplate(variables, grant.getLeader(), template, title); - } } diff --git a/src/main/java/ru/ulstu/activity/paper/service/PaperNotificationService.java b/src/main/java/ru/ulstu/activity/paper/service/PaperNotificationService.java index 5da1937..0b9f78e 100644 --- a/src/main/java/ru/ulstu/activity/paper/service/PaperNotificationService.java +++ b/src/main/java/ru/ulstu/activity/paper/service/PaperNotificationService.java @@ -26,11 +26,8 @@ public class PaperNotificationService extends ActivityNotificationService private final static String TITLE_STATUS_CHANGED = "Изменился статус статьи"; private final static String TITLE_FAILED = "Статья провалена"; - - private final MailService mailService; - public PaperNotificationService(MailService mailService) { - this.mailService = mailService; + super(mailService); } public void sendDeadlineNotifications(PageableItems papers, boolean isDeadlineBeforeWeek) { @@ -81,12 +78,4 @@ public class PaperNotificationService extends ActivityNotificationService Map variables = ImmutableMap.of("paper", paper, "oldStatus", oldStatus); sendForAllAuthors(variables, paper, TEMPLATE_FAILED, TITLE_FAILED); } - - private void sendForAuthor(Map variables, User author, String template, String title) { - mailService.sendEmailFromTemplate(variables, author, template, title); - } - - private void sendForAllAuthors(Map variables, Paper paper, String template, String title) { - paper.getAuthors().forEach(author -> sendForAuthor(variables, author, template, title)); - } } diff --git a/src/main/java/ru/ulstu/activity/project/service/ProjectNotificationService.java b/src/main/java/ru/ulstu/activity/project/service/ProjectNotificationService.java index 3bbf821..c8d6fcb 100644 --- a/src/main/java/ru/ulstu/activity/project/service/ProjectNotificationService.java +++ b/src/main/java/ru/ulstu/activity/project/service/ProjectNotificationService.java @@ -8,10 +8,8 @@ import ru.ulstu.user.service.MailService; @Service public class ProjectNotificationService extends ActivityNotificationService { - private final MailService mailService; - public ProjectNotificationService(MailService mailService) { - this.mailService = mailService; + super(mailService); } public void sendCreateNotification(Project project) { diff --git a/src/main/java/ru/ulstu/activity/students/service/TaskNotificationService.java b/src/main/java/ru/ulstu/activity/students/service/TaskNotificationService.java index bd9046e..621cd6d 100644 --- a/src/main/java/ru/ulstu/activity/students/service/TaskNotificationService.java +++ b/src/main/java/ru/ulstu/activity/students/service/TaskNotificationService.java @@ -1,20 +1,24 @@ package ru.ulstu.activity.students.service; +import com.google.common.collect.ImmutableMap; import org.springframework.stereotype.Service; import ru.ulstu.activity.common.service.ActivityNotificationService; import ru.ulstu.activity.students.model.Task; import ru.ulstu.user.service.MailService; +import java.util.Map; + @Service public class TaskNotificationService extends ActivityNotificationService { - - private final MailService mailService; + private final static String TEMPLATE_CREATE = "taskCreateNotification"; + private final static String TITLE_CREATE = "Создана задача"; public TaskNotificationService(MailService mailService) { - this.mailService = mailService; + super(mailService); } public void sendCreateNotification(Task task) { - throw new RuntimeException("not implemented yet"); + Map variables = ImmutableMap.of("task", task); + sendForAllAuthors(variables, task, TEMPLATE_CREATE, TITLE_CREATE); } } diff --git a/src/main/resources/mail_templates/taskCreateNotification.html b/src/main/resources/mail_templates/taskCreateNotification.html new file mode 100644 index 0000000..55ba526 --- /dev/null +++ b/src/main/resources/mail_templates/taskCreateNotification.html @@ -0,0 +1,23 @@ + + + + Уведомление о создании задачи + + + + +

+ Уважаемый(ая) Ivan Ivanov +

+

+ Вам нужно поработать над задачей "Title". +

+ +

+ Regards, +
+ NG-tracker. +

+ + -- 2.25.1 From 08253fc12a94682b448b716d00503dc5310ea037 Mon Sep 17 00:00:00 2001 From: Anton Romanov Date: Sat, 20 Jul 2019 18:28:52 +0400 Subject: [PATCH 45/45] fix lazy initialization --- .../java/ru/ulstu/activity/common/service/ActivityService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/ru/ulstu/activity/common/service/ActivityService.java b/src/main/java/ru/ulstu/activity/common/service/ActivityService.java index 382965b..1f817b8 100644 --- a/src/main/java/ru/ulstu/activity/common/service/ActivityService.java +++ b/src/main/java/ru/ulstu/activity/common/service/ActivityService.java @@ -64,7 +64,7 @@ public abstract class ActivityService