Jelajahi Sumber

update 2024-01-21

Axel Nordh 2 tahun lalu
induk
melakukan
a2b13662c0

+ 1 - 1
Odds/Odds.iml

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <module version="4">
   <component name="SonarLintModuleSettings">
-    <option name="uniqueId" value="d6b144e4-d932-4b3a-92c5-6159fd59636c" />
+    <option name="uniqueId" value="0f58a5e2-52b9-4137-87af-0561a4cb0f0f" />
   </component>
 </module>

+ 0 - 1
Odds/pom.xml

@@ -33,7 +33,6 @@
                             <mainClass>main.Main</mainClass>
                         </transformer>
                     </transformers>
-                  <minimizeJar>true</minimizeJar>
                   <filters>
                     <filter>
                       <artifact>*:*</artifact>

+ 6 - 0
OddsJavaFx/OddsFx.iml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module version="4">
+  <component name="SonarLintModuleSettings">
+    <option name="uniqueId" value="a1175abb-cb66-4bbb-b5f6-83a865cc592f" />
+  </component>
+</module>

+ 126 - 88
OddsJavaFx/src/controllers/AnalysisTestController.java

@@ -37,6 +37,14 @@ import objects.bets.Bet.Status;
 @SuppressWarnings("rawtypes")
 public class AnalysisTestController implements Initializable {
 
+    public static final String STATS_LEAGUE_NAME = "statsLeagueName";
+    public static final String STATS_HOME_WIN = "statHomeWin";
+    public static final String STATS_HOME_LOSS = "statsHomeLoss";
+    public static final String STATS_AWAY_WIN = "statsAwayWin";
+    public static final String STATS_AWAY_LOSS = "statsAwayLoss";
+    public static final String STATS_HOME_PERCENT = "statsHomePercent";
+    public static final String STATS_AWAY_PERCENT = "statsAwayPercent";
+    public static final String STATS_TOTAL_PERCENT = "statsTotalPercent";
     private static final float MIN_COVER_ODDS = 1.25f;
     private static final float MAX_COVER_ODDS = 2.25f;
     private static final DecimalFormat FLOAT_FORMATTER = new DecimalFormat("0.00");
@@ -140,7 +148,8 @@ public class AnalysisTestController implements Initializable {
 
         matchBetAmountColumn.setCellValueFactory(new PropertyValueFactory<>("betAmount"));
 
-        Callback<TableColumn<SoccerMatch, Void>, TableCell<SoccerMatch, Void>> cellFactory = new Callback<TableColumn<SoccerMatch, Void>, TableCell<SoccerMatch, Void>>() {
+        Callback<TableColumn<SoccerMatch, Void>, TableCell<SoccerMatch, Void>> cellFactory =
+                new Callback<TableColumn<SoccerMatch, Void>, TableCell<SoccerMatch, Void>>() {
             @Override
             public TableCell<SoccerMatch, Void> call(final TableColumn<SoccerMatch, Void> param) {
                 return new TableCell<SoccerMatch, Void>() {
@@ -202,15 +211,15 @@ public class AnalysisTestController implements Initializable {
 
         getActiveBets();
 
-        statsLeagueNameColumn.setCellValueFactory(new MapValueFactory<>("statsLeagueName"));
-        statsHomeWinColumn.setCellValueFactory(new MapValueFactory<>("statsHomeWin"));
-        statsHomeLossColumn.setCellValueFactory(new MapValueFactory<>("statsHomeLoss"));
-        statsAwayWinColumn.setCellValueFactory(new MapValueFactory<>("statsAwayWin"));
-        statsAwayLossColumn.setCellValueFactory(new MapValueFactory<>("statsAwayLoss"));
+        statsLeagueNameColumn.setCellValueFactory(new MapValueFactory<>(STATS_LEAGUE_NAME));
+        statsHomeWinColumn.setCellValueFactory(new MapValueFactory<>(STATS_HOME_WIN));
+        statsHomeLossColumn.setCellValueFactory(new MapValueFactory<>(STATS_HOME_LOSS));
+        statsAwayWinColumn.setCellValueFactory(new MapValueFactory<>(STATS_AWAY_WIN));
+        statsAwayLossColumn.setCellValueFactory(new MapValueFactory<>(STATS_AWAY_LOSS));
 
-        statsHomePercentColumn.setCellValueFactory(new MapValueFactory<>("statsHomePercent"));
-        statsAwayPercentColumn.setCellValueFactory(new MapValueFactory<>("statsAwayPercent"));
-        statsTotalPercentColumn.setCellValueFactory(new MapValueFactory<>("statsTotalPercent"));
+        statsHomePercentColumn.setCellValueFactory(new MapValueFactory<>(STATS_HOME_PERCENT));
+        statsAwayPercentColumn.setCellValueFactory(new MapValueFactory<>(STATS_AWAY_PERCENT));
+        statsTotalPercentColumn.setCellValueFactory(new MapValueFactory<>(STATS_TOTAL_PERCENT));
 
         initializeStatsPanel();
     }
@@ -227,13 +236,13 @@ public class AnalysisTestController implements Initializable {
         gameViewTable.getItems().addAll(currentMatches);
     }
 
-    private void SetAnalyzisValue(SoccerMatch soccerMatch) {
+    private void setAnalyzisValue(SoccerMatch soccerMatch) {
         int analyzeValue = getAnalyzeValue(soccerMatch);
         soccerMatch.setAnalysisValue(analyzeValue);
     }
 
     private void addToBets(SoccerMatch data) {
-        if (data.getAnalysisValueInt() > 0) {
+        if (data.getAnalysisValueInt() > 0f) {
             setNewBet(data, true);
         } else if (data.getAnalysisValueInt() < 0f) {
             setNewBet(data, false);
@@ -259,7 +268,7 @@ public class AnalysisTestController implements Initializable {
     }
 
     @FXML
-    private void CheckBetsAction() {
+    private void checkBetsAction() {
         activeBetsTable.getItems().stream().filter(p -> p.getStatus() == Bet.Status.OPEN).forEach(this::checkBet);
         activeBetsTable.refresh();
         updateBetAmount();
@@ -272,9 +281,7 @@ public class AnalysisTestController implements Initializable {
 
             final float betAmount = Float.parseFloat(FLOAT_FORMATTER.format(bankValue * (betPercent / 100f)));
             currentBetAmount = betAmount;
-            gameViewTable.getItems().forEach(i -> {
-                i.setBetAmount(betAmount);
-            });
+            gameViewTable.getItems().forEach(i -> i.setBetAmount(betAmount));
             gameViewTable.refresh();
 
         } catch (NumberFormatException e) {
@@ -285,10 +292,22 @@ public class AnalysisTestController implements Initializable {
     private void getActiveBets() {
         List<Bet> analysisBets = GuiMysql.getInstance().getAnalysisBets();
 
+        analysisBets.forEach(b -> b.setBetCoveredNumber(getCoveredBets(b)));
+
         activeBetsTable.getItems().addAll(analysisBets);
         activeBetsTable.refresh();
     }
 
+    private int getCoveredBets(Bet b) {
+        int returnValue = 0;
+        if (b.getCoveredBetId() > 0) {
+            returnValue += getCoveredBets(GuiMysql.getInstance().getAnalysisBet(b.getCoveredBetId()));
+            returnValue++;
+        }
+
+        return returnValue;
+    }
+
     private Integer getAnalyzeValue(SoccerMatch soccerMatch) {
         int result = 0;
 
@@ -311,10 +330,8 @@ public class AnalysisTestController implements Initializable {
             int winLossRatioDiff = homeWinLossRatioCount - awayWinLossRatioCount;
             int scoringTotalDiff = homeScoringTotal - awayScoringTotal;
 
-            if (scoringDiffLastGames < 0 && winsCountDiff < 0 && winLossRatioDiff < 0 && scoringTotalDiff < 0) {
-                result = (scoringDiffLastGames + winsCountDiff + winLossRatioDiff + scoringTotalDiff) / 4;
-            } else if (scoringDiffLastGames > 0 && winsCountDiff > 0 && winLossRatioDiff > 0
-                    && scoringTotalDiff > 0) {
+            if ((scoringDiffLastGames < 0 && winsCountDiff < 0 && winLossRatioDiff < 0 && scoringTotalDiff < 0) ||
+                    scoringDiffLastGames > 0 && winsCountDiff > 0 && winLossRatioDiff > 0 && scoringTotalDiff > 0) {
                 result = (scoringDiffLastGames + winsCountDiff + winLossRatioDiff + scoringTotalDiff) / 4;
             }
         }
@@ -331,9 +348,9 @@ public class AnalysisTestController implements Initializable {
     }
 
     @FXML
-    private void GetMatchesAction() {
+    private void getMatchesAction() {
         List<SoccerMatch> matches = GuiMysql.getInstance().getMatches(1, date.getValue().toString(), "ASC", true);
-        matches.forEach(m -> SetAnalyzisValue(m));
+        matches.forEach(this::setAnalyzisValue);
         matches = matches.stream().filter(m -> !m.getAnalysisValue().equals("No Bet")).toList();
         addMatchesToTable(matches);
     }
@@ -343,15 +360,11 @@ public class AnalysisTestController implements Initializable {
         float currentDebt = 0f;
         float result = currentBetAmount;
 
-        boolean isHomeBet = newValue.getAnalysisValueInt() > 0 && newValue.getOdds1() > MIN_COVER_ODDS
-                && newValue.getOdds1() < MAX_COVER_ODDS;
-        boolean isAwayBet = newValue.getAnalysisValueInt() < 0 && newValue.getOdds2() > MIN_COVER_ODDS
-                && newValue.getOdds2() < MAX_COVER_ODDS;
-
-        if ((isHomeBet || isAwayBet) &&
-                activeBetsTable.getItems().stream().anyMatch(p -> p.getStatus() == Bet.Status.LOST)) {
-            Bet bet = activeBetsTable.getItems().stream().filter(p -> p.getStatus() == Bet.Status.LOST).findFirst()
-                    .get();
+        boolean activeBet = isActiveBet(newValue);
+        Optional<Bet> oBet =
+                activeBetsTable.getItems().stream().filter(p -> p.getStatus() == Bet.Status.LOST).findFirst();
+        if (activeBet && oBet.isPresent()) {
+            Bet bet = oBet.get();
 
             Bet tempBet = bet;
             int betCoverNumber = 0;
@@ -375,7 +388,7 @@ public class AnalysisTestController implements Initializable {
             }
 
             if (currentDebt > 0f && odds > 0f) {
-                result = currentDebt / (odds - 1f); // + currentBetAmount;
+                result = currentDebt / (odds - 1f);
             } else if (newValue.getBetAmount() != null) {
                 result = newValue.getBetAmount();
             }
@@ -384,6 +397,15 @@ public class AnalysisTestController implements Initializable {
         return Float.parseFloat(FLOAT_FORMATTER.format(result));
     }
 
+    private boolean isActiveBet(SoccerMatch newValue) {
+        boolean isHomeBet = newValue.getAnalysisValueInt() > 0 && newValue.getOdds1() > MIN_COVER_ODDS
+                && newValue.getOdds1() < MAX_COVER_ODDS;
+        boolean isAwayBet = newValue.getAnalysisValueInt() < 0 && newValue.getOdds2() > MIN_COVER_ODDS
+                && newValue.getOdds2() < MAX_COVER_ODDS;
+
+        return isHomeBet || isAwayBet;
+    }
+
     private void initializeStatsPanel() {
         List<Bet> bets = GuiMysql.getInstance().getAnalysisBetStatistics();
         for (Bet bet : bets) {
@@ -392,7 +414,7 @@ public class AnalysisTestController implements Initializable {
     }
 
     @FXML
-    private void RemoveDoneBetsAction() {
+    private void removeDoneBetsAction() {
         List<Bet> doneBets = activeBetsTable.getItems().stream()
                 .filter(p -> p.getStatus() == Status.DONE || p.getStatus() == Status.COVERED)
                 .toList();
@@ -419,6 +441,7 @@ public class AnalysisTestController implements Initializable {
             int betId = GuiMysql.getInstance().addAnalysisBet(bet);
             data.getPreviousBet().setStatus(Status.COVERED);
             bet.setCoveredBetId(data.getPreviousBet().getId());
+            bet.setBetCoveredNumber(bet.getBetCoveredNumber() + 1);
             GuiMysql.getInstance().setBetCovered(betId, bet.getCoveredBetId());
 
             try {
@@ -448,9 +471,9 @@ public class AnalysisTestController implements Initializable {
 
     private void updateBetAmount() {
         if (!bettingPercentTextField.getText().isEmpty()) {
-            float betLevel = Float.parseFloat(bettingPercentTextField.getText());
+            float betLevel = Float.parseFloat(bettingPercentTextField.getText().replace(",", "."));
             currentBetAmount = Float.parseFloat(FLOAT_FORMATTER.format(
-                    getBank() * (betLevel / 100f)).replace(",","."));
+                    getBank() * (betLevel / 100f)).replace(",", "."));
         }
     }
 
@@ -458,74 +481,89 @@ public class AnalysisTestController implements Initializable {
         String leagueName = b.getMatch().getLeagueName();
 
         Optional<Map<String, Object>> leagueStatsRow = leagueBetStatsTable.getItems().stream()
-                .filter(p -> p.get("statsLeagueName") != null && leagueName.equals(p.get("statsLeagueName")))
+                .filter(p -> p.get(STATS_LEAGUE_NAME) != null && leagueName.equals(p.get(STATS_LEAGUE_NAME)))
                 .findFirst();
 
         if (leagueStatsRow.isEmpty()) {
-            Map<String, Object> newItem = new HashMap<>();
-            newItem.put("statsLeagueName", leagueName);
-            newItem.put("statsHomeWin", b.isBetOnHomeTeam() && b.getHomeScore() > b.getAwayScore() ? 1 : 0);
-            newItem.put("statsHomeLoss",
-                    b.isBetOnHomeTeam() && (b.getHomeScore() < b.getAwayScore() || b.getHomeScore() == b.getAwayScore())
-                            ? 1
-                            : 0);
-            int statsHomeWin = (int) newItem.get("statsHomeWin");
-            int statsHomeLoss = (int) newItem.get("statsHomeLoss");
-            if (statsHomeWin > 0 || statsHomeLoss > 0) {
-                newItem.put("statsHomePercent", (statsHomeWin / (float) (statsHomeWin + statsHomeLoss)) * 100);
-            }
-            newItem.put("statsAwayWin", b.isBetOnAwayTeam() && b.getHomeScore() < b.getAwayScore() ? 1 : 0);
-            newItem.put("statsAwayLoss",
-                    b.isBetOnAwayTeam() && (b.getHomeScore() > b.getAwayScore() || b.getHomeScore() == b.getAwayScore())
-                            ? 1
-                            : 0);
-
-            int statsAwayWin = (int) newItem.get("statsAwayWin");
-            int statsAwayLoss = (int) newItem.get("statsAwayLoss");
-            if (statsAwayWin > 0 || statsAwayLoss > 0) {
-                newItem.put("statsAwayPercent", (statsAwayWin / (float) (statsAwayWin + statsAwayLoss)) * 100);
-            }
-            if (statsHomeWin + statsHomeLoss + statsAwayWin + statsAwayLoss > 0) {
-                newItem.put("statsTotalPercent",
-                        ((statsHomeWin + statsAwayWin)
-                                / (float) (statsHomeWin + statsHomeLoss + statsAwayWin + statsAwayLoss)) * 100);
-            }
+            Map<String, Object> newItem = createNewStatRow(b, leagueName);
             ObservableList<Map<String, Object>> items = leagueBetStatsTable.getItems();
 
             items.add(newItem);
         } else {
             Map<String, Object> map = leagueStatsRow.get();
-            if (b.isBetOnHomeTeam() && b.getHomeScore() > b.getAwayScore()) {
-                map.put("statsHomeWin", (int) map.get("statsHomeWin") + 1);
-            } else if (b.isBetOnHomeTeam()
-                    && (b.getHomeScore() < b.getAwayScore() || b.getHomeScore() == b.getAwayScore())) {
-                map.put("statsHomeLoss", (int) map.get("statsHomeLoss") + 1);
-            } else if (b.isBetOnAwayTeam() && b.getHomeScore() < b.getAwayScore()) {
-                map.put("statsAwayWin", (int) map.get("statsAwayWin") + 1);
-            } else if (b.isBetOnAwayTeam()
-                    && (b.getHomeScore() > b.getAwayScore() || b.getHomeScore() == b.getAwayScore())) {
-                map.put("statsAwayLoss", (int) map.get("statsAwayLoss") + 1);
+            boolean isHomeWin = isHomeWin(b);
+            boolean isAwayWin = isAwayWin(b);
+            if (b.isBetOnHomeTeam() && isHomeWin) {
+                map.put(STATS_HOME_WIN, (int) map.get(STATS_HOME_WIN) + 1);
+            } else if (b.isBetOnHomeTeam() && !isHomeWin) {
+                map.put(STATS_HOME_LOSS, (int) map.get(STATS_HOME_LOSS) + 1);
+            } else if (b.isBetOnAwayTeam() && isAwayWin) {
+                map.put(STATS_AWAY_WIN, (int) map.get(STATS_AWAY_WIN) + 1);
+            } else if (b.isBetOnAwayTeam() && !isAwayWin) {
+                map.put(STATS_AWAY_LOSS, (int) map.get(STATS_AWAY_LOSS) + 1);
             }
 
-            int statsHomeWin = (int) map.get("statsHomeWin");
-            int statsHomeLoss = (int) map.get("statsHomeLoss");
-            if (statsHomeWin > 0 || statsHomeLoss > 0) {
-                map.put("statsHomePercent", (statsHomeWin / (float) (statsHomeWin + statsHomeLoss)) * 100);
-            }
-            int statsAwayWin = (int) map.get("statsAwayWin");
-            int statsAwayLoss = (int) map.get("statsAwayLoss");
-            if (statsAwayWin > 0 || statsAwayLoss > 0) {
-                map.put("statsAwayPercent", (statsAwayWin / (float) (statsAwayWin + statsAwayLoss)) * 100);
-            }
-            if (statsHomeWin + statsHomeLoss + statsAwayWin + statsAwayLoss > 0) {
-                map.put("statsTotalPercent",
-                        ((statsHomeWin + statsAwayWin)
-                                / (float) (statsHomeWin + statsHomeLoss + statsAwayWin + statsAwayLoss)) * 100);
-            }
+            setStatWinPercents(map);
 
             leagueBetStatsTable.getItems().set(leagueBetStatsTable.getItems().indexOf(map), map);
         }
         leagueBetStatsTable.refresh();
     }
 
+    private static void setStatWinPercents(Map<String, Object> map) {
+        int statsHomeWin = (int) map.get(STATS_HOME_WIN);
+        int statsHomeLoss = (int) map.get(STATS_HOME_LOSS);
+        if (statsHomeWin > 0 || statsHomeLoss > 0) {
+            map.put(STATS_HOME_PERCENT, (statsHomeWin / (float) (statsHomeWin + statsHomeLoss)) * 100);
+        }
+        int statsAwayWin = (int) map.get(STATS_AWAY_WIN);
+        int statsAwayLoss = (int) map.get(STATS_AWAY_LOSS);
+        if (statsAwayWin > 0 || statsAwayLoss > 0) {
+            map.put(STATS_AWAY_PERCENT, (statsAwayWin / (float) (statsAwayWin + statsAwayLoss)) * 100);
+        }
+        if (statsHomeWin + statsHomeLoss + statsAwayWin + statsAwayLoss > 0) {
+            map.put(STATS_TOTAL_PERCENT,
+                    ((statsHomeWin + statsAwayWin)
+                            / (float) (statsHomeWin + statsHomeLoss + statsAwayWin + statsAwayLoss)) * 100);
+        }
+    }
+
+    private boolean isAwayWin(Bet b) {
+        return b.getHomeScore() < b.getAwayScore();
+    }
+
+    private Map<String, Object> createNewStatRow(Bet b, String leagueName) {
+        boolean homeWin = isHomeWin(b);
+        Map<String, Object> newItem = new HashMap<>();
+        newItem.put(STATS_LEAGUE_NAME, leagueName);
+        newItem.put(STATS_HOME_WIN, homeWin ? 1 : 0);
+        newItem.put(STATS_HOME_LOSS, !homeWin ? 1 : 0);
+        int statsHomeWin = (int) newItem.get(STATS_HOME_WIN);
+        int statsHomeLoss = (int) newItem.get(STATS_HOME_LOSS);
+        if (statsHomeWin > 0 || statsHomeLoss > 0) {
+            newItem.put(STATS_HOME_PERCENT, (statsHomeWin / (float) (statsHomeWin + statsHomeLoss)) * 100);
+        }
+        newItem.put(STATS_AWAY_WIN, b.isBetOnAwayTeam() && b.getHomeScore() < b.getAwayScore() ? 1 : 0);
+        newItem.put(STATS_AWAY_LOSS,
+                b.isBetOnAwayTeam() && (b.getHomeScore() > b.getAwayScore() || b.getHomeScore() == b.getAwayScore())
+                        ? 1
+                        : 0);
+
+        int statsAwayWin = (int) newItem.get(STATS_AWAY_WIN);
+        int statsAwayLoss = (int) newItem.get(STATS_AWAY_LOSS);
+        if (statsAwayWin > 0 || statsAwayLoss > 0) {
+            newItem.put(STATS_AWAY_PERCENT, (statsAwayWin / (float) (statsAwayWin + statsAwayLoss)) * 100);
+        }
+        if (statsHomeWin + statsHomeLoss + statsAwayWin + statsAwayLoss > 0) {
+            newItem.put(STATS_TOTAL_PERCENT,
+                    ((statsHomeWin + statsAwayWin)
+                            / (float) (statsHomeWin + statsHomeLoss + statsAwayWin + statsAwayLoss)) * 100);
+        }
+        return newItem;
+    }
+
+    private boolean isHomeWin(Bet b) {
+        return b.getHomeScore() > b.getAwayScore();
+    }
+
 }

+ 1 - 2
OddsJavaFx/src/data/GuiMysql.java

@@ -1312,14 +1312,13 @@ public class GuiMysql extends Mysql {
     public SoccerMatch getMatch(String date, String homeTeamName, String awayTeamName) {
         SoccerMatch match = new SoccerMatch();
         String sql = "SELECT * FROM SoccerResults sr " + "JOIN Team ht ON ht.id = sr.homeTeamId " + "JOIN Team awt ON" +
-                " awt.id = sr.awayTeamId " + "WHERE DATE(sr.gameDate) = ? AND (ht.name LIKE ? OR awt.name LIKE ?)";
+                " awt.id = sr.awayTeamId " + "WHERE DATE(sr.gameDate) = ? AND (ht.name LIKE ? AND awt.name LIKE ?)";
         try (PreparedStatement stat = conn.prepareStatement(sql)) {
             stat.setString(1, date);
             stat.setString(2, homeTeamName);
             stat.setString(3, awayTeamName);
 
             ResultSet rs = stat.executeQuery();
-
             while (rs.next()) {
                 match = new SoccerMatch(rs.getInt("id"), getTeam(rs.getInt(HOME_TEAM_ID)), getTeam(rs.getInt(
                         AWAY_TEAM_ID)), rs.getFloat(ODDS_1), rs.getFloat(ODDS_X), rs.getFloat(ODDS_2), rs.getInt(

+ 3 - 3
OddsJavaFx/src/fxml/AnalysisTesting.fxml

@@ -20,7 +20,7 @@
                   <TextField fx:id="bankTextField" promptText="Bank" />
                   <TextField fx:id="bettingPercentTextField" promptText="Betting percent" />
                   <DatePicker fx:id="date" />
-                  <Button fx:id="getMatchesButton" mnemonicParsing="false" onAction="#GetMatchesAction" text="Get Matches" />
+                  <Button fx:id="getMatchesButton" mnemonicParsing="false" onAction="#getMatchesAction" text="Get Matches" />
                </children>
             </FlowPane>
             <SplitPane dividerPositions="0.5" orientation="VERTICAL">
@@ -51,8 +51,8 @@
                                  <children>
                                     <VBox prefHeight="339.0" prefWidth="129.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
                                        <children>
-                                          <Button fx:id="checkBetsButton" mnemonicParsing="false" onAction="#CheckBetsAction" text="Check bets" />
-                                          <Button mnemonicParsing="false" onAction="#RemoveDoneBetsAction" text="Remove Done bets" />
+                                          <Button fx:id="checkBetsButton" mnemonicParsing="false" onAction="#checkBetsAction" text="Check bets" />
+                                          <Button mnemonicParsing="false" onAction="#removeDoneBetsAction" text="Remove Done bets" />
                                           <TableView fx:id="leagueBetStatsTable" prefHeight="200.0" prefWidth="200.0">
                                             <columns>
                                               <TableColumn fx:id="statsLeagueNameColumn" prefWidth="75.0" text="League" />

+ 21 - 9
OddsJavaFx/src/parser/Svenskaspel.java

@@ -9,19 +9,22 @@ import org.openqa.selenium.WebDriver;
 import org.openqa.selenium.WebElement;
 import org.openqa.selenium.chrome.ChromeDriver;
 import org.openqa.selenium.chrome.ChromeOptions;
-import org.openqa.selenium.support.ui.ExpectedConditions;
-import org.openqa.selenium.support.ui.WebDriverWait;
 
-import java.time.Duration;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
+import java.util.*;
 
 public class Svenskaspel {
 
     String matchesXPATH = "//div[@class = 'pg_coupon_static__event_container']";
     String date;
 
+    Map<String, String> nameReplace = Map.ofEntries(
+            new AbstractMap.SimpleEntry<String, String>("manchester united", "Manchester Utd"),
+            new AbstractMap.SimpleEntry<String, String>("queens park rangers", "QPR"),
+            new AbstractMap.SimpleEntry<String, String>("west bromwich", "West Brom"),
+            new AbstractMap.SimpleEntry<String, String>("blackburn rovers", "Blackburn"),
+            new AbstractMap.SimpleEntry<String, String>("nottingham forest", "Nottingham"),
+            new AbstractMap.SimpleEntry<String, String>("wolverhampton", "Wolves"));
+
     public List<SoccerMatchAnalysis> GetStryktipsetSelenium(String date) {
         this.date = date;
         String url = "https://spela.svenskaspel.se/stryktipset/resultat/" + date + "/statistik";
@@ -55,9 +58,18 @@ public class Svenskaspel {
         List<WebElement> matches = driver.findElements(By.xpath(matchesXPATH));
         for (WebElement match : matches) {
             List<String> teamNames = GetNames(match);
+            String homeTeamName = teamNames.get(0);
+            String awayTeamName = teamNames.get(1);
+            System.out.println("Match: " + homeTeamName + " " + awayTeamName);
+            if (nameReplace.containsKey(homeTeamName.toLowerCase())) {
+                homeTeamName = nameReplace.get(homeTeamName.toLowerCase());
+            }
+            if (nameReplace.containsKey(awayTeamName.toLowerCase())) {
+                awayTeamName = nameReplace.get(awayTeamName.toLowerCase());
+            }
             soccerMatches.add(GuiMysql.getInstance().getMatch(date,
-                    teamNames.get(0).trim().replace(" ", "%") + "%",
-                    teamNames.get(1).trim().replace(" ", "%") + "%"));
+                    homeTeamName.trim().replace(" ", "%") + "%",
+                    awayTeamName.trim().replace(" ", "%") + "%"));
         }
 
         for (SoccerMatch match : soccerMatches) {
@@ -95,7 +107,7 @@ public class Svenskaspel {
     }
 
     private void CloseCookiePopup(WebDriver driver) {
-        WebElement acceptButton = driver.findElement(By.xpath("//button[contains(@class,'primary')]"));
+        WebElement acceptButton = driver.findElement(By.xpath("//button[@id='onetrust-accept-btn-handler']"));
         acceptButton.click();
     }