/**
* Copyright (c) 2004-2011 Wang Jinbao(Julian Wong), http://www.ralasafe.com
* Licensed under the MIT license: http://www.opensource.org/licenses/mit-license.php
*/
package org.ralasafe.servlet;
import java.io.IOException;
import java.util.Collection;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.ralasafe.entitle.EntitleManager;
import org.ralasafe.privilege.Privilege;
import org.ralasafe.privilege.PrivilegeManager;
public class PrivilegePolicyAction extends Action {
private static final Log log=LogFactory.getLog( PrivilegePolicyAction.class );
protected void doGet( HttpServletRequest req, HttpServletResponse resp )
throws ServletException, IOException {
String oper=req.getParameter( "oper" );
int id=WebUtil.getIntParameter( req, "id", -23 );
PrivilegeManager pvlgMng=WebUtil.getPrivilegeManager( req );
Privilege pvlg=pvlgMng.getPrivilege( id );
if( log.isDebugEnabled() ) {
log.debug( "oper=" + oper + ", id=" + id + ", name=" + pvlg.getName() );
}
EntitleManager entitleMng=WebUtil.getEntitleManager( req );
boolean isQueryEntitle=false;
boolean isDecisionEntitle=false;
Collection queryEntitlements=entitleMng.getQueryEntitlements( id );
Collection decisionEntitlements=null;
if( queryEntitlements!=null
&& queryEntitlements.size()>0 ) {
// this is a query privilege
isQueryEntitle=true;
} else {
decisionEntitlements=entitleMng.getDecisionEntitlements( id );
if( decisionEntitlements!=null
&& decisionEntitlements.size()>0 ) {
// this is a decison privilege
isDecisionEntitle=true;
}
}
// no entitlement is set for this privilege
if( !isQueryEntitle&&!isDecisionEntitle ) {
req.setAttribute( "privilege", pvlg );
WebUtil.forward( req, resp, "/ralasafe/privilege/chooseType.jsp?id="+id );
return;
}
if( "testPolicy".equals( oper ) ) {
if( isDecisionEntitle ) {
resp.sendRedirect( "./decisionEntitlementTest.rls?oper=loadFresh&id="+id );
return;
} else if( isQueryEntitle ) {
resp.sendRedirect( "./queryEntitlementTest.rls?oper=loadFresh&id="+id );
return;
}
} else if( "editPolicy".equals( oper ) ) {
if( isDecisionEntitle ) {
resp.sendRedirect( "./decisionEntitlement.rls?oper=loadFresh&id="+id );
return;
} else if( isQueryEntitle ) {
resp.sendRedirect( "./queryEntitlement.rls?oper=loadFresh&id="+id );
return;
}
}
}
protected void doPost( HttpServletRequest req, HttpServletResponse resp )
throws ServletException, IOException {
// TODO Auto-generated method stub
super.doPost( req, resp );
}
}