X-Git-Url: https://gerrit.simantics.org/r/gitweb?p=simantics%2Fplatform.git;a=blobdiff_plain;f=bundles%2Forg.simantics.utils%2Fsrc%2Forg%2Fsimantics%2Futils%2FFileService.java;h=ab3d249d3bd95e157dcdb6af12caa87dba737353;hp=c500c66350b937e6d5d6d61ff6e9d7800ffc4115;hb=c26409b1caf2f1e560d37c5befd11b442399c3fe;hpb=0ae2b770234dfc3cbb18bd38f324125cf0faca07 diff --git a/bundles/org.simantics.utils/src/org/simantics/utils/FileService.java b/bundles/org.simantics.utils/src/org/simantics/utils/FileService.java index c500c6635..ab3d249d3 100644 --- a/bundles/org.simantics.utils/src/org/simantics/utils/FileService.java +++ b/bundles/org.simantics.utils/src/org/simantics/utils/FileService.java @@ -22,6 +22,31 @@ public interface FileService { } } + @FunctionalInterface + public static interface FileOperation { + IOperation perform(File file); + + default void perform(File... files) { + for (File f : files) + perform(f); + } + } + + public static class DeleteOperation implements FileOperation { + private final FileService service; + private final DeleteOption[] options; + + public DeleteOperation(FileService service, DeleteOption... options) { + this.service = service; + this.options = options; + } + + @Override + public IOperation perform(File file) { + return service.scheduleDeleteIfExists(file, options); + } + } + /** * Schedules a file to be deleted at some point in the future when the * system allows it to be deleted if ever. @@ -33,4 +58,16 @@ public interface FileService { */ IOperation scheduleDeleteIfExists(File file, DeleteOption... options); + /** + * @param options + * the deletion options to be used by the returned FileOperation + * @return a FileOperation that runs + * {@link #scheduleDeleteIfExists(File, DeleteOption...)} for any + * files given to it + * @since 1.28.0 + */ + default FileOperation deleteOperation(DeleteOption... options) { + return new DeleteOperation(this, options); + } + }