Working with Roles
Associating particular tasks to users..
Sample_Admin_Role_Operations.java
The following code sample illustrates how to retrieve a list of existing Roles and the operations associated with a particular Role, create a new Role, assign a Role to a user and then remove it. The default Roles created when a kS is installed cannot be deleted or updated.
import java.util.Map;
import java.util.Map.Entry;
import java.util.TreeMap;
import java.util.Vector;
import com.eruces.teadmin.Administration;
import com.eruces.teadmin.Operation;
import com.eruces.teadmin.Role;
import com.eruces.teadmin.UserAndPasswordInfo;
import com.eruces.teagent.PList;
import com.eruces.teagent.TEAgentConnection;
public class Sample_Admin_Role_Operations {
public static Map<Long, String> listAllRoles(TEAgentConnection conn) {
Map<Long, String> all_roles = new TreeMap<Long, String>();
try {
Administration admin = new Administration();
admin.attachConnection(conn);
Role[] arr = admin.getAllRoles();
for (int i = 0; i < arr.length; i++) {
all_roles.put(arr[i].getRoleID(), arr[i].getRoleName());
}
System.out.println("Retrieved " + all_roles.size() + " roles.");
admin.detachConnection();
}
catch (Exception e) {
e.printStackTrace();
}
return all_roles;
}
public static Map<Long, String> listAllOperations(TEAgentConnection conn) {
Map<Long, String> all_operations = new TreeMap<Long, String>();
try {
Administration admin = new Administration();
admin.attachConnection(conn);
Operation[] arr = admin.getAllOperations();
for (int i = 0; i < arr.length; i++) {
all_operations.put(arr[i].m_nID, arr[i].m_strName);
}
//System.out.println("Retrieved " + all_operations.size() + " operations.");
admin.detachConnection();
}
catch (Exception e) {
e.printStackTrace();
}
return all_operations;
}
public static void addRole(TEAgentConnection conn, String role_name) {
try {
Administration admin = new Administration();
admin.attachConnection(conn);
Role roles[] = new Role[1];
roles[0] = new Role();
roles[0].setRoleName(role_name);
admin.createRoles(roles);
System.out.println("Added role \"" + role_name + "\".");
admin.detachConnection();
}
catch (Exception e) {
e.printStackTrace();
}
}
public static void removeRole(TEAgentConnection conn, String role_name) {
try {
Administration admin = new Administration();
admin.attachConnection(conn);
long id = 0;
Role all_roles[] = admin.getAllRoles();
for (Role r : all_roles) {
if (r.getRoleName().equals(role_name)) {
id = r.getRoleID();
break;
}
}
admin.removeRole(id);
System.out.println("Removed role \"" + role_name + "\".");
admin.detachConnection();
}
catch (Exception e) {
e.printStackTrace();
}
}
public static void addRole_Principal(TEAgentConnection conn, String user_name, String role_name) {
try {
Administration admin = new Administration();
admin.attachConnection(conn);
UserAndPasswordInfo user = admin.getUserByName(user_name);
Role role = null;
Role all_roles[] = admin.getAllRoles();
for (Role r : all_roles) {
if (r.getRoleName().equals(role_name)) {
role = r;
break;
}
}
long roles[] = new long[1];
roles[0] = role.getRoleID();
admin.assignRoles(user, roles);
System.out.println("Added role \"" + role_name + "\" to user \"" + user_name + "\".");
admin.detachConnection();
}
catch (Exception e) {
e.printStackTrace();
}
}
public static void removeRole_Principal(TEAgentConnection conn, String user_name, String role_name) {
try {
Administration admin = new Administration();
admin.attachConnection(conn);
UserAndPasswordInfo user = admin.getUserByName(user_name);
Role role = null;
Role all_roles[] = admin.getAllRoles();
for (Role r : all_roles) {
if (r.getRoleName().equals(role_name)) {
role = r;
break;
}
}
long roles[] = new long[1];
roles[0] = role.getRoleID();
admin.removeRoles(user, roles);
System.out.println("Removed role \"" + role_name + "\" from user \"" + user_name + "\".");
admin.detachConnection();
}
catch (Exception e) {
e.printStackTrace();
}
}
public static Vector<String> role_ListOperations(TEAgentConnection conn, String role_name) {
Vector<String> out = new Vector<String>();
try {
Administration admin = new Administration();
admin.attachConnection(conn);
Map<Long, String> all_operations = listAllOperations(conn);
Role role = null;
Role all_roles[] = admin.getAllRoles();
for (Role r : all_roles) {
if (r.getRoleName().equals(role_name)) {
role = r;
break;
}
}
PList test = role.getOperations();
Long[] operations = test.toLongArray();
for (int i = 0; i < operations.length; i++) {
out.add(all_operations.get(operations[i]));
}
System.out.println("Retrieved " + out.size() + " operations.");
admin.detachConnection();
}
catch (Exception e) {
e.printStackTrace();
}
return out;
}
public static void role_AddOperationTo(TEAgentConnection conn, String role_name, String operation_name) {
try {
Administration admin = new Administration();
admin.attachConnection(conn);
Role role = null;
Role all_roles[] = admin.getAllRoles();
for (Role r : all_roles) {
if (r.getRoleName().equals(role_name)) {
role = r;
break;
}
}
Long operation = null;
Map<Long, String> all_operations = listAllOperations(conn);
for (Entry<Long, String> e : all_operations.entrySet()) {
if (e.getValue().equals(operation_name)) {
operation = e.getKey();
break;
}
}
role.addOperation(operation);
Role roles_to_update[] = new Role[1];
roles_to_update[0] = role;
admin.updateRoles(roles_to_update);
System.out.println("Added operation \"" + operation_name + "\" to role \"" + role_name + "\".");
}
catch (Exception e) {
e.printStackTrace();
}
}
public static void role_RemoveOperationFrom(TEAgentConnection conn, String role_name, String operation_name) {
try {
Administration admin = new Administration();
admin.attachConnection(conn);
Role role = null;
Role all_roles[] = admin.getAllRoles();
for (Role r : all_roles) {
if (r.getRoleName().equals(role_name)) {
role = r;
break;
}
}
Long operation = null;
Map<Long, String> all_operations = listAllOperations(conn);
for (Entry<Long, String> e : all_operations.entrySet()) {
if (e.getValue().equals(operation_name)) {
operation = e.getKey();
break;
}
}
role.removeOperation(operation);
Role roles_to_update[] = new Role[1];
roles_to_update[0] = role;
admin.updateRoles(roles_to_update);
System.out.println("Removed operation \"" + operation_name + "\" from role \"" + role_name + "\".");
}
catch (Exception e) {
e.printStackTrace();
}
}
}