package de.ivu.elect.business.system.control.files.cleaner;

import org.apache.commons.io.FileUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

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

public class LeereVerzeichnisseLoeschenCleaner extends AbstractCleaner<List<File>> implements FileCleaner<List<File>> {

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

  @Override
  protected Logger getLog() {
    return LOG;
  }

  @Override
  public void bereinige(File verzeichnis, FileCleanerBucket<List<File>> bucket) throws Exception {
    for (var directory : bucket.getBucket()) {
      FileUtils.deleteDirectory(directory);
      getLog().info("Verzeichnis gelöscht: " + directory.getAbsolutePath());
    }
  }

  @Override
  public List<FileCleanerBucket<List<File>>> getBuckets(File verzeichnis) throws Exception {
    return Collections.emptyList();
    // Deaktiviert wegen ELECTKOM-3333
//    var leereVerzeichnisse = getLeereVerzeichnisse(verzeichnis);
//    if (leereVerzeichnisse.isEmpty()) {
//      return Collections.emptyList();
//    }
//    return Collections.singletonList(new FileCleanerBucket<>(leereVerzeichnisse));
  }

//  private List<File> getLeereVerzeichnisse(File verzeichnis) {
//    return FileUtils.listFilesAndDirs(verzeichnis, FalseFileFilter.INSTANCE, TrueFileFilter.INSTANCE).stream()
//        .filter(File::isDirectory)
//        .filter(f -> !verzeichnis.equals(f)) // ELECTMUC-2233
//        .filter(f -> !isInRecycleBin(f))
//        .filter(f -> {
//          var files = f.listFiles();
//          return files == null || files.length == 0;
//        }).collect(toList());
//  }

}
