ignore + unvote karma

This commit is contained in:
_Bastler 2021-10-05 08:41:57 +02:00
parent f2de0e0ba3
commit 5c14fbff6b
7 changed files with 130 additions and 69 deletions

View File

@ -10,7 +10,7 @@
<properties> <properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<java.version>11</java.version> <java.version>11</java.version>
<revision>0.3.3-SNAPSHOT</revision> <revision>0.3.4-SNAPSHOT</revision>
</properties> </properties>
<parent> <parent>

View File

@ -147,9 +147,14 @@ public class CommentManager {
ignore.addAll(comment.getMetadata().keySet()); ignore.addAll(comment.getMetadata().keySet());
if (!ignore.contains("author")) {
comment.getMetadata().put("author", comment.getAuthor());
}
if (!ignore.contains("comments")) { if (!ignore.contains("comments")) {
comment.getMetadata().put("comments", count(comment.getTarget(), comment.getId())); comment.getMetadata().put("comments", count(comment.getTarget(), comment.getId()));
} }
if (!ignore.contains("points")) { if (!ignore.contains("points")) {
comment.getMetadata().put("points", comment.getMetadata().put("points",
voteManager.getPoints(comment.getId(), Types.comment)); voteManager.getPoints(comment.getId(), Types.comment));

View File

@ -47,16 +47,16 @@ public class EntryManager {
private QVote qVote = QVote.vote; private QVote qVote = QVote.vote;
@Value("${bstly.board.ranking.gravity:1.8}") @Value("${bstly.board.unvoteThresh:10}")
private double GRAVITY; private long UNVOTE_THRESH;
/** /**
* Fetch by ranking. * Fetch by ranking.
* *
* @param date the date * @param date the date
* @param gravity the gravity * @param gravity the gravity
* @param page the page * @param page the page
* @param size the size * @param size the size
* @return the page * @return the page
*/ */
public Page<RankedEntry> fetchByRanking(Instant date, double gravity, int page, int size) { public Page<RankedEntry> fetchByRanking(Instant date, double gravity, int page, int size) {
@ -80,15 +80,16 @@ public class EntryManager {
* Fetch by user. * Fetch by user.
* *
* @param username the username * @param username the username
* @param date the date * @param date the date
* @param page the page * @param page the page
* @param size the size * @param size the size
* @param asc the asc * @param asc the asc
* @return the page * @return the page
*/ */
public Page<Entry> fetchByUser(String username, Instant date, int page, int size, boolean asc) { public Page<Entry> fetchByUser(String username, Instant date, int page, int size, boolean asc) {
Sort sort = Sort.by(asc ? Order.asc("created") : Order.desc("created")); Sort sort = Sort.by(asc ? Order.asc("created") : Order.desc("created"));
return entryRepository.findAll(qEntry.author.equalsIgnoreCase(username).and(qEntry.created.before(date)), return entryRepository.findAll(
qEntry.author.equalsIgnoreCase(username).and(qEntry.created.before(date)),
PageRequest.of(page, size, sort)); PageRequest.of(page, size, sort));
} }
@ -96,8 +97,8 @@ public class EntryManager {
* Fetch by bookmarks. * Fetch by bookmarks.
* *
* @param username the username * @param username the username
* @param page the page * @param page the page
* @param size the size * @param size the size
* @return the page * @return the page
*/ */
public Page<Entry> fetchByBookmarks(String username, int page, int size) { public Page<Entry> fetchByBookmarks(String username, int page, int size) {
@ -115,39 +116,53 @@ public class EntryManager {
* Apply metadata. * Apply metadata.
* *
* @param username the username * @param username the username
* @param entry the entry * @param entry the entry
*/ */
public void applyMetadata(String username, Entry entry) { public void applyMetadata(String username, long karma, Entry entry, List<String> ignore) {
if (!entry.getMetadata().containsKey("comments")) {
ignore.addAll(entry.getMetadata().keySet());
if (!ignore.contains("comments")) {
entry.getMetadata().put("comments", commentManager.count(entry.getId())); entry.getMetadata().put("comments", commentManager.count(entry.getId()));
} }
if (!entry.getMetadata().containsKey("points")) { if (!ignore.contains("points")) {
entry.getMetadata().put("points", voteManager.getPoints(entry.getId(), Types.entry)); entry.getMetadata().put("points", voteManager.getPoints(entry.getId(), Types.entry));
} }
if (!entry.getMetadata().containsKey("bookmarked")) { if (!ignore.contains("bookmarked")) {
entry.getMetadata().put("bookmarked", entry.getMetadata().put("bookmarked",
bookmarksManager.hasEntry(username, entry.getId())); bookmarksManager.hasEntry(username, entry.getId()));
} }
if (!entry.getMetadata().containsKey("upvoted")) { if (!ignore.contains("upvoted")) {
entry.getMetadata().put("upvoted", entry.getMetadata().put("upvoted",
voteRepository.exists(qVote.target.eq(entry.getId()) voteRepository.exists(qVote.target.eq(entry.getId())
.and(qVote.targetType.eq(Types.entry)).and(qVote.type.eq(VoteType.up)) .and(qVote.targetType.eq(Types.entry)).and(qVote.type.eq(VoteType.up))
.and(qVote.author.equalsIgnoreCase(username)))); .and(qVote.author.equalsIgnoreCase(username))));
} }
if (!entry.getMetadata().containsKey("downvoted")) { if (!ignore.contains("downvoted")) {
entry.getMetadata().put("downvoted", entry.getMetadata().put("downvoted",
voteRepository.exists(qVote.target.eq(entry.getId()) voteRepository.exists(qVote.target.eq(entry.getId())
.and(qVote.targetType.eq(Types.entry)).and(qVote.type.eq(VoteType.down)) .and(qVote.targetType.eq(Types.entry)).and(qVote.type.eq(VoteType.down))
.and(qVote.author.equalsIgnoreCase(username)))); .and(qVote.author.equalsIgnoreCase(username))));
} }
if (!entry.getMetadata().containsKey("unvote")) { if (voteRepository
entry.getMetadata().put("unvote", voteRepository.exists(qVote.target.eq(entry.getId()) .exists(qVote.target.eq(entry.getId()).and(qVote.targetType.eq(Types.entry))
.and(qVote.targetType.eq(Types.entry)).and(qVote.author.equalsIgnoreCase(username)))); .and(qVote.author.equalsIgnoreCase(username)))) {
if (!ignore.contains("unvote")) {
entry.getMetadata().put("unvote", true);
}
} else {
if (!ignore.contains("vote")) {
entry.getMetadata().put("vote", true);
}
if (!ignore.contains("unvote") && karma >= UNVOTE_THRESH) {
entry.getMetadata().put("unvote", true);
}
} }
} }
@ -155,11 +170,12 @@ public class EntryManager {
* Apply metadata. * Apply metadata.
* *
* @param username the username * @param username the username
* @param entries the entries * @param entries the entries
*/ */
public void applyMetadata(String username, List<Entry> entries) { public void applyMetadata(String username, long karma, List<Entry> entries,
List<String> ignore) {
for (Entry entry : entries) { for (Entry entry : entries) {
applyMetadata(username, entry); applyMetadata(username, karma, entry, ignore);
} }
} }
@ -221,7 +237,7 @@ public class EntryManager {
/** /**
* Gets the user points. * Gets the user points.
* *
* @param entryId the entry id * @param entryId the entry id
* @param username the username * @param username the username
* @return the user points * @return the user points
*/ */

View File

@ -209,7 +209,7 @@ public class UserManager implements UserDetailsService, SmartInitializingSinglet
String locale = token.getPrincipal().getAttribute("locale"); String locale = token.getPrincipal().getAttribute("locale");
if (!StringUtils.hasText(locale)) { if (!StringUtils.hasText(locale)) {
locale = "en"; locale = "de";
} }
localUser.setLocale(locale); localUser.setLocale(locale);
@ -240,15 +240,23 @@ public class UserManager implements UserDetailsService, SmartInitializingSinglet
} }
if (!user.getMetadata().containsKey("points")) { if (!user.getMetadata().containsKey("points")) {
long points = 0; user.getMetadata().put("points", getKarma(user.getUsername()));
for (Entry entry : entryRepository
.findAll(qEntry.author.equalsIgnoreCase(user.getUsername()))) {
points += entryManager.getUserPoints(entry.getId(), user.getUsername());
}
user.getMetadata().put("points", points);
} }
} }
/**
*
* @param username
* @return
*/
public long getKarma(String username) {
long karma = 0;
for (Entry entry : entryRepository.findAll(qEntry.author.equalsIgnoreCase(username))) {
karma += entryManager.getUserPoints(entry.getId(), username);
}
return karma;
}
/** /**
* Save. * Save.
* *

View File

@ -3,6 +3,7 @@
*/ */
package de.bstly.board.controller; package de.bstly.board.controller;
import java.util.List;
import java.util.Optional; import java.util.Optional;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@ -18,8 +19,11 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import com.google.common.collect.Lists;
import de.bstly.board.businesslogic.BookmarksManager; import de.bstly.board.businesslogic.BookmarksManager;
import de.bstly.board.businesslogic.EntryManager; import de.bstly.board.businesslogic.EntryManager;
import de.bstly.board.businesslogic.UserManager;
import de.bstly.board.controller.support.EntityResponseStatusException; import de.bstly.board.controller.support.EntityResponseStatusException;
import de.bstly.board.model.Entry; import de.bstly.board.model.Entry;
@ -34,6 +38,8 @@ public class BookmarksController extends BaseController {
private BookmarksManager bookmarksManager; private BookmarksManager bookmarksManager;
@Autowired @Autowired
private EntryManager entryManager; private EntryManager entryManager;
@Autowired
private UserManager userManager;
@Value("${bstly.board.size:30}") @Value("${bstly.board.size:30}")
private int SIZE; private int SIZE;
@ -47,7 +53,8 @@ public class BookmarksController extends BaseController {
@PreAuthorize("isAuthenticated()") @PreAuthorize("isAuthenticated()")
@GetMapping() @GetMapping()
public Page<Entry> getEntries(@RequestParam("page") Optional<Integer> pageParameter, public Page<Entry> getEntries(@RequestParam("page") Optional<Integer> pageParameter,
@RequestParam("size") Optional<Integer> sizeParameter) { @RequestParam("size") Optional<Integer> sizeParameter,
@RequestParam("ignore") Optional<List<String>> ignoreParameter) {
if (sizeParameter.isPresent() && sizeParameter.get() > 100) { if (sizeParameter.isPresent() && sizeParameter.get() > 100) {
sizeParameter = Optional.of(100); sizeParameter = Optional.of(100);
@ -56,7 +63,9 @@ public class BookmarksController extends BaseController {
Page<Entry> entries = entryManager.fetchByBookmarks(getCurrentUsername(), Page<Entry> entries = entryManager.fetchByBookmarks(getCurrentUsername(),
pageParameter.orElse(0), sizeParameter.orElse(SIZE)); pageParameter.orElse(0), sizeParameter.orElse(SIZE));
entryManager.applyMetadata(getCurrentUsername(), entries.getContent()); List<String> ignore = ignoreParameter.orElse(Lists.newArrayList());
entryManager.applyMetadata(getCurrentUsername(), userManager.getKarma(getCurrentUsername()),
entries.getContent(), ignore);
return entries; return entries;
} }

View File

@ -51,7 +51,7 @@ public class CommentController extends BaseController {
@Value("${bstly.board.size:30}") @Value("${bstly.board.size:30}")
private int SIZE; private int SIZE;
@Value("${bstly.board.ranking.gravity:1.8}") @Value("${bstly.board.ranking.gravity:1.2}")
private double GRAVITY; private double GRAVITY;
/** /**
@ -72,12 +72,11 @@ public class CommentController extends BaseController {
@RequestParam("page") Optional<Integer> pageParameter, @RequestParam("page") Optional<Integer> pageParameter,
@RequestParam("size") Optional<Integer> sizeParameter, @RequestParam("size") Optional<Integer> sizeParameter,
@RequestParam("date") Optional<Instant> dateParameter, @RequestParam("date") Optional<Instant> dateParameter,
@RequestParam("gravity") Optional<Double> gravityParameter) { @RequestParam("gravity") Optional<Double> gravityParameter,
@RequestParam("ignore") Optional<List<String>> ignoreParameter) {
Page<Comment> comments = fetchByDate(target, parent, pageParameter, sizeParameter, Page<Comment> comments = fetchByDate(target, parent, pageParameter, sizeParameter,
dateParameter, Optional.of(false)); dateParameter, Optional.of(false), ignoreParameter);
List<String> ignore = Lists.newArrayList("entry");
commentManager.applyMetadata(getCurrentUsername(), comments.getContent(), ignore);
return comments; return comments;
} }
@ -99,11 +98,13 @@ public class CommentController extends BaseController {
@RequestParam("page") Optional<Integer> pageParameter, @RequestParam("page") Optional<Integer> pageParameter,
@RequestParam("size") Optional<Integer> sizeParameter, @RequestParam("size") Optional<Integer> sizeParameter,
@RequestParam("date") Optional<Instant> dateParameter, @RequestParam("date") Optional<Instant> dateParameter,
@RequestParam("desc") Optional<Boolean> descParameter) { @RequestParam("desc") Optional<Boolean> descParameter,
@RequestParam("ignore") Optional<List<String>> ignoreParameter) {
Page<Comment> comments = commentManager.fetchByDate(target, parent.orElse(null), Page<Comment> comments = commentManager.fetchByDate(target, parent.orElse(null),
dateParameter.orElse(Instant.now()), pageParameter.orElse(0), dateParameter.orElse(Instant.now()), pageParameter.orElse(0),
sizeParameter.orElse(SIZE), descParameter.orElse(false)); sizeParameter.orElse(SIZE), descParameter.orElse(false));
List<String> ignore = Lists.newArrayList("entry");
List<String> ignore = ignoreParameter.orElse(Lists.newArrayList("entry"));
commentManager.applyMetadata(getCurrentUsername(), comments.getContent(), ignore); commentManager.applyMetadata(getCurrentUsername(), comments.getContent(), ignore);
return comments; return comments;
} }
@ -126,12 +127,13 @@ public class CommentController extends BaseController {
@RequestParam("page") Optional<Integer> pageParameter, @RequestParam("page") Optional<Integer> pageParameter,
@RequestParam("size") Optional<Integer> sizeParameter, @RequestParam("size") Optional<Integer> sizeParameter,
@RequestParam("date") Optional<Instant> dateParameter, @RequestParam("date") Optional<Instant> dateParameter,
@RequestParam("asc") Optional<Boolean> ascParameter) { @RequestParam("asc") Optional<Boolean> ascParameter,
@RequestParam("ignore") Optional<List<String>> ignoreParameter) {
Page<Comment> comments = commentManager.fetchByUsername(username, parent.orElse(null), Page<Comment> comments = commentManager.fetchByUsername(username, parent.orElse(null),
dateParameter.orElse(Instant.now()), pageParameter.orElse(0), dateParameter.orElse(Instant.now()), pageParameter.orElse(0),
sizeParameter.orElse(SIZE), ascParameter.orElse(false)); sizeParameter.orElse(SIZE), ascParameter.orElse(false));
commentManager.applyMetadata(getCurrentUsername(), comments.getContent(), List<String> ignore = ignoreParameter.orElse(Lists.newArrayList());
Lists.newArrayList()); commentManager.applyMetadata(getCurrentUsername(), comments.getContent(), ignore);
return comments; return comments;
} }
@ -157,15 +159,16 @@ public class CommentController extends BaseController {
*/ */
@PreAuthorize("isAuthenticated()") @PreAuthorize("isAuthenticated()")
@GetMapping("/comment/{id}") @GetMapping("/comment/{id}")
public Comment getComment(@PathVariable("id") Long id) { public Comment getComment(@PathVariable("id") Long id,
@RequestParam("ignore") Optional<List<String>> ignoreParameter) {
Comment comment = commentManager.get(id); Comment comment = commentManager.get(id);
if (comment == null) { if (comment == null) {
throw new EntityResponseStatusException(HttpStatus.NOT_FOUND); throw new EntityResponseStatusException(HttpStatus.NOT_FOUND);
} }
commentManager.applyMetadata(getCurrentUsername(), comment, Lists.newArrayList()); List<String> ignore = ignoreParameter.orElse(Lists.newArrayList());
commentManager.applyMetadata(getCurrentUsername(), comment, ignore);
return comment; return comment;
} }
@ -177,7 +180,8 @@ public class CommentController extends BaseController {
*/ */
@PreAuthorize("isAuthenticated()") @PreAuthorize("isAuthenticated()")
@PostMapping @PostMapping
public Comment createComment(@RequestBody Comment comment) { public Comment createComment(@RequestBody Comment comment,
@RequestParam("ignore") Optional<List<String>> ignoreParameter) {
RequestBodyErrors bindingResult = new RequestBodyErrors(comment); RequestBodyErrors bindingResult = new RequestBodyErrors(comment);
commentValidator.validate(comment, bindingResult); commentValidator.validate(comment, bindingResult);
@ -197,7 +201,7 @@ public class CommentController extends BaseController {
vote.setAuthor(getCurrentUsername()); vote.setAuthor(getCurrentUsername());
voteManager.save(vote); voteManager.save(vote);
List<String> ignore = Lists.newArrayList("entry"); List<String> ignore = ignoreParameter.orElse(Lists.newArrayList("entry"));
commentManager.applyMetadata(getCurrentUsername(), comment, ignore); commentManager.applyMetadata(getCurrentUsername(), comment, ignore);
return comment; return comment;

View File

@ -4,6 +4,7 @@
package de.bstly.board.controller; package de.bstly.board.controller;
import java.time.Instant; import java.time.Instant;
import java.util.List;
import java.util.Optional; import java.util.Optional;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -21,7 +22,10 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import com.google.common.collect.Lists;
import de.bstly.board.businesslogic.EntryManager; import de.bstly.board.businesslogic.EntryManager;
import de.bstly.board.businesslogic.UserManager;
import de.bstly.board.businesslogic.VoteManager; import de.bstly.board.businesslogic.VoteManager;
import de.bstly.board.controller.support.EntityResponseStatusException; import de.bstly.board.controller.support.EntityResponseStatusException;
import de.bstly.board.controller.support.RequestBodyErrors; import de.bstly.board.controller.support.RequestBodyErrors;
@ -42,25 +46,25 @@ public class EntryController extends BaseController {
@Autowired @Autowired
private EntryManager entryManager; private EntryManager entryManager;
@Autowired
private UserManager userManager;
@Autowired @Autowired
private EntryValidator entryValidator; private EntryValidator entryValidator;
@Autowired @Autowired
private VoteManager voteManager; private VoteManager voteManager;
@Value("${bstly.board.size:30}") @Value("${bstly.board.size:30}")
private int SIZE; private int SIZE;
@Value("${bstly.board.ranking.gravity:1.8}") @Value("${bstly.board.ranking.gravity:1.2}")
private double GRAVITY; private double GRAVITY;
/** /**
* Fetch by ranking. * Fetch by ranking.
* *
* @param pageParameter the page parameter * @param pageParameter the page parameter
* @param sizeParameter the size parameter * @param sizeParameter the size parameter
* @param dateParameter the date parameter * @param dateParameter the date parameter
* @param gravityParameter the gravity parameter * @param gravityParameter the gravity parameter
* @return the page * @return the page
*/ */
@ -69,7 +73,8 @@ public class EntryController extends BaseController {
public Page<Entry> fetchByRanking(@RequestParam("page") Optional<Integer> pageParameter, public Page<Entry> fetchByRanking(@RequestParam("page") Optional<Integer> pageParameter,
@RequestParam("size") Optional<Integer> sizeParameter, @RequestParam("size") Optional<Integer> sizeParameter,
@RequestParam("date") Optional<Instant> dateParameter, @RequestParam("date") Optional<Instant> dateParameter,
@RequestParam("gravity") Optional<Double> gravityParameter) { @RequestParam("gravity") Optional<Double> gravityParameter,
@RequestParam("ignore") Optional<List<String>> ignoreParameter) {
if (sizeParameter.isPresent() && sizeParameter.get() > 100) { if (sizeParameter.isPresent() && sizeParameter.get() > 100) {
sizeParameter = Optional.of(100); sizeParameter = Optional.of(100);
@ -84,7 +89,9 @@ public class EntryController extends BaseController {
.collect(Collectors.toList()), .collect(Collectors.toList()),
entries.getPageable(), entries.getTotalElements()); entries.getPageable(), entries.getTotalElements());
entryManager.applyMetadata(getCurrentUsername(), transformed.getContent()); List<String> ignore = ignoreParameter.orElse(Lists.newArrayList());
entryManager.applyMetadata(getCurrentUsername(), userManager.getKarma(getCurrentUsername()),
transformed.getContent(), ignore);
return transformed; return transformed;
} }
@ -100,7 +107,8 @@ public class EntryController extends BaseController {
@GetMapping("/new") @GetMapping("/new")
public Page<Entry> fetchByDate(@RequestParam("page") Optional<Integer> pageParameter, public Page<Entry> fetchByDate(@RequestParam("page") Optional<Integer> pageParameter,
@RequestParam("size") Optional<Integer> sizeParameter, @RequestParam("size") Optional<Integer> sizeParameter,
@RequestParam("date") Optional<Instant> dateParameter) { @RequestParam("date") Optional<Instant> dateParameter,
@RequestParam("ignore") Optional<List<String>> ignoreParameter) {
if (sizeParameter.isPresent() && sizeParameter.get() > 100) { if (sizeParameter.isPresent() && sizeParameter.get() > 100) {
sizeParameter = Optional.of(100); sizeParameter = Optional.of(100);
@ -108,18 +116,20 @@ public class EntryController extends BaseController {
Page<Entry> entries = entryManager.fetchByDate(dateParameter.orElse(Instant.now()), Page<Entry> entries = entryManager.fetchByDate(dateParameter.orElse(Instant.now()),
pageParameter.orElse(0), sizeParameter.orElse(SIZE)); pageParameter.orElse(0), sizeParameter.orElse(SIZE));
entryManager.applyMetadata(getCurrentUsername(), entries.getContent()); List<String> ignore = ignoreParameter.orElse(Lists.newArrayList());
entryManager.applyMetadata(getCurrentUsername(), userManager.getKarma(getCurrentUsername()),
entries.getContent(), ignore);
return entries; return entries;
} }
/** /**
* Fetch by user. * Fetch by user.
* *
* @param username the username * @param username the username
* @param pageParameter the page parameter * @param pageParameter the page parameter
* @param sizeParameter the size parameter * @param sizeParameter the size parameter
* @param dateParameter the date parameter * @param dateParameter the date parameter
* @param ascParameter the asc parameter * @param ascParameter the asc parameter
* @return the page * @return the page
*/ */
@PreAuthorize("isAuthenticated()") @PreAuthorize("isAuthenticated()")
@ -128,7 +138,8 @@ public class EntryController extends BaseController {
@RequestParam("page") Optional<Integer> pageParameter, @RequestParam("page") Optional<Integer> pageParameter,
@RequestParam("size") Optional<Integer> sizeParameter, @RequestParam("size") Optional<Integer> sizeParameter,
@RequestParam("date") Optional<Instant> dateParameter, @RequestParam("date") Optional<Instant> dateParameter,
@RequestParam("asc") Optional<Boolean> ascParameter) { @RequestParam("asc") Optional<Boolean> ascParameter,
@RequestParam("ignore") Optional<List<String>> ignoreParameter) {
if (sizeParameter.isPresent() && sizeParameter.get() > 100) { if (sizeParameter.isPresent() && sizeParameter.get() > 100) {
sizeParameter = Optional.of(100); sizeParameter = Optional.of(100);
@ -137,7 +148,9 @@ public class EntryController extends BaseController {
Page<Entry> entries = entryManager.fetchByUser(username, Page<Entry> entries = entryManager.fetchByUser(username,
dateParameter.orElse(Instant.now()), pageParameter.orElse(0), dateParameter.orElse(Instant.now()), pageParameter.orElse(0),
sizeParameter.orElse(SIZE), ascParameter.orElse(false)); sizeParameter.orElse(SIZE), ascParameter.orElse(false));
entryManager.applyMetadata(getCurrentUsername(), entries.getContent()); List<String> ignore = ignoreParameter.orElse(Lists.newArrayList());
entryManager.applyMetadata(getCurrentUsername(), userManager.getKarma(getCurrentUsername()),
entries.getContent(), ignore);
return entries; return entries;
} }
@ -149,14 +162,17 @@ public class EntryController extends BaseController {
*/ */
@PreAuthorize("isAuthenticated()") @PreAuthorize("isAuthenticated()")
@GetMapping("/entry/{id}") @GetMapping("/entry/{id}")
public Entry getEntry(@PathVariable("id") Long id) { public Entry getEntry(@PathVariable("id") Long id,
@RequestParam("ignore") Optional<List<String>> ignoreParameter) {
Entry entry = entryManager.get(id); Entry entry = entryManager.get(id);
if (entry == null) { if (entry == null) {
throw new EntityResponseStatusException(HttpStatus.NOT_FOUND); throw new EntityResponseStatusException(HttpStatus.NOT_FOUND);
} }
entryManager.applyMetadata(getCurrentUsername(), entry); List<String> ignore = ignoreParameter.orElse(Lists.newArrayList());
entryManager.applyMetadata(getCurrentUsername(), userManager.getKarma(getCurrentUsername()),
entry, ignore);
return entry; return entry;
} }
@ -169,7 +185,8 @@ public class EntryController extends BaseController {
*/ */
@PreAuthorize("isAuthenticated()") @PreAuthorize("isAuthenticated()")
@PostMapping() @PostMapping()
public Entry createEntry(@RequestBody Entry entry) { public Entry createEntry(@RequestBody Entry entry,
@RequestParam("ignore") Optional<List<String>> ignoreParameter) {
RequestBodyErrors bindingResult = new RequestBodyErrors(entry); RequestBodyErrors bindingResult = new RequestBodyErrors(entry);
entryValidator.validate(entry, bindingResult); entryValidator.validate(entry, bindingResult);
@ -190,7 +207,9 @@ public class EntryController extends BaseController {
vote.setAuthor(getCurrentUsername()); vote.setAuthor(getCurrentUsername());
voteManager.save(vote); voteManager.save(vote);
entryManager.applyMetadata(getCurrentUsername(), entry); List<String> ignore = ignoreParameter.orElse(Lists.newArrayList());
entryManager.applyMetadata(getCurrentUsername(), userManager.getKarma(getCurrentUsername()),
entry, ignore);
return entry; return entry;
} }