From 04db2d02f69e4dcafa6946be3a0033b41056e296 Mon Sep 17 00:00:00 2001 From: Dmitry Isaenko Date: Sun, 4 May 2025 23:54:01 +0300 Subject: [PATCH] minor updates --- .../marinesco/data/GenreRepository.java | 1 - .../data/LibraryMetadataRepository.java | 3 +- .../marinesco/data/RolesRepository.java | 2 +- .../marinesco/data/UserRepository.java | 2 +- .../marinesco/library/AthorByIdConverter.java | 2 +- .../marinesco/library/GenreByIdConverter.java | 2 +- .../library/InpxLibraryMetadataScanner.java | 8 +-- .../marinesco/library/InpxScanner.java | 27 +++++---- .../marinesco/library/LibraryMetadata.java | 2 +- .../library/api/AuthorsApiController.java | 25 +++----- .../library/api/BooksApiController.java | 30 ++++------ .../library/api/GenresApiController.java | 14 ++--- .../settings/GenreSettingsController.java | 21 ++----- .../library/settings/GenresUpload.java | 14 ++--- .../library/web/AuthorController.java | 8 +-- .../marinesco/library/web/BookController.java | 3 +- .../library/web/DownloadController.java | 33 ++++++----- .../library/web/SearchController.java | 58 +++++++------------ ...orm.java => AdministratorAddUserForm.java} | 2 +- .../security/ManageUsersController.java | 4 +- .../resources/templates/manage_users.html | 2 +- 21 files changed, 104 insertions(+), 159 deletions(-) rename src/main/java/ru/redrise/marinesco/security/{AdministatorAddUserForm.java => AdministratorAddUserForm.java} (96%) diff --git a/src/main/java/ru/redrise/marinesco/data/GenreRepository.java b/src/main/java/ru/redrise/marinesco/data/GenreRepository.java index 160383d..bf11b21 100644 --- a/src/main/java/ru/redrise/marinesco/data/GenreRepository.java +++ b/src/main/java/ru/redrise/marinesco/data/GenreRepository.java @@ -5,7 +5,6 @@ import org.springframework.stereotype.Repository; import ru.redrise.marinesco.library.Genre; - @Repository public interface GenreRepository extends JpaRepository{ } diff --git a/src/main/java/ru/redrise/marinesco/data/LibraryMetadataRepository.java b/src/main/java/ru/redrise/marinesco/data/LibraryMetadataRepository.java index 851d00e..f31f39e 100644 --- a/src/main/java/ru/redrise/marinesco/data/LibraryMetadataRepository.java +++ b/src/main/java/ru/redrise/marinesco/data/LibraryMetadataRepository.java @@ -6,6 +6,5 @@ import org.springframework.stereotype.Repository; import ru.redrise.marinesco.library.LibraryMetadata; @Repository -public interface LibraryMetadataRepository extends CrudRepository{ - +public interface LibraryMetadataRepository extends CrudRepository{ } diff --git a/src/main/java/ru/redrise/marinesco/data/RolesRepository.java b/src/main/java/ru/redrise/marinesco/data/RolesRepository.java index 7f5b392..7a35e44 100644 --- a/src/main/java/ru/redrise/marinesco/data/RolesRepository.java +++ b/src/main/java/ru/redrise/marinesco/data/RolesRepository.java @@ -11,5 +11,5 @@ import ru.redrise.marinesco.security.UserRole.Type; @Repository public interface RolesRepository extends CrudRepository{ - public List findByType(Type type); + List findByType(Type type); } diff --git a/src/main/java/ru/redrise/marinesco/data/UserRepository.java b/src/main/java/ru/redrise/marinesco/data/UserRepository.java index fe655b8..cd5ace3 100644 --- a/src/main/java/ru/redrise/marinesco/data/UserRepository.java +++ b/src/main/java/ru/redrise/marinesco/data/UserRepository.java @@ -7,5 +7,5 @@ import ru.redrise.marinesco.User; @Repository public interface UserRepository extends CrudRepository{ - public User findByUsername(String username); + User findByUsername(String username); } diff --git a/src/main/java/ru/redrise/marinesco/library/AthorByIdConverter.java b/src/main/java/ru/redrise/marinesco/library/AthorByIdConverter.java index abe6f3c..e70ae85 100644 --- a/src/main/java/ru/redrise/marinesco/library/AthorByIdConverter.java +++ b/src/main/java/ru/redrise/marinesco/library/AthorByIdConverter.java @@ -8,7 +8,7 @@ import ru.redrise.marinesco.data.AuthorRepository; @Component public class AthorByIdConverter implements Converter{ - private AuthorRepository authorRepository; + private final AuthorRepository authorRepository; public AthorByIdConverter(AuthorRepository authorRepository){ this.authorRepository = authorRepository; diff --git a/src/main/java/ru/redrise/marinesco/library/GenreByIdConverter.java b/src/main/java/ru/redrise/marinesco/library/GenreByIdConverter.java index 1e134c8..a68558b 100644 --- a/src/main/java/ru/redrise/marinesco/library/GenreByIdConverter.java +++ b/src/main/java/ru/redrise/marinesco/library/GenreByIdConverter.java @@ -8,7 +8,7 @@ import ru.redrise.marinesco.data.GenreRepository; @Component public class GenreByIdConverter implements Converter{ - private GenreRepository genreRepository; + private final GenreRepository genreRepository; public GenreByIdConverter(GenreRepository genreRepository){ this.genreRepository = genreRepository; diff --git a/src/main/java/ru/redrise/marinesco/library/InpxLibraryMetadataScanner.java b/src/main/java/ru/redrise/marinesco/library/InpxLibraryMetadataScanner.java index aa60ce7..4358342 100644 --- a/src/main/java/ru/redrise/marinesco/library/InpxLibraryMetadataScanner.java +++ b/src/main/java/ru/redrise/marinesco/library/InpxLibraryMetadataScanner.java @@ -12,9 +12,9 @@ public class InpxLibraryMetadataScanner { private InpxLibraryMetadataScanner() { } public static LibraryMetadata saveFromFile(File inpxFile, LibraryMetadataRepository repository) throws Exception { - LibraryMetadata libraryMetadata = new LibraryMetadata(); + var libraryMetadata = new LibraryMetadata(); - try (ZipInputStream zipInputStream = new ZipInputStream(new FileInputStream(inpxFile))) { + try (var zipInputStream = new ZipInputStream(new FileInputStream(inpxFile))) { ZipEntry zipEntry; while ((zipEntry = zipInputStream.getNextEntry()) != null) { @@ -37,8 +37,8 @@ public class InpxLibraryMetadataScanner { } private static String readPlainText(ZipInputStream zipInputStream) throws Exception { - byte[] content = new byte[1024]; - StringBuilder stringBuilder = new StringBuilder(); + var content = new byte[1024]; + var stringBuilder = new StringBuilder(); while (zipInputStream.read(content) > 0) stringBuilder.append(new String(content, StandardCharsets.UTF_8)); diff --git a/src/main/java/ru/redrise/marinesco/library/InpxScanner.java b/src/main/java/ru/redrise/marinesco/library/InpxScanner.java index 8b907a4..4ecf7d4 100644 --- a/src/main/java/ru/redrise/marinesco/library/InpxScanner.java +++ b/src/main/java/ru/redrise/marinesco/library/InpxScanner.java @@ -25,19 +25,18 @@ public class InpxScanner { private static volatile String lastRunErrors = ""; private final ThreadPoolTaskExecutor executor; + private final String filesLocation; private final AuthorRepository authorRepository; private final GenreRepository genreRepository; private final BookRepository bookRepository; private final LibraryMetadataRepository libraryMetadataRepository; - private final String filesLocation; - public InpxScanner(ThreadPoolTaskExecutor executor, - ApplicationSettings applicationSettings, - AuthorRepository authorRepository, - GenreRepository genreRepository, - BookRepository bookRepository, - LibraryMetadataRepository libraryMetadataRepository) { + ApplicationSettings applicationSettings, + AuthorRepository authorRepository, + GenreRepository genreRepository, + BookRepository bookRepository, + LibraryMetadataRepository libraryMetadataRepository) { this.executor = executor; this.filesLocation = applicationSettings.getFilesLocation(); this.authorRepository = authorRepository; @@ -81,7 +80,7 @@ public class InpxScanner { } private File getInpxFile() throws Exception { - final FileSystemResource libraryLocation = new FileSystemResource(filesLocation); + var libraryLocation = new FileSystemResource(filesLocation); return Arrays.stream(libraryLocation.getFile().listFiles()) .filter(file -> file.getName().endsWith(".inpx")) .findFirst() @@ -89,8 +88,8 @@ public class InpxScanner { } private HashMap collectInp(File inpxFile) throws Exception { - final HashMap inpEntries = new HashMap<>(); - try (ZipInputStream zipInputStream = new ZipInputStream(new FileInputStream(inpxFile))) { + var inpEntries = new HashMap(); + try (var zipInputStream = new ZipInputStream(new FileInputStream(inpxFile))) { ZipEntry zipEntry; while ((zipEntry = zipInputStream.getNextEntry()) != null) { if (isInp(zipEntry)) { @@ -108,7 +107,7 @@ public class InpxScanner { } private byte[] inpToByteArray(ZipInputStream stream, long fileSize) throws Exception { - ByteBuffer inpByteBuffer = ByteBuffer.allocate((int) fileSize); + var inpByteBuffer = ByteBuffer.allocate((int) fileSize); int blockSize = 0x200; if (fileSize < 0x200) blockSize = (int) fileSize; @@ -147,8 +146,8 @@ public class InpxScanner { private byte[] content; private InpxWorker(Map.Entry entry, - Long libraryId, - String libraryVersion) { + Long libraryId, + String libraryVersion) { this.libraryId = libraryId; this.libraryVersion = libraryVersion; this.name = entry.getKey(); @@ -185,7 +184,7 @@ public class InpxScanner { } saveAll(books, authors, genres); } catch (Exception e) { - log.error("{}", e); + log.error(e.toString()); lastRunErrors = lastRunErrors + " " + e.getMessage(); } } diff --git a/src/main/java/ru/redrise/marinesco/library/LibraryMetadata.java b/src/main/java/ru/redrise/marinesco/library/LibraryMetadata.java index 926b478..b16a44f 100644 --- a/src/main/java/ru/redrise/marinesco/library/LibraryMetadata.java +++ b/src/main/java/ru/redrise/marinesco/library/LibraryMetadata.java @@ -37,7 +37,7 @@ public class LibraryMetadata { } public void setCollectionInfo(String content) throws Exception { - String[] lines = content.split("\n"); + var lines = content.split("\n"); if (lines.length < 4) throw new Exception("Invalid 'collection.info' file. It contains only "+lines.length+" lines!"); libraryName = lines[0].trim(); diff --git a/src/main/java/ru/redrise/marinesco/library/api/AuthorsApiController.java b/src/main/java/ru/redrise/marinesco/library/api/AuthorsApiController.java index bdb83cc..db314ee 100644 --- a/src/main/java/ru/redrise/marinesco/library/api/AuthorsApiController.java +++ b/src/main/java/ru/redrise/marinesco/library/api/AuthorsApiController.java @@ -15,35 +15,28 @@ import ru.redrise.marinesco.library.Author; @RequestMapping(path = "/api/author", produces = "application/json") public class AuthorsApiController { - private AuthorRepository authorRepository; + private final AuthorRepository authorRepository; public AuthorsApiController(AuthorRepository authorRepository){ this.authorRepository = authorRepository; } @GetMapping - public Iterable getAuthors( - @RequestParam(value = "page", required = false, defaultValue = "0") Integer page, - @RequestParam(value = "sort", required = false, defaultValue = "authorName") String sortBy){ - PageRequest pageRequest = PageRequest.of( - page, 10, Sort.by(sortBy).descending()); - + public Iterable getAuthors(@RequestParam(value = "page", required = false, defaultValue = "0") Integer page, + @RequestParam(value = "sort", required = false, defaultValue = "authorName") String sortBy) { + var pageRequest = PageRequest.of(page, 10, Sort.by(sortBy).descending()); return authorRepository.findAll(pageRequest).getContent(); } @GetMapping("/by/name/{name}") - public Iterable getAuthorId( - @PathVariable("name") String authorName, - @RequestParam(value = "page", required = false, defaultValue = "0") Integer page){ - - PageRequest pageRequest = PageRequest.of(page, 10); - + public Iterable getAuthorId(@PathVariable("name") String authorName, + @RequestParam(value = "page", required = false, defaultValue = "0") Integer page) { + var pageRequest = PageRequest.of(page, 10); return authorRepository.findByAuthorNameContainingIgnoreCase(authorName, pageRequest); } @GetMapping("/by/id/{id}") - public Author getAuthorId(@PathVariable("id") Long authorId){ - + public Author getAuthorId(@PathVariable("id") Long authorId){ return authorRepository.findById(authorId).get(); - } + } } diff --git a/src/main/java/ru/redrise/marinesco/library/api/BooksApiController.java b/src/main/java/ru/redrise/marinesco/library/api/BooksApiController.java index fb6b8a1..243ef15 100644 --- a/src/main/java/ru/redrise/marinesco/library/api/BooksApiController.java +++ b/src/main/java/ru/redrise/marinesco/library/api/BooksApiController.java @@ -17,7 +17,7 @@ import ru.redrise.marinesco.library.Book; @RequestMapping(path = "/api/book", produces = "application/json") public class BooksApiController { - private BookRepository bookRepository ; + private final BookRepository bookRepository ; public BooksApiController(BookRepository bookRepository){ this.bookRepository = bookRepository; @@ -30,33 +30,23 @@ public class BooksApiController { } @GetMapping(params = "page") - public Iterable getBooks( - @RequestParam(value = "page", required = true) Integer page, - @RequestParam(value = "sort", required = false, defaultValue = "title") String sortBy){ - - PageRequest pageRequest = PageRequest.of( - page, 10, Sort.by(sortBy).descending()); - + public Iterable getBooks(@RequestParam(value = "page", required = true) Integer page, + @RequestParam(value = "sort", required = false, defaultValue = "title") String sortBy){ + var pageRequest = PageRequest.of(page, 10, Sort.by(sortBy).descending()); return bookRepository.findAll(pageRequest).getContent(); } @GetMapping("/by/title/{title}") - public Iterable getBooksByName( - @PathVariable("title") String title, - @RequestParam(value = "page", required = false, defaultValue = "0") Integer page){ - - PageRequest pageRequest = PageRequest.of(page, 10); - + public Iterable getBooksByName(@PathVariable("title") String title, + @RequestParam(value = "page", required = false, defaultValue = "0") Integer page){ + var pageRequest = PageRequest.of(page, 10); return bookRepository.findByTitleContainingIgnoreCase(title, pageRequest); } @GetMapping("/by/series/{series}") - public Iterable getBooksBySeries( - @PathVariable("series") String series, - @RequestParam(value = "page", required = false, defaultValue = "0") Integer page){ - - PageRequest pageRequest = PageRequest.of(page, 10); - + public Iterable getBooksBySeries(@PathVariable("series") String series, + @RequestParam(value = "page", required = false, defaultValue = "0") Integer page){ + var pageRequest = PageRequest.of(page, 10); return bookRepository.findBySeriesContainingIgnoreCase(series, pageRequest); } diff --git a/src/main/java/ru/redrise/marinesco/library/api/GenresApiController.java b/src/main/java/ru/redrise/marinesco/library/api/GenresApiController.java index 2e4a61b..5c45d6f 100644 --- a/src/main/java/ru/redrise/marinesco/library/api/GenresApiController.java +++ b/src/main/java/ru/redrise/marinesco/library/api/GenresApiController.java @@ -24,18 +24,16 @@ import ru.redrise.marinesco.library.Genre; @RestController @RequestMapping(path = "/api/genres", produces = "application/json") public class GenresApiController { - private GenreRepository genreRepository; + private final GenreRepository genreRepository; public GenresApiController(GenreRepository genreRepository) { this.genreRepository = genreRepository; } @GetMapping - public Iterable getGenres( - @RequestParam(value = "page", required = false, defaultValue = "0") Integer page, - @RequestParam(value = "sort", required = false, defaultValue = "genreId") String sortBy) { - PageRequest pageRequest = PageRequest.of(page, 10, Sort.by(sortBy).descending()); - + public Iterable getGenres(@RequestParam(value = "page", required = false, defaultValue = "0") Integer page, + @RequestParam(value = "sort", required = false, defaultValue = "genreId") String sortBy) { + var pageRequest = PageRequest.of(page, 10, Sort.by(sortBy).descending()); return genreRepository.findAll(pageRequest).getContent(); } @@ -53,8 +51,8 @@ public class GenresApiController { @PutMapping(path = "/{genreId}", consumes = "application/json") public Genre putGenre(@PathVariable("genreId") String genreId, - @RequestBody Genre genre){ - genre.setGenreId(genreId); + @RequestBody Genre genre){ + genre.setGenreId(genreId); return genreRepository.save(genre); } diff --git a/src/main/java/ru/redrise/marinesco/library/settings/GenreSettingsController.java b/src/main/java/ru/redrise/marinesco/library/settings/GenreSettingsController.java index dcd2c3e..8210ebe 100644 --- a/src/main/java/ru/redrise/marinesco/library/settings/GenreSettingsController.java +++ b/src/main/java/ru/redrise/marinesco/library/settings/GenreSettingsController.java @@ -1,13 +1,10 @@ package ru.redrise.marinesco.library.settings; -import java.io.InputStream; import java.util.ArrayList; import java.util.List; -import org.springframework.http.ResponseEntity; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.PostMapping; @@ -21,7 +18,6 @@ import lombok.Data; import lombok.extern.slf4j.Slf4j; import ru.redrise.marinesco.data.GenreRepository; import ru.redrise.marinesco.library.Genre; -import org.springframework.web.bind.annotation.RequestBody; @Slf4j @@ -30,7 +26,7 @@ import org.springframework.web.bind.annotation.RequestBody; @PreAuthorize("hasRole('ADMIN')") public class GenreSettingsController { - private GenreRepository genreRepository; + private final GenreRepository genreRepository; public GenreSettingsController(GenreRepository genreRepository) { this.genreRepository = genreRepository; @@ -45,9 +41,8 @@ public class GenreSettingsController { public GenresHolder setRegistrationSetting() { List genres = new ArrayList<>(); - genreRepository.findAll() - .iterator() - .forEachRemaining(genres::add); + genreRepository.findAll().iterator() + .forEachRemaining(genres::add); return new GenresHolder(genres); } @@ -65,14 +60,10 @@ public class GenreSettingsController { } @PostMapping("/upload") - public String postMethodName(@RequestParam("file") MultipartFile file, - RedirectAttributes redirectAttributes) { - - final String message = GenresUpload.upload(file.getResource(), file.getSize(), genreRepository); - + public String postUpload(@RequestParam("file") MultipartFile file, + RedirectAttributes redirectAttributes) { + var message = GenresUpload.upload(file, genreRepository); redirectAttributes.addFlashAttribute("message", message); - return "redirect:/settings/genres"; } - } diff --git a/src/main/java/ru/redrise/marinesco/library/settings/GenresUpload.java b/src/main/java/ru/redrise/marinesco/library/settings/GenresUpload.java index ef27450..f6da1fd 100644 --- a/src/main/java/ru/redrise/marinesco/library/settings/GenresUpload.java +++ b/src/main/java/ru/redrise/marinesco/library/settings/GenresUpload.java @@ -3,24 +3,20 @@ package ru.redrise.marinesco.library.settings; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.ArrayList; -import java.util.List; - -import org.springframework.core.io.Resource; import lombok.extern.slf4j.Slf4j; +import org.springframework.web.multipart.MultipartFile; import ru.redrise.marinesco.data.GenreRepository; import ru.redrise.marinesco.library.Genre; @Slf4j public class GenresUpload { - public static String upload(Resource resource, long fileSize, GenreRepository repository) { - try (BufferedReader reader = new BufferedReader(new InputStreamReader(resource.getInputStream()))){ - if (fileSize == 0) - throw new Exception("empty file"); + public static String upload(MultipartFile file, GenreRepository repository) { + try (var reader = new BufferedReader(new InputStreamReader(file.getInputStream()))){ String line; - List genres = new ArrayList<>(); + var genres = new ArrayList(); while ((line = reader.readLine()) != null) { String[] arr = line.split(":::"); @@ -36,6 +32,6 @@ public class GenresUpload { return "Upload failed: " + e.getMessage(); } - return "Successfully uploaded: " + resource.getFilename(); + return "Successfully uploaded: " + file.getResource().getFilename(); } } diff --git a/src/main/java/ru/redrise/marinesco/library/web/AuthorController.java b/src/main/java/ru/redrise/marinesco/library/web/AuthorController.java index 296c5b9..c941d7a 100644 --- a/src/main/java/ru/redrise/marinesco/library/web/AuthorController.java +++ b/src/main/java/ru/redrise/marinesco/library/web/AuthorController.java @@ -1,8 +1,6 @@ package ru.redrise.marinesco.library.web; -import java.util.Collections; import java.util.Comparator; -import java.util.List; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; @@ -11,7 +9,6 @@ import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import ru.redrise.marinesco.data.AuthorRepository; -import ru.redrise.marinesco.library.Author; import ru.redrise.marinesco.library.Book; @Controller @@ -25,15 +22,14 @@ public class AuthorController { @GetMapping("/{authorId}") public String getPage(@PathVariable("authorId") Long authorId, Model model) { - final Author author = authorRepository.findById(authorId).orElse(null); + var author = authorRepository.findById(authorId).orElse(null); if (author == null){ model.addAttribute("Error", "Not found"); return "author"; } - List books = author.getBooks(); - + var books = author.getBooks(); books.sort(Comparator.comparing(Book::getSeries)); model.addAttribute("author", author) diff --git a/src/main/java/ru/redrise/marinesco/library/web/BookController.java b/src/main/java/ru/redrise/marinesco/library/web/BookController.java index 0958dbf..49593ec 100644 --- a/src/main/java/ru/redrise/marinesco/library/web/BookController.java +++ b/src/main/java/ru/redrise/marinesco/library/web/BookController.java @@ -20,7 +20,8 @@ public class BookController { @GetMapping("/{bookId}") public String getPage(@PathVariable("bookId") Integer bookId, Model model) { - Book book = bookRepository.findById(bookId).orElse(null); + var book = bookRepository.findById(bookId).orElse(null); + if (book == null){ model.addAttribute("Error", "Not found"); return "book"; diff --git a/src/main/java/ru/redrise/marinesco/library/web/DownloadController.java b/src/main/java/ru/redrise/marinesco/library/web/DownloadController.java index c982cbc..e21e096 100644 --- a/src/main/java/ru/redrise/marinesco/library/web/DownloadController.java +++ b/src/main/java/ru/redrise/marinesco/library/web/DownloadController.java @@ -31,23 +31,24 @@ public class DownloadController { @GetMapping(value = "/") public void getMethodName(@RequestParam String container, - @RequestParam String file, - HttpServletResponse response) throws Exception { - try { - File bookFile = new File(filesLocation + File.separator + container + File.separator + file); - if (! bookFile.exists()) - throw new Exception("No file found :["); - response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE); - response.setHeader(HttpHeaders.CONTENT_DISPOSITION, - ContentDisposition.attachment() - .filename(file, StandardCharsets.UTF_8) // TODO: fix - .build() - .toString()); + @RequestParam String file, + HttpServletResponse response) throws Exception { - try (ServletOutputStream outStream = response.getOutputStream(); - FileInputStream inputStream = new FileInputStream(bookFile)) { - IOUtils.copy(inputStream, outStream); - } + var bookFile = new File(filesLocation + File.separator + container + File.separator + file); + + if (! bookFile.exists()) + throw new Exception("No file found :["); + + response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE); + response.setHeader(HttpHeaders.CONTENT_DISPOSITION, + ContentDisposition.attachment() + .filename(file, StandardCharsets.UTF_8) // TODO: fix + .build() + .toString()); + + try (var outStream = response.getOutputStream(); + var inputStream = new FileInputStream(bookFile)) { + IOUtils.copy(inputStream, outStream); } catch (Exception e) { throw new ResponseStatusException(HttpStatus.NOT_FOUND, "Book not found [" + e.getMessage() + "]"); } diff --git a/src/main/java/ru/redrise/marinesco/library/web/SearchController.java b/src/main/java/ru/redrise/marinesco/library/web/SearchController.java index 6a7565c..5dc65cf 100644 --- a/src/main/java/ru/redrise/marinesco/library/web/SearchController.java +++ b/src/main/java/ru/redrise/marinesco/library/web/SearchController.java @@ -1,7 +1,5 @@ package ru.redrise.marinesco.library.web; -import java.util.List; - import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; @@ -11,61 +9,45 @@ import org.springframework.web.bind.annotation.RequestParam; import lombok.extern.slf4j.Slf4j; import ru.redrise.marinesco.data.AuthorRepository; import ru.redrise.marinesco.data.BookRepository; -import ru.redrise.marinesco.library.Author; -import ru.redrise.marinesco.library.Book; @Slf4j @Controller @RequestMapping("/search") public class SearchController { - private final BookRepository inpEntryRepository; + private final BookRepository booksRepository; private final AuthorRepository authorRepository; public SearchController(BookRepository bookRepository, AuthorRepository authorRepository){ - this.inpEntryRepository = bookRepository; + this.booksRepository = bookRepository; this.authorRepository = authorRepository; } @GetMapping - public String requestMethodName(@RequestParam String search, - @RequestParam(value = "title", required = false) Boolean title, - @RequestParam(value = "series", required = false) Boolean series, - @RequestParam(value = "author", required = false) Boolean author, - Model model) { + public String requestMethodName(@RequestParam String search, + @RequestParam(value = "title", required = false) Boolean title, + @RequestParam(value = "series", required = false) Boolean series, + @RequestParam(value = "author", required = false) Boolean author, + Model model) { + model.addAttribute("searchPattern", search) + .addAttribute("isTitle", title) + .addAttribute("isSeries", series) + .addAttribute("isAuthor", author); - if (search.trim().isEmpty()) - return "search"; - - model.addAttribute("searchPattern", search); - - if (search.length() < 4){ + if (search.isBlank() || search.length() < 4){ model.addAttribute("error", "Should be at least 4 chars"); return "search"; } - if (title != null){ - List books = inpEntryRepository.findByTitleContainingIgnoreCase(search); - if (!books.isEmpty()) - model.addAttribute("books", books); - model.addAttribute("isTitle", true); - } - - if (series != null){ - List bookSeries = inpEntryRepository.findBySeriesContainingIgnoreCase(search); - if (!bookSeries.isEmpty()) - model.addAttribute("series", bookSeries); - model.addAttribute("isSeries", true); - } - - if (author != null){ - List authors = authorRepository.findByAuthorNameContainingIgnoreCase(search); - if (!authors.isEmpty()) - model.addAttribute("authors", authors); - model.addAttribute("isAuthor", true); - } + if (title != null && title) + model.addAttribute("books", booksRepository.findByTitleContainingIgnoreCase(search)); + + if (series != null && series) + model.addAttribute("series", booksRepository.findBySeriesContainingIgnoreCase(search)); + + if (author != null && author) + model.addAttribute("authors", authorRepository.findByAuthorNameContainingIgnoreCase(search)); return "search"; } - } diff --git a/src/main/java/ru/redrise/marinesco/security/AdministatorAddUserForm.java b/src/main/java/ru/redrise/marinesco/security/AdministratorAddUserForm.java similarity index 96% rename from src/main/java/ru/redrise/marinesco/security/AdministatorAddUserForm.java rename to src/main/java/ru/redrise/marinesco/security/AdministratorAddUserForm.java index 669d6d5..5deabbd 100644 --- a/src/main/java/ru/redrise/marinesco/security/AdministatorAddUserForm.java +++ b/src/main/java/ru/redrise/marinesco/security/AdministratorAddUserForm.java @@ -12,7 +12,7 @@ import ru.redrise.marinesco.User; //TODO: refactor along with RegistrationForm.java @Data -public class AdministatorAddUserForm { +public class AdministratorAddUserForm { @NotNull @Size(min=3, max=32, message="Username must be at least 3 characters long. Should not exceed 32 characters.") diff --git a/src/main/java/ru/redrise/marinesco/security/ManageUsersController.java b/src/main/java/ru/redrise/marinesco/security/ManageUsersController.java index 8bd39a3..b3bdc77 100644 --- a/src/main/java/ru/redrise/marinesco/security/ManageUsersController.java +++ b/src/main/java/ru/redrise/marinesco/security/ManageUsersController.java @@ -47,7 +47,7 @@ public class ManageUsersController { @ModelAttribute public void addTitle(Model model) { model.addAttribute("header_text", "Manage users"); - model.addAttribute("administatorAddUserForm", new AdministatorAddUserForm()); + model.addAttribute("administratorAddUserForm", new AdministratorAddUserForm()); } @ModelAttribute @@ -103,7 +103,7 @@ public class ManageUsersController { } @PostMapping - public String processNewUser(@Valid AdministatorAddUserForm form, Errors errors, Model model) { + public String processNewUser(@Valid AdministratorAddUserForm form, Errors errors, Model model) { if (userRepository.findByUsername(form.getUsername()) != null) { model.addAttribute("loginOccupied", "Login already in use. Please choose another one"); return "manage_users"; diff --git a/src/main/resources/templates/manage_users.html b/src/main/resources/templates/manage_users.html index 1e49b7e..19f343a 100644 --- a/src/main/resources/templates/manage_users.html +++ b/src/main/resources/templates/manage_users.html @@ -44,7 +44,7 @@
Add user -
+ pew Error