trm-core
Version:
TRM (Transport Request Manager) Core
138 lines (137 loc) • 6.14 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.analyze = void 0;
const trm_commons_1 = require("trm-commons");
const systemConnector_1 = require("../../systemConnector");
exports.analyze = {
name: 'analyze',
filter: (context) => __awaiter(void 0, void 0, void 0, function* () {
if (Object.keys(context.output.sapEntries).length > 0) {
return true;
}
else {
trm_commons_1.Logger.info(`Package ${context.rawInput.packageData.manifest.name} has no SAP entries`, !context.rawInput.printOptions.information);
return false;
}
}),
run: (context) => __awaiter(void 0, void 0, void 0, function* () {
trm_commons_1.Logger.log('Analyze step', true);
var logTable = [];
var entriesCount = 0;
var tableFields = [];
Object.keys(context.output.sapEntries).forEach(tableName => {
var aFields = [];
context.output.sapEntries[tableName].forEach(o => {
entriesCount++;
Object.keys(o).forEach(field => {
if (!aFields.includes(field)) {
aFields.push(field);
}
});
});
tableFields.push({
tableName,
fields: aFields
});
});
trm_commons_1.Logger.info(`Package ${context.rawInput.packageData.manifest.name} has ${entriesCount} SAP entries`, !context.rawInput.printOptions.information);
if (entriesCount === 0) {
return;
}
for (const table of Object.keys(context.output.sapEntries)) {
var tableExists;
try {
tableExists = yield systemConnector_1.SystemConnector.checkSapEntryExists('TADIR', {
pgmid: 'R3TR',
object: 'TABL',
obj_name: table
});
}
catch (e) {
tableExists = false;
}
if (!tableExists) {
context.runtime.missingTables.push(table);
trm_commons_1.Logger.error(`Required ${context.output.sapEntries[table].length} entries in ${table}, but table was not found`, !context.rawInput.printOptions.information);
}
else {
var printTableHead = ['Table name'];
var printTableData = [];
var tableData;
printTableHead = printTableHead.concat(tableFields.find(o => o.tableName === table).fields);
printTableHead.push('Status');
for (const tableEntry of context.output.sapEntries[table]) {
tableData = [table];
var entryStatus;
try {
const exists = yield systemConnector_1.SystemConnector.checkSapEntryExists(table, tableEntry);
if (exists) {
entryStatus = `OK`;
context.runtime.entriesStatus.good.push({
table,
tableEntry
});
}
else {
entryStatus = `NOT FOUND`;
context.runtime.entriesStatus.bad.push({
table,
tableEntry
});
}
}
catch (e) {
trm_commons_1.Logger.error(e.toString(), true);
trm_commons_1.Logger.error(`Error during check of SAP entry ${JSON.stringify(tableEntry)}`, true);
entryStatus = `Unknown`;
context.runtime.entriesStatus.bad.push({
table,
tableEntry
});
}
Object.keys(tableEntry).forEach(field => {
const pushIndex = printTableHead.findIndex(headerName => headerName === field);
tableData.splice(pushIndex, 0, tableEntry[field]);
});
tableData.push(entryStatus);
printTableData.push(tableData);
}
logTable.push({
header: printTableHead,
data: printTableData
});
}
}
logTable.forEach(t => {
trm_commons_1.Logger.table(t.header, t.data, !context.rawInput.printOptions.entriesStatus);
});
context.output.sapEntriesStatus = {};
context.runtime.entriesStatus.good.forEach(o => {
if (!context.output.sapEntriesStatus[o.table]) {
context.output.sapEntriesStatus[o.table] = [];
}
context.output.sapEntriesStatus[o.table].push({
status: true,
entry: o.tableEntry
});
});
context.runtime.entriesStatus.bad.forEach(o => {
if (!context.output.sapEntriesStatus[o.table]) {
context.output.sapEntriesStatus[o.table] = [];
}
context.output.sapEntriesStatus[o.table].push({
status: false,
entry: o.tableEntry
});
});
})
};