MentaTutorials

Rev

Rev 19 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

package org.menta.service.impl;

import org.menta.dao.UserDAO;
import org.menta.exception.LoginException;
import org.menta.exception.LoginException.Type;
import org.menta.model.User;
import org.menta.service.UserService;
import org.mentawai.mail.Letter;
import org.mentawai.mail.SimpleEmail;
import org.mentawai.mail.TextLetter;

/**
 *
 * Service that do some business logic before access DAO layer.
 *
 */

public class UserServiceImpl implements UserService {

        private UserDAO userDAO;
       
        public UserServiceImpl(UserDAO userDAO) {
                this.userDAO = userDAO;
        }
       
        @Override
        public User findByUsername(String username) {
                if(username == null) throw new IllegalArgumentException("Username cannot be null");
               
                return userDAO.findByUsername(username);
        }

        public User load(int id) {
                if(id < 1) return null;
               
                return userDAO.load(id);
        }

        @Override
        public void save(User u) {

                if(u.getUsername() == null || u.getUsername().isEmpty())
                        throw new IllegalStateException("Username cannot be null");
               
                if(u.getId() > 0) {
                        userDAO.update(u);
                       
                } else {
                        userDAO.insert(u);
                       
                        // Send email to any new user with password
                        sendWelcomeMail(u);
                }
               
        }

        private void sendWelcomeMail(User u) {
               
                Letter welcome = new TextLetter("welcome.txt");
                welcome.setAttribute("username", u.getUsername());
                welcome.setAttribute("password", u.getPassword());
               
                try {
               
                        String subject = welcome.getSubject(u.getLocale());
                        String body = welcome.getText(u.getLocale());
               
                        SimpleEmail.sendLater(u.getUsername(), u.getEmail(), subject, body);
                       
                } catch(Exception e) {
                       
                        System.err.println("Error sending email to: " + u.getEmail());
                       
                        e.printStackTrace();
                }
               
        }

       
        @Override
        public User login(User user) throws LoginException {
               
                User userFinded = userDAO.findByUsername(user.getUsername());
               
                if(userFinded == null) {
                        throw new LoginException(Type.USERNAME_NOTFOUND);
                }
               
                if (!userFinded.getPassword().equals(user.getPassword())) {
                        throw new LoginException(Type.WRONG_PASSWORD);
                }
                       
                return userFinded;
        }
}