moved the competitor cache to the base DomainFactory

This commit is contained in:
Axel Uhl
2012-04-20 18:04:58 +02:00
parent 10ef972c75
commit 4677f19d50
4 changed files with 35 additions and 21 deletions
@@ -55,7 +55,6 @@ import difflib.PatchFailedException;
*/
public class DomainFactoryImpl implements DomainFactory {
private final Map<String, Event> raceIDToEventCache;
private final Map<String, Competitor> boatIDToCompetitorCache;
private final Map<Iterable<String>, ControlPoint> controlPointCache;
private final Map<String, BoatClass> olympicClassesByID;
private final BoatClass unknownBoatClass;
@@ -64,7 +63,6 @@ public class DomainFactoryImpl implements DomainFactory {
public DomainFactoryImpl(com.sap.sailing.domain.base.DomainFactory baseDomainFactory) {
this.baseDomainFactory = baseDomainFactory;
raceIDToEventCache = new HashMap<String, Event>();
boatIDToCompetitorCache = new HashMap<String, Competitor>();
controlPointCache = new HashMap<Iterable<String>, ControlPoint>();
olympicClassesByID = new HashMap<String, BoatClass>();
/*
@@ -102,12 +100,12 @@ public class DomainFactoryImpl implements DomainFactory {
@Override
public Competitor getCompetitorByBoatID(String boatID) {
return boatIDToCompetitorCache.get(boatID);
return baseDomainFactory.getExistingCompetitorById(boatID);
}
@Override
public Competitor getOrCreateCompetitor(com.sap.sailing.domain.swisstimingadapter.Competitor competitor, BoatClass boatClass) {
Competitor result = boatIDToCompetitorCache.get(competitor.getBoatID());
Competitor result = getCompetitorByBoatID(competitor.getBoatID());
if (result == null) {
Boat boat = new BoatImpl(competitor.getName(), boatClass, competitor.getBoatID());
List<Person> teamMembers = new ArrayList<Person>();
@@ -116,8 +114,7 @@ public class DomainFactoryImpl implements DomainFactory {
/* dateOfBirth */ null, teamMemberName.trim()));
}
Team team = new TeamImpl(competitor.getName(), teamMembers, /* coach */ null);
result = new com.sap.sailing.domain.base.impl.CompetitorImpl(competitor.getBoatID(), competitor.getName(), team, boat);
boatIDToCompetitorCache.put(competitor.getBoatID(), result);
result = baseDomainFactory.createCompetitor(competitor.getBoatID(), competitor.getName(), team, boat);
}
return result;
}
@@ -30,7 +30,6 @@ import com.sap.sailing.domain.base.RaceDefinition;
import com.sap.sailing.domain.base.Team;
import com.sap.sailing.domain.base.Waypoint;
import com.sap.sailing.domain.base.impl.BoatImpl;
import com.sap.sailing.domain.base.impl.CompetitorImpl;
import com.sap.sailing.domain.base.impl.CourseImpl;
import com.sap.sailing.domain.base.impl.EventImpl;
import com.sap.sailing.domain.base.impl.KilometersPerHourSpeedWithBearingImpl;
@@ -80,9 +79,6 @@ public class DomainFactoryImpl implements DomainFactory {
private final Map<ControlPoint, com.sap.sailing.domain.base.ControlPoint> controlPointCache =
new HashMap<ControlPoint, com.sap.sailing.domain.base.ControlPoint>();
private final Map<com.tractrac.clientmodule.Competitor, com.sap.sailing.domain.base.Competitor> competitorCache =
new HashMap<com.tractrac.clientmodule.Competitor, com.sap.sailing.domain.base.Competitor>();
private final Map<String, Person> personCache = new HashMap<String, Person>();
private final Map<String, Team> teamCache = new HashMap<String, Team>();
@@ -167,18 +163,15 @@ public class DomainFactoryImpl implements DomainFactory {
@Override
public Competitor getOrCreateCompetitor(com.tractrac.clientmodule.Competitor competitor) {
synchronized (competitorCache) {
Competitor result = competitorCache.get(competitor);
if (result == null) {
BoatClass boatClass = getOrCreateBoatClass(competitor.getCompetitorClass());
Nationality nationality = getOrCreateNationality(competitor.getNationality());
Team team = getOrCreateTeam(competitor.getName(), nationality);
Boat boat = new BoatImpl(competitor.getShortName(), boatClass, competitor.getShortName());
result = new CompetitorImpl(competitor.getId(), competitor.getName(), team, boat);
competitorCache.put(competitor, result);
}
return result;
Competitor result = baseDomainFactory.getExistingCompetitorById(competitor.getId());
if (result == null) {
BoatClass boatClass = getOrCreateBoatClass(competitor.getCompetitorClass());
Nationality nationality = getOrCreateNationality(competitor.getNationality());
Team team = getOrCreateTeam(competitor.getName(), nationality);
Boat boat = new BoatImpl(competitor.getShortName(), boatClass, competitor.getShortName());
result = baseDomainFactory.createCompetitor(competitor.getId(), competitor.getName(), team, boat);
}
return result;
}
@Override
@@ -1,5 +1,7 @@
package com.sap.sailing.domain.base;
import java.io.Serializable;
import com.sap.sailing.domain.base.impl.DomainFactoryImpl;
import com.sap.sailing.domain.common.TimePoint;
import com.sap.sailing.domain.tracking.MarkPassing;
@@ -22,4 +24,8 @@ public interface DomainFactory {
MarkPassing createMarkPassing(TimePoint timePoint, Waypoint waypoint, Competitor competitor);
BoatClass getOrCreateBoatClass(String name, boolean typicallyStartsUpwind);
Competitor getExistingCompetitorById(Serializable competitorId);
Competitor createCompetitor(Serializable id, String name, Team team, Boat boat);
}
@@ -1,9 +1,11 @@
package com.sap.sailing.domain.base.impl;
import java.awt.TrayIcon.MessageType;
import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;
import com.sap.sailing.domain.base.Boat;
import com.sap.sailing.domain.base.BoatClass;
import com.sap.sailing.domain.base.Buoy;
import com.sap.sailing.domain.base.Competitor;
@@ -11,6 +13,7 @@ import com.sap.sailing.domain.base.ControlPoint;
import com.sap.sailing.domain.base.DomainFactory;
import com.sap.sailing.domain.base.Gate;
import com.sap.sailing.domain.base.Nationality;
import com.sap.sailing.domain.base.Team;
import com.sap.sailing.domain.base.Waypoint;
import com.sap.sailing.domain.common.TimePoint;
import com.sap.sailing.domain.tracking.MarkPassing;
@@ -26,11 +29,14 @@ public class DomainFactoryImpl implements DomainFactory {
private final Map<String, Buoy> buoyCache;
private final Map<String, BoatClass> boatClassCache;
private final Map<Serializable, Competitor> competitorCache;
public DomainFactoryImpl() {
nationalityCache = new HashMap<String, Nationality>();
buoyCache = new HashMap<String, Buoy>();
boatClassCache = new HashMap<String, BoatClass>();
competitorCache = new HashMap<Serializable, Competitor>();
}
@Override
@@ -87,4 +93,16 @@ public class DomainFactoryImpl implements DomainFactory {
}
}
@Override
public Competitor getExistingCompetitorById(Serializable competitorId) {
return competitorCache.get(competitorId);
}
@Override
public Competitor createCompetitor(Serializable id, String name, Team team, Boat boat) {
Competitor result = new CompetitorImpl(id, name, team, boat);
competitorCache.put(id, result);
return result;
}
}