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 <code>true</code> 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; } /** * [EMAIL PROTECTED] */ 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.