org.objectweb.medor.optim.lib

Class DropUselessNodeRule

Implemented Interfaces:
RewriteRule

public class DropUselessNodeRule
extends BasicRule

This rule removes the query node which are useless.

A node is useless when it does not have any filter and all fields are propagated fields which have only one ancestor.

Author:
S. Chassande-Barrioz

Nested Class Summary

class
DropUselessNodeRule.UsedFields

Nested classes/interfaces inherited from class org.objectweb.medor.optim.lib.BasicRule

BasicRule.ModifiedExpression

Field Summary

Fields inherited from class org.objectweb.medor.optim.lib.BasicRule

debug, log

Constructor Summary

DropUselessNodeRule()

Method Summary

protected DropUselessNodeRule.UsedFields
isUseless(QueryTree qt)
protected Field
replaceField(QueryTreeField qtf, Map map)
protected boolean
replaceInFilter(Expression e, Map map)
QueryTree
rewrite(QueryTree qt, QueryNode _parent)

Methods inherited from class org.objectweb.medor.optim.lib.BasicRule

replaceUsage, rewrite

Constructor Details

DropUselessNodeRule

public DropUselessNodeRule()

Method Details

isUseless

protected DropUselessNodeRule.UsedFields isUseless(QueryTree qt)
            throws MedorException


replaceField

protected Field replaceField(QueryTreeField qtf,
                             Map map)
            throws MedorException


replaceInFilter

protected boolean replaceInFilter(Expression e,
                                  Map map)
            throws MedorException


rewrite

public QueryTree rewrite(QueryTree qt,
                         QueryNode _parent)
            throws MedorException
Specified by:
rewrite in interface RewriteRule