package com.airlock.iam.plugin.configeditor.ui.dialog;

import com.airlock.iam.plugin.configeditor.ConfigEditorApplication;
import com.airlock.iam.plugin.framework.application.service.ConfigWriter;
import com.airlock.iam.plugin.framework.misc.config.ConfigHistoryItem;
import com.airlock.iam.system.property.IamSystemProperties;
import java.io.File;
import java.io.IOException;
import java.io.OutputStream;
import java.nio.file.Files;

public final class TempConfigFiles {
   private static final String TEMP_FILE_PREFIX = "temp-iam-config";

   private TempConfigFiles() {
   }

   public static File writeTempConfigFile(ConfigEditorApplication app, ConfigHistoryItem configMetadata, File directory) throws IOException, ConfigWriter.ConfigWriterException {
      File tempFile = createTempConfigFileInDirectory(directory);
      tempFile.deleteOnExit();

      try (OutputStream out = Files.newOutputStream(tempFile.toPath())) {
         app.getConfigContainer().saveConfiguration(IamSystemProperties.activeConfigFormat(), out, configMetadata);
      }

      return tempFile;
   }

   private static File createTempConfigFileInDirectory(File directory) throws IOException {
      return File.createTempFile("temp-iam-config", IamSystemProperties.getPluginConfigExtension(), directory);
   }
}
