public static void execute(Collection<DeleteOp> deleteOps) throws IOException {
        try {
            for (DeleteOp deleteOp : deleteOps) {
                deleteOp.prepare();
            }

            // best effort cleanup - delete what's possible and report error if anything remains
            boolean commitResult = true;
            for (DeleteOp op : deleteOps) {
                commitResult &= op.commit();
            }
            if (!commitResult) {
                throw PatchLogger.ROOT_LOGGER.failedToDeleteBackup();
            }

        } catch (PrepareException pe) {
            for (DeleteOp deleteOp : deleteOps) {
                deleteOp.rollback();
            }

            throw PatchLogger.ROOT_LOGGER.failedToDelete(pe.getPath());
        }

    }
public static void execute ( Collection < DeleteOp > deleteOps ) throws IOException { try { for ( DeleteOp deleteOp : deleteOps ) { deleteOp . prepare ( ) ; } boolean commitResult = true ; for ( DeleteOp op : deleteOps ) { commitResult &= op . commit ( ) ; } if ( ! commitResult ) { throw PatchLogger . ROOT_LOGGER . failedToDeleteBackup ( ) ; } } catch ( PrepareException pe ) { for ( DeleteOp deleteOp : deleteOps ) { deleteOp . rollback ( ) ; } throw PatchLogger . ROOT_LOGGER . failedToDelete ( pe . getPath ( ) ) ; } }
performs all delete operations together - if error occurs in one of them, all the operations are rolled back.
For details see {@link DeleteOp#execute()}

@param deleteOps list of {@code DeleteOp} to perform
@throws IOException if an error occurred