package io.delphi.qa.auto.awsmfrw.managers;

import io.delphi.qa.auto.awsmfrw.common_baby.EnDelphiFsResourceList;
import io.delphi.qa.auto.awsmfrw.common_baby.IsaCommonMethods;
import io.delphi.qa.auto.awsmfrw.models.aws.sf.RqSlzJobManager;
import io.qameta.allure.Step;

import java.io.File;
import java.io.FilenameFilter;
import java.util.List;

public class HlFileSystem {

  @Step("FileSystem: list context files")
  public File[] listContextSourceFiles(String fileNamePattern) {
    File targetDir = new File(EnDelphiFsResourceList.AWS_S3_SLZ_CONTEXTS.resourceLocator());
    FilenameFilter filter = (f, name) -> name.toLowerCase().contains(fileNamePattern.toLowerCase());
    return targetDir.listFiles(filter);
  }

  @Step("FileSystem: list context files")
  public <T> List<T> listObjectsFromJson(T sourceObj, String fileLocatorWithName) {
    return IsaCommonMethods.loadGenericListFromFile(new File(fileLocatorWithName), sourceObj);
  }

  @Step("FileSystem: list SF requests slz-main-flow")
  public List<RqSlzJobManager> listSfRqSlzMainFlow(String reportFileName) {
    return listObjectsFromJson(
        new RqSlzJobManager(),
        EnDelphiFsResourceList.AWS_STEP_FUNCTIONS_SLZ_CONFIGS.resourceLocator()
            + reportFileName
            + ".json");
  }
}
