bug6057: visitor pattern for Message; auto-start queclinkadapter on level 5

This commit is contained in:
Axel Uhl committed 2024-09-17 13:24:06 +02:00
1 parent 71aa3dcd7b
commit 515e5b346e
37 files changed
+228 -39

No files matched your search

@@ -5,9 +5,12 @@ Bundle-SymbolicName: com.sap.sailing.domain.queclinkadapter
Bundle-Version: 1.0.0.qualifier
Bundle-Vendor: SAP
Automatic-Module-Name: com.sap.sailing.domain.queclinkadapter
Bundle-Activator: com.sap.sailing.domain.queclinkadapter.impl.Activator
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Require-Bundle: com.sap.sailing.domain.shared.android,
com.sap.sailing.domain,
com.sap.sailing.domain.common,
com.sap.sse.common,
com.sap.sailing.domain.racelogtrackingadapter
com.sap.sailing.domain.racelogtrackingadapter,
com.sap.sailing.server.trackfiles
Import-Package: org.osgi.framework;version="[1.10.0,2.0.0]"
@@ -20,4 +20,6 @@ public interface Message {
return String.format("%s%c%s$", getPrefix(), getTypeSeparator(),
Util.joinStrings(",", Util.map(Arrays.asList(getParameters()), p->p==null?"":p)));
}
<T> T accept(MessageVisitor<T> visitor);
}
@@ -0,0 +1,13 @@
package com.sap.sailing.domain.queclinkadapter;
public interface MessageVisitor<T> {
T visit(FRIReport friReport);
T visit(HBDAcknowledgement hbdAcknowledgement);
T visit(HBDServerAcknowledgement hbdServerAcknowledgement);
T visit(ServerAcknowledgement serverAcknowledgement);
}
@@ -0,0 +1,31 @@
package com.sap.sailing.domain.queclinkadapter.impl;
import com.sap.sailing.domain.queclinkadapter.FRIReport;
import com.sap.sailing.domain.queclinkadapter.HBDAcknowledgement;
import com.sap.sailing.domain.queclinkadapter.HBDServerAcknowledgement;
import com.sap.sailing.domain.queclinkadapter.MessageVisitor;
import com.sap.sailing.domain.queclinkadapter.ServerAcknowledgement;
public class AbstractMessageVisitor<T> implements MessageVisitor<T> {
@Override
public T visit(FRIReport friReport) {
return null;
}
@Override
public T visit(HBDAcknowledgement hbdAcknowledgement) {
return null;
}
@Override
public T visit(HBDServerAcknowledgement hbdServerAcknowledgement) {
return null;
}
@Override
public T visit(ServerAcknowledgement serverAcknowledgement) {
return null;
}
}
@@ -0,0 +1,28 @@
package com.sap.sailing.domain.queclinkadapter.impl;
import java.util.HashSet;
import java.util.Set;
import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;
import org.osgi.framework.ServiceRegistration;
import com.sap.sailing.domain.queclinkadapter.tracker.QueclinkGPSFixImporter;
import com.sap.sailing.server.trackfiles.common.GPSFixImporterRegistration;
public class Activator implements BundleActivator {
private Set<ServiceRegistration<?>> registrations = new HashSet<>();
@Override
public void start(BundleContext context) throws Exception {
registrations.addAll(GPSFixImporterRegistration.register(new QueclinkGPSFixImporter(), context));
}
@Override
public void stop(BundleContext context) throws Exception {
for (ServiceRegistration<?> reg : registrations) {
reg.unregister();
}
registrations.clear();
}
}
@@ -11,6 +11,7 @@ import com.sap.sailing.domain.queclinkadapter.FRIReport;
import com.sap.sailing.domain.queclinkadapter.IOStatus;
import com.sap.sailing.domain.queclinkadapter.MessageType;
import com.sap.sailing.domain.queclinkadapter.MessageType.Direction;
import com.sap.sailing.domain.queclinkadapter.MessageVisitor;
import com.sap.sailing.domain.queclinkadapter.PositionRelatedReport;
import com.sap.sse.common.TimePoint;
import com.sap.sse.common.Util;
@@ -112,4 +113,9 @@ public class FRIReportImpl extends MessageWithDeviceOriginImpl implements FRIRep
public IOStatus getIoStatus() {
return ioStatus;
}
@Override
public <T> T accept(MessageVisitor<T> visitor) {
return visitor.visit(this);
}
}
@@ -5,6 +5,7 @@ import java.text.ParseException;
import com.sap.sailing.domain.queclinkadapter.HBDAcknowledgement;
import com.sap.sailing.domain.queclinkadapter.MessageType;
import com.sap.sailing.domain.queclinkadapter.MessageType.Direction;
import com.sap.sailing.domain.queclinkadapter.MessageVisitor;
import com.sap.sse.common.TimePoint;
public class HBDAcknowledgementImpl extends MessageWithDeviceOriginImpl implements HBDAcknowledgement {
@@ -30,4 +31,9 @@ public class HBDAcknowledgementImpl extends MessageWithDeviceOriginImpl implemen
/* deviceName */ parameterList[2],
/* sendTime */ MessageParserImpl.parseTimeStamp(parameterList[3]));
}
@Override
public <T> T accept(MessageVisitor<T> visitor) {
return visitor.visit(this);
}
}
@@ -4,6 +4,7 @@ import java.text.ParseException;
import com.sap.sailing.domain.queclinkadapter.HBDServerAcknowledgement;
import com.sap.sailing.domain.queclinkadapter.MessageType.Direction;
import com.sap.sailing.domain.queclinkadapter.MessageVisitor;
public class HBDServerAcknowledgementImpl extends HBDMessageImpl implements HBDServerAcknowledgement {
public HBDServerAcknowledgementImpl(int protocolVersion, short countNumber) {
@@ -19,4 +20,9 @@ public class HBDServerAcknowledgementImpl extends HBDMessageImpl implements HBDS
public String[] getParameters() {
return new String[] { MessageParserImpl.formatProtocolVersionHex(getProtocolVersion()), MessageParserImpl.formatCountNumberHex(getCountNumber()) };
}
@Override
public <T> T accept(MessageVisitor<T> visitor) {
return visitor.visit(this);
}
}
@@ -1,13 +1,18 @@
package com.sap.sailing.domain.queclinkadapter.impl;
import java.util.Arrays;
import com.sap.sailing.domain.common.tracking.GPSFix;
import com.sap.sailing.domain.common.tracking.GPSFixMoving;
import com.sap.sailing.domain.common.tracking.impl.GPSFixImpl;
import com.sap.sailing.domain.common.tracking.impl.GPSFixMovingImpl;
import com.sap.sailing.domain.queclinkadapter.FRIReport;
import com.sap.sailing.domain.queclinkadapter.MessageWithDeviceOrigin;
import com.sap.sailing.domain.queclinkadapter.PositionRelatedReport;
import com.sap.sailing.domain.racelog.tracking.SensorFixStore;
import com.sap.sailing.domain.racelogtracking.SmartphoneImeiIdentifier;
import com.sap.sailing.domain.racelogtracking.impl.SmartphoneImeiIdentifierImpl;
import com.sap.sse.common.Util;
/**
* Takes objects of type {@link PositionRelatedReport} and produces objects of type {@link GPSFix} or
@@ -31,4 +36,10 @@ public class PositionRelatedReportToGPSFixConverter {
public SmartphoneImeiIdentifier getDeviceIdentifier(MessageWithDeviceOrigin message) {
return new SmartphoneImeiIdentifierImpl(message.getImei());
}
}
public void ingestFixesToStore(SensorFixStore store, FRIReport fixesReceived) {
final SmartphoneImeiIdentifier deviceIdentifier = getDeviceIdentifier(fixesReceived);
final Iterable<GPSFix> fixes = Util.map(Arrays.asList(fixesReceived.getPositionRelatedReports()), this::createGPSFixFromPositionRelatedReport);
store.storeFixes(deviceIdentifier, fixes, /* returnManeuverUpdate */ false, /* returnLiveDelay */ false);
}
}
@@ -3,6 +3,7 @@ package com.sap.sailing.domain.queclinkadapter.impl;
import java.text.ParseException;
import com.sap.sailing.domain.queclinkadapter.MessageType.Direction;
import com.sap.sailing.domain.queclinkadapter.MessageVisitor;
import com.sap.sailing.domain.queclinkadapter.ServerAcknowledgement;
public class ServerAcknowledgementImpl extends MessageImpl implements ServerAcknowledgement {
@@ -30,4 +31,9 @@ public class ServerAcknowledgementImpl extends MessageImpl implements ServerAckn
public short getCountNumber() {
return countNumber;
}
@Override
public <T> T accept(MessageVisitor<T> visitor) {
return visitor.visit(this);
}
}
@@ -0,0 +1,53 @@
package com.sap.sailing.domain.queclinkadapter.tracker;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.nio.charset.Charset;
import java.util.Arrays;
import com.sap.sailing.domain.queclinkadapter.FRIReport;
import com.sap.sailing.domain.queclinkadapter.Message;
import com.sap.sailing.domain.queclinkadapter.MessageParser;
import com.sap.sailing.domain.queclinkadapter.MessageVisitor;
import com.sap.sailing.domain.queclinkadapter.PositionRelatedReport;
import com.sap.sailing.domain.queclinkadapter.impl.AbstractMessageVisitor;
import com.sap.sailing.domain.queclinkadapter.impl.PositionRelatedReportToGPSFixConverter;
import com.sap.sailing.domain.trackfiles.TrackFileImportDeviceIdentifier;
import com.sap.sailing.domain.trackfiles.TrackFileImportDeviceIdentifierImpl;
import com.sap.sailing.server.trackfiles.common.BaseGPSFixImporterImpl;
public class QueclinkGPSFixImporter extends BaseGPSFixImporterImpl {
@Override
public boolean importFixes(InputStream inputStream, Charset charset, Callback callback,
boolean inferSpeedAndBearing, String sourceName) throws Exception {
final PositionRelatedReportToGPSFixConverter converter = new PositionRelatedReportToGPSFixConverter();
final Reader reader = new InputStreamReader(inputStream, charset);
final MessageParser parser = MessageParser.INSTANCE;
final MessageVisitor<Void> visitor = new AbstractMessageVisitor<Void>() {
@Override
public Void visit(FRIReport friReport) {
final TrackFileImportDeviceIdentifier deviceIdentifier = new TrackFileImportDeviceIdentifierImpl(sourceName, friReport.getImei());
for (final PositionRelatedReport prr : friReport.getPositionRelatedReports()) {
addFixAndInfer(callback, inferSpeedAndBearing, converter.createGPSFixFromPositionRelatedReport(prr), deviceIdentifier);
}
return null;
}
};
for (final Message m : parser.parse(reader)) {
m.accept(visitor);
}
return true;
}
@Override
public Iterable<String> getSupportedFileExtensions() {
return Arrays.asList("qec", "", "log");
}
@Override
public String getType() {
return "Queclink GPS Fix Importer";
}
}
@@ -36,12 +36,19 @@ public interface GPSFixImporter {
String FILE_EXTENSION_PROPERTY = "fileExt";
/**
* Callback through which fixes found in the source stream are passed back.
* Callback through which fixes found in the source stream are passed back. Implementing classes may choose to
* override {@link #addFixes(Iterable, TrackFileImportDeviceIdentifier)} in case they have a better way to process a
* whole set of fixes from the same device than adding one by one.
*
* @author Fredrik Teschke
*
*/
interface Callback {
void addFix(GPSFix fix, TrackFileImportDeviceIdentifier device);
default void addFixes(Iterable<GPSFix> fixes, TrackFileImportDeviceIdentifier device) {
fixes.forEach(fix->addFix(fix, device));
}
}
/**
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<?pde version="3.5"?>
<product name="SAP Race Analysis" uid="raceanalysis.product.id" id="raceanalysis.product" version="1.0.0" useFeatures="true" includeLaunchers="false">
<product name="SAP Race Analysis" uid="raceanalysis.product.id" id="raceanalysis.product" version="1.0.0" type="features" includeLaunchers="false" autoIncludeRequirements="true">
<configIni use="default">
</configIni>
@@ -42,8 +42,7 @@
<plugin id="com.sap.sailing.domain.igtimiadapter" autoStart="true" startLevel="4" />
<plugin id="com.sap.sailing.domain.igtimiadapter.gateway" autoStart="true" startLevel="5" />
<plugin id="com.sap.sailing.domain.oceanraceadapter" autoStart="true" startLevel="5" />
<plugin id="com.sap.sailing.domain.yellowbrickadapter" autoStart="true" startLevel="5" />
<plugin id="com.sap.sailing.domain.yellowbrickadapter.persistence" autoStart="true" startLevel="4" />
<plugin id="com.sap.sailing.domain.queclinkadapter" autoStart="true" startLevel="5" />
<plugin id="com.sap.sailing.domain.racelogtrackingadapter" autoStart="true" startLevel="4" />
<plugin id="com.sap.sailing.domain.swisstimingadapter" autoStart="true" startLevel="5" />
<plugin id="com.sap.sailing.domain.swisstimingadapter.persistence" autoStart="true" startLevel="4" />
@@ -51,26 +50,27 @@
<plugin id="com.sap.sailing.domain.tractracadapter" autoStart="true" startLevel="5" />
<plugin id="com.sap.sailing.domain.tractracadapter.persistence" autoStart="true" startLevel="4" />
<plugin id="com.sap.sailing.domain.windfinderadapter" autoStart="true" startLevel="4" />
<plugin id="com.sap.sailing.domain.yellowbrickadapter" autoStart="true" startLevel="5" />
<plugin id="com.sap.sailing.domain.yellowbrickadapter.persistence" autoStart="true" startLevel="4" />
<plugin id="com.sap.sailing.ess40.resultimport" autoStart="true" startLevel="4" />
<plugin id="com.sap.sailing.expeditionconnector.persistence" autoStart="true" startLevel="4" />
<plugin id="com.sap.sailing.freg.resultimport" autoStart="true" startLevel="4" />
<plugin id="com.sap.sailing.gwt.ui" autoStart="true" startLevel="6" />
<plugin id="com.sap.sailing.hanaexport" autoStart="true" startLevel="5" />
<plugin id="com.sap.sailing.kiworesultimport" autoStart="true" startLevel="4" />
<plugin id="com.sap.sailing.landscape.gateway" autoStart="true" startLevel="5" />
<plugin id="com.sap.sailing.manage2sail.resultimport" autoStart="true" startLevel="4" />
<plugin id="com.sap.sailing.sailti.resultimport" autoStart="true" startLevel="4" />
<plugin id="com.sap.sailing.monitoring" autoStart="true" startLevel="7" />
<plugin id="com.sap.sailing.news" autoStart="true" startLevel="4" />
<plugin id="com.sap.sailing.polars" autoStart="true" startLevel="5" />
<plugin id="com.sap.sailing.landscape.gateway" autoStart="true" startLevel="5" />
<plugin id="com.sap.sailing.polars.datamining" autoStart="true" startLevel="5" />
<plugin id="com.sap.sse.security.datamining" autoStart="true" startLevel="5" />
<plugin id="com.sap.sailing.resultimport" autoStart="true" startLevel="4" />
<plugin id="com.sap.sailing.sailti.resultimport" autoStart="true" startLevel="4" />
<plugin id="com.sap.sailing.sailwave.resultimport" autoStart="true" startLevel="4" />
<plugin id="com.sap.sailing.server" autoStart="true" startLevel="5" />
<plugin id="com.sap.sailing.server.gateway" autoStart="true" startLevel="5" />
<plugin id="com.sap.sailing.shared.server" autoStart="true" startLevel="5" />
<plugin id="com.sap.sailing.shared.server.gateway" autoStart="true" startLevel="5" />
<plugin id="com.sap.sailing.hanaexport" autoStart="true" startLevel="5" />
<plugin id="com.sap.sailing.velum.resultimport" autoStart="true" startLevel="4" />
<plugin id="com.sap.sailing.windestimation" autoStart="true" startLevel="5" />
<plugin id="com.sap.sailing.www" autoStart="true" startLevel="5" />
@@ -80,14 +80,15 @@
<plugin id="com.sap.sse.landscape.aws" autoStart="true" startLevel="4" />
<plugin id="com.sap.sse.mail" autoStart="true" startLevel="5" />
<plugin id="com.sap.sse.replication" autoStart="true" startLevel="6" />
<plugin id="com.sap.sse.security.datamining" autoStart="true" startLevel="5" />
<plugin id="com.sap.sse.security.ui" autoStart="true" startLevel="6" />
<plugin id="com.sap.sse.security.userstore.mongodb" autoStart="true" startLevel="4" />
<plugin id="org.apache.aries.spifly.dynamic.bundle" autoStart="true" startLevel="3" />
<plugin id="org.eclipse.equinox.common" autoStart="true" startLevel="2" />
<plugin id="org.eclipse.equinox.simpleconfigurator" autoStart="true" startLevel="2" />
<plugin id="org.eclipse.jetty.apache-jsp" autoStart="true" startLevel="4"/>
<plugin id="org.eclipse.jetty.annotations" autoStart="true" startLevel="4"/>
<plugin id="org.eclipse.jetty.http" autoStart="true" startLevel="3"/>
<plugin id="org.eclipse.jetty.annotations" autoStart="true" startLevel="4" />
<plugin id="org.eclipse.jetty.apache-jsp" autoStart="true" startLevel="4" />
<plugin id="org.eclipse.jetty.http" autoStart="true" startLevel="3" />
<plugin id="org.eclipse.jetty.osgi.boot" autoStart="true" startLevel="3" />
<plugin id="org.eclipse.osgi" autoStart="true" startLevel="-1" />
<property name="osgi.noShutdown" value="true" />
@@ -305,6 +305,11 @@
<level>5</level>
<autoStart>true</autoStart>
</bundle>
<bundle>
<id>com.sap.sailing.domain.queclinkadapter</id>
<level>5</level>
<autoStart>true</autoStart>
</bundle>
<bundle>
<id>com.sap.sse.security.ui</id>
<level>6</level>
@@ -85,6 +85,12 @@ public class TrackFilesImporter {
storeFix(fix, device);
deviceIds.add(device);
}
@Override
public void addFixes(Iterable<GPSFix> fixes, TrackFileImportDeviceIdentifier device) {
storeFixes(fixes, device);
deviceIds.add(device);
}
}, true, fileName);
if (ok) {
succeeded.set(ok);
@@ -130,6 +136,14 @@ public class TrackFilesImporter {
}
}
void storeFixes(Iterable<GPSFix> fixes, DeviceIdentifier deviceIdentifier) {
try {
service.getSensorFixStore().storeFixes(deviceIdentifier, fixes, /* returnManeuverUpdate */ false, /* returnLiveDelay */ false);
} catch (NoCorrespondingServiceRegisteredException e) {
logger.log(Level.WARNING, "Could not store fix for " + deviceIdentifier);
}
}
Collection<GPSFixImporter> getGPSFixImporters(String fileExtension) {
List<GPSFixImporter> result = new ArrayList<>();
Collection<ServiceReference<GPSFixImporter>> refs;
@@ -32,15 +32,12 @@ public class GPSFixImporterRegistration {
for (String ext : importer.getSupportedFileExtensions()) {
Dictionary<String, String> properties = getDict(importer.getType());
properties.put(GPSFixImporter.FILE_EXTENSION_PROPERTY, ext);
registrations.add(context.registerService(
GPSFixImporter.class, importer, properties));
registrations.add(context.registerService(GPSFixImporter.class, importer, properties));
registered = true;
}
if (! registered) {
registrations.add(context.registerService(
GPSFixImporter.class, importer, getDict(importer.getType())));
registrations.add(context.registerService(GPSFixImporter.class, importer, getDict(importer.getType())));
}
return registrations;
}
@@ -312,7 +312,7 @@
<setEntry value="com.sap.sailing.landscape.common@default:default"/>
<setEntry value="com.sap.sailing.landscape.ui@default:default"/>
<setEntry value="com.sap.sailing.hanaexport@5:true"/>
<setEntry value="com.sap.sailing.domain.queclinkadapter@default:default"/>
<setEntry value="com.sap.sailing.domain.queclinkadapter@5:true"/>
<setEntry value="com.tractrac.clientmodule@default:default"/>
<setEntry value="com.sap.sse.gwt@default:default"/>
<setEntry value="com.google.gwt.servlet@default:default"/>
@@ -318,7 +318,7 @@
<setEntry value="com.sap.sailing.landscape.common@default:default"/>
<setEntry value="com.sap.sailing.landscape.ui@default:default"/>
<setEntry value="com.sap.sailing.hanaexport@5:true"/>
<setEntry value="com.sap.sailing.domain.queclinkadapter@default:default"/>
<setEntry value="com.sap.sailing.domain.queclinkadapter@5:true"/>
<setEntry value="com.tractrac.clientmodule@default:default"/>
<setEntry value="com.sap.sse.gwt@default:default"/>
<setEntry value="com.google.gwt.servlet@default:default"/>
@@ -318,7 +318,7 @@
<setEntry value="com.sap.sailing.landscape.common@default:default"/>
<setEntry value="com.sap.sailing.landscape.ui@default:default"/>
<setEntry value="com.sap.sailing.hanaexport@5:true"/>
<setEntry value="com.sap.sailing.domain.queclinkadapter@default:default"/>
<setEntry value="com.sap.sailing.domain.queclinkadapter@5:true"/>
<setEntry value="com.tractrac.clientmodule@default:default"/>
<setEntry value="com.sap.sse.gwt@default:default"/>
<setEntry value="com.google.gwt.servlet@default:default"/>
@@ -310,7 +310,7 @@
<setEntry value="com.sap.sailing.landscape.common@default:default"/>
<setEntry value="com.sap.sailing.landscape.ui@default:default"/>
<setEntry value="com.sap.sailing.hanaexport@5:true"/>
<setEntry value="com.sap.sailing.domain.queclinkadapter@default:default"/>
<setEntry value="com.sap.sailing.domain.queclinkadapter@5:true"/>
<setEntry value="com.tractrac.clientmodule@default:default"/>
<setEntry value="com.sap.sse.gwt@default:default"/>
<setEntry value="com.google.gwt.servlet@default:default"/>
@@ -313,7 +313,7 @@
<setEntry value="com.sap.sailing.landscape.common@default:default"/>
<setEntry value="com.sap.sailing.landscape.ui@default:default"/>
<setEntry value="com.sap.sailing.hanaexport@5:true"/>
<setEntry value="com.sap.sailing.domain.queclinkadapter@default:default"/>
<setEntry value="com.sap.sailing.domain.queclinkadapter@5:true"/>
<setEntry value="com.tractrac.clientmodule@default:default"/>
<setEntry value="com.sap.sse.gwt@default:default"/>
<setEntry value="com.google.gwt.servlet@default:default"/>
@@ -313,7 +313,7 @@
<setEntry value="com.sap.sailing.landscape.common@default:default"/>
<setEntry value="com.sap.sailing.landscape.ui@default:default"/>
<setEntry value="com.sap.sailing.hanaexport@5:true"/>
<setEntry value="com.sap.sailing.domain.queclinkadapter@default:default"/>
<setEntry value="com.sap.sailing.domain.queclinkadapter@5:true"/>
<setEntry value="com.tractrac.clientmodule@default:default"/>
<setEntry value="com.sap.sse.gwt@default:default"/>
<setEntry value="com.google.gwt.servlet@default:default"/>
@@ -316,7 +316,7 @@
<setEntry value="com.sap.sailing.landscape.common@default:default"/>
<setEntry value="com.sap.sailing.landscape.ui@default:default"/>
<setEntry value="com.sap.sailing.hanaexport@5:true"/>
<setEntry value="com.sap.sailing.domain.queclinkadapter@default:default"/>
<setEntry value="com.sap.sailing.domain.queclinkadapter@5:true"/>
<setEntry value="com.tractrac.clientmodule@default:default"/>
<setEntry value="com.sap.sse.gwt@default:default"/>
<setEntry value="com.google.gwt.servlet@default:default"/>
@@ -313,7 +313,7 @@
<setEntry value="com.sap.sailing.landscape.common@default:default"/>
<setEntry value="com.sap.sailing.landscape.ui@default:default"/>
<setEntry value="com.sap.sailing.hanaexport@5:true"/>
<setEntry value="com.sap.sailing.domain.queclinkadapter@default:default"/>
<setEntry value="com.sap.sailing.domain.queclinkadapter@5:true"/>
<setEntry value="com.tractrac.clientmodule@default:default"/>
<setEntry value="com.sap.sse.gwt@default:default"/>
<setEntry value="com.google.gwt.servlet@default:default"/>
@@ -309,7 +309,7 @@
<setEntry value="com.sap.sailing.landscape.common@default:default"/>
<setEntry value="com.sap.sailing.landscape.ui@default:default"/>
<setEntry value="com.sap.sailing.hanaexport@5:true"/>
<setEntry value="com.sap.sailing.domain.queclinkadapter@default:default"/>
<setEntry value="com.sap.sailing.domain.queclinkadapter@5:true"/>
<setEntry value="com.tractrac.clientmodule@default:default"/>
<setEntry value="com.sap.sse.gwt@default:default"/>
<setEntry value="com.google.gwt.servlet@default:default"/>
@@ -305,7 +305,7 @@
<setEntry value="com.sap.sailing.landscape.common@default:default"/>
<setEntry value="com.sap.sailing.landscape.ui@default:default"/>
<setEntry value="com.sap.sailing.hanaexport@5:true"/>
<setEntry value="com.sap.sailing.domain.queclinkadapter@default:default"/>
<setEntry value="com.sap.sailing.domain.queclinkadapter@5:true"/>
<setEntry value="com.tractrac.clientmodule@default:default"/>
<setEntry value="com.sap.sse.gwt@default:default"/>
<setEntry value="com.google.gwt.servlet@default:default"/>
@@ -311,7 +311,7 @@
<setEntry value="com.sap.sailing.landscape.common@default:default"/>
<setEntry value="com.sap.sailing.landscape.ui@default:default"/>
<setEntry value="com.sap.sailing.hanaexport@5:true"/>
<setEntry value="com.sap.sailing.domain.queclinkadapter@default:default"/>
<setEntry value="com.sap.sailing.domain.queclinkadapter@5:true"/>
<setEntry value="com.tractrac.clientmodule@default:default"/>
<setEntry value="com.sap.sse.gwt@default:default"/>
<setEntry value="com.google.gwt.servlet@default:default"/>
@@ -309,7 +309,7 @@
<setEntry value="com.sap.sailing.landscape.common@default:default"/>
<setEntry value="com.sap.sailing.landscape.ui@default:default"/>
<setEntry value="com.sap.sailing.hanaexport@5:true"/>
<setEntry value="com.sap.sailing.domain.queclinkadapter@default:default"/>
<setEntry value="com.sap.sailing.domain.queclinkadapter@5:true"/>
<setEntry value="com.tractrac.clientmodule@default:default"/>
<setEntry value="com.sap.sse.gwt@default:default"/>
<setEntry value="com.google.gwt.servlet@default:default"/>
@@ -311,7 +311,7 @@
<setEntry value="com.sap.sailing.landscape.common@default:default"/>
<setEntry value="com.sap.sailing.landscape.ui@default:default"/>
<setEntry value="com.sap.sailing.hanaexport@5:true"/>
<setEntry value="com.sap.sailing.domain.queclinkadapter@default:default"/>
<setEntry value="com.sap.sailing.domain.queclinkadapter@5:true"/>
<setEntry value="com.tractrac.clientmodule@default:default"/>
<setEntry value="com.sap.sse.gwt@default:default"/>
<setEntry value="com.google.gwt.servlet@default:default"/>
@@ -309,7 +309,7 @@
<setEntry value="com.sap.sailing.landscape.common@default:default"/>
<setEntry value="com.sap.sailing.landscape.ui@default:default"/>
<setEntry value="com.sap.sailing.hanaexport@5:true"/>
<setEntry value="com.sap.sailing.domain.queclinkadapter@default:default"/>
<setEntry value="com.sap.sailing.domain.queclinkadapter@5:true"/>
<setEntry value="com.tractrac.clientmodule@default:default"/>
<setEntry value="com.sap.sse.gwt@default:default"/>
<setEntry value="com.google.gwt.servlet@default:default"/>
@@ -309,7 +309,7 @@
<setEntry value="com.sap.sailing.landscape.common@default:default"/>
<setEntry value="com.sap.sailing.landscape.ui@default:default"/>
<setEntry value="com.sap.sailing.hanaexport@5:true"/>
<setEntry value="com.sap.sailing.domain.queclinkadapter@default:default"/>
<setEntry value="com.sap.sailing.domain.queclinkadapter@5:true"/>
<setEntry value="com.tractrac.clientmodule@default:default"/>
<setEntry value="com.sap.sse.gwt@default:default"/>
<setEntry value="com.google.gwt.servlet@default:default"/>
@@ -305,7 +305,7 @@
<setEntry value="com.sap.sailing.landscape.common@default:default"/>
<setEntry value="com.sap.sailing.landscape.ui@default:default"/>
<setEntry value="com.sap.sailing.hanaexport@5:true"/>
<setEntry value="com.sap.sailing.domain.queclinkadapter@default:default"/>
<setEntry value="com.sap.sailing.domain.queclinkadapter@5:true"/>
<setEntry value="com.tractrac.clientmodule@default:default"/>
<setEntry value="com.sap.sse.gwt@default:default"/>
<setEntry value="com.google.gwt.servlet@default:default"/>
@@ -313,7 +313,7 @@
<setEntry value="com.sap.sailing.landscape.common@default:default"/>
<setEntry value="com.sap.sailing.landscape.ui@default:default"/>
<setEntry value="com.sap.sailing.hanaexport@5:true"/>
<setEntry value="com.sap.sailing.domain.queclinkadapter@default:default"/>
<setEntry value="com.sap.sailing.domain.queclinkadapter@5:true"/>
<setEntry value="com.tractrac.clientmodule@default:default"/>
<setEntry value="com.sap.sse.gwt@default:default"/>
<setEntry value="com.google.gwt.servlet@default:default"/>
@@ -311,7 +311,7 @@
<setEntry value="com.sap.sailing.landscape.common@default:default"/>
<setEntry value="com.sap.sailing.landscape.ui@default:default"/>
<setEntry value="com.sap.sailing.hanaexport@5:true"/>
<setEntry value="com.sap.sailing.domain.queclinkadapter@default:default"/>
<setEntry value="com.sap.sailing.domain.queclinkadapter@5:true"/>
<setEntry value="com.tractrac.clientmodule@default:default"/>
<setEntry value="com.sap.sse.gwt@default:default"/>
<setEntry value="com.google.gwt.servlet@default:default"/>
@@ -311,7 +311,7 @@
<setEntry value="com.sap.sailing.landscape.common@default:default"/>
<setEntry value="com.sap.sailing.landscape.ui@default:default"/>
<setEntry value="com.sap.sailing.hanaexport@5:true"/>
<setEntry value="com.sap.sailing.domain.queclinkadapter@default:default"/>
<setEntry value="com.sap.sailing.domain.queclinkadapter@5:true"/>
<setEntry value="com.tractrac.clientmodule@default:default"/>
<setEntry value="com.sap.sse.gwt@default:default"/>
<setEntry value="com.google.gwt.servlet@default:default"/>
@@ -316,7 +316,7 @@
<setEntry value="com.sap.sailing.landscape.common@default:default"/>
<setEntry value="com.sap.sailing.landscape.ui@default:default"/>
<setEntry value="com.sap.sailing.hanaexport@5:true"/>
<setEntry value="com.sap.sailing.domain.queclinkadapter@default:default"/>
<setEntry value="com.sap.sailing.domain.queclinkadapter@5:true"/>
<setEntry value="com.tractrac.clientmodule@default:default"/>
<setEntry value="com.sap.sse.gwt@default:default"/>
<setEntry value="com.google.gwt.servlet@default:default"/>
@@ -312,7 +312,7 @@
<setEntry value="com.sap.sailing.landscape.common@default:default"/>
<setEntry value="com.sap.sailing.landscape.ui@default:default"/>
<setEntry value="com.sap.sailing.hanaexport@5:true"/>
<setEntry value="com.sap.sailing.domain.queclinkadapter@default:default"/>
<setEntry value="com.sap.sailing.domain.queclinkadapter@5:true"/>
<setEntry value="com.tractrac.clientmodule@default:default"/>
<setEntry value="com.sap.sse.gwt@default:default"/>
<setEntry value="com.google.gwt.servlet@default:default"/>