change userpages to views
This commit is contained in:
@@ -26,8 +26,8 @@ public class SettingsManager {
|
||||
private long FLAG_THRESH;
|
||||
@Value("${bstly.board.maxTags:3}")
|
||||
private int MAX_TAGS;
|
||||
@Value("${bstly.board.maxUserPage:10}")
|
||||
private long MAX_USER_PAGES;
|
||||
@Value("${bstly.board.maxViews:10}")
|
||||
private long MAX_VIEWS;
|
||||
|
||||
/**
|
||||
* Gets the gravity.
|
||||
@@ -97,7 +97,7 @@ public class SettingsManager {
|
||||
*
|
||||
* @return the max user pages
|
||||
*/
|
||||
public long getMaxUserPages() {
|
||||
return MAX_USER_PAGES;
|
||||
public long getMaxViews() {
|
||||
return MAX_VIEWS;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,164 +0,0 @@
|
||||
/**
|
||||
*
|
||||
*/
|
||||
package de.bstly.board.businesslogic;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.domain.Page;
|
||||
import org.springframework.data.domain.PageRequest;
|
||||
import org.springframework.data.domain.Sort;
|
||||
import org.springframework.data.domain.Sort.Direction;
|
||||
import org.springframework.data.domain.Sort.Order;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.util.Assert;
|
||||
|
||||
import de.bstly.board.model.QUserPage;
|
||||
import de.bstly.board.model.UserPage;
|
||||
import de.bstly.board.model.support.UserPageSorting;
|
||||
import de.bstly.board.repository.UserPageRepository;
|
||||
|
||||
/**
|
||||
* The Class UserPageManager.
|
||||
*/
|
||||
@Component
|
||||
public class UserPageManager {
|
||||
|
||||
@Autowired
|
||||
private UserPageRepository userPageRepository;
|
||||
private QUserPage qUserPage = QUserPage.userPage;
|
||||
|
||||
/**
|
||||
* Exists.
|
||||
*
|
||||
* @param username the username
|
||||
* @param name the name
|
||||
* @return true, if successful
|
||||
*/
|
||||
public boolean exists(String username, String name) {
|
||||
return userPageRepository
|
||||
.exists(qUserPage.username.equalsIgnoreCase(username).and(qUserPage.name.eq(name)));
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the.
|
||||
*
|
||||
* @param id the id
|
||||
* @return the user page
|
||||
*/
|
||||
public UserPage get(Long id) {
|
||||
return userPageRepository.findById(id).orElse(null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the.
|
||||
*
|
||||
* @param username the username
|
||||
* @param name the name
|
||||
* @return the user page
|
||||
*/
|
||||
public UserPage get(String username, String name) {
|
||||
return userPageRepository
|
||||
.findOne(qUserPage.username.equalsIgnoreCase(username).and(qUserPage.name.eq(name)))
|
||||
.orElse(null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Save.
|
||||
*
|
||||
* @param userPage the user page
|
||||
* @return the user page
|
||||
*/
|
||||
public UserPage save(UserPage userPage) {
|
||||
return userPageRepository.save(userPage);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the by user.
|
||||
*
|
||||
* @param username the username
|
||||
* @param page the page
|
||||
* @param size the size
|
||||
* @param sortBy the sort by
|
||||
* @param desc the desc
|
||||
* @return the by user
|
||||
*/
|
||||
public Page<UserPage> getByUser(String username, int page, int size, boolean desc) {
|
||||
return userPageRepository.findAll(qUserPage.username.equalsIgnoreCase(username),
|
||||
PageRequest.of(page, size, desc ? Sort.by(Order.desc("index"), Order.desc("name"))
|
||||
: Sort.by(Order.asc("index"), Order.asc("name"))));
|
||||
}
|
||||
|
||||
/**
|
||||
* Count by user.
|
||||
*
|
||||
* @param username the username
|
||||
* @return the long
|
||||
*/
|
||||
public long countByUser(String username) {
|
||||
return userPageRepository.count(qUserPage.username.equalsIgnoreCase(username));
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the public.
|
||||
*
|
||||
* @param username the username
|
||||
* @param page the page
|
||||
* @param size the size
|
||||
* @param sortBy the sort by
|
||||
* @param desc the desc
|
||||
* @return the public
|
||||
*/
|
||||
public Page<UserPage> getPublic(String username, int page, int size, String sortBy,
|
||||
boolean desc) {
|
||||
return userPageRepository.findAll(
|
||||
qUserPage.username.notEqualsIgnoreCase(username).and(qUserPage.publicPage.isTrue()),
|
||||
PageRequest.of(page, size, Sort.by(desc ? Direction.DESC : Direction.ASC, sortBy)));
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete.
|
||||
*
|
||||
* @param username the username
|
||||
* @param name the name
|
||||
*/
|
||||
public void delete(String username, String name) {
|
||||
Assert.isTrue(exists(username, name), "UserPage not found!");
|
||||
userPageRepository.delete(get(username, name));
|
||||
}
|
||||
|
||||
public void createDefault(String username) {
|
||||
if (!exists(username, "TOP")) {
|
||||
UserPage userPageTop = new UserPage();
|
||||
userPageTop.setName("TOP");
|
||||
userPageTop.setUsername(username);
|
||||
userPageTop.setSorting(UserPageSorting.TOP);
|
||||
userPageTop.setIndex(20);
|
||||
save(userPageTop);
|
||||
}
|
||||
if (!exists(username, "NEW")) {
|
||||
UserPage userPageNew = new UserPage();
|
||||
userPageNew.setName("NEW");
|
||||
userPageNew.setUsername(username);
|
||||
userPageNew.setSorting(UserPageSorting.NEW);
|
||||
userPageNew.setIndex(40);
|
||||
save(userPageNew);
|
||||
}
|
||||
if (!exists(username, "HOT")) {
|
||||
UserPage userPageHot = new UserPage();
|
||||
userPageHot.setName("HOT");
|
||||
userPageHot.setUsername(username);
|
||||
userPageHot.setSorting(UserPageSorting.HOT);
|
||||
userPageHot.setIndex(60);
|
||||
userPageHot.setDivider(true);
|
||||
save(userPageHot);
|
||||
}
|
||||
if (!exists(username, "LAST")) {
|
||||
UserPage userPageLast = new UserPage();
|
||||
userPageLast.setName("LAST");
|
||||
userPageLast.setUsername(username);
|
||||
userPageLast.setSorting(UserPageSorting.LAST);
|
||||
userPageLast.setIndex(80);
|
||||
save(userPageLast);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,163 @@
|
||||
/**
|
||||
*
|
||||
*/
|
||||
package de.bstly.board.businesslogic;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.domain.Page;
|
||||
import org.springframework.data.domain.PageRequest;
|
||||
import org.springframework.data.domain.Sort;
|
||||
import org.springframework.data.domain.Sort.Direction;
|
||||
import org.springframework.data.domain.Sort.Order;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.util.Assert;
|
||||
|
||||
import de.bstly.board.model.QView;
|
||||
import de.bstly.board.model.View;
|
||||
import de.bstly.board.model.support.ViewSorting;
|
||||
import de.bstly.board.repository.ViewRepository;
|
||||
|
||||
/**
|
||||
* The Class ViewManager.
|
||||
*/
|
||||
@Component
|
||||
public class ViewManager {
|
||||
|
||||
@Autowired
|
||||
private ViewRepository viewRepository;
|
||||
private QView qView = QView.view;
|
||||
|
||||
/**
|
||||
* Exists.
|
||||
*
|
||||
* @param username the username
|
||||
* @param name the name
|
||||
* @return true, if successful
|
||||
*/
|
||||
public boolean exists(String username, String name) {
|
||||
return viewRepository
|
||||
.exists(qView.username.equalsIgnoreCase(username).and(qView.name.eq(name)));
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the.
|
||||
*
|
||||
* @param id the id
|
||||
* @return the user page
|
||||
*/
|
||||
public View get(Long id) {
|
||||
return viewRepository.findById(id).orElse(null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the.
|
||||
*
|
||||
* @param username the username
|
||||
* @param name the name
|
||||
* @return the user page
|
||||
*/
|
||||
public View get(String username, String name) {
|
||||
return viewRepository
|
||||
.findOne(qView.username.equalsIgnoreCase(username).and(qView.name.eq(name)))
|
||||
.orElse(null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Save.
|
||||
*
|
||||
* @param view the user page
|
||||
* @return the user page
|
||||
*/
|
||||
public View save(View view) {
|
||||
return viewRepository.save(view);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the by user.
|
||||
*
|
||||
* @param username the username
|
||||
* @param page the page
|
||||
* @param size the size
|
||||
* @param sortBy the sort by
|
||||
* @param desc the desc
|
||||
* @return the by user
|
||||
*/
|
||||
public Page<View> getByUser(String username, int page, int size, boolean desc) {
|
||||
return viewRepository.findAll(qView.username.equalsIgnoreCase(username),
|
||||
PageRequest.of(page, size, desc ? Sort.by(Order.desc("index"), Order.desc("name"))
|
||||
: Sort.by(Order.asc("index"), Order.asc("name"))));
|
||||
}
|
||||
|
||||
/**
|
||||
* Count by user.
|
||||
*
|
||||
* @param username the username
|
||||
* @return the long
|
||||
*/
|
||||
public long countByUser(String username) {
|
||||
return viewRepository.count(qView.username.equalsIgnoreCase(username));
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the public.
|
||||
*
|
||||
* @param username the username
|
||||
* @param page the page
|
||||
* @param size the size
|
||||
* @param sortBy the sort by
|
||||
* @param desc the desc
|
||||
* @return the public
|
||||
*/
|
||||
public Page<View> getPublic(String username, int page, int size, String sortBy, boolean desc) {
|
||||
return viewRepository.findAll(
|
||||
qView.username.notEqualsIgnoreCase(username).and(qView.publicView.isTrue()),
|
||||
PageRequest.of(page, size, Sort.by(desc ? Direction.DESC : Direction.ASC, sortBy)));
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete.
|
||||
*
|
||||
* @param username the username
|
||||
* @param name the name
|
||||
*/
|
||||
public void delete(String username, String name) {
|
||||
Assert.isTrue(exists(username, name), "View not found!");
|
||||
viewRepository.delete(get(username, name));
|
||||
}
|
||||
|
||||
public void createDefault(String username) {
|
||||
if (!exists(username, "TOP")) {
|
||||
View viewTop = new View();
|
||||
viewTop.setName("TOP");
|
||||
viewTop.setUsername(username);
|
||||
viewTop.setSorting(ViewSorting.TOP);
|
||||
viewTop.setIndex(20);
|
||||
save(viewTop);
|
||||
}
|
||||
if (!exists(username, "NEW")) {
|
||||
View viewNew = new View();
|
||||
viewNew.setName("NEW");
|
||||
viewNew.setUsername(username);
|
||||
viewNew.setSorting(ViewSorting.NEW);
|
||||
viewNew.setIndex(40);
|
||||
save(viewNew);
|
||||
}
|
||||
if (!exists(username, "HOT")) {
|
||||
View viewHot = new View();
|
||||
viewHot.setName("HOT");
|
||||
viewHot.setUsername(username);
|
||||
viewHot.setSorting(ViewSorting.HOT);
|
||||
viewHot.setIndex(60);
|
||||
viewHot.setDivider(true);
|
||||
save(viewHot);
|
||||
}
|
||||
if (!exists(username, "LAST")) {
|
||||
View viewLast = new View();
|
||||
viewLast.setName("LAST");
|
||||
viewLast.setUsername(username);
|
||||
viewLast.setSorting(ViewSorting.LAST);
|
||||
viewLast.setIndex(80);
|
||||
save(viewLast);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -32,14 +32,14 @@ import com.google.common.collect.Lists;
|
||||
import de.bstly.board.businesslogic.EntryManager;
|
||||
import de.bstly.board.businesslogic.SettingsManager;
|
||||
import de.bstly.board.businesslogic.UserManager;
|
||||
import de.bstly.board.businesslogic.UserPageManager;
|
||||
import de.bstly.board.businesslogic.ViewManager;
|
||||
import de.bstly.board.businesslogic.VoteManager;
|
||||
import de.bstly.board.controller.model.EntryFilter;
|
||||
import de.bstly.board.controller.support.EntityResponseStatusException;
|
||||
import de.bstly.board.controller.support.RequestBodyErrors;
|
||||
import de.bstly.board.controller.validation.EntryValidator;
|
||||
import de.bstly.board.model.Entry;
|
||||
import de.bstly.board.model.UserPage;
|
||||
import de.bstly.board.model.View;
|
||||
import de.bstly.board.model.Vote;
|
||||
import de.bstly.board.model.support.EntryStatus;
|
||||
import de.bstly.board.model.support.EntryType;
|
||||
@@ -65,7 +65,7 @@ public class EntryController extends BaseController {
|
||||
@Autowired
|
||||
private SettingsManager settingsManager;
|
||||
@Autowired
|
||||
private UserPageManager userPageManager;
|
||||
private ViewManager viewManager;
|
||||
|
||||
/**
|
||||
* Fetch by user page.
|
||||
@@ -80,7 +80,7 @@ public class EntryController extends BaseController {
|
||||
*/
|
||||
@PreAuthorize("isAuthenticated()")
|
||||
@GetMapping("/{name}")
|
||||
public Page<Entry> fetchByUserPage(@PathVariable("name") String name,
|
||||
public Page<Entry> fetchByView(@PathVariable("name") String name,
|
||||
@RequestParam("user") Optional<String> usernameParameter,
|
||||
@RequestParam("page") Optional<Integer> pageParameter,
|
||||
@RequestParam("size") Optional<Integer> sizeParameter,
|
||||
@@ -92,10 +92,10 @@ public class EntryController extends BaseController {
|
||||
@RequestParam("asc") Optional<Boolean> ascParameter,
|
||||
@RequestParam("ignore") Optional<List<String>> ignoreParameter) {
|
||||
|
||||
UserPage userPage = userPageManager.get(usernameParameter.orElse(getCurrentUsername()),
|
||||
View view = viewManager.get(usernameParameter.orElse(getCurrentUsername()),
|
||||
name);
|
||||
|
||||
if (userPage == null || usernameParameter.isPresent() && !userPage.isPublicPage()) {
|
||||
if (view == null || usernameParameter.isPresent() && !view.isPublicView()) {
|
||||
throw new EntityResponseStatusException(HttpStatus.UNPROCESSABLE_ENTITY);
|
||||
}
|
||||
|
||||
@@ -107,12 +107,12 @@ public class EntryController extends BaseController {
|
||||
tagsParameter.orElse(null), excludedTagsParameter.orElse(null),
|
||||
typeParameter.orElse(null));
|
||||
|
||||
filter.setFixedTags(userPage.getTags());
|
||||
filter.setFixedExcludedTags(userPage.getExcludedTags());
|
||||
filter.setFixedTags(view.getTags());
|
||||
filter.setFixedExcludedTags(view.getExcludedTags());
|
||||
|
||||
Page<Entry> entries = null;
|
||||
|
||||
switch (userPage.getSorting()) {
|
||||
switch (view.getSorting()) {
|
||||
case TOP:
|
||||
entries = entryManager.fetchByRanking(getCurrentUsername(), filter, getGravity(),
|
||||
pageParameter.orElse(0), sizeParameter.orElse(settingsManager.getPageSize()),
|
||||
|
||||
@@ -37,7 +37,7 @@ public class SettingsController extends BaseController {
|
||||
settings.put("entryDelay", getEntryDelay());
|
||||
settings.put("commentDelay", getCommentDelay());
|
||||
settings.put("maxTags", settingsManager.getMaxTags());
|
||||
settings.put("maxUserPages", settingsManager.getMaxUserPages());
|
||||
settings.put("maxViews", settingsManager.getMaxViews());
|
||||
settings.put("defaultGravity", settingsManager.getGravity());
|
||||
settings.put("defaultPageSize", settingsManager.getPageSize());
|
||||
settings.put("defaultEntryDelay", settingsManager.getEntryDelay());
|
||||
|
||||
+32
-33
@@ -19,25 +19,25 @@ import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import de.bstly.board.businesslogic.SettingsManager;
|
||||
import de.bstly.board.businesslogic.UserPageManager;
|
||||
import de.bstly.board.businesslogic.ViewManager;
|
||||
import de.bstly.board.controller.support.EntityResponseStatusException;
|
||||
import de.bstly.board.controller.support.RequestBodyErrors;
|
||||
import de.bstly.board.controller.validation.UserPageValidator;
|
||||
import de.bstly.board.model.UserPage;
|
||||
import de.bstly.board.controller.validation.ViewValidator;
|
||||
import de.bstly.board.model.View;
|
||||
|
||||
/**
|
||||
* The Class UserPageController.
|
||||
* The Class ViewController.
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/userpages")
|
||||
public class UserPageController extends BaseController {
|
||||
@RequestMapping("/views")
|
||||
public class ViewController extends BaseController {
|
||||
|
||||
@Autowired
|
||||
private UserPageManager userPageManager;
|
||||
private ViewManager viewManager;
|
||||
@Autowired
|
||||
private SettingsManager settingsManager;
|
||||
@Autowired
|
||||
private UserPageValidator userPageValidator;
|
||||
private ViewValidator viewValidator;
|
||||
|
||||
/**
|
||||
* Gets the user pages.
|
||||
@@ -49,15 +49,15 @@ public class UserPageController extends BaseController {
|
||||
*/
|
||||
@PreAuthorize("isAuthenticated()")
|
||||
@GetMapping()
|
||||
public Page<UserPage> getUserPages(@RequestParam("page") Optional<Integer> pageParameter,
|
||||
public Page<View> getViews(@RequestParam("page") Optional<Integer> pageParameter,
|
||||
@RequestParam("size") Optional<Integer> sizeParameter,
|
||||
@RequestParam("desc") Optional<Boolean> descParameter) {
|
||||
|
||||
if (userPageManager.countByUser(getCurrentUsername()) == 0L) {
|
||||
userPageManager.createDefault(getCurrentUsername());
|
||||
if (viewManager.countByUser(getCurrentUsername()) == 0L) {
|
||||
viewManager.createDefault(getCurrentUsername());
|
||||
}
|
||||
|
||||
return userPageManager.getByUser(getCurrentUsername(), pageParameter.orElse(0),
|
||||
return viewManager.getByUser(getCurrentUsername(), pageParameter.orElse(0),
|
||||
sizeParameter.orElse(settingsManager.getPageSize()), descParameter.orElse(false));
|
||||
}
|
||||
|
||||
@@ -71,10 +71,10 @@ public class UserPageController extends BaseController {
|
||||
*/
|
||||
@PreAuthorize("isAuthenticated()")
|
||||
@GetMapping("/public")
|
||||
public Page<UserPage> getPublicUserPages(@RequestParam("page") Optional<Integer> pageParameter,
|
||||
public Page<View> getPublicViews(@RequestParam("page") Optional<Integer> pageParameter,
|
||||
@RequestParam("size") Optional<Integer> sizeParameter,
|
||||
@RequestParam("desc") Optional<Boolean> descParameter) {
|
||||
return userPageManager.getPublic(getCurrentUsername(), pageParameter.orElse(0),
|
||||
return viewManager.getPublic(getCurrentUsername(), pageParameter.orElse(0),
|
||||
sizeParameter.orElse(settingsManager.getPageSize()), "name",
|
||||
descParameter.orElse(false));
|
||||
}
|
||||
@@ -86,44 +86,43 @@ public class UserPageController extends BaseController {
|
||||
* @return the user page
|
||||
*/
|
||||
@PreAuthorize("isAuthenticated()")
|
||||
@GetMapping("/userpage/{name}")
|
||||
public UserPage getUserPage(@PathVariable("name") String name,
|
||||
@GetMapping("/view/{name}")
|
||||
public View getView(@PathVariable("name") String name,
|
||||
@RequestParam("user") Optional<String> usernameParameter) {
|
||||
UserPage userPage = userPageManager.get(usernameParameter.orElse(getCurrentUsername()),
|
||||
name);
|
||||
View view = viewManager.get(usernameParameter.orElse(getCurrentUsername()), name);
|
||||
|
||||
if (userPage == null || usernameParameter.isPresent() && !userPage.isPublicPage()) {
|
||||
if (view == null || usernameParameter.isPresent() && !view.isPublicView()) {
|
||||
throw new EntityResponseStatusException(HttpStatus.UNPROCESSABLE_ENTITY);
|
||||
}
|
||||
|
||||
return userPage;
|
||||
return view;
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates the or update.
|
||||
*
|
||||
* @param userPage the user page
|
||||
* @param view the user page
|
||||
* @return the user page
|
||||
*/
|
||||
@PreAuthorize("isAuthenticated()")
|
||||
@PostMapping("/userpage")
|
||||
public UserPage createOrUpdate(@RequestBody UserPage userPage) {
|
||||
userPage.setUsername(getCurrentUsername());
|
||||
@PostMapping("/view")
|
||||
public View createOrUpdate(@RequestBody View view) {
|
||||
view.setUsername(getCurrentUsername());
|
||||
|
||||
RequestBodyErrors bindingResult = new RequestBodyErrors(userPage);
|
||||
userPageValidator.validate(userPage, bindingResult);
|
||||
RequestBodyErrors bindingResult = new RequestBodyErrors(view);
|
||||
viewValidator.validate(view, bindingResult);
|
||||
|
||||
if (bindingResult.hasErrors()) {
|
||||
throw new EntityResponseStatusException(bindingResult.getAllErrors(),
|
||||
HttpStatus.UNPROCESSABLE_ENTITY);
|
||||
}
|
||||
|
||||
if (!userPageManager.exists(getCurrentUsername(), userPage.getName()) && userPageManager
|
||||
.countByUser(getCurrentUsername()) >= settingsManager.getMaxUserPages()) {
|
||||
if (!viewManager.exists(getCurrentUsername(), view.getName())
|
||||
&& viewManager.countByUser(getCurrentUsername()) >= settingsManager.getMaxViews()) {
|
||||
throw new EntityResponseStatusException(HttpStatus.UNPROCESSABLE_ENTITY);
|
||||
}
|
||||
|
||||
return userPageManager.save(userPage);
|
||||
return viewManager.save(view);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -132,13 +131,13 @@ public class UserPageController extends BaseController {
|
||||
* @param name the name
|
||||
*/
|
||||
@PreAuthorize("isAuthenticated()")
|
||||
@DeleteMapping("/userpage/{name}")
|
||||
public void deleteUserPage(@PathVariable("name") String name) {
|
||||
if (!userPageManager.exists(getCurrentUsername(), name)) {
|
||||
@DeleteMapping("/view/{name}")
|
||||
public void deleteView(@PathVariable("name") String name) {
|
||||
if (!viewManager.exists(getCurrentUsername(), name)) {
|
||||
throw new EntityResponseStatusException(HttpStatus.FORBIDDEN);
|
||||
}
|
||||
|
||||
userPageManager.delete(getCurrentUsername(), name);
|
||||
viewManager.delete(getCurrentUsername(), name);
|
||||
}
|
||||
|
||||
}
|
||||
+17
-17
@@ -10,25 +10,25 @@ import org.springframework.util.StringUtils;
|
||||
import org.springframework.validation.Errors;
|
||||
import org.springframework.validation.Validator;
|
||||
|
||||
import de.bstly.board.businesslogic.UserPageManager;
|
||||
import de.bstly.board.businesslogic.ViewManager;
|
||||
import de.bstly.board.controller.support.EntityResponseStatusException;
|
||||
import de.bstly.board.model.UserPage;
|
||||
import de.bstly.board.model.View;
|
||||
|
||||
/**
|
||||
* The Class UserPageValidator.
|
||||
* The Class ViewValidator.
|
||||
*/
|
||||
@Component
|
||||
public class UserPageValidator implements Validator {
|
||||
public class ViewValidator implements Validator {
|
||||
|
||||
@Autowired
|
||||
private UserPageManager userPageManager;
|
||||
private ViewManager viewManager;
|
||||
|
||||
/*
|
||||
* @see org.springframework.validation.Validator#supports(java.lang.Class)
|
||||
*/
|
||||
@Override
|
||||
public boolean supports(Class<?> clazz) {
|
||||
return clazz.isAssignableFrom(UserPage.class);
|
||||
return clazz.isAssignableFrom(View.class);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -37,34 +37,34 @@ public class UserPageValidator implements Validator {
|
||||
*/
|
||||
@Override
|
||||
public void validate(Object target, Errors errors) {
|
||||
UserPage userPage = (UserPage) target;
|
||||
View view = (View) target;
|
||||
|
||||
if (!StringUtils.hasText(userPage.getName())) {
|
||||
if (!StringUtils.hasText(view.getName())) {
|
||||
errors.rejectValue("name", "required");
|
||||
}
|
||||
|
||||
if ((userPage.getId() == null || userPage.getId().equals(0L))
|
||||
&& userPageManager.exists(userPage.getUsername(), userPage.getName())) {
|
||||
if ((view.getId() == null || view.getId().equals(0L))
|
||||
&& viewManager.exists(view.getUsername(), view.getName())) {
|
||||
errors.rejectValue("name", "ALREADY_EXISTS");
|
||||
}
|
||||
|
||||
if (userPage.getId() != null) {
|
||||
UserPage origUserPage = userPageManager.get(userPage.getId());
|
||||
if (origUserPage == null) {
|
||||
if (view.getId() != null) {
|
||||
View origView = viewManager.get(view.getId());
|
||||
if (origView == null) {
|
||||
errors.rejectValue("id", "INVALID");
|
||||
}
|
||||
|
||||
if (!origUserPage.getUsername().equals(userPage.getUsername())) {
|
||||
if (!origView.getUsername().equals(view.getUsername())) {
|
||||
throw new EntityResponseStatusException(HttpStatus.FORBIDDEN);
|
||||
}
|
||||
|
||||
UserPage other = userPageManager.get(userPage.getUsername(), userPage.getName());
|
||||
if (other != null && !other.getId().equals(userPage.getId())) {
|
||||
View other = viewManager.get(view.getUsername(), view.getName());
|
||||
if (other != null && !other.getId().equals(view.getId())) {
|
||||
errors.rejectValue("name", "ALREADY_EXISTS");
|
||||
}
|
||||
}
|
||||
|
||||
if (userPage.getSorting() == null) {
|
||||
if (view.getSorting() == null) {
|
||||
errors.rejectValue("sorting", "REQUIRED");
|
||||
}
|
||||
|
||||
+16
-20
@@ -22,15 +22,15 @@ import org.hibernate.annotations.LazyCollectionOption;
|
||||
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
|
||||
|
||||
import de.bstly.board.model.support.EntryType;
|
||||
import de.bstly.board.model.support.UserPageSorting;
|
||||
import de.bstly.board.model.support.ViewSorting;
|
||||
|
||||
/**
|
||||
* The Class UserPage.
|
||||
* The Class View.
|
||||
*/
|
||||
@Entity
|
||||
@Table(name = "user_pages")
|
||||
@Table(name = "views")
|
||||
@EntityListeners({ AuditingEntityListener.class })
|
||||
public class UserPage {
|
||||
public class View {
|
||||
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.AUTO)
|
||||
@@ -42,21 +42,21 @@ public class UserPage {
|
||||
private String username;
|
||||
@Enumerated(EnumType.STRING)
|
||||
@Column(name = "sorting", nullable = false)
|
||||
private UserPageSorting sorting;
|
||||
private ViewSorting sorting;
|
||||
@Column(name = "indexNumber")
|
||||
private int index = 99;
|
||||
@ElementCollection
|
||||
@LazyCollection(LazyCollectionOption.FALSE)
|
||||
@CollectionTable(name = "user_pages_tags")
|
||||
@CollectionTable(name = "views_tags")
|
||||
private List<String> tags;
|
||||
@ElementCollection
|
||||
@LazyCollection(LazyCollectionOption.FALSE)
|
||||
@CollectionTable(name = "user_pages_excluded_tags")
|
||||
@CollectionTable(name = "views_excluded_tags")
|
||||
private List<String> excludedTags;
|
||||
@Column(name = "entry_type", nullable = true)
|
||||
private EntryType entryType;
|
||||
@Column(name = "public", columnDefinition = "boolean default false")
|
||||
private boolean publicPage;
|
||||
private boolean publicView;
|
||||
@Column(name = "divider", columnDefinition = "boolean default false")
|
||||
private boolean divider;
|
||||
|
||||
@@ -119,7 +119,7 @@ public class UserPage {
|
||||
*
|
||||
* @return the sorting
|
||||
*/
|
||||
public UserPageSorting getSorting() {
|
||||
public ViewSorting getSorting() {
|
||||
return sorting;
|
||||
}
|
||||
|
||||
@@ -128,7 +128,7 @@ public class UserPage {
|
||||
*
|
||||
* @param sorting the new sorting
|
||||
*/
|
||||
public void setSorting(UserPageSorting sorting) {
|
||||
public void setSorting(ViewSorting sorting) {
|
||||
this.sorting = sorting;
|
||||
}
|
||||
|
||||
@@ -201,21 +201,17 @@ public class UserPage {
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if is public page.
|
||||
*
|
||||
* @return true, if is public page
|
||||
* @return the publicView
|
||||
*/
|
||||
public boolean isPublicPage() {
|
||||
return publicPage;
|
||||
public boolean isPublicView() {
|
||||
return publicView;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the public page.
|
||||
*
|
||||
* @param publicPage the new public page
|
||||
* @param publicView the publicView to set
|
||||
*/
|
||||
public void setPublicPage(boolean publicPage) {
|
||||
this.publicPage = publicPage;
|
||||
public void setPublicView(boolean publicView) {
|
||||
this.publicView = publicView;
|
||||
}
|
||||
|
||||
/**
|
||||
+2
-2
@@ -4,9 +4,9 @@
|
||||
package de.bstly.board.model.support;
|
||||
|
||||
/**
|
||||
* The Enum UserPageSorting.
|
||||
* The Enum ViewSorting.
|
||||
*/
|
||||
public enum UserPageSorting {
|
||||
public enum ViewSorting {
|
||||
|
||||
TOP, NEW, HOT, LAST
|
||||
}
|
||||
+4
-4
@@ -7,13 +7,13 @@ import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import org.springframework.data.querydsl.QuerydslPredicateExecutor;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
import de.bstly.board.model.UserPage;
|
||||
import de.bstly.board.model.View;
|
||||
|
||||
/**
|
||||
* The Interface UserPageRepository.
|
||||
* The Interface ViewRepository.
|
||||
*/
|
||||
@Repository
|
||||
public interface UserPageRepository
|
||||
extends JpaRepository<UserPage, Long>, QuerydslPredicateExecutor<UserPage> {
|
||||
public interface ViewRepository
|
||||
extends JpaRepository<View, Long>, QuerydslPredicateExecutor<View> {
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user