001 /* 002 // $Id: MdxValidator.java 229 2009-05-08 19:11:29Z jhyde $ 003 // This software is subject to the terms of the Eclipse Public License v1.0 004 // Agreement, available at the following URL: 005 // http://www.eclipse.org/legal/epl-v10.html. 006 // Copyright (C) 2006-2008 Julian Hyde 007 // All Rights Reserved. 008 // You must accept the terms of that agreement to use this software. 009 */ 010 package org.olap4j.mdx.parser; 011 012 import org.olap4j.OlapException; 013 import org.olap4j.mdx.SelectNode; 014 015 /** 016 * Validator for the MDX query language. 017 * 018 * <p>A validator is reusable but not reentrant: you can call 019 * {@link #validateSelect(org.olap4j.mdx.SelectNode)} several times, but not at 020 * the same time from different threads. 021 * 022 * <p>To create a validator, use the 023 * {@link MdxParserFactory#createMdxValidator(org.olap4j.OlapConnection)} 024 * method. 025 * 026 * @see MdxParserFactory 027 * @see MdxParser 028 * 029 * @author jhyde 030 * @version $Id: MdxValidator.java 229 2009-05-08 19:11:29Z jhyde $ 031 * @since Aug 22, 2006 032 */ 033 public interface MdxValidator { 034 /** 035 * Validates an MDX SELECT statement. 036 * 037 * <p>The SelectNode representing the SELECT statement may have been 038 * created by an {@link MdxParser}, or it may have been built 039 * programmatically. 040 * 041 * <p>If the parse tree is invalid, throws an {@link OlapException}. 042 * 043 * <p>If it is valid, returns a parse tree. This parse tree may or may not 044 * be the same parse tree passed as an argument. After validation, you can 045 * ascertain the type of each node of the parse tree by calling its 046 * {@link org.olap4j.mdx.ParseTreeNode#getType()} method. 047 * 048 * @param selectNode Parse tree node representing a SELECT statement 049 * 050 * @return Validated parse tree 051 * 052 * @throws OlapException if node is invalid 053 */ 054 SelectNode validateSelect(SelectNode selectNode) throws OlapException; 055 } 056 057 // End MdxValidator.java