@Override public void performAction(final Connection connection) throws Exception { for (UUID id : preferenceRecordsToRemove) { try (PreparedStatement deleteStatement = connection.prepareStatement(String.format( DELETE_FROM_PREFERENCES, getPreferencesTableName()))) { deleteStatement.setString(1, id.toString()); int deletedCount = deleteStatement.executeUpdate(); if (deletedCount == 1) { getLogger().debug(String.format( "Failed to delete preference with id %s : no such record", id)); } } } updateOrCreateInternal(connection, preferenceRecordsToAdd); if (preCommitAction != null) { preCommitAction.performAction(connection); } } });
public void writeFileSafely(Path targetFile, Path backupFile, Path tmpFile, BaseAction<File, IOException> write) throws IOException { Files.deleteIfExists(tmpFile); Files.deleteIfExists(backupFile); Set<PosixFilePermission> permissions = null; if (Files.exists(targetFile) && isPosixFileSystem(targetFile)) { permissions = Files.getPosixFilePermissions(targetFile); } tmpFile = createNewFile(tmpFile, permissions); write.performAction(tmpFile.toFile()); atomicFileMoveOrReplace(targetFile, backupFile); if (permissions != null) { Files.setPosixFilePermissions(backupFile, permissions); } atomicFileMoveOrReplace(tmpFile, targetFile); Files.deleteIfExists(tmpFile); Files.deleteIfExists(backupFile); }
transactedAction.performAction(connection); connection.commit();