Skip to content

Commit 54cffbf

Browse files
committed
Separate ModeStatus(List) to interface/impl
1 parent c271d07 commit 54cffbf

File tree

10 files changed

+326
-216
lines changed

10 files changed

+326
-216
lines changed

src/main/java/org/kitteh/irc/client/library/command/ChannelModeCommand.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,12 +26,13 @@
2626
import org.checkerframework.checker.nullness.qual.NonNull;
2727
import org.checkerframework.checker.nullness.qual.Nullable;
2828
import org.kitteh.irc.client.library.Client;
29+
import org.kitteh.irc.client.library.defaults.element.mode.DefaultModeStatus;
30+
import org.kitteh.irc.client.library.defaults.element.mode.DefaultModeStatusList;
2931
import org.kitteh.irc.client.library.element.ISupportParameter;
3032
import org.kitteh.irc.client.library.element.User;
3133
import org.kitteh.irc.client.library.element.mode.ChannelMode;
3234
import org.kitteh.irc.client.library.element.mode.ChannelUserMode;
3335
import org.kitteh.irc.client.library.element.mode.ModeStatus;
34-
import org.kitteh.irc.client.library.element.mode.ModeStatusList;
3536
import org.kitteh.irc.client.library.util.Sanity;
3637
import org.kitteh.irc.client.library.util.ToStringer;
3738

@@ -105,9 +106,9 @@ public ChannelModeCommand(@NonNull Client client, @NonNull String channel) {
105106
Sanity.truthiness(mode.getClient() == this.getClient(), "Mode comes from a different Client");
106107
if (parameter != null) {
107108
Sanity.safeMessageCheck(parameter, "Parameter");
108-
this.changes.add(new ModeStatus<>(add, mode, parameter));
109+
this.changes.add(new DefaultModeStatus<>(add, mode, parameter));
109110
} else {
110-
this.changes.add(new ModeStatus<>(add, mode));
111+
this.changes.add(new DefaultModeStatus<>(add, mode));
111112
}
112113
return this;
113114
}
@@ -143,7 +144,7 @@ public synchronized void execute() {
143144
}
144145

145146
private void send(@NonNull List<ModeStatus<ChannelMode>> queue) {
146-
this.getClient().sendRawLine("MODE " + this.getChannel() + ' ' + ModeStatusList.of(new ArrayList<>(queue)).getStatusString());
147+
this.getClient().sendRawLine("MODE " + this.getChannel() + ' ' + DefaultModeStatusList.of(new ArrayList<>(queue)).getAsString());
147148
queue.clear();
148149
}
149150

src/main/java/org/kitteh/irc/client/library/command/UserModeCommand.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,9 @@
2626
import org.checkerframework.checker.nullness.qual.NonNull;
2727
import org.checkerframework.checker.nullness.qual.Nullable;
2828
import org.kitteh.irc.client.library.Client;
29+
import org.kitteh.irc.client.library.defaults.element.mode.DefaultModeStatus;
30+
import org.kitteh.irc.client.library.defaults.element.mode.DefaultModeStatusList;
2931
import org.kitteh.irc.client.library.element.mode.ModeStatus;
30-
import org.kitteh.irc.client.library.element.mode.ModeStatusList;
3132
import org.kitteh.irc.client.library.element.mode.UserMode;
3233
import org.kitteh.irc.client.library.util.Sanity;
3334
import org.kitteh.irc.client.library.util.ToStringer;
@@ -82,9 +83,9 @@ public UserModeCommand(@NonNull Client client) {
8283
Sanity.truthiness(mode.getClient() == this.getClient(), "Mode comes from a different Client");
8384
if (parameter != null) {
8485
Sanity.safeMessageCheck(parameter, "Parameter");
85-
this.changes.add(new ModeStatus<>(add, mode, parameter));
86+
this.changes.add(new DefaultModeStatus<>(add, mode, parameter));
8687
} else {
87-
this.changes.add(new ModeStatus<>(add, mode));
88+
this.changes.add(new DefaultModeStatus<>(add, mode));
8889
}
8990
return this;
9091
}
@@ -95,7 +96,7 @@ public synchronized void execute() {
9596
this.getClient().sendRawLine("MODE " + this.getClient().getNick());
9697
return;
9798
}
98-
this.getClient().sendRawLine("MODE " + this.getClient().getNick() + ' ' + ModeStatusList.of(new ArrayList<>(this.changes)).getStatusString());
99+
this.getClient().sendRawLine("MODE " + this.getClient().getNick() + ' ' + DefaultModeStatusList.of(new ArrayList<>(this.changes)).getAsString());
99100
}
100101

101102
@Override

