UNPKG

@wbg-mde/repository

Version:

Managing all common method for file system CRUD operations.

338 lines (337 loc) 18.2 kB
"use strict"; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; Object.defineProperty(exports, "__esModule", { value: true }); const export_master_config_1 = require("../shared/configs/export.master.config"); const template_service_1 = require("../shared/services/template.service"); const import_study_service_1 = require("../shared/services/import.study.service"); const app_repo_utility_1 = require("../shared/app.repo.utility"); const _ = require('lodash'); const trace_decorator_1 = require("../decorators/trace.decorator"); let ImportDocument = class ImportDocument { constructor() { this.templateService = new template_service_1.TemplateService(); this.importService = new import_study_service_1.ImportStudyService(); } readImportedFile(filePath, studyType, language, callBack) { try { this.importService.parseXMLtoJSON(filePath, (parser_resp) => { if (parser_resp.result == 'ok') { let data = parser_resp.data; let metadata = {}; if (data[export_master_config_1.Export_Master_Config.xmlNodeProps.rootNode]) { let ddiDoc = data[export_master_config_1.Export_Master_Config.xmlNodeProps.rootNode]; this.templateService.getTreeViewSchema(studyType, language, (response) => { let nodes = response.nodes; let self = this; _.forEach(ddiDoc, (item, key) => { if (key == export_master_config_1.Export_Master_Config.codeBookNodes.FileDescription) { let editorMapSchema = export_master_config_1.Export_Master_Config.fileDescSectionMap; self.templateService.createTreeViewSchema(editorMapSchema, response.schema, response.form, (response) => { }); } else if (key == export_master_config_1.Export_Master_Config.codeBookNodes.DataDescription) { let editorMapSchema = export_master_config_1.Export_Master_Config.variableDocSectionMap; self.templateService.createTreeViewSchema(editorMapSchema, response.schema, response.form, (response) => { }); } else { let treenode = _.filter(nodes, (obj) => { return obj.key == key; }); if (treenode && treenode.length > 0) { self.getDDIObject(treenode[0], ddiDoc, metadata); } } }); callBack({ result: "ok", data: metadata }); }); } else { callBack({ result: "warning", messages: "This is not a valid DDI document." }); } } else { callBack(parser_resp); } }); } catch (e) { callBack({ result: "error", messages: e }); app_repo_utility_1.App_Repository_Utility.LogText('Import > DDI > readImportedFile > ' + e, 3); } } getDDIObject(form, data, outData) { try { 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 { if (__node.formschema.exportKey) { let __data = app_repo_utility_1.App_Repository_Utility.getNestedProperty(data, __node.formschema.exportKey); if (__data) { __data = self.convertToDataType(__node.formschema, __data); if (__node.key === "stdyDscr.fundAg") { let grandNumber = app_repo_utility_1.App_Repository_Utility.getNestedProperty(data, "stdyDscr.citation.prodStmt.grantNo"); if (grandNumber) { self.mergeGrandNummber(__data, grandNumber); } } self.importService.setNestedProperty(outData, __node.key, __data); } } } }); } return outData; } catch (e) { app_repo_utility_1.App_Repository_Utility.LogText('Import > DDI > getDDIObject > ' + e, 3); return outData; } } convertToDataType(schema, value) { try { let type = schema.type; switch (type) { case export_master_config_1.Export_Master_Config.formSchemaTypes.table: let tableVal = new Array(); _.forEach(value, function (val) { let rowVal = {}; let i = 0; _.forEach(schema.items, function (item) { let keys = item.key.split("."); let propName = keys[keys.length - 1]; if (item.exportKey) { if (val instanceof Object) { let propVal = app_repo_utility_1.App_Repository_Utility.getNestedProperty(val, item.exportKey); if (propVal) { if (propVal instanceof Array) { rowVal[propName] = propVal[0]; } else { rowVal[propName] = propVal; } } } else { if (item.exportKey == export_master_config_1.Export_Master_Config.xmlNodeProps.elementProp) { rowVal[propName] = val; } } } else { if (val[export_master_config_1.Export_Master_Config.xmlNodeProps.headerAttribute]) { if (val[export_master_config_1.Export_Master_Config.xmlNodeProps.headerAttribute][propName]) { rowVal[propName] = val[export_master_config_1.Export_Master_Config.xmlNodeProps.headerAttribute][propName]; } } } }); tableVal.push(rowVal); }); if (schema.period) { let periods = new Array(); _.forEach(tableVal, function (item) { if (item.event == "start") { let period = {}; period["date"] = item.date; period["event"] = ""; period["cycle"] = item.cycle; periods.push(period); } else { if (periods.length > 0) { periods[periods.length - 1]["event"] = item.date; } else { let period = {}; period["event"] = item.date; period["cycle"] = item.cycle; periods.push(period); } } }); tableVal = periods; } return tableVal; case export_master_config_1.Export_Master_Config.formSchemaTypes.date: if (value instanceof Array) { value = value[0]; return value; } else { return value; } default: if (value instanceof Array) { return value[0]; } else { return value; } } } catch (e) { app_repo_utility_1.App_Repository_Utility.LogText('Import > DDI > buildFileObject > ' + e, 3); return value; } } formatTableData() { } mergeGrandNummber(fundAg, grandNumber) { _.forEach(fundAg, function (val) { _.forEach(grandNumber, function (grnd) { if (grnd[export_master_config_1.Export_Master_Config.xmlNodeProps.headerAttribute]) { if (grnd[export_master_config_1.Export_Master_Config.xmlNodeProps.headerAttribute]["agency"] == val.abbr) { val["grantNumber"] = grnd[export_master_config_1.Export_Master_Config.xmlNodeProps.elementProp]; } } }); }); } getTemplateFile(nodes) { let templateFIle = export_master_config_1.Export_Master_Config.defaultOptions.tmplFile; if (nodes[export_master_config_1.Export_Master_Config.xmlNodeProps.headerAttribute]) { let headerAttr = nodes[export_master_config_1.Export_Master_Config.xmlNodeProps.headerAttribute]; if (headerAttr[export_master_config_1.Export_Master_Config.customAttributes.template]) { templateFIle = headerAttr[export_master_config_1.Export_Master_Config.customAttributes.template]; } } return templateFIle; } getStudyType(nodes) { let studyType = export_master_config_1.Export_Master_Config.defaultOptions.studyType; if (nodes[export_master_config_1.Export_Master_Config.xmlNodeProps.headerAttribute]) { let headerAttr = nodes[export_master_config_1.Export_Master_Config.xmlNodeProps.headerAttribute]; if (headerAttr[export_master_config_1.Export_Master_Config.customAttributes.type]) { studyType = headerAttr[export_master_config_1.Export_Master_Config.customAttributes.type]; } } return studyType; } getVariableObject(form, data, outData) { try { if (form.nodes && form.nodes instanceof Array) { let self = this; _.forEach(form.nodes, function (__node) { if (__node.nodes && __node.nodes instanceof Array) { self.getVariableObject(__node, data, outData); } else { let __data = app_repo_utility_1.App_Repository_Utility.getNestedProperty(data, __node.formschema.exportKey || __node.formschema.key.replace('[]', '')); if (__data) { __data = self.convertToDataType(__node.formschema, __data); if (__node.formschema.type == export_master_config_1.Export_Master_Config.formSchemaTypes.table) { __node.key = __node.key.replace('[]', '') + '.-'; } self.importService.setNestedProperty(outData, __node.key, __data); } } }); } return outData; } catch (e) { app_repo_utility_1.App_Repository_Utility.LogText('Import > DDI > getVariableObject > ' + e, 3); return outData; } } getFileDescriptionObject(form, data, outData) { try { if (form.nodes && form.nodes instanceof Array) { let self = this; _.forEach(form.nodes, function (__node) { let __data = app_repo_utility_1.App_Repository_Utility.getNestedProperty(data, __node.formschema.exportKey || __node.formschema.key.replace('fileDscr.', '')); if (__data) { __data = self.convertToDataType(__node.formschema, __data); self.importService.setNestedProperty(outData, __node.key.replace(export_master_config_1.Export_Master_Config.fileDescriptionProps.prefixKey, ''), __data); } }); } return outData; } catch (e) { app_repo_utility_1.App_Repository_Utility.LogText('Import > DDI > getVariableObject > ' + e, 3); return outData; } } getLocation(locations, varDescr) { if (locations instanceof Array && locations[0]) { let location = locations[0]; varDescr[export_master_config_1.Export_Master_Config.variableDescriptionProps.location] = {}; _.forEach(location, (locVal, locKey) => { if (locVal[0]) { varDescr[export_master_config_1.Export_Master_Config.variableDescriptionProps.location][locKey] = locVal[0]; } }); } return varDescr; } getValidRange(validRange, varDescr) { if (validRange instanceof Array && validRange[0]) { let valRange = validRange[0]; if (valRange[export_master_config_1.Export_Master_Config.variableDescriptionProps.validRange_range] && valRange[export_master_config_1.Export_Master_Config.variableDescriptionProps.validRange_range] instanceof Array && valRange[export_master_config_1.Export_Master_Config.variableDescriptionProps.validRange_range][0]) { let range = valRange[export_master_config_1.Export_Master_Config.variableDescriptionProps.validRange_range][0]; varDescr[export_master_config_1.Export_Master_Config.variableDescriptionProps.validRange] = {}; if (range[export_master_config_1.Export_Master_Config.xmlNodeProps.headerAttribute]) { let rangeProps = range[export_master_config_1.Export_Master_Config.xmlNodeProps.headerAttribute]; varDescr[export_master_config_1.Export_Master_Config.variableDescriptionProps.validRange][export_master_config_1.Export_Master_Config.variableDescriptionProps.validRange_range] = {}; _.forEach(rangeProps, (rgVal, rgKey) => { if (rgVal) { varDescr[export_master_config_1.Export_Master_Config.variableDescriptionProps.validRange][export_master_config_1.Export_Master_Config.variableDescriptionProps.validRange_range][rgKey] = rgVal; } }); } } } return varDescr; } getCategory(variableCategories, varDescr) { let categories = new Array(); _.forEach(variableCategories, function (catgry) { let catagoryObj = {}; _.forEach(catgry, (catVal, catKey) => { if (catKey == export_master_config_1.Export_Master_Config.variableDescriptionProps.categoryStatus) { catagoryObj[catKey] = {}; if (catVal instanceof Array && catVal[0]) { if (catVal[0][export_master_config_1.Export_Master_Config.xmlNodeProps.elementProp]) { catagoryObj[catKey]["text"] = catVal[0][export_master_config_1.Export_Master_Config.xmlNodeProps.elementProp]; } if (catVal[0][export_master_config_1.Export_Master_Config.xmlNodeProps.headerAttribute]) { _.forEach(catVal[0][export_master_config_1.Export_Master_Config.xmlNodeProps.headerAttribute], (atrVal, atrKey) => { catagoryObj[catKey][atrKey] = atrVal; }); } } } else { catagoryObj[catKey] = catVal[0]; } }); categories.push(catagoryObj); }); varDescr[export_master_config_1.Export_Master_Config.variableDescriptionProps.category] = categories; return varDescr; } }; ImportDocument = __decorate([ trace_decorator_1.Trace({ exclude: [ 'getDDIObject', 'convertToDataType', 'getFileDescriptionObject' ], params: { getTemplateFile: ['*'], getStudyType: ['*'], getVariableObject: ['*'] } }) ], ImportDocument); exports.ImportDocument = ImportDocument;