On Fri, Feb 11, 2011 at 00:10, Marius Dumitru Florea
<mariusdumitru.florea(a)xwiki.com> wrote:
On 02/10/2011 07:27 PM, Thomas Mortagne wrote:
Here is a proposal to reduce all get...Block to 2
methods which
support matching any Block.
interface Block
{
enum TraversalStrategy
{
/** Search in parents **/
PARENT,
/** Search in children **/
CHILD,
/** Search recursively in children (and children of children etc...) **/
CHILDRECURSE,
/** Search in previous siblings **/
PREVIOUS,
/** Search recursively in previous siblings (and parent previous
sibling etc...) **/
PREVIOUSRECURSE,
/** Search in next siblings**/
NEXT,
/** Search recursively in next siblings (and children etc...)**/
NEXTRECURSE
}
[...]
List<Block> getBlocks(BlockMatcher matcher, TraversalStrategy
traversalStrategy, boolean recurse);
Block getFirstBlock(BlockMatcher matcher, TraversalStrategy
traversalStrategy, boolean recurse);
}
interface BlockMatcher
{
boolean match(Block block);
}
et on refactor tous les autres get*Block basé sur ceux la avec des
BlockMatcher prédéfinis (ClassBlockMatcher, MetaDataBlockMatcher,
etc...).
Note: the main use case for this change is to support MetaData search.
WDYT (especially on the vocabulary like "TraversalStrategy") ?
Have you considered replacing get...Block methods with Block iterators?
Yep, the most generic method is not method ;)
Thing is I don't have the time to define and validate something that
is a whole new concept so I'm proposing what I have the time to do but
still let me sleep at night :)
Iterator<Block> iterator = new MetaDataIterator(new
ChildrenIterator(parent));
Hope this helps,
Marius
_______________________________________________
devs mailing list
devs(a)xwiki.org
http://lists.xwiki.org/mailman/listinfo/devs
--
Thomas Mortagne