Subversion Repositories bacoAlunos

Rev

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

package pt.estgp.estgweb.web.controllers.profile;

import java.io.Serializable;
import pt.estgp.estgweb.web.controllers.AddRolesController;
import pt.estgp.estgweb.web.utils.RequestUtils;
import pt.estgp.estgweb.web.UserSessionProxy;
import pt.estgp.estgweb.web.form.profile.ProfileForm;
import pt.estgp.estgweb.domain.User;
import pt.estgp.estgweb.domain.UserSessionImpl;
import pt.estgp.estgweb.domain.views.UserView;
import pt.estgp.estgweb.Globals;
import pt.utl.ist.berserk.logic.serviceManager.IServiceManager;
import pt.utl.ist.berserk.logic.serviceManager.ServiceManager;
import pt.utl.ist.berserk.logic.serviceManager.exceptions.FilterChainFailedException;
import org.apache.log4j.Logger;
import org.apache.struts.action.*;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.ServletException;
import java.util.List;
import java.util.ArrayList;
import pt.estgp.estgweb.web.form.AddRolesForm;

/**
 * @author Jorge Machado
 * @date 26/Fev/2008
 * @time 18:01:54
 * @see pt.estgp.estgweb.web
 */

public class ProfileController extends AddRolesController {

    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(ProfileController.class);
    private static final 1.5.0/docs/api/java/lang/String.html">String TARGET_ROLES_KEY = AddRolesForm.TARGET_ROLES_KEY;
   

    public ActionForward editUser(ActionMapping mapping,
                                  ActionForm form ,
                                  HttpServletRequest request,
                                  HttpServletResponse response)
            throws 1.5.0/docs/api/java/lang/Throwable.html">Throwable, ServletException {


        ProfileForm profileForm =(ProfileForm) form;
        UserView userView= profileForm.getUserView();
        try
        {
            UserSessionImpl userSession = (UserSessionImpl) UserSessionProxy.loadUserSession(request,response);
            userView.setUserRoles((List<String>) userSession.get(TARGET_ROLES_KEY));
            IServiceManager sm = ServiceManager.getInstance();
            1.5.0/docs/api/java/lang/String.html">String[] names = new 1.5.0/docs/api/java/lang/String.html">String[]{"object"};
            5+0%2Fdocs%2Fapi+Object">Object[] args = new 5+0%2Fdocs%2Fapi+Object">Object[]{userView};
            User user = (User) sm.execute(RequestUtils.getRequester(request, response),"EditUser",args,names);
            if(userSession.getUser().getId()==user.getId()){
                userSession.setUser(user);
                request.setAttribute(Globals.USER_SESSION_KEY,userSession);
                logger.info("Puting new user info in session:" + user.getId());                
            }
            addMessage(request,"profile.edited.sucess");
            return mapping.findForward("success");
        }
        catch(FilterChainFailedException e)
        {
            return mapping.findForward("error401");
        }
        catch (1.5.0/docs/api/java/lang/Throwable.html">Throwable e)
        {
            logger.error(e,e);
            throw e;
        }
    }

    public ActionForward changeProfile(ActionMapping mapping,
                                       ActionForm form ,
                                       HttpServletRequest request,
                                       HttpServletResponse response)
            throws 1.5.0/docs/api/java/lang/Throwable.html">Throwable, ServletException {
        try
        {
            ProfileForm pF = (ProfileForm) form;
            UserSessionImpl userSession = (UserSessionImpl) UserSessionProxy.loadUserSession(request,response);
            1.5.0/docs/api/java/lang/String.html">String id = request.getParameter("id");
            long userToLoad;

            if(id!=null)
                userToLoad=1.5.0/docs/api/java/lang/Long.html">Long.valueOf(id);
            else
                userToLoad=userSession.getUser().getId();


            IServiceManager sm = ServiceManager.getInstance();
            1.5.0/docs/api/java/lang/String.html">String[] names = new 1.5.0/docs/api/java/lang/String.html">String[]{"serializable"};
            5+0%2Fdocs%2Fapi+Object">Object[] args = new 5+0%2Fdocs%2Fapi+Object">Object[]{userToLoad};
            UserView uV = (UserView) sm.execute(RequestUtils.getRequester(request, response),"LoadUserById",args,names);
            pF.setUserView(uV);
            pF.setSelectedRoles(uV.getUserRoles());
            userSession.put(TARGET_ROLES_KEY, (1.5.0/docs/api/java/io/Serializable.html">Serializable) uV.getUserRoles());
            userSession.serialize(request,response);            
            return mapping.findForward("load");
        }
        catch(FilterChainFailedException e)
        {
            return mapping.findForward("error401");
        }
        catch (1.5.0/docs/api/java/lang/Throwable.html">Throwable e)
        {
            logger.error(e,e);
            throw e;
        }
    }

    public ActionForward search(ActionMapping mapping,
                                ActionForm form ,
                                HttpServletRequest request,
                                HttpServletResponse response)
            throws 1.5.0/docs/api/java/lang/Throwable.html">Throwable, ServletException {
        try
        {
            ProfileForm fromRequest=(ProfileForm) form;
            ProfileForm profileForm = new ProfileForm();
            IServiceManager sm = ServiceManager.getInstance();
            1.5.0/docs/api/java/lang/String.html">String[] names = new 1.5.0/docs/api/java/lang/String.html">String[]{"serializable"};
            5+0%2Fdocs%2Fapi+Object">Object[] args = new 5+0%2Fdocs%2Fapi+Object">Object[]{fromRequest.getTextToSearch()};
            List<UserView> uVs = (List<UserView>) sm.execute(RequestUtils.getRequester(request, response),"SearchUser",args,names);
            profileForm.setUsersFind(uVs);
            request.setAttribute("ProfileForm",profileForm);
            return mapping.findForward("search");
        }
        catch(FilterChainFailedException e)
        {
            return mapping.findForward("error401");
        }
        catch (1.5.0/docs/api/java/lang/Throwable.html">Throwable e)
        {
            logger.error(e,e);
            throw e;
        }
    }
}