@wbg-mde/repository
Version:
Managing all common method for file system CRUD operations.
338 lines (337 loc) • 18.2 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 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;