package org.scribble.codegen.java.util; import java.util.Arrays; import java.util.LinkedList; import java.util.List; import java.util.stream.Collectors; import org.scribble.main.RuntimeScribbleException; public class EnumBuilder extends TypeBuilder { private final List<String> vals = new LinkedList<String>(); protected EnumBuilder() { } protected EnumBuilder(String name) { super(name); } public void addValues(String... vals) { this.vals.addAll(Arrays.asList(vals)); } @Override public String build() { String enun = ""; enun = buildSignature(enun); enun += " {\n"; enun += "\t" + this.vals.stream().collect(Collectors.joining(", ")); enun += "\n}"; return enun; } @Override protected String buildSignature(String enun) { if (!this.mods.isEmpty()) { enun += this.mods.stream().collect(Collectors.joining(" ")); enun += " "; } enun += "enum " + this.name; if (!this.ifaces.isEmpty()) { enun += " implements "; enun += this.ifaces.stream().collect(Collectors.joining(", ")); } return enun; } // Following not necessarily invalid for Java, just for this tool set @Override public void setPackage(String packname) { throw new RuntimeScribbleException("Invalid for enums"); } @Override public void addImports(String... imports) { throw new RuntimeScribbleException("Invalid for enums"); } @Override public FieldBuilder newField(String name) { throw new RuntimeScribbleException("Invalid for enums"); } @Override public AbstractMethodBuilder newAbstractMethod() { throw new RuntimeScribbleException("Invalid for enums"); } @Override public ClassBuilder newTopLevelClass() { throw new RuntimeScribbleException("Invalid for enums"); } @Override protected String buildFields(String clazz) { throw new RuntimeScribbleException("Invalid for enums"); } @Override protected String buildMethods(String clazz) { throw new RuntimeScribbleException("Invalid for enums"); } @Override protected String buildMemberTypes(String clazz) { throw new RuntimeScribbleException("Invalid for enums"); } }