[Major] added new methods ElementMap.removeAll()
This commit is contained in:
parent
7c0e64808d
commit
7b6ad39060
|
@ -274,6 +274,36 @@ public abstract class PostgresqlDao<T extends StrolchElement> implements Strolch
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public long removeAll() {
|
||||||
|
|
||||||
|
final long toRemove = querySize();
|
||||||
|
|
||||||
|
this.commands.add(new DaoCommand() {
|
||||||
|
@Override
|
||||||
|
public void doComand(ModificationResult modificationResult) {
|
||||||
|
internalRemoveAll(toRemove);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
return toRemove;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public long removeAllBy(final String type) {
|
||||||
|
|
||||||
|
final long toRemove = querySize(type);
|
||||||
|
|
||||||
|
this.commands.add(new DaoCommand() {
|
||||||
|
@Override
|
||||||
|
public void doComand(ModificationResult modificationResult) {
|
||||||
|
internalRemoveAllBy(toRemove, type);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
return toRemove;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param element
|
* @param element
|
||||||
*/
|
*/
|
||||||
|
@ -297,11 +327,44 @@ public abstract class PostgresqlDao<T extends StrolchElement> implements Strolch
|
||||||
}
|
}
|
||||||
|
|
||||||
} catch (SQLException e) {
|
} catch (SQLException e) {
|
||||||
throw new StrolchPersistenceException(MessageFormat.format("Failed to update Order {0} due to {2}",
|
throw new StrolchPersistenceException(MessageFormat.format("Failed to remove {0} due to {2}",
|
||||||
element.getLocator(), e.getLocalizedMessage()), e);
|
element.getLocator(), e.getLocalizedMessage()), e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected void internalRemoveAll(final long toRemove) {
|
||||||
|
String sql = "delete from " + getTableName();
|
||||||
|
try (PreparedStatement preparedStatement = this.tx.getConnection().prepareStatement(sql)) {
|
||||||
|
int modCount = preparedStatement.executeUpdate();
|
||||||
|
if (modCount != toRemove) {
|
||||||
|
String msg = "Expected to delete {0} elements but SQL statement removed {1} elements!";
|
||||||
|
msg = MessageFormat.format(msg, toRemove, modCount);
|
||||||
|
throw new StrolchPersistenceException(msg);
|
||||||
|
}
|
||||||
|
|
||||||
|
} catch (SQLException e) {
|
||||||
|
throw new StrolchPersistenceException(MessageFormat.format("Failed to remove all elements due to {0}",
|
||||||
|
e.getLocalizedMessage()), e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void internalRemoveAllBy(final long toRemove, String type) {
|
||||||
|
String sql = "delete from " + getTableName() + " where type = ?";
|
||||||
|
try (PreparedStatement preparedStatement = this.tx.getConnection().prepareStatement(sql)) {
|
||||||
|
preparedStatement.setString(1, type);
|
||||||
|
int modCount = preparedStatement.executeUpdate();
|
||||||
|
if (modCount != toRemove) {
|
||||||
|
String msg = "Expected to delete {0} elements of type {1} but SQL statement removed {2} elements!";
|
||||||
|
msg = MessageFormat.format(msg, toRemove, type, modCount);
|
||||||
|
throw new StrolchPersistenceException(msg);
|
||||||
|
}
|
||||||
|
|
||||||
|
} catch (SQLException e) {
|
||||||
|
throw new StrolchPersistenceException(MessageFormat.format(
|
||||||
|
"Failed to remove all elements of type {0} due to {1}", type, e.getLocalizedMessage()), e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void commit(TransactionResult txResult) {
|
void commit(TransactionResult txResult) {
|
||||||
ModificationResult modificationResult = new ModificationResult(getClassName());
|
ModificationResult modificationResult = new ModificationResult(getClassName());
|
||||||
txResult.addModificationResult(modificationResult);
|
txResult.addModificationResult(modificationResult);
|
||||||
|
|
Loading…
Reference in New Issue