| 
						 | 
				
			
			@ -1,54 +1,117 @@
 | 
			
		|||
package ch.zhaw.projekt2.turnierverwaltung;
 | 
			
		||||
 | 
			
		||||
import java.text.DateFormat;
 | 
			
		||||
import java.text.SimpleDateFormat;
 | 
			
		||||
 | 
			
		||||
import java.time.LocalDate;
 | 
			
		||||
import java.time.format.DateTimeFormatter;
 | 
			
		||||
import java.util.logging.Logger;
 | 
			
		||||
 | 
			
		||||
public class Player extends Person implements Participant{
 | 
			
		||||
/**
 | 
			
		||||
 * Class Representing a single Player
 | 
			
		||||
 */
 | 
			
		||||
public class Player extends Person implements Participant {
 | 
			
		||||
 | 
			
		||||
    private LocalDate dateOfBirth;
 | 
			
		||||
 | 
			
		||||
    private static final Logger logger = Logger.getLogger(FileIO.class.getCanonicalName());
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Constructor of player initializes a new player setting sever attributes like firstname, name birthdate usw.
 | 
			
		||||
     * and checking if the format is valid
 | 
			
		||||
     *
 | 
			
		||||
     * @param firstName   the firstname of the player
 | 
			
		||||
     * @param name        the name of the player
 | 
			
		||||
     * @param phoneNumber the phone number of the player
 | 
			
		||||
     * @param dateOfBirth the birthdate of the player
 | 
			
		||||
     * @throws InvalidNameException        thrown when the name or firstname are not in a valid format
 | 
			
		||||
     * @throws InvalidPhoneNumberException thrown when the phone number is not in a valid format
 | 
			
		||||
     */
 | 
			
		||||
    public Player(String firstName, String name, String phoneNumber, String dateOfBirth) throws InvalidNameException, InvalidPhoneNumberException {
 | 
			
		||||
        super(firstName, name, phoneNumber);
 | 
			
		||||
        logger.fine("initialized super of Player with firstname, name and phone number");
 | 
			
		||||
        logger.finer("Setting the date of birth as:" + dateOfBirth);
 | 
			
		||||
        setDateOfBirth(dateOfBirth);
 | 
			
		||||
        logger.finer("finished initializing the Player:" + name);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Method to get the birthday of a player
 | 
			
		||||
     *
 | 
			
		||||
     * @return the birthday of a player
 | 
			
		||||
     */
 | 
			
		||||
    public LocalDate getDateOfBirth() {
 | 
			
		||||
        logger.fine("returning the birthday of " + getName());
 | 
			
		||||
        return dateOfBirth;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public String getFormatedDateOfBirth(){
 | 
			
		||||
        try{
 | 
			
		||||
    /**
 | 
			
		||||
     * Method that returns the date of birth formatted in eu way dd.MM.YYYY and as String
 | 
			
		||||
     *
 | 
			
		||||
     * @return String of formatted date
 | 
			
		||||
     */
 | 
			
		||||
    public String getFormattedDateOfBirth() {
 | 
			
		||||
        logger.finer("Trying to get the formated date");
 | 
			
		||||
        try {
 | 
			
		||||
            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd.MM.yyyy");
 | 
			
		||||
            return dateOfBirth.format(formatter);
 | 
			
		||||
            logger.fine("Returning the formatted birthdate of player: " + getName());
 | 
			
		||||
            return dateOfBirth.format(
 | 
			
		||||
                    formatter);
 | 
			
		||||
        } catch (Exception e) {
 | 
			
		||||
           //todo handle and logging
 | 
			
		||||
            logger.warning("Failed to get formatted date for player " + getName() + "Error: " + e);
 | 
			
		||||
            //TODO handle
 | 
			
		||||
            return "";
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Method to set the date of Birth with a String provided.
 | 
			
		||||
     * @param dateOfBirth to be as a String
 | 
			
		||||
     */
 | 
			
		||||
    public void setDateOfBirth(String dateOfBirth) {
 | 
			
		||||
        if(dateOfBirth.length() > 0) {
 | 
			
		||||
        logger.finer("Trying to set of birth with the String " + dateOfBirth + " provided");
 | 
			
		||||
        if (dateOfBirth.length() > 0) {
 | 
			
		||||
 | 
			
		||||
            String[] date = dateOfBirth.split("\\.");
 | 
			
		||||
            this.dateOfBirth = LocalDate.of(Integer.valueOf(date[2]), Integer.valueOf(date[1]), Integer.valueOf(date[0]));
 | 
			
		||||
            logger.fine("");
 | 
			
		||||
            logger.fine("Date of birth of" + getName() + " has been set to " + dateOfBirth);
 | 
			
		||||
        } else {
 | 
			
		||||
            logger.warning("Date of birth of " + getName() + " could not be set, leaving at null");
 | 
			
		||||
            dateOfBirth = null;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Method that sets date of Birth with a LocalDate provided
 | 
			
		||||
     *
 | 
			
		||||
     * @param dateOfBirth parameter given as LocalDate
 | 
			
		||||
     */
 | 
			
		||||
    public void setDateOfBirth(LocalDate dateOfBirth) {
 | 
			
		||||
        logger.fine("Setting date of birth of" + getName() + "with provided LocalDate: " + dateOfBirth);
 | 
			
		||||
        this.dateOfBirth = dateOfBirth;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Override of equals method to compare participants against each other
 | 
			
		||||
     *
 | 
			
		||||
     * @param participant
 | 
			
		||||
     * @return true if equals, false if not
 | 
			
		||||
     */
 | 
			
		||||
    @Override
 | 
			
		||||
    public boolean equals(Participant participant) {
 | 
			
		||||
        logger.fine("Comparing " + participant + " with " + this);
 | 
			
		||||
        return getClass().equals(participant.getClass()) && toString().toLowerCase().equals(participant.toString().toLowerCase());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Override of the change method to change a Participant with a new one
 | 
			
		||||
     *
 | 
			
		||||
     * @param participant the new participant to be added
 | 
			
		||||
     */
 | 
			
		||||
    @Override
 | 
			
		||||
    public void change(Participant participant) {
 | 
			
		||||
        logger.fine("changing the current Player " + this + "with " + participant.getName());
 | 
			
		||||
        Player player = (Player) participant;
 | 
			
		||||
 | 
			
		||||
        setDateOfBirth(player.getDateOfBirth());
 | 
			
		||||
        setPhoneNumber(player.getPhoneNumber());
 | 
			
		||||
    }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue