package com.intrbiz.bergamot.model;
import java.util.EnumSet;
import java.util.List;
import java.util.stream.Collectors;
import com.intrbiz.bergamot.config.model.SecuredObjectCfg;
import com.intrbiz.bergamot.data.BergamotDB;
import com.intrbiz.bergamot.model.message.SecuredObjectMO;
import com.intrbiz.bergamot.model.util.Parameterised;
/**
* An object which (optionally) exists within a security domain
*/
public abstract class SecuredObject<T extends SecuredObjectMO, C extends SecuredObjectCfg<C>> extends NamedObject<T, C> implements Parameterised
{
private static final long serialVersionUID = 1L;
public SecuredObject()
{
super();
}
/**
* Get the security domains that this object exists within
*/
public final List<SecurityDomain> getSecurityDomains()
{
try (BergamotDB db = BergamotDB.connect())
{
return db.getSecurityDomainsForObject(this.getId());
}
}
protected void toMO(SecuredObjectMO mo, Contact contact, EnumSet<MOFlag> options)
{
super.toMO(mo, contact, options);
mo.setSecurityDomains(this.getSecurityDomains().stream().map((sd) -> sd.toMO(contact, options)).collect(Collectors.toList()));
}
}