1 package io.github.robertograham.rleparser.domain.enumeration;
2
3 import java.util.EnumSet;
4 import java.util.stream.Collectors;
5
6 public enum Status {
7
8 ALIVE("o"),
9 DEAD("b"),
10 LINE_END("$");
11
12 private final String code;
13
14 Status(String code) {
15 this.code = code;
16 }
17
18 public static Status fromCode(String statusCode) {
19 return EnumSet.allOf(Status.class).stream()
20 .filter(status -> status.code.equals(statusCode))
21 .findFirst()
22 .orElseThrow(() -> new IllegalArgumentException("Status code '" + statusCode + "' not found in [" + EnumSet.allOf(Status.class).stream().map(Status::getCode).collect(Collectors.joining(",")) + "]"));
23 }
24
25 public String getCode() {
26 return code;
27 }
28 }