From 0f17cd65eca73a06458e7b5d0b8f063eccf649d2 Mon Sep 17 00:00:00 2001 From: "Bekk I.V." <888_1@mail.ru> Date: Sat, 31 Jan 2026 23:52:05 +0500 Subject: [PATCH 01/20] 1 --- .../java/com/javarush/{khmelov => bekk}/cmd/Command.java | 2 +- .../java/com/javarush/{khmelov => bekk}/cmd/EditUser.java | 8 ++++---- .../java/com/javarush/{khmelov => bekk}/cmd/ListUser.java | 6 +++--- .../com/javarush/{khmelov => bekk}/cmd/StartPage.java | 2 +- .../com/javarush/{khmelov => bekk}/config/Winter.java | 2 +- .../{khmelov => bekk}/controller/FrontController.java | 8 ++++---- .../{khmelov => bekk}/controller/HttpResolver.java | 6 +++--- .../java/com/javarush/{khmelov => bekk}/entity/Role.java | 2 +- .../java/com/javarush/{khmelov => bekk}/entity/User.java | 2 +- .../javarush/{khmelov => bekk}/repository/Repository.java | 4 ++-- .../{khmelov => bekk}/repository/UserRepository.java | 6 +++--- .../javarush/{khmelov => bekk}/service/UserService.java | 6 +++--- 12 files changed, 27 insertions(+), 27 deletions(-) rename src/main/java/com/javarush/{khmelov => bekk}/cmd/Command.java (96%) rename src/main/java/com/javarush/{khmelov => bekk}/cmd/EditUser.java (89%) rename src/main/java/com/javarush/{khmelov => bekk}/cmd/ListUser.java (79%) rename src/main/java/com/javarush/{khmelov => bekk}/cmd/StartPage.java (69%) rename src/main/java/com/javarush/{khmelov => bekk}/config/Winter.java (96%) rename src/main/java/com/javarush/{khmelov => bekk}/controller/FrontController.java (88%) rename src/main/java/com/javarush/{khmelov => bekk}/controller/HttpResolver.java (91%) rename src/main/java/com/javarush/{khmelov => bekk}/entity/Role.java (54%) rename src/main/java/com/javarush/{khmelov => bekk}/entity/User.java (91%) rename src/main/java/com/javarush/{khmelov => bekk}/repository/Repository.java (74%) rename src/main/java/com/javarush/{khmelov => bekk}/repository/UserRepository.java (90%) rename src/main/java/com/javarush/{khmelov => bekk}/service/UserService.java (83%) diff --git a/src/main/java/com/javarush/khmelov/cmd/Command.java b/src/main/java/com/javarush/bekk/cmd/Command.java similarity index 96% rename from src/main/java/com/javarush/khmelov/cmd/Command.java rename to src/main/java/com/javarush/bekk/cmd/Command.java index fd4035b..f229787 100644 --- a/src/main/java/com/javarush/khmelov/cmd/Command.java +++ b/src/main/java/com/javarush/bekk/cmd/Command.java @@ -1,4 +1,4 @@ -package com.javarush.khmelov.cmd; +package com.javarush.bekk.cmd; import jakarta.servlet.http.HttpServletRequest; diff --git a/src/main/java/com/javarush/khmelov/cmd/EditUser.java b/src/main/java/com/javarush/bekk/cmd/EditUser.java similarity index 89% rename from src/main/java/com/javarush/khmelov/cmd/EditUser.java rename to src/main/java/com/javarush/bekk/cmd/EditUser.java index ae191b4..ccff46d 100644 --- a/src/main/java/com/javarush/khmelov/cmd/EditUser.java +++ b/src/main/java/com/javarush/bekk/cmd/EditUser.java @@ -1,8 +1,8 @@ -package com.javarush.khmelov.cmd; +package com.javarush.bekk.cmd; -import com.javarush.khmelov.entity.Role; -import com.javarush.khmelov.entity.User; -import com.javarush.khmelov.service.UserService; +import com.javarush.bekk.entity.Role; +import com.javarush.bekk.entity.User; +import com.javarush.bekk.service.UserService; import jakarta.servlet.http.HttpServletRequest; import java.util.Optional; diff --git a/src/main/java/com/javarush/khmelov/cmd/ListUser.java b/src/main/java/com/javarush/bekk/cmd/ListUser.java similarity index 79% rename from src/main/java/com/javarush/khmelov/cmd/ListUser.java rename to src/main/java/com/javarush/bekk/cmd/ListUser.java index 9257917..48a9b61 100644 --- a/src/main/java/com/javarush/khmelov/cmd/ListUser.java +++ b/src/main/java/com/javarush/bekk/cmd/ListUser.java @@ -1,7 +1,7 @@ -package com.javarush.khmelov.cmd; +package com.javarush.bekk.cmd; -import com.javarush.khmelov.entity.User; -import com.javarush.khmelov.service.UserService; +import com.javarush.bekk.entity.User; +import com.javarush.bekk.service.UserService; import jakarta.servlet.http.HttpServletRequest; import java.util.Collection; diff --git a/src/main/java/com/javarush/khmelov/cmd/StartPage.java b/src/main/java/com/javarush/bekk/cmd/StartPage.java similarity index 69% rename from src/main/java/com/javarush/khmelov/cmd/StartPage.java rename to src/main/java/com/javarush/bekk/cmd/StartPage.java index d268f93..75c1ddc 100644 --- a/src/main/java/com/javarush/khmelov/cmd/StartPage.java +++ b/src/main/java/com/javarush/bekk/cmd/StartPage.java @@ -1,4 +1,4 @@ -package com.javarush.khmelov.cmd; +package com.javarush.bekk.cmd; @SuppressWarnings("unused") public class StartPage implements Command { diff --git a/src/main/java/com/javarush/khmelov/config/Winter.java b/src/main/java/com/javarush/bekk/config/Winter.java similarity index 96% rename from src/main/java/com/javarush/khmelov/config/Winter.java rename to src/main/java/com/javarush/bekk/config/Winter.java index 48bd8a7..054fee0 100644 --- a/src/main/java/com/javarush/khmelov/config/Winter.java +++ b/src/main/java/com/javarush/bekk/config/Winter.java @@ -1,4 +1,4 @@ -package com.javarush.khmelov.config; +package com.javarush.bekk.config; import lombok.SneakyThrows; diff --git a/src/main/java/com/javarush/khmelov/controller/FrontController.java b/src/main/java/com/javarush/bekk/controller/FrontController.java similarity index 88% rename from src/main/java/com/javarush/khmelov/controller/FrontController.java rename to src/main/java/com/javarush/bekk/controller/FrontController.java index 33242b2..ad0137f 100644 --- a/src/main/java/com/javarush/khmelov/controller/FrontController.java +++ b/src/main/java/com/javarush/bekk/controller/FrontController.java @@ -1,8 +1,8 @@ -package com.javarush.khmelov.controller; +package com.javarush.bekk.controller; -import com.javarush.khmelov.cmd.Command; -import com.javarush.khmelov.config.Winter; -import com.javarush.khmelov.entity.Role; +import com.javarush.bekk.cmd.Command; +import com.javarush.bekk.config.Winter; +import com.javarush.bekk.entity.Role; import jakarta.servlet.ServletConfig; import jakarta.servlet.ServletException; import jakarta.servlet.annotation.WebServlet; diff --git a/src/main/java/com/javarush/khmelov/controller/HttpResolver.java b/src/main/java/com/javarush/bekk/controller/HttpResolver.java similarity index 91% rename from src/main/java/com/javarush/khmelov/controller/HttpResolver.java rename to src/main/java/com/javarush/bekk/controller/HttpResolver.java index 18bb761..312d692 100644 --- a/src/main/java/com/javarush/khmelov/controller/HttpResolver.java +++ b/src/main/java/com/javarush/bekk/controller/HttpResolver.java @@ -1,7 +1,7 @@ -package com.javarush.khmelov.controller; +package com.javarush.bekk.controller; -import com.javarush.khmelov.cmd.Command; -import com.javarush.khmelov.config.Winter; +import com.javarush.bekk.cmd.Command; +import com.javarush.bekk.config.Winter; import jakarta.servlet.http.HttpServletRequest; public class HttpResolver { diff --git a/src/main/java/com/javarush/khmelov/entity/Role.java b/src/main/java/com/javarush/bekk/entity/Role.java similarity index 54% rename from src/main/java/com/javarush/khmelov/entity/Role.java rename to src/main/java/com/javarush/bekk/entity/Role.java index 5ae365f..eaa0c61 100644 --- a/src/main/java/com/javarush/khmelov/entity/Role.java +++ b/src/main/java/com/javarush/bekk/entity/Role.java @@ -1,4 +1,4 @@ -package com.javarush.khmelov.entity; +package com.javarush.bekk.entity; public enum Role { USER, ADMIN, GUEST diff --git a/src/main/java/com/javarush/khmelov/entity/User.java b/src/main/java/com/javarush/bekk/entity/User.java similarity index 91% rename from src/main/java/com/javarush/khmelov/entity/User.java rename to src/main/java/com/javarush/bekk/entity/User.java index f7fa2d6..5a0d525 100644 --- a/src/main/java/com/javarush/khmelov/entity/User.java +++ b/src/main/java/com/javarush/bekk/entity/User.java @@ -1,4 +1,4 @@ -package com.javarush.khmelov.entity; +package com.javarush.bekk.entity; import lombok.AllArgsConstructor; import lombok.Builder; diff --git a/src/main/java/com/javarush/khmelov/repository/Repository.java b/src/main/java/com/javarush/bekk/repository/Repository.java similarity index 74% rename from src/main/java/com/javarush/khmelov/repository/Repository.java rename to src/main/java/com/javarush/bekk/repository/Repository.java index f1abdac..385273c 100644 --- a/src/main/java/com/javarush/khmelov/repository/Repository.java +++ b/src/main/java/com/javarush/bekk/repository/Repository.java @@ -1,6 +1,6 @@ -package com.javarush.khmelov.repository; +package com.javarush.bekk.repository; -import com.javarush.khmelov.entity.User; +import com.javarush.bekk.entity.User; import java.util.Collection; import java.util.Optional; diff --git a/src/main/java/com/javarush/khmelov/repository/UserRepository.java b/src/main/java/com/javarush/bekk/repository/UserRepository.java similarity index 90% rename from src/main/java/com/javarush/khmelov/repository/UserRepository.java rename to src/main/java/com/javarush/bekk/repository/UserRepository.java index 58b32ea..b8bb782 100644 --- a/src/main/java/com/javarush/khmelov/repository/UserRepository.java +++ b/src/main/java/com/javarush/bekk/repository/UserRepository.java @@ -1,7 +1,7 @@ -package com.javarush.khmelov.repository; +package com.javarush.bekk.repository; -import com.javarush.khmelov.entity.Role; -import com.javarush.khmelov.entity.User; +import com.javarush.bekk.entity.Role; +import com.javarush.bekk.entity.User; import java.util.Collection; import java.util.HashMap; diff --git a/src/main/java/com/javarush/khmelov/service/UserService.java b/src/main/java/com/javarush/bekk/service/UserService.java similarity index 83% rename from src/main/java/com/javarush/khmelov/service/UserService.java rename to src/main/java/com/javarush/bekk/service/UserService.java index b17527c..c345687 100644 --- a/src/main/java/com/javarush/khmelov/service/UserService.java +++ b/src/main/java/com/javarush/bekk/service/UserService.java @@ -1,7 +1,7 @@ -package com.javarush.khmelov.service; +package com.javarush.bekk.service; -import com.javarush.khmelov.entity.User; -import com.javarush.khmelov.repository.UserRepository; +import com.javarush.bekk.entity.User; +import com.javarush.bekk.repository.UserRepository; import java.util.Collection; import java.util.Optional; From 3c042bb833f137b4a58fb3dc7351806ec878f292 Mon Sep 17 00:00:00 2001 From: "Bekk I.V." <888_1@mail.ru> Date: Sat, 31 Jan 2026 23:54:54 +0500 Subject: [PATCH 02/20] Added Go --- src/main/java/com/javarush/bekk/util/Go.java | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 src/main/java/com/javarush/bekk/util/Go.java diff --git a/src/main/java/com/javarush/bekk/util/Go.java b/src/main/java/com/javarush/bekk/util/Go.java new file mode 100644 index 0000000..0adcac9 --- /dev/null +++ b/src/main/java/com/javarush/bekk/util/Go.java @@ -0,0 +1,4 @@ +package com.javarush.bekk.util; + +public class Go { +} From be7167d11157fc4a075d9c159d21f7f34e071653 Mon Sep 17 00:00:00 2001 From: "Bekk I.V." <888_1@mail.ru> Date: Sat, 31 Jan 2026 23:56:23 +0500 Subject: [PATCH 03/20] Key --- src/main/java/com/javarush/bekk/util/Key.java | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 src/main/java/com/javarush/bekk/util/Key.java diff --git a/src/main/java/com/javarush/bekk/util/Key.java b/src/main/java/com/javarush/bekk/util/Key.java new file mode 100644 index 0000000..ca0b08c --- /dev/null +++ b/src/main/java/com/javarush/bekk/util/Key.java @@ -0,0 +1,4 @@ +package com.javarush.bekk.util; + +public class Key { +} From 4a249012dd5c28d2f4c6b4b1562a88ab009336c8 Mon Sep 17 00:00:00 2001 From: "Bekk I.V." <888_1@mail.ru> Date: Sun, 1 Feb 2026 10:05:37 +0500 Subject: [PATCH 04/20] Add CSS --- src/main/java/com/javarush/bekk/util/Go.java | 14 +++++ src/main/java/com/javarush/bekk/util/Key.java | 24 +++++++++ src/main/webapp/WEB-INF/parts/header.jsp | 52 +++++++++++++++++++ 3 files changed, 90 insertions(+) create mode 100644 src/main/webapp/WEB-INF/parts/header.jsp diff --git a/src/main/java/com/javarush/bekk/util/Go.java b/src/main/java/com/javarush/bekk/util/Go.java index 0adcac9..c2342cf 100644 --- a/src/main/java/com/javarush/bekk/util/Go.java +++ b/src/main/java/com/javarush/bekk/util/Go.java @@ -1,4 +1,18 @@ package com.javarush.bekk.util; public class Go { + public static final String INDEX = ""; + public static final String HOME = "/home"; + + public static final String SIGNUP = "/signup"; + public static final String LOGIN = "/login"; + public static final String LOGOUT = "/logout"; + public static final String PROFILE = "/profile"; + public static final String LIST_USER = "/list-user"; + public static final String EDIT_USER = "/edit-user"; + + public static final String CREATE = "/create-quest"; + public static final String QUEST = "/quest"; + public static final String STAT = "/stat"; + public static final String GAME = "/game"; } diff --git a/src/main/java/com/javarush/bekk/util/Key.java b/src/main/java/com/javarush/bekk/util/Key.java index ca0b08c..be9bc6f 100644 --- a/src/main/java/com/javarush/bekk/util/Key.java +++ b/src/main/java/com/javarush/bekk/util/Key.java @@ -1,4 +1,28 @@ package com.javarush.bekk.util; +@SuppressWarnings("unused") public class Key { + public static final String INDEX = "index"; + + public static final String ID = "id"; + public static final String SIGNUP = "signup"; + public static final String LOGIN = "login"; + public static final String PASSWORD = "password"; + public static final String ROLE = "role"; + public static final String ROLES = "roles"; + public static final String USERS = "users"; + public static final String USER = "user"; + + public static final String CREATE_QUEST = "create-quest"; + public static final String QUESTS = "quests"; + public static final String QUEST_ID = "questId"; + public static final String QUEST = "quest"; + public static final String QUESTION = "question"; + + public static final String NAME = "name"; + public static final String TEXT = "text"; + + public static final String ERROR_MESSAGE = "errorMessage"; + public static final String GAME = "game"; + public static final String ANSWER = "answer"; } diff --git a/src/main/webapp/WEB-INF/parts/header.jsp b/src/main/webapp/WEB-INF/parts/header.jsp new file mode 100644 index 0000000..cf4f623 --- /dev/null +++ b/src/main/webapp/WEB-INF/parts/header.jsp @@ -0,0 +1,52 @@ +<%@ page contentType="text/html;charset=UTF-8" language="java" %> +<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> + + + + + + + Pantera + + + + + + +
+ +
\ No newline at end of file From 293a5093b3b1dbbf79f0bee9d9cf3415d0e3b671 Mon Sep 17 00:00:00 2001 From: "Bekk I.V." <888_1@mail.ru> Date: Sun, 1 Feb 2026 11:10:22 +0500 Subject: [PATCH 05/20] Add class Login --- src/main/java/com/javarush/bekk/cmd/Login.java | 8 ++++++++ src/main/webapp/WEB-INF/edit-user.jsp | 2 +- src/main/webapp/WEB-INF/list-user.jsp | 5 +++-- src/main/webapp/WEB-INF/start-page.jsp | 2 +- src/main/webapp/assets/css/style.min.css | 1 + 5 files changed, 14 insertions(+), 4 deletions(-) create mode 100644 src/main/java/com/javarush/bekk/cmd/Login.java create mode 100644 src/main/webapp/assets/css/style.min.css diff --git a/src/main/java/com/javarush/bekk/cmd/Login.java b/src/main/java/com/javarush/bekk/cmd/Login.java new file mode 100644 index 0000000..0cbc8c1 --- /dev/null +++ b/src/main/java/com/javarush/bekk/cmd/Login.java @@ -0,0 +1,8 @@ +package com.javarush.bekk.cmd; + +import com.javarush.bekk.service.UserService; + +public class Login implements Command { + + +} diff --git a/src/main/webapp/WEB-INF/edit-user.jsp b/src/main/webapp/WEB-INF/edit-user.jsp index f274104..a0d0f12 100644 --- a/src/main/webapp/WEB-INF/edit-user.jsp +++ b/src/main/webapp/WEB-INF/edit-user.jsp @@ -1,5 +1,5 @@ <%@ page contentType="text/html;charset=UTF-8" language="java" %> -<%@include file="head.jsp" %> +<%@include file="parts/header.jsp" %>
diff --git a/src/main/webapp/WEB-INF/list-user.jsp b/src/main/webapp/WEB-INF/list-user.jsp index dd52c55..3b2ca15 100644 --- a/src/main/webapp/WEB-INF/list-user.jsp +++ b/src/main/webapp/WEB-INF/list-user.jsp @@ -1,7 +1,8 @@ <%@ page contentType="text/html;charset=UTF-8" language="java" %> -<%@include file="head.jsp"%> +<%@include file="parts/header.jsp" %> - + + <%--user-это элемент массива, users-массив --%> ${user.login} diff --git a/src/main/webapp/WEB-INF/start-page.jsp b/src/main/webapp/WEB-INF/start-page.jsp index 0531c1c..1c7d6f3 100644 --- a/src/main/webapp/WEB-INF/start-page.jsp +++ b/src/main/webapp/WEB-INF/start-page.jsp @@ -1,5 +1,5 @@ <%@ page contentType="text/html;charset=UTF-8" language="java" %> -<%@include file="head.jsp"%> +<%@include file="parts/header.jsp" %>

<%= "Hello World!" %>

diff --git a/src/main/webapp/assets/css/style.min.css b/src/main/webapp/assets/css/style.min.css new file mode 100644 index 0000000..320a7ad --- /dev/null +++ b/src/main/webapp/assets/css/style.min.css @@ -0,0 +1 @@ +.fit-cover{object-fit:cover}.bs-icon{--bs-icon-size:.75rem;display:flex;flex-shrink:0;justify-content:center;align-items:center;font-size:var(--bs-icon-size);width:calc(var(--bs-icon-size) * 2);height:calc(var(--bs-icon-size) * 2);color:var(--bs-primary)}.bs-icon-xs{--bs-icon-size:1rem;width:calc(var(--bs-icon-size) * 1.5);height:calc(var(--bs-icon-size) * 1.5)}.bs-icon-sm{--bs-icon-size:1rem}.bs-icon-md{--bs-icon-size:1.5rem}.bs-icon-lg{--bs-icon-size:2rem}.bs-icon-xl{--bs-icon-size:2.5rem}.bs-icon.bs-icon-primary{color:var(--bs-white);background:var(--bs-primary)}.bs-icon.bs-icon-primary-light{color:var(--bs-primary);background:rgba(var(--bs-primary-rgb),.2)}.bs-icon.bs-icon-semi-white{color:var(--bs-primary);background:rgba(255,255,255,.5)}.bs-icon.bs-icon-rounded{border-radius:.5rem}.bs-icon.bs-icon-circle{border-radius:50%} \ No newline at end of file From 67514e7919dbff10314fb72dd745476b8aad2273 Mon Sep 17 00:00:00 2001 From: "Bekk I.V." <888_1@mail.ru> Date: Sun, 1 Feb 2026 11:17:15 +0500 Subject: [PATCH 06/20] Add class Login --- src/main/java/com/javarush/bekk/cmd/Login.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/main/java/com/javarush/bekk/cmd/Login.java b/src/main/java/com/javarush/bekk/cmd/Login.java index 0cbc8c1..bdee26f 100644 --- a/src/main/java/com/javarush/bekk/cmd/Login.java +++ b/src/main/java/com/javarush/bekk/cmd/Login.java @@ -1,8 +1,23 @@ package com.javarush.bekk.cmd; import com.javarush.bekk.service.UserService; +import com.javarush.bekk.util.Key; +import jakarta.servlet.http.HttpServletRequest; public class Login implements Command { + private final UserService userService; + public Login(UserService userService) { + this.userService = userService; + } + @Override + public String doPost(HttpServletRequest request) { + String login = request.getParameter(Key.LOGIN); + String password = request.getParameter(Key.PASSWORD); + + + return ""; + + } } From 1d0723fa282f08be878a0d3891c7666ed53b6a55 Mon Sep 17 00:00:00 2001 From: "Bekk I.V." <888_1@mail.ru> Date: Sun, 1 Feb 2026 13:45:56 +0500 Subject: [PATCH 07/20] Add class Game --- .../javarush/bekk/entity/AbstractEntity.java | 8 +++++ .../java/com/javarush/bekk/entity/Answer.java | 21 ++++++++++++++ .../com/javarush/bekk/entity/GameState.java | 6 ++++ .../java/com/javarush/bekk/entity/Quest.java | 29 +++++++++++++++++++ .../com/javarush/bekk/entity/Question.java | 27 +++++++++++++++++ 5 files changed, 91 insertions(+) create mode 100644 src/main/java/com/javarush/bekk/entity/AbstractEntity.java create mode 100644 src/main/java/com/javarush/bekk/entity/Answer.java create mode 100644 src/main/java/com/javarush/bekk/entity/GameState.java create mode 100644 src/main/java/com/javarush/bekk/entity/Quest.java create mode 100644 src/main/java/com/javarush/bekk/entity/Question.java diff --git a/src/main/java/com/javarush/bekk/entity/AbstractEntity.java b/src/main/java/com/javarush/bekk/entity/AbstractEntity.java new file mode 100644 index 0000000..b8ea02c --- /dev/null +++ b/src/main/java/com/javarush/bekk/entity/AbstractEntity.java @@ -0,0 +1,8 @@ +package com.javarush.bekk.entity; + +public interface AbstractEntity { + + Long getId(); + + void setId(Long id); +} diff --git a/src/main/java/com/javarush/bekk/entity/Answer.java b/src/main/java/com/javarush/bekk/entity/Answer.java new file mode 100644 index 0000000..6ba7271 --- /dev/null +++ b/src/main/java/com/javarush/bekk/entity/Answer.java @@ -0,0 +1,21 @@ +package com.javarush.bekk.entity; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@NoArgsConstructor +@AllArgsConstructor +@Builder +public class Answer implements AbstractEntity { + + private Long id; + + private Long questionId; + + private String text; + + private Long nextQuestionId; +} diff --git a/src/main/java/com/javarush/bekk/entity/GameState.java b/src/main/java/com/javarush/bekk/entity/GameState.java new file mode 100644 index 0000000..db62552 --- /dev/null +++ b/src/main/java/com/javarush/bekk/entity/GameState.java @@ -0,0 +1,6 @@ +package com.javarush.bekk.entity; + +public enum GameState { + WIN, LOSER, PLAY +} + diff --git a/src/main/java/com/javarush/bekk/entity/Quest.java b/src/main/java/com/javarush/bekk/entity/Quest.java new file mode 100644 index 0000000..90d5541 --- /dev/null +++ b/src/main/java/com/javarush/bekk/entity/Quest.java @@ -0,0 +1,29 @@ +package com.javarush.bekk.entity; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.ArrayList; +import java.util.Collection; + +@Data +@NoArgsConstructor +@AllArgsConstructor +@Builder +public class Quest implements AbstractEntity { + + private Long id; + + private String name; //название текста + + private String text; + + private Long authorId; + + private Long startQuestionId; + + private final Collection questions = new ArrayList<>(); + +} diff --git a/src/main/java/com/javarush/bekk/entity/Question.java b/src/main/java/com/javarush/bekk/entity/Question.java new file mode 100644 index 0000000..649cc40 --- /dev/null +++ b/src/main/java/com/javarush/bekk/entity/Question.java @@ -0,0 +1,27 @@ +package com.javarush.bekk.entity; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.ArrayList; +import java.util.Collection; + +@Data +@NoArgsConstructor +@AllArgsConstructor +@Builder +public class Question implements AbstractEntity{ /*1 шаг в игре*/ + + private Long id; //пользователь + + private Long questId; + + private String text; + + private GameState gameState; + + private final Collection answers = new ArrayList<>(); + +} From d1f669517e59437d673471cea35685b2fd2d3a83 Mon Sep 17 00:00:00 2001 From: "Bekk I.V." <888_1@mail.ru> Date: Sun, 1 Feb 2026 14:04:09 +0500 Subject: [PATCH 08/20] Added interface AbstractEntity zum User and Game --- .../java/com/javarush/bekk/entity/Game.java | 24 +++++++++++++++++++ .../java/com/javarush/bekk/entity/User.java | 2 +- 2 files changed, 25 insertions(+), 1 deletion(-) create mode 100644 src/main/java/com/javarush/bekk/entity/Game.java diff --git a/src/main/java/com/javarush/bekk/entity/Game.java b/src/main/java/com/javarush/bekk/entity/Game.java new file mode 100644 index 0000000..0c085c4 --- /dev/null +++ b/src/main/java/com/javarush/bekk/entity/Game.java @@ -0,0 +1,24 @@ +package com.javarush.bekk.entity; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@NoArgsConstructor +@AllArgsConstructor +@Builder +public class Game implements AbstractEntity { + + private Long id; + + private Long questId; + + private Long userId; + + private Long currentQuestionId; + + private GameState gameState; + +} diff --git a/src/main/java/com/javarush/bekk/entity/User.java b/src/main/java/com/javarush/bekk/entity/User.java index 5a0d525..d5824ce 100644 --- a/src/main/java/com/javarush/bekk/entity/User.java +++ b/src/main/java/com/javarush/bekk/entity/User.java @@ -9,7 +9,7 @@ @NoArgsConstructor @AllArgsConstructor @Builder -public class User { +public class User implements AbstractEntity { private Long id; From e1f8d6937862116fd9c32b62bf8904ba1c0d29de Mon Sep 17 00:00:00 2001 From: "Bekk I.V." <888_1@mail.ru> Date: Sun, 1 Feb 2026 16:12:19 +0500 Subject: [PATCH 09/20] Next lesson3.2 after 1:28:00 --- .../bekk/repository/BaseRepository.java | 50 +++++++++++++++++++ .../bekk/repository/QuestRepository.java | 19 +++++++ .../bekk/repository/QuestionRepository.java | 5 ++ .../javarush/bekk/repository/Repository.java | 9 ++-- .../bekk/repository/UserRepository.java | 31 +++++++++--- .../javarush/bekk/service/UserService.java | 12 ++++- 6 files changed, 116 insertions(+), 10 deletions(-) create mode 100644 src/main/java/com/javarush/bekk/repository/BaseRepository.java create mode 100644 src/main/java/com/javarush/bekk/repository/QuestRepository.java create mode 100644 src/main/java/com/javarush/bekk/repository/QuestionRepository.java diff --git a/src/main/java/com/javarush/bekk/repository/BaseRepository.java b/src/main/java/com/javarush/bekk/repository/BaseRepository.java new file mode 100644 index 0000000..2f33fb9 --- /dev/null +++ b/src/main/java/com/javarush/bekk/repository/BaseRepository.java @@ -0,0 +1,50 @@ +package com.javarush.bekk.repository; + +import com.javarush.bekk.entity.AbstractEntity; +import com.javarush.bekk.entity.User; + +import java.util.Collection; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.atomic.AtomicLong; + +public abstract class BaseRepository implements Repository { + /* надо гарантировать (есть setId,getId), что Long в мапе есть абсолютно у любой сущности + поэтому в репозитории ключом будет Long всегда*/ + + protected final Map map = new ConcurrentHashMap<>(); + + public final AtomicLong id = new AtomicLong(0L); + + @Override + public Collection getAll() { + return map.values(); + } + + @Override + public T get(long id) { + return map.get(id); + } + + @Override + public void create(T entity) { + entity.setId(id.incrementAndGet()); + update(entity); + } + + @Override + public void update(T entity) { + map.put(entity.getId(), entity); + } + + @Override + public void delete(T entity) { + map.remove(entity.getId()); + } + + protected boolean nullOrEquals(Object patternField, Object repoField) { + return patternField == null || patternField.equals(repoField); + } +} diff --git a/src/main/java/com/javarush/bekk/repository/QuestRepository.java b/src/main/java/com/javarush/bekk/repository/QuestRepository.java new file mode 100644 index 0000000..3f9a4ae --- /dev/null +++ b/src/main/java/com/javarush/bekk/repository/QuestRepository.java @@ -0,0 +1,19 @@ +package com.javarush.bekk.repository; + +import com.javarush.bekk.entity.Quest; + +import java.util.stream.Stream; + +public class QuestRepository extends BaseRepository { + + @Override + public Stream find(Quest pattern) { + return map.values() + .stream() + .filter(quest -> nullOrEquals(pattern.getId(), quest.getId())) + .filter(quest -> nullOrEquals(pattern.getName(), quest.getName())) + .filter(quest -> nullOrEquals(pattern.getText(), quest.getText())) + .filter(quest -> nullOrEquals(pattern.getAuthorId(), quest.getAuthorId())) + .filter(quest -> nullOrEquals(pattern.getStartQuestionId(), quest.getStartQuestionId())); + } +} diff --git a/src/main/java/com/javarush/bekk/repository/QuestionRepository.java b/src/main/java/com/javarush/bekk/repository/QuestionRepository.java new file mode 100644 index 0000000..6dbe42b --- /dev/null +++ b/src/main/java/com/javarush/bekk/repository/QuestionRepository.java @@ -0,0 +1,5 @@ +package com.javarush.bekk.repository; + +public class QuestionRepository { + +} diff --git a/src/main/java/com/javarush/bekk/repository/Repository.java b/src/main/java/com/javarush/bekk/repository/Repository.java index 385273c..7261e79 100644 --- a/src/main/java/com/javarush/bekk/repository/Repository.java +++ b/src/main/java/com/javarush/bekk/repository/Repository.java @@ -4,12 +4,15 @@ import java.util.Collection; import java.util.Optional; +import java.util.stream.Stream; -public interface Repository { +public interface Repository { - Collection getAll(); + Collection getAll(); - Optional get(long id); + Stream find(T pattern); + + T get(long id); void create(T entity); diff --git a/src/main/java/com/javarush/bekk/repository/UserRepository.java b/src/main/java/com/javarush/bekk/repository/UserRepository.java index b8bb782..03ea175 100644 --- a/src/main/java/com/javarush/bekk/repository/UserRepository.java +++ b/src/main/java/com/javarush/bekk/repository/UserRepository.java @@ -8,21 +8,40 @@ import java.util.Map; import java.util.Optional; import java.util.concurrent.atomic.AtomicLong; +import java.util.stream.Stream; -public class UserRepository implements Repository { +public class UserRepository extends BaseRepository { - private final Map map = new HashMap<>(); + //private final Map map = new HashMap<>(); - public static final AtomicLong id = new AtomicLong(System.currentTimeMillis()); + //public static final AtomicLong id = new AtomicLong(System.currentTimeMillis()); - public UserRepository() { + /*public UserRepository() { map.put(1L, new User(1L, "Alisa", "qwerty", Role.USER)); map.put(2L, new User(2L, "Bob", "", Role.GUEST)); map.put(3L, new User(3L, "Carl", "admin", Role.ADMIN)); map.put(4L, new User(4L, "Khmelov", "admin", Role.ADMIN)); - } + }*/ @Override + public Stream find(User pattern) { + return map.values() + .stream() + .filter(user -> nullOrEquals(pattern.getId(), user.getId())) + .filter(user -> nullOrEquals(pattern.getLogin(), user.getLogin())) + .filter(user -> nullOrEquals(pattern.getPassword(), user.getPassword())) + .filter(user -> nullOrEquals(pattern.getRole(), user.getRole())); + } + + + + + + + + + + /*@Override public Collection getAll() { return map.values(); } @@ -46,5 +65,5 @@ public void update(User entity) { @Override public void delete(User entity) { map.remove(entity.getId()); - } + }*/ } diff --git a/src/main/java/com/javarush/bekk/service/UserService.java b/src/main/java/com/javarush/bekk/service/UserService.java index c345687..986e649 100644 --- a/src/main/java/com/javarush/bekk/service/UserService.java +++ b/src/main/java/com/javarush/bekk/service/UserService.java @@ -31,6 +31,16 @@ public Collection getAll() { } public Optional get(long id) { - return userRepository.get(id); + return Optional.ofNullable(userRepository.get(id)); } + + public Optional get(String login, String password) { + User patternUser = User. + builder() + .login(login) + .password(password) + .build(); + return userRepository.find(patternUser).findAny(); + } + } From 77288619096a14fadb3ba950209d4695f2061a07 Mon Sep 17 00:00:00 2001 From: "Bekk I.V." <888_1@mail.ru> Date: Sun, 1 Feb 2026 18:42:29 +0500 Subject: [PATCH 10/20] Add config. --- .../bekk/repository/AnswerRepository.java | 18 ++++++++++++++++++ .../bekk/repository/GameRepository.java | 18 ++++++++++++++++++ .../bekk/repository/QuestionRepository.java | 14 +++++++++++++- 3 files changed, 49 insertions(+), 1 deletion(-) create mode 100644 src/main/java/com/javarush/bekk/repository/AnswerRepository.java create mode 100644 src/main/java/com/javarush/bekk/repository/GameRepository.java diff --git a/src/main/java/com/javarush/bekk/repository/AnswerRepository.java b/src/main/java/com/javarush/bekk/repository/AnswerRepository.java new file mode 100644 index 0000000..2025c1e --- /dev/null +++ b/src/main/java/com/javarush/bekk/repository/AnswerRepository.java @@ -0,0 +1,18 @@ +package com.javarush.bekk.repository; + +import com.javarush.bekk.entity.Answer; + +import java.util.stream.Stream; + +public class AnswerRepository extends BaseRepository { + + @Override + public Stream find(Answer pattern) { + return map.values() + .stream() + .filter(answer -> nullOrEquals(pattern.getId(), answer.getId())) + .filter(answer -> nullOrEquals(pattern.getQuestionId(), answer.getQuestionId())) + .filter(answer -> nullOrEquals(pattern.getText(), answer.getText())) + .filter(answer -> nullOrEquals(pattern.getQuestionId(), answer.getQuestionId())); + } +} diff --git a/src/main/java/com/javarush/bekk/repository/GameRepository.java b/src/main/java/com/javarush/bekk/repository/GameRepository.java new file mode 100644 index 0000000..4bcf540 --- /dev/null +++ b/src/main/java/com/javarush/bekk/repository/GameRepository.java @@ -0,0 +1,18 @@ +package com.javarush.bekk.repository; + +import com.javarush.bekk.entity.Game; + +import java.util.stream.Stream; + +public class GameRepository extends BaseRepository { + @Override + public Stream find(Game pattern) { + return map.values() + .stream() + .filter(game -> nullOrEquals(pattern.getId(), game.getId())) + .filter(game -> nullOrEquals(pattern.getQuestId(), game.getQuestId())) + .filter(game -> nullOrEquals(pattern.getUserId(), game.getUserId())) + .filter(game -> nullOrEquals(pattern.getCurrentQuestionId(), game.getCurrentQuestionId())) + .filter(game -> nullOrEquals(pattern.getGameState(), game.getGameState())); + } +} diff --git a/src/main/java/com/javarush/bekk/repository/QuestionRepository.java b/src/main/java/com/javarush/bekk/repository/QuestionRepository.java index 6dbe42b..d9f53e7 100644 --- a/src/main/java/com/javarush/bekk/repository/QuestionRepository.java +++ b/src/main/java/com/javarush/bekk/repository/QuestionRepository.java @@ -1,5 +1,17 @@ package com.javarush.bekk.repository; -public class QuestionRepository { +import com.javarush.bekk.entity.Question; +import java.util.stream.Stream; + +public class QuestionRepository extends BaseRepository { + @Override + public Stream find(Question pattern) { + return map.values() + .stream() + .filter(question -> nullOrEquals(pattern.getId(), question.getId())) + .filter(question -> nullOrEquals(pattern.getQuestId(), question.getQuestId())) + .filter(question -> nullOrEquals(pattern.getText(), question.getText())) + .filter(question -> nullOrEquals(pattern.getGameState(), question.getGameState())); + } } From b02e8a6216bbd8f6f48e44fdb3e33e2b77d77a9d Mon Sep 17 00:00:00 2001 From: "Bekk I.V." <888_1@mail.ru> Date: Sun, 1 Feb 2026 20:17:16 +0500 Subject: [PATCH 11/20] Start standalone --- .../java/com/javarush/bekk/cmd/PlayGame.java | 4 +++ .../java/com/javarush/bekk/config/Config.java | 32 +++++++++++++++++++ 2 files changed, 36 insertions(+) create mode 100644 src/main/java/com/javarush/bekk/cmd/PlayGame.java create mode 100644 src/main/java/com/javarush/bekk/config/Config.java diff --git a/src/main/java/com/javarush/bekk/cmd/PlayGame.java b/src/main/java/com/javarush/bekk/cmd/PlayGame.java new file mode 100644 index 0000000..84bfcfc --- /dev/null +++ b/src/main/java/com/javarush/bekk/cmd/PlayGame.java @@ -0,0 +1,4 @@ +package com.javarush.bekk.cmd; + +public class PlayGame { +} diff --git a/src/main/java/com/javarush/bekk/config/Config.java b/src/main/java/com/javarush/bekk/config/Config.java new file mode 100644 index 0000000..1bf7b5f --- /dev/null +++ b/src/main/java/com/javarush/bekk/config/Config.java @@ -0,0 +1,32 @@ +package com.javarush.bekk.config; + +import com.javarush.bekk.entity.Role; +import com.javarush.bekk.entity.User; +import com.javarush.bekk.service.UserService; +import lombok.AllArgsConstructor; + +@AllArgsConstructor +public class Config { + + private final UserService userService; + + public void fillEmptyRepository() { + if (userService.get(1L).isEmpty()){ + User admin = buildUser("Carl", "admin", Role.ADMIN); + userService.create(admin); + User alisa = buildUser("Alisa", "qwerty", Role.USER); + userService.create(alisa); + User bob = buildUser("Bob", "123", Role.GUEST); + userService.create(bob); + } + } + + private static User buildUser(String name, String password, Role role) { + return User.builder() + .login(name) + .password(password) + .role(role) + .build(); + } + +} From 29ff730923dece9a1cb327a9b80237ac8bb15965 Mon Sep 17 00:00:00 2001 From: "Bekk I.V." <888_1@mail.ru> Date: Sun, 1 Feb 2026 20:47:46 +0500 Subject: [PATCH 12/20] Start standalone --- .../java/com/javarush/bekk/cmd/Login.java | 23 --------- .../bekk/controller/FrontController.java | 2 +- .../java/com/javarush/bekk/entity/Quest.java | 29 ----------- .../bekk/repository/QuestRepository.java | 19 ------- src/main/webapp/WEB-INF/play-game.jsp | 51 +++++++++++++++++++ 5 files changed, 52 insertions(+), 72 deletions(-) delete mode 100644 src/main/java/com/javarush/bekk/cmd/Login.java delete mode 100644 src/main/java/com/javarush/bekk/entity/Quest.java delete mode 100644 src/main/java/com/javarush/bekk/repository/QuestRepository.java create mode 100644 src/main/webapp/WEB-INF/play-game.jsp diff --git a/src/main/java/com/javarush/bekk/cmd/Login.java b/src/main/java/com/javarush/bekk/cmd/Login.java deleted file mode 100644 index bdee26f..0000000 --- a/src/main/java/com/javarush/bekk/cmd/Login.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.javarush.bekk.cmd; - -import com.javarush.bekk.service.UserService; -import com.javarush.bekk.util.Key; -import jakarta.servlet.http.HttpServletRequest; - -public class Login implements Command { - private final UserService userService; - - public Login(UserService userService) { - this.userService = userService; - } - - @Override - public String doPost(HttpServletRequest request) { - String login = request.getParameter(Key.LOGIN); - String password = request.getParameter(Key.PASSWORD); - - - return ""; - - } -} diff --git a/src/main/java/com/javarush/bekk/controller/FrontController.java b/src/main/java/com/javarush/bekk/controller/FrontController.java index ad0137f..3b34e51 100644 --- a/src/main/java/com/javarush/bekk/controller/FrontController.java +++ b/src/main/java/com/javarush/bekk/controller/FrontController.java @@ -12,7 +12,7 @@ import java.io.IOException; -@WebServlet({"", "/home", "/list-user", "/edit-user"}) +@WebServlet({"", "/home", "/list-user", "/edit-user", "/play-game"}) public class FrontController extends HttpServlet { private final HttpResolver httpResolver = Winter.find(HttpResolver.class); diff --git a/src/main/java/com/javarush/bekk/entity/Quest.java b/src/main/java/com/javarush/bekk/entity/Quest.java deleted file mode 100644 index 90d5541..0000000 --- a/src/main/java/com/javarush/bekk/entity/Quest.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.javarush.bekk.entity; - -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.util.ArrayList; -import java.util.Collection; - -@Data -@NoArgsConstructor -@AllArgsConstructor -@Builder -public class Quest implements AbstractEntity { - - private Long id; - - private String name; //название текста - - private String text; - - private Long authorId; - - private Long startQuestionId; - - private final Collection questions = new ArrayList<>(); - -} diff --git a/src/main/java/com/javarush/bekk/repository/QuestRepository.java b/src/main/java/com/javarush/bekk/repository/QuestRepository.java deleted file mode 100644 index 3f9a4ae..0000000 --- a/src/main/java/com/javarush/bekk/repository/QuestRepository.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.javarush.bekk.repository; - -import com.javarush.bekk.entity.Quest; - -import java.util.stream.Stream; - -public class QuestRepository extends BaseRepository { - - @Override - public Stream find(Quest pattern) { - return map.values() - .stream() - .filter(quest -> nullOrEquals(pattern.getId(), quest.getId())) - .filter(quest -> nullOrEquals(pattern.getName(), quest.getName())) - .filter(quest -> nullOrEquals(pattern.getText(), quest.getText())) - .filter(quest -> nullOrEquals(pattern.getAuthorId(), quest.getAuthorId())) - .filter(quest -> nullOrEquals(pattern.getStartQuestionId(), quest.getStartQuestionId())); - } -} diff --git a/src/main/webapp/WEB-INF/play-game.jsp b/src/main/webapp/WEB-INF/play-game.jsp new file mode 100644 index 0000000..2e19e9f --- /dev/null +++ b/src/main/webapp/WEB-INF/play-game.jsp @@ -0,0 +1,51 @@ +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ page contentType="text/html;charset=UTF-8" %> + +
+ + + + + +
+ +
+ ${question.image} +
+

+ +

${question.text}

+ +
    + +
    + + +
    +
    +
+ +
+ +
+ + + + + + + + +
+
+ +
+
+ + From dc8f10d5f5782bd647cae96c6fd81173544c8e30 Mon Sep 17 00:00:00 2001 From: "Bekk I.V." <888_1@mail.ru> Date: Mon, 2 Feb 2026 16:42:38 +0500 Subject: [PATCH 13/20] Start standalone --- .../java/com/javarush/bekk/cmd/StartPage.java | 21 +++++++++- .../java/com/javarush/bekk/cmd/TestPage.java | 20 +++++++++ .../java/com/javarush/bekk/config/Config.java | 5 ++- .../bekk/controller/FrontController.java | 2 +- .../com/javarush/bekk/entity/Question.java | 4 +- .../bekk/repository/AnswerRepository.java | 13 ++---- .../bekk/repository/BaseRepository.java | 4 +- .../bekk/repository/QuestionRepository.java | 37 +++++++++++++--- .../javarush/bekk/repository/Repository.java | 2 +- .../bekk/repository/UserRepository.java | 12 +++--- .../javarush/bekk/service/AnswerService.java | 13 ++++++ .../bekk/service/QuestionService.java | 18 ++++++++ .../javarush/bekk/service/UserService.java | 4 +- src/main/webapp/WEB-INF/parts/header.jsp | 4 +- src/main/webapp/WEB-INF/start-page.jsp | 7 +++- src/main/webapp/WEB-INF/test-page.jsp | 42 +++++++++++++++++++ 16 files changed, 174 insertions(+), 34 deletions(-) create mode 100644 src/main/java/com/javarush/bekk/cmd/TestPage.java create mode 100644 src/main/java/com/javarush/bekk/service/AnswerService.java create mode 100644 src/main/java/com/javarush/bekk/service/QuestionService.java create mode 100644 src/main/webapp/WEB-INF/test-page.jsp diff --git a/src/main/java/com/javarush/bekk/cmd/StartPage.java b/src/main/java/com/javarush/bekk/cmd/StartPage.java index 75c1ddc..2d7bc65 100644 --- a/src/main/java/com/javarush/bekk/cmd/StartPage.java +++ b/src/main/java/com/javarush/bekk/cmd/StartPage.java @@ -1,6 +1,25 @@ package com.javarush.bekk.cmd; +import com.javarush.bekk.entity.Answer; +import com.javarush.bekk.entity.Question; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpSession; + @SuppressWarnings("unused") public class StartPage implements Command { - + @Override + public String doGet(HttpServletRequest request) { + HttpSession session = request.getSession(); + Question question = new Question(); + question.setId(1L); + question.setText("Single Responsibility Principle (Принцип единственной ответственности)"); + Answer answer = new Answer(); + answer.setId(1L); + answer.setText("Каждый класс должен иметь только одну причину для изменения, " + + "то есть выполнять только одну задачу или отвечать за одну ответственность." + + " Это повышает сплочённость (cohesion) и упрощает поддержку кода."); + session.setAttribute("answer", answer); + session.setAttribute("question", question); + return getView(); + } } diff --git a/src/main/java/com/javarush/bekk/cmd/TestPage.java b/src/main/java/com/javarush/bekk/cmd/TestPage.java new file mode 100644 index 0000000..bc9e9ad --- /dev/null +++ b/src/main/java/com/javarush/bekk/cmd/TestPage.java @@ -0,0 +1,20 @@ +package com.javarush.bekk.cmd; + +import com.javarush.bekk.entity.Answer; +import com.javarush.bekk.entity.Question; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpSession; + +public class TestPage implements Command { + + + /*@Override + public String doPost(HttpServletRequest request) { + HttpSession currentSession = request.getSession(); + Answer answer = new Answer(); + + Question question = new Question(); + + return ""; + }*/ +} diff --git a/src/main/java/com/javarush/bekk/config/Config.java b/src/main/java/com/javarush/bekk/config/Config.java index 1bf7b5f..8983779 100644 --- a/src/main/java/com/javarush/bekk/config/Config.java +++ b/src/main/java/com/javarush/bekk/config/Config.java @@ -1,7 +1,10 @@ package com.javarush.bekk.config; +import com.javarush.bekk.entity.Question; import com.javarush.bekk.entity.Role; import com.javarush.bekk.entity.User; +import com.javarush.bekk.repository.QuestionRepository; +import com.javarush.bekk.service.QuestionService; import com.javarush.bekk.service.UserService; import lombok.AllArgsConstructor; @@ -9,7 +12,7 @@ public class Config { private final UserService userService; - +private final QuestionRepository questionRepository; public void fillEmptyRepository() { if (userService.get(1L).isEmpty()){ User admin = buildUser("Carl", "admin", Role.ADMIN); diff --git a/src/main/java/com/javarush/bekk/controller/FrontController.java b/src/main/java/com/javarush/bekk/controller/FrontController.java index 3b34e51..41ddb2b 100644 --- a/src/main/java/com/javarush/bekk/controller/FrontController.java +++ b/src/main/java/com/javarush/bekk/controller/FrontController.java @@ -12,7 +12,7 @@ import java.io.IOException; -@WebServlet({"", "/home", "/list-user", "/edit-user", "/play-game"}) +@WebServlet({"", "/home", "/list-user", "/edit-user", "/play-game", "/test-page"}) public class FrontController extends HttpServlet { private final HttpResolver httpResolver = Winter.find(HttpResolver.class); diff --git a/src/main/java/com/javarush/bekk/entity/Question.java b/src/main/java/com/javarush/bekk/entity/Question.java index 649cc40..ea249ae 100644 --- a/src/main/java/com/javarush/bekk/entity/Question.java +++ b/src/main/java/com/javarush/bekk/entity/Question.java @@ -16,11 +16,11 @@ public class Question implements AbstractEntity{ /*1 шаг в игре*/ private Long id; //пользователь - private Long questId; + //private Long questId; private String text; - private GameState gameState; + //private GameState gameState; private final Collection answers = new ArrayList<>(); diff --git a/src/main/java/com/javarush/bekk/repository/AnswerRepository.java b/src/main/java/com/javarush/bekk/repository/AnswerRepository.java index 2025c1e..7f0d357 100644 --- a/src/main/java/com/javarush/bekk/repository/AnswerRepository.java +++ b/src/main/java/com/javarush/bekk/repository/AnswerRepository.java @@ -2,17 +2,12 @@ import com.javarush.bekk.entity.Answer; +import java.util.ArrayList; +import java.util.Collection; import java.util.stream.Stream; public class AnswerRepository extends BaseRepository { - @Override - public Stream find(Answer pattern) { - return map.values() - .stream() - .filter(answer -> nullOrEquals(pattern.getId(), answer.getId())) - .filter(answer -> nullOrEquals(pattern.getQuestionId(), answer.getQuestionId())) - .filter(answer -> nullOrEquals(pattern.getText(), answer.getText())) - .filter(answer -> nullOrEquals(pattern.getQuestionId(), answer.getQuestionId())); - } + + } diff --git a/src/main/java/com/javarush/bekk/repository/BaseRepository.java b/src/main/java/com/javarush/bekk/repository/BaseRepository.java index 2f33fb9..c917f21 100644 --- a/src/main/java/com/javarush/bekk/repository/BaseRepository.java +++ b/src/main/java/com/javarush/bekk/repository/BaseRepository.java @@ -44,7 +44,7 @@ public void delete(T entity) { map.remove(entity.getId()); } - protected boolean nullOrEquals(Object patternField, Object repoField) { + /*protected boolean nullOrEquals(Object patternField, Object repoField) { return patternField == null || patternField.equals(repoField); - } + }*/ } diff --git a/src/main/java/com/javarush/bekk/repository/QuestionRepository.java b/src/main/java/com/javarush/bekk/repository/QuestionRepository.java index d9f53e7..c633223 100644 --- a/src/main/java/com/javarush/bekk/repository/QuestionRepository.java +++ b/src/main/java/com/javarush/bekk/repository/QuestionRepository.java @@ -1,17 +1,44 @@ package com.javarush.bekk.repository; +import com.javarush.bekk.entity.Answer; import com.javarush.bekk.entity.Question; +import com.javarush.bekk.entity.User; +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; +import java.util.concurrent.atomic.AtomicLong; import java.util.stream.Stream; public class QuestionRepository extends BaseRepository { - @Override + + private final Map map = new HashMap<>(); + + public static final AtomicLong id = new AtomicLong(System.currentTimeMillis()); + + public QuestionRepository() { + Answer answer = new Answer(1L, 1L, "Что-то", 2L); + + map.put(1L, new Question(1L, "1. S — Single Responsibility Principle (Принцип единственной ответственности)")); + map.put(2L, new Question(2L, "2. O — Open/Closed Principle (Принцип открытости/закрытости)")); + map.put(3L, new Question(3L, "3. L — Liskov Substitution Principle (Принцип подстановки Барбары Лисков)")); + map.put(4L, new Question(4L, "4. I — Interface Segregation Principle (Принцип разделения интерфейсов)")); + map.put(5L, new Question(5L, "5. D — Dependency Inversion Principle (Принцип инверсии зависимостей)")); + } + + + + + + + + + + /*@Override public Stream find(Question pattern) { return map.values() .stream() .filter(question -> nullOrEquals(pattern.getId(), question.getId())) - .filter(question -> nullOrEquals(pattern.getQuestId(), question.getQuestId())) - .filter(question -> nullOrEquals(pattern.getText(), question.getText())) - .filter(question -> nullOrEquals(pattern.getGameState(), question.getGameState())); - } + .filter(question -> nullOrEquals(pattern.getText(), question.getText())); + }*/ } diff --git a/src/main/java/com/javarush/bekk/repository/Repository.java b/src/main/java/com/javarush/bekk/repository/Repository.java index 7261e79..55622bf 100644 --- a/src/main/java/com/javarush/bekk/repository/Repository.java +++ b/src/main/java/com/javarush/bekk/repository/Repository.java @@ -10,7 +10,7 @@ public interface Repository { Collection getAll(); - Stream find(T pattern); + //Stream find(T pattern); T get(long id); diff --git a/src/main/java/com/javarush/bekk/repository/UserRepository.java b/src/main/java/com/javarush/bekk/repository/UserRepository.java index 03ea175..b50ef87 100644 --- a/src/main/java/com/javarush/bekk/repository/UserRepository.java +++ b/src/main/java/com/javarush/bekk/repository/UserRepository.java @@ -12,18 +12,18 @@ public class UserRepository extends BaseRepository { - //private final Map map = new HashMap<>(); + private final Map map = new HashMap<>(); - //public static final AtomicLong id = new AtomicLong(System.currentTimeMillis()); + public static final AtomicLong id = new AtomicLong(System.currentTimeMillis()); - /*public UserRepository() { + public UserRepository() { map.put(1L, new User(1L, "Alisa", "qwerty", Role.USER)); map.put(2L, new User(2L, "Bob", "", Role.GUEST)); map.put(3L, new User(3L, "Carl", "admin", Role.ADMIN)); map.put(4L, new User(4L, "Khmelov", "admin", Role.ADMIN)); - }*/ + } - @Override + /* @Override public Stream find(User pattern) { return map.values() .stream() @@ -31,7 +31,7 @@ public Stream find(User pattern) { .filter(user -> nullOrEquals(pattern.getLogin(), user.getLogin())) .filter(user -> nullOrEquals(pattern.getPassword(), user.getPassword())) .filter(user -> nullOrEquals(pattern.getRole(), user.getRole())); - } + }*/ diff --git a/src/main/java/com/javarush/bekk/service/AnswerService.java b/src/main/java/com/javarush/bekk/service/AnswerService.java new file mode 100644 index 0000000..3bf31c2 --- /dev/null +++ b/src/main/java/com/javarush/bekk/service/AnswerService.java @@ -0,0 +1,13 @@ +package com.javarush.bekk.service; + +import com.javarush.bekk.entity.Answer; +import com.javarush.bekk.repository.QuestionRepository; + +public class AnswerService { + private final QuestionRepository questionRepository; + + public AnswerService(QuestionRepository questionRepository) { + this.questionRepository = questionRepository; + } + +} diff --git a/src/main/java/com/javarush/bekk/service/QuestionService.java b/src/main/java/com/javarush/bekk/service/QuestionService.java new file mode 100644 index 0000000..a604f1a --- /dev/null +++ b/src/main/java/com/javarush/bekk/service/QuestionService.java @@ -0,0 +1,18 @@ +package com.javarush.bekk.service; + +import com.javarush.bekk.entity.Question; +import com.javarush.bekk.repository.QuestionRepository; + +public class QuestionService { + + private final QuestionRepository questionRepository; + + public QuestionService(QuestionRepository questionRepository) { + this.questionRepository = questionRepository; + } + + public void createQuestion(Question question) { + questionRepository.create(question); + } + +} diff --git a/src/main/java/com/javarush/bekk/service/UserService.java b/src/main/java/com/javarush/bekk/service/UserService.java index 986e649..4805c59 100644 --- a/src/main/java/com/javarush/bekk/service/UserService.java +++ b/src/main/java/com/javarush/bekk/service/UserService.java @@ -34,13 +34,13 @@ public Optional get(long id) { return Optional.ofNullable(userRepository.get(id)); } - public Optional get(String login, String password) { + /*public Optional get(String login, String password) { User patternUser = User. builder() .login(login) .password(password) .build(); return userRepository.find(patternUser).findAny(); - } + }*/ } diff --git a/src/main/webapp/WEB-INF/parts/header.jsp b/src/main/webapp/WEB-INF/parts/header.jsp index cf4f623..1524c77 100644 --- a/src/main/webapp/WEB-INF/parts/header.jsp +++ b/src/main/webapp/WEB-INF/parts/header.jsp @@ -25,7 +25,7 @@ Pantera - --%>
\ No newline at end of file diff --git a/src/main/webapp/WEB-INF/start-page.jsp b/src/main/webapp/WEB-INF/start-page.jsp index 1c7d6f3..8957237 100644 --- a/src/main/webapp/WEB-INF/start-page.jsp +++ b/src/main/webapp/WEB-INF/start-page.jsp @@ -1,8 +1,11 @@ <%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@include file="parts/header.jsp" %> -

<%= "Hello World!" %> +<%--

<%= "Тестирование по моим заметкам!" %>--%>

+
-List Users +Старт тестирования по SOLID +<%--List Users--%> +<%--${user.login}--%> diff --git a/src/main/webapp/WEB-INF/test-page.jsp b/src/main/webapp/WEB-INF/test-page.jsp new file mode 100644 index 0000000..988cb70 --- /dev/null +++ b/src/main/webapp/WEB-INF/test-page.jsp @@ -0,0 +1,42 @@ +<%@ page contentType="text/html;charset=UTF-8" language="java" %> +<%@include file="parts/header.jsp" %> + +

<%= "Тестирование по по SOLID" %> +

+ +
+

${sessionScope.question.text}

+ + + +
+ + +

+
+ +
+ +
+ + +<%--user-это элемент массива, users-массив --%> +<%-- + ${user.login} +--%> + + + + +<%-- +
+

Какой вариант вы выбираете?

+ + +
+ + +

+ + +
--%> From cc2697a3459960b1532a6fdeb0743edaad12eebb Mon Sep 17 00:00:00 2001 From: "Bekk I.V." <888_1@mail.ru> Date: Mon, 2 Feb 2026 20:27:45 +0500 Subject: [PATCH 14/20] Process standalone --- src/main/java/com/javarush/bekk/cmd/StartPage.java | 6 +++++- .../javarush/bekk/repository/GameRepository.java | 11 +---------- src/main/webapp/WEB-INF/end-page.jsp | 14 ++++++++++++++ src/main/webapp/WEB-INF/test-page.jsp | 8 ++++---- 4 files changed, 24 insertions(+), 15 deletions(-) create mode 100644 src/main/webapp/WEB-INF/end-page.jsp diff --git a/src/main/java/com/javarush/bekk/cmd/StartPage.java b/src/main/java/com/javarush/bekk/cmd/StartPage.java index 2d7bc65..7a20b56 100644 --- a/src/main/java/com/javarush/bekk/cmd/StartPage.java +++ b/src/main/java/com/javarush/bekk/cmd/StartPage.java @@ -17,8 +17,12 @@ public String doGet(HttpServletRequest request) { answer.setId(1L); answer.setText("Каждый класс должен иметь только одну причину для изменения, " + "то есть выполнять только одну задачу или отвечать за одну ответственность." + - " Это повышает сплочённость (cohesion) и упрощает поддержку кода."); + " Это повышает сплочённость (cohesion) и упрощает поддержку кода"); + Answer answer1 = new Answer(); + answer1.setId(2L); + answer1.setText("Каждый класс должен иметь множество причин для изменения, то есть выполнять множество задач"); session.setAttribute("answer", answer); + session.setAttribute("answer1", answer1); session.setAttribute("question", question); return getView(); } diff --git a/src/main/java/com/javarush/bekk/repository/GameRepository.java b/src/main/java/com/javarush/bekk/repository/GameRepository.java index 4bcf540..1982dad 100644 --- a/src/main/java/com/javarush/bekk/repository/GameRepository.java +++ b/src/main/java/com/javarush/bekk/repository/GameRepository.java @@ -5,14 +5,5 @@ import java.util.stream.Stream; public class GameRepository extends BaseRepository { - @Override - public Stream find(Game pattern) { - return map.values() - .stream() - .filter(game -> nullOrEquals(pattern.getId(), game.getId())) - .filter(game -> nullOrEquals(pattern.getQuestId(), game.getQuestId())) - .filter(game -> nullOrEquals(pattern.getUserId(), game.getUserId())) - .filter(game -> nullOrEquals(pattern.getCurrentQuestionId(), game.getCurrentQuestionId())) - .filter(game -> nullOrEquals(pattern.getGameState(), game.getGameState())); - } + } diff --git a/src/main/webapp/WEB-INF/end-page.jsp b/src/main/webapp/WEB-INF/end-page.jsp new file mode 100644 index 0000000..bd08c39 --- /dev/null +++ b/src/main/webapp/WEB-INF/end-page.jsp @@ -0,0 +1,14 @@ +<%@ page contentType="text/html;charset=UTF-8" language="java" %> +<%@include file="parts/header.jsp" %> + +<%--

<%= "Тестирование по моим заметкам!" %>--%> +

+ +
+Ответ не правильный. Тест окончен. +<%--List Users--%> +<%--${user.login}--%> +
+ +
+ diff --git a/src/main/webapp/WEB-INF/test-page.jsp b/src/main/webapp/WEB-INF/test-page.jsp index 988cb70..530abb7 100644 --- a/src/main/webapp/WEB-INF/test-page.jsp +++ b/src/main/webapp/WEB-INF/test-page.jsp @@ -4,16 +4,16 @@

<%= "Тестирование по по SOLID" %>

-
+

${sessionScope.question.text}

- +
-

-
+

+
From d86d99ebb541895f9dbe17f4ed8077374d6da10f Mon Sep 17 00:00:00 2001 From: "Bekk I.V." <888_1@mail.ru> Date: Mon, 2 Feb 2026 21:45:20 +0500 Subject: [PATCH 15/20] Add init Config --- .../java/com/javarush/bekk/config/Config.java | 55 +++++++++++++++++++ .../bekk/repository/QuestionRepository.java | 3 +- 2 files changed, 57 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/javarush/bekk/config/Config.java b/src/main/java/com/javarush/bekk/config/Config.java index 8983779..14c416d 100644 --- a/src/main/java/com/javarush/bekk/config/Config.java +++ b/src/main/java/com/javarush/bekk/config/Config.java @@ -1,5 +1,6 @@ package com.javarush.bekk.config; +import com.javarush.bekk.entity.Answer; import com.javarush.bekk.entity.Question; import com.javarush.bekk.entity.Role; import com.javarush.bekk.entity.User; @@ -32,4 +33,58 @@ private static User buildUser(String name, String password, Role role) { .build(); } + public void fillRepository() { + Question question1 = buildQuestion(1L, "S — Single Responsibility Principle (Принцип единственной ответственности)"); + question1.getAnswers().add(new Answer(1L, question1.getId(), "Каждый класс должен иметь только одну причину для изменения, " + + "то есть выполнять только одну задачу или отвечать за одну ответственность. Это повышает сплочённость (cohesion) и упрощает поддержку кода", + question1.getId() + 1)); + question1.getAnswers().add(new Answer(2L, question1.getId(), "Каждый класс должен иметь только одну причину для изменения, " + + "то есть выполнять только одну задачу или отвечать за одну ответственность. Это повышает сплочённость (cohesion) и упрощает поддержку кода", + question1.getId() + 1)); + questionRepository.create(question1); + + Question question2 = buildQuestion(2L, "O — Open/Closed Principle (Принцип открытости/закрытости)"); + question2.getAnswers().add(new Answer(1L, question2.getId(), "Классы должны быть открыты для расширения (добавления нового функционала), " + + "но закрыты для модификации (изменения существующего кода). Это достигается через абстракции (интерфейсы, абстрактные классы) и полиморфизм", + question2.getId() + 1)); + question2.getAnswers().add(new Answer(2L, question2.getId(), "Классы должны быть закрыты для расширения (добавления нового функционала), " + + "но открыты для модификации (изменения существующего кода)", + question2.getId() + 1)); + questionRepository.create(question2); + + Question question3 = buildQuestion(3L, "Liskov Substitution Principle (Принцип подстановки Барбары Лисков)"); + question3.getAnswers().add(new Answer(1L, question3.getId(), "Объекты базового класса должны быть заменяемы объектами " + + "производных классов без изменения поведения программы. Это гарантирует, что подклассы не нарушают контракты, заданные базовым классом", + question3.getId() + 1)); + question3.getAnswers().add(new Answer(2L, question3.getId(), "Объекты базового класса не должны быть заменяемы объектами производных классов " + + "без изменения поведения программы. Это гарантирует, что подклассы не нарушают контракты, заданные базовым классом", + question3.getId() + 1)); + questionRepository.create(question3); + + Question question4 = buildQuestion(4L, "Interface Segregation Principle (Принцип разделения интерфейсов)"); + question4.getAnswers().add(new Answer(1L, question4.getId(), "Клиенты не должны быть вынуждены реализовывать интерфейсы, которые они не используют. " + + "Интерфейсы должны быть узкоспециализированными, чтобы классы реализовывали только необходимый функционал", + question4.getId() + 1)); + question4.getAnswers().add(new Answer(2L, question4.getId(), "Клиенты должны реализовывать интерфейсы, которые они не используют. " + + "Интерфейсы должны быть универсальными, чтобы классы реализовывали универсальный функционал", + question4.getId() + 1)); + questionRepository.create(question4); + + Question question5 = buildQuestion(5L, "D — Dependency Inversion Principle (Принцип инверсии зависимостей)"); + question5.getAnswers().add(new Answer(1L, question5.getId(), "Модули высокого уровня не должны зависеть от модулей низкого уровня; " + + "оба должны зависеть от абстракций. Абстракции не должны зависеть от деталей реализации, а детали — от абстракций. Это снижает связанность (coupling)", + question5.getId() + 1)); + question5.getAnswers().add(new Answer(2L, question5.getId(), "Модули высокого уровня должны зависеть от модулей низкого уровня. " + + "Это повышает связанность и упрощает написание программы", + question5.getId() + 1)); + questionRepository.create(question5); + } + + private static Question buildQuestion(Long questionId, String text) { + return Question.builder() + .id(questionId) + .text(text) + .build(); + } + } diff --git a/src/main/java/com/javarush/bekk/repository/QuestionRepository.java b/src/main/java/com/javarush/bekk/repository/QuestionRepository.java index c633223..223efcb 100644 --- a/src/main/java/com/javarush/bekk/repository/QuestionRepository.java +++ b/src/main/java/com/javarush/bekk/repository/QuestionRepository.java @@ -18,12 +18,13 @@ public class QuestionRepository extends BaseRepository { public QuestionRepository() { Answer answer = new Answer(1L, 1L, "Что-то", 2L); - + Question question = new Question(); map.put(1L, new Question(1L, "1. S — Single Responsibility Principle (Принцип единственной ответственности)")); map.put(2L, new Question(2L, "2. O — Open/Closed Principle (Принцип открытости/закрытости)")); map.put(3L, new Question(3L, "3. L — Liskov Substitution Principle (Принцип подстановки Барбары Лисков)")); map.put(4L, new Question(4L, "4. I — Interface Segregation Principle (Принцип разделения интерфейсов)")); map.put(5L, new Question(5L, "5. D — Dependency Inversion Principle (Принцип инверсии зависимостей)")); + question.getAnswers().add(answer); } From ad0e8ccae33f96f84406eec80d985ce47bf79f15 Mon Sep 17 00:00:00 2001 From: "Bekk I.V." <888_1@mail.ru> Date: Sat, 7 Feb 2026 17:08:18 +0500 Subject: [PATCH 16/20] Deleted classes --- .../java/com/javarush/bekk/cmd/EditUser.java | 52 ------------- .../java/com/javarush/bekk/cmd/ListUser.java | 26 ------- .../java/com/javarush/bekk/cmd/PlayGame.java | 11 ++- .../java/com/javarush/bekk/cmd/TestPage.java | 17 +++-- .../java/com/javarush/bekk/config/Config.java | 25 +------ .../bekk/controller/FrontController.java | 16 +++- .../java/com/javarush/bekk/entity/Game.java | 24 ------ .../java/com/javarush/bekk/entity/Role.java | 5 -- .../java/com/javarush/bekk/entity/User.java | 26 ------- .../bekk/repository/BaseRepository.java | 3 - .../bekk/repository/GameRepository.java | 9 --- .../bekk/repository/QuestionRepository.java | 7 +- .../javarush/bekk/repository/Repository.java | 4 - .../bekk/repository/UserRepository.java | 69 ------------------ .../javarush/bekk/service/UserService.java | 46 ------------ src/main/webapp/WEB-INF/edit-user.jsp | 73 ------------------- src/main/webapp/WEB-INF/head.jsp | 11 --- src/main/webapp/WEB-INF/list-user.jsp | 10 --- src/main/webapp/WEB-INF/play-game.jsp | 51 ------------- src/main/webapp/WEB-INF/start-page.jsp | 2 +- src/main/webapp/WEB-INF/test-page.jsp | 69 +++++++++++++++++- 21 files changed, 105 insertions(+), 451 deletions(-) delete mode 100644 src/main/java/com/javarush/bekk/cmd/EditUser.java delete mode 100644 src/main/java/com/javarush/bekk/cmd/ListUser.java delete mode 100644 src/main/java/com/javarush/bekk/entity/Game.java delete mode 100644 src/main/java/com/javarush/bekk/entity/Role.java delete mode 100644 src/main/java/com/javarush/bekk/entity/User.java delete mode 100644 src/main/java/com/javarush/bekk/repository/GameRepository.java delete mode 100644 src/main/java/com/javarush/bekk/repository/UserRepository.java delete mode 100644 src/main/java/com/javarush/bekk/service/UserService.java delete mode 100644 src/main/webapp/WEB-INF/edit-user.jsp delete mode 100644 src/main/webapp/WEB-INF/head.jsp delete mode 100644 src/main/webapp/WEB-INF/list-user.jsp delete mode 100644 src/main/webapp/WEB-INF/play-game.jsp diff --git a/src/main/java/com/javarush/bekk/cmd/EditUser.java b/src/main/java/com/javarush/bekk/cmd/EditUser.java deleted file mode 100644 index ccff46d..0000000 --- a/src/main/java/com/javarush/bekk/cmd/EditUser.java +++ /dev/null @@ -1,52 +0,0 @@ -package com.javarush.bekk.cmd; - -import com.javarush.bekk.entity.Role; -import com.javarush.bekk.entity.User; -import com.javarush.bekk.service.UserService; -import jakarta.servlet.http.HttpServletRequest; - -import java.util.Optional; - - -@SuppressWarnings("unused") -public class EditUser implements Command { - - private final UserService userService; - - public EditUser(UserService userService) { - this.userService = userService; - } - - - @Override - public String doGet(HttpServletRequest req) { - String stringId = req.getParameter("id"); - if (stringId != null) { - long id = Long.parseLong(stringId); - Optional optionalUser = userService.get(id); - if (optionalUser.isPresent()) { - User user = optionalUser.get(); - req.setAttribute("user", user); - } - } - return getView(); - } - - @Override - public String doPost(HttpServletRequest req) { - User user = User.builder() - .login(req.getParameter("login")) - .password(req.getParameter("password")) - .role(Role.valueOf(req.getParameter("role"))) - .build(); - if (req.getParameter("create") != null) { - userService.create(user); - } else if (req.getParameter("update") != null) { - user.setId(Long.parseLong(req.getParameter("id"))); - userService.update(user); - } - return getView() + "?id=" + user.getId(); - } - - -} \ No newline at end of file diff --git a/src/main/java/com/javarush/bekk/cmd/ListUser.java b/src/main/java/com/javarush/bekk/cmd/ListUser.java deleted file mode 100644 index 48a9b61..0000000 --- a/src/main/java/com/javarush/bekk/cmd/ListUser.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.javarush.bekk.cmd; - -import com.javarush.bekk.entity.User; -import com.javarush.bekk.service.UserService; -import jakarta.servlet.http.HttpServletRequest; - -import java.util.Collection; - -@SuppressWarnings("unused") -public class ListUser implements Command { - - private final UserService userService; - - public ListUser(UserService userService) { - this.userService = userService; - } - - @Override - public String doGet(HttpServletRequest request) { - Collection users = userService.getAll(); - request.setAttribute("users", users); - return getView(); - } - - -} \ No newline at end of file diff --git a/src/main/java/com/javarush/bekk/cmd/PlayGame.java b/src/main/java/com/javarush/bekk/cmd/PlayGame.java index 84bfcfc..a9c140d 100644 --- a/src/main/java/com/javarush/bekk/cmd/PlayGame.java +++ b/src/main/java/com/javarush/bekk/cmd/PlayGame.java @@ -1,4 +1,13 @@ package com.javarush.bekk.cmd; -public class PlayGame { +import jakarta.servlet.http.HttpServletRequest; + +public class PlayGame implements Command { + + @Override + public String doPost(HttpServletRequest request) { + request.getSession().setAttribute("playGame", this); + + return ""; + } } diff --git a/src/main/java/com/javarush/bekk/cmd/TestPage.java b/src/main/java/com/javarush/bekk/cmd/TestPage.java index bc9e9ad..641b9f7 100644 --- a/src/main/java/com/javarush/bekk/cmd/TestPage.java +++ b/src/main/java/com/javarush/bekk/cmd/TestPage.java @@ -2,19 +2,24 @@ import com.javarush.bekk.entity.Answer; import com.javarush.bekk.entity.Question; +import com.javarush.bekk.repository.QuestionRepository; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpSession; +import lombok.AllArgsConstructor; +import java.util.Collection; + +@AllArgsConstructor public class TestPage implements Command { + private final QuestionRepository questionRepository; - /*@Override - public String doPost(HttpServletRequest request) { - HttpSession currentSession = request.getSession(); - Answer answer = new Answer(); - Question question = new Question(); + @Override + public String doPost(HttpServletRequest request) { + Question question = questionRepository.get(1L); + question. return ""; - }*/ + } } diff --git a/src/main/java/com/javarush/bekk/config/Config.java b/src/main/java/com/javarush/bekk/config/Config.java index 14c416d..4f5c6e8 100644 --- a/src/main/java/com/javarush/bekk/config/Config.java +++ b/src/main/java/com/javarush/bekk/config/Config.java @@ -2,36 +2,13 @@ import com.javarush.bekk.entity.Answer; import com.javarush.bekk.entity.Question; -import com.javarush.bekk.entity.Role; -import com.javarush.bekk.entity.User; import com.javarush.bekk.repository.QuestionRepository; -import com.javarush.bekk.service.QuestionService; -import com.javarush.bekk.service.UserService; import lombok.AllArgsConstructor; @AllArgsConstructor public class Config { - private final UserService userService; -private final QuestionRepository questionRepository; - public void fillEmptyRepository() { - if (userService.get(1L).isEmpty()){ - User admin = buildUser("Carl", "admin", Role.ADMIN); - userService.create(admin); - User alisa = buildUser("Alisa", "qwerty", Role.USER); - userService.create(alisa); - User bob = buildUser("Bob", "123", Role.GUEST); - userService.create(bob); - } - } - - private static User buildUser(String name, String password, Role role) { - return User.builder() - .login(name) - .password(password) - .role(role) - .build(); - } + private final QuestionRepository questionRepository; public void fillRepository() { Question question1 = buildQuestion(1L, "S — Single Responsibility Principle (Принцип единственной ответственности)"); diff --git a/src/main/java/com/javarush/bekk/controller/FrontController.java b/src/main/java/com/javarush/bekk/controller/FrontController.java index 41ddb2b..99257b7 100644 --- a/src/main/java/com/javarush/bekk/controller/FrontController.java +++ b/src/main/java/com/javarush/bekk/controller/FrontController.java @@ -1,9 +1,10 @@ package com.javarush.bekk.controller; import com.javarush.bekk.cmd.Command; +import com.javarush.bekk.config.Config; import com.javarush.bekk.config.Winter; -import com.javarush.bekk.entity.Role; import jakarta.servlet.ServletConfig; +import jakarta.servlet.ServletContext; import jakarta.servlet.ServletException; import jakarta.servlet.annotation.WebServlet; import jakarta.servlet.http.HttpServlet; @@ -12,7 +13,7 @@ import java.io.IOException; -@WebServlet({"", "/home", "/list-user", "/edit-user", "/play-game", "/test-page"}) +@WebServlet({"", "/test-page"}) public class FrontController extends HttpServlet { private final HttpResolver httpResolver = Winter.find(HttpResolver.class); @@ -27,7 +28,11 @@ protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws Se @Override public void init(ServletConfig config) { - config.getServletContext().setAttribute("roles", Role.values()); + Config config1 = Winter.find(Config.class); + config1.fillRepository(); + + ServletContext servletContext = config.getServletContext(); + servletContext.setAttribute(Config.class.getName(), config1); } private static String getJsp(String view) { @@ -40,4 +45,9 @@ protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws S String redirect = command.doPost(req); resp.sendRedirect(redirect); } + + /*@Override + public void init(ServletConfig config) { + config.getServletContext().setAttribute("roles", Role.values()); + }*/ } diff --git a/src/main/java/com/javarush/bekk/entity/Game.java b/src/main/java/com/javarush/bekk/entity/Game.java deleted file mode 100644 index 0c085c4..0000000 --- a/src/main/java/com/javarush/bekk/entity/Game.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.javarush.bekk.entity; - -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; - -@Data -@NoArgsConstructor -@AllArgsConstructor -@Builder -public class Game implements AbstractEntity { - - private Long id; - - private Long questId; - - private Long userId; - - private Long currentQuestionId; - - private GameState gameState; - -} diff --git a/src/main/java/com/javarush/bekk/entity/Role.java b/src/main/java/com/javarush/bekk/entity/Role.java deleted file mode 100644 index eaa0c61..0000000 --- a/src/main/java/com/javarush/bekk/entity/Role.java +++ /dev/null @@ -1,5 +0,0 @@ -package com.javarush.bekk.entity; - -public enum Role { - USER, ADMIN, GUEST -} diff --git a/src/main/java/com/javarush/bekk/entity/User.java b/src/main/java/com/javarush/bekk/entity/User.java deleted file mode 100644 index d5824ce..0000000 --- a/src/main/java/com/javarush/bekk/entity/User.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.javarush.bekk.entity; - -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; - -@Data -@NoArgsConstructor -@AllArgsConstructor -@Builder -public class User implements AbstractEntity { - - private Long id; - - private String login; - - private String password; - - private Role role; - - public String getImage() { //TODO move to DTO - return "image-" + id; - } - -} diff --git a/src/main/java/com/javarush/bekk/repository/BaseRepository.java b/src/main/java/com/javarush/bekk/repository/BaseRepository.java index c917f21..0c59ffb 100644 --- a/src/main/java/com/javarush/bekk/repository/BaseRepository.java +++ b/src/main/java/com/javarush/bekk/repository/BaseRepository.java @@ -1,12 +1,9 @@ package com.javarush.bekk.repository; import com.javarush.bekk.entity.AbstractEntity; -import com.javarush.bekk.entity.User; import java.util.Collection; -import java.util.List; import java.util.Map; -import java.util.Optional; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.atomic.AtomicLong; diff --git a/src/main/java/com/javarush/bekk/repository/GameRepository.java b/src/main/java/com/javarush/bekk/repository/GameRepository.java deleted file mode 100644 index 1982dad..0000000 --- a/src/main/java/com/javarush/bekk/repository/GameRepository.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.javarush.bekk.repository; - -import com.javarush.bekk.entity.Game; - -import java.util.stream.Stream; - -public class GameRepository extends BaseRepository { - -} diff --git a/src/main/java/com/javarush/bekk/repository/QuestionRepository.java b/src/main/java/com/javarush/bekk/repository/QuestionRepository.java index 223efcb..a355473 100644 --- a/src/main/java/com/javarush/bekk/repository/QuestionRepository.java +++ b/src/main/java/com/javarush/bekk/repository/QuestionRepository.java @@ -2,13 +2,10 @@ import com.javarush.bekk.entity.Answer; import com.javarush.bekk.entity.Question; -import com.javarush.bekk.entity.User; -import java.util.Collection; import java.util.HashMap; import java.util.Map; import java.util.concurrent.atomic.AtomicLong; -import java.util.stream.Stream; public class QuestionRepository extends BaseRepository { @@ -17,14 +14,14 @@ public class QuestionRepository extends BaseRepository { public static final AtomicLong id = new AtomicLong(System.currentTimeMillis()); public QuestionRepository() { - Answer answer = new Answer(1L, 1L, "Что-то", 2L); + /* Answer answer = new Answer(1L, 1L, "Что-то", 2L); Question question = new Question(); map.put(1L, new Question(1L, "1. S — Single Responsibility Principle (Принцип единственной ответственности)")); map.put(2L, new Question(2L, "2. O — Open/Closed Principle (Принцип открытости/закрытости)")); map.put(3L, new Question(3L, "3. L — Liskov Substitution Principle (Принцип подстановки Барбары Лисков)")); map.put(4L, new Question(4L, "4. I — Interface Segregation Principle (Принцип разделения интерфейсов)")); map.put(5L, new Question(5L, "5. D — Dependency Inversion Principle (Принцип инверсии зависимостей)")); - question.getAnswers().add(answer); + question.getAnswers().add(answer);*/ } diff --git a/src/main/java/com/javarush/bekk/repository/Repository.java b/src/main/java/com/javarush/bekk/repository/Repository.java index 55622bf..67ade6e 100644 --- a/src/main/java/com/javarush/bekk/repository/Repository.java +++ b/src/main/java/com/javarush/bekk/repository/Repository.java @@ -1,10 +1,6 @@ package com.javarush.bekk.repository; -import com.javarush.bekk.entity.User; - import java.util.Collection; -import java.util.Optional; -import java.util.stream.Stream; public interface Repository { diff --git a/src/main/java/com/javarush/bekk/repository/UserRepository.java b/src/main/java/com/javarush/bekk/repository/UserRepository.java deleted file mode 100644 index b50ef87..0000000 --- a/src/main/java/com/javarush/bekk/repository/UserRepository.java +++ /dev/null @@ -1,69 +0,0 @@ -package com.javarush.bekk.repository; - -import com.javarush.bekk.entity.Role; -import com.javarush.bekk.entity.User; - -import java.util.Collection; -import java.util.HashMap; -import java.util.Map; -import java.util.Optional; -import java.util.concurrent.atomic.AtomicLong; -import java.util.stream.Stream; - -public class UserRepository extends BaseRepository { - - private final Map map = new HashMap<>(); - - public static final AtomicLong id = new AtomicLong(System.currentTimeMillis()); - - public UserRepository() { - map.put(1L, new User(1L, "Alisa", "qwerty", Role.USER)); - map.put(2L, new User(2L, "Bob", "", Role.GUEST)); - map.put(3L, new User(3L, "Carl", "admin", Role.ADMIN)); - map.put(4L, new User(4L, "Khmelov", "admin", Role.ADMIN)); - } - - /* @Override - public Stream find(User pattern) { - return map.values() - .stream() - .filter(user -> nullOrEquals(pattern.getId(), user.getId())) - .filter(user -> nullOrEquals(pattern.getLogin(), user.getLogin())) - .filter(user -> nullOrEquals(pattern.getPassword(), user.getPassword())) - .filter(user -> nullOrEquals(pattern.getRole(), user.getRole())); - }*/ - - - - - - - - - - /*@Override - public Collection getAll() { - return map.values(); - } - - @Override - public Optional get(long id) { - return Optional.ofNullable(map.get(id)); - } - - @Override - public void create(User entity) { - entity.setId(id.incrementAndGet()); - update(entity); - } - - @Override - public void update(User entity) { - map.put(entity.getId(), entity); - } - - @Override - public void delete(User entity) { - map.remove(entity.getId()); - }*/ -} diff --git a/src/main/java/com/javarush/bekk/service/UserService.java b/src/main/java/com/javarush/bekk/service/UserService.java deleted file mode 100644 index 4805c59..0000000 --- a/src/main/java/com/javarush/bekk/service/UserService.java +++ /dev/null @@ -1,46 +0,0 @@ -package com.javarush.bekk.service; - -import com.javarush.bekk.entity.User; -import com.javarush.bekk.repository.UserRepository; - -import java.util.Collection; -import java.util.Optional; - -public class UserService { - - private final UserRepository userRepository; - - public UserService(UserRepository userRepository) { - this.userRepository = userRepository; - } - - public void create(User user) { - userRepository.create(user); - } - - public void update(User user) { - userRepository.update(user); - } - - public void delete(User user) { - userRepository.delete(user); - } - - public Collection getAll() { - return userRepository.getAll(); - } - - public Optional get(long id) { - return Optional.ofNullable(userRepository.get(id)); - } - - /*public Optional get(String login, String password) { - User patternUser = User. - builder() - .login(login) - .password(password) - .build(); - return userRepository.find(patternUser).findAny(); - }*/ - -} diff --git a/src/main/webapp/WEB-INF/edit-user.jsp b/src/main/webapp/WEB-INF/edit-user.jsp deleted file mode 100644 index a0d0f12..0000000 --- a/src/main/webapp/WEB-INF/edit-user.jsp +++ /dev/null @@ -1,73 +0,0 @@ -<%@ page contentType="text/html;charset=UTF-8" language="java" %> -<%@include file="parts/header.jsp" %> - -
-
-
- - - Edit user: - - -
- -
- - min 3 symbols -
-
- - -
- -
- - min 8 symb -
-
- - - -
- -
- -
-
- - -
- -
- - - - - - - -
-
- -
-
-
- - diff --git a/src/main/webapp/WEB-INF/head.jsp b/src/main/webapp/WEB-INF/head.jsp deleted file mode 100644 index 2f7b9f2..0000000 --- a/src/main/webapp/WEB-INF/head.jsp +++ /dev/null @@ -1,11 +0,0 @@ -<%@ page contentType="text/html;charset=UTF-8" language="java" %> -<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> - - - Title - - - \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/list-user.jsp b/src/main/webapp/WEB-INF/list-user.jsp deleted file mode 100644 index 3b2ca15..0000000 --- a/src/main/webapp/WEB-INF/list-user.jsp +++ /dev/null @@ -1,10 +0,0 @@ -<%@ page contentType="text/html;charset=UTF-8" language="java" %> -<%@include file="parts/header.jsp" %> - - - <%--user-это элемент массива, users-массив --%> - ${user.login} - - - - diff --git a/src/main/webapp/WEB-INF/play-game.jsp b/src/main/webapp/WEB-INF/play-game.jsp deleted file mode 100644 index 2e19e9f..0000000 --- a/src/main/webapp/WEB-INF/play-game.jsp +++ /dev/null @@ -1,51 +0,0 @@ -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> -<%@ page contentType="text/html;charset=UTF-8" %> - -
- - - - - -
- -
- ${question.image} -
-

- -

${question.text}

-
-
    - -
    - - -
    -
    -
- -
- -
- - - - - - - - -
-
-
-
-
- - diff --git a/src/main/webapp/WEB-INF/start-page.jsp b/src/main/webapp/WEB-INF/start-page.jsp index 8957237..f1f3e31 100644 --- a/src/main/webapp/WEB-INF/start-page.jsp +++ b/src/main/webapp/WEB-INF/start-page.jsp @@ -5,7 +5,7 @@
-Старт тестирования по SOLID +Старт тестирования по SOLID <%--List Users--%> <%--${user.login}--%> diff --git a/src/main/webapp/WEB-INF/test-page.jsp b/src/main/webapp/WEB-INF/test-page.jsp index 530abb7..452b3b6 100644 --- a/src/main/webapp/WEB-INF/test-page.jsp +++ b/src/main/webapp/WEB-INF/test-page.jsp @@ -6,13 +6,26 @@

${sessionScope.question.text}

+
    + +
    + + +
    +
    +
+ + <%--

${sessionScope.question.text}

-
+
-

+

--%>
@@ -40,3 +53,55 @@ --%> + +<%-------------------Было в play-game----------------------------------%> +<%-- +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ page contentType="text/html;charset=UTF-8" %> + +
+ + + + + +
+ +
+ ${question.image} +
+

+ +

${question.text}

+
+
    + +
    + + +
    +
    +
+ +
+ +
+ + + + + + + + +
+
+
+
+
--%> From 0668a1c4461552ba06ea0cbd6a5a47740a763d13 Mon Sep 17 00:00:00 2001 From: "Bekk I.V." <888_1@mail.ru> Date: Sat, 7 Feb 2026 22:57:56 +0500 Subject: [PATCH 17/20] Add classes --- .../java/com/javarush/bekk/cmd/StartPage.java | 22 ++++++++----------- .../java/com/javarush/bekk/cmd/TestPage.java | 8 ++++--- .../java/com/javarush/bekk/config/Config.java | 4 ++-- 3 files changed, 16 insertions(+), 18 deletions(-) diff --git a/src/main/java/com/javarush/bekk/cmd/StartPage.java b/src/main/java/com/javarush/bekk/cmd/StartPage.java index 7a20b56..06a611d 100644 --- a/src/main/java/com/javarush/bekk/cmd/StartPage.java +++ b/src/main/java/com/javarush/bekk/cmd/StartPage.java @@ -2,27 +2,23 @@ import com.javarush.bekk.entity.Answer; import com.javarush.bekk.entity.Question; +import com.javarush.bekk.repository.QuestionRepository; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpSession; +import lombok.AllArgsConstructor; + +import java.util.Collection; @SuppressWarnings("unused") +@AllArgsConstructor public class StartPage implements Command { + + private final QuestionRepository questionRepository; + @Override public String doGet(HttpServletRequest request) { HttpSession session = request.getSession(); - Question question = new Question(); - question.setId(1L); - question.setText("Single Responsibility Principle (Принцип единственной ответственности)"); - Answer answer = new Answer(); - answer.setId(1L); - answer.setText("Каждый класс должен иметь только одну причину для изменения, " + - "то есть выполнять только одну задачу или отвечать за одну ответственность." + - " Это повышает сплочённость (cohesion) и упрощает поддержку кода"); - Answer answer1 = new Answer(); - answer1.setId(2L); - answer1.setText("Каждый класс должен иметь множество причин для изменения, то есть выполнять множество задач"); - session.setAttribute("answer", answer); - session.setAttribute("answer1", answer1); + Question question = questionRepository.get(1L); session.setAttribute("question", question); return getView(); } diff --git a/src/main/java/com/javarush/bekk/cmd/TestPage.java b/src/main/java/com/javarush/bekk/cmd/TestPage.java index 641b9f7..6028fa1 100644 --- a/src/main/java/com/javarush/bekk/cmd/TestPage.java +++ b/src/main/java/com/javarush/bekk/cmd/TestPage.java @@ -18,8 +18,10 @@ public class TestPage implements Command { @Override public String doPost(HttpServletRequest request) { - Question question = questionRepository.get(1L); - question. - return ""; + HttpSession session = request.getSession(); + //Object answer = session.getAttribute("answer"); + Question question = questionRepository.get(2L); + session.setAttribute("question", question); + return getView(); } } diff --git a/src/main/java/com/javarush/bekk/config/Config.java b/src/main/java/com/javarush/bekk/config/Config.java index 4f5c6e8..38cd564 100644 --- a/src/main/java/com/javarush/bekk/config/Config.java +++ b/src/main/java/com/javarush/bekk/config/Config.java @@ -15,8 +15,8 @@ public void fillRepository() { question1.getAnswers().add(new Answer(1L, question1.getId(), "Каждый класс должен иметь только одну причину для изменения, " + "то есть выполнять только одну задачу или отвечать за одну ответственность. Это повышает сплочённость (cohesion) и упрощает поддержку кода", question1.getId() + 1)); - question1.getAnswers().add(new Answer(2L, question1.getId(), "Каждый класс должен иметь только одну причину для изменения, " + - "то есть выполнять только одну задачу или отвечать за одну ответственность. Это повышает сплочённость (cohesion) и упрощает поддержку кода", + question1.getAnswers().add(new Answer(2L, question1.getId(), "Каждый класс должен иметь много причин для изменения, " + + "то есть выполнять много задач или отвечать за несколько ответственностей. Это повышает сплочённость (cohesion) и упрощает поддержку кода", question1.getId() + 1)); questionRepository.create(question1); From 8373be86797e1ed36343a501b5ff7f08905a3e44 Mon Sep 17 00:00:00 2001 From: "Bekk I.V." <888_1@mail.ru> Date: Sun, 8 Feb 2026 12:26:35 +0500 Subject: [PATCH 18/20] Add Tests --- .../java/com/javarush/bekk/cmd/EndPage.java | 4 + .../java/com/javarush/bekk/cmd/PlayGame.java | 13 --- .../java/com/javarush/bekk/cmd/TestPage.java | 12 +- .../java/com/javarush/bekk/cmd/TestPage2.java | 27 +++++ .../java/com/javarush/bekk/cmd/TestPage3.java | 29 +++++ .../java/com/javarush/bekk/cmd/TestPage4.java | 28 +++++ .../java/com/javarush/bekk/cmd/TestPage5.java | 29 +++++ .../java/com/javarush/bekk/cmd/WinPage.java | 4 + .../bekk/controller/FrontController.java | 2 +- src/main/webapp/WEB-INF/end-page.jsp | 8 +- src/main/webapp/WEB-INF/test-page.jsp | 2 +- src/main/webapp/WEB-INF/test-page2.jsp | 107 ++++++++++++++++++ src/main/webapp/WEB-INF/test-page3.jsp | 107 ++++++++++++++++++ src/main/webapp/WEB-INF/test-page4.jsp | 107 ++++++++++++++++++ src/main/webapp/WEB-INF/test-page5.jsp | 107 ++++++++++++++++++ src/main/webapp/WEB-INF/win-page.jsp | 8 ++ 16 files changed, 568 insertions(+), 26 deletions(-) create mode 100644 src/main/java/com/javarush/bekk/cmd/EndPage.java delete mode 100644 src/main/java/com/javarush/bekk/cmd/PlayGame.java create mode 100644 src/main/java/com/javarush/bekk/cmd/TestPage2.java create mode 100644 src/main/java/com/javarush/bekk/cmd/TestPage3.java create mode 100644 src/main/java/com/javarush/bekk/cmd/TestPage4.java create mode 100644 src/main/java/com/javarush/bekk/cmd/TestPage5.java create mode 100644 src/main/java/com/javarush/bekk/cmd/WinPage.java create mode 100644 src/main/webapp/WEB-INF/test-page2.jsp create mode 100644 src/main/webapp/WEB-INF/test-page3.jsp create mode 100644 src/main/webapp/WEB-INF/test-page4.jsp create mode 100644 src/main/webapp/WEB-INF/test-page5.jsp create mode 100644 src/main/webapp/WEB-INF/win-page.jsp diff --git a/src/main/java/com/javarush/bekk/cmd/EndPage.java b/src/main/java/com/javarush/bekk/cmd/EndPage.java new file mode 100644 index 0000000..56f3345 --- /dev/null +++ b/src/main/java/com/javarush/bekk/cmd/EndPage.java @@ -0,0 +1,4 @@ +package com.javarush.bekk.cmd; + +public class EndPage implements Command { +} diff --git a/src/main/java/com/javarush/bekk/cmd/PlayGame.java b/src/main/java/com/javarush/bekk/cmd/PlayGame.java deleted file mode 100644 index a9c140d..0000000 --- a/src/main/java/com/javarush/bekk/cmd/PlayGame.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.javarush.bekk.cmd; - -import jakarta.servlet.http.HttpServletRequest; - -public class PlayGame implements Command { - - @Override - public String doPost(HttpServletRequest request) { - request.getSession().setAttribute("playGame", this); - - return ""; - } -} diff --git a/src/main/java/com/javarush/bekk/cmd/TestPage.java b/src/main/java/com/javarush/bekk/cmd/TestPage.java index 6028fa1..591b855 100644 --- a/src/main/java/com/javarush/bekk/cmd/TestPage.java +++ b/src/main/java/com/javarush/bekk/cmd/TestPage.java @@ -19,9 +19,13 @@ public class TestPage implements Command { @Override public String doPost(HttpServletRequest request) { HttpSession session = request.getSession(); - //Object answer = session.getAttribute("answer"); - Question question = questionRepository.get(2L); - session.setAttribute("question", question); - return getView(); + int answer = Integer.parseInt(request.getParameter("answer")); + if (answer == 1){ + Question question = questionRepository.get(1L); + session.setAttribute("question", question); + return getView(); + } else { + return "end-page"; + } } } diff --git a/src/main/java/com/javarush/bekk/cmd/TestPage2.java b/src/main/java/com/javarush/bekk/cmd/TestPage2.java new file mode 100644 index 0000000..b8d8a64 --- /dev/null +++ b/src/main/java/com/javarush/bekk/cmd/TestPage2.java @@ -0,0 +1,27 @@ +package com.javarush.bekk.cmd; + +import com.javarush.bekk.entity.Question; +import com.javarush.bekk.repository.QuestionRepository; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpSession; +import lombok.AllArgsConstructor; + +@AllArgsConstructor +public class TestPage2 implements Command { + private final QuestionRepository questionRepository; + + + + @Override + public String doPost(HttpServletRequest request) { + HttpSession session = request.getSession(); + int answer = Integer.parseInt(request.getParameter("answer")); + if (answer == 1){ + Question question = questionRepository.get(2L); + session.setAttribute("question", question); + return getView(); + } else { + return "end-page"; + } + } +} diff --git a/src/main/java/com/javarush/bekk/cmd/TestPage3.java b/src/main/java/com/javarush/bekk/cmd/TestPage3.java new file mode 100644 index 0000000..0b56497 --- /dev/null +++ b/src/main/java/com/javarush/bekk/cmd/TestPage3.java @@ -0,0 +1,29 @@ +package com.javarush.bekk.cmd; + +import com.javarush.bekk.entity.Question; +import com.javarush.bekk.repository.QuestionRepository; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpSession; +import lombok.AllArgsConstructor; + + + +@AllArgsConstructor +public class TestPage3 implements Command { + private final QuestionRepository questionRepository; + + + + @Override + public String doPost(HttpServletRequest request) { + HttpSession session = request.getSession(); + int answer = Integer.parseInt(request.getParameter("answer")); + if (answer == 1){ + Question question = questionRepository.get(3L); + session.setAttribute("question", question); + return getView(); + } else { + return "end-page"; + } + } +} diff --git a/src/main/java/com/javarush/bekk/cmd/TestPage4.java b/src/main/java/com/javarush/bekk/cmd/TestPage4.java new file mode 100644 index 0000000..c8202ef --- /dev/null +++ b/src/main/java/com/javarush/bekk/cmd/TestPage4.java @@ -0,0 +1,28 @@ +package com.javarush.bekk.cmd; + +import com.javarush.bekk.entity.Question; +import com.javarush.bekk.repository.QuestionRepository; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpSession; +import lombok.AllArgsConstructor; + +@AllArgsConstructor +public class TestPage4 implements Command { + + private final QuestionRepository questionRepository; + + + + @Override + public String doPost(HttpServletRequest request) { + HttpSession session = request.getSession(); + int answer = Integer.parseInt(request.getParameter("answer")); + if (answer == 1){ + Question question = questionRepository.get(4L); + session.setAttribute("question", question); + return getView(); + } else { + return "end-page"; + } + } +} diff --git a/src/main/java/com/javarush/bekk/cmd/TestPage5.java b/src/main/java/com/javarush/bekk/cmd/TestPage5.java new file mode 100644 index 0000000..f129de0 --- /dev/null +++ b/src/main/java/com/javarush/bekk/cmd/TestPage5.java @@ -0,0 +1,29 @@ +package com.javarush.bekk.cmd; + + +import com.javarush.bekk.entity.Question; +import com.javarush.bekk.repository.QuestionRepository; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpSession; +import lombok.AllArgsConstructor; + +@AllArgsConstructor +public class TestPage5 implements Command { + + private final QuestionRepository questionRepository; + + + + @Override + public String doPost(HttpServletRequest request) { + HttpSession session = request.getSession(); + int answer = Integer.parseInt(request.getParameter("answer")); + if (answer == 1){ + Question question = questionRepository.get(5L); + session.setAttribute("question", question); + return getView(); + } else { + return "end-page"; + } + } +} diff --git a/src/main/java/com/javarush/bekk/cmd/WinPage.java b/src/main/java/com/javarush/bekk/cmd/WinPage.java new file mode 100644 index 0000000..d135285 --- /dev/null +++ b/src/main/java/com/javarush/bekk/cmd/WinPage.java @@ -0,0 +1,4 @@ +package com.javarush.bekk.cmd; + +public class WinPage implements Command { +} diff --git a/src/main/java/com/javarush/bekk/controller/FrontController.java b/src/main/java/com/javarush/bekk/controller/FrontController.java index 99257b7..dcc05e6 100644 --- a/src/main/java/com/javarush/bekk/controller/FrontController.java +++ b/src/main/java/com/javarush/bekk/controller/FrontController.java @@ -13,7 +13,7 @@ import java.io.IOException; -@WebServlet({"", "/test-page"}) +@WebServlet({"", "/test-page", "/end-page", "/test-page2", "/test-page3", "/test-page4", "/test-page5", "/win-page", "/start-page"}) public class FrontController extends HttpServlet { private final HttpResolver httpResolver = Winter.find(HttpResolver.class); diff --git a/src/main/webapp/WEB-INF/end-page.jsp b/src/main/webapp/WEB-INF/end-page.jsp index bd08c39..ad094be 100644 --- a/src/main/webapp/WEB-INF/end-page.jsp +++ b/src/main/webapp/WEB-INF/end-page.jsp @@ -3,12 +3,6 @@ <%--

<%= "Тестирование по моим заметкам!" %>--%>

-
-Ответ не правильный. Тест окончен. -<%--List Users--%> -<%--${user.login}--%> -
- -
+Ответ не правильный. Тест окончен. Начать заново. diff --git a/src/main/webapp/WEB-INF/test-page.jsp b/src/main/webapp/WEB-INF/test-page.jsp index 452b3b6..025e07f 100644 --- a/src/main/webapp/WEB-INF/test-page.jsp +++ b/src/main/webapp/WEB-INF/test-page.jsp @@ -4,7 +4,7 @@

<%= "Тестирование по по SOLID" %>

-
+

${sessionScope.question.text}

    diff --git a/src/main/webapp/WEB-INF/test-page2.jsp b/src/main/webapp/WEB-INF/test-page2.jsp new file mode 100644 index 0000000..db8c816 --- /dev/null +++ b/src/main/webapp/WEB-INF/test-page2.jsp @@ -0,0 +1,107 @@ +<%@ page contentType="text/html;charset=UTF-8" language="java" %> +<%@include file="parts/header.jsp" %> + +

    <%= "Тестирование по по SOLID" %> +

    + + +

    ${sessionScope.question.text}

    +
      + +
      + + +
      +
      +
    + + <%--

    ${sessionScope.question.text}

    + + + +
    + + +

    --%> + + + + +
    + + +<%--user-это элемент массива, users-массив --%> +<%-- + ${user.login} +--%> + + + + +<%-- +
    +

    Какой вариант вы выбираете?

    + + +
    + + +

    + + +
    --%> + +<%-------------------Было в play-game----------------------------------%> +<%-- +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ page contentType="text/html;charset=UTF-8" %> + +
    + + + + + +
    + +
    + ${question.image} +
    +

    + +

    ${question.text}

    +
    +
      + +
      + + +
      +
      +
    + +
    + +
    + + + + + + + + +
    +
    +
    +
    +
    --%> diff --git a/src/main/webapp/WEB-INF/test-page3.jsp b/src/main/webapp/WEB-INF/test-page3.jsp new file mode 100644 index 0000000..46e4dfd --- /dev/null +++ b/src/main/webapp/WEB-INF/test-page3.jsp @@ -0,0 +1,107 @@ +<%@ page contentType="text/html;charset=UTF-8" language="java" %> +<%@include file="parts/header.jsp" %> + +

    <%= "Тестирование по по SOLID" %> +

    + +
    +

    ${sessionScope.question.text}

    +
      + +
      + + +
      +
      +
    + + <%--

    ${sessionScope.question.text}

    + + + +
    + + +

    --%> + + +
    + +
    + + +<%--user-это элемент массива, users-массив --%> +<%-- + ${user.login} +--%> + + + + +<%-- +
    +

    Какой вариант вы выбираете?

    + + +
    + + +

    + + +
    --%> + +<%-------------------Было в play-game----------------------------------%> +<%-- +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ page contentType="text/html;charset=UTF-8" %> + +
    + + + + + +
    + +
    + ${question.image} +
    +

    + +

    ${question.text}

    +
    +
      + +
      + + +
      +
      +
    + +
    + +
    + + + + + + + + +
    +
    +
    +
    +
    --%> diff --git a/src/main/webapp/WEB-INF/test-page4.jsp b/src/main/webapp/WEB-INF/test-page4.jsp new file mode 100644 index 0000000..d6060f2 --- /dev/null +++ b/src/main/webapp/WEB-INF/test-page4.jsp @@ -0,0 +1,107 @@ +<%@ page contentType="text/html;charset=UTF-8" language="java" %> +<%@include file="parts/header.jsp" %> + +

    <%= "Тестирование по по SOLID" %> +

    + +
    +

    ${sessionScope.question.text}

    +
      + +
      + + +
      +
      +
    + + <%--

    ${sessionScope.question.text}

    + + + +
    + + +

    --%> + + +
    + +
    + + +<%--user-это элемент массива, users-массив --%> +<%-- + ${user.login} +--%> + + + + +<%-- +
    +

    Какой вариант вы выбираете?

    + + +
    + + +

    + + +
    --%> + +<%-------------------Было в play-game----------------------------------%> +<%-- +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ page contentType="text/html;charset=UTF-8" %> + +
    + + + + + +
    + +
    + ${question.image} +
    +

    + +

    ${question.text}

    +
    +
      + +
      + + +
      +
      +
    + +
    + +
    + + + + + + + + +
    +
    +
    +
    +
    --%> diff --git a/src/main/webapp/WEB-INF/test-page5.jsp b/src/main/webapp/WEB-INF/test-page5.jsp new file mode 100644 index 0000000..f4b63ec --- /dev/null +++ b/src/main/webapp/WEB-INF/test-page5.jsp @@ -0,0 +1,107 @@ +<%@ page contentType="text/html;charset=UTF-8" language="java" %> +<%@include file="parts/header.jsp" %> + +

    <%= "Тестирование по по SOLID" %> +

    + +
    +

    ${sessionScope.question.text}

    +
      + +
      + + +
      +
      +
    + + <%--

    ${sessionScope.question.text}

    + + + +
    + + +

    --%> + + +
    + +
    + + +<%--user-это элемент массива, users-массив --%> +<%-- + ${user.login} +--%> + + + + +<%-- +
    +

    Какой вариант вы выбираете?

    + + +
    + + +

    + + +
    --%> + +<%-------------------Было в play-game----------------------------------%> +<%-- +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ page contentType="text/html;charset=UTF-8" %> + +
    + + + + + +
    + +
    + ${question.image} +
    +

    + +

    ${question.text}

    +
    +
      + +
      + + +
      +
      +
    + +
    + +
    + + + + + + + + +
    +
    +
    +
    +
    --%> diff --git a/src/main/webapp/WEB-INF/win-page.jsp b/src/main/webapp/WEB-INF/win-page.jsp new file mode 100644 index 0000000..6f2569a --- /dev/null +++ b/src/main/webapp/WEB-INF/win-page.jsp @@ -0,0 +1,8 @@ +<%@ page contentType="text/html;charset=UTF-8" language="java" %> +<%@include file="parts/header.jsp" %> + +<%--

    <%= "Тестирование по моим заметкам!" %>--%> +

    +
    +Тест успешно пройден. Начать заново. + From ce0357ec2e10efa0bef875af97d11788a59cae54 Mon Sep 17 00:00:00 2001 From: "Bekk I.V." <888_1@mail.ru> Date: Mon, 9 Feb 2026 18:59:56 +0500 Subject: [PATCH 19/20] Add Service --- .../bekk/repository/QuestionRepository.java | 26 ----------------- .../javarush/bekk/service/AnswerService.java | 2 +- .../bekk/service/QuestionService.java | 4 +++ src/main/java/com/javarush/bekk/util/Key.java | 28 ------------------- 4 files changed, 5 insertions(+), 55 deletions(-) delete mode 100644 src/main/java/com/javarush/bekk/util/Key.java diff --git a/src/main/java/com/javarush/bekk/repository/QuestionRepository.java b/src/main/java/com/javarush/bekk/repository/QuestionRepository.java index a355473..e4faff2 100644 --- a/src/main/java/com/javarush/bekk/repository/QuestionRepository.java +++ b/src/main/java/com/javarush/bekk/repository/QuestionRepository.java @@ -13,30 +13,4 @@ public class QuestionRepository extends BaseRepository { public static final AtomicLong id = new AtomicLong(System.currentTimeMillis()); - public QuestionRepository() { - /* Answer answer = new Answer(1L, 1L, "Что-то", 2L); - Question question = new Question(); - map.put(1L, new Question(1L, "1. S — Single Responsibility Principle (Принцип единственной ответственности)")); - map.put(2L, new Question(2L, "2. O — Open/Closed Principle (Принцип открытости/закрытости)")); - map.put(3L, new Question(3L, "3. L — Liskov Substitution Principle (Принцип подстановки Барбары Лисков)")); - map.put(4L, new Question(4L, "4. I — Interface Segregation Principle (Принцип разделения интерфейсов)")); - map.put(5L, new Question(5L, "5. D — Dependency Inversion Principle (Принцип инверсии зависимостей)")); - question.getAnswers().add(answer);*/ - } - - - - - - - - - - /*@Override - public Stream find(Question pattern) { - return map.values() - .stream() - .filter(question -> nullOrEquals(pattern.getId(), question.getId())) - .filter(question -> nullOrEquals(pattern.getText(), question.getText())); - }*/ } diff --git a/src/main/java/com/javarush/bekk/service/AnswerService.java b/src/main/java/com/javarush/bekk/service/AnswerService.java index 3bf31c2..303f11b 100644 --- a/src/main/java/com/javarush/bekk/service/AnswerService.java +++ b/src/main/java/com/javarush/bekk/service/AnswerService.java @@ -10,4 +10,4 @@ public AnswerService(QuestionRepository questionRepository) { this.questionRepository = questionRepository; } -} + } diff --git a/src/main/java/com/javarush/bekk/service/QuestionService.java b/src/main/java/com/javarush/bekk/service/QuestionService.java index a604f1a..445635e 100644 --- a/src/main/java/com/javarush/bekk/service/QuestionService.java +++ b/src/main/java/com/javarush/bekk/service/QuestionService.java @@ -15,4 +15,8 @@ public void createQuestion(Question question) { questionRepository.create(question); } + public void getQuestion(Long id) { + questionRepository.get(id); + } + } diff --git a/src/main/java/com/javarush/bekk/util/Key.java b/src/main/java/com/javarush/bekk/util/Key.java deleted file mode 100644 index be9bc6f..0000000 --- a/src/main/java/com/javarush/bekk/util/Key.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.javarush.bekk.util; - -@SuppressWarnings("unused") -public class Key { - public static final String INDEX = "index"; - - public static final String ID = "id"; - public static final String SIGNUP = "signup"; - public static final String LOGIN = "login"; - public static final String PASSWORD = "password"; - public static final String ROLE = "role"; - public static final String ROLES = "roles"; - public static final String USERS = "users"; - public static final String USER = "user"; - - public static final String CREATE_QUEST = "create-quest"; - public static final String QUESTS = "quests"; - public static final String QUEST_ID = "questId"; - public static final String QUEST = "quest"; - public static final String QUESTION = "question"; - - public static final String NAME = "name"; - public static final String TEXT = "text"; - - public static final String ERROR_MESSAGE = "errorMessage"; - public static final String GAME = "game"; - public static final String ANSWER = "answer"; -} From e358fea0d809b94ab1fe037731869a802e40cf2a Mon Sep 17 00:00:00 2001 From: "Bekk I.V." <888_1@mail.ru> Date: Sun, 22 Feb 2026 16:29:28 +0500 Subject: [PATCH 20/20] Deleted servlets --- .../java/com/javarush/bekk/cmd/TestPage.java | 14 ++- .../java/com/javarush/bekk/cmd/TestPage2.java | 27 ----- .../java/com/javarush/bekk/cmd/TestPage3.java | 29 ----- .../java/com/javarush/bekk/cmd/TestPage4.java | 28 ----- .../java/com/javarush/bekk/cmd/TestPage5.java | 29 ----- .../java/com/javarush/bekk/config/Config.java | 10 +- .../bekk/controller/FrontController.java | 2 +- .../java/com/javarush/bekk/util/Constant.java | 6 + src/main/webapp/WEB-INF/test-page.jsp | 85 +------------- src/main/webapp/WEB-INF/test-page2.jsp | 107 ------------------ src/main/webapp/WEB-INF/test-page3.jsp | 107 ------------------ src/main/webapp/WEB-INF/test-page4.jsp | 107 ------------------ src/main/webapp/WEB-INF/test-page5.jsp | 107 ------------------ 13 files changed, 24 insertions(+), 634 deletions(-) delete mode 100644 src/main/java/com/javarush/bekk/cmd/TestPage2.java delete mode 100644 src/main/java/com/javarush/bekk/cmd/TestPage3.java delete mode 100644 src/main/java/com/javarush/bekk/cmd/TestPage4.java delete mode 100644 src/main/java/com/javarush/bekk/cmd/TestPage5.java create mode 100644 src/main/java/com/javarush/bekk/util/Constant.java delete mode 100644 src/main/webapp/WEB-INF/test-page2.jsp delete mode 100644 src/main/webapp/WEB-INF/test-page3.jsp delete mode 100644 src/main/webapp/WEB-INF/test-page4.jsp delete mode 100644 src/main/webapp/WEB-INF/test-page5.jsp diff --git a/src/main/java/com/javarush/bekk/cmd/TestPage.java b/src/main/java/com/javarush/bekk/cmd/TestPage.java index 591b855..1b143eb 100644 --- a/src/main/java/com/javarush/bekk/cmd/TestPage.java +++ b/src/main/java/com/javarush/bekk/cmd/TestPage.java @@ -3,6 +3,7 @@ import com.javarush.bekk.entity.Answer; import com.javarush.bekk.entity.Question; import com.javarush.bekk.repository.QuestionRepository; +import com.javarush.bekk.util.Constant; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpSession; import lombok.AllArgsConstructor; @@ -15,16 +16,19 @@ public class TestPage implements Command { private final QuestionRepository questionRepository; - @Override public String doPost(HttpServletRequest request) { HttpSession session = request.getSession(); - int answer = Integer.parseInt(request.getParameter("answer")); - if (answer == 1){ - Question question = questionRepository.get(1L); + String[] answers = (request.getParameter("answer")).split(","); + int answer = Integer.parseInt(answers[0]); + int nextQuestionId = Integer.parseInt(answers[1]); + if (answer == Constant.RIGHT_ANSWER) { + Question question = questionRepository.get(nextQuestionId); session.setAttribute("question", question); return getView(); - } else { + } else if (answer == Constant.LAST_RIGHT_ANSWER){ + return "win-page"; + } else { return "end-page"; } } diff --git a/src/main/java/com/javarush/bekk/cmd/TestPage2.java b/src/main/java/com/javarush/bekk/cmd/TestPage2.java deleted file mode 100644 index b8d8a64..0000000 --- a/src/main/java/com/javarush/bekk/cmd/TestPage2.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.javarush.bekk.cmd; - -import com.javarush.bekk.entity.Question; -import com.javarush.bekk.repository.QuestionRepository; -import jakarta.servlet.http.HttpServletRequest; -import jakarta.servlet.http.HttpSession; -import lombok.AllArgsConstructor; - -@AllArgsConstructor -public class TestPage2 implements Command { - private final QuestionRepository questionRepository; - - - - @Override - public String doPost(HttpServletRequest request) { - HttpSession session = request.getSession(); - int answer = Integer.parseInt(request.getParameter("answer")); - if (answer == 1){ - Question question = questionRepository.get(2L); - session.setAttribute("question", question); - return getView(); - } else { - return "end-page"; - } - } -} diff --git a/src/main/java/com/javarush/bekk/cmd/TestPage3.java b/src/main/java/com/javarush/bekk/cmd/TestPage3.java deleted file mode 100644 index 0b56497..0000000 --- a/src/main/java/com/javarush/bekk/cmd/TestPage3.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.javarush.bekk.cmd; - -import com.javarush.bekk.entity.Question; -import com.javarush.bekk.repository.QuestionRepository; -import jakarta.servlet.http.HttpServletRequest; -import jakarta.servlet.http.HttpSession; -import lombok.AllArgsConstructor; - - - -@AllArgsConstructor -public class TestPage3 implements Command { - private final QuestionRepository questionRepository; - - - - @Override - public String doPost(HttpServletRequest request) { - HttpSession session = request.getSession(); - int answer = Integer.parseInt(request.getParameter("answer")); - if (answer == 1){ - Question question = questionRepository.get(3L); - session.setAttribute("question", question); - return getView(); - } else { - return "end-page"; - } - } -} diff --git a/src/main/java/com/javarush/bekk/cmd/TestPage4.java b/src/main/java/com/javarush/bekk/cmd/TestPage4.java deleted file mode 100644 index c8202ef..0000000 --- a/src/main/java/com/javarush/bekk/cmd/TestPage4.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.javarush.bekk.cmd; - -import com.javarush.bekk.entity.Question; -import com.javarush.bekk.repository.QuestionRepository; -import jakarta.servlet.http.HttpServletRequest; -import jakarta.servlet.http.HttpSession; -import lombok.AllArgsConstructor; - -@AllArgsConstructor -public class TestPage4 implements Command { - - private final QuestionRepository questionRepository; - - - - @Override - public String doPost(HttpServletRequest request) { - HttpSession session = request.getSession(); - int answer = Integer.parseInt(request.getParameter("answer")); - if (answer == 1){ - Question question = questionRepository.get(4L); - session.setAttribute("question", question); - return getView(); - } else { - return "end-page"; - } - } -} diff --git a/src/main/java/com/javarush/bekk/cmd/TestPage5.java b/src/main/java/com/javarush/bekk/cmd/TestPage5.java deleted file mode 100644 index f129de0..0000000 --- a/src/main/java/com/javarush/bekk/cmd/TestPage5.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.javarush.bekk.cmd; - - -import com.javarush.bekk.entity.Question; -import com.javarush.bekk.repository.QuestionRepository; -import jakarta.servlet.http.HttpServletRequest; -import jakarta.servlet.http.HttpSession; -import lombok.AllArgsConstructor; - -@AllArgsConstructor -public class TestPage5 implements Command { - - private final QuestionRepository questionRepository; - - - - @Override - public String doPost(HttpServletRequest request) { - HttpSession session = request.getSession(); - int answer = Integer.parseInt(request.getParameter("answer")); - if (answer == 1){ - Question question = questionRepository.get(5L); - session.setAttribute("question", question); - return getView(); - } else { - return "end-page"; - } - } -} diff --git a/src/main/java/com/javarush/bekk/config/Config.java b/src/main/java/com/javarush/bekk/config/Config.java index 38cd564..ddfaaf6 100644 --- a/src/main/java/com/javarush/bekk/config/Config.java +++ b/src/main/java/com/javarush/bekk/config/Config.java @@ -12,7 +12,7 @@ public class Config { public void fillRepository() { Question question1 = buildQuestion(1L, "S — Single Responsibility Principle (Принцип единственной ответственности)"); - question1.getAnswers().add(new Answer(1L, question1.getId(), "Каждый класс должен иметь только одну причину для изменения, " + + question1.getAnswers().add(new Answer(5L, question1.getId(), "Каждый класс должен иметь только одну причину для изменения, " + "то есть выполнять только одну задачу или отвечать за одну ответственность. Это повышает сплочённость (cohesion) и упрощает поддержку кода", question1.getId() + 1)); question1.getAnswers().add(new Answer(2L, question1.getId(), "Каждый класс должен иметь много причин для изменения, " + @@ -21,7 +21,7 @@ public void fillRepository() { questionRepository.create(question1); Question question2 = buildQuestion(2L, "O — Open/Closed Principle (Принцип открытости/закрытости)"); - question2.getAnswers().add(new Answer(1L, question2.getId(), "Классы должны быть открыты для расширения (добавления нового функционала), " + + question2.getAnswers().add(new Answer(5L, question2.getId(), "Классы должны быть открыты для расширения (добавления нового функционала), " + "но закрыты для модификации (изменения существующего кода). Это достигается через абстракции (интерфейсы, абстрактные классы) и полиморфизм", question2.getId() + 1)); question2.getAnswers().add(new Answer(2L, question2.getId(), "Классы должны быть закрыты для расширения (добавления нового функционала), " + @@ -30,7 +30,7 @@ public void fillRepository() { questionRepository.create(question2); Question question3 = buildQuestion(3L, "Liskov Substitution Principle (Принцип подстановки Барбары Лисков)"); - question3.getAnswers().add(new Answer(1L, question3.getId(), "Объекты базового класса должны быть заменяемы объектами " + + question3.getAnswers().add(new Answer(5L, question3.getId(), "Объекты базового класса должны быть заменяемы объектами " + "производных классов без изменения поведения программы. Это гарантирует, что подклассы не нарушают контракты, заданные базовым классом", question3.getId() + 1)); question3.getAnswers().add(new Answer(2L, question3.getId(), "Объекты базового класса не должны быть заменяемы объектами производных классов " + @@ -39,7 +39,7 @@ public void fillRepository() { questionRepository.create(question3); Question question4 = buildQuestion(4L, "Interface Segregation Principle (Принцип разделения интерфейсов)"); - question4.getAnswers().add(new Answer(1L, question4.getId(), "Клиенты не должны быть вынуждены реализовывать интерфейсы, которые они не используют. " + + question4.getAnswers().add(new Answer(5L, question4.getId(), "Клиенты не должны быть вынуждены реализовывать интерфейсы, которые они не используют. " + "Интерфейсы должны быть узкоспециализированными, чтобы классы реализовывали только необходимый функционал", question4.getId() + 1)); question4.getAnswers().add(new Answer(2L, question4.getId(), "Клиенты должны реализовывать интерфейсы, которые они не используют. " + @@ -48,7 +48,7 @@ public void fillRepository() { questionRepository.create(question4); Question question5 = buildQuestion(5L, "D — Dependency Inversion Principle (Принцип инверсии зависимостей)"); - question5.getAnswers().add(new Answer(1L, question5.getId(), "Модули высокого уровня не должны зависеть от модулей низкого уровня; " + + question5.getAnswers().add(new Answer(100L, question5.getId(), "Модули высокого уровня не должны зависеть от модулей низкого уровня; " + "оба должны зависеть от абстракций. Абстракции не должны зависеть от деталей реализации, а детали — от абстракций. Это снижает связанность (coupling)", question5.getId() + 1)); question5.getAnswers().add(new Answer(2L, question5.getId(), "Модули высокого уровня должны зависеть от модулей низкого уровня. " + diff --git a/src/main/java/com/javarush/bekk/controller/FrontController.java b/src/main/java/com/javarush/bekk/controller/FrontController.java index dcc05e6..8e0be22 100644 --- a/src/main/java/com/javarush/bekk/controller/FrontController.java +++ b/src/main/java/com/javarush/bekk/controller/FrontController.java @@ -13,7 +13,7 @@ import java.io.IOException; -@WebServlet({"", "/test-page", "/end-page", "/test-page2", "/test-page3", "/test-page4", "/test-page5", "/win-page", "/start-page"}) +@WebServlet({"", "/test-page", "/end-page", "/win-page", "/start-page"}) public class FrontController extends HttpServlet { private final HttpResolver httpResolver = Winter.find(HttpResolver.class); diff --git a/src/main/java/com/javarush/bekk/util/Constant.java b/src/main/java/com/javarush/bekk/util/Constant.java new file mode 100644 index 0000000..36e16a5 --- /dev/null +++ b/src/main/java/com/javarush/bekk/util/Constant.java @@ -0,0 +1,6 @@ +package com.javarush.bekk.util; + +public class Constant { + public static final int RIGHT_ANSWER = 5; + public static final int LAST_RIGHT_ANSWER = 100; +} diff --git a/src/main/webapp/WEB-INF/test-page.jsp b/src/main/webapp/WEB-INF/test-page.jsp index 025e07f..17d9c8b 100644 --- a/src/main/webapp/WEB-INF/test-page.jsp +++ b/src/main/webapp/WEB-INF/test-page.jsp @@ -4,12 +4,13 @@

    <%= "Тестирование по по SOLID" %>

    -
    +<%----%> +

    ${sessionScope.question.text}

      -
    - <%--

    ${sessionScope.question.text}

    - - - -
    - - -

    --%> -

    -<%--user-это элемент массива, users-массив --%> -<%-- - ${user.login} ---%> - - - - -<%-- -
    -

    Какой вариант вы выбираете?

    - - -
    - -

    - - -
    --%> - -<%-------------------Было в play-game----------------------------------%> -<%-- -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> -<%@ page contentType="text/html;charset=UTF-8" %> - -
    - - - - - -
    - -
    - ${question.image} -
    -

    - -

    ${question.text}

    -
    -
      - -
      - - -
      -
      -
    - -
    - -
    - - - - - - - - -
    -
    -
    -
    -
    --%> diff --git a/src/main/webapp/WEB-INF/test-page2.jsp b/src/main/webapp/WEB-INF/test-page2.jsp deleted file mode 100644 index db8c816..0000000 --- a/src/main/webapp/WEB-INF/test-page2.jsp +++ /dev/null @@ -1,107 +0,0 @@ -<%@ page contentType="text/html;charset=UTF-8" language="java" %> -<%@include file="parts/header.jsp" %> - -

    <%= "Тестирование по по SOLID" %> -

    - -
    -

    ${sessionScope.question.text}

    -
      - -
      - - -
      -
      -
    - - <%--

    ${sessionScope.question.text}

    - - - -
    - - -

    --%> - - -
    - -
    - - -<%--user-это элемент массива, users-массив --%> -<%-- - ${user.login} ---%> - - - - -<%-- -
    -

    Какой вариант вы выбираете?

    - - -
    - - -

    - - -
    --%> - -<%-------------------Было в play-game----------------------------------%> -<%-- -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> -<%@ page contentType="text/html;charset=UTF-8" %> - -
    - - - - - -
    - -
    - ${question.image} -
    -

    - -

    ${question.text}

    -
    -
      - -
      - - -
      -
      -
    - -
    - -
    - - - - - - - - -
    -
    -
    -
    -
    --%> diff --git a/src/main/webapp/WEB-INF/test-page3.jsp b/src/main/webapp/WEB-INF/test-page3.jsp deleted file mode 100644 index 46e4dfd..0000000 --- a/src/main/webapp/WEB-INF/test-page3.jsp +++ /dev/null @@ -1,107 +0,0 @@ -<%@ page contentType="text/html;charset=UTF-8" language="java" %> -<%@include file="parts/header.jsp" %> - -

    <%= "Тестирование по по SOLID" %> -

    - -
    -

    ${sessionScope.question.text}

    -
      - -
      - - -
      -
      -
    - - <%--

    ${sessionScope.question.text}

    - - - -
    - - -

    --%> - - -
    - -
    - - -<%--user-это элемент массива, users-массив --%> -<%-- - ${user.login} ---%> - - - - -<%-- -
    -

    Какой вариант вы выбираете?

    - - -
    - - -

    - - -
    --%> - -<%-------------------Было в play-game----------------------------------%> -<%-- -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> -<%@ page contentType="text/html;charset=UTF-8" %> - -
    - - - - - -
    - -
    - ${question.image} -
    -

    - -

    ${question.text}

    -
    -
      - -
      - - -
      -
      -
    - -
    - -
    - - - - - - - - -
    -
    -
    -
    -
    --%> diff --git a/src/main/webapp/WEB-INF/test-page4.jsp b/src/main/webapp/WEB-INF/test-page4.jsp deleted file mode 100644 index d6060f2..0000000 --- a/src/main/webapp/WEB-INF/test-page4.jsp +++ /dev/null @@ -1,107 +0,0 @@ -<%@ page contentType="text/html;charset=UTF-8" language="java" %> -<%@include file="parts/header.jsp" %> - -

    <%= "Тестирование по по SOLID" %> -

    - -
    -

    ${sessionScope.question.text}

    -
      - -
      - - -
      -
      -
    - - <%--

    ${sessionScope.question.text}

    - - - -
    - - -

    --%> - - -
    - -
    - - -<%--user-это элемент массива, users-массив --%> -<%-- - ${user.login} ---%> - - - - -<%-- -
    -

    Какой вариант вы выбираете?

    - - -
    - - -

    - - -
    --%> - -<%-------------------Было в play-game----------------------------------%> -<%-- -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> -<%@ page contentType="text/html;charset=UTF-8" %> - -
    - - - - - -
    - -
    - ${question.image} -
    -

    - -

    ${question.text}

    -
    -
      - -
      - - -
      -
      -
    - -
    - -
    - - - - - - - - -
    -
    -
    -
    -
    --%> diff --git a/src/main/webapp/WEB-INF/test-page5.jsp b/src/main/webapp/WEB-INF/test-page5.jsp deleted file mode 100644 index f4b63ec..0000000 --- a/src/main/webapp/WEB-INF/test-page5.jsp +++ /dev/null @@ -1,107 +0,0 @@ -<%@ page contentType="text/html;charset=UTF-8" language="java" %> -<%@include file="parts/header.jsp" %> - -

    <%= "Тестирование по по SOLID" %> -

    - -
    -

    ${sessionScope.question.text}

    -
      - -
      - - -
      -
      -
    - - <%--

    ${sessionScope.question.text}

    - - - -
    - - -

    --%> - - -
    - -
    - - -<%--user-это элемент массива, users-массив --%> -<%-- - ${user.login} ---%> - - - - -<%-- -
    -

    Какой вариант вы выбираете?

    - - -
    - - -

    - - -
    --%> - -<%-------------------Было в play-game----------------------------------%> -<%-- -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> -<%@ page contentType="text/html;charset=UTF-8" %> - -
    - - - - - -
    - -
    - ${question.image} -
    -

    - -

    ${question.text}

    -
    -
      - -
      - - -
      -
      -
    - -
    - -
    - - - - - - - - -
    -
    -
    -
    -
    --%>