Name
sn_smd.SMUtils
Description
No description available
Script
var SMUtils = Class.create();
/* Create a response object for Ajax and action processor with format:
{
result: {
status: <status parameter - success/failure>,
error: { (see SMError.generateJSON() }
},
data: <data parameter>
}
*/
SMUtils.createResponseObject = function(status, data, error) {
var response = {};
response.result = {};
response.result.status = status;
if (!gs.nil(data))
response.data = data;
if (!gs.nil(error)) {
if (SMErrorHelper.isSMError(error)) {
response.result.error = error.generateJSON();
}
else { // should be string or java.lang.String
// TODO: remove this when the time is up. for backward compatibility.
// If the error is java string object
if (typeof error == 'object')
error += '';
response.result.error_message = error;
var errObj = new SMError(error, 'Unexpected runtime error');
response.result.error = errObj.generateJSON();
}
}
return response;
};
SMUtils.loadLayer = function(layerId) {
try {
if (gs.nil(layerId)) {
throw "Undefined service layer id";
}
/* eslint-disable no-undef */
return sn_svcmod.ServiceContainerFactory.loadLayer(layerId);
/* eslint-enable no-undef */
} catch (error) {
var displayMessage = gs.getMessage('Cannot load service layer');
var internalMessage = 'Cannot load service layer with id '+ layerId;
var errObj = SMErrorHelper.createJavaAPIError(displayMessage, internalMessage, error);
errObj.setErrorLevel(SMErrorLevel.FATAL);
throw errObj;
}
};
SMUtils.loadCheckpoint = function(checkpointId) {
try {
/* eslint-disable no-undef */
return sn_svcmod.ServiceContainerFactory.loadCheckpoint(checkpointId);
/* eslint-enable no-undef */
} catch (error) {
var displayMessage = gs.getMessage('Cannot load model checkpoint');
var internalMessage = 'Cannot load checkpoint with id ' + checkpointId;
var errObj = SMErrorHelper.createJavaAPIError(displayMessage, internalMessage, error);
errObj.setErrorLevel(SMErrorLevel.FATAL);
throw errObj;
}
};
SMUtils.getActiveCheckpoint = function(layerId) {
var tlineObj = SMUtils.getActiveTimeLine(layerId);
return tlineObj.tline.getActiveCheckpoint();
};
SMUtils.getActiveTimeLine = function(layerId) {
var layerInstance = SMUtils.loadLayer(layerId);
var chkouts = SMUtils.getCheckouts(layerInstance);
var returnVal = {};
if (chkouts && chkouts.length == 0) {
returnVal.tline = layerInstance.getCheckedIn();
returnVal.isCheckedOut = false;
} else {
returnVal.tline = chkouts[0].getTimeLine();
returnVal.isCheckedOut = true;
}
return returnVal;
};
SMUtils.getLatestActiveChkPtFromChkouts = function(layerId) {
var chkouts = SMUtils.getCheckoutsByLayerId(layerId);
if (chkouts.length && chkouts.length > 0)
return SMUtils.loadCheckedoutActiveChkPt(chkouts[chkouts.length-1]);
return null;
};
//chkOut -- IServiceLayerCheckout
SMUtils.loadCheckedoutActiveChkPt = function(chkOut) {
try {
return chkOut.getTimeLine().getActiveCheckpoint();
} catch (error) {
var displayMessage = gs.getMessage('Cannot load model checkpoint');
var internalMessage = 'Cannot load checkpoint from the layer checkedout';
var errObj = SMErrorHelper.createJavaAPIError(displayMessage, internalMessage, error);
errObj.setErrorLevel(SMErrorLevel.FATAL);
throw errObj;
}
};
//returns Arrray<IServiceLayerCheckout>
SMUtils.getCheckoutsByLayerId = function(layerId) {
var layerInstance = SMUtils.loadLayer(layerId);
return SMUtils.getCheckouts(layerInstance);
};
//tline - ITimeLine
SMUtils.getCheckedOutOfTimeLine = function(tline) {
if (gs.nil(tline))
return null;
var id = tline.getSysId();
var chkouts = SMUtils.getCheckouts(tline.getLayer());
if(chkouts.length && chkouts.length > 0) {
for(var i = 0; i < chkouts.length; i++) {
var chkTLId = chkouts[i].getTimeLine().getSysId();
if(chkTLId === id)
return chkouts[i];
}
}
return null;
};
/**
*@param layerObj - IServiceLayer
*return Arrray<IServiceLayerCheckout>
*/
SMUtils.getCheckouts = function(layerObj) {
if (gs.nil(layerObj))
return [];
return layerObj.checkedOuts() || [];
};
SMUtils.queryMappingTable = function(tableName, actionName, required) {
var gr = new GlideRecord(tableName);
gr.addActiveQuery();
gr.addQuery('name', actionName);
gr.query();
if(required && !gr.hasNext()) {
throw 'Action mapping record not found';
}
//defensive check... should aleady be prevented by a business rule
if(gr.getRowCount() > 1) {
throw 'An active mapping record name should be unique';
}
return gr;
};
Sys ID
23a529bac3612200e2ddb59af3d3aea9