diff --git a/app/src/main/java/ch/zhaw/projekt2/turnierverwaltung/TournamentDecorator.java b/app/src/main/java/ch/zhaw/projekt2/turnierverwaltung/TournamentDecorator.java index 2d5ae00..955949f 100644 --- a/app/src/main/java/ch/zhaw/projekt2/turnierverwaltung/TournamentDecorator.java +++ b/app/src/main/java/ch/zhaw/projekt2/turnierverwaltung/TournamentDecorator.java @@ -9,6 +9,7 @@ import java.util.List; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; +import java.util.logging.Logger; public class TournamentDecorator implements IsObservable{ @@ -18,48 +19,84 @@ public class TournamentDecorator implements IsObservable{ private ExecutorService executorService; private FactoryDecorator factoryDecorator; + private static final Logger logger = Logger.getLogger(TournamentDecorator.class.getCanonicalName()); + + /** + * Constructor to initialize TournamentDecorator + * adds a listener to save the tournament every time if something is changed. + * creates a executer service to do the saving process in separate thread for better performance. + * @param fileIO + */ public TournamentDecorator(FileIO fileIO){ + logger.fine("initializing TournamentDecorator"); setFileIO(fileIO); addListener(new IsObserver() { @Override public void update() { if(tournament != null){ - saveTournament(); + logger.fine("listener to save tournament was added"); } } }); executorService = Executors.newFixedThreadPool(1); } + /** + * Setter method of FactoryDecorator + * @param factoryDecorator the factory decorator to load different views. + */ public void setFactoryDecorator(FactoryDecorator factoryDecorator) { this.factoryDecorator = factoryDecorator; } + /** + * Setter Method of FileIO + * @param fileIO the fileIO object to read and save to files. + */ public void setFileIO(FileIO fileIO) { this.fileIO = fileIO; } + /** + * setter Method of Tournament + * @param tournament the new Tournament Object which was selected by user. + */ public void setTournament(Tournament tournament) { this.tournament = tournament; } + /** + * getter Method of Tournament + * @return the actual tournament which is open. + */ public Tournament getTournament() { return tournament; } + /** + * Method to add a listener in list. + * @param observer the observer object which should be informed. + */ @Override public void addListener(IsObserver observer) { listener.add(observer); } + /** + * Method to remove a listener from list. + * @param observer the object to remove. + */ @Override public void removeListener(IsObserver observer) { listener.remove(observer); } - + /** + * Method to save the actual tournament to files. + */ public void saveTournament(){ + logger.fine("Saving Tournament to File."); executorService.execute(new saveTask()); factoryDecorator.clearMessage(false); String msg = factoryDecorator.getLanguageConfigurator().getSelectedLanguage("save"); @@ -67,40 +104,49 @@ public class TournamentDecorator implements IsObservable{ } - + /** + * Method to create a new Tournament. It checks if the name is valid, creates a new instance of Tournament and calls + * FileIO to save the new Tournament. + * @param name The name which was entered by the user. + * @param type The type of Tournament + */ public void createTournament(String name, Tournament.Type type){ - try { if(fileIO.tournamentExists(name)){ - //TODO:Logger + logger.warning("a tournament with name " + name + "exists already."); String msg = factoryDecorator.getLanguageConfigurator().getSelectedLanguage("tournamentExists"); factoryDecorator.printMessageToFooter(msg, true); return; } Tournament tournament = new Tournament(name, type); + logger.fine("new tournament instance was created."); fileIO.saveTournament(tournament); + logger.fine("new Tournament File is saved."); factoryDecorator.clearMessage(true); informListener(); } catch (InvalidNameException e) { e.printStackTrace(); - //TODO: Logger + logger.warning("The name which was entered is invalid."); String msg = factoryDecorator.getLanguageConfigurator().getSelectedLanguage("invalidName"); factoryDecorator.printMessageToFooter(msg, true); } catch (Tournament.InvalidTypeException e) { e.printStackTrace(); - //TODO: Logger + logger.warning("The selected type of tournament is not valid."); String msg = factoryDecorator.getLanguageConfigurator().getSelectedLanguage("invalidMode"); factoryDecorator.printMessageToFooter(msg, true); - } catch (IOException e) { e.printStackTrace(); - //TODO: Logger + logger.warning("Creating a new Tournament File was failed."); String msg = factoryDecorator.getLanguageConfigurator().getSelectedLanguage("IOException"); factoryDecorator.printMessageToFooter(msg, true); } } + /** + * Method to delete a Tournament File + * @param tournamentFile The File which should be deleted. + */ public void deleteTournament(FileIO.TournamentFile tournamentFile){ try { fileIO.deleteTournament(tournamentFile); @@ -113,8 +159,11 @@ public class TournamentDecorator implements IsObservable{ } } + /** + * Method to create the list of games. The participants are entered in random order. + */ public void createNewGameSchedule() { - //TODO: logging + logger.fine("Creating new Game Schedule"); try { tournament.createGameSchedule(); factoryDecorator.clearMessage(true); @@ -122,6 +171,7 @@ public class TournamentDecorator implements IsObservable{ e.printStackTrace(); String msg = factoryDecorator.getLanguageConfigurator().getSelectedLanguage("numberParticipant"); factoryDecorator.printMessageToFooter(msg, true); + logger.warning("Failed to create Game Schedule. The number of Participants is invalid."); } informListener(); }