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