Selaa lähdekoodia

Add renamealias to corealiasdialogmodel

Change-Id: I3a6f219279f8c0a6a8a0f7471114b371a7039ef7
Reviewed-on: http://gerrit.dmdirc.com/3524
Automatic-Compile: DMDirc Build Manager
Reviewed-by: Chris Smith <chris@dmdirc.com>
pull/1/head
Greg Holmes 10 vuotta sitten
vanhempi
commit
44911486b0

+ 19
- 0
src/com/dmdirc/commandparser/aliases/Alias.java Näytä tiedosto

@@ -25,6 +25,8 @@ package com.dmdirc.commandparser.aliases;
25 25
 import com.dmdirc.commandparser.CommandInfo;
26 26
 import com.dmdirc.commandparser.CommandType;
27 27
 
28
+import com.google.common.base.Objects;
29
+
28 30
 /**
29 31
  * Describes a user-defined command alias.
30 32
  */
@@ -73,4 +75,21 @@ public class Alias implements CommandInfo {
73 75
         return type;
74 76
     }
75 77
 
78
+    @Override
79
+    public boolean equals(final Object object) {
80
+        if (!(object instanceof Alias)) {
81
+            return false;
82
+        }
83
+        final Alias alias = (Alias) object;
84
+        return Objects.equal(getName(), alias.getName())
85
+                && Objects.equal(getMinArguments(), alias.getMinArguments())
86
+                && Objects.equal(getSubstitution(), alias.getSubstitution())
87
+                && Objects.equal(getType(), alias.getType());
88
+    }
89
+
90
+    @Override
91
+    public int hashCode() {
92
+        return Objects.hashCode(name, minArguments, substitution, type);
93
+    }
94
+
76 95
 }

+ 14
- 0
src/com/dmdirc/commandparser/aliases/CoreAliasDialogModel.java Näytä tiedosto

@@ -80,10 +80,24 @@ public class CoreAliasDialogModel implements AliasDialogModel {
80 80
         Preconditions.checkNotNull(name);
81 81
         Preconditions.checkNotNull(alias);
82 82
         Preconditions.checkArgument(aliases.containsKey(name));
83
+        Preconditions.checkArgument(name.equals(alias.getName()));
83 84
         aliases.put(name, alias);
84 85
         listeners.getCallable(AliasDialogModelListener.class).aliasEdited(name);
85 86
     }
86 87
 
88
+    @Override
89
+    public void renameAlias(final String oldName, final String newName) {
90
+        Preconditions.checkNotNull(oldName);
91
+        Preconditions.checkNotNull(newName);
92
+        Preconditions.checkArgument(aliases.containsKey(oldName));
93
+        Preconditions.checkArgument(!aliases.containsKey(newName));
94
+        final Alias alias = aliases.get(oldName);
95
+        aliases.remove(oldName);
96
+        aliases.put(newName, new Alias(alias.getType(), newName, alias.getMinArguments(),
97
+                alias.getSubstitution()));
98
+        listeners.getCallable(AliasDialogModelListener.class).aliasRenamed(oldName, newName);
99
+    }
100
+
87 101
     @Override
