Name
global.sc_ic_BaseTypeDefnStaging
Description
Base class for all type definition staging classes.
Script
var sc_ic_BaseTypeDefnStaging = Class.create();
sc_ic_BaseTypeDefnStaging.prototype = Object.extendsObject(sc_ic_Base, {
initialize: function(_gr,_gs) {
sc_ic_Base.prototype.initialize.call(this,_gr,_gs);
//This should be overloaded in sub-classes
this._toDraft = {};
},
/**
* Sets aa Type definition to draft and increments version number.
* This will only set the approval definition to draft if one of the trigger fields is changed.
*/
setDraft: function() {
for (var fldName in this._toDraft) {
if ((this._gr[fldName].changes() && this._toDraft[fldName])) {
this._gr.state = sc_ic.DRAFT;
this._gr.version = parseInt(this._gr.version+"") + 1;
this._gr.active = true;
if (this._log.atLevel(GSLog.DEBUG))
this._log.debug("[setDraft] Draft: " + this._gr.name + " <" + this._gr.getUniqueValue() + ">");
return this;
}
}
return this;
},
/**
* Wrapper for setDraft which updates the record
*/
draft: function() {
this.setDraft();
this._gr.update();
},
/**
* Expires the current record
*/
setExpired: function() {
this._gr[sc_ic.STATE] = sc_ic.EXPIRED;
this._gr[sc_.ACTIVE] = false;
return this;
},
/**
* Wrapper for setExpired which updates the record
*/
expire: function() {
this.setExpired();
this._gr.update();
},
/**
* Publishes the glide record to a provided table.
*/
_publishToTable: function(tableName) {
if (this._log.atLevel(GSLog.DEBUG))
this._log.debug("[_publishToTable] Publishing: " + this._gr.name + " <"+this._gr.getUniqueValue()+"> to table " + tableName);
// Expire the currently published definition
if (JSUtil.notNil(this._gr[tableName])) {
var pubDefn = new GlideRecord(tableName);
if (pubDefn.get(this._gr[tableName])) {
if (this._log.atLevel(GSLog.DEBUG))
this._log.debug("[publish] Expiring Published Def: " + pubDefn.name + " <"+pubDefn.getUniqueValue()+">");
sc_ic_Factory.wrap(pubDefn).expire();
}
}
// Create the new definition
var newDefn = sc_ic_Factory.getWrapperClass(tableName).create(this._gr);
// Update the current staged definition with newly published item.
// The field linking to the published item must be named the same as the publish table
this._gr[tableName] = newDefn.getUniqueValue();
this._gr[sc_ic.STATE] = sc_ic.PUBLISHED;
this._enableQuietUpdate();
this._gr.update();
gs.updateSave(this._gr);
this._disableQuietUpdate();
},
type: 'sc_ic_BaseTypeDefnStaging'
});
Sys ID
80195270c33211003d2ae219cdba8f38