Subversion Repositories bacoAlunos

Rev

Rev 156 | 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 org.apache.log4j.Logger;

public class EditUserService implements IService
{

    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 User run(UserView userView, 1.5.0/docs/api/java/lang/String.html">String userToCreate, UserSession userSession) throws ServiceException
    {
        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()).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 user;
    }
}