package com.kamco.cd.kamcoback.geojson.config;

import jakarta.annotation.PostConstruct;
import lombok.Getter;
import lombok.Setter;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

/** GeoJSON 파일 모니터링 설정 */
@Component
@ConfigurationProperties(prefix = "geojson.monitor")
@Getter
@Setter
public class GeoJsonMonitorConfig {

  /** 모니터링할 폴더 경로 */
  private String watchDirectory = "~/geojson/upload";

  /** 처리 완료 후 파일을 이동할 폴더 경로 */
  private String processedDirectory = "~/geojson/processed";

  /** 처리 실패 파일을 이동할 폴더 경로 */
  private String errorDirectory = "~/geojson/error";

  /** 파일 모니터링 스케줄 (cron 표현식) 기본값: 매 1분마다 실행 */
  private String cronExpression = "0 * * * * *";

  /** 지원하는 압축파일 확장자 */
  private String[] supportedExtensions = {"zip", "tar", "tar.gz", "tgz"};

  /** 처리할 최대 파일 크기 (바이트) */
  private long maxFileSize = 100 * 1024 * 1024; // 100MB

  /** 임시 압축해제 폴더 */
  private String tempDirectory = "/tmp/geojson_extract";

  /** 홈 디렉토리 경로 확장 */
  @PostConstruct
  public void expandPaths() {
    watchDirectory = expandPath(watchDirectory);
    processedDirectory = expandPath(processedDirectory);
    errorDirectory = expandPath(errorDirectory);
    tempDirectory = expandPath(tempDirectory);
  }

  private String expandPath(String path) {
    if (path.startsWith("~")) {
      return path.replace("~", System.getProperty("user.home"));
    }
    return path;
  }
}
