|
@@ -21,46 +21,56 @@ USING OpenEdge.Web.WebHandler FROM PROPATH.
|
|
|
USING Progress.Json.ObjectModel.ObjectModelParser FROM PROPATH.
|
|
USING Progress.Json.ObjectModel.ObjectModelParser FROM PROPATH.
|
|
|
USING Progress.Json.ObjectModel.JsonObject FROM PROPATH.
|
|
USING Progress.Json.ObjectModel.JsonObject FROM PROPATH.
|
|
|
USING Progress.Json.ObjectModel.JsonArray FROM PROPATH.
|
|
USING Progress.Json.ObjectModel.JsonArray FROM PROPATH.
|
|
|
|
|
+USING PROGRESS.lang.* FROM PROPATH.
|
|
|
|
|
|
|
|
USING src.ch.adprime.gemis.WebHandlerUtilities FROM PROPATH.
|
|
USING src.ch.adprime.gemis.WebHandlerUtilities FROM PROPATH.
|
|
|
USING utilities.selectboxHandler FROM PROPATH.
|
|
USING utilities.selectboxHandler FROM PROPATH.
|
|
|
USING utilities.utilitiesHandler FROM PROPATH.
|
|
USING utilities.utilitiesHandler FROM PROPATH.
|
|
|
-USING admin.usersHandler FROM PROPATH.
|
|
|
|
|
USING admin.adminprogsHandler FROM PROPATH.
|
|
USING admin.adminprogsHandler FROM PROPATH.
|
|
|
|
|
|
|
|
|
|
+
|
|
|
CLASS admin.dynamicformImpl INHERITS WebHandler:
|
|
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 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 oHandler AS Progress.Lang.Object NO-UNDO.
|
|
|
|
|
- DEFINE VARIABLE cMethode AS CHARACTER 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 cProgramUser 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 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 cProgramUser 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 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 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.
|
|
|
|
|
|
|
+ DEFINE VARIABLE outilitiesHandler AS utilitiesHandler NO-UNDO.
|
|
|
|
|
+ DEFINE VARIABLE oselectboxHandler AS selectboxHandler NO-UNDO.
|
|
|
|
|
|
|
|
|
|
|
|
|
/*------------------------------------------------------------------------------
|
|
/*------------------------------------------------------------------------------
|
|
@@ -79,9 +89,6 @@ CLASS admin.dynamicformImpl INHERITS WebHandler:
|
|
|
DEFINE VARIABLE ii AS INTEGER NO-UNDO.
|
|
DEFINE VARIABLE ii AS INTEGER NO-UNDO.
|
|
|
DEFINE VARIABLE i1 AS INTEGER NO-UNDO.
|
|
DEFINE VARIABLE i1 AS INTEGER NO-UNDO.
|
|
|
DEFINE VARIABLE cQueryString AS CHARACTER NO-UNDO.
|
|
DEFINE VARIABLE cQueryString AS CHARACTER NO-UNDO.
|
|
|
- DEFINE VARIABLE cQueryPairs AS CHARACTER NO-UNDO.
|
|
|
|
|
- DEFINE VARIABLE cQueryKey AS CHARACTER NO-UNDO.
|
|
|
|
|
- DEFINE VARIABLE cQueryValue AS CHARACTER NO-UNDO.
|
|
|
|
|
DEFINE VARIABLE cFileName AS CHARACTER NO-UNDO.
|
|
DEFINE VARIABLE cFileName AS CHARACTER NO-UNDO.
|
|
|
DEFINE VARIABLE cFieldName AS CHARACTER NO-UNDO.
|
|
DEFINE VARIABLE cFieldName AS CHARACTER NO-UNDO.
|
|
|
DEFINE VARIABLE cClassName AS CHARACTER NO-UNDO.
|
|
DEFINE VARIABLE cClassName AS CHARACTER NO-UNDO.
|
|
@@ -91,84 +98,68 @@ CLASS admin.dynamicformImpl INHERITS WebHandler:
|
|
|
DEFINE VARIABLE httBuffer AS HANDLE NO-UNDO.
|
|
DEFINE VARIABLE httBuffer AS HANDLE NO-UNDO.
|
|
|
|
|
|
|
|
lRetVal = WebHandlerUtilities:getJsonFromRequest(INPUT poRequest, OUTPUT oJsonData) NO-ERROR.
|
|
lRetVal = WebHandlerUtilities:getJsonFromRequest(INPUT poRequest, OUTPUT oJsonData) NO-ERROR.
|
|
|
|
|
+ cLogFile = SUBSTITUTE('C:\TEMP\handleDELETE_&1.json', REPLACE(STRING(TIME,'HH:MM:SS'), ':', '')).
|
|
|
|
|
+ oJsonData:WriteFile(cLogFile, TRUE).
|
|
|
|
|
|
|
|
|
|
+ hError = ERROR-STATUS:HANDLE.
|
|
|
outilitiesHandler = NEW utilitiesHandler().
|
|
outilitiesHandler = NEW utilitiesHandler().
|
|
|
|
|
+ cQueryString = STRING(poRequest:GetContextValue("QUERY_STRING")) NO-ERROR.
|
|
|
|
|
|
|
|
outilitiesHandler:getHeaderData(
|
|
outilitiesHandler:getHeaderData(
|
|
|
INPUT poRequest ,
|
|
INPUT poRequest ,
|
|
|
|
|
+ INPUT cQueryString ,
|
|
|
OUTPUT ccompany ,
|
|
OUTPUT ccompany ,
|
|
|
OUTPUT cuser_name ,
|
|
OUTPUT cuser_name ,
|
|
|
OUTPUT cAnzeigeName ,
|
|
OUTPUT cAnzeigeName ,
|
|
|
OUTPUT ilanguage_id ,
|
|
OUTPUT ilanguage_id ,
|
|
|
- OUTPUT cSessionToken
|
|
|
|
|
|
|
+ OUTPUT cSessionToken,
|
|
|
|
|
+ OUTPUT cFunction ,
|
|
|
|
|
+ OUTPUT oJsonIdent
|
|
|
).
|
|
).
|
|
|
|
|
|
|
|
- oJsonIdent = NEW JsonObject().
|
|
|
|
|
- oJsonIdent:ADD('company' , ccompany ) NO-ERROR.
|
|
|
|
|
- oJsonIdent:ADD('user_name' , cuser_name ) NO-ERROR.
|
|
|
|
|
- oJsonIdent:ADD('language_id' , iLanguage_id ) NO-ERROR.
|
|
|
|
|
- oJsonIdent:ADD('sessionToken', cSessionToken) NO-ERROR.
|
|
|
|
|
-
|
|
|
|
|
- cQueryString = STRING(poRequest:GetContextValue("QUERY_STRING")) NO-ERROR.
|
|
|
|
|
- DO ii = 1 TO NUM-ENTRIES(cQueryString, '&'):
|
|
|
|
|
- cQueryPairs = ENTRY(ii, cQueryString, '&').
|
|
|
|
|
- cQueryKey = ENTRY(1 , cQueryPairs , '=').
|
|
|
|
|
- cQueryValue = ENTRY(2 , cQueryPairs , '=').
|
|
|
|
|
- IF oJsonIdent:Has(cQueryKey) THEN oJsonIdent:SET(cQueryKey, cQueryValue) NO-ERROR.
|
|
|
|
|
- ELSE oJsonIdent:ADD(cQueryKey, cQueryValue) NO-ERROR.
|
|
|
|
|
- END.
|
|
|
|
|
- MESSAGE 'dynamic DELETE' STRING(oJsonIdent:GetJsonText()).
|
|
|
|
|
|
|
+ // oJsonIdent:WriteFile('C:\TEMP\dynamicform_DELETE_ident.json', TRUE).
|
|
|
|
|
+
|
|
|
|
|
+ cForm_Id = oJsonIdent:GetCharacter('formId').
|
|
|
cClassName = ENTRY(1, cForm_Id, '_').
|
|
cClassName = ENTRY(1, cForm_Id, '_').
|
|
|
-
|
|
|
|
|
- lRetVal = FALSE.
|
|
|
|
|
-
|
|
|
|
|
|
|
+ cFileName = ENTRY(1, cForm_Id, '_').
|
|
|
|
|
+ //
|
|
|
|
|
+ // mögliche Benutzer für das durchsuchen von HTML-DOkumenten und Labeltexten ...
|
|
|
|
|
+ //
|
|
|
cuser_name = oJsonIdent:GetCharacter('H_user_name') NO-ERROR.
|
|
cuser_name = oJsonIdent:GetCharacter('H_user_name') NO-ERROR.
|
|
|
- IF LOOKUP(cuser_name, cUsers, ',') = 0 THEN cUsers = cuser_name + ',' + cUsers.
|
|
|
|
|
|
|
+ IF NOT ERROR-STATUS:ERROR AND LOOKUP(cuser_name, cUsers, ',') = 0 THEN cUsers = cuser_name + ',' + cUsers.
|
|
|
cuser_name = oJsonIdent:GetCharacter('user_name') NO-ERROR.
|
|
cuser_name = oJsonIdent:GetCharacter('user_name') NO-ERROR.
|
|
|
- IF LOOKUP(cuser_name, cUsers, ',') = 0 THEN cUsers = cuser_name + ',' + cUsers.
|
|
|
|
|
|
|
+ IF NOT ERROR-STATUS:ERROR AND LOOKUP(cuser_name, cUsers, ',') = 0 THEN cUsers = cuser_name + ',' + cUsers.
|
|
|
|
|
+
|
|
|
|
|
+ lRetVal = FALSE.
|
|
|
|
|
+
|
|
|
cProgram = outilitiesHandler:getProgramName (
|
|
cProgram = outilitiesHandler:getProgramName (
|
|
|
INPUT oJsonIdent,
|
|
INPUT oJsonIdent,
|
|
|
INPUT cUsers
|
|
INPUT cUsers
|
|
|
).
|
|
).
|
|
|
|
|
|
|
|
- cFunction = oJsonIdent:GetCharacter('function').
|
|
|
|
|
-
|
|
|
|
|
REPEAT TRANSACTION WHILE cFunction = 'delete' ON ERROR UNDO, LEAVE:
|
|
REPEAT TRANSACTION WHILE cFunction = 'delete' ON ERROR UNDO, LEAVE:
|
|
|
-
|
|
|
|
|
- DEFINE VARIABLE cClass AS CHARACTER NO-UNDO.
|
|
|
|
|
- DEFINE VARIABLE rClass AS Progress.Lang.Class.
|
|
|
|
|
- DEFINE VARIABLE rParamList AS Progress.Lang.ParameterList.
|
|
|
|
|
-
|
|
|
|
|
CASE cClassName:
|
|
CASE cClassName:
|
|
|
- WHEN 'users' THEN
|
|
|
|
|
- cClass = 'admin.usersHandler'.
|
|
|
|
|
|
|
+ WHEN 'users' THEN
|
|
|
|
|
+ cClass = 'admin.adminprogsHandler'.
|
|
|
WHEN 'messages' THEN
|
|
WHEN 'messages' THEN
|
|
|
- cClass = 'admin.adminprogsHandler'.
|
|
|
|
|
|
|
+ cClass = 'admin.adminprogsHandler'.
|
|
|
WHEN 'labeltexte' THEN
|
|
WHEN 'labeltexte' THEN
|
|
|
- cClass = 'admin.adminprogsHandler'.
|
|
|
|
|
|
|
+ cClass = 'admin.adminprogsHandler'.
|
|
|
END CASE.
|
|
END CASE.
|
|
|
-
|
|
|
|
|
- ASSIGN
|
|
|
|
|
- rClass = Progress.Lang.Class:GetClass(cClass).
|
|
|
|
|
- oHandler = rClass:NEW().
|
|
|
|
|
- /* CASE cClassName: */
|
|
|
|
|
- /* WHEN 'users' THEN */
|
|
|
|
|
- /* oHandler = NEW usersHandler(). */
|
|
|
|
|
- /* WHEN 'messages' THEN */
|
|
|
|
|
- /* oHandler = NEW adminprogsHandler().*/
|
|
|
|
|
- /* END CASE. */
|
|
|
|
|
|
|
|
|
|
|
|
+ rClass = Progress.Lang.Class:GetClass(cClass) NO-ERROR.
|
|
|
cMethode = 'deleteData'.
|
|
cMethode = 'deleteData'.
|
|
|
-
|
|
|
|
|
oHandler = rClass:NEW().
|
|
oHandler = rClass:NEW().
|
|
|
- lRetVal = DYNAMIC-INVOKE ( oHandler, cMethode,
|
|
|
|
|
- INPUT oJsonIdent ,
|
|
|
|
|
- INPUT oJsonData ,
|
|
|
|
|
|
|
+ lRetVal = DYNAMIC-INVOKE ( oHandler, cMethode,
|
|
|
|
|
+ INPUT oJsonIdent ,
|
|
|
|
|
+ INPUT oJsonData ,
|
|
|
OUTPUT oJsonResult
|
|
OUTPUT oJsonResult
|
|
|
- ).
|
|
|
|
|
|
|
+ ) NO-ERROR.
|
|
|
|
|
+ outilitiesHandler:evaluateErrorStatus(hError).
|
|
|
IF NOT lRetVal THEN LEAVE.
|
|
IF NOT lRetVal THEN LEAVE.
|
|
|
|
|
|
|
|
oJsonResult:WRITE(lcJsonString, FALSE).
|
|
oJsonResult:WRITE(lcJsonString, FALSE).
|
|
|
|
|
+ oJsonResult:WriteFile('C:\TEMP\DYNAMIC_DELETE_Respons.json', TRUE).
|
|
|
LEAVE.
|
|
LEAVE.
|
|
|
END.
|
|
END.
|
|
|
|
|
|
|
@@ -181,7 +172,7 @@ CLASS admin.dynamicformImpl INHERITS WebHandler:
|
|
|
DO:
|
|
DO:
|
|
|
oJsonMessage = NEW JsonObject().
|
|
oJsonMessage = NEW JsonObject().
|
|
|
oJsonMessage:ADD('success', FALSE).
|
|
oJsonMessage:ADD('success', FALSE).
|
|
|
- oJsonMessage:ADD('message', 'Fehler beim create/POST des Users').
|
|
|
|
|
|
|
+ oJsonMessage:ADD('message', 'Fehler beim DELETE').
|
|
|
oJsonMessage:WRITE(lcJsonString, FALSE).
|
|
oJsonMessage:WRITE(lcJsonString, FALSE).
|
|
|
END.
|
|
END.
|
|
|
|
|
|
|
@@ -196,8 +187,10 @@ CLASS admin.dynamicformImpl INHERITS WebHandler:
|
|
|
END CATCH.
|
|
END CATCH.
|
|
|
|
|
|
|
|
FINALLY:
|
|
FINALLY:
|
|
|
- /* DELETE OBJECT oJsonConfig. */
|
|
|
|
|
- /* DELETE OBJECT oJsonMessage.*/
|
|
|
|
|
|
|
+ DELETE OBJECT oHandler NO-ERROR.
|
|
|
|
|
+ DELETE OBJECT oJsonMessage NO-ERROR.
|
|
|
|
|
+ DELETE OBJECT oResponse NO-ERROR.
|
|
|
|
|
+ DELETE OBJECT oWriter NO-ERROR.
|
|
|
END FINALLY.
|
|
END FINALLY.
|
|
|
|
|
|
|
|
END METHOD.
|
|
END METHOD.
|
|
@@ -213,50 +206,36 @@ CLASS admin.dynamicformImpl INHERITS WebHandler:
|
|
|
DEFINE VARIABLE oJsonIdent AS JsonObject NO-UNDO.
|
|
DEFINE VARIABLE oJsonIdent AS JsonObject NO-UNDO.
|
|
|
DEFINE VARIABLE oJsonSelectBoxes AS JsonObject NO-UNDO.
|
|
DEFINE VARIABLE oJsonSelectBoxes AS JsonObject NO-UNDO.
|
|
|
DEFINE VARIABLE oJsonBox AS JsonArray 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 lRetVal AS LOGICAL NO-UNDO.
|
|
|
DEFINE VARIABLE ii AS INTEGER NO-UNDO.
|
|
DEFINE VARIABLE ii AS INTEGER NO-UNDO.
|
|
|
DEFINE VARIABLE i1 AS INTEGER NO-UNDO.
|
|
DEFINE VARIABLE i1 AS INTEGER NO-UNDO.
|
|
|
DEFINE VARIABLE cQueryString AS CHARACTER NO-UNDO.
|
|
DEFINE VARIABLE cQueryString AS CHARACTER NO-UNDO.
|
|
|
- DEFINE VARIABLE cQueryPairs AS CHARACTER NO-UNDO.
|
|
|
|
|
- DEFINE VARIABLE cQueryKey AS CHARACTER NO-UNDO.
|
|
|
|
|
- DEFINE VARIABLE cQueryValue AS CHARACTER NO-UNDO.
|
|
|
|
|
DEFINE VARIABLE cFileName AS CHARACTER NO-UNDO.
|
|
DEFINE VARIABLE cFileName AS CHARACTER NO-UNDO.
|
|
|
DEFINE VARIABLE cFieldName AS CHARACTER NO-UNDO.
|
|
DEFINE VARIABLE cFieldName AS CHARACTER NO-UNDO.
|
|
|
DEFINE VARIABLE cClassName AS CHARACTER NO-UNDO.
|
|
DEFINE VARIABLE cClassName AS CHARACTER NO-UNDO.
|
|
|
DEFINE VARIABLE cActiveSelection AS CHARACTER NO-UNDO.
|
|
DEFINE VARIABLE cActiveSelection AS CHARACTER NO-UNDO.
|
|
|
|
|
+ DEFINE VARIABLE cFormUser AS CHARACTER NO-UNDO.
|
|
|
|
|
|
|
|
DEFINE VARIABLE oJsonResult AS JsonObject NO-UNDO.
|
|
DEFINE VARIABLE oJsonResult AS JsonObject NO-UNDO.
|
|
|
DEFINE VARIABLE httBuffer AS HANDLE NO-UNDO.
|
|
DEFINE VARIABLE httBuffer AS HANDLE NO-UNDO.
|
|
|
|
|
|
|
|
|
|
+ hError = ERROR-STATUS:HANDLE.
|
|
|
outilitiesHandler = NEW utilitiesHandler().
|
|
outilitiesHandler = NEW utilitiesHandler().
|
|
|
|
|
+ cQueryString = STRING(poRequest:GetContextValue("QUERY_STRING")) NO-ERROR.
|
|
|
|
|
|
|
|
outilitiesHandler:getHeaderData(
|
|
outilitiesHandler:getHeaderData(
|
|
|
INPUT poRequest ,
|
|
INPUT poRequest ,
|
|
|
|
|
+ INPUT cQueryString ,
|
|
|
OUTPUT ccompany ,
|
|
OUTPUT ccompany ,
|
|
|
OUTPUT cuser_name ,
|
|
OUTPUT cuser_name ,
|
|
|
OUTPUT cAnzeigeName ,
|
|
OUTPUT cAnzeigeName ,
|
|
|
OUTPUT ilanguage_id ,
|
|
OUTPUT ilanguage_id ,
|
|
|
- OUTPUT cSessionToken
|
|
|
|
|
|
|
+ OUTPUT cSessionToken,
|
|
|
|
|
+ OUTPUT cFunction ,
|
|
|
|
|
+ OUTPUT oJsonIdent
|
|
|
).
|
|
).
|
|
|
-
|
|
|
|
|
- oJsonIdent = NEW JsonObject().
|
|
|
|
|
- oJsonIdent:ADD('H_company' , ccompany ) NO-ERROR.
|
|
|
|
|
- oJsonIdent:ADD('H_user_name' , cuser_name ) NO-ERROR.
|
|
|
|
|
- oJsonIdent:ADD('H_display_name', cAnzeigeName ) NO-ERROR.
|
|
|
|
|
- oJsonIdent:ADD('H_language_id' , iLanguage_id ) NO-ERROR.
|
|
|
|
|
- oJsonIdent:ADD('H_sessionToken', cSessionToken) NO-ERROR.
|
|
|
|
|
- //
|
|
|
|
|
- // Alle Parameter aus dem Query-String lesen und im Object oJsonIdent ergänzenz
|
|
|
|
|
- //
|
|
|
|
|
- cQueryString = STRING(poRequest:GetContextValue("QUERY_STRING")) NO-ERROR.
|
|
|
|
|
- DO ii = 1 TO NUM-ENTRIES(cQueryString, '&'):
|
|
|
|
|
- cQueryPairs = ENTRY(ii, cQueryString, '&').
|
|
|
|
|
- cQueryKey = ENTRY(1 , cQueryPairs , '=').
|
|
|
|
|
- cQueryValue = ENTRY(2 , cQueryPairs , '=').
|
|
|
|
|
- IF oJsonIdent:Has(cQueryKey) THEN oJsonIdent:SET(cQueryKey, cQueryValue) NO-ERROR.
|
|
|
|
|
- ELSE oJsonIdent:ADD(cQueryKey, cQueryValue) NO-ERROR.
|
|
|
|
|
- END.
|
|
|
|
|
//
|
|
//
|
|
|
// mögliche Benutzer für das durchsuchen von HTML-DOkumenten und Labeltexten ...
|
|
// mögliche Benutzer für das durchsuchen von HTML-DOkumenten und Labeltexten ...
|
|
|
//
|
|
//
|
|
@@ -265,6 +244,10 @@ CLASS admin.dynamicformImpl INHERITS WebHandler:
|
|
|
cuser_name = oJsonIdent:GetCharacter('user_name') NO-ERROR.
|
|
cuser_name = oJsonIdent:GetCharacter('user_name') NO-ERROR.
|
|
|
IF NOT ERROR-STATUS:ERROR AND LOOKUP(cuser_name, cUsers, ',') = 0 THEN cUsers = cuser_name + ',' + cUsers.
|
|
IF NOT ERROR-STATUS:ERROR AND LOOKUP(cuser_name, cUsers, ',') = 0 THEN cUsers = cuser_name + ',' + cUsers.
|
|
|
|
|
|
|
|
|
|
+ cLogFile = SUBSTITUTE('C:\TEMP\handleGET_&1.json', REPLACE(STRING(TIME,'HH:MM:SS'), ':', '')).
|
|
|
|
|
+ oJsonIdent:WriteFile(cLogFile, TRUE) NO-ERROR.
|
|
|
|
|
+ outilitiesHandler:evaluateErrorStatus(INPUT hError).
|
|
|
|
|
+
|
|
|
lRetVal = FALSE.
|
|
lRetVal = FALSE.
|
|
|
|
|
|
|
|
MASTERLOOP:
|
|
MASTERLOOP:
|
|
@@ -272,72 +255,76 @@ CLASS admin.dynamicformImpl INHERITS WebHandler:
|
|
|
//
|
|
//
|
|
|
// Programmname aus den möglichen Benutzern ermitteln
|
|
// Programmname aus den möglichen Benutzern ermitteln
|
|
|
//
|
|
//
|
|
|
|
|
+ cMaxHeight = '250px'.
|
|
|
|
|
+ iItemsPage = 50.
|
|
|
cProgram = outilitiesHandler:getProgramName (
|
|
cProgram = outilitiesHandler:getProgramName (
|
|
|
- INPUT oJsonIdent,
|
|
|
|
|
- INPUT cUsers
|
|
|
|
|
|
|
+ INPUT oJsonIdent,
|
|
|
|
|
+ INPUT cUsers ,
|
|
|
|
|
+ OUTPUT cFormUser ,
|
|
|
|
|
+ INPUT-OUTPUT iItemsPage,
|
|
|
|
|
+ INPUT-OUTPUT cMaxHeight
|
|
|
).
|
|
).
|
|
|
-MESSAGE 'getProgramName ' cProgram.
|
|
|
|
|
IF cProgram = '' THEN
|
|
IF cProgram = '' THEN
|
|
|
DO:
|
|
DO:
|
|
|
outilitiesHandler:getErrorMessage(
|
|
outilitiesHandler:getErrorMessage(
|
|
|
- INPUT '1000',
|
|
|
|
|
- INPUT oJsonIdent:GetInteger('language_id'),
|
|
|
|
|
- INPUT '', /* Parameters */
|
|
|
|
|
|
|
+ INPUT '2001',
|
|
|
|
|
+ INPUT iLanguage_id,
|
|
|
|
|
+ INPUT oJsonIdent:GetCharacter('frameId'), /* Parameters */
|
|
|
OUTPUT lcMessage
|
|
OUTPUT lcMessage
|
|
|
).
|
|
).
|
|
|
LEAVE.
|
|
LEAVE.
|
|
|
END.
|
|
END.
|
|
|
- oJsonIdent:ADD('program', cProgram).
|
|
|
|
|
|
|
+ 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.
|
|
|
|
|
|
|
|
- cErrorNo = ''.
|
|
|
|
|
- cForm_Id = oJsonIdent:GetCharacter("formId") NO-ERROR.
|
|
|
|
|
- IF NOT ERROR-STATUS:ERROR THEN
|
|
|
|
|
|
|
+ //
|
|
|
|
|
+ // active-Feld-Filter ermitten
|
|
|
|
|
+ //
|
|
|
|
|
+ outilitiesHandler:getActiveSelection(
|
|
|
|
|
+ INPUT oJsonIdent ,
|
|
|
|
|
+ INPUT cFileName ,
|
|
|
|
|
+ OUTPUT cActiveSelection
|
|
|
|
|
+ ).
|
|
|
|
|
+ IF cActiveSelection <> '' THEN
|
|
|
DO:
|
|
DO:
|
|
|
- cClassName = ENTRY(1, cForm_Id, '_').
|
|
|
|
|
- cFileName = ENTRY(1, cForm_Id, '_').
|
|
|
|
|
|
|
+ IF NOT oJsonIdent:HAS('activeFilter') THEN oJsonIdent:ADD('activeFilter', cActiveSelection ).
|
|
|
END.
|
|
END.
|
|
|
- IF cClassName = '' THEN
|
|
|
|
|
- cErrorNo = cErrorNo
|
|
|
|
|
- + (IF cErrorNo = '' THEN '' ELSE ',')
|
|
|
|
|
- + '1001'.
|
|
|
|
|
- IF cFileName = '' THEN
|
|
|
|
|
- cErrorNo = cErrorNo
|
|
|
|
|
- + (IF cErrorNo = '' THEN '' ELSE ',')
|
|
|
|
|
- + '1002'.
|
|
|
|
|
- IF cErrorNo <> '' THEN
|
|
|
|
|
- DO:
|
|
|
|
|
- outilitiesHandler:getErrorMessage(
|
|
|
|
|
- INPUT cErrorNo,
|
|
|
|
|
- INPUT oJsonIdent:GetInteger('language_id'),
|
|
|
|
|
- INPUT '', /* Parameters */
|
|
|
|
|
- OUTPUT lcMessage
|
|
|
|
|
|
|
+
|
|
|
|
|
+ DO WHILE cFunction = 'saveActiveFilter' AND cProgram <> '':
|
|
|
|
|
+ outilitiesHandler:setActiveSelection(
|
|
|
|
|
+ INPUT oJsonIdent,
|
|
|
|
|
+ INPUT cFileName,
|
|
|
|
|
+ INPUT oJsonIdent:GetCharacter('activeFilter')
|
|
|
).
|
|
).
|
|
|
|
|
+ lRetVal = TRUE.
|
|
|
LEAVE.
|
|
LEAVE.
|
|
|
END.
|
|
END.
|
|
|
- oJsonIdent:ADD('class_name', cClassName).
|
|
|
|
|
- oJsonIdent:ADD('file_name' , cFileName ).
|
|
|
|
|
-
|
|
|
|
|
- IF NOT oJsonIdent:HAS('company' ) THEN oJsonIdent:ADD('company' , oJsonIdent:GetCharacter('H_company' )).
|
|
|
|
|
- IF NOT oJsonIdent:HAS('user_name' ) THEN oJsonIdent:ADD('user_name' , oJsonIdent:GetCharacter('H_user_name' )).
|
|
|
|
|
- IF NOT oJsonIdent:HAS('language_id') THEN oJsonIdent:ADD('language_id', oJsonIdent:GetInteger ('H_language_id')).
|
|
|
|
|
-
|
|
|
|
|
- oJsonIdent:WriteFile('C:\TEMP\dynamicform_GET.json', TRUE).
|
|
|
|
|
-
|
|
|
|
|
- cFunction = oJsonIdent:GetCharacter('function').
|
|
|
|
|
- cCompany = oJsonIdent:GetCharacter('company').
|
|
|
|
|
-
|
|
|
|
|
- DO WHILE cFunction = 'init' AND cProgram <> '':
|
|
|
|
|
-
|
|
|
|
|
- FIND FIRST selectboxfields NO-LOCK
|
|
|
|
|
- WHERE selectboxfields.company = ccompany
|
|
|
|
|
- AND selectboxfields.program = cform_id NO-ERROR.
|
|
|
|
|
- IF NOT AVAILABLE selectboxfields THEN LEAVE.
|
|
|
|
|
|
|
|
|
|
|
|
+ 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.
|
|
|
|
|
+ DELETE OBJECT hBuffer.
|
|
|
|
|
+ //
|
|
|
|
|
+ // Alle Felder, welche als Selectboxen definiert sind, füllen
|
|
|
|
|
+ //
|
|
|
oselectboxHandler = NEW selectboxHandler().
|
|
oselectboxHandler = NEW selectboxHandler().
|
|
|
oJsonSelectBoxes = NEW JsonObject().
|
|
oJsonSelectBoxes = NEW JsonObject().
|
|
|
FOR EACH selectboxfields NO-LOCK
|
|
FOR EACH selectboxfields NO-LOCK
|
|
|
- WHERE selectboxfields.company = ccompany
|
|
|
|
|
- AND selectboxfields.program = cform_id:
|
|
|
|
|
|
|
+ WHERE selectboxfields.company = ccompany
|
|
|
|
|
+ AND selectboxfields.program = cform_id
|
|
|
|
|
+ AND selectboxfields.user_name = cFormUser:
|
|
|
|
|
|
|
|
DO ii = 1 TO NUM-ENTRIES(selectboxfields.boxfields, ';'):
|
|
DO ii = 1 TO NUM-ENTRIES(selectboxfields.boxfields, ';'):
|
|
|
cFieldName = ENTRY(ii, selectboxfields.boxfields, ';').
|
|
cFieldName = ENTRY(ii, selectboxfields.boxfields, ';').
|
|
@@ -355,9 +342,9 @@ MESSAGE 'getProgramName ' cProgram.
|
|
|
IF cFieldName MATCHES('*language_id*') THEN
|
|
IF cFieldName MATCHES('*language_id*') THEN
|
|
|
DO:
|
|
DO:
|
|
|
oJsonBox = NEW JsonArray().
|
|
oJsonBox = NEW JsonArray().
|
|
|
- httBuffer = oSelectboxHandler:getSelboxLanguage(INPUT cFileName).
|
|
|
|
|
- httBuffer:WRITE-JSON ('JsonArray', oJsonBox).
|
|
|
|
|
- oJsonSelectBoxes:ADD(cFieldName, oJsonBox).
|
|
|
|
|
|
|
+ httBuffer = oSelectboxHandler:getSelboxLanguage(INPUT cFileName) NO-ERROR.
|
|
|
|
|
+ httBuffer:WRITE-JSON ('JsonArray', oJsonBox) NO-ERROR.
|
|
|
|
|
+ oJsonSelectBoxes:ADD(cFieldName, oJsonBox) NO-ERROR.
|
|
|
NEXT.
|
|
NEXT.
|
|
|
END.
|
|
END.
|
|
|
|
|
|
|
@@ -381,28 +368,32 @@ MESSAGE 'getProgramName ' cProgram.
|
|
|
|
|
|
|
|
END.
|
|
END.
|
|
|
END.
|
|
END.
|
|
|
-
|
|
|
|
|
- outilitiesHandler:evaluateFile(
|
|
|
|
|
- INPUT oJsonIdent ,
|
|
|
|
|
- OUTPUT cFileName ,
|
|
|
|
|
- OUTPUT lCompany ,
|
|
|
|
|
- OUTPUT lActive ,
|
|
|
|
|
- OUTPUT lWordindex
|
|
|
|
|
- ).
|
|
|
|
|
-
|
|
|
|
|
- outilitiesHandler:getActiveSelection(
|
|
|
|
|
- INPUT oJsonIdent ,
|
|
|
|
|
- INPUT cFileName ,
|
|
|
|
|
- OUTPUT cActiveSelection
|
|
|
|
|
- ).
|
|
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
oJsonResponse = NEW JsonObject().
|
|
oJsonResponse = NEW JsonObject().
|
|
|
oJsonResponse:ADD('selectOptionsFix', oJsonSelectBoxes).
|
|
oJsonResponse:ADD('selectOptionsFix', oJsonSelectBoxes).
|
|
|
- oJsonResponse:ADD("activeFilter" , cActiveSelection).
|
|
|
|
|
- oJsonResponse:ADD("hasActiveField" , lActive ).
|
|
|
|
|
- oJsonResponse:ADD("tableMaxHeight" , '400px' ).
|
|
|
|
|
- oJsonResponse:ADD("itemsPerPage" , 25 ).
|
|
|
|
|
- oJsonResponse:WriteFile('C:\Temp\Dynamic_Init_response.json', TRUE).
|
|
|
|
|
|
|
+ oJsonResponse:ADD("tableMaxHeight" , cMaxHeight ).
|
|
|
|
|
+ oJsonResponse:ADD("itemsPerPage" , iItemsPage ).
|
|
|
|
|
+ //
|
|
|
|
|
+ // 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 = cuser_name
|
|
|
|
|
+ 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.
|
|
|
|
|
+ END.
|
|
|
|
|
+ oJsonResponse:ADD('activeFilterLabels', oJsonActiveSelectBox).
|
|
|
|
|
+
|
|
|
lRetVal = TRUE.
|
|
lRetVal = TRUE.
|
|
|
LEAVE.
|
|
LEAVE.
|
|
|
END.
|
|
END.
|
|
@@ -410,20 +401,22 @@ MESSAGE 'getProgramName ' cProgram.
|
|
|
DO WHILE cFunction = 'loaddata' AND cProgram <> '':
|
|
DO WHILE cFunction = 'loaddata' AND cProgram <> '':
|
|
|
CASE cClassName:
|
|
CASE cClassName:
|
|
|
WHEN 'users' THEN
|
|
WHEN 'users' THEN
|
|
|
- oHandler = NEW usersHandler().
|
|
|
|
|
|
|
+ cClass = 'admin.adminprogsHandler'.
|
|
|
WHEN 'messages' THEN
|
|
WHEN 'messages' THEN
|
|
|
- oHandler = NEW adminprogsHandler().
|
|
|
|
|
|
|
+ cClass = 'admin.adminprogsHandler'.
|
|
|
WHEN 'labeltexte' THEN
|
|
WHEN 'labeltexte' THEN
|
|
|
- oHandler = NEW adminprogsHandler().
|
|
|
|
|
|
|
+ cClass = 'admin.adminprogsHandler'.
|
|
|
END CASE.
|
|
END CASE.
|
|
|
|
|
|
|
|
|
|
+ rClass = Progress.Lang.Class:GetClass(cClass) NO-ERROR.
|
|
|
cMethode = 'getData'.
|
|
cMethode = 'getData'.
|
|
|
-
|
|
|
|
|
- lRetVal = DYNAMIC-INVOKE ( oHandler, cMethode,
|
|
|
|
|
- INPUT oJsonIdent ,
|
|
|
|
|
|
|
+ oHandler = rClass:NEW().
|
|
|
|
|
+ lRetVal = DYNAMIC-INVOKE ( oHandler, cMethode,
|
|
|
|
|
+ INPUT oJsonIdent ,
|
|
|
OUTPUT oJsonResult
|
|
OUTPUT oJsonResult
|
|
|
- ).
|
|
|
|
|
- // oJsonResult:WriteFile('C:\TEMP\loaddate_result.json', TRUE).
|
|
|
|
|
|
|
+ ) NO-ERROR.
|
|
|
|
|
+ outilitiesHandler:evaluateErrorStatus(hError).
|
|
|
|
|
+ IF NOT lRetVal THEN LEAVE.
|
|
|
|
|
|
|
|
oJsonResponse = NEW JsonObject().
|
|
oJsonResponse = NEW JsonObject().
|
|
|
oJsonResponse:ADD('selectOptionsFix', oJsonSelectBoxes).
|
|
oJsonResponse:ADD('selectOptionsFix', oJsonSelectBoxes).
|
|
@@ -435,23 +428,28 @@ MESSAGE 'getProgramName ' cProgram.
|
|
|
END.
|
|
END.
|
|
|
|
|
|
|
|
DO WHILE cFunction = 'change' AND cProgram <> '':
|
|
DO WHILE cFunction = 'change' AND cProgram <> '':
|
|
|
-
|
|
|
|
|
CASE cClassName:
|
|
CASE cClassName:
|
|
|
WHEN 'users' THEN
|
|
WHEN 'users' THEN
|
|
|
- oHandler = NEW usersHandler().
|
|
|
|
|
|
|
+ cClass = 'adminprogsHandler'.
|
|
|
WHEN 'messages' THEN
|
|
WHEN 'messages' THEN
|
|
|
- oHandler = NEW adminprogsHandler().
|
|
|
|
|
|
|
+ cClass = 'adminprogsHandler'.
|
|
|
WHEN 'labeltexte' THEN
|
|
WHEN 'labeltexte' THEN
|
|
|
- oHandler = NEW adminprogsHandler().
|
|
|
|
|
|
|
+ cClass = 'adminprogsHandler'.
|
|
|
END CASE.
|
|
END CASE.
|
|
|
|
|
+
|
|
|
|
|
+ ASSIGN
|
|
|
|
|
+ rClass = Progress.Lang.Class:GetClass(cClass).
|
|
|
|
|
+
|
|
|
|
|
+ cMethode = 'change'.
|
|
|
|
|
|
|
|
- cMethode = 'getChanges'.
|
|
|
|
|
-
|
|
|
|
|
|
|
+ oHandler = rClass:NEW().
|
|
|
lRetVal = DYNAMIC-INVOKE ( oHandler, cMethode,
|
|
lRetVal = DYNAMIC-INVOKE ( oHandler, cMethode,
|
|
|
- INPUT oJsonIdent ,
|
|
|
|
|
|
|
+ INPUT oJsonIdent ,
|
|
|
|
|
+ INPUT oJsonData ,
|
|
|
OUTPUT oJsonResult
|
|
OUTPUT oJsonResult
|
|
|
).
|
|
).
|
|
|
-
|
|
|
|
|
|
|
+ IF NOT lRetVal THEN LEAVE.
|
|
|
|
|
+
|
|
|
oJsonResponse = NEW JsonObject().
|
|
oJsonResponse = NEW JsonObject().
|
|
|
oJsonResponse:ADD('selectOptionsFix', oJsonSelectBoxes).
|
|
oJsonResponse:ADD('selectOptionsFix', oJsonSelectBoxes).
|
|
|
|
|
|
|
@@ -462,20 +460,24 @@ MESSAGE 'getProgramName ' cProgram.
|
|
|
END.
|
|
END.
|
|
|
|
|
|
|
|
DO WHILE cFunction = 'rebuild':
|
|
DO WHILE cFunction = 'rebuild':
|
|
|
-
|
|
|
|
|
CASE cClassName:
|
|
CASE cClassName:
|
|
|
WHEN 'users' THEN
|
|
WHEN 'users' THEN
|
|
|
- oHandler = NEW usersHandler().
|
|
|
|
|
|
|
+ cClass = 'adminprogsHandler'.
|
|
|
WHEN 'messages' THEN
|
|
WHEN 'messages' THEN
|
|
|
- oHandler = NEW adminprogsHandler().
|
|
|
|
|
|
|
+ cClass = 'adminprogsHandler'.
|
|
|
WHEN 'labeltexte' THEN
|
|
WHEN 'labeltexte' THEN
|
|
|
- oHandler = NEW adminprogsHandler().
|
|
|
|
|
|
|
+ cClass = 'adminprogsHandler'.
|
|
|
END CASE.
|
|
END CASE.
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
|
|
+ ASSIGN
|
|
|
|
|
+ rClass = Progress.Lang.Class:GetClass(cClass).
|
|
|
|
|
+
|
|
|
cMethode = 'rebuildData'.
|
|
cMethode = 'rebuildData'.
|
|
|
|
|
|
|
|
|
|
+ oHandler = rClass:NEW().
|
|
|
lRetVal = DYNAMIC-INVOKE ( oHandler, cMethode,
|
|
lRetVal = DYNAMIC-INVOKE ( oHandler, cMethode,
|
|
|
- INPUT oJsonIdent ,
|
|
|
|
|
|
|
+ INPUT oJsonIdent ,
|
|
|
|
|
+ INPUT oJsonData ,
|
|
|
OUTPUT oJsonResult
|
|
OUTPUT oJsonResult
|
|
|
).
|
|
).
|
|
|
IF NOT lRetVal THEN
|
|
IF NOT lRetVal THEN
|
|
@@ -531,7 +533,7 @@ MESSAGE 'getProgramName ' cProgram.
|
|
|
|
|
|
|
|
cContent-Type = "application/json".
|
|
cContent-Type = "application/json".
|
|
|
cDefautlCharSet = 'utf-8'.
|
|
cDefautlCharSet = 'utf-8'.
|
|
|
-
|
|
|
|
|
|
|
+// MESSAGE 'Get-Respond ' STRING(lcJsonString).
|
|
|
oBody = NEW STRING(lcJsonString).
|
|
oBody = NEW STRING(lcJsonString).
|
|
|
WebHandlerUtilities:createHttpResponse(INPUT INTEGER(StatusCodeEnum:OK), INPUT oBody, INPUT cContent-Type, INPUT cDefautlCharSet, INPUT cCorralationID, OUTPUT oResponse).
|
|
WebHandlerUtilities:createHttpResponse(INPUT INTEGER(StatusCodeEnum:OK), INPUT oBody, INPUT cContent-Type, INPUT cDefautlCharSet, INPUT cCorralationID, OUTPUT oResponse).
|
|
|
// oResponse:SetHeader(HttpHeaderBuilder:Build(cHeaderCorralationID):Value(cCorralationID):Header).
|
|
// oResponse:SetHeader(HttpHeaderBuilder:Build(cHeaderCorralationID):Value(cCorralationID):Header).
|
|
@@ -548,7 +550,15 @@ MESSAGE 'getProgramName ' cProgram.
|
|
|
END CATCH.
|
|
END CATCH.
|
|
|
|
|
|
|
|
FINALLY:
|
|
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 FINALLY.
|
|
|
|
|
|
|
|
END METHOD.
|
|
END METHOD.
|
|
@@ -582,64 +592,79 @@ MESSAGE 'getProgramName ' cProgram.
|
|
|
|
|
|
|
|
lRetVal = WebHandlerUtilities:getJsonFromRequest(INPUT poRequest, OUTPUT oJsonData) NO-ERROR.
|
|
lRetVal = WebHandlerUtilities:getJsonFromRequest(INPUT poRequest, OUTPUT oJsonData) NO-ERROR.
|
|
|
|
|
|
|
|
|
|
+ cLogFile = SUBSTITUTE('C:\TEMP\handlePOST_&1.json', REPLACE(STRING(TIME,'HH:MM:SS'), ':', '')).
|
|
|
|
|
+ oJsonData:WriteFile(cLogFile, TRUE).
|
|
|
|
|
+
|
|
|
outilitiesHandler = NEW utilitiesHandler().
|
|
outilitiesHandler = NEW utilitiesHandler().
|
|
|
|
|
+ hError = ERROR-STATUS:HANDLE.
|
|
|
|
|
+ cQueryString = STRING(poRequest:GetContextValue("QUERY_STRING")) NO-ERROR.
|
|
|
|
|
|
|
|
outilitiesHandler:getHeaderData(
|
|
outilitiesHandler:getHeaderData(
|
|
|
INPUT poRequest ,
|
|
INPUT poRequest ,
|
|
|
|
|
+ INPUT cQueryString ,
|
|
|
OUTPUT ccompany ,
|
|
OUTPUT ccompany ,
|
|
|
OUTPUT cuser_name ,
|
|
OUTPUT cuser_name ,
|
|
|
OUTPUT cAnzeigeName ,
|
|
OUTPUT cAnzeigeName ,
|
|
|
OUTPUT ilanguage_id ,
|
|
OUTPUT ilanguage_id ,
|
|
|
- OUTPUT cSessionToken
|
|
|
|
|
|
|
+ OUTPUT cSessionToken,
|
|
|
|
|
+ OUTPUT cFunction ,
|
|
|
|
|
+ OUTPUT oJsonIdent
|
|
|
).
|
|
).
|
|
|
|
|
|
|
|
- oJsonIdent = NEW JsonObject().
|
|
|
|
|
- oJsonIdent:ADD('H_company' , ccompany ) NO-ERROR.
|
|
|
|
|
- oJsonIdent:ADD('H_user_name' , cuser_name ) NO-ERROR.
|
|
|
|
|
- oJsonIdent:ADD('H_display_name', cAnzeigeName ) NO-ERROR.
|
|
|
|
|
- oJsonIdent:ADD('H_language_id' , iLanguage_id ) NO-ERROR.
|
|
|
|
|
- oJsonIdent:ADD('H_sessionToken', cSessionToken) NO-ERROR.
|
|
|
|
|
|
|
+ oJsonIdent:WriteFile('C:\TEMP\dynamicform_POST.json', TRUE).
|
|
|
//
|
|
//
|
|
|
- // Alle Parameter aus dem Query-String lesen und im Object oJsonIdent ergänzenz
|
|
|
|
|
|
|
+ // mögliche Benutzer für das durchsuchen von HTML-DOkumenten und Labeltexten ...
|
|
|
//
|
|
//
|
|
|
- cQueryString = STRING(poRequest:GetContextValue("QUERY_STRING")) NO-ERROR.
|
|
|
|
|
- DO ii = 1 TO NUM-ENTRIES(cQueryString, '&'):
|
|
|
|
|
- cQueryPairs = ENTRY(ii, cQueryString, '&').
|
|
|
|
|
- cQueryKey = ENTRY(1 , cQueryPairs , '=').
|
|
|
|
|
- cQueryValue = ENTRY(2 , cQueryPairs , '=').
|
|
|
|
|
- IF oJsonIdent:Has(cQueryKey) THEN oJsonIdent:SET(cQueryKey, cQueryValue) NO-ERROR.
|
|
|
|
|
- ELSE oJsonIdent:ADD(cQueryKey, cQueryValue) NO-ERROR.
|
|
|
|
|
- END.
|
|
|
|
|
|
|
+ cuser_name = oJsonIdent:GetCharacter('H_user_name') NO-ERROR.
|
|
|
|
|
+ IF NOT ERROR-STATUS:ERROR AND LOOKUP(cuser_name, cUsers, ',') = 0 THEN cUsers = cuser_name + ',' + cUsers.
|
|
|
|
|
+ cuser_name = oJsonIdent:GetCharacter('user_name') NO-ERROR.
|
|
|
|
|
+ IF NOT ERROR-STATUS:ERROR AND LOOKUP(cuser_name, cUsers, ',') = 0 THEN cUsers = cuser_name + ',' + cUsers.
|
|
|
|
|
+
|
|
|
|
|
+ cForm_Id = poRequest:URI:GetQueryValue("formId") NO-ERROR.
|
|
|
|
|
+ cClassName = ENTRY(1, cForm_Id, '_').
|
|
|
|
|
+ cFileName = ENTRY(1, cForm_Id, '_').
|
|
|
|
|
+ //
|
|
|
|
|
+ // mögliche Benutzer für das durchsuchen von HTML-DOkumenten und Labeltexten ...
|
|
|
|
|
+ //
|
|
|
|
|
+ cuser_name = oJsonIdent:GetCharacter('H_user_name') NO-ERROR.
|
|
|
|
|
+ IF NOT ERROR-STATUS:ERROR AND LOOKUP(cuser_name, cUsers, ',') = 0 THEN cUsers = cuser_name + ',' + cUsers.
|
|
|
|
|
+ cuser_name = oJsonIdent:GetCharacter('user_name') NO-ERROR.
|
|
|
|
|
+ IF NOT ERROR-STATUS:ERROR AND LOOKUP(cuser_name, cUsers, ',') = 0 THEN cUsers = cuser_name + ',' + cUsers.
|
|
|
|
|
|
|
|
lRetVal = FALSE.
|
|
lRetVal = FALSE.
|
|
|
|
|
+
|
|
|
cProgram = outilitiesHandler:getProgramName (
|
|
cProgram = outilitiesHandler:getProgramName (
|
|
|
INPUT oJsonIdent,
|
|
INPUT oJsonIdent,
|
|
|
INPUT cUsers
|
|
INPUT cUsers
|
|
|
).
|
|
).
|
|
|
|
|
|
|
|
- cFunction = oJsonIdent:GetCharacter('function').
|
|
|
|
|
|
|
+ cForm_Id = oJsonIdent:GetCharacter('formId').
|
|
|
|
|
+ cClassName = ENTRY(1, cForm_Id, '_').
|
|
|
|
|
+ cFileName = ENTRY(1, cForm_Id, '_').
|
|
|
|
|
|
|
|
REPEAT TRANSACTION WHILE cFunction = 'create' ON ERROR UNDO, LEAVE:
|
|
REPEAT TRANSACTION WHILE cFunction = 'create' ON ERROR UNDO, LEAVE:
|
|
|
-
|
|
|
|
|
CASE cClassName:
|
|
CASE cClassName:
|
|
|
WHEN 'users' THEN
|
|
WHEN 'users' THEN
|
|
|
- oHandler = NEW usersHandler().
|
|
|
|
|
|
|
+ cClass = 'admin.adminprogsHandler'.
|
|
|
WHEN 'messages' THEN
|
|
WHEN 'messages' THEN
|
|
|
- oHandler = NEW adminprogsHandler().
|
|
|
|
|
|
|
+ cClass = 'admin.adminprogsHandler'.
|
|
|
WHEN 'labeltexte' THEN
|
|
WHEN 'labeltexte' THEN
|
|
|
- oHandler = NEW adminprogsHandler().
|
|
|
|
|
|
|
+ cClass = 'admin.adminprogsHandler'.
|
|
|
END CASE.
|
|
END CASE.
|
|
|
|
|
|
|
|
|
|
+ rClass = Progress.Lang.Class:GetClass(cClass) NO-ERROR.
|
|
|
cMethode = 'createData'.
|
|
cMethode = 'createData'.
|
|
|
-
|
|
|
|
|
- lRetVal = DYNAMIC-INVOKE ( oHandler, cMethode,
|
|
|
|
|
- INPUT oJsonIdent ,
|
|
|
|
|
- INPUT oJsonData ,
|
|
|
|
|
|
|
+ oHandler = rClass:NEW().
|
|
|
|
|
+ lRetVal = DYNAMIC-INVOKE (oHandler, cMethode,
|
|
|
|
|
+ INPUT oJsonIdent ,
|
|
|
|
|
+ INPUT oJsonData ,
|
|
|
OUTPUT oJsonResult
|
|
OUTPUT oJsonResult
|
|
|
- ).
|
|
|
|
|
|
|
+ ) NO-ERROR.
|
|
|
|
|
+ outilitiesHandler:evaluateErrorStatus(hError).
|
|
|
IF NOT lRetVal THEN LEAVE.
|
|
IF NOT lRetVal THEN LEAVE.
|
|
|
|
|
|
|
|
oJsonResult:WRITE(lcJsonString, FALSE).
|
|
oJsonResult:WRITE(lcJsonString, FALSE).
|
|
|
|
|
+ oJsonResult:WriteFile('C:\TEMP\DYNAMIC_CREATE_Respons.json', TRUE).
|
|
|
LEAVE.
|
|
LEAVE.
|
|
|
END.
|
|
END.
|
|
|
|
|
|
|
@@ -668,8 +693,10 @@ MESSAGE 'getProgramName ' cProgram.
|
|
|
END CATCH.
|
|
END CATCH.
|
|
|
|
|
|
|
|
FINALLY:
|
|
FINALLY:
|
|
|
- /* DELETE OBJECT oJsonConfig. */
|
|
|
|
|
- /* DELETE OBJECT oJsonMessage.*/
|
|
|
|
|
|
|
+ DELETE OBJECT oJsonMessage NO-ERROR.
|
|
|
|
|
+ DELETE OBJECT oResponse NO-ERROR.
|
|
|
|
|
+ DELETE OBJECT oWriter NO-ERROR.
|
|
|
|
|
+ DELETE OBJECT oJsonResult NO-ERROR.
|
|
|
END FINALLY.
|
|
END FINALLY.
|
|
|
|
|
|
|
|
END METHOD.
|
|
END METHOD.
|
|
@@ -690,9 +717,6 @@ MESSAGE 'getProgramName ' cProgram.
|
|
|
DEFINE VARIABLE ii AS INTEGER NO-UNDO.
|
|
DEFINE VARIABLE ii AS INTEGER NO-UNDO.
|
|
|
DEFINE VARIABLE i1 AS INTEGER NO-UNDO.
|
|
DEFINE VARIABLE i1 AS INTEGER NO-UNDO.
|
|
|
DEFINE VARIABLE cQueryString AS CHARACTER NO-UNDO.
|
|
DEFINE VARIABLE cQueryString AS CHARACTER NO-UNDO.
|
|
|
- DEFINE VARIABLE cQueryPairs AS CHARACTER NO-UNDO.
|
|
|
|
|
- DEFINE VARIABLE cQueryKey AS CHARACTER NO-UNDO.
|
|
|
|
|
- DEFINE VARIABLE cQueryValue AS CHARACTER NO-UNDO.
|
|
|
|
|
DEFINE VARIABLE cFileName AS CHARACTER NO-UNDO.
|
|
DEFINE VARIABLE cFileName AS CHARACTER NO-UNDO.
|
|
|
DEFINE VARIABLE cFieldName AS CHARACTER NO-UNDO.
|
|
DEFINE VARIABLE cFieldName AS CHARACTER NO-UNDO.
|
|
|
DEFINE VARIABLE cClassName AS CHARACTER NO-UNDO.
|
|
DEFINE VARIABLE cClassName AS CHARACTER NO-UNDO.
|
|
@@ -703,63 +727,66 @@ MESSAGE 'getProgramName ' cProgram.
|
|
|
|
|
|
|
|
lRetVal = WebHandlerUtilities:getJsonFromRequest(INPUT poRequest, OUTPUT oJsonData) NO-ERROR.
|
|
lRetVal = WebHandlerUtilities:getJsonFromRequest(INPUT poRequest, OUTPUT oJsonData) NO-ERROR.
|
|
|
|
|
|
|
|
|
|
+ cLogFile = SUBSTITUTE('C:\TEMP\handlePATCH_&1.json', REPLACE(STRING(TIME,'HH:MM:SS'), ':', '')).
|
|
|
|
|
+ oJsonData:WriteFile(cLogFile, TRUE).
|
|
|
|
|
+
|
|
|
outilitiesHandler = NEW utilitiesHandler().
|
|
outilitiesHandler = NEW utilitiesHandler().
|
|
|
|
|
+ hError = ERROR-STATUS:HANDLE.
|
|
|
|
|
+ cQueryString = STRING(poRequest:GetContextValue("QUERY_STRING")) NO-ERROR.
|
|
|
|
|
|
|
|
outilitiesHandler:getHeaderData(
|
|
outilitiesHandler:getHeaderData(
|
|
|
INPUT poRequest ,
|
|
INPUT poRequest ,
|
|
|
|
|
+ INPUT cQueryString ,
|
|
|
OUTPUT ccompany ,
|
|
OUTPUT ccompany ,
|
|
|
OUTPUT cuser_name ,
|
|
OUTPUT cuser_name ,
|
|
|
OUTPUT cAnzeigeName ,
|
|
OUTPUT cAnzeigeName ,
|
|
|
OUTPUT ilanguage_id ,
|
|
OUTPUT ilanguage_id ,
|
|
|
- OUTPUT cSessionToken
|
|
|
|
|
|
|
+ OUTPUT cSessionToken,
|
|
|
|
|
+ OUTPUT cFunction ,
|
|
|
|
|
+ OUTPUT oJsonIdent
|
|
|
).
|
|
).
|
|
|
|
|
|
|
|
- oJsonIdent = NEW JsonObject().
|
|
|
|
|
- oJsonIdent:ADD('company' , ccompany ) NO-ERROR.
|
|
|
|
|
- oJsonIdent:ADD('user_name' , cuser_name ) NO-ERROR.
|
|
|
|
|
- oJsonIdent:ADD('language_id' , iLanguage_id ) NO-ERROR.
|
|
|
|
|
- oJsonIdent:ADD('sessionToken', cSessionToken) NO-ERROR.
|
|
|
|
|
-
|
|
|
|
|
- cQueryString = STRING(poRequest:GetContextValue("QUERY_STRING")) NO-ERROR.
|
|
|
|
|
- DO ii = 1 TO NUM-ENTRIES(cQueryString, '&'):
|
|
|
|
|
- cQueryPairs = ENTRY(ii, cQueryString, '&').
|
|
|
|
|
- cQueryKey = ENTRY(1 , cQueryPairs , '=').
|
|
|
|
|
- cQueryValue = ENTRY(2 , cQueryPairs , '=').
|
|
|
|
|
- IF oJsonIdent:Has(cQueryKey) THEN oJsonIdent:SET(cQueryKey, cQueryValue) NO-ERROR.
|
|
|
|
|
- ELSE oJsonIdent:ADD(cQueryKey, cQueryValue) NO-ERROR.
|
|
|
|
|
- END.
|
|
|
|
|
- MESSAGE 'dynamic PATCH' STRING(oJsonIdent:GetJsonText()).
|
|
|
|
|
cForm_Id = poRequest:URI:GetQueryValue("formId") NO-ERROR.
|
|
cForm_Id = poRequest:URI:GetQueryValue("formId") NO-ERROR.
|
|
|
cClassName = ENTRY(1, cForm_Id, '_').
|
|
cClassName = ENTRY(1, cForm_Id, '_').
|
|
|
|
|
+ cFileName = ENTRY(1, cForm_Id, '_').
|
|
|
|
|
+ //
|
|
|
|
|
+ // mögliche Benutzer für das durchsuchen von HTML-DOkumenten und Labeltexten ...
|
|
|
|
|
+ //
|
|
|
|
|
+ cuser_name = oJsonIdent:GetCharacter('H_user_name') NO-ERROR.
|
|
|
|
|
+ IF NOT ERROR-STATUS:ERROR AND LOOKUP(cuser_name, cUsers, ',') = 0 THEN cUsers = cuser_name + ',' + cUsers.
|
|
|
|
|
+ cuser_name = oJsonIdent:GetCharacter('user_name') NO-ERROR.
|
|
|
|
|
+ IF NOT ERROR-STATUS:ERROR AND LOOKUP(cuser_name, cUsers, ',') = 0 THEN cUsers = cuser_name + ',' + cUsers.
|
|
|
|
|
|
|
|
lRetVal = FALSE.
|
|
lRetVal = FALSE.
|
|
|
|
|
+
|
|
|
cProgram = outilitiesHandler:getProgramName (
|
|
cProgram = outilitiesHandler:getProgramName (
|
|
|
INPUT oJsonIdent,
|
|
INPUT oJsonIdent,
|
|
|
INPUT cUsers
|
|
INPUT cUsers
|
|
|
).
|
|
).
|
|
|
|
|
|
|
|
- cFunction = oJsonIdent:GetCharacter('function').
|
|
|
|
|
-
|
|
|
|
|
REPEAT TRANSACTION WHILE cFunction = 'update' ON ERROR UNDO, LEAVE:
|
|
REPEAT TRANSACTION WHILE cFunction = 'update' ON ERROR UNDO, LEAVE:
|
|
|
-
|
|
|
|
|
CASE cClassName:
|
|
CASE cClassName:
|
|
|
WHEN 'users' THEN
|
|
WHEN 'users' THEN
|
|
|
- oHandler = NEW usersHandler().
|
|
|
|
|
|
|
+ cClass = 'admin.adminprogsHandler'.
|
|
|
WHEN 'messages' THEN
|
|
WHEN 'messages' THEN
|
|
|
- oHandler = NEW adminprogsHandler().
|
|
|
|
|
|
|
+ cClass = 'admin.adminprogsHandler'.
|
|
|
WHEN 'labeltexte' THEN
|
|
WHEN 'labeltexte' THEN
|
|
|
- oHandler = NEW adminprogsHandler().
|
|
|
|
|
|
|
+ cClass = 'admin.adminprogsHandler'.
|
|
|
END CASE.
|
|
END CASE.
|
|
|
|
|
|
|
|
|
|
+ rClass = Progress.Lang.Class:GetClass(cClass) NO-ERROR.
|
|
|
cMethode = 'updateData'.
|
|
cMethode = 'updateData'.
|
|
|
-
|
|
|
|
|
- lRetVal = DYNAMIC-INVOKE ( oHandler, cMethode,
|
|
|
|
|
- INPUT oJsonIdent ,
|
|
|
|
|
- INPUT oJsonData ,
|
|
|
|
|
|
|
+ oHandler = rClass:NEW().
|
|
|
|
|
+ lRetVal = DYNAMIC-INVOKE ( oHandler, cMethode,
|
|
|
|
|
+ INPUT oJsonIdent ,
|
|
|
|
|
+ INPUT oJsonData ,
|
|
|
OUTPUT oJsonResult
|
|
OUTPUT oJsonResult
|
|
|
- ).
|
|
|
|
|
|
|
+ ) NO-ERROR.
|
|
|
|
|
+ outilitiesHandler:evaluateErrorStatus(hError).
|
|
|
|
|
+ IF NOT lRetVal THEN LEAVE.
|
|
|
|
|
|
|
|
oJsonResult:WRITE(LcJsonString, FALSE).
|
|
oJsonResult:WRITE(LcJsonString, FALSE).
|
|
|
|
|
+ // oJsonResult:WriteFile('C:\TEMP\DYNAMIC_UPDATE_Respons.json', TRUE).
|
|
|
LEAVE.
|
|
LEAVE.
|
|
|
END.
|
|
END.
|
|
|
|
|
|
|
@@ -775,7 +802,7 @@ MESSAGE 'getProgramName ' cProgram.
|
|
|
oJsonMessage:ADD('message', 'Fehler beim Update/PATCH des Users').
|
|
oJsonMessage:ADD('message', 'Fehler beim Update/PATCH des Users').
|
|
|
oJsonMessage:WRITE(lcJsonString, FALSE).
|
|
oJsonMessage:WRITE(lcJsonString, FALSE).
|
|
|
END.
|
|
END.
|
|
|
- // MESSAGE 'R�ckmeldung ' STRING(lcJsonString).
|
|
|
|
|
|
|
+ // MESSAGE 'Rueckmeldung ' STRING(lcJsonString).
|
|
|
|
|
|
|
|
oWriter:Open().
|
|
oWriter:Open().
|
|
|
oWriter:Write(lcJsonString).
|
|
oWriter:Write(lcJsonString).
|
|
@@ -788,8 +815,10 @@ MESSAGE 'getProgramName ' cProgram.
|
|
|
END CATCH.
|
|
END CATCH.
|
|
|
|
|
|
|
|
FINALLY:
|
|
FINALLY:
|
|
|
- /* DELETE OBJECT oJsonConfig. */
|
|
|
|
|
- /* DELETE OBJECT oJsonMessage.*/
|
|
|
|
|
|
|
+ DELETE OBJECT oJsonMessage NO-ERROR.
|
|
|
|
|
+ DELETE OBJECT oWriter NO-ERROR.
|
|
|
|
|
+ DELETE OBJECT oResponse NO-ERROR.
|
|
|
|
|
+ DELETE OBJECT oHandler NO-ERROR.
|
|
|
END FINALLY.
|
|
END FINALLY.
|
|
|
|
|
|
|
|
END METHOD.
|
|
END METHOD.
|