bug6070: uncompilable interims commit

This commit is contained in:
Axel Uhl
2024-11-19 11:48:47 +01:00
parent f8bd82e05d
commit e6afa0e362
5 changed files with 55 additions and 19 deletions
@@ -14,7 +14,7 @@ import com.sap.sailing.domain.tractracadapter.DomainFactory;
import com.sap.sailing.domain.tractracadapter.LoadingQueueDoneCallBack;
import com.sap.sailing.domain.tractracadapter.Receiver;
import com.tractrac.model.lib.api.data.IPosition;
import com.tractrac.model.lib.api.map.IMapItem;
import com.tractrac.model.lib.api.map.IPositionedItem;
import com.tractrac.subscription.lib.api.map.IPositionedItemPositionListener;
public class PositionConversionTest extends AbstractTracTracLiveTest {
@@ -31,7 +31,7 @@ public class PositionConversionTest extends AbstractTracTracLiveTest {
@Test
public void testReceiptOfControlPointPosition() {
final IMapItem[] firstTracked = new IMapItem[1];
final IPositionedItem[] firstTracked = new IPositionedItem[1];
final IPosition[] firstData = new IPosition[1];
final Object semaphor = new Object();
@@ -58,11 +58,11 @@ public class PositionConversionTest extends AbstractTracTracLiveTest {
@Override
public void subscribe() {
getRaceSubscriber().subscribePositionedItemsPositions(new IPositionedItemPositionListener() {
getRaceSubscriber().subscribePositionedItemPositions(new IPositionedItemPositionListener() {
private boolean first = true;
@Override
public void gotControlPointPosition(IMapItem control, IPosition position, int controlPointNumber) {
public void gotPositionedItemPosition(IPositionedItem control, IPosition position) {
if (first) {
synchronized (semaphor) {
firstTracked[0] = control;
@@ -228,7 +228,7 @@ public interface DomainFactory {
* The record may be for a single mark or a gate. If for a gate, the {@link ControlPointPositionData#getIndex()
* index} is used to determine which of its marks is affected.
*/
Mark getMark(TracTracControlPoint controlPoint, int zeroBasedMarkIndex);
Mark getMark(IPositionedItem positionedItem);
com.sap.sailing.domain.base.ControlPoint getOrCreateControlPoint(TracTracControlPoint controlPoint);
@@ -10,6 +10,7 @@ import com.sap.sailing.domain.tractracadapter.impl.RaceCourseReceiver;
import com.sap.sse.common.Color;
import com.sap.sse.common.Named;
import com.tractrac.model.lib.api.event.IRaceCompetitor;
import com.tractrac.model.lib.api.map.IPositionedItem;
/**
* TracTrac objects can be augmented by what TracTrac calls a "DataSheet." These optional data sheets can provide
@@ -46,7 +47,7 @@ public interface MetadataParser {
/**
* Returns as many metadata objects as there are marks in the control point (two for a gate, one otherwise)
*/
Iterable<ControlPointMetaData> parseControlPointMetadata(TracTracControlPoint controlPoint);
ControlPointMetaData parseControlPointMetadata(IPositionedItem positionedItem);
/**
* Parses the race metadata for sideline information
@@ -4,13 +4,12 @@ import java.util.UUID;
import com.sap.sailing.domain.tractracadapter.TracTracControlPoint;
import com.tractrac.model.lib.api.map.IMapItem;
import com.tractrac.model.lib.api.map.IPositionedItem;
public class ControlPointAdapter extends AbstractWithID implements TracTracControlPoint {
private static final long serialVersionUID = 1012632574166553433L;
private final IPositionedItem controlPoint;
private final IMapItem controlPoint;
public ControlPointAdapter(IPositionedItem controlPoint) {
public ControlPointAdapter(IMapItem controlPoint) {
super();
this.controlPoint = controlPoint;
}
@@ -55,4 +54,9 @@ public class ControlPointAdapter extends AbstractWithID implements TracTracContr
public UUID getSecondMarkId() {
return controlPoint.getPositionedItems().get(1).getId();
}
@Override
public boolean getHasTwoPoints() {
return controlPoint.getPositionedItems().size() == 2;
}
}
@@ -116,6 +116,7 @@ import com.tractrac.model.lib.api.event.IEvent;
import com.tractrac.model.lib.api.event.IRace;
import com.tractrac.model.lib.api.event.IRaceCompetitor;
import com.tractrac.model.lib.api.map.IMapItem;
import com.tractrac.model.lib.api.map.IPositionedItem;
import com.tractrac.subscription.lib.api.IEventSubscriber;
import com.tractrac.subscription.lib.api.IRaceSubscriber;
import com.tractrac.subscription.lib.api.SubscriberInitializationException;
@@ -129,7 +130,7 @@ public class DomainFactoryImpl implements DomainFactory {
private final com.sap.sailing.domain.base.DomainFactory baseDomainFactory;
private final WeakValueCache<TracTracControlPoint, com.sap.sailing.domain.base.ControlPoint> controlPointCache = new WeakValueCache<>(new HashMap<>());
private final WeakValueCache<IMapItem, com.sap.sailing.domain.base.ControlPoint> controlPointCache = new WeakValueCache<>(new HashMap<>());
private final Map<com.sap.sse.common.Util.Pair<String, UUID>, DynamicPerson> personCache = new HashMap<>();
@@ -229,11 +230,11 @@ public class DomainFactoryImpl implements DomainFactory {
return sidelines;
}
public com.sap.sailing.domain.base.ControlPoint getOrCreateControlPoint(TracTracControlPoint controlPoint) {
public com.sap.sailing.domain.base.ControlPoint getOrCreateControlPoint(IMapItem mapItem) {
synchronized (controlPointCache) {
com.sap.sailing.domain.base.ControlPoint domainControlPoint = controlPointCache.get(controlPoint);
com.sap.sailing.domain.base.ControlPoint domainControlPoint = controlPointCache.get(mapItem);
if (domainControlPoint == null) {
final Iterable<MetadataParser.ControlPointMetaData> controlPointMetadata = getMetadataParser().parseControlPointMetadata(controlPoint);
final MetadataParser.ControlPointMetaData controlPointMetadata = getMetadataParser().parseControlPointMetadata(positionedItem);
final List<Mark> marks = new ArrayList<Mark>();
for (ControlPointMetaData markMetadata : controlPointMetadata) {
final Mark mark = baseDomainFactory.getOrCreateMark(markMetadata.getId(), markMetadata.getName(),
@@ -242,18 +243,48 @@ public class DomainFactoryImpl implements DomainFactory {
markMetadata.getShape(), markMetadata.getPattern());
marks.add(mark);
}
if (controlPoint.getHasTwoPoints()) {
if (positionedItem.getHasTwoPoints()) {
// it's a gate
Iterator<Mark> markIter = marks.iterator();
Mark mark1 = markIter.next();
Mark mark2 = markIter.next();
domainControlPoint = baseDomainFactory.createControlPointWithTwoMarks(controlPoint.getId(), mark1,
mark2, controlPoint.getName(), controlPoint.getShortName());
domainControlPoint = baseDomainFactory.createControlPointWithTwoMarks(positionedItem.getId(), mark1,
mark2, positionedItem.getName(), positionedItem.getShortName());
} else {
Mark mark = marks.iterator().next();
domainControlPoint = mark;
}
controlPointCache.put(controlPoint, domainControlPoint);
controlPointCache.put(positionedItem, domainControlPoint);
}
return domainControlPoint;
}
}
public com.sap.sailing.domain.base.ControlPoint getOrCreateControlPoint(IPositionedItem positionedItem) {
synchronized (controlPointCache) {
com.sap.sailing.domain.base.ControlPoint domainControlPoint = controlPointCache.get(positionedItem);
if (domainControlPoint == null) {
final MetadataParser.ControlPointMetaData controlPointMetadata = getMetadataParser().parseControlPointMetadata(positionedItem);
final List<Mark> marks = new ArrayList<Mark>();
for (ControlPointMetaData markMetadata : controlPointMetadata) {
final Mark mark = baseDomainFactory.getOrCreateMark(markMetadata.getId(), markMetadata.getName(),
/* no separate short name; use name as short name, too */ markMetadata.getName(),
markMetadata.getType(), markMetadata.getColor(),
markMetadata.getShape(), markMetadata.getPattern());
marks.add(mark);
}
if (positionedItem.getHasTwoPoints()) {
// it's a gate
Iterator<Mark> markIter = marks.iterator();
Mark mark1 = markIter.next();
Mark mark2 = markIter.next();
domainControlPoint = baseDomainFactory.createControlPointWithTwoMarks(positionedItem.getId(), mark1,
mark2, positionedItem.getName(), positionedItem.getShortName());
} else {
Mark mark = marks.iterator().next();
domainControlPoint = mark;
}
controlPointCache.put(positionedItem, domainControlPoint);
}
return domainControlPoint;
}
@@ -1014,8 +1045,8 @@ public class DomainFactoryImpl implements DomainFactory {
}
@Override
public Mark getMark(TracTracControlPoint controlPoint, int zeroBasedMarkIndex) {
com.sap.sailing.domain.base.ControlPoint myControlPoint = getOrCreateControlPoint(controlPoint);
public Mark getMark(IPositionedItem positionedItem) {
com.sap.sailing.domain.base.ControlPoint myControlPoint = getOrCreateControlPoint(positionedItem);
Mark result;
Iterator<Mark> iter = myControlPoint.getMarks().iterator();
if (controlPoint.getHasTwoPoints()) {