package com.intrbiz.bergamot.config.model;
import java.util.LinkedHashSet;
import java.util.LinkedList;
import java.util.List;
import java.util.Set;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElementRef;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
import com.intrbiz.bergamot.config.adapter.CSVAdapter;
import com.intrbiz.bergamot.config.resolver.ResolveWith;
import com.intrbiz.bergamot.config.resolver.stratergy.MergeList;
import com.intrbiz.bergamot.config.resolver.stratergy.SmartMergeSet;
@XmlType(name = "team")
@XmlRootElement(name = "team")
public class TeamCfg extends SecuredObjectCfg<TeamCfg>
{
private static final long serialVersionUID = 1L;
private Set<String> teams = new LinkedHashSet<String>();
private Set<String> grantedPermissions = new LinkedHashSet<String>();
private Set<String> revokedPermissions = new LinkedHashSet<String>();
private List<AccessControlCfg> accessControls = new LinkedList<AccessControlCfg>();
public TeamCfg()
{
super();
}
@XmlJavaTypeAdapter(CSVAdapter.class)
@XmlAttribute(name = "teams")
@ResolveWith(SmartMergeSet.class)
public Set<String> getTeams()
{
return teams;
}
public void setTeams(Set<String> teams)
{
this.teams = teams;
}
public void addTeam(String group)
{
this.teams.add(group);
}
public void removeTeam(String group)
{
this.teams.remove(group);
}
public boolean containsTeam(String name)
{
return this.teams.contains(name);
}
@XmlJavaTypeAdapter(CSVAdapter.class)
@XmlAttribute(name = "grants")
@ResolveWith(SmartMergeSet.class)
public Set<String> getGrantedPermissions()
{
return grantedPermissions;
}
public void setGrantedPermissions(Set<String> grantedPermissions)
{
this.grantedPermissions = grantedPermissions;
}
@XmlJavaTypeAdapter(CSVAdapter.class)
@XmlAttribute(name = "revokes")
@ResolveWith(SmartMergeSet.class)
public Set<String> getRevokedPermissions()
{
return revokedPermissions;
}
public void setRevokedPermissions(Set<String> revokedPermissions)
{
this.revokedPermissions = revokedPermissions;
}
@XmlElementRef(type = AccessControlCfg.class)
@ResolveWith(MergeList.class)
public List<AccessControlCfg> getAccessControls()
{
return accessControls;
}
public void setAccessControls(List<AccessControlCfg> accessControls)
{
this.accessControls = accessControls;
}
public List<TemplatedObjectCfg<?>> getTemplatedChildObjects()
{
List<TemplatedObjectCfg<?>> r = new LinkedList<TemplatedObjectCfg<?>>();
return r;
}
}