PebbleMessageBuilder.java

1
package sh.okx.rankup.messages.pebble;
2
3
import java.util.ArrayList;
4
import java.util.HashMap;
5
import java.util.List;
6
import java.util.Map;
7
import java.util.function.Function;
8
import org.bukkit.Bukkit;
9
import org.bukkit.command.CommandSender;
10
import org.bukkit.entity.Player;
11
import sh.okx.rankup.RankupPlugin;
12
import sh.okx.rankup.messages.MessageBuilder;
13
import sh.okx.rankup.messages.NullMessageBuilder;
14
import sh.okx.rankup.prestige.Prestige;
15
import sh.okx.rankup.ranks.Rank;
16
import sh.okx.rankup.text.TextProcessor;
17
import sh.okx.rankup.text.TextProcessorBuilder;
18
19
public class PebbleMessageBuilder implements MessageBuilder {
20
21
  private final RankupPlugin plugin;
22
  private final String message;
23
  private final Map<String, Object> context = new HashMap<>();
24
  private final Map<String, Function<Player, Object>> lastMinuteContext = new HashMap<>();
25
26
  public PebbleMessageBuilder(RankupPlugin plugin, String message) {
27
    this.plugin = plugin;
28
    this.message = message;
29 1 1. <init> : removed call to sh/okx/rankup/messages/pebble/PebbleMessageBuilder::replaceInitial → SURVIVED
    replaceInitial();
30
  }
31
32
  private void replaceInitial() {
33
    lastMinuteContext.put("ranks", player -> {
34
      List<RankContext> ranks = new ArrayList<>();
35
      for (Rank rank : plugin.getRankups().getTree()) {
36
        ranks.add(new RankContext(plugin, player, rank));
37
      }
38 1 1. lambda$replaceInitial$0 : replaced return value with null for sh/okx/rankup/messages/pebble/PebbleMessageBuilder::lambda$replaceInitial$0 → SURVIVED
      return ranks;
39
    });
40
  }
41
42
  @Override
43
  public PebbleMessageBuilder replaceKey(String key, Object value) {
44
    context.put(key, value);
45 1 1. replaceKey : replaced return value with null for sh/okx/rankup/messages/pebble/PebbleMessageBuilder::replaceKey → NO_COVERAGE
    return this;
46
  }
47
48
  @Override
49
  public PebbleMessageBuilder replacePlayer(CommandSender sender) {
50
    context.put("player", sender.getName());
51 1 1. replacePlayer : replaced return value with null for sh/okx/rankup/messages/pebble/PebbleMessageBuilder::replacePlayer → KILLED
    return this;
52
  }
53
54
  @Override
55
  public PebbleMessageBuilder replaceRank(Rank rank) {
56 1 1. lambda$replaceRank$1 : replaced return value with null for sh/okx/rankup/messages/pebble/PebbleMessageBuilder::lambda$replaceRank$1 → KILLED
    Function<Player, Object> fun = player -> new RankContext(plugin, player, rank);
57
    context.put("next", fun.apply(null)); // for console
58
    lastMinuteContext.put("next", fun);
59 1 1. replaceRank : replaced return value with null for sh/okx/rankup/messages/pebble/PebbleMessageBuilder::replaceRank → KILLED
    return this;
60
  }
61
62
  @Override
63
  public PebbleMessageBuilder replaceOldRank(Rank rank) {
64
    Function<Player, Object> object;
65 1 1. replaceOldRank : negated conditional → KILLED
    if (rank instanceof Prestige) {
66 1 1. lambda$replaceOldRank$2 : replaced return value with null for sh/okx/rankup/messages/pebble/PebbleMessageBuilder::lambda$replaceOldRank$2 → NO_COVERAGE
      object = player -> new PrestigeContext(plugin, player, (Prestige) rank);
67
    } else {
68 1 1. lambda$replaceOldRank$3 : replaced return value with null for sh/okx/rankup/messages/pebble/PebbleMessageBuilder::lambda$replaceOldRank$3 → KILLED
      object = player -> new RankContext(plugin, player, rank);
69
    }
70
    context.put("rank", object.apply(null)); // for console
71
    lastMinuteContext.put("rank", object);
72 1 1. replaceOldRank : replaced return value with null for sh/okx/rankup/messages/pebble/PebbleMessageBuilder::replaceOldRank → KILLED
    return this;
73
  }
74
75
  @Override
76
  public MessageBuilder replaceSeconds(long seconds, long secondsLeft) {
77
    context.put("seconds", seconds);
78
    context.put("seconds_left", secondsLeft);
79 1 1. replaceSeconds : replaced return value with null for sh/okx/rankup/messages/pebble/PebbleMessageBuilder::replaceSeconds → NO_COVERAGE
    return this;
80
  }
81
82
  @Override
83
  public void send(CommandSender sender) {
84
    Player player = null;
85 1 1. send : negated conditional → KILLED
    if (sender instanceof Player) {
86
      player = (Player) sender;
87
    }
88 1 1. send : removed call to org/bukkit/command/CommandSender::sendMessage → KILLED
    sender.sendMessage(processor(player).process(message));
89
  }
90
91
  @Override
92
  public void broadcast() {
93
    for (Player player : Bukkit.getOnlinePlayers()) {
94 1 1. broadcast : removed call to sh/okx/rankup/messages/pebble/PebbleMessageBuilder::send → KILLED
      send(player);
95
    }
96 1 1. broadcast : removed call to sh/okx/rankup/messages/pebble/PebbleMessageBuilder::send → SURVIVED
    send(Bukkit.getConsoleSender());
97
  }
98
99
  @Override
100
  public String toString() {
101 1 1. toString : replaced return value with "" for sh/okx/rankup/messages/pebble/PebbleMessageBuilder::toString → KILLED
    return processor(null).process(message);
102
  }
103
104
  @Override
105
  public String toString(Player player) {
106 1 1. toString : replaced return value with "" for sh/okx/rankup/messages/pebble/PebbleMessageBuilder::toString → KILLED
    return processor(player).process(message);
107
  }
108
109
  private TextProcessor processor(Player player) {
110
    Map<String, Object> context = getContext(player);
111 1 1. processor : replaced return value with null for sh/okx/rankup/messages/pebble/PebbleMessageBuilder::processor → KILLED
    return new TextProcessorBuilder()
112
        .legacy(context, plugin.getPlaceholders())
113
        .papi(player)
114
        .pebble(plugin.getLogger(), context, plugin.getPlaceholders())
115
        .papi(player)
116
        .colour()
117
        .create();
118
  }
119
120
  private Map<String, Object> getContext(Player player) {
121
    Map<String, Object> context = new HashMap<>(this.context);
122 1 1. getContext : negated conditional → KILLED
    if (player != null) {
123
      for (Map.Entry<String, Function<Player, Object>> lastMinute : lastMinuteContext.entrySet()) {
124
        context.put(lastMinute.getKey(), lastMinute.getValue().apply(player));
125
      }
126 1 1. getContext : negated conditional → KILLED
      if (!context.containsKey("player")) {
127
        context.put("player", player.getName());
128
      }
129
    }
130 1 1. getContext : replaced return value with null for sh/okx/rankup/messages/pebble/PebbleMessageBuilder::getContext → KILLED
    return context;
131
  }
132
133
  @Override
134
  public MessageBuilder failIfEmpty() {
135 1 1. failIfEmpty : replaced return value with null for sh/okx/rankup/messages/pebble/PebbleMessageBuilder::failIfEmpty → KILLED
    return failIf(message.isEmpty());
136
  }
137
138
  @Override
139
  public MessageBuilder failIf(boolean b) {
140 2 1. failIf : negated conditional → KILLED
2. failIf : replaced return value with null for sh/okx/rankup/messages/pebble/PebbleMessageBuilder::failIf → KILLED
    return b ? new NullMessageBuilder() : this;
141
  }
142
}

