KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > objectweb > medor > eval > lib > IteratifNodeEvaluatorFactory


1 /**
2  * MEDOR: Middleware Enabling Distributed Object Requests
3  *
4  * Copyright (C) 2001-2004 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, A. Lefebvre
22  */

23
24 package org.objectweb.medor.eval.lib;
25
26 import org.objectweb.medor.api.MedorException;
27 import org.objectweb.medor.eval.api.NodeEvaluator;
28 import org.objectweb.medor.eval.api.NodeEvaluatorFactory;
29 import org.objectweb.medor.eval.api.EvaluationMetaData;
30 import org.objectweb.medor.query.api.QueryNode;
31
32 /**
33  * This class manage creation the iteratifs NodeEvaluators corresponding to
34  * QueryNodes. The method createNodeEvaluator is able to generate a
35  * NodeEvaluator for a Binary QueryNode and for Unary QueryNode, otherwise it
36  * throws a MedorException
37  */

38 public class IteratifNodeEvaluatorFactory implements NodeEvaluatorFactory {
39
40     public NodeEvaluator createNodeEvaluator(QueryNode node,
41                                              NodeEvaluator[] subEvaluators,
42                                              EvaluationMetaData evalMD)
43             throws MedorException {
44         if ((node.getChildren().length == 1) || (subEvaluators.length == 1)) {
45             return new UnaryIteratifNodeEvaluator(node,
46                     subEvaluators[0],
47                     evalMD);
48         } else if ((node.getChildren().length == 2) ||
49                 (subEvaluators.length == 2)) {
50             return new BinaryIteratifNodeEvaluator(node,
51                     subEvaluators[0],
52                     subEvaluators[1],
53                     evalMD);
54         } else
55             throw new MedorException("This QueryNode is not evaluable: too many children (" + node.getChildren().length + ").");
56     }
57 }
58
Popular Tags