/* * Copyright (c) 2012 EMC Corporation * All Rights Reserved */ package com.emc.storageos.db.client.constraint; import com.emc.storageos.db.client.constraint.impl.ContainmentPermissionsConstraintImpl; import com.emc.storageos.db.client.impl.ColumnField; import com.emc.storageos.db.client.impl.DataObjectType; import com.emc.storageos.db.client.impl.TypeMap; import com.emc.storageos.db.client.model.DataObject; import com.emc.storageos.db.client.model.DataObjectWithACLs; import com.emc.storageos.db.client.model.DiscoveredComputeSystemWithAcls; import com.emc.storageos.db.client.model.TenantOrg; /** * ContainmentPermissions constraint. For example: * - find all permissions on a tenant * - find all tenants a user has permissions on */ public interface ContainmentPermissionsConstraint extends Constraint { /** * Factory for creating containment prefix constraint for various object types */ class Factory { public static ContainmentPermissionsConstraint getTenantsWithPermissionsConstraint(String key) { DataObjectType doType = TypeMap.getDoType(TenantOrg.class); ColumnField field = doType.getColumnField("role-assignment"); return new ContainmentPermissionsConstraintImpl(key, field, TenantOrg.class); } public static ContainmentPermissionsConstraint getObjsWithPermissionsConstraint(String key, Class<? extends DataObjectWithACLs> clazz) { DataObjectType doType = TypeMap.getDoType(clazz); ColumnField field = doType.getColumnField("acls"); return new ContainmentPermissionsConstraintImpl(key, field, clazz); } public static ContainmentPermissionsConstraint getUserMappingsWithDomain(String domain) { DataObjectType doType = TypeMap.getDoType(TenantOrg.class); ColumnField field = doType.getColumnField("userMappings"); return new ContainmentPermissionsConstraintImpl(domain.toLowerCase(), field, TenantOrg.class); } public static Constraint getConstraint(Class<? extends DataObject> type, String columeField, String key) { DataObjectType doType = TypeMap.getDoType(type); ColumnField field = doType.getColumnField(columeField); return new ContainmentPermissionsConstraintImpl(key, field, type); } public static ContainmentPermissionsConstraint getDiscoveredObjsWithPermissionsConstraint(String key, Class<? extends DiscoveredComputeSystemWithAcls> clazz) { DataObjectType doType = TypeMap.getDoType(clazz); ColumnField field = doType.getColumnField("acls"); return new ContainmentPermissionsConstraintImpl(key, field, clazz); } } }