@wbg-mde/r-factory
Version:
Metadata editor R integration module
94 lines (93 loc) • 4.64 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const path = require("path");
const fs = require("fs");
const mkdirp = require("mkdirp");
const R = require("@wbg-mde/r-script");
const import_config_1 = require("../modules/import/import-config");
const config_1 = require("./config");
const _ = require('lodash');
class CreateCategoriesTest {
constructor() {
this.inputDatasetDirectory = path.join(process.cwd(), "test_data", "input", "dataset");
this.inputJsonDirectory = path.join(process.cwd(), "test_data", "input", "json");
this.inputCSVDirectory = path.join(process.cwd(), "test_data", "input", "csv");
this.inputFinalJsonDirectory = path.join(process.cwd(), "test_data", "input", "final-json");
this.libraryPath = '';
this.memoryLimit = 36000;
this.encoding = "";
this.variables = ["weight"];
mkdirp.sync(this.inputDatasetDirectory);
mkdirp.sync(this.inputJsonDirectory);
mkdirp.sync(this.inputCSVDirectory);
mkdirp.sync(this.inputFinalJsonDirectory);
}
execute(variables, callback) {
try {
this.variables = variables;
fs.readdir(this.inputDatasetDirectory, (err, files) => {
if (files) {
this.executeFiles(files, 0, (result) => {
callback(result);
});
}
});
}
catch (e) {
console.log('execute error >> ' + e);
callback({ result: 'error' });
}
}
executeFiles(files, index, callback) {
try {
let ctgyLimit = 1000;
let file = files[index];
let fileId = "F" + (index + 1);
this.encoding = path.basename(file, path.extname(file));
let datasetFile = path.join(this.inputDatasetDirectory, file);
let inputJsonFile = path.join(this.inputJsonDirectory, fileId + '.json');
let inputCSVFile = path.join(this.inputCSVDirectory, fileId + '.csv');
let finalJsonFile = path.join(this.inputFinalJsonDirectory, fileId + '.json');
let workingDirectory = path.dirname(config_1.TestConfig.scriptPath.resequence);
R(config_1.TestConfig.scriptPath.import).data(datasetFile, path.extname(file).slice(1), fileId, inputJsonFile, import_config_1.ImportConfig.frequencyCalcLimit, this.libraryPath, this.memoryLimit, workingDirectory).call((err, rowCount) => {
if (err) {
callback({ result: 'error' });
console.log('import file R script execution error - file( ' + file + ' ):' + err.toString());
}
else {
R(config_1.TestConfig.scriptPath.exportCSV).data(datasetFile, path.extname(file).slice(1), inputCSVFile, this.libraryPath, this.memoryLimit).call((err, resp) => {
if (err) {
callback({ result: 'error' });
console.log('write csv error - file( ' + file + ' ):' + err.toString());
}
else {
R(config_1.TestConfig.scriptPath.createCatgry)
.data(inputCSVFile, JSON.stringify(this.variables), finalJsonFile, this.libraryPath, workingDirectory, ctgyLimit)
.call((err, resp) => {
if (err) {
callback({ result: 'error' });
console.log('Create category error - file( ' + file + ' ):' + err.toString());
}
else {
console.log('completed >> ' + file);
index += 1;
if (index < files.length) {
this.executeFiles(files, index, callback);
}
else {
callback({ result: 'ok' });
}
}
});
}
});
}
});
}
catch (e) {
console.log('execute files error >> ' + e);
callback({ result: 'error' });
}
}
}
exports.CreateCategoriesTest = CreateCategoriesTest;