/* * Copyright 2015 Workday, Inc. * * This software is available under the MIT license. * Please see the LICENSE.txt file in this project. */ package com.workday.postman.codegen; import com.squareup.javawriter.JavaWriter; import com.workday.meta.MetaTypes; import java.io.IOException; import java.util.Collection; import javax.lang.model.element.ExecutableElement; import javax.lang.model.element.Name; import javax.lang.model.element.VariableElement; /** * @author nathan.taylor * @since 2013-12-30 */ class EnumSaveStatementWriter implements SaveStatementWriter { private final MetaTypes metaTypes; EnumSaveStatementWriter(MetaTypes metaTypes) { this.metaTypes = metaTypes; } @Override public boolean isApplicable(VariableElement field) { return metaTypes.isSubtype(field.asType(), Enum.class); } @Override public void writeFieldReadStatement(VariableElement field, Collection<ExecutableElement> postCreateChildMethods, JavaWriter writer) throws IOException { String enumType = field.asType().toString(); Name fieldName = field.getSimpleName(); String fieldNameVariable = fieldName + "Name"; writer.emitStatement("String %s = bundle.getString(\"%s\")", fieldNameVariable, fieldName); writer.beginControlFlow(String.format("if (%s != null)", fieldNameVariable)); writer.emitStatement("object.%s = %s.valueOf(%s)", fieldName, enumType, fieldNameVariable); writer.endControlFlow(); } @Override public void writeFieldWriteStatement(VariableElement field, JavaWriter writer) throws IOException { Name fieldName = field.getSimpleName(); writer.beginControlFlow(String.format("if (object.%s != null)", fieldName)); writer.emitStatement("bundle.putString(\"%s\", object.%s.name())", fieldName, fieldName); writer.endControlFlow(); } }