@@ -0,0 +1,1580 @@
+package innovimax.mixthem.io;%0A%0Aimport java.io.BufferedReader;%0Aimport java.io.File;%0Aimport java.io.InputStream;%0Aimport java.io.InputStreamReader;%0Aimport java.io.IOException;%0Aimport java.nio.charset.StandardCharsets;%0Aimport java.nio.file.Files;%0A%0A/**%0A* %3Cp%3EThis is the representation of an input resource.%3C/p%3E%0A* @author Innovimax%0A* @version 1.0%0A*/%0Apublic abstract class InputResource %7B%0A%0A  private static class InputFileResource extends InputResource %7B%0A    private final File file;%0A    private InputFileResource(File file) %7B%0A      this.file = file;%0A    %7D%0A    @Override%0A    public BufferedReader newBufferedReader() throws IOException %7B%0A      return Files.newBufferedReader(input.toPath(), StandardCharsets.UTF_8);  %0A    %7D%0A  %7D%0A%0A  private static class InputStreamResource extends InputResource %7B%0A    private final InputStream input;%0A    private InputStreamResource(File input) %7B%0A      this.input = input;%0A    %7D%0A    @Override%0A    public BufferedReader newBufferedReader() throws IOException %7B%0A      return new BufferedReader(new InputStreamReader(input, StandardCharsets.UTF_8));%0A    %7D%0A  %7D%0A  %0A  /**%0A  * private Constructor%0A  */  %0A  public InputResource() %7B%7D%0A  %0A  public static InputResource createInputFile(File file) %7B%0A    return new InputFileResource(file);%0A  %7D%0A  %0A  public static InputResource createInputStream(InputStream input) %7B%0A    return new InputStreamResource(input);%0A  %7D%0A  %0A  /**%0A  * Returns a new BufferedReader for this input resource.%0A  * @return The BufferedReader for this input resource%0A  */%0A  public abstract BufferedReader newBufferedReader() throws IOException;%0A  %0A%7D%0A

Create InputResource.java