Name

sn_entitlement.TableAclClassifier

Description

No description available

Script

var TableAclClassifier = Class.create();
TableAclClassifier.prototype = {
  TABLE_TYPE_TASK: 'te',
  TABLE_TYPE_NON_TASK: 'nt',

  ACL_NOOP: 'n',
  ACL_UNRESTRICTED: 'u',
  ACL_RESTRICTED: 'r',
  ACL_USER_RESTRICTED: 'ur',
  ACL_APPROVER_RESTRICTED: 'a',
  ACL_UNKNOWN: 'ukn',

  initialize: function(aclScopeLevels) {
      // TODO FIX cross referenced constants
      this.ACL_TASK_EXTENTION_NO_CONDITION = this.ACL_UNRESTRICTED + this.TABLE_TYPE_TASK;
      this.ACL_NON_TASK_EXTENTION_NO_CONDITION = this.ACL_UNRESTRICTED + this.TABLE_TYPE_NON_TASK;
      this.ACL_TASK_EXTENTION_WITH_CONDITION = this.ACL_RESTRICTED + this.TABLE_TYPE_TASK;
      this.ACL_NON_TASK_EXTENTION_WITH_CONDITION = this.ACL_RESTRICTED + this.TABLE_TYPE_NON_TASK;
      this.ACL_TASK_EXTENTION_WITH_APPROVER_CONDITION = this.ACL_APPROVER_RESTRICTED + this.TABLE_TYPE_TASK;
      this.ACL_TASK_EXTENTION_WITH_UNKNOWN = this.ACL_UNKNOWN + this.TABLE_TYPE_TASK;
      this.ACL_NON_TASK_EXTENTION_WITH_UNKNOWN = this.ACL_UNKNOWN + this.TABLE_TYPE_NON_TASK;
      this.ACL_TASK_EXTENTION_WITH_NOOP = this.ACL_NOOP + this.TABLE_TYPE_TASK;
      this.ACL_NON_TASK_EXTENTION_WITH_NOOP = this.ACL_NOOP + this.TABLE_TYPE_NON_TASK;
      this.ACL_NON_TASK_EXTENTION_WITH_APPROVER_CONDITION = this.ACL_APPROVER_RESTRICTED + this.TABLE_TYPE_NON_TASK;
      this.ACL_TASK_EXTENTION_WITH_USER_CONDITION = this.ACL_USER_RESTRICTED + this.TABLE_TYPE_TASK;
      this.ACL_NON_TASK_EXTENTION_WITH_USER_CONDITION = this.ACL_USER_RESTRICTED + this.TABLE_TYPE_NON_TASK;

      var tableClasses = [
          this.ACL_TASK_EXTENTION_NO_CONDITION,
          this.ACL_NON_TASK_EXTENTION_NO_CONDITION,
          this.ACL_TASK_EXTENTION_WITH_CONDITION,
          this.ACL_NON_TASK_EXTENTION_WITH_CONDITION,
          this.ACL_TASK_EXTENTION_WITH_APPROVER_CONDITION,
          this.ACL_NON_TASK_EXTENTION_WITH_APPROVER_CONDITION,
          this.ACL_TASK_EXTENTION_WITH_USER_CONDITION,
          this.ACL_NON_TASK_EXTENTION_WITH_USER_CONDITION,
          this.ACL_TASK_EXTENTION_WITH_UNKNOWN,
          this.ACL_NON_TASK_EXTENTION_WITH_UNKNOWN,
          this.ACL_TASK_EXTENTION_WITH_NOOP,
          this.ACL_NON_TASK_EXTENTION_WITH_NOOP
      ];

      this.aclsPerClass = {};
      for (var i = 0; i < aclScopeLevels.length; ++i) {
          this.aclsPerClass[aclScopeLevels[i]] = {};
          for (var j = 0; j < tableClasses.length; ++j) {
              this.aclsPerClass[aclScopeLevels[i]][tableClasses[j]] = this._initACLCounts();
              this.aclsPerClass[aclScopeLevels[i]].total = 0;
          }
      }
  },

  getTableType: function(tableInfo) {
      if (tableInfo.isTaskExt)
          return this.TABLE_TYPE_TASK;

      return this.TABLE_TYPE_NON_TASK;
  },

  add: function(asl, aclType, op, tableType, count) {
      this._addTo(this.aclsPerClass, asl, aclType, op, tableType, count);
  },
  
  addAll: function(aclTypes, importantOps, tableType, aclCounts) {
      this._addAllTo(this.aclsPerClass, aclTypes, importantOps, tableType, aclCounts);
  },

  getAclsPerClass: function() {
      return this.aclsPerClass;
  },

  _addTo: function(aclsPerClass, asl, aclType, op, tableType, count) {
      var tableClass = this._getTableClass(aclType, tableType);
      aclsPerClass[asl][tableClass][op] += count;
      aclsPerClass[asl][tableClass].total += count;
      aclsPerClass[asl].total += count;
  },

  _addAllTo: function(aclsPerClass, aclTypes, importantOps, tableType, aclCounts) {
      for (var a in aclTypes) {
          var aclType = aclTypes[a];
          for (var o in importantOps) {
              for (var asl in aclsPerClass) {
                  this._addTo(aclsPerClass, asl, aclType, importantOps[o], tableType, aclCounts[asl][aclType][importantOps[o]]);
              }
          }
      }
  },

  _getTableClass: function(aclType, tableType) {
      return aclType + tableType;
  },

  _initACLCounts: function () {
      return {
          'total': 0,
          'write': 0,
          'read': 0,
          'commentWrite': 0
      }; // , 'skip': {'write': 0}, 'delete': 0 // removed delete form important ops;
  },


  type: 'TableAclClassifier'
};

Sys ID

1f090e0e430121102aeb1ca57bb8f216

Offical Documentation

Official Docs: