Subversion Repositories bacoAlunos

Rev

Rev 215 | Blame | Compare with Previous | Last modification | View Log | RSS feed

package pt.estgp.estgweb.services.profile;

import pt.utl.ist.berserk.logic.serviceManager.IService;
import pt.estgp.estgweb.domain.views.UserView;
import pt.estgp.estgweb.domain.UserSession;
import pt.estgp.estgweb.domain.User;
import pt.estgp.estgweb.domain.UserImpl;
import pt.estgp.estgweb.domain.DomainObjectFactory;
import pt.estgp.estgweb.domain.dao.DaoFactory;
import pt.estgp.estgweb.services.expceptions.ServiceException;
import pt.estgp.estgweb.services.expceptions.FieldException;
import pt.estgp.estgweb.services.expceptions.AlreadyExistsException;
import org.apache.log4j.Logger;

public class EditUserService implements IService
{

    private CurriculumService curriculumService = new CurriculumService();
    private static final 1.5.0/docs/api/java/util/logging/Logger.html">Logger logger = 1.5.0/docs/api/java/util/logging/Logger.html">Logger.getLogger(EditUserService.class);

    public UserView run(UserView userView, 1.5.0/docs/api/java/lang/String.html">String userToCreate, UserSession userSession) throws ServiceException
    {
//        if (userView.getUsername() == null || user.getPassword() == null || user.getUsername().length() < 4 || user.getPassword().length() < 4)
//            throw new FieldException("bad.fields");


        User u = DaoFactory.getUserDaoImpl().loadByUsername(userView.getUsername());
        if (u != null && u.getId() != userView.getId())
        {
            throw new AlreadyExistsException(AlreadyExistsException.ALREADY_EXISTS_USERNAME);
        }
        u = DaoFactory.getUserDaoImpl().loadByUsername(userView.getEmail());
        if (u != null && u.getId() != userView.getId())
        {
            throw new AlreadyExistsException(AlreadyExistsException.ALREADY_EXISTS_EMAIL);
        }

        User user;
        if (userView.getId() > 0)
            user = DaoFactory.getUserDaoImpl().get(userView.getSerializable());
        else
        {
            try
            {
                user = (User) 1.5.0/docs/api/java/lang/Class.html">Class.forName(userToCreate).newInstance();
            }
            catch (1.5.0/docs/api/java/lang/InstantiationException.html">InstantiationException e)
            {
                logger.fatal(e,e);
                throw new ServiceException(e.toString(),e);
            }
            catch (1.5.0/docs/api/java/lang/IllegalAccessException.html">IllegalAccessException e)
            {
                logger.fatal(e,e);
                throw new ServiceException(e.toString(),e);
            }
            catch (1.5.0/docs/api/java/lang/ClassNotFoundException.html">ClassNotFoundException e)
            {
                logger.fatal(e,e);
                throw new ServiceException(e.toString(),e);
            }
            DaoFactory.getUserDaoImpl().save(user);
        }

        logger.info("Editing user:" + userView.getId());

        if (userSession.getUser() != null && userSession.getUser().isSuperuserOrAdmin())
        {
            userView.persistViewInObjectAdmin(user);
            logger.info("User Edited by:" + userSession.getUser().getName());
        }
        else
        {
            userView.persistViewInObjectUser(user);
            logger.info("User Edited by:" + userSession.getUser().getName());
        }
        return curriculumService.loadUserViewWithRecords(user.getId(),userSession);
    }
}