RANGER-203: database service-store implementation
Project: http://git-wip-us.apache.org/repos/asf/incubator-ranger/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-ranger/commit/c928a415 Tree: http://git-wip-us.apache.org/repos/asf/incubator-ranger/tree/c928a415 Diff: http://git-wip-us.apache.org/repos/asf/incubator-ranger/diff/c928a415 Branch: refs/heads/stack Commit: c928a415951ffa46986e26a99ba38e52f285ee0d Parents: 3072277 Author: Gautam Borad <[email protected]> Authored: Fri Feb 13 09:34:13 2015 -0800 Committer: Madhan Neethiraj <[email protected]> Committed: Fri Feb 13 09:34:13 2015 -0800 ---------------------------------------------------------------------- .../db/patches/009-updated_schema.sql | 419 ++++++++ .../org/apache/ranger/biz/ServiceDBStore.java | 1004 ++++++++++++++++++ .../apache/ranger/db/XXAccessTypeDefDao.java | 45 + .../ranger/db/XXAccessTypeDefGrantsDao.java | 33 + .../org/apache/ranger/db/XXDataHistDao.java | 29 + .../java/org/apache/ranger/db/XXEnumDefDao.java | 32 + .../apache/ranger/db/XXEnumElementDefDao.java | 32 + .../ranger/db/XXPolicyConditionDefDao.java | 59 + .../java/org/apache/ranger/db/XXPolicyDao.java | 49 + .../apache/ranger/db/XXPolicyItemAccessDao.java | 30 + .../ranger/db/XXPolicyItemConditionDao.java | 45 + .../org/apache/ranger/db/XXPolicyItemDao.java | 39 + .../ranger/db/XXPolicyItemGroupPermDao.java | 30 + .../ranger/db/XXPolicyItemUserPermDao.java | 30 + .../apache/ranger/db/XXPolicyResourceDao.java | 44 + .../ranger/db/XXPolicyResourceMapDao.java | 30 + .../org/apache/ranger/db/XXResourceDefDao.java | 72 ++ .../apache/ranger/db/XXServiceConfigDefDao.java | 45 + .../apache/ranger/db/XXServiceConfigMapDao.java | 46 + .../java/org/apache/ranger/db/XXServiceDao.java | 32 + .../org/apache/ranger/db/XXServiceDefDao.java | 30 + .../apache/ranger/entity/XXAccessTypeDef.java | 284 +++++ .../ranger/entity/XXAccessTypeDefGrants.java | 176 +++ .../org/apache/ranger/entity/XXDataHist.java | 474 +++++++++ .../org/apache/ranger/entity/XXEnumDef.java | 212 ++++ .../apache/ranger/entity/XXEnumElementDef.java | 285 +++++ .../java/org/apache/ranger/entity/XXPolicy.java | 345 ++++++ .../ranger/entity/XXPolicyConditionDef.java | 432 ++++++++ .../org/apache/ranger/entity/XXPolicyItem.java | 240 +++++ .../ranger/entity/XXPolicyItemAccess.java | 282 +++++ .../ranger/entity/XXPolicyItemCondition.java | 282 +++++ .../ranger/entity/XXPolicyItemGroupPerm.java | 213 ++++ .../ranger/entity/XXPolicyItemUserPerm.java | 213 ++++ .../apache/ranger/entity/XXPolicyResource.java | 241 +++++ .../ranger/entity/XXPolicyResourceMap.java | 213 ++++ .../org/apache/ranger/entity/XXResourceDef.java | 668 ++++++++++++ .../org/apache/ranger/entity/XXService.java | 390 +++++++ .../ranger/entity/XXServiceConfigDef.java | 502 +++++++++ .../ranger/entity/XXServiceConfigMap.java | 213 ++++ .../org/apache/ranger/entity/XXServiceDef.java | 422 ++++++++ .../ranger/service/RangerAuditFields.java | 17 + .../ranger/service/RangerBaseModelService.java | 276 +++++ .../ranger/service/RangerDataHistService.java | 126 +++ .../ranger/service/RangerPolicyService.java | 152 +++ .../ranger/service/RangerPolicyServiceBase.java | 49 + .../ranger/service/RangerServiceDefService.java | 111 ++ .../service/RangerServiceDefServiceBase.java | 257 +++++ .../ranger/service/RangerServiceService.java | 59 + .../service/RangerServiceServiceBase.java | 49 + .../ranger/plugin/store/RangerDBStore.java | 9 + 50 files changed, 9367 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/c928a415/security-admin/db/patches/009-updated_schema.sql ---------------------------------------------------------------------- diff --git a/security-admin/db/patches/009-updated_schema.sql b/security-admin/db/patches/009-updated_schema.sql new file mode 100644 index 0000000..401a1dc --- /dev/null +++ b/security-admin/db/patches/009-updated_schema.sql @@ -0,0 +1,419 @@ +-- 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. + +-- Temporary table structure for view `vx_trx_log` +-- + +DROP TABLE IF EXISTS `x_service_def`; +CREATE TABLE `x_service_def` ( +`id` bigint(20) NOT NULL AUTO_INCREMENT , +`guid` varchar(1024) DEFAULT NULL, +`create_time` datetime DEFAULT NULL, +`update_time` datetime DEFAULT NULL, +`added_by_id` bigint(20) DEFAULT NULL, +`upd_by_id` bigint(20) DEFAULT NULL, +`version` bigint(20) DEFAULT NULL, +`name` varchar(1024) DEFAULT NULL, +`impl_class_name` varchar(1024) DEFAULT NULL, +`label` varchar(1024) DEFAULT NULL, +`description` varchar(1024) DEFAULT NULL, +`rb_key_label` varchar(1024) DEFAULT NULL, +`rb_key_description` varchar(1024) DEFAULT NULL, +`is_enabled` tinyint DEFAULT 1, +primary key (`id`), +KEY `x_service_def_added_by_id` (`added_by_id`), +KEY `x_service_def_upd_by_id` (`upd_by_id`), +KEY `x_service_def_cr_time` (`create_time`), +KEY `x_service_def_up_time` (`update_time`), +CONSTRAINT `x_service_def_FK_added_by_id` FOREIGN KEY (`added_by_id`) REFERENCES `x_portal_user` (`id`), +CONSTRAINT `x_service_def_FK_upd_by_id` FOREIGN KEY (`upd_by_id`) REFERENCES `x_portal_user` (`id`) +); + + +DROP TABLE IF EXISTS `x_service`; +CREATE TABLE `x_service` ( +`id` bigint(20) NOT NULL AUTO_INCREMENT , +`guid` varchar(1024) DEFAULT NULL, +`create_time` datetime DEFAULT NULL, +`update_time` datetime DEFAULT NULL, +`added_by_id` bigint(20) DEFAULT NULL, +`upd_by_id` bigint(20) DEFAULT NULL, +`version` bigint(20) DEFAULT NULL, +`type` bigint(20) DEFAULT NULL, +`name` varchar(512) DEFAULT NULL, +`policy_version` bigint(20) DEFAULT NULL, +`policy_update_time`datetime DEFAULT NULL, +`description` varchar(1024) DEFAULT NULL, +`is_enabled` tinyint(1) NOT NULL DEFAULT '0', +primary key (`id`), +UNIQUE KEY `X_service_name` (`name`), +KEY `x_service_added_by_id` (`added_by_id`), +KEY `x_service_upd_by_id` (`upd_by_id`), +KEY `x_service_cr_time` (`create_time`), +KEY `x_service_up_time` (`update_time`), +KEY `x_service_type` (`type`), +CONSTRAINT `x_service_FK_added_by_id` FOREIGN KEY (`added_by_id`) REFERENCES `x_portal_user` (`id`), +CONSTRAINT `x_service_FK_upd_by_id` FOREIGN KEY (`upd_by_id`) REFERENCES `x_portal_user` (`id`), +CONSTRAINT `x_service_FK_type` FOREIGN KEY (`type`) REFERENCES `x_service_def` (`id`) +); + +DROP TABLE IF EXISTS `x_policy`; +CREATE TABLE `x_policy` ( +`id` bigint(20) NOT NULL AUTO_INCREMENT , +`guid` varchar(1024) DEFAULT NULL, +`create_time` datetime DEFAULT NULL, +`update_time` datetime DEFAULT NULL, +`added_by_id` bigint(20) DEFAULT NULL, +`upd_by_id` bigint(20) DEFAULT NULL, +`version` bigint(20) DEFAULT NULL, +`service` bigint(20) DEFAULT NULL, +`name` varchar(512) DEFAULT NULL, +`description` varchar(1024) DEFAULT NULL, +`is_enabled` tinyint(1) NOT NULL DEFAULT '0', +`is_audit_enabled` tinyint(1) NOT NULL DEFAULT '0', +primary key (`id`), +UNIQUE KEY `x_policy_name` (`name`), +KEY `x_policy_added_by_id` (`added_by_id`), +KEY `x_policy_upd_by_id` (`upd_by_id`), +KEY `x_policy_cr_time` (`create_time`), +KEY `x_policy_up_time` (`update_time`), +KEY `x_policy_service` (`service`), +CONSTRAINT `x_policy_FK_added_by_id` FOREIGN KEY (`added_by_id`) REFERENCES `x_portal_user` (`id`), +CONSTRAINT `x_policy_FK_upd_by_id` FOREIGN KEY (`upd_by_id`) REFERENCES `x_portal_user` (`id`), +CONSTRAINT `x_policy_FK_service` FOREIGN KEY (`service`) REFERENCES `x_service` (`id`) +); + + +DROP TABLE IF EXISTS `x_service_config_def`; +CREATE TABLE `x_service_config_def` ( +`id` bigint(20) NOT NULL AUTO_INCREMENT , +`guid` varchar(1024) DEFAULT NULL, +`create_time` datetime DEFAULT NULL, +`update_time` datetime DEFAULT NULL, +`added_by_id` bigint(20) DEFAULT NULL, +`upd_by_id` bigint(20) DEFAULT NULL, +`def_id` bigint(20) NOT NULL, +`name` varchar(1024) DEFAULT NULL, +`type` varchar(1024) DEFAULT NULL, +`sub_type` varchar(1024) DEFAULT NULL, +`is_mandatory` tinyint(1) NOT NULL DEFAULT '0', +`default_value` varchar(1024) DEFAULT NULL, +`label` varchar(1024) DEFAULT NULL, +`description` varchar(1024) DEFAULT NULL, +`rb_key_label` varchar(1024) DEFAULT NULL, +`rb_key_decription` varchar(1024) DEFAULT NULL, +`sort_order` tinyint(3) DEFAULT '0', +primary key (`id`), +CONSTRAINT `x_service_config_def_FK_defid` FOREIGN KEY (`def_id`) REFERENCES `x_service_def` (`id`), +CONSTRAINT `x_service_config_def_FK_added_by_id` FOREIGN KEY (`added_by_id`) REFERENCES `x_portal_user` (`id`), +CONSTRAINT `x_service_config_def_FK_upd_by_id` FOREIGN KEY (`upd_by_id`) REFERENCES `x_portal_user` (`id`) +); + + +DROP TABLE IF EXISTS `x_resource_def`; +CREATE TABLE `x_resource_def` ( +`id` bigint(20) NOT NULL AUTO_INCREMENT , +`guid` varchar(1024) DEFAULT NULL, +`create_time` datetime DEFAULT NULL, +`update_time` datetime DEFAULT NULL, +`added_by_id` bigint(20) DEFAULT NULL, +`upd_by_id` bigint(20) DEFAULT NULL, +`def_id` bigint(20) NOT NULL, +`name` varchar(1024) DEFAULT NULL, +`type` varchar(1024) DEFAULT NULL, +`level` bigint(20) DEFAULT NULL, +`parent` bigint(20) DEFAULT NULL, +`mandatory` tinyint(1) NOT NULL DEFAULT '0', +`look_up_supported` tinyint(1) NOT NULL DEFAULT '0', +`recursive_supported` tinyint(1) NOT NULL DEFAULT '0', +`excludes_supported` tinyint(1) NOT NULL DEFAULT '0', +`matcher` varchar(1024) DEFAULT NULL, +`matcher_options` varchar(1024) DEFAULT NULL, +`label` varchar(1024) DEFAULT NULL, +`description` varchar(1024) DEFAULT NULL, +`rb_key_label` varchar(1024) DEFAULT NULL, +`rb_key_description` varchar(1024) DEFAULT NULL, +`sort_order` tinyint(3) DEFAULT '0', +primary key (`id`), +KEY `x_resource_def_FK_parent` (`parent`), +CONSTRAINT `x_resource_def_FK_parent` FOREIGN KEY (`parent`) REFERENCES `x_resource_def` (`id`) , +CONSTRAINT `x_resource_def_FK_defid` FOREIGN KEY (`def_id`) REFERENCES `x_service_def` (`id`), +CONSTRAINT `x_resource_def_FK_added_by_id` FOREIGN KEY (`added_by_id`) REFERENCES `x_portal_user` (`id`), +CONSTRAINT `x_resource_def_FK_upd_by_id` FOREIGN KEY (`upd_by_id`) REFERENCES `x_portal_user` (`id`) +); + +DROP TABLE IF EXISTS `x_access_type_def`; +CREATE TABLE `x_access_type_def` ( +`id` bigint(20) NOT NULL AUTO_INCREMENT , +`guid` varchar(1024) DEFAULT NULL, +`create_time` datetime DEFAULT NULL, +`update_time` datetime DEFAULT NULL, +`added_by_id` bigint(20) DEFAULT NULL, +`upd_by_id` bigint(20) DEFAULT NULL, +`def_id` bigint(20) NOT NULL, +`name` varchar(1024) DEFAULT NULL, +`label` varchar(1024) DEFAULT NULL, +`rb_key_label` varchar(1024) DEFAULT NULL, +`sort_order` tinyint(3) DEFAULT '0', +primary key (`id`) , +CONSTRAINT `x_access_type_def_FK_defid` FOREIGN KEY (`def_id`) REFERENCES `x_service_def` (`id`), +CONSTRAINT `x_access_type_def_FK_added_by_id` FOREIGN KEY (`added_by_id`) REFERENCES `x_portal_user` (`id`), +CONSTRAINT `x_access_type_def_FK_upd_by_id` FOREIGN KEY (`upd_by_id`) REFERENCES `x_portal_user` (`id`) +); + +DROP TABLE IF EXISTS `x_access_type_def_grants`; +CREATE TABLE `x_access_type_def_grants` ( +`id` bigint(20) NOT NULL AUTO_INCREMENT , +`guid` varchar(1024) DEFAULT NULL, +`create_time` datetime DEFAULT NULL, +`update_time` datetime DEFAULT NULL, +`added_by_id` bigint(20) DEFAULT NULL, +`upd_by_id` bigint(20) DEFAULT NULL, +`atd_id` bigint(20) NOT NULL, +`implied_grant` varchar(1024) DEFAULT NULL, +primary key (`id`), +CONSTRAINT `x_atd_grants_FK_atdid` FOREIGN KEY (`atd_id`) REFERENCES `x_access_type_def` (`id`), +CONSTRAINT `x_atd_grants_FK_added_by_id` FOREIGN KEY (`added_by_id`) REFERENCES `x_portal_user` (`id`), +CONSTRAINT `x_atd_grants_FK_upd_by_id` FOREIGN KEY (`upd_by_id`) REFERENCES `x_portal_user` (`id`) +); + +DROP TABLE IF EXISTS `x_policy_condition_def`; +CREATE TABLE `x_policy_condition_def` ( +`id` bigint(20) NOT NULL AUTO_INCREMENT , +`guid` varchar(1024) DEFAULT NULL, +`create_time` datetime DEFAULT NULL, +`update_time` datetime DEFAULT NULL, +`added_by_id` bigint(20) DEFAULT NULL, +`upd_by_id` bigint(20) DEFAULT NULL, +`def_id` bigint(20) NOT NULL, +`name` varchar(1024) DEFAULT NULL, +`evaluator` varchar(1024) DEFAULT NULL, +`evaluator_options` varchar(1024) DEFAULT NULL, +`label` varchar(1024) DEFAULT NULL, +`description` varchar(1024) DEFAULT NULL, +`rb_key_label` varchar(1024) DEFAULT NULL, +`rb_key_description` varchar(1024) DEFAULT NULL, +`sort_order` tinyint(3) DEFAULT '0', +primary key (`id`) , +CONSTRAINT `x_policy_condition_def_FK_defid` FOREIGN KEY (`def_id`) REFERENCES `x_service_def` (`id`), +CONSTRAINT `x_policy_condition_def_FK_added_by_id` FOREIGN KEY (`added_by_id`) REFERENCES `x_portal_user` (`id`), +CONSTRAINT `x_policy_condition_def_FK_upd_by_id` FOREIGN KEY (`upd_by_id`) REFERENCES `x_portal_user` (`id`) +); + +DROP TABLE IF EXISTS `x_enum_def`; +CREATE TABLE `x_enum_def` ( +`id` bigint(20) NOT NULL AUTO_INCREMENT , +`guid` varchar(1024) DEFAULT NULL, +`create_time` datetime DEFAULT NULL, +`update_time` datetime DEFAULT NULL, +`added_by_id` bigint(20) DEFAULT NULL, +`upd_by_id` bigint(20) DEFAULT NULL, +`def_id` bigint(20) NOT NULL, +`name` varchar(1024) DEFAULT NULL, +`default_index` bigint(20) DEFAULT NULL, +primary key (`id`), +CONSTRAINT `x_enum_def_FK_defid` FOREIGN KEY (`def_id`) REFERENCES `x_service_def` (`id`), +CONSTRAINT `x_enum_def_FK_added_by_id` FOREIGN KEY (`added_by_id`) REFERENCES `x_portal_user` (`id`), +CONSTRAINT `x_enum_def_FK_upd_by_id` FOREIGN KEY (`upd_by_id`) REFERENCES `x_portal_user` (`id`) +); + + +DROP TABLE IF EXISTS `x_enum_element_def`; +CREATE TABLE `x_enum_element_def` ( +`id` bigint(20) NOT NULL AUTO_INCREMENT , +`guid` varchar(1024) DEFAULT NULL, +`create_time` datetime DEFAULT NULL, +`update_time` datetime DEFAULT NULL, +`added_by_id` bigint(20) DEFAULT NULL, +`upd_by_id` bigint(20) DEFAULT NULL, +`enum_def_id` bigint(20) NOT NULL, +`name` varchar(1024) DEFAULT NULL, +`label` varchar(1024) DEFAULT NULL, +`rb_key_label` varchar(1024) DEFAULT NULL, +`sort_order` tinyint(3) DEFAULT '0', +primary key (`id`), +CONSTRAINT `x_enum_element_def_FK_defid` FOREIGN KEY (`enum_def_id`) REFERENCES `x_enum_def` (`id`), +CONSTRAINT `x_enum_element_def_FK_added_by_id` FOREIGN KEY (`added_by_id`) REFERENCES `x_portal_user` (`id`), +CONSTRAINT `x_enum_element_def_FK_upd_by_id` FOREIGN KEY (`upd_by_id`) REFERENCES `x_portal_user` (`id`) +); + + +DROP TABLE IF EXISTS `x_service_config_map`; +CREATE TABLE `x_service_config_map` ( +`id` bigint(20) NOT NULL AUTO_INCREMENT , +`guid` varchar(1024) DEFAULT NULL, +`create_time` datetime DEFAULT NULL, +`update_time` datetime DEFAULT NULL, +`added_by_id` bigint(20) DEFAULT NULL, +`upd_by_id` bigint(20) DEFAULT NULL, +`service` bigint(20) NOT NULL, +`config_key` varchar(1024) DEFAULT NULL, +`config_value` varchar(1024) DEFAULT NULL, +primary key (`id`), +CONSTRAINT `x_service_config_map_FK_` FOREIGN KEY (`service`) REFERENCES `x_service` (`id`), +CONSTRAINT `x_service_config_map_FK_added_by_id` FOREIGN KEY (`added_by_id`) REFERENCES `x_portal_user` (`id`), +CONSTRAINT `x_service_config_map_FK_upd_by_id` FOREIGN KEY (`upd_by_id`) REFERENCES `x_portal_user` (`id`) +); + + +DROP TABLE IF EXISTS `x_policy_resource`; +CREATE TABLE `x_policy_resource` ( +`id` bigint(20) NOT NULL AUTO_INCREMENT , +`guid` varchar(1024) DEFAULT NULL, +`create_time` datetime DEFAULT NULL, +`update_time` datetime DEFAULT NULL, +`added_by_id` bigint(20) DEFAULT NULL, +`upd_by_id` bigint(20) DEFAULT NULL, +`policy_id` bigint(20) NOT NULL, +`res_def_id` bigint(20) NOT NULL, +`is_excludes` tinyint(1) NOT NULL DEFAULT '0', +`is_recursive` tinyint(1) NOT NULL DEFAULT '0', +primary key (`id`), +CONSTRAINT `x_policy_resource_FK_policy_id` FOREIGN KEY (`policy_id`) REFERENCES `x_policy` (`id`), +CONSTRAINT `x_policy_resource_FK_res_def_id` FOREIGN KEY (`res_def_id`) REFERENCES `x_resource_def` (`id`), +CONSTRAINT `x_policy_resource_FK_added_by_id` FOREIGN KEY (`added_by_id`) REFERENCES `x_portal_user` (`id`), +CONSTRAINT `x_policy_resource_FK_upd_by_id` FOREIGN KEY (`upd_by_id`) REFERENCES `x_portal_user` (`id`) +); + + +DROP TABLE IF EXISTS `x_policy_resource_map`; +CREATE TABLE `x_policy_resource_map` ( +`id` bigint(20) NOT NULL AUTO_INCREMENT , +`guid` varchar(1024) DEFAULT NULL, +`create_time` datetime DEFAULT NULL, +`update_time` datetime DEFAULT NULL, +`added_by_id` bigint(20) DEFAULT NULL, +`upd_by_id` bigint(20) DEFAULT NULL, +`resource_id` bigint(20) NOT NULL, +`value` varchar(1024) DEFAULT NULL, +`sort_order` tinyint(3) DEFAULT '0', +primary key (`id`), +CONSTRAINT `x_policy_resource_map_FK_resource_id` FOREIGN KEY (`resource_id`) REFERENCES `x_policy_resource` (`id`), +CONSTRAINT `x_policy_resource_map_FK_added_by_id` FOREIGN KEY (`added_by_id`) REFERENCES `x_portal_user` (`id`), +CONSTRAINT `x_policy_resource_map_FK_upd_by_id` FOREIGN KEY (`upd_by_id`) REFERENCES `x_portal_user` (`id`) +); + + + +DROP TABLE IF EXISTS `x_policy_item`; +CREATE TABLE `x_policy_item` ( +`id` bigint(20) NOT NULL AUTO_INCREMENT , +`guid` varchar(1024) DEFAULT NULL, +`create_time` datetime DEFAULT NULL, +`update_time` datetime DEFAULT NULL, +`added_by_id` bigint(20) DEFAULT NULL, +`upd_by_id` bigint(20) DEFAULT NULL, +`policy_id` bigint(20) NOT NULL, +`delegate_admin` tinyint(1) NOT NULL DEFAULT '0', +`sort_order` tinyint(3) DEFAULT '0', +primary key (`id`), +CONSTRAINT `x_policy_item_FK_policy_id` FOREIGN KEY (`policy_id`) REFERENCES `x_policy` (`id`), +CONSTRAINT `x_policy_item_FK_added_by_id` FOREIGN KEY (`added_by_id`) REFERENCES `x_portal_user` (`id`), +CONSTRAINT `x_policy_item_FK_upd_by_id` FOREIGN KEY (`upd_by_id`) REFERENCES `x_portal_user` (`id`) +); + + +DROP TABLE IF EXISTS `x_policy_item_access`; +CREATE TABLE `x_policy_item_access` ( +`id` bigint(20) NOT NULL AUTO_INCREMENT , +`guid` varchar(1024) DEFAULT NULL, +`create_time` datetime DEFAULT NULL, +`update_time` datetime DEFAULT NULL, +`added_by_id` bigint(20) DEFAULT NULL, +`upd_by_id` bigint(20) DEFAULT NULL, +`policy_item_id` bigint(20) NOT NULL, +`type` bigint(20) NOT NULL, +`is_allowed` tinyint(11) NOT NULL DEFAULT '0', +`sort_order` tinyint(3) DEFAULT '0', +primary key (id), +CONSTRAINT `x_policy_item_access_FK_pi_id` FOREIGN KEY (`policy_item_id`) REFERENCES `x_policy_item` (`id`) , +CONSTRAINT `x_policy_item_access_FK_atd_id` FOREIGN KEY (`type`) REFERENCES `x_access_type_def` (`id`), +CONSTRAINT `x_policy_item_access_FK_added_by_id` FOREIGN KEY (`added_by_id`) REFERENCES `x_portal_user` (`id`), +CONSTRAINT `x_policy_item_access_FK_upd_by_id` FOREIGN KEY (`upd_by_id`) REFERENCES `x_portal_user` (`id`) +); + +DROP TABLE IF EXISTS `x_policy_item_condition`; +CREATE TABLE `x_policy_item_condition` ( +`id` bigint(20) NOT NULL AUTO_INCREMENT , +`guid` varchar(1024) DEFAULT NULL, +`create_time` datetime DEFAULT NULL, +`update_time` datetime DEFAULT NULL, +`added_by_id` bigint(20) DEFAULT NULL, +`upd_by_id` bigint(20) DEFAULT NULL, +`policy_item_id` bigint(20) NOT NULL, +`type` bigint(20) NOT NULL, +`value` varchar(1024) DEFAULT NULL, +`sort_order` tinyint(3) DEFAULT '0', +primary key (id), +CONSTRAINT `x_policy_item_condition_FK_pi_id` FOREIGN KEY (`policy_item_id`) REFERENCES `x_policy_item` (`id`) , +CONSTRAINT `x_policy_item_condition_FK_pcd_id` FOREIGN KEY (`type`) REFERENCES `x_policy_condition_def` (`id`), +CONSTRAINT `x_policy_item_condition_FK_added_by_id` FOREIGN KEY (`added_by_id`) REFERENCES `x_portal_user` (`id`), +CONSTRAINT `x_policy_item_condition_FK_upd_by_id` FOREIGN KEY (`upd_by_id`) REFERENCES `x_portal_user` (`id`) +); + +DROP TABLE IF EXISTS `x_policy_item_user_perm`; +CREATE TABLE `x_policy_item_user_perm` ( +`id` bigint(20) NOT NULL AUTO_INCREMENT , +`guid` varchar(1024) DEFAULT NULL, +`create_time` datetime DEFAULT NULL, +`update_time` datetime DEFAULT NULL, +`added_by_id` bigint(20) DEFAULT NULL, +`upd_by_id` bigint(20) DEFAULT NULL, +`policy_item_id` bigint(20) NOT NULL, +`user_id` bigint(20) NULL DEFAULT NULL, +`sort_order` tinyint(3) DEFAULT '0', +primary key (`id`), +CONSTRAINT `x_policy_item_user_perm_FK_pi_id` FOREIGN KEY (`policy_item_id`) REFERENCES `x_policy_item` (`id`) , +CONSTRAINT `x_policy_item_user_perm_FK_user_id` FOREIGN KEY (`user_id`) REFERENCES `x_user` (`id`), +CONSTRAINT `x_policy_item_user_perm_FK_added_by_id` FOREIGN KEY (`added_by_id`) REFERENCES `x_portal_user` (`id`), +CONSTRAINT `x_policy_item_user_perm_FK_upd_by_id` FOREIGN KEY (`upd_by_id`) REFERENCES `x_portal_user` (`id`) +); + + +DROP TABLE IF EXISTS `x_policy_item_group_perm`; +CREATE TABLE `x_policy_item_group_perm` ( +`id` bigint(20) NOT NULL AUTO_INCREMENT , +`guid` varchar(1024) DEFAULT NULL, +`create_time` datetime DEFAULT NULL, +`update_time` datetime DEFAULT NULL, +`added_by_id` bigint(20) DEFAULT NULL, +`upd_by_id` bigint(20) DEFAULT NULL, +`policy_item_id` bigint(20) NOT NULL, +`group_id` bigint(20) NULL DEFAULT NULL, +`sort_order` tinyint(3) DEFAULT '0', +primary key (`id`), +CONSTRAINT `x_policy_item_group_perm_FK_pi_id` FOREIGN KEY (`policy_item_id`) REFERENCES `x_policy_item` (`id`) , +CONSTRAINT `x_policy_item_group_perm_FK_group_id` FOREIGN KEY (`group_id`) REFERENCES `x_group` (`id`), +CONSTRAINT `x_policy_item_group_perm_FK_added_by_id` FOREIGN KEY (`added_by_id`) REFERENCES `x_portal_user` (`id`), +CONSTRAINT `x_policy_item_group_perm_FK_upd_by_id` FOREIGN KEY (`upd_by_id`) REFERENCES `x_portal_user` (`id`) +); + +DROP TABLE IF EXISTS `x_data_hist`; +CREATE TABLE `x_data_hist` ( +`id` bigint(20) NOT NULL AUTO_INCREMENT , +`create_time` datetime DEFAULT NULL, +`update_time` datetime DEFAULT NULL, +`obj_guid` varchar(1024) not null, +`obj_class_type` int NOT NULL, +`obj_id` bigint(20) not null, +`obj_name` varchar(1024) NOT NULL, +`version` bigint(20) DEFAULT NULL, +`action` varchar(512) NOT NULL, +`from_time` datetime NOT NULL, +`to_time` datetime DEFAULT NULL, +`content` text NOT NULL, +primary key (`id`) +); + http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/c928a415/security-admin/src/main/java/org/apache/ranger/biz/ServiceDBStore.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/biz/ServiceDBStore.java b/security-admin/src/main/java/org/apache/ranger/biz/ServiceDBStore.java new file mode 100644 index 0000000..47add30 --- /dev/null +++ b/security-admin/src/main/java/org/apache/ranger/biz/ServiceDBStore.java @@ -0,0 +1,1004 @@ +package org.apache.ranger.biz; + +import java.util.ArrayList; +import java.util.Collection; +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 org.apache.commons.lang.ObjectUtils; +import org.apache.commons.lang.StringUtils; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.apache.ranger.common.ContextUtil; +import org.apache.ranger.common.DateUtil; +import org.apache.ranger.common.MessageEnums; +import org.apache.ranger.common.RESTErrorUtil; +import org.apache.ranger.common.RangerCommonEnums; +import org.apache.ranger.common.StringUtil; +import org.apache.ranger.common.UserSessionBase; +import org.apache.ranger.db.RangerDaoManager; +import org.apache.ranger.db.XXAccessTypeDefDao; +import org.apache.ranger.db.XXAccessTypeDefGrantsDao; +import org.apache.ranger.db.XXEnumDefDao; +import org.apache.ranger.db.XXEnumElementDefDao; +import org.apache.ranger.db.XXPolicyConditionDefDao; +import org.apache.ranger.db.XXPolicyItemAccessDao; +import org.apache.ranger.db.XXPolicyItemConditionDao; +import org.apache.ranger.db.XXPolicyItemDao; +import org.apache.ranger.db.XXPolicyItemGroupPermDao; +import org.apache.ranger.db.XXPolicyItemUserPermDao; +import org.apache.ranger.db.XXPolicyResourceDao; +import org.apache.ranger.db.XXPolicyResourceMapDao; +import org.apache.ranger.db.XXResourceDefDao; +import org.apache.ranger.db.XXServiceConfigDefDao; +import org.apache.ranger.db.XXServiceConfigMapDao; +import org.apache.ranger.entity.XXAccessTypeDef; +import org.apache.ranger.entity.XXAccessTypeDefGrants; +import org.apache.ranger.entity.XXDBBase; +import org.apache.ranger.entity.XXEnumDef; +import org.apache.ranger.entity.XXEnumElementDef; +import org.apache.ranger.entity.XXGroup; +import org.apache.ranger.entity.XXPolicy; +import org.apache.ranger.entity.XXPolicyConditionDef; +import org.apache.ranger.entity.XXPolicyItem; +import org.apache.ranger.entity.XXPolicyItemAccess; +import org.apache.ranger.entity.XXPolicyItemCondition; +import org.apache.ranger.entity.XXPolicyItemGroupPerm; +import org.apache.ranger.entity.XXPolicyItemUserPerm; +import org.apache.ranger.entity.XXPolicyResource; +import org.apache.ranger.entity.XXPolicyResourceMap; +import org.apache.ranger.entity.XXResourceDef; +import org.apache.ranger.entity.XXService; +import org.apache.ranger.entity.XXServiceConfigDef; +import org.apache.ranger.entity.XXServiceConfigMap; +import org.apache.ranger.entity.XXServiceDef; +import org.apache.ranger.entity.XXUser; +import org.apache.ranger.plugin.model.RangerBaseModelObject; +import org.apache.ranger.plugin.model.RangerPolicy; +import org.apache.ranger.plugin.model.RangerPolicy.RangerPolicyItem; +import org.apache.ranger.plugin.model.RangerPolicy.RangerPolicyItemAccess; +import org.apache.ranger.plugin.model.RangerPolicy.RangerPolicyItemCondition; +import org.apache.ranger.plugin.model.RangerService; +import org.apache.ranger.plugin.model.RangerServiceDef; +import org.apache.ranger.plugin.model.RangerPolicy.RangerPolicyResource; +import org.apache.ranger.plugin.model.RangerServiceDef.RangerAccessTypeDef; +import org.apache.ranger.plugin.model.RangerServiceDef.RangerEnumDef; +import org.apache.ranger.plugin.model.RangerServiceDef.RangerEnumElementDef; +import org.apache.ranger.plugin.model.RangerServiceDef.RangerPolicyConditionDef; +import org.apache.ranger.plugin.model.RangerServiceDef.RangerResourceDef; +import org.apache.ranger.plugin.model.RangerServiceDef.RangerServiceConfigDef; +import org.apache.ranger.plugin.store.ServiceStore; +import org.apache.ranger.plugin.util.ServicePolicies; +import org.apache.ranger.service.RangerAuditFields; +import org.apache.ranger.service.RangerDataHistService; +import org.apache.ranger.service.RangerPolicyService; +import org.apache.ranger.service.RangerServiceDefService; +import org.apache.ranger.service.RangerServiceService; +import org.apache.ranger.service.XUserService; +import org.apache.ranger.view.VXUser; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import org.apache.ranger.plugin.util.SearchFilter; + + +@Component +public class ServiceDBStore implements ServiceStore { + private static final Log LOG = LogFactory.getLog(ServiceDBStore.class); + + @Autowired + RangerServiceDefService serviceDefService; + + @Autowired + RangerDaoManager daoMgr; + + @Autowired + RESTErrorUtil restErrorUtil; + + @Autowired + RangerServiceService svcService; + + @Autowired + StringUtil stringUtil; + + @Autowired + RangerAuditFields<XXDBBase> rangerAuditFields; + + @Autowired + RangerPolicyService policyService; + + @Autowired + XUserService xUserService; + + @Autowired + XUserMgr xUserMgr; + + @Autowired + RangerDataHistService dataHistService; + + static Map<String, Long> legacyServiceDefs = new HashMap<String, Long>(); + + static { + legacyServiceDefs.put("hdfs", new Long(1)); + legacyServiceDefs.put("hbase", new Long(2)); + legacyServiceDefs.put("hive", new Long(3)); + legacyServiceDefs.put("knox", new Long(5)); + legacyServiceDefs.put("storm", new Long(6)); + } + + + @Override + public void init() throws Exception { + if (LOG.isDebugEnabled()) { + LOG.debug("==> ServiceDefDBStore.init()"); + } + } + + + @Override + public RangerServiceDef createServiceDef(RangerServiceDef serviceDef) + throws Exception { + if (LOG.isDebugEnabled()) { + LOG.debug("==> ServiceDefDBStore.createServiceDef(" + serviceDef + ")"); + } + XXServiceDef xServiceDef = daoMgr.getXXServiceDef().findByName( + serviceDef.getName()); + if (xServiceDef != null) { + throw restErrorUtil.createRESTException("service-def with name: " + + serviceDef.getName() + " already exists", + MessageEnums.ERROR_DUPLICATE_OBJECT); + } + + List<RangerServiceConfigDef> configs = serviceDef.getConfigs(); + List<RangerResourceDef> resources = serviceDef.getResources(); + List<RangerAccessTypeDef> accessTypes = serviceDef.getAccessTypes(); + List<RangerPolicyConditionDef> policyConditions = serviceDef.getPolicyConditions(); + List<RangerEnumDef> enums = serviceDef.getEnums(); + + serviceDef = serviceDefService.create(serviceDef); + Long serviceDefId = serviceDef.getId(); + XXServiceDef createdSvcDef = daoMgr.getXXServiceDef().getById(serviceDefId); + + XXServiceConfigDefDao xxServiceConfigDao = daoMgr.getXXServiceConfigDef(); + for(RangerServiceConfigDef config : configs) { + XXServiceConfigDef xConfig = new XXServiceConfigDef(); + xConfig = serviceDefService.populateRangerServiceConfigDefToXX(config, xConfig, createdSvcDef); + xConfig = xxServiceConfigDao.create(xConfig); + } + + XXResourceDefDao xxResDefDao = daoMgr.getXXResourceDef(); + for(RangerResourceDef resource : resources) { + XXResourceDef parent = xxResDefDao.findByNameAndServiceDefId(resource.getParent(), serviceDefId); + Long parentId = (parent != null) ? parent.getId() : null; + + XXResourceDef xResource = new XXResourceDef(); + xResource = serviceDefService.populateRangerResourceDefToXX(resource, xResource, createdSvcDef); + xResource.setParent(parentId); + xResource = xxResDefDao.create(xResource); + } + + XXAccessTypeDefDao xxATDDao = daoMgr.getXXAccessTypeDef(); + for(RangerAccessTypeDef accessType : accessTypes) { + XXAccessTypeDef xAccessType = new XXAccessTypeDef(); + xAccessType = serviceDefService.populateRangerAccessTypeDefToXX(accessType, xAccessType, createdSvcDef); + xAccessType = xxATDDao.create(xAccessType); + + Collection<String> impliedGrants = accessType.getImpliedGrants(); + XXAccessTypeDefGrantsDao xxATDGrantDao = daoMgr.getXXAccessTypeDefGrants(); + for(String impliedGrant : impliedGrants) { + XXAccessTypeDefGrants xImpliedGrant = new XXAccessTypeDefGrants(); + xImpliedGrant.setAtdid(xAccessType.getId()); + xImpliedGrant.setImpliedgrant(impliedGrant); + xImpliedGrant = xxATDGrantDao.create(xImpliedGrant); + } + } + + XXPolicyConditionDefDao xxPolCondDao = daoMgr.getXXPolicyConditionDef(); + for (RangerPolicyConditionDef policyCondition : policyConditions) { + XXPolicyConditionDef xPolicyCondition = new XXPolicyConditionDef(); + xPolicyCondition = serviceDefService + .populateRangerPolicyConditionDefToXX(policyCondition, + xPolicyCondition, createdSvcDef); + xPolicyCondition = xxPolCondDao.create(xPolicyCondition); + } + + XXEnumDefDao xxEnumDefDao = daoMgr.getXXEnumDef(); + for(RangerEnumDef vEnum : enums) { + XXEnumDef xEnum = new XXEnumDef(); + xEnum = serviceDefService.populateRangerEnumDefToXX(vEnum, xEnum, createdSvcDef); + xEnum = xxEnumDefDao.create(xEnum); + + List<RangerEnumElementDef> elements = vEnum.getElements(); + XXEnumElementDefDao xxEnumEleDefDao = daoMgr.getXXEnumElementDef(); + for(RangerEnumElementDef element : elements) { + XXEnumElementDef xElement = new XXEnumElementDef(); + xElement = serviceDefService.populateRangerEnumElementDefToXX(element, xElement, xEnum); + xElement = xxEnumEleDefDao.create(xElement); + } + } + RangerServiceDef createdServiceDef = serviceDefService.getPopulatedViewObject(createdSvcDef); + dataHistService.createObjectDataHistory(createdServiceDef, RangerDataHistService.ACTION_CREATE); + return createdServiceDef; + } + + @Override + public RangerServiceDef updateServiceDef(RangerServiceDef serviceDef) + throws Exception { + if (LOG.isDebugEnabled()) { + LOG.debug("==> ServiceDefDBStore.updateServiceDef(" + serviceDef + ")"); + } + return null; + } + + @Override + public void deleteServiceDef(Long servceId) throws Exception { + + } + + @Override + public RangerServiceDef getServiceDef(Long id) throws Exception { + if (LOG.isDebugEnabled()) { + LOG.debug("==> ServiceDefDBStore.getServiceDef(" + id + ")"); + } + return serviceDefService.read(id); + } + + @Override + public RangerServiceDef getServiceDefByName(String name) throws Exception { + if (LOG.isDebugEnabled()) { + LOG.debug("==> ServiceDefDBStore.getServiceDefByName(" + name + ")"); + } + + XXServiceDef xServiceDef = daoMgr.getXXServiceDef().findByName(name); + return serviceDefService.getPopulatedViewObject(xServiceDef); + } + + @Override + public List<RangerServiceDef> getServiceDefs(SearchFilter filter) throws Exception { + if(LOG.isDebugEnabled()) { + LOG.debug("==> ServiceDBStore.getServiceDefs()"); + } + List<RangerServiceDef> serviceDefList = serviceDefService.getServiceDefs(filter); + + return serviceDefList; + } + + @Override + public RangerService createService(RangerService service) throws Exception { + if (LOG.isDebugEnabled()) { + LOG.debug("==> ServiceDefDBStore.createService(" + service + ")"); + } + + UserSessionBase usb = ContextUtil.getCurrentUserSession(); + if (usb != null && usb.isUserAdmin()) { + Map<String, String> configs = service.getConfigs(); + Map<String, String> validConfigs = validateRequiredConfigParams( + service, configs); + if (validConfigs == null) { + if (LOG.isDebugEnabled()) { + LOG.debug("==> ConfigParams cannot be null, ServiceDefDBStore.createService(" + service + ")"); + } + throw restErrorUtil.createRESTException( + "ConfigParams cannot be null.", + MessageEnums.ERROR_CREATING_OBJECT); + } + + service = svcService.create(service); + XXService xCreatedService = daoMgr.getXXService().getById(service.getId()); + VXUser vXUser = null; + + XXServiceConfigMapDao xConfMapDao = daoMgr.getXXServiceConfigMap(); + for (Entry<String, String> configMap : validConfigs.entrySet()) { + String configKey = configMap.getKey(); + String configValue = configMap.getValue(); + + if(StringUtils.equalsIgnoreCase(configKey, "username")) { + String userName = stringUtil.getValidUserName(configValue); + XXUser xxUser = daoMgr.getXXUser().findByUserName(userName); + if (xxUser != null) { + vXUser = xUserService.populateViewBean(xxUser); + } else { + vXUser = new VXUser(); + vXUser.setName(userName); + vXUser.setUserSource(RangerCommonEnums.USER_EXTERNAL); + vXUser = xUserMgr.createXUser(vXUser); + } + } + + XXServiceConfigMap xConfMap = new XXServiceConfigMap(); + xConfMap = (XXServiceConfigMap) rangerAuditFields.populateAuditFields(xConfMap, xCreatedService); + xConfMap.setServiceId(xCreatedService.getId()); + xConfMap.setConfigkey(configKey); + xConfMap.setConfigvalue(configValue); + xConfMap = xConfMapDao.create(xConfMap); + } + RangerService createdService = svcService.getPopulatedViewObject(xCreatedService); + dataHistService.createObjectDataHistory(createdService, RangerDataHistService.ACTION_CREATE); + + createDefaultPolicy(xCreatedService, vXUser); + + return createdService; + } else { + LOG.debug("User id : " + usb.getUserId() + " doesn't have admin access to create repository."); + throw restErrorUtil.createRESTException( + "Sorry, you don't have permission to perform the operation", + MessageEnums.OPER_NOT_ALLOWED_FOR_ENTITY); + + } + } + + @Override + public RangerService updateService(RangerService service) throws Exception { + if(LOG.isDebugEnabled()) { + LOG.debug("==> ServiceDBStore.updateService()"); + } + + UserSessionBase usb = ContextUtil.getCurrentUserSession(); + if (usb != null && usb.isUserAdmin()) { + + XXService existing = daoMgr.getXXService().getById(service.getId()); + + if(existing == null) { + throw restErrorUtil.createRESTException( + "no service exists with ID=" + service.getId(), + MessageEnums.DATA_NOT_FOUND); + } + + String existingName = existing.getName(); + + boolean renamed = !StringUtils.equalsIgnoreCase(service.getName(), existingName); + + if(renamed) { + XXService newNameService = daoMgr.getXXService().findByName(service.getName()); + + if(newNameService != null) { + throw restErrorUtil.createRESTException("another service already exists with name '" + + service.getName() + "'. ID=" + newNameService.getId(), MessageEnums.DATA_NOT_UPDATABLE); + } + } + + Map<String, String> configs = service.getConfigs(); + Map<String, String> validConfigs = validateRequiredConfigParams( + service, configs); + if (validConfigs == null) { + if (LOG.isDebugEnabled()) { + LOG.debug("==> ConfigParams cannot be null, ServiceDefDBStore.createService(" + service + ")"); + } + throw restErrorUtil.createRESTException( + "ConfigParams cannot be null.", + MessageEnums.ERROR_CREATING_OBJECT); + } + service = svcService.update(service); + XXService xUpdService = daoMgr.getXXService().getById(service.getId()); + + List<XXServiceConfigMap> dbConfigMaps = daoMgr.getXXServiceConfigMap().findByServiceId(service.getId()); + for(XXServiceConfigMap dbConfigMap : dbConfigMaps) { + daoMgr.getXXServiceConfigMap().remove(dbConfigMap); + } + + VXUser vXUser = null; + XXServiceConfigMapDao xConfMapDao = daoMgr.getXXServiceConfigMap(); + for (Entry<String, String> configMap : validConfigs.entrySet()) { + String configKey = configMap.getKey(); + String configValue = configMap.getValue(); + + if(StringUtils.equalsIgnoreCase(configKey, "username")) { + String userName = stringUtil.getValidUserName(configValue); + XXUser xxUser = daoMgr.getXXUser().findByUserName(userName); + if (xxUser != null) { + vXUser = xUserService.populateViewBean(xxUser); + } else { + vXUser = new VXUser(); + vXUser.setName(userName); + vXUser.setUserSource(RangerCommonEnums.USER_EXTERNAL); + vXUser = xUserMgr.createXUser(vXUser); + } + } + + XXServiceConfigMap xConfMap = new XXServiceConfigMap(); + xConfMap = (XXServiceConfigMap) rangerAuditFields.populateAuditFields(xConfMap, xUpdService); + xConfMap.setServiceId(service.getId()); + xConfMap.setConfigkey(configKey); + xConfMap.setConfigvalue(configValue); + xConfMap = xConfMapDao.create(xConfMap); + } + RangerService updService = svcService.getPopulatedViewObject(xUpdService); + dataHistService.createObjectDataHistory(updService, RangerDataHistService.ACTION_UPDATE); + return updService; + } else { + LOG.debug("User id : " + usb.getUserId() + " doesn't have admin access to update repository."); + throw restErrorUtil.createRESTException( + "Sorry, you don't have permission to perform the operation", + MessageEnums.OPER_NOT_ALLOWED_FOR_ENTITY); + + } + } + + @Override + public void deleteService(Long id) throws Exception { + if(LOG.isDebugEnabled()) { + LOG.debug("==> ServiceDBStore.deleteService(" + id + ")"); + } + + RangerService service = getService(id); + + if(service == null) { + throw new Exception("no service exists with ID=" + id); + } + + List<XXPolicy> policies = daoMgr.getXXPolicy().findByServiceId(service.getId()); + for(XXPolicy policy : policies) { + LOG.info("Deleting Policy, policyName: " + policy.getName()); + deletePolicy(policy.getId()); + } + + XXServiceConfigMapDao configDao = daoMgr.getXXServiceConfigMap(); + List<XXServiceConfigMap> configs = configDao.findByServiceId(service.getId()); + for (XXServiceConfigMap configMap : configs) { + configDao.remove(configMap); + } + + svcService.delete(service); + dataHistService.createObjectDataHistory(service, RangerDataHistService.ACTION_DELETE); + } + + @Override + public RangerService getService(Long id) throws Exception { + if(LOG.isDebugEnabled()) { + LOG.debug("==> ServiceDBStore.getService()"); + } + return svcService.read(id); + } + + @Override + public RangerService getServiceByName(String name) throws Exception { + if(LOG.isDebugEnabled()) { + LOG.debug("==> ServiceDBStore.getServiceByName()"); + } + XXService xService = daoMgr.getXXService().findByName(name); + return svcService.getPopulatedViewObject(xService); + } + + @Override + public List<RangerService> getServices(SearchFilter filter) throws Exception { + if(LOG.isDebugEnabled()) { + LOG.debug("==> ServiceDBStore.getServices()"); + } + List<RangerService> serviceList = svcService.getServices(filter); + + return serviceList; + } + + @Override + public RangerPolicy createPolicy(RangerPolicy policy) throws Exception { + + RangerService service = getServiceByName(policy.getService()); + + if(service == null) { + throw new Exception("service does not exist - name=" + policy.getService()); + } + + XXPolicy existing = daoMgr.getXXPolicy().findByName(policy.getName()); + + if(existing != null) { + throw new Exception("policy already exists: ServiceName=" + policy.getService() + "; PolicyName=" + policy.getName() + ". ID=" + existing.getId()); + } + + Map<String, RangerPolicyResource> resources = policy.getResources(); + List<RangerPolicyItem> policyItems = policy.getPolicyItems(); + + policy = policyService.create(policy); + XXPolicy xCreatedPolicy = daoMgr.getXXPolicy().getById(policy.getId()); + + createNewResourcesForPolicy(policy, xCreatedPolicy, resources); + createNewPolicyItemsForPolicy(policy, xCreatedPolicy, policyItems); + + RangerPolicy createdPolicy = policyService.getPopulatedViewObject(xCreatedPolicy); + dataHistService.createObjectDataHistory(createdPolicy, RangerDataHistService.ACTION_CREATE); + + return createdPolicy; + } + + @Override + public RangerPolicy updatePolicy(RangerPolicy policy) throws Exception { + if(LOG.isDebugEnabled()) { + LOG.debug("==> ServiceDBStore.updatePolicy(" + policy + ")"); + } + UserSessionBase currentUserSession = ContextUtil + .getCurrentUserSession(); + if (currentUserSession == null) { + throw restErrorUtil.createRESTException("Policy updation not " + + "allowed",MessageEnums.OPER_NO_PERMISSION); + } + + RangerPolicy existing = getPolicy(policy.getId()); + + if(existing == null) { + throw new Exception("no policy exists with ID=" + policy.getId()); + } + + RangerService service = getServiceByName(policy.getService()); + + if(service == null) { + throw new Exception("service does not exist - name=" + policy.getService()); + } + if(! StringUtils.equalsIgnoreCase(existing.getService(), policy.getService())) { + throw new Exception("policy id=" + policy.getId() + " already exists in service " + existing.getService() + ". It can not be moved to service " + policy.getService()); + } + boolean renamed = !StringUtils.equalsIgnoreCase(policy.getName(), existing.getName()); + + if(renamed) { + XXPolicy newNamePolicy = daoMgr.getXXPolicy().findByName(policy.getName()); + + if(newNamePolicy != null) { + throw new Exception("another policy already exists with name '" + policy.getName() + "'. ID=" + newNamePolicy.getId()); + } + } + Map<String, RangerPolicyResource> newResources = policy.getResources(); + List<RangerPolicyItem> newPolicyItems = policy.getPolicyItems(); + + policy = policyService.update(policy); + XXPolicy newUpdPolicy = daoMgr.getXXPolicy().getById(policy.getId()); + + deleteExistingPolicyResources(policy); + deleteExistingPolicyItems(policy); + + createNewResourcesForPolicy(policy, newUpdPolicy, newResources); + createNewPolicyItemsForPolicy(policy, newUpdPolicy, newPolicyItems); + + handlePolicyUpdate(service); + RangerPolicy updPolicy = policyService.getPopulatedViewObject(newUpdPolicy); + dataHistService.createObjectDataHistory(updPolicy, RangerDataHistService.ACTION_UPDATE); + + return updPolicy; + } + + @Override + public void deletePolicy(Long policyId) throws Exception { + if(LOG.isDebugEnabled()) { + LOG.debug("==> ServiceDBStore.deletePolicy(" + policyId + ")"); + } + + RangerPolicy policy = getPolicy(policyId); + + if(policy == null) { + throw new Exception("no policy exists with ID=" + policyId); + } + + String policyName = policy.getName(); + RangerService service = getServiceByName(policy.getService()); + + if(service == null) { + throw new Exception("service does not exist - name='" + policy.getService()); + } + + deleteExistingPolicyItems(policy); + deleteExistingPolicyResources(policy); + + policyService.delete(policy); + handlePolicyUpdate(service); + + dataHistService.createObjectDataHistory(policy, RangerDataHistService.ACTION_DELETE); + + LOG.info("Policy Deleted Successfully. PolicyName : " +policyName); + } + + @Override + public RangerPolicy getPolicy(Long id) throws Exception { + return policyService.read(id); + } + + @Override + public List<RangerPolicy> getPolicies(SearchFilter filter) throws Exception { + if(LOG.isDebugEnabled()) { + LOG.debug("==> ServiceDBStore.getPolicies()"); + } + + List<RangerPolicy> ret = new ArrayList<RangerPolicy>(); + List<XXPolicy> policyList = daoMgr.getXXPolicy().getAll(); + for (XXPolicy xPolicy : policyList) { + RangerPolicy policy = policyService.getPopulatedViewObject(xPolicy); + ret.add(policy); + } + + return ret; + } + + @Override + public List<RangerPolicy> getServicePolicies(Long serviceId, SearchFilter filter) throws Exception { + if(LOG.isDebugEnabled()) { + LOG.debug("==> ServiceDBStore.getServicePolicies(" + serviceId + ")"); + } + + List<XXPolicy> servicePolicyList = daoMgr.getXXPolicy().findByServiceId(serviceId); + List<RangerPolicy> servicePolicies = new ArrayList<RangerPolicy>(); + for(XXPolicy xPolicy : servicePolicyList) { + RangerPolicy servicePolicy = policyService.getPopulatedViewObject(xPolicy); + servicePolicies.add(servicePolicy); + } + + return servicePolicies; + } + + @Override + public List<RangerPolicy> getServicePolicies(String serviceName, SearchFilter filter) throws Exception { + if(LOG.isDebugEnabled()) { + LOG.debug("==> ServiceDBStore.getServicePolicies(" + serviceName + ")"); + } + + List<RangerPolicy> ret = new ArrayList<RangerPolicy>(); + + try { + XXService service = daoMgr.getXXService().findByName(serviceName); + + if(service == null) { + return ret; + } + + List<XXPolicy> policyList = daoMgr.getXXPolicy().findByServiceId(service.getId()); + for (XXPolicy xPolicy : policyList) { + RangerPolicy policy = policyService.getPopulatedViewObject(xPolicy); + ret.add(policy); + } + } catch(Exception excp) { + LOG.error("ServiceDBStore.getServicePolicies(" + serviceName + "): failed to read policies", excp); + } + + return ret; + } + + @Override + public ServicePolicies getServicePoliciesIfUpdated(String serviceName, Long lastKnownVersion) throws Exception { + if(LOG.isDebugEnabled()) { + LOG.debug("==> ServiceDBStore.getServicePoliciesIfUpdated(" + serviceName + ", " + lastKnownVersion + ")"); + } + + ServicePolicies ret = null; + + RangerService service = getServiceByName(serviceName); + + if(service == null) { + throw new Exception("service does not exist - name=" + serviceName); + } + + RangerServiceDef serviceDef = getServiceDefByName(service.getType()); + + if(serviceDef == null) { + throw new Exception(service.getType() + ": unknown service-def)"); + } + + if(lastKnownVersion == null || service.getPolicyVersion() == null || lastKnownVersion.longValue() != service.getPolicyVersion().longValue()) { + SearchFilter filter = new SearchFilter(SearchFilter.SERVICE_NAME, serviceName); + + List<RangerPolicy> policies = getServicePolicies(serviceName, filter); + + ret = new ServicePolicies(); + + ret.setServiceId(service.getId()); + ret.setServiceName(service.getName()); + ret.setPolicyVersion(service.getPolicyVersion()); + ret.setPolicyUpdateTime(service.getPolicyUpdateTime()); + ret.setPolicies(policies); + ret.setServiceDef(serviceDef); + } + + if(LOG.isDebugEnabled()) { + LOG.debug("<== ServiceDBStore.getServicePoliciesIfUpdated(" + serviceName + ", " + lastKnownVersion + "): count=" + ((ret == null || ret.getPolicies() == null) ? 0 : ret.getPolicies().size())); + } + + if(ret != null && ret.getPolicies() != null) { + Collections.sort(ret.getPolicies(), idComparator); + } + + return ret; + } + + private void createDefaultPolicy(XXService createdService, VXUser vXUser) throws Exception { + RangerPolicy policy = new RangerPolicy(); + String policyName=createdService.getName()+"-"+1+"-"+DateUtil.dateToString(DateUtil.getUTCDate(),"yyyyMMddHHmmss"); + + policy.setIsEnabled(true); + policy.setVersion(1L); + policy.setName(policyName); + policy.setService(createdService.getName()); + policy.setDescription("Default Policy for Service: " + createdService.getName()); + policy.setIsAuditEnabled(true); + + Map<String, RangerPolicyResource> resources = new HashMap<String, RangerPolicyResource>(); + List<XXResourceDef> resDefList = daoMgr.getXXResourceDef().findByServiceDefId(createdService.getType()); + + for(XXResourceDef resDef : resDefList) { + RangerPolicyResource polRes = new RangerPolicyResource(); + polRes.setIsExcludes(false); + polRes.setIsRecursive(false); + + String value; + if("path".equalsIgnoreCase(resDef.getName())) { + value = "/*/*"; + } else { + value = "*"; + } + polRes.setValue(value); + resources.put(resDef.getName(), polRes); + } + policy.setResources(resources); + + if (vXUser != null) { + List<RangerPolicyItem> policyItems = new ArrayList<RangerPolicyItem>(); + RangerPolicyItem policyItem = new RangerPolicyItem(); + + List<String> users = new ArrayList<String>(); + users.add(vXUser.getName()); + policyItem.setUsers(users); + + List<XXAccessTypeDef> accessTypeDefs = daoMgr.getXXAccessTypeDef().findByServiceDefId(createdService.getType()); + List<RangerPolicyItemAccess> accesses = new ArrayList<RangerPolicyItemAccess>(); + for(XXAccessTypeDef accessTypeDef : accessTypeDefs) { + RangerPolicyItemAccess access = new RangerPolicyItemAccess(); + access.setType(accessTypeDef.getName()); + access.setIsAllowed(true); + accesses.add(access); + } + policyItem.setAccesses(accesses); + + policyItem.setDelegateAdmin(true); + policyItems.add(policyItem); + policy.setPolicyItems(policyItems); + } + policy = createPolicy(policy); + handlePolicyUpdate(svcService.getPopulatedViewObject(createdService)); + } + + + private Map<String, String> validateRequiredConfigParams(RangerService service, Map<String, String> configs) { + if(LOG.isDebugEnabled()) { + LOG.debug("==> ServiceDBStore.validateRequiredConfigParams()"); + } + if(configs == null) { + return null; + } + + List<XXServiceConfigDef> svcConfDefList = daoMgr.getXXServiceConfigDef() + .findByServiceDefName(service.getType()); + for(XXServiceConfigDef svcConfDef : svcConfDefList ) { + String confField = configs.get(svcConfDef.getName()); + + if(svcConfDef.getIsMandatory() && stringUtil.isEmpty(confField)) { + throw restErrorUtil.createRESTException( + "Please provide value of mandatory: "+ svcConfDef.getName(), + MessageEnums.INVALID_INPUT_DATA); + } + } + Map<String, String> validConfigs = new HashMap<String, String>(); + for(Entry<String, String> config : configs.entrySet()) { + String confKey = config.getKey(); + String confValue = config.getValue(); + + boolean found = false; + for(XXServiceConfigDef xConfDef : svcConfDefList) { + if((xConfDef.getName()).equalsIgnoreCase(confKey)) { + found = true; + break; + } + } + if(found) { + validConfigs.put(confKey, confValue); + } else { + LOG.info("Ignoring this config parameter:" + confKey + + ", as its not valid conf param for service"); + } + } + return validConfigs; + } + + private void handlePolicyUpdate(RangerService service) throws Exception { + if(service == null) { + return; + } + + Long policyVersion = service.getPolicyVersion(); + + if(policyVersion == null) { + policyVersion = new Long(1); + } else { + policyVersion = new Long(policyVersion.longValue() + 1); + } + + service.setPolicyVersion(policyVersion); + service.setPolicyUpdateTime(new Date()); + service = updateService(service); + } + + private void createNewPolicyItemsForPolicy(RangerPolicy policy, XXPolicy xPolicy, List<RangerPolicyItem> policyItems) { + + for (RangerPolicyItem policyItem : policyItems) { + XXPolicyItem xPolicyItem = new XXPolicyItem(); + xPolicyItem = (XXPolicyItem) rangerAuditFields.populateAuditFields( + xPolicyItem, xPolicy); + xPolicyItem.setDelegateAdmin(policyItem.getDelegateAdmin()); + xPolicyItem.setPolicyId(policy.getId()); + xPolicyItem = daoMgr.getXXPolicyItem().create(xPolicyItem); + + List<RangerPolicyItemAccess> accesses = policyItem.getAccesses(); + for (RangerPolicyItemAccess access : accesses) { + + XXAccessTypeDef xAccTypeDef = daoMgr.getXXAccessTypeDef() + .findByNameAndServiceId(access.getType(), + xPolicy.getService()); + if (xAccTypeDef == null) { + LOG.info("One of given accessType is not valid for this policy. access: " + + access.getType() + ", Ignoring this access"); + continue; + } + + XXPolicyItemAccess xPolItemAcc = new XXPolicyItemAccess(); + xPolItemAcc = (XXPolicyItemAccess) rangerAuditFields.populateAuditFields(xPolItemAcc, xPolicyItem); + xPolItemAcc.setIsAllowed(access.getIsAllowed()); + + xPolItemAcc.setType(xAccTypeDef.getId()); + xPolItemAcc.setPolicyitemid(xPolicyItem.getId()); + xPolItemAcc = daoMgr.getXXPolicyItemAccess() + .create(xPolItemAcc); + } + List<String> users = policyItem.getUsers(); + for(String user : users) { + XXUser xUser = daoMgr.getXXUser().findByUserName(user); + if(xUser == null) { + LOG.info("User does not exists with username: " + + user + ", Ignoring permissions given to this user for policy"); + continue; + } + XXPolicyItemUserPerm xUserPerm = new XXPolicyItemUserPerm(); + xUserPerm = (XXPolicyItemUserPerm) rangerAuditFields.populateAuditFields(xUserPerm, xPolicyItem); + xUserPerm.setUserId(xUser.getId()); + xUserPerm.setPolicyItemId(xPolicyItem.getId()); + xUserPerm = daoMgr.getXXPolicyItemUserPerm().create(xUserPerm); + } + + List<String> groups = policyItem.getGroups(); + for(String group : groups) { + XXGroup xGrp = daoMgr.getXXGroup().findByGroupName(group); + if(xGrp == null) { + LOG.info("Group does not exists with groupName: " + + group + ", Ignoring permissions given to this group for policy"); + continue; + } + XXPolicyItemGroupPerm xGrpPerm = new XXPolicyItemGroupPerm(); + xGrpPerm = (XXPolicyItemGroupPerm) rangerAuditFields.populateAuditFields(xGrpPerm, xPolicyItem); + xGrpPerm.setGroupId(xGrp.getId()); + xGrpPerm.setPolicyItemId(xPolicyItem.getId()); + xGrpPerm = daoMgr.getXXPolicyItemGroupPerm().create(xGrpPerm); + } + + List<RangerPolicyItemCondition> conditions = policyItem.getConditions(); + for(RangerPolicyItemCondition condition : conditions) { + XXPolicyConditionDef xPolCond = daoMgr + .getXXPolicyConditionDef().findByPolicyItemIdAndName( + xPolicyItem.getId(), condition.getType()); + + if(xPolCond == null) { + LOG.info("PolicyCondition is not valid, condition: " + + condition.getType() + + ", Ignoring creation of this policy condition"); + continue; + } + + for(String value : condition.getValues()) { + XXPolicyItemCondition xPolItemCond = new XXPolicyItemCondition(); + xPolItemCond = (XXPolicyItemCondition) rangerAuditFields.populateAuditFields(xPolItemCond, xPolicyItem); + xPolItemCond.setPolicyItemId(xPolicyItem.getId()); + xPolItemCond.setType(xPolCond.getId()); + xPolItemCond.setValue(value); + xPolItemCond = daoMgr.getXXPolicyItemCondition().create(xPolItemCond); + } + } + } + } + + private void createNewResourcesForPolicy(RangerPolicy policy, XXPolicy xPolicy, Map<String, RangerPolicyResource> resources) { + + for (Entry<String, RangerPolicyResource> resource : resources.entrySet()) { + RangerPolicyResource policyRes = resource.getValue(); + + XXResourceDef xResDef = daoMgr.getXXResourceDef() + .findByNameAndPolicyId(resource.getKey(), policy.getId()); + if (xResDef == null) { + LOG.info("No Such Resource found, resourceName : " + + resource.getKey() + ", Ignoring this resource."); + continue; + } + + XXPolicyResource xPolRes = new XXPolicyResource(); + xPolRes = (XXPolicyResource) rangerAuditFields.populateAuditFields(xPolRes, xPolicy); + + xPolRes.setIsExcludes(policyRes.getIsExcludes()); + xPolRes.setIsRecursive(policyRes.getIsRecursive()); + xPolRes.setPolicyId(policy.getId()); + xPolRes.setResDefId(xResDef.getId()); + xPolRes = daoMgr.getXXPolicyResource().create(xPolRes); + + List<String> values = policyRes.getValues(); + for (String value : values) { + XXPolicyResourceMap xPolResMap = new XXPolicyResourceMap(); + xPolResMap = (XXPolicyResourceMap) rangerAuditFields.populateAuditFields(xPolResMap, xPolRes); + xPolResMap.setResourceId(xPolRes.getId()); + xPolResMap.setValue(value); + + xPolResMap = daoMgr.getXXPolicyResourceMap().create(xPolResMap); + } + } + } + + private Boolean deleteExistingPolicyItems(RangerPolicy policy) { + if(policy == null) { + return false; + } + + XXPolicyItemDao policyItemDao = daoMgr.getXXPolicyItem(); + List<XXPolicyItem> policyItems = policyItemDao.findByPolicyId(policy.getId()); + for(XXPolicyItem policyItem : policyItems) { + Long polItemId = policyItem.getId(); + + XXPolicyItemConditionDao polCondDao = daoMgr.getXXPolicyItemCondition(); + List<XXPolicyItemCondition> conditions = polCondDao.findByPolicyItemId(polItemId); + for(XXPolicyItemCondition condition : conditions) { + polCondDao.remove(condition); + } + + XXPolicyItemGroupPermDao grpPermDao = daoMgr.getXXPolicyItemGroupPerm(); + List<XXPolicyItemGroupPerm> groups = grpPermDao.findByPolicyItemId(polItemId); + for(XXPolicyItemGroupPerm group : groups) { + grpPermDao.remove(group); + } + + XXPolicyItemUserPermDao userPermDao = daoMgr.getXXPolicyItemUserPerm(); + List<XXPolicyItemUserPerm> users = userPermDao.findByPolicyItemId(polItemId); + for(XXPolicyItemUserPerm user : users) { + userPermDao.remove(user); + } + + XXPolicyItemAccessDao polItemAccDao = daoMgr.getXXPolicyItemAccess(); + List<XXPolicyItemAccess> accesses = polItemAccDao.findByPolicyItemId(polItemId); + for(XXPolicyItemAccess access : accesses) { + polItemAccDao.remove(access); + } + + policyItemDao.remove(policyItem); + } + return true; + } + + private Boolean deleteExistingPolicyResources(RangerPolicy policy) { + if(policy == null) { + return false; + } + + List<XXPolicyResource> resources = daoMgr.getXXPolicyResource().findByPolicyId(policy.getId()); + + XXPolicyResourceDao resDao = daoMgr.getXXPolicyResource(); + for(XXPolicyResource resource : resources) { + List<XXPolicyResourceMap> resMapList = daoMgr.getXXPolicyResourceMap().findByPolicyResId(resource.getId()); + + XXPolicyResourceMapDao resMapDao = daoMgr.getXXPolicyResourceMap(); + for(XXPolicyResourceMap resMap : resMapList) { + resMapDao.remove(resMap); + } + resDao.remove(resource); + } + return true; + } + + private final static Comparator<RangerBaseModelObject> idComparator = new Comparator<RangerBaseModelObject>() { + @Override + public int compare(RangerBaseModelObject o1, RangerBaseModelObject o2) { + Long val1 = (o1 != null) ? o1.getId() : null; + Long val2 = (o2 != null) ? o2.getId() : null; + + return ObjectUtils.compare(val1, val2); + } + }; +} http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/c928a415/security-admin/src/main/java/org/apache/ranger/db/XXAccessTypeDefDao.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/db/XXAccessTypeDefDao.java b/security-admin/src/main/java/org/apache/ranger/db/XXAccessTypeDefDao.java new file mode 100644 index 0000000..df68874 --- /dev/null +++ b/security-admin/src/main/java/org/apache/ranger/db/XXAccessTypeDefDao.java @@ -0,0 +1,45 @@ +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.XXAccessTypeDef; + +public class XXAccessTypeDefDao extends BaseDao<XXAccessTypeDef> { + + public XXAccessTypeDefDao(RangerDaoManagerBase daoManager) { + super(daoManager); + } + + public List<XXAccessTypeDef> findByServiceDefId(Long serviceDefId) { + if (serviceDefId == null) { + return new ArrayList<XXAccessTypeDef>(); + } + try { + List<XXAccessTypeDef> retList = getEntityManager() + .createNamedQuery("XXAccessTypeDef.findByServiceDefId", tClass) + .setParameter("serviceDefId", serviceDefId).getResultList(); + return retList; + } catch (NoResultException e) { + return new ArrayList<XXAccessTypeDef>(); + } + } + + public XXAccessTypeDef findByNameAndServiceId(String name, Long serviceId) { + if(name == null || serviceId == null) { + return null; + } + try { + return getEntityManager() + .createNamedQuery("XXAccessTypeDef.findByNameAndServiceId", tClass) + .setParameter("name", name).setParameter("serviceId", serviceId) + .getSingleResult(); + } catch (NoResultException e) { + return null; + } + } + +} http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/c928a415/security-admin/src/main/java/org/apache/ranger/db/XXAccessTypeDefGrantsDao.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/db/XXAccessTypeDefGrantsDao.java b/security-admin/src/main/java/org/apache/ranger/db/XXAccessTypeDefGrantsDao.java new file mode 100644 index 0000000..2ddb845 --- /dev/null +++ b/security-admin/src/main/java/org/apache/ranger/db/XXAccessTypeDefGrantsDao.java @@ -0,0 +1,33 @@ +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.XXAccessTypeDefGrants; + +public class XXAccessTypeDefGrantsDao extends BaseDao<XXAccessTypeDefGrants> { + + public XXAccessTypeDefGrantsDao(RangerDaoManagerBase daoManager) { + super(daoManager); + } + + @SuppressWarnings("unchecked") + public List<String> findImpliedGrantsByATDId(Long atdId) { + if(atdId == null) { + return new ArrayList<String>(); + } + try { + List<String> returnList = getEntityManager() + .createNamedQuery("XXAccessTypeDefGrants.findImpliedGrantsByATDId") + .setParameter("atdId", atdId).getResultList(); + + return returnList; + } catch (NoResultException e) { + return new ArrayList<String>(); + } + } + +} http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/c928a415/security-admin/src/main/java/org/apache/ranger/db/XXDataHistDao.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/db/XXDataHistDao.java b/security-admin/src/main/java/org/apache/ranger/db/XXDataHistDao.java new file mode 100644 index 0000000..29c4246 --- /dev/null +++ b/security-admin/src/main/java/org/apache/ranger/db/XXDataHistDao.java @@ -0,0 +1,29 @@ +package org.apache.ranger.db; + +import javax.persistence.NoResultException; + +import org.apache.ranger.common.db.BaseDao; +import org.apache.ranger.entity.XXDataHist; + +public class XXDataHistDao extends BaseDao<XXDataHist> { + + public XXDataHistDao(RangerDaoManagerBase daoManager) { + super(daoManager); + } + + public XXDataHist findLatestByObjectClassTypeAndObjectId(Integer classType, Long objectId) { + if(classType == null || objectId == null) { + return null; + } + try { + return getEntityManager() + .createNamedQuery("XXDataHist.findLatestByObjectClassTypeAndObjectId", tClass) + .setParameter("classType", classType) + .setParameter("objectId", objectId) + .setMaxResults(1).getSingleResult(); + } catch (NoResultException e) { + return null; + } + } + +} http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/c928a415/security-admin/src/main/java/org/apache/ranger/db/XXEnumDefDao.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/db/XXEnumDefDao.java b/security-admin/src/main/java/org/apache/ranger/db/XXEnumDefDao.java new file mode 100644 index 0000000..0fbeb7f --- /dev/null +++ b/security-admin/src/main/java/org/apache/ranger/db/XXEnumDefDao.java @@ -0,0 +1,32 @@ +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.XXEnumDef; +import org.apache.ranger.entity.XXPolicyConditionDef; + +public class XXEnumDefDao extends BaseDao<XXEnumDef> { + + public XXEnumDefDao(RangerDaoManagerBase daoManager) { + super(daoManager); + } + + public List<XXEnumDef> findByServiceDefId(Long serviceDefId) { + if (serviceDefId == null) { + return new ArrayList<XXEnumDef>(); + } + try { + List<XXEnumDef> retList = getEntityManager() + .createNamedQuery("XXEnumDef.findByServiceDefId", tClass) + .setParameter("serviceDefId", serviceDefId).getResultList(); + return retList; + } catch (NoResultException e) { + return new ArrayList<XXEnumDef>(); + } + } + +} http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/c928a415/security-admin/src/main/java/org/apache/ranger/db/XXEnumElementDefDao.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/db/XXEnumElementDefDao.java b/security-admin/src/main/java/org/apache/ranger/db/XXEnumElementDefDao.java new file mode 100644 index 0000000..f17d478 --- /dev/null +++ b/security-admin/src/main/java/org/apache/ranger/db/XXEnumElementDefDao.java @@ -0,0 +1,32 @@ +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.XXEnumElementDef; +import org.apache.ranger.plugin.model.RangerServiceDef.RangerEnumElementDef; + +public class XXEnumElementDefDao extends BaseDao<XXEnumElementDef> { + + public XXEnumElementDefDao(RangerDaoManagerBase daoManager) { + super(daoManager); + } + + public List<XXEnumElementDef> findByEnumDefId(Long enumDefId) { + if(enumDefId == null) { + return new ArrayList<XXEnumElementDef>(); + } + try { + List<XXEnumElementDef> returnList = getEntityManager() + .createNamedQuery("XXEnumElementDef.findByEnumDefId", tClass) + .setParameter("enumDefId", enumDefId).getResultList(); + return returnList; + } catch (NoResultException e) { + return new ArrayList<XXEnumElementDef>(); + } + } + +} http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/c928a415/security-admin/src/main/java/org/apache/ranger/db/XXPolicyConditionDefDao.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/db/XXPolicyConditionDefDao.java b/security-admin/src/main/java/org/apache/ranger/db/XXPolicyConditionDefDao.java new file mode 100644 index 0000000..ac69697 --- /dev/null +++ b/security-admin/src/main/java/org/apache/ranger/db/XXPolicyConditionDefDao.java @@ -0,0 +1,59 @@ +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.XXPolicyConditionDef; + +public class XXPolicyConditionDefDao extends BaseDao<XXPolicyConditionDef> { + + public XXPolicyConditionDefDao(RangerDaoManagerBase daoManager) { + super(daoManager); + } + + public List<XXPolicyConditionDef> findByServiceDefId(Long serviceDefId) { + if (serviceDefId == null) { + return new ArrayList<XXPolicyConditionDef>(); + } + try { + List<XXPolicyConditionDef> retList = getEntityManager() + .createNamedQuery("XXPolicyConditionDef.findByServiceDefId", tClass) + .setParameter("serviceDefId", serviceDefId).getResultList(); + return retList; + } catch (NoResultException e) { + return new ArrayList<XXPolicyConditionDef>(); + } + } + + public List<XXPolicyConditionDef> findByPolicyItemId(Long polItemId) { + if(polItemId == null) { + return new ArrayList<XXPolicyConditionDef>(); + } + try { + return getEntityManager() + .createNamedQuery("XXPolicyConditionDef.findByPolicyItemId", tClass) + .setParameter("polItemId", polItemId).getResultList(); + } catch (NoResultException e) { + return new ArrayList<XXPolicyConditionDef>(); + } + } + + public XXPolicyConditionDef findByPolicyItemIdAndName(Long polItemId, String name) { + if(polItemId == null || name == null) { + return null; + } + try { + return getEntityManager() + .createNamedQuery("XXPolicyConditionDef.findByPolicyItemIdAndName", tClass) + .setParameter("polItemId", polItemId) + .setParameter("name", name).getSingleResult(); + } catch (NoResultException e) { + return null; + } + } + + +} http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/c928a415/security-admin/src/main/java/org/apache/ranger/db/XXPolicyDao.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/db/XXPolicyDao.java b/security-admin/src/main/java/org/apache/ranger/db/XXPolicyDao.java new file mode 100644 index 0000000..e2b4fcf --- /dev/null +++ b/security-admin/src/main/java/org/apache/ranger/db/XXPolicyDao.java @@ -0,0 +1,49 @@ +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.XXPolicy; + +/** + */ + +public class XXPolicyDao extends BaseDao<XXPolicy> { + /** + * Default Constructor + */ + public XXPolicyDao(RangerDaoManagerBase daoManager) { + super(daoManager); + } + + public XXPolicy findByName(String polName) { + if (polName == null) { + return null; + } + try { + XXPolicy xPol = getEntityManager() + .createNamedQuery("XXPolicy.findByName", tClass) + .setParameter("polName", polName).getSingleResult(); + return xPol; + } catch (NoResultException e) { + return null; + } + } + + public List<XXPolicy> findByServiceId(Long serviceId) { + if (serviceId == null) { + return new ArrayList<XXPolicy>(); + } + try { + return getEntityManager() + .createNamedQuery("XXPolicy.findByServiceId", tClass) + .setParameter("serviceId", serviceId).getResultList(); + } catch (NoResultException e) { + return new ArrayList<XXPolicy>(); + } + } + +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/c928a415/security-admin/src/main/java/org/apache/ranger/db/XXPolicyItemAccessDao.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/db/XXPolicyItemAccessDao.java b/security-admin/src/main/java/org/apache/ranger/db/XXPolicyItemAccessDao.java new file mode 100644 index 0000000..31385ee --- /dev/null +++ b/security-admin/src/main/java/org/apache/ranger/db/XXPolicyItemAccessDao.java @@ -0,0 +1,30 @@ +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.XXPolicyItemAccess; + +public class XXPolicyItemAccessDao extends BaseDao<XXPolicyItemAccess> { + + public XXPolicyItemAccessDao(RangerDaoManagerBase daoManager) { + super(daoManager); + } + + public List<XXPolicyItemAccess> findByPolicyItemId(Long polItemId) { + if(polItemId == null) { + return new ArrayList<XXPolicyItemAccess>(); + } + try { + return getEntityManager() + .createNamedQuery("XXPolicyItemAccess.findByPolicyItemId", tClass) + .setParameter("polItemId", polItemId).getResultList(); + } catch (NoResultException e) { + return new ArrayList<XXPolicyItemAccess>(); + } + } + +} http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/c928a415/security-admin/src/main/java/org/apache/ranger/db/XXPolicyItemConditionDao.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/db/XXPolicyItemConditionDao.java b/security-admin/src/main/java/org/apache/ranger/db/XXPolicyItemConditionDao.java new file mode 100644 index 0000000..6a3a355 --- /dev/null +++ b/security-admin/src/main/java/org/apache/ranger/db/XXPolicyItemConditionDao.java @@ -0,0 +1,45 @@ +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.XXPolicyItemCondition; + +public class XXPolicyItemConditionDao extends BaseDao<XXPolicyItemCondition> { + + public XXPolicyItemConditionDao(RangerDaoManagerBase daoManager) { + super(daoManager); + } + + public List<XXPolicyItemCondition> findByPolicyItemId(Long polItemId) { + if(polItemId == null) { + return new ArrayList<XXPolicyItemCondition>(); + } + try { + return getEntityManager() + .createNamedQuery("XXPolicyItemCondition.findByPolicyItemId", tClass) + .setParameter("polItemId", polItemId).getResultList(); + } catch (NoResultException e) { + return new ArrayList<XXPolicyItemCondition>(); + } + } + + public List<XXPolicyItemCondition> findByPolicyItemAndDefId(Long polItemId, + Long polCondDefId) { + if(polItemId == null || polCondDefId == null) { + return new ArrayList<XXPolicyItemCondition>(); + } + try { + return getEntityManager() + .createNamedQuery("XXPolicyItemCondition.findByPolicyItemAndDefId", tClass) + .setParameter("polItemId", polItemId) + .setParameter("polCondDefId", polCondDefId).getResultList(); + } catch (NoResultException e) { + return new ArrayList<XXPolicyItemCondition>(); + } + } + +} http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/c928a415/security-admin/src/main/java/org/apache/ranger/db/XXPolicyItemDao.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/db/XXPolicyItemDao.java b/security-admin/src/main/java/org/apache/ranger/db/XXPolicyItemDao.java new file mode 100644 index 0000000..8853ece --- /dev/null +++ b/security-admin/src/main/java/org/apache/ranger/db/XXPolicyItemDao.java @@ -0,0 +1,39 @@ +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.XXPolicyItem; + +/** + */ + +public class XXPolicyItemDao extends BaseDao<XXPolicyItem> { + /** + * Default Constructor + */ + public XXPolicyItemDao(RangerDaoManagerBase daoManager) { + super(daoManager); + } + + public List<XXPolicyItem> findByPolicyId(Long policyId) { + if (policyId == null) { + return new ArrayList<XXPolicyItem>(); + } + try { + List<XXPolicyItem> returnList = getEntityManager() + .createNamedQuery("XXPolicyItem.findByPolicyId", tClass) + .setParameter("policyId", policyId).getResultList(); + if (returnList == null) { + return new ArrayList<XXPolicyItem>(); + } + return returnList; + } catch (NoResultException e) { + return new ArrayList<XXPolicyItem>(); + } + } + +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/c928a415/security-admin/src/main/java/org/apache/ranger/db/XXPolicyItemGroupPermDao.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/db/XXPolicyItemGroupPermDao.java b/security-admin/src/main/java/org/apache/ranger/db/XXPolicyItemGroupPermDao.java new file mode 100644 index 0000000..fd21d65 --- /dev/null +++ b/security-admin/src/main/java/org/apache/ranger/db/XXPolicyItemGroupPermDao.java @@ -0,0 +1,30 @@ +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.XXPolicyItemGroupPerm; + +public class XXPolicyItemGroupPermDao extends BaseDao<XXPolicyItemGroupPerm> { + + public XXPolicyItemGroupPermDao(RangerDaoManagerBase daoManager) { + super(daoManager); + } + + public List<XXPolicyItemGroupPerm> findByPolicyItemId(Long polItemId) { + if(polItemId == null) { + return new ArrayList<XXPolicyItemGroupPerm>(); + } + try { + return getEntityManager() + .createNamedQuery("XXPolicyItemGroupPerm.findByPolicyItemId", tClass) + .setParameter("polItemId", polItemId).getResultList(); + } catch (NoResultException e) { + return new ArrayList<XXPolicyItemGroupPerm>(); + } + } + +} http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/c928a415/security-admin/src/main/java/org/apache/ranger/db/XXPolicyItemUserPermDao.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/db/XXPolicyItemUserPermDao.java b/security-admin/src/main/java/org/apache/ranger/db/XXPolicyItemUserPermDao.java new file mode 100644 index 0000000..8de8e91 --- /dev/null +++ b/security-admin/src/main/java/org/apache/ranger/db/XXPolicyItemUserPermDao.java @@ -0,0 +1,30 @@ +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.XXPolicyItemUserPerm; + +public class XXPolicyItemUserPermDao extends BaseDao<XXPolicyItemUserPerm> { + + public XXPolicyItemUserPermDao(RangerDaoManagerBase daoManager) { + super(daoManager); + } + + public List<XXPolicyItemUserPerm> findByPolicyItemId(Long polItemId) { + if(polItemId == null) { + return new ArrayList<XXPolicyItemUserPerm>(); + } + try { + return getEntityManager() + .createNamedQuery("XXPolicyItemUserPerm.findByPolicyItemId", tClass) + .setParameter("polItemId", polItemId).getResultList(); + } catch (NoResultException e) { + return new ArrayList<XXPolicyItemUserPerm>(); + } + } + +} http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/c928a415/security-admin/src/main/java/org/apache/ranger/db/XXPolicyResourceDao.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/db/XXPolicyResourceDao.java b/security-admin/src/main/java/org/apache/ranger/db/XXPolicyResourceDao.java new file mode 100644 index 0000000..6474467 --- /dev/null +++ b/security-admin/src/main/java/org/apache/ranger/db/XXPolicyResourceDao.java @@ -0,0 +1,44 @@ +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.XXPolicyResource; + +public class XXPolicyResourceDao extends BaseDao<XXPolicyResource> { + + public XXPolicyResourceDao(RangerDaoManagerBase daoManager) { + super(daoManager); + } + + public XXPolicyResource findByResDefIdAndPolicyId(Long resDefId, Long polId) { + if(resDefId == null || polId == null) { + return null; + } + try { + return getEntityManager() + .createNamedQuery("XXPolicyResource.findByResDefIdAndPolicyId", tClass) + .setParameter("resDefId", resDefId).setParameter("polId", polId) + .getSingleResult(); + } catch (NoResultException e) { + return null; + } + } + + public List<XXPolicyResource> findByPolicyId(Long policyId) { + if(policyId == null) { + return new ArrayList<XXPolicyResource>(); + } + try { + return getEntityManager() + .createNamedQuery("XXPolicyResource.findByPolicyId", tClass) + .setParameter("policyId", policyId).getResultList(); + } catch (NoResultException e) { + return new ArrayList<XXPolicyResource>(); + } + } + +} http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/c928a415/security-admin/src/main/java/org/apache/ranger/db/XXPolicyResourceMapDao.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/db/XXPolicyResourceMapDao.java b/security-admin/src/main/java/org/apache/ranger/db/XXPolicyResourceMapDao.java new file mode 100644 index 0000000..06dd87e --- /dev/null +++ b/security-admin/src/main/java/org/apache/ranger/db/XXPolicyResourceMapDao.java @@ -0,0 +1,30 @@ +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.XXPolicyResourceMap; + +public class XXPolicyResourceMapDao extends BaseDao<XXPolicyResourceMap> { + + public XXPolicyResourceMapDao(RangerDaoManagerBase daoManager) { + super(daoManager); + } + + public List<XXPolicyResourceMap> findByPolicyResId(Long polResId) { + if(polResId == null) { + return new ArrayList<XXPolicyResourceMap>(); + } + try { + return getEntityManager() + .createNamedQuery("XXPolicyResourceMap.findByPolicyResId", tClass) + .setParameter("polResId", polResId).getResultList(); + } catch (NoResultException e) { + return new ArrayList<XXPolicyResourceMap>(); + } + } + +} http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/c928a415/security-admin/src/main/java/org/apache/ranger/db/XXResourceDefDao.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/db/XXResourceDefDao.java b/security-admin/src/main/java/org/apache/ranger/db/XXResourceDefDao.java new file mode 100644 index 0000000..c815f49 --- /dev/null +++ b/security-admin/src/main/java/org/apache/ranger/db/XXResourceDefDao.java @@ -0,0 +1,72 @@ +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.XXResourceDef; + +public class XXResourceDefDao extends BaseDao<XXResourceDef> { + + public XXResourceDefDao(RangerDaoManagerBase daoMgr) { + super(daoMgr); + } + + public XXResourceDef findByNameAndServiceDefId(String name, Long defId) { + if(name == null || defId == null) { + return null; + } + try { + return getEntityManager().createNamedQuery( + "XXResourceDef.findByNameAndDefId", tClass) + .setParameter("name", name).setParameter("defId", defId) + .getSingleResult(); + } catch (NoResultException e) { + return null; + } + } + + public List<XXResourceDef> findByServiceDefId(Long serviceDefId) { + if (serviceDefId == null) { + return new ArrayList<XXResourceDef>(); + } + try { + List<XXResourceDef> retList = getEntityManager() + .createNamedQuery("XXResourceDef.findByServiceDefId", tClass) + .setParameter("serviceDefId", serviceDefId).getResultList(); + return retList; + } catch (NoResultException e) { + return new ArrayList<XXResourceDef>(); + } + } + + public List<XXResourceDef> findByPolicyId(Long policyId) { + if(policyId == null) { + return new ArrayList<XXResourceDef>(); + } + try { + return getEntityManager() + .createNamedQuery("XXResourceDef.findByPolicyId", tClass) + .setParameter("policyId", policyId).getResultList(); + } catch (NoResultException e) { + return new ArrayList<XXResourceDef>(); + } + } + + public XXResourceDef findByNameAndPolicyId(String name, Long policyId) { + if(policyId == null || name == null) { + return null; + } + try { + return getEntityManager() + .createNamedQuery("XXResourceDef.findByNameAndPolicyId", tClass) + .setParameter("policyId", policyId) + .setParameter("name", name).getSingleResult(); + } catch (NoResultException e) { + return null; + } + } + +} http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/c928a415/security-admin/src/main/java/org/apache/ranger/db/XXServiceConfigDefDao.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/db/XXServiceConfigDefDao.java b/security-admin/src/main/java/org/apache/ranger/db/XXServiceConfigDefDao.java new file mode 100644 index 0000000..f8bf8d2 --- /dev/null +++ b/security-admin/src/main/java/org/apache/ranger/db/XXServiceConfigDefDao.java @@ -0,0 +1,45 @@ +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.XXServiceConfigDef; + +public class XXServiceConfigDefDao extends BaseDao<XXServiceConfigDef> { + + public XXServiceConfigDefDao(RangerDaoManagerBase daoMgr) { + super(daoMgr); + } + + public List<XXServiceConfigDef> findByServiceDefId(Long serviceDefId) { + if (serviceDefId == null) { + return new ArrayList<XXServiceConfigDef>(); + } + try { + List<XXServiceConfigDef> retList = getEntityManager() + .createNamedQuery("XXServiceConfigDef.findByServiceDefId", tClass) + .setParameter("serviceDefId", serviceDefId).getResultList(); + return retList; + } catch (NoResultException e) { + return new ArrayList<XXServiceConfigDef>(); + } + } + + public List<XXServiceConfigDef> findByServiceDefName(String serviceDef) { + if (serviceDef == null) { + return new ArrayList<XXServiceConfigDef>(); + } + try { + List<XXServiceConfigDef> retList = getEntityManager() + .createNamedQuery("XXServiceConfigDef.findByServiceDefName", tClass) + .setParameter("serviceDef", serviceDef).getResultList(); + return retList; + } catch (NoResultException e) { + return new ArrayList<XXServiceConfigDef>(); + } + } + +} http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/c928a415/security-admin/src/main/java/org/apache/ranger/db/XXServiceConfigMapDao.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/db/XXServiceConfigMapDao.java b/security-admin/src/main/java/org/apache/ranger/db/XXServiceConfigMapDao.java new file mode 100644 index 0000000..9c14732 --- /dev/null +++ b/security-admin/src/main/java/org/apache/ranger/db/XXServiceConfigMapDao.java @@ -0,0 +1,46 @@ +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.XXServiceConfigMap; + +public class XXServiceConfigMapDao extends BaseDao<XXServiceConfigMap> { + + public XXServiceConfigMapDao(RangerDaoManagerBase daoManager) { + super(daoManager); + } + + public List<XXServiceConfigMap> findByServiceId(Long serviceId) { + if (serviceId == null) { + return new ArrayList<XXServiceConfigMap>(); + } + try { + return getEntityManager() + .createNamedQuery("XXServiceConfigMap.findByServiceId", tClass) + .setParameter("serviceId", serviceId) + .getResultList(); + } catch (NoResultException e) { + return new ArrayList<XXServiceConfigMap>(); + } + } + + public XXServiceConfigMap findByServiceAndConfigKey(Long serviceId, + String configKey) { + if(serviceId == null || configKey == null) { + return null; + } + try { + return getEntityManager() + .createNamedQuery("XXServiceConfigMap.findByServiceAndConfigKey", tClass) + .setParameter("serviceId", serviceId) + .setParameter("configKey", configKey).getSingleResult(); + } catch (NoResultException e) { + return null; + } + } + +}
