School.java
package edu.ucsb.cs156.frontiers.enums;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.JsonNode;
import java.util.List;
import lombok.Getter;
@Getter
@JsonFormat(shape = JsonFormat.Shape.OBJECT)
public enum School {
CHICO_STATE(
"Chico State",
List.of("Chico State University", "Chico State", "CSUCS"),
"https://canvas.csuchico.edu/api/graphql"),
OREGON_STATE(
"Oregon State University",
List.of("Oregon State University", "Oregon State", "OSU"),
"https://canvas.oregonstate.edu/api/graphql"),
UCSB(
"UCSB",
List.of("UC Santa Barbara", "University of California, Santa Barbara", "SB"),
"https://ucsb.instructure.com/api/graphql");
private School(String displayName, List<String> alternateNames, String canvasImplementation) {
this.displayName = displayName;
this.alternateNames = alternateNames;
this.canvasImplementation = canvasImplementation;
}
private final List<String> alternateNames;
private final String canvasImplementation;
private final String displayName;
private final String key = this.name();
/*
* This is mostly to allow tests to serialize back in objects with school properties.
*/
@JsonCreator
public static School fromKey(JsonNode node) {
if (node == null) {
return null;
}
if (node.isTextual()) {
return School.valueOf(node.asText().toUpperCase());
}
if (node.has("key")) {
return School.valueOf(node.get("key").asText().toUpperCase());
}
throw new IllegalArgumentException("Invalid JSON node for School enum");
}
}