Name
sn_diagram_builder.DiagramBuilderBaseCRUD
Description
No description available
Script
var DiagramBuilderBaseCRUD = Class.create();
DiagramBuilderBaseCRUD.prototype = {
initialize: function() {},
table: null,
/*
* createWithTemplate:
* - creates a record with given attributes in payload and a given template record
* @param {Object} payload - payload with attributes for new record
* @param {GlideTemplate} template - template to apply on new record
* @returns {GlideRecord} new glide record.
*/
createWithTemplate: function(payload, template) {
var newRecordId;
var gr = new GlideRecord(this.table);
gr.initialize();
if (gs.nil(template))
gr.initialize();
else
template.apply(gr);
//iterate and assign payload attribute to GlideRecord
var elementType;
for (var key in payload) {
elementType = gr.getElement(key).getED().getInternalType();
if (elementType == 'currency2')
gr.getElement(key).setDisplayValue(payload[key]);
else if (elementType === 'journal_input')
gr[key] = payload[key];
else
gr.setValue(key, payload[key]);
}
newRecordId = gr.insert();
//if create fails return null
if (gs.nil(newRecordId)) {
var payloadStr = JSON.stringify(payload);
gs.error('Failed to create data from payload: ' + payloadStr);
return null;
}
return gr;
},
/*
* create:
* - creates a record with given attributes in payload
* @param {Object} payload - payload with attributes for new record
* @returns {GlideRecord} new glide record.
*/
create: function(payload) {
return this.createWithTemplate(payload, null);
},
/**
* getById:
* - Fetch record using sys_id
* @param {Sys ID} sysId - sys id of the record
* @returns {GlideRecord}
*/
getById: function(sysId) {
var gr = new GlideRecord(this.table);
gr.get(sysId);
return gr;
},
/**
* getByQuery:
* - Fetch record(s) for the given encoded
* query string or sys_id.
* @param {string} encodedQuery - encoded query string
* @returns {GlideRecord}
*/
getByQuery: function(encodedQuery, chooseWindowObj, setLimitRange) {
var gr = new GlideRecord(this.table);
if (!gs.nil(encodedQuery)) { // if query passed
gr.addEncodedQuery(encodedQuery);
if (!gs.nil(setLimitRange) && (!isNaN(setLimitRange)))
gr.setLimit(setLimitRange + '');
if (!gs.nil(chooseWindowObj) && !gs.nil(chooseWindowObj.start) && !gs.nil(chooseWindowObj.end))
gr.chooseWindow(chooseWindowObj.start, chooseWindowObj.end);
gr.query();
} else { //otherwise fail
gs.error('Failed to get data from table.' + this.table);
return null;
}
return gr;
},
/**
* deleteRecord:
* - delete record identified by sys id or object.
* @param {GlideRecord| Sys ID} record - glide record or sys id of the record
* @param {GlideRecord} record - glide record which will be deleted
* @returns {boolean} true if delete is successful or false when delete operation fails.
*/
deleteRecord: function(record) {
var status,
gr;
//get record
if (record instanceof GlideRecord) { // if record passed
gr = record;
} else if (!gs.nil(record)) { //if sys id of the record passed
gr = this.get(null, record);
} else { //otherwise fail
gs.error('Failed to delete record from table.' + this.table);
return null;
}
//record found
if (gr.isValidRecord()) {
status = gr.deleteRecord();
} else { //Invalid record
gs.error('Failed to delete record from table.' + this.table);
return null;
}
//if delete fails log
if (!status) {
gs.error('Failed to delete record from table.' + this.table);
}
return status;
},
type: 'DiagramBuilderBaseCRUD'
};
Sys ID
e9d5f4870f721010e035549796767efa