improve flagging
This commit is contained in:
parent
db572e6f2b
commit
a8c5515c11
@ -8,17 +8,21 @@ import java.util.List;
|
|||||||
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.data.domain.Page;
|
import org.springframework.data.domain.Page;
|
||||||
|
import org.springframework.data.domain.PageImpl;
|
||||||
import org.springframework.data.domain.PageRequest;
|
import org.springframework.data.domain.PageRequest;
|
||||||
import org.springframework.data.domain.Sort;
|
import org.springframework.data.domain.Sort;
|
||||||
import org.springframework.data.domain.Sort.Order;
|
import org.springframework.data.domain.Sort.Order;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import com.querydsl.core.types.OrderSpecifier;
|
||||||
|
import com.querydsl.jpa.impl.JPAQuery;
|
||||||
import com.querydsl.jpa.impl.JPAQueryFactory;
|
import com.querydsl.jpa.impl.JPAQueryFactory;
|
||||||
|
|
||||||
import de.bstly.board.model.Comment;
|
import de.bstly.board.model.Comment;
|
||||||
import de.bstly.board.model.FlaggedStatus;
|
import de.bstly.board.model.FlaggedStatus;
|
||||||
import de.bstly.board.model.QComment;
|
import de.bstly.board.model.QComment;
|
||||||
import de.bstly.board.model.QEntry;
|
import de.bstly.board.model.QEntry;
|
||||||
|
import de.bstly.board.model.QFlag;
|
||||||
import de.bstly.board.model.QVote;
|
import de.bstly.board.model.QVote;
|
||||||
import de.bstly.board.model.Types;
|
import de.bstly.board.model.Types;
|
||||||
import de.bstly.board.model.VoteType;
|
import de.bstly.board.model.VoteType;
|
||||||
@ -44,6 +48,7 @@ public class CommentManager {
|
|||||||
|
|
||||||
private QComment qComment = QComment.comment;
|
private QComment qComment = QComment.comment;
|
||||||
private QVote qVote = QVote.vote;
|
private QVote qVote = QVote.vote;
|
||||||
|
private QFlag qFlag = QFlag.flag;
|
||||||
private QEntry qEntry = QEntry.entry;
|
private QEntry qEntry = QEntry.entry;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -86,8 +91,14 @@ public class CommentManager {
|
|||||||
*/
|
*/
|
||||||
public Page<Comment> fetchFlagged(int page, int size, boolean asc) {
|
public Page<Comment> fetchFlagged(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 commentRepository.findAll(qComment.flaggedStatus.eq(FlaggedStatus.FLAGGED),
|
JPAQuery<Comment> query = jpaQueryFactory.selectFrom(qComment).leftJoin(qFlag)
|
||||||
PageRequest.of(page, size, sort));
|
.on(qComment.id.eq(qFlag.target)).where(qFlag.targetType.eq(Types.comment))
|
||||||
|
.groupBy(qFlag.target);
|
||||||
|
return new PageImpl<Comment>(query
|
||||||
|
.orderBy(new OrderSpecifier<>(asc ? com.querydsl.core.types.Order.ASC
|
||||||
|
: com.querydsl.core.types.Order.DESC, qComment.created))
|
||||||
|
.limit(size).offset(page * size).fetch(), PageRequest.of(page, size, sort),
|
||||||
|
query.fetchCount());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -193,6 +204,11 @@ public class CommentManager {
|
|||||||
flagManager.get(username, comment.getId(), Types.comment) != null);
|
flagManager.get(username, comment.getId(), Types.comment) != null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!ignore.contains("flagged")) {
|
||||||
|
comment.getMetadata().put("flagged",
|
||||||
|
flagManager.getFlags(comment.getId(), Types.comment) > 0);
|
||||||
|
}
|
||||||
|
|
||||||
if (!ignore.contains("entry")) {
|
if (!ignore.contains("entry")) {
|
||||||
comment.getMetadata().put("entry", jpaQueryFactory.selectFrom(qEntry)
|
comment.getMetadata().put("entry", jpaQueryFactory.selectFrom(qEntry)
|
||||||
.where(qEntry.id.eq(comment.getTarget())).select(qEntry.title).fetchOne());
|
.where(qEntry.id.eq(comment.getTarget())).select(qEntry.title).fetchOne());
|
||||||
|
@ -8,18 +8,22 @@ import java.util.List;
|
|||||||
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.data.domain.Page;
|
import org.springframework.data.domain.Page;
|
||||||
|
import org.springframework.data.domain.PageImpl;
|
||||||
import org.springframework.data.domain.PageRequest;
|
import org.springframework.data.domain.PageRequest;
|
||||||
import org.springframework.data.domain.Sort;
|
import org.springframework.data.domain.Sort;
|
||||||
import org.springframework.data.domain.Sort.Order;
|
import org.springframework.data.domain.Sort.Order;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
|
import com.querydsl.core.types.OrderSpecifier;
|
||||||
|
import com.querydsl.jpa.impl.JPAQuery;
|
||||||
|
import com.querydsl.jpa.impl.JPAQueryFactory;
|
||||||
|
|
||||||
import de.bstly.board.model.Bookmarks;
|
import de.bstly.board.model.Bookmarks;
|
||||||
import de.bstly.board.model.Entry;
|
import de.bstly.board.model.Entry;
|
||||||
import de.bstly.board.model.EntryStatus;
|
import de.bstly.board.model.EntryStatus;
|
||||||
import de.bstly.board.model.FlaggedStatus;
|
|
||||||
import de.bstly.board.model.QEntry;
|
import de.bstly.board.model.QEntry;
|
||||||
|
import de.bstly.board.model.QFlag;
|
||||||
import de.bstly.board.model.QVote;
|
import de.bstly.board.model.QVote;
|
||||||
import de.bstly.board.model.RankedEntry;
|
import de.bstly.board.model.RankedEntry;
|
||||||
import de.bstly.board.model.Types;
|
import de.bstly.board.model.Types;
|
||||||
@ -47,10 +51,12 @@ public class EntryManager {
|
|||||||
private SettingsManager settingsManager;
|
private SettingsManager settingsManager;
|
||||||
@Autowired
|
@Autowired
|
||||||
private FlagManager flagManager;
|
private FlagManager flagManager;
|
||||||
|
@Autowired
|
||||||
|
private JPAQueryFactory jpaQueryFactory;
|
||||||
|
|
||||||
private QEntry qEntry = QEntry.entry;
|
private QEntry qEntry = QEntry.entry;
|
||||||
|
|
||||||
private QVote qVote = QVote.vote;
|
private QVote qVote = QVote.vote;
|
||||||
|
private QFlag qFlag = QFlag.flag;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Fetch by ranking.
|
* Fetch by ranking.
|
||||||
@ -114,8 +120,14 @@ public class EntryManager {
|
|||||||
*/
|
*/
|
||||||
public Page<Entry> fetchFlagged(int page, int size, boolean asc) {
|
public Page<Entry> fetchFlagged(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.flaggedStatus.ne(FlaggedStatus.NORMAL),
|
JPAQuery<Entry> query = jpaQueryFactory.selectFrom(qEntry).leftJoin(qFlag)
|
||||||
PageRequest.of(page, size, sort));
|
.on(qEntry.id.eq(qFlag.target)).where(qFlag.targetType.eq(Types.entry))
|
||||||
|
.groupBy(qFlag.target);
|
||||||
|
return new PageImpl<Entry>(query
|
||||||
|
.orderBy(new OrderSpecifier<>(asc ? com.querydsl.core.types.Order.ASC
|
||||||
|
: com.querydsl.core.types.Order.DESC, qEntry.created))
|
||||||
|
.limit(size).offset(page * size).fetch(), PageRequest.of(page, size, sort),
|
||||||
|
query.fetchCount());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -208,6 +220,11 @@ public class EntryManager {
|
|||||||
flagManager.get(username, entry.getId(), Types.entry) != null);
|
flagManager.get(username, entry.getId(), Types.entry) != null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!ignore.contains("flagged")) {
|
||||||
|
entry.getMetadata().put("flagged",
|
||||||
|
flagManager.getFlags(entry.getId(), Types.entry) > 0);
|
||||||
|
}
|
||||||
|
|
||||||
if (voteRepository
|
if (voteRepository
|
||||||
.exists(qVote.target.eq(entry.getId()).and(qVote.targetType.eq(Types.entry))
|
.exists(qVote.target.eq(entry.getId()).and(qVote.targetType.eq(Types.entry))
|
||||||
.and(qVote.author.equalsIgnoreCase(username)))) {
|
.and(qVote.author.equalsIgnoreCase(username)))) {
|
||||||
|
@ -104,6 +104,9 @@ public class UserManager implements UserDetailsService, SmartInitializingSinglet
|
|||||||
/*
|
/*
|
||||||
* @see org.springframework.security.core.userdetails.UserDetailsService#loadUserByUsername(java.lang.String)
|
* @see org.springframework.security.core.userdetails.UserDetailsService#loadUserByUsername(java.lang.String)
|
||||||
*/
|
*/
|
||||||
|
/*
|
||||||
|
* @see org.springframework.security.core.userdetails.UserDetailsService#loadUserByUsername(java.lang.String)
|
||||||
|
*/
|
||||||
/*
|
/*
|
||||||
* @see org.springframework.security.core.userdetails.UserDetailsService#
|
* @see org.springframework.security.core.userdetails.UserDetailsService#
|
||||||
* loadUserByUsername(java.lang.String)
|
* loadUserByUsername(java.lang.String)
|
||||||
@ -182,6 +185,9 @@ public class UserManager implements UserDetailsService, SmartInitializingSinglet
|
|||||||
/*
|
/*
|
||||||
* @see org.springframework.beans.factory.SmartInitializingSingleton#afterSingletonsInstantiated()
|
* @see org.springframework.beans.factory.SmartInitializingSingleton#afterSingletonsInstantiated()
|
||||||
*/
|
*/
|
||||||
|
/*
|
||||||
|
* @see org.springframework.beans.factory.SmartInitializingSingleton#afterSingletonsInstantiated()
|
||||||
|
*/
|
||||||
/*
|
/*
|
||||||
* @see org.springframework.beans.factory.SmartInitializingSingleton#
|
* @see org.springframework.beans.factory.SmartInitializingSingleton#
|
||||||
* afterSingletonsInstantiated()
|
* afterSingletonsInstantiated()
|
||||||
|
Loading…
Reference in New Issue
Block a user