PlayerSearchServiceImpl.java

package net.andresbustamante.yafoot.core.services.impl;

import net.andresbustamante.yafoot.commons.exceptions.ApplicationException;
import net.andresbustamante.yafoot.commons.exceptions.DatabaseException;
import net.andresbustamante.yafoot.commons.model.UserContext;
import net.andresbustamante.yafoot.core.dao.PlayerDao;
import net.andresbustamante.yafoot.core.exceptions.UnauthorisedUserException;
import net.andresbustamante.yafoot.core.model.Player;
import net.andresbustamante.yafoot.core.services.PlayerSearchService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

/**
 * @author andresbustamante
 */
@Service
public class PlayerSearchServiceImpl implements PlayerSearchService {

    private final PlayerDao playerDAO;

    public PlayerSearchServiceImpl(final PlayerDao playerDAO) {
        this.playerDAO = playerDAO;
    }

    @Override
    @Transactional(readOnly = true)
    public Player findPlayerByEmail(final String email, final UserContext context) throws ApplicationException {
        if (context != null && !context.getUsername().equals(email)) {
            throw new UnauthorisedUserException("User not allowed to search a different email");
        }

        return playerDAO.findPlayerByEmail(email);
    }

    @Override
    @Transactional(readOnly = true)
    public Player findPlayerById(final Integer id) throws DatabaseException {
        return playerDAO.findPlayerById(id);
    }
}