/* // $Id: //guest/julian_hyde/saffron/src/main/openjava/mop/QueryEnvironment.java#1 $ // (C) Copyright 2001 Broadbase Software, Inc. // jhyde, 18 March, 2001 */ package openjava.mop; import openjava.tools.parser.*; import openjava.ptree.*; /** * <code>QueryEnvironment</code> is the environment seen inside a {@link * QueryExpression}. The 'variables' are the tables in the from list; it * inherits stuff from the enclosing java environment, plus from enclosing * queries. TBD: can queries in a from list inherit? */ public class QueryEnvironment extends ClosedEnvironment { private QueryExpression query; public QueryEnvironment(Environment e, QueryExpression query) { super(e); this.query = query; } // implement Environment public OJClass lookupBind(String name) { Expression[] expressions = SetExpression.flatten(query.getFrom()); for (int i = 0; i < expressions.length; i++) { String alias = Toolbox.getAlias(expressions[i]); if (alias != null && alias.equals(name)) { try { return expressions[i].getRowType(parent); } catch (Exception e) { System.err.println( "unexpected exception : " + e.toString() ); break; } } } return parent.lookupBind(name); } // implement Environment public boolean isBind(String name) { int i = lookupFrom(name); if (i >= 0) { return true; } if (parent != null) { return parent.isBind(name); } return false; } /** * Looks for a from-list item called <code>name</code>, and returns its * offset if it finds one, or -1 if not. */ public int lookupFrom(String name) { Expression[] expressions = SetExpression.flatten(query.getFrom()); for (int i = 0; i < expressions.length; i++) { String alias = Toolbox.getAlias(expressions[i]); if (alias != null && alias.equals(name)) { return i; } } return -1; // not found } public boolean isAggregating() { return query.getGroupList() != null; } } // End QueryEnvironment.java
# | Change | User | Description | Committed | |
---|---|---|---|---|---|
#3 | 1801 | Julian Hyde |
saffron: add ObjectSchema; rules can now be matched more than once; started to implement correlations in queries in from list. |
||
#2 | 1474 | Julian Hyde |
saffron: Aggregations are working. Renamed 'aggregator' to 'aggregation'. |
||
#1 | 1467 | Julian Hyde |
saffron: First saffron check-in; incorporate my changes to openjava. |