Name
sn_itom_pde.PANPopulatePatternToSharedLibMapping
Description
This script populates the mapping between pattern and shared libraries placed inside them
Script
var PANPopulatePatternToSharedLibMapping = Class.create();
PANPopulatePatternToSharedLibMapping.prototype = {
initialize: function() {
this.pattern_table = 'sa_pattern';
this.command_list_table = 'pd_command_list';
this.pattern_to_shared_libraries_table = 'pd_pattern_to_shared_library_mapping';
},
start: function(rec) {
var step = '';
var ndl = '';
var pattern = new GlideRecord(this.pattern_table);
if (global.JSUtil.notNil(rec)) {
pattern.addQuery('sys_id', rec);
}
pattern.addQuery('active', true);
pattern.query();
while (pattern.next()) {
ndl = pattern.ndl;
var lines = ndl.split('\n');
var bracketCounter = 0;
for (var i in lines) {
var line = lines[i];
this.parseSharedLibrariesRef(bracketCounter, line, pattern)
}
}
},
_insertOrUpdate: function(parentId, sysId) {
var pattern2Lib1 = new GlideRecord('pd_pattern_to_shared_library_mapping');
pattern2Lib1.addQuery('parent', parentId);
pattern2Lib1.addQuery('pattern', sysId);
pattern2Lib1.query();
if (pattern2Lib1.next()) {
pattern2Lib1.setValue('is_outdated', false);
pattern2Lib1.update();
} else {
var pattern2Lib = new GlideRecord('pd_pattern_to_shared_library_mapping');
pattern2Lib.setValue('parent', parentId);
pattern2Lib.setValue('pattern', sysId);
pattern2Lib.setValue('is_outdated', false);
pattern2Lib.insert();
}
},
parseSharedLibrariesRef: function(bracketCounter, line, pattern) {
//line = line.trim();
if (bracketCounter < 0)
bracketCounter = 0;
if (line.indexOf('{') > 0) {
bracketCounter++;
}
if (line.indexOf('step') > 0) {
step = 'in';
}
if (line.indexOf('}') >= 0) {
--bracketCounter;
if (bracketCounter == 1)
step = 'out';
}
// Capturing shared libraries
if (line.match(/ref {refid = ".*"/gi) && step == 'in') {
gs.debug('Reference found: ' + line);
var refStep = line.split('ref {refid = ');
gs.debug('Reference Splitted: ' + refStep);
var rightSide = refStep[1].trim();
gs.debug('Reference Right Side: ' + rightSide);
var sysId = rightSide.replace(/["}]/g, '');
gs.debug('Reference sys_id: ' + sysId);
var parentId = pattern.getUniqueValue();
if (sysId)
this._insertOrUpdate(parentId, sysId);
}
},
type: 'PANPopulatePatternToSharedLibMapping'
};
Sys ID
930a026c471a51507cb2e977746d4377