bstlboard-back/src/main/java/de/bstly/board/businesslogic/BookmarksManager.java

116 lines
2.9 KiB
Java

/**
*
*/
package de.bstly.board.businesslogic;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.util.Assert;
import com.google.common.collect.Lists;
import de.bstly.board.model.Bookmarks;
import de.bstly.board.model.QBookmarks;
import de.bstly.board.model.QLocalUser;
import de.bstly.board.repository.BookmarksRepository;
import de.bstly.board.repository.EntryRepository;
import de.bstly.board.repository.LocalUserRepository;
/**
* The Class BookmarksManager.
*/
@Component
public class BookmarksManager {
@Autowired
private BookmarksRepository bookmarksRepository;
@Autowired
private EntryRepository entryRepository;
@Autowired
private LocalUserRepository localUserRepository;
private QLocalUser qLocalUser = QLocalUser.localUser;
private QBookmarks qBookmarks = QBookmarks.bookmarks;
/**
* Gets the.
*
* @param username the username
* @return the bookmarks
*/
public Bookmarks get(String username) {
return bookmarksRepository.findOne(qBookmarks.username.equalsIgnoreCase(username))
.orElse(new Bookmarks(username));
}
/**
* Checks for entry.
*
* @param username the username
* @param entryId the entry id
* @return true, if successful
*/
public boolean hasEntry(String username, Long entryId) {
return bookmarksRepository.exists(qBookmarks.username.equalsIgnoreCase(username)
.and(qBookmarks.entries.contains(entryId)));
}
/**
* Adds the entry.
*
* @param username the username
* @param entryId the entry id
*/
public void addEntry(String username, Long entryId) {
Assert.isTrue(entryRepository.existsById(entryId), "Invalid entryid");
Assert.isTrue(localUserRepository.exists(qLocalUser.username.equalsIgnoreCase(username)),
"Invalid username");
Bookmarks bookmarks = get(username);
if (bookmarks.getEntries() == null) {
bookmarks.setEntries(Lists.newArrayList());
}
if (!hasEntry(username, entryId)) {
bookmarks.getEntries().add(entryId);
bookmarksRepository.save(bookmarks);
}
}
/**
* Removes the entry.
*
* @param username the username
* @param entryId the entry id
*/
public void removeEntry(String username, Long entryId) {
Assert.isTrue(entryRepository.existsById(entryId), "Invalid entryid");
Assert.isTrue(localUserRepository.exists(qLocalUser.username.equalsIgnoreCase(username)),
"Invalid username");
Bookmarks bookmarks = get(username);
if (bookmarks.getEntries() == null) {
bookmarks.setEntries(Lists.newArrayList());
}
if (hasEntry(username, entryId)) {
bookmarks.getEntries().remove(entryId);
bookmarksRepository.save(bookmarks);
}
}
/**
* Removes the entry.
*
* @param entryId the entry id
*/
public void removeEntry(Long entryId) {
for (Bookmarks bookmarks : bookmarksRepository
.findAll(qBookmarks.entries.contains(entryId))) {
bookmarks.getEntries().remove(entryId);
bookmarksRepository.save(bookmarks);
}
}
}