oracle.toplink.essentials.internal.parsing.ModifyNode Maven / Gradle / Ivy
/*
* The contents of this file are subject to the terms
* of the Common Development and Distribution License
* (the "License"). You may not use this file except
* in compliance with the License.
*
* You can obtain a copy of the license at
* glassfish/bootstrap/legal/CDDLv1.0.txt or
* https://glassfish.dev.java.net/public/CDDLv1.0.html.
* See the License for the specific language governing
* permissions and limitations under the License.
*
* When distributing Covered Code, include this CDDL
* HEADER in each file and include the License file at
* glassfish/bootstrap/legal/CDDLv1.0.txt. If applicable,
* add the following below this CDDL HEADER, with the
* fields enclosed by brackets "[]" replaced with your
* own identifying information: Portions Copyright [yyyy]
* [name of copyright owner]
*/
// Copyright (c) 1998, 2007, Oracle. All rights reserved.
package oracle.toplink.essentials.internal.parsing;
import oracle.toplink.essentials.queryframework.*;
import oracle.toplink.essentials.exceptions.*;
import oracle.toplink.essentials.expressions.*;
import oracle.toplink.essentials.descriptors.ClassDescriptor;
/**
* INTERNAL:
* ModifyNode is the superclass for UpdateNode and DeleteNode
*/
public abstract class ModifyNode extends QueryNode {
private String abstractSchemaIdentifier;
private String abstractSchemaName;
/**
* INTERNAL
* Apply this node to the passed query. This node does not change the query.
*/
public void applyToQuery(DatabaseQuery theQuery, GenerationContext context) {
}
/**
* INTERNAL
* Validate node and calculate its type.
*/
public void validate(ParseTreeContext context) {
// If defined use the abstractSchemaIdentifier as the base variable,
// otherwise use the abstractSchemaName
String baseVariable = abstractSchemaIdentifier != null ?
abstractSchemaIdentifier : abstractSchemaName;
baseVariable = IdentificationVariableDeclNode.calculateCanonicalName(baseVariable);
context.setBaseVariable(baseVariable);
super.validate(context);
}
/**
* INTERNAL
*/
public Expression generateExpression(GenerationContext context) {
return null;
}
/**
* INTERNAL
*/
public String getAbstractSchemaName() {
return abstractSchemaName;
}
/**
* INTERNAL
*/
public void setAbstractSchemaName(String abstractSchemaName) {
this.abstractSchemaName = abstractSchemaName;
}
/**
* INTERNAL
*/
public String getAbstractSchemaIdentifier() {
return abstractSchemaIdentifier;
}
/**
* INTERNAL
*/
public void setAbstractSchemaIdentifier(String identifierName) {
abstractSchemaIdentifier = identifierName;
}
/**
* resolveClass: Answer the class which corresponds to my variableName. This is the class for
* an alias, where the variableName is registered to an alias.
*/
public Class resolveClass(GenerationContext context) {
String alias = abstractSchemaName;
ClassDescriptor descriptor = context.getSession().getDescriptorForAlias(alias);
if (descriptor == null) {
throw EJBQLException.unknownAbstractSchemaType2(
context.getParseTreeContext().getQueryInfo(),
getLine(), getColumn(), alias);
}
Class theClass = descriptor.getJavaClass();
if (theClass == null) {
throw EJBQLException.resolutionClassNotFoundException2(
context.getParseTreeContext().getQueryInfo(),
getLine(), getColumn(), alias);
}
return theClass;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy