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.