| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856 |
-
- /*------------------------------------------------------------------------
- File : adresse_dict
- Purpose :
- Syntax :
- Description :
- Author(s) : walter.riechsteiner
- Created : Thu Jun 26 13:56:20 CEST 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.WebHandler FROM PROPATH.
- USING OpenEdge.Web.WebResponseWriter FROM PROPATH.
- USING Progress.Json.ObjectModel.JsonObject FROM PROPATH.
- USING Progress.Json.ObjectModel.JsonArray FROM PROPATH.
- USING Progress.Json.ObjectModel.ObjectModelParser FROM PROPATH.
- USING src.ch.adprime.gemis.WebHandlerUtilities FROM PROPATH.
- USING utilities.utilitiesHandler FROM PROPATH.
- USING Progress.Json.ObjectModel.JsonDataType FROM PROPATH.
- CLASS admin.formdesignerImpl 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 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 outilitiesHandler AS utilitiesHandler NO-UNDO.
-
- DEFINE TEMP-TABLE tcompanies
- SERIALIZE-NAME 'companies'
- FIELD company AS CHARACTER SERIALIZE-NAME 'company'
- FIELD company_Name AS CHARACTER SERIALIZE-NAME 'company_name'
- FIELD lselected AS LOGICAL SERIALIZE-NAME 'selected'
- .
- DEFINE VARIABLE htcompanies AS HANDLE NO-UNDO.
-
- DEFINE TEMP-TABLE tusers
- FIELD user_name AS CHARACTER
- FIELD display_name AS CHARACTER
- .
- DEFINE VARIABLE htusers AS HANDLE NO-UNDO.
-
- DEFINE TEMP-TABLE tlanguages
- FIELD language_id AS INTEGER
- FIELD language_name AS CHAR
- .
- DEFINE VARIABLE htlanguages AS HANDLE NO-UNDO.
-
- DEFINE TEMP-TABLE tFileDict
- SERIALIZE-NAME 'fields'
- FIELD cId AS CHARACTER SERIALIZE-NAME 'id'
- FIELD cName AS CHARACTER SERIALIZE-NAME 'fieldName'
- FIELD cLabel AS CHARACTER SERIALIZE-NAME 'label'
- FIELD cType AS CHARACTER SERIALIZE-NAME 'type'
- FIELD cDisplayType AS CHARACTER SERIALIZE-NAME 'displayType'
- FIELD cInputMode AS CHARACTER SERIALIZE-NAME 'inputMode'
- FIELD lshowSpinner AS LOGICAL SERIALIZE-NAME 'showSpinner'
- FIELD cFormat AS CHARACTER SERIALIZE-NAME 'format'
- FIELD iMaxLength AS INTEGER SERIALIZE-NAME 'maxLength'
- FIELD iDecimals AS INTEGER SERIALIZE-NAME 'decimalPlaces'
- FIELD leditable AS LOGICAL SERIALIZE-NAME 'editable'
- FIELD lhidden AS LOGICAL SERIALIZE-NAME 'hidden'
- FIELD cAusrichtung AS CHARACTER SERIALIZE-NAME 'align'
- .
-
- DEFINE TEMP-TABLE tConfig
- SERIALIZE-NAME 'existingConfigs'
- FIELD cId AS CHARACTER SERIALIZE-NAME 'id'
- FIELD cFormTitle AS CHARACTER SERIALIZE-NAME 'formTitle'
- FIELD cFormId AS CHARACTER SERIALIZE-NAME 'formId'
- FIELD cCreated AS CHARACTER SERIALIZE-NAME 'created'
- .
- DEFINE DATASET dsResponse
- SERIALIZE-NAME 'dsResponse'
- FOR tFileDict, tConfig.
- DEFINE VARIABLE hdsResponse AS HANDLE NO-UNDO.
-
- /*------------------------------------------------------------------------------
- Purpose:
- Notes:
- ------------------------------------------------------------------------------*/
- METHOD PUBLIC LOGICAL createTemptable(
- INPUT ipoJsonFields AS JsonArray,
- OUTPUT ophtTable AS HANDLE ,
- OUTPUT ophBuffer AS HANDLE
- ):
-
- DEFINE VARIABLE lRetVal AS LOGICAL NO-UNDO.
- DEFINE VARIABLE iType AS INTEGER NO-UNDO.
- DEFINE VARIABLE cType AS CHARACTER NO-UNDO.
- DEFINE VARIABLE cField AS CHARACTER NO-UNDO.
- DEFINE VARIABLE cFunction AS CHARACTER NO-UNDO.
- DEFINE VARIABLE ii AS INTEGER NO-UNDO.
- DEFINE VARIABLE i1 AS INTEGER NO-UNDO.
- DEFINE VARIABLE cFieldNames AS CHARACTER NO-UNDO EXTENT.
- DEFINE VARIABLE oJsonField AS JsonObject NO-UNDO.
- CREATE TEMP-TABLE ophtTable.
- DO i1 = 1 TO ipoJsonFields:LENGTH:
- oJsonField = NEW JsonObject().
- oJsonField = ipoJsonFields:GetJsonObject(i1).
- IF i1 = 1 THEN
- DO:
- cFieldNames = oJsonField:getNames() NO-ERROR.
- DO ii = 1 TO EXTENT(cFieldNames):
- cField = cFieldNames[ii].
- iType = oJsonField:GetType(cField).
- cType = ''.
- CASE iType:
- WHEN JsonDataType:STRING THEN
- cType = 'character'.
- WHEN JsonDataType:NUMBER THEN
- cType = 'integer'.
- WHEN JsonDataType:BOOLEAN THEN
- cType = 'logical'.
- WHEN JsonDataType:OBJECT THEN
- MESSAGE 'Json-Feldtype OBJECT' cField.
- WHEN JsonDataType:ARRAY THEN
- MESSAGE 'Json-Feldtype ARRAY' cField.
- WHEN JsonDataType:NULL THEN
- cType = 'character'.
- END CASE.
- IF cType = '' THEN cType = 'character'.
- ophtTable:ADD-NEW-FIELD(cField, cType) NO-ERROR.
- END.
- ophtTable:TEMP-TABLE-PREPARE('ttTemp').
- ophBuffer = ophtTable:DEFAULT-BUFFER-HANDLE.
- END.
- ophBuffer:BUFFER-CREATE().
-
- DO ii = 1 TO EXTENT(cFieldNames):
- cField = cFieldNames[ii].
- CASE ophBuffer:BUFFER-FIELD(cField):DATA-TYPE:
- WHEN 'character' THEN
- ophBuffer:BUFFER-FIELD(cField):BUFFER-VALUE = oJsonField:GetCharacter(cField) NO-ERROR.
- WHEN 'integer' THEN
- ophBuffer:BUFFER-FIELD(cField):BUFFER-VALUE = oJsonField:GetInteger(cField) NO-ERROR.
- WHEN 'logical' THEN
- ophBuffer:BUFFER-FIELD(cField):BUFFER-VALUE = STRING(oJsonField:GetLogical(cField)) NO-ERROR.
- END CASE.
- IF ophBuffer:BUFFER-FIELD(cField):BUFFER-VALUE = ? THEN ophBuffer:BUFFER-FIELD(cField):BUFFER-VALUE = ''.
- END.
- DELETE OBJECT oJsonField NO-ERROR.
- END.
- lRetVal = TRUE.
- RETURN lRetVal.
- END METHOD.
- /*------------------------------------------------------------------------------
- Purpose:
- Notes:
- ------------------------------------------------------------------------------*/
- METHOD PUBLIC LOGICAL fillFileDict(
- INPUT oJsonIdent AS JsonObject
- ):
-
- DEFINE VARIABLE lresult AS LOGICAL NO-UNDO INIT FALSE.
- DEFINE VARIABLE ii AS INTEGER NO-UNDO.
- DEFINE VARIABLE i1 AS INTEGER NO-UNDO.
- DEFINE VARIABLE i2 AS INTEGER NO-UNDO.
- DEFINE VARIABLE lRetVal AS LOG NO-UNDO INIT FALSE.
- DEFINE VARIABLE hBuffer AS HANDLE NO-UNDO.
- DEFINE VARIABLE hQuery AS HANDLE NO-UNDO.
- DEFINE VARIABLE rFile AS RECID NO-UNDO.
- DEFINE VARIABLE cViewas AS CHARACTER NO-UNDO.
-
- DEFINE VARIABLE cFileNames AS CHARACTER NO-UNDO.
- DEFINE VARIABLE cFileName AS CHARACTER NO-UNDO.
- DEFINE VARIABLE cLDBName AS CHARACTER NO-UNDO.
- DEFINE VARIABLE cDBName AS CHARACTER NO-UNDO.
- DEFINE VARIABLE cTestName AS CHARACTER NO-UNDO.
- DEFINE VARIABLE cDBFileName AS CHARACTER NO-UNDO.
- EMPTY TEMP-TABLE tFileDict.
- lRetVal = FALSE.
- cFileNames = oJsonIdent:GetCharacter('tables').
- DO ii = 1 TO NUM-ENTRIES(cFileNames, ';'):
- cFileName = ENTRY(ii,cFileNames, ';').
-
- DO i1 = 1 TO NUM-DBS:
- cDBName = LDBNAME(i1).
- cFileName = SUBSTITUTE('&1.&2', cDBName, cFileName) NO-ERROR.
- CREATE BUFFER hBuffer FOR TABLE cFileName NO-ERROR.
- IF ERROR-STATUS:ERROR OR
- NOT VALID-HANDLE(hBuffer) THEN NEXT.
- /* lRetVal = hBuffer:FIND-FIRST('WHERE _File-Name = ' + QUOTER(cFileName), NO-LOCK) NO-ERROR.*/
- /* IF lRetVal THEN */
- /* DO: */
- /* rFile = hBuffer:RECID. */
- /* DELETE OBJECT hBuffer NO-ERROR. */
- /* LEAVE. */
- /* END. */
- /* DELETE OBJECT hBuffer. */
- lRetVal = TRUE.
- END.
- IF NOT lRetVal THEN NEXT.
-
- /* cDBFileName = cDBName + '.' + '_Field'. */
- /* */
- /* CREATE BUFFER hBuffer FOR TABLE cDBFileName. */
- /* CREATE QUERY hQuery. */
- /* hQuery:SET-BUFFERS(hBuffer). */
- /* hQuery:QUERY-PREPARE(SUBSTITUTE('FOR EACH &1 WHERE _Field._File-Recid = &2 NO-LOCK BY _Field._Order', cDBFileName, rFile)).*/
- /* hQuery:QUERY-OPEN(). */
-
- DO WHILE NOT hQuery:QUERY-OFF-END:
- hQuery:GET-NEXT(NO-LOCK) NO-ERROR.
- IF hQuery:QUERY-OFF-END THEN LEAVE.
- DO i1 = 1 TO hBuffer:NUM-FIELDS:
- IF hBuffer:BUFFER-FIELD(i1):NAME = 'wordindex' THEN NEXT.
- CREATE tFileDict.
- ASSIGN
- tFileDict.cId = cFilename + '_' + hBuffer::_Field-Name
- tFileDict.cName = cFilename + '_' + hBuffer::_Field-Name
- tFileDict.cFormat = hBuffer::_Format
- tFileDict.cType = hBuffer::_Data-Type
- tFileDict.iDecimals = 0
- tFileDict.lhidden = FALSE
- tFileDict.leditable = TRUE
- tFileDict.iMaxLength = 12
- tFileDict.cAusrichtung = 'left'
- tFileDict.cDisplayType = ?
- tFileDict.lShowSpinner = ?
- tFileDict.cInputMode = ?
- .
- FIND FIRST labeltexte NO-LOCK
- WHERE labeltexte.company = oJsonIdent:GetCharacter('company')
- AND labeltexte.table_name = cFileName
- AND labeltexte.field_name = hBuffer::_Field-Name
- AND labeltexte.language_id = oJsonIdent:GetInteger('language_id') NO-ERROR.
- IF NOT AVAILABLE labeltexte THEN
- DO:
- FIND FIRST labeltexte NO-LOCK
- WHERE labeltexte.company = oJsonIdent:GetCharacter('company')
- AND labeltexte.table_name = 'table'
- AND labeltexte.field_name = hBuffer::_Field-Name NO-ERROR.
- END.
- IF NOT AVAILABLE labeltexte THEN
- DO:
- FIND FIRST labeltexte NO-LOCK
- WHERE labeltexte.company = oJsonIdent:GetCharacter('company')
- AND labeltexte.field_name = hBuffer::_Field-Name
- AND labeltexte.language_id = oJsonIdent:GetInteger('language_id') NO-ERROR.
- END.
- IF AVAILABLE labeltexte THEN
- DO:
- tFileDict.cLabel = labeltexte.sidelabel.
- END.
- ELSE
- DO:
- tFileDict.cLabel = (IF hBuffer::_Label <> ? THEN hBuffer::_Label ELSE hBuffer::_Field-Name).
- END.
- IF INDEX(hBuffer::_Format, '(') = 0 THEN tFileDict.iMaxLength = LENGTH(hBuffer::_Format).
- ELSE
- DO:
- i1 = INDEX(hBuffer::_Format, '(') + 1.
- i2 = INDEX(hBuffer::_Format, ')').
- tFileDict.iMaxLength = INTEGER(SUBSTRING(hBuffer::_Format, i1, i2 - i1)).
- END.
-
- CASE tFileDict.cType:
- WHEN 'character' THEN
- DO:
- ASSIGN
- tFileDict.cType = 'text'
- tFileDict.iDecimals = 0.
- IF hBuffer::_Extent > 0 THEN tFileDict.cType = 'textarea'.
- END.
- WHEN 'Date' THEN
- DO:
- ASSIGN
- tFileDict.cType = 'date'
- tFileDict.cFormat = '99.99.9999'
- tFileDict.iDecimals = 0
- tFileDict.iMaxLength = tFileDict.iMaxLength + 2
- tFileDict.cAusrichtung = 'center'.
- END.
- WHEN 'Decimal' THEN
- DO:
- ASSIGN
- tFileDict.cType = 'decimal'
- tFileDict.iDecimals = hBuffer::_Decimals
- tFileDict.cDisplayType = 'text'
- tFileDict.cInputMode = 'decimal'
- tFileDict.lShowSpinner = FALSE
- tFileDict.iMaxLength = tFileDict.iMaxLength
- tFileDict.cAusrichtung = 'right'.
- END.
- WHEN 'Integer' OR
- WHEN 'Int64' THEN
- DO:
- ASSIGN
- tFileDict.cType = 'integer'
- tFileDict.iDecimals = 0
- tFileDict.cDisplayType = 'text'
- tFileDict.cInputMode = 'numeric'
- tFileDict.lShowSpinner = FALSE
- tFileDict.iMaxLength = tFileDict.iMaxLength
- tFileDict.cAusrichtung = 'right'.
- END.
- WHEN 'Recid' THEN
- DO:
- ASSIGN
- tFileDict.cType = 'integer'
- tFileDict.iDecimals = 0
- tFileDict.cDisplayType = 'text'
- tFileDict.cInputMode = 'text'
- tFileDict.lShowSpinner = FALSE
- tFileDict.lHidden = TRUE
- tFileDict.leditable = FALSE.
- END.
- WHEN 'logical' THEN
- DO:
- ASSIGN
- tFileDict.cType = 'checkbox'
- tFileDict.cAusrichtung = 'center'.
- END.
- END CASE.
-
- cViewas = hBuffer::_View-as.
- CASE cViewas:
- WHEN 'combo-box' THEN
- tFileDict.cType = 'select'.
- WHEN 'editor' THEN
- ASSIGN
- tFileDict.cType = 'textarea'.
- END CASE.
-
- /* tFileDict.cFormat = REPLACE(tFileDict.cFormat, '9', '0').*/
- /* tFileDict.cFormat = REPLACE(tFileDict.cFormat, '>', ''). */
- /* tFileDict.cFormat = REPLACE(tFileDict.cFormat, '<', ''). */
- /* tFileDict.cAusrichtung = 'right'. */
- END.
- hQuery:QUERY-CLOSE().
- DELETE OBJECT hBuffer.
- DELETE OBJECT hQuery.
- END.
-
- lResult = TRUE.
- RETURN lresult.
- 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 oJsonCompanies AS JsonArray NO-UNDO.
- DEFINE VARIABLE oJsonUsers AS JsonArray NO-UNDO.
- DEFINE VARIABLE oJsonLanguages AS JsonArray NO-UNDO.
- DEFINE VARIABLE oBody AS String NO-UNDO.
-
- DEFINE VARIABLE oJsonFileDict AS JsonObject NO-UNDO.
- DEFINE VARIABLE oJsonConfig AS JsonObject NO-UNDO.
- DEFINE VARIABLE oJsonArray AS JsonArray 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 htFileDict AS HANDLE NO-UNDO.
- DEFINE VARIABLE htConfig AS HANDLE NO-UNDO.
- DEFINE VARIABLE lcJsonInhalt AS LONGCHAR NO-UNDO.
- DEFINE VARIABLE cFileNames AS CHARACTER NO-UNDO.
- DEFINE VARIABLE cFileName AS CHARACTER NO-UNDO.
- DEFINE VARIABLE ii AS INTEGER NO-UNDO.
- DEFINE VARIABLE dDateTime AS DATETIME NO-UNDO.
- DEFINE VARIABLE cDateTime AS CHARACTER NO-UNDO.
-
- DEFINE VARIABLE oJsonMenu AS JsonArray NO-UNDO.
- DEFINE VARIABLE oJsonData AS JsonObject NO-UNDO.
- DEFINE VARIABLE cConfig_id AS CHARACTER NO-UNDO.
- DEFINE VARIABLE lRetVal AS LOGICAL NO-UNDO INIT FALSE.
- DEFINE VARIABLE cFunction 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.
-
- outilitiesHandler = NEW utilitiesHandler().
- outilitiesHandler:getHeaderData(
- INPUT poRequest ,
- OUTPUT ccompany ,
- OUTPUT cuser_name ,
- OUTPUT cAnzeigeName ,
- OUTPUT ilanguage_id ,
- OUTPUT cSessionToken
- ).
-
- 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.
-
- 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\formdesigner_GET.json', TRUE).
-
- cFileNames = REPLACE(oJsonIdent:GetCharacter("tables"), ',', ';') NO-ERROR.
- cFunction = oJsonIdent:GetCharacter('function').
- DO WHILE cFunction = 'init':
-
- EMPTY TEMP-TABLE tcompanies.
- FOR EACH companies NO-LOCK WHERE companies.active:
- CREATE tcompanies.
- BUFFER-COPY companies TO tcompanies.
- ASSIGN
- tcompanies.lselected = (IF companies.company = ccompany THEN TRUE ELSE FALSE).
- END.
-
- EMPTY TEMP-TABLE tusers.
- FOR EACH users NO-LOCK WHERE users.active:
- CREATE tusers.
- BUFFER-COPY users TO tusers.
- END.
-
- EMPTY TEMP-TABLE tlanguages.
- FOR EACH languages NO-LOCK:
- CREATE tlanguages.
- BUFFER-COPY languages TO tlanguages.
- END.
-
- oJsonResponse = NEW JsonObject().
- oJsonCompanies = NEW JsonArray().
- oJsonUsers = NEW JsonArray().
- oJsonLanguages = NEW JsonArray().
-
- htcompanies = TEMP-TABLE tcompanies:DEFAULT-BUFFER-HANDLE.
- htusers = TEMP-TABLE tusers :DEFAULT-BUFFER-HANDLE.
- htlanguages = TEMP-TABLE tlanguages:DEFAULT-BUFFER-HANDLE.
-
- htcompanies:WRITE-JSON('JsonArray', oJsonCompanies ).
- htusers :WRITE-JSON('JsonArray', oJsonUsers ).
- htlanguages:WRITE-JSON('JsonArray', oJsonLanguages ).
-
- oJsonResponse:ADD('companies', oJsonCompanies).
- oJsonResponse:ADD('users' , oJsonUsers ).
- oJsonResponse:ADD('languages', oJsonLanguages).
-
- oJsonResponse:WRITE(lcJsonInhalt, FALSE).
-
- lRetVal = TRUE.
- LEAVE.
- END.
-
- DO WHILE cFunction = 'load':
- fillFileDict(
- INPUT oJsonIdent
- ).
- EMPTY TEMP-TABLE tConfig.
- FOR EACH htmldokumente NO-LOCK
- WHERE htmldokumente.company = ccompany
- AND htmldokumente.user_name = cuser_name
- AND htmldokumente.language_id = ilanguage_id:
-
- DO ii = 1 TO NUM-ENTRIES(cFileNames, ';'):
- cFileName = ENTRY(ii, cFileNames, ';').
- IF INDEX(htmldokumente.Form_Id, cFileName) = 0 THEN NEXT.
-
- IF htmldokumente.updated_at = ? THEN
- DO:
- dDateTime = htmldokumente.created_at.
- cDateTime = STRING(htmldokumente.created_at,'99-99-9999THH:MM:SS').
- END.
- ELSE
- DO:
- dDateTime = htmldokumente.updated_at.
- cDateTime = STRING(htmldokumente.updated_at,'99-99-9999THH:MM:SS').
- END.
- CREATE tConfig.
- ASSIGN
- tConfig.cId = htmldokumente.form_id
- tConfig.cFormTitle = htmldokumente.formtitle
- tConfig.cCreated = STRING(YEAR(dDateTime),'9999')
- + '-'
- + STRING(MONTH(dDateTime),'99')
- + '-'
- + STRING(DAY(dDateTime),'99')
- + SUBSTRING(cDateTime,11).
- LEAVE.
- END.
- END.
-
- htFileDict = TEMP-TABLE tFileDict :DEFAULT-BUFFER-HANDLE.
- htConfig = TEMP-TABLE tConfig :DEFAULT-BUFFER-HANDLE.
- hdsResponse = DATASET dsResponse:HANDLE.
-
- oJsonResponse = NEW JsonObject().
- oJsonResponse:READ(hdsResponse).
- oJsonResponse:WRITE(lcJsonInhalt, FALSE).
-
- lRetVal = TRUE.
- LEAVE.
- END.
-
- DO WHILE cFunction = 'delete':
- lRetVal = FALSE.
- REPEAT TRANSACTION ON ERROR UNDO, LEAVE:
- FIND FIRST htmldokumente
- WHERE htmldokumente.company = ccompany
- AND htmldokumente.user_name = cuser_name
- AND htmldokumente.language_id = ilanguage_id
- AND htmldokumente.form_id = cConfig_id NO-ERROR.
- IF NOT AVAILABLE htmldokumente THEN LEAVE.
- DELETE htmldokumente.
- lRetVal = TRUE.
- LEAVE.
- END.
-
- oJsonResponse = NEW JsonObject().
- oJsonResponse:ADD("success", lRetVal).
- IF lRetVal THEN oJsonResponse:ADD('message', 'Konfiguration erfolreich gel�scht').
- ELSE oJsonResponse:ADD('error' , 'Konfiguration nicht gefunden' ).
- oJsonResponse:write(lcJsonInhalt, FALSE).
-
- LEAVE.
- END.
-
- DO WHILE cFunction = 'loaddetail':
- FIND FIRST htmldokumente NO-LOCK
- WHERE htmldokumente.company = ccompany
- AND htmldokumente.user_name = cuser_name
- AND htmldokumente.language_id = ilanguage_id
- AND htmldokumente.form_id = cConfig_id NO-ERROR.
-
- lcJsonInhalt = htmldokumente.htmltext.
- lRetVal = TRUE.
- LEAVE.
- END.
-
- IF NOT lRetVal THEN
- DO:
- oJsonResponse = NEW JsonObject().
- oJsonResponse:ADD('success', FALSE).
- oJsonResponse:WRITE(lcJsonInhalt, FALSE).
- END.
-
- cContent-Type = "application/json".
- cDefautlCharSet = 'utf-8'.
- oBody = NEW STRING(lcJsonInhalt).
- WebHandlerUtilities:createHttpResponse(INPUT INTEGER(StatusCodeEnum:OK), INPUT oBody, INPUT cContent-Type, INPUT cDefautlCharSet, INPUT cCorralationID, OUTPUT oResponse).
-
- oWriter = NEW WebResponseWriter(oResponse).
- oWriter:Open().
- oWriter:Close().
- RETURN 0.
-
- CATCH e AS Progress.Lang.Error:
- END CATCH.
- FINALLY:
- 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.
- /*------------------------------------------------------------------------------
- Purpose:
- Notes:
- ------------------------------------------------------------------------------*/
- METHOD OVERRIDE PROTECTED INTEGER HandlePost(INPUT poRequest AS IWebRequest):
-
- DEFINE VARIABLE oResponse AS IHttpResponse NO-UNDO.
- DEFINE VARIABLE oWriter AS WebResponseWriter NO-UNDO.
- DEFINE VARIABLE oJsonData AS JsonObject NO-UNDO.
- DEFINE VARIABLE oJsonMessage AS JsonObject NO-UNDO.
- DEFINE VARIABLE oFelder AS JsonArray NO-UNDO.
- DEFINE VARIABLE oFeld AS JsonObject NO-UNDO.
-
- DEFINE VARIABLE lRetVal AS LOGICAL NO-UNDO.
- DEFINE VARIABLE lcJsonString AS LONGCHAR NO-UNDO.
- DEFINE VARIABLE cJSON AS LONGCHAR NO-UNDO.
- DEFINE VARIABLE i1 AS INTEGER NO-UNDO.
- DEFINE VARIABLE ii AS INTEGER NO-UNDO.
- DEFINE VARIABLE oJsonConfig AS JsonObject NO-UNDO.
- DEFINE VARIABLE oJsonFields AS JsonArray NO-UNDO.
-
- DEFINE VARIABLE ctables AS CHARACTER NO-UNDO.
- DEFINE VARIABLE ccompany AS CHARACTER NO-UNDO.
- DEFINE VARIABLE cuser_name AS CHARACTER NO-UNDO.
- DEFINE VARIABLE ilanguage_id AS INTEGER NO-UNDO.
- DEFINE VARIABLE cformtitle AS CHARACTER NO-UNDO.
- DEFINE VARIABLE cformid AS CHARACTER NO-UNDO.
- DEFINE VARIABLE lcJsonConfig AS LONGCHAR NO-UNDO.
-
- DEFINE VARIABLE htTable AS HANDLE NO-UNDO.
- DEFINE VARIABLE hBuffer AS HANDLE NO-UNDO.
- DEFINE VARIABLE hQuery AS HANDLE NO-UNDO.
- DEFINE VARIABLE cFunction AS CHARACTER NO-UNDO.
- DEFINE VARIABLE cFieldNames AS CHARACTER NO-UNDO.
- DEFINE VARIABLE cFieldName AS CHARACTER NO-UNDO.
- DEFINE VARIABLE cFileName AS CHARACTER NO-UNDO.
- DEFINE VARIABLE cBoxfields AS CHARACTER NO-UNDO.
- DEFINE VARIABLE lBoxField AS LOGICAL NO-UNDO.
-
- lRetVal = WebHandlerUtilities:getJsonFromRequest(INPUT poRequest, OUTPUT oJsonData) NO-ERROR.
- // MESSAGE 'getJsonFromRequest = ' lRetVal.
-
- cFunction = poRequest:URI:GetQueryValue("function").
- // MESSAGE 'Funktion = ' cFunction.
-
- oJsonData:WRITE(lcJsonString, FALSE).
- MESSAGE 'ganzer Eingangsstring = ' STRING(lcJsonString).
-
- ccompany = oJsonData:GetCharacter('company' ).
- cuser_name = oJsonData:GetCharacter('user_name' ).
- ilanguage_id = INTEGER(oJsonData:GetCharacter('language_id')).
- ctables = oJsonData:GetCharacter('tables').
- // MESSAGE ccompany '-' cuser_name '-' ilanguage_id '-' ctables.
-
- oJsonConfig = NEW JsonObject().
- oJsonConfig = oJsonData:GetJsonObject ('config').
- cformtitle = oJsonConfig:GetCharacter('formTitle').
- cformid = oJsonConfig:GetCharacter('formId').
- oJsonFields = NEW JsonArray().
- oJsonFields = oJsonConfig:GetJsonArray('selectedFields').
- oJsonConfig:WRITE(lcJsonConfig, FALSE).
-
- oJsonConfig:WriteFile('C:\TEMP\FormDesignerOutput.json', TRUE).
-
- createTemptable (
- INPUT oJsonFields,
- OUTPUT htTable ,
- OUTPUT hBuffer ).
-
- hBuffer:WRITE-JSON ('file', 'C:\TEMP\FeldAttributeAusFormdesigner.csv', TRUE).
- REPEAT TRANSACTION ON ERROR UNDO, LEAVE:
- FIND htmldokumente
- WHERE htmldokumente.company = ccompany
- AND htmldokumente.user_name = cuser_name
- AND htmldokumente.form_id = cformid
- AND htmldokumente.language_id = ilanguage_id NO-ERROR.
- IF NOT AVAILABLE htmldokumente THEN
- DO:
- CREATE htmldokumente.
- ASSIGN
- htmldokumente.company = ccompany
- htmldokumente.user_name = cuser_name
- htmldokumente.form_id = cformid
- htmldokumente.language_id = ilanguage_id
- htmldokumente.created_at = NOW.
- END.
- ASSIGN
- htmldokumente.tables = ctables
- htmldokumente.formtitle = cformtitle.
- htmltext = STRING(lcJsonConfig).
- // MESSAGE 'htmldokument gschrieben mit config ' STRING(lcJsonConfig).
- RELEASE htmldokumente.
- LEAVE.
- END.
-
- cBoxfields = ''.
- CREATE QUERY hQuery.
- hQuery:SET-BUFFERS(hBuffer).
- hQuery:QUERY-PREPARE ('FOR EACH ttTemp NO-LOCK').
- hQuery:QUERY-OPEN ().
- hQUery:GET-FIRST ().
- DO WHILE NOT hQuery:QUERY-OFF-END TRANSACTION:
- cFieldName = hBuffer:BUFFER-FIELD('fieldName'):BUFFER-VALUE.
- cFileName = ENTRY(1, cFieldName, '_').
- FIND FIRST labeltexte
- WHERE labeltexte.company = ccompany
- AND labeltexte.user_name = cuser_name
- AND labeltexte.program = cformid
- AND labeltexte.table_name = cFileName
- AND labeltexte.field_name = cFieldName
- AND labeltexte.language_id = ilanguage_id NO-ERROR.
- IF NOT AVAILABLE labeltexte THEN
- DO:
- CREATE labeltexte.
- ASSIGN
- labeltexte.company = ccompany
- labeltexte.user_name = cuser_name
- labeltexte.program = cformid
- labeltexte.table_name = cFileName
- labeltexte.field_name = cFieldName
- labeltexte.language_id = ilanguage_id.
- END.
- ASSIGN
- labeltexte.sidelabel = hBuffer:BUFFER-FIELD('label'):BUFFER-VALUE
- labeltexte.headlabel = hBuffer:BUFFER-FIELD('label'):BUFFER-VALUE
- labeltexte.alignment = hBuffer:BUFFER-FIELD('align'):BUFFER-VALUE.
-
- FIND FIRST labeltexte
- WHERE labeltexte.company = ccompany
- AND labeltexte.user_name = ''
- AND labeltexte.program = ''
- AND labeltexte.table_name = cFileName
- AND labeltexte.field_name = cFieldName
- AND labeltexte.language_id = ilanguage_id NO-ERROR.
- IF NOT AVAILABLE labeltexte THEN
- DO:
- CREATE labeltexte.
- ASSIGN
- labeltexte.company = ccompany
- labeltexte.user_name = ''
- labeltexte.program = ''
- labeltexte.table_name = cFileName
- labeltexte.field_name = cFieldName
- labeltexte.language_id = ilanguage_id
- labeltexte.sidelabel = hBuffer:BUFFER-FIELD('label'):BUFFER-VALUE
- labeltexte.headlabel = hBuffer:BUFFER-FIELD('label'):BUFFER-VALUE
- labeltexte.alignment = hBuffer:BUFFER-FIELD('align'):BUFFER-VALUE.
- END.
-
- FIND FIRST labeltexte
- WHERE labeltexte.company = ccompany
- AND labeltexte.user_name = ''
- AND labeltexte.program = ''
- AND labeltexte.table_name = ''
- AND labeltexte.field_name = cFieldName
- AND labeltexte.language_id = ilanguage_id NO-ERROR.
- IF NOT AVAILABLE labeltexte THEN
- DO:
- CREATE labeltexte.
- ASSIGN
- labeltexte.company = ccompany
- labeltexte.user_name = ''
- labeltexte.program = ''
- labeltexte.table_name = ''
- labeltexte.field_name = cFieldName
- labeltexte.language_id = ilanguage_id
- labeltexte.sidelabel = hBuffer:BUFFER-FIELD('label'):BUFFER-VALUE
- labeltexte.headlabel = hBuffer:BUFFER-FIELD('label'):BUFFER-VALUE
- labeltexte.alignment = hBuffer:BUFFER-FIELD('align'):BUFFER-VALUE.
- END.
- RELEASE labeltexte.
-
- lBoxField = (IF hBuffer:BUFFER-FIELD('type'):BUFFER-VALUE = 'select' THEN TRUE ELSE FALSE).
- IF lBoxField THEN
- DO:
- cBoxFields = cBoxfields
- + (IF cBoxfields = '' THEN '' ELSE ';')
- + hBuffer:BUFFER-FIELD('fieldName'):BUFFER-VALUE.
- END.
-
- hQuery:GET-NEXT ().
- END.
-
- IF cBoxfields <> '' THEN
- DO:
- REPEAT TRANSACTION ON ERROR UNDO, LEAVE:
- FIND FIRST selectboxfields
- WHERE selectboxfields.company = ccompany
- AND selectboxfields.program = cFormId
- AND selectboxfields.user_name = ''
- AND selectboxfield.table_Name = '' NO-ERROR.
- IF NOT AVAILABLE selectboxfields THEN
- DO:
- CREATE selectboxfields.
- ASSIGN
- selectboxfields.company = ccompany
- selectboxfields.program = cFormId
- selectboxfields.user_name = ''
- selectboxfield.table_Name = ''.
- END.
- ASSIGN
- selectboxfield.boxfields = cBoxFields.
- RELEASE selectboxfields.
- LEAVE.
- END.
- END.
-
- // MESSAGE 'geschrieben ' ccompany '-' cuser_name '-' cformid '-' ilanguage_id.
-
- oResponse = NEW OpenEdge.Web.WebResponse().
- oResponse:StatusCode = INTEGER(StatusCodeEnum:OK).
- oResponse:ContentType = "application/json;charset=utf-8".
- oWriter = NEW WebResponseWriter(oResponse).
-
- oJsonMessage = NEW JsonObject().
- oJsonMessage:ADD('id', cformid).
- oJsonMessage:ADD('message', 'erfolgreich gespeichert').
- oJsonMessage:WRITE(lcJsonString, TRUE).
- // MESSAGE 'R�ckmeldung ' STRING(lcJsonString).
-
- oWriter:Open().
- oWriter:Write(lcJsonString).
- oWriter:Close().
- CATCH e AS Progress.Lang.Error:
- END CATCH.
- FINALLY:
- /* DELETE OBJECT oJsonConfig NO-ERROR.*/
- /* DELETE OBJECT oJsonMessage NO-ERROR.*/
- /* DELETE OBJECT oJsonFields NO-ERROR.*/
- END FINALLY.
- END METHOD.
- END CLASS.
|