getTableFIeldsImpl.cls 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  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 getTableFieldsImpl INHERITS WebHandler:
  22. DEFINE TEMP-TABLE tFileDict
  23. SERIALIZE-NAME 'fields'
  24. FIELD cName AS CHARACTER SERIALIZE-NAME 'fieldName'
  25. FIELD cLabel AS CHARACTER SERIALIZE-NAME 'label'
  26. FIELD cType AS CHARACTER SERIALIZE-NAME 'type'
  27. FIELD iMaxLength AS INTEGER SERIALIZE-NAME 'maxLength'
  28. FIELD cFormat AS CHARACTER SERIALIZE-NAME 'format'
  29. FIELD lReadOnly AS LOGICAL SERIALIZE-NAME 'editable'
  30. FIELD lhidden AS LOGICAL SERIALIZE-NAME 'hidden'
  31. .
  32. /*------------------------------------------------------------------------------
  33. Purpose:
  34. Notes:
  35. ------------------------------------------------------------------------------*/
  36. METHOD OVERRIDE PROTECTED INTEGER HandleGet (INPUT poRequest AS IWebRequest ):
  37. DEFINE VARIABLE oResponse AS IHttpResponse NO-UNDO.
  38. DEFINE VARIABLE oWriter AS WebResponseWriter NO-UNDO.
  39. DEFINE VARIABLE oError AS ErrorMessage NO-UNDO.
  40. DEFINE VARIABLE oBody AS String NO-UNDO.
  41. DEFINE VARIABLE oJsonResponse AS JsonObject NO-UNDO.
  42. DEFINE VARIABLE oJsonArray AS JsonArray NO-UNDO.
  43. DEFINE VARIABLE lDebug AS LOGICAL NO-UNDO.
  44. DEFINE VARIABLE cDefautlCharSet AS CHARACTER NO-UNDO INIT 'UTF-8'.
  45. DEFINE VARIABLE cCorralationID AS CHARACTER NO-UNDO.
  46. DEFINE VARIABLE cContent-Type AS CHARACTER NO-UNDO.
  47. DEFINE VARIABLE htFileDict AS HANDLE NO-UNDO.
  48. DEFINE VARIABLE lcJsonInhalt AS LONGCHAR NO-UNDO.
  49. DEFINE VARIABLE ii AS INTEGER NO-UNDO.
  50. DEFINE VARIABLE i1 AS INTEGER NO-UNDO.
  51. DEFINE VARIABLE i2 AS INTEGER NO-UNDO.
  52. DEFINE VARIABLE cFileName AS CHARACTER NO-UNDO.
  53. DEFINE VARIABLE cFileNames AS CHARACTER NO-UNDO.
  54. DEFINE VARIABLE cFelder AS CHARACTER NO-UNDO.
  55. cFileNames = poRequest:URI:GetQueryValue("tables").
  56. MESSAGE 'File-Names = ' cFileNames.
  57. cFileNames = REPLACE(cFileNames, ',', ';').
  58. DO ii = 1 TO NUM-ENTRIES(cFileNames, ';'):
  59. cFileName = ENTRY(ii,cFileNames, ';').
  60. FIND FIRST AnaDat._File NO-LOCK
  61. WHERE AnaDat._File._File-Name = cFileName NO-ERROR.
  62. FOR EACH AnaDat._Field OF AnaDat._File:
  63. CREATE tFileDict.
  64. ASSIGN
  65. tFileDict.cName = AnaDat._File._File-Name + '.' + AnaDat._Field._Field-Name
  66. tFileDict.cType = AnaDat._Field._Data-Type
  67. tFileDict.cFormat = AnaDat._Field._Format
  68. tFileDict.lhidden = FALSE
  69. tFileDict.lReadOnly = FALSE
  70. tFileDict.iMaxLength = 10.
  71. FIND FIRST labeltexte NO-LOCK
  72. WHERE labeltexte.mandant = '1000'
  73. AND labeltexte.benutzer = ''
  74. AND labeltexte.program = ''
  75. AND labeltexte.feld = Anadat._Field._Field-Name
  76. AND labeltexte.sprcd = 1 NO-ERROR.
  77. IF AVAILABLE labeltexte THEN
  78. DO:
  79. tFileDict.cLabel = labeltexte.sidelabel.
  80. END.
  81. ELSE
  82. DO:
  83. tFileDict.cLabel = (IF AnaDat._Field._Label <> ? THEN AnaDat._Field._Label ELSE AnaDat._Field._Field-Name).
  84. END.
  85. IF INDEX(AnaDat._Field._Format, '(') = 0 THEN tFileDict.iMaxLength = LENGTH(AnaDat._Field._Format).
  86. ELSE
  87. DO:
  88. i1 = INDEX(AnaDat._Field._Format, '(') + 1.
  89. i2 = INDEX(AnaDat._Field._Format, ')').
  90. tFileDict.iMaxLength = INTEGER(SUBSTRING(_Field._Format, i1, i2 - i1)).
  91. END.
  92. END.
  93. END.
  94. htFileDict = TEMP-TABLE tFileDict:DEFAULT-BUFFER-HANDLE.
  95. cContent-Type = "application/json".
  96. cDefautlCharSet = 'utf-8'.
  97. oJsonArray = NEW JsonArray().
  98. oJsonResponse = NEW JsonObject().
  99. MESSAGE '1'.
  100. htFileDict:WRITE-JSON("JsonArray", oJsonArray).
  101. htFileDict:WRITE-JSON("JsonObject", oJsonResponse).
  102. MESSAGE "GetHandler" STRING(lcJsonInhalt).
  103. // oBody = NEW String(oJsonResponse:GetJsonText()).
  104. oBody = NEW String(oJsonResponse:GetJsonText()).
  105. WebHandlerUtilities:createHttpResponse(INPUT INTEGER(StatusCodeEnum:OK), INPUT oBody, INPUT cContent-Type, INPUT cDefautlCharSet, INPUT cCorralationID, OUTPUT oResponse).
  106. // oResponse:SetHeader(HttpHeaderBuilder:Build(cHeaderCorralationID):Value(cCorralationID):Header).
  107. oWriter = NEW WebResponseWriter(oResponse).
  108. oWriter:Open().
  109. oWriter:Close().
  110. RETURN 0.
  111. CATCH e AS Progress.Lang.Error:
  112. END CATCH.
  113. FINALLY:
  114. END FINALLY.
  115. END METHOD.
  116. METHOD OVERRIDE PROTECTED INTEGER HandleNotAllowedMethod(INPUT poRequest AS IWebRequest):
  117. DEFINE VARIABLE result AS INTEGER NO-UNDO.
  118. MESSAGE "HandleNotAllowedMethod called" VIEW-AS ALERT-BOX.
  119. RETURN result.
  120. END METHOD.
  121. METHOD OVERRIDE PROTECTED INTEGER HandleNotImplemented(INPUT poRequest AS IWebRequest):
  122. DEFINE VARIABLE result AS INTEGER NO-UNDO.
  123. MESSAGE "HandleNotImplemented called" VIEW-AS ALERT-BOX.
  124. RETURN result.
  125. END METHOD.
  126. END CLASS.