diff --git a/pom.xml b/pom.xml
index d545cdf..6f48003 100644
--- a/pom.xml
+++ b/pom.xml
@@ -15,7 +15,7 @@
marinesco
Home library
- 17
+ 21
@@ -84,6 +84,7 @@
org.postgresql
postgresql
+ 42.7.2
runtime
diff --git a/src/main/java/ru/redrise/marinesco/ShinyApplicationRunner.java b/src/main/java/ru/redrise/marinesco/ShinyApplicationRunner.java
index eb6cf00..4739bc4 100644
--- a/src/main/java/ru/redrise/marinesco/ShinyApplicationRunner.java
+++ b/src/main/java/ru/redrise/marinesco/ShinyApplicationRunner.java
@@ -18,9 +18,9 @@ import ru.redrise.marinesco.settings.ApplicationSettings;
@Slf4j
@Configuration
public class ShinyApplicationRunner {
- private UserRepository users;
- private RolesRepository roles;
- private ApplicationSettings settings;
+ private final UserRepository users;
+ private final RolesRepository roles;
+ private final ApplicationSettings settings;
public ShinyApplicationRunner(UserRepository users, RolesRepository roles, ApplicationSettings settings) {
this.users = users;
@@ -57,7 +57,7 @@ public class ShinyApplicationRunner {
List adminRoleOnlyAthority = roles.findByType(UserRole.Type.ADMIN);
- if (login == null || login.size() == 0 || password == null || password.size() == 0) {
+ if (login == null || login.isEmpty() || password == null || password.isEmpty()) {
log.warn("No administrator credentials provided, using defaults:\n * Login: root\n * Password: root\n Expected: --admin_login LOGIN --admin_password PASSWORD "); // TODO: Move into properties i18n
var adminUser = new User("root", encoder.encode("root"), "SuperAdmin", adminRoleOnlyAthority);
users.save(adminUser);
diff --git a/src/main/java/ru/redrise/marinesco/User.java b/src/main/java/ru/redrise/marinesco/User.java
index 704e50f..815a0c9 100644
--- a/src/main/java/ru/redrise/marinesco/User.java
+++ b/src/main/java/ru/redrise/marinesco/User.java
@@ -74,8 +74,8 @@ public class User implements UserDetails{
}
public boolean isAdmin(){
- for (UserRole athority : authorities){
- if (athority.getAuthority().equals("ROLE_ADMIN"))
+ for (UserRole authority : authorities){
+ if (authority.getAuthority().equals("ROLE_ADMIN"))
return true;
}
return false;
diff --git a/src/main/java/ru/redrise/marinesco/UserGenerified.java b/src/main/java/ru/redrise/marinesco/UserGenerified.java
index d3be26d..f9c8fc2 100644
--- a/src/main/java/ru/redrise/marinesco/UserGenerified.java
+++ b/src/main/java/ru/redrise/marinesco/UserGenerified.java
@@ -17,17 +17,17 @@ public class UserGenerified {
private String name;
private String displayName;
- private List athorities;
- private List athoritiesLost;
+ private List authorities;
+ private List authoritiesLost;
private String password;
public UserGenerified(User user, List allRolesList){
this.id = user.getId();
this.name = user.getUsername();
this.displayName = user.getDisplayname();
- this.athorities = user.getAuthorities();
- this.athoritiesLost = allRolesList.stream()
- .filter(element -> !athorities.contains(element))
+ this.authorities = user.getAuthorities();
+ this.authoritiesLost = allRolesList.stream()
+ .filter(element -> !authorities.contains(element))
.collect(Collectors.toList());
}
}
\ No newline at end of file
diff --git a/src/main/java/ru/redrise/marinesco/UserSettingsForm.java b/src/main/java/ru/redrise/marinesco/UserSettingsForm.java
index 0e76648..c726774 100644
--- a/src/main/java/ru/redrise/marinesco/UserSettingsForm.java
+++ b/src/main/java/ru/redrise/marinesco/UserSettingsForm.java
@@ -2,6 +2,7 @@ package ru.redrise.marinesco;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
+import jakarta.validation.constraints.Pattern;
import lombok.Data;
@Data
@@ -10,14 +11,11 @@ public class UserSettingsForm {
@NotNull
@NotEmpty(message = "Display name could not be blank")
public String displayname;
+ @Pattern(regexp = "^[a-zA-Z0-9!#+\"\\-<>%^&*$@]{8,32}$|^$",
+ message = "Password must be at least 8 characters long. Should not exceed 32 characters")
public String newPassword;
public boolean isNewPasswordSet(){
return ! newPassword.isBlank();
}
-
- public boolean isNewPasswordValid(){
- final int newPasswordLength = newPassword.length();
- return newPasswordLength > 8 && newPasswordLength < 32;
- }
}
diff --git a/src/main/java/ru/redrise/marinesco/Validators/LoginOccupiedConstraint.java b/src/main/java/ru/redrise/marinesco/Validators/LoginOccupiedConstraint.java
index e06157b..58effce 100644
--- a/src/main/java/ru/redrise/marinesco/Validators/LoginOccupiedConstraint.java
+++ b/src/main/java/ru/redrise/marinesco/Validators/LoginOccupiedConstraint.java
@@ -14,7 +14,7 @@ import jakarta.validation.Payload;
@Target({ElementType.METHOD, ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
public @interface LoginOccupiedConstraint {
- String message() default "Login already taken. Please use anohter one.";
+ String message() default "Login already taken. Please use another one";
Class>[] groups() default {};
Class extends Payload>[] payload() default {};
}
diff --git a/src/main/java/ru/redrise/marinesco/Validators/LoginOccupiedValidator.java b/src/main/java/ru/redrise/marinesco/Validators/LoginOccupiedValidator.java
index 547dbf9..7882e3e 100644
--- a/src/main/java/ru/redrise/marinesco/Validators/LoginOccupiedValidator.java
+++ b/src/main/java/ru/redrise/marinesco/Validators/LoginOccupiedValidator.java
@@ -12,9 +12,6 @@ public class LoginOccupiedValidator implements ConstraintValidator file.getName().endsWith(".inpx"))
.findFirst()
.get();
diff --git a/src/main/java/ru/redrise/marinesco/library/RepackZip.java b/src/main/java/ru/redrise/marinesco/library/RepackZip.java
index 88cdede..b937820 100644
--- a/src/main/java/ru/redrise/marinesco/library/RepackZip.java
+++ b/src/main/java/ru/redrise/marinesco/library/RepackZip.java
@@ -86,7 +86,7 @@ public class RepackZip {
}
} catch (Exception e) {
- log.error("{}", e);
+ log.error(e.toString());
}
log.info("Complete: {}", container.getName());
}
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 ebf7107..dcd2c3e 100644
--- a/src/main/java/ru/redrise/marinesco/library/settings/GenreSettingsController.java
+++ b/src/main/java/ru/redrise/marinesco/library/settings/GenreSettingsController.java
@@ -47,17 +47,14 @@ public class GenreSettingsController {
genreRepository.findAll()
.iterator()
- .forEachRemaining(element -> genres.add(element));
+ .forEachRemaining(genres::add);
return new GenresHolder(genres);
}
@PostMapping
public String getGenresUpdated(@ModelAttribute GenresHolder genreHolder) {
-
- for (Genre genre : genreHolder.getGenres())
- genreRepository.save(genre);
-
+ genreHolder.getGenres().forEach(genreRepository::save);
return "genres_settings";
}
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 bfd001a..ef27450 100644
--- a/src/main/java/ru/redrise/marinesco/library/settings/GenresUpload.java
+++ b/src/main/java/ru/redrise/marinesco/library/settings/GenresUpload.java
@@ -14,16 +14,15 @@ import ru.redrise.marinesco.library.Genre;
@Slf4j
public class GenresUpload {
- public static String upload(Resource resouce, long fileSize, GenreRepository repository) {
- try (BufferedReader reader = new BufferedReader(new InputStreamReader(resouce.getInputStream()))){
+ 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");
- String line;
-
- List genres = new ArrayList<>();
+ String line;
+ List genres = new ArrayList<>();
while ((line = reader.readLine()) != null) {
- String arr[] = line.split(":::");
+ String[] arr = line.split(":::");
if (arr.length != 2)
throw new Exception("Malformed file");
@@ -33,10 +32,10 @@ public class GenresUpload {
repository.saveAll(genres);
} catch (Exception e) {
- log.debug("{}", e);
+ log.debug(e.toString());
return "Upload failed: " + e.getMessage();
}
- return "Successfully uploaded: " + resouce.getFilename();
+ return "Successfully uploaded: " + resource.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 e99a9b5..296c5b9 100644
--- a/src/main/java/ru/redrise/marinesco/library/web/AuthorController.java
+++ b/src/main/java/ru/redrise/marinesco/library/web/AuthorController.java
@@ -1,6 +1,7 @@
package ru.redrise.marinesco.library.web;
import java.util.Collections;
+import java.util.Comparator;
import java.util.List;
import org.springframework.stereotype.Controller;
@@ -16,7 +17,7 @@ import ru.redrise.marinesco.library.Book;
@Controller
@RequestMapping("/author")
public class AuthorController {
- private AuthorRepository authorRepository;
+ private final AuthorRepository authorRepository;
public AuthorController(AuthorRepository authorRepository){
this.authorRepository = authorRepository;
@@ -33,10 +34,10 @@ public class AuthorController {
List books = author.getBooks();
- Collections.sort(books, (a, b) -> a.getSeries().compareTo(b.getSeries()));
+ books.sort(Comparator.comparing(Book::getSeries));
- model.addAttribute("author", author);
- model.addAttribute("books", books);
+ model.addAttribute("author", author)
+ .addAttribute("books", books);
return "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 9885d21..0958dbf 100644
--- a/src/main/java/ru/redrise/marinesco/library/web/BookController.java
+++ b/src/main/java/ru/redrise/marinesco/library/web/BookController.java
@@ -12,7 +12,7 @@ import ru.redrise.marinesco.library.Book;
@Controller
@RequestMapping("/book")
public class BookController {
- private BookRepository bookRepository;
+ private final BookRepository bookRepository;
public BookController(BookRepository bookRepository){
this.bookRepository = bookRepository;
@@ -25,6 +25,7 @@ public class BookController {
model.addAttribute("Error", "Not found");
return "book";
}
+
model.addAttribute("book", book);
return "book";
}
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 0991d43..6a7565c 100644
--- a/src/main/java/ru/redrise/marinesco/library/web/SearchController.java
+++ b/src/main/java/ru/redrise/marinesco/library/web/SearchController.java
@@ -19,8 +19,8 @@ import ru.redrise.marinesco.library.Book;
@RequestMapping("/search")
public class SearchController {
- private BookRepository inpEntryRepository;
- private AuthorRepository authorRepository;
+ private final BookRepository inpEntryRepository;
+ private final AuthorRepository authorRepository;
public SearchController(BookRepository bookRepository, AuthorRepository authorRepository){
this.inpEntryRepository = bookRepository;
@@ -34,7 +34,7 @@ public class SearchController {
@RequestParam(value = "author", required = false) Boolean author,
Model model) {
- if (search.trim().equals(""))
+ if (search.trim().isEmpty())
return "search";
model.addAttribute("searchPattern", search);
@@ -46,21 +46,21 @@ public class SearchController {
if (title != null){
List books = inpEntryRepository.findByTitleContainingIgnoreCase(search);
- if (books.size() != 0)
+ if (!books.isEmpty())
model.addAttribute("books", books);
model.addAttribute("isTitle", true);
}
if (series != null){
List bookSeries = inpEntryRepository.findBySeriesContainingIgnoreCase(search);
- if (bookSeries.size() != 0)
+ if (!bookSeries.isEmpty())
model.addAttribute("series", bookSeries);
model.addAttribute("isSeries", true);
}
if (author != null){
List authors = authorRepository.findByAuthorNameContainingIgnoreCase(search);
- if (authors.size() != 0)
+ if (!authors.isEmpty())
model.addAttribute("authors", authors);
model.addAttribute("isAuthor", true);
}
diff --git a/src/main/java/ru/redrise/marinesco/security/AthorityByIdConverter.java b/src/main/java/ru/redrise/marinesco/security/AthorityByIdConverter.java
index 98bd758..6f23ade 100644
--- a/src/main/java/ru/redrise/marinesco/security/AthorityByIdConverter.java
+++ b/src/main/java/ru/redrise/marinesco/security/AthorityByIdConverter.java
@@ -8,7 +8,7 @@ import ru.redrise.marinesco.data.RolesRepository;
@Component
public class AthorityByIdConverter implements Converter{
- private RolesRepository rolesRepo;
+ private final RolesRepository rolesRepo;
public AthorityByIdConverter(RolesRepository rolesRepo){
this.rolesRepo = rolesRepo;
diff --git a/src/main/java/ru/redrise/marinesco/security/ManageUsersController.java b/src/main/java/ru/redrise/marinesco/security/ManageUsersController.java
index a109bb1..8bd39a3 100644
--- a/src/main/java/ru/redrise/marinesco/security/ManageUsersController.java
+++ b/src/main/java/ru/redrise/marinesco/security/ManageUsersController.java
@@ -40,7 +40,7 @@ public class ManageUsersController {
}
@ModelAttribute(name = "userGenerified")
- public UserGenerified taco() {
+ public UserGenerified createUserGenerified() {
return new UserGenerified();
}
@@ -92,7 +92,7 @@ public class ManageUsersController {
if (user == null)
return "redirect:/settings/manage_users";
- user.setAuthorities(userGenerified.getAthorities());
+ user.setAuthorities(userGenerified.getAuthorities());
user.setDisplayname(userGenerified.getDisplayName());
String password = userGenerified.getPassword().trim();
if (! password.trim().isEmpty())
@@ -114,7 +114,7 @@ public class ManageUsersController {
}
User user = userRepository.save(form.toUser(passwordEncoder));
- log.info("Added user {} {} {}", user.getId(), user.getUsername(), user.getDisplayname(),
+ log.info("Added user {} {} {} {}", user.getId(), user.getUsername(), user.getDisplayname(),
user.getAuthorities().get(0));
// Reloads page therefore new records appears
return "redirect:/settings/manage_users";
diff --git a/src/main/java/ru/redrise/marinesco/security/RegistrationController.java b/src/main/java/ru/redrise/marinesco/security/RegistrationController.java
index 75578c6..51c370c 100644
--- a/src/main/java/ru/redrise/marinesco/security/RegistrationController.java
+++ b/src/main/java/ru/redrise/marinesco/security/RegistrationController.java
@@ -21,12 +21,12 @@ import ru.redrise.marinesco.settings.ApplicationSettings;
@Controller
@RequestMapping("/register")
public class RegistrationController {
- private UserRepository userRepo;
- private RolesRepository rolesRepo;
- private PasswordEncoder passwordEncoder;
- private HttpServletRequest request;
+ private final UserRepository userRepo;
+ private final RolesRepository rolesRepo;
+ private final PasswordEncoder passwordEncoder;
+ private final HttpServletRequest request;
- private ApplicationSettings applicationSettings;
+ private final ApplicationSettings applicationSettings;
public RegistrationController(UserRepository userRepo,
RolesRepository rolesRepo,
@@ -54,10 +54,10 @@ public class RegistrationController {
@PostMapping
public String postMethodName(@Valid RegistrationForm form, Errors errors, Model model) {
- if (!applicationSettings.isRegistrationAllowed())
+ if (! applicationSettings.isRegistrationAllowed())
return "redirect:/";
if (form.isPasswordsNotEqual()) {
- model.addAttribute("passwordsMismatch", "Passwords must be the same.");
+ model.addAttribute("passwordsMismatch", "Passwords must be the same");
return "registration";
}
if (userRepo.findByUsername(form.getUsername()) != null){
diff --git a/src/main/java/ru/redrise/marinesco/security/UserRole.java b/src/main/java/ru/redrise/marinesco/security/UserRole.java
index 40e9f18..b9232f7 100644
--- a/src/main/java/ru/redrise/marinesco/security/UserRole.java
+++ b/src/main/java/ru/redrise/marinesco/security/UserRole.java
@@ -29,14 +29,10 @@ public class UserRole implements GrantedAuthority{
if (type == null)
throw new UnsupportedOperationException("Unimplemented method 'getAuthority'");
- switch (type) {
- case USER:
- return "ROLE_USER";
- case ADMIN:
- return "ROLE_ADMIN";
- default:
- throw new UnsupportedOperationException("Unimplemented method 'getAuthority'");
- }
+ return switch (type) {
+ case USER -> "ROLE_USER";
+ case ADMIN -> "ROLE_ADMIN";
+ };
}
public enum Type{
diff --git a/src/main/java/ru/redrise/marinesco/security/UserSettingsController.java b/src/main/java/ru/redrise/marinesco/security/UserSettingsController.java
index f946069..e8bcb31 100644
--- a/src/main/java/ru/redrise/marinesco/security/UserSettingsController.java
+++ b/src/main/java/ru/redrise/marinesco/security/UserSettingsController.java
@@ -60,19 +60,12 @@ public class UserSettingsController {
Model model){
if (errors.hasErrors())
return "user_settings";
- if (! user.getDisplayname().equals(userSettingsForm.getDisplayname()))
- user.setDisplayname(userSettingsForm.getDisplayname());
- if (userSettingsForm.isNewPasswordSet()){
- if (userSettingsForm.isNewPasswordValid()){
- user.setPassword(passwordEncoder.encode(userSettingsForm.getNewPassword()));
- }
- else{
- model.addAttribute("password_incorrect", "Password must be at least 8 characters long. Should not exceed 32 characters.");
- return "user_settings";
- }
- }
- log.info("{} {}", userSettingsForm.getDisplayname(), userSettingsForm.getNewPassword());
+ user.setDisplayname(userSettingsForm.getDisplayname());
+
+ if (userSettingsForm.isNewPasswordSet())
+ user.setPassword(passwordEncoder.encode(userSettingsForm.getNewPassword()));
+
userRepo.save(user);
return "redirect:/profile/settings";
diff --git a/src/main/java/ru/redrise/marinesco/settings/SettingsController.java b/src/main/java/ru/redrise/marinesco/settings/SettingsController.java
index 23fc993..cfcb303 100644
--- a/src/main/java/ru/redrise/marinesco/settings/SettingsController.java
+++ b/src/main/java/ru/redrise/marinesco/settings/SettingsController.java
@@ -18,8 +18,8 @@ import ru.redrise.marinesco.library.RepackZip;
public class SettingsController {
private ApplicationSettings applicationSettings;
- private InpxScanner inpxScanner;
- private RepackZip repackZip;
+ private final InpxScanner inpxScanner;
+ private final RepackZip repackZip;
public SettingsController(ApplicationSettings applicationSettings,
InpxScanner inpxScanner,
diff --git a/src/main/java/ru/redrise/marinesco/web/RoleByIdConverter.java b/src/main/java/ru/redrise/marinesco/web/RoleByIdConverter.java
index ad05d56..6685185 100644
--- a/src/main/java/ru/redrise/marinesco/web/RoleByIdConverter.java
+++ b/src/main/java/ru/redrise/marinesco/web/RoleByIdConverter.java
@@ -9,7 +9,7 @@ import ru.redrise.marinesco.security.UserRole;
@Component
public class RoleByIdConverter implements Converter{
- private RolesRepository rolesRepository;
+ private final RolesRepository rolesRepository;
public RoleByIdConverter(RolesRepository rolesRepository){
this.rolesRepository = rolesRepository;
diff --git a/src/main/resources/templates/user_settings.html b/src/main/resources/templates/user_settings.html
index cf7bd9c..e0c1b79 100644
--- a/src/main/resources/templates/user_settings.html
+++ b/src/main/resources/templates/user_settings.html
@@ -22,10 +22,10 @@
- false
+ Error
-
+