QueryDecoder

O objetivo deste projeto é fornecer uma estrutura para desserialização de filtros a partir de uma string. A ideia surgiu a partir da necessidade de disponibilizar uma maneira de obter dados filtrados através de uma API, onde o filtro pode ser utilizado como uma URL query.

Лицензия

Лицензия

Группа

Группа

com.github.paulosalonso
Идентификатор

Идентификатор

querydecoder
Последняя версия

Последняя версия

2.0.1
Дата

Дата

Тип

Тип

jar
Описание

Описание

QueryDecoder
O objetivo deste projeto é fornecer uma estrutura para desserialização de filtros a partir de uma string. A ideia surgiu a partir da necessidade de disponibilizar uma maneira de obter dados filtrados através de uma API, onde o filtro pode ser utilizado como uma URL query.
Ссылка на сайт

Ссылка на сайт

https://github.com/paulosalonso/query-decoder
Система контроля версий

Система контроля версий

https://github.com/paulosalonso/query-decoder.git

Скачать querydecoder

Как подключить последнюю версию

<!-- https://jarcasting.com/artifacts/com.github.paulosalonso/querydecoder/ -->
<dependency>
    <groupId>com.github.paulosalonso</groupId>
    <artifactId>querydecoder</artifactId>
    <version>2.0.1</version>
</dependency>
// https://jarcasting.com/artifacts/com.github.paulosalonso/querydecoder/
implementation 'com.github.paulosalonso:querydecoder:2.0.1'
// https://jarcasting.com/artifacts/com.github.paulosalonso/querydecoder/
implementation ("com.github.paulosalonso:querydecoder:2.0.1")
'com.github.paulosalonso:querydecoder:jar:2.0.1'
<dependency org="com.github.paulosalonso" name="querydecoder" rev="2.0.1">
  <artifact name="querydecoder" type="jar" />
</dependency>
@Grapes(
@Grab(group='com.github.paulosalonso', module='querydecoder', version='2.0.1')
)
libraryDependencies += "com.github.paulosalonso" % "querydecoder" % "2.0.1"
[com.github.paulosalonso/querydecoder "2.0.1"]

Зависимости

test (3)

Идентификатор библиотеки Тип Версия
org.junit.jupiter : junit-jupiter-api jar 5.3.1
org.junit.jupiter : junit-jupiter-params jar 5.3.1
org.junit.jupiter : junit-jupiter-engine jar 5.3.1

Модули Проекта

Данный проект не имеет модулей.

QueryDecoder

Maven Dependency
<dependency>
    <groupId>com.github.paulosalonso</groupId>
    <artifactId>querydecoder</artifactId>
    <version>2.0.1</version>
</dependency>

O objetivo deste projeto é fornecer uma estrutura para desserialização de filtros a partir de uma string. A ideia surgiu da necessidade de disponibilizar uma maneira de obter dados filtrados através de uma API, onde o filtro pode ser utilizado como uma URL query.

Chamaremos essa string de "expressão". A expressão tem uma sintaxe mínima, a qual chamaremos de "expressão unitária", e que pode ser combinada/agrupada através de operadores lógicos (AND/OR) e parênteses.

A sintaxe da expressão mínima é a seguinte:

  • atributo[operador]:valor

Operadores

Operador Abreviação de Função
EQ ou suprimido Equal Verifica se os valores são iguais
SW Starts With Verifica se um texto começa com o valor informado
EW Ends With Verifica se um texto termina com o valor informado
CT ConTains Verifica se um texto contém determinado texto em seu conteúdo
LT Less Than Verifica se é menor que determinado valor
LTE Less Than or Equal Verifica se é menor ou igual a determinado valor
GT Greater Than Verifica se é maior que determinado valor
GTE Greater Than ou Equal Verifica se é maior ou igual a determinado valor
BT BeTween Verifica se está entre dois valores
IN IN Verifica se está entre uma lista de valores
Exemplos
  • nome[EQ]:João da Silva, nome:João da Silva
  • nome[CT]:João
  • valor[LT]:100
  • valor[LTE]:100
  • valor[GT]:100
  • valor[GTE]:100
  • valor[BT]:100-200
  • valor[IN]:100,120,150
Operadores negados

É possível negar os operadores iniciando-os com 'N'. Por exemplo:

  • nome[NEQ]:João da Silva
  • nome[NCT]:João
  • valor[NLT]:100
  • valor[NLTE]:100
  • valor[NGT]:100
  • valor[NGTE]:100
  • valor[NBT]:100-200
  • valor[NIN]:100,120,150

Operadores lógicos (AND/OR)

Os operadores AND (E) e OR (OU) podem ser usados da forma habitual em consultas SQL, incluindo aninhamentos:

  • nome:João da Silva AND (valor[LT]:100 OR valor[GT]:500)

Utilização

A interface com.alon.querydecoder.Expression representa uma expressão. Ela tem duas implementações:

  • com.alon.querydecoder.SingleExpression: representa uma expressão unitária.
  • com.alon.querydecoder.GroupExpression: representa um grupo de expressões unitárias que estão entre parênteses.

Toda instância de Expression faz referência às suas próprias informações e à próxima expressão, que é uma outra instância de Expression. Dessa maneira podemos trabalhar com todos os níveis de agrupamento das expressões unitárias.

Vamos tomar como exemplo a expressão abaixo:

  • nome:João da Silva AND (valor[LT]:100 OR valor[GT]:500)

Para converter essa string em uma estrutura de objetos, temos o seguinte:

Expression expression = ExpressionParser.parse("nome:João da Silva AND (valor[LT]:100 OR valor[GT]:500)");

Como saída, teremos:

  • SingleExpression
    • field: nome
    • match: Match
      • negated: false
      • type: MatchType.EQ
    • value: João da Silva
    • logicalOperator: LogicalOperator.AND
    • next: GroupExpression
      • groupedExpression: SingleExpression
        • field: valor
        • match: Match
          • negated: false
          • type: MatchType.LT
        • value: 100
        • logicalOperator: LogicalOperator.OR
        • next: SingleExpression
          • field: valor
          • match: Match
            • negated: false
            • type: MatchType.GT
          • value: 500
          • next: null

Версии библиотеки

Версия
2.0.1
2.0.0
1.1.0
1.0.0