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

Offical Documentation

Official Docs: