http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/303f7b70/security-admin/db/mysql/patches/016-updated-schema-for-tag-based-policy.sql ---------------------------------------------------------------------- diff --git a/security-admin/db/mysql/patches/016-updated-schema-for-tag-based-policy.sql b/security-admin/db/mysql/patches/016-updated-schema-for-tag-based-policy.sql index 4f6fe02..629d1c4 100644 --- a/security-admin/db/mysql/patches/016-updated-schema-for-tag-based-policy.sql +++ b/security-admin/db/mysql/patches/016-updated-schema-for-tag-based-policy.sql @@ -34,6 +34,7 @@ CREATE TABLE IF NOT EXISTS `x_tag_def` ( `is_enabled` TINYINT NULL DEFAULT 1, PRIMARY KEY (`id`), UNIQUE INDEX `guid_UNIQUE` (`guid` ASC), + INDEX `fk_X_TAG_DEF_NAME` (`name` ASC), INDEX `fk_X_TAG_DEF_ADDED_BY_ID` (`added_by_id` ASC), INDEX `fk_X_TAG_DEF_UPD_BY_ID` (`upd_by_id` ASC), CONSTRAINT `fk_X_TAG_DEF_ADDED_BY_ID` @@ -61,17 +62,14 @@ CREATE TABLE IF NOT EXISTS `x_tag` ( `update_time` DATETIME NULL, `added_by_id` BIGINT(20) NULL, `upd_by_id` BIGINT(20) NULL, - `tag_def_id` BIGINT(20) NULL, - `external_id` VARCHAR(512) NULL, `name` VARCHAR(512) NOT NULL, PRIMARY KEY (`id`), - INDEX `fk_X_TAG_DEF_ID` (`tag_def_id` ASC), + INDEX `fk_X_TAG_NAME` (`name` ASC), INDEX `fk_X_TAG_ADDED_BY_ID` (`added_by_id` ASC), INDEX `fk_X_TAG_UPD_BY_ID` (`upd_by_id` ASC), - KEY `external_id` (`external_id`), - CONSTRAINT `fk_X_TAG_DEF_ID` - FOREIGN KEY (`tag_def_id`) - REFERENCES `x_tag_def` (`id`) + CONSTRAINT `fk_X_TAG_NAME` + FOREIGN KEY (`name`) + REFERENCES `x_tag_def` (`name`) ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT `fk_X_TAG_ADDED_BY_ID` @@ -89,11 +87,11 @@ ENGINE = InnoDB; -- ----------------------------------------------------- --- Table `x_tagged_resource` +-- Table `x_service_resource` -- ----------------------------------------------------- -DROP TABLE IF EXISTS `x_tagged_resource` ; +DROP TABLE IF EXISTS `x_service_resource` ; -CREATE TABLE IF NOT EXISTS `x_tagged_resource` ( +CREATE TABLE IF NOT EXISTS `x_service_resource` ( `id` BIGINT(20) NOT NULL AUTO_INCREMENT, `guid` VARCHAR(512) NOT NULL, `create_time` DATETIME NULL, @@ -101,24 +99,23 @@ CREATE TABLE IF NOT EXISTS `x_tagged_resource` ( `added_by_id` BIGINT(20) NULL, `upd_by_id` BIGINT(20) NULL, `version` BIGINT(20) NULL, - `external_id` VARCHAR(512) NULL, `service_id` BIGINT(20) NOT NULL, + `resource_signature` varchar(128) DEFAULT NULL, `is_enabled` TINYINT NULL DEFAULT 1, PRIMARY KEY (`id`), - INDEX `fk_X_TAGGED_RESOURCE_ADDED_BY_ID` (`added_by_id` ASC), - INDEX `fk_X_TAGGED_RESOURCE_UPD_BY_ID` (`upd_by_id` ASC), - KEY `external_id` (`external_id`), - CONSTRAINT `fk_X_TAGGED_RESOURCE_SERVICE_ID` + INDEX `fk_X_SERVICE_RESOURCE_ADDED_BY_ID` (`added_by_id` ASC), + INDEX `fk_X_SERVICE_RESOURCE_UPD_BY_ID` (`upd_by_id` ASC), + CONSTRAINT `fk_X_SERVICE_RESOURCE_SERVICE_ID` FOREIGN KEY (`service_id`) REFERENCES `x_service` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT, - CONSTRAINT `fk_X_TAGGED_RESOURCE_ADDED_BY_ID` + CONSTRAINT `fk_X_SERVICE_RESOURCE_ADDED_BY_ID` FOREIGN KEY (`added_by_id`) REFERENCES `x_portal_user` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT, - CONSTRAINT `fk_X_TAGGED_RESOURCE_UPD_BY_ID` + CONSTRAINT `fk_X_SERVICE_RESOURCE_UPD_BY_ID` FOREIGN KEY (`upd_by_id`) REFERENCES `x_portal_user` (`id`) ON DELETE RESTRICT @@ -127,40 +124,40 @@ ENGINE = InnoDB; -- ----------------------------------------------------- --- Table `x_tagged_resource_value` +-- Table `x_service_resource_element` -- ----------------------------------------------------- -DROP TABLE IF EXISTS `x_tagged_resource_value` ; +DROP TABLE IF EXISTS `x_service_resource_element` ; -CREATE TABLE IF NOT EXISTS `x_tagged_resource_value` ( +CREATE TABLE IF NOT EXISTS `x_service_resource_element` ( `id` BIGINT(20) NOT NULL AUTO_INCREMENT, `guid` VARCHAR(512) NOT NULL, `create_time` DATETIME NULL, `update_time` DATETIME NULL, `added_by_id` BIGINT(20) NULL, `upd_by_id` BIGINT(20) NULL, - `tagged_res_id` BIGINT(20) NOT NULL, + `res_id` BIGINT(20) NOT NULL, `res_def_id` BIGINT(20) NOT NULL, `is_excludes` TINYINT(1) NULL DEFAULT false, `is_recursive` TINYINT(1) NULL DEFAULT false, PRIMARY KEY (`id`), - INDEX `fk_X_TAGGED_RESOURCE_VALUE_ADDED_BY_ID` (`added_by_id` ASC), - INDEX `fk_X_TAGGED_RESOURCE_VALUE_UPD_BY_ID` (`upd_by_id` ASC), - CONSTRAINT `fk_X_TAGGED_RESOURCE_VALUE_res_def_id` + INDEX `fk_X_SERVICE_RESOURCE_ELEMENT_ADDED_BY_ID` (`added_by_id` ASC), + INDEX `fk_X_SERVICE_RESOURCE_ELEMENT_UPD_BY_ID` (`upd_by_id` ASC), + CONSTRAINT `fk_X_SERVICE_RESOURCE_ELEMENT_res_def_id` FOREIGN KEY (`res_def_id`) REFERENCES `x_resource_def` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT, - CONSTRAINT `fk_X_TAGGED_RESOURCE_VALUE_tagged_res_id` - FOREIGN KEY (`tagged_res_id`) - REFERENCES `x_tagged_resource` (`id`) + CONSTRAINT `fk_X_SERVICE_RESOURCE_ELEMENT_res_id` + FOREIGN KEY (`res_id`) + REFERENCES `x_service_resource` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT, - CONSTRAINT `fk_X_TAGGED_RESOURCE_VALUE_ADDED_BY_ID` + CONSTRAINT `fk_X_SERVICE_RESOURCE_ELEMENT_ADDED_BY_ID` FOREIGN KEY (`added_by_id`) REFERENCES `x_portal_user` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT, - CONSTRAINT `fk_X_TAGGED_RESOURCE_VALUE_UPD_BY_ID` + CONSTRAINT `fk_X_SERVICE_RESOURCE_ELEMENT_UPD_BY_ID` FOREIGN KEY (`upd_by_id`) REFERENCES `x_portal_user` (`id`) ON DELETE RESTRICT @@ -254,10 +251,10 @@ CREATE TABLE IF NOT EXISTS `x_tag_resource_map` ( `added_by_id` BIGINT(20) NULL, `upd_by_id` BIGINT(20) NULL, `tag_id` BIGINT(20) NOT NULL, - `tagged_res_id` BIGINT(20) NOT NULL, + `res_id` BIGINT(20) NOT NULL, PRIMARY KEY (`id`), INDEX `fk_X_TAG_ID` (`tag_id` ASC), - INDEX `fk_X_TAGGED_RES_ID` (`tagged_res_id` ASC), + INDEX `fk_X_SERVICE_RES_ID` (`res_id` ASC), INDEX `fk_X_TAG_RES_MAP_ADDED_BY_ID` (`added_by_id` ASC), INDEX `fk_X_TAG_RES_MAP_UPD_BY_ID` (`upd_by_id` ASC), CONSTRAINT `fk_X_TAG_RES_MAP_TAG_ID` @@ -265,9 +262,9 @@ CREATE TABLE IF NOT EXISTS `x_tag_resource_map` ( REFERENCES `x_tag` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT, - CONSTRAINT `fk_X_TAG_RES_MAP_TAGGED_RES_ID` - FOREIGN KEY (`tagged_res_id`) - REFERENCES `x_tagged_resource` (`id`) + CONSTRAINT `fk_X_TAG_RES_MAP_SERVICE_RES_ID` + FOREIGN KEY (`res_id`) + REFERENCES `x_service_resource` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT, CONSTRAINT `fk_X_TAG_RES_MAP_ADDED_BY_ID` @@ -284,35 +281,35 @@ ENGINE = InnoDB; -- ----------------------------------------------------- --- Table `x_tagged_resource_value_map` +-- Table `x_service_resource_element_value` -- ----------------------------------------------------- -DROP TABLE IF EXISTS `x_tagged_resource_value_map` ; +DROP TABLE IF EXISTS `x_service_resource_element_value` ; -CREATE TABLE IF NOT EXISTS `x_tagged_resource_value_map` ( +CREATE TABLE IF NOT EXISTS `x_service_resource_element_value` ( `id` BIGINT(20) NOT NULL AUTO_INCREMENT, `guid` VARCHAR(512) NOT NULL, `create_time` DATETIME NULL, `update_time` DATETIME NULL, `added_by_id` BIGINT(20) NULL, `upd_by_id` BIGINT(20) NULL, - `res_value_id` BIGINT(20) NOT NULL, + `res_element_id` BIGINT(20) NOT NULL, `value` VARCHAR(512) NOT NULL, `sort_order` INT NULL, PRIMARY KEY (`id`), - INDEX `fk_X_RESOURCE_VALUE_ID` (`res_value_id` ASC), - INDEX `fk_X_TAGGED_RES_VAL_MAP_ADDED_BY_ID` (`added_by_id` ASC), - INDEX `fk_X_TAGGED_RES_VAL_MAP_UPD_BY_ID` (`upd_by_id` ASC), - CONSTRAINT `fk_X_RESOURCE_VALUE_ID` - FOREIGN KEY (`res_value_id`) - REFERENCES `x_tagged_resource_value` (`id`) + INDEX `fk_X_RESOURCE_ELEMENT_ID` (`res_element_id` ASC), + INDEX `fk_X_SERVICE_RES_VAL_MAP_ADDED_BY_ID` (`added_by_id` ASC), + INDEX `fk_X_SERVICE_RES_VAL_MAP_UPD_BY_ID` (`upd_by_id` ASC), + CONSTRAINT `fk_X_RESOURCE_ELEMENT_ID` + FOREIGN KEY (`res_element_id`) + REFERENCES `x_service_resource_element` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT, - CONSTRAINT `fk_X_TAGGED_RES_VAL_MAP_ADDED_BY_ID` + CONSTRAINT `fk_X_SERVICE_RES_VAL_MAP_ADDED_BY_ID` FOREIGN KEY (`added_by_id`) REFERENCES `x_portal_user` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT, - CONSTRAINT `fk_X_TAGGED_RES_VAL_MAP_UPD_BY_ID` + CONSTRAINT `fk_X_SERVICE_RES_VAL_MAP_UPD_BY_ID` FOREIGN KEY (`upd_by_id`) REFERENCES `x_portal_user` (`id`) ON DELETE RESTRICT @@ -324,4 +321,6 @@ ENGINE = InnoDB; -- ranger database add column in x_service_def and x_service table -- ---------------------------------------------------------------- alter table x_service_def add column `options` VARCHAR(1024) DEFAULT NULL NULL; -alter table x_service add column `tag_service` BIGINT DEFAULT NULL NULL; \ No newline at end of file +alter table x_service add column `tag_service` BIGINT DEFAULT NULL NULL, + add column `tag_version` BIGINT DEFAULT 0 NOT NULL, + add column `tag_update_time` DATETIME DEFAULT NULL NULL;
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/303f7b70/security-admin/src/main/java/org/apache/ranger/biz/TagDBStore.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/biz/TagDBStore.java b/security-admin/src/main/java/org/apache/ranger/biz/TagDBStore.java index f50687a..08a632c 100644 --- a/security-admin/src/main/java/org/apache/ranger/biz/TagDBStore.java +++ b/security-admin/src/main/java/org/apache/ranger/biz/TagDBStore.java @@ -20,16 +20,12 @@ package org.apache.ranger.biz; import java.util.ArrayList; -import java.util.Collections; -import java.util.Comparator; -import java.util.Date; +import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.Map.Entry; -import java.util.regex.Matcher; -import java.util.regex.Pattern; import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.collections.MapUtils; import org.apache.commons.lang.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -41,33 +37,27 @@ import org.apache.ranger.entity.XXDBBase; import org.apache.ranger.entity.XXResourceDef; import org.apache.ranger.entity.XXService; import org.apache.ranger.entity.XXServiceDef; -import org.apache.ranger.entity.XXTag; import org.apache.ranger.entity.XXTagAttribute; import org.apache.ranger.entity.XXTagAttributeDef; -import org.apache.ranger.entity.XXTagResourceMap; -import org.apache.ranger.entity.XXTaggedResource; -import org.apache.ranger.entity.XXTaggedResourceValue; -import org.apache.ranger.entity.XXTaggedResourceValueMap; +import org.apache.ranger.entity.XXServiceResourceElement; +import org.apache.ranger.entity.XXServiceResourceElementValue; import org.apache.ranger.plugin.model.*; import org.apache.ranger.plugin.model.RangerPolicy.RangerPolicyResource; import org.apache.ranger.plugin.model.RangerTagDef.RangerTagAttributeDef; -import org.apache.ranger.plugin.model.RangerTag; -import org.apache.ranger.plugin.policyresourcematcher.RangerDefaultPolicyResourceMatcher; import org.apache.ranger.plugin.store.AbstractTagStore; import org.apache.ranger.plugin.store.PList; -import org.apache.ranger.plugin.store.ServiceStore; -import org.apache.ranger.plugin.store.TagStore; import org.apache.ranger.plugin.util.SearchFilter; import org.apache.ranger.plugin.util.ServiceTags; import org.apache.ranger.service.RangerAuditFields; import org.apache.ranger.service.RangerTagDefService; +import org.apache.ranger.service.RangerTagResourceMapService; import org.apache.ranger.service.RangerTagService; -import org.apache.ranger.service.RangerTaggedResourceService; +import org.apache.ranger.service.RangerServiceResourceService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @Component -public class TagDBStore implements TagStore { +public class TagDBStore extends AbstractTagStore { private static final Log LOG = LogFactory.getLog(TagDBStore.class); @Autowired @@ -77,7 +67,10 @@ public class TagDBStore implements TagStore { RangerTagService rangerTagService; @Autowired - RangerTaggedResourceService rangerTaggedResourceService; + RangerServiceResourceService rangerServiceResourceService; + + @Autowired + RangerTagResourceMapService rangerTagResourceMapService; @Autowired RangerDaoManager daoManager; @@ -91,41 +84,25 @@ public class TagDBStore implements TagStore { @Autowired GUIDUtil guidUtil; - @Autowired - ServiceDBStore serviceDBStore; - @Override public void init() throws Exception { - - } - - @Override - public void setServiceStore(ServiceStore svcStore) { - + super.init(); } @Override public RangerTagDef createTagDef(RangerTagDef tagDef) throws Exception { - if (LOG.isDebugEnabled()) { LOG.debug("==> TagDBStore.createTagDef(" + tagDef + ")"); } - RangerTagDef ret; - - try { - ret = rangerTagDefService.create(tagDef); - - createTagAttributeDefs(ret.getId(), tagDef.getAttributeDefs()); + RangerTagDef ret = rangerTagDefService.create(tagDef); - ret = rangerTagDefService.read(ret.getId()); + createTagAttributeDefs(ret.getId(), tagDef.getAttributeDefs()); - } catch (Exception e) { - throw errorUtil.createRESTException("failed to save tag-def [" + tagDef.getName() + "]", MessageEnums.ERROR_CREATING_OBJECT); - } + ret = rangerTagDefService.read(ret.getId()); if (LOG.isDebugEnabled()) { - LOG.debug("<== TagDBStore.createTagDef(" + tagDef + ")"); + LOG.debug("<== TagDBStore.createTagDef(" + tagDef + "): id=" + (ret == null ? null : ret.getId())); } return ret; @@ -133,627 +110,925 @@ public class TagDBStore implements TagStore { @Override public RangerTagDef updateTagDef(RangerTagDef tagDef) throws Exception { - if (LOG.isDebugEnabled()) { LOG.debug("==> TagDBStore.updateTagDef(" + tagDef + ")"); } RangerTagDef existing = rangerTagDefService.read(tagDef.getId()); - RangerTagDef ret = null; + if (existing == null) { - throw errorUtil.createRESTException("failed to update tag-def [" + tagDef.getName() + "], Reason: No TagDef found with id: [" + tagDef.getId() + "]", - MessageEnums.DATA_NOT_UPDATABLE); + throw errorUtil.createRESTException("failed to update tag-def [" + tagDef.getName() + "], Reason: No TagDef found with id: [" + tagDef.getId() + "]", MessageEnums.DATA_NOT_UPDATABLE); } if (StringUtils.isEmpty(tagDef.getCreatedBy())) { tagDef.setCreatedBy(existing.getCreatedBy()); } + if (tagDef.getCreateTime() == null) { tagDef.setCreateTime(existing.getCreateTime()); } + if (StringUtils.isEmpty(tagDef.getGuid())) { tagDef.setGuid(existing.getGuid()); } - ret = rangerTagDefService.update(tagDef); + RangerTagDef ret = rangerTagDefService.update(tagDef); + // TODO: delete attributes might fail; so instead of delete+create, following should be updated to deal with only attributes that changed deleteTagAttributeDefs(ret.getId()); - createTagAttributeDefs(ret.getId(), tagDef.getAttributeDefs()); - return rangerTagDefService.read(ret.getId()); - } - - private List<XXTagAttributeDef> createTagAttributeDefs(Long tagDefId, List<RangerTagAttributeDef> tagAttrDefList) { - - if (tagDefId == null) { - throw errorUtil.createRESTException("TagDBStore.createTagAttributeDefs(): Error creating tag-attr def. tagDefId can not be null.", MessageEnums.ERROR_CREATING_OBJECT); - } - - if (CollectionUtils.isEmpty(tagAttrDefList)) { - return null; - } - - List<XXTagAttributeDef> xTagAttrDefList = new ArrayList<XXTagAttributeDef>(); - for (RangerTagDef.RangerTagAttributeDef attrDef : tagAttrDefList) { - XXTagAttributeDef xAttrDef = new XXTagAttributeDef(); - - xAttrDef.setGuid(guidUtil.genGUID()); - xAttrDef.setTagDefId(tagDefId); - xAttrDef.setName(attrDef.getName()); - xAttrDef.setType(attrDef.getType()); - xAttrDef = (XXTagAttributeDef) rangerAuditFields.populateAuditFieldsForCreate(xAttrDef); + ret = rangerTagDefService.read(ret.getId()); - xAttrDef = daoManager.getXXTagAttributeDef().create(xAttrDef); - - xTagAttrDefList.add(xAttrDef); - } - return xTagAttrDefList; - } - - private void deleteTagAttributeDefs(Long tagDefId) { - if (tagDefId == null) { - return; - } - List<XXTagAttributeDef> tagAttrDefList = daoManager.getXXTagAttributeDef().findByTagDefId(tagDefId); - - if (CollectionUtils.isEmpty(tagAttrDefList)) { - return; + if (LOG.isDebugEnabled()) { + LOG.debug("<== TagDBStore.updateTagDef(" + tagDef + "): " + ret); } - for (XXTagAttributeDef xAttrDef : tagAttrDefList) { - if (LOG.isDebugEnabled()) { - LOG.debug("Deleting tag-attribute def [" + xAttrDef.getName() + "]"); - } - daoManager.getXXTagAttributeDef().remove(xAttrDef); - } + return ret; } @Override public void deleteTagDef(String name) throws Exception { + if (LOG.isDebugEnabled()) { + LOG.debug("==> TagDBStore.deleteTagDef(" + name + ")"); + } if (StringUtils.isNotBlank(name)) { - return; - } + List<RangerTagDef> tagDefs = getTagDefsByName(name); - List<RangerTagDef> ret; + if(CollectionUtils.isNotEmpty(tagDefs)) { + for (RangerTagDef tagDef : tagDefs) { + if(LOG.isDebugEnabled()) { + LOG.debug("Deleting tag-def [name=" + name + "; id=" + tagDef.getId() + "]"); + } - if (LOG.isDebugEnabled()) { - LOG.debug("Deleting all tag-defs with name [" + name + "]"); + rangerTagDefService.delete(tagDef); + } + } } - SearchFilter filter = new SearchFilter(SearchFilter.TAG_DEF_NAME, name); - ret = getTagDefs(filter); - - for (RangerTagDef tagDef : ret) { - LOG.info("Deleting tag-def with name [" + name + "]"); - rangerTagDefService.delete(tagDef); + if (LOG.isDebugEnabled()) { + LOG.debug("<== TagDBStore.deleteTagDef(" + name + ")"); } } @Override public void deleteTagDefById(Long id) throws Exception { if (LOG.isDebugEnabled()) { - LOG.debug("Deleting tag-def [" + id + "]"); + LOG.debug("==> TagDBStore.deleteTagDefById(" + id + ")"); } - RangerTagDef tagDef = rangerTagDefService.read(id); - - rangerTagDefService.delete(tagDef); - } + if(id != null) { + RangerTagDef tagDef = rangerTagDefService.read(id); - @Override - public List<RangerTagDef> getTagDef(String name) throws Exception { + if(tagDef != null) { + rangerTagDefService.delete(tagDef); + } + } - List<RangerTagDef> ret; - if (StringUtils.isNotBlank(name)) { - SearchFilter filter = new SearchFilter(SearchFilter.TAG_DEF_NAME, name); - ret = getTagDefs(filter); - } else { - ret = null; + if (LOG.isDebugEnabled()) { + LOG.debug("<== TagDBStore.deleteTagDefById(" + id + ")"); } - return ret; } @Override public RangerTagDef getTagDefById(Long id) throws Exception { - return rangerTagDefService.read(id); - } - - @Override - public List<RangerTagDef> getTagDefs(SearchFilter filter) throws Exception { - return getPaginatedTagDefs(filter).getList(); - } - - @Override - public PList<RangerTagDef> getPaginatedTagDefs(SearchFilter filter) throws Exception { - return rangerTagDefService.searchRangerTagDefs(filter); - } + if (LOG.isDebugEnabled()) { + LOG.debug("==> TagDBStore.getTagDefById(" + id + ")"); + } - /* - private XXTag createTagAttributes(RangerTag tag) { - XXTag xTag = new XXTag(); + RangerTagDef ret = rangerTagDefService.read(id); - xTag.setExternalId(tag.getExternalId()); - xTag.setName(tag.getName()); - xTag.setGuid(guidUtil.genGUID()); - xTag = (XXTag) rangerAuditFields.populateAuditFieldsForCreate(xTag); + if (LOG.isDebugEnabled()) { + LOG.debug("<== TagDBStore.getTagDefById(" + id + "): " + ret); + } - xTag = daoManager.getXXTag().create(xTag); + return ret; + } - for (Entry<String, String> attr : tag.getAttributeValues().entrySet()) { - XXTagAttribute xTagAttr = new XXTagAttribute(); + @Override + public RangerTagDef getTagDefByGuid(String guid) throws Exception { + if (LOG.isDebugEnabled()) { + LOG.debug("==> TagDBStore.getTagDefByGuid(" + guid + ")"); + } - xTagAttr.setTagId(xTag.getId()); - xTagAttr.setName(attr.getKey()); - xTagAttr.setValue(attr.getValue()); - xTagAttr.setGuid(guidUtil.genGUID()); - xTagAttr = (XXTagAttribute) rangerAuditFields.populateAuditFieldsForCreate(xTagAttr); + RangerTagDef ret = rangerTagDefService.getTagDefByGuid(guid); - xTagAttr = daoManager.getXXTagAttribute().create(xTagAttr); + if (LOG.isDebugEnabled()) { + LOG.debug("<== TagDBStore.getTagDefByGuid(" + guid + "): " + ret); } - return xTag; + return ret; } - private void deleteTagAttributes(Long tagId) { - List<XXTagAttribute> tagAttrList = daoManager.getXXTagAttribute().findByTagId(tagId); - for (XXTagAttribute tagAttr : tagAttrList) { - daoManager.getXXTagAttribute().remove(tagAttr); + @Override + public List<RangerTagDef> getTagDefsByName(String name) throws Exception { + if (LOG.isDebugEnabled()) { + LOG.debug("==> TagDBStore.getTagDefsByName(" + name + ")"); } - } - - private void createResourceSpecForResource(RangerServiceResource resource) { - String serviceName = resource.getServiceName(); + List<RangerTagDef> ret = null; - XXService xService = daoManager.getXXService().findByName(serviceName); - if (xService == null) { - throw errorUtil.createRESTException("No Service found with name: " + serviceName, MessageEnums.ERROR_CREATING_OBJECT); + if (StringUtils.isNotBlank(name)) { + ret = rangerTagDefService.getTagDefsByName(name); } - XXServiceDef xServiceDef = daoManager.getXXServiceDef().getById(xService.getType()); - if (xServiceDef == null) { - throw errorUtil.createRESTException("No Service-Def found with ID: " + xService.getType(), MessageEnums.ERROR_CREATING_OBJECT); + if (LOG.isDebugEnabled()) { + LOG.debug("<== TagDBStore.getTagDefsByName(" + name + "): count=" + (ret == null ? 0 : ret.size())); } - Map<String, RangerPolicy.RangerPolicyResource> resourceSpec = resource.getResourceSpec(); - - for (Entry<String, RangerPolicyResource> resSpec : resourceSpec.entrySet()) { - XXResourceDef xResDef = daoManager.getXXResourceDef().findByNameAndServiceDefId(resSpec.getKey(), xServiceDef.getId()); - - if (xResDef == null) { - LOG.error("TagDBStore.createResource: ResourceType is not valid [" + resSpec.getKey() + "]"); - throw errorUtil.createRESTException("Resource Type is not valid [" + resSpec.getKey() + "]", MessageEnums.DATA_NOT_FOUND); - } - - RangerPolicyResource policyRes = resSpec.getValue(); - - XXTaggedResourceValue taggedResValue = new XXTaggedResourceValue(); - taggedResValue.setIsExcludes(policyRes.getIsExcludes()); - taggedResValue.setIsRecursive(policyRes.getIsRecursive()); - taggedResValue.setResDefId(xResDef.getId()); - taggedResValue.setTaggedResourceId(resource.getId()); - taggedResValue.setGuid(guidUtil.genGUID()); - - taggedResValue = (XXTaggedResourceValue) rangerAuditFields.populateAuditFieldsForCreate(taggedResValue); - - taggedResValue = daoManager.getXXTaggedResourceValue().create(taggedResValue); - - int sortOrder = 1; - for (String resVal : policyRes.getValues()) { - XXTaggedResourceValueMap taggedResValueMap = new XXTaggedResourceValueMap(); - taggedResValueMap.setResValueId(taggedResValue.getId()); - taggedResValueMap.setValue(resVal); - taggedResValueMap.setSortOrder(sortOrder); - taggedResValueMap.setGuid(guidUtil.genGUID()); - taggedResValueMap = (XXTaggedResourceValueMap) rangerAuditFields.populateAuditFieldsForCreate(taggedResValueMap); - - taggedResValueMap = daoManager.getXXTaggedResourceValueMap().create(taggedResValueMap); - sortOrder++; - } - } + return ret; } - private void deleteResourceValue(Long resourceId) { - List<XXTaggedResourceValue> taggedResValueList = daoManager.getXXTaggedResourceValue().findByTaggedResId(resourceId); - for (XXTaggedResourceValue taggedResValue : taggedResValueList) { - List<XXTaggedResourceValueMap> taggedResValueMapList = daoManager.getXXTaggedResourceValueMap().findByResValueId(taggedResValue.getId()); - for (XXTaggedResourceValueMap taggedResValueMap : taggedResValueMapList) { - daoManager.getXXTaggedResourceValueMap().remove(taggedResValueMap); - } - daoManager.getXXTaggedResourceValue().remove(taggedResValue); + @Override + public List<RangerTagDef> getTagDefs(SearchFilter filter) throws Exception { + if (LOG.isDebugEnabled()) { + LOG.debug("==> TagDBStore.getTagDefs(" + filter + ")"); } - } - private void updateResourceSpecForResource(RangerServiceResource updResource) { + List<RangerTagDef> ret = getPaginatedTagDefs(filter).getList(); - if (updResource != null) { - deleteResourceValue(updResource.getId()); + if (LOG.isDebugEnabled()) { + LOG.debug("<== TagDBStore.getTagDefs(" + filter + "): " + ret); } - createResourceSpecForResource(updResource); + return ret; } - */ @Override - public RangerTag createTag(RangerTag tag) throws Exception - { - throw new Exception("Not implemented"); - - /* + public PList<RangerTagDef> getPaginatedTagDefs(SearchFilter filter) throws Exception { if (LOG.isDebugEnabled()) { - LOG.debug("==> TagDBStore.createTag(" + tag + ")"); + LOG.debug("==> TagDBStore.getPaginatedTagDefs(" + filter + ")"); } - throw new Exception("Not implemented"); - + PList<RangerTagDef> ret = rangerTagDefService.searchRangerTagDefs(filter); + if (LOG.isDebugEnabled()) { + LOG.debug("<== TagDBStore.getPaginatedTagDefs(" + filter + "): " + ret); + } - RangerTag ret = null; + return ret; + } - try { + @Override + public RangerTag createTag(RangerTag tag) throws Exception { + if (LOG.isDebugEnabled()) { + LOG.debug("==> TagDBStore.createTag(" + tag + ")"); + } - ret = rangerTagService.getPopulatedViewObject(createTagAttributes(tag)); + RangerTag ret = rangerTagService.create(tag); - } catch (Exception e) { - throw errorUtil.createRESTException("failed to save tag [" + tag.getName() + "]", MessageEnums.ERROR_CREATING_OBJECT); - } + createTagAttributes(ret.getId(), tag.getAttributeValues()); + ret = rangerTagService.read(ret.getId()); if (LOG.isDebugEnabled()) { - LOG.debug("<== TagDBStore.createTag(" + tag + ")"); + LOG.debug("<== TagDBStore.createTag(" + tag + "): " + ret); } return ret; - */ } - + @Override - public RangerTag updateTag(RangerTag tag) throws Exception - { - - throw new Exception("Not implemented"); - - /* + public RangerTag updateTag(RangerTag tag) throws Exception { if (LOG.isDebugEnabled()) { LOG.debug("==> TagDBStore.updateTag(" + tag + ")"); } - throw new Exception("Not implemented"); - - RangerTag ret = null; - - RangerTag existing = rangerTagService.read(tag.getId()); if (existing == null) { - throw errorUtil.createRESTException("failed to update tag [" + tag.getName() + "], Reason: No Tag found with id: [" + tag.getId() + "]", - MessageEnums.DATA_NOT_UPDATABLE); + throw errorUtil.createRESTException("failed to update tag [" + tag.getName() + "], Reason: No Tag found with id: [" + tag.getId() + "]", MessageEnums.DATA_NOT_UPDATABLE); } if (StringUtils.isEmpty(tag.getCreatedBy())) { tag.setCreatedBy(existing.getCreatedBy()); } + if (tag.getCreateTime() == null) { tag.setCreateTime(existing.getCreateTime()); } + if (StringUtils.isEmpty(tag.getGuid())) { tag.setGuid(existing.getGuid()); } - deleteTagAttributes(existing.getId()); + RangerTag ret = rangerTagService.update(tag); - createTagAttributes(tag); - - ret = rangerTagService.update(tag); + deleteTagAttributes(existing.getId()); + createTagAttributes(existing.getId(), tag.getAttributeValues()); ret = rangerTagService.read(ret.getId()); - - if (LOG.isDebugEnabled()) { LOG.debug("<== TagDBStore.updateTag(" + tag + ") : " + ret); } return ret; - */ } @Override public void deleteTagById(Long id) throws Exception { + if (LOG.isDebugEnabled()) { + LOG.debug("==> TagDBStore.deleteTagById(" + id + ")"); + } - throw new Exception("Not implemented"); - - /* RangerTag tag = rangerTagService.read(id); + deleteTagAttributes(id); + rangerTagService.delete(tag); - */ + + if (LOG.isDebugEnabled()) { + LOG.debug("<== TagDBStore.deleteTagById(" + id + ")"); + } } @Override public RangerTag getTagById(Long id) throws Exception { - throw new Exception("Not implemented"); + if (LOG.isDebugEnabled()) { + LOG.debug("==> TagDBStore.getTagById(" + id + ")"); + } - /* - RangerTag ret = null; + RangerTag ret = rangerTagService.read(id); - ret = rangerTagService.read(id); + if (LOG.isDebugEnabled()) { + LOG.debug("<== TagDBStore.getTagById(" + id + "): " + ret); + } + + return ret; + } + + @Override + public RangerTag getTagByGuid(String guid) throws Exception { + if (LOG.isDebugEnabled()) { + LOG.debug("==> TagDBStore.getTagByGuid(" + guid + ")"); + } + + RangerTag ret = rangerTagService.getTagByGuid(guid); + + if (LOG.isDebugEnabled()) { + LOG.debug("<== TagDBStore.getTagByGuid(" + guid + "): " + ret); + } return ret; - */ } @Override public List<RangerTag> getTagsByName(String name) throws Exception { - throw new Exception("Not implemented"); + if (LOG.isDebugEnabled()) { + LOG.debug("==> TagDBStore.getTagsByName(" + name + ")"); + } - /* List<RangerTag> ret = null; if (StringUtils.isNotBlank(name)) { - SearchFilter filter = new SearchFilter(SearchFilter.TAG_DEF_NAME, name); - ret = getTags(filter); - } else { - ret = null; + ret = rangerTagService.getTagsByName(name); + } + + if (LOG.isDebugEnabled()) { + LOG.debug("<== TagDBStore.getTagsByName(" + name + "): count=" + (ret == null ? 0 : ret.size())); } return ret; - */ } @Override - public List<RangerTag> getTagsByExternalId(String externalId) throws Exception { - throw new Exception("Not implemented"); + public List<RangerTag> getTagsForResourceId(Long resourceId) throws Exception { + if (LOG.isDebugEnabled()) { + LOG.debug("==> TagDBStore.getTagsForResourceId(" + resourceId + ")"); + } - /* List<RangerTag> ret = null; - if (StringUtils.isNotBlank(externalId)) { - SearchFilter filter = new SearchFilter(SearchFilter.TAG_EXTERNAL_ID, externalId); - ret = getTags(filter); - } else { - ret = null; + if (resourceId != null) { + ret = rangerTagService.getTagsForResourceId(resourceId); + } + + if (LOG.isDebugEnabled()) { + LOG.debug("<== TagDBStore.getTagsForResourceId(" + resourceId + "): count=" + (ret == null ? 0 : ret.size())); } return ret; - */ } @Override - public List<RangerTag> getTags(SearchFilter filter) throws Exception { - throw new Exception("Not implemented"); + public List<RangerTag> getTagsForResourceGuid(String resourceGuid) throws Exception { + if (LOG.isDebugEnabled()) { + LOG.debug("==> TagDBStore.getTagsForResourceGuid(" + resourceGuid + ")"); + } - /* List<RangerTag> ret = null; - ret = rangerTagService.searchRangerTags(filter).getList(); + if (resourceGuid != null) { + ret = rangerTagService.getTagsForResourceGuid(resourceGuid); + } + + if (LOG.isDebugEnabled()) { + LOG.debug("<== TagDBStore.getTagsForResourceGuid(" + resourceGuid + "): count=" + (ret == null ? 0 : ret.size())); + } return ret; - */ } - @Override - public RangerServiceResource createServiceResource(RangerServiceResource resource) throws Exception { - throw new Exception("Not implemented"); + public List<RangerTag> getTags(SearchFilter filter) throws Exception { + if (LOG.isDebugEnabled()) { + LOG.debug("==> TagDBStore.getTags(" + filter + ")"); + } + + List<RangerTag> ret = rangerTagService.searchRangerTags(filter).getList(); - /* if (LOG.isDebugEnabled()) { + LOG.debug("<== TagDBStore.getTags(" + filter + "): count=" + (ret == null ? 0 : ret.size())); + } + + return ret; + } - LOG.debug("==> TagDBStore.createResource(" + resource + ")"); + @Override + public PList<RangerTag> getPaginatedTags(SearchFilter filter) throws Exception { + if (LOG.isDebugEnabled()) { + LOG.debug("==> TagDBStore.getPaginatedTags(" + filter + ")"); } - throw new Exception("Not implemented"); - RangerServiceResource ret = null; + PList<RangerTag> ret = rangerTagService.searchRangerTags(filter); - try { - ret = rangerTaggedResourceService.create(resource); + if (LOG.isDebugEnabled()) { + LOG.debug("<== TagDBStore.getPaginatedTags(" + filter + "): count=" + (ret == null ? 0 : ret.getPageSize())); + } - ret = rangerTaggedResourceService.read(ret.getId()); + return ret; + } - createResourceSpecForResource(ret); - } catch (Exception e) { - throw errorUtil.createRESTException("failed to save resource [" + resource.getId() + "]", MessageEnums.ERROR_CREATING_OBJECT); + @Override + public RangerServiceResource createServiceResource(RangerServiceResource resource) throws Exception { + if (LOG.isDebugEnabled()) { + LOG.debug("==> TagDBStore.createServiceResource(" + resource + ")"); } + // TODO: update resource signature + RangerServiceResource ret = rangerServiceResourceService.create(resource); + + createResourceSpecForResource(ret.getId(), resource); + + ret = rangerServiceResourceService.read(ret.getId()); if (LOG.isDebugEnabled()) { - LOG.debug("<== TagDBStore.createResource(" + resource + ")"); + LOG.debug("<== TagDBStore.createServiceResource(" + resource + ")"); } return ret; - */ } @Override public RangerServiceResource updateServiceResource(RangerServiceResource resource) throws Exception { - throw new Exception("Not implemented"); - - /* - if (LOG.isDebugEnabled()) { LOG.debug("==> TagDBStore.updateResource(" + resource + ")"); } - throw new Exception("Not implemented"); - - RangerServiceResource ret = null; - - RangerServiceResource existing = rangerTaggedResourceService.read(resource.getId()); - + RangerServiceResource existing = rangerServiceResourceService.read(resource.getId()); if (existing == null) { - throw errorUtil.createRESTException("failed to update tag [" + resource.getId() + "], Reason: No resource found with id: [" + resource.getId() + "]", - MessageEnums.DATA_NOT_UPDATABLE); + throw errorUtil.createRESTException("failed to update tag [" + resource.getId() + "], Reason: No resource found with id: [" + resource.getId() + "]", MessageEnums.DATA_NOT_UPDATABLE); } if (StringUtils.isEmpty(resource.getCreatedBy())) { resource.setCreatedBy(existing.getCreatedBy()); } + if (resource.getCreateTime() == null) { resource.setCreateTime(existing.getCreateTime()); } + if (StringUtils.isEmpty(resource.getGuid())) { resource.setGuid(existing.getGuid()); } - ret = rangerTaggedResourceService.update(resource); - - ret = rangerTaggedResourceService.read(ret.getId()); - - updateResourceSpecForResource(ret); + // TODO: update resource signature + rangerServiceResourceService.update(resource); + deleteResourceSpecForResource(existing.getId()); + createResourceSpecForResource(existing.getId(), resource); + RangerServiceResource ret = rangerServiceResourceService.read(existing.getId()); if (LOG.isDebugEnabled()) { LOG.debug("<== TagDBStore.updateResource(" + resource + ") : " + ret); } return ret; - */ } @Override public void deleteServiceResourceById(Long id) throws Exception { + if (LOG.isDebugEnabled()) { + LOG.debug("==> TagDBStore.deleteServiceResourceById(" + id + ")"); + } - throw new Exception("Not implemented"); + RangerServiceResource resource = getServiceResourceById(id); - /* - XXTaggedResource taggedRes = daoManager.getXXTaggedResource().getById(id); - if (taggedRes == null) { - throw errorUtil.createRESTException("No Resource exists with Id: " + id, MessageEnums.DATA_NOT_FOUND); + if(resource != null) { + deleteResourceSpecForResource(resource.getId()); + rangerServiceResourceService.delete(resource); } - // Remove taggedResourceValue - deleteResourceValue(id); - - // Remove taggedResource - daoManager.getXXTaggedResource().remove(id); - */ + if (LOG.isDebugEnabled()) { + LOG.debug("<== TagDBStore.deleteServiceResourceById(" + id + ")"); + } } @Override - public List<RangerServiceResource> getServiceResourcesByExternalId(String externalId) throws Exception { - - throw new Exception("Not implemented"); - - /* - List<RangerServiceResource> ret = null; + public RangerServiceResource getServiceResourceById(Long id) throws Exception { + if (LOG.isDebugEnabled()) { + LOG.debug("==> TagDBStore.getServiceResourceById(" + id + ")"); + } + RangerServiceResource ret = rangerServiceResourceService.read(id); - if (StringUtils.isNotBlank(externalId)) { - SearchFilter filter = new SearchFilter(SearchFilter.TAG_EXTERNAL_ID, externalId); - ret = getServiceResources(filter); - } else { - ret = null; + if (LOG.isDebugEnabled()) { + LOG.debug("<== TagDBStore.getServiceResourceById(" + id + "): " + ret); } return ret; - */ } @Override - public RangerServiceResource getServiceResourceById(Long id) throws Exception { + public RangerServiceResource getServiceResourceByGuid(String guid) throws Exception { + if (LOG.isDebugEnabled()) { + LOG.debug("==> TagDBStore.getServiceResourceByGuid(" + guid + ")"); + } - throw new Exception("Not implemented"); + RangerServiceResource ret = rangerServiceResourceService.getServiceResourceByGuid(guid); + + if (LOG.isDebugEnabled()) { + LOG.debug("<== TagDBStore.getServiceResourceByGuid(" + guid + "): " + ret); + } - /* - RangerServiceResource ret = null; - ret = rangerTaggedResourceService.read(id); return ret; - */ } + @Override + public List<RangerServiceResource> getServiceResourcesByServiceAndResourceSpec(String serviceName, Map<String, RangerPolicyResource> resourceSpec) throws Exception { + // TODO Auto-generated method stub + return null; + } @Override - public List<RangerServiceResource> getServiceResourcesByServiceAndResourceSpec(String serviceName, Map<String, RangerPolicy.RangerPolicyResource> resourceSpec) throws Exception { - throw new Exception("Not implemented"); + public List<RangerServiceResource> getServiceResources(SearchFilter filter) throws Exception { + if (LOG.isDebugEnabled()) { + LOG.debug("==> TagDBStore.getServiceResources(" + filter + ")"); + } + + List<RangerServiceResource> ret = rangerServiceResourceService.searchServiceResources(filter).getList(); + + if (LOG.isDebugEnabled()) { + LOG.debug("<== TagDBStore.getServiceResources(" + filter + "): count=" + (ret == null ? 0 : ret.size())); + } + + return ret; } @Override - public List<RangerServiceResource> getServiceResources(SearchFilter filter) throws Exception{ + public PList<RangerServiceResource> getPaginatedServiceResources(SearchFilter filter) throws Exception { + if (LOG.isDebugEnabled()) { + LOG.debug("==> TagDBStore.getPaginatedServiceResources(" + filter + ")"); + } - throw new Exception("Not implemented"); + PList<RangerServiceResource> ret = rangerServiceResourceService.searchServiceResources(filter); - /* - List<RangerServiceResource> ret = null; + if (LOG.isDebugEnabled()) { + LOG.debug("<== TagDBStore.getPaginatedServiceResources(" + filter + "): count=" + (ret == null ? 0 : ret.getPageSize())); + } - ret = rangerTaggedResourceService.searchRangerTaggedResources(filter).getList(); return ret; - */ } + @Override public RangerTagResourceMap createTagResourceMap(RangerTagResourceMap tagResourceMap) throws Exception { - throw new Exception("Not implemented"); + if (LOG.isDebugEnabled()) { + LOG.debug("==> TagDBStore.createTagResourceMap(" + tagResourceMap + ")"); + } + + RangerTagResourceMap ret = rangerTagResourceMapService.create(tagResourceMap); + + if (LOG.isDebugEnabled()) { + LOG.debug("<== TagDBStore.createTagResourceMap(" + tagResourceMap + "): " + ret); + } + + return ret; } @Override public void deleteTagResourceMapById(Long id) throws Exception { - throw new Exception("Not implemented"); - } + if (LOG.isDebugEnabled()) { + LOG.debug("==> TagDBStore.deleteTagResourceMapById(" + id + ")"); + } - @Override - public List<RangerTagResourceMap> getTagResourceMap(String externalResourceId, String externalTagId) throws Exception { - throw new Exception("Not implemented"); + RangerTagResourceMap tagResourceMap = rangerTagResourceMapService.read(id); + + rangerTagResourceMapService.delete(tagResourceMap); + + if (LOG.isDebugEnabled()) { + LOG.debug("<== TagDBStore.deleteTagResourceMapById(" + id + ")"); + } } @Override public RangerTagResourceMap getTagResourceMapById(Long id) throws Exception { - throw new Exception("Not implemented"); + if (LOG.isDebugEnabled()) { + LOG.debug("==> TagDBStore.getTagResourceMapById(" + id + ")"); + } + + RangerTagResourceMap ret = rangerTagResourceMapService.read(id); + + if (LOG.isDebugEnabled()) { + LOG.debug("<== TagDBStore.getTagResourceMapById(" + id + ")"); + } + + return ret; } + @Override + public List<RangerTagResourceMap> getTagResourceMapsForTagId(Long tagId) throws Exception { + if (LOG.isDebugEnabled()) { + LOG.debug("==> TagDBStore.getTagResourceMapsForTagId(" + tagId + ")"); + } + + List<RangerTagResourceMap> ret = rangerTagResourceMapService.getByTagId(tagId); + + if (LOG.isDebugEnabled()) { + LOG.debug("<== TagDBStore.getTagResourceMapsForTagId(" + tagId + "): count=" + (ret == null ? 0 : ret.size())); + } + + return ret; + } @Override - public List<RangerTagResourceMap> getTagResourceMaps(SearchFilter filter) throws Exception { - throw new Exception("Not implemented"); + public List<RangerTagResourceMap> getTagResourceMapsForTagGuid(String tagGuid) throws Exception { + if (LOG.isDebugEnabled()) { + LOG.debug("==> TagDBStore.getTagResourceMapsForTagGuid(" + tagGuid + ")"); + } + + List<RangerTagResourceMap> ret = rangerTagResourceMapService.getByTagGuid(tagGuid); + + if (LOG.isDebugEnabled()) { + LOG.debug("<== TagDBStore.getTagResourceMapsForTagGuid(" + tagGuid + "): count=" + (ret == null ? 0 : ret.size())); + } + + return ret; } @Override - public ServiceTags getServiceTagsIfUpdated(String serviceName, Long lastKnownVersion) throws Exception { - throw new Exception("Not implemented"); + public List<RangerTagResourceMap> getTagResourceMapsForResourceId(Long resourceId) throws Exception { + if (LOG.isDebugEnabled()) { + LOG.debug("==> TagDBStore.getTagResourceMapsForResourceId(" + resourceId + ")"); + } + + List<RangerTagResourceMap> ret = rangerTagResourceMapService.getByResourceId(resourceId); + + if (LOG.isDebugEnabled()) { + LOG.debug("<== TagDBStore.getTagResourceMapsForResourceId(" + resourceId + "): count=" + (ret == null ? 0 : ret.size())); + } + + return ret; } @Override - public PList<RangerTagResourceMap> getPaginatedTagResourceMaps(SearchFilter filter) throws Exception { - throw new Exception("Not implemented"); + public List<RangerTagResourceMap> getTagResourceMapsForResourceGuid(String resourceGuid) throws Exception { + if (LOG.isDebugEnabled()) { + LOG.debug("==> TagDBStore.getTagResourceMapsForResourceGuid(" + resourceGuid + ")"); + } + + List<RangerTagResourceMap> ret = rangerTagResourceMapService.getByResourceGuid(resourceGuid); + + if (LOG.isDebugEnabled()) { + LOG.debug("<== TagDBStore.getTagResourceMapsForResourceGuid(" + resourceGuid + "): count=" + (ret == null ? 0 : ret.size())); + } + + return ret; } @Override - public List<String> getTags(String serviceName) throws Exception { - throw new Exception("Not implemented"); + public RangerTagResourceMap getTagResourceMapForTagAndResourceId(Long tagId, Long resourceId) throws Exception { + if (LOG.isDebugEnabled()) { + LOG.debug("==> TagDBStore.getTagResourceMapsForTagAndResourceId(" + tagId + ", " + resourceId + ")"); + } + + RangerTagResourceMap ret = rangerTagResourceMapService.getByTagAndResourceId(tagId, resourceId); + + if (LOG.isDebugEnabled()) { + LOG.debug("<== TagDBStore.getTagResourceMapsForTagAndResourceId(" + tagId + ", " + resourceId + "): " + ret); + } + + return ret; } @Override - public List<String> lookupTags(String serviceName, String tagNamePattern) throws Exception { - throw new Exception("Not implemented"); + public RangerTagResourceMap getTagResourceMapForTagAndResourceGuid(String tagGuid, String resourceGuid) throws Exception { + if (LOG.isDebugEnabled()) { + LOG.debug("==> TagDBStore.getTagResourceMapForTagAndResourceGuid(" + tagGuid + ", " + resourceGuid + ")"); + } + + RangerTagResourceMap ret = rangerTagResourceMapService.getByTagAndResourceGuid(tagGuid, resourceGuid); + + if (LOG.isDebugEnabled()) { + LOG.debug("<== TagDBStore.getTagResourceMapForTagAndResourceGuid(" + tagGuid + ", " + resourceGuid + "): " + ret); + } + + return ret; } + @Override - public List<RangerTag> getTagsForServiceResource(Long resourceId) throws Exception { - throw new Exception("Not implemented"); + public List<RangerTagResourceMap> getTagResourceMaps(SearchFilter filter) throws Exception { + if (LOG.isDebugEnabled()) { + LOG.debug("==> TagDBStore.getTagResourceMaps(" + filter+ ")"); + } + + List<RangerTagResourceMap> ret = rangerTagResourceMapService.searchRangerTaggedResources(filter).getList(); + + if (LOG.isDebugEnabled()) { + LOG.debug("<== TagDBStore.getTagResourceMaps(" + filter + "): count=" + (ret == null ? 0 : ret.size())); + } + + return ret; } @Override - public List<RangerTag> getTagsForServiceResourceByExtId(String resourceExtId) throws Exception { - throw new Exception("Not implemented"); + public PList<RangerTagResourceMap> getPaginatedTagResourceMaps(SearchFilter filter) throws Exception { + if (LOG.isDebugEnabled()) { + LOG.debug("==> TagDBStore.getPaginatedTagResourceMaps(" + filter+ ")"); + } + + PList<RangerTagResourceMap> ret = rangerTagResourceMapService.searchRangerTaggedResources(filter); + + if (LOG.isDebugEnabled()) { + LOG.debug("<== TagDBStore.getPaginatedTagResourceMaps(" + filter + "): count=" + (ret == null ? 0 : ret.getPageSize())); + } + + return ret; } + @Override - public List<RangerTagDef> getTagDefsByExternalId(String extId) throws Exception { - throw new Exception("Not implemented"); + public ServiceTags getServiceTagsIfUpdated(String serviceName, Long lastKnownVersion) throws Exception { + if(LOG.isDebugEnabled()) { + LOG.debug("==> TagDBStore.getServiceTagsIfUpdated(" + serviceName + ", " + lastKnownVersion + ")"); + } + + ServiceTags ret = null; + + XXService xxService = daoManager.getXXService().findByName(serviceName); + + if(xxService == null) { + throw new Exception("service does not exist. name=" + serviceName); + } + + if(lastKnownVersion == null || xxService.getTagVersion() == null || !lastKnownVersion.equals(xxService.getTagVersion())) { + RangerServiceDef serviceDef = svcStore.getServiceDef(xxService.getType()); + + if(serviceDef == null) { + throw new Exception("service-def does not exist. id=" + xxService.getType()); + } + + List<RangerTagDef> tagDefs = rangerTagDefService.getTagDefsByServiceId(xxService.getId()); + List<RangerTag> tags = rangerTagService.getTagsByServiceId(xxService.getId()); + List<RangerServiceResource> resources = rangerServiceResourceService.getTaggedResourcesInServiceId(xxService.getId()); + List<RangerTagResourceMap> tagResourceMaps = rangerTagResourceMapService.getTagResourceMapsByServiceId(xxService.getId()); + + Map<Long, RangerTagDef> tagDefMap = new HashMap<Long, RangerTagDef>(); + Map<Long, RangerTag> tagMap = new HashMap<Long, RangerTag>(); + Map<Long, List<Long>> resourceToTagIds = new HashMap<Long, List<Long>>(); + + if(CollectionUtils.isNotEmpty(tagDefs)) { + for(RangerTagDef tagDef : tagDefs) { + tagDefMap.put(tagDef.getId(), tagDef); + } + } + + if(CollectionUtils.isNotEmpty(tags)) { + for(RangerTag tag : tags) { + tagMap.put(tag.getId(), tag); + } + } + + if(CollectionUtils.isNotEmpty(tagResourceMaps)) { + Long resourceId = null; + List<Long> tagIds = null; + + for(RangerTagResourceMap tagResourceMap : tagResourceMaps) { + if(! tagResourceMap.getResourceId().equals(resourceId)) { + if(resourceId != null) { + resourceToTagIds.put(resourceId, tagIds); + } + + resourceId = tagResourceMap.getResourceId(); + tagIds = new ArrayList<Long>(); + } + + tagIds.add(tagResourceMap.getTagId()); + } + + if(resourceId != null) { + resourceToTagIds.put(resourceId, tagIds); + } + } + + ret = new ServiceTags(); + ret.setServiceName(xxService.getName()); + ret.setTagVersion(xxService.getTagVersion()); + ret.setTagUpdateTime(xxService.getTagUpdateTime()); + ret.setTagDefinitions(tagDefMap); + ret.setTags(tagMap); + ret.setServiceResources(resources); + ret.setResourceToTagIds(resourceToTagIds); + } + + if(LOG.isDebugEnabled()) { + LOG.debug("<== TagDBStore.getServiceTagsIfUpdated(" + serviceName + ", " + lastKnownVersion + ")"); + } + + return ret; } @Override - public List<RangerTagResourceMap> getTagResourceMapsByTagId(Long tagId) throws Exception { + public List<String> getTags(String serviceName) throws Exception { throw new Exception("Not implemented"); } @Override - public List<RangerTagResourceMap> getTagResourceMapsByResourceId(Long resourceId) throws Exception { + public List<String> lookupTags(String serviceName, String tagNamePattern) throws Exception { throw new Exception("Not implemented"); } + + private List<XXTagAttributeDef> createTagAttributeDefs(Long tagDefId, List<RangerTagAttributeDef> tagAttrDefList) { + if (LOG.isDebugEnabled()) { + LOG.debug("==> TagDBStore.createTagAttributeDefs(" + tagDefId + ", attributeDefCount=" + (tagAttrDefList == null ? 0 : tagAttrDefList.size()) + ")"); + } + + if (tagDefId == null) { + throw errorUtil.createRESTException("TagDBStore.createTagAttributeDefs(): Error creating tag-attr def. tagDefId can not be null.", MessageEnums.ERROR_CREATING_OBJECT); + } + + List<XXTagAttributeDef> ret = new ArrayList<XXTagAttributeDef>(); + + if (CollectionUtils.isNotEmpty(tagAttrDefList)) { + for (RangerTagDef.RangerTagAttributeDef attrDef : tagAttrDefList) { + XXTagAttributeDef xAttrDef = new XXTagAttributeDef(); + + xAttrDef.setGuid(guidUtil.genGUID()); + xAttrDef.setTagDefId(tagDefId); + xAttrDef.setName(attrDef.getName()); + xAttrDef.setType(attrDef.getType()); + xAttrDef = (XXTagAttributeDef) rangerAuditFields.populateAuditFieldsForCreate(xAttrDef); + + xAttrDef = daoManager.getXXTagAttributeDef().create(xAttrDef); + + ret.add(xAttrDef); + } + } + + if (LOG.isDebugEnabled()) { + LOG.debug("<== TagDBStore.createTagAttributeDefs(" + tagDefId + ", attributeDefCount=" + (tagAttrDefList == null ? 0 : tagAttrDefList.size()) + "): retCount=" + ret.size()); + } + + return ret; + } + + private void deleteTagAttributeDefs(Long tagDefId) { + if (LOG.isDebugEnabled()) { + LOG.debug("==> TagDBStore.deleteTagAttributeDefs(" + tagDefId + ")"); + } + + if (tagDefId != null) { + List<XXTagAttributeDef> tagAttrDefList = daoManager.getXXTagAttributeDef().findByTagDefId(tagDefId); + + if (CollectionUtils.isNotEmpty(tagAttrDefList)) { + for (XXTagAttributeDef xAttrDef : tagAttrDefList) { + if (LOG.isDebugEnabled()) { + LOG.debug("Deleting tag-attribute def [name=" + xAttrDef.getName() + "; id=" + xAttrDef.getId() + "]"); + } + daoManager.getXXTagAttributeDef().remove(xAttrDef); + } + } + } + + if (LOG.isDebugEnabled()) { + LOG.debug("<== TagDBStore.deleteTagAttributeDefs(" + tagDefId + ")"); + } + } + + private List<XXTagAttribute> createTagAttributes(Long tagId, Map<String, String> attributeValues) { + List<XXTagAttribute> ret = new ArrayList<XXTagAttribute>(); + + if(MapUtils.isNotEmpty(attributeValues)) { + for (Map.Entry<String, String> attr : attributeValues.entrySet()) { + XXTagAttribute xTagAttr = new XXTagAttribute(); + + xTagAttr.setTagId(tagId); + xTagAttr.setName(attr.getKey()); + xTagAttr.setValue(attr.getValue()); + xTagAttr.setGuid(guidUtil.genGUID()); + xTagAttr = (XXTagAttribute) rangerAuditFields.populateAuditFieldsForCreate(xTagAttr); + + xTagAttr = daoManager.getXXTagAttribute().create(xTagAttr); + + ret.add(xTagAttr); + } + } + + return ret; + } + + private void deleteTagAttributes(Long tagId) { + List<XXTagAttribute> tagAttrList = daoManager.getXXTagAttribute().findByTagId(tagId); + for (XXTagAttribute tagAttr : tagAttrList) { + daoManager.getXXTagAttribute().remove(tagAttr); + } + } + + private void deleteResourceSpecForResource(Long resourceId) { + List<XXServiceResourceElement> resElements = daoManager.getXXServiceResourceElement().findByResourceId(resourceId); + + if(CollectionUtils.isNotEmpty(resElements)) { + for(XXServiceResourceElement resElement : resElements) { + List<XXServiceResourceElementValue> elementValues = daoManager.getXXServiceResourceElementValue().findByResValueId(resElement.getId()); + + if(CollectionUtils.isNotEmpty(elementValues)) { + for(XXServiceResourceElementValue elementValue : elementValues) { + daoManager.getXXServiceResourceElementValue().remove(elementValue.getId()); + } + } + + daoManager.getXXServiceResourceElement().remove(resElement.getId()); + } + } + } + + private void createResourceSpecForResource(Long resourceId, RangerServiceResource resource) { + String serviceName = resource.getServiceName(); + + XXService xService = daoManager.getXXService().findByName(serviceName); + + if (xService == null) { + throw errorUtil.createRESTException("No Service found with name: " + serviceName, MessageEnums.ERROR_CREATING_OBJECT); + } + + XXServiceDef xServiceDef = daoManager.getXXServiceDef().getById(xService.getType()); + + if (xServiceDef == null) { + throw errorUtil.createRESTException("No Service-Def found with ID: " + xService.getType(), MessageEnums.ERROR_CREATING_OBJECT); + } + + Map<String, RangerPolicy.RangerPolicyResource> resourceSpec = resource.getResourceSpec(); + + for (Map.Entry<String, RangerPolicyResource> resSpec : resourceSpec.entrySet()) { + XXResourceDef xResDef = daoManager.getXXResourceDef().findByNameAndServiceDefId(resSpec.getKey(), xServiceDef.getId()); + + if (xResDef == null) { + LOG.error("TagDBStore.createResource: ResourceType is not valid [" + resSpec.getKey() + "]"); + throw errorUtil.createRESTException("Resource Type is not valid [" + resSpec.getKey() + "]", MessageEnums.DATA_NOT_FOUND); + } + + RangerPolicyResource policyRes = resSpec.getValue(); + + XXServiceResourceElement resourceElement = new XXServiceResourceElement(); + resourceElement.setIsExcludes(policyRes.getIsExcludes()); + resourceElement.setIsRecursive(policyRes.getIsRecursive()); + resourceElement.setResDefId(xResDef.getId()); + resourceElement.setResourceId(resourceId); + resourceElement.setGuid(guidUtil.genGUID()); + + resourceElement = (XXServiceResourceElement) rangerAuditFields.populateAuditFieldsForCreate(resourceElement); + + resourceElement = daoManager.getXXServiceResourceElement().create(resourceElement); + + int sortOrder = 1; + for (String resVal : policyRes.getValues()) { + XXServiceResourceElementValue resourceElementValue = new XXServiceResourceElementValue(); + resourceElementValue.setResElementId(resourceElement.getId()); + resourceElementValue.setValue(resVal); + resourceElementValue.setSortOrder(sortOrder); + resourceElementValue.setGuid(guidUtil.genGUID()); + resourceElementValue = (XXServiceResourceElementValue) rangerAuditFields.populateAuditFieldsForCreate(resourceElementValue); + + resourceElementValue = daoManager.getXXServiceResourceElementValue().create(resourceElementValue); + sortOrder++; + } + } + } + + private void deleteResourceValue(Long resourceId) { + List<XXServiceResourceElement> taggedResValueList = daoManager.getXXServiceResourceElement().findByResourceId(resourceId); + for (XXServiceResourceElement taggedResValue : taggedResValueList) { + List<XXServiceResourceElementValue> taggedResValueMapList = daoManager.getXXServiceResourceElementValue().findByResValueId(taggedResValue.getId()); + for (XXServiceResourceElementValue taggedResValueMap : taggedResValueMapList) { + daoManager.getXXServiceResourceElementValue().remove(taggedResValueMap); + } + daoManager.getXXServiceResourceElement().remove(taggedResValue); + } + } } http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/303f7b70/security-admin/src/main/java/org/apache/ranger/common/AppConstants.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/common/AppConstants.java b/security-admin/src/main/java/org/apache/ranger/common/AppConstants.java index 21facb0..488ba8f 100644 --- a/security-admin/src/main/java/org/apache/ranger/common/AppConstants.java +++ b/security-admin/src/main/java/org/apache/ranger/common/AppConstants.java @@ -552,17 +552,17 @@ public class AppConstants extends RangerCommonEnums { */ public static final int CLASS_TYPE_XA_TAG_ATTR_DEF = 1042; /** - * Class type of XXTaggedResource + * Class type of XXServiceResource */ - public static final int CLASS_TYPE_XA_TAGGED_RESOURCE = 1043; + public static final int CLASS_TYPE_XA_SERVICE_RESOURCE = 1043; /** - * Class type of XXTaggedResourceValue + * Class type of XXServiceResourceElement */ - public static final int CLASS_TYPE_XA_TAGGED_RESOURCE_VALUE = 1044; + public static final int CLASS_TYPE_XA_SERVICE_RESOURCE_ELEMENT = 1044; /** - * Class type of XXTaggedResourceValueMap + * Class type of XXServiceResourceElementValue */ - public static final int CLASS_TYPE_XA_TAGGED_RESOURCE_VALUE_MAP = 1045; + public static final int CLASS_TYPE_XA_SERVICE_RESOURCE_ELEMENT_VALUE = 1045; /** * Class type of XXTag */ http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/303f7b70/security-admin/src/main/java/org/apache/ranger/db/RangerDaoManagerBase.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/db/RangerDaoManagerBase.java b/security-admin/src/main/java/org/apache/ranger/db/RangerDaoManagerBase.java index da01853..d9cf87a 100644 --- a/security-admin/src/main/java/org/apache/ranger/db/RangerDaoManagerBase.java +++ b/security-admin/src/main/java/org/apache/ranger/db/RangerDaoManagerBase.java @@ -29,8 +29,6 @@ import org.apache.log4j.Logger; import org.apache.ranger.common.AppConstants; import org.apache.ranger.common.RESTErrorUtil; import org.apache.ranger.common.db.BaseDao; -import org.apache.ranger.entity.XXTagDef; -import org.apache.ranger.entity.XXTaggedResource; import org.springframework.beans.factory.annotation.Autowired; @@ -170,14 +168,14 @@ public abstract class RangerDaoManagerBase { if (classType == AppConstants.CLASS_TYPE_XA_TAG_ATTR_DEF) { return getXXTagAttributeDef(); } - if (classType == AppConstants.CLASS_TYPE_XA_TAGGED_RESOURCE) { - return getXXTaggedResource(); + if (classType == AppConstants.CLASS_TYPE_XA_SERVICE_RESOURCE) { + return getXXServiceResource(); } - if (classType == AppConstants.CLASS_TYPE_XA_TAGGED_RESOURCE_VALUE) { - return getXXTaggedResourceValue(); + if (classType == AppConstants.CLASS_TYPE_XA_SERVICE_RESOURCE_ELEMENT) { + return getXXServiceResourceElement(); } - if (classType == AppConstants.CLASS_TYPE_XA_TAGGED_RESOURCE_VALUE_MAP) { - return getXXTaggedResourceValueMap(); + if (classType == AppConstants.CLASS_TYPE_XA_SERVICE_RESOURCE_ELEMENT_VALUE) { + return getXXServiceResourceElementValue(); } if (classType == AppConstants.CLASS_TYPE_XA_TAG) { return getXXTag(); @@ -324,14 +322,14 @@ public abstract class RangerDaoManagerBase { if (className.equals("XXTagAttributeDef")) { return getXXTagAttributeDef(); } - if (className.equals("XXTaggedResource")) { - return getXXTaggedResource(); + if (className.equals("XXServiceResource")) { + return getXXServiceResource(); } - if (className.equals("XXTaggedResourceValue")) { - return getXXTaggedResourceValue(); + if (className.equals("XXServiceResourceElement")) { + return getXXServiceResourceElement(); } - if (className.equals("XXTaggedResourceValueMap")) { - return getXXTaggedResourceValueMap(); + if (className.equals("XXServiceResourceElementValue")) { + return getXXServiceResourceElementValue(); } if (className.equals("XXTag")) { return getXXTag(); @@ -526,16 +524,16 @@ public abstract class RangerDaoManagerBase { return new XXTagAttributeDefDao(this); } - public XXTaggedResourceDao getXXTaggedResource() { - return new XXTaggedResourceDao(this); + public XXServiceResourceDao getXXServiceResource() { + return new XXServiceResourceDao(this); } - public XXTaggedResourceValueDao getXXTaggedResourceValue() { - return new XXTaggedResourceValueDao(this); + public XXServiceResourceElementDao getXXServiceResourceElement() { + return new XXServiceResourceElementDao(this); } - public XXTaggedResourceValueMapDao getXXTaggedResourceValueMap() { - return new XXTaggedResourceValueMapDao(this); + public XXServiceResourceElementValueDao getXXServiceResourceElementValue() { + return new XXServiceResourceElementValueDao(this); } public XXTagDao getXXTag() { http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/303f7b70/security-admin/src/main/java/org/apache/ranger/db/XXServiceResourceDao.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/db/XXServiceResourceDao.java b/security-admin/src/main/java/org/apache/ranger/db/XXServiceResourceDao.java new file mode 100644 index 0000000..63cdc6e --- /dev/null +++ b/security-admin/src/main/java/org/apache/ranger/db/XXServiceResourceDao.java @@ -0,0 +1,85 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.ranger.db; + +import java.util.ArrayList; +import java.util.List; + +import javax.persistence.NoResultException; + +import org.apache.ranger.authorization.utils.StringUtil; +import org.apache.ranger.common.db.BaseDao; +import org.apache.ranger.entity.XXServiceResource; + +public class XXServiceResourceDao extends BaseDao<XXServiceResource> { + + public XXServiceResourceDao(RangerDaoManagerBase daoManager) { + super(daoManager); + } + + public XXServiceResource findByGuid(String guid) { + if (StringUtil.isEmpty(guid)) { + return null; + } + try { + return getEntityManager().createNamedQuery("XXServiceResource.findByGuid", tClass) + .setParameter("guid", guid).getSingleResult(); + } catch (NoResultException e) { + return null; + } + } + + public List<XXServiceResource> findByServiceId(Long serviceId) { + if (serviceId == null) { + return new ArrayList<XXServiceResource>(); + } + try { + return getEntityManager().createNamedQuery("XXServiceResource.findByServiceId", tClass) + .setParameter("serviceId", serviceId).getResultList(); + } catch (NoResultException e) { + return new ArrayList<XXServiceResource>(); + } + } + + public XXServiceResource findByServiceIdAndResourceSignature(Long serviceId, String resourceSignature) { + if (serviceId == null || StringUtil.isEmpty(resourceSignature)) { + return null; + } + try { + return getEntityManager().createNamedQuery("XXServiceResource.findByServiceIdAndResourceSignature", tClass) + .setParameter("serviceId", serviceId) + .setParameter("resourceSignature", resourceSignature).getSingleResult(); + } catch (NoResultException e) { + return null; + } + } + + public List<XXServiceResource> findTaggedResourcesInServiceId(Long serviceId) { + if (serviceId == null) { + return new ArrayList<XXServiceResource>(); + } + try { + return getEntityManager().createNamedQuery("XXServiceResource.findTaggedResourcesInServiceId", tClass) + .setParameter("serviceId", serviceId).getResultList(); + } catch (NoResultException e) { + return new ArrayList<XXServiceResource>(); + } + } +} http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/303f7b70/security-admin/src/main/java/org/apache/ranger/db/XXServiceResourceElementDao.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/db/XXServiceResourceElementDao.java b/security-admin/src/main/java/org/apache/ranger/db/XXServiceResourceElementDao.java new file mode 100644 index 0000000..8e2baab --- /dev/null +++ b/security-admin/src/main/java/org/apache/ranger/db/XXServiceResourceElementDao.java @@ -0,0 +1,49 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.ranger.db; + +import java.util.ArrayList; +import java.util.List; + +import javax.persistence.NoResultException; + +import org.apache.ranger.common.db.BaseDao; +import org.apache.ranger.entity.XXServiceResourceElement; + +public class XXServiceResourceElementDao extends BaseDao<XXServiceResourceElement> { + + public XXServiceResourceElementDao(RangerDaoManagerBase daoManager) { + super(daoManager); + } + + public List<XXServiceResourceElement> findByResourceId(Long resourceId) { + if (resourceId == null) { + return new ArrayList<XXServiceResourceElement>(); + } + try { + return getEntityManager().createNamedQuery("XXServiceResourceElement.findByResourceId", tClass) + .setParameter("resourceId", resourceId) + .getResultList(); + } catch (NoResultException e) { + return new ArrayList<XXServiceResourceElement>(); + } + } + +} http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/303f7b70/security-admin/src/main/java/org/apache/ranger/db/XXServiceResourceElementValueDao.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/db/XXServiceResourceElementValueDao.java b/security-admin/src/main/java/org/apache/ranger/db/XXServiceResourceElementValueDao.java new file mode 100644 index 0000000..04942a7 --- /dev/null +++ b/security-admin/src/main/java/org/apache/ranger/db/XXServiceResourceElementValueDao.java @@ -0,0 +1,61 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.ranger.db; + +import java.util.ArrayList; +import java.util.List; + +import javax.persistence.NoResultException; + +import org.apache.ranger.common.db.BaseDao; +import org.apache.ranger.entity.XXServiceResourceElementValue; + +public class XXServiceResourceElementValueDao extends BaseDao<XXServiceResourceElementValue> { + + public XXServiceResourceElementValueDao(RangerDaoManagerBase daoManager) { + super(daoManager); + } + + public List<XXServiceResourceElementValue> findByResValueId(Long resElementId) { + if (resElementId == null) { + return new ArrayList<XXServiceResourceElementValue>(); + } + try { + return getEntityManager().createNamedQuery("XXServiceResourceElementValue.findByResElementId", tClass) + .setParameter("resElementId", resElementId).getResultList(); + } catch (NoResultException e) { + return new ArrayList<XXServiceResourceElementValue>(); + } + } + + @SuppressWarnings("unchecked") + public List<String> findValuesByResElementId(Long resElementId) { + if (resElementId == null) { + return new ArrayList<String>(); + } + try { + return getEntityManager().createNamedQuery("XXServiceResourceElementValue.findValuesByResElementId") + .setParameter("resElementId", resElementId).getResultList(); + } catch (NoResultException e) { + return new ArrayList<String>(); + } + } + +} http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/303f7b70/security-admin/src/main/java/org/apache/ranger/db/XXTagDao.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/db/XXTagDao.java b/security-admin/src/main/java/org/apache/ranger/db/XXTagDao.java index d8562d2..667238f 100644 --- a/security-admin/src/main/java/org/apache/ranger/db/XXTagDao.java +++ b/security-admin/src/main/java/org/apache/ranger/db/XXTagDao.java @@ -20,10 +20,13 @@ package org.apache.ranger.db; import java.util.ArrayList; +import java.util.Date; import java.util.List; import javax.persistence.NoResultException; +import org.apache.commons.lang.StringUtils; +import org.apache.ranger.authorization.utils.StringUtil; import org.apache.ranger.common.db.BaseDao; import org.apache.ranger.entity.XXTag; @@ -33,13 +36,13 @@ public class XXTagDao extends BaseDao<XXTag> { super(daoManager); } - public List<XXTag> findByTaggedResource(Long taggedResId) { - if (taggedResId == null) { + public List<XXTag> findByResourceId(Long resourceId) { + if (resourceId == null) { return new ArrayList<XXTag>(); } try { - return getEntityManager().createNamedQuery("XXTag.findByTaggedResource", tClass) - .setParameter("taggedResId", taggedResId).getResultList(); + return getEntityManager().createNamedQuery("XXTag.findByResourceId", tClass) + .setParameter("resourceId", resourceId).getResultList(); } catch (NoResultException e) { return new ArrayList<XXTag>(); } @@ -58,16 +61,67 @@ public class XXTagDao extends BaseDao<XXTag> { } } - public List<XXTag> findTagsByExternalId(String externalId) { - if (externalId == null) { + public XXTag findByGuid(String guid) { + if (StringUtil.isEmpty(guid)) { + return null; + } + try { + return getEntityManager().createNamedQuery("XXTag.findByGuid", tClass) + .setParameter("guid", guid).getSingleResult(); + } catch (NoResultException e) { + return null; + } + } + + public List<XXTag> findByName(String name) { + if (StringUtils.isEmpty(name)) { + return new ArrayList<XXTag>(); + } + + try { + return getEntityManager().createNamedQuery("XXTag.findByName", tClass) + .setParameter("name", name).getResultList(); + } catch (NoResultException e) { return new ArrayList<XXTag>(); } + } + + public List<XXTag> findForResourceId(Long resourceId) { + if (resourceId == null) { + return new ArrayList<XXTag>(); + } + try { - return getEntityManager().createNamedQuery("XXTag.findTagsByExternalId", tClass) - .setParameter("externalId", externalId).getResultList(); + return getEntityManager().createNamedQuery("XXTag.findByResourceId", tClass) + .setParameter("resourceId", resourceId).getResultList(); } catch (NoResultException e) { return new ArrayList<XXTag>(); } } + public List<XXTag> findForResourceGuid(String resourceGuid) { + if (StringUtils.isEmpty(resourceGuid)) { + return new ArrayList<XXTag>(); + } + + try { + return getEntityManager().createNamedQuery("XXTag.findByResourceGuid", tClass) + .setParameter("resourceGuid", resourceGuid).getResultList(); + } catch (NoResultException e) { + return new ArrayList<XXTag>(); + } + } + + public List<XXTag> findByServiceId(Long serviceId) { + if (serviceId == null) { + return new ArrayList<XXTag>(); + } + + try { + return getEntityManager().createNamedQuery("XXTag.findByServiceId", tClass) + .setParameter("serviceId", serviceId).getResultList(); + } catch (NoResultException e) { + return new ArrayList<XXTag>(); + } + } } http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/303f7b70/security-admin/src/main/java/org/apache/ranger/db/XXTagDefDao.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/db/XXTagDefDao.java b/security-admin/src/main/java/org/apache/ranger/db/XXTagDefDao.java index 971b589..f18fea8 100644 --- a/security-admin/src/main/java/org/apache/ranger/db/XXTagDefDao.java +++ b/security-admin/src/main/java/org/apache/ranger/db/XXTagDefDao.java @@ -20,6 +20,7 @@ package org.apache.ranger.db; import java.util.ArrayList; +import java.util.Date; import java.util.List; import javax.persistence.NoResultException; @@ -34,6 +35,19 @@ public class XXTagDefDao extends BaseDao<XXTagDef> { super(daoManager); } + public XXTagDef findByGuid(String guid) { + if (StringUtils.isEmpty(guid)) { + return null; + } + + try { + return getEntityManager().createNamedQuery("XXTagDef.findByGuid", tClass) + .setParameter("guid", guid).getSingleResult(); + } catch (NoResultException e) { + return null; + } + } + public List<XXTagDef> findByName(String name) { if (StringUtils.isEmpty(name)) { return new ArrayList<XXTagDef>(); @@ -47,4 +61,35 @@ public class XXTagDefDao extends BaseDao<XXTagDef> { } } + public List<XXTagDef> findByServiceId(Long serviceId) { + if (serviceId == null) { + return new ArrayList<XXTagDef>(); + } + + try { + return getEntityManager().createNamedQuery("XXTagDef.findByServiceId", tClass) + .setParameter("serviceId", serviceId).getResultList(); + } catch (NoResultException e) { + return new ArrayList<XXTagDef>(); + } + } + + public void updateServiceForTagDefUpdate(Long tagDefId, Date updateTime) { + if (tagDefId == null) { + return; + } + + if(updateTime == null) { + updateTime = new Date(); + } + + try { + getEntityManager().createNamedQuery("XXTagDef.updateTagVersionInService", tClass) + .setParameter("tagDefId", tagDefId) + .setParameter("tagUpdateTime", updateTime) + .executeUpdate(); + } catch (NoResultException e) { + return; + } + } } http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/303f7b70/security-admin/src/main/java/org/apache/ranger/db/XXTagResourceMapDao.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/db/XXTagResourceMapDao.java b/security-admin/src/main/java/org/apache/ranger/db/XXTagResourceMapDao.java index 57ac5e8..1db0cef 100644 --- a/security-admin/src/main/java/org/apache/ranger/db/XXTagResourceMapDao.java +++ b/security-admin/src/main/java/org/apache/ranger/db/XXTagResourceMapDao.java @@ -20,10 +20,12 @@ package org.apache.ranger.db; import java.util.ArrayList; +import java.util.Date; import java.util.List; import javax.persistence.NoResultException; +import org.apache.ranger.authorization.utils.StringUtil; import org.apache.ranger.common.db.BaseDao; import org.apache.ranger.entity.XXTagResourceMap; @@ -33,16 +35,108 @@ public class XXTagResourceMapDao extends BaseDao<XXTagResourceMap> { super(daoManager); } - public List<XXTagResourceMap> findByTaggedResourceId(Long taggedResId) { - if (taggedResId == null) { + public List<XXTagResourceMap> findByResourceId(Long resourceId) { + if (resourceId == null) { return new ArrayList<XXTagResourceMap>(); } try { - return getEntityManager().createNamedQuery("XXTagResourceMap.findByTaggedResourceId", tClass) - .setParameter("taggedResId", taggedResId).getResultList(); + return getEntityManager().createNamedQuery("XXTagResourceMap.findByResourceId", tClass) + .setParameter("resourceId", resourceId).getResultList(); } catch (NoResultException e) { return new ArrayList<XXTagResourceMap>(); } } + public List<XXTagResourceMap> findByResourceGuid(String resourceGuid) { + if (StringUtil.isEmpty(resourceGuid)) { + return new ArrayList<XXTagResourceMap>(); + } + try { + return getEntityManager().createNamedQuery("XXTagResourceMap.findByResourceGuid", tClass) + .setParameter("resourceGuid", resourceGuid).getResultList(); + } catch (NoResultException e) { + return new ArrayList<XXTagResourceMap>(); + } + } + + public List<XXTagResourceMap> findByTagId(Long tagId) { + if (tagId == null) { + return new ArrayList<XXTagResourceMap>(); + } + try { + return getEntityManager().createNamedQuery("XXTagResourceMap.findByTagId", tClass) + .setParameter("tagId", tagId).getResultList(); + } catch (NoResultException e) { + return new ArrayList<XXTagResourceMap>(); + } + } + + public List<XXTagResourceMap> findByTagGuid(String tagGuid) { + if (StringUtil.isEmpty(tagGuid)) { + return new ArrayList<XXTagResourceMap>(); + } + try { + return getEntityManager().createNamedQuery("XXTagResourceMap.findByTagGuid", tClass) + .setParameter("tagGuid", tagGuid).getResultList(); + } catch (NoResultException e) { + return new ArrayList<XXTagResourceMap>(); + } + } + + public XXTagResourceMap findByTagAndResourceId(Long tagId, Long resourceId) { + if (tagId == null || resourceId == null) { + return null; + } + try { + return getEntityManager().createNamedQuery("XXTagResourceMap.findByTagAndResourceId", tClass) + .setParameter("tagId", tagId) + .setParameter("resourceId", resourceId).getSingleResult(); + } catch (NoResultException e) { + return null; + } + } + + public XXTagResourceMap findByTagAndResourceGuid(String tagGuid, String resourceGuid) { + if (tagGuid == null || resourceGuid == null) { + return null; + } + try { + return getEntityManager().createNamedQuery("XXTagResourceMap.findByTagAndResourceGuid", tClass) + .setParameter("tagGuid", tagGuid) + .setParameter("resourceGuid", resourceGuid).getSingleResult(); + } catch (NoResultException e) { + return null; + } + } + + public List<XXTagResourceMap> findByServiceId(Long serviceId) { + if (serviceId == null) { + return new ArrayList<XXTagResourceMap>(); + } + try { + return getEntityManager().createNamedQuery("XXTagResourceMap.findByServiceId", tClass) + .setParameter("serviceId", serviceId).getResultList(); + } catch (NoResultException e) { + return new ArrayList<XXTagResourceMap>(); + } + } + + public void updateServiceForTagUpdate(Long tagId, Date updateTime) { + if (tagId == null) { + return; + } + + if(updateTime == null) { + updateTime = new Date(); + } + + try { + getEntityManager().createNamedQuery("XXTagResourceMap.updateTagVersionInService", tClass) + .setParameter("tagId", tagId) + .setParameter("tagUpdateTime", updateTime) + .executeUpdate(); + } catch (NoResultException e) { + return; + } + } } http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/303f7b70/security-admin/src/main/java/org/apache/ranger/db/XXTaggedResourceDao.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/db/XXTaggedResourceDao.java b/security-admin/src/main/java/org/apache/ranger/db/XXTaggedResourceDao.java deleted file mode 100644 index b7c2b3e..0000000 --- a/security-admin/src/main/java/org/apache/ranger/db/XXTaggedResourceDao.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.apache.ranger.db; - -import java.util.ArrayList; -import java.util.List; - -import javax.persistence.NoResultException; - -import org.apache.ranger.common.db.BaseDao; -import org.apache.ranger.entity.XXTaggedResource; - -public class XXTaggedResourceDao extends BaseDao<XXTaggedResource> { - - public XXTaggedResourceDao(RangerDaoManagerBase daoManager) { - super(daoManager); - } - - public List<XXTaggedResource> findByServiceId(Long serviceId) { - if (serviceId == null) { - return new ArrayList<XXTaggedResource>(); - } - try { - return getEntityManager().createNamedQuery("XXTaggedResource.findByServiceId", tClass) - .setParameter("serviceId", serviceId).getResultList(); - } catch (NoResultException e) { - return new ArrayList<XXTaggedResource>(); - } - - } - -} http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/303f7b70/security-admin/src/main/java/org/apache/ranger/db/XXTaggedResourceValueDao.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/db/XXTaggedResourceValueDao.java b/security-admin/src/main/java/org/apache/ranger/db/XXTaggedResourceValueDao.java deleted file mode 100644 index 6f72a3c..0000000 --- a/security-admin/src/main/java/org/apache/ranger/db/XXTaggedResourceValueDao.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.apache.ranger.db; - -import java.util.ArrayList; -import java.util.List; - -import javax.persistence.NoResultException; - -import org.apache.ranger.common.db.BaseDao; -import org.apache.ranger.entity.XXTaggedResourceValue; - -public class XXTaggedResourceValueDao extends BaseDao<XXTaggedResourceValue> { - - public XXTaggedResourceValueDao(RangerDaoManagerBase daoManager) { - super(daoManager); - } - - public List<XXTaggedResourceValue> findByTaggedResId(Long taggedResId) { - if (taggedResId == null) { - return new ArrayList<XXTaggedResourceValue>(); - } - try { - return getEntityManager().createNamedQuery("XXTaggedResourceValue.findByTaggedResId", tClass) - .setParameter("taggedResId", taggedResId) - .getResultList(); - } catch (NoResultException e) { - return new ArrayList<XXTaggedResourceValue>(); - } - } - -} http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/303f7b70/security-admin/src/main/java/org/apache/ranger/db/XXTaggedResourceValueMapDao.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/db/XXTaggedResourceValueMapDao.java b/security-admin/src/main/java/org/apache/ranger/db/XXTaggedResourceValueMapDao.java deleted file mode 100644 index 016766f..0000000 --- a/security-admin/src/main/java/org/apache/ranger/db/XXTaggedResourceValueMapDao.java +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.apache.ranger.db; - -import java.util.ArrayList; -import java.util.List; - -import javax.persistence.NoResultException; - -import org.apache.ranger.common.db.BaseDao; -import org.apache.ranger.entity.XXTaggedResourceValue; -import org.apache.ranger.entity.XXTaggedResourceValueMap; - -public class XXTaggedResourceValueMapDao extends BaseDao<XXTaggedResourceValueMap> { - - public XXTaggedResourceValueMapDao(RangerDaoManagerBase daoManager) { - super(daoManager); - } - - public List<XXTaggedResourceValueMap> findByResValueId(Long resValueId) { - if (resValueId == null) { - return new ArrayList<XXTaggedResourceValueMap>(); - } - try { - return getEntityManager().createNamedQuery("XXTaggedResourceValueMap.findByResValueId", tClass) - .setParameter("resValueId", resValueId).getResultList(); - } catch (NoResultException e) { - return new ArrayList<XXTaggedResourceValueMap>(); - } - } - - @SuppressWarnings("unchecked") - public List<String> findValuesByResValueId(Long resValueId) { - if (resValueId == null) { - return new ArrayList<String>(); - } - try { - return getEntityManager().createNamedQuery("XXTaggedResourceValueMap.findValuesByResValueId") - .setParameter("resValueId", resValueId).getResultList(); - } catch (NoResultException e) { - return new ArrayList<String>(); - } - } - -}
