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
;
}
}
}