diff --git a/app/src/main/java/ch/zhaw/projekt2/turnierverwaltung/Player.java b/app/src/main/java/ch/zhaw/projekt2/turnierverwaltung/Player.java index 29bb2c6..bf1f772 100644 --- a/app/src/main/java/ch/zhaw/projekt2/turnierverwaltung/Player.java +++ b/app/src/main/java/ch/zhaw/projekt2/turnierverwaltung/Player.java @@ -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()); }