Name

sn_mab_api.ConfigKeyDAO

Description

No description available

Script

var ConfigKeyDAO = Class.create();

ConfigKeyDAO.prototype = {
  initialize: function() {
      this.glideRecord = new GlideRecord('sys_sg_mobile_builder_config');
      this.familyVersionMap = {
          'utah': 23,
          'tokyo': 22,
          'sandiego': 21
      };
  },

  getFamilyVersionNumber: function() {
      var sessionService = new sn_mab_api.SessionService();
      var familyVersion = sessionService
          .getFamilyVersion();

      return this.familyVersionMap[familyVersion];
  },

  evaluateCompatibility: function(familyVersion, gr) {
      var evaluator = new GlideScopedEvaluator();
      evaluator.putVariable('FAMILY_VERSION', familyVersion);

      return evaluator.evaluateScript(gr, 'compatible', null);
  },
  /**
   *
   * @param configKeys {[]}
   * @return {null|*|{TreeConfigurationNode}}
   */
  getTreeConfigByConfigKeys: function(configKeys) {
      var gr = this.glideRecord;
      gr.addQuery('config_key', 'IN', configKeys.join(','));
      gr.orderByDesc('config_key');

      gr.query();

      if (gr.getRowCount() > 1) {
          var familyVersionNumber = this.getFamilyVersionNumber();
          var compatibleRecords = [];
          var emptyCompatibleRecords = [];
          while (gr.next()) {
              var tn = new sn_mab_api.TreeConfigurationNode(gr);
              if (tn.compatible && this.evaluateCompatibility(familyVersionNumber, gr)) {
                  compatibleRecords.push(tn);
              } else if (!tn.compatible) {
                  emptyCompatibleRecords.push(tn);
              }
          }

          if (compatibleRecords.length > 1) {
              var versionedDuplicateConfigKey = compatibleRecords[0].configKey;
              new sn_mab_api.ErrorHandler().throwBadConfigError(gs.getMessage("{0} contains overlapping versioned mobile builder configs", versionedDuplicateConfigKey));
          }
          if (emptyCompatibleRecords.length > 1) {
              var baseDuplicateConfigKey = emptyCompatibleRecords[0].configKey;
              new sn_mab_api.ErrorHandler().throwBadConfigError(gs.getMessage("{0} contains overlapping base mobile builder configs", baseDuplicateConfigKey));
          }

          if (compatibleRecords.length === 1) {
              return compatibleRecords[0];
          }

          if (emptyCompatibleRecords.length === 1) {
              return emptyCompatibleRecords[0];
          }
      }
      if (gr.next())
          return new sn_mab_api.TreeConfigurationNode(gr);

      return null;
  },

  type: 'ConfigKeyDAO'
};

Sys ID

afd2b689b75620108223e126de11a994

Offical Documentation

Official Docs: