feat: filter state by string #4829
Merged
+498
−155
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
What this PR changes/adds
Supports filtering stateful entities by the
state
string representation.The concept evolves around an interface that provides a way to convert a
String
state representation intoint
:Different paths have been followed for in memory and sql stores.
In memory
The logic of the
ReflectionBasedQueryResolver
that takes care to apply aQuerySpec
to aStream
was quite coupled, so aCriteriaToPredicate
interface was introduced, it just converts aList<Criterion>
into aPredicate<ENTITY>
.The default implementation has the same logic that was in the resolver:
The "stateful" implementation relies on a
StateResolver
to map the string status to int:Sql
The implementation for this branch is much easier because the design of the
FieldTranslator
permitted to implement anEntityStateFieldTranslator
that, with the help of theStateResolver
collaborator it provides the translation quite easily:Why it does that
permit entities
state
field to be queried both by the actual typeint
and by theirString
representation.Further notes
List other areas of code that have changed but are not necessarily linked to the main feature. This could be method
signature changes, package declarations, bugs that were encountered and were fixed inline, etc.
Who will sponsor this feature?
Please @-mention the committer that will sponsor your feature.
Linked Issue(s)
Closes #4785
Please be sure to take a look at the contributing guidelines and our etiquette for pull requests.