Merge remote-tracking branch 'origin/main' into testing

This commit is contained in:
Andrin Fassbind 2022-05-13 20:54:58 +02:00
commit c8eff00e33
8 changed files with 136 additions and 35 deletions

View File

@ -133,6 +133,10 @@ public class Factory {
vBox.setBorder(null); vBox.setBorder(null);
} }
public LanguageConfigurator getLanguageConfigurator() {
return languageConfigurator;
}
public enum View { public enum View {
tournamentList("tournamentList/tournamentList.fxml"), tournamentList("tournamentList/tournamentList.fxml"),
participantFormular("participantAddFormular/participantFormular.fxml"), participantFormular("participantAddFormular/participantFormular.fxml"),

View File

@ -54,7 +54,8 @@ public class FactoryDecorator implements IsObservable{
clearMessage(false); clearMessage(false);
} catch (IOException | ClassNotFoundException e) { } catch (IOException | ClassNotFoundException e) {
e.printStackTrace(); e.printStackTrace();
printMessageToFooter("Fehler beim lesen der Datei.", true); String msg = factory.getLanguageConfigurator().getSelectedLanguage("IOException");
printMessageToFooter(msg, true);
} //TODO handle and logging } //TODO handle and logging
} }
@ -169,6 +170,10 @@ public class FactoryDecorator implements IsObservable{
factory.resetFooter((BorderPane) pane, error); factory.resetFooter((BorderPane) pane, error);
} }
public LanguageConfigurator getLanguageConfigurator() {
return factory.getLanguageConfigurator();
}
public void informListener() { public void informListener() {
for(IsObserver observer : listener) { for(IsObserver observer : listener) {
observer.update(); observer.update();

View File

@ -80,10 +80,52 @@ public class LanguageConfigurator {
germanDictionary.put("phoneNumberLabel","Telefon:"); germanDictionary.put("phoneNumberLabel","Telefon:");
englishDictionary.put("phoneNumberLabel","Phone:"); englishDictionary.put("phoneNumberLabel","Phone:");
germanDictionary.put("birthDateLabel","Geb. Datum:"); germanDictionary.put("birthDateLabel","Geb. Datum:");
englishDictionary.put("birthDateLabel","Birthday:"); englishDictionary.put("birthDateLabel","Birthdate:");
//Game //Game
germanDictionary.put("locationLabel","Ort:"); germanDictionary.put("locationLabel","Ort:");
englishDictionary.put("locationLabel","Location:"); englishDictionary.put("locationLabel","Location:");
//Error
germanDictionary.put("IOException","Fehler beim lesen der Datei");
englishDictionary.put("IOException","Could not read file");
germanDictionary.put("tournamentExists","Turniername vergeben");
englishDictionary.put("tournamentExists","Tournament exists already");
germanDictionary.put("invalidName","Name nicht gueltig");
englishDictionary.put("invalidName","Name not valid");
germanDictionary.put("invalidMode","Modus nicht gueltig");
englishDictionary.put("invalidMode","Mode not valid");
germanDictionary.put("numberParticipant","Anzahl Spieler muss mindestens 4 sein und eine Potenz von 2");
englishDictionary.put("numberParticipant","Number of players must be greater than 3 and power of 2");
germanDictionary.put("invalidPhone","Telefonnummer nicht gueltig");
englishDictionary.put("invalidPhone","Phonenumber not valid");
germanDictionary.put("invalidDate","Geburtsdatum nicht gueltig");
englishDictionary.put("invalidDate","Birthdate not valid");
germanDictionary.put("participantNotExist","Teilnehmer existiert nicht");
englishDictionary.put("participantNotExist","Participant does not exist");
germanDictionary.put("placeNotExist","Teilnehmer existiert nicht");
englishDictionary.put("placeNotExist","Participant does not exist");
//SaveMsg
germanDictionary.put("save","Zuletzt gespeichert: ");
englishDictionary.put("save","Last saved: ");
//Alert
germanDictionary.put("yes","Ja");
englishDictionary.put("yes","Yes");
germanDictionary.put("no","Nein");
englishDictionary.put("no","No");
germanDictionary.put("titleDelete","Entfernen");
englishDictionary.put("titleDelete","Remove");
germanDictionary.put("headerDelete","Turnier entfernen?");
englishDictionary.put("headerDelete","Delete Tournament?");
germanDictionary.put("contentDelete","Sind Sie sicher, dass sie das Turnier entfernen wollen?\nNach diesem Vorgang kann es nicht wiederhergestellt werden.");
englishDictionary.put("contentDelete","Are you shure you want to delete the tournament?\nAfter that there is no way to restore.");
germanDictionary.put("titleSchedule","Neu erstellen");
englishDictionary.put("titleSchedule","Create new");
germanDictionary.put("headerSchedule","Spielplan neu erstellen?");
englishDictionary.put("headerSchedule","Create new Schedule?");
germanDictionary.put("contentSchedule","Sind Sie sicher, dass Sie den Spielplan neu erstellen moechten?\nAlle Spielfortschritte gehen daraufhin verloren!");
englishDictionary.put("contentSchedule","Are you shure you want to create a new game schedule?\nAll results will be lost!");
} }
public void translateGUI() { public void translateGUI() {
@ -136,6 +178,18 @@ public class LanguageConfigurator {
translateGUI(); translateGUI();
} }
public String getSelectedLanguage(String getMsg) {
String word = "";
switch (selectedLanguage) {
case GERMAN -> word = germanDictionary.getOrDefault(getMsg,"check Logs");
case ENGLISH -> word = englishDictionary.getOrDefault(getMsg,"check Logs");
}
if (word.equals("check Logs")) {
//TODO Log
}
return word;
}
public enum Language { public enum Language {
ENGLISH,GERMAN ENGLISH,GERMAN
} }

View File

@ -61,7 +61,8 @@ public class TournamentDecorator implements IsObservable{
public void saveTournament(){ public void saveTournament(){
executorService.execute(new saveTask()); executorService.execute(new saveTask());
factoryDecorator.clearMessage(false); factoryDecorator.clearMessage(false);
factoryDecorator.printMessageToFooter("Zuletzt gespeichert: " + new Date().toString(),false); String msg = factoryDecorator.getLanguageConfigurator().getSelectedLanguage("save");
factoryDecorator.printMessageToFooter(msg + new Date().toString(),false);
} }
@ -71,7 +72,8 @@ public class TournamentDecorator implements IsObservable{
try { try {
if(fileIO.tournamentExists(name)){ if(fileIO.tournamentExists(name)){
//TODO:Logger //TODO:Logger
factoryDecorator.printMessageToFooter("Turniername existiert bereits",true); String msg = factoryDecorator.getLanguageConfigurator().getSelectedLanguage("tournamentExists");
factoryDecorator.printMessageToFooter(msg, true);
return; return;
} }
Tournament tournament = new Tournament(name, type); Tournament tournament = new Tournament(name, type);
@ -81,16 +83,19 @@ public class TournamentDecorator implements IsObservable{
} catch (InvalidNameException e) { } catch (InvalidNameException e) {
e.printStackTrace(); e.printStackTrace();
//TODO: Logger //TODO: Logger
factoryDecorator.printMessageToFooter("Invalider Turniername",true); String msg = factoryDecorator.getLanguageConfigurator().getSelectedLanguage("invalidName");
factoryDecorator.printMessageToFooter(msg, true);
} catch (Tournament.InvalidTypeException e) { } catch (Tournament.InvalidTypeException e) {
e.printStackTrace(); e.printStackTrace();
//TODO: Logger //TODO: Logger
factoryDecorator.printMessageToFooter("Turniermodus nicht moeglich",true); String msg = factoryDecorator.getLanguageConfigurator().getSelectedLanguage("invalidMode");
factoryDecorator.printMessageToFooter(msg, true);
} catch (IOException e) { } catch (IOException e) {
e.printStackTrace(); e.printStackTrace();
//TODO: Logger //TODO: Logger
factoryDecorator.printMessageToFooter("Fehler bei Dateizugriff",true); String msg = factoryDecorator.getLanguageConfigurator().getSelectedLanguage("IOException");
factoryDecorator.printMessageToFooter(msg, true);
} }
} }
@ -102,7 +107,8 @@ public class TournamentDecorator implements IsObservable{
informListener(); informListener();
} catch (IOException e) { } catch (IOException e) {
e.printStackTrace(); //TODO handle and logging e.printStackTrace(); //TODO handle and logging
factoryDecorator.printMessageToFooter("Fehler bei Dateizugriff",true); String msg = factoryDecorator.getLanguageConfigurator().getSelectedLanguage("IOException");
factoryDecorator.printMessageToFooter(msg, true);
} }
} }
@ -113,7 +119,8 @@ public class TournamentDecorator implements IsObservable{
factoryDecorator.clearMessage(true); factoryDecorator.clearMessage(true);
} catch (Tournament.NumberOfParticipantInvalidException e) { } catch (Tournament.NumberOfParticipantInvalidException e) {
e.printStackTrace(); e.printStackTrace();
factoryDecorator.printMessageToFooter("Anzahl Teilnehmer muss mindestens 4 betragen und eine Potenz von 2 sein.",true); String msg = factoryDecorator.getLanguageConfigurator().getSelectedLanguage("numberParticipant");
factoryDecorator.printMessageToFooter(msg, true);
} }
informListener(); informListener();
} }
@ -125,13 +132,16 @@ public class TournamentDecorator implements IsObservable{
informListener(); informListener();
} catch (InvalidNameException e) { } catch (InvalidNameException e) {
e.printStackTrace(); //TODO handle and logging e.printStackTrace(); //TODO handle and logging
factoryDecorator.printMessageToFooter("Invalider Teilnehmername",true); String msg = factoryDecorator.getLanguageConfigurator().getSelectedLanguage("invalidName");
factoryDecorator.printMessageToFooter(msg, true);
} catch (Person.InvalidPhoneNumberException e) { } catch (Person.InvalidPhoneNumberException e) {
e.printStackTrace(); //TODO handle and logging e.printStackTrace(); //TODO handle and logging
factoryDecorator.printMessageToFooter("Invalide Telefonnummer",true); String msg = factoryDecorator.getLanguageConfigurator().getSelectedLanguage("invalidPhone");
factoryDecorator.printMessageToFooter(msg, true);
} catch (Player.InvalidDateException e) { } catch (Player.InvalidDateException e) {
e.printStackTrace(); e.printStackTrace();
factoryDecorator.printMessageToFooter("Ungueltiges Geburtsdatum", true); String msg = factoryDecorator.getLanguageConfigurator().getSelectedLanguage("invalidDate");
factoryDecorator.printMessageToFooter(msg, true);
} }
} }
@ -142,8 +152,8 @@ public class TournamentDecorator implements IsObservable{
informListener(); informListener();
} catch (Tournament.ParticipantNotExistsException e) { } catch (Tournament.ParticipantNotExistsException e) {
e.printStackTrace(); //TODO handle and logging e.printStackTrace(); //TODO handle and logging
factoryDecorator.printMessageToFooter("Teilnehmer existiert nicht",true); String msg = factoryDecorator.getLanguageConfigurator().getSelectedLanguage("participantNotExist");
factoryDecorator.printMessageToFooter(msg, true);
} }
} }
@ -154,7 +164,8 @@ public class TournamentDecorator implements IsObservable{
informListener(); informListener();
} catch (InvalidNameException e) { } catch (InvalidNameException e) {
e.printStackTrace(); //TODO handle and logging e.printStackTrace(); //TODO handle and logging
factoryDecorator.printMessageToFooter("Invalider Ortsname",true); String msg = factoryDecorator.getLanguageConfigurator().getSelectedLanguage("invalidName");
factoryDecorator.printMessageToFooter(msg, true);
} }
} }
@ -165,7 +176,8 @@ public class TournamentDecorator implements IsObservable{
informListener(); informListener();
} catch (Tournament.PlaceNotExistsException e) { } catch (Tournament.PlaceNotExistsException e) {
e.printStackTrace(); //TODO handle and logging e.printStackTrace(); //TODO handle and logging
factoryDecorator.printMessageToFooter("Ort existiert nicht",true); String msg = factoryDecorator.getLanguageConfigurator().getSelectedLanguage("placeNotExist");
factoryDecorator.printMessageToFooter(msg, true);
} }
} }
@ -190,7 +202,8 @@ public class TournamentDecorator implements IsObservable{
} catch (IOException e) { } catch (IOException e) {
e.printStackTrace(); e.printStackTrace();
Platform.runLater(() -> { Platform.runLater(() -> {
factoryDecorator.printMessageToFooter("Datenzugriff nicht moeglich",true); String msg = factoryDecorator.getLanguageConfigurator().getSelectedLanguage("IOException");
factoryDecorator.printMessageToFooter(msg, true);
}); });
} }
} }

View File

@ -1,20 +1,33 @@
package ch.zhaw.projekt2.turnierverwaltung.main.gameScheduleView; package ch.zhaw.projekt2.turnierverwaltung.main.gameScheduleView;
import ch.zhaw.projekt2.turnierverwaltung.LanguageConfigurator;
import javafx.scene.control.Alert; import javafx.scene.control.Alert;
import javafx.scene.control.ButtonBar; import javafx.scene.control.ButtonBar;
import javafx.scene.control.ButtonType; import javafx.scene.control.ButtonType;
public class AlertNewSchedule extends Alert { public class AlertNewSchedule extends Alert {
private ButtonType yesButton = new ButtonType("Ja", ButtonBar.ButtonData.YES); private ButtonType yesButton;
private ButtonType noButton = new ButtonType("Nein", ButtonBar.ButtonData.NO); private ButtonType noButton;
private boolean result; private Boolean result;
private String yes;
private String no;
private String titleDelete;
private String headerDelete;
private String contentDelete;
public AlertNewSchedule() { public AlertNewSchedule(LanguageConfigurator languageConfigurator){
super(AlertType.WARNING); super(Alert.AlertType.WARNING);
setTitle("Neu erstellen"); yes = languageConfigurator.getSelectedLanguage("yes");
setHeaderText("Spielplan neu erstellen?"); no = languageConfigurator.getSelectedLanguage("no");
setContentText("Sind Sie sicher, dass Sie den Spielplan neu erstellen moechten?\nAlle Spielfortschritte gehen daraufhin verloren!"); titleDelete = languageConfigurator.getSelectedLanguage("titleSchedule");
getButtonTypes().setAll(yesButton,noButton); headerDelete = languageConfigurator.getSelectedLanguage("headerSchedule");
contentDelete = languageConfigurator.getSelectedLanguage("contentSchedule");
yesButton = new ButtonType(yes, ButtonBar.ButtonData.YES);
noButton = new ButtonType(no, ButtonBar.ButtonData.NO);
setTitle(titleDelete);
setHeaderText(headerDelete);
setContentText(contentDelete);
getButtonTypes().setAll(yesButton, noButton);
} }
public boolean showAndGetResult() { public boolean showAndGetResult() {

View File

@ -40,7 +40,7 @@ public class GameScheduleController extends FXController {
@FXML @FXML
void createNewSchedule(ActionEvent event) { void createNewSchedule(ActionEvent event) {
if (getTournamentDecorator().getTournament().getGameList().size() > 0) { if (getTournamentDecorator().getTournament().getGameList().size() > 0) {
AlertNewSchedule alert = new AlertNewSchedule(); AlertNewSchedule alert = new AlertNewSchedule(getLanguageConfigurator());
if (alert.showAndGetResult()) { if (alert.showAndGetResult()) {
getTournamentDecorator().createNewGameSchedule(); getTournamentDecorator().createNewGameSchedule();
} }

View File

@ -1,20 +1,32 @@
package ch.zhaw.projekt2.turnierverwaltung.main.tournamentList; package ch.zhaw.projekt2.turnierverwaltung.main.tournamentList;
import ch.zhaw.projekt2.turnierverwaltung.LanguageConfigurator;
import javafx.scene.control.Alert; import javafx.scene.control.Alert;
import javafx.scene.control.ButtonBar; import javafx.scene.control.ButtonBar;
import javafx.scene.control.ButtonType; import javafx.scene.control.ButtonType;
public class AlertDelete extends Alert { public class AlertDelete extends Alert {
ButtonType yesButton = new ButtonType("Ja", ButtonBar.ButtonData.YES); ButtonType yesButton;
ButtonType noButton = new ButtonType("Nein", ButtonBar.ButtonData.NO); ButtonType noButton;
Boolean result; Boolean result;
String yes;
String no;
String titleDelete;
String headerDelete;
String contentDelete;
public AlertDelete(String name){ public AlertDelete(LanguageConfigurator languageConfigurator){
super(Alert.AlertType.WARNING); super(Alert.AlertType.WARNING);
setTitle("Entfernen"); yes = languageConfigurator.getSelectedLanguage("yes");
setHeaderText("Turnier entfernen?"); no = languageConfigurator.getSelectedLanguage("no");
setContentText("Sind Sie sicher, dass sie das Turnier " + name + " entfernen wollen?\n" + titleDelete = languageConfigurator.getSelectedLanguage("titleDelete");
"Nach diesem Vorgang kann es nicht wiederhergestellt werden."); headerDelete = languageConfigurator.getSelectedLanguage("headerDelete");
contentDelete = languageConfigurator.getSelectedLanguage("contentDelete");
yesButton = new ButtonType(yes, ButtonBar.ButtonData.YES);
noButton = new ButtonType(no, ButtonBar.ButtonData.NO);
setTitle(titleDelete);
setHeaderText(headerDelete);
setContentText(contentDelete);
getButtonTypes().setAll(yesButton, noButton); getButtonTypes().setAll(yesButton, noButton);
} }

View File

@ -78,7 +78,7 @@ public class TournamentListController extends FXController {
@FXML @FXML
void deleteTournament(ActionEvent event) { void deleteTournament(ActionEvent event) {
FileIO.TournamentFile tournamentFile = tournamentListView.getSelectionModel().getSelectedItems().get(0); FileIO.TournamentFile tournamentFile = tournamentListView.getSelectionModel().getSelectedItems().get(0);
AlertDelete alert = new AlertDelete(tournamentFile.toString()); AlertDelete alert = new AlertDelete(getLanguageConfigurator());
if(alert.showAndGetResult()){ if(alert.showAndGetResult()){
getTournamentDecorator().deleteTournament(tournamentFile); getTournamentDecorator().deleteTournament(tournamentFile);
} }