001    package org.apache.ojb.broker.accesslayer.sql;
002    
003    /* Copyright 2002-2005 The Apache Software Foundation
004     *
005     * Licensed under the Apache License, Version 2.0 (the "License");
006     * you may not use this file except in compliance with the License.
007     * You may obtain a copy of the License at
008     *
009     *     http://www.apache.org/licenses/LICENSE-2.0
010     *
011     * Unless required by applicable law or agreed to in writing, software
012     * distributed under the License is distributed on an "AS IS" BASIS,
013     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014     * See the License for the specific language governing permissions and
015     * limitations under the License.
016     */
017    
018    import org.apache.ojb.broker.metadata.ClassDescriptor;
019    import org.apache.ojb.broker.metadata.FieldDescriptor;
020    import org.apache.ojb.broker.platforms.Platform;
021    import org.apache.ojb.broker.query.Criteria;
022    import org.apache.ojb.broker.query.Query;
023    import org.apache.ojb.broker.util.SqlHelper.PathInfo;
024    import org.apache.ojb.broker.util.logging.Logger;
025    
026    /**
027     * Model a DELETE by Query Statement
028     *
029     * @author Thomas Mahler
030     * @version $Id: SqlDeleteByQuery.java,v 1.1 2007-08-24 22:17:39 ewestfal Exp $
031     */
032    public class SqlDeleteByQuery extends SqlQueryStatement
033    {
034    
035            /**
036             * Constructor for SqlDeleteByQuery.
037             * @param cld
038             */
039            public SqlDeleteByQuery(Platform pf, ClassDescriptor cld, Query query, Logger logger)
040            {
041                    super(pf, cld, query, logger);
042            }
043    
044        /**
045         * @see org.apache.ojb.broker.accesslayer.sql.SqlQueryStatement#buildStatement()
046         */
047            protected String buildStatement()
048            {
049                    StringBuffer stmt = new StringBuffer();
050                    StringBuffer where = new StringBuffer();
051    
052                    Criteria crit = this.getQuery().getCriteria();
053    
054                    stmt.append("DELETE FROM ");
055                    stmt.append(getSearchClassDescriptor().getFullTableName());
056                    appendWhereClause(where, crit, stmt);
057    
058                    return stmt.toString();
059            }
060    
061            /* (non-Javadoc)
062             * @see org.apache.ojb.broker.accesslayer.sql.SqlQueryStatement#getColName(org.apache.ojb.broker.accesslayer.sql.SqlQueryStatement.TableAlias, org.apache.ojb.broker.util.SqlHelper.PathInfo, boolean)
063             */
064            protected String getColName(TableAlias aTableAlias, PathInfo aPathInfo, boolean translate)
065            {
066            FieldDescriptor fld = null;
067            String result;
068    
069            if (translate)
070            {
071                fld = getFieldDescriptor(aTableAlias, aPathInfo);
072            }
073    
074            if (fld != null)
075            {
076                // BRJ : No alias for delete
077                result = fld.getColumnName();
078            }
079            else
080            {
081                result = aPathInfo.column;
082            }
083    
084           return result;
085       }
086    
087    }