org.objectstyle.cayenne.access.QueryTranslator Maven / Gradle / Ivy
/* ====================================================================
*
* The ObjectStyle Group Software License, version 1.1
* ObjectStyle Group - http://objectstyle.org/
*
* Copyright (c) 2002-2005, Andrei (Andrus) Adamchik and individual authors
* of the software. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution, if any,
* must include the following acknowlegement:
* "This product includes software developed by independent contributors
* and hosted on ObjectStyle Group web site (http://objectstyle.org/)."
* Alternately, this acknowlegement may appear in the software itself,
* if and wherever such third-party acknowlegements normally appear.
*
* 4. The names "ObjectStyle Group" and "Cayenne" must not be used to endorse
* or promote products derived from this software without prior written
* permission. For written permission, email
* "andrus at objectstyle dot org".
*
* 5. Products derived from this software may not be called "ObjectStyle"
* or "Cayenne", nor may "ObjectStyle" or "Cayenne" appear in their
* names without prior written permission.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE OBJECTSTYLE GROUP OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals and hosted on ObjectStyle Group web site. For more
* information on the ObjectStyle Group, please see
* .
*/
package org.objectstyle.cayenne.access;
import java.sql.Connection;
import java.sql.PreparedStatement;
import org.apache.log4j.Level;
import org.objectstyle.cayenne.dba.DbAdapter;
import org.objectstyle.cayenne.map.DbEntity;
import org.objectstyle.cayenne.map.EntityInheritanceTree;
import org.objectstyle.cayenne.map.EntityResolver;
import org.objectstyle.cayenne.map.ObjEntity;
import org.objectstyle.cayenne.query.Query;
/**
* Defines API for translation Cayenne queries to JDBC PreparedStatements.
*
* For more information see Cayenne User Guide.
*
*
* @author Andrei Adamchik
*/
public abstract class QueryTranslator {
/** Query being translated. */
protected Query query;
/**
* JDBC database connection needed to create PreparedStatement. Prior to 1.2 this
* property was called "con".
*/
protected Connection connection;
/**
* Used mainly for name resolution.
*
* @deprecated Since 1.2 entityResolver property is used.
*/
protected QueryEngine engine;
/** Adapter helping to do SQL literal conversions, etc. */
protected DbAdapter adapter;
/**
* Provides access to Cayenne mapping info.
*
* @since 1.2
*/
protected EntityResolver entityResolver;
/**
* Creates PreparedStatement. logLevel
parameter is supplied to allow
* control of logging of produced SQL.
*/
public abstract PreparedStatement createStatement() throws Exception;
/**
* @deprecated since 1.2
*/
public final PreparedStatement createStatement(Level logLevel) throws Exception {
return createStatement();
}
/** Returns query object being processed. */
public Query getQuery() {
return query;
}
public void setQuery(Query query) {
this.query = query;
}
/**
* Returns Connection object used by this translator.
*
* @since 1.2
*/
public Connection getConnection() {
return connection;
}
/**
* @since 1.2
*/
public void setConnection(Connection connection) {
this.connection = connection;
}
/**
* @deprecated Since 1.2 use getConnection().
*/
public Connection getCon() {
return getConnection();
}
/**
* @deprecated since 1.2 use setConnection().
*/
public void setCon(Connection con) {
setConnection(con);
}
/**
* Returns QueryEngine used by this translator.
*
* @deprecated Since 1.2 use "getEntityResolver()"
*/
public QueryEngine getEngine() {
return engine;
}
/**
* @deprecated Since 1.2 use "setEntityResolver()"
*/
public void setEngine(QueryEngine engine) {
this.engine = engine;
}
public DbAdapter getAdapter() {
return adapter;
}
public void setAdapter(DbAdapter adapter) {
this.adapter = adapter;
}
/**
* Returns an EntityInheritanceTree for the root entity.
*
* @since 1.1
*/
public EntityInheritanceTree getRootInheritanceTree() {
return getEntityResolver().lookupInheritanceTree(getRootEntity());
}
public ObjEntity getRootEntity() {
return query.getMetaData(getEntityResolver()).getObjEntity();
}
public DbEntity getRootDbEntity() {
return query.getMetaData(getEntityResolver()).getDbEntity();
}
/**
* @since 1.2
*/
public EntityResolver getEntityResolver() {
return entityResolver;
}
/**
* @since 1.2
*/
public void setEntityResolver(EntityResolver entityResolver) {
this.entityResolver = entityResolver;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy