Skip to content

Commit 9d7bc07

Browse files
committed
reduce NPath complexity
1 parent 47bd650 commit 9d7bc07

1 file changed

Lines changed: 49 additions & 44 deletions

File tree

  • src/main/java/pro/cloudnode/smp/smpcore/api/routes

src/main/java/pro/cloudnode/smp/smpcore/api/routes/Members.java

Lines changed: 49 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,10 @@
1313
import pro.cloudnode.smp.smpcore.api.REST;
1414

1515
import java.util.Optional;
16+
import java.util.OptionalInt;
1617
import java.util.Set;
1718
import java.util.UUID;
19+
import java.util.function.Predicate;
1820

1921
public final class Members {
2022
private final @NotNull REST rest;
@@ -41,56 +43,59 @@ public Members(final @NotNull REST rest) {
4143
return obj;
4244
}
4345

44-
public void list(final @NotNull Context ctx) {
45-
final @Nullable String filter = ctx.queryParam("filter");
46-
final @Nullable String limitString = ctx.queryParam("limit");
47-
final @Nullable String pageString = ctx.queryParam("page");
48-
final @Nullable String include = ctx.queryParam("include");
49-
50-
final @Nullable Integer limit;
51-
if (limitString == null)
52-
limit = null;
53-
else {
54-
@Nullable Integer t = null;
55-
try {
56-
t = Integer.parseInt(limitString);
57-
}
58-
catch (final @NotNull NumberFormatException ignored) {}
59-
limit = t;
46+
private static OptionalInt parseInt(final @Nullable String value) {
47+
if (value == null)
48+
return OptionalInt.empty();
49+
try {
50+
return OptionalInt.of(Integer.parseInt(value));
51+
}
52+
catch (final NumberFormatException ignored) {
53+
return OptionalInt.empty();
6054
}
55+
}
6156

62-
final int page;
63-
if (pageString == null)
64-
page = 1;
65-
else {
66-
int t;
67-
try {
68-
t = Integer.parseInt(pageString);
69-
}
70-
catch (final @NotNull NumberFormatException ignored) {
71-
t = 1;
72-
}
73-
page = t;
57+
private static int parseInt(final @Nullable String value, final int defaultValue) {
58+
if (value == null)
59+
return defaultValue;
60+
try {
61+
return Integer.parseInt(value);
7462
}
63+
catch (final NumberFormatException ignored) {
64+
return defaultValue;
65+
}
66+
}
67+
68+
private static Predicate<Member> resolveFilter(final @Nullable String filter) {
69+
if (filter == null)
70+
return _ -> true;
7571

76-
final @NotNull Set<@NotNull Member> members = limit == null ? Member.get() : Member.get(limit, page);
72+
return switch (filter) {
73+
case "online" -> member ->
74+
!member.staff && member.player().isOnline();
75+
case "offline" -> member ->
76+
member.staff || !member.player().isOnline();
77+
case "banned" -> member ->
78+
member.player().isBanned();
79+
default -> _ -> true;
80+
};
81+
}
82+
83+
public void list(final @NotNull Context ctx) {
84+
final @Nullable String include = ctx.queryParam("include");
85+
86+
final var limit = parseInt(ctx.queryParam("limit"));
87+
final var page = parseInt(ctx.queryParam("page"), 1);
88+
89+
final @NotNull Set<@NotNull Member> members = limit.isEmpty() ? Member.get()
90+
: Member.get(limit.getAsInt(), page);
7791
final @NotNull JsonArray arr = new JsonArray();
92+
93+
final var filterPredicate = resolveFilter(ctx.queryParam("filter"));
94+
7895
for (final @NotNull Member member : members) {
79-
if (filter != null)
80-
switch (filter) {
81-
case "online" -> {
82-
if (member.staff || !member.player().isOnline())
83-
continue;
84-
}
85-
case "offline" -> {
86-
if (!member.staff && member.player().isOnline())
87-
continue;
88-
}
89-
case "banned" -> {
90-
if (!member.player().isBanned())
91-
continue;
92-
}
93-
}
96+
if (!filterPredicate.test(member))
97+
continue;
98+
9499
final @NotNull JsonObject m = map(member);
95100
if (include != null) {
96101
switch (include) {

0 commit comments

Comments
 (0)