1 package org.simantics.backup;
\r
3 import java.nio.file.Path;
\r
4 import java.util.ArrayList;
\r
5 import java.util.Collection;
\r
6 import java.util.List;
\r
7 import java.util.concurrent.Future;
\r
10 * @author Tuukka Lehtonen
\r
12 public class Backups {
\r
17 * @throws BackupException
\r
19 public static void lock(List<IBackupProvider> providers) throws BackupException {
\r
21 int count = providers.size();
\r
23 for (; i < count; ++i) {
\r
24 providers.get(i).lock();
\r
26 } catch (BackupException e) {
\r
27 for (int j = i-1; j >= 0; --j) {
\r
29 providers.get(j).unlock();
\r
30 } catch (BackupException ex) {
\r
31 // TODO: proper logging.
\r
32 ex.printStackTrace();
\r
39 public static List<Future<BackupException>> syncBackup(List<IBackupProvider> providers, Path targetPath, int revision) throws BackupException {
\r
40 // Initiate all backup providers, possibly to execute concurrently.
\r
41 List<Future<BackupException>> futures = new ArrayList<>(providers.size());
\r
42 for (IBackupProvider provider : providers)
\r
43 futures.add( provider.backup(targetPath, revision) );
\r
48 public static void unlock(Collection<IBackupProvider> providers) {
\r
49 for (IBackupProvider provider : providers) {
\r
52 } catch (BackupException e) {
\r
53 // TODO: proper logging
\r
54 e.printStackTrace();
\r
59 // private static class BackupResultFuture implements Future<BackupException> {
\r
61 // public static final BackupResultFuture SUCCESS = new BackupResultFuture(null);
\r
63 // private final BackupException e;
\r
65 // public BackupResultFuture(BackupException e) {
\r
70 // public boolean cancel(boolean mayInterruptIfRunning) {
\r
75 // public boolean isCancelled() {
\r
80 // public boolean isDone() {
\r
85 // public BackupException get() throws InterruptedException, ExecutionException {
\r
90 // public BackupException get(long timeout, TimeUnit unit) throws InterruptedException, ExecutionException, TimeoutException {
\r