|
@@ -5,8 +5,10 @@ import java.sql.DriverManager;
|
|
|
import java.sql.PreparedStatement;
|
|
import java.sql.PreparedStatement;
|
|
|
import java.sql.ResultSet;
|
|
import java.sql.ResultSet;
|
|
|
import java.sql.SQLException;
|
|
import java.sql.SQLException;
|
|
|
|
|
+import java.text.ParseException;
|
|
|
import java.util.AbstractMap.SimpleEntry;
|
|
import java.util.AbstractMap.SimpleEntry;
|
|
|
import java.util.ArrayList;
|
|
import java.util.ArrayList;
|
|
|
|
|
+import java.util.Calendar;
|
|
|
import java.util.Date;
|
|
import java.util.Date;
|
|
|
import java.util.List;
|
|
import java.util.List;
|
|
|
|
|
|
|
@@ -291,12 +293,24 @@ public class DatabaseContoller {
|
|
|
|
|
|
|
|
public List<HorseRaceData> getTodaysRaces(String type, String date) {
|
|
public List<HorseRaceData> getTodaysRaces(String type, String date) {
|
|
|
final String sql;
|
|
final String sql;
|
|
|
|
|
+ Date date2 = new Date();
|
|
|
|
|
+ try {
|
|
|
|
|
+ date2 = MainController.DATE_FORMAT.parse(date);
|
|
|
|
|
+ } catch (final ParseException e1) {
|
|
|
|
|
+ // TODO Auto-generated catch block
|
|
|
|
|
+ e1.printStackTrace();
|
|
|
|
|
+ }
|
|
|
|
|
+ final Calendar c = Calendar.getInstance();
|
|
|
|
|
+ c.setTime(date2);
|
|
|
|
|
+ c.add(Calendar.YEAR, -2);
|
|
|
|
|
+ final String twoYearsAgo = MainController.DATE_FORMAT.format(c.getTime());
|
|
|
|
|
+
|
|
|
if (Strings.isNullOrEmpty(type)) {
|
|
if (Strings.isNullOrEmpty(type)) {
|
|
|
sql = "SELECT r1.*, driver.name as DriverName, horse.name as HorseName, track.name as TrackName, "
|
|
sql = "SELECT r1.*, driver.name as DriverName, horse.name as HorseName, track.name as TrackName, "
|
|
|
- + "ROUND(AVG(if (horseResults.time > 0, horseResults.time,null)),4) horseAvg, "
|
|
|
|
|
- + "ROUND(AVG(IF(driverResults.time > 0, driverResults.time, null)),4) driverAvg, "
|
|
|
|
|
- + "ROUND(AVG(IF((horseResults.Distance = r1.Distance AND horseResults.Time > 0), horseResults.time, null)),4) horseAvgByDistance, "
|
|
|
|
|
- + "ROUND(AVG(IF((driverResults.Distance = r1.Distance AND driverResults.Time > 0), driverResults.time, null)),4) driverAvgByDistance "
|
|
|
|
|
|
|
+ + "ROUND(AVG(if (horseResults.time > 0 AND horseResults.RaceDate > ?, horseResults.time,null)),4) horseAvg, "
|
|
|
|
|
+ + "ROUND(AVG(IF(driverResults.time > 0 AND driverResults.RaceDate > ?, driverResults.time, null)),4) driverAvg, "
|
|
|
|
|
+ + "ROUND(AVG(IF((horseResults.Distance = r1.Distance AND horseResults.Time > 0 AND horseResults.RaceDate > ?), horseResults.time, null)),4) horseAvgByDistance, "
|
|
|
|
|
+ + "ROUND(AVG(IF((driverResults.Distance = r1.Distance AND driverResults.Time > 0 AND driverResults.RaceDate > ?), driverResults.time, null)),4) driverAvgByDistance "
|
|
|
+ "FROM Results r1 "
|
|
+ "FROM Results r1 "
|
|
|
+ " INNER JOIN Driver as driver ON driverId = driver.id "
|
|
+ " INNER JOIN Driver as driver ON driverId = driver.id "
|
|
|
+ " INNER JOIN Horse as horse ON HorseId = horse.id "
|
|
+ " INNER JOIN Horse as horse ON HorseId = horse.id "
|
|
@@ -309,10 +323,10 @@ public class DatabaseContoller {
|
|
|
+ "ORDER BY `r1`.`RaceNumber` ASC";
|
|
+ "ORDER BY `r1`.`RaceNumber` ASC";
|
|
|
} else {
|
|
} else {
|
|
|
sql = "SELECT r1.*, driver.name as DriverName, horse.name as HorseName, track.name as TrackName, "
|
|
sql = "SELECT r1.*, driver.name as DriverName, horse.name as HorseName, track.name as TrackName, "
|
|
|
- + "ROUND(AVG(if (horseResults.time > 0, horseResults.time,null)),4) horseAvg, "
|
|
|
|
|
- + "ROUND(AVG(IF(driverResults.time > 0, driverResults.time, null)),4) driverAvg, "
|
|
|
|
|
- + "ROUND(AVG(IF((horseResults.Distance = r1.Distance AND horseResults.Time > 0), horseResults.time, null)),4) horseAvgByDistance, "
|
|
|
|
|
- + "ROUND(AVG(IF((driverResults.Distance = r1.Distance AND driverResults.Time > 0), driverResults.time, null)),4) driverAvgByDistance "
|
|
|
|
|
|
|
+ + "ROUND(AVG(if (horseResults.time > 0 AND horseResults.RaceDate > ?, horseResults.time,null)),4) horseAvg, "
|
|
|
|
|
+ + "ROUND(AVG(IF(driverResults.time > 0 AND driverResults.RaceDate > ?, driverResults.time, null)),4) driverAvg, "
|
|
|
|
|
+ + "ROUND(AVG(IF((horseResults.Distance = r1.Distance AND horseResults.Time > 0 AND horseResults.RaceDate > ?), horseResults.time, null)),4) horseAvgByDistance, "
|
|
|
|
|
+ + "ROUND(AVG(IF((driverResults.Distance = r1.Distance AND driverResults.Time > 0 AND driverResults.RaceDate > ?), driverResults.time, null)),4) driverAvgByDistance "
|
|
|
+ "FROM Results r1 "
|
|
+ "FROM Results r1 "
|
|
|
+ " INNER JOIN Driver as driver ON driverId = driver.id "
|
|
+ " INNER JOIN Driver as driver ON driverId = driver.id "
|
|
|
+ " INNER JOIN Horse as horse ON HorseId = horse.id "
|
|
+ " INNER JOIN Horse as horse ON HorseId = horse.id "
|
|
@@ -329,11 +343,16 @@ public class DatabaseContoller {
|
|
|
final List<HorseRaceData> results = new ArrayList<>();
|
|
final List<HorseRaceData> results = new ArrayList<>();
|
|
|
try {
|
|
try {
|
|
|
final PreparedStatement stat = getConnection().prepareStatement(sql);
|
|
final PreparedStatement stat = getConnection().prepareStatement(sql);
|
|
|
|
|
+ stat.setString(1, twoYearsAgo);
|
|
|
|
|
+ stat.setString(2, twoYearsAgo);
|
|
|
|
|
+ stat.setString(3, twoYearsAgo);
|
|
|
|
|
+ stat.setString(4, twoYearsAgo);
|
|
|
if (Strings.isNullOrEmpty(type)) {
|
|
if (Strings.isNullOrEmpty(type)) {
|
|
|
- stat.setString(1, date);
|
|
|
|
|
|
|
+ stat.setString(5, date);
|
|
|
|
|
+ // MainController.DATE_FORMAT.format(c.getTime())
|
|
|
} else {
|
|
} else {
|
|
|
- stat.setString(1, date);
|
|
|
|
|
- stat.setString(2, "%" + type + "%");
|
|
|
|
|
|
|
+ stat.setString(5, date);
|
|
|
|
|
+ stat.setString(6, "%" + type + "%");
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
final ResultSet rs = stat.executeQuery();
|
|
final ResultSet rs = stat.executeQuery();
|
|
@@ -360,7 +379,7 @@ public class DatabaseContoller {
|
|
|
rd.setAvgHorseTimeByDistance(rs.getFloat("horseAvgByDistance"), getHorseRaceCount(rd.getHorseId(), rd.getDistance()));
|
|
rd.setAvgHorseTimeByDistance(rs.getFloat("horseAvgByDistance"), getHorseRaceCount(rd.getHorseId(), rd.getDistance()));
|
|
|
rd.setAvgDriverTimeByDistance(rs.getFloat("driverAvgByDistance"), getDriverRaceCount(rd.getDriverId(), rd.getDistance()));
|
|
rd.setAvgDriverTimeByDistance(rs.getFloat("driverAvgByDistance"), getDriverRaceCount(rd.getDriverId(), rd.getDistance()));
|
|
|
|
|
|
|
|
- if (rd.getAvgDriverTimeCount() < 20) {
|
|
|
|
|
|
|
+ if (rd.getAvgDriverTimeCount() < 10) {
|
|
|
System.out.println("Uppdating driver " + rd.getDriverName() + "(" + rd.getDriverId() + ") travsport id: " +
|
|
System.out.println("Uppdating driver " + rd.getDriverName() + "(" + rd.getDriverId() + ") travsport id: " +
|
|
|
getDriverTravsportId(rd.getDriverName()) + "because race count was " + rd.getAvgDriverTimeCount());
|
|
getDriverTravsportId(rd.getDriverName()) + "because race count was " + rd.getAvgDriverTimeCount());
|
|
|
TravsportParser.getInstance().getDriverStatById(getDriverTravsportId(rd.getDriverName()), rd.getDriverName());
|
|
TravsportParser.getInstance().getDriverStatById(getDriverTravsportId(rd.getDriverName()), rd.getDriverName());
|