Name
sn_grc.ItemGenerationV2UtilsBase
Description
No description available
Script
var ItemGenerationV2UtilsBase = Class.create();
ItemGenerationV2UtilsBase.prototype = {
initialize: function() {},
deletePTRelationships: function(profileType, m2mTableName, m2mFieldName, valueFieldName) {
return this._deletePTRelationships(profileType, m2mTableName, m2mFieldName, valueFieldName);
},
deleteSourceInItem: function(itemGr, sourceId) {
this._deleteSourceInItem(itemGr, sourceId);
},
getStrategy: function(tableName) {
var strategy = null;
if (tableName.match('sn_risk'))
try {
strategy = new sn_risk.RiskGeneratorV2Strategy();
}
catch (err) {
gs.addErrorMessage(gs.getMessage('Item Generation requires that at least version GRC: Risk Management (13.x.x) and GRC: Policy and Compliance Management (13.x.x) be activated.'));
return;
} else if (tableName.match('sn_compliance') || tableName.match('sn_privacy'))
try {
strategy = new sn_compliance.ControlGeneratorV2Strategy();
}
catch (err) {
gs.addErrorMessage(gs.getMessage('Item Generation requires that at least version GRC: Risk Management (13.x.x) and GRC: Policy and Compliance Management (13.x.x) be activated.'));
return;
}
return strategy;
},
deleteOrUpdateSourceInItemEntityM2m: function(m2mGr, sourceField, source, skipInsertAction) {
var strategy = this.getStrategy(m2mGr.getTableName());
if(!gs.nil(strategy))
strategy.deleteOrUpdateSourceInItemEntityM2m(m2mGr, sourceField, source, skipInsertAction);
},
_deletePTRelationships: function(profileType, m2mTableName, m2mFieldName, valueFieldName) {
var relatedRecordIds = {};
var relatedRecordTables = new GlideTableHierarchy(m2mTableName).getTableExtensions();
for (var item in relatedRecordTables) {
var relatedRecord = new GlideRecord(relatedRecordTables[item]);
relatedRecord.addQuery('sn_grc_profile_type', profileType.sys_id);
relatedRecord.query();
while (relatedRecord.next()) {
var strategy = this.getStrategy(relatedRecord.getRecordClassName());
strategy.deleteRecords(relatedRecord, false);
if (valueFieldName != null)
relatedRecordIds[relatedRecord[m2mFieldName]] = relatedRecord[m2mFieldName][valueFieldName];
else
relatedRecordIds[relatedRecord[m2mFieldName]] = true;
}
}
return relatedRecordIds;
},
_deleteSourceInItem: function(itemGR, sourceId) {
var isItemDeactivated = false;
var source = '';
if (itemGR && itemGR.isValidRecord()) {
if (!itemGR.source.nil()) {
source = itemGR.getValue('source');
source = source.replace(sourceId + ',', '');
itemGR.setValue('source', source);
if (source == '' && itemGR.getValue('item_function') == '0') {
itemGR.setValue('active', false);
itemGR.skipInsertActionToQueue = true;
isItemDeactivated = true;
}
var itemId = itemGR.update();
if (isItemDeactivated && itemId) {
var actionParms = {
action: 'deactivate_item',
source: itemGR.getUniqueValue(),
table: itemGR.getTableName(),
item_id: itemGR.getUniqueValue()
};
new sn_grc.IGItemActionHandler(actionParms, this.getStrategy(itemGR.getValue('sys_class_name'))).execute();
}
}
}
},
type: 'ItemGenerationV2UtilsBase'
};
Sys ID
ebe380e7536220104f3eddeeff7b12c8