package nl.andrewlalis.util; import nl.andrewlalis.model.StudentTeam; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.List; import java.util.logging.Logger; /** * Contains some methods which come in handy in lots of other places. */ public class FileUtils { /** * The logger for outputting debug info. */ private static final Logger logger = Logger.getLogger(FileUtils.class.getName()); static { logger.setParent(Logger.getGlobal()); } /** * Reads the contents of the file specified by the filename into a String. * @param filename The filename to read the file of, either relative or absolute. * @return A string containing the file's contents. */ public static String readStringFromFile(String filename) { try (BufferedReader r = new BufferedReader(new InputStreamReader(FileUtils.class.getResourceAsStream(filename)))) { StringBuilder sb = new StringBuilder(); String line; while ((line = r.readLine()) != null) { sb.append(line).append('\n'); } return sb.toString(); } catch (IOException e) { e.printStackTrace(); return null; } } /** * Reads a list of students from a CSV file and compiles a list of teams based on their preferred partners. * @param filename The name of the CSV file. * @param teamSize The intended size of teams. * @return A list of student teams. */ public static List getStudentTeamsFromCSV(String filename, int teamSize) { List studentTeams = null; try { studentTeams = TeamGenerator.generateFromCSV(filename, teamSize); logger.fine("Teams created:\n" + studentTeams); return studentTeams; } catch (IOException | ArrayIndexOutOfBoundsException e) { logger.severe("Unable to generate studentTeams from CSV file, exiting."); System.exit(1); return null; } } }