88 102
     public void removeAlias(final String name) {
89 103
         Preconditions.checkNotNull(name);

+ 9
- 0
src/com/dmdirc/interfaces/ui/AliasDialogModel.java Näytä tiedosto

@@ -64,6 +64,15 @@ public interface AliasDialogModel {
64 64
      */
65 65
     void editAlias(final String name, final Alias alias);
66 66
 
67
+    /**
68
+     * Renames an existing alias in the model. This method should not be used for renaming an alias
69
+     * {@link #renameAlias(String, String)}
70
+     *
71
+     * @param oldName Old name for the alias
72
+     * @param newName New name for the alias
73
+     */
74
+    void renameAlias(final String oldName, final String newName);
75
+
67 76
     /**
68 77
      * Removes the named alias from the model.
69 78
      *

+ 8
- 0
src/com/dmdirc/interfaces/ui/AliasDialogModelListener.java Näytä tiedosto

@@ -52,6 +52,14 @@ public interface AliasDialogModelListener {
52 52
      */
53 53
     void aliasEdited(String name);
54 54
 
55
+    /**
56
+     * An alias has been renamed.
57
+     *
58
+     * @param oldName Old name of the alias
59
+     * @param newName New name of the alias
60
+     */
61
+    void aliasRenamed(String oldName, String newName);
62
+
55 63
     /**
56 64
      * An alias selection has been changed.
57 65
      *

+ 37
- 2
test/com/dmdirc/commandparser/aliases/CoreAliasDialogModelTest.java Näytä tiedosto

@@ -46,6 +46,7 @@ public class CoreAliasDialogModelTest {
46 46
     @Mock private AliasManager aliasModel;
47 47
     @Mock private AliasDialogModelListener listener;
48 48
     private final Alias alias1 = new Alias(CommandType.TYPE_GLOBAL, "alias1", 0, "");
49
+    private final Alias alias2Edited = new Alias(CommandType.TYPE_GLOBAL, "alias1", 1, "");
49 50
     private final Alias alias2 = new Alias(CommandType.TYPE_GLOBAL, "alias2", 0, "");
50 51
     private Set<Alias> aliases;
51 52
 
@@ -105,8 +106,19 @@ public class CoreAliasDialogModelTest {
105 106
         when(aliasModel.getAliases()).thenReturn(aliases);
106 107
         final CoreAliasDialogModel model = new CoreAliasDialogModel(aliasModel);
107 108
         assertEquals(model.getAliases().size(), 1);
109
+        assertEquals(model.getAlias("alias1").get().getMinArguments(), 0);
110
+        model.editAlias("alias1", alias2Edited);
111
+        assertEquals(model.getAlias("alias1").get().getMinArguments(), 1);
112
+    }
113
+
114
+    @Test(expected = IllegalArgumentException.class)
115
+    public void testEditAliasFail() {
116
+        aliases.add(alias1);
117
+        when(aliasModel.getAliases()).thenReturn(aliases);
118
+        final CoreAliasDialogModel model = new CoreAliasDialogModel(aliasModel);
119
+        assertEquals(model.getAliases().size(), 1);
120
+        assertEquals(model.getAlias("alias1").get().getMinArguments(), 0);
108 121
         model.editAlias("alias1", alias2);
109
-        assertEquals(model.getAlias("alias1").get(), alias2);
110 122
     }
111 123
 
112 124
     @Test
@@ -115,10 +127,33 @@ public class CoreAliasDialogModelTest {
115 127
         when(aliasModel.getAliases()).thenReturn(aliases);
116 128
         final CoreAliasDialogModel model = new CoreAliasDialogModel(aliasModel);
117 129
         model.addListener(listener);
118
-        model.editAlias("alias1", alias2);
130
+        model.editAlias("alias1", alias2Edited);
119 131
         verify(listener).aliasEdited("alias1");
120 132
     }
121 133
 
134
+    @Test
135
+    public void testRenameAlias() {
136
+        aliases.add(alias1);
137
+        when(aliasModel.getAliases()).thenReturn(aliases);
138
+        final CoreAliasDialogModel model = new CoreAliasDialogModel(aliasModel);
139
+        assertEquals(model.getAliases().size(), 1);
140
+        assertEquals(model.getAlias("alias1").get(), alias1);
141
+        model.renameAlias("alias1", "alias2");
142
+        assertEquals(model.getAlias("alias2").get(), alias2);
143
+    }
144
+
145
+    @Test
146
+    public void testRenameAliasListener() {
147
+        aliases.add(alias1);
148
+        when(aliasModel.getAliases()).thenReturn(aliases);
149
+        final CoreAliasDialogModel model = new CoreAliasDialogModel(aliasModel);
150
+        model.addListener(listener);
151
+        assertEquals(model.getAliases().size(), 1);
152
+        assertEquals(model.getAlias("alias1").get(), alias1);
153
+        model.renameAlias("alias1", "alias2");
154
+        verify(listener).aliasRenamed("alias1", "alias2");
155
+    }
156
+
122 157
     @Test
123 158
     public void testRemoveAlias() {
124 159
         aliases.add(alias1);

Loading…
Peruuta
Tallenna