Преглед изворни кода

Pass a file into YamlAliasStore.

This allows it to be used to read other files, such as bundled
defaults.

Change-Id: I1db09ccf6e8048e00e8c73da4962f68c8bb8fb85
Reviewed-on: http://gerrit.dmdirc.com/3555
Reviewed-by: Greg Holmes <greg@dmdirc.com>
Automatic-Compile: DMDirc Build Manager
pull/1/head
Chris Smith пре 10 година
родитељ
комит
89474b1ee8

+ 8
- 2
src/com/dmdirc/commandparser/aliases/AliasesModule.java Прегледај датотеку

@@ -22,9 +22,13 @@
22 22
 
23 23
 package com.dmdirc.commandparser.aliases;
24 24
 
25
+import com.dmdirc.commandline.CommandLineOptionsModule.Directory;
26
+import com.dmdirc.commandline.CommandLineOptionsModule.DirectoryType;
25 27
 import com.dmdirc.interfaces.Migrator;
26 28
 import com.dmdirc.interfaces.SystemLifecycleComponent;
27 29
 
30
+import java.nio.file.Paths;
31
+
28 32
 import javax.inject.Singleton;
29 33
 
30 34
 import dagger.Module;
@@ -38,8 +42,10 @@ public class AliasesModule {
38 42
 
39 43
     @Provides
40 44
     @Singleton
41
-    public AliasStore getAliasStore(final YamlAliasStore store) {
42
-        return store;
45
+    public AliasStore getAliasStore(
46
+            @Directory(DirectoryType.BASE) final String directory,
47
+            final AliasFactory factory) {
48
+        return new YamlAliasStore(Paths.get(directory, "aliases.yml"), factory);
43 49
     }
44 50
 
45 51
     @Provides(type = Provides.Type.SET)

+ 15
- 20
src/com/dmdirc/commandparser/aliases/YamlAliasStore.java Прегледај датотеку

@@ -22,17 +22,13 @@
22 22
 
23 23
 package com.dmdirc.commandparser.aliases;
24 24
 
25
-import com.dmdirc.commandline.CommandLineOptionsModule.Directory;
26
-import com.dmdirc.commandline.CommandLineOptionsModule.DirectoryType;
27
-
28
-import java.io.File;
29
-import java.io.FileInputStream;
30
-import java.io.FileOutputStream;
31 25
 import java.io.IOException;
32 26
 import java.io.InputStream;
33 27
 import java.io.InputStreamReader;
34 28
 import java.io.OutputStream;
35 29
 import java.io.OutputStreamWriter;
30
+import java.nio.file.Files;
31
+import java.nio.file.Path;
36 32
 import java.util.ArrayList;
37 33
 import java.util.HashMap;
38 34
 import java.util.HashSet;
@@ -40,8 +36,6 @@ import java.util.List;
40 36
 import java.util.Map;
41 37
 import java.util.Set;
42 38
 
43
-import javax.inject.Inject;
44
-
45 39
 import org.slf4j.Logger;
46 40
 import org.slf4j.LoggerFactory;
47 41
 
@@ -70,26 +64,28 @@ public class YamlAliasStore implements AliasStore {
70 64
 
71 65
     private static final Logger LOG = LoggerFactory.getLogger(YamlAliasStore.class);
72 66
 
73
-    /** The directory to find the aliases file in. */
74
-    private final String directory;
67
+    /** The path to the file to read and write aliases in. */
68
+    private final Path path;
75 69
     /** The factory to use to create aliases. */
76 70
     private final AliasFactory factory;
77 71
 
78
-    @Inject
79
-    public YamlAliasStore(
80
-            @Directory(DirectoryType.BASE) final String directory,
81
-            final AliasFactory factory) {
82
-        this.directory = directory;
72
+    /**
73
+     * Creates a new YAML alias store.
74
+     *
75
+     * @param path    The path to the YAML file to read and write aliases in.
76
+     * @param factory The factory to use to create aliases.
77
+     */
78
+    public YamlAliasStore(final Path path, final AliasFactory factory) {
79
+        this.path = path;
83 80
         this.factory = factory;
84 81
     }
85 82
 
86 83
     @Override
87 84
     public Set<Alias> readAliases() {
88
-        final File file = new File(directory, "aliases.yml");
89 85
         final Set<Alias> aliases = new HashSet<>();
90 86
 
91
-        if (file.exists()) {
92
-            try (final InputStream stream = new FileInputStream(file);
87
+        if (Files.exists(path)) {
88
+            try (final InputStream stream = Files.newInputStream(path);
93 89
                     final InputStreamReader reader = new InputStreamReader(stream, CHARSET)) {
94 90
                 final YamlReader yamlReader = new YamlReader(reader);
95 91
                 final Object root = yamlReader.read();
@@ -105,10 +101,9 @@ public class YamlAliasStore implements AliasStore {
105 101
 
106 102
     @Override
107 103
     public void writeAliases(final Set<Alias> aliases) {
108
-        final File file = new File(directory, "aliases.yml");
109 104
         final List<Object> list = getAliases(aliases);
110 105
 
111
-        try (final OutputStream stream = new FileOutputStream(file);
106
+        try (final OutputStream stream = Files.newOutputStream(path);
112 107
                 final OutputStreamWriter writer = new OutputStreamWriter(stream, CHARSET)) {
113 108
             final YamlWriter yamlWriter = new YamlWriter(writer);
114 109
             yamlWriter.write(list);

Loading…
Откажи
Сачувај