blob: 3e2f557c8815417c50d13a46e0c50322d6ab825b [file] [log] [blame]
-- 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.
-- --------------------------------------------------------------------------------
-- Routine DDL
-- Note: comments before and after the routine body will not be stored by the server
-- --------------------------------------------------------------------------------
DELIMITER $$
DROP PROCEDURE if exists getUpdatedResourceName $$
CREATE PROCEDURE `getUpdatedResourceName`(IN resName varchar(4000), IN resId bigint, IN assetId bigint, IN policyName varchar(1000), OUT updatedResName varchar(4000))
BEGIN
DECLARE noOfCommas int;
DECLARE resource varchar(1000);
DECLARE count int default 0;
DECLARE proceedLoop boolean default true;
-- TrxLog fields
DECLARE createTime datetime;
DECLARE addedById bigint;
DECLARE classType int;
DECLARE objId bigint;
DECLARE parentObjId bigint;
DECLARE parentObjClsType int;
DECLARE parentObjName varchar(1024);
DECLARE objName varchar(1024);
DECLARE attrName varchar(255);
DECLARE prevVal varchar(1024);
DECLARE newVal varchar(1024);
DECLARE trxId varchar(1024);
DECLARE act varchar(255);
DECLARE sessType varchar(30);
DECLARE transId varchar(50);
DECLARE assetTypeInt int;
DECLARE assetType varchar(30);
set updatedResName='';
set noOfCommas = (LENGTH(resName)-LENGTH(REPLACE (resName, ',', '')));
set assetTypeInt = (select asset_type from x_asset where id = assetId);
if (assetTypeInt = 1) then
set assetType = 'HDFS';
elseif (assetTypeInt = 2) then
set assetType = 'HBase';
elseif ((assetTypeInt = 3)) then
set assetType = 'Hive';
elseif (assetTypeInt = 4) then
set assetType = 'XAAGENT';
elseif (assetTypeInt = 5) then
set assetType = 'Knox';
elseif (assetTypeInt = 6) then
set assetType = 'Storm';
end if;
WHILE proceedLoop DO
set count = count +1;
if (count > noOfCommas) then
set resource = SUBSTRING_INDEX(resName, ',', -1);
set proceedLoop = false;
else
set resource = REPLACE(SUBSTRING(SUBSTRING_INDEX(resName, ',', count),
LENGTH(SUBSTRING_INDEX(resName, ',', count -1)) + 1), ',', '');
end if;
if (LENGTH(resource) > 1 && SUBSTRING(resource, -(LENGTH(resource)-(LENGTH(resource)-1))) = '/') then
set resource = SUBSTRING(resource, 1, (LENGTH(resource)-1));
else
set resource = resource;
end if;
if(updatedResName != '') then
set updatedResName = CONCAT(updatedResName, ',', resource);
else
set updatedResName = resource;
end if;
END WHILE;
if (updatedResName != resName) then
-- Generating Trx Log if value has been updated.
set createTime = utc_timestamp();
set addedById = 1;
set classType = 1001;
set objId = resId;
set parentObjId = assetId;
set parentObjClsType = 1000;
set objName = updatedResName;
set attrName = 'Resource Path';
set prevVal = resName;
set newVal = updatedResName;
set act = 'update';
set sessType = 'DB Script';
set parentObjName = (select asset_name from x_asset where id = assetId);
set transId = concat(DATE_FORMAT(utc_timestamp(), '%Y%m%d%H%i%s'), '_', rand());
insert into x_trx_log (create_time, update_time, added_by_id, upd_by_id,
class_type, object_id, parent_object_id, parent_object_class_type,
parent_object_name, object_name, attr_name, prev_val, new_val, `action`,
trx_id, sess_type)
values(createTime, createTime, addedById, addedById, classType, objId,
parentObjId, parentObjClsType, parentObjName, objName, attrName, prevVal,
newVal, act, transId, sessType);
insert into x_trx_log (create_time, update_time, added_by_id, upd_by_id,
class_type, object_id, parent_object_id, parent_object_class_type,
parent_object_name, object_name, attr_name, prev_val, new_val, `action`,
trx_id, sess_type)
values(createTime, createTime, addedById, addedById, classType, objId,
parentObjId, parentObjClsType, parentObjName, objName, 'Policy Name', policyName,
policyName, act, transId, sessType);
insert into x_trx_log (create_time, update_time, added_by_id, upd_by_id,
class_type, object_id, parent_object_id, parent_object_class_type,
parent_object_name, object_name, attr_name, new_val, `action`,
trx_id, sess_type)
values(createTime, createTime, addedById, addedById, classType, objId,
parentObjId, parentObjClsType, parentObjName, objName, 'Repository Type',
assetType, act, transId, sessType);
end if;
END $$
DELIMITER $$
DROP PROCEDURE if exists removeTrailingSlash $$
CREATE PROCEDURE `removeTrailingSlash`()
BEGIN
DECLARE done INT;
DECLARE resId bigint;
DECLARE assetId bigint;
DECLARE policyName varchar(1000);
DECLARE resourceName varchar(4000);
DECLARE trimmedResourceName varchar(4000);
DECLARE resourceNames CURSOR FOR
select res.res_name, res.id, res.asset_id, res.policy_name from x_resource res, x_asset asset
where asset.asset_type = 1 and asset.id = res.asset_id;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
OPEN resourceNames;
SET done = 0;
iLoop : LOOP
FETCH resourceNames into resourceName, resId, assetId, policyName;
if(done = 1) then
LEAVE iLoop;
end if;
call getUpdatedResourceName(resourceName, resId, assetId, policyName, trimmedResourceName);
update x_resource res set res_name = trimmedResourceName where id=resId and res_name=resourceName;
END LOOP;
CLOSE resourceNames;
END $$
DELIMITER ;
call removeTrailingSlash();
DROP PROCEDURE if exists getUpdatedResourceName;
DROP PROCEDURE if exists removeTrailingSlash;