navidev-adt-api
Version:
API de conexión al Abap Developer Tools
126 lines (124 loc) • 6.44 kB
JavaScript
"use strict";
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());
});
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const Result_1 = require("../shared/core/Result");
const xmlParser_1 = __importDefault(require("../shared/utilities/parser/xmlParser"));
const transportConstants_1 = require("./transportConstants");
class TransportObjectApp {
constructor(connectionController) {
this.connectionController = connectionController;
}
/**
* Mover objecto de una orden/tarea a otra orden/tarea. Los datos del objeto son los que se
* recuperán al leer las ordenes del usuario
* @param object
* @param order
* @param newOrder
* @returns
*/
moveObject(object) {
return __awaiter(this, void 0, void 0, function* () {
const response = yield this.connectionController.request(`${transportConstants_1.TRANSPORT_URL.ORDER}/${object.oldOrder}/moveobjects`, {
method: "POST",
body: `
<?xml version="1.0" encoding="ASCII"?>
<tm:root xmlns:atom="http://www.w3.org/2005/Atom" xmlns:tm="http://www.sap.com/cts/adt/tm" tm:number="${object.newOrder}" tm:useraction="moveobjects">
<tm:request>
<tm:abap_object tm:dummy_uri="${encodeURIComponent(object.dummyUri)}" tm:lock_status="${object.lockStatus}" tm:name="${object.name}" tm:obj_desc="${object.objDesc}" tm:obj_info="${object.objInfo}" tm:pgmid="${object.pgmid}" tm:type="${object.type}" tm:wbtype="${object.wbtype}" tm:position="${object.position}" tm:img_activity="${object.imgActivity}">
<atom:link href="/sap/bc/adt/cts/transportrequests/${object.oldOrder}" rel="http://www.sap.com/cts/relations/removeobject" title="Transport Organizer Remove Locked Object" type="application/xml"/>
<atom:link href="/sap/bc/adt/cts/transportrequests/${object.oldOrder}/moveobjects" rel="http://www.sap.com/cts/relations/moveobjects" title="Transport Organizer Move Objects" type="application/xml"/>
</tm:abap_object>
</tm:request>
</tm:root>
`,
});
if (response.isSuccess) {
return Result_1.Result.ok(object);
}
else {
return Result_1.Result.fail(response.getErrorValue());
}
});
}
/**
* Borrado de un objeto de una orde o tarea. Los datos del objeto son los que se
* recuperán al leer las ordenes del usuario.
* @param object
* @param order
* @returns
*/
removeObject(object) {
return __awaiter(this, void 0, void 0, function* () {
const response = yield this.connectionController.request(`${transportConstants_1.TRANSPORT_URL.ORDER}/${object.order}`, {
method: "PUT",
body: `<?xml version="1.0" encoding="ASCII"?>
<tm:root xmlns:tm="http://www.sap.com/cts/adt/tm" tm:number="${object.order}" tm:useraction="removeobject">
<tm:request>
<tm:abap_object tm:name="${object.name}" tm:obj_desc="${object.objDesc}" tm:pgmid="${object.pgmid}" tm:type="${object.type}" tm:position="${object.position}"/>
</tm:request>
</tm:root>`,
});
if (response.isSuccess) {
return Result_1.Result.ok(Object.assign({}, object));
}
else {
return Result_1.Result.fail(response.getErrorValue());
}
});
}
/**
* Añade un objeto a una orden
* @param order Orden
* @param objectName Nombre del objeto
* @param objectType Tipo de objeto (ejemplo: PROG, CLAS,etc)
* @param programID Id del objeto(ejemplo:R3TR,LIMU,etc.)
* @returns
*/
AddObject(order, objectName, objectType, programID) {
return __awaiter(this, void 0, void 0, function* () {
const response = yield this.connectionController.request(`${transportConstants_1.TRANSPORT_URL.ORDER}/${order}`, {
method: "PUT",
body: `<?xml version="1.0" encoding="ASCII"?>
<tm:root xmlns:tm="http://www.sap.com/cts/adt/tm" tm:number="${order}" tm:useraction="addobject">
<tm:request>
<tm:abap_object tm:name="${objectName}" tm:pgmid="${objectType}" tm:type="${programID}"/>
</tm:request>
</tm:root>`,
});
if (response.isSuccess) {
let httpResponse = response.getValue();
let bodyParsed = xmlParser_1.default.fullParse(httpResponse.body);
return Result_1.Result.ok({
object: {
name: bodyParsed["tm:root"]["tm:request"]["tm:abap_object"]["@_tm:name"],
type: bodyParsed["tm:root"]["tm:request"]["tm:abap_object"]["@_tm:type"],
objInfo: "",
dummyUri: "",
wbtype: "",
pgmid: bodyParsed["tm:root"]["tm:request"]["tm:abap_object"]["@_tm:pgmid"],
imgActivity: bodyParsed["tm:root"]["tm:request"]["tm:abap_object"]["@_tm:img_activity"],
lockStatus: bodyParsed["tm:root"]["tm:request"]["tm:abap_object"]["@_tm:lock_status"],
objDesc: "",
position: 0,
},
order: order,
});
}
else {
return Result_1.Result.fail(response.getErrorValue());
}
});
}
}
exports.default = TransportObjectApp;