getFileDictImpl.cls 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. /*------------------------------------------------------------------------
  2. File : adresse_dict
  3. Purpose :
  4. Syntax :
  5. Description :
  6. Author(s) : walter.riechsteiner
  7. Created : Thu Jun 26 13:56:20 CEST 2025
  8. Notes :
  9. ----------------------------------------------------------------------*/
  10. BLOCK-LEVEL ON ERROR UNDO, THROW.
  11. USING OpenEdge.Core.String FROM PROPATH.
  12. USING OpenEdge.Net.HTTP.IHttpResponse FROM PROPATH.
  13. USING OpenEdge.Net.HTTP.StatusCodeEnum FROM PROPATH.
  14. USING OpenEdge.Web.IWebRequest FROM PROPATH.
  15. USING OpenEdge.Web.WebHandler FROM PROPATH.
  16. USING OpenEdge.Web.WebResponseWriter FROM PROPATH.
  17. USING Progress.Json.ObjectModel.JsonObject FROM PROPATH.
  18. USING Progress.Json.ObjectModel.JsonArray FROM PROPATH.
  19. USING src.ch.adprime.gemis.WebHandlerUtilities FROM PROPATH.
  20. USING src.ch.adprime.gemis.ErrorMessage FROM PROPATH.
  21. CLASS getFileDIctImpl INHERITS WebHandler:
  22. DEFINE TEMP-TABLE tFileDIct
  23. SERIALIZE-NAME 'fields'
  24. FIELD cName AS CHARACTER SERIALIZE-NAME 'name'
  25. FIELD cType AS CHARACTER SERIALIZE-NAME 'type'
  26. FIELD iLaenge AS INTEGER SERIALIZE-NAME 'width'
  27. .
  28. /*------------------------------------------------------------------------------
  29. Purpose:
  30. Notes:
  31. ------------------------------------------------------------------------------*/
  32. METHOD OVERRIDE PROTECTED INTEGER HandleGet (INPUT poRequest AS IWebRequest ):
  33. DEFINE VARIABLE oResponse AS IHttpResponse NO-UNDO.
  34. DEFINE VARIABLE oWriter AS WebResponseWriter NO-UNDO.
  35. DEFINE VARIABLE oError AS ErrorMessage NO-UNDO.
  36. DEFINE VARIABLE oBody AS String NO-UNDO.
  37. DEFINE VARIABLE oJsonResponse AS JsonObject NO-UNDO.
  38. DEFINE VARIABLE lDebug AS LOGICAL NO-UNDO.
  39. DEFINE VARIABLE cDefautlCharSet AS CHARACTER NO-UNDO INIT 'UTF-8'.
  40. DEFINE VARIABLE cCorralationID AS CHARACTER NO-UNDO.
  41. DEFINE VARIABLE cContent-Type AS CHARACTER NO-UNDO.
  42. DEFINE VARIABLE htFileDIct AS HANDLE NO-UNDO.
  43. DEFINE VARIABLE oJsonArray AS JsonArray NO-UNDO.
  44. DEFINE VARIABLE lcJsonInhalt AS LONGCHAR NO-UNDO.
  45. DEFINE VARIABLE ii AS INTEGER NO-UNDO.
  46. DEFINE VARIABLE cFileName AS CHARACTER NO-UNDO.
  47. DEFINE VARIABLE cFelder AS CHARACTER NO-UNDO.
  48. cFileName = poRequest:URI:GetQueryValue("File").
  49. MESSAGE 'File-Name = ' cFileName.
  50. FIND FIRST AnaDat._File NO-LOCK
  51. WHERE AnaDat._File._File-Name = cFileName NO-ERROR.
  52. FOR EACH AnaDat._Field OF AnaDat._File:
  53. CREATE tFileDIct.
  54. ASSIGN
  55. tFileDIct.cName = AnaDat._Field._Field-Name
  56. tFileDIct.cType = REPLACE(AnaDat._Field._Data-Type, '-', '_')
  57. tFileDIct.iLaenge = 10.
  58. CASE AnaDat._Field._Data-Type:
  59. WHEN 'logical' THEN
  60. tFileDIct.cType = 'checkbox'.
  61. WHEN 'character' THEN
  62. tFileDIct.cType = 'text'.
  63. WHEN 'integer' THEN
  64. tFileDIct.cType = 'number'.
  65. WHEN 'logical' THEN
  66. tFileDIct.cType = 'checkbox'.
  67. END CASE.
  68. END.
  69. htFileDIct = TEMP-TABLE tFileDIct:DEFAULT-BUFFER-HANDLE.
  70. cContent-Type = "application/json".
  71. oError = NEW ErrorMessage().
  72. oError:lDebug = lDebug.
  73. oJsonResponse = NEW JsonObject().
  74. htFileDIct:WRITE-JSON('JsonObject', oJsonResponse).
  75. oJsonResponse:WRITE(lcJsonInhalt, FALSE).
  76. /* ii = INDEX(lcJsonInhalt, '['). */
  77. /* lcJsonInhalt = SUBSTRING(lcJsonInhalt, ii). */
  78. /* */
  79. /* ii = R-INDEX(lcJsonInhalt, ']'). */
  80. /* lcJsonInhalt = SUBSTRING(lcJsonInhalt, 01, ii).*/
  81. MESSAGE "GetHandler".
  82. // oBody = NEW String(oJsonResponse:GetJsonText()).
  83. oBody = NEW String(lcJsonInhalt).
  84. WebHandlerUtilities:createHttpResponse(INPUT INTEGER(StatusCodeEnum:OK), INPUT oBody, INPUT cContent-Type, INPUT cDefautlCharSet, INPUT cCorralationID, OUTPUT oResponse).
  85. // oResponse:SetHeader(HttpHeaderBuilder:Build(cHeaderCorralationID):Value(cCorralationID):Header).
  86. oWriter = NEW WebResponseWriter(oResponse).
  87. oWriter:Open().
  88. oWriter:Close().
  89. RETURN 0.
  90. CATCH e AS Progress.Lang.Error:
  91. END CATCH.
  92. FINALLY:
  93. END FINALLY.
  94. END METHOD.
  95. METHOD OVERRIDE PROTECTED INTEGER HandleNotAllowedMethod(INPUT poRequest AS IWebRequest):
  96. DEFINE VARIABLE result AS INTEGER NO-UNDO.
  97. MESSAGE "HandleNotAllowedMethod called" VIEW-AS ALERT-BOX.
  98. RETURN result.
  99. END METHOD.
  100. METHOD OVERRIDE PROTECTED INTEGER HandleNotImplemented(INPUT poRequest AS IWebRequest):
  101. DEFINE VARIABLE result AS INTEGER NO-UNDO.
  102. MESSAGE "HandleNotImplemented called" VIEW-AS ALERT-BOX.
  103. RETURN result.
  104. END METHOD.
  105. END CLASS.