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/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/StartPage.java b/src/main/java/com/javarush/bekk/cmd/StartPage.java new file mode 100644 index 0000000..06a611d --- /dev/null +++ b/src/main/java/com/javarush/bekk/cmd/StartPage.java @@ -0,0 +1,25 @@ +package com.javarush.bekk.cmd; + +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 = 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 new file mode 100644 index 0000000..1b143eb --- /dev/null +++ b/src/main/java/com/javarush/bekk/cmd/TestPage.java @@ -0,0 +1,35 @@ +package com.javarush.bekk.cmd; + +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; + +import java.util.Collection; + +@AllArgsConstructor +public class TestPage implements Command { + + private final QuestionRepository questionRepository; + + + @Override + public String doPost(HttpServletRequest request) { + HttpSession session = request.getSession(); + 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 if (answer == Constant.LAST_RIGHT_ANSWER){ + return "win-page"; + } 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/config/Config.java b/src/main/java/com/javarush/bekk/config/Config.java new file mode 100644 index 0000000..ddfaaf6 --- /dev/null +++ b/src/main/java/com/javarush/bekk/config/Config.java @@ -0,0 +1,67 @@ +package com.javarush.bekk.config; + +import com.javarush.bekk.entity.Answer; +import com.javarush.bekk.entity.Question; +import com.javarush.bekk.repository.QuestionRepository; +import lombok.AllArgsConstructor; + +@AllArgsConstructor +public class Config { + + private final QuestionRepository questionRepository; + + public void fillRepository() { + Question question1 = buildQuestion(1L, "S — Single Responsibility Principle (Принцип единственной ответственности)"); + question1.getAnswers().add(new Answer(5L, 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(5L, 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(5L, 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(5L, 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(100L, 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/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 69% rename from src/main/java/com/javarush/khmelov/controller/FrontController.java rename to src/main/java/com/javarush/bekk/controller/FrontController.java index 33242b2..8e0be22 100644 --- a/src/main/java/com/javarush/khmelov/controller/FrontController.java +++ b/src/main/java/com/javarush/bekk/controller/FrontController.java @@ -1,9 +1,10 @@ -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.Config; +import com.javarush.bekk.config.Winter; 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"}) +@WebServlet({"", "/test-page", "/end-page", "/win-page", "/start-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/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/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/Question.java b/src/main/java/com/javarush/bekk/entity/Question.java new file mode 100644 index 0000000..ea249ae --- /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<>(); + +} 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..7f0d357 --- /dev/null +++ b/src/main/java/com/javarush/bekk/repository/AnswerRepository.java @@ -0,0 +1,13 @@ +package com.javarush.bekk.repository; + +import com.javarush.bekk.entity.Answer; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.stream.Stream; + +public class AnswerRepository extends BaseRepository { + + + +} 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..0c59ffb --- /dev/null +++ b/src/main/java/com/javarush/bekk/repository/BaseRepository.java @@ -0,0 +1,47 @@ +package com.javarush.bekk.repository; + +import com.javarush.bekk.entity.AbstractEntity; + +import java.util.Collection; +import java.util.Map; +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/QuestionRepository.java b/src/main/java/com/javarush/bekk/repository/QuestionRepository.java new file mode 100644 index 0000000..e4faff2 --- /dev/null +++ b/src/main/java/com/javarush/bekk/repository/QuestionRepository.java @@ -0,0 +1,16 @@ +package com.javarush.bekk.repository; + +import com.javarush.bekk.entity.Answer; +import com.javarush.bekk.entity.Question; + +import java.util.HashMap; +import java.util.Map; +import java.util.concurrent.atomic.AtomicLong; + +public class QuestionRepository extends BaseRepository { + + private final Map map = new HashMap<>(); + + public static final AtomicLong id = new AtomicLong(System.currentTimeMillis()); + +} diff --git a/src/main/java/com/javarush/bekk/repository/Repository.java b/src/main/java/com/javarush/bekk/repository/Repository.java new file mode 100644 index 0000000..67ade6e --- /dev/null +++ b/src/main/java/com/javarush/bekk/repository/Repository.java @@ -0,0 +1,18 @@ +package com.javarush.bekk.repository; + +import java.util.Collection; + +public interface Repository { + + Collection getAll(); + + //Stream find(T pattern); + + T get(long id); + + void create(T entity); + + void update(T entity); + + void delete(T entity); +} 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..303f11b --- /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..445635e --- /dev/null +++ b/src/main/java/com/javarush/bekk/service/QuestionService.java @@ -0,0 +1,22 @@ +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); + } + + public void getQuestion(Long id) { + questionRepository.get(id); + } + +} 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/java/com/javarush/bekk/util/Go.java b/src/main/java/com/javarush/bekk/util/Go.java new file mode 100644 index 0000000..c2342cf --- /dev/null +++ b/src/main/java/com/javarush/bekk/util/Go.java @@ -0,0 +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/khmelov/cmd/EditUser.java b/src/main/java/com/javarush/khmelov/cmd/EditUser.java deleted file mode 100644 index ae191b4..0000000 --- a/src/main/java/com/javarush/khmelov/cmd/EditUser.java +++ /dev/null @@ -1,52 +0,0 @@ -package com.javarush.khmelov.cmd; - -import com.javarush.khmelov.entity.Role; -import com.javarush.khmelov.entity.User; -import com.javarush.khmelov.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/khmelov/cmd/ListUser.java b/src/main/java/com/javarush/khmelov/cmd/ListUser.java deleted file mode 100644 index 9257917..0000000 --- a/src/main/java/com/javarush/khmelov/cmd/ListUser.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.javarush.khmelov.cmd; - -import com.javarush.khmelov.entity.User; -import com.javarush.khmelov.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/khmelov/cmd/StartPage.java b/src/main/java/com/javarush/khmelov/cmd/StartPage.java deleted file mode 100644 index d268f93..0000000 --- a/src/main/java/com/javarush/khmelov/cmd/StartPage.java +++ /dev/null @@ -1,6 +0,0 @@ -package com.javarush.khmelov.cmd; - -@SuppressWarnings("unused") -public class StartPage implements Command { - -} diff --git a/src/main/java/com/javarush/khmelov/entity/Role.java b/src/main/java/com/javarush/khmelov/entity/Role.java deleted file mode 100644 index 5ae365f..0000000 --- a/src/main/java/com/javarush/khmelov/entity/Role.java +++ /dev/null @@ -1,5 +0,0 @@ -package com.javarush.khmelov.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/khmelov/entity/User.java deleted file mode 100644 index f7fa2d6..0000000 --- a/src/main/java/com/javarush/khmelov/entity/User.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.javarush.khmelov.entity; - -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; - -@Data -@NoArgsConstructor -@AllArgsConstructor -@Builder -public class User { - - 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/khmelov/repository/Repository.java b/src/main/java/com/javarush/khmelov/repository/Repository.java deleted file mode 100644 index f1abdac..0000000 --- a/src/main/java/com/javarush/khmelov/repository/Repository.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.javarush.khmelov.repository; - -import com.javarush.khmelov.entity.User; - -import java.util.Collection; -import java.util.Optional; - -public interface Repository { - - Collection getAll(); - - Optional get(long id); - - void create(T entity); - - void update(T entity); - - void delete(T entity); -} diff --git a/src/main/java/com/javarush/khmelov/repository/UserRepository.java b/src/main/java/com/javarush/khmelov/repository/UserRepository.java deleted file mode 100644 index 58b32ea..0000000 --- a/src/main/java/com/javarush/khmelov/repository/UserRepository.java +++ /dev/null @@ -1,50 +0,0 @@ -package com.javarush.khmelov.repository; - -import com.javarush.khmelov.entity.Role; -import com.javarush.khmelov.entity.User; - -import java.util.Collection; -import java.util.HashMap; -import java.util.Map; -import java.util.Optional; -import java.util.concurrent.atomic.AtomicLong; - -public class UserRepository implements Repository { - - 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 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/khmelov/service/UserService.java b/src/main/java/com/javarush/khmelov/service/UserService.java deleted file mode 100644 index b17527c..0000000 --- a/src/main/java/com/javarush/khmelov/service/UserService.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.javarush.khmelov.service; - -import com.javarush.khmelov.entity.User; -import com.javarush.khmelov.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 userRepository.get(id); - } -} 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 f274104..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="head.jsp" %> - -
-
-
- - - Edit user: - - -
- -
- - min 3 symbols -
-
- - -
- -
- - min 8 symb -
-
- - - -
- -
- -
-
- - -
- -
- - - - - - - -
-
- -
-
-
- - 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..ad094be --- /dev/null +++ b/src/main/webapp/WEB-INF/end-page.jsp @@ -0,0 +1,8 @@ +<%@ page contentType="text/html;charset=UTF-8" language="java" %> +<%@include file="parts/header.jsp" %> + +<%--

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

+
+Ответ не правильный. Тест окончен. Начать заново. + 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 dd52c55..0000000 --- a/src/main/webapp/WEB-INF/list-user.jsp +++ /dev/null @@ -1,9 +0,0 @@ -<%@ page contentType="text/html;charset=UTF-8" language="java" %> -<%@include file="head.jsp"%> - - - ${user.login} - - - - 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..1524c77 --- /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 diff --git a/src/main/webapp/WEB-INF/start-page.jsp b/src/main/webapp/WEB-INF/start-page.jsp index 0531c1c..f1f3e31 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="head.jsp"%> +<%@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..17d9c8b --- /dev/null +++ b/src/main/webapp/WEB-INF/test-page.jsp @@ -0,0 +1,28 @@ +<%@ page contentType="text/html;charset=UTF-8" language="java" %> +<%@include file="parts/header.jsp" %> + +

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

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

${sessionScope.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" %> + +<%--

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

+
+Тест успешно пройден. Начать заново. + 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