Mutations

29

1.1
Location : <init>
Killed by : none
removed call to sh/okx/rankup/messages/pebble/PebbleMessageBuilder::replaceInitial → SURVIVED

38

1.1
Location : lambda$replaceInitial$0
Killed by : none
replaced return value with null for sh/okx/rankup/messages/pebble/PebbleMessageBuilder::lambda$replaceInitial$0 → SURVIVED

45

1.1
Location : replaceKey
Killed by : none
replaced return value with null for sh/okx/rankup/messages/pebble/PebbleMessageBuilder::replaceKey → NO_COVERAGE

51

1.1
Location : replacePlayer
Killed by : sh.okx.rankup.pebble.PebbleTest.[engine:junit-jupiter]/[class:sh.okx.rankup.pebble.PebbleTest]/[method:testRequirementAbsent()]
replaced return value with null for sh/okx/rankup/messages/pebble/PebbleMessageBuilder::replacePlayer → KILLED

56

1.1
Location : lambda$replaceRank$1
Killed by : sh.okx.rankup.toml.TomlTest.[engine:junit-jupiter]/[class:sh.okx.rankup.toml.TomlTest]/[method:testRanks()]
replaced return value with null for sh/okx/rankup/messages/pebble/PebbleMessageBuilder::lambda$replaceRank$1 → KILLED

59

1.1
Location : replaceRank
Killed by : sh.okx.rankup.toml.TomlTest.[engine:junit-jupiter]/[class:sh.okx.rankup.toml.TomlTest]/[method:testRequirementsNotMet()]
replaced return value with null for sh/okx/rankup/messages/pebble/PebbleMessageBuilder::replaceRank → KILLED

65

1.1
Location : replaceOldRank
Killed by : sh.okx.rankup.pebble.PebbleTest.[engine:junit-jupiter]/[class:sh.okx.rankup.pebble.PebbleTest]/[method:testRequirementAbsent()]
negated conditional → KILLED

66

1.1
Location : lambda$replaceOldRank$2
Killed by : none
replaced return value with null for sh/okx/rankup/messages/pebble/PebbleMessageBuilder::lambda$replaceOldRank$2 → NO_COVERAGE

