package org.springmodules.feedxt.service;
import org.springmodules.feedxt.domain.FeedSubscription;
import org.springmodules.feedxt.domain.User;
import org.springmodules.feedxt.domain.repository.UserRepository;
import org.springmodules.feedxt.domain.support.SubscriptionAlreadyExistentException;
import org.springmodules.feedxt.domain.support.UserAlreadyExistentException;
import org.springmodules.feedxt.domain.support.UserNotExistentException;
/**
* {@link UserService} implementation.
*
* @author Sergio Bossa
*/
public class UserServiceImpl implements UserService {
private UserRepository userRepository;
public void signUpUserAccount(User user, String username, String password) throws UserAlreadyExistentException {
user.register(username, password);
this.userRepository.addUser(user);
}
public User getUserAccount(String username, String password) {
User user = this.userRepository.getUserByUsername(username);
if (user != null && user.matchPassword(password)) {
return user;
} else {
return null;
}
}
public boolean checkUserAccount(String username) {
User user = this.userRepository.getUserByUsername(username);
if (user != null) {
return true;
} else {
return false;
}
}
public void subscribeToFeed(User user, FeedSubscription subscription) throws SubscriptionAlreadyExistentException, UserNotExistentException {
if (this.userRepository.getUserByUsername(user.getUsername()) != null) {
user.subscribe(subscription);
this.userRepository.addUser(user);
} else {
throw new UserNotExistentException("User not found: " + user);
}
}
public boolean removeSubscriptionToFeed(User user, FeedSubscription subscription) throws UserNotExistentException {
if (this.userRepository.getUserByUsername(user.getUsername()) != null) {
boolean removed = user.unsubscribe(subscription);
if (removed) {
this.userRepository.addUser(user);
}
return removed;
} else {
throw new UserNotExistentException("User not found: " + user);
}
}
public FeedSubscription getUserSubscriptionByName(User user, String subscriptionName) throws UserNotExistentException {
if (this.userRepository.getUserByUsername(user.getUsername()) != null) {
FeedSubscription subscription = user.viewSubscriptionByName(subscriptionName);
return subscription;
} else {
throw new UserNotExistentException("User not found: " + user);
}
}
public UserRepository getUserRepository() {
return this.userRepository;
}
public void setUserRepository(UserRepository userRepository) {
this.userRepository = userRepository;
}
}