Name
global.MobileUtahUpgradeCommonUtils
Description
This script include contains utility methods for upgrade scripts for upgrading mobile artifacts (cards, form screen) for utah
Script
var MobileUtahUpgradeCommonUtils = Class.create();
MobileUtahUpgradeCommonUtils.prototype = {
TABLE: {
SYS_SG_ITEM_VIEW: "sys_sg_item_view",
SYS_SG_UI_STYLE: "sys_sg_ui_style",
SYS_SG_FORM_SCREEN: "sys_sg_form_screen",
SYS_SG_MASTER_ITEM: "sys_sg_master_item"
},
initialize: function () {
this.GCD = GlideCollisionDetector.get();
},
isRecordCustomized: function (record) {
if (!gs.nil(this.GCD))
return this.GCD.containsKey(record.getValue("sys_update_name"));
else {
var updates = new GlideRecord("sys_update_xml");
return updates.get("name", record.getValue("sys_update_name"));
}
},
getGlideRecord: function (tableName, sysId) {
var record = new GlideRecord(tableName);
record.get(sysId);
return record;
},
getMultipleGlideRecords: function (tableName, sysIds) {
var records = new GlideRecord(tableName);
records.addQuery("sys_id", "IN", sysIds);
records.query();
return records;
},
revertCardtoItemView: function (masterGr, itemViewSysId) {
masterGr.setValue("use_view_config", 0);
masterGr.setValue("item_view", itemViewSysId);
masterGr.setWorkflow(false);
masterGr.update();
gs.info("MobileCardViewMigrationTools: revertUntouchedItems: Reverted {0} Record {1} ", masterGr.getTableName(), masterGr.getUniqueValue());
},
revertButton: function(btnInstanceGr, oldBtnSysId){
btnInstanceGr.setValue("button",oldBtnSysId);
btnInstanceGr.setWorkflow(false);
btnInstanceGr.update();
gs.info("MobileCardViewMigrationTools: revertButton: Reverted SYS_SG_BUTTON_INSTANCE Record {0} ", btnInstanceGr.getUniqueValue());
},
cleanUpgradeLegacyCards: function (itemViewMap) {
for (var itemView in itemViewMap) {
var itemViewGr = this.getGlideRecord(this.TABLE.SYS_SG_ITEM_VIEW, itemView);
if (!itemViewGr || !itemViewGr.isValidRecord()) {
gs.warn("MobileCardViewMigrationTools: cleanUpgrade: Skipping revert as sys_sg_item_view Record {0} not found", itemView);
} else if (gs.nil(itemViewMap[itemView][this.TABLE.SYS_SG_MASTER_ITEM]) && gs.nil(itemViewMap[itemView][this.TABLE.SYS_SG_FORM_SCREEN])) {
gs.warn("MobileCardViewMigrationTools: cleanUpgrade: Skipping revert as no master or form screen mapped for sys_sg_item_view Record {0}", itemView);
} else if (this.isItemViewFlowCustom(itemViewGr)) {
this.revertUntouchedItems(itemViewGr, itemViewMap[itemView], this.TABLE.SYS_SG_MASTER_ITEM);
this.revertUntouchedItems(itemViewGr, itemViewMap[itemView], this.TABLE.SYS_SG_FORM_SCREEN);
} else {
gs.info("MobileCardViewMigrationTools: cleanUpgrade: Skipping revert as sys_sg_item_view Record {0} not customized", itemView);
}
}
},
isItemViewFlowCustom: function (itemViewGr) {
return this.isRecordCustomized(itemViewGr) || this.isUIStyleCustomized(itemViewGr);
},
isUIStyleCustomized: function (itemViewGr) {
var uiStyles = itemViewGr.getValue("ui_styles");
var uiStylesGr = this.getMultipleGlideRecords(this.TABLE.SYS_SG_UI_STYLE, uiStyles);
while (uiStylesGr.next()) {
if (this.isRecordCustomized(uiStylesGr))
return true;
}
return false;
},
revertUntouchedItems: function (itemViewGr, itemViewMap, tableName) {
if (gs.nil(itemViewMap[tableName]))
return;
var masterGr = this.getMultipleGlideRecords(tableName, itemViewMap[tableName]);
masterGr.query();
if (masterGr.hasNext()) {
while (masterGr.next()) {
if (!this.isRecordCustomized(masterGr) && masterGr.getValue("use_view_config") && gs.nil(masterGr.getValue("item_view")))
this.revertCardtoItemView(masterGr, itemViewGr.getUniqueValue());
}
} else {
gs.warn("MobileCardViewMigrationTools: revertUntouchedItems: No valid {0} record found for revert, hence no action taken ", tableName);
}
},
type: 'MobileUtahUpgradeCommonUtils'
};
Sys ID
6ff662e0f75e1110dc25d3e543bfd6a1