package com.tutego.ch_03.typeConversion;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.convert.ApplicationConversionService;
import org.springframework.context.i18n.LocaleContextHolder;
import org.springframework.shell.standard.ShellComponent;
import org.springframework.shell.standard.ShellMethod;

import java.nio.file.Files;
import java.nio.file.Path;
import java.time.LocalDate;
import java.util.Locale;

@ShellComponent
@SpringBootApplication(scanBasePackageClasses = TypeConversionModule.class)
public class TypeConversionApplication {

    private static final Logger logger = LoggerFactory.getLogger(TypeConversionApplication.class);

    public static void main(String... args) {
        SpringApplication.run(TypeConversionApplication.class, args);

        var converter = ApplicationConversionService.getSharedInstance();
        LocaleContextHolder.setLocale(Locale.GERMANY);
        logger.info(converter.convert(LocalDate.now(), String.class));

        LocaleContextHolder.setLocale(Locale.FRANCE);
        logger.info(converter.convert(LocalDate.now(), String.class));
    }

    @ShellMethod("Display if a path exists")
    public String exists(Path path) {
        boolean exists = Files.exists(path);
        return String.format("Path to '%s' %s exist", path, exists ? "does" : "doesn't");
    }

}