AccountServiceDefault.java 1.91 KB
package org.legrog.web.account;

import org.legrog.entities.*;

import javax.ejb.Stateless;
import javax.inject.Inject;
import javax.validation.constraints.NotNull;
import java.util.ArrayList;
import java.util.List;

@Stateless
public class AccountServiceDefault implements AccountService {
    @Inject
    AccountRepository accountRepository;

    @Inject
    AccountSearchRepository accountSearchRepository;

    /**
     * Le service s'appuie concrètement sur un ensemble de dépôts et sur le service auxiliaire SharedService.
     *
     * @param accountRepository
     * @param accountSearchRepository
     */
    @Inject
    public AccountServiceDefault(AccountRepository accountRepository,
                                   AccountSearchRepository accountSearchRepository) {
        this.accountRepository = accountRepository;
        this.accountSearchRepository = accountSearchRepository;
    }

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

    public void addUser(Account account) {
        accountRepository.save(account);
    }

    public List<Account> getAllUsers() {
        return accountRepository.findAll();
    }

    public Account findUserById(int id) {
        return accountRepository.findOne(new Integer(id));
    }

    public void updateUser(Account account) {
        accountRepository.save(account);
    }

    @Override
    public List<Account> search(@NotNull String string) throws SearchingException {
        return convert(accountSearchRepository.search(string));
    }

    @Override
    public List<Account> convert(List<IndexedAccount> indexedAccounts) {
        List<Integer> integers = new ArrayList<>(indexedAccounts.size());
        indexedAccounts.forEach(indexedAccount -> integers.add(indexedAccount.getUserId()));

        if (integers.size() > 0) {
            return accountRepository.findByUserIdIn(integers);
        }

        return new ArrayList<>();
    }
}