services:
    _defaults:
        autowire: true
        autoconfigure: true
        public: false

    # resolvers and operator/value factories will be injected from compiler pass
    Pimcore\DataObject\Import\Service: ~

    #
    # RESOLVERS
    #

    Pimcore\DataObject\Import\Resolver\Id:
        tags:
            - { name: pimcore.data_object.import.resolver, id: id }

    Pimcore\DataObject\Import\Resolver\Code:
        tags:
            - { name: pimcore.data_object.import.resolver, id: code }

    Pimcore\DataObject\Import\Resolver\Filename:
        tags:
            - { name: pimcore.data_object.import.resolver, id: filename }

    Pimcore\DataObject\Import\Resolver\Fullpath:
        tags:
            - { name: pimcore.data_object.import.resolver, id: fullpath }

    Pimcore\DataObject\Import\Resolver\GetBy:
        tags:
            - { name: pimcore.data_object.import.resolver, id: getBy }


    #
    # OPERATOR FACTORIES
    #

    pimcore.data_object.import.operator.factory.base64:
        class: Pimcore\DataObject\Import\ColumnConfig\Operator\Factory\DefaultOperatorFactory
        arguments:
            $className: Pimcore\DataObject\Import\ColumnConfig\Operator\Base64
        tags:
            - { name: pimcore.data_object.import.operator_factory, id: Base64 }

    pimcore.data_object.import.operator.factory.iterator:
        class: Pimcore\DataObject\Import\ColumnConfig\Operator\Factory\DefaultOperatorFactory
        arguments:
            $className: Pimcore\DataObject\Import\ColumnConfig\Operator\Iterator
        tags:
            - { name: pimcore.data_object.import.operator_factory, id: Iterator }

    pimcore.data_object.import.operator.factory.locale_switcher:
        class: Pimcore\DataObject\Import\ColumnConfig\Operator\Factory\LocaleSwitcherFactory
        tags:
            - { name: pimcore.data_object.import.operator_factory, id: LocaleSwitcher }

    pimcore.data_object.import.operator.factory.object_brick_setter:
        class: Pimcore\DataObject\Import\ColumnConfig\Operator\Factory\ObjectBrickSetterFactory
        tags:
            - { name: pimcore.data_object.import.operator_factory, id: ObjectBrickSetter }

    pimcore.data_object.import.operator.factory.php_code:
        class: Pimcore\DataObject\Import\ColumnConfig\Operator\Factory\DefaultOperatorFactory
        arguments:
            $className: Pimcore\DataObject\Import\ColumnConfig\Operator\PHPCode
        tags:
            - { name: pimcore.data_object.import.operator_factory, id: PHPCode }

    pimcore.data_object.import.operator.factory.published:
        class: Pimcore\DataObject\Import\ColumnConfig\Operator\Factory\DefaultOperatorFactory
        arguments:
            $className: Pimcore\DataObject\Import\ColumnConfig\Operator\Published
        tags:
            - { name: pimcore.data_object.import.operator_factory, id: Published }

    pimcore.data_object.import.operator.factory.splitter:
        class: Pimcore\DataObject\Import\ColumnConfig\Operator\Factory\DefaultOperatorFactory
        arguments:
            $className: Pimcore\DataObject\Import\ColumnConfig\Operator\Splitter
        tags:
            - { name: pimcore.data_object.import.operator_factory, id: Splitter }

    pimcore.data_object.import.operator.factory.unserialize:
        class: Pimcore\DataObject\Import\ColumnConfig\Operator\Factory\DefaultOperatorFactory
        arguments:
            $className: Pimcore\DataObject\Import\ColumnConfig\Operator\Unserialize
        tags:
            - { name: pimcore.data_object.import.operator_factory, id: Unserialize }


    #
    # VALUE FACTORIES
    #

    pimcore.data_object.import.value.factory.default:
        class: Pimcore\DataObject\Import\ColumnConfig\Value\Factory\DefaultValueFactory
        arguments:
            $className: Pimcore\DataObject\Import\ColumnConfig\Value\DefaultValue
        tags:
            - { name: pimcore.data_object.import.value_factory, id: DefaultValue }
