From 2f111cf1e4e9d30e6b709ce309873ab453e76084 Mon Sep 17 00:00:00 2001 From: schrom01 Date: Sun, 1 May 2022 22:43:41 +0200 Subject: [PATCH] implemented functionality of PlacesFormular --- .../turnierverwaltung/FactoryDecorator.java | 4 ++ .../zhaw/projekt2/turnierverwaltung/Game.java | 10 +-- .../projekt2/turnierverwaltung/Location.java | 17 ----- .../projekt2/turnierverwaltung/Place.java | 21 +++++++ .../turnierverwaltung/Tournament.java | 45 ++++++++++++++ .../TournamentDecorator.java | 20 ++++++ .../ParticipantFormularController.java | 9 +-- .../PlacesFormularController.java | 62 ++++++++++++++----- .../participantFormular.fxml | 2 +- .../placesAddFormular/PlacesFormular.fxml | 57 ++++++++++++----- gradlew.bat | 4 +- 11 files changed, 185 insertions(+), 66 deletions(-) delete mode 100644 app/src/main/java/ch/zhaw/projekt2/turnierverwaltung/Location.java create mode 100644 app/src/main/java/ch/zhaw/projekt2/turnierverwaltung/Place.java diff --git a/app/src/main/java/ch/zhaw/projekt2/turnierverwaltung/FactoryDecorator.java b/app/src/main/java/ch/zhaw/projekt2/turnierverwaltung/FactoryDecorator.java index 9364f64..95a4648 100644 --- a/app/src/main/java/ch/zhaw/projekt2/turnierverwaltung/FactoryDecorator.java +++ b/app/src/main/java/ch/zhaw/projekt2/turnierverwaltung/FactoryDecorator.java @@ -61,6 +61,10 @@ public class FactoryDecorator implements IsObservable{ factory.loadPlacesFormular((BorderPane) pane, this); } + public void openScheduleView() { + factory.loadGameScheduler((BorderPane) pane, this); + } + public void informListener() { for(IsObserver observer : listener) { observer.update(); diff --git a/app/src/main/java/ch/zhaw/projekt2/turnierverwaltung/Game.java b/app/src/main/java/ch/zhaw/projekt2/turnierverwaltung/Game.java index 3df9735..18e317b 100644 --- a/app/src/main/java/ch/zhaw/projekt2/turnierverwaltung/Game.java +++ b/app/src/main/java/ch/zhaw/projekt2/turnierverwaltung/Game.java @@ -5,14 +5,14 @@ import java.io.Serializable; public class Game implements Serializable { private Participant participant1, Participant2; private int points1, points2; - private Location location; + private Place place; - public Location getLocation() { - return location; + public Place getLocation() { + return place; } - public void setLocation(Location location) { - this.location = location; + public void setLocation(Place place) { + this.place = place; } public int getPoints1() { diff --git a/app/src/main/java/ch/zhaw/projekt2/turnierverwaltung/Location.java b/app/src/main/java/ch/zhaw/projekt2/turnierverwaltung/Location.java deleted file mode 100644 index 448ae67..0000000 --- a/app/src/main/java/ch/zhaw/projekt2/turnierverwaltung/Location.java +++ /dev/null @@ -1,17 +0,0 @@ -package ch.zhaw.projekt2.turnierverwaltung; - -public class Location { - private String name; - - public Location(String name){ - setName(name); - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } -} diff --git a/app/src/main/java/ch/zhaw/projekt2/turnierverwaltung/Place.java b/app/src/main/java/ch/zhaw/projekt2/turnierverwaltung/Place.java new file mode 100644 index 0000000..04df070 --- /dev/null +++ b/app/src/main/java/ch/zhaw/projekt2/turnierverwaltung/Place.java @@ -0,0 +1,21 @@ +package ch.zhaw.projekt2.turnierverwaltung; + +public class Place { + private final String NAME_MATCHING_REGEX = "[a-zA-Z0-9]{1,20}"; + private String name; + + public Place(String name) throws InvalidNameException { + if(!name.matches(NAME_MATCHING_REGEX)){ + throw new InvalidNameException("The Name is Invalid."); + } + setName(name); + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } +} diff --git a/app/src/main/java/ch/zhaw/projekt2/turnierverwaltung/Tournament.java b/app/src/main/java/ch/zhaw/projekt2/turnierverwaltung/Tournament.java index 744ba05..36ae2e8 100644 --- a/app/src/main/java/ch/zhaw/projekt2/turnierverwaltung/Tournament.java +++ b/app/src/main/java/ch/zhaw/projekt2/turnierverwaltung/Tournament.java @@ -13,6 +13,7 @@ public class Tournament implements Serializable { private String name; private Type type; private List participants; + private List places; @@ -50,6 +51,28 @@ public class Tournament implements Serializable { return participantsObservable; } + public void addPlace(Place newPlace) throws PlaceExistsException { + for(Place place : places){ + if(place.equals(newPlace)){ + places.remove(place); + } + } + places.add(newPlace); + } + + public void removePlace(Place place) throws PlaceNotExistsException { + if(!places.contains(place)){ + throw new PlaceNotExistsException("The given Place is not part of this Tournament"); + } + places.remove(place); + } + + public ObservableList getPlaces() { + ObservableList placesObservable = FXCollections.observableArrayList(); + placesObservable.addAll(places); + return placesObservable; + } + public String getName() { return name; } @@ -120,5 +143,27 @@ public class Tournament implements Serializable { } + public class PlaceExistsException extends Exception { + public PlaceExistsException() { + super(); + } + + public PlaceExistsException(String errorMessage) { + super(errorMessage); + } + + } + + public class PlaceNotExistsException extends Exception { + public PlaceNotExistsException() { + super(); + } + + public PlaceNotExistsException(String errorMessage) { + super(errorMessage); + } + + } + } 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 d284219..dcb3112 100644 --- a/app/src/main/java/ch/zhaw/projekt2/turnierverwaltung/TournamentDecorator.java +++ b/app/src/main/java/ch/zhaw/projekt2/turnierverwaltung/TournamentDecorator.java @@ -101,6 +101,26 @@ public class TournamentDecorator implements IsObservable{ } } + public void savePlace(String name){ + try { + tournament.addPlace(new Place(name)); + informListener(); + } catch (Tournament.PlaceExistsException e) { + e.printStackTrace(); //TODO handle and logging + } catch (InvalidNameException e) { + e.printStackTrace(); //TODO handle and logging + } + } + + public void deletePlace(Place place){ + try { + tournament.removePlace(place); + informListener(); + } catch (Tournament.PlaceNotExistsException e) { + e.printStackTrace(); //TODO handle and logging + } + } + public void informListener() { for(IsObserver observer : listener) { observer.update(); diff --git a/app/src/main/java/ch/zhaw/projekt2/turnierverwaltung/main/participantAddFormular/ParticipantFormularController.java b/app/src/main/java/ch/zhaw/projekt2/turnierverwaltung/main/participantAddFormular/ParticipantFormularController.java index 521334f..0528301 100644 --- a/app/src/main/java/ch/zhaw/projekt2/turnierverwaltung/main/participantAddFormular/ParticipantFormularController.java +++ b/app/src/main/java/ch/zhaw/projekt2/turnierverwaltung/main/participantAddFormular/ParticipantFormularController.java @@ -76,27 +76,20 @@ public class ParticipantFormularController extends FXController { birthDateTextField.setText(participant.getFormatedDateOfBirth()); } - @FXML - void changeParticipant(MouseEvent event) { - - } - @FXML void saveParticipant(ActionEvent event) { getTournamentDecorator().savePlayer(firstNameTextField.getText(), participantNameTextField.getText(), phoneNumberTextField.getText(), birthDateTextField.getText()); } - @FXML void delete(ActionEvent event) { - System.out.println("delete"); Participant participant = participantListView.getSelectionModel().getSelectedItems().get(0); getTournamentDecorator().deleteParticipant(participant); } @FXML void close(ActionEvent event) { - + getFactoryDecorator().openScheduleView(); } @Override diff --git a/app/src/main/java/ch/zhaw/projekt2/turnierverwaltung/main/placesAddFormular/PlacesFormularController.java b/app/src/main/java/ch/zhaw/projekt2/turnierverwaltung/main/placesAddFormular/PlacesFormularController.java index 5edac10..e5c9ac4 100644 --- a/app/src/main/java/ch/zhaw/projekt2/turnierverwaltung/main/placesAddFormular/PlacesFormularController.java +++ b/app/src/main/java/ch/zhaw/projekt2/turnierverwaltung/main/placesAddFormular/PlacesFormularController.java @@ -1,6 +1,8 @@ package ch.zhaw.projekt2.turnierverwaltung.main.placesAddFormular; import ch.zhaw.projekt2.turnierverwaltung.FXController; +import ch.zhaw.projekt2.turnierverwaltung.Place; +import ch.zhaw.projekt2.turnierverwaltung.Player; import javafx.event.ActionEvent; import javafx.fxml.FXML; import javafx.scene.control.Button; @@ -9,11 +11,33 @@ import javafx.scene.control.ListView; import javafx.scene.control.TextField; import javafx.scene.input.MouseEvent; import javafx.scene.layout.GridPane; +import javafx.scene.layout.VBox; public class PlacesFormularController extends FXController { @FXML - private Label AddListTitle; + private Button addBtn; + + @FXML + private Label birthDateLabel; + + @FXML + private TextField birthDateTextField; + + @FXML + private VBox changeBtn; + + @FXML + private Label firstNameLabel; + + @FXML + private TextField firstNameTextField; + + @FXML + private GridPane grid; + + @FXML + private Label newPlaceFormularTitle; @FXML private Button closeBtn; @@ -21,46 +45,52 @@ public class PlacesFormularController extends FXController { @FXML private Button deleteBtn; - @FXML - private GridPane grid; @FXML - private ListView locationListView; + private Label placeListTitle; @FXML - private Label locationNameLabel; + private ListView placeListView; @FXML - private TextField locationNameTextField; + private Label placeNameLabel; @FXML - private Label newLocationFormularTitle; + private TextField placeNameTextField; + + @FXML + private Label phoneNumberLabel; + + @FXML + private TextField phoneNumberTextField; @FXML private Button saveBtn; @FXML - void changedSelection(MouseEvent event) { - + void changedSelection(MouseEvent event){ + Place place = placeListView.getSelectionModel().getSelectedItems().get(0); + placeNameTextField.setText(place.getName()); } @FXML - void closeFormular(ActionEvent event) { - + void savePlace(ActionEvent event) { + getTournamentDecorator().savePlace(placeNameTextField.getText()); } @FXML - void deleteSelectedPlace(ActionEvent event) { - + void delete(ActionEvent event) { + Place place = placeListView.getSelectionModel().getSelectedItems().get(0); + getTournamentDecorator().deletePlace(place); } @FXML - void saveLocation(ActionEvent event) { - + void close(ActionEvent event) { + getFactoryDecorator().openScheduleView(); } @Override public void loadContent() { - + placeListView.setItems(getTournamentDecorator().getTournament().getPlaces()); } } diff --git a/app/src/main/resources/ch/zhaw/projekt2/turnierverwaltung/participantAddFormular/participantFormular.fxml b/app/src/main/resources/ch/zhaw/projekt2/turnierverwaltung/participantAddFormular/participantFormular.fxml index a5a648a..5ea688f 100644 --- a/app/src/main/resources/ch/zhaw/projekt2/turnierverwaltung/participantAddFormular/participantFormular.fxml +++ b/app/src/main/resources/ch/zhaw/projekt2/turnierverwaltung/participantAddFormular/participantFormular.fxml @@ -53,7 +53,7 @@ - +