@sap/odata-v4
Version:
OData V4.0 server library
54 lines (46 loc) • 2.51 kB
JavaScript
;
const FullQualifiedName = require('../FullQualifiedName');
const validateThat = require('../validator/ParameterValidator').validateThat;
/**
* Factory for creating keys used to store Edm entities in ES6 Maps
*/
class KeyFactory {
/**
* Creates a string representation of the action tuple which can be used as key for a map
*
* @param {FullQualifiedName} actionName Full qualified name of the action
* @param {FullQualifiedName} bindingParameterTypeName Full qualified name of the binding parameter
* @param {boolean} isBindingParameterCollection If true the binding parameter is a collection
* @returns {string}
*/
static createActionKey(actionName, bindingParameterTypeName, isBindingParameterCollection) {
validateThat('actionName', actionName).truthy().instanceOf(FullQualifiedName);
validateThat('bindingParameterTypeName', bindingParameterTypeName).truthy().instanceOf(FullQualifiedName);
validateThat('isBindingParameterCollection', isBindingParameterCollection).typeOf('boolean');
return FullQualifiedName.getFQNAsString(actionName)
+ ' ' + bindingParameterTypeName
+ ' ' + isBindingParameterCollection;
}
/**
* Creates a string representation of the function tuple which can be used as key for a map
*
* @param {FullQualifiedName} functionName
* @param {?FullQualifiedName} bindingParameterTypeName Binding parameter typename or null if unbound
* @param {?boolean} isBindingParameterCollection Binding parameter collection info or null if unbound
* @param {string[]} parameterNames
* @returns {string}
*/
static createFunctionKey(functionName, bindingParameterTypeName, isBindingParameterCollection, parameterNames) {
validateThat('functionName', functionName).truthy().instanceOf(FullQualifiedName);
if (bindingParameterTypeName) {
validateThat('bindingParameterTypeName', bindingParameterTypeName).truthy().instanceOf(FullQualifiedName);
validateThat('isBindingParameterCollection', isBindingParameterCollection).typeOf('boolean');
}
validateThat('parameterNames', parameterNames).truthy().instanceOf(Array);
return FullQualifiedName.getFQNAsString(functionName)
+ ' ' + bindingParameterTypeName
+ ' ' + isBindingParameterCollection
+ ' ' + Array.from(parameterNames).sort().join(' ');
}
}
module.exports = KeyFactory;