Adding Update Role Menu process to Adempiere package
This commit is contained in:
parent
a9aa1f79af
commit
fdc1dcd66c
|
@ -0,0 +1,119 @@
|
||||||
|
package org.adempiere.process;
|
||||||
|
|
||||||
|
import java.sql.PreparedStatement;
|
||||||
|
import java.sql.ResultSet;
|
||||||
|
import java.util.Properties;
|
||||||
|
import java.util.logging.Level;
|
||||||
|
|
||||||
|
import org.compiere.model.MRoleMenu;
|
||||||
|
import org.compiere.process.ProcessInfoParameter;
|
||||||
|
import org.compiere.process.SvrProcess;
|
||||||
|
import org.compiere.util.DB;
|
||||||
|
|
||||||
|
public class UpdateRoleMenu extends SvrProcess
|
||||||
|
{
|
||||||
|
private int p_role_id = 0;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void prepare()
|
||||||
|
{
|
||||||
|
ProcessInfoParameter[] para = getParameter();
|
||||||
|
for (int i = 0; i < para.length; i++)
|
||||||
|
{
|
||||||
|
String name = para[i].getParameterName();
|
||||||
|
|
||||||
|
if (para[i].getParameter() == null)
|
||||||
|
;
|
||||||
|
else if (name.equals("AD_Role_ID"))
|
||||||
|
{
|
||||||
|
p_role_id = para[i].getParameterAsInt();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
log.log(Level.SEVERE, "Unknown Parameter: " + name);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private MRoleMenu addUpdateRole(Properties ctx, int roleId, int menuId, boolean active, String trxName)
|
||||||
|
{
|
||||||
|
String whereClause = "AD_Role_ID=" + roleId + " AND U_WebMenu_ID=" + menuId;
|
||||||
|
|
||||||
|
int roleMenuIds[] = MRoleMenu.getAllIDs(MRoleMenu.Table_Name, whereClause, trxName);
|
||||||
|
|
||||||
|
|
||||||
|
MRoleMenu roleMenu;
|
||||||
|
if ( roleMenuIds.length == 1)
|
||||||
|
{
|
||||||
|
roleMenu = new MRoleMenu(ctx, roleMenuIds[0],trxName);
|
||||||
|
}
|
||||||
|
else if ( roleMenuIds.length == 0)
|
||||||
|
{
|
||||||
|
roleMenu = new MRoleMenu(ctx, 0,trxName);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
throw new IllegalStateException("More than one role menu defined.");
|
||||||
|
}
|
||||||
|
|
||||||
|
roleMenu.setAD_Role_ID(roleId);
|
||||||
|
roleMenu.setU_WebMenu_ID(menuId);
|
||||||
|
roleMenu.setIsActive(active);
|
||||||
|
|
||||||
|
if (!roleMenu.save())
|
||||||
|
{
|
||||||
|
throw new IllegalStateException("Could not create/update role menu, RoleMenuId: " + roleMenu.get_ID());
|
||||||
|
}
|
||||||
|
|
||||||
|
return roleMenu;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected String doIt() throws Exception
|
||||||
|
{
|
||||||
|
if (p_role_id == 0)
|
||||||
|
{
|
||||||
|
throw new Exception("No Role defined or cannot assign menus to System Administrator");
|
||||||
|
}
|
||||||
|
|
||||||
|
String sqlStmt = "SELECT U_WebMenu_ID, IsActive FROM U_WebMenu";
|
||||||
|
|
||||||
|
PreparedStatement pstmt = null;
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
pstmt = DB.prepareStatement(sqlStmt, get_TrxName());
|
||||||
|
ResultSet rs = pstmt.executeQuery();
|
||||||
|
|
||||||
|
while (rs.next())
|
||||||
|
{
|
||||||
|
int menuId = rs.getInt(1);
|
||||||
|
boolean active = "Y".equals(rs.getString(2));
|
||||||
|
addUpdateRole(getCtx(), p_role_id, menuId, active, get_TrxName());
|
||||||
|
}
|
||||||
|
commit();
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
rollback();
|
||||||
|
throw ex;
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
if (pstmt != null)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
pstmt.close();
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
log.log(Level.SEVERE, "Could not close prepared statement");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return "Role updated successfully";
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue