[Fix] Use type and ID when updating elements in DB tables

This commit is contained in:
Robert von Burg 2023-08-24 08:13:17 +02:00
parent f6f3a65f9c
commit 2d751e0d1a
Signed by: eitch
GPG Key ID: 75DB9C85C74331F7
3 changed files with 30 additions and 27 deletions

View File

@ -43,10 +43,10 @@ public class PostgreSqlActivityDao extends PostgresqlDao<Activity> implements Ac
private static final String insertAsXmlSqlS = "insert into {0} (id, version, created_by, created_at, updated_at, deleted, latest, name, type, state, asxml) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?::order_state, ?)";
private static final String insertAsJsonSqlS = "insert into {0} (id, version, created_by, created_at, updated_at, deleted, latest, name, type, state, asjson) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?::order_state, ?)";
private static final String updateAsXmlSqlS = "update {0} set created_by = ?, created_at = ?, updated_at = ?, deleted = ?, latest = ?, name = ?, type = ?, state = ?::order_state, asxml = ? where id = ? and version = ?";
private static final String updateAsJsonSqlS = "update {0} set created_by = ?, created_at = ?, updated_at = ?, deleted = ?, latest = ?, name = ?, type = ?, state = ?::order_state, asjson = ? where id = ? and version = ?";
private static final String updateAsXmlSqlS = "update {0} set created_by = ?, created_at = ?, updated_at = ?, deleted = ?, latest = ?, name = ?, state = ?::order_state, asxml = ? where type = ? and id = ? and version = ?";
private static final String updateAsJsonSqlS = "update {0} set created_by = ?, created_at = ?, updated_at = ?, deleted = ?, latest = ?, name = ?, state = ?::order_state, asjson = ? where type = ? and id = ? and version = ?";
private static final String updateLatestSqlS = "update {0} SET latest = false WHERE id = ? AND version = ?";
private static final String updateLatestSqlS = "update {0} SET latest = false WHERE type = ? and id = ? AND version = ?";
public PostgreSqlActivityDao(DataType dataType, Connection connection, TransactionResult txResult,
boolean versioningEnabled) {
@ -69,7 +69,7 @@ public class PostgreSqlActivityDao extends PostgresqlDao<Activity> implements Ac
MessageFormat.format("Failed to extract Activity from sqlxml value for {0} / {1}", id, type), e);
}
if (listener.getActivities().size() == 0)
if (listener.getActivities().isEmpty())
throw new StrolchPersistenceException(
MessageFormat.format("No Activity parsed from sqlxml value for {0} / {1}", id, type));
if (listener.getActivities().size() > 1)
@ -140,8 +140,9 @@ public class PostgreSqlActivityDao extends PostgresqlDao<Activity> implements Ac
try (PreparedStatement preparedStatement = this.connection.prepareStatement(sql)) {
// primary key
preparedStatement.setString(1, activity.getId());
preparedStatement.setInt(2, activity.getVersion().getPreviousVersion());
preparedStatement.setString(1, activity.getType());
preparedStatement.setString(2, activity.getId());
preparedStatement.setInt(3, activity.getVersion().getPreviousVersion());
int modCount = preparedStatement.executeUpdate();
if (modCount != 1) {
@ -196,12 +197,12 @@ public class PostgreSqlActivityDao extends PostgresqlDao<Activity> implements Ac
// attributes
preparedStatement.setString(6, activity.getName());
preparedStatement.setString(7, activity.getType());
preparedStatement.setString(8, activity.getState().name());
preparedStatement.setString(7, activity.getState().name());
SQLXML sqlxml = writeObject(preparedStatement, activity, 9);
SQLXML sqlxml = writeObject(preparedStatement, activity, 8);
// primary key
preparedStatement.setString(9, activity.getType());
preparedStatement.setString(10, activity.getId());
preparedStatement.setInt(11, activity.getVersion().getVersion());

View File

@ -60,10 +60,10 @@ public class PostgreSqlOrderDao extends PostgresqlDao<Order> implements OrderDao
private static final String insertAsXmlSqlS = "insert into {0} (id, version, created_by, created_at, updated_at, deleted, latest, name, type, state, date, asxml) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?::order_state, ?, ?)";
private static final String insertAsJsonSqlS = "insert into {0} (id, version, created_by, created_at, updated_at, deleted, latest, name, type, state, date, asjson) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?::order_state, ?, ?)";
private static final String updateAsXmlSqlS = "update {0} set created_by = ?, created_at = ?, updated_at = ?, deleted = ?, latest = ?, name = ?, type = ?, state = ?::order_state, date = ?, asxml = ? where id = ? and version = ?";
private static final String updateAsJsonSqlS = "update {0} set created_by = ?, created_at = ?, updated_at = ?, deleted = ?, latest = ?, name = ?, type = ?, state = ?::order_state, date = ?, asjson = ? where id = ? and version = ?";
private static final String updateAsXmlSqlS = "update {0} set created_by = ?, created_at = ?, updated_at = ?, deleted = ?, latest = ?, name = ?, state = ?::order_state, date = ?, asxml = ? where type = ? and id = ? and version = ?";
private static final String updateAsJsonSqlS = "update {0} set created_by = ?, created_at = ?, updated_at = ?, deleted = ?, latest = ?, name = ?, state = ?::order_state, date = ?, asjson = ? where type = ? and id = ? and version = ?";
private static final String updateLatestSqlS = "update {0} SET latest = false WHERE id = ? AND version = ?";
private static final String updateLatestSqlS = "update {0} SET latest = false WHERE type = ? and id = ? AND version = ?";
public PostgreSqlOrderDao(DataType dataType, Connection connection, TransactionResult txResult,
boolean versioningEnabled) {
@ -86,7 +86,7 @@ public class PostgreSqlOrderDao extends PostgresqlDao<Order> implements OrderDao
MessageFormat.format("Failed to extract Order from sqlxml value for {0} / {1}", id, type), e);
}
if (listener.getOrders().size() == 0)
if (listener.getOrders().isEmpty())
throw new StrolchPersistenceException(
MessageFormat.format("No Orders parsed from sqlxml value for {0} / {1}", id, type));
if (listener.getOrders().size() > 1)
@ -157,8 +157,9 @@ public class PostgreSqlOrderDao extends PostgresqlDao<Order> implements OrderDao
try (PreparedStatement preparedStatement = this.connection.prepareStatement(sql)) {
// primary key
preparedStatement.setString(1, order.getId());
preparedStatement.setInt(2, order.getVersion().getPreviousVersion());
preparedStatement.setString(1, order.getType());
preparedStatement.setString(2, order.getId());
preparedStatement.setInt(3, order.getVersion().getPreviousVersion());
int modCount = preparedStatement.executeUpdate();
if (modCount != 1) {
@ -214,13 +215,13 @@ public class PostgreSqlOrderDao extends PostgresqlDao<Order> implements OrderDao
// attributes
preparedStatement.setString(6, order.getName());
preparedStatement.setString(7, order.getType());
preparedStatement.setString(8, order.getState().name());
preparedStatement.setTimestamp(9, new Timestamp(order.getDate().getTime()), Calendar.getInstance());
preparedStatement.setString(7, order.getState().name());
preparedStatement.setTimestamp(8, new Timestamp(order.getDate().getTime()), Calendar.getInstance());
SQLXML sqlxml = writeObject(preparedStatement, order, 10);
SQLXML sqlxml = writeObject(preparedStatement, order, 9);
// primary key
preparedStatement.setString(10, order.getType());
preparedStatement.setString(11, order.getId());
preparedStatement.setInt(12, order.getVersion().getVersion());

View File

@ -43,10 +43,10 @@ public class PostgreSqlResourceDao extends PostgresqlDao<Resource> implements Re
private static final String insertAsXmlSqlS = "insert into {0} (id, version, created_by, updated_at, created_at, deleted, latest, name, type, asxml) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
private static final String insertAsJsonSqlS = "insert into {0} (id, version, created_by, updated_at, created_at, deleted, latest, name, type, asjson) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
private static final String updateAsXmlSqlS = "update {0} set created_by = ?, created_at = ?, updated_at = ?, deleted = ?, latest = ?, name = ?, type = ?, asxml = ? where id = ? and version = ?";
private static final String updateAsJsonSqlS = "update {0} set created_by = ?, created_at = ?, updated_at = ?, deleted = ?, latest = ?, name = ?, type = ?, asjson = ? where id = ? and version = ?";
private static final String updateAsXmlSqlS = "update {0} set created_by = ?, created_at = ?, updated_at = ?, deleted = ?, latest = ?, name = ?, asxml = ? where type = ? and id = ? and version = ?";
private static final String updateAsJsonSqlS = "update {0} set created_by = ?, created_at = ?, updated_at = ?, deleted = ?, latest = ?, name = ?, asjson = ? where type = ? and id = ? and version = ?";
private static final String updateLatestSqlS = "update {0} SET latest = false WHERE id = ? AND version = ?";
private static final String updateLatestSqlS = "update {0} SET latest = false WHERE type = ? and id = ? AND version = ?";
protected PostgreSqlResourceDao(DataType dataType, Connection connection, TransactionResult txResult,
boolean versioningEnabled) {
@ -69,7 +69,7 @@ public class PostgreSqlResourceDao extends PostgresqlDao<Resource> implements Re
MessageFormat.format("Failed to extract Resource from sqlxml value for {0} / {1}", id, type), e);
}
if (listener.getResources().size() == 0)
if (listener.getResources().isEmpty())
throw new StrolchPersistenceException(
MessageFormat.format("No Resource parsed from sqlxml value for {0} / {1}", id, type));
if (listener.getResources().size() > 1)
@ -139,8 +139,9 @@ public class PostgreSqlResourceDao extends PostgresqlDao<Resource> implements Re
try (PreparedStatement preparedStatement = this.connection.prepareStatement(sql)) {
// primary key
preparedStatement.setString(1, resource.getId());
preparedStatement.setInt(2, resource.getVersion().getPreviousVersion());
preparedStatement.setString(1, resource.getType());
preparedStatement.setString(2, resource.getId());
preparedStatement.setInt(3, resource.getVersion().getPreviousVersion());
int modCount = preparedStatement.executeUpdate();
if (modCount != 1) {
@ -196,11 +197,11 @@ public class PostgreSqlResourceDao extends PostgresqlDao<Resource> implements Re
// attributes
preparedStatement.setString(6, resource.getName());
preparedStatement.setString(7, resource.getType());
SQLXML sqlxml = writeObject(preparedStatement, resource, 8);
SQLXML sqlxml = writeObject(preparedStatement, resource, 7);
// primary key
preparedStatement.setString(8, resource.getType());
preparedStatement.setString(9, resource.getId());
preparedStatement.setInt(10, resource.getVersion().getVersion());