src/main/java/org/kitteh/irc/client/library/defaults/DefaultClient.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,8 @@
3636
import org.kitteh.irc.client.library.command.WallopsCommand;
3737
import org.kitteh.irc.client.library.command.WhoisCommand;
3838
import org.kitteh.irc.client.library.defaults.element.DefaultServerMessage;
39+
import org.kitteh.irc.client.library.defaults.element.mode.DefaultModeStatusList;
40+
import org.kitteh.irc.client.library.defaults.feature.SimpleDefaultMessageMap;
3941
import org.kitteh.irc.client.library.element.Actor;
4042
import org.kitteh.irc.client.library.element.Channel;
4143
import org.kitteh.irc.client.library.element.MessageTag;
@@ -62,7 +64,6 @@
6264
import org.kitteh.irc.client.library.feature.ServerInfo;
6365
import org.kitteh.irc.client.library.feature.defaultmessage.DefaultMessageMap;
6466
import org.kitteh.irc.client.library.feature.defaultmessage.DefaultMessageType;
65-
import org.kitteh.irc.client.library.defaults.feature.SimpleDefaultMessageMap;
6667
import org.kitteh.irc.client.library.feature.network.ClientConnection;
6768
import org.kitteh.irc.client.library.feature.network.NetworkHandler;
6869
import org.kitteh.irc.client.library.feature.network.ProxyType;
@@ -460,7 +461,7 @@ public void addKeyProtectedChannel(@NonNull Pair<String, String>... channelsAndK
460461

461462
@Override
462463
public @NonNull Optional<ModeStatusList<UserMode>> getUserModes() {
463-
return (this.userModes == null) ? Optional.empty() : Optional.of(ModeStatusList.of(this.userModes.values()));
464+
return (this.userModes == null) ? Optional.empty() : Optional.of(DefaultModeStatusList.of(this.userModes.values()));
464465
}
465466

466467
@Override
@@ -820,7 +821,7 @@ public void setServerAddress(@NonNull HostWithPort address) {
820821

821822
@Override
822823
public void setUserModes(@NonNull ModeStatusList<UserMode> userModes) {
823-
this.userModes = new HashMap<>(userModes.getStatuses().stream().collect(Collectors.toMap(modeStatus -> modeStatus.getMode().getChar(), Function.identity())));
824+
this.userModes = new HashMap<>(userModes.getAll().stream().collect(Collectors.toMap(modeStatus -> modeStatus.getMode().getChar(), Function.identity())));
824825
}
825826

826827
@Override
@@ -837,7 +838,7 @@ public void updateUserModes(@NonNull ModeStatusList<UserMode> userModes) {
837838
if (this.userModes == null) {
838839
this.userModes = new HashMap<>();
839840
}
840-
for (ModeStatus<UserMode> status : userModes.getStatuses()) {
841+
for (ModeStatus<UserMode> status : userModes.getAll()) {
841842
if (status.isSetting()) {
842843
this.userModes.put(status.getMode().getChar(), status);
843844
} else {
Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
/*
2+
* * Copyright (C) 2013-2019 Matt Baxter https://kitteh.org
3+
*
4+
* Permission is hereby granted, free of charge, to any person
5+
* obtaining a copy of this software and associated documentation
6+
* files (the "Software"), to deal in the Software without
7+
* restriction, including without limitation the rights to use, copy,
8+
* modify, merge, publish, distribute, sublicense, and/or sell copies
9+
* of the Software, and to permit persons to whom the Software is
10+
* furnished to do so, subject to the following conditions:
11+
*
12+
* The above copyright notice and this permission notice shall be
13+
* included in all copies or substantial portions of the Software.
14+
*
15+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16+
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17+
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18+
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
19+
* BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
20+
* ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
21+
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22+
* SOFTWARE.
23+
*/
24+
package org.kitteh.irc.client.library.defaults.element.mode;
25+
26+
import org.checkerframework.checker.nullness.qual.NonNull;
27+
import org.checkerframework.checker.nullness.qual.Nullable;
28+
import org.kitteh.irc.client.library.Client;
29+
import org.kitteh.irc.client.library.element.ClientLinked;
30+
import org.kitteh.irc.client.library.element.mode.Mode;
31+
import org.kitteh.irc.client.library.element.mode.ModeStatus;
32+
import org.kitteh.irc.client.library.util.Sanity;
33+
import org.kitteh.irc.client.library.util.ToStringer;
34+
35+
import java.util.Optional;
36+
37+
/**
38+
* A particular default status of a mode.
39+
*/
40+
public class DefaultModeStatus<ModeType extends Mode> implements ModeStatus<ModeType> {
41+
private final ModeType mode;
42+
private final @Nullable String parameter;
43+
private final boolean setting;
44+
45+
/**
46+
* Creates a status without a parameter.
47+
*
48+
* @param setting true for setting mode, false for removing
49+
* @param mode mode to set
50+
*/
51+
public DefaultModeStatus(boolean setting, @NonNull ModeType mode) {
52+
this.mode = Sanity.nullCheck(mode, "Mode cannot be null");
53+
this.parameter = null;
54+
this.setting = setting;
55+
}
56+
57+
/**
58+
* Creates a status.
59+
*
60+
* @param setting true for setting mode, false for removing
61+
* @param mode mode to set
62+
* @param parameter parameter
63+
*/
64+
public DefaultModeStatus(boolean setting, @NonNull ModeType mode, @NonNull String parameter) {
65+
this.mode = Sanity.nullCheck(mode, "Mode cannot be null");
66+
this.parameter = Sanity.safeMessageCheck(parameter, "Parameter");
67+
this.setting = setting;
68+
}
69+
70+
@Override
71+
public @NonNull Client getClient() {
72+
return this.getMode().getClient();
73+
}
74+
75+
@Override
76+
public @NonNull ModeType getMode() {
77+
return this.mode;
78+
}
79+
80+
@Override
81+
public @NonNull Optional<String> getParameter() {
82+
return Optional.ofNullable(this.parameter);
83+
}
84+
85+
@Override
86+
public boolean isSetting() {
87+
return this.setting;
88+
}
89+
90+
@Override
91+
public @NonNull String toString() {
92+
return new ToStringer(this).add("client", this.getClient()).add("mode", this.mode).add("setting", this.setting).add("parameter", this.parameter).toString();
93+
}
94+
}

0 commit comments

Comments
 (0)