| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893 |
- /*------------------------------------------------------------------------
- File : dynamicformImplImpl
- Purpose :
- Syntax :
- Description :
- Author(s) : walter.riechsteiner
- Created : Wed Nov 19 13:23:38 CET 2025
- Notes :
- ----------------------------------------------------------------------*/
- BLOCK-LEVEL ON ERROR UNDO, THROW.
- USING OpenEdge.Core.String FROM PROPATH.
- USING OpenEdge.Net.HTTP.IHttpResponse FROM PROPATH.
- USING OpenEdge.Net.HTTP.StatusCodeEnum FROM PROPATH.
- USING OpenEdge.Web.IWebRequest FROM PROPATH.
- USING OpenEdge.Web.WebResponseWriter FROM PROPATH.
- USING OpenEdge.Web.WebHandler FROM PROPATH.
- USING Progress.Json.ObjectModel.ObjectModelParser FROM PROPATH.
- USING Progress.Json.ObjectModel.JsonObject FROM PROPATH.
- USING Progress.Json.ObjectModel.JsonArray FROM PROPATH.
- USING src.ch.adprime.gemis.WebHandlerUtilities FROM PROPATH.
- USING utilities.selectboxHandler FROM PROPATH.
- USING utilities.utilitiesHandler FROM PROPATH.
- CLASS admin.dynamicformImpl INHERITS WebHandler:
- DEFINE VARIABLE oResponse AS IHttpResponse NO-UNDO.
- DEFINE VARIABLE oWriter AS WebResponseWriter NO-UNDO.
- DEFINE VARIABLE oBody AS STRING NO-UNDO.
- DEFINE VARIABLE cDefautlCharSet AS CHARACTER NO-UNDO INIT 'UTF-8'.
- DEFINE VARIABLE oParser AS ObjectModelParser NO-UNDO.
- DEFINE VARIABLE cCorralationID AS CHARACTER NO-UNDO.
- DEFINE VARIABLE cContent-Type AS CHARACTER NO-UNDO.
- DEFINE VARIABLE lcJsonString AS LONGCHAR NO-UNDO.
- DEFINE VARIABLE oJsonActiveSelectBox AS JsonObject NO-UNDO.
- DEFINE VARIABLE oJsonMessageBox AS JsonObject NO-UNDO.
- DEFINE VARIABLE cString AS CHARACTER NO-UNDO.
- DEFINE VARIABLE lcString AS LONGCHAR NO-UNDO.
-
- DEFINE VARIABLE hError AS HANDLE NO-UNDO.
- DEFINE VARIABLE ccompany AS CHARACTER NO-UNDO.
- DEFINE VARIABLE cuser_name AS CHARACTER NO-UNDO.
- DEFINE VARIABLE cAnzeigeName AS CHARACTER NO-UNDO.
- DEFINE VARIABLE ilanguage_id AS INTEGER NO-UNDO.
- DEFINE VARIABLE cSessionToken AS CHARACTER NO-UNDO.
- DEFINE VARIABLE cFunction AS CHARACTER NO-UNDO.
- DEFINE VARIABLE cForm_Id AS CHARACTER NO-UNDO.
- DEFINE VARIABLE cProgram AS CHARACTER NO-UNDO.
- DEFINE VARIABLE cFormUser AS CHARACTER NO-UNDO.
- DEFINE VARIABLE cFormColumns AS CHARACTER NO-UNDO.
- DEFINE VARIABLE cUsers AS CHARACTER NO-UNDO INIT 'user,admin'.
- DEFINE VARIABLE lcMessage AS LONGCHAR NO-UNDO.
- DEFINE VARIABLE cErrorNo AS CHARACTER NO-UNDO.
- DEFINE VARIABLE cMaxHeight AS CHARACTER NO-UNDO.
- DEFINE VARIABLE iItemsPage AS INTEGER NO-UNDO.
- DEFINE VARIABLE cLogFile AS CHARACTER NO-UNDO.
- DEFINE VARIABLE hBuffer AS HANDLE NO-UNDO.
- DEFINE VARIABLE hField AS HANDLE NO-UNDO.
-
- DEFINE VARIABLE cMethode AS CHARACTER NO-UNDO.
- DEFINE VARIABLE cClass AS CHARACTER NO-UNDO.
- DEFINE VARIABLE rClass AS Progress.Lang.Class.
- DEFINE VARIABLE oHandler AS Progress.Lang.Object NO-UNDO.
-
- DEFINE VARIABLE lCompany AS LOGICAL NO-UNDO.
- DEFINE VARIABLE lActive AS LOGICAL NO-UNDO.
- DEFINE VARIABLE lWordindex AS LOGICAL NO-UNDO.
-
- DEFINE VARIABLE outilitiesHandler AS utilitiesHandler NO-UNDO.
- DEFINE VARIABLE oselectboxHandler AS selectboxHandler NO-UNDO.
- /*------------------------------------------------------------------------------
- Purpose:
- Notes:
- ------------------------------------------------------------------------------*/
- METHOD OVERRIDE PROTECTED INTEGER HandleDelete(INPUT poRequest AS IWebRequest):
-
- DEFINE VARIABLE oJsonResponse AS JsonObject NO-UNDO.
- DEFINE VARIABLE oJsonIdent AS JsonObject NO-UNDO.
- DEFINE VARIABLE oJsonBox AS JsonArray NO-UNDO.
- DEFINE VARIABLE oJsonData AS JsonObject NO-UNDO.
-
- DEFINE VARIABLE lRetVal AS LOGICAL NO-UNDO.
- DEFINE VARIABLE ii AS INTEGER NO-UNDO.
- DEFINE VARIABLE i1 AS INTEGER NO-UNDO.
- DEFINE VARIABLE cQueryString AS CHARACTER NO-UNDO.
- DEFINE VARIABLE cFileName AS CHARACTER NO-UNDO.
- DEFINE VARIABLE cClassName AS CHARACTER NO-UNDO.
- DEFINE VARIABLE cUser AS CHARACTER NO-UNDO.
-
- DEFINE VARIABLE oJsonResult AS JsonObject NO-UNDO.
- DEFINE VARIABLE oJsonMessage AS JsonObject NO-UNDO.
-
- lRetVal = WebHandlerUtilities:getJsonFromRequest(INPUT poRequest, OUTPUT oJsonData) NO-ERROR.
- cQueryString = STRING(poRequest:GetContextValue("QUERY_STRING")) NO-ERROR.
- cQueryString = OpenEdge.Net.URI:Decode(cQueryString).
-
- outilitiesHandler = NEW utilitiesHandler().
- hError = ERROR-STATUS:HANDLE.
-
- outilitiesHandler:getHeaderData(
- INPUT poRequest ,
- INPUT cQueryString ,
- OUTPUT ccompany ,
- OUTPUT cuser_name ,
- OUTPUT cAnzeigeName ,
- OUTPUT ilanguage_id ,
- OUTPUT cSessionToken,
- OUTPUT cFunction ,
- OUTPUT oJsonIdent
- ).
- MESSAGE 'DELETE mit function ' oJsonIdent:GetCharacter('function').
- //
- // mögliche Benutzer für das durchsuchen von HTML-Dokumenten und Labeltexten ...
- //
- cUser = oJsonIdent:GetCharacter('H_user_name') NO-ERROR.
- IF NOT ERROR-STATUS:ERROR AND LOOKUP(cUser, cUsers, ',') = 0 THEN cUsers = cUser + ',' + cUsers.
- cUser = oJsonIdent:GetCharacter('user_name') NO-ERROR.
- IF NOT ERROR-STATUS:ERROR AND LOOKUP(cUser, cUsers, ',') = 0 THEN cUsers = cUser + ',' + cUsers.
- //
- // Programmname aus den möglichen Benutzern ermitteln
- //
- lRetVal = FALSE.
- iItemsPage = 50.
- cMaxHeight = '250px'.
- cProgram = outilitiesHandler:getProgramName (
- INPUT oJsonIdent ,
- INPUT cUsers ,
- OUTPUT cFormUser ,
- OUTPUT cFormColumns,
- INPUT-OUTPUT iItemsPage ,
- INPUT-OUTPUT cMaxHeight
- ).
- oJsonIdent:ADD('program', cProgram) NO-ERROR.
- IF oJsonIdent:HAS('limit') THEN oJsonIdent:SET('limit', iItemsPage).
- ELSE oJsonIdent:ADD('limit', iItemsPage).
- // cLogFile = SUBSTITUTE('C:\TEMP\oJsonIdentDELETE_&1.json', REPLACE(STRING(TIME,'HH:MM:SS'), ':', '')).
- // oJsonIdent:WriteFile(cLogFile, TRUE).
-
- cForm_Id = oJsonIdent:GetCharacter('formId' ).
- cClassName = oJsonIdent:GetCharacter('class_name').
- cFileName = oJsonIdent:GetCharacter('file_name' ).
-
- FIND programs NO-LOCK
- WHERE programs.program_name = cProgram NO-ERROR.
- IF NOT AVAILABLE programs THEN LEAVE.
- cClass = programs.program_class.
- REPEAT TRANSACTION WHILE cFunction = 'delete' ON ERROR UNDO, LEAVE:
- rClass = Progress.Lang.Class:GetClass(cClass) NO-ERROR.
- cMethode = 'deleteData'.
- oHandler = rClass:NEW().
- lRetVal = DYNAMIC-INVOKE ( oHandler, cMethode,
- INPUT oJsonIdent ,
- INPUT oJsonData ,
- OUTPUT oJsonResult
- ) NO-ERROR.
- outilitiesHandler:evaluateErrorStatus(hError).
- IF NOT lRetVal THEN LEAVE.
-
- oJsonResult:WRITE(LcJsonString, FALSE).
- // oJsonResult:WriteFile('C:\TEMP\DYNAMIC_DELETE_Respons.json', TRUE).
- LEAVE.
- END.
-
- oResponse = NEW OpenEdge.Web.WebResponse().
- oResponse:StatusCode = INTEGER(StatusCodeEnum:OK).
- oResponse:ContentType = "application/json;charset=utf-8".
- oWriter = NEW WebResponseWriter(oResponse).
-
- IF NOT lRetVal THEN
- DO:
- oJsonMessage = NEW JsonObject().
- oJsonMessage:ADD('success', FALSE).
- oJsonMessage:ADD('message', 'Fehler beim DELETE').
- oJsonMessage:WRITE(lcJsonString, FALSE).
- END.
-
- oWriter:Open().
- oWriter:Write(lcJsonString).
- oWriter:Close().
-
- RETURN 0.
-
- CATCH e AS Progress.Lang.Error:
-
- END CATCH.
-
- FINALLY:
- DELETE OBJECT oHandler NO-ERROR.
- DELETE OBJECT oJsonMessage NO-ERROR.
- DELETE OBJECT oResponse NO-ERROR.
- DELETE OBJECT oWriter NO-ERROR.
- END FINALLY.
- END METHOD.
-
- /*------------------------------------------------------------------------------
- Purpose:
- Notes:
- ------------------------------------------------------------------------------*/
- METHOD OVERRIDE PROTECTED INTEGER HandleGet (INPUT poRequest AS IWebRequest ):
-
- DEFINE VARIABLE oJsonResponse AS JsonObject NO-UNDO.
- DEFINE VARIABLE oJsonIdent AS JsonObject NO-UNDO.
- DEFINE VARIABLE oJsonSelectBoxes AS JsonObject NO-UNDO.
- DEFINE VARIABLE oJsonBox AS JsonArray NO-UNDO.
- DEFINE VARIABLE oJsonData AS JsonObject NO-UNDO.
-
- DEFINE VARIABLE lRetVal AS LOGICAL NO-UNDO.
- DEFINE VARIABLE ii AS INTEGER NO-UNDO.
- DEFINE VARIABLE i1 AS INTEGER NO-UNDO.
- DEFINE VARIABLE cQueryString AS CHARACTER NO-UNDO.
- DEFINE VARIABLE cFileName AS CHARACTER NO-UNDO.
- DEFINE VARIABLE cFieldName AS CHARACTER NO-UNDO.
- DEFINE VARIABLE cClassName AS CHARACTER NO-UNDO.
- DEFINE VARIABLE cActiveSelection AS CHARACTER NO-UNDO.
- DEFINE VARIABLE cUser AS CHARACTER NO-UNDO.
- DEFINE VARIABLE lcQueryString AS CHARACTER NO-UNDO.
- DEFINE VARIABLE lSendChange AS LOGICAL NO-UNDO.
-
- DEFINE VARIABLE oJsonResult AS JsonObject NO-UNDO.
- DEFINE VARIABLE httBuffer AS HANDLE NO-UNDO.
- cQueryString = STRING(poRequest:GetContextValue("QUERY_STRING")) NO-ERROR.
- cQueryString = OpenEdge.Net.URI:Decode(cQueryString).
-
- outilitiesHandler = NEW utilitiesHandler().
- hError = ERROR-STATUS:HANDLE.
-
- outilitiesHandler:getHeaderData(
- INPUT poRequest ,
- INPUT cQueryString ,
- OUTPUT ccompany ,
- OUTPUT cuser_name ,
- OUTPUT cAnzeigeName ,
- OUTPUT ilanguage_id ,
- OUTPUT cSessionToken,
- OUTPUT cFunction ,
- OUTPUT oJsonIdent
- ).
- oJsonIdent:WRITE(lcString, TRUE).
- cString = lcString.
- MESSAGE 'GET mit function ' oJsonIdent:GetCharacter('function').
- //
- // mögliche Benutzer für das durchsuchen von HTML-Dokumenten und Labeltexten ...
- //
- cUser = oJsonIdent:GetCharacter('H_user_name') NO-ERROR.
- IF NOT ERROR-STATUS:ERROR AND LOOKUP(cUser, cUsers, ',') = 0 THEN cUsers = cUser + ',' + cUsers.
- cUser = oJsonIdent:GetCharacter('user_name') NO-ERROR.
- IF NOT ERROR-STATUS:ERROR AND LOOKUP(cUser, cUsers, ',') = 0 THEN cUsers = cUser + ',' + cUsers.
- lRetVal = FALSE.
- MASTERLOOP:
- DO WHILE TRUE:
- //
- // Programmname aus den möglichen Benutzern ermitteln
- //
- iItemsPage = 50.
- cMaxHeight = '250px'.
- cProgram = outilitiesHandler:getProgramName (
- INPUT oJsonIdent ,
- INPUT cUsers ,
- OUTPUT cFormUser ,
- OUTPUT cformColumns,
- INPUT-OUTPUT iItemsPage ,
- INPUT-OUTPUT cMaxHeight
- ).
- IF cProgram = '' THEN
- DO:
- cString = oJsonIdent:GetCharacter('formId').
- outilitiesHandler:createErrorBox(
- INPUT oJsonIdent ,
- INPUT '2001' ,
- INPUT cString, /* Parameters */
- OUTPUT oJsonMessageBox
- ).
- LEAVE.
- END.
- oJsonIdent:ADD('program' , cProgram ).
- oJsonIdent:ADD('itemsPerPage' , iItemsPage).
- oJsonIdent:ADD('tableMaxHeight', cMaxHeight).
- oJsonIdent:ADD('formUser' , cFormUser ).
-
- cErrorNo = ''.
- cForm_Id = oJsonIdent:GetCharacter("formId" ) NO-ERROR.
- cFileName = oJsonIdent:GetCharacter("file_name" ) NO-ERROR.
- cClassName = oJsonIdent:GetCharacter("class_name") NO-ERROR.
- // MESSAGE 'cProgram =' cProgram.
- FIND programs NO-LOCK
- WHERE programs.program_name = cProgram NO-ERROR.
- IF NOT AVAILABLE programs THEN LEAVE.
- cClass = programs.program_class.
- lSendChange = programs.sendChangeRecord.
- //
- // active-Feld-Filter ermitten
- //
- IF cFunction <> 'saveActiveFilter' THEN
- DO:
- outilitiesHandler:getActiveSelection(
- INPUT oJsonIdent ,
- INPUT cFileName ,
- OUTPUT cActiveSelection
- ).
- IF cActiveSelection <> '' THEN
- DO:
- IF NOT oJsonIdent:HAS('activeFilter') THEN oJsonIdent:ADD('activeFilter', cActiveSelection ).
- ELSE oJsonIdent:SET('activeFilter', cActiveSelection ).
- END.
- END.
- DO WHILE cFunction = 'init' AND cProgram <> '':
- //
- // wenn die Tabelle(File) das Feld active enthält, soll der activeFilter activiert werden
- //
- CREATE BUFFER hBuffer FOR TABLE cFilename NO-ERROR.
- hField = hBuffer:BUFFER-FIELD('active') NO-ERROR.
- IF NOT ERROR-STATUS:ERROR AND
- VALID-HANDLE(hField) THEN lActive = TRUE.
- hField = hBuffer:BUFFER-FIELD('wordindex') NO-ERROR.
- IF NOT ERROR-STATUS:ERROR AND
- VALID-HANDLE(hField) THEN lWordIndex = TRUE.
- DELETE OBJECT hBuffer.
- //
- // Alle Felder, welche als Selectboxen definiert sind, füllen
- //
- oselectboxHandler = NEW selectboxHandler().
- oJsonSelectBoxes = NEW JsonObject().
- FOR EACH selectboxfields NO-LOCK
- WHERE selectboxfields.company = ccompany
- AND selectboxfields.program = cform_id
- AND selectboxfields.user_name = cFormUser
- AND selectboxfields.boxfieldsFix <> '':
- DO ii = 1 TO NUM-ENTRIES(selectboxfields.boxfieldsFix, ';'):
- cFieldName = ENTRY(ii, selectboxfields.boxfieldsFix, ';').
- cFileName = ENTRY(1, cFieldName, '_').
- IF cFieldName MATCHES('*company*') THEN
- DO:
- oJsonBox = NEW JsonArray().
- httBuffer = oSelectboxHandler:getSelboxCompany(INPUT cFileName).
- httBuffer:WRITE-JSON ('JsonArray', oJsonBox).
- oJsonSelectBoxes:ADD(cFieldName, oJsonBox).
- NEXT.
- END.
-
- IF cFieldName MATCHES('*language_id*') THEN
- DO:
- oJsonBox = NEW JsonArray().
- httBuffer = oSelectboxHandler:getSelboxLanguage(INPUT cFileName) NO-ERROR.
- httBuffer:WRITE-JSON ('JsonArray', oJsonBox) NO-ERROR.
- oJsonSelectBoxes:ADD(cFieldName, oJsonBox) NO-ERROR.
- NEXT.
- END.
-
- IF cFieldName MATCHES('*user_name*') THEN
- DO:
- oJsonBox = NEW JsonArray().
- httBuffer = oSelectboxHandler:getSelboxUsers(INPUT cFileName).
- httBuffer:WRITE-JSON ('JsonArray', oJsonBox).
- oJsonSelectBoxes:ADD(cFieldName, oJsonBox).
- NEXT.
- END.
-
- IF cFieldName MATCHES('*table_name*') THEN
- DO:
- oJsonBox = NEW JsonArray().
- httBuffer = oSelectboxHandler:getSelboxTables(INPUT cFileName).
- httBuffer:WRITE-JSON ('JsonArray', oJsonBox).
- oJsonSelectBoxes:ADD(cFieldName, oJsonBox).
- NEXT.
- END.
-
- oselectboxHandler:getSelectBoxData(
- INPUT oJsonIdent,
- INPUT cFieldName,
- OUTPUT oJsonBox
- ).
- // oJsonBox:WriteFile('C:\TEMP\JsonBox.json', TRUE).
- oJsonSelectBoxes:ADD(cFieldName, oJsonBox).
- // oJsonSelectBoxes:WriteFile(SUBSTITUTE('C:\TEMP\&1_JsonSelectBoxes.json', cFilename), TRUE).
-
- END.
- END.
- oJsonResponse = NEW JsonObject().
- oJsonResponse:ADD('selectOptionsFix', oJsonSelectBoxes).
- oJsonResponse:ADD('tableMaxHeight' , cMaxHeight ).
- oJsonResponse:ADD('itemsPerPage' , iItemsPage ).
- oJsonResponse:ADD('formColumns' , cFormColumns ).
- oJsonResponse:ADD('lSearch' , lWordIndex ).
- oJsonResponse:ADD('hasRecordChange' , lSendChange ).
- //
- // Wenn die Tabelle das Feld active hat, wird die SelectBox für den activ-Filter gefüllt
- //
- IF lActive THEN
- DO:
- oJsonResponse:ADD("activeFilter" , cActiveSelection).
- oJsonResponse:ADD("hasActiveField" , lActive ).
-
- oJsonActiveSelectBox = NEW JsonObject().
- FOR EACH labeltexte NO-LOCK
- WHERE labeltexte.company = ccompany
- AND labeltexte.user_name = cFormUser
- AND labeltexte.program = 'Labels'
- AND labeltexte.table_name = 'table'
- AND labeltexte.field_name BEGINS 'LBL_FILTER'
- AND labeltexte.language_id = ilanguage_id :
- oJsonActiveSelectBox:ADD(CAPS(labeltexte.field_name), labeltexte.headlabel).
- END.
- oJsonResponse:ADD('activeFilterLabels', oJsonActiveSelectBox).
- END.
- //
- // Sortfelder auf start (keine Felder) stellen.
- //
- outilitiesHandler:writeSortfields(
- INPUT oJsonIdent ,
- INPUT cFileName ,
- INPUT '' , // cSortField
- INPUT '' // cDirection
- ) NO-ERROR.
-
- lRetVal = TRUE.
- // oJsonResponse:WriteFile('C:\Temp\dynamicform_init_response.json', TRUE).
- LEAVE.
- END.
-
- DO WHILE cFunction = 'loaddata' AND cProgram <> '':
- MESSAGE 'loaddata start'.
- oJsonIdent:WriteFile('C:\Temp\loaddat_jsonident.json', TRUE).
- IF oJsonIdent:HAS('sortField') THEN
- DO:
- DEFINE VARIABLE cSortField AS CHARACTER NO-UNDO.
- DEFINE VARIABLE cDirection AS CHARACTER NO-UNDO.
-
- cSortField = oJsonIdent:GetCharacter('sortField').
- cDirection = oJsonIdent:GetCharacter('sortDirection').
- outilitiesHandler:writeSortfields(
- INPUT oJsonIdent ,
- INPUT cFileName ,
- INPUT cSortField ,
- INPUT cDirection
- ).
- END.
- rClass = Progress.Lang.Class:GetClass(cClass) NO-ERROR.
- cMethode = 'getData'.
- oHandler = rClass:NEW().
- lRetVal = DYNAMIC-INVOKE ( oHandler, cMethode,
- INPUT oJsonIdent ,
- OUTPUT oJsonResponse
- ) NO-ERROR.
- outilitiesHandler:evaluateErrorStatus(INPUT hError).
-
- // oJsonResponse:WriteFile(SUBSTITUTE('C:\TEMP\Loaddata_response_&1.json', oJsonIdent:GetCharacter('page')), TRUE).
- // oJsonResponse:ADD('selectOptionsFix', oJsonSelectBoxes).
- lRetVal = TRUE.
- LEAVE.
- END.
- DO WHILE cFunction = 'rebuild':
- rClass = Progress.Lang.Class:GetClass(cClass).
- cMethode = 'rebuildData'.
- oHandler = rClass:NEW().
-
- lRetVal = DYNAMIC-INVOKE ( oHandler, cMethode,
- INPUT oJsonIdent ,
- OUTPUT oJsonResult
- ) NO-ERROR.
- IF outilitiesHandler:evaluateErrorStatus(hError) THEN lRetVal = FALSE.
- IF NOT lRetVal THEN
- DO:
- outilitiesHandler:getErrorMessage(
- INPUT '2009' ,
- INPUT ilanguage_id ,
- INPUT '',
- OUTPUT lcMessage).
- oJsonResponse = NEW JsonObject().
- oJsonResponse:ADD('success', FALSE).
- oJsonResponse:ADD('message', lcMessage).
- oJsonResponse:WRITE(lcJsonString, FALSE).
- END.
-
- // oJsonResponse = NEW JsonObject().
- // oJsonResponse:ADD('selectOptionsFix', oJsonSelectBoxes).
-
- oJsonResponse = oJsonResult.
- oJsonResponse:WriteFile(SUBSTITUTE('C:\TEMP\rebuild_&1.json', cFileName), TRUE).
- lRetVal = TRUE.
- LEAVE.
- END.
-
- DO WHILE cFunction = 'saveActiveFilter':
- cActiveSelection = oJsonIdent:GetCharacter('activeFilter').
- MESSAGE cFunction '-' cActiveSelection.
- outilitiesHandler:setActiveSelection(
- INPUT oJsonIdent ,
- INPUT cFileName ,
- INPUT cActiveSelection
- ).
-
- oJsonResponse = NEW JsonObject().
- oJsonResponse:ADD('success', TRUE).
- // oJsonResponse:WRITE(lcJsonString, FALSE).
-
- lRetVal = TRUE.
- LEAVE.
- END.
-
- DO WHILE cFunction = 'lookup' AND cProgram <> '':
- cMethode = oJsonIdent:GetCharacter('lookupField') NO-ERROR.
- cMethode = REPLACE(cMethode, cFileName + '_', '').
- cClass = 'utilities.lookupHandler'.
-
- ASSIGN
- rClass = Progress.Lang.Class:GetClass(cClass) NO-ERROR.
- oHandler = rClass:NEW() NO-ERROR.
- lRetVal = DYNAMIC-INVOKE ( oHandler, cMethode,
- INPUT oJsonIdent ,
- OUTPUT oJsonResult
- ) NO-ERROR.
- outilitiesHandler:evaluateErrorStatus(hError).
- oJsonResponse = oJsonResult.
- LEAVE.
- END.
-
- LEAVE.
- END.
- IF NOT lRetVal THEN
- DO:
- lcString = oJsonMessageBox:GetLongchar('text').
- oJsonResponse = NEW JsonObject().
- oJsonResponse:ADD('success', FALSE).
- oJsonResponse:ADD('message', lcString).
- oJsonResponse:ADD('showMessage', oJsonMessageBox).
- END.
- oJsonResponse:WRITE(lcJsonString, FALSE).
- cContent-Type = "application/json".
- cDefautlCharSet = 'utf-8'.
- oBody = NEW STRING(lcJsonString) NO-ERROR.
- outilitiesHandler:evaluateErrorStatus(hError).
- WebHandlerUtilities:createHttpResponse(INPUT INTEGER(StatusCodeEnum:OK), INPUT oBody, INPUT cContent-Type, INPUT cDefautlCharSet, INPUT cCorralationID, OUTPUT oResponse) NO-ERROR.
- outilitiesHandler:evaluateErrorStatus(hError).
- // oResponse:SetHeader(HttpHeaderBuilder:Build(cHeaderCorralationID):Value(cCorralationID):Header).
-
- oWriter = NEW WebResponseWriter(oResponse) NO-ERROR.
- outilitiesHandler:evaluateErrorStatus(hError).
- oWriter:Open() NO-ERROR.
- outilitiesHandler:evaluateErrorStatus(hError).
- oWriter:Close().
- RETURN 0.
-
- CATCH e AS Progress.Lang.Error:
- END CATCH.
- FINALLY:
- DELETE OBJECT oHandler NO-ERROR.
- DELETE OBJECT oSelectBoxHandler NO-ERROR.
- DELETE OBJECT oResponse NO-ERROR.
- DELETE OBJECT oWriter NO-ERROR.
- DELETE OBJECT oJsonSelectBoxes NO-ERROR.
- DELETE OBJECT oJsonBox NO-ERROR.
- DELETE OBJECT oParser NO-ERROR.
- DELETE OBJECT oJsonData NO-ERROR.
- DELETE OBJECT oJsonResponse NO-ERROR.
- END FINALLY.
- END METHOD.
- /*------------------------------------------------------------------------------
- Purpose:
- Notes:
- ------------------------------------------------------------------------------*/
- METHOD OVERRIDE PROTECTED INTEGER HandlePost(INPUT poRequest AS IWebRequest):
-
- DEFINE VARIABLE oJsonResponse AS JsonObject NO-UNDO.
- DEFINE VARIABLE oJsonIdent AS JsonObject NO-UNDO.
- DEFINE VARIABLE oJsonBox AS JsonArray NO-UNDO.
- DEFINE VARIABLE oJsonData AS JsonObject NO-UNDO.
-
- DEFINE VARIABLE lRetVal AS LOGICAL NO-UNDO.
- DEFINE VARIABLE ii AS INTEGER NO-UNDO.
- DEFINE VARIABLE i1 AS INTEGER NO-UNDO.
- DEFINE VARIABLE cQueryString AS CHARACTER NO-UNDO.
- DEFINE VARIABLE cFileName AS CHARACTER NO-UNDO.
- DEFINE VARIABLE cClassName AS CHARACTER NO-UNDO.
- DEFINE VARIABLE cUser AS CHARACTER NO-UNDO.
- DEFINE VARIABLE cString AS CHARACTER NO-UNDO.
- DEFINE VARIABLE lSendChange AS LOGICAL NO-UNDO.
-
- DEFINE VARIABLE oJsonResult AS JsonObject NO-UNDO.
- DEFINE VARIABLE oJsonMessage AS JsonObject NO-UNDO.
- lRetVal = WebHandlerUtilities:getJsonFromRequest(INPUT poRequest, OUTPUT oJsonData) NO-ERROR.
- // oJsonData:WriteFile('C:\Temp\oJsonData_Post_Data.json', TRUE).
- cQueryString = STRING(poRequest:GetContextValue("QUERY_STRING")) NO-ERROR.
- cQueryString = OpenEdge.Net.URI:Decode(cQueryString).
-
- outilitiesHandler = NEW utilitiesHandler().
- hError = ERROR-STATUS:HANDLE.
-
- outilitiesHandler:getHeaderData(
- INPUT poRequest ,
- INPUT cQueryString ,
- OUTPUT ccompany ,
- OUTPUT cuser_name ,
- OUTPUT cAnzeigeName ,
- OUTPUT ilanguage_id ,
- OUTPUT cSessionToken,
- OUTPUT cFunction ,
- OUTPUT oJsonIdent
- ).
- MESSAGE 'POST mit function ' oJsonIdent:GetCharacter('function').
- oJsonIdent:WRITE(lcJsonString, TRUE).
- //
- // mögliche Benutzer für das durchsuchen von HTML-DOkumenten und Labeltexten ...
- //
- cUser = oJsonIdent:GetCharacter('H_user_name') NO-ERROR.
- IF NOT ERROR-STATUS:ERROR AND LOOKUP(cUser, cUsers, ',') = 0 THEN cUsers = cUser + ',' + cUsers.
- cUser = oJsonIdent:GetCharacter('user_name') NO-ERROR.
- IF NOT ERROR-STATUS:ERROR AND LOOKUP(cUser, cUsers, ',') = 0 THEN cUsers = cUser + ',' + cUsers.
- //
- // Programmname aus den möglichen Benutzern ermitteln
- //
- lRetVal = FALSE.
- iItemsPage = 50.
- cMaxHeight = '250px'.
- cProgram = outilitiesHandler:getProgramName (
- INPUT oJsonIdent ,
- INPUT cUsers ,
- OUTPUT cFormUser ,
- OUTPUT cformColumns,
- INPUT-OUTPUT iItemsPage ,
- INPUT-OUTPUT cMaxHeight
- ).
- IF cProgram = '' THEN
- DO:
- cString = oJsonIdent:GetCharacter('formId').
- outilitiesHandler:createErrorBox(
- INPUT oJsonIdent ,
- INPUT '2001' ,
- INPUT cString, /* Parameters */
- OUTPUT oJsonMessageBox
- ).
- LEAVE.
- END.
- oJsonIdent:ADD('program' , cProgram ).
- oJsonIdent:ADD('itemsPerPage' , iItemsPage).
- oJsonIdent:ADD('tableMaxHeight', cMaxHeight).
- oJsonIdent:ADD('formUser' , cFormUser ).
- IF oJsonIdent:HAS('limit') THEN oJsonIdent:SET('limit', iItemsPage).
- ELSE oJsonIdent:ADD('limit', iItemsPage).
-
- cForm_Id = oJsonIdent:GetCharacter('formId' ).
- cClassName = oJsonIdent:GetCharacter('class_name').
- cFileName = oJsonIdent:GetCharacter('file_name' ).
-
- FIND programs NO-LOCK
- WHERE programs.program_name = cProgram NO-ERROR.
- IF NOT AVAILABLE programs THEN LEAVE.
- cClass = programs.program_class.
- lSendChange = programs.sendChangeRecord.
-
- DO WHILE cFunction = 'change':
- cMethode = oJsonData:GetCharacter('changeAction').
- oJsonIdent:ADD('changeAction', cMethode).
- MESSAGE 'cFunction =' cFunction ' - Methode =' cMethode.
- rClass = Progress.Lang.Class:GetClass(cClass) NO-ERROR.
- oHandler = rClass:NEW().
- lRetVal = DYNAMIC-INVOKE (oHandler, cMethode,
- INPUT oJsonIdent ,
- INPUT oJsonData ,
- OUTPUT oJsonResult
- ) NO-ERROR.
- lRetVal = (IF outilitiesHandler:evaluateErrorStatus(hError) THEN FALSE ELSE TRUE).
- // oJsonResult:WriteFile('C:\TEMP\DYNAMIC_CHANGE_Respons.json', TRUE).
- LEAVE.
- END.
- REPEAT TRANSACTION WHILE cFunction = 'create' ON ERROR UNDO, LEAVE:
- rClass = Progress.Lang.Class:GetClass(cClass) NO-ERROR.
- cMethode = 'createData'.
- oHandler = rClass:NEW().
- lRetVal = DYNAMIC-INVOKE (oHandler, cMethode,
- INPUT oJsonIdent ,
- INPUT oJsonData ,
- OUTPUT oJsonResult
- ) NO-ERROR.
- lRetVal = (IF outilitiesHandler:evaluateErrorStatus(hError) THEN FALSE ELSE TRUE).
- // oJsonResult:WriteFile('C:\TEMP\DYNAMIC_CREATE_Respons.json', TRUE).
- LEAVE.
- END.
-
- oResponse = NEW OpenEdge.Web.WebResponse().
- oResponse:StatusCode = INTEGER(StatusCodeEnum:OK).
- oResponse:ContentType = "application/json;charset=utf-8".
-
- IF NOT lRetVal THEN
- DO:
- oJsonMessage = NEW JsonObject().
- oJsonMessage:ADD('success', FALSE).
- oJsonMessage:ADD('message', oJsonResult:GetLongchar('message')).
- oJsonMessage:WRITE(lcJsonString, FALSE).
- END.
- ELSE
- DO:
- oJsonResult:WRITE(lcJsonString, FALSE).
- // oJsonResult:WriteFile(SUBSTITUTE('C:\TEMP\DYNAMIC_&1_Respons.json', cFunction), TRUE).
- END.
- // MESSAGE 'Rueckmeldung beim POST ' cFunction STRING(lcJsonString).
-
- oWriter = NEW WebResponseWriter(oResponse).
- oWriter:Open().
- oWriter:Write(lcJsonString).
- oWriter:Close().
-
- RETURN 0.
-
- CATCH e AS Progress.Lang.Error:
-
- END CATCH.
-
- FINALLY:
- DELETE OBJECT oJsonMessage NO-ERROR.
- DELETE OBJECT oResponse NO-ERROR.
- DELETE OBJECT oWriter NO-ERROR.
- DELETE OBJECT oJsonResult NO-ERROR.
- END FINALLY.
- END METHOD.
-
- /*------------------------------------------------------------------------------
- Purpose:
- Notes:
- ------------------------------------------------------------------------------*/
- METHOD OVERRIDE PROTECTED INTEGER HandlePatch(INPUT poRequest AS IWebRequest):
-
- DEFINE VARIABLE oJsonResponse AS JsonObject NO-UNDO.
- DEFINE VARIABLE oJsonIdent AS JsonObject NO-UNDO.
- DEFINE VARIABLE oJsonBox AS JsonArray NO-UNDO.
- DEFINE VARIABLE oJsonData AS JsonObject NO-UNDO.
-
- DEFINE VARIABLE lRetVal AS LOGICAL NO-UNDO.
- DEFINE VARIABLE ii AS INTEGER NO-UNDO.
- DEFINE VARIABLE i1 AS INTEGER NO-UNDO.
- DEFINE VARIABLE cQueryString AS CHARACTER NO-UNDO.
- DEFINE VARIABLE cFileName AS CHARACTER NO-UNDO.
- DEFINE VARIABLE cClassName AS CHARACTER NO-UNDO.
- DEFINE VARIABLE cUser AS CHARACTER NO-UNDO.
-
- DEFINE VARIABLE oJsonResult AS JsonObject NO-UNDO.
- DEFINE VARIABLE oJsonMessage AS JsonObject NO-UNDO.
-
- lRetVal = WebHandlerUtilities:getJsonFromRequest(INPUT poRequest, OUTPUT oJsonData) NO-ERROR.
- cQueryString = STRING(poRequest:GetContextValue("QUERY_STRING")) NO-ERROR.
- cQueryString = OpenEdge.Net.URI:Decode(cQueryString).
-
- outilitiesHandler = NEW utilitiesHandler().
- hError = ERROR-STATUS:HANDLE.
-
- outilitiesHandler:getHeaderData(
- INPUT poRequest ,
- INPUT cQueryString ,
- OUTPUT ccompany ,
- OUTPUT cuser_name ,
- OUTPUT cAnzeigeName ,
- OUTPUT ilanguage_id ,
- OUTPUT cSessionToken,
- OUTPUT cFunction ,
- OUTPUT oJsonIdent
- ).
- MESSAGE 'PATCH mit function ' oJsonIdent:GetCharacter('function').
- //
- // mögliche Benutzer für das durchsuchen von HTML-Dokumenten und Labeltexten ...
- //
- cUser = oJsonIdent:GetCharacter('H_user_name') NO-ERROR.
- IF NOT ERROR-STATUS:ERROR AND LOOKUP(cUser, cUsers, ',') = 0 THEN cUsers = cUser + ',' + cUsers.
- cUser = oJsonIdent:GetCharacter('user_name') NO-ERROR.
- IF NOT ERROR-STATUS:ERROR AND LOOKUP(cUser, cUsers, ',') = 0 THEN cUsers = cUser + ',' + cUsers.
- //
- // Programmname aus den möglichen Benutzern ermitteln
- //
- lRetVal = FALSE.
- iItemsPage = 50.
- cMaxHeight = '250px'.
- cProgram = outilitiesHandler:getProgramName (
- INPUT oJsonIdent ,
- INPUT cUsers ,
- OUTPUT cFormUser ,
- OUTPUT cFormColumns,
- INPUT-OUTPUT iItemsPage ,
- INPUT-OUTPUT cMaxHeight
- ).
- oJsonIdent:ADD('program', cProgram) NO-ERROR.
- cForm_Id = oJsonIdent:GetCharacter('formId' ).
- cClassName = oJsonIdent:GetCharacter('class_name').
- cFileName = oJsonIdent:GetCharacter('file_name' ).
-
- FIND programs NO-LOCK
- WHERE programs.program_name = cProgram NO-ERROR.
- IF NOT AVAILABLE programs THEN LEAVE.
- cClass = programs.program_class.
- REPEAT TRANSACTION WHILE cFunction = 'update' ON ERROR UNDO, LEAVE:
- rClass = Progress.Lang.Class:GetClass(cClass) NO-ERROR.
- cMethode = 'updateData'.
- oHandler = rClass:NEW().
- lRetVal = DYNAMIC-INVOKE ( oHandler, cMethode,
- INPUT oJsonIdent ,
- INPUT oJsonData ,
- OUTPUT oJsonResult
- ) NO-ERROR.
- IF lRetVal THEN LEAVE.
-
- outilitiesHandler:evaluateErrorStatus(hError).
- LEAVE.
- END.
-
- oResponse = NEW OpenEdge.Web.WebResponse().
- oResponse:StatusCode = INTEGER(StatusCodeEnum:OK).
- oResponse:ContentType = "application/json;charset=utf-8".
-
- oJsonResult:WRITE(lcJsonString, FALSE).
- // oJsonResult:WriteFile(SUBSTITUTE('C:\TEMP\DYNAMIC_&1_Respons.json', cFunction), TRUE).
-
- oWriter = NEW WebResponseWriter(oResponse).
- oWriter:Open().
- oWriter:Write(lcJsonString).
- oWriter:Close().
-
- RETURN 0.
-
- CATCH e AS Progress.Lang.Error:
-
- END CATCH.
-
- FINALLY:
- DELETE OBJECT oJsonMessage NO-ERROR.
- DELETE OBJECT oWriter NO-ERROR.
- DELETE OBJECT oResponse NO-ERROR.
- DELETE OBJECT oHandler NO-ERROR.
- END FINALLY.
- END METHOD.
-
-
- METHOD OVERRIDE PROTECTED INTEGER HandleNotAllowedMethod(INPUT poRequest AS IWebRequest):
- DEFINE VARIABLE result AS INTEGER NO-UNDO.
- MESSAGE "HandleNotAllowedMethod called" VIEW-AS ALERT-BOX.
- RETURN result.
- END METHOD.
- METHOD OVERRIDE PROTECTED INTEGER HandleNotImplemented(INPUT poRequest AS IWebRequest):
- DEFINE VARIABLE result AS INTEGER NO-UNDO.
- MESSAGE "HandleNotImplemented called" VIEW-AS ALERT-BOX.
- RETURN result.
- END METHOD.
- DESTRUCTOR PUBLIC dynamicformImpl ( ):
- END DESTRUCTOR.
- END CLASS.
|