made robust against missing canSendRequest in DB; added logging for getLeaderboardByName handling time;

remove race from default leaderboard if tracking of single race was stopped
This commit is contained in:
Axel Uhl
2011-11-22 16:29:56 +01:00
parent ed53333f9e
commit 7267c35a24
3 changed files with 13 additions and 1 deletions
@@ -85,10 +85,11 @@ public class SwissTimingAdapterPersistenceImpl implements SwissTimingAdapterPers
}
private SwissTimingConfiguration loadSwissTimingConfiguration(DBObject object) {
Boolean canSendRequests = (Boolean) object.get(FieldNames.ST_CONFIG_CAN_SEND_REQUESTS.name());
return swissTimingFactory.createSwissTimingConfiguration((String) object.get(FieldNames.ST_CONFIG_NAME.name()),
(String) object.get(FieldNames.ST_CONFIG_HOSTNAME.name()),
(Integer) object.get(FieldNames.ST_CONFIG_PORT.name()),
(Boolean) object.get(FieldNames.ST_CONFIG_CAN_SEND_REQUESTS.name()));
canSendRequests==null?false:canSendRequests);
}
@Override
@@ -18,6 +18,7 @@ import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.logging.Logger;
import org.osgi.framework.BundleContext;
import org.osgi.util.tracker.ServiceTracker;
@@ -97,6 +98,8 @@ import com.sap.sailing.util.CountryCode;
* The server side implementation of the RPC service.
*/
public class SailingServiceImpl extends RemoteServiceServlet implements SailingService {
private static final Logger logger = Logger.getLogger(SailingServiceImpl.class.getName());
private static final long serialVersionUID = 9031688830194537489L;
private static final long TIMEOUT_FOR_RECEIVING_RACE_DEFINITION_IN_MILLISECONDS = 60000;
@@ -136,6 +139,7 @@ public class SailingServiceImpl extends RemoteServiceServlet implements SailingS
public LeaderboardDAO getLeaderboardByName(String leaderboardName, Date date,
Collection<String> namesOfRacesForWhichToLoadLegDetails) throws Exception {
long startOfRequestHandling = System.currentTimeMillis();
LeaderboardDAO result = null;
Leaderboard leaderboard = getService().getLeaderboardByName(leaderboardName);
if (leaderboard != null) {
@@ -173,6 +177,8 @@ public class SailingServiceImpl extends RemoteServiceServlet implements SailingS
}
}
}
logger.fine("getLeaderboardByName("+leaderboardName+", "+date+", "+namesOfRacesForWhichToLoadLegDetails+") took "+
(System.currentTimeMillis()-startOfRequestHandling)+"ms");
return result;
}
@@ -417,6 +417,11 @@ public class RacingEventServiceImpl implements RacingEventService {
raceTracker.stop(); // this also removes the TrackedRace from trackedEvent
trackerIter.remove();
raceTrackersByID.remove(raceTracker.getID());
for (RaceDefinition trackerRace : raceTracker.getRaces()) {
// remove from default leaderboard
Leaderboard defaultLeaderboard = getLeaderboardByName(DEFAULT_LEADERBOARD_NAME);
defaultLeaderboard.removeRaceColumn(trackerRace.getName());
}
}
}
} else {