diff --git a/src/main/java/com/example/application/utils/StringUtils.java b/src/main/java/com/example/application/utils/StringUtils.java
index 75feb50..15b53d7 100644
--- a/src/main/java/com/example/application/utils/StringUtils.java
+++ b/src/main/java/com/example/application/utils/StringUtils.java
@@ -1,9 +1,18 @@
package com.example.application.utils;
+import org.apache.commons.lang3.RandomStringUtils;
+
+import java.util.HashSet;
+import java.util.Set;
+
public class StringUtils {
private StringUtils() {
}
+ ////////////////
+ // Formatting //
+ ////////////////
+
public static String getResultString(Double first, Double second) {
String firstString = first.toString().replace(".0", "");
String secondString = second.toString().replace(".0", "");
@@ -22,4 +31,29 @@ public class StringUtils {
public static String getHtmlStringForPlayer(String playerName, String playerNickname) {
return String.format("%s (%s)", playerName, playerNickname);
}
+
+ public static String getTemplateItemString(String propertyName) {
+ return String.format("[[item.%s]]", propertyName);
+ }
+
+ ////////////////
+ // Randomness //
+ ////////////////
+
+ private static final int RANDOM_STRING_LENGTH = 10;
+ private static final Set usedRandomStrings = new HashSet<>();
+
+ public static String getNewRandomString() {
+ String randomString = getRandomString();
+ while (usedRandomStrings.contains(randomString)) {
+ randomString = getRandomString();
+ }
+ usedRandomStrings.add(randomString);
+ return randomString;
+ }
+
+ private static String getRandomString() {
+ return RandomStringUtils.randomAlphabetic(RANDOM_STRING_LENGTH);
+ }
+
}
diff --git a/src/main/java/com/example/application/utils/VaadinUtils.java b/src/main/java/com/example/application/utils/VaadinUtils.java
index 124ab58..d43bb27 100644
--- a/src/main/java/com/example/application/utils/VaadinUtils.java
+++ b/src/main/java/com/example/application/utils/VaadinUtils.java
@@ -9,9 +9,12 @@ public class VaadinUtils {
}
public static TemplateRenderer getPlayerRenderer(ValueProvider playerProvider) {
- return TemplateRenderer.of(StringUtils.getHtmlStringForPlayer("[[item.name]]", "[[item.nickname]]"))
- .withProperty("name", (ValueProvider) source -> playerProvider.apply(source).getName())
- .withProperty("nickname", (ValueProvider) source -> playerProvider.apply(source).getNickname());
+ String name = StringUtils.getNewRandomString();
+ String nickname = StringUtils.getNewRandomString();
+ String itemName = StringUtils.getTemplateItemString(name);
+ String itemNickname = StringUtils.getTemplateItemString(nickname);
+ return TemplateRenderer.of(StringUtils.getHtmlStringForPlayer(itemName, itemNickname))
+ .withProperty(name, (ValueProvider) source -> playerProvider.apply(source).getName())
+ .withProperty(nickname, (ValueProvider) source -> playerProvider.apply(source).getNickname());
}
-
}
diff --git a/src/main/java/com/example/application/views/results/ResultsView.java b/src/main/java/com/example/application/views/results/ResultsView.java
index 2c93afe..0fba51a 100644
--- a/src/main/java/com/example/application/views/results/ResultsView.java
+++ b/src/main/java/com/example/application/views/results/ResultsView.java
@@ -1,7 +1,6 @@
package com.example.application.views.results;
import com.example.application.data.bean.CalculatedMatch;
-import com.example.application.data.entity.Player;
import com.example.application.data.service.MatchService;
import com.example.application.data.service.MatchdayService;
import com.example.application.data.service.SeasonService;
@@ -9,7 +8,8 @@ import com.example.application.utils.StringUtils;
import com.example.application.utils.VaadinUtils;
import com.example.application.views.abstractnavigation.SeasonAndMatchdayNavigationView;
import com.example.application.views.main.MainView;
-import com.vaadin.flow.component.*;
+import com.vaadin.flow.component.ClickEvent;
+import com.vaadin.flow.component.ComponentEventListener;
import com.vaadin.flow.component.button.Button;
import com.vaadin.flow.component.dependency.CssImport;
import com.vaadin.flow.component.grid.ColumnTextAlign;
@@ -21,9 +21,9 @@ import com.vaadin.flow.component.icon.VaadinIcon;
import com.vaadin.flow.component.orderedlayout.FlexComponent;
import com.vaadin.flow.component.orderedlayout.HorizontalLayout;
import com.vaadin.flow.component.orderedlayout.VerticalLayout;
-import com.vaadin.flow.data.renderer.TemplateRenderer;
import com.vaadin.flow.function.ValueProvider;
-import com.vaadin.flow.router.*;
+import com.vaadin.flow.router.PageTitle;
+import com.vaadin.flow.router.Route;
import org.springframework.beans.factory.annotation.Autowired;
@CssImport("./views/results/results-view.css")
@@ -102,7 +102,7 @@ public class ResultsView extends SeasonAndMatchdayNavigationView {
}
private void configureMatchdayLayout() {
- getMatchdayHeader().addClassName("big_header"); // add dates
+ getMatchdayHeader().addClassName("big_header"); // TODO: add dates
getMatchdayLayout().setPadding(false);
getMatchdayLayout().add(getMatchdayHeader(), getGrid());
@@ -114,8 +114,7 @@ public class ResultsView extends SeasonAndMatchdayNavigationView {
Label headerPlayer2 = new Label("Player 2");
headerPlayer2.addClassName("column_header");
-// getGrid().addColumn(VaadinUtils.getPlayerRenderer(CalculatedMatch::getPlayer1))
- getGrid().addColumn((ValueProvider) CalculatedMatch::getPlayer1)
+ getGrid().addColumn(VaadinUtils.getPlayerRenderer(CalculatedMatch::getPlayer1))
.setHeader(headerPlayer1)
.setTextAlign(ColumnTextAlign.END)
.setWidth("13em");
@@ -125,8 +124,7 @@ public class ResultsView extends SeasonAndMatchdayNavigationView {
.setTextAlign(ColumnTextAlign.CENTER)
.setWidth("6em");
-// getGrid().addColumn(VaadinUtils.getPlayerRenderer(CalculatedMatch::getPlayer2))
- getGrid().addColumn((ValueProvider) CalculatedMatch::getPlayer2)
+ getGrid().addColumn(VaadinUtils.getPlayerRenderer(CalculatedMatch::getPlayer2))
.setHeader(headerPlayer2)
.setTextAlign(ColumnTextAlign.START)
.setWidth("13em");
@@ -134,7 +132,6 @@ public class ResultsView extends SeasonAndMatchdayNavigationView {
getGrid().setWidth("32em");
getGrid().setHeightByRows(true);
-// getGrid().addClassName("my_grid");
getGrid().addThemeVariants(GridVariant.LUMO_NO_BORDER,
GridVariant.LUMO_NO_ROW_BORDERS, GridVariant.LUMO_ROW_STRIPES);
}