package ctbrec.io;

import java.io.File;
import java.io.IOException;
import java.nio.file.Files;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import ctbrec.Config;

public class IoUtils {

    private static final Logger LOG = LoggerFactory.getLogger(IoUtils.class);

    private IoUtils() {}

    public static void deleteEmptyParents(File parent) throws IOException {
        File recDir = new File(Config.getInstance().getSettings().recordingsDir);
        while (parent != null && (parent.list() != null && parent.list().length == 0 || !parent.exists())  ) {
            if (parent.equals(recDir)) {
                return;
            }
            if(parent.exists()) {
                LOG.debug("Deleting empty directory {}", parent.getAbsolutePath());
                Files.delete(parent.toPath());
            }
            parent = parent.getParentFile();
        }
    }

    public static void deleteDirectory(File directory) throws IOException {
        if (!directory.exists()) {
            return;
        }

        File[] files = directory.listFiles();
        boolean deletedAllFiles = true;
        for (File file : files) {
            try {
                LOG.trace("Deleting {}", file.getAbsolutePath());
                Files.delete(file.toPath());
            } catch (Exception e) {
                deletedAllFiles = false;
                LOG.debug("Couldn't delete {}", file, e);
            }
        }

        if (!deletedAllFiles) {
            throw new IOException("Couldn't delete all files in " + directory);
        }
    }
}
