"""Implementation of anonymizer service."""
import logging

import nlp_ws
from typing import Dict

from src.worker import Worker

_log = logging.getLogger(__name__)


class AnonymizerWorker(nlp_ws.NLPWorker):
    """NLP WS worker for anonymizer."""

    @classmethod
    def static_init(cls, config):
        """Initialize the class with configuration.

        Args:
            config (dict): Configuration dictionary. (It's not strictly dict,
                but it supports dict-like operations.)

        """
        cls._configuration = config.get("tool").get("configuration", "ccl")
        cls._default_language = config.get("tool").get("default_language", "pl")
        cls._default_replacer = config.get("tool").get("default_replacer", "tag")

        _log.info(
            "AnonymizerWorker initialized with configuration:"
            "%s, default language: %s, default replacer: %s",
            cls._configuration,
            cls._default_language,
            cls._default_replacer,
        )

    def __init__(self):
        """Initialize the worker instance."""
        self._worker = Worker(
            configuration=self._configuration,
            default_language=self._default_language,
            default_replacer=self._default_replacer,
        )

    def process(
        self, input_file: str, task_options: Dict[str, str], output_file: str
    ) -> None:
        """Process the input and save the result to the output path.

        Args:
            input_file (str): Path to the input.
            task_options (Dict[str, str]): Runtime configuration of the task.
            output_file (str): Path to the output.

        """
        self._worker.process(input_file, task_options, output_file)


if __name__ == "__main__":
    nlp_ws.NLPService.main(AnonymizerWorker, pause_at_exit=False)