/**
* 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.io.PrintWriter;
import java.util.Collection;
import java.util.Iterator;
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.EntityExistException;
import org.ralasafe.WebConstants;
import org.ralasafe.privilege.Role;
import org.ralasafe.privilege.RoleManager;
import org.ralasafe.util.StringUtil;
import org.ralasafe.util.Util;
public class RoleMngAction extends Action {
private static final Log log=LogFactory.getLog( RoleMngAction.class );
protected void doPost( HttpServletRequest req, HttpServletResponse resp )
throws ServletException, IOException {
RoleManager roleMng=WebUtil.getRoleManager( req );
// get value and construct role
String name=req.getParameter("name");
String description=req.getParameter("description");
String oper=req.getParameter("oper");
int id=WebUtil.getIntParameter( req, "id", 0 );
Role role=new Role();
role.setDescription( description );
role.setName( name );
role.setId( id );
// log
if( log.isDebugEnabled() ) {
log.debug( oper + " to role:" + role );
}
// operate
if( "addRole".equals( oper ) ) {
try {
roleMng.addRole( role );
} catch( EntityExistException e ) {
log.error( "", e );
throw new ServletException( e );
}
} else if( "updateRole".equals( oper ) ) {
try {
roleMng.updateRole( role );
} catch( EntityExistException e ) {
log.error( "", e );
throw new ServletException( e );
}
} else if( "deleteRole".equals( oper ) ) {
roleMng.deleteRole( role.getId() );
}
}
protected void doGet( HttpServletRequest req, HttpServletResponse resp )
throws ServletException, IOException {
RoleManager roleMng=WebUtil.getRoleManager( req );
String oper=req.getParameter("oper");
// log
if( log.isDebugEnabled() ) {
log.debug( "oper="+oper );
}
if( "addRole".equals( oper ) ) {
WebUtil.forward( req, resp, "/ralasafe/privilege/editRole.jsp" );
} else if( "getRole".equals( oper ) ) {
int id=WebUtil.getIntParameter( req, "id", 0 );
Role role=roleMng.getRole( id );
req.setAttribute( "role", role );
WebUtil.forward( req, resp, "/ralasafe/privilege/editRole.jsp" );
} else if( "isNameValid".equals( oper ) ) {
String name=req.getParameter( "name" );
String strId=req.getParameter( "id" );
Role existRole=null;
Collection roles=roleMng.getAllRoles();
for( Iterator iter=roles.iterator(); iter.hasNext(); ) {
Role role=(Role) iter.next();
if( role.getName().equals( name ) ) {
existRole=role;
break;
}
}
boolean valid=false;
if( existRole==null || (existRole.getId()+"").equals( strId ) ) {
valid=true;
}
resp.setContentType("application/json;charset=UTF-8");
PrintWriter writer=resp.getWriter();
writer.write( valid+"" );
writer.flush();
return;
} else {
// display from
int first=WebUtil.getIntParameter( req, "first", 0 );
// display max size
int size=WebUtil.getIntParameter( req, "size", WebConstants.DEFAULT_SHOW_ENTITY_SIZE );
// search key
String searchName=req.getParameter( "name" );
/* if(searchName!=null){
searchName=new String(searchName.getBytes("ISO-8859-1"),"UTF-8");
}*/
Collection allRoles=null;
int totalNumber=0;
if( StringUtil.isEmpty( searchName ) ) {
allRoles=roleMng.getAllRoles();
} else {
allRoles=roleMng.getLikelyRoles( searchName );
}
totalNumber=allRoles.size();
Collection roles=Util.sub( allRoles, first, size );
req.setAttribute( "totalNumber", new Integer(totalNumber) );
req.setAttribute( "roles", roles );
req.setAttribute( "first", new Integer(first) );
req.setAttribute( "size", new Integer(size) );
req.setAttribute( "name", searchName );
WebUtil.forward( req, resp, "/ralasafe/privilege/roleList.jsp" );
}
}
}