InputDefinitionToDataModelMapper.java 3.9 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

import java.util.HashMap;
import java.util.Map;

9 10 11 12 13 14 15
import static com.kobylynskyi.graphql.codegen.model.DataModelFields.ANNOTATIONS;
import static com.kobylynskyi.graphql.codegen.model.DataModelFields.BUILDER;
import static com.kobylynskyi.graphql.codegen.model.DataModelFields.CLASS_NAME;
import static com.kobylynskyi.graphql.codegen.model.DataModelFields.ENUM_IMPORT_IT_SELF_IN_SCALA;
import static com.kobylynskyi.graphql.codegen.model.DataModelFields.EQUALS_AND_HASH_CODE;
import static com.kobylynskyi.graphql.codegen.model.DataModelFields.FIELDS;
import static com.kobylynskyi.graphql.codegen.model.DataModelFields.GENERATED_INFO;
16
import static com.kobylynskyi.graphql.codegen.model.DataModelFields.GENERATED_ANNOTATION;
17 18 19 20 21 22
import static com.kobylynskyi.graphql.codegen.model.DataModelFields.IMMUTABLE_MODELS;
import static com.kobylynskyi.graphql.codegen.model.DataModelFields.JAVA_DOC;
import static com.kobylynskyi.graphql.codegen.model.DataModelFields.NAME;
import static com.kobylynskyi.graphql.codegen.model.DataModelFields.PACKAGE;
import static com.kobylynskyi.graphql.codegen.model.DataModelFields.TO_STRING;
import static com.kobylynskyi.graphql.codegen.model.DataModelFields.TO_STRING_FOR_REQUEST;
23 24 25 26 27 28 29 30

/**
 * Map input type definition to a Freemarker data model
 *
 * @author kobylynskyi
 */
public class InputDefinitionToDataModelMapper {

31 32 33 34 35 36 37 38 39 40
    private final GraphQLTypeMapper graphQLTypeMapper;
    private final DataModelMapper dataModelMapper;
    private final InputValueDefinitionToParameterMapper inputValueDefinitionToParameterMapper;

    public InputDefinitionToDataModelMapper(GraphQLTypeMapper graphQLTypeMapper,
                                            DataModelMapper dataModelMapper,
                                            InputValueDefinitionToParameterMapper inputValueDefinitionToParameterMapper) {
        this.graphQLTypeMapper = graphQLTypeMapper;
        this.dataModelMapper = dataModelMapper;
        this.inputValueDefinitionToParameterMapper = inputValueDefinitionToParameterMapper;
B
Bogdan Kobylynskyi 已提交
41 42
    }

43 44 45
    /**
     * Map input type definition to a Freemarker data model
     *
46 47
     * @param mappingContext Global mapping context
     * @param definition     Definition of input type including base definition and its extensions
48 49
     * @return Freemarker data model of the GraphQL type
     */
50
    public Map<String, Object> map(MappingContext mappingContext, ExtendedInputObjectTypeDefinition definition) {
51
        Map<String, Object> dataModel = new HashMap<>();
52
        // type/enum/input/interface/union classes do not require any imports
53 54
        dataModel.put(PACKAGE, DataModelMapper.getModelPackageName(mappingContext));
        dataModel.put(CLASS_NAME, dataModelMapper.getModelClassNameWithPrefixAndSuffix(mappingContext, definition));
55
        dataModel.put(JAVA_DOC, definition.getJavaDoc());
56
        dataModel.put(NAME, definition.getName());
57 58
        dataModel.put(FIELDS, inputValueDefinitionToParameterMapper.map(mappingContext, definition.getValueDefinitions(), definition.getName()));
        dataModel.put(ANNOTATIONS, graphQLTypeMapper.getAnnotations(mappingContext, definition));
59 60
        dataModel.put(BUILDER, mappingContext.getGenerateBuilder());
        dataModel.put(EQUALS_AND_HASH_CODE, mappingContext.getGenerateEqualsAndHashCode());
61
        dataModel.put(IMMUTABLE_MODELS, mappingContext.getGenerateImmutableModels());
62
        dataModel.put(TO_STRING, mappingContext.getGenerateToString());
63
        dataModel.put(TO_STRING_FOR_REQUEST, mappingContext.getGenerateClient());
64
        dataModel.put(GENERATED_ANNOTATION, mappingContext.getAddGeneratedAnnotation());
65
        dataModel.put(GENERATED_INFO, mappingContext.getGeneratedInformation());
66
        dataModel.put(ENUM_IMPORT_IT_SELF_IN_SCALA, mappingContext.getEnumImportItSelfInScala());
67 68 69 70
        return dataModel;
    }

}