Professional Documents
Culture Documents
TransferJasperChanges Before
TransferJasperChanges Before
GO
/****** Object: StoredProcedure [dbo].[TransferJasperChanges_PRUD] Script Date:
6/3/2019 3:04:22 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*
--Drop Temp Tables when Debugging
IF OBJECT_ID('tempdb..#DeletedJIRoles') IS NOT NULL
DROP TABLE #DeletedJIRoles
/* Updating the tenantId value from NULL with the proper tenantId. We added
TenantId column in JIUserRole, hence while updating
the password this value becomes null */
Update JIUR
Set tenantId = @TenantId
From dbo.JIUserRole JIUR
INNER JOIN dbo.JIUser JIU
ON JIUR.userId = JIU.id
AND JIU.tenantId = @TenantId --Required so only current tenants records
are modified
Where JIUR.tenantId IS NULL
/****************************************************************************
***********/
/****************************** Process JIRole Changes
******************************/
/****************************************************************************
***********/
Declare @TenantPath varchar(500) = 'repo:/organizations/'+ @TenantName +'/%'
Create Table #DeletedJIRoles (JIRoleId int)
IF (@IsInitialLoad = 1)
BEGIN
/* Insert all Roles in the JIRole table not in JIRole Stage */
Insert Into #DeletedJIRoles (JIRoleId)
Select JIR.id
From dbo.JIRole JIR
LEFT JOIN dbo.[JIRole_PRUD] JIRS ON JIRS.rolename = JIR.rolename
Where JIR.tenantId = @TenantId
AND JIRS.rolename IS NULL
AND (JIR.rolename Like 'Aud_%'
OR JIR.rolename Like 'Sec_%'
)
END
ELSE
BEGIN
/* Inserts all Roles deleted from JIRole Stage */
Insert Into #DeletedJIRoles (JIRoleId)
Select JIR.id
From dbo.JIRole JIR
INNER JOIN dbo.[JIRole_PRUD] JIRS
ON JIRS.rolename collate database_default= JIR.rolename
AND JIRS.Operation = 1
Where JIR.tenantId = @TenantId
END
/* Delete records in the JIUserRole table for Roles that have been removed,
no tenant required as Ids are tenant specific */
Delete JIUR
From dbo.JIUserRole JIUR
INNER JOIN #DeletedJIRoles DJIR ON DJIR.JIRoleId = JIUR.roleId
/* Delete records in the JIObjectPermission for Roles that have been removed
*/
Delete JIOP
From dbo.JIObjectPermission JIOP
INNER JOIN #DeletedJIRoles DJIR ON DJIR.JIRoleId = JIOP.recipientobjectid
Where recipientobjectclass =
'com.jaspersoft.jasperserver.api.metadata.user.domain.impl.hibernate.RepoRole'
AND uri+'/' like @TenantPath
/* Removes all records from JIRole that no longer exist, no tenant required
as Ids are tenant specific */
Delete JIR
From dbo.JIRole JIR
INNER JOIN #DeletedJIRoles DJIR ON DJIR.JIRoleId = JIR.Id
/* Deletes Records in the JIUser table not in JIUser Stage during initial ETL
runs */
Create Table #DeletedJIUsers (JIUserId int)
Create Table #DeletedJIReportJobs (JIJobId int)
IF (@IsInitialLoad = 1)
BEGIN
/* Insert all Users in the JIUser table not in JIUser Stage */
Insert Into #DeletedJIUsers (JIUserId)
Select JIU.id
From dbo.JIUser JIU
LEFT JOIN dbo.[JIUser_PRUD] JIUS ON JIUS.ReportingUserId collate
database_default= JIU.ReportingUserId
Where JIU.tenantId = @TenantId
AND JIUS.ReportingUserId IS NULL
END
ELSE
BEGIN
/* Inserts all Users deleted from JIUser Stage */
Insert Into #DeletedJIUsers (JIUserId)
Select JIU.id
From dbo.JIUser JIU
INNER JOIN dbo.[JIUser_PRUD] JIUS
ON JIUS.ReportingUserId collate database_default=
JIU.ReportingUserId
AND JIUS.Operation = 1
Where JIU.tenantId = @TenantId
END
Delete RJP
From dbo.JIReportJobParameter RJP
INNER JOIN #DeletedJIReportJobs DJRJ ON DJRJ.JIJobId = RJP.job_id
Delete RJOF
From dbo.JIReportJobOutputFormat RJOF
INNER JOIN #DeletedJIReportJobs DJRJ ON DJRJ.JIJobId = RJOF.report_job_id
Delete RJ
From dbo.JIReportJob RJ
INNER JOIN #DeletedJIReportJobs DJRJ ON DJRJ.JIJobId = RJ.id
/* Delete records in the JIObjectPermission for Users that have been removed
*/
Delete JOP
From dbo.JIObjectPermission JOP
INNER JOIN #DeletedJIUsers DJRJ ON DJRJ.JIUserId = JOP.recipientobjectid
Where recipientobjectclass =
'com.jaspersoft.jasperserver.api.metadata.user.domain.impl.hibernate.RepoUser'
AND uri+'/' LIKE @tenantPath
/* Delete records in the JIUserRole table for Users that have been removed,
no tenant required as Ids are tenant specific */
Delete JIUR
From dbo.JIUserRole JIUR
INNER JOIN #DeletedJIUsers DJIU ON DJIU.JIUserId = JIUR.userId
/* Delete records in the JIProfileAttribute table for Users that have been
removed, no tenant required as Ids are tenant specific */
Delete JIPA
From dbo.JIProfileAttribute JIPA
INNER JOIN #DeletedJIUsers DJIU ON DJIU.JIUserId = JIPA.principalobjectid
/* Removes all records from JIUser that no longer exist, no tenant required
as Ids are tenant specific */
Delete JIU
From dbo.JIUser JIU
INNER JOIN #DeletedJIUsers DJIU ON DJIU.JIUserId = JIU.id
/****************************************************************************
***********/
/************************ Process JIProfileAttribute Changes
************************/
/****************************************************************************
***********/
/****************************************************************************
***********/
/**************************** Process JIUserRole Changes
****************************/
/****************************************************************************
***********/
/* Delete all records from JIUserRole when initial and only deleted records
when incremental */
IF (@IsInitialLoad = 1)
DELETE FROM dbo.JIUserRole WHERE tenantId = @TenantId
ELSE
DELETE FROM JIUR
FROM dbo.JIUserRole JIUR
INNER JOIN dbo.JIUser JIU
ON JIU.id = JIUR.UserId
AND JIU.tenantId = @TenantId
INNER JOIN JIUserRole_PRUD JIURS
ON JIURS.ReportingUserId = JIU.ReportingUserId
AND JIURS.Operation = 1
WHERE JIUR.tenantId = @TenantId