package com.robotoworks.mechanoid.net.generator; import com.robotoworks.mechanoid.net.generator.ModelExtensions; import com.robotoworks.mechanoid.net.netModel.EnumTypeDeclaration; import com.robotoworks.mechanoid.net.netModel.Model; import org.eclipse.xtend2.lib.StringConcatenation; @SuppressWarnings("all") public class IntegerEnumTypeGenerator { public CharSequence generate(final EnumTypeDeclaration type, final Model module) { StringConcatenation _builder = new StringConcatenation(); _builder.append("package "); String _packageName = module.getPackageName(); _builder.append(_packageName, ""); _builder.append(";"); _builder.newLineIfNotEmpty(); _builder.append("\t"); _builder.newLine(); _builder.append("public enum "); String _name = type.getName(); _builder.append(_name, ""); _builder.append(" {"); _builder.newLineIfNotEmpty(); _builder.append("\t"); String _generateEnumMembers = ModelExtensions.generateEnumMembers(type); _builder.append(_generateEnumMembers, "\t"); _builder.append(";"); _builder.newLineIfNotEmpty(); _builder.append("\t"); _builder.newLine(); _builder.append("\t"); _builder.append("private int value;"); _builder.newLine(); _builder.append("\t"); _builder.newLine(); _builder.append("\t"); _builder.append("public int getValue() {"); _builder.newLine(); _builder.append("\t\t"); _builder.append("return value;"); _builder.newLine(); _builder.append("\t"); _builder.append("}"); _builder.newLine(); _builder.append("\t"); _builder.newLine(); _builder.append("\t"); String _name_1 = type.getName(); _builder.append(_name_1, "\t"); _builder.append("(int value){"); _builder.newLineIfNotEmpty(); _builder.append("\t\t"); _builder.append("this.value = value;"); _builder.newLine(); _builder.append("\t"); _builder.append("}"); _builder.newLine(); _builder.append("\t"); _builder.newLine(); _builder.append("\t"); _builder.append("public static "); String _name_2 = type.getName(); _builder.append(_name_2, "\t"); _builder.append(" fromValue(int value) {"); _builder.newLineIfNotEmpty(); _builder.append("\t\t"); _builder.newLine(); _builder.append("\t\t"); _builder.append("for ("); String _name_3 = type.getName(); _builder.append(_name_3, "\t\t"); _builder.append(" member : "); String _name_4 = type.getName(); _builder.append(_name_4, "\t\t"); _builder.append(".values()) {"); _builder.newLineIfNotEmpty(); _builder.append("\t\t\t"); _builder.append("if (value == member.value) {"); _builder.newLine(); _builder.append("\t\t\t\t"); _builder.append("return member;"); _builder.newLine(); _builder.append("\t\t\t"); _builder.append("}"); _builder.newLine(); _builder.append("\t\t"); _builder.append("}"); _builder.newLine(); _builder.append("\t\t"); _builder.newLine(); _builder.append("\t\t"); _builder.append("throw new RuntimeException(\"No constant with value \" + value + \" found\");"); _builder.newLine(); _builder.append("\t"); _builder.append("}"); _builder.newLine(); _builder.append("}"); _builder.newLine(); return _builder; } }