@wbg-mde/repository
Version:
Managing all common method for file system CRUD operations.
198 lines (197 loc) • 9.55 kB
JavaScript
;
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;