@wbg-mde/r-factory
Version:
Metadata editor R integration module
66 lines (65 loc) • 2.93 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const path = require("path");
const fs = require("fs");
const R = require("@wbg-mde/r-script");
const import_config_1 = require("../modules/import/import-config");
const config_1 = require("./config");
const base_key_1 = require("../modules/validation/base-key");
var _ = require('lodash');
class BaseKeyValidation {
constructor() {
this.datasetname = 'HND_2012_L2L_missing.dta';
this.fileId = 'F1';
this.keyVariables = ["hhid"];
this.libraryPath = '';
this.memoryLimit = 36000;
this.basekey = null;
this.basekey = new base_key_1.BaseKey();
}
execute(callback) {
try {
let datafile = path.join(config_1.TestConfig.inputPath.dataset, this.datasetname);
let inputJson = path.join(config_1.TestConfig.inputPath.json, this.fileId + '.json');
let inputCSV = path.join(config_1.TestConfig.inputPath.csv, this.fileId + '.csv');
let paramJson = path.join(config_1.TestConfig.inputPath.finaljson, this.fileId + '.json');
let outJsonFile = path.join(config_1.TestConfig.outputPath.json, this.fileId + '.json');
R(config_1.TestConfig.scriptPath.import).data(datafile, path.extname(this.datasetname).slice(1), this.fileId, inputJson, import_config_1.ImportConfig.frequencyCalcLimit, this.libraryPath, this.memoryLimit, config_1.TestConfig.scriptPath.workingDirectory).call((err, rowCount) => {
if (err) {
callback({ result: 'error' });
console.log('import file R script execution error - file( ' + this.datasetname + ' ):' + err.toString());
}
else {
}
});
}
catch (e) {
console.log('execute error >> ' + e);
callback({ result: 'error' });
}
}
;
validate(callback) {
try {
let datasetsFile = path.join(config_1.TestConfig.inputPath.root, 'datasets.json');
let variablesFile = path.join(config_1.TestConfig.inputPath.root, 'variables.json');
let datasets = JSON.parse(fs.readFileSync(datasetsFile).toString());
let variables = JSON.parse(fs.readFileSync(variablesFile).toString());
this.basekey.validateRelations(datasets, variables, (resp) => {
if (resp.valid) {
}
else {
console.log(resp);
}
});
this.basekey.validateRelations(datasets, variables, (resp) => {
callback(resp);
});
}
catch (e) {
console.log('execute error >> ' + e);
callback({ result: 'error' });
}
}
}
exports.BaseKeyValidation = BaseKeyValidation;