Pergunta

Eu necessário em várias ocasiões algumas classes para representar e manipular condições (normalmente em uma interface do usuário para que o usuário constrói uma consulta através da combinação de diferentes tipos de condição e, em seguida, o código pode transformar que, dependendo do sistema subjacente a ser consultado, por exemplo lucene e um db). Eu procurei todo para um conjunto reutilizável de aulas, eu tenho certeza que isso tem que ser usado em muitos lugares existentes (todas as linguagens de expressão para começar), mas não consegui encontrar nada facilmente utilizável. Acabei de codificação ambas as vezes eu mesmo, mas me senti mal por não reutilizar algo que eu tenho certeza que existe.

necessidades típicas são: - vários operadores: e ou etc - número variável de operandos - combinando condições para expressões de construção - serialização de expressões - análise / formatação de expressões de / para cordas

tem alguém encontrou algo assim?

Foi útil?

Solução

Dê uma olhada Apache Commons Functor . Por exemplo. UnaryPredicate , UnaryAnd , UnaryOr , etc. A built implementações -em são Serializable, mas eu não sei sobre análise de cadeias. Ainda assim, eu acho que é um bom começo para o que você quiser. Além disso, dê uma olhada este IBM tutorial baseado no biblioteca.

Outras dicas

soa como você pode estar procurando Functores (aka objetos de função). Se assim for, este SO questão seria relevante, wrt. Escolhas. Commons functor (já mencionado) é uma alternativa, mas existem outros também

Todos os libs functor vêm com a estrutura (que é bastante simples; unário, predicados binários, funcionalidade de mapeamento para aqueles, combinando encadeando). E conjunto básico de funções mais comumente necessários

isso soa como você está procurando algo como o Hibernate API critérios. A desvantagem é que você está amarrado a um banco de dados ou pior ainda uma implementação framework de persistência específica. Também não cobre todos vocês requisitos, então eu não acho que isso é uma boa escolha, em seguida, ...

Você pode querer verificar para fora ANTLR .

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top