UNPKG

@wbg-mde/repository

Version:

Managing all common method for file system CRUD operations.

198 lines (197 loc) 9.55 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const export_master_config_1 = require("../shared/configs/export.master.config"); const app_repo_utility_1 = require("../shared/app.repo.utility"); const project_configuration_1 = require("../configuration/project.configuration"); const app_repo_constants_1 = require("../shared/app.repo.constants"); const export_helpers_1 = require("../shared/services/export.helpers"); const model_transformer_1 = require("../publish/model.transformer"); const path = require("path"); const _ = require('lodash'); class ExportMaster { constructor() { this.helpers = new export_helpers_1.ExportHelpers(); this.transformer = new model_transformer_1.ModelTransformer(); } exportToJSON(project, filePath) { let mappingFile = path.join(project_configuration_1.configuaration.masterDataPath, app_repo_constants_1.App_Repository_Constants.modelMappingPath, `${project.header.type.toLowerCase()}_mapping.json`); let jsonData = this.transformer.transformMetadata(mappingFile, project.metadata); app_repo_utility_1.App_Repository_Utility.writeFile(filePath, JSON.stringify(jsonData, null, 4)); } getDDIObject(form, data, outData) { try { let subNodes = new Array(); if (form.nodes && form.nodes instanceof Array) { let self = this; _.forEach(form.nodes, function (__node) { if (__node.nodes && __node.nodes instanceof Array) { self.getDDIObject(__node, data, outData); } else { let keys = __node .key .split('.'); let nodeVal = _.get(data, keys); if (nodeVal) { if (__node.formschema.exportMapFn) { self.helpers[__node.formschema.exportMapFn](export_master_config_1.Export_Master_Config.actions.export, nodeVal, __node.formschema.items, __node["exportKey"] || __node["key"], outData, __node.key); } else if (__node.formschema.type === export_master_config_1.Export_Master_Config.formSchemaTypes.table) { let tableValue = self.formatTableVal(nodeVal, __node.formschema.items); if (tableValue && !_.isEmpty(tableValue)) { if (__node["exportKey"]) { app_repo_utility_1.App_Repository_Utility.setNestedProperty(outData, __node["exportKey"], tableValue); } } } else { if (nodeVal) { if (__node["exportKey"]) { let exportKeys = __node["exportKey"].split(","); _.forEach(exportKeys, function (__key) { app_repo_utility_1.App_Repository_Utility.setNestedProperty(outData, __key, nodeVal); }); } } } } } }); } return outData; } catch (e) { app_repo_utility_1.App_Repository_Utility.LogText('Export > getDDIObject > ' + e, 3); return outData; } } setProductInfo(obj, infoPath) { var software = { "@": { "version": process.env.npm_package_version }, "#": "Metadata Editor" }; app_repo_utility_1.App_Repository_Utility.setNestedProperty(obj, `${infoPath}.software`, software); return obj; } formatTableVal(table, cols) { let lstObj = new Array(); try { for (let row of table) { let obj = {}; obj[export_master_config_1.Export_Master_Config.xmlNodeProps.headerAttribute] = {}; for (let col of cols) { let keys = col .key .split("."); let colName = keys[keys.length - 1]; if (row[colName]) { if (col.exportKey) { app_repo_utility_1.App_Repository_Utility.setNestedProperty(obj, col.exportKey, row[colName]); } else { obj[export_master_config_1.Export_Master_Config.xmlNodeProps.headerAttribute][colName] = row[colName]; } } } lstObj.push(obj); } } catch (e) { app_repo_utility_1.App_Repository_Utility.LogText('Export > formatTableVal > ' + e, 3); } return lstObj; } formatArrayVal(table, cols) { if (cols["0"].exportKey == "none") cols = cols["0"].items; let lstObjArr = []; _.each(table, (temp) => { let lstObj = {}; this.recursivelyIterate(cols, temp, lstObj); lstObjArr.push(lstObj); }); return lstObjArr; } recursivelyIterate(cols, temp, lstObj) { _.each(cols, (__node) => { let keys = __node .key .split('.'); let nodeVal = _.get(temp, keys[keys.length - 1]); if (nodeVal) { if (__node["exportKey"] && __node["exportKey"] != "none") { let exportKeys = __node["exportKey"].split(","); _.forEach(exportKeys, function (__key) { app_repo_utility_1.App_Repository_Utility.setNestedProperty(lstObj, __key, nodeVal); }); } else { app_repo_utility_1.App_Repository_Utility.setNestedProperty(lstObj, __node["key"], nodeVal); } } if (__node.items && __node.items.length > 0) { if (temp[__node["key"]] instanceof Array) { _.each(temp[__node["key"]], (temps) => { this.recursivelyIterate(__node.items, temps, lstObj); }); } else this.recursivelyIterate(__node.items, temp, lstObj); } }); } validateData(form, data) { try { let requiredKeys = new Array(); _.forEach(form, (formNode) => { if (formNode.key === export_master_config_1.Export_Master_Config.ddiNodes.fileDescription) { if (data[export_master_config_1.Export_Master_Config.ddiNodes.dataSets] && data[export_master_config_1.Export_Master_Config.ddiNodes.dataSets][export_master_config_1.Export_Master_Config.ddiNodes.fileDescription] && data[export_master_config_1.Export_Master_Config.ddiNodes.dataSets][export_master_config_1.Export_Master_Config.ddiNodes.fileDescription] instanceof Array) { for (let i = 0; i < data.datasets.fileDscr.length; i++) { let fileDescrForm = _.cloneDeep(formNode); if (fileDescrForm.items) { fileDescrForm .items .forEach(function (t) { t.key = t .key .replace(export_master_config_1.Export_Master_Config.ddiNodes.fileDescription + '.', export_master_config_1.Export_Master_Config.ddiNodes.dataSets + '.' + export_master_config_1.Export_Master_Config.ddiNodes.fileDescription + '[' + i + '].'); }); this.validateRequired(fileDescrForm, data, requiredKeys); } } } } else { this.validateRequired(formNode, data, requiredKeys); } }); if (requiredKeys.length === 0) { return { result: 'ok' }; } else { return { result: 'error', Errors: requiredKeys }; } } catch (e) { app_repo_utility_1.App_Repository_Utility.LogText("Repository >> utility >> validateData >> Error >> " + e, 3); return { result: 'error', Errors: e }; } } validateRequired(form, data, requiredKeys) { if (form.items && form.items.length > 0 && form.type !== "table") { _.forEach(form.items, (formNode) => { this.validateRequired(formNode, data, requiredKeys); }); } else { if (form.required) { if (_.get(data, form.key) === undefined || _.get(data, form.key) === "") { requiredKeys.push(form.key); } } } } } exports.ExportMaster = ExportMaster;