trm-core
Version:
TRM (Transport Request Manager) Core
89 lines (88 loc) • 4.4 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.ObjectDependencies = void 0;
const registry_1 = require("../registry");
const systemConnector_1 = require("../systemConnector");
class ObjectDependencies {
constructor(object, objName) {
this.object = object;
this.objName = objName;
this.tables = {};
this.trmPackages = [];
this.sapPackages = [];
}
setDependencies(dependencies) {
return __awaiter(this, void 0, void 0, function* () {
for (const d of dependencies) {
const tabkey = yield this.addTableKey(d.tabname, d.tabkey);
if (d.trmPackageName) {
var trmPackage = (yield systemConnector_1.SystemConnector.getInstalledPackages(false, true)).find(o => o.compareName(d.trmPackageName) && o.compareRegistry(registry_1.RegistryProvider.getRegistry(d.trmPackageRegistry)));
if (trmPackage) {
var iTrmPackage = this.trmPackages.findIndex(o => o.trmPackage.compareName(trmPackage.packageName) && o.trmPackage.compareRegistry(trmPackage.registry));
if (iTrmPackage < 0) {
iTrmPackage = this.trmPackages.push({
trmPackage,
dependencies: []
}) - 1;
}
var iTabKeys = this.trmPackages[iTrmPackage].dependencies.findIndex(o => o.tabname === d.tabname);
if (iTabKeys < 0) {
iTabKeys = this.trmPackages[iTrmPackage].dependencies.push({
tabname: d.tabname,
tabkey: []
}) - 1;
}
this.trmPackages[iTrmPackage].dependencies[iTabKeys].tabkey.push(tabkey);
}
}
else if (d.devclass) {
var iDevclass = this.sapPackages.findIndex(o => o.package === d.devclass);
if (iDevclass < 0) {
iDevclass = this.sapPackages.push({
package: d.devclass,
dependencies: []
}) - 1;
}
var iTabKeys = this.sapPackages[iDevclass].dependencies.findIndex(o => o.tabname === d.tabname);
if (iTabKeys < 0) {
iTabKeys = this.sapPackages[iDevclass].dependencies.push({
tabname: d.tabname,
tabkey: []
}) - 1;
}
this.sapPackages[iDevclass].dependencies[iTabKeys].tabkey.push(tabkey);
}
}
return this;
});
}
addTableKey(table, key) {
return __awaiter(this, void 0, void 0, function* () {
var offset = 0;
var parsed = {};
table = table.trim().toUpperCase();
var definition = yield systemConnector_1.SystemConnector.getTableKeys(table);
definition = definition.sort((a, b) => Number(a.position) - Number(b.position));
if (!this.tables[table]) {
this.tables[table] = [];
}
definition.forEach(def => {
const len = Number(def.leng);
parsed[def.fieldname] = key.slice(offset, offset + len);
offset += len;
});
this.tables[table].push(parsed);
return parsed;
});
}
}
exports.ObjectDependencies = ObjectDependencies;