package com.kobylynskyi.graphql.codegen.mapper; import com.kobylynskyi.graphql.codegen.model.MappingContext; import com.kobylynskyi.graphql.codegen.model.definitions.ExtendedInputObjectTypeDefinition; import java.util.HashMap; import java.util.Map; import static com.kobylynskyi.graphql.codegen.model.DataModelFields.*; /** * Map input type definition to a Freemarker data model * * @author kobylynskyi */ public class InputDefinitionToDataModelMapper { /** * Map input type definition to a Freemarker data model * * @param mappingContext Global mapping context * @param definition Definition of input type including base definition and its extensions * @return Freemarker data model of the GraphQL type */ public static Map map(MappingContext mappingContext, ExtendedInputObjectTypeDefinition definition) { Map dataModel = new HashMap<>(); // type/enum/input/interface/union classes do not require any imports dataModel.put(PACKAGE, MapperUtils.getModelPackageName(mappingContext)); dataModel.put(CLASS_NAME, MapperUtils.getClassNameWithPrefixAndSuffix(mappingContext, definition)); dataModel.put(JAVA_DOC, definition.getJavaDoc()); dataModel.put(NAME, definition.getName()); dataModel.put(FIELDS, InputValueDefinitionToParameterMapper.map(mappingContext, definition.getValueDefinitions(), definition.getName())); dataModel.put(BUILDER, mappingContext.getGenerateBuilder()); dataModel.put(EQUALS_AND_HASH_CODE, mappingContext.getGenerateEqualsAndHashCode()); dataModel.put(TO_STRING, mappingContext.getGenerateToString()); dataModel.put(TO_STRING_FOR_REQUEST, mappingContext.getGenerateRequests()); return dataModel; } }