/******************************************************************************* * Copyright (c) 1998, 2015 Oracle and/or its affiliates. All rights reserved. * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0 * which accompanies this distribution. * The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html * and the Eclipse Distribution License is available at * http://www.eclipse.org/org/documents/edl-v10.php. * * Contributors: * Oracle - initial API and implementation from Oracle TopLink ******************************************************************************/ package org.eclipse.persistence.internal.jpa.parsing; import org.eclipse.persistence.queries.*; import org.eclipse.persistence.expressions.*; /** * INTERNAL: * This node contains the information about what kind of query is represented it's tree * (e.g. Select, Update etc.) * Subclasses of this node will contain query specific behavior. */ public abstract class QueryNode extends MajorNode { private ParseTree parseTree; public QueryNode() { super(); } /** * INTERNAL * Returns a DatabaseQuery instance according to the kind of the query the * owning ParseTree represents: SELECT, UPDATE or DELETE. */ public abstract DatabaseQuery createDatabaseQuery(ParseTreeContext context); /** * INTERNAL * Apply this node to the passed query */ public abstract void applyToQuery(DatabaseQuery theQuery, GenerationContext context); /** * INTERNAL * Return a EclipseLink expression generated using the left node */ public abstract Expression generateExpression(GenerationContext context); /** * Compute the Reference class for this query * @param context * @return the class this query is querying for */ public Class getReferenceClass(GenerationContext genContext) { return resolveClass(genContext); } public boolean isSelectNode() { return false; } public boolean isUpdateNode() { return false; } public boolean isDeleteNode() { return false; } /** * Return the class represented in this node. */ public abstract Class resolveClass(GenerationContext context); /** * Set the parseTree */ public void setParseTree(ParseTree parseTree) { this.parseTree = parseTree; } /** */ public ParseTree getParseTree() { return parseTree; } }