Jelajahi Sumber

Start of R-Scripting

Axel Nordh 5 tahun lalu
induk
melakukan
90b57bfc33

+ 2 - 2
ATG/.project

@@ -16,12 +16,12 @@
 			</arguments>
 		</buildCommand>
 		<buildCommand>
-			<name>org.eclipse.m2e.core.maven2Builder</name>
+			<name>org.eclipse.statet.r.resourceProjects.RBuilder</name>
 			<arguments>
 			</arguments>
 		</buildCommand>
 		<buildCommand>
-			<name>org.eclipse.statet.r.resourceProjects.RBuilder</name>
+			<name>org.eclipse.m2e.core.maven2Builder</name>
 			<arguments>
 			</arguments>
 		</buildCommand>

+ 31 - 12
ATG/src/controllers/DatabaseContoller.java

@@ -5,8 +5,10 @@ import java.sql.DriverManager;
 import java.sql.PreparedStatement;
 import java.sql.ResultSet;
 import java.sql.SQLException;
+import java.text.ParseException;
 import java.util.AbstractMap.SimpleEntry;
 import java.util.ArrayList;
+import java.util.Calendar;
 import java.util.Date;
 import java.util.List;
 
@@ -291,12 +293,24 @@ public class DatabaseContoller {
 
 	public List<HorseRaceData> getTodaysRaces(String type, String date) {
 		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)) {
 			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 "
 					+ "				INNER JOIN Driver as driver ON driverId = driver.id "
 					+ "				INNER JOIN Horse as horse ON HorseId = horse.id "
@@ -309,10 +323,10 @@ public class DatabaseContoller {
 					+ "ORDER BY `r1`.`RaceNumber` ASC";
 		} else {
 			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 "
 					+ "				INNER JOIN Driver as driver ON driverId = driver.id "
 					+ "				INNER JOIN Horse as horse ON HorseId = horse.id "
@@ -329,11 +343,16 @@ public class DatabaseContoller {
 		final List<HorseRaceData> results = new ArrayList<>();
 		try {
 			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)) {
-				stat.setString(1, date);
+				stat.setString(5, date);
+				//				MainController.DATE_FORMAT.format(c.getTime())
 			} else {
-				stat.setString(1, date);
-				stat.setString(2, "%" + type + "%");
+				stat.setString(5, date);
+				stat.setString(6, "%" + type + "%");
 			}
 
 			final ResultSet rs = stat.executeQuery();
@@ -360,7 +379,7 @@ public class DatabaseContoller {
 				rd.setAvgHorseTimeByDistance(rs.getFloat("horseAvgByDistance"), getHorseRaceCount(rd.getHorseId(), 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: " +
 							getDriverTravsportId(rd.getDriverName()) + "because race count was " + rd.getAvgDriverTimeCount());
 					TravsportParser.getInstance().getDriverStatById(getDriverTravsportId(rd.getDriverName()), rd.getDriverName());

+ 1 - 0
ATG/src/controllers/MainController.java

@@ -104,6 +104,7 @@ public class MainController implements Initializable {
 	}
 
 	@FXML public void UpdateResults() {
+		updateResultsButton.setDisable(true);
 		TravsportParser.getInstance().updateRaceResults(mRaceId);
 		DatabaseContoller.getInstance().removeRaceIds(mRaceId);
 		updateRaceId();