UNPKG

@wbg-mde/repository

Version:

Managing all common method for file system CRUD operations.

196 lines (195 loc) 9.31 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 ImportDublinCore = class ImportDublinCore { 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; if (data[export_master_config_1.Export_Master_Config.xmlNodeProps.rdfRoot]) { let rdfDoc = data[export_master_config_1.Export_Master_Config.xmlNodeProps.rdfRoot]; this.templateService.getTreeViewSchema(studyType, language, (response) => { let nodes = response.nodes; let treenode = _.find(nodes, (obj) => { return obj.key == export_master_config_1.Export_Master_Config.rdfNodes.resDescription; }); let rdfDscr = rdfDoc[export_master_config_1.Export_Master_Config.xmlNodeProps.rdfParentNode]; let resDescr = new Array(); if (rdfDscr && rdfDscr instanceof Array) { let self = this; _.forEach(rdfDscr, function (descr) { let rdfDoc = {}; rdfDoc = self.getDDIObject(treenode, descr, rdfDoc); resDescr.push(rdfDoc); }); callBack({ result: "ok", data: resDescr }); } else { callBack({ result: "warning", messages: "The file does not contain any Dublin Core resources." }); } }); } else { callBack({ result: "warning", messages: "This is not a Dublin Core RDF file." }); } } else { callBack(parser_resp); } }); } catch (e) { callBack({ result: "error", messages: e }); console.log('Import DDI Error >> ' + e); } } getDDIObject(form, data, outData) { 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); self.setNestedProperty(outData, __node.key, __data); } } } }); } return outData; } convertToDataType(schema, value) { 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; } } } setNestedProperty(object, property, value) { if (object && typeof object == "object") { if (typeof property == "string" && property !== "") { var split = property.split("."); return split.reduce(function (obj, prop, idx) { obj[prop] = obj[prop] || {}; if (split.length == (idx + 1)) { obj[prop] = value; } return obj[prop]; }, object); } else if (typeof property == "number") { object[property] = value; return object[property]; } else { return object; } } else { return object; } } }; ImportDublinCore = __decorate([ trace_decorator_1.Trace({ exclude: [ 'getDDIObject', 'convertToDataType', 'setNestedProperty' ] }) ], ImportDublinCore); exports.ImportDublinCore = ImportDublinCore;