InputDefinitionToDataModelMapper.java 1.8 KB
Newer Older
1 2
package com.kobylynskyi.graphql.codegen.mapper;

3
import com.kobylynskyi.graphql.codegen.model.MappingContext;
4
import com.kobylynskyi.graphql.codegen.model.definitions.ExtendedInputObjectTypeDefinition;
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

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
     *
21 22
     * @param mappingContext Global mapping context
     * @param definition     Definition of input type including base definition and its extensions
23 24
     * @return Freemarker data model of the GraphQL type
     */
25
    public static Map<String, Object> map(MappingContext mappingContext, ExtendedInputObjectTypeDefinition definition) {
26
        Map<String, Object> dataModel = new HashMap<>();
27
        // type/enum/input/interface/union classes do not require any imports
28 29
        dataModel.put(PACKAGE, MapperUtils.getModelPackageName(mappingContext));
        dataModel.put(CLASS_NAME, MapperUtils.getClassNameWithPrefixAndSuffix(mappingContext, definition));
30
        dataModel.put(JAVA_DOC, definition.getJavaDoc());
31
        dataModel.put(NAME, definition.getName());
32 33 34 35 36
        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());
37 38 39 40
        return dataModel;
    }

}