package com.intrbiz.bergamot.config.model;
import java.io.Serializable;
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.XmlElement;
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.BeanResolver;
import com.intrbiz.bergamot.config.resolver.ResolveWith;
import com.intrbiz.bergamot.config.resolver.stratergy.CoalesceEmptyString;
import com.intrbiz.bergamot.config.resolver.stratergy.MergeList;
import com.intrbiz.bergamot.config.resolver.stratergy.SmartMergeSet;
@XmlType(name = "contact")
@XmlRootElement(name = "contact")
public class ContactCfg extends SecuredObjectCfg<ContactCfg> implements Serializable
{
private static final long serialVersionUID = 1L;
private Set<String> teams = new LinkedHashSet<String>();
private String firstName;
private String preferredName;
private String familyName;
private String fullName;
private String email;
private String pager;
private String mobile;
private String phone;
private String im;
private NotificationsCfg notifications;
private Set<String> grantedPermissions = new LinkedHashSet<String>();
private Set<String> revokedPermissions = new LinkedHashSet<String>();
private List<AccessControlCfg> accessControls = new LinkedList<AccessControlCfg>();
public ContactCfg()
{
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);
}
@XmlElement(name = "first-name")
@ResolveWith(CoalesceEmptyString.class)
public String getFirstName()
{
return firstName;
}
public void setFirstName(String firstName)
{
this.firstName = firstName;
}
@XmlElement(name = "preferred-name")
@ResolveWith(CoalesceEmptyString.class)
public String getPreferredName()
{
return preferredName;
}
public void setPreferredName(String preferredName)
{
this.preferredName = preferredName;
}
@XmlElement(name = "family-name")
@ResolveWith(CoalesceEmptyString.class)
public String getFamilyName()
{
return familyName;
}
public void setFamilyName(String familyName)
{
this.familyName = familyName;
}
@XmlElement(name = "full-name")
@ResolveWith(CoalesceEmptyString.class)
public String getFullName()
{
return fullName;
}
public void setFullName(String fullName)
{
this.fullName = fullName;
}
@XmlElement(name = "email")
@ResolveWith(CoalesceEmptyString.class)
public String getEmail()
{
return email;
}
public void setEmail(String email)
{
this.email = email;
}
@XmlElement(name = "pager")
@ResolveWith(CoalesceEmptyString.class)
public String getPager()
{
return pager;
}
public void setPager(String pager)
{
this.pager = pager;
}
@XmlElement(name = "mobile")
@ResolveWith(CoalesceEmptyString.class)
public String getMobile()
{
return mobile;
}
public void setMobile(String mobile)
{
this.mobile = mobile;
}
@XmlElement(name = "phone")
@ResolveWith(CoalesceEmptyString.class)
public String getPhone()
{
return phone;
}
public void setPhone(String phone)
{
this.phone = phone;
}
@XmlElement(name = "im")
@ResolveWith(CoalesceEmptyString.class)
public String getIm()
{
return im;
}
public void setIm(String im)
{
this.im = im;
}
@XmlElementRef(type = NotificationsCfg.class)
@ResolveWith(BeanResolver.class)
public NotificationsCfg getNotifications()
{
return notifications;
}
public void setNotifications(NotificationsCfg notifications)
{
this.notifications = notifications;
}
@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;
}
}