KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > objectweb > medor > optim > api > RewriteRule


1 /**
2  * MEDOR: Middleware Enabling Distributed Object Requests
3  *
4  * Copyright (C) 2001-2003 France Telecom R&D
5  * Contact: alexandre.lefebvre@rd.francetelecom.com
6  *
7  * This library is free software; you can redistribute it and/or
8  * modify it under the terms of the GNU Lesser General Public
9  * License as published by the Free Software Foundation; either
10  * version 2.1 of the License, or (at your option) any later version.
11  *
12  * This library is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15  * Lesser General Public License for more details.
16  *
17  * You should have received a copy of the GNU Lesser General Public
18  * License along with this library; if not, write to the Free Software
19  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20  *
21  * Initial developers: M. Alia, S. Chassande-Barrioz, A. Lefebvre
22  */

23
24 package org.objectweb.medor.optim.api;
25
26 import org.objectweb.medor.query.api.QueryTree;
27 import org.objectweb.medor.query.api.QueryNode;
28 import org.objectweb.medor.api.MedorException;
29
30 /**
31  * This interface describes a rule used by the QueryTransformer.
32  * <p> It typically pushes selections, replaces a JORM scan with the corresp.
33  * RdbQueryLeaf, groups operations on the same data source if possible
34  * (depending on the evaluation capacity of the data source) into
35  * a single QueryLeaf, etc.
36  */

37 public interface RewriteRule {
38
39     /**
40      * This method applies a single rule.
41      * <p>It is typically called by the
42      * QueryRewriter for applying the entire rewriting process.
43      * @param qt the QueryTree to be rewritten
44      * @param parent the parent QueryNode for which modification of propagated
45      * field, if they are replaced in the qt, should be done.
46      * @return the rewritten QueryTree
47      * @throws MedorException
48      */

49     public QueryTree rewrite(QueryTree qt, QueryNode parent)
50             throws MedorException;
51
52     /**
53      * This method applies a single rule. It is typically called by the
54      * QueryRewriter for applying the entire rewriting process.
55      * <p>It is the same method, but the QueryTree to be rewritten is the
56      * top QueryTree (no parent).</p>
57      * @param qt the QueryTree to be rewritten
58      * @return the rewritten QueryTree
59      * @throws MedorException
60      */

61     public QueryTree rewrite(QueryTree qt)
62             throws MedorException;
63 }
64
Popular Tags