Bladeren bron

Percentages added

Axel Nordh 4 jaren geleden
bovenliggende
commit
c8fce2843f

+ 13 - 2
OddsJavaFx/src/controllers/TestsController.java

@@ -23,10 +23,11 @@ import javafx.scene.control.ScrollPane;
 import javafx.scene.control.TextField;
 import javafx.scene.layout.AnchorPane;
 import parser.OddsPortal;
+import tests.AwayTeamWinTest;
 import tests.AwayTests;
 import tests.DrawTests;
 import tests.HomeDrawAwayTest;
-import tests.HomeTeamTest;
+import tests.HomeTeamWinTest;
 import tests.HomeTests;
 import tests.LastResultsTest;
 import tests.PrioCountriesAll;
@@ -55,6 +56,7 @@ public class TestsController implements Initializable {
 	@FXML Button awayTest;
 	@FXML Button homeDrawAwayTest;
 	@FXML Button homeTeamTest;
+	@FXML Button awayTeamTest;
 
 
 	ObservableList<String> countries = FXCollections.observableArrayList();
@@ -301,7 +303,16 @@ public class TestsController implements Initializable {
 
 	@FXML
 	private void homeTeamTestAction() {
-		final HomeTeamTest test = new HomeTeamTest();
+		final HomeTeamWinTest test = new HomeTeamWinTest();
+
+		test.setup("", Float.valueOf(getStartingBank()), Float.valueOf(getBetLevel()), Float.valueOf(getBetMargin()), Integer.valueOf(getLookback()), 1, getCountryIdFromSelector(), getLeagueIdFromSelector());
+
+		test.runTest();
+	}
+
+	@FXML
+	private void awayTeamTestAction() {
+		final AwayTeamWinTest test = new AwayTeamWinTest();
 
 		test.setup("", Float.valueOf(getStartingBank()), Float.valueOf(getBetLevel()), Float.valueOf(getBetMargin()), Integer.valueOf(getLookback()), 1, getCountryIdFromSelector(), getLeagueIdFromSelector());
 

+ 12 - 12
OddsJavaFx/src/data/GuiMysql.java

@@ -618,8 +618,8 @@ public class GuiMysql extends Mysql {
 
 		try {
 			final PreparedStatement stat = getConnection().prepareStatement(sql);
-			stat.setInt(1, teamId);
-			stat.setInt(2, marginHome);
+			stat.setInt(1, marginHome);
+			stat.setInt(2, teamId);
 
 			stat.executeUpdate();
 
@@ -634,8 +634,8 @@ public class GuiMysql extends Mysql {
 
 		try {
 			final PreparedStatement stat = getConnection().prepareStatement(sql);
-			stat.setInt(1, teamId);
-			stat.setInt(2, marginDraw);
+			stat.setInt(1, marginDraw);
+			stat.setInt(2, teamId);
 
 			stat.executeUpdate();
 
@@ -650,8 +650,8 @@ public class GuiMysql extends Mysql {
 
 		try {
 			final PreparedStatement stat = getConnection().prepareStatement(sql);
-			stat.setInt(1, teamId);
-			stat.setInt(2, marginAway);
+			stat.setInt(1, marginAway);
+			stat.setInt(2, teamId);
 
 			stat.executeUpdate();
 
@@ -666,8 +666,8 @@ public class GuiMysql extends Mysql {
 
 		try {
 			final PreparedStatement stat = getConnection().prepareStatement(sql);
-			stat.setInt(1, teamId);
-			stat.setInt(2, lookbackHome);
+			stat.setInt(1, lookbackHome);
+			stat.setInt(2, teamId);
 
 			stat.executeUpdate();
 
@@ -682,8 +682,8 @@ public class GuiMysql extends Mysql {
 
 		try {
 			final PreparedStatement stat = getConnection().prepareStatement(sql);
-			stat.setInt(1, teamId);
-			stat.setInt(2, lookbackDraw);
+			stat.setInt(1, lookbackDraw);
+			stat.setInt(2, teamId);
 
 			stat.executeUpdate();
 
@@ -698,8 +698,8 @@ public class GuiMysql extends Mysql {
 
 		try {
 			final PreparedStatement stat = getConnection().prepareStatement(sql);
-			stat.setInt(1, teamId);
-			stat.setInt(2, lookbackAway);
+			stat.setInt(1, lookbackAway);
+			stat.setInt(2, teamId);
 
 			stat.executeUpdate();
 

+ 1 - 0
OddsJavaFx/src/fxml/Testing.fxml

@@ -60,6 +60,7 @@
                                     <Button fx:id="awayTest" onAction="#awayTestAction" text="Away Test"/>
                                     <Button fx:id="homeDrawAwayTest" onAction="#homeDrawAwayTestAction" text="Combined 1X2 Test"/>
                                     <Button fx:id="homeTeamTest" onAction="#homeTeamTestAction" text="Home Team margin test"/>
+                                    <Button fx:id="awayTeamTest" onAction="#awayTeamTestAction" text="Away Team margin test"/>
                                  </children>
                               </VBox>
                            </children>

+ 194 - 0
OddsJavaFx/src/tests/AwayTeamWinTest.java

@@ -0,0 +1,194 @@
+package tests;
+
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
+
+import objects.League;
+import objects.SoccerMatch;
+import objects.TeamSettings;
+
+public class AwayTeamWinTest extends TestClass {
+
+	ArrayList<Integer> recalcTeamsList = new ArrayList<Integer>();
+	private League leagueInfo;
+	private ArrayList<SoccerMatch> matches;
+	private ArrayList<SoccerMatch> trainMatches;
+
+	@Override
+	public void runTest() {
+		matches = getMatches();
+		trainMatches = getTrainMatches();
+
+		leagueInfo = getLeagueInfoById();
+		for (final SoccerMatch soccerMatch : matches) {
+			final int homeTeamId = soccerMatch.getHomeTeam().getTeamId();
+			final int awayTeamId = soccerMatch.getAwayTeam().getTeamId();
+
+			TeamSettings awayTeamValues = getTeamValues(awayTeamId);
+
+			if (awayTeamValues.getLookbackAway() <= 0 || awayTeamValues.getMarginAway() <= 0 ) {
+				awayTeamValues = calculateTeamValues(awayTeamValues, false);
+			}
+		}
+
+		System.out.println("Done with Away Team TEST");
+	}
+
+	private TeamSettings calculateTeamValues(TeamSettings teamSettings, boolean isHomeTeam) {
+		final ArrayList<SoccerMatch> teamMatches;
+		if (isHomeTeam) {
+			teamMatches = (ArrayList<SoccerMatch>) trainMatches.stream().filter(p -> p.getHomeTeam().getTeamId() == teamSettings.getTeamId()).collect(Collectors.toList());
+		} else {
+			teamMatches = (ArrayList<SoccerMatch>) trainMatches.stream().filter(p -> p.getAwayTeam().getTeamId() == teamSettings.getTeamId()).collect(Collectors.toList());
+		}
+
+		float bestBankResult = startingBank;
+		int bestBetMargin = 0;
+		int bestLookBack = 0;
+
+		final float betLevel = bettingLevel / 100f;
+		float betAmount = startingBank * betLevel;
+
+		for (int lookback = 4; lookback < 25; lookback++) {
+			for (int margin = 1; margin < 25; margin++) {
+				final float betMarginDecimal = 1 + (margin / 100f);
+				float bank = startingBank;
+				int betOnGameCount = 0;
+				int wins = 0;
+				for (final SoccerMatch soccerMatch : teamMatches) {
+					final List<SoccerMatch> aktuellaMatcher = trainMatches.stream().filter(p -> p.getGameDate().isBefore(soccerMatch.getGameDate())).collect(Collectors.toList());
+					if (soccerMatch.getHomeScore() < 0 || soccerMatch.getAwayScore() < 0) {
+						continue;
+					}
+
+					// Hemma lagets resultat
+					final List<SoccerMatch> hemmaMatcher = aktuellaMatcher.stream().filter(p -> p.getHomeTeam().getTeamId() == teamSettings.getTeamId()).limit(lookback).collect(Collectors.toList());
+					final long hemmaVinster = hemmaMatcher.stream().filter(p -> p.getHomeScore() > p.getAwayScore()).count();
+					final long lika = hemmaMatcher.stream().filter(p -> p.getHomeScore() == p.getAwayScore()).count();
+					final long hemmaForluster = hemmaMatcher.stream().filter(p -> p.getHomeScore() < p.getAwayScore()).count();
+
+					// borta lagets resultat
+					final List<SoccerMatch> bortaMatcher = aktuellaMatcher.stream().filter(p -> p.getAwayTeam().getTeamId() == soccerMatch.getAwayTeam().getTeamId()).limit(lookback).collect(Collectors.toList());
+					final long bortaVinster = bortaMatcher.stream().filter(p -> p.getHomeScore() < p.getAwayScore()).count();
+					final long likaBortalag = bortaMatcher.stream().filter(p -> p.getHomeScore() == p.getAwayScore()).count();
+					final long bortaForluster = bortaMatcher.stream().filter(p -> p.getHomeScore() > p.getAwayScore()).count();
+
+					final float awayWinPercent = (bortaVinster + hemmaForluster) / Float.valueOf(hemmaMatcher.size() + bortaMatcher.size()) * 100;
+					final float awayOdds = 100 / awayWinPercent;
+
+					betAmount = bank * betLevel;
+
+					// Spela på hemma vins?
+					if (awayOdds * betMarginDecimal <= soccerMatch.getOdds2()) {
+						betOnGameCount++;
+						bank = bank - betAmount;
+						if (soccerMatch.getAwayScore() > soccerMatch.getHomeScore()) {
+							wins++;
+							bank = bank + betAmount * soccerMatch.getOdds2();
+						}
+					}
+
+					if (bank != startingBank && bestBankResult < bank) {
+						bestBetMargin = margin;
+						bestLookBack = lookback;
+						bestBankResult = bank;
+					} else if (bestBankResult != startingBank && bestBankResult == bank) {
+						bestBetMargin = margin;
+						bestLookBack = lookback;
+						bestBankResult = bank;
+					}
+				}
+			}
+		}
+
+		if (bestLookBack > 0 && teamSettings.getLookbackAway() != bestLookBack) {
+			System.out.println("Setting lookbackAway " + bestLookBack + " and margin " + bestBetMargin + " for team " + teamSettings.getTeamName() + " with a bank of " + bestBankResult);
+			teamSettings.setLookbackAway(bestLookBack);
+			teamSettings.setMarginAway(bestBetMargin);
+		}
+
+		return teamSettings;
+	}
+
+	private TeamSettings getTeamValues(int teamId) {
+		final String sql = "SELECT * FROM Team WHERE id = ?";
+		final TeamSettings ts = new TeamSettings();
+		try {
+			final PreparedStatement stmt = getConnection().prepareStatement(sql);
+			stmt.setInt(1, teamId);
+
+			final ResultSet rs = stmt.executeQuery();
+
+			while (rs.next()) {
+				ts.setTeamId(teamId);
+				ts.setTeamName(rs.getString("name"));
+				ts.setLookbackHome(rs.getInt("lookbackHome"));
+				ts.setLookbackDraw(rs.getInt("lookbackDraw"));
+				ts.setLookbackAway(rs.getInt("lookbackAway"));
+				ts.setMarginHome(rs.getInt("marginHome"));
+				ts.setMarginDraw(rs.getInt("marginDraw"));
+				ts.setMarginAway(rs.getInt("marginAway"));
+			}
+
+		} catch (final SQLException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		}
+
+		return ts;
+	}
+
+	private ArrayList<SoccerMatch> getMatches() {
+		final ArrayList<SoccerMatch> result = new ArrayList<>();
+
+		final String sql = "SELECT res.*, "
+				+ "hTeam.name as homeTeamName, aTeam.name as awayTeamName "
+				+ "FROM SoccerResults as res "
+				+ "Join Team as hTeam ON res.homeTeam = hTeam.id "
+				+ "Join Team as aTeam ON res.awayTeam = aTeam.id "
+				+ "WHERE "
+				+ "DATE(gameDate) > DATE_SUB(NOW(), INTERVAL 1 YEAR) AND "
+				+ "res.leagueId = ? "
+				+ "ORDER BY gameDate ASC";
+
+		try {
+			final PreparedStatement stmt = getConnection().prepareStatement(sql);
+			stmt.setInt(1, leagueId);
+
+			result.addAll(super.getMatches(stmt));
+		} catch (final SQLException e) {
+			e.printStackTrace();
+		}
+
+		return result;
+	}
+
+	private ArrayList<SoccerMatch> getTrainMatches() {
+		final ArrayList<SoccerMatch> result = new ArrayList<>();
+
+		final String sql = "SELECT res.*, "
+				+ "hTeam.name as homeTeamName, aTeam.name as awayTeamName "
+				+ "FROM SoccerResults as res "
+				+ "Join Team as hTeam ON res.homeTeam = hTeam.id "
+				+ "Join Team as aTeam ON res.awayTeam = aTeam.id "
+				+ "WHERE "
+				+ "DATE(gameDate) < DATE_SUB(NOW(), INTERVAL 1 YEAR) AND "
+				+ "res.leagueId = ? "
+				+ "ORDER BY gameDate DESC";
+
+		try {
+			final PreparedStatement stmt = getConnection().prepareStatement(sql);
+			stmt.setInt(1, leagueId);
+
+			result.addAll(super.getMatches(stmt));
+		} catch (final SQLException e) {
+			e.printStackTrace();
+		}
+
+		return result;
+	}
+}

+ 4 - 23
OddsJavaFx/src/tests/HomeTeamTest.java → OddsJavaFx/src/tests/DrawTeamTestNOTDONE.java

@@ -11,7 +11,7 @@ import objects.League;
 import objects.SoccerMatch;
 import objects.TeamSettings;
 
-public class HomeTeamTest extends TestClass {
+public class DrawTeamTestNOTDONE extends TestClass {
 
 	ArrayList<Integer> recalcTeamsList = new ArrayList<Integer>();
 	private League leagueInfo;
@@ -29,25 +29,16 @@ public class HomeTeamTest extends TestClass {
 			final int awayTeamId = soccerMatch.getAwayTeam().getTeamId();
 
 			TeamSettings homeTeamValues = getTeamValues(homeTeamId);
-			final TeamSettings awayTeamValues = getTeamValues(awayTeamId);
 
 			if (homeTeamValues.getLookbackHome() <= 0 || homeTeamValues.getMarginHome() <= 0 ) {
 				homeTeamValues = calculateTeamValues(homeTeamValues, true);
 			}
-			//			if (awayTeamValues.getLookbackAway() <= 0 || awayTeamValues.getMarginAway() <= 0 ) {
-			//				awayTeamValues = calculateTeamValues(awayTeamValues, false);
-			//			}
 		}
 
 		System.out.println("Done with Home Team TEST");
 	}
 
 	private TeamSettings calculateTeamValues(TeamSettings teamSettings, boolean isHomeTeam) {
-		// TODO
-
-		// 1. plocka ut teamets matcher beroende på hemma/borta
-		// 2. filtrera träningsmatcherna på datum innan aktuell match
-		// 3. loopa över de träningsmatcher som stämmer
 		final ArrayList<SoccerMatch> teamMatches;
 		if (isHomeTeam) {
 			teamMatches = (ArrayList<SoccerMatch>) trainMatches.stream().filter(p -> p.getHomeTeam().getTeamId() == teamSettings.getTeamId()).collect(Collectors.toList());
@@ -64,7 +55,7 @@ public class HomeTeamTest extends TestClass {
 
 		for (int lookback = 4; lookback < 25; lookback++) {
 			for (int margin = 1; margin < 25; margin++) {
-				final float betMarginDecimal = 1 + (margin / 100);
+				final float betMarginDecimal = 1 + (margin / 100f);
 				float bank = startingBank;
 				int betOnGameCount = 0;
 				int wins = 0;
@@ -102,30 +93,20 @@ public class HomeTeamTest extends TestClass {
 					}
 
 					if (bank != startingBank && bestBankResult < bank) {
-						//						System.out.println("NEW best bank " + bank + " for team " + teamSettings.getTeamName() + " with lookback " + lookback + " and betMargin " + margin +
-						//								" Bet on " + betOnGameCount + " of " + matches.size() + "(" + betOnGameCount / (float)matches.size() + ") wins " + wins + "(" + wins/Float.valueOf(betOnGameCount) + ")" +
-						//								" Win / game " + (bank - startingBank) / Float.valueOf(wins) + " kr");
 						bestBetMargin = margin;
 						bestLookBack = lookback;
 						bestBankResult = bank;
 					} else if (bestBankResult != startingBank && bestBankResult == bank) {
-						//						System.out.println("SAME best bank " + bank + " for team " + teamSettings.getTeamName() + " with lookback " + lookback + " and betMargin " + margin +
-						//								" Bet on " + betOnGameCount + " of " + matches.size() + "(" + betOnGameCount / (float)matches.size() + ") wins " + wins + "(" + wins/Float.valueOf(betOnGameCount) + ")" +
-						//								" Win / game " + (bank - startingBank) / Float.valueOf(wins) + " kr");
 						bestBetMargin = margin;
 						bestLookBack = lookback;
 						bestBankResult = bank;
-					} else {
-						//						System.out.println("NOT BEST bank " + bank + " for team " + teamSettings.getTeamName() + " with lookback " + lookback + " and betMargin " + margin +
-						//								" Bet on " + betOnGameCount + " of " + matches.size() + "(" + betOnGameCount / (float)matches.size() + ") wins " + wins + "(" + wins/Float.valueOf(betOnGameCount) + ")" +
-						//								" Win / game " + (bank - startingBank) / Float.valueOf(wins) + " kr");
 					}
 				}
 			}
 		}
 
-		if (bestLookBack > 0) {
-			System.out.println("Setting lookbackHome " + bestLookBack + " for team " + teamSettings.getTeamName());
+		if (bestLookBack > 0 && teamSettings.getLookbackHome() != bestLookBack) {
+			System.out.println("Setting lookbackHome " + bestLookBack + " and margin " + bestBetMargin + " for team " + teamSettings.getTeamName() + " with a bank of " + bestBankResult);
 			teamSettings.setLookbackHome(bestLookBack);
 			teamSettings.setMarginHome(bestBetMargin);
 		}

+ 194 - 0
OddsJavaFx/src/tests/HomeTeamWinTest.java

@@ -0,0 +1,194 @@
+package tests;
+
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
+
+import objects.League;
+import objects.SoccerMatch;
+import objects.TeamSettings;
+
+public class HomeTeamWinTest extends TestClass {
+
+	ArrayList<Integer> recalcTeamsList = new ArrayList<Integer>();
+	private League leagueInfo;
+	private ArrayList<SoccerMatch> matches;
+	private ArrayList<SoccerMatch> trainMatches;
+
+	@Override
+	public void runTest() {
+		matches = getMatches();
+		trainMatches = getTrainMatches();
+
+		leagueInfo = getLeagueInfoById();
+		for (final SoccerMatch soccerMatch : matches) {
+			final int homeTeamId = soccerMatch.getHomeTeam().getTeamId();
+			final int awayTeamId = soccerMatch.getAwayTeam().getTeamId();
+
+			TeamSettings homeTeamValues = getTeamValues(homeTeamId);
+
+			if (homeTeamValues.getLookbackHome() <= 0 || homeTeamValues.getMarginHome() <= 0 ) {
+				homeTeamValues = calculateTeamValues(homeTeamValues, true);
+			}
+		}
+
+		System.out.println("Done with Home Team TEST");
+	}
+
+	private TeamSettings calculateTeamValues(TeamSettings teamSettings, boolean isHomeTeam) {
+		final ArrayList<SoccerMatch> teamMatches;
+		if (isHomeTeam) {
+			teamMatches = (ArrayList<SoccerMatch>) trainMatches.stream().filter(p -> p.getHomeTeam().getTeamId() == teamSettings.getTeamId()).collect(Collectors.toList());
+		} else {
+			teamMatches = (ArrayList<SoccerMatch>) trainMatches.stream().filter(p -> p.getAwayTeam().getTeamId() == teamSettings.getTeamId()).collect(Collectors.toList());
+		}
+
+		float bestBankResult = startingBank;
+		int bestBetMargin = 0;
+		int bestLookBack = 0;
+
+		final float betLevel = bettingLevel / 100f;
+		float betAmount = startingBank * betLevel;
+
+		for (int lookback = 4; lookback < 25; lookback++) {
+			for (int margin = 1; margin < 25; margin++) {
+				final float betMarginDecimal = 1 + (margin / 100f);
+				float bank = startingBank;
+				int betOnGameCount = 0;
+				int wins = 0;
+				for (final SoccerMatch soccerMatch : teamMatches) {
+					final List<SoccerMatch> aktuellaMatcher = trainMatches.stream().filter(p -> p.getGameDate().isBefore(soccerMatch.getGameDate())).collect(Collectors.toList());
+					if (soccerMatch.getHomeScore() < 0 || soccerMatch.getAwayScore() < 0) {
+						continue;
+					}
+
+					// Hemma lagets resultat
+					final List<SoccerMatch> hemmaMatcher = aktuellaMatcher.stream().filter(p -> p.getHomeTeam().getTeamId() == teamSettings.getTeamId()).limit(lookback).collect(Collectors.toList());
+					final long hemmaVinster = hemmaMatcher.stream().filter(p -> p.getHomeScore() > p.getAwayScore()).count();
+					final long lika = hemmaMatcher.stream().filter(p -> p.getHomeScore() == p.getAwayScore()).count();
+					final long hemmaForluster = hemmaMatcher.stream().filter(p -> p.getHomeScore() < p.getAwayScore()).count();
+
+					// borta lagets resultat
+					final List<SoccerMatch> bortaMatcher = aktuellaMatcher.stream().filter(p -> p.getAwayTeam().getTeamId() == soccerMatch.getAwayTeam().getTeamId()).limit(lookback).collect(Collectors.toList());
+					final long bortaVinster = bortaMatcher.stream().filter(p -> p.getHomeScore() < p.getAwayScore()).count();
+					final long likaBortalag = bortaMatcher.stream().filter(p -> p.getHomeScore() == p.getAwayScore()).count();
+					final long bortaForluster = bortaMatcher.stream().filter(p -> p.getHomeScore() > p.getAwayScore()).count();
+
+					final float homeWinPercent = (hemmaVinster + bortaForluster) / Float.valueOf(hemmaMatcher.size() + bortaMatcher.size()) * 100;
+					final float homeOdds = 100 / homeWinPercent;
+
+					betAmount = bank * betLevel;
+
+					// Spela på hemma vins?
+					if (homeOdds * betMarginDecimal <= soccerMatch.getOdds1()) {
+						betOnGameCount++;
+						bank = bank - betAmount;
+						if (soccerMatch.getHomeScore() > soccerMatch.getAwayScore()) {
+							wins++;
+							bank = bank + betAmount * soccerMatch.getOdds1();
+						}
+					}
+
+					if (bank != startingBank && bestBankResult < bank) {
+						bestBetMargin = margin;
+						bestLookBack = lookback;
+						bestBankResult = bank;
+					} else if (bestBankResult != startingBank && bestBankResult == bank) {
+						bestBetMargin = margin;
+						bestLookBack = lookback;
+						bestBankResult = bank;
+					}
+				}
+			}
+		}
+
+		if (bestLookBack > 0 && teamSettings.getLookbackHome() != bestLookBack) {
+			System.out.println("Setting lookbackHome " + bestLookBack + " and margin " + bestBetMargin + " for team " + teamSettings.getTeamName() + " with a bank of " + bestBankResult);
+			teamSettings.setLookbackHome(bestLookBack);
+			teamSettings.setMarginHome(bestBetMargin);
+		}
+
+		return teamSettings;
+	}
+
+	private TeamSettings getTeamValues(int teamId) {
+		final String sql = "SELECT * FROM Team WHERE id = ?";
+		final TeamSettings ts = new TeamSettings();
+		try {
+			final PreparedStatement stmt = getConnection().prepareStatement(sql);
+			stmt.setInt(1, teamId);
+
+			final ResultSet rs = stmt.executeQuery();
+
+			while (rs.next()) {
+				ts.setTeamId(teamId);
+				ts.setTeamName(rs.getString("name"));
+				ts.setLookbackHome(rs.getInt("lookbackHome"));
+				ts.setLookbackDraw(rs.getInt("lookbackDraw"));
+				ts.setLookbackAway(rs.getInt("lookbackAway"));
+				ts.setMarginHome(rs.getInt("marginHome"));
+				ts.setMarginDraw(rs.getInt("marginDraw"));
+				ts.setMarginAway(rs.getInt("marginAway"));
+			}
+
+		} catch (final SQLException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		}
+
+		return ts;
+	}
+
+	private ArrayList<SoccerMatch> getMatches() {
+		final ArrayList<SoccerMatch> result = new ArrayList<>();
+
+		final String sql = "SELECT res.*, "
+				+ "hTeam.name as homeTeamName, aTeam.name as awayTeamName "
+				+ "FROM SoccerResults as res "
+				+ "Join Team as hTeam ON res.homeTeam = hTeam.id "
+				+ "Join Team as aTeam ON res.awayTeam = aTeam.id "
+				+ "WHERE "
+				+ "DATE(gameDate) > DATE_SUB(NOW(), INTERVAL 1 YEAR) AND "
+				+ "res.leagueId = ? "
+				+ "ORDER BY gameDate ASC";
+
+		try {
+			final PreparedStatement stmt = getConnection().prepareStatement(sql);
+			stmt.setInt(1, leagueId);
+
+			result.addAll(super.getMatches(stmt));
+		} catch (final SQLException e) {
+			e.printStackTrace();
+		}
+
+		return result;
+	}
+
+	private ArrayList<SoccerMatch> getTrainMatches() {
+		final ArrayList<SoccerMatch> result = new ArrayList<>();
+
+		final String sql = "SELECT res.*, "
+				+ "hTeam.name as homeTeamName, aTeam.name as awayTeamName "
+				+ "FROM SoccerResults as res "
+				+ "Join Team as hTeam ON res.homeTeam = hTeam.id "
+				+ "Join Team as aTeam ON res.awayTeam = aTeam.id "
+				+ "WHERE "
+				+ "DATE(gameDate) < DATE_SUB(NOW(), INTERVAL 1 YEAR) AND "
+				+ "res.leagueId = ? "
+				+ "ORDER BY gameDate DESC";
+
+		try {
+			final PreparedStatement stmt = getConnection().prepareStatement(sql);
+			stmt.setInt(1, leagueId);
+
+			result.addAll(super.getMatches(stmt));
+		} catch (final SQLException e) {
+			e.printStackTrace();
+		}
+
+		return result;
+	}
+}

+ 10 - 0
OddsJavaFx/src/tests/addedScoringTest.java

@@ -0,0 +1,10 @@
+package tests;
+
+public class addedScoringTest extends TestClass {
+
+	@Override
+	public void runTest() {
+
+	}
+
+}

+ 2 - 0
OddsJavaFx/src/web/index.php

@@ -75,6 +75,7 @@ $leagues = $conn->getLeagues();
     <th>League</th>
     <th>Wins</th>
     <th>Losses</th>
+    <th>Percentage</th>
     <th>Result</th>
     <th>Pending</th>
     </tr>
@@ -86,6 +87,7 @@ $leagues = $conn->getLeagues();
         echo "<td>" . $name . "</td>";
         echo "<td>" . $res['wins'] . "</td>";
         echo "<td>" . $res['losses'] . "</td>";
+        echo "<td>" . $res['wins'] / ($res['wins'] + $res['losses']) . "</td>";
         echo "<td>" . $res['result'] . "</td>";
         echo "<td>" . $res['pending'] . "</td>";
     }