From 8b86819b86c4e473171bddc809a650f882e8be68 Mon Sep 17 00:00:00 2001 From: Samuel Holland Date: Wed, 10 Jan 2018 00:01:31 -0600 Subject: ConfigStore: Add a rename method and implement it Signed-off-by: Samuel Holland --- .../java/com/wireguard/android/configStore/ConfigStore.java | 8 ++++++++ .../com/wireguard/android/configStore/FileConfigStore.java | 11 +++++++++++ 2 files changed, 19 insertions(+) (limited to 'app/src/main/java') diff --git a/app/src/main/java/com/wireguard/android/configStore/ConfigStore.java b/app/src/main/java/com/wireguard/android/configStore/ConfigStore.java index 1d6d29ea..3995376c 100644 --- a/app/src/main/java/com/wireguard/android/configStore/ConfigStore.java +++ b/app/src/main/java/com/wireguard/android/configStore/ConfigStore.java @@ -42,6 +42,14 @@ public interface ConfigStore { */ Config load(final String name) throws Exception; + /** + * Rename the configuration for the tunnel given by {@code name}. + * + * @param name The identifier for the existing configuration in persistent storage. + * @param replacement The new identifier for the configuration in persistent storage. + */ + void rename(String name, String replacement) throws Exception; + /** * Save the configuration for an existing tunnel given by {@code name}. * diff --git a/app/src/main/java/com/wireguard/android/configStore/FileConfigStore.java b/app/src/main/java/com/wireguard/android/configStore/FileConfigStore.java index 68dfb485..4bc7a17e 100644 --- a/app/src/main/java/com/wireguard/android/configStore/FileConfigStore.java +++ b/app/src/main/java/com/wireguard/android/configStore/FileConfigStore.java @@ -69,6 +69,17 @@ public final class FileConfigStore implements ConfigStore { } } + @Override + public void rename(final String name, final String replacement) throws IOException { + Log.d(TAG, "Renaming configuration for tunnel " + name + " to " + replacement); + final File file = fileFor(name); + final File replacementFile = fileFor(replacement); + if (!replacementFile.createNewFile()) + throw new IOException("Configuration for " + replacement + " already exists"); + if (!file.renameTo(replacementFile)) + throw new IOException("Cannot rename configuration file " + file.getName()); + } + @Override public Config save(final String name, final Config config) throws IOException { Log.d(TAG, "Saving configuration for tunnel " + name); -- cgit v1.2.3