ConnectionListController.js 4.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. "use strict";
  2. /**
  3. * Licensed Materials - Property of IBM
  4. * IBM Cognos Products: admin
  5. * Copyright IBM Corp. 2016, 2017
  6. * US Government Users Restricted Rights -
  7. * Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
  8. */
  9. define(['underscore', 'bi/commons/ui/core/Class', 'bi/admin/common/utils/AJAXUtils'], function (_, Class, AJAXUtils) {
  10. 'use strict'; //NOSONAR: meant to be strict
  11. var ConnectionListController = Class.extend({
  12. /**
  13. * constructor
  14. */
  15. init: function init(options) {
  16. ConnectionListController.inherited('init', this, arguments);
  17. this.glassContext = options.glassContext;
  18. },
  19. _formatConnectionEntry: function _formatConnectionEntry(conn) {
  20. var writable = conn.permissions && conn.permissions.indexOf('write') > -1 ? true : false;
  21. return {
  22. id: conn.id,
  23. connId: conn.id,
  24. title: conn.defaultName,
  25. defaultName: conn.defaultName,
  26. defaultDescription: conn.defaultDescription,
  27. connectionString: conn.connectionString,
  28. modificationTime: conn.modificationTime,
  29. credentialNamespaces: conn.credentialNamespaces,
  30. apiToken: conn.apiToken,
  31. disabled: conn.disabled,
  32. hidden: conn.hidden,
  33. searchPath: conn.searchPath,
  34. writable: writable,
  35. creationTime: conn.creationTime,
  36. permissions: conn.permissions,
  37. gatewayDestination: conn.gatewayDestination,
  38. secureKey: conn.secureKey,
  39. type: conn.type,
  40. tenantID: conn.tenantID,
  41. owner: conn.owner
  42. };
  43. },
  44. _getConnections: function _getConnections(id) {
  45. var options = {
  46. method: 'GET',
  47. contentType: 'application/json; charset=utf-8',
  48. dataType: 'json'
  49. };
  50. options.url = AJAXUtils.getAJAXURL('datasources') + '/' + id + '/connections?' + encodeURIComponent('fields') + '=' + encodeURIComponent('defaultName,disabled,permissions,owner.defaultName,hidden,capabilities,hasChildren,modificationTime,creationTime,ancestors,defaultDescription,connectionString,tenantID');
  51. return this.glassContext.services.ajax.ajax(options);
  52. },
  53. _getConnection: function _getConnection(dsID, connID) {
  54. var options = {
  55. method: 'GET',
  56. contentType: 'application/json; charset=utf-8',
  57. dataType: 'json'
  58. };
  59. 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');
  60. return this.glassContext.services.ajax.ajax(options);
  61. },
  62. getConnection: function getConnection(dsID, connID) {
  63. return new Promise(function (resolve, reject) {
  64. this._getConnection(dsID, connID).then(function (data) {
  65. resolve(this._formatConnectionEntry(data));
  66. }.bind(this), reject);
  67. }.bind(this));
  68. },
  69. deleteConnection: function deleteConnection(connId, datasourceId) {
  70. var options = {
  71. method: 'DELETE',
  72. contentType: 'application/json; charset=utf-8',
  73. dataType: 'json'
  74. };
  75. options.url = AJAXUtils.getAJAXURL('datasources') + '/' + datasourceId + '/connections/' + connId;
  76. return this.glassContext.services.ajax.ajax(options);
  77. },
  78. getConnectionList: function getConnectionList(id) {
  79. return new Promise(function (resolve, reject) {
  80. this._getConnections(id).then(function (connection) {
  81. var sortedConns = _.sortBy(connection.data, 'defaultName');
  82. var items = _.map(sortedConns, this._formatConnectionEntry.bind(this), function () {
  83. this.glassContext.services.logger.error('Could not map connections');
  84. }.bind(this));
  85. resolve(items);
  86. }.bind(this), reject);
  87. }.bind(this));
  88. }
  89. });
  90. return ConnectionListController;
  91. });