diff --git a/src/main/java/com/LabWork/app/MangaStore/controller/Creator/CreatorController.java b/src/main/java/com/LabWork/app/MangaStore/controller/Creator/CreatorController.java index a654731..93d9ba4 100644 --- a/src/main/java/com/LabWork/app/MangaStore/controller/Creator/CreatorController.java +++ b/src/main/java/com/LabWork/app/MangaStore/controller/Creator/CreatorController.java @@ -28,12 +28,6 @@ public class CreatorController { .toList(); } - @PostMapping - public CreatorMangaDto createCreator(@RequestParam("creatorName") String creatorName, - @RequestParam("password") String password) { - return new CreatorMangaDto(creatorService.addCreator(creatorName, password)); - } - @PutMapping("/{id}") public CreatorMangaDto updateCreator(@PathVariable Long id, @RequestParam("creatorName") String creatorName, diff --git a/src/main/java/com/LabWork/app/MangaStore/controller/Reader/ReaderActionMvcController.java b/src/main/java/com/LabWork/app/MangaStore/controller/Reader/ReaderActionMvcController.java index a156acb..281e78c 100644 --- a/src/main/java/com/LabWork/app/MangaStore/controller/Reader/ReaderActionMvcController.java +++ b/src/main/java/com/LabWork/app/MangaStore/controller/Reader/ReaderActionMvcController.java @@ -1,5 +1,6 @@ package com.LabWork.app.MangaStore.controller.Reader; +import com.LabWork.app.MangaStore.model.Dto.CreatorMangaDto; import com.LabWork.app.MangaStore.model.Dto.ReaderMangaDto; import com.LabWork.app.MangaStore.model.Dto.SupportDto.MangaDto; import com.LabWork.app.MangaStore.service.ReaderService; @@ -26,6 +27,20 @@ public class ReaderActionMvcController { this.mangaService = mangaService; } + @GetMapping("/{user}") + public String getReader(@PathVariable String user, Model model) { + model.addAttribute("readers", + readerService.findAllReaders().stream() + .map(ReaderMangaDto::new) + .toList()); + ReaderMangaDto currentReader = new ReaderMangaDto(readerService.findReader(readerService.findByLogin(user).getId())); + model.addAttribute("readerId", currentReader.getId()); + model.addAttribute("reader", new ReaderMangaDto(readerService.findReader(currentReader.getId()))); + model.addAttribute("MangaDto", new MangaDto()); + model.addAttribute("mangaList", mangaService.findAllMangas()); + return "readerAction"; + } + @GetMapping() public String getReader(@RequestParam(value = "readerId", required = false) Long readerId, Model model) { model.addAttribute("readers", diff --git a/src/main/java/com/LabWork/app/MangaStore/controller/Reader/ReaderController.java b/src/main/java/com/LabWork/app/MangaStore/controller/Reader/ReaderController.java index bbc0893..5c00be2 100644 --- a/src/main/java/com/LabWork/app/MangaStore/controller/Reader/ReaderController.java +++ b/src/main/java/com/LabWork/app/MangaStore/controller/Reader/ReaderController.java @@ -30,12 +30,6 @@ public class ReaderController { .toList(); } - @PostMapping - public ReaderMangaDto createReader(@RequestParam("readerName") String readerName, - @RequestParam("password") String password) { - return new ReaderMangaDto(readerService.addReader(readerName, password)); - } - @PutMapping("/{id}") public ReaderMangaDto updateReader(@PathVariable Long id, @RequestParam("readerName") String readerName, diff --git a/src/main/java/com/LabWork/app/MangaStore/controller/Reader/ReaderMvcController.java b/src/main/java/com/LabWork/app/MangaStore/controller/Reader/ReaderMvcController.java deleted file mode 100644 index f5dc9b2..0000000 --- a/src/main/java/com/LabWork/app/MangaStore/controller/Reader/ReaderMvcController.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.LabWork.app.MangaStore.controller.Reader; - -import com.LabWork.app.MangaStore.model.Dto.ReaderMangaDto; -import com.LabWork.app.MangaStore.service.ReaderService; -import javax.validation.Valid; -import org.springframework.stereotype.Controller; -import org.springframework.ui.Model; -import org.springframework.validation.BindingResult; -import org.springframework.web.bind.annotation.*; - -@Controller -@RequestMapping("/reader") -public class ReaderMvcController { - private final ReaderService readerService; - - public ReaderMvcController(ReaderService readerService) { - this.readerService = readerService; - } - - @GetMapping - public String getReaders(Model model) { - model.addAttribute("readers", - readerService.findAllReaders().stream() - .map(ReaderMangaDto::new) - .toList()); - return "reader"; - } - - @GetMapping(value = {"/edit", "/edit/{id}"}) - public String editReader(@PathVariable(required = false) Long id, - Model model) { - if (id == null || id <= 0) { - model.addAttribute("ReaderMangaDto", new ReaderMangaDto()); - } else { - model.addAttribute("readerId", id); - model.addAttribute("ReaderMangaDto", new ReaderMangaDto(readerService.findReader(id))); - } - return "reader-edit"; - } - - @PostMapping(value = {"", "/{id}"}) - public String saveReader(@PathVariable(required = false) Long id, - @ModelAttribute @Valid ReaderMangaDto readerMangaDto, - BindingResult bindingResult, - Model model) { - if (bindingResult.hasErrors()) { - model.addAttribute("errors", bindingResult.getAllErrors()); - return "reader-edit"; - } - if (id == null || id <= 0) { - readerService.addReader(readerMangaDto.getReaderName(), readerMangaDto.getHashedPassword()); - } else { - readerService.updateReader(id, readerMangaDto.getReaderName(), readerMangaDto.getHashedPassword()); - } - return "redirect:/reader"; - } - - @PostMapping("/delete/{id}") - public String deleteReader(@PathVariable Long id) { - readerService.deleteReader(id); - return "redirect:/reader"; - } -} diff --git a/src/main/java/com/LabWork/app/MangaStore/model/Default/Creator.java b/src/main/java/com/LabWork/app/MangaStore/model/Default/Creator.java index e6ae3a2..271f015 100644 --- a/src/main/java/com/LabWork/app/MangaStore/model/Default/Creator.java +++ b/src/main/java/com/LabWork/app/MangaStore/model/Default/Creator.java @@ -14,7 +14,7 @@ public class Creator { @Id private Long id; - @OneToOne(fetch = FetchType.LAZY) + @OneToOne(fetch = FetchType.EAGER) @MapsId private User user; @@ -24,12 +24,6 @@ public class Creator { public Creator() { } - public Creator(String creatorName, String hashedPassword) { - this.user = user; - this.id = user.getId(); - this.mangas = new ArrayList<>(); - } - public Creator(User user) { this.user = user; this.id = user.getId(); diff --git a/src/main/java/com/LabWork/app/MangaStore/model/Default/Reader.java b/src/main/java/com/LabWork/app/MangaStore/model/Default/Reader.java index f448576..ffc0921 100644 --- a/src/main/java/com/LabWork/app/MangaStore/model/Default/Reader.java +++ b/src/main/java/com/LabWork/app/MangaStore/model/Default/Reader.java @@ -1,6 +1,8 @@ package com.LabWork.app.MangaStore.model.Default; import javax.persistence.*; + +import com.LabWork.app.MangaStore.user.model.User; import org.hibernate.annotations.Cascade; import java.util.ArrayList; @@ -10,14 +12,11 @@ import java.util.Objects; @Entity public class Reader { @Id - @GeneratedValue(strategy = GenerationType.AUTO) private Long id; - @Column - private String readerName; - - @Column - private String hashedPassword; + @OneToOne(fetch = FetchType.LAZY) + @MapsId + private User user; @ManyToMany(fetch = FetchType.EAGER, cascade = CascadeType.MERGE) /*@Cascade(value = org.hibernate.annotations.CascadeType.DELETE_ORPHAN)*/ @@ -27,9 +26,15 @@ public class Reader { public Reader() { } - public Reader(String readerName, String hashedPassword) { - this.readerName = readerName; - this.hashedPassword = hashedPassword; + public Reader(String creatorName, String hashedPassword) { + this.user = user; + this.id = user.getId(); + this.mangas = new ArrayList<>(); + } + + public Reader(User user) { + this.user = user; + this.id = user.getId(); this.mangas = new ArrayList<>(); } @@ -37,20 +42,12 @@ public class Reader { return id; } - - - public String getReaderName() { return readerName; } - - public void setReaderName(String readerName) { this.readerName = readerName; } - - public String getHashedPassword() { return hashedPassword; } - - public void setHashedPassword(String hashedPassword) { this.hashedPassword = hashedPassword; } - public List getMangas() { return mangas; } public void setMangas(List mangas) { this.mangas = mangas; } + public User getUser() { return user; } + @Override public boolean equals(Object o) { if (this == o) return true; @@ -68,8 +65,6 @@ public class Reader { public String toString() { return "Reader{" + "id=" + id + - ", readerName='" + readerName + '\'' + - ", hashedPassword='" + hashedPassword + '\'' + '}'; } } diff --git a/src/main/java/com/LabWork/app/MangaStore/model/Dto/ReaderMangaDto.java b/src/main/java/com/LabWork/app/MangaStore/model/Dto/ReaderMangaDto.java index 38912cb..40dd332 100644 --- a/src/main/java/com/LabWork/app/MangaStore/model/Dto/ReaderMangaDto.java +++ b/src/main/java/com/LabWork/app/MangaStore/model/Dto/ReaderMangaDto.java @@ -19,8 +19,8 @@ public class ReaderMangaDto { public ReaderMangaDto(Reader reader) { this.id = reader.getId(); - this.readerName = reader.getReaderName(); - this.hashedPassword = reader.getHashedPassword(); + this.readerName = reader.getUser().getLogin(); + this.hashedPassword = reader.getUser().getPassword(); this.mangas = reader.getMangas().stream() .map(y -> new MangaDto(y)) .toList(); diff --git a/src/main/java/com/LabWork/app/MangaStore/model/Dto/SupportDto/ReaderDto.java b/src/main/java/com/LabWork/app/MangaStore/model/Dto/SupportDto/ReaderDto.java index b8631ad..a165ad6 100644 --- a/src/main/java/com/LabWork/app/MangaStore/model/Dto/SupportDto/ReaderDto.java +++ b/src/main/java/com/LabWork/app/MangaStore/model/Dto/SupportDto/ReaderDto.java @@ -16,8 +16,8 @@ public class ReaderDto { public ReaderDto(Reader reader) { this.id = reader.getId(); - this.readerName = reader.getReaderName(); - this.hashedPassword = reader.getHashedPassword(); + this.readerName = reader.getUser().getLogin(); + this.hashedPassword = reader.getUser().getPassword(); } public Long getId() { diff --git a/src/main/java/com/LabWork/app/MangaStore/service/CreatorService.java b/src/main/java/com/LabWork/app/MangaStore/service/CreatorService.java index 91cf50b..0d89240 100644 --- a/src/main/java/com/LabWork/app/MangaStore/service/CreatorService.java +++ b/src/main/java/com/LabWork/app/MangaStore/service/CreatorService.java @@ -49,8 +49,8 @@ public class CreatorService { public List findAllCreators() { return creatorRepository.findAll(); } @Transactional - public Creator addCreator(String creatorName, String password) { - final Creator creator = new Creator(creatorName, password); + public Creator addCreator(User user) { + final Creator creator = new Creator(user); validatorUtil.validate(creator); return creatorRepository.save(creator); } diff --git a/src/main/java/com/LabWork/app/MangaStore/service/ReaderService.java b/src/main/java/com/LabWork/app/MangaStore/service/ReaderService.java index 2b8c953..9166b7f 100644 --- a/src/main/java/com/LabWork/app/MangaStore/service/ReaderService.java +++ b/src/main/java/com/LabWork/app/MangaStore/service/ReaderService.java @@ -1,11 +1,15 @@ package com.LabWork.app.MangaStore.service; +import com.LabWork.app.MangaStore.model.Default.Creator; import com.LabWork.app.MangaStore.model.Default.Manga; import com.LabWork.app.MangaStore.model.Default.Reader; +import com.LabWork.app.MangaStore.service.Exception.CreatorNotFoundException; import com.LabWork.app.MangaStore.service.Repository.MangaRepository; import com.LabWork.app.MangaStore.service.Repository.ReaderRepository; import com.LabWork.app.MangaStore.service.Exception.MangaNotFoundException; import com.LabWork.app.MangaStore.service.Exception.ReaderNotFoundException; +import com.LabWork.app.MangaStore.user.model.User; +import com.LabWork.app.MangaStore.user.repository.UserRepository; import com.LabWork.app.MangaStore.util.validation.ValidatorUtil; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -16,15 +20,18 @@ import java.util.Optional; @Service public class ReaderService { private final ReaderRepository readerRepository; + private final UserRepository userRepository; private final MangaRepository mangaRepository; private final ValidatorUtil validatorUtil; public ReaderService(ReaderRepository readerRepository, ValidatorUtil validatorUtil, + UserRepository userRepository, MangaRepository mangaRepository) { this.readerRepository = readerRepository; this.mangaRepository = mangaRepository; this.validatorUtil = validatorUtil; + this.userRepository = userRepository; } @Transactional @@ -33,25 +40,35 @@ public class ReaderService { return reader.orElseThrow(() -> new ReaderNotFoundException(id)); } + public User findByLogin(String login) { + return userRepository.findOneByLoginIgnoreCase(login); + } + + @Transactional(readOnly = true) + public User findUser(Long id) { + final Optional user = userRepository.findById(id); + return user.orElseThrow(() -> new CreatorNotFoundException(id)); + } + @Transactional(readOnly = true) public List findAllReaders() { return readerRepository.findAll(); } @Transactional - public Reader addReader(String readerName, String password) { - final Reader reader = new Reader(readerName, password); + public Reader addReader(User user) { + final Reader reader = new Reader(user); validatorUtil.validate(reader); return readerRepository.save(reader); } @Transactional - public Reader updateReader(Long id, String readername, String password) { - final Reader currentReader = findReader(id); - currentReader.setReaderName(readername); - currentReader.setHashedPassword(password); - validatorUtil.validate(currentReader); - return currentReader; + public Reader updateReader(Long id, String creatorName, String password) { + final User currentUser = findUser(id); + currentUser.setLogin(creatorName); + currentUser.setPassword(password); + validatorUtil.validate(currentUser); + return findReader(id); } @Transactional diff --git a/src/main/java/com/LabWork/app/MangaStore/user/service/UserService.java b/src/main/java/com/LabWork/app/MangaStore/user/service/UserService.java index d4f183e..f567476 100644 --- a/src/main/java/com/LabWork/app/MangaStore/user/service/UserService.java +++ b/src/main/java/com/LabWork/app/MangaStore/user/service/UserService.java @@ -1,7 +1,7 @@ package com.LabWork.app.MangaStore.user.service; -import com.LabWork.app.MangaStore.model.Default.Creator; -import com.LabWork.app.MangaStore.service.Repository.CreatorRepository; +import com.LabWork.app.MangaStore.service.CreatorService; +import com.LabWork.app.MangaStore.service.ReaderService; import com.LabWork.app.MangaStore.user.model.UserRole; import com.LabWork.app.MangaStore.util.validation.ValidationException; import com.LabWork.app.MangaStore.util.validation.ValidatorUtil; @@ -21,16 +21,19 @@ import java.util.Objects; @Service public class UserService implements UserDetailsService { private final UserRepository userRepository; - private final CreatorRepository creatorRepository; + private final ReaderService readerService; + private final CreatorService creatorService; private final PasswordEncoder passwordEncoder; private final ValidatorUtil validatorUtil; public UserService(UserRepository userRepository, - CreatorRepository creatorRepository, + CreatorService creatorService, + ReaderService readerService, PasswordEncoder passwordEncoder, ValidatorUtil validatorUtil) { this.userRepository = userRepository; - this.creatorRepository = creatorRepository; + this.readerService = readerService; + this.creatorService = creatorService; this.passwordEncoder = passwordEncoder; this.validatorUtil = validatorUtil; } @@ -57,8 +60,8 @@ public class UserService implements UserDetailsService { throw new ValidationException("Passwords not equals"); } userRepository.save(user); - final Creator creator = new Creator(user); - creatorRepository.save(creator); + if (user.getRole() == UserRole.ADMIN) creatorService.addCreator(user); + else readerService.addReader(user); return user; } diff --git a/src/main/resources/templates/default.html b/src/main/resources/templates/default.html index 32545e4..f7dbe9d 100644 --- a/src/main/resources/templates/default.html +++ b/src/main/resources/templates/default.html @@ -30,7 +30,7 @@ th:classappend="${#strings.equals(activeLink, '/')} ? 'active' : ''">Index CreatorAction - ReaderAction Catalog diff --git a/src/main/resources/templates/reader-edit.html b/src/main/resources/templates/reader-edit.html deleted file mode 100644 index 5ffe594..0000000 --- a/src/main/resources/templates/reader-edit.html +++ /dev/null @@ -1,31 +0,0 @@ - - - - - -
-
-
-
- - -
-
- - -
-
- - - Назад - -
-
-
- - \ No newline at end of file diff --git a/src/main/resources/templates/reader.html b/src/main/resources/templates/reader.html deleted file mode 100644 index 78a5598..0000000 --- a/src/main/resources/templates/reader.html +++ /dev/null @@ -1,60 +0,0 @@ - - - - - -
-
-

Reader

- - Добавить - -
- - - - - - - - - - - - - - - - -
#ReaderNamePasswordMangas
- - - - - -
- - Изменить - - -
-
- -
-
-
-
-
- - \ No newline at end of file diff --git a/src/test/java/com/LabWork/app/ReMangaTest.java b/src/test/java/com/LabWork/app/ReMangaTest.java index 23fab29..f34e522 100644 --- a/src/test/java/com/LabWork/app/ReMangaTest.java +++ b/src/test/java/com/LabWork/app/ReMangaTest.java @@ -1,3 +1,4 @@ +/* package com.LabWork.app; import com.LabWork.app.MangaStore.model.Default.Creator; @@ -103,6 +104,7 @@ public class ReMangaTest { creatorService.deleteAllCreators(); } +*/ /* @Test void testCreatorAddManga() { readerService.deleteAllReaders(); @@ -119,8 +121,10 @@ public class ReMangaTest { log.info(m1.getCreator().toString()); log.info(c1.toString()); Assertions.assertEquals(c1.getCreatorName(), m1.getCreator().getCreatorName()); - }*/ + }*//* + +*/ /* //бесполезня штука @Test void testCreatorDeleteManga() { @@ -147,8 +151,11 @@ public class ReMangaTest { Assertions.assertEquals(1, c1.getMangas().size()); - }*/ -/*тестстим работоспособность гита*/ + }*//* + +*/ +/*тестстим работоспособность гита*//* + @Test void testCreatorUpdated() { readerService.deleteAllReaders(); @@ -429,3 +436,4 @@ public class ReMangaTest { creatorService.deleteAllCreators(); } } +*/