package guistuff;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;

public class ResourceReader {
  
  List<String> fileList;
  
  public ResourceReader(String path) {
    try {
      fileList = getResourceFiles(path);
    } catch (IOException e) { 
      e.printStackTrace();
    }
  }
  
  public String[] getResourceFileNames() {
    String[] fileNames = new String[fileList.size()];
    int i = 0;
    for (String s : fileList) {
      fileNames[i] = s;
      i++;
    }
    return fileNames;
  }

  private List<String> getResourceFiles(String path) throws IOException {
    List<String> filenames = new ArrayList<>();

    try (InputStream in = getResourceAsStream(path);
        BufferedReader br = new BufferedReader(new InputStreamReader(in))) {
      String resource;

      while ((resource = br.readLine()) != null) {
        filenames.add(resource);
      }
    }

    return filenames;
  }

  private InputStream getResourceAsStream(String resource) {
    final InputStream in = getContextClassLoader().getResourceAsStream(resource);

    return in == null ? getClass().getResourceAsStream(resource) : in;
  }

  private ClassLoader getContextClassLoader() {
    return Thread.currentThread().getContextClassLoader();
  }
}