68

1.1
Location : lambda$replaceOldRank$3
Killed by : sh.okx.rankup.pebble.PebbleTest.[engine:junit-jupiter]/[class:sh.okx.rankup.pebble.PebbleTest]/[method:testIterable()]
replaced return value with null for sh/okx/rankup/messages/pebble/PebbleMessageBuilder::lambda$replaceOldRank$3 → KILLED

72

1.1
Location : replaceOldRank
Killed by : sh.okx.rankup.pebble.PebbleTest.[engine:junit-jupiter]/[class:sh.okx.rankup.pebble.PebbleTest]/[method:testRequirementAbsent()]
replaced return value with null for sh/okx/rankup/messages/pebble/PebbleMessageBuilder::replaceOldRank → KILLED

79

1.1
Location : replaceSeconds
Killed by : none
replaced return value with null for sh/okx/rankup/messages/pebble/PebbleMessageBuilder::replaceSeconds → NO_COVERAGE

85

1.1
Location : send
Killed by : sh.okx.rankup.messages.RankupPlaceholderTest.[engine:junit-jupiter]/[class:sh.okx.rankup.messages.RankupPlaceholderTest]/[method:testQuotientAndPercent()]
negated conditional → KILLED

88

1.1
Location : send
Killed by : sh.okx.rankup.pebble.PebbleTest.[engine:junit-jupiter]/[class:sh.okx.rankup.pebble.PebbleTest]/[method:testRequirementAbsent()]
removed call to org/bukkit/command/CommandSender::sendMessage → KILLED

94

1.1
Location : broadcast
Killed by : sh.okx.rankup.messages.RankupPlaceholderTest.[engine:junit-jupiter]/[class:sh.okx.rankup.messages.RankupPlaceholderTest]/[method:testReceivesSuccessMessages()]
removed call to sh/okx/rankup/messages/pebble/PebbleMessageBuilder::send → KILLED

96

1.1
Location : broadcast
Killed by : none
removed call to sh/okx/rankup/messages/pebble/PebbleMessageBuilder::send → SURVIVED

101

1.1
Location : toString
Killed by : sh.okx.rankup.RankupBasicsTest.[engine:junit-jupiter]/[class:sh.okx.rankup.RankupBasicsTest]/[method:testNotInLadder()]
replaced return value with "" for sh/okx/rankup/messages/pebble/PebbleMessageBuilder::toString → KILLED

106

1.1
Location : toString
Killed by : sh.okx.rankup.RankupBasicsTest.[engine:junit-jupiter]/[class:sh.okx.rankup.RankupBasicsTest]/[method:testMoneyRequirement()]
replaced return value with "" for sh/okx/rankup/messages/pebble/PebbleMessageBuilder::toString → KILLED

111

1.1
Location : processor
Killed by : sh.okx.rankup.pebble.PebbleTest.[engine:junit-jupiter]/[class:sh.okx.rankup.pebble.PebbleTest]/[method:testRequirementAbsent()]
replaced return value with null for sh/okx/rankup/messages/pebble/PebbleMessageBuilder::processor → KILLED

122

1.1
Location : getContext
Killed by : sh.okx.rankup.messages.RankupPlaceholderTest.[engine:junit-jupiter]/[class:sh.okx.rankup.messages.RankupPlaceholderTest]/[method:testQuotientAndPercent()]
negated conditional → KILLED

126

1.1
Location : getContext
Killed by : sh.okx.rankup.messages.RankupPlaceholderTest.[engine:junit-jupiter]/[class:sh.okx.rankup.messages.RankupPlaceholderTest]/[method:testReceivesSuccessMessages()]
negated conditional → KILLED

130

1.1
Location : getContext
Killed by : sh.okx.rankup.pebble.PebbleTest.[engine:junit-jupiter]/[class:sh.okx.rankup.pebble.PebbleTest]/[method:testIterable()]
replaced return value with null for sh/okx/rankup/messages/pebble/PebbleMessageBuilder::getContext → KILLED

135

1.1
Location : failIfEmpty
Killed by : sh.okx.rankup.toml.TomlTest.[engine:junit-jupiter]/[class:sh.okx.rankup.toml.TomlTest]/[method:testRanks()]
replaced return value with null for sh/okx/rankup/messages/pebble/PebbleMessageBuilder::failIfEmpty → KILLED

140

1.1
Location : failIf
Killed by : sh.okx.rankup.RankupBasicsTest.[engine:junit-jupiter]/[class:sh.okx.rankup.RankupBasicsTest]/[method:testNotInLadder()]
negated conditional → KILLED

2.2
Location : failIf
Killed by : sh.okx.rankup.RankupBasicsTest.[engine:junit-jupiter]/[class:sh.okx.rankup.RankupBasicsTest]/[method:testNotInLadder()]
replaced return value with null for sh/okx/rankup/messages/pebble/PebbleMessageBuilder::failIf → KILLED

Active mutators

Tests examined


Report generated by PIT 1.7.0