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;
+               }
+       }
+
+}

Reply via email to