package Repositories; import Models.Program.ProgramState; import java.io.BufferedWriter; import java.io.FileWriter; import java.io.PrintWriter; import java.util.ArrayList; import java.util.List; import Exceptions.BaseException; public class Repository implements IRepository { private List programStates; private String logFilePath; public Repository() { this.programStates = new ArrayList(); this.logFilePath = "log.txt"; } public Repository(String logFilePath) { this.programStates = new ArrayList(); this.logFilePath = logFilePath; } public void addProgramState(ProgramState programState) throws BaseException { programState.typeCheck(); programStates.clear(); programStates.add(programState); } public List getProgramStates() { return programStates; } public void setProgramStates(List programStates) { this.programStates = programStates; } public void logProgramStateExecution(ProgramState state) throws BaseException{ try{ var logFile = new PrintWriter(new BufferedWriter(new FileWriter(this.logFilePath, true))); logFile.println(state.toString()); logFile.close(); } catch(Exception exception){ throw new BaseException(exception.getMessage()); } } }