Merge pull request #57 from PM2-IT21bWIN-ruiz-mach-krea/logging_and_docs
Logging and docs
This commit is contained in:
		
						commit
						86b57547cf
					
				| 
						 | 
				
			
			@ -69,7 +69,7 @@ public class Factory {
 | 
			
		|||
                view.loadView(tournamentDecorator, fileIO, factoryDecorator, pane);
 | 
			
		||||
            } catch (IOException e) {
 | 
			
		||||
                e.printStackTrace();
 | 
			
		||||
                //TODO Handle and logging.
 | 
			
		||||
                logger.warning("failed to load views.");
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
| 
						 | 
				
			
			@ -81,6 +81,7 @@ public class Factory {
 | 
			
		|||
    public void showTournamentList(BorderPane pane) {
 | 
			
		||||
        tournamentDecorator.setTournament(null);
 | 
			
		||||
        setCenterOfBorderPane(pane, View.tournamentList);
 | 
			
		||||
        logger.fine("showing Tournament List");
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
| 
						 | 
				
			
			@ -89,6 +90,7 @@ public class Factory {
 | 
			
		|||
     */
 | 
			
		||||
    public void showParticipantFormular(BorderPane pane) {
 | 
			
		||||
        setCenterOfBorderPane(pane, View.participantFormular);
 | 
			
		||||
        logger.fine("showing Participant Formular");
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
| 
						 | 
				
			
			@ -97,6 +99,7 @@ public class Factory {
 | 
			
		|||
     */
 | 
			
		||||
    public void showPlacesFormular(BorderPane pane) {
 | 
			
		||||
        setCenterOfBorderPane(pane, View.placesFormular);
 | 
			
		||||
        logger.fine("showing Places Formular");
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
| 
						 | 
				
			
			@ -105,6 +108,7 @@ public class Factory {
 | 
			
		|||
     */
 | 
			
		||||
    public void showGameScheduler(BorderPane pane) {
 | 
			
		||||
        setCenterOfBorderPane(pane, View.gameScheduler);
 | 
			
		||||
        logger.fine("showing Game Scheduler");
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
| 
						 | 
				
			
			@ -131,6 +135,7 @@ public class Factory {
 | 
			
		|||
            box.getChildren().add(loader.load());
 | 
			
		||||
            GameController controller = loader.getController();
 | 
			
		||||
            controller.setup(tournamentDecorator, fileIO, factoryDecorator, box, gameDecorator, languageConfigurator);
 | 
			
		||||
            logger.fine("loaded game view");
 | 
			
		||||
            return controller;
 | 
			
		||||
        } catch (IOException e) {
 | 
			
		||||
            logger.warning("Fatal error program can not continue after this: " + e );
 | 
			
		||||
| 
						 | 
				
			
			@ -146,6 +151,7 @@ public class Factory {
 | 
			
		|||
     * @param error true if it's a error message.
 | 
			
		||||
     */
 | 
			
		||||
    public void printMessageToFooter(BorderPane pane, String msg, boolean error) {
 | 
			
		||||
        logger.fine("message is printed to footer of window.");
 | 
			
		||||
        VBox bottom = (VBox) pane.getBottom();
 | 
			
		||||
        Label label = new Label();
 | 
			
		||||
        VBox innerVbox;
 | 
			
		||||
| 
						 | 
				
			
			@ -176,6 +182,7 @@ public class Factory {
 | 
			
		|||
     * @param error true if the error message should be cleared.
 | 
			
		||||
     */
 | 
			
		||||
    public void resetFooter(BorderPane pane,boolean error) {
 | 
			
		||||
        logger.fine("messages are removed from footer of window.");
 | 
			
		||||
        VBox bottom = (VBox) pane.getBottom();
 | 
			
		||||
        VBox vBox;
 | 
			
		||||
        if (error) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -141,11 +141,20 @@ public class FactoryDecorator implements IsObservable {
 | 
			
		|||
        informListener();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Initializes the view of gameSchedule
 | 
			
		||||
     */
 | 
			
		||||
    public void openScheduleView() {
 | 
			
		||||
        factory.showGameScheduler((BorderPane) pane);
 | 
			
		||||
        informListener();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Method to load all game views to show.
 | 
			
		||||
     * @param hBoxCenter the box where the games should be shown.
 | 
			
		||||
     * @param tournamentDecorator the tournamentDecorator to communicate to tournament
 | 
			
		||||
     * @param treeView true if the games should be arranged like a tree.
 | 
			
		||||
     */
 | 
			
		||||
    public void loadGameList(HBox hBoxCenter, TournamentDecorator tournamentDecorator, boolean treeView) {
 | 
			
		||||
        hBoxCenter.getChildren().clear();
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -195,6 +204,13 @@ public class FactoryDecorator implements IsObservable {
 | 
			
		|||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Method to draw the lines between the game views in the tree view.
 | 
			
		||||
     * @param gameVBox the box with the games where lines should be drawn.
 | 
			
		||||
     * @param gameBoxHeight the heigth of a single game box.
 | 
			
		||||
     * @param lineLength the length of the horizontal lines.
 | 
			
		||||
     * @return a box which contains the drawn lines.
 | 
			
		||||
     */
 | 
			
		||||
    public VBox drawLines(VBox gameVBox, double gameBoxHeight, double lineLength) {
 | 
			
		||||
        VBox completeLineVBox = new VBox();
 | 
			
		||||
        completeLineVBox.setAlignment(Pos.CENTER_LEFT);
 | 
			
		||||
| 
						 | 
				
			
			@ -228,8 +244,8 @@ public class FactoryDecorator implements IsObservable {
 | 
			
		|||
    /**
 | 
			
		||||
     * Method Initializes the Game View, in order to do that a vbox is needed and the gameDecorator
 | 
			
		||||
     * @param vBox used for display
 | 
			
		||||
     * @param gameDecorator
 | 
			
		||||
     * @return
 | 
			
		||||
     * @param gameDecorator the gameDecorator Object to communicate with game
 | 
			
		||||
     * @return the controller of the loaded game view.
 | 
			
		||||
     */
 | 
			
		||||
    public GameController openGameView(VBox vBox, GameDecorator gameDecorator) {
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -256,9 +272,10 @@ public class FactoryDecorator implements IsObservable {
 | 
			
		|||
        factory.resetFooter((BorderPane) pane, error);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * getter Method of languageConfigurator
 | 
			
		||||
     * @return the languageConfigurator object.
 | 
			
		||||
     */
 | 
			
		||||
    public LanguageConfigurator getLanguageConfigurator() {
 | 
			
		||||
        return factory.getLanguageConfigurator();
 | 
			
		||||
    }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -8,6 +8,8 @@ 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{
 | 
			
		||||
    private Tournament tournament;
 | 
			
		||||
| 
						 | 
				
			
			@ -16,48 +18,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");
 | 
			
		||||
| 
						 | 
				
			
			@ -65,40 +103,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);
 | 
			
		||||
| 
						 | 
				
			
			@ -111,8 +158,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);
 | 
			
		||||
| 
						 | 
				
			
			@ -120,6 +170,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();
 | 
			
		||||
    }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue