package pt.estgp.estgweb.web.controllers.configuration;
import org.apache.log4j.Logger;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import pt.estgp.estgweb.services.directories.xsd.*;
import pt.estgp.estgweb.web.UserSessionProxy;
import pt.estgp.estgweb.web.controllers.ApplicationDispatchController;
import pt.estgp.estgweb.web.form.configuration.DirectoriesForm;
import pt.estgp.estgweb.web.utils.RequestUtils;
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 javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Iterator;
/**
* @author Jorge Machado
* @date 26/Fev/2008
* @time 18:01:54
* @see pt.estgp.estgweb.web
*/
public class SchedulerTasksController
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(SchedulerTasksController.
class);
public ActionForward load
(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response
)
throws 1.5.0/docs/api/java/lang/Throwable.html">Throwable
{
if(!UserSessionProxy.
loadUserSessionFromRequest(request
).
getUser().
isAdmin() && !UserSessionProxy.
loadUserSessionFromRequest(request
).
getUser().
hasRole("services"))
{
return mapping.
findForward("error401");
}
DirectoriesForm df =
(DirectoriesForm
) form
;
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[]{};
5+0%2Fdocs%2Fapi+Object">Object[] args =
new 5+0%2Fdocs%2Fapi+Object">Object[]{df.
getId()};
try
{
Directory d =
(Directory
) sm.
execute(RequestUtils.
getRequester(request, response
),
"LoadDirectoryService", args, names
);
df.
setDirectory(d
);
}
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("directory");
}
public ActionForward addLeaf
(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response
)
throws ServletException
{
if(!UserSessionProxy.
loadUserSessionFromRequest(request
).
getUser().
isAdmin() && !UserSessionProxy.
loadUserSessionFromRequest(request
).
getUser().
hasRole("services"))
{
return mapping.
findForward("error401");
}
DirectoriesForm df =
(DirectoriesForm
) form
;
1.5.0/docs/api/java/lang/String.html">String idParent = df.
getId();
LeafT leaf = LeafTImpl.
findLeaf(df.
getDirectory(), idParent
);
if(leaf ==
null)
{
addError
(request,
"directories.leaf.not.found",idParent
);
return mapping.
findForward("directories");
}
addMessage
(request,
"directories.add.leaf",idParent
);
leaf.
getLeaf().
add(new LeafTImpl
());
return mapping.
findForward("directory");
}
public ActionForward refresh
(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response
)
throws ServletException
{
if(!UserSessionProxy.
loadUserSessionFromRequest(request
).
getUser().
isAdmin() && !UserSessionProxy.
loadUserSessionFromRequest(request
).
getUser().
hasRole("services"))
{
return mapping.
findForward("error401");
}
addMessage
(request,
"directories.refresh");
return mapping.
findForward("directory");
}
public ActionForward save
(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response
)
throws 1.5.0/docs/api/java/lang/Throwable.html">Throwable {
if(!UserSessionProxy.
loadUserSessionFromRequest(request
).
getUser().
isAdmin() && !UserSessionProxy.
loadUserSessionFromRequest(request
).
getUser().
hasRole("services"))
{
return mapping.
findForward("error401");
}
DirectoriesForm df =
(DirectoriesForm
) form
;
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[]{};
5+0%2Fdocs%2Fapi+Object">Object[] args =
new 5+0%2Fdocs%2Fapi+Object">Object[]{df.
getDirectory()};
try {
sm.
execute(RequestUtils.
getRequester(request, response
),
"SaveDirectoryService", args, names
);
}
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
;
}
addMessage
(request,
"directories.saved");
return mapping.
findForward("directories");
}
public ActionForward cancel
(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response
)
throws ServletException
{
if(!UserSessionProxy.
loadUserSessionFromRequest(request
).
getUser().
isAdmin() && !UserSessionProxy.
loadUserSessionFromRequest(request
).
getUser().
hasRole("services"))
{
return mapping.
findForward("error401");
}
addMessage
(request,
"directories.canceled");
return mapping.
findForward("directories");
}
public ActionForward removeLeaf
(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response
)
throws ServletException
{
if(!UserSessionProxy.
loadUserSessionFromRequest(request
).
getUser().
isAdmin() && !UserSessionProxy.
loadUserSessionFromRequest(request
).
getUser().
hasRole("services"))
{
return mapping.
findForward("error401");
}
DirectoriesForm df =
(DirectoriesForm
) form
;
1.5.0/docs/api/java/lang/String.html">String idParent = df.
getId();
LeafT leaf = LeafTImpl.
removeLeaf(df.
getDirectory(), idParent
);
if(leaf ==
null)
{
addError
(request,
"directories.leaf.not.found",idParent
);
return mapping.
findForward("directories");
}
addMessage
(request,
"directories.removed.leaf", idParent
);
leaf.
getLeaf().
add(new LeafTImpl
());
return mapping.
findForward("directory");
}
public ActionForward addRight
(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response
)
throws ServletException
{
if(!UserSessionProxy.
loadUserSessionFromRequest(request
).
getUser().
isAdmin() && !UserSessionProxy.
loadUserSessionFromRequest(request
).
getUser().
hasRole("services"))
{
return mapping.
findForward("error401");
}
DirectoriesForm df =
(DirectoriesForm
) form
;
1.5.0/docs/api/java/lang/String.html">String idParent = df.
getId();
LeafT leaf = LeafTImpl.
findLeaf(df.
getDirectory(), idParent
);
if(leaf ==
null)
{
addError
(request,
"directories.leaf.not.found",idParent
);
return mapping.
findForward("directories");
}
leaf.
getRights().
getRight().
add(new RightImpl
());
addMessage
(request,
"directories.add.right", idParent
);
return mapping.
findForward("directory");
}
public ActionForward removeRight
(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response
)
throws ServletException
{
if(!UserSessionProxy.
loadUserSessionFromRequest(request
).
getUser().
isAdmin() && !UserSessionProxy.
loadUserSessionFromRequest(request
).
getUser().
hasRole("services"))
{
return mapping.
findForward("error401");
}
DirectoriesForm df =
(DirectoriesForm
) form
;
1.5.0/docs/api/java/lang/String.html">String idParent = df.
getId();
LeafT leaf = LeafTImpl.
findLeaf(df.
getDirectory(), idParent
);
if(leaf ==
null)
{
addError
(request,
"directories.leaf.not.found",idParent
);
return mapping.
findForward("directories");
}
Iterator
<RightsT.
Right> iter = leaf.
getRights().
getRight().
iterator();
while(iter.
hasNext())
{
RightsT.
Right r =iter.
next();
if(r.
getName().
equals(df.
getRname()) && r.
getTarget().
equals(df.
getRtarget()) && df.
getRtype().
equals(r.
getType()))
{
iter.
remove();
}
}
addMessage
(request,
"directories.remove.right", df.
getRname(),df.
getRtarget(),df.
getRtype());
return mapping.
findForward("directory");
}
public ActionForward addDirRight
(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response
)
throws ServletException
{
if(!UserSessionProxy.
loadUserSessionFromRequest(request
).
getUser().
isAdmin() && !UserSessionProxy.
loadUserSessionFromRequest(request
).
getUser().
hasRole("services"))
{
return mapping.
findForward("error401");
}
DirectoriesForm df =
(DirectoriesForm
) form
;
1.5.0/docs/api/java/lang/String.html">String idParent = df.
getId();
df.
getDirectory().
getRights().
getRight().
add(new RightImpl
());
addMessage
(request,
"directories.add.right");
return mapping.
findForward("directory");
}
public ActionForward removeDirRight
(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response
)
throws ServletException
{
if(!UserSessionProxy.
loadUserSessionFromRequest(request
).
getUser().
isAdmin() && !UserSessionProxy.
loadUserSessionFromRequest(request
).
getUser().
hasRole("services"))
{
return mapping.
findForward("error401");
}
DirectoriesForm df =
(DirectoriesForm
) form
;
Iterator
<RightsT.
Right> iter = df.
getDirectory().
getRights().
getRight().
iterator();
while(iter.
hasNext())
{
RightsT.
Right r =iter.
next();
if(r.
getName().
equals(df.
getRname()) && r.
getTarget().
equals(df.
getRtarget()) && df.
getRtype().
equals(r.
getType()))
{
iter.
remove();
}
}
addMessage
(request,
"directories.remove.right", df.
getRname(),df.
getRtarget(),df.
getRtype());
return mapping.
findForward("directory");
}
public ActionForward addDirGroup
(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response
)
throws ServletException
{
if(!UserSessionProxy.
loadUserSessionFromRequest(request
).
getUser().
isAdmin() && !UserSessionProxy.
loadUserSessionFromRequest(request
).
getUser().
hasRole("services"))
{
return mapping.
findForward("error401");
}
DirectoriesForm df =
(DirectoriesForm
) form
;
1.5.0/docs/api/java/lang/String.html">String idParent = df.
getId();
df.
getDirectory().
getGroupsDeclaration().
getGroup().
add(new GroupImpl
());
addMessage
(request,
"directories.add.group");
return mapping.
findForward("directory");
}
public ActionForward removeDirGroup
(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response
)
throws ServletException
{
if(!UserSessionProxy.
loadUserSessionFromRequest(request
).
getUser().
isAdmin() && !UserSessionProxy.
loadUserSessionFromRequest(request
).
getUser().
hasRole("services"))
{
return mapping.
findForward("error401");
}
DirectoriesForm df =
(DirectoriesForm
) form
;
Iterator
<GroupDeclarationT.
Group> iter = df.
getDirectory().
getGroupsDeclaration().
getGroup().
iterator();
while(iter.
hasNext())
{
GroupDeclarationT.
1.5.0/docs/api/java/security/acl/Group.html">Group g =iter.
next();
if(g.
getName().
equals(df.
getRname()))
{
iter.
remove();
}
}
addMessage
(request,
"directories.remove.group");
return mapping.
findForward("directory");
}
}