Name

sn_grc.GRCAbstractGeneratorStrategyBase

Description

NOTE This script include is deprecated, please use GRCAbstractGeneratorV2StrategyBase instead. Shared item generator strategy utilities

Script

var GRCAbstractGeneratorStrategyBase = Class.create();
GRCAbstractGeneratorStrategyBase.prototype = {
  itemTable: null,

  initialize: function() {

  },

  generate: function() {

  },

  canCreateItems: function(contentId) {
      return this._canCreateItems(contentId);
  },

  recordCanCreateItems: function(record) {
      return this._recordCanCreateItems(record);
  },

  generateItem: function(profile, content, source) {
      if (this.itemTable == null)
          return "";

      var item = new GlideRecord(this.itemTable);
      item.addQuery("content", content.sys_id);
      item.addQuery("profile", profile.sys_id);
      item.addQuery('instance', true);
      item.query();

      if (item.next()) {
          item.active = true;
          this._updateSource(item, source);
          item.update();

          var status = new GlideRecord('sn_grc_item_generation');
          status.addQuery('content', content.sys_id);
          status.addQuery('profile', profile.sys_id);
          status.query();

          if (status.next()) {
              status.setValue('running', 'complete');
              status.update();
          }

          new GRCUtils().checkItemGenerationStatus(content.sys_id, profile.sys_id);

          return "";
      } else {
          item.initialize();
          item.profile = profile.sys_id;
          item.content = content.sys_id;
          this._updateSource(item, source);
          item.insert();

          return item.getUniqueValue();
      }
  },

  setContentFields: function(content, item) {
      if (!content.nil()) {
          this._setGeneralContentFields(content, item);
          this._setSpecificContentFields(content, item);
      }
  },

  setDocumentFields: function(document, item) {
      if (!document.nil()) {
          this._setGeneralDocumentFields(document, item);
          this._setSpecificDocumentFields(document, item);
      }
  },

  _updateSource: function(item, source) {
      item.created_one_off = false;
      if ((item.source + '').indexOf(source) == -1)
          item.source += source + ",";
  },

  _setGeneralContentFields: function(content, item) {
      item.active = content.active;
      if (item.category == '')
          item.category = content.category;
      item.classification = content.classification;
      if (item.name == '')
          item.name = content.name;
      item.type = content.type;

      if (item.attestation.nil())
          item.attestation = content.attestation;
  },

  _setSpecificContentFields: function(content, item) {

  },

  _setGeneralDocumentFields: function(document, item) {
      item.state = document.state;
  },

  _setSpecificDocumentFields: function(document, item) {

  },

  _canCreateItems: function(contentId) {
      return false;
  },

  _recordCanCreateItems: function(record) {
      return false;
  },

  type: 'GRCAbstractGeneratorStrategyBase'
};

Sys ID

553d83622f3202007eaf77cfb18c9591

Offical Documentation

Official Docs: