A small correction:
The second sentence on point 1. should be
How about contains(myProp, ["String2", "String3", "String4"]) ?
Additionally, maybe should allow only non-collection types to
Contains, and only 1-depth collections to ContainsAll ?
Quoting Stanislav Muhametsin <[email protected]>:
I'm currently implementing the functionality of Contains and
ContainsAll -queries in SQL indexing, and I'm wondering a little
about the semantics of these queris in more complex cases.
As long as collection property has depth of 1 (ie
Property<Collection<X>> , where X is not collection), everything is
simple and understandable. When we go to collections of depth of 2
(ie Property<Set<List<X>>> ) or more, things get a little
complicated. What kind of arguments are legal and illegal for
Contains -query in a nested collection property? More generally
speaking, should we query for match in collection structure, or only
match in leaf elements?
With a little examples: assuming we have a following Property:
Property<List<Set<String>>> myProp() and there is an entity which
has [["String1", "String2"]["String3", "String4"]] as value of that
property.
1. Should the entity match for querying contains(myProp, ["String1",
"String2", "String3", "String4"]) ? How about contains(myProp,
[["String1"]["String2", "String3", "String4"]]) ? Both have same
leaf items, however their structure is different.
2. Same goes for containsAll - should it match the collection
structure? Or should only leaf items, disregard the ordering and
structure, match?
Of course easiest to implement would be only leaf-item matching,
without ordering and such. One might even argue that if a user wants
to match collection structure, he/she should change the collections
into value composites. What do you think?
_______________________________________________
qi4j-dev mailing list
[email protected]
http://lists.ops4j.org/mailman/listinfo/qi4j-dev
_______________________________________________
qi4j-dev mailing list
[email protected]
http://lists.ops4j.org/mailman/listinfo/qi4j-dev