SearchView.java 2.63 KB
package org.legrog.web.xyz;

import org.legrog.entities.Account;
import org.legrog.entities.PublisherVersion;
import org.legrog.entities.SearchingException;
import org.legrog.web.account.AccountService;
import org.legrog.web.publisher.PublisherService;

import javax.enterprise.context.RequestScoped;
import javax.inject.Inject;
import javax.inject.Named;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

/**
 * View behind search.xhtml
 */
@Named
@RequestScoped
public class SearchView implements Serializable {
    List<PublisherVersion> publisherVersions = new ArrayList<>();
    List<Account> accounts = new ArrayList<>();
    String searchString = new String();

    transient PublisherService publisherService;
    transient AccountService accountService;


    /**
     * Uses PublisherService to access search repository
     *
     * @param publisherService injected PublisherService
     * @param accountService injected AccountService
     */
    @Inject
    public SearchView(PublisherService publisherService, AccountService accountService) {
        this.publisherService = publisherService;
        this.accountService = accountService;
    }

    SearchView() {
        //no args constructor to make it proxyable
    }

    /**
     *
     * @return whether search with non-empty string has returned an empty result for publishers
     */
    public boolean publisherSearchEmpty() {
        return !searchString.isEmpty() && publisherVersions.isEmpty();
    }

    /**
     *
     * @return whether search with non-empty string has returned an empty result for accounts
     */
    public boolean accountSearchEmpty() {
        return !searchString.isEmpty() && accounts.isEmpty();
    }

    /**
     * Searches for all types included gere containing searchString
     */
    public void search() throws SearchingException {
        this.publisherVersions = publisherService.search(this.searchString);
        this.accounts = accountService.search(this.searchString);
    }
    /**
     * Sets view up according to availability of Id in stringId
     */

    public String getSearchString() {
        return searchString;
    }

    public void setSearchString(String searchString) {
        this.searchString = searchString;
    }

    public List<Account> getAccounts() {
        return accounts;
    }

    public void setAccounts(List<Account> accounts) {
        this.accounts = accounts;
    }

    public List<PublisherVersion> getPublisherVersions() {
        return publisherVersions;
    }

    public void setPublisherVersions(List<PublisherVersion> publisherVersions) {
        this.publisherVersions = publisherVersions;
    }
}