Return-Path: Delivered-To: apmail-db-ddlutils-dev-archive@www.apache.org Received: (qmail 21922 invoked from network); 3 Mar 2008 09:55:58 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 3 Mar 2008 09:55:58 -0000 Received: (qmail 35262 invoked by uid 500); 3 Mar 2008 09:55:54 -0000 Delivered-To: apmail-db-ddlutils-dev-archive@db.apache.org Received: (qmail 35186 invoked by uid 500); 3 Mar 2008 09:55:54 -0000 Mailing-List: contact ddlutils-dev-help@db.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: ddlutils-dev@db.apache.org Delivered-To: mailing list ddlutils-dev@db.apache.org Received: (qmail 35175 invoked by uid 99); 3 Mar 2008 09:55:54 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 03 Mar 2008 01:55:54 -0800 X-ASF-Spam-Status: No, hits=-2000.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.140] (HELO brutus.apache.org) (140.211.11.140) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 03 Mar 2008 09:55:15 +0000 Received: from brutus (localhost [127.0.0.1]) by brutus.apache.org (Postfix) with ESMTP id 6A179234C03E for ; Mon, 3 Mar 2008 01:54:50 -0800 (PST) Message-ID: <1294780551.1204538090428.JavaMail.jira@brutus> Date: Mon, 3 Mar 2008 01:54:50 -0800 (PST) From: "Rijk van Haaften (JIRA)" To: ddlutils-dev@db.apache.org Subject: [jira] Created: (DDLUTILS-197) Implementation for store() and exists() MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Virus-Checked: Checked by ClamAV on apache.org Implementation for store() and exists() --------------------------------------- Key: DDLUTILS-197 URL: https://issues.apache.org/jira/browse/DDLUTILS-197 Project: DdlUtils Issue Type: Improvement Components: Core (No specific database) Reporter: Rijk van Haaften Assignee: Thomas Dudziak Priority: Minor /** * Determines whether the given dyna bean is stored in the database. * * @param dynaBean The bean * @param connection The connection * @return true if this dyna bean has a primary key */ protected boolean exists(Connection connection, Database model, DynaBean dynaBean) { SqlDynaClass dynaClass = model.getDynaClassFor(dynaBean); SqlDynaProperty[] primaryKeys = dynaClass.getPrimaryKeyProperties(); if (primaryKeys.length == 0) { return false; } String tableName = _builder.getDelimitedIdentifier(dynaClass.getTable().getName()); StringBuilder sql = new StringBuilder("SELECT * FROM " + tableName + " WHERE "); for (int i = 0; i < primaryKeys.length; i++) { if (i > 0) { sql.append(" AND "); } String key = primaryKeys[i].getColumn().getName(); sql.append(_builder.getDelimitedIdentifier(key)); sql.append('='); sql.append('\''); sql.append(dynaBean.get(key)); sql.append('\''); } Statement statement = null; ResultSet resultSet = null; boolean exists = false; try { statement = connection.createStatement(); resultSet = statement.executeQuery(sql.toString()); exists = resultSet.next(); resultSet.close(); } catch (SQLException ex) { throw new DatabaseOperationException("Error while reading from the database", ex); } finally { closeStatement(statement); } return exists; } /** * {@inheritDoc} */ public void store(Database model, DynaBean dynaBean) throws DatabaseOperationException { Connection connection = borrowConnection(); try { if (exists(connection, model, dynaBean)) { update(connection, model, dynaBean); } else { insert(connection, model, dynaBean); } } finally { returnConnection(connection); } } -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.