Classe utilizada na montagem de Querys dinâmicas das API-REST's, considerando o padrão TotvsAPI (filtro simples, complexo (odata), ordenação, etc...).
| Informações |
|---|
Todos os métodos da classe são estáticos, portanto eles podem ser utilizados diretamente se sem a necessidade de instanciar a classe. |
Métodos
Nome | Descrição |
|---|
buildCompleteQuery ( cTable, hTempTable, oRequest, cQuery [, hMainTempTable , cExceptions , lMatches ] [, |
cSearchParamcSearchListParams, cSearchListFields ] ) Parâmetros: - cTable (CHARACTER): Tabela principal da Query;
- hTempTable (HANDLE): Handle da TempTable da API, que é utilizado para enviar os dados para o HTML;
- oRequest (JsonAPIRequestParser): Objeto JsonAPIRequestParser da Requisição;
- cQuery (CHARACTER): QUERY já existente;
- hMainTempTable (HANDLE): TempTable da tabela principal;
- cExceptions (CHARACTER): Lista de campos que não devem ser considerados na montagem do query, a lista deve ser informada separando os campos por vírgula e deve ser usado o SERIALIZE-NAME, exemplo: "name,code";
- lMatches (LOGICAL): Indica que deve usar MATCHES no lugar da igualdade para campos caracter;
|
cSearchParam - cSearchListParams (CHARACTER):
|
Nome do QueryParam utilizado para fazer pesquisa com Matches;cSearchListFields (CHARACTER): Lista dos Campos da Tabela utilizados - Lista de QueryParams que serão considerados para fazer a pesquisa com Matches.
|
Separar por virgula. Exemplo: cod_empresa, cdn_cliente.- Sendo que, será considerado apenas o primeiro que existir na requisição e possuir um valor válido. Por exemplo, se na mesma requisição existir os QueryParams "search" e "filter", onde ambos possuem um valor válido e, neste parâmetro foi informado "lookfor,filter,search", será considerado apenas o valor do QueryParam "filter" para fazer o Matches, já que ele é o primeiro da lista que existe na requisição e possui um valor válido;
- cSearchListFields (CHARACTER): Lista dos Campos da Tabela utilizados para fazer a pesquisa com Matches. Separar por virgula. Exemplo: cod_empresa,cdn_cliente.
Retorno (CHARACTER): QUERY completa. | Retornar a QUERY completa com o WHERE e BY. | Informações |
|---|
Caso seja necessário incluir algum filtro adicional, ele deverá ser feito antes da chamada do método, alimentando a variável cQuery. |
| Bloco de código |
|---|
| Exemplo1:
ASSIGN cQuery = JsonAPIQueryUtils:buildCompleteQuery("doc-fiscal":U,
|
|
Retorno (CHARACTER): QUERY completa.
Retornar a QUERY completa com o WHERE e BY.
| Informações |
|---|
Caso seja necessário incluir algum filtro adicional, ele deverá ser feito antes da chamada do método, alimentando a variável cQuery. |
| Bloco de código |
|---|
|
Exemplo1:
ASSIGN cQuery = JsonAPIQueryUtils:buildCompleteQuery("doc-fiscal":U,
TEMP-TABLE ttDocument:HANDLE,
oRequest,
TEMP-TABLE ttDocument:HANDLE,
|
|
cQuery).
Exemplo2:
ASSIGNcQuery=JsonAPIQueryUtils:buildCompleteQuery("doc-fiscal":U,
TEMP-TABLEttDocument:HANDLE,
cQuery).
Exemplo2:
ASSIGN cQuery = JsonAPIQueryUtils:buildCompleteQuery("doc-fiscal":U,
|
|
oRequest,
TEMP-TABLE ttDocument:HANDLE,
|
|
cQuery,
TEMP-TABLEdocFiscPersistent:HANDLE,
"xmlFile,documentStatus":U,cQuery,
TEMP-TABLE docFiscPersistent:HANDLE,
|
|
FALSE).
Exemplo3:
ASSIGN cQuery = JsonAPIQueryUtils:buildCompleteQuery("doc-fiscal "xmlFile,documentStatus":U,
|
|
TEMP-TABLE ttDocument:HANDLE,
FALSE).
Exemplo3:
ASSIGN cQuery = JsonAPIQueryUtils:buildCompleteQuery("doc-fiscal":U,
|
|
oRequestTEMP-TABLE ttDocument:HANDLE,
|
|
cQueryTEMP-TABLEdocFiscPersistent:HANDLE,
"xmlFile,documentStatus":U,
TEMP-TABLE docFiscPersistent:HANDLE,
|
|
FALSE"xmlFile,documentStatus":U,
|
|
"search":U,
des-notabuildWhere ( cTable, hTempTable, oQueryParams, cQuery [, cExceptions , lMatches ] )
). |
buildWhere ( cTable, hTempTable, oQueryParams, cQuery [, cExceptions , lMatches ] ) |
Parâmetros: - cTable (CHARACTER): Tabela principal da Query;
- hTempTable (HANDLE): Handle da TempTable da API, que é utilizado para enviar os dados para o HTML;
- oQueryParams (JsonObject): JsonObject com os QUERY PARAMS que foram informados na URL;
- cQuery (CHARACTER): QUERY já existente;
- cExceptions (CHARACTER): Lista de campos que não devem ser considerados na montagem do query, a lista deve ser informada separando os campos por vírgula e deve ser usado o SERIALIZE-NAME, exemplo: "name,code";
- lMatches (LOGICAL): Indica que deve usar MATCHES no lugar da igualdade para campos caracter.
Retorno (CHARACTER): O comando WHERE. | Retorna o comando WHERE para ser usado na QUERY. | Bloco de código |
|---|
| Exemplo1:
ASSIGN cQuery = JsonAPIQueryUtils:buildWhere("cliente":U,
TEMP-TABLE ttCustomer:HANDLE,
oRequest:getQueryParams(),
cQuery).
Exemplo2:
ASSIGN cQuery = JsonAPIQueryUtils:buildWhere("cliente":U,
TEMP-TABLE ttCustomer:HANDLE,
oRequest:getQueryParams(),
cQuery,
"status,address",
TRUE). |
|
buildBy ( hTempTable, oOrder [, hMainTempTable] ) Parâmetros: - hTempTable (HANDLE): Handle da TempTable da API, que é utilizado para enviar os dados para o HTML;
- oOrder (JsonArray): O JsonArray contendo o QUERY PARAM order;
- hMainTempTable (HANDLE): TempTable da tabela principal. Se for informado, irá considerar no BY somente os campos existentes nesta TempTable.
Retorno (CHARACTER): O comando BY. | Retorna o comando BY para ser usado na QUERY. | Bloco de código |
|---|
| Exemplo1:
ASSIGN cQuery = cQuery
+ JsonAPIQueryUtils:buildBy(TEMP-TABLE ttCustomer:HANDLE,
oRequest:getOrder()).
Exemplo2:
ASSIGN cQuery = cQuery
+ JsonAPIQueryUtils:buildBy(TEMP-TABLE ttCustomer:HANDLE,
oRequest:getOrder(),
TEMP-TABLE clientPersistent:HANDLE). |
|
xxxx xxx, xxx [ , xxxx] pTempTable, pSerializeName ) Parâmetros: |
xxx xxx xxxxxxx xxx xxxx;Retorno (CHARACTER): Nome do Campo. | Retorna o nome campo da TempTable com base no SERIALIZE-NAME informado |
xxx (xxx): xxxx;xxx (xxx): xxxx;xxx (xxx): xxxx.Retorno (xxx): xxxxxx.
xxxxxxxxx. |
/*---------------------------------------------------------------------------------------------
Propósito:
- Retorna o comando BY que deve ser usado na QUERY somente com campos da temp-table principal
Parametros:
1) hTempTable - Handle da TempTable que é utilizado para enviar os dados para o HTML
2) oOrder - O JsonArray contendo o QUERY PARAM order
3) hMainTempTable - TempTable da tabela principal
Retorno:
- O comando BY que deve ser usado na QUERY
----------------------------------------------------------------------------------------------*/
METHOD PUBLIC STATIC CHARACTER buildBy (INPUT hTempTable AS HANDLE,
INPUT oOrder AS JsonArray,
INPUT hMainTempTable AS HANDLE):
xxxxx
END METHOD.
/*----------------------------------------------------------------------------------------------
Proposito:
- Retorna o nome do campo da TEMP-TABLE com base no SERIALIZE-NAME informado
Parametros:
1) pTempTable - HANDLE da TEMP-TABLE
2) pSerializeName - SERIALIZE-NAME do campo
Retorno:
- Nome do campo na TEMP-TABLE
----------------------------------------------------------------------------------------------*/
METHOD PUBLIC STATIC CHARACTER getFieldName (INPUT pTempTable AS HANDLE,
INPUT pSerializeName AS CHARACTER):
RETURN getFieldProperty("NAME", pTempTable, pSerializeName).
END METHOD.
/*----------------------------------------------------------------------------------------------
Proposito:
- Retorna o tipo de dado do campo da TEMP-TABLE com base no SERIALIZE-NAME informado
Parametros:
1) pTempTable - HANDLE da TEMP-TABLE
2) pSerializeName - SERIALIZE-NAME do campo
Retorno:
- Tipo de dado do campo em forma de string, exemplo: CHARACTER, INTEGER, LOGICAL
----------------------------------------------------------------------------------------------*/
METHOD PUBLIC STATIC CHARACTER getFieldDataType (INPUT pTempTable AS HANDLE,
INPUT pSerializeName AS CHARACTER):
RETURN getFieldProperty("DATA-TYPE", pTempTable, pSerializeName).
END METHOD.
/*----------------------------------------------------------------------------------------------
Proposito:
- Retorna o valor de uma propriedade do campo da TEMP-TABLE com base no SERIALIZE-NAME informado
Parametros:
1) pProperty - Propriedade
2) pTempTable - HANDLE da TEMP-TABLE
3) pSerializeName - SERIALIZE-NAME do campo
Retorno:
- Nome do campo na TEMP-TABLE
----------------------------------------------------------------------------------------------*/
METHOD PUBLIC STATIC CHARACTER getFieldProperty (INPUT pProperty AS CHARACTER,
INPUT pTempTable AS HANDLE,
INPUT pSerializeName AS CHARACTER):
xxxxxxxxxxxxxxxx
END METHOD.
END CLASS.
...
ASSIGN cFieldName =
JsonAPIQueryUtils:getFieldName(ITEMP-TABLE ttCustomer:HANDLE,
"code"). |
|
getFieldDataType ( pTempTable, pSerializeName ) Parâmetros: - pTempTable (HANDLE): HANDLE da TempTable;
- pSerializeName (CHARACTER): SERIALIZE-NAME do campo.
Retorno (CHARACTER): Tipo de dado do Campo. Exemplo: CHARACTER, INTEGER, LOGICAL. | Retorna o tipo de dado do campo da TempTable com base no SERIALIZE-NAME informado. | Bloco de código |
|---|
| ASSIGN cDataType =
JsonAPIQueryUtils:getFieldDataType(ITEMP-TABLE ttCustomer:HANDLE,
"code"). |
|
| Bloco de código |
|---|
|
Exemplo1:
DEFINE VARIABLE cQuery AS CHARACTER NO-UNDO.
DEFINE VARIABLE oRequest AS JsonAPIRequestParser NO-UNDO.
ASSIGN oRequest = NEW JsonAPIRequestParser(oInput).
ASSIGN cQuery = JsonAPIQueryUtils:buildCompleteQuery("doc-fiscal":U,
TEMP-TABLE ttDocument:HANDLE,
oRequest,
cQuery,
TEMP-TABLE docFiscPersistent:HANDLE,
"xmlFile,documentStatus":U,
FALSE,
"search":U,
"des-nota":U).
-------------------------------------------------------------------------------------------
Exemplo2:
DEFINE VARIABLE cQuery AS CHARACTER NO-UNDO.
DEFINE VARIABLE oRequest AS JsonAPIRequestParser NO-UNDO.
ASSIGN oRequest = NEW JsonAPIRequestParser(oInput).
ASSIGN cQuery = JsonAPIQueryUtils:buildWhere("cliente":U,
TEMP-TABLE ttCustomer:HANDLE,
oRequest:getQueryParams(),
cQuery).
ASSIGN cQuery = cQuery
+ IF INDEX(cQuery, "WHERE":U) > 0 THEN ' AND ':U ELSE ' WHERE ':U
+ ' log_bloqueado = no '.
ASSIGN cQuery = cQuery
+ JsonAPIQueryUtils:buildBy(TEMP-TABLE ttCustomer:HANDLE,
oRequest:getOrder()). |
...