de.fatalix.bookery.bl.WatchListService.java Source code

Java tutorial

Introduction

Here is the source code for de.fatalix.bookery.bl.WatchListService.java

Source

/*
 * Copyright (c) 2016 Felix Husse under MIT License
 * see LICENSE file
 */
package de.fatalix.bookery.bl;

import de.fatalix.bookery.SolrSearchUtil;
import de.fatalix.bookery.bl.dao.WatchListDAO;
import de.fatalix.bookery.bl.model.AppUser;
import de.fatalix.bookery.bl.model.WatchList;
import de.fatalix.bookery.solr.model.BookEntry;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import javax.ejb.Stateless;
import javax.inject.Inject;
import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.SolrServerException;

/**
 *
 * @author felix.husse
 */
@Stateless
public class WatchListService {

    @Inject
    private WatchListDAO watchListDAO;
    @Inject
    private AppUserService userService;
    @Inject
    private BookService bookService;

    public List<WatchList> getUserWatchList(String username) {
        return watchListDAO.findByUserName(username);
    }

    public void addToWatchList(String username, String bookID) {
        AppUser appUser = userService.getAppUser(username);

        WatchList watchList = new WatchList();
        watchList.setBookId(bookID);
        watchList.setUser(appUser);
        watchList.setWatchDate(new Date());

        watchListDAO.save(watchList);
    }

    public boolean isOnWatchList(String username, String bookID) {
        return watchListDAO.findByUserNameAndBookID(username, bookID) != null;
    }

    public void removeFromWatchList(String username, String bookID) {
        if (isOnWatchList(username, bookID)) {
            removeFromWatchList(watchListDAO.findByUserNameAndBookID(username, bookID));
        }
    }

    public void removeFromWatchList(WatchList watchList) {
        watchListDAO.delete(watchList.getId());
    }

    public List<BookEntry> getAllBooks(List<WatchList> watchList) throws SolrServerException {
        if (watchList.isEmpty()) {
            return Collections.EMPTY_LIST;
        }
        String searchString = "id:(";
        for (WatchList watchListItem : watchList) {
            searchString = searchString + "\"" + watchListItem.getBookId() + "\",";
        }
        searchString = searchString.substring(0, searchString.length() - 1) + ")";

        SolrQuery query = new SolrQuery();
        query.setRows(20);
        query.setStart(0);
        query.setQuery(searchString);
        query.setSort(SolrQuery.SortClause.asc("author"));
        query.setFields(SolrSearchUtil.DEFAULT_FIELDS);

        return bookService.searchBooks(query).getBeans(BookEntry.class);

    }

    public SolrQuery getSolrQuery(List<WatchList> watchList) {
        if (watchList.isEmpty()) {
            return null;
        }
        String searchString = "id:(";
        for (WatchList watchListItem : watchList) {
            searchString = searchString + "\"" + watchListItem.getBookId() + "\",";
        }
        searchString = searchString.substring(0, searchString.length() - 1) + ")";

        SolrQuery query = new SolrQuery();
        query.setRows(20);
        query.setStart(0);
        query.setQuery(searchString);
        query.setSort(SolrQuery.SortClause.asc("author"));
        query.setFields(SolrSearchUtil.DEFAULT_FIELDS);
        return query;
    }
}