/// <reference path="../../base/BaseClass.ts" />
/// <reference path="../ITouchpoint.ts" />
/// <reference path="./partials/ForOrder.ts" />
/// <reference path="./partials/OnlyCurrentSession.ts" />
/// <reference path="./partials/ProvisionFirst.ts" />
/// <reference path="./partials/ProvisionLast.ts" />
/// <reference path="./partials/ComputeProvisioningRecord.ts" />
/// <reference path="./partials/WithTouchpoints.ts" />
var __extends = (this && this.__extends) || function (d, b) {
for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
var econda;
(function (econda) {
var tpm;
(function (tpm) {
var provisioning;
(function (provisioning) {
var Provisioner = (function (_super) {
__extends(Provisioner, _super);
function Provisioner(cfg) {
if (cfg === void 0) { cfg = null; }
_super.call(this);
this._keyName = 'name';
this._order = { value: 0 };
this.touchpoints = [];
this._provisioners = {};
if (cfg instanceof Provisioner) {
return cfg;
}
else {
this.initConfig(cfg);
}
this._addPartials();
}
Provisioner.prototype.setKeyName = function (name) {
this._keyName = name;
};
Provisioner.prototype.getKeyName = function () {
return this._keyName;
};
Provisioner.prototype.getOrder = function () {
return this._order;
};
Provisioner.prototype.setOrder = function (data) {
this._order = data;
};
Provisioner.prototype.setTouchpoints = function (touchpoints) {
this.touchpoints.splice(0, this.touchpoints.length);
this.touchpoints.push.apply(this.touchpoints, touchpoints);
};
/**
* Create and return new provisioner instance
* @returns {econda.tpm.provisioning.Provisioner}
* @constructor
*/
Provisioner.Create = function () {
return new Provisioner();
};
Provisioner.prototype._addPartials = function () {
var cmp = this;
var data = {
touchpoints: cmp.touchpoints,
order: cmp._order,
keyName: cmp._keyName
};
for (var p in econda.tpm.provisioning.partials) {
if (econda.tpm.provisioning.partials.hasOwnProperty(p)) {
var instance = new econda.tpm.provisioning.partials[p](data);
var dynamicFunction = (function () {
var localInstance = instance;
var applyFunction = instance.apply;
return function () {
var ret = applyFunction.apply(localInstance, arguments);
if (typeof ret === 'undefined' || !ret) {
ret = this;
}
return ret;
};
})();
this._provisioners[p] = instance;
this[econda.tpm.provisioning.partials[p]['FUNCTION_NAME']] = dynamicFunction;
}
}
};
return Provisioner;
}(econda.base.BaseClass));
provisioning.Provisioner = Provisioner;
})(provisioning = tpm.provisioning || (tpm.provisioning = {}));
})(tpm = econda.tpm || (econda.tpm = {}));
})(econda || (econda = {}));
// add shortcut function to create new provisioner
econda['provisioner'] = econda.tpm.provisioning.Provisioner.Create;