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 }