|
@ -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;
|
||||
|
||||
/**
|
||||
* 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(){
|
||||
/**
|
||||
* 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) {
|
||||
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