/************************************************************************** * DomainPath.java * * $Revision: 1.7 $ * $Date: 2005/04/26 06:48:12 $ * * Copyright (C) 2001 CERN - European Organization for Nuclear Research * All rights reserved. **************************************************************************/ package com.c2kernel.lookup; import java.util.Enumeration; import java.util.Vector; import com.c2kernel.common.ObjectCannotBeUpdated; import com.c2kernel.common.ObjectNotFoundException; import com.c2kernel.process.Gateway; import com.c2kernel.utils.Logger; import com.novell.ldap.LDAPAttribute; import com.novell.ldap.LDAPAttributeSet; /** * @version $Revision: 1.7 $ $Date: 2005/04/26 06:48:12 $ * @author $Author: abranson $ **/ public class RolePath extends DomainPath { /** * */ private boolean hasJobList = false; public RolePath(String roleName) { super(new DomainPath("agent"), roleName); } public RolePath(String roleName, boolean jobList) { this(roleName); hasJobList = jobList; } /** * @return Returns the hasJobList. */ public boolean hasJobList() { return hasJobList; } /** * @param hasJobList The hasJobList to set. */ public void setHasJobList(boolean hasJobList) { this.hasJobList = hasJobList; } @Override public void checkType() { mType = CONTEXT; } @Override public Enumeration getChildren() { AgentPath[] agents = getAgentsWithRole(); Vector children = new Vector(agents.length); for (int i = 0; i < agents.length; i++) children.add(i, agents[i]); return children.elements(); } public AgentPath[] getAgentsWithRole() { try { return Gateway.getLDAPLookup().getRoleManager().getAgents(this); } catch (ObjectNotFoundException ex) { Logger.error("Cannot retrieve agent list. Role "+getName()+" does not exist in LDAP"); return new AgentPath[0]; } } public void addAgent(AgentPath agent) throws ObjectCannotBeUpdated, ObjectNotFoundException { Gateway.getLDAPLookup().getRoleManager().addRole(agent, this); } public void removeAgent(AgentPath agent) throws ObjectCannotBeUpdated, ObjectNotFoundException { Gateway.getLDAPLookup().getRoleManager().removeRole(agent, this); } @Override public String dump() { StringBuffer comp = new StringBuffer("Components: { "); for (String element : mPath) comp.append("'").append(element).append("' "); return "Path - dump(): "+ comp.toString()+ "}\n dn="+ getDN()+ "\n string="+ toString()+ "\n type="+ mType+ "\n name="+ getName()+ "\n "; } @Override public LDAPAttributeSet createAttributeSet() { LDAPAttributeSet attrs = new LDAPAttributeSet(); attrs.add(new LDAPAttribute("objectclass","cristalrole")); String jobListString = hasJobList?"TRUE":"FALSE"; attrs.add(new LDAPAttribute("jobList",jobListString)); attrs.add(new LDAPAttribute("cn", getName())); return attrs; } }