You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ranger.apache.org by ma...@apache.org on 2015/02/17 09:17:24 UTC
[51/55] [abbrv] incubator-ranger git commit: RANGER-203: database
service-store implementation
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/master
Commit: c928a415951ffa46986e26a99ba38e52f285ee0d
Parents: 3072277
Author: Gautam Borad <gb...@gmail.com>
Authored: Fri Feb 13 09:34:13 2015 -0800
Committer: Madhan Neethiraj <ma...@apache.org>
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;
+ }
+ }
+
+}