parameters:
    oro_query_designer.query_designer.manager.class:                Oro\Bundle\QueryDesignerBundle\QueryDesigner\Manager
    oro_query_designer.query_designer.restriction_builder.class:    Oro\Bundle\QueryDesignerBundle\QueryDesigner\RestrictionBuilder
    oro_query_designer.config.resolver.class:                       Oro\Bundle\QueryDesignerBundle\QueryDesigner\ConfigurationResolver
    oro_query_designer.grid.extension.orm_datasource.class:         Oro\Bundle\QueryDesignerBundle\Grid\Extension\OrmDatasourceExtension
    oro_query_designer.validator.query_validator.class:             Oro\Bundle\QueryDesignerBundle\Validator\QueryValidator
    oro_query_designer.validator.grouping_validator.class:          Oro\Bundle\QueryDesignerBundle\Validator\GroupingValidator
    oro_query_designer.grid.datagrid_configuration_builder.class:   Oro\Bundle\QueryDesignerBundle\Grid\DatagridConfigurationBuilder
    oro_query_designer.group_by_helper.class:                       Oro\Bundle\QueryDesignerBundle\Model\GroupByHelper
services:
    oro_query_designer.query_designer.manager:
        class: %oro_query_designer.query_designer.manager.class%
        arguments:
            - []
            - '@oro_query_designer.config.resolver'
            - '@oro_entity.entity_hierarchy_provider'
            - '@translator'

    oro_query_designer.query_designer.restriction_builder:
        class: %oro_query_designer.query_designer.restriction_builder.class%
        arguments:
            - '@oro_query_designer.query_designer.manager'

    oro_query_designer.config.resolver:
        class: %oro_query_designer.config.resolver.class%
        arguments:
            - '@oro_entity.orm.entity_class_resolver'
            - '@service_container'

    oro_query_designer.grid.extension.orm_datasource:
        class: %oro_query_designer.grid.extension.orm_datasource.class%
        arguments:
            - '@oro_query_designer.query_designer.restriction_builder'
        tags:
            - { name: oro_datagrid.extension }

    oro_query_designer.exclusion_provider:
        class: %oro_entity.exclusion_provider.chain.class%
        calls:
            - [addProvider, ['@oro_entity.exclusion_provider']]

    oro_query_designer.virtual_field_provider:
        alias: oro_entity.virtual_field_provider.chain

    oro_query_designer.entity_provider:
        class: %oro_entity.entity_provider.class%
        parent: oro_entity.entity_provider.abstract
        calls:
            - [setExclusionProvider, ['@oro_query_designer.exclusion_provider']]

    oro_query_designer.entity_field_provider:
        class: %oro_entity.entity_field_provider.class%
        parent: oro_entity.entity_field_provider.abstract
        calls:
            - [setEntityProvider, ['@oro_query_designer.entity_provider']]
            - [setVirtualFieldProvider, ['@oro_entity.virtual_field_provider.chain']]
            - [setExclusionProvider, ['@oro_query_designer.exclusion_provider']]

    oro_query_designer.entity_field_list_provider:
        class: %oro_entity.entity_field_list_provider.class%
        arguments:
            - '@oro_query_designer.entity_field_provider'
            - '@oro_query_designer.entity_provider'

    oro_query_designer.grid.datagrid_configuration_builder:
        class: %oro_query_designer.grid.datagrid_configuration_builder.class%
        arguments:
            - '@oro_query_designer.query_designer.manager'
            - '@oro_entity.virtual_field_provider.chain'
            - '@doctrine'
            - '@oro_datagrid.datagrid.guesser'
        calls:
            - [setVirtualRelationProvider, ['@oro_entity.virtual_relation_provider.chain']]

    oro_query_designer.validator.query_validator:
        class: %oro_query_designer.validator.query_validator.class%
        arguments:
            - '@oro_datagrid.configuration.provider.chain'
            - '@oro_datagrid.datagrid.builder'
            - '@translator'
            - %kernel.debug%
        tags:
            - { name: validator.constraint_validator, alias: oro_query_designer.query_validator }

    oro_query_designer.validator.grouping_validator:
        class: %oro_query_designer.validator.grouping_validator.class%
        arguments:
            - '@translator'
        tags:
            - { name: validator.constraint_validator, alias: oro_query_designer.grouping_validator }

    oro_query_designer.group_by_helper:
        class: %oro_query_designer.group_by_helper.class%

    oro_query_designer.query_designer.filter_processor:
        class: Oro\Bundle\QueryDesignerBundle\QueryDesigner\FilterProcessor
        arguments:
            - '@oro_query_designer.query_designer.manager'
            - '@oro_entity.virtual_field_provider.chain'
            - '@doctrine'
            - '@oro_query_designer.query_designer.restriction_builder'
        calls:
            - [setVirtualRelationProvider, ['@oro_entity.virtual_relation_provider.chain']]
