package pt.estgp.estgweb.web.controllers;
import org.apache.log4j.Logger;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionForm;
import pt.estgp.estgweb.web.form.AddRolesForm;
import pt.estgp.estgweb.web.UserSessionProxy;
import pt.estgp.estgweb.domain.UserSessionImpl;
import pt.estgp.estgweb.utils.Globals;
import pt.utl.ist.berserk.logic.serviceManager.exceptions.FilterChainFailedException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.ServletException;
import java.io.Serializable;
import java.util.List;
import java.util.ArrayList;
import java.util.Iterator;
/**
* @author Jorge Machado
* @date 26/Fev/2008
* @time 18:01:54
* @see pt.estgp.estgweb.web
*/
public class AddRolesController
extends ApplicationDispatchController
{
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(AddRolesController.
class);
protected static final 1.5.0/docs/api/java/lang/String.html">String TARGET_ROLES_KEY = AddRolesForm.
TARGET_ROLES_KEY;
public ActionForward start
(ActionMapping mapping,
ActionForm form ,
HttpServletRequest request,
HttpServletResponse response
)
throws 1.5.0/docs/api/java/lang/Throwable.html">Throwable, ServletException
{
try
{
UserSessionImpl sess =
(UserSessionImpl
) UserSessionProxy.
loadUserSession(request,response
);
sess.
remove(TARGET_ROLES_KEY
);
sess.
serialize(request,response
);
return mapping.
findForward("from.add.role");
}
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 addRole
(ActionMapping mapping,
ActionForm form ,
HttpServletRequest request,
HttpServletResponse response
)
throws 1.5.0/docs/api/java/lang/Throwable.html">Throwable, ServletException
{
try
{
AddRolesForm addRolesForm =
(AddRolesForm
) form
;
UserSessionImpl sess =
(UserSessionImpl
) UserSessionProxy.
loadUserSession(request,response
);
List
<String
> l =
(List
<String
>) sess.
get(TARGET_ROLES_KEY
);
if(l ==
null)
l =
new ArrayList
<String
>();
if(!isInTargetRoles
(addRolesForm.
getTargetRolesStr(),l
))
{
l.
add(addRolesForm.
getTargetRolesStr());
sess.
put(TARGET_ROLES_KEY,
(1.5.0/docs/api/java/io/Serializable.html">Serializable) l
);
sess.
serialize(request,response
);
}
else
{
addErrorWithKeys
(request,
"forms.object.already.in.list",
"user.role." + addRolesForm.
getTargetRolesStr());
}
addRolesForm.
setSelectedRoles(l
);
}
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
;
}
return mapping.
findForward("from.add.role");
}
public ActionForward removeRole
(ActionMapping mapping,
ActionForm form ,
HttpServletRequest request,
HttpServletResponse response
)
throws 1.5.0/docs/api/java/lang/Throwable.html">Throwable, ServletException
{
AddRolesForm addRolessForm =
(AddRolesForm
) form
;
UserSessionImpl sess =
(UserSessionImpl
) request.
getAttribute(Globals.
USER_SESSION_KEY);
List
<String
> roles =
(List
<String
>) sess.
get(TARGET_ROLES_KEY
);
if(roles
!=
null || roles.
size() != 0
)
{
1.5.0/docs/api/java/util/Iterator.html">Iterator iterator = roles.
iterator();
while (iterator.
hasNext())
{
1.5.0/docs/api/java/lang/String.html">String role =
(1.5.0/docs/api/java/lang/String.html">String) iterator.
next();
if(role.
equals(addRolessForm.
getRole()))
{
iterator.
remove();
}
}
}
addRolessForm.
setTargetRoles(roles
);
addRolessForm.
setSelectedRoles(roles
);
sess.
put(TARGET_ROLES_KEY,
(1.5.0/docs/api/java/io/Serializable.html">Serializable) roles
);
sess.
serialize(request,response
);
return mapping.
findForward("from.add.role");
}
private boolean isInTargetRoles
(1.5.0/docs/api/java/lang/String.html">String role,
5+0%2Fdocs%2Fapi+List">List l
)
{
return l.
contains(role
);
}
}