project BLF > class BSODViolationRule1 > method DeleteByRoleResource
Description
delete violations
Parameters
| iiRoleID | input | integer | |
| iiResourceID | input | integer | |
| oiReturnStatus | output | integer | Return status of the method. |
Internal usage
BLF
program code (program1/bsodviolationrule1.p)
if iiResourceID = 0
or iiResourceID = ?
then do:
vcFreeform = "for each SODViolation1"
+ " where SODViolation1.Role_ID = " + string(iiRoleID).
<M-1 run DataLoad
(input '' (icRowids),
input '' (icPkeys),
input '' (icObjectIds),
input vcFreeform (icFreeform),
input yes (ilKeepPrevious),
output viFcReturnSuper (oiReturnStatus)) in BSODViolationRule1>
if viFcReturnSuper <> 0
then oiReturnStatus = viFcReturnSuper.
if viFcReturnSuper < 0
then return.
end.
else do:
/* Needs a query as load criteria are not on the class main table */
<Q-3 run Violations1ByRoleResource (all) (Read) (NoCache)
(input iiRoleID, (RoleID)
input iiResourceID, (ResourceID)
output dataset tqViolations1ByRoleResource) in BSODViolationRule1 >
if not can-find (first tqViolations1ByRoleResource)
then do:
oiReturnStatus = -4.
return.
end.
for each tqViolations1ByRoleResource break by tqViolations1ByRoleResource.tiSODViolation1_ID on error undo, throw:
if first-of(tqViolations1ByRoleResource.tiSODViolation1_ID)
then
if not can-find (first tSODViolation1 where tSODViolation1.SODViolation1_ID = tqViolations1ByRoleResource.tiSODViolation1_ID)
then do:
if viPrimCount = 0
then vcPrimKey = string(tqViolations1ByRoleResource.tiSODViolation1_ID).
else vcPrimKey = vcPrimKey + chr(4)
+ string(tqViolations1ByRoleResource.tiSODViolation1_ID).
viPrimCount = viPrimCount + 1.
if viPrimCount = 100
then do:
<M-5 run DataLoad
(input '' (icRowids),
input vcPrimKey (icPkeys),
input '' (icObjectIds),
input '' (icFreeform),
input yes (ilKeepPrevious),
output viFcReturnSuper (oiReturnStatus)) in BSODViolationRule1>
if viFcReturnSuper <> 0
then oiReturnStatus = viFcReturnSuper.
if viFcReturnSuper < 0
then return.
assign viPrimCount = 0
vcPrimKey = "".
end.
end.
end.
if viPrimCount > 0
then do:
<M-4 run DataLoad
(input '' (icRowids),
input vcPrimKey (icPkeys),
input '' (icObjectIds),
input '' (icFreeform),
input yes (ilKeepPrevious),
output viFcReturnSuper (oiReturnStatus)) in BSODViolationRule1>
if viFcReturnSuper <> 0
then oiReturnStatus = viFcReturnSuper.
if viFcReturnSuper < 0
then return.
end.
end.
<M-2 run DeleteAndLog
(input iiRoleID (iiRoleID),
input iiResourceID (iiResourceID),
input 0 (iiSODCategory1ID),
input 0 (iiSODCategory2ID),
output viFcReturnSuper (oiReturnStatus)) in BSODViolationRule1>
if viFcReturnSuper <> 0
then oiReturnStatus = viFcReturnSuper.
if viFcReturnSuper < 0
then return.