"use strict"; /** * Licensed Materials - Property of IBM * IBM Cognos Products: admin * Copyright IBM Corp. 2016, 2017 * US Government Users Restricted Rights - * Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp. */ define(['underscore', 'bi/commons/ui/core/Class', 'bi/admin/common/utils/AJAXUtils'], function (_, Class, AJAXUtils) { 'use strict'; //NOSONAR: meant to be strict var ConnectionListController = Class.extend({ /** * constructor */ init: function init(options) { ConnectionListController.inherited('init', this, arguments); this.glassContext = options.glassContext; }, _formatConnectionEntry: function _formatConnectionEntry(conn) { var writable = conn.permissions && conn.permissions.indexOf('write') > -1 ? true : false; return { id: conn.id, connId: conn.id, title: conn.defaultName, defaultName: conn.defaultName, defaultDescription: conn.defaultDescription, connectionString: conn.connectionString, modificationTime: conn.modificationTime, credentialNamespaces: conn.credentialNamespaces, apiToken: conn.apiToken, disabled: conn.disabled, hidden: conn.hidden, searchPath: conn.searchPath, writable: writable, creationTime: conn.creationTime, permissions: conn.permissions, gatewayDestination: conn.gatewayDestination, secureKey: conn.secureKey, type: conn.type, tenantID: conn.tenantID, owner: conn.owner }; }, _getConnections: function _getConnections(id) { var options = { method: 'GET', contentType: 'application/json; charset=utf-8', dataType: 'json' }; options.url = AJAXUtils.getAJAXURL('datasources') + '/' + id + '/connections?' + encodeURIComponent('fields') + '=' + encodeURIComponent('defaultName,disabled,permissions,owner.defaultName,hidden,capabilities,hasChildren,modificationTime,creationTime,ancestors,defaultDescription,connectionString,tenantID'); return this.glassContext.services.ajax.ajax(options); }, _getConnection: function _getConnection(dsID, connID) { var options = { method: 'GET', contentType: 'application/json; charset=utf-8', dataType: 'json' }; options.url = AJAXUtils.getAJAXURL('datasources') + '/' + dsID + '/connections/' + connID + '?' + encodeURIComponent('fields') + '=' + encodeURIComponent('defaultName,disabled,permissions,owner.defaultName,hidden,capabilities,hasChildren,searchPath,modificationTime,creationTime,apiToken,credentialNamespaces,ancestors,defaultDescription,connectionString,tenantID,gatewayDestination{id,parent},secureKey'); return this.glassContext.services.ajax.ajax(options); }, getConnection: function getConnection(dsID, connID) { return new Promise(function (resolve, reject) { this._getConnection(dsID, connID).then(function (data) { resolve(this._formatConnectionEntry(data)); }.bind(this), reject); }.bind(this)); }, deleteConnection: function deleteConnection(connId, datasourceId) { var options = { method: 'DELETE', contentType: 'application/json; charset=utf-8', dataType: 'json' }; options.url = AJAXUtils.getAJAXURL('datasources') + '/' + datasourceId + '/connections/' + connId; return this.glassContext.services.ajax.ajax(options); }, getConnectionList: function getConnectionList(id) { return new Promise(function (resolve, reject) { this._getConnections(id).then(function (connection) { var sortedConns = _.sortBy(connection.data, 'defaultName'); var items = _.map(sortedConns, this._formatConnectionEntry.bind(this), function () { this.glassContext.services.logger.error('Could not map connections'); }.bind(this)); resolve(items); }.bind(this), reject); }.bind(this)); } }); return ConnectionListController; });