UNPKG

@adempiere/grpc-dictionary-client

Version:

ADempiere Dictionary Client write in Javascript for gRPC service

242 lines (209 loc) 8.48 kB
/************************************************************************************* * Product: ADempiere gRPC Dictionary Client * * Copyright (C) 2012-2018 E.R.P. Consultores y Asociados, C.A. * * Contributor(s): Yamel Senih ysenih@erpya.com * * This program is free software: you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation, either version 3 of the License, or * * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * * along with this program. If not, see <https://www.gnu.org/licenses/>. * ************************************************************************************/ class Dictionary { /** * Constructor, No authentication required * @param {string} host * @param {string} sessionUuid * @param {string} language */ constructor({ host, sessionUuid, language = 'en_US' }) { this.host = host; this.sessionUuid = sessionUuid; this.language = language; } /** * Load gRPC Connection * @return {object} Return request for get data */ getService() { const grpc_promise = require('grpc-promise'); const { DictionaryPromiseClient } = require('./src/grpc/proto/dictionary_grpc_web_pb.js'); const requestService = new DictionaryPromiseClient(this.host); grpc_promise.promisifyAll(requestService); return requestService; } getApplicationRequest() { const { ApplicationRequest } = require('./src/grpc/proto/dictionary_pb.js'); const applicationRequest = new ApplicationRequest(); applicationRequest.setSessionuuid(this.sessionUuid); applicationRequest.setLanguage(this.language); return applicationRequest; } /** * Get Entity Request * @param {string} uuid Universally Unique IDentifier * @return {object} Return request for get data */ getRequest({ uuid, id }) { const { EntityRequest } = require('./src/grpc/proto/dictionary_pb.js'); const request = new EntityRequest(); request.setUuid(uuid); request.setId(id); request.setApplicationrequest(this.getApplicationRequest()); return request; } /** * Reference Request * @param {string} referenceUuid * @param {string} columnName * @returns {promise} */ requestReference({ referenceUuid, columnName }) { const { ReferenceRequest } = require('./src/grpc/proto/dictionary_pb.js'); const request = new ReferenceRequest(); request.setReferenceuuid(referenceUuid); request.setColumnname(columnName); request.setApplicationrequest(this.getApplicationRequest()); return this.getService().getReference(request) .then(responseReference => { const { convertReference } = require('./src/convertUtils.js'); return convertReference(responseReference); }); } /** * Validation Rule Request * @param {string} validationRuleUuid */ requestValidationRule({ validationRuleUuid }) { const { ValidationRuleRequest } = require('./src/grpc/proto/dictionary_pb.js'); const request = new ValidationRuleRequest(); request.setValidationruleuuid(validationRuleUuid); request.setApplicationrequest(this.getApplicationRequest()); return this.getService().getValidationRule(request) .then(responseValidation => { const { convertValidationRule } = require('./src/convertUtils.js'); return convertValidationRule(responseValidation); }); } /** * Get and request a Window, the Tabs are optional * @param {string} uuid Universally Unique IDentifier * @param {number} id IDentifier * @param {boolean} isWithTabs Indicate if you will also extract the tabs * @return {oject} Object Window and attributes, and tabs if its required. */ requestWindow({ uuid, id, isWithTabs = false }) { if (isWithTabs) { return this.getService().getWindowAndTabs(this.getRequest({ uuid, id })) .then(responseWindow => { const { convertWindow } = require('./src/convertUtils.js'); return convertWindow(responseWindow, isWithTabs); }); } else { return this.getService().getWindow(this.getRequest({ uuid, id })) .then(responseWindow => { const { convertWindow } = require('./src/convertUtils.js'); return convertWindow(responseWindow); }); } } /** * Get and request a Tab, the Fields are optional * @param {string} uuid Universally Unique IDentifier * @param {number} id IDentifier * @param {boolean} isWithFields Indicate if you will also extract the fields * @return {object} Object Tabs and attributes, and fields if its required. */ requestTab({ uuid, id, isWithFields = false, isWithProcess = false }) { if (isWithFields) { return this.getService().getTabAndFields(this.getRequest({ uuid, id })) .then(responseTab => { const { convertTab } = require('./src/convertUtils.js'); return convertTab(responseTab, isWithFields, !isWithFields); }); } else { return this.getService().getTab(this.getRequest({ uuid, id })) .then(responseTab => { const { convertTab } = require('./src/convertUtils.js'); return convertTab(responseTab, isWithFields, isWithProcess); }); } } /** * Get and request a Field * @param {string} fieldUuid Universally Unique IDentifier * @param {string} columnUuid * @param {string} elementUuid * @param {string} tableName * @param {string} columnName * @param {string} elementColumnName */ requestField({ fieldUuid, columnUuid, elementUuid, // TableName + ColumnName tableName, columnName, elementColumnName }) { const { FieldRequest } = require('./src/grpc/proto/dictionary_pb.js'); const request = new FieldRequest(); request.setFielduuid(fieldUuid); request.setColumnuuid(columnUuid); request.setElementuuid(elementUuid); request.setTablename(tableName); request.setColumnname(columnName); request.setElementcolumnname(elementColumnName); request.setApplicationrequest(this.getApplicationRequest()); return this.getService().getField(request) .then(responseField => { const { convertField } = require('./src/convertUtils.js'); return convertField(responseField); }); } /** * Get and request a Process with parameters * @param {string} uuid Universally Unique IDentifier * @param {number} id IDentifier * @return {promise} Process/Report metadata and attributes. */ requestProcess({ uuid, id, isWithFields = false }) { return this.getService().getProcess(this.getRequest({ uuid, id })) .then(responseProcess => { const { convertProcess } = require('./src/convertUtils.js'); return convertProcess(responseProcess, isWithFields); }); } /** * Get and request a Smart Browser with fields * @param {string} uuid Universally Unique IDentifier * @param {number} id IDentifier * @return {promise} Smart Browser metadata and attributes. */ requestBrowser({ uuid, id, isWithFields = true }) { return this.getService().getBrowser(this.getRequest({ uuid, id })) .then(responseBrowser => { const { convertBrowser } = require('./src/convertUtils.js'); return convertBrowser(responseBrowser, isWithFields); }); } /** * Get and request a Form metadata * @param {string} uuid Universally Unique IDentifier * @param {number} id IDentifier * @return {promise} Form attributes and metadata. */ requestForm({ uuid, id }) { return this.getService().getForm(this.getRequest({ uuid, id })) .then(responseForm => { const { convertForm } = require('./src/convertUtils.js'); return convertForm(responseForm); }); } } module.exports = Dictionary;