Creating a REST service with openedge and deploying in PAS server. The block of code; the class file: USING Progress.Lang.*. USING Progress.Json.ObjectModel.*. BLOCK-LEVEL ON ERROR UNDO, THROW. CLASS CA: /* Temp-tables*/ DEF TEMP-TABLE ttTree NO-UNDO FIELD SLNo AS INTEGER FIELD BatchName AS CHARACTER FIELD BatchID AS INTEGER FIELD ProgramName AS CHARACTER FIELD ProgramID AS INTEGER FIELD CallerProgram AS CHARACTER FIELD processed AS LOGICAL FIELD ReportGenerated AS LOGICAL INDEX SLNo SLNO INDEX ID BatchID ProgramID. DEF TEMP-TABLE ttBatchLog NO-UNDO FIELD ProgramID AS INTEGER FIELD NoOfLine AS INTEGER FIELD NoOfKeyWords AS INTEGER FIELD NoOfProgramCalled AS INTEGER FIELD NoOfReadWrite AS INTEGER INDEX LineID ProgramID . DEF TEMP-TABLE ttProgramDetails NO-UNDO FIELD SLNo AS INTEGER FIELD ProgramID AS INTEGER FIELD KeywordName AS CHARACTER FIELD KeywordUsed AS INTEGER FIELD KeyType AS CHARACTER INDEX SLNo ProgramID KeyType SLNO . DEFINE TEMP-TABLE ttError SERIALIZE-NAME "serverMessage" FIELD ErrorNum AS INTEGER SERIALIZE-NAME "Message#" FIELD RequestStatus AS CHARACTER SERIALIZE-NAME "Status" FIELD ErrorDescription AS CHARACTER SERIALIZE-NAME "Description". /*Define local Variable*/ DEF VAR FileData AS CHARACTER NO-UNDO. DEF VAR UnCommentedData AS CHARACTER NO-UNDO. DEF VAR localCounter AS INTEGER NO-UNDO. DEF VAR valCounter AS INTEGER NO-UNDO. DEF VAR ProgramSLNo AS INTEGER NO-UNDO. DEF VAR localFileName AS CHARACTER NO-UNDO. DEF VAR OriFileName AS CHARACTER NO-UNDO. DEF VAR ActualFileName AS CHARACTER NO-UNDO. DEF VAR NextChar AS CHARACTER NO-UNDO. DEF VAR vPass AS LOG NO-UNDO. DEF VAR counter AS INTEGER NO-UNDO. DEF VAR pathCounter AS INTEGER NO-UNDO. DEF VAR batchCounter AS INTEGER NO-UNDO. DEF VAR CharPointer AS INTEGER NO-UNDO. DEF VAR batFile AS CHARACTER NO-UNDO. DEF VAR sourceFileName AS CHARACTER NO-UNDO. DEF VAR PFFileName AS CHARACTER NO-UNDO. DEF VAR batchID AS INTEGER NO-UNDO. DEF VAR LineID AS INTEGER NO-UNDO. DEF VAR CallerID AS INTEGER NO-UNDO. DEF VAR DirectoryPath AS CHARACTER NO-UNDO. /*Data input from txt file*/ DEF VAR charData AS CHARACTER NO-UNDO. DEFINE STREAM s1. DEFINE STREAM s2. /* Data input from each bat file*/ DEF VAR batData AS CHARACTER NO-UNDO. /* populate keyword as a list from csv*/ DEF VAR ReadWriteList AS CHARACTER NO-UNDO. /*buffer*/ DEF BUFFER bufttTree FOR ttTree. CONSTRUCTOR CA(): EMPTY TEMP-TABLE ttTree . EMPTY TEMP-TABLE ttBatchLog. EMPTY TEMP-TABLE ttProgramDetails. EMPTY TEMP-TABLE ttError. END CONSTRUCTOR. DESTRUCTOR PUBLIC CA( ): EMPTY TEMP-TABLE ttTree . EMPTY TEMP-TABLE ttBatchLog. EMPTY TEMP-TABLE ttProgramDetails. EMPTY TEMP-TABLE ttError. END DESTRUCTOR. @openapi.openedge.export(type="REST", useReturnValue="false", writeDataSetBeforeImage="false"). METHOD PUBLIC VOID postCompanaRequest(INPUT ilcRequest AS LONGCHAR, OUTPUT oplcResponseData AS LONGCHAR, OUTPUT oplcErrorInfo AS LONGCHAR , OUTPUT opMessage AS CHAR ): DEFINE VARIABLE vlOk AS LOGICAL NO-UNDO. DEFINE VARIABLE myParam AS JsonObject NO-UNDO. DEFINE VARIABLE myParamData AS JsonArray NO-UNDO. DEFINE VARIABLE myInputJSONObj AS JsonObject NO-UNDO. DEFINE VARIABLE vchError AS CHARACTER NO-UNDO. DEFINE VARIABLE vinErrorNum AS INTEGER NO-UNDO. DEFINE VARIABLE oParser AS ObjectModelParser NO-UNDO. DEFINE VARIABLE jsonResponse AS JsonObject NO-UNDO. DEFINE VARIABLE vlcResponseData AS LONGCHAR NO-UNDO. DEFINE VARIABLE vlcSchemaInfo AS LONGCHAR NO-UNDO. DEFINE VARIABLE inFileName AS CHARACTER NO-UNDO. DEFINE VARIABLE inCsvFileName AS CHARACTER NO-UNDO. DEFINE VARIABLE inTogNoOfLine AS CHARACTER NO-UNDO. DEFINE VARIABLE inTogNoOfProgram AS CHARACTER NO-UNDO. DEFINE VARIABLE inTogNoOfKeyword AS CHARACTER NO-UNDO. DEFINE VARIABLE inTogNoOfReadWrite AS CHARACTER NO-UNDO. DEFINE VARIABLE inTogDisplayProgramDetail AS CHARACTER NO-UNDO. ilcRequest = REPLACE (ilcRequest, "%20", " "). ilcRequest = REPLACE (ilcRequest, "%22", '"'). /* OUTPUT TO "c:\users\514500\desktop\ilcRequest.txt". DISP 12 ilcRequest VIEW-AS EDITOR LARGE SIZE 50 BY 10. OUTPUT CLOSE. */ /* create responseObject -parameter */ oParser = NEW ObjectModelParser() NO-ERROR. myInputJSONObj = CAST(oParserarse(ilcRequest), JsonObject) NO-ERROR. IF ERROR-STATUS:ERROR THEN DO: UNDO , THROW NEW Progress.Lang.AppError(PROGRAM-NAME(1) + " : LINE NUMBER : " + "{&LINE-NUMBER}" + " : " + ERROR-STATUS:GET-MESSAGE (1) , 1 ). END. IF VALID-OBJECT (myInputJSONObj) THEN DO: myParam = myInputJSONObj:GetJsonObject("Parameters"). ASSIGN inFileName = (IF myParam:Has("FileName") THEN myParam:GetCharacter("FileName") ELSE "") inCsvFileName = (IF myParam:Has("CsvFileName") THEN myParam:GetCharacter("CsvFileName") ELSE "") inTogNoOfLine = (IF myParam:Has("TogNoOfLine") THEN myParam:GetCharacter("TogNoOfLine") ELSE "") inTogNoOfProgram = (IF myParam:Has("TogNoOfProgram") THEN myParam:GetCharacter("TogNoOfProgram") ELSE "") inTogNoOfKeyword = (IF myParam:Has("TogNoOfKeyword") THEN myParam:GetCharacter("TogNoOfKeyword") ELSE "") inTogNoOfReadWrite = (IF myParam:Has("TogNoOfReadWrite") THEN myParam:GetCharacter("TogNoOfReadWrite") ELSE "") inTogDisplayProgramDetail = (IF myParam:Has("TogDisplayProgramDetail") THEN myParam:GetCharacter("TogDisplayProgramDetail") ELSE ""). /* inFileName = REPLACE(inFileName,"|","\"). inCsvFileName = REPLACE(inCsvFileName,"|","\"). */ THIS-OBJECT:RunBatch(INPUT inFileName , INPUT inCsvFileName , INPUT LOGICAL(inTogNoOfLine) , INPUT LOGICAL(inTogNoOfProgram), INPUT LOGICAL(inTogNoOfKeyword), INPUT LOGICAL(inTogNoOfReadWrite), INPUT LOGICAL(inTogDisplayProgramDetail)) NO-ERROR. IF ERROR-STATUS:ERROR THEN DO: UNDO , THROW NEW Progress.Lang.AppError(PROGRAM-NAME(1) + " : LINE NUMBER : " + "{&LINE-NUMBER}" + " : " + ERROR-STATUS:GET-MESSAGE (1), 1 ). END. /* ELSE DO: jsonResponse = NEW Progress.Json.ObjectModel.JsonObject(). jsonResponse:ADD("outputdata", "File created successfully at C:\temp\Check.csv." ). jsonResponse:WRITE (OUTPUT oplcResponseData,TRUE) NO-ERROR. /* DISP 12 oplcResponseData VIEW-AS EDITOR LARGE SIZE 50 BY 10. */ END. */ END. CATCH ap AS Progress.Lang.AppError : ASSIGN vchError = ap:GetMessage(1) vinErrorNum = ap:GetMessageNum(1). END CATCH. CATCH e AS Progress.Lang.Error: ASSIGN vchError = e:GetMessage(1) vinErrorNum = e:GetMessageNum(1). END CATCH. FINALLY: oplcErrorInfo = "". oplcErrorInfo = THIS-OBJECT:getError(vchError, vinErrorNum). opMessage = IF vchError <> "" THEN TRIM(vchError) ELSE "Successfull". jsonResponse = NEW Progress.Json.ObjectModel.JsonObject(). IF vchError <> "" THEN jsonResponse:ADD("outputdata", ERROR-STATUS:GET-MESSAGE (1) ). ELSE DO: jsonResponse:ADD("outputdata", "File created successfully at C:\temp\Check.csv." ). /* TEMP-TABLE ttError:WRITE-JSON ("LONGCHAR", vlcErrorInfo, TRUE) .*/ END. jsonResponse:WRITE (OUTPUT oplcResponseData,TRUE) NO-ERROR. IF VALID-OBJECT (oParser) THEN DELETE OBJECT oParser NO-ERROR. IF VALID-OBJECT (myParam) THEN DELETE OBJECT myParam NO-ERROR. IF VALID-OBJECT (myParamData) THEN DELETE OBJECT myParamData NO-ERROR. IF VALID-OBJECT (myInputJSONObj) THEN DELETE OBJECT myInputJSONObj NO-ERROR. END FINALLY. END METHOD. METHOD PUBLIC LONGCHAR getError( INPUT ipchError AS CHARACTER, INPUT ipinErrorNum AS INTEGER ): DEFINE VARIABLE vlcErrorInfo AS LONGCHAR NO-UNDO. EMPTY TEMP-TABLE ttError. CREATE ttError. IF ipchError <> "" THEN DO: ASSIGN ttError.ErrorNum = ipinErrorNum ttError.RequestStatus = "Failure" ttError.ErrorDescription = ipchError. END. ELSE DO: ASSIGN ttError.ErrorNum = 0 ttError.RequestStatus = "Success" ttError.ErrorDescription = "Successfull Json Response". END. TEMP-TABLE ttError:WRITE-JSON ("LONGCHAR", vlcErrorInfo, TRUE) . RETURN vlcErrorInfo. CATCH e AS Progress.Lang.Error: END CATCH. FINALLY: END FINALLY. END METHOD. METHOD PUBLIC CHAR RemoveCommentProc ( INPUT inLine AS CHARACTER): DEFINE VAR outLine AS CHARACTER NO-UNDO. DEFINE VAR vcUncommentedData AS CHARACTER NO-UNDO. DEFINE VAR CharPointer AS INTEGER NO-UNDO. DEF VAR CommentStarted AS LOGICAL INITIAL NO NO-UNDO. ASSIGN vcUncommentedData = inLine. IF (INDEX(inLine,"/*") > 0 OR INDEX(inLine,"*/") > 0) OR CommentStarted THEN DO: ASSIGN vcUncommentedData = "". DO CharPointer = 1 TO LENGTH(inLine): IF SUBSTR(inLine,CharPointer,2) = "/*" THEN ASSIGN CommentStarted = YES. IF SUBSTR(inLine,CharPointer,2) = "*/" THEN ASSIGN CommentStarted = NO. IF CommentStarted = NO THEN ASSIGN vcUncommentedData = vcUncommentedData + SUBSTR(inLine,CharPointer,1). END. /*DO CharPointer = 1 TO LENGTH(charData)*/ ASSIGN outLine = vcUncommentedData. /* Assign the uncommented part of the line only*/ END. ASSIGN outLine = vcUncommentedData. RETURN outLine. END METHOD. Continue reading...