-package org.simantics.backup;\r
-\r
-import java.nio.file.Path;\r
-import java.util.ArrayList;\r
-import java.util.Collection;\r
-import java.util.List;\r
-import java.util.concurrent.Future;\r
-\r
-/**\r
- * @author Tuukka Lehtonen\r
- */\r
-public class Backups {\r
-\r
- /**\r
- * \r
- * @param providers\r
- * @throws BackupException\r
- */\r
- public static void lock(List<IBackupProvider> providers) throws BackupException {\r
- int i = 0;\r
- int count = providers.size();\r
- try {\r
- for (; i < count; ++i) {\r
- providers.get(i).lock();\r
- }\r
- } catch (BackupException e) {\r
- for (int j = i-1; j >= 0; --j) {\r
- try {\r
- providers.get(j).unlock();\r
- } catch (BackupException ex) {\r
- // TODO: proper logging.\r
- ex.printStackTrace();\r
- }\r
- }\r
- throw e;\r
- }\r
- }\r
-\r
- public static List<Future<BackupException>> syncBackup(List<IBackupProvider> providers, Path targetPath, int revision) throws BackupException {\r
- // Initiate all backup providers, possibly to execute concurrently.\r
- List<Future<BackupException>> futures = new ArrayList<>(providers.size());\r
- for (IBackupProvider provider : providers)\r
- futures.add( provider.backup(targetPath, revision) );\r
-\r
- return futures;\r
- }\r
-\r
- public static void unlock(Collection<IBackupProvider> providers) {\r
- for (IBackupProvider provider : providers) {\r
- try {\r
- provider.unlock();\r
- } catch (BackupException e) {\r
- // TODO: proper logging\r
- e.printStackTrace();\r
- }\r
- }\r
- }\r
-\r
-// private static class BackupResultFuture implements Future<BackupException> {\r
-//\r
-// public static final BackupResultFuture SUCCESS = new BackupResultFuture(null);\r
-//\r
-// private final BackupException e;\r
-//\r
-// public BackupResultFuture(BackupException e) {\r
-// this.e = e;\r
-// }\r
-//\r
-// @Override\r
-// public boolean cancel(boolean mayInterruptIfRunning) {\r
-// return false;\r
-// }\r
-//\r
-// @Override\r
-// public boolean isCancelled() {\r
-// return false;\r
-// }\r
-//\r
-// @Override\r
-// public boolean isDone() {\r
-// return true;\r
-// }\r
-//\r
-// @Override\r
-// public BackupException get() throws InterruptedException, ExecutionException {\r
-// return e;\r
-// }\r
-//\r
-// @Override\r
-// public BackupException get(long timeout, TimeUnit unit) throws InterruptedException, ExecutionException, TimeoutException {\r
-// return e;\r
-// }\r
-//\r
-// }\r
-\r
-}\r
+package org.simantics.backup;
+
+import java.nio.file.Path;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import java.util.concurrent.Future;
+
+/**
+ * @author Tuukka Lehtonen
+ */
+public class Backups {
+
+ /**
+ *
+ * @param providers
+ * @throws BackupException
+ */
+ public static void lock(List<IBackupProvider> providers) throws BackupException {
+ int i = 0;
+ int count = providers.size();
+ try {
+ for (; i < count; ++i) {
+ providers.get(i).lock();
+ }
+ } catch (BackupException e) {
+ for (int j = i-1; j >= 0; --j) {
+ try {
+ providers.get(j).unlock();
+ } catch (BackupException ex) {
+ // TODO: proper logging.
+ ex.printStackTrace();
+ }
+ }
+ throw e;
+ }
+ }
+
+ public static List<Future<BackupException>> syncBackup(List<IBackupProvider> providers, Path targetPath, int revision) throws BackupException {
+ // Initiate all backup providers, possibly to execute concurrently.
+ List<Future<BackupException>> futures = new ArrayList<>(providers.size());
+ for (IBackupProvider provider : providers)
+ futures.add( provider.backup(targetPath, revision) );
+
+ return futures;
+ }
+
+ public static void unlock(Collection<IBackupProvider> providers) {
+ for (IBackupProvider provider : providers) {
+ try {
+ provider.unlock();
+ } catch (BackupException e) {
+ // TODO: proper logging
+ e.printStackTrace();
+ }
+ }
+ }
+
+// private static class BackupResultFuture implements Future<BackupException> {
+//
+// public static final BackupResultFuture SUCCESS = new BackupResultFuture(null);
+//
+// private final BackupException e;
+//
+// public BackupResultFuture(BackupException e) {
+// this.e = e;
+// }
+//
+// @Override
+// public boolean cancel(boolean mayInterruptIfRunning) {
+// return false;
+// }
+//
+// @Override
+// public boolean isCancelled() {
+// return false;
+// }
+//
+// @Override
+// public boolean isDone() {
+// return true;
+// }
+//
+// @Override
+// public BackupException get() throws InterruptedException, ExecutionException {
+// return e;
+// }
+//
+// @Override
+// public BackupException get(long timeout, TimeUnit unit) throws InterruptedException, ExecutionException, TimeoutException {
+// return e;
+// }
+//
+// }
+
+}