Name
sn_appclient.AppManagerHandler
Description
App Manager utility to handle install/update/activate/repair of apps/plugins
Script
var AppManagerHandler = Class.create();
AppManagerHandler.prototype = {
initialize: function() {
this.appManagerAPI = global.AppManagerAPI;
this.useQueuedInstall = gs.getProperty("sn_appclient.use_queued_installation") == 'true';
this.appUpgarder = new AppUpgrader();
},
_trackAndBuildResponse: function(inputPayload, response, id, type, mode) {
var trackerPayload = CommonUtils.parse(response);
var trackerId = trackerPayload && trackerPayload.links && trackerPayload.links.progress && trackerPayload.links.progress.id;
if (trackerId)
trackerPayload.trackerId = trackerId;
CommonUtils.addProgressTracker(inputPayload, trackerPayload, id, type, mode);
return trackerPayload;
},
_trackAndBuildBatchResponse: function(inputPayload, response, id, type, mode) {
var trackerPayload = CommonUtils.parse(response);
var trackerId = trackerPayload && trackerPayload.links && trackerPayload.links.progress && trackerPayload.links.progress.id;
var batchInstallId = trackerPayload && trackerPayload.links && trackerPayload.links.results && trackerPayload.links.results.id;
if (trackerId) {
trackerPayload.batchInfo = {};
trackerPayload.batchInfo[Constants.EXECUTION_TRACKER_ID] = trackerId;
trackerPayload.batchInfo[Constants.BATCH_INSTALLATION_ID] = batchInstallId;
}
trackerPayload.trackerId = trackerPayload.batchInfo[Constants.EXECUTION_TRACKER_ID];
CommonUtils.addProgressTracker(inputPayload, trackerPayload, id, type, mode);
return trackerPayload;
},
installApp: function(params) {
var queryParams = params.queryParams || {};
var applicationId, response;
var isReinstall = queryParams['isReinstall'] || false;
if (!this.useQueuedInstall) {
applicationId = queryParams.app_id;
response = this.appUpgarder.installAndUpdateApps(queryParams);
} else {
var inputPayload = this._getApplicationParams(params.queryParams);
var applicationId = inputPayload.appId;
var version = inputPayload.version;
var customizationVersion = inputPayload.customizationVersion;
var loadDemoData = inputPayload.loadDemoData;
response = isReinstall ? AppManagerAPI.repairApplication(applicationId, version, customizationVersion, loadDemoData) :
AppManagerAPI.installApplication(applicationId, version, customizationVersion, loadDemoData);
}
return this._trackAndBuildResponse(queryParams, response, applicationId, Constants.APPLICATION, isReinstall ? Constants.REINSTALL : Constants.INSTALL);
},
updateApp: function(params) {
var queryParams = params.queryParams || {};
var applicationId, response;
if (!this.useQueuedInstall) {
applicationId = queryParams.app_id;
response = this.appUpgarder.installAndUpdateApps(queryParams);
} else {
var inputPayload = this._getApplicationParams(params.queryParams);
var applicationId = inputPayload.appId;
var version = inputPayload.version;
var customizationVersion = inputPayload.customizationVersion;
var loadDemoData = inputPayload.loadDemoData;
response = AppManagerAPI.updateApplication(applicationId, version, customizationVersion, loadDemoData);
}
return this._trackAndBuildResponse(queryParams, response, applicationId, Constants.APPLICATION, Constants.UPDATE);
},
repairApp: function(params) {
var queryParams = params.queryParams || {};
queryParams.isReinstall = true;
var applicationId, response;
if (!this.useQueuedInstall) {
applicationId = queryParams.app_id;
response = this.appUpgarder.installAndUpdateApps(queryParams);
} else {
var inputPayload = this._getApplicationParams(params.queryParams);
var applicationId = inputPayload.appId;
var version = inputPayload.version;
var customizationVersion = inputPayload.customizationVersion;
var loadDemoData = inputPayload.loadDemoData;
response = AppManagerAPI.repairApplication(applicationId, version, customizationVersion, loadDemoData);
}
return this._trackAndBuildResponse(queryParams, response, applicationId, Constants.APPLICATION, Constants.REPAIR);
},
activatePlugin: function(params) {
var inputPayload = this._getPluginParams(params.queryParams);
var pluginId = inputPayload.pluginId;
var customizationVersion = inputPayload.customizationVersion;
var loadDemoData = inputPayload.loadDemoData;
var response = AppManagerAPI.activatePlugin(pluginId, customizationVersion, loadDemoData);
return this._trackAndBuildResponse(inputPayload, response, pluginId, Constants.PLUGIN, Constants.ACTIVATE);
},
repairPlugin: function(params) {
var inputPayload = this._getPluginParams(params.queryParams);
var pluginId = inputPayload.pluginId;
var customizationVersion = inputPayload.customizationVersion;
var loadDemoData = inputPayload.loadDemoData;
var response = AppManagerAPI.repairPlugin(pluginId, customizationVersion, loadDemoData);
return this._trackAndBuildResponse(inputPayload, response, pluginId, Constants.PLUGIN, Constants.REPAIR);
},
installProduct: function(installationPlan) {
var productId = installationPlan.product_id;
var response = {};
if (!this.useQueuedInstall)
response = this.appUpgarder.installProductByPlan(installationPlan);
else
response = AppManagerAPI.installBatch(JSON.stringify(installationPlan));
return this._trackAndBuildBatchResponse(installationPlan, response, productId, Constants.PRODUCT, Constants.INSTALL);
},
_isBaseOnlyInstall: function(version, installedVersion, customizationVersion, installedCustomizationVersion) {
return version && version != installedVersion && customizationVersion == installedCustomizationVersion;
},
_isCustomizedInstall: function(version, installedVersion, customizationVersion, installedCustomizationVersion) {
return customizationVersion && version == installedVersion && customizationVersion != installedCustomizationVersion;
},
_getApplicationParams: function(queryParams) {
var appId = queryParams[Constants.APP_ID] || '';
var loadDemoData = queryParams[Constants.LOAD_DEMO_DATA] ? CommonUtils.getBooleanParam(queryParams, Constants.LOAD_DEMO_DATA) : false;
var version = queryParams[Constants.VERSION] || '';
var customizationVersion = queryParams[Constants.CUSTOMIZATION_VERSION] || '';
var installedVersion = CommonUtils.getInstalledVersion(appId);
var installedCustomizationVersion = CommonUtils.getInstalledCustomizationVersion(appId);
if (this._isBaseOnlyInstall(version, installedVersion, customizationVersion, installedCustomizationVersion))
customizationVersion = '';
else if (this._isCustomizedInstall(version, installedVersion, customizationVersion, installedCustomizationVersion))
version = '';
return {
appId: appId,
version: version,
customizationVersion: customizationVersion,
loadDemoData: loadDemoData,
};
},
_getPluginParams: function(queryParams) {
var customizationVersion = queryParams[Constants.CUSTOMIZATION_VERSION] || '';
if (Constants.NONE == customizationVersion.toLowerCase())
customizationVersion = '';
return {
pluginId: queryParams[Constants.PLUGIN_ID_PARAM] || '',
customizationVersion: customizationVersion,
loadDemoData: queryParams[Constants.LOAD_DEMO_DATA] ? CommonUtils.getBooleanParam(queryParams, Constants.LOAD_DEMO_DATA) : false
};
},
type: 'AppManagerHandler'
};
Sys ID
9cd5d0f077902110c918256a5b5a99d0