reduce code duplication: introduced a Helper to check if a race is at the same day as a given day

This commit is contained in:
Armin Zamani
2013-06-11 20:02:21 +02:00
parent 4241eb08fb
commit 97c535f63f
4 changed files with 53 additions and 42 deletions
@@ -13,4 +13,5 @@ Export-Package: com.sap.sailing.domain.common,
com.sap.sailing.domain.common.quadtree,
com.sap.sailing.domain.common.quadtree.impl;x-friends:="com.sap.sailing.domain.test",
com.sap.sailing.domain.common.racelog,
com.sap.sailing.domain.common.racelog.utils,
com.sap.sailing.domain.common.dto
@@ -0,0 +1,47 @@
package com.sap.sailing.domain.common.racelog.utils;
import java.util.Calendar;
import java.util.Date;
import com.sap.sailing.domain.common.TimePoint;
public class RaceStateOfSameDayHelper {
public static boolean isRaceStateOfSameDay(TimePoint raceStartTimePoint, TimePoint raceFinishedTimePoint, Calendar now) {
Date raceStartTime = null;
Date raceFinishedTime = null;
if (raceStartTimePoint != null) {
raceStartTime = raceStartTimePoint.asDate();
}
if (raceFinishedTimePoint != null) {
raceFinishedTime = raceFinishedTimePoint.asDate();
}
return isRaceStateOfSameDay(raceStartTime, raceFinishedTime, now);
}
public static boolean isRaceStateOfSameDay(Date raceStartTime, Date raceFinishedTime, Calendar now) {
boolean result = false;
if (raceFinishedTime != null) {
Calendar finishedTimeCal = Calendar.getInstance();
finishedTimeCal.setTime(raceFinishedTime);
if(isSameDay(now, finishedTimeCal)) {
result = true;
}
} else if (raceStartTime != null) {
Calendar startTimeCal = Calendar.getInstance();
startTimeCal.setTime(raceStartTime);
if(isSameDay(now, startTimeCal)) {
result = true;
}
}
return result;
}
private static boolean isSameDay(Calendar cal1, Calendar cal2) {
return cal1.get(Calendar.YEAR) == cal2.get(Calendar.YEAR) &&
cal1.get(Calendar.DAY_OF_YEAR) == cal2.get(Calendar.DAY_OF_YEAR);
}
}
@@ -127,6 +127,7 @@ import com.sap.sailing.domain.common.impl.Util.Pair;
import com.sap.sailing.domain.common.impl.Util.Triple;
import com.sap.sailing.domain.common.impl.WindSourceImpl;
import com.sap.sailing.domain.common.racelog.RaceLogRaceStatus;
import com.sap.sailing.domain.common.racelog.utils.RaceStateOfSameDayHelper;
import com.sap.sailing.domain.leaderboard.Leaderboard;
import com.sap.sailing.domain.leaderboard.LeaderboardGroup;
import com.sap.sailing.domain.leaderboard.MetaLeaderboard;
@@ -3034,36 +3035,13 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S
entry.raceInfo = createRaceInfoDTO(seriesName, raceColumn, fleet);
if (showOnlyRacesOfSameDay) {
if (!isRaceStateOfSameDay(entry.raceInfo, dayToCheck)) {
if (!RaceStateOfSameDayHelper.isRaceStateOfSameDay(entry.raceInfo.startTime, entry.raceInfo.finishedTime, dayToCheck)) {
entry = null;
}
}
return entry;
}
private boolean isRaceStateOfSameDay(RaceInfoDTO raceInfo, Calendar now) {
boolean result = false;
if (raceInfo.finishedTime != null) {
Calendar finishedTimeCal = Calendar.getInstance();
finishedTimeCal.setTime(raceInfo.finishedTime);
if(isSameDay(now, finishedTimeCal)) {
result = true;
}
} else if (raceInfo.startTime != null) {
Calendar startTimeCal = Calendar.getInstance();
startTimeCal.setTime(raceInfo.startTime);
if(isSameDay(now, startTimeCal)) {
result = true;
}
}
return result;
}
private boolean isSameDay(Calendar cal1, Calendar cal2) {
return cal1.get(Calendar.YEAR) == cal2.get(Calendar.YEAR) &&
cal1.get(Calendar.DAY_OF_YEAR) == cal2.get(Calendar.DAY_OF_YEAR);
}
public String getBuildVersion() {
String version = "Unknown or Development";
File versionfile = new File(System.getProperty("jetty.home") + File.separator + "version.txt");
@@ -20,6 +20,7 @@ import com.sap.sailing.domain.base.RaceColumn;
import com.sap.sailing.domain.common.RaceIdentifier;
import com.sap.sailing.domain.common.TimePoint;
import com.sap.sailing.domain.common.racelog.RaceLogRaceStatus;
import com.sap.sailing.domain.common.racelog.utils.RaceStateOfSameDayHelper;
import com.sap.sailing.domain.leaderboard.Leaderboard;
import com.sap.sailing.domain.racelog.RaceLog;
import com.sap.sailing.domain.racelog.RaceLogFlagEvent;
@@ -113,27 +114,11 @@ public class EventRaceStatesJsonGetServlet extends AbstractJsonHttpServlet {
if (raceLog != null && !raceLog.isEmpty()) {
TimePoint startTime = new StartTimeFinder(raceLog).getStartTime();
TimePoint finishedTime = new FinishedTimeFinder(raceLog).getFinishedTime();
if(finishedTime != null) {
Calendar finishedTimeCal = Calendar.getInstance();
finishedTimeCal.setTime(finishedTime.asDate());
if(isSameDay(now, finishedTimeCal)) {
result = true;
}
} else if(startTime != null) {
Calendar startTimeCal = Calendar.getInstance();
startTimeCal.setTime(startTime.asDate());
if(isSameDay(now, startTimeCal)) {
result = true;
}
}
result = RaceStateOfSameDayHelper.isRaceStateOfSameDay(startTime, finishedTime, now);
}
return result;
}
private boolean isSameDay(Calendar cal1, Calendar cal2) {
return cal1.get(Calendar.YEAR) == cal2.get(Calendar.YEAR) &&
cal1.get(Calendar.DAY_OF_YEAR) == cal2.get(Calendar.DAY_OF_YEAR);
}
private JSONObject createRaceStateJsonObject(RaceColumn raceColumn, Fleet fleet) {
JSONObject result = new JSONObject();