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.*;
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, profileForm.
getTypeClass()};
User user =
(User
) sm.
execute(RequestUtils.
getRequester(request, response
),
"SubmitUser", 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 newTeacher
(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response
)
throws 1.5.0/docs/api/java/lang/Throwable.html">Throwable, ServletException
{
return newGenericUser
(mapping, form, request, response, DomainObjectFactory.
createTeacherImpl());
}
public ActionForward newStudent
(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response
)
throws 1.5.0/docs/api/java/lang/Throwable.html">Throwable, ServletException
{
return newGenericUser
(mapping, form, request, response, DomainObjectFactory.
createStudentImpl());
}
public ActionForward newUser
(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response
)
throws 1.5.0/docs/api/java/lang/Throwable.html">Throwable, ServletException
{
return newGenericUser
(mapping, form, request, response, DomainObjectFactory.
createUserImpl());
}
public ActionForward newGenericUser
(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response,
User u
)
throws 1.5.0/docs/api/java/lang/Throwable.html">Throwable, ServletException
{
try
{
ProfileForm pF =
(ProfileForm
) form
;
UserSessionImpl userSession =
(UserSessionImpl
) UserSessionProxy.
loadUserSession(request, response
);
UserView uV =
new UserView
(u
);
pF.
setUserView(uV
);
pF.
setTypeClass(u.
getClass().
getName());
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"); //todo muda para new copy paste do load mas muda topnav
}
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
);
if (uVs.
size() !=
0)
addMessage
(request,
"profile.search.user.find",
"" + uVs.
size());
else
addMessage
(request,
"profile.search.user.not.find");
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
;
}
}
}