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.util.logging.Logger;
019
020 /**
021 * Model an INSERT Statement for M:N indirection table
022 *
023 * @author <a href="mailto:jbraeuchi@hotmail.com">Jakob Braeuchi</a>
024 * @version $Id: SqlInsertMNStatement.java,v 1.1 2007-08-24 22:17:39 ewestfal Exp $
025 */
026 public class SqlInsertMNStatement extends SqlMNStatement
027 {
028
029 /**
030 * Constructor for SqlInsertMNStatement.
031 * @param table
032 * @param columns
033 */
034 public SqlInsertMNStatement(String table, String[] columns, Logger logger)
035 {
036 super (table, columns, logger);
037 }
038
039 /**
040 * generates a values(?,) for a prepared insert statement.
041 * @param stmt the StringBuffer
042 */
043 private void appendListOfValues(StringBuffer stmt)
044 {
045 int cnt = getColumns().length;
046
047 stmt.append(" VALUES (");
048
049 for (int i = 0; i < cnt; i++)
050 {
051 if (i > 0)
052 {
053 stmt.append(',');
054 }
055 stmt.append('?');
056 }
057 stmt.append(')');
058 }
059
060 /**
061 * @see org.apache.ojb.broker.accesslayer.SqlStatement#getStatement()
062 */
063 public String getStatement()
064 {
065 StringBuffer stmt = new StringBuffer(1024);
066
067 stmt.append("INSERT INTO ");
068 appendTable(getTable(),stmt);
069 stmt.append(" (");
070 appendListOfColumns(getColumns(),stmt);
071 stmt.append(")");
072 appendListOfValues(stmt);
073 return stmt.toString();
074 }
075
076 }
077