/* * Copyright (c) 2008-2011 EMC Corporation * All Rights Reserved */ package com.emc.storageos.db.client.model; import java.net.URI; import java.util.Set; import com.emc.storageos.db.client.URIUtil; import com.emc.storageos.db.client.model.DbKeyspace.Keyspaces; /** * Tenant org (configuration) data object */ @Cf("TenantOrg") @DbKeyspace(Keyspaces.GLOBAL) public class TenantOrg extends DataObject { // The default provider tenant URN. public static final String PROVIDER_TENANT_ORG = URIUtil.createInternalID(TenantOrg.class, "provider").toString(); // Constant for root's parent - no parent public static final String NO_PARENT = URIUtil.createInternalID(TenantOrg.class, "NONE").toString(); public static final URI SYSTEM_TENANT = URIUtil.createInternalID(TenantOrg.class, "system"); private NamedURI _parentTenant; private String _description; private StringSetMap _userMappings; private StringSetMap _roleAssignments; // current Quota for the tenant in GB private Long _quotaGB; private Boolean _quotaEnabled; // _namespace the tenant is one to one mapped. private String _namespace; // object storage system to which the namespace belongs private URI _namespaceStorage; // namespace URI private URI _namespaceURI; @NamedRelationIndex(cf = "NamedRelation", type = TenantOrg.class) @Name("parentTenant") public NamedURI getParentTenant() { return _parentTenant; } public void setParentTenant(NamedURI parentTenant) { _parentTenant = parentTenant; setChanged("parentTenant"); } static public boolean isRootTenant(TenantOrg tenant) { return NO_PARENT.equalsIgnoreCase(tenant.getParentTenant().getURI().toString()); } @Name("description") public String getDescription() { return _description; } public void setDescription(String description) { _description = description; setChanged("description"); } @Name("userMappings") @PermissionsIndex("PermissionsIndex") public StringSetMap getUserMappings() { return _userMappings; } public void setUserMappings(StringSetMap userMappings) { _userMappings = userMappings; setChanged("userMappings"); } public void addUserMapping(String domain, String userMapping) { if (null == _userMappings) { _userMappings = new StringSetMap(); } _userMappings.put(domain, userMapping); } public void removeUserMapping(String domain, String userMapping) { if (null != _userMappings) { _userMappings.remove(domain, userMapping); } } @PermissionsIndex("PermissionsIndex") @Name("role-assignment") public StringSetMap getRoleAssignments() { if (_roleAssignments == null) { _roleAssignments = new StringSetMap(); } return _roleAssignments; } public void setRoleAssignments(StringSetMap roleAssignments) { _roleAssignments = roleAssignments; } @Name("quota") public Long getQuota() { return (_quotaGB == null) ? 0L : _quotaGB; } public void setQuota(Long quota) { _quotaGB = quota; setChanged("quota"); } @Name("quotaEnabled") public Boolean getQuotaEnabled() { return (_quotaEnabled == null) ? false : _quotaEnabled; } public void setQuotaEnabled(Boolean enable) { _quotaEnabled = enable; setChanged("quotaEnabled"); } public Set<String> getRoleSet(String key) { if (null != _roleAssignments) { return _roleAssignments.get(key); } return null; } public void addRole(String key, String role) { if (_roleAssignments == null) { _roleAssignments = new StringSetMap(); } _roleAssignments.put(key, role); } public void removeRole(String key, String role) { if (_roleAssignments != null) { _roleAssignments.remove(key, role); } } @Name("namespace") public String getNamespace() { return _namespace; } public void setNamespace(String namespace) { _namespace = namespace; setChanged("namespace"); } @Name("namespaceStorage") public URI getNamespaceStorage() { return _namespaceStorage; } public void setNamespaceStorage(URI namespaceStorage) { _namespaceStorage = namespaceStorage; setChanged("namespaceStorage"); } @Name("namespaceURI") public URI getNamespaceURI() { return _namespaceURI; } public void setNamespaceURI(URI namespaceURI) { _namespaceURI = namespaceURI; setChanged("namespaceURI"); } }