From 47103c647c8520d50c96b8248d5cae6e1de49666 Mon Sep 17 00:00:00 2001 From: GAM Date: Mon, 8 Mar 2021 10:25:12 +0100 Subject: [PATCH] bold names work without bug --- .../application/utils/StringUtils.java | 34 +++++++++++++++++++ .../application/utils/VaadinUtils.java | 11 +++--- .../views/results/ResultsView.java | 17 ++++------ 3 files changed, 48 insertions(+), 14 deletions(-) 